[pgrouting] 01/07: New upstream version 2.5.0
Bas Couwenberg
sebastic at debian.org
Sat Sep 16 00:04:27 UTC 2017
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to branch master
in repository pgrouting.
commit 2d47811f253a2740667a090e33f9b25971e70fde
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Fri Sep 15 22:01:42 2017 +0200
New upstream version 2.5.0
---
.gitignore | 4 +-
.travis.yml | 6 +-
.tx/config | 438 +-
CMakeLists.txt | 303 +-
NEWS | 66 +-
README.md | 15 +-
VERSION | 2 +-
appveyor.yml | 2 +-
configuration.conf | 40 +
doc/CMakeLists.txt | 417 +-
doc/_static/custom.css | 15 +
doc/{static => _static}/favicon.ico | Bin
doc/{static => _static}/images/ccbysa.png | Bin
.../developers/disconnectEdgeDirected.graphmlz | Bin
.../images/developers/disconnectEdgeDirected.png | Bin
.../developers/disconnectEdgeUndirected.graphmlz | Bin
.../images/developers/disconnectEdgeUndirected.png | Bin
.../developers/disconnectVertexDirected.graphmlz | Bin
.../images/developers/disconnectVertexDirected.png | Bin
.../developers/disconnectVertexUndirected.graphmlz | Bin
.../developers/disconnectVertexUndirected.png | Bin
doc/{static => _static}/images/favicon.ico | Bin
doc/{static => _static}/images/pgrouting-logo.png | Bin
doc/{static => _static}/images/pgrouting.png | Bin
doc/_templates/layout.thml | 7 +
doc/{themes => _themes}/null | 0
doc/allpairs/CMakeLists.txt | 14 +
.../doc => doc/allpairs}/allpairs-family.rst | 0
doc/allpairs/pgr_floydWarshall.rst | 162 +
doc/allpairs/pgr_johnson.rst | 161 +
doc/alpha_shape/CMakeLists.txt | 13 +
doc/alpha_shape/pgr_alphaShape.rst | 101 +
doc/alpha_shape/pgr_pointsAsPolygon.rst | 81 +
doc/astar/CMakeLists.txt | 14 +
{src/astar/doc => doc/astar}/aStar-family.rst | 0
doc/astar/pgr_aStar.rst | 271 +
doc/astar/pgr_aStarCost.rst | 234 +
doc/bdAstar/CMakeLists.txt | 14 +
doc/bdAstar/bdAstar-family.rst | 108 +
doc/bdAstar/pgr_bdAstar.rst | 224 +
doc/bdAstar/pgr_bdAstarCost.rst | 214 +
doc/bdDijkstra/CMakeLists.txt | 14 +
doc/bdDijkstra/bdDijkstra-family.rst | 68 +
doc/bdDijkstra/pgr_bdDijkstra.rst | 219 +
doc/bdDijkstra/pgr_bdDijkstraCost.rst | 206 +
doc/common/CMakeLists.txt | 15 +
doc/common/cost_result.rst | 92 +
doc/common/geom_result.rst | 58 +
doc/common/pgr_version.rst | 83 +
doc/common/types_index.rst | 35 +
doc/components/CMakeLists.txt | 18 +
doc/components/components-family.rst | 488 +
doc/components/images/CMakeLists.txt | 20 +
doc/components/images/ap_sampledata.png | Bin 0 -> 57569 bytes
doc/components/images/bcc_sampledata.png | Bin 0 -> 188271 bytes
doc/components/images/biconnected_components.jpeg | Bin 0 -> 20320 bytes
doc/components/images/bridge_sampledata.png | Bin 0 -> 63525 bytes
doc/components/images/cc_sampledata.png | Bin 0 -> 191782 bytes
doc/components/images/connected_components.jpeg | Bin 0 -> 18159 bytes
doc/components/images/scc_sampledata.png | Bin 0 -> 197511 bytes
doc/components/images/strong_components.jpeg | Bin 0 -> 20898 bytes
doc/components/pgr_articulationPoints.rst | 100 +
doc/components/pgr_biconnectedComponents.rst | 103 +
doc/components/pgr_bridges.rst | 97 +
doc/components/pgr_connectedComponents.rst | 101 +
doc/components/pgr_strongComponents.rst | 100 +
doc/conf.py.in | 121 +-
doc/contraction/CMakeLists.txt | 15 +
doc/contraction/contraction-family.rst | 527 +
doc/contraction/images/CMakeLists.txt | 21 +
.../contraction}/images/threeNodestwoEdges_a.png | Bin
.../contraction}/images/threeNodestwoEdges_b.png | Bin
.../contraction}/images/threeNodestwoEdges_c.png | Bin
.../contraction}/images/twoNodesoneEdge_a.png | Bin
.../contraction}/images/twoNodesoneEdge_b.png | Bin
.../images/undirected_sampledata_a.png | Bin
.../images/undirected_sampledata_b.png | Bin
.../images/undirected_sampledata_c.png | Bin
doc/contraction/pgr_contractGraph.rst | 171 +
doc/costMatrix/CMakeLists.txt | 18 +
doc/costMatrix/cost-category.rst | 75 +
doc/costMatrix/costMatrix-category.rst | 108 +
doc/costMatrix/pgr_aStarCostMatrix.rst | 161 +
doc/costMatrix/pgr_bdAstarCostMatrix.rst | 144 +
doc/costMatrix/pgr_bdDijkstraCostMatrix.rst | 143 +
doc/costMatrix/pgr_dijkstraCostMatrix.rst | 144 +
.../costMatrix}/pgr_withPointsCostMatrix.rst | 0
doc/dijkstra/CMakeLists.txt | 15 +
doc/dijkstra/dijkstra-family.rst | 151 +
doc/dijkstra/pgr_dijkstra.rst | 333 +
doc/dijkstra/pgr_dijkstraCost.rst | 255 +
doc/dijkstra/pgr_dijkstraVia.rst | 188 +
doc/dijkstraTRSP/CMakeLists.txt | 12 +
doc/dijkstraTRSP/pgr_dijkstraTRSP.rst | 141 +
doc/driving_distance/CMakeLists.txt | 13 +
doc/driving_distance/drivingDistance-category.rst | 41 +
doc/driving_distance/pgr_drivingDistance.rst | 185 +
doc/forward.html | 8 +-
doc/i18n/de/LC_MESSAGES/doc/index.po | 359 -
doc/i18n/de/LC_MESSAGES/doc/index_man.po | 57 -
doc/i18n/de/LC_MESSAGES/doc/src/changelog/1_x.po | 153 -
doc/i18n/de/LC_MESSAGES/doc/src/changelog/2_0.po | 171 -
doc/i18n/de/LC_MESSAGES/doc/src/changelog/index.po | 33 -
.../LC_MESSAGES/doc/src/developer/discontinued.po | 55 -
doc/i18n/de/LC_MESSAGES/doc/src/developer/index.po | 245 -
.../de/LC_MESSAGES/doc/src/developer/sampledata.po | 41 -
.../de/LC_MESSAGES/doc/src/installation/build.po | 153 -
.../de/LC_MESSAGES/doc/src/installation/index.po | 202 -
.../de/LC_MESSAGES/doc/src/introduction/index.po | 33 -
.../de/LC_MESSAGES/doc/src/introduction/support.po | 212 -
.../de/LC_MESSAGES/doc/src/tutorial/analytics.po | 214 -
.../LC_MESSAGES/doc/src/tutorial/custom_query.po | 23 -
.../LC_MESSAGES/doc/src/tutorial/custom_wrapper.po | 23 -
doc/i18n/de/LC_MESSAGES/doc/src/tutorial/index.po | 98 -
.../de/LC_MESSAGES/doc/src/tutorial/performance.po | 23 -
.../de/LC_MESSAGES/doc/src/tutorial/recipes.po | 23 -
.../de/LC_MESSAGES/doc/src/tutorial/topology.po | 123 -
.../de/LC_MESSAGES/src/apsp_johnson/doc/index.po | 140 -
.../de/LC_MESSAGES/src/apsp_warshall/doc/index.po | 160 -
doc/i18n/de/LC_MESSAGES/src/astar/doc/index.po | 202 -
doc/i18n/de/LC_MESSAGES/src/bd_astar/doc/index.po | 221 -
.../de/LC_MESSAGES/src/bd_dijkstra/doc/index.po | 194 -
.../src/common/doc/functions/analyze_graph.po | 410 -
.../src/common/doc/functions/analyze_oneway.po | 335 -
.../src/common/doc/functions/create_topology.po | 413 -
.../src/common/doc/functions/create_vert_table.po | 389 -
.../LC_MESSAGES/src/common/doc/functions/index.po | 64 -
.../src/common/doc/functions/is_column_in_table.po | 88 -
.../src/common/doc/functions/is_column_indexed.po | 89 -
.../src/common/doc/functions/node_network.po | 416 -
.../src/common/doc/functions/point_to_id.po | 104 -
.../src/common/doc/functions/quote_ident.po | 89 -
.../src/common/doc/functions/version.po | 113 -
.../src/common/doc/functions/versionless.po | 85 -
doc/i18n/de/LC_MESSAGES/src/common/doc/index.po | 24 -
doc/i18n/de/LC_MESSAGES/src/common/doc/legacy.po | 67 -
doc/i18n/de/LC_MESSAGES/src/common/doc/types.po | 31 -
.../src/common/doc/types/cost_result.po | 114 -
.../src/common/doc/types/geom_result.po | 82 -
.../de/LC_MESSAGES/src/common/doc/types/index.po | 51 -
.../src/common/doc/utilities/end_point.po | 92 -
.../src/common/doc/utilities/get_column_name.po | 140 -
.../src/common/doc/utilities/get_table_name.po | 151 -
.../LC_MESSAGES/src/common/doc/utilities/index.po | 90 -
.../src/common/doc/utilities/is_column_in_table.po | 137 -
.../src/common/doc/utilities/is_column_indexed.po | 144 -
.../src/common/doc/utilities/point_to_id.po | 144 -
.../src/common/doc/utilities/quote_ident.po | 135 -
.../src/common/doc/utilities/start_point.po | 92 -
.../src/common/doc/utilities/version.po | 113 -
.../src/common/doc/utilities/versionless.po | 95 -
doc/i18n/de/LC_MESSAGES/src/dijkstra/doc/index.po | 182 -
.../src/driving_distance/doc/dd_alphashape.po | 141 -
.../driving_distance/doc/dd_driving_distance.po | 199 -
.../driving_distance/doc/dd_points_as_polygon.po | 122 -
.../LC_MESSAGES/src/driving_distance/doc/index.po | 199 -
doc/i18n/de/LC_MESSAGES/src/index.po | 81 -
doc/i18n/de/LC_MESSAGES/src/kdijkstra/doc/index.po | 230 -
doc/i18n/de/LC_MESSAGES/src/ksp/doc/index.po | 192 -
doc/i18n/de/LC_MESSAGES/src/trsp/doc/index.po | 259 -
doc/i18n/de/LC_MESSAGES/src/tsp/doc/index.po | 352 -
doc/i18n/es/LC_MESSAGES/doc/index.po | 359 -
doc/i18n/es/LC_MESSAGES/doc/index_man.po | 57 -
doc/i18n/es/LC_MESSAGES/doc/src/changelog/1_x.po | 153 -
doc/i18n/es/LC_MESSAGES/doc/src/changelog/2_0.po | 171 -
doc/i18n/es/LC_MESSAGES/doc/src/changelog/index.po | 34 -
.../LC_MESSAGES/doc/src/developer/discontinued.po | 56 -
doc/i18n/es/LC_MESSAGES/doc/src/developer/index.po | 246 -
.../es/LC_MESSAGES/doc/src/developer/sampledata.po | 59 -
.../es/LC_MESSAGES/doc/src/installation/build.po | 153 -
.../es/LC_MESSAGES/doc/src/installation/index.po | 202 -
.../es/LC_MESSAGES/doc/src/introduction/index.po | 34 -
.../doc/src/introduction/introduction.po | 188 -
.../es/LC_MESSAGES/doc/src/introduction/support.po | 220 -
.../es/LC_MESSAGES/doc/src/tutorial/analytics.po | 215 -
.../LC_MESSAGES/doc/src/tutorial/custom_query.po | 150 -
.../LC_MESSAGES/doc/src/tutorial/custom_wrapper.po | 70 -
doc/i18n/es/LC_MESSAGES/doc/src/tutorial/index.po | 99 -
.../es/LC_MESSAGES/doc/src/tutorial/performance.po | 59 -
.../es/LC_MESSAGES/doc/src/tutorial/recipes.po | 85 -
.../es/LC_MESSAGES/doc/src/tutorial/topology.po | 124 -
.../es/LC_MESSAGES/doc/src/tutorial/tutorial.po | 208 -
.../es/LC_MESSAGES/src/apsp_johnson/doc/index.po | 141 -
.../es/LC_MESSAGES/src/apsp_warshall/doc/index.po | 161 -
doc/i18n/es/LC_MESSAGES/src/astar/doc/index.po | 203 -
doc/i18n/es/LC_MESSAGES/src/bd_astar/doc/index.po | 222 -
.../es/LC_MESSAGES/src/bd_dijkstra/doc/index.po | 195 -
.../src/common/doc/functions/analyze_graph.po | 411 -
.../src/common/doc/functions/analyze_oneway.po | 336 -
.../src/common/doc/functions/create_topology.po | 414 -
.../src/common/doc/functions/create_vert_table.po | 389 -
.../LC_MESSAGES/src/common/doc/functions/index.po | 64 -
.../src/common/doc/functions/is_column_in_table.po | 89 -
.../src/common/doc/functions/is_column_indexed.po | 90 -
.../src/common/doc/functions/node_network.po | 417 -
.../src/common/doc/functions/point_to_id.po | 105 -
.../src/common/doc/functions/quote_ident.po | 90 -
.../src/common/doc/functions/version.po | 114 -
.../src/common/doc/functions/versionless.po | 86 -
doc/i18n/es/LC_MESSAGES/src/common/doc/index.po | 24 -
doc/i18n/es/LC_MESSAGES/src/common/doc/legacy.po | 67 -
doc/i18n/es/LC_MESSAGES/src/common/doc/types.po | 31 -
.../src/common/doc/types/cost_result.po | 115 -
.../src/common/doc/types/geom_result.po | 83 -
.../es/LC_MESSAGES/src/common/doc/types/index.po | 52 -
.../src/common/doc/utilities/end_point.po | 93 -
.../src/common/doc/utilities/get_column_name.po | 141 -
.../src/common/doc/utilities/get_table_name.po | 152 -
.../LC_MESSAGES/src/common/doc/utilities/index.po | 90 -
.../src/common/doc/utilities/is_column_in_table.po | 138 -
.../src/common/doc/utilities/is_column_indexed.po | 145 -
.../src/common/doc/utilities/point_to_id.po | 145 -
.../src/common/doc/utilities/quote_ident.po | 136 -
.../src/common/doc/utilities/start_point.po | 93 -
.../src/common/doc/utilities/version.po | 114 -
.../src/common/doc/utilities/versionless.po | 96 -
doc/i18n/es/LC_MESSAGES/src/dijkstra/doc/index.po | 183 -
.../src/driving_distance/doc/dd_alphashape.po | 142 -
.../driving_distance/doc/dd_driving_distance.po | 200 -
.../driving_distance/doc/dd_points_as_polygon.po | 123 -
.../LC_MESSAGES/src/driving_distance/doc/index.po | 44 -
doc/i18n/es/LC_MESSAGES/src/index.po | 81 -
doc/i18n/es/LC_MESSAGES/src/kdijkstra/doc/index.po | 231 -
doc/i18n/es/LC_MESSAGES/src/ksp/doc/index.po | 192 -
doc/i18n/es/LC_MESSAGES/src/trsp/doc/index.po | 260 -
doc/i18n/es/LC_MESSAGES/src/tsp/doc/index.po | 353 -
doc/i18n/fr/LC_MESSAGES/doc/index.po | 359 -
doc/i18n/fr/LC_MESSAGES/doc/index_man.po | 57 -
doc/i18n/fr/LC_MESSAGES/doc/src/changelog/1_x.po | 153 -
doc/i18n/fr/LC_MESSAGES/doc/src/changelog/2_0.po | 171 -
.../LC_MESSAGES/doc/src/developer/discontinued.po | 56 -
doc/i18n/fr/LC_MESSAGES/doc/src/developer/index.po | 246 -
.../fr/LC_MESSAGES/doc/src/developer/sampledata.po | 59 -
.../fr/LC_MESSAGES/doc/src/installation/build.po | 153 -
.../fr/LC_MESSAGES/doc/src/installation/index.po | 203 -
.../fr/LC_MESSAGES/doc/src/introduction/index.po | 34 -
.../doc/src/introduction/introduction.po | 187 -
.../fr/LC_MESSAGES/doc/src/introduction/support.po | 220 -
.../fr/LC_MESSAGES/doc/src/tutorial/analytics.po | 215 -
.../LC_MESSAGES/doc/src/tutorial/custom_query.po | 149 -
.../LC_MESSAGES/doc/src/tutorial/custom_wrapper.po | 24 -
doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/index.po | 99 -
.../fr/LC_MESSAGES/doc/src/tutorial/performance.po | 59 -
.../fr/LC_MESSAGES/doc/src/tutorial/recipes.po | 24 -
.../fr/LC_MESSAGES/doc/src/tutorial/topology.po | 124 -
.../fr/LC_MESSAGES/doc/src/tutorial/tutorial.po | 207 -
.../fr/LC_MESSAGES/src/apsp_johnson/doc/index.po | 141 -
.../fr/LC_MESSAGES/src/apsp_warshall/doc/index.po | 161 -
doc/i18n/fr/LC_MESSAGES/src/astar/doc/index.po | 203 -
doc/i18n/fr/LC_MESSAGES/src/bd_astar/doc/index.po | 222 -
.../fr/LC_MESSAGES/src/bd_dijkstra/doc/index.po | 195 -
.../src/common/doc/functions/analyze_graph.po | 411 -
.../src/common/doc/functions/analyze_oneway.po | 336 -
.../src/common/doc/functions/create_topology.po | 415 -
.../src/common/doc/functions/create_vert_table.po | 388 -
.../src/common/doc/functions/is_column_in_table.po | 89 -
.../src/common/doc/functions/is_column_indexed.po | 90 -
.../src/common/doc/functions/node_network.po | 417 -
.../src/common/doc/functions/point_to_id.po | 105 -
.../src/common/doc/functions/quote_ident.po | 90 -
.../src/common/doc/functions/version.po | 114 -
.../src/common/doc/functions/versionless.po | 86 -
doc/i18n/fr/LC_MESSAGES/src/common/doc/index.po | 24 -
doc/i18n/fr/LC_MESSAGES/src/common/doc/legacy.po | 67 -
doc/i18n/fr/LC_MESSAGES/src/common/doc/types.po | 31 -
.../src/common/doc/types/cost_result.po | 115 -
.../src/common/doc/types/geom_result.po | 83 -
.../fr/LC_MESSAGES/src/common/doc/types/index.po | 51 -
.../src/common/doc/utilities/end_point.po | 92 -
.../src/common/doc/utilities/get_column_name.po | 140 -
.../src/common/doc/utilities/get_table_name.po | 151 -
.../src/common/doc/utilities/is_column_in_table.po | 137 -
.../src/common/doc/utilities/is_column_indexed.po | 144 -
.../src/common/doc/utilities/point_to_id.po | 144 -
.../src/common/doc/utilities/quote_ident.po | 135 -
.../src/common/doc/utilities/start_point.po | 92 -
.../src/common/doc/utilities/version.po | 113 -
.../src/common/doc/utilities/versionless.po | 95 -
doc/i18n/fr/LC_MESSAGES/src/dijkstra/doc/index.po | 183 -
.../src/driving_distance/doc/dd_alphashape.po | 142 -
.../driving_distance/doc/dd_driving_distance.po | 199 -
.../driving_distance/doc/dd_points_as_polygon.po | 123 -
.../LC_MESSAGES/src/driving_distance/doc/index.po | 200 -
doc/i18n/fr/LC_MESSAGES/src/kdijkstra/doc/index.po | 231 -
doc/i18n/fr/LC_MESSAGES/src/ksp/doc/index.po | 192 -
doc/i18n/fr/LC_MESSAGES/src/trsp/doc/index.po | 260 -
doc/i18n/fr/LC_MESSAGES/src/tsp/doc/index.po | 353 -
doc/i18n/ja/LC_MESSAGES/doc/index.po | 360 -
doc/i18n/ja/LC_MESSAGES/doc/index_man.po | 57 -
doc/i18n/ja/LC_MESSAGES/doc/src/changelog/1_x.po | 152 -
doc/i18n/ja/LC_MESSAGES/doc/src/changelog/2_0.po | 164 -
.../LC_MESSAGES/doc/src/developer/discontinued.po | 55 -
doc/i18n/ja/LC_MESSAGES/doc/src/developer/index.po | 245 -
.../ja/LC_MESSAGES/doc/src/developer/sampledata.po | 59 -
.../ja/LC_MESSAGES/doc/src/installation/build.po | 91 -
.../ja/LC_MESSAGES/doc/src/installation/index.po | 202 -
.../ja/LC_MESSAGES/doc/src/introduction/index.po | 33 -
.../ja/LC_MESSAGES/doc/src/introduction/support.po | 212 -
.../ja/LC_MESSAGES/doc/src/tutorial/analytics.po | 215 -
.../LC_MESSAGES/doc/src/tutorial/custom_query.po | 23 -
.../LC_MESSAGES/doc/src/tutorial/custom_wrapper.po | 23 -
doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/index.po | 98 -
.../ja/LC_MESSAGES/doc/src/tutorial/performance.po | 23 -
.../ja/LC_MESSAGES/doc/src/tutorial/recipes.po | 23 -
.../ja/LC_MESSAGES/doc/src/tutorial/topology.po | 124 -
.../ja/LC_MESSAGES/src/apsp_johnson/doc/index.po | 140 -
.../ja/LC_MESSAGES/src/apsp_warshall/doc/index.po | 161 -
doc/i18n/ja/LC_MESSAGES/src/astar/doc/index.po | 203 -
doc/i18n/ja/LC_MESSAGES/src/bd_astar/doc/index.po | 222 -
.../ja/LC_MESSAGES/src/bd_dijkstra/doc/index.po | 195 -
.../src/common/doc/functions/analyze_graph.po | 411 -
.../src/common/doc/functions/analyze_oneway.po | 335 -
.../src/common/doc/functions/create_topology.po | 414 -
.../src/common/doc/functions/create_vert_table.po | 388 -
.../src/common/doc/functions/is_column_in_table.po | 89 -
.../src/common/doc/functions/is_column_indexed.po | 89 -
.../src/common/doc/functions/node_network.po | 416 -
.../src/common/doc/functions/point_to_id.po | 104 -
.../src/common/doc/functions/quote_ident.po | 89 -
.../src/common/doc/functions/version.po | 113 -
.../src/common/doc/functions/versionless.po | 86 -
doc/i18n/ja/LC_MESSAGES/src/common/doc/index.po | 23 -
doc/i18n/ja/LC_MESSAGES/src/common/doc/legacy.po | 66 -
doc/i18n/ja/LC_MESSAGES/src/common/doc/types.po | 30 -
.../src/common/doc/types/cost_result.po | 115 -
.../src/common/doc/types/geom_result.po | 83 -
.../src/common/doc/utilities/end_point.po | 92 -
.../src/common/doc/utilities/get_column_name.po | 140 -
.../src/common/doc/utilities/get_table_name.po | 151 -
.../src/common/doc/utilities/is_column_in_table.po | 137 -
.../src/common/doc/utilities/is_column_indexed.po | 144 -
.../src/common/doc/utilities/point_to_id.po | 144 -
.../src/common/doc/utilities/quote_ident.po | 135 -
.../src/common/doc/utilities/start_point.po | 92 -
.../src/common/doc/utilities/version.po | 113 -
.../src/common/doc/utilities/versionless.po | 95 -
doc/i18n/ja/LC_MESSAGES/src/dijkstra/doc/index.po | 183 -
.../src/driving_distance/doc/dd_alphashape.po | 141 -
.../driving_distance/doc/dd_driving_distance.po | 199 -
.../driving_distance/doc/dd_points_as_polygon.po | 122 -
.../LC_MESSAGES/src/driving_distance/doc/index.po | 201 -
doc/i18n/ja/LC_MESSAGES/src/kdijkstra/doc/index.po | 231 -
doc/i18n/ja/LC_MESSAGES/src/ksp/doc/index.po | 192 -
doc/i18n/ja/LC_MESSAGES/src/trsp/doc/index.po | 259 -
doc/i18n/ja/LC_MESSAGES/src/tsp/doc/index.po | 354 -
doc/i18n/pot/doc/index.pot | 318 -
doc/i18n/pot/doc/index_man.pot | 53 -
doc/i18n/pot/doc/src/changelog/1_x.pot | 151 -
doc/i18n/pot/doc/src/changelog/2_0.pot | 148 -
doc/i18n/pot/doc/src/changelog/index.pot | 33 -
doc/i18n/pot/doc/src/developer/discontinued.pot | 48 -
doc/i18n/pot/doc/src/developer/index.pot | 183 -
doc/i18n/pot/doc/src/developer/sampledata.pot | 53 -
doc/i18n/pot/doc/src/installation/build.pot | 128 -
doc/i18n/pot/doc/src/installation/index.pot | 193 -
doc/i18n/pot/doc/src/introduction/index.pot | 33 -
doc/i18n/pot/doc/src/introduction/introduction.pot | 153 -
doc/i18n/pot/doc/src/introduction/support.pot | 183 -
doc/i18n/pot/doc/src/tutorial/analytics.pot | 173 -
doc/i18n/pot/doc/src/tutorial/custom_query.pot | 134 -
doc/i18n/pot/doc/src/tutorial/custom_wrapper.pot | 63 -
doc/i18n/pot/doc/src/tutorial/index.pot | 98 -
doc/i18n/pot/doc/src/tutorial/performance.pot | 53 -
doc/i18n/pot/doc/src/tutorial/recipes.pot | 78 -
doc/i18n/pot/doc/src/tutorial/topology.pot | 88 -
doc/i18n/pot/doc/src/tutorial/tutorial.pot | 174 -
doc/i18n/pot/src/apsp_johnson/doc/index.pot | 133 -
doc/i18n/pot/src/apsp_warshall/doc/index.pot | 148 -
doc/i18n/pot/src/astar/doc/index.pot | 188 -
doc/i18n/pot/src/bd_astar/doc/index.pot | 203 -
doc/i18n/pot/src/bd_dijkstra/doc/index.pot | 178 -
.../pot/src/common/doc/functions/analyze_graph.pot | 360 -
.../src/common/doc/functions/analyze_oneway.pot | 273 -
.../src/common/doc/functions/create_topology.pot | 367 -
.../src/common/doc/functions/create_vert_table.pot | 342 -
doc/i18n/pot/src/common/doc/functions/index.pot | 53 -
.../common/doc/functions/is_column_in_table.pot | 88 -
.../src/common/doc/functions/is_column_indexed.pot | 88 -
.../pot/src/common/doc/functions/node_network.pot | 358 -
.../pot/src/common/doc/functions/point_to_id.pot | 98 -
.../pot/src/common/doc/functions/quote_ident.pot | 83 -
doc/i18n/pot/src/common/doc/functions/version.pot | 113 -
.../pot/src/common/doc/functions/versionless.pot | 83 -
doc/i18n/pot/src/common/doc/index.pot | 23 -
doc/i18n/pot/src/common/doc/legacy.pot | 48 -
doc/i18n/pot/src/common/doc/types.pot | 28 -
doc/i18n/pot/src/common/doc/types/cost_result.pot | 110 -
doc/i18n/pot/src/common/doc/types/geom_result.pot | 80 -
doc/i18n/pot/src/common/doc/types/index.pot | 43 -
.../pot/src/common/doc/utilities/end_point.pot | 90 -
.../src/common/doc/utilities/get_column_name.pot | 133 -
.../src/common/doc/utilities/get_table_name.pot | 142 -
doc/i18n/pot/src/common/doc/utilities/index.pot | 78 -
.../common/doc/utilities/is_column_in_table.pot | 133 -
.../src/common/doc/utilities/is_column_indexed.pot | 138 -
.../pot/src/common/doc/utilities/point_to_id.pot | 123 -
.../pot/src/common/doc/utilities/quote_ident.pot | 123 -
.../pot/src/common/doc/utilities/start_point.pot | 90 -
doc/i18n/pot/src/common/doc/utilities/version.pot | 113 -
.../pot/src/common/doc/utilities/versionless.pot | 93 -
doc/i18n/pot/src/dijkstra/doc/index.pot | 168 -
.../pot/src/driving_distance/doc/dd_alphashape.pot | 128 -
.../driving_distance/doc/dd_driving_distance.pot | 178 -
.../driving_distance/doc/dd_points_as_polygon.pot | 113 -
doc/i18n/pot/src/driving_distance/doc/index.pot | 43 -
doc/i18n/pot/src/index.pot | 73 -
doc/i18n/pot/src/kdijkstra/doc/index.pot | 200 -
doc/i18n/pot/src/ksp/doc/index.pot | 178 -
doc/i18n/pot/src/trsp/doc/index.pot | 228 -
doc/i18n/pot/src/tsp/doc/index.pot | 285 -
doc/images/CMakeLists.txt | 19 +
doc/{src => }/images/Fig1-originalData.png | Bin
doc/{src => }/images/Fig2-cost.png | Bin
doc/{src => }/images/Fig4-costUndirected.png | Bin
doc/{src => }/images/Fig6-undirected.png | Bin
doc/{src => }/images/boost-inside.jpeg | Bin
doc/{src => }/images/parallelImage.png | Bin
doc/{src => }/images/test1.png | Bin
doc/{src => }/images/trsp-test-image.png | Bin
doc/index.rst | 143 -
doc/ksp/CMakeLists.txt | 13 +
doc/ksp/KSP-category.rst | 28 +
doc/ksp/pgr_KSP.rst | 181 +
doc/label_graph/CMakeLists.txt | 12 +
doc/label_graph/pgr_labelGraph.rst | 92 +
doc/lineGraph/CMakeLists.txt | 13 +
doc/lineGraph/images/CMakeLists.txt | 10 +
doc/lineGraph/images/lineGraph.png | Bin 0 -> 238407 bytes
doc/lineGraph/pgr_lineGraph.rst | 162 +
doc/max_flow/CMakeLists.txt | 18 +
doc/max_flow/flow-family.rst | 142 +
doc/max_flow/pgr_boykovKolmogorov.rst | 168 +
doc/max_flow/pgr_edgeDisjointPaths.rst | 220 +
doc/max_flow/pgr_edmondsKarp.rst | 170 +
doc/max_flow/pgr_maxCardinalityMatch.rst | 166 +
doc/max_flow/pgr_maxFlow.rst | 185 +
doc/max_flow/pgr_pushRelabel.rst | 168 +
doc/pickDeliver/CMakeLists.txt | 14 +
doc/pickDeliver/VRP-category.rst | 510 +
doc/pickDeliver/pgr_pickDeliver.rst | 223 +
doc/pickDeliver/pgr_pickDeliverEuclidean.rst | 204 +
doc/queries/CMakeLists.txt | 59 +
.../doc => doc/queries}/doc-aStarCost.queries | 0
doc/queries/doc-astar.queries | 104 +
.../doc => doc/queries}/doc-contractGraph.queries | 0
doc/queries/doc-contraction.queries | 339 +
doc/queries/doc-dijkstraTRSP.queries | 25 +
.../doc => doc/queries}/doc-floydWarshall.queries | 0
doc/queries/doc-gsoc_vrppdtw.queries | 79 +
.../doc => doc/queries}/doc-johnson.queries | 0
doc/queries/doc-ksp.queries | 274 +
{src/tsp/doc => doc/queries}/doc-pgr_TSP.queries | 0
.../doc => doc/queries}/doc-pgr_alphashape.queries | 0
.../queries}/doc-pgr_analyzeGraph.queries | 0
doc/queries/doc-pgr_articulationPoints.queries | 30 +
doc/queries/doc-pgr_bdAstar.queries | 112 +
doc/queries/doc-pgr_bdAstarCost.queries | 71 +
doc/queries/doc-pgr_bdDijkstra.queries | 119 +
doc/queries/doc-pgr_bdDijkstraCost.queries | 60 +
doc/queries/doc-pgr_biconnectedComponents.queries | 58 +
doc/queries/doc-pgr_boykovKolmogorov.queries | 90 +
doc/queries/doc-pgr_bridges.queries | 34 +
doc/queries/doc-pgr_connectedComponents.queries | 56 +
doc/queries/doc-pgr_createTopology.queries | 262 +
doc/queries/doc-pgr_dijkstra.queries | 590 +
.../queries}/doc-pgr_dijkstraCost.queries | 0
.../queries}/doc-pgr_dijkstraVia.queries | 0
doc/queries/doc-pgr_drivingDistance.queries | 312 +
doc/queries/doc-pgr_edgeDisjointPaths.queries | 128 +
doc/queries/doc-pgr_edmondsKarp.queries | 90 +
.../queries}/doc-pgr_eucledianTSP.queries | 0
doc/queries/doc-pgr_fooDmatrix.queries | 324 +
doc/queries/doc-pgr_labelGraph.queries | 24 +
doc/queries/doc-pgr_lineGraph.queries | 210 +
doc/queries/doc-pgr_maxCardinalityMatch.queries | 40 +
doc/queries/doc-pgr_maxFlow.queries | 67 +
.../queries}/doc-pgr_pointsAsPolygon.queries | 0
doc/queries/doc-pgr_pushRelabel.queries | 96 +
doc/queries/doc-pgr_strongComponents.queries | 56 +
doc/queries/doc-pgr_version.queries | 14 +
doc/queries/doc-pgr_vrpOneDepot.queries | 256 +
.../doc => doc/queries}/doc-pgr_withPoints.queries | 0
.../queries}/doc-pgr_withPointsCost.queries | 0
.../queries}/doc-pgr_withPointsDD.queries | 0
.../queries}/doc-pgr_withPointsKSP.queries | 0
doc/queries/doc-pgr_withPointsVia.queries | 40 +
doc/queries/doc-pickDeliver.queries | 61 +
doc/queries/doc-pickDeliverEuclidean.queries | 27 +
{src/trsp/doc => doc/queries}/doc-trsp.queries | 0
doc/queries/issue704.queries | 82 +
doc/queries/oneDepotWrapper.queries | 256 +
doc/queries/proof_of_concept.queries | 137 +
doc/queries/trsp_notes_v2.5.0.queries | 1112 ++
doc/src/CMakeLists.txt | 20 +
doc/src/index.rst | 138 +
doc/src/pgRouting-concepts.rst | 105 +-
doc/src/pgRouting-installation.rst | 2 +-
doc/src/pgRouting-introduction.rst | 30 +-
doc/src/proposed.rst | 75 +-
doc/src/release_notes.rst | 65 +
doc/src/routingFunctions.rst | 10 +-
doc/src/sampledata.rst | 38 +-
doc/test/example_recipe.result | 5 -
doc/test/example_recipe.test.sql | 30 -
doc/test/parallel_handling.result | 24 -
doc/test/parallel_handling.test.sql | 125 -
doc/test/test.conf | 20 -
doc/test/utilities-any.result | 1 -
doc/test/utilities-any.test.sql | 6 -
doc/topology/CMakeLists.txt | 20 +
doc/topology/images/CMakeLists.txt | 15 +
.../topology}/images/Fig3-reverseCost.png | Bin
.../images/Fig5-reverseCostUndirected.png | Bin
.../doc => doc/topology}/images/after_node_net.png | Bin
.../topology}/images/before_node_net.png | Bin
doc/topology/pgr_analyzeGraph.rst | 404 +
doc/topology/pgr_analyzeOneWay.rst | 143 +
doc/topology/pgr_createTopology.rst | 257 +
doc/topology/pgr_createVerticesTable.rst | 296 +
doc/topology/pgr_nodeNetwork.rst | 399 +
doc/topology/topology-functions.rst | 40 +
doc/trsp/CMakeLists.txt | 12 +
doc/trsp/README.md | 1112 ++
doc/trsp/pgr_trsp.rst | 209 +
doc/tsp/CMakeLists.txt | 14 +
doc/tsp/TSP-family.rst | 259 +
doc/tsp/pgr_TSP.rst | 172 +
doc/tsp/pgr_eucledianTSP.rst | 154 +
doc/vrp_basic/CMakeLists.txt | 12 +
doc/vrp_basic/pgr_vrpOneDepot.rst | 48 +
doc/vrppdtw/CMakeLists.txt | 12 +
doc/vrppdtw/pgr_gsoc_vrppdtw.rst | 138 +
doc/withPoints/CMakeLists.txt | 20 +
doc/withPoints/images/CMakeLists.txt | 14 +
.../withPoints}/images/leftDrivingSide.png | Bin
.../withPoints}/images/noMatterDrivingSide.png | Bin
.../withPoints}/images/rightDrivingSide.png | Bin
doc/withPoints/pgr_withPoints.rst | 298 +
doc/withPoints/pgr_withPointsCost.rst | 295 +
doc/withPoints/pgr_withPointsDD.rst | 219 +
doc/withPoints/pgr_withPointsKSP.rst | 194 +
doc/withPoints/pgr_withPointsVia.rst | 200 +
doc/withPoints/withPoints-family.rst | 195 +
doxygen/CMakeLists.txt | 4 +-
doxygen/Doxyfile.in | 26 +-
include/allpairs/pgr_allpairs.hpp | 316 +
include/astar/pgr_astar.hpp | 359 +
include/bdAstar/pgr_bdAstar.hpp | 194 +
include/bdDijkstra/pgr_bdDijkstra.hpp | 149 +
include/c_common/README.md | 19 +
include/c_common/arrays_input.h | 52 +
include/c_common/coordinates_input.h | 40 +
include/c_common/debug_macro.h | 40 +
include/c_common/e_report.h | 138 +
include/c_common/edges_input.h | 159 +
include/c_common/get_check_data.h | 70 +
include/c_common/matrixRows_input.h | 41 +
include/c_common/orders_input.h | 55 +
include/c_common/points_input.h | 50 +
include/c_common/postgres_connection.h | 99 +
include/c_common/restrict_input.h | 38 +
include/c_common/restrictions_input.h | 36 +
include/c_common/time_msg.h | 35 +
include/c_common/vehicles_input.h | 55 +
include/c_types/column_info_t.h | 80 +
include/c_types/contracted_rt.h | 71 +
include/c_types/coordinate_t.h | 63 +
include/c_types/general_path_element_t.h | 68 +
include/c_types/graph_enum.h | 33 +
include/c_types/line_graph_rt.h | 71 +
include/c_types/matrix_cell_t.h | 64 +
include/c_types/pgr_basic_edge_t.h | 67 +
include/c_types/pgr_components_rt.h | 64 +
include/c_types/pgr_edge_t.h | 66 +
include/c_types/pgr_edge_xy_t.h | 69 +
include/c_types/pgr_flow_t.h | 66 +
.../c_types/pickDeliver/general_vehicle_orders_t.h | 87 +
include/c_types/pickDeliver/pickDeliveryOrders_t.h | 85 +
include/c_types/pickDeliver/vehicle_t.h | 85 +
include/c_types/point_on_edge_t.h | 64 +
include/c_types/restrict_t.h | 69 +
include/c_types/routes_t.h | 71 +
include/components/pgr_components.hpp | 249 +
include/components/pgr_componentsGraph.hpp | 117 +
include/contraction/pgr_contract.hpp | 183 +
include/contraction/pgr_contractionGraph.hpp | 302 +
include/contraction/pgr_deadEndContraction.hpp | 408 +
include/contraction/pgr_linearContraction.hpp | 282 +
include/cpp_common/Dmatrix.h | 134 +
include/cpp_common/basePath_SSEC.hpp | 279 +
include/cpp_common/basic_edge.h | 49 +
include/cpp_common/basic_vertex.h | 84 +
include/cpp_common/identifier.h | 59 +
include/cpp_common/identifiers.hpp | 254 +
include/cpp_common/line_vertex.h | 99 +
include/cpp_common/path_t.h | 44 +
include/cpp_common/pgr_alloc.hpp | 85 +
include/cpp_common/pgr_assert.h | 136 +
include/cpp_common/pgr_base_graph.hpp | 953 +
include/cpp_common/pgr_bidirectional.hpp | 242 +
include/cpp_common/pgr_messages.h | 126 +
include/cpp_common/xy_vertex.h | 104 +
include/dijkstra/pgr_dijkstra.hpp | 855 +
include/dijkstraTRSP/pgr_dijkstraTRSP.hpp | 208 +
include/dijkstraTRSP/restriction.h | 65 +
include/drivers/allpairs/floydWarshall_driver.h | 57 +
include/drivers/allpairs/johnson_driver.h | 56 +
include/drivers/astar/astar_driver.h | 74 +
include/drivers/bdAstar/bdAstar_driver.h | 77 +
include/drivers/bdDijkstra/bdDijkstra_driver.h | 65 +
.../drivers/components/articulationPoints_driver.h | 63 +
.../components/biconnectedComponents_driver.h | 63 +
include/drivers/components/bridges_driver.h | 63 +
.../components/connectedComponents_driver.h | 63 +
.../drivers/components/strongComponents_driver.h | 63 +
include/drivers/contraction/contractGraph_driver.h | 68 +
include/drivers/dijkstra/dijkstraVia_driver.h | 62 +
include/drivers/dijkstra/dijkstra_driver.h | 69 +
include/drivers/dijkstraTRSP/dijkstraTRSP_driver.h | 74 +
.../drivers/driving_distance/drivedist_driver.h | 51 +
.../driving_distance/withPoints_dd_driver.h | 66 +
include/drivers/lineGraph/lineGraph_driver.h | 63 +
.../pickDeliver/pickDeliverEuclidean_driver.h | 69 +
include/drivers/pickDeliver/pickDeliver_driver.h | 71 +
include/drivers/tsp/eucledianTSP_driver.h | 67 +
include/drivers/tsp/newTSP_driver.h | 67 +
include/drivers/withPoints/get_new_queries.h | 50 +
include/drivers/withPoints/withPoints_driver.h | 80 +
include/drivers/yen/ksp_driver.h | 55 +
include/drivers/yen/withPoints_ksp_driver.h | 71 +
include/lineGraph/pgr_lineGraph.hpp | 592 +
include/tsp/eucledianDmatrix.h | 124 +
include/tsp/pgr_tsp.cpp | 572 +
include/tsp/pgr_tsp.hpp | 674 +
include/tsp/tour.h | 160 +
include/vrp/base_node.h | 78 +
include/vrp/book_keeping.h | 134 +
include/vrp/dnode.h | 66 +
include/vrp/fleet.h | 141 +
include/vrp/initial_solution.h | 71 +
include/vrp/node.h | 77 +
include/vrp/optimize.h | 88 +
include/vrp/order.h | 188 +
include/vrp/pd_orders.h | 125 +
include/vrp/pd_problem.h | 57 +
include/vrp/pgr_pickDeliver.h | 122 +
include/vrp/solution.h | 119 +
include/vrp/tw_node.h | 284 +
include/vrp/vehicle.h | 356 +
include/vrp/vehicle_node.h | 190 +
include/vrp/vehicle_pickDeliver.h | 183 +
include/yen/pgr_ksp.hpp | 263 +
locale/.gitignore | 1 +
locale/README.md | 133 +
locale/de/LC_MESSAGES/KSP-category.po | 36 +
locale/de/LC_MESSAGES/TSP-family.po | 556 +
locale/de/LC_MESSAGES/aStar-family.po | 205 +
locale/de/LC_MESSAGES/allpairs-family.po | 996 ++
locale/de/LC_MESSAGES/bdAstar-family.po | 394 +
locale/de/LC_MESSAGES/bdDijkstra-family.po | 112 +
locale/de/LC_MESSAGES/components-family.po | 750 +
locale/de/LC_MESSAGES/contraction-family.po | 745 +
locale/de/LC_MESSAGES/cost-category.po | 178 +
locale/de/LC_MESSAGES/costMatrix-category.po | 237 +
locale/de/LC_MESSAGES/cost_result.po | 92 +
locale/de/LC_MESSAGES/dijkstra-family.po | 262 +
locale/de/LC_MESSAGES/drivingDistance-category.po | 52 +
locale/de/LC_MESSAGES/flow-family.po | 331 +
locale/de/LC_MESSAGES/geom_result.po | 74 +
locale/de/LC_MESSAGES/index.po | 306 +
locale/de/LC_MESSAGES/pgRouting-concepts.po | 1071 ++
locale/de/LC_MESSAGES/pgRouting-installation.po | 418 +
locale/de/LC_MESSAGES/pgRouting-introduction.po | 222 +
locale/de/LC_MESSAGES/pgr_KSP.po | 402 +
locale/de/LC_MESSAGES/pgr_TSP.po | 224 +
locale/de/LC_MESSAGES/pgr_aStar.po | 642 +
locale/de/LC_MESSAGES/pgr_aStarCost.po | 528 +
locale/de/LC_MESSAGES/pgr_aStarCostMatrix.po | 457 +
locale/de/LC_MESSAGES/pgr_alphaShape.po | 169 +
locale/de/LC_MESSAGES/pgr_analyzeGraph.po | 361 +
locale/de/LC_MESSAGES/pgr_analyzeOneWay.po | 290 +
locale/de/LC_MESSAGES/pgr_articulationPoints.po | 316 +
locale/de/LC_MESSAGES/pgr_bdAstar.po | 669 +
locale/de/LC_MESSAGES/pgr_bdAstarCost.po | 594 +
locale/de/LC_MESSAGES/pgr_bdAstarCostMatrix.po | 536 +
locale/de/LC_MESSAGES/pgr_bdDijkstra.po | 541 +
locale/de/LC_MESSAGES/pgr_bdDijkstraCost.po | 470 +
locale/de/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po | 382 +
locale/de/LC_MESSAGES/pgr_biconnectedComponents.po | 349 +
locale/de/LC_MESSAGES/pgr_boykovKolmogorov.po | 435 +
locale/de/LC_MESSAGES/pgr_bridges.po | 310 +
locale/de/LC_MESSAGES/pgr_connectedComponents.po | 346 +
locale/de/LC_MESSAGES/pgr_contractGraph.po | 488 +
locale/de/LC_MESSAGES/pgr_createTopology.po | 395 +
locale/de/LC_MESSAGES/pgr_createVerticesTable.po | 341 +
locale/de/LC_MESSAGES/pgr_dijkstra.po | 621 +
locale/de/LC_MESSAGES/pgr_dijkstraCost.po | 473 +
locale/de/LC_MESSAGES/pgr_dijkstraCostMatrix.po | 358 +
locale/de/LC_MESSAGES/pgr_dijkstraVia.po | 480 +
locale/de/LC_MESSAGES/pgr_drivingDistance.po | 391 +
locale/de/LC_MESSAGES/pgr_edgeDisjointPaths.po | 541 +
locale/de/LC_MESSAGES/pgr_edmondsKarp.po | 438 +
locale/de/LC_MESSAGES/pgr_eucledianTSP.po | 187 +
locale/de/LC_MESSAGES/pgr_floydWarshall.po | 348 +
locale/de/LC_MESSAGES/pgr_gsoc_vrppdtw.po | 358 +
locale/de/LC_MESSAGES/pgr_johnson.po | 341 +
locale/de/LC_MESSAGES/pgr_labelGraph.po | 233 +
locale/de/LC_MESSAGES/pgr_lineGraph.po | 387 +
locale/de/LC_MESSAGES/pgr_maxCardinalityMatch.po | 357 +
locale/de/LC_MESSAGES/pgr_maxFlow.po | 354 +
locale/de/LC_MESSAGES/pgr_nodeNetwork.po | 353 +
locale/de/LC_MESSAGES/pgr_pointsAsPolygon.po | 124 +
locale/de/LC_MESSAGES/pgr_pushRelabel.po | 439 +
locale/de/LC_MESSAGES/pgr_strongComponents.po | 346 +
locale/de/LC_MESSAGES/pgr_trsp.po | 281 +
locale/de/LC_MESSAGES/pgr_version.po | 130 +
locale/de/LC_MESSAGES/pgr_vrpOneDepot.po | 112 +
locale/de/LC_MESSAGES/pgr_withPoints.po | 665 +
locale/de/LC_MESSAGES/pgr_withPointsCost.po | 603 +
locale/de/LC_MESSAGES/pgr_withPointsCostMatrix.po | 472 +
locale/de/LC_MESSAGES/pgr_withPointsDD.po | 552 +
locale/de/LC_MESSAGES/pgr_withPointsKSP.po | 571 +
locale/de/LC_MESSAGES/proposed.po | 410 +
locale/de/LC_MESSAGES/release_notes.po | 1278 ++
locale/de/LC_MESSAGES/routingFunctions.po | 134 +
locale/de/LC_MESSAGES/sampledata.po | 152 +
locale/de/LC_MESSAGES/support.po | 177 +
locale/de/LC_MESSAGES/topology-functions.po | 66 +
locale/de/LC_MESSAGES/types_index.po | 56 +
locale/de/LC_MESSAGES/withPoints-family.po | 395 +
locale/en/LC_MESSAGES/KSP-category.po | 36 +
locale/en/LC_MESSAGES/TSP-family.po | 556 +
locale/en/LC_MESSAGES/aStar-family.po | 205 +
locale/en/LC_MESSAGES/allpairs-family.po | 996 ++
locale/en/LC_MESSAGES/bdAstar-family.po | 394 +
locale/en/LC_MESSAGES/bdDijkstra-family.po | 112 +
locale/en/LC_MESSAGES/components-family.po | 750 +
locale/en/LC_MESSAGES/contraction-family.po | 745 +
locale/en/LC_MESSAGES/cost-category.po | 178 +
locale/en/LC_MESSAGES/costMatrix-category.po | 237 +
locale/en/LC_MESSAGES/cost_result.po | 92 +
locale/en/LC_MESSAGES/dijkstra-family.po | 262 +
locale/en/LC_MESSAGES/drivingDistance-category.po | 52 +
locale/en/LC_MESSAGES/flow-family.po | 331 +
locale/en/LC_MESSAGES/geom_result.po | 74 +
locale/en/LC_MESSAGES/index.po | 306 +
locale/en/LC_MESSAGES/pgRouting-concepts.po | 1071 ++
locale/en/LC_MESSAGES/pgRouting-installation.po | 418 +
locale/en/LC_MESSAGES/pgRouting-introduction.po | 222 +
locale/en/LC_MESSAGES/pgr_KSP.po | 402 +
locale/en/LC_MESSAGES/pgr_TSP.po | 224 +
locale/en/LC_MESSAGES/pgr_aStar.po | 642 +
locale/en/LC_MESSAGES/pgr_aStarCost.po | 528 +
locale/en/LC_MESSAGES/pgr_aStarCostMatrix.po | 457 +
locale/en/LC_MESSAGES/pgr_alphaShape.po | 169 +
locale/en/LC_MESSAGES/pgr_analyzeGraph.po | 361 +
locale/en/LC_MESSAGES/pgr_analyzeOneWay.po | 290 +
locale/en/LC_MESSAGES/pgr_articulationPoints.po | 316 +
locale/en/LC_MESSAGES/pgr_bdAstar.po | 669 +
locale/en/LC_MESSAGES/pgr_bdAstarCost.po | 594 +
locale/en/LC_MESSAGES/pgr_bdAstarCostMatrix.po | 536 +
locale/en/LC_MESSAGES/pgr_bdDijkstra.po | 541 +
locale/en/LC_MESSAGES/pgr_bdDijkstraCost.po | 470 +
locale/en/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po | 382 +
locale/en/LC_MESSAGES/pgr_biconnectedComponents.po | 349 +
locale/en/LC_MESSAGES/pgr_boykovKolmogorov.po | 435 +
locale/en/LC_MESSAGES/pgr_bridges.po | 310 +
locale/en/LC_MESSAGES/pgr_connectedComponents.po | 346 +
locale/en/LC_MESSAGES/pgr_contractGraph.po | 488 +
locale/en/LC_MESSAGES/pgr_createTopology.po | 395 +
locale/en/LC_MESSAGES/pgr_createVerticesTable.po | 341 +
locale/en/LC_MESSAGES/pgr_dijkstra.po | 621 +
locale/en/LC_MESSAGES/pgr_dijkstraCost.po | 473 +
locale/en/LC_MESSAGES/pgr_dijkstraCostMatrix.po | 358 +
locale/en/LC_MESSAGES/pgr_dijkstraVia.po | 480 +
locale/en/LC_MESSAGES/pgr_drivingDistance.po | 391 +
locale/en/LC_MESSAGES/pgr_edgeDisjointPaths.po | 541 +
locale/en/LC_MESSAGES/pgr_edmondsKarp.po | 438 +
locale/en/LC_MESSAGES/pgr_eucledianTSP.po | 187 +
locale/en/LC_MESSAGES/pgr_floydWarshall.po | 348 +
locale/en/LC_MESSAGES/pgr_gsoc_vrppdtw.po | 358 +
locale/en/LC_MESSAGES/pgr_johnson.po | 341 +
locale/en/LC_MESSAGES/pgr_labelGraph.po | 233 +
locale/en/LC_MESSAGES/pgr_lineGraph.po | 387 +
locale/en/LC_MESSAGES/pgr_maxCardinalityMatch.po | 357 +
locale/en/LC_MESSAGES/pgr_maxFlow.po | 354 +
locale/en/LC_MESSAGES/pgr_nodeNetwork.po | 353 +
locale/en/LC_MESSAGES/pgr_pointsAsPolygon.po | 124 +
locale/en/LC_MESSAGES/pgr_pushRelabel.po | 439 +
locale/en/LC_MESSAGES/pgr_strongComponents.po | 346 +
locale/en/LC_MESSAGES/pgr_trsp.po | 281 +
locale/en/LC_MESSAGES/pgr_version.po | 130 +
locale/en/LC_MESSAGES/pgr_vrpOneDepot.po | 112 +
locale/en/LC_MESSAGES/pgr_withPoints.po | 665 +
locale/en/LC_MESSAGES/pgr_withPointsCost.po | 603 +
locale/en/LC_MESSAGES/pgr_withPointsCostMatrix.po | 472 +
locale/en/LC_MESSAGES/pgr_withPointsDD.po | 552 +
locale/en/LC_MESSAGES/pgr_withPointsKSP.po | 571 +
locale/en/LC_MESSAGES/proposed.po | 410 +
locale/en/LC_MESSAGES/release_notes.po | 1278 ++
locale/en/LC_MESSAGES/routingFunctions.po | 134 +
locale/en/LC_MESSAGES/sampledata.po | 152 +
locale/en/LC_MESSAGES/support.po | 177 +
locale/en/LC_MESSAGES/topology-functions.po | 66 +
locale/en/LC_MESSAGES/types_index.po | 56 +
locale/en/LC_MESSAGES/withPoints-family.po | 395 +
locale/es/LC_MESSAGES/KSP-category.po | 36 +
locale/es/LC_MESSAGES/TSP-family.po | 556 +
locale/es/LC_MESSAGES/aStar-family.po | 205 +
locale/es/LC_MESSAGES/allpairs-family.po | 996 ++
locale/es/LC_MESSAGES/bdAstar-family.po | 394 +
locale/es/LC_MESSAGES/bdDijkstra-family.po | 112 +
locale/es/LC_MESSAGES/components-family.po | 750 +
locale/es/LC_MESSAGES/contraction-family.po | 745 +
locale/es/LC_MESSAGES/cost-category.po | 178 +
locale/es/LC_MESSAGES/costMatrix-category.po | 237 +
locale/es/LC_MESSAGES/cost_result.po | 92 +
locale/es/LC_MESSAGES/dijkstra-family.po | 262 +
locale/es/LC_MESSAGES/drivingDistance-category.po | 52 +
locale/es/LC_MESSAGES/flow-family.po | 331 +
locale/es/LC_MESSAGES/geom_result.po | 74 +
locale/es/LC_MESSAGES/index.po | 306 +
locale/es/LC_MESSAGES/pgRouting-concepts.po | 1071 ++
locale/es/LC_MESSAGES/pgRouting-installation.po | 418 +
locale/es/LC_MESSAGES/pgRouting-introduction.po | 222 +
locale/es/LC_MESSAGES/pgr_KSP.po | 402 +
locale/es/LC_MESSAGES/pgr_TSP.po | 224 +
locale/es/LC_MESSAGES/pgr_aStar.po | 642 +
locale/es/LC_MESSAGES/pgr_aStarCost.po | 528 +
locale/es/LC_MESSAGES/pgr_aStarCostMatrix.po | 457 +
locale/es/LC_MESSAGES/pgr_alphaShape.po | 169 +
locale/es/LC_MESSAGES/pgr_analyzeGraph.po | 361 +
locale/es/LC_MESSAGES/pgr_analyzeOneWay.po | 290 +
locale/es/LC_MESSAGES/pgr_articulationPoints.po | 316 +
locale/es/LC_MESSAGES/pgr_bdAstar.po | 669 +
locale/es/LC_MESSAGES/pgr_bdAstarCost.po | 594 +
locale/es/LC_MESSAGES/pgr_bdAstarCostMatrix.po | 536 +
locale/es/LC_MESSAGES/pgr_bdDijkstra.po | 541 +
locale/es/LC_MESSAGES/pgr_bdDijkstraCost.po | 470 +
locale/es/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po | 382 +
locale/es/LC_MESSAGES/pgr_biconnectedComponents.po | 349 +
locale/es/LC_MESSAGES/pgr_boykovKolmogorov.po | 435 +
locale/es/LC_MESSAGES/pgr_bridges.po | 310 +
locale/es/LC_MESSAGES/pgr_connectedComponents.po | 346 +
locale/es/LC_MESSAGES/pgr_contractGraph.po | 488 +
locale/es/LC_MESSAGES/pgr_createTopology.po | 395 +
locale/es/LC_MESSAGES/pgr_createVerticesTable.po | 341 +
locale/es/LC_MESSAGES/pgr_dijkstra.po | 621 +
locale/es/LC_MESSAGES/pgr_dijkstraCost.po | 473 +
locale/es/LC_MESSAGES/pgr_dijkstraCostMatrix.po | 358 +
locale/es/LC_MESSAGES/pgr_dijkstraVia.po | 480 +
locale/es/LC_MESSAGES/pgr_drivingDistance.po | 391 +
locale/es/LC_MESSAGES/pgr_edgeDisjointPaths.po | 541 +
locale/es/LC_MESSAGES/pgr_edmondsKarp.po | 438 +
locale/es/LC_MESSAGES/pgr_eucledianTSP.po | 187 +
locale/es/LC_MESSAGES/pgr_floydWarshall.po | 348 +
locale/es/LC_MESSAGES/pgr_gsoc_vrppdtw.po | 358 +
locale/es/LC_MESSAGES/pgr_johnson.po | 341 +
locale/es/LC_MESSAGES/pgr_labelGraph.po | 233 +
locale/es/LC_MESSAGES/pgr_lineGraph.po | 387 +
locale/es/LC_MESSAGES/pgr_maxCardinalityMatch.po | 357 +
locale/es/LC_MESSAGES/pgr_maxFlow.po | 354 +
locale/es/LC_MESSAGES/pgr_nodeNetwork.po | 353 +
locale/es/LC_MESSAGES/pgr_pointsAsPolygon.po | 124 +
locale/es/LC_MESSAGES/pgr_pushRelabel.po | 439 +
locale/es/LC_MESSAGES/pgr_strongComponents.po | 346 +
locale/es/LC_MESSAGES/pgr_trsp.po | 281 +
locale/es/LC_MESSAGES/pgr_version.po | 130 +
locale/es/LC_MESSAGES/pgr_vrpOneDepot.po | 112 +
locale/es/LC_MESSAGES/pgr_withPoints.po | 665 +
locale/es/LC_MESSAGES/pgr_withPointsCost.po | 603 +
locale/es/LC_MESSAGES/pgr_withPointsCostMatrix.po | 472 +
locale/es/LC_MESSAGES/pgr_withPointsDD.po | 552 +
locale/es/LC_MESSAGES/pgr_withPointsKSP.po | 571 +
locale/es/LC_MESSAGES/proposed.po | 410 +
locale/es/LC_MESSAGES/release_notes.po | 1278 ++
locale/es/LC_MESSAGES/routingFunctions.po | 134 +
locale/es/LC_MESSAGES/sampledata.po | 152 +
locale/es/LC_MESSAGES/support.po | 177 +
locale/es/LC_MESSAGES/topology-functions.po | 66 +
locale/es/LC_MESSAGES/types_index.po | 56 +
locale/es/LC_MESSAGES/withPoints-family.po | 395 +
locale/fr/LC_MESSAGES/KSP-category.po | 36 +
locale/fr/LC_MESSAGES/TSP-family.po | 556 +
locale/fr/LC_MESSAGES/aStar-family.po | 205 +
locale/fr/LC_MESSAGES/allpairs-family.po | 996 ++
locale/fr/LC_MESSAGES/bdAstar-family.po | 394 +
locale/fr/LC_MESSAGES/bdDijkstra-family.po | 112 +
locale/fr/LC_MESSAGES/components-family.po | 750 +
locale/fr/LC_MESSAGES/contraction-family.po | 745 +
locale/fr/LC_MESSAGES/cost-category.po | 178 +
locale/fr/LC_MESSAGES/costMatrix-category.po | 237 +
locale/fr/LC_MESSAGES/cost_result.po | 92 +
locale/fr/LC_MESSAGES/dijkstra-family.po | 262 +
locale/fr/LC_MESSAGES/drivingDistance-category.po | 52 +
locale/fr/LC_MESSAGES/flow-family.po | 331 +
locale/fr/LC_MESSAGES/geom_result.po | 74 +
locale/fr/LC_MESSAGES/index.po | 306 +
locale/fr/LC_MESSAGES/pgRouting-concepts.po | 1071 ++
locale/fr/LC_MESSAGES/pgRouting-installation.po | 418 +
locale/fr/LC_MESSAGES/pgRouting-introduction.po | 222 +
locale/fr/LC_MESSAGES/pgr_KSP.po | 402 +
locale/fr/LC_MESSAGES/pgr_TSP.po | 224 +
locale/fr/LC_MESSAGES/pgr_aStar.po | 642 +
locale/fr/LC_MESSAGES/pgr_aStarCost.po | 528 +
locale/fr/LC_MESSAGES/pgr_aStarCostMatrix.po | 457 +
locale/fr/LC_MESSAGES/pgr_alphaShape.po | 169 +
locale/fr/LC_MESSAGES/pgr_analyzeGraph.po | 361 +
locale/fr/LC_MESSAGES/pgr_analyzeOneWay.po | 290 +
locale/fr/LC_MESSAGES/pgr_articulationPoints.po | 316 +
locale/fr/LC_MESSAGES/pgr_bdAstar.po | 669 +
locale/fr/LC_MESSAGES/pgr_bdAstarCost.po | 594 +
locale/fr/LC_MESSAGES/pgr_bdAstarCostMatrix.po | 536 +
locale/fr/LC_MESSAGES/pgr_bdDijkstra.po | 541 +
locale/fr/LC_MESSAGES/pgr_bdDijkstraCost.po | 470 +
locale/fr/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po | 382 +
locale/fr/LC_MESSAGES/pgr_biconnectedComponents.po | 349 +
locale/fr/LC_MESSAGES/pgr_boykovKolmogorov.po | 435 +
locale/fr/LC_MESSAGES/pgr_bridges.po | 310 +
locale/fr/LC_MESSAGES/pgr_connectedComponents.po | 346 +
locale/fr/LC_MESSAGES/pgr_contractGraph.po | 488 +
locale/fr/LC_MESSAGES/pgr_createTopology.po | 395 +
locale/fr/LC_MESSAGES/pgr_createVerticesTable.po | 341 +
locale/fr/LC_MESSAGES/pgr_dijkstra.po | 621 +
locale/fr/LC_MESSAGES/pgr_dijkstraCost.po | 473 +
locale/fr/LC_MESSAGES/pgr_dijkstraCostMatrix.po | 358 +
locale/fr/LC_MESSAGES/pgr_dijkstraVia.po | 480 +
locale/fr/LC_MESSAGES/pgr_drivingDistance.po | 391 +
locale/fr/LC_MESSAGES/pgr_edgeDisjointPaths.po | 541 +
locale/fr/LC_MESSAGES/pgr_edmondsKarp.po | 438 +
locale/fr/LC_MESSAGES/pgr_eucledianTSP.po | 187 +
locale/fr/LC_MESSAGES/pgr_floydWarshall.po | 348 +
locale/fr/LC_MESSAGES/pgr_gsoc_vrppdtw.po | 358 +
locale/fr/LC_MESSAGES/pgr_johnson.po | 341 +
locale/fr/LC_MESSAGES/pgr_labelGraph.po | 233 +
locale/fr/LC_MESSAGES/pgr_lineGraph.po | 387 +
locale/fr/LC_MESSAGES/pgr_maxCardinalityMatch.po | 357 +
locale/fr/LC_MESSAGES/pgr_maxFlow.po | 354 +
locale/fr/LC_MESSAGES/pgr_nodeNetwork.po | 353 +
locale/fr/LC_MESSAGES/pgr_pointsAsPolygon.po | 124 +
locale/fr/LC_MESSAGES/pgr_pushRelabel.po | 439 +
locale/fr/LC_MESSAGES/pgr_strongComponents.po | 346 +
locale/fr/LC_MESSAGES/pgr_trsp.po | 281 +
locale/fr/LC_MESSAGES/pgr_version.po | 130 +
locale/fr/LC_MESSAGES/pgr_vrpOneDepot.po | 112 +
locale/fr/LC_MESSAGES/pgr_withPoints.po | 665 +
locale/fr/LC_MESSAGES/pgr_withPointsCost.po | 603 +
locale/fr/LC_MESSAGES/pgr_withPointsCostMatrix.po | 472 +
locale/fr/LC_MESSAGES/pgr_withPointsDD.po | 552 +
locale/fr/LC_MESSAGES/pgr_withPointsKSP.po | 571 +
locale/fr/LC_MESSAGES/proposed.po | 410 +
locale/fr/LC_MESSAGES/release_notes.po | 1278 ++
locale/fr/LC_MESSAGES/routingFunctions.po | 134 +
locale/fr/LC_MESSAGES/sampledata.po | 152 +
locale/fr/LC_MESSAGES/support.po | 177 +
locale/fr/LC_MESSAGES/topology-functions.po | 66 +
locale/fr/LC_MESSAGES/types_index.po | 56 +
locale/fr/LC_MESSAGES/withPoints-family.po | 395 +
locale/it/LC_MESSAGES/KSP-category.po | 36 +
locale/it/LC_MESSAGES/TSP-family.po | 556 +
locale/it/LC_MESSAGES/aStar-family.po | 205 +
locale/it/LC_MESSAGES/allpairs-family.po | 996 ++
locale/it/LC_MESSAGES/bdAstar-family.po | 394 +
locale/it/LC_MESSAGES/bdDijkstra-family.po | 112 +
locale/it/LC_MESSAGES/components-family.po | 750 +
locale/it/LC_MESSAGES/contraction-family.po | 745 +
locale/it/LC_MESSAGES/cost-category.po | 178 +
locale/it/LC_MESSAGES/costMatrix-category.po | 237 +
locale/it/LC_MESSAGES/cost_result.po | 92 +
locale/it/LC_MESSAGES/dijkstra-family.po | 262 +
locale/it/LC_MESSAGES/drivingDistance-category.po | 52 +
locale/it/LC_MESSAGES/flow-family.po | 331 +
locale/it/LC_MESSAGES/geom_result.po | 74 +
locale/it/LC_MESSAGES/index.po | 306 +
locale/it/LC_MESSAGES/pgRouting-concepts.po | 1071 ++
locale/it/LC_MESSAGES/pgRouting-installation.po | 418 +
locale/it/LC_MESSAGES/pgRouting-introduction.po | 222 +
locale/it/LC_MESSAGES/pgr_KSP.po | 402 +
locale/it/LC_MESSAGES/pgr_TSP.po | 224 +
locale/it/LC_MESSAGES/pgr_aStar.po | 642 +
locale/it/LC_MESSAGES/pgr_aStarCost.po | 528 +
locale/it/LC_MESSAGES/pgr_aStarCostMatrix.po | 457 +
locale/it/LC_MESSAGES/pgr_alphaShape.po | 169 +
locale/it/LC_MESSAGES/pgr_analyzeGraph.po | 361 +
locale/it/LC_MESSAGES/pgr_analyzeOneWay.po | 290 +
locale/it/LC_MESSAGES/pgr_articulationPoints.po | 316 +
locale/it/LC_MESSAGES/pgr_bdAstar.po | 669 +
locale/it/LC_MESSAGES/pgr_bdAstarCost.po | 594 +
locale/it/LC_MESSAGES/pgr_bdAstarCostMatrix.po | 536 +
locale/it/LC_MESSAGES/pgr_bdDijkstra.po | 541 +
locale/it/LC_MESSAGES/pgr_bdDijkstraCost.po | 470 +
locale/it/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po | 382 +
locale/it/LC_MESSAGES/pgr_biconnectedComponents.po | 349 +
locale/it/LC_MESSAGES/pgr_boykovKolmogorov.po | 435 +
locale/it/LC_MESSAGES/pgr_bridges.po | 310 +
locale/it/LC_MESSAGES/pgr_connectedComponents.po | 346 +
locale/it/LC_MESSAGES/pgr_contractGraph.po | 488 +
locale/it/LC_MESSAGES/pgr_createTopology.po | 395 +
locale/it/LC_MESSAGES/pgr_createVerticesTable.po | 341 +
locale/it/LC_MESSAGES/pgr_dijkstra.po | 621 +
locale/it/LC_MESSAGES/pgr_dijkstraCost.po | 473 +
locale/it/LC_MESSAGES/pgr_dijkstraCostMatrix.po | 358 +
locale/it/LC_MESSAGES/pgr_dijkstraVia.po | 480 +
locale/it/LC_MESSAGES/pgr_drivingDistance.po | 391 +
locale/it/LC_MESSAGES/pgr_edgeDisjointPaths.po | 541 +
locale/it/LC_MESSAGES/pgr_edmondsKarp.po | 438 +
locale/it/LC_MESSAGES/pgr_eucledianTSP.po | 187 +
locale/it/LC_MESSAGES/pgr_floydWarshall.po | 348 +
locale/it/LC_MESSAGES/pgr_gsoc_vrppdtw.po | 358 +
locale/it/LC_MESSAGES/pgr_johnson.po | 341 +
locale/it/LC_MESSAGES/pgr_labelGraph.po | 233 +
locale/it/LC_MESSAGES/pgr_lineGraph.po | 387 +
locale/it/LC_MESSAGES/pgr_maxCardinalityMatch.po | 357 +
locale/it/LC_MESSAGES/pgr_maxFlow.po | 354 +
locale/it/LC_MESSAGES/pgr_nodeNetwork.po | 353 +
locale/it/LC_MESSAGES/pgr_pointsAsPolygon.po | 124 +
locale/it/LC_MESSAGES/pgr_pushRelabel.po | 439 +
locale/it/LC_MESSAGES/pgr_strongComponents.po | 346 +
locale/it/LC_MESSAGES/pgr_trsp.po | 281 +
locale/it/LC_MESSAGES/pgr_version.po | 130 +
locale/it/LC_MESSAGES/pgr_vrpOneDepot.po | 112 +
locale/it/LC_MESSAGES/pgr_withPoints.po | 665 +
locale/it/LC_MESSAGES/pgr_withPointsCost.po | 603 +
locale/it/LC_MESSAGES/pgr_withPointsCostMatrix.po | 472 +
locale/it/LC_MESSAGES/pgr_withPointsDD.po | 552 +
locale/it/LC_MESSAGES/pgr_withPointsKSP.po | 571 +
locale/it/LC_MESSAGES/proposed.po | 410 +
locale/it/LC_MESSAGES/release_notes.po | 1278 ++
locale/it/LC_MESSAGES/routingFunctions.po | 134 +
locale/it/LC_MESSAGES/sampledata.po | 152 +
locale/it/LC_MESSAGES/support.po | 177 +
locale/it/LC_MESSAGES/topology-functions.po | 66 +
locale/it/LC_MESSAGES/types_index.po | 56 +
locale/it/LC_MESSAGES/withPoints-family.po | 395 +
locale/ja/LC_MESSAGES/KSP-category.po | 36 +
locale/ja/LC_MESSAGES/TSP-family.po | 556 +
locale/ja/LC_MESSAGES/aStar-family.po | 205 +
locale/ja/LC_MESSAGES/allpairs-family.po | 996 ++
locale/ja/LC_MESSAGES/bdAstar-family.po | 394 +
locale/ja/LC_MESSAGES/bdDijkstra-family.po | 112 +
locale/ja/LC_MESSAGES/components-family.po | 750 +
locale/ja/LC_MESSAGES/contraction-family.po | 745 +
locale/ja/LC_MESSAGES/cost-category.po | 178 +
locale/ja/LC_MESSAGES/costMatrix-category.po | 237 +
locale/ja/LC_MESSAGES/cost_result.po | 92 +
locale/ja/LC_MESSAGES/dijkstra-family.po | 262 +
locale/ja/LC_MESSAGES/drivingDistance-category.po | 52 +
locale/ja/LC_MESSAGES/flow-family.po | 331 +
locale/ja/LC_MESSAGES/geom_result.po | 74 +
locale/ja/LC_MESSAGES/index.po | 306 +
locale/ja/LC_MESSAGES/pgRouting-concepts.po | 1071 ++
locale/ja/LC_MESSAGES/pgRouting-installation.po | 418 +
locale/ja/LC_MESSAGES/pgRouting-introduction.po | 222 +
locale/ja/LC_MESSAGES/pgr_KSP.po | 402 +
locale/ja/LC_MESSAGES/pgr_TSP.po | 224 +
locale/ja/LC_MESSAGES/pgr_aStar.po | 642 +
locale/ja/LC_MESSAGES/pgr_aStarCost.po | 528 +
locale/ja/LC_MESSAGES/pgr_aStarCostMatrix.po | 457 +
locale/ja/LC_MESSAGES/pgr_alphaShape.po | 169 +
locale/ja/LC_MESSAGES/pgr_analyzeGraph.po | 361 +
locale/ja/LC_MESSAGES/pgr_analyzeOneWay.po | 290 +
locale/ja/LC_MESSAGES/pgr_articulationPoints.po | 316 +
locale/ja/LC_MESSAGES/pgr_bdAstar.po | 669 +
locale/ja/LC_MESSAGES/pgr_bdAstarCost.po | 594 +
locale/ja/LC_MESSAGES/pgr_bdAstarCostMatrix.po | 536 +
locale/ja/LC_MESSAGES/pgr_bdDijkstra.po | 541 +
locale/ja/LC_MESSAGES/pgr_bdDijkstraCost.po | 470 +
locale/ja/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po | 382 +
locale/ja/LC_MESSAGES/pgr_biconnectedComponents.po | 349 +
locale/ja/LC_MESSAGES/pgr_boykovKolmogorov.po | 435 +
locale/ja/LC_MESSAGES/pgr_bridges.po | 310 +
locale/ja/LC_MESSAGES/pgr_connectedComponents.po | 346 +
locale/ja/LC_MESSAGES/pgr_contractGraph.po | 488 +
locale/ja/LC_MESSAGES/pgr_createTopology.po | 395 +
locale/ja/LC_MESSAGES/pgr_createVerticesTable.po | 341 +
locale/ja/LC_MESSAGES/pgr_dijkstra.po | 621 +
locale/ja/LC_MESSAGES/pgr_dijkstraCost.po | 473 +
locale/ja/LC_MESSAGES/pgr_dijkstraCostMatrix.po | 358 +
locale/ja/LC_MESSAGES/pgr_dijkstraVia.po | 480 +
locale/ja/LC_MESSAGES/pgr_drivingDistance.po | 391 +
locale/ja/LC_MESSAGES/pgr_edgeDisjointPaths.po | 541 +
locale/ja/LC_MESSAGES/pgr_edmondsKarp.po | 438 +
locale/ja/LC_MESSAGES/pgr_eucledianTSP.po | 187 +
locale/ja/LC_MESSAGES/pgr_floydWarshall.po | 348 +
locale/ja/LC_MESSAGES/pgr_gsoc_vrppdtw.po | 358 +
locale/ja/LC_MESSAGES/pgr_johnson.po | 341 +
locale/ja/LC_MESSAGES/pgr_labelGraph.po | 233 +
locale/ja/LC_MESSAGES/pgr_lineGraph.po | 387 +
locale/ja/LC_MESSAGES/pgr_maxCardinalityMatch.po | 357 +
locale/ja/LC_MESSAGES/pgr_maxFlow.po | 354 +
locale/ja/LC_MESSAGES/pgr_nodeNetwork.po | 353 +
locale/ja/LC_MESSAGES/pgr_pointsAsPolygon.po | 124 +
locale/ja/LC_MESSAGES/pgr_pushRelabel.po | 439 +
locale/ja/LC_MESSAGES/pgr_strongComponents.po | 346 +
locale/ja/LC_MESSAGES/pgr_trsp.po | 281 +
locale/ja/LC_MESSAGES/pgr_version.po | 130 +
locale/ja/LC_MESSAGES/pgr_vrpOneDepot.po | 112 +
locale/ja/LC_MESSAGES/pgr_withPoints.po | 665 +
locale/ja/LC_MESSAGES/pgr_withPointsCost.po | 603 +
locale/ja/LC_MESSAGES/pgr_withPointsCostMatrix.po | 472 +
locale/ja/LC_MESSAGES/pgr_withPointsDD.po | 552 +
locale/ja/LC_MESSAGES/pgr_withPointsKSP.po | 571 +
locale/ja/LC_MESSAGES/proposed.po | 410 +
locale/ja/LC_MESSAGES/release_notes.po | 1278 ++
locale/ja/LC_MESSAGES/routingFunctions.po | 134 +
locale/ja/LC_MESSAGES/sampledata.po | 152 +
locale/ja/LC_MESSAGES/support.po | 177 +
locale/ja/LC_MESSAGES/topology-functions.po | 66 +
locale/ja/LC_MESSAGES/types_index.po | 56 +
locale/ja/LC_MESSAGES/withPoints-family.po | 395 +
locale/pot/.gitignore | 1 +
locale/pot/KSP-category.pot | 42 +
locale/pot/TSP-family.pot | 500 +
locale/pot/aStar-family.pot | 200 +
locale/pot/allpairs-family.pot | 993 ++
locale/pot/bdAstar-family.pot | 379 +
locale/pot/bdDijkstra-family.pot | 102 +
locale/pot/components-family.pot | 696 +
locale/pot/contraction-family.pot | 614 +
locale/pot/cost-category.pot | 174 +
locale/pot/costMatrix-category.pot | 226 +
locale/pot/cost_result.pot | 100 +
locale/pot/dijkstra-family.pot | 224 +
locale/pot/drivingDistance-category.pot | 58 +
locale/pot/flow-family.pot | 286 +
locale/pot/geom_result.pot | 79 +
locale/pot/index.pot | 286 +
locale/pot/pgRouting-concepts.pot | 916 +
locale/pot/pgRouting-installation.pot | 398 +
locale/pot/pgRouting-introduction.pot | 189 +
locale/pot/pgr_KSP.pot | 389 +
locale/pot/pgr_TSP.pot | 215 +
locale/pot/pgr_aStar.pot | 608 +
locale/pot/pgr_aStarCost.pot | 497 +
locale/pot/pgr_aStarCostMatrix.pot | 449 +
locale/pot/pgr_alphaShape.pot | 158 +
locale/pot/pgr_analyzeGraph.pot | 308 +
locale/pot/pgr_analyzeOneWay.pot | 234 +
locale/pot/pgr_articulationPoints.pot | 311 +
locale/pot/pgr_bdAstar.pot | 646 +
locale/pot/pgr_bdAstarCost.pot | 574 +
locale/pot/pgr_bdAstarCostMatrix.pot | 526 +
locale/pot/pgr_bdDijkstra.pot | 504 +
locale/pot/pgr_bdDijkstraCost.pot | 442 +
locale/pot/pgr_bdDijkstraCostMatrix.pot | 375 +
locale/pot/pgr_biconnectedComponents.pot | 338 +
locale/pot/pgr_boykovKolmogorov.pot | 422 +
locale/pot/pgr_bridges.pot | 308 +
locale/pot/pgr_connectedComponents.pot | 337 +
locale/pot/pgr_contractGraph.pot | 472 +
locale/pot/pgr_createTopology.pot | 338 +
locale/pot/pgr_createVerticesTable.pot | 293 +
locale/pot/pgr_dijkstra.pot | 565 +
locale/pot/pgr_dijkstraCost.pot | 448 +
locale/pot/pgr_dijkstraCostMatrix.pot | 351 +
locale/pot/pgr_dijkstraVia.pot | 451 +
locale/pot/pgr_drivingDistance.pot | 376 +
locale/pot/pgr_edgeDisjointPaths.pot | 508 +
locale/pot/pgr_edmondsKarp.pot | 426 +
locale/pot/pgr_eucledianTSP.pot | 179 +
locale/pot/pgr_floydWarshall.pot | 330 +
locale/pot/pgr_gsoc_vrppdtw.pot | 355 +
locale/pot/pgr_johnson.pot | 326 +
locale/pot/pgr_labelGraph.pot | 202 +
locale/pot/pgr_lineGraph.pot | 381 +
locale/pot/pgr_maxCardinalityMatch.pot | 351 +
locale/pot/pgr_maxFlow.pot | 353 +
locale/pot/pgr_nodeNetwork.pot | 306 +
locale/pot/pgr_pointsAsPolygon.pot | 118 +
locale/pot/pgr_pushRelabel.pot | 426 +
locale/pot/pgr_strongComponents.pot | 337 +
locale/pot/pgr_trsp.pot | 262 +
locale/pot/pgr_version.pot | 139 +
locale/pot/pgr_vrpOneDepot.pot | 118 +
locale/pot/pgr_withPoints.pot | 630 +
locale/pot/pgr_withPointsCost.pot | 576 +
locale/pot/pgr_withPointsCostMatrix.pot | 455 +
locale/pot/pgr_withPointsDD.pot | 527 +
locale/pot/pgr_withPointsKSP.pot | 544 +
locale/pot/proposed.pot | 382 +
locale/pot/release_notes.pot | 1206 ++
locale/pot/routingFunctions.pot | 134 +
locale/pot/sampledata.pot | 142 +
locale/pot/support.pot | 147 +
locale/pot/topology-functions.pot | 62 +
locale/pot/types_index.pot | 54 +
locale/pot/withPoints-family.pot | 376 +
locale/ru/LC_MESSAGES/KSP-category.po | 36 +
locale/ru/LC_MESSAGES/TSP-family.po | 556 +
locale/ru/LC_MESSAGES/aStar-family.po | 205 +
locale/ru/LC_MESSAGES/allpairs-family.po | 996 ++
locale/ru/LC_MESSAGES/bdAstar-family.po | 394 +
locale/ru/LC_MESSAGES/bdDijkstra-family.po | 112 +
locale/ru/LC_MESSAGES/components-family.po | 750 +
locale/ru/LC_MESSAGES/contraction-family.po | 745 +
locale/ru/LC_MESSAGES/cost-category.po | 178 +
locale/ru/LC_MESSAGES/costMatrix-category.po | 237 +
locale/ru/LC_MESSAGES/cost_result.po | 92 +
locale/ru/LC_MESSAGES/dijkstra-family.po | 262 +
locale/ru/LC_MESSAGES/drivingDistance-category.po | 52 +
locale/ru/LC_MESSAGES/flow-family.po | 331 +
locale/ru/LC_MESSAGES/geom_result.po | 74 +
locale/ru/LC_MESSAGES/index.po | 306 +
locale/ru/LC_MESSAGES/pgRouting-concepts.po | 1071 ++
locale/ru/LC_MESSAGES/pgRouting-installation.po | 418 +
locale/ru/LC_MESSAGES/pgRouting-introduction.po | 222 +
locale/ru/LC_MESSAGES/pgr_KSP.po | 402 +
locale/ru/LC_MESSAGES/pgr_TSP.po | 224 +
locale/ru/LC_MESSAGES/pgr_aStar.po | 642 +
locale/ru/LC_MESSAGES/pgr_aStarCost.po | 528 +
locale/ru/LC_MESSAGES/pgr_aStarCostMatrix.po | 457 +
locale/ru/LC_MESSAGES/pgr_alphaShape.po | 169 +
locale/ru/LC_MESSAGES/pgr_analyzeGraph.po | 361 +
locale/ru/LC_MESSAGES/pgr_analyzeOneWay.po | 290 +
locale/ru/LC_MESSAGES/pgr_articulationPoints.po | 316 +
locale/ru/LC_MESSAGES/pgr_bdAstar.po | 669 +
locale/ru/LC_MESSAGES/pgr_bdAstarCost.po | 594 +
locale/ru/LC_MESSAGES/pgr_bdAstarCostMatrix.po | 536 +
locale/ru/LC_MESSAGES/pgr_bdDijkstra.po | 541 +
locale/ru/LC_MESSAGES/pgr_bdDijkstraCost.po | 470 +
locale/ru/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po | 382 +
locale/ru/LC_MESSAGES/pgr_biconnectedComponents.po | 349 +
locale/ru/LC_MESSAGES/pgr_boykovKolmogorov.po | 435 +
locale/ru/LC_MESSAGES/pgr_bridges.po | 310 +
locale/ru/LC_MESSAGES/pgr_connectedComponents.po | 346 +
locale/ru/LC_MESSAGES/pgr_contractGraph.po | 488 +
locale/ru/LC_MESSAGES/pgr_createTopology.po | 395 +
locale/ru/LC_MESSAGES/pgr_createVerticesTable.po | 341 +
locale/ru/LC_MESSAGES/pgr_dijkstra.po | 621 +
locale/ru/LC_MESSAGES/pgr_dijkstraCost.po | 473 +
locale/ru/LC_MESSAGES/pgr_dijkstraCostMatrix.po | 358 +
locale/ru/LC_MESSAGES/pgr_dijkstraVia.po | 480 +
locale/ru/LC_MESSAGES/pgr_drivingDistance.po | 391 +
locale/ru/LC_MESSAGES/pgr_edgeDisjointPaths.po | 541 +
locale/ru/LC_MESSAGES/pgr_edmondsKarp.po | 438 +
locale/ru/LC_MESSAGES/pgr_eucledianTSP.po | 187 +
locale/ru/LC_MESSAGES/pgr_floydWarshall.po | 348 +
locale/ru/LC_MESSAGES/pgr_gsoc_vrppdtw.po | 358 +
locale/ru/LC_MESSAGES/pgr_johnson.po | 341 +
locale/ru/LC_MESSAGES/pgr_labelGraph.po | 233 +
locale/ru/LC_MESSAGES/pgr_lineGraph.po | 387 +
locale/ru/LC_MESSAGES/pgr_maxCardinalityMatch.po | 357 +
locale/ru/LC_MESSAGES/pgr_maxFlow.po | 354 +
locale/ru/LC_MESSAGES/pgr_nodeNetwork.po | 353 +
locale/ru/LC_MESSAGES/pgr_pointsAsPolygon.po | 124 +
locale/ru/LC_MESSAGES/pgr_pushRelabel.po | 439 +
locale/ru/LC_MESSAGES/pgr_strongComponents.po | 346 +
locale/ru/LC_MESSAGES/pgr_trsp.po | 281 +
locale/ru/LC_MESSAGES/pgr_version.po | 130 +
locale/ru/LC_MESSAGES/pgr_vrpOneDepot.po | 112 +
locale/ru/LC_MESSAGES/pgr_withPoints.po | 665 +
locale/ru/LC_MESSAGES/pgr_withPointsCost.po | 603 +
locale/ru/LC_MESSAGES/pgr_withPointsCostMatrix.po | 472 +
locale/ru/LC_MESSAGES/pgr_withPointsDD.po | 552 +
locale/ru/LC_MESSAGES/pgr_withPointsKSP.po | 571 +
locale/ru/LC_MESSAGES/proposed.po | 410 +
locale/ru/LC_MESSAGES/release_notes.po | 1278 ++
locale/ru/LC_MESSAGES/routingFunctions.po | 134 +
locale/ru/LC_MESSAGES/sampledata.po | 152 +
locale/ru/LC_MESSAGES/support.po | 177 +
locale/ru/LC_MESSAGES/topology-functions.po | 66 +
locale/ru/LC_MESSAGES/types_index.po | 56 +
locale/ru/LC_MESSAGES/withPoints-family.po | 395 +
.../allpairs}/compare-directed.test.sql | 0
.../allpairs}/compare-undirected.test.sql | 0
pgtap/allpairs/floydWarshall-innerQuery.sql | 18 +
pgtap/allpairs/fw-types-check.sql | 52 +
pgtap/allpairs/j-types-check.sql | 52 +
pgtap/allpairs/johnson-innerQuery.sql | 20 +
.../test/pgtap => pgtap/alpha_shape}/issue-544.sql | 0
pgtap/astar/aStar-group-innerQuery.sql | 41 +
pgtap/astar/aStarCost-group-innerQuery.sql | 39 +
.../astar_ManyToMany-compare-dijkstra.test.sql | 94 +
.../astar_ManyToOne-compare-dijkstra.test.sql | 0
.../astar_oneToMany-compare-dijkstra.test.sql | 0
.../astar/astar_oneToOne-compare-dijkstra.test.sql | 99 +
.../astar_oneToOne-compare-dijkstra1.test.sql | 0
.../astar}/astar_oneToOne-types-check.sql | 0
pgtap/bdAstar/bdAstar-compare-dijkstra.sql | 79 +
pgtap/bdAstar/bdAstar-innerQuery.sql | 26 +
pgtap/bdAstar/bdAstar-parameter-types-check.sql | 72 +
pgtap/bdAstar/bdAstar-return-types-check.sql | 54 +
pgtap/bdAstar/bdAstarCost-innerQuery.sql | 26 +
pgtap/bdAstar/bdAstarCostMatrix-innerQuery.sql | 15 +
.../bdDijkstra}/bdDijkstra-compare-dijkstra.sql | 0
pgtap/bdDijkstra/bdDijkstra-innerQuery.sql | 37 +
.../bdDijkstra}/bdDijkstra-types-check.sql | 0
pgtap/bdDijkstra/bdDijkstraCost-innerQuery.sql | 37 +
.../pgtap => pgtap/common}/checkVertTab.test.sql | 0
.../pgtap => pgtap/common}/getColumnName.test.sql | 0
.../pgtap => pgtap/common}/getColumnType.test.sql | 0
.../pgtap => pgtap/common}/getTableName.test.sql | 0
pgtap/common/has_v3_signatures.sql | 141 +
pgtap/common/hasnt_v2_signatures.sql | 53 +
.../common}/isColumnInTable.test.sql | 0
.../common}/isColumnIndexed.test.sql | 0
.../contraction}/contraction-types-check.sql | 0
.../contraction}/contraction_cycle_directed.sql | 0
.../contraction}/contraction_cycle_undirected.sql | 0
.../contraction}/directed_dead_end.sql | 0
.../contraction}/directed_linear.sql | 0
.../contraction}/undirected_dead_end.sql | 0
.../contraction}/undirected_linear.sql | 0
pgtap/costMatrix/aStarCostMatrix-innerQuery.sql | 19 +
pgtap/costMatrix/dijkstraCostMatrix-innerQuery.sql | 18 +
.../costMatrix/withPointsCostMatrix-innerQuery.sql | 19 +
.../deprecated/apspJohnson-any-00.test.sql | 0
pgtap/deprecated/apspJohnson-innerQuery.sql | 21 +
.../deprecated/apspJohnson-types-check.sql | 0
.../apspJohnson-v2-v3-equivalence.test.sql | 0
.../deprecated/apspWarshall-any-00.test.sql | 0
pgtap/deprecated/apspWarshall-innerQuery.sql | 18 +
.../deprecated/apspWarshall-types-check.sql | 0
...pspWarshall-v2-v3-equivalence-directed.test.sql | 0
...pWarshall-v2-v3-equivalence-undirected.test.sql | 0
.../astarV2.0-compare-dijkstra.test.sql | 0
pgtap/deprecated/astarV2.0-innerQuery.sql | 22 +
.../deprecated}/astarV2.0-types-check.sql | 0
.../deprecated}/astarV2.0-types-check2.sql | 0
pgtap/deprecated/bd_astar-innerQuery.sql | 17 +
pgtap/deprecated/bd_astar-types-check.sql | 162 +
pgtap/deprecated/bd_dijkstra-innerQuery.sql | 22 +
.../deprecated/bd_dijkstra-types-check.sql | 0
.../deprecated/bd_dijkstra-v2-compare-dijkstra.sql | 0
.../convenience-flipEdges-types-check.sql | 0
.../convenience-pointToEdgeNode-types-check.sql | 0
.../convenience-pointsToDMatrix-types-check.sql | 0
.../convenience-pointsToVids-types-check.sql | 0
.../convenience-textToPoints-types-check.sql | 0
.../convenience-vidsToDMatrix-types-check.sql | 0
...dijkstra-v2-equi-v3-directed-N-reverse.test.sql | 0
...dijkstra-v2-equi-v3-directed-W-reverse.test.sql | 0
...jkstra-v2-equi-v3-undirected-N-reverse.test.sql | 0
...jkstra-v2-equi-v3-undirected-W-reverse.test.sql | 0
pgtap/deprecated/dijkstra-v2-innerQuery.sql | 21 +
.../deprecated}/dijkstraV2-types-check.sql | 0
pgtap/deprecated/drivingDistance-v2-innerQuery.sql | 21 +
.../deprecated}/kdijkstra-any-01.test.sql | 0
.../deprecated/kdijkstra-issue229.test.sql | 0
.../deprecated/kdijkstra-issue333.test.sql | 0
.../kdijkstraCost-dijkstraCost-compare.test.sql | 0
.../kdijkstraCost-errors-exceptions-cost.test.sql | 0
pgtap/deprecated/kdijkstraCost-innerquery.sql | 21 +
.../kdijkstraPath-dijkstra-compare.test.sql | 0
.../kdijkstraPath-errors-exceptions-path.test.sql | 0
pgtap/deprecated/kdijkstraPath-innerquery.sql | 21 +
.../maxflowboykovkolmogorov-group-innerQuery.sql | 36 +
.../maxflowboykovkolmogorov-types-check.sql | 139 +
.../maxflowedmondskarp-group-innerQuery.sql | 36 +
.../deprecated/maxflowedmondskarp-types-check.sql | 143 +
.../maxflowpushrelabel-group-innerQuery.sql | 36 +
.../deprecated/maxflowpushrelabel-types-check.sql | 143 +
.../maximumcardinalitymatching-innerQuery.sql | 19 +
.../maximumcardinalitymatching-types-check.sql | 52 +
pgtap/deprecated/no_underscored-2x.test.sql | 63 +
pgtap/dijkstra/dijkstra-group-innerQuery.sql | 39 +
.../dijkstra/dijkstra-issue-353.test.sql | 0
.../dijkstra}/dijkstra-types-check.sql | 0
pgtap/dijkstra/dijkstraCost-group-innerQuery.sql | 40 +
.../dijkstra}/dijkstraCost-types-check.sql | 0
.../dijkstraVia-equivalenceDijkstra.test.sql | 0
pgtap/dijkstra/dijkstraVia-innerQuery.sql | 17 +
.../dijkstra}/dijkstraVia-types-check.sql | 0
.../dijkstra}/oneToOne_equiv_manyToMany.test.sql | 0
.../dijkstra}/oneToOne_equiv_manyToOne.test.sql | 0
.../dijkstra}/oneToOne_equiv_oneToMany.test.sql | 0
.../dijkstra}/zero_one_edge_-1_rev.test.sql | 0
.../dijkstra}/zero_one_edge_has_rev.test.sql | 0
.../dijkstra}/zero_one_edge_no_rev.test.sql | 0
pgtap/driving_distance/dijkstraDD-innerQuery.sql | 28 +
.../pgtap => pgtap/driving_distance}/issue-519.sql | 0
.../withPointsDD-group-innerQuery.sql | 29 +
pgtap/ksp/ksp-innerQuery.sql | 19 +
pgtap/ksp/ksp-old-innerQuery.sql | 20 +
.../pgtap => pgtap/ksp}/ksp-v3-1route.test.sql | 0
.../test/pgtap => pgtap/ksp}/parallel-v2.test.sql | 0
.../ksp/test/pgtap => pgtap/ksp}/parallel.test.sql | 0
pgtap/ksp/withPointsKSP-innerQuery.sql | 21 +
pgtap/max_flow/boykovKolmogorov-innerQuery.sql | 36 +
pgtap/max_flow/boykovKolmogorov-types-check.sql | 139 +
.../edgedisjointpaths-group-innerQuery.sql | 45 +
pgtap/max_flow/edgedisjointpaths-types-check.sql | 155 +
pgtap/max_flow/edmondsKarp-innerQuery.sql | 36 +
pgtap/max_flow/edmondsKarp-types-check.sql | 143 +
pgtap/max_flow/internet_example.sql | 144 +
pgtap/max_flow/maxCardinalityMatch-innerQuery.sql | 19 +
pgtap/max_flow/maxCardinalityMatch-types-check.sql | 52 +
pgtap/max_flow/maxflow-group-innerQuery.sql | 36 +
pgtap/max_flow/maxflow-types-check.sql | 118 +
pgtap/max_flow/pushRelabel-innerQuery.sql | 36 +
pgtap/max_flow/pushRelabel-types-check.sql | 143 +
pgtap/pickDeliver/order_id_is_neg1.sql | 30 +
.../pickDeliver-VS-pickDeliverEuclidean.sql | 37 +
.../pickDeliverEuclidean-innerquery.sql | 261 +
.../pickDeliverEuclidean_types_check.sql | 65 +
.../wrong_data_pickDeliverEuclidean.sql | 284 +
.../pgtap => pgtap/topology}/analyzeGraph.test.sql | 0
.../topology}/analyzeOneWay.test.sql | 0
.../topology}/createTopology.test.sql | 0
.../topology}/createVerticesTable.test.sql | 0
.../topology}/incrementalCreateTopology.test.sql | 0
.../pgtap => pgtap/topology}/nodeNetwork.test.sql | 0
.../blank-restrictions-compare-dijkstra.test.sql | 0
.../trsp}/emptyset-from-i-to-i.test.sql | 0
.../test/pgtap => pgtap/trsp}/from1to3.test.sql | 0
.../trsp}/from3to4-directed.test.sql | 0
...restrictions-compare-dijkstra-directed.test.sql | 0
...strictions-compare-dijkstra-undirected.test.sql | 0
.../test/pgtap => pgtap/trsp}/trsp-any-00.test.sql | 0
.../test/pgtap => pgtap/trsp}/trsp-any-01.test.sql | 0
.../pgtap => pgtap/trsp}/trsp-issue244.test.sql | 0
...restrictions-compare-dijkstra-directed.test.sql | 0
...strictions-compare-dijkstra-undirected.test.sql | 0
.../pgtap => pgtap/tsp}/pgr_TSP_types_check.sql | 0
.../tsp}/pgr_eucledianTSP_types_check.sql | 0
.../many_to_many_eq_one_to_one_withPoint.test.sql | 0
.../many_to_one_eq_one_to_one_withPoint.test.sql | 0
.../one_to_many_eq_one_to_one_withPoint.test.sql | 0
.../withPoints}/one_to_many_withPoint.test.sql | 0
.../withPoints}/one_to_one_withPoint.test.sql | 0
pgtap/withPoints/withPoints-group-innerQuery.sql | 48 +
.../withPoints/withPointsCost-group-innerQuery.sql | 47 +
sql/CMakeLists.txt | 102 +
sql/allpairs/CMakeLists.txt | 12 +
sql/allpairs/floydWarshall.sql | 36 +
sql/allpairs/johnson.sql | 36 +
sql/alpha_shape/CMakeLists.txt | 11 +
sql/alpha_shape/alpha_shape.sql | 100 +
sql/astar/CMakeLists.txt | 13 +
sql/astar/_astar.sql | 51 +
sql/astar/astar.sql | 137 +
sql/astar/astarCost.sql | 126 +
sql/bdAstar/CMakeLists.txt | 13 +
sql/bdAstar/_bdAstar.sql | 49 +
sql/bdAstar/bdAstar.sql | 156 +
sql/bdAstar/bdAstarCost.sql | 118 +
sql/bdDijkstra/CMakeLists.txt | 13 +
sql/bdDijkstra/_bdDijkstra.sql | 45 +
sql/bdDijkstra/bdDijkstra.sql | 136 +
sql/bdDijkstra/bdDijkstraCost.sql | 100 +
sql/common/CMakeLists.txt | 20 +
sql/common/_point_toId.sql | 81 +
sql/common/createIndex.sql | 115 +
sql/common/findClosestEdge.sql | 100 +
sql/common/pgRouting-header.sql | 37 +
sql/common/pgr_parameter_check.sql | 164 +
sql/common/pgrouting-types.sql | 49 +
.../common/pgrouting.control | 0
sql/common/pgrouting_utilities.sql | 471 +
sql/common/pgrouting_version.sql | 34 +
sql/common/utilities_pgr.sql | 288 +
sql/components/CMakeLists.txt | 17 +
sql/components/articulationPoints.sql | 38 +
sql/components/biconnectedComponents.sql | 40 +
sql/components/bridges.sql | 38 +
sql/components/connectedComponents.sql | 40 +
sql/components/strongComponents.sql | 40 +
sql/contraction/CMakeLists.txt | 11 +
sql/contraction/contractGraph.sql | 47 +
sql/costMatrix/CMakeLists.txt | 15 +
sql/costMatrix/astarCostMatrix.sql | 51 +
sql/costMatrix/bdAstarCostMatrix.sql | 53 +
sql/costMatrix/bdDijkstraCostMatrix.sql | 43 +
.../sql => sql/costMatrix}/dijkstraCostMatrix.sql | 0
sql/costMatrix/withPointsCostMatrix.sql | 53 +
sql/deprecated/CMakeLists.txt | 25 +
.../sql => sql/deprecated}/apsp_johnson_v2.2.sql | 0
.../sql => sql/deprecated}/apsp_warshall_v2.2.sql | 0
sql/deprecated/astarV2.0.sql | 50 +
sql/deprecated/bdDijkstra-v2.sql | 53 +
sql/deprecated/bd_astar_v2.sql | 59 +
sql/deprecated/deprecated-comments.sql | 145 +
sql/deprecated/dijkstra_v2.sql | 59 +
sql/deprecated/kdijkstra-V2.2.sql | 195 +
sql/deprecated/legacy-developers.sql | 446 +
sql/deprecated/legacy.sql | 438 +
sql/deprecated/max_flow-deprecated.sql | 292 +
sql/deprecated/maximum_cardinality_matching.sql | 39 +
sql/deprecated/noUnderUtilities.sql | 111 +
sql/deprecated/pgr_vidsToDMatrix.sql | 92 +
sql/deprecated/pgrouting_conversion_tools.sql | 186 +
sql/deprecated/pgrouting_dmatrix_tools.sql | 144 +
sql/deprecated/routing_dd.sql | 59 +
sql/dijkstra/CMakeLists.txt | 14 +
sql/dijkstra/_dijkstra.sql | 45 +
sql/dijkstra/dijkstra.sql | 149 +
sql/dijkstra/dijkstraCost.sql | 111 +
sql/dijkstra/dijkstraVia.sql | 51 +
sql/dijkstraTRSP/CMakeLists.txt | 13 +
sql/dijkstraTRSP/dijkstraTRSP.sql | 47 +
sql/driving_distance/CMakeLists.txt | 12 +
sql/driving_distance/dijkstraDD.sql | 61 +
sql/driving_distance/withPoints_dd.sql | 71 +
sql/ksp/CMakeLists.txt | 12 +
sql/ksp/routing_ksp.sql | 78 +
sql/ksp/withPoints_ksp.sql | 44 +
sql/label_graph/CMakeLists.txt | 11 +
sql/label_graph/label_graph.sql | 194 +
sql/lineGraph/CMakeLists.txt | 13 +
sql/lineGraph/lineGraph.sql | 41 +
sql/max_flow/CMakeLists.txt | 17 +
sql/max_flow/_max_flow.sql | 50 +
sql/max_flow/boykovKolmogorov.sql | 108 +
sql/max_flow/edge_disjoint_paths.sql | 124 +
sql/max_flow/edmondsKarp.sql | 108 +
sql/max_flow/maxCardinalityMatch.sql | 39 +
sql/max_flow/maxFlow.sql | 87 +
sql/max_flow/pushRelabel.sql | 108 +
sql/pickDeliver/CMakeLists.txt | 12 +
sql/pickDeliver/pickDeliver.sql | 57 +
sql/pickDeliver/pickDeliverEuclidean.sql | 54 +
sql/scripts/CMakeLists.txt | 3 +
sql/scripts/build-extension-file.pl | 91 +
sql/scripts/build-extension-update-files1.pl | 712 +
sql/sigs/CMakeLists.txt | 24 +
{tools => sql}/sigs/pgrouting--2.0.0.sig | 0
{tools => sql}/sigs/pgrouting--2.0.1.sig | 0
{tools => sql}/sigs/pgrouting--2.1.0.sig | 0
{tools => sql}/sigs/pgrouting--2.2.0.sig | 0
{tools => sql}/sigs/pgrouting--2.2.1.sig | 0
{tools => sql}/sigs/pgrouting--2.2.2.sig | 0
{tools => sql}/sigs/pgrouting--2.2.3.sig | 0
{tools => sql}/sigs/pgrouting--2.2.4.sig | 0
{tools => sql}/sigs/pgrouting--2.3.0.sig | 0
{tools => sql}/sigs/pgrouting--2.3.1.sig | 0
{tools => sql}/sigs/pgrouting--2.3.2.sig | 0
{tools => sql}/sigs/pgrouting--2.4.0.sig | 0
{tools => sql}/sigs/pgrouting--2.4.1.sig | 0
{tools/curr-sig => sql/sigs}/pgrouting--2.4.2.sig | 0
sql/sigs/pgrouting--2.5.0.sig | 185 +
sql/topology/CMakeLists.txt | 14 +
sql/topology/create_vertices_table.sql | 254 +
sql/topology/nodeNetwork.sql | 289 +
.../sql => sql/topology}/pgrouting_analytics.sql | 0
sql/topology/pgrouting_topology.sql | 289 +
sql/trsp/CMakeLists.txt | 12 +
sql/trsp/routing_trsp_vias.sql | 165 +
sql/trsp/trsp_V2.2.sql | 216 +
sql/trsp/viaEdges_v2.2.sql | 87 +
sql/trsp/viaVertices_v2.2.sql | 82 +
sql/trsp/vias_trsp_V2.2.sql | 191 +
sql/tsp/CMakeLists.txt | 15 +
sql/tsp/TSP.sql | 50 +
sql/tsp/eucledianTSP.sql | 51 +
sql/tsp/routing_tsp_wrappers.sql | 63 +
{src/tsp/sql => sql/tsp}/tsp_v2.0_coordinates.sql | 0
sql/tsp/tsp_v2.0_matrix.sql | 95 +
sql/vrp_basic/CMakeLists.txt | 13 +
sql/vrp_basic/_pgr_vrpOneDepot.sql | 101 +
sql/vrp_basic/pgr_vrpOneDepot.sql | 56 +
sql/vrp_basic/routing_vrp.sql | 45 +
sql/vrppdtw/CMakeLists.txt | 12 +
sql/vrppdtw/_gsoc_vrppdtw.sql | 90 +
sql/vrppdtw/gsoc_vrppdtw.sql | 19 +
sql/withPoints/CMakeLists.txt | 14 +
sql/withPoints/_withPoints.sql | 54 +
sql/withPoints/withPoints.sql | 141 +
sql/withPoints/withPointsCost.sql | 124 +
sql/withPoints/withPointsVia.sql | 165 +
src/allpairs/doc/pgr_floydWarshall.rst | 162 -
src/allpairs/doc/pgr_johnson.rst | 161 -
src/allpairs/sql/CMakeLists.txt | 8 -
src/allpairs/sql/floydWarshall.sql | 36 -
src/allpairs/sql/johnson.sql | 36 -
src/allpairs/src/floydWarshall.c | 11 +-
src/allpairs/src/floydWarshall_driver.cpp | 7 +-
src/allpairs/src/floydWarshall_driver.h | 56 -
src/allpairs/src/johnson.c | 11 +-
src/allpairs/src/johnson_driver.cpp | 5 +-
src/allpairs/src/johnson_driver.h | 55 -
src/allpairs/src/pgr_allpairs.hpp | 317 -
src/allpairs/test/doc-floydWarshall.result | 39 +-
src/allpairs/test/doc-johnson.result | 41 +-
src/allpairs/test/pgtap/fw-types-check.sql | 85 -
src/allpairs/test/pgtap/j-types-check.sql | 85 -
src/alpha_shape/doc/pgr_alphaShape.rst | 96 -
src/alpha_shape/doc/pgr_pointsAsPolygon.rst | 76 -
src/alpha_shape/sql/CMakeLists.txt | 7 -
src/alpha_shape/sql/alpha_shape.sql | 97 -
src/alpha_shape/src/alpha.c | 6 +-
src/alpha_shape/src/alpha_driver.cpp | 2 +-
src/alpha_shape/src/alpha_driver.h | 2 -
src/alpha_shape/test/doc-pgr_alphashape.result | 45 +-
.../test/doc-pgr_pointsAsPolygon.result | 14 +-
src/apsp_johnson/doc/doc-apspJohnson.queries | 19 -
src/apsp_johnson/sql/CMakeLists.txt | 7 -
src/apsp_johnson/test/doc-apspJohnson.result | 6 -
src/apsp_johnson/test/doc-apspJohnson.test.sql | 10 -
src/apsp_johnson/test/test.conf | 21 -
src/apsp_warshall/doc/doc-apspWarshall.queries | 23 -
src/apsp_warshall/sql/CMakeLists.txt | 7 -
src/apsp_warshall/test/doc-apspWarshall.result | 9 -
src/apsp_warshall/test/doc-apspWarshall.test.sql | 12 -
src/apsp_warshall/test/test.conf | 19 -
src/astar/doc/doc-astar-v2.queries | 37 -
src/astar/doc/doc-astar.queries | 118 -
src/astar/doc/pgr_aStar.rst | 296 -
src/astar/doc/pgr_aStarCost.rst | 239 -
src/astar/sql/CMakeLists.txt | 12 -
src/astar/sql/_astar.sql | 108 -
src/astar/sql/astar.sql | 136 -
src/astar/sql/astarCost.sql | 130 -
src/astar/sql/astarOneToOne.sql | 75 -
src/astar/sql/astarV2.0.sql | 50 -
src/astar/src/CMakeLists.txt | 7 +-
src/astar/src/astar.c | 246 +
src/astar/src/astar_driver.cpp | 203 +
src/astar/src/astar_many_to_many_driver.cpp | 204 -
src/astar/src/astar_many_to_many_driver.h | 72 -
src/astar/src/many_to_many_astar.c | 238 -
src/astar/src/many_to_one_astar.c | 225 -
src/astar/src/one_to_many_astar.c | 225 -
src/astar/src/one_to_one_astar.c | 218 -
src/astar/src/pgr_astar.hpp | 359 -
src/astar/test/doc-aStarCost.result | 62 +-
src/astar/test/doc-astar-v2.result | 15 -
src/astar/test/doc-astar-v2.test.sql | 11 -
src/astar/test/doc-astar.result | 161 +-
src/astar/test/doc-astar.test.sql | 4 -
.../astar_ManyToMany-compare-dijkstra.test.sql | 97 -
.../pgtap/astar_oneToOne-compare-dijkstra.test.sql | 112 -
src/astar/test/test.conf | 2 -
src/bdAstar/src/CMakeLists.txt | 4 +
src/bdAstar/src/bdAstar.c | 238 +
src/bdAstar/src/bdAstar_driver.cpp | 232 +
src/bdAstar/test/doc-pgr_bdAstar.result | 112 +
src/bdAstar/test/doc-pgr_bdAstar.test.sql | 38 +
src/bdAstar/test/doc-pgr_bdAstarCost.result | 71 +
src/bdAstar/test/doc-pgr_bdAstarCost.test.sql | 37 +
src/bdAstar/test/test.conf | 18 +
src/bdDijkstra/doc/doc-pgr_bdDijkstra.queries | 52 -
src/bdDijkstra/doc/pgr_bdDijkstra.rst | 113 -
src/bdDijkstra/sql/CMakeLists.txt | 7 -
src/bdDijkstra/sql/bdDijkstra.sql | 93 -
src/bdDijkstra/src/bdDijkstra.c | 75 +-
src/bdDijkstra/src/bdDijkstra_driver.cpp | 112 +-
src/bdDijkstra/src/bdDijkstra_driver.h | 68 -
src/bdDijkstra/src/pgr_bdDijkstra.hpp | 281 -
src/bdDijkstra/test/bdDijkstra-large.result | 716 +-
src/bdDijkstra/test/doc-pgr_bdDijkstra.result | 128 +-
src/bdDijkstra/test/doc-pgr_bdDijkstra.test.sql | 16 +-
src/bdDijkstra/test/doc-pgr_bdDijkstraCost.result | 60 +
.../test/doc-pgr_bdDijkstraCost.test.sql | 26 +
.../test/pgtap/bdDijkstra-innerQuery.sql | 116 -
src/bdDijkstra/test/test.conf | 2 +
src/bd_astar/doc/CMakeLists.txt | 0
src/bd_astar/doc/doc-bdAstar.queries | 35 -
src/bd_astar/doc/pgr_bdAstar.rst | 102 -
src/bd_astar/sql/CMakeLists.txt | 7 -
src/bd_astar/sql/routing_bd_astar.sql | 41 -
src/bd_astar/src/BiDirAStar.cpp | 473 -
src/bd_astar/src/BiDirAStar.h | 127 -
src/bd_astar/src/CMakeLists.txt | 5 -
src/bd_astar/src/MinHeap.cpp | 151 -
src/bd_astar/src/MinHeap.h | 66 -
src/bd_astar/src/bdastar.c | 442 -
src/bd_astar/src/bdastar_driver.cpp | 68 -
src/bd_astar/src/bdastar_driver.h | 47 -
src/bd_astar/test/bd_astar-any-00.data | 17284 -------------------
src/bd_astar/test/bd_astar-any-01.result | 101 -
src/bd_astar/test/bd_astar-any-01.test.sql | 23 -
src/bd_astar/test/bd_astar-any-02.result | 60 -
src/bd_astar/test/bd_astar-any-02.test.sql | 23 -
src/bd_astar/test/bd_astar-any-03.result | 2 -
src/bd_astar/test/bd_astar-any-03.test.sql | 23 -
src/bd_astar/test/bd_astar-any-04.result | 2 -
src/bd_astar/test/bd_astar-any-04.test.sql | 23 -
src/bd_astar/test/bd_astar-any-05.result | 101 -
src/bd_astar/test/bd_astar-any-05.test.sql | 23 -
src/bd_astar/test/bd_astar-any-06.result | 60 -
src/bd_astar/test/bd_astar-any-06.test.sql | 23 -
src/bd_astar/test/doc-bdAstar.result | 13 -
src/bd_astar/test/doc-bdAstar.test.sql | 16 -
src/bd_astar/test/pgtap/bdAstar-types-check.sql | 198 -
src/bd_astar/test/test.conf | 24 -
src/bd_astar/tester/BDATester.cpp | 312 -
src/bd_astar/tester/BiDirAStar.cpp | 511 -
src/bd_astar/tester/BiDirAStar.h | 159 -
src/bd_astar/tester/Makefile | 7 -
src/bd_astar/tester/MinHeap.cpp | 173 -
src/bd_astar/tester/MinHeap.h | 72 -
src/bd_astar/tester/ans1.txt | 101 -
src/bd_astar/tester/ans2.txt | 60 -
src/bd_astar/tester/ans3.txt | 2 -
src/bd_astar/tester/ans4.txt | 2 -
src/bd_astar/tester/ans5.txt | 101 -
src/bd_astar/tester/ans6.txt | 60 -
src/bd_astar/tester/input.txt | 7 -
src/bd_astar/tester/utils.h | 128 -
src/bd_astar/tester/ways.txt | 17268 ------------------
src/bd_astar/tester/ways2data | 37 -
src/bd_dijkstra/doc/doc-bdDijkstra.queries | 35 -
src/bd_dijkstra/sql/CMakeLists.txt | 8 -
src/bd_dijkstra/sql/bdDijkstra-v2.sql | 53 -
src/bd_dijkstra/test/bd_dijkstra-any-00.data | 17280 ------------------
src/bd_dijkstra/test/bd_dijkstra-any-01.result | 102 -
src/bd_dijkstra/test/bd_dijkstra-any-01.test.sql | 23 -
src/bd_dijkstra/test/bd_dijkstra-any-02.result | 61 -
src/bd_dijkstra/test/bd_dijkstra-any-02.test.sql | 23 -
src/bd_dijkstra/test/bd_dijkstra-any-03.result | 3 -
src/bd_dijkstra/test/bd_dijkstra-any-03.test.sql | 23 -
src/bd_dijkstra/test/bd_dijkstra-any-04.result | 3 -
src/bd_dijkstra/test/bd_dijkstra-any-04.test.sql | 23 -
src/bd_dijkstra/test/bd_dijkstra-any-05.result | 102 -
src/bd_dijkstra/test/bd_dijkstra-any-05.test.sql | 23 -
src/bd_dijkstra/test/bd_dijkstra-any-06.result | 61 -
src/bd_dijkstra/test/bd_dijkstra-any-06.test.sql | 23 -
src/bd_dijkstra/test/doc-bdDijkstra.result | 15 -
src/bd_dijkstra/test/doc-bdDijkstra.test.sql | 15 -
src/bd_dijkstra/test/test.conf | 24 -
src/common/doc/CMakeLists.txt | 0
src/common/doc/cost_result.rst | 87 -
src/common/doc/geom_result.rst | 53 -
src/common/doc/pgr_version.rst | 78 -
src/common/doc/types_index.rst | 27 -
src/common/sql/CMakeLists.txt | 17 -
src/common/sql/_point_toId.sql | 81 -
src/common/sql/createIndex.sql | 115 -
src/common/sql/findClosestEdge.sql | 100 -
src/common/sql/noUnderUtilities.sql | 111 -
src/common/sql/pgRouting-header.sql | 37 -
src/common/sql/pgr_parameter_check.sql | 162 -
src/common/sql/pgrouting-types.sql | 54 -
src/common/sql/pgrouting_utilities.sql | 471 -
src/common/sql/pgrouting_version.sql | 37 -
src/common/sql/utilities_pgr.sql | 288 -
src/common/src/CMakeLists.txt | 10 +-
src/common/src/arrays_input.c | 9 +-
src/common/src/arrays_input.h | 36 -
src/common/src/basePath_SSEC.cpp | 116 +-
src/common/src/basePath_SSEC.hpp | 331 -
src/common/src/basic_edge.cpp | 2 +-
src/common/src/basic_edge.h | 48 -
src/common/src/basic_vertex.cpp | 5 +-
src/common/src/basic_vertex.h | 81 -
src/common/src/ch_vertex.h | 4 +-
src/common/src/coordinates_input.c | 12 +-
src/common/src/coordinates_input.h | 41 -
src/common/src/debug_macro.h | 40 -
src/common/src/e_report.c | 6 +-
src/common/src/e_report.h | 136 -
src/common/src/edges_input.c | 13 +-
src/common/src/edges_input.h | 241 -
src/common/src/get_check_data.c | 23 +-
src/common/src/get_check_data.h | 66 -
src/common/src/identifier.cpp | 56 +
src/common/src/identifiers.hpp | 364 -
src/common/src/matrixRows_input.c | 16 +-
src/common/src/matrixRows_input.h | 41 -
src/common/src/orders_input.c | 219 +
src/common/src/pgr_alloc.cpp | 2 +-
src/common/src/pgr_alloc.hpp | 83 -
src/common/src/pgr_assert.cpp | 2 +-
src/common/src/pgr_assert.h | 136 -
src/common/src/pgr_base_graph.hpp | 870 -
src/common/src/pgr_types.h | 265 -
src/common/src/points_input.c | 11 +-
src/common/src/points_input.h | 83 -
src/common/src/postgres_connection.c | 4 +-
src/common/src/postgres_connection.h | 77 -
src/common/src/restrict_input.c | 173 +
src/common/src/restrictions_input.c | 12 +-
src/common/src/restrictions_input.h | 36 -
src/common/src/time_msg.c | 4 +-
src/common/src/time_msg.h | 35 -
src/common/src/vehicles_input.c | 275 +
src/common/src/xy_vertex.cpp | 5 +-
src/common/src/xy_vertex.h | 102 -
src/common/test/doc-pgr_version.result | 14 +
src/common/test/doc-pgr_version.test.sql | 7 +
src/common/test/pgtap/no_underscored-2x.test.sql | 60 -
src/common/test/test.conf | 2 +
src/common/test/versionless-any-01.result | 456 +-
src/components/src/CMakeLists.txt | 12 +
src/components/src/articulationPoints.c | 251 +
src/components/src/articulationPoints_driver.cpp | 135 +
src/components/src/biconnectedComponents.c | 253 +
.../src/biconnectedComponents_driver.cpp | 135 +
src/components/src/bridges.c | 251 +
src/components/src/bridges_driver.cpp | 135 +
src/components/src/connectedComponents.c | 253 +
src/components/src/connectedComponents_driver.cpp | 135 +
src/components/src/strongComponents.c | 253 +
src/components/src/strongComponents_driver.cpp | 135 +
.../test/doc-pgr_articulationPoints.result | 30 +
.../test/doc-pgr_articulationPoints.test.sql | 10 +
.../test/doc-pgr_biconnectedComponents.result | 58 +
.../test/doc-pgr_biconnectedComponents.test.sql | 10 +
src/components/test/doc-pgr_bridges.result | 34 +
src/components/test/doc-pgr_bridges.test.sql | 10 +
.../test/doc-pgr_connectedComponents.result | 56 +
.../test/doc-pgr_connectedComponents.test.sql | 10 +
.../test/doc-pgr_strongComponents.result | 56 +
.../test/doc-pgr_strongComponents.test.sql | 10 +
.../connectedComponentsV-compare-dijkstra.sql | 73 +
.../test/pgtap/connectedComponentsV-innerQuery.sql | 21 +
.../test/pgtap/connectedComponentsV-typesCheck.sql | 15 +
src/components/test/test.conf | 25 +
src/contraction/doc/contraction-family.rst | 527 -
src/contraction/doc/doc-contraction.queries | 362 -
src/contraction/doc/pgr_contractGraph.rst | 172 -
src/contraction/doc/proof_of_concept.queries | 106 -
src/contraction/sql/CMakeLists.txt | 6 -
src/contraction/sql/contractGraph.sql | 47 -
src/contraction/src/contractGraph.c | 24 +-
src/contraction/src/contractGraph_driver.cpp | 15 +-
src/contraction/src/contractGraph_driver.h | 67 -
src/contraction/src/pgr_contract.hpp | 183 -
src/contraction/src/pgr_contractionGraph.hpp | 300 -
src/contraction/src/pgr_deadEndContraction.hpp | 408 -
src/contraction/src/pgr_linearContraction.hpp | 274 -
src/contraction/test/directed-deadend.result | 64 +-
src/contraction/test/directed-development.result | 189 +-
src/contraction/test/directed-linear.result | 75 +-
src/contraction/test/doc-contractGraph.result | 82 +-
src/contraction/test/doc-contraction.result | 429 +-
src/contraction/test/doc-contraction.test.sql | 1 -
src/contraction/test/expand_graph.result | 304 +-
.../test/expand_graph_without_function.result | 230 +-
src/contraction/test/proof_of_concept.result | 144 +-
src/contraction/test/proof_of_concept.test.sql | 40 +-
src/contraction/test/proof_of_concept_1.result | 161 +-
src/contraction/test/return_types.result | 144 +-
src/contraction/test/sampleData.result | 23 +-
src/contraction/test/test.conf | 13 +-
src/convenience/doc/doc-conversion.queries | 71 -
src/convenience/doc/doc-matrix.queries | 121 -
src/convenience/doc/pgr_pointToEdgeNode.rst | 86 -
src/convenience/sql/CMakeLists.txt | 9 -
src/convenience/sql/pgr_vidsToDMatrix.sql | 92 -
src/convenience/sql/pgrouting_conversion_tools.sql | 186 -
src/convenience/sql/pgrouting_dmatrix_tools.sql | 144 -
src/convenience/test/doc-conversion.result | 26 -
src/convenience/test/doc-conversion.test.sql | 26 -
src/convenience/test/doc-matrix.result | 44 -
src/convenience/test/doc-matrix.test.sql | 55 -
src/convenience/test/test.conf | 29 -
src/convenience/test/vidstodmatrix-any-01.result | 4 -
src/convenience/test/vidstodmatrix-any-01.test.sql | 33 -
src/costMatrix/doc/cost-category.rst | 73 -
src/costMatrix/doc/costMatrix-category.rst | 104 -
src/costMatrix/doc/dmatrix_return_values.txt | 23 -
src/costMatrix/doc/doc-pgr_fooDmatrix.queries | 196 -
src/costMatrix/doc/pgr_aStarCostMatrix.rst | 161 -
src/costMatrix/doc/pgr_dijkstraCostMatrix.rst | 144 -
src/costMatrix/sql/CMakeLists.txt | 10 -
src/costMatrix/sql/astarCostMatrix.sql | 51 -
src/costMatrix/sql/withPointsCostMatrix.sql | 53 -
.../test/doc-pgr_fooDmatrix-mac.test.sql | 1 -
.../test/doc-pgr_fooDmatrix-windows.result | 374 +-
.../test/doc-pgr_fooDmatrix-windows.test.sql | 88 +-
src/costMatrix/test/doc-pgr_fooDmatrix.result | 399 +-
src/costMatrix/test/doc-pgr_fooDmatrix.test.sql | 53 +
src/dijkstra/doc/dijkstra-family.rst | 127 -
src/dijkstra/doc/dijkstra-v2.queries | 51 -
src/dijkstra/doc/doc-pgr_dijkstra.queries | 622 -
src/dijkstra/doc/pgr_dijkstra.rst | 333 -
src/dijkstra/doc/pgr_dijkstraCost.rst | 255 -
src/dijkstra/doc/pgr_dijkstraVia.rst | 188 -
src/dijkstra/sql/CMakeLists.txt | 9 -
src/dijkstra/sql/dijkstra.sql | 219 -
src/dijkstra/sql/dijkstraCost.sql | 103 -
src/dijkstra/sql/dijkstraVia.sql | 76 -
src/dijkstra/src/CMakeLists.txt | 7 +-
src/dijkstra/src/dijkstra.c | 236 +
src/dijkstra/src/dijkstraVia.c | 15 +-
src/dijkstra/src/dijkstraVia_driver.cpp | 9 +-
src/dijkstra/src/dijkstraVia_driver.h | 61 -
src/dijkstra/src/dijkstra_driver.cpp | 174 +
src/dijkstra/src/many_to_many_dijkstra.c | 225 -
src/dijkstra/src/many_to_many_dijkstra_driver.cpp | 175 -
src/dijkstra/src/many_to_many_dijkstra_driver.h | 67 -
src/dijkstra/src/many_to_one_dijkstra.c | 212 -
src/dijkstra/src/one_to_many_dijkstra.c | 216 -
src/dijkstra/src/one_to_one_dijkstra.c | 209 -
src/dijkstra/src/pgr_dijkstra.hpp | 585 -
src/dijkstra/test/dijkstra-v2.result | 21 -
src/dijkstra/test/dijkstra-v2.test.sql | 26 -
src/dijkstra/test/doc-pgr_dijkstra.result | 780 +-
src/dijkstra/test/doc-pgr_dijkstra.test.sql | 19 +-
src/dijkstra/test/doc-pgr_dijkstraCost.result | 99 +-
src/dijkstra/test/doc-pgr_dijkstraVia.result | 173 +-
src/dijkstra/test/issue-353.result | 4 -
src/dijkstra/test/many_to_1.result | 35 -
src/dijkstra/test/many_to_1.test.sql | 52 -
src/dijkstra/test/test.conf | 6 -
src/dijkstraTRSP/src/CMakeLists.txt | 5 +
src/dijkstraTRSP/src/dijkstraTRSP.c | 285 +
src/dijkstraTRSP/src/dijkstraTRSP_driver.cpp | 186 +
src/dijkstraTRSP/src/restriction.cpp | 52 +
src/dijkstraTRSP/test/custom.result | 25 +
src/dijkstraTRSP/test/custom.test.sql | 12 +
src/dijkstraTRSP/test/doc-dijkstraTRSP.result | 36 +
src/dijkstraTRSP/test/doc-dijkstraTRSP.test.sql | 16 +
src/dijkstraTRSP/test/pgtap/custom.sql | 163 +
.../test/pgtap/dijkstraTRSP-compare-dijkstra.sql | 75 +
.../test/pgtap/dijkstraTRSP-innerQuery.sql | 19 +
.../test/pgtap/dijkstraTRSP-typesCheck.sql | 16 +
.../test/pgtap/empty_set_NO_default_strict.sql | 258 +
.../test/pgtap/empty_set_default_strict.sql | 238 +
src/dijkstraTRSP/test/pgtap_design.result | 196 +
src/dijkstraTRSP/test/pgtap_design.test.sql | 129 +
src/dijkstraTRSP/test/test.conf | 16 +
.../doc/doc-pgr_drivingDistance.queries | 339 -
.../doc/doc-pgr_drivingdistance-v2.queries | 32 -
.../doc/drivingDistance-category.rst | 33 -
src/driving_distance/doc/pgr_drivingDistance.rst | 186 -
src/driving_distance/sql/CMakeLists.txt | 7 -
src/driving_distance/sql/routing_dd.sql | 95 -
src/driving_distance/sql/withPoints_dd.sql | 71 -
src/driving_distance/src/drivedist_driver.cpp | 122 +-
src/driving_distance/src/drivedist_driver.h | 49 -
.../src/many_to_dist_driving_distance.c | 16 +-
.../src/many_to_dist_withPointsDD.c | 21 +-
src/driving_distance/src/withPoints_dd_driver.cpp | 11 +-
src/driving_distance/src/withPoints_dd_driver.h | 63 -
.../test/dijksraDD-issue729.result | 71 +
...sue729.test.sql => dijksraDD-issue729.test.sql} | 0
.../test/doc-pgr_drivingDistance.result | 480 +-
.../test/doc-pgr_drivingDistance.test.sql | 27 -
.../test/doc-pgr_drivingdistance-v2.result | 8 -
.../test/doc-pgr_drivingdistance-v2.test.sql | 19 -
.../test/drivingdistance-any-00.result | 575 -
.../test/drivingdistance-any-00.test.sql | 65 -
src/driving_distance/test/issue729.result | 5 -
src/driving_distance/test/test.conf | 5 +-
src/internalQueryTests/src/testXYedges.c | 10 +-
src/internalQueryTests/src/testXYedges_driver.cpp | 1 -
src/internalQueryTests/src/testXYedges_driver.h | 2 +-
src/internalQueryTests/src/test_c_edges.c | 9 +-
src/internalQueryTests/src/test_c_edges_driver.cpp | 1 -
src/internalQueryTests/src/test_c_edges_driver.h | 2 +-
src/internalQueryTests/src/test_matrixRows.c | 9 +-
.../src/test_matrixRows_driver.h | 2 +-
src/kdijkstra/doc/doc-kdijkstra.queries | 52 -
src/kdijkstra/sql/CMakeLists.txt | 7 -
src/kdijkstra/sql/kdijkstra-V2.2.sql | 195 -
src/kdijkstra/test/doc-kdijkstra.result | 19 -
src/kdijkstra/test/doc-kdijkstra.test.sql | 24 -
src/kdijkstra/test/test.conf | 24 -
src/ksp/doc/KSP-category.rst | 23 -
src/ksp/doc/doc-ksp-v2.queries | 51 -
src/ksp/doc/doc-ksp.queries | 294 -
src/ksp/doc/pgr_KSP.rst | 181 -
src/ksp/sql/CMakeLists.txt | 9 -
src/ksp/sql/routing_ksp.sql | 78 -
src/ksp/sql/withPoints_ksp.sql | 44 -
src/ksp/src/ksp.c | 15 +-
src/ksp/src/ksp_driver.cpp | 11 +-
src/ksp/src/ksp_driver.h | 54 -
src/ksp/src/pgr_ksp.cpp | 165 -
src/ksp/src/pgr_ksp.hpp | 122 -
src/ksp/src/withPoints_ksp.c | 19 +-
src/ksp/src/withPoints_ksp_driver.cpp | 8 +-
src/ksp/src/withPoints_ksp_driver.h | 65 -
src/ksp/test/doc-ksp-v2.result | 29 -
src/ksp/test/doc-ksp-v2.test.sql | 15 -
src/ksp/test/doc-ksp.result | 436 +-
src/ksp/test/doc-ksp.test.sql | 7 -
src/ksp/test/ksp-network.result | 2 -
src/ksp/test/ksp-network.test.sql | 116 -
src/ksp/test/test.conf | 3 -
src/label_graph/doc/doc-pgr_labelGraph.queries | 24 -
src/label_graph/doc/pgr_labelGraph.rst | 87 -
src/label_graph/sql/CMakeLists.txt | 7 -
src/label_graph/sql/label_graph.sql | 194 -
src/label_graph/test/doc-pgr_labelGraph.result | 26 +-
src/label_graph/test/doc-pgr_labelGraph.test.sql | 2 +-
src/lineGraph/src/CMakeLists.txt | 4 +
src/lineGraph/src/lineGraph.c | 223 +
src/lineGraph/src/lineGraph_driver.cpp | 157 +
src/lineGraph/test/doc-pgr_lineGraph.result | 210 +
src/lineGraph/test/doc-pgr_lineGraph.test.sql | 12 +
src/lineGraph/test/pgtap/lineGraph-innerQuery.sql | 20 +
src/lineGraph/test/pgtap/lineGraph-typesCheck.sql | 14 +
src/lineGraph/test/test.conf | 17 +
src/max_flow/doc/CMakeLists.txt | 0
src/max_flow/doc/doc-pgr_edgeDisjointPaths.queries | 91 -
src/max_flow/doc/doc-pgr_maxFlow.queries | 75 -
.../doc/doc-pgr_maxFlowBoykovKolmogorov.queries | 107 -
.../doc/doc-pgr_maxFlowEdmondsKarp.queries | 107 -
.../doc/doc-pgr_maxFlowPushRelabel.queries | 114 -
.../doc/doc-pgr_maximumCardinalityMatching.queries | 40 -
src/max_flow/doc/flow-family.rst | 101 -
src/max_flow/doc/maxFlowApplications.rst | 60 -
src/max_flow/doc/pgr_edgeDisjointPaths.rst | 225 -
src/max_flow/doc/pgr_maxFlow.rst | 190 -
src/max_flow/doc/pgr_maxFlowBoykovKolmogorov.rst | 219 -
src/max_flow/doc/pgr_maxFlowEdmondsKarp.rst | 209 -
src/max_flow/doc/pgr_maxFlowPushRelabel.rst | 213 -
.../doc/pgr_maximumCardinalityMatching.rst | 171 -
src/max_flow/sql/CMakeLists.txt | 10 -
src/max_flow/sql/edge_disjoint_paths.sql | 102 -
src/max_flow/sql/max_flow.sql | 366 -
src/max_flow/sql/maximum_cardinality_matching.sql | 39 -
src/max_flow/sql/only_flow.sql | 86 -
src/max_flow/src/CMakeLists.txt | 23 +-
src/max_flow/src/edge_disjoint_paths.c | 201 +
src/max_flow/src/edge_disjoint_paths_driver.cpp | 127 +-
src/max_flow/src/edge_disjoint_paths_driver.h | 6 +-
.../src/edge_disjoint_paths_many_to_many.c | 199 -
src/max_flow/src/edge_disjoint_paths_many_to_one.c | 192 -
src/max_flow/src/edge_disjoint_paths_one_to_many.c | 200 -
src/max_flow/src/edge_disjoint_paths_one_to_one.c | 196 -
src/max_flow/src/max_flow.c | 224 +
src/max_flow/src/max_flow_driver.cpp | 65 +-
src/max_flow/src/max_flow_driver.h | 5 +-
src/max_flow/src/max_flow_many_to_many.c | 227 -
src/max_flow/src/max_flow_many_to_one.c | 216 -
src/max_flow/src/max_flow_one_to_many.c | 219 -
src/max_flow/src/max_flow_one_to_one.c | 216 -
src/max_flow/src/maximum_cardinality_matching.c | 11 +-
.../src/maximum_cardinality_matching_driver.cpp | 5 +-
.../src/maximum_cardinality_matching_driver.h | 2 +-
src/max_flow/src/pgr_edgedisjointpaths.hpp | 266 -
src/max_flow/src/pgr_flowgraph.cpp | 27 +
src/max_flow/src/pgr_flowgraph.hpp | 54 +
src/max_flow/src/pgr_maxflow.cpp | 310 +
src/max_flow/src/pgr_maxflow.hpp | 367 +-
.../src/pgr_maximumcardinalitymatching.hpp | 4 -
src/max_flow/test/doc-pgr_boykovKolmogorov.result | 90 +
.../test/doc-pgr_boykovKolmogorov.test.sql | 46 +
src/max_flow/test/doc-pgr_edgeDisjointPaths.result | 160 +-
.../test/doc-pgr_edgeDisjointPaths.test.sql | 12 +-
src/max_flow/test/doc-pgr_edmondsKarp.result | 90 +
src/max_flow/test/doc-pgr_edmondsKarp.test.sql | 46 +
.../test/doc-pgr_maxCardinalityMatch.result | 40 +
.../test/doc-pgr_maxCardinalityMatch.test.sql | 13 +
src/max_flow/test/doc-pgr_maxFlow.result | 66 +-
src/max_flow/test/doc-pgr_maxFlow.test.sql | 32 +-
.../test/doc-pgr_maxFlowBoykovKolmogorov.result | 41 -
.../test/doc-pgr_maxFlowBoykovKolmogorov.test.sql | 54 -
.../test/doc-pgr_maxFlowEdmondsKarp.result | 41 -
.../test/doc-pgr_maxFlowEdmondsKarp.test.sql | 57 -
.../test/doc-pgr_maxFlowPushRelabel.result | 48 -
.../test/doc-pgr_maxFlowPushRelabel.test.sql | 59 -
.../test/doc-pgr_maximumCardinalityMatching.result | 19 -
.../doc-pgr_maximumCardinalityMatching.test.sql | 15 -
src/max_flow/test/doc-pgr_pushRelabel.result | 96 +
src/max_flow/test/doc-pgr_pushRelabel.test.sql | 51 +
src/max_flow/test/pgtap/flow-types-check.sql | 1398 --
.../test/pgtap/flowapplications-types-check.sql | 740 -
src/max_flow/test/pgtap/internet_example.sql | 144 -
src/max_flow/test/sample_data_categories.sql | 33 -
src/max_flow/test/test.conf | 16 +-
src/pickDeliver/doc/doc-pickDeliver.queries | 275 -
src/pickDeliver/doc/pgr_pickDeliver.rst.backup | 229 -
src/pickDeliver/sql/CMakeLists.txt | 7 -
src/pickDeliver/sql/pickDeliver.sql | 51 -
src/pickDeliver/src/CMakeLists.txt | 13 +-
src/pickDeliver/src/base_node.cpp | 58 +
src/pickDeliver/src/book_keeping.cpp | 75 +
src/pickDeliver/src/customers_input.c | 159 -
src/pickDeliver/src/customers_input.h | 32 -
src/pickDeliver/src/dnode.cpp | 56 +
src/pickDeliver/src/fleet.cpp | 365 +
src/pickDeliver/src/initial_solution.cpp | 540 +-
src/pickDeliver/src/initial_solution.h | 77 -
src/pickDeliver/src/node.cpp | 54 +-
src/pickDeliver/src/node.h | 80 -
src/pickDeliver/src/optimize.cpp | 563 +-
src/pickDeliver/src/optimize.h | 76 -
src/pickDeliver/src/order.cpp | 138 +-
src/pickDeliver/src/order.h | 106 -
src/pickDeliver/src/pd_orders.cpp | 203 +
src/pickDeliver/src/pd_problem.cpp | 46 +
src/pickDeliver/src/pgr_messages.cpp | 83 +
src/pickDeliver/src/pgr_pickDeliver.cpp | 471 +-
src/pickDeliver/src/pgr_pickDeliver.h | 104 -
src/pickDeliver/src/pickDeliver.c | 266 +-
src/pickDeliver/src/pickDeliverEuclidean.c | 307 +
.../src/pickDeliverEuclidean_driver.cpp | 162 +
src/pickDeliver/src/pickDeliver_driver.cpp | 168 +-
src/pickDeliver/src/pickDeliver_driver.h | 60 -
src/pickDeliver/src/solution.cpp | 40 +-
src/pickDeliver/src/solution.h | 125 -
src/pickDeliver/src/tw_node.cpp | 186 +-
src/pickDeliver/src/tw_node.h | 299 -
src/pickDeliver/src/vehicle.cpp | 131 +-
src/pickDeliver/src/vehicle.h | 325 -
src/pickDeliver/src/vehicle_node.cpp | 37 +-
src/pickDeliver/src/vehicle_node.h | 183 -
src/pickDeliver/src/vehicle_pickDeliver.cpp | 209 +-
src/pickDeliver/src/vehicle_pickDeliver.h | 155 -
src/pickDeliver/test/book_from_query.result | 186 +
src/pickDeliver/test/book_from_query.test.sql | 115 +
.../pickDeliver/test/book_vrp.result | 0
src/pickDeliver/test/book_vrp.test.sql | 664 +
src/pickDeliver/test/design_pgtap.result | 20 +
src/pickDeliver/test/design_pgtap.test.sql | 9 +
.../test/differentVechiles-cygwin.result | 2 +
.../test/differentVechiles-cygwin.test.sql | 37 +
src/pickDeliver/test/differentVechiles.result | 230 +
src/pickDeliver/test/differentVechiles.test.sql | 34 +
src/pickDeliver/test/doc-pickDeliver.result | 312 +-
src/pickDeliver/test/doc-pickDeliver.test.sql | 26 +-
.../test/doc-pickDeliverEuclidean.result | 27 +
.../test/doc-pickDeliverEuclidean.test.sql | 6 +
src/pickDeliver/test/jet_customers-cygwin.result | 92 +
src/pickDeliver/test/jet_customers-cygwin.test.sql | 104 +
src/pickDeliver/test/jet_customers.result | 153 +-
src/pickDeliver/test/jet_customers.test.sql | 30 +-
src/pickDeliver/test/jet_customers1.result | 291 +
src/pickDeliver/test/jet_customers1.test.sql | 120 +
.../test/notTestingYet/pickDeliver-innerquery.sql | 391 +
.../test/notTestingYet/pickDeliver-types_check.sql | 55 +
.../test/notTestingYet/pickDeliver_types_check.sql | 53 +
src/pickDeliver/test/past_example.result | 266 +
src/pickDeliver/test/past_example.test.sql | 9 +
.../test/pgtap/pickDeliver_types_check.sql | 39 -
src/pickDeliver/test/pgtap/wrong_data.sql | 130 -
src/pickDeliver/test/pickDeliver.data | 120 -
src/pickDeliver/test/pickDeliver.result | 257 +
src/pickDeliver/test/pickDeliver.test.sql | 10 +
src/pickDeliver/test/test.conf | 23 +-
src/topology/doc/doc-pgr_createTopology.queries | 262 -
src/topology/doc/pgr_analyzeGraph.rst | 376 -
src/topology/doc/pgr_analyzeOneWay.rst | 139 -
src/topology/doc/pgr_createTopology.rst | 256 -
src/topology/doc/pgr_createVerticesTable.rst | 266 -
src/topology/doc/pgr_nodeNetwork.rst | 394 -
src/topology/doc/topology-functions.rst | 33 -
src/topology/sql/CMakeLists.txt | 10 -
src/topology/sql/create_vertices_table.sql | 254 -
src/topology/sql/nodeNetwork.sql | 289 -
src/topology/sql/pgrouting_topology.sql | 289 -
src/topology/test/analyzeOneway-any.result | 34 +-
src/topology/test/createVertTab-any.result | 504 +-
src/topology/test/doc-pgr_analyzeGraph.result | 914 +-
src/topology/test/doc-pgr_createTopology.result | 207 +-
src/topology/test/doc-pgr_createTopology.test.sql | 8 +-
src/topology/test/issue900.result | 16 +
src/topology/test/nodeNetwork-any.result | 127 +-
src/trsp/doc/README.md | 1112 --
src/trsp/doc/pgr_trsp.rst | 204 -
src/trsp/sql/CMakeLists.txt | 10 -
src/trsp/sql/routing_trsp_vias.sql | 192 -
src/trsp/sql/trsp_V2.2.sql | 214 -
src/trsp/sql/viaEdges_v2.2.sql | 85 -
src/trsp/sql/viaVertices_v2.2.sql | 82 -
src/trsp/sql/vias_trsp_V2.2.sql | 220 -
src/trsp/src/GraphDefinition.cpp | 869 +-
src/trsp/src/GraphDefinition.h | 96 +-
src/trsp/src/trsp.c | 653 +-
src/trsp/src/trsp.h | 90 +-
src/trsp/src/trsp_core.cpp | 83 +-
src/trsp/src/trsp_driver.cpp | 32 +-
src/trsp/src/trsp_driver.h | 58 +-
src/trsp/src/utils.h | 171 +-
src/trsp/test/doc-trsp.result | 159 +-
src/trsp/test/issue693.result | 34 +-
src/trsp/test/issue704.result | 81 +-
src/trsp/test/issue717.result | 488 +-
src/trsp/test/test.conf | 4 +-
src/trsp/test/trsp-any-02.result | 52 +-
src/trsp/test/trsp_notes_v2.4.0.result | 552 -
src/trsp/test/trsp_notes_v2.4.0.test.sql | 814 -
src/trsp/test/trsp_notes_v2.5.0.result | 1112 ++
src/trsp/test/trsp_notes_v2.5.0.test.sql | 814 +
src/trsp/test/trsp_vias-any-04.result | 199 +-
src/tsp/doc/TSP-family.rst | 218 -
src/tsp/doc/doc-tsp.queries | 102 -
src/tsp/doc/pgr_TSP.rst | 166 -
src/tsp/doc/pgr_eucledianTSP.rst | 150 -
src/tsp/doc/tsp_parameters.txt | 34 -
src/tsp/doc/tsp_return_values.txt | 27 -
src/tsp/sql/CMakeLists.txt | 17 -
src/tsp/sql/TSP.sql | 50 -
src/tsp/sql/eucledianTSP.sql | 51 -
src/tsp/sql/routing_tsp_wrappers.sql | 63 -
src/tsp/sql/tsp_v2.0_matrix.sql | 95 -
src/tsp/src/Dmatrix.cpp | 39 +-
src/tsp/src/Dmatrix.h | 125 -
src/tsp/src/eucledianDmatrix.cpp | 6 +-
src/tsp/src/eucledianDmatrix.h | 124 -
src/tsp/src/eucledianTSP.c | 14 +-
src/tsp/src/eucledianTSP_driver.cpp | 12 +-
src/tsp/src/eucledianTSP_driver.h | 65 -
src/tsp/src/newTSP.c | 16 +-
src/tsp/src/newTSP_driver.cpp | 10 +-
src/tsp/src/newTSP_driver.h | 65 -
src/tsp/src/pgr_tsp.cpp | 573 -
src/tsp/src/pgr_tsp.hpp | 149 -
src/tsp/src/tour.cpp | 4 +-
src/tsp/src/tour.h | 160 -
src/tsp/test/doc-pgr_TSP-windows.result | 52 +
src/tsp/test/doc-pgr_TSP.result | 94 +-
src/tsp/test/doc-pgr_eucledianTSP.result | 122 +-
src/tsp/test/doc-pgr_eucledianTSP.test.sql | 3 +
src/tsp/test/doc-tsp-mac.result | 18 -
src/tsp/test/doc-tsp-mac.test.sql | 2 -
src/tsp/test/doc-tsp-windows.result | 18 -
src/tsp/test/doc-tsp-windows.test.sql | 10 -
src/tsp/test/doc-tsp.result | 52 -
src/tsp/test/doc-tsp.test.sql | 36 -
src/tsp/test/test.conf | 6 +-
src/tsp/test/tsp-v2-0.result | 209 -
src/tsp/test/tsp-v2-0.test.sql | 138 -
src/vrp_basic/doc/CMakeLists.txt | 0
src/vrp_basic/doc/pgr_vrpOneDepot.rst | 24 -
src/vrp_basic/sql/CMakeLists.txt | 8 -
src/vrp_basic/sql/routing_vrp.sql | 45 -
src/vrp_basic/src/CMakeLists.txt | 4 -
src/vrp_basic/src/Tester.cpp | 250 -
src/vrp_basic/src/Utils.h | 112 -
src/vrp_basic/src/VRP.c | 862 -
src/vrp_basic/src/VRP.h | 78 -
src/vrp_basic/src/VRP_Solver.cpp | 887 -
src/vrp_basic/src/VRP_Solver.h | 414 -
src/vrp_basic/src/VRP_core.cpp | 227 -
src/vrp_basic/test/Distance.txt | 10100 -----------
src/vrp_basic/test/Orders.txt | 102 -
src/vrp_basic/test/VRP-any-01.data | 114 -
src/vrp_basic/test/VRP-any-01.result | 0
src/vrp_basic/test/VRP-any-01.test.sql | 27 -
src/vrp_basic/test/VRP-any-02.test.sql | 26 -
src/vrp_basic/test/Vehicles.txt | 21 -
src/vrp_basic/test/doc-pgr_vrpOneDepot.result | 256 +
src/vrp_basic/test/doc-pgr_vrpOneDepot.test.sql | 6 +
src/vrp_basic/test/oneDepotWrapper.result | 256 +
src/vrp_basic/test/oneDepotWrapper.test.sql | 6 +
src/vrp_basic/test/test.conf | 14 +-
src/vrppdtw/doc/doc-gsoc_vrppdtw.queries | 83 -
src/vrppdtw/doc/pgr_gsoc_vrppdtw.rst | 133 -
src/vrppdtw/sql/CMakeLists.txt | 7 -
src/vrppdtw/sql/gsoc_vrppdtw.sql | 19 -
src/vrppdtw/test/doc-gsoc_vrppdtw.result | 128 +-
src/vrppdtw/test/jet_customers.result | 96 -
src/vrppdtw/test/jet_customers.test.sql | 128 -
src/vrppdtw/test/pdp-any-02.result | 126 -
src/vrppdtw/test/pdp-any-02.test.sql | 3 -
src/vrppdtw/test/test.conf | 17 +-
src/withPoints/doc/doc-pgr_withPointsVia.queries | 37 -
src/withPoints/doc/doc-withPointsVia.queries | 100 -
src/withPoints/doc/pgr_withPoints.rst | 302 -
src/withPoints/doc/pgr_withPointsCost.rst | 295 -
src/withPoints/doc/pgr_withPointsDD.rst | 219 -
src/withPoints/doc/pgr_withPointsKSP.rst | 194 -
src/withPoints/doc/pgr_withPointsVia.rst | 200 -
src/withPoints/doc/withPoints-family.rst | 188 -
src/withPoints/sql/CMakeLists.txt | 9 -
src/withPoints/sql/withPoints.sql | 264 -
src/withPoints/sql/withPointsCost.sql | 132 -
src/withPoints/sql/withPointsVia.sql | 165 -
src/withPoints/src/CMakeLists.txt | 9 +-
src/withPoints/src/get_new_queries.cpp | 2 +-
src/withPoints/src/get_new_queries.h | 50 -
src/withPoints/src/many_to_many_withPoints.c | 258 -
.../src/many_to_many_withPoints_driver.cpp | 249 -
.../src/many_to_many_withPoints_driver.h | 79 -
src/withPoints/src/many_to_one_withPoints.c | 252 -
src/withPoints/src/one_to_many_withPoints.c | 266 -
src/withPoints/src/one_to_one_withPoints.c | 251 -
src/withPoints/src/pgr_withPoints.cpp | 3 +-
src/withPoints/src/pgr_withPoints.hpp | 4 +-
src/withPoints/src/withPoints.c | 281 +
src/withPoints/src/withPoints_driver.cpp | 251 +
src/withPoints/test/doc-pgr_withPoints.result | 303 +-
src/withPoints/test/doc-pgr_withPointsCost.result | 118 +-
src/withPoints/test/doc-pgr_withPointsDD.result | 138 +-
src/withPoints/test/doc-pgr_withPointsKSP.result | 188 +-
src/withPoints/test/test.conf | 1 +
tools/build-extension-update-files.pl | 277 -
tools/developer/run.sh | 100 +
tools/developer/translate.sh | 35 +
tools/doit | 23 -
tools/git-tools/pre-commit | 29 +-
tools/publish-doc.sh | 1 +
tools/release-scripts/check-release.sh | 332 +-
tools/release-scripts/compile-release.sh | 41 +-
tools/release-scripts/get_signatures.sh | 10 +-
tools/scripts/code_checker.sh | 66 +-
tools/scripts/fix_typos.sh | 7 +
.../sql-update-scripts/pgrouting--2.0.0--2.5.0.sql | 6575 +++++++
.../sql-update-scripts/pgrouting--2.0.1--2.5.0.sql | 6575 +++++++
.../sql-update-scripts/pgrouting--2.1.0--2.5.0.sql | 6673 +++++++
.../sql-update-scripts/pgrouting--2.2.0--2.5.0.sql | 6527 +++++++
.../sql-update-scripts/pgrouting--2.2.1--2.5.0.sql | 6527 +++++++
.../sql-update-scripts/pgrouting--2.2.2--2.5.0.sql | 6527 +++++++
.../sql-update-scripts/pgrouting--2.2.3--2.5.0.sql | 6527 +++++++
.../sql-update-scripts/pgrouting--2.2.4--2.5.0.sql | 6527 +++++++
.../sql-update-scripts/pgrouting--2.3.0--2.5.0.sql | 6561 +++++++
.../sql-update-scripts/pgrouting--2.3.1--2.5.0.sql | 6561 +++++++
.../sql-update-scripts/pgrouting--2.3.2--2.5.0.sql | 6561 +++++++
.../sql-update-scripts/pgrouting--2.4.0--2.5.0.sql | 6522 +++++++
.../sql-update-scripts/pgrouting--2.4.1--2.5.0.sql | 6522 +++++++
.../sql-update-scripts/pgrouting--2.4.2--2.5.0.sql | 6522 +++++++
tools/sql-update-scripts/pgrouting--2.5.0.sql | 6423 +++++++
tools/template/create.sh | 229 +-
tools/template/doc/pgr_function1.rst | 27 +-
.../pgtap/function1-compare-dijkstra.sql | 0
tools/template/pgtap/function1-innerQuery.sql | 21 +
tools/template/pgtap/function1-typesCheck.sql | 15 +
tools/template/sql/CMakeLists.txt | 18 +-
tools/template/src/function1.c | 55 +-
tools/template/src/function1_driver.cpp | 40 +-
tools/template/src/function1_driver.h | 9 +-
tools/template/test/doc-function1.result | 39 +-
tools/template/test/doc-function1.test.sql | 2 -
tools/template/test/pgtap/function1-innerQuery.sql | 116 -
tools/template/test/pgtap/types-check.sql | 54 -
tools/testers/algorithm-tester.pl | 132 +-
tools/testers/innerQuery.sql | 139 +
tools/testers/innerQuery_old.sql | 76 +
tools/testers/inner_styles.sql | 319 +
tools/testers/old_inner_styles.sql | 176 +
tools/testers/pg_prove_tests.sh | 41 +-
tools/testers/pickDeliver_pgtap_data.sql | 246 +-
tools/testers/sampledata.sql | 122 +-
tools/testers/setup_db.sql | 7 +-
tools/testers/update-tester.sh | 71 +-
.../testers/vrpOneDepot.data | 0
tools/testers/vrppdtw_data.sql | 124 +
tools/travis/pgrouting_build.sh | 3 +-
tools/winnie/package_pgrouting.sh | 6 +-
2315 files changed, 412236 insertions(+), 169721 deletions(-)
diff --git a/.gitignore b/.gitignore
index 7928713..ce3e265 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,9 +3,11 @@ build
fix_typos
code_linter
+tools/template/mycreate.sh
+*.sh
.DS_Store
.vagrant
tools/vagrant/packaging.sh
-*.mo
+tools/testers/pg_prove_dijkstraTRSP_tests.sh
.directory
notUsed
diff --git a/.travis.yml b/.travis.yml
index 5b553ee..1898da6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,5 @@
# ------------------------------------------------------------------------------
-# Travis CI scripts
+# Travis CI scripts
# Copyright(c) pgRouting Contributors
#
# Main configuration
@@ -71,12 +71,12 @@ before_script:
- ./tools/travis/check-extensions.sh $POSTGRESQL_VERSION ___pgr___test___
-script:
+script:
- ./tools/travis/pgrouting_build.sh $POSTGRESQL_VERSION $POSTGIS_VERSION
# tests as part of script so if a test fails the build fails
- ./tools/testers/pg_prove_tests.sh $PG_USER DEBUG
-after_script:
+#after_script:
- ./tools/travis/pgrouting_test.sh $POSTGRESQL_VERSION $PG_USER -ignorenotice
#after_success:
diff --git a/.tx/config b/.tx/config
index e2516c6..8509100 100644
--- a/.tx/config
+++ b/.tx/config
@@ -2,293 +2,383 @@
host = https://www.transifex.com
type = PO
-[pgrouting.doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/index.po
-source_file = doc/i18n/pot/doc/index.pot
+[pgrouting.pgr_analyzeGraph]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_analyzeGraph.po
+source_file = locale/pot/pgr_analyzeGraph.pot
source_lang = en
-[pgrouting.src--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/index.po
-source_file = doc/i18n/pot/src/index.pot
+[pgrouting.pgr_boykovKolmogorov]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_boykovKolmogorov.po
+source_file = locale/pot/pgr_boykovKolmogorov.pot
source_lang = en
-[pgrouting.doc--index_man]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/index_man.po
-source_file = doc/i18n/pot/doc/index_man.pot
+[pgrouting.withPoints-family]
+file_filter = locale/<lang>/LC_MESSAGES/withPoints-family.po
+source_file = locale/pot/withPoints-family.pot
source_lang = en
-[pgrouting.doc--src--tutorial--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/tutorial/index.po
-source_file = doc/i18n/pot/doc/src/tutorial/index.pot
+[pgrouting.cost-category]
+file_filter = locale/<lang>/LC_MESSAGES/cost-category.po
+source_file = locale/pot/cost-category.pot
source_lang = en
-[pgrouting.doc--src--tutorial--tutorial]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/tutorial/tutorial.po
-source_file = doc/i18n/pot/doc/src/tutorial/tutorial.pot
+[pgrouting.costMatrix-category]
+file_filter = locale/<lang>/LC_MESSAGES/costMatrix-category.po
+source_file = locale/pot/costMatrix-category.pot
source_lang = en
+[pgrouting.types_index]
+file_filter = locale/<lang>/LC_MESSAGES/types_index.po
+source_file = locale/pot/types_index.pot
+source_lang = en
+
+[pgrouting.pgr_maxFlow]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_maxFlow.po
+source_file = locale/pot/pgr_maxFlow.pot
+source_lang = en
+
+[pgrouting.pgr_withPointsDD]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_withPointsDD.po
+source_file = locale/pot/pgr_withPointsDD.pot
+source_lang = en
+
+[pgrouting.geom_result]
+file_filter = locale/<lang>/LC_MESSAGES/geom_result.po
+source_file = locale/pot/geom_result.pot
+source_lang = en
+
+[pgrouting.pgRouting-concepts]
+file_filter = locale/<lang>/LC_MESSAGES/pgRouting-concepts.po
+source_file = locale/pot/pgRouting-concepts.pot
+source_lang = en
+
+[pgrouting.bdDijkstra-family]
+file_filter = locale/<lang>/LC_MESSAGES/bdDijkstra-family.po
+source_file = locale/pot/bdDijkstra-family.pot
+source_lang = en
+
+[pgrouting.pgr_withPointsKSP]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_withPointsKSP.po
+source_file = locale/pot/pgr_withPointsKSP.pot
+source_lang = en
+
+[pgrouting.pgr_dijkstraCostMatrix]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_dijkstraCostMatrix.po
+source_file = locale/pot/pgr_dijkstraCostMatrix.pot
+source_lang = en
+
+[pgrouting.pgr_eucledianTSP]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_eucledianTSP.po
+source_file = locale/pot/pgr_eucledianTSP.pot
+source_lang = en
+
+[pgrouting.pgr_dijkstraCost]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_dijkstraCost.po
+source_file = locale/pot/pgr_dijkstraCost.pot
+source_lang = en
+
+[pgrouting.pgr_aStar]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_aStar.po
+source_file = locale/pot/pgr_aStar.pot
+source_lang = en
+
+[pgrouting.pgr_drivingDistance]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_drivingDistance.po
+source_file = locale/pot/pgr_drivingDistance.pot
+source_lang = en
+
+[pgrouting.aStar-family]
+file_filter = locale/<lang>/LC_MESSAGES/aStar-family.po
+source_file = locale/pot/aStar-family.pot
+source_lang = en
+
+[pgrouting.cost_result]
+file_filter = locale/<lang>/LC_MESSAGES/cost_result.po
+source_file = locale/pot/cost_result.pot
+source_lang = en
-[pgrouting.doc--src--tutorial--custom_wrapper]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po
-source_file = doc/i18n/pot/doc/src/tutorial/custom_wrapper.pot
+[pgrouting.pgr_withPointsCostMatrix]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_withPointsCostMatrix.po
+source_file = locale/pot/pgr_withPointsCostMatrix.pot
source_lang = en
-[pgrouting.doc--src--tutorial--performance]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/tutorial/performance.po
-source_file = doc/i18n/pot/doc/src/tutorial/performance.pot
+[pgrouting.pgr_gsoc_vrppdtw]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_gsoc_vrppdtw.po
+source_file = locale/pot/pgr_gsoc_vrppdtw.pot
source_lang = en
-[pgrouting.doc--src--tutorial--topology]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/tutorial/topology.po
-source_file = doc/i18n/pot/doc/src/tutorial/topology.pot
+[pgrouting.index]
+file_filter = locale/<lang>/LC_MESSAGES/index.po
+source_file = locale/pot/index.pot
source_lang = en
-[pgrouting.doc--src--tutorial--recipes]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/tutorial/recipes.po
-source_file = doc/i18n/pot/doc/src/tutorial/recipes.pot
+[pgrouting.pgr_trsp]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_trsp.po
+source_file = locale/pot/pgr_trsp.pot
source_lang = en
-[pgrouting.doc--src--tutorial--custom_query]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/tutorial/custom_query.po
-source_file = doc/i18n/pot/doc/src/tutorial/custom_query.pot
+[pgrouting.pgr_withPoints]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_withPoints.po
+source_file = locale/pot/pgr_withPoints.pot
source_lang = en
-[pgrouting.doc--src--tutorial--analytics]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/tutorial/analytics.po
-source_file = doc/i18n/pot/doc/src/tutorial/analytics.pot
+[pgrouting.pgr_bdDijkstra]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_bdDijkstra.po
+source_file = locale/pot/pgr_bdDijkstra.pot
source_lang = en
-[pgrouting.doc--src--developer--discontinued]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/developer/discontinued.po
-source_file = doc/i18n/pot/doc/src/developer/discontinued.pot
+[pgrouting.routingFunctions]
+file_filter = locale/<lang>/LC_MESSAGES/routingFunctions.po
+source_file = locale/pot/routingFunctions.pot
source_lang = en
-[pgrouting.doc--src--developer--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/developer/index.po
-source_file = doc/i18n/pot/doc/src/developer/index.pot
+[pgrouting.pgr_vrpOneDepot]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_vrpOneDepot.po
+source_file = locale/pot/pgr_vrpOneDepot.pot
source_lang = en
-[pgrouting.doc--src--developer--sampledata]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/developer/sampledata.po
-source_file = doc/i18n/pot/doc/src/developer/sampledata.pot
+[pgrouting.pgr_TSP]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_TSP.po
+source_file = locale/pot/pgr_TSP.pot
source_lang = en
-[pgrouting.doc--src--introduction--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/introduction/index.po
-source_file = doc/i18n/pot/doc/src/introduction/index.pot
+[pgrouting.drivingDistance-category]
+file_filter = locale/<lang>/LC_MESSAGES/drivingDistance-category.po
+source_file = locale/pot/drivingDistance-category.pot
source_lang = en
-[pgrouting.doc--src--introduction--introduction]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/introduction/introduction.po
-source_file = doc/i18n/pot/doc/src/introduction/introduction.pot
+[pgrouting.contraction-family]
+file_filter = locale/<lang>/LC_MESSAGES/contraction-family.po
+source_file = locale/pot/contraction-family.pot
source_lang = en
-[pgrouting.doc--src--introduction--support]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/introduction/support.po
-source_file = doc/i18n/pot/doc/src/introduction/support.pot
+[pgrouting.bdAstar-family]
+file_filter = locale/<lang>/LC_MESSAGES/bdAstar-family.po
+source_file = locale/pot/bdAstar-family.pot
source_lang = en
-[pgrouting.doc--src--changelog--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/changelog/index.po
-source_file = doc/i18n/pot/doc/src/changelog/index.pot
+[pgrouting.sampledata]
+file_filter = locale/<lang>/LC_MESSAGES/sampledata.po
+source_file = locale/pot/sampledata.pot
source_lang = en
-[pgrouting.doc--src--changelog--1_x]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/changelog/1_x.po
-source_file = doc/i18n/pot/doc/src/changelog/1_x.pot
+[pgrouting.pgr_pushRelabel]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_pushRelabel.po
+source_file = locale/pot/pgr_pushRelabel.pot
source_lang = en
-[pgrouting.doc--src--changelog--2_0]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/changelog/2_0.po
-source_file = doc/i18n/pot/doc/src/changelog/2_0.pot
+[pgrouting.pgr_labelGraph]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_labelGraph.po
+source_file = locale/pot/pgr_labelGraph.pot
source_lang = en
-[pgrouting.doc--src--installation--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/installation/index.po
-source_file = doc/i18n/pot/doc/src/installation/index.pot
+[pgrouting.pgr_pointsAsPolygon]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_pointsAsPolygon.po
+source_file = locale/pot/pgr_pointsAsPolygon.pot
source_lang = en
-[pgrouting.doc--src--installation--build]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/doc/src/installation/build.po
-source_file = doc/i18n/pot/doc/src/installation/build.pot
+[pgrouting.pgr_nodeNetwork]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_nodeNetwork.po
+source_file = locale/pot/pgr_nodeNetwork.pot
source_lang = en
-[pgrouting.src--common--doc--types--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/types/index.po
-source_file = doc/i18n/pot/src/common/doc/types/index.pot
+[pgrouting.proposed]
+file_filter = locale/<lang>/LC_MESSAGES/proposed.po
+source_file = locale/pot/proposed.pot
source_lang = en
-[pgrouting.src--common--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/index.po
-source_file = doc/i18n/pot/src/common/doc/index.pot
+[pgrouting.pgRouting-installation]
+file_filter = locale/<lang>/LC_MESSAGES/pgRouting-installation.po
+source_file = locale/pot/pgRouting-installation.pot
source_lang = en
-[pgrouting.src--common--doc--legacy]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/legacy.po
-source_file = doc/i18n/pot/src/common/doc/legacy.pot
+[pgrouting.pgr_alphaShape]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_alphaShape.po
+source_file = locale/pot/pgr_alphaShape.pot
source_lang = en
-[pgrouting.src--common--doc--types--geom_result]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/types/geom_result.po
-source_file = doc/i18n/pot/src/common/doc/types/geom_result.pot
+[pgrouting.pgr_aStarCost]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_aStarCost.po
+source_file = locale/pot/pgr_aStarCost.pot
source_lang = en
-[pgrouting.src--common--doc--types--cost_result]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/types/cost_result.po
-source_file = doc/i18n/pot/src/common/doc/types/cost_result.pot
+[pgrouting.dijkstra-family]
+file_filter = locale/<lang>/LC_MESSAGES/dijkstra-family.po
+source_file = locale/pot/dijkstra-family.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/index.po
-source_file = doc/i18n/pot/src/common/doc/utilities/index.pot
+[pgrouting.pgr_dijkstra]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_dijkstra.po
+source_file = locale/pot/pgr_dijkstra.pot
source_lang = en
-[pgrouting.src--common--doc--functions--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/functions/index.po
-source_file = doc/i18n/pot/src/common/doc/functions/index.pot
+[pgrouting.pgr_withPointsCost]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_withPointsCost.po
+source_file = locale/pot/pgr_withPointsCost.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--versionless]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/versionless.po
-source_file = doc/i18n/pot/src/common/doc/utilities/versionless.pot
+[pgrouting.pgr_bdDijkstraCostMatrix]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
+source_file = locale/pot/pgr_bdDijkstraCostMatrix.pot
source_lang = en
-[pgrouting.src--common--doc--functions--analyze_graph]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/functions/analyze_graph.po
-source_file = doc/i18n/pot/src/common/doc/functions/analyze_graph.pot
+[pgrouting.pgr_version]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_version.po
+source_file = locale/pot/pgr_version.pot
source_lang = en
-[pgrouting.src--common--doc--functions--create_vert_table]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/functions/create_vert_table.po
-source_file = doc/i18n/pot/src/common/doc/functions/create_vert_table.pot
+[pgrouting.pgRouting-introduction]
+file_filter = locale/<lang>/LC_MESSAGES/pgRouting-introduction.po
+source_file = locale/pot/pgRouting-introduction.pot
source_lang = en
-[pgrouting.src--common--doc--functions--create_topology]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/functions/create_topology.po
-source_file = doc/i18n/pot/src/common/doc/functions/create_topology.pot
+[pgrouting.pgr_floydWarshall]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_floydWarshall.po
+source_file = locale/pot/pgr_floydWarshall.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--is_column_in_table]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po
-source_file = doc/i18n/pot/src/common/doc/utilities/is_column_in_table.pot
+[pgrouting.pgr_aStarCostMatrix]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_aStarCostMatrix.po
+source_file = locale/pot/pgr_aStarCostMatrix.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--version]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/version.po
-source_file = doc/i18n/pot/src/common/doc/utilities/version.pot
+[pgrouting.pgr_edmondsKarp]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_edmondsKarp.po
+source_file = locale/pot/pgr_edmondsKarp.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--get_table_name]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/get_table_name.po
-source_file = doc/i18n/pot/src/common/doc/utilities/get_table_name.pot
+[pgrouting.release_notes]
+file_filter = locale/<lang>/LC_MESSAGES/release_notes.po
+source_file = locale/pot/release_notes.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--start_point]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/start_point.po
-source_file = doc/i18n/pot/src/common/doc/utilities/start_point.pot
+[pgrouting.pgr_bdAstarCost]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_bdAstarCost.po
+source_file = locale/pot/pgr_bdAstarCost.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--end_point]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/end_point.po
-source_file = doc/i18n/pot/src/common/doc/utilities/end_point.pot
+[pgrouting.support]
+file_filter = locale/<lang>/LC_MESSAGES/support.po
+source_file = locale/pot/support.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--get_column_name]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/get_column_name.po
-source_file = doc/i18n/pot/src/common/doc/utilities/get_column_name.pot
+[pgrouting.pgr_dijkstraVia]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_dijkstraVia.po
+source_file = locale/pot/pgr_dijkstraVia.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--quote_ident]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/quote_ident.po
-source_file = doc/i18n/pot/src/common/doc/utilities/quote_ident.pot
+[pgrouting.pgr_bdDijkstraCost]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_bdDijkstraCost.po
+source_file = locale/pot/pgr_bdDijkstraCost.pot
source_lang = en
-[pgrouting.src--common--doc--functions--node_network]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/functions/node_network.po
-source_file = doc/i18n/pot/src/common/doc/functions/node_network.pot
+[pgrouting.flow-family]
+file_filter = locale/<lang>/LC_MESSAGES/flow-family.po
+source_file = locale/pot/flow-family.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--point_to_id]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/point_to_id.po
-source_file = doc/i18n/pot/src/common/doc/utilities/point_to_id.pot
+[pgrouting.pgr_edgeDisjointPaths]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_edgeDisjointPaths.po
+source_file = locale/pot/pgr_edgeDisjointPaths.pot
source_lang = en
-[pgrouting.src--common--doc--utilities--is_column_indexed]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po
-source_file = doc/i18n/pot/src/common/doc/utilities/is_column_indexed.pot
+[pgrouting.allpairs-family]
+file_filter = locale/<lang>/LC_MESSAGES/allpairs-family.po
+source_file = locale/pot/allpairs-family.pot
source_lang = en
-[pgrouting.src--common--doc--functions--analyze_oneway]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po
-source_file = doc/i18n/pot/src/common/doc/functions/analyze_oneway.pot
+[pgrouting.pgr_KSP]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_KSP.po
+source_file = locale/pot/pgr_KSP.pot
source_lang = en
-[pgrouting.src--driving_distance--doc--dd_driving_distance]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po
-source_file = doc/i18n/pot/src/driving_distance/doc/dd_driving_distance.pot
+[pgrouting.pgr_analyzeOneWay]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_analyzeOneWay.po
+source_file = locale/pot/pgr_analyzeOneWay.pot
source_lang = en
-[pgrouting.src--driving_distance--doc--dd_points_as_polygon]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po
-source_file = doc/i18n/pot/src/driving_distance/doc/dd_points_as_polygon.pot
+[pgrouting.pgr_bdAstar]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_bdAstar.po
+source_file = locale/pot/pgr_bdAstar.pot
source_lang = en
-[pgrouting.src--driving_distance--doc--dd_alphashape]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po
-source_file = doc/i18n/pot/src/driving_distance/doc/dd_alphashape.pot
+[pgrouting.pgr_bdAstarCostMatrix]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_bdAstarCostMatrix.po
+source_file = locale/pot/pgr_bdAstarCostMatrix.pot
source_lang = en
-[pgrouting.src--driving_distance--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/driving_distance/doc/index.po
-source_file = doc/i18n/pot/src/driving_distance/doc/index.pot
+[pgrouting.pgr_createVerticesTable]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_createVerticesTable.po
+source_file = locale/pot/pgr_createVerticesTable.pot
source_lang = en
-[pgrouting.src--kdijkstra--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/kdijkstra/doc/index.po
-source_file = doc/i18n/pot/src/kdijkstra/doc/index.pot
+[pgrouting.topology-functions]
+file_filter = locale/<lang>/LC_MESSAGES/topology-functions.po
+source_file = locale/pot/topology-functions.pot
source_lang = en
-[pgrouting.src--tsp--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/tsp/doc/index.po
-source_file = doc/i18n/pot/src/tsp/doc/index.pot
+[pgrouting.pgr_johnson]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_johnson.po
+source_file = locale/pot/pgr_johnson.pot
source_lang = en
-[pgrouting.src--bd_astar--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/bd_astar/doc/index.po
-source_file = doc/i18n/pot/src/bd_astar/doc/index.pot
+[pgrouting.pgr_contractGraph]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_contractGraph.po
+source_file = locale/pot/pgr_contractGraph.pot
source_lang = en
-[pgrouting.src--apsp_johnson--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/apsp_johnson/doc/index.po
-source_file = doc/i18n/pot/src/apsp_johnson/doc/index.pot
+[pgrouting.pgr_createTopology]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_createTopology.po
+source_file = locale/pot/pgr_createTopology.pot
source_lang = en
-[pgrouting.src--dijkstra--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/dijkstra/doc/index.po
-source_file = doc/i18n/pot/src/dijkstra/doc/index.pot
+[pgrouting.TSP-family]
+file_filter = locale/<lang>/LC_MESSAGES/TSP-family.po
+source_file = locale/pot/TSP-family.pot
source_lang = en
-[pgrouting.src--bd_dijkstra--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/bd_dijkstra/doc/index.po
-source_file = doc/i18n/pot/src/bd_dijkstra/doc/index.pot
+[pgrouting.pgr_maxCardinalityMatch]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_maxCardinalityMatch.po
+source_file = locale/pot/pgr_maxCardinalityMatch.pot
source_lang = en
-[pgrouting.src--apsp_warshall--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/apsp_warshall/doc/index.po
-source_file = doc/i18n/pot/src/apsp_warshall/doc/index.pot
+[pgrouting.KSP-category]
+file_filter = locale/<lang>/LC_MESSAGES/KSP-category.po
+source_file = locale/pot/KSP-category.pot
source_lang = en
-[pgrouting.src--astar--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/astar/doc/index.po
-source_file = doc/i18n/pot/src/astar/doc/index.pot
+[pgrouting.components-family]
+file_filter = locale/<lang>/LC_MESSAGES/components-family.po
+source_file = locale/pot/components-family.pot
source_lang = en
-[pgrouting.src--trsp--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/trsp/doc/index.po
-source_file = doc/i18n/pot/src/trsp/doc/index.pot
+[pgrouting.pgr_articulationPoints]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_articulationPoints.po
+source_file = locale/pot/pgr_articulationPoints.pot
source_lang = en
-[pgrouting.src--ksp--doc--index]
-file_filter = doc/i18n/<lang>/LC_MESSAGES/src/ksp/doc/index.po
-source_file = doc/i18n/pot/src/ksp/doc/index.pot
+[pgrouting.pgr_biconnectedComponents]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_biconnectedComponents.po
+source_file = locale/pot/pgr_biconnectedComponents.pot
source_lang = en
+
+[pgrouting.pgr_bridges]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_bridges.po
+source_file = locale/pot/pgr_bridges.pot
+source_lang = en
+
+[pgrouting.pgr_connectedComponents]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_connectedComponents.po
+source_file = locale/pot/pgr_connectedComponents.pot
+source_lang = en
+
+[pgrouting.pgr_lineGraph]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_lineGraph.po
+source_file = locale/pot/pgr_lineGraph.pot
+source_lang = en
+
+[pgrouting.pgr_strongComponents]
+file_filter = locale/<lang>/LC_MESSAGES/pgr_strongComponents.po
+source_file = locale/pot/pgr_strongComponents.pot
+source_lang = en
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8b14a3d..9399e77 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -46,8 +46,8 @@ project(PGROUTING)
#---------------------------------------------
#---------------------------------------------
-if(POLICY CMP0046)
- cmake_policy(SET CMP0046 OLD)
+if(POLICY CMP0054)
+ cmake_policy(SET CMP0054 OLD)
endif()
if(MSVC)
@@ -66,79 +66,46 @@ endif()
# - <directory>/src/CMakelists.txt must exist
# - <directory>/sql/CMakeLists.txt must exist
#----------------------
+configure_file("configuration.conf" "configuration.conf")
+file(STRINGS configuration.conf PgRouting_CONFIGURATION_FILE)
+
+set(PgRouting_SOURCE_NAMES "")
+set(PgRouting_SQL_DIRECTORIES "")
+set(PgRouting_DOC_DIRECTORIES "")
+foreach(line ${PgRouting_CONFIGURATION_FILE})
+ string(REGEX REPLACE "^(#).*" "\\1" comment ${line})
+ if("${comment}" MATCHES "#")
+ continue()
+ endif()
+ string(REGEX REPLACE "^(.*)\\|(.*)\\|(.*)\\|(.*)" "\\1" directory ${line})
+ string(REGEX REPLACE "^(.*)\\|(.*)\\|(.*)\\|(.*)" "\\2" has_code ${line})
+ string(REGEX REPLACE "^(.*)\\|(.*)\\|(.*)\\|(.*)" "\\3" has_sql ${line})
+ string(REGEX REPLACE "^(.*)\\|(.*)\\|(.*)\\|(.*)" "\\4" has_doc ${line})
-set(PgRouting_SOURCE_NAMES
-
- #----------------------
- # "common" must be first can not be removed
- #----------------------
- "common"
-
- #----------------------
- # "dijkstra" can not be removed
- # Has the command needed to link with prostgresl
- #----------------------
- "dijkstra"
-
- #----------------------
- # Directories that have being rewritten
- #----------------------
- "allpairs"
- "astar"
- "driving_distance"
- "ksp"
- "tsp"
-
- #----------------------
- # Code needs to be rewritten
- #----------------------
- "alpha_shape"
- "bd_astar"
- "bdDijkstra" # 2.4
- "trsp"
-
- #----------------------
- # Proposed
- # - Not officially on the release
- # - number indicates version when was propsosed with code
- #----------------------
- "max_flow" # 2.3
- "contraction" # 2.3
- "pickDeliver" # 2.3
- "vrp_basic" # 2.0
- "withPoints" # 2.2
-
- # template generated name
- #"funnyDijkstra"
+ string(STRIP ${directory} directory)
+ string(STRIP ${has_code} has_code)
+ string(STRIP ${has_sql} has_sql)
+ string(STRIP ${has_doc} has_doc)
+
+
+ if( ${has_code} MATCHES "Y")
+ list(APPEND PgRouting_SOURCE_NAMES "${directory}")
+ endif()
+ if( ${has_sql} MATCHES "Y")
+ list(APPEND PgRouting_SQL_DIRECTORIES "${directory}")
+ endif()
+ if( ${has_doc} MATCHES "Y")
+ list(APPEND PgRouting_DOC_DIRECTORIES "${directory}")
+ endif()
+endforeach()
+
+if (PGROUTING_DEBUG)
+ message(STATUS "${PgRouting_SOURCE_NAMES}")
+ message(STATUS "${PgRouting_SQL_DIRECTORIES}")
+ message(STATUS "${PgRouting_DOC_DIRECTORIES}")
+endif()
- )
-#-----------------------------------------------------------------------------
-# Name of the directories containing only SQL files
-#
-# - <directory>/sql/CMakeLists.txt must exist
-#-----------------------------------------------------------------------------
-set(PgRouting_SQL_DIRECTORIES
-
- "topology" # needs to be revised
-
- #----------------------
- # Proposed
- # Not officially on the release
- #----------------------
- "convenience" # most are deprecated
- "label_graph" # needs to be rewritten using Boost
- "costMatrix" # proposed on 2.3
-
- #----------------------
- # Wrappers for backwards compatibility
- #----------------------
- "bd_dijkstra" # 2.0 wrap of pgr_bdDijkstra
- "apsp_johnson" # 2.0 wrap of pgr_johnson
- "apsp_warshall" # 2.0 wrap of pgr_warshall
- "kdijkstra" # 2.0 wrap of pgr_dijkstra & pgr_dijkstraCost
- "vrppdtw" # 2.1 wraps of _pgr_pickDeliver
- )
#---------------------------------------------
# minimum versions
@@ -183,7 +150,8 @@ CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS GNU_CXX_MINIMUM_VERSION)
- message(FATAL_ERROR "GCC version must be at least ${GNU_CXX_MINIMUM_VERSION}!")
+ message(FATAL_ERROR "GCC version must be at least ${GNU_CXX_MINIMUM_VERSION}!
+ Found version ${CMAKE_CXX_COMPILER_VERSION}")
endif()
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS MSVC_CXX_MINIMUM_VERSION)
@@ -195,8 +163,10 @@ endif()
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+ message(STATUS "Using -std=c++11.")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+ message(STATUS "Using -std=c++0x.")
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++0x or C++11 flags support.")
endif()
@@ -211,8 +181,8 @@ endif()
#-----------------------------------------------------------------------------
set(PGROUTING_VERSION_MAJOR "2")
-set(PGROUTING_VERSION_MINOR "4")
-set(PGROUTING_VERSION_PATCH "2")
+set(PGROUTING_VERSION_MINOR "5")
+set(PGROUTING_VERSION_PATCH "0")
set(PGROUTING_VERSION_DEV "")
set(PGROUTING_SHORT_VERSION "${PGROUTING_VERSION_MAJOR}.${PGROUTING_VERSION_MINOR}")
@@ -225,10 +195,15 @@ set(PGROUTING_FULL_VERSION "v${PGROUTING_VERSION}${PGROUTING_VERSION_DEV}")
#---------------------------------------------
file(STRINGS "${PGROUTING_SOURCE_DIR}/VERSION" PGROUTING_BUILD_STRING)
-#string(REGEX REPLACE "^(.+)-([^-]+)-[0-9]+-([0-9a-f]+) (.*)$" "\\2" PGROUTING_GIT_BUILD ${PGROUTING_BUILD_STRING})
+set(PGROUTING_GIT_HASH "")
string(REGEX REPLACE "^([0-9]+)-([0-9a-f]+) (.*)$" "\\2" PGROUTING_GIT_HASH ${PGROUTING_BUILD_STRING})
string(REGEX REPLACE "^([0-9]+)-([0-9a-f]+) (.*)$" "\\3" PGROUTING_GIT_BRANCH ${PGROUTING_BUILD_STRING})
+if ( NOT "${PGROUTING_GIT_BRANCH}" STREQUAL "master")
+ set (PGROUTING_GIT_HASH "")
+ set (PGROUTING_GIT_BRANCH "")
+endif()
+
if (PGROUTING_DEBUG)
message(STATUS "PGROUTING_VERSION: ${PGROUTING_FULL_VERSION}")
@@ -242,6 +217,12 @@ if (PGROUTING_DEBUG)
message(STATUS "CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}")
endif()
+#----------------------
+# PGROUTING library name used in the pgr_functions
+# '$libdir/${PGROUTING_LIBRARY_NAME}'
+#----------------------
+set(PGROUTING_LIBRARY_NAME "libpgrouting-${PGROUTING_SHORT_VERSION}")
+
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
@@ -310,19 +291,19 @@ endif(NOT PERL_EXECUTABLE)
#---------------------------------------------
find_package(PostgreSQL)
if(NOT POSTGRESQL_FOUND)
- message(FATAL_ERROR " Please check your PostgreSQL installation.")
+ message(FATAL_ERROR " Please check your PostgreSQL installation.")
endif(NOT POSTGRESQL_FOUND)
if(NOT POSTGRESQL_VERSION_STRING)
message(FATAL_ERROR "pg_config was not found. Please check your PostgreSQL installation!")
-endif(NOT POSTGRESQL_VERSION_STRING)
+endif()
string(SUBSTRING "${POSTGRESQL_VERSION_STRING}" 11 -1 POSTGRESQL_VERSION)
# for XbetaY XalphaY XrcY -> X.Y
string(REGEX REPLACE "^([0-9]+)[beta|alpha|rc].*" "\\1.0" POSTGRESQL_VERSION ${POSTGRESQL_VERSION})
-#for X.Y.Z -> XY Y<10
+#for X.Y.Z -> XY Y<10
string(REGEX REPLACE "^([0-9]+)\\.([0-9]+).*" "\\1\\2" PGSQL_VERSION ${POSTGRESQL_VERSION})
@@ -340,9 +321,8 @@ if(WIN32)
endif(WIN32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DPGSQL_VERSION=${PGSQL_VERSION}")
+set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DPGSQL_VERSION=${PGSQL_VERSION}")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DPGSQL_VERSION=${PGSQL_VERSION}")
-message(STATUS "PGSQL_VERSION=${PGSQL_VERSION}")
-
#---------------------------------------------
@@ -354,10 +334,9 @@ find_package(Boost ${BOOST_MINIMUM_VERSION})
if(Boost_INCLUDE_DIRS)
message(STATUS "Boost headers were found here: ${Boost_INCLUDE_DIRS}")
else(Boost_INCLUDE_DIRS)
- message(FATAL_ERROR " Please check your Boost installation ")
+ message(FATAL_ERROR " Please check your Boost installation ")
endif(Boost_INCLUDE_DIRS)
-#-------
include_directories(${Boost_INCLUDE_DIRS})
@@ -383,6 +362,7 @@ include_directories(${CGAL_INCLUDE_DIR})
set(PGROUTING_INCLUDE_DIRECTORIES
${PGROUTING_SOURCE_DIR}/src/common/src
${PGROUTING_SOURCE_DIR}/src/dijkstra/src
+ ${PGROUTING_SOURCE_DIR}/include
)
#-------
@@ -473,24 +453,28 @@ endif()
#compiler directives
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+# for UNIX & JENKINS
if(UNIX OR (WIN32 AND NOT MSVC))
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
endif()
-
-CHECK_C_COMPILER_FLAG("-frounding-math" C_COMPILER_SUPPORTS_ROUNDING_MATH)
-CHECK_CXX_COMPILER_FLAG("-frounding-math" CXX_COMPILER_SUPPORTS_ROUNDING_MATH)
-
-
if(NOT WIN32)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC ")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC ")
+ CHECK_C_COMPILER_FLAG("-fPIC" C_COMPILER_SUPPORTS_FPIC)
+ CHECK_CXX_COMPILER_FLAG("-fPIC" CXX_COMPILER_SUPPORTS_FPIC)
+ if(C_COMPILER_SUPPORTS_FPIC)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC ")
+ endif()
+ if(CXX_COMPILER_SUPPORTS_FPIC)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC ")
+ endif()
endif()
if(WIN32 AND MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS}")
endif()
+CHECK_C_COMPILER_FLAG("-frounding-math" C_COMPILER_SUPPORTS_ROUNDING_MATH)
+CHECK_CXX_COMPILER_FLAG("-frounding-math" CXX_COMPILER_SUPPORTS_ROUNDING_MATH)
if(C_COMPILER_SUPPORTS_ROUNDING_MATH)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -frounding-math ")
endif()
@@ -498,8 +482,11 @@ if(CXX_COMPILER_SUPPORTS_ROUNDING_MATH)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frounding-math ")
endif()
-set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wconversion -pedantic -Wmissing-prototypes -Wunused -Wuninitialized -Wextra -Wdouble-promotion")
-set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -fno-implicit-inline-templates -Wconversion -pedantic -Wunused -Wuninitialized -Wextra -Wdouble-promotion")
+# TODO use -Werror when TRSP gets rewritten
+set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wconversion -pedantic -Wmissing-prototypes -W -Wunused -Wuninitialized -Wextra -Wdouble-promotion")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -fno-implicit-inline-templates -Wconversion -pedantic -W -Wunused -Wuninitialized -Wextra -Wdouble-promotion")
+
+
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -530,7 +517,7 @@ if(WITH_INTERNAL_TESTS)
endif()
#-------------------
-# add the subdirectories that have the C/C++ code
+# add the subdirectories that have the C/C++ code
#-------------------
foreach (subdir ${PgRouting_SOURCE_NAMES})
@@ -575,18 +562,10 @@ message("Building the library names")
set(PGROUTING_LIB_NAME "pgrouting-${PGROUTING_SHORT_VERSION}")
-#----------------------
-# PGROUTING library name used in the pgr_functions
-# '$libdir/${PGROUTING_LIBRARY_NAME}'
-#----------------------
-set(PGROUTING_LIBRARY_NAME "libpgrouting-${PGROUTING_SHORT_VERSION}")
-
add_library(${PGROUTING_LIB_NAME}
${LIBRARY_MODE_TARGET}
${PGROUTING_OBJECTS})
-install(TARGETS ${PGROUTING_LIB_NAME} DESTINATION ${LIBRARY_INSTALL_PATH})
-
if(APPLE)
@@ -598,59 +577,29 @@ if(WIN32 AND MSVC)
set_target_properties(${PGROUTING_LIB_NAME} PROPERTIES PREFIX "lib")
endif(WIN32 AND MSVC)
-#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-#
-# Handling SQL files
-#
-#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-#
-add_custom_target(build-time-sql-directory ALL
- COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/sql_queries")
-
-set(TEMP_LIB_FILENAME "${CMAKE_BINARY_DIR}/sql_queries/lib-pgrouting--version.sql.in")
-file(WRITE ${TEMP_LIB_FILENAME} "")
-
-#-------------------
-# add the subdirectories that have the SQL files
-#-------------------
-
-set(PgRouting_SQL_DIRECTORIES
- ${PgRouting_SOURCE_NAMES}
- ${PgRouting_SQL_DIRECTORIES})
-
-set(PACKAGE_SQL_FILES "")
-foreach (subdir ${PgRouting_SQL_DIRECTORIES})
- add_subdirectory("${PGROUTING_SOURCE_DIR}/src/${subdir}/sql")
-endforeach()
+#-----------------------------------------------------------------------------
+#-----------------------------------------------------------------------------
+# sql subdirectory creates the files:
+# pgrouting--(version).sql
+# pgrouting--(oldVersion)--(version).sql
+#-----------------------------------------------------------------------------
+#-----------------------------------------------------------------------------
+add_subdirectory(sql)
-if (CDEBUG)
- foreach (files ${PACKAGE_SQL_FILES})
- message("${files}")
- endforeach()
-endif()
+#-----------------------------------------------------------------------------
+#-----------------------------------------------------------------------------
+# INSTALLATION
+#-----------------------------------------------------------------------------
+#-----------------------------------------------------------------------------
-ADD_CUSTOM_TARGET(ProcessSQLFiles ALL)
-foreach(file_in ${PACKAGE_SQL_FILES})
- get_filename_component(file_name ${file_in} NAME)
- set(file_out "${CMAKE_BINARY_DIR}/sql_queries/${file_name}")
- configure_file(${file_in} ${file_out})
-
- add_dependencies(ProcessSQLFiles ${file_in})
- file(READ "${file_out}" CONTENTS)
- string(REGEX REPLACE "/\\*PGR-(GNU|MIT).*PGR-(GNU|MIT)\\*/" "" STRIP_CONTENTS "${CONTENTS}")
- string(REGEX REPLACE "/\\*FOR.*USER\\*/" "" CONTENTS "${STRIP_CONTENTS}")
- file(APPEND ${TEMP_LIB_FILENAME} "${CONTENTS}")
-endforeach()
-configure_file("${TEMP_LIB_FILENAME}"
- "${CMAKE_BINARY_DIR}/lib/pgrouting--${PGROUTING_VERSION}.sql"
+install(TARGETS ${PGROUTING_LIB_NAME} DESTINATION ${LIBRARY_INSTALL_PATH})
+install(FILES
+ ${PgRouting_SQL_FILES_TO_INSTALL}
+ DESTINATION "${SHARE_DIR}"
)
-message(STATUS "Created ${CMAKE_BINARY_DIR}/lib/pgrouting--${PGROUTING_VERSION}.sql")
-#
-#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
@@ -661,58 +610,8 @@ add_subdirectory(doxygen)
add_subdirectory(doc)
-#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-# Handling pgrouting.control.in files
-#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-#
-configure_file("${PGROUTING_SOURCE_DIR}/src/common/sql/pgrouting.control.in"
- "${CMAKE_BINARY_DIR}/lib/pgrouting.control")
-
-message(STATUS "Created ${CMAKE_BINARY_DIR}/lib/pgrouting.control")
-#
-#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-
-
-# create the signature file for this release
-message(STATUS "Creating lib/pgrouting--${PGROUTING_VERSION}.sig")
-execute_process(
- COMMAND cp ${PGROUTING_SOURCE_DIR}/tools/curr-sig/pgrouting--${PGROUTING_VERSION}.sig ${CMAKE_BINARY_DIR}/lib/pgrouting--${PGROUTING_VERSION}.sig
- #COMMAND ${PERL_EXECUTABLE} ${PGROUTING_SOURCE_DIR}/tools/mk-signature-file.pl ${PGROUTING_VERSION}
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
- RESULT_VARIABLE SIG_RESULT
- )
-if(SIG_RESULT)
- message(FATAL_ERROR "SIG_RESULT: ${SIG_RESULT}")
-endif(SIG_RESULT)
-
-# create the extension update scripts
-execute_process(
- COMMAND ${PERL_EXECUTABLE} ${PGROUTING_SOURCE_DIR}/tools/build-extension-update-files.pl ${PGROUTING_VERSION} ${PGROUTING_SOURCE_DIR}
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
- RESULT_VARIABLE UPDATE_RESULT
- )
-if(UPDATE_RESULT)
- message(FATAL_ERROR "UPDATE_RESULT: ${UPDATE_RESULT}")
-endif()
-
-# make a list of the files we need to install for version updates
-file(GLOB VERSION_UPDATE_FILES "${CMAKE_BINARY_DIR}/lib/pgrouting--*--*.sql")
-
-# this will create the commands in the makefile under the install target
-if(UNIX)
- file(GLOB_RECURSE LIBS_TO_INSTALL "${CMAKE_BINARY_DIR}/lib/*.so")
-else()
- file(GLOB_RECURSE LIBS_TO_INSTALL "${CMAKE_BINARY_DIR}/lib/*.dll")
+if (PGROUTING_DEBUG)
+ foreach (f ${PgRouting_SQL_FILES})
+ message(STATUS ${f})
+ endforeach()
endif()
-
-message(STATUS "LIBS_TO_INSTALL=${LIBS_TO_INSTALL}")
-
-install(FILES ${LIBS_TO_INSTALL} DESTINATION ${LIB_DIR})
-
-install(FILES
- "${CMAKE_BINARY_DIR}/lib/pgrouting--${PGROUTING_VERSION}.sql"
- "${CMAKE_BINARY_DIR}/lib/pgrouting.control"
- ${VERSION_UPDATE_FILES}
- DESTINATION "${SHARE_DIR}")
-
diff --git a/NEWS b/NEWS
index d4d5bf0..b6ef694 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,68 @@
+pgRouting 2.5.0 Release Notes
+-------------------------------------------------------------------------------
+
+To see the issues closed by this release see the [Git closed issues for 2.5.0 ](https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.5.0%22+is%3Aclosed) on Github.
+
+
+*enhancement:*
+
+* pgr_version is now on SQL language
+
+*Breaking change on:*
+
+* pgr_edgeDisjointPaths:
+
+ * Added path_id, cost and agg_cost columns on the result
+ * Parameter names changed
+ * The many version results are the union of the one to one version
+
+*New Signatures:*
+
+* pgr_bdAstar(one to one)
+
+*New Proposed functions*
+
+* pgr_bdAstar(one to many)
+* pgr_bdAstar(many to one)
+* pgr_bdAstar(many to many)
+* pgr_bdAstarCost(one to one)
+* pgr_bdAstarCost(one to many)
+* pgr_bdAstarCost(many to one)
+* pgr_bdAstarCost(many to many)
+* pgr_bdAstarCostMatrix
+* pgr_bdDijkstra(one to many)
+* pgr_bdDijkstra(many to one)
+* pgr_bdDijkstra(many to many)
+* pgr_bdDijkstraCost(one to one)
+* pgr_bdDijkstraCost(one to many)
+* pgr_bdDijkstraCost(many to one)
+* pgr_bdDijkstraCost(many to many)
+* pgr_bdDijkstraCostMatrix
+* pgr_lineGraph
+* pgr_connectedComponents
+* pgr_strongComponents
+* pgr_biconnectedComponents
+* pgr_articulationPoints
+* pgr_bridges
+
+*Deprecated Signatures*
+
+* pgr_bdastar - use pgr_bdAstar instead
+
+*Renamed Functions*
+
+* pgr_maxFlowPushRelabel - use pgr_pushRelabel instead
+* pgr_maxFlowEdmondsKarp -use pgr_edmondsKarp instead
+* pgr_maxFlowBoykovKolmogorov - use pgr_boykovKolmogorov instead
+* pgr_maximumCardinalityMatching - use pgr_maxCardinalityMatch instead
+
+*Deprecated function*
+
+* pgr_pointToEdgeNode
+
+
+
pgRouting 2.4.2 Release Notes
-------------------------------------------------------------------------------
@@ -19,7 +83,7 @@ To see the issues closed by this release see the [Git closed milestone for 2.4.2
pgRouting 2.4.1 Release Notes
-------------------------------------------------------------------------------
-To see the issues closed by this release see the [Git closed milestone for 2.4.2 ](https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.1%22%20) on Github.
+To see the issues closed by this release see the [Git closed milestone for 2.4.1 ](https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.1%22%20) on Github.
*Bug fixes*
diff --git a/README.md b/README.md
index 9fe108e..34f9e67 100644
--- a/README.md
+++ b/README.md
@@ -6,8 +6,9 @@
### Branches
-* The *master* branch has the latest minor release. (2.4.2)
-* The *develop* branch has the next minor release. (2.5.0-dev)
+* The *master* branch has the release 2.5.0
+* The *release/2.5* branch has the next micro-release 2.5.1 (if needed)
+* The *develop* branch has the development of the next minor-release 2.6.0-dev
For the complete list of releases go to:
https://github.com/pgRouting/pgrouting/releases
@@ -75,16 +76,18 @@ This library contains following features:
* Shortest Path Dijkstra Cost Family of functions
* Driving Distance
* K-Shortest Path, Multiple Alternative Paths (Yen's algorithm)
-* Traveling Sales Person
+* Traveling Sales Person (TSP)
* Turn Restriction Shortest Path (TRSP)
-Additionally, ready for testing and to be part of 2.3 official version:
+Additionally, ready for testing and to be part of 2.5 official version:
* Shortest Path Dijkstra With Points Family of functions
* Shortest Path Dijkstra Cost With Points Family of functions
* Driving Distance With Points
* K-Shortest Path With Points, Multiple Alternative Paths (Yen's algorithm)
-* Dijkstra Via vertices
+* Dijkstra Via (Vertices)
+
+and many more.
Family of functions include:
@@ -149,7 +152,7 @@ Postgresql 9.2+
## USAGE
-See online documentation: http://docs.pgrouting.org/2.3/en/doc/index.html
+See online documentation: http://docs.pgrouting.org/dev/en/index.html
## LICENSE
diff --git a/VERSION b/VERSION
index dd83933..c4a4dcc 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4746-fb7c27bfc master
+5535-54b9b7a6b release/2.5
diff --git a/appveyor.yml b/appveyor.yml
index 0abcbef..2ccaa69 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -5,7 +5,7 @@
# Main configuration
# ------------------------------------------------------------------------------
-version: 2.4.{build}
+version: 2.5.{build}
image: Visual Studio 2013
configuration: Release
diff --git a/configuration.conf b/configuration.conf
new file mode 100644
index 0000000..df07555
--- /dev/null
+++ b/configuration.conf
@@ -0,0 +1,40 @@
+#----------------------
+# Configuration file for compilation
+#
+# Once in the file, do not change the order
+#
+# Directory | has C/C++ | has SQL | has DOC
+#----------------------
+#----------------------
+# common must be first can not be removed
+#----------------------
+common | Y | Y | Y
+#----------------------
+# dijkstra can not be removed
+# Has the command needed to link with prostgresl
+#----------------------
+dijkstra | Y | Y | Y
+allpairs | Y | Y | Y
+astar | Y | Y | Y
+driving_distance | Y | Y | Y
+ksp | Y | Y | Y
+tsp | Y | Y | Y
+alpha_shape | Y | Y | Y
+bdAstar | Y | Y | Y
+bdDijkstra | Y | Y | Y
+trsp | Y | Y | Y
+max_flow | Y | Y | Y
+contraction | Y | Y | Y
+pickDeliver | Y | Y | N
+vrp_basic | N | Y | Y
+vrppdtw | N | Y | Y
+withPoints | Y | Y | Y
+lineGraph | Y | Y | Y
+components | Y | Y | Y
+#----------------------
+# SQL only directories
+#----------------------
+topology | N | Y | Y
+label_graph | N | Y | Y
+costMatrix | N | Y | Y
+deprecated | N | Y | N
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index e429439..569dd0b 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -6,174 +6,291 @@
# Daniel Kastl 03/2013
#
+#---------------------------------------------
+# Kind of sphinx output
+#---------------------------------------------
+
option(WITH_DOC
- "Set ON|OFF (default=OFF) to build Documentation library tree" OFF)
+ "Set ON|OFF (default=OFF) to build Documentation library tree" OFF)
+
+option(LOCALE
+ "Set ON|OFF (default=OFF) to build ithe latest pot/po files" OFF)
+
+option(WITH_ALL_DOC
+ "Set ON|OFF (default=OFF) to build Documentation library tree" OFF)
+
+#option(PDF
+# "Set ON|OFF (default=OFF) to build Documentation library tree as PDF" OFF)
option(BUILD_LATEX
"Set ON|OFF (default=OFF) to build Documentation library tree as PDF" OFF)
+option(SINGLEHTML
+ "Set ON|OFF (default=OFF) to build Documentation library tree as SINGLE HTML" OFF)
+
option(BUILD_HTML
- "Set ON|OFF (default=ON) to build Documentation library tree as HTML" ON)
+ "Set ON|OFF (default=OFF) to build Documentation library tree as HTML" ON)
option(BUILD_MAN
- "Set ON|OFF (default=ON) to build Documentation library tree as MAN page" OFF)
+ "Set ON|OFF (default=OFF) to build Documentation library tree as MAN page" OFF)
+
+option(EPUB
+ "Set ON|OFF (default=OFF) to build Documentation library tree as EPUB page" OFF)
+
+option(DUMMY
+ "Set ON|OFF (default=OFF) for debugging purposes" OFF)
+
+if (LOCALE)
+ set(WITH_DOC ON)
+endif()
+
+if (NOT WITH_DOC)
+ return()
+endif()
+
+foreach(opt BUILD_HTML BUILD_LATEX BUILD_MAN SINGLEHTML EPUB DUMMY)
+ if (${${opt}} OR WITH_ALL_DOC)
+ string(TOLOWER ${opt} val)
+ string(REPLACE "build_" "" val ${val})
+ list(APPEND PgRouting_DOC_TARGETS ${val})
+ set(WITH_DOC ON)
+ endif()
+endforeach()
+
+
+
+message(STATUS "PgRouting_DOC_TARGETS = ${PgRouting_DOC_TARGETS}")
+
+#---------------------------------------------
+#---------------------------------------------
+#---------------------------------------------
+
+# LANGUAGES SETINGS
+
+#---------------------------------------------
+#---------------------------------------------
+#---------------------------------------------
+
+#---------------------------------------------
+# Available Languages
+# English is always built
+#---------------------------------------------
+set(PgRouting_SUPPORTED_LANGUAGES "de" "es" "fr" "it" "ja" "ru")
+set(PgRouting_ENGLISH "en")
+
+#---------------------------------------------
+# Language options
+#---------------------------------------------
+option(WITH_ALL_LANG
+ "Set ON|OFF (default=OFF) to build all the supported languages:
+ Main Language will always be built:
+ ${PgRouting_ENGLISH}
+ Optional languages:
+ ${PgRouting_SUPPORTED_LANGUAGES}
+
+ When OFF and want to build specific optional language, use the language code in capital letters:
+ -D ES=ON
+ "
+ OFF
+ )
+
+foreach(lang ${PgRouting_SUPPORTED_LANGUAGES})
+ string(TOUPPER ${lang} val)
+ option(${val}
+ "Set ON|OFF (default=OFF) build ${lang} Documentation" OFF)
+endforeach()
+
+#---------------------------------------------
+# Catching the language options to be build
+#---------------------------------------------
+foreach(lang ${PgRouting_SUPPORTED_LANGUAGES})
+ string(TOUPPER ${lang} opt)
+ if (${opt} OR WITH_ALL_LANG)
+ list(APPEND PgRouting_BUILD_LANGUAGES ${lang})
+ endif()
+endforeach()
+
+#---------------------------------------------
+# All languages po files are to be generated
+#---------------------------------------------
+
+set (SPHINXINTL_LANGUAGE ${PgRouting_ENGLISH})
+foreach(lang ${PgRouting_BUILD_LANGUAGES})
+ set(SPHINXINTL_LANGUAGE "${SPHINXINTL_LANGUAGE},${lang}")
+endforeach()
+
+
+list(APPEND PgRouting_BUILD_LANGUAGES ${PgRouting_ENGLISH})
+message(STATUS "PgRouting_BUILD_LANGUAGES = ${PgRouting_BUILD_LANGUAGES}")
+message(STATUS "SPHINXINTL_LANGUAGE = ${SPHINXINTL_LANGUAGE}")
+
+
+if(NOT WITH_DOC)
+ return()
+endif()
+
+#---------------------------------------------
+# Checking for prerequisites
+#---------------------------------------------
+find_package(Sphinx ${SPHINX_MINIMUM_VERSION} REQUIRED)
+
+if (NOT SPHINX_FOUND)
+ message(FATAL_ERROR "Sphinx not found.
+ Cannot generate documentation!
+ Install Sphinx or build without documentation")
+endif()
+
+if (SPHINX_VERSION VERSION_LESS 1.0)
+ message(WARNING "Your Sphinx version is too old!
+ This project requires Sphinx v${SPHINX_MINIMUM_VERSION} or above to produce
+ proper documentation (you have v${SPHINX_VERSION}).
+ You will get output but it will have errors.")
+endif()
+
+#pip install rst2pdf
+
+
+
+#---------------------------------------------
+# Kind of "looks"
+#---------------------------------------------
option(DOC_USE_BOOTSTRAP
"Set ON|OFF (default=ON) to build Documentation library tree as MAN page" OFF)
+if (DOC_USE_BOOTSTRAP)
+ set(SPHINX_INCLUDE "import sphinx_bootstrap_theme")
+ set(SPHINX_THEME "bootstrap")
+ set(SPHINX_THEME_DIR "sphinx_bootstrap_theme.get_html_theme_path()")
+ set(SPHINX_THEME_OPTIONS "'source_link_position': \"none\",")
+else()
+ set(SPHINX_INCLUDE "")
+ set(SPHINX_THEME "haiku")
+ set(SPHINX_THEME_DIR "['']")
+ set(SPHINX_THEME_OPTIONS "")
+endif()
-if(WITH_DOC)
- #message("PROCESSING DOCUMENTATION------------")
- find_package(Sphinx REQUIRED)
- if (DOC_USE_BOOTSTRAP)
- set(SPHINX_INCLUDE "import sphinx_bootstrap_theme")
- set(SPHINX_THEME "bootstrap")
- set(SPHINX_THEME_DIR "sphinx_bootstrap_theme.get_html_theme_path()")
- set(SPHINX_THEME_OPTIONS "'source_link_position': \"none\",")
- else()
- set(SPHINX_INCLUDE "")
- set(SPHINX_THEME "haiku")
- set(SPHINX_THEME_DIR "['']")
- set(SPHINX_THEME_OPTIONS "")
- endif()
+# configured documentation tools and intermediate build results
+# TODO for 3.0 Use _build
+# set(PGR_DOCUMENTATION_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/_build")
+set(PGR_DOCUMENTATION_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+set(PGR_DOCUMENTATION_SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+
+message(STATUS "PGR_DOCUMENTATION_BUILD_DIR = ${PGR_DOCUMENTATION_BUILD_DIR}")
+
+
+#---------------------------------------------
+# Adding documentation directories
+#---------------------------------------------
+foreach (subdir ${PgRouting_DOC_DIRECTORIES} "src" "queries")
+ add_subdirectory(${subdir})
+endforeach()
+
+add_subdirectory("images")
+
+
+configure_file("../tools/testers/sampledata.sql" "${PGR_DOCUMENTATION_SOURCE_DIR}/sampledata/sampledata.sql")
+
+
+#TODO ???
+#add_subdirectory("static")
+#add_subdirectory("themes")
+file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/_static" DESTINATION "${PGR_DOCUMENTATION_SOURCE_DIR}")
+file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/_themes" DESTINATION "${PGR_DOCUMENTATION_SOURCE_DIR}")
+
+
+configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in"
+ "${PGR_DOCUMENTATION_SOURCE_DIR}/conf.py"
+ @ONLY)
+
+# Add documentation to targets
- if (NOT SPHINX_FOUND)
- message(WARNING "Sphinx not found. Cannot generate documentation!")
+#if (LATEX)
+if (FALSE)
+ find_package(LATEX)
+ if (NOT LATEX_COMPILER)
+ message("Couldn't find Latex, can't build latex docs using Sphinx")
else()
- if (SPHINX_VERSION VERSION_LESS 1.0)
- message(WARNING "Your Sphinx version is too old!
- This project requires Sphinx v1.0 or above to produce
- proper documentation (you have v${SPHINX_VERSION}).
- You will get output but it will have errors.")
- endif()
-
- if(NOT DEFINED SPHINX_THEME)
- set(SPHINX_THEME default)
- endif()
-
- if(NOT DEFINED SPHINX_THEME_DIR)
- set(SPHINX_THEME_DIR)
- endif()
-
- # configured documentation tools and intermediate build results
- set(PGR_DOCUMENTATION_BUILD_DIR "${PGROUTING_BINARY_DIR}/doc/_build")
- set(PGR_DOCUMENTATION_SOURCE_DIR "${PGROUTING_BINARY_DIR}/doc")
-
- message(STATUS "PGR_DOCUMENTATION_BUILD_DIR = ${PGR_DOCUMENTATION_BUILD_DIR}")
-
- # ---------- TO FLATTEN THE DOCUMENTATION ---------
-
- file(GLOB PGR_DOCUMENTATION_SOURCES "src/*")
- foreach (file ${PGR_DOCUMENTATION_SOURCES})
- #message("${file}")
- file(COPY "${file}" DESTINATION "${PGR_DOCUMENTATION_SOURCE_DIR}")
- endforeach()
-
- file(GLOB PGR_DOCUMENTATION_SOURCES "../src/*/doc/*")
- foreach (file ${PGR_DOCUMENTATION_SOURCES})
- #message("${file}")
- file(COPY "${file}" DESTINATION "${PGR_DOCUMENTATION_SOURCE_DIR}")
- endforeach()
-
- file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/index.rst" DESTINATION "${PGR_DOCUMENTATION_SOURCE_DIR}")
- file(COPY "../tools/testers/sampledata.sql" DESTINATION "${PGR_DOCUMENTATION_SOURCE_DIR}/sampledata/")
-
-
- #message(STATUS "PGROUTING_BINARY_DIR = ${PGROUTING_BINARY_DIR}")
-
- # Sphinx cache with pickled ReST documents
- set(SPHINX_CACHE_DIR "${PGROUTING_BINARY_DIR}/doc/_doctrees")
-
- file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/static" DESTINATION "${PGR_DOCUMENTATION_BUILD_DIR}")
- file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/themes" DESTINATION "${PGR_DOCUMENTATION_BUILD_DIR}")
- file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/CNAME" DESTINATION "${PGROUTING_BINARY_DIR}")
-
- #configure_file(
- # "${CMAKE_CURRENT_SOURCE_DIR}/index.html.in"
- # "${PGROUTING_BINARY_DIR}/doc/html/index.html")
-
- configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/forward.html"
- "${PGROUTING_BINARY_DIR}/doc/html/en/index.html")
-
- # Add documentation to targets
- set(DOC_TARGETS html)
-
- #option(BUILD_MAN "Create a target for building man pages." ON)
-
- if (BUILD_MAN)
- if (SPHINX_VERSION VERSION_LESS 1.0)
- message(WARNING "Sphinx version 1.0 > is required to build man pages. You have v${SPHINX_VERSION}.")
- else()
- list(APPEND DOC_TARGETS man)
- endif()
- endif()
-
- #option(BUILD_LATEX "Create a target for building latex docs (to create PDF)." ON)
-
- if (BUILD_LATEX)
- find_package(LATEX)
-
- if (NOT LATEX_COMPILER)
- message("Couldn't find Latex, can't build latex docs using Sphinx")
- else()
- message(STATUS "LATEX_COMPILER = ${LATEX_COMPILER}")
- list(APPEND DOC_TARGETS latex)
- endif()
- endif()
-
- # The doc target will build all documentation targets.
- add_custom_target(doc #ALL
- COMMENT "Building documentation with Sphinx")
- # add_custom_target(doc)
-
- # Localization output directory
- #set(SPHINX_I18N_DIR "${CMAKE_CURRENT_SOURCE_DIR}/i18n/pot")
-
- configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in"
- "${PGR_DOCUMENTATION_BUILD_DIR}/conf.py"
- @ONLY)
-
- foreach (DOC_TARGET ${DOC_TARGETS})
- add_custom_command(
- TARGET doc POST_BUILD
- COMMAND ${SPHINX_EXECUTABLE}
- # -q # Enable for quiet mode
- # -Q # Enable for even more quiet mode
- # -v # increase verbosity
- -b ${DOC_TARGET}
- -E # don't use a saved environment, always read all file
- -a # write all files; default is to only write new and changed files
- -d "${SPHINX_CACHE_DIR}"
- -c "${PGR_DOCUMENTATION_BUILD_DIR}"
- "${PGR_DOCUMENTATION_SOURCE_DIR}"
- "${PGROUTING_BINARY_DIR}/doc/${DOC_TARGET}/en"
- COMMENT "Generating ${DOC_TARGET} documentation ...")
- endforeach()
-
- if(BUILD_LATEX)
- if(LATEX_COMPILER)
- add_custom_command(
- TARGET doc POST_BUILD
- #fixes: Underfull \hbox (badness 10000) in paragraph
- #perl -pi -e 's/warning/warning /' pgRoutingDocumentation.tex
- COMMAND pdflatex
- -interaction=nonstopmode
- "pgRoutingDocumentation.tex" > /dev/null 2>&1
- WORKING_DIRECTORY "${PGROUTING_BINARY_DIR}/doc/latex/en"
- COMMENT "Converting Latex to PDF format")
-
- list(APPEND DOC_TARGETS pdf)
- endif()
- endif()
-
- message("-- Building documentation enabled for: ${DOC_TARGETS}")
+ message(STATUS "LATEX_COMPILER = ${LATEX_COMPILER}")
endif()
+endif()
+
+set(ENV{SPHINXINTL_LANGUAGE} ${SPHINXINTL_LANGUAGE})
+
+if (LOCALE)
+ add_custom_target(locale
+ COMMAND ${SPHINX_EXECUTABLE}
+ -b gettext
+ -c "${PGR_DOCUMENTATION_SOURCE_DIR}"
+ "${PGR_DOCUMENTATION_SOURCE_DIR}"
+ "${CMAKE_SOURCE_DIR}/locale/pot"
+
+ COMMAND sphinx-intl update -p ${CMAKE_SOURCE_DIR}/locale/pot -d ${CMAKE_SOURCE_DIR}/locale --language=${SPHINXINTL_LANGUAGE}
+
+ COMMENT "Generating POT & PO files ..."
+ SOURCES ${PgRouting_DOC_FILES}
+ )
+endif()
+
+
+# The doc target will build all documentation targets.
+add_custom_target(doc
+ COMMENT "Building documentation with Sphinx")
+
+
+foreach (target ${PgRouting_DOC_TARGETS})
+ add_custom_target("${target}"
+ COMMENT "Building ${target} documentation with Sphinx")
+
+ configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/forward.html"
+ "${PGR_DOCUMENTATION_BUILD_DIR}/${target}/index.html")
+
+ foreach (lang ${PgRouting_BUILD_LANGUAGES})
+ add_custom_target(
+ "${target}-${lang}"
+ COMMAND ${SPHINX_EXECUTABLE}
+ #-q # Enable for quiet mode
+ #-Q # Enable for even more quiet mode
+ -v # increase verbosity
+ #-E # don't use a saved environment, always read all file
+ #-a # write all files; default is to only write new and changed files
+ -b ${target}
+ -D language='${lang}'
+ -c "${PGR_DOCUMENTATION_SOURCE_DIR}"
+ "${PGR_DOCUMENTATION_SOURCE_DIR}"
+ "${PGR_DOCUMENTATION_BUILD_DIR}/${target}/${lang}"
+
+ COMMENT "Generating ${target}/${lang} documentation ..."
+ SOURCES ${PgRouting_DOC_FILES} ${PgRouting_IMG_FILES}
+ DEPENDS ${PgRouting_DOC_FILES} ${PgRouting_IMG_FILES}
+ )
+ add_dependencies(${target} "${target}-${lang}")
+
+ endforeach()
+ add_dependencies(doc "${target}")
+endforeach()
+
+
+
+if(FALSE)
+ # AND ${target} MATCHES "latex" AND LATEX_COMPILER)
+ add_custom_target(pdf-${lang}
+ COMMENT "Building documentation with Sphinx")
+
+ add_custom_command(
+ TARGET pdf-${lang} POST_BUILD
+ #fixes: Underfull \hbox (badness 10000) in paragraph
+ #perl -pi -e 's/warning/warning /' pgRoutingDocumentation.tex
+ COMMAND pdflatex -interaction=nonstopmode "pgRoutingDocumentation.tex" > /dev/null 2>&1
+ WORKING_DIRECTORY "${PGR_DOCUMENTATION_BUILD_DIR}/pdf/${lang}"
+ DEPENDS ${target}-${lang}
+ COMMENT "Converting Latex to PDF format")
+
+endif()
- #message("END PROCESSING DOCUMENTATION------------")
-endif(WITH_DOC)
diff --git a/doc/_static/custom.css b/doc/_static/custom.css
new file mode 100644
index 0000000..389a4f2
--- /dev/null
+++ b/doc/_static/custom.css
@@ -0,0 +1,15 @@
+
+abbr {
+ font-size: 80%;
+}
+
+/* Content */
+div.content-wrapper {
+ background-color: blue;
+ padding-top: 20px;
+ padding-bottom: 20px;
+}
+
+div.topic {
+ border: none;
+}
diff --git a/doc/static/favicon.ico b/doc/_static/favicon.ico
similarity index 100%
rename from doc/static/favicon.ico
rename to doc/_static/favicon.ico
diff --git a/doc/static/images/ccbysa.png b/doc/_static/images/ccbysa.png
similarity index 100%
rename from doc/static/images/ccbysa.png
rename to doc/_static/images/ccbysa.png
diff --git a/doc/static/images/developers/disconnectEdgeDirected.graphmlz b/doc/_static/images/developers/disconnectEdgeDirected.graphmlz
similarity index 100%
rename from doc/static/images/developers/disconnectEdgeDirected.graphmlz
rename to doc/_static/images/developers/disconnectEdgeDirected.graphmlz
diff --git a/doc/static/images/developers/disconnectEdgeDirected.png b/doc/_static/images/developers/disconnectEdgeDirected.png
similarity index 100%
rename from doc/static/images/developers/disconnectEdgeDirected.png
rename to doc/_static/images/developers/disconnectEdgeDirected.png
diff --git a/doc/static/images/developers/disconnectEdgeUndirected.graphmlz b/doc/_static/images/developers/disconnectEdgeUndirected.graphmlz
similarity index 100%
rename from doc/static/images/developers/disconnectEdgeUndirected.graphmlz
rename to doc/_static/images/developers/disconnectEdgeUndirected.graphmlz
diff --git a/doc/static/images/developers/disconnectEdgeUndirected.png b/doc/_static/images/developers/disconnectEdgeUndirected.png
similarity index 100%
rename from doc/static/images/developers/disconnectEdgeUndirected.png
rename to doc/_static/images/developers/disconnectEdgeUndirected.png
diff --git a/doc/static/images/developers/disconnectVertexDirected.graphmlz b/doc/_static/images/developers/disconnectVertexDirected.graphmlz
similarity index 100%
rename from doc/static/images/developers/disconnectVertexDirected.graphmlz
rename to doc/_static/images/developers/disconnectVertexDirected.graphmlz
diff --git a/doc/static/images/developers/disconnectVertexDirected.png b/doc/_static/images/developers/disconnectVertexDirected.png
similarity index 100%
rename from doc/static/images/developers/disconnectVertexDirected.png
rename to doc/_static/images/developers/disconnectVertexDirected.png
diff --git a/doc/static/images/developers/disconnectVertexUndirected.graphmlz b/doc/_static/images/developers/disconnectVertexUndirected.graphmlz
similarity index 100%
rename from doc/static/images/developers/disconnectVertexUndirected.graphmlz
rename to doc/_static/images/developers/disconnectVertexUndirected.graphmlz
diff --git a/doc/static/images/developers/disconnectVertexUndirected.png b/doc/_static/images/developers/disconnectVertexUndirected.png
similarity index 100%
rename from doc/static/images/developers/disconnectVertexUndirected.png
rename to doc/_static/images/developers/disconnectVertexUndirected.png
diff --git a/doc/static/images/favicon.ico b/doc/_static/images/favicon.ico
similarity index 100%
rename from doc/static/images/favicon.ico
rename to doc/_static/images/favicon.ico
diff --git a/doc/static/images/pgrouting-logo.png b/doc/_static/images/pgrouting-logo.png
similarity index 100%
rename from doc/static/images/pgrouting-logo.png
rename to doc/_static/images/pgrouting-logo.png
diff --git a/doc/static/images/pgrouting.png b/doc/_static/images/pgrouting.png
similarity index 100%
rename from doc/static/images/pgrouting.png
rename to doc/_static/images/pgrouting.png
diff --git a/doc/_templates/layout.thml b/doc/_templates/layout.thml
new file mode 100644
index 0000000..9178708
--- /dev/null
+++ b/doc/_templates/layout.thml
@@ -0,0 +1,7 @@
+
+{# Import the theme's layout. #}
+{% extends "!layout.html" %}
+
+{# Custom CSS overrides #}
+{% set bootswatch_css_custom = ['_static/custom.css'] %}
+
diff --git a/doc/themes/null b/doc/_themes/null
similarity index 100%
rename from doc/themes/null
rename to doc/_themes/null
diff --git a/doc/allpairs/CMakeLists.txt b/doc/allpairs/CMakeLists.txt
new file mode 100644
index 0000000..3e2be88
--- /dev/null
+++ b/doc/allpairs/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+SET(LOCAL_FILES
+ allpairs-family.rst
+ pgr_floydWarshall.rst
+ pgr_johnson.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/src/allpairs/doc/allpairs-family.rst b/doc/allpairs/allpairs-family.rst
similarity index 100%
rename from src/allpairs/doc/allpairs-family.rst
rename to doc/allpairs/allpairs-family.rst
diff --git a/doc/allpairs/pgr_floydWarshall.rst b/doc/allpairs/pgr_floydWarshall.rst
new file mode 100644
index 0000000..77ea3cb
--- /dev/null
+++ b/doc/allpairs/pgr_floydWarshall.rst
@@ -0,0 +1,162 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_floydWarshall:
+
+pgr_floydWarshall
+===============================================================================
+
+Synopsis
+-------------------------------------------------------------------------------
+
+``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path for each
+pair of nodes in the graph using Floyd-Warshall algorithm.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.0.0
+
+* Renamed on 2.2.0, previous name pgr_apspWarshall
+
+
+The Floyd-Warshall algorithm, also known as Floyd's algorithm,
+is a good choice to calculate the sum of the costs of the shortest path for each
+pair of nodes in the graph, for *dense graphs*. We make use of the Boost's
+implementation which runs in :math:`\Theta(V^3)` time,
+
+
+Characteristics
+----------------
+
+The main Characteristics are:
+ - It does not return a path.
+ - Returns the sum of the costs of the shortest path for each pair of nodes in the graph.
+ - Process is done only on edges with positive costs.
+ - Boost returns a :math:`V \times V` matrix, where the infinity values.
+ Represent the distance between vertices for which there is no path.
+
+ - We return only the non infinity values in form of a set of `(start_vid, end_vid, agg_cost)`.
+
+ - Let be the case the values returned are stored in a table, so the unique index would be the pair:
+ `(start_vid, end_vid)`.
+
+ - For the undirected graph, the results are symmetric.
+
+ - The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
+
+ - When `start_vid` = `end_vid`, the `agg_cost` = 0.
+
+ - **Recommended, use a bounding box of no more than 3500 edges.**
+
+Signature Summary
+--------------------------------------------
+
+.. code-block:: none
+
+ pgr_floydWarshall(edges_sql)
+ pgr floydWarshall(edges_sql, directed)
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+Signatures
+--------------------------------------------
+
+
+.. index::
+ single: floydWarshall(Minimal Signature)
+
+Minimal Signature
+...................
+
+.. code-block:: none
+
+ pgr_floydWarshall(edges_sql)
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+:Example 1: On a directed graph.
+
+.. literalinclude:: doc-floydWarshall.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: floydWarshall(Complete Signature)
+
+Complete Signature
+...................
+
+.. code-block:: none
+
+ pgr_floydWarshall(edges_sql, directed)
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+
+:Example 2: On an undirected graph.
+
+.. literalinclude:: doc-floydWarshall.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+Description of the Signatures
+------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: no_id_edges_sql_start
+ :end-before: no_id_edges_sql_end
+
+
+Description of the parameters of the signatures
+................................................
+
+Receives ``(edges_sql, directed)``
+
+============= ============= =================================================
+Parameter Type Description
+============= ============= =================================================
+**edges_sql** ``TEXT`` SQL query as described above.
+**directed** ``BOOLEAN`` (optional) Default is true (is directed). When set to false the graph is considered as Undirected
+============= ============= =================================================
+
+
+Description of the return values
+..................................
+
+Returns set of ``(start_vid, end_vid, agg_cost)``
+
+============= ============= =================================================
+Column Type Description
+============= ============= =================================================
+**start_vid** ``BIGINT`` Identifier of the starting vertex.
+**end_vid** ``BIGINT`` Identifier of the ending vertex.
+**agg_cost** ``FLOAT`` Total cost from ``start_vid`` to ``end_vid``.
+============= ============= =================================================
+
+
+
+
+
+.. rubric:: History
+
+* Re-design of pgr_apspWarshall in Version 2.2.0
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`pgr_johnson`
+* `Boost floyd-Warshall <http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ algorithm
+* Queries uses the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/allpairs/pgr_johnson.rst b/doc/allpairs/pgr_johnson.rst
new file mode 100644
index 0000000..b24e161
--- /dev/null
+++ b/doc/allpairs/pgr_johnson.rst
@@ -0,0 +1,161 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_johnson:
+
+pgr_johnson
+===============================================================================
+
+Synopsis
+-------------------------------------------------------------------------------
+
+``pgr_johnson`` - Returns the sum of the costs of the shortest path for each
+pair of nodes in the graph using Floyd-Warshall algorithm.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.0.0
+
+* Renamed on 2.2.0, previous name pgr_apspJohnson
+
+
+The Johnson algorithm, is a good choice to calculate the sum of the costs
+of the shortest path for each pair of nodes in the graph, for *sparse graphs*.
+It usees the Boost's implementation which runs in :math:`O(V E \log V)` time,
+
+
+Characteristics
+----------------
+
+The main Characteristics are:
+ - It does not return a path.
+ - Returns the sum of the costs of the shortest path for each pair of nodes in the graph.
+ - Process is done only on edges with positive costs.
+ - Boost returns a :math:`V \times V` matrix, where the infinity values.
+ Represent the distance between vertices for which there is no path.
+
+ - We return only the non infinity values in form of a set of `(start_vid, end_vid, agg_cost)`.
+
+ - Let be the case the values returned are stored in a table, so the unique index would be the pair:
+ `(start_vid, end_vid)`.
+
+ - For the undirected graph, the results are symmetric.
+
+ - The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
+
+ - When `start_vid` = `end_vid`, the `agg_cost` = 0.
+
+
+
+Signature Summary
+--------------------------------------------
+
+.. code-block:: none
+
+ pgr_johnson(edges_sql)
+ pgr johnson(edges_sql, directed)
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+Signatures
+--------------------------------------------
+
+
+.. index::
+ single: johnson(Minimal Signature)
+
+Minimal Signature
+...................
+
+.. code-block:: none
+
+ pgr_johnson(edges_sql)
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+:Example 1: On a directed graph.
+
+.. literalinclude:: doc-johnson.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: johnson(Complete Signature)
+
+Complete Signature
+...................
+
+.. code-block:: none
+
+ pgr_johnson(edges_sql, directed)
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+
+:Example 2: On an undirected graph.
+
+.. literalinclude:: doc-johnson.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+Description of the Signatures
+------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: no_id_edges_sql_start
+ :end-before: no_id_edges_sql_end
+
+
+Description of the parameters of the signatures
+................................................
+
+Receives ``(edges_sql, directed)``
+
+============= ============= =================================================
+Parameter Type Description
+============= ============= =================================================
+**edges_sql** ``TEXT`` SQL query as described above.
+**directed** ``BOOLEAN`` (optional) Default is true (is directed). When set to false the graph is considered as Undirected
+============= ============= =================================================
+
+
+Description of the return values
+..................................
+
+Returns set of ``(start_vid, end_vid, agg_cost)``
+
+============= ============= =================================================
+Column Type Description
+============= ============= =================================================
+**start_vid** ``BIGINT`` Identifier of the starting vertex.
+**end_vid** ``BIGINT`` Identifier of the ending vertex.
+**agg_cost** ``FLOAT`` Total cost from ``start_vid`` to ``end_vid``.
+============= ============= =================================================
+
+
+
+
+
+.. rubric:: History
+
+* Re-design of pgr_apspJohnson in Version 2.2.0
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`pgr_floydWarshall`
+* `Boost Johnson <http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html>`_ algorithm implementation.
+* Queries uses the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/alpha_shape/CMakeLists.txt b/doc/alpha_shape/CMakeLists.txt
new file mode 100644
index 0000000..5fe3230
--- /dev/null
+++ b/doc/alpha_shape/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(LOCAL_FILES
+ pgr_alphaShape.rst
+ pgr_pointsAsPolygon.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/alpha_shape/pgr_alphaShape.rst b/doc/alpha_shape/pgr_alphaShape.rst
new file mode 100644
index 0000000..6c94643
--- /dev/null
+++ b/doc/alpha_shape/pgr_alphaShape.rst
@@ -0,0 +1,101 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_alphashape:
+
+pgr_alphaShape
+===============================================================================
+
+.. index::
+ single: pgr_alphashape(text,float8)
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_alphaShape`` — Core function for alpha shape computation.
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Returns a table with (x, y) rows that describe the vertices of an alpha shape.
+
+.. code-block:: sql
+
+ table() pgr_alphaShape(text sql [, float8 alpha]);
+
+
+Description
+-------------------------------------------------------------------------------
+
+:sql: ``text`` a SQL query, which should return a set of rows with the following columns:
+
+ .. code-block:: sql
+
+ SELECT id, x, y FROM vertex_table
+
+ :id: ``int4`` identifier of the vertex
+ :x: ``float8`` x-coordinate
+ :y: ``float8`` y-coordinate
+
+:alpha: (optional) ``float8`` alpha value. If specified alpha value equals 0 (default), then optimal alpha value is used.
+ For more information, see `CGAL - 2D Alpha Shapes <http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_.
+
+Returns a vertex record for each row:
+
+:x: x-coordinate
+:y: y-coordinate
+
+If a result includes multiple outer/inner rings, return those with separator row (x=NULL and y=NULL).
+
+.. rubric:: History
+
+* Renamed in version 2.0.0
+* Added alpha argument with default 0 (use optimal value) in version 2.1.0
+* Supported to return multiple outer/inner ring coordinates with separator row (x=NULL and y=NULL) in version 2.1.0
+
+Examples
+-------------------------------------------------------------------------------
+PgRouting's alpha shape implementation has no way to control the order of the output points, so the actual output might different for the same input data.
+The first query, has the output ordered, he second query shows an example usage:
+
+
+.. rubric:: Example: the (ordered) results
+
+.. literalinclude:: doc-pgr_alphashape.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+.. rubric:: Example: calculating the area
+
+Steps:
+
+- Calculates the alpha shape
+ - the :code:`ORDER BY` clause is not used.
+- constructs a polygon
+- and computes the area
+
+.. literalinclude:: doc-pgr_alphashape.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+
+The queries use the :doc:`sampledata` network.
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`pgr_drivingDistance` - Driving Distance
+* :ref:`pgr_points_as_polygon` - Polygon around set of points
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/alpha_shape/pgr_pointsAsPolygon.rst b/doc/alpha_shape/pgr_pointsAsPolygon.rst
new file mode 100644
index 0000000..c891996
--- /dev/null
+++ b/doc/alpha_shape/pgr_pointsAsPolygon.rst
@@ -0,0 +1,81 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_points_as_polygon:
+
+pgr_pointsAsPolygon
+===============================================================================
+
+.. index::
+ single: pgr_pointsAsPolygon(text,float8)
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points.
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Returns the alpha shape as (multi)polygon geometry.
+
+.. code-block:: sql
+
+ geometry pgr_pointsAsPolygon(text sql [, float8 alpha]);
+
+
+Description
+-------------------------------------------------------------------------------
+
+:sql: ``text`` a SQL query, which should return a set of rows with the following columns:
+
+ .. code-block:: sql
+
+ SELECT id, x, y FROM vertex_result;
+
+ :id: ``int4`` identifier of the vertex
+ :x: ``float8`` x-coordinate
+ :y: ``float8`` y-coordinate
+
+:alpha: (optional) ``float8`` alpha value. If specified alpha value equals 0 (default), then optimal alpha value is used.
+ For more information, see `CGAL - 2D Alpha Shapes <http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_.
+
+Returns a (multi)polygon geometry (with holes).
+
+
+.. rubric:: History
+
+* Renamed in version 2.0.0
+* Added alpha argument with default 0 (use optimal value) in version 2.1.0
+* Supported to return a (multi)polygon geometry (with holes) in version 2.1.0
+
+
+Examples
+-------------------------------------------------------------------------------
+In the following query there is no way to control which point in the polygon is the first in the list, so you may get similar but different results than the following which are also correct.
+
+.. literalinclude:: doc-pgr_pointsAsPolygon.queries
+ :start-after: --q1
+ :end-before: --q2
+
+
+The query use the :doc:`sampledata` network.
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`pgr_drivingDistance` - Driving Distance
+* :ref:`pgr_alphashape` - Alpha shape computation
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/astar/CMakeLists.txt b/doc/astar/CMakeLists.txt
new file mode 100644
index 0000000..69595a9
--- /dev/null
+++ b/doc/astar/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+SET(LOCAL_FILES
+ aStar-family.rst
+ pgr_aStarCost.rst
+ pgr_aStar.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/src/astar/doc/aStar-family.rst b/doc/astar/aStar-family.rst
similarity index 100%
rename from src/astar/doc/aStar-family.rst
rename to doc/astar/aStar-family.rst
diff --git a/doc/astar/pgr_aStar.rst b/doc/astar/pgr_aStar.rst
new file mode 100644
index 0000000..600e179
--- /dev/null
+++ b/doc/astar/pgr_aStar.rst
@@ -0,0 +1,271 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_aStar:
+
+pgr_aStar
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_aStar`` — Returns the shortest path using A* algorithm.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org//libs/graph/doc/astar_search.html
+
+ Boost Graph Inside
+
+.. rubric:: Availability:
+
+* pgr_astar(one to one) 2.0.0, Signature changed 2.3.0
+* pgr_astar(other signatures) 2.4.0
+
+
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+
+- Process is done only on edges with positive costs.
+- Vertices of the graph are:
+
+ - **positive** when it belongs to the edges_sql
+
+- Values are returned when there is a path.
+
+ - When the starting vertex and ending vertex are the same, there is no path.
+
+ - The agg_cost the non included values (v, v) is 0
+
+ - When the starting vertex and ending vertex are the different and there is no path:
+
+ - The agg_cost the non included values (u, v) is ∞
+
+- When (x,y) coordinates for the same vertex identifier differ:
+
+ - A random selection of the vertex's (x,y) coordinates is used.
+
+- Running time: :math:`O((E + V) * \log V)`
+
+
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_aStar(edges_sql, start_vid, end_vid)
+ pgr_aStar(edges_sql, start_vid, end_vid, directed, heuristic, factor, epsilon)
+
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+
+.. code-block:: none
+
+ pgr_aStar(edges_sql, start_vid, end_vids, directed, heuristic, factor, epsilon) -- proposed
+ pgr_aStar(edges_sql, starts_vid, end_vid, directed, heuristic, factor, epsilon) -- proposed
+ pgr_aStar(edges_sql, starts_vid, end_vids, directed, heuristic, factor, epsilon) -- proposed
+ RETURNS SET OF (seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+
+Signatures
+-----------------
+
+
+.. index::
+ single: aStar(Minimal Use) -- New Signature
+
+
+Minimal Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_aStar(edges_sql, start_vid, end_vid)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
+
+:Example: Using the defaults
+
+.. literalinclude:: doc-astar.queries
+ :start-after: --q1
+ :end-before: --q2
+
+
+
+.. index::
+ single: aStar(One to One) -- New Signature
+
+
+One to One
+...............................................................................
+.. code-block:: none
+
+ pgr_aStar(edges_sql, start_vid, end_vid, directed, heuristic, factor, epsilon)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
+
+:Example: Undirected using Heuristic 2
+
+.. literalinclude:: doc-astar.queries
+ :start-after: --q2
+ :end-before: --q3
+
+
+
+.. index::
+ single: astar(One to Many) -- Proposed
+
+One to many
+.......................................
+
+.. code-block:: none
+
+ pgr_aStar(edges_sql, start_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
+ RETURNS SET OF (seq, path_seq, end_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform a one to one `pgr_astar`
+where the starting vertex is fixed, and stop when all ``end_vids`` are reached.
+
+- The result is equivalent to the union of the results of the one to one `pgr_astar`.
+- The extra ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-astar.queries
+ :start-after: --q3
+ :end-before: --q4
+
+.. index::
+ single: aStar(Many to One) -- Proposed
+
+Many to One
+.......................................
+
+.. code-block:: none
+
+ pgr_aStar(edges_sql, starts_vid, end_vid, directed, heuristic, factor, epsilon) -- Proposed
+ RETURNS SET OF (seq, path_seq, start_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform several one to one `pgr_aStar`
+where the ending vertex is fixed.
+
+- The result is the union of the results of the one to one `pgr_aStar`.
+- The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-astar.queries
+ :start-after: --q4
+ :end-before: --q5
+
+
+
+.. index::
+ single: aStar(Many to Many) -- Proposed
+
+Many to Many
+.......................................
+
+.. code-block:: none
+
+ pgr_aStar(edges_sql, starts_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
+ RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra`
+for all ``start_vids``.
+
+- The result is the union of the results of the one to one `pgr_dijkstra`.
+- The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
+
+The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-astar.queries
+ :start-after: --q5
+ :end-before: --q6
+
+
+
+
+
+
+Description of the Signatures
+--------------------------------
+
+..
+ description of the edges_sql queries
+
+.. include:: pgRouting-concepts.rst
+ :start-after: xy_edges_sql_start
+ :end-before: xy_edges_sql_end
+
+
+Description of the parameters of the signatures
+.................................................
+
+================ ====================== =================================================
+Parameter Type Description
+================ ====================== =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**start_vid** ``ANY-INTEGER`` Starting vertex identifier.
+**end_vid** ``ANY-INTEGER`` Ending vertex identifier.
+**directed** ``BOOLEAN`` - Optional.
+
+ - When ``false`` the graph is considered as Undirected.
+ - Default is ``true`` which considers the graph as Directed.
+
+**heuristic** ``INTEGER`` (optional). Heuristic number. Current valid values 0~5. Default ``5``
+
+ - 0: h(v) = 0 (Use this value to compare with pgr_dijkstra)
+ - 1: h(v) abs(max(dx, dy))
+ - 2: h(v) abs(min(dx, dy))
+ - 3: h(v) = dx * dx + dy * dy
+ - 4: h(v) = sqrt(dx * dx + dy * dy)
+ - 5: h(v) = abs(dx) + abs(dy)
+
+**factor** ``FLOAT`` (optional). For units manipulation. :math:`factor > 0`. Default ``1``. see :ref:`astar_factor`
+**epsilon** ``FLOAT`` (optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``.
+================ ====================== =================================================
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_path_start
+ :end-before: return_path_end
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`astar`
+* :doc:`sampledata`
+* http://www.boost.org/libs/graph/doc/astar_search.html
+* http://en.wikipedia.org/wiki/A*_search_algorithm
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/astar/pgr_aStarCost.rst b/doc/astar/pgr_aStarCost.rst
new file mode 100644
index 0000000..bc56f78
--- /dev/null
+++ b/doc/astar/pgr_aStarCost.rst
@@ -0,0 +1,234 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_aStarCost:
+
+pgr_aStarCost -- proposed
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_aStarCost`` — Returns the aggregate cost shortest path using :ref:`astar` algorithm.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org//libs/graph/doc/astar_search.html
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.4.0
+
+Signature Summary
+-----------------
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+.. code-block:: none
+
+ pgr_aStarCost(edges_sql, start_vid, end_vid) -- Proposed
+ pgr_aStarCost(edges_sql, start_vid, end_vid, directed, heuristic, factor, epsilon) -- Proposed
+ pgr_aStarCost(edges_sql, start_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
+ pgr_aStarCost(edges_sql, starts_vid, end_vid, directed, heuristic, factor, epsilon) -- Proposed
+ pgr_aStarCost(edges_sql, starts_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
+
+ RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
+
+
+Signatures
+-----------------
+
+
+.. index::
+ single: aStarCost(Minimal Signature) -- Proposed
+
+Minimal Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_aStarCost(edges_sql, start_vid, end_vid)
+ RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
+
+:Example: Using the defaults
+
+.. literalinclude:: doc-aStarCost.queries
+ :start-after: --q1
+ :end-before: --q2
+
+
+
+.. index::
+ single: aStarCost(One to One) -- Proposed
+
+One to One
+...............................................................................
+.. code-block:: none
+
+ pgr_aStarCost(edges_sql, start_vid, end_vid, directed, heuristic, factor, epsilon)
+ RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
+
+:Example: Setting a Heuristic
+
+.. literalinclude:: doc-aStarCost.queries
+ :start-after: --q2
+ :end-before: --q3
+
+
+
+.. index::
+ single: aStarCost(One to Many) -- Proposed
+
+One to many
+.......................................
+
+.. code-block:: none
+
+ pgr_aStarCost(edges_sql, start_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
+ RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
+
+This signature finds a path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform a one to one `pgr_astar`
+where the starting vertex is fixed, and stop when all ``end_vids`` are reached.
+
+- The result is equivalent to the union of the results of the one to one `pgr_astar`.
+- The extra ``end_vid`` column in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-aStarCost.queries
+ :start-after: --q3
+ :end-before: --q4
+
+.. index::
+ single: aStarCost(Many to One) -- Proposed
+
+Many to One
+.......................................
+
+.. code-block:: none
+
+ pgr_aStarCost(edges_sql, starts_vid, end_vid, directed, heuristic, factor, epsilon) -- Proposed
+ RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
+
+This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform several one to one `pgr_aStar`
+where the ending vertex is fixed.
+
+- The result is the union of the results of the one to one `pgr_aStar`.
+- The extra ``start_vid`` column in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-aStarCost.queries
+ :start-after: --q4
+ :end-before: --q5
+
+
+
+.. index::
+ single: aStarCost(Many to Many) -- Proposed
+
+Many to Many
+.......................................
+
+.. code-block:: none
+
+ pgr_aStarCost(edges_sql, starts_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
+ RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
+
+This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra`
+for all ``start_vids``.
+
+- The result is the union of the results of the one to one `pgr_dijkstra`.
+- The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
+
+The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-aStarCost.queries
+ :start-after: --q5
+ :end-before: --q6
+
+
+
+
+
+
+Description of the Signatures
+--------------------------------
+
+..
+ description of the edges_sql queries
+
+.. include:: pgRouting-concepts.rst
+ :start-after: xy_edges_sql_start
+ :end-before: xy_edges_sql_end
+
+
+Description of the parameters of the signatures
+.................................................
+
+================ ====================== =================================================
+Parameter Type Description
+================ ====================== =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**start_vid** ``ANY-INTEGER`` Starting vertex identifier.
+**end_vid** ``ANY-INTEGER`` Ending vertex identifier.
+**directed** ``BOOLEAN`` - Optional.
+
+ - When ``false`` the graph is considered as Undirected.
+ - Default is ``true`` which considers the graph as Directed.
+
+**heuristic** ``INTEGER`` (optional). Heuristic number. Current valid values 0~5. Default ``5``
+
+ - 0: h(v) = 0 (Use this value to compare with pgr_dijkstra)
+ - 1: h(v) abs(max(dx, dy))
+ - 2: h(v) abs(min(dx, dy))
+ - 3: h(v) = dx * dx + dy * dy
+ - 4: h(v) = sqrt(dx * dx + dy * dy)
+ - 5: h(v) = abs(dx) + abs(dy)
+
+**factor** ``FLOAT`` (optional). For units manipulation. :math:`factor > 0`. Default ``1``. See :ref:`astar_factor`
+**epsilon** ``FLOAT`` (optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``.
+================ ====================== =================================================
+
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_cost_start
+ :end-before: return_cost_end
+
+
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`astar`.
+* :doc:`sampledata` network.
+* http://www.boost.org/libs/graph/doc/astar_search.html
+* http://en.wikipedia.org/wiki/A*_search_algorithm
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/bdAstar/CMakeLists.txt b/doc/bdAstar/CMakeLists.txt
new file mode 100644
index 0000000..6450aeb
--- /dev/null
+++ b/doc/bdAstar/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+SET(LOCAL_FILES
+ bdAstar-family.rst
+ pgr_bdAstarCost.rst
+ pgr_bdAstar.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/bdAstar/bdAstar-family.rst b/doc/bdAstar/bdAstar-family.rst
new file mode 100644
index 0000000..feae1b6
--- /dev/null
+++ b/doc/bdAstar/bdAstar-family.rst
@@ -0,0 +1,108 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _bdastar:
+
+Bidirectional A* - Family of functions
+===============================================================================
+
+.. index from here
+
+* :ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths.
+* :ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of the paths.
+* :ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a cost matrix of paths.
+
+.. index to here
+
+.. toctree::
+ :hidden:
+
+ pgr_bdAstar
+ pgr_bdAstarCost
+ pgr_bdAstarCostMatrix
+
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Based on A* algorithm, the bidirectional search finds a shortest path from
+a starting vertex (``start_vid``) to an ending vertex (``end_vid``).
+It runs two simultaneous searches: one forward from the ``start_vid``, and one backward from the ``end_vid``,
+stopping when the two meet in the middle.
+This implementation can be used with a directed graph and an undirected graph.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+
+- Process is done only on edges with positive costs.
+- Values are returned when there is a path.
+
+- When the starting vertex and ending vertex are the same, there is no path.
+
+ - The `agg_cost` the non included values `(v, v)` is `0`
+
+- When the starting vertex and ending vertex are the different and there is no path:
+
+ - The `agg_cost` the non included values `(u, v)` is :math:`\infty`
+
+- Running time (worse case scenario): :math:`O((E + V) * \log V)`
+- For large graphs where there is a path bewtween the starting vertex and ending vertex:
+
+ - It is expected to terminate faster than pgr_astar
+
+Description of the Signatures
+--------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: xy_edges_sql_start
+ :end-before: xy_edges_sql_end
+
+.. parameters_begin
+
+Description of the parameters of the signatures
+.................................................
+
+================ ====================== =================================================
+Parameter Type Description
+================ ====================== =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**start_vid** ``ANY-INTEGER`` Starting vertex identifier.
+**start_vids** ``ARRAY[ANY-INTEGER]`` Starting vertices identifierers.
+**end_vid** ``ANY-INTEGER`` Ending vertex identifier.
+**end_vids** ``ARRAY[ANY-INTEGER]`` Ending vertices identifiers.
+**directed** ``BOOLEAN`` - Optional.
+
+ - When ``false`` the graph is considered as Undirected.
+ - Default is ``true`` which considers the graph as Directed.
+
+**heuristic** ``INTEGER`` (optional). Heuristic number. Current valid values 0~5. Default ``5``
+
+ - 0: h(v) = 0 (Use this value to compare with pgr_dijkstra)
+ - 1: h(v) abs(max(dx, dy))
+ - 2: h(v) abs(min(dx, dy))
+ - 3: h(v) = dx * dx + dy * dy
+ - 4: h(v) = sqrt(dx * dx + dy * dy)
+ - 5: h(v) = abs(dx) + abs(dy)
+
+**factor** ``FLOAT`` (optional). For units manipulation. :math:`factor > 0`. Default ``1``. see :ref:`astar_factor`
+**epsilon** ``FLOAT`` (optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``.
+================ ====================== =================================================
+
+.. parameters_end
+
+See Also
+-------------------------------------------------------------------------------
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/bdAstar/pgr_bdAstar.rst b/doc/bdAstar/pgr_bdAstar.rst
new file mode 100644
index 0000000..6ba3121
--- /dev/null
+++ b/doc/bdAstar/pgr_bdAstar.rst
@@ -0,0 +1,224 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_bdAstar:
+
+pgr_bdAstar
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_bdAstar`` — Returns the shortest path using A* algorithm.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org//libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability:
+
+* pgr_bdAstar(one to one) 2.0.0, Signature change on 2.5.0
+* pgr_bdAstar(other signatures) 2.5.0
+
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_bdAstar(edges_sql, start_vid, end_vid)
+ pgr_bdAstar(edges_sql, start_vid, end_vid, directed [, heuristic, factor, epsilon])
+ RETURNS SET OF (seq, path_seq , node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+.. code-block:: none
+
+ pgr_bdAstar(edges_sql, start_vid, end_vids [, directed, heuristic, factor, epsilon])
+ pgr_bdAstar(edges_sql, start_vids, end_vid [, directed, heuristic, factor, epsilon])
+ pgr_bdAstar(edges_sql, start_vids, end_vids [, directed, heuristic, factor, epsilon])
+
+ RETURNS SET OF (seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+Using these signatures, will load once the graph and perform several one to one `pgr_bdAstar`
+
+- The result is the union of the results of the one to one `pgr_bdAStar`.
+- The extra ``start_vid`` and/or ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+
+.. rubric:: Avaliability
+
+* pgr_bdAstar(one to one) 2.0, signature change on 2.5
+* pgr_bdAstar(other signatures) 2.5
+
+
+
+Signatures
+-----------------
+
+
+.. index::
+ single: bdAstar(Minimal Use) -- New Signature
+
+
+Minimal Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_bdAstar(edges_sql, start_vid, end_vid)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
+
+This usage finds the shortest path from the ``start_vid`` to the ``end_vid``
+ - on a **directed** graph
+ - with **heuristic**'s value 5
+ - with **factor**'s value 1
+ - with **epsilon**'s value 1
+
+:Example: Using the defaults
+
+.. literalinclude:: doc-pgr_bdAstar.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+
+.. index::
+ single: bdAstar(One to One) -- New Signature
+
+
+pgr_bdAstar One to One
+...............................................................................
+.. code-block:: none
+
+ pgr_bdAstar(edges_sql, start_vid, end_vid, directed [, heuristic, factor, epsilon])
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
+
+This usage finds the shortest path from the ``start_vid`` to the ``end_vid`` allowing the user to choose
+ * **heuristic**,
+ * and/or **factor**
+ * and/or **epsilon**.
+
+.. NOTE::
+ In the One to One signature, because of the deprecated signature existence, it is compulsory to indicate if the graph is **directed** or **undirected**.
+
+:Example: Directed using Heuristic 2
+
+.. literalinclude:: doc-pgr_bdAstar.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. index::
+ single: bdAstar(One to Many) - Proposed
+
+pgr_bdAstar One to many
+.......................................
+
+.. code-block:: none
+
+ pgr_bdAstar(edges_sql, start_vid, end_vids [, directed, heuristic, factor, epsilon])
+ RETURNS SET OF (seq, path_seq, end_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This usage finds the shortest path from the ``start_vid`` to each ``end_vid`` in ``end_vids`` allowing the user to choose
+ * if the graph is **directed** or **undirected**
+ * and/or **heuristic**,
+ * and/or **factor**
+ * and/or **epsilon**.
+
+
+:Example: Directed using Heuristic 3 and a factor of 3.5
+
+.. literalinclude:: doc-pgr_bdAstar.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+.. index::
+ single: bdAstar(Many to One) - Proposed
+
+
+pgr_bdAstar Many to One
+.......................................
+
+.. code-block:: none
+
+ pgr_bdAstar(edges_sql, start_vids, end_vid [, directed, heuristic, factor, epsilon])
+ RETURNS SET OF (seq, path_seq, start_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This usage finds the shortest path from each ``start_vid`` in ``start_vids`` to the ``end_vid`` allowing the user to choose
+ * if the graph is **directed** or **undirected**
+ * and/or **heuristic**,
+ * and/or **factor**
+ * and/or **epsilon**.
+
+:Example: Undirected graph with Heuristic 4
+
+.. literalinclude:: doc-pgr_bdAstar.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+
+.. index::
+ single: bdAstar(Many to Many) - Proposed
+
+pgr_bdAstar Many to Many
+.......................................
+
+.. code-block:: none
+
+ pgr_bdAstar(edges_sql, start_vids, end_vids [, directed, heuristic, factor, epsilon])
+ RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This usage finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids`` allowing the user to choose
+ * if the graph is **directed** or **undirected**
+ * and/or **heuristic**,
+ * and/or **factor**
+ * and/or **epsilon**.
+
+:Example: Directed graph with a factor of 0.5
+
+.. literalinclude:: doc-pgr_bdAstar.queries
+ :start-after: -- q5
+ :end-before: -- q6
+
+Description of the Signatures
+--------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: xy_edges_sql_start
+ :end-before: xy_edges_sql_end
+
+.. include:: bdAstar-family.rst
+ :start-after: parameters_begin
+ :end-before: parameters_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_path_start
+ :end-before: return_path_end
+
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`bdAstar`
+* :doc:`sampledata` network.
+* http://www.boost.org/libs/graph/doc/astar_search.html
+* http://en.wikipedia.org/wiki/A*_search_algorithm
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/bdAstar/pgr_bdAstarCost.rst b/doc/bdAstar/pgr_bdAstarCost.rst
new file mode 100644
index 0000000..4011d5e
--- /dev/null
+++ b/doc/bdAstar/pgr_bdAstarCost.rst
@@ -0,0 +1,214 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_bdAstarCost:
+
+pgr_bdAstarCost - Proposed
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_bdAstarCost`` — Returns the shortest path using A* algorithm.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org//libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.5.0
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_bdAstarCost(edges_sql, start_vid, end_vid)
+ pgr_bdAstarCost(edges_sql, start_vid, end_vid [, directed , heuristic, factor, epsilon])
+ pgr_bdAstarCost(edges_sql, start_vid, end_vids [, directed, heuristic, factor, epsilon])
+ pgr_bdAstarCost(edges_sql, start_vids, end_vid [, directed, heuristic, factor, epsilon])
+ pgr_bdAstarCost(edges_sql, start_vids, end_vids [, directed, heuristic, factor, epsilon])
+
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+ OR EMPTY SET
+
+
+Using these signatures, will load once the graph and perform several one to one `pgr_bdAstarCost`
+
+- The result is the union of the results of the one to one `pgr_bdAstarCost`.
+- The extra ``start_vid`` and/or ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+
+
+
+
+Signatures
+-----------------
+
+
+.. index::
+ single: bdAstarCost(Minimal Use) -- New Signature
+
+
+Minimal Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_bdAstarCost(edges_sql, start_vid, end_vid)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+This usage finds the shortest path from the ``start_vid`` to the ``end_vid``
+ - on a **directed** graph
+ - with **heuristic**'s value 5
+ - with **factor**'s value 1
+ - with **epsilon**'s value 1
+
+:Example: Using the defaults
+
+.. literalinclude:: doc-pgr_bdAstarCost.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+
+.. index::
+ single: bdAstarCost(One to One) -- New Signature
+
+
+pgr_bdAstarCost One to One
+...............................................................................
+.. code-block:: none
+
+ pgr_bdAstarCost(edges_sql, start_vid, end_vid [, directed, heuristic, factor, epsilon])
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+This usage finds the shortest path from the ``start_vid`` to each ``end_vid`` in ``end_vids`` allowing the user to choose
+ * if the graph is **directed** or **undirected**
+ * **heuristic**,
+ * and/or **factor**
+ * and/or **epsilon**.
+
+.. NOTE::
+ In the One to One signature, because of the deprecated signature existence, it is compulsory to indicate if the graph is **directed** or **undirected**.
+
+:Example: Directed using Heuristic 2
+
+.. literalinclude:: doc-pgr_bdAstarCost.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. index::
+ single: bdAstarCost(One to Many) - Proposed
+
+pgr_bdAstarCost One to many
+.......................................
+
+.. code-block:: none
+
+ pgr_bdAstarCost(edges_sql, start_vid, end_vids [, directed, heuristic, factor, epsilon])
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+This usage finds the shortest path from the ``start_vid`` to each ``end_vid`` in ``end_vids`` allowing the user to choose
+ * if the graph is **directed** or **undirected**
+ * and/or **heuristic**,
+ * and/or **factor**
+ * and/or **epsilon**.
+
+
+:Example: Directed using Heuristic 3 and a factor of 3.5
+
+.. literalinclude:: doc-pgr_bdAstarCost.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+.. index::
+ single: bdAstarCost(Many to One) - Proposed
+
+
+pgr_bdAstarCost Many to One
+.......................................
+
+.. code-block:: none
+
+ pgr_bdAstarCost(edges_sql, start_vids, end_vid [, directed, heuristic, factor, epsilon])
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+This usage finds the shortest path from each ``start_vid`` in ``start_vids`` to the ``end_vid`` allowing the user to choose
+ * if the graph is **directed** or **undirected**
+ * and/or **heuristic**,
+ * and/or **factor**
+ * and/or **epsilon**.
+
+:Example: Undirected graph with Heuristic 4
+
+.. literalinclude:: doc-pgr_bdAstarCost.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+
+.. index::
+ single: bdAstarCost(Many to Many) - Proposed
+
+pgr_bdAstarCost Many to Many
+.......................................
+
+.. code-block:: none
+
+ pgr_bdAstarCost(edges_sql, start_vids, end_vids [, directed, heuristic, factor, epsilon])
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+This usage finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids`` allowing the user to choose
+ * if the graph is **directed** or **undirected**
+ * and/or **heuristic**,
+ * and/or **factor**
+ * and/or **epsilon**.
+
+:Example: Directed graph with a factor of 0.5
+
+.. literalinclude:: doc-pgr_bdAstarCost.queries
+ :start-after: -- q5
+ :end-before: -- q6
+
+Description of the Signatures
+--------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: xy_edges_sql_start
+ :end-before: xy_edges_sql_end
+
+.. include:: bdAstar-family.rst
+ :start-after: parameters_begin
+ :end-before: parameters_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_cost_start
+ :end-before: return_cost_end
+
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`bdAstar`
+* :doc:`sampledata` network.
+* `Migration Guide <https://github.com/cvvergara/pgrouting/wiki/Migration-Guide#pgr_bdastar>`_
+* http://www.boost.org/libs/graph/doc/astar_search.html
+* http://en.wikipedia.org/wiki/A*_search_algorithm
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/bdDijkstra/CMakeLists.txt b/doc/bdDijkstra/CMakeLists.txt
new file mode 100644
index 0000000..ebf4cea
--- /dev/null
+++ b/doc/bdDijkstra/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+SET(LOCAL_FILES
+ bdDijkstra-family.rst
+ pgr_bdDijkstraCost.rst
+ pgr_bdDijkstra.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/bdDijkstra/bdDijkstra-family.rst b/doc/bdDijkstra/bdDijkstra-family.rst
new file mode 100644
index 0000000..0c83420
--- /dev/null
+++ b/doc/bdDijkstra/bdDijkstra-family.rst
@@ -0,0 +1,68 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _bddijkstra:
+
+Bidirectional Dijkstra - Family of functions
+===============================================================================
+
+.. index from here
+
+* :ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest paths.
+* :ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of the shortest paths
+* :ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to create a matrix of costs of the shortest paths.
+
+.. index to here
+
+.. toctree::
+ :hidden:
+
+ pgr_bdDijkstra
+ pgr_bdDijkstraCost
+ pgr_bdDijkstraCostMatrix
+
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Based on Dijkstra's algorithm, the bidirectional search finds a shortest path
+a starting vertex (``start_vid``) to an ending vertex (``end_vid``).
+It runs two simultaneous searches: one forward from the source, and one backward from the target,
+stopping when the two meet in the middle.
+This implementation can be used with a directed graph and an undirected graph.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+
+- Process is done only on edges with positive costs.
+- Values are returned when there is a path.
+
+- When the starting vertex and ending vertex are the same, there is no path.
+
+ - The `agg_cost` the non included values `(v, v)` is `0`
+
+- When the starting vertex and ending vertex are the different and there is no path:
+
+ - The `agg_cost` the non included values `(u, v)` is :math:`\infty`
+
+- Running time (worse case scenario): :math:`O((V \log V + E))`
+- For large graphs where there is a path bewtween the starting vertex and ending vertex:
+
+ - It is expected to terminate faster than pgr_dijkstra
+
+See Also
+-------------------------------------------------------------------------------
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/bdDijkstra/pgr_bdDijkstra.rst b/doc/bdDijkstra/pgr_bdDijkstra.rst
new file mode 100644
index 0000000..6834a93
--- /dev/null
+++ b/doc/bdDijkstra/pgr_bdDijkstra.rst
@@ -0,0 +1,219 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_bdDijkstra:
+
+pgr_bdDijkstra
+===============================================================================
+
+``pgr_bdDijkstra`` — Returns the shortest path(s) using Bidirectional Dijkstra algorithm.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc
+
+ Boost Graph Inside
+
+.. rubric:: Availability:
+
+* pgr_bdDijkstra(one to one) 2.0.0, Signature changed 2.4.0
+* pgr_bdDijkstra(other signatures) 2.5.0
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_bdDijkstra(edges_sql, start_vid, end_vid)
+ pgr_bdDijkstra(edges_sql, start_vid, end_vid, directed)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+.. code-block:: none
+
+ pgr_bdDijkstra(edges_sql, start_vid, end_vids, directed)
+ pgr_bdDijkstra(edges_sql, start_vids, end_vid, directed)
+ pgr_bdDijkstra(edges_sql, start_vids, end_vids, directed)
+
+ RETURNS SET OF (seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: bdDijkstra(Minimal Use)
+
+Minimal signature
+.......................................
+
+.. code-block:: none
+
+ pgr_bdDijkstra(edges_sql, start_vid, end_vid)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``:
+
+:Example:
+
+.. literalinclude:: doc-pgr_bdDijkstra.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: bdDijkstra(One to One)
+
+pgr_bdDijkstra One to One
+.......................................
+
+.. code-block:: none
+
+ pgr_bdDijkstra(edges_sql, start_vid, end_vid, directed)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from one ``start_vid`` to one ``end_vid``:
+
+- on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+- on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+:Example:
+
+.. literalinclude:: doc-pgr_bdDijkstra.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. index::
+ single: bdDijkstra(One to Many) - Proposed
+
+pgr_bdDijkstra One to many
+.......................................
+
+.. code-block:: none
+
+ pgr_bdDijkstra(edges_sql, start_vid, end_vids, directed)
+ RETURNS SET OF (seq, path_seq, end_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:
+
+- on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+- on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform a one to one `pgr_dijkstra`
+where the starting vertex is fixed, and stop when all ``end_vids`` are reached.
+
+- The result is equivalent to the union of the results of the one to one `pgr_dijkstra`.
+- The extra ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-pgr_bdDijkstra.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+.. index::
+ single: bdDijkstra(Many to One) - Proposed
+
+
+pgr_bdDijkstra Many to One
+.......................................
+
+.. code-block:: none
+
+ pgr_bdDijkstra(edges_sql, start_vids, end_vid, directed)
+ RETURNS SET OF (seq, path_seq, start_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:
+
+- on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+- on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform several one to one `pgr_dijkstra`
+where the ending vertex is fixed.
+
+- The result is the union of the results of the one to one `pgr_dijkstra`.
+- The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-pgr_bdDijkstra.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+
+.. index::
+ single: bdDijkstra(Many to Many) - Proposed
+
+pgr_bdDijkstra Many to Many
+.......................................
+
+.. code-block:: none
+
+ pgr_bdDijkstra(edges_sql, start_vids, end_vids, directed)
+ RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:
+
+- on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+- on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra`
+for all ``start_vids``.
+
+- The result is the union of the results of the one to one `pgr_dijkstra`.
+- The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
+
+The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-pgr_bdDijkstra.queries
+ :start-after: -- q5
+ :end-before: -- q6
+
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+.. include:: pgr_dijkstra.rst
+ :start-after: pgr_dijkstra_parameters_start
+ :end-before: pgr_dijkstra_parameters_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_path_start
+ :end-before: return_path_end
+
+
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* The queries use the :doc:`sampledata` network.
+* :ref:`bdDijkstra`
+* http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf
+* https://en.wikipedia.org/wiki/Bidirectional_search
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/bdDijkstra/pgr_bdDijkstraCost.rst b/doc/bdDijkstra/pgr_bdDijkstraCost.rst
new file mode 100644
index 0000000..584442c
--- /dev/null
+++ b/doc/bdDijkstra/pgr_bdDijkstraCost.rst
@@ -0,0 +1,206 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_bdDijkstraCost:
+
+pgr_bdDijkstraCost - Proposed
+===============================================================================
+
+``pgr_bdDijkstraCost`` — Returns the shortest path(s)'s cost using Bidirectional Dijkstra algorithm.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.5.0
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+Signature Summary
+-----------------
+
+
+.. code-block:: none
+
+ pgr_dijkstraCost(edges_sql, start_vid, end_vid)
+ pgr_bdDijkstraCost(edges_sql, start_vid, end_vid, directed)
+ pgr_bdDijkstraCost(edges_sql, start_vid, end_vids, directed)
+ pgr_bdDijkstraCost(edges_sql, start_vids, end_vid, directed)
+ pgr_bdDijkstraCost(edges_sql, start_vids, end_vids, directed)
+
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+ OR EMPTY SET
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: bdDijkstraCost(Minimal Use) - Proposed
+
+Minimal signature
+.......................................
+
+.. code-block:: none
+
+ pgr_bdDijkstraCost(edges_sql, start_vid, end_vid)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``:
+
+:Example:
+
+.. literalinclude:: doc-pgr_bdDijkstraCost.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: bdDijkstraCost(One to One)
+
+pgr_bdDijkstraCost One to One
+.......................................
+
+.. code-block:: none
+
+ pgr_bdDijkstraCost(edges_sql, start_vid, end_vid, directed)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from one ``start_vid`` to one ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+:Example:
+
+.. literalinclude:: doc-pgr_bdDijkstra.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. index::
+ single: bdDijkstraCost(One to Many) - Proposed
+
+pgr_bdDijkstraCost One to many
+.......................................
+
+.. code-block:: none
+
+ pgr_bdDijkstra(edges_sql, start_vid, end_vids, directed)
+ RETURNS SET OF (seq, path_seq, end_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform a one to one `pgr_dijkstra`
+where the starting vertex is fixed, and stop when all ``end_vids`` are reached.
+
+ - The result is equivalent to the union of the results of the one to one `pgr_dijkstra`.
+ - The extra ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-pgr_bdDijkstraCost.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+.. index::
+ single: bdDijkstraCost(Many to One) - Proposed
+
+
+pgr_bdDijkstraCost Many to One
+.......................................
+
+.. code-block:: none
+
+ pgr_bdDijkstra(edges_sql, start_vids, end_vid, directed)
+ RETURNS SET OF (seq, path_seq, start_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform several one to one `pgr_dijkstra`
+where the ending vertex is fixed.
+
+ - The result is the union of the results of the one to one `pgr_dijkstra`.
+ - The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-pgr_bdDijkstra.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+
+.. index::
+ single: bdDijkstraCost(Many to Many) - Proposed
+
+pgr_bdDijkstraCost Many to Many
+.......................................
+
+.. code-block:: none
+
+ pgr_bdDijkstra(edges_sql, start_vids, end_vids, directed)
+ RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra`
+for all ``start_vids``.
+
+ - The result is the union of the results of the one to one `pgr_dijkstra`.
+ - The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
+
+The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-pgr_bdDijkstra.queries
+ :start-after: -- q5
+ :end-before: -- q6
+
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+.. include:: pgr_dijkstra.rst
+ :start-after: pgr_dijkstra_parameters_start
+ :end-before: pgr_dijkstra_parameters_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_cost_start
+ :end-before: return_cost_end
+
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* The queries use the :doc:`sampledata` network.
+* :ref:`pgr_bdDijkstra`
+* http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf
+* https://en.wikipedia.org/wiki/Bidirectional_search
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/common/CMakeLists.txt b/doc/common/CMakeLists.txt
new file mode 100644
index 0000000..d96ac26
--- /dev/null
+++ b/doc/common/CMakeLists.txt
@@ -0,0 +1,15 @@
+
+SET(LOCAL_FILES
+ cost_result.rst
+ geom_result.rst
+ pgr_version.rst
+ types_index.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/common/cost_result.rst b/doc/common/cost_result.rst
new file mode 100644
index 0000000..a241456
--- /dev/null
+++ b/doc/common/cost_result.rst
@@ -0,0 +1,92 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _type_cost_result:
+
+pgr_costResult[]
+===============================================================================
+
+.. index::
+ single: pgr_costResult[]
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_costResult[]`` — A set of records to describe a path result with cost attribute.
+
+
+Description
+-------------------------------------------------------------------------------
+
+.. code-block:: sql
+
+ CREATE TYPE pgr_costResult AS
+ (
+ seq integer,
+ id1 integer,
+ id2 integer,
+ cost float8
+ );
+
+:seq: sequential ID indicating the path order
+:id1: generic name, to be specified by the function, typically the node id
+:id2: generic name, to be specified by the function, typically the edge id
+:cost: cost attribute
+
+
+.. _type_cost_result3:
+
+pgr_costResult3[] - Multiple Path Results with Cost
+===============================================================================
+
+.. index::
+ single: pgr_costResult3[]
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_costResult3[]`` — A set of records to describe a path result with cost attribute.
+
+
+Description
+-------------------------------------------------------------------------------
+
+.. code-block:: sql
+
+ CREATE TYPE pgr_costResult3 AS
+ (
+ seq integer,
+ id1 integer,
+ id2 integer,
+ id3 integer,
+ cost float8
+ );
+
+:seq: sequential ID indicating the path order
+:id1: generic name, to be specified by the function, typically the path id
+:id2: generic name, to be specified by the function, typically the node id
+:id3: generic name, to be specified by the function, typically the edge id
+:cost: cost attribute
+
+
+.. rubric:: History
+
+* New in version 2.0.0
+* Replaces ``path_result``
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`introduction`
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/common/geom_result.rst b/doc/common/geom_result.rst
new file mode 100644
index 0000000..43f7efd
--- /dev/null
+++ b/doc/common/geom_result.rst
@@ -0,0 +1,58 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _type_geom_result:
+
+pgr_geomResult[]
+===============================================================================
+
+.. index::
+ single: pgr_geomResult[]
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_geomResult[]`` — A set of records to describe a path result with geometry attribute.
+
+
+Description
+-------------------------------------------------------------------------------
+
+.. code-block:: sql
+
+ CREATE TYPE pgr_geomResult AS
+ (
+ seq integer,
+ id1 integer,
+ id2 integer,
+ geom geometry
+ );
+
+:seq: sequential ID indicating the path order
+:id1: generic name, to be specified by the function
+:id2: generic name, to be specified by the function
+:geom: geometry attribute
+
+
+.. rubric:: History
+
+* New in version 2.0.0
+* Replaces ``geoms``
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`introduction`
+
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/common/pgr_version.rst b/doc/common/pgr_version.rst
new file mode 100644
index 0000000..c0e9c7a
--- /dev/null
+++ b/doc/common/pgr_version.rst
@@ -0,0 +1,83 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_version:
+
+pgr_version
+===============================================================================
+
+.. index::
+ single: version()
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_version`` — Query for pgRouting version information.
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Returns a table with pgRouting version information.
+
+.. code-block:: sql
+
+ table() pgr_version();
+
+
+Description
+-------------------------------------------------------------------------------
+
+Returns a table with:
+
+=========== =========== ===============================
+Column Type Description
+=========== =========== ===============================
+**version** ``varchar`` pgRouting version
+**tag** ``varchar`` Git tag of pgRouting build
+**hash** ``varchar`` Git hash of pgRouting build
+**branch** ``varchar`` Git branch of pgRouting build
+**boost** ``varchar`` Boost version
+=========== =========== ===============================
+
+
+.. rubric:: History
+
+* New in version 2.0.0
+
+
+Examples
+-------------------------------------------------------------------------------
+
+* Query for full version string
+
+.. literalinclude:: doc-pgr_version.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+
+* Query for ``version`` and ``boost`` attribute
+
+.. code-block:: sql
+
+ SELECT version, boost FROM pgr_version();
+
+ version | boost
+ -----------+--------
+ 2.2.0-dev | 1.49.0
+ (1 row)
+
+See Also
+-------------------------------------------------------------------------------
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/common/types_index.rst b/doc/common/types_index.rst
new file mode 100644
index 0000000..788d545
--- /dev/null
+++ b/doc/common/types_index.rst
@@ -0,0 +1,35 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _data_types:
+
+pgRouting Data Types
+===============================================================================
+
+The following are commonly used data types for some of the pgRouting functions.
+
+ - :ref:`type_cost_result` - A set of records to describe a path result with cost attribute.
+ - :ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe a path result with cost attribute.
+ - :ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a path result with geometry attribute.
+
+
+
+.. toctree::
+ :hidden:
+
+ pgr_costResult[] - Path Result with Cost <cost_result>
+ pgr_geomResult[] - Path Result with Geometry <geom_result>
+
+See Also
+-------------------------------------------------------------------------------
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/components/CMakeLists.txt b/doc/components/CMakeLists.txt
new file mode 100644
index 0000000..6e0453f
--- /dev/null
+++ b/doc/components/CMakeLists.txt
@@ -0,0 +1,18 @@
+
+SET(LOCAL_FILES
+ components-family.rst
+ pgr_connectedComponents.rst
+ pgr_strongComponents.rst
+ pgr_biconnectedComponents.rst
+ pgr_articulationPoints.rst
+ pgr_bridges.rst
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}")
+ list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f})
+endforeach()
+
+add_subdirectory("images")
+set(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} PARENT_SCOPE)
diff --git a/doc/components/components-family.rst b/doc/components/components-family.rst
new file mode 100644
index 0000000..0e7b5c3
--- /dev/null
+++ b/doc/components/components-family.rst
@@ -0,0 +1,488 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _components:
+
+Components - Family of functions
+===============================================================================
+
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+.. index from here
+
+* :ref:`pgr_connectedComponents` - Return the connected components of an undirected graph.
+* :ref:`pgr_strongComponents` - Return the strongly connected components of a directed graph.
+* :ref:`pgr_biconnectedComponents` - Return the biconnected components of an undirected graph.
+* :ref:`pgr_articulationPoints` - Return the articulation points of an undirected graph.
+* :ref:`pgr_bridges` - Return the bridges of an undirected graph.
+
+.. index to here
+
+
+.. toctree::
+ :hidden:
+
+ pgr_connectedComponents
+ pgr_strongComponents
+ pgr_biconnectedComponents
+ pgr_articulationPoints
+ pgr_bridges
+
+
+The problem definition
+-----------------------------------------------
+
+.. rubric:: Connected components
+
+A connected component of an undirected graph is a set of vertices that are all reachable
+from each other.
+
+**Notice**: This problem defines on an undirected graph.
+
+Given the following query:
+
+
+pgr_connectedComponentsV(:math:`sql`)
+
+where :math:`sql = \{(id_i, source_i, target_i, cost_i, reverse\_cost_i)\}`
+
+and
+
+ - :math:`source = \bigcup source_i`,
+ - :math:`target = \bigcup target_i`,
+
+The graphs are defined as follows:
+
+The weighted undirected graph, :math:`G(V,E)`, is definied by:
+
+* the set of vertices :math:`V`
+
+ - :math:`V = source \cup target`
+
+
+* the set of edges :math:`E`
+
+ - :math:`E = \begin{cases} &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, cost_i) \text{ when } cost >=0 \} &\quad \text{ if } reverse\_cost = \varnothing \\ \\ &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, reverse\_cost_i) \text{ when } reverse\_cost_i >=0)\} \\ \cup &\{(source_i, target_i, reverse\_cost_i) \text{ when } reverse\_co [...]
+
+
+Given:
+
+ - :math:`G(V,E)`
+
+Then:
+
+.. math:: \text{pgr_connectedComponentsV}(sql) =
+ \begin{cases}
+ \text{all connected components } \boldsymbol{\pi} \text{ in } G(V,E) &\quad \text{if } \exists \boldsymbol{\pi} \\
+ \varnothing &\quad \text{otherwise} \\
+ \end{cases}
+
+:math:`\boldsymbol{\pi} = \{(component_i, n\_seq_i, node_i)\}`
+
+where:
+ - :math:`component_i = \min \{node_j | node_j \in component_i\}`
+ - :math:`n\_seq_i` is a sequential value starting from **1** in a component.
+ - :math:`node_i \in component_i`
+ - The returned values are ordered:
+
+ - `component` ascending
+ - `node` ascending
+
+Example:
+ - The first component is composed of nodes ``0``, ``1`` and ``4``.
+ - The second component is composed of node ``3``.
+ - The third component is composed of nodes ``2`` and ``5``.
+
+.. image:: images/connected_components.jpeg
+ :width: 280px
+ :height: 323px
+
+
+.. rubric:: Strongly connected components
+
+A strongly connected component of a directed graph is a set of vertices that are all reachable
+from each other.
+
+**Notice**: This problem defines on a directed graph.
+
+Given the following query:
+
+
+pgr_strongComponentsV(:math:`sql`)
+
+where :math:`sql = \{(id_i, source_i, target_i, cost_i, reverse\_cost_i)\}`
+
+and
+
+ - :math:`source = \bigcup source_i`,
+ - :math:`target = \bigcup target_i`,
+
+The graphs are defined as follows:
+
+The weighted directed graph, :math:`G_d(V,E)`, is definied by:
+
+* the set of vertices :math:`V`
+
+ - :math:`V = source \cup target \cup {start_{vid}} \cup {end_{vid}}`
+
+* the set of edges :math:`E`
+
+ - :math:`E = \begin{cases} &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} &\quad \text{ if } reverse\_cost = \varnothing \\ \\ &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, reverse\_cost_i) \text{ when } reverse\_cost_i >=0)\} &\quad \text{ if } reverse\_cost \neq \varnothing \\ \end{cases}`
+
+
+Given:
+
+ - :math:`G(V,E)`
+
+Then:
+
+.. math:: \text{pgr_strongComponentsV}(sql) =
+ \begin{cases}
+ \text{all strongly connected components } \boldsymbol{\pi} \text{ in } G(V,E) &\quad \text{if } \exists \boldsymbol{\pi} \\
+ \varnothing &\quad \text{otherwise} \\
+ \end{cases}
+
+:math:`\boldsymbol{\pi} = \{(component_i, n\_seq_i, node_i)\}`
+
+where:
+ - :math:`component_i = \min {node_j | node_j \in component_i}`
+ - :math:`n\_seq_i` is a sequential value starting from **1** in a component.
+ - :math:`node_i \in component_i`
+ - The returned values are ordered:
+
+ - `component` ascending
+ - `node` ascending
+
+Example:
+ - The first component is composed of nodes ``1``, ``2`` and ``4``.
+ - The second component is composed of node ``0``.
+ - The third component is composed of node ``3``.
+ - The fourth component is composed of node ``5``.
+ - The fifth component is composed of node ``6``.
+
+.. image:: images/strong_components.jpeg
+ :width: 270px
+ :height: 323px
+
+.. rubric:: Biconnected components
+
+The biconnected components of an undirected graph are the maximal subsets of vertices such that the removal of a vertex from
+particular component will not disconnect the component. Unlike connected components, vertices may belong to multiple biconnected
+components. Vertices can be present in multiple biconnected components, but each edge can only be contained in a single biconnected
+component. So, the output only has edge version.
+
+**Notice**: This problem defines on an undirected graph.
+
+Given the following query:
+
+
+pgr_biconnectedComponents(:math:`sql`)
+
+where :math:`sql = \{(id_i, source_i, target_i, cost_i, reverse\_cost_i)\}`
+
+and
+
+ - :math:`source = \bigcup source_i`,
+ - :math:`target = \bigcup target_i`,
+
+The graphs are defined as follows:
+
+The weighted undirected graph, :math:`G(V,E)`, is definied by:
+
+* the set of vertices :math:`V`
+
+ - :math:`V = source \cup target`
+
+
+* the set of edges :math:`E`
+
+ - :math:`E = \begin{cases} &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, cost_i) \text{ when } cost >=0 \} &\quad \text{ if } reverse\_cost = \varnothing \\ \\ &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, reverse\_cost_i) \text{ when } reverse\_cost_i >=0)\} \\ \cup &\{(source_i, target_i, reverse\_cost_i) \text{ when } reverse\_co [...]
+
+
+Given:
+
+ - :math:`G(V,E)`
+
+Then:
+
+.. math:: \text{pgr_biconnectedComponents}(sql) =
+ \begin{cases}
+ \text{all biconnected components } \boldsymbol{\pi} \text{ in } G(V,E) &\quad \text{if } \exists \boldsymbol{\pi} \\
+ \varnothing &\quad \text{otherwise} \\
+ \end{cases}
+
+:math:`\boldsymbol{\pi} = \{(component_i, n\_seq_i, node_i)\}`
+
+where:
+ - :math:`component_i = \min {node_j | node_j \in component_i}`
+ - :math:`n\_seq_i` is a sequential value starting from **1** in a component.
+ - :math:`edge_i \in component_i`
+ - The returned values are ordered:
+
+ - `component` ascending
+ - `edge` ascending
+
+Example:
+ - The first component is composed of edges ``1 - 2``, ``0 - 1`` and ``0 - 2``.
+ - The second component is composed of edges ``2 - 4``, ``2 - 3`` and ``3 - 4``.
+ - The third component is composed of edge ``5 - 6``.
+ - The fourth component is composed of edge ``6 - 7``.
+ - The fifth component is composed of edges ``8 - 9``, ``9 - 10`` and ``8 - 10``.
+
+.. image:: images/biconnected_components.jpeg
+ :width: 210px
+ :height: 325px
+
+.. rubric:: Articulation Points
+
+Those vertices that belong to more than one biconnected component are called
+articulation points or, equivalently, cut vertices. Articulation points are
+vertices whose removal would increase the number of connected components in
+the graph.
+
+**Notice**: This problem defines on an undirected graph.
+
+Given the following query:
+
+
+pgr_articulationPoints(:math:`sql`)
+
+where :math:`sql = \{(id_i, source_i, target_i, cost_i, reverse\_cost_i)\}`
+
+and
+
+ - :math:`source = \bigcup source_i`,
+ - :math:`target = \bigcup target_i`,
+
+The graphs are defined as follows:
+
+The weighted undirected graph, :math:`G(V,E)`, is definied by:
+
+* the set of vertices :math:`V`
+
+ - :math:`V = source \cup target`
+
+
+* the set of edges :math:`E`
+
+ - :math:`E = \begin{cases} &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, cost_i) \text{ when } cost >=0 \} &\quad \text{ if } reverse\_cost = \varnothing \\ \\ &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, reverse\_cost_i) \text{ when } reverse\_cost_i >=0)\} \\ \cup &\{(source_i, target_i, reverse\_cost_i) \text{ when } reverse\_co [...]
+
+
+Given:
+
+ - :math:`G(V,E)`
+
+Then:
+
+.. math:: \text{pgr_articulationPoints}(sql) =
+ \begin{cases}
+ \text{all articulation points } \boldsymbol{\pi} \text{ in } G(V,E) &\quad \text{if } \exists \boldsymbol{\pi} \\
+ \varnothing &\quad \text{otherwise} \\
+ \end{cases}
+
+:math:`\boldsymbol{\pi} = \{node_i\}`
+
+where:
+ - :math:`node_i` is an articulation point.
+ - The returned values are ordered:
+
+ - `node` ascending
+
+Example:
+ - Articulation points are nodes ``2`` and ``6``.
+
+.. image:: images/biconnected_components.jpeg
+ :width: 210px
+ :height: 325px
+
+.. rubric:: Bridges
+
+A bridge is an edge of an undirected graph whose deletion increases its number
+of connected components.
+
+**Notice**: This problem defines on an undirected graph.
+
+Given the following query:
+
+
+pgr_bridges(:math:`sql`)
+
+where :math:`sql = \{(id_i, source_i, target_i, cost_i, reverse\_cost_i)\}`
+
+and
+
+ - :math:`source = \bigcup source_i`,
+ - :math:`target = \bigcup target_i`,
+
+The graphs are defined as follows:
+
+The weighted undirected graph, :math:`G(V,E)`, is definied by:
+
+* the set of vertices :math:`V`
+
+ - :math:`V = source \cup target`
+
+
+* the set of edges :math:`E`
+
+ - :math:`E = \begin{cases} &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, cost_i) \text{ when } cost >=0 \} &\quad \text{ if } reverse\_cost = \varnothing \\ \\ &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, reverse\_cost_i) \text{ when } reverse\_cost_i >=0)\} \\ \cup &\{(source_i, target_i, reverse\_cost_i) \text{ when } reverse\_co [...]
+
+
+Given:
+
+ - :math:`G(V,E)`
+
+Then:
+
+.. math:: \text{pgr_bridges}(sql) =
+ \begin{cases}
+ \text{all bridges } \boldsymbol{\pi} \text{ in } G(V,E) &\quad \text{if } \exists \boldsymbol{\pi} \\
+ \varnothing &\quad \text{otherwise} \\
+ \end{cases}
+
+:math:`\boldsymbol{\pi} = \{edge_i\}`
+
+where:
+ - :math:`edge_i` is an edge.
+ - The returned values are ordered:
+
+ - `edge` ascending
+
+Example:
+ - Bridges are edges ``5 <--> 6`` and ``6 <--> 7``.
+
+.. image:: images/biconnected_components.jpeg
+ :width: 210px
+ :height: 325px
+
+.. components_edges_sql_start
+
+Description of the edges_sql query for components functions
+...............................................................................
+
+:edges_sql: an SQL query, which should return a set of rows with the following columns:
+
+================= =================== ======== =================================================
+Column Type Default Description
+================= =================== ======== =================================================
+**id** ``ANY-INTEGER`` Identifier of the edge.
+**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
+**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
+**cost** ``ANY-NUMERICAL`` Weight of the edge `(source, target)`
+
+ - When negative: edge `(source, target)` does not exist, therefore it's not part of the graph.
+
+**reverse_cost** ``ANY-NUMERICAL`` -1 Weight of the edge `(target, source)`,
+
+ - When negative: edge `(target, source)` does not exist, therefore it's not part of the graph.
+
+================= =================== ======== =================================================
+
+Where:
+
+:ANY-INTEGER: SMALLINT, INTEGER, BIGINT
+:ANY-NUMERICAL: SMALLINT, INTEGER, BIGINT, REAL, FLOAT
+
+
+.. components_edges_sql_end
+
+
+.. components_parameters_start
+
+Description of the parameters of the signatures
+...............................................................................
+
+=================== ====================== ========= =========================================
+Parameter Type Default Description
+=================== ====================== ========= =========================================
+**edges_sql** ``TEXT`` SQL query as described above.
+=================== ====================== ========= =========================================
+
+.. components_parameters_end
+
+
+.. return_componentsV_start
+
+Description of the return values for connected components and strongly connected components
+.............................................................................................................................
+
+Returns set of ``(seq, component, n_seq, node)``
+
+============== ========== =================================================
+Column Type Description
+============== ========== =================================================
+**seq** ``INT`` Sequential value starting from **1**.
+**component** ``BIGINT`` Component identifier. It is equal to the minimum node identifier in the component.
+**n_seq** ``INT`` It is a sequential value starting from **1** in a component.
+**node** ``BIGINT`` Identifier of the vertex.
+============== ========== =================================================
+
+.. return_componentsV_end
+
+
+.. return_componentsE_start
+
+Description of the return values for biconnected components, connected components (edge version) and strongly connected components
+.................................................................................................................................................
+
+Returns set of ``(seq, component, n_seq, edge)``
+
+============== ========== =================================================
+Column Type Description
+============== ========== =================================================
+**seq** ``INT`` Sequential value starting from **1**.
+**component** ``BIGINT`` Component identifier. It is equal to the minimum edge identifier in the component.
+**n_seq** ``INT`` It is a sequential value starting from **1** in a component.
+**edge** ``BIGINT`` Identifier of the edge.
+============== ========== =================================================
+
+.. return_componentsE_end
+
+.. return_cutvertices_start
+
+Description of the return values for articulation points
+..............................................................
+
+Returns set of ``(seq, node)``
+
+============== ========== =================================================
+Column Type Description
+============== ========== =================================================
+**seq** ``INT`` Sequential value starting from **1**.
+**node** ``BIGINT`` Identifier of the vertex.
+============== ========== =================================================
+
+.. return_cutvertices_end
+
+.. return_bridges_start
+
+Description of the return values for bridges
+..............................................................
+
+Returns set of ``(seq, node)``
+
+============== ========== =================================================
+Column Type Description
+============== ========== =================================================
+**seq** ``INT`` Sequential value starting from **1**.
+**edge** ``BIGINT`` Identifier of the edge.
+============== ========== =================================================
+
+.. return_bridges_end
+
+See Also
+-------------------------------------------------------------------------------
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/components/images/CMakeLists.txt b/doc/components/images/CMakeLists.txt
new file mode 100644
index 0000000..a5244b9
--- /dev/null
+++ b/doc/components/images/CMakeLists.txt
@@ -0,0 +1,20 @@
+
+SET(LOCAL_FILES
+ connected_components.jpeg
+ strong_components.jpeg
+ biconnected_components.jpeg
+
+ cc_sampledata.png
+ scc_sampledata.png
+ bcc_sampledata.png
+ ap_sampledata.png
+ bridge_sampledata.png
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}" COPYONLY)
+ list(APPEND LOCAL_IMG_FILES "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}")
+endforeach()
+
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} ${LOCAL_IMG_FILES} PARENT_SCOPE)
+
diff --git a/doc/components/images/ap_sampledata.png b/doc/components/images/ap_sampledata.png
new file mode 100644
index 0000000..1f76478
Binary files /dev/null and b/doc/components/images/ap_sampledata.png differ
diff --git a/doc/components/images/bcc_sampledata.png b/doc/components/images/bcc_sampledata.png
new file mode 100644
index 0000000..d5ce7b8
Binary files /dev/null and b/doc/components/images/bcc_sampledata.png differ
diff --git a/doc/components/images/biconnected_components.jpeg b/doc/components/images/biconnected_components.jpeg
new file mode 100644
index 0000000..e1812b8
Binary files /dev/null and b/doc/components/images/biconnected_components.jpeg differ
diff --git a/doc/components/images/bridge_sampledata.png b/doc/components/images/bridge_sampledata.png
new file mode 100644
index 0000000..938f8e3
Binary files /dev/null and b/doc/components/images/bridge_sampledata.png differ
diff --git a/doc/components/images/cc_sampledata.png b/doc/components/images/cc_sampledata.png
new file mode 100644
index 0000000..005dec3
Binary files /dev/null and b/doc/components/images/cc_sampledata.png differ
diff --git a/doc/components/images/connected_components.jpeg b/doc/components/images/connected_components.jpeg
new file mode 100644
index 0000000..e0b9384
Binary files /dev/null and b/doc/components/images/connected_components.jpeg differ
diff --git a/doc/components/images/scc_sampledata.png b/doc/components/images/scc_sampledata.png
new file mode 100644
index 0000000..e0416a3
Binary files /dev/null and b/doc/components/images/scc_sampledata.png differ
diff --git a/doc/components/images/strong_components.jpeg b/doc/components/images/strong_components.jpeg
new file mode 100644
index 0000000..ca11bd4
Binary files /dev/null and b/doc/components/images/strong_components.jpeg differ
diff --git a/doc/components/pgr_articulationPoints.rst b/doc/components/pgr_articulationPoints.rst
new file mode 100644
index 0000000..599d943
--- /dev/null
+++ b/doc/components/pgr_articulationPoints.rst
@@ -0,0 +1,100 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_articulationPoints:
+
+pgr_articulationPoints - Experimental
+===============================================================================
+
+
+``pgr_articulationPoints`` - Return the articulation points of an undirected graph.
+In particular, the algorithm implemented by Boost.Graph.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/connected_components.html
+
+ Boost Graph Inside
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Those vertices that belong to more than one biconnected component are called
+articulation points or, equivalently, cut vertices. Articulation points are
+vertices whose removal would increase the number of connected components in
+the graph.
+This implementation can only be used with an undirected graph.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+
+ - The returned values are ordered:
+
+ - `node` ascending
+
+ - Running time: :math:`O(V + E)`
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: articulationPoints
+
+.. code-block:: none
+
+ pgr_articulationPoints(edges_sql)
+
+ RETURNS SET OF (seq, node)
+ OR EMPTY SET
+
+The signature is for a **undirected** graph.
+
+:Example:
+
+.. literalinclude:: doc-pgr_articulationPoints.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+.. image:: images/ap_sampledata.png
+ :width: 560px
+ :height: 362px
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: components-family.rst
+ :start-after: components_edges_sql_start
+ :end-before: components_edges_sql_end
+
+.. include:: components-family.rst
+ :start-after: components_parameters_start
+ :end-before: components_parameters_end
+
+.. include:: components-family.rst
+ :start-after: return_cutvertices_start
+ :end-before: return_cutvertices_end
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/Biconnected_component
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/components/pgr_biconnectedComponents.rst b/doc/components/pgr_biconnectedComponents.rst
new file mode 100644
index 0000000..fd765e8
--- /dev/null
+++ b/doc/components/pgr_biconnectedComponents.rst
@@ -0,0 +1,103 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_biconnectedComponents:
+
+pgr_biconnectedComponents - Experimental
+===============================================================================
+
+``pgr_biconnectedComponents`` — Return the biconnected components of an undirected graph.
+In particular, the algorithm implemented by Boost.Graph.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/biconnected_components.html
+
+ Boost Graph Inside
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+The biconnected components of an undirected graph are the maximal subsets of vertices such that the removal of a vertex from
+particular component will not disconnect the component. Unlike connected components, vertices may belong to multiple biconnected
+components. Vertices can be present in multiple biconnected components, but each edge can only be contained in a single biconnected
+component. So, the output only has edge version.
+
+This implementation can only be used with an undirected graph.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+
+ - Components are described by edges
+
+ - The returned values are ordered:
+
+ - `component` ascending
+ - `edge` ascending
+
+ - Running time: :math:`O(V + E)`
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: biconnectedComponents
+
+.. code-block:: none
+
+ pgr_biconnectedComponents(edges_sql)
+
+ RETURNS SET OF (seq, component, n_seq, edge)
+ OR EMPTY SET
+
+The signature is for a **undirected** graph.
+
+:Example:
+
+.. literalinclude:: doc-pgr_biconnectedComponents.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+.. image:: images/bcc_sampledata.png
+ :width: 705px
+ :height: 373px
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: components-family.rst
+ :start-after: components_edges_sql_start
+ :end-before: components_edges_sql_end
+
+.. include:: components-family.rst
+ :start-after: components_parameters_start
+ :end-before: components_parameters_end
+
+.. include:: components-family.rst
+ :start-after: return_componentsE_start
+ :end-before: return_componentsE_end
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/Biconnected_component
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/components/pgr_bridges.rst b/doc/components/pgr_bridges.rst
new file mode 100644
index 0000000..078e2ee
--- /dev/null
+++ b/doc/components/pgr_bridges.rst
@@ -0,0 +1,97 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_Bridges:
+
+pgr_bridges - Experimental
+===============================================================================
+
+
+``pgr_bridges`` - Return the bridges of an undirected graph.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/connected_components.html
+
+ Boost Graph Inside
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+A bridge is an edge of an undirected graph whose deletion increases its number
+of connected components.
+This implementation can only be used with an undirected graph.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+
+ - The returned values are ordered:
+
+ - `edge` ascending
+
+ - Running time: :math:`O(E * (V + E))`
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: bridges
+
+.. code-block:: none
+
+ pgr_bridges(edges_sql)
+
+ RETURNS SET OF (seq, node)
+ OR EMPTY SET
+
+The signature is for a **undirected** graph.
+
+:Example:
+
+.. literalinclude:: doc-pgr_bridges.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+.. image:: images/bridge_sampledata.png
+ :width: 560px
+ :height: 381px
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: components-family.rst
+ :start-after: components_edges_sql_start
+ :end-before: components_edges_sql_end
+
+.. include:: components-family.rst
+ :start-after: components_parameters_start
+ :end-before: components_parameters_end
+
+.. include:: components-family.rst
+ :start-after: return_bridges_start
+ :end-before: return_bridges_end
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/Bridge_%28graph_theory%29
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/components/pgr_connectedComponents.rst b/doc/components/pgr_connectedComponents.rst
new file mode 100644
index 0000000..30e892d
--- /dev/null
+++ b/doc/components/pgr_connectedComponents.rst
@@ -0,0 +1,101 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_connectedComponents:
+
+pgr_connectedComponents - Experimental
+===============================================================================
+
+
+``pgr_connectedComponents`` — Return the connected components of an undirected graph using a DFS-based approach.
+In particular, the algorithm implemented by Boost.Graph.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/connected_components.html
+
+ Boost Graph Inside
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+A connected component of an undirected graph is a set of vertices that are all reachable
+from each other.
+This implementation can only be used with an undirected graph.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+
+ - Components are described by vertices
+
+ - The returned values are ordered:
+
+ - `component` ascending
+ - `node` ascending
+
+ - Running time: :math:`O(V + E)`
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: connectedComponents
+
+.. code-block:: none
+
+ pgr_connectedComponents(edges_sql)
+
+ RETURNS SET OF (seq, component, n_seq, node)
+ OR EMPTY SET
+
+The signature is for a **undirected** graph.
+
+:Example:
+
+.. literalinclude:: doc-pgr_connectedComponents.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+.. image:: images/cc_sampledata.png
+ :width: 685px
+ :height: 387px
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: components-family.rst
+ :start-after: components_edges_sql_start
+ :end-before: components_edges_sql_end
+
+.. include:: components-family.rst
+ :start-after: components_parameters_start
+ :end-before: components_parameters_end
+
+.. include:: components-family.rst
+ :start-after: return_componentsV_start
+ :end-before: return_componentsV_end
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/components/pgr_strongComponents.rst b/doc/components/pgr_strongComponents.rst
new file mode 100644
index 0000000..2d272d8
--- /dev/null
+++ b/doc/components/pgr_strongComponents.rst
@@ -0,0 +1,100 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_strongComponents:
+
+pgr_strongComponents - Experimental
+===============================================================================
+
+``pgr_strongComponents`` — Return the strongly connected components of a directed graph using Tarjan's algorithm based on DFS.
+In particular, the algorithm implemented by Boost.Graph.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/strong_components.html
+
+ Boost Graph Inside
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+A strongly connected component of a directed graph is a set of vertices that are all reachable
+from each other.
+This implementation can only be used with a directed graph.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+
+ - Components are described by vertices
+
+ - The returned values are ordered:
+
+ - `component` ascending
+ - `node` ascending
+
+ - Running time: :math:`O(V + E)`
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: strongComponents
+
+.. code-block:: none
+
+ pgr_strongComponents(edges_sql)
+
+ RETURNS SET OF (seq, component, n_seq, node)
+ OR EMPTY SET
+
+The signature is for a **directed** graph.
+
+:Example:
+
+.. literalinclude:: doc-pgr_strongComponents.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+.. image:: images/scc_sampledata.png
+ :width: 707px
+ :height: 355px
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: components-family.rst
+ :start-after: components_edges_sql_start
+ :end-before: components_edges_sql_end
+
+.. include:: components-family.rst
+ :start-after: components_parameters_start
+ :end-before: components_parameters_end
+
+.. include:: components-family.rst
+ :start-after: return_componentsV_start
+ :end-before: return_componentsV_end
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/Strongly_connected_component
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/conf.py.in b/doc/conf.py.in
index b9c2bf8..f51e043 100644
--- a/doc/conf.py.in
+++ b/doc/conf.py.in
@@ -26,11 +26,15 @@ needs_sphinx = '1.1'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-mathjax_path="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
-extensions = ['sphinx.ext.todo', 'sphinx.ext.mathjax', 'sphinx.ext.graphviz']
+#mathjax_path="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
+extensions = [
+ 'sphinx.ext.todo',
+ 'sphinx.ext.mathjax',
+ 'sphinx.ext.graphviz',
+ ]
# Add any paths that contain templates here, relative to this directory.
-templates_path = ['doc/templates']
+templates_path = ["_templates"]
# The suffix of source filenames.
source_suffix = '.rst'
@@ -57,8 +61,8 @@ release = '@PGROUTING_FULL_VERSION@'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
language = 'en'
-locale_dirs = ['doc/i18n/']
-gettext_compact = False
+locale_dirs = ['@CMAKE_SOURCE_DIR@/locale/']
+#gettext_compact = False
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
@@ -76,6 +80,7 @@ exclude_patterns = [
'tools/template'
]
+# 'src/pickDeliver/doc/pgr_withPointsVia.rst',
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
@@ -124,17 +129,20 @@ html_title = "pgRouting Manual (@PGROUTING_SHORT_VERSION@@PGROUTING_VERSION_DEV@
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
-html_logo = "static/images/pgrouting.png"
+html_logo = "_static/images/pgrouting.png"
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
-html_favicon = "static/images/favicon.ico"
+html_favicon = "_static/images/favicon.ico"
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['static']
+html_static_path = ["_static"]
+
+def setup(app):
+ app.add_stylesheet('custom.css')
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
@@ -164,7 +172,9 @@ html_use_index = True
#html_split_index = False
# If true, links to the reST sources are added to the pages.
-html_show_sourcelink = True
+html_show_sourcelink = False
+# Don't copy sources
+html_copy_source = False
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
html_show_sphinx = True
@@ -200,13 +210,13 @@ latex_elements = {
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
- ('doc/index', 'pgRoutingDocumentation.tex', u'pgRouting Manual',
+ ('index', 'pgRoutingDocumentation.tex', u'pgRouting Manual',
u'pgRouting Contributors', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
-latex_logo = "static/images/pgrouting.png"
+latex_logo = "_static/images/pgrouting.png"
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
@@ -230,7 +240,7 @@ latex_domain_indices = False
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
- ('doc/index_man', 'pgrouting', u'pgRouting Reference', u'pgRouting Contributors', 7)
+ ('index_man', 'pgrouting', u'pgRouting Reference', u'pgRouting Contributors', 7)
]
# If true, show URL addresses after external links.
@@ -243,7 +253,7 @@ man_show_urls = False
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
- ('doc/index', 'pgrouting', u'pgRouting Manual',
+ ('index', 'pgrouting', u'pgRouting Manual',
u'pgRouting Contributors', 'pgRoutingDocumentation', 'One line description of project.',
'Miscellaneous'),
]
@@ -256,3 +266,88 @@ texinfo_documents = [
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
+
+# -- Options for PDF output --------------------------------------------------
+# Grouping the document tree into PDF files. List of tuples
+# (source start file, target name, title, author, options).
+#
+# If there is more than one author, separate them with \\.
+# For example: r'Guido van Rossum\\Fred L. Drake, Jr., editor'
+#
+# The options element is a dictionary that lets you override
+# this config per-document.
+# For example,
+# ('index', u'MyProject', u'My Project', u'Author Name',
+# dict(pdf_compressed = True))
+# would mean that specific document would be compressed
+# regardless of the global pdf_compressed setting.
+pdf_documents = [(
+ 'index',
+ u'pgr_Documentation',
+ 'pgRouting Manual',
+ u'pgRouting Contributors')]
+# A comma-separated list of custom stylesheets. Example:
+
+pdf_stylesheets = ['sphinx','kerning','a4']
+# A list of folders to search for stylesheets. Example:
+pdf_style_path = ['.', '_styles']
+
+
+rst_epilog="""
+.. |ANY-INTEGER| replace:: :abbr:`ANY-INTEGER(SMALLINT, INTEGER, BIGINT)`
+.. |ANY-NUMERICAL| replace:: :abbr:`ANY-NUMERICAL(SMALLINT, INTEGER, BIGINT, REAL, FLOAT)`
+"""
+
+# Create a compressed PDF
+# Use True/False or 1/0
+# Example: compressed=True
+#pdf_compressed = False
+# A colon-separated list of folders to search for fonts. Example:
+# pdf_font_path = ['/usr/share/fonts', '/usr/share/texmf-dist/fonts/']
+# Language to be used for hyphenation support
+#pdf_language = "en_US"
+
+# Mode for literal blocks wider than the frame. Can be
+# overflow, shrink or truncate
+#pdf_fit_mode = "shrink"
+
+# Section level that forces a break page.
+# For example: 1 means top-level sections start in a new page
+# 0 means disabled
+#pdf_break_level = 0
+# When a section starts in a new page, force it to be 'even', 'odd',
+# or just use 'any'
+#pdf_breakside = 'any'
+# Insert footnotes where they are defined instead of
+# at the end.
+#pdf_inline_footnotes = True
+# verbosity level. 0 1 or 2
+#pdf_verbosity = 0
+# If false, no index is generated.
+#pdf_use_index = True
+# If false, no modindex is generated.
+#pdf_use_modindex = True
+# If false, no coverpage is generated.
+#pdf_use_coverpage = True
+# Name of the cover page template to use
+#pdf_cover_template = 'sphinxcover.tmpl'
+# Documents to append as an appendix to all manuals.
+#pdf_appendices = []
+# Enable experimental feature to split table cells. Use it
+# if you get "DelayedTable too big" errors
+#pdf_splittables = False
+# Set the default DPI for images
+#pdf_default_dpi = 72
+# Enable rst2pdf extension modules (default is only vectorpdf)
+# you need vectorpdf if you want to use sphinx's graphviz support
+#pdf_extensions = ['vectorpdf']
+# Page template name for "regular" pages
+#pdf_page_template = 'cutePage'
+# Show Table Of Contents at the beginning?
+#pdf_use_toc = True
+# How many levels deep should the table of contents be?
+pdf_toc_depth = 9999
+# Add section number to section references
+pdf_use_numbered_links = False
+# Background images fitting mode
+pdf_fit_background_mode = 'scale'
diff --git a/doc/contraction/CMakeLists.txt b/doc/contraction/CMakeLists.txt
new file mode 100644
index 0000000..828f6dd
--- /dev/null
+++ b/doc/contraction/CMakeLists.txt
@@ -0,0 +1,15 @@
+
+SET(LOCAL_FILES
+ contraction-family.rst
+ pgr_contractGraph.rst
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}")
+ list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f})
+endforeach()
+
+add_subdirectory("images")
+set(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} PARENT_SCOPE)
+
diff --git a/doc/contraction/contraction-family.rst b/doc/contraction/contraction-family.rst
new file mode 100644
index 0000000..f7828f8
--- /dev/null
+++ b/doc/contraction/contraction-family.rst
@@ -0,0 +1,527 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+
+.. _contraction:
+
+Contraction - Family of functions
+===============================================================================
+
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+:ref:`pgr_contractGraph`
+
+.. toctree::
+ :hidden:
+
+ pgr_contractGraph
+
+Introduction
+-------------
+
+In big graphs, like the road graphs, or electric networks, graph contraction can be used to speed up some graph algorithms. Contraction reduces the size of the graph by removing some of the vertices and edges and, for example, might add edges that represent a sequence of original edges decreasing the total time and space used in graph algorithms.
+
+This implementation gives a flexible framework for adding contraction algorithms in the future, currently, it supports two algorithms:
+
+ 1. Dead end contraction
+ 2. Linear contraction
+
+Allowing the user to:
+
+ - Forbid contraction on a set of nodes.
+ - Decide the order of the contraction algorithms and set the maximum number of times they are to be executed.
+
+.. note:: UNDER DISCUSSION: Forbid contraction on a set of edges
+
+Dead end contraction
+-------------------------------------------------------------------------------
+In the algorithm, dead end contraction is represented by 1.
+
+Dead end nodes
+......................
+
+The definition of a dead end node is different for a directed and an undirected graph.
+
+In case of a undirected graph, a node is considered a dead end node if
+
+ - The number of adjacent vertices is 1.
+
+In case of an directed graph, a node is considered a dead end node if
+
+ - There are no outgoing edges and has at least one incoming edge.
+ - There is one incoming and one outgoing edge with the same identifier.
+
+.. rubric:: Examples
+
+- The green node ``B`` represents a dead end node
+- The node ``A`` is the only node connecting to ``B``.
+- Node ``A`` is part of the rest of the graph and has an unlimited number of incoming and outgoing edges.
+- Directed graph
+
+.. graphviz::
+
+ digraph G {
+ A [style=filled;color=deepskyblue];
+ B [style=filled; color=green];
+ "G" [shape=tripleoctagon;
+ style=filled;color=deepskyblue;
+ label = "Rest of the Graph"];
+
+ rankdir=LR;
+ G -> A [dir=none, weight=1, penwidth=3];
+ A -> B;
+ }
+
+
+Operation: Dead End Contraction
+.....................................
+
+The dead end contraction will stop until there are no more dead end nodes.
+For example from the following graph:
+
+- Node ``A`` is connected to the rest of the graph by an unlimited number of edges.
+- Node ``B`` is connected to the rest of the graph with one incoming edge.
+- Node ``B`` is the only node connecting to ``C``.
+- The green node ``C`` represents a `Dead End` node
+
+.. graphviz::
+
+ digraph G {
+ A [style=filled;color=deepskyblue];
+ B [style=filled; color=deepskyblue];
+ C [style=filled; color=green];
+ "G" [shape=tripleoctagon;
+ style=filled;color=deepskyblue;
+ label = "Rest of the Graph"];
+
+ rankdir=LR;
+ G -> A [dir=none, weight=1, penwidth=3];
+ A -> B;
+ B -> C;
+ }
+
+
+After contracting ``C``, node ``B`` is now a `Dead End` node and is contracted:
+
+.. graphviz::
+
+ digraph G {
+ A [style=filled;color=deepskyblue];
+ B [style=filled; color=green;label="B {C}";];
+ "G" [shape=tripleoctagon;
+ style=filled;color=deepskyblue;
+ label = "Rest of the Graph"];
+
+ rankdir=LR;
+ G -> A [dir=none, weight=1, penwidth=3];
+ A -> B;
+ }
+
+Node ``B`` gets contracted
+
+.. graphviz::
+
+ digraph G {
+ A [style=filled;color=deepskyblue;label="A {B, C}";];
+ "G" [shape=tripleoctagon;
+ style=filled;color=deepskyblue;
+ label = "Rest of the Graph"];
+
+ rankdir=LR;
+ G -> A [dir=none, weight=1, penwidth=3];
+ }
+
+Nodes ``B`` and ``C`` belong to node ``A``.
+
+
+
+Not Dead End nodes
+......................
+
+In this graph ``B`` is not a `dead end` node.
+
+.. graphviz::
+
+ digraph G {
+ A [style=filled;color=deepskyblue];
+ B [style=filled; color=red];
+ "G" [shape=tripleoctagon;
+ style=filled;color=deepskyblue;
+ label = "Rest of the Graph"];
+
+ G -> A [dir=none, weight=1, penwidth=3];
+ B -> A;
+ }
+
+Linear contraction
+-------------------------------------------------------------------------------
+In the algorithm, linear contraction is represented by 2.
+
+Linear nodes
+......................
+
+A node is considered a linear node if satisfies the following:
+
+- The number of adjacent vertices are 2.
+- Should have at least one incoming edge and one outgoing edge.
+
+.. rubric:: Examples
+
+- The green node ``B`` represents a linear node
+- The nodes ``A`` and ``C`` are the only nodes connecting to ``B``.
+- Node ``A`` is part of the rest of the graph and has an unlimited number of incoming and outgoing edges.
+- Node ``C`` is part of the rest of the graph and has an unlimited number of incoming and outgoing edges.
+- Directed graph
+
+.. graphviz::
+
+ digraph G {
+ A [style=filled;color=deepskyblue];
+ B [style=filled; color=green];
+ C [style=filled;color=deepskyblue];
+ "G" [shape=tripleoctagon;
+ style=filled;color=deepskyblue;
+ label = "Rest of the Graph"];
+
+ rankdir=LR;
+ G -> A [dir=none, weight=1, penwidth=3];
+ G -> C [dir=none, weight=1, penwidth=3];
+ A -> B;
+ B -> C;
+ }
+
+Operation: Linear Contraction
+.....................................
+
+The linear contraction will stop until there are no more linear nodes.
+For example from the following graph:
+
+- Node ``A`` is connected to the rest of the graph by an unlimited number of edges.
+- Node ``B`` is connected to the rest of the graph with one incoming edge and one outgoing edge.
+- Node ``C`` is connected to the rest of the graph with one incoming edge and one outgoing edge.
+- Node ``D`` is connected to the rest of the graph by an unlimited number of edges.
+- The green nodes ``B`` and ``C`` represents `Linear` nodes.
+
+.. graphviz::
+
+ digraph G {
+ A [style=filled;color=deepskyblue];
+ B [style=filled; color=green];
+ C [style=filled; color=green];
+ D [style=filled; color=deepskyblue];
+ "G" [shape=tripleoctagon;
+ style=filled;color=deepskyblue;
+ label = "Rest of the Graph"];
+
+ rankdir=LR;
+ G -> A [dir=none, weight=1, penwidth=3];
+ G -> D [dir=none, weight=1, penwidth=3];
+ A -> B;
+ B -> C;
+ C -> D;
+
+ }
+
+After contracting ``B``, a new edge gets inserted between ``A`` and ``C`` which is represented by red color.
+
+.. graphviz::
+
+ digraph G {
+ A [style=filled;color=deepskyblue];
+ C [style=filled; color=green];
+ D [style=filled; color=deepskyblue];
+ "G" [shape=tripleoctagon;
+ style=filled;color=deepskyblue;
+ label = "Rest of the Graph"];
+
+ rankdir=LR;
+ G -> A [dir=none, weight=1, penwidth=3];
+ G -> D [dir=none, weight=1, penwidth=3];
+ A -> C [label="{B}";color=red]
+ C -> D;
+
+ }
+
+Node ``C`` is `linear node` and gets contracted.
+
+.. graphviz::
+
+ digraph G {
+ A [style=filled;color=deepskyblue];
+ D [style=filled; color=deepskyblue];
+ "G" [shape=tripleoctagon;
+ style=filled;color=deepskyblue;
+ label = "Rest of the Graph"];
+
+ rankdir=LR;
+ G -> A [dir=none, weight=1, penwidth=3];
+ G -> D [dir=none, weight=1, penwidth=3];
+ A -> D [label="{B, C}";color=red];
+
+ }
+
+Nodes ``B`` and ``C`` belong to edge connecting ``A`` and ``D`` which is represented by red color.
+
+Not Linear nodes
+......................
+
+In this graph ``B`` is not a `linear` node.
+
+.. graphviz::
+
+ digraph G {
+ A [style=filled;color=deepskyblue];
+ B [style=filled; color=red];
+ C [style=filled;color=deepskyblue];
+ "G" [shape=tripleoctagon;
+ style=filled;color=deepskyblue;
+ label = "Rest of the Graph"];
+
+ rankdir=LR;
+ G -> A [dir=none, weight=1, penwidth=3];
+ G -> C [dir=none, weight=1, penwidth=3];
+ A -> B;
+ C -> B;
+ }
+
+
+The cycle
+---------
+
+Contracting a graph, can be done with more than one operation. The order of the operations affect the resulting contracted graph, after applying one operation, the set of vertices that can be contracted by another operation changes.
+
+This implementation, cycles ``max_cycles`` times through ``operations_order`` .
+
+.. code-block:: none
+
+ <input>
+ do max_cycles times {
+ for (operation in operations_order)
+ { do operation }
+ }
+ <output>
+
+
+Contracting Sample Data
+-------------------------------------------------------------
+
+In this section, building and using a contracted graph will be shown by example.
+
+- The :doc:`sampledata` for an undirected graph is used
+- a dead end operation first followed by a linear operation.
+
+The original graph:
+
+.. image:: images/undirected_sampledata_a.png
+
+After doing a dead end contraction operation:
+
+.. image:: images/undirected_sampledata_b.png
+
+Doing a linear contraction operation to the graph above
+
+.. image:: images/undirected_sampledata_c.png
+
+
+There are five cases, in this documentation, which arise when calculating the shortest path between a given source and target.
+In this examples, ``pgr_dijkstra`` is used.
+
+- **Case 1**: Both source and target belong to the contracted graph.
+- **Case 2**: Source belongs to a contracted graph, while target belongs to a edge subgraph.
+- **Case 3**: Source belongs to a vertex subgraph, while target belongs to an edge subgraph.
+- **Case 4**: Source belongs to a contracted graph, while target belongs to an vertex subgraph.
+- **Case 5**: The path contains a new edge added by the contraction algorithm.
+
+Construction of the graph in the database
+..........................................
+
+.. rubric:: Original Data
+
+The following query shows the original data involved in the contraction operation.
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- q00
+ :end-before: -- q01
+
+.. rubric:: Contraction Results
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+The above results do not represent the contracted graph. They represent the changes done to the graph after applying the contraction algorithm. We can see that vertices like 6 and 11 do not appear in the contraction results because they were not affected by the contraction algorithm.
+
+.. rubric:: step 1
+
+Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` tables:
+
+======================= ==================================================
+Column Description
+======================= ==================================================
+**contracted_vertices** The vertices set belonging to the vertex/edge
+**is_contracted** On a `vertex` table: when ``true`` the vertex is contracted, so is not part of the contracted graph.
+**is_contracted** On an `edge` table: when ``true`` the edge was generated by the contraction algorithm.
+======================= ==================================================
+
+Using the following queries:
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+.. rubric:: step 2
+
+For simplicity, in this documentation, store the results of the call to pgr_contractGraph in a temporary table
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+.. rubric:: step 3
+
+Update the `vertex` and `edge` tables using the results of the call to pgr_contraction
+
+- In `edge_table_vertices_pgr.is_contracted` indicate the vertices that are contracted.
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+- Add to `edge_table_vertices_pgr.contracted_vertices` the contracted vertices belonging to the vertices.
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- q6
+ :end-before: -- q7
+
+- Insert the new edges generated by pgr_contractGraph.
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- q8
+ :end-before: -- q9
+
+.. rubric:: step 3.1
+
+Verify visually the updates.
+
+- On the `edge_table_vertices_pgr`
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- q7
+ :end-before: -- q8
+
+- On the `edge_table`
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- q9
+ :end-before: -- q10
+
+- vertices that belong to the contracted graph are the non contracted vertices
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- q10
+ :end-before: -- case1
+
+.. rubric:: case 1: Both source and target belong to the contracted graph.
+
+Inspecting the contracted graph above, vertex 3 and vertex 11 are part of the contracted graph. In the following query:
+
+ - vertices_in_graph hold the vertices that belong to the contracted graph.
+ - when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause.
+
+Visually, looking at the original graph, going from 3 to 11: 3 -> 6 -> 11, and in the contracted graph, it is also 3 -> 6 -> 11.
+The results, on the contracted graph match the results as if it was done on the original graph.
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- case1
+ :end-before: -- case2
+
+.. rubric:: case 2: Source belongs to the contracted graph, while target belongs to a edge subgraph.
+
+Inspecting the contracted graph above, vertex 3 is part of the contracted graph and vertex 1 belongs to the contracted subgraph of edge 19. In the following query:
+ - expand1 holds the contracted vertices of the edge where vertex 1 belongs. (belongs to edge 19).
+ - vertices_in_graph hold the vertices that belong to the contracted graph and also the contracted vertices of edge 19.
+ - when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause.
+
+Visually, looking at the original graph, going from 3 to 1: 3 -> 2 -> 1, and in the contracted graph, it is also 3 -> 2 -> 1.
+The results, on the contracted graph match the results as if it was done on the original graph.
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- case2
+ :end-before: -- case3
+
+
+.. rubric:: case 3: Source belongs to a vertex subgraph, while target belongs to an edge subgraph.
+
+Inspecting the contracted graph above, vertex 7 belongs to the contracted subgraph of vertex 5 and vertex 13 belongs to the contracted subgraph of edge 21. In the following query:
+
+ - expand7 holds the contracted vertices of vertex where vertex 7 belongs. (belongs to vertex 5)
+ - expand13 holds the contracted vertices of edge where vertex 13 belongs. (belongs to edge 21)
+ - vertices_in_graph hold the vertices that belong to the contracted graph, contracted vertices of vertex 5 and contracted vertices of edge 21.
+ - when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause.
+
+Visually, looking at the original graph, going from 7 to 13: 7 -> 8 -> 5 -> 10 -> 13, and in the contracted graph, it is also 7 -> 8 -> 5 -> 10 -> 13.
+The results, on the contracted graph match the results as if it was done on the original graph.
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- case3
+ :end-before: -- case4
+
+
+.. rubric:: case 4: Source belongs to the contracted graph, while target belongs to an vertex subgraph.
+
+Inspecting the contracted graph above, vertex 3 is part of the contracted graph and vertex 7 belongs to the contracted subgraph of vertex 5. In the following query:
+
+ - expand7 holds the contracted vertices of vertex where vertex 7 belongs. (belongs to vertex 5)
+ - vertices_in_graph hold the vertices that belong to the contracted graph and the contracted vertices of vertex 5.
+ - when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause.
+
+Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8 -> 7, but in the contracted graph, it is 3 -> 5 -> 8 -> 7.
+The results, on the contracted graph do not match the results as if it was done on the original graph. This is because the path contains edge 19 which is added by the contraction algorithm.
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- case4
+ :end-before: -- case5q1
+
+.. rubric:: case 5: The path contains an edge added by the contraction algorithm.
+
+In the previous example we can see that the path from vertex 3 to vertex 7 contains an edge which is added by the contraction algorithm.
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- case5q1
+ :end-before: -- case5q2
+
+Inspecting the contracted graph above, edge 19 should be expanded. In the following query:
+
+ - first_dijkstra holds the results of the dijkstra query.
+ - edges_to_expand holds the edges added by the contraction algorithm and included in the path.
+ - vertices_in_graph hold the vertices that belong to the contracted graph, vertices of the contracted solution and the contracted vertices of the edges added by the contraction algorithm and included in the contracted solution.
+ - when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause.
+
+Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8 -> 7, and in the contracted graph, it is also 3 -> 2 -> 5 -> 8 -> 7.
+The results, on the contracted graph match the results as if it was done on the original graph.
+
+.. literalinclude:: doc-contraction.queries
+ :start-after: -- case5q2
+ :end-before: -- end
+
+See Also
+-------------
+
+* http://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf
+* http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf
+* The queries use :ref:`pgr_contractGraph` function and the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/contraction/images/CMakeLists.txt b/doc/contraction/images/CMakeLists.txt
new file mode 100644
index 0000000..91e0350
--- /dev/null
+++ b/doc/contraction/images/CMakeLists.txt
@@ -0,0 +1,21 @@
+
+SET(LOCAL_FILES
+ twoNodesoneEdge_a.png
+ twoNodesoneEdge_b.png
+
+ threeNodestwoEdges_a.png
+ threeNodestwoEdges_b.png
+ threeNodestwoEdges_c.png
+
+ undirected_sampledata_b.png
+ undirected_sampledata_a.png
+ undirected_sampledata_c.png
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}" COPYONLY)
+ list(APPEND LOCAL_IMG_FILES "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}")
+endforeach()
+
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} ${LOCAL_IMG_FILES} PARENT_SCOPE)
+
diff --git a/src/contraction/doc/images/threeNodestwoEdges_a.png b/doc/contraction/images/threeNodestwoEdges_a.png
similarity index 100%
rename from src/contraction/doc/images/threeNodestwoEdges_a.png
rename to doc/contraction/images/threeNodestwoEdges_a.png
diff --git a/src/contraction/doc/images/threeNodestwoEdges_b.png b/doc/contraction/images/threeNodestwoEdges_b.png
similarity index 100%
rename from src/contraction/doc/images/threeNodestwoEdges_b.png
rename to doc/contraction/images/threeNodestwoEdges_b.png
diff --git a/src/contraction/doc/images/threeNodestwoEdges_c.png b/doc/contraction/images/threeNodestwoEdges_c.png
similarity index 100%
rename from src/contraction/doc/images/threeNodestwoEdges_c.png
rename to doc/contraction/images/threeNodestwoEdges_c.png
diff --git a/src/contraction/doc/images/twoNodesoneEdge_a.png b/doc/contraction/images/twoNodesoneEdge_a.png
similarity index 100%
rename from src/contraction/doc/images/twoNodesoneEdge_a.png
rename to doc/contraction/images/twoNodesoneEdge_a.png
diff --git a/src/contraction/doc/images/twoNodesoneEdge_b.png b/doc/contraction/images/twoNodesoneEdge_b.png
similarity index 100%
rename from src/contraction/doc/images/twoNodesoneEdge_b.png
rename to doc/contraction/images/twoNodesoneEdge_b.png
diff --git a/src/contraction/doc/images/undirected_sampledata_a.png b/doc/contraction/images/undirected_sampledata_a.png
similarity index 100%
rename from src/contraction/doc/images/undirected_sampledata_a.png
rename to doc/contraction/images/undirected_sampledata_a.png
diff --git a/src/contraction/doc/images/undirected_sampledata_b.png b/doc/contraction/images/undirected_sampledata_b.png
similarity index 100%
rename from src/contraction/doc/images/undirected_sampledata_b.png
rename to doc/contraction/images/undirected_sampledata_b.png
diff --git a/src/contraction/doc/images/undirected_sampledata_c.png b/doc/contraction/images/undirected_sampledata_c.png
similarity index 100%
rename from src/contraction/doc/images/undirected_sampledata_c.png
rename to doc/contraction/images/undirected_sampledata_c.png
diff --git a/doc/contraction/pgr_contractGraph.rst b/doc/contraction/pgr_contractGraph.rst
new file mode 100644
index 0000000..0c875d9
--- /dev/null
+++ b/doc/contraction/pgr_contractGraph.rst
@@ -0,0 +1,171 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_contractGraph:
+
+pgr_contractGraph - Experimental
+===============================================================================
+
+``pgr_contractGraph`` — Performs graph contraction and returns the contracted vertices and edges.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.3.0
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+Synopsis
+-------------
+
+Contraction reduces the size of the graph by removing some of the vertices and edges and, for example, might add edges that represent a sequence of original edges decreasing the total time and space used in graph algorithms.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+ - Process is done only on edges with positive costs.
+
+ - There are two types of contraction methods used namely,
+
+ - Dead End Contraction
+ - Linear Contraction
+
+ - The values returned include the added edges and contracted vertices.
+
+ - The returned values are ordered as follows:
+
+ - column `id` ascending when type = `v`
+ - column `id` descending when type = `e`
+
+
+
+Signature Summary:
+------------------
+
+The pgr_contractGraph function has the following signatures:
+
+.. code-block:: none
+
+ pgr_contractGraph(edges_sql, contraction_order)
+ pgr_contractGraph(edges_sql, contraction_order, max_cycles, forbidden_vertices, directed)
+
+ RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: contractGraph(Minimal Use)
+
+Minimal signature
+.......................................
+
+.. code-block:: none
+
+ pgr_contractGraph(edges_sql, contraction_order)
+
+:Example: Making a dead end contraction and a linear contraction.
+
+.. literalinclude:: doc-contractGraph.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+Complete signature
+.......................................
+
+.. code-block:: none
+
+ pgr_contractGraph(edges_sql, contraction_order, max_cycles, forbidden_vertices, directed)
+
+:Example: Making a dead end contraction and a linear contraction and vertex 2 is forbidden from contraction
+
+.. literalinclude:: doc-contractGraph.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+
+Description of the parameters of the signatures
+-------------------------------------------------------------------------------
+
+======================= ====================== =================================================
+Column Type Description
+======================= ====================== =================================================
+**edges_sql** ``TEXT`` SQL query as described above.
+**contraction_order** ``ARRAY[ANY-INTEGER]`` Ordered contraction operations.
+ - 1 = Dead end contraction
+ - 2 = Linear contraction
+**forbidden_vertices** ``ARRAY[ANY-INTEGER]`` (optional). Identifiers of vertices forbidden from contraction. Default is an empty array.
+**max_cycles** ``INTEGER`` (optional). Number of times the contraction operations on `contraction_order` will be performed. Default is 1.
+**directed** ``BOOLEAN`` * When ``true`` the graph is considered as `Directed`.
+ * When ``false`` the graph is considered as `Undirected`.
+======================= ====================== =================================================
+
+
+Description of the return values
+-------------------------------------------------------------------------------
+
+RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)
+
+The function returns a single row. The columns of the row are:
+
+============================ ================= ===================================================================
+Column Type Description
+============================ ================= ===================================================================
+**seq** ``INTEGER`` Sequential value starting from **1**.
+**type** ``TEXT`` Type of the `id`.
+ - 'v' when `id` is an identifier of a vertex.
+ - 'e' when `id` is an identifier of an edge.
+**id** ``BIGINT`` Identifier of:
+ * the vertex when `type = 'v'`.
+
+ - The vertex belongs to the edge_table passed as a parameter.
+ * the edge when `type = 'e'`.
+
+ - The `id` is a decreasing sequence starting from **-1**.
+
+ - Representing a pseudo `id` as is not incorporated into the edge_table.
+**contracted_vertices** ``ARRAY[BIGINT]`` Array of contracted vertex identifiers.
+**source** ``BIGINT`` Identifier of the source vertex of the current edge `id`. Valid values when `type = 'e'`.
+**target** ``BIGINT`` Identifier of the target vertex of the current edge `id`. Valid values when `type = 'e'`.
+**cost** ``FLOAT`` Weight of the edge (`source`, `target`). Valid values when `type = 'e'`.
+============================ ================= ===================================================================
+
+Examples
+========
+
+:Example: Only dead end contraction
+
+.. literalinclude:: doc-contractGraph.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+:Example: Only linear contraction
+
+.. literalinclude:: doc-contractGraph.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/costMatrix/CMakeLists.txt b/doc/costMatrix/CMakeLists.txt
new file mode 100644
index 0000000..5af97eb
--- /dev/null
+++ b/doc/costMatrix/CMakeLists.txt
@@ -0,0 +1,18 @@
+
+SET(LOCAL_FILES
+ costMatrix-category.rst
+ pgr_aStarCostMatrix.rst
+ pgr_bdDijkstraCostMatrix.rst
+ pgr_withPointsCostMatrix.rst
+ cost-category.rst
+ pgr_bdAstarCostMatrix.rst
+ pgr_dijkstraCostMatrix.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/costMatrix/cost-category.rst b/doc/costMatrix/cost-category.rst
new file mode 100644
index 0000000..8627cd6
--- /dev/null
+++ b/doc/costMatrix/cost-category.rst
@@ -0,0 +1,75 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _Cost:
+
+Cost - Category
+===============================================================================
+
+.. index from here
+
+* :ref:`pgr_aStarCost`
+* :ref:`pgr_bdAstarCost`
+* :ref:`pgr_bdDijkstraCost`
+* :ref:`pgr_dijkstraCost`
+* :ref:`pgr_withPointsCost`
+
+.. index to here
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+General Information
+-------------------------------------------------------------------------------
+
+
+Characteristics
+................
+
+The main Characteristics are:
+
+* Each function works as part of the family it belongs to.
+* It does not return a path.
+* Returns the sum of the costs of the resulting path(s) for pair combination of nodes in the graph.
+* Process is done only on edges with positive costs.
+* Values are returned when there is a path.
+
+ * The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`.
+
+ * When the starting vertex and ending vertex are the same, there is no path.
+
+ * The `agg_cost` int the non included values `(v, v)` is `0`.
+
+ * When the starting vertex and ending vertex are the different and there is no path.
+
+ * The `agg_cost` in the non included values `(u, v)` is :math:`\infty`.
+
+* Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`.
+
+* Depending on the function and its parameters, the results can be symmetric.
+
+ * The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
+
+* Any duplicated value in the `start_vids` or in `end_vids` are ignored.
+
+* The returned values are ordered:
+
+ * `start_vid` ascending
+ * `end_vid` ascending
+
+
+
+See Also
+................
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/costMatrix/costMatrix-category.rst b/doc/costMatrix/costMatrix-category.rst
new file mode 100644
index 0000000..fa514ae
--- /dev/null
+++ b/doc/costMatrix/costMatrix-category.rst
@@ -0,0 +1,108 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _CostMatrix:
+
+Cost Matrix - Category
+===============================================================================
+
+.. index from here
+
+* :ref:`pgr_aStarCostMatrix`
+* :ref:`pgr_bdAstarCostMatrix`
+* :ref:`pgr_bdDijkstraCostMatrix`
+* :ref:`pgr_dijkstraCostMatrix`
+* :ref:`pgr_withPointsCostMatrix`
+
+.. index to here
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+.. toctree::
+ :hidden:
+
+ pgr_aStarCostMatrix
+ pgr_bdAstarCostMatrix
+ pgr_bdDijkstraCostMatrix
+ pgr_dijkstraCostMatrix
+ pgr_withPointsCostMatrix
+
+
+General Information
+-------------------------------------------------------------------------------
+
+Synopsis
+...................
+
+:ref:`tsp` needs as input a symmetric cost matrix and no edge `(u, v)` must value :math:`\infty`.
+
+This collection of functions will return a cost matrix in form of a table.
+
+
+Characteristics
+................
+
+The main Characteristics are:
+
+* Can be used as input to :ref:`pgr_tsp`.
+
+ * :directly: when the resulting matrix is symmetric and there is no :math:`\infty` value.
+ * It will be the users responsibility to make the matrix symmetric.
+
+ * By using geometric or harmonic average of the non symmetric values.
+ * By using max or min the non symmetric values.
+ * By setting the upper triangle to be the mirror image of the lower triangle.
+ * By setting the lower triangle to be the mirror image of the upper triangle.
+
+ * It is also the users responsibility to fix an :math:`\infty` value.
+
+* Each function works as part of the family it belongs to.
+* It does not return a path.
+* Returns the sum of the costs of the shortest path for pair combination of nodes in the graph.
+* Process is done only on edges with positive costs.
+* Values are returned when there is a path.
+
+ * The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`.
+
+ * When the starting vertex and ending vertex are the same, there is no path.
+
+ * The `agg_cost` int the non included values `(v, v)` is `0`.
+
+ * When the starting vertex and ending vertex are the different and there is no path.
+
+ * The `agg_cost` in the non included values `(u, v)` is :math:`\infty`.
+
+* Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`.
+
+* Depending on the function and its parameters, the results can be symmetric.
+
+ * The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
+
+* Any duplicated value in the `start_vids` are ignored.
+
+* The returned values are ordered:
+
+ * `start_vid` ascending
+ * `end_vid` ascending
+
+* Running time: approximately :math:`O(| start\_vids | * (V \log V + E))`
+
+
+
+See Also
+................
+
+* :ref:`pgr_tsp`
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/costMatrix/pgr_aStarCostMatrix.rst b/doc/costMatrix/pgr_aStarCostMatrix.rst
new file mode 100644
index 0000000..014fb95
--- /dev/null
+++ b/doc/costMatrix/pgr_aStarCostMatrix.rst
@@ -0,0 +1,161 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_aStarCostMatrix:
+
+pgr_aStarCostMatrix - proposed
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :ref:`pgr_aStar`.
+
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.4.0
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Using aStar algorithm, calculate and return a cost matrix.
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_aStarCostMatrix(edges_sql, vids)
+ pgr_aStarCostMatrix(edges_sql, vids, directed, heuristic, factor, epsilon)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: aStarCostMatrix(Minimal Use) - Proposed
+
+Minimal Signature
+...............................................................................
+
+The minimal signature:
+ - Is for a **directed** graph.
+
+.. code-block:: none
+
+ pgr_aStarCostMatrix(edges_sql, vids)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+:Example: Cost matrix for vertices 1, 2, 3, and 4.
+
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- astar q1
+ :end-before: -- astar q2
+
+
+.. index::
+ single: aStarCostMatrix(Complete Signature) - Proposed
+
+Complete Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_aStarCostMatrix(edges_sql, vids, directed, heuristic, factor, epsilon)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+:Example: Cost matrix for an undirected graph for vertices 1, 2, 3, and 4.
+
+This example returns a symmetric cost matrix.
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- astar q2
+ :end-before: -- astar q3
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: xy_edges_sql_start
+ :end-before: xy_edges_sql_end
+
+
+Description of the parameters of the signatures
+...............................................................................
+
+================ ====================== =================================================
+Parameter Type Description
+================ ====================== =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**vids** ``ARRAY[ANY-INTEGER]`` Array of vertices_identifiers.
+**directed** ``BOOLEAN`` - Optional.
+
+ - When ``false`` the graph is considered as Undirected.
+ - Default is ``true`` which considers the graph as Directed.
+
+**heuristic** ``INTEGER`` (optional). Heuristic number. Current valid values 0~5. Default ``5``
+
+ - 0: h(v) = 0 (Use this value to compare with pgr_dijkstra)
+ - 1: h(v) abs(max(dx, dy))
+ - 2: h(v) abs(min(dx, dy))
+ - 3: h(v) = dx * dx + dy * dy
+ - 4: h(v) = sqrt(dx * dx + dy * dy)
+ - 5: h(v) = abs(dx) + abs(dy)
+
+**factor** ``FLOAT`` (optional). For units manipulation. :math:`factor > 0`. Default ``1``.
+**epsilon** ``FLOAT`` (optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``.
+================ ====================== =================================================
+
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_cost_start
+ :end-before: return_cost_end
+
+
+
+Examples
+-------------------------------------------------------------------------------
+
+:Example: Use with tsp
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- astar q3
+ :end-before: -- astar q4
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`astar`
+* :ref:`costMatrix`
+* :ref:`tsp`
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/costMatrix/pgr_bdAstarCostMatrix.rst b/doc/costMatrix/pgr_bdAstarCostMatrix.rst
new file mode 100644
index 0000000..eca35a9
--- /dev/null
+++ b/doc/costMatrix/pgr_bdAstarCostMatrix.rst
@@ -0,0 +1,144 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_bdAstarCostMatrix:
+
+pgr_bdAstarCostMatrix - proposed
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :ref:`pgr_bdAstar`.
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.5.0
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Using Dijkstra algorithm, calculate and return a cost matrix.
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_bdAstarCostMatrix(edges_sql, start_vids)
+ pgr_bdAstarCostMatrix(edges_sql, start_vids, [, directed , heuristic, factor, epsilon])
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+ OR EMPTY SET
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: bdAstarCostMatrix(Minimal Use) - Proposed
+
+Minimal Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_bdAstarCostMatrix(edges_sql, start_vids)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+ OR EMPTY SET
+
+This usage calculates the cost from the each ``start_vid`` in ``start_vids`` to each ``start_vid`` in ``start_vids``
+ - on a **directed** graph
+ - with **heuristic**'s value 5
+ - with **factor**'s value 1
+ - with **epsilon**'s value 1
+
+
+:Example: Cost matrix for vertices 1, 2, 3, and 4.
+
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- bdAstar q1
+ :end-before: -- bdAstar q2
+
+
+.. index::
+ single: bdAstarCostMatrix(Complete Signature) - Proposed
+
+Complete Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_bdAstarCostMatrix(edges_sql, start_vids, [, directed , heuristic, factor, epsilon])
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+ OR EMPTY SET
+
+This usage calculates the cost from the each ``start_vid`` in ``start_vids`` to each ``start_vid`` in ``start_vids`` allowing the user to choose
+ * if the graph is **directed** or **undirected**
+ * **heuristic**,
+ * and/or **factor**
+ * and/or **epsilon**.
+
+
+:Example: Cost matrix for an undirected graph for vertices 1, 2, 3, and 4.
+
+This example returns a symmetric cost matrix.
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- bdAstar q2
+ :end-before: -- bdAstar q3
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: xy_edges_sql_start
+ :end-before: xy_edges_sql_end
+
+.. include:: bdAstar-family.rst
+ :start-after: parameters_begin
+ :end-before: parameters_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_cost_start
+ :end-before: return_cost_end
+
+
+Examples
+-------------------------------------------------------------------------------
+
+:Example: Use with tsp
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- bdAstar q3
+ :end-before: -- bdAstar q4
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`bdAstar`
+* :ref:`costMatrix`
+* :ref:`tsp`
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/costMatrix/pgr_bdDijkstraCostMatrix.rst b/doc/costMatrix/pgr_bdDijkstraCostMatrix.rst
new file mode 100644
index 0000000..c1629cb
--- /dev/null
+++ b/doc/costMatrix/pgr_bdDijkstraCostMatrix.rst
@@ -0,0 +1,143 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_bdDijkstraCostMatrix:
+
+pgr_bdDijkstraCostMatrix - proposed
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_bdDijkstraCostMatrix`` - Calculates the a cost matrix using :ref:`pgr_bdDijkstra`.
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.5.0
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Using Dijkstra algorithm, calculate and return a cost matrix.
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_bdDijkstraCostMatrix(edges_sql, start_vids)
+ pgr_bdDijkstraCostMatrix(edges_sql, start_vids, directed)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: bdDijkstraCostMatrix(Minimal Use) - Proposed
+
+Minimal Signature
+...............................................................................
+
+The minimal signature:
+ - Is for a **directed** graph.
+
+.. code-block:: none
+
+ pgr_bdDijkstraCostMatrix(edges_sql, start_vid)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+:Example: Cost matrix for vertices 1, 2, 3, and 4.
+
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- bdDijkstra q1
+ :end-before: -- bdDijkstra q2
+
+
+.. index::
+ single: bdDijkstraCostMatrix(Complete Signature) - Proposed
+
+Complete Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_bdDijkstraCostMatrix(edges_sql, start_vids, directed:=true)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+:Example: Cost matrix for an undirected graph for vertices 1, 2, 3, and 4.
+
+This example returns a symmetric cost matrix.
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- bdDijkstra q2
+ :end-before: -- bdDijkstra q3
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+
+
+Description of the parameters of the signatures
+...............................................................................
+
+================ ====================== =================================================
+Parameter Type Description
+================ ====================== =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**start_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of the vertices.
+**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
+================ ====================== =================================================
+
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_cost_start
+ :end-before: return_cost_end
+
+Examples
+-------------------------------------------------------------------------------
+
+:Example: Use with tsp
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- bdDijkstra q3
+ :end-before: -- bdDijkstra q4
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`bdDijkstra`
+* :ref:`costMatrix`
+* :ref:`tsp`
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/costMatrix/pgr_dijkstraCostMatrix.rst b/doc/costMatrix/pgr_dijkstraCostMatrix.rst
new file mode 100644
index 0000000..5d0150f
--- /dev/null
+++ b/doc/costMatrix/pgr_dijkstraCostMatrix.rst
@@ -0,0 +1,144 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_dijkstraCostMatrix:
+
+pgr_dijkstraCostMatrix - proposed
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_dijkstraCostMatrix`` - Calculates the a cost matrix using pgr_dijktras.
+
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.3.0
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Using Dijkstra algorithm, calculate and return a cost matrix.
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_dijkstraCostMatrix(edges_sql, start_vids)
+ pgr_dijkstraCostMatrix(edges_sql, start_vids, directed)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: dijkstraCostMatrix(Minimal Use) - Proposed
+
+Minimal Signature
+...............................................................................
+
+The minimal signature:
+ - Is for a **directed** graph.
+
+.. code-block:: none
+
+ pgr_dijkstraCostMatrix(edges_sql, start_vid)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+:Example: Cost matrix for vertices 1, 2, 3, and 4.
+
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- dijkstra q1
+ :end-before: -- dijkstra q2
+
+
+.. index::
+ single: dijkstraCostMatrix(Complete Signature) - Proposed
+
+Complete Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_dijkstraCostMatrix(edges_sql, start_vids, directed:=true)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+:Example: Cost matrix for an undirected graph for vertices 1, 2, 3, and 4.
+
+This example returns a symmetric cost matrix.
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- dijkstra q2
+ :end-before: -- dijkstra q3
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+
+
+Description of the parameters of the signatures
+...............................................................................
+
+================ ====================== =================================================
+Parameter Type Description
+================ ====================== =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**start_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of the vertices.
+**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
+================ ====================== =================================================
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_cost_start
+ :end-before: return_cost_end
+
+
+Examples
+-------------------------------------------------------------------------------
+
+:Example: Use with tsp
+
+.. literalinclude:: doc-pgr_fooDmatrix.queries
+ :start-after: -- dijkstra q3
+ :end-before: -- dijkstra q4
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`dijkstra`
+* :ref:`costMatrix`
+* :ref:`tsp`
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/src/costMatrix/doc/pgr_withPointsCostMatrix.rst b/doc/costMatrix/pgr_withPointsCostMatrix.rst
similarity index 100%
rename from src/costMatrix/doc/pgr_withPointsCostMatrix.rst
rename to doc/costMatrix/pgr_withPointsCostMatrix.rst
diff --git a/doc/dijkstra/CMakeLists.txt b/doc/dijkstra/CMakeLists.txt
new file mode 100644
index 0000000..d4393d5
--- /dev/null
+++ b/doc/dijkstra/CMakeLists.txt
@@ -0,0 +1,15 @@
+
+SET(LOCAL_FILES
+ dijkstra-family.rst
+ pgr_dijkstraCost.rst
+ pgr_dijkstra.rst
+ pgr_dijkstraVia.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/dijkstra/dijkstra-family.rst b/doc/dijkstra/dijkstra-family.rst
new file mode 100644
index 0000000..54f05e0
--- /dev/null
+++ b/doc/dijkstra/dijkstra-family.rst
@@ -0,0 +1,151 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _dijkstra:
+
+Dijkstra - Family of functions
+===============================================================================
+
+.. index from here
+
+* :ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths.
+* :ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths.
+* :ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix.
+* :ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information.
+* :ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths.
+* :ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices.
+
+.. index to here
+
+
+.. toctree::
+ :hidden:
+
+ pgr_dijkstra
+ pgr_dijkstraCost
+ pgr_dijkstraCostMatrix
+ pgr_drivingDistance
+ pgr_KSP
+ pgr_dijkstraVia
+
+
+The problem definition (Advanced documentation)
+-----------------------------------------------
+
+
+Given the following query:
+
+
+pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)
+
+where :math:`sql = \{(id_i, source_i, target_i, cost_i, reverse\_cost_i)\}`
+
+and
+
+- :math:`source = \bigcup source_i`,
+- :math:`target = \bigcup target_i`,
+
+The graphs are defined as follows:
+
+.. rubric:: Directed graph
+
+The weighted directed graph, :math:`G_d(V,E)`, is definied by:
+
+* the set of vertices :math:`V`
+
+ - :math:`V = source \cup target \cup {start_{vid}} \cup {end_{vid}}`
+
+* the set of edges :math:`E`
+
+ - :math:`E = \begin{cases}
+ \text{ } \{(source_i, target_i, cost_i) \text{ when } cost >=0 \} & \quad \text{if } reverse\_cost = \varnothing \\
+ \text{ } \text{ } & \quad \text{ } \\
+ \text{ } \{(source_i, target_i, cost_i) \text{ when } cost >=0 \} & \quad \text{ } \\
+ \cup \{(target_i, source_i, reverse\_cost_i) \text{ when } reverse\_cost_i>=0 \} & \quad \text{if } reverse\_cost \neq \varnothing \\
+ \end{cases}`
+
+
+
+.. rubric:: Undirected graph
+
+The weighted undirected graph, :math:`G_u(V,E)`, is definied by:
+
+* the set of vertices :math:`V`
+
+ - :math:`V = source \cup target \cup {start_v{vid}} \cup {end_{vid}}`
+
+
+* the set of edges :math:`E`
+
+ - :math:`E = \begin{cases}
+ \text{ } \{(source_i, target_i, cost_i) \text{ when } cost >=0 \} & \quad \text{ } \\
+ \cup \{(target_i, source_i, cost_i) \text{ when } cost >=0 \} & \quad \text{ if } reverse\_cost = \varnothing \\
+ \text{ } \text{ } & \text{ } \\
+ \text{ } \{(source_i, target_i, cost_i) \text{ when } cost >=0 \} & \text{ } \\
+ \cup \{(target_i, source_i, cost_i) \text{ when } cost >=0 \} & \text{ } \\
+ \cup \{(target_i, source_i, reverse\_cost_i) \text{ when } reverse\_cost_i >=0)\} & \text{ } \\
+ \cup \{(source_i, target_i, reverse\_cost_i) \text{ when } reverse\_cost_i >=0)\} & \quad \text{ if } reverse\_cost \neq \varnothing \\
+ \end{cases}`
+
+
+
+.. rubric:: The problem
+
+Given:
+
+- :math:`start_{vid} \in V` a starting vertex
+- :math:`end_{vid} \in V` an ending vertex
+- :math:`G(V,E) = \begin{cases}
+ G_d(V,E) & \quad \text{ if6 } directed = true \\
+ G_u(V,E) & \quad \text{ if5 } directed = false \\
+ \end{cases}`
+
+Then:
+
+.. math::`pgr_dijkstra(sql, start_{vid}, end_{vid}, directed) =
+ \begin{cases}
+ \text{shortest path } \boldsymbol{\pi} \text{ between } start_{vid} \text{and } end_{vid} & \quad \text{if7 } \exists \boldsymbol{\pi} \\
+ \varnothing & \quad \text{otherwise} \\
+ \end{cases}`
+
+
+- :math:`\boldsymbol{\pi} = \{(path\_seq_i, node_i, edge_i, cost_i, agg\_cost_i)\}`
+
+where:
+ - :math:`path\_seq_i = i`
+ - :math:`path\_seq_{| \pi |} = | \pi |`
+ - :math:`node_i \in V`
+ - :math:`node_1 = start_{vid}`
+ - :math:`node_{| \pi |} = end_{vid}`
+ - :math:`\forall i \neq | \pi |, \quad (node_i, node_{i+1}, cost_i) \in E`
+ - :math:`edge_i = \begin{cases} id_{(node_i, node_{i+1},cost_i)} &\quad \text{when } i \neq | \pi | \\ -1 &\quad \text{when } i = | \pi | \\ \end{cases}`
+ - :math:`cost_i = cost_{(node_i, node_{i+1})}`
+ - :math:`agg\_cost_i = \begin{cases} 0 &\quad \text{when } i = 1 \\ \displaystyle\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\quad \text{when } i \neq 1 \\ \end{cases}`
+
+
+
+In other words: The algorithm returns a the shortest path between :math:`start_{vid}` and :math:`end_{vid}` , if it exists, in terms of a sequence of nodes and of edges,
+ - :math:`path\_seq` indicates the relative position in the path of the :math:`node` or :math:`edge`.
+ - :math:`cost` is the cost of the edge to be used to go to the next node.
+ - :math:`agg\_cost` is the cost from the :math:`start_{vid}` up to the node.
+
+
+If there is no path, the resulting set is empty.
+
+
+See Also
+-------------------------------------------------------------------------------
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
+
+
diff --git a/doc/dijkstra/pgr_dijkstra.rst b/doc/dijkstra/pgr_dijkstra.rst
new file mode 100644
index 0000000..0a20123
--- /dev/null
+++ b/doc/dijkstra/pgr_dijkstra.rst
@@ -0,0 +1,333 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_dijkstra:
+
+pgr_dijkstra
+===============================================================================
+
+``pgr_dijkstra`` — Returns the shortest path(s) using Dijkstra algorithm.
+In particular, the Dijkstra algorithm implemented by Boost.Graph.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html
+
+ Boost Graph Inside
+
+.. rubric:: Availability
+
+* pgr_dijkstra(one to one) 2.0.0, signature change 2.1.0
+* pgr_dijkstra(other signatures) 2.1.0
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra in 1956.
+It is a graph search algorithm that solves the shortest path problem for
+a graph with non-negative edge path costs, producing a shortest path from
+a starting vertex (``start_vid``) to an ending vertex (``end_vid``).
+This implementation can be used with a directed graph and an undirected graph.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+ - Process is done only on edges with positive costs.
+ - Values are returned when there is a path.
+
+ - When the starting vertex and ending vertex are the same, there is no path.
+
+ - The `agg_cost` the non included values `(v, v)` is `0`
+
+ - When the starting vertex and ending vertex are the different and there is no path:
+
+ - The `agg_cost` the non included values `(u, v)` is :math:`\infty`
+
+ - For optimization purposes, any duplicated value in the `start_vids` or `end_vids` are ignored.
+
+ - The returned values are ordered:
+
+ - `start_vid` ascending
+ - `end_vid` ascending
+
+ - Running time: :math:`O(| start\_vids | * (V \log V + E))`
+
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_dijkstra(edges_sql, start_vid, end_vid)
+ pgr_dijkstra(edges_sql, start_vid, end_vid, directed:=true)
+ pgr_dijkstra(edges_sql, start_vid, end_vids, directed:=true)
+ pgr_dijkstra(edges_sql, start_vids, end_vid, directed:=true)
+ pgr_dijkstra(edges_sql, start_vids, end_vids, directed:=true)
+
+ RETURNS SET OF (seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: dijkstra(Minimal Use)
+
+Minimal signature
+.......................................
+
+.. code-block:: none
+
+ pgr_dijkstra(TEXT edges_sql, BIGINT start_vid, BIGINT end_vid)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``.
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: dijkstra(One to One)
+
+pgr_dijkstra One to One
+.......................................
+
+.. code-block:: none
+
+ pgr_dijkstra(TEXT edges_sql, BIGINT start_vid, BIGINT end_vid,
+ BOOLEAN directed:=true);
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from one ``start_vid`` to one ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. index::
+ single: dijkstra(One to Many)
+
+pgr_dijkstra One to many
+.......................................
+
+.. code-block:: none
+
+ pgr_dijkstra(TEXT edges_sql, BIGINT start_vid, ARRAY[ANY_INTEGER] end_vids,
+ BOOLEAN directed:=true);
+ RETURNS SET OF (seq, path_seq, end_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform a one to one `pgr_dijkstra`
+where the starting vertex is fixed, and stop when all ``end_vids`` are reached.
+
+ - The result is equivalent to the union of the results of the one to one `pgr_dijkstra`.
+ - The extra ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+
+
+
+.. index::
+ single: dijkstra(Many to One)
+
+pgr_dijkstra Many to One
+.......................................
+
+.. code-block:: none
+
+ pgr_dijkstra(TEXT edges_sql, ARRAY[ANY_INTEGER] start_vids, BIGINT end_vid,
+ BOOLEAN directed:=true);
+ RETURNS SET OF (seq, path_seq, start_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform several one to one `pgr_dijkstra`
+where the ending vertex is fixed.
+
+ - The result is the union of the results of the one to one `pgr_dijkstra`.
+ - The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+
+
+.. index::
+ single: dijkstra(Many to Many)
+
+pgr_dijkstra Many to Many
+.......................................
+
+.. code-block:: none
+
+ pgr_dijkstra(TEXT edges_sql, ARRAY[ANY_INTEGER] start_vids, ARRAY[ANY_INTEGER] end_vids,
+ BOOLEAN directed:=true);
+ RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra`
+for all ``start_vids``.
+
+ - The result is the union of the results of the one to one `pgr_dijkstra`.
+ - The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
+
+The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q5
+ :end-before: -- q6
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+
+.. pgr_dijkstra_parameters_start
+
+Description of the parameters of the signatures
+...............................................................................
+
+============== ================== ======== =================================================
+Column Type Default Description
+============== ================== ======== =================================================
+**sql** ``TEXT`` SQL query as described above.
+**start_vid** ``BIGINT`` Identifier of the starting vertex of the path.
+**start_vids** ``ARRAY[BIGINT]`` Array of identifiers of starting vertices.
+**end_vid** ``BIGINT`` Identifier of the ending vertex of the path.
+**end_vids** ``ARRAY[BIGINT]`` Array of identifiers of ending vertices.
+**directed** ``BOOLEAN`` ``true`` - When ``true`` Graph is considered `Directed`
+ - When ``false`` the graph is considered as `Undirected`.
+============== ================== ======== =================================================
+
+.. pgr_dijkstra_parameters_end
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_path_start
+ :end-before: return_path_end
+
+
+Additional Examples
+--------------------------------------------------------------------------------------
+
+The examples of this section are based on the :doc:`sampledata` network.
+
+The examples include combinations from starting vertices 2 and 11 to ending vertices 3 and 5 in a directed and
+undirected graph with and with out reverse_cost.
+
+Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
+.........................................................................................
+
+The examples in this section use the following :ref:`fig1`
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q7
+ :end-before: -- q8
+
+
+
+Examples for queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns
+.........................................................................................
+
+The examples in this section use the following :ref:`fig2`
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q9
+ :end-before: -- q10
+
+
+Examples for queries marked as ``directed`` with ``cost`` column
+.........................................................................................
+
+The examples in this section use the following :ref:`fig3`
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q11
+ :end-before: -- q12
+
+
+Examples for queries marked as ``undirected`` with ``cost`` column
+.........................................................................................
+
+The examples in this section use the following :ref:`fig4`
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q13
+ :end-before: -- q14
+
+
+Equvalences between signatures
+.........................................................................................
+
+:Examples: For queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
+
+The examples in this section use the following:
+
+* :ref:`fig1`
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q15
+ :end-before: -- q16
+
+
+
+:Examples: For queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns
+
+The examples in this section use the following:
+
+* :ref:`fig2`
+
+.. literalinclude:: doc-pgr_dijkstra.queries
+ :start-after: -- q17
+ :end-before: -- q18
+
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/dijkstra/pgr_dijkstraCost.rst b/doc/dijkstra/pgr_dijkstraCost.rst
new file mode 100644
index 0000000..c5b08c3
--- /dev/null
+++ b/doc/dijkstra/pgr_dijkstraCost.rst
@@ -0,0 +1,255 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_dijkstraCost:
+
+pgr_dijkstraCost
+===============================================================================
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+``pgr_dijkstraCost``
+
+Using Dijkstra algorithm implemented by Boost.Graph, and extract only the
+aggregate cost of the shortest path(s) found, for the combination of vertices given.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html
+
+ Boost Graph Inside
+
+.. rubric:: Availability
+
+* pgr_dijkstraCost(all signatures) 2.2.0
+
+The ``pgr_dijkstraCost`` algorithm, is a good choice to calculate the sum of the costs
+of the shortest path for a subset of pairs of nodes of the graph.
+We make use of the Boost's implementation of dijkstra which runs in
+:math:`O(V \log V + E)` time.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+ - It does not return a path.
+ - Returns the sum of the costs of the shortest path for pair combination of nodes in the graph.
+ - Process is done only on edges with positive costs.
+ - Values are returned when there is a path.
+
+ - The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`.
+
+ - When the starting vertex and ending vertex are the same, there is no path.
+
+ - The `agg_cost` int the non included values `(v, v)` is `0`
+
+ - When the starting vertex and ending vertex are the different and there is no path.
+
+ - The `agg_cost` in the non included values `(u, v)` is :math:`\infty`
+
+ - Let be the case the values returned are stored in a table, so the unique index would be the pair:
+ `(start_vid, end_vid)`.
+
+ - For undirected graphs, the results are symmetric.
+
+ - The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
+
+ - Any duplicated value in the `start_vids` or `end_vids` is ignored.
+
+ - The returned values are ordered:
+
+ - `start_vid` ascending
+ - `end_vid` ascending
+
+ - Running time: :math:`O(| start\_vids | * (V \log V + E))`
+
+Signature Summary
+-------------------------------------------------------------------------------
+
+.. code-block:: none
+
+ pgr_dijkstraCost(edges_sql, start_vid, end_vid);
+ pgr_dijkstraCost(edges_sql, start_vid, end_vid, directed);
+ pgr_dijkstraCost(edges_sql, start_vids, end_vid, directed);
+ pgr_dijkstraCost(edges_sql, start_vid, end_vids, directed);
+ pgr_dijkstraCost(edges_sql, start_vids, end_vids, directed);
+
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: dijkstraCost(Minimal Use)
+
+Minimal signature
+...............................................................................
+
+The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``:
+
+.. code-block:: none
+
+ pgr_dijkstraCost(TEXT edges_sql, BIGINT start_vid, BIGINT end_vid)
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+
+.. rubric:: Example
+
+.. literalinclude:: doc-pgr_dijkstraCost.queries
+ :start-after: --q1
+ :end-before: --q2
+
+
+
+.. index::
+ single: dijkstraCost(One to One)
+
+pgr_dijkstraCost One to One
+...............................................................................
+
+
+This signature performs a Dijkstra from one ``start_vid`` to one ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+.. code-block:: none
+
+ pgr_dijkstraCost(TEXT edges_sql, BIGINT start_vid, BIGINT end_vid,
+ BOOLEAN directed:=true);
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstraCost.queries
+ :start-after: --q2
+ :end-before: --q3
+
+
+.. index::
+ single: dijkstraCost(One to Many)
+
+pgr_dijkstraCost One to Many
+...............................................................................
+
+.. code-block:: none
+
+ pgr_dijkstraCost(TEXT edges_sql, BIGINT start_vid, array[ANY_INTEGER] end_vids,
+ BOOLEAN directed:=true);
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+This signature performs a Dijkstra from one ``start_vid`` to each ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstraCost.queries
+ :start-after: --q4
+ :end-before: --q5
+
+
+
+
+.. index::
+ single: dijkstraCost(Many to One)
+
+pgr_dijkstraCost Many to One
+...............................................................................
+
+.. code-block:: none
+
+ pgr_dijkstraCost(TEXT edges_sql, array[ANY_INTEGER] start_vids, BIGINT end_vid,
+ BOOLEAN directed:=true);
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+This signature performs a Dijkstra from each ``start_vid`` in ``start_vids`` to one ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstraCost.queries
+ :start-after: --q3
+ :end-before: --q4
+
+
+
+.. index::
+ single: dijkstraCost(Many to Many)
+
+pgr_dijkstraCost Many to Many
+...............................................................................
+
+.. code-block:: none
+
+ pgr_dijkstraCost(TEXT edges_sql, array[ANY_INTEGER] start_vids, array[ANY_INTEGER] end_vids,
+ BOOLEAN directed:=true);
+ RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
+
+This signature performs a Dijkstra from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstraCost.queries
+ :start-after: --q5
+ :end-before: --q6
+
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+.. include:: pgr_dijkstra.rst
+ :start-after: pgr_dijkstra_parameters_start
+ :end-before: pgr_dijkstra_parameters_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_cost_start
+ :end-before: return_cost_end
+
+
+Additional Examples
+-------------------------------------------------------------------------------
+
+:Example 1: Demonstration of repeated values are ignored, and result is sorted.
+
+.. literalinclude:: doc-pgr_dijkstraCost.queries
+ :start-after: --q6
+ :end-before: --q7
+
+:Example 2: Making `start_vids` the same as `end_vids`
+
+.. literalinclude:: doc-pgr_dijkstraCost.queries
+ :start-after: --q7
+ :end-before: --q8
+
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
+* :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/dijkstra/pgr_dijkstraVia.rst b/doc/dijkstra/pgr_dijkstraVia.rst
new file mode 100644
index 0000000..2ea819d
--- /dev/null
+++ b/doc/dijkstra/pgr_dijkstraVia.rst
@@ -0,0 +1,188 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_dijkstraVia:
+
+pgr_dijkstraVia - Proposed
+===============================================================================
+
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_dijkstraVia`` — Using dijkstra algorithm, it finds the route that goes through
+a list of vertices.
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.2.0
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Given a list of vertices and a graph, this function is equivalent to finding the
+shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all :math:`i < size\_of(vertex_via)`.
+
+The paths represents the sections of the route.
+
+.. note:: This is a proposed function
+
+Signatrue Summary
+-------------------------------------------------------------------------------
+
+.. code-block:: none
+
+ pgr_dijkstraVia(edges_sql, via_vertices)
+ pgr_dijkstraVia(edges_sql, via_vertices, directed, strict, U_turn_on_edge)
+
+ RETURNS SET OF (seq, path_pid, path_seq, start_vid, end_vid,
+ node, edge, cost, agg_cost, route_agg_cost) or EMPTY SET
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: dijkstraVia(Minimal Use) - proposed
+
+Minimal Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_dijkstraVia(edges_sql, via_vertices)
+ RETURNS SET OF (seq, path_pid, path_seq, start_vid, end_vid,
+ node, edge, cost, agg_cost, route_agg_cost) or EMPTY SET
+
+:Example: Find the route that visits the vertices 1 3 9 in that order
+
+.. literalinclude:: doc-pgr_dijkstraVia.queries
+ :start-after: --q00
+ :end-before: -- q0
+
+.. index::
+ single: dijkstraVia(Full signature) - proposed
+
+Complete Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_dijkstraVia(edges_sql, via_vertices, directed, strict, U_turn_on_edge)
+ RETURNS SET OF (seq, path_pid, path_seq, start_vid, end_vid,
+ node, edge, cost, agg_cost, route_agg_cost) or EMPTY SET
+
+
+:Example: Find the route that visits the vertices 1 3 9 in that order on an undirected graph, avoiding U-turns when possible
+
+.. literalinclude:: doc-pgr_dijkstraVia.queries
+ :start-after: -- q0
+ :end-before: -- q1
+
+
+Description of the Signature
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: pgr_dijkstra_via_parameters_start
+ :end-before: pgr_dijkstra_via_parameters_end
+
+Description of the parameters of the signatures
+...............................................................................
+
+=================== ====================== =================================================
+Parameter Type Description
+=================== ====================== =================================================
+**edges_sql** ``TEXT`` SQL query as described above.
+**via_vertices** ``ARRAY[ANY-INTEGER]`` Array of vertices identifiers
+**directed** ``BOOLEAN`` (optional) Default is true (is directed). When set to false the graph is considered as Undirected
+**strict** ``BOOLEAN`` (optional) ignores if a subsection of the route is missing and returns everything it found Default is true (is directed). When set to false the graph is considered as Undirected
+**U_turn_on_edge** ``BOOLEAN`` (optional) Default is true (is directed). When set to false the graph is considered as Undirected
+=================== ====================== =================================================
+
+
+Description of the return values
+...............................................................................
+
+Returns set of ``(start_vid, end_vid, agg_cost)``
+
+================== ============= =================================================
+Column Type Description
+================== ============= =================================================
+**seq** ``BIGINT`` Sequential value starting from 1.
+**path_pid** ``BIGINT`` Identifier of the path.
+**path_seq** ``BIGINT`` Sequential value starting from 1 for the path.
+**start_vid** ``BIGINT`` Identifier of the starting vertex of the path.
+**end_vid** ``BIGINT`` Identifier of the ending vertex of the path.
+**node** ``BIGINT`` Identifier of the node in the path from start_vid to end_vid.
+**edge** ``BIGINT`` Identifier of the edge used to go from node to the next node in the path sequence. -1 for the last node of the path. -2 for the last node of the route.
+**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next node in the route sequence.
+**agg_cost** ``FLOAT`` Total cost from ``start_vid`` to ``end_vid`` of the path.
+**route_agg_cost** ``FLOAT`` Total cost from ``start_vid`` of ``path_pid = 1`` to ``end_vid`` of the current ``path_pid`` .
+================== ============= =================================================
+
+
+Examples
+-------------------------------------------------------------------------------
+
+:Example 1: Find the route that visits the vertices 1 5 3 9 4 in that order
+
+.. literalinclude:: doc-pgr_dijkstraVia.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+:Example 2: What's the aggregate cost of the third path?
+
+.. literalinclude:: doc-pgr_dijkstraVia.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+:Example 3: What's the route's aggregate cost of the route at the end of the third path?
+
+.. literalinclude:: doc-pgr_dijkstraVia.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+:Example 4: How are the nodes visited in the route?
+
+.. literalinclude:: doc-pgr_dijkstraVia.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+:Example 5: What are the aggregate costs of the route when the visited vertices are reached?
+
+.. literalinclude:: doc-pgr_dijkstraVia.queries
+ :start-after: -- q5
+ :end-before: -- q6
+
+:Example 6: show the route's seq and aggregate cost and a status of "passes in front" or "visits" node 9
+
+.. literalinclude:: doc-pgr_dijkstraVia.queries
+ :start-after: -- q6
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
+* :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/dijkstraTRSP/CMakeLists.txt b/doc/dijkstraTRSP/CMakeLists.txt
new file mode 100644
index 0000000..3a424e8
--- /dev/null
+++ b/doc/dijkstraTRSP/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ pgr_dijkstraTRSP.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/dijkstraTRSP/pgr_dijkstraTRSP.rst b/doc/dijkstraTRSP/pgr_dijkstraTRSP.rst
new file mode 100644
index 0000000..90b321f
--- /dev/null
+++ b/doc/dijkstraTRSP/pgr_dijkstraTRSP.rst
@@ -0,0 +1,141 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_dijkstraTRSP:
+
+pgr_dijkstraTRSP
+===============================================================================
+
+``pgr_dijkstraTRSP`` — Returns the shortest path(s) using Dijkstra algorithm.
+In particular, the Dijkstra algorithm implemented by Boost.Graph.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html
+
+ Boost Graph Inside
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra in 1956.
+It is a graph search algorithm that solves the shortest path problem for
+a graph with non-negative edge path costs, producing a shortest path from
+a starting vertex (``start_vid``) to an ending vertex (``end_vid``).
+This implementation can be used with a directed graph and an undirected graph.
+
+Characteristics
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+ - Process is done only on edges with positive costs.
+ - Values are returned when there is a path.
+
+ - When the starting vertex and ending vertex are the same, there is no path.
+
+ - The `agg_cost` the non included values `(v, v)` is `0`
+
+ - When the starting vertex and ending vertex are the different and there is no path:
+
+ - The `agg_cost` the non included values `(u, v)` is :math:`\infty`
+
+ - For optimization purposes, any duplicated value in the `start_vids` or `end_vids` are ignored.
+
+ - The returned values are ordered:
+
+ - `start_vid` ascending
+ - `end_vid` ascending
+
+ - Running time: :math:`O(| start\_vids | * (V \log V + E))`
+
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_dijkstra(edges_sql, start_vid, end_vid)
+
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: dijkstraTRSP(Minimal Use)
+
+Minimal signature
+.......................................
+
+.. code-block:: none
+
+ pgr_dijkstraTRSP(edges_sql, start_vid, end_vid)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``:
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstraTRSP.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: dijkstraTRSP(Complete signature)
+
+Complete Signature
+.......................................
+
+.. code-block:: none
+
+ pgr_dijkstraTRSP(edges_sql, start_vid, end_vid, directed);
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+This signature finds the shortest path from one ``start_vid`` to one ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+:Example:
+
+.. literalinclude:: doc-pgr_dijkstraTRSP.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+.. include:: pgr_dijkstra.rst
+ :start-after: pgr_dijkstra_parameters_start
+ :end-before: pgr_dijkstra_parameters_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_path_start
+ :end-before: return_path_end
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
+* The queries use the :ref:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/driving_distance/CMakeLists.txt b/doc/driving_distance/CMakeLists.txt
new file mode 100644
index 0000000..d682773
--- /dev/null
+++ b/doc/driving_distance/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(LOCAL_FILES
+ drivingDistance-category.rst
+ pgr_drivingDistance.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/driving_distance/drivingDistance-category.rst b/doc/driving_distance/drivingDistance-category.rst
new file mode 100644
index 0000000..8e14061
--- /dev/null
+++ b/doc/driving_distance/drivingDistance-category.rst
@@ -0,0 +1,41 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+
+.. _drivingDistance:
+
+Driving Distance - Category
+===============================================================================
+
+.. index from here
+
+* :ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra
+* :ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints
+* Post pocessing
+
+ * :ref:`pgr_alphaShape` - Alpha shape computation
+ * :ref:`pgr_points_as_polygon` - Polygon around a set of points
+
+.. index to here
+
+
+.. toctree::
+ :hidden:
+
+ pgr_alphaShape.rst
+ pgr_pointsAsPolygon.rst
+
+
+See Also
+-------------------------------------------------------------------------------
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/driving_distance/pgr_drivingDistance.rst b/doc/driving_distance/pgr_drivingDistance.rst
new file mode 100644
index 0000000..b3a394c
--- /dev/null
+++ b/doc/driving_distance/pgr_drivingDistance.rst
@@ -0,0 +1,185 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_drivingDistance:
+
+pgr_drivingDistance
+===============================================================================
+
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_drivingDistance`` - Returns the driving distance from a start node.
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability
+
+* pgr_drivingDistance(single vertex) 2.0.0, signature change 2.1.0
+* pgr_drivingDistance(multiple vertices) 2.1.0
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Using the Dijkstra algorithm, extracts all the nodes that have costs less than or equal to the value ``distance``.
+The edges extracted will conform to the corresponding spanning tree.
+
+Signature Summary
+-------------------------------------------------------------------------------
+
+.. code-block:: sql
+
+ pgr_drivingDistance(edges_sql, start_vid, distance)
+ pgr_drivingDistance(edges_sql, start_vid, distance, directed)
+ pgr_drivingDistance(edges_sql, start_vids, distance, directed, equicost)
+
+ RETURNS SET OF (seq, [start_vid,] node, edge, cost, agg_cost)
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: drivingDistance(Minimal Use)
+
+Minimal Use
+...................
+
+.. code-block:: sql
+
+ pgr_drivingDistance(edges_sql, start_vid, distance)
+ RETURNS SET OF (seq, node, edge, cost, agg_cost)
+
+
+
+.. index::
+ single: drivingDistance(Single Start Vertex)
+
+Driving Distance From A Single Starting Vertex
+..............................................
+
+.. code-block:: sql
+
+ pgr_drivingDistance(edges_sql, start_vid, distance, directed)
+ RETURNS SET OF (seq, node, edge, cost, agg_cost)
+
+
+.. index::
+ single: drivingDistance(Multiple Starting Vertices)
+
+Driving Distance From Multiple Starting Vertices
+.................................................
+
+.. code-block:: sql
+
+ pgr_drivingDistance(edges_sql, start_vids, distance, directed, equicost)
+ RETURNS SET OF (seq, start_vid, node, edge, cost, agg_cost)
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+
+Description of the parameters of the signatures
+.................................................
+
+============== ====================== =================================================
+Column Type Description
+============== ====================== =================================================
+**edges_sql** ``TEXT`` SQL query as described above.
+**start_vid** ``BIGINT`` Identifier of the starting vertex.
+**start_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of the starting vertices.
+**distance** ``FLOAT`` Upper limit for the inclusion of the node in the result.
+**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
+**equicost** ``BOOLEAN`` (optional). When ``true`` the node will only appear in the closest ``start_vid`` list. Default is ``false`` which resembles several calls using the single starting point signatures. Tie brakes are arbitrary.
+============== ====================== =================================================
+
+
+
+Description of the return values
+.................................................
+
+Returns set of ``(seq [, start_v], node, edge, cost, agg_cost)``
+
+============== =========== =================================================
+Column Type Description
+============== =========== =================================================
+**seq** ``INTEGER`` Sequential value starting from **1**.
+**start_vid** ``INTEGER`` Identifier of the starting vertex.
+**node** ``BIGINT`` Identifier of the node in the path within the limits from ``start_vid``.
+**edge** ``BIGINT`` Identifier of the edge used to arrive to ``node``. ``0`` when the ``node`` is the ``start_vid``.
+**cost** ``FLOAT`` Cost to traverse ``edge``.
+**agg_cost** ``FLOAT`` Aggregate cost from ``start_vid`` to ``node``.
+============== =========== =================================================
+
+
+
+Additional Examples
+-------------------------------------------------------------------------------
+
+Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
+................................................................................................
+
+The examples in this section use the following :ref:`fig1`
+
+.. literalinclude:: doc-pgr_drivingDistance.queries
+ :start-after: --q1
+ :end-before: --q2
+
+Examples for queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns
+................................................................................................
+
+The examples in this section use the following :ref:`fig2`
+
+
+.. literalinclude:: doc-pgr_drivingDistance.queries
+ :start-after: --q2
+ :end-before: --q3
+
+Examples for queries marked as ``directed`` with ``cost`` column
+......................................................................................
+
+The examples in this section use the following :ref:`fig3`
+
+.. literalinclude:: doc-pgr_drivingDistance.queries
+ :start-after: --q3
+ :end-before: --q4
+
+
+
+Examples for queries marked as ``undirected`` with ``cost`` column
+......................................................................................
+
+The examples in this section use the following :ref:`fig4`
+
+.. literalinclude:: doc-pgr_drivingDistance.queries
+ :start-after: --q4
+ :end-before: --q5
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`pgr_alphashape` - Alpha shape computation
+* :ref:`pgr_points_as_polygon` - Polygon around set of points
+* :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/forward.html b/doc/forward.html
index 7689cb7..0a5d78c 100644
--- a/doc/forward.html
+++ b/doc/forward.html
@@ -3,13 +3,13 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <meta http-equiv="refresh" content="0; url=doc/index.html">
+ <meta http-equiv="refresh" content="0; url=en/index.html">
<script type="text/javascript">
- window.location.href = "doc/index.html";
+ window.location.href = "en/index.html";
</script>
<title>Page Redirection</title>
</head>
<body>
- If you are not redirected automatically, follow this <a href='doc/index.html'>link</a>.
+ If you are not redirected automatically, follow this <a href='en/index.html'>link</a>.
</body>
-</html>
\ No newline at end of file
+</html>
diff --git a/doc/i18n/de/LC_MESSAGES/doc/index.po b/doc/i18n/de/LC_MESSAGES/doc/index.po
deleted file mode 100644
index 456d3ba..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/index.po
+++ /dev/null
@@ -1,359 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 21:48\n"
-"PO-Revision-Date: 2013-09-24 02:49+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# c86028e885c64c0987f44bbcc08fb02a
-#: ../../index.rst:13
-msgid "Table of Contents"
-msgstr "Inhaltsverzeichnis"
-
-# 32111013f9c94976b553857e93812724
-#: ../../index.rst:15
-msgid ""
-"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
-"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
-"and other network analysis functionality."
-msgstr "pgRouting erweitert eine `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ Geo-Datenbank um Funktionen für “Kürzeste-Wege” Berechnung und andere netzorientierte Algorithmen."
-
-# cd5bc882f7f3412b8a937ba25e203de8
-#: ../../index.rst:17
-msgid "This is the manual for pgRouting |release|."
-msgstr "Dies ist das Handbuch für pgRouting |release|."
-
-# d928c97ad24c4daeae96bb02b87c5a6d
-#: ../../index.rst:23
-msgid ""
-"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
-" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
-"free to use this material any way you like, but we ask that you attribute "
-"credit to the pgRouting Project and wherever possible, a link back to "
-"http://pgrouting.org. For other licenses used in pgRouting see the "
-":ref:`license` page."
-msgstr ""
-
-# 9024be66e4ef47b9b53de9a42af4550d
-#: ../../index.rst:27
-msgid "General"
-msgstr "Allgemein"
-
-# 268439cb0a4f4417b56ca21d51394850
-#: ../../index.rst:40
-msgid "Tutorial"
-msgstr "Anleitung"
-
-# bf01af3d0d3244f283f5b3fab105caad
-#: ../../index.rst:42
-msgid ":ref:`Tutorial <tutorial1>`"
-msgstr ""
-
-# 116777f411a248f9afe42b9b51679b78
-#: ../../index.rst:44
-msgid ":ref:`Getting started <tutorial>`"
-msgstr ""
-
-# 2066f7d15ec8444c833547cfb3b06a98
-#: ../../index.rst:45
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 2753f71d0fc14b0bbabb14a5180b10d9
-#: ../../index.rst:46
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-# 042f858c16ca4c7ea9fb4baa62efdd44
-#: ../../index.rst:47
-msgid ":ref:`custom_query` that is used in the routing algorithms."
-msgstr ""
-
-# 13f4fade1d47458abf8ba3706110d874
-#: ../../index.rst:48
-msgid ":ref:`performance` to improve your performance."
-msgstr ""
-
-# c3ccc6e6651e47f9b9d271c60976b15c
-#: ../../index.rst:49
-msgid ":ref:`custom_wrapper` to colaborate with a wrapper."
-msgstr ""
-
-# 233aebcc461745c2b0811b7f4328ce3a
-#: ../../index.rst:50
-msgid ":ref:`recipes` to colaborate with a recipe."
-msgstr ""
-
-# 3ae724b7e3714db2942fb7c77124cfc4
-#: ../../index.rst:51
-msgid ":ref:`sampledata` that is used in the examples of this manual."
-msgstr ""
-
-# c92e843c52364963a35112272cb814fd
-#: ../../index.rst:61
-msgid ""
-"For a more complete introduction how to build a routing application read the"
-" `pgRouting Workshop <http://workshop.pgrouting.org>`_."
-msgstr ""
-
-# 524c7dc0d5654f319fc62f2ae08b86f7
-#: ../../index.rst:65
-msgid "Data Types"
-msgstr "Datentypen"
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:67
-msgid ":ref:`data_types`"
-msgstr ""
-
-# ef6b2fcc629f48c7b88d3ac78527893a
-#: ../../index.rst:69
-msgid ""
-":ref:`type_cost_result` - A set of records to describe a path result with "
-"cost attribute."
-msgstr ""
-
-# 84a33ec406d2412c9e681656b4cb9b43
-#: ../../index.rst:70
-msgid ""
-":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
-" path result with cost attribute."
-msgstr ""
-
-# 6a2ba698d366498caa046c97178f05d5
-#: ../../index.rst:71
-msgid ""
-":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
-"path result with geometry attribute."
-msgstr ""
-
-# 9c4629c11bc143a184a6564177b0e7bd
-#: ../../index.rst:80
-msgid "Functions reference"
-msgstr "Referenz aller Funktionen"
-
-# 1f3545abdf7c42cdb73e76f5f149a31b
-#: ../../index.rst:82
-msgid ":ref:`topology_functions`"
-msgstr ""
-
-# 058f97425ccb4cb5870163ebbe948a72
-#: ../../index.rst:84
-msgid ""
-":ref:`pgr_create_topology` - to create a topology based on the geometry."
-msgstr ""
-
-# e839b8e9c3664685a6dc346cac1ea039
-#: ../../index.rst:85
-msgid ""
-":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
-"the source and target information."
-msgstr ""
-
-# 5d9cd0c5ac3043b99ae4fb495036d05f
-#: ../../index.rst:86
-msgid ""
-":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
-
-# 714b5f8623914db981048d201845d040
-#: ../../index.rst:87
-msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
-msgstr ""
-
-# 5f3a1ebfa74d4463912b1c695028121d
-#: ../../index.rst:88
-msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
-msgstr ""
-
-# 655d025751764d39b841997c13775783
-#: ../../index.rst:90
-msgid ":ref:`routing_functions`"
-msgstr ""
-
-# 6a94d292d24b45f7aafda5a754a6ba30
-#: ../../index.rst:92
-msgid ""
-":ref:`pgr_apspJohnson <pgr_apsp_johnson>`- All Pairs Shortest Path, "
-"Johnson’s Algorithm"
-msgstr ""
-
-# fbda3d31d88e4df891d2095dfbb8ab52
-#: ../../index.rst:93
-msgid ""
-":ref:`pgr_apspWarshall<pgr_apsp_warshall>` - All Pairs Shortest Path, Floyd-"
-"Warshall Algorithm"
-msgstr ""
-
-# 10cf6d194dcf4af2be81f0f8034cd5cb
-#: ../../index.rst:94
-msgid ":ref:`pgr_astar<pgr_astar>` - Shortest Path A*"
-msgstr ""
-
-# 72aa55b5147341e6be8b3ac29edc5056
-#: ../../index.rst:95
-msgid ":ref:`pgr_bdAstar<bd_astar>` - Bi-directional A* Shortest Path"
-msgstr ""
-
-# 659e5f56cae84ce598a95fe83608da28
-#: ../../index.rst:96
-msgid ""
-":ref:`pgr_bdDijkstra<bd_dijkstra>` - Bi-directional Dijkstra Shortest Path"
-msgstr ""
-
-# 2a0544bf5ac444cb9f814c98ddd9cac0
-#: ../../index.rst:97
-msgid ":ref:`pgr_dijkstra<pgr_dijkstra>` - Shortest Path Dijkstra"
-msgstr ""
-
-# 0d062718bba84332bc05094be53c7b0b
-#: ../../index.rst:98
-msgid ""
-":ref:`pgr_kDijkstra<pgr_kdijkstra>` - Mutliple destination Shortest Path "
-"Dijkstra"
-msgstr ""
-
-# 388e0ef15cac4c7a87ed5f5f7d164eab
-#: ../../index.rst:99
-msgid ":ref:`pgr_ksp<ksp>` - K-Shortest Path"
-msgstr ""
-
-# 488a2b3901c548b394c466b7580ea9a4
-#: ../../index.rst:100
-msgid ":ref:`pgr_tsp<pgr_tsp>` - Traveling Sales Person"
-msgstr ""
-
-# dc4452cb04fb47fb9d72b4a408ffabeb
-#: ../../index.rst:101
-msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
-msgstr ""
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:103
-msgid ":ref:`dd_index`"
-msgstr ""
-
-# 4f472ddb75b84b6abd644e500b7415f4
-#: ../../index.rst:105
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-# 607bcbfc39c649a4b54020f8d62ce9d0
-#: ../../index.rst:106
-msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
-msgstr ""
-
-# f2e6773ccf394c739af44245aaaf5d02
-#: ../../index.rst:107
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
-
-# ef6b2fcc629f48c7b88d3ac78527893a
-#: ../../index.rst:110
-msgid ""
-":ref:`pgr_get_column_name` - to get the name of the column as is stored in "
-"the postgres administration tables."
-msgstr ""
-
-# b080d86d06dd4b248b6191f5c98ed0b7
-#: ../../index.rst:111
-msgid ""
-":ref:`pgr_get_table_name` - to retrieve the name of the table as is stored "
-"in the postgres administration tables."
-msgstr ""
-
-# 187f8a7ace1944dda76ab8ae8460d727
-#: ../../index.rst:112
-msgid ":ref:`pgr_is_column_indexed` - to check if the column is indexed."
-msgstr ""
-
-# 767ec7460a314ae0ae3ad47836c94182
-#: ../../index.rst:113
-msgid ""
-":ref:`pgr_is_column_in_table` - to check only for the existance of the "
-"column."
-msgstr ""
-
-# 6d632e8288614fc59c04dbdfa5fceb36
-#: ../../index.rst:114
-msgid ""
-":ref:`pgr_point_to_id` -to insert/get the id of the inserted point in a "
-"vertices table."
-msgstr ""
-
-# fd1def8169f543b9afc595abde9021ef
-#: ../../index.rst:115
-msgid ""
-":ref:`pgr_quote_ident` - to quotes the input text to be used as an "
-"identifier in an SQL statement string."
-msgstr ""
-
-# 79be0c2066f3417fb063d0f11b8858bb
-#: ../../index.rst:116
-msgid ":ref:`pgr_version` - to get pgRouting's version information."
-msgstr ""
-
-# e92514488cf348499952b55020516c0f
-#: ../../index.rst:117
-msgid ":ref:`pgr_versionless` - to compare two version numbers."
-msgstr ""
-
-# 52049dec1aa94a84b44977cf3645aeee
-#: ../../index.rst:118
-msgid ""
-":ref:`pgr_start_point` - to get the start point of a (multi)linestring."
-msgstr ""
-
-# b58261fb708141cfbd15342b18e83df7
-#: ../../index.rst:119
-msgid ":ref:`pgr_end_point` - to get the end point of a (multi)linestring."
-msgstr ""
-
-# ccf6b70d55024c8cb87cd02c497cd394
-#: ../../index.rst:138
-msgid "Developer"
-msgstr "Entwickler"
-
-# bc20d365d4514a6dbf644153d3323f8d
-#: ../../index.rst:145
-msgid ":ref:`change_log`"
-msgstr ""
-
-# a6c26cabff9f4df5bbaa3de0ed924b11
-#: ../../index.rst:147
-msgid ":ref:`changelog_2_0`"
-msgstr ""
-
-# 9d2d97e5ab6a4af08a3f5903f9a87114
-#: ../../index.rst:148
-msgid ":ref:`changelog_1_x`"
-msgstr ""
-
-# d1533298308344f6bfa8e1644e3aace0
-#: ../../index.rst:157
-msgid "Indices and tables"
-msgstr "Tabellen und Indizes"
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:158
-msgid ":ref:`genindex`"
-msgstr ":ref:`genindex`"
-
-# 1572d01be82949ec8e487a5dc596b6a4
-#: ../../index.rst:159
-msgid ":ref:`search`"
-msgstr ":ref:`search`"
diff --git a/doc/i18n/de/LC_MESSAGES/doc/index_man.po b/doc/i18n/de/LC_MESSAGES/doc/index_man.po
deleted file mode 100644
index 7902521..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/index_man.po
+++ /dev/null
@@ -1,57 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:08+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 3f6e76c37d304447af292931aa52e56f
-#: ../../index_man.rst:13
-msgid "pgRouting Reference"
-msgstr "pgRouting Referenz"
-
-# 8347fe2ff4be4f9fbcaafbad7adac911
-#: ../../index_man.rst:15
-msgid ""
-"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
-"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
-"and other network analysis functionality."
-msgstr "pgRouting erweitert eine `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ Geo-Datenbank um Funktionen für “Kürzeste-Wege” Berechnung und andere netzorientierte Algorithmen."
-
-# 3f626ce82e7e467c8d0b401e6a88d9ca
-#: ../../index_man.rst:22
-msgid "pgRouting provides several :ref:`common functions <common>`:"
-msgstr "pgRouting stellt verschiedene :ref:`common functions <common>` zur Verfügung:"
-
-# 387e53a164e94fa1a2c34d515a8958d2
-#: ../../index_man.rst:36
-msgid "pgRouting defines a few :ref:`custom data types <data_types>`:"
-msgstr "PgRouting definiert ein paar :ref:`custom data types <data_types>`:"
-
-# af0d92429b274dda891066d0b07d530f
-#: ../../index_man.rst:50
-msgid "pgRouting functions in alphabetical order:"
-msgstr "pgRouting Funktionen in alphabetischer Reihenfolge:"
-
-# 9f2f876866c6467ba1b45223a42790c6
-#: ../../index_man.rst:66
-msgid "If pgRouting is compiled with \"Driving Distance\" enabled:"
-msgstr "Wenn pgRouting mit \"Driving Distance\" aktiviert kompiliert wird:"
-
-# 1e0ce2246f904afbaf6c882025206eaa
-#: ../../index_man.rst:75
-msgid "Some functions from previous releases may have been removed."
-msgstr "Einige Funktionen aus früheren Versionen wurden möglicherweise entfernt."
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/changelog/1_x.po b/doc/i18n/de/LC_MESSAGES/doc/src/changelog/1_x.po
deleted file mode 100644
index 2c54446..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/changelog/1_x.po
+++ /dev/null
@@ -1,153 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-02 17:00+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 6a8f15af6c6d4c709a455b1e6e7913a8
-#: ../../src/changelog/1_x.rst:13
-msgid "pgRouting 1.x Release Notes"
-msgstr "pgRouting 1.x Release Notes"
-
-# 35ec395b4f35487d95e18e46599976e4
-#: ../../src/changelog/1_x.rst:15
-msgid ""
-"The following release notes have been copied from the previous "
-"``RELEASE_NOTES`` file and are kept as a reference. Release notes starting "
-"with :ref:`version 2.0.0 <changelog_2_0>` will follow a different schema."
-msgstr ""
-
-# 703dd8a8fe4d45c1859069c1117ec4b3
-#: ../../src/changelog/1_x.rst:20
-msgid "Changes for release 1.05"
-msgstr "Änderungen in Version 1.05"
-
-# e3f8283c49024042ad77d6924336865c
-# b2d8993542324fb6b2107164df0ba258
-# 88cd476b4bc3446b89dd63ea7ad91e56
-# d1043630671546faabf110ae51109494
-#: ../../src/changelog/1_x.rst:22 ../../src/changelog/1_x.rst:29
-#: ../../src/changelog/1_x.rst:50 ../../src/changelog/1_x.rst:57
-msgid "Bugfixes"
-msgstr "Bugfixes"
-
-# faaf3c4aa64e4806b5b41ecb230f4466
-#: ../../src/changelog/1_x.rst:26
-msgid "Changes for release 1.03"
-msgstr "Änderungen in Version 1.03"
-
-# c258bbbcb3e2445f8f7eb9dde242b0e5
-#: ../../src/changelog/1_x.rst:28
-msgid "Much faster topology creation"
-msgstr ""
-
-# 059297cbe42d4af6b72b9e0d2b6ad06e
-#: ../../src/changelog/1_x.rst:33
-msgid "Changes for release 1.02"
-msgstr "Änderungen in Version 1.02"
-
-# cb2792b313ca4c3fa513b9eb95c5de18
-# 5a7078f4834449bba4a61211426d8ed9
-#: ../../src/changelog/1_x.rst:35 ../../src/changelog/1_x.rst:42
-msgid "Shooting* bugfixes"
-msgstr ""
-
-# 5feb24afeb55480690c6589309388866
-#: ../../src/changelog/1_x.rst:36
-msgid "Compilation problems solved"
-msgstr ""
-
-# 0e0f4a9f6a22461baa8bc5da60cfd41b
-#: ../../src/changelog/1_x.rst:40
-msgid "Changes for release 1.01"
-msgstr "Änderungen in Version 1.01"
-
-# 8ea96e385ab44490850a2a73aa013f9b
-#: ../../src/changelog/1_x.rst:46
-msgid "Changes for release 1.0"
-msgstr "Änderungen in Version 1.0"
-
-# efa896c6a92842fdabbf06c4f8c5b640
-#: ../../src/changelog/1_x.rst:48
-msgid "Core and extra functions are separated"
-msgstr ""
-
-# 51ced072bcbc470c87cc5fd90912467f
-#: ../../src/changelog/1_x.rst:49
-msgid "Cmake build process"
-msgstr ""
-
-# ee707024082d499a962851a420e20d5f
-#: ../../src/changelog/1_x.rst:54
-msgid "Changes for release 1.0.0b"
-msgstr "Änderungen in Version 1.0.0b"
-
-# d94242dc07a94aa5b9cb20cd4fd8f85d
-#: ../../src/changelog/1_x.rst:56
-msgid "Additional SQL file with more simple names for wrapper functions"
-msgstr ""
-
-# 178ec0ecd8a74084a59974d12e30f589
-#: ../../src/changelog/1_x.rst:61
-msgid "Changes for release 1.0.0a"
-msgstr "Änderungen in Version 1.0.0a"
-
-# 5591af5527fc4ff68fbcfb9268f20564
-#: ../../src/changelog/1_x.rst:63
-msgid "Shooting* shortest path algorithm for real road networks"
-msgstr ""
-
-# a0818010adb1442cbe7e345f95689509
-#: ../../src/changelog/1_x.rst:64
-msgid "Several SQL bugs were fixed"
-msgstr ""
-
-# 41324ae038c94f6ea5a7bd9cc30e54fb
-#: ../../src/changelog/1_x.rst:68
-msgid "Changes for release 0.9.9"
-msgstr "Änderungen in Version 0.9.9"
-
-# b89bdfd11c2f4cf29ca3dd3cfd42cb8e
-#: ../../src/changelog/1_x.rst:70
-msgid "PostgreSQL 8.2 support"
-msgstr "PostgreSQL 8.2 Unterstützung"
-
-# 302372f9f60f46d68b18a299cdfd55a6
-#: ../../src/changelog/1_x.rst:71
-msgid ""
-"Shortest path functions return empty result if they couldn’t find any path"
-msgstr ""
-
-# 62b481cbf4d14ffcb2f17ad4a86dc60e
-#: ../../src/changelog/1_x.rst:75
-msgid "Changes for release 0.9.8"
-msgstr "Änderungen in Version 0.9.8"
-
-# 1190ef59b8584d6d9c1fd248ca4fd970
-#: ../../src/changelog/1_x.rst:77
-msgid "Renumbering scheme was added to shortest path functions"
-msgstr ""
-
-# 33634f672fbb4bdbbfba7912efeca26d
-#: ../../src/changelog/1_x.rst:78
-msgid "Directed shortest path functions were added"
-msgstr ""
-
-# 13bb4413398f4f5d921257cdcab82564
-#: ../../src/changelog/1_x.rst:79
-msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/changelog/2_0.po b/doc/i18n/de/LC_MESSAGES/doc/src/changelog/2_0.po
deleted file mode 100644
index bf628c4..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/changelog/2_0.po
+++ /dev/null
@@ -1,171 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 74e7cac777254569ba4d691b13b71fb6
-#: ../../src/changelog/2_0.rst:13
-msgid "pgRouting 2.0 Release Notes"
-msgstr "pgRouting 2.0 Release Notes"
-
-# 4a488611749d4e66b0259dbca6bb3a1f
-#: ../../src/changelog/2_0.rst:15
-msgid ""
-"With the release of pgRouting 2.0 the library has abandoned backwards "
-"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. We did this "
-"so we could restructure pgRouting, standardize the function naming, and "
-"prepare the project for future development. As a result of this effort, we "
-"have been able to simplify pgRouting, add significant new functionality, "
-"integrate documentation and testing into the source tree and make it easier "
-"for multiple developers to make contribution."
-msgstr ""
-
-# 0124322daba943368892e1a062e5a232
-#: ../../src/changelog/2_0.rst:17
-msgid ""
-"For important changes see the following release notes. To see the full list "
-"of changes check the list of `Git commits "
-"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
-msgstr ""
-
-# 591de33525284db5b8eae7f12b38a366
-#: ../../src/changelog/2_0.rst:28
-msgid "Changes for 2.0.0"
-msgstr ""
-
-# 4d95000a614d4236a5cc53a2fc2f49ac
-#: ../../src/changelog/2_0.rst:30
-msgid ""
-"Graph Analytics - tools for detecting and fixing connection some problems in"
-" a graph"
-msgstr ""
-
-# 7b0e1ec73752479fabaaeb4964d2e802
-#: ../../src/changelog/2_0.rst:31
-msgid "A collection of useful utility functions"
-msgstr ""
-
-# 2f200415daa94b76803619813ac6721a
-#: ../../src/changelog/2_0.rst:32
-msgid ""
-"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
-msgstr ""
-
-# f254175913274f7a835197ece43e779e
-#: ../../src/changelog/2_0.rst:33
-msgid ""
-"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
-"pgr_bdDijkstra)"
-msgstr ""
-
-# 3c6748f59dcf427da34f9feed68058f9
-#: ../../src/changelog/2_0.rst:34
-msgid "One to many nodes search (pgr_kDijkstra)"
-msgstr ""
-
-# f9d646b786144bd481006e74130f662e
-#: ../../src/changelog/2_0.rst:35
-msgid "K alternate paths shortest path (pgr_ksp)"
-msgstr ""
-
-# 11ef9fff94d246b48fafc85bc8dc3925
-#: ../../src/changelog/2_0.rst:36
-msgid ""
-"New TSP solver that simplifies the code and the build process (pgr_tsp), "
-"dropped \"Gaul Library\" dependency"
-msgstr ""
-
-# d1f317bb785d45fa861870a35ff12e7b
-#: ../../src/changelog/2_0.rst:37
-msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
-msgstr ""
-
-# 21689470d861417487dd6888bf38ae8b
-#: ../../src/changelog/2_0.rst:38
-msgid "Dropped support for Shooting Star"
-msgstr ""
-
-# c293b041c6974506a333575050aca673
-#: ../../src/changelog/2_0.rst:39
-msgid ""
-"Built a test infrastructure that is run before major code changes are "
-"checked in"
-msgstr ""
-
-# 3c96b251f45b4603a3e474e14d3756a9
-#: ../../src/changelog/2_0.rst:40
-msgid ""
-"Tested and fixed most all of the outstanding bugs reported against 1.x that "
-"existing in the 2.0-dev code base."
-msgstr ""
-
-# ae370e64d8204092bca92f34ddc90a99
-#: ../../src/changelog/2_0.rst:41
-msgid "Improved build process for Windows"
-msgstr "Verbesserter Build-Prozess für Windows"
-
-# 03319867fd7d47ecade2299089b90c8a
-#: ../../src/changelog/2_0.rst:42
-msgid ""
-"Automated testing on Linux and Windows platforms trigger by every commit"
-msgstr ""
-
-# 8543438d8ac34db9816e97ca074dc4bc
-#: ../../src/changelog/2_0.rst:43
-msgid "Modular library design"
-msgstr ""
-
-# 903ec2fa9bb64f87a98c97f8951780d1
-#: ../../src/changelog/2_0.rst:44
-msgid "Compatibility with PostgreSQL 9.1 or newer"
-msgstr "Kompatibilität mit PostgreSQL 9.1 oder neuer"
-
-# 73a67ebe3dbd4dc3a3c437b2180fed37
-#: ../../src/changelog/2_0.rst:45
-msgid "Compatibility with PostGIS 2.0 or newer"
-msgstr "Kompatibilität mit PostGIS 2.0 oder neuer"
-
-# 16e7796b31a94c2781e0f38903b17c26
-#: ../../src/changelog/2_0.rst:46
-msgid "Installs as PostgreSQL EXTENSION"
-msgstr "Installiert als PostgreSQL EXTENSION"
-
-# d5d4a4a79da14ccea4bdbe1310cf5113
-#: ../../src/changelog/2_0.rst:47
-msgid "Return types refactored and unified"
-msgstr ""
-
-# aeff1e0f8f5144a38127aabb5e2dc2fa
-#: ../../src/changelog/2_0.rst:48
-msgid "Support for table SCHEMA in function parameters"
-msgstr ""
-
-# ae6e9cdcdc384571a1803e4b5e3e9718
-#: ../../src/changelog/2_0.rst:49
-msgid "Support for ``st_`` PostGIS function prefix"
-msgstr ""
-
-# b0f6572717ed4979a266117c537f9a5d
-#: ../../src/changelog/2_0.rst:50
-msgid "Added ``pgr_`` prefix to functions and types"
-msgstr ""
-
-# 6178fdcf0cd74f3898a7386ed99f36b4
-#: ../../src/changelog/2_0.rst:51
-msgid "Better documentation: http://docs.pgrouting.org"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/changelog/index.po b/doc/i18n/de/LC_MESSAGES/doc/src/changelog/index.po
deleted file mode 100644
index 3bf8df2..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/changelog/index.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:06+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f1e03235eb844796b93b887af790542d
-#: ../../src/changelog/index.rst:13
-msgid "Release Notes"
-msgstr "Release Notes"
-
-# e9847f5eef6049318a942e17e6da2f58
-#: ../../src/changelog/index.rst:15
-msgid ":ref:`changelog_2_0`"
-msgstr ""
-
-# 1b5ed5b08dee4c3fb08136bd010897ed
-#: ../../src/changelog/index.rst:16
-msgid ":ref:`changelog_1_x`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/developer/discontinued.po b/doc/i18n/de/LC_MESSAGES/doc/src/developer/discontinued.po
deleted file mode 100644
index fc088b9..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/developer/discontinued.po
+++ /dev/null
@@ -1,55 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:36+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 09366a0298d04b47be343c8bf8c6e12a
-#: ../../src/developer/discontinued.rst:13
-msgid "Discontinued Functions"
-msgstr ""
-
-# 8ab172e3591c493f94919b9391d65313
-#: ../../src/developer/discontinued.rst:15
-msgid ""
-"Especially with new major releases functionality may change and functions "
-"may be discontinued for various reasons. Functionality that has been "
-"discontinued will be listed here."
-msgstr ""
-
-# 6bb9bb9b649544eb9384e2c03fa6e60d
-#: ../../src/developer/discontinued.rst:22
-msgid "Shooting Star algorithm"
-msgstr ""
-
-# 6c87b9ac3f1b441a88d4bd7a32449eeb
-#: ../../src/developer/discontinued.rst:24
-msgid "Removed with 2.0.0"
-msgstr ""
-
-# 6afa2318319f4b5e93e9eb99d1dd1843
-#: ../../src/developer/discontinued.rst:25
-msgid "Unresolved bugs, no maintainer, replaced with :ref:`trsp`"
-msgstr ""
-
-# 7e711820b4534143a7fd0d1aa4c5cc58
-#: ../../src/developer/discontinued.rst:26
-msgid ""
-"Please :ref:`contact us <support>` if you're interested to sponsor or "
-"maintain this algorithm. The function signature is still available in "
-":ref:`common_legacy` but it is just a wrapper that throws an error. We have "
-"not included any of the old code for this in this release."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/developer/index.po b/doc/i18n/de/LC_MESSAGES/doc/src/developer/index.po
deleted file mode 100644
index d60a27d..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/developer/index.po
+++ /dev/null
@@ -1,245 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-04 04:17+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 1d69d70e3de44767ae858314df13b562
-#: ../../src/developer/index.rst:13
-msgid "Developer's Guide"
-msgstr ""
-
-# 82f29db373764b3e96cdb308263a9321
-#: ../../src/developer/index.rst:16
-msgid ""
-"All documentation should be in reStructuredText format. See: "
-"<http://docutils.sf.net/rst.html> for introductory docs."
-msgstr ""
-
-# 5641994c410248fbb2042daf032b4f2d
-#: ../../src/developer/index.rst:20
-msgid "Source Tree Layout"
-msgstr ""
-
-# 696f1ffe5fef47a68eb3f899e315ac24
-#: ../../src/developer/index.rst:23
-msgid "cmake scripts used as part of our build system."
-msgstr ""
-
-# 1f0669f1dce543df8ec72ab64c0a3435
-#: ../../src/developer/index.rst:26
-msgid ""
-"This is the algorithm source tree. Each alogorithm should be contained in "
-"its on sub-tree with doc, sql, src, and test sub-directories. This might get"
-" renamed to \"algorithms\" at some point."
-msgstr ""
-
-# d510542616954ff48b4208874a211b08
-#: ../../src/developer/index.rst:31
-msgid ""
-"This is an implementation of A* Search based on using Boost Graph libraries "
-"for its implementation. This is a Dijkstra shortest path implementation with"
-" a Euclidean Heuristic."
-msgstr ""
-
-# 82e5ed804fa34202903c4ca49117d16e
-#: ../../src/developer/index.rst:36
-msgid ""
-"At the moment this does not have an core in \"src\", but does have a lot of "
-"SQL wrapper code and topology code in the \"sql\" directory. *Algorithm "
-"specific wrappers should get move to the algorithm tree and appropriate "
-"tests should get added to validate the wrappers.*"
-msgstr ""
-
-# bfff36e01ca84eadbf8dd70bb1d2276b
-#: ../../src/developer/index.rst:42
-msgid ""
-"This is an implementation of Dikjstra's shortest path solution using Boost "
-"Graph libraries for the implementation."
-msgstr ""
-
-# 4b632593c518431abd06afc2badcf018
-#: ../../src/developer/index.rst:46
-msgid ""
-"This optional package creates driving distance polygons based on solving a "
-"Dijkstra shortest path solution, then creating polygons based on equal cost "
-"distances from the start point. This optional package requires CGAL "
-"libraries to be installed."
-msgstr ""
-
-# 936e4db4894447a899f6c0b8ca26f617
-#: ../../src/developer/index.rst:52
-msgid ""
-"*DEPRECATED and DOES NOT WORK and IS BEING REMOVED* This is an edge based "
-"shortest path algorithm that supports turn restrictions. It is based on "
-"Boost Graph. Do *NOT* use this algorithm as it is broken, instead use *trsp*"
-" which has the same functionality and is faster and give correct results."
-msgstr ""
-
-# c7f26387b9b24096ba96fb7a518e437a
-#: ../../src/developer/index.rst:59
-msgid ""
-"This is a turn restricted shortest path algorithm. It has some nice features"
-" like you can specify the start and end points as a percentage along an "
-"edge. Restrictions are stored in a separate table from the graph edges and "
-"this make it easier to manage the data."
-msgstr ""
-
-# 3141234121954acaa2dc52065d5d7dce
-#: ../../src/developer/index.rst:65
-msgid ""
-"This optional package provides the ability to compute traveling salesman "
-"problem solutions and compute the resulting route. This optional package "
-"requires GAUL libaries to be installed."
-msgstr ""
-
-# 5ace4e065d5c41c2808f78da0db17058
-#: ../../src/developer/index.rst:70
-msgid "Miscellaneous scripts and tools."
-msgstr ""
-
-# 498a3b11a76644cfa7088aa739876e51
-#: ../../src/developer/index.rst:73
-msgid ""
-"This is the output directory where compiled libraries and installation "
-"targets are staged before installation."
-msgstr ""
-
-# 52c0a49d07ec469bb08dae55c7b29f1d
-#: ../../src/developer/index.rst:78
-msgid "Documentation Layout"
-msgstr ""
-
-# 223870fbd494436ba478618c7f0655ab
-#: ../../src/developer/index.rst:80
-msgid ""
-"*As noted above all documentation should be done using reStructuredText "
-"formated files.*"
-msgstr ""
-
-# 056f8e732df8417c8d30876629544918
-#: ../../src/developer/index.rst:83
-msgid ""
-"Documentation is distributed into the source tree. This top level \"doc\" "
-"directory is intended for high level documentation cover subjects like:"
-msgstr ""
-
-# cb7d40e7fa8f4bf99586caad505ee056
-#: ../../src/developer/index.rst:86
-msgid "Compiling and testing"
-msgstr ""
-
-# f8297a944ea14512ac068fffbebb9704
-#: ../../src/developer/index.rst:87
-msgid "Installation"
-msgstr ""
-
-# 2623e7a6862948a88651b230afb04066
-#: ../../src/developer/index.rst:88
-msgid "Tutorials"
-msgstr ""
-
-# 48cc983d7eb14596bc213e04f2424ef5
-#: ../../src/developer/index.rst:89
-msgid "Users' Guide front materials"
-msgstr ""
-
-# 35d4289409ff4e20b9f3fc99e5ff3ebc
-#: ../../src/developer/index.rst:90
-msgid "Reference Manual front materials"
-msgstr ""
-
-# 0a39de23e4754aeaaf23bda932025e46
-#: ../../src/developer/index.rst:91
-msgid "etc"
-msgstr ""
-
-# 1d97d5eb207f4948a5d054cbc1f0d11d
-#: ../../src/developer/index.rst:93
-msgid ""
-"Since the algorithm specific documentation is contained in the source tree "
-"with the algorithm specific files, the process of building the documentation"
-" and publishing it will need to assemble the details with the front material"
-" as needed."
-msgstr ""
-
-# 4a479c8d44504c31bb0c966f29b59fca
-#: ../../src/developer/index.rst:98
-msgid ""
-"Also, to keep the \"doc\" directory from getting cluttered, each major book "
-"like those listed above, should be contained in a separate directory under "
-"\"doc\". Any images or other materials related to the book should also be "
-"kept in that directory."
-msgstr ""
-
-# c7f0aeb3bd8b446780356e0c8cda8810
-#: ../../src/developer/index.rst:105
-msgid "Testing Infrastructure"
-msgstr ""
-
-# c623e96a0a244704afbc0fd1bdc839eb
-#: ../../src/developer/index.rst:107
-msgid ""
-"There is a very basic testing infrastructure put in place. Here are the "
-"basics of how it works. We need more test cases. Longer term we should "
-"probably get someone to setup travis-ci or jenkins testing frameworks."
-msgstr ""
-
-# 795beec501574346bf79b70ec796327d
-#: ../../src/developer/index.rst:111
-msgid "Here is the graph for the TRSP tests."
-msgstr ""
-
-# c307557b6e9345bb80ecec65181e0e3b
-#: ../../src/developer/index.rst:115
-msgid ""
-"Tests are run via the script at the top level tools/test-runner.pl and it "
-"runs all the test configured tests and at the moment just dumps the results "
-"structure of the test. This can be prettied up later."
-msgstr ""
-
-# 0124c9e435cd45ed8add01948a01c8b4
-#: ../../src/developer/index.rst:119
-msgid ""
-"It also assumes that you have installed the libraries as it tests using the "
-"installed postgresql. This probably needs to be made smarter so we can test "
-"out of the build tree. I'll need to think about that."
-msgstr ""
-
-# ba9f62496a8043bfa546ff97514644ee
-#: ../../src/developer/index.rst:124
-msgid ""
-"Basically each .../test/ directory should include one *test.conf* file that "
-"is a perl script fragment that defines what data files to load and what "
-"tests to run. I have built in some mechanisms to allow test and data to be "
-"pg version and postgis version specific, but I'm not using that yet. So for "
-"example, *core/trsp/test/test-any-00.data* is a sql plain text dump that "
-"will load and needed data for a set of tests. This is also the graph in the "
-"image above. You can specify multiple files to load, but as a group they "
-"need to have unique names."
-msgstr ""
-
-# 43961b4cdd0949378b7a7fc420ef8db7
-#: ../../src/developer/index.rst:133
-msgid ""
-"core/trsp/test/test-any-00.test is a sql command to be run. It will get run "
-"as:"
-msgstr ""
-
-# bcfc5aa90d5f426eb6d757230beba796
-#: ../../src/developer/index.rst:141
-msgid "Then if there is a difference then an test failure is reported."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/developer/sampledata.po b/doc/i18n/de/LC_MESSAGES/doc/src/developer/sampledata.po
deleted file mode 100644
index 7da26b6..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/developer/sampledata.po
+++ /dev/null
@@ -1,41 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:37+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 57710d17ae7543e2b771629aff75600e
-#: ../../src/developer/sampledata.rst:13
-msgid "Sample Data"
-msgstr ""
-
-# 7f421eecf5044efd98b200b36124a83c
-#: ../../src/developer/sampledata.rst:15
-msgid ""
-"The documentation provides very simple example queries based on a small "
-"sample network. To be able to execute the sample queries, run the following "
-"SQL commands to create a table with a small network dataset."
-msgstr ""
-
-# 22d8afba7fd34fd6b7bf201ba4e1ba0c
-#: ../../src/developer/sampledata.rst:21
-msgid "Create table"
-msgstr ""
-
-# 39ea0437205c4eaca6eb612e61a74795
-#: ../../src/developer/sampledata.rst:50
-msgid "Insert network data"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/installation/build.po b/doc/i18n/de/LC_MESSAGES/doc/src/installation/build.po
deleted file mode 100644
index 358e402..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/installation/build.po
+++ /dev/null
@@ -1,153 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 36951e7f140d4d5b980b0b6a97a04faf
-#: ../../src/installation/build.rst:13
-msgid "Build Guide"
-msgstr "Build-Anleitung"
-
-# 8c64736c7cb4454d8d602456cae13eb7
-#: ../../src/installation/build.rst:15
-msgid ""
-"To be able to compile pgRouting make sure that the following dependencies "
-"are met:"
-msgstr "Um pgRouting kompilieren zu können stellen Sie sicher, dass die folgenden Abhängigkeiten erfüllt sind:"
-
-# 803fb42d0ed746e7b1434fc0702fecc4
-#: ../../src/installation/build.rst:17
-msgid "C and C++ compilers"
-msgstr "C- und C++-Compiler"
-
-# c5384bc38f6745bd858daa8f2778464c
-#: ../../src/installation/build.rst:18
-msgid "Postgresql version >= 8.4 (>= 9.1 recommended)"
-msgstr "PostgreSQL-Version >= 8,4 (>= 9.1 empfohlen)"
-
-# 7822317678024503afbe9da83351626f
-#: ../../src/installation/build.rst:19
-msgid "PostGIS version >= 1.5 (>= 2.0 recommended)"
-msgstr "PostGIS Version >= 1,5 (>= 2.0 empfohlen)"
-
-# 2092361736a94597ae950089f6baeb7c
-#: ../../src/installation/build.rst:20
-msgid "The Boost Graph Library (BGL). Version >= [TBD]"
-msgstr ""
-
-# ad7f5e5325504267abb8922823e31b6c
-#: ../../src/installation/build.rst:21
-msgid "CMake >= 2.8.8"
-msgstr "CMake >= 2.8.8"
-
-# 9423854129e8411ca11bc2e79ed0a44e
-#: ../../src/installation/build.rst:22
-msgid "(optional, for Driving Distance) CGAL >= [TBD]"
-msgstr ""
-
-# fbff857abfa44607b05113423945439a
-#: ../../src/installation/build.rst:23
-msgid "(optional, for Documentation) Sphinx >= 1.1"
-msgstr ""
-
-# 48f6a3951914403f9e1b5ac7d64ada3f
-#: ../../src/installation/build.rst:24
-msgid "(optional, for Documentation as PDF) Latex >= [TBD]"
-msgstr ""
-
-# c6b958f8611849fe90a824cc62db1a74
-#: ../../src/installation/build.rst:26
-msgid ""
-"The cmake system has variables the can be configured via the command line "
-"options by setting them with -D<varable>=<value>. You can get a listing of "
-"these via:"
-msgstr ""
-
-# 62a69adeee3141d5a7de8e0510818440
-#: ../../src/installation/build.rst:34
-msgid "Currently these are:"
-msgstr ""
-
-# 35027a6663fc4210b027e5210150e681
-#: ../../src/installation/build.rst:36
-msgid ""
-"Boost_DIR:PATH=Boost_DIR-NOTFOUND CMAKE_BUILD_TYPE:STRING= "
-"CMAKE_INSTALL_PREFIX:PATH=/usr/local "
-"POSTGRESQL_EXECUTABLE:FILEPATH=/usr/lib/postgresql/9.2/bin/postgres "
-"POSTGRESQL_PG_CONFIG:FILEPATH=/usr/bin/pg_config WITH_DD:BOOL=ON "
-"WITH_DOC:BOOL=OFF BUILD_HTML:BOOL=ON BUILD_LATEX:BOOL=OFF BUILD_MAN:BOOL=ON"
-msgstr ""
-
-# 2a6ecc049d1a49e481516a497cb42cfd
-#: ../../src/installation/build.rst:47
-msgid ""
-"These also show the current or default values based on our development "
-"system. So your values my be different. In general the ones that are of most"
-" interest are:"
-msgstr ""
-
-# b07b4fda86d7472b823a2e8982cf6b05
-#: ../../src/installation/build.rst:49
-msgid ""
-"WITH_DD:BOOL=ON -- Turn on/off building driving distance code. "
-"WITH_DOC:BOOL=OFF -- Turn on/off building the documentation "
-"BUILD_HTML:BOOL=ON -- If WITH_DOC=ON, turn on/off building HTML "
-"BUILD_LATEX:BOOL=OFF -- If WITH_DOC=ON, turn on/off building PDF "
-"BUILD_MAN:BOOL=ON -- If WITH_DOC=ON, turn on/off building MAN pages"
-msgstr ""
-
-# 1b3877776a474e2bbae2cdf632ab7898
-#: ../../src/installation/build.rst:55
-msgid ""
-"To change any of these add ``-D<variable>=<value>`` to the cmake lines "
-"below. For example to turn on documentation, your cmake command might look "
-"like:"
-msgstr ""
-
-# ce5663a99fe540e59ba79b8415f2e8cf
-#: ../../src/installation/build.rst:62
-msgid ""
-"If you turn on the documentation, you also need to add the ``doc`` target to"
-" the make command."
-msgstr ""
-
-# 3447ac18753a48cd8b36008a1c4c10c7
-#: ../../src/installation/build.rst:72
-msgid "For MinGW on Windows"
-msgstr "Für MinGW unter Windows"
-
-# 9e2e9bb5dfd54856a24b3e0f455b0c82
-#: ../../src/installation/build.rst:84
-msgid "For Linux"
-msgstr "Für Linux"
-
-# 4939346c6ad34ddc92927ceeb1b5a543
-#: ../../src/installation/build.rst:96
-msgid "With Documentation"
-msgstr "Mit Dokumentation"
-
-# a86f43c9a5b84d089caa0a06ac07f64c
-#: ../../src/installation/build.rst:98
-msgid ""
-"Build with documentation (requires `Sphinx <http://sphinx-doc.org/>`_):"
-msgstr ""
-
-# c9c92cc08d7440f98fe61e333ffc6fe6
-#: ../../src/installation/build.rst:106
-msgid "Rebuild modified documentation only:"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/installation/index.po b/doc/i18n/de/LC_MESSAGES/doc/src/installation/index.po
deleted file mode 100644
index 3e7725b..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/installation/index.po
+++ /dev/null
@@ -1,202 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:38+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 163e330cdbbe4f1895d0b837c5e70863
-#: ../../src/installation/index.rst:13
-msgid "Installation"
-msgstr ""
-
-# 6ce6ab6a98ca40bcb2f8a9b323420347
-#: ../../src/installation/index.rst:15
-msgid ""
-"Binary packages are provided for the current version on the following "
-"platforms:"
-msgstr ""
-
-# 05f844edf06c4e02ad708863cbce2c0b
-#: ../../src/installation/index.rst:19
-msgid "Windows"
-msgstr ""
-
-# a160af2c58664a97bf2d2b70b86c1a77
-#: ../../src/installation/index.rst:21
-msgid "Winnie Bot Experimental Builds:"
-msgstr ""
-
-# d4ecd2a3db9b4e87bb57273b674f6d0f
-#: ../../src/installation/index.rst:23
-msgid ""
-"`PostgreSQL 9.2 32-bit, 64-bit "
-"<http://winnie.postgis.net/download/windows/pg92/buildbot/>`_"
-msgstr ""
-
-# d5014bf62620469b9712ec5f65bcf3eb
-#: ../../src/installation/index.rst:27
-msgid "Ubuntu/Debian"
-msgstr ""
-
-# b01ddbea3b8a41acb6fb1d0f4bc5b47a
-#: ../../src/installation/index.rst:29
-msgid "Ubuntu packages are available in Launchpad repositories:"
-msgstr ""
-
-# 7161d112f8b84fb99b4d331d0b5c50f0
-#: ../../src/installation/index.rst:31
-msgid "*stable* https://launchpad.net/~georepublic/+archive/pgrouting"
-msgstr ""
-
-# a8317be66d4447aea1946994220ce26b
-#: ../../src/installation/index.rst:32
-msgid ""
-"*unstable* https://launchpad.net/~georepublic/+archive/pgrouting-unstable"
-msgstr ""
-
-# b3e4f3a43bb74b368605395a9052413c
-#: ../../src/installation/index.rst:43
-msgid ""
-"Use `UbuntuGIS-unstable PPA <https://launchpad.net/~ubuntugis/+archive"
-"/ubuntugis-unstable>`_ to install PostGIS 2.0."
-msgstr ""
-
-# e936e220d939412a8cf6d96a001f1972
-#: ../../src/installation/index.rst:47
-msgid "RHEL/CentOS/Fedora"
-msgstr ""
-
-# 0ee2b5493d0d45cf8b576674352dc29f
-#: ../../src/installation/index.rst:49
-msgid ""
-"Fedora RPM's: https://admin.fedoraproject.org/pkgdb/acls/name/pgRouting"
-msgstr ""
-
-# 8f056c29f5c042d5b3e3a6fb26632448
-#: ../../src/installation/index.rst:53
-msgid "OSX"
-msgstr ""
-
-# ed8ef1be20f64f4582b6b5ade7f9dab8
-#: ../../src/installation/index.rst:55
-msgid ""
-"See `builds from KingChaos <http://www.kyngchaos.com/software/postgres>`_."
-msgstr ""
-
-# 1a87de6c454844e4be378f1df26c524e
-#: ../../src/installation/index.rst:59
-msgid "Build from Source"
-msgstr ""
-
-# 2d222bc491194fabab4b8e99c2692f59
-#: ../../src/installation/index.rst:62
-msgid "Source Package"
-msgstr ""
-
-# d1443c9ed92746328d680435d8d8818a
-#: ../../src/installation/index.rst:65
-msgid "Git 2.0.0-rc1 release"
-msgstr ""
-
-# 2b974ad9ee254e0aa0b29f2ca8387c9b
-#: ../../src/installation/index.rst:65
-msgid "`v2.0.0-rc1.tar.gz`_"
-msgstr ""
-
-# 6629edb488814621841fc5d654df4268
-#: ../../src/installation/index.rst:65
-msgid "`v2.0.0-rc1.zip`_"
-msgstr ""
-
-# a846a5dc3d9d4b34aa18e6226d2b0051
-#: ../../src/installation/index.rst:66
-msgid "Git 2.0.0-beta release"
-msgstr ""
-
-# 6cc5c0ed1f994c7e9af5c58f2eaf5a53
-#: ../../src/installation/index.rst:66
-msgid "`v2.0.0-beta.tar.gz`_"
-msgstr ""
-
-# faccd199fa2444b89de2e56aad585fff
-#: ../../src/installation/index.rst:66
-msgid "`v2.0.0-beta.zip`_"
-msgstr ""
-
-# 90006b2011c34a2dba6a4a9a331ad85d
-#: ../../src/installation/index.rst:67
-msgid "Git 2.0.0-alpha release"
-msgstr ""
-
-# e1cf3fc6b7a14c00a4cb8f0c9aa79326
-#: ../../src/installation/index.rst:67
-msgid "`v2.0.0-alpha.tar.gz`_"
-msgstr ""
-
-# 5983f427034b4116a8afb3fdf0381714
-#: ../../src/installation/index.rst:67
-msgid "`v2.0.0-alpha.zip`_"
-msgstr ""
-
-# 0df6abc6dedf471f8e19c1c19dfd6d4b
-#: ../../src/installation/index.rst:68
-msgid "Git master branch"
-msgstr ""
-
-# 8b34a03d3ab2472b9d52d9a0cf02f2f8
-#: ../../src/installation/index.rst:68
-msgid "`master.tar.gz`_"
-msgstr ""
-
-# 650cb6bea4c7421c809a7004eb659752
-#: ../../src/installation/index.rst:68
-msgid "`master.zip`_"
-msgstr ""
-
-# 8ef094f785bd4f5798cf97ee067fdc1f
-#: ../../src/installation/index.rst:69
-msgid "Git develop branch"
-msgstr ""
-
-# abe3478ebc7340d3a3b72e90a594893b
-#: ../../src/installation/index.rst:69
-msgid "`develop.tar.gz`_"
-msgstr ""
-
-# 4dfb2f54f804476e9ee2633269cee592
-#: ../../src/installation/index.rst:69
-msgid "`develop.zip`_"
-msgstr ""
-
-# 96bcd0300f4d4b82bac12c6bc618c447
-#: ../../src/installation/index.rst:89
-msgid "Using Git"
-msgstr ""
-
-# 18952685a3b14b359dc6ec26aa24fe9e
-#: ../../src/installation/index.rst:91
-msgid "Git protocol (read-only):"
-msgstr ""
-
-# e8ce5f46743846ed8a1702c07ff568a2
-#: ../../src/installation/index.rst:98
-msgid "HTTPS protocol (read-only):"
-msgstr ""
-
-# 2ea3553b44b045099b3407681b9c893f
-#: ../../src/installation/index.rst:105
-msgid "See :ref:`build` for notes on compiling from source."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/introduction/index.po b/doc/i18n/de/LC_MESSAGES/doc/src/introduction/index.po
deleted file mode 100644
index 8a1b0d9..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/introduction/index.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 3cb0b7c03fa84c59a8bdb4f5efd33fec
-#: ../../src/introduction/index.rst:23
-msgid "Indices and tables"
-msgstr "Tabellen und Indizes"
-
-# 8cbfd2a6f6d44a1599cfff832b626535
-#: ../../src/introduction/index.rst:24
-msgid ":ref:`genindex`"
-msgstr ":ref:`genindex`"
-
-# df46715e85104bf48ebb9fb9005099e0
-#: ../../src/introduction/index.rst:25
-msgid ":ref:`search`"
-msgstr ":ref:`search`"
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/introduction/support.po b/doc/i18n/de/LC_MESSAGES/doc/src/introduction/support.po
deleted file mode 100644
index 3983feb..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/introduction/support.po
+++ /dev/null
@@ -1,212 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:37+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 3f3e673fb58a4facae23af5d85b92a3e
-#: ../../src/introduction/support.rst:13
-msgid "Support"
-msgstr ""
-
-# 054afbc73bff4758b3f1f2f23c57f16c
-#: ../../src/introduction/support.rst:15
-msgid ""
-"pgRouting community support is available through `website "
-"<http://www.pgrouting.org>`_, `documentation <http://docs.pgrouting.org>`_, "
-"tutorials, mailing lists and others. If you’re looking for :ref:`commercial "
-"support <support_commercial>`, find below a list of companies providing "
-"pgRouting development and consulting services."
-msgstr ""
-
-# 00eb6c3f6a9d4ffa879660f666f09fd2
-#: ../../src/introduction/support.rst:19
-msgid "Reporting Problems"
-msgstr ""
-
-# f852f553af29413fa977344ea5ebe860
-#: ../../src/introduction/support.rst:21
-msgid ""
-"Bugs are reported and managed in an `issue tracker "
-"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
-"steps:"
-msgstr ""
-
-# 6db36a1db3dd43e58fd38f9dbd64a222
-#: ../../src/introduction/support.rst:23
-msgid ""
-"Search the tickets to see if your problem has already been reported. If so, "
-"add any extra context you might have found, or at least indicate that you "
-"too are having the problem. This will help us prioritize common issues."
-msgstr ""
-
-# c1bf71ad2fbb411bb697d605d746d9a7
-#: ../../src/introduction/support.rst:24
-msgid ""
-"If your problem is unreported, create a `new issue "
-"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
-msgstr ""
-
-# fe9adaa2deb041a29b790096a0172f6d
-#: ../../src/introduction/support.rst:25
-msgid ""
-"In your report include explicit instructions to replicate your issue. The "
-"best tickets include the exact SQL necessary to replicate a problem."
-msgstr ""
-
-# a1b37c7ea578450897528b3c37b048d1
-#: ../../src/introduction/support.rst:26
-msgid ""
-"If you can test older versions of PostGIS for your problem, please do. On "
-"your ticket, note the earliest version the problem appears."
-msgstr ""
-
-# 7c99e581b4624250aff7cdae6bdcd0c8
-#: ../../src/introduction/support.rst:27
-msgid ""
-"For the versions where you can replicate the problem, note the operating "
-"system and version of pgRouting, PostGIS and PostgreSQL."
-msgstr ""
-
-# b5fd7543c8b54f34b556a133fb638174
-#: ../../src/introduction/support.rst:31
-msgid "Mailing List and GIS StackExchange"
-msgstr ""
-
-# 2867bdf7c4d8450b86de7702b26e37ab
-#: ../../src/introduction/support.rst:33
-msgid ""
-"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
-"server:"
-msgstr ""
-
-# 36b218682a5b495386d69caea89554a0
-#: ../../src/introduction/support.rst:35
-msgid ""
-"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
-msgstr ""
-
-# af2dbf4b5c35487cbbf47c409093d3c3
-#: ../../src/introduction/support.rst:36
-msgid ""
-"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
-"dev"
-msgstr ""
-
-# 37947883c7b74e47bfa51cdac68b080a
-#: ../../src/introduction/support.rst:38
-msgid ""
-"For general questions and topics about how to use pgRouting, please write to"
-" the user mailing list."
-msgstr ""
-
-# 7e3dfcc3a31a4ba3bc41f6c7d5a3c19b
-#: ../../src/introduction/support.rst:40
-msgid ""
-"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
-" tag the question with ``pgrouting``. Find all questions tagged with "
-"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
-"or subscribe to the `pgRouting questions feed "
-"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
-msgstr ""
-
-# 18af2d65168042edac691be50d758d38
-#: ../../src/introduction/support.rst:46
-msgid "Commercial Support"
-msgstr ""
-
-# 01737e94c36042388ff00a08c37c5837
-#: ../../src/introduction/support.rst:48
-msgid ""
-"For users who require professional support, development and consulting "
-"services, consider contacting any of the following organizations, which have"
-" significantly contributed to the development of pgRouting:"
-msgstr ""
-
-# 698641cbd88f432f9273710e46df58c5
-#: ../../src/introduction/support.rst:53
-msgid "**Company**"
-msgstr ""
-
-# 0ab2194260424eb395df6be8d03f0611
-#: ../../src/introduction/support.rst:54
-msgid "**Offices in**"
-msgstr ""
-
-# e3c7d214f6aa4fc5bc8e54c16bd586b3
-#: ../../src/introduction/support.rst:55
-msgid "**Website**"
-msgstr ""
-
-# 6342d8daef894a66b042852b7aed0be3
-#: ../../src/introduction/support.rst:56
-msgid "Georepublic"
-msgstr ""
-
-# 4cff0cbdf09142fe96cedf784e527f88
-#: ../../src/introduction/support.rst:57
-msgid "Germany, Japan"
-msgstr ""
-
-# d21fbd0b66dd460782765e0899cda198
-#: ../../src/introduction/support.rst:58
-msgid "http://georepublic.info"
-msgstr ""
-
-# 4709209a400848fbb145d3e9bbd8289b
-#: ../../src/introduction/support.rst:59
-msgid "iMaptools"
-msgstr ""
-
-# 9c4e2cec8d6e49b9b1d395ef568e7bf4
-#: ../../src/introduction/support.rst:60
-msgid "United States"
-msgstr ""
-
-# f139763c29294bb79ebd32b4794edfcb
-#: ../../src/introduction/support.rst:61
-msgid "http://imaptools.com"
-msgstr ""
-
-# bc88272585b7418e87f8aa1e03fd54a5
-#: ../../src/introduction/support.rst:62
-msgid "Orkney Inc."
-msgstr ""
-
-# 84daebce6fc94b6e953b97d39cdf8c25
-#: ../../src/introduction/support.rst:63
-msgid "Japan"
-msgstr ""
-
-# 624d95640fbb41c3b1e2c8be2ac6643f
-#: ../../src/introduction/support.rst:64
-msgid "http://www.orkney.co.jp"
-msgstr ""
-
-# dfe08a11bfac41ccb2e0c58cb1e0147c
-#: ../../src/introduction/support.rst:65
-msgid "Camptocamp"
-msgstr ""
-
-# 6de446c9b4aa48b7bdf619923546c10d
-#: ../../src/introduction/support.rst:66
-msgid "Switzerland, France"
-msgstr ""
-
-# c15be03a07254055b4b18b07c808943c
-#: ../../src/introduction/support.rst:67
-msgid "http://www.camptocamp.com"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/analytics.po b/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/analytics.po
deleted file mode 100644
index f60a882..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/analytics.po
+++ /dev/null
@@ -1,214 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 980fad1a06484f7c8cef9a7fde4958ec
-#: ../../src/tutorial/analytics.rst:13
-msgid "Graph Analytics"
-msgstr ""
-
-# 92dfdaca18154d5fb972e4b0377224d1
-#: ../../src/tutorial/analytics.rst:15
-msgid "Stephen Woodbridge <woodbri at swoodbridge.com>"
-msgstr ""
-
-# 9d29818196394fe6bde3a64a6a4ecc11
-#: ../../src/tutorial/analytics.rst:16
-msgid ""
-"Stephen Woodbridge. The source code is released under the MIT-X license."
-msgstr ""
-
-# 310f125aa8204065bcc2b95d49db2196
-#: ../../src/tutorial/analytics.rst:20
-msgid "Overview"
-msgstr ""
-
-# a3236e530b504e8895bcee266c2f686b
-#: ../../src/tutorial/analytics.rst:22
-msgid ""
-"It is common to find problems with graphs that have not been constructed "
-"fully noded or in graphs with z-levels at intersection that have been "
-"entered incorrectly. An other problem is one way streets that have been "
-"entered in the wrong direction. We can not detect errors with respect to "
-"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
-"a graph and report them for additional inspections."
-msgstr ""
-
-# be553e417c184b5eb0ad8ee4096ad7fa
-#: ../../src/tutorial/analytics.rst:24
-msgid ""
-"We do not current have any visualization tools for these problems, but I "
-"have used mapserver to render the graph and highlight potential problem "
-"areas. Someone familiar with graphviz might contribute tools for generating "
-"images with that."
-msgstr ""
-
-# d3e3bf311b944d1cb4f8ebfa1e3d1c35
-#: ../../src/tutorial/analytics.rst:28
-msgid "Analyze a Graph"
-msgstr ""
-
-# b7b34732b36b4c3386ebb82a99725c87
-#: ../../src/tutorial/analytics.rst:30
-msgid ""
-"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
-"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
-"table:"
-msgstr ""
-
-# 883152de9fb3419fa261d8c6761b619f
-#: ../../src/tutorial/analytics.rst:53
-msgid "In the vertices table \"mytab_vertices_pgr\":"
-msgstr ""
-
-# dde249ef911949ab835d0b7d9350c416
-#: ../../src/tutorial/analytics.rst:55
-msgid "Deadends are indentified by ``cnt=1``"
-msgstr ""
-
-# 99f8cb76dde84268b23cafcadb364a32
-#: ../../src/tutorial/analytics.rst:56
-msgid "Potencial gap problems are identified with ``chk=1``."
-msgstr ""
-
-# fd199f728c124588a6fccf258e912e65
-#: ../../src/tutorial/analytics.rst:74
-msgid ""
-"For isolated road segments, for example, a segment where both ends are "
-"deadends. you can find these with the following query:"
-msgstr ""
-
-# 6986ddb18688499ca9065a00ac84b5fc
-#: ../../src/tutorial/analytics.rst:83
-msgid ""
-"If you want to visualize these on a graphic image, then you can use "
-"something like mapserver to render the edges and the vertices and style "
-"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
-"tool like graphviz, or geoserver or other similar tools."
-msgstr ""
-
-# a9cdd802bf2d44b8ad116075edfa006d
-#: ../../src/tutorial/analytics.rst:87
-msgid "Analyze One Way Streets"
-msgstr ""
-
-# ceeba0ba5905459c92f8e38e90544cb4
-#: ../../src/tutorial/analytics.rst:89
-msgid ""
-":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
-" any flipped segments. Basically if you count the edges coming into a node "
-"and the edges exiting a node the number has to be greater than one."
-msgstr ""
-
-# 965b89e720674f77a4d6d97b26312235
-#: ../../src/tutorial/analytics.rst:91
-msgid ""
-"This query will add two columns to the vertices_tmp table ``ein int`` and "
-"``eout int`` and populate it with the appropriate counts. After running this"
-" on a graph you can identify nodes with potential problems with the "
-"following query."
-msgstr ""
-
-# 7a483848e9424b628eadf2560140d784
-#: ../../src/tutorial/analytics.rst:94
-msgid ""
-"The rules are defined as an array of text strings that if match the ``col`` "
-"value would be counted as true for the source or target in or out condition."
-msgstr ""
-
-# 07304f9bde2d4248af5616aa3ad7b998
-#: ../../src/tutorial/analytics.rst:98
-msgid "Example"
-msgstr ""
-
-# 3a0862cb802a42dd9a8eb1972e947d4a
-#: ../../src/tutorial/analytics.rst:100
-msgid ""
-"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
-"might have values like:"
-msgstr ""
-
-# 04d77c12d42a49098ac138d4cd8d1134
-#: ../../src/tutorial/analytics.rst:102
-msgid "'FT' - oneway from the source to the target node."
-msgstr ""
-
-# 1e433297e48745b8a26d9bdc471bb079
-#: ../../src/tutorial/analytics.rst:103
-msgid "'TF' - oneway from the target to the source node."
-msgstr ""
-
-# ec58ad375c304521a62c088b53b57cca
-#: ../../src/tutorial/analytics.rst:104
-msgid "'B' - two way street."
-msgstr ""
-
-# de3d50611ab84de8abc0434aaf176361
-#: ../../src/tutorial/analytics.rst:105
-msgid "'' - empty field, assume twoway."
-msgstr ""
-
-# bec6afb7e7f0453b8d028b521ce38b1f
-#: ../../src/tutorial/analytics.rst:106
-msgid "<NULL> - NULL field, use two_way_if_null flag."
-msgstr ""
-
-# 8b2a6e5d0f58459b9c0d857b8094b2b1
-#: ../../src/tutorial/analytics.rst:108
-msgid ""
-"Then we could form the following query to analyze the oneway streets for "
-"errors."
-msgstr ""
-
-# ca0da22fa34a4ab8abffbb33176f1196
-#: ../../src/tutorial/analytics.rst:127
-msgid ""
-"Typically these problems are generated by a break in the network, the one "
-"way direction set wrong, maybe an error related to z-levels or a network "
-"that is not properly noded."
-msgstr ""
-
-# e6995522d4b34322a49f7fc234ef5a92
-#: ../../src/tutorial/analytics.rst:129
-msgid ""
-"The above tools do not detect all network issues, but they will identify "
-"some common problems. There are other problems that are hard to detect "
-"because they are more global in nature like multiple disconnected networks. "
-"Think of an island with a road network that is not connected to the mainland"
-" network because the bridge or ferry routes are missing."
-msgstr ""
-
-# f35ee6b63cb84a21956ba58f495375b3
-#: ../../src/tutorial/analytics.rst:133
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 46adfdf5d9b042109be5c667ad12afdc
-#: ../../src/tutorial/analytics.rst:135
-msgid ":ref:`pgr_analyze_graph`"
-msgstr ""
-
-# d6a1979339344f65beef1fb134c99ea0
-#: ../../src/tutorial/analytics.rst:136
-msgid ":ref:`pgr_analyze_oneway`"
-msgstr ""
-
-# b1e8747121eb4e61bc26581ab784c9ce
-#: ../../src/tutorial/analytics.rst:137
-msgid ":ref:`pgr_node_network`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/custom_query.po b/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/custom_query.po
deleted file mode 100644
index 45d19c0..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/custom_query.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:36+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# b91f0d6588cf4d91a064ad81536cb9a5
-#: ../../src/tutorial/custom_query.rst:13
-msgid "Custom Query"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po b/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po
deleted file mode 100644
index cff289e..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:35+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# eabd47deb6034d1c95a09b9014e26c69
-#: ../../src/tutorial/custom_wrapper.rst:13
-msgid "Custom Wrapper"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/index.po b/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/index.po
deleted file mode 100644
index c926302..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/index.po
+++ /dev/null
@@ -1,98 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:11+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 6a8f93140b244bb29541e366b9af91dd
-#: ../../src/tutorial/index.rst:13
-msgid "Tutorial"
-msgstr "Anleitung"
-
-# a64c244637f4455cbded0e09c15fb8e1
-#: ../../src/tutorial/index.rst:16
-msgid ":ref:`Getting started <tutorial>`"
-msgstr ""
-
-# acf4544cb0394b96859312fe489b6b5f
-#: ../../src/tutorial/index.rst:18
-msgid "How to create a database to use for our project"
-msgstr ""
-
-# 29bb03c78beb407cb3c7ef833144e908
-#: ../../src/tutorial/index.rst:19
-msgid "How to load some data"
-msgstr ""
-
-# 6522624c4787423098652645beaca70b
-#: ../../src/tutorial/index.rst:20
-msgid "How to build a topology"
-msgstr ""
-
-# 7e3a1701c1cb4f2399f80cab2f32fbfd
-#: ../../src/tutorial/index.rst:21
-msgid "How to check your graph for errors"
-msgstr ""
-
-# 7a4ac738b5a54446a3fb6a2a872ee973
-#: ../../src/tutorial/index.rst:22
-msgid "How to compute a route"
-msgstr ""
-
-# 267375c5b956437cab09d66694082436
-#: ../../src/tutorial/index.rst:23
-msgid "How to use other tools to view your graph and route"
-msgstr ""
-
-# 7eb6346c00174549a67aa3ba5b639061
-#: ../../src/tutorial/index.rst:24
-msgid "How to create a web app"
-msgstr ""
-
-# 9c88e3538b4443db8727c2ac29dfe064
-#: ../../src/tutorial/index.rst:26
-msgid "Advanced Topics"
-msgstr ""
-
-# 96bfb05f4c374de79f250704d4c8b3e7
-#: ../../src/tutorial/index.rst:28
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 5bb8a81892314636b035fe0d8e56b426
-#: ../../src/tutorial/index.rst:29
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-# 6cfe3bc3d8b942b188c87a00b5e92cb8
-#: ../../src/tutorial/index.rst:30
-msgid ":ref:`custom_query` that is used in the routing algorithms."
-msgstr ""
-
-# 2fc8eb635e614b249d37a76fb7d66f68
-#: ../../src/tutorial/index.rst:31
-msgid ":ref:`performance` to improve your performance."
-msgstr ""
-
-# 1cf3220a11c4411b85339e05e3546f22
-#: ../../src/tutorial/index.rst:32
-msgid ":ref:`custom_wrapper` to colaborate with a wrapper."
-msgstr ""
-
-# 025472df762342bb955f96e2572111ed
-#: ../../src/tutorial/index.rst:33
-msgid ":ref:`recipes` to colaborate with a recipe."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/performance.po b/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/performance.po
deleted file mode 100644
index 1bf3e5f..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/performance.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:35+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 1cd2afc4adbb468398fef1d40d5c4336
-#: ../../src/tutorial/performance.rst:13
-msgid "Performance Tips"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/recipes.po b/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/recipes.po
deleted file mode 100644
index 8009b22..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/recipes.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:36+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 227045a7e0474d4998d6a6d10503851b
-#: ../../src/tutorial/recipes.rst:13
-msgid "Useful Recipes"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/topology.po b/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/topology.po
deleted file mode 100644
index e26941d..0000000
--- a/doc/i18n/de/LC_MESSAGES/doc/src/tutorial/topology.po
+++ /dev/null
@@ -1,123 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 95ba56beb837464cac49ef7880693c4c
-#: ../../src/tutorial/topology.rst:13
-msgid "Routing Topology"
-msgstr ""
-
-# a13e17875be047edb65c4dff0e77e3a3
-#: ../../src/tutorial/topology.rst:15
-msgid "Stephen Woodbridge <woodbri at swoodbridge.com>"
-msgstr ""
-
-# fae10235d477445e8c8ad3b8ddf138c5
-#: ../../src/tutorial/topology.rst:16
-msgid ""
-"Stephen Woodbridge. The source code is released under the MIT-X license."
-msgstr ""
-
-# bb8d84bed17047048664ea7fe078eb94
-#: ../../src/tutorial/topology.rst:20
-msgid "Overview"
-msgstr ""
-
-# 2a882bec3de94c1eb574a3eb222c98e4
-#: ../../src/tutorial/topology.rst:22
-msgid ""
-"Typically when GIS files are loaded into the data database for use with "
-"pgRouting they do not have topology information associated with them. To "
-"create a useful topology the data needs to be \"noded\". This means that "
-"where two or more roads form an intersection there it needs to be a node at "
-"the intersection and all the road segments need to be broken at the "
-"intersection, assuming that you can navigate from any of these segments to "
-"any other segment via that intersection."
-msgstr ""
-
-# 65c5e66127ab486492799e66af98970c
-#: ../../src/tutorial/topology.rst:24
-msgid ""
-"You can use the :ref:`graph analysis functions <analytics>` to help you see "
-"where you might have topology problems in your data. If you need to node "
-"your data, we also have a function :ref:`pgr_nodeNetwork() "
-"<pgr_node_network>` that might work for you. This function splits ALL "
-"crossing segments and nodes them. There are some cases where this might NOT "
-"be the right thing to do."
-msgstr ""
-
-# efc1fb5385064e7da087f3b0371faf57
-#: ../../src/tutorial/topology.rst:26
-msgid ""
-"For example, when you have an overpass and underpass intersection, you do "
-"not want these noded, but pgr_nodeNetwork does not know that is the case and"
-" will node them which is not good because then the router will be able to "
-"turn off the overpass onto the underpass like it was a flat 2D intersection."
-" To deal with this problem some data sets use z-levels at these types of "
-"intersections and other data might not node these intersection which would "
-"be ok."
-msgstr ""
-
-# 43c22da1f7b34db7999adbad7ac7a4e1
-#: ../../src/tutorial/topology.rst:28
-msgid ""
-"For those cases where topology needs to be added the following functions may"
-" be useful. One way to prep the data for pgRouting is to add the following "
-"columns to your table and then populate them as appropriate. This example "
-"makes a lot of assumption like that you original data tables already has "
-"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
-"that they contain specific data values. This is only to give you an idea of "
-"what you can do with your data."
-msgstr ""
-
-# 30e52836594b46f1917dd9ffaa55fc0c
-#: ../../src/tutorial/topology.rst:49
-msgid ""
-"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
-"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
-"columns. The following example populated the remaining columns. In this "
-"example, the ``fcc`` column contains feature class code and the ``CASE`` "
-"statements converts it to an average speed."
-msgstr ""
-
-# 6aa2b52ff1ac4c16a315c9ddfdf90b57
-#: ../../src/tutorial/topology.rst:112
-msgid ""
-"Now your database should be ready to use any (most?) of the pgRouting "
-"algorithms."
-msgstr ""
-
-# 6cc3d005cb454b77959bfbdc6fdd2105
-#: ../../src/tutorial/topology.rst:116
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 40847af777814998afe63d824d73c507
-#: ../../src/tutorial/topology.rst:118
-msgid ":ref:`pgr_create_topology`"
-msgstr ""
-
-# 974b427fbcf64ec8ab76456dcd37bd7d
-#: ../../src/tutorial/topology.rst:119
-msgid ":ref:`pgr_node_network`"
-msgstr ""
-
-# adedad6329b0494988daee57bcf0cb98
-#: ../../src/tutorial/topology.rst:120
-msgid ":ref:`pgr_point_to_id`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/apsp_johnson/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/apsp_johnson/doc/index.po
deleted file mode 100644
index cab98fe..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/apsp_johnson/doc/index.po
+++ /dev/null
@@ -1,140 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-04 04:23+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# c9937b945f654be08e4180e57b2723de
-#: ../../../src/apsp_johnson/doc/index.rst:13
-msgid "pgr_apspJohnson - All Pairs Shortest Path, Johnson's Algorithm"
-msgstr ""
-
-# 79936f3a71384a8a9148a3886df7a858
-#: ../../../src/apsp_johnson/doc/index.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 3145d47e956649628986400ffdab56a5
-#: ../../../src/apsp_johnson/doc/index.rst:22
-msgid ""
-"``pgr_apspJohnson`` - Returns all costs for each pair of nodes in the graph."
-msgstr ""
-
-# 24009fd27614418c9dee8d1d27eca209
-#: ../../../src/apsp_johnson/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 6aa48442c73548e58b708ec465f0993a
-#: ../../../src/apsp_johnson/doc/index.rst:28
-msgid ""
-"Johnson's algorithm is a way to find the shortest paths between all pairs of"
-" vertices in a sparse, edge weighted, directed graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows for "
-"every pair of nodes in the graph."
-msgstr ""
-
-# afa92fc38dee48288d509f6006247df1
-#: ../../../src/apsp_johnson/doc/index.rst:36
-msgid "Description"
-msgstr "Beschreibung"
-
-# 1256fc43f6ad440689b650619604651c
-#: ../../../src/apsp_johnson/doc/index.rst:38
-msgid ""
-"a SQL query that should return the edges for the graph that will be "
-"analyzed:"
-msgstr ""
-
-# 3f908a1bbdd04eaa9bf33225e67da2c7
-#: ../../../src/apsp_johnson/doc/index.rst:44
-msgid "``int4`` identifier of the source vertex for this edge"
-msgstr ""
-
-# 993049755c48440a9bc398ea9a13fe95
-#: ../../../src/apsp_johnson/doc/index.rst:45
-msgid "``int4`` identifier of the target vertex for this edge"
-msgstr ""
-
-# 28aa6b13c7d54bbdb49c76098a8e4d8e
-#: ../../../src/apsp_johnson/doc/index.rst:46
-msgid "``float8`` a positive value for the cost to traverse this edge"
-msgstr ""
-
-# 7514070dfcd1415e8414754509baee32
-#: ../../../src/apsp_johnson/doc/index.rst:48
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# 25408ce6cf3d45bebebd52768b102fc0
-#: ../../../src/apsp_johnson/doc/index.rst:50
-msgid "row sequence"
-msgstr ""
-
-# e4b9d28e22be4a78a2edc7edbf4f1af3
-#: ../../../src/apsp_johnson/doc/index.rst:51
-msgid "source node ID"
-msgstr ""
-
-# f4ef2869f447410dbdb75bf3856bfa93
-#: ../../../src/apsp_johnson/doc/index.rst:52
-msgid "target node ID"
-msgstr ""
-
-# 74d7b05838ba4c978e0c33f94ab0868f
-#: ../../../src/apsp_johnson/doc/index.rst:53
-msgid "cost to traverse from ``id1`` to ``id2``"
-msgstr ""
-
-# 1767087139fa47218a9eef54ebf0b0f1
-#: ../../../src/apsp_johnson/doc/index.rst:56
-msgid "History"
-msgstr "Geschichte"
-
-# 5bc1dae5c7f041298849cae876983c32
-#: ../../../src/apsp_johnson/doc/index.rst:57
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# b679c9ef11b544a6a6502b461b4e3d96
-#: ../../../src/apsp_johnson/doc/index.rst:61
-msgid "Examples"
-msgstr "Beispiele"
-
-# 5d6ef1673c204a229ed05dae0c96d0f8
-#: ../../../src/apsp_johnson/doc/index.rst:78
-msgid "The query uses the :ref:`sampledata` network."
-msgstr ""
-
-# 8ba7f2721fe74966b8dfd4620ae10b9a
-#: ../../../src/apsp_johnson/doc/index.rst:82
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 475eb50687e74051895523e791434bc1
-#: ../../../src/apsp_johnson/doc/index.rst:84
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-# 75e0dd6fa0ed4621acf49893e637237c
-#: ../../../src/apsp_johnson/doc/index.rst:85
-msgid ":ref:`pgr_apsp_warshall`"
-msgstr ""
-
-# 0e63d6ba27244302bfd848164331ea09
-#: ../../../src/apsp_johnson/doc/index.rst:86
-msgid "http://en.wikipedia.org/wiki/Johnson%27s_algorithm"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/apsp_warshall/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/apsp_warshall/doc/index.po
deleted file mode 100644
index 27adc09..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/apsp_warshall/doc/index.po
+++ /dev/null
@@ -1,160 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:15+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 0f1284ff13c64db68306d3e8f9c97beb
-#: ../../../src/apsp_warshall/doc/index.rst:13
-msgid "pgr_apspWarshall - All Pairs Shortest Path, Floyd-Warshall Algorithm"
-msgstr ""
-
-# 42b576974e9a458e951dd429ba4ac9f7
-#: ../../../src/apsp_warshall/doc/index.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 8610cfce602b4e43867a979e40348da5
-#: ../../../src/apsp_warshall/doc/index.rst:22
-msgid ""
-"``pgr_apspWarshall`` - Returns all costs for each pair of nodes in the "
-"graph."
-msgstr ""
-
-# 4c8c0af0a22f4783b5f40d7d68b431da
-#: ../../../src/apsp_warshall/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 001f0668ce734f4b9419fd7b22d98b00
-#: ../../../src/apsp_warshall/doc/index.rst:28
-msgid ""
-"The Floyd-Warshall algorithm (also known as Floyd's algorithm and other "
-"names) is a graph analysis algorithm for finding the shortest paths between "
-"all pairs of nodes in a weighted graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows for "
-"every pair of nodes in the graph."
-msgstr ""
-
-# e7c4a6dd259d46cd9fcf2631dbc22f2e
-#: ../../../src/apsp_warshall/doc/index.rst:36
-msgid "Description"
-msgstr "Beschreibung"
-
-# e0f6896524cc4a4d91c418144da5102b
-#: ../../../src/apsp_warshall/doc/index.rst:38
-msgid ""
-"a SQL query that should return the edges for the graph that will be "
-"analyzed:"
-msgstr ""
-
-# 97a32a6ff6e14816834d1eb5e229f2b4
-#: ../../../src/apsp_warshall/doc/index.rst:44
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-# b42ae19f11c44f618c034ae1ce6be00a
-#: ../../../src/apsp_warshall/doc/index.rst:45
-msgid "``int4`` identifier of the source vertex for this edge"
-msgstr ""
-
-# c0b57bb608d34affbce8c6bb5ec9302f
-#: ../../../src/apsp_warshall/doc/index.rst:46
-msgid "``int4`` identifier of the target vertex for this edge"
-msgstr ""
-
-# c5cb344693474da29d9a8ff57e96c0f7
-#: ../../../src/apsp_warshall/doc/index.rst:47
-msgid "``float8`` a positive value for the cost to traverse this edge"
-msgstr ""
-
-# 5dd37dfc4bff497d85337655170aa2fe
-#: ../../../src/apsp_warshall/doc/index.rst:49
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-# 6996d55bc55245d39ea7b7fadce791a7
-#: ../../../src/apsp_warshall/doc/index.rst:50
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr ""
-
-# a26f91fad97b4c1fb810f9cbe42a7c55
-#: ../../../src/apsp_warshall/doc/index.rst:52
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# d67cd203b9424e1faa0416ab268956c5
-#: ../../../src/apsp_warshall/doc/index.rst:54
-msgid "row sequence"
-msgstr ""
-
-# 13448c2239764d798d56189875475d19
-#: ../../../src/apsp_warshall/doc/index.rst:55
-msgid "source node ID"
-msgstr ""
-
-# 754d094ac6ae42d5a22b8855ce7a73e7
-#: ../../../src/apsp_warshall/doc/index.rst:56
-msgid "target node ID"
-msgstr ""
-
-# c9edf1f99746459c9ef79922766fc805
-#: ../../../src/apsp_warshall/doc/index.rst:57
-msgid "cost to traverse from ``id1`` to ``id2``"
-msgstr ""
-
-# e878f40e61334a669136534d82f3bc05
-#: ../../../src/apsp_warshall/doc/index.rst:61
-msgid "History"
-msgstr "Geschichte"
-
-# b506bf29ad7944d7bd0db6d48ffe9f4f
-#: ../../../src/apsp_warshall/doc/index.rst:62
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 5c0117f6a40740aa8b02bc181e0e01dc
-#: ../../../src/apsp_warshall/doc/index.rst:66
-msgid "Examples"
-msgstr "Beispiele"
-
-# 38918d939ef74f6e86528d1060dc810c
-#: ../../../src/apsp_warshall/doc/index.rst:84
-msgid "The query uses the :ref:`sampledata` network."
-msgstr ""
-
-# 4feffc0c2a824f81bb35b10c6f13176d
-#: ../../../src/apsp_warshall/doc/index.rst:88
-msgid "See Also"
-msgstr "Siehe auch"
-
-# aa6ecd6c9d584db1adf49b7df81583e9
-#: ../../../src/apsp_warshall/doc/index.rst:90
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-# 0f05cbf530e0455daed36d6b50bbf30f
-#: ../../../src/apsp_warshall/doc/index.rst:91
-msgid ":ref:`pgr_apsp_johnson`"
-msgstr ""
-
-# b09888d0778445eb93cbdfb7075b4157
-#: ../../../src/apsp_warshall/doc/index.rst:92
-msgid "http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/astar/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/astar/doc/index.po
deleted file mode 100644
index 1bdf1ab..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/astar/doc/index.po
+++ /dev/null
@@ -1,202 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# b270045aa6e74d789897bb176f5c4a37
-#: ../../../src/astar/doc/index.rst:13
-msgid "pgr_astar - Shortest Path A*"
-msgstr ""
-
-# a4d6dd313b3f44bdbbecdf59c8e4e866
-#: ../../../src/astar/doc/index.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 0c4c2fff9ea445dcbb1dfdca8374cd09
-#: ../../../src/astar/doc/index.rst:22
-msgid "``pgr_astar`` — Returns the shortest path using A* algorithm."
-msgstr ""
-
-# d3e3e83acd754acb9ac4c583d6dd0649
-#: ../../../src/astar/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 87ae068cf08b4ddca7f5bb3722ce57f2
-#: ../../../src/astar/doc/index.rst:28
-msgid ""
-"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
-"with a heuristic that allow it to solve most shortest path problems by "
-"evaluation only a sub-set of the overall graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
-"make up a path."
-msgstr ""
-
-# cd2802c13d3d4798934f9f60cc9ebfb9
-#: ../../../src/astar/doc/index.rst:37
-msgid "Description"
-msgstr "Beschreibung"
-
-# 64ca501e984b45df9055511188eb65f4
-#: ../../../src/astar/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-# 739adee835f647ff94511acc6e126ee5
-#: ../../../src/astar/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-# 72186cf53aee4035bdbcc0495fb6bf42
-#: ../../../src/astar/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-# 0857159bb2c949bb892388c25f6fb4ec
-#: ../../../src/astar/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-# 4ddccc85290d4aba9b82668e90b2ba31
-#: ../../../src/astar/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr ""
-
-# d21510a5452e4a098e36f5ae7f7585b4
-#: ../../../src/astar/doc/index.rst:50
-msgid "``x`` coordinate of the start point of the edge"
-msgstr ""
-
-# 78d6feeb1c174e96ad209b97fb1cd538
-#: ../../../src/astar/doc/index.rst:51
-msgid "``y`` coordinate of the start point of the edge"
-msgstr ""
-
-# b7404cbf8c86414494f72f87b3702241
-#: ../../../src/astar/doc/index.rst:52
-msgid "``x`` coordinate of the end point of the edge"
-msgstr ""
-
-# d0f8d9e10994475dac4ad4e8ea1315f7
-#: ../../../src/astar/doc/index.rst:53
-msgid "``y`` coordinate of the end point of the edge"
-msgstr ""
-
-# 46b33f8b295043059fce210e43698191
-#: ../../../src/astar/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr ""
-
-# bfd63fe9d374441babb8662a0874482b
-#: ../../../src/astar/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr ""
-
-# 85d35dcc4ced4efaac8d7b50f4ff9357
-#: ../../../src/astar/doc/index.rst:57
-msgid "``int4`` id of the end point"
-msgstr ""
-
-# f93b4ce091a6440d9a656b374fce6636
-#: ../../../src/astar/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-# 1a783bf8f88146999659f222ef236d1b
-#: ../../../src/astar/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr ""
-
-# c0f6cf1f1daf40bc8d08fa3b85c3af6b
-#: ../../../src/astar/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# 22b5e075f6e94c608af67a4c040f4e70
-#: ../../../src/astar/doc/index.rst:63
-msgid "row sequence"
-msgstr ""
-
-# 1f3ccd737354442fb4d87684690988a2
-#: ../../../src/astar/doc/index.rst:64
-msgid "node ID"
-msgstr ""
-
-# 8a4fe9f16a934ffa842ea049c36728bf
-#: ../../../src/astar/doc/index.rst:65
-msgid "edge ID (``-1`` for the last row)"
-msgstr ""
-
-# 7cff3509785e40adb8ff4ce4f4bf0774
-#: ../../../src/astar/doc/index.rst:66
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr ""
-
-# 9cc8b235e4214d4c87b729d24031271e
-#: ../../../src/astar/doc/index.rst:70
-msgid "History"
-msgstr "Geschichte"
-
-# 623c2a84d062407d93855875a467dbe1
-#: ../../../src/astar/doc/index.rst:71
-msgid "Renamed in version 2.0.0"
-msgstr "Umbenannt in Version 2.0.0"
-
-# 7f75da722e6e4680a8d9e0a3d69678b9
-#: ../../../src/astar/doc/index.rst:75
-msgid "Examples"
-msgstr "Beispiele"
-
-# 533a7e7ccd3645c4a6e6d3e90875cccf
-#: ../../../src/astar/doc/index.rst:77
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-# 0cf32ba2b9dd435191e182fa2e1219a3
-#: ../../../src/astar/doc/index.rst:99
-msgid "With ``reverse_cost``"
-msgstr ""
-
-# 266a522386364908870781287ffe7c77
-#: ../../../src/astar/doc/index.rst:117
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 3f0ab007b6c24393bda58a4c8f051a6b
-#: ../../../src/astar/doc/index.rst:121
-msgid "See Also"
-msgstr "Siehe auch"
-
-# c407743821a8437fa59503cbee2e31b7
-#: ../../../src/astar/doc/index.rst:123
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-# 994c0952621c47349ec4e5b209ee1129
-#: ../../../src/astar/doc/index.rst:124
-msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/bd_astar/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/bd_astar/doc/index.po
deleted file mode 100644
index 0a0c153..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/bd_astar/doc/index.po
+++ /dev/null
@@ -1,221 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-04 04:22+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# d85c70ae393d476284068bf297195cc7
-#: ../../../src/bd_astar/doc/index.rst:13
-msgid "pgr_bdAstar - Bi-directional A* Shortest Path"
-msgstr ""
-
-# 59f0d447a4034729bbdc2dad7b88dcce
-#: ../../../src/bd_astar/doc/index.rst:20
-msgid "Name"
-msgstr "Name"
-
-# ff5b6b1bd362408c80bec7cfbc7108bf
-#: ../../../src/bd_astar/doc/index.rst:22
-msgid ""
-"``pgr_bdAstar`` - Returns the shortest path using Bidirectional A* "
-"algorithm."
-msgstr ""
-
-# 6e2dd97777d64f02afc4b396822f7c37
-#: ../../../src/bd_astar/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# d88a86d95c0447db93be2a1f185b91bd
-#: ../../../src/bd_astar/doc/index.rst:28
-msgid ""
-"This is a bi-directional A* search algorithm. It searchs from the source "
-"toward the distination and at the same time from the destination to the "
-"source and terminates whe these to searchs meet in the middle. Returns a set"
-" of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, "
-"that make up a path."
-msgstr ""
-
-# c9f7d12fb2c9416390cbb64c61cdaaba
-#: ../../../src/bd_astar/doc/index.rst:37
-msgid "Description"
-msgstr "Beschreibung"
-
-# 2228656c57724bc18029fa054849a999
-#: ../../../src/bd_astar/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-# ba13914fdd78469389ae129eee02785f
-#: ../../../src/bd_astar/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-# 5e7f92a0ffa845a385efe72da0760ee5
-#: ../../../src/bd_astar/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-# 194b29afb7b3486eb5611222273bb323
-#: ../../../src/bd_astar/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-# 37f1ad354f13413fa6a47ec8ceaa3262
-#: ../../../src/bd_astar/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr ""
-
-# f7bf689e55584ee0b2e095b8f3147354
-#: ../../../src/bd_astar/doc/index.rst:50
-msgid "``x`` coordinate of the start point of the edge"
-msgstr ""
-
-# e7b2325c3e8f473fae345bff6b9f9af6
-#: ../../../src/bd_astar/doc/index.rst:51
-msgid "``y`` coordinate of the start point of the edge"
-msgstr ""
-
-# a554e40ce41e485d83bdcc425edab876
-#: ../../../src/bd_astar/doc/index.rst:52
-msgid "``x`` coordinate of the end point of the edge"
-msgstr ""
-
-# d0033effb66d4af891d51c0553106616
-#: ../../../src/bd_astar/doc/index.rst:53
-msgid "``y`` coordinate of the end point of the edge"
-msgstr ""
-
-# 52fd318293ff42458d93837f06a5dd78
-#: ../../../src/bd_astar/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr ""
-
-# b2ec788128e44b59a8a9eaf588b3ef93
-#: ../../../src/bd_astar/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr ""
-
-# f5809c895ef3496fbaf43892301858ca
-#: ../../../src/bd_astar/doc/index.rst:57
-msgid "``int4`` id of the end point"
-msgstr ""
-
-# 29607e76254f42938d9c38a10e11c7b9
-#: ../../../src/bd_astar/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-# f4b5e84674e749be9f6ba934004cd598
-#: ../../../src/bd_astar/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr ""
-
-# 9969bf0e6e5f40e3b44efbfd0e53d70b
-#: ../../../src/bd_astar/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# 1634c060516d40388b007b17f2fee94c
-#: ../../../src/bd_astar/doc/index.rst:63
-msgid "row sequence"
-msgstr ""
-
-# 4a478cf05b72415ebfc7f95d8e0b8625
-#: ../../../src/bd_astar/doc/index.rst:64
-msgid "node ID"
-msgstr ""
-
-# b94cd2b23db94500b803d9c02b8ab358
-#: ../../../src/bd_astar/doc/index.rst:65
-msgid "edge ID (``-1`` for the last row)"
-msgstr ""
-
-# b8b6a3e185934bc4b7d44f66694523c5
-#: ../../../src/bd_astar/doc/index.rst:66
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr ""
-
-# f9a6aa6c249c40968bc39a3db86a5ebe
-#: ../../../src/bd_astar/doc/index.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr ""
-
-# e574996346fe4d3d937be160d621e660
-#: ../../../src/bd_astar/doc/index.rst:74
-msgid "History"
-msgstr "Geschichte"
-
-# 98c01f9f86914541a78481fc80a804dd
-#: ../../../src/bd_astar/doc/index.rst:75
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# fd577945de174be79b0b53dc92d1fdae
-#: ../../../src/bd_astar/doc/index.rst:79
-msgid "Examples"
-msgstr "Beispiele"
-
-# 1e4a6776b9154f5da5abb5c6d64f3221
-#: ../../../src/bd_astar/doc/index.rst:81
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-# 3f707fb48bdf4edfa0f1b3657cfcbb7a
-#: ../../../src/bd_astar/doc/index.rst:101
-msgid "With ``reverse_cost``"
-msgstr ""
-
-# 473f16db67964e14b8efb25a1cf057b9
-#: ../../../src/bd_astar/doc/index.rst:120
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 7289ec5f57844a379608577bd455d4b5
-#: ../../../src/bd_astar/doc/index.rst:124
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 773014635f2c4e87a452416b391581e5
-#: ../../../src/bd_astar/doc/index.rst:126
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-# f4c3b61a97b94311a9f83508c040b614
-#: ../../../src/bd_astar/doc/index.rst:127
-msgid ":ref:`bd_dijkstra`"
-msgstr ""
-
-# 769c0e94fba24848bb36a7bb9ca90800
-#: ../../../src/bd_astar/doc/index.rst:128
-msgid "http://en.wikipedia.org/wiki/Bidirectional_search"
-msgstr ""
-
-# bc6e6a206f44475d91e857ec85d36106
-#: ../../../src/bd_astar/doc/index.rst:129
-msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/bd_dijkstra/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/bd_dijkstra/doc/index.po
deleted file mode 100644
index 14db2bf..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/bd_dijkstra/doc/index.po
+++ /dev/null
@@ -1,194 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-04 04:23+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 3c0a9e188c614b0d8a83fad794d3b42f
-#: ../../../src/bd_dijkstra/doc/index.rst:13
-msgid "pgr_bdDijkstra - Bi-directional Dijkstra Shortest Path"
-msgstr ""
-
-# 2a8d7f88cd7c41549e90531d1d565848
-#: ../../../src/bd_dijkstra/doc/index.rst:21
-msgid "Name"
-msgstr "Name"
-
-# 9e326337967141dd8cb35c1a7eb5d7b2
-#: ../../../src/bd_dijkstra/doc/index.rst:23
-msgid ""
-"``pgr_bdDijkstra`` - Returns the shortest path using Bidirectional Dijkstra "
-"algorithm."
-msgstr ""
-
-# e2e0af558a7340a7a29f667b07037690
-#: ../../../src/bd_dijkstra/doc/index.rst:27
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 23d2258a058a4b5fa6dcb6655362484a
-#: ../../../src/bd_dijkstra/doc/index.rst:29
-msgid ""
-"This is a bi-directional Dijkstra search algorithm. It searchs from the "
-"source toward the distination and at the same time from the destination to "
-"the source and terminates whe these to searchs meet in the middle. Returns a"
-" set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows,"
-" that make up a path."
-msgstr ""
-
-# b37dbb1c097441d7afac9b1c3be4fa16
-#: ../../../src/bd_dijkstra/doc/index.rst:38
-msgid "Description"
-msgstr "Beschreibung"
-
-# 27182b928a294e22bbd7567e7ef6a1a6
-#: ../../../src/bd_dijkstra/doc/index.rst:40
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-# d5ecf6b2aa844b768783b31d91cc0d1c
-#: ../../../src/bd_dijkstra/doc/index.rst:47
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-# 282a69ee248b4dcfa591ec2aa3668cf4
-#: ../../../src/bd_dijkstra/doc/index.rst:48
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-# d8ca4a99797f4da89401ca4eae5de81b
-#: ../../../src/bd_dijkstra/doc/index.rst:49
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-# 16d3eacf8377421dbb3aa3f559f8c2fd
-#: ../../../src/bd_dijkstra/doc/index.rst:50
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr ""
-
-# 2a8cd5659ad849358862b656205877aa
-#: ../../../src/bd_dijkstra/doc/index.rst:51
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr ""
-
-# 95f13721773f433891e1e8b50ac04509
-#: ../../../src/bd_dijkstra/doc/index.rst:53
-msgid "``int4`` id of the start point"
-msgstr ""
-
-# b9798483a7944c23b68242badf5ba991
-#: ../../../src/bd_dijkstra/doc/index.rst:54
-msgid "``int4`` id of the end point"
-msgstr ""
-
-# ff73a5d65d1e44728449829347874aa3
-#: ../../../src/bd_dijkstra/doc/index.rst:55
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-# c177b69ec8f34e3e8347a48cd4fd0eec
-#: ../../../src/bd_dijkstra/doc/index.rst:56
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr ""
-
-# 94093f98581b414e8de69c5c03ed7ff9
-#: ../../../src/bd_dijkstra/doc/index.rst:58
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# b6dcdf2882344c97b13a0a1b5dcfc76f
-#: ../../../src/bd_dijkstra/doc/index.rst:60
-msgid "row sequence"
-msgstr ""
-
-# 71a25f43edad4704b8f7bc386b951d6a
-#: ../../../src/bd_dijkstra/doc/index.rst:61
-msgid "node ID"
-msgstr ""
-
-# bb342316c7374f38ae60758a95fe5aa0
-#: ../../../src/bd_dijkstra/doc/index.rst:62
-msgid "edge ID (``-1`` for the last row)"
-msgstr ""
-
-# 903aaea6437d438094faa1255671261a
-#: ../../../src/bd_dijkstra/doc/index.rst:63
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr ""
-
-# 9422981e26f04c7e9edb754944c47cea
-#: ../../../src/bd_dijkstra/doc/index.rst:66
-msgid "History"
-msgstr "Geschichte"
-
-# c1db7489de2b4ef8880d8d9f3abb66e3
-#: ../../../src/bd_dijkstra/doc/index.rst:67
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# e61d7de8bdb04972a567e5884e47773a
-#: ../../../src/bd_dijkstra/doc/index.rst:71
-msgid "Examples"
-msgstr "Beispiele"
-
-# e5bb5ec0cf844c229475d4e75c327eb3
-#: ../../../src/bd_dijkstra/doc/index.rst:73
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-# 7b425886ca994a1e87e833443909b584
-#: ../../../src/bd_dijkstra/doc/index.rst:93
-msgid "With ``reverse_cost``"
-msgstr ""
-
-# f47bce06d90b47c0a3ba534e4af09213
-#: ../../../src/bd_dijkstra/doc/index.rst:113
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# dce05fd947104f7fb53f334994b47db8
-#: ../../../src/bd_dijkstra/doc/index.rst:117
-msgid "See Also"
-msgstr "Siehe auch"
-
-# e9e1be5a32c8439083185caf29aaa09b
-#: ../../../src/bd_dijkstra/doc/index.rst:119
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-# 7e04714c590148078028bde3efbb5f57
-#: ../../../src/bd_dijkstra/doc/index.rst:120
-msgid ":ref:`bd_astar`"
-msgstr ""
-
-# 1e532cd9d5634fb0934e837b0db7ad8a
-#: ../../../src/bd_dijkstra/doc/index.rst:121
-msgid "http://en.wikipedia.org/wiki/Bidirectional_search"
-msgstr ""
-
-# e3826d9e6a084b349a9ed0d6fffdb1ad
-#: ../../../src/bd_dijkstra/doc/index.rst:122
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/analyze_graph.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/analyze_graph.po
deleted file mode 100644
index 2a13116..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/analyze_graph.po
+++ /dev/null
@@ -1,410 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 4ec68d2c61f945ef81648e1b5c6415f1
-#: ../../../src/common/doc/functions/analyze_graph.rst:13
-msgid "pgr_analyzeGraph"
-msgstr ""
-
-# 4c3762e114fb4e67a2515bba541c8f36
-#: ../../../src/common/doc/functions/analyze_graph.rst:20
-msgid "Name"
-msgstr "Name"
-
-# ac455e0fb31e44308320f39bbd78adfc
-#: ../../../src/common/doc/functions/analyze_graph.rst:22
-msgid "``pgr_anlizeGraph`` — Analyzes the network topology."
-msgstr ""
-
-# 7d6b06e1d5354d94ac2855084e4e9e71
-#: ../../../src/common/doc/functions/analyze_graph.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 19f89e76f38342129988c1b3de66af9a
-# ebc7d96a54cb409a916a9e44ff8544f9
-#: ../../../src/common/doc/functions/analyze_graph.rst:28
-#: ../../../src/common/doc/functions/analyze_graph.rst:61
-msgid "The function returns:"
-msgstr ""
-
-# b996e0d0950741438419d72fc2aaa1a6
-# ac02a2dca7d24bb296b418e5019b5d52
-#: ../../../src/common/doc/functions/analyze_graph.rst:30
-#: ../../../src/common/doc/functions/analyze_graph.rst:63
-msgid "``OK`` after the analysis has finished."
-msgstr ""
-
-# 6494556e5a0240b6b89d6cc13588a959
-# 226def8709104fefbde358ee19f0dbdc
-#: ../../../src/common/doc/functions/analyze_graph.rst:31
-#: ../../../src/common/doc/functions/analyze_graph.rst:69
-msgid "``FAIL`` when the analysis was not completed due to an error."
-msgstr ""
-
-# 258df98c829a48e794073f4f67e64d37
-#: ../../../src/common/doc/functions/analyze_graph.rst:40
-msgid "Description"
-msgstr "Beschreibung"
-
-# 2ea823d9ac6a4b309542c1efdf685188
-#: ../../../src/common/doc/functions/analyze_graph.rst:43
-msgid "Prerequisites"
-msgstr ""
-
-# b6f61bceeb764c09a0519ef218788641
-#: ../../../src/common/doc/functions/analyze_graph.rst:44
-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 <edge_table>_vertices_pgr that stores the "
-"vertices information."
-msgstr ""
-
-# bc5a5fd73e194a1eb18560c62b8726c5
-#: ../../../src/common/doc/functions/analyze_graph.rst:46
-msgid ""
-"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
-"vertices table."
-msgstr ""
-
-# dddd02de549c450da54ecc30da50bcac
-#: ../../../src/common/doc/functions/analyze_graph.rst:47
-msgid ""
-"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
-"and the vertices table."
-msgstr ""
-
-# 2f1a64c5c7df47c08b9460c1c2ca9a0d
-#: ../../../src/common/doc/functions/analyze_graph.rst:50
-msgid "Parameters"
-msgstr "Parameter"
-
-# f7ef120ecd234df3bc9de0b69122a094
-#: ../../../src/common/doc/functions/analyze_graph.rst:51
-msgid "The analyze graph function accepts the following parameters:"
-msgstr ""
-
-# 93b5fa9bcdd84ccbae6d4945adb6b9b5
-#: ../../../src/common/doc/functions/analyze_graph.rst:53
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# 0c3bf879395649e1aac68ae62880746b
-#: ../../../src/common/doc/functions/analyze_graph.rst:54
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-# cd2deb23e3394ad298d9787e069561e2
-#: ../../../src/common/doc/functions/analyze_graph.rst:55
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# 31330d72cbb748289eafa0fcb996153d
-#: ../../../src/common/doc/functions/analyze_graph.rst:56
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr ""
-
-# b9e5db8199ce47ccb092272e93020d7c
-#: ../../../src/common/doc/functions/analyze_graph.rst:57
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# 245c992a7082431684659ae5845aced6
-#: ../../../src/common/doc/functions/analyze_graph.rst:58
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# 8e81329133844e65b7eef1f84cb73965
-#: ../../../src/common/doc/functions/analyze_graph.rst:59
-msgid ""
-"``text`` Condition to select a subset or rows. Default value is ``true``"
-" to indicate all rows."
-msgstr ""
-
-# c99a684aa3994cc4b60c334882d9ed78
-#: ../../../src/common/doc/functions/analyze_graph.rst:65
-msgid "Uses the vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# e32eb0de40d0487fbb1062ec88c5bbe9
-#: ../../../src/common/doc/functions/analyze_graph.rst:66
-msgid "Fills completly the ``cnt`` and ``chk`` columns of the vertices table."
-msgstr ""
-
-# a4a0f627086946459e80cc8ac16b31b8
-#: ../../../src/common/doc/functions/analyze_graph.rst:67
-msgid ""
-"Returns the analysis of the section of the network defined by "
-"``rows_where``"
-msgstr ""
-
-# f2d3df84fbb14b48a0dba64650326883
-#: ../../../src/common/doc/functions/analyze_graph.rst:71
-msgid "The vertices table is not found."
-msgstr ""
-
-# 1c3dd89f91d94a32b0fa96e3c8544649
-#: ../../../src/common/doc/functions/analyze_graph.rst:72
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# 0e7728a66df8403b80c0e73cc496d665
-#: ../../../src/common/doc/functions/analyze_graph.rst:73
-msgid "The condition is not well formed."
-msgstr ""
-
-# 8a41f89e1b6c4622925078236419ba59
-#: ../../../src/common/doc/functions/analyze_graph.rst:74
-msgid "The names of source , target or id are the same."
-msgstr ""
-
-# 9a0c49ad17e7442291584a6d38ad24f0
-#: ../../../src/common/doc/functions/analyze_graph.rst:75
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-# a28d4cfc2fb145bd8b620cd99ae007ef
-#: ../../../src/common/doc/functions/analyze_graph.rst:79
-msgid "The Vertices Table"
-msgstr ""
-
-# 6726eb03c9e14ce487a84ef6bdb3d061
-#: ../../../src/common/doc/functions/analyze_graph.rst:80
-msgid ""
-"The vertices table can be created with :ref:`pgr_createVerticesTable "
-"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
-msgstr ""
-
-# f69881355abd43b08fd4b112a15c823a
-#: ../../../src/common/doc/functions/analyze_graph.rst:82
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# e9b846b6c67a40a5a56ce827cbde2335
-#: ../../../src/common/doc/functions/analyze_graph.rst:84
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# c76d33c8d1d243e78adb977c995c1ed9
-#: ../../../src/common/doc/functions/analyze_graph.rst:85
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-msgstr ""
-
-# 2a14dd7a08114891908953fe3f87a075
-#: ../../../src/common/doc/functions/analyze_graph.rst:86
-msgid "``integer`` Indicator that the vertex might have a problem."
-msgstr ""
-
-# 9731ccd0742c4573b05224539f373580
-#: ../../../src/common/doc/functions/analyze_graph.rst:87
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# bf31d82856954293ac270255b046d010
-#: ../../../src/common/doc/functions/analyze_graph.rst:88
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# fa51c4280ee2409daf5cee9fbc858ef4
-#: ../../../src/common/doc/functions/analyze_graph.rst:89
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# 3a2bb12205fe4cd6ad67ba6a8f37afe4
-#: ../../../src/common/doc/functions/analyze_graph.rst:92
-msgid "History"
-msgstr "Geschichte"
-
-# 378f4d42f82e4d30a6ab016e5ecc621a
-#: ../../../src/common/doc/functions/analyze_graph.rst:93
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# f2b122f189224840ad820005cf04c3c1
-#: ../../../src/common/doc/functions/analyze_graph.rst:96
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-# bbc188364d7a4ba9b73c901703f754a0
-#: ../../../src/common/doc/functions/analyze_graph.rst:99
-msgid "The simplest way to use pgr_analyzeGraph is:"
-msgstr ""
-
-# eef338680d2247e485489cda2088d085
-#: ../../../src/common/doc/functions/analyze_graph.rst:106
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-# bd9ee1725f5f458e84d65ccbde7489d2
-#: ../../../src/common/doc/functions/analyze_graph.rst:111
-msgid "We get the same result as the simplest way to use the function."
-msgstr ""
-
-# e6bd1bc511a6475aaa6fcce1db0cc9fd
-# 667d346fce1340c89b86814855215f31
-#: ../../../src/common/doc/functions/analyze_graph.rst:118
-#: ../../../src/common/doc/functions/analyze_graph.rst:184
-msgid "When using the named notation"
-msgstr ""
-
-# a6f10ab57f0645b6b0307bcb5d6c7ef3
-# eae5acaa57ff4a459953c203612092fa
-#: ../../../src/common/doc/functions/analyze_graph.rst:119
-#: ../../../src/common/doc/functions/analyze_graph.rst:185
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-# 0b36ba3cb2c24c17b8740a45f3430b69
-#: ../../../src/common/doc/functions/analyze_graph.rst:129
-msgid ""
-"Parameters defined with a default value can be ommited, as long as the value"
-" matches the default:"
-msgstr ""
-
-# 5130840677694ba3a4c08ae3b787e4d5
-# 309f2f767a9c4f419bb1a4ad1c1bfacf
-#: ../../../src/common/doc/functions/analyze_graph.rst:136
-#: ../../../src/common/doc/functions/analyze_graph.rst:199
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-# e7093f0dacbf44af908a1259b2b8f45d
-#: ../../../src/common/doc/functions/analyze_graph.rst:137
-msgid ""
-"Selecting rows based on the id. Displays the analysis a the section of the "
-"network."
-msgstr ""
-
-# 2867ea63b6b14572adb1130a9d04e28a
-#: ../../../src/common/doc/functions/analyze_graph.rst:143
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# 3cf323ab63204d99ac7ca31677b9e667
-#: ../../../src/common/doc/functions/analyze_graph.rst:149
-msgid ""
-"Selecting the rows where the geometry is near the geometry of the row with "
-"``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-# baf5ffc28192473483bc4a1a4a0315f3
-#: ../../../src/common/doc/functions/analyze_graph.rst:160
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-# 57cb32f6495d4cb0b5f36be03adc7efa
-#: ../../../src/common/doc/functions/analyze_graph.rst:162
-msgid "For the following table"
-msgstr ""
-
-# 12fcad9f3b484280baa8b29867859861
-#: ../../../src/common/doc/functions/analyze_graph.rst:171
-msgid "Using positional notation:"
-msgstr ""
-
-# 07a02c55d3eb4f9eb1dfed2833efcbe8
-#: ../../../src/common/doc/functions/analyze_graph.rst:172
-msgid ""
-"The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-# 5dc716a92a81438c888764e8cb2b5b79
-#: ../../../src/common/doc/functions/analyze_graph.rst:195
-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 ""
-
-# 057829092b8a4504a3115036a73a489f
-#: ../../../src/common/doc/functions/analyze_graph.rst:200
-msgid "Selecting rows based on the id."
-msgstr ""
-
-# 5c1437170b9149c5bc4174edc58ee875
-#: ../../../src/common/doc/functions/analyze_graph.rst:210
-msgid ""
-"Selecting the rows WHERE the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# 3d622065f50846578692f7a1b2a136d9
-#: ../../../src/common/doc/functions/analyze_graph.rst:222
-msgid ""
-"Selecting the rows WHERE the geometry is near the place='myhouse' of the "
-"table ``othertable``. (note the use of quote_literal)"
-msgstr ""
-
-# 2cffbd13f5f54de1abd9c025df6a762a
-#: ../../../src/common/doc/functions/analyze_graph.rst:239
-msgid "Examples"
-msgstr "Beispiele"
-
-# eeedfddf23864b98a801913ef15f7cd9
-#: ../../../src/common/doc/functions/analyze_graph.rst:366
-msgid "The examples use the :ref:`sampledata` network."
-msgstr ""
-
-# d6f7c52a1a824867943d8adae7b2e245
-#: ../../../src/common/doc/functions/analyze_graph.rst:370
-msgid "See Also"
-msgstr "Siehe auch"
-
-# ba0f07ab7dca4083a5aef16d566cf506
-#: ../../../src/common/doc/functions/analyze_graph.rst:372
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 90d9202a2da94489b4b43a71caa66956
-#: ../../../src/common/doc/functions/analyze_graph.rst:373
-msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
-msgstr ""
-
-# 73d10e9d35dd4a269249fbc09274000b
-#: ../../../src/common/doc/functions/analyze_graph.rst:374
-msgid ""
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
-"vertices table based on the source and target information."
-msgstr ""
-
-# 2f459b0453c141239d9564e2467fbdd5
-#: ../../../src/common/doc/functions/analyze_graph.rst:375
-msgid ""
-":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
-"edge table."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po
deleted file mode 100644
index 7e224cf..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po
+++ /dev/null
@@ -1,335 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f8ca74e3c9a54cd0b0e6cd3bcec8de7e
-#: ../../../src/common/doc/functions/analyze_oneway.rst:13
-msgid "pgr_analyzeOneway"
-msgstr ""
-
-# ee3b92d1a5184a92b6fa72a69ab2f1c9
-#: ../../../src/common/doc/functions/analyze_oneway.rst:20
-msgid "Name"
-msgstr "Name"
-
-# fd816817954b4f3d8d25927cebce353b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:22
-msgid ""
-"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
-"segments."
-msgstr ""
-
-# 4c9dfc86ed0042de97bf0107b0b2eccd
-#: ../../../src/common/doc/functions/analyze_oneway.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# d31a1ab567db4873a46256e8ecbdedf4
-#: ../../../src/common/doc/functions/analyze_oneway.rst:28
-msgid ""
-"This function analyzes oneway streets in a graph and identifies any flipped "
-"segments."
-msgstr ""
-
-# 74bdfef086ae480bbe2affdece2c9efa
-#: ../../../src/common/doc/functions/analyze_oneway.rst:40
-msgid "Description"
-msgstr "Beschreibung"
-
-# 04f93117821f4eae962594c71a06a5a8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:42
-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 ""
-
-# 035956781a774bc3bb1214394ad77be8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:44
-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 ""
-
-# 007bbd995cbf4e7c86ce8e9916675879
-#: ../../../src/common/doc/functions/analyze_oneway.rst:46
-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 ""
-
-# f972114db5c841928b7f2ac705bb0687
-#: ../../../src/common/doc/functions/analyze_oneway.rst:49
-msgid "Prerequisites"
-msgstr ""
-
-# 54a0c52cee394d389a81fcd50b24ad97
-#: ../../../src/common/doc/functions/analyze_oneway.rst:50
-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 <edge_table>_vertices_pgr that stores the "
-"vertices information."
-msgstr ""
-
-# 808b5b795d364182b543ab30a1ad1644
-#: ../../../src/common/doc/functions/analyze_oneway.rst:52
-msgid ""
-"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
-"vertices table."
-msgstr ""
-
-# f6248fc57e734ead94edd12cab567915
-#: ../../../src/common/doc/functions/analyze_oneway.rst:53
-msgid ""
-"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
-"and the vertices table."
-msgstr ""
-
-# 4cacac934ba64cda907561e98847bf8b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:56
-msgid "Parameters"
-msgstr "Parameter"
-
-# 669f0d5432dd4c0c8da55dba8c3502e7
-#: ../../../src/common/doc/functions/analyze_oneway.rst:57
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# a16edb2699f1486c91c10ac7533fef7c
-#: ../../../src/common/doc/functions/analyze_oneway.rst:58
-msgid "``text[]`` source node **in** rules"
-msgstr ""
-
-# 28b4c2457d3b4aaba43dc42af4d2bd5e
-#: ../../../src/common/doc/functions/analyze_oneway.rst:59
-msgid "``text[]`` source node **out** rules"
-msgstr ""
-
-# 5180ad82f6e6434a99defa1823c0a2d8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:60
-msgid "``text[]`` target node **in** rules"
-msgstr ""
-
-# 4866b796c7fb49d985a479c3a97eec38
-#: ../../../src/common/doc/functions/analyze_oneway.rst:61
-msgid "``text[]`` target node **out** rules"
-msgstr ""
-
-# 2744331fb9ac447ba0c40a6035ac0a95
-#: ../../../src/common/doc/functions/analyze_oneway.rst:62
-msgid ""
-"``text`` oneway column name name of the network table. Default value is "
-"``oneway``."
-msgstr ""
-
-# b116cd1fc10f4f5bbd8fe9800562b62f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:63
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# 8ca5a93ed45443c09202b1e5779dfa76
-#: ../../../src/common/doc/functions/analyze_oneway.rst:64
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# e41f4c872a3445dbbc0bd183a71971fa
-#: ../../../src/common/doc/functions/analyze_oneway.rst:65
-msgid ""
-"``boolean`` flag to treat oneway NULL values as bi-directional. Default "
-"value is ``true``."
-msgstr ""
-
-# 9cd0459ca40940448e6c0d9c07c4a157
-#: ../../../src/common/doc/functions/analyze_oneway.rst:67
-msgid ""
-"It is strongly recommended to use the named notation. See "
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
-":ref:`pgr_createTopology <pgr_create_topology>` for examples."
-msgstr ""
-
-# e217ab2060e447e9a7a3745f4d84390d
-#: ../../../src/common/doc/functions/analyze_oneway.rst:70
-msgid "The function returns:"
-msgstr ""
-
-# 95dedd1c39c9424a906e6f2ff882e84a
-#: ../../../src/common/doc/functions/analyze_oneway.rst:72
-msgid "``OK`` after the analysis has finished."
-msgstr ""
-
-# 573d5fab7bb247d5adc39d8460683357
-#: ../../../src/common/doc/functions/analyze_oneway.rst:74
-msgid "Uses the vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# 86597d037fe242378cc71e6e2ec88b19
-#: ../../../src/common/doc/functions/analyze_oneway.rst:75
-msgid ""
-"Fills completely the ``ein`` and ``eout`` columns of the vertices table."
-msgstr ""
-
-# dcae6d2cceea4b6bb47a700cc4338340
-#: ../../../src/common/doc/functions/analyze_oneway.rst:77
-msgid "``FAIL`` when the analysis was not completed due to an error."
-msgstr ""
-
-# 792572ffb7314163be7e4aabadd4429c
-#: ../../../src/common/doc/functions/analyze_oneway.rst:79
-msgid "The vertices table is not found."
-msgstr ""
-
-# affbb7122dd844f3b5c7962c97dec0d3
-#: ../../../src/common/doc/functions/analyze_oneway.rst:80
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# e50d016ee05048779dea2db4006500be
-#: ../../../src/common/doc/functions/analyze_oneway.rst:81
-msgid "The names of source , target or oneway are the same."
-msgstr ""
-
-# f14e2456527945e0a80e7888bb6dde7f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:83
-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 ""
-
-# 02623674186e4e0c961078942584c0ec
-#: ../../../src/common/doc/functions/analyze_oneway.rst:86
-msgid "The Vertices Table"
-msgstr ""
-
-# dd7fb8252bfe456aaa65515346941e74
-#: ../../../src/common/doc/functions/analyze_oneway.rst:87
-msgid ""
-"The vertices table can be created with :ref:`pgr_createVerticesTable "
-"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
-msgstr ""
-
-# f838bf466e424966bd61af7b901279d2
-#: ../../../src/common/doc/functions/analyze_oneway.rst:89
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# 722239d3877b48d8bc5e63052fc7424f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:91
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# 0d3b269abc8e45a1abf355e4bb7d51c0
-#: ../../../src/common/doc/functions/analyze_oneway.rst:92
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 50b3729c83964ef3ae1a1511c76b50f8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:93
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# a5b1fe0206ea4c428c94f43a141b527b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:94
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming."
-msgstr ""
-
-# 7c678b91ca8a408aafda94e5fa217fae
-#: ../../../src/common/doc/functions/analyze_oneway.rst:95
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing."
-msgstr ""
-
-# 6d672d0be9cf41d69db69e46109d1624
-#: ../../../src/common/doc/functions/analyze_oneway.rst:96
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# b7cf2a5bba544714b9b79373c889e6cc
-#: ../../../src/common/doc/functions/analyze_oneway.rst:100
-msgid "History"
-msgstr "Geschichte"
-
-# ee9866aeb2c94c7fb0aa1e6cda48e6cb
-#: ../../../src/common/doc/functions/analyze_oneway.rst:101
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 3eed638ba1dd400186848b0928d632cf
-#: ../../../src/common/doc/functions/analyze_oneway.rst:105
-msgid "Examples"
-msgstr "Beispiele"
-
-# fb1f0f5537c0427a866814b367160245
-#: ../../../src/common/doc/functions/analyze_oneway.rst:129
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 34726fcf405940b780880e71c6a2dad3
-#: ../../../src/common/doc/functions/analyze_oneway.rst:133
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 384816237f7b49d5911a48675467810d
-#: ../../../src/common/doc/functions/analyze_oneway.rst:135
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# f8a2c637ce834c5ab9fea42ec365f0d1
-#: ../../../src/common/doc/functions/analyze_oneway.rst:136
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-# 1688102891bc4abaaed229738ca05755
-#: ../../../src/common/doc/functions/analyze_oneway.rst:137
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
-
-# 5914f34793e24715acb0adbe7d9fe1e0
-#: ../../../src/common/doc/functions/analyze_oneway.rst:138
-msgid ""
-":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
-"source and target information."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/create_topology.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/create_topology.po
deleted file mode 100644
index 95b1390..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/create_topology.po
+++ /dev/null
@@ -1,413 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 841ce4ae2ccd42aeb6708e0469affc85
-#: ../../../src/common/doc/functions/create_topology.rst:13
-msgid "pgr_createTopology"
-msgstr ""
-
-# bceb18f1c7484f2495890a181eb43749
-#: ../../../src/common/doc/functions/create_topology.rst:20
-msgid "Name"
-msgstr "Name"
-
-# efddc8da13ee412aa1fb75bf84ad023b
-#: ../../../src/common/doc/functions/create_topology.rst:22
-msgid ""
-"``pgr_createTopology`` — Builds a network topology based on the geometry "
-"information."
-msgstr ""
-
-# c01e1abb389b4e0096e2971378967ac9
-#: ../../../src/common/doc/functions/create_topology.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 0dcc6bb9100b4d89afa5b1404283d0c9
-# 2f90d445d42f4c839d6d2b2e4bdd588b
-#: ../../../src/common/doc/functions/create_topology.rst:28
-#: ../../../src/common/doc/functions/create_topology.rst:69
-msgid "The function returns:"
-msgstr ""
-
-# 88833f75e6d741b5bc91526488d66e4e
-#: ../../../src/common/doc/functions/create_topology.rst:30
-msgid ""
-"``OK`` after the network topology has been built and the vertices table "
-"created."
-msgstr ""
-
-# da6aad799955428fb1bef9ff2dbd70b5
-#: ../../../src/common/doc/functions/create_topology.rst:31
-msgid "``FAIL`` when the network topology was not built due to an error."
-msgstr ""
-
-# c4d463cfb61840f689831eeafe2844dc
-#: ../../../src/common/doc/functions/create_topology.rst:42
-msgid "Description"
-msgstr "Beschreibung"
-
-# fba8585de1c94f0ba612f64f8cd4f39d
-#: ../../../src/common/doc/functions/create_topology.rst:45
-msgid "Parameters"
-msgstr "Parameter"
-
-# 33e33f7ee98e4b9a9d333f8ab95cbc9b
-#: ../../../src/common/doc/functions/create_topology.rst:46
-msgid "The topology creation function accepts the following parameters:"
-msgstr ""
-
-# d19b1856e3d440749487a15a83c9d44c
-#: ../../../src/common/doc/functions/create_topology.rst:48
-msgid "``text`` Network table name. (may contain the schema name AS well)"
-msgstr ""
-
-# 6afd7b88cbaf4a58b2dcbd161b278356
-#: ../../../src/common/doc/functions/create_topology.rst:49
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-# 905510b263854f1eb05f10c8a64d9d20
-#: ../../../src/common/doc/functions/create_topology.rst:50
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# f9b621bcf0ab41c3b87693c812f3d710
-#: ../../../src/common/doc/functions/create_topology.rst:51
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr ""
-
-# 6bcaf9c3c7e1422ea8e1b4dc45e7c613
-#: ../../../src/common/doc/functions/create_topology.rst:52
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# e2b13126a14a4ebeb8c3f453235560a1
-#: ../../../src/common/doc/functions/create_topology.rst:53
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# adbfdd92db3740e5b4e8a6259a0a064c
-#: ../../../src/common/doc/functions/create_topology.rst:54
-msgid ""
-"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
-"to indicate all rows."
-msgstr ""
-
-# 65297b06273d46cc98c9a3be75886137
-#: ../../../src/common/doc/functions/create_topology.rst:58
-msgid "The ``edge_table`` will be affected"
-msgstr ""
-
-# 7f45565b3b8d40408b2da1bee3d1c354
-#: ../../../src/common/doc/functions/create_topology.rst:60
-msgid "The ``source`` column values will change."
-msgstr ""
-
-# e05fe9ce627848aa8aa72f032d303f04
-#: ../../../src/common/doc/functions/create_topology.rst:61
-msgid "The ``target`` column values will change."
-msgstr ""
-
-# 72c3682247aa4841a49790a78db8c3c3
-#: ../../../src/common/doc/functions/create_topology.rst:62
-msgid ""
-"An index will be created, if it doesn't exists, to speed up the process to "
-"the following columns:"
-msgstr ""
-
-# 993784afa3ce4ca68f11e8e02f2b4b27
-#: ../../../src/common/doc/functions/create_topology.rst:64
-msgid "``id``"
-msgstr ""
-
-# 3074ee818e8241bc93c5a3284d7c3af4
-#: ../../../src/common/doc/functions/create_topology.rst:65
-msgid "``the_geom``"
-msgstr "``the_geom``"
-
-# e40fef18592542b98d234ac6a8038def
-#: ../../../src/common/doc/functions/create_topology.rst:66
-msgid "``source``"
-msgstr "``source``"
-
-# 0360a33adc734d1eaf83f5e1e314cc73
-#: ../../../src/common/doc/functions/create_topology.rst:67
-msgid "``target``"
-msgstr "``target``"
-
-# a2aae07be90348b0b2190f647731fb26
-#: ../../../src/common/doc/functions/create_topology.rst:71
-msgid "``OK`` after the network topology has been built."
-msgstr ""
-
-# 33a4fd15e75a41a68105d2ea67b4aab1
-#: ../../../src/common/doc/functions/create_topology.rst:73
-msgid "Creates a vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# 589a7e90c6404cbe902baec0a884189b
-#: ../../../src/common/doc/functions/create_topology.rst:74
-msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
-msgstr ""
-
-# 92e7ab03c5ce43ed8c705a26aa4b801c
-#: ../../../src/common/doc/functions/create_topology.rst:75
-msgid ""
-"Fills the source and target columns of the edge table referencing the ``id``"
-" of the vertices table."
-msgstr ""
-
-# 0635e9d515184ccc80747864939f789c
-#: ../../../src/common/doc/functions/create_topology.rst:78
-msgid "``FAIL`` when the network topology was not built due to an error:"
-msgstr ""
-
-# 607fcb6f6ae3438789ecf9c95992bc3f
-#: ../../../src/common/doc/functions/create_topology.rst:80
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# 2bad2b565914457a90a990e718e857fd
-#: ../../../src/common/doc/functions/create_topology.rst:81
-msgid "The condition is not well formed."
-msgstr ""
-
-# c800f5e3462c44c1b786308aec4cfea4
-#: ../../../src/common/doc/functions/create_topology.rst:82
-msgid "The names of source , target or id are the same."
-msgstr ""
-
-# 51c96f82e8ea49bcbde8aaeb905a6c6c
-#: ../../../src/common/doc/functions/create_topology.rst:83
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-# f5f0d0a1c3814e1d9c14e4de52bd9899
-#: ../../../src/common/doc/functions/create_topology.rst:87
-msgid "The Vertices Table"
-msgstr ""
-
-# 54ef7e60b4d445cfa453323fbe80032d
-#: ../../../src/common/doc/functions/create_topology.rst:88
-msgid ""
-"The vertices table is a requirment of the :ref:`pgr_analyzeGraph "
-"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
-"functions."
-msgstr ""
-
-# faaffddd86fd4680a80925c8c3877f07
-#: ../../../src/common/doc/functions/create_topology.rst:90
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# fc31880c8b034aae99d6d4caec420302
-#: ../../../src/common/doc/functions/create_topology.rst:92
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# 7684f52a607845ef802799c26c221bf3
-#: ../../../src/common/doc/functions/create_topology.rst:93
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 1dc63c1d7cbb417d916ed0561df67df9
-#: ../../../src/common/doc/functions/create_topology.rst:94
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 546f74ccc20545de9c032cabcaac878f
-#: ../../../src/common/doc/functions/create_topology.rst:95
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# 9fe606ee590d4f009989e3cdcf09b5c5
-#: ../../../src/common/doc/functions/create_topology.rst:96
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# 2ee4f32c8546412bad1e109e6051e249
-#: ../../../src/common/doc/functions/create_topology.rst:97
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# a63156aa23b54785aaf66150bfe98a52
-#: ../../../src/common/doc/functions/create_topology.rst:100
-msgid "History"
-msgstr "Geschichte"
-
-# da8726d6435e42f09d83f4a310d5c432
-#: ../../../src/common/doc/functions/create_topology.rst:101
-msgid "Renamed in version 2.0.0"
-msgstr "Umbenannt in Version 2.0.0"
-
-# 5b4b6a4bea1543ac98f444d9ec32d7eb
-#: ../../../src/common/doc/functions/create_topology.rst:104
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-# 6db23da4afd448bab89802246bccb65a
-#: ../../../src/common/doc/functions/create_topology.rst:107
-msgid "The simplest way to use pgr_createtopology is:"
-msgstr ""
-
-# 6905f56f53bb4cdfb9ae49021265afe9
-#: ../../../src/common/doc/functions/create_topology.rst:115
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-# f8c6c68c7d334f68bac36a818c4091ab
-#: ../../../src/common/doc/functions/create_topology.rst:120
-msgid "We get the same result AS the simplest way to use the function."
-msgstr ""
-
-# 8dcbdbf60c2e4522a87d80a7796a354b
-# b72940f0e2054c46a50358fc40af026e
-#: ../../../src/common/doc/functions/create_topology.rst:127
-#: ../../../src/common/doc/functions/create_topology.rst:192
-msgid "When using the named notation"
-msgstr ""
-
-# 460cbff5c7054542a80375a4f50072e0
-# 56d9daba24ff4ce9ac02e3326af007af
-#: ../../../src/common/doc/functions/create_topology.rst:128
-#: ../../../src/common/doc/functions/create_topology.rst:193
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-# 4b24ad3db4be4b60a6c8bfcc38fae359
-#: ../../../src/common/doc/functions/create_topology.rst:138
-msgid ""
-"Parameters defined with a default value can be omited, AS long AS the value "
-"matches the default:"
-msgstr ""
-
-# 8aab982078634384ab4dfced463b5c14
-# d9c7d4fa12394a5a915a9f6f664e7a8a
-#: ../../../src/common/doc/functions/create_topology.rst:145
-#: ../../../src/common/doc/functions/create_topology.rst:207
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-# 4be49c2f23734283895a40625620047b
-# 1734ac1429ad4691861fbfcc7954d800
-#: ../../../src/common/doc/functions/create_topology.rst:146
-#: ../../../src/common/doc/functions/create_topology.rst:208
-msgid "Selecting rows based on the id."
-msgstr ""
-
-# 499347aef3cb49f993c320d1fd353a29
-# a0cd57644bf443fbaa81efed8df8a30f
-#: ../../../src/common/doc/functions/create_topology.rst:152
-#: ../../../src/common/doc/functions/create_topology.rst:218
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# b8e12b4f62d24fb0a535290a0a480ff0
-# 42da9f122c7240bea10a78685a6b5b8d
-#: ../../../src/common/doc/functions/create_topology.rst:158
-#: ../../../src/common/doc/functions/create_topology.rst:230
-msgid ""
-"Selecting the rows where the geometry is near the geometry of the row with "
-"``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-# 596d74ac25d34cbda9a05349a4a0af21
-#: ../../../src/common/doc/functions/create_topology.rst:169
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-# ac1bf6e79288443486b7b105e25e07eb
-#: ../../../src/common/doc/functions/create_topology.rst:171
-msgid "For the following table"
-msgstr ""
-
-# a24fc2426b5c4b91bc53f875e37dddaa
-#: ../../../src/common/doc/functions/create_topology.rst:179
-msgid "Using positional notation:"
-msgstr ""
-
-# d1937a888b40477b8d696215b7b93425
-#: ../../../src/common/doc/functions/create_topology.rst:180
-msgid ""
-"The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-# 7e510379477f445a9432549c095c12bb
-#: ../../../src/common/doc/functions/create_topology.rst:203
-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 ""
-
-# de088e18a1634e6a96b99df9171c530a
-#: ../../../src/common/doc/functions/create_topology.rst:247
-msgid "Examples"
-msgstr "Beispiele"
-
-# 89b592f2e7f6474cbed2d9d5bca887e9
-#: ../../../src/common/doc/functions/create_topology.rst:279
-msgid "The example uses the :ref:`sampledata` network."
-msgstr ""
-
-# ae52cd8922264c939460bd2df2108508
-#: ../../../src/common/doc/functions/create_topology.rst:283
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 664429e917764979b9255e4f9a72377f
-#: ../../../src/common/doc/functions/create_topology.rst:285
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 9ded0191d7344e8baca758e97f34cf68
-#: ../../../src/common/doc/functions/create_topology.rst:286
-msgid ""
-":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
-"source and target information."
-msgstr ""
-
-# ca4432eb1b4246268b1acee87b464b2f
-#: ../../../src/common/doc/functions/create_topology.rst:287
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/create_vert_table.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/create_vert_table.po
deleted file mode 100644
index 5bd5f02..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/create_vert_table.po
+++ /dev/null
@@ -1,389 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:16+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 1a8504651dd840e4a48344ead373a073
-#: ../../../src/common/doc/functions/create_vert_table.rst:13
-msgid "pgr_createVerticesTable"
-msgstr "pgr_createVerticesTable"
-
-# ad976846c3444135a397d1f47a0ffceb
-#: ../../../src/common/doc/functions/create_vert_table.rst:20
-msgid "Name"
-msgstr "Name"
-
-# c26ff674db0d4b65bff9b1483e524956
-#: ../../../src/common/doc/functions/create_vert_table.rst:22
-msgid ""
-"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
-"source and target information."
-msgstr ""
-
-# b27c4239c9034d8fb5bbfc4b736af367
-#: ../../../src/common/doc/functions/create_vert_table.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# bbfea2a13422443f8e1b9b863f56dea0
-# 139eabd1665d4dc8b6caac92f0764d50
-#: ../../../src/common/doc/functions/create_vert_table.rst:28
-#: ../../../src/common/doc/functions/create_vert_table.rst:63
-msgid "The function returns:"
-msgstr ""
-
-# bdf469a3c50c4176bcc89409cbe50136
-# 268e8b4480b24112a72e1d7da0dab1bd
-#: ../../../src/common/doc/functions/create_vert_table.rst:30
-#: ../../../src/common/doc/functions/create_vert_table.rst:65
-msgid "``OK`` after the vertices table has been reconstructed."
-msgstr ""
-
-# f542765a7c984a57b56f203df843634d
-# a536d714aa4240dca5d92dfeee6dd7bb
-#: ../../../src/common/doc/functions/create_vert_table.rst:31
-#: ../../../src/common/doc/functions/create_vert_table.rst:70
-msgid ""
-"``FAIL`` when the vertices table was not reconstructed due to an error."
-msgstr ""
-
-# c7c8bc00b10d45a897224d240c4f96bf
-#: ../../../src/common/doc/functions/create_vert_table.rst:41
-msgid "Description"
-msgstr "Beschreibung"
-
-# c53a2ef242f8484dac84581a80134594
-#: ../../../src/common/doc/functions/create_vert_table.rst:44
-msgid "Parameters"
-msgstr "Parameter"
-
-# 2dc2c3867d7a4367a958a6e1049f44c0
-#: ../../../src/common/doc/functions/create_vert_table.rst:45
-msgid ""
-"The reconstruction of the vertices table function accepts the following "
-"parameters:"
-msgstr ""
-
-# e92b11f0f4ea47af9581936d11972ef6
-#: ../../../src/common/doc/functions/create_vert_table.rst:47
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# 75d43bdeeb7843139aec9b4c7dc60097
-#: ../../../src/common/doc/functions/create_vert_table.rst:48
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# f0e2bb638cd841f2b61bc8398e3ea59b
-#: ../../../src/common/doc/functions/create_vert_table.rst:49
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# ba67bced62994e7b98967cf09cbf3ca6
-#: ../../../src/common/doc/functions/create_vert_table.rst:50
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# d7d53a50bc9249518132241a2c83dc1b
-#: ../../../src/common/doc/functions/create_vert_table.rst:51
-msgid ""
-"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
-"to indicate all rows."
-msgstr ""
-
-# a87c8e9949df409da09632babbb99748
-#: ../../../src/common/doc/functions/create_vert_table.rst:55
-msgid "The ``edge_table`` will be affected"
-msgstr ""
-
-# a0b202c14bf849e1a9506fc9c4010540
-#: ../../../src/common/doc/functions/create_vert_table.rst:57
-msgid ""
-"An index will be created, if it doesn't exists, to speed up the process to "
-"the following columns:"
-msgstr ""
-
-# 51ab4d2ba98b4affa7e5cec96e352cce
-#: ../../../src/common/doc/functions/create_vert_table.rst:59
-msgid "``the_geom``"
-msgstr "``the_geom``"
-
-# 134fb1a15f8742a49fe36e2683c4c324
-#: ../../../src/common/doc/functions/create_vert_table.rst:60
-msgid "``source``"
-msgstr "``source``"
-
-# 1c5f7bc5486b44999341e4f8f9b92c2e
-#: ../../../src/common/doc/functions/create_vert_table.rst:61
-msgid "``target``"
-msgstr "``target``"
-
-# 2c70ff2c521c48c799c898d61a01e119
-#: ../../../src/common/doc/functions/create_vert_table.rst:67
-msgid "Creates a vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# b0e0cf6163ea49f3b3a38e97576f301e
-#: ../../../src/common/doc/functions/create_vert_table.rst:68
-msgid ""
-"Fills ``id`` and ``the_geom`` columns of the vertices table based on the "
-"source and target columns of the edge table."
-msgstr ""
-
-# 28e32e20ebd74f88920b7c6fd45054e9
-#: ../../../src/common/doc/functions/create_vert_table.rst:72
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# 8501c3c5738f4907bf64b63007218466
-#: ../../../src/common/doc/functions/create_vert_table.rst:73
-msgid "The condition is not well formed."
-msgstr ""
-
-# 5252c79651354d40a6271efe4b78d226
-#: ../../../src/common/doc/functions/create_vert_table.rst:74
-msgid "The names of source, target are the same."
-msgstr ""
-
-# 41c42eeafd6b487ebc676126c0f92f0c
-#: ../../../src/common/doc/functions/create_vert_table.rst:75
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-# d61aba7cc54d49b9a670817e7dd52472
-#: ../../../src/common/doc/functions/create_vert_table.rst:78
-msgid "The Vertices Table"
-msgstr ""
-
-# 93a53c04ff294116acf94a067d17ff73
-#: ../../../src/common/doc/functions/create_vert_table.rst:79
-msgid ""
-"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
-"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
-"functions."
-msgstr ""
-
-# 7e418508090c4667b4128b22f562b5db
-#: ../../../src/common/doc/functions/create_vert_table.rst:81
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# 114548eb64364741b99e10c86fe55fad
-#: ../../../src/common/doc/functions/create_vert_table.rst:83
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# 35f0fc22f2464997bce4d704a9f4ee88
-#: ../../../src/common/doc/functions/create_vert_table.rst:84
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# d71ba1da8657438b86fe6ce3326cf94a
-#: ../../../src/common/doc/functions/create_vert_table.rst:85
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 9ea4778e1ed64d3cb8c12ffedca5748b
-#: ../../../src/common/doc/functions/create_vert_table.rst:86
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# cd631484ea62455cae3d37b03ca36624
-#: ../../../src/common/doc/functions/create_vert_table.rst:87
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# 29652dcb521b4111813d63d570b62873
-#: ../../../src/common/doc/functions/create_vert_table.rst:88
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# ca63675181414139865690332306235b
-#: ../../../src/common/doc/functions/create_vert_table.rst:91
-msgid "History"
-msgstr "Geschichte"
-
-# e383b8838b4b40618c66151c1f94fb48
-#: ../../../src/common/doc/functions/create_vert_table.rst:92
-msgid "Renamed in version 2.0.0"
-msgstr "Umbenannt in Version 2.0.0"
-
-# f4e14bd6d88d4f1e8d5ff2fbf9aea722
-#: ../../../src/common/doc/functions/create_vert_table.rst:95
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-# 6fc1c7d9c4e04380ada776f609bf4505
-#: ../../../src/common/doc/functions/create_vert_table.rst:98
-msgid "The simplest way to use pgr_createVerticesTable is:"
-msgstr ""
-
-# 3373cb2347994f2fa122008bdff12190
-#: ../../../src/common/doc/functions/create_vert_table.rst:105
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-# f75126b9da994fea920678a643a80e25
-#: ../../../src/common/doc/functions/create_vert_table.rst:110
-msgid "We get the same result as the simplest way to use the function."
-msgstr ""
-
-# 90ea5b12d9a64eb2bafd6d211e0ffeff
-# 34ff976ba1f24ec08a19a8d87673156d
-#: ../../../src/common/doc/functions/create_vert_table.rst:117
-#: ../../../src/common/doc/functions/create_vert_table.rst:181
-msgid "When using the named notation"
-msgstr ""
-
-# 213a5c21ddcb4745987210530901695f
-# fac4e4da33fb494981c36957cd000a29
-#: ../../../src/common/doc/functions/create_vert_table.rst:118
-#: ../../../src/common/doc/functions/create_vert_table.rst:182
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-# 529a856bf0404a10a837b07945c52175
-#: ../../../src/common/doc/functions/create_vert_table.rst:128
-msgid ""
-"Parameters defined with a default value can be omited, as long as the value "
-"matches the default:"
-msgstr ""
-
-# 55574bcb1be54b1b907c0524cbf1057d
-# af501046d7d84255bd3030520c3e2f15
-#: ../../../src/common/doc/functions/create_vert_table.rst:135
-#: ../../../src/common/doc/functions/create_vert_table.rst:196
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-# 7080aeec9c1e4a31bfb9be1ed4506ab7
-#: ../../../src/common/doc/functions/create_vert_table.rst:136
-msgid "Selecting rows based on the id."
-msgstr ""
-
-# 74ec654344604925875e20b1447a6a3e
-#: ../../../src/common/doc/functions/create_vert_table.rst:142
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# 89d554dba13d40be8ca51e74d18c7c6f
-# fbda0895e287413fb2455b07ba2ba7fb
-#: ../../../src/common/doc/functions/create_vert_table.rst:148
-#: ../../../src/common/doc/functions/create_vert_table.rst:219
-msgid ""
-"Selecting the rows where the geometry is near the geometry of the row with "
-"``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-# 7f2e698d7f844861bd468923e95ef16a
-#: ../../../src/common/doc/functions/create_vert_table.rst:159
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-# 381c72bdf71543d4853557e93d021602
-#: ../../../src/common/doc/functions/create_vert_table.rst:161
-msgid "For the following table"
-msgstr ""
-
-# 5d51a2b4e3e84516bab9cc22039007c8
-#: ../../../src/common/doc/functions/create_vert_table.rst:169
-msgid "Using positional notation:"
-msgstr ""
-
-# 3be19d9038134fe2907db9c97eaeca7d
-#: ../../../src/common/doc/functions/create_vert_table.rst:170
-msgid ""
-"The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-# 94d47a836ffa45268fc1f9662f902f2b
-#: ../../../src/common/doc/functions/create_vert_table.rst:192
-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 ""
-
-# 6d8d108291094933afdde4095193e506
-#: ../../../src/common/doc/functions/create_vert_table.rst:197
-msgid "Selecting rows based on the gid."
-msgstr ""
-
-# 5df5fd0f734e46c6bfb93444bd86905e
-#: ../../../src/common/doc/functions/create_vert_table.rst:207
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``gid`` =5 ."
-msgstr ""
-
-# e2c54fc28df243609e8d003180886771
-#: ../../../src/common/doc/functions/create_vert_table.rst:236
-msgid "Examples"
-msgstr "Beispiele"
-
-# 0587b0909413456482f8b8725b101b7a
-#: ../../../src/common/doc/functions/create_vert_table.rst:258
-msgid "The example uses the :ref:`sampledata` network."
-msgstr ""
-
-# ad71788bef724cb1809d4b5d96ef1e5c
-#: ../../../src/common/doc/functions/create_vert_table.rst:262
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 6baea98fd7b6493faabb8fcc69f975d8
-#: ../../../src/common/doc/functions/create_vert_table.rst:264
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 7103284d91854b18939e44589085f3cf
-#: ../../../src/common/doc/functions/create_vert_table.rst:265
-msgid ""
-":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
-"on the geometry."
-msgstr ""
-
-# 4c67e74087fe4035a8b54bb0d58d8a84
-#: ../../../src/common/doc/functions/create_vert_table.rst:266
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
-
-# a7eb449e6d594406ab3779c29d1937c8
-#: ../../../src/common/doc/functions/create_vert_table.rst:267
-msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/index.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/index.po
deleted file mode 100644
index 488f979..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/index.po
+++ /dev/null
@@ -1,64 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:13+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# deb0ed12ae874b7a8bb888e9e2be5881
-#: ../../../src/common/doc/functions/index.rst:13
-msgid "Topology Functions"
-msgstr "Topologie-Funktionen"
-
-# cbbdace0de7449b1a859558858d76f6e
-#: ../../../src/common/doc/functions/index.rst:15
-msgid ""
-"The pgRouting's topology of a network, represented with an edge table with "
-"source and target attributes and a vertices table associated with it. "
-"Depending on the algorithm, you can create a topology or just reconstruct "
-"the vertices table, You can analyze the topology, We also provide a function"
-" to node an unoded network."
-msgstr ""
-
-# f4e85c020cba4850a7e4da7b9456baa9
-#: ../../../src/common/doc/functions/index.rst:19
-msgid ""
-":ref:`pgr_create_topology` - to create a topology based on the geometry."
-msgstr ""
-
-# 2d4de3856acc4c43a732847a834661e6
-#: ../../../src/common/doc/functions/index.rst:20
-msgid ""
-":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
-"the source and target information."
-msgstr ""
-
-# 4cf0c54d4785484e9694aa275658e7a7
-#: ../../../src/common/doc/functions/index.rst:21
-msgid ""
-":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
-
-# a7edff2f50444a3d985d747d5e6a609e
-#: ../../../src/common/doc/functions/index.rst:22
-msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
-msgstr ""
-
-# e04ee2a942c4495fa185f89d37b0c42b
-#: ../../../src/common/doc/functions/index.rst:23
-msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po
deleted file mode 100644
index d42dd2a..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po
+++ /dev/null
@@ -1,88 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-04 04:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 1451c59201944bfd9022c90ef89ebf8a
-#: ../../../src/common/doc/functions/is_column_in_table.rst:13
-msgid "pgr_isColumnInTable - Check if column exists"
-msgstr ""
-
-# cb570c2703fc45e9bba281cae42780d6
-#: ../../../src/common/doc/functions/is_column_in_table.rst:20
-msgid "Name"
-msgstr "Name"
-
-# b4cdca42128d4828961c3e7076774fc0
-#: ../../../src/common/doc/functions/is_column_in_table.rst:22
-msgid "``pgr_isColumnInTable`` — Check if a column exists in a table."
-msgstr ""
-
-# 33b135e2f8dd4f5e81aad53d1a016cfe
-#: ../../../src/common/doc/functions/is_column_in_table.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 96d06813601a419c9b44fe8298f74a51
-#: ../../../src/common/doc/functions/is_column_in_table.rst:28
-msgid "Returns ``true`` or ``false`` if column “col” exists in table “tab”."
-msgstr ""
-
-# 44f17585bbd843cb9fbcacb785ad3130
-#: ../../../src/common/doc/functions/is_column_in_table.rst:36
-msgid "Description"
-msgstr "Beschreibung"
-
-# b57ee4621bd04e6991a266235c5a592a
-#: ../../../src/common/doc/functions/is_column_in_table.rst:38
-msgid "``text`` table name with or without schema component"
-msgstr ""
-
-# ac6b45788cac4cc7a5dcf6e4c44bb9ad
-#: ../../../src/common/doc/functions/is_column_in_table.rst:39
-msgid "``text`` column name to be checked for"
-msgstr ""
-
-# 5f4ac9523c3b487884e6dd8e67b1e082
-#: ../../../src/common/doc/functions/is_column_in_table.rst:43
-msgid "History"
-msgstr "Geschichte"
-
-# 028851614bd7489991629d8c8f6f8bbf
-#: ../../../src/common/doc/functions/is_column_in_table.rst:44
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 3c3db2df87634ae4b3c8713633f9214f
-#: ../../../src/common/doc/functions/is_column_in_table.rst:48
-msgid "Examples"
-msgstr "Beispiele"
-
-# 61e31f4885e444eea60640117f0f8264
-#: ../../../src/common/doc/functions/is_column_in_table.rst:59
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 179da1f0bf5342b49e83327d1e277ca9
-#: ../../../src/common/doc/functions/is_column_in_table.rst:63
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 7e1d2140f94d40db8ce6f48c9a3b119f
-#: ../../../src/common/doc/functions/is_column_in_table.rst:65
-msgid ":ref:`pgr_is_column_indexed`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po
deleted file mode 100644
index 983295d..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po
+++ /dev/null
@@ -1,89 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-04 04:21+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f85a66c48ca94cc9a5bba227e6479482
-#: ../../../src/common/doc/functions/is_column_indexed.rst:13
-msgid "pgr_isColumnIndexed - Check if column is indexed"
-msgstr ""
-
-# a4e361cfe30d494982b2755f507c2df4
-#: ../../../src/common/doc/functions/is_column_indexed.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 2616614bd27b4f3aac95e5ee66f8771c
-#: ../../../src/common/doc/functions/is_column_indexed.rst:22
-msgid "``pgr_isColumnIndexed`` — Check if a column in a table is indexed."
-msgstr ""
-
-# 4aff78895aaf431bb254a1725ab1bab6
-#: ../../../src/common/doc/functions/is_column_indexed.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 62d98585fdfb49d287f711a97ba6f261
-#: ../../../src/common/doc/functions/is_column_indexed.rst:28
-msgid ""
-"Returns ``true`` or ``false`` if column “col” in table “tab” is indexed."
-msgstr ""
-
-# 016a3d2a60a745c39afdaa4ba6d24b5f
-#: ../../../src/common/doc/functions/is_column_indexed.rst:36
-msgid "Description"
-msgstr "Beschreibung"
-
-# 5efc6b2a366544cdadac135ab40dee54
-#: ../../../src/common/doc/functions/is_column_indexed.rst:38
-msgid "``text`` table name with or without schema component"
-msgstr ""
-
-# 76548c59562d4c4188ea7a5bbd5b769a
-#: ../../../src/common/doc/functions/is_column_indexed.rst:39
-msgid "``text`` column name to be checked for"
-msgstr ""
-
-# 20bbf0766ada4f7b81807c2e917be118
-#: ../../../src/common/doc/functions/is_column_indexed.rst:43
-msgid "History"
-msgstr "Geschichte"
-
-# 3ca6785c8cb24235a6b581e63c32bd03
-#: ../../../src/common/doc/functions/is_column_indexed.rst:44
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 89feb49b01e94980935495257bf135a9
-#: ../../../src/common/doc/functions/is_column_indexed.rst:48
-msgid "Examples"
-msgstr "Beispiele"
-
-# c8b849f8431c42ef9ecdcde47c516f03
-#: ../../../src/common/doc/functions/is_column_indexed.rst:59
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 4d38c2d872d0425290c2371cbc5d27e8
-#: ../../../src/common/doc/functions/is_column_indexed.rst:63
-msgid "See Also"
-msgstr "Siehe auch"
-
-# ed5ed4b10dc74af48b9de1a8743ec37b
-#: ../../../src/common/doc/functions/is_column_indexed.rst:65
-msgid ":ref:`pgr_is_column_in_table`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/node_network.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/node_network.po
deleted file mode 100644
index fd0dc98..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/node_network.po
+++ /dev/null
@@ -1,416 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# e70efe892bc14a45b9e0a2483d5955c1
-#: ../../../src/common/doc/functions/node_network.rst:13
-msgid "pgr_nodeNetwork"
-msgstr ""
-
-# 928e918755da48d29b113ad9fcdac620
-#: ../../../src/common/doc/functions/node_network.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 4c656aa4f4bf48c39d41d16b429a0f0f
-#: ../../../src/common/doc/functions/node_network.rst:22
-msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
-msgstr ""
-
-# b5fd23c4e27446ce8ac33a3ee9bd1fe7
-#: ../../../src/common/doc/functions/node_network.rst:24
-msgid "Nicolas Ribot"
-msgstr ""
-
-# 16108dce80dd41e2a458f2f45f2864d0
-#: ../../../src/common/doc/functions/node_network.rst:25
-msgid "Nicolas Ribot, The source code is released under the MIT-X license."
-msgstr ""
-
-# 3977ae6b9cf044318ec203a8e5aa5692
-#: ../../../src/common/doc/functions/node_network.rst:29
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 2f6a7ad6abe5481da1e313d912af14e9
-#: ../../../src/common/doc/functions/node_network.rst:31
-msgid ""
-"The function reads edges from a not \"noded\" network table and writes the "
-"\"noded\" edges into a new table."
-msgstr ""
-
-# 3461fdeb834f4294ae2b188234db4eff
-#: ../../../src/common/doc/functions/node_network.rst:40
-msgid "Description"
-msgstr "Beschreibung"
-
-# 422a0c6c90c04a46bec03a6510ec201f
-#: ../../../src/common/doc/functions/node_network.rst:42
-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 ""
-
-# 69294245f1c44993a75f749e3721222a
-#: ../../../src/common/doc/functions/node_network.rst:44
-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 ""
-
-# 2817b2a1050f4b5da0c9aac6f306ea5e
-#: ../../../src/common/doc/functions/node_network.rst:46
-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 ""
-
-# b6408b0103e84de6acf993a22a25e533
-#: ../../../src/common/doc/functions/node_network.rst:48
-msgid "Parameters"
-msgstr "Parameter"
-
-# 40ed2f0c80b64683aa3f8d42d20a77a2
-#: ../../../src/common/doc/functions/node_network.rst:50
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# 86c247b372114883b5f6d0949e51b3c8
-#: ../../../src/common/doc/functions/node_network.rst:51
-msgid "``float8`` tolerance for coincident points (in projection unit)dd"
-msgstr ""
-
-# 946d6ed96b2b4f7fac8bcc7ba4d8e68b
-#: ../../../src/common/doc/functions/node_network.rst:52
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr ""
-
-# ce2e7f47f3bb4b299dda0387123f0409
-#: ../../../src/common/doc/functions/node_network.rst:53
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# 74d00078e6354e09a4592cf7e3f9dbe8
-#: ../../../src/common/doc/functions/node_network.rst:54
-msgid "``text`` Suffix for the new table's. Default value is ``noded``."
-msgstr ""
-
-# bc28085240354b228628c4449f877afe
-#: ../../../src/common/doc/functions/node_network.rst:56
-msgid "The output table will have for ``edge_table_noded``"
-msgstr ""
-
-# df15f6d14415411b85a167c31717fb4e
-#: ../../../src/common/doc/functions/node_network.rst:58
-msgid "``bigint`` Unique identifier for the table"
-msgstr ""
-
-# 4acc7cf0acea40ac852585983687ef11
-#: ../../../src/common/doc/functions/node_network.rst:59
-msgid "``bigint`` Identifier of the edge in original table"
-msgstr ""
-
-# 99bb3c953a7243e1b8232bf4a387c7d7
-#: ../../../src/common/doc/functions/node_network.rst:60
-msgid "``integer`` Segment number of the original edge"
-msgstr ""
-
-# 36a3bdb3e58840f78502c1f388619d52
-#: ../../../src/common/doc/functions/node_network.rst:61
-msgid ""
-"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
-"function"
-msgstr ""
-
-# 05092b2ea62744f1910db90fe30ab152
-#: ../../../src/common/doc/functions/node_network.rst:62
-msgid ""
-"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
-"function"
-msgstr ""
-
-# c2b0caed0dd643e1991dd4e7f0f08e4c
-#: ../../../src/common/doc/functions/node_network.rst:63
-msgid "``geometry`` Geometry column of the noded network"
-msgstr ""
-
-# a1f34fff1602404db7f2c2344f99cad1
-#: ../../../src/common/doc/functions/node_network.rst:66
-msgid "History"
-msgstr "Geschichte"
-
-# b92ecc8b6d9a4eaba9e0a30ce164fed0
-#: ../../../src/common/doc/functions/node_network.rst:67
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# cd2560788805450aa6ffb5ce84c8058e
-#: ../../../src/common/doc/functions/node_network.rst:71
-msgid "Example"
-msgstr ""
-
-# 7e9403e106bb4c0abdd7ed3d1b266079
-#: ../../../src/common/doc/functions/node_network.rst:73
-msgid "Let's create the topology for the data in :ref:`sampledata`"
-msgstr ""
-
-# 5c1a627f182d47efa30c1d4c830862ab
-#: ../../../src/common/doc/functions/node_network.rst:91
-msgid "Now we can analyze the network."
-msgstr ""
-
-# 3eb0c69215284a33ab1505fded4b5a1f
-#: ../../../src/common/doc/functions/node_network.rst:115
-msgid ""
-"The analysis tell us that the network has a gap and and an intersection. We "
-"try to fix the problem using:"
-msgstr ""
-
-# 8be31305870e491c92ad11d8f8d0a20a
-#: ../../../src/common/doc/functions/node_network.rst:137
-msgid ""
-"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
-"segmented"
-msgstr ""
-
-# 8a086446ed8d4b30bf07015ab46ea12d
-#: ../../../src/common/doc/functions/node_network.rst:167
-msgid "We can create the topology of the new network"
-msgstr ""
-
-# 8944601cf6e343c09dce0bf706960a8c
-#: ../../../src/common/doc/functions/node_network.rst:185
-msgid "Now let's analyze the new topology"
-msgstr ""
-
-# 8a596982abe141b4a1925e35e1db79a3
-#: ../../../src/common/doc/functions/node_network.rst:211
-msgid "Images"
-msgstr ""
-
-# 960ada27fdd34c3dbfb61f10e5feba5f
-#: ../../../src/common/doc/functions/node_network.rst:244
-msgid "Comparing the results"
-msgstr ""
-
-# 8bbf24ce7c7e42f5a20e2a8d89e04c36
-#: ../../../src/common/doc/functions/node_network.rst:246
-msgid "Comparing with the Analysis in the original edge_table, we see that."
-msgstr ""
-
-# a3503fcd45dd4095b55e814ab842c829
-#: ../../../src/common/doc/functions/node_network.rst:249
-msgid "Before"
-msgstr ""
-
-# dfb592f8bd4e4572bbda7700558b3e93
-#: ../../../src/common/doc/functions/node_network.rst:249
-msgid "After"
-msgstr ""
-
-# dde3349cc54e4b94afb37800f2a163f5
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "Table name"
-msgstr ""
-
-# f672bf7770e8488fbe5ea1fbd13d7ac9
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "edge_table"
-msgstr ""
-
-# fbe3a7f491d4488085062b1fb783b357
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "edge_table_noded"
-msgstr ""
-
-# adaa5d5eca664ecb9d20315adfd329b4
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "Fields"
-msgstr ""
-
-# ebcf10a104ba4d7eaae546ec13365142
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "All original fields"
-msgstr ""
-
-# be45b275890a4aa8a6d624b6f87774d0
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "Has only basic fields to do a topology analysis"
-msgstr ""
-
-# 92f3a885bad349d6b5f9ef2345cb905f
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Dead ends"
-msgstr ""
-
-# 40a53c9b632b40a6a81f9277c11765b1
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Edges with 1 dead end: 1,6,24"
-msgstr ""
-
-# 709cbda3addd4b32b9b267d9ceafdb4f
-#: ../../../src/common/doc/functions/node_network.rst:256
-msgid "Edges with 2 dead ends 17,18"
-msgstr ""
-
-# d0de891ebf004a148c2bcd4510d81064
-#: ../../../src/common/doc/functions/node_network.rst:258
-msgid ""
-"Edge 17's right node is a dead end because there is no other edge sharing "
-"that same node. (cnt=1)"
-msgstr ""
-
-# 57918afd2f0445cea564eba267fa8c37
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
-msgstr ""
-
-# ff6cb3034ea345c89df6d718108fd2bc
-#: ../../../src/common/doc/functions/node_network.rst:262
-msgid "Isolated segments"
-msgstr ""
-
-# b958862fe349475ca7c2b38bbb40663b
-#: ../../../src/common/doc/functions/node_network.rst:262
-msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
-msgstr ""
-
-# 8d0bda0399694c6d8677fa928bdab03c
-#: ../../../src/common/doc/functions/node_network.rst:263
-msgid "No Isolated segments"
-msgstr ""
-
-# ac2cf90e5b2a4e75bb94688d6e4ec553
-#: ../../../src/common/doc/functions/node_network.rst:263
-msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
-msgstr ""
-
-# 287c00afc68a4e869f912d7b2ddabefb
-#: ../../../src/common/doc/functions/node_network.rst:264
-msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
-msgstr ""
-
-# bab6a1bf5c10447caa298e9247f3bf2a
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid "Gaps"
-msgstr ""
-
-# c23ab3c2eff44ddf9ddb0bee4f90197a
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid ""
-"There is a gap between edge 17 and 14 because edge 14 is near to the right "
-"node of edge 17"
-msgstr ""
-
-# 89fabbc2722649c9adf098ea0f9dde1c
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid ""
-"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
-"tolerance value was taken in account"
-msgstr ""
-
-# c04f1c8028d846aeb593cd2389ee45da
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid "Intersections"
-msgstr ""
-
-# db3e94db58d0422bbfbdb83ba509d29e
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid "Edges 13 and 18 were intersecting"
-msgstr ""
-
-# 50736f49b59e4f7fa0c66f0e979d80bd
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid ""
-"Edges were segmented, So, now in the interection's point there is a node and"
-" the following edges share it: 13-1 13-2 18-1 18-2"
-msgstr ""
-
-# f39fa18acedb410fb827e37f226da00b
-#: ../../../src/common/doc/functions/node_network.rst:275
-msgid ""
-"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
-"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
-"with tho following steps:"
-msgstr ""
-
-# 40eb8df52b5649ddb2401cc0c9fe4e7c
-#: ../../../src/common/doc/functions/node_network.rst:277
-msgid ""
-"Add a column old_id into edge_table, this column is going to keep track the "
-"id of the original edge"
-msgstr ""
-
-# 91eb1db3098b4353be78c9aef064421e
-#: ../../../src/common/doc/functions/node_network.rst:278
-msgid ""
-"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
-msgstr ""
-
-# 2158163aaac748eca84fcd78a42e9b3a
-#: ../../../src/common/doc/functions/node_network.rst:291
-msgid "We recreate the topology:"
-msgstr ""
-
-# 03050935f9bb42a69dfe42e303e8f164
-#: ../../../src/common/doc/functions/node_network.rst:311
-msgid ""
-"To get the same analysis results as the topology of edge_table_noded, we do "
-"the following query:"
-msgstr ""
-
-# bcefb46820504921aa7a3260a988c26d
-#: ../../../src/common/doc/functions/node_network.rst:338
-msgid ""
-"To get the same analysis results as the original edge_table, we do the "
-"following query:"
-msgstr ""
-
-# 376c4a5e033d42b3ba4e3c3ec018f8e8
-#: ../../../src/common/doc/functions/node_network.rst:363
-msgid ""
-"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
-"is an under pass and there is also a street level juction, and the same "
-"happens with edges 17 and 13."
-msgstr ""
-
-# 26fbd57b79324bd08ef2c5ee3579831e
-#: ../../../src/common/doc/functions/node_network.rst:390
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 9df40faa94c64db5b2256f265be6e4d4
-#: ../../../src/common/doc/functions/node_network.rst:392
-msgid ""
-":ref:`topology` for an overview of a topology for routing algorithms. "
-":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
-":ref:`pgr_create_topology` to create a topology based on the geometry. "
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/point_to_id.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/point_to_id.po
deleted file mode 100644
index 4291181..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/point_to_id.po
+++ /dev/null
@@ -1,104 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-04 04:21+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 81e0b58a4b464395b3661da85edfaa90
-#: ../../../src/common/doc/functions/point_to_id.rst:13
-msgid "pgr_pointToId - Inserts point into a vertices table"
-msgstr ""
-
-# 9bebf9f4ff2b43a39470ee284698fa33
-#: ../../../src/common/doc/functions/point_to_id.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 8fcf7e9e33b448b982f7111389a7e412
-#: ../../../src/common/doc/functions/point_to_id.rst:22
-msgid "``pgr_pointToId`` — Inserts a point into a temporary vertices table."
-msgstr ""
-
-# 1ebe04b75e4444e2970f12bf667f07fa
-#: ../../../src/common/doc/functions/point_to_id.rst:26
-msgid ""
-"This function should not be used directly. Use :ref:`pgr_createTopology "
-"<pgr_create_topology>` instead."
-msgstr ""
-
-# 8c3303cb3d73446795471f411d835691
-#: ../../../src/common/doc/functions/point_to_id.rst:30
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# e17d53fea1674ad692e9d65129c04e5d
-#: ../../../src/common/doc/functions/point_to_id.rst:32
-msgid ""
-"Inserts a point into a temporary vertices table, and returns an id of a new "
-"point or an existing point. Tolerance is the minimal distance between "
-"existing points and the new point to create a new point."
-msgstr ""
-
-# 4b067a809bbd4210baf154f274aab5f0
-#: ../../../src/common/doc/functions/point_to_id.rst:40
-msgid "Description"
-msgstr "Beschreibung"
-
-# de6b0b7b7ae44691a60a709a1245e12c
-#: ../../../src/common/doc/functions/point_to_id.rst:42
-msgid "``geometry`` of the existing point"
-msgstr ""
-
-# e05906cd2cd545eead6a6a277d441ea4
-#: ../../../src/common/doc/functions/point_to_id.rst:43
-msgid ""
-"``float8`` snapping tolerance of disconnected edges (in projection unit)"
-msgstr ""
-
-# 7eb52d95126d47efbf485a1397785c34
-#: ../../../src/common/doc/functions/point_to_id.rst:45
-msgid "Returns point id (``bigint``) of a new or existing point."
-msgstr ""
-
-# 78ed162b771d42c1bdadb75ea1806c17
-#: ../../../src/common/doc/functions/point_to_id.rst:49
-msgid "History"
-msgstr "Geschichte"
-
-# 932b962d76c14946b54db15e77b3c90d
-#: ../../../src/common/doc/functions/point_to_id.rst:50
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-# c1b2ccd7df20427c88dcf1ebf4b06d82
-#: ../../../src/common/doc/functions/point_to_id.rst:54
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 4dafa239ff7648c2952a2d3ee70671bf
-#: ../../../src/common/doc/functions/point_to_id.rst:56
-msgid ":ref:`pgr_create_topology`"
-msgstr ""
-
-# 8100a50d0b5f4b0cab8d62645becc674
-#: ../../../src/common/doc/functions/point_to_id.rst:57
-msgid ":ref:`topology`"
-msgstr ""
-
-# 86ad35d9d3ce44a696b6dc61c466e04e
-#: ../../../src/common/doc/functions/point_to_id.rst:58
-msgid ":ref:`pgr_node_network`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/quote_ident.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/quote_ident.po
deleted file mode 100644
index d6ac66e..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/quote_ident.po
+++ /dev/null
@@ -1,89 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-04 04:21+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 59a19788e4ba478cb0d046fc07c08179
-#: ../../../src/common/doc/functions/quote_ident.rst:13
-msgid "pgr_quote_ident - Quote table name with Schema Component"
-msgstr ""
-
-# 61a86f593d04476692b89157939b8a1e
-#: ../../../src/common/doc/functions/quote_ident.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 7ae4a51cc62143058b829f9317d4b282
-#: ../../../src/common/doc/functions/quote_ident.rst:22
-msgid ""
-"``pgr_quote_ident`` — Quote table name with or without schema component."
-msgstr ""
-
-# d09400822917498ab08038e0453f93a2
-#: ../../../src/common/doc/functions/quote_ident.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 02e534c6d94e4d7fa366eb30dfd82602
-#: ../../../src/common/doc/functions/quote_ident.rst:28
-msgid ""
-"Function to split a string on ``.`` characters and then quote the components"
-" as postgres identifiers and then join them back together with ``.`` "
-"characters. Multile ``.`` will get collapsed into a single ``.``, so "
-"``schema...table`` till get returned as ``schema.\"table\"`` and "
-"``Schema.table`` becomes ``\"Schema\".\"table\"``."
-msgstr ""
-
-# 70b63ad008b14b5cbd540f478c596e97
-#: ../../../src/common/doc/functions/quote_ident.rst:37
-msgid "Description"
-msgstr "Beschreibung"
-
-# 76375d16726e4e8a8c4e02b54bd4b33a
-#: ../../../src/common/doc/functions/quote_ident.rst:39
-msgid "``text`` table name with or without schema component"
-msgstr ""
-
-# d8548a7bfe3542b28f614894ba6f4b84
-#: ../../../src/common/doc/functions/quote_ident.rst:41
-msgid "Returns table name with or without schema as ``text``."
-msgstr ""
-
-# ebc95d6ee53c42f29aa6a18a134d4d20
-#: ../../../src/common/doc/functions/quote_ident.rst:45
-msgid "History"
-msgstr "Geschichte"
-
-# 6bea52def68e4f05ae56873b8d4f9d1c
-#: ../../../src/common/doc/functions/quote_ident.rst:46
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 21e9cb20b57e4b4681d4e04d5f083d2a
-#: ../../../src/common/doc/functions/quote_ident.rst:50
-msgid "Examples"
-msgstr "Beispiele"
-
-# 5e3a344a21eb45bfba3e880ae3981a30
-#: ../../../src/common/doc/functions/quote_ident.rst:77
-msgid "See Also"
-msgstr "Siehe auch"
-
-# b4ee52cbb2b74bb59b22b1802748f96d
-#: ../../../src/common/doc/functions/quote_ident.rst:79
-msgid "[TBD]"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/version.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/version.po
deleted file mode 100644
index bf38a21..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/version.po
+++ /dev/null
@@ -1,113 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-04 04:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# dbab41817c8a46459e8f33cf684a7afb
-#: ../../../src/common/doc/functions/version.rst:13
-msgid "pgr_version - Get version information"
-msgstr ""
-
-# 19cd8fb76f754d898f75659f97628007
-#: ../../../src/common/doc/functions/version.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 5531935ef2384b709c4f1d81ddcdf15c
-#: ../../../src/common/doc/functions/version.rst:22
-msgid "``pgr_version`` — Query for pgRouting version information."
-msgstr ""
-
-# 52175fb13b944970989d3ef4a23a7b66
-#: ../../../src/common/doc/functions/version.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 14783f07374f4ccdaa53515b95c17943
-#: ../../../src/common/doc/functions/version.rst:28
-msgid "Returns a table with pgRouting version information."
-msgstr ""
-
-# 6d5995ab278d476d80f54ab15b8af686
-#: ../../../src/common/doc/functions/version.rst:36
-msgid "Description"
-msgstr "Beschreibung"
-
-# b4baa0103a55431abaa586f16230af8c
-#: ../../../src/common/doc/functions/version.rst:38
-msgid "Returns a table with:"
-msgstr ""
-
-# 7d8a75cf72b840b39e0eea6140a5839d
-#: ../../../src/common/doc/functions/version.rst:40
-msgid "``varchar`` pgRouting version"
-msgstr ""
-
-# 2af5168bce0a4b03bf2b097d3099c850
-#: ../../../src/common/doc/functions/version.rst:41
-msgid "``varchar`` Git tag of pgRouting build"
-msgstr ""
-
-# b4444b51e41549b399751bcba194a8a8
-#: ../../../src/common/doc/functions/version.rst:42
-msgid "``varchar`` Git hash of pgRouting build"
-msgstr ""
-
-# 6737b5df55e94bb185f64d0de3389f3e
-#: ../../../src/common/doc/functions/version.rst:43
-msgid "``varchar`` Git branch of pgRouting build"
-msgstr ""
-
-# e5b735559b2949b09899e982d6f2ecf3
-#: ../../../src/common/doc/functions/version.rst:44
-msgid "``varchar`` Boost version"
-msgstr ""
-
-# 9042ea468aba4c4490b7124bbf14aacb
-#: ../../../src/common/doc/functions/version.rst:48
-msgid "History"
-msgstr "Geschichte"
-
-# 3829660b5485491083028df2cb267d03
-#: ../../../src/common/doc/functions/version.rst:49
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 8638cdf8594940cbad096c9ac3d261ad
-#: ../../../src/common/doc/functions/version.rst:53
-msgid "Examples"
-msgstr "Beispiele"
-
-# d80877f2810741ada5737305d484de11
-#: ../../../src/common/doc/functions/version.rst:55
-msgid "Query for full version string"
-msgstr ""
-
-# 2ff90cee91e644fab554650cc24bd3bf
-#: ../../../src/common/doc/functions/version.rst:67
-msgid "Query for ``version`` and ``boost`` attribute"
-msgstr ""
-
-# 6c3a1c332dc54ea2a01d81c5f5f9dcc1
-#: ../../../src/common/doc/functions/version.rst:80
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 1eeb4f68d3c342dbbadade6c52b87baf
-#: ../../../src/common/doc/functions/version.rst:82
-msgid ":ref:`pgr_versionless`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/versionless.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/versionless.po
deleted file mode 100644
index a994def..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/functions/versionless.po
+++ /dev/null
@@ -1,85 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-04 04:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f15b37fde8e64b508893630a0291dc6a
-#: ../../../src/common/doc/functions/versionless.rst:13
-msgid "pgr_versionless - Compare version numbers"
-msgstr ""
-
-# cd0dcc3f3489468ab55c89598715d895
-#: ../../../src/common/doc/functions/versionless.rst:20
-msgid "Name"
-msgstr "Name"
-
-# e2f0eb00eca142c8bc7d71b317604c7e
-#: ../../../src/common/doc/functions/versionless.rst:22
-msgid "``pgr_version`` — Compare two version numbers and return if smaller."
-msgstr ""
-
-# d85cf15bf8894e158945855624a422f5
-#: ../../../src/common/doc/functions/versionless.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# ed2cb6f5c03645b3ab2a296d062c1eb9
-#: ../../../src/common/doc/functions/versionless.rst:28
-msgid ""
-"Returns ``true`` if the first version number is smaller than the second "
-"version number. Otherwise returns ``false``."
-msgstr ""
-
-# a11f675500e140ae997cdb4f167d2da4
-#: ../../../src/common/doc/functions/versionless.rst:36
-msgid "Description"
-msgstr "Beschreibung"
-
-# 7d1ac8fa4fce4362965d8587a3cd7099
-#: ../../../src/common/doc/functions/versionless.rst:38
-msgid "``text`` first version number"
-msgstr ""
-
-# 1d8a5a36a0fa4da19892193a11578a08
-#: ../../../src/common/doc/functions/versionless.rst:39
-msgid "``text`` second version number"
-msgstr ""
-
-# a32770a22cf849cb96bd78825f332825
-#: ../../../src/common/doc/functions/versionless.rst:43
-msgid "History"
-msgstr "Geschichte"
-
-# 14ef379da17a48389cb627817c173253
-#: ../../../src/common/doc/functions/versionless.rst:44
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 7a3d2290bca342b79b4105e7aee330b0
-#: ../../../src/common/doc/functions/versionless.rst:48
-msgid "Examples"
-msgstr "Beispiele"
-
-# ca2f13a6ce4444258be7f46d40c8bd2a
-#: ../../../src/common/doc/functions/versionless.rst:61
-msgid "See Also"
-msgstr "Siehe auch"
-
-# a621baf581ff4ba8b4b03d3481d5a660
-#: ../../../src/common/doc/functions/versionless.rst:63
-msgid ":ref:`pgr_version`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/index.po
deleted file mode 100644
index 8937a94..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/index.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-02 14:40+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 78df021b36a0428cab8a950fb0bda859
-#: ../../../src/common/doc/index.rst:13
-msgid "Common Functions"
-msgstr "Häufig verwendete Funktionen"
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/legacy.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/legacy.po
deleted file mode 100644
index ec4be6e..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/legacy.po
+++ /dev/null
@@ -1,67 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-02 17:00+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 7e98fba52c6f402c811f8c50dd811f39
-#: ../../../src/common/doc/legacy.rst:13
-msgid "Legacy Functions"
-msgstr "Ältere Funktionen"
-
-# 18b051582e6742be8a3737391d4676ad
-#: ../../../src/common/doc/legacy.rst:15
-msgid ""
-"pgRouting 2.0 release has total restructured the function naming and "
-"obsoleted many of the functions that were available in the 1.x releases. "
-"While we realize that this may inconvenience our existing users, we felt "
-"this was needed for the long term viability of the project to be more "
-"response to our users and to be able to add new functionality and test "
-"existing functionality."
-msgstr ""
-
-# cf6d9479ec0b4eb6b0607f3302df5dca
-#: ../../../src/common/doc/legacy.rst:17
-msgid ""
-"We have made a minimal effort to save most of these function and distribute "
-"with the release in a file ``pgrouting_legacy.sql`` that is not part of the "
-"pgrouting extension and is not supported. If you can use these functions "
-"that is great. We have not tested any of these functions so if you find "
-"issues and want to post a pull request or a patch to help other users that "
-"is fine, but it is likely this file will be removed in a future release and "
-"we strongly recommend that you convert your existing code to use the new "
-"documented and supported functions."
-msgstr ""
-
-# 82da52e7fec44c24956e90636a8a9355
-#: ../../../src/common/doc/legacy.rst:19
-msgid ""
-"The follow is a list of TYPEs, CASTs and FUNCTION included in the "
-"``pgrouting_legacy.sql`` file. The list is provide as a convenience but "
-"these functions are deprecated, not supported, and probably will need some "
-"changes to get them to work."
-msgstr ""
-
-# 7ae0da52fff04aaaaec8fd9b91d3b7b0
-#: ../../../src/common/doc/legacy.rst:23
-msgid "TYPEs & CASTs"
-msgstr "TYPEs & CASTs"
-
-# 8e73926e03514dff813a00fbf7d202e0
-#: ../../../src/common/doc/legacy.rst:34
-msgid "FUNCTIONs"
-msgstr "FUNCTIONs"
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/types.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/types.po
deleted file mode 100644
index 3a38202..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/types.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 14:40+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# a647839f49f94a9997479367dc35d13f
-#: ../../../src/common/doc/types.rst:13
-msgid "Custom Types"
-msgstr "Benutzerdefinierte Typen"
-
-# f00f6611879f4afd961586e955284a41
-#: ../../../src/common/doc/types.rst:15
-msgid ""
-"The following are commonly used data types for some of the pgRouting "
-"functions."
-msgstr "Im folgenden sind häufig verwendete Datentypen für einige pgRouting Funktionen gelistet."
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/types/cost_result.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/types/cost_result.po
deleted file mode 100644
index 0f16831..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/types/cost_result.po
+++ /dev/null
@@ -1,114 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 575fa6fd8a1842c68aba9825683b178d
-#: ../../../src/common/doc/types/cost_result.rst:13
-msgid "pgr_costResult[]"
-msgstr ""
-
-# 3b55f2f3cdc24995bd590e235062c389
-# 1d4bd884218342d6a7ca7ae79998c3a0
-#: ../../../src/common/doc/types/cost_result.rst:20
-#: ../../../src/common/doc/types/cost_result.rst:54
-msgid "Name"
-msgstr "Name"
-
-# 691ba9180a9f4854922720a03e1db3e0
-#: ../../../src/common/doc/types/cost_result.rst:22
-msgid ""
-"``pgr_costResult[]`` — A set of records to describe a path result with cost "
-"attribute."
-msgstr ""
-
-# 4bc0f98e83fc482daf119d02f3ab4386
-# b80ec90ac4244e82a1aa8f7e58b78921
-#: ../../../src/common/doc/types/cost_result.rst:26
-#: ../../../src/common/doc/types/cost_result.rst:60
-msgid "Description"
-msgstr "Beschreibung"
-
-# 023a9b6d62474dbdbb4d587b192099c4
-# 8e1c61381d6f47909ea0830da8a4740c
-#: ../../../src/common/doc/types/cost_result.rst:38
-#: ../../../src/common/doc/types/cost_result.rst:73
-msgid "sequential ID indicating the path order"
-msgstr ""
-
-# 98a23fe6530d43418558cdd8be417a26
-# 8c3701ae807d4738b8bbe72260f4c476
-#: ../../../src/common/doc/types/cost_result.rst:39
-#: ../../../src/common/doc/types/cost_result.rst:75
-msgid "generic name, to be specified by the function, typically the node id"
-msgstr ""
-
-# f4abd64c5dea4cda97490766f42a395c
-# 1be5c24bdc684ed1a182e9e2b0ab2343
-#: ../../../src/common/doc/types/cost_result.rst:40
-#: ../../../src/common/doc/types/cost_result.rst:76
-msgid "generic name, to be specified by the function, typically the edge id"
-msgstr ""
-
-# 0b4a362ff97d481cafd2c0328ad1f715
-# 8e11a66126844a1682d4e4c84166794d
-#: ../../../src/common/doc/types/cost_result.rst:41
-#: ../../../src/common/doc/types/cost_result.rst:77
-msgid "cost attribute"
-msgstr ""
-
-# 7e74e200db1b40e1a5231037b2e9b993
-#: ../../../src/common/doc/types/cost_result.rst:47
-msgid "pgr_costResult3[] - Multiple Path Results with Cost"
-msgstr ""
-
-# 307f0248b6c54a71bfc205bb2270b5ce
-#: ../../../src/common/doc/types/cost_result.rst:56
-msgid ""
-"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
-" attribute."
-msgstr ""
-
-# 13465c99a9fb49ebab1d1852e6c61aab
-#: ../../../src/common/doc/types/cost_result.rst:74
-msgid "generic name, to be specified by the function, typically the path id"
-msgstr ""
-
-# ac46c731c85d4d358a763bc1268ef510
-#: ../../../src/common/doc/types/cost_result.rst:81
-msgid "History"
-msgstr "Geschichte"
-
-# 6bc9329d908f474bbcd380272dae671d
-#: ../../../src/common/doc/types/cost_result.rst:82
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 7e5f0c1b76c349ce940c19b2312cc2ec
-#: ../../../src/common/doc/types/cost_result.rst:83
-msgid "Replaces ``path_result``"
-msgstr ""
-
-# 28df9e1fa19b49f9bb57710715c52fcb
-#: ../../../src/common/doc/types/cost_result.rst:87
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 21432e8842c1490ba3a7825f4b4e57bb
-#: ../../../src/common/doc/types/cost_result.rst:89
-msgid ":ref:`introduction`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/types/geom_result.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/types/geom_result.po
deleted file mode 100644
index 615f0dc..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/types/geom_result.po
+++ /dev/null
@@ -1,82 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# baeae55a13de4766b42a9f43c6f8caaf
-#: ../../../src/common/doc/types/geom_result.rst:13
-msgid "pgr_geomResult[]"
-msgstr ""
-
-# 4fc9eadff47c4a24baa096c8c667c469
-#: ../../../src/common/doc/types/geom_result.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 03beb686e4ec49e08cd6f1f0f5e03339
-#: ../../../src/common/doc/types/geom_result.rst:22
-msgid ""
-"``pgr_geomResult[]`` — A set of records to describe a path result with "
-"geometry attribute."
-msgstr ""
-
-# fd9c91caacdf4a2fb1c186c45e1d5525
-#: ../../../src/common/doc/types/geom_result.rst:26
-msgid "Description"
-msgstr "Beschreibung"
-
-# c00f6b668c744c7d822d2d2155e76b7a
-#: ../../../src/common/doc/types/geom_result.rst:38
-msgid "sequential ID indicating the path order"
-msgstr ""
-
-# 5782feff61f84fd4b3130a80b1abd7a9
-# 69c0e9623b4d41669a2601517d1563d2
-#: ../../../src/common/doc/types/geom_result.rst:39
-#: ../../../src/common/doc/types/geom_result.rst:40
-msgid "generic name, to be specified by the function"
-msgstr ""
-
-# c837b15d4460475996b2f7bac8b14076
-#: ../../../src/common/doc/types/geom_result.rst:41
-msgid "geometry attribute"
-msgstr ""
-
-# cf5503504b26427b800efddbc1098b64
-#: ../../../src/common/doc/types/geom_result.rst:45
-msgid "History"
-msgstr "Geschichte"
-
-# 4e474c2cf69748c680853e0505ce4773
-#: ../../../src/common/doc/types/geom_result.rst:46
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# f4d42016a50f43438838421dfb361835
-#: ../../../src/common/doc/types/geom_result.rst:47
-msgid "Replaces ``geoms``"
-msgstr ""
-
-# 0075486d62f84298b41797b5789d377a
-#: ../../../src/common/doc/types/geom_result.rst:51
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 5a190ec8601a4a919a058395614d7db5
-#: ../../../src/common/doc/types/geom_result.rst:53
-msgid ":ref:`introduction`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/types/index.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/types/index.po
deleted file mode 100644
index c3302c7..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/types/index.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 22:34\n"
-"PO-Revision-Date: 2013-09-24 03:35+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 31af4730c6e74131952f077a8cec876f
-#: ../../../src/common/doc/types/index.rst:13
-msgid "pgRouting Data Types"
-msgstr ""
-
-# da2f6a8846b5476ea16852a5dc229cc4
-#: ../../../src/common/doc/types/index.rst:15
-msgid ""
-"The following are commonly used data types for some of the pgRouting "
-"functions."
-msgstr "Im folgenden sind häufig verwendete Datentypen für einige pgRouting Funktionen gelistet."
-
-# a9b85e2084f8478fa35c1379a650108b
-#: ../../../src/common/doc/types/index.rst:17
-msgid ""
-":ref:`type_cost_result` - A set of records to describe a path result with "
-"cost attribute."
-msgstr ""
-
-# b982ceede0fd48afa63a086c6978fd2e
-#: ../../../src/common/doc/types/index.rst:18
-msgid ""
-":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe "
-"a path result with cost attribute."
-msgstr ""
-
-# 913c41ce7bb44b80869c181df3560f3d
-#: ../../../src/common/doc/types/index.rst:19
-msgid ""
-":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a "
-"path result with geometry attribute."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/end_point.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/end_point.po
deleted file mode 100644
index f48a6d1..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/end_point.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 608ee0c4d0644bdba6e3dc233e2143a7
-#: ../../../src/common/doc/utilities/end_point.rst:13
-msgid "pgr_endPoint"
-msgstr ""
-
-# 8518d0c13dcc4cb9b4a6eb5bd83e8d6e
-#: ../../../src/common/doc/utilities/end_point.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 3660b4422cfa4aaea41cf4b4e91164ee
-#: ../../../src/common/doc/utilities/end_point.rst:22
-msgid ""
-"``pgr_endPoint`` — Returns an end point of a (multi)linestring geometry."
-msgstr ""
-
-# 549e2d553af74e0bba5a2833eafa7983
-#: ../../../src/common/doc/utilities/end_point.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-# d2cdf35b795f4fcfbfc9c84a2c36387b
-#: ../../../src/common/doc/utilities/end_point.rst:28
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 180a778d767b496986ed060d48f0de04
-# 14f173f6f91f488b940887c452049824
-#: ../../../src/common/doc/utilities/end_point.rst:30
-#: ../../../src/common/doc/utilities/end_point.rst:44
-msgid ""
-"Returns the geometry of the end point of the first LINESTRING of ``geom``."
-msgstr ""
-
-# c8cfaed54e00467bba188637f3d25e04
-#: ../../../src/common/doc/utilities/end_point.rst:38
-msgid "Description"
-msgstr "Beschreibung"
-
-# b7a5d14354644a79aaa532e44543b0f1
-#: ../../../src/common/doc/utilities/end_point.rst:41
-msgid "Parameters"
-msgstr "Parameter"
-
-# 01b0d917d9534f74885248e0be35ca6d
-#: ../../../src/common/doc/utilities/end_point.rst:42
-msgid "``geometry`` Geometry of a MULTILINESTRING or LINESTRING."
-msgstr ""
-
-# a1951e42b2164de2b73d7ecde1bc5252
-#: ../../../src/common/doc/utilities/end_point.rst:49
-msgid "History"
-msgstr "Geschichte"
-
-# fd2421f2ca2945c4ad59395a0fa9cb90
-#: ../../../src/common/doc/utilities/end_point.rst:50
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 031cd30124a9491e80778dce1c6d77ab
-#: ../../../src/common/doc/utilities/end_point.rst:55
-msgid "See Also"
-msgstr "Siehe auch"
-
-# f17f7b08a35d44098381d1c280756f49
-#: ../../../src/common/doc/utilities/end_point.rst:57
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 68b294268f37462fb09eb605267d0686
-#: ../../../src/common/doc/utilities/end_point.rst:58
-msgid ":ref:`pgr_start_point` to get the start point of a (multi)linestring."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/get_column_name.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/get_column_name.po
deleted file mode 100644
index eeb0a3b..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/get_column_name.po
+++ /dev/null
@@ -1,140 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f62e871185dd40c2a9e8b7cec3ea97b9
-#: ../../../src/common/doc/utilities/get_column_name.rst:13
-msgid "pgr_getColumnName"
-msgstr ""
-
-# 0d4e05a54bf944d2a712bcee9d7897c4
-#: ../../../src/common/doc/utilities/get_column_name.rst:20
-msgid "Name"
-msgstr "Name"
-
-# c1e5f5dde2804946bee1804968cb4efc
-#: ../../../src/common/doc/utilities/get_column_name.rst:22
-msgid ""
-"``pgr_getColumnName`` — Retrieves the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ""
-
-# 89a0f81382ca4dd4807320cd56be21bb
-#: ../../../src/common/doc/utilities/get_column_name.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# a6025211521149deb893b8e059385c6b
-#: ../../../src/common/doc/utilities/get_column_name.rst:27
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# e6dc3534289949caa3eebca95dbe364e
-#: ../../../src/common/doc/utilities/get_column_name.rst:29
-msgid "Returns a ``text`` contining the registered name of the column."
-msgstr ""
-
-# ef6704e3345e4be4a51fd144fbfc5d82
-#: ../../../src/common/doc/utilities/get_column_name.rst:37
-msgid "Description"
-msgstr "Beschreibung"
-
-# de7acd82e1244d8ba20da3bae0d95f22
-#: ../../../src/common/doc/utilities/get_column_name.rst:39
-msgid "Parameters"
-msgstr "Parameter"
-
-# 0b9f663d5b0e4f18a4bda0b996e55470
-#: ../../../src/common/doc/utilities/get_column_name.rst:41
-msgid "``text`` table name with or without schema component."
-msgstr ""
-
-# 34e350e22e5a495aa831ca55d080899a
-#: ../../../src/common/doc/utilities/get_column_name.rst:42
-msgid "``text`` column name to be retrived."
-msgstr ""
-
-# e495d55a75424870ba29867eb248cf4d
-#: ../../../src/common/doc/utilities/get_column_name.rst:44
-msgid "Returns"
-msgstr ""
-
-# c1394725601143b081216fe27794fbe6
-#: ../../../src/common/doc/utilities/get_column_name.rst:46
-msgid "``text`` containing the registered name of the column."
-msgstr ""
-
-# ec0c3eb922f44a818f1724026f43c7da
-#: ../../../src/common/doc/utilities/get_column_name.rst:47
-msgid "``NULL`` when :"
-msgstr ""
-
-# d3cb598bdcdf4349837225c6e9efa756
-#: ../../../src/common/doc/utilities/get_column_name.rst:49
-msgid "The table “tab” is not found or"
-msgstr ""
-
-# 6d27bb1e405343a893db971fe1cee8b7
-#: ../../../src/common/doc/utilities/get_column_name.rst:50
-msgid ""
-"Column “col” is not found in table “tab” in the postgres administration "
-"tables."
-msgstr ""
-
-# f56b94dfc7574beba7ee2b42199e9c27
-#: ../../../src/common/doc/utilities/get_column_name.rst:53
-msgid "History"
-msgstr "Geschichte"
-
-# 57eede78e2024b059d7e09968747a720
-#: ../../../src/common/doc/utilities/get_column_name.rst:54
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# efbc409d37be4e30a8edf913a4d89664
-#: ../../../src/common/doc/utilities/get_column_name.rst:58
-msgid "Examples"
-msgstr "Beispiele"
-
-# 741d466c28fb47feb64d7ef7593275e7
-#: ../../../src/common/doc/utilities/get_column_name.rst:76
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# acb3053630ab458d93853aa31aad9ade
-#: ../../../src/common/doc/utilities/get_column_name.rst:80
-msgid "See Also"
-msgstr "Siehe auch"
-
-# e54ecee9b6744650b79cb07b0c0274dd
-#: ../../../src/common/doc/utilities/get_column_name.rst:82
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 9143b02cdd264a818a9edda19a0e7ce7
-#: ../../../src/common/doc/utilities/get_column_name.rst:83
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column."
-msgstr ""
-
-# 11630fb324eb4a80bdfffb972707478d
-#: ../../../src/common/doc/utilities/get_column_name.rst:84
-msgid ""
-":ref:`pgr_get_table_name` to retrieve the name of the table as is stored in "
-"the postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/get_table_name.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/get_table_name.po
deleted file mode 100644
index aced45c..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/get_table_name.po
+++ /dev/null
@@ -1,151 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 95f0c2d0bb88448c8b72400e83c9f6f4
-#: ../../../src/common/doc/utilities/get_table_name.rst:13
-msgid "pgr_getTableName"
-msgstr ""
-
-# 68a49ae29d0e4036bda025f169e4f3f7
-#: ../../../src/common/doc/utilities/get_table_name.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 8f9480f595c9426f945620d8b5977b86
-#: ../../../src/common/doc/utilities/get_table_name.rst:22
-msgid ""
-"``pgr_getTableName`` — Retrieves the name of the column as is stored in the "
-"postgres administration tables."
-msgstr ""
-
-# c06c3bd3649a4e27af6f710e189ea071
-#: ../../../src/common/doc/utilities/get_table_name.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# 3285b01b587a4aac94ab9ee03a474ef7
-#: ../../../src/common/doc/utilities/get_table_name.rst:27
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# ecd7065df5e047ef8415f13acf653201
-#: ../../../src/common/doc/utilities/get_table_name.rst:29
-msgid ""
-"Returns a record containing the registered names of the table and of the "
-"schema it belongs to."
-msgstr ""
-
-# 9912cc30113340efa3e5e3ac408d3a3c
-#: ../../../src/common/doc/utilities/get_table_name.rst:37
-msgid "Description"
-msgstr "Beschreibung"
-
-# 787a57d13f8a48a289b545e5c5fc50d5
-#: ../../../src/common/doc/utilities/get_table_name.rst:39
-msgid "Parameters"
-msgstr "Parameter"
-
-# 3c523e72ddd74a10b3defc135e0a1fa1
-#: ../../../src/common/doc/utilities/get_table_name.rst:41
-msgid "``text`` table name with or without schema component."
-msgstr ""
-
-# bc51a86638e44b1b8d435a7fcec971e1
-#: ../../../src/common/doc/utilities/get_table_name.rst:43
-msgid "Returns"
-msgstr ""
-
-# a3da192f153341e484e7a1c973e77570
-#: ../../../src/common/doc/utilities/get_table_name.rst:47
-msgid "``text`` containing the registered name of the schema of table \"tab\"."
-msgstr ""
-
-# 77471087a83049e4924411216422cd8f
-#: ../../../src/common/doc/utilities/get_table_name.rst:49
-msgid "when the schema was not provided in \"tab\" the current schema is used."
-msgstr ""
-
-# f253b42e28a3413abcbeebd5a25fbb53
-# a25f490ebce344728e53d37057ded897
-#: ../../../src/common/doc/utilities/get_table_name.rst:51
-#: ../../../src/common/doc/utilities/get_table_name.rst:58
-msgid "``NULL`` when :"
-msgstr ""
-
-# ab062cff517a43b6b5a40e1090073265
-# 49a4ab8abced47adaf11ea7b321f06b9
-#: ../../../src/common/doc/utilities/get_table_name.rst:53
-#: ../../../src/common/doc/utilities/get_table_name.rst:60
-msgid "The schema is not found in the postgres administration tables."
-msgstr ""
-
-# 19d2a93e6d45419d89974c286d1347f3
-#: ../../../src/common/doc/utilities/get_table_name.rst:57
-msgid "``text`` containing the registered name of the table \"tab\"."
-msgstr ""
-
-# 7c7d80132bbc4693a79fbb1bb32a804d
-#: ../../../src/common/doc/utilities/get_table_name.rst:61
-msgid ""
-"The table \"tab\" is not registered under the schema ``sname`` in the "
-"postgres administration tables"
-msgstr ""
-
-# fe048e6d68984dfb9e8d91f72f99f65a
-#: ../../../src/common/doc/utilities/get_table_name.rst:65
-msgid "History"
-msgstr "Geschichte"
-
-# 0ac3887a0f0642ca8bf6c6fa12f497bb
-#: ../../../src/common/doc/utilities/get_table_name.rst:66
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# fbd75b0146ff4f9595156794c4ebd6fd
-#: ../../../src/common/doc/utilities/get_table_name.rst:70
-msgid "Examples"
-msgstr "Beispiele"
-
-# 3792394a3a344c4493db40c2d04b5e2d
-#: ../../../src/common/doc/utilities/get_table_name.rst:95
-msgid "The examples use the :ref:`sampledata` network."
-msgstr ""
-
-# 10229dc5fd6545bdb875c9885f090618
-#: ../../../src/common/doc/utilities/get_table_name.rst:99
-msgid "See Also"
-msgstr "Siehe auch"
-
-# c24e1b3593b44343b2e4c86e06b4cbb2
-#: ../../../src/common/doc/utilities/get_table_name.rst:101
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 830f93a843b145ebb35db5cf5de99e00
-#: ../../../src/common/doc/utilities/get_table_name.rst:102
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column."
-msgstr ""
-
-# e731438ed94a48a0b26ea5223b564393
-#: ../../../src/common/doc/utilities/get_table_name.rst:103
-msgid ""
-":ref:`pgr_get_table_name` to retrieve the name of the table as is stored in "
-"the postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/index.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/index.po
deleted file mode 100644
index 01a91b9..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/index.po
+++ /dev/null
@@ -1,90 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:14+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# e262455eaf304db884c939d3a27905d7
-#: ../../../src/common/doc/utilities/index.rst:13
-msgid "Developers's Functions"
-msgstr "Funktionen für Entwickler"
-
-# 6ebf2b3b104d4fababace44710277924
-#: ../../../src/common/doc/utilities/index.rst:15
-msgid "Functions to help you develop a wrapper or a recipe"
-msgstr ""
-
-# 0be37c4f2fa144fbb3b4a976a946317a
-#: ../../../src/common/doc/utilities/index.rst:17
-msgid ""
-":ref:`pgr_get_column_name` - to get the name of the column as is stored in "
-"the postgres administration tables."
-msgstr ""
-
-# 9f513d4551d54509ac679e98aff1a731
-#: ../../../src/common/doc/utilities/index.rst:18
-msgid ""
-":ref:`pgr_get_table_name` - to retrieve the name of the table as is stored "
-"in the postgres administration tables."
-msgstr ""
-
-# 20e81f559b1f4f56af56463e06b47d70
-#: ../../../src/common/doc/utilities/index.rst:19
-msgid ":ref:`pgr_is_column_indexed` - to check if the column is indexed."
-msgstr ""
-
-# d82d4278e4b14798898589b62a07a6fd
-#: ../../../src/common/doc/utilities/index.rst:20
-msgid ""
-":ref:`pgr_is_column_in_table` - to check only for the existance of the "
-"column."
-msgstr ""
-
-# 166c0d8f61a54958932722413c5c1a96
-#: ../../../src/common/doc/utilities/index.rst:21
-msgid ""
-":ref:`pgr_point_to_id` -to insert/get the id of the inserted point in a "
-"vertices table."
-msgstr ""
-
-# 81426148e40b4e9fa21b940bb818b523
-#: ../../../src/common/doc/utilities/index.rst:22
-msgid ""
-":ref:`pgr_quote_ident` - to quotes the input text to be used as an "
-"identifier in an SQL statement string."
-msgstr ""
-
-# d41e3a55240246999890d539bc866a4f
-#: ../../../src/common/doc/utilities/index.rst:23
-msgid ":ref:`pgr_version` - to get pgRouting's version information."
-msgstr ""
-
-# 3d10df2242a348afb70157ab2869b42e
-#: ../../../src/common/doc/utilities/index.rst:24
-msgid ":ref:`pgr_versionless` - to compare two version numbers."
-msgstr ""
-
-# 86e6bdd38ba14caeaee7bfeb51f3f7a5
-#: ../../../src/common/doc/utilities/index.rst:25
-msgid ""
-":ref:`pgr_start_point` - to get the start point of a (multi)linestring."
-msgstr ""
-
-# 46480bc0b18a481e99a6913018d07218
-#: ../../../src/common/doc/utilities/index.rst:26
-msgid ":ref:`pgr_end_point` - to get the end point of a (multi)linestring."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po
deleted file mode 100644
index fd1d7a1..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po
+++ /dev/null
@@ -1,137 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f6500f30614b461f90b682890f3c3192
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:13
-msgid "pgr_isColumnInTable"
-msgstr ""
-
-# 7a4ec9b1b3514801a079916c0000371b
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 90dd01a206e24dbf9f73f90924c0615b
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:22
-msgid "``pgr_isColumnInTable`` — Check if a column is in the table."
-msgstr ""
-
-# 0d927909521c4f638c543baff8ebd318
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# b52fa51d192444e0a61674ede982a3e5
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:27
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# ea409e6a176b489aa7f326229d178d13
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:29
-msgid "Returns ``true`` when the column “col” is in table “tab”."
-msgstr ""
-
-# f5b2b429515a474892b7bddaebd7fa87
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:37
-msgid "Description"
-msgstr "Beschreibung"
-
-# a513395f631244f18df21c3b85ea7820
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:39
-msgid "``text`` Table name with or without schema component."
-msgstr ""
-
-# df577648959b4e0daab9d343543d3501
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:40
-msgid "``text`` Column name to be checked for."
-msgstr ""
-
-# faa09fc52bc54a0f9fe811ff099aa562
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:42
-msgid "Returns:"
-msgstr ""
-
-# 67ed5e9b40764fa1be45f8936680f526
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:44
-msgid "``true`` when the column “col” is in table “tab”."
-msgstr ""
-
-# fc38c243b9154c03833b5c9acd63804e
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:45
-msgid "``false`` when:"
-msgstr ""
-
-# fb6952dd480644c78db65cfbc109f967
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:47
-msgid "The table \"tab\" is not found or"
-msgstr ""
-
-# e701055cfb574ccd800767d4d4555d02
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:48
-msgid "Column “col” is not found in table “tab”"
-msgstr ""
-
-# be793f469b524522a2331a60fb6d7bac
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:51
-msgid "History"
-msgstr "Geschichte"
-
-# 03a9d21bed654a438312a5a6d45fcf17
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:52
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 1691f75cb0674d2d83b0bebe24105a6d
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:56
-msgid "Examples"
-msgstr "Beispiele"
-
-# c8d317a25f554ec6b9af54b1f7ae6c26
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:76
-msgid "The example use the :ref:`sampledata` network."
-msgstr ""
-
-# 24c87607bf1b4b23bb01e403b16e856f
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:80
-msgid "See Also"
-msgstr "Siehe auch"
-
-# b3efbf8b34fd415bbfc31810cc19b9dc
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:82
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 53d890d3132e4c7d94e0675093e6c146
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:83
-msgid ":ref:`pgr_is_column_indexed` to check if the column is indexed."
-msgstr ""
-
-# 5324fa01310a4c509d7ce91c088865e9
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:84
-msgid ""
-":ref:`pgr_get_column_name` to get the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ""
-
-# d97c057248844396aaa96cacbfcbc034
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:85
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po
deleted file mode 100644
index 8b75736..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po
+++ /dev/null
@@ -1,144 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# d13f67c428de40999845a53a259a0896
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:13
-msgid "pgr_isColumnIndexed"
-msgstr ""
-
-# 8c9da63e8a0e4da4aa092b82eced03c0
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:20
-msgid "Name"
-msgstr "Name"
-
-# cdfe958887b74d69a5d69a8c3b76f35d
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:22
-msgid "``pgr_isColumnIndexed`` — Check if a column in a table is indexed."
-msgstr ""
-
-# 16efc5cad4b0458aa30f27dcc834fb0b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# 1611a88987e54ab8a15606f82d4c6098
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:27
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 004725222faa47fd971e321be44816e6
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:29
-msgid "Returns ``true`` when the column “col” in table “tab” is indexed."
-msgstr ""
-
-# 3389fb7dd377428cbf442296f0032a6a
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:37
-msgid "Description"
-msgstr "Beschreibung"
-
-# cfb294e6535c4b0d91975ec3cb1c8985
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:39
-msgid "``text`` Table name with or without schema component."
-msgstr ""
-
-# 4cb8e78e50fb4ecbb15f141bb496040d
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:40
-msgid "``text`` Column name to be checked for."
-msgstr ""
-
-# a0f63aba19d0494b9cdcc5c7a61aebdb
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:42
-msgid "Returns:"
-msgstr ""
-
-# 66eed092853a47f9a7f69aa1fedbc666
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:44
-msgid "``true`` when the column “col” in table “tab” is indexed."
-msgstr ""
-
-# dbb567f94e994beaac90ea65cc8a324e
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:45
-msgid "``false`` when:"
-msgstr ""
-
-# f45a928140f24c299053e944f5550b7e
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:47
-msgid "The table \"tab\" is not found or"
-msgstr ""
-
-# c949dec2746e48459f93287f24a1334a
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:48
-msgid "Column “col” is not found in table “tab” or"
-msgstr ""
-
-# b2fd725d67df46b98d8ca3eddde9d1b5
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:49
-msgid "Column \"col\" in table \"tab\" is not indexed"
-msgstr ""
-
-# fe7b50380e1246599dd0b8abbac9a394
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:52
-msgid "History"
-msgstr "Geschichte"
-
-# 2949ff82708f44db903c9e175d8fd484
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:53
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# c19a7c36df38472bb330eafac37c34d3
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:57
-msgid "Examples"
-msgstr "Beispiele"
-
-# 9484e0bc1f1942da88f6261afd689f40
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:77
-msgid "The example use the :ref:`sampledata` network."
-msgstr ""
-
-# ba4b525f9ced43898aab4410c804208b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:81
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 76c91def69da43539042f05a15240e67
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:83
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 10267ea719b141b7a9e7712543121d34
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:84
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column "
-"in the table."
-msgstr ""
-
-# 4e5e6df51cf149cd9e79ef3459273a4b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:85
-msgid ""
-":ref:`pgr_get_column_name` to get the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ""
-
-# 2cda9c32c4ec4117914b3e51f125c1df
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:86
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/point_to_id.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/point_to_id.po
deleted file mode 100644
index be69689..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/point_to_id.po
+++ /dev/null
@@ -1,144 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 94641dca24af4c0dba2fbeed97300d22
-#: ../../../src/common/doc/utilities/point_to_id.rst:13
-msgid "pgr_pointToId"
-msgstr ""
-
-# 56e635560a6d4492ae86100badf0e086
-#: ../../../src/common/doc/utilities/point_to_id.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 81cc9d306cd54f46b4d517216a806eb7
-#: ../../../src/common/doc/utilities/point_to_id.rst:22
-msgid ""
-"``pgr_pointToId`` — Inserts a point into a vertices table and returns the "
-"corresponig id."
-msgstr ""
-
-# f6b714528cf7426dbeb9245b9719427c
-#: ../../../src/common/doc/utilities/point_to_id.rst:26
-msgid ""
-"This function is intended for the developer's aid. Use "
-":ref:`pgr_createTopology <pgr_create_topology>` or "
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` instead."
-msgstr ""
-
-# ba51b8bd879447188b15521bc44768c2
-#: ../../../src/common/doc/utilities/point_to_id.rst:30
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 426a196654d64ba99aa86b9e3eb47996
-#: ../../../src/common/doc/utilities/point_to_id.rst:32
-msgid ""
-"This function returns the ``id`` of the row in the vertices table that "
-"corresponds to the ``point`` geometry"
-msgstr ""
-
-# ad82864ab2bc436bb940d9dbb4bb7e28
-#: ../../../src/common/doc/utilities/point_to_id.rst:40
-msgid "Description"
-msgstr "Beschreibung"
-
-# 6f0b7969c38c4b60a652b8c56e860cb5
-#: ../../../src/common/doc/utilities/point_to_id.rst:42
-msgid "``geometry`` \"POINT\" geometry to be inserted."
-msgstr ""
-
-# 972b42f5a56a456584ffe992d2c9f597
-#: ../../../src/common/doc/utilities/point_to_id.rst:43
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-# 8026350c7b7b4ab9bb8a4d01a5398e92
-#: ../../../src/common/doc/utilities/point_to_id.rst:44
-msgid "``text`` Vertices table name WITH schema included."
-msgstr ""
-
-# fdb31c3aac0442fd9a79fd2e3cec8567
-#: ../../../src/common/doc/utilities/point_to_id.rst:45
-msgid "``integer`` SRID of the geometry point."
-msgstr ""
-
-# 1cb7d86e4eb54c46b998f27b7d883269
-#: ../../../src/common/doc/utilities/point_to_id.rst:47
-msgid ""
-"This function returns the id of the row that corresponds to the ``point`` "
-"geometry"
-msgstr ""
-
-# 6444a2e3a1eb4ec1b9e456bd7d566ec3
-#: ../../../src/common/doc/utilities/point_to_id.rst:49
-msgid ""
-"When the ``point`` geometry already exists in the vertices table "
-"``vertname``, it returns the corresponing ``id``."
-msgstr ""
-
-# f348861666b446b8b94833b19fc43b3a
-#: ../../../src/common/doc/utilities/point_to_id.rst:50
-msgid ""
-"When the ``point`` geometry is not found in the vertices table ``vertname``,"
-" the funcion inserts the ``point`` and returns the corresponing ``id`` of "
-"the newly created vertex."
-msgstr ""
-
-# bbc93993a9494838bb777feb3c966b2b
-#: ../../../src/common/doc/utilities/point_to_id.rst:52
-msgid ""
-"The function do not perform any checking of the parameters. Any validation "
-"has to be done before calling this function."
-msgstr ""
-
-# feb893694fe44a30b39b6671d6603125
-#: ../../../src/common/doc/utilities/point_to_id.rst:55
-msgid "History"
-msgstr "Geschichte"
-
-# ac4bb20cbeeb49e8a95d92ca52981979
-#: ../../../src/common/doc/utilities/point_to_id.rst:56
-msgid "Renamed in version 2.0.0"
-msgstr "Umbenannt in Version 2.0.0"
-
-# f159557b0fd44238a8114795dbd499e6
-#: ../../../src/common/doc/utilities/point_to_id.rst:60
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 44d7d6a102634aaab89b81a21117e3b4
-#: ../../../src/common/doc/utilities/point_to_id.rst:62
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 34d3f5b67bd04eef9a27bb0f9058f7a0
-#: ../../../src/common/doc/utilities/point_to_id.rst:63
-msgid ""
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create a topology "
-"based on the geometry."
-msgstr ""
-
-# 6efeb93fdd6f461b95ba6fa218148c75
-#: ../../../src/common/doc/utilities/point_to_id.rst:64
-msgid ""
-":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
-"on the geometry."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/quote_ident.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/quote_ident.po
deleted file mode 100644
index 743821e..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/quote_ident.po
+++ /dev/null
@@ -1,135 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# ad4f702fd7ab40f587534a31a99d703a
-#: ../../../src/common/doc/utilities/quote_ident.rst:13
-msgid "pgr_quote_ident"
-msgstr ""
-
-# a05a481e84424fde848925bc9df67822
-#: ../../../src/common/doc/utilities/quote_ident.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 2c0d5a39de7d48a894991413895eeb1d
-#: ../../../src/common/doc/utilities/quote_ident.rst:22
-msgid ""
-"``pgr_quote_ident`` — Quotes the input text to be used as an identifier in "
-"an SQL statement string."
-msgstr ""
-
-# 81be5b43d83b4f259a8627fdbd918321
-#: ../../../src/common/doc/utilities/quote_ident.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-# 9a208d9638b343d49e208a250552bf58
-#: ../../../src/common/doc/utilities/quote_ident.rst:28
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 20357172c5b74450a1dd908f249e1c22
-#: ../../../src/common/doc/utilities/quote_ident.rst:30
-msgid ""
-"Returns the given identifier ``idname`` suitably quoted to be used as an "
-"identifier in an SQL statement string."
-msgstr ""
-
-# ec0d7e517b52424e83e0a39e700f6ded
-#: ../../../src/common/doc/utilities/quote_ident.rst:38
-msgid "Description"
-msgstr "Beschreibung"
-
-# 0333bd56b4d146478a759f9bec187900
-#: ../../../src/common/doc/utilities/quote_ident.rst:41
-msgid "Parameters"
-msgstr "Parameter"
-
-# 24fafacf2e084c8ebd35cc820529ddf1
-#: ../../../src/common/doc/utilities/quote_ident.rst:42
-msgid ""
-"``text`` Name of an SQL identifier. Can include ``.`` dot notation for "
-"schemas.table identifiers"
-msgstr ""
-
-# 43a32f6d513f42dda64a31f538a7cb0b
-#: ../../../src/common/doc/utilities/quote_ident.rst:44
-msgid ""
-"Returns the given string suitably quoted to be used as an identifier in an "
-"SQL statement string."
-msgstr ""
-
-# d4e0873a14da42f5b4ca3f89505e8335
-#: ../../../src/common/doc/utilities/quote_ident.rst:46
-msgid ""
-"When the identifier ``idname`` contains on or more ``.`` separators, each "
-"component is suitably quoted to be used in an SQL string."
-msgstr ""
-
-# 1842d74622194549bf87e0e37e8220c8
-#: ../../../src/common/doc/utilities/quote_ident.rst:50
-msgid "History"
-msgstr "Geschichte"
-
-# 3e97c734ccfc46efaedb156bfd028772
-#: ../../../src/common/doc/utilities/quote_ident.rst:51
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 4c8ad273e78c414ca99c84a290acff83
-#: ../../../src/common/doc/utilities/quote_ident.rst:55
-msgid "Examples"
-msgstr "Beispiele"
-
-# c27e93edd7144c1986103e042e5b991c
-#: ../../../src/common/doc/utilities/quote_ident.rst:57
-msgid "Everything is lower case so nothing needs to be quoted."
-msgstr ""
-
-# 275c25d761794895a7a9474bd1622943
-#: ../../../src/common/doc/utilities/quote_ident.rst:76
-msgid "The column is upper case so its double quoted."
-msgstr ""
-
-# 7fc7d47e83624683a58343f8b5935b6f
-#: ../../../src/common/doc/utilities/quote_ident.rst:95
-msgid "The schema name has a capital letter so its double quoted."
-msgstr ""
-
-# 68aa84ac853546419c541739eee038e6
-#: ../../../src/common/doc/utilities/quote_ident.rst:106
-msgid "Ignores extra ``.`` separators."
-msgstr ""
-
-# 13976da7e76249c1bbbc10fb34130c59
-#: ../../../src/common/doc/utilities/quote_ident.rst:118
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 9ca53a95db55462780e7fb68bba70aca
-#: ../../../src/common/doc/utilities/quote_ident.rst:120
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# fb4b95d8a6d8403497a36238ed980b58
-#: ../../../src/common/doc/utilities/quote_ident.rst:121
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/start_point.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/start_point.po
deleted file mode 100644
index 8eb018f..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/start_point.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# a24de4d0526742168dd2c7673d357cfe
-#: ../../../src/common/doc/utilities/start_point.rst:13
-msgid "pgr_startPoint"
-msgstr ""
-
-# 2878d80121d3453794e0871f34873592
-#: ../../../src/common/doc/utilities/start_point.rst:20
-msgid "Name"
-msgstr "Name"
-
-# ef267d5bd4dc444b9db70d9f4079f505
-#: ../../../src/common/doc/utilities/start_point.rst:22
-msgid ""
-"``pgr_startPoint`` — Returns a start point of a (multi)linestring geometry."
-msgstr ""
-
-# 57c55f6c23fd4dc59ad7f25a4a4e6f90
-#: ../../../src/common/doc/utilities/start_point.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-# 7fb8df5ab251417bba38529aaefd457b
-#: ../../../src/common/doc/utilities/start_point.rst:28
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 7becd53f47734fbe99a71ba8adef0d07
-# 9345f683e56b40dcb259f1ef2ea5e240
-#: ../../../src/common/doc/utilities/start_point.rst:30
-#: ../../../src/common/doc/utilities/start_point.rst:44
-msgid ""
-"Returns the geometry of the start point of the first LINESTRING of ``geom``."
-msgstr ""
-
-# f2295bc1e9ef4b08884c65ec18de9744
-#: ../../../src/common/doc/utilities/start_point.rst:38
-msgid "Description"
-msgstr "Beschreibung"
-
-# fef77a15910b4557bb253c868468c67a
-#: ../../../src/common/doc/utilities/start_point.rst:41
-msgid "Parameters"
-msgstr "Parameter"
-
-# c938ded08b8743bf9eac1b5d064e0ed0
-#: ../../../src/common/doc/utilities/start_point.rst:42
-msgid "``geometry`` Geometry of a MULTILINESTRING or LINESTRING."
-msgstr ""
-
-# 364eba92da1046889b073b64c9827bdf
-#: ../../../src/common/doc/utilities/start_point.rst:49
-msgid "History"
-msgstr "Geschichte"
-
-# 62c8d013ab68473c8adda6fbfaf564e9
-#: ../../../src/common/doc/utilities/start_point.rst:50
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 8e8a05a8da734bb5961b296230e53bcb
-#: ../../../src/common/doc/utilities/start_point.rst:55
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 6026c7e6914a49cab16a616dd0fb6bac
-#: ../../../src/common/doc/utilities/start_point.rst:57
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 5b0650667c4b470691f4647d5b73f783
-#: ../../../src/common/doc/utilities/start_point.rst:58
-msgid ":ref:`pgr_end_Point` to get the end point of a (multi)linestring."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/version.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/version.po
deleted file mode 100644
index 742c0b8..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/version.po
+++ /dev/null
@@ -1,113 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# cb10fa2694924ce19d909a3e1df513f1
-#: ../../../src/common/doc/utilities/version.rst:13
-msgid "pgr_version"
-msgstr ""
-
-# 135f514b10854445bd0cfa9f89f21f86
-#: ../../../src/common/doc/utilities/version.rst:20
-msgid "Name"
-msgstr "Name"
-
-# ee914323b4b6411ea5c157325bdfac90
-#: ../../../src/common/doc/utilities/version.rst:22
-msgid "``pgr_version`` — Query for pgRouting version information."
-msgstr ""
-
-# 301b5989ecef437b858e054c95827d83
-#: ../../../src/common/doc/utilities/version.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 607aa236b6134901a0871ed5bf518253
-#: ../../../src/common/doc/utilities/version.rst:28
-msgid "Returns a table with pgRouting version information."
-msgstr ""
-
-# 6190754a1b934ee586562b0995c07bc0
-#: ../../../src/common/doc/utilities/version.rst:36
-msgid "Description"
-msgstr "Beschreibung"
-
-# b85aeaeb021647e59321f2b6c9953333
-#: ../../../src/common/doc/utilities/version.rst:38
-msgid "Returns a table with:"
-msgstr ""
-
-# e5a458cace474e8babaaaff2837c160f
-#: ../../../src/common/doc/utilities/version.rst:40
-msgid "``varchar`` pgRouting version"
-msgstr ""
-
-# 7f02654b7c3641b5a35c56c47ea63022
-#: ../../../src/common/doc/utilities/version.rst:41
-msgid "``varchar`` Git tag of pgRouting build"
-msgstr ""
-
-# c50e77a54d3d4828a5ea0e89182d5f03
-#: ../../../src/common/doc/utilities/version.rst:42
-msgid "``varchar`` Git hash of pgRouting build"
-msgstr ""
-
-# ba32c01940164cfab6dec3df2cb565ed
-#: ../../../src/common/doc/utilities/version.rst:43
-msgid "``varchar`` Git branch of pgRouting build"
-msgstr ""
-
-# 135e588dcbe144db9a806d3c5b75b88c
-#: ../../../src/common/doc/utilities/version.rst:44
-msgid "``varchar`` Boost version"
-msgstr ""
-
-# 7e0b5fe0384f43648b6ca7dcdd703fd6
-#: ../../../src/common/doc/utilities/version.rst:48
-msgid "History"
-msgstr "Geschichte"
-
-# 3f8e572f137d472592f2abb0483e3153
-#: ../../../src/common/doc/utilities/version.rst:49
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# abdab1e6a00347269b027b2fedd31c15
-#: ../../../src/common/doc/utilities/version.rst:53
-msgid "Examples"
-msgstr "Beispiele"
-
-# 86be3ecef9da4b22b39cfe8fc3848b92
-#: ../../../src/common/doc/utilities/version.rst:55
-msgid "Query for full version string"
-msgstr ""
-
-# 85c014398a004db5bb9cf5afa9515f32
-#: ../../../src/common/doc/utilities/version.rst:67
-msgid "Query for ``version`` and ``boost`` attribute"
-msgstr ""
-
-# e3b6b7e66a8e4b8698f253e26126b8af
-#: ../../../src/common/doc/utilities/version.rst:80
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 73744f59f3494c4e827095b7f6ca9503
-#: ../../../src/common/doc/utilities/version.rst:82
-msgid ":ref:`pgr_versionless` to compare two version numbers"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/versionless.po b/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/versionless.po
deleted file mode 100644
index e38cd7c..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/common/doc/utilities/versionless.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 5209a60f43eb4ca889765b2f2855917f
-#: ../../../src/common/doc/utilities/versionless.rst:13
-msgid "pgr_versionless"
-msgstr ""
-
-# cf214511459c4e01a98c636ee93edf10
-#: ../../../src/common/doc/utilities/versionless.rst:20
-msgid "Name"
-msgstr "Name"
-
-# af9f449a91a94497a1a06310c12763cc
-#: ../../../src/common/doc/utilities/versionless.rst:22
-msgid "``pgr_versionless`` — Compare two version numbers."
-msgstr ""
-
-# cfa4ec4da8d143e9bb4f33521dc1f6b2
-#: ../../../src/common/doc/utilities/versionless.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# 7a40ac52554840c48edaf4e3bc893f86
-#: ../../../src/common/doc/utilities/versionless.rst:27
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 99a72026827e4e44b1b7e0b9defa52f8
-#: ../../../src/common/doc/utilities/versionless.rst:29
-msgid ""
-"Returns ``true`` if the first version number is smaller than the second "
-"version number. Otherwise returns ``false``."
-msgstr ""
-
-# b541ba956f94407fbbfa4f325152d137
-#: ../../../src/common/doc/utilities/versionless.rst:37
-msgid "Description"
-msgstr "Beschreibung"
-
-# f2b9c579402a4d529bdcf44885b7999e
-#: ../../../src/common/doc/utilities/versionless.rst:39
-msgid "``text`` first version number"
-msgstr ""
-
-# ff2f3530055d46b39b083a6e013b18f1
-#: ../../../src/common/doc/utilities/versionless.rst:40
-msgid "``text`` second version number"
-msgstr ""
-
-# aa0e1cf348454207aba6b1bd4d82ddcd
-#: ../../../src/common/doc/utilities/versionless.rst:44
-msgid "History"
-msgstr "Geschichte"
-
-# 84d6600a81814c3b87c5e309a80eef62
-#: ../../../src/common/doc/utilities/versionless.rst:45
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 0dbed91f114f41a2a1ccbffbb4886a47
-#: ../../../src/common/doc/utilities/versionless.rst:49
-msgid "Examples"
-msgstr "Beispiele"
-
-# cd2ca34fb88c4024ac73c6c7076b3de2
-#: ../../../src/common/doc/utilities/versionless.rst:62
-msgid "See Also"
-msgstr "Siehe auch"
-
-# ac8a4a1b5fd0499e910d1f9c088d0d25
-#: ../../../src/common/doc/utilities/versionless.rst:64
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# f733092d16de4d7b9bdf31b6bdae27d3
-#: ../../../src/common/doc/utilities/versionless.rst:65
-msgid ":ref:`pgr_version` to get the current version of pgRouting."
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/dijkstra/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/dijkstra/doc/index.po
deleted file mode 100644
index 9e3b136..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/dijkstra/doc/index.po
+++ /dev/null
@@ -1,182 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# a6876a00bcae42fdb134f789dabd19d7
-#: ../../../src/dijkstra/doc/index.rst:13
-msgid "pgr_dijkstra - Shortest Path Dijkstra"
-msgstr ""
-
-# 5ba32c2871ea4858b8bfd351b4a01f34
-#: ../../../src/dijkstra/doc/index.rst:20
-msgid "Name"
-msgstr "Name"
-
-# eb4931f6253f4daea164710031c062f7
-#: ../../../src/dijkstra/doc/index.rst:22
-msgid "``pgr_dijkstra`` — Returns the shortest path using Dijkstra algorithm."
-msgstr ""
-
-# aad22c43d6da4f658543ad79e2b4789c
-#: ../../../src/dijkstra/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# d23c857c49554c10a6c99810575627e1
-#: ../../../src/dijkstra/doc/index.rst:28
-msgid ""
-"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
-"in 1956. It is a graph search algorithm that solves the single-source "
-"shortest path problem for a graph with non-negative edge path costs, "
-"producing a shortest path tree. Returns a set of :ref:`pgr_costResult "
-"<type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
-msgstr ""
-
-# 9b3ef7764a8a4aec8be3fd97d0f78855
-#: ../../../src/dijkstra/doc/index.rst:37
-msgid "Description"
-msgstr "Beschreibung"
-
-# 8f12864ae55a48e6a49e9a5c7f232731
-#: ../../../src/dijkstra/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-# 883dbba5f5b94668af12a1c3d280804f
-#: ../../../src/dijkstra/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-# 64eaa5363cc64362829f60de0f81517d
-#: ../../../src/dijkstra/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-# 849ed774dfa442cf86f3d184c820a717
-#: ../../../src/dijkstra/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-# 2c000dd6564240d09f3533f4b2411029
-#: ../../../src/dijkstra/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr ""
-
-# 13bbd212a94840bbbdd82ba008836790
-#: ../../../src/dijkstra/doc/index.rst:50
-msgid ""
-"``float8`` (optional) the cost for the reverse traversal of the edge. This "
-"is only used when the ``directed`` and ``has_rcost`` parameters are ``true``"
-" (see the above remark about negative costs)."
-msgstr ""
-
-# 42be1660a80b461ba4e56f070cde4c04
-#: ../../../src/dijkstra/doc/index.rst:52
-msgid "``int4`` id of the start point"
-msgstr ""
-
-# 95547c9e5de74556a208d7c0a9e58772
-#: ../../../src/dijkstra/doc/index.rst:53
-msgid "``int4`` id of the end point"
-msgstr ""
-
-# 89e9934bdbfd42aabf98993066529f92
-#: ../../../src/dijkstra/doc/index.rst:54
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-# 03f039cd5de34a3f99a5871456ed269f
-#: ../../../src/dijkstra/doc/index.rst:55
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr ""
-
-# 2c03ff621dfb4e11a0f215844b6cd41c
-#: ../../../src/dijkstra/doc/index.rst:57
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# f43f68991432480385556098be3f32ab
-#: ../../../src/dijkstra/doc/index.rst:59
-msgid "row sequence"
-msgstr ""
-
-# b5cd0a7c7e1943e2934f2d315fd0d58d
-#: ../../../src/dijkstra/doc/index.rst:60
-msgid "node ID"
-msgstr ""
-
-# ae466d86ce304295afc5b1f956c97732
-#: ../../../src/dijkstra/doc/index.rst:61
-msgid "edge ID (``-1`` for the last row)"
-msgstr ""
-
-# d74ec405ac62479a93ddd9070e1cfead
-#: ../../../src/dijkstra/doc/index.rst:62
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr ""
-
-# d45859a53252493eaea97bdbe6c8936f
-#: ../../../src/dijkstra/doc/index.rst:66
-msgid "History"
-msgstr "Geschichte"
-
-# 41349c9ad4574d009aa7375219beab0c
-#: ../../../src/dijkstra/doc/index.rst:67
-msgid "Renamed in version 2.0.0"
-msgstr "Umbenannt in Version 2.0.0"
-
-# d1ebc8bc726844eab5795b5dedc18fe0
-#: ../../../src/dijkstra/doc/index.rst:71
-msgid "Examples"
-msgstr "Beispiele"
-
-# 5ea59cfbc4b240c29bc8268d4a36cdb4
-#: ../../../src/dijkstra/doc/index.rst:73
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-# a37bcf6c164b442ca94ded3b2df83f61
-#: ../../../src/dijkstra/doc/index.rst:92
-msgid "With ``reverse_cost``"
-msgstr ""
-
-# 1013877e3d214e6f8d87c5747e261b20
-#: ../../../src/dijkstra/doc/index.rst:110
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 7097292ec353427d90c60607583c42c2
-#: ../../../src/dijkstra/doc/index.rst:114
-msgid "See Also"
-msgstr "Siehe auch"
-
-# d98cbcb325484a81bcb0e6b0afd3928c
-#: ../../../src/dijkstra/doc/index.rst:116
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-# cc938bae0828409fb0efae9ad098fa4d
-#: ../../../src/dijkstra/doc/index.rst:117
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po b/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po
deleted file mode 100644
index 18caede..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po
+++ /dev/null
@@ -1,141 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# cb2e05bbf556427191f8dd5d87c670db
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:13
-msgid "pgr_alphaShape"
-msgstr ""
-
-# cd5cca6682b34a85b72fd0b7c90d739b
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 9a0ca65720774711aefd2d017e4487e9
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:22
-msgid "``pgr_alphashape`` — Core function for alpha shape computation."
-msgstr ""
-
-# 525edb2bc28a4e77804ac30781cc3dc5
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:26
-msgid ""
-"This function should not be used directly. Use :ref:`pgr_drivingDistance "
-"<pgr_driving_distance>` instead."
-msgstr ""
-
-# 96d2ea88d3bf44a793219826f7fddda3
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:30
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 4b5074bd7bc64d1c89dcc1e5b250c5f0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:32
-msgid ""
-"Returns a table with (x, y) rows that describe the vertices of an alpha "
-"shape."
-msgstr ""
-
-# eed5f82ec9924367b7a2c7ce8ce7704a
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:40
-msgid "Description"
-msgstr "Beschreibung"
-
-# 3607e16f8fe24de6a2226bb43a73dadd
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:42
-msgid ""
-"``text`` a SQL query, which should return a set of rows with the following "
-"columns:"
-msgstr ""
-
-# afd24b1ef69d439691025ff955e63f25
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:48
-msgid "``int4`` identifier of the vertex"
-msgstr ""
-
-# c4ec83f59d634b458e6e04dc6822cc62
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:49
-msgid "``float8`` x-coordinate"
-msgstr ""
-
-# c78115c69ec645ceb3a8de6f3a97ebdc
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:50
-msgid "``float8`` y-coordinate"
-msgstr ""
-
-# 63cffe47a71d462cae8c09a10473bdaf
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:53
-msgid "Returns a vertex record for each row :"
-msgstr ""
-
-# 385ec313cc69493989a17eecd282d5b4
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:55
-msgid "x-coordinate"
-msgstr ""
-
-# 2eb9452ee2864540b535c7be538a73f0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:56
-msgid "y-coordinate"
-msgstr ""
-
-# bf1e04aab9ed4558aeb274dbc93fc476
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:60
-msgid "History"
-msgstr "Geschichte"
-
-# 6301d43186dc47ca9c0925f563c2b4ee
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:61
-msgid "Renamed in version 2.0.0"
-msgstr "Umbenannt in Version 2.0.0"
-
-# 2dcc599a683743b09eb440895c823584
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:65
-msgid "Examples"
-msgstr "Beispiele"
-
-# 28059fce0d66461c88851c2efa8995b4
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:66
-msgid ""
-"In the alpha shape code we have no way to control the order of the points so"
-" the actual output you might get could be similar but different. The simple "
-"query is followed by a more complex one that constructs a polygon and "
-"computes the areas of it. This should be the same as the result on your "
-"system. We leave the details of the complex query to the reader as an "
-"exercise if they wish to decompose it into understandable pieces or to just "
-"copy and paste it into a SQL window to run."
-msgstr ""
-
-# cea925c912c14e2bae7b67a9493f67d0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:119
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# b737b880282d447b840b23e77501d03b
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:123
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 79772e0e113745068a7c48d32ae903ee
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:125
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-# 98ad4c5291f04893a9e5a6f616ce2d11
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:126
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po b/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po
deleted file mode 100644
index a4cba84..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po
+++ /dev/null
@@ -1,199 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 49d83b442baa4f9981fa13ff4abc3c6b
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:13
-msgid "pgr_drivingDistance"
-msgstr ""
-
-# ce7edabbdab546a3a318f86316d0abc6
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 7a89c6c2c0ca404eb82afe9d6de38db2
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:22
-msgid ""
-"``pgr_drivingDistance`` - Returns the driving distance from a start node."
-msgstr ""
-
-# 5afa2748d4964e35b9cfcf71ba431015
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:26
-msgid ""
-"Requires :ref:`to build pgRouting <build>` with support for Driving "
-"Distance."
-msgstr ""
-
-# 91fbeb2cd46146c4bb9f86b8600faa87
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:30
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# cffb1438aa5d43d8b1792ec1d53769ae
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:32
-msgid ""
-"This function computes a Dijkstra shortest path solution them extracts the "
-"cost to get to each node in the network from the starting node. Using these "
-"nodes and costs it is possible to compute constant drive time polygons. "
-"Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, "
-"cost) rows, that make up a list of accessible points."
-msgstr ""
-
-# b2253b753da44597b1d449509c96ca75
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:41
-msgid "Description"
-msgstr "Beschreibung"
-
-# f187f52a62034b2cae8bb00b570bea15
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:43
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-# 85949c2cc0334abbbb500996221eeba0
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:50
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-# 35a904f5f23643b7a6e7e457b8f05846
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:51
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-# 815615381d8d43989567cc15d154736a
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:52
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-# 5c9e142543534a0bbc7668603ad465b4
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:53
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr ""
-
-# fa3ca524dbe24d47891420e71caa324c
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr ""
-
-# c9e1f4debc904118ab177e2b4427d364
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:56
-msgid "``int4`` id of the start point"
-msgstr ""
-
-# 2da59a7b4e0b4b6fbac510bfe0adbd1e
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:57
-msgid ""
-"``float8`` value in edge cost units (not in projection units - they might be"
-" different)."
-msgstr ""
-
-# b09a53cf12bd49a09659eb105e2e7d2a
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:58
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-# e771178ac5514ae6bc7cf3dcccfe5408
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr ""
-
-# 5770f80a74ec49cf8f9e11b9fd082533
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# ed0dbd0e73234b70827a7663d390886d
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:63
-msgid "row sequence"
-msgstr ""
-
-# dc9caee8fdc84c45bb1ebf3c046a436d
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:64
-msgid "node ID"
-msgstr ""
-
-# ae36b60db435425b8a4bfa4ada217dd7
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:65
-msgid "edge ID (this is probably not a useful item)"
-msgstr ""
-
-# ee9063c6bb49444e94e08af7eedbb401
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:66
-msgid "cost to get to this node ID"
-msgstr ""
-
-# 3bb717c83f2d4993a4b1704a88749ee9
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr ""
-
-# 306f0588bb5148dab4d4a97e5bb35889
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:74
-msgid "History"
-msgstr "Geschichte"
-
-# cc8f5e8248314554bd506fc27f7208ed
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:75
-msgid "Renamed in version 2.0.0"
-msgstr "Umbenannt in Version 2.0.0"
-
-# 9db1973c0a0b4420afe780fa3d4b3d0f
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:79
-msgid "Examples"
-msgstr "Beispiele"
-
-# 3f34e359dbd242b6a82b49b0beb2acd5
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:81
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-# f58a8bec8b9447f59bf31eb2d52c7782
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:101
-msgid "With ``reverse_cost``"
-msgstr ""
-
-# f6d9ddd77a7c48dcaafa2cd1225d8e27
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:121
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 15ad7ce30a424139b00e9874b4461215
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:125
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 04113586118441f6b13f5bf83f5fa224
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:127
-msgid ":ref:`pgr_alphashape` - Alpha shape computation"
-msgstr ""
-
-# b474eeeca7284f5f983f498713f1640f
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:128
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po b/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po
deleted file mode 100644
index 14dda01..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po
+++ /dev/null
@@ -1,122 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# a2329478f830474e9819c418ae391538
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:13
-msgid "pgr_pointsAsPolygon"
-msgstr ""
-
-# df6c5bd4620d47ae9f8682195aca1e18
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 968dbf3147554bcc994e903e5917a0bd
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:22
-msgid ""
-"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
-msgstr ""
-
-# 0b81c4a0e03d47938cd256882a6facac
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 568b6a3cf23a4a7980b7796df73d334b
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:28
-msgid "Returns the alpha shape as polygon geometry."
-msgstr ""
-
-# 240f6c0c9ac848a2b1815408c264a3d7
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:36
-msgid "Description"
-msgstr "Beschreibung"
-
-# bfa10edae1114295852086c42f84d811
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:38
-msgid ""
-"``text`` a SQL query, which should return a set of rows with the following "
-"columns:"
-msgstr ""
-
-# d3ca4ae81d3e4a709a2fda2d60f23946
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:44
-msgid "``int4`` identifier of the vertex"
-msgstr ""
-
-# 10e342dfa5274ea89ea284bd657b2469
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:45
-msgid "``float8`` x-coordinate"
-msgstr ""
-
-# d36090e578224b30b065a3c28f26d565
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:46
-msgid "``float8`` y-coordinate"
-msgstr ""
-
-# 1029622f3ac34a30abc0f3babfe7118f
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:49
-msgid "Returns a polygon geometry."
-msgstr ""
-
-# 49392543fb984b5f922e683b9ba560c5
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:53
-msgid "History"
-msgstr "Geschichte"
-
-# b00e0e03870244cca7aa9e1c81bad9c1
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:54
-msgid "Renamed in version 2.0.0"
-msgstr "Umbenannt in Version 2.0.0"
-
-# f8001d60b6d54b67afc641f38b8e5b4a
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:58
-msgid "Examples"
-msgstr "Beispiele"
-
-# 7e01fc6f880549e7b7bde01255cc2811
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:59
-msgid ""
-"In the following query there is not way to control which point in the "
-"polygon is the first in the list, so you may get similar but different "
-"results than the following which are also correct. Each of the "
-"pgr_pointsAsPolygon queries below is followed by one the compute the area of"
-" the polygon. This area should remain constant regardles of the order of the"
-" points making up the polygon."
-msgstr ""
-
-# 1deae2c2bb624110980cf832e66993d9
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:93
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 801871cf3dd94fd292387e49941223e3
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:97
-msgid "See Also"
-msgstr "Siehe auch"
-
-# abc4c217086645fe88ff21568ab13c50
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:99
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-# 51bae94aaf75403a81353100c953d805
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:100
-msgid ":ref:`pgr_alphashape` - Alpha shape computation"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/index.po
deleted file mode 100644
index 35239f5..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/driving_distance/doc/index.po
+++ /dev/null
@@ -1,199 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-04 04:22+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 0979e1fbbc9641b5ade79d4c28a2473a
-#: ../../../src/driving_distance/doc/index.rst:13
-msgid "pgr_drivingDistance - Driving Distance"
-msgstr ""
-
-# 7b3011e2af744bfdb31fc2960aaa4664
-#: ../../../src/driving_distance/doc/index.rst:20
-msgid "Name"
-msgstr "Name"
-
-# 3c08eb6932d34c2ca49bd0889566e8e3
-#: ../../../src/driving_distance/doc/index.rst:22
-msgid ""
-"``pgr_drivingDistance`` - Returns the driving distance from a start node."
-msgstr ""
-
-# 726c1fdc95044e52b22d50c0f0b766fb
-#: ../../../src/driving_distance/doc/index.rst:26
-msgid ""
-"Requires :ref:`to build pgRouting <build>` with support for Driving "
-"Distance."
-msgstr ""
-
-# ce1ce7f3f6c9425ab9c4a1aae81baeb3
-#: ../../../src/driving_distance/doc/index.rst:30
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 12a9eb19a15e4f42acd14d76a3847c02
-#: ../../../src/driving_distance/doc/index.rst:32
-msgid ""
-"This function computes a Dijkstra shortest path solution them extracts the "
-"cost to get to each node in the network from the starting node. Using these "
-"nodes and costs it is possible to compute constant drive time polygons. "
-"Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, "
-"cost) rows, that make up a list of accessible points."
-msgstr ""
-
-# df9cee3f069447debee18ff47cce02f8
-#: ../../../src/driving_distance/doc/index.rst:41
-msgid "Description"
-msgstr "Beschreibung"
-
-# fda5e314fd1b46c6a96ad0b8a241ae12
-#: ../../../src/driving_distance/doc/index.rst:43
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-# 9621e3c82e434709bfcb9df2a0febdee
-#: ../../../src/driving_distance/doc/index.rst:50
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-# b0b6976ee3d3495ca2e27a1359c6b07c
-#: ../../../src/driving_distance/doc/index.rst:51
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-# fec5e9d5cb5e438ea2c5f0feecd1aa03
-#: ../../../src/driving_distance/doc/index.rst:52
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-# ec8176b8c36e447ebd1f0995dadd973d
-#: ../../../src/driving_distance/doc/index.rst:53
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr ""
-
-# 9c3f6ea025a84d0a8ac13358a10ed166
-#: ../../../src/driving_distance/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr ""
-
-# 32fef696ffaf450fb041bf2ebc1fc270
-#: ../../../src/driving_distance/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr ""
-
-# 420175e68aac485f86544b6aa6cae550
-#: ../../../src/driving_distance/doc/index.rst:57
-msgid ""
-"``float8`` value in edge cost units (not in projection units - they might be"
-" different)."
-msgstr ""
-
-# a7f57fdcfe0544e69a4cde06a7344fb6
-#: ../../../src/driving_distance/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-# d72d8b646a964dea88cd97d711c69e94
-#: ../../../src/driving_distance/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr ""
-
-# ef1631b756b54c3aa2b66ae0abfad917
-#: ../../../src/driving_distance/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# e440be6d227945fa904c13d07855a863
-#: ../../../src/driving_distance/doc/index.rst:63
-msgid "row sequence"
-msgstr ""
-
-# bfe1245d3dde49048c4e9bf715508e92
-#: ../../../src/driving_distance/doc/index.rst:64
-msgid "node ID"
-msgstr ""
-
-# 401535e148ae4023aefb138c6f8ff762
-#: ../../../src/driving_distance/doc/index.rst:65
-msgid "edge ID (this is probably not a useful item)"
-msgstr ""
-
-# 3a2b1d8c38434024b2edd02add5bb1fc
-#: ../../../src/driving_distance/doc/index.rst:66
-msgid "cost to get to this node ID"
-msgstr ""
-
-# 1d8dc027684e453f9a61e3e3f12ee255
-#: ../../../src/driving_distance/doc/index.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr ""
-
-# a61d60a110d54bc0a6930cab19c3ce24
-#: ../../../src/driving_distance/doc/index.rst:74
-msgid "History"
-msgstr "Geschichte"
-
-# f2e8e48820a54015ab1b6a85136df5f0
-#: ../../../src/driving_distance/doc/index.rst:75
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-# 817cc13bb697434e9f0803ed3f365934
-#: ../../../src/driving_distance/doc/index.rst:79
-msgid "Examples"
-msgstr "Beispiele"
-
-# 82aec7db1ea043b28641f4963d13763b
-#: ../../../src/driving_distance/doc/index.rst:81
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-# ac2a8b6a32a24b6095a9fb31fce4ebe0
-#: ../../../src/driving_distance/doc/index.rst:101
-msgid "With ``reverse_cost``"
-msgstr ""
-
-# 0d7631d9310b438c91153c3dd1b24a5b
-#: ../../../src/driving_distance/doc/index.rst:121
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# eed359d1899540fab05b3a4dc12fcaa1
-#: ../../../src/driving_distance/doc/index.rst:125
-msgid "See Also"
-msgstr "Siehe auch"
-
-# affd024607f942fb927cdf15975a7d4d
-#: ../../../src/driving_distance/doc/index.rst:127
-msgid ":ref:`pgr_points_as_polygon`"
-msgstr ""
-
-# 5809d5028efc4d909ba300c75482cb61
-#: ../../../src/driving_distance/doc/index.rst:128
-msgid ":ref:`pgr_alphashape`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/index.po b/doc/i18n/de/LC_MESSAGES/src/index.po
deleted file mode 100644
index e6d326f..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/index.po
+++ /dev/null
@@ -1,81 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:17+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# a7c0f1373b4a433684d0580309cec634
-#: ../../../src/index.rst:13
-msgid "Routing Functions"
-msgstr "Routing-Funktionen"
-
-# 4e64e043a06f42cabd4c08c71b866662
-#: ../../../src/index.rst:15
-msgid ""
-":ref:`pgr_apspJohnson <pgr_apsp_johnson>`- All Pairs Shortest Path, "
-"Johnson’s Algorithm"
-msgstr ""
-
-# 19f78548228b4618bcec3c9f7603b2d0
-#: ../../../src/index.rst:16
-msgid ""
-":ref:`pgr_apspWarshall<pgr_apsp_warshall>` - All Pairs Shortest Path, Floyd-"
-"Warshall Algorithm"
-msgstr ""
-
-# cf861ca040624d81961f9ca0520b92ad
-#: ../../../src/index.rst:17
-msgid ":ref:`pgr_astar<pgr_astar>` - Shortest Path A*"
-msgstr ""
-
-# c5b280cd3cef4722abbfa6362d721aed
-#: ../../../src/index.rst:18
-msgid ":ref:`pgr_bdAstar<bd_astar>` - Bi-directional A* Shortest Path"
-msgstr ""
-
-# 0e20115c70e4487d9eb50b8ca6dd4c2b
-#: ../../../src/index.rst:19
-msgid ""
-":ref:`pgr_bdDijkstra<bd_dijkstra>` - Bi-directional Dijkstra Shortest Path"
-msgstr ""
-
-# cdb0bd03676b4bfca36fd4dc10b0473a
-#: ../../../src/index.rst:20
-msgid ":ref:`pgr_dijkstra<pgr_dijkstra>` - Shortest Path Dijkstra"
-msgstr ""
-
-# 7f1f5596a0d54dbd9672956b7463e7b4
-#: ../../../src/index.rst:21
-msgid ""
-":ref:`pgr_kDijkstra<pgr_kdijkstra>` - Mutliple destination Shortest Path "
-"Dijkstra"
-msgstr ""
-
-# 4ff10fab541f4f7686ef8163d75aa200
-#: ../../../src/index.rst:22
-msgid ":ref:`pgr_ksp<ksp>` - K-Shortest Path"
-msgstr ""
-
-# 6cec1b719ac34893b665a4b16b2f7f58
-#: ../../../src/index.rst:23
-msgid ":ref:`pgr_tsp<pgr_tsp>` - Traveling Sales Person"
-msgstr ""
-
-# 525e92b52a974d73b4bac048a34bd9c9
-#: ../../../src/index.rst:24
-msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/kdijkstra/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/kdijkstra/doc/index.po
deleted file mode 100644
index c633cfd..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/kdijkstra/doc/index.po
+++ /dev/null
@@ -1,230 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 36e2253743a8455dbfbf75b26155205f
-#: ../../../src/kdijkstra/doc/index.rst:13
-msgid "pgr_kDijkstra - Mutliple destination Shortest Path Dijkstra"
-msgstr ""
-
-# 9f432bf1623d4a299d50ff492edbd66b
-#: ../../../src/kdijkstra/doc/index.rst:21
-msgid "Name"
-msgstr "Name"
-
-# 57c34a235f7a4cea8458d98a50a54e77
-#: ../../../src/kdijkstra/doc/index.rst:23
-msgid ""
-"``pgr_kdijkstraCost`` - Returns the costs for K shortest paths using "
-"Dijkstra algorithm."
-msgstr ""
-
-# ce7c4be9a502473591591e4d330d46e7
-#: ../../../src/kdijkstra/doc/index.rst:24
-msgid ""
-"``pgr_kdijkstraPath`` - Returns the paths for K shortest paths using "
-"Dijkstra algorithm."
-msgstr ""
-
-# 130c100b24ac47d4afd3b8ae17ea1335
-#: ../../../src/kdijkstra/doc/index.rst:28
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 1b2f7dd687d84d76bbc57fc3ad8ed5ec
-#: ../../../src/kdijkstra/doc/index.rst:30
-msgid ""
-"These functions allow you to have a single start node and multiple "
-"destination nodes and will compute the routes to all the destinations from "
-"the source node. Returns a set of :ref:`pgr_costResult3 <type_cost_result3>`"
-" or :ref:`pgr_costResult3 <type_cost_result3>`. ``pgr_kdijkstraCost`` "
-"returns one record for each destination node and the cost is the total code "
-"of the route to that node. ``pgr_kdijkstraPath`` returns one record for "
-"every edge in that path from source to destination and the cost is to "
-"traverse that edge."
-msgstr ""
-
-# 06379d79c78b4c9bb92226bc66c58c3f
-#: ../../../src/kdijkstra/doc/index.rst:42
-msgid "Description"
-msgstr "Beschreibung"
-
-# 84671f541e384cf79360df9e260a5f52
-#: ../../../src/kdijkstra/doc/index.rst:44
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-# adccb52524354a6c92d9d45edb967dc0
-#: ../../../src/kdijkstra/doc/index.rst:51
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-# 5b2a072be67f471a8ab0c6b3daddcc48
-#: ../../../src/kdijkstra/doc/index.rst:52
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-# d00470fb22ae4294a3cf56db3d064839
-#: ../../../src/kdijkstra/doc/index.rst:53
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-# 4bdbc59e5d2d46ba94031caa56975d17
-#: ../../../src/kdijkstra/doc/index.rst:54
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr ""
-
-# 569cecbec8e34fa9942c4bcf4ce0c6a4
-#: ../../../src/kdijkstra/doc/index.rst:55
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr ""
-
-# b3c8762d18e14a65b4d45ca5b654dabd
-#: ../../../src/kdijkstra/doc/index.rst:57
-msgid "``int4`` id of the start point"
-msgstr ""
-
-# 552184e10f0940f09327b71d0a2a5293
-#: ../../../src/kdijkstra/doc/index.rst:58
-msgid "``int4[]`` an array of ids of the end points"
-msgstr ""
-
-# 6bee551c7fae494d9429ddf6404f457a
-#: ../../../src/kdijkstra/doc/index.rst:59
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-# c79e8fecdbb94d6f836a2fb692d24fea
-#: ../../../src/kdijkstra/doc/index.rst:60
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr ""
-
-# fe741d49c0f94473971ebcad7951456b
-#: ../../../src/kdijkstra/doc/index.rst:63
-msgid "``pgr_kdijkstraCost`` returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# 2325329e3ec24e3cbe4c347369b857a4
-# 2ac53854f37a48a89b705310628c4d3e
-#: ../../../src/kdijkstra/doc/index.rst:65
-#: ../../../src/kdijkstra/doc/index.rst:73
-msgid "row sequence"
-msgstr ""
-
-# 73cb6093021a456aace98c1f58641bef
-#: ../../../src/kdijkstra/doc/index.rst:66
-msgid ""
-"path vertex source id (this will always be source start point in the query)."
-msgstr ""
-
-# 9afd4e01323945118421ebb27f420068
-#: ../../../src/kdijkstra/doc/index.rst:67
-msgid "path vertex target id"
-msgstr ""
-
-# 8b3c8fe211a147f4b031db8a8d899ddd
-#: ../../../src/kdijkstra/doc/index.rst:68
-msgid ""
-"cost to traverse the path from ``id1`` to ``id2``. Cost will be -1.0 if "
-"there is no path to that target vertex id."
-msgstr ""
-
-# 703a5ecca86b4ef4ba2c275d9ba8a20f
-#: ../../../src/kdijkstra/doc/index.rst:71
-msgid "``pgr_kdijkstraPath`` returns set of :ref:`type_cost_result3`:"
-msgstr ""
-
-# 7fc792793b7c4e65ba68cea3f25384aa
-#: ../../../src/kdijkstra/doc/index.rst:74
-msgid "path target id (identifies the target path)."
-msgstr ""
-
-# c43bcd54fee6435fbe6afd2ec4bb6d65
-#: ../../../src/kdijkstra/doc/index.rst:75
-msgid "path edge source node id"
-msgstr ""
-
-# a567112ee5584a46ac397cb9783627a8
-#: ../../../src/kdijkstra/doc/index.rst:76
-msgid "path edge id (``-1`` for the last row)"
-msgstr ""
-
-# 47af04f2ce09412f8475df30be9581ae
-#: ../../../src/kdijkstra/doc/index.rst:77
-msgid "cost to traverse this edge or -1.0 if there is no path to this target"
-msgstr ""
-
-# e7349c2020bc491aaa02b3eb1ebca791
-#: ../../../src/kdijkstra/doc/index.rst:81
-msgid "History"
-msgstr "Geschichte"
-
-# f7b3cf1f2e494a4c8697b712adcbd1fc
-#: ../../../src/kdijkstra/doc/index.rst:82
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# adf5de36019d4982b76cd696909168b0
-#: ../../../src/kdijkstra/doc/index.rst:86
-msgid "Examples"
-msgstr "Beispiele"
-
-# f332ab5afb39404284be98f0e9a2c8dc
-#: ../../../src/kdijkstra/doc/index.rst:88
-msgid "Returning a ``cost`` result"
-msgstr ""
-
-# cb5abec6a55e41a4a61c22fd3f461110
-#: ../../../src/kdijkstra/doc/index.rst:123
-msgid "Returning a ``path`` result"
-msgstr ""
-
-# d2e7b4076702425a9c6928a0cc4b997e
-#: ../../../src/kdijkstra/doc/index.rst:144
-msgid ""
-"There is no assurance that the result above will be ordered in the direction"
-" of flow of the route, ie: it might be reversed. You will need to check if "
-"``st_startPoint()`` of the route is the same as the start node location and "
-"if it is not then call ``st_reverse()`` to reverse the direction of the "
-"route. This behavior is a function of PostGIS functions ``st_linemerge()`` "
-"and ``st_union()`` and not pgRouting."
-msgstr ""
-
-# d6928031c7d047a5999f03c79c5bcfea
-#: ../../../src/kdijkstra/doc/index.rst:153
-msgid "See Also"
-msgstr "Siehe auch"
-
-# cd86a4612fe944acbe5a39daaf52dafd
-#: ../../../src/kdijkstra/doc/index.rst:155
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-# c2386bf8c6314521abe162d0bf548225
-#: ../../../src/kdijkstra/doc/index.rst:156
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/ksp/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/ksp/doc/index.po
deleted file mode 100644
index 7627fa4..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/ksp/doc/index.po
+++ /dev/null
@@ -1,192 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:15+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# dc72571c7ce5498b92c659e3e482c885
-#: ../../../src/ksp/doc/index.rst:13
-msgid "pgr_ksp - K-Shortest Path"
-msgstr ""
-
-# 57b24beea69846f58a8cb9b1a7a892b5
-#: ../../../src/ksp/doc/index.rst:20
-msgid "Name"
-msgstr "Name"
-
-# b3d0fc92b23443c8b718233c1e16f052
-#: ../../../src/ksp/doc/index.rst:22
-msgid "``pgr_ksp`` — Returns the \"K\" shortest paths."
-msgstr ""
-
-# 0e60ee2dfa944557a1e9c76106489a7f
-#: ../../../src/ksp/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# bcf915dc485c4e3b90c9a8ea251b55d1
-#: ../../../src/ksp/doc/index.rst:28
-msgid ""
-"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
-" number of shortest paths desired. Returns a set of :ref:`pgr_costResult3 "
-"<type_cost_result3>` (seq, id1, id2, id3, cost) rows, that make up a path."
-msgstr ""
-
-# 46b5ce0d54a64718819888b77b007080
-#: ../../../src/ksp/doc/index.rst:37
-msgid "Description"
-msgstr "Beschreibung"
-
-# dddbbca8781f41eab4aac1d4e2ecdf32
-#: ../../../src/ksp/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-# 575d21e3bc994dc3a92a7c6cbb0ed6a2
-#: ../../../src/ksp/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-# 589751b9c7d34dac9b4eeb12894fd648
-#: ../../../src/ksp/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-# 6567c097438040d9b678e88df7521b35
-#: ../../../src/ksp/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-# a1e24bd423dd445889b72928d964a5ec
-#: ../../../src/ksp/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr ""
-
-# ed76ed5e3a504c7aa3a35ea3fa5b4c16
-#: ../../../src/ksp/doc/index.rst:50
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when ``has_rcost`` the parameter is ``true`` (see the above remark about "
-"negative costs)."
-msgstr ""
-
-# 588bdec4303b49869b6d1eedd541c198
-#: ../../../src/ksp/doc/index.rst:52
-msgid "``int4`` id of the start point"
-msgstr ""
-
-# 96b44480fac34f6286b863e6c75d4d8a
-#: ../../../src/ksp/doc/index.rst:53
-msgid "``int4`` id of the end point"
-msgstr ""
-
-# 0ffd51df58754f0b89f1b3ad6f75b632
-#: ../../../src/ksp/doc/index.rst:54
-msgid "``int4`` number of alternative routes"
-msgstr ""
-
-# 0fc58370aa30454ea32a2c8b9f3b14a3
-#: ../../../src/ksp/doc/index.rst:55
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr ""
-
-# dc8dfcffbd604441a95743930181b042
-#: ../../../src/ksp/doc/index.rst:57
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# 611d6bbb82ca4987ae39fd45bb107c2b
-#: ../../../src/ksp/doc/index.rst:59
-msgid "sequence for ording the results"
-msgstr ""
-
-# b79966a030e04ee3b5e992b5a6858947
-#: ../../../src/ksp/doc/index.rst:60
-msgid "route ID"
-msgstr ""
-
-# a324539cdc2e4202b416aa19693d1c3f
-#: ../../../src/ksp/doc/index.rst:61
-msgid "node ID"
-msgstr ""
-
-# 4d87667a7b744eec999819b399fee50c
-#: ../../../src/ksp/doc/index.rst:62
-msgid "edge ID (``0`` for the last row)"
-msgstr ""
-
-# baaba3dc621142bd8fc6b8ba32eb2b2e
-#: ../../../src/ksp/doc/index.rst:63
-msgid "cost to traverse from ``id2`` using ``id3``"
-msgstr ""
-
-# b585e07096f74b0389f8b7dffc969faa
-#: ../../../src/ksp/doc/index.rst:65
-msgid ""
-"KSP code base taken from http://code.google.com/p/k-shortest-paths/source."
-msgstr ""
-
-# 2d033ec25b09426c82d7bc27450b0e13
-#: ../../../src/ksp/doc/index.rst:69
-msgid "History"
-msgstr "Geschichte"
-
-# 2910d7995ec342b995c857c1e8ea0ac3
-#: ../../../src/ksp/doc/index.rst:70
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 0fb494088fa241d6a4aa5482217c2851
-#: ../../../src/ksp/doc/index.rst:74
-msgid "Examples"
-msgstr "Beispiele"
-
-# d3ea07b1c58a42ea9f68558e55eb90a0
-#: ../../../src/ksp/doc/index.rst:76
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-# 7c55b739634c4401b46c4014669d2896
-#: ../../../src/ksp/doc/index.rst:104
-msgid "With ``reverse_cost``"
-msgstr ""
-
-# 2412b0b4ec044973a1c2304488a73b1a
-#: ../../../src/ksp/doc/index.rst:131
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 14d58e1d3a8f4723bb11ed549594cb26
-#: ../../../src/ksp/doc/index.rst:135
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 73cf1bb94518468996cdd3ff6bf897be
-#: ../../../src/ksp/doc/index.rst:137
-msgid ":ref:`type_cost_result3`"
-msgstr ":ref:`type_cost_result3`"
-
-# 3dde120556744d3f9ce7d6e9b9f0c1ee
-#: ../../../src/ksp/doc/index.rst:138
-msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
-msgstr "http://en.wikipedia.org/wiki/K_shortest_path_routing"
diff --git a/doc/i18n/de/LC_MESSAGES/src/trsp/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/trsp/doc/index.po
deleted file mode 100644
index 605a287..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/trsp/doc/index.po
+++ /dev/null
@@ -1,259 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-04 04:24+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 15b2085c08994c0bafb02ec924886b36
-#: ../../../src/trsp/doc/index.rst:13
-msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
-msgstr ""
-
-# 001ce231c65b42a19a62809e63a0b153
-#: ../../../src/trsp/doc/index.rst:23
-msgid "Name"
-msgstr "Name"
-
-# e7d332e28a5540d2af454386b4bf39e5
-#: ../../../src/trsp/doc/index.rst:25
-msgid ""
-"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
-msgstr ""
-
-# 9f0ad26664fc4d2aa44b49daf329cbcf
-#: ../../../src/trsp/doc/index.rst:29
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# 2d74de00ff7144f1a68f40ec98315004
-#: ../../../src/trsp/doc/index.rst:31
-msgid ""
-"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
-"can optionally take into account complicated turn restrictions like those "
-"found in real work navigable road networks. Performamnce wise it is nearly "
-"as fast as the A* search but has many additional features like it works with"
-" edges rather than the nodes of the network. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
-"make up a path."
-msgstr ""
-
-# 258764bba06c4ef58ac4b5f8fc99fa51
-#: ../../../src/trsp/doc/index.rst:47
-msgid "Description"
-msgstr "Beschreibung"
-
-# db4ead8b9b724ada9fcd352b21c13c47
-#: ../../../src/trsp/doc/index.rst:49
-msgid ""
-"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
-":ref:`shooting_star` in that you can specify turn restrictions."
-msgstr ""
-
-# f8c43b665915464c9bfc35604fd91aee
-#: ../../../src/trsp/doc/index.rst:51
-msgid ""
-"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
-"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
-"This makes adding turn restrictions to a road network much easier than "
-"trying to add them to Shooting Star where you had to ad the same edges "
-"multiple times if it was involved in a restriction."
-msgstr ""
-
-# b95a0195c5bd43caa2d6cfb1f998a956
-#: ../../../src/trsp/doc/index.rst:54
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-# 580e965db4a1466da14357ff969e2429
-#: ../../../src/trsp/doc/index.rst:61
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-# 1240ecd9b29e479ca8b980c6282c5182
-#: ../../../src/trsp/doc/index.rst:62
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-# f155b6dee53749049cc6a9eac4126083
-#: ../../../src/trsp/doc/index.rst:63
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-# 882a25b98f4f4c7cb2f288cf7c327c4a
-#: ../../../src/trsp/doc/index.rst:64
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr ""
-
-# 0a3a626251a840ab96796ef2ab9b91c5
-#: ../../../src/trsp/doc/index.rst:65
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr ""
-
-# 510dbeaa32914dc18ed3e6799281fbef
-#: ../../../src/trsp/doc/index.rst:67
-msgid "``int4`` **NODE id** of the start point"
-msgstr ""
-
-# ece6f31366044417b07933b2c817c5df
-#: ../../../src/trsp/doc/index.rst:68
-msgid "``int4`` **NODE id** of the end point"
-msgstr ""
-
-# 31ad6aa2c51741de8dbafceaf67d397a
-#: ../../../src/trsp/doc/index.rst:69
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-# 6605eca503604a6daa20167fcbdd05fa
-#: ../../../src/trsp/doc/index.rst:70
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr ""
-
-# 332748df482046d7b70e9012364915e3
-#: ../../../src/trsp/doc/index.rst:72
-msgid ""
-"(optional) a SQL query, which should return a set of rows with the following"
-" columns:"
-msgstr ""
-
-# 936b80e377bd457081e14e36770ab130
-#: ../../../src/trsp/doc/index.rst:78
-msgid "``float8`` turn restriction cost"
-msgstr ""
-
-# d1715703f624412385536b88c78a32df
-#: ../../../src/trsp/doc/index.rst:79
-msgid "``int4`` target id"
-msgstr ""
-
-# 83a22871a9f6419190e4bf313f49c672
-#: ../../../src/trsp/doc/index.rst:80
-msgid ""
-"``text`` commar seperated list of edges in the reverse order of ``rule``"
-msgstr ""
-
-# d0f078a9c92348a9bc1e880a0835b24c
-#: ../../../src/trsp/doc/index.rst:82
-msgid ""
-"Another variant of TRSP allows to specify **EDGE id** of source and target "
-"together with a fraction to interpolate the position:"
-msgstr ""
-
-# 021daf08280643738cfc9e67f4fa6fce
-#: ../../../src/trsp/doc/index.rst:84
-msgid "``int4`` **EDGE id** of the start edge"
-msgstr ""
-
-# 6c0b782e2a2d4ee7aac26b031327b48d
-#: ../../../src/trsp/doc/index.rst:85
-msgid "``float8`` fraction of 1 defines the position on the start edge"
-msgstr ""
-
-# 4f60cd31727245739cba5b4be8840191
-#: ../../../src/trsp/doc/index.rst:86
-msgid "``int4`` **EDGE id** of the end edge"
-msgstr ""
-
-# 8a114786a737431f9d36f79718505b0c
-#: ../../../src/trsp/doc/index.rst:87
-msgid "``float8`` fraction of 1 defines the position on the end edge"
-msgstr ""
-
-# 164eff72cc834e76afafdb24fae73b05
-#: ../../../src/trsp/doc/index.rst:89
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# f1e7b63cce7e45dca113b9c63b80531a
-#: ../../../src/trsp/doc/index.rst:91
-msgid "row sequence"
-msgstr ""
-
-# 9224c385fbc84c6fb16a5752bb0dcf0f
-#: ../../../src/trsp/doc/index.rst:92
-msgid "node ID"
-msgstr ""
-
-# 838eabec61db4ac1a64b9bb7b12a5bec
-#: ../../../src/trsp/doc/index.rst:93
-msgid "edge ID (``-1`` for the last row)"
-msgstr ""
-
-# dd4d4036ca89412ca65bb9dc36a98ff5
-#: ../../../src/trsp/doc/index.rst:94
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr ""
-
-# 3e879e6cbece4a27afe4738bdef1080b
-#: ../../../src/trsp/doc/index.rst:98
-msgid "History"
-msgstr "Geschichte"
-
-# 16b0789da1954e179858d593d9973be6
-#: ../../../src/trsp/doc/index.rst:99
-msgid "New in version 2.0.0"
-msgstr "Neu in Version 2.0.0"
-
-# 36dc0630c4e04859ba0a41aa3da19ed6
-#: ../../../src/trsp/doc/index.rst:103
-msgid "Examples"
-msgstr "Beispiele"
-
-# 0c40d66ced8b4b48914b3bb328c5f10e
-#: ../../../src/trsp/doc/index.rst:105
-msgid "Without turn restrictions"
-msgstr ""
-
-# 456ae3d3abc547978bd147c884275ac6
-#: ../../../src/trsp/doc/index.rst:126
-msgid "With turn restrictions"
-msgstr ""
-
-# 2541f0dba78f4dfe93fcda086ddeba34
-#: ../../../src/trsp/doc/index.rst:128
-msgid ""
-"Turn restrictions require additional information, which can be stored in a "
-"separate table:"
-msgstr ""
-
-# 4d9e1ab740a44fe990829e06dcc32f65
-#: ../../../src/trsp/doc/index.rst:144
-msgid "Then a query with turn restrictions is created as:"
-msgstr ""
-
-# 61dd0262b80b4db58f637fe5d2dd1ae8
-#: ../../../src/trsp/doc/index.rst:167
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 48bf89e209cc4518904b1b99e1a89f99
-#: ../../../src/trsp/doc/index.rst:171
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 7988e08198b04952bc5a1cb22cce310f
-#: ../../../src/trsp/doc/index.rst:173
-msgid ":ref:`type_cost_result`"
-msgstr ""
diff --git a/doc/i18n/de/LC_MESSAGES/src/tsp/doc/index.po b/doc/i18n/de/LC_MESSAGES/src/tsp/doc/index.po
deleted file mode 100644
index f13980b..0000000
--- a/doc/i18n/de/LC_MESSAGES/src/tsp/doc/index.po
+++ /dev/null
@@ -1,352 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: German (http://www.transifex.com/projects/p/pgrouting/language/de/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 588bb56f073f49f89c741579fbc2c17c
-#: ../../../src/tsp/doc/index.rst:13
-msgid "pgr_tsp - Traveling Sales Person"
-msgstr ""
-
-# f69daf53ba3c47ca846fbcbbcf6aa25d
-#: ../../../src/tsp/doc/index.rst:23
-msgid "Name"
-msgstr "Name"
-
-# 5ccbfce91c604bac96d73fdbc656f675
-#: ../../../src/tsp/doc/index.rst:25
-msgid ""
-"``pgr_tsp`` - Returns the best route from a start node via a list of nodes."
-msgstr ""
-
-# cd69b4b6495b448fa23e10806d8cd704
-#: ../../../src/tsp/doc/index.rst:26
-msgid ""
-"``pgr_tsp`` - Returns the best route order when passed a disance matrix."
-msgstr ""
-
-# eee8057e1f874582a8d82dbf95c33b83
-#: ../../../src/tsp/doc/index.rst:27
-msgid ""
-"``pgr_makeDistanceMatrix`` - Returns a Eucleadian distance Matrix from the "
-"points provided in the sql result."
-msgstr ""
-
-# c0ecbed749044ceea6ac67da6a92e851
-#: ../../../src/tsp/doc/index.rst:31
-msgid "Synopsis"
-msgstr "Übersicht"
-
-# bccf8e0d00d545fbb53db8de741e3629
-#: ../../../src/tsp/doc/index.rst:33
-msgid ""
-"The travelling salesman problem (TSP) or travelling salesperson problem asks"
-" the following question: Given a list of cities and the distances between "
-"each pair of cities, what is the shortest possible route that visits each "
-"city exactly once and returns to the origin city? This algoritm uses "
-"simulated annealing to return a high quality approximate solution. Returns a"
-" set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows,"
-" that make up a path."
-msgstr ""
-
-# 4817fee0103a41c4816125ab5b8e50c9
-#: ../../../src/tsp/doc/index.rst:41
-msgid ""
-"Returns a set of (seq integer, id1 integer, id2 integer, cost float8) that "
-"is the best order to visit the nodes in the matrix. ``id1`` is the index "
-"into the distance matrix. ``id2`` is the point id from the sql."
-msgstr ""
-
-# d81ab41209864a73a7ffa72604da479d
-#: ../../../src/tsp/doc/index.rst:43
-msgid ""
-"If no ``end_id`` is supplied or it is -1 or equal to the start_id then the "
-"TSP result is assumed to be a circluar loop returning back to the start. If "
-"``end_id`` is supplied then the route is assumed to start and end the the "
-"designated ids."
-msgstr ""
-
-# 50853fe7ce3a4230ba1ad32e1820ff86
-#: ../../../src/tsp/doc/index.rst:52
-msgid "Description"
-msgstr "Beschreibung"
-
-# 5c75019d15bb43c39560772bc3ee4607
-#: ../../../src/tsp/doc/index.rst:55
-msgid "With Euclidean distances"
-msgstr ""
-
-# 66a3e0216d3948b082421f130af849fc
-#: ../../../src/tsp/doc/index.rst:56
-msgid ""
-"The TSP solver is based on ordering the points using straight line "
-"(euclidean) distance [#f0]_ between nodes. The implementation is using an "
-"approximation algorithm that is very fast. It is not an exact solution, but "
-"it is guaranteed that a solution is returned after certain number of "
-"iterations."
-msgstr ""
-
-# 7b0c0aa5e05b441ea75bea14ed4902cd
-#: ../../../src/tsp/doc/index.rst:58
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-# 370960d08a674040ba2f83ed085dbb48
-#: ../../../src/tsp/doc/index.rst:64
-msgid "``int4`` identifier of the vertex"
-msgstr ""
-
-# 041d921890f847d1bcb77251f630f8d5
-#: ../../../src/tsp/doc/index.rst:65
-msgid "``float8`` x-coordinate"
-msgstr ""
-
-# 8662fbcf22f74a82900515c839683881
-#: ../../../src/tsp/doc/index.rst:66
-msgid "``float8`` y-coordinate"
-msgstr ""
-
-# c71cd39ce3cf4e3e9301579f9a596cdb
-#: ../../../src/tsp/doc/index.rst:68
-msgid "``int4`` id of the start point"
-msgstr ""
-
-# 5165a6a173194137bb498d88e0957b35
-#: ../../../src/tsp/doc/index.rst:69
-msgid ""
-"``int4`` id of the end point, This is *OPTIONAL*, if include the route is "
-"optimized from start to end, otherwise it is assumed that the start and the "
-"end are the same point."
-msgstr ""
-
-# d73e6887338e4da3a107b753d970eb83
-#: ../../../src/tsp/doc/index.rst:72
-msgid "The function returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# 6a00ce9fe1e84a708606d26b563355af
-# c113028794ef4a08a59271625c0ae721
-#: ../../../src/tsp/doc/index.rst:74 ../../../src/tsp/doc/index.rst:107
-msgid "row sequence"
-msgstr ""
-
-# 486fb735dda64593ba3d2773c140d01f
-#: ../../../src/tsp/doc/index.rst:75
-msgid "internal index to the distance matric"
-msgstr ""
-
-# 47f9555a7ecb4013a9b7b1744788a432
-#: ../../../src/tsp/doc/index.rst:76
-msgid "``id`` of the node"
-msgstr ""
-
-# 879b651101634a9fa1850e585291b13d
-#: ../../../src/tsp/doc/index.rst:77
-msgid "cost to traverse from the current node to the next node."
-msgstr ""
-
-# 1219dbad1dbc483e8c66e492b2ddbb85
-#: ../../../src/tsp/doc/index.rst:80
-msgid "Create a distance matrix"
-msgstr ""
-
-# 0c6c6e0816e1404798c896777ad941f2
-#: ../../../src/tsp/doc/index.rst:81
-msgid ""
-"For users that need a distance matrix we have a simple function that takes "
-"SQL in ``sql`` as described above and returns a record with ``dmatrix`` and "
-"``ids``."
-msgstr ""
-
-# a9ebba1a8cbb4af9a325f5ebcf4c9c50
-#: ../../../src/tsp/doc/index.rst:87
-msgid "The function returns a record of ``dmatrix``, ``ids``:"
-msgstr ""
-
-# 79831990a066442dbf3d4f24cebf6aef
-#: ../../../src/tsp/doc/index.rst:89
-msgid "``float8[][]`` a symeteric Euclidean distance matrix based on ``sql``."
-msgstr ""
-
-# afbd6f830d5c4ab2847548f86f90dca1
-#: ../../../src/tsp/doc/index.rst:90
-msgid ""
-"``integer[]`` an array of ids as they are ordered in the distance matrix."
-msgstr ""
-
-# f0b8169b552646f980bd6b7e0e4b580c
-#: ../../../src/tsp/doc/index.rst:94
-msgid "With distance matrix"
-msgstr ""
-
-# e50bb0a665844d7682d3a1b216adb70e
-#: ../../../src/tsp/doc/index.rst:95
-msgid ""
-"For users, that do not want to use Euclidean distances, we also provode the "
-"ability to pass a distance matrix that we will solve and return an ordered "
-"list of nodes for the best order to visit each. It is up to the user to "
-"fully populate the distance matrix."
-msgstr ""
-
-# 900d7d9a9cfe4f48a183120d63a6b5fb
-#: ../../../src/tsp/doc/index.rst:97
-msgid "``float[][]`` distance matrix of points"
-msgstr ""
-
-# ffe889182e9b49e48573a830538e2f76
-#: ../../../src/tsp/doc/index.rst:98
-msgid "``int4`` index of the start point"
-msgstr ""
-
-# 7ff184ff9d034484941644d3528f9b11
-#: ../../../src/tsp/doc/index.rst:99
-msgid "``int4`` (optional) index of the end node"
-msgstr ""
-
-# a7886e5620ad48308a92c602d785b979
-#: ../../../src/tsp/doc/index.rst:101
-msgid ""
-"The ``end`` node is an optional parameter, you can just leave it out if you "
-"want a loop where the ``start`` is the depot and the route returns back to "
-"the depot. If you include the ``end`` parameter, we optimize the path from "
-"``start`` to ``end`` and minimize the distance of the route while include "
-"the remaining points."
-msgstr ""
-
-# 3328187fb6f24c06bd2ade2fb9daff6c
-#: ../../../src/tsp/doc/index.rst:103
-msgid ""
-"The distance matrix is a multidimensional `PostgreSQL array type "
-"<http://www.postgresql.org/docs/9.1/static/arrays.html>`_ that must be ``N x"
-" N`` in size."
-msgstr ""
-
-# 1768ea2352234c129198dbacd1452e65
-#: ../../../src/tsp/doc/index.rst:105
-msgid "The result will be N records of ``[ seq, id ]``:"
-msgstr ""
-
-# f8e56b07da754f4396ccb1daa52b8213
-#: ../../../src/tsp/doc/index.rst:108
-msgid "index into the matrix"
-msgstr ""
-
-# 700ed687dfd24327b5866cb91007c0ed
-#: ../../../src/tsp/doc/index.rst:112
-msgid "Footnotes"
-msgstr ""
-
-# bae6c65f712c4ff9b0fd388153cf42f7
-#: ../../../src/tsp/doc/index.rst:113
-msgid ""
-"There was some thought given to pre-calculating the driving distances "
-"between the nodes using Dijkstra, but then I read a paper (unfortunately I "
-"don't remember who wrote it), where it was proved that the quality of TSP "
-"with euclidean distance is only slightly worse than one with real distance "
-"in case of normal city layout. In case of very sparse network or rivers and "
-"bridges it becomes more inaccurate, but still wholly satisfactory. Of course"
-" it is nice to have exact solution, but this is a compromise between quality"
-" and speed (and development time also). If you need a more accurate "
-"solution, you can generate a distance matrix and use that form of the "
-"function to get your results."
-msgstr ""
-
-# aeabcb34ceb245ac8c9c4dd783bae696
-#: ../../../src/tsp/doc/index.rst:117
-msgid "History"
-msgstr "Geschichte"
-
-# 83259e3ddfad4bc8a503e3daa04b99d5
-#: ../../../src/tsp/doc/index.rst:118
-msgid "Renamed in version 2.0.0"
-msgstr "Umbenannt in Version 2.0.0"
-
-# 537d6a4a4cc64451857537f64823ac72
-#: ../../../src/tsp/doc/index.rst:119
-msgid "GAUL dependency removed in version 2.0.0"
-msgstr ""
-
-# 51493667159c4c6395a48ada45bc3ddb
-#: ../../../src/tsp/doc/index.rst:123
-msgid "Examples"
-msgstr "Beispiele"
-
-# 7c2ef386cc424fe5a5781147e3ea4cc2
-#: ../../../src/tsp/doc/index.rst:125
-msgid ""
-"Using SQL parameter (all points from the table, atarting from 6 and ending "
-"at 5). We have listed two queries in this example, the first might vary from"
-" system to system because there are multiple equivalent answers. The second "
-"query should be stable in that the length optimal route should be the same "
-"regardless of order."
-msgstr ""
-
-# 41662adbab25461784b154100646e929
-#: ../../../src/tsp/doc/index.rst:159
-msgid "Using distance matrix (A loop starting from 1)"
-msgstr ""
-
-# 936788f1e0c2469ba7d71161a6320815
-#: ../../../src/tsp/doc/index.rst:161
-msgid ""
-"When using just the start node you are getting a loop that starts with 1, in"
-" this case, and travels through the other nodes and is implied to return to "
-"the start node from the last one in the list. Since this is a circle there "
-"are at least two possible paths, one clockwise and one counter-clockwise "
-"that will have the same length and be equall valid. So in the following "
-"example it is also possible to get back a sequence of ids = {1,0,3,2} "
-"instead of the {1,2,3,0} sequence listed below."
-msgstr ""
-
-# 95907dec9016432f8b75f45be9e231c3
-#: ../../../src/tsp/doc/index.rst:175
-msgid "Using distance matrix (Starting from 1, ending at 2)"
-msgstr ""
-
-# c376ad2787cd4f4abf9764fbe86699b2
-#: ../../../src/tsp/doc/index.rst:189
-msgid ""
-"Using the vertices table edge_table_vertices_pgr generated by "
-":ref:`pgr_create_topology`. Again we have two queries where the first might "
-"vary and the second is based on the overal path length."
-msgstr ""
-
-# c3d22bacc29d477ca8c5a118ddedb8f4
-#: ../../../src/tsp/doc/index.rst:226
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-# 4f5c93447689413e86e9ed2751abff8f
-#: ../../../src/tsp/doc/index.rst:230
-msgid "See Also"
-msgstr "Siehe auch"
-
-# 5f49eba1079b40d297bf0872ae69fe06
-#: ../../../src/tsp/doc/index.rst:232
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-# 81d591e953334f24b72e9680e2ae42f9
-#: ../../../src/tsp/doc/index.rst:233
-msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
-msgstr ""
-
-# 2c62ab4de73248479f416573176f0c4a
-#: ../../../src/tsp/doc/index.rst:234
-msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
-msgstr ""
diff --git a/doc/i18n/es/LC_MESSAGES/doc/index.po b/doc/i18n/es/LC_MESSAGES/doc/index.po
deleted file mode 100644
index a9cb4c7..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/index.po
+++ /dev/null
@@ -1,359 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 21:48\n"
-"PO-Revision-Date: 2013-09-24 04:27+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# c86028e885c64c0987f44bbcc08fb02a
-#: ../../index.rst:13
-msgid "Table of Contents"
-msgstr "Contenido"
-
-# 32111013f9c94976b553857e93812724
-#: ../../index.rst:15
-msgid ""
-"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
-"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
-"and other network analysis functionality."
-msgstr "pgRouting extiende a las bases de datos geoespaciales `PostGIS <http://postgis.net>`_ /`PostgreSQL <http://postgresql.org>`_ para proveer ruteo geoespacial y funcionalidad de análisis de redes."
-
-# cd5bc882f7f3412b8a937ba25e203de8
-#: ../../index.rst:17
-msgid "This is the manual for pgRouting |release|."
-msgstr "Este es el manual para pgRouting |release|."
-
-# d928c97ad24c4daeae96bb02b87c5a6d
-#: ../../index.rst:23
-msgid ""
-"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
-" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
-"free to use this material any way you like, but we ask that you attribute "
-"credit to the pgRouting Project and wherever possible, a link back to "
-"http://pgrouting.org. For other licenses used in pgRouting see the "
-":ref:`license` page."
-msgstr "El Manual de pgRouting está bajo la licencia `Licencia Creative Commons Attribution-Share Alike 3.0 <http://creativecommons.org/licenses/by-sa/3.0/>`_. Eres libre para usar este material de la manera que desees, pero pedimos que le otorges el crédito al proyecto pgRouting y cuando sea posible le pongas una liga hacia http://pgrouting.org. Para otras licencias usadas en pgRouting ver :ref:`Licencias <license>`."
-
-# 9024be66e4ef47b9b53de9a42af4550d
-#: ../../index.rst:27
-msgid "General"
-msgstr "Generalidades"
-
-# 268439cb0a4f4417b56ca21d51394850
-#: ../../index.rst:40
-msgid "Tutorial"
-msgstr "Tutoriales"
-
-# bf01af3d0d3244f283f5b3fab105caad
-#: ../../index.rst:42
-msgid ":ref:`Tutorial <tutorial1>`"
-msgstr ":ref:`Tutorial <tutorial1>`"
-
-# 116777f411a248f9afe42b9b51679b78
-#: ../../index.rst:44
-msgid ":ref:`Getting started <tutorial>`"
-msgstr ":ref:`Comenzando a trabajar <tutorial>`"
-
-# 2066f7d15ec8444c833547cfb3b06a98
-#: ../../index.rst:45
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ":ref:`topology` para tener una visión general de una topología de algoritmos de encaminamiento."
-
-# 2753f71d0fc14b0bbabb14a5180b10d9
-#: ../../index.rst:46
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ":ref:`analytics` para tener una visión general del análisis de un gráfico."
-
-# 042f858c16ca4c7ea9fb4baa62efdd44
-#: ../../index.rst:47
-msgid ":ref:`custom_query` that is used in the routing algorithms."
-msgstr ":ref:`custom_query` que se utiliza en los algoritmos de ruteo."
-
-# 13f4fade1d47458abf8ba3706110d874
-#: ../../index.rst:48
-msgid ":ref:`performance` to improve your performance."
-msgstr ":ref:`performance` para mejorar su rendimiento."
-
-# c3ccc6e6651e47f9b9d271c60976b15c
-#: ../../index.rst:49
-msgid ":ref:`custom_wrapper` to colaborate with a wrapper."
-msgstr ":ref:`custom_wrapper` para colaborar con un envoltorio."
-
-# 233aebcc461745c2b0811b7f4328ce3a
-#: ../../index.rst:50
-msgid ":ref:`recipes` to colaborate with a recipe."
-msgstr ":ref:`recipes` para colaborar con una receta."
-
-# 3ae724b7e3714db2942fb7c77124cfc4
-#: ../../index.rst:51
-msgid ":ref:`sampledata` that is used in the examples of this manual."
-msgstr ":ref:`sampledata` que se utiliza en los ejemplos de este manual."
-
-# c92e843c52364963a35112272cb814fd
-#: ../../index.rst:61
-msgid ""
-"For a more complete introduction how to build a routing application read the"
-" `pgRouting Workshop <http://workshop.pgrouting.org>`_."
-msgstr "Para una introducción más completa de como construir una aplicación de ruteo, leer el `Taller de pgRouting <http://workshop.pgrouting.org>`_."
-
-# 524c7dc0d5654f319fc62f2ae08b86f7
-#: ../../index.rst:65
-msgid "Data Types"
-msgstr "Tipos de Datos"
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:67
-msgid ":ref:`data_types`"
-msgstr ":ref:`data_types`"
-
-# ef6b2fcc629f48c7b88d3ac78527893a
-#: ../../index.rst:69
-msgid ""
-":ref:`type_cost_result` - A set of records to describe a path result with "
-"cost attribute."
-msgstr ":ref:`type_cost_result` — un conjunto de registros para describir un resultado de camino con el atributo de costo."
-
-# 84a33ec406d2412c9e681656b4cb9b43
-#: ../../index.rst:70
-msgid ""
-":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
-" path result with cost attribute."
-msgstr ":ref:`pgr_costResult3[]<type_cost_result3>` — un conjunto de registros para describir un resultado de ruta con el atributo de costo."
-
-# 6a2ba698d366498caa046c97178f05d5
-#: ../../index.rst:71
-msgid ""
-":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
-"path result with geometry attribute."
-msgstr ":ref:`pgr_geomResult <type_geom_result>` — un conjunto de registros para describir el resultado de un camino que incluye el atributo de la geometría."
-
-# 9c4629c11bc143a184a6564177b0e7bd
-#: ../../index.rst:80
-msgid "Functions reference"
-msgstr "Referencia de Funciones"
-
-# 1f3545abdf7c42cdb73e76f5f149a31b
-#: ../../index.rst:82
-msgid ":ref:`topology_functions`"
-msgstr ":ref:`topology_functions`"
-
-# 058f97425ccb4cb5870163ebbe948a72
-#: ../../index.rst:84
-msgid ""
-":ref:`pgr_create_topology` - to create a topology based on the geometry."
-msgstr ":ref:`pgr_create_topology` para crear la topología basado en la geometría."
-
-# e839b8e9c3664685a6dc346cac1ea039
-#: ../../index.rst:85
-msgid ""
-":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
-"the source and target information."
-msgstr ":ref:`pgr_create_vert_table` - para reconstruir la tabla vértices basándose en la información de origen y de destino."
-
-# 5d9cd0c5ac3043b99ae4fb495036d05f
-#: ../../index.rst:86
-msgid ""
-":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
-"table."
-msgstr ":ref:`pgr_analyze_graph` Para analizar los bordes y vértices de la tabla de bordes."
-
-# 714b5f8623914db981048d201845d040
-#: ../../index.rst:87
-msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
-msgstr ":ref:`pgr_analyze_oneway` para analizar la direccionalidad de los bordes."
-
-# 5f3a1ebfa74d4463912b1c695028121d
-#: ../../index.rst:88
-msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
-msgstr ":ref:`pgr_node_network` - para crear nodos a una tabla de borde sin nodos."
-
-# 655d025751764d39b841997c13775783
-#: ../../index.rst:90
-msgid ":ref:`routing_functions`"
-msgstr ":ref:`routing_functions`"
-
-# 6a94d292d24b45f7aafda5a754a6ba30
-#: ../../index.rst:92
-msgid ""
-":ref:`pgr_apspJohnson <pgr_apsp_johnson>`- All Pairs Shortest Path, "
-"Johnson’s Algorithm"
-msgstr ":ref:`pgr_apspJohnson <pgr_apsp_johnson>` - Algoritmo de la ruta más corta de todos los pares de la ruta más corta de Johnson"
-
-# fbda3d31d88e4df891d2095dfbb8ab52
-#: ../../index.rst:93
-msgid ""
-":ref:`pgr_apspWarshall<pgr_apsp_warshall>` - All Pairs Shortest Path, Floyd-"
-"Warshall Algorithm"
-msgstr ":ref:`pgr_apspWarshall<pgr_apsp_warshall>` - camino más corto de todos los pares, Algoritmo de Floyd-Warshall"
-
-# 10cf6d194dcf4af2be81f0f8034cd5cb
-#: ../../index.rst:94
-msgid ":ref:`pgr_astar<pgr_astar>` - Shortest Path A*"
-msgstr ":ref:`pgr_astar<pgr_astar>` - Camino más corto A*"
-
-# 72aa55b5147341e6be8b3ac29edc5056
-#: ../../index.rst:95
-msgid ":ref:`pgr_bdAstar<bd_astar>` - Bi-directional A* Shortest Path"
-msgstr ":ref:`pgr_bdAstar<bd_astar>` - Camino más corto bidireccional A*"
-
-# 659e5f56cae84ce598a95fe83608da28
-#: ../../index.rst:96
-msgid ""
-":ref:`pgr_bdDijkstra<bd_dijkstra>` - Bi-directional Dijkstra Shortest Path"
-msgstr ":ref:`pgr_bdDijkstra<bd_dijkstra>` - Camino más corto bidireccional de Dijkstra"
-
-# 2a0544bf5ac444cb9f814c98ddd9cac0
-#: ../../index.rst:97
-msgid ":ref:`pgr_dijkstra<pgr_dijkstra>` - Shortest Path Dijkstra"
-msgstr ":ref:`pgr_dijkstra<pgr_dijkstra>` - Camino más corto de Dijkstra"
-
-# 0d062718bba84332bc05094be53c7b0b
-#: ../../index.rst:98
-msgid ""
-":ref:`pgr_kDijkstra<pgr_kdijkstra>` - Mutliple destination Shortest Path "
-"Dijkstra"
-msgstr ":ref:`pgr_kDijkstra<pgr_kdijkstra>` - Camino más corto camino con múltiples destinos de Dijkstra"
-
-# 388e0ef15cac4c7a87ed5f5f7d164eab
-#: ../../index.rst:99
-msgid ":ref:`pgr_ksp<ksp>` - K-Shortest Path"
-msgstr ":ref:`pgr_ksp<ksp>` - K caminos más cortos"
-
-# 488a2b3901c548b394c466b7580ea9a4
-#: ../../index.rst:100
-msgid ":ref:`pgr_tsp<pgr_tsp>` - Traveling Sales Person"
-msgstr ":ref:`pgr_tsp<pgr_tsp>` - Vendeor Viajante"
-
-# dc4452cb04fb47fb9d72b4a408ffabeb
-#: ../../index.rst:101
-msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
-msgstr ":ref:`pgr_trsp<trsp>` - Camino más corto con giros restringidos (TRSP)"
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:103
-msgid ":ref:`dd_index`"
-msgstr ":ref:`dd_index`"
-
-# 4f472ddb75b84b6abd644e500b7415f4
-#: ../../index.rst:105
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ":ref:`pgr_driving_distance` - Distancia de Manejo"
-
-# 607bcbfc39c649a4b54020f8d62ce9d0
-#: ../../index.rst:106
-msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
-msgstr ":ref:`pgr_alphashape` - Cómputo de forma alfa"
-
-# f2e6773ccf394c739af44245aaaf5d02
-#: ../../index.rst:107
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ":ref:`pgr_points_as_polygon` - Polígono alrededor del conjunto de puntos"
-
-# ef6b2fcc629f48c7b88d3ac78527893a
-#: ../../index.rst:110
-msgid ""
-":ref:`pgr_get_column_name` - to get the name of the column as is stored in "
-"the postgres administration tables."
-msgstr ":ref:`pgr_get_column_name` para obtener el nombre de la columna como se almacena en las tablas de la administración de postgres."
-
-# b080d86d06dd4b248b6191f5c98ed0b7
-#: ../../index.rst:111
-msgid ""
-":ref:`pgr_get_table_name` - to retrieve the name of the table as is stored "
-"in the postgres administration tables."
-msgstr ":ref:`pgr_get_table_name` para obtener el nombre de la tabla tal cual se almacena en las tablas de la administración de postgres."
-
-# 187f8a7ace1944dda76ab8ae8460d727
-#: ../../index.rst:112
-msgid ":ref:`pgr_is_column_indexed` - to check if the column is indexed."
-msgstr ":ref:`pgr_is_column_indexed` para comprobar si la columna está indexada."
-
-# 767ec7460a314ae0ae3ad47836c94182
-#: ../../index.rst:113
-msgid ""
-":ref:`pgr_is_column_in_table` - to check only for the existance of the "
-"column."
-msgstr ":ref:`pgr_is_column_in_table` para revisar sólo la existencia de la columna."
-
-# 6d632e8288614fc59c04dbdfa5fceb36
-#: ../../index.rst:114
-msgid ""
-":ref:`pgr_point_to_id` -to insert/get the id of the inserted point in a "
-"vertices table."
-msgstr ":ref:`pgr_point_to_id` - para insertar o conseguir la identificación del punto insertado en una tabla de vértices."
-
-# fd1def8169f543b9afc595abde9021ef
-#: ../../index.rst:115
-msgid ""
-":ref:`pgr_quote_ident` - to quotes the input text to be used as an "
-"identifier in an SQL statement string."
-msgstr ":ref:`pgr_quote_ident` - pone entre comillas el texto de entrada para ser utilizado como un identificador en una cadena de instrucción SQL."
-
-# 79be0c2066f3417fb063d0f11b8858bb
-#: ../../index.rst:116
-msgid ":ref:`pgr_version` - to get pgRouting's version information."
-msgstr ":ref:`pgr_version` para obtener la versión actual de pgRouting."
-
-# e92514488cf348499952b55020516c0f
-#: ../../index.rst:117
-msgid ":ref:`pgr_versionless` - to compare two version numbers."
-msgstr ":ref:`pgr_versionless` - para comparar dos números de versión."
-
-# 52049dec1aa94a84b44977cf3645aeee
-#: ../../index.rst:118
-msgid ""
-":ref:`pgr_start_point` - to get the start point of a (multi)linestring."
-msgstr ":ref:`pgr_start_Point` para obtener el punto inicial de un (multi)linestring."
-
-# b58261fb708141cfbd15342b18e83df7
-#: ../../index.rst:119
-msgid ":ref:`pgr_end_point` - to get the end point of a (multi)linestring."
-msgstr ":ref:`pgr_end_Point` para obtener el punto final de un (multi)linestring."
-
-# ccf6b70d55024c8cb87cd02c497cd394
-#: ../../index.rst:138
-msgid "Developer"
-msgstr "Desarrolladores"
-
-# bc20d365d4514a6dbf644153d3323f8d
-#: ../../index.rst:145
-msgid ":ref:`change_log`"
-msgstr ":ref:`change_log`"
-
-# a6c26cabff9f4df5bbaa3de0ed924b11
-#: ../../index.rst:147
-msgid ":ref:`changelog_2_0`"
-msgstr ":ref:`changelog_2_0`"
-
-# 9d2d97e5ab6a4af08a3f5903f9a87114
-#: ../../index.rst:148
-msgid ":ref:`changelog_1_x`"
-msgstr ":ref:`changelog_1_x`"
-
-# d1533298308344f6bfa8e1644e3aace0
-#: ../../index.rst:157
-msgid "Indices and tables"
-msgstr "Índices y tablas"
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:158
-msgid ":ref:`genindex`"
-msgstr ":ref:`genindex`"
-
-# 1572d01be82949ec8e487a5dc596b6a4
-#: ../../index.rst:159
-msgid ":ref:`search`"
-msgstr ":ref:`search`"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/index_man.po b/doc/i18n/es/LC_MESSAGES/doc/index_man.po
deleted file mode 100644
index 56d58d8..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/index_man.po
+++ /dev/null
@@ -1,57 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 18:18+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 3f6e76c37d304447af292931aa52e56f
-#: ../../index_man.rst:13
-msgid "pgRouting Reference"
-msgstr "Referencias para pgRouting"
-
-# 8347fe2ff4be4f9fbcaafbad7adac911
-#: ../../index_man.rst:15
-msgid ""
-"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
-"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
-"and other network analysis functionality."
-msgstr "pgRouting extiende a las bases de datos geoespaciales `PostGIS <http://postgis.net>`_ /`PostgreSQL <http://postgresql.org>`_ para proveer ruteo geoespacial y otras funcionalidades de análisis de redes."
-
-# 3f626ce82e7e467c8d0b401e6a88d9ca
-#: ../../index_man.rst:22
-msgid "pgRouting provides several :ref:`common functions <common>`:"
-msgstr "pgRouting provee varias :ref:`funciones comunes <common>`:"
-
-# 387e53a164e94fa1a2c34d515a8958d2
-#: ../../index_man.rst:36
-msgid "pgRouting defines a few :ref:`custom data types <data_types>`:"
-msgstr "pgRouting define algunos :ref:`tipos de datos personalizados <data_types>`:"
-
-# af0d92429b274dda891066d0b07d530f
-#: ../../index_man.rst:50
-msgid "pgRouting functions in alphabetical order:"
-msgstr "Funciones de pgRouting en orden alfabético:"
-
-# 9f2f876866c6467ba1b45223a42790c6
-#: ../../index_man.rst:66
-msgid "If pgRouting is compiled with \"Driving Distance\" enabled:"
-msgstr "Si pgRouting es compilado con \"Distancia de Manejo\" habilitado:"
-
-# 1e0ce2246f904afbaf6c882025206eaa
-#: ../../index_man.rst:75
-msgid "Some functions from previous releases may have been removed."
-msgstr "Algunas funciones de versiones anteriores han sido eliminadas."
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/changelog/1_x.po b/doc/i18n/es/LC_MESSAGES/doc/src/changelog/1_x.po
deleted file mode 100644
index 5ce1f05..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/changelog/1_x.po
+++ /dev/null
@@ -1,153 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-13 13:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 6a8f15af6c6d4c709a455b1e6e7913a8
-#: ../../src/changelog/1_x.rst:13
-msgid "pgRouting 1.x Release Notes"
-msgstr "Notas de versión de pgRouting 1.x "
-
-# 35ec395b4f35487d95e18e46599976e4
-#: ../../src/changelog/1_x.rst:15
-msgid ""
-"The following release notes have been copied from the previous "
-"``RELEASE_NOTES`` file and are kept as a reference. Release notes starting "
-"with :ref:`version 2.0.0 <changelog_2_0>` will follow a different schema."
-msgstr "Las siguientes notas han sido copiadas desde el archivo anterior de ``RELEASE_NOTES`` y se mantienen como referencia. A partir de la versión :ref:`version 2.0.0 <changelog_2_0>` , las notas seguirán un esquema diferente."
-
-# 703dd8a8fe4d45c1859069c1117ec4b3
-#: ../../src/changelog/1_x.rst:20
-msgid "Changes for release 1.05"
-msgstr "Cambios para la versión 1.05"
-
-# e3f8283c49024042ad77d6924336865c
-# b2d8993542324fb6b2107164df0ba258
-# 88cd476b4bc3446b89dd63ea7ad91e56
-# d1043630671546faabf110ae51109494
-#: ../../src/changelog/1_x.rst:22 ../../src/changelog/1_x.rst:29
-#: ../../src/changelog/1_x.rst:50 ../../src/changelog/1_x.rst:57
-msgid "Bugfixes"
-msgstr "Corrección de errores"
-
-# faaf3c4aa64e4806b5b41ecb230f4466
-#: ../../src/changelog/1_x.rst:26
-msgid "Changes for release 1.03"
-msgstr "Cambios para la versión 1.03"
-
-# c258bbbcb3e2445f8f7eb9dde242b0e5
-#: ../../src/changelog/1_x.rst:28
-msgid "Much faster topology creation"
-msgstr "Creación de topología mucho más rápida"
-
-# 059297cbe42d4af6b72b9e0d2b6ad06e
-#: ../../src/changelog/1_x.rst:33
-msgid "Changes for release 1.02"
-msgstr "Cambios para la versión 1.02"
-
-# cb2792b313ca4c3fa513b9eb95c5de18
-# 5a7078f4834449bba4a61211426d8ed9
-#: ../../src/changelog/1_x.rst:35 ../../src/changelog/1_x.rst:42
-msgid "Shooting* bugfixes"
-msgstr "Corrección de errores de Shooting* "
-
-# 5feb24afeb55480690c6589309388866
-#: ../../src/changelog/1_x.rst:36
-msgid "Compilation problems solved"
-msgstr "Se resolvieron problemas de compilación"
-
-# 0e0f4a9f6a22461baa8bc5da60cfd41b
-#: ../../src/changelog/1_x.rst:40
-msgid "Changes for release 1.01"
-msgstr "Cambios para la versión 1.01"
-
-# 8ea96e385ab44490850a2a73aa013f9b
-#: ../../src/changelog/1_x.rst:46
-msgid "Changes for release 1.0"
-msgstr "Cambios para la versión 1.0"
-
-# efa896c6a92842fdabbf06c4f8c5b640
-#: ../../src/changelog/1_x.rst:48
-msgid "Core and extra functions are separated"
-msgstr "Núcleo y funciones adicionales están separadas"
-
-# 51ced072bcbc470c87cc5fd90912467f
-#: ../../src/changelog/1_x.rst:49
-msgid "Cmake build process"
-msgstr "Proceso de compilación con CMake "
-
-# ee707024082d499a962851a420e20d5f
-#: ../../src/changelog/1_x.rst:54
-msgid "Changes for release 1.0.0b"
-msgstr "Cambios para la versión 1.0.0b"
-
-# d94242dc07a94aa5b9cb20cd4fd8f85d
-#: ../../src/changelog/1_x.rst:56
-msgid "Additional SQL file with more simple names for wrapper functions"
-msgstr "Archivos SQL adicionales con nombres más simples para las funciones de la envolturas"
-
-# 178ec0ecd8a74084a59974d12e30f589
-#: ../../src/changelog/1_x.rst:61
-msgid "Changes for release 1.0.0a"
-msgstr "Cambios para la versión 1.0.0a"
-
-# 5591af5527fc4ff68fbcfb9268f20564
-#: ../../src/changelog/1_x.rst:63
-msgid "Shooting* shortest path algorithm for real road networks"
-msgstr "Algoritmo de ruta más corta Shooting\\* para redes de camino reales"
-
-# a0818010adb1442cbe7e345f95689509
-#: ../../src/changelog/1_x.rst:64
-msgid "Several SQL bugs were fixed"
-msgstr "Se arreglaron varios errores de SQL"
-
-# 41324ae038c94f6ea5a7bd9cc30e54fb
-#: ../../src/changelog/1_x.rst:68
-msgid "Changes for release 0.9.9"
-msgstr "Cambios para la versión 0.9.9"
-
-# b89bdfd11c2f4cf29ca3dd3cfd42cb8e
-#: ../../src/changelog/1_x.rst:70
-msgid "PostgreSQL 8.2 support"
-msgstr "Soporte PostgreSQL 8.2"
-
-# 302372f9f60f46d68b18a299cdfd55a6
-#: ../../src/changelog/1_x.rst:71
-msgid ""
-"Shortest path functions return empty result if they couldn’t find any path"
-msgstr "Funciones de ruta más cortos regresan nulo si no pudieron encontrar ningún camino"
-
-# 62b481cbf4d14ffcb2f17ad4a86dc60e
-#: ../../src/changelog/1_x.rst:75
-msgid "Changes for release 0.9.8"
-msgstr "Cambios para versión 0.9.8"
-
-# 1190ef59b8584d6d9c1fd248ca4fd970
-#: ../../src/changelog/1_x.rst:77
-msgid "Renumbering scheme was added to shortest path functions"
-msgstr "Esquema de numeración ha sido añadido a las funciones de ruta más cortos"
-
-# 33634f672fbb4bdbbfba7912efeca26d
-#: ../../src/changelog/1_x.rst:78
-msgid "Directed shortest path functions were added"
-msgstr "Se agregaron funciones de ruta más cortos dirigidas"
-
-# 13bb4413398f4f5d921257cdcab82564
-#: ../../src/changelog/1_x.rst:79
-msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
-msgstr "routing_postgis.SQL fue modificado para utilizar dijkstra en la búsqueda TSP"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/changelog/2_0.po b/doc/i18n/es/LC_MESSAGES/doc/src/changelog/2_0.po
deleted file mode 100644
index 1d7ada3..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/changelog/2_0.po
+++ /dev/null
@@ -1,171 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 74e7cac777254569ba4d691b13b71fb6
-#: ../../src/changelog/2_0.rst:13
-msgid "pgRouting 2.0 Release Notes"
-msgstr "Notas de la versión 2.0 de pgRouting "
-
-# 4a488611749d4e66b0259dbca6bb3a1f
-#: ../../src/changelog/2_0.rst:15
-msgid ""
-"With the release of pgRouting 2.0 the library has abandoned backwards "
-"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. We did this "
-"so we could restructure pgRouting, standardize the function naming, and "
-"prepare the project for future development. As a result of this effort, we "
-"have been able to simplify pgRouting, add significant new functionality, "
-"integrate documentation and testing into the source tree and make it easier "
-"for multiple developers to make contribution."
-msgstr "Con el lanzamiento de la versión 2.0 de pgRouting, las bibliotecas dejan de tener compatibilidad con las versiones :ref:`pgRouting 1.x <changelog_1_x>` . Se hizo esto para poder reestructurar pgRouting, estandarizando los nombres de las funciones y preparando el proyecto para el futuros desarrollos. Como resultado de este esfuerzo, hemos sido capaces de simplificar pgRouting, añadiendo funcionalidades importantes, integrando la documentación y probando el árbol del código fuen [...]
-
-# 0124322daba943368892e1a062e5a232
-#: ../../src/changelog/2_0.rst:17
-msgid ""
-"For important changes see the following release notes. To see the full list "
-"of changes check the list of `Git commits "
-"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
-msgstr "Para los cambios importantes, consulte las siguientes notas de la versión. Para ver la lista completa de cambios revise la lista de `Git commits <https://github.com/pgRouting/pgrouting/commits>`_ en Github."
-
-# 591de33525284db5b8eae7f12b38a366
-#: ../../src/changelog/2_0.rst:28
-msgid "Changes for 2.0.0"
-msgstr "Cambios en la versión 2.0.0"
-
-# 4d95000a614d4236a5cc53a2fc2f49ac
-#: ../../src/changelog/2_0.rst:30
-msgid ""
-"Graph Analytics - tools for detecting and fixing connection some problems in"
-" a graph"
-msgstr "Análisis gráfico - herramientas para detectar y arreglar algunos problemas de conexión en un gráfico de red"
-
-# 7b0e1ec73752479fabaaeb4964d2e802
-#: ../../src/changelog/2_0.rst:31
-msgid "A collection of useful utility functions"
-msgstr "Una colección de funciones útiles"
-
-# 2f200415daa94b76803619813ac6721a
-#: ../../src/changelog/2_0.rst:32
-msgid ""
-"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
-msgstr "Dos nuevos algoritmos para el camino más corto de todos pares (pgr_apspJohnson, pgr_apspWarshall)"
-
-# f254175913274f7a835197ece43e779e
-#: ../../src/changelog/2_0.rst:33
-msgid ""
-"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
-"pgr_bdDijkstra)"
-msgstr "Algoritmos para el Dijkstra bidireccional y la búsqueda A*(pgr_bdAstar, pgr_bdDijkstra)"
-
-# 3c6748f59dcf427da34f9feed68058f9
-#: ../../src/changelog/2_0.rst:34
-msgid "One to many nodes search (pgr_kDijkstra)"
-msgstr "Búsqueda de uno a varios nodos (pgr_kDijkstra)"
-
-# f9d646b786144bd481006e74130f662e
-#: ../../src/changelog/2_0.rst:35
-msgid "K alternate paths shortest path (pgr_ksp)"
-msgstr " K rutas más cortas alternas de (pgr_ksp)"
-
-# 11ef9fff94d246b48fafc85bc8dc3925
-#: ../../src/changelog/2_0.rst:36
-msgid ""
-"New TSP solver that simplifies the code and the build process (pgr_tsp), "
-"dropped \"Gaul Library\" dependency"
-msgstr "Nuevo solucionador TSP que simplifica el código donde el proceso de compilación (pgr_tsp), ya no dependene de la biblioteca \"Gaul Library\" "
-
-# d1f317bb785d45fa861870a35ff12e7b
-#: ../../src/changelog/2_0.rst:37
-msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
-msgstr "Ruta más corta con giros restringidos (pgr_trsp) que reemplaza a la estrella fugaz \"Shooting Star\""
-
-# 21689470d861417487dd6888bf38ae8b
-#: ../../src/changelog/2_0.rst:38
-msgid "Dropped support for Shooting Star"
-msgstr "Se deja de soportar a la Estrella fugaz \"Shooting Star\""
-
-# c293b041c6974506a333575050aca673
-#: ../../src/changelog/2_0.rst:39
-msgid ""
-"Built a test infrastructure that is run before major code changes are "
-"checked in"
-msgstr "Se construye una infraestructura de pruebas que se ejecuta antes de que se incorporen grandes cambios al código principal."
-
-# 3c96b251f45b4603a3e474e14d3756a9
-#: ../../src/changelog/2_0.rst:40
-msgid ""
-"Tested and fixed most all of the outstanding bugs reported against 1.x that "
-"existing in the 2.0-dev code base."
-msgstr "Se probó y se arreglaron todos los errores excepcionales registrados en la versión 1.x existente en la base del código 2.0-dev."
-
-# ae370e64d8204092bca92f34ddc90a99
-#: ../../src/changelog/2_0.rst:41
-msgid "Improved build process for Windows"
-msgstr "Proceso de compilación mejorados para Windows"
-
-# 03319867fd7d47ecade2299089b90c8a
-#: ../../src/changelog/2_0.rst:42
-msgid ""
-"Automated testing on Linux and Windows platforms trigger by every commit"
-msgstr "Automatizado de pruebas en plataformas Linux y Windows por cada cambio permanente"
-
-# 8543438d8ac34db9816e97ca074dc4bc
-#: ../../src/changelog/2_0.rst:43
-msgid "Modular library design"
-msgstr "Diseño modular de bibliotecas"
-
-# 903ec2fa9bb64f87a98c97f8951780d1
-#: ../../src/changelog/2_0.rst:44
-msgid "Compatibility with PostgreSQL 9.1 or newer"
-msgstr "Compatibilidad con PostgreSQL 9.1 o posterior"
-
-# 73a67ebe3dbd4dc3a3c437b2180fed37
-#: ../../src/changelog/2_0.rst:45
-msgid "Compatibility with PostGIS 2.0 or newer"
-msgstr "Compatibilidad con PostGIS 2.0 o posterior"
-
-# 16e7796b31a94c2781e0f38903b17c26
-#: ../../src/changelog/2_0.rst:46
-msgid "Installs as PostgreSQL EXTENSION"
-msgstr "Se instala como EXTENSION de PostgreSQL"
-
-# d5d4a4a79da14ccea4bdbe1310cf5113
-#: ../../src/changelog/2_0.rst:47
-msgid "Return types refactored and unified"
-msgstr "Los Tipos de datos son unificados"
-
-# aeff1e0f8f5144a38127aabb5e2dc2fa
-#: ../../src/changelog/2_0.rst:48
-msgid "Support for table SCHEMA in function parameters"
-msgstr "Soporte para esquema en los parámetros de las funciones"
-
-# ae6e9cdcdc384571a1803e4b5e3e9718
-#: ../../src/changelog/2_0.rst:49
-msgid "Support for ``st_`` PostGIS function prefix"
-msgstr "Soporte para el prefijo ``st_`` de las funciones de PostGIS "
-
-# b0f6572717ed4979a266117c537f9a5d
-#: ../../src/changelog/2_0.rst:50
-msgid "Added ``pgr_`` prefix to functions and types"
-msgstr "Prefijo ``pgr_`` agregado a las funciones y tipos"
-
-# 6178fdcf0cd74f3898a7386ed99f36b4
-#: ../../src/changelog/2_0.rst:51
-msgid "Better documentation: http://docs.pgrouting.org"
-msgstr "Mejor documentación: http://docs.pgrouting.org"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/changelog/index.po b/doc/i18n/es/LC_MESSAGES/doc/src/changelog/index.po
deleted file mode 100644
index c12b8af..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/changelog/index.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f1e03235eb844796b93b887af790542d
-#: ../../src/changelog/index.rst:13
-msgid "Release Notes"
-msgstr "Notas de versión"
-
-# e9847f5eef6049318a942e17e6da2f58
-#: ../../src/changelog/index.rst:15
-msgid ":ref:`changelog_2_0`"
-msgstr ":ref:`changelog_2_0`"
-
-# 1b5ed5b08dee4c3fb08136bd010897ed
-#: ../../src/changelog/index.rst:16
-msgid ":ref:`changelog_1_x`"
-msgstr ":ref:`changelog_1_x`"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/developer/discontinued.po b/doc/i18n/es/LC_MESSAGES/doc/src/developer/discontinued.po
deleted file mode 100644
index a8709e6..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/developer/discontinued.po
+++ /dev/null
@@ -1,56 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-12 01:30+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# ecfce536b0aa4abcb4b588ec5c569d01
-#: ../../src/developer/discontinued.rst:13
-msgid "Discontinued Functions"
-msgstr "Funciones Descontinuadas"
-
-# a62da7ecbf3e4e56817c5acd4b283ad1
-#: ../../src/developer/discontinued.rst:15
-msgid ""
-"Especially with new major releases functionality may change and functions "
-"may be discontinued for various reasons. Functionality that has been "
-"discontinued will be listed here."
-msgstr "La nueva funcionalidad de las versiones principales pueden ser cambiadas y, por ende, las funciones pueden ser descontinuadas por varias razones. La funcionalidad que ha sido descontinuada aparecerá aquí."
-
-# 778ac5fe0c47470883e33983eee7b86e
-#: ../../src/developer/discontinued.rst:22
-msgid "Shooting Star algorithm"
-msgstr "Algoritmo Shooting Star"
-
-# b6e21b5fe8ff45d3b6ae4cd3e21ff661
-#: ../../src/developer/discontinued.rst:24
-msgid "Removed with 2.0.0"
-msgstr "Descontinuada en 2.0.0"
-
-# 681aaa34e63344de87e7765476be87f2
-#: ../../src/developer/discontinued.rst:25
-msgid "Unresolved bugs, no maintainer, replaced with :ref:`trsp`"
-msgstr "Errores sin resolver, sin mantenimiento, sustituido con :ref:`trsp`"
-
-# c11387652cc84dd7ad0e964baff5182e
-#: ../../src/developer/discontinued.rst:26
-msgid ""
-"Please :ref:`contact us <support>` if you're interested to sponsor or "
-"maintain this algorithm. The function signature is still available in "
-":ref:`common_legacy` but it is just a wrapper that throws an error. We have "
-"not included any of the old code for this in this release."
-msgstr "Por favor :ref:`contáctenos <support>` si usted está interesado en patrocinar o mantener este algoritmo. La firma de la función sigue disponible en :ref:`common_legacy` pero es simplemente un contenedor que genera un error. No hemos incluido ningún código anterior en esta versión."
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/developer/index.po b/doc/i18n/es/LC_MESSAGES/doc/src/developer/index.po
deleted file mode 100644
index cd3601d..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/developer/index.po
+++ /dev/null
@@ -1,246 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 17:37+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f28868894edd415ca79913b6f0e244b7
-#: ../../src/developer/index.rst:13
-msgid "Developer's Guide"
-msgstr "Guía del desarrollador"
-
-# 5c7d284d803042c0aa297ca41b59aac3
-#: ../../src/developer/index.rst:16
-msgid ""
-"All documentation should be in reStructuredText format. See: "
-"<http://docutils.sf.net/rst.html> for introductory docs."
-msgstr "Toda la documentación debe estar en formato reStructuredText. Ver http://docutils.sf.net/rst.html para documentaciones introductorias."
-
-# fd3435c9f90f438280eb94e20db8c6fd
-#: ../../src/developer/index.rst:20
-msgid "Source Tree Layout"
-msgstr "Diseño del árbol de la fuente"
-
-# 08c39ee5a8574bfb93d3a5203a6c206b
-#: ../../src/developer/index.rst:23
-msgid "cmake scripts used as part of our build system."
-msgstr "CMake scripts usados como parte de nuestro sistema de construcción."
-
-# 268498e509b04dd09f0678cf538a8be0
-#: ../../src/developer/index.rst:26
-msgid ""
-"This is the algorithm source tree. Each algorithm should be contained in its"
-" on sub-tree with doc, sql, src, and test sub-directories. This might get "
-"renamed to \"algorithms\" at some point."
-msgstr "Este es el árbol de código fuente de los algoritmos. Cada algoritmo debe estar contenido en su subárbol en con subdirectorios doc, sql, src y test. Esto puede ser renombrado a \"algorithms\" en algún momento."
-
-# d3989e3985544061a6084f85961bdbc6
-#: ../../src/developer/index.rst:31
-msgid ""
-"This is an implementation of A* Search based on using Boost Graph libraries "
-"for its implementation. This is a Dijkstra shortest path implementation with"
-" a Euclidean Heuristic."
-msgstr "Esto es una implementación de la búsqueda A\\* basada en el uso de las bibliotecas de gráficas Boost para su implementación. Esto es una implementación de ruta más corta de Dijkstra con una heurística euclidiana."
-
-# 8ff46e3f515e4df3b61b2e37998be2de
-#: ../../src/developer/index.rst:36
-msgid ""
-"At the moment this does not have an core in \"src\", but does have a lot of "
-"SQL wrapper code and topology code in the \"sql\" directory. *Algorithm "
-"specific wrappers should get move to the algorithm tree and appropriate "
-"tests should get added to validate the wrappers.*"
-msgstr "Por el momento esto no tiene un núcleo en \"src\", pero tiene varios códigos de contenedores de SQL y código de topología en el directorio \"sql\". *Algoritmos de Contenedores específicos serán movidos al árbol de algoritmos y se deben conseguir las pruebas adecuadas para validar los Contenedores.*"
-
-# 8c544813a7ed4b4ca7df0ae3f01909c5
-#: ../../src/developer/index.rst:42
-msgid ""
-"This is an implementation of Dikjstra's shortest path solution using Boost "
-"Graph libraries for the implementation."
-msgstr "Esto es una implementación de la solución de ruta más corta de Dikjstra usando las bibliotecas de gráficas Boost para la aplicación."
-
-# dfe2e1dfa3d0464d87fac14b128155cc
-#: ../../src/developer/index.rst:46
-msgid ""
-"This optional package creates driving distance polygons based on solving a "
-"Dijkstra shortest path solution, then creating polygons based on equal cost "
-"distances from the start point. This optional package requires CGAL "
-"libraries to be installed."
-msgstr "Este paquete opcional crea polígonos de distancia de manejo basados en la solución de la ruta más corta de Dijkstra, luego crea polígonos basados en las distancias de igual costo desde el punto de inicial. Este paquete opcional requiere que las bibliotecas CGAL estén instaladas."
-
-# 4f4e1c860f13452b9aa2fad3fe00b756
-#: ../../src/developer/index.rst:52
-msgid ""
-"*DEPRECATED and DOES NOT WORK and IS BEING REMOVED* This is an edge based "
-"shortest path algorithm that supports turn restrictions. It is based on "
-"Boost Graph. Do *NOT* use this algorithm as it is broken, instead use *trsp*"
-" which has the same functionality and is faster and give correct results."
-msgstr "*OBSOLETO y NO FUNCIONA y está SIENDO ELIMINADO* este es un algoritmo basado algoritmo del camino más corto que soporta restricciones de giro. Se basa en las bibliotecas de gráficas Boost. *NO* usar este algoritmo ya que está roto, en su lugar usar *trsp* que tiene la misma funcionalidad, es más rápido y da resultados correctos."
-
-# a8264d72d19a45e183b7ef38fed374c4
-#: ../../src/developer/index.rst:59
-msgid ""
-"This is a turn restricted shortest path algorithm. It has some nice features"
-" like you can specify the start and end points as a percentage along an "
-"edge. Restrictions are stored in a separate table from the graph edges and "
-"this make it easier to manage the data."
-msgstr "Este es un algoritmo de ruta más corto giro restringido. Tiene algunas características como: poder especificar los puntos iniciales y finales en forma de porcentaje a lo largo de un borde. Las restricciones se almacenan en una tabla separada de los bordes del gráfico, haciendo mas sencilla la administración de los datos."
-
-# 92992e85c1984abeacc10828b636b37b
-#: ../../src/developer/index.rst:65
-msgid ""
-"This optional package provides the ability to compute traveling salesman "
-"problem solutions and compute the resulting route. This optional package "
-"requires GAUL libaries to be installed."
-msgstr "Este paquete opcional proporciona la capacidad de calcular soluciones de problema del vendedor viajante y calcular la ruta resultante. Este paquete opcional requiere las que las bibliotecas GAUL se encuentren instaladas."
-
-# afc268a384184a35a2ccf3b3faf2507e
-#: ../../src/developer/index.rst:70
-msgid "Miscellaneous scripts and tools."
-msgstr "Varios scripts y herramientas."
-
-# c7bdf010f55a48d788396bf4b9357c12
-#: ../../src/developer/index.rst:73
-msgid ""
-"This is the output directory where compiled libraries and installation "
-"targets are staged before installation."
-msgstr "Este es el directorio de salida donde se almacenan las bibliotecas compiladas y objetivos de la instalación antes de la instalación."
-
-# 31864fdbc2584791b41a9db64d200fe6
-#: ../../src/developer/index.rst:78
-msgid "Documentation Layout"
-msgstr "Diseño de documentación"
-
-# da1837b55e014ead8cdaa106a149fe5b
-#: ../../src/developer/index.rst:80
-msgid ""
-"*As noted above all documentation should be done using reStructuredText "
-"formated files.*"
-msgstr "*Como se señaló anteriormente, la documentación debe hacerse usando archivos con formato reStructuredText.*"
-
-# a4b7ec8d4b8745909277273aa141905a
-#: ../../src/developer/index.rst:83
-msgid ""
-"Documentation is distributed into the source tree. This top level \"doc\" "
-"directory is intended for high level documentation cover subjects like:"
-msgstr "La documentación se distribuye en el árbol de las fuentes. Este directorio \"doc\" de nivel superior está destinado a las portada de los temas de documentación de nivel alto como:"
-
-# 1374b2ec0aa74533a5df9290d750951f
-#: ../../src/developer/index.rst:86
-msgid "Compiling and testing"
-msgstr "Compilación y pruebas"
-
-# 084a68deab9b4285bc1fc7011f578d13
-#: ../../src/developer/index.rst:87
-msgid "Installation"
-msgstr "Instalación"
-
-# 42d9b895e2544dbbb89e0b050eb5ea54
-#: ../../src/developer/index.rst:88
-msgid "Tutorials"
-msgstr "Tutoriales"
-
-# 8f3cd82581d34b4ca447273e89877f88
-#: ../../src/developer/index.rst:89
-msgid "Users' Guide front materials"
-msgstr "Materiales para guía de los usuarios"
-
-# e984baa72b6844039419e00491240778
-#: ../../src/developer/index.rst:90
-msgid "Reference Manual front materials"
-msgstr "Materiales de manuales de referencia"
-
-# 4e38c58bd8e14226a20bfcbfd29b0cb8
-#: ../../src/developer/index.rst:91
-msgid "etc"
-msgstr "etc."
-
-# 1bb99d883cc7418482d545cdb0848334
-#: ../../src/developer/index.rst:93
-msgid ""
-"Since the algorithm specific documentation is contained in the source tree "
-"with the algorithm specific files, the process of building the documentation"
-" and publishing it will need to assemble the details with the front material"
-" as needed."
-msgstr "Puesto que la documentación específica del algoritmo se contiene en el árbol de código fuente con los archivos específicos de algoritmo, el proceso de construcción de la documentación y publicación tendrá que ensamblar los detalles con el material según se necesite."
-
-# 1711ca7d96774e1db5a0924e4d181cdd
-#: ../../src/developer/index.rst:98
-msgid ""
-"Also, to keep the \"doc\" directory from getting cluttered, each major book "
-"like those listed above, should be contained in a separate directory under "
-"\"doc\". Any images or other materials related to the book should also be "
-"kept in that directory."
-msgstr "También, para evitar que el directorio de \"doc\" se desordene, cada libro mayor, como los mencionados anteriormente, deberán estar incluidos en un directorio separado bajo el directorio \"doc\". Cualquier imágen u otros materiales relacionados con el libro, deberán mantenerse en ese directorio."
-
-# 9a712178ea274d2582cfc6b8a9a3eec1
-#: ../../src/developer/index.rst:105
-msgid "Testing Infrastructure"
-msgstr "Pruebas de infraestructura"
-
-# 34eba7e1e4ce408489010fc1945222c1
-#: ../../src/developer/index.rst:107
-msgid ""
-"There is a very basic testing infrastructure put in place. Here are the "
-"basics of how it works. We need more test cases. Longer term we should "
-"probably get someone to setup travis-ci or jenkins testing frameworks."
-msgstr "Se proporciona una infraestructura de prueba muy básica. Aquí están los fundamentos del cómo funciona. Necesitamos más casos de prueba. A más largo plazo que probablemente se tendrá un encargado de configurar marcos de pruebas travis-ci o jenkins ."
-
-# b879a887c3a644328d9fc9d27d3dfe26
-#: ../../src/developer/index.rst:111
-msgid "Here is the graph for the TRSP tests."
-msgstr "Aquí está el gráfico para las pruebas TRSP."
-
-# 60b9e076421a4b1da33afd40f94bd300
-#: ../../src/developer/index.rst:115
-msgid ""
-"Tests are run via the script at the top level tools/test-runner.pl and it "
-"runs all the test configured tests and at the moment just dumps the results "
-"structure of the test. This can be prettied up later."
-msgstr "Las pruebas se ejecutan mediante el script en el nivel superior tools/test-runner.pl y ejecuta todas la pruebas configuradas arrojando la estructura de resultados de la prueba. Esto puede ser mejorado en un futuro."
-
-# b06def8f37514c328b21791eb57e2d01
-#: ../../src/developer/index.rst:119
-msgid ""
-"It also assumes that you have installed the libraries as it tests using the "
-"installed postgresql. This probably needs to be made smarter so we can test "
-"out of the build tree. I'll need to think about that."
-msgstr "También supone que se tienen instaladas las bibliotecas ya que hace uso del postgresql instalado. Probablemente esto necesita mejorarse para poner probar el árbol de la construcción. Pensar en eso."
-
-# be3b92cedcec4b4fbf479d174a42eef6
-#: ../../src/developer/index.rst:124
-msgid ""
-"Basically each .../test/ directory should include one *test.conf* file that "
-"is a perl script fragment that defines what data files to load and what "
-"tests to run. I have built in some mechanisms to allow test and data to be "
-"pg version and postgis version specific, but I'm not using that yet. So for "
-"example, *core/trsp/test/test-any-00.data* is a sql plain text dump that "
-"will load and needed data for a set of tests. This is also the graph in the "
-"image above. You can specify multiple files to load, but as a group they "
-"need to have unique names."
-msgstr "Básicamente, cada directorio .../test/ debe incluir un *test.conf* Archivo que es un fragmento de script de perl que define que archivos de datos cargar y las pruebas a ejecutar. Se ha desarrollado mecanismos para permitir que la prueba y los datos sean específicos para las versiones pg y PostGIS, pero no está habilitado todavía. Así que por ejemplo, *src/trsp/test/test-any-00.data* es un volcado dump de texto sin formato de sql que carga los datos necesarios para una serie de [...]
-
-# 63f7cc81e4084f5bb247374d7a084f89
-#: ../../src/developer/index.rst:133
-msgid ""
-"core/trsp/test/test-any-00.test is a sql command to be run. It will get run "
-"as:"
-msgstr "src/TRSP/test/test-any-00.test es un comando sql a ser ejecutado. Se ejecutará como:"
-
-# 517a594dd4684e57bbf75d62fa3d4068
-#: ../../src/developer/index.rst:141
-msgid "Then if there is a difference then an test failure is reported."
-msgstr "Entonces si hay una diferencia se reporta el fracaso de la prueba."
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/developer/sampledata.po b/doc/i18n/es/LC_MESSAGES/doc/src/developer/sampledata.po
deleted file mode 100644
index c8d9618..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/developer/sampledata.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 18:20+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 8292d60ebfc34fb492ea6193998bab3e
-#: ../../src/developer/sampledata.rst:13
-msgid "Sample Data"
-msgstr "Datos Muestra"
-
-# 4b0d58dd2dff4d9c97134f99fe6b536f
-#: ../../src/developer/sampledata.rst:15
-msgid ""
-"The documentation provides very simple example queries based on a small "
-"sample network. To be able to execute the sample queries, run the following "
-"SQL commands to create a table with a small network data set."
-msgstr "La documentación proporciona consultas de ejemplo muy simples basadas en una red muestra pequeña. Para ser capaz de ejecutar las consultas de la muestra, ejecute los siguientes comandos SQL para crear una tabla con el conjunto de datos de la red."
-
-# e01baf347c854525b5c3bdc1af8d1523
-#: ../../src/developer/sampledata.rst:20
-msgid "Create table"
-msgstr "Crear tabla"
-
-# f6ec8db09c164800a1e2d817a06e2a20
-#: ../../src/developer/sampledata.rst:40
-msgid "Insert network data"
-msgstr "Insertar los datos de la red"
-
-# 41d209ca693c4739986152fcdfcb3d25
-#: ../../src/developer/sampledata.rst:70
-msgid ""
-"Before you test a routing function use this query to fill the source and "
-"target columns."
-msgstr "Antes de probar la función de enrrutamiento utilice esta consulta para llenar las columnas de origen ``source`` y de destino ``target``."
-
-# 449efcf19ef14ade9797f5818e87ab24
-#: ../../src/developer/sampledata.rst:77
-msgid "This table is used in some of our examples"
-msgstr "Esta tabla se utiliza en algunos de nuestros ejemplos"
-
-# eb2ac2aa18da494185f02f4a2fe0427d
-#: ../../src/developer/sampledata.rst:94
-msgid "The network created in *edge_table*"
-msgstr "La red creada en *edge_table*"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/installation/build.po b/doc/i18n/es/LC_MESSAGES/doc/src/installation/build.po
deleted file mode 100644
index ef61e69..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/installation/build.po
+++ /dev/null
@@ -1,153 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 19:10+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 36951e7f140d4d5b980b0b6a97a04faf
-#: ../../src/installation/build.rst:13
-msgid "Build Guide"
-msgstr "Guía de Compilación"
-
-# 8c64736c7cb4454d8d602456cae13eb7
-#: ../../src/installation/build.rst:15
-msgid ""
-"To be able to compile pgRouting make sure that the following dependencies "
-"are met:"
-msgstr "Para poder compilar pgRouting asegúrese de que se cumplan las siguientes dependencias:"
-
-# 803fb42d0ed746e7b1434fc0702fecc4
-#: ../../src/installation/build.rst:17
-msgid "C and C++ compilers"
-msgstr "Compiladores de C y C++"
-
-# c5384bc38f6745bd858daa8f2778464c
-#: ../../src/installation/build.rst:18
-msgid "Postgresql version >= 8.4 (>= 9.1 recommended)"
-msgstr "Postgresql versiones >= 8.4 (>= 9.1 recomendado)"
-
-# 7822317678024503afbe9da83351626f
-#: ../../src/installation/build.rst:19
-msgid "PostGIS version >= 1.5 (>= 2.0 recommended)"
-msgstr " PostGIS Versión> = 1.5 (> = 2.0 recomendado)"
-
-# 2092361736a94597ae950089f6baeb7c
-#: ../../src/installation/build.rst:20
-msgid "The Boost Graph Library (BGL). Version >= [TBD]"
-msgstr "La biblioteca de gráficos de Boost (BGL). Versión > = [por determinarse]"
-
-# ad7f5e5325504267abb8922823e31b6c
-#: ../../src/installation/build.rst:21
-msgid "CMake >= 2.8.8"
-msgstr "CMake >= 2.8.8"
-
-# 9423854129e8411ca11bc2e79ed0a44e
-#: ../../src/installation/build.rst:22
-msgid "(optional, for Driving Distance) CGAL >= [TBD]"
-msgstr "(opcional, para la distancia de manejo) CGAL > = [por determinarse]"
-
-# fbff857abfa44607b05113423945439a
-#: ../../src/installation/build.rst:23
-msgid "(optional, for Documentation) Sphinx >= 1.1"
-msgstr "(opcional, para la documentación) Sphinx > = 1.1"
-
-# 48f6a3951914403f9e1b5ac7d64ada3f
-#: ../../src/installation/build.rst:24
-msgid "(optional, for Documentation as PDF) Latex >= [TBD]"
-msgstr "(opcional, para la documentación en formato PDF) Látex > = [TBD]"
-
-# c6b958f8611849fe90a824cc62db1a74
-#: ../../src/installation/build.rst:26
-msgid ""
-"The cmake system has variables the can be configured via the command line "
-"options by setting them with -D<varable>=<value>. You can get a listing of "
-"these via:"
-msgstr "El sistema cmake tiene variables la pueden configurarse mediante las opciones de línea de comandos con -D <varable>=<value>. Usted puede obtener un listado de estos mediante:"
-
-# 62a69adeee3141d5a7de8e0510818440
-#: ../../src/installation/build.rst:34
-msgid "Currently these are:"
-msgstr "Actualmente son:"
-
-# 35027a6663fc4210b027e5210150e681
-#: ../../src/installation/build.rst:36
-msgid ""
-"Boost_DIR:PATH=Boost_DIR-NOTFOUND CMAKE_BUILD_TYPE:STRING= "
-"CMAKE_INSTALL_PREFIX:PATH=/usr/local "
-"POSTGRESQL_EXECUTABLE:FILEPATH=/usr/lib/postgresql/9.2/bin/postgres "
-"POSTGRESQL_PG_CONFIG:FILEPATH=/usr/bin/pg_config WITH_DD:BOOL=ON "
-"WITH_DOC:BOOL=OFF BUILD_HTML:BOOL=ON BUILD_LATEX:BOOL=OFF BUILD_MAN:BOOL=ON"
-msgstr "Boost_DIR:Path = CMAKE_BUILD_TYPE:STRING Boost_DIR-NOTFOUND = CMAKE_INSTALL_PREFIX:PATH = / usr/local POSTGRESQL_EXECUTABLE:FILEPATH=/usr/lib/postgresql/9.2/bin/postgres POSTGRESQL_PG_CONFIG:FILEPATH = / usr/bin/pg_config WITH_DD:BOOL = ON WITH_DOC:BOOL = OFF BUILD_HTML:BOOL = ON BUILD_LATEX:BOOL = OFF BUILD_MAN:BOOL = ON"
-
-# 2a6ecc049d1a49e481516a497cb42cfd
-#: ../../src/installation/build.rst:47
-msgid ""
-"These also show the current or default values based on our development "
-"system. So your values my be different. In general the ones that are of most"
-" interest are:"
-msgstr "Estos también muestran los valores por defecto basados en nuestro sistema de desarrollo. Así que algunos de sus valores pueden ser diferentes en su sistema. En general los que son de mayor interés son:"
-
-# b07b4fda86d7472b823a2e8982cf6b05
-#: ../../src/installation/build.rst:49
-msgid ""
-"WITH_DD:BOOL=ON -- Turn on/off building driving distance code. "
-"WITH_DOC:BOOL=OFF -- Turn on/off building the documentation "
-"BUILD_HTML:BOOL=ON -- If WITH_DOC=ON, turn on/off building HTML "
-"BUILD_LATEX:BOOL=OFF -- If WITH_DOC=ON, turn on/off building PDF "
-"BUILD_MAN:BOOL=ON -- If WITH_DOC=ON, turn on/off building MAN pages"
-msgstr "WITH_DD:bool = ON -- encender/apagar Distancia de Manejo.\nWITH_DOC:bool = OFF -- encender/apagar la documentación BUILD_HTML:BOOL = ON -- con WITH_DOC = ON, encender/apagar HTML BUILD_LATEX:BOOL = OFF -- con WITH_DOC = ON, encender/apagar PDF BUILD_MAN:BOOL = ON -- si WITH_DOC = ON, encender/apagar MAN"
-
-# 1b3877776a474e2bbae2cdf632ab7898
-#: ../../src/installation/build.rst:55
-msgid ""
-"To change any of these add ``-D<variable>=<value>`` to the cmake lines "
-"below. For example to turn on documentation, your cmake command might look "
-"like:"
-msgstr "Para cambiar cualquiera de estos añadir ``-D<variable>=<value>`` a las líneas de cmake. Por ejemplo activar la documentación, el comando cmake:"
-
-# ce5663a99fe540e59ba79b8415f2e8cf
-#: ../../src/installation/build.rst:62
-msgid ""
-"If you turn on the documentation, you also need to add the ``doc`` target to"
-" the make command."
-msgstr "Si enciende la documentación, también tienes que añadir el objetivo ``doc`` al comando \"make\""
-
-# 3447ac18753a48cd8b36008a1c4c10c7
-#: ../../src/installation/build.rst:72
-msgid "For MinGW on Windows"
-msgstr "Para MinGW en Windows"
-
-# 9e2e9bb5dfd54856a24b3e0f455b0c82
-#: ../../src/installation/build.rst:84
-msgid "For Linux"
-msgstr "Para Linux"
-
-# 4939346c6ad34ddc92927ceeb1b5a543
-#: ../../src/installation/build.rst:96
-msgid "With Documentation"
-msgstr "Con la documentación"
-
-# a86f43c9a5b84d089caa0a06ac07f64c
-#: ../../src/installation/build.rst:98
-msgid ""
-"Build with documentation (requires `Sphinx <http://sphinx-doc.org/>`_):"
-msgstr "Construir con documentación (requiere `Sphinx <http://sphinx-doc.org/>`_):"
-
-# c9c92cc08d7440f98fe61e333ffc6fe6
-#: ../../src/installation/build.rst:106
-msgid "Rebuild modified documentation only:"
-msgstr "Reconstrucción de la documentación modificada solamente:"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/installation/index.po b/doc/i18n/es/LC_MESSAGES/doc/src/installation/index.po
deleted file mode 100644
index 01b18a5..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/installation/index.po
+++ /dev/null
@@ -1,202 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 18:08+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# b41e3e6e82bc4cc1ae494ad03a5e3db0
-#: ../../src/installation/index.rst:13
-msgid "Installation"
-msgstr "Instalación"
-
-# c8a69d5d6c9242ad82bf2995a2d43c40
-#: ../../src/installation/index.rst:15
-msgid ""
-"Binary packages are provided for the current version on the following "
-"platforms:"
-msgstr "Paquetes binarios se proporcionan para la versión actual en las siguientes plataformas:"
-
-# 724bcb2a14ac419f99c2f7d5cfe22b6d
-#: ../../src/installation/index.rst:19
-msgid "Windows"
-msgstr "Windows"
-
-# b683dadc50114de7a4bd0073be4510cf
-#: ../../src/installation/index.rst:21
-msgid "Winnie Bot Experimental Builds:"
-msgstr "Construcciones experimentales Winnie Bot:"
-
-# 006e74f1eaf042779773f59248230fcb
-#: ../../src/installation/index.rst:23
-msgid ""
-"`PostgreSQL 9.2 32-bit, 64-bit "
-"<http://winnie.postgis.net/download/windows/pg92/buildbot/>`_"
-msgstr "`PostgreSQL 9.2 32-bit, 64-bit <http://winnie.postgis.net/download/windows/pg92/buildbot/>`_"
-
-# 7825f3f82e3e426188a552cac3d76d0c
-#: ../../src/installation/index.rst:27
-msgid "Ubuntu/Debian"
-msgstr "Ubuntu/Debian"
-
-# 5d5652a1d3a04382800239684a4d26cc
-#: ../../src/installation/index.rst:29
-msgid "Ubuntu packages are available in Launchpad repositories:"
-msgstr "Paquetes de Ubuntu están disponibles en los repositorios de Launchpad:"
-
-# 761afc4473ab4a35aff506637c8e80aa
-#: ../../src/installation/index.rst:31
-msgid "*stable* https://launchpad.net/~georepublic/+archive/pgrouting"
-msgstr "*estable* https://launchpad.net/~georepublic/+archive/pgrouting"
-
-# 6500186f8e3d42c88983fa564fc4facf
-#: ../../src/installation/index.rst:32
-msgid ""
-"*unstable* https://launchpad.net/~georepublic/+archive/pgrouting-unstable"
-msgstr "*inestable* https://launchpad.net/~georepublic/+archive/pgrouting-unstable"
-
-# 7050e2f75f7b42fea67597e63cf2f111
-#: ../../src/installation/index.rst:43
-msgid ""
-"Use `UbuntuGIS-unstable PPA <https://launchpad.net/~ubuntugis/+archive"
-"/ubuntugis-unstable>`_ to install PostGIS 2.0."
-msgstr "Usar el `PPA de UbuntuGIS-unstable <https://launchpad.net/~ubuntugis/+archive/ubuntugis-unstable>`_ para instalar PostGIS 2.0."
-
-# ce72f9b5cb814c5fb4a4ec48c0f7a294
-#: ../../src/installation/index.rst:47
-msgid "RHEL/CentOS/Fedora"
-msgstr "RHEL/CentOS/Fedora"
-
-# 06c08177883146369e10318b54f2662a
-#: ../../src/installation/index.rst:49
-msgid ""
-"Fedora RPM's: https://admin.fedoraproject.org/pkgdb/acls/name/pgRouting"
-msgstr "RPM de Fedora: https://admin.fedoraproject.org/pkgdb/acls/name/pgRouting"
-
-# b6146b0917b441268525a1fe54b0f17e
-#: ../../src/installation/index.rst:53
-msgid "OS X"
-msgstr "OS X"
-
-# cdc507aa586e4ac8b00a7d5818bde423
-#: ../../src/installation/index.rst:57
-msgid "Homebrew"
-msgstr "Homebrew"
-
-# e949ab234590487ca8c4cfa47be11908
-#: ../../src/installation/index.rst:65
-msgid "Source Package"
-msgstr "Paquete fuente"
-
-# ec1db5ae27a4451fae0ee5b486baa0db
-#: ../../src/installation/index.rst:68
-msgid "Git 2.0.0-rc1 release"
-msgstr "Git 2.0.0-rc1 release"
-
-# 8f33d62c1dda4436a3c0a75489dec129
-#: ../../src/installation/index.rst:68
-msgid "`v2.0.0-rc1.tar.gz`_"
-msgstr "`v2.0.0-rc1.tar.gz`_"
-
-# 4eb23002a0464e94a6e62cdef2c72234
-#: ../../src/installation/index.rst:68
-msgid "`v2.0.0-rc1.zip`_"
-msgstr "`v2.0.0-rc1.zip`_"
-
-# b5a17e917a89472c955c6f2cfdfff517
-#: ../../src/installation/index.rst:69
-msgid "Git 2.0.0-beta release"
-msgstr "Versión Git 2.0.0-beta"
-
-# 3db241a58e4c4d6f868116a6770030b5
-#: ../../src/installation/index.rst:69
-msgid "`v2.0.0-beta.tar.gz`_"
-msgstr "`v2.0.0-beta.tar.gz`_"
-
-# 1e21c08cc7c84816b3ca5cc813d1470d
-#: ../../src/installation/index.rst:69
-msgid "`v2.0.0-beta.zip`_"
-msgstr "`v2.0.0-beta.zip`_"
-
-# 2286b25add114b9e82622ff02d730a8e
-#: ../../src/installation/index.rst:70
-msgid "Git 2.0.0-alpha release"
-msgstr "Versión Git 2.0.0-alpha"
-
-# 3db12a14f5b94a0eae1772d2f84c9058
-#: ../../src/installation/index.rst:70
-msgid "`v2.0.0-alpha.tar.gz`_"
-msgstr "`v2.0.0-alpha.tar.gz`_"
-
-# 9ecc4cba22564943855591c0079db428
-#: ../../src/installation/index.rst:70
-msgid "`v2.0.0-alpha.zip`_"
-msgstr "`v2.0.0-alpha.zip`_"
-
-# 708d8ebb02c2479c86755b38333b9e3d
-#: ../../src/installation/index.rst:71
-msgid "Git master branch"
-msgstr "Rama principal de Git"
-
-# 07931d9e017b4fc7aabc4ca1affa9ec4
-#: ../../src/installation/index.rst:71
-msgid "`master.tar.gz`_"
-msgstr "`master.tar.gz`_"
-
-# 8ed2f03dcd4b4be1bfee86da4d9bcdc9
-#: ../../src/installation/index.rst:71
-msgid "`master.zip`_"
-msgstr "`master.zip`_"
-
-# bded77386d4a4124b17d0ee2903d5877
-#: ../../src/installation/index.rst:72
-msgid "Git develop branch"
-msgstr "Rama de desarrollo en Git"
-
-# 9da6c796cd3045c28c04775b7c49e27c
-#: ../../src/installation/index.rst:72
-msgid "`develop.tar.gz`_"
-msgstr "`develop.tar.gz`_"
-
-# 1671db28e6df4d6094c2fb0a5afe4106
-#: ../../src/installation/index.rst:72
-msgid "`develop.zip`_"
-msgstr "`develop.zip`_"
-
-# 5a32f08a903c487092dbfb1eae278d84
-#: ../../src/installation/index.rst:92
-msgid "Using Git"
-msgstr "Usando Git"
-
-# f1630712900a49db825c618380b4a713
-#: ../../src/installation/index.rst:94
-msgid "Git protocol (read-only):"
-msgstr "Protocolo de Git (solo lectura):"
-
-# 9c36f0b296a343ea9c7103d514b6af07
-#: ../../src/installation/index.rst:101
-msgid "HTTPS protocol (read-only): .. code-block:: bash"
-msgstr "Usando HTTPS protocol de git (solo lectura)"
-
-# 79827ebd49da4add88e7275c6abc8a5d
-#: ../../src/installation/index.rst:104
-msgid "git clone https://github.com/pgRouting/pgrouting.git"
-msgstr "git clone https://github.com/pgRouting/pgrouting.git"
-
-# 00af13df90844038a100e3ed84ea8572
-#: ../../src/installation/index.rst:107
-msgid "See :ref:`build` for notes on compiling from source."
-msgstr "Ver :ref:`build` para notas sobre la compilación desde la fuente."
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/introduction/index.po b/doc/i18n/es/LC_MESSAGES/doc/src/introduction/index.po
deleted file mode 100644
index e012d5c..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/introduction/index.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 18:07+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 3cb0b7c03fa84c59a8bdb4f5efd33fec
-#: ../../src/introduction/index.rst:23
-msgid "Indices and tables"
-msgstr "Índices y tablas"
-
-# 8cbfd2a6f6d44a1599cfff832b626535
-#: ../../src/introduction/index.rst:24
-msgid ":ref:`genindex`"
-msgstr ":ref:`índice <genindex>`"
-
-# df46715e85104bf48ebb9fb9005099e0
-#: ../../src/introduction/index.rst:25
-msgid ":ref:`search`"
-msgstr ":ref:`Búsqueda <search>`"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/introduction/introduction.po b/doc/i18n/es/LC_MESSAGES/doc/src/introduction/introduction.po
deleted file mode 100644
index 815fa95..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/introduction/introduction.po
+++ /dev/null
@@ -1,188 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:12+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# d7ca13e272ea4f9a9007e75f83ccda07
-#: ../../src/introduction/introduction.rst:13
-msgid "Introduction"
-msgstr "Introducción"
-
-# da484b645bf24737937b91b50cb8db89
-#: ../../src/introduction/introduction.rst:15
-msgid ""
-"pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL"
-" <http://postgresql.org>`_ geospatial database and adds routing and other "
-"network analysis functionality. A predecessor of pgRouting – pgDijkstra, "
-"written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was "
-"later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to "
-"pgRouting. The project is now supported and maintained by `Georepublic "
-"<http://georepublic.info>`_, `iMaptools <http://imaptools.com/>`_ and a "
-"broad user community."
-msgstr "pgRouting extiende a la base de datos geoespacial `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ para proveer ruteo geoespacial y funcionalidad de análisis de redes. Un predecesor de pgRouting – pgDijkstra, escrito por Sylvain Pasche de `Camptocamp <http://camptocamp.com>`_, fue extendido más tarde por `Orkney <http://www.orkney.co.jp>`_ y renombrado como pgRouting. Este proyecto es apoyado y mantenido por `Georepublic <http://georepublic.info>`_, `iMaptool [...]
-
-# 809f2467c4ee44b093b8ad8386624187
-#: ../../src/introduction/introduction.rst:17
-msgid ""
-"pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ "
-"project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo"
-" Live <http://live.osgeo.org/>`_."
-msgstr "pgRouting es un proyecto de `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ de la `Fundación OSGeo <http://osgeo.org>`_ y es incluido en `OSGeo Live <http://live.osgeo.org/>`_."
-
-# 16be225589d54868a6e1b06785c71bec
-#: ../../src/introduction/introduction.rst:23
-msgid "License"
-msgstr "Licencias"
-
-# c408c4a83f184155aa9880e36ca889d0
-#: ../../src/introduction/introduction.rst:25
-msgid "The following licenses can be found in pgRouting:"
-msgstr "Las siguientes licencias pueden ser encontradas en pgRouting:"
-
-# 31c7be72dc384ef29713eaf2fd580192
-#: ../../src/introduction/introduction.rst:30
-msgid "**License**"
-msgstr "**Licencia**"
-
-# 74c1c3a9531243488b0c52134c79e04a
-#: ../../src/introduction/introduction.rst:32
-msgid "GNU General Public License, version 2"
-msgstr "Licencia pública general GNU , versión 2"
-
-# 68b6976ef3b147ebba541311f30c1a4d
-#: ../../src/introduction/introduction.rst:33
-msgid ""
-"Most features of pgRouting are available under `GNU General Public License, "
-"version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
-msgstr "La mayoría de las características de pgRouting están disponibles bajo la `Licencia pública general GNU, version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
-
-# 3a0945a2b9214644850ca56e273bc01e
-#: ../../src/introduction/introduction.rst:34
-msgid "Boost Software License - Version 1.0"
-msgstr "Licencia de Software Boost - Version 1.0"
-
-# e7bd7b9a9dda4730905a2cc4a3e16112
-#: ../../src/introduction/introduction.rst:35
-msgid ""
-"Some Boost extensions are available under `Boost Software License - Version "
-"1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
-msgstr "Algunas extensiones de Boost están disponibles bajo la `Licencia de Software de Boost - versión 1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
-
-# 16c42cd30ff24da4bbded95fbf9e66b0
-#: ../../src/introduction/introduction.rst:36
-msgid "MIT-X License"
-msgstr "Licencia MIT-X"
-
-# d5e17519bd0d4f59bf932309fab800c8
-#: ../../src/introduction/introduction.rst:37
-msgid ""
-"Some code contributed by iMaptools.com is available under MIT-X license."
-msgstr "Parte del código es contribución de iMaptools.com y está disponibe bajo la licencia MIT-X."
-
-# 88d424e5e3f24713be7c34ccce6d1e57
-#: ../../src/introduction/introduction.rst:38
-msgid "Creative Commons Attribution-Share Alike 3.0 License"
-msgstr "Licencia de Creative Commons Attribution-Share Alike 3.0 "
-
-# 54ef0939d7e94434a2552d2bb3d79fba
-#: ../../src/introduction/introduction.rst:39
-msgid ""
-"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
-" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
-msgstr "El manual de pgRouting Manual está bajo la `Licencia Creative Commons Attribution-Share Alike 3.0 <http://creativecommons.org/licenses/by-sa/3.0/>`_."
-
-# 5e7f1f01c52346069889d0578d72e8da
-#: ../../src/introduction/introduction.rst:41
-msgid ""
-"In general license information should be included in the header of each "
-"source file."
-msgstr "En general, la información de las licencias debe estar incluida en la cabecera de cada archivo de origen."
-
-# 9224c9bd3c5249ea9feb85e27d6161aa
-#: ../../src/introduction/introduction.rst:45
-msgid "Contributors"
-msgstr "Colaboradores"
-
-# a90f02bef3f64bc4994f0afbbb67b8ca
-#: ../../src/introduction/introduction.rst:48
-msgid "Individuals (in alphabetical order)"
-msgstr "Personas (en orden alfabético)"
-
-# 1d2ac5417c2b484db8aec0192b7843fd
-#: ../../src/introduction/introduction.rst:50
-msgid ""
-"Akio Takubo, Anton Patrushev, Ashraf Hossain, Christian Gonzalez, Daniel "
-"Kastl, Dave Potts, David Techer, Ema Miyawaki, Florian Thurkow, Frederic "
-"Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, Kai Behncke, Kishore Kumar,"
-" Ko Nagase, Mario Basa, Martin Wiesenhaan, Razequl Islam, Stephen "
-"Woodbridge, Sylvain Housseman, Sylvain Pasche, Virginia Vergara"
-msgstr "Akio Takubo, Anton Patrushev, Ashraf Hossain, Christian Gonzalez, Daniel Kastl, Dave Potts, David Techer, Ema Miyawaki, Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, Kai Behncke, Kishore Kumar, Ko Nagase, Mario Basa, Martin Wiesenhaan, Razequl Islam, Stephen Woodbridge, Sylvain Housseman, Sylvain Pasche, Virginia Vergara"
-
-# 573e14f52e5948dba921408454b6d775
-#: ../../src/introduction/introduction.rst:54
-msgid "Corporate Sponsors (in alphabetical order)"
-msgstr "Patrocinadores corporativos (en orden alfabético)"
-
-# ad2024213fb347d781158d36b80dfa17
-#: ../../src/introduction/introduction.rst:56
-msgid ""
-"These are corporate entities that have contributed developer time, hosting, "
-"or direct monetary funding to the pgRouting project:"
-msgstr "Estas son las entidades corporativas que han contribuido con tiempo de desarrollo, alojamiento, o financiamiento monetario directo al proyecto de pgRouting:"
-
-# 09f8287921f74248909e1cf3831f2b96
-#: ../../src/introduction/introduction.rst:58
-msgid ""
-"Camptocamp, CSIS (University of Tokyo), Georepublic, Google Summer of Code, "
-"iMaptools, Orkney, Paragon Corporation"
-msgstr "Camptocamp, CSIS (Universidad de Tokyo), Georepublic, Google Summer of Code, iMaptools, Orkney, Paragon Corporation"
-
-# 4cdcc401254446eb9d46bda960475fc9
-#: ../../src/introduction/introduction.rst:62
-msgid "More Information"
-msgstr "Más Información"
-
-# 4bf76e2626a34595ab551ac18bd46a72
-#: ../../src/introduction/introduction.rst:64
-msgid ""
-"The latest software, documentation and news items are available at the "
-"pgRouting web site http://pgrouting.org."
-msgstr "Los últimos productos de software, documentación y las noticias están disponibles en el sitio web pgRouting http://pgrouting.org."
-
-# 7344febf35dc4a0ebc352f5786f756b0
-#: ../../src/introduction/introduction.rst:65
-msgid ""
-"PostgreSQL database server at the PostgreSQL main site "
-"http://www.postgresql.org."
-msgstr "El servidor de base de datos PostgreSQL está en el sitio principal de PostgreSQL http://www.postgresql.org."
-
-# cc976f5cf90846e6b5e9dac7197bed3d
-#: ../../src/introduction/introduction.rst:66
-msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
-msgstr "La extensión PostGIS están en el sitio web del proyecto PostGIS http://postgis.net."
-
-# b8f01943a50a46e8add511936f5a97c4
-#: ../../src/introduction/introduction.rst:67
-msgid "Boost C++ source libraries at http://www.boost.org."
-msgstr "Las bibliotecas fuentes de Boost C++ están en http://www.boost.org."
-
-# 65e6bb0c75f54944a362439ff74f327d
-#: ../../src/introduction/introduction.rst:68
-msgid ""
-"Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
-msgstr "La biblioteca de algoritmos geométricos computacionales (CGAL) están en http://www.cgal.org."
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/introduction/support.po b/doc/i18n/es/LC_MESSAGES/doc/src/introduction/support.po
deleted file mode 100644
index 3df5048..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/introduction/support.po
+++ /dev/null
@@ -1,220 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 16:10+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# c7c0c737d2bc483ca92c96d3625c5985
-#: ../../src/introduction/support.rst:13
-msgid "Support"
-msgstr "Soporte"
-
-# 32ad6c32431b44539592025892c46046
-#: ../../src/introduction/support.rst:15
-msgid ""
-"pgRouting community support is available through `website "
-"<http://www.pgrouting.org>`_, `documentation <http://docs.pgrouting.org>`_, "
-"tutorials, mailing lists and others. If you’re looking for :ref:`commercial "
-"support <support_commercial>`, find below a list of companies providing "
-"pgRouting development and consulting services."
-msgstr "Ayudas comunitarias de pgRouting son a través del sitio `pgrouting <http://www.pgrouting.org>`_, `documentación <http://docs.pgrouting.org>`_, tutoriales, listas de correo y otros. Si usted está buscando :ref:`apoyo comercial <support_commercial>`, a continuación encontrará una lista de las empresas que prestan servicios de consultoría y de desarrollo para pgRouting."
-
-# 4bff50a608f740b89877515e393b43a3
-#: ../../src/introduction/support.rst:19
-msgid "Reporting Problems"
-msgstr "Reporte de problemas"
-
-# a0003d2bba284084b83f648947e1d28a
-#: ../../src/introduction/support.rst:21
-msgid ""
-"Bugs are reported and managed in an `issue tracker "
-"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
-"steps:"
-msgstr "Errores son registrados y manejados en un `issue tracker <https://github.com/pgrouting/pgrouting/issues>`_. Por favor siga los siguientes pasos:"
-
-# 456e34fdd1a64ac2bf279b123f8c60ec
-#: ../../src/introduction/support.rst:23
-msgid ""
-"Search the tickets to see if your problem has already been reported. If so, "
-"add any extra context you might have found, or at least indicate that you "
-"too are having the problem. This will help us prioritize common issues."
-msgstr "Buscar en las entradas para ver si ya se ha informado de su problema. Si es así, añadir cualquier contexto extra que usted haya encontrado, o al menos indicar que también está teniendo el problema. Esto nos ayudará a priorizar los problemas más comunes."
-
-# c7868bf251024c2284115bdc5ff6a56a
-#: ../../src/introduction/support.rst:24
-msgid ""
-"If your problem is unreported, create a `new issue "
-"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
-msgstr "Si el problema no está reportado , crear una `nueva entrada <https://github.com/pgRouting/pgrouting/issues/new>`_ para el problema."
-
-# 8780a71171ad4ee891831e77e352e463
-#: ../../src/introduction/support.rst:25
-msgid ""
-"In your report include explicit instructions to replicate your issue. The "
-"best tickets include the exact SQL necessary to replicate a problem."
-msgstr "En su informe incluya instrucciones explícitas para reproducir el problema. Las mejores entradas incluyen consultas SQL exactas que se necesitan para reproducir el problema."
-
-# e37493a4d9354b66abcd37cee8516738
-#: ../../src/introduction/support.rst:26
-msgid ""
-"If you can test older versions of PostGIS for your problem, please do. On "
-"your ticket, note the earliest version the problem appears."
-msgstr "Si usted puede probar las versiones anteriores de PostGIS para su problema, por favor hágalo. En su reporte, tenga en cuenta la versión más antigua en la que aparezca el problema."
-
-# 2fb24e96127c45d08bb73c55f52a7153
-#: ../../src/introduction/support.rst:27
-msgid ""
-"For the versions where you can replicate the problem, note the operating "
-"system and version of pgRouting, PostGIS and PostgreSQL."
-msgstr "Para las versiones donde se puede reproducir el problema, anote el sistema operativo y la versión de pgRouting, PostGIS y PostgreSQL."
-
-# a663e12c88ed4c958554c604f0b6d4d0
-#: ../../src/introduction/support.rst:28
-msgid ""
-"It is recommended to use the following wrapper on the problem to pin point "
-"the step that is causing the problem."
-msgstr "Se recomienda que utilice el siguiente envoltorio en su problema para determinar el paso que está causando el problema"
-
-# 47052f7fae7249d6ae1cf64282ceb59c
-#: ../../src/introduction/support.rst:39
-msgid "Mailing List and GIS StackExchange"
-msgstr "Listas de correo y GIS StackExchange"
-
-# 27b8ce0f71384ba693efcb0dfb73ae3a
-#: ../../src/introduction/support.rst:41
-msgid ""
-"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
-"server:"
-msgstr "Hay dos listas de correo para pgRouting alojados en las listas de correo del Servidor de OSGeo:"
-
-# 80462e7382f24471ba09d7fd3a545a9e
-#: ../../src/introduction/support.rst:43
-msgid ""
-"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
-msgstr "Lista de correos para usuarios: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
-
-# 13e85084f4834b80bc71de82070cd045
-#: ../../src/introduction/support.rst:44
-msgid ""
-"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
-"dev"
-msgstr "Lista de correo para desarrolladores: http://lists.osgeo.org/mailman/listinfo/pgrouting-dev"
-
-# 1c9e5bb5962e4e0eb6def2fb057836f0
-#: ../../src/introduction/support.rst:46
-msgid ""
-"For general questions and topics about how to use pgRouting, please write to"
-" the user mailing list."
-msgstr "Para preguntas generales y tópicos sobre el uso pgRouting, escriba a la lista de correo para usuario."
-
-# 6ee669e36133404c80e8b4970948411f
-#: ../../src/introduction/support.rst:48
-msgid ""
-"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
-" tag the question with ``pgrouting``. Find all questions tagged with "
-"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
-"or subscribe to the `pgRouting questions feed "
-"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
-msgstr "También se puede preguntar en `StackExchange GIS <http://gis.stackexchange.com/>`_ y etiquetar la pregunta con ``pgRouting``. Buscar todas las preguntas con la etiqueta ``pgRouting`` bajo http://gis.stackexchange.com/questions/tagged/pgrouting o suscribirse al `Alimentador de preguntas de pgRouting <http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
-
-# 6a373e258f034db7a828d6136b10d6f2
-#: ../../src/introduction/support.rst:54
-msgid "Commercial Support"
-msgstr "Soporte Comercial"
-
-# cc0ba72823c14231862a66b9ae93346a
-#: ../../src/introduction/support.rst:56
-msgid ""
-"For users who require professional support, development and consulting "
-"services, consider contacting any of the following organizations, which have"
-" significantly contributed to the development of pgRouting:"
-msgstr "Para usuarios que requieren apoyo profesional, desarrollo y servicios de consultoría, considere ponerse en contacto con cualquiera de las siguientes organizaciones, que han contribuido significativamente al desarrollo de pgRouting:"
-
-# 67e18fa7bf2148078cd7d3f651ee5127
-#: ../../src/introduction/support.rst:61
-msgid "**Company**"
-msgstr "**Empresa**"
-
-# 19beaf22bba14bad81ecc361e70f065f
-#: ../../src/introduction/support.rst:62
-msgid "**Offices in**"
-msgstr "**Oficinas en**"
-
-# 0fab02b12f7a41429938b4d160ad4255
-#: ../../src/introduction/support.rst:63
-msgid "**Website**"
-msgstr "**Sitio web**"
-
-# 350e6cd672124438a6fa234a5c635414
-#: ../../src/introduction/support.rst:64
-msgid "Georepublic"
-msgstr "Georepublic"
-
-# dd5cf051ee424f30aebcd1f07cb73b6e
-#: ../../src/introduction/support.rst:65
-msgid "Germany, Japan"
-msgstr "Alemania, Japón"
-
-# 466fe62593f94b62a69ead6e8a03565b
-#: ../../src/introduction/support.rst:66
-msgid "http://georepublic.info"
-msgstr "http://georepublic.info"
-
-# addd13f2e8ba4a588f031b6f49ee8928
-#: ../../src/introduction/support.rst:67
-msgid "iMaptools"
-msgstr "iMaptools"
-
-# a8daac2def214afc8d8ceb9a27d25589
-#: ../../src/introduction/support.rst:68
-msgid "United States"
-msgstr "Estados Unidos"
-
-# 08a0ae9e94434d9bb44c3c8403243f3f
-#: ../../src/introduction/support.rst:69
-msgid "http://imaptools.com"
-msgstr "http://imaptools.com"
-
-# de65746683f949569928286d2b94e0c9
-#: ../../src/introduction/support.rst:70
-msgid "Orkney Inc."
-msgstr "Orkney Inc."
-
-# f9673096ad4b4c9fb435f7e806e95b68
-#: ../../src/introduction/support.rst:71
-msgid "Japan"
-msgstr "Japón"
-
-# d23116ef9a0f4feba31c83b54b3e823f
-#: ../../src/introduction/support.rst:72
-msgid "http://www.orkney.co.jp"
-msgstr "http://www.orkney.co.jp"
-
-# dceb3f34abe74bfbad46c5a5e37c852b
-#: ../../src/introduction/support.rst:73
-msgid "Camptocamp"
-msgstr "Camptocamp"
-
-# 6bb5afc92f294b7e8322302390f56fec
-#: ../../src/introduction/support.rst:74
-msgid "Switzerland, France"
-msgstr "Suiza, Francia"
-
-# bd2983c88d074017be19551e6cf11fff
-#: ../../src/introduction/support.rst:75
-msgid "http://www.camptocamp.com"
-msgstr "http://www.camptocamp.com"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/analytics.po b/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/analytics.po
deleted file mode 100644
index 68f8a3b..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/analytics.po
+++ /dev/null
@@ -1,215 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 18:44+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 980fad1a06484f7c8cef9a7fde4958ec
-#: ../../src/tutorial/analytics.rst:13
-msgid "Graph Analytics"
-msgstr "Análisis de gráficas"
-
-# 92dfdaca18154d5fb972e4b0377224d1
-#: ../../src/tutorial/analytics.rst:15
-msgid "Stephen Woodbridge <woodbri at swoodbridge.com>"
-msgstr "Stephen Woodbridge <woodbri at swoodbridge.com>"
-
-# 9d29818196394fe6bde3a64a6a4ecc11
-#: ../../src/tutorial/analytics.rst:16
-msgid ""
-"Stephen Woodbridge. The source code is released under the MIT-X license."
-msgstr "Stephen Woodbridge. El código fuente está liberado bajo la licencia MIT-X."
-
-# 310f125aa8204065bcc2b95d49db2196
-#: ../../src/tutorial/analytics.rst:20
-msgid "Overview"
-msgstr "Resumen"
-
-# a3236e530b504e8895bcee266c2f686b
-#: ../../src/tutorial/analytics.rst:22
-msgid ""
-"It is common to find problems with graphs that have not been constructed "
-"fully noded or in graphs with z-levels at intersection that have been "
-"entered incorrectly. An other problem is one way streets that have been "
-"entered in the wrong direction. We can not detect errors with respect to "
-"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
-"a graph and report them for additional inspections."
-msgstr "Es común encontrar problemas con los gráficos que no se han construido completamente ligados con nodos o con gráficos con niveles z en intersecciónes que se han introducido incorrectamente. Otro problema es que las calles han sido introducidas en la dirección equivocada. No podemos detectar errores con respecto a la verdad respecto a la \"tierra\", pero podemos buscar inconsistencias y algunas anomalías en un gráfico y les reportarlas para inspecciones adicionales."
-
-# be553e417c184b5eb0ad8ee4096ad7fa
-#: ../../src/tutorial/analytics.rst:24
-msgid ""
-"We do not current have any visualization tools for these problems, but I "
-"have used mapserver to render the graph and highlight potential problem "
-"areas. Someone familiar with graphviz might contribute tools for generating "
-"images with that."
-msgstr "Nosotros no tenemos herramientas de visualización para estos problemas, pero se ha utilizado MapServer para reproducir la gráfica y poner en relieve las áreas con problemas potenciales. Alguien familiarizado con graphviz podría contribuir con herramientas para generar imágenes para este propósito."
-
-# d3e3bf311b944d1cb4f8ebfa1e3d1c35
-#: ../../src/tutorial/analytics.rst:28
-msgid "Analyze a Graph"
-msgstr "Analizar un gráfico"
-
-# b7b34732b36b4c3386ebb82a99725c87
-#: ../../src/tutorial/analytics.rst:30
-msgid ""
-"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
-"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
-"table:"
-msgstr "Con :ref:`pgr_analyze_graph` el gráfico puede comprobarse errores. Por ejemplo para la tabla \"mytab\" que tiene \"mytab_vertices_pgr\" como la tabla de vértices:"
-
-# 883152de9fb3419fa261d8c6761b619f
-#: ../../src/tutorial/analytics.rst:53
-msgid "In the vertices table \"mytab_vertices_pgr\":"
-msgstr "En la tabla de vértices \"mytab_vertices_pgr\":"
-
-# dde249ef911949ab835d0b7d9350c416
-#: ../../src/tutorial/analytics.rst:55
-msgid "Deadends are indentified by ``cnt=1``"
-msgstr "Incorrectos son identificados por ``cnt=1``"
-
-# 99f8cb76dde84268b23cafcadb364a32
-#: ../../src/tutorial/analytics.rst:56
-msgid "Potencial gap problems are identified with ``chk=1``."
-msgstr "Se identifican problemas potenciales brecha con``chk=1``."
-
-# fd199f728c124588a6fccf258e912e65
-#: ../../src/tutorial/analytics.rst:74
-msgid ""
-"For isolated road segments, for example, a segment where both ends are "
-"deadends. you can find these with the following query:"
-msgstr "Si se tienen segmentos aislados de caminos, por ejemplo, un segmento en el cual los dos extremos son callejones sin salida, se pueden encontrar con la siguiente consulta:"
-
-# 6986ddb18688499ca9065a00ac84b5fc
-#: ../../src/tutorial/analytics.rst:83
-msgid ""
-"If you want to visualize these on a graphic image, then you can use "
-"something like mapserver to render the edges and the vertices and style "
-"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
-"tool like graphviz, or geoserver or other similar tools."
-msgstr "Si quieren visualizar en una imagen gráfica, entonces usted puede utilizar algo como MapServer para representar los bordes y los vértices y el estilizar en base a ``cnt`` o si están aislados, etc. También se puede hacer esto con una herramienta como graphviz o geoserver u otras herramientas similares."
-
-# a9cdd802bf2d44b8ad116075edfa006d
-#: ../../src/tutorial/analytics.rst:87
-msgid "Analyze One Way Streets"
-msgstr "Analizar las calles unidireccionales"
-
-# ceeba0ba5905459c92f8e38e90544cb4
-#: ../../src/tutorial/analytics.rst:89
-msgid ""
-":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
-" any flipped segments. Basically if you count the edges coming into a node "
-"and the edges exiting a node the number has to be greater than one."
-msgstr ":ref:`pgr_analyze_oneway` analiza calles de sentido único en un grafo e identifica segmentos invertidos. Básicamente, si se cuentan los bordes entrada en un nodo y los bordes de salida de un nodo el número tiene que ser mayor que uno."
-
-# 965b89e720674f77a4d6d97b26312235
-#: ../../src/tutorial/analytics.rst:91
-msgid ""
-"This query will add two columns to the vertices_tmp table ``ein int`` and "
-"``eout int`` and populate it with the appropriate counts. After running this"
-" on a graph you can identify nodes with potential problems with the "
-"following query."
-msgstr "Esta consulta agrega dos columnas a la tabla vertices_tmp ``ein int`` y ``eout int`` (ein = borde de entrada, eout=borde de salida) y las rellena con los conteos correspondientes. Después de su ejecución, en un grafo se pueden identificar los nodos con problemas potenciales utilizando la siguiente consulta. "
-
-# 7a483848e9424b628eadf2560140d784
-#: ../../src/tutorial/analytics.rst:94
-msgid ""
-"The rules are defined as an array of text strings that if match the ``col`` "
-"value would be counted as true for the source or target in or out condition."
-msgstr "Las reglas se definen como un conjunto de cadenas de texto que si coinciden con el valor de ``col`` se considera como válido para el origen o destino dentro o fuera de la condición."
-
-# 07304f9bde2d4248af5616aa3ad7b998
-#: ../../src/tutorial/analytics.rst:98
-msgid "Example"
-msgstr "Ejemplo"
-
-# 3a0862cb802a42dd9a8eb1972e947d4a
-#: ../../src/tutorial/analytics.rst:100
-msgid ""
-"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
-"might have values like:"
-msgstr "Supongamos que tenemos una tabla \"st\" de bordes y una columna \"one_way\" que podría tener valores como:"
-
-# 04d77c12d42a49098ac138d4cd8d1134
-#: ../../src/tutorial/analytics.rst:102
-msgid "'FT' - oneway from the source to the target node."
-msgstr "'FT' - dirección unidireccional de la fuente para el nodo de destino."
-
-# 1e433297e48745b8a26d9bdc471bb079
-#: ../../src/tutorial/analytics.rst:103
-msgid "'TF' - oneway from the target to the source node."
-msgstr "'TF' - dirección unidireccional desde el nodo destino hasta el nodo fuente."
-
-# ec58ad375c304521a62c088b53b57cca
-#: ../../src/tutorial/analytics.rst:104
-msgid "'B' - two way street."
-msgstr "'B' - calle de doble sentido."
-
-# de3d50611ab84de8abc0434aaf176361
-#: ../../src/tutorial/analytics.rst:105
-msgid "'' - empty field, assume twoway."
-msgstr "''- campo vacío, suponer doble sentido."
-
-# bec6afb7e7f0453b8d028b521ce38b1f
-#: ../../src/tutorial/analytics.rst:106
-msgid "<NULL> - NULL field, use two_way_if_null flag."
-msgstr "<NULL> - Campo NULL, usar bandera de two_way_if_null, es decir, doble sentido cuando nulo."
-
-# 8b2a6e5d0f58459b9c0d857b8094b2b1
-#: ../../src/tutorial/analytics.rst:108
-msgid ""
-"Then we could form the following query to analyze the oneway streets for "
-"errors."
-msgstr "Entonces se puede formar la siguiente consulta para analizar las calles unidireccionales para errores."
-
-# ca0da22fa34a4ab8abffbb33176f1196
-#: ../../src/tutorial/analytics.rst:127
-msgid ""
-"Typically these problems are generated by a break in the network, the one "
-"way direction set wrong, maybe an error related to z-levels or a network "
-"that is not properly noded."
-msgstr "Normalmente estos problemas son generados por una rotura en la red, la dirección un camino equivocado, quizás un error relacionado con niveles z o una red que no esté debidamente indicada con nodos."
-
-# e6995522d4b34322a49f7fc234ef5a92
-#: ../../src/tutorial/analytics.rst:129
-msgid ""
-"The above tools do not detect all network issues, but they will identify "
-"some common problems. There are other problems that are hard to detect "
-"because they are more global in nature like multiple disconnected networks. "
-"Think of an island with a road network that is not connected to the mainland"
-" network because the bridge or ferry routes are missing."
-msgstr "Las herramientas anteriores no detectan todos los problemas de la red, pero identifican algunos problemas comunes. Hay otros problemas que son difíciles de detectar porque son más globales en su naturaleza como múltiples redes desconectadas. Piense usted en una isla con una red de carreteras que no está conectada a la red del continente porque faltan las rutas del puente o del ferry."
-
-# f35ee6b63cb84a21956ba58f495375b3
-#: ../../src/tutorial/analytics.rst:133
-msgid "See Also"
-msgstr "Véase también"
-
-# 46adfdf5d9b042109be5c667ad12afdc
-#: ../../src/tutorial/analytics.rst:135
-msgid ":ref:`pgr_analyze_graph`"
-msgstr ":ref:`pgr_analyze_graph`"
-
-# d6a1979339344f65beef1fb134c99ea0
-#: ../../src/tutorial/analytics.rst:136
-msgid ":ref:`pgr_analyze_oneway`"
-msgstr ":ref:`pgr_analyze_oneway`"
-
-# b1e8747121eb4e61bc26581ab784c9ce
-#: ../../src/tutorial/analytics.rst:137
-msgid ":ref:`pgr_node_network`"
-msgstr ":ref:`pgr_node_network`"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/custom_query.po b/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/custom_query.po
deleted file mode 100644
index 1d658b1..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/custom_query.po
+++ /dev/null
@@ -1,150 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:11+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 6f7957030f094b6d9cbc9409e43365cc
-#: ../../src/tutorial/custom_query.rst:13
-msgid "Custom Query"
-msgstr "Consultas Personalizadas"
-
-# d51566c70ba441bd97b5f05d3319f75b
-#: ../../src/tutorial/custom_query.rst:17
-msgid ""
-"In general, the routing algorithms need an SQL query that contain one or "
-"more of the following required columns with the preferred type:"
-msgstr "En general, los algoritmos de enrutamiento necesitan una consulta SQL que contienen uno o más de las siguientes columnas necesarias con el tipo preferido:"
-
-# 3635e11429294bfb8119843ed85e9357
-# 3e7594678daf45f18a5e66bd639a5eff
-# 1cbb2351bab547248a9e9c603cd7a566
-#: ../../src/tutorial/custom_query.rst:19
-#: ../../src/tutorial/custom_query.rst:20
-#: ../../src/tutorial/custom_query.rst:21
-msgid "int4"
-msgstr "int4"
-
-# 4215130eed644b249425772c5e56bd0f
-# 56540a30c9bd4368b8cabf5c501404f4
-# cd08d7d274414ff8ab7201e379a68284
-# bcb0372ecaf94af1b1ddac5411662b4c
-# 0e6362bbf64c4705b5b1f75692ec42ef
-# 8d70966ee0614b2c887aaab9e45c0dd5
-# 4326b5bb0231435698e3b6d52f933827
-# 3181c241469e4670bcae933939634002
-# cb8241385b0c44c4839d156649851190
-#: ../../src/tutorial/custom_query.rst:22
-#: ../../src/tutorial/custom_query.rst:23
-#: ../../src/tutorial/custom_query.rst:24
-#: ../../src/tutorial/custom_query.rst:25
-#: ../../src/tutorial/custom_query.rst:26
-#: ../../src/tutorial/custom_query.rst:27
-#: ../../src/tutorial/custom_query.rst:28
-#: ../../src/tutorial/custom_query.rst:29
-#: ../../src/tutorial/custom_query.rst:63
-msgid "float8"
-msgstr "float8"
-
-# 18ef546ea54244b9a998d5db49cd6b44
-#: ../../src/tutorial/custom_query.rst:31
-msgid ""
-"When the edge table has the mentioned columns, the following SQL queries can"
-" be used."
-msgstr "Cuando el la tabla de bordes tiene las columnas mencionadas, pueden utilizarse las siguientes consultas SQL."
-
-# d6c69e08f2e942548a8da4a67c6be175
-#: ../../src/tutorial/custom_query.rst:39
-msgid ""
-"When the edge table has a different name to represent the required columns:"
-msgstr "Cuandola tabla de bordes tiene un nombre diferente para representar las columnas necesarias:"
-
-# d121b6e40b2549b68baeebb6ac20ebfe
-#: ../../src/tutorial/custom_query.rst:51
-msgid ""
-"The topology functions use the same names for ``id``, ``source`` and "
-"``target`` columns of the edge table, The fowllowing parameters have as "
-"default value:"
-msgstr "Las funciones de topología utilizan los mismos nombres de columnas ``id``, ``source`` y ``target`` de la tabla del bordes, los siguientes parámetros tienen como valor predeterminado:"
-
-# 0cffe4e3fec240748ea92fc80198a879
-#: ../../src/tutorial/custom_query.rst:53
-msgid "int4 Default ``id``"
-msgstr "int4 Por defecto ``id``"
-
-# 317d18ac6e654e2699ab3c5386987100
-#: ../../src/tutorial/custom_query.rst:54
-msgid "int4 Default ``source``"
-msgstr "int4 Por defecto ``source``"
-
-# dc30cae70610482b9da90a59e92699b1
-#: ../../src/tutorial/custom_query.rst:55
-msgid "int4 Default ``target``"
-msgstr "int4 Por defecto ``target``"
-
-# 5ea6410c1e7948d8a0de99e9348a3617
-#: ../../src/tutorial/custom_query.rst:56
-msgid "text Default ``the_geom``"
-msgstr "text Por defecto ``the_geom``"
-
-# 234a816e3ec248f6938cf67c6d91e5e1
-#: ../../src/tutorial/custom_query.rst:57
-msgid "text Default ``oneway``"
-msgstr "text Por defecto ``oneway``"
-
-# a4dbcf322242431e86e21cf0dd2d0323
-#: ../../src/tutorial/custom_query.rst:58
-msgid "text Default ``true`` to indicate all rows (this is not a column)"
-msgstr "text Por defecto ``true`` para indicar todos los registros (esto no es una columna)"
-
-# 0a9261da3a204fe8973f128ef6a960e6
-#: ../../src/tutorial/custom_query.rst:60
-msgid ""
-"The following parameters do not have a default value and when used they have"
-" to be inserted in strict order:"
-msgstr "Los siguientes parámetros no tienen un valor por defecto y cuando se usan tienen que insertarse en estricto orden:"
-
-# 24f06f6b1d4e4d4ba7fb3d078899cbeb
-#: ../../src/tutorial/custom_query.rst:62
-msgid "text"
-msgstr "text"
-
-# 25b4027b78f7437bb8ce6a6142881103
-# a08810d55bc040ce8de287b6455d6007
-# 9e98508be5844523a5de60001d5ca3ee
-# c5bc2ea08c5d4e188935bd817a23e363
-#: ../../src/tutorial/custom_query.rst:64
-#: ../../src/tutorial/custom_query.rst:65
-#: ../../src/tutorial/custom_query.rst:66
-#: ../../src/tutorial/custom_query.rst:67
-msgid "text[]"
-msgstr "text[]"
-
-# 324f6836a74d4eb9a61de9ec13f4efd8
-#: ../../src/tutorial/custom_query.rst:69
-msgid ""
-"When the columns required have the default names this can be used (pgr_func "
-"is to represent a topology function)"
-msgstr "Cuando las columnas necesarias tienen los nombres por defecto se puede usar lo siguiente: (pgr_func es representar una función de topología)"
-
-# 250d7353f04c4625a0a939e34b72cbf8
-#: ../../src/tutorial/custom_query.rst:79
-msgid ""
-"When the columns required do not have the default names its strongly "
-"recomended to use the *named notation*."
-msgstr "Cuando las columnas necesarias no tienen los nombres por defecto se recomienda enormemente usar la *notación con nombre*."
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po b/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po
deleted file mode 100644
index 6c1bb3b..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po
+++ /dev/null
@@ -1,70 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:21+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# fdfd82e4029f405cb20f6983ac0e8400
-#: ../../src/tutorial/custom_wrapper.rst:13
-msgid "User's wrapper contributions"
-msgstr "Contribuciones de envolturas de los usuarios"
-
-# 0ed94d5c958e49ac91f580458dd8e7df
-#: ../../src/tutorial/custom_wrapper.rst:16
-msgid "How to contribute."
-msgstr "Cómo contribuir."
-
-# 154fe7498e824fdc94e99047566e13f7
-#: ../../src/tutorial/custom_wrapper.rst:17
-msgid ""
-"Use an issue tracker (see :ref:`support`) with a title containing: "
-"*Proposing a wrapper: Mywrappername*. The body will contain:"
-msgstr "Utilice un issue tracker en git (ver :ref:`Soporte <support>`) con un título que contiene: *Proposing a wrapper: MiNombreDeENVOLTORIO*. El cuerpo debe contener:"
-
-# 86e24004f41e4adeb44c60b00aef5593
-#: ../../src/tutorial/custom_wrapper.rst:19
-msgid "author: Required"
-msgstr "Autor: requerido"
-
-# 9cdb6c13a10f4f00a75f49426e9ec6dd
-#: ../../src/tutorial/custom_wrapper.rst:20
-msgid ""
-"mail: if you are subscribed to the developers list this is not necessary"
-msgstr "Correo: Si usted está suscrito a la lista de los desarrolladores no es necesario"
-
-# 3d74aead3077430888a131fa4a1475a8
-#: ../../src/tutorial/custom_wrapper.rst:21
-msgid "date: Date posted"
-msgstr "Fecha: fecha"
-
-# 8f0604e44c504b148c98d72c4e3f83d7
-#: ../../src/tutorial/custom_wrapper.rst:22
-msgid "comments and code: using reStructuredText format"
-msgstr "Comentarios y código: formato reStructuredText"
-
-# 945341c151ec49658c5f8209a7d42a31
-#: ../../src/tutorial/custom_wrapper.rst:24
-msgid ""
-"Any contact with the author will be done using the developers mailing list. "
-"The pgRouting team will evaluate the wrapper and will be included it in this"
-" section when approved."
-msgstr "Cualquier contacto con el autor se hará utilizando la lista de correo de desarrolladores. El equipo pgRouting evaluará el envoltorio y será incluido en esta sección cuando sea aprobado."
-
-# d00b0921e7c74745b04071de66cf10ad
-#: ../../src/tutorial/custom_wrapper.rst:27
-msgid "*No contributions at this time*"
-msgstr "*No hay contribuciones*"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/index.po b/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/index.po
deleted file mode 100644
index 96bd79e..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/index.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-24 00:21+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 6a8f93140b244bb29541e366b9af91dd
-#: ../../src/tutorial/index.rst:13
-msgid "Tutorial"
-msgstr "Tutoriales"
-
-# a64c244637f4455cbded0e09c15fb8e1
-#: ../../src/tutorial/index.rst:16
-msgid ":ref:`Getting started <tutorial>`"
-msgstr ":ref:`Comenzando a trabajar <tutorial>`"
-
-# acf4544cb0394b96859312fe489b6b5f
-#: ../../src/tutorial/index.rst:18
-msgid "How to create a database to use for our project"
-msgstr "Cómo crear una base de datos para ser utilizada por nuestro proyecto"
-
-# 29bb03c78beb407cb3c7ef833144e908
-#: ../../src/tutorial/index.rst:19
-msgid "How to load some data"
-msgstr "Cómo cargar algunos datos"
-
-# 6522624c4787423098652645beaca70b
-#: ../../src/tutorial/index.rst:20
-msgid "How to build a topology"
-msgstr "Cómo construir una topología"
-
-# 7e3a1701c1cb4f2399f80cab2f32fbfd
-#: ../../src/tutorial/index.rst:21
-msgid "How to check your graph for errors"
-msgstr "Cómo comprobar la gráfica para errores"
-
-# 7a4ac738b5a54446a3fb6a2a872ee973
-#: ../../src/tutorial/index.rst:22
-msgid "How to compute a route"
-msgstr "Cómo calcular una ruta"
-
-# 267375c5b956437cab09d66694082436
-#: ../../src/tutorial/index.rst:23
-msgid "How to use other tools to view your graph and route"
-msgstr "Cómo utilizar otras herramientas para ver la gráfica y la ruta"
-
-# 7eb6346c00174549a67aa3ba5b639061
-#: ../../src/tutorial/index.rst:24
-msgid "How to create a web app"
-msgstr "Cómo crear una aplicación web"
-
-# 9c88e3538b4443db8727c2ac29dfe064
-#: ../../src/tutorial/index.rst:26
-msgid "Advanced Topics"
-msgstr "Tópicos avanzados"
-
-# 96bfb05f4c374de79f250704d4c8b3e7
-#: ../../src/tutorial/index.rst:28
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ":ref:`topology` para tener una visión general de una topología de algoritmos de encaminamiento."
-
-# 5bb8a81892314636b035fe0d8e56b426
-#: ../../src/tutorial/index.rst:29
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ":ref:`analytics` para tener una visión general del análisis de un gráfico."
-
-# 6cfe3bc3d8b942b188c87a00b5e92cb8
-#: ../../src/tutorial/index.rst:30
-msgid ":ref:`custom_query` that is used in the routing algorithms."
-msgstr ":ref:`custom_query` que se utiliza en los algoritmos de encaminamiento."
-
-# 2fc8eb635e614b249d37a76fb7d66f68
-#: ../../src/tutorial/index.rst:31
-msgid ":ref:`performance` to improve your performance."
-msgstr ":ref:`performance` para mejorar su rendimiento."
-
-# 1cf3220a11c4411b85339e05e3546f22
-#: ../../src/tutorial/index.rst:32
-msgid ":ref:`custom_wrapper` to colaborate with a wrapper."
-msgstr ":ref:`custom_wrapper` para colaborar con un envoltorio."
-
-# 025472df762342bb955f96e2572111ed
-#: ../../src/tutorial/index.rst:33
-msgid ":ref:`recipes` to colaborate with a recipe."
-msgstr ":ref:`recipes` para colaborar con una receta."
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/performance.po b/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/performance.po
deleted file mode 100644
index d06d084..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/performance.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 19:20+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 02750fc506e541eaa5e3a34280aabce6
-#: ../../src/tutorial/performance.rst:13
-msgid "Performance Tips"
-msgstr "Consejos de Rendimiento"
-
-# c6cdc3cc67d54b349406611e4f2fba51
-#: ../../src/tutorial/performance.rst:16
-msgid ""
-"When \"you know\" that you are going to remove a set of edges from the edges"
-" table, and without those edges you are going to use a routing function you "
-"can do the following:"
-msgstr "Cuando \"sabe\" que va a eliminar un conjunto de bordes de la tabla de bordes, y sin esos bordes va a utilizar una función de enrrutamiento puede hacer el siguiente:"
-
-# 09daa462ecb3460fb93b4a3a05fccb4f
-#: ../../src/tutorial/performance.rst:18
-msgid "Analize the new topology based on the actual topology:"
-msgstr "Analizar la topología nueva basada en la topología actual:"
-
-# 6481ccc4d94a4513893f4b1ec5fd615f
-#: ../../src/tutorial/performance.rst:24
-msgid "Or create a new topology if the change is permanent:"
-msgstr "O crear una nueva topología si el cambio es permanente:"
-
-# f83a8c75a53848f4b2b2ce62be14b3b1
-#: ../../src/tutorial/performance.rst:31
-msgid "Use an SQL that \"removes\" the edges in the routing function"
-msgstr "Utilice un SQL que \"elimina\" los bordes en la función de enrrutamiento"
-
-# d598fe2adbc346ce8aa4ea167d2cc77d
-#: ../../src/tutorial/performance.rst:37
-msgid ""
-"When \"you know\" that the route will not go out of a particular area, to "
-"speed up the process you can use a more complex SQL query like"
-msgstr "Cuando \"sabe\" que la ruta no saldrá de un área en particular, para acelerar el proceso puede utilizar una consulta SQL más compleja como"
-
-# c7e739bf9e1e42cfaedf49458bedb00c
-#: ../../src/tutorial/performance.rst:46
-msgid "Note that the same condition ``id < 17`` is used in all cases."
-msgstr "Tenga en cuenta que la misma condición ``id < 17`` se utiliza en todos los casos."
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/recipes.po b/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/recipes.po
deleted file mode 100644
index 2c65195..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/recipes.po
+++ /dev/null
@@ -1,85 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:20+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 2d164be73a6143b9850a47118af6fac0
-#: ../../src/tutorial/recipes.rst:13
-msgid "User's Recipes contributions"
-msgstr "Contribuciones de recetas de los usuarios"
-
-# 8f4e11e136e347c49071a20b75e3f7db
-#: ../../src/tutorial/recipes.rst:16
-msgid "How to contribute."
-msgstr "Cómo contribuir."
-
-# c28848a4efb9438e9753f9724a0b1bba
-#: ../../src/tutorial/recipes.rst:17
-msgid ""
-"Use an issue tracker (see :ref:`support`) with a title containing: "
-"*Proposing a Recipe: Myrecipename*. The body will contain:"
-msgstr "Utilice un issue tracker en git (ver :ref:`Soporte <support>`) con un título que contiene: *Proposing a Recipe: MiNombreDeReceta*. El cuerpo debe contiener:"
-
-# 304b12401b0a4ae6995e2e6f43ab60ed
-#: ../../src/tutorial/recipes.rst:19
-msgid "author: Required"
-msgstr "Autor: requerido"
-
-# 0de50268810243a9a9eae4fbe089d207
-#: ../../src/tutorial/recipes.rst:20
-msgid ""
-"mail: if you are subscribed to the developers list this is not necessary"
-msgstr "Correo: Si usted está suscrito a la lista de los desarrolladores no es necesario"
-
-# d84afc673d2a47e5a939a1905c7ac458
-#: ../../src/tutorial/recipes.rst:21
-msgid "date: Date posted"
-msgstr "Fecha: fecha"
-
-# a77ebe21f0d644da8c0573551db24a3e
-#: ../../src/tutorial/recipes.rst:22
-msgid "comments and code: using reStructuredText format"
-msgstr "Comentarios y código: formato reStructuredText"
-
-# 586b6b7d313849ccb0eff13b59bcde27
-#: ../../src/tutorial/recipes.rst:24
-msgid ""
-"Any contact with the author will be done using the developers mailing list. "
-"The pgRouting team will evaluate the recipe and will be included it in this "
-"section when approved."
-msgstr "Cualquier contacto con el autor se hará utilizando la lista de correo de desarrolladores. El equipo pgRouting evaluará la receta y será incluido en esta sección cuando sea aprobada."
-
-# c0fb6175b7b640e18821f49b08810c30
-#: ../../src/tutorial/recipes.rst:27
-msgid "Comparing topology of a unnoded network with a noded network"
-msgstr "Comparando la topología de una red de que no tiene nodos en las intersecciones con una red con nodos en las intersecciones"
-
-# 4f1d4919585f4bc2bb4d02067ccaa841
-#: ../../src/tutorial/recipes.rst:30
-msgid "pgRouting team."
-msgstr "Equipo pgRouting."
-
-# 413f44066e2e4af0952d3a31b7bbaeff
-#: ../../src/tutorial/recipes.rst:32
-msgid "This recipe uses the :ref:`sampledata` network."
-msgstr "Esta receta se utiliza la :ref:`red de ejemplo <sampledata>`."
-
-# 1e7ee7f6cb5b421d85ca530f636a264b
-#: ../../src/tutorial/recipes.rst:42
-msgid "*No more contributions*"
-msgstr "*No hay más contribuciones*"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/topology.po b/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/topology.po
deleted file mode 100644
index 8f65792..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/topology.po
+++ /dev/null
@@ -1,124 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 18:16+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 95ba56beb837464cac49ef7880693c4c
-#: ../../src/tutorial/topology.rst:13
-msgid "Routing Topology"
-msgstr "Topología para Ruteo"
-
-# a13e17875be047edb65c4dff0e77e3a3
-#: ../../src/tutorial/topology.rst:15
-msgid "Stephen Woodbridge <woodbri at swoodbridge.com>"
-msgstr "Stephen Woodbridge <woodbri at swoodbridge.com>"
-
-# fae10235d477445e8c8ad3b8ddf138c5
-#: ../../src/tutorial/topology.rst:16
-msgid ""
-"Stephen Woodbridge. The source code is released under the MIT-X license."
-msgstr "Stephen Woodbridge. El código fuente está liberado bajo la licencia MIT-X."
-
-# bb8d84bed17047048664ea7fe078eb94
-#: ../../src/tutorial/topology.rst:20
-msgid "Overview"
-msgstr "Resumen"
-
-# 2a882bec3de94c1eb574a3eb222c98e4
-#: ../../src/tutorial/topology.rst:22
-msgid ""
-"Typically when GIS files are loaded into the data database for use with "
-"pgRouting they do not have topology information associated with them. To "
-"create a useful topology the data needs to be \"noded\". This means that "
-"where two or more roads form an intersection there it needs to be a node at "
-"the intersection and all the road segments need to be broken at the "
-"intersection, assuming that you can navigate from any of these segments to "
-"any other segment via that intersection."
-msgstr "Normalmente cuando se cargan archivos GIS en la base de datos para su uso con pgRouting no tienen información de la topología asociada a ellos. Para crear una topología útil, los datos debe ser \"noded\". Esto significa que donde dos o más caminos forman una intersección allí debe existir y todos los segmentos de carretera necesitan estar partidos en la intersección, eso suponiendo que puede navegar a cualquier otro segmento mediante la intersección de cualquiera de estos segmentos."
-
-# 65c5e66127ab486492799e66af98970c
-#: ../../src/tutorial/topology.rst:24
-msgid ""
-"You can use the :ref:`graph analysis functions <analytics>` to help you see "
-"where you might have topology problems in your data. If you need to node "
-"your data, we also have a function :ref:`pgr_nodeNetwork() "
-"<pgr_node_network>` that might work for you. This function splits ALL "
-"crossing segments and nodes them. There are some cases where this might NOT "
-"be the right thing to do."
-msgstr "Puede utilizar las :ref:`funciones de análisis de gráficas <analytics>` para apoyarse en la búsqueda de problemas topológicos en los datos. Si se necesitan nodos en los datos, también se cuenta con la función :ref:`pgr_nodeNetwork() <pgr_node_network>` que le puede ser útil. Esta función divide todos los segmentos de los caminos y les asigna nodos entre ellos. Existen algunos casos donde no es lo apropiado."
-
-# efc1fb5385064e7da087f3b0371faf57
-#: ../../src/tutorial/topology.rst:26
-msgid ""
-"For example, when you have an overpass and underpass intersection, you do "
-"not want these noded, but pgr_nodeNetwork does not know that is the case and"
-" will node them which is not good because then the router will be able to "
-"turn off the overpass onto the underpass like it was a flat 2D intersection."
-" To deal with this problem some data sets use z-levels at these types of "
-"intersections and other data might not node these intersection which would "
-"be ok."
-msgstr "Por ejemplo, cuando se tiene un cruce de puente o de un túnel, no quieres estos contengan un nodo, pero pgr_nodeNetwork no sabe que ese es el caso y va a crear un nodo, entonces el enrutador interpretará el puente o el paso a desnivel como si fuera una intersección plana en 2D. Para lidiar con este problema, se debe utilizar niveles z ya se para estos tipos de intersecciones o para otros casos en donde crear el nodo de la intersección no sea lo correcto."
-
-# 43c22da1f7b34db7999adbad7ac7a4e1
-#: ../../src/tutorial/topology.rst:28
-msgid ""
-"For those cases where topology needs to be added the following functions may"
-" be useful. One way to prep the data for pgRouting is to add the following "
-"columns to your table and then populate them as appropriate. This example "
-"makes a lot of assumption like that you original data tables already has "
-"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
-"that they contain specific data values. This is only to give you an idea of "
-"what you can do with your data."
-msgstr "Para los casos donde la topología debe construirse, las siguientes funciones pueden ser de utilidad. Una forma de preparar los datos para pgRouting es agregar los siguientes campos a la tabla y luego poblarlas según corresponda. Este ejemplo tiene como supuestos: que la tabla original ya tiene columnas como ``one_way``, ``fcc`` y posiblemente otras y que contienen valores de datos específicos. Esto es sólo para darle una idea de lo que se puede hacer con los datos."
-
-# 30e52836594b46f1917dd9ffaa55fc0c
-#: ../../src/tutorial/topology.rst:49
-msgid ""
-"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
-"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
-"columns. The following example populated the remaining columns. In this "
-"example, the ``fcc`` column contains feature class code and the ``CASE`` "
-"statements converts it to an average speed."
-msgstr "La función :ref:`pgr_createTopology() <pgr_create_topology>` creará la tabla ``vertices_tmp`` y rellenará las columnas ``source`` y ``target``. El ejemplo siguiente termina de llenar las columnas restantes. En este ejemplo, la columna ``fcc`` contiene códigos de las características de la calle y las declaraciones del ``CASE`` las convierte a una velocidad media."
-
-# 6aa2b52ff1ac4c16a315c9ddfdf90b57
-#: ../../src/tutorial/topology.rst:112
-msgid ""
-"Now your database should be ready to use any (most?) of the pgRouting "
-"algorithms."
-msgstr "Ahora su base de datos debe estar lista para usarse en cualquiera (mayoría?) de los algoritmos de pgRouting."
-
-# 6cc3d005cb454b77959bfbdc6fdd2105
-#: ../../src/tutorial/topology.rst:116
-msgid "See Also"
-msgstr "Véase también"
-
-# 40847af777814998afe63d824d73c507
-#: ../../src/tutorial/topology.rst:118
-msgid ":ref:`pgr_create_topology`"
-msgstr ":ref:`pgr_create_topology`"
-
-# 974b427fbcf64ec8ab76456dcd37bd7d
-#: ../../src/tutorial/topology.rst:119
-msgid ":ref:`pgr_node_network`"
-msgstr ":ref:`pgr_node_network`"
-
-# adedad6329b0494988daee57bcf0cb98
-#: ../../src/tutorial/topology.rst:120
-msgid ":ref:`pgr_point_to_id`"
-msgstr ":ref:`pgr_point_to_id`"
diff --git a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/tutorial.po b/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/tutorial.po
deleted file mode 100644
index 2700c9a..0000000
--- a/doc/i18n/es/LC_MESSAGES/doc/src/tutorial/tutorial.po
+++ /dev/null
@@ -1,208 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 20:30+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# cc286a8aa26b414ba5c056e7e967f754
-#: ../../src/tutorial/tutorial.rst:13
-msgid "Getting Started"
-msgstr "Comenzando a trabajar"
-
-# 203987e9bc9545e386abb61978fa7973
-#: ../../src/tutorial/tutorial.rst:15
-msgid ""
-"This is a simple guide to walk you through the steps of getting started with"
-" pgRouting. In this guide we will cover:"
-msgstr "Esta es una guía simple para llevarte a través de los pasos básicos para trabajar con pgRouting. Esta guía cubre:"
-
-# cf084ff2892b4ce09042343d046fd022
-# 09f0c2436ee0452ca34f4ea785294ca0
-#: ../../src/tutorial/tutorial.rst:18 ../../src/tutorial/tutorial.rst:27
-msgid "How to create a database to use for our project"
-msgstr "Cómo crear una base de datos para ser utilizada por nuestro proyecto"
-
-# c3031c03516e400eb51fd389eab9d370
-# 8e16b537fced4fd98de6654b3d25882d
-#: ../../src/tutorial/tutorial.rst:19 ../../src/tutorial/tutorial.rst:61
-msgid "How to load some data"
-msgstr "Cómo cargar algunos datos"
-
-# 28162361c9ef451a8269bdc8c569c9c5
-# be1e900598c64c579d8a2306852c3c77
-#: ../../src/tutorial/tutorial.rst:20 ../../src/tutorial/tutorial.rst:77
-msgid "How to build a topology"
-msgstr "Cómo construir una topología"
-
-# 422d77e9576145f6b3e41ee3e9d8019c
-# e02a5f0e2c4c4c108a97d142e7719614
-#: ../../src/tutorial/tutorial.rst:21 ../../src/tutorial/tutorial.rst:93
-msgid "How to check your graph for errors"
-msgstr "Cómo comprobar la gráfica para errores"
-
-# 48af8de98aa440599ef7c5e08a987c73
-# 00b0784fc2ba469ca4d4987d90a07e2a
-#: ../../src/tutorial/tutorial.rst:22 ../../src/tutorial/tutorial.rst:121
-msgid "How to compute a route"
-msgstr "Cómo calcular una ruta"
-
-# a6c42f436e6240b0bd853d2459a82af5
-# 8f60e469188446368b6e9dd27fa4362c
-#: ../../src/tutorial/tutorial.rst:23 ../../src/tutorial/tutorial.rst:142
-msgid "How to use other tools to view your graph and route"
-msgstr "Cómo utilizar otras herramientas para ver la gráfica y la ruta"
-
-# e8d64e7e71f94995b63b80ec6c489433
-# 20eafe14706e4660b2f9886ce1f6b357
-#: ../../src/tutorial/tutorial.rst:24 ../../src/tutorial/tutorial.rst:147
-msgid "How to create a web app"
-msgstr "Cómo crear una aplicación web"
-
-# b1db71933e1241eeae8298bba077f388
-#: ../../src/tutorial/tutorial.rst:29
-msgid ""
-"The first thing we need to do is create a database and load pgrouting in the"
-" database. Typically you will create a database for each project. Once you "
-"have a database to work in, your can load your data and build your "
-"application in that database. This makes it easy to move your project later "
-"if you want to to say a production server."
-msgstr "Lo primero que hay que hacer es crear una base de datos y cargar pgRouting a la base de datos. Típicamente se creará una base de datos para cada proyecto. Una vez que se tiene una base de datos donde trabajar, se pueden cargar los datos y construir la aplicación en la base de datos. Esto hace que sea sencillo de mover el proyecto en el futuro, como por ejemplo, a un servidor de producción."
-
-# e9ea8391635c4aeea6230a1dc512ca40
-#: ../../src/tutorial/tutorial.rst:35
-msgid "For Postgresql 9.1 and later versions"
-msgstr "Para Postgresql 9.1 y versiones posteriores"
-
-# b5416a83185a4b968116495c15a2dbb9
-#: ../../src/tutorial/tutorial.rst:44
-msgid "For older versions of postgresql"
-msgstr "Para versiones anteriores de postgresql"
-
-# 4d3bdf2c0daf49e19b0cc8ec9a54ce6d
-#: ../../src/tutorial/tutorial.rst:63
-msgid ""
-"How you load your data will depend in what form it comes it. There are "
-"various OpenSource tools that can help you, like:"
-msgstr "El cómo cargar los datos dependerá de el formato que tienen. Existen varias herramientas de Código Abierto que le pueden ayudar, como:"
-
-# 443c825aa19945f694b869caa419068a
-#: ../../src/tutorial/tutorial.rst:66
-msgid "this is the postgresql shapefile loader"
-msgstr "Este es un cargador de archivo shape a postgresql"
-
-# 4d91dcd01dac46f59ceb42aeeac5dc8d
-#: ../../src/tutorial/tutorial.rst:67
-msgid "this is a vector data conversion utility"
-msgstr "Esta es una utilidad de conversión de datos vectoriales"
-
-# 99f1dae37c3742db82e18bf14675f806
-#: ../../src/tutorial/tutorial.rst:68
-msgid "this is a tool for loading OSM data into postgresql"
-msgstr "Esta es una herramienta para cargar los datos de OSM a postgresql"
-
-# 0fc4acb74524472e89a9867f716c6941
-#: ../../src/tutorial/tutorial.rst:70
-msgid ""
-"So these tools and probably others will allow you to read vector data and "
-"and can load that data into your database as a table of some kind. At this "
-"point you need to know a little about your data structure and content. One "
-"easy way to browse you data table is with pgAdmin3 or phpPgAdmin."
-msgstr "Así que estas herramientas, y probablemente otras más, le permitan leer datos vectoriales y se pueden cargar esos datos a una tabla de la base de datos. En este momento, se necesita saber un poco sobre el contenido y estructura de los datos. Una forma fácil de navegar en tu bases de datos es con pgAdmin3 o phpPgAdmin."
-
-# 3eb60b0320c94c54b413905edad6aeda
-#: ../../src/tutorial/tutorial.rst:79
-msgid ""
-"Next we need to build a topology for our street data. What this means is "
-"that for any given edge in your street data the ends of that edge will be "
-"connected to a unique node and to other edges that are also connected to "
-"that same unique node. Once all the edges are connected to nodes we have a "
-"graph that can be used for routing with pgrouting. We provide a tools the "
-"will help with this:"
-msgstr "Lo siguiente que se necesita hacer es construir la topología de nuestros datos de las calles. Lo que esto significa es que para cualquier borde que se encuentra en los datos de las calles, los extremos del borde se conectan a un nodo único y a otros bordes que también se conectan a ese mismo nodo único. Una vez que todos los bordes están conectados a los nodos tenemos una gráfica que se puede ser utilizada para el ruteo con pgRouting. Proporcionamos herramientas que ayudarán con esto:"
-
-# 69e88d4dcd4b4de68a07f7e1bbe05c2f
-#: ../../src/tutorial/tutorial.rst:89
-msgid "See :ref:`pgr_create_topology` for more information."
-msgstr "Ver :ref:`pgr_create_topology` para más información."
-
-# a1b054cc1a1a4d12a2a11405bbdec85b
-#: ../../src/tutorial/tutorial.rst:95
-msgid ""
-"There are lots of possible sources for errors in a graph. The data that you "
-"started with may not have been designed with routing in mind. A graph as "
-"some very specific requirments. One it that it is *NODED*, this means that "
-"except for some very specific use cases, each road segments starts and ends "
-"at a node and that in general is does not cross another road segment that it"
-" should be connected to."
-msgstr "Hay varias posibles fuentes de errores en un gráfico. Los datos con los que usted comenzó pudieron no haber sido diseñados con ruteo en mente. Un gráfico tiene algunos requerimientos muy específicos. Uno es que sea *NODED*, esto significa que, a excepción de algunos casos de uso muy especial, cada uno de los segmentos del camino comienza y termina en un nodo y que en general no cruzan un segmento de camino al que deba conectarse."
-
-# 6c5337ea36644d71841a60e4a9bb5ba5
-#: ../../src/tutorial/tutorial.rst:102
-msgid ""
-"There can be other errors like the direction of a one-way street being "
-"entered in the wrong direction. We do not have tools to search for all "
-"possible errors but we have some basic tools that might help."
-msgstr "Puede haber otros errores como en una calle de un solo sentido tener el sentido equivocado. No contamos con herramientas para buscar todos los errores posibles, pero tenemos algunas herramientas básicas que pueden ayudar."
-
-# 3fece9ebff854721b5715cc977ce6d6e
-#: ../../src/tutorial/tutorial.rst:113
-msgid "See :ref:`analytics` for more information."
-msgstr "Ver :ref:`analytics` para más información."
-
-# 7a98ae8da3ae48e1a7c5d54e44a48c26
-#: ../../src/tutorial/tutorial.rst:115
-msgid ""
-"If your data needs to be *NODED*, we have a tool that can help for that "
-"also."
-msgstr "Si necesita crearle a sus datos los *los nodos*, tenemos una herramienta que puede ayudar."
-
-# 08121e9261964dd58ac553d088c2ed4d
-#: ../../src/tutorial/tutorial.rst:117
-msgid "See :ref:`pgr_node_network` for more information."
-msgstr "Ver :ref:`pgr_node_network` para más información."
-
-# 719d8eadd02e428f9c88ee09711fd78e
-#: ../../src/tutorial/tutorial.rst:123
-msgid ""
-"Once you have all the prep work done above, computing a route is fairly "
-"easy. We have a lot of different algorithms but they can work with your "
-"prepared road network. The general form of a route query is:"
-msgstr "Una vez realizado el trabajo de preparación descrito anteriormente, el cálculo de una ruta es bastante fácil. Contamos con varios algoritmos, pero pueden trabajar con su red vial preparada. La forma general de una consulta de ruta es:"
-
-# 9b06e28539b841019a313bfef4d6706a
-#: ../../src/tutorial/tutorial.rst:131
-msgid ""
-"As you can see this is fairly straight forward and you can look and the "
-"specific algorithms for the details on how to use them. What you get as a "
-"result from these queries will be a set of record of type "
-":ref:`type_cost_result` or :ref:`type_geom_result`. These results have "
-"information like edge id and/or the node id along with the cost or geometry "
-"for the step in the path from *start* to *end*. Using the ids you can join "
-"these result back to your edge table to get more information about each step"
-" in the path."
-msgstr "Como se puede ver, es bastante sencillo. Puede revisar los algoritmos específicos para ver los detalles de cómo usarlos. Lo que usted recibe como el resultado de estas consultas será un conjunto de registros del tipo l:ref:`type_cost_result` or :ref:`type_geom_result`. Estos resultados tienen información como Identificación del borde y/o el identificaror id del nodo junto con el costo o la geometría para el camino desde el *Inicio* hasta el *final*. Usando los identificadores pu [...]
-
-# d3652f3967364e05a51d770bf6c22ed7
-#: ../../src/tutorial/tutorial.rst:139
-msgid "See also :ref:`type_cost_result` and :ref:`type_geom_result`."
-msgstr "Véase también :ref:`type_cost_result` y :ref:`type_geom_result`."
-
-# ebd4b3f1e2e64e668cbd59b14d10059c
-# 631194a2c36c43fa84fca3ad63545a1c
-#: ../../src/tutorial/tutorial.rst:144 ../../src/tutorial/tutorial.rst:149
-msgid "TBD"
-msgstr "Por Definirse"
diff --git a/doc/i18n/es/LC_MESSAGES/src/apsp_johnson/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/apsp_johnson/doc/index.po
deleted file mode 100644
index dc99f82..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/apsp_johnson/doc/index.po
+++ /dev/null
@@ -1,141 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-12 15:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# c9937b945f654be08e4180e57b2723de
-#: ../../../src/apsp_johnson/doc/index.rst:13
-msgid "pgr_apspJohnson - All Pairs Shortest Path, Johnson's Algorithm"
-msgstr "pgr_apspJohnson - Ruta más corta de todos los pares, algoritmo de Johnson"
-
-# 79936f3a71384a8a9148a3886df7a858
-#: ../../../src/apsp_johnson/doc/index.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 3145d47e956649628986400ffdab56a5
-#: ../../../src/apsp_johnson/doc/index.rst:22
-msgid ""
-"``pgr_apspJohnson`` - Returns all costs for each pair of nodes in the graph."
-msgstr "``pgr_apspJohnson`` - Devuelve todos los costos para cada par de nodos en el gráfico."
-
-# 24009fd27614418c9dee8d1d27eca209
-#: ../../../src/apsp_johnson/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 6aa48442c73548e58b708ec465f0993a
-#: ../../../src/apsp_johnson/doc/index.rst:28
-msgid ""
-"Johnson's algorithm is a way to find the shortest paths between all pairs of"
-" vertices in a sparse, edge weighted, directed graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows for "
-"every pair of nodes in the graph."
-msgstr "El algoritmo de Johnson, es una manera de encontrar los caminos más cortos entre todos los pares de vértices en una gráfica ponderada, dirigida y esparcida. Devuelve un conjunto de registros :ref:`pgr_costResult<type_cost_result>` (seq, id1, id2, cost) para cada par de nodos en el gráfico."
-
-# afa92fc38dee48288d509f6006247df1
-#: ../../../src/apsp_johnson/doc/index.rst:36
-msgid "Description"
-msgstr "Descripción"
-
-# 1256fc43f6ad440689b650619604651c
-#: ../../../src/apsp_johnson/doc/index.rst:38
-msgid ""
-"a SQL query that should return the edges for the graph that will be "
-"analyzed:"
-msgstr "una consulta SQL que debe porporcionar los bordes de la gráfica que se analizará:"
-
-# 3f908a1bbdd04eaa9bf33225e67da2c7
-#: ../../../src/apsp_johnson/doc/index.rst:44
-msgid "``int4`` identifier of the source vertex for this edge"
-msgstr "``int4`` Identificador del vértice fuente"
-
-# 993049755c48440a9bc398ea9a13fe95
-#: ../../../src/apsp_johnson/doc/index.rst:45
-msgid "``int4`` identifier of the target vertex for this edge"
-msgstr "``int4`` Identificador del vértice objetivo"
-
-# 28aa6b13c7d54bbdb49c76098a8e4d8e
-#: ../../../src/apsp_johnson/doc/index.rst:46
-msgid "``float8`` a positive value for the cost to traverse this edge"
-msgstr "``float8`` un valor positivo para el costo del recorrido del borde"
-
-# 7514070dfcd1415e8414754509baee32
-#: ../../../src/apsp_johnson/doc/index.rst:48
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Regresa un conjunto del tipo de datos :ref:`type_cost_result`:"
-
-# 25408ce6cf3d45bebebd52768b102fc0
-#: ../../../src/apsp_johnson/doc/index.rst:50
-msgid "row sequence"
-msgstr "secuencia de registros"
-
-# e4b9d28e22be4a78a2edc7edbf4f1af3
-#: ../../../src/apsp_johnson/doc/index.rst:51
-msgid "source node ID"
-msgstr "Identificador del nodo de procedencia"
-
-# f4ef2869f447410dbdb75bf3856bfa93
-#: ../../../src/apsp_johnson/doc/index.rst:52
-msgid "target node ID"
-msgstr "Identificador del nodo de llegada"
-
-# 74d7b05838ba4c978e0c33f94ab0868f
-#: ../../../src/apsp_johnson/doc/index.rst:53
-msgid "cost to traverse from ``id1`` to ``id2``"
-msgstr "costo para atravesar desde ``id1`` hasta ``id2`` "
-
-# 1767087139fa47218a9eef54ebf0b0f1
-#: ../../../src/apsp_johnson/doc/index.rst:56
-msgid "History"
-msgstr "Historia"
-
-# 5bc1dae5c7f041298849cae876983c32
-#: ../../../src/apsp_johnson/doc/index.rst:57
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# b679c9ef11b544a6a6502b461b4e3d96
-#: ../../../src/apsp_johnson/doc/index.rst:61
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 5d6ef1673c204a229ed05dae0c96d0f8
-#: ../../../src/apsp_johnson/doc/index.rst:78
-msgid "The query uses the :ref:`sampledata` network."
-msgstr "La consulta usa la red de ejemplo :ref:`sampledata`"
-
-# 8ba7f2721fe74966b8dfd4620ae10b9a
-#: ../../../src/apsp_johnson/doc/index.rst:82
-msgid "See Also"
-msgstr "Véase también"
-
-# 475eb50687e74051895523e791434bc1
-#: ../../../src/apsp_johnson/doc/index.rst:84
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 75e0dd6fa0ed4621acf49893e637237c
-#: ../../../src/apsp_johnson/doc/index.rst:85
-msgid ":ref:`pgr_apsp_warshall`"
-msgstr ":ref:`pgr_apsp_warshall`"
-
-# 0e63d6ba27244302bfd848164331ea09
-#: ../../../src/apsp_johnson/doc/index.rst:86
-msgid "http://en.wikipedia.org/wiki/Johnson%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Johnson%27s_algorithm"
diff --git a/doc/i18n/es/LC_MESSAGES/src/apsp_warshall/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/apsp_warshall/doc/index.po
deleted file mode 100644
index 70d4a26..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/apsp_warshall/doc/index.po
+++ /dev/null
@@ -1,161 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 17:07+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 0f1284ff13c64db68306d3e8f9c97beb
-#: ../../../src/apsp_warshall/doc/index.rst:13
-msgid "pgr_apspWarshall - All Pairs Shortest Path, Floyd-Warshall Algorithm"
-msgstr "pgr_apspWarshall - Camino más corto de todos los pares, Algoritmo de Floyd-Warshall"
-
-# 42b576974e9a458e951dd429ba4ac9f7
-#: ../../../src/apsp_warshall/doc/index.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 8610cfce602b4e43867a979e40348da5
-#: ../../../src/apsp_warshall/doc/index.rst:22
-msgid ""
-"``pgr_apspWarshall`` - Returns all costs for each pair of nodes in the "
-"graph."
-msgstr "``pgr_apspWarshall`` - Devuelve todos los costos de cada par de nodos en la gráfica."
-
-# 4c8c0af0a22f4783b5f40d7d68b431da
-#: ../../../src/apsp_warshall/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 001f0668ce734f4b9419fd7b22d98b00
-#: ../../../src/apsp_warshall/doc/index.rst:28
-msgid ""
-"The Floyd-Warshall algorithm (also known as Floyd's algorithm and other "
-"names) is a graph analysis algorithm for finding the shortest paths between "
-"all pairs of nodes in a weighted graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows for "
-"every pair of nodes in the graph."
-msgstr "El algoritmo de Floyd-Warshall (también conocido como algoritmo de Floyd y otros nombres) es un algoritmo de análisis gráfico para encontrar los caminos más cortos entre todos los pares de nodos en un gráfico ponderado. Devuelve un conjunto de registros (seq, id1, id2, cost) :ref:`pgr_costResult <type_cost_result>` para cada par de nodos en el gráfico."
-
-# e7c4a6dd259d46cd9fcf2631dbc22f2e
-#: ../../../src/apsp_warshall/doc/index.rst:36
-msgid "Description"
-msgstr "Descripción"
-
-# e0f6896524cc4a4d91c418144da5102b
-#: ../../../src/apsp_warshall/doc/index.rst:38
-msgid ""
-"a SQL query that should return the edges for the graph that will be "
-"analyzed:"
-msgstr "una consulta SQL quedebe proporcionar los bordes de la gráfica que va a ser analizada:"
-
-# 97a32a6ff6e14816834d1eb5e229f2b4
-#: ../../../src/apsp_warshall/doc/index.rst:44
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identificador del borde"
-
-# b42ae19f11c44f618c034ae1ce6be00a
-#: ../../../src/apsp_warshall/doc/index.rst:45
-msgid "``int4`` identifier of the source vertex for this edge"
-msgstr "``int4`` Identificador del vértice inicial de este borde"
-
-# c0b57bb608d34affbce8c6bb5ec9302f
-#: ../../../src/apsp_warshall/doc/index.rst:46
-msgid "``int4`` identifier of the target vertex for this edge"
-msgstr "``int4`` Identificador del vértice final de este borde"
-
-# c5cb344693474da29d9a8ff57e96c0f7
-#: ../../../src/apsp_warshall/doc/index.rst:47
-msgid "``float8`` a positive value for the cost to traverse this edge"
-msgstr "``float8`` un valor positivo para el costo de atravesar este borde"
-
-# 5dd37dfc4bff497d85337655170aa2fe
-#: ../../../src/apsp_warshall/doc/index.rst:49
-msgid "``true`` if the graph is directed"
-msgstr "``true`` Si la gráfica es direccionada"
-
-# 6996d55bc55245d39ea7b7fadce791a7
-#: ../../../src/apsp_warshall/doc/index.rst:50
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "Si es ``True``, el campo ``reverse_cost`` del conjunto de registros generados se utiliza para el calcular el costo de la travesía del borde en la dirección opuesta."
-
-# a26f91fad97b4c1fb810f9cbe42a7c55
-#: ../../../src/apsp_warshall/doc/index.rst:52
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Devuelve un conjunto del tipo de datos :ref:`type_cost_result`:"
-
-# d67cd203b9424e1faa0416ab268956c5
-#: ../../../src/apsp_warshall/doc/index.rst:54
-msgid "row sequence"
-msgstr "Secuencia de registros"
-
-# 13448c2239764d798d56189875475d19
-#: ../../../src/apsp_warshall/doc/index.rst:55
-msgid "source node ID"
-msgstr "Identificador del nodo de partida"
-
-# 754d094ac6ae42d5a22b8855ce7a73e7
-#: ../../../src/apsp_warshall/doc/index.rst:56
-msgid "target node ID"
-msgstr "Identificador del nodo de llegada"
-
-# c9edf1f99746459c9ef79922766fc805
-#: ../../../src/apsp_warshall/doc/index.rst:57
-msgid "cost to traverse from ``id1`` to ``id2``"
-msgstr "costo para viajar desde el nodo ``id1`` hasta el nodo ``id2`` "
-
-# e878f40e61334a669136534d82f3bc05
-#: ../../../src/apsp_warshall/doc/index.rst:61
-msgid "History"
-msgstr "Historia"
-
-# b506bf29ad7944d7bd0db6d48ffe9f4f
-#: ../../../src/apsp_warshall/doc/index.rst:62
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 5c0117f6a40740aa8b02bc181e0e01dc
-#: ../../../src/apsp_warshall/doc/index.rst:66
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 38918d939ef74f6e86528d1060dc810c
-#: ../../../src/apsp_warshall/doc/index.rst:84
-msgid "The query uses the :ref:`sampledata` network."
-msgstr "La consulta usa la red del ejemplo :ref:`sampledata`"
-
-# 4feffc0c2a824f81bb35b10c6f13176d
-#: ../../../src/apsp_warshall/doc/index.rst:88
-msgid "See Also"
-msgstr "Véase también"
-
-# aa6ecd6c9d584db1adf49b7df81583e9
-#: ../../../src/apsp_warshall/doc/index.rst:90
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 0f05cbf530e0455daed36d6b50bbf30f
-#: ../../../src/apsp_warshall/doc/index.rst:91
-msgid ":ref:`pgr_apsp_johnson`"
-msgstr ":ref:`pgr_apsp_johnson`"
-
-# b09888d0778445eb93cbdfb7075b4157
-#: ../../../src/apsp_warshall/doc/index.rst:92
-msgid "http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm"
diff --git a/doc/i18n/es/LC_MESSAGES/src/astar/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/astar/doc/index.po
deleted file mode 100644
index 09b09d3..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/astar/doc/index.po
+++ /dev/null
@@ -1,203 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-12 15:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# b270045aa6e74d789897bb176f5c4a37
-#: ../../../src/astar/doc/index.rst:13
-msgid "pgr_astar - Shortest Path A*"
-msgstr "pgr_astar - Camino más corto A\\*"
-
-# a4d6dd313b3f44bdbbecdf59c8e4e866
-#: ../../../src/astar/doc/index.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 0c4c2fff9ea445dcbb1dfdca8374cd09
-#: ../../../src/astar/doc/index.rst:22
-msgid "``pgr_astar`` — Returns the shortest path using A* algorithm."
-msgstr "``pgr_astar`` — Regresa el camino más corto usando el algoritmo A\\*."
-
-# d3e3e83acd754acb9ac4c583d6dd0649
-#: ../../../src/astar/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 87ae068cf08b4ddca7f5bb3722ce57f2
-#: ../../../src/astar/doc/index.rst:28
-msgid ""
-"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
-"with a heuristic that allow it to solve most shortest path problems by "
-"evaluation only a sub-set of the overall graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
-"make up a path."
-msgstr "El algoritmo A\\* (pronunciado \"A Star\") se basa en el algoritmo de Dijkstra con una heurística que evalua sólo un subconjunto de la gráfica general, permiténdole resolver la mayoría de los problemas del camino más corto. Devuelve un conjunto de registros :ref:`pgr_costResult<type_cost_result>` (seq, id1, id2, cost) que conforman un camino."
-
-# cd2802c13d3d4798934f9f60cc9ebfb9
-#: ../../../src/astar/doc/index.rst:37
-msgid "Description"
-msgstr "Descripción"
-
-# 64ca501e984b45df9055511188eb65f4
-#: ../../../src/astar/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "Consulta SQL, que debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# 739adee835f647ff94511acc6e126ee5
-#: ../../../src/astar/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identificador del borde"
-
-# 72186cf53aee4035bdbcc0495fb6bf42
-#: ../../../src/astar/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` Identificador del vértice de procedencia del borde"
-
-# 0857159bb2c949bb892388c25f6fb4ec
-#: ../../../src/astar/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` Identificador del vértice de llegada del borde"
-
-# 4ddccc85290d4aba9b82668e90b2ba31
-#: ../../../src/astar/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valor del costo del recorrido sobre el borde. Un costo negativo evitará que el borde sea insertado en el gráfico."
-
-# d21510a5452e4a098e36f5ae7f7585b4
-#: ../../../src/astar/doc/index.rst:50
-msgid "``x`` coordinate of the start point of the edge"
-msgstr "Coordenada ``x`` del punto inicial del borde"
-
-# 78d6feeb1c174e96ad209b97fb1cd538
-#: ../../../src/astar/doc/index.rst:51
-msgid "``y`` coordinate of the start point of the edge"
-msgstr "Coordenada ``y`` del punto inicial del borde"
-
-# b7404cbf8c86414494f72f87b3702241
-#: ../../../src/astar/doc/index.rst:52
-msgid "``x`` coordinate of the end point of the edge"
-msgstr "Coordenada ``x`` del punto final del borde"
-
-# d0f8d9e10994475dac4ad4e8ea1315f7
-#: ../../../src/astar/doc/index.rst:53
-msgid "``y`` coordinate of the end point of the edge"
-msgstr "Coordenada ``y`` del punto final del borde"
-
-# 46b33f8b295043059fce210e43698191
-#: ../../../src/astar/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(opcional) el costo para el recorrido inverso del borde. Esto sólo se utiliza cuando los parámetros ``directed`` y ``has_rcost`` son ``True`` (ver el comentario anterior sobre los costos negativos)."
-
-# bfd63fe9d374441babb8662a0874482b
-#: ../../../src/astar/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4`` identificador del punto de partida del recorrido"
-
-# 85d35dcc4ced4efaac8d7b50f4ff9357
-#: ../../../src/astar/doc/index.rst:57
-msgid "``int4`` id of the end point"
-msgstr "``int4`` identificador del punto de llegada del recorrido"
-
-# f93b4ce091a6440d9a656b374fce6636
-#: ../../../src/astar/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "``true`` Si la gráfica es direccionada"
-
-# 1a783bf8f88146999659f222ef236d1b
-#: ../../../src/astar/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "Si es ``True``, el campo ``reverse_cost`` del conjunto de registros generados se utilizan para el calcular el costo de la travesía del borde en la dirección opuesta."
-
-# c0f6cf1f1daf40bc8d08fa3b85c3af6b
-#: ../../../src/astar/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Arroja un conjunto del tipo de datos :ref:`type_cost_result`:"
-
-# 22b5e075f6e94c608af67a4c040f4e70
-#: ../../../src/astar/doc/index.rst:63
-msgid "row sequence"
-msgstr "Secuencia de registros"
-
-# 1f3ccd737354442fb4d87684690988a2
-#: ../../../src/astar/doc/index.rst:64
-msgid "node ID"
-msgstr "Identificador del nodo visitado"
-
-# 8a4fe9f16a934ffa842ea049c36728bf
-#: ../../../src/astar/doc/index.rst:65
-msgid "edge ID (``-1`` for the last row)"
-msgstr "Identificador del borde usado (``-1`` para el último)"
-
-# 7cff3509785e40adb8ff4ce4f4bf0774
-#: ../../../src/astar/doc/index.rst:66
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "Costo del recorrido desde el nodo ``id1`` usando el borde ``id2`` hasta su otro extremo"
-
-# 9cc8b235e4214d4c87b729d24031271e
-#: ../../../src/astar/doc/index.rst:70
-msgid "History"
-msgstr "Historia"
-
-# 623c2a84d062407d93855875a467dbe1
-#: ../../../src/astar/doc/index.rst:71
-msgid "Renamed in version 2.0.0"
-msgstr "Renombrado en la versión 2.0.0"
-
-# 7f75da722e6e4680a8d9e0a3d69678b9
-#: ../../../src/astar/doc/index.rst:75
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 533a7e7ccd3645c4a6e6d3e90875cccf
-#: ../../../src/astar/doc/index.rst:77
-msgid "Without ``reverse_cost``"
-msgstr "Sin ``reverse_cost``"
-
-# 0cf32ba2b9dd435191e182fa2e1219a3
-#: ../../../src/astar/doc/index.rst:99
-msgid "With ``reverse_cost``"
-msgstr "Con ``reverse_cost``"
-
-# 266a522386364908870781287ffe7c77
-#: ../../../src/astar/doc/index.rst:117
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# 3f0ab007b6c24393bda58a4c8f051a6b
-#: ../../../src/astar/doc/index.rst:121
-msgid "See Also"
-msgstr "Véase también"
-
-# c407743821a8437fa59503cbee2e31b7
-#: ../../../src/astar/doc/index.rst:123
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 994c0952621c47349ec4e5b209ee1129
-#: ../../../src/astar/doc/index.rst:124
-msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
-msgstr "http://en.wikipedia.org/wiki/A*_search_algorithm"
diff --git a/doc/i18n/es/LC_MESSAGES/src/bd_astar/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/bd_astar/doc/index.po
deleted file mode 100644
index 2b2421b..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/bd_astar/doc/index.po
+++ /dev/null
@@ -1,222 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 17:09+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# d85c70ae393d476284068bf297195cc7
-#: ../../../src/bd_astar/doc/index.rst:13
-msgid "pgr_bdAstar - Bi-directional A* Shortest Path"
-msgstr "pgr_bdAstar - Camino más corto bidireccional A\\*"
-
-# 59f0d447a4034729bbdc2dad7b88dcce
-#: ../../../src/bd_astar/doc/index.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# ff5b6b1bd362408c80bec7cfbc7108bf
-#: ../../../src/bd_astar/doc/index.rst:22
-msgid ""
-"``pgr_bdAstar`` - Returns the shortest path using Bidirectional A* "
-"algorithm."
-msgstr "``pgr_bdAstar`` - Regresa el camino más corto usando el algoritmo A\\* bidireccional."
-
-# 6e2dd97777d64f02afc4b396822f7c37
-#: ../../../src/bd_astar/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# d88a86d95c0447db93be2a1f185b91bd
-#: ../../../src/bd_astar/doc/index.rst:28
-msgid ""
-"This is a bi-directional A* search algorithm. It searchs from the source "
-"toward the distination and at the same time from the destination to the "
-"source and terminates whe these to searchs meet in the middle. Returns a set"
-" of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, "
-"that make up a path."
-msgstr "Este es un algoritmo de búsqueda bidireccional A\\*. Busca desde la fuente hasta el destino y al mismo tiempo desde el destino al origen y termina cuando estos las búsquedas se reúnen en el centro. Devuelve un conjunto de registros :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, costo) que conforman un camino."
-
-# c9f7d12fb2c9416390cbb64c61cdaaba
-#: ../../../src/bd_astar/doc/index.rst:37
-msgid "Description"
-msgstr "Descripción"
-
-# 2228656c57724bc18029fa054849a999
-#: ../../../src/bd_astar/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "Consulta SQL que debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# ba13914fdd78469389ae129eee02785f
-#: ../../../src/bd_astar/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identificador del borde"
-
-# 5e7f92a0ffa845a385efe72da0760ee5
-#: ../../../src/bd_astar/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` Identificador del vértice inicial del borde"
-
-# 194b29afb7b3486eb5611222273bb323
-#: ../../../src/bd_astar/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` Identificador del vértice final del borde"
-
-# 37f1ad354f13413fa6a47ec8ceaa3262
-#: ../../../src/bd_astar/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valor del costo del recorrido sobre el borde. Un costo negativo evitará que el borde sea insertado en el gráfico."
-
-# f7bf689e55584ee0b2e095b8f3147354
-#: ../../../src/bd_astar/doc/index.rst:50
-msgid "``x`` coordinate of the start point of the edge"
-msgstr "Coordenada ``x`` del punto del inicio del borde"
-
-# e7b2325c3e8f473fae345bff6b9f9af6
-#: ../../../src/bd_astar/doc/index.rst:51
-msgid "``y`` coordinate of the start point of the edge"
-msgstr "Coordenada ``y`` del punto del inicio del borde"
-
-# a554e40ce41e485d83bdcc425edab876
-#: ../../../src/bd_astar/doc/index.rst:52
-msgid "``x`` coordinate of the end point of the edge"
-msgstr "Coordenada ``x`` del punto del final del borde"
-
-# d0033effb66d4af891d51c0553106616
-#: ../../../src/bd_astar/doc/index.rst:53
-msgid "``y`` coordinate of the end point of the edge"
-msgstr "Coordenada ``y`` del punto del final del borde"
-
-# 52fd318293ff42458d93837f06a5dd78
-#: ../../../src/bd_astar/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(opcional) el costo para el recorrido inverso del borde. Se utiliza sólo cuando los parámetros ``directed`` y ``has_rcost`` son ``True`` (ver el comentario anterior acerca de los costos negativos)."
-
-# b2ec788128e44b59a8a9eaf588b3ef93
-#: ../../../src/bd_astar/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4`` identificador del punto de partida"
-
-# f5809c895ef3496fbaf43892301858ca
-#: ../../../src/bd_astar/doc/index.rst:57
-msgid "``int4`` id of the end point"
-msgstr "``int4`` Identificador del punto de llegada"
-
-# 29607e76254f42938d9c38a10e11c7b9
-#: ../../../src/bd_astar/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "``true`` Si la gráfica es direccionada"
-
-# f4b5e84674e749be9f6ba934004cd598
-#: ../../../src/bd_astar/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "Si es ``True``, el campo ``reverse_cost`` del conjunto de registros generados se utilizan para el calcular el costo de la travesía del borde en la dirección opuesta."
-
-# 9969bf0e6e5f40e3b44efbfd0e53d70b
-#: ../../../src/bd_astar/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Arroja un conjunto del tipo de datos :ref:`type_cost_result`:"
-
-# 1634c060516d40388b007b17f2fee94c
-#: ../../../src/bd_astar/doc/index.rst:63
-msgid "row sequence"
-msgstr "Secuencia de registros"
-
-# 4a478cf05b72415ebfc7f95d8e0b8625
-#: ../../../src/bd_astar/doc/index.rst:64
-msgid "node ID"
-msgstr "Identificador del nodo visitado"
-
-# b94cd2b23db94500b803d9c02b8ab358
-#: ../../../src/bd_astar/doc/index.rst:65
-msgid "edge ID (``-1`` for the last row)"
-msgstr "Identificador del borde (``-1`` para el ultimo registro)"
-
-# b8b6a3e185934bc4b7d44f66694523c5
-#: ../../../src/bd_astar/doc/index.rst:66
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "costo para atravesar desde el nodo ``id1`` usando el borde``id2`` hasta su otro extremo"
-
-# f9a6aa6c249c40968bc39a3db86a5ebe
-#: ../../../src/bd_astar/doc/index.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr "Usted debe reconectarse a la base de datos después de ``CREATE EXTENSION pgRouting`` . De lo contrario la función arrojará el error ``Error computing path: std::bad_alloc``."
-
-# e574996346fe4d3d937be160d621e660
-#: ../../../src/bd_astar/doc/index.rst:74
-msgid "History"
-msgstr "Historia"
-
-# 98c01f9f86914541a78481fc80a804dd
-#: ../../../src/bd_astar/doc/index.rst:75
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# fd577945de174be79b0b53dc92d1fdae
-#: ../../../src/bd_astar/doc/index.rst:79
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 1e4a6776b9154f5da5abb5c6d64f3221
-#: ../../../src/bd_astar/doc/index.rst:81
-msgid "Without ``reverse_cost``"
-msgstr "Sin ``reverse_cost``"
-
-# 3f707fb48bdf4edfa0f1b3657cfcbb7a
-#: ../../../src/bd_astar/doc/index.rst:101
-msgid "With ``reverse_cost``"
-msgstr "Con ``reverse_cost``"
-
-# 473f16db67964e14b8efb25a1cf057b9
-#: ../../../src/bd_astar/doc/index.rst:120
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# 7289ec5f57844a379608577bd455d4b5
-#: ../../../src/bd_astar/doc/index.rst:124
-msgid "See Also"
-msgstr "Véase también"
-
-# 773014635f2c4e87a452416b391581e5
-#: ../../../src/bd_astar/doc/index.rst:126
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# f4c3b61a97b94311a9f83508c040b614
-#: ../../../src/bd_astar/doc/index.rst:127
-msgid ":ref:`bd_dijkstra`"
-msgstr ":ref:`bd_dijkstra`"
-
-# 769c0e94fba24848bb36a7bb9ca90800
-#: ../../../src/bd_astar/doc/index.rst:128
-msgid "http://en.wikipedia.org/wiki/Bidirectional_search"
-msgstr "http://en.wikipedia.org/wiki/Bidirectional_search"
-
-# bc6e6a206f44475d91e857ec85d36106
-#: ../../../src/bd_astar/doc/index.rst:129
-msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
-msgstr "http://en.wikipedia.org/wiki/A*_search_algorithm"
diff --git a/doc/i18n/es/LC_MESSAGES/src/bd_dijkstra/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/bd_dijkstra/doc/index.po
deleted file mode 100644
index 7e13b91..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/bd_dijkstra/doc/index.po
+++ /dev/null
@@ -1,195 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 17:07+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 3c0a9e188c614b0d8a83fad794d3b42f
-#: ../../../src/bd_dijkstra/doc/index.rst:13
-msgid "pgr_bdDijkstra - Bi-directional Dijkstra Shortest Path"
-msgstr "pgr_bdDijkstra - Camino más corto bidireccional de Dijkstra"
-
-# 2a8d7f88cd7c41549e90531d1d565848
-#: ../../../src/bd_dijkstra/doc/index.rst:21
-msgid "Name"
-msgstr "Nombre"
-
-# 9e326337967141dd8cb35c1a7eb5d7b2
-#: ../../../src/bd_dijkstra/doc/index.rst:23
-msgid ""
-"``pgr_bdDijkstra`` - Returns the shortest path using Bidirectional Dijkstra "
-"algorithm."
-msgstr "``pgr_bdDijkstra`` - Devuelve el recorrido más corto bidireccional usando el algoritmo de Dijkstra"
-
-# e2e0af558a7340a7a29f667b07037690
-#: ../../../src/bd_dijkstra/doc/index.rst:27
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 23d2258a058a4b5fa6dcb6655362484a
-#: ../../../src/bd_dijkstra/doc/index.rst:29
-msgid ""
-"This is a bi-directional Dijkstra search algorithm. It searchs from the "
-"source toward the distination and at the same time from the destination to "
-"the source and terminates whe these to searchs meet in the middle. Returns a"
-" set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows,"
-" that make up a path."
-msgstr "Este es un algoritmo de búsqueda bidireccional de Dijkstra. Realiza una búsqueda desde la fuente hacia el destino y, al mismo tiempo, desde el destino hacia el origen, terminando donde estas búsquedas se reúnen en el centro. Devuelve un conjunto de registros :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) que conforman un camino."
-
-# b37dbb1c097441d7afac9b1c3be4fa16
-#: ../../../src/bd_dijkstra/doc/index.rst:38
-msgid "Description"
-msgstr "Descripción"
-
-# 27182b928a294e22bbd7567e7ef6a1a6
-#: ../../../src/bd_dijkstra/doc/index.rst:40
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "Consulta SQL, que debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# d5ecf6b2aa844b768783b31d91cc0d1c
-#: ../../../src/bd_dijkstra/doc/index.rst:47
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identificador del borde"
-
-# 282a69ee248b4dcfa591ec2aa3668cf4
-#: ../../../src/bd_dijkstra/doc/index.rst:48
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` Identificador del vértice inicial de este borde"
-
-# d8ca4a99797f4da89401ca4eae5de81b
-#: ../../../src/bd_dijkstra/doc/index.rst:49
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` Identificador del vértice final de este borde"
-
-# 16d3eacf8377421dbb3aa3f559f8c2fd
-#: ../../../src/bd_dijkstra/doc/index.rst:50
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valor del costo del recorrido sobre el borde. Un costo negativo evitará que el borde sea insertado en el gráfico."
-
-# 2a8cd5659ad849358862b656205877aa
-#: ../../../src/bd_dijkstra/doc/index.rst:51
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(opcional) El costo para el recorrido inverso del borde. Esto sólo se utiliza cuando los parámetros ``directed`` y ``has_rcost`` son ``True`` (ver el comentario anterior sobre los costos negativos)."
-
-# 95f13721773f433891e1e8b50ac04509
-#: ../../../src/bd_dijkstra/doc/index.rst:53
-msgid "``int4`` id of the start point"
-msgstr "``int4`` identificador del punto de partida"
-
-# b9798483a7944c23b68242badf5ba991
-#: ../../../src/bd_dijkstra/doc/index.rst:54
-msgid "``int4`` id of the end point"
-msgstr "``int4`` Identificador del punto de llegada"
-
-# ff73a5d65d1e44728449829347874aa3
-#: ../../../src/bd_dijkstra/doc/index.rst:55
-msgid "``true`` if the graph is directed"
-msgstr "``true`` Si la gráfica es direccionada"
-
-# c177b69ec8f34e3e8347a48cd4fd0eec
-#: ../../../src/bd_dijkstra/doc/index.rst:56
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "Si es ``True``, el campo ``reverse_cost`` del conjunto de registros generados se utiliza para el calcular el costo de la travesía del borde en la dirección opuesta."
-
-# 94093f98581b414e8de69c5c03ed7ff9
-#: ../../../src/bd_dijkstra/doc/index.rst:58
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Devuelve un conjunto del tipo de datos :ref:`type_cost_result`:"
-
-# b6dcdf2882344c97b13a0a1b5dcfc76f
-#: ../../../src/bd_dijkstra/doc/index.rst:60
-msgid "row sequence"
-msgstr "Secuencia de registros"
-
-# 71a25f43edad4704b8f7bc386b951d6a
-#: ../../../src/bd_dijkstra/doc/index.rst:61
-msgid "node ID"
-msgstr "Identificador del nodo visitado"
-
-# bb342316c7374f38ae60758a95fe5aa0
-#: ../../../src/bd_dijkstra/doc/index.rst:62
-msgid "edge ID (``-1`` for the last row)"
-msgstr "identificador del borde (``-1`` para el último)"
-
-# 903aaea6437d438094faa1255671261a
-#: ../../../src/bd_dijkstra/doc/index.rst:63
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "costo del recorrido desde el nodo ``id1`` usando el borde ``id2`` hasta el otro extremo del borde"
-
-# 9422981e26f04c7e9edb754944c47cea
-#: ../../../src/bd_dijkstra/doc/index.rst:66
-msgid "History"
-msgstr "Historia"
-
-# c1db7489de2b4ef8880d8d9f3abb66e3
-#: ../../../src/bd_dijkstra/doc/index.rst:67
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# e61d7de8bdb04972a567e5884e47773a
-#: ../../../src/bd_dijkstra/doc/index.rst:71
-msgid "Examples"
-msgstr "Ejemplos"
-
-# e5bb5ec0cf844c229475d4e75c327eb3
-#: ../../../src/bd_dijkstra/doc/index.rst:73
-msgid "Without ``reverse_cost``"
-msgstr "Sin ``reverse_cost``"
-
-# 7b425886ca994a1e87e833443909b584
-#: ../../../src/bd_dijkstra/doc/index.rst:93
-msgid "With ``reverse_cost``"
-msgstr "Con ``reverse_cost``"
-
-# f47bce06d90b47c0a3ba534e4af09213
-#: ../../../src/bd_dijkstra/doc/index.rst:113
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# dce05fd947104f7fb53f334994b47db8
-#: ../../../src/bd_dijkstra/doc/index.rst:117
-msgid "See Also"
-msgstr "Véase también"
-
-# e9e1be5a32c8439083185caf29aaa09b
-#: ../../../src/bd_dijkstra/doc/index.rst:119
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 7e04714c590148078028bde3efbb5f57
-#: ../../../src/bd_dijkstra/doc/index.rst:120
-msgid ":ref:`bd_astar`"
-msgstr ":ref:`bd_astar`"
-
-# 1e532cd9d5634fb0934e837b0db7ad8a
-#: ../../../src/bd_dijkstra/doc/index.rst:121
-msgid "http://en.wikipedia.org/wiki/Bidirectional_search"
-msgstr "http://en.wikipedia.org/wiki/Bidirectional_search"
-
-# e3826d9e6a084b349a9ed0d6fffdb1ad
-#: ../../../src/bd_dijkstra/doc/index.rst:122
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/analyze_graph.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/analyze_graph.po
deleted file mode 100644
index e1edc50..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/analyze_graph.po
+++ /dev/null
@@ -1,411 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:19+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 4ec68d2c61f945ef81648e1b5c6415f1
-#: ../../../src/common/doc/functions/analyze_graph.rst:13
-msgid "pgr_analyzeGraph"
-msgstr "pgr_analyzeGraph"
-
-# 4c3762e114fb4e67a2515bba541c8f36
-#: ../../../src/common/doc/functions/analyze_graph.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# ac455e0fb31e44308320f39bbd78adfc
-#: ../../../src/common/doc/functions/analyze_graph.rst:22
-msgid "``pgr_anlizeGraph`` — Analyzes the network topology."
-msgstr "``pgr_anlizeGraph`` — analiza la topología de red."
-
-# 7d6b06e1d5354d94ac2855084e4e9e71
-#: ../../../src/common/doc/functions/analyze_graph.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 19f89e76f38342129988c1b3de66af9a
-# ebc7d96a54cb409a916a9e44ff8544f9
-#: ../../../src/common/doc/functions/analyze_graph.rst:28
-#: ../../../src/common/doc/functions/analyze_graph.rst:61
-msgid "The function returns:"
-msgstr "La función devuelve:"
-
-# b996e0d0950741438419d72fc2aaa1a6
-# ac02a2dca7d24bb296b418e5019b5d52
-#: ../../../src/common/doc/functions/analyze_graph.rst:30
-#: ../../../src/common/doc/functions/analyze_graph.rst:63
-msgid "``OK`` after the analysis has finished."
-msgstr "``OK`` Cuando el análisis ha terminado."
-
-# 6494556e5a0240b6b89d6cc13588a959
-# 226def8709104fefbde358ee19f0dbdc
-#: ../../../src/common/doc/functions/analyze_graph.rst:31
-#: ../../../src/common/doc/functions/analyze_graph.rst:69
-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."
-
-# 258df98c829a48e794073f4f67e64d37
-#: ../../../src/common/doc/functions/analyze_graph.rst:40
-msgid "Description"
-msgstr "Descripción"
-
-# 2ea823d9ac6a4b309542c1efdf685188
-#: ../../../src/common/doc/functions/analyze_graph.rst:43
-msgid "Prerequisites"
-msgstr "Requisitos previos"
-
-# b6f61bceeb764c09a0519ef218788641
-#: ../../../src/common/doc/functions/analyze_graph.rst:44
-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 <edge_table>_vertices_pgr that stores the "
-"vertices information."
-msgstr "La tabla de bordes debe ser analizada debe contener una columna de origen y una columna de destino llena con los identificadores de los vértices de los segmentos y los vértices correspondientes de la tabla <edge_table>_vertices_pgr que almacena la información de los vértices."
-
-# bc5a5fd73e194a1eb18560c62b8726c5
-#: ../../../src/common/doc/functions/analyze_graph.rst:46
-msgid ""
-"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
-"vertices table."
-msgstr "usar :ref:`pgr_createVerticesTable <pgr_create_vert_table>` para crear la tabla de vértices."
-
-# dddd02de549c450da54ecc30da50bcac
-#: ../../../src/common/doc/functions/analyze_graph.rst:47
-msgid ""
-"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
-"and the vertices table."
-msgstr "Usar :ref:`pgr_createTopology <pgr_create_topology>` para crear la topología y la tabla de vértices."
-
-# 2f1a64c5c7df47c08b9460c1c2ca9a0d
-#: ../../../src/common/doc/functions/analyze_graph.rst:50
-msgid "Parameters"
-msgstr "Parámetros"
-
-# f7ef120ecd234df3bc9de0b69122a094
-#: ../../../src/common/doc/functions/analyze_graph.rst:51
-msgid "The analyze graph function accepts the following parameters:"
-msgstr "La función de análisis gráfico acepta los siguientes parámetros:"
-
-# 93b5fa9bcdd84ccbae6d4945adb6b9b5
-#: ../../../src/common/doc/functions/analyze_graph.rst:53
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr "``text`` La tabla de la red. (puede contener el nombre del esquema)"
-
-# 0c3bf879395649e1aac68ae62880746b
-#: ../../../src/common/doc/functions/analyze_graph.rst:54
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr "``float8`` ajuste tolerancia de bordes desconectados. (en la unidad de proyección)"
-
-# cd2deb23e3394ad298d9787e069561e2
-#: ../../../src/common/doc/functions/analyze_graph.rst:55
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr "``text`` nombre de la columna de la geometría en la tabla de la red. El valor por defecto es ``the_geom``"
-
-# 31330d72cbb748289eafa0fcb996153d
-#: ../../../src/common/doc/functions/analyze_graph.rst:56
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr "``text``Nombre de la columna de la clave principal de la tabla de red. Valor por defecto es ``id``."
-
-# b9e5db8199ce47ccb092272e93020d7c
-#: ../../../src/common/doc/functions/analyze_graph.rst:57
-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``."
-
-# 245c992a7082431684659ae5845aced6
-#: ../../../src/common/doc/functions/analyze_graph.rst:58
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr "``text`` El nombre de la columna del nodo de llegada del segmento. El valor por defecto es ``target``."
-
-# 8e81329133844e65b7eef1f84cb73965
-#: ../../../src/common/doc/functions/analyze_graph.rst:59
-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."
-
-# c99a684aa3994cc4b60c334882d9ed78
-#: ../../../src/common/doc/functions/analyze_graph.rst:65
-msgid "Uses the vertices table: <edge_table>_vertices_pgr."
-msgstr "Utiliza la tabla de los vértices: <edge_table>_vertices_pgr."
-
-# e32eb0de40d0487fbb1062ec88c5bbe9
-#: ../../../src/common/doc/functions/analyze_graph.rst:66
-msgid "Fills completly the ``cnt`` and ``chk`` columns of the vertices table."
-msgstr "Llena completamente los columnas ``cnt`` y ``chk`` de la tabla de los vértices."
-
-# a4a0f627086946459e80cc8ac16b31b8
-#: ../../../src/common/doc/functions/analyze_graph.rst:67
-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``"
-
-# f2d3df84fbb14b48a0dba64650326883
-#: ../../../src/common/doc/functions/analyze_graph.rst:71
-msgid "The vertices table is not found."
-msgstr "No se encuentra en la tabla de los vértices."
-
-# 1c3dd89f91d94a32b0fa96e3c8544649
-#: ../../../src/common/doc/functions/analyze_graph.rst:72
-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."
-
-# 0e7728a66df8403b80c0e73cc496d665
-#: ../../../src/common/doc/functions/analyze_graph.rst:73
-msgid "The condition is not well formed."
-msgstr "La condición no está bien formada."
-
-# 8a41f89e1b6c4622925078236419ba59
-#: ../../../src/common/doc/functions/analyze_graph.rst:74
-msgid "The names of source , target or id are the same."
-msgstr "Los nombres de origen, destino o id son las mismos."
-
-# 9a0c49ad17e7442291584a6d38ad24f0
-#: ../../../src/common/doc/functions/analyze_graph.rst:75
-msgid "The SRID of the geometry could not be determined."
-msgstr "No pudo determinarse el SRID de la geometría."
-
-# a28d4cfc2fb145bd8b620cd99ae007ef
-#: ../../../src/common/doc/functions/analyze_graph.rst:79
-msgid "The Vertices Table"
-msgstr "La tabla de vértices"
-
-# 6726eb03c9e14ce487a84ef6bdb3d061
-#: ../../../src/common/doc/functions/analyze_graph.rst:80
-msgid ""
-"The vertices table can be created with :ref:`pgr_createVerticesTable "
-"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
-msgstr "La tabla de los vértices puede crearse con :ref:`pgr_createVerticesTable <pgr_create_vert_table>` o :ref:`pgr_createTopology <pgr_create_topology>`"
-
-# f69881355abd43b08fd4b112a15c823a
-#: ../../../src/common/doc/functions/analyze_graph.rst:82
-msgid "The structure of the vertices table is:"
-msgstr "La estructura de la tabla de los vértices es:"
-
-# e9b846b6c67a40a5a56ce827cbde2335
-#: ../../../src/common/doc/functions/analyze_graph.rst:84
-msgid "``bigint`` Identifier of the vertex."
-msgstr "``bigint`` identificador del vértice."
-
-# c76d33c8d1d243e78adb977c995c1ed9
-#: ../../../src/common/doc/functions/analyze_graph.rst:85
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-msgstr "``integer`` número de vértices en la edge_table que hacen referencia a este vértice. "
-
-# 2a14dd7a08114891908953fe3f87a075
-#: ../../../src/common/doc/functions/analyze_graph.rst:86
-msgid "``integer`` Indicator that the vertex might have a problem."
-msgstr "``integer`` indicador que el vértice podría tener un problema."
-
-# 9731ccd0742c4573b05224539f373580
-#: ../../../src/common/doc/functions/analyze_graph.rst:87
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr "``integer`` número de vértices en la edge_table que hacen referencia a este vértice como entrante. Ver :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-
-# bf31d82856954293ac270255b046d010
-#: ../../../src/common/doc/functions/analyze_graph.rst:88
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr "``integer`` número de vértices en la edge_table que hacen referencia a este vértice como saliente. Ver :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-
-# fa51c4280ee2409daf5cee9fbc858ef4
-#: ../../../src/common/doc/functions/analyze_graph.rst:89
-msgid "``geometry`` Point geometry of the vertex."
-msgstr "``geometry`` Valor de la geometría POINT del vértice."
-
-# 3a2bb12205fe4cd6ad67ba6a8f37afe4
-#: ../../../src/common/doc/functions/analyze_graph.rst:92
-msgid "History"
-msgstr "Historia"
-
-# 378f4d42f82e4d30a6ab016e5ecc621a
-#: ../../../src/common/doc/functions/analyze_graph.rst:93
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# f2b122f189224840ad820005cf04c3c1
-#: ../../../src/common/doc/functions/analyze_graph.rst:96
-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:"
-
-# bbc188364d7a4ba9b73c901703f754a0
-#: ../../../src/common/doc/functions/analyze_graph.rst:99
-msgid "The simplest way to use pgr_analyzeGraph is:"
-msgstr "La forma más sencilla de usar pgr_analyzeGraph es:"
-
-# eef338680d2247e485489cda2088d085
-#: ../../../src/common/doc/functions/analyze_graph.rst:106
-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:"
-
-# bd9ee1725f5f458e84d65ccbde7489d2
-#: ../../../src/common/doc/functions/analyze_graph.rst:111
-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."
-
-# e6bd1bc511a6475aaa6fcce1db0cc9fd
-# 667d346fce1340c89b86814855215f31
-#: ../../../src/common/doc/functions/analyze_graph.rst:118
-#: ../../../src/common/doc/functions/analyze_graph.rst:184
-msgid "When using the named notation"
-msgstr "Cuando se utiliza la notación por nombre"
-
-# a6f10ab57f0645b6b0307bcb5d6c7ef3
-# eae5acaa57ff4a459953c203612092fa
-#: ../../../src/common/doc/functions/analyze_graph.rst:119
-#: ../../../src/common/doc/functions/analyze_graph.rst:185
-msgid "The order of the parameters do not matter:"
-msgstr "No importa el orden de los parámetros:"
-
-# 0b36ba3cb2c24c17b8740a45f3430b69
-#: ../../../src/common/doc/functions/analyze_graph.rst:129
-msgid ""
-"Parameters defined with a default value can be ommited, as long as the value"
-" matches the default:"
-msgstr "Parámetros definidos con un valor por defecto pueden ser omitidos, mientras el valor coincida con el valor por defecto:"
-
-# 5130840677694ba3a4c08ae3b787e4d5
-# 309f2f767a9c4f419bb1a4ad1c1bfacf
-#: ../../../src/common/doc/functions/analyze_graph.rst:136
-#: ../../../src/common/doc/functions/analyze_graph.rst:199
-msgid "Selecting rows using rows_where parameter"
-msgstr "Seleccionar filas utilizando el parámetro rows_where"
-
-# e7093f0dacbf44af908a1259b2b8f45d
-#: ../../../src/common/doc/functions/analyze_graph.rst:137
-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."
-
-# 2867ea63b6b14572adb1130a9d04e28a
-#: ../../../src/common/doc/functions/analyze_graph.rst:143
-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."
-
-# 3cf323ab63204d99ac7ca31677b9e667
-#: ../../../src/common/doc/functions/analyze_graph.rst:149
-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``."
-
-# baf5ffc28192473483bc4a1a4a0315f3
-#: ../../../src/common/doc/functions/analyze_graph.rst:160
-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:"
-
-# 57cb32f6495d4cb0b5f36be03adc7efa
-#: ../../../src/common/doc/functions/analyze_graph.rst:162
-msgid "For the following table"
-msgstr "Para la siguiente tabla"
-
-# 12fcad9f3b484280baa8b29867859861
-#: ../../../src/common/doc/functions/analyze_graph.rst:171
-msgid "Using positional notation:"
-msgstr "Usando notación posicional:"
-
-# 07a02c55d3eb4f9eb1dfed2833efcbe8
-#: ../../../src/common/doc/functions/analyze_graph.rst:172
-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:"
-
-# 5dc716a92a81438c888764e8cb2b5b79
-#: ../../../src/common/doc/functions/analyze_graph.rst:195
-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."
-
-# 057829092b8a4504a3115036a73a489f
-#: ../../../src/common/doc/functions/analyze_graph.rst:200
-msgid "Selecting rows based on the id."
-msgstr "La selección de filas basadas en el id."
-
-# 5c1437170b9149c5bc4174edc58ee875
-#: ../../../src/common/doc/functions/analyze_graph.rst:210
-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 ."
-
-# 3d622065f50846578692f7a1b2a136d9
-#: ../../../src/common/doc/functions/analyze_graph.rst:222
-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)"
-
-# 2cffbd13f5f54de1abd9c025df6a762a
-#: ../../../src/common/doc/functions/analyze_graph.rst:239
-msgid "Examples"
-msgstr "Ejemplos"
-
-# eeedfddf23864b98a801913ef15f7cd9
-#: ../../../src/common/doc/functions/analyze_graph.rst:366
-msgid "The examples use the :ref:`sampledata` network."
-msgstr "Los ejemplos usan la red de ejemplo :ref:`sampledata`"
-
-# d6f7c52a1a824867943d8adae7b2e245
-#: ../../../src/common/doc/functions/analyze_graph.rst:370
-msgid "See Also"
-msgstr "Véase también"
-
-# ba0f07ab7dca4083a5aef16d566cf506
-#: ../../../src/common/doc/functions/analyze_graph.rst:372
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ":ref:`topology` para tener una visión general de una topología de algoritmos de enrrutamiento."
-
-# 90d9202a2da94489b4b43a71caa66956
-#: ../../../src/common/doc/functions/analyze_graph.rst:373
-msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
-msgstr ":ref:`pgr_analyze_oneway` para analizar la direccionalidad de los bordes."
-
-# 73d10e9d35dd4a269249fbc09274000b
-#: ../../../src/common/doc/functions/analyze_graph.rst:374
-msgid ""
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
-"vertices table based on the source and target information."
-msgstr ":ref:`pgr_createVerticesTable <pgr_create_vert_table>` para reconstruir la tabla de vértices basándose en la información de origen y de destino."
-
-# 2f459b0453c141239d9564e2467fbdd5
-#: ../../../src/common/doc/functions/analyze_graph.rst:375
-msgid ""
-":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
-"edge table."
-msgstr ":ref:`pgr_nodeNetwork <pgr_node_network>` crear nodos a una tabla de borde sin nodos."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po
deleted file mode 100644
index 6816b50..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po
+++ /dev/null
@@ -1,336 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:21+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f8ca74e3c9a54cd0b0e6cd3bcec8de7e
-#: ../../../src/common/doc/functions/analyze_oneway.rst:13
-msgid "pgr_analyzeOneway"
-msgstr "pgr_analyzeOneway"
-
-# ee3b92d1a5184a92b6fa72a69ab2f1c9
-#: ../../../src/common/doc/functions/analyze_oneway.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# fd816817954b4f3d8d25927cebce353b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:22
-msgid ""
-"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
-"segments."
-msgstr "``pgr_analyzeOneway`` — Analizar calles unidireccionales e identifica segmentos invertidos"
-
-# 4c9dfc86ed0042de97bf0107b0b2eccd
-#: ../../../src/common/doc/functions/analyze_oneway.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# d31a1ab567db4873a46256e8ecbdedf4
-#: ../../../src/common/doc/functions/analyze_oneway.rst:28
-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."
-
-# 74bdfef086ae480bbe2affdece2c9efa
-#: ../../../src/common/doc/functions/analyze_oneway.rst:40
-msgid "Description"
-msgstr "Descripción"
-
-# 04f93117821f4eae962594c71a06a5a8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:42
-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ógicame [...]
-
-# 035956781a774bc3bb1214394ad77be8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:44
-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."
-
-# 007bbd995cbf4e7c86ce8e9916675879
-#: ../../../src/common/doc/functions/analyze_oneway.rst:46
-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."
-
-# f972114db5c841928b7f2ac705bb0687
-#: ../../../src/common/doc/functions/analyze_oneway.rst:49
-msgid "Prerequisites"
-msgstr "Requisitos previos"
-
-# 54a0c52cee394d389a81fcd50b24ad97
-#: ../../../src/common/doc/functions/analyze_oneway.rst:50
-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 <edge_table>_vertices_pgr that stores the "
-"vertices information."
-msgstr "La tabla de bordes debe ser analizada debe contener una columna de origen y una columna de destino llena con los identificadores de los vértices de los segmentos y los vértices correspondientes de la tabla <edge_table>_vertices_pgr que almacena la información de los vértices."
-
-# 808b5b795d364182b543ab30a1ad1644
-#: ../../../src/common/doc/functions/analyze_oneway.rst:52
-msgid ""
-"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
-"vertices table."
-msgstr "usar :ref:`pgr_createVerticesTable <pgr_create_vert_table>` para crear la tabla de vértices."
-
-# f6248fc57e734ead94edd12cab567915
-#: ../../../src/common/doc/functions/analyze_oneway.rst:53
-msgid ""
-"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
-"and the vertices table."
-msgstr "Usar :ref:`pgr_createTopology <pgr_create_topology>` para crear la topología y la tabla de vértices."
-
-# 4cacac934ba64cda907561e98847bf8b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:56
-msgid "Parameters"
-msgstr "Parámetros"
-
-# 669f0d5432dd4c0c8da55dba8c3502e7
-#: ../../../src/common/doc/functions/analyze_oneway.rst:57
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr "``text`` La tabla de la red. (puede contener el nombre del esquema)"
-
-# a16edb2699f1486c91c10ac7533fef7c
-#: ../../../src/common/doc/functions/analyze_oneway.rst:58
-msgid "``text[]`` source node **in** rules"
-msgstr "``text[]`` reglas de **entrada** del nodo inicial"
-
-# 28b4c2457d3b4aaba43dc42af4d2bd5e
-#: ../../../src/common/doc/functions/analyze_oneway.rst:59
-msgid "``text[]`` source node **out** rules"
-msgstr "``text[]`` reglas de **salida** del nodo inicial"
-
-# 5180ad82f6e6434a99defa1823c0a2d8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:60
-msgid "``text[]`` target node **in** rules"
-msgstr "``text[]`` reglas de **entrada** del nodo final"
-
-# 4866b796c7fb49d985a479c3a97eec38
-#: ../../../src/common/doc/functions/analyze_oneway.rst:61
-msgid "``text[]`` target node **out** rules"
-msgstr "``text[]`` reglas de **salida** del nodo final"
-
-# 2744331fb9ac447ba0c40a6035ac0a95
-#: ../../../src/common/doc/functions/analyze_oneway.rst:62
-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``."
-
-# b116cd1fc10f4f5bbd8fe9800562b62f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:63
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr "``text`` El nombre de la columna del nodo de salida del segmento. El valor por defecto es``source``."
-
-# 8ca5a93ed45443c09202b1e5779dfa76
-#: ../../../src/common/doc/functions/analyze_oneway.rst:64
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr "``text`` El nombre de la columna del nodo de llegada del segmneto. El valor por defecto es ``target``."
-
-# e41f4c872a3445dbbc0bd183a71971fa
-#: ../../../src/common/doc/functions/analyze_oneway.rst:65
-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``."
-
-# 9cd0459ca40940448e6c0d9c07c4a157
-#: ../../../src/common/doc/functions/analyze_oneway.rst:67
-msgid ""
-"It is strongly recommended to use the named notation. See "
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
-":ref:`pgr_createTopology <pgr_create_topology>` for examples."
-msgstr "Se recomienda enormemente que se utilice la notación con nombre. Ver :ref:`pgr_createVerticesTable <pgr_create_vert_table>` o :ref:`pgr_createTopology <pgr_create_topology>` para ejemlos."
-
-# e217ab2060e447e9a7a3745f4d84390d
-#: ../../../src/common/doc/functions/analyze_oneway.rst:70
-msgid "The function returns:"
-msgstr "La función devuelve:"
-
-# 95dedd1c39c9424a906e6f2ff882e84a
-#: ../../../src/common/doc/functions/analyze_oneway.rst:72
-msgid "``OK`` after the analysis has finished."
-msgstr "``OK`` Cuando el análisis ha terminado."
-
-# 573d5fab7bb247d5adc39d8460683357
-#: ../../../src/common/doc/functions/analyze_oneway.rst:74
-msgid "Uses the vertices table: <edge_table>_vertices_pgr."
-msgstr "Utiliza la tabla de los vértices: <edge_table>_vertices_pgr."
-
-# 86597d037fe242378cc71e6e2ec88b19
-#: ../../../src/common/doc/functions/analyze_oneway.rst:75
-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``."
-
-# dcae6d2cceea4b6bb47a700cc4338340
-#: ../../../src/common/doc/functions/analyze_oneway.rst:77
-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."
-
-# 792572ffb7314163be7e4aabadd4429c
-#: ../../../src/common/doc/functions/analyze_oneway.rst:79
-msgid "The vertices table is not found."
-msgstr "No se encuentra en la tabla de los vértices."
-
-# affbb7122dd844f3b5c7962c97dec0d3
-#: ../../../src/common/doc/functions/analyze_oneway.rst:80
-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."
-
-# e50d016ee05048779dea2db4006500be
-#: ../../../src/common/doc/functions/analyze_oneway.rst:81
-msgid "The names of source , target or oneway are the same."
-msgstr "Los nombres de origen, destino o oneway son las mismos."
-
-# f14e2456527945e0a80e7888bb6dde7f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:83
-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** ."
-
-# 02623674186e4e0c961078942584c0ec
-#: ../../../src/common/doc/functions/analyze_oneway.rst:86
-msgid "The Vertices Table"
-msgstr "La tabla de vértices"
-
-# dd7fb8252bfe456aaa65515346941e74
-#: ../../../src/common/doc/functions/analyze_oneway.rst:87
-msgid ""
-"The vertices table can be created with :ref:`pgr_createVerticesTable "
-"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
-msgstr "La tabla de los vértices puede crearse con :ref:`pgr_createVerticesTable <pgr_create_vert_table>` o :ref:`pgr_createTopology <pgr_create_topology>`"
-
-# f838bf466e424966bd61af7b901279d2
-#: ../../../src/common/doc/functions/analyze_oneway.rst:89
-msgid "The structure of the vertices table is:"
-msgstr "La estructura de la tabla de los vértices es:"
-
-# 722239d3877b48d8bc5e63052fc7424f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:91
-msgid "``bigint`` Identifier of the vertex."
-msgstr "``bigint`` identificador del vértice."
-
-# 0d3b269abc8e45a1abf355e4bb7d51c0
-#: ../../../src/common/doc/functions/analyze_oneway.rst:92
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
-msgstr "``integer`` número de vértices en la edge_table que hacen referencia a este vértice. Ver :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
-
-# 50b3729c83964ef3ae1a1511c76b50f8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:93
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr "``integer`` indicador que el vértice podría tener un problema. Ver :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-
-# a5b1fe0206ea4c428c94f43a141b527b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:94
-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."
-
-# 7c678b91ca8a408aafda94e5fa217fae
-#: ../../../src/common/doc/functions/analyze_oneway.rst:95
-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."
-
-# 6d672d0be9cf41d69db69e46109d1624
-#: ../../../src/common/doc/functions/analyze_oneway.rst:96
-msgid "``geometry`` Point geometry of the vertex."
-msgstr "``geometry`` Valor de la geometría POINT del vértice."
-
-# b7cf2a5bba544714b9b79373c889e6cc
-#: ../../../src/common/doc/functions/analyze_oneway.rst:100
-msgid "History"
-msgstr "Historia"
-
-# ee9866aeb2c94c7fb0aa1e6cda48e6cb
-#: ../../../src/common/doc/functions/analyze_oneway.rst:101
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 3eed638ba1dd400186848b0928d632cf
-#: ../../../src/common/doc/functions/analyze_oneway.rst:105
-msgid "Examples"
-msgstr "Ejemplos"
-
-# fb1f0f5537c0427a866814b367160245
-#: ../../../src/common/doc/functions/analyze_oneway.rst:129
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "La consulta usa la red de ejemplo :ref:`sampledata`"
-
-# 34726fcf405940b780880e71c6a2dad3
-#: ../../../src/common/doc/functions/analyze_oneway.rst:133
-msgid "See Also"
-msgstr "Véase también"
-
-# 384816237f7b49d5911a48675467810d
-#: ../../../src/common/doc/functions/analyze_oneway.rst:135
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ":ref:`topology` para tener una visión general de una topología de algoritmos de encaminamiento."
-
-# f8a2c637ce834c5ab9fea42ec365f0d1
-#: ../../../src/common/doc/functions/analyze_oneway.rst:136
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ":ref:`analytics` para tener una visión general del análisis de un gráfico."
-
-# 1688102891bc4abaaed229738ca05755
-#: ../../../src/common/doc/functions/analyze_oneway.rst:137
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ":ref:`pgr_analyze_graph` Para analizar los bordes y vértices de la tabla de bordes."
-
-# 5914f34793e24715acb0adbe7d9fe1e0
-#: ../../../src/common/doc/functions/analyze_oneway.rst:138
-msgid ""
-":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
-"source and target information."
-msgstr ":ref:`pgr_create_vert_table` para reconstruir la tabla vértices basándose en la información de origen y de destino."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/create_topology.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/create_topology.po
deleted file mode 100644
index fca9948..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/create_topology.po
+++ /dev/null
@@ -1,414 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 20:01+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 841ce4ae2ccd42aeb6708e0469affc85
-#: ../../../src/common/doc/functions/create_topology.rst:13
-msgid "pgr_createTopology"
-msgstr "pgr_createTopology"
-
-# bceb18f1c7484f2495890a181eb43749
-#: ../../../src/common/doc/functions/create_topology.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# efddc8da13ee412aa1fb75bf84ad023b
-#: ../../../src/common/doc/functions/create_topology.rst:22
-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."
-
-# c01e1abb389b4e0096e2971378967ac9
-#: ../../../src/common/doc/functions/create_topology.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 0dcc6bb9100b4d89afa5b1404283d0c9
-# 2f90d445d42f4c839d6d2b2e4bdd588b
-#: ../../../src/common/doc/functions/create_topology.rst:28
-#: ../../../src/common/doc/functions/create_topology.rst:69
-msgid "The function returns:"
-msgstr "La función devuelve:"
-
-# 88833f75e6d741b5bc91526488d66e4e
-#: ../../../src/common/doc/functions/create_topology.rst:30
-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."
-
-# da6aad799955428fb1bef9ff2dbd70b5
-#: ../../../src/common/doc/functions/create_topology.rst:31
-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."
-
-# c4d463cfb61840f689831eeafe2844dc
-#: ../../../src/common/doc/functions/create_topology.rst:42
-msgid "Description"
-msgstr "Descripción"
-
-# fba8585de1c94f0ba612f64f8cd4f39d
-#: ../../../src/common/doc/functions/create_topology.rst:45
-msgid "Parameters"
-msgstr "Parámetros"
-
-# 33e33f7ee98e4b9a9d333f8ab95cbc9b
-#: ../../../src/common/doc/functions/create_topology.rst:46
-msgid "The topology creation function accepts the following parameters:"
-msgstr "La función de creación de topología requiere los siguientes parámetros:"
-
-# d19b1856e3d440749487a15a83c9d44c
-#: ../../../src/common/doc/functions/create_topology.rst:48
-msgid "``text`` Network table name. (may contain the schema name AS well)"
-msgstr "``text`` La tabla de la red. (puede contener el nombre del esquema)"
-
-# 6afd7b88cbaf4a58b2dcbd161b278356
-#: ../../../src/common/doc/functions/create_topology.rst:49
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr "``float8`` ajuste tolerancia de bordes desconectados. (en la unidad de proyección)"
-
-# 905510b263854f1eb05f10c8a64d9d20
-#: ../../../src/common/doc/functions/create_topology.rst:50
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr "``text`` nombre de la columna de la geometría en la tabla de la red. El valor por defecto es `the_geom``"
-
-# f9b621bcf0ab41c3b87693c812f3d710
-#: ../../../src/common/doc/functions/create_topology.rst:51
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr "``text``Nombre de la columna de la clave principal de la tabla de red. Valor por defecto es ``id``'."
-
-# 6bcaf9c3c7e1422ea8e1b4dc45e7c613
-#: ../../../src/common/doc/functions/create_topology.rst:52
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr "``text`` El nombre de la columna del nodo de salida del segmento. El valor por defecto es``source``."
-
-# e2b13126a14a4ebeb8c3f453235560a1
-#: ../../../src/common/doc/functions/create_topology.rst:53
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr "``text`` El nombre de la columna del nodo de llegada del segmneto. El valor por defecto es ``target``."
-
-# adbfdd92db3740e5b4e8a6259a0a064c
-#: ../../../src/common/doc/functions/create_topology.rst:54
-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."
-
-# 65297b06273d46cc98c9a3be75886137
-#: ../../../src/common/doc/functions/create_topology.rst:58
-msgid "The ``edge_table`` will be affected"
-msgstr "La ``edge_table`` se verán afectados"
-
-# 7f45565b3b8d40408b2da1bee3d1c354
-#: ../../../src/common/doc/functions/create_topology.rst:60
-msgid "The ``source`` column values will change."
-msgstr "Los valores de la columna``source`` va a cambiar."
-
-# e05fe9ce627848aa8aa72f032d303f04
-#: ../../../src/common/doc/functions/create_topology.rst:61
-msgid "The ``target`` column values will change."
-msgstr "Cambian los valores de la columna``target``."
-
-# 72c3682247aa4841a49790a78db8c3c3
-#: ../../../src/common/doc/functions/create_topology.rst:62
-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:"
-
-# 993784afa3ce4ca68f11e8e02f2b4b27
-#: ../../../src/common/doc/functions/create_topology.rst:64
-msgid "``id``"
-msgstr "``id``"
-
-# 3074ee818e8241bc93c5a3284d7c3af4
-#: ../../../src/common/doc/functions/create_topology.rst:65
-msgid "``the_geom``"
-msgstr "``the_geom``"
-
-# e40fef18592542b98d234ac6a8038def
-#: ../../../src/common/doc/functions/create_topology.rst:66
-msgid "``source``"
-msgstr "``source``"
-
-# 0360a33adc734d1eaf83f5e1e314cc73
-#: ../../../src/common/doc/functions/create_topology.rst:67
-msgid "``target``"
-msgstr "``target``"
-
-# a2aae07be90348b0b2190f647731fb26
-#: ../../../src/common/doc/functions/create_topology.rst:71
-msgid "``OK`` after the network topology has been built."
-msgstr "'' OK'' después de que se ha construido la topología de red."
-
-# 33a4fd15e75a41a68105d2ea67b4aab1
-#: ../../../src/common/doc/functions/create_topology.rst:73
-msgid "Creates a vertices table: <edge_table>_vertices_pgr."
-msgstr "Crea una tabla de vértices: <edge_table>_vertices_pgr."
-
-# 589a7e90c6404cbe902baec0a884189b
-#: ../../../src/common/doc/functions/create_topology.rst:74
-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."
-
-# 92e7ab03c5ce43ed8c705a26aa4b801c
-#: ../../../src/common/doc/functions/create_topology.rst:75
-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."
-
-# 0635e9d515184ccc80747864939f789c
-#: ../../../src/common/doc/functions/create_topology.rst:78
-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:"
-
-# 607fcb6f6ae3438789ecf9c95992bc3f
-#: ../../../src/common/doc/functions/create_topology.rst:80
-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."
-
-# 2bad2b565914457a90a990e718e857fd
-#: ../../../src/common/doc/functions/create_topology.rst:81
-msgid "The condition is not well formed."
-msgstr "La condición no está bien formada."
-
-# c800f5e3462c44c1b786308aec4cfea4
-#: ../../../src/common/doc/functions/create_topology.rst:82
-msgid "The names of source , target or id are the same."
-msgstr "Los nombres de origen, destino o id son las mismos."
-
-# 51c96f82e8ea49bcbde8aaeb905a6c6c
-#: ../../../src/common/doc/functions/create_topology.rst:83
-msgid "The SRID of the geometry could not be determined."
-msgstr "No pudo determinarse el SRID de la geometría."
-
-# f5f0d0a1c3814e1d9c14e4de52bd9899
-#: ../../../src/common/doc/functions/create_topology.rst:87
-msgid "The Vertices Table"
-msgstr "La tabla de vértices"
-
-# 54ef7e60b4d445cfa453323fbe80032d
-#: ../../../src/common/doc/functions/create_topology.rst:88
-msgid ""
-"The vertices table is a requirment of the :ref:`pgr_analyzeGraph "
-"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
-"functions."
-msgstr "La tabla de los vértices es un requerimiento de las funciones :ref:`pgr_analyzeGraph <pgr_analyze_graph>` y :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-
-# faaffddd86fd4680a80925c8c3877f07
-#: ../../../src/common/doc/functions/create_topology.rst:90
-msgid "The structure of the vertices table is:"
-msgstr "La estructura de la tabla de los vértices es:"
-
-# fc31880c8b034aae99d6d4caec420302
-#: ../../../src/common/doc/functions/create_topology.rst:92
-msgid "``bigint`` Identifier of the vertex."
-msgstr "``bigint`` identificador del vértice."
-
-# 7684f52a607845ef802799c26c221bf3
-#: ../../../src/common/doc/functions/create_topology.rst:93
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr "``integer`` número de vértices en la edge_table que hacen referencia a este vértice. Ver :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
-
-# 1dc63c1d7cbb417d916ed0561df67df9
-#: ../../../src/common/doc/functions/create_topology.rst:94
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr "``integer`` indicador que el vértice podría tener un problema. Ver :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-
-# 546f74ccc20545de9c032cabcaac878f
-#: ../../../src/common/doc/functions/create_topology.rst:95
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr "``integer`` número de vértices en la edge_table que hacen referencia a este vértice como entrante. Ver :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-
-# 9fe606ee590d4f009989e3cdcf09b5c5
-#: ../../../src/common/doc/functions/create_topology.rst:96
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr "``integer`` número de vértices en la edge_table que hacen referencia a este vértice como saliente. Ver :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-
-# 2ee4f32c8546412bad1e109e6051e249
-#: ../../../src/common/doc/functions/create_topology.rst:97
-msgid "``geometry`` Point geometry of the vertex."
-msgstr "``geometry`` Valor de la geometría POINT del vértice."
-
-# a63156aa23b54785aaf66150bfe98a52
-#: ../../../src/common/doc/functions/create_topology.rst:100
-msgid "History"
-msgstr "Historia"
-
-# da8726d6435e42f09d83f4a310d5c432
-#: ../../../src/common/doc/functions/create_topology.rst:101
-msgid "Renamed in version 2.0.0"
-msgstr "Renombrado en la versión 2.0.0"
-
-# 5b4b6a4bea1543ac98f444d9ec32d7eb
-#: ../../../src/common/doc/functions/create_topology.rst:104
-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:"
-
-# 6db23da4afd448bab89802246bccb65a
-#: ../../../src/common/doc/functions/create_topology.rst:107
-msgid "The simplest way to use pgr_createtopology is:"
-msgstr "La forma más sencilla de usar pgr_createtopology es:"
-
-# 6905f56f53bb4cdfb9ae49021265afe9
-#: ../../../src/common/doc/functions/create_topology.rst:115
-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:"
-
-# f8c6c68c7d334f68bac36a818c4091ab
-#: ../../../src/common/doc/functions/create_topology.rst:120
-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."
-
-# 8dcbdbf60c2e4522a87d80a7796a354b
-# b72940f0e2054c46a50358fc40af026e
-#: ../../../src/common/doc/functions/create_topology.rst:127
-#: ../../../src/common/doc/functions/create_topology.rst:192
-msgid "When using the named notation"
-msgstr "Cuando se utiliza la notación por nombre"
-
-# 460cbff5c7054542a80375a4f50072e0
-# 56d9daba24ff4ce9ac02e3326af007af
-#: ../../../src/common/doc/functions/create_topology.rst:128
-#: ../../../src/common/doc/functions/create_topology.rst:193
-msgid "The order of the parameters do not matter:"
-msgstr "No importa el orden de los parámetros:"
-
-# 4b24ad3db4be4b60a6c8bfcc38fae359
-#: ../../../src/common/doc/functions/create_topology.rst:138
-msgid ""
-"Parameters defined with a default value can be omited, AS long AS the value "
-"matches the default:"
-msgstr "Parámetros definidos con un valor por defecto pueden ser omitidos, mientras el valor coincida con el valor por defecto:"
-
-# 8aab982078634384ab4dfced463b5c14
-# d9c7d4fa12394a5a915a9f6f664e7a8a
-#: ../../../src/common/doc/functions/create_topology.rst:145
-#: ../../../src/common/doc/functions/create_topology.rst:207
-msgid "Selecting rows using rows_where parameter"
-msgstr "Seleccionar filas utilizando el parámetro rows_where"
-
-# 4be49c2f23734283895a40625620047b
-# 1734ac1429ad4691861fbfcc7954d800
-#: ../../../src/common/doc/functions/create_topology.rst:146
-#: ../../../src/common/doc/functions/create_topology.rst:208
-msgid "Selecting rows based on the id."
-msgstr "La selección de filas basadas en el id."
-
-# 499347aef3cb49f993c320d1fd353a29
-# a0cd57644bf443fbaa81efed8df8a30f
-#: ../../../src/common/doc/functions/create_topology.rst:152
-#: ../../../src/common/doc/functions/create_topology.rst:218
-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."
-
-# b8e12b4f62d24fb0a535290a0a480ff0
-# 42da9f122c7240bea10a78685a6b5b8d
-#: ../../../src/common/doc/functions/create_topology.rst:158
-#: ../../../src/common/doc/functions/create_topology.rst:230
-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``."
-
-# 596d74ac25d34cbda9a05349a4a0af21
-#: ../../../src/common/doc/functions/create_topology.rst:169
-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:"
-
-# ac1bf6e79288443486b7b105e25e07eb
-#: ../../../src/common/doc/functions/create_topology.rst:171
-msgid "For the following table"
-msgstr "Para la siguiente tabla"
-
-# a24fc2426b5c4b91bc53f875e37dddaa
-#: ../../../src/common/doc/functions/create_topology.rst:179
-msgid "Using positional notation:"
-msgstr "Usando notación posicional:"
-
-# d1937a888b40477b8d696215b7b93425
-#: ../../../src/common/doc/functions/create_topology.rst:180
-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:"
-
-# 7e510379477f445a9432549c095c12bb
-#: ../../../src/common/doc/functions/create_topology.rst:203
-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."
-
-# de088e18a1634e6a96b99df9171c530a
-#: ../../../src/common/doc/functions/create_topology.rst:247
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 89b592f2e7f6474cbed2d9d5bca887e9
-#: ../../../src/common/doc/functions/create_topology.rst:279
-msgid "The example uses the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# ae52cd8922264c939460bd2df2108508
-#: ../../../src/common/doc/functions/create_topology.rst:283
-msgid "See Also"
-msgstr "Véase también"
-
-# 664429e917764979b9255e4f9a72377f
-#: ../../../src/common/doc/functions/create_topology.rst:285
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ":ref:`topology` para tener una visión general de una topología de algoritmos de encaminamiento."
-
-# 9ded0191d7344e8baca758e97f34cf68
-#: ../../../src/common/doc/functions/create_topology.rst:286
-msgid ""
-":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
-"source and target information."
-msgstr ":ref:`pgr_create_vert_table` para reconstruir la tabla vértices basándose en la información de origen y de destino."
-
-# ca4432eb1b4246268b1acee87b464b2f
-#: ../../../src/common/doc/functions/create_topology.rst:287
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ":ref:`pgr_analyze_graph` Para analizar los bordes y vértices de la tabla de bordes."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/create_vert_table.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/create_vert_table.po
deleted file mode 100644
index 242271f..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/create_vert_table.po
+++ /dev/null
@@ -1,389 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:17+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 1a8504651dd840e4a48344ead373a073
-#: ../../../src/common/doc/functions/create_vert_table.rst:13
-msgid "pgr_createVerticesTable"
-msgstr "pgr_createVerticesTable"
-
-# ad976846c3444135a397d1f47a0ffceb
-#: ../../../src/common/doc/functions/create_vert_table.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# c26ff674db0d4b65bff9b1483e524956
-#: ../../../src/common/doc/functions/create_vert_table.rst:22
-msgid ""
-"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
-"source and target information."
-msgstr ":ref:`pgr_createVerticesTable <pgr_create_vert_table>` para reconstruir la tabla de vértices basándose en la información de origen y de destino."
-
-# b27c4239c9034d8fb5bbfc4b736af367
-#: ../../../src/common/doc/functions/create_vert_table.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# bbfea2a13422443f8e1b9b863f56dea0
-# 139eabd1665d4dc8b6caac92f0764d50
-#: ../../../src/common/doc/functions/create_vert_table.rst:28
-#: ../../../src/common/doc/functions/create_vert_table.rst:63
-msgid "The function returns:"
-msgstr "La función devuelve:"
-
-# bdf469a3c50c4176bcc89409cbe50136
-# 268e8b4480b24112a72e1d7da0dab1bd
-#: ../../../src/common/doc/functions/create_vert_table.rst:30
-#: ../../../src/common/doc/functions/create_vert_table.rst:65
-msgid "``OK`` after the vertices table has been reconstructed."
-msgstr "``OK`` después de que se ha construido la tabla de vértices."
-
-# f542765a7c984a57b56f203df843634d
-# a536d714aa4240dca5d92dfeee6dd7bb
-#: ../../../src/common/doc/functions/create_vert_table.rst:31
-#: ../../../src/common/doc/functions/create_vert_table.rst:70
-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:"
-
-# c7c8bc00b10d45a897224d240c4f96bf
-#: ../../../src/common/doc/functions/create_vert_table.rst:41
-msgid "Description"
-msgstr "Descripción"
-
-# c53a2ef242f8484dac84581a80134594
-#: ../../../src/common/doc/functions/create_vert_table.rst:44
-msgid "Parameters"
-msgstr "Parámetros"
-
-# 2dc2c3867d7a4367a958a6e1049f44c0
-#: ../../../src/common/doc/functions/create_vert_table.rst:45
-msgid ""
-"The reconstruction of the vertices table function accepts the following "
-"parameters:"
-msgstr "La función para la reconstrucción de la tabla mesa vértices acepta los siguientes parámetros:"
-
-# e92b11f0f4ea47af9581936d11972ef6
-#: ../../../src/common/doc/functions/create_vert_table.rst:47
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr "``text`` La tabla de la red. (puede contener el nombre del esquema)"
-
-# 75d43bdeeb7843139aec9b4c7dc60097
-#: ../../../src/common/doc/functions/create_vert_table.rst:48
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr "``text`` nombre de la columna de la geometría en la tabla de la red. El valor por defecto es ``the_geom``"
-
-# f0e2bb638cd841f2b61bc8398e3ea59b
-#: ../../../src/common/doc/functions/create_vert_table.rst:49
-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``."
-
-# ba67bced62994e7b98967cf09cbf3ca6
-#: ../../../src/common/doc/functions/create_vert_table.rst:50
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr "``text`` El nombre de la columna del nodo de llegada del segmento. El valor por defecto es ``target``."
-
-# d7d53a50bc9249518132241a2c83dc1b
-#: ../../../src/common/doc/functions/create_vert_table.rst:51
-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."
-
-# a87c8e9949df409da09632babbb99748
-#: ../../../src/common/doc/functions/create_vert_table.rst:55
-msgid "The ``edge_table`` will be affected"
-msgstr "La ``edge_table`` se verán afectados"
-
-# a0b202c14bf849e1a9506fc9c4010540
-#: ../../../src/common/doc/functions/create_vert_table.rst:57
-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:"
-
-# 51ab4d2ba98b4affa7e5cec96e352cce
-#: ../../../src/common/doc/functions/create_vert_table.rst:59
-msgid "``the_geom``"
-msgstr "``the_geom``"
-
-# 134fb1a15f8742a49fe36e2683c4c324
-#: ../../../src/common/doc/functions/create_vert_table.rst:60
-msgid "``source``"
-msgstr "``source``"
-
-# 1c5f7bc5486b44999341e4f8f9b92c2e
-#: ../../../src/common/doc/functions/create_vert_table.rst:61
-msgid "``target``"
-msgstr "``target``"
-
-# 2c70ff2c521c48c799c898d61a01e119
-#: ../../../src/common/doc/functions/create_vert_table.rst:67
-msgid "Creates a vertices table: <edge_table>_vertices_pgr."
-msgstr "Crea una tabla de vértices: <edge_table>_vertices_pgr."
-
-# b0e0cf6163ea49f3b3a38e97576f301e
-#: ../../../src/common/doc/functions/create_vert_table.rst:68
-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."
-
-# 28e32e20ebd74f88920b7c6fd45054e9
-#: ../../../src/common/doc/functions/create_vert_table.rst:72
-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."
-
-# 8501c3c5738f4907bf64b63007218466
-#: ../../../src/common/doc/functions/create_vert_table.rst:73
-msgid "The condition is not well formed."
-msgstr "La condición no está bien formada."
-
-# 5252c79651354d40a6271efe4b78d226
-#: ../../../src/common/doc/functions/create_vert_table.rst:74
-msgid "The names of source, target are the same."
-msgstr "Los nombres de los campos de origen y destino son las mismos."
-
-# 41c42eeafd6b487ebc676126c0f92f0c
-#: ../../../src/common/doc/functions/create_vert_table.rst:75
-msgid "The SRID of the geometry could not be determined."
-msgstr "No pudo determinarse el SRID de la geometría."
-
-# d61aba7cc54d49b9a670817e7dd52472
-#: ../../../src/common/doc/functions/create_vert_table.rst:78
-msgid "The Vertices Table"
-msgstr "La tabla de vértices"
-
-# 93a53c04ff294116acf94a067d17ff73
-#: ../../../src/common/doc/functions/create_vert_table.rst:79
-msgid ""
-"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
-"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
-"functions."
-msgstr "La tabla de los vértices es un requerimiento de las funciones :ref:`pgr_analyzeGraph <pgr_analyze_graph>` y :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-
-# 7e418508090c4667b4128b22f562b5db
-#: ../../../src/common/doc/functions/create_vert_table.rst:81
-msgid "The structure of the vertices table is:"
-msgstr "La estructura de la tabla de los vértices es:"
-
-# 114548eb64364741b99e10c86fe55fad
-#: ../../../src/common/doc/functions/create_vert_table.rst:83
-msgid "``bigint`` Identifier of the vertex."
-msgstr "``bigint`` identificador del vértice."
-
-# 35f0fc22f2464997bce4d704a9f4ee88
-#: ../../../src/common/doc/functions/create_vert_table.rst:84
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr "``integer`` número de vértices en la edge_table que hacen referencia a este vértice. Ver :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
-
-# d71ba1da8657438b86fe6ce3326cf94a
-#: ../../../src/common/doc/functions/create_vert_table.rst:85
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr "``integer`` indicador que el vértice podría tener un problema. Ver :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-
-# 9ea4778e1ed64d3cb8c12ffedca5748b
-#: ../../../src/common/doc/functions/create_vert_table.rst:86
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr "``integer`` número de vértices en la edge_table que hacen referencia a este vértice como entrante. Ver :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-
-# cd631484ea62455cae3d37b03ca36624
-#: ../../../src/common/doc/functions/create_vert_table.rst:87
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr "``integer`` número de vértices en la edge_table que hacen referencia a este vértice como saliente. Ver :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-
-# 29652dcb521b4111813d63d570b62873
-#: ../../../src/common/doc/functions/create_vert_table.rst:88
-msgid "``geometry`` Point geometry of the vertex."
-msgstr "``geometry`` Valor de la geometría POINT del vértice."
-
-# ca63675181414139865690332306235b
-#: ../../../src/common/doc/functions/create_vert_table.rst:91
-msgid "History"
-msgstr "Historia"
-
-# e383b8838b4b40618c66151c1f94fb48
-#: ../../../src/common/doc/functions/create_vert_table.rst:92
-msgid "Renamed in version 2.0.0"
-msgstr "Renombrado en la versión 2.0.0"
-
-# f4e14bd6d88d4f1e8d5ff2fbf9aea722
-#: ../../../src/common/doc/functions/create_vert_table.rst:95
-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:"
-
-# 6fc1c7d9c4e04380ada776f609bf4505
-#: ../../../src/common/doc/functions/create_vert_table.rst:98
-msgid "The simplest way to use pgr_createVerticesTable is:"
-msgstr "La forma más sencilla de usar pgr_createVerticesTable es:"
-
-# 3373cb2347994f2fa122008bdff12190
-#: ../../../src/common/doc/functions/create_vert_table.rst:105
-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:"
-
-# f75126b9da994fea920678a643a80e25
-#: ../../../src/common/doc/functions/create_vert_table.rst:110
-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."
-
-# 90ea5b12d9a64eb2bafd6d211e0ffeff
-# 34ff976ba1f24ec08a19a8d87673156d
-#: ../../../src/common/doc/functions/create_vert_table.rst:117
-#: ../../../src/common/doc/functions/create_vert_table.rst:181
-msgid "When using the named notation"
-msgstr "Cuando se utiliza la notación por nombre"
-
-# 213a5c21ddcb4745987210530901695f
-# fac4e4da33fb494981c36957cd000a29
-#: ../../../src/common/doc/functions/create_vert_table.rst:118
-#: ../../../src/common/doc/functions/create_vert_table.rst:182
-msgid "The order of the parameters do not matter:"
-msgstr "No importa el orden de los parámetros:"
-
-# 529a856bf0404a10a837b07945c52175
-#: ../../../src/common/doc/functions/create_vert_table.rst:128
-msgid ""
-"Parameters defined with a default value can be omited, as long as the value "
-"matches the default:"
-msgstr "Parámetros definidos con un valor por defecto pueden ser omitidos, mientras el valor coincida con el valor por defecto:"
-
-# 55574bcb1be54b1b907c0524cbf1057d
-# af501046d7d84255bd3030520c3e2f15
-#: ../../../src/common/doc/functions/create_vert_table.rst:135
-#: ../../../src/common/doc/functions/create_vert_table.rst:196
-msgid "Selecting rows using rows_where parameter"
-msgstr "Seleccionar filas utilizando el parámetro rows_where"
-
-# 7080aeec9c1e4a31bfb9be1ed4506ab7
-#: ../../../src/common/doc/functions/create_vert_table.rst:136
-msgid "Selecting rows based on the id."
-msgstr "La selección de filas basadas en el id."
-
-# 74ec654344604925875e20b1447a6a3e
-#: ../../../src/common/doc/functions/create_vert_table.rst:142
-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."
-
-# 89d554dba13d40be8ca51e74d18c7c6f
-# fbda0895e287413fb2455b07ba2ba7fb
-#: ../../../src/common/doc/functions/create_vert_table.rst:148
-#: ../../../src/common/doc/functions/create_vert_table.rst:219
-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``."
-
-# 7f2e698d7f844861bd468923e95ef16a
-#: ../../../src/common/doc/functions/create_vert_table.rst:159
-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:"
-
-# 381c72bdf71543d4853557e93d021602
-#: ../../../src/common/doc/functions/create_vert_table.rst:161
-msgid "For the following table"
-msgstr "Para la siguiente tabla"
-
-# 5d51a2b4e3e84516bab9cc22039007c8
-#: ../../../src/common/doc/functions/create_vert_table.rst:169
-msgid "Using positional notation:"
-msgstr "Usando notación posicional:"
-
-# 3be19d9038134fe2907db9c97eaeca7d
-#: ../../../src/common/doc/functions/create_vert_table.rst:170
-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:"
-
-# 94d47a836ffa45268fc1f9662f902f2b
-#: ../../../src/common/doc/functions/create_vert_table.rst:192
-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."
-
-# 6d8d108291094933afdde4095193e506
-#: ../../../src/common/doc/functions/create_vert_table.rst:197
-msgid "Selecting rows based on the gid."
-msgstr "La selección de filas basadas en el gid."
-
-# 5df5fd0f734e46c6bfb93444bd86905e
-#: ../../../src/common/doc/functions/create_vert_table.rst:207
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``gid`` =5 ."
-msgstr "Seleccionar las filas donde la geometría está cerca de la geometría de la fila con ``gid`` =5."
-
-# e2c54fc28df243609e8d003180886771
-#: ../../../src/common/doc/functions/create_vert_table.rst:236
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 0587b0909413456482f8b8725b101b7a
-#: ../../../src/common/doc/functions/create_vert_table.rst:258
-msgid "The example uses the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# ad71788bef724cb1809d4b5d96ef1e5c
-#: ../../../src/common/doc/functions/create_vert_table.rst:262
-msgid "See Also"
-msgstr "Véase también"
-
-# 6baea98fd7b6493faabb8fcc69f975d8
-#: ../../../src/common/doc/functions/create_vert_table.rst:264
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ":ref:`topology` para tener una visión general de una topología de algoritmos de enrrutamiento."
-
-# 7103284d91854b18939e44589085f3cf
-#: ../../../src/common/doc/functions/create_vert_table.rst:265
-msgid ""
-":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
-"on the geometry."
-msgstr ":ref:`pgr_createTopology <pgr_create_topology>` — Construye una topología de red basada en la información de geometría."
-
-# 4c67e74087fe4035a8b54bb0d58d8a84
-#: ../../../src/common/doc/functions/create_vert_table.rst:266
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ":ref:`pgr_analyze_graph` Para analizar los bordes y vértices de la tabla de bordes."
-
-# a7eb449e6d594406ab3779c29d1937c8
-#: ../../../src/common/doc/functions/create_vert_table.rst:267
-msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
-msgstr ":ref:`pgr_analyze_oneway` para analizar la direccionalidad de los bordes."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/index.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/index.po
deleted file mode 100644
index 3bb3d25..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/index.po
+++ /dev/null
@@ -1,64 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# deb0ed12ae874b7a8bb888e9e2be5881
-#: ../../../src/common/doc/functions/index.rst:13
-msgid "Topology Functions"
-msgstr "Funciones Topológicas"
-
-# cbbdace0de7449b1a859558858d76f6e
-#: ../../../src/common/doc/functions/index.rst:15
-msgid ""
-"The pgRouting's topology of a network, represented with an edge table with "
-"source and target attributes and a vertices table associated with it. "
-"Depending on the algorithm, you can create a topology or just reconstruct "
-"the vertices table, You can analyze the topology, We also provide a function"
-" to node an unoded network."
-msgstr "La topología de una red de pgRouting, es representada con una tabla de bordes con atributos de origen y destino y una tabla de vértices asociada. Dependiendo del algoritmo, puede crear una topología o simplemente reconstruir la tabla vértices, puede analizar la topología, también ofrecemos una función para generar nodos de un red con nodos faltantes."
-
-# f4e85c020cba4850a7e4da7b9456baa9
-#: ../../../src/common/doc/functions/index.rst:19
-msgid ""
-":ref:`pgr_create_topology` - to create a topology based on the geometry."
-msgstr ":ref:`pgr_create_topology` para crear la topología basado en la geometría."
-
-# 2d4de3856acc4c43a732847a834661e6
-#: ../../../src/common/doc/functions/index.rst:20
-msgid ""
-":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
-"the source and target information."
-msgstr ":ref:`pgr_create_vert_table` para reconstruir la tabla vértices basándose en la información de origen y de destino."
-
-# 4cf0c54d4785484e9694aa275658e7a7
-#: ../../../src/common/doc/functions/index.rst:21
-msgid ""
-":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
-"table."
-msgstr ":ref:`pgr_analyze_graph` Para analizar los bordes y vértices de la tabla de bordes."
-
-# a7edff2f50444a3d985d747d5e6a609e
-#: ../../../src/common/doc/functions/index.rst:22
-msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
-msgstr ":ref:`pgr_analyze_oneway` para analizar la direccionalidad de los bordes."
-
-# e04ee2a942c4495fa185f89d37b0c42b
-#: ../../../src/common/doc/functions/index.rst:23
-msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
-msgstr ":ref:`pgr_nodeNetwork <pgr_node_network>` - para crear nodos a una tabla de borde sin nodos."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po
deleted file mode 100644
index 2768aa2..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po
+++ /dev/null
@@ -1,89 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-12 15:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 1451c59201944bfd9022c90ef89ebf8a
-#: ../../../src/common/doc/functions/is_column_in_table.rst:13
-msgid "pgr_isColumnInTable - Check if column exists"
-msgstr "pgr_isColumnInTable - verifica si existe la columna"
-
-# cb570c2703fc45e9bba281cae42780d6
-#: ../../../src/common/doc/functions/is_column_in_table.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# b4cdca42128d4828961c3e7076774fc0
-#: ../../../src/common/doc/functions/is_column_in_table.rst:22
-msgid "``pgr_isColumnInTable`` — Check if a column exists in a table."
-msgstr "``pgr_isColumnInTable`` — Verifica si existe un campo de una tabla."
-
-# 33b135e2f8dd4f5e81aad53d1a016cfe
-#: ../../../src/common/doc/functions/is_column_in_table.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 96d06813601a419c9b44fe8298f74a51
-#: ../../../src/common/doc/functions/is_column_in_table.rst:28
-msgid "Returns ``true`` or ``false`` if column “col” exists in table “tab”."
-msgstr "Devuelve ``true`` o ``false`` dependiendo si existe la columna \"col\" en la tabla “tab”."
-
-# 44f17585bbd843cb9fbcacb785ad3130
-#: ../../../src/common/doc/functions/is_column_in_table.rst:36
-msgid "Description"
-msgstr "Descripción"
-
-# b57ee4621bd04e6991a266235c5a592a
-#: ../../../src/common/doc/functions/is_column_in_table.rst:38
-msgid "``text`` table name with or without schema component"
-msgstr "``text`` nombre de la tabla con o sin componente de esquema"
-
-# ac6b45788cac4cc7a5dcf6e4c44bb9ad
-#: ../../../src/common/doc/functions/is_column_in_table.rst:39
-msgid "``text`` column name to be checked for"
-msgstr "``text`` nombre de la columna que va a comprobarse"
-
-# 5f4ac9523c3b487884e6dd8e67b1e082
-#: ../../../src/common/doc/functions/is_column_in_table.rst:43
-msgid "History"
-msgstr "Historia"
-
-# 028851614bd7489991629d8c8f6f8bbf
-#: ../../../src/common/doc/functions/is_column_in_table.rst:44
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 3c3db2df87634ae4b3c8713633f9214f
-#: ../../../src/common/doc/functions/is_column_in_table.rst:48
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 61e31f4885e444eea60640117f0f8264
-#: ../../../src/common/doc/functions/is_column_in_table.rst:59
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Las consultas usa la red de ejemplo :ref:`sampledata`"
-
-# 179da1f0bf5342b49e83327d1e277ca9
-#: ../../../src/common/doc/functions/is_column_in_table.rst:63
-msgid "See Also"
-msgstr "Véase también"
-
-# 7e1d2140f94d40db8ce6f48c9a3b119f
-#: ../../../src/common/doc/functions/is_column_in_table.rst:65
-msgid ":ref:`pgr_is_column_indexed`"
-msgstr ":ref:`pgr_is_column_indexed`"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po
deleted file mode 100644
index 200c92a..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po
+++ /dev/null
@@ -1,90 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-12 15:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f85a66c48ca94cc9a5bba227e6479482
-#: ../../../src/common/doc/functions/is_column_indexed.rst:13
-msgid "pgr_isColumnIndexed - Check if column is indexed"
-msgstr "pgr_isColumnIndexed - Comprobar si la columna está indexada"
-
-# a4e361cfe30d494982b2755f507c2df4
-#: ../../../src/common/doc/functions/is_column_indexed.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 2616614bd27b4f3aac95e5ee66f8771c
-#: ../../../src/common/doc/functions/is_column_indexed.rst:22
-msgid "``pgr_isColumnIndexed`` — Check if a column in a table is indexed."
-msgstr "``pgr_isColumnIndexed`` — Comprobar si una columna de una tabla es indexada."
-
-# 4aff78895aaf431bb254a1725ab1bab6
-#: ../../../src/common/doc/functions/is_column_indexed.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 62d98585fdfb49d287f711a97ba6f261
-#: ../../../src/common/doc/functions/is_column_indexed.rst:28
-msgid ""
-"Returns ``true`` or ``false`` if column “col” in table “tab” is indexed."
-msgstr "Devuelve ``true`` o ``false`` dependiendo si está indexada la columna \"col\" en tabla \"tab\"."
-
-# 016a3d2a60a745c39afdaa4ba6d24b5f
-#: ../../../src/common/doc/functions/is_column_indexed.rst:36
-msgid "Description"
-msgstr "Descripción"
-
-# 5efc6b2a366544cdadac135ab40dee54
-#: ../../../src/common/doc/functions/is_column_indexed.rst:38
-msgid "``text`` table name with or without schema component"
-msgstr "``text`` nombre de la tabla con o sin componente de esquema"
-
-# 76548c59562d4c4188ea7a5bbd5b769a
-#: ../../../src/common/doc/functions/is_column_indexed.rst:39
-msgid "``text`` column name to be checked for"
-msgstr "``text`` nombre de la columna que va a comprobarse"
-
-# 20bbf0766ada4f7b81807c2e917be118
-#: ../../../src/common/doc/functions/is_column_indexed.rst:43
-msgid "History"
-msgstr "Historia"
-
-# 3ca6785c8cb24235a6b581e63c32bd03
-#: ../../../src/common/doc/functions/is_column_indexed.rst:44
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 89feb49b01e94980935495257bf135a9
-#: ../../../src/common/doc/functions/is_column_indexed.rst:48
-msgid "Examples"
-msgstr "Ejemplos"
-
-# c8b849f8431c42ef9ecdcde47c516f03
-#: ../../../src/common/doc/functions/is_column_indexed.rst:59
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "La consulta usando la red de ejemplo :ref:`sampledata`"
-
-# 4d38c2d872d0425290c2371cbc5d27e8
-#: ../../../src/common/doc/functions/is_column_indexed.rst:63
-msgid "See Also"
-msgstr "Véase también"
-
-# ed5ed4b10dc74af48b9de1a8743ec37b
-#: ../../../src/common/doc/functions/is_column_indexed.rst:65
-msgid ":ref:`pgr_is_column_in_table`"
-msgstr ":ref:`pgr_is_column_in_table`"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/node_network.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/node_network.po
deleted file mode 100644
index 2ad4026..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/node_network.po
+++ /dev/null
@@ -1,417 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:24+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# e70efe892bc14a45b9e0a2483d5955c1
-#: ../../../src/common/doc/functions/node_network.rst:13
-msgid "pgr_nodeNetwork"
-msgstr "pgr_nodeNetwork"
-
-# 928e918755da48d29b113ad9fcdac620
-#: ../../../src/common/doc/functions/node_network.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 4c656aa4f4bf48c39d41d16b429a0f0f
-#: ../../../src/common/doc/functions/node_network.rst:22
-msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
-msgstr "``pgr_nodeNetwork`` - Crea los nodos de una tabla de bordes de la red."
-
-# b5fd23c4e27446ce8ac33a3ee9bd1fe7
-#: ../../../src/common/doc/functions/node_network.rst:24
-msgid "Nicolas Ribot"
-msgstr "Nicolas Ribot"
-
-# 16108dce80dd41e2a458f2f45f2864d0
-#: ../../../src/common/doc/functions/node_network.rst:25
-msgid "Nicolas Ribot, The source code is released under the MIT-X license."
-msgstr "Nicolas Ribot, el código fuente está liberado bajo la licencia MIT-X."
-
-# 3977ae6b9cf044318ec203a8e5aa5692
-#: ../../../src/common/doc/functions/node_network.rst:29
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 2f6a7ad6abe5481da1e313d912af14e9
-#: ../../../src/common/doc/functions/node_network.rst:31
-msgid ""
-"The function reads edges from a not \"noded\" network table and writes the "
-"\"noded\" edges into a new table."
-msgstr "La función carga los bordes de una tabla que no tiene los nodos en las intersecciones y reescribe los bordes con los nodos en una nueva tabla."
-
-# 3461fdeb834f4294ae2b188234db4eff
-#: ../../../src/common/doc/functions/node_network.rst:40
-msgid "Description"
-msgstr "Descripción"
-
-# 422a0c6c90c04a46bec03a6510ec201f
-#: ../../../src/common/doc/functions/node_network.rst:42
-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 "Un problema común asociado con la incorporación de datos SIG en pgRouting es el hecho de que los datos a menudo no están correctamente referenciados con nodos. Esto provoca topologías no válidas, que resultan en rutas que son incorrectas."
-
-# 69294245f1c44993a75f749e3721222a
-#: ../../../src/common/doc/functions/node_network.rst:44
-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 "Que los bordes estén indicados con nodos significa que, en en cada intersección de la red de caminos, los bordes se descompondrán en segmentos separados del camino. Los casos como una intersección de puente o túnel donde no existe conexión vial no son detectados por esta función."
-
-# 2817b2a1050f4b5da0c9aac6f306ea5e
-#: ../../../src/common/doc/functions/node_network.rst:46
-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 "Esta función lee la tabla ``table_in``, que tiene una columna de clave principal ``gid_cname`` y columna de la geometría llamada ``geo_cname``, y verifica la intersección de todos los segmentos contra todos los demás segmentos creando una tabla de salida ``table_out``. Usa la tolerancia ``tolerance`` para decidir cuáles nodos son considerados como mismo nodo."
-
-# b6408b0103e84de6acf993a22a25e533
-#: ../../../src/common/doc/functions/node_network.rst:48
-msgid "Parameters"
-msgstr "Parámetros"
-
-# 40ed2f0c80b64683aa3f8d42d20a77a2
-#: ../../../src/common/doc/functions/node_network.rst:50
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr "``text`` La tabla de la red. (puede contener el nombre del esquema)"
-
-# 86c247b372114883b5f6d0949e51b3c8
-#: ../../../src/common/doc/functions/node_network.rst:51
-msgid "``float8`` tolerance for coincident points (in projection unit)dd"
-msgstr "``float8`` tolerancia para puntos de coincidencia (en la unidad de proyección)"
-
-# 946d6ed96b2b4f7fac8bcc7ba4d8e68b
-#: ../../../src/common/doc/functions/node_network.rst:52
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr "``text``Nombre de la columna de la clave principal de la tabla de red. Valor por defecto es ``id``'."
-
-# ce2e7f47f3bb4b299dda0387123f0409
-#: ../../../src/common/doc/functions/node_network.rst:53
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr "``text`` nombre de la columna de la geometría en la tabla de la red. El valor por defecto es `the_geom``"
-
-# 74d00078e6354e09a4592cf7e3f9dbe8
-#: ../../../src/common/doc/functions/node_network.rst:54
-msgid "``text`` Suffix for the new table's. Default value is ``noded``."
-msgstr "``text`` sufijo para la nueva tabla. El valor predeterminado es ``noded``."
-
-# bc28085240354b228628c4449f877afe
-#: ../../../src/common/doc/functions/node_network.rst:56
-msgid "The output table will have for ``edge_table_noded``"
-msgstr "La tabla de salida tendrá para ``edge_table_noded``"
-
-# df15f6d14415411b85a167c31717fb4e
-#: ../../../src/common/doc/functions/node_network.rst:58
-msgid "``bigint`` Unique identifier for the table"
-msgstr "``bigint`` identificador del vértice."
-
-# 4acc7cf0acea40ac852585983687ef11
-#: ../../../src/common/doc/functions/node_network.rst:59
-msgid "``bigint`` Identifier of the edge in original table"
-msgstr "``bigint`` identificador del borde en la tabla original"
-
-# 99bb3c953a7243e1b8232bf4a387c7d7
-#: ../../../src/common/doc/functions/node_network.rst:60
-msgid "``integer`` Segment number of the original edge"
-msgstr "``integer`` número del segmento del borde original"
-
-# 36a3bdb3e58840f78502c1f388619d52
-#: ../../../src/common/doc/functions/node_network.rst:61
-msgid ""
-"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
-"function"
-msgstr "``integer`` columna vacía para utilizarse con la función :ref:`pgr_create_topology` "
-
-# 05092b2ea62744f1910db90fe30ab152
-#: ../../../src/common/doc/functions/node_network.rst:62
-msgid ""
-"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
-"function"
-msgstr "``integer`` Columna vacía para el destino. Para utilizarse con la función :ref:`pgr_create_topology` "
-
-# c2b0caed0dd643e1991dd4e7f0f08e4c
-#: ../../../src/common/doc/functions/node_network.rst:63
-msgid "``geometry`` Geometry column of the noded network"
-msgstr "``geometry`` Columna de geometría de la red discontínua"
-
-# a1f34fff1602404db7f2c2344f99cad1
-#: ../../../src/common/doc/functions/node_network.rst:66
-msgid "History"
-msgstr "Historia"
-
-# b92ecc8b6d9a4eaba9e0a30ce164fed0
-#: ../../../src/common/doc/functions/node_network.rst:67
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# cd2560788805450aa6ffb5ce84c8058e
-#: ../../../src/common/doc/functions/node_network.rst:71
-msgid "Example"
-msgstr "Ejemplo"
-
-# 7e9403e106bb4c0abdd7ed3d1b266079
-#: ../../../src/common/doc/functions/node_network.rst:73
-msgid "Let's create the topology for the data in :ref:`sampledata`"
-msgstr "Vamos a crear la topología de los datos :ref:`sampledata`"
-
-# 5c1a627f182d47efa30c1d4c830862ab
-#: ../../../src/common/doc/functions/node_network.rst:91
-msgid "Now we can analyze the network."
-msgstr "Ahora podemos analizar la red."
-
-# 3eb0c69215284a33ab1505fded4b5a1f
-#: ../../../src/common/doc/functions/node_network.rst:115
-msgid ""
-"The analysis tell us that the network has a gap and and an intersection. We "
-"try to fix the problem using:"
-msgstr "El análisis nos dice que la red tiene un espacio y una intersección. Tratamos de arreglar el problema usando:"
-
-# 8be31305870e491c92ad11d8f8d0a20a
-#: ../../../src/common/doc/functions/node_network.rst:137
-msgid ""
-"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
-"segmented"
-msgstr "Inspeccionar la tabla generada, podemos ver que los bordes 13,14 y 18 ha sido segmentado"
-
-# 8a086446ed8d4b30bf07015ab46ea12d
-#: ../../../src/common/doc/functions/node_network.rst:167
-msgid "We can create the topology of the new network"
-msgstr "Podemos crear la topología de la nueva red "
-
-# 8944601cf6e343c09dce0bf706960a8c
-#: ../../../src/common/doc/functions/node_network.rst:185
-msgid "Now let's analyze the new topology"
-msgstr "Ahora analicemos la nueva topología"
-
-# 8a596982abe141b4a1925e35e1db79a3
-#: ../../../src/common/doc/functions/node_network.rst:211
-msgid "Images"
-msgstr "Imágenes"
-
-# 960ada27fdd34c3dbfb61f10e5feba5f
-#: ../../../src/common/doc/functions/node_network.rst:244
-msgid "Comparing the results"
-msgstr "Comparando los resultados"
-
-# 8bbf24ce7c7e42f5a20e2a8d89e04c36
-#: ../../../src/common/doc/functions/node_network.rst:246
-msgid "Comparing with the Analysis in the original edge_table, we see that."
-msgstr "Comparando con el análisis del edge_table original, vemos que:"
-
-# a3503fcd45dd4095b55e814ab842c829
-#: ../../../src/common/doc/functions/node_network.rst:249
-msgid "Before"
-msgstr "Antes de"
-
-# dfb592f8bd4e4572bbda7700558b3e93
-#: ../../../src/common/doc/functions/node_network.rst:249
-msgid "After"
-msgstr "Después de"
-
-# dde3349cc54e4b94afb37800f2a163f5
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "Table name"
-msgstr "Nombre de la tabla"
-
-# f672bf7770e8488fbe5ea1fbd13d7ac9
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "edge_table"
-msgstr "edge_table"
-
-# fbe3a7f491d4488085062b1fb783b357
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "edge_table_noded"
-msgstr "edge_table_noded"
-
-# adaa5d5eca664ecb9d20315adfd329b4
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "Fields"
-msgstr "Campos"
-
-# ebcf10a104ba4d7eaae546ec13365142
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "All original fields"
-msgstr "Todos los campos originales"
-
-# be45b275890a4aa8a6d624b6f87774d0
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "Has only basic fields to do a topology analysis"
-msgstr "Tiene solamente campos básicos para hacer un análisis de topología"
-
-# 92f3a885bad349d6b5f9ef2345cb905f
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Dead ends"
-msgstr "Callejones sin salida"
-
-# 40a53c9b632b40a6a81f9277c11765b1
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Edges with 1 dead end: 1,6,24"
-msgstr "Los bordes con 1 callejón sin salida: 1,6,24"
-
-# 709cbda3addd4b32b9b267d9ceafdb4f
-#: ../../../src/common/doc/functions/node_network.rst:256
-msgid "Edges with 2 dead ends 17,18"
-msgstr "Bordes con 2 callejones sin salida 17,18"
-
-# d0de891ebf004a148c2bcd4510d81064
-#: ../../../src/common/doc/functions/node_network.rst:258
-msgid ""
-"Edge 17's right node is a dead end because there is no other edge sharing "
-"that same node. (cnt=1)"
-msgstr "Nodo derecho borde de 17 es un callejón sin salida porque no hay ningún otro borde que comparta ese mismo nodo. (cnt = 1)"
-
-# 57918afd2f0445cea564eba267fa8c37
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
-msgstr "Los bordes con 1 callejón sin salida: 1-1, 6-1,14-2, 18-1-17-1 18-2"
-
-# ff6cb3034ea345c89df6d718108fd2bc
-#: ../../../src/common/doc/functions/node_network.rst:262
-msgid "Isolated segments"
-msgstr "Segmentos aislados"
-
-# b958862fe349475ca7c2b38bbb40663b
-#: ../../../src/common/doc/functions/node_network.rst:262
-msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
-msgstr "dos aislados segmentos: 17 y 18 ambos tienen 2 callejones sin salida"
-
-# 8d0bda0399694c6d8677fa928bdab03c
-#: ../../../src/common/doc/functions/node_network.rst:263
-msgid "No Isolated segments"
-msgstr "Segmentos no aislados"
-
-# ac2cf90e5b2a4e75bb94688d6e4ec553
-#: ../../../src/common/doc/functions/node_network.rst:263
-msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
-msgstr "Borde 17 ahora comparte un nodo con bordes 14-1 y 14-2"
-
-# 287c00afc68a4e869f912d7b2ddabefb
-#: ../../../src/common/doc/functions/node_network.rst:264
-msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
-msgstr "Bordes 18-1 y 18-2 compartir un nodo con bordes 13-1 y 13-2"
-
-# bab6a1bf5c10447caa298e9247f3bf2a
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid "Gaps"
-msgstr "Espacios"
-
-# c23ab3c2eff44ddf9ddb0bee4f90197a
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid ""
-"There is a gap between edge 17 and 14 because edge 14 is near to the right "
-"node of edge 17"
-msgstr "Existe un espacio entre 17 y 14 borde borde 14 es cerca del nodo derecho del borde 17"
-
-# 89fabbc2722649c9adf098ea0f9dde1c
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid ""
-"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
-"tolerance value was taken in account"
-msgstr "Borde 14 fue segmentado ahora bordes: 14-1 14-2 17 comparten el mismo nodo, el valor de tolerancia fue tomado en cuenta"
-
-# c04f1c8028d846aeb593cd2389ee45da
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid "Intersections"
-msgstr "Intersecciones"
-
-# db3e94db58d0422bbfbdb83ba509d29e
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid "Edges 13 and 18 were intersecting"
-msgstr "Bordes 13 y 18 años se intersectan"
-
-# 50736f49b59e4f7fa0c66f0e979d80bd
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid ""
-"Edges were segmented, So, now in the interection's point there is a node and"
-" the following edges share it: 13-1 13-2 18-1 18-2"
-msgstr "Bordes fueron segmentados, ahora en el punto de la interesección hay un nodo y los bordes siguientes lo comparten: 13-1 13-2-18-1 18-2"
-
-# f39fa18acedb410fb827e37f226da00b
-#: ../../../src/common/doc/functions/node_network.rst:275
-msgid ""
-"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
-"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
-"with tho following steps:"
-msgstr "Ahora, vamos a incluir los segmentos 13-1, 13-2-14-1, 14-2, 18-1 y 18-2 en nuestra tabla de bordes, copiando además los datos para dir, costo y costo inverso con los siguientes los pasos:"
-
-# 40eb8df52b5649ddb2401cc0c9fe4e7c
-#: ../../../src/common/doc/functions/node_network.rst:277
-msgid ""
-"Add a column old_id into edge_table, this column is going to keep track the "
-"id of the original edge"
-msgstr "Agregar una columna old_id en edge_table, esta columna va a seguir la pista el id del borde original"
-
-# 91eb1db3098b4353be78c9aef064421e
-#: ../../../src/common/doc/functions/node_network.rst:278
-msgid ""
-"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
-msgstr "Introduzca sólo los bordes segmentados, es decir, aquellos cuyo max(sub_id) > 1"
-
-# 2158163aaac748eca84fcd78a42e9b3a
-#: ../../../src/common/doc/functions/node_network.rst:291
-msgid "We recreate the topology:"
-msgstr "Recreamos la topología:"
-
-# 03050935f9bb42a69dfe42e303e8f164
-#: ../../../src/common/doc/functions/node_network.rst:311
-msgid ""
-"To get the same analysis results as the topology of edge_table_noded, we do "
-"the following query:"
-msgstr "Para obtener los mismos resultados de análisis que la topología de edge_table_noded, hacemos la siguiente consulta:"
-
-# bcefb46820504921aa7a3260a988c26d
-#: ../../../src/common/doc/functions/node_network.rst:338
-msgid ""
-"To get the same analysis results as the original edge_table, we do the "
-"following query:"
-msgstr "Para obtener los mismos resultados de análisis como el edge_table original, hacemos la siguiente consulta:"
-
-# 376c4a5e033d42b3ba4e3c3ec018f8e8
-#: ../../../src/common/doc/functions/node_network.rst:363
-msgid ""
-"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
-"is an under pass and there is also a street level juction, and the same "
-"happens with edges 17 and 13."
-msgstr "O podemos analizar todo porque, tal vez edge 18 es un puente, borde 14 es un bajo paso y también hay una juntura nivel calle, y lo mismo ocurre con los bordes 17 y 13."
-
-# 26fbd57b79324bd08ef2c5ee3579831e
-#: ../../../src/common/doc/functions/node_network.rst:390
-msgid "See Also"
-msgstr "Véase también"
-
-# 9df40faa94c64db5b2256f265be6e4d4
-#: ../../../src/common/doc/functions/node_network.rst:392
-msgid ""
-":ref:`topology` for an overview of a topology for routing algorithms. "
-":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
-":ref:`pgr_create_topology` to create a topology based on the geometry. "
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ":ref:`topology` para tener una visión general de una topología de algoritmos de encaminamiento. \n:ref:`pgr_analyze_oneway` para analizar la direccionalidad de los bordes. \n:ref:`pgr_create_topology` para crear una topología basado en la geometría.\n:ref:`pgr_analyze_graph` para analizar los bordes y los nodos de la tabla del borde."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/point_to_id.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/point_to_id.po
deleted file mode 100644
index 80d13de..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/point_to_id.po
+++ /dev/null
@@ -1,105 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-12 15:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 81e0b58a4b464395b3661da85edfaa90
-#: ../../../src/common/doc/functions/point_to_id.rst:13
-msgid "pgr_pointToId - Inserts point into a vertices table"
-msgstr "pgr_pointToId - Inserta puntos una tabla de vértices"
-
-# 9bebf9f4ff2b43a39470ee284698fa33
-#: ../../../src/common/doc/functions/point_to_id.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 8fcf7e9e33b448b982f7111389a7e412
-#: ../../../src/common/doc/functions/point_to_id.rst:22
-msgid "``pgr_pointToId`` — Inserts a point into a temporary vertices table."
-msgstr "``pgr_pointToId`` — Inserta puntos a una tabla de vértices temporal"
-
-# 1ebe04b75e4444e2970f12bf667f07fa
-#: ../../../src/common/doc/functions/point_to_id.rst:26
-msgid ""
-"This function should not be used directly. Use :ref:`pgr_createTopology "
-"<pgr_create_topology>` instead."
-msgstr "Esta función no debe utilizarse directamente. Usar :ref:`pgr_createTopology <pgr_create_topology>` en su lugar."
-
-# 8c3303cb3d73446795471f411d835691
-#: ../../../src/common/doc/functions/point_to_id.rst:30
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# e17d53fea1674ad692e9d65129c04e5d
-#: ../../../src/common/doc/functions/point_to_id.rst:32
-msgid ""
-"Inserts a point into a temporary vertices table, and returns an id of a new "
-"point or an existing point. Tolerance is the minimal distance between "
-"existing points and the new point to create a new point."
-msgstr "Inserta un punto en una tabla temporal de vértices y devuelve el identificador del nuevo punto o del punto existente. La tolerancia es la distancia mínima entre los puntos existentes y el nuevo punto para la creación de ese un nuevo punto."
-
-# 4b067a809bbd4210baf154f274aab5f0
-#: ../../../src/common/doc/functions/point_to_id.rst:40
-msgid "Description"
-msgstr "Descripción"
-
-# de6b0b7b7ae44691a60a709a1245e12c
-#: ../../../src/common/doc/functions/point_to_id.rst:42
-msgid "``geometry`` of the existing point"
-msgstr "``geometry`` del punto existente"
-
-# e05906cd2cd545eead6a6a277d441ea4
-#: ../../../src/common/doc/functions/point_to_id.rst:43
-msgid ""
-"``float8`` snapping tolerance of disconnected edges (in projection unit)"
-msgstr "``float8`` tolerancia ruptura de los bordes desconectados (en la unidad de proyección)"
-
-# 7eb52d95126d47efbf485a1397785c34
-#: ../../../src/common/doc/functions/point_to_id.rst:45
-msgid "Returns point id (``bigint``) of a new or existing point."
-msgstr "Devuelve el identificador del (``bigint``) punto nuevo o existente."
-
-# 78ed162b771d42c1bdadb75ea1806c17
-#: ../../../src/common/doc/functions/point_to_id.rst:49
-msgid "History"
-msgstr "Historia"
-
-# 932b962d76c14946b54db15e77b3c90d
-#: ../../../src/common/doc/functions/point_to_id.rst:50
-msgid "Renamed in version 2.0.0"
-msgstr "Renombrado en la versión 2.0.0"
-
-# c1b2ccd7df20427c88dcf1ebf4b06d82
-#: ../../../src/common/doc/functions/point_to_id.rst:54
-msgid "See Also"
-msgstr "Véase también"
-
-# 4dafa239ff7648c2952a2d3ee70671bf
-#: ../../../src/common/doc/functions/point_to_id.rst:56
-msgid ":ref:`pgr_create_topology`"
-msgstr ":ref:`pgr_create_topology`"
-
-# 8100a50d0b5f4b0cab8d62645becc674
-#: ../../../src/common/doc/functions/point_to_id.rst:57
-msgid ":ref:`topology`"
-msgstr ":ref:`topology`"
-
-# 86ad35d9d3ce44a696b6dc61c466e04e
-#: ../../../src/common/doc/functions/point_to_id.rst:58
-msgid ":ref:`pgr_node_network`"
-msgstr ":ref:`pgr_node_network`"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/quote_ident.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/quote_ident.po
deleted file mode 100644
index d6ca553..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/quote_ident.po
+++ /dev/null
@@ -1,90 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-12 15:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 59a19788e4ba478cb0d046fc07c08179
-#: ../../../src/common/doc/functions/quote_ident.rst:13
-msgid "pgr_quote_ident - Quote table name with Schema Component"
-msgstr "pgr_quote_ident - Agrega comillas al nombre de tabla con componente de esquema"
-
-# 61a86f593d04476692b89157939b8a1e
-#: ../../../src/common/doc/functions/quote_ident.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 7ae4a51cc62143058b829f9317d4b282
-#: ../../../src/common/doc/functions/quote_ident.rst:22
-msgid ""
-"``pgr_quote_ident`` — Quote table name with or without schema component."
-msgstr "``pgr_quote_ident`` — Agrega comillas al nombre de tabla con o sin el componente de esquema"
-
-# d09400822917498ab08038e0453f93a2
-#: ../../../src/common/doc/functions/quote_ident.rst:26
-msgid "Synopsis"
-msgstr "sinopsis"
-
-# 02e534c6d94e4d7fa366eb30dfd82602
-#: ../../../src/common/doc/functions/quote_ident.rst:28
-msgid ""
-"Function to split a string on ``.`` characters and then quote the components"
-" as postgres identifiers and then join them back together with ``.`` "
-"characters. Multile ``.`` will get collapsed into a single ``.``, so "
-"``schema...table`` till get returned as ``schema.\"table\"`` and "
-"``Schema.table`` becomes ``\"Schema\".\"table\"``."
-msgstr "Función que divide una cadena basándose en el caracter ``.`` y luego pone comillas a los componentes como identificadores de postgres, juntándolos con el caracter ``.``. Varios ``.`` serán colapsados a un solo ``.``, por ejemplo ``schema...table`` regresará como ``schema.\"table\"`` y ``Schema.table`` se convierte en ``\"Schema\".\"table\"``."
-
-# 70b63ad008b14b5cbd540f478c596e97
-#: ../../../src/common/doc/functions/quote_ident.rst:37
-msgid "Description"
-msgstr "Descripción"
-
-# 76375d16726e4e8a8c4e02b54bd4b33a
-#: ../../../src/common/doc/functions/quote_ident.rst:39
-msgid "``text`` table name with or without schema component"
-msgstr "``text`` nombre de la tabla con o sin componente de esquema"
-
-# d8548a7bfe3542b28f614894ba6f4b84
-#: ../../../src/common/doc/functions/quote_ident.rst:41
-msgid "Returns table name with or without schema as ``text``."
-msgstr "Devuelve el nombre de la tabla con o sin esquema como ``text``."
-
-# ebc95d6ee53c42f29aa6a18a134d4d20
-#: ../../../src/common/doc/functions/quote_ident.rst:45
-msgid "History"
-msgstr "Historia"
-
-# 6bea52def68e4f05ae56873b8d4f9d1c
-#: ../../../src/common/doc/functions/quote_ident.rst:46
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 21e9cb20b57e4b4681d4e04d5f083d2a
-#: ../../../src/common/doc/functions/quote_ident.rst:50
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 5e3a344a21eb45bfba3e880ae3981a30
-#: ../../../src/common/doc/functions/quote_ident.rst:77
-msgid "See Also"
-msgstr "Véase también"
-
-# b4ee52cbb2b74bb59b22b1802748f96d
-#: ../../../src/common/doc/functions/quote_ident.rst:79
-msgid "[TBD]"
-msgstr "[Por Definirse]"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/version.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/version.po
deleted file mode 100644
index 5e460b8..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/version.po
+++ /dev/null
@@ -1,114 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-12 15:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# dbab41817c8a46459e8f33cf684a7afb
-#: ../../../src/common/doc/functions/version.rst:13
-msgid "pgr_version - Get version information"
-msgstr "pgr_version - Obtener información sobre la versión"
-
-# 19cd8fb76f754d898f75659f97628007
-#: ../../../src/common/doc/functions/version.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 5531935ef2384b709c4f1d81ddcdf15c
-#: ../../../src/common/doc/functions/version.rst:22
-msgid "``pgr_version`` — Query for pgRouting version information."
-msgstr "``pgr_version`` — consulta de información sobre la versión de pgRouting."
-
-# 52175fb13b944970989d3ef4a23a7b66
-#: ../../../src/common/doc/functions/version.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 14783f07374f4ccdaa53515b95c17943
-#: ../../../src/common/doc/functions/version.rst:28
-msgid "Returns a table with pgRouting version information."
-msgstr "Devuelve una tabla con la información sobre la versión de pgRouting."
-
-# 6d5995ab278d476d80f54ab15b8af686
-#: ../../../src/common/doc/functions/version.rst:36
-msgid "Description"
-msgstr "Descripción"
-
-# b4baa0103a55431abaa586f16230af8c
-#: ../../../src/common/doc/functions/version.rst:38
-msgid "Returns a table with:"
-msgstr "Devuelve una tabla con:"
-
-# 7d8a75cf72b840b39e0eea6140a5839d
-#: ../../../src/common/doc/functions/version.rst:40
-msgid "``varchar`` pgRouting version"
-msgstr "``varchar`` versión de pgRouting "
-
-# 2af5168bce0a4b03bf2b097d3099c850
-#: ../../../src/common/doc/functions/version.rst:41
-msgid "``varchar`` Git tag of pgRouting build"
-msgstr "``varchar`` La etiqueta de la construcción en Git de pgRouting"
-
-# b4444b51e41549b399751bcba194a8a8
-#: ../../../src/common/doc/functions/version.rst:42
-msgid "``varchar`` Git hash of pgRouting build"
-msgstr "``varchar`` El Hash de la construcción en Git de pgRouting"
-
-# 6737b5df55e94bb185f64d0de3389f3e
-#: ../../../src/common/doc/functions/version.rst:43
-msgid "``varchar`` Git branch of pgRouting build"
-msgstr "``varchar`` La ramificación de la construcción en Git de pgRouting"
-
-# e5b735559b2949b09899e982d6f2ecf3
-#: ../../../src/common/doc/functions/version.rst:44
-msgid "``varchar`` Boost version"
-msgstr "``varchar`` versión de Boost"
-
-# 9042ea468aba4c4490b7124bbf14aacb
-#: ../../../src/common/doc/functions/version.rst:48
-msgid "History"
-msgstr "Historia"
-
-# 3829660b5485491083028df2cb267d03
-#: ../../../src/common/doc/functions/version.rst:49
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 8638cdf8594940cbad096c9ac3d261ad
-#: ../../../src/common/doc/functions/version.rst:53
-msgid "Examples"
-msgstr "Ejemplos"
-
-# d80877f2810741ada5737305d484de11
-#: ../../../src/common/doc/functions/version.rst:55
-msgid "Query for full version string"
-msgstr "Consulta para la cadena con la información completa de la versión."
-
-# 2ff90cee91e644fab554650cc24bd3bf
-#: ../../../src/common/doc/functions/version.rst:67
-msgid "Query for ``version`` and ``boost`` attribute"
-msgstr "Consulta para los atributos ``version`` y ``boost``"
-
-# 6c3a1c332dc54ea2a01d81c5f5f9dcc1
-#: ../../../src/common/doc/functions/version.rst:80
-msgid "See Also"
-msgstr "Véase también"
-
-# 1eeb4f68d3c342dbbadade6c52b87baf
-#: ../../../src/common/doc/functions/version.rst:82
-msgid ":ref:`pgr_versionless`"
-msgstr ":ref:`pgr_versionless`"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/versionless.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/versionless.po
deleted file mode 100644
index 0ad2907..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/functions/versionless.po
+++ /dev/null
@@ -1,86 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-12 15:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f15b37fde8e64b508893630a0291dc6a
-#: ../../../src/common/doc/functions/versionless.rst:13
-msgid "pgr_versionless - Compare version numbers"
-msgstr "pgr_versionless - Comparar números de versión"
-
-# cd0dcc3f3489468ab55c89598715d895
-#: ../../../src/common/doc/functions/versionless.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# e2f0eb00eca142c8bc7d71b317604c7e
-#: ../../../src/common/doc/functions/versionless.rst:22
-msgid "``pgr_version`` — Compare two version numbers and return if smaller."
-msgstr "``pgr_versionless`` — compara dos números de versión."
-
-# d85cf15bf8894e158945855624a422f5
-#: ../../../src/common/doc/functions/versionless.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# ed2cb6f5c03645b3ab2a296d062c1eb9
-#: ../../../src/common/doc/functions/versionless.rst:28
-msgid ""
-"Returns ``true`` if the first version number is smaller than the second "
-"version number. Otherwise returns ``false``."
-msgstr "Devuelve ``true`` si el primer número de versión es más pequeño que el segundo número de la versión. De lo contrario, devuelve ``false``."
-
-# a11f675500e140ae997cdb4f167d2da4
-#: ../../../src/common/doc/functions/versionless.rst:36
-msgid "Description"
-msgstr "Descripción"
-
-# 7d1ac8fa4fce4362965d8587a3cd7099
-#: ../../../src/common/doc/functions/versionless.rst:38
-msgid "``text`` first version number"
-msgstr "``text`` primer número de versión"
-
-# 1d8a5a36a0fa4da19892193a11578a08
-#: ../../../src/common/doc/functions/versionless.rst:39
-msgid "``text`` second version number"
-msgstr "``text`` segundo número de versión"
-
-# a32770a22cf849cb96bd78825f332825
-#: ../../../src/common/doc/functions/versionless.rst:43
-msgid "History"
-msgstr "Historia"
-
-# 14ef379da17a48389cb627817c173253
-#: ../../../src/common/doc/functions/versionless.rst:44
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 7a3d2290bca342b79b4105e7aee330b0
-#: ../../../src/common/doc/functions/versionless.rst:48
-msgid "Examples"
-msgstr "Ejemplos"
-
-# ca2f13a6ce4444258be7f46d40c8bd2a
-#: ../../../src/common/doc/functions/versionless.rst:61
-msgid "See Also"
-msgstr "Véase también"
-
-# a621baf581ff4ba8b4b03d3481d5a660
-#: ../../../src/common/doc/functions/versionless.rst:63
-msgid ":ref:`pgr_version`"
-msgstr ":ref:`pgr_version`"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/index.po
deleted file mode 100644
index ebd7cbf..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/index.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-11 16:35+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 78df021b36a0428cab8a950fb0bda859
-#: ../../../src/common/doc/index.rst:13
-msgid "Common Functions"
-msgstr "Funciones comunes"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/legacy.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/legacy.po
deleted file mode 100644
index 1270c34..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/legacy.po
+++ /dev/null
@@ -1,67 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-10 15:50+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 7e98fba52c6f402c811f8c50dd811f39
-#: ../../../src/common/doc/legacy.rst:13
-msgid "Legacy Functions"
-msgstr "Funciones heredadas"
-
-# 18b051582e6742be8a3737391d4676ad
-#: ../../../src/common/doc/legacy.rst:15
-msgid ""
-"pgRouting 2.0 release has total restructured the function naming and "
-"obsoleted many of the functions that were available in the 1.x releases. "
-"While we realize that this may inconvenience our existing users, we felt "
-"this was needed for the long term viability of the project to be more "
-"response to our users and to be able to add new functionality and test "
-"existing functionality."
-msgstr "En la versión 2.0 de pgRouting se hizo una reestructuración total en la nomenclatura de las funciones y se han sustituido muchas funciones que estaban disponibles en las versiones 1.x. Mientras esto puede ser un inconveniente para nuestros usuarios existentes, pensamos que esto era necesario para la viabilidad a largo plazo del proyecto, mejorar la respuesta a más de nuestros usuarios, poder añadir nuevas funcionalidades y probar la funcionalidad existente."
-
-# cf6d9479ec0b4eb6b0607f3302df5dca
-#: ../../../src/common/doc/legacy.rst:17
-msgid ""
-"We have made a minimal effort to save most of these function and distribute "
-"with the release in a file ``pgrouting_legacy.sql`` that is not part of the "
-"pgrouting extension and is not supported. If you can use these functions "
-"that is great. We have not tested any of these functions so if you find "
-"issues and want to post a pull request or a patch to help other users that "
-"is fine, but it is likely this file will be removed in a future release and "
-"we strongly recommend that you convert your existing code to use the new "
-"documented and supported functions."
-msgstr "Se hizo mínimo esfuerzo para salvar a la mayoría de estas funciones y distribuir con la versión un archivo ``pgrouting_legacy.sql`` que no es parte de la extensión pgRouting y no están siendo apoyadas. Si puede utilizar estas funciones, que bueno. No hemos probado ninguna de estas funciones, entonces si encuentra problemas y publicar un parche para ayudar a otros usuarios, es correcto pero lo más probable es que ese archivo sea eliminado en versiones futuras, por lo que le re [...]
-
-# 82da52e7fec44c24956e90636a8a9355
-#: ../../../src/common/doc/legacy.rst:19
-msgid ""
-"The follow is a list of TYPEs, CASTs and FUNCTION included in the "
-"``pgrouting_legacy.sql`` file. The list is provide as a convenience but "
-"these functions are deprecated, not supported, and probably will need some "
-"changes to get them to work."
-msgstr "La siguiente es una lista de: tipos, modelos y funciones incluidas en el archivo ``pgrouting_legacy.sql``. La lista es para proporcionarle comodidad, pero estas funciones son obsoletas, no apoyadas y probablemente tendrá que hacer cambios para hacerlas trabajar."
-
-# 7ae0da52fff04aaaaec8fd9b91d3b7b0
-#: ../../../src/common/doc/legacy.rst:23
-msgid "TYPEs & CASTs"
-msgstr "TYPEs & CASTs"
-
-# 8e73926e03514dff813a00fbf7d202e0
-#: ../../../src/common/doc/legacy.rst:34
-msgid "FUNCTIONs"
-msgstr "FUNCTIONs"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/types.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/types.po
deleted file mode 100644
index cff67b9..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/types.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-10 18:28+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# a647839f49f94a9997479367dc35d13f
-#: ../../../src/common/doc/types.rst:13
-msgid "Custom Types"
-msgstr "Tipos Personalizados"
-
-# f00f6611879f4afd961586e955284a41
-#: ../../../src/common/doc/types.rst:15
-msgid ""
-"The following are commonly used data types for some of the pgRouting "
-"functions."
-msgstr "Los siguientes tipos de datos se utilizan comúnmente en algunas de las funciones pgRouting."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/types/cost_result.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/types/cost_result.po
deleted file mode 100644
index 52a0cb1..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/types/cost_result.po
+++ /dev/null
@@ -1,115 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 16:54+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 575fa6fd8a1842c68aba9825683b178d
-#: ../../../src/common/doc/types/cost_result.rst:13
-msgid "pgr_costResult[]"
-msgstr "pgr_costResult[]"
-
-# 3b55f2f3cdc24995bd590e235062c389
-# 1d4bd884218342d6a7ca7ae79998c3a0
-#: ../../../src/common/doc/types/cost_result.rst:20
-#: ../../../src/common/doc/types/cost_result.rst:54
-msgid "Name"
-msgstr "Nombre"
-
-# 691ba9180a9f4854922720a03e1db3e0
-#: ../../../src/common/doc/types/cost_result.rst:22
-msgid ""
-"``pgr_costResult[]`` — A set of records to describe a path result with cost "
-"attribute."
-msgstr "``pgr_costResult[]`` — un conjunto de registros para describir un recorrido con el atributo de costo."
-
-# 4bc0f98e83fc482daf119d02f3ab4386
-# b80ec90ac4244e82a1aa8f7e58b78921
-#: ../../../src/common/doc/types/cost_result.rst:26
-#: ../../../src/common/doc/types/cost_result.rst:60
-msgid "Description"
-msgstr "Descripción"
-
-# 023a9b6d62474dbdbb4d587b192099c4
-# 8e1c61381d6f47909ea0830da8a4740c
-#: ../../../src/common/doc/types/cost_result.rst:38
-#: ../../../src/common/doc/types/cost_result.rst:73
-msgid "sequential ID indicating the path order"
-msgstr "identificador secuencial, indicando el orden del recorrido"
-
-# 98a23fe6530d43418558cdd8be417a26
-# 8c3701ae807d4738b8bbe72260f4c476
-#: ../../../src/common/doc/types/cost_result.rst:39
-#: ../../../src/common/doc/types/cost_result.rst:75
-msgid "generic name, to be specified by the function, typically the node id"
-msgstr "nombre genérico, a ser especificado por la función, típicamente el identificador del nodo"
-
-# f4abd64c5dea4cda97490766f42a395c
-# 1be5c24bdc684ed1a182e9e2b0ab2343
-#: ../../../src/common/doc/types/cost_result.rst:40
-#: ../../../src/common/doc/types/cost_result.rst:76
-msgid "generic name, to be specified by the function, typically the edge id"
-msgstr "nombre genérico, a ser especificado por la función, típicamente el identificador del borde"
-
-# 0b4a362ff97d481cafd2c0328ad1f715
-# 8e11a66126844a1682d4e4c84166794d
-#: ../../../src/common/doc/types/cost_result.rst:41
-#: ../../../src/common/doc/types/cost_result.rst:77
-msgid "cost attribute"
-msgstr "atributo de costo"
-
-# 7e74e200db1b40e1a5231037b2e9b993
-#: ../../../src/common/doc/types/cost_result.rst:47
-msgid "pgr_costResult3[] - Multiple Path Results with Cost"
-msgstr "pgr_costResult3[] - resultados múltiples de recorridos con costo"
-
-# 307f0248b6c54a71bfc205bb2270b5ce
-#: ../../../src/common/doc/types/cost_result.rst:56
-msgid ""
-"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
-" attribute."
-msgstr "``pgr_costResult3[]`` — un conjunto de registros para describir varios resultados de recorridos con el atributo de costo."
-
-# 13465c99a9fb49ebab1d1852e6c61aab
-#: ../../../src/common/doc/types/cost_result.rst:74
-msgid "generic name, to be specified by the function, typically the path id"
-msgstr "nombre genérico, a ser especificado por la función, típicamente el identificador del recorrido"
-
-# ac46c731c85d4d358a763bc1268ef510
-#: ../../../src/common/doc/types/cost_result.rst:81
-msgid "History"
-msgstr "Historia"
-
-# 6bc9329d908f474bbcd380272dae671d
-#: ../../../src/common/doc/types/cost_result.rst:82
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 7e5f0c1b76c349ce940c19b2312cc2ec
-#: ../../../src/common/doc/types/cost_result.rst:83
-msgid "Replaces ``path_result``"
-msgstr "Sustituye a ``path_result``"
-
-# 28df9e1fa19b49f9bb57710715c52fcb
-#: ../../../src/common/doc/types/cost_result.rst:87
-msgid "See Also"
-msgstr "Véase también"
-
-# 21432e8842c1490ba3a7825f4b4e57bb
-#: ../../../src/common/doc/types/cost_result.rst:89
-msgid ":ref:`introduction`"
-msgstr ":ref:`Introducción <introduction>`"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/types/geom_result.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/types/geom_result.po
deleted file mode 100644
index 9998402..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/types/geom_result.po
+++ /dev/null
@@ -1,83 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 16:53+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# baeae55a13de4766b42a9f43c6f8caaf
-#: ../../../src/common/doc/types/geom_result.rst:13
-msgid "pgr_geomResult[]"
-msgstr "pgr_geomResult[]"
-
-# 4fc9eadff47c4a24baa096c8c667c469
-#: ../../../src/common/doc/types/geom_result.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 03beb686e4ec49e08cd6f1f0f5e03339
-#: ../../../src/common/doc/types/geom_result.rst:22
-msgid ""
-"``pgr_geomResult[]`` — A set of records to describe a path result with "
-"geometry attribute."
-msgstr "``pgr_geomResult[]`` — un conjunto de registros para describir un recorrido que incluye el atributo de la geometría."
-
-# fd9c91caacdf4a2fb1c186c45e1d5525
-#: ../../../src/common/doc/types/geom_result.rst:26
-msgid "Description"
-msgstr "Descripción"
-
-# c00f6b668c744c7d822d2d2155e76b7a
-#: ../../../src/common/doc/types/geom_result.rst:38
-msgid "sequential ID indicating the path order"
-msgstr "identificador secuencial, indicando el orden del recorrido"
-
-# 5782feff61f84fd4b3130a80b1abd7a9
-# 69c0e9623b4d41669a2601517d1563d2
-#: ../../../src/common/doc/types/geom_result.rst:39
-#: ../../../src/common/doc/types/geom_result.rst:40
-msgid "generic name, to be specified by the function"
-msgstr "nombre genérico, a ser especificado por la función"
-
-# c837b15d4460475996b2f7bac8b14076
-#: ../../../src/common/doc/types/geom_result.rst:41
-msgid "geometry attribute"
-msgstr "atributo de geometría"
-
-# cf5503504b26427b800efddbc1098b64
-#: ../../../src/common/doc/types/geom_result.rst:45
-msgid "History"
-msgstr "Historia"
-
-# 4e474c2cf69748c680853e0505ce4773
-#: ../../../src/common/doc/types/geom_result.rst:46
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# f4d42016a50f43438838421dfb361835
-#: ../../../src/common/doc/types/geom_result.rst:47
-msgid "Replaces ``geoms``"
-msgstr "Sustituye a ``geoms``"
-
-# 0075486d62f84298b41797b5789d377a
-#: ../../../src/common/doc/types/geom_result.rst:51
-msgid "See Also"
-msgstr "Véase también"
-
-# 5a190ec8601a4a919a058395614d7db5
-#: ../../../src/common/doc/types/geom_result.rst:53
-msgid ":ref:`introduction`"
-msgstr ":ref:`Introducción <introduction>`"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/types/index.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/types/index.po
deleted file mode 100644
index 23799cf..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/types/index.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 22:34\n"
-"PO-Revision-Date: 2013-09-24 03:50+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 31af4730c6e74131952f077a8cec876f
-#: ../../../src/common/doc/types/index.rst:13
-msgid "pgRouting Data Types"
-msgstr "Tipos de datos de pgRouting "
-
-# da2f6a8846b5476ea16852a5dc229cc4
-#: ../../../src/common/doc/types/index.rst:15
-msgid ""
-"The following are commonly used data types for some of the pgRouting "
-"functions."
-msgstr "Los siguientes tipos de datos se utilizan comúnmente en algunas de las funciones pgRouting."
-
-# a9b85e2084f8478fa35c1379a650108b
-#: ../../../src/common/doc/types/index.rst:17
-msgid ""
-":ref:`type_cost_result` - A set of records to describe a path result with "
-"cost attribute."
-msgstr ":ref:`type_cost_result` — un conjunto de registros para describir un resultado de camino con el atributo de costo."
-
-# b982ceede0fd48afa63a086c6978fd2e
-#: ../../../src/common/doc/types/index.rst:18
-msgid ""
-":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe "
-"a path result with cost attribute."
-msgstr ":ref:`pgr_costResult3[] <type_cost_result3>` — Un conjunto de registros para describir un resultado de ruta con el atributo de costo."
-
-# 913c41ce7bb44b80869c181df3560f3d
-#: ../../../src/common/doc/types/index.rst:19
-msgid ""
-":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a "
-"path result with geometry attribute."
-msgstr ":ref:`pgr_geomResult <type_geom_result>` — un conjunto de registros para describir el resultado de un camino que incluye el atributo de la geometría."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/end_point.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/end_point.po
deleted file mode 100644
index 98d5b61..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/end_point.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 16:13+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 608ee0c4d0644bdba6e3dc233e2143a7
-#: ../../../src/common/doc/utilities/end_point.rst:13
-msgid "pgr_endPoint"
-msgstr "pgr_endPoint"
-
-# 8518d0c13dcc4cb9b4a6eb5bd83e8d6e
-#: ../../../src/common/doc/utilities/end_point.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 3660b4422cfa4aaea41cf4b4e91164ee
-#: ../../../src/common/doc/utilities/end_point.rst:22
-msgid ""
-"``pgr_endPoint`` — Returns an end point of a (multi)linestring geometry."
-msgstr "``pgr_endPoint`` — devuelve un punto final de una geometría (multi)linestring."
-
-# 549e2d553af74e0bba5a2833eafa7983
-#: ../../../src/common/doc/utilities/end_point.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr "Esta función es para ayudar a los desarrolladores"
-
-# d2cdf35b795f4fcfbfc9c84a2c36387b
-#: ../../../src/common/doc/utilities/end_point.rst:28
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 180a778d767b496986ed060d48f0de04
-# 14f173f6f91f488b940887c452049824
-#: ../../../src/common/doc/utilities/end_point.rst:30
-#: ../../../src/common/doc/utilities/end_point.rst:44
-msgid ""
-"Returns the geometry of the end point of the first LINESTRING of ``geom``."
-msgstr "Devuelve la geometría del punto final del primer LINESTRING de ``geom``."
-
-# c8cfaed54e00467bba188637f3d25e04
-#: ../../../src/common/doc/utilities/end_point.rst:38
-msgid "Description"
-msgstr "Descripción"
-
-# b7a5d14354644a79aaa532e44543b0f1
-#: ../../../src/common/doc/utilities/end_point.rst:41
-msgid "Parameters"
-msgstr "Parámetros"
-
-# 01b0d917d9534f74885248e0be35ca6d
-#: ../../../src/common/doc/utilities/end_point.rst:42
-msgid "``geometry`` Geometry of a MULTILINESTRING or LINESTRING."
-msgstr "``geometry`` geometría de una MULTILINESTRING o LINESTRING."
-
-# a1951e42b2164de2b73d7ecde1bc5252
-#: ../../../src/common/doc/utilities/end_point.rst:49
-msgid "History"
-msgstr "Historia"
-
-# fd2421f2ca2945c4ad59395a0fa9cb90
-#: ../../../src/common/doc/utilities/end_point.rst:50
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 031cd30124a9491e80778dce1c6d77ab
-#: ../../../src/common/doc/utilities/end_point.rst:55
-msgid "See Also"
-msgstr "Véase también"
-
-# f17f7b08a35d44098381d1c280756f49
-#: ../../../src/common/doc/utilities/end_point.rst:57
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ":ref:`developer` para el diseño del árbol del proyecto."
-
-# 68b294268f37462fb09eb605267d0686
-#: ../../../src/common/doc/utilities/end_point.rst:58
-msgid ":ref:`pgr_start_point` to get the start point of a (multi)linestring."
-msgstr ":ref:`pgr_start_Point` para obtener el punto inicial de un (multi)linestring."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/get_column_name.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/get_column_name.po
deleted file mode 100644
index cb484b6..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/get_column_name.po
+++ /dev/null
@@ -1,141 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 15:57+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f62e871185dd40c2a9e8b7cec3ea97b9
-#: ../../../src/common/doc/utilities/get_column_name.rst:13
-msgid "pgr_getColumnName"
-msgstr "pgr_getColumnName"
-
-# 0d4e05a54bf944d2a712bcee9d7897c4
-#: ../../../src/common/doc/utilities/get_column_name.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# c1e5f5dde2804946bee1804968cb4efc
-#: ../../../src/common/doc/utilities/get_column_name.rst:22
-msgid ""
-"``pgr_getColumnName`` — Retrieves the name of the column as is stored in the"
-" postgres administration tables."
-msgstr "``pgr_getColumnName`` — recupera el nombre de la columna tal como se almacena en las tablas de la administración de postgres."
-
-# 89a0f81382ca4dd4807320cd56be21bb
-#: ../../../src/common/doc/utilities/get_column_name.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr "Esta función es para ayudar a los desarrolladores"
-
-# a6025211521149deb893b8e059385c6b
-#: ../../../src/common/doc/utilities/get_column_name.rst:27
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# e6dc3534289949caa3eebca95dbe364e
-#: ../../../src/common/doc/utilities/get_column_name.rst:29
-msgid "Returns a ``text`` contining the registered name of the column."
-msgstr "Devuelve un '`text`` que contiene el nombre registrado de la columna."
-
-# ef6704e3345e4be4a51fd144fbfc5d82
-#: ../../../src/common/doc/utilities/get_column_name.rst:37
-msgid "Description"
-msgstr "Descripción"
-
-# de7acd82e1244d8ba20da3bae0d95f22
-#: ../../../src/common/doc/utilities/get_column_name.rst:39
-msgid "Parameters"
-msgstr "Parámetros"
-
-# 0b9f663d5b0e4f18a4bda0b996e55470
-#: ../../../src/common/doc/utilities/get_column_name.rst:41
-msgid "``text`` table name with or without schema component."
-msgstr "``text`` nombre de la tabla con o sin componente de esquema"
-
-# 34e350e22e5a495aa831ca55d080899a
-#: ../../../src/common/doc/utilities/get_column_name.rst:42
-msgid "``text`` column name to be retrived."
-msgstr "``text`` nombre de la columna que va a extraerse"
-
-# e495d55a75424870ba29867eb248cf4d
-#: ../../../src/common/doc/utilities/get_column_name.rst:44
-msgid "Returns"
-msgstr "Regresa"
-
-# c1394725601143b081216fe27794fbe6
-#: ../../../src/common/doc/utilities/get_column_name.rst:46
-msgid "``text`` containing the registered name of the column."
-msgstr "``text`` que contiene el nombre registrado de la columna."
-
-# ec0c3eb922f44a818f1724026f43c7da
-#: ../../../src/common/doc/utilities/get_column_name.rst:47
-msgid "``NULL`` when :"
-msgstr "``NULL`` cuando:"
-
-# d3cb598bdcdf4349837225c6e9efa756
-#: ../../../src/common/doc/utilities/get_column_name.rst:49
-msgid "The table “tab” is not found or"
-msgstr "No se encuentra en la tabla \"tab\" "
-
-# 6d27bb1e405343a893db971fe1cee8b7
-#: ../../../src/common/doc/utilities/get_column_name.rst:50
-msgid ""
-"Column “col” is not found in table “tab” in the postgres administration "
-"tables."
-msgstr "La columna \"Col\" no se encuentra en la tabla \"tab\" en las tablas de la administración de postgres."
-
-# f56b94dfc7574beba7ee2b42199e9c27
-#: ../../../src/common/doc/utilities/get_column_name.rst:53
-msgid "History"
-msgstr "Historia"
-
-# 57eede78e2024b059d7e09968747a720
-#: ../../../src/common/doc/utilities/get_column_name.rst:54
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# efbc409d37be4e30a8edf913a4d89664
-#: ../../../src/common/doc/utilities/get_column_name.rst:58
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 741d466c28fb47feb64d7ef7593275e7
-#: ../../../src/common/doc/utilities/get_column_name.rst:76
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "La consulta usa la red de ejemplo :ref:`sampledata`"
-
-# acb3053630ab458d93853aa31aad9ade
-#: ../../../src/common/doc/utilities/get_column_name.rst:80
-msgid "See Also"
-msgstr "Véase también"
-
-# e54ecee9b6744650b79cb07b0c0274dd
-#: ../../../src/common/doc/utilities/get_column_name.rst:82
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ":ref:`developer` para el diseño del árbol del proyecto."
-
-# 9143b02cdd264a818a9edda19a0e7ce7
-#: ../../../src/common/doc/utilities/get_column_name.rst:83
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column."
-msgstr ":ref:`pgr_is_column_in_table` para revisar sólo la existencia de la columna."
-
-# 11630fb324eb4a80bdfffb972707478d
-#: ../../../src/common/doc/utilities/get_column_name.rst:84
-msgid ""
-":ref:`pgr_get_table_name` to retrieve the name of the table as is stored in "
-"the postgres administration tables."
-msgstr ":ref:`pgr_get_table_name` para recuperar el nombre de la tabla que se almacena en las tablas de la administración de postgres."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/get_table_name.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/get_table_name.po
deleted file mode 100644
index 4c67970..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/get_table_name.po
+++ /dev/null
@@ -1,152 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 16:06+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 95f0c2d0bb88448c8b72400e83c9f6f4
-#: ../../../src/common/doc/utilities/get_table_name.rst:13
-msgid "pgr_getTableName"
-msgstr "pgr_getTableName"
-
-# 68a49ae29d0e4036bda025f169e4f3f7
-#: ../../../src/common/doc/utilities/get_table_name.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 8f9480f595c9426f945620d8b5977b86
-#: ../../../src/common/doc/utilities/get_table_name.rst:22
-msgid ""
-"``pgr_getTableName`` — Retrieves the name of the column as is stored in the "
-"postgres administration tables."
-msgstr "``pgr_getTableName`` — recupera el nombre de la columna tal cual se almacena en las tablas de la administración de postgres."
-
-# c06c3bd3649a4e27af6f710e189ea071
-#: ../../../src/common/doc/utilities/get_table_name.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr "Esta función es para ayudar a los desarrolladores"
-
-# 3285b01b587a4aac94ab9ee03a474ef7
-#: ../../../src/common/doc/utilities/get_table_name.rst:27
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# ecd7065df5e047ef8415f13acf653201
-#: ../../../src/common/doc/utilities/get_table_name.rst:29
-msgid ""
-"Returns a record containing the registered names of the table and of the "
-"schema it belongs to."
-msgstr "Devuelve un registro que contiene los nombres registrados de la tabla y del esquema al que pertenece."
-
-# 9912cc30113340efa3e5e3ac408d3a3c
-#: ../../../src/common/doc/utilities/get_table_name.rst:37
-msgid "Description"
-msgstr "Descripción"
-
-# 787a57d13f8a48a289b545e5c5fc50d5
-#: ../../../src/common/doc/utilities/get_table_name.rst:39
-msgid "Parameters"
-msgstr "Parámetros"
-
-# 3c523e72ddd74a10b3defc135e0a1fa1
-#: ../../../src/common/doc/utilities/get_table_name.rst:41
-msgid "``text`` table name with or without schema component."
-msgstr "``text`` nombre de la tabla con o sin componente de esquema"
-
-# bc51a86638e44b1b8d435a7fcec971e1
-#: ../../../src/common/doc/utilities/get_table_name.rst:43
-msgid "Returns"
-msgstr "Regresa"
-
-# a3da192f153341e484e7a1c973e77570
-#: ../../../src/common/doc/utilities/get_table_name.rst:47
-msgid "``text`` containing the registered name of the schema of table \"tab\"."
-msgstr "``text`` que contiene el nombre registrado del esquema de la tabla \"tab\"."
-
-# 77471087a83049e4924411216422cd8f
-#: ../../../src/common/doc/utilities/get_table_name.rst:49
-msgid "when the schema was not provided in \"tab\" the current schema is used."
-msgstr "cuando el esquema no proporciono en \"tab\", se usa el esquema actual."
-
-# f253b42e28a3413abcbeebd5a25fbb53
-# a25f490ebce344728e53d37057ded897
-#: ../../../src/common/doc/utilities/get_table_name.rst:51
-#: ../../../src/common/doc/utilities/get_table_name.rst:58
-msgid "``NULL`` when :"
-msgstr "``NULL`` cuando:"
-
-# ab062cff517a43b6b5a40e1090073265
-# 49a4ab8abced47adaf11ea7b321f06b9
-#: ../../../src/common/doc/utilities/get_table_name.rst:53
-#: ../../../src/common/doc/utilities/get_table_name.rst:60
-msgid "The schema is not found in the postgres administration tables."
-msgstr "El esquema no se encuentróen las tablas de la administración de postgres."
-
-# 19d2a93e6d45419d89974c286d1347f3
-#: ../../../src/common/doc/utilities/get_table_name.rst:57
-msgid "``text`` containing the registered name of the table \"tab\"."
-msgstr "``text`` que contiene el nombre registrado de la tabla \"tab\"."
-
-# 7c7d80132bbc4693a79fbb1bb32a804d
-#: ../../../src/common/doc/utilities/get_table_name.rst:61
-msgid ""
-"The table \"tab\" is not registered under the schema ``sname`` in the "
-"postgres administration tables"
-msgstr "La tabla \"tab\" no está registrada bajo el esquema de ``sname`` en las tablas de la administración de postgres"
-
-# fe048e6d68984dfb9e8d91f72f99f65a
-#: ../../../src/common/doc/utilities/get_table_name.rst:65
-msgid "History"
-msgstr "Historia"
-
-# 0ac3887a0f0642ca8bf6c6fa12f497bb
-#: ../../../src/common/doc/utilities/get_table_name.rst:66
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# fbd75b0146ff4f9595156794c4ebd6fd
-#: ../../../src/common/doc/utilities/get_table_name.rst:70
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 3792394a3a344c4493db40c2d04b5e2d
-#: ../../../src/common/doc/utilities/get_table_name.rst:95
-msgid "The examples use the :ref:`sampledata` network."
-msgstr "Los ejemplos utilizan el: ref: 'sampledata'."
-
-# 10229dc5fd6545bdb875c9885f090618
-#: ../../../src/common/doc/utilities/get_table_name.rst:99
-msgid "See Also"
-msgstr "Véase también"
-
-# c24e1b3593b44343b2e4c86e06b4cbb2
-#: ../../../src/common/doc/utilities/get_table_name.rst:101
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ":ref:`developer` para el diseño del árbol del proyecto."
-
-# 830f93a843b145ebb35db5cf5de99e00
-#: ../../../src/common/doc/utilities/get_table_name.rst:102
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column."
-msgstr ":ref:`pgr_is_column_in_table` para revisar sólo la existencia de la columna."
-
-# e731438ed94a48a0b26ea5223b564393
-#: ../../../src/common/doc/utilities/get_table_name.rst:103
-msgid ""
-":ref:`pgr_get_table_name` to retrieve the name of the table as is stored in "
-"the postgres administration tables."
-msgstr ":ref:`pgr_get_table_name` para recuperar el nombre de la tabla que se almacena en las tablas de la administración de postgres."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/index.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/index.po
deleted file mode 100644
index a8ac0a6..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/index.po
+++ /dev/null
@@ -1,90 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# e262455eaf304db884c939d3a27905d7
-#: ../../../src/common/doc/utilities/index.rst:13
-msgid "Developers's Functions"
-msgstr "Funciones para Desarrolladores"
-
-# 6ebf2b3b104d4fababace44710277924
-#: ../../../src/common/doc/utilities/index.rst:15
-msgid "Functions to help you develop a wrapper or a recipe"
-msgstr "Funciones para ayudarle a desarrollar un contenedor o una receta"
-
-# 0be37c4f2fa144fbb3b4a976a946317a
-#: ../../../src/common/doc/utilities/index.rst:17
-msgid ""
-":ref:`pgr_get_column_name` - to get the name of the column as is stored in "
-"the postgres administration tables."
-msgstr ":ref:`pgr_get_column_name` para obtener el nombre de la columna como se almacena en las tablas de la administración de postgres."
-
-# 9f513d4551d54509ac679e98aff1a731
-#: ../../../src/common/doc/utilities/index.rst:18
-msgid ""
-":ref:`pgr_get_table_name` - to retrieve the name of the table as is stored "
-"in the postgres administration tables."
-msgstr ":ref:`pgr_get_table_name` para obtener el nombre de la tabla tal cual se almacena en las tablas de la administración de postgres."
-
-# 20e81f559b1f4f56af56463e06b47d70
-#: ../../../src/common/doc/utilities/index.rst:19
-msgid ":ref:`pgr_is_column_indexed` - to check if the column is indexed."
-msgstr ":ref:`pgr_is_column_indexed` para comprobar si la columna está indexada."
-
-# d82d4278e4b14798898589b62a07a6fd
-#: ../../../src/common/doc/utilities/index.rst:20
-msgid ""
-":ref:`pgr_is_column_in_table` - to check only for the existance of the "
-"column."
-msgstr ":ref:`pgr_is_column_in_table` para revisar sólo la existencia de la columna."
-
-# 166c0d8f61a54958932722413c5c1a96
-#: ../../../src/common/doc/utilities/index.rst:21
-msgid ""
-":ref:`pgr_point_to_id` -to insert/get the id of the inserted point in a "
-"vertices table."
-msgstr ":ref:`pgr_point_to_id` - para insertar o conseguir la identificación del punto insertado en una tabla de vértices."
-
-# 81426148e40b4e9fa21b940bb818b523
-#: ../../../src/common/doc/utilities/index.rst:22
-msgid ""
-":ref:`pgr_quote_ident` - to quotes the input text to be used as an "
-"identifier in an SQL statement string."
-msgstr ":ref:`pgr_quote_ident` - pone entre comillas el texto de entrada para ser utilizado como un identificador en una cadena de instrucción SQL."
-
-# d41e3a55240246999890d539bc866a4f
-#: ../../../src/common/doc/utilities/index.rst:23
-msgid ":ref:`pgr_version` - to get pgRouting's version information."
-msgstr ":ref:`pgr_version` para obtener la versión actual de pgRouting."
-
-# 3d10df2242a348afb70157ab2869b42e
-#: ../../../src/common/doc/utilities/index.rst:24
-msgid ":ref:`pgr_versionless` - to compare two version numbers."
-msgstr ":ref:`pgr_versionless` - para comparar dos números de versión."
-
-# 86e6bdd38ba14caeaee7bfeb51f3f7a5
-#: ../../../src/common/doc/utilities/index.rst:25
-msgid ""
-":ref:`pgr_start_point` - to get the start point of a (multi)linestring."
-msgstr ":ref:`pgr_start_Point` para obtener el punto inicial de un (multi)linestring."
-
-# 46480bc0b18a481e99a6913018d07218
-#: ../../../src/common/doc/utilities/index.rst:26
-msgid ":ref:`pgr_end_point` - to get the end point of a (multi)linestring."
-msgstr ":ref:`pgr_end_Point` para obtener el punto final de un (multi)linestring."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po
deleted file mode 100644
index d95d4e7..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po
+++ /dev/null
@@ -1,138 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 16:02+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# f6500f30614b461f90b682890f3c3192
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:13
-msgid "pgr_isColumnInTable"
-msgstr "pgr_isColumnInTable"
-
-# 7a4ec9b1b3514801a079916c0000371b
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 90dd01a206e24dbf9f73f90924c0615b
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:22
-msgid "``pgr_isColumnInTable`` — Check if a column is in the table."
-msgstr "``pgr_isColumnInTable`` — Verifica si existe un campo de una tabla."
-
-# 0d927909521c4f638c543baff8ebd318
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr "Esta función es para ayudar a los desarrolladores"
-
-# b52fa51d192444e0a61674ede982a3e5
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:27
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# ea409e6a176b489aa7f326229d178d13
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:29
-msgid "Returns ``true`` when the column “col” is in table “tab”."
-msgstr "Devuelve ``true`` cuando la columna \"col\" en tabla \"tab\"."
-
-# f5b2b429515a474892b7bddaebd7fa87
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:37
-msgid "Description"
-msgstr "Descripción"
-
-# a513395f631244f18df21c3b85ea7820
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:39
-msgid "``text`` Table name with or without schema component."
-msgstr "``text`` nombre de la tabla con o sin componente de esquema"
-
-# df577648959b4e0daab9d343543d3501
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:40
-msgid "``text`` Column name to be checked for."
-msgstr "``text`` nombre de la columna que va a comprobarse"
-
-# faa09fc52bc54a0f9fe811ff099aa562
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:42
-msgid "Returns:"
-msgstr "Regresa:"
-
-# 67ed5e9b40764fa1be45f8936680f526
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:44
-msgid "``true`` when the column “col” is in table “tab”."
-msgstr "``true`` cuando la columna \"col\" está en la tabla \"tab\"."
-
-# fc38c243b9154c03833b5c9acd63804e
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:45
-msgid "``false`` when:"
-msgstr "``false`` cuando:"
-
-# fb6952dd480644c78db65cfbc109f967
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:47
-msgid "The table \"tab\" is not found or"
-msgstr "La tabla \"tab\" no es encontrada"
-
-# e701055cfb574ccd800767d4d4555d02
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:48
-msgid "Column “col” is not found in table “tab”"
-msgstr "La columna \"Col\" no se encuentra en la tabla \"tab\"."
-
-# be793f469b524522a2331a60fb6d7bac
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:51
-msgid "History"
-msgstr "Historia"
-
-# 03a9d21bed654a438312a5a6d45fcf17
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:52
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 1691f75cb0674d2d83b0bebe24105a6d
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:56
-msgid "Examples"
-msgstr "Ejemplos"
-
-# c8d317a25f554ec6b9af54b1f7ae6c26
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:76
-msgid "The example use the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# 24c87607bf1b4b23bb01e403b16e856f
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:80
-msgid "See Also"
-msgstr "Véase también"
-
-# b3efbf8b34fd415bbfc31810cc19b9dc
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:82
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ":ref:`developer` para el diseño del árbol del proyecto."
-
-# 53d890d3132e4c7d94e0675093e6c146
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:83
-msgid ":ref:`pgr_is_column_indexed` to check if the column is indexed."
-msgstr ":ref:`pgr_is_column_indexed` para comprobar si la columna está indexada."
-
-# 5324fa01310a4c509d7ce91c088865e9
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:84
-msgid ""
-":ref:`pgr_get_column_name` to get the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ":ref:`pgr_get_column_name` para obtener el nombre de la columna como se almacena en las tablas de la administración de postgres."
-
-# d97c057248844396aaa96cacbfcbc034
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:85
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ":ref:`pgr_get_table_name` para obtener el nombre de la tabla tal cual se almacena en las tablas de la administración de postgres."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po
deleted file mode 100644
index 69386ca..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po
+++ /dev/null
@@ -1,145 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 16:12+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# d13f67c428de40999845a53a259a0896
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:13
-msgid "pgr_isColumnIndexed"
-msgstr "pgr_isColumnIndexed"
-
-# 8c9da63e8a0e4da4aa092b82eced03c0
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# cdfe958887b74d69a5d69a8c3b76f35d
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:22
-msgid "``pgr_isColumnIndexed`` — Check if a column in a table is indexed."
-msgstr "``pgr_isColumnIndexed`` — Comprobar si una columna de una tabla es indexada."
-
-# 16efc5cad4b0458aa30f27dcc834fb0b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr "Esta función es para ayudar a los desarrolladores"
-
-# 1611a88987e54ab8a15606f82d4c6098
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:27
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 004725222faa47fd971e321be44816e6
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:29
-msgid "Returns ``true`` when the column “col” in table “tab” is indexed."
-msgstr "Devuelve ``true`` cuando la columna \"col\" en tabla \"tab\" está indexada."
-
-# 3389fb7dd377428cbf442296f0032a6a
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:37
-msgid "Description"
-msgstr "Descripción"
-
-# cfb294e6535c4b0d91975ec3cb1c8985
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:39
-msgid "``text`` Table name with or without schema component."
-msgstr "``text`` nombre de la tabla con o sin componente de esquema"
-
-# 4cb8e78e50fb4ecbb15f141bb496040d
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:40
-msgid "``text`` Column name to be checked for."
-msgstr "``text`` nombre de la columna que va a comprobarse"
-
-# a0f63aba19d0494b9cdcc5c7a61aebdb
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:42
-msgid "Returns:"
-msgstr "Regresa:"
-
-# 66eed092853a47f9a7f69aa1fedbc666
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:44
-msgid "``true`` when the column “col” in table “tab” is indexed."
-msgstr "``true`` cuando la columna \"col\" en la tabla \"tab\" está indexada."
-
-# dbb567f94e994beaac90ea65cc8a324e
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:45
-msgid "``false`` when:"
-msgstr "``false`` cuando:"
-
-# f45a928140f24c299053e944f5550b7e
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:47
-msgid "The table \"tab\" is not found or"
-msgstr "La tabla \"tab\" no es encontrada"
-
-# c949dec2746e48459f93287f24a1334a
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:48
-msgid "Column “col” is not found in table “tab” or"
-msgstr "La columna \"Col\" no se encuentra en la tabla \"tab\"."
-
-# b2fd725d67df46b98d8ca3eddde9d1b5
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:49
-msgid "Column \"col\" in table \"tab\" is not indexed"
-msgstr "Columna \"col\" en tabla \"tan\" no está indexada"
-
-# fe7b50380e1246599dd0b8abbac9a394
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:52
-msgid "History"
-msgstr "Historia"
-
-# 2949ff82708f44db903c9e175d8fd484
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:53
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# c19a7c36df38472bb330eafac37c34d3
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:57
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 9484e0bc1f1942da88f6261afd689f40
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:77
-msgid "The example use the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# ba4b525f9ced43898aab4410c804208b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:81
-msgid "See Also"
-msgstr "Véase también"
-
-# 76c91def69da43539042f05a15240e67
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:83
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ":ref:`developer` para el diseño del árbol del proyecto."
-
-# 10267ea719b141b7a9e7712543121d34
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:84
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column "
-"in the table."
-msgstr ":ref:`pgr_is_column_in_table` para revisar sólo la existencia de la columna."
-
-# 4e5e6df51cf149cd9e79ef3459273a4b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:85
-msgid ""
-":ref:`pgr_get_column_name` to get the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ":ref:`pgr_get_column_name` para obtener el nombre de la columna como se almacena en las tablas de la administración de postgres."
-
-# 2cda9c32c4ec4117914b3e51f125c1df
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:86
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ":ref:`pgr_get_table_name` para obtener el nombre de la tabla tal cual se almacena en las tablas de la administración de postgres."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/point_to_id.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/point_to_id.po
deleted file mode 100644
index 3dc4539..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/point_to_id.po
+++ /dev/null
@@ -1,145 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:32+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 94641dca24af4c0dba2fbeed97300d22
-#: ../../../src/common/doc/utilities/point_to_id.rst:13
-msgid "pgr_pointToId"
-msgstr "pgr_pointToId"
-
-# 56e635560a6d4492ae86100badf0e086
-#: ../../../src/common/doc/utilities/point_to_id.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 81cc9d306cd54f46b4d517216a806eb7
-#: ../../../src/common/doc/utilities/point_to_id.rst:22
-msgid ""
-"``pgr_pointToId`` — Inserts a point into a vertices table and returns the "
-"corresponig id."
-msgstr "``pgr_pointToId`` — inserta un punto en una tabla de vértices y devuelve el id de correspondiente."
-
-# f6b714528cf7426dbeb9245b9719427c
-#: ../../../src/common/doc/utilities/point_to_id.rst:26
-msgid ""
-"This function is intended for the developer's aid. Use "
-":ref:`pgr_createTopology <pgr_create_topology>` or "
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` instead."
-msgstr "Esta función está diseñada para la ayuda de los desarrolladores. Usar `pgr_createTopology <pgr_create_topology>` o :ref:`pgr_createVerticesTable <pgr_create_vert_table>` en su lugar."
-
-# ba51b8bd879447188b15521bc44768c2
-#: ../../../src/common/doc/utilities/point_to_id.rst:30
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 426a196654d64ba99aa86b9e3eb47996
-#: ../../../src/common/doc/utilities/point_to_id.rst:32
-msgid ""
-"This function returns the ``id`` of the row in the vertices table that "
-"corresponds to the ``point`` geometry"
-msgstr "Esta función devuelve el``id`` de la fila de la tabla de vértices que corresponde a la geometría ``point``"
-
-# ad82864ab2bc436bb940d9dbb4bb7e28
-#: ../../../src/common/doc/utilities/point_to_id.rst:40
-msgid "Description"
-msgstr "Descripción"
-
-# 6f0b7969c38c4b60a652b8c56e860cb5
-#: ../../../src/common/doc/utilities/point_to_id.rst:42
-msgid "``geometry`` \"POINT\" geometry to be inserted."
-msgstr "``geometry`` geometría \"POINT\" que se insertará."
-
-# 972b42f5a56a456584ffe992d2c9f597
-#: ../../../src/common/doc/utilities/point_to_id.rst:43
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr "``float8`` ajuste tolerancia de bordes desconectados. (en la unidad de proyección)"
-
-# 8026350c7b7b4ab9bb8a4d01a5398e92
-#: ../../../src/common/doc/utilities/point_to_id.rst:44
-msgid "``text`` Vertices table name WITH schema included."
-msgstr "``text`` nombre de la tabla CON componente de esquema"
-
-# fdb31c3aac0442fd9a79fd2e3cec8567
-#: ../../../src/common/doc/utilities/point_to_id.rst:45
-msgid "``integer`` SRID of the geometry point."
-msgstr "``integer`` SRID del punto de la geometría."
-
-# 1cb7d86e4eb54c46b998f27b7d883269
-#: ../../../src/common/doc/utilities/point_to_id.rst:47
-msgid ""
-"This function returns the id of the row that corresponds to the ``point`` "
-"geometry"
-msgstr "Esta función devuelve el id de la fila que corresponde a la geometría ``point`` "
-
-# 6444a2e3a1eb4ec1b9e456bd7d566ec3
-#: ../../../src/common/doc/utilities/point_to_id.rst:49
-msgid ""
-"When the ``point`` geometry already exists in the vertices table "
-"``vertname``, it returns the corresponing ``id``."
-msgstr "Cuando la geometría ``point`` ya existe en la tabla de vértices ``vertname``, devuelve el ``id`` corredpondiente."
-
-# f348861666b446b8b94833b19fc43b3a
-#: ../../../src/common/doc/utilities/point_to_id.rst:50
-msgid ""
-"When the ``point`` geometry is not found in the vertices table ``vertname``,"
-" the funcion inserts the ``point`` and returns the corresponing ``id`` of "
-"the newly created vertex."
-msgstr "Cuando la geometría ``point`` no se encuentra en la tabla de vértices ``vertname``, la función inserta el ``point`` y devuelve el correspondiente ``id`` del vértice recién creado."
-
-# bbc93993a9494838bb777feb3c966b2b
-#: ../../../src/common/doc/utilities/point_to_id.rst:52
-msgid ""
-"The function do not perform any checking of the parameters. Any validation "
-"has to be done before calling this function."
-msgstr "La función no realiza ninguna comprobación de los parámetros. Cualquier validación debe hacerse antes de llamar a esta función."
-
-# feb893694fe44a30b39b6671d6603125
-#: ../../../src/common/doc/utilities/point_to_id.rst:55
-msgid "History"
-msgstr "Historia"
-
-# ac4bb20cbeeb49e8a95d92ca52981979
-#: ../../../src/common/doc/utilities/point_to_id.rst:56
-msgid "Renamed in version 2.0.0"
-msgstr "Renombrado en la versión 2.0.0"
-
-# f159557b0fd44238a8114795dbd499e6
-#: ../../../src/common/doc/utilities/point_to_id.rst:60
-msgid "See Also"
-msgstr "Véase también"
-
-# 44d7d6a102634aaab89b81a21117e3b4
-#: ../../../src/common/doc/utilities/point_to_id.rst:62
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ":ref:`developer` para el diseño del árbol del proyecto."
-
-# 34d3f5b67bd04eef9a27bb0f9058f7a0
-#: ../../../src/common/doc/utilities/point_to_id.rst:63
-msgid ""
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create a topology "
-"based on the geometry."
-msgstr ":ref:`pgr_createVerticesTable <pgr_create_vert_table>` para reconstruir la tabla de vértices basándose en la información de origen y de destino."
-
-# 6efeb93fdd6f461b95ba6fa218148c75
-#: ../../../src/common/doc/utilities/point_to_id.rst:64
-msgid ""
-":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
-"on the geometry."
-msgstr ":ref:`pgr_createTopology <pgr_create_topology>` — Construye una topología de red basada en la información de geometría."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/quote_ident.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/quote_ident.po
deleted file mode 100644
index 098654f..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/quote_ident.po
+++ /dev/null
@@ -1,136 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 16:27+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# ad4f702fd7ab40f587534a31a99d703a
-#: ../../../src/common/doc/utilities/quote_ident.rst:13
-msgid "pgr_quote_ident"
-msgstr "pgr_quote_ident"
-
-# a05a481e84424fde848925bc9df67822
-#: ../../../src/common/doc/utilities/quote_ident.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 2c0d5a39de7d48a894991413895eeb1d
-#: ../../../src/common/doc/utilities/quote_ident.rst:22
-msgid ""
-"``pgr_quote_ident`` — Quotes the input text to be used as an identifier in "
-"an SQL statement string."
-msgstr "``pgr_quote_ident`` — Pone entre comillas el texto de entrada para ser utilizado como un identificador en una instrucción SQL."
-
-# 81be5b43d83b4f259a8627fdbd918321
-#: ../../../src/common/doc/utilities/quote_ident.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr "Esta función es para ayudar a los desarrolladores"
-
-# 9a208d9638b343d49e208a250552bf58
-#: ../../../src/common/doc/utilities/quote_ident.rst:28
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 20357172c5b74450a1dd908f249e1c22
-#: ../../../src/common/doc/utilities/quote_ident.rst:30
-msgid ""
-"Returns the given identifier ``idname`` suitably quoted to be used as an "
-"identifier in an SQL statement string."
-msgstr "Devuelve el identificador ``idname`` dado con las comillas adeciadas para ser utilizado como un identificador en una cadena de instrucción SQL."
-
-# ec0d7e517b52424e83e0a39e700f6ded
-#: ../../../src/common/doc/utilities/quote_ident.rst:38
-msgid "Description"
-msgstr "Descripción"
-
-# 0333bd56b4d146478a759f9bec187900
-#: ../../../src/common/doc/utilities/quote_ident.rst:41
-msgid "Parameters"
-msgstr "Parámetros"
-
-# 24fafacf2e084c8ebd35cc820529ddf1
-#: ../../../src/common/doc/utilities/quote_ident.rst:42
-msgid ""
-"``text`` Name of an SQL identifier. Can include ``.`` dot notation for "
-"schemas.table identifiers"
-msgstr "``text`` Nombre de un identificador SQL. Puede incluir notación de puntos para ``.`` para identificadores de esquema.tabla"
-
-# 43a32f6d513f42dda64a31f538a7cb0b
-#: ../../../src/common/doc/utilities/quote_ident.rst:44
-msgid ""
-"Returns the given string suitably quoted to be used as an identifier in an "
-"SQL statement string."
-msgstr "Devuelve la cadena con las comillas adecuadas para ser utilizada como un identificador en una de instrucción SQL."
-
-# d4e0873a14da42f5b4ca3f89505e8335
-#: ../../../src/common/doc/utilities/quote_ident.rst:46
-msgid ""
-"When the identifier ``idname`` contains on or more ``.`` separators, each "
-"component is suitably quoted to be used in an SQL string."
-msgstr "Cuando el identificador``idname`` contiene en o más separadores ``.``, cada componente se le pone las comillas necesarias para ser utilizado en una cadena SQL."
-
-# 1842d74622194549bf87e0e37e8220c8
-#: ../../../src/common/doc/utilities/quote_ident.rst:50
-msgid "History"
-msgstr "Historia"
-
-# 3e97c734ccfc46efaedb156bfd028772
-#: ../../../src/common/doc/utilities/quote_ident.rst:51
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 4c8ad273e78c414ca99c84a290acff83
-#: ../../../src/common/doc/utilities/quote_ident.rst:55
-msgid "Examples"
-msgstr "Ejemplos"
-
-# c27e93edd7144c1986103e042e5b991c
-#: ../../../src/common/doc/utilities/quote_ident.rst:57
-msgid "Everything is lower case so nothing needs to be quoted."
-msgstr "Todo está en minúscula así nada necesita estar entre comillas."
-
-# 275c25d761794895a7a9474bd1622943
-#: ../../../src/common/doc/utilities/quote_ident.rst:76
-msgid "The column is upper case so its double quoted."
-msgstr "La columna está con mayúsculas así que se le ponen las comillas."
-
-# 7fc7d47e83624683a58343f8b5935b6f
-#: ../../../src/common/doc/utilities/quote_ident.rst:95
-msgid "The schema name has a capital letter so its double quoted."
-msgstr "El nombre del esquema tiene una letra mayúscula así se le ponen las comillas."
-
-# 68aa84ac853546419c541739eee038e6
-#: ../../../src/common/doc/utilities/quote_ident.rst:106
-msgid "Ignores extra ``.`` separators."
-msgstr "Ignora separadores ``.`` extras."
-
-# 13976da7e76249c1bbbc10fb34130c59
-#: ../../../src/common/doc/utilities/quote_ident.rst:118
-msgid "See Also"
-msgstr "Véase también"
-
-# 9ca53a95db55462780e7fb68bba70aca
-#: ../../../src/common/doc/utilities/quote_ident.rst:120
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ":ref:`developer` para el diseño del árbol del proyecto."
-
-# fb4b95d8a6d8403497a36238ed980b58
-#: ../../../src/common/doc/utilities/quote_ident.rst:121
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ":ref:`pgr_get_table_name` para obtener el nombre de la tabla tal cual se almacena en las tablas de la administración de postgres."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/start_point.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/start_point.po
deleted file mode 100644
index 9f6014d..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/start_point.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 16:09+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# a24de4d0526742168dd2c7673d357cfe
-#: ../../../src/common/doc/utilities/start_point.rst:13
-msgid "pgr_startPoint"
-msgstr "pgr_startPoint"
-
-# 2878d80121d3453794e0871f34873592
-#: ../../../src/common/doc/utilities/start_point.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# ef267d5bd4dc444b9db70d9f4079f505
-#: ../../../src/common/doc/utilities/start_point.rst:22
-msgid ""
-"``pgr_startPoint`` — Returns a start point of a (multi)linestring geometry."
-msgstr "``pgr_startPoint`` — Devuelve un punto de inicio de una geometría (multi)linestring."
-
-# 57c55f6c23fd4dc59ad7f25a4a4e6f90
-#: ../../../src/common/doc/utilities/start_point.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr "Esta función es para ayudar a los desarrolladores"
-
-# 7fb8df5ab251417bba38529aaefd457b
-#: ../../../src/common/doc/utilities/start_point.rst:28
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 7becd53f47734fbe99a71ba8adef0d07
-# 9345f683e56b40dcb259f1ef2ea5e240
-#: ../../../src/common/doc/utilities/start_point.rst:30
-#: ../../../src/common/doc/utilities/start_point.rst:44
-msgid ""
-"Returns the geometry of the start point of the first LINESTRING of ``geom``."
-msgstr "Devuelve la geometría del punto de inicio del primer LINESTRING de ``geom``."
-
-# f2295bc1e9ef4b08884c65ec18de9744
-#: ../../../src/common/doc/utilities/start_point.rst:38
-msgid "Description"
-msgstr "Descripción"
-
-# fef77a15910b4557bb253c868468c67a
-#: ../../../src/common/doc/utilities/start_point.rst:41
-msgid "Parameters"
-msgstr "Parámetros"
-
-# c938ded08b8743bf9eac1b5d064e0ed0
-#: ../../../src/common/doc/utilities/start_point.rst:42
-msgid "``geometry`` Geometry of a MULTILINESTRING or LINESTRING."
-msgstr "``geometry`` geometría de una MULTILINESTRING o LINESTRING."
-
-# 364eba92da1046889b073b64c9827bdf
-#: ../../../src/common/doc/utilities/start_point.rst:49
-msgid "History"
-msgstr "Historia"
-
-# 62c8d013ab68473c8adda6fbfaf564e9
-#: ../../../src/common/doc/utilities/start_point.rst:50
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 8e8a05a8da734bb5961b296230e53bcb
-#: ../../../src/common/doc/utilities/start_point.rst:55
-msgid "See Also"
-msgstr "Véase también"
-
-# 6026c7e6914a49cab16a616dd0fb6bac
-#: ../../../src/common/doc/utilities/start_point.rst:57
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ":ref:`developer` para el diseño del árbol del proyecto."
-
-# 5b0650667c4b470691f4647d5b73f783
-#: ../../../src/common/doc/utilities/start_point.rst:58
-msgid ":ref:`pgr_end_Point` to get the end point of a (multi)linestring."
-msgstr ":ref:`pgr_end_Point` para obtener el punto final de un (multi)linestring."
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/version.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/version.po
deleted file mode 100644
index 3191cca..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/version.po
+++ /dev/null
@@ -1,114 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:33+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# cb10fa2694924ce19d909a3e1df513f1
-#: ../../../src/common/doc/utilities/version.rst:13
-msgid "pgr_version"
-msgstr "pgr_version"
-
-# 135f514b10854445bd0cfa9f89f21f86
-#: ../../../src/common/doc/utilities/version.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# ee914323b4b6411ea5c157325bdfac90
-#: ../../../src/common/doc/utilities/version.rst:22
-msgid "``pgr_version`` — Query for pgRouting version information."
-msgstr "``pgr_version`` — consulta de información sobre la versión de pgRouting."
-
-# 301b5989ecef437b858e054c95827d83
-#: ../../../src/common/doc/utilities/version.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 607aa236b6134901a0871ed5bf518253
-#: ../../../src/common/doc/utilities/version.rst:28
-msgid "Returns a table with pgRouting version information."
-msgstr "Devuelve una tabla con la información sobre la versión de pgRouting."
-
-# 6190754a1b934ee586562b0995c07bc0
-#: ../../../src/common/doc/utilities/version.rst:36
-msgid "Description"
-msgstr "Descripción"
-
-# b85aeaeb021647e59321f2b6c9953333
-#: ../../../src/common/doc/utilities/version.rst:38
-msgid "Returns a table with:"
-msgstr "Devuelve una tabla con:"
-
-# e5a458cace474e8babaaaff2837c160f
-#: ../../../src/common/doc/utilities/version.rst:40
-msgid "``varchar`` pgRouting version"
-msgstr "``varchar`` versión de pgRouting "
-
-# 7f02654b7c3641b5a35c56c47ea63022
-#: ../../../src/common/doc/utilities/version.rst:41
-msgid "``varchar`` Git tag of pgRouting build"
-msgstr "``varchar`` La etiqueta de la construcción en Git de pgRouting"
-
-# c50e77a54d3d4828a5ea0e89182d5f03
-#: ../../../src/common/doc/utilities/version.rst:42
-msgid "``varchar`` Git hash of pgRouting build"
-msgstr "``varchar`` El Hash de la construcción en Git de pgRouting"
-
-# ba32c01940164cfab6dec3df2cb565ed
-#: ../../../src/common/doc/utilities/version.rst:43
-msgid "``varchar`` Git branch of pgRouting build"
-msgstr "``varchar`` La ramificación de la construcción en Git de pgRouting"
-
-# 135e588dcbe144db9a806d3c5b75b88c
-#: ../../../src/common/doc/utilities/version.rst:44
-msgid "``varchar`` Boost version"
-msgstr "``varchar`` versión de Boost"
-
-# 7e0b5fe0384f43648b6ca7dcdd703fd6
-#: ../../../src/common/doc/utilities/version.rst:48
-msgid "History"
-msgstr "Historia"
-
-# 3f8e572f137d472592f2abb0483e3153
-#: ../../../src/common/doc/utilities/version.rst:49
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# abdab1e6a00347269b027b2fedd31c15
-#: ../../../src/common/doc/utilities/version.rst:53
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 86be3ecef9da4b22b39cfe8fc3848b92
-#: ../../../src/common/doc/utilities/version.rst:55
-msgid "Query for full version string"
-msgstr "Consulta para la cadena con la información completa de la versión."
-
-# 85c014398a004db5bb9cf5afa9515f32
-#: ../../../src/common/doc/utilities/version.rst:67
-msgid "Query for ``version`` and ``boost`` attribute"
-msgstr "Consulta para los atributos ``version`` y ``boost``"
-
-# e3b6b7e66a8e4b8698f253e26126b8af
-#: ../../../src/common/doc/utilities/version.rst:80
-msgid "See Also"
-msgstr "Véase también"
-
-# 73744f59f3494c4e827095b7f6ca9503
-#: ../../../src/common/doc/utilities/version.rst:82
-msgid ":ref:`pgr_versionless` to compare two version numbers"
-msgstr ":ref:`pgr_versionless` - Comparar dos números de versión"
diff --git a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/versionless.po b/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/versionless.po
deleted file mode 100644
index d921031..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/common/doc/utilities/versionless.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 15:42+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 5209a60f43eb4ca889765b2f2855917f
-#: ../../../src/common/doc/utilities/versionless.rst:13
-msgid "pgr_versionless"
-msgstr "pgr_versionless"
-
-# cf214511459c4e01a98c636ee93edf10
-#: ../../../src/common/doc/utilities/versionless.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# af9f449a91a94497a1a06310c12763cc
-#: ../../../src/common/doc/utilities/versionless.rst:22
-msgid "``pgr_versionless`` — Compare two version numbers."
-msgstr "pgr_versionless - Comparar los números de versión"
-
-# cfa4ec4da8d143e9bb4f33521dc1f6b2
-#: ../../../src/common/doc/utilities/versionless.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr "Esta función es para ayudar a los desarrolladores"
-
-# 7a40ac52554840c48edaf4e3bc893f86
-#: ../../../src/common/doc/utilities/versionless.rst:27
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 99a72026827e4e44b1b7e0b9defa52f8
-#: ../../../src/common/doc/utilities/versionless.rst:29
-msgid ""
-"Returns ``true`` if the first version number is smaller than the second "
-"version number. Otherwise returns ``false``."
-msgstr "Devuelve ``true`` si el primer número de versión es más pequeño que el segundo número de la versión. De lo contrario, devuelve ``false``."
-
-# b541ba956f94407fbbfa4f325152d137
-#: ../../../src/common/doc/utilities/versionless.rst:37
-msgid "Description"
-msgstr "Descripción"
-
-# f2b9c579402a4d529bdcf44885b7999e
-#: ../../../src/common/doc/utilities/versionless.rst:39
-msgid "``text`` first version number"
-msgstr "``text`` primer número de versión"
-
-# ff2f3530055d46b39b083a6e013b18f1
-#: ../../../src/common/doc/utilities/versionless.rst:40
-msgid "``text`` second version number"
-msgstr "``text`` segundo número de versión"
-
-# aa0e1cf348454207aba6b1bd4d82ddcd
-#: ../../../src/common/doc/utilities/versionless.rst:44
-msgid "History"
-msgstr "Historia"
-
-# 84d6600a81814c3b87c5e309a80eef62
-#: ../../../src/common/doc/utilities/versionless.rst:45
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 0dbed91f114f41a2a1ccbffbb4886a47
-#: ../../../src/common/doc/utilities/versionless.rst:49
-msgid "Examples"
-msgstr "Ejemplos"
-
-# cd2ca34fb88c4024ac73c6c7076b3de2
-#: ../../../src/common/doc/utilities/versionless.rst:62
-msgid "See Also"
-msgstr "Véase también"
-
-# ac8a4a1b5fd0499e910d1f9c088d0d25
-#: ../../../src/common/doc/utilities/versionless.rst:64
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ":ref:`developer` para el diseño del árbol del proyecto."
-
-# f733092d16de4d7b9bdf31b6bdae27d3
-#: ../../../src/common/doc/utilities/versionless.rst:65
-msgid ":ref:`pgr_version` to get the current version of pgRouting."
-msgstr ":ref:`pgr_version` para obtener la versión actual de pgRouting."
diff --git a/doc/i18n/es/LC_MESSAGES/src/dijkstra/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/dijkstra/doc/index.po
deleted file mode 100644
index bf606aa..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/dijkstra/doc/index.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 17:09+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# a6876a00bcae42fdb134f789dabd19d7
-#: ../../../src/dijkstra/doc/index.rst:13
-msgid "pgr_dijkstra - Shortest Path Dijkstra"
-msgstr "pgr_dijkstra - Camino más corto de Dijkstra"
-
-# 5ba32c2871ea4858b8bfd351b4a01f34
-#: ../../../src/dijkstra/doc/index.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# eb4931f6253f4daea164710031c062f7
-#: ../../../src/dijkstra/doc/index.rst:22
-msgid "``pgr_dijkstra`` — Returns the shortest path using Dijkstra algorithm."
-msgstr "``pgr_dijkstra`` — Devuelve el Camino más corto usando el algoritmo de Dijkstra"
-
-# aad22c43d6da4f658543ad79e2b4789c
-#: ../../../src/dijkstra/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# d23c857c49554c10a6c99810575627e1
-#: ../../../src/dijkstra/doc/index.rst:28
-msgid ""
-"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
-"in 1956. It is a graph search algorithm that solves the single-source "
-"shortest path problem for a graph with non-negative edge path costs, "
-"producing a shortest path tree. Returns a set of :ref:`pgr_costResult "
-"<type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
-msgstr "El algoritmo de Dijkstra, fue concebido por el científico computacional holandés, Edsger Dijkstra en 1956. Se trata de un algoritmo de búsqueda gráfica que resuelve el problema del camino más corto de una sola fuente con costos no negativos, generando un árbol de ruta más corta. Devuelve un conjunto de registros :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) que conforman un recorrido."
-
-# 9b3ef7764a8a4aec8be3fd97d0f78855
-#: ../../../src/dijkstra/doc/index.rst:37
-msgid "Description"
-msgstr "Descripción"
-
-# 8f12864ae55a48e6a49e9a5c7f232731
-#: ../../../src/dijkstra/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "Consulta SQL, que debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# 883dbba5f5b94668af12a1c3d280804f
-#: ../../../src/dijkstra/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identificador del borde"
-
-# 64eaa5363cc64362829f60de0f81517d
-#: ../../../src/dijkstra/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` Identificador del vértice inicial del borde"
-
-# 849ed774dfa442cf86f3d184c820a717
-#: ../../../src/dijkstra/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` Identificador del vértice final del borde"
-
-# 2c000dd6564240d09f3533f4b2411029
-#: ../../../src/dijkstra/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valor del costo del recorrido sobre el borde. Un costo negativo evitará que el borde sea insertado en el gráfico."
-
-# 13bbd212a94840bbbdd82ba008836790
-#: ../../../src/dijkstra/doc/index.rst:50
-msgid ""
-"``float8`` (optional) the cost for the reverse traversal of the edge. This "
-"is only used when the ``directed`` and ``has_rcost`` parameters are ``true``"
-" (see the above remark about negative costs)."
-msgstr "``float8`` (opcional) el costo para el recorrido inverso del borde. Sólo se usa cuando los parámetros de ``directed`` y ``has_rcost`` son ``true`` (véase el comentario anterior sobre costos negativos)."
-
-# 42be1660a80b461ba4e56f070cde4c04
-#: ../../../src/dijkstra/doc/index.rst:52
-msgid "``int4`` id of the start point"
-msgstr "``int4`` identificador del punto de partida"
-
-# 95547c9e5de74556a208d7c0a9e58772
-#: ../../../src/dijkstra/doc/index.rst:53
-msgid "``int4`` id of the end point"
-msgstr "``int4`` Identificador del punto de llegada"
-
-# 89e9934bdbfd42aabf98993066529f92
-#: ../../../src/dijkstra/doc/index.rst:54
-msgid "``true`` if the graph is directed"
-msgstr "``true`` Si la gráfica es direccional"
-
-# 03f039cd5de34a3f99a5871456ed269f
-#: ../../../src/dijkstra/doc/index.rst:55
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "Si es ``True``, el campo ``reverse_cost`` del conjunto de registros generados se utilizan para el calcular el costo de la travesía del borde en la dirección opuesta."
-
-# 2c03ff621dfb4e11a0f215844b6cd41c
-#: ../../../src/dijkstra/doc/index.rst:57
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Devuelve un conjunto del tipo de datos :ref:`type_cost_result`:"
-
-# f43f68991432480385556098be3f32ab
-#: ../../../src/dijkstra/doc/index.rst:59
-msgid "row sequence"
-msgstr "Secuencia de registros"
-
-# b5cd0a7c7e1943e2934f2d315fd0d58d
-#: ../../../src/dijkstra/doc/index.rst:60
-msgid "node ID"
-msgstr "Identificador del nodo visitado"
-
-# ae466d86ce304295afc5b1f956c97732
-#: ../../../src/dijkstra/doc/index.rst:61
-msgid "edge ID (``-1`` for the last row)"
-msgstr "Identificador del borde (``-1`` para el último borde)"
-
-# d74ec405ac62479a93ddd9070e1cfead
-#: ../../../src/dijkstra/doc/index.rst:62
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "costo para atravesar desde el nodo ``id1`` usando el borde ``id2`` hasta el otro extremo del borde"
-
-# d45859a53252493eaea97bdbe6c8936f
-#: ../../../src/dijkstra/doc/index.rst:66
-msgid "History"
-msgstr "Historia"
-
-# 41349c9ad4574d009aa7375219beab0c
-#: ../../../src/dijkstra/doc/index.rst:67
-msgid "Renamed in version 2.0.0"
-msgstr "Renombrado en la versión 2.0.0"
-
-# d1ebc8bc726844eab5795b5dedc18fe0
-#: ../../../src/dijkstra/doc/index.rst:71
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 5ea59cfbc4b240c29bc8268d4a36cdb4
-#: ../../../src/dijkstra/doc/index.rst:73
-msgid "Without ``reverse_cost``"
-msgstr "Sin ``reverse_cost``"
-
-# a37bcf6c164b442ca94ded3b2df83f61
-#: ../../../src/dijkstra/doc/index.rst:92
-msgid "With ``reverse_cost``"
-msgstr "Con ``reverse_cost``"
-
-# 1013877e3d214e6f8d87c5747e261b20
-#: ../../../src/dijkstra/doc/index.rst:110
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# 7097292ec353427d90c60607583c42c2
-#: ../../../src/dijkstra/doc/index.rst:114
-msgid "See Also"
-msgstr "Véase también"
-
-# d98cbcb325484a81bcb0e6b0afd3928c
-#: ../../../src/dijkstra/doc/index.rst:116
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# cc938bae0828409fb0efae9ad098fa4d
-#: ../../../src/dijkstra/doc/index.rst:117
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
diff --git a/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po b/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po
deleted file mode 100644
index 48b087f..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po
+++ /dev/null
@@ -1,142 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 18:27+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# cb2e05bbf556427191f8dd5d87c670db
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:13
-msgid "pgr_alphaShape"
-msgstr "pgr_alphaShape"
-
-# cd5cca6682b34a85b72fd0b7c90d739b
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 9a0ca65720774711aefd2d017e4487e9
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:22
-msgid "``pgr_alphashape`` — Core function for alpha shape computation."
-msgstr "``pgr_alphashape`` — Función central para el cálculo de la forma alfa."
-
-# 525edb2bc28a4e77804ac30781cc3dc5
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:26
-msgid ""
-"This function should not be used directly. Use :ref:`pgr_drivingDistance "
-"<pgr_driving_distance>` instead."
-msgstr "Esta función no debe utilizarse directamente. Usar :ref:`pgr_drivingDistance <pgr_driving_distance>` en su lugar."
-
-# 96d2ea88d3bf44a793219826f7fddda3
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:30
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 4b5074bd7bc64d1c89dcc1e5b250c5f0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:32
-msgid ""
-"Returns a table with (x, y) rows that describe the vertices of an alpha "
-"shape."
-msgstr "Devuelve una tabla con registros (x, y) que describen los vértices de una figura de alfa."
-
-# eed5f82ec9924367b7a2c7ce8ce7704a
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:40
-msgid "Description"
-msgstr "Descripción"
-
-# 3607e16f8fe24de6a2226bb43a73dadd
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:42
-msgid ""
-"``text`` a SQL query, which should return a set of rows with the following "
-"columns:"
-msgstr "``text`` una consulta SQL la cual debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# afd24b1ef69d439691025ff955e63f25
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:48
-msgid "``int4`` identifier of the vertex"
-msgstr "``int4`` Identificador del vértice"
-
-# c4ec83f59d634b458e6e04dc6822cc62
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:49
-msgid "``float8`` x-coordinate"
-msgstr "``float8`` Coordenada x"
-
-# c78115c69ec645ceb3a8de6f3a97ebdc
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:50
-msgid "``float8`` y-coordinate"
-msgstr "``float8`` Coordenada y"
-
-# 63cffe47a71d462cae8c09a10473bdaf
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:53
-msgid "Returns a vertex record for each row :"
-msgstr "Devuelve un registro de vértices para cada fila:"
-
-# 385ec313cc69493989a17eecd282d5b4
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:55
-msgid "x-coordinate"
-msgstr "Coordenada x"
-
-# 2eb9452ee2864540b535c7be538a73f0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:56
-msgid "y-coordinate"
-msgstr "Coordenada y"
-
-# bf1e04aab9ed4558aeb274dbc93fc476
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:60
-msgid "History"
-msgstr "Historia"
-
-# 6301d43186dc47ca9c0925f563c2b4ee
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:61
-msgid "Renamed in version 2.0.0"
-msgstr "Renombrado en la versión 2.0.0"
-
-# 2dcc599a683743b09eb440895c823584
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:65
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 28059fce0d66461c88851c2efa8995b4
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:66
-msgid ""
-"In the alpha shape code we have no way to control the order of the points so"
-" the actual output you might get could be similar but different. The simple "
-"query is followed by a more complex one that constructs a polygon and "
-"computes the areas of it. This should be the same as the result on your "
-"system. We leave the details of the complex query to the reader as an "
-"exercise if they wish to decompose it into understandable pieces or to just "
-"copy and paste it into a SQL window to run."
-msgstr "En la código para la forma alfa, no hay forma de controlar el orden de los puntos, por lo que el resultado que obtenga puede variar en el orden del lost vertices. En el ejemplo, la consulta simple es seguida por una más complejoa que construye un polígono y calcula las áreas de él. Este ultimo resultado debe ser el mismo en su sistema. Le dejamos los detalles de la consulta compleja al lector como un ejercicio, si desean descomponerla en pedazos comprensibles o que simplemente c [...]
-
-# cea925c912c14e2bae7b67a9493f67d0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:119
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Las consulta usa la red de ejemplo :ref:`sampledata`"
-
-# b737b880282d447b840b23e77501d03b
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:123
-msgid "See Also"
-msgstr "Véase también"
-
-# 79772e0e113745068a7c48d32ae903ee
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:125
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ":ref:`pgr_driving_distance` - Distancia de conducción"
-
-# 98ad4c5291f04893a9e5a6f616ce2d11
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:126
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ":ref:`pgr_points_as_polygon` - Polígono alrededor del conjunto de puntos"
diff --git a/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po b/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po
deleted file mode 100644
index e44f693..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po
+++ /dev/null
@@ -1,200 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 15:35+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 49d83b442baa4f9981fa13ff4abc3c6b
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:13
-msgid "pgr_drivingDistance"
-msgstr "pgr_drivingDistance"
-
-# ce7edabbdab546a3a318f86316d0abc6
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 7a89c6c2c0ca404eb82afe9d6de38db2
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:22
-msgid ""
-"``pgr_drivingDistance`` - Returns the driving distance from a start node."
-msgstr "``pgr_drivingDistance`` - Devuelve la distancia de manejo desde un nodo de inicio."
-
-# 5afa2748d4964e35b9cfcf71ba431015
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:26
-msgid ""
-"Requires :ref:`to build pgRouting <build>` with support for Driving "
-"Distance."
-msgstr "Requiere :ref:`to build pgRouting <build>` con apoyo para Distancia de manejo."
-
-# 91fbeb2cd46146c4bb9f86b8600faa87
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:30
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# cffb1438aa5d43d8b1792ec1d53769ae
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:32
-msgid ""
-"This function computes a Dijkstra shortest path solution them extracts the "
-"cost to get to each node in the network from the starting node. Using these "
-"nodes and costs it is possible to compute constant drive time polygons. "
-"Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, "
-"cost) rows, that make up a list of accessible points."
-msgstr "Esta función calcula una solución de ruta más corta de Dijkstra, extrae el costo para llegar a cada nodo en la red desde el nodo de inicio. Mediante estos nodos y costos es posible calcular polígonos de tiempo constante de manejo . Devuelve un conjunto de registros :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, coste) que integran una lista de puntos de acceso."
-
-# b2253b753da44597b1d449509c96ca75
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:41
-msgid "Description"
-msgstr "Descripción"
-
-# f187f52a62034b2cae8bb00b570bea15
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:43
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "Consulta SQL que debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# 85949c2cc0334abbbb500996221eeba0
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:50
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` Identificador del borde"
-
-# 35a904f5f23643b7a6e7e457b8f05846
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:51
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` Identificador del vértice inicial del borde"
-
-# 815615381d8d43989567cc15d154736a
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:52
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` Identificador del vértice final del borde"
-
-# 5c9e142543534a0bbc7668603ad465b4
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:53
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` Costo del recorrido sobre el borde. Un costo negativo evitará que el borde sea insertado en el gráfico."
-
-# fa3ca524dbe24d47891420e71caa324c
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(opcional) El costo para el recorrido inverso del borde. Esto sólo se utiliza cuando los parámetros ``directed`` y ``has_rcost`` son ``True`` (ver el comentario anterior sobre los costos negativos)."
-
-# c9e1f4debc904118ab177e2b4427d364
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4`` Identificador del punto de partida"
-
-# 2da59a7b4e0b4b6fbac510bfe0adbd1e
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:57
-msgid ""
-"``float8`` value in edge cost units (not in projection units - they might be"
-" different)."
-msgstr "``float8`` valor en unidades del costo del borde (no en unidades de proyección - pueden ser diferentes)."
-
-# b09a53cf12bd49a09659eb105e2e7d2a
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "``true`` Si la gráfica es direccionada"
-
-# e771178ac5514ae6bc7cf3dcccfe5408
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "Si es ``True``, el campo ``reverse_cost`` del conjunto de registros generados se utilizan para el calcular el costo de la travesía del borde en la dirección opuesta."
-
-# 5770f80a74ec49cf8f9e11b9fd082533
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Devuelve un conjunto del tipo de datos :ref:`type_cost_result`:"
-
-# ed0dbd0e73234b70827a7663d390886d
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:63
-msgid "row sequence"
-msgstr "Secuencia de registros"
-
-# dc9caee8fdc84c45bb1ebf3c046a436d
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:64
-msgid "node ID"
-msgstr "Identificador del nodo visitado"
-
-# ae36b60db435425b8a4bfa4ada217dd7
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:65
-msgid "edge ID (this is probably not a useful item)"
-msgstr "Identificador del borde (esto probablemente no es un elemento útil)"
-
-# ee9063c6bb49444e94e08af7eedbb401
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:66
-msgid "cost to get to this node ID"
-msgstr "Costo para llegar al identificador de nodo"
-
-# 3bb717c83f2d4993a4b1704a88749ee9
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr "Usted debe reconectarse a la base de datos después de ``CREATE EXTENSION pgRouting`` . De lo contrario la función arrojara el error ``Error computing path: std::bad_alloc``."
-
-# 306f0588bb5148dab4d4a97e5bb35889
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:74
-msgid "History"
-msgstr "Historia"
-
-# cc8f5e8248314554bd506fc27f7208ed
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:75
-msgid "Renamed in version 2.0.0"
-msgstr "Renombrado en la versión 2.0.0"
-
-# 9db1973c0a0b4420afe780fa3d4b3d0f
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:79
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 3f34e359dbd242b6a82b49b0beb2acd5
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:81
-msgid "Without ``reverse_cost``"
-msgstr "Sin ``reverse_cost``"
-
-# f58a8bec8b9447f59bf31eb2d52c7782
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:101
-msgid "With ``reverse_cost``"
-msgstr "Con ``reverse_cost``"
-
-# f6d9ddd77a7c48dcaafa2cd1225d8e27
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:121
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "La consulta usa la red de ejemplo :ref:`sampledata`"
-
-# 15ad7ce30a424139b00e9874b4461215
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:125
-msgid "See Also"
-msgstr "Véase también"
-
-# 04113586118441f6b13f5bf83f5fa224
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:127
-msgid ":ref:`pgr_alphashape` - Alpha shape computation"
-msgstr ":ref:`pgr_alphashape` - cómputo de forma alfa"
-
-# b474eeeca7284f5f983f498713f1640f
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:128
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ":ref:`pgr_points_as_polygon` - Polígono alrededor del conjunto de puntos"
diff --git a/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po b/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po
deleted file mode 100644
index ec3d583..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po
+++ /dev/null
@@ -1,123 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 15:30+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# a2329478f830474e9819c418ae391538
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:13
-msgid "pgr_pointsAsPolygon"
-msgstr "pgr_pointsAsPolygon"
-
-# df6c5bd4620d47ae9f8682195aca1e18
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# 968dbf3147554bcc994e903e5917a0bd
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:22
-msgid ""
-"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
-msgstr "``pgr_pointsAsPolygon`` — Dibuja un figura Alfa alrededor de un conjunto de puntos dado."
-
-# 0b81c4a0e03d47938cd256882a6facac
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 568b6a3cf23a4a7980b7796df73d334b
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:28
-msgid "Returns the alpha shape as polygon geometry."
-msgstr "Devuelve la forma alfa con geometría de polígono."
-
-# 240f6c0c9ac848a2b1815408c264a3d7
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:36
-msgid "Description"
-msgstr "Descripción"
-
-# bfa10edae1114295852086c42f84d811
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:38
-msgid ""
-"``text`` a SQL query, which should return a set of rows with the following "
-"columns:"
-msgstr "``text`` una consulta SQL la cual debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# d3ca4ae81d3e4a709a2fda2d60f23946
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:44
-msgid "``int4`` identifier of the vertex"
-msgstr "``int4`` Identificador del vértice"
-
-# 10e342dfa5274ea89ea284bd657b2469
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:45
-msgid "``float8`` x-coordinate"
-msgstr "``float8`` coordenada x "
-
-# d36090e578224b30b065a3c28f26d565
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:46
-msgid "``float8`` y-coordinate"
-msgstr "``float8`` coordenada y "
-
-# 1029622f3ac34a30abc0f3babfe7118f
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:49
-msgid "Returns a polygon geometry."
-msgstr "Devuelve una geometría polígonal."
-
-# 49392543fb984b5f922e683b9ba560c5
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:53
-msgid "History"
-msgstr "Historia"
-
-# b00e0e03870244cca7aa9e1c81bad9c1
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:54
-msgid "Renamed in version 2.0.0"
-msgstr "Renombrado en la versión 2.0.0"
-
-# f8001d60b6d54b67afc641f38b8e5b4a
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:58
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 7e01fc6f880549e7b7bde01255cc2811
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:59
-msgid ""
-"In the following query there is not way to control which point in the "
-"polygon is the first in the list, so you may get similar but different "
-"results than the following which are also correct. Each of the "
-"pgr_pointsAsPolygon queries below is followed by one the compute the area of"
-" the polygon. This area should remain constant regardles of the order of the"
-" points making up the polygon."
-msgstr "En la siguiente consulta no hay manera de controlar cúal punto del polígono es el primero en la lista, así obtendrá resultados similares pero diferentes en orden, pero que también es correctos. Cada una de las consultas de pgr_pointsAsPolygon en los ejemplos es seguida por una consulta para calcular el área del polígono. Esta área debe permanecer constante independientemente del orden de los puntos que componen el polígono."
-
-# 1deae2c2bb624110980cf832e66993d9
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:93
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Las consulta usa la red de ejemplo :ref:`sampledata`"
-
-# 801871cf3dd94fd292387e49941223e3
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:97
-msgid "See Also"
-msgstr "Véase también"
-
-# abc4c217086645fe88ff21568ab13c50
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:99
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ":ref:`pgr_driving_distance` - Distancia de Manejo"
-
-# 51bae94aaf75403a81353100c953d805
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:100
-msgid ":ref:`pgr_alphashape` - Alpha shape computation"
-msgstr ":ref:`pgr_alphashape` - cómputo de forma alfa"
diff --git a/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/index.po
deleted file mode 100644
index 855303c..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/driving_distance/doc/index.po
+++ /dev/null
@@ -1,44 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:30+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# e9aef9785bf0499da38e2e756f2700fb
-#: ../../../src/driving_distance/doc/index.rst:13
-msgid "With Driving Distance Enabled"
-msgstr "Con la Distancia de Manejo habilitado"
-
-# 967085e625794af29ef0172018c5c769
-#: ../../../src/driving_distance/doc/index.rst:15
-msgid "Driving distance related Functions"
-msgstr "Funciones relacionadas con Distancia de Manejo"
-
-# 76dcc44d160d4f0685643212eaf200ce
-#: ../../../src/driving_distance/doc/index.rst:17
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ":ref:`pgr_driving_distance` - distancia de conducción"
-
-# 4c32169269334f48bd2156c654b2d731
-#: ../../../src/driving_distance/doc/index.rst:18
-msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
-msgstr ":ref:`pgr_alphashape` - Cómputo de forma alfa"
-
-# 30e3ee3c37034338ade626c18f4fdd15
-#: ../../../src/driving_distance/doc/index.rst:19
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ":ref:`pgr_points_as_polygon` - Polígono alrededor del conjunto de puntos"
diff --git a/doc/i18n/es/LC_MESSAGES/src/index.po b/doc/i18n/es/LC_MESSAGES/src/index.po
deleted file mode 100644
index a7e2492..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/index.po
+++ /dev/null
@@ -1,81 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# a7c0f1373b4a433684d0580309cec634
-#: ../../../src/index.rst:13
-msgid "Routing Functions"
-msgstr "Funciones para Enrrutamiento"
-
-# 4e64e043a06f42cabd4c08c71b866662
-#: ../../../src/index.rst:15
-msgid ""
-":ref:`pgr_apspJohnson <pgr_apsp_johnson>`- All Pairs Shortest Path, "
-"Johnson’s Algorithm"
-msgstr ":ref:`pgr_apspJohnson <pgr_apsp_johnson>` - algoritmo de la ruta más corta de todos los pares de Johnson"
-
-# 19f78548228b4618bcec3c9f7603b2d0
-#: ../../../src/index.rst:16
-msgid ""
-":ref:`pgr_apspWarshall<pgr_apsp_warshall>` - All Pairs Shortest Path, Floyd-"
-"Warshall Algorithm"
-msgstr ":ref:`pgr_apspWarshall<pgr_apsp_warshall>` - camino más corto de todos los pares, Algoritmo de Floyd-Warshall"
-
-# cf861ca040624d81961f9ca0520b92ad
-#: ../../../src/index.rst:17
-msgid ":ref:`pgr_astar<pgr_astar>` - Shortest Path A*"
-msgstr ":ref:`pgr_astar<pgr_astar>` - Camino más corto A*"
-
-# c5b280cd3cef4722abbfa6362d721aed
-#: ../../../src/index.rst:18
-msgid ":ref:`pgr_bdAstar<bd_astar>` - Bi-directional A* Shortest Path"
-msgstr ":ref:`pgr_bdAstar<bd_astar>` - Camino más corto bidireccional A*"
-
-# 0e20115c70e4487d9eb50b8ca6dd4c2b
-#: ../../../src/index.rst:19
-msgid ""
-":ref:`pgr_bdDijkstra<bd_dijkstra>` - Bi-directional Dijkstra Shortest Path"
-msgstr ":ref:`pgr_bdDijkstra<bd_dijkstra>` - Camino más corto bidireccional de Dijkstra"
-
-# cdb0bd03676b4bfca36fd4dc10b0473a
-#: ../../../src/index.rst:20
-msgid ":ref:`pgr_dijkstra<pgr_dijkstra>` - Shortest Path Dijkstra"
-msgstr ":ref:`pgr_dijkstra<pgr_dijkstra>` - Camino más corto de Dijkstra"
-
-# 7f1f5596a0d54dbd9672956b7463e7b4
-#: ../../../src/index.rst:21
-msgid ""
-":ref:`pgr_kDijkstra<pgr_kdijkstra>` - Mutliple destination Shortest Path "
-"Dijkstra"
-msgstr ":ref:`pgr_kDijkstra<pgr_kdijkstra>` - Camino más corto camino con múltiples destinos de Dijkstra"
-
-# 4ff10fab541f4f7686ef8163d75aa200
-#: ../../../src/index.rst:22
-msgid ":ref:`pgr_ksp<ksp>` - K-Shortest Path"
-msgstr ":ref:`pgr_ksp<ksp>` - Camino más corto K"
-
-# 6cec1b719ac34893b665a4b16b2f7f58
-#: ../../../src/index.rst:23
-msgid ":ref:`pgr_tsp<pgr_tsp>` - Traveling Sales Person"
-msgstr ":ref:`pgr_tsp<pgr_tsp>` - Vendedor Viajante"
-
-# 525e92b52a974d73b4bac048a34bd9c9
-#: ../../../src/index.rst:24
-msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
-msgstr ":ref:`pgr_trsp<trsp>` - Camino más corto con giros restringidos (TRSP)"
diff --git a/doc/i18n/es/LC_MESSAGES/src/kdijkstra/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/kdijkstra/doc/index.po
deleted file mode 100644
index 6e7bbfe..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/kdijkstra/doc/index.po
+++ /dev/null
@@ -1,231 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 18:01+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 36e2253743a8455dbfbf75b26155205f
-#: ../../../src/kdijkstra/doc/index.rst:13
-msgid "pgr_kDijkstra - Mutliple destination Shortest Path Dijkstra"
-msgstr "pgr_kDijkstra - Camino más corto camino con múltiples destinos de Dijkstra"
-
-# 9f432bf1623d4a299d50ff492edbd66b
-#: ../../../src/kdijkstra/doc/index.rst:21
-msgid "Name"
-msgstr "Nombre"
-
-# 57c34a235f7a4cea8458d98a50a54e77
-#: ../../../src/kdijkstra/doc/index.rst:23
-msgid ""
-"``pgr_kdijkstraCost`` - Returns the costs for K shortest paths using "
-"Dijkstra algorithm."
-msgstr "``pgr_kdijkstraCost`` - Devuelve los costos de K caminos más cortos usando el algoritmo de Dijkstra."
-
-# ce7c4be9a502473591591e4d330d46e7
-#: ../../../src/kdijkstra/doc/index.rst:24
-msgid ""
-"``pgr_kdijkstraPath`` - Returns the paths for K shortest paths using "
-"Dijkstra algorithm."
-msgstr "``pgr_kdijkstraPath`` - Devuelve los K caminos más cortos usando el algoritmo de Dijkstra."
-
-# 130c100b24ac47d4afd3b8ae17ea1335
-#: ../../../src/kdijkstra/doc/index.rst:28
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 1b2f7dd687d84d76bbc57fc3ad8ed5ec
-#: ../../../src/kdijkstra/doc/index.rst:30
-msgid ""
-"These functions allow you to have a single start node and multiple "
-"destination nodes and will compute the routes to all the destinations from "
-"the source node. Returns a set of :ref:`pgr_costResult3 <type_cost_result3>`"
-" or :ref:`pgr_costResult3 <type_cost_result3>`. ``pgr_kdijkstraCost`` "
-"returns one record for each destination node and the cost is the total code "
-"of the route to that node. ``pgr_kdijkstraPath`` returns one record for "
-"every edge in that path from source to destination and the cost is to "
-"traverse that edge."
-msgstr "Estas funciones permiten calcular las rutas a todos los destinos desde un nodo de partida único hasta múltiples nodos de destino. Devuelve un conjunto de :ref:`pgr_costResult <type_cost_result>` o de :ref:`pgr_costResult3 <type_cost_result3>`. ``pgr_kdijkstraCost`` devuelve un registro para cada nodo destino y el costo total de la ruta hasta ese nodo. ``pgr_kdijkstraPath`` devuelve un registro por cada borde en la ruta desde la fuente hasta el destino junto con el costo para at [...]
-
-# 06379d79c78b4c9bb92226bc66c58c3f
-#: ../../../src/kdijkstra/doc/index.rst:42
-msgid "Description"
-msgstr "Descripción"
-
-# 84671f541e384cf79360df9e260a5f52
-#: ../../../src/kdijkstra/doc/index.rst:44
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "Consulta SQL que debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# adccb52524354a6c92d9d45edb967dc0
-#: ../../../src/kdijkstra/doc/index.rst:51
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` Identificador del borde"
-
-# 5b2a072be67f471a8ab0c6b3daddcc48
-#: ../../../src/kdijkstra/doc/index.rst:52
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` Identificador del vértice inicial del borde"
-
-# d00470fb22ae4294a3cf56db3d064839
-#: ../../../src/kdijkstra/doc/index.rst:53
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` Identificador del vértice final del borde"
-
-# 4bdbc59e5d2d46ba94031caa56975d17
-#: ../../../src/kdijkstra/doc/index.rst:54
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valor del costo del recorrido sobre el borde. Un costo negativo evitará que el borde sea insertado en el gráfico."
-
-# 569cecbec8e34fa9942c4bcf4ce0c6a4
-#: ../../../src/kdijkstra/doc/index.rst:55
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(opcional) El costo para el recorrido inverso del borde. Esto sólo se utiliza cuando los parámetros ``directed`` y ``has_rcost`` son ``True`` (ver el comentario anterior sobre los costos negativos)."
-
-# b3c8762d18e14a65b4d45ca5b654dabd
-#: ../../../src/kdijkstra/doc/index.rst:57
-msgid "``int4`` id of the start point"
-msgstr "``int4`` Identificador del punto de partida"
-
-# 552184e10f0940f09327b71d0a2a5293
-#: ../../../src/kdijkstra/doc/index.rst:58
-msgid "``int4[]`` an array of ids of the end points"
-msgstr "``int4[]`` Una matriz de identificadores de los puntos de llegada"
-
-# 6bee551c7fae494d9429ddf6404f457a
-#: ../../../src/kdijkstra/doc/index.rst:59
-msgid "``true`` if the graph is directed"
-msgstr "``true`` Si la gráfica es direccionada"
-
-# c79e8fecdbb94d6f836a2fb692d24fea
-#: ../../../src/kdijkstra/doc/index.rst:60
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "Si es ``True``, el campo ``reverse_cost`` del conjunto de registros generados se utilizan para el calcular el costo de la travesía del borde en la dirección opuesta."
-
-# fe741d49c0f94473971ebcad7951456b
-#: ../../../src/kdijkstra/doc/index.rst:63
-msgid "``pgr_kdijkstraCost`` returns set of :ref:`type_cost_result`:"
-msgstr "``pgr_kdijkstraCost`` devuelve el conjunto de :ref:`type_cost_result`:"
-
-# 2325329e3ec24e3cbe4c347369b857a4
-# 2ac53854f37a48a89b705310628c4d3e
-#: ../../../src/kdijkstra/doc/index.rst:65
-#: ../../../src/kdijkstra/doc/index.rst:73
-msgid "row sequence"
-msgstr "Secuencia de registros"
-
-# 73cb6093021a456aace98c1f58641bef
-#: ../../../src/kdijkstra/doc/index.rst:66
-msgid ""
-"path vertex source id (this will always be source start point in the query)."
-msgstr "Identificador del vértice de llegada (esto siempre será punto de partida en la consulta)."
-
-# 9afd4e01323945118421ebb27f420068
-#: ../../../src/kdijkstra/doc/index.rst:67
-msgid "path vertex target id"
-msgstr "Identificador del vértice de llegada. "
-
-# 8b3c8fe211a147f4b031db8a8d899ddd
-#: ../../../src/kdijkstra/doc/index.rst:68
-msgid ""
-"cost to traverse the path from ``id1`` to ``id2``. Cost will be -1.0 if "
-"there is no path to that target vertex id."
-msgstr "Costo para recorrer el camino desde ``id1`` hasta ``id2``. Costo será -1.0 si no hay camino al identificador de vértice de destino."
-
-# 703a5ecca86b4ef4ba2c275d9ba8a20f
-#: ../../../src/kdijkstra/doc/index.rst:71
-msgid "``pgr_kdijkstraPath`` returns set of :ref:`type_cost_result3`:"
-msgstr "``pgr_kdijkstraPath`` devuelve el conjunto de :ref:`type_cost_result3`:"
-
-# 7fc792793b7c4e65ba68cea3f25384aa
-#: ../../../src/kdijkstra/doc/index.rst:74
-msgid "path target id (identifies the target path)."
-msgstr "Identificador de \"este borde\" de la ruta (hacia el destino)."
-
-# c43bcd54fee6435fbe6afd2ec4bb6d65
-#: ../../../src/kdijkstra/doc/index.rst:75
-msgid "path edge source node id"
-msgstr "id del nodo de partida en \"este borde\""
-
-# a567112ee5584a46ac397cb9783627a8
-#: ../../../src/kdijkstra/doc/index.rst:76
-msgid "path edge id (``-1`` for the last row)"
-msgstr "id de \"este borde\" (``-1`` para la última fila)"
-
-# 47af04f2ce09412f8475df30be9581ae
-#: ../../../src/kdijkstra/doc/index.rst:77
-msgid "cost to traverse this edge or -1.0 if there is no path to this target"
-msgstr "Costo para atravesar este borde o -1.0 si no hay ningún camino"
-
-# e7349c2020bc491aaa02b3eb1ebca791
-#: ../../../src/kdijkstra/doc/index.rst:81
-msgid "History"
-msgstr "Historia"
-
-# f7b3cf1f2e494a4c8697b712adcbd1fc
-#: ../../../src/kdijkstra/doc/index.rst:82
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# adf5de36019d4982b76cd696909168b0
-#: ../../../src/kdijkstra/doc/index.rst:86
-msgid "Examples"
-msgstr "Ejemplos"
-
-# f332ab5afb39404284be98f0e9a2c8dc
-#: ../../../src/kdijkstra/doc/index.rst:88
-msgid "Returning a ``cost`` result"
-msgstr "Devolviendo un resultado de costos ``cost``"
-
-# cb5abec6a55e41a4a61c22fd3f461110
-#: ../../../src/kdijkstra/doc/index.rst:123
-msgid "Returning a ``path`` result"
-msgstr "Devolviendo resultado de un trayecto ``path`` "
-
-# d2e7b4076702425a9c6928a0cc4b997e
-#: ../../../src/kdijkstra/doc/index.rst:144
-msgid ""
-"There is no assurance that the result above will be ordered in the direction"
-" of flow of the route, ie: it might be reversed. You will need to check if "
-"``st_startPoint()`` of the route is the same as the start node location and "
-"if it is not then call ``st_reverse()`` to reverse the direction of the "
-"route. This behavior is a function of PostGIS functions ``st_linemerge()`` "
-"and ``st_union()`` and not pgRouting."
-msgstr "No hay ninguna garantía de que el resultado anterior esté ordenado en la dirección del flujo de la ruta, es decir, puede estar invertido. Usted necesitará comprobar si ``st_startPoint()`` de la ruta es la misma que la ubicación del nodo de inicio y si no, entonces utilizar ``st_reverse()`` para invertir la dirección de la ruta. Este comportamiento es de funciones pertenecientes a PostGIS ``st_linemerge()`` y ``st_union()`` y no pertenecen a pgRouting."
-
-# d6928031c7d047a5999f03c79c5bcfea
-#: ../../../src/kdijkstra/doc/index.rst:153
-msgid "See Also"
-msgstr "Véase también"
-
-# cd86a4612fe944acbe5a39daaf52dafd
-#: ../../../src/kdijkstra/doc/index.rst:155
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# c2386bf8c6314521abe162d0bf548225
-#: ../../../src/kdijkstra/doc/index.rst:156
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
diff --git a/doc/i18n/es/LC_MESSAGES/src/ksp/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/ksp/doc/index.po
deleted file mode 100644
index e0f9430..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/ksp/doc/index.po
+++ /dev/null
@@ -1,192 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 17:03+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# dc72571c7ce5498b92c659e3e482c885
-#: ../../../src/ksp/doc/index.rst:13
-msgid "pgr_ksp - K-Shortest Path"
-msgstr "pgr_ksp - K caminos más cortos"
-
-# 57b24beea69846f58a8cb9b1a7a892b5
-#: ../../../src/ksp/doc/index.rst:20
-msgid "Name"
-msgstr "Nombre"
-
-# b3d0fc92b23443c8b718233c1e16f052
-#: ../../../src/ksp/doc/index.rst:22
-msgid "``pgr_ksp`` — Returns the \"K\" shortest paths."
-msgstr "``pgr_ksp`` — Devuelve K caminos más cortos. "
-
-# 0e60ee2dfa944557a1e9c76106489a7f
-#: ../../../src/ksp/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# bcf915dc485c4e3b90c9a8ea251b55d1
-#: ../../../src/ksp/doc/index.rst:28
-msgid ""
-"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
-" number of shortest paths desired. Returns a set of :ref:`pgr_costResult3 "
-"<type_cost_result3>` (seq, id1, id2, id3, cost) rows, that make up a path."
-msgstr "El algoritmo del camino más corto K, está basado en el algoritmo de Yen. \"K\" es el número de caminos más cortos deseados. Regresa un conjunto de registros :ref:`pgr_costResult3 <type_cost_result3>` (seq, id1, id2, id3, cost) que conforman K caminos."
-
-# 46b5ce0d54a64718819888b77b007080
-#: ../../../src/ksp/doc/index.rst:37
-msgid "Description"
-msgstr "Descripción"
-
-# dddbbca8781f41eab4aac1d4e2ecdf32
-#: ../../../src/ksp/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "Consulta SQL, que debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# 575d21e3bc994dc3a92a7c6cbb0ed6a2
-#: ../../../src/ksp/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identificador del borde"
-
-# 589751b9c7d34dac9b4eeb12894fd648
-#: ../../../src/ksp/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` Identificador del vértice inicial de este borde"
-
-# 6567c097438040d9b678e88df7521b35
-#: ../../../src/ksp/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` Identificador del vértice final del borde"
-
-# a1e24bd423dd445889b72928d964a5ec
-#: ../../../src/ksp/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valor del costo del recorrido sobre el borde. Un costo negativo evitará que el borde sea insertado en el gráfico."
-
-# ed76ed5e3a504c7aa3a35ea3fa5b4c16
-#: ../../../src/ksp/doc/index.rst:50
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when ``has_rcost`` the parameter is ``true`` (see the above remark about "
-"negative costs)."
-msgstr "(opcional) el costo para el recorrido inverso del borde. Se utiliza sólo cuando el parámetro ``has_rcost`` es ``True`` (ver el comentario anterior acerca de los costos negativos)."
-
-# 588bdec4303b49869b6d1eedd541c198
-#: ../../../src/ksp/doc/index.rst:52
-msgid "``int4`` id of the start point"
-msgstr "``int4`` Identificador del punto de partida"
-
-# 96b44480fac34f6286b863e6c75d4d8a
-#: ../../../src/ksp/doc/index.rst:53
-msgid "``int4`` id of the end point"
-msgstr "``int4`` Identificador del punto de llegada"
-
-# 0ffd51df58754f0b89f1b3ad6f75b632
-#: ../../../src/ksp/doc/index.rst:54
-msgid "``int4`` number of alternative routes"
-msgstr "``int4`` Cantidad de rutas alternativas"
-
-# 0fc58370aa30454ea32a2c8b9f3b14a3
-#: ../../../src/ksp/doc/index.rst:55
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "Si es ``True``, el campo ``reverse_cost`` del conjunto de registros generados se utilizan para el calcular el costo de la travesía del borde en la dirección opuesta."
-
-# dc8dfcffbd604441a95743930181b042
-#: ../../../src/ksp/doc/index.rst:57
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Arroja un conjunto del tipo de datos :ref:`type_cost_result`:"
-
-# 611d6bbb82ca4987ae39fd45bb107c2b
-#: ../../../src/ksp/doc/index.rst:59
-msgid "sequence for ording the results"
-msgstr "secuencia para ordenar los resultados"
-
-# b79966a030e04ee3b5e992b5a6858947
-#: ../../../src/ksp/doc/index.rst:60
-msgid "route ID"
-msgstr "Identificador de la ruta"
-
-# a324539cdc2e4202b416aa19693d1c3f
-#: ../../../src/ksp/doc/index.rst:61
-msgid "node ID"
-msgstr "Identificador del nodo visitado"
-
-# 4d87667a7b744eec999819b399fee50c
-#: ../../../src/ksp/doc/index.rst:62
-msgid "edge ID (``0`` for the last row)"
-msgstr "Identificador del borde ( ``0`` para el ultimo registro)"
-
-# baaba3dc621142bd8fc6b8ba32eb2b2e
-#: ../../../src/ksp/doc/index.rst:63
-msgid "cost to traverse from ``id2`` using ``id3``"
-msgstr "costo para atravesar desde el nodo ``id2`` usando el borde ``id3`` hasta su otro extremo"
-
-# b585e07096f74b0389f8b7dffc969faa
-#: ../../../src/ksp/doc/index.rst:65
-msgid ""
-"KSP code base taken from http://code.google.com/p/k-shortest-paths/source."
-msgstr "El código base de KSP fue adquirido de http://code.google.com/p/k-shortest-paths/source."
-
-# 2d033ec25b09426c82d7bc27450b0e13
-#: ../../../src/ksp/doc/index.rst:69
-msgid "History"
-msgstr "Historia"
-
-# 2910d7995ec342b995c857c1e8ea0ac3
-#: ../../../src/ksp/doc/index.rst:70
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 0fb494088fa241d6a4aa5482217c2851
-#: ../../../src/ksp/doc/index.rst:74
-msgid "Examples"
-msgstr "Ejemplos"
-
-# d3ea07b1c58a42ea9f68558e55eb90a0
-#: ../../../src/ksp/doc/index.rst:76
-msgid "Without ``reverse_cost``"
-msgstr "Sin ``reverse_cost``"
-
-# 7c55b739634c4401b46c4014669d2896
-#: ../../../src/ksp/doc/index.rst:104
-msgid "With ``reverse_cost``"
-msgstr "Con ``reverse_cost``"
-
-# 2412b0b4ec044973a1c2304488a73b1a
-#: ../../../src/ksp/doc/index.rst:131
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# 14d58e1d3a8f4723bb11ed549594cb26
-#: ../../../src/ksp/doc/index.rst:135
-msgid "See Also"
-msgstr "Véase también"
-
-# 73cf1bb94518468996cdd3ff6bf897be
-#: ../../../src/ksp/doc/index.rst:137
-msgid ":ref:`type_cost_result3`"
-msgstr ":ref:`type_cost_result3`"
-
-# 3dde120556744d3f9ce7d6e9b9f0c1ee
-#: ../../../src/ksp/doc/index.rst:138
-msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
-msgstr "http://en.wikipedia.org/wiki/K_shortest_path_routing"
diff --git a/doc/i18n/es/LC_MESSAGES/src/trsp/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/trsp/doc/index.po
deleted file mode 100644
index 464e422..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/trsp/doc/index.po
+++ /dev/null
@@ -1,260 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 17:05+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 15b2085c08994c0bafb02ec924886b36
-#: ../../../src/trsp/doc/index.rst:13
-msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
-msgstr "pgr_trsp - Camino más corto con giros restringidos (TRSP)"
-
-# 001ce231c65b42a19a62809e63a0b153
-#: ../../../src/trsp/doc/index.rst:23
-msgid "Name"
-msgstr "Nombre"
-
-# e7d332e28a5540d2af454386b4bf39e5
-#: ../../../src/trsp/doc/index.rst:25
-msgid ""
-"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
-msgstr "``pgr_trsp`` — Devuelve el camino más corto con soporte para restricciones de giros"
-
-# 9f0ad26664fc4d2aa44b49daf329cbcf
-#: ../../../src/trsp/doc/index.rst:29
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# 2d74de00ff7144f1a68f40ec98315004
-#: ../../../src/trsp/doc/index.rst:31
-msgid ""
-"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
-"can optionally take into account complicated turn restrictions like those "
-"found in real work navigable road networks. Performamnce wise it is nearly "
-"as fast as the A* search but has many additional features like it works with"
-" edges rather than the nodes of the network. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
-"make up a path."
-msgstr "El Camino más corto con giros restringido (TRSP), es un algoritmo de camino más corto que puede tomar en cuenta complicadas restricciones de giro, como las encontrados en las redes de carreteras navegables reales. El rendimiento es casi tan rápido como la búsqueda A\\*, pero tiene muchas características adicionales como funcionalidad en base a los bordes en vez de basarse en los nodos de la red. Devuelve un conjunto de registros :ref:`pgr_costResult <type_cost_result>` (seq, id1, [...]
-
-# 258764bba06c4ef58ac4b5f8fc99fa51
-#: ../../../src/trsp/doc/index.rst:47
-msgid "Description"
-msgstr "Descripción"
-
-# db4ead8b9b724ada9fcd352b21c13c47
-#: ../../../src/trsp/doc/index.rst:49
-msgid ""
-"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
-":ref:`shooting_star` in that you can specify turn restrictions."
-msgstr "El algoritmo del Camino más corto con giros restringidos (TRSP) es similar al de :ref:`shooting_star` en cuanto a que puede uno especificar restricciones de giros."
-
-# f8c43b665915464c9bfc35604fd91aee
-#: ../../../src/trsp/doc/index.rst:51
-msgid ""
-"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
-"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
-"This makes adding turn restrictions to a road network much easier than "
-"trying to add them to Shooting Star where you had to ad the same edges "
-"multiple times if it was involved in a restriction."
-msgstr "La configuración del TRSP es parecido al del :ref:`camino más corto de Dijkstra<pgr_dijkstra>` con el añadido de una tabla de restricciones de giros que es opcional. Esto hace que añadir restricciones de giro a una red de carreteras sea más fácil en comparación con del algoritmo de estrella fugaz en la que había que agregar los bordes varias veces cuando estaba involucrado en una restricción."
-
-# b95a0195c5bd43caa2d6cfb1f998a956
-#: ../../../src/trsp/doc/index.rst:54
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "Consulta SQL que debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# 580e965db4a1466da14357ff969e2429
-#: ../../../src/trsp/doc/index.rst:61
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` Identificador del borde"
-
-# 1240ecd9b29e479ca8b980c6282c5182
-#: ../../../src/trsp/doc/index.rst:62
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` Identificador del vértice inicial del borde"
-
-# f155b6dee53749049cc6a9eac4126083
-#: ../../../src/trsp/doc/index.rst:63
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` Identificador del vértice final del borde"
-
-# 882a25b98f4f4c7cb2f288cf7c327c4a
-#: ../../../src/trsp/doc/index.rst:64
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valor del costo del recorrido sobre el borde. Un costo negativo evitará que el borde sea insertado en el gráfico."
-
-# 0a3a626251a840ab96796ef2ab9b91c5
-#: ../../../src/trsp/doc/index.rst:65
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(opcional) El costo para el recorrido inverso del borde. Esto sólo se utiliza cuando los parámetros ``directed`` y ``has_rcost`` son ``True`` (ver el comentario anterior sobre los costos negativos)."
-
-# 510dbeaa32914dc18ed3e6799281fbef
-#: ../../../src/trsp/doc/index.rst:67
-msgid "``int4`` **NODE id** of the start point"
-msgstr "``int4`` **identificador** del nodo de partida"
-
-# ece6f31366044417b07933b2c817c5df
-#: ../../../src/trsp/doc/index.rst:68
-msgid "``int4`` **NODE id** of the end point"
-msgstr "``int4`` **identificador** del nodo de llegada"
-
-# 31ad6aa2c51741de8dbafceaf67d397a
-#: ../../../src/trsp/doc/index.rst:69
-msgid "``true`` if the graph is directed"
-msgstr "``true`` Si la gráfica es direccionada"
-
-# 6605eca503604a6daa20167fcbdd05fa
-#: ../../../src/trsp/doc/index.rst:70
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "Si es ``True``, el campo ``reverse_cost`` del conjunto de registros generados se utilizan para el calcular el costo de la travesía del borde en la dirección opuesta."
-
-# 332748df482046d7b70e9012364915e3
-#: ../../../src/trsp/doc/index.rst:72
-msgid ""
-"(optional) a SQL query, which should return a set of rows with the following"
-" columns:"
-msgstr "(opcional) una consulta SQL, que debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# 936b80e377bd457081e14e36770ab130
-#: ../../../src/trsp/doc/index.rst:78
-msgid "``float8`` turn restriction cost"
-msgstr "``float8`` restricción del costo de giro"
-
-# d1715703f624412385536b88c78a32df
-#: ../../../src/trsp/doc/index.rst:79
-msgid "``int4`` target id"
-msgstr "``int4`` identificador del borde donde se aplica la restricción"
-
-# 83a22871a9f6419190e4bf313f49c672
-#: ../../../src/trsp/doc/index.rst:80
-msgid ""
-"``text`` commar seperated list of edges in the reverse order of ``rule``"
-msgstr "`text`` lista de bordes separados por comas que llegan al borde ``target_id`` que conforman esta restricción "
-
-# d0f078a9c92348a9bc1e880a0835b24c
-#: ../../../src/trsp/doc/index.rst:82
-msgid ""
-"Another variant of TRSP allows to specify **EDGE id** of source and target "
-"together with a fraction to interpolate the position:"
-msgstr "Otra variante de TRSP que permite especificar el **Identificador del borde** de partida y de llegada junto con una fracción para interpolar la posición:"
-
-# 021daf08280643738cfc9e67f4fa6fce
-#: ../../../src/trsp/doc/index.rst:84
-msgid "``int4`` **EDGE id** of the start edge"
-msgstr "``int4`` **identificador del borde** de partida"
-
-# 6c0b782e2a2d4ee7aac26b031327b48d
-#: ../../../src/trsp/doc/index.rst:85
-msgid "``float8`` fraction of 1 defines the position on the start edge"
-msgstr "``float8`` fracción de 1 que define la posición del sobre el borde de partida."
-
-# 4f60cd31727245739cba5b4be8840191
-#: ../../../src/trsp/doc/index.rst:86
-msgid "``int4`` **EDGE id** of the end edge"
-msgstr "``int4`` **Identificador del borde** de llegada"
-
-# 8a114786a737431f9d36f79718505b0c
-#: ../../../src/trsp/doc/index.rst:87
-msgid "``float8`` fraction of 1 defines the position on the end edge"
-msgstr "``float8`` fracción de 1 que define la posición del sobre el borde de llegada."
-
-# 164eff72cc834e76afafdb24fae73b05
-#: ../../../src/trsp/doc/index.rst:89
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Devuelve un conjunto del tipo de datos :ref:`type_cost_result`:"
-
-# f1e7b63cce7e45dca113b9c63b80531a
-#: ../../../src/trsp/doc/index.rst:91
-msgid "row sequence"
-msgstr "Secuencia de registros"
-
-# 9224c385fbc84c6fb16a5752bb0dcf0f
-#: ../../../src/trsp/doc/index.rst:92
-msgid "node ID"
-msgstr "Identificador del nodo visitado"
-
-# 838eabec61db4ac1a64b9bb7b12a5bec
-#: ../../../src/trsp/doc/index.rst:93
-msgid "edge ID (``-1`` for the last row)"
-msgstr "identificador del borde (``-1`` para el último borde)"
-
-# dd4d4036ca89412ca65bb9dc36a98ff5
-#: ../../../src/trsp/doc/index.rst:94
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "Costo para el recorrido desde el nodo ``id1`` usando el borde ``id2`` hasta su otro extremo"
-
-# 3e879e6cbece4a27afe4738bdef1080b
-#: ../../../src/trsp/doc/index.rst:98
-msgid "History"
-msgstr "Historia"
-
-# 16b0789da1954e179858d593d9973be6
-#: ../../../src/trsp/doc/index.rst:99
-msgid "New in version 2.0.0"
-msgstr "Nuevo en la versión 2.0.0"
-
-# 36dc0630c4e04859ba0a41aa3da19ed6
-#: ../../../src/trsp/doc/index.rst:103
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 0c40d66ced8b4b48914b3bb328c5f10e
-#: ../../../src/trsp/doc/index.rst:105
-msgid "Without turn restrictions"
-msgstr "Sin restricción de giros"
-
-# 456ae3d3abc547978bd147c884275ac6
-#: ../../../src/trsp/doc/index.rst:126
-msgid "With turn restrictions"
-msgstr "Con restricción de giros"
-
-# 2541f0dba78f4dfe93fcda086ddeba34
-#: ../../../src/trsp/doc/index.rst:128
-msgid ""
-"Turn restrictions require additional information, which can be stored in a "
-"separate table:"
-msgstr "Las restricciones de giro requieren de información adicional, que puede ser almacenado en una tabla por separado:"
-
-# 4d9e1ab740a44fe990829e06dcc32f65
-#: ../../../src/trsp/doc/index.rst:144
-msgid "Then a query with turn restrictions is created as:"
-msgstr "Entonces una consulta con restricciones de giro es creada de la siguiente forma:"
-
-# 61dd0262b80b4db58f637fe5d2dd1ae8
-#: ../../../src/trsp/doc/index.rst:167
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# 48bf89e209cc4518904b1b99e1a89f99
-#: ../../../src/trsp/doc/index.rst:171
-msgid "See Also"
-msgstr "Véase también"
-
-# 7988e08198b04952bc5a1cb22cce310f
-#: ../../../src/trsp/doc/index.rst:173
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
diff --git a/doc/i18n/es/LC_MESSAGES/src/tsp/doc/index.po b/doc/i18n/es/LC_MESSAGES/src/tsp/doc/index.po
deleted file mode 100644
index 5591fe8..0000000
--- a/doc/i18n/es/LC_MESSAGES/src/tsp/doc/index.po
+++ /dev/null
@@ -1,353 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-21 17:40+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/pgrouting/language/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-# 588bb56f073f49f89c741579fbc2c17c
-#: ../../../src/tsp/doc/index.rst:13
-msgid "pgr_tsp - Traveling Sales Person"
-msgstr "pgr_tsp - Vendedor Viajante"
-
-# f69daf53ba3c47ca846fbcbbcf6aa25d
-#: ../../../src/tsp/doc/index.rst:23
-msgid "Name"
-msgstr "Nombre"
-
-# 5ccbfce91c604bac96d73fdbc656f675
-#: ../../../src/tsp/doc/index.rst:25
-msgid ""
-"``pgr_tsp`` - Returns the best route from a start node via a list of nodes."
-msgstr "``pgr_tsp`` - Devuelve la mejor ruta desde un nodo inicial vía un lista de nodos."
-
-# cd69b4b6495b448fa23e10806d8cd704
-#: ../../../src/tsp/doc/index.rst:26
-msgid ""
-"``pgr_tsp`` - Returns the best route order when passed a disance matrix."
-msgstr "``pgr_tsp`` - Devuelve el mejor orden de la ruta cuando se le introduce una matriz de distancias"
-
-# eee8057e1f874582a8d82dbf95c33b83
-#: ../../../src/tsp/doc/index.rst:27
-msgid ""
-"``pgr_makeDistanceMatrix`` - Returns a Eucleadian distance Matrix from the "
-"points provided in the sql result."
-msgstr "``pgr_makeDistanceMatrix`` - Devuelve una matriz de distancias Euclidiana desde los puntos que le provee la consulta sql."
-
-# c0ecbed749044ceea6ac67da6a92e851
-#: ../../../src/tsp/doc/index.rst:31
-msgid "Synopsis"
-msgstr "Sinopsis"
-
-# bccf8e0d00d545fbb53db8de741e3629
-#: ../../../src/tsp/doc/index.rst:33
-msgid ""
-"The travelling salesman problem (TSP) or travelling salesperson problem asks"
-" the following question: Given a list of cities and the distances between "
-"each pair of cities, what is the shortest possible route that visits each "
-"city exactly once and returns to the origin city? This algoritm uses "
-"simulated annealing to return a high quality approximate solution. Returns a"
-" set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows,"
-" that make up a path."
-msgstr "En el problema del vendedor viajante (TSP) o problema del vendedor se hace la siguiente pregunta: dada una lista de las ciudades y las distancias entre cada par de ciudades, ¿cuál es la ruta más corta posible que visita cada ciudad exactamente una vez y vuelve a la ciudad de origen. Este algoritmo hace simulaciones para devolver una solución aproximada de alta calidad. Devuelve un conjunto de registros :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) que conforman [...]
-
-# 4817fee0103a41c4816125ab5b8e50c9
-#: ../../../src/tsp/doc/index.rst:41
-msgid ""
-"Returns a set of (seq integer, id1 integer, id2 integer, cost float8) that "
-"is the best order to visit the nodes in the matrix. ``id1`` is the index "
-"into the distance matrix. ``id2`` is the point id from the sql."
-msgstr "Devuelve un conjunto de (seq integer, integer id1, id2 integer, cost float8) que representa el mejor orden para visitar los nodos en la matriz. ``id1`` es el índice en la matriz de distancia. ``id2`` es el identificador del punto de la consulta sql."
-
-# d81ab41209864a73a7ffa72604da479d
-#: ../../../src/tsp/doc/index.rst:43
-msgid ""
-"If no ``end_id`` is supplied or it is -1 or equal to the start_id then the "
-"TSP result is assumed to be a circluar loop returning back to the start. If "
-"``end_id`` is supplied then the route is assumed to start and end the the "
-"designated ids."
-msgstr "Si no se suministra el identificador de un punto de llegada ``end_id`` o si es -1 o si es el mismo que al identificador del punto de partida ``start_id``, TSP supone que se regresa al punto de partida. Si se suministra un punto de llegada ``end_id`` entonces se supone que la ruta inicia y termina en los identificadores designados."
-
-# 50853fe7ce3a4230ba1ad32e1820ff86
-#: ../../../src/tsp/doc/index.rst:52
-msgid "Description"
-msgstr "Descripción"
-
-# 5c75019d15bb43c39560772bc3ee4607
-#: ../../../src/tsp/doc/index.rst:55
-msgid "With Euclidean distances"
-msgstr "Con distancias Euclidianas"
-
-# 66a3e0216d3948b082421f130af849fc
-#: ../../../src/tsp/doc/index.rst:56
-msgid ""
-"The TSP solver is based on ordering the points using straight line "
-"(euclidean) distance [#f0]_ between nodes. The implementation is using an "
-"approximation algorithm that is very fast. It is not an exact solution, but "
-"it is guaranteed that a solution is returned after certain number of "
-"iterations."
-msgstr "El evaluador TSP se basa en los puntos ordenados utilizando la línea recta (euclidiana) de distancias [#f0]_ entre nodos. La aplicación utiliza un algoritmo de aproximación que es muy rápido. No es una solución exacta, pero se garantiza que una solución se devuelve después de cierta cantidad de iteraciones."
-
-# 7b0c0aa5e05b441ea75bea14ed4902cd
-#: ../../../src/tsp/doc/index.rst:58
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "Consulta SQL que debe proporcionar un conjunto de registros con los siguientes campos:"
-
-# 370960d08a674040ba2f83ed085dbb48
-#: ../../../src/tsp/doc/index.rst:64
-msgid "``int4`` identifier of the vertex"
-msgstr "``int4`` Identificador del vértice"
-
-# 041d921890f847d1bcb77251f630f8d5
-#: ../../../src/tsp/doc/index.rst:65
-msgid "``float8`` x-coordinate"
-msgstr "``float8`` coordenada x"
-
-# 8662fbcf22f74a82900515c839683881
-#: ../../../src/tsp/doc/index.rst:66
-msgid "``float8`` y-coordinate"
-msgstr "``float8`` coordenada y"
-
-# c71cd39ce3cf4e3e9301579f9a596cdb
-#: ../../../src/tsp/doc/index.rst:68
-msgid "``int4`` id of the start point"
-msgstr "``int4`` Identificador del punto de partida"
-
-# 5165a6a173194137bb498d88e0957b35
-#: ../../../src/tsp/doc/index.rst:69
-msgid ""
-"``int4`` id of the end point, This is *OPTIONAL*, if include the route is "
-"optimized from start to end, otherwise it is assumed that the start and the "
-"end are the same point."
-msgstr "``int4`` identificador del punto de llegada, esto es *opcional*, si se incluye la ruta será optimizada desde la partida hasta la llegada, de lo contrario se supone que la partida y la llegada son el mismo punto."
-
-# d73e6887338e4da3a107b753d970eb83
-#: ../../../src/tsp/doc/index.rst:72
-msgid "The function returns set of :ref:`type_cost_result`:"
-msgstr "La función devuelve el conjunto de :ref:`type_cost_result`:"
-
-# 6a00ce9fe1e84a708606d26b563355af
-# c113028794ef4a08a59271625c0ae721
-#: ../../../src/tsp/doc/index.rst:74 ../../../src/tsp/doc/index.rst:107
-msgid "row sequence"
-msgstr "Secuencia de registros"
-
-# 486fb735dda64593ba3d2773c140d01f
-#: ../../../src/tsp/doc/index.rst:75
-msgid "internal index to the distance matric"
-msgstr "índice interno de la matriz de distancias"
-
-# 47f9555a7ecb4013a9b7b1744788a432
-#: ../../../src/tsp/doc/index.rst:76
-msgid "``id`` of the node"
-msgstr "``int4`` identificador del nodo"
-
-# 879b651101634a9fa1850e585291b13d
-#: ../../../src/tsp/doc/index.rst:77
-msgid "cost to traverse from the current node to the next node."
-msgstr "costo para atravesar desde el nodo actual hasta el siguiente nodo."
-
-# 1219dbad1dbc483e8c66e492b2ddbb85
-#: ../../../src/tsp/doc/index.rst:80
-msgid "Create a distance matrix"
-msgstr "Crear una matriz de distancias"
-
-# 0c6c6e0816e1404798c896777ad941f2
-#: ../../../src/tsp/doc/index.rst:81
-msgid ""
-"For users that need a distance matrix we have a simple function that takes "
-"SQL in ``sql`` as described above and returns a record with ``dmatrix`` and "
-"``ids``."
-msgstr "Para usuarios necesitan una matriz de distancias tenemos una función simple que toma consultas SQL en ``sql`` como se describe anteriormente y devuelve un registro con ``dmatrix`` e ``ids``."
-
-# a9ebba1a8cbb4af9a325f5ebcf4c9c50
-#: ../../../src/tsp/doc/index.rst:87
-msgid "The function returns a record of ``dmatrix``, ``ids``:"
-msgstr "La función devuelve un registro de ``dmatrix``, `` ids``:"
-
-# 79831990a066442dbf3d4f24cebf6aef
-#: ../../../src/tsp/doc/index.rst:89
-msgid "``float8[][]`` a symeteric Euclidean distance matrix based on ``sql``."
-msgstr "``float8[][]`` una matriz de distancia euclidiana simétrica basado en la consulta ``sql``."
-
-# afbd6f830d5c4ab2847548f86f90dca1
-#: ../../../src/tsp/doc/index.rst:90
-msgid ""
-"``integer[]`` an array of ids as they are ordered in the distance matrix."
-msgstr "``integer[]`` una matriz de identificadores basados en el orden de la matriz de distancias."
-
-# f0b8169b552646f980bd6b7e0e4b580c
-#: ../../../src/tsp/doc/index.rst:94
-msgid "With distance matrix"
-msgstr "Con la matriz de distancia"
-
-# e50bb0a665844d7682d3a1b216adb70e
-#: ../../../src/tsp/doc/index.rst:95
-msgid ""
-"For users, that do not want to use Euclidean distances, we also provode the "
-"ability to pass a distance matrix that we will solve and return an ordered "
-"list of nodes for the best order to visit each. It is up to the user to "
-"fully populate the distance matrix."
-msgstr "Para los usuarios, que no requieren utilizar distancias euclidianas, tenemos también la posibilidad de pasar una matriz de distancia que resuelve y devuelve una lista ordenada de nodos con el mejor orden visita de cada nodo. Es el usuario debe llenar completamente la matriz de distancia."
-
-# 900d7d9a9cfe4f48a183120d63a6b5fb
-#: ../../../src/tsp/doc/index.rst:97
-msgid "``float[][]`` distance matrix of points"
-msgstr "``float[][]`` matriz de distancia de puntos"
-
-# ffe889182e9b49e48573a830538e2f76
-#: ../../../src/tsp/doc/index.rst:98
-msgid "``int4`` index of the start point"
-msgstr "``int4`` índice del punto de inicio"
-
-# 7ff184ff9d034484941644d3528f9b11
-#: ../../../src/tsp/doc/index.rst:99
-msgid "``int4`` (optional) index of the end node"
-msgstr "``int4`` (opcional) índice del nodo final"
-
-# a7886e5620ad48308a92c602d785b979
-#: ../../../src/tsp/doc/index.rst:101
-msgid ""
-"The ``end`` node is an optional parameter, you can just leave it out if you "
-"want a loop where the ``start`` is the depot and the route returns back to "
-"the depot. If you include the ``end`` parameter, we optimize the path from "
-"``start`` to ``end`` and minimize the distance of the route while include "
-"the remaining points."
-msgstr "El nodo final ``end`` es un parámetro opcional, se puede omitir cuando se requiere un bucle donde el principio ``start`` es un depósito y la ruta debe regresar de vuelta al depósito. Al incluir el parámetro final ``end``, se optimiza el camino de principio ``start`` al final ``end`` y se reduce al mínimo la distancia de la ruta al ir incluyendo los puntos restantes."
-
-# 3328187fb6f24c06bd2ade2fb9daff6c
-#: ../../../src/tsp/doc/index.rst:103
-msgid ""
-"The distance matrix is a multidimensional `PostgreSQL array type "
-"<http://www.postgresql.org/docs/9.1/static/arrays.html>`_ that must be ``N x"
-" N`` in size."
-msgstr "La matriz de distancias es un `array de PostgreSQL <http://www.postgresql.org/docs/9.1/static/arrays.html>`_ multidimensional que debe ser de tamaño ``N x N``."
-
-# 1768ea2352234c129198dbacd1452e65
-#: ../../../src/tsp/doc/index.rst:105
-msgid "The result will be N records of ``[ seq, id ]``:"
-msgstr "El resultado será de N registros de ``[ seq, id ]``:"
-
-# f8e56b07da754f4396ccb1daa52b8213
-#: ../../../src/tsp/doc/index.rst:108
-msgid "index into the matrix"
-msgstr "índice dentro de la matriz"
-
-# 700ed687dfd24327b5866cb91007c0ed
-#: ../../../src/tsp/doc/index.rst:112
-msgid "Footnotes"
-msgstr "Notas al pie"
-
-# bae6c65f712c4ff9b0fd388153cf42f7
-#: ../../../src/tsp/doc/index.rst:113
-msgid ""
-"There was some thought given to pre-calculating the driving distances "
-"between the nodes using Dijkstra, but then I read a paper (unfortunately I "
-"don't remember who wrote it), where it was proved that the quality of TSP "
-"with euclidean distance is only slightly worse than one with real distance "
-"in case of normal city layout. In case of very sparse network or rivers and "
-"bridges it becomes more inaccurate, but still wholly satisfactory. Of course"
-" it is nice to have exact solution, but this is a compromise between quality"
-" and speed (and development time also). If you need a more accurate "
-"solution, you can generate a distance matrix and use that form of the "
-"function to get your results."
-msgstr "Se ha pensado sobre precalcular las distancias de manejo entre los nodos usando Dijkstra, pero después de leer un artículo (por desgracia no recuerdo quién lo escribió), en el cuál se comprobó que la calidad del TSP con distancia euclidiana es sólo ligeramente peor que uno con las distancias reales en el caso de la distribución normal de una ciudad. En caso de una escasa red o ríos y puentes se vuelve todavía más inexacta, pero es una solución enteramente satisfactoria. Claro qu [...]
-
-# aeabcb34ceb245ac8c9c4dd783bae696
-#: ../../../src/tsp/doc/index.rst:117
-msgid "History"
-msgstr "Historia"
-
-# 83259e3ddfad4bc8a503e3daa04b99d5
-#: ../../../src/tsp/doc/index.rst:118
-msgid "Renamed in version 2.0.0"
-msgstr "Renombrado en la versión 2.0.0"
-
-# 537d6a4a4cc64451857537f64823ac72
-#: ../../../src/tsp/doc/index.rst:119
-msgid "GAUL dependency removed in version 2.0.0"
-msgstr "Dependencia de la GAUL eliminada en la versión 2.0.0"
-
-# 51493667159c4c6395a48ada45bc3ddb
-#: ../../../src/tsp/doc/index.rst:123
-msgid "Examples"
-msgstr "Ejemplos"
-
-# 7c2ef386cc424fe5a5781147e3ea4cc2
-#: ../../../src/tsp/doc/index.rst:125
-msgid ""
-"Using SQL parameter (all points from the table, atarting from 6 and ending "
-"at 5). We have listed two queries in this example, the first might vary from"
-" system to system because there are multiple equivalent answers. The second "
-"query should be stable in that the length optimal route should be the same "
-"regardless of order."
-msgstr "Usando el parámetro SQL (todos los puntos de la tabla, comenzando en 6 y terminando en 5). En este ejemplo, hemos enumerado dos consultas, la primera puede variar de sistema a sistema porque hay varias respuestas equivalentes. La segunda consulta debe ser estable en que la ruta óptima ya que la longitud debe ser la misma independientemente del orden."
-
-# 41662adbab25461784b154100646e929
-#: ../../../src/tsp/doc/index.rst:159
-msgid "Using distance matrix (A loop starting from 1)"
-msgstr "Utilizando la matriz de distancia (un circuito a partir de 1)"
-
-# 936788f1e0c2469ba7d71161a6320815
-#: ../../../src/tsp/doc/index.rst:161
-msgid ""
-"When using just the start node you are getting a loop that starts with 1, in"
-" this case, and travels through the other nodes and is implied to return to "
-"the start node from the last one in the list. Since this is a circle there "
-"are at least two possible paths, one clockwise and one counter-clockwise "
-"that will have the same length and be equall valid. So in the following "
-"example it is also possible to get back a sequence of ids = {1,0,3,2} "
-"instead of the {1,2,3,0} sequence listed below."
-msgstr "Cuando se utiliza sólo el nodo de inicio, entoces se tiene un bucle que comienza, en este caso, con 1 y viaja a través de los otros nodos y se sobreentiende que regresa al nodo inicial desde el último nodo de la lista. Puesto que esto es un bucle, hay al menos dos posibles caminos, uno hacia la derecha y otro en sentido opuesto que tienen la misma longitud y ambos son igualmente válidos. Así que en el ejemplo siguiente también es posible recuperar una secuencia de identificadores [...]
-
-# 95907dec9016432f8b75f45be9e231c3
-#: ../../../src/tsp/doc/index.rst:175
-msgid "Using distance matrix (Starting from 1, ending at 2)"
-msgstr "Utilizando la matriz de distancia (a partir de 1, terminando en 2)"
-
-# c376ad2787cd4f4abf9764fbe86699b2
-#: ../../../src/tsp/doc/index.rst:189
-msgid ""
-"Using the vertices table edge_table_vertices_pgr generated by "
-":ref:`pgr_create_topology`. Again we have two queries where the first might "
-"vary and the second is based on the overal path length."
-msgstr "Usando la tabla de vértices edge_table_vertices_pgr generada por :ref:`pgr_create_topology`. De nuevo tenemos dos consultas donde la primera puede variar y la segunda se basa en la longitud total del camino."
-
-# c3d22bacc29d477ca8c5a118ddedb8f4
-#: ../../../src/tsp/doc/index.rst:226
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Las consultas usan la red de ejemplo :ref:`sampledata`"
-
-# 4f5c93447689413e86e9ed2751abff8f
-#: ../../../src/tsp/doc/index.rst:230
-msgid "See Also"
-msgstr "Véase también"
-
-# 5f49eba1079b40d297bf0872ae69fe06
-#: ../../../src/tsp/doc/index.rst:232
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 81d591e953334f24b72e9680e2ae42f9
-#: ../../../src/tsp/doc/index.rst:233
-msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
-msgstr "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
-
-# 2c62ab4de73248479f416573176f0c4a
-#: ../../../src/tsp/doc/index.rst:234
-msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
-msgstr "http://en.wikipedia.org/wiki/Simulated_annealing"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/index.po b/doc/i18n/fr/LC_MESSAGES/doc/index.po
deleted file mode 100644
index ac28437..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/index.po
+++ /dev/null
@@ -1,359 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 21:48\n"
-"PO-Revision-Date: 2013-09-24 02:49+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# c86028e885c64c0987f44bbcc08fb02a
-#: ../../index.rst:13
-msgid "Table of Contents"
-msgstr "Table des matières"
-
-# 32111013f9c94976b553857e93812724
-#: ../../index.rst:15
-msgid ""
-"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
-"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
-"and other network analysis functionality."
-msgstr "pgRouting est une extension de la base de données géospatiale `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ afin de proposer des fonctionnalités de routage géospatial et d'autres analyses de réseaux."
-
-# cd5bc882f7f3412b8a937ba25e203de8
-#: ../../index.rst:17
-msgid "This is the manual for pgRouting |release|."
-msgstr "Ceci est le manuel de pgRouting |release|."
-
-# d928c97ad24c4daeae96bb02b87c5a6d
-#: ../../index.rst:23
-msgid ""
-"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
-" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
-"free to use this material any way you like, but we ask that you attribute "
-"credit to the pgRouting Project and wherever possible, a link back to "
-"http://pgrouting.org. For other licenses used in pgRouting see the "
-":ref:`license` page."
-msgstr "Le Manuel pgRouting est distribué sous `Creative Commons Attribution-Share Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. N'hésitez pas à utiliser ce manuel comme vous le souhaitez, mais nous demandons que vous mentionnez le crédit au Projet pgRouting et à chaque fois que cela est possible un lien vers http://pgrouting.org. Pour les autres licences utilisées dans pgRouting, voir la page :ref:`license`."
-
-# 9024be66e4ef47b9b53de9a42af4550d
-#: ../../index.rst:27
-msgid "General"
-msgstr "Général"
-
-# 268439cb0a4f4417b56ca21d51394850
-#: ../../index.rst:40
-msgid "Tutorial"
-msgstr "Tutoriel"
-
-# bf01af3d0d3244f283f5b3fab105caad
-#: ../../index.rst:42
-msgid ":ref:`Tutorial <tutorial1>`"
-msgstr ""
-
-# 116777f411a248f9afe42b9b51679b78
-#: ../../index.rst:44
-msgid ":ref:`Getting started <tutorial>`"
-msgstr ""
-
-# 2066f7d15ec8444c833547cfb3b06a98
-#: ../../index.rst:45
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 2753f71d0fc14b0bbabb14a5180b10d9
-#: ../../index.rst:46
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-# 042f858c16ca4c7ea9fb4baa62efdd44
-#: ../../index.rst:47
-msgid ":ref:`custom_query` that is used in the routing algorithms."
-msgstr ""
-
-# 13f4fade1d47458abf8ba3706110d874
-#: ../../index.rst:48
-msgid ":ref:`performance` to improve your performance."
-msgstr ""
-
-# c3ccc6e6651e47f9b9d271c60976b15c
-#: ../../index.rst:49
-msgid ":ref:`custom_wrapper` to colaborate with a wrapper."
-msgstr ""
-
-# 233aebcc461745c2b0811b7f4328ce3a
-#: ../../index.rst:50
-msgid ":ref:`recipes` to colaborate with a recipe."
-msgstr ""
-
-# 3ae724b7e3714db2942fb7c77124cfc4
-#: ../../index.rst:51
-msgid ":ref:`sampledata` that is used in the examples of this manual."
-msgstr ""
-
-# c92e843c52364963a35112272cb814fd
-#: ../../index.rst:61
-msgid ""
-"For a more complete introduction how to build a routing application read the"
-" `pgRouting Workshop <http://workshop.pgrouting.org>`_."
-msgstr "Pour une introduction plus complète sur comment construire une application de routage, lire l'`Atelier pgRouting <http://workshop.pgrouting.org>`_."
-
-# 524c7dc0d5654f319fc62f2ae08b86f7
-#: ../../index.rst:65
-msgid "Data Types"
-msgstr ""
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:67
-msgid ":ref:`data_types`"
-msgstr ""
-
-# ef6b2fcc629f48c7b88d3ac78527893a
-#: ../../index.rst:69
-msgid ""
-":ref:`type_cost_result` - A set of records to describe a path result with "
-"cost attribute."
-msgstr ""
-
-# 84a33ec406d2412c9e681656b4cb9b43
-#: ../../index.rst:70
-msgid ""
-":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
-" path result with cost attribute."
-msgstr ""
-
-# 6a2ba698d366498caa046c97178f05d5
-#: ../../index.rst:71
-msgid ""
-":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
-"path result with geometry attribute."
-msgstr ""
-
-# 9c4629c11bc143a184a6564177b0e7bd
-#: ../../index.rst:80
-msgid "Functions reference"
-msgstr ""
-
-# 1f3545abdf7c42cdb73e76f5f149a31b
-#: ../../index.rst:82
-msgid ":ref:`topology_functions`"
-msgstr ""
-
-# 058f97425ccb4cb5870163ebbe948a72
-#: ../../index.rst:84
-msgid ""
-":ref:`pgr_create_topology` - to create a topology based on the geometry."
-msgstr ""
-
-# e839b8e9c3664685a6dc346cac1ea039
-#: ../../index.rst:85
-msgid ""
-":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
-"the source and target information."
-msgstr ""
-
-# 5d9cd0c5ac3043b99ae4fb495036d05f
-#: ../../index.rst:86
-msgid ""
-":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
-
-# 714b5f8623914db981048d201845d040
-#: ../../index.rst:87
-msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
-msgstr ""
-
-# 5f3a1ebfa74d4463912b1c695028121d
-#: ../../index.rst:88
-msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
-msgstr ""
-
-# 655d025751764d39b841997c13775783
-#: ../../index.rst:90
-msgid ":ref:`routing_functions`"
-msgstr ""
-
-# 6a94d292d24b45f7aafda5a754a6ba30
-#: ../../index.rst:92
-msgid ""
-":ref:`pgr_apspJohnson <pgr_apsp_johnson>`- All Pairs Shortest Path, "
-"Johnson’s Algorithm"
-msgstr ""
-
-# fbda3d31d88e4df891d2095dfbb8ab52
-#: ../../index.rst:93
-msgid ""
-":ref:`pgr_apspWarshall<pgr_apsp_warshall>` - All Pairs Shortest Path, Floyd-"
-"Warshall Algorithm"
-msgstr ""
-
-# 10cf6d194dcf4af2be81f0f8034cd5cb
-#: ../../index.rst:94
-msgid ":ref:`pgr_astar<pgr_astar>` - Shortest Path A*"
-msgstr ""
-
-# 72aa55b5147341e6be8b3ac29edc5056
-#: ../../index.rst:95
-msgid ":ref:`pgr_bdAstar<bd_astar>` - Bi-directional A* Shortest Path"
-msgstr ""
-
-# 659e5f56cae84ce598a95fe83608da28
-#: ../../index.rst:96
-msgid ""
-":ref:`pgr_bdDijkstra<bd_dijkstra>` - Bi-directional Dijkstra Shortest Path"
-msgstr ""
-
-# 2a0544bf5ac444cb9f814c98ddd9cac0
-#: ../../index.rst:97
-msgid ":ref:`pgr_dijkstra<pgr_dijkstra>` - Shortest Path Dijkstra"
-msgstr ""
-
-# 0d062718bba84332bc05094be53c7b0b
-#: ../../index.rst:98
-msgid ""
-":ref:`pgr_kDijkstra<pgr_kdijkstra>` - Mutliple destination Shortest Path "
-"Dijkstra"
-msgstr ""
-
-# 388e0ef15cac4c7a87ed5f5f7d164eab
-#: ../../index.rst:99
-msgid ":ref:`pgr_ksp<ksp>` - K-Shortest Path"
-msgstr ""
-
-# 488a2b3901c548b394c466b7580ea9a4
-#: ../../index.rst:100
-msgid ":ref:`pgr_tsp<pgr_tsp>` - Traveling Sales Person"
-msgstr ""
-
-# dc4452cb04fb47fb9d72b4a408ffabeb
-#: ../../index.rst:101
-msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
-msgstr ""
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:103
-msgid ":ref:`dd_index`"
-msgstr ""
-
-# 4f472ddb75b84b6abd644e500b7415f4
-#: ../../index.rst:105
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-# 607bcbfc39c649a4b54020f8d62ce9d0
-#: ../../index.rst:106
-msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
-msgstr ""
-
-# f2e6773ccf394c739af44245aaaf5d02
-#: ../../index.rst:107
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
-
-# ef6b2fcc629f48c7b88d3ac78527893a
-#: ../../index.rst:110
-msgid ""
-":ref:`pgr_get_column_name` - to get the name of the column as is stored in "
-"the postgres administration tables."
-msgstr ""
-
-# b080d86d06dd4b248b6191f5c98ed0b7
-#: ../../index.rst:111
-msgid ""
-":ref:`pgr_get_table_name` - to retrieve the name of the table as is stored "
-"in the postgres administration tables."
-msgstr ""
-
-# 187f8a7ace1944dda76ab8ae8460d727
-#: ../../index.rst:112
-msgid ":ref:`pgr_is_column_indexed` - to check if the column is indexed."
-msgstr ""
-
-# 767ec7460a314ae0ae3ad47836c94182
-#: ../../index.rst:113
-msgid ""
-":ref:`pgr_is_column_in_table` - to check only for the existance of the "
-"column."
-msgstr ""
-
-# 6d632e8288614fc59c04dbdfa5fceb36
-#: ../../index.rst:114
-msgid ""
-":ref:`pgr_point_to_id` -to insert/get the id of the inserted point in a "
-"vertices table."
-msgstr ""
-
-# fd1def8169f543b9afc595abde9021ef
-#: ../../index.rst:115
-msgid ""
-":ref:`pgr_quote_ident` - to quotes the input text to be used as an "
-"identifier in an SQL statement string."
-msgstr ""
-
-# 79be0c2066f3417fb063d0f11b8858bb
-#: ../../index.rst:116
-msgid ":ref:`pgr_version` - to get pgRouting's version information."
-msgstr ""
-
-# e92514488cf348499952b55020516c0f
-#: ../../index.rst:117
-msgid ":ref:`pgr_versionless` - to compare two version numbers."
-msgstr ""
-
-# 52049dec1aa94a84b44977cf3645aeee
-#: ../../index.rst:118
-msgid ""
-":ref:`pgr_start_point` - to get the start point of a (multi)linestring."
-msgstr ""
-
-# b58261fb708141cfbd15342b18e83df7
-#: ../../index.rst:119
-msgid ":ref:`pgr_end_point` - to get the end point of a (multi)linestring."
-msgstr ""
-
-# ccf6b70d55024c8cb87cd02c497cd394
-#: ../../index.rst:138
-msgid "Developer"
-msgstr "Développeur"
-
-# bc20d365d4514a6dbf644153d3323f8d
-#: ../../index.rst:145
-msgid ":ref:`change_log`"
-msgstr ""
-
-# a6c26cabff9f4df5bbaa3de0ed924b11
-#: ../../index.rst:147
-msgid ":ref:`changelog_2_0`"
-msgstr ""
-
-# 9d2d97e5ab6a4af08a3f5903f9a87114
-#: ../../index.rst:148
-msgid ":ref:`changelog_1_x`"
-msgstr ""
-
-# d1533298308344f6bfa8e1644e3aace0
-#: ../../index.rst:157
-msgid "Indices and tables"
-msgstr "Index et tableaux"
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:158
-msgid ":ref:`genindex`"
-msgstr ":ref:`genindex`"
-
-# 1572d01be82949ec8e487a5dc596b6a4
-#: ../../index.rst:159
-msgid ":ref:`search`"
-msgstr ":ref:`search`"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/index_man.po b/doc/i18n/fr/LC_MESSAGES/doc/index_man.po
deleted file mode 100644
index b8e179e..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/index_man.po
+++ /dev/null
@@ -1,57 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:11+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 3f6e76c37d304447af292931aa52e56f
-#: ../../index_man.rst:13
-msgid "pgRouting Reference"
-msgstr "Référence de pgRouting"
-
-# 8347fe2ff4be4f9fbcaafbad7adac911
-#: ../../index_man.rst:15
-msgid ""
-"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
-"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
-"and other network analysis functionality."
-msgstr "pgRouting est une extension de la base de données géospatiale `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ afin de proposer des fonctionnalités de routage géospatial et d'autres analyses de réseaux."
-
-# 3f626ce82e7e467c8d0b401e6a88d9ca
-#: ../../index_man.rst:22
-msgid "pgRouting provides several :ref:`common functions <common>`:"
-msgstr "pgRouting fournit plusieurs :ref:`fonctions communes <common>`:"
-
-# 387e53a164e94fa1a2c34d515a8958d2
-#: ../../index_man.rst:36
-msgid "pgRouting defines a few :ref:`custom data types <data_types>`:"
-msgstr ""
-
-# af0d92429b274dda891066d0b07d530f
-#: ../../index_man.rst:50
-msgid "pgRouting functions in alphabetical order:"
-msgstr "les fonctions pgRouting dans l'ordre alphabétique :"
-
-# 9f2f876866c6467ba1b45223a42790c6
-#: ../../index_man.rst:66
-msgid "If pgRouting is compiled with \"Driving Distance\" enabled:"
-msgstr "Si pgRouting est exécuté avec \"Driving Distance\" activé :"
-
-# 1e0ce2246f904afbaf6c882025206eaa
-#: ../../index_man.rst:75
-msgid "Some functions from previous releases may have been removed."
-msgstr "Certaines fonctions des precédentes distributions peuvent avoir été supprimées."
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/changelog/1_x.po b/doc/i18n/fr/LC_MESSAGES/doc/src/changelog/1_x.po
deleted file mode 100644
index f95630e..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/changelog/1_x.po
+++ /dev/null
@@ -1,153 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-28 03:50+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 6a8f15af6c6d4c709a455b1e6e7913a8
-#: ../../src/changelog/1_x.rst:13
-msgid "pgRouting 1.x Release Notes"
-msgstr "Notes de version pgRouting 1.0"
-
-# 35ec395b4f35487d95e18e46599976e4
-#: ../../src/changelog/1_x.rst:15
-msgid ""
-"The following release notes have been copied from the previous "
-"``RELEASE_NOTES`` file and are kept as a reference. Release notes starting "
-"with :ref:`version 2.0.0 <changelog_2_0>` will follow a different schema."
-msgstr "Les notes de version suivantes ont été copiées depuis le fichier précédent ``RELEASE_NOTES`` et sont gardées comme une référence. Les notes de version à partir de :ref:`version 2.0.0 <changelog_2_0>` vont suivre un schéma différent."
-
-# 703dd8a8fe4d45c1859069c1117ec4b3
-#: ../../src/changelog/1_x.rst:20
-msgid "Changes for release 1.05"
-msgstr "Changements pour la version 1.05"
-
-# e3f8283c49024042ad77d6924336865c
-# b2d8993542324fb6b2107164df0ba258
-# 88cd476b4bc3446b89dd63ea7ad91e56
-# d1043630671546faabf110ae51109494
-#: ../../src/changelog/1_x.rst:22 ../../src/changelog/1_x.rst:29
-#: ../../src/changelog/1_x.rst:50 ../../src/changelog/1_x.rst:57
-msgid "Bugfixes"
-msgstr "Résolutions de bug"
-
-# faaf3c4aa64e4806b5b41ecb230f4466
-#: ../../src/changelog/1_x.rst:26
-msgid "Changes for release 1.03"
-msgstr "Changements pour la version 1.03"
-
-# c258bbbcb3e2445f8f7eb9dde242b0e5
-#: ../../src/changelog/1_x.rst:28
-msgid "Much faster topology creation"
-msgstr "Création de topologie beaucoup plus rapide"
-
-# 059297cbe42d4af6b72b9e0d2b6ad06e
-#: ../../src/changelog/1_x.rst:33
-msgid "Changes for release 1.02"
-msgstr "Changements pour la version 1.02"
-
-# cb2792b313ca4c3fa513b9eb95c5de18
-# 5a7078f4834449bba4a61211426d8ed9
-#: ../../src/changelog/1_x.rst:35 ../../src/changelog/1_x.rst:42
-msgid "Shooting* bugfixes"
-msgstr "Résolutions de bug "
-
-# 5feb24afeb55480690c6589309388866
-#: ../../src/changelog/1_x.rst:36
-msgid "Compilation problems solved"
-msgstr "Problèmes de compilation résolus"
-
-# 0e0f4a9f6a22461baa8bc5da60cfd41b
-#: ../../src/changelog/1_x.rst:40
-msgid "Changes for release 1.01"
-msgstr "Changements pour la version 1.01"
-
-# 8ea96e385ab44490850a2a73aa013f9b
-#: ../../src/changelog/1_x.rst:46
-msgid "Changes for release 1.0"
-msgstr "Changements pour la version 1.0"
-
-# efa896c6a92842fdabbf06c4f8c5b640
-#: ../../src/changelog/1_x.rst:48
-msgid "Core and extra functions are separated"
-msgstr "Fonctions principales et extra sont séparées"
-
-# 51ced072bcbc470c87cc5fd90912467f
-#: ../../src/changelog/1_x.rst:49
-msgid "Cmake build process"
-msgstr "Processus build Cmake"
-
-# ee707024082d499a962851a420e20d5f
-#: ../../src/changelog/1_x.rst:54
-msgid "Changes for release 1.0.0b"
-msgstr "Changements pour la version 1.0.0b"
-
-# d94242dc07a94aa5b9cb20cd4fd8f85d
-#: ../../src/changelog/1_x.rst:56
-msgid "Additional SQL file with more simple names for wrapper functions"
-msgstr "Fichier SQL additionnel avec des noms plus simples pour les fonctions de wrapper"
-
-# 178ec0ecd8a74084a59974d12e30f589
-#: ../../src/changelog/1_x.rst:61
-msgid "Changes for release 1.0.0a"
-msgstr "Changements pour la version 1.0.0a"
-
-# 5591af5527fc4ff68fbcfb9268f20564
-#: ../../src/changelog/1_x.rst:63
-msgid "Shooting* shortest path algorithm for real road networks"
-msgstr "Algorithme de plus court chemin Shooting* pour les réseaux routiers réels"
-
-# a0818010adb1442cbe7e345f95689509
-#: ../../src/changelog/1_x.rst:64
-msgid "Several SQL bugs were fixed"
-msgstr "Plusieurs bugs SQL ont été résolus"
-
-# 41324ae038c94f6ea5a7bd9cc30e54fb
-#: ../../src/changelog/1_x.rst:68
-msgid "Changes for release 0.9.9"
-msgstr "Changements pour la version 0.9.9"
-
-# b89bdfd11c2f4cf29ca3dd3cfd42cb8e
-#: ../../src/changelog/1_x.rst:70
-msgid "PostgreSQL 8.2 support"
-msgstr "Support PostgreSQL 8.2"
-
-# 302372f9f60f46d68b18a299cdfd55a6
-#: ../../src/changelog/1_x.rst:71
-msgid ""
-"Shortest path functions return empty result if they couldn’t find any path"
-msgstr "Les fonctions de plus court chemin retournent un résultat vide s'ils ne pouvaient pas trouver un chemin"
-
-# 62b481cbf4d14ffcb2f17ad4a86dc60e
-#: ../../src/changelog/1_x.rst:75
-msgid "Changes for release 0.9.8"
-msgstr "Changements pour la version 0.9.8"
-
-# 1190ef59b8584d6d9c1fd248ca4fd970
-#: ../../src/changelog/1_x.rst:77
-msgid "Renumbering scheme was added to shortest path functions"
-msgstr "Schéma de renumérotation a été ajouté aux fonctions de plus court chemin"
-
-# 33634f672fbb4bdbbfba7912efeca26d
-#: ../../src/changelog/1_x.rst:78
-msgid "Directed shortest path functions were added"
-msgstr "Les fonctions de plus court chemin ont été ajoutées"
-
-# 13bb4413398f4f5d921257cdcab82564
-#: ../../src/changelog/1_x.rst:79
-msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
-msgstr "routing_postgis.sql a été modifié pour utiliser Dijkstra dans la recherche TSP"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/changelog/2_0.po b/doc/i18n/fr/LC_MESSAGES/doc/src/changelog/2_0.po
deleted file mode 100644
index e6948df..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/changelog/2_0.po
+++ /dev/null
@@ -1,171 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 74e7cac777254569ba4d691b13b71fb6
-#: ../../src/changelog/2_0.rst:13
-msgid "pgRouting 2.0 Release Notes"
-msgstr "Notes de version pgRouting 2.0"
-
-# 4a488611749d4e66b0259dbca6bb3a1f
-#: ../../src/changelog/2_0.rst:15
-msgid ""
-"With the release of pgRouting 2.0 the library has abandoned backwards "
-"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. We did this "
-"so we could restructure pgRouting, standardize the function naming, and "
-"prepare the project for future development. As a result of this effort, we "
-"have been able to simplify pgRouting, add significant new functionality, "
-"integrate documentation and testing into the source tree and make it easier "
-"for multiple developers to make contribution."
-msgstr "Avec la version de pgRouting 2.0 la librairie a abandonné la compatibilité restrospective aux versions :ref:`pgRouting 1.x <changelog_1_x>`. Nous avons fait ça pour que nous puissions restructurer pgRouting, standardiser le nommage de fonction, et préparer le projet pour un développement future. Comme un résultat de cet effort, nous avons été capable de simplifier pgRouting, ajouter de façon significative de nouvelles fonctionnalités, intégrer de la documentation et tester dans l [...]
-
-# 0124322daba943368892e1a062e5a232
-#: ../../src/changelog/2_0.rst:17
-msgid ""
-"For important changes see the following release notes. To see the full list "
-"of changes check the list of `Git commits "
-"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
-msgstr "Pour les changements importants voir les notes de versions suivantes. Pour voir la liste complète des changements, vérifiez la liste de `Git commits <https://github.com/pgRouting/pgrouting/commits>` sur Github."
-
-# 591de33525284db5b8eae7f12b38a366
-#: ../../src/changelog/2_0.rst:28
-msgid "Changes for 2.0.0"
-msgstr "Changements pour la version 2.0.0"
-
-# 4d95000a614d4236a5cc53a2fc2f49ac
-#: ../../src/changelog/2_0.rst:30
-msgid ""
-"Graph Analytics - tools for detecting and fixing connection some problems in"
-" a graph"
-msgstr "Graph Analytics - outils pour la détection et la résolution certains problèmes de connexion dans un graphe."
-
-# 7b0e1ec73752479fabaaeb4964d2e802
-#: ../../src/changelog/2_0.rst:31
-msgid "A collection of useful utility functions"
-msgstr "Une collection de fonctions utiles."
-
-# 2f200415daa94b76803619813ac6721a
-#: ../../src/changelog/2_0.rst:32
-msgid ""
-"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
-msgstr "Deux nouveaux algorithmes de plus court chemin toutes paires (pgr_apspJohnson, pgr_apspWarshall)"
-
-# f254175913274f7a835197ece43e779e
-#: ../../src/changelog/2_0.rst:33
-msgid ""
-"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
-"pgr_bdDijkstra)"
-msgstr "Algorithmes de recherches bidirectionnels Dijkstra et A-star (pgr_bdAstar, pgr_bdDijkstra)"
-
-# 3c6748f59dcf427da34f9feed68058f9
-#: ../../src/changelog/2_0.rst:34
-msgid "One to many nodes search (pgr_kDijkstra)"
-msgstr "Recherche à nœuds un à plusieurs (pgr_kDijkstra)"
-
-# f9d646b786144bd481006e74130f662e
-#: ../../src/changelog/2_0.rst:35
-msgid "K alternate paths shortest path (pgr_ksp)"
-msgstr "Plus court chemin K chemins alternatifs (pgr_ksp)"
-
-# 11ef9fff94d246b48fafc85bc8dc3925
-#: ../../src/changelog/2_0.rst:36
-msgid ""
-"New TSP solver that simplifies the code and the build process (pgr_tsp), "
-"dropped \"Gaul Library\" dependency"
-msgstr "Nouveau solveur TSP qui simplifie le code et le processus de build (pgr_tsp), supprimé la dépendance \"Gaul Library\" "
-
-# d1f317bb785d45fa861870a35ff12e7b
-#: ../../src/changelog/2_0.rst:37
-msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
-msgstr "Le plus court chemin à virage restreint (pgr_trsp) qui remplace Shooting Star"
-
-# 21689470d861417487dd6888bf38ae8b
-#: ../../src/changelog/2_0.rst:38
-msgid "Dropped support for Shooting Star"
-msgstr "Support supprimé pour Shooting Star"
-
-# c293b041c6974506a333575050aca673
-#: ../../src/changelog/2_0.rst:39
-msgid ""
-"Built a test infrastructure that is run before major code changes are "
-"checked in"
-msgstr "Construit une infrastructure de test qui est exécutée avant que des changements de code majeurs soient enregistrés."
-
-# 3c96b251f45b4603a3e474e14d3756a9
-#: ../../src/changelog/2_0.rst:40
-msgid ""
-"Tested and fixed most all of the outstanding bugs reported against 1.x that "
-"existing in the 2.0-dev code base."
-msgstr "Testé et résolu la plupart des bugs non résolus rapportés sur la 1.x et existant dans la base de code 2.0-dev."
-
-# ae370e64d8204092bca92f34ddc90a99
-#: ../../src/changelog/2_0.rst:41
-msgid "Improved build process for Windows"
-msgstr "Processus de build amélioré pour Windows"
-
-# 03319867fd7d47ecade2299089b90c8a
-#: ../../src/changelog/2_0.rst:42
-msgid ""
-"Automated testing on Linux and Windows platforms trigger by every commit"
-msgstr ""
-
-# 8543438d8ac34db9816e97ca074dc4bc
-#: ../../src/changelog/2_0.rst:43
-msgid "Modular library design"
-msgstr "Conception en librairie modulaire"
-
-# 903ec2fa9bb64f87a98c97f8951780d1
-#: ../../src/changelog/2_0.rst:44
-msgid "Compatibility with PostgreSQL 9.1 or newer"
-msgstr "Compatibilité avec PostgreSQL 9.1 ou plus récent"
-
-# 73a67ebe3dbd4dc3a3c437b2180fed37
-#: ../../src/changelog/2_0.rst:45
-msgid "Compatibility with PostGIS 2.0 or newer"
-msgstr "Compatibilité avec PostGIS 2.0 ou plus récent"
-
-# 16e7796b31a94c2781e0f38903b17c26
-#: ../../src/changelog/2_0.rst:46
-msgid "Installs as PostgreSQL EXTENSION"
-msgstr "Installe comme une EXTENSION PostgreSQL"
-
-# d5d4a4a79da14ccea4bdbe1310cf5113
-#: ../../src/changelog/2_0.rst:47
-msgid "Return types refactored and unified"
-msgstr "Retourne les types remaniés et unifiés "
-
-# aeff1e0f8f5144a38127aabb5e2dc2fa
-#: ../../src/changelog/2_0.rst:48
-msgid "Support for table SCHEMA in function parameters"
-msgstr "Support pour la table SCHEMA dans les paramètres de fonction"
-
-# ae6e9cdcdc384571a1803e4b5e3e9718
-#: ../../src/changelog/2_0.rst:49
-msgid "Support for ``st_`` PostGIS function prefix"
-msgstr "Support pour préfixe de fonction ``st_`` PostGIS"
-
-# b0f6572717ed4979a266117c537f9a5d
-#: ../../src/changelog/2_0.rst:50
-msgid "Added ``pgr_`` prefix to functions and types"
-msgstr "Ajouté préfixe ``pgr_`` aux fonctions et types"
-
-# 6178fdcf0cd74f3898a7386ed99f36b4
-#: ../../src/changelog/2_0.rst:51
-msgid "Better documentation: http://docs.pgrouting.org"
-msgstr "Meilleure documentation: http://docs.pgrouting.org"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/developer/discontinued.po b/doc/i18n/fr/LC_MESSAGES/doc/src/developer/discontinued.po
deleted file mode 100644
index 3e4cb59..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/developer/discontinued.po
+++ /dev/null
@@ -1,56 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-21 18:10+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# ecfce536b0aa4abcb4b588ec5c569d01
-#: ../../src/developer/discontinued.rst:13
-msgid "Discontinued Functions"
-msgstr "Fonctions discontinues"
-
-# a62da7ecbf3e4e56817c5acd4b283ad1
-#: ../../src/developer/discontinued.rst:15
-msgid ""
-"Especially with new major releases functionality may change and functions "
-"may be discontinued for various reasons. Functionality that has been "
-"discontinued will be listed here."
-msgstr "Particulièrement avec les nouvelles versions majeures, des fonctionnalités peuvent changer et des fonctions peuvent être retirées pour diverses raisons. Toute fonctionnalité qui a été retirée est listée ici."
-
-# 778ac5fe0c47470883e33983eee7b86e
-#: ../../src/developer/discontinued.rst:22
-msgid "Shooting Star algorithm"
-msgstr "Algorithme Shooting Star"
-
-# b6e21b5fe8ff45d3b6ae4cd3e21ff661
-#: ../../src/developer/discontinued.rst:24
-msgid "Removed with 2.0.0"
-msgstr "Supprimé depuis 2.0.0"
-
-# 681aaa34e63344de87e7765476be87f2
-#: ../../src/developer/discontinued.rst:25
-msgid "Unresolved bugs, no maintainer, replaced with :ref:`trsp`"
-msgstr "Bugs non résolus, maintenance non assurée, remplacé par :ref:`trsp`"
-
-# c11387652cc84dd7ad0e964baff5182e
-#: ../../src/developer/discontinued.rst:26
-msgid ""
-"Please :ref:`contact us <support>` if you're interested to sponsor or "
-"maintain this algorithm. The function signature is still available in "
-":ref:`common_legacy` but it is just a wrapper that throws an error. We have "
-"not included any of the old code for this in this release."
-msgstr "Merci de :ref:`nous contacter <support>` si vous êtes intéressés pour sponsoriser ou maintenir cet algorithme. La signature de fonction est toujours disponible dans :ref:`common_legacy` mais c'est juste une enveloppe qui lance une erreur. Nous avons inclus tout le code d'origine dans cette version."
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/developer/index.po b/doc/i18n/fr/LC_MESSAGES/doc/src/developer/index.po
deleted file mode 100644
index e55fbeb..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/developer/index.po
+++ /dev/null
@@ -1,246 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 17:37+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# f28868894edd415ca79913b6f0e244b7
-#: ../../src/developer/index.rst:13
-msgid "Developer's Guide"
-msgstr "Guide du développeur"
-
-# 5c7d284d803042c0aa297ca41b59aac3
-#: ../../src/developer/index.rst:16
-msgid ""
-"All documentation should be in reStructuredText format. See: "
-"<http://docutils.sf.net/rst.html> for introductory docs."
-msgstr "Toute la documentation devrait être dans le format reStructuredText. Voir : <http://docutils.sf.net/rst.html> pour les docs d'introduction."
-
-# fd3435c9f90f438280eb94e20db8c6fd
-#: ../../src/developer/index.rst:20
-msgid "Source Tree Layout"
-msgstr "Disposition de l'Arbre des sources"
-
-# 08c39ee5a8574bfb93d3a5203a6c206b
-#: ../../src/developer/index.rst:23
-msgid "cmake scripts used as part of our build system."
-msgstr "Scripts cmake utilisés en partie pour notre système de build."
-
-# 268498e509b04dd09f0678cf538a8be0
-#: ../../src/developer/index.rst:26
-msgid ""
-"This is the algorithm source tree. Each algorithm should be contained in its"
-" on sub-tree with doc, sql, src, and test sub-directories. This might get "
-"renamed to \"algorithms\" at some point."
-msgstr ""
-
-# d3989e3985544061a6084f85961bdbc6
-#: ../../src/developer/index.rst:31
-msgid ""
-"This is an implementation of A* Search based on using Boost Graph libraries "
-"for its implementation. This is a Dijkstra shortest path implementation with"
-" a Euclidean Heuristic."
-msgstr "Ceci est une implémentation de la Recherche A* basée sur l'utilisation de la bibliothèque Boost Graph. Ceci est une implémentation du plus court chemin Dijkstra avec une Heuristique Euclidienne."
-
-# 8ff46e3f515e4df3b61b2e37998be2de
-#: ../../src/developer/index.rst:36
-msgid ""
-"At the moment this does not have an core in \"src\", but does have a lot of "
-"SQL wrapper code and topology code in the \"sql\" directory. *Algorithm "
-"specific wrappers should get move to the algorithm tree and appropriate "
-"tests should get added to validate the wrappers.*"
-msgstr "Pour le moment ceci n'a pas de core in \"src\", mais a un certain nombre de codes de wrappers SQL et de codes de topologie dans le répertoire \"sql\". *Les wrappers spécifiques d'algorithmes devraient être déplacées à l'arbre d'algorithme et les tests appropriés devraient être ajoutés pour valider les wrappers.*"
-
-# 8c544813a7ed4b4ca7df0ae3f01909c5
-#: ../../src/developer/index.rst:42
-msgid ""
-"This is an implementation of Dikjstra's shortest path solution using Boost "
-"Graph libraries for the implementation."
-msgstr "Ceci est une implémentation de la solution du plus court chemin Dikjstra utilisant les bibliothèques Boost Graph pour l'implémentation."
-
-# dfe2e1dfa3d0464d87fac14b128155cc
-#: ../../src/developer/index.rst:46
-msgid ""
-"This optional package creates driving distance polygons based on solving a "
-"Dijkstra shortest path solution, then creating polygons based on equal cost "
-"distances from the start point. This optional package requires CGAL "
-"libraries to be installed."
-msgstr "Ce paquet optionnel créée des polygones de driving distance basées sur la résolution de la solution du plus court chemin Dijkstra, ensuite en créant des polygones basés sur les distances de coût égal depuis le point de départ. Ce paquet optionnel requiert d'avoir installé les librairies CGAL."
-
-# 4f4e1c860f13452b9aa2fad3fe00b756
-#: ../../src/developer/index.rst:52
-msgid ""
-"*DEPRECATED and DOES NOT WORK and IS BEING REMOVED* This is an edge based "
-"shortest path algorithm that supports turn restrictions. It is based on "
-"Boost Graph. Do *NOT* use this algorithm as it is broken, instead use *trsp*"
-" which has the same functionality and is faster and give correct results."
-msgstr "*DESAPPROUVE et NE FONCTIONNE PAS et SUR LE POINT D'ETRE SUPPRIME* Ceci est une arête basée sur l'algorithme du plus court chemin qui supporte les restrictions de virage. It is based on Boost Graph. Ne *PAS* utiliser cet algorithme comme il est cassé, utiliser *trsp* à la place, qui a la même fonctionnalité et est plus rapide et donne des résultats corrects. "
-
-# a8264d72d19a45e183b7ef38fed374c4
-#: ../../src/developer/index.rst:59
-msgid ""
-"This is a turn restricted shortest path algorithm. It has some nice features"
-" like you can specify the start and end points as a percentage along an "
-"edge. Restrictions are stored in a separate table from the graph edges and "
-"this make it easier to manage the data."
-msgstr "Ceci est un algorithme du plus court chemin avec restrictions de virage. Il a des caractéristiques sympathiques comme vous pouvez spécifiez les points de début et la fin comme un pourcentage d'une arête. Les restrictions sont sauvegardées dans une table séparée des arêtes du graphe et cela rend plus facile de gérer les données."
-
-# 92992e85c1984abeacc10828b636b37b
-#: ../../src/developer/index.rst:65
-msgid ""
-"This optional package provides the ability to compute traveling salesman "
-"problem solutions and compute the resulting route. This optional package "
-"requires GAUL libaries to be installed."
-msgstr "Ce paquet optionnel fournit la capacité de calculer les solutions du problème du voyageur de commerce et calcule la route résultante. Ce paquet optionnel requiert l'installation des librairies GAUL."
-
-# afc268a384184a35a2ccf3b3faf2507e
-#: ../../src/developer/index.rst:70
-msgid "Miscellaneous scripts and tools."
-msgstr "Scripts divers et outils."
-
-# c7bdf010f55a48d788396bf4b9357c12
-#: ../../src/developer/index.rst:73
-msgid ""
-"This is the output directory where compiled libraries and installation "
-"targets are staged before installation."
-msgstr "Ceci est le répertoire de sortie où les cibles des bibliothèques compilées et des installations sont présentées avant l'installation."
-
-# 31864fdbc2584791b41a9db64d200fe6
-#: ../../src/developer/index.rst:78
-msgid "Documentation Layout"
-msgstr "Mise en page de la documentation"
-
-# da1837b55e014ead8cdaa106a149fe5b
-#: ../../src/developer/index.rst:80
-msgid ""
-"*As noted above all documentation should be done using reStructuredText "
-"formated files.*"
-msgstr "*Comme mentionné ci-dessus toute la documentation devrait être construite en utilisant les fichiers formattés reStructuredText.*"
-
-# a4b7ec8d4b8745909277273aa141905a
-#: ../../src/developer/index.rst:83
-msgid ""
-"Documentation is distributed into the source tree. This top level \"doc\" "
-"directory is intended for high level documentation cover subjects like:"
-msgstr "La documentation est distribuée dans l'arbre des sources. Ce répertoire \"doc\" de haut niveau est prévu pour la documentation de haut niveau couvrant les sujets comme :"
-
-# 1374b2ec0aa74533a5df9290d750951f
-#: ../../src/developer/index.rst:86
-msgid "Compiling and testing"
-msgstr "Compilation et tests"
-
-# 084a68deab9b4285bc1fc7011f578d13
-#: ../../src/developer/index.rst:87
-msgid "Installation"
-msgstr "Installation"
-
-# 42d9b895e2544dbbb89e0b050eb5ea54
-#: ../../src/developer/index.rst:88
-msgid "Tutorials"
-msgstr "Tutoriels"
-
-# 8f3cd82581d34b4ca447273e89877f88
-#: ../../src/developer/index.rst:89
-msgid "Users' Guide front materials"
-msgstr "Documentation liminaire du Guide Utilisateur"
-
-# e984baa72b6844039419e00491240778
-#: ../../src/developer/index.rst:90
-msgid "Reference Manual front materials"
-msgstr "Documentation liminaire du Manuel de référence"
-
-# 4e38c58bd8e14226a20bfcbfd29b0cb8
-#: ../../src/developer/index.rst:91
-msgid "etc"
-msgstr "etc"
-
-# 1bb99d883cc7418482d545cdb0848334
-#: ../../src/developer/index.rst:93
-msgid ""
-"Since the algorithm specific documentation is contained in the source tree "
-"with the algorithm specific files, the process of building the documentation"
-" and publishing it will need to assemble the details with the front material"
-" as needed."
-msgstr "Puisque la documentation spécifique de l'algorithme est contenue dans l'arbre de sources avec les fichiers spécifiques de l'algorithme, le processus de la construction de la documentation et la publication va avoir besoin d'assembler les détails avec la documentation de premier rang si besoin."
-
-# 1711ca7d96774e1db5a0924e4d181cdd
-#: ../../src/developer/index.rst:98
-msgid ""
-"Also, to keep the \"doc\" directory from getting cluttered, each major book "
-"like those listed above, should be contained in a separate directory under "
-"\"doc\". Any images or other materials related to the book should also be "
-"kept in that directory."
-msgstr "Aussi, pour empêcher le répertoire \"doc\" d'être encombré, chaque libre majeur comme ceux listés ci-dessus, doivent être contenu dans un répertoire séparé dans \"doc\". Toutes les images ou autres documents liés au livre doivent être aussi mis dans ce répertoire."
-
-# 9a712178ea274d2582cfc6b8a9a3eec1
-#: ../../src/developer/index.rst:105
-msgid "Testing Infrastructure"
-msgstr "Infrastructure de test"
-
-# 34eba7e1e4ce408489010fc1945222c1
-#: ../../src/developer/index.rst:107
-msgid ""
-"There is a very basic testing infrastructure put in place. Here are the "
-"basics of how it works. We need more test cases. Longer term we should "
-"probably get someone to setup travis-ci or jenkins testing frameworks."
-msgstr "L'infrastructure de test mise en place est très basique. Voici les bases de comment ça marche. Nous avons besoin de plus de cas de tests. A long terme nous devrons probablement avoir une personne pour installer les frameworks travis-ci ou jenkins."
-
-# b879a887c3a644328d9fc9d27d3dfe26
-#: ../../src/developer/index.rst:111
-msgid "Here is the graph for the TRSP tests."
-msgstr "Voici le graphe des tests TRSP."
-
-# 60b9e076421a4b1da33afd40f94bd300
-#: ../../src/developer/index.rst:115
-msgid ""
-"Tests are run via the script at the top level tools/test-runner.pl and it "
-"runs all the test configured tests and at the moment just dumps the results "
-"structure of the test. This can be prettied up later."
-msgstr "Les tests sont lancés via le script au haut niveau tools/test-runner.pl qui exécute tous les tests configurés et pour le moment produit en résultats la structure de test. Cela peut être amélioré par la suite."
-
-# b06def8f37514c328b21791eb57e2d01
-#: ../../src/developer/index.rst:119
-msgid ""
-"It also assumes that you have installed the libraries as it tests using the "
-"installed postgresql. This probably needs to be made smarter so we can test "
-"out of the build tree. I'll need to think about that."
-msgstr "Cela suppose aussi que vous avez installé les librairies car les tests requièrent postgresql installé. Il est probablement nécessaire de rendre cela mieux conçu pour que nous puissions essayer l'arbre de build. Je vais essayer de réfléchir à ça."
-
-# be3b92cedcec4b4fbf479d174a42eef6
-#: ../../src/developer/index.rst:124
-msgid ""
-"Basically each .../test/ directory should include one *test.conf* file that "
-"is a perl script fragment that defines what data files to load and what "
-"tests to run. I have built in some mechanisms to allow test and data to be "
-"pg version and postgis version specific, but I'm not using that yet. So for "
-"example, *core/trsp/test/test-any-00.data* is a sql plain text dump that "
-"will load and needed data for a set of tests. This is also the graph in the "
-"image above. You can specify multiple files to load, but as a group they "
-"need to have unique names."
-msgstr "Simplement chaque répertoire .../test/ doit inclure un fichier *test.conf* qui est un fragment de script perl qui définit quels fichiers de données charger et quels tests lancer. J'ai intégré certains mécanismes pour autoriser tests et données d'être spécifiques aux version pg et postgis, mais je ne l'utilise pas encore. Ainsi par exemple, *core/trsp/test/test-any-00.data* est un texte plein généré qui va charger les données nécessaires pour un jeu de tests. C'est aussi le graphe [...]
-
-# 63f7cc81e4084f5bb247374d7a084f89
-#: ../../src/developer/index.rst:133
-msgid ""
-"core/trsp/test/test-any-00.test is a sql command to be run. It will get run "
-"as:"
-msgstr "core/trsp/test/test-any-00.test est une commande sql qui peut être exécutée. Elle s'exécute ainsi : "
-
-# 517a594dd4684e57bbf75d62fa3d4068
-#: ../../src/developer/index.rst:141
-msgid "Then if there is a difference then an test failure is reported."
-msgstr "Ensuite si il y a une différence, alors un échec de test est reporté."
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/developer/sampledata.po b/doc/i18n/fr/LC_MESSAGES/doc/src/developer/sampledata.po
deleted file mode 100644
index 4189cc4..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/developer/sampledata.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 8292d60ebfc34fb492ea6193998bab3e
-#: ../../src/developer/sampledata.rst:13
-msgid "Sample Data"
-msgstr "Données d'échantillon"
-
-# 4b0d58dd2dff4d9c97134f99fe6b536f
-#: ../../src/developer/sampledata.rst:15
-msgid ""
-"The documentation provides very simple example queries based on a small "
-"sample network. To be able to execute the sample queries, run the following "
-"SQL commands to create a table with a small network data set."
-msgstr ""
-
-# e01baf347c854525b5c3bdc1af8d1523
-#: ../../src/developer/sampledata.rst:20
-msgid "Create table"
-msgstr "Créer une table"
-
-# f6ec8db09c164800a1e2d817a06e2a20
-#: ../../src/developer/sampledata.rst:40
-msgid "Insert network data"
-msgstr "Insérer les données du réseau"
-
-# 41d209ca693c4739986152fcdfcb3d25
-#: ../../src/developer/sampledata.rst:70
-msgid ""
-"Before you test a routing function use this query to fill the source and "
-"target columns."
-msgstr ""
-
-# 449efcf19ef14ade9797f5818e87ab24
-#: ../../src/developer/sampledata.rst:77
-msgid "This table is used in some of our examples"
-msgstr ""
-
-# eb2ac2aa18da494185f02f4a2fe0427d
-#: ../../src/developer/sampledata.rst:94
-msgid "The network created in *edge_table*"
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/installation/build.po b/doc/i18n/fr/LC_MESSAGES/doc/src/installation/build.po
deleted file mode 100644
index 465f39b..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/installation/build.po
+++ /dev/null
@@ -1,153 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 36951e7f140d4d5b980b0b6a97a04faf
-#: ../../src/installation/build.rst:13
-msgid "Build Guide"
-msgstr "Guide pour le Build"
-
-# 8c64736c7cb4454d8d602456cae13eb7
-#: ../../src/installation/build.rst:15
-msgid ""
-"To be able to compile pgRouting make sure that the following dependencies "
-"are met:"
-msgstr "Pour être capable de compiler pgRouting, vérifiez que les dépendances suivantes sont présentes :"
-
-# 803fb42d0ed746e7b1434fc0702fecc4
-#: ../../src/installation/build.rst:17
-msgid "C and C++ compilers"
-msgstr "Compilateurs C et C++ "
-
-# c5384bc38f6745bd858daa8f2778464c
-#: ../../src/installation/build.rst:18
-msgid "Postgresql version >= 8.4 (>= 9.1 recommended)"
-msgstr "Version Postgresql >= 8.4 (>= 9.1 recommandée)"
-
-# 7822317678024503afbe9da83351626f
-#: ../../src/installation/build.rst:19
-msgid "PostGIS version >= 1.5 (>= 2.0 recommended)"
-msgstr "Version PostGIS >= 1.5 (>= 2.0 recommandée)"
-
-# 2092361736a94597ae950089f6baeb7c
-#: ../../src/installation/build.rst:20
-msgid "The Boost Graph Library (BGL). Version >= [TBD]"
-msgstr "La Boost Graph Library (BGL). Version >= [à déterminer]"
-
-# ad7f5e5325504267abb8922823e31b6c
-#: ../../src/installation/build.rst:21
-msgid "CMake >= 2.8.8"
-msgstr "CMake >= 2.8.8"
-
-# 9423854129e8411ca11bc2e79ed0a44e
-#: ../../src/installation/build.rst:22
-msgid "(optional, for Driving Distance) CGAL >= [TBD]"
-msgstr "(optionnel, pour Driving Distance) CGAL >= [à déterminer]"
-
-# fbff857abfa44607b05113423945439a
-#: ../../src/installation/build.rst:23
-msgid "(optional, for Documentation) Sphinx >= 1.1"
-msgstr "(optionnel, pour la Documentation) Sphinx >= 1.1"
-
-# 48f6a3951914403f9e1b5ac7d64ada3f
-#: ../../src/installation/build.rst:24
-msgid "(optional, for Documentation as PDF) Latex >= [TBD]"
-msgstr ""
-
-# c6b958f8611849fe90a824cc62db1a74
-#: ../../src/installation/build.rst:26
-msgid ""
-"The cmake system has variables the can be configured via the command line "
-"options by setting them with -D<varable>=<value>. You can get a listing of "
-"these via:"
-msgstr ""
-
-# 62a69adeee3141d5a7de8e0510818440
-#: ../../src/installation/build.rst:34
-msgid "Currently these are:"
-msgstr ""
-
-# 35027a6663fc4210b027e5210150e681
-#: ../../src/installation/build.rst:36
-msgid ""
-"Boost_DIR:PATH=Boost_DIR-NOTFOUND CMAKE_BUILD_TYPE:STRING= "
-"CMAKE_INSTALL_PREFIX:PATH=/usr/local "
-"POSTGRESQL_EXECUTABLE:FILEPATH=/usr/lib/postgresql/9.2/bin/postgres "
-"POSTGRESQL_PG_CONFIG:FILEPATH=/usr/bin/pg_config WITH_DD:BOOL=ON "
-"WITH_DOC:BOOL=OFF BUILD_HTML:BOOL=ON BUILD_LATEX:BOOL=OFF BUILD_MAN:BOOL=ON"
-msgstr ""
-
-# 2a6ecc049d1a49e481516a497cb42cfd
-#: ../../src/installation/build.rst:47
-msgid ""
-"These also show the current or default values based on our development "
-"system. So your values my be different. In general the ones that are of most"
-" interest are:"
-msgstr ""
-
-# b07b4fda86d7472b823a2e8982cf6b05
-#: ../../src/installation/build.rst:49
-msgid ""
-"WITH_DD:BOOL=ON -- Turn on/off building driving distance code. "
-"WITH_DOC:BOOL=OFF -- Turn on/off building the documentation "
-"BUILD_HTML:BOOL=ON -- If WITH_DOC=ON, turn on/off building HTML "
-"BUILD_LATEX:BOOL=OFF -- If WITH_DOC=ON, turn on/off building PDF "
-"BUILD_MAN:BOOL=ON -- If WITH_DOC=ON, turn on/off building MAN pages"
-msgstr ""
-
-# 1b3877776a474e2bbae2cdf632ab7898
-#: ../../src/installation/build.rst:55
-msgid ""
-"To change any of these add ``-D<variable>=<value>`` to the cmake lines "
-"below. For example to turn on documentation, your cmake command might look "
-"like:"
-msgstr ""
-
-# ce5663a99fe540e59ba79b8415f2e8cf
-#: ../../src/installation/build.rst:62
-msgid ""
-"If you turn on the documentation, you also need to add the ``doc`` target to"
-" the make command."
-msgstr ""
-
-# 3447ac18753a48cd8b36008a1c4c10c7
-#: ../../src/installation/build.rst:72
-msgid "For MinGW on Windows"
-msgstr "Pour MinGW sur Windows"
-
-# 9e2e9bb5dfd54856a24b3e0f455b0c82
-#: ../../src/installation/build.rst:84
-msgid "For Linux"
-msgstr "Pour Linux"
-
-# 4939346c6ad34ddc92927ceeb1b5a543
-#: ../../src/installation/build.rst:96
-msgid "With Documentation"
-msgstr "Avec la Documentation"
-
-# a86f43c9a5b84d089caa0a06ac07f64c
-#: ../../src/installation/build.rst:98
-msgid ""
-"Build with documentation (requires `Sphinx <http://sphinx-doc.org/>`_):"
-msgstr "Build avec la documentation (recquiert `Sphinx <http://sphinx-doc.org/>`_) :"
-
-# c9c92cc08d7440f98fe61e333ffc6fe6
-#: ../../src/installation/build.rst:106
-msgid "Rebuild modified documentation only:"
-msgstr "Rebuild seulement la documentation modifiée :"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/installation/index.po b/doc/i18n/fr/LC_MESSAGES/doc/src/installation/index.po
deleted file mode 100644
index 156a46b..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/installation/index.po
+++ /dev/null
@@ -1,203 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:30+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# b41e3e6e82bc4cc1ae494ad03a5e3db0
-#: ../../src/installation/index.rst:13
-msgid "Installation"
-msgstr "Installation"
-
-# c8a69d5d6c9242ad82bf2995a2d43c40
-#: ../../src/installation/index.rst:15
-msgid ""
-"Binary packages are provided for the current version on the following "
-"platforms:"
-msgstr "Les paquets binaires sont fournis pour la version courante sur les plateformes suivantes :"
-
-# 724bcb2a14ac419f99c2f7d5cfe22b6d
-#: ../../src/installation/index.rst:19
-msgid "Windows"
-msgstr "Windows"
-
-# b683dadc50114de7a4bd0073be4510cf
-#: ../../src/installation/index.rst:21
-msgid "Winnie Bot Experimental Builds:"
-msgstr "Winnie Bot Experimental Builds:"
-
-# 006e74f1eaf042779773f59248230fcb
-#: ../../src/installation/index.rst:23
-msgid ""
-"`PostgreSQL 9.2 32-bit, 64-bit "
-"<http://winnie.postgis.net/download/windows/pg92/buildbot/>`_"
-msgstr "`PostgreSQL 9.2 32-bit, 64-bit <http://winnie.postgis.net/download/windows/pg92/buildbot/>`_"
-
-# 7825f3f82e3e426188a552cac3d76d0c
-#: ../../src/installation/index.rst:27
-msgid "Ubuntu/Debian"
-msgstr "Ubuntu/Debian"
-
-# 5d5652a1d3a04382800239684a4d26cc
-#: ../../src/installation/index.rst:29
-msgid "Ubuntu packages are available in Launchpad repositories:"
-msgstr "Les paquets Ubuntu sont disponibles dans les dépôts Launchpad :"
-
-# 761afc4473ab4a35aff506637c8e80aa
-#: ../../src/installation/index.rst:31
-msgid "*stable* https://launchpad.net/~georepublic/+archive/pgrouting"
-msgstr "*stable* https://launchpad.net/~georepublic/+archive/pgrouting"
-
-# 6500186f8e3d42c88983fa564fc4facf
-#: ../../src/installation/index.rst:32
-msgid ""
-"*unstable* https://launchpad.net/~georepublic/+archive/pgrouting-unstable"
-msgstr "*unstable* https://launchpad.net/~georepublic/+archive/pgrouting-unstable"
-
-# 7050e2f75f7b42fea67597e63cf2f111
-#: ../../src/installation/index.rst:43
-msgid ""
-"Use `UbuntuGIS-unstable PPA <https://launchpad.net/~ubuntugis/+archive"
-"/ubuntugis-unstable>`_ to install PostGIS 2.0."
-msgstr "Utiliser `UbuntuGIS-unstable PPA <https://launchpad.net/~ubuntugis/+archive/ubuntugis-unstable>`_ pour installer PostGIS 2.0."
-
-# ce72f9b5cb814c5fb4a4ec48c0f7a294
-#: ../../src/installation/index.rst:47
-msgid "RHEL/CentOS/Fedora"
-msgstr "RHEL/CentOS/Fedora"
-
-# 06c08177883146369e10318b54f2662a
-#: ../../src/installation/index.rst:49
-msgid ""
-"Fedora RPM's: https://admin.fedoraproject.org/pkgdb/acls/name/pgRouting"
-msgstr "Fedora RPM's: https://admin.fedoraproject.org/pkgdb/acls/name/pgRouting"
-
-# b6146b0917b441268525a1fe54b0f17e
-#: ../../src/installation/index.rst:53
-msgid "OS X"
-msgstr "OS X"
-
-# cdc507aa586e4ac8b00a7d5818bde423
-#: ../../src/installation/index.rst:57
-msgid "Homebrew"
-msgstr "Homebrew"
-
-# e949ab234590487ca8c4cfa47be11908
-#: ../../src/installation/index.rst:65
-msgid "Source Package"
-msgstr "Paquets Sources"
-
-# ec1db5ae27a4451fae0ee5b486baa0db
-#: ../../src/installation/index.rst:68
-msgid "Git 2.0.0-rc1 release"
-msgstr "Git 2.0.0-rc1 release"
-
-# 8f33d62c1dda4436a3c0a75489dec129
-#: ../../src/installation/index.rst:68
-msgid "`v2.0.0-rc1.tar.gz`_"
-msgstr "`v2.0.0-rc1.tar.gz`_"
-
-# 4eb23002a0464e94a6e62cdef2c72234
-#: ../../src/installation/index.rst:68
-msgid "`v2.0.0-rc1.zip`_"
-msgstr "`v2.0.0-rc1.zip`_"
-
-# b5a17e917a89472c955c6f2cfdfff517
-#: ../../src/installation/index.rst:69
-msgid "Git 2.0.0-beta release"
-msgstr "Git 2.0.0-beta release"
-
-# 3db241a58e4c4d6f868116a6770030b5
-#: ../../src/installation/index.rst:69
-msgid "`v2.0.0-beta.tar.gz`_"
-msgstr "`v2.0.0-beta.tar.gz`_"
-
-# 1e21c08cc7c84816b3ca5cc813d1470d
-#: ../../src/installation/index.rst:69
-msgid "`v2.0.0-beta.zip`_"
-msgstr "`v2.0.0-beta.zip`_"
-
-# 2286b25add114b9e82622ff02d730a8e
-#: ../../src/installation/index.rst:70
-msgid "Git 2.0.0-alpha release"
-msgstr "Git 2.0.0-alpha release"
-
-# 3db12a14f5b94a0eae1772d2f84c9058
-#: ../../src/installation/index.rst:70
-msgid "`v2.0.0-alpha.tar.gz`_"
-msgstr "`v2.0.0-alpha.tar.gz`_"
-
-# 9ecc4cba22564943855591c0079db428
-#: ../../src/installation/index.rst:70
-msgid "`v2.0.0-alpha.zip`_"
-msgstr "`v2.0.0-alpha.zip`_"
-
-# 708d8ebb02c2479c86755b38333b9e3d
-#: ../../src/installation/index.rst:71
-msgid "Git master branch"
-msgstr "Git master branch"
-
-# 07931d9e017b4fc7aabc4ca1affa9ec4
-#: ../../src/installation/index.rst:71
-msgid "`master.tar.gz`_"
-msgstr "`master.tar.gz`_"
-
-# 8ed2f03dcd4b4be1bfee86da4d9bcdc9
-#: ../../src/installation/index.rst:71
-msgid "`master.zip`_"
-msgstr "`master.zip`_"
-
-# bded77386d4a4124b17d0ee2903d5877
-#: ../../src/installation/index.rst:72
-msgid "Git develop branch"
-msgstr "Git develop branch"
-
-# 9da6c796cd3045c28c04775b7c49e27c
-#: ../../src/installation/index.rst:72
-msgid "`develop.tar.gz`_"
-msgstr "`develop.tar.gz`_"
-
-# 1671db28e6df4d6094c2fb0a5afe4106
-#: ../../src/installation/index.rst:72
-msgid "`develop.zip`_"
-msgstr "`develop.zip`_"
-
-# 5a32f08a903c487092dbfb1eae278d84
-#: ../../src/installation/index.rst:92
-msgid "Using Git"
-msgstr "Utiliser Git"
-
-# f1630712900a49db825c618380b4a713
-#: ../../src/installation/index.rst:94
-msgid "Git protocol (read-only):"
-msgstr "Protocole Git (en lecture seule) :"
-
-# 9c36f0b296a343ea9c7103d514b6af07
-#: ../../src/installation/index.rst:101
-msgid "HTTPS protocol (read-only): .. code-block:: bash"
-msgstr ""
-
-# 79827ebd49da4add88e7275c6abc8a5d
-#: ../../src/installation/index.rst:104
-msgid "git clone https://github.com/pgRouting/pgrouting.git"
-msgstr "git clone https://github.com/pgRouting/pgrouting.git"
-
-# 00af13df90844038a100e3ed84ea8572
-#: ../../src/installation/index.rst:107
-msgid "See :ref:`build` for notes on compiling from source."
-msgstr "Voir :ref:`build` les notes sur comment compiler depuis les sources."
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/introduction/index.po b/doc/i18n/fr/LC_MESSAGES/doc/src/introduction/index.po
deleted file mode 100644
index 976dbe3..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/introduction/index.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 3cb0b7c03fa84c59a8bdb4f5efd33fec
-#: ../../src/introduction/index.rst:23
-msgid "Indices and tables"
-msgstr "Index et tableaux"
-
-# 8cbfd2a6f6d44a1599cfff832b626535
-#: ../../src/introduction/index.rst:24
-msgid ":ref:`genindex`"
-msgstr ":ref:`genindex`"
-
-# df46715e85104bf48ebb9fb9005099e0
-#: ../../src/introduction/index.rst:25
-msgid ":ref:`search`"
-msgstr ":ref:`search`"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/introduction/introduction.po b/doc/i18n/fr/LC_MESSAGES/doc/src/introduction/introduction.po
deleted file mode 100644
index e590908..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/introduction/introduction.po
+++ /dev/null
@@ -1,187 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 06:00+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# d7ca13e272ea4f9a9007e75f83ccda07
-#: ../../src/introduction/introduction.rst:13
-msgid "Introduction"
-msgstr "Introduction"
-
-# da484b645bf24737937b91b50cb8db89
-#: ../../src/introduction/introduction.rst:15
-msgid ""
-"pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL"
-" <http://postgresql.org>`_ geospatial database and adds routing and other "
-"network analysis functionality. A predecessor of pgRouting – pgDijkstra, "
-"written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was "
-"later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to "
-"pgRouting. The project is now supported and maintained by `Georepublic "
-"<http://georepublic.info>`_, `iMaptools <http://imaptools.com/>`_ and a "
-"broad user community."
-msgstr "pgRouting est une extension des bases de données géospatiales `PostGIS <http://postgis.net>`_ et `PostgreSQL <http://postgresql.org>`_ et ajoute des fonctionnalités de routing et autres analyses de réseaux. Un prédecesseur de pgRouting – pgDijkstra, écrit par Sylvain Pasche de `Camptocamp <http://camptocamp.com>`_, a été étendue ultérieurement par`Orkney <http://www.orkney.co.jp>`_ et renommé pgRouting. Le projet est maintenant maintenu et supporté par `Georepublic <http://georep [...]
-
-# 809f2467c4ee44b093b8ad8386624187
-#: ../../src/introduction/introduction.rst:17
-msgid ""
-"pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ "
-"project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo"
-" Live <http://live.osgeo.org/>`_."
-msgstr "pgRouting est un projet `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ de `OSGeo Foundation <http://osgeo.org>`_ et inclut un `OSGeo Live <http://live.osgeo.org/>`_."
-
-# 16be225589d54868a6e1b06785c71bec
-#: ../../src/introduction/introduction.rst:23
-msgid "License"
-msgstr "Licence"
-
-# c408c4a83f184155aa9880e36ca889d0
-#: ../../src/introduction/introduction.rst:25
-msgid "The following licenses can be found in pgRouting:"
-msgstr "Les licences suivantes peuvent être trouvées dans in pgRouting :"
-
-# 31c7be72dc384ef29713eaf2fd580192
-#: ../../src/introduction/introduction.rst:30
-msgid "**License**"
-msgstr "**Licence**"
-
-# 74c1c3a9531243488b0c52134c79e04a
-#: ../../src/introduction/introduction.rst:32
-msgid "GNU General Public License, version 2"
-msgstr "GNU General Public License, version 2"
-
-# 68b6976ef3b147ebba541311f30c1a4d
-#: ../../src/introduction/introduction.rst:33
-msgid ""
-"Most features of pgRouting are available under `GNU General Public License, "
-"version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
-msgstr "La plupart des caractéristiques de pgRouting sont disponibles sous `GNU General Public License, version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
-
-# 3a0945a2b9214644850ca56e273bc01e
-#: ../../src/introduction/introduction.rst:34
-msgid "Boost Software License - Version 1.0"
-msgstr "Boost Software License - Version 1.0"
-
-# e7bd7b9a9dda4730905a2cc4a3e16112
-#: ../../src/introduction/introduction.rst:35
-msgid ""
-"Some Boost extensions are available under `Boost Software License - Version "
-"1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
-msgstr "Certaines extensions Boost sont disponibles sous `Boost Software License - Version 1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
-
-# 16c42cd30ff24da4bbded95fbf9e66b0
-#: ../../src/introduction/introduction.rst:36
-msgid "MIT-X License"
-msgstr "MIT-X License"
-
-# d5e17519bd0d4f59bf932309fab800c8
-#: ../../src/introduction/introduction.rst:37
-msgid ""
-"Some code contributed by iMaptools.com is available under MIT-X license."
-msgstr "Une partie du code à laquelle a contribué iMaptools.com est disponible sous la licence MIT-X."
-
-# 88d424e5e3f24713be7c34ccce6d1e57
-#: ../../src/introduction/introduction.rst:38
-msgid "Creative Commons Attribution-Share Alike 3.0 License"
-msgstr "Creative Commons Attribution-Share Alike 3.0 License"
-
-# 54ef0939d7e94434a2552d2bb3d79fba
-#: ../../src/introduction/introduction.rst:39
-msgid ""
-"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
-" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
-msgstr "Le Manuel pgRouting est distribué sous la licence `Creative Commons Attribution-Share Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
-
-# 5e7f1f01c52346069889d0578d72e8da
-#: ../../src/introduction/introduction.rst:41
-msgid ""
-"In general license information should be included in the header of each "
-"source file."
-msgstr "En général les informations de licence devraient être inclues dans l'entête de chaque fichier source."
-
-# 9224c9bd3c5249ea9feb85e27d6161aa
-#: ../../src/introduction/introduction.rst:45
-msgid "Contributors"
-msgstr "Contributeurs"
-
-# a90f02bef3f64bc4994f0afbbb67b8ca
-#: ../../src/introduction/introduction.rst:48
-msgid "Individuals (in alphabetical order)"
-msgstr "Particuliers (dans l'ordre alphabétique)"
-
-# 1d2ac5417c2b484db8aec0192b7843fd
-#: ../../src/introduction/introduction.rst:50
-msgid ""
-"Akio Takubo, Anton Patrushev, Ashraf Hossain, Christian Gonzalez, Daniel "
-"Kastl, Dave Potts, David Techer, Ema Miyawaki, Florian Thurkow, Frederic "
-"Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, Kai Behncke, Kishore Kumar,"
-" Ko Nagase, Mario Basa, Martin Wiesenhaan, Razequl Islam, Stephen "
-"Woodbridge, Sylvain Housseman, Sylvain Pasche, Virginia Vergara"
-msgstr ""
-
-# 573e14f52e5948dba921408454b6d775
-#: ../../src/introduction/introduction.rst:54
-msgid "Corporate Sponsors (in alphabetical order)"
-msgstr "Sponsors entreprises (dans l'ordre alphabétique)"
-
-# ad2024213fb347d781158d36b80dfa17
-#: ../../src/introduction/introduction.rst:56
-msgid ""
-"These are corporate entities that have contributed developer time, hosting, "
-"or direct monetary funding to the pgRouting project:"
-msgstr "Il y a des entités d'entreprise qui ont contribué au temps de développement, à l'hébergement, ou directement par financement monétaire au projet pgRouting."
-
-# 09f8287921f74248909e1cf3831f2b96
-#: ../../src/introduction/introduction.rst:58
-msgid ""
-"Camptocamp, CSIS (University of Tokyo), Georepublic, Google Summer of Code, "
-"iMaptools, Orkney, Paragon Corporation"
-msgstr "Camptocamp, CSIS (Université de Tokyo), Georepublic, Google Summer of Code, iMaptools, Orkney, Paragon Corporation"
-
-# 4cdcc401254446eb9d46bda960475fc9
-#: ../../src/introduction/introduction.rst:62
-msgid "More Information"
-msgstr "Plus d'informations"
-
-# 4bf76e2626a34595ab551ac18bd46a72
-#: ../../src/introduction/introduction.rst:64
-msgid ""
-"The latest software, documentation and news items are available at the "
-"pgRouting web site http://pgrouting.org."
-msgstr "Les derniers éléments de l'application, documentation et actualité sont disponibles sur le site web pgRouting http://pgrouting.org."
-
-# 7344febf35dc4a0ebc352f5786f756b0
-#: ../../src/introduction/introduction.rst:65
-msgid ""
-"PostgreSQL database server at the PostgreSQL main site "
-"http://www.postgresql.org."
-msgstr "Le serveur de la base de données PostgreSQL sur le site principal de PostgreSQL http://www.postgresql.org."
-
-# cc976f5cf90846e6b5e9dac7197bed3d
-#: ../../src/introduction/introduction.rst:66
-msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
-msgstr "Extension PostGIS sur le site web de PostGIS http://postgis.net."
-
-# b8f01943a50a46e8add511936f5a97c4
-#: ../../src/introduction/introduction.rst:67
-msgid "Boost C++ source libraries at http://www.boost.org."
-msgstr "Sources des bibliothèques Boost C++ ici http://www.boost.org."
-
-# 65e6bb0c75f54944a362439ff74f327d
-#: ../../src/introduction/introduction.rst:68
-msgid ""
-"Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
-msgstr "Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/introduction/support.po b/doc/i18n/fr/LC_MESSAGES/doc/src/introduction/support.po
deleted file mode 100644
index 038d955..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/introduction/support.po
+++ /dev/null
@@ -1,220 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# c7c0c737d2bc483ca92c96d3625c5985
-#: ../../src/introduction/support.rst:13
-msgid "Support"
-msgstr "Support"
-
-# 32ad6c32431b44539592025892c46046
-#: ../../src/introduction/support.rst:15
-msgid ""
-"pgRouting community support is available through `website "
-"<http://www.pgrouting.org>`_, `documentation <http://docs.pgrouting.org>`_, "
-"tutorials, mailing lists and others. If you’re looking for :ref:`commercial "
-"support <support_commercial>`, find below a list of companies providing "
-"pgRouting development and consulting services."
-msgstr "Le support de la communauté pgRouting est disponible depuis le `site web <http://www.pgrouting.org>`_, `documentation <http://docs.pgrouting.org>`_, tutoriels, listes emails et autres. Si vous cherchez un :ref:`support commercial <support_commercial>`, vous trouverez ci-dessous une liste des sociétés fournissant des services de développement et de conseil."
-
-# 4bff50a608f740b89877515e393b43a3
-#: ../../src/introduction/support.rst:19
-msgid "Reporting Problems"
-msgstr "Reporter un problème"
-
-# a0003d2bba284084b83f648947e1d28a
-#: ../../src/introduction/support.rst:21
-msgid ""
-"Bugs are reported and managed in an `issue tracker "
-"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
-"steps:"
-msgstr "Les bugs sont reportés et gérés dans un `système de gestion d'incidents <https://github.com/pgrouting/pgrouting/issues>`_. Merci de suivre ces étapes :"
-
-# 456e34fdd1a64ac2bf279b123f8c60ec
-#: ../../src/introduction/support.rst:23
-msgid ""
-"Search the tickets to see if your problem has already been reported. If so, "
-"add any extra context you might have found, or at least indicate that you "
-"too are having the problem. This will help us prioritize common issues."
-msgstr "Cherchez les tickets pour voir si votre problème a déjà été reporté. Si oui, ajoutez tout contexte supplémentaire que vous pourriez avoir trouvé, ou vous pouvez simplement ajouter que vous avez également le même problème. Cela nous aidera à établir la priorité des incidents en commun. "
-
-# c7868bf251024c2284115bdc5ff6a56a
-#: ../../src/introduction/support.rst:24
-msgid ""
-"If your problem is unreported, create a `new issue "
-"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
-msgstr "Si votre problème n'est pas reporté, créer un `nouvel incident <https://github.com/pgRouting/pgrouting/issues/new>`_ pour ça."
-
-# 8780a71171ad4ee891831e77e352e463
-#: ../../src/introduction/support.rst:25
-msgid ""
-"In your report include explicit instructions to replicate your issue. The "
-"best tickets include the exact SQL necessary to replicate a problem."
-msgstr "Dans votre rapport, incluez explicitement les instructions pour reproduire votre problème. Les meilleurs tickets incluent le SQL exact nécessaire pour reproduire un problème."
-
-# e37493a4d9354b66abcd37cee8516738
-#: ../../src/introduction/support.rst:26
-msgid ""
-"If you can test older versions of PostGIS for your problem, please do. On "
-"your ticket, note the earliest version the problem appears."
-msgstr "Si vous pouvez tester les versions anciennes de PostGIS pour votre problème, merci de le faire. Dans votre ticket, mentionnez la plus récente version où le problème apparaît."
-
-# 2fb24e96127c45d08bb73c55f52a7153
-#: ../../src/introduction/support.rst:27
-msgid ""
-"For the versions where you can replicate the problem, note the operating "
-"system and version of pgRouting, PostGIS and PostgreSQL."
-msgstr "Pour les versions où vous pouvez reproduire le problème, notez le système d'exploitation et la version de pgRouting, PostGIS et PostgreSQL."
-
-# a663e12c88ed4c958554c604f0b6d4d0
-#: ../../src/introduction/support.rst:28
-msgid ""
-"It is recommended to use the following wrapper on the problem to pin point "
-"the step that is causing the problem."
-msgstr ""
-
-# 47052f7fae7249d6ae1cf64282ceb59c
-#: ../../src/introduction/support.rst:39
-msgid "Mailing List and GIS StackExchange"
-msgstr "Liste d'emails et StackExchange SIG"
-
-# 27b8ce0f71384ba693efcb0dfb73ae3a
-#: ../../src/introduction/support.rst:41
-msgid ""
-"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
-"server:"
-msgstr "Il y a deux listes emails pour pgRouting hébergé sur le serveur de mailing list OSGeo."
-
-# 80462e7382f24471ba09d7fd3a545a9e
-#: ../../src/introduction/support.rst:43
-msgid ""
-"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
-msgstr "Listes d'emails utilisateurs : http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
-
-# 13e85084f4834b80bc71de82070cd045
-#: ../../src/introduction/support.rst:44
-msgid ""
-"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
-"dev"
-msgstr "Liste des emails développeurs : http://lists.osgeo.org/mailman/listinfo/pgrouting-dev"
-
-# 1c9e5bb5962e4e0eb6def2fb057836f0
-#: ../../src/introduction/support.rst:46
-msgid ""
-"For general questions and topics about how to use pgRouting, please write to"
-" the user mailing list."
-msgstr "Pour les questions générales et les sujets sur comment utiliser pgRouting, veuillez écrire à la liste des emails utilisateurs."
-
-# 6ee669e36133404c80e8b4970948411f
-#: ../../src/introduction/support.rst:48
-msgid ""
-"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
-" tag the question with ``pgrouting``. Find all questions tagged with "
-"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
-"or subscribe to the `pgRouting questions feed "
-"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
-msgstr "Vous pouvez aussi demander à `GIS StackExchange <http://gis.stackexchange.com/>`_ et étiquetter la question avec ``pgrouting``. Trouvez toutes les questions étiquetées avec ``pgrouting`` ici http://gis.stackexchange.com/questions/tagged/pgrouting ou abonnez-vous à `pgRouting questions feed <http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
-
-# 6a373e258f034db7a828d6136b10d6f2
-#: ../../src/introduction/support.rst:54
-msgid "Commercial Support"
-msgstr "Support Commercial"
-
-# cc0ba72823c14231862a66b9ae93346a
-#: ../../src/introduction/support.rst:56
-msgid ""
-"For users who require professional support, development and consulting "
-"services, consider contacting any of the following organizations, which have"
-" significantly contributed to the development of pgRouting:"
-msgstr "Pour les utilisateurs qui demandent un support professionnel et des services de conseil, veuillez contacter l'une des organisations suivantes, qui ont contribué de façon significative au développement de pgRouting :"
-
-# 67e18fa7bf2148078cd7d3f651ee5127
-#: ../../src/introduction/support.rst:61
-msgid "**Company**"
-msgstr "**Société**"
-
-# 19beaf22bba14bad81ecc361e70f065f
-#: ../../src/introduction/support.rst:62
-msgid "**Offices in**"
-msgstr "**Bureaux à**"
-
-# 0fab02b12f7a41429938b4d160ad4255
-#: ../../src/introduction/support.rst:63
-msgid "**Website**"
-msgstr "**Site web**"
-
-# 350e6cd672124438a6fa234a5c635414
-#: ../../src/introduction/support.rst:64
-msgid "Georepublic"
-msgstr "Georepublic"
-
-# dd5cf051ee424f30aebcd1f07cb73b6e
-#: ../../src/introduction/support.rst:65
-msgid "Germany, Japan"
-msgstr "Allemagne, Japon"
-
-# 466fe62593f94b62a69ead6e8a03565b
-#: ../../src/introduction/support.rst:66
-msgid "http://georepublic.info"
-msgstr "http://georepublic.info"
-
-# addd13f2e8ba4a588f031b6f49ee8928
-#: ../../src/introduction/support.rst:67
-msgid "iMaptools"
-msgstr "iMaptools"
-
-# a8daac2def214afc8d8ceb9a27d25589
-#: ../../src/introduction/support.rst:68
-msgid "United States"
-msgstr "États-Unis"
-
-# 08a0ae9e94434d9bb44c3c8403243f3f
-#: ../../src/introduction/support.rst:69
-msgid "http://imaptools.com"
-msgstr "http://imaptools.com"
-
-# de65746683f949569928286d2b94e0c9
-#: ../../src/introduction/support.rst:70
-msgid "Orkney Inc."
-msgstr "Orkney Inc."
-
-# f9673096ad4b4c9fb435f7e806e95b68
-#: ../../src/introduction/support.rst:71
-msgid "Japan"
-msgstr "Japon"
-
-# d23116ef9a0f4feba31c83b54b3e823f
-#: ../../src/introduction/support.rst:72
-msgid "http://www.orkney.co.jp"
-msgstr "http://www.orkney.co.jp"
-
-# dceb3f34abe74bfbad46c5a5e37c852b
-#: ../../src/introduction/support.rst:73
-msgid "Camptocamp"
-msgstr "Camptocamp"
-
-# 6bb5afc92f294b7e8322302390f56fec
-#: ../../src/introduction/support.rst:74
-msgid "Switzerland, France"
-msgstr "Suisse, France"
-
-# bd2983c88d074017be19551e6cf11fff
-#: ../../src/introduction/support.rst:75
-msgid "http://www.camptocamp.com"
-msgstr "http://www.camptocamp.com"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/analytics.po b/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/analytics.po
deleted file mode 100644
index 0ec0a48..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/analytics.po
+++ /dev/null
@@ -1,215 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 980fad1a06484f7c8cef9a7fde4958ec
-#: ../../src/tutorial/analytics.rst:13
-msgid "Graph Analytics"
-msgstr "Analytiques de graphe"
-
-# 92dfdaca18154d5fb972e4b0377224d1
-#: ../../src/tutorial/analytics.rst:15
-msgid "Stephen Woodbridge <woodbri at swoodbridge.com>"
-msgstr "Stephen Woodbridge <woodbri at swoodbridge.com>"
-
-# 9d29818196394fe6bde3a64a6a4ecc11
-#: ../../src/tutorial/analytics.rst:16
-msgid ""
-"Stephen Woodbridge. The source code is released under the MIT-X license."
-msgstr "Stephen Woodbridge. The code source est distribué sous la licence MIT-X."
-
-# 310f125aa8204065bcc2b95d49db2196
-#: ../../src/tutorial/analytics.rst:20
-msgid "Overview"
-msgstr "Présentation"
-
-# a3236e530b504e8895bcee266c2f686b
-#: ../../src/tutorial/analytics.rst:22
-msgid ""
-"It is common to find problems with graphs that have not been constructed "
-"fully noded or in graphs with z-levels at intersection that have been "
-"entered incorrectly. An other problem is one way streets that have been "
-"entered in the wrong direction. We can not detect errors with respect to "
-"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
-"a graph and report them for additional inspections."
-msgstr ""
-
-# be553e417c184b5eb0ad8ee4096ad7fa
-#: ../../src/tutorial/analytics.rst:24
-msgid ""
-"We do not current have any visualization tools for these problems, but I "
-"have used mapserver to render the graph and highlight potential problem "
-"areas. Someone familiar with graphviz might contribute tools for generating "
-"images with that."
-msgstr ""
-
-# d3e3bf311b944d1cb4f8ebfa1e3d1c35
-#: ../../src/tutorial/analytics.rst:28
-msgid "Analyze a Graph"
-msgstr "Analyser un graphe"
-
-# b7b34732b36b4c3386ebb82a99725c87
-#: ../../src/tutorial/analytics.rst:30
-msgid ""
-"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
-"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
-"table:"
-msgstr ""
-
-# 883152de9fb3419fa261d8c6761b619f
-#: ../../src/tutorial/analytics.rst:53
-msgid "In the vertices table \"mytab_vertices_pgr\":"
-msgstr ""
-
-# dde249ef911949ab835d0b7d9350c416
-#: ../../src/tutorial/analytics.rst:55
-msgid "Deadends are indentified by ``cnt=1``"
-msgstr ""
-
-# 99f8cb76dde84268b23cafcadb364a32
-#: ../../src/tutorial/analytics.rst:56
-msgid "Potencial gap problems are identified with ``chk=1``."
-msgstr ""
-
-# fd199f728c124588a6fccf258e912e65
-#: ../../src/tutorial/analytics.rst:74
-msgid ""
-"For isolated road segments, for example, a segment where both ends are "
-"deadends. you can find these with the following query:"
-msgstr ""
-
-# 6986ddb18688499ca9065a00ac84b5fc
-#: ../../src/tutorial/analytics.rst:83
-msgid ""
-"If you want to visualize these on a graphic image, then you can use "
-"something like mapserver to render the edges and the vertices and style "
-"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
-"tool like graphviz, or geoserver or other similar tools."
-msgstr "Si vous voulez visualiser ceux-ci sur une image graphique, alors vous pouvez utiliser quelque chose comme mapserver pour rendre les arêtes et les sommets et le style basé sur ``cnt`` ou ils sont isolés, etc. Vous pouvez aussi faire cela avec un outil comme graphviz, ou geoserver ou autres outils similaires."
-
-# a9cdd802bf2d44b8ad116075edfa006d
-#: ../../src/tutorial/analytics.rst:87
-msgid "Analyze One Way Streets"
-msgstr "Analyser les routes à sens unique"
-
-# ceeba0ba5905459c92f8e38e90544cb4
-#: ../../src/tutorial/analytics.rst:89
-msgid ""
-":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
-" any flipped segments. Basically if you count the edges coming into a node "
-"and the edges exiting a node the number has to be greater than one."
-msgstr ""
-
-# 965b89e720674f77a4d6d97b26312235
-#: ../../src/tutorial/analytics.rst:91
-msgid ""
-"This query will add two columns to the vertices_tmp table ``ein int`` and "
-"``eout int`` and populate it with the appropriate counts. After running this"
-" on a graph you can identify nodes with potential problems with the "
-"following query."
-msgstr "Cette requête va ajouter deux colonnes à la table vertices_tmp ``ein int`` et ``eout int`` et la remplir avec les comptes appropriés. Après avoir exécuté ceci sur un graphe vous pouvez identifier les noeuds avec des problèmes potentiels avec la requête suivante."
-
-# 7a483848e9424b628eadf2560140d784
-#: ../../src/tutorial/analytics.rst:94
-msgid ""
-"The rules are defined as an array of text strings that if match the ``col`` "
-"value would be counted as true for the source or target in or out condition."
-msgstr "Les règles sont définies comme un tableau de chaînes de caractères qui s'ils correspondent à la valeur ``col`` serait être comptée comme vraie pour la source ou cible sous ou en dehors de la condition."
-
-# 07304f9bde2d4248af5616aa3ad7b998
-#: ../../src/tutorial/analytics.rst:98
-msgid "Example"
-msgstr "Exemple"
-
-# 3a0862cb802a42dd9a8eb1972e947d4a
-#: ../../src/tutorial/analytics.rst:100
-msgid ""
-"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
-"might have values like:"
-msgstr "Supposons que nous avons un tableau \"st\" des arêtes et une colonne à \"sens unique\" qui pourrait avoir des valeurs comme :"
-
-# 04d77c12d42a49098ac138d4cd8d1134
-#: ../../src/tutorial/analytics.rst:102
-msgid "'FT' - oneway from the source to the target node."
-msgstr "'FT' - sens unique de la source au noeud cible."
-
-# 1e433297e48745b8a26d9bdc471bb079
-#: ../../src/tutorial/analytics.rst:103
-msgid "'TF' - oneway from the target to the source node."
-msgstr "'TF' - sens unique de la cible au noeud source."
-
-# ec58ad375c304521a62c088b53b57cca
-#: ../../src/tutorial/analytics.rst:104
-msgid "'B' - two way street."
-msgstr "'B' - route à deux voies."
-
-# de3d50611ab84de8abc0434aaf176361
-#: ../../src/tutorial/analytics.rst:105
-msgid "'' - empty field, assume twoway."
-msgstr "'' - champ vide, supposé à deux voies."
-
-# bec6afb7e7f0453b8d028b521ce38b1f
-#: ../../src/tutorial/analytics.rst:106
-msgid "<NULL> - NULL field, use two_way_if_null flag."
-msgstr "<NULL> - champ NULL, utiliser le flag two_way_if_null."
-
-# 8b2a6e5d0f58459b9c0d857b8094b2b1
-#: ../../src/tutorial/analytics.rst:108
-msgid ""
-"Then we could form the following query to analyze the oneway streets for "
-"errors."
-msgstr "Ensuite nous pourrions former la requête suivante pour analyser les routes à sens unique pour les erreurs."
-
-# ca0da22fa34a4ab8abffbb33176f1196
-#: ../../src/tutorial/analytics.rst:127
-msgid ""
-"Typically these problems are generated by a break in the network, the one "
-"way direction set wrong, maybe an error related to z-levels or a network "
-"that is not properly noded."
-msgstr ""
-
-# e6995522d4b34322a49f7fc234ef5a92
-#: ../../src/tutorial/analytics.rst:129
-msgid ""
-"The above tools do not detect all network issues, but they will identify "
-"some common problems. There are other problems that are hard to detect "
-"because they are more global in nature like multiple disconnected networks. "
-"Think of an island with a road network that is not connected to the mainland"
-" network because the bridge or ferry routes are missing."
-msgstr ""
-
-# f35ee6b63cb84a21956ba58f495375b3
-#: ../../src/tutorial/analytics.rst:133
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 46adfdf5d9b042109be5c667ad12afdc
-#: ../../src/tutorial/analytics.rst:135
-msgid ":ref:`pgr_analyze_graph`"
-msgstr ":ref:`pgr_analyze_graph`"
-
-# d6a1979339344f65beef1fb134c99ea0
-#: ../../src/tutorial/analytics.rst:136
-msgid ":ref:`pgr_analyze_oneway`"
-msgstr ":ref:`pgr_analyze_oneway`"
-
-# b1e8747121eb4e61bc26581ab784c9ce
-#: ../../src/tutorial/analytics.rst:137
-msgid ":ref:`pgr_node_network`"
-msgstr ":ref:`pgr_node_network`"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/custom_query.po b/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/custom_query.po
deleted file mode 100644
index 6138c51..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/custom_query.po
+++ /dev/null
@@ -1,149 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 6f7957030f094b6d9cbc9409e43365cc
-#: ../../src/tutorial/custom_query.rst:13
-msgid "Custom Query"
-msgstr "Requête personnalisée"
-
-# d51566c70ba441bd97b5f05d3319f75b
-#: ../../src/tutorial/custom_query.rst:17
-msgid ""
-"In general, the routing algorithms need an SQL query that contain one or "
-"more of the following required columns with the preferred type:"
-msgstr ""
-
-# 3635e11429294bfb8119843ed85e9357
-# 3e7594678daf45f18a5e66bd639a5eff
-# 1cbb2351bab547248a9e9c603cd7a566
-#: ../../src/tutorial/custom_query.rst:19
-#: ../../src/tutorial/custom_query.rst:20
-#: ../../src/tutorial/custom_query.rst:21
-msgid "int4"
-msgstr ""
-
-# 4215130eed644b249425772c5e56bd0f
-# 56540a30c9bd4368b8cabf5c501404f4
-# cd08d7d274414ff8ab7201e379a68284
-# bcb0372ecaf94af1b1ddac5411662b4c
-# 0e6362bbf64c4705b5b1f75692ec42ef
-# 8d70966ee0614b2c887aaab9e45c0dd5
-# 4326b5bb0231435698e3b6d52f933827
-# 3181c241469e4670bcae933939634002
-# cb8241385b0c44c4839d156649851190
-#: ../../src/tutorial/custom_query.rst:22
-#: ../../src/tutorial/custom_query.rst:23
-#: ../../src/tutorial/custom_query.rst:24
-#: ../../src/tutorial/custom_query.rst:25
-#: ../../src/tutorial/custom_query.rst:26
-#: ../../src/tutorial/custom_query.rst:27
-#: ../../src/tutorial/custom_query.rst:28
-#: ../../src/tutorial/custom_query.rst:29
-#: ../../src/tutorial/custom_query.rst:63
-msgid "float8"
-msgstr ""
-
-# 18ef546ea54244b9a998d5db49cd6b44
-#: ../../src/tutorial/custom_query.rst:31
-msgid ""
-"When the edge table has the mentioned columns, the following SQL queries can"
-" be used."
-msgstr ""
-
-# d6c69e08f2e942548a8da4a67c6be175
-#: ../../src/tutorial/custom_query.rst:39
-msgid ""
-"When the edge table has a different name to represent the required columns:"
-msgstr ""
-
-# d121b6e40b2549b68baeebb6ac20ebfe
-#: ../../src/tutorial/custom_query.rst:51
-msgid ""
-"The topology functions use the same names for ``id``, ``source`` and "
-"``target`` columns of the edge table, The fowllowing parameters have as "
-"default value:"
-msgstr ""
-
-# 0cffe4e3fec240748ea92fc80198a879
-#: ../../src/tutorial/custom_query.rst:53
-msgid "int4 Default ``id``"
-msgstr ""
-
-# 317d18ac6e654e2699ab3c5386987100
-#: ../../src/tutorial/custom_query.rst:54
-msgid "int4 Default ``source``"
-msgstr ""
-
-# dc30cae70610482b9da90a59e92699b1
-#: ../../src/tutorial/custom_query.rst:55
-msgid "int4 Default ``target``"
-msgstr ""
-
-# 5ea6410c1e7948d8a0de99e9348a3617
-#: ../../src/tutorial/custom_query.rst:56
-msgid "text Default ``the_geom``"
-msgstr ""
-
-# 234a816e3ec248f6938cf67c6d91e5e1
-#: ../../src/tutorial/custom_query.rst:57
-msgid "text Default ``oneway``"
-msgstr ""
-
-# a4dbcf322242431e86e21cf0dd2d0323
-#: ../../src/tutorial/custom_query.rst:58
-msgid "text Default ``true`` to indicate all rows (this is not a column)"
-msgstr ""
-
-# 0a9261da3a204fe8973f128ef6a960e6
-#: ../../src/tutorial/custom_query.rst:60
-msgid ""
-"The following parameters do not have a default value and when used they have"
-" to be inserted in strict order:"
-msgstr ""
-
-# 24f06f6b1d4e4d4ba7fb3d078899cbeb
-#: ../../src/tutorial/custom_query.rst:62
-msgid "text"
-msgstr ""
-
-# 25b4027b78f7437bb8ce6a6142881103
-# a08810d55bc040ce8de287b6455d6007
-# 9e98508be5844523a5de60001d5ca3ee
-# c5bc2ea08c5d4e188935bd817a23e363
-#: ../../src/tutorial/custom_query.rst:64
-#: ../../src/tutorial/custom_query.rst:65
-#: ../../src/tutorial/custom_query.rst:66
-#: ../../src/tutorial/custom_query.rst:67
-msgid "text[]"
-msgstr ""
-
-# 324f6836a74d4eb9a61de9ec13f4efd8
-#: ../../src/tutorial/custom_query.rst:69
-msgid ""
-"When the columns required have the default names this can be used (pgr_func "
-"is to represent a topology function)"
-msgstr ""
-
-# 250d7353f04c4625a0a939e34b72cbf8
-#: ../../src/tutorial/custom_query.rst:79
-msgid ""
-"When the columns required do not have the default names its strongly "
-"recomended to use the *named notation*."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po b/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po
deleted file mode 100644
index 03ca764..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-22 17:30+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# eabd47deb6034d1c95a09b9014e26c69
-#: ../../src/tutorial/custom_wrapper.rst:13
-msgid "Custom Wrapper"
-msgstr "Wrapper personnalisé"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/index.po b/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/index.po
deleted file mode 100644
index 3051e84..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/index.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:20+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 6a8f93140b244bb29541e366b9af91dd
-#: ../../src/tutorial/index.rst:13
-msgid "Tutorial"
-msgstr "Tutoriel"
-
-# a64c244637f4455cbded0e09c15fb8e1
-#: ../../src/tutorial/index.rst:16
-msgid ":ref:`Getting started <tutorial>`"
-msgstr ""
-
-# acf4544cb0394b96859312fe489b6b5f
-#: ../../src/tutorial/index.rst:18
-msgid "How to create a database to use for our project"
-msgstr "Comment créer une base de données pour notre projet"
-
-# 29bb03c78beb407cb3c7ef833144e908
-#: ../../src/tutorial/index.rst:19
-msgid "How to load some data"
-msgstr "Comment charger des données"
-
-# 6522624c4787423098652645beaca70b
-#: ../../src/tutorial/index.rst:20
-msgid "How to build a topology"
-msgstr "Comment construire une topologie"
-
-# 7e3a1701c1cb4f2399f80cab2f32fbfd
-#: ../../src/tutorial/index.rst:21
-msgid "How to check your graph for errors"
-msgstr "Comment vérifier les erreurs de votre graphe"
-
-# 7a4ac738b5a54446a3fb6a2a872ee973
-#: ../../src/tutorial/index.rst:22
-msgid "How to compute a route"
-msgstr "Comment calculer une route"
-
-# 267375c5b956437cab09d66694082436
-#: ../../src/tutorial/index.rst:23
-msgid "How to use other tools to view your graph and route"
-msgstr "Comment utiliser d'autres outils pour votre graphe et votre route"
-
-# 7eb6346c00174549a67aa3ba5b639061
-#: ../../src/tutorial/index.rst:24
-msgid "How to create a web app"
-msgstr "Comment créer une application web"
-
-# 9c88e3538b4443db8727c2ac29dfe064
-#: ../../src/tutorial/index.rst:26
-msgid "Advanced Topics"
-msgstr ""
-
-# 96bfb05f4c374de79f250704d4c8b3e7
-#: ../../src/tutorial/index.rst:28
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 5bb8a81892314636b035fe0d8e56b426
-#: ../../src/tutorial/index.rst:29
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-# 6cfe3bc3d8b942b188c87a00b5e92cb8
-#: ../../src/tutorial/index.rst:30
-msgid ":ref:`custom_query` that is used in the routing algorithms."
-msgstr ""
-
-# 2fc8eb635e614b249d37a76fb7d66f68
-#: ../../src/tutorial/index.rst:31
-msgid ":ref:`performance` to improve your performance."
-msgstr ""
-
-# 1cf3220a11c4411b85339e05e3546f22
-#: ../../src/tutorial/index.rst:32
-msgid ":ref:`custom_wrapper` to colaborate with a wrapper."
-msgstr ""
-
-# 025472df762342bb955f96e2572111ed
-#: ../../src/tutorial/index.rst:33
-msgid ":ref:`recipes` to colaborate with a recipe."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/performance.po b/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/performance.po
deleted file mode 100644
index 5a21002..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/performance.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 02750fc506e541eaa5e3a34280aabce6
-#: ../../src/tutorial/performance.rst:13
-msgid "Performance Tips"
-msgstr "Conseils pour la performance"
-
-# c6cdc3cc67d54b349406611e4f2fba51
-#: ../../src/tutorial/performance.rst:16
-msgid ""
-"When \"you know\" that you are going to remove a set of edges from the edges"
-" table, and without those edges you are going to use a routing function you "
-"can do the following:"
-msgstr ""
-
-# 09daa462ecb3460fb93b4a3a05fccb4f
-#: ../../src/tutorial/performance.rst:18
-msgid "Analize the new topology based on the actual topology:"
-msgstr ""
-
-# 6481ccc4d94a4513893f4b1ec5fd615f
-#: ../../src/tutorial/performance.rst:24
-msgid "Or create a new topology if the change is permanent:"
-msgstr ""
-
-# f83a8c75a53848f4b2b2ce62be14b3b1
-#: ../../src/tutorial/performance.rst:31
-msgid "Use an SQL that \"removes\" the edges in the routing function"
-msgstr ""
-
-# d598fe2adbc346ce8aa4ea167d2cc77d
-#: ../../src/tutorial/performance.rst:37
-msgid ""
-"When \"you know\" that the route will not go out of a particular area, to "
-"speed up the process you can use a more complex SQL query like"
-msgstr ""
-
-# c7e739bf9e1e42cfaedf49458bedb00c
-#: ../../src/tutorial/performance.rst:46
-msgid "Note that the same condition ``id < 17`` is used in all cases."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/recipes.po b/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/recipes.po
deleted file mode 100644
index 1c7a1e9..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/recipes.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-22 17:30+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 227045a7e0474d4998d6a6d10503851b
-#: ../../src/tutorial/recipes.rst:13
-msgid "Useful Recipes"
-msgstr "Recettes utiles"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/topology.po b/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/topology.po
deleted file mode 100644
index 8ee2190..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/topology.po
+++ /dev/null
@@ -1,124 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 95ba56beb837464cac49ef7880693c4c
-#: ../../src/tutorial/topology.rst:13
-msgid "Routing Topology"
-msgstr "Topologie de routage"
-
-# a13e17875be047edb65c4dff0e77e3a3
-#: ../../src/tutorial/topology.rst:15
-msgid "Stephen Woodbridge <woodbri at swoodbridge.com>"
-msgstr "Stephen Woodbridge <woodbri at swoodbridge.com>"
-
-# fae10235d477445e8c8ad3b8ddf138c5
-#: ../../src/tutorial/topology.rst:16
-msgid ""
-"Stephen Woodbridge. The source code is released under the MIT-X license."
-msgstr "Stephen Woodbridge. The code source est distribué sous la licence MIT-X."
-
-# bb8d84bed17047048664ea7fe078eb94
-#: ../../src/tutorial/topology.rst:20
-msgid "Overview"
-msgstr "Présentation"
-
-# 2a882bec3de94c1eb574a3eb222c98e4
-#: ../../src/tutorial/topology.rst:22
-msgid ""
-"Typically when GIS files are loaded into the data database for use with "
-"pgRouting they do not have topology information associated with them. To "
-"create a useful topology the data needs to be \"noded\". This means that "
-"where two or more roads form an intersection there it needs to be a node at "
-"the intersection and all the road segments need to be broken at the "
-"intersection, assuming that you can navigate from any of these segments to "
-"any other segment via that intersection."
-msgstr ""
-
-# 65c5e66127ab486492799e66af98970c
-#: ../../src/tutorial/topology.rst:24
-msgid ""
-"You can use the :ref:`graph analysis functions <analytics>` to help you see "
-"where you might have topology problems in your data. If you need to node "
-"your data, we also have a function :ref:`pgr_nodeNetwork() "
-"<pgr_node_network>` that might work for you. This function splits ALL "
-"crossing segments and nodes them. There are some cases where this might NOT "
-"be the right thing to do."
-msgstr "Vous pouvez utiliser les :ref:`graph analysis functions <analytics>` pour vous aider à voir où vous pourrie avoir des problèmes de topologie dans vos données. Si vous avez besoin de nouer vos données, nous avons aussi une fonction :ref:`pgr_nodeNetwork() <pgr_node_network>` qui pourrait fonctionner pour vous. La fonction sépare TOUS les segments et les noue. Il y a certaines cas où cela pourrait ne pas être la bonne chose à faire."
-
-# efc1fb5385064e7da087f3b0371faf57
-#: ../../src/tutorial/topology.rst:26
-msgid ""
-"For example, when you have an overpass and underpass intersection, you do "
-"not want these noded, but pgr_nodeNetwork does not know that is the case and"
-" will node them which is not good because then the router will be able to "
-"turn off the overpass onto the underpass like it was a flat 2D intersection."
-" To deal with this problem some data sets use z-levels at these types of "
-"intersections and other data might not node these intersection which would "
-"be ok."
-msgstr "Par exemple, quand vous avez une intersection entre une route supérieure et inférieure, vous ne voulez pas qu'elle soit nouée, mais pgr_nodeNetwork ne sait pas que c'est le cas et va les nouer avec eux ce qui n'est pas bien parce qu'ensuite le conducteur sera capable d'éteindre la route supérieure sur la route inférieure comme cela était une intersection plate 2D. Pour faire face à ce problème certains jeux de données à ces types utilisent les z-levels à ces types d'intersections [...]
-
-# 43c22da1f7b34db7999adbad7ac7a4e1
-#: ../../src/tutorial/topology.rst:28
-msgid ""
-"For those cases where topology needs to be added the following functions may"
-" be useful. One way to prep the data for pgRouting is to add the following "
-"columns to your table and then populate them as appropriate. This example "
-"makes a lot of assumption like that you original data tables already has "
-"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
-"that they contain specific data values. This is only to give you an idea of "
-"what you can do with your data."
-msgstr "Pour ces cas où la topologie a besoin d'être ajoutée les fonctions suivantes peuvent être utiles. Une façon de préparer les données pour pgRouting est d'ajouter les colonnes suivantes à votre table et ensuite les remplir comme approprié. Cet exemple fait un tas d'hypothèses comme que vos tables de données originales ont certaines colonnes comme ``one_way``, ``fcc``, et possiblement autres et qu'ils contiennent des valeurs de données spécifiques. Ceci est seulement pour vous donne [...]
-
-# 30e52836594b46f1917dd9ffaa55fc0c
-#: ../../src/tutorial/topology.rst:49
-msgid ""
-"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
-"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
-"columns. The following example populated the remaining columns. In this "
-"example, the ``fcc`` column contains feature class code and the ``CASE`` "
-"statements converts it to an average speed."
-msgstr "La fonction :ref:`pgr_createTopology() <pgr_create_topology>` va créer la table ``vertices_tmp`` et remplir la ``source`` et les colonnes ``target``. L'exemple suivant remplit les colonnes suivantes. Dans cet exemple, la colonne ``fcc`` contient le code de la classe fonctionnalité et les instructions ``CASE`` le convertissent en une vitesse moyenne."
-
-# 6aa2b52ff1ac4c16a315c9ddfdf90b57
-#: ../../src/tutorial/topology.rst:112
-msgid ""
-"Now your database should be ready to use any (most?) of the pgRouting "
-"algorithms."
-msgstr "Maintenant votre base de données devrait être prête pour utiliser n'importe (la plupart ?) des algorithmes de pgRouting."
-
-# 6cc3d005cb454b77959bfbdc6fdd2105
-#: ../../src/tutorial/topology.rst:116
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 40847af777814998afe63d824d73c507
-#: ../../src/tutorial/topology.rst:118
-msgid ":ref:`pgr_create_topology`"
-msgstr ":ref:`pgr_create_topology`"
-
-# 974b427fbcf64ec8ab76456dcd37bd7d
-#: ../../src/tutorial/topology.rst:119
-msgid ":ref:`pgr_node_network`"
-msgstr ":ref:`pgr_node_network`"
-
-# adedad6329b0494988daee57bcf0cb98
-#: ../../src/tutorial/topology.rst:120
-msgid ":ref:`pgr_point_to_id`"
-msgstr ":ref:`pgr_point_to_id`"
diff --git a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/tutorial.po b/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/tutorial.po
deleted file mode 100644
index f81d1b4..0000000
--- a/doc/i18n/fr/LC_MESSAGES/doc/src/tutorial/tutorial.po
+++ /dev/null
@@ -1,207 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-23 20:30+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# cc286a8aa26b414ba5c056e7e967f754
-#: ../../src/tutorial/tutorial.rst:13
-msgid "Getting Started"
-msgstr "Prise en main"
-
-# 203987e9bc9545e386abb61978fa7973
-#: ../../src/tutorial/tutorial.rst:15
-msgid ""
-"This is a simple guide to walk you through the steps of getting started with"
-" pgRouting. In this guide we will cover:"
-msgstr "Ceci est un guide simplifié pour vous guider pas à pas à démarrer avec pgRouting. Dans ce guide nous détaillerons :"
-
-# cf084ff2892b4ce09042343d046fd022
-# 09f0c2436ee0452ca34f4ea785294ca0
-#: ../../src/tutorial/tutorial.rst:18 ../../src/tutorial/tutorial.rst:27
-msgid "How to create a database to use for our project"
-msgstr "Comment créer une base de données pour notre projet"
-
-# c3031c03516e400eb51fd389eab9d370
-# 8e16b537fced4fd98de6654b3d25882d
-#: ../../src/tutorial/tutorial.rst:19 ../../src/tutorial/tutorial.rst:61
-msgid "How to load some data"
-msgstr "Comment charger des données"
-
-# 28162361c9ef451a8269bdc8c569c9c5
-# be1e900598c64c579d8a2306852c3c77
-#: ../../src/tutorial/tutorial.rst:20 ../../src/tutorial/tutorial.rst:77
-msgid "How to build a topology"
-msgstr "Comment construire une topologie"
-
-# 422d77e9576145f6b3e41ee3e9d8019c
-# e02a5f0e2c4c4c108a97d142e7719614
-#: ../../src/tutorial/tutorial.rst:21 ../../src/tutorial/tutorial.rst:93
-msgid "How to check your graph for errors"
-msgstr "Comment vérifier les erreurs de votre graphe"
-
-# 48af8de98aa440599ef7c5e08a987c73
-# 00b0784fc2ba469ca4d4987d90a07e2a
-#: ../../src/tutorial/tutorial.rst:22 ../../src/tutorial/tutorial.rst:121
-msgid "How to compute a route"
-msgstr "Comment calculer une route"
-
-# a6c42f436e6240b0bd853d2459a82af5
-# 8f60e469188446368b6e9dd27fa4362c
-#: ../../src/tutorial/tutorial.rst:23 ../../src/tutorial/tutorial.rst:142
-msgid "How to use other tools to view your graph and route"
-msgstr "Comment utiliser d'autres outils pour votre graphe et votre route"
-
-# e8d64e7e71f94995b63b80ec6c489433
-# 20eafe14706e4660b2f9886ce1f6b357
-#: ../../src/tutorial/tutorial.rst:24 ../../src/tutorial/tutorial.rst:147
-msgid "How to create a web app"
-msgstr "Comment créer une application web"
-
-# b1db71933e1241eeae8298bba077f388
-#: ../../src/tutorial/tutorial.rst:29
-msgid ""
-"The first thing we need to do is create a database and load pgrouting in the"
-" database. Typically you will create a database for each project. Once you "
-"have a database to work in, your can load your data and build your "
-"application in that database. This makes it easy to move your project later "
-"if you want to to say a production server."
-msgstr "La première chose que nous avons besoin de faire est de créer une base de données et charger pgrouting dans la base de données. Typiquement vous allez créer une base de données pour chaque projet. Une fois que vous avez une base de données sur laquelle travailler, vous pouvez charger vos données et construire votre application à partir de cette base de données. Cela facilite les choses si vous voulez plus tard migrer le projet sur un serveur de production."
-
-# e9ea8391635c4aeea6230a1dc512ca40
-#: ../../src/tutorial/tutorial.rst:35
-msgid "For Postgresql 9.1 and later versions"
-msgstr "Pour Postgresql 9.1 et les versions ultérieures"
-
-# b5416a83185a4b968116495c15a2dbb9
-#: ../../src/tutorial/tutorial.rst:44
-msgid "For older versions of postgresql"
-msgstr "Pour les versions précédentes de postgresql"
-
-# 4d3bdf2c0daf49e19b0cc8ec9a54ce6d
-#: ../../src/tutorial/tutorial.rst:63
-msgid ""
-"How you load your data will depend in what form it comes it. There are "
-"various OpenSource tools that can help you, like:"
-msgstr "La façon dont vous chargez vos données dépend du format des données. Il existe des outils OpenSource variés qui peuvent vous aider, comme :"
-
-# 443c825aa19945f694b869caa419068a
-#: ../../src/tutorial/tutorial.rst:66
-msgid "this is the postgresql shapefile loader"
-msgstr "c'est le chargeur de fichier au format postgresql"
-
-# 4d91dcd01dac46f59ceb42aeeac5dc8d
-#: ../../src/tutorial/tutorial.rst:67
-msgid "this is a vector data conversion utility"
-msgstr "c'est un utilitaire de conversion de données vectorielles"
-
-# 99f1dae37c3742db82e18bf14675f806
-#: ../../src/tutorial/tutorial.rst:68
-msgid "this is a tool for loading OSM data into postgresql"
-msgstr "c'est un outil de chargement des données OSM dans postgresql"
-
-# 0fc4acb74524472e89a9867f716c6941
-#: ../../src/tutorial/tutorial.rst:70
-msgid ""
-"So these tools and probably others will allow you to read vector data and "
-"and can load that data into your database as a table of some kind. At this "
-"point you need to know a little about your data structure and content. One "
-"easy way to browse you data table is with pgAdmin3 or phpPgAdmin."
-msgstr "Ces outils et probablement d'autres vont donc vous permettre de lire des données vectorielles et peuvent charger ces données dans votre base de données comme une table d'un certain type. A ce point vous avez besoin de connaître un peu votre structure de données et son contenu. Un moyen facile d'explorer vos tables de données est d'utiliser pgAdmin3 ou phpPgAdmin."
-
-# 3eb60b0320c94c54b413905edad6aeda
-#: ../../src/tutorial/tutorial.rst:79
-msgid ""
-"Next we need to build a topology for our street data. What this means is "
-"that for any given edge in your street data the ends of that edge will be "
-"connected to a unique node and to other edges that are also connected to "
-"that same unique node. Once all the edges are connected to nodes we have a "
-"graph that can be used for routing with pgrouting. We provide a tools the "
-"will help with this:"
-msgstr "Ensuite nous avons besoin de construire une topologie de nos données routières. Cela signifie que pour toute arête dans vos données routieres, les terminaisons de cette arête vont être connectées en un unique noeud et aux autres arêtes qui sont aussi connectées à ce meme noeud. Une fois que les arêtes sont connectées aux noeuds nous avons un graphe qui peut etre utilisé pour le routage avec pgrouting. Nous proposons un outil qui aide pour cela :"
-
-# 69e88d4dcd4b4de68a07f7e1bbe05c2f
-#: ../../src/tutorial/tutorial.rst:89
-msgid "See :ref:`pgr_create_topology` for more information."
-msgstr "Voir :ref:`pgr_create_topology` pour plus d'informations."
-
-# a1b054cc1a1a4d12a2a11405bbdec85b
-#: ../../src/tutorial/tutorial.rst:95
-msgid ""
-"There are lots of possible sources for errors in a graph. The data that you "
-"started with may not have been designed with routing in mind. A graph as "
-"some very specific requirments. One it that it is *NODED*, this means that "
-"except for some very specific use cases, each road segments starts and ends "
-"at a node and that in general is does not cross another road segment that it"
-" should be connected to."
-msgstr "Il y a beaucoup de sources d’erreurs possibles dans un graphe. Les données avec lesquelles vous avez commencé peuvent ne pas avoir été conçues avec l’idée de routage. Un graphe a des conditions très spécifiques. L’une est qu’il est *NODED*, cela signifie que mis à part des cas d’utilisation très spécifiques, chaque segment de route commence et finit comme un nœud et en général ne croise pas d’autre segment de route avec lequel il devrait être connecté."
-
-# 6c5337ea36644d71841a60e4a9bb5ba5
-#: ../../src/tutorial/tutorial.rst:102
-msgid ""
-"There can be other errors like the direction of a one-way street being "
-"entered in the wrong direction. We do not have tools to search for all "
-"possible errors but we have some basic tools that might help."
-msgstr "Il peut y avoir d'autres erreurs comme la direction d'une route à sens unique étant entrée dans la mauvaise direction. Nous n'avons pas les outils pour chercher toutes les erreurs possibles mais nous avons les outils qui peuvent aider."
-
-# 3fece9ebff854721b5715cc977ce6d6e
-#: ../../src/tutorial/tutorial.rst:113
-msgid "See :ref:`analytics` for more information."
-msgstr "Voir :ref:`analytics` pour plus d'informations."
-
-# 7a98ae8da3ae48e1a7c5d54e44a48c26
-#: ../../src/tutorial/tutorial.rst:115
-msgid ""
-"If your data needs to be *NODED*, we have a tool that can help for that "
-"also."
-msgstr "Si vos données ont besoin d'être *NODED*, nous avons un outil qui peut aider pour cela aussi."
-
-# 08121e9261964dd58ac553d088c2ed4d
-#: ../../src/tutorial/tutorial.rst:117
-msgid "See :ref:`pgr_node_network` for more information."
-msgstr "Voir :ref:`pgr_node_network` pour plus d'informations."
-
-# 719d8eadd02e428f9c88ee09711fd78e
-#: ../../src/tutorial/tutorial.rst:123
-msgid ""
-"Once you have all the prep work done above, computing a route is fairly "
-"easy. We have a lot of different algorithms but they can work with your "
-"prepared road network. The general form of a route query is:"
-msgstr "Une fois que vous avez tout le travail préparatoire de-dessus fini, calculer une route est assez facile. Nous avons beaucoup d'algorithmes différents mais ils peuvent fonctionner avec votre réseau de routes préparé. La forme générale d'une route est : "
-
-# 9b06e28539b841019a313bfef4d6706a
-#: ../../src/tutorial/tutorial.rst:131
-msgid ""
-"As you can see this is fairly straight forward and you can look and the "
-"specific algorithms for the details on how to use them. What you get as a "
-"result from these queries will be a set of record of type "
-":ref:`type_cost_result` or :ref:`type_geom_result`. These results have "
-"information like edge id and/or the node id along with the cost or geometry "
-"for the step in the path from *start* to *end*. Using the ids you can join "
-"these result back to your edge table to get more information about each step"
-" in the path."
-msgstr ""
-
-# d3652f3967364e05a51d770bf6c22ed7
-#: ../../src/tutorial/tutorial.rst:139
-msgid "See also :ref:`type_cost_result` and :ref:`type_geom_result`."
-msgstr "Voir aussi :ref:`type_cost_result` et :ref:`type_geom_result`."
-
-# ebd4b3f1e2e64e668cbd59b14d10059c
-# 631194a2c36c43fa84fca3ad63545a1c
-#: ../../src/tutorial/tutorial.rst:144 ../../src/tutorial/tutorial.rst:149
-msgid "TBD"
-msgstr "À déterminer"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/apsp_johnson/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/apsp_johnson/doc/index.po
deleted file mode 100644
index f3f7535..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/apsp_johnson/doc/index.po
+++ /dev/null
@@ -1,141 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-25 19:11+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# c9937b945f654be08e4180e57b2723de
-#: ../../../src/apsp_johnson/doc/index.rst:13
-msgid "pgr_apspJohnson - All Pairs Shortest Path, Johnson's Algorithm"
-msgstr "pgr_apspJohnson - Plus court chemin toutes paires, algorithme de Johnson"
-
-# 79936f3a71384a8a9148a3886df7a858
-#: ../../../src/apsp_johnson/doc/index.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 3145d47e956649628986400ffdab56a5
-#: ../../../src/apsp_johnson/doc/index.rst:22
-msgid ""
-"``pgr_apspJohnson`` - Returns all costs for each pair of nodes in the graph."
-msgstr "``pgr_apspJohnson`` - Retourne tous les coûts pour chaque paire de noeuds dans le graphe."
-
-# 24009fd27614418c9dee8d1d27eca209
-#: ../../../src/apsp_johnson/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 6aa48442c73548e58b708ec465f0993a
-#: ../../../src/apsp_johnson/doc/index.rst:28
-msgid ""
-"Johnson's algorithm is a way to find the shortest paths between all pairs of"
-" vertices in a sparse, edge weighted, directed graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows for "
-"every pair of nodes in the graph."
-msgstr "L'algorithme de Johnson est un moyen de trouver les plus courts chemins entre toutes les paires de sommets dans un graphe épars, pondéré arête, dirigé. Retourne un ensemble de lignes :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) pour chaque paire de nœuds dans le graphe."
-
-# afa92fc38dee48288d509f6006247df1
-#: ../../../src/apsp_johnson/doc/index.rst:36
-msgid "Description"
-msgstr "Description"
-
-# 1256fc43f6ad440689b650619604651c
-#: ../../../src/apsp_johnson/doc/index.rst:38
-msgid ""
-"a SQL query that should return the edges for the graph that will be "
-"analyzed:"
-msgstr "une requête SQL qui maintient les arêtes pour le graphe qui sera analysé :"
-
-# 3f908a1bbdd04eaa9bf33225e67da2c7
-#: ../../../src/apsp_johnson/doc/index.rst:44
-msgid "``int4`` identifier of the source vertex for this edge"
-msgstr "``int4`` identifiant du sommet source pour cette arête"
-
-# 993049755c48440a9bc398ea9a13fe95
-#: ../../../src/apsp_johnson/doc/index.rst:45
-msgid "``int4`` identifier of the target vertex for this edge"
-msgstr "``int4`` identifiant du sommet cible pour cette arête"
-
-# 28aa6b13c7d54bbdb49c76098a8e4d8e
-#: ../../../src/apsp_johnson/doc/index.rst:46
-msgid "``float8`` a positive value for the cost to traverse this edge"
-msgstr "``float8`` une valeur positive pour le coût pour traverser cette arête"
-
-# 7514070dfcd1415e8414754509baee32
-#: ../../../src/apsp_johnson/doc/index.rst:48
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Retourne un ensemble de :ref:`type_cost_result`:"
-
-# 25408ce6cf3d45bebebd52768b102fc0
-#: ../../../src/apsp_johnson/doc/index.rst:50
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# e4b9d28e22be4a78a2edc7edbf4f1af3
-#: ../../../src/apsp_johnson/doc/index.rst:51
-msgid "source node ID"
-msgstr "ID noeud source"
-
-# f4ef2869f447410dbdb75bf3856bfa93
-#: ../../../src/apsp_johnson/doc/index.rst:52
-msgid "target node ID"
-msgstr "ID nœud cible"
-
-# 74d7b05838ba4c978e0c33f94ab0868f
-#: ../../../src/apsp_johnson/doc/index.rst:53
-msgid "cost to traverse from ``id1`` to ``id2``"
-msgstr "coût pour traverser de ``id1`` en utilisant ``id2``"
-
-# 1767087139fa47218a9eef54ebf0b0f1
-#: ../../../src/apsp_johnson/doc/index.rst:56
-msgid "History"
-msgstr "Histoire"
-
-# 5bc1dae5c7f041298849cae876983c32
-#: ../../../src/apsp_johnson/doc/index.rst:57
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# b679c9ef11b544a6a6502b461b4e3d96
-#: ../../../src/apsp_johnson/doc/index.rst:61
-msgid "Examples"
-msgstr "Exemples"
-
-# 5d6ef1673c204a229ed05dae0c96d0f8
-#: ../../../src/apsp_johnson/doc/index.rst:78
-msgid "The query uses the :ref:`sampledata` network."
-msgstr "La requête utilise le réseau :ref:`sampledata`."
-
-# 8ba7f2721fe74966b8dfd4620ae10b9a
-#: ../../../src/apsp_johnson/doc/index.rst:82
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 475eb50687e74051895523e791434bc1
-#: ../../../src/apsp_johnson/doc/index.rst:84
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 75e0dd6fa0ed4621acf49893e637237c
-#: ../../../src/apsp_johnson/doc/index.rst:85
-msgid ":ref:`pgr_apsp_warshall`"
-msgstr ":ref:`pgr_apsp_warshall`"
-
-# 0e63d6ba27244302bfd848164331ea09
-#: ../../../src/apsp_johnson/doc/index.rst:86
-msgid "http://en.wikipedia.org/wiki/Johnson%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Johnson%27s_algorithm"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/apsp_warshall/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/apsp_warshall/doc/index.po
deleted file mode 100644
index 287c669..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/apsp_warshall/doc/index.po
+++ /dev/null
@@ -1,161 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:15+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 0f1284ff13c64db68306d3e8f9c97beb
-#: ../../../src/apsp_warshall/doc/index.rst:13
-msgid "pgr_apspWarshall - All Pairs Shortest Path, Floyd-Warshall Algorithm"
-msgstr "pgr_apspWarshall - Plus court chemin toutes paires, Algorithme Floyd-Warshall "
-
-# 42b576974e9a458e951dd429ba4ac9f7
-#: ../../../src/apsp_warshall/doc/index.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 8610cfce602b4e43867a979e40348da5
-#: ../../../src/apsp_warshall/doc/index.rst:22
-msgid ""
-"``pgr_apspWarshall`` - Returns all costs for each pair of nodes in the "
-"graph."
-msgstr "``pgr_apspWarshall`` - Retourne tous les coûts pour chaque paire de noeuds dans le graphe."
-
-# 4c8c0af0a22f4783b5f40d7d68b431da
-#: ../../../src/apsp_warshall/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 001f0668ce734f4b9419fd7b22d98b00
-#: ../../../src/apsp_warshall/doc/index.rst:28
-msgid ""
-"The Floyd-Warshall algorithm (also known as Floyd's algorithm and other "
-"names) is a graph analysis algorithm for finding the shortest paths between "
-"all pairs of nodes in a weighted graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows for "
-"every pair of nodes in the graph."
-msgstr ""
-
-# e7c4a6dd259d46cd9fcf2631dbc22f2e
-#: ../../../src/apsp_warshall/doc/index.rst:36
-msgid "Description"
-msgstr "Description"
-
-# e0f6896524cc4a4d91c418144da5102b
-#: ../../../src/apsp_warshall/doc/index.rst:38
-msgid ""
-"a SQL query that should return the edges for the graph that will be "
-"analyzed:"
-msgstr "une requête SQL qui maintient les arêtes pour le graphe qui sera analysé :"
-
-# 97a32a6ff6e14816834d1eb5e229f2b4
-#: ../../../src/apsp_warshall/doc/index.rst:44
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identifiant de l'arête"
-
-# b42ae19f11c44f618c034ae1ce6be00a
-#: ../../../src/apsp_warshall/doc/index.rst:45
-msgid "``int4`` identifier of the source vertex for this edge"
-msgstr "``int4`` identifiant du sommet source pour cette arête"
-
-# c0b57bb608d34affbce8c6bb5ec9302f
-#: ../../../src/apsp_warshall/doc/index.rst:46
-msgid "``int4`` identifier of the target vertex for this edge"
-msgstr "``int4`` identifiant du sommet cible pour cette arête"
-
-# c5cb344693474da29d9a8ff57e96c0f7
-#: ../../../src/apsp_warshall/doc/index.rst:47
-msgid "``float8`` a positive value for the cost to traverse this edge"
-msgstr "``float8`` une valeur positive pour le coût pour traverser cette arête"
-
-# 5dd37dfc4bff497d85337655170aa2fe
-#: ../../../src/apsp_warshall/doc/index.rst:49
-msgid "``true`` if the graph is directed"
-msgstr "``true`` si le graphe est dirigé"
-
-# 6996d55bc55245d39ea7b7fadce791a7
-#: ../../../src/apsp_warshall/doc/index.rst:50
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "si ``true``, la colonne ``reverse_cost`` du SQL générant l'ensemble des lignes va être utilisé pour le coût de la traversée de l'arête dans la direction opposée."
-
-# a26f91fad97b4c1fb810f9cbe42a7c55
-#: ../../../src/apsp_warshall/doc/index.rst:52
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Retourne un ensemble de :ref:`type_cost_result`:"
-
-# d67cd203b9424e1faa0416ab268956c5
-#: ../../../src/apsp_warshall/doc/index.rst:54
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# 13448c2239764d798d56189875475d19
-#: ../../../src/apsp_warshall/doc/index.rst:55
-msgid "source node ID"
-msgstr "ID noeud source"
-
-# 754d094ac6ae42d5a22b8855ce7a73e7
-#: ../../../src/apsp_warshall/doc/index.rst:56
-msgid "target node ID"
-msgstr "ID nœud cible"
-
-# c9edf1f99746459c9ef79922766fc805
-#: ../../../src/apsp_warshall/doc/index.rst:57
-msgid "cost to traverse from ``id1`` to ``id2``"
-msgstr "coût pour traverser de ``id1`` en utilisant ``id2``"
-
-# e878f40e61334a669136534d82f3bc05
-#: ../../../src/apsp_warshall/doc/index.rst:61
-msgid "History"
-msgstr "Histoire"
-
-# b506bf29ad7944d7bd0db6d48ffe9f4f
-#: ../../../src/apsp_warshall/doc/index.rst:62
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 5c0117f6a40740aa8b02bc181e0e01dc
-#: ../../../src/apsp_warshall/doc/index.rst:66
-msgid "Examples"
-msgstr "Exemples"
-
-# 38918d939ef74f6e86528d1060dc810c
-#: ../../../src/apsp_warshall/doc/index.rst:84
-msgid "The query uses the :ref:`sampledata` network."
-msgstr "La requête utilise le réseau :ref:`sampledata`."
-
-# 4feffc0c2a824f81bb35b10c6f13176d
-#: ../../../src/apsp_warshall/doc/index.rst:88
-msgid "See Also"
-msgstr "Voir aussi"
-
-# aa6ecd6c9d584db1adf49b7df81583e9
-#: ../../../src/apsp_warshall/doc/index.rst:90
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 0f05cbf530e0455daed36d6b50bbf30f
-#: ../../../src/apsp_warshall/doc/index.rst:91
-msgid ":ref:`pgr_apsp_johnson`"
-msgstr ":ref:`pgr_apsp_johnson`"
-
-# b09888d0778445eb93cbdfb7075b4157
-#: ../../../src/apsp_warshall/doc/index.rst:92
-msgid "http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/astar/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/astar/doc/index.po
deleted file mode 100644
index a48a8a8..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/astar/doc/index.po
+++ /dev/null
@@ -1,203 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-25 07:18+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# b270045aa6e74d789897bb176f5c4a37
-#: ../../../src/astar/doc/index.rst:13
-msgid "pgr_astar - Shortest Path A*"
-msgstr "pgr_astar - Plus court chemin A*"
-
-# a4d6dd313b3f44bdbbecdf59c8e4e866
-#: ../../../src/astar/doc/index.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 0c4c2fff9ea445dcbb1dfdca8374cd09
-#: ../../../src/astar/doc/index.rst:22
-msgid "``pgr_astar`` — Returns the shortest path using A* algorithm."
-msgstr "``pgr_astar`` — Retourne le plus court chemin en utilisant l'algorithme A*."
-
-# d3e3e83acd754acb9ac4c583d6dd0649
-#: ../../../src/astar/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 87ae068cf08b4ddca7f5bb3722ce57f2
-#: ../../../src/astar/doc/index.rst:28
-msgid ""
-"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
-"with a heuristic that allow it to solve most shortest path problems by "
-"evaluation only a sub-set of the overall graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
-"make up a path."
-msgstr "L'algorithme A* (prononcé \"A Etoile\") est basé sur l'algorithme de Dijkstra avec une heuristique qui autorise de résoudre la plupart des problèmes de plus court chemin par l'évaluation de seulement d'un sous-ensemble du graphe général. Retourne un ensemble de lignes :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost), qui fabriquent un chemin."
-
-# cd2802c13d3d4798934f9f60cc9ebfb9
-#: ../../../src/astar/doc/index.rst:37
-msgid "Description"
-msgstr "Description"
-
-# 64ca501e984b45df9055511188eb65f4
-#: ../../../src/astar/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# 739adee835f647ff94511acc6e126ee5
-#: ../../../src/astar/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identifiant de l'arête"
-
-# 72186cf53aee4035bdbcc0495fb6bf42
-#: ../../../src/astar/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` identifiant du sommet source"
-
-# 0857159bb2c949bb892388c25f6fb4ec
-#: ../../../src/astar/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` identifiant du sommet cible"
-
-# 4ddccc85290d4aba9b82668e90b2ba31
-#: ../../../src/astar/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valeur, du coût de l'arête traversée. Un coût négatif va prévenir l'arête d'être insérée dans le graphe."
-
-# d21510a5452e4a098e36f5ae7f7585b4
-#: ../../../src/astar/doc/index.rst:50
-msgid "``x`` coordinate of the start point of the edge"
-msgstr "``x`` coordonnée du point de départ de l'arête"
-
-# 78d6feeb1c174e96ad209b97fb1cd538
-#: ../../../src/astar/doc/index.rst:51
-msgid "``y`` coordinate of the start point of the edge"
-msgstr "``y`` coordonnée du point de départ de l'arête"
-
-# b7404cbf8c86414494f72f87b3702241
-#: ../../../src/astar/doc/index.rst:52
-msgid "``x`` coordinate of the end point of the edge"
-msgstr "``x`` coordonnée du point final de l'arête"
-
-# d0f8d9e10994475dac4ad4e8ea1315f7
-#: ../../../src/astar/doc/index.rst:53
-msgid "``y`` coordinate of the end point of the edge"
-msgstr "``y`` coordonnée du point final de l'arête"
-
-# 46b33f8b295043059fce210e43698191
-#: ../../../src/astar/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(optionnel) le coût pour la traversée inverse de l'arête. Ceci est seulement utilisé quand les paramètres ``directed`` et ``has_rcost`` sont ``true`` (voir la remarque ci-dessus sur les coûts négatifs)."
-
-# bfd63fe9d374441babb8662a0874482b
-#: ../../../src/astar/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4`` id du point de départ"
-
-# 85d35dcc4ced4efaac8d7b50f4ff9357
-#: ../../../src/astar/doc/index.rst:57
-msgid "``int4`` id of the end point"
-msgstr "``int4`` id du point final"
-
-# f93b4ce091a6440d9a656b374fce6636
-#: ../../../src/astar/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "``true`` si le graphe est dirigé"
-
-# 1a783bf8f88146999659f222ef236d1b
-#: ../../../src/astar/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "si ``true``, la colonne ``reverse_cost`` du SQL générant l'ensemble des lignes va être utilisé pour le coût de la traversée de l'arête dans la direction opposée."
-
-# c0f6cf1f1daf40bc8d08fa3b85c3af6b
-#: ../../../src/astar/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Retourne un ensemble de :ref:`type_cost_result`:"
-
-# 22b5e075f6e94c608af67a4c040f4e70
-#: ../../../src/astar/doc/index.rst:63
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# 1f3ccd737354442fb4d87684690988a2
-#: ../../../src/astar/doc/index.rst:64
-msgid "node ID"
-msgstr "ID noeud"
-
-# 8a4fe9f16a934ffa842ea049c36728bf
-#: ../../../src/astar/doc/index.rst:65
-msgid "edge ID (``-1`` for the last row)"
-msgstr "ID arête (``-1`` pour la dernière ligne)"
-
-# 7cff3509785e40adb8ff4ce4f4bf0774
-#: ../../../src/astar/doc/index.rst:66
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "coût pour traverser à partir de ``id1`` en utilisant ``id2``"
-
-# 9cc8b235e4214d4c87b729d24031271e
-#: ../../../src/astar/doc/index.rst:70
-msgid "History"
-msgstr "Histoire"
-
-# 623c2a84d062407d93855875a467dbe1
-#: ../../../src/astar/doc/index.rst:71
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# 7f75da722e6e4680a8d9e0a3d69678b9
-#: ../../../src/astar/doc/index.rst:75
-msgid "Examples"
-msgstr "Exemples"
-
-# 533a7e7ccd3645c4a6e6d3e90875cccf
-#: ../../../src/astar/doc/index.rst:77
-msgid "Without ``reverse_cost``"
-msgstr "Sans ``reverse_cost``"
-
-# 0cf32ba2b9dd435191e182fa2e1219a3
-#: ../../../src/astar/doc/index.rst:99
-msgid "With ``reverse_cost``"
-msgstr "Avec ``reverse_cost``"
-
-# 266a522386364908870781287ffe7c77
-#: ../../../src/astar/doc/index.rst:117
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 3f0ab007b6c24393bda58a4c8f051a6b
-#: ../../../src/astar/doc/index.rst:121
-msgid "See Also"
-msgstr "Voir aussi"
-
-# c407743821a8437fa59503cbee2e31b7
-#: ../../../src/astar/doc/index.rst:123
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 994c0952621c47349ec4e5b209ee1129
-#: ../../../src/astar/doc/index.rst:124
-msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
-msgstr "http://en.wikipedia.org/wiki/A*_search_algorithm"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/bd_astar/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/bd_astar/doc/index.po
deleted file mode 100644
index 658a36a..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/bd_astar/doc/index.po
+++ /dev/null
@@ -1,222 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-25 07:22+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# d85c70ae393d476284068bf297195cc7
-#: ../../../src/bd_astar/doc/index.rst:13
-msgid "pgr_bdAstar - Bi-directional A* Shortest Path"
-msgstr "pgr_bdAstar - plus court chemin bidirectionnel A*"
-
-# 59f0d447a4034729bbdc2dad7b88dcce
-#: ../../../src/bd_astar/doc/index.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# ff5b6b1bd362408c80bec7cfbc7108bf
-#: ../../../src/bd_astar/doc/index.rst:22
-msgid ""
-"``pgr_bdAstar`` - Returns the shortest path using Bidirectional A* "
-"algorithm."
-msgstr "``pgr_bdAstar`` - Retourne le plus court chemin en utilisant l'algorithme bidirectionnel A*."
-
-# 6e2dd97777d64f02afc4b396822f7c37
-#: ../../../src/bd_astar/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# d88a86d95c0447db93be2a1f185b91bd
-#: ../../../src/bd_astar/doc/index.rst:28
-msgid ""
-"This is a bi-directional A* search algorithm. It searchs from the source "
-"toward the distination and at the same time from the destination to the "
-"source and terminates whe these to searchs meet in the middle. Returns a set"
-" of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, "
-"that make up a path."
-msgstr "Ceci est un algorithme de recherche bidirectionnel A*. Il recherche d'une source vers une destination et en même temps depuis la destination vers la source et se finit quand ces deux recherches se rencontrent au milieur. Retourne un ensemble de lignes :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost), qui fabriquent un chemin."
-
-# c9f7d12fb2c9416390cbb64c61cdaaba
-#: ../../../src/bd_astar/doc/index.rst:37
-msgid "Description"
-msgstr "Description"
-
-# 2228656c57724bc18029fa054849a999
-#: ../../../src/bd_astar/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# ba13914fdd78469389ae129eee02785f
-#: ../../../src/bd_astar/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identifiant de l'arête"
-
-# 5e7f92a0ffa845a385efe72da0760ee5
-#: ../../../src/bd_astar/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` identifiant du sommet source"
-
-# 194b29afb7b3486eb5611222273bb323
-#: ../../../src/bd_astar/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` identifiant du sommet cible"
-
-# 37f1ad354f13413fa6a47ec8ceaa3262
-#: ../../../src/bd_astar/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valeur, du coût de l'arête traversée. Un coût négatif va prévenir l'arête d'être insérée dans le graphe."
-
-# f7bf689e55584ee0b2e095b8f3147354
-#: ../../../src/bd_astar/doc/index.rst:50
-msgid "``x`` coordinate of the start point of the edge"
-msgstr "``x`` coordonnée du point de départ de l'arête"
-
-# e7b2325c3e8f473fae345bff6b9f9af6
-#: ../../../src/bd_astar/doc/index.rst:51
-msgid "``y`` coordinate of the start point of the edge"
-msgstr "``y`` coordonnée du point de départ de l'arête"
-
-# a554e40ce41e485d83bdcc425edab876
-#: ../../../src/bd_astar/doc/index.rst:52
-msgid "``x`` coordinate of the end point of the edge"
-msgstr "``x`` coordonnée du point final de l'arête"
-
-# d0033effb66d4af891d51c0553106616
-#: ../../../src/bd_astar/doc/index.rst:53
-msgid "``y`` coordinate of the end point of the edge"
-msgstr "``y`` coordonnée du point final de l'arête"
-
-# 52fd318293ff42458d93837f06a5dd78
-#: ../../../src/bd_astar/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(optionnel) le coût pour la traversée inverse de l'arête. Ceci est seulement utilisé quand les paramètres ``directed`` et ``has_rcost`` sont ``true`` (voir la remarque ci-dessus sur les coûts négatifs)."
-
-# b2ec788128e44b59a8a9eaf588b3ef93
-#: ../../../src/bd_astar/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4`` id du point de départ"
-
-# f5809c895ef3496fbaf43892301858ca
-#: ../../../src/bd_astar/doc/index.rst:57
-msgid "``int4`` id of the end point"
-msgstr "``int4`` id du point final"
-
-# 29607e76254f42938d9c38a10e11c7b9
-#: ../../../src/bd_astar/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "``true`` si le graphe est dirigé"
-
-# f4b5e84674e749be9f6ba934004cd598
-#: ../../../src/bd_astar/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "si ``true``, la colonne ``reverse_cost`` du SQL générant l'ensemble des lignes va être utilisé pour le coût de la traversée de l'arête dans la direction opposée."
-
-# 9969bf0e6e5f40e3b44efbfd0e53d70b
-#: ../../../src/bd_astar/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Retourne un ensemble de :ref:`type_cost_result`:"
-
-# 1634c060516d40388b007b17f2fee94c
-#: ../../../src/bd_astar/doc/index.rst:63
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# 4a478cf05b72415ebfc7f95d8e0b8625
-#: ../../../src/bd_astar/doc/index.rst:64
-msgid "node ID"
-msgstr "ID noeud"
-
-# b94cd2b23db94500b803d9c02b8ab358
-#: ../../../src/bd_astar/doc/index.rst:65
-msgid "edge ID (``-1`` for the last row)"
-msgstr "ID arête (``-1`` pour la dernière ligne)"
-
-# b8b6a3e185934bc4b7d44f66694523c5
-#: ../../../src/bd_astar/doc/index.rst:66
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "coût pour traverser à partir de ``id1`` en utilisant ``id2``"
-
-# f9a6aa6c249c40968bc39a3db86a5ebe
-#: ../../../src/bd_astar/doc/index.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr "Vous devez vous reconnecter à la base de données après ``CREATE EXTENSION pgrouting``. Sinon la fonction va retourner ``Error computing path: std::bad_alloc``."
-
-# e574996346fe4d3d937be160d621e660
-#: ../../../src/bd_astar/doc/index.rst:74
-msgid "History"
-msgstr "Histoire"
-
-# 98c01f9f86914541a78481fc80a804dd
-#: ../../../src/bd_astar/doc/index.rst:75
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# fd577945de174be79b0b53dc92d1fdae
-#: ../../../src/bd_astar/doc/index.rst:79
-msgid "Examples"
-msgstr "Exemples"
-
-# 1e4a6776b9154f5da5abb5c6d64f3221
-#: ../../../src/bd_astar/doc/index.rst:81
-msgid "Without ``reverse_cost``"
-msgstr "Sans ``reverse_cost``"
-
-# 3f707fb48bdf4edfa0f1b3657cfcbb7a
-#: ../../../src/bd_astar/doc/index.rst:101
-msgid "With ``reverse_cost``"
-msgstr "Avec ``reverse_cost``"
-
-# 473f16db67964e14b8efb25a1cf057b9
-#: ../../../src/bd_astar/doc/index.rst:120
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 7289ec5f57844a379608577bd455d4b5
-#: ../../../src/bd_astar/doc/index.rst:124
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 773014635f2c4e87a452416b391581e5
-#: ../../../src/bd_astar/doc/index.rst:126
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# f4c3b61a97b94311a9f83508c040b614
-#: ../../../src/bd_astar/doc/index.rst:127
-msgid ":ref:`bd_dijkstra`"
-msgstr ":ref:`bd_dijkstra`"
-
-# 769c0e94fba24848bb36a7bb9ca90800
-#: ../../../src/bd_astar/doc/index.rst:128
-msgid "http://en.wikipedia.org/wiki/Bidirectional_search"
-msgstr "http://en.wikipedia.org/wiki/Bidirectional_search"
-
-# bc6e6a206f44475d91e857ec85d36106
-#: ../../../src/bd_astar/doc/index.rst:129
-msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
-msgstr "http://en.wikipedia.org/wiki/A*_search_algorithm"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/bd_dijkstra/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/bd_dijkstra/doc/index.po
deleted file mode 100644
index 2bc6517..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/bd_dijkstra/doc/index.po
+++ /dev/null
@@ -1,195 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-25 07:10+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 3c0a9e188c614b0d8a83fad794d3b42f
-#: ../../../src/bd_dijkstra/doc/index.rst:13
-msgid "pgr_bdDijkstra - Bi-directional Dijkstra Shortest Path"
-msgstr "pgr_bdDijkstra - Plus court chemin bidirectionnel Dijkstra"
-
-# 2a8d7f88cd7c41549e90531d1d565848
-#: ../../../src/bd_dijkstra/doc/index.rst:21
-msgid "Name"
-msgstr "Nom"
-
-# 9e326337967141dd8cb35c1a7eb5d7b2
-#: ../../../src/bd_dijkstra/doc/index.rst:23
-msgid ""
-"``pgr_bdDijkstra`` - Returns the shortest path using Bidirectional Dijkstra "
-"algorithm."
-msgstr "``pgr_bdDijkstra`` - Retourne le plus court chemin en utilisant l'algorithme bidirectionnel Dijkstra."
-
-# e2e0af558a7340a7a29f667b07037690
-#: ../../../src/bd_dijkstra/doc/index.rst:27
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 23d2258a058a4b5fa6dcb6655362484a
-#: ../../../src/bd_dijkstra/doc/index.rst:29
-msgid ""
-"This is a bi-directional Dijkstra search algorithm. It searchs from the "
-"source toward the distination and at the same time from the destination to "
-"the source and terminates whe these to searchs meet in the middle. Returns a"
-" set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows,"
-" that make up a path."
-msgstr "C'est un algorithme de recherche bidirectionnel Dijkstra. Cela recherche depuis la source vers la destination et en même temps depuis la destination vers la source et se termine quand ces deux recherches se rencontrent au milieu. Retourne un ensemble de lignes :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost), qui fabriquent un chemin."
-
-# b37dbb1c097441d7afac9b1c3be4fa16
-#: ../../../src/bd_dijkstra/doc/index.rst:38
-msgid "Description"
-msgstr "Description"
-
-# 27182b928a294e22bbd7567e7ef6a1a6
-#: ../../../src/bd_dijkstra/doc/index.rst:40
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# d5ecf6b2aa844b768783b31d91cc0d1c
-#: ../../../src/bd_dijkstra/doc/index.rst:47
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identifiant de l'arête"
-
-# 282a69ee248b4dcfa591ec2aa3668cf4
-#: ../../../src/bd_dijkstra/doc/index.rst:48
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` identifiant du sommet source"
-
-# d8ca4a99797f4da89401ca4eae5de81b
-#: ../../../src/bd_dijkstra/doc/index.rst:49
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` identifiant du sommet cible"
-
-# 16d3eacf8377421dbb3aa3f559f8c2fd
-#: ../../../src/bd_dijkstra/doc/index.rst:50
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valeur, du coût de l'arête traversée. Un coût négatif va prévenir l'arête d'être insérée dans le graphe."
-
-# 2a8cd5659ad849358862b656205877aa
-#: ../../../src/bd_dijkstra/doc/index.rst:51
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(optionnel) le coût pour la traversée inverse de l'arête. Ceci est seulement utilisé quand les paramètres ``directed`` et ``has_rcost`` sont ``true`` (voir la remarque ci-dessus sur les coûts négatifs)."
-
-# 95f13721773f433891e1e8b50ac04509
-#: ../../../src/bd_dijkstra/doc/index.rst:53
-msgid "``int4`` id of the start point"
-msgstr "``int4`` id du point de départ"
-
-# b9798483a7944c23b68242badf5ba991
-#: ../../../src/bd_dijkstra/doc/index.rst:54
-msgid "``int4`` id of the end point"
-msgstr "``int4`` id du point final"
-
-# ff73a5d65d1e44728449829347874aa3
-#: ../../../src/bd_dijkstra/doc/index.rst:55
-msgid "``true`` if the graph is directed"
-msgstr "``true`` si le graphe est dirigé"
-
-# c177b69ec8f34e3e8347a48cd4fd0eec
-#: ../../../src/bd_dijkstra/doc/index.rst:56
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "si ``true``, la colonne ``reverse_cost`` du SQL générant l'ensemble des lignes va être utilisé pour le coût de la traversée de l'arête dans la direction opposée."
-
-# 94093f98581b414e8de69c5c03ed7ff9
-#: ../../../src/bd_dijkstra/doc/index.rst:58
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Retourne un ensemble de :ref:`type_cost_result`:"
-
-# b6dcdf2882344c97b13a0a1b5dcfc76f
-#: ../../../src/bd_dijkstra/doc/index.rst:60
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# 71a25f43edad4704b8f7bc386b951d6a
-#: ../../../src/bd_dijkstra/doc/index.rst:61
-msgid "node ID"
-msgstr "ID noeud"
-
-# bb342316c7374f38ae60758a95fe5aa0
-#: ../../../src/bd_dijkstra/doc/index.rst:62
-msgid "edge ID (``-1`` for the last row)"
-msgstr "ID arête (``-1`` pour la dernière ligne)"
-
-# 903aaea6437d438094faa1255671261a
-#: ../../../src/bd_dijkstra/doc/index.rst:63
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "coût pour traverser depuis ``id1`` en utilisant ``id2``"
-
-# 9422981e26f04c7e9edb754944c47cea
-#: ../../../src/bd_dijkstra/doc/index.rst:66
-msgid "History"
-msgstr "Histoire"
-
-# c1db7489de2b4ef8880d8d9f3abb66e3
-#: ../../../src/bd_dijkstra/doc/index.rst:67
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# e61d7de8bdb04972a567e5884e47773a
-#: ../../../src/bd_dijkstra/doc/index.rst:71
-msgid "Examples"
-msgstr "Exemples"
-
-# e5bb5ec0cf844c229475d4e75c327eb3
-#: ../../../src/bd_dijkstra/doc/index.rst:73
-msgid "Without ``reverse_cost``"
-msgstr "Sans ``reverse_cost``"
-
-# 7b425886ca994a1e87e833443909b584
-#: ../../../src/bd_dijkstra/doc/index.rst:93
-msgid "With ``reverse_cost``"
-msgstr "Avec ``reverse_cost``"
-
-# f47bce06d90b47c0a3ba534e4af09213
-#: ../../../src/bd_dijkstra/doc/index.rst:113
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# dce05fd947104f7fb53f334994b47db8
-#: ../../../src/bd_dijkstra/doc/index.rst:117
-msgid "See Also"
-msgstr "Voir aussi"
-
-# e9e1be5a32c8439083185caf29aaa09b
-#: ../../../src/bd_dijkstra/doc/index.rst:119
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 7e04714c590148078028bde3efbb5f57
-#: ../../../src/bd_dijkstra/doc/index.rst:120
-msgid ":ref:`bd_astar`"
-msgstr ":ref:`bd_astar`"
-
-# 1e532cd9d5634fb0934e837b0db7ad8a
-#: ../../../src/bd_dijkstra/doc/index.rst:121
-msgid "http://en.wikipedia.org/wiki/Bidirectional_search"
-msgstr "http://en.wikipedia.org/wiki/Bidirectional_search"
-
-# e3826d9e6a084b349a9ed0d6fffdb1ad
-#: ../../../src/bd_dijkstra/doc/index.rst:122
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/analyze_graph.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/analyze_graph.po
deleted file mode 100644
index 00ee813..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/analyze_graph.po
+++ /dev/null
@@ -1,411 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 4ec68d2c61f945ef81648e1b5c6415f1
-#: ../../../src/common/doc/functions/analyze_graph.rst:13
-msgid "pgr_analyzeGraph"
-msgstr ""
-
-# 4c3762e114fb4e67a2515bba541c8f36
-#: ../../../src/common/doc/functions/analyze_graph.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# ac455e0fb31e44308320f39bbd78adfc
-#: ../../../src/common/doc/functions/analyze_graph.rst:22
-msgid "``pgr_anlizeGraph`` — Analyzes the network topology."
-msgstr ""
-
-# 7d6b06e1d5354d94ac2855084e4e9e71
-#: ../../../src/common/doc/functions/analyze_graph.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 19f89e76f38342129988c1b3de66af9a
-# ebc7d96a54cb409a916a9e44ff8544f9
-#: ../../../src/common/doc/functions/analyze_graph.rst:28
-#: ../../../src/common/doc/functions/analyze_graph.rst:61
-msgid "The function returns:"
-msgstr ""
-
-# b996e0d0950741438419d72fc2aaa1a6
-# ac02a2dca7d24bb296b418e5019b5d52
-#: ../../../src/common/doc/functions/analyze_graph.rst:30
-#: ../../../src/common/doc/functions/analyze_graph.rst:63
-msgid "``OK`` after the analysis has finished."
-msgstr ""
-
-# 6494556e5a0240b6b89d6cc13588a959
-# 226def8709104fefbde358ee19f0dbdc
-#: ../../../src/common/doc/functions/analyze_graph.rst:31
-#: ../../../src/common/doc/functions/analyze_graph.rst:69
-msgid "``FAIL`` when the analysis was not completed due to an error."
-msgstr ""
-
-# 258df98c829a48e794073f4f67e64d37
-#: ../../../src/common/doc/functions/analyze_graph.rst:40
-msgid "Description"
-msgstr "Description"
-
-# 2ea823d9ac6a4b309542c1efdf685188
-#: ../../../src/common/doc/functions/analyze_graph.rst:43
-msgid "Prerequisites"
-msgstr ""
-
-# b6f61bceeb764c09a0519ef218788641
-#: ../../../src/common/doc/functions/analyze_graph.rst:44
-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 <edge_table>_vertices_pgr that stores the "
-"vertices information."
-msgstr ""
-
-# bc5a5fd73e194a1eb18560c62b8726c5
-#: ../../../src/common/doc/functions/analyze_graph.rst:46
-msgid ""
-"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
-"vertices table."
-msgstr ""
-
-# dddd02de549c450da54ecc30da50bcac
-#: ../../../src/common/doc/functions/analyze_graph.rst:47
-msgid ""
-"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
-"and the vertices table."
-msgstr ""
-
-# 2f1a64c5c7df47c08b9460c1c2ca9a0d
-#: ../../../src/common/doc/functions/analyze_graph.rst:50
-msgid "Parameters"
-msgstr ""
-
-# f7ef120ecd234df3bc9de0b69122a094
-#: ../../../src/common/doc/functions/analyze_graph.rst:51
-msgid "The analyze graph function accepts the following parameters:"
-msgstr ""
-
-# 93b5fa9bcdd84ccbae6d4945adb6b9b5
-#: ../../../src/common/doc/functions/analyze_graph.rst:53
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# 0c3bf879395649e1aac68ae62880746b
-#: ../../../src/common/doc/functions/analyze_graph.rst:54
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-# cd2deb23e3394ad298d9787e069561e2
-#: ../../../src/common/doc/functions/analyze_graph.rst:55
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# 31330d72cbb748289eafa0fcb996153d
-#: ../../../src/common/doc/functions/analyze_graph.rst:56
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr ""
-
-# b9e5db8199ce47ccb092272e93020d7c
-#: ../../../src/common/doc/functions/analyze_graph.rst:57
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# 245c992a7082431684659ae5845aced6
-#: ../../../src/common/doc/functions/analyze_graph.rst:58
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# 8e81329133844e65b7eef1f84cb73965
-#: ../../../src/common/doc/functions/analyze_graph.rst:59
-msgid ""
-"``text`` Condition to select a subset or rows. Default value is ``true``"
-" to indicate all rows."
-msgstr ""
-
-# c99a684aa3994cc4b60c334882d9ed78
-#: ../../../src/common/doc/functions/analyze_graph.rst:65
-msgid "Uses the vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# e32eb0de40d0487fbb1062ec88c5bbe9
-#: ../../../src/common/doc/functions/analyze_graph.rst:66
-msgid "Fills completly the ``cnt`` and ``chk`` columns of the vertices table."
-msgstr ""
-
-# a4a0f627086946459e80cc8ac16b31b8
-#: ../../../src/common/doc/functions/analyze_graph.rst:67
-msgid ""
-"Returns the analysis of the section of the network defined by "
-"``rows_where``"
-msgstr ""
-
-# f2d3df84fbb14b48a0dba64650326883
-#: ../../../src/common/doc/functions/analyze_graph.rst:71
-msgid "The vertices table is not found."
-msgstr ""
-
-# 1c3dd89f91d94a32b0fa96e3c8544649
-#: ../../../src/common/doc/functions/analyze_graph.rst:72
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# 0e7728a66df8403b80c0e73cc496d665
-#: ../../../src/common/doc/functions/analyze_graph.rst:73
-msgid "The condition is not well formed."
-msgstr ""
-
-# 8a41f89e1b6c4622925078236419ba59
-#: ../../../src/common/doc/functions/analyze_graph.rst:74
-msgid "The names of source , target or id are the same."
-msgstr ""
-
-# 9a0c49ad17e7442291584a6d38ad24f0
-#: ../../../src/common/doc/functions/analyze_graph.rst:75
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-# a28d4cfc2fb145bd8b620cd99ae007ef
-#: ../../../src/common/doc/functions/analyze_graph.rst:79
-msgid "The Vertices Table"
-msgstr ""
-
-# 6726eb03c9e14ce487a84ef6bdb3d061
-#: ../../../src/common/doc/functions/analyze_graph.rst:80
-msgid ""
-"The vertices table can be created with :ref:`pgr_createVerticesTable "
-"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
-msgstr ""
-
-# f69881355abd43b08fd4b112a15c823a
-#: ../../../src/common/doc/functions/analyze_graph.rst:82
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# e9b846b6c67a40a5a56ce827cbde2335
-#: ../../../src/common/doc/functions/analyze_graph.rst:84
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# c76d33c8d1d243e78adb977c995c1ed9
-#: ../../../src/common/doc/functions/analyze_graph.rst:85
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-msgstr ""
-
-# 2a14dd7a08114891908953fe3f87a075
-#: ../../../src/common/doc/functions/analyze_graph.rst:86
-msgid "``integer`` Indicator that the vertex might have a problem."
-msgstr ""
-
-# 9731ccd0742c4573b05224539f373580
-#: ../../../src/common/doc/functions/analyze_graph.rst:87
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# bf31d82856954293ac270255b046d010
-#: ../../../src/common/doc/functions/analyze_graph.rst:88
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# fa51c4280ee2409daf5cee9fbc858ef4
-#: ../../../src/common/doc/functions/analyze_graph.rst:89
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# 3a2bb12205fe4cd6ad67ba6a8f37afe4
-#: ../../../src/common/doc/functions/analyze_graph.rst:92
-msgid "History"
-msgstr "Histoire"
-
-# 378f4d42f82e4d30a6ab016e5ecc621a
-#: ../../../src/common/doc/functions/analyze_graph.rst:93
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# f2b122f189224840ad820005cf04c3c1
-#: ../../../src/common/doc/functions/analyze_graph.rst:96
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-# bbc188364d7a4ba9b73c901703f754a0
-#: ../../../src/common/doc/functions/analyze_graph.rst:99
-msgid "The simplest way to use pgr_analyzeGraph is:"
-msgstr ""
-
-# eef338680d2247e485489cda2088d085
-#: ../../../src/common/doc/functions/analyze_graph.rst:106
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-# bd9ee1725f5f458e84d65ccbde7489d2
-#: ../../../src/common/doc/functions/analyze_graph.rst:111
-msgid "We get the same result as the simplest way to use the function."
-msgstr ""
-
-# e6bd1bc511a6475aaa6fcce1db0cc9fd
-# 667d346fce1340c89b86814855215f31
-#: ../../../src/common/doc/functions/analyze_graph.rst:118
-#: ../../../src/common/doc/functions/analyze_graph.rst:184
-msgid "When using the named notation"
-msgstr ""
-
-# a6f10ab57f0645b6b0307bcb5d6c7ef3
-# eae5acaa57ff4a459953c203612092fa
-#: ../../../src/common/doc/functions/analyze_graph.rst:119
-#: ../../../src/common/doc/functions/analyze_graph.rst:185
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-# 0b36ba3cb2c24c17b8740a45f3430b69
-#: ../../../src/common/doc/functions/analyze_graph.rst:129
-msgid ""
-"Parameters defined with a default value can be ommited, as long as the value"
-" matches the default:"
-msgstr ""
-
-# 5130840677694ba3a4c08ae3b787e4d5
-# 309f2f767a9c4f419bb1a4ad1c1bfacf
-#: ../../../src/common/doc/functions/analyze_graph.rst:136
-#: ../../../src/common/doc/functions/analyze_graph.rst:199
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-# e7093f0dacbf44af908a1259b2b8f45d
-#: ../../../src/common/doc/functions/analyze_graph.rst:137
-msgid ""
-"Selecting rows based on the id. Displays the analysis a the section of the "
-"network."
-msgstr ""
-
-# 2867ea63b6b14572adb1130a9d04e28a
-#: ../../../src/common/doc/functions/analyze_graph.rst:143
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# 3cf323ab63204d99ac7ca31677b9e667
-#: ../../../src/common/doc/functions/analyze_graph.rst:149
-msgid ""
-"Selecting the rows where the geometry is near the geometry of the row with "
-"``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-# baf5ffc28192473483bc4a1a4a0315f3
-#: ../../../src/common/doc/functions/analyze_graph.rst:160
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-# 57cb32f6495d4cb0b5f36be03adc7efa
-#: ../../../src/common/doc/functions/analyze_graph.rst:162
-msgid "For the following table"
-msgstr ""
-
-# 12fcad9f3b484280baa8b29867859861
-#: ../../../src/common/doc/functions/analyze_graph.rst:171
-msgid "Using positional notation:"
-msgstr ""
-
-# 07a02c55d3eb4f9eb1dfed2833efcbe8
-#: ../../../src/common/doc/functions/analyze_graph.rst:172
-msgid ""
-"The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-# 5dc716a92a81438c888764e8cb2b5b79
-#: ../../../src/common/doc/functions/analyze_graph.rst:195
-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 ""
-
-# 057829092b8a4504a3115036a73a489f
-#: ../../../src/common/doc/functions/analyze_graph.rst:200
-msgid "Selecting rows based on the id."
-msgstr ""
-
-# 5c1437170b9149c5bc4174edc58ee875
-#: ../../../src/common/doc/functions/analyze_graph.rst:210
-msgid ""
-"Selecting the rows WHERE the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# 3d622065f50846578692f7a1b2a136d9
-#: ../../../src/common/doc/functions/analyze_graph.rst:222
-msgid ""
-"Selecting the rows WHERE the geometry is near the place='myhouse' of the "
-"table ``othertable``. (note the use of quote_literal)"
-msgstr ""
-
-# 2cffbd13f5f54de1abd9c025df6a762a
-#: ../../../src/common/doc/functions/analyze_graph.rst:239
-msgid "Examples"
-msgstr "Exemples"
-
-# eeedfddf23864b98a801913ef15f7cd9
-#: ../../../src/common/doc/functions/analyze_graph.rst:366
-msgid "The examples use the :ref:`sampledata` network."
-msgstr ""
-
-# d6f7c52a1a824867943d8adae7b2e245
-#: ../../../src/common/doc/functions/analyze_graph.rst:370
-msgid "See Also"
-msgstr "Voir aussi"
-
-# ba0f07ab7dca4083a5aef16d566cf506
-#: ../../../src/common/doc/functions/analyze_graph.rst:372
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 90d9202a2da94489b4b43a71caa66956
-#: ../../../src/common/doc/functions/analyze_graph.rst:373
-msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
-msgstr ""
-
-# 73d10e9d35dd4a269249fbc09274000b
-#: ../../../src/common/doc/functions/analyze_graph.rst:374
-msgid ""
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
-"vertices table based on the source and target information."
-msgstr ""
-
-# 2f459b0453c141239d9564e2467fbdd5
-#: ../../../src/common/doc/functions/analyze_graph.rst:375
-msgid ""
-":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
-"edge table."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po
deleted file mode 100644
index c9cac47..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po
+++ /dev/null
@@ -1,336 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# f8ca74e3c9a54cd0b0e6cd3bcec8de7e
-#: ../../../src/common/doc/functions/analyze_oneway.rst:13
-msgid "pgr_analyzeOneway"
-msgstr ""
-
-# ee3b92d1a5184a92b6fa72a69ab2f1c9
-#: ../../../src/common/doc/functions/analyze_oneway.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# fd816817954b4f3d8d25927cebce353b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:22
-msgid ""
-"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
-"segments."
-msgstr "``pgr_analyzeOneway`` — Analyser les routes à sens unique et identifier les segments marginaux."
-
-# 4c9dfc86ed0042de97bf0107b0b2eccd
-#: ../../../src/common/doc/functions/analyze_oneway.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# d31a1ab567db4873a46256e8ecbdedf4
-#: ../../../src/common/doc/functions/analyze_oneway.rst:28
-msgid ""
-"This function analyzes oneway streets in a graph and identifies any flipped "
-"segments."
-msgstr "Cette fonction analyse les routes à sens unique dans un graphe et identifie tout segment marginaux."
-
-# 74bdfef086ae480bbe2affdece2c9efa
-#: ../../../src/common/doc/functions/analyze_oneway.rst:40
-msgid "Description"
-msgstr "Description"
-
-# 04f93117821f4eae962594c71a06a5a8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:42
-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 ""
-
-# 035956781a774bc3bb1214394ad77be8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:44
-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 ""
-
-# 007bbd995cbf4e7c86ce8e9916675879
-#: ../../../src/common/doc/functions/analyze_oneway.rst:46
-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 ""
-
-# f972114db5c841928b7f2ac705bb0687
-#: ../../../src/common/doc/functions/analyze_oneway.rst:49
-msgid "Prerequisites"
-msgstr ""
-
-# 54a0c52cee394d389a81fcd50b24ad97
-#: ../../../src/common/doc/functions/analyze_oneway.rst:50
-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 <edge_table>_vertices_pgr that stores the "
-"vertices information."
-msgstr ""
-
-# 808b5b795d364182b543ab30a1ad1644
-#: ../../../src/common/doc/functions/analyze_oneway.rst:52
-msgid ""
-"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
-"vertices table."
-msgstr ""
-
-# f6248fc57e734ead94edd12cab567915
-#: ../../../src/common/doc/functions/analyze_oneway.rst:53
-msgid ""
-"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
-"and the vertices table."
-msgstr ""
-
-# 4cacac934ba64cda907561e98847bf8b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:56
-msgid "Parameters"
-msgstr ""
-
-# 669f0d5432dd4c0c8da55dba8c3502e7
-#: ../../../src/common/doc/functions/analyze_oneway.rst:57
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# a16edb2699f1486c91c10ac7533fef7c
-#: ../../../src/common/doc/functions/analyze_oneway.rst:58
-msgid "``text[]`` source node **in** rules"
-msgstr "Noeud source ``text[]`` **dans** rules"
-
-# 28b4c2457d3b4aaba43dc42af4d2bd5e
-#: ../../../src/common/doc/functions/analyze_oneway.rst:59
-msgid "``text[]`` source node **out** rules"
-msgstr "Noeud source ``text[]`` **hors de** rules"
-
-# 5180ad82f6e6434a99defa1823c0a2d8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:60
-msgid "``text[]`` target node **in** rules"
-msgstr "Noeud cible ``text[]`` **dans** rules"
-
-# 4866b796c7fb49d985a479c3a97eec38
-#: ../../../src/common/doc/functions/analyze_oneway.rst:61
-msgid "``text[]`` target node **out** rules"
-msgstr "Noeud cible ``text[]`` **hors de** rules"
-
-# 2744331fb9ac447ba0c40a6035ac0a95
-#: ../../../src/common/doc/functions/analyze_oneway.rst:62
-msgid ""
-"``text`` oneway column name name of the network table. Default value is "
-"``oneway``."
-msgstr ""
-
-# b116cd1fc10f4f5bbd8fe9800562b62f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:63
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# 8ca5a93ed45443c09202b1e5779dfa76
-#: ../../../src/common/doc/functions/analyze_oneway.rst:64
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# e41f4c872a3445dbbc0bd183a71971fa
-#: ../../../src/common/doc/functions/analyze_oneway.rst:65
-msgid ""
-"``boolean`` flag to treat oneway NULL values as bi-directional. Default "
-"value is ``true``."
-msgstr ""
-
-# 9cd0459ca40940448e6c0d9c07c4a157
-#: ../../../src/common/doc/functions/analyze_oneway.rst:67
-msgid ""
-"It is strongly recommended to use the named notation. See "
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
-":ref:`pgr_createTopology <pgr_create_topology>` for examples."
-msgstr ""
-
-# e217ab2060e447e9a7a3745f4d84390d
-#: ../../../src/common/doc/functions/analyze_oneway.rst:70
-msgid "The function returns:"
-msgstr ""
-
-# 95dedd1c39c9424a906e6f2ff882e84a
-#: ../../../src/common/doc/functions/analyze_oneway.rst:72
-msgid "``OK`` after the analysis has finished."
-msgstr ""
-
-# 573d5fab7bb247d5adc39d8460683357
-#: ../../../src/common/doc/functions/analyze_oneway.rst:74
-msgid "Uses the vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# 86597d037fe242378cc71e6e2ec88b19
-#: ../../../src/common/doc/functions/analyze_oneway.rst:75
-msgid ""
-"Fills completely the ``ein`` and ``eout`` columns of the vertices table."
-msgstr ""
-
-# dcae6d2cceea4b6bb47a700cc4338340
-#: ../../../src/common/doc/functions/analyze_oneway.rst:77
-msgid "``FAIL`` when the analysis was not completed due to an error."
-msgstr ""
-
-# 792572ffb7314163be7e4aabadd4429c
-#: ../../../src/common/doc/functions/analyze_oneway.rst:79
-msgid "The vertices table is not found."
-msgstr ""
-
-# affbb7122dd844f3b5c7962c97dec0d3
-#: ../../../src/common/doc/functions/analyze_oneway.rst:80
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# e50d016ee05048779dea2db4006500be
-#: ../../../src/common/doc/functions/analyze_oneway.rst:81
-msgid "The names of source , target or oneway are the same."
-msgstr ""
-
-# f14e2456527945e0a80e7888bb6dde7f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:83
-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 ""
-
-# 02623674186e4e0c961078942584c0ec
-#: ../../../src/common/doc/functions/analyze_oneway.rst:86
-msgid "The Vertices Table"
-msgstr ""
-
-# dd7fb8252bfe456aaa65515346941e74
-#: ../../../src/common/doc/functions/analyze_oneway.rst:87
-msgid ""
-"The vertices table can be created with :ref:`pgr_createVerticesTable "
-"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
-msgstr ""
-
-# f838bf466e424966bd61af7b901279d2
-#: ../../../src/common/doc/functions/analyze_oneway.rst:89
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# 722239d3877b48d8bc5e63052fc7424f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:91
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# 0d3b269abc8e45a1abf355e4bb7d51c0
-#: ../../../src/common/doc/functions/analyze_oneway.rst:92
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 50b3729c83964ef3ae1a1511c76b50f8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:93
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# a5b1fe0206ea4c428c94f43a141b527b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:94
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming."
-msgstr ""
-
-# 7c678b91ca8a408aafda94e5fa217fae
-#: ../../../src/common/doc/functions/analyze_oneway.rst:95
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing."
-msgstr ""
-
-# 6d672d0be9cf41d69db69e46109d1624
-#: ../../../src/common/doc/functions/analyze_oneway.rst:96
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# b7cf2a5bba544714b9b79373c889e6cc
-#: ../../../src/common/doc/functions/analyze_oneway.rst:100
-msgid "History"
-msgstr "Histoire"
-
-# ee9866aeb2c94c7fb0aa1e6cda48e6cb
-#: ../../../src/common/doc/functions/analyze_oneway.rst:101
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 3eed638ba1dd400186848b0928d632cf
-#: ../../../src/common/doc/functions/analyze_oneway.rst:105
-msgid "Examples"
-msgstr "Exemples"
-
-# fb1f0f5537c0427a866814b367160245
-#: ../../../src/common/doc/functions/analyze_oneway.rst:129
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 34726fcf405940b780880e71c6a2dad3
-#: ../../../src/common/doc/functions/analyze_oneway.rst:133
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 384816237f7b49d5911a48675467810d
-#: ../../../src/common/doc/functions/analyze_oneway.rst:135
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# f8a2c637ce834c5ab9fea42ec365f0d1
-#: ../../../src/common/doc/functions/analyze_oneway.rst:136
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-# 1688102891bc4abaaed229738ca05755
-#: ../../../src/common/doc/functions/analyze_oneway.rst:137
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
-
-# 5914f34793e24715acb0adbe7d9fe1e0
-#: ../../../src/common/doc/functions/analyze_oneway.rst:138
-msgid ""
-":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
-"source and target information."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/create_topology.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/create_topology.po
deleted file mode 100644
index d2ad51d..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/create_topology.po
+++ /dev/null
@@ -1,415 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:28+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 841ce4ae2ccd42aeb6708e0469affc85
-#: ../../../src/common/doc/functions/create_topology.rst:13
-msgid "pgr_createTopology"
-msgstr ""
-
-# bceb18f1c7484f2495890a181eb43749
-#: ../../../src/common/doc/functions/create_topology.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# efddc8da13ee412aa1fb75bf84ad023b
-#: ../../../src/common/doc/functions/create_topology.rst:22
-msgid ""
-"``pgr_createTopology`` — Builds a network topology based on the geometry "
-"information."
-msgstr ""
-
-# c01e1abb389b4e0096e2971378967ac9
-#: ../../../src/common/doc/functions/create_topology.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 0dcc6bb9100b4d89afa5b1404283d0c9
-# 2f90d445d42f4c839d6d2b2e4bdd588b
-#: ../../../src/common/doc/functions/create_topology.rst:28
-#: ../../../src/common/doc/functions/create_topology.rst:69
-msgid "The function returns:"
-msgstr ""
-
-# 88833f75e6d741b5bc91526488d66e4e
-#: ../../../src/common/doc/functions/create_topology.rst:30
-msgid ""
-"``OK`` after the network topology has been built and the vertices table "
-"created."
-msgstr ""
-
-# da6aad799955428fb1bef9ff2dbd70b5
-#: ../../../src/common/doc/functions/create_topology.rst:31
-msgid "``FAIL`` when the network topology was not built due to an error."
-msgstr ""
-
-# c4d463cfb61840f689831eeafe2844dc
-#: ../../../src/common/doc/functions/create_topology.rst:42
-msgid "Description"
-msgstr "Description"
-
-# fba8585de1c94f0ba612f64f8cd4f39d
-#: ../../../src/common/doc/functions/create_topology.rst:45
-msgid "Parameters"
-msgstr ""
-
-# 33e33f7ee98e4b9a9d333f8ab95cbc9b
-#: ../../../src/common/doc/functions/create_topology.rst:46
-msgid "The topology creation function accepts the following parameters:"
-msgstr "La fonction de création de topologie accepte les paramètres suivants :"
-
-# d19b1856e3d440749487a15a83c9d44c
-#: ../../../src/common/doc/functions/create_topology.rst:48
-msgid "``text`` Network table name. (may contain the schema name AS well)"
-msgstr ""
-
-# 6afd7b88cbaf4a58b2dcbd161b278356
-#: ../../../src/common/doc/functions/create_topology.rst:49
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-# 905510b263854f1eb05f10c8a64d9d20
-#: ../../../src/common/doc/functions/create_topology.rst:50
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# f9b621bcf0ab41c3b87693c812f3d710
-#: ../../../src/common/doc/functions/create_topology.rst:51
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr ""
-
-# 6bcaf9c3c7e1422ea8e1b4dc45e7c613
-#: ../../../src/common/doc/functions/create_topology.rst:52
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# e2b13126a14a4ebeb8c3f453235560a1
-#: ../../../src/common/doc/functions/create_topology.rst:53
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# adbfdd92db3740e5b4e8a6259a0a064c
-#: ../../../src/common/doc/functions/create_topology.rst:54
-msgid ""
-"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
-"to indicate all rows."
-msgstr ""
-
-# 65297b06273d46cc98c9a3be75886137
-#: ../../../src/common/doc/functions/create_topology.rst:58
-msgid "The ``edge_table`` will be affected"
-msgstr ""
-
-# 7f45565b3b8d40408b2da1bee3d1c354
-#: ../../../src/common/doc/functions/create_topology.rst:60
-msgid "The ``source`` column values will change."
-msgstr ""
-
-# e05fe9ce627848aa8aa72f032d303f04
-#: ../../../src/common/doc/functions/create_topology.rst:61
-msgid "The ``target`` column values will change."
-msgstr ""
-
-# 72c3682247aa4841a49790a78db8c3c3
-#: ../../../src/common/doc/functions/create_topology.rst:62
-msgid ""
-"An index will be created, if it doesn't exists, to speed up the process to "
-"the following columns:"
-msgstr ""
-
-# 993784afa3ce4ca68f11e8e02f2b4b27
-#: ../../../src/common/doc/functions/create_topology.rst:64
-msgid "``id``"
-msgstr "``id``"
-
-# 3074ee818e8241bc93c5a3284d7c3af4
-#: ../../../src/common/doc/functions/create_topology.rst:65
-msgid "``the_geom``"
-msgstr "``the_geom``"
-
-# e40fef18592542b98d234ac6a8038def
-#: ../../../src/common/doc/functions/create_topology.rst:66
-msgid "``source``"
-msgstr "``source``"
-
-# 0360a33adc734d1eaf83f5e1e314cc73
-#: ../../../src/common/doc/functions/create_topology.rst:67
-msgid "``target``"
-msgstr "``target``"
-
-# a2aae07be90348b0b2190f647731fb26
-#: ../../../src/common/doc/functions/create_topology.rst:71
-msgid "``OK`` after the network topology has been built."
-msgstr ""
-
-# 33a4fd15e75a41a68105d2ea67b4aab1
-#: ../../../src/common/doc/functions/create_topology.rst:73
-msgid "Creates a vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# 589a7e90c6404cbe902baec0a884189b
-#: ../../../src/common/doc/functions/create_topology.rst:74
-msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
-msgstr ""
-
-# 92e7ab03c5ce43ed8c705a26aa4b801c
-#: ../../../src/common/doc/functions/create_topology.rst:75
-msgid ""
-"Fills the source and target columns of the edge table referencing the ``id``"
-" of the vertices table."
-msgstr ""
-
-# 0635e9d515184ccc80747864939f789c
-#: ../../../src/common/doc/functions/create_topology.rst:78
-msgid "``FAIL`` when the network topology was not built due to an error:"
-msgstr ""
-
-# 607fcb6f6ae3438789ecf9c95992bc3f
-#: ../../../src/common/doc/functions/create_topology.rst:80
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# 2bad2b565914457a90a990e718e857fd
-#: ../../../src/common/doc/functions/create_topology.rst:81
-msgid "The condition is not well formed."
-msgstr ""
-
-# c800f5e3462c44c1b786308aec4cfea4
-#: ../../../src/common/doc/functions/create_topology.rst:82
-msgid "The names of source , target or id are the same."
-msgstr ""
-
-# 51c96f82e8ea49bcbde8aaeb905a6c6c
-#: ../../../src/common/doc/functions/create_topology.rst:83
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-# f5f0d0a1c3814e1d9c14e4de52bd9899
-#: ../../../src/common/doc/functions/create_topology.rst:87
-msgid "The Vertices Table"
-msgstr ""
-
-# 54ef7e60b4d445cfa453323fbe80032d
-#: ../../../src/common/doc/functions/create_topology.rst:88
-msgid ""
-"The vertices table is a requirment of the :ref:`pgr_analyzeGraph "
-"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
-"functions."
-msgstr ""
-
-# faaffddd86fd4680a80925c8c3877f07
-#: ../../../src/common/doc/functions/create_topology.rst:90
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# fc31880c8b034aae99d6d4caec420302
-#: ../../../src/common/doc/functions/create_topology.rst:92
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# 7684f52a607845ef802799c26c221bf3
-#: ../../../src/common/doc/functions/create_topology.rst:93
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 1dc63c1d7cbb417d916ed0561df67df9
-#: ../../../src/common/doc/functions/create_topology.rst:94
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 546f74ccc20545de9c032cabcaac878f
-#: ../../../src/common/doc/functions/create_topology.rst:95
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# 9fe606ee590d4f009989e3cdcf09b5c5
-#: ../../../src/common/doc/functions/create_topology.rst:96
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# 2ee4f32c8546412bad1e109e6051e249
-#: ../../../src/common/doc/functions/create_topology.rst:97
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# a63156aa23b54785aaf66150bfe98a52
-#: ../../../src/common/doc/functions/create_topology.rst:100
-msgid "History"
-msgstr "Histoire"
-
-# da8726d6435e42f09d83f4a310d5c432
-#: ../../../src/common/doc/functions/create_topology.rst:101
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# 5b4b6a4bea1543ac98f444d9ec32d7eb
-#: ../../../src/common/doc/functions/create_topology.rst:104
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-# 6db23da4afd448bab89802246bccb65a
-#: ../../../src/common/doc/functions/create_topology.rst:107
-msgid "The simplest way to use pgr_createtopology is:"
-msgstr ""
-
-# 6905f56f53bb4cdfb9ae49021265afe9
-#: ../../../src/common/doc/functions/create_topology.rst:115
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-# f8c6c68c7d334f68bac36a818c4091ab
-#: ../../../src/common/doc/functions/create_topology.rst:120
-msgid "We get the same result AS the simplest way to use the function."
-msgstr ""
-
-# 8dcbdbf60c2e4522a87d80a7796a354b
-# b72940f0e2054c46a50358fc40af026e
-#: ../../../src/common/doc/functions/create_topology.rst:127
-#: ../../../src/common/doc/functions/create_topology.rst:192
-msgid "When using the named notation"
-msgstr ""
-
-# 460cbff5c7054542a80375a4f50072e0
-# 56d9daba24ff4ce9ac02e3326af007af
-#: ../../../src/common/doc/functions/create_topology.rst:128
-#: ../../../src/common/doc/functions/create_topology.rst:193
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-# 4b24ad3db4be4b60a6c8bfcc38fae359
-#: ../../../src/common/doc/functions/create_topology.rst:138
-msgid ""
-"Parameters defined with a default value can be omited, AS long AS the value "
-"matches the default:"
-msgstr ""
-
-# 8aab982078634384ab4dfced463b5c14
-# d9c7d4fa12394a5a915a9f6f664e7a8a
-#: ../../../src/common/doc/functions/create_topology.rst:145
-#: ../../../src/common/doc/functions/create_topology.rst:207
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-# 4be49c2f23734283895a40625620047b
-# 1734ac1429ad4691861fbfcc7954d800
-#: ../../../src/common/doc/functions/create_topology.rst:146
-#: ../../../src/common/doc/functions/create_topology.rst:208
-msgid "Selecting rows based on the id."
-msgstr ""
-
-# 499347aef3cb49f993c320d1fd353a29
-# a0cd57644bf443fbaa81efed8df8a30f
-#: ../../../src/common/doc/functions/create_topology.rst:152
-#: ../../../src/common/doc/functions/create_topology.rst:218
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# b8e12b4f62d24fb0a535290a0a480ff0
-# 42da9f122c7240bea10a78685a6b5b8d
-#: ../../../src/common/doc/functions/create_topology.rst:158
-#: ../../../src/common/doc/functions/create_topology.rst:230
-msgid ""
-"Selecting the rows where the geometry is near the geometry of the row with "
-"``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-# 596d74ac25d34cbda9a05349a4a0af21
-#: ../../../src/common/doc/functions/create_topology.rst:169
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-# ac1bf6e79288443486b7b105e25e07eb
-#: ../../../src/common/doc/functions/create_topology.rst:171
-msgid "For the following table"
-msgstr ""
-
-# a24fc2426b5c4b91bc53f875e37dddaa
-#: ../../../src/common/doc/functions/create_topology.rst:179
-msgid "Using positional notation:"
-msgstr ""
-
-# d1937a888b40477b8d696215b7b93425
-#: ../../../src/common/doc/functions/create_topology.rst:180
-msgid ""
-"The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-# 7e510379477f445a9432549c095c12bb
-#: ../../../src/common/doc/functions/create_topology.rst:203
-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 ""
-
-# de088e18a1634e6a96b99df9171c530a
-#: ../../../src/common/doc/functions/create_topology.rst:247
-msgid "Examples"
-msgstr "Exemples"
-
-# 89b592f2e7f6474cbed2d9d5bca887e9
-#: ../../../src/common/doc/functions/create_topology.rst:279
-msgid "The example uses the :ref:`sampledata` network."
-msgstr ""
-
-# ae52cd8922264c939460bd2df2108508
-#: ../../../src/common/doc/functions/create_topology.rst:283
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 664429e917764979b9255e4f9a72377f
-#: ../../../src/common/doc/functions/create_topology.rst:285
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 9ded0191d7344e8baca758e97f34cf68
-#: ../../../src/common/doc/functions/create_topology.rst:286
-msgid ""
-":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
-"source and target information."
-msgstr ""
-
-# ca4432eb1b4246268b1acee87b464b2f
-#: ../../../src/common/doc/functions/create_topology.rst:287
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/create_vert_table.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/create_vert_table.po
deleted file mode 100644
index 1849b5c..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/create_vert_table.po
+++ /dev/null
@@ -1,388 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 1a8504651dd840e4a48344ead373a073
-#: ../../../src/common/doc/functions/create_vert_table.rst:13
-msgid "pgr_createVerticesTable"
-msgstr ""
-
-# ad976846c3444135a397d1f47a0ffceb
-#: ../../../src/common/doc/functions/create_vert_table.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# c26ff674db0d4b65bff9b1483e524956
-#: ../../../src/common/doc/functions/create_vert_table.rst:22
-msgid ""
-"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
-"source and target information."
-msgstr ""
-
-# b27c4239c9034d8fb5bbfc4b736af367
-#: ../../../src/common/doc/functions/create_vert_table.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# bbfea2a13422443f8e1b9b863f56dea0
-# 139eabd1665d4dc8b6caac92f0764d50
-#: ../../../src/common/doc/functions/create_vert_table.rst:28
-#: ../../../src/common/doc/functions/create_vert_table.rst:63
-msgid "The function returns:"
-msgstr ""
-
-# bdf469a3c50c4176bcc89409cbe50136
-# 268e8b4480b24112a72e1d7da0dab1bd
-#: ../../../src/common/doc/functions/create_vert_table.rst:30
-#: ../../../src/common/doc/functions/create_vert_table.rst:65
-msgid "``OK`` after the vertices table has been reconstructed."
-msgstr ""
-
-# f542765a7c984a57b56f203df843634d
-# a536d714aa4240dca5d92dfeee6dd7bb
-#: ../../../src/common/doc/functions/create_vert_table.rst:31
-#: ../../../src/common/doc/functions/create_vert_table.rst:70
-msgid ""
-"``FAIL`` when the vertices table was not reconstructed due to an error."
-msgstr ""
-
-# c7c8bc00b10d45a897224d240c4f96bf
-#: ../../../src/common/doc/functions/create_vert_table.rst:41
-msgid "Description"
-msgstr "Description"
-
-# c53a2ef242f8484dac84581a80134594
-#: ../../../src/common/doc/functions/create_vert_table.rst:44
-msgid "Parameters"
-msgstr ""
-
-# 2dc2c3867d7a4367a958a6e1049f44c0
-#: ../../../src/common/doc/functions/create_vert_table.rst:45
-msgid ""
-"The reconstruction of the vertices table function accepts the following "
-"parameters:"
-msgstr ""
-
-# e92b11f0f4ea47af9581936d11972ef6
-#: ../../../src/common/doc/functions/create_vert_table.rst:47
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# 75d43bdeeb7843139aec9b4c7dc60097
-#: ../../../src/common/doc/functions/create_vert_table.rst:48
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# f0e2bb638cd841f2b61bc8398e3ea59b
-#: ../../../src/common/doc/functions/create_vert_table.rst:49
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# ba67bced62994e7b98967cf09cbf3ca6
-#: ../../../src/common/doc/functions/create_vert_table.rst:50
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# d7d53a50bc9249518132241a2c83dc1b
-#: ../../../src/common/doc/functions/create_vert_table.rst:51
-msgid ""
-"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
-"to indicate all rows."
-msgstr ""
-
-# a87c8e9949df409da09632babbb99748
-#: ../../../src/common/doc/functions/create_vert_table.rst:55
-msgid "The ``edge_table`` will be affected"
-msgstr ""
-
-# a0b202c14bf849e1a9506fc9c4010540
-#: ../../../src/common/doc/functions/create_vert_table.rst:57
-msgid ""
-"An index will be created, if it doesn't exists, to speed up the process to "
-"the following columns:"
-msgstr ""
-
-# 51ab4d2ba98b4affa7e5cec96e352cce
-#: ../../../src/common/doc/functions/create_vert_table.rst:59
-msgid "``the_geom``"
-msgstr "``the_geom``"
-
-# 134fb1a15f8742a49fe36e2683c4c324
-#: ../../../src/common/doc/functions/create_vert_table.rst:60
-msgid "``source``"
-msgstr "``source``"
-
-# 1c5f7bc5486b44999341e4f8f9b92c2e
-#: ../../../src/common/doc/functions/create_vert_table.rst:61
-msgid "``target``"
-msgstr "``target``"
-
-# 2c70ff2c521c48c799c898d61a01e119
-#: ../../../src/common/doc/functions/create_vert_table.rst:67
-msgid "Creates a vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# b0e0cf6163ea49f3b3a38e97576f301e
-#: ../../../src/common/doc/functions/create_vert_table.rst:68
-msgid ""
-"Fills ``id`` and ``the_geom`` columns of the vertices table based on the "
-"source and target columns of the edge table."
-msgstr ""
-
-# 28e32e20ebd74f88920b7c6fd45054e9
-#: ../../../src/common/doc/functions/create_vert_table.rst:72
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# 8501c3c5738f4907bf64b63007218466
-#: ../../../src/common/doc/functions/create_vert_table.rst:73
-msgid "The condition is not well formed."
-msgstr ""
-
-# 5252c79651354d40a6271efe4b78d226
-#: ../../../src/common/doc/functions/create_vert_table.rst:74
-msgid "The names of source, target are the same."
-msgstr ""
-
-# 41c42eeafd6b487ebc676126c0f92f0c
-#: ../../../src/common/doc/functions/create_vert_table.rst:75
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-# d61aba7cc54d49b9a670817e7dd52472
-#: ../../../src/common/doc/functions/create_vert_table.rst:78
-msgid "The Vertices Table"
-msgstr ""
-
-# 93a53c04ff294116acf94a067d17ff73
-#: ../../../src/common/doc/functions/create_vert_table.rst:79
-msgid ""
-"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
-"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
-"functions."
-msgstr ""
-
-# 7e418508090c4667b4128b22f562b5db
-#: ../../../src/common/doc/functions/create_vert_table.rst:81
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# 114548eb64364741b99e10c86fe55fad
-#: ../../../src/common/doc/functions/create_vert_table.rst:83
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# 35f0fc22f2464997bce4d704a9f4ee88
-#: ../../../src/common/doc/functions/create_vert_table.rst:84
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# d71ba1da8657438b86fe6ce3326cf94a
-#: ../../../src/common/doc/functions/create_vert_table.rst:85
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 9ea4778e1ed64d3cb8c12ffedca5748b
-#: ../../../src/common/doc/functions/create_vert_table.rst:86
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# cd631484ea62455cae3d37b03ca36624
-#: ../../../src/common/doc/functions/create_vert_table.rst:87
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# 29652dcb521b4111813d63d570b62873
-#: ../../../src/common/doc/functions/create_vert_table.rst:88
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# ca63675181414139865690332306235b
-#: ../../../src/common/doc/functions/create_vert_table.rst:91
-msgid "History"
-msgstr "Histoire"
-
-# e383b8838b4b40618c66151c1f94fb48
-#: ../../../src/common/doc/functions/create_vert_table.rst:92
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# f4e14bd6d88d4f1e8d5ff2fbf9aea722
-#: ../../../src/common/doc/functions/create_vert_table.rst:95
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-# 6fc1c7d9c4e04380ada776f609bf4505
-#: ../../../src/common/doc/functions/create_vert_table.rst:98
-msgid "The simplest way to use pgr_createVerticesTable is:"
-msgstr ""
-
-# 3373cb2347994f2fa122008bdff12190
-#: ../../../src/common/doc/functions/create_vert_table.rst:105
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-# f75126b9da994fea920678a643a80e25
-#: ../../../src/common/doc/functions/create_vert_table.rst:110
-msgid "We get the same result as the simplest way to use the function."
-msgstr ""
-
-# 90ea5b12d9a64eb2bafd6d211e0ffeff
-# 34ff976ba1f24ec08a19a8d87673156d
-#: ../../../src/common/doc/functions/create_vert_table.rst:117
-#: ../../../src/common/doc/functions/create_vert_table.rst:181
-msgid "When using the named notation"
-msgstr ""
-
-# 213a5c21ddcb4745987210530901695f
-# fac4e4da33fb494981c36957cd000a29
-#: ../../../src/common/doc/functions/create_vert_table.rst:118
-#: ../../../src/common/doc/functions/create_vert_table.rst:182
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-# 529a856bf0404a10a837b07945c52175
-#: ../../../src/common/doc/functions/create_vert_table.rst:128
-msgid ""
-"Parameters defined with a default value can be omited, as long as the value "
-"matches the default:"
-msgstr ""
-
-# 55574bcb1be54b1b907c0524cbf1057d
-# af501046d7d84255bd3030520c3e2f15
-#: ../../../src/common/doc/functions/create_vert_table.rst:135
-#: ../../../src/common/doc/functions/create_vert_table.rst:196
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-# 7080aeec9c1e4a31bfb9be1ed4506ab7
-#: ../../../src/common/doc/functions/create_vert_table.rst:136
-msgid "Selecting rows based on the id."
-msgstr ""
-
-# 74ec654344604925875e20b1447a6a3e
-#: ../../../src/common/doc/functions/create_vert_table.rst:142
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# 89d554dba13d40be8ca51e74d18c7c6f
-# fbda0895e287413fb2455b07ba2ba7fb
-#: ../../../src/common/doc/functions/create_vert_table.rst:148
-#: ../../../src/common/doc/functions/create_vert_table.rst:219
-msgid ""
-"Selecting the rows where the geometry is near the geometry of the row with "
-"``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-# 7f2e698d7f844861bd468923e95ef16a
-#: ../../../src/common/doc/functions/create_vert_table.rst:159
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-# 381c72bdf71543d4853557e93d021602
-#: ../../../src/common/doc/functions/create_vert_table.rst:161
-msgid "For the following table"
-msgstr ""
-
-# 5d51a2b4e3e84516bab9cc22039007c8
-#: ../../../src/common/doc/functions/create_vert_table.rst:169
-msgid "Using positional notation:"
-msgstr ""
-
-# 3be19d9038134fe2907db9c97eaeca7d
-#: ../../../src/common/doc/functions/create_vert_table.rst:170
-msgid ""
-"The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-# 94d47a836ffa45268fc1f9662f902f2b
-#: ../../../src/common/doc/functions/create_vert_table.rst:192
-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 ""
-
-# 6d8d108291094933afdde4095193e506
-#: ../../../src/common/doc/functions/create_vert_table.rst:197
-msgid "Selecting rows based on the gid."
-msgstr ""
-
-# 5df5fd0f734e46c6bfb93444bd86905e
-#: ../../../src/common/doc/functions/create_vert_table.rst:207
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``gid`` =5 ."
-msgstr ""
-
-# e2c54fc28df243609e8d003180886771
-#: ../../../src/common/doc/functions/create_vert_table.rst:236
-msgid "Examples"
-msgstr "Exemples"
-
-# 0587b0909413456482f8b8725b101b7a
-#: ../../../src/common/doc/functions/create_vert_table.rst:258
-msgid "The example uses the :ref:`sampledata` network."
-msgstr ""
-
-# ad71788bef724cb1809d4b5d96ef1e5c
-#: ../../../src/common/doc/functions/create_vert_table.rst:262
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 6baea98fd7b6493faabb8fcc69f975d8
-#: ../../../src/common/doc/functions/create_vert_table.rst:264
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 7103284d91854b18939e44589085f3cf
-#: ../../../src/common/doc/functions/create_vert_table.rst:265
-msgid ""
-":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
-"on the geometry."
-msgstr ""
-
-# 4c67e74087fe4035a8b54bb0d58d8a84
-#: ../../../src/common/doc/functions/create_vert_table.rst:266
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
-
-# a7eb449e6d594406ab3779c29d1937c8
-#: ../../../src/common/doc/functions/create_vert_table.rst:267
-msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po
deleted file mode 100644
index 3931f66..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po
+++ /dev/null
@@ -1,89 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-22 18:12+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 1451c59201944bfd9022c90ef89ebf8a
-#: ../../../src/common/doc/functions/is_column_in_table.rst:13
-msgid "pgr_isColumnInTable - Check if column exists"
-msgstr "pgr_isColumnInTable - Vérifier si la colonne existe"
-
-# cb570c2703fc45e9bba281cae42780d6
-#: ../../../src/common/doc/functions/is_column_in_table.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# b4cdca42128d4828961c3e7076774fc0
-#: ../../../src/common/doc/functions/is_column_in_table.rst:22
-msgid "``pgr_isColumnInTable`` — Check if a column exists in a table."
-msgstr "``pgr_isColumnInTable`` — Vérifier si une colonne existe dans une table."
-
-# 33b135e2f8dd4f5e81aad53d1a016cfe
-#: ../../../src/common/doc/functions/is_column_in_table.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 96d06813601a419c9b44fe8298f74a51
-#: ../../../src/common/doc/functions/is_column_in_table.rst:28
-msgid "Returns ``true`` or ``false`` if column “col” exists in table “tab”."
-msgstr "Retourne ``true`` ou ``false`` si la colonne “col” existe dans la table “tab”."
-
-# 44f17585bbd843cb9fbcacb785ad3130
-#: ../../../src/common/doc/functions/is_column_in_table.rst:36
-msgid "Description"
-msgstr "Description"
-
-# b57ee4621bd04e6991a266235c5a592a
-#: ../../../src/common/doc/functions/is_column_in_table.rst:38
-msgid "``text`` table name with or without schema component"
-msgstr "Le nom de la table ``text`` avec ou sans composant de schéma"
-
-# ac6b45788cac4cc7a5dcf6e4c44bb9ad
-#: ../../../src/common/doc/functions/is_column_in_table.rst:39
-msgid "``text`` column name to be checked for"
-msgstr "``text`` nom de colonne à être vérifié pour"
-
-# 5f4ac9523c3b487884e6dd8e67b1e082
-#: ../../../src/common/doc/functions/is_column_in_table.rst:43
-msgid "History"
-msgstr "Histoire"
-
-# 028851614bd7489991629d8c8f6f8bbf
-#: ../../../src/common/doc/functions/is_column_in_table.rst:44
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 3c3db2df87634ae4b3c8713633f9214f
-#: ../../../src/common/doc/functions/is_column_in_table.rst:48
-msgid "Examples"
-msgstr "Exemples"
-
-# 61e31f4885e444eea60640117f0f8264
-#: ../../../src/common/doc/functions/is_column_in_table.rst:59
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 179da1f0bf5342b49e83327d1e277ca9
-#: ../../../src/common/doc/functions/is_column_in_table.rst:63
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 7e1d2140f94d40db8ce6f48c9a3b119f
-#: ../../../src/common/doc/functions/is_column_in_table.rst:65
-msgid ":ref:`pgr_is_column_indexed`"
-msgstr ":ref:`pgr_is_column_indexed`"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po
deleted file mode 100644
index eb508f0..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po
+++ /dev/null
@@ -1,90 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-22 18:15+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# f85a66c48ca94cc9a5bba227e6479482
-#: ../../../src/common/doc/functions/is_column_indexed.rst:13
-msgid "pgr_isColumnIndexed - Check if column is indexed"
-msgstr "pgr_isColumnIndexed - Vérifier si la colonne est indexée"
-
-# a4e361cfe30d494982b2755f507c2df4
-#: ../../../src/common/doc/functions/is_column_indexed.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 2616614bd27b4f3aac95e5ee66f8771c
-#: ../../../src/common/doc/functions/is_column_indexed.rst:22
-msgid "``pgr_isColumnIndexed`` — Check if a column in a table is indexed."
-msgstr "``pgr_isColumnIndexed`` — Vérifier si une colonne dans une table est indexée."
-
-# 4aff78895aaf431bb254a1725ab1bab6
-#: ../../../src/common/doc/functions/is_column_indexed.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 62d98585fdfb49d287f711a97ba6f261
-#: ../../../src/common/doc/functions/is_column_indexed.rst:28
-msgid ""
-"Returns ``true`` or ``false`` if column “col” in table “tab” is indexed."
-msgstr "Retourne ``true`` ou ``false`` si la colonne “col” dans la table “tab” est indexée."
-
-# 016a3d2a60a745c39afdaa4ba6d24b5f
-#: ../../../src/common/doc/functions/is_column_indexed.rst:36
-msgid "Description"
-msgstr "Description"
-
-# 5efc6b2a366544cdadac135ab40dee54
-#: ../../../src/common/doc/functions/is_column_indexed.rst:38
-msgid "``text`` table name with or without schema component"
-msgstr "Le nom de la table ``text`` avec ou sans composant de schéma"
-
-# 76548c59562d4c4188ea7a5bbd5b769a
-#: ../../../src/common/doc/functions/is_column_indexed.rst:39
-msgid "``text`` column name to be checked for"
-msgstr "``text`` nom de colonne à être vérifié pour"
-
-# 20bbf0766ada4f7b81807c2e917be118
-#: ../../../src/common/doc/functions/is_column_indexed.rst:43
-msgid "History"
-msgstr "Histoire"
-
-# 3ca6785c8cb24235a6b581e63c32bd03
-#: ../../../src/common/doc/functions/is_column_indexed.rst:44
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 89feb49b01e94980935495257bf135a9
-#: ../../../src/common/doc/functions/is_column_indexed.rst:48
-msgid "Examples"
-msgstr "Exemples"
-
-# c8b849f8431c42ef9ecdcde47c516f03
-#: ../../../src/common/doc/functions/is_column_indexed.rst:59
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 4d38c2d872d0425290c2371cbc5d27e8
-#: ../../../src/common/doc/functions/is_column_indexed.rst:63
-msgid "See Also"
-msgstr "Voir aussi"
-
-# ed5ed4b10dc74af48b9de1a8743ec37b
-#: ../../../src/common/doc/functions/is_column_indexed.rst:65
-msgid ":ref:`pgr_is_column_in_table`"
-msgstr ":ref:`pgr_is_column_in_table`"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/node_network.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/node_network.po
deleted file mode 100644
index cbac4b1..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/node_network.po
+++ /dev/null
@@ -1,417 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# e70efe892bc14a45b9e0a2483d5955c1
-#: ../../../src/common/doc/functions/node_network.rst:13
-msgid "pgr_nodeNetwork"
-msgstr ""
-
-# 928e918755da48d29b113ad9fcdac620
-#: ../../../src/common/doc/functions/node_network.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 4c656aa4f4bf48c39d41d16b429a0f0f
-#: ../../../src/common/doc/functions/node_network.rst:22
-msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
-msgstr "``pgr_nodeNetwork`` - Noue une table réseau d'arêtes."
-
-# b5fd23c4e27446ce8ac33a3ee9bd1fe7
-#: ../../../src/common/doc/functions/node_network.rst:24
-msgid "Nicolas Ribot"
-msgstr "Nicolas Ribot"
-
-# 16108dce80dd41e2a458f2f45f2864d0
-#: ../../../src/common/doc/functions/node_network.rst:25
-msgid "Nicolas Ribot, The source code is released under the MIT-X license."
-msgstr "Nicolas Ribot, Le code source est distribué sous la licence MIT-X."
-
-# 3977ae6b9cf044318ec203a8e5aa5692
-#: ../../../src/common/doc/functions/node_network.rst:29
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 2f6a7ad6abe5481da1e313d912af14e9
-#: ../../../src/common/doc/functions/node_network.rst:31
-msgid ""
-"The function reads edges from a not \"noded\" network table and writes the "
-"\"noded\" edges into a new table."
-msgstr "La fonction lit les arêtes d'une table réseau de nœuds non \"noded\" et écrit les arêtes \"noded\" dans une nouvelle table."
-
-# 3461fdeb834f4294ae2b188234db4eff
-#: ../../../src/common/doc/functions/node_network.rst:40
-msgid "Description"
-msgstr "Description"
-
-# 422a0c6c90c04a46bec03a6510ec201f
-#: ../../../src/common/doc/functions/node_network.rst:42
-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 "Un problème commun associé avec des données SIG dans pgRouting est le fait que les données sont souvent non \"noded\" correctement. Cela créée des topologies invalides, qui résultent dans des routes incorrectes. "
-
-# 69294245f1c44993a75f749e3721222a
-#: ../../../src/common/doc/functions/node_network.rst:44
-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 ""
-
-# 2817b2a1050f4b5da0c9aac6f306ea5e
-#: ../../../src/common/doc/functions/node_network.rst:46
-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 ""
-
-# b6408b0103e84de6acf993a22a25e533
-#: ../../../src/common/doc/functions/node_network.rst:48
-msgid "Parameters"
-msgstr ""
-
-# 40ed2f0c80b64683aa3f8d42d20a77a2
-#: ../../../src/common/doc/functions/node_network.rst:50
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# 86c247b372114883b5f6d0949e51b3c8
-#: ../../../src/common/doc/functions/node_network.rst:51
-msgid "``float8`` tolerance for coincident points (in projection unit)dd"
-msgstr ""
-
-# 946d6ed96b2b4f7fac8bcc7ba4d8e68b
-#: ../../../src/common/doc/functions/node_network.rst:52
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr ""
-
-# ce2e7f47f3bb4b299dda0387123f0409
-#: ../../../src/common/doc/functions/node_network.rst:53
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# 74d00078e6354e09a4592cf7e3f9dbe8
-#: ../../../src/common/doc/functions/node_network.rst:54
-msgid "``text`` Suffix for the new table's. Default value is ``noded``."
-msgstr ""
-
-# bc28085240354b228628c4449f877afe
-#: ../../../src/common/doc/functions/node_network.rst:56
-msgid "The output table will have for ``edge_table_noded``"
-msgstr ""
-
-# df15f6d14415411b85a167c31717fb4e
-#: ../../../src/common/doc/functions/node_network.rst:58
-msgid "``bigint`` Unique identifier for the table"
-msgstr ""
-
-# 4acc7cf0acea40ac852585983687ef11
-#: ../../../src/common/doc/functions/node_network.rst:59
-msgid "``bigint`` Identifier of the edge in original table"
-msgstr ""
-
-# 99bb3c953a7243e1b8232bf4a387c7d7
-#: ../../../src/common/doc/functions/node_network.rst:60
-msgid "``integer`` Segment number of the original edge"
-msgstr ""
-
-# 36a3bdb3e58840f78502c1f388619d52
-#: ../../../src/common/doc/functions/node_network.rst:61
-msgid ""
-"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
-"function"
-msgstr ""
-
-# 05092b2ea62744f1910db90fe30ab152
-#: ../../../src/common/doc/functions/node_network.rst:62
-msgid ""
-"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
-"function"
-msgstr ""
-
-# c2b0caed0dd643e1991dd4e7f0f08e4c
-#: ../../../src/common/doc/functions/node_network.rst:63
-msgid "``geometry`` Geometry column of the noded network"
-msgstr ""
-
-# a1f34fff1602404db7f2c2344f99cad1
-#: ../../../src/common/doc/functions/node_network.rst:66
-msgid "History"
-msgstr "Histoire"
-
-# b92ecc8b6d9a4eaba9e0a30ce164fed0
-#: ../../../src/common/doc/functions/node_network.rst:67
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# cd2560788805450aa6ffb5ce84c8058e
-#: ../../../src/common/doc/functions/node_network.rst:71
-msgid "Example"
-msgstr "Exemple"
-
-# 7e9403e106bb4c0abdd7ed3d1b266079
-#: ../../../src/common/doc/functions/node_network.rst:73
-msgid "Let's create the topology for the data in :ref:`sampledata`"
-msgstr ""
-
-# 5c1a627f182d47efa30c1d4c830862ab
-#: ../../../src/common/doc/functions/node_network.rst:91
-msgid "Now we can analyze the network."
-msgstr ""
-
-# 3eb0c69215284a33ab1505fded4b5a1f
-#: ../../../src/common/doc/functions/node_network.rst:115
-msgid ""
-"The analysis tell us that the network has a gap and and an intersection. We "
-"try to fix the problem using:"
-msgstr ""
-
-# 8be31305870e491c92ad11d8f8d0a20a
-#: ../../../src/common/doc/functions/node_network.rst:137
-msgid ""
-"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
-"segmented"
-msgstr ""
-
-# 8a086446ed8d4b30bf07015ab46ea12d
-#: ../../../src/common/doc/functions/node_network.rst:167
-msgid "We can create the topology of the new network"
-msgstr ""
-
-# 8944601cf6e343c09dce0bf706960a8c
-#: ../../../src/common/doc/functions/node_network.rst:185
-msgid "Now let's analyze the new topology"
-msgstr ""
-
-# 8a596982abe141b4a1925e35e1db79a3
-#: ../../../src/common/doc/functions/node_network.rst:211
-msgid "Images"
-msgstr ""
-
-# 960ada27fdd34c3dbfb61f10e5feba5f
-#: ../../../src/common/doc/functions/node_network.rst:244
-msgid "Comparing the results"
-msgstr ""
-
-# 8bbf24ce7c7e42f5a20e2a8d89e04c36
-#: ../../../src/common/doc/functions/node_network.rst:246
-msgid "Comparing with the Analysis in the original edge_table, we see that."
-msgstr ""
-
-# a3503fcd45dd4095b55e814ab842c829
-#: ../../../src/common/doc/functions/node_network.rst:249
-msgid "Before"
-msgstr ""
-
-# dfb592f8bd4e4572bbda7700558b3e93
-#: ../../../src/common/doc/functions/node_network.rst:249
-msgid "After"
-msgstr ""
-
-# dde3349cc54e4b94afb37800f2a163f5
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "Table name"
-msgstr ""
-
-# f672bf7770e8488fbe5ea1fbd13d7ac9
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "edge_table"
-msgstr ""
-
-# fbe3a7f491d4488085062b1fb783b357
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "edge_table_noded"
-msgstr ""
-
-# adaa5d5eca664ecb9d20315adfd329b4
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "Fields"
-msgstr ""
-
-# ebcf10a104ba4d7eaae546ec13365142
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "All original fields"
-msgstr ""
-
-# be45b275890a4aa8a6d624b6f87774d0
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "Has only basic fields to do a topology analysis"
-msgstr ""
-
-# 92f3a885bad349d6b5f9ef2345cb905f
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Dead ends"
-msgstr ""
-
-# 40a53c9b632b40a6a81f9277c11765b1
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Edges with 1 dead end: 1,6,24"
-msgstr ""
-
-# 709cbda3addd4b32b9b267d9ceafdb4f
-#: ../../../src/common/doc/functions/node_network.rst:256
-msgid "Edges with 2 dead ends 17,18"
-msgstr ""
-
-# d0de891ebf004a148c2bcd4510d81064
-#: ../../../src/common/doc/functions/node_network.rst:258
-msgid ""
-"Edge 17's right node is a dead end because there is no other edge sharing "
-"that same node. (cnt=1)"
-msgstr ""
-
-# 57918afd2f0445cea564eba267fa8c37
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
-msgstr ""
-
-# ff6cb3034ea345c89df6d718108fd2bc
-#: ../../../src/common/doc/functions/node_network.rst:262
-msgid "Isolated segments"
-msgstr ""
-
-# b958862fe349475ca7c2b38bbb40663b
-#: ../../../src/common/doc/functions/node_network.rst:262
-msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
-msgstr ""
-
-# 8d0bda0399694c6d8677fa928bdab03c
-#: ../../../src/common/doc/functions/node_network.rst:263
-msgid "No Isolated segments"
-msgstr ""
-
-# ac2cf90e5b2a4e75bb94688d6e4ec553
-#: ../../../src/common/doc/functions/node_network.rst:263
-msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
-msgstr ""
-
-# 287c00afc68a4e869f912d7b2ddabefb
-#: ../../../src/common/doc/functions/node_network.rst:264
-msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
-msgstr ""
-
-# bab6a1bf5c10447caa298e9247f3bf2a
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid "Gaps"
-msgstr ""
-
-# c23ab3c2eff44ddf9ddb0bee4f90197a
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid ""
-"There is a gap between edge 17 and 14 because edge 14 is near to the right "
-"node of edge 17"
-msgstr ""
-
-# 89fabbc2722649c9adf098ea0f9dde1c
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid ""
-"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
-"tolerance value was taken in account"
-msgstr ""
-
-# c04f1c8028d846aeb593cd2389ee45da
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid "Intersections"
-msgstr ""
-
-# db3e94db58d0422bbfbdb83ba509d29e
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid "Edges 13 and 18 were intersecting"
-msgstr ""
-
-# 50736f49b59e4f7fa0c66f0e979d80bd
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid ""
-"Edges were segmented, So, now in the interection's point there is a node and"
-" the following edges share it: 13-1 13-2 18-1 18-2"
-msgstr ""
-
-# f39fa18acedb410fb827e37f226da00b
-#: ../../../src/common/doc/functions/node_network.rst:275
-msgid ""
-"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
-"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
-"with tho following steps:"
-msgstr ""
-
-# 40eb8df52b5649ddb2401cc0c9fe4e7c
-#: ../../../src/common/doc/functions/node_network.rst:277
-msgid ""
-"Add a column old_id into edge_table, this column is going to keep track the "
-"id of the original edge"
-msgstr ""
-
-# 91eb1db3098b4353be78c9aef064421e
-#: ../../../src/common/doc/functions/node_network.rst:278
-msgid ""
-"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
-msgstr ""
-
-# 2158163aaac748eca84fcd78a42e9b3a
-#: ../../../src/common/doc/functions/node_network.rst:291
-msgid "We recreate the topology:"
-msgstr ""
-
-# 03050935f9bb42a69dfe42e303e8f164
-#: ../../../src/common/doc/functions/node_network.rst:311
-msgid ""
-"To get the same analysis results as the topology of edge_table_noded, we do "
-"the following query:"
-msgstr ""
-
-# bcefb46820504921aa7a3260a988c26d
-#: ../../../src/common/doc/functions/node_network.rst:338
-msgid ""
-"To get the same analysis results as the original edge_table, we do the "
-"following query:"
-msgstr ""
-
-# 376c4a5e033d42b3ba4e3c3ec018f8e8
-#: ../../../src/common/doc/functions/node_network.rst:363
-msgid ""
-"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
-"is an under pass and there is also a street level juction, and the same "
-"happens with edges 17 and 13."
-msgstr ""
-
-# 26fbd57b79324bd08ef2c5ee3579831e
-#: ../../../src/common/doc/functions/node_network.rst:390
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 9df40faa94c64db5b2256f265be6e4d4
-#: ../../../src/common/doc/functions/node_network.rst:392
-msgid ""
-":ref:`topology` for an overview of a topology for routing algorithms. "
-":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
-":ref:`pgr_create_topology` to create a topology based on the geometry. "
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/point_to_id.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/point_to_id.po
deleted file mode 100644
index 94f0741..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/point_to_id.po
+++ /dev/null
@@ -1,105 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-24 11:12+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 81e0b58a4b464395b3661da85edfaa90
-#: ../../../src/common/doc/functions/point_to_id.rst:13
-msgid "pgr_pointToId - Inserts point into a vertices table"
-msgstr "pgr_pointToId - Insère un point dans un tableau de sommets"
-
-# 9bebf9f4ff2b43a39470ee284698fa33
-#: ../../../src/common/doc/functions/point_to_id.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 8fcf7e9e33b448b982f7111389a7e412
-#: ../../../src/common/doc/functions/point_to_id.rst:22
-msgid "``pgr_pointToId`` — Inserts a point into a temporary vertices table."
-msgstr "``pgr_pointToId`` — Insère un point dans un tableau temporaire de sommets a point"
-
-# 1ebe04b75e4444e2970f12bf667f07fa
-#: ../../../src/common/doc/functions/point_to_id.rst:26
-msgid ""
-"This function should not be used directly. Use :ref:`pgr_createTopology "
-"<pgr_create_topology>` instead."
-msgstr "Cette fonction ne devrait pas être utilisée directement. Utiliser :ref:`pgr_createTopology <pgr_create_topology>` à la place."
-
-# 8c3303cb3d73446795471f411d835691
-#: ../../../src/common/doc/functions/point_to_id.rst:30
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# e17d53fea1674ad692e9d65129c04e5d
-#: ../../../src/common/doc/functions/point_to_id.rst:32
-msgid ""
-"Inserts a point into a temporary vertices table, and returns an id of a new "
-"point or an existing point. Tolerance is the minimal distance between "
-"existing points and the new point to create a new point."
-msgstr "Insère un point dans un tableau temporaire de sommets, et retourne un id d'un nouveau point ou d'un point existant. La tolérance est la distance minimale entre les points existants et le nouveau point pour créer un nouveau point."
-
-# 4b067a809bbd4210baf154f274aab5f0
-#: ../../../src/common/doc/functions/point_to_id.rst:40
-msgid "Description"
-msgstr "Description"
-
-# de6b0b7b7ae44691a60a709a1245e12c
-#: ../../../src/common/doc/functions/point_to_id.rst:42
-msgid "``geometry`` of the existing point"
-msgstr "``geometry`` du point existant"
-
-# e05906cd2cd545eead6a6a277d441ea4
-#: ../../../src/common/doc/functions/point_to_id.rst:43
-msgid ""
-"``float8`` snapping tolerance of disconnected edges (in projection unit)"
-msgstr "Tolérance de fermeture ``float8`` des arêtes déconnectées (en unité de projection)"
-
-# 7eb52d95126d47efbf485a1397785c34
-#: ../../../src/common/doc/functions/point_to_id.rst:45
-msgid "Returns point id (``bigint``) of a new or existing point."
-msgstr "Retourne un id de point (``bigint``) d'un point nouveau ou existant."
-
-# 78ed162b771d42c1bdadb75ea1806c17
-#: ../../../src/common/doc/functions/point_to_id.rst:49
-msgid "History"
-msgstr "Histoire"
-
-# 932b962d76c14946b54db15e77b3c90d
-#: ../../../src/common/doc/functions/point_to_id.rst:50
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# c1b2ccd7df20427c88dcf1ebf4b06d82
-#: ../../../src/common/doc/functions/point_to_id.rst:54
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 4dafa239ff7648c2952a2d3ee70671bf
-#: ../../../src/common/doc/functions/point_to_id.rst:56
-msgid ":ref:`pgr_create_topology`"
-msgstr ":ref:`pgr_create_topology`"
-
-# 8100a50d0b5f4b0cab8d62645becc674
-#: ../../../src/common/doc/functions/point_to_id.rst:57
-msgid ":ref:`topology`"
-msgstr ":ref:`topology`"
-
-# 86ad35d9d3ce44a696b6dc61c466e04e
-#: ../../../src/common/doc/functions/point_to_id.rst:58
-msgid ":ref:`pgr_node_network`"
-msgstr ":ref:`pgr_node_network`"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/quote_ident.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/quote_ident.po
deleted file mode 100644
index 2a9b073..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/quote_ident.po
+++ /dev/null
@@ -1,90 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-22 18:09+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 59a19788e4ba478cb0d046fc07c08179
-#: ../../../src/common/doc/functions/quote_ident.rst:13
-msgid "pgr_quote_ident - Quote table name with Schema Component"
-msgstr "pgr_quote_ident - Nom de table entre guillemets avec composant de schéma"
-
-# 61a86f593d04476692b89157939b8a1e
-#: ../../../src/common/doc/functions/quote_ident.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 7ae4a51cc62143058b829f9317d4b282
-#: ../../../src/common/doc/functions/quote_ident.rst:22
-msgid ""
-"``pgr_quote_ident`` — Quote table name with or without schema component."
-msgstr "``pgr_quote_ident`` — Nom de table entre guillemets avec ou sans composant de schéma."
-
-# d09400822917498ab08038e0453f93a2
-#: ../../../src/common/doc/functions/quote_ident.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 02e534c6d94e4d7fa366eb30dfd82602
-#: ../../../src/common/doc/functions/quote_ident.rst:28
-msgid ""
-"Function to split a string on ``.`` characters and then quote the components"
-" as postgres identifiers and then join them back together with ``.`` "
-"characters. Multile ``.`` will get collapsed into a single ``.``, so "
-"``schema...table`` till get returned as ``schema.\"table\"`` and "
-"``Schema.table`` becomes ``\"Schema\".\"table\"``."
-msgstr "Fonction pour partager une chaîne de caractères sur les caractères ``.`` et ensuite mettre entre guillemets les composants comme les identifiants postgres et ensuite les joindre ensemble avec les caractères ``.``. Les multiples ``.`` seront fusionnés en un unique ``.``, ainsi ``schema...table`` sera retourné en ``schema.\"table\"`` et ``Schema.table`` devient ``\"Schema\".\"table\"``."
-
-# 70b63ad008b14b5cbd540f478c596e97
-#: ../../../src/common/doc/functions/quote_ident.rst:37
-msgid "Description"
-msgstr "Description"
-
-# 76375d16726e4e8a8c4e02b54bd4b33a
-#: ../../../src/common/doc/functions/quote_ident.rst:39
-msgid "``text`` table name with or without schema component"
-msgstr "Le nom de la table ``text`` avec ou sans composant de schéma"
-
-# d8548a7bfe3542b28f614894ba6f4b84
-#: ../../../src/common/doc/functions/quote_ident.rst:41
-msgid "Returns table name with or without schema as ``text``."
-msgstr "Retourne le nom de la table avec ou sans schéma comme "
-
-# ebc95d6ee53c42f29aa6a18a134d4d20
-#: ../../../src/common/doc/functions/quote_ident.rst:45
-msgid "History"
-msgstr "Histoire"
-
-# 6bea52def68e4f05ae56873b8d4f9d1c
-#: ../../../src/common/doc/functions/quote_ident.rst:46
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 21e9cb20b57e4b4681d4e04d5f083d2a
-#: ../../../src/common/doc/functions/quote_ident.rst:50
-msgid "Examples"
-msgstr "Exemples"
-
-# 5e3a344a21eb45bfba3e880ae3981a30
-#: ../../../src/common/doc/functions/quote_ident.rst:77
-msgid "See Also"
-msgstr "Voir aussi"
-
-# b4ee52cbb2b74bb59b22b1802748f96d
-#: ../../../src/common/doc/functions/quote_ident.rst:79
-msgid "[TBD]"
-msgstr "[À déterminer]"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/version.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/version.po
deleted file mode 100644
index b15cea6..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/version.po
+++ /dev/null
@@ -1,114 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-24 11:20+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# dbab41817c8a46459e8f33cf684a7afb
-#: ../../../src/common/doc/functions/version.rst:13
-msgid "pgr_version - Get version information"
-msgstr "pgr_version - Obtenir l'information de version"
-
-# 19cd8fb76f754d898f75659f97628007
-#: ../../../src/common/doc/functions/version.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 5531935ef2384b709c4f1d81ddcdf15c
-#: ../../../src/common/doc/functions/version.rst:22
-msgid "``pgr_version`` — Query for pgRouting version information."
-msgstr "``pgr_version`` — Requête pour l'information de version de pgRouting."
-
-# 52175fb13b944970989d3ef4a23a7b66
-#: ../../../src/common/doc/functions/version.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 14783f07374f4ccdaa53515b95c17943
-#: ../../../src/common/doc/functions/version.rst:28
-msgid "Returns a table with pgRouting version information."
-msgstr "Retourne un tableau avec l'information de version pgRouting."
-
-# 6d5995ab278d476d80f54ab15b8af686
-#: ../../../src/common/doc/functions/version.rst:36
-msgid "Description"
-msgstr "Description"
-
-# b4baa0103a55431abaa586f16230af8c
-#: ../../../src/common/doc/functions/version.rst:38
-msgid "Returns a table with:"
-msgstr "Retourne un tableau avec :"
-
-# 7d8a75cf72b840b39e0eea6140a5839d
-#: ../../../src/common/doc/functions/version.rst:40
-msgid "``varchar`` pgRouting version"
-msgstr "``varchar`` version de pgRouting"
-
-# 2af5168bce0a4b03bf2b097d3099c850
-#: ../../../src/common/doc/functions/version.rst:41
-msgid "``varchar`` Git tag of pgRouting build"
-msgstr "``varchar`` étiquette Git du build pgRouting"
-
-# b4444b51e41549b399751bcba194a8a8
-#: ../../../src/common/doc/functions/version.rst:42
-msgid "``varchar`` Git hash of pgRouting build"
-msgstr "``varchar`` hash Git du build "
-
-# 6737b5df55e94bb185f64d0de3389f3e
-#: ../../../src/common/doc/functions/version.rst:43
-msgid "``varchar`` Git branch of pgRouting build"
-msgstr "``varchar`` branche Git du build pgRouting"
-
-# e5b735559b2949b09899e982d6f2ecf3
-#: ../../../src/common/doc/functions/version.rst:44
-msgid "``varchar`` Boost version"
-msgstr "``varchar`` version Boost"
-
-# 9042ea468aba4c4490b7124bbf14aacb
-#: ../../../src/common/doc/functions/version.rst:48
-msgid "History"
-msgstr "Histoire"
-
-# 3829660b5485491083028df2cb267d03
-#: ../../../src/common/doc/functions/version.rst:49
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 8638cdf8594940cbad096c9ac3d261ad
-#: ../../../src/common/doc/functions/version.rst:53
-msgid "Examples"
-msgstr "Exemples"
-
-# d80877f2810741ada5737305d484de11
-#: ../../../src/common/doc/functions/version.rst:55
-msgid "Query for full version string"
-msgstr "Requête pour la version string complète "
-
-# 2ff90cee91e644fab554650cc24bd3bf
-#: ../../../src/common/doc/functions/version.rst:67
-msgid "Query for ``version`` and ``boost`` attribute"
-msgstr "Requête pour les attributs ``version`` et ``boost``"
-
-# 6c3a1c332dc54ea2a01d81c5f5f9dcc1
-#: ../../../src/common/doc/functions/version.rst:80
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 1eeb4f68d3c342dbbadade6c52b87baf
-#: ../../../src/common/doc/functions/version.rst:82
-msgid ":ref:`pgr_versionless`"
-msgstr ":ref:`pgr_versionless`"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/versionless.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/versionless.po
deleted file mode 100644
index 2ee0a0f..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/functions/versionless.po
+++ /dev/null
@@ -1,86 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-22 18:02+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# f15b37fde8e64b508893630a0291dc6a
-#: ../../../src/common/doc/functions/versionless.rst:13
-msgid "pgr_versionless - Compare version numbers"
-msgstr "pgr_versionless - Comparer les numéros de version"
-
-# cd0dcc3f3489468ab55c89598715d895
-#: ../../../src/common/doc/functions/versionless.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# e2f0eb00eca142c8bc7d71b317604c7e
-#: ../../../src/common/doc/functions/versionless.rst:22
-msgid "``pgr_version`` — Compare two version numbers and return if smaller."
-msgstr "``pgr_version`` — Comparer deux numéros de version et retourner si plus petit."
-
-# d85cf15bf8894e158945855624a422f5
-#: ../../../src/common/doc/functions/versionless.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# ed2cb6f5c03645b3ab2a296d062c1eb9
-#: ../../../src/common/doc/functions/versionless.rst:28
-msgid ""
-"Returns ``true`` if the first version number is smaller than the second "
-"version number. Otherwise returns ``false``."
-msgstr "Retourne ``true`` si le premier numéro de version est plus petit que le second numéro de version. Sinon retourne ``false``."
-
-# a11f675500e140ae997cdb4f167d2da4
-#: ../../../src/common/doc/functions/versionless.rst:36
-msgid "Description"
-msgstr "Description"
-
-# 7d1ac8fa4fce4362965d8587a3cd7099
-#: ../../../src/common/doc/functions/versionless.rst:38
-msgid "``text`` first version number"
-msgstr "``text`` premier numéro de version"
-
-# 1d8a5a36a0fa4da19892193a11578a08
-#: ../../../src/common/doc/functions/versionless.rst:39
-msgid "``text`` second version number"
-msgstr "``text`` deuxième numéro de version"
-
-# a32770a22cf849cb96bd78825f332825
-#: ../../../src/common/doc/functions/versionless.rst:43
-msgid "History"
-msgstr "Histoire"
-
-# 14ef379da17a48389cb627817c173253
-#: ../../../src/common/doc/functions/versionless.rst:44
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 7a3d2290bca342b79b4105e7aee330b0
-#: ../../../src/common/doc/functions/versionless.rst:48
-msgid "Examples"
-msgstr "Exemples"
-
-# ca2f13a6ce4444258be7f46d40c8bd2a
-#: ../../../src/common/doc/functions/versionless.rst:61
-msgid "See Also"
-msgstr "Voir aussi"
-
-# a621baf581ff4ba8b4b03d3481d5a660
-#: ../../../src/common/doc/functions/versionless.rst:63
-msgid ":ref:`pgr_version`"
-msgstr ":ref:`pgr_version`"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/index.po
deleted file mode 100644
index 86f6479..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/index.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-22 17:40+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 78df021b36a0428cab8a950fb0bda859
-#: ../../../src/common/doc/index.rst:13
-msgid "Common Functions"
-msgstr "Fonctions communes"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/legacy.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/legacy.po
deleted file mode 100644
index 7029674..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/legacy.po
+++ /dev/null
@@ -1,67 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-22 18:00+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 7e98fba52c6f402c811f8c50dd811f39
-#: ../../../src/common/doc/legacy.rst:13
-msgid "Legacy Functions"
-msgstr "Fonctions antérieures"
-
-# 18b051582e6742be8a3737391d4676ad
-#: ../../../src/common/doc/legacy.rst:15
-msgid ""
-"pgRouting 2.0 release has total restructured the function naming and "
-"obsoleted many of the functions that were available in the 1.x releases. "
-"While we realize that this may inconvenience our existing users, we felt "
-"this was needed for the long term viability of the project to be more "
-"response to our users and to be able to add new functionality and test "
-"existing functionality."
-msgstr "La sortie de pgRouting 2.0 a complètement restructuré le nommage des fonctions et rendu obsolète nombre de fonctions qui étaient disponibles dans les versions 1.x. Même si nous réalisons que cela peut être gênant pour nos utilisateurs actuels, nous considérons que cela est nécessaire pour la viabilité du projet sur le long terme pour être plus une solution à nos utilisateurs et d'être en mesure d'ajouter de nouvelles fonctionnalités et tester les fonctionnalités existantes."
-
-# cf6d9479ec0b4eb6b0607f3302df5dca
-#: ../../../src/common/doc/legacy.rst:17
-msgid ""
-"We have made a minimal effort to save most of these function and distribute "
-"with the release in a file ``pgrouting_legacy.sql`` that is not part of the "
-"pgrouting extension and is not supported. If you can use these functions "
-"that is great. We have not tested any of these functions so if you find "
-"issues and want to post a pull request or a patch to help other users that "
-"is fine, but it is likely this file will be removed in a future release and "
-"we strongly recommend that you convert your existing code to use the new "
-"documented and supported functions."
-msgstr "Nous avons fait un effort minimum pour sauver la plupart de ces fonctions et les distribuer avec la version dans un fichier ``pgrouting_legacy.sql`` qui n'est pas une partie de l'extension pgrouting et n'est pas supportée. Si vous pouvez utiliser ces fonctions, c'est bien. Nous n'avons pas testé toutes ces fonctions donc si vous trouvez des problèmes et voulez poster une requête ou un patch pour aider les autres utilisateurs c'est très bien, mais il est probable que ce fichier so [...]
-
-# 82da52e7fec44c24956e90636a8a9355
-#: ../../../src/common/doc/legacy.rst:19
-msgid ""
-"The follow is a list of TYPEs, CASTs and FUNCTION included in the "
-"``pgrouting_legacy.sql`` file. The list is provide as a convenience but "
-"these functions are deprecated, not supported, and probably will need some "
-"changes to get them to work."
-msgstr "La liste suivant est une liste des TYPEs, CASTs et FUNCTION inclus dans le fichier ``pgrouting_legacy.sql``. La liste est fournie pour commodité mais ces fonctions sont déconseillées, non supportées, et probablement ont besoin de certaines modifications pour fonctionner."
-
-# 7ae0da52fff04aaaaec8fd9b91d3b7b0
-#: ../../../src/common/doc/legacy.rst:23
-msgid "TYPEs & CASTs"
-msgstr "TYPEs & CASTs"
-
-# 8e73926e03514dff813a00fbf7d202e0
-#: ../../../src/common/doc/legacy.rst:34
-msgid "FUNCTIONs"
-msgstr "FUNCTIONs"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/types.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/types.po
deleted file mode 100644
index ee8ab59..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/types.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-22 17:40+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# a647839f49f94a9997479367dc35d13f
-#: ../../../src/common/doc/types.rst:13
-msgid "Custom Types"
-msgstr "Types personnalisés"
-
-# f00f6611879f4afd961586e955284a41
-#: ../../../src/common/doc/types.rst:15
-msgid ""
-"The following are commonly used data types for some of the pgRouting "
-"functions."
-msgstr "Les types de données qui suivent sont communément utilisés dans certaines fonctions pgRouting."
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/types/cost_result.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/types/cost_result.po
deleted file mode 100644
index 05b03aa..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/types/cost_result.po
+++ /dev/null
@@ -1,115 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 575fa6fd8a1842c68aba9825683b178d
-#: ../../../src/common/doc/types/cost_result.rst:13
-msgid "pgr_costResult[]"
-msgstr ""
-
-# 3b55f2f3cdc24995bd590e235062c389
-# 1d4bd884218342d6a7ca7ae79998c3a0
-#: ../../../src/common/doc/types/cost_result.rst:20
-#: ../../../src/common/doc/types/cost_result.rst:54
-msgid "Name"
-msgstr "Nom"
-
-# 691ba9180a9f4854922720a03e1db3e0
-#: ../../../src/common/doc/types/cost_result.rst:22
-msgid ""
-"``pgr_costResult[]`` — A set of records to describe a path result with cost "
-"attribute."
-msgstr "``pgr_costResult[]`` — Un ensemble objets pour décrire un résultat de chemin avec un attribut coût."
-
-# 4bc0f98e83fc482daf119d02f3ab4386
-# b80ec90ac4244e82a1aa8f7e58b78921
-#: ../../../src/common/doc/types/cost_result.rst:26
-#: ../../../src/common/doc/types/cost_result.rst:60
-msgid "Description"
-msgstr "Description"
-
-# 023a9b6d62474dbdbb4d587b192099c4
-# 8e1c61381d6f47909ea0830da8a4740c
-#: ../../../src/common/doc/types/cost_result.rst:38
-#: ../../../src/common/doc/types/cost_result.rst:73
-msgid "sequential ID indicating the path order"
-msgstr "séquence ID indiquant l'ordre du chemin"
-
-# 98a23fe6530d43418558cdd8be417a26
-# 8c3701ae807d4738b8bbe72260f4c476
-#: ../../../src/common/doc/types/cost_result.rst:39
-#: ../../../src/common/doc/types/cost_result.rst:75
-msgid "generic name, to be specified by the function, typically the node id"
-msgstr "nom générique, à être spécifié par la fonction, typiquement l'id du noeud"
-
-# f4abd64c5dea4cda97490766f42a395c
-# 1be5c24bdc684ed1a182e9e2b0ab2343
-#: ../../../src/common/doc/types/cost_result.rst:40
-#: ../../../src/common/doc/types/cost_result.rst:76
-msgid "generic name, to be specified by the function, typically the edge id"
-msgstr "nom générique, à être spécifié par la fonction, typiquement l'id de l'arête"
-
-# 0b4a362ff97d481cafd2c0328ad1f715
-# 8e11a66126844a1682d4e4c84166794d
-#: ../../../src/common/doc/types/cost_result.rst:41
-#: ../../../src/common/doc/types/cost_result.rst:77
-msgid "cost attribute"
-msgstr "attribut coût"
-
-# 7e74e200db1b40e1a5231037b2e9b993
-#: ../../../src/common/doc/types/cost_result.rst:47
-msgid "pgr_costResult3[] - Multiple Path Results with Cost"
-msgstr "pgr_costResult3[] - Résultats du chemin multiple avec coût"
-
-# 307f0248b6c54a71bfc205bb2270b5ce
-#: ../../../src/common/doc/types/cost_result.rst:56
-msgid ""
-"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
-" attribute."
-msgstr "``pgr_costResult3[]`` — Un ensemble d'objets pour décrire un résultat de chemin avec un attribut coût."
-
-# 13465c99a9fb49ebab1d1852e6c61aab
-#: ../../../src/common/doc/types/cost_result.rst:74
-msgid "generic name, to be specified by the function, typically the path id"
-msgstr "nom générique, à être spécifié par la fonction, typiquement l'id du chemin"
-
-# ac46c731c85d4d358a763bc1268ef510
-#: ../../../src/common/doc/types/cost_result.rst:81
-msgid "History"
-msgstr "Histoire"
-
-# 6bc9329d908f474bbcd380272dae671d
-#: ../../../src/common/doc/types/cost_result.rst:82
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 7e5f0c1b76c349ce940c19b2312cc2ec
-#: ../../../src/common/doc/types/cost_result.rst:83
-msgid "Replaces ``path_result``"
-msgstr "Remplace ``path_result``"
-
-# 28df9e1fa19b49f9bb57710715c52fcb
-#: ../../../src/common/doc/types/cost_result.rst:87
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 21432e8842c1490ba3a7825f4b4e57bb
-#: ../../../src/common/doc/types/cost_result.rst:89
-msgid ":ref:`introduction`"
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/types/geom_result.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/types/geom_result.po
deleted file mode 100644
index 80ecb42..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/types/geom_result.po
+++ /dev/null
@@ -1,83 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# baeae55a13de4766b42a9f43c6f8caaf
-#: ../../../src/common/doc/types/geom_result.rst:13
-msgid "pgr_geomResult[]"
-msgstr ""
-
-# 4fc9eadff47c4a24baa096c8c667c469
-#: ../../../src/common/doc/types/geom_result.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 03beb686e4ec49e08cd6f1f0f5e03339
-#: ../../../src/common/doc/types/geom_result.rst:22
-msgid ""
-"``pgr_geomResult[]`` — A set of records to describe a path result with "
-"geometry attribute."
-msgstr "``pgr_geomResult[]`` — Un ensemble d'enregistrements pour décrire un résultat de chemin avec un attribut géométrie."
-
-# fd9c91caacdf4a2fb1c186c45e1d5525
-#: ../../../src/common/doc/types/geom_result.rst:26
-msgid "Description"
-msgstr "Description"
-
-# c00f6b668c744c7d822d2d2155e76b7a
-#: ../../../src/common/doc/types/geom_result.rst:38
-msgid "sequential ID indicating the path order"
-msgstr "séquence ID indiquant l'ordre du chemin"
-
-# 5782feff61f84fd4b3130a80b1abd7a9
-# 69c0e9623b4d41669a2601517d1563d2
-#: ../../../src/common/doc/types/geom_result.rst:39
-#: ../../../src/common/doc/types/geom_result.rst:40
-msgid "generic name, to be specified by the function"
-msgstr "nom générique, à être spécifié par la fonction"
-
-# c837b15d4460475996b2f7bac8b14076
-#: ../../../src/common/doc/types/geom_result.rst:41
-msgid "geometry attribute"
-msgstr "attribut de géométrie"
-
-# cf5503504b26427b800efddbc1098b64
-#: ../../../src/common/doc/types/geom_result.rst:45
-msgid "History"
-msgstr "Histoire"
-
-# 4e474c2cf69748c680853e0505ce4773
-#: ../../../src/common/doc/types/geom_result.rst:46
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# f4d42016a50f43438838421dfb361835
-#: ../../../src/common/doc/types/geom_result.rst:47
-msgid "Replaces ``geoms``"
-msgstr "Remplace ``geoms``"
-
-# 0075486d62f84298b41797b5789d377a
-#: ../../../src/common/doc/types/geom_result.rst:51
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 5a190ec8601a4a919a058395614d7db5
-#: ../../../src/common/doc/types/geom_result.rst:53
-msgid ":ref:`introduction`"
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/types/index.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/types/index.po
deleted file mode 100644
index 18816ef..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/types/index.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 22:34\n"
-"PO-Revision-Date: 2013-09-24 03:35+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 31af4730c6e74131952f077a8cec876f
-#: ../../../src/common/doc/types/index.rst:13
-msgid "pgRouting Data Types"
-msgstr ""
-
-# da2f6a8846b5476ea16852a5dc229cc4
-#: ../../../src/common/doc/types/index.rst:15
-msgid ""
-"The following are commonly used data types for some of the pgRouting "
-"functions."
-msgstr "Les types de données qui suivent sont communément utilisés dans certaines fonctions pgRouting."
-
-# a9b85e2084f8478fa35c1379a650108b
-#: ../../../src/common/doc/types/index.rst:17
-msgid ""
-":ref:`type_cost_result` - A set of records to describe a path result with "
-"cost attribute."
-msgstr ""
-
-# b982ceede0fd48afa63a086c6978fd2e
-#: ../../../src/common/doc/types/index.rst:18
-msgid ""
-":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe "
-"a path result with cost attribute."
-msgstr ""
-
-# 913c41ce7bb44b80869c181df3560f3d
-#: ../../../src/common/doc/types/index.rst:19
-msgid ""
-":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a "
-"path result with geometry attribute."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/end_point.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/end_point.po
deleted file mode 100644
index aa496e8..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/end_point.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 608ee0c4d0644bdba6e3dc233e2143a7
-#: ../../../src/common/doc/utilities/end_point.rst:13
-msgid "pgr_endPoint"
-msgstr ""
-
-# 8518d0c13dcc4cb9b4a6eb5bd83e8d6e
-#: ../../../src/common/doc/utilities/end_point.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 3660b4422cfa4aaea41cf4b4e91164ee
-#: ../../../src/common/doc/utilities/end_point.rst:22
-msgid ""
-"``pgr_endPoint`` — Returns an end point of a (multi)linestring geometry."
-msgstr ""
-
-# 549e2d553af74e0bba5a2833eafa7983
-#: ../../../src/common/doc/utilities/end_point.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-# d2cdf35b795f4fcfbfc9c84a2c36387b
-#: ../../../src/common/doc/utilities/end_point.rst:28
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 180a778d767b496986ed060d48f0de04
-# 14f173f6f91f488b940887c452049824
-#: ../../../src/common/doc/utilities/end_point.rst:30
-#: ../../../src/common/doc/utilities/end_point.rst:44
-msgid ""
-"Returns the geometry of the end point of the first LINESTRING of ``geom``."
-msgstr ""
-
-# c8cfaed54e00467bba188637f3d25e04
-#: ../../../src/common/doc/utilities/end_point.rst:38
-msgid "Description"
-msgstr "Description"
-
-# b7a5d14354644a79aaa532e44543b0f1
-#: ../../../src/common/doc/utilities/end_point.rst:41
-msgid "Parameters"
-msgstr ""
-
-# 01b0d917d9534f74885248e0be35ca6d
-#: ../../../src/common/doc/utilities/end_point.rst:42
-msgid "``geometry`` Geometry of a MULTILINESTRING or LINESTRING."
-msgstr ""
-
-# a1951e42b2164de2b73d7ecde1bc5252
-#: ../../../src/common/doc/utilities/end_point.rst:49
-msgid "History"
-msgstr "Histoire"
-
-# fd2421f2ca2945c4ad59395a0fa9cb90
-#: ../../../src/common/doc/utilities/end_point.rst:50
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 031cd30124a9491e80778dce1c6d77ab
-#: ../../../src/common/doc/utilities/end_point.rst:55
-msgid "See Also"
-msgstr "Voir aussi"
-
-# f17f7b08a35d44098381d1c280756f49
-#: ../../../src/common/doc/utilities/end_point.rst:57
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 68b294268f37462fb09eb605267d0686
-#: ../../../src/common/doc/utilities/end_point.rst:58
-msgid ":ref:`pgr_start_point` to get the start point of a (multi)linestring."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/get_column_name.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/get_column_name.po
deleted file mode 100644
index 1981a7d..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/get_column_name.po
+++ /dev/null
@@ -1,140 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# f62e871185dd40c2a9e8b7cec3ea97b9
-#: ../../../src/common/doc/utilities/get_column_name.rst:13
-msgid "pgr_getColumnName"
-msgstr ""
-
-# 0d4e05a54bf944d2a712bcee9d7897c4
-#: ../../../src/common/doc/utilities/get_column_name.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# c1e5f5dde2804946bee1804968cb4efc
-#: ../../../src/common/doc/utilities/get_column_name.rst:22
-msgid ""
-"``pgr_getColumnName`` — Retrieves the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ""
-
-# 89a0f81382ca4dd4807320cd56be21bb
-#: ../../../src/common/doc/utilities/get_column_name.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# a6025211521149deb893b8e059385c6b
-#: ../../../src/common/doc/utilities/get_column_name.rst:27
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# e6dc3534289949caa3eebca95dbe364e
-#: ../../../src/common/doc/utilities/get_column_name.rst:29
-msgid "Returns a ``text`` contining the registered name of the column."
-msgstr ""
-
-# ef6704e3345e4be4a51fd144fbfc5d82
-#: ../../../src/common/doc/utilities/get_column_name.rst:37
-msgid "Description"
-msgstr "Description"
-
-# de7acd82e1244d8ba20da3bae0d95f22
-#: ../../../src/common/doc/utilities/get_column_name.rst:39
-msgid "Parameters"
-msgstr ""
-
-# 0b9f663d5b0e4f18a4bda0b996e55470
-#: ../../../src/common/doc/utilities/get_column_name.rst:41
-msgid "``text`` table name with or without schema component."
-msgstr ""
-
-# 34e350e22e5a495aa831ca55d080899a
-#: ../../../src/common/doc/utilities/get_column_name.rst:42
-msgid "``text`` column name to be retrived."
-msgstr ""
-
-# e495d55a75424870ba29867eb248cf4d
-#: ../../../src/common/doc/utilities/get_column_name.rst:44
-msgid "Returns"
-msgstr ""
-
-# c1394725601143b081216fe27794fbe6
-#: ../../../src/common/doc/utilities/get_column_name.rst:46
-msgid "``text`` containing the registered name of the column."
-msgstr ""
-
-# ec0c3eb922f44a818f1724026f43c7da
-#: ../../../src/common/doc/utilities/get_column_name.rst:47
-msgid "``NULL`` when :"
-msgstr ""
-
-# d3cb598bdcdf4349837225c6e9efa756
-#: ../../../src/common/doc/utilities/get_column_name.rst:49
-msgid "The table “tab” is not found or"
-msgstr ""
-
-# 6d27bb1e405343a893db971fe1cee8b7
-#: ../../../src/common/doc/utilities/get_column_name.rst:50
-msgid ""
-"Column “col” is not found in table “tab” in the postgres administration "
-"tables."
-msgstr ""
-
-# f56b94dfc7574beba7ee2b42199e9c27
-#: ../../../src/common/doc/utilities/get_column_name.rst:53
-msgid "History"
-msgstr "Histoire"
-
-# 57eede78e2024b059d7e09968747a720
-#: ../../../src/common/doc/utilities/get_column_name.rst:54
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# efbc409d37be4e30a8edf913a4d89664
-#: ../../../src/common/doc/utilities/get_column_name.rst:58
-msgid "Examples"
-msgstr "Exemples"
-
-# 741d466c28fb47feb64d7ef7593275e7
-#: ../../../src/common/doc/utilities/get_column_name.rst:76
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# acb3053630ab458d93853aa31aad9ade
-#: ../../../src/common/doc/utilities/get_column_name.rst:80
-msgid "See Also"
-msgstr "Voir aussi"
-
-# e54ecee9b6744650b79cb07b0c0274dd
-#: ../../../src/common/doc/utilities/get_column_name.rst:82
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 9143b02cdd264a818a9edda19a0e7ce7
-#: ../../../src/common/doc/utilities/get_column_name.rst:83
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column."
-msgstr ""
-
-# 11630fb324eb4a80bdfffb972707478d
-#: ../../../src/common/doc/utilities/get_column_name.rst:84
-msgid ""
-":ref:`pgr_get_table_name` to retrieve the name of the table as is stored in "
-"the postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/get_table_name.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/get_table_name.po
deleted file mode 100644
index 302ca87..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/get_table_name.po
+++ /dev/null
@@ -1,151 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 95f0c2d0bb88448c8b72400e83c9f6f4
-#: ../../../src/common/doc/utilities/get_table_name.rst:13
-msgid "pgr_getTableName"
-msgstr ""
-
-# 68a49ae29d0e4036bda025f169e4f3f7
-#: ../../../src/common/doc/utilities/get_table_name.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 8f9480f595c9426f945620d8b5977b86
-#: ../../../src/common/doc/utilities/get_table_name.rst:22
-msgid ""
-"``pgr_getTableName`` — Retrieves the name of the column as is stored in the "
-"postgres administration tables."
-msgstr ""
-
-# c06c3bd3649a4e27af6f710e189ea071
-#: ../../../src/common/doc/utilities/get_table_name.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# 3285b01b587a4aac94ab9ee03a474ef7
-#: ../../../src/common/doc/utilities/get_table_name.rst:27
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# ecd7065df5e047ef8415f13acf653201
-#: ../../../src/common/doc/utilities/get_table_name.rst:29
-msgid ""
-"Returns a record containing the registered names of the table and of the "
-"schema it belongs to."
-msgstr ""
-
-# 9912cc30113340efa3e5e3ac408d3a3c
-#: ../../../src/common/doc/utilities/get_table_name.rst:37
-msgid "Description"
-msgstr "Description"
-
-# 787a57d13f8a48a289b545e5c5fc50d5
-#: ../../../src/common/doc/utilities/get_table_name.rst:39
-msgid "Parameters"
-msgstr ""
-
-# 3c523e72ddd74a10b3defc135e0a1fa1
-#: ../../../src/common/doc/utilities/get_table_name.rst:41
-msgid "``text`` table name with or without schema component."
-msgstr ""
-
-# bc51a86638e44b1b8d435a7fcec971e1
-#: ../../../src/common/doc/utilities/get_table_name.rst:43
-msgid "Returns"
-msgstr ""
-
-# a3da192f153341e484e7a1c973e77570
-#: ../../../src/common/doc/utilities/get_table_name.rst:47
-msgid "``text`` containing the registered name of the schema of table \"tab\"."
-msgstr ""
-
-# 77471087a83049e4924411216422cd8f
-#: ../../../src/common/doc/utilities/get_table_name.rst:49
-msgid "when the schema was not provided in \"tab\" the current schema is used."
-msgstr ""
-
-# f253b42e28a3413abcbeebd5a25fbb53
-# a25f490ebce344728e53d37057ded897
-#: ../../../src/common/doc/utilities/get_table_name.rst:51
-#: ../../../src/common/doc/utilities/get_table_name.rst:58
-msgid "``NULL`` when :"
-msgstr ""
-
-# ab062cff517a43b6b5a40e1090073265
-# 49a4ab8abced47adaf11ea7b321f06b9
-#: ../../../src/common/doc/utilities/get_table_name.rst:53
-#: ../../../src/common/doc/utilities/get_table_name.rst:60
-msgid "The schema is not found in the postgres administration tables."
-msgstr ""
-
-# 19d2a93e6d45419d89974c286d1347f3
-#: ../../../src/common/doc/utilities/get_table_name.rst:57
-msgid "``text`` containing the registered name of the table \"tab\"."
-msgstr ""
-
-# 7c7d80132bbc4693a79fbb1bb32a804d
-#: ../../../src/common/doc/utilities/get_table_name.rst:61
-msgid ""
-"The table \"tab\" is not registered under the schema ``sname`` in the "
-"postgres administration tables"
-msgstr ""
-
-# fe048e6d68984dfb9e8d91f72f99f65a
-#: ../../../src/common/doc/utilities/get_table_name.rst:65
-msgid "History"
-msgstr "Histoire"
-
-# 0ac3887a0f0642ca8bf6c6fa12f497bb
-#: ../../../src/common/doc/utilities/get_table_name.rst:66
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# fbd75b0146ff4f9595156794c4ebd6fd
-#: ../../../src/common/doc/utilities/get_table_name.rst:70
-msgid "Examples"
-msgstr "Exemples"
-
-# 3792394a3a344c4493db40c2d04b5e2d
-#: ../../../src/common/doc/utilities/get_table_name.rst:95
-msgid "The examples use the :ref:`sampledata` network."
-msgstr ""
-
-# 10229dc5fd6545bdb875c9885f090618
-#: ../../../src/common/doc/utilities/get_table_name.rst:99
-msgid "See Also"
-msgstr "Voir aussi"
-
-# c24e1b3593b44343b2e4c86e06b4cbb2
-#: ../../../src/common/doc/utilities/get_table_name.rst:101
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 830f93a843b145ebb35db5cf5de99e00
-#: ../../../src/common/doc/utilities/get_table_name.rst:102
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column."
-msgstr ""
-
-# e731438ed94a48a0b26ea5223b564393
-#: ../../../src/common/doc/utilities/get_table_name.rst:103
-msgid ""
-":ref:`pgr_get_table_name` to retrieve the name of the table as is stored in "
-"the postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po
deleted file mode 100644
index bd9b927..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po
+++ /dev/null
@@ -1,137 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# f6500f30614b461f90b682890f3c3192
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:13
-msgid "pgr_isColumnInTable"
-msgstr ""
-
-# 7a4ec9b1b3514801a079916c0000371b
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 90dd01a206e24dbf9f73f90924c0615b
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:22
-msgid "``pgr_isColumnInTable`` — Check if a column is in the table."
-msgstr ""
-
-# 0d927909521c4f638c543baff8ebd318
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# b52fa51d192444e0a61674ede982a3e5
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:27
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# ea409e6a176b489aa7f326229d178d13
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:29
-msgid "Returns ``true`` when the column “col” is in table “tab”."
-msgstr ""
-
-# f5b2b429515a474892b7bddaebd7fa87
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:37
-msgid "Description"
-msgstr "Description"
-
-# a513395f631244f18df21c3b85ea7820
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:39
-msgid "``text`` Table name with or without schema component."
-msgstr ""
-
-# df577648959b4e0daab9d343543d3501
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:40
-msgid "``text`` Column name to be checked for."
-msgstr ""
-
-# faa09fc52bc54a0f9fe811ff099aa562
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:42
-msgid "Returns:"
-msgstr ""
-
-# 67ed5e9b40764fa1be45f8936680f526
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:44
-msgid "``true`` when the column “col” is in table “tab”."
-msgstr ""
-
-# fc38c243b9154c03833b5c9acd63804e
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:45
-msgid "``false`` when:"
-msgstr ""
-
-# fb6952dd480644c78db65cfbc109f967
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:47
-msgid "The table \"tab\" is not found or"
-msgstr ""
-
-# e701055cfb574ccd800767d4d4555d02
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:48
-msgid "Column “col” is not found in table “tab”"
-msgstr ""
-
-# be793f469b524522a2331a60fb6d7bac
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:51
-msgid "History"
-msgstr "Histoire"
-
-# 03a9d21bed654a438312a5a6d45fcf17
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:52
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 1691f75cb0674d2d83b0bebe24105a6d
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:56
-msgid "Examples"
-msgstr "Exemples"
-
-# c8d317a25f554ec6b9af54b1f7ae6c26
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:76
-msgid "The example use the :ref:`sampledata` network."
-msgstr ""
-
-# 24c87607bf1b4b23bb01e403b16e856f
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:80
-msgid "See Also"
-msgstr "Voir aussi"
-
-# b3efbf8b34fd415bbfc31810cc19b9dc
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:82
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 53d890d3132e4c7d94e0675093e6c146
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:83
-msgid ":ref:`pgr_is_column_indexed` to check if the column is indexed."
-msgstr ""
-
-# 5324fa01310a4c509d7ce91c088865e9
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:84
-msgid ""
-":ref:`pgr_get_column_name` to get the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ""
-
-# d97c057248844396aaa96cacbfcbc034
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:85
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po
deleted file mode 100644
index f6c8149..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po
+++ /dev/null
@@ -1,144 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# d13f67c428de40999845a53a259a0896
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:13
-msgid "pgr_isColumnIndexed"
-msgstr ""
-
-# 8c9da63e8a0e4da4aa092b82eced03c0
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# cdfe958887b74d69a5d69a8c3b76f35d
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:22
-msgid "``pgr_isColumnIndexed`` — Check if a column in a table is indexed."
-msgstr "``pgr_isColumnIndexed`` — Vérifier si une colonne dans une table est indexée."
-
-# 16efc5cad4b0458aa30f27dcc834fb0b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# 1611a88987e54ab8a15606f82d4c6098
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:27
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 004725222faa47fd971e321be44816e6
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:29
-msgid "Returns ``true`` when the column “col” in table “tab” is indexed."
-msgstr ""
-
-# 3389fb7dd377428cbf442296f0032a6a
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:37
-msgid "Description"
-msgstr "Description"
-
-# cfb294e6535c4b0d91975ec3cb1c8985
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:39
-msgid "``text`` Table name with or without schema component."
-msgstr ""
-
-# 4cb8e78e50fb4ecbb15f141bb496040d
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:40
-msgid "``text`` Column name to be checked for."
-msgstr ""
-
-# a0f63aba19d0494b9cdcc5c7a61aebdb
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:42
-msgid "Returns:"
-msgstr ""
-
-# 66eed092853a47f9a7f69aa1fedbc666
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:44
-msgid "``true`` when the column “col” in table “tab” is indexed."
-msgstr ""
-
-# dbb567f94e994beaac90ea65cc8a324e
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:45
-msgid "``false`` when:"
-msgstr ""
-
-# f45a928140f24c299053e944f5550b7e
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:47
-msgid "The table \"tab\" is not found or"
-msgstr ""
-
-# c949dec2746e48459f93287f24a1334a
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:48
-msgid "Column “col” is not found in table “tab” or"
-msgstr ""
-
-# b2fd725d67df46b98d8ca3eddde9d1b5
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:49
-msgid "Column \"col\" in table \"tab\" is not indexed"
-msgstr ""
-
-# fe7b50380e1246599dd0b8abbac9a394
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:52
-msgid "History"
-msgstr "Histoire"
-
-# 2949ff82708f44db903c9e175d8fd484
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:53
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# c19a7c36df38472bb330eafac37c34d3
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:57
-msgid "Examples"
-msgstr "Exemples"
-
-# 9484e0bc1f1942da88f6261afd689f40
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:77
-msgid "The example use the :ref:`sampledata` network."
-msgstr ""
-
-# ba4b525f9ced43898aab4410c804208b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:81
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 76c91def69da43539042f05a15240e67
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:83
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 10267ea719b141b7a9e7712543121d34
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:84
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column "
-"in the table."
-msgstr ""
-
-# 4e5e6df51cf149cd9e79ef3459273a4b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:85
-msgid ""
-":ref:`pgr_get_column_name` to get the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ""
-
-# 2cda9c32c4ec4117914b3e51f125c1df
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:86
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/point_to_id.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/point_to_id.po
deleted file mode 100644
index beca42c..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/point_to_id.po
+++ /dev/null
@@ -1,144 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 94641dca24af4c0dba2fbeed97300d22
-#: ../../../src/common/doc/utilities/point_to_id.rst:13
-msgid "pgr_pointToId"
-msgstr ""
-
-# 56e635560a6d4492ae86100badf0e086
-#: ../../../src/common/doc/utilities/point_to_id.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 81cc9d306cd54f46b4d517216a806eb7
-#: ../../../src/common/doc/utilities/point_to_id.rst:22
-msgid ""
-"``pgr_pointToId`` — Inserts a point into a vertices table and returns the "
-"corresponig id."
-msgstr ""
-
-# f6b714528cf7426dbeb9245b9719427c
-#: ../../../src/common/doc/utilities/point_to_id.rst:26
-msgid ""
-"This function is intended for the developer's aid. Use "
-":ref:`pgr_createTopology <pgr_create_topology>` or "
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` instead."
-msgstr ""
-
-# ba51b8bd879447188b15521bc44768c2
-#: ../../../src/common/doc/utilities/point_to_id.rst:30
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 426a196654d64ba99aa86b9e3eb47996
-#: ../../../src/common/doc/utilities/point_to_id.rst:32
-msgid ""
-"This function returns the ``id`` of the row in the vertices table that "
-"corresponds to the ``point`` geometry"
-msgstr ""
-
-# ad82864ab2bc436bb940d9dbb4bb7e28
-#: ../../../src/common/doc/utilities/point_to_id.rst:40
-msgid "Description"
-msgstr "Description"
-
-# 6f0b7969c38c4b60a652b8c56e860cb5
-#: ../../../src/common/doc/utilities/point_to_id.rst:42
-msgid "``geometry`` \"POINT\" geometry to be inserted."
-msgstr ""
-
-# 972b42f5a56a456584ffe992d2c9f597
-#: ../../../src/common/doc/utilities/point_to_id.rst:43
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-# 8026350c7b7b4ab9bb8a4d01a5398e92
-#: ../../../src/common/doc/utilities/point_to_id.rst:44
-msgid "``text`` Vertices table name WITH schema included."
-msgstr ""
-
-# fdb31c3aac0442fd9a79fd2e3cec8567
-#: ../../../src/common/doc/utilities/point_to_id.rst:45
-msgid "``integer`` SRID of the geometry point."
-msgstr ""
-
-# 1cb7d86e4eb54c46b998f27b7d883269
-#: ../../../src/common/doc/utilities/point_to_id.rst:47
-msgid ""
-"This function returns the id of the row that corresponds to the ``point`` "
-"geometry"
-msgstr ""
-
-# 6444a2e3a1eb4ec1b9e456bd7d566ec3
-#: ../../../src/common/doc/utilities/point_to_id.rst:49
-msgid ""
-"When the ``point`` geometry already exists in the vertices table "
-"``vertname``, it returns the corresponing ``id``."
-msgstr ""
-
-# f348861666b446b8b94833b19fc43b3a
-#: ../../../src/common/doc/utilities/point_to_id.rst:50
-msgid ""
-"When the ``point`` geometry is not found in the vertices table ``vertname``,"
-" the funcion inserts the ``point`` and returns the corresponing ``id`` of "
-"the newly created vertex."
-msgstr ""
-
-# bbc93993a9494838bb777feb3c966b2b
-#: ../../../src/common/doc/utilities/point_to_id.rst:52
-msgid ""
-"The function do not perform any checking of the parameters. Any validation "
-"has to be done before calling this function."
-msgstr ""
-
-# feb893694fe44a30b39b6671d6603125
-#: ../../../src/common/doc/utilities/point_to_id.rst:55
-msgid "History"
-msgstr "Histoire"
-
-# ac4bb20cbeeb49e8a95d92ca52981979
-#: ../../../src/common/doc/utilities/point_to_id.rst:56
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# f159557b0fd44238a8114795dbd499e6
-#: ../../../src/common/doc/utilities/point_to_id.rst:60
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 44d7d6a102634aaab89b81a21117e3b4
-#: ../../../src/common/doc/utilities/point_to_id.rst:62
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 34d3f5b67bd04eef9a27bb0f9058f7a0
-#: ../../../src/common/doc/utilities/point_to_id.rst:63
-msgid ""
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create a topology "
-"based on the geometry."
-msgstr ""
-
-# 6efeb93fdd6f461b95ba6fa218148c75
-#: ../../../src/common/doc/utilities/point_to_id.rst:64
-msgid ""
-":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
-"on the geometry."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/quote_ident.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/quote_ident.po
deleted file mode 100644
index ac74e31..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/quote_ident.po
+++ /dev/null
@@ -1,135 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# ad4f702fd7ab40f587534a31a99d703a
-#: ../../../src/common/doc/utilities/quote_ident.rst:13
-msgid "pgr_quote_ident"
-msgstr ""
-
-# a05a481e84424fde848925bc9df67822
-#: ../../../src/common/doc/utilities/quote_ident.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 2c0d5a39de7d48a894991413895eeb1d
-#: ../../../src/common/doc/utilities/quote_ident.rst:22
-msgid ""
-"``pgr_quote_ident`` — Quotes the input text to be used as an identifier in "
-"an SQL statement string."
-msgstr ""
-
-# 81be5b43d83b4f259a8627fdbd918321
-#: ../../../src/common/doc/utilities/quote_ident.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-# 9a208d9638b343d49e208a250552bf58
-#: ../../../src/common/doc/utilities/quote_ident.rst:28
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 20357172c5b74450a1dd908f249e1c22
-#: ../../../src/common/doc/utilities/quote_ident.rst:30
-msgid ""
-"Returns the given identifier ``idname`` suitably quoted to be used as an "
-"identifier in an SQL statement string."
-msgstr ""
-
-# ec0d7e517b52424e83e0a39e700f6ded
-#: ../../../src/common/doc/utilities/quote_ident.rst:38
-msgid "Description"
-msgstr "Description"
-
-# 0333bd56b4d146478a759f9bec187900
-#: ../../../src/common/doc/utilities/quote_ident.rst:41
-msgid "Parameters"
-msgstr ""
-
-# 24fafacf2e084c8ebd35cc820529ddf1
-#: ../../../src/common/doc/utilities/quote_ident.rst:42
-msgid ""
-"``text`` Name of an SQL identifier. Can include ``.`` dot notation for "
-"schemas.table identifiers"
-msgstr ""
-
-# 43a32f6d513f42dda64a31f538a7cb0b
-#: ../../../src/common/doc/utilities/quote_ident.rst:44
-msgid ""
-"Returns the given string suitably quoted to be used as an identifier in an "
-"SQL statement string."
-msgstr ""
-
-# d4e0873a14da42f5b4ca3f89505e8335
-#: ../../../src/common/doc/utilities/quote_ident.rst:46
-msgid ""
-"When the identifier ``idname`` contains on or more ``.`` separators, each "
-"component is suitably quoted to be used in an SQL string."
-msgstr ""
-
-# 1842d74622194549bf87e0e37e8220c8
-#: ../../../src/common/doc/utilities/quote_ident.rst:50
-msgid "History"
-msgstr "Histoire"
-
-# 3e97c734ccfc46efaedb156bfd028772
-#: ../../../src/common/doc/utilities/quote_ident.rst:51
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 4c8ad273e78c414ca99c84a290acff83
-#: ../../../src/common/doc/utilities/quote_ident.rst:55
-msgid "Examples"
-msgstr "Exemples"
-
-# c27e93edd7144c1986103e042e5b991c
-#: ../../../src/common/doc/utilities/quote_ident.rst:57
-msgid "Everything is lower case so nothing needs to be quoted."
-msgstr ""
-
-# 275c25d761794895a7a9474bd1622943
-#: ../../../src/common/doc/utilities/quote_ident.rst:76
-msgid "The column is upper case so its double quoted."
-msgstr ""
-
-# 7fc7d47e83624683a58343f8b5935b6f
-#: ../../../src/common/doc/utilities/quote_ident.rst:95
-msgid "The schema name has a capital letter so its double quoted."
-msgstr ""
-
-# 68aa84ac853546419c541739eee038e6
-#: ../../../src/common/doc/utilities/quote_ident.rst:106
-msgid "Ignores extra ``.`` separators."
-msgstr ""
-
-# 13976da7e76249c1bbbc10fb34130c59
-#: ../../../src/common/doc/utilities/quote_ident.rst:118
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 9ca53a95db55462780e7fb68bba70aca
-#: ../../../src/common/doc/utilities/quote_ident.rst:120
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# fb4b95d8a6d8403497a36238ed980b58
-#: ../../../src/common/doc/utilities/quote_ident.rst:121
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/start_point.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/start_point.po
deleted file mode 100644
index 64e3ce5..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/start_point.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# a24de4d0526742168dd2c7673d357cfe
-#: ../../../src/common/doc/utilities/start_point.rst:13
-msgid "pgr_startPoint"
-msgstr ""
-
-# 2878d80121d3453794e0871f34873592
-#: ../../../src/common/doc/utilities/start_point.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# ef267d5bd4dc444b9db70d9f4079f505
-#: ../../../src/common/doc/utilities/start_point.rst:22
-msgid ""
-"``pgr_startPoint`` — Returns a start point of a (multi)linestring geometry."
-msgstr ""
-
-# 57c55f6c23fd4dc59ad7f25a4a4e6f90
-#: ../../../src/common/doc/utilities/start_point.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-# 7fb8df5ab251417bba38529aaefd457b
-#: ../../../src/common/doc/utilities/start_point.rst:28
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 7becd53f47734fbe99a71ba8adef0d07
-# 9345f683e56b40dcb259f1ef2ea5e240
-#: ../../../src/common/doc/utilities/start_point.rst:30
-#: ../../../src/common/doc/utilities/start_point.rst:44
-msgid ""
-"Returns the geometry of the start point of the first LINESTRING of ``geom``."
-msgstr ""
-
-# f2295bc1e9ef4b08884c65ec18de9744
-#: ../../../src/common/doc/utilities/start_point.rst:38
-msgid "Description"
-msgstr "Description"
-
-# fef77a15910b4557bb253c868468c67a
-#: ../../../src/common/doc/utilities/start_point.rst:41
-msgid "Parameters"
-msgstr ""
-
-# c938ded08b8743bf9eac1b5d064e0ed0
-#: ../../../src/common/doc/utilities/start_point.rst:42
-msgid "``geometry`` Geometry of a MULTILINESTRING or LINESTRING."
-msgstr ""
-
-# 364eba92da1046889b073b64c9827bdf
-#: ../../../src/common/doc/utilities/start_point.rst:49
-msgid "History"
-msgstr "Histoire"
-
-# 62c8d013ab68473c8adda6fbfaf564e9
-#: ../../../src/common/doc/utilities/start_point.rst:50
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 8e8a05a8da734bb5961b296230e53bcb
-#: ../../../src/common/doc/utilities/start_point.rst:55
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 6026c7e6914a49cab16a616dd0fb6bac
-#: ../../../src/common/doc/utilities/start_point.rst:57
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 5b0650667c4b470691f4647d5b73f783
-#: ../../../src/common/doc/utilities/start_point.rst:58
-msgid ":ref:`pgr_end_Point` to get the end point of a (multi)linestring."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/version.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/version.po
deleted file mode 100644
index 1f585a7..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/version.po
+++ /dev/null
@@ -1,113 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# cb10fa2694924ce19d909a3e1df513f1
-#: ../../../src/common/doc/utilities/version.rst:13
-msgid "pgr_version"
-msgstr ""
-
-# 135f514b10854445bd0cfa9f89f21f86
-#: ../../../src/common/doc/utilities/version.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# ee914323b4b6411ea5c157325bdfac90
-#: ../../../src/common/doc/utilities/version.rst:22
-msgid "``pgr_version`` — Query for pgRouting version information."
-msgstr "``pgr_version`` — Requête pour l'information de version de pgRouting."
-
-# 301b5989ecef437b858e054c95827d83
-#: ../../../src/common/doc/utilities/version.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 607aa236b6134901a0871ed5bf518253
-#: ../../../src/common/doc/utilities/version.rst:28
-msgid "Returns a table with pgRouting version information."
-msgstr "Retourne un tableau avec l'information de version pgRouting."
-
-# 6190754a1b934ee586562b0995c07bc0
-#: ../../../src/common/doc/utilities/version.rst:36
-msgid "Description"
-msgstr "Description"
-
-# b85aeaeb021647e59321f2b6c9953333
-#: ../../../src/common/doc/utilities/version.rst:38
-msgid "Returns a table with:"
-msgstr "Retourne un tableau avec :"
-
-# e5a458cace474e8babaaaff2837c160f
-#: ../../../src/common/doc/utilities/version.rst:40
-msgid "``varchar`` pgRouting version"
-msgstr "``varchar`` version de pgRouting"
-
-# 7f02654b7c3641b5a35c56c47ea63022
-#: ../../../src/common/doc/utilities/version.rst:41
-msgid "``varchar`` Git tag of pgRouting build"
-msgstr "``varchar`` étiquette Git du build pgRouting"
-
-# c50e77a54d3d4828a5ea0e89182d5f03
-#: ../../../src/common/doc/utilities/version.rst:42
-msgid "``varchar`` Git hash of pgRouting build"
-msgstr "``varchar`` hash Git du build "
-
-# ba32c01940164cfab6dec3df2cb565ed
-#: ../../../src/common/doc/utilities/version.rst:43
-msgid "``varchar`` Git branch of pgRouting build"
-msgstr "``varchar`` branche Git du build pgRouting"
-
-# 135e588dcbe144db9a806d3c5b75b88c
-#: ../../../src/common/doc/utilities/version.rst:44
-msgid "``varchar`` Boost version"
-msgstr "``varchar`` version Boost"
-
-# 7e0b5fe0384f43648b6ca7dcdd703fd6
-#: ../../../src/common/doc/utilities/version.rst:48
-msgid "History"
-msgstr "Histoire"
-
-# 3f8e572f137d472592f2abb0483e3153
-#: ../../../src/common/doc/utilities/version.rst:49
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# abdab1e6a00347269b027b2fedd31c15
-#: ../../../src/common/doc/utilities/version.rst:53
-msgid "Examples"
-msgstr "Exemples"
-
-# 86be3ecef9da4b22b39cfe8fc3848b92
-#: ../../../src/common/doc/utilities/version.rst:55
-msgid "Query for full version string"
-msgstr "Requête pour la version string complète "
-
-# 85c014398a004db5bb9cf5afa9515f32
-#: ../../../src/common/doc/utilities/version.rst:67
-msgid "Query for ``version`` and ``boost`` attribute"
-msgstr "Requête pour les attributs ``version`` et ``boost``"
-
-# e3b6b7e66a8e4b8698f253e26126b8af
-#: ../../../src/common/doc/utilities/version.rst:80
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 73744f59f3494c4e827095b7f6ca9503
-#: ../../../src/common/doc/utilities/version.rst:82
-msgid ":ref:`pgr_versionless` to compare two version numbers"
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/versionless.po b/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/versionless.po
deleted file mode 100644
index c9a7f13..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/common/doc/utilities/versionless.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 5209a60f43eb4ca889765b2f2855917f
-#: ../../../src/common/doc/utilities/versionless.rst:13
-msgid "pgr_versionless"
-msgstr ""
-
-# cf214511459c4e01a98c636ee93edf10
-#: ../../../src/common/doc/utilities/versionless.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# af9f449a91a94497a1a06310c12763cc
-#: ../../../src/common/doc/utilities/versionless.rst:22
-msgid "``pgr_versionless`` — Compare two version numbers."
-msgstr ""
-
-# cfa4ec4da8d143e9bb4f33521dc1f6b2
-#: ../../../src/common/doc/utilities/versionless.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# 7a40ac52554840c48edaf4e3bc893f86
-#: ../../../src/common/doc/utilities/versionless.rst:27
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 99a72026827e4e44b1b7e0b9defa52f8
-#: ../../../src/common/doc/utilities/versionless.rst:29
-msgid ""
-"Returns ``true`` if the first version number is smaller than the second "
-"version number. Otherwise returns ``false``."
-msgstr "Retourne ``true`` si le premier numéro de version est plus petit que le second numéro de version. Sinon retourne ``false``."
-
-# b541ba956f94407fbbfa4f325152d137
-#: ../../../src/common/doc/utilities/versionless.rst:37
-msgid "Description"
-msgstr "Description"
-
-# f2b9c579402a4d529bdcf44885b7999e
-#: ../../../src/common/doc/utilities/versionless.rst:39
-msgid "``text`` first version number"
-msgstr "``text`` premier numéro de version"
-
-# ff2f3530055d46b39b083a6e013b18f1
-#: ../../../src/common/doc/utilities/versionless.rst:40
-msgid "``text`` second version number"
-msgstr "``text`` deuxième numéro de version"
-
-# aa0e1cf348454207aba6b1bd4d82ddcd
-#: ../../../src/common/doc/utilities/versionless.rst:44
-msgid "History"
-msgstr "Histoire"
-
-# 84d6600a81814c3b87c5e309a80eef62
-#: ../../../src/common/doc/utilities/versionless.rst:45
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 0dbed91f114f41a2a1ccbffbb4886a47
-#: ../../../src/common/doc/utilities/versionless.rst:49
-msgid "Examples"
-msgstr "Exemples"
-
-# cd2ca34fb88c4024ac73c6c7076b3de2
-#: ../../../src/common/doc/utilities/versionless.rst:62
-msgid "See Also"
-msgstr "Voir aussi"
-
-# ac8a4a1b5fd0499e910d1f9c088d0d25
-#: ../../../src/common/doc/utilities/versionless.rst:64
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# f733092d16de4d7b9bdf31b6bdae27d3
-#: ../../../src/common/doc/utilities/versionless.rst:65
-msgid ":ref:`pgr_version` to get the current version of pgRouting."
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/dijkstra/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/dijkstra/doc/index.po
deleted file mode 100644
index 95a79f6..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/dijkstra/doc/index.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:15+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# a6876a00bcae42fdb134f789dabd19d7
-#: ../../../src/dijkstra/doc/index.rst:13
-msgid "pgr_dijkstra - Shortest Path Dijkstra"
-msgstr "pgr_dijkstra - Plus court chemin Dijkstra"
-
-# 5ba32c2871ea4858b8bfd351b4a01f34
-#: ../../../src/dijkstra/doc/index.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# eb4931f6253f4daea164710031c062f7
-#: ../../../src/dijkstra/doc/index.rst:22
-msgid "``pgr_dijkstra`` — Returns the shortest path using Dijkstra algorithm."
-msgstr "``pgr_dijkstra`` — Retourne le plus court chemin en utilisant l'algorithme Dijkstra."
-
-# aad22c43d6da4f658543ad79e2b4789c
-#: ../../../src/dijkstra/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# d23c857c49554c10a6c99810575627e1
-#: ../../../src/dijkstra/doc/index.rst:28
-msgid ""
-"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
-"in 1956. It is a graph search algorithm that solves the single-source "
-"shortest path problem for a graph with non-negative edge path costs, "
-"producing a shortest path tree. Returns a set of :ref:`pgr_costResult "
-"<type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
-msgstr "L'algorithme Dijkstra, conçu par l'informaticien Néerlandais Edsger Dijkstra en 1956. C'est un algorithme de recherche de graphe qui résout le problème de plus court chemin à source unique pour un graphe à coûts de chemin non négatifs, produisant un arbre de plus court chemin. Retourne un ensemble de lignes :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, qui fabriquent un chemin."
-
-# 9b3ef7764a8a4aec8be3fd97d0f78855
-#: ../../../src/dijkstra/doc/index.rst:37
-msgid "Description"
-msgstr "Description"
-
-# 8f12864ae55a48e6a49e9a5c7f232731
-#: ../../../src/dijkstra/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# 883dbba5f5b94668af12a1c3d280804f
-#: ../../../src/dijkstra/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identifiant de l'arête"
-
-# 64eaa5363cc64362829f60de0f81517d
-#: ../../../src/dijkstra/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` identifiant du sommet source"
-
-# 849ed774dfa442cf86f3d184c820a717
-#: ../../../src/dijkstra/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` identifiant du sommet cible"
-
-# 2c000dd6564240d09f3533f4b2411029
-#: ../../../src/dijkstra/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valeur, du coût de l'arête traversée. Un coût négatif va prévenir l'arête d'être insérée dans le graphe."
-
-# 13bbd212a94840bbbdd82ba008836790
-#: ../../../src/dijkstra/doc/index.rst:50
-msgid ""
-"``float8`` (optional) the cost for the reverse traversal of the edge. This "
-"is only used when the ``directed`` and ``has_rcost`` parameters are ``true``"
-" (see the above remark about negative costs)."
-msgstr ""
-
-# 42be1660a80b461ba4e56f070cde4c04
-#: ../../../src/dijkstra/doc/index.rst:52
-msgid "``int4`` id of the start point"
-msgstr "``int4`` id du point de départ"
-
-# 95547c9e5de74556a208d7c0a9e58772
-#: ../../../src/dijkstra/doc/index.rst:53
-msgid "``int4`` id of the end point"
-msgstr "``int4`` id du point final"
-
-# 89e9934bdbfd42aabf98993066529f92
-#: ../../../src/dijkstra/doc/index.rst:54
-msgid "``true`` if the graph is directed"
-msgstr "``true`` si le graphe est dirigé"
-
-# 03f039cd5de34a3f99a5871456ed269f
-#: ../../../src/dijkstra/doc/index.rst:55
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "si ``true``, la colonne ``reverse_cost`` du SQL générant l'ensemble des lignes va être utilisé pour le coût de la traversée de l'arête dans la direction opposée."
-
-# 2c03ff621dfb4e11a0f215844b6cd41c
-#: ../../../src/dijkstra/doc/index.rst:57
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Retourne un ensemble de :ref:`type_cost_result`:"
-
-# f43f68991432480385556098be3f32ab
-#: ../../../src/dijkstra/doc/index.rst:59
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# b5cd0a7c7e1943e2934f2d315fd0d58d
-#: ../../../src/dijkstra/doc/index.rst:60
-msgid "node ID"
-msgstr "ID noeud"
-
-# ae466d86ce304295afc5b1f956c97732
-#: ../../../src/dijkstra/doc/index.rst:61
-msgid "edge ID (``-1`` for the last row)"
-msgstr "ID arête (``-1`` pour la dernière ligne)"
-
-# d74ec405ac62479a93ddd9070e1cfead
-#: ../../../src/dijkstra/doc/index.rst:62
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "coût pour traverser à partir de ``id1`` en utilisant ``id2``"
-
-# d45859a53252493eaea97bdbe6c8936f
-#: ../../../src/dijkstra/doc/index.rst:66
-msgid "History"
-msgstr "Histoire"
-
-# 41349c9ad4574d009aa7375219beab0c
-#: ../../../src/dijkstra/doc/index.rst:67
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# d1ebc8bc726844eab5795b5dedc18fe0
-#: ../../../src/dijkstra/doc/index.rst:71
-msgid "Examples"
-msgstr "Exemples"
-
-# 5ea59cfbc4b240c29bc8268d4a36cdb4
-#: ../../../src/dijkstra/doc/index.rst:73
-msgid "Without ``reverse_cost``"
-msgstr "Sans ``reverse_cost``"
-
-# a37bcf6c164b442ca94ded3b2df83f61
-#: ../../../src/dijkstra/doc/index.rst:92
-msgid "With ``reverse_cost``"
-msgstr "Avec ``reverse_cost``"
-
-# 1013877e3d214e6f8d87c5747e261b20
-#: ../../../src/dijkstra/doc/index.rst:110
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 7097292ec353427d90c60607583c42c2
-#: ../../../src/dijkstra/doc/index.rst:114
-msgid "See Also"
-msgstr "Voir aussi"
-
-# d98cbcb325484a81bcb0e6b0afd3928c
-#: ../../../src/dijkstra/doc/index.rst:116
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# cc938bae0828409fb0efae9ad098fa4d
-#: ../../../src/dijkstra/doc/index.rst:117
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po b/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po
deleted file mode 100644
index 0ccc992..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po
+++ /dev/null
@@ -1,142 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# cb2e05bbf556427191f8dd5d87c670db
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:13
-msgid "pgr_alphaShape"
-msgstr ""
-
-# cd5cca6682b34a85b72fd0b7c90d739b
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 9a0ca65720774711aefd2d017e4487e9
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:22
-msgid "``pgr_alphashape`` — Core function for alpha shape computation."
-msgstr "``pgr_alphashape`` — Fonction Core pour le calcul de la forme alpha"
-
-# 525edb2bc28a4e77804ac30781cc3dc5
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:26
-msgid ""
-"This function should not be used directly. Use :ref:`pgr_drivingDistance "
-"<pgr_driving_distance>` instead."
-msgstr "Cette fonction ne devrait pas être utilisée directement. Utilisez :ref:`pgr_drivingDistance <pgr_driving_distance>` à la place."
-
-# 96d2ea88d3bf44a793219826f7fddda3
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:30
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 4b5074bd7bc64d1c89dcc1e5b250c5f0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:32
-msgid ""
-"Returns a table with (x, y) rows that describe the vertices of an alpha "
-"shape."
-msgstr "Retourne un tableau avec des lignes (x, y) qui décrivent les sommets d'une forme alpha."
-
-# eed5f82ec9924367b7a2c7ce8ce7704a
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:40
-msgid "Description"
-msgstr "Description"
-
-# 3607e16f8fe24de6a2226bb43a73dadd
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:42
-msgid ""
-"``text`` a SQL query, which should return a set of rows with the following "
-"columns:"
-msgstr "``text`` une requête SQL, qui doit retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# afd24b1ef69d439691025ff955e63f25
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:48
-msgid "``int4`` identifier of the vertex"
-msgstr "``int4`` identifiant du sommet"
-
-# c4ec83f59d634b458e6e04dc6822cc62
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:49
-msgid "``float8`` x-coordinate"
-msgstr "coordonnée x ``float8``"
-
-# c78115c69ec645ceb3a8de6f3a97ebdc
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:50
-msgid "``float8`` y-coordinate"
-msgstr "coordonnée y ``float8``"
-
-# 63cffe47a71d462cae8c09a10473bdaf
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:53
-msgid "Returns a vertex record for each row :"
-msgstr "Retourne un enregistrement sommet pour chaque ligne :"
-
-# 385ec313cc69493989a17eecd282d5b4
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:55
-msgid "x-coordinate"
-msgstr "coordonnée x"
-
-# 2eb9452ee2864540b535c7be538a73f0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:56
-msgid "y-coordinate"
-msgstr "coordonnée y"
-
-# bf1e04aab9ed4558aeb274dbc93fc476
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:60
-msgid "History"
-msgstr "Histoire"
-
-# 6301d43186dc47ca9c0925f563c2b4ee
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:61
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# 2dcc599a683743b09eb440895c823584
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:65
-msgid "Examples"
-msgstr "Exemples"
-
-# 28059fce0d66461c88851c2efa8995b4
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:66
-msgid ""
-"In the alpha shape code we have no way to control the order of the points so"
-" the actual output you might get could be similar but different. The simple "
-"query is followed by a more complex one that constructs a polygon and "
-"computes the areas of it. This should be the same as the result on your "
-"system. We leave the details of the complex query to the reader as an "
-"exercise if they wish to decompose it into understandable pieces or to just "
-"copy and paste it into a SQL window to run."
-msgstr ""
-
-# cea925c912c14e2bae7b67a9493f67d0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:119
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# b737b880282d447b840b23e77501d03b
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:123
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 79772e0e113745068a7c48d32ae903ee
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:125
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-# 98ad4c5291f04893a9e5a6f616ce2d11
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:126
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po b/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po
deleted file mode 100644
index 6ff0724..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po
+++ /dev/null
@@ -1,199 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 49d83b442baa4f9981fa13ff4abc3c6b
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:13
-msgid "pgr_drivingDistance"
-msgstr ""
-
-# ce7edabbdab546a3a318f86316d0abc6
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 7a89c6c2c0ca404eb82afe9d6de38db2
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:22
-msgid ""
-"``pgr_drivingDistance`` - Returns the driving distance from a start node."
-msgstr "``pgr_drivingDistance`` - Retourne la distance de conduite à partir d'un point de départ."
-
-# 5afa2748d4964e35b9cfcf71ba431015
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:26
-msgid ""
-"Requires :ref:`to build pgRouting <build>` with support for Driving "
-"Distance."
-msgstr "Requiert :ref:`to build pgRouting <build>` avec support de la Distance de conduite."
-
-# 91fbeb2cd46146c4bb9f86b8600faa87
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:30
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# cffb1438aa5d43d8b1792ec1d53769ae
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:32
-msgid ""
-"This function computes a Dijkstra shortest path solution them extracts the "
-"cost to get to each node in the network from the starting node. Using these "
-"nodes and costs it is possible to compute constant drive time polygons. "
-"Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, "
-"cost) rows, that make up a list of accessible points."
-msgstr "Cette fonction calcule une solution de plus court chemin Dijkstra qui extracte le coût pour atteindre chaque noeud dans le réseau à partir du nœud de départ. En utilisand ces noeuds et coûts, il est possible de calculer des polygones de temps de conduite. Retourne un ensemble de lignes :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost), qui génèrent une liste de points accessibles."
-
-# b2253b753da44597b1d449509c96ca75
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:41
-msgid "Description"
-msgstr "Description"
-
-# f187f52a62034b2cae8bb00b570bea15
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:43
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# 85949c2cc0334abbbb500996221eeba0
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:50
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identifiant de l'arête"
-
-# 35a904f5f23643b7a6e7e457b8f05846
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:51
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` identifiant du sommet source"
-
-# 815615381d8d43989567cc15d154736a
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:52
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` identifiant du sommet cible"
-
-# 5c9e142543534a0bbc7668603ad465b4
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:53
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valeur, du coût de l'arête traversée. Un coût négatif va prévenir l'arête d'être insérée dans le graphe."
-
-# fa3ca524dbe24d47891420e71caa324c
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(optionnel) le coût pour la traversée inverse de l'arête. Ceci est seulement utilisé quand les paramètres ``directed`` et ``has_rcost`` sont ``true`` (voir la remarque ci-dessus sur les coûts négatifs)."
-
-# c9e1f4debc904118ab177e2b4427d364
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4`` id du point de départ"
-
-# 2da59a7b4e0b4b6fbac510bfe0adbd1e
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:57
-msgid ""
-"``float8`` value in edge cost units (not in projection units - they might be"
-" different)."
-msgstr "``float8`` valeur dans les unités de coûts de l'arête (pas forcément dans les unités de projection - ils peuvent être différents)."
-
-# b09a53cf12bd49a09659eb105e2e7d2a
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "``true`` si le graphe est dirigé"
-
-# e771178ac5514ae6bc7cf3dcccfe5408
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "si ``true``, la colonne ``reverse_cost`` du SQL générant l'ensemble des lignes va être utilisé pour le coût de la traversée de l'arête dans la direction opposée."
-
-# 5770f80a74ec49cf8f9e11b9fd082533
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Retourne un ensemble de :ref:`type_cost_result`:"
-
-# ed0dbd0e73234b70827a7663d390886d
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:63
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# dc9caee8fdc84c45bb1ebf3c046a436d
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:64
-msgid "node ID"
-msgstr "ID noeud"
-
-# ae36b60db435425b8a4bfa4ada217dd7
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:65
-msgid "edge ID (this is probably not a useful item)"
-msgstr "ID arête (probablement pas un élément utile)"
-
-# ee9063c6bb49444e94e08af7eedbb401
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:66
-msgid "cost to get to this node ID"
-msgstr "coût pour aller à cet ID noeud"
-
-# 3bb717c83f2d4993a4b1704a88749ee9
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr "Vous devez vous reconnecter à la base de données après ``CREATE EXTENSION pgrouting``. Sinon la fonction va retourner ``Error computing path: std::bad_alloc``."
-
-# 306f0588bb5148dab4d4a97e5bb35889
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:74
-msgid "History"
-msgstr "Histoire"
-
-# cc8f5e8248314554bd506fc27f7208ed
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:75
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# 9db1973c0a0b4420afe780fa3d4b3d0f
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:79
-msgid "Examples"
-msgstr "Exemples"
-
-# 3f34e359dbd242b6a82b49b0beb2acd5
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:81
-msgid "Without ``reverse_cost``"
-msgstr "Sans ``reverse_cost``"
-
-# f58a8bec8b9447f59bf31eb2d52c7782
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:101
-msgid "With ``reverse_cost``"
-msgstr "Avec ``reverse_cost``"
-
-# f6d9ddd77a7c48dcaafa2cd1225d8e27
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:121
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 15ad7ce30a424139b00e9874b4461215
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:125
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 04113586118441f6b13f5bf83f5fa224
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:127
-msgid ":ref:`pgr_alphashape` - Alpha shape computation"
-msgstr ""
-
-# b474eeeca7284f5f983f498713f1640f
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:128
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po b/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po
deleted file mode 100644
index 13c8a6b..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po
+++ /dev/null
@@ -1,123 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# a2329478f830474e9819c418ae391538
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:13
-msgid "pgr_pointsAsPolygon"
-msgstr ""
-
-# df6c5bd4620d47ae9f8682195aca1e18
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 968dbf3147554bcc994e903e5917a0bd
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:22
-msgid ""
-"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
-msgstr "``pgr_pointsAsPolygon`` — Dessine une forme alpha à partir d'un ensemble de points."
-
-# 0b81c4a0e03d47938cd256882a6facac
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 568b6a3cf23a4a7980b7796df73d334b
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:28
-msgid "Returns the alpha shape as polygon geometry."
-msgstr "Retourner la forme alpha comme polygone geometry."
-
-# 240f6c0c9ac848a2b1815408c264a3d7
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:36
-msgid "Description"
-msgstr "Description"
-
-# bfa10edae1114295852086c42f84d811
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:38
-msgid ""
-"``text`` a SQL query, which should return a set of rows with the following "
-"columns:"
-msgstr "``text`` une requête SQL, qui doit retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# d3ca4ae81d3e4a709a2fda2d60f23946
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:44
-msgid "``int4`` identifier of the vertex"
-msgstr "``int4`` identifiant du sommet"
-
-# 10e342dfa5274ea89ea284bd657b2469
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:45
-msgid "``float8`` x-coordinate"
-msgstr "coordonnée x ``float8``"
-
-# d36090e578224b30b065a3c28f26d565
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:46
-msgid "``float8`` y-coordinate"
-msgstr "coordonnée y ``float8``"
-
-# 1029622f3ac34a30abc0f3babfe7118f
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:49
-msgid "Returns a polygon geometry."
-msgstr "Retourne une géométrie polygone."
-
-# 49392543fb984b5f922e683b9ba560c5
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:53
-msgid "History"
-msgstr "Histoire"
-
-# b00e0e03870244cca7aa9e1c81bad9c1
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:54
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# f8001d60b6d54b67afc641f38b8e5b4a
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:58
-msgid "Examples"
-msgstr "Exemples"
-
-# 7e01fc6f880549e7b7bde01255cc2811
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:59
-msgid ""
-"In the following query there is not way to control which point in the "
-"polygon is the first in the list, so you may get similar but different "
-"results than the following which are also correct. Each of the "
-"pgr_pointsAsPolygon queries below is followed by one the compute the area of"
-" the polygon. This area should remain constant regardles of the order of the"
-" points making up the polygon."
-msgstr ""
-
-# 1deae2c2bb624110980cf832e66993d9
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:93
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 801871cf3dd94fd292387e49941223e3
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:97
-msgid "See Also"
-msgstr "Voir aussi"
-
-# abc4c217086645fe88ff21568ab13c50
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:99
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-# 51bae94aaf75403a81353100c953d805
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:100
-msgid ":ref:`pgr_alphashape` - Alpha shape computation"
-msgstr ""
diff --git a/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/index.po
deleted file mode 100644
index 77bee4d..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/driving_distance/doc/index.po
+++ /dev/null
@@ -1,200 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-25 07:03+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 0979e1fbbc9641b5ade79d4c28a2473a
-#: ../../../src/driving_distance/doc/index.rst:13
-msgid "pgr_drivingDistance - Driving Distance"
-msgstr "pgr_drivingDistance - Distance de conduite"
-
-# 7b3011e2af744bfdb31fc2960aaa4664
-#: ../../../src/driving_distance/doc/index.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# 3c08eb6932d34c2ca49bd0889566e8e3
-#: ../../../src/driving_distance/doc/index.rst:22
-msgid ""
-"``pgr_drivingDistance`` - Returns the driving distance from a start node."
-msgstr "``pgr_drivingDistance`` - Retourne la distance de conduite à partir d'un point de départ."
-
-# 726c1fdc95044e52b22d50c0f0b766fb
-#: ../../../src/driving_distance/doc/index.rst:26
-msgid ""
-"Requires :ref:`to build pgRouting <build>` with support for Driving "
-"Distance."
-msgstr "Requiert :ref:`to build pgRouting <build>` avec support de la Distance de conduite."
-
-# ce1ce7f3f6c9425ab9c4a1aae81baeb3
-#: ../../../src/driving_distance/doc/index.rst:30
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 12a9eb19a15e4f42acd14d76a3847c02
-#: ../../../src/driving_distance/doc/index.rst:32
-msgid ""
-"This function computes a Dijkstra shortest path solution them extracts the "
-"cost to get to each node in the network from the starting node. Using these "
-"nodes and costs it is possible to compute constant drive time polygons. "
-"Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, "
-"cost) rows, that make up a list of accessible points."
-msgstr "Cette fonction calcule une solution de plus court chemin Dijkstra qui extracte le coût pour atteindre chaque noeud dans le réseau à partir du nœud de départ. En utilisand ces noeuds et coûts, il est possible de calculer des polygones de temps de conduite. Retourne un ensemble de lignes :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost), qui génèrent une liste de points accessibles."
-
-# df9cee3f069447debee18ff47cce02f8
-#: ../../../src/driving_distance/doc/index.rst:41
-msgid "Description"
-msgstr "Description"
-
-# fda5e314fd1b46c6a96ad0b8a241ae12
-#: ../../../src/driving_distance/doc/index.rst:43
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# 9621e3c82e434709bfcb9df2a0febdee
-#: ../../../src/driving_distance/doc/index.rst:50
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identifiant de l'arête"
-
-# b0b6976ee3d3495ca2e27a1359c6b07c
-#: ../../../src/driving_distance/doc/index.rst:51
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` identifiant du sommet source"
-
-# fec5e9d5cb5e438ea2c5f0feecd1aa03
-#: ../../../src/driving_distance/doc/index.rst:52
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` identifiant du sommet cible"
-
-# ec8176b8c36e447ebd1f0995dadd973d
-#: ../../../src/driving_distance/doc/index.rst:53
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valeur, du coût de l'arête traversée. Un coût négatif va prévenir l'arête d'être insérée dans le graphe."
-
-# 9c3f6ea025a84d0a8ac13358a10ed166
-#: ../../../src/driving_distance/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(optionnel) le coût pour la traversée inverse de l'arête. Ceci est seulement utilisé quand les paramètres ``directed`` et ``has_rcost`` sont ``true`` (voir la remarque ci-dessus sur les coûts négatifs)."
-
-# 32fef696ffaf450fb041bf2ebc1fc270
-#: ../../../src/driving_distance/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4`` id du point de départ"
-
-# 420175e68aac485f86544b6aa6cae550
-#: ../../../src/driving_distance/doc/index.rst:57
-msgid ""
-"``float8`` value in edge cost units (not in projection units - they might be"
-" different)."
-msgstr "``float8`` valeur dans les unités de coûts de l'arête (pas forcément dans les unités de projection - ils peuvent être différents)."
-
-# a7f57fdcfe0544e69a4cde06a7344fb6
-#: ../../../src/driving_distance/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "``true`` si le graphe est dirigé"
-
-# d72d8b646a964dea88cd97d711c69e94
-#: ../../../src/driving_distance/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "si ``true``, la colonne ``reverse_cost`` du SQL générant l'ensemble des lignes va être utilisé pour le coût de la traversée de l'arête dans la direction opposée."
-
-# ef1631b756b54c3aa2b66ae0abfad917
-#: ../../../src/driving_distance/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Retourne un ensemble de :ref:`type_cost_result`:"
-
-# e440be6d227945fa904c13d07855a863
-#: ../../../src/driving_distance/doc/index.rst:63
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# bfe1245d3dde49048c4e9bf715508e92
-#: ../../../src/driving_distance/doc/index.rst:64
-msgid "node ID"
-msgstr "ID noeud"
-
-# 401535e148ae4023aefb138c6f8ff762
-#: ../../../src/driving_distance/doc/index.rst:65
-msgid "edge ID (this is probably not a useful item)"
-msgstr "ID arête (probablement pas un élément utile)"
-
-# 3a2b1d8c38434024b2edd02add5bb1fc
-#: ../../../src/driving_distance/doc/index.rst:66
-msgid "cost to get to this node ID"
-msgstr "coût pour aller à cet ID noeud"
-
-# 1d8dc027684e453f9a61e3e3f12ee255
-#: ../../../src/driving_distance/doc/index.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr "Vous devez vous reconnecter à la base de données après ``CREATE EXTENSION pgrouting``. Sinon la fonction va retourner ``Error computing path: std::bad_alloc``."
-
-# a61d60a110d54bc0a6930cab19c3ce24
-#: ../../../src/driving_distance/doc/index.rst:74
-msgid "History"
-msgstr "Histoire"
-
-# f2e8e48820a54015ab1b6a85136df5f0
-#: ../../../src/driving_distance/doc/index.rst:75
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# 817cc13bb697434e9f0803ed3f365934
-#: ../../../src/driving_distance/doc/index.rst:79
-msgid "Examples"
-msgstr "Exemples"
-
-# 82aec7db1ea043b28641f4963d13763b
-#: ../../../src/driving_distance/doc/index.rst:81
-msgid "Without ``reverse_cost``"
-msgstr "Sans ``reverse_cost``"
-
-# ac2a8b6a32a24b6095a9fb31fce4ebe0
-#: ../../../src/driving_distance/doc/index.rst:101
-msgid "With ``reverse_cost``"
-msgstr "Avec ``reverse_cost``"
-
-# 0d7631d9310b438c91153c3dd1b24a5b
-#: ../../../src/driving_distance/doc/index.rst:121
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# eed359d1899540fab05b3a4dc12fcaa1
-#: ../../../src/driving_distance/doc/index.rst:125
-msgid "See Also"
-msgstr "Voir aussi"
-
-# affd024607f942fb927cdf15975a7d4d
-#: ../../../src/driving_distance/doc/index.rst:127
-msgid ":ref:`pgr_points_as_polygon`"
-msgstr ":ref:`pgr_points_as_polygon`"
-
-# 5809d5028efc4d909ba300c75482cb61
-#: ../../../src/driving_distance/doc/index.rst:128
-msgid ":ref:`pgr_alphashape`"
-msgstr ":ref:`pgr_alphashape`"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/kdijkstra/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/kdijkstra/doc/index.po
deleted file mode 100644
index e5e82a5..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/kdijkstra/doc/index.po
+++ /dev/null
@@ -1,231 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 36e2253743a8455dbfbf75b26155205f
-#: ../../../src/kdijkstra/doc/index.rst:13
-msgid "pgr_kDijkstra - Mutliple destination Shortest Path Dijkstra"
-msgstr "pgr_kDijkstra - Plus court chemin Dijkstra à multiples destinations"
-
-# 9f432bf1623d4a299d50ff492edbd66b
-#: ../../../src/kdijkstra/doc/index.rst:21
-msgid "Name"
-msgstr "Nom"
-
-# 57c34a235f7a4cea8458d98a50a54e77
-#: ../../../src/kdijkstra/doc/index.rst:23
-msgid ""
-"``pgr_kdijkstraCost`` - Returns the costs for K shortest paths using "
-"Dijkstra algorithm."
-msgstr "``pgr_kdijkstraCost`` - Retourne les coûts pour les K plus courts chemins utilisant l'algoithme Dijkstra."
-
-# ce7c4be9a502473591591e4d330d46e7
-#: ../../../src/kdijkstra/doc/index.rst:24
-msgid ""
-"``pgr_kdijkstraPath`` - Returns the paths for K shortest paths using "
-"Dijkstra algorithm."
-msgstr "``pgr_kdijkstraPath`` - Retourne les chemins pour les K plus courts chemins en utilisant l'algorithme Dijkstra."
-
-# 130c100b24ac47d4afd3b8ae17ea1335
-#: ../../../src/kdijkstra/doc/index.rst:28
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 1b2f7dd687d84d76bbc57fc3ad8ed5ec
-#: ../../../src/kdijkstra/doc/index.rst:30
-msgid ""
-"These functions allow you to have a single start node and multiple "
-"destination nodes and will compute the routes to all the destinations from "
-"the source node. Returns a set of :ref:`pgr_costResult3 <type_cost_result3>`"
-" or :ref:`pgr_costResult3 <type_cost_result3>`. ``pgr_kdijkstraCost`` "
-"returns one record for each destination node and the cost is the total code "
-"of the route to that node. ``pgr_kdijkstraPath`` returns one record for "
-"every edge in that path from source to destination and the cost is to "
-"traverse that edge."
-msgstr "Ces fonctions vous autorisent à avoir un unique nœud de départ et des nœuds de destination multiple et va calculer les routes pour toutes les destinations depuis le noeud source. Retourne un ensemble de :ref:`pgr_costResult3 <type_cost_result3>` ou :ref:`pgr_costResult3 <type_cost_result3>`. ``pgr_kdijkstraCost`` Retourne un enregistrement pour chaque nœud et le coût est le coût total de la route vers ce noeud. ``pgr_kdijkstraPath`` retourne un enregistrement pour chaque nœud da [...]
-
-# 06379d79c78b4c9bb92226bc66c58c3f
-#: ../../../src/kdijkstra/doc/index.rst:42
-msgid "Description"
-msgstr "Description"
-
-# 84671f541e384cf79360df9e260a5f52
-#: ../../../src/kdijkstra/doc/index.rst:44
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# adccb52524354a6c92d9d45edb967dc0
-#: ../../../src/kdijkstra/doc/index.rst:51
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identifiant de l'arête"
-
-# 5b2a072be67f471a8ab0c6b3daddcc48
-#: ../../../src/kdijkstra/doc/index.rst:52
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` identifiant du sommet source"
-
-# d00470fb22ae4294a3cf56db3d064839
-#: ../../../src/kdijkstra/doc/index.rst:53
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` identifiant du sommet cible"
-
-# 4bdbc59e5d2d46ba94031caa56975d17
-#: ../../../src/kdijkstra/doc/index.rst:54
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valeur, du coût de l'arête traversée. Un coût négatif va prévenir l'arête d'être insérée dans le graphe."
-
-# 569cecbec8e34fa9942c4bcf4ce0c6a4
-#: ../../../src/kdijkstra/doc/index.rst:55
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(optionnel) le coût pour la traversée inverse de l'arête. Ceci est seulement utilisé quand les paramètres ``directed`` et ``has_rcost`` sont ``true`` (voir la remarque ci-dessus sur les coûts négatifs)."
-
-# b3c8762d18e14a65b4d45ca5b654dabd
-#: ../../../src/kdijkstra/doc/index.rst:57
-msgid "``int4`` id of the start point"
-msgstr "``int4`` id du point de départ"
-
-# 552184e10f0940f09327b71d0a2a5293
-#: ../../../src/kdijkstra/doc/index.rst:58
-msgid "``int4[]`` an array of ids of the end points"
-msgstr "``int4[]`` un tableau d'ids des points finaux"
-
-# 6bee551c7fae494d9429ddf6404f457a
-#: ../../../src/kdijkstra/doc/index.rst:59
-msgid "``true`` if the graph is directed"
-msgstr "``true`` si le graphe est dirigé"
-
-# c79e8fecdbb94d6f836a2fb692d24fea
-#: ../../../src/kdijkstra/doc/index.rst:60
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "si ``true``, la colonne ``reverse_cost`` du SQL générant l'ensemble des lignes va être utilisé pour le coût de la traversée de l'arête dans la direction opposée."
-
-# fe741d49c0f94473971ebcad7951456b
-#: ../../../src/kdijkstra/doc/index.rst:63
-msgid "``pgr_kdijkstraCost`` returns set of :ref:`type_cost_result`:"
-msgstr "``pgr_kdijkstraCost`` retourne un ensemble de :ref:`type_cost_result`:"
-
-# 2325329e3ec24e3cbe4c347369b857a4
-# 2ac53854f37a48a89b705310628c4d3e
-#: ../../../src/kdijkstra/doc/index.rst:65
-#: ../../../src/kdijkstra/doc/index.rst:73
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# 73cb6093021a456aace98c1f58641bef
-#: ../../../src/kdijkstra/doc/index.rst:66
-msgid ""
-"path vertex source id (this will always be source start point in the query)."
-msgstr "id source du chemin de sommets (cela va toujours être la source du point final dans la requête)."
-
-# 9afd4e01323945118421ebb27f420068
-#: ../../../src/kdijkstra/doc/index.rst:67
-msgid "path vertex target id"
-msgstr "id cible du sommet du chemin"
-
-# 8b3c8fe211a147f4b031db8a8d899ddd
-#: ../../../src/kdijkstra/doc/index.rst:68
-msgid ""
-"cost to traverse the path from ``id1`` to ``id2``. Cost will be -1.0 if "
-"there is no path to that target vertex id."
-msgstr "coût pour traverser le chemin de ``id1`` à ``id2``. Le coût sera de -1.0 si il n'y a pas de chemin pour cet id de sommet cible."
-
-# 703a5ecca86b4ef4ba2c275d9ba8a20f
-#: ../../../src/kdijkstra/doc/index.rst:71
-msgid "``pgr_kdijkstraPath`` returns set of :ref:`type_cost_result3`:"
-msgstr "``pgr_kdijkstraPath`` retourne un ensemble de :ref:`type_cost_result3`:"
-
-# 7fc792793b7c4e65ba68cea3f25384aa
-#: ../../../src/kdijkstra/doc/index.rst:74
-msgid "path target id (identifies the target path)."
-msgstr "id chemin cible (identifie le chemin cible)."
-
-# c43bcd54fee6435fbe6afd2ec4bb6d65
-#: ../../../src/kdijkstra/doc/index.rst:75
-msgid "path edge source node id"
-msgstr ""
-
-# a567112ee5584a46ac397cb9783627a8
-#: ../../../src/kdijkstra/doc/index.rst:76
-msgid "path edge id (``-1`` for the last row)"
-msgstr ""
-
-# 47af04f2ce09412f8475df30be9581ae
-#: ../../../src/kdijkstra/doc/index.rst:77
-msgid "cost to traverse this edge or -1.0 if there is no path to this target"
-msgstr "coût pour traverser l'arête ou -1.0 si il n'y a pas de chemin pour cette cible"
-
-# e7349c2020bc491aaa02b3eb1ebca791
-#: ../../../src/kdijkstra/doc/index.rst:81
-msgid "History"
-msgstr "Histoire"
-
-# f7b3cf1f2e494a4c8697b712adcbd1fc
-#: ../../../src/kdijkstra/doc/index.rst:82
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# adf5de36019d4982b76cd696909168b0
-#: ../../../src/kdijkstra/doc/index.rst:86
-msgid "Examples"
-msgstr "Exemples"
-
-# f332ab5afb39404284be98f0e9a2c8dc
-#: ../../../src/kdijkstra/doc/index.rst:88
-msgid "Returning a ``cost`` result"
-msgstr "Retourne un résultat ``cost``"
-
-# cb5abec6a55e41a4a61c22fd3f461110
-#: ../../../src/kdijkstra/doc/index.rst:123
-msgid "Returning a ``path`` result"
-msgstr "Retourne un résultat "
-
-# d2e7b4076702425a9c6928a0cc4b997e
-#: ../../../src/kdijkstra/doc/index.rst:144
-msgid ""
-"There is no assurance that the result above will be ordered in the direction"
-" of flow of the route, ie: it might be reversed. You will need to check if "
-"``st_startPoint()`` of the route is the same as the start node location and "
-"if it is not then call ``st_reverse()`` to reverse the direction of the "
-"route. This behavior is a function of PostGIS functions ``st_linemerge()`` "
-"and ``st_union()`` and not pgRouting."
-msgstr "Il n'y a pas d'assurance que le résultat au-dessus sera ordonné dans la direction du flot de la route, càd : il peut être inversé. Vous aurez besoin de vérifier si ``st_startPoint()`` de la route est la même que la localisation du point de départ et si ça ne l'est pas, alors appelez ``st_reverse()`` pour inverser la direction de la route. Ce comportement est l'une des fonctions PostGIS ``st_linemerge()`` et ``st_union()`` et non pgRouting."
-
-# d6928031c7d047a5999f03c79c5bcfea
-#: ../../../src/kdijkstra/doc/index.rst:153
-msgid "See Also"
-msgstr "Voir aussi"
-
-# cd86a4612fe944acbe5a39daaf52dafd
-#: ../../../src/kdijkstra/doc/index.rst:155
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# c2386bf8c6314521abe162d0bf548225
-#: ../../../src/kdijkstra/doc/index.rst:156
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/ksp/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/ksp/doc/index.po
deleted file mode 100644
index 486a6a4..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/ksp/doc/index.po
+++ /dev/null
@@ -1,192 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:15+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# dc72571c7ce5498b92c659e3e482c885
-#: ../../../src/ksp/doc/index.rst:13
-msgid "pgr_ksp - K-Shortest Path"
-msgstr "pgr_ksp - K-plus court chemin"
-
-# 57b24beea69846f58a8cb9b1a7a892b5
-#: ../../../src/ksp/doc/index.rst:20
-msgid "Name"
-msgstr "Nom"
-
-# b3d0fc92b23443c8b718233c1e16f052
-#: ../../../src/ksp/doc/index.rst:22
-msgid "``pgr_ksp`` — Returns the \"K\" shortest paths."
-msgstr "``pgr_ksp`` — Retourne les \"K\" plus courts chemins."
-
-# 0e60ee2dfa944557a1e9c76106489a7f
-#: ../../../src/ksp/doc/index.rst:26
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# bcf915dc485c4e3b90c9a8ea251b55d1
-#: ../../../src/ksp/doc/index.rst:28
-msgid ""
-"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
-" number of shortest paths desired. Returns a set of :ref:`pgr_costResult3 "
-"<type_cost_result3>` (seq, id1, id2, id3, cost) rows, that make up a path."
-msgstr "L'algorithme de routage de K plus court chemin basé sur l'algorithme de Yen. \"K\" est le nombre de plus courts chemins souhaités. Retourne un ensemble de lignes :ref:`pgr_costResult3 <type_cost_result3>` (seq, id1, id2, id3, cost), qui fabriquent un chemin."
-
-# 46b5ce0d54a64718819888b77b007080
-#: ../../../src/ksp/doc/index.rst:37
-msgid "Description"
-msgstr "Description"
-
-# dddbbca8781f41eab4aac1d4e2ecdf32
-#: ../../../src/ksp/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# 575d21e3bc994dc3a92a7c6cbb0ed6a2
-#: ../../../src/ksp/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identifiant de l'arête"
-
-# 589751b9c7d34dac9b4eeb12894fd648
-#: ../../../src/ksp/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` identifiant du sommet source"
-
-# 6567c097438040d9b678e88df7521b35
-#: ../../../src/ksp/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` identifiant du sommet cible"
-
-# a1e24bd423dd445889b72928d964a5ec
-#: ../../../src/ksp/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valeur, du coût de l'arête traversée. Un coût négatif va prévenir l'arête d'être insérée dans le graphe."
-
-# ed76ed5e3a504c7aa3a35ea3fa5b4c16
-#: ../../../src/ksp/doc/index.rst:50
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when ``has_rcost`` the parameter is ``true`` (see the above remark about "
-"negative costs)."
-msgstr "(optionnel) le coût pour la traversée inverse de l'arête. Ceci est utilisé seulement quand le paramètre ``has_rcost`` est ``true`` (voir la remarque au-dessus sur les coûts négatifs)."
-
-# 588bdec4303b49869b6d1eedd541c198
-#: ../../../src/ksp/doc/index.rst:52
-msgid "``int4`` id of the start point"
-msgstr "``int4`` id du point de départ"
-
-# 96b44480fac34f6286b863e6c75d4d8a
-#: ../../../src/ksp/doc/index.rst:53
-msgid "``int4`` id of the end point"
-msgstr "``int4`` id du point final"
-
-# 0ffd51df58754f0b89f1b3ad6f75b632
-#: ../../../src/ksp/doc/index.rst:54
-msgid "``int4`` number of alternative routes"
-msgstr "``int4`` bombre de routes alternatives"
-
-# 0fc58370aa30454ea32a2c8b9f3b14a3
-#: ../../../src/ksp/doc/index.rst:55
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "si ``true``, la colonne ``reverse_cost`` du SQL générant l'ensemble des lignes va être utilisé pour le coût de la traversée de l'arête dans la direction opposée."
-
-# dc8dfcffbd604441a95743930181b042
-#: ../../../src/ksp/doc/index.rst:57
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Retourne un ensemble de :ref:`type_cost_result`:"
-
-# 611d6bbb82ca4987ae39fd45bb107c2b
-#: ../../../src/ksp/doc/index.rst:59
-msgid "sequence for ording the results"
-msgstr ""
-
-# b79966a030e04ee3b5e992b5a6858947
-#: ../../../src/ksp/doc/index.rst:60
-msgid "route ID"
-msgstr "ID route"
-
-# a324539cdc2e4202b416aa19693d1c3f
-#: ../../../src/ksp/doc/index.rst:61
-msgid "node ID"
-msgstr "ID noeud"
-
-# 4d87667a7b744eec999819b399fee50c
-#: ../../../src/ksp/doc/index.rst:62
-msgid "edge ID (``0`` for the last row)"
-msgstr "ID arête (``0`` pour la dernière ligne)"
-
-# baaba3dc621142bd8fc6b8ba32eb2b2e
-#: ../../../src/ksp/doc/index.rst:63
-msgid "cost to traverse from ``id2`` using ``id3``"
-msgstr "coût pour traverser de ``id2`` en utilisant ``id3``"
-
-# b585e07096f74b0389f8b7dffc969faa
-#: ../../../src/ksp/doc/index.rst:65
-msgid ""
-"KSP code base taken from http://code.google.com/p/k-shortest-paths/source."
-msgstr "Code de base KSP ici : http://code.google.com/p/k-shortest-paths/source."
-
-# 2d033ec25b09426c82d7bc27450b0e13
-#: ../../../src/ksp/doc/index.rst:69
-msgid "History"
-msgstr "Histoire"
-
-# 2910d7995ec342b995c857c1e8ea0ac3
-#: ../../../src/ksp/doc/index.rst:70
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 0fb494088fa241d6a4aa5482217c2851
-#: ../../../src/ksp/doc/index.rst:74
-msgid "Examples"
-msgstr "Exemples"
-
-# d3ea07b1c58a42ea9f68558e55eb90a0
-#: ../../../src/ksp/doc/index.rst:76
-msgid "Without ``reverse_cost``"
-msgstr "Sans ``reverse_cost``"
-
-# 7c55b739634c4401b46c4014669d2896
-#: ../../../src/ksp/doc/index.rst:104
-msgid "With ``reverse_cost``"
-msgstr "Avec ``reverse_cost``"
-
-# 2412b0b4ec044973a1c2304488a73b1a
-#: ../../../src/ksp/doc/index.rst:131
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 14d58e1d3a8f4723bb11ed549594cb26
-#: ../../../src/ksp/doc/index.rst:135
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 73cf1bb94518468996cdd3ff6bf897be
-#: ../../../src/ksp/doc/index.rst:137
-msgid ":ref:`type_cost_result3`"
-msgstr ":ref:`type_cost_result3`"
-
-# 3dde120556744d3f9ce7d6e9b9f0c1ee
-#: ../../../src/ksp/doc/index.rst:138
-msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
-msgstr "http://en.wikipedia.org/wiki/K_shortest_path_routing"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/trsp/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/trsp/doc/index.po
deleted file mode 100644
index 556459a..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/trsp/doc/index.po
+++ /dev/null
@@ -1,260 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-25 12:52+0000\n"
-"Last-Translator: erikap\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 15b2085c08994c0bafb02ec924886b36
-#: ../../../src/trsp/doc/index.rst:13
-msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
-msgstr "pgr_trsp - Plus court chemin avec restriction de virage (TRSP)"
-
-# 001ce231c65b42a19a62809e63a0b153
-#: ../../../src/trsp/doc/index.rst:23
-msgid "Name"
-msgstr "Nom"
-
-# e7d332e28a5540d2af454386b4bf39e5
-#: ../../../src/trsp/doc/index.rst:25
-msgid ""
-"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
-msgstr "``pgr_trsp`` — Retourne le plus court chemin avec support pour les restrictions de virage."
-
-# 9f0ad26664fc4d2aa44b49daf329cbcf
-#: ../../../src/trsp/doc/index.rst:29
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# 2d74de00ff7144f1a68f40ec98315004
-#: ../../../src/trsp/doc/index.rst:31
-msgid ""
-"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
-"can optionally take into account complicated turn restrictions like those "
-"found in real work navigable road networks. Performamnce wise it is nearly "
-"as fast as the A* search but has many additional features like it works with"
-" edges rather than the nodes of the network. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
-"make up a path."
-msgstr "Le plus court chemin avec restriction de virage (TRSP) est un algorithme de plus court chemin qui peut optionnellement prendre en compte les restrictions comme celles trouvées dans les réseaux routiers navigables réels. La performance est pratiquement aussi rapide que la recherche A* mais a beaucoup de fonctionnalités additionnelles puisque fonctionnant avec des arêtes plus qu'avec des nœuds du réseau. Retourne un ensemble de lignes :ref:`pgr_costResult <type_cost_result>` (seq, [...]
-
-# 258764bba06c4ef58ac4b5f8fc99fa51
-#: ../../../src/trsp/doc/index.rst:47
-msgid "Description"
-msgstr "Description"
-
-# db4ead8b9b724ada9fcd352b21c13c47
-#: ../../../src/trsp/doc/index.rst:49
-msgid ""
-"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
-":ref:`shooting_star` in that you can specify turn restrictions."
-msgstr "L'algorithme de plus court chemin avec restriction de virage (TRSP) est similaire au :ref:`shooting_star` dans lequel vous pouvez spécifier les restrictions de virage."
-
-# f8c43b665915464c9bfc35604fd91aee
-#: ../../../src/trsp/doc/index.rst:51
-msgid ""
-"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
-"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
-"This makes adding turn restrictions to a road network much easier than "
-"trying to add them to Shooting Star where you had to ad the same edges "
-"multiple times if it was involved in a restriction."
-msgstr "La configuration TRSP est essentiellement la même que :ref:`Dijkstra shortest path <pgr_dijkstra>` avec l'addition d'une table optionnelle de restrictions de virage. Cela rend plus facile l'ajout des restrictions de virage à un réseau routier, que d'essayer de les ajouter au Shooting Star où vous aviez à ajouter les mêmes arêtes plusieurs fois si vous étiez impliqués dans une restriction."
-
-# b95a0195c5bd43caa2d6cfb1f998a956
-#: ../../../src/trsp/doc/index.rst:54
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# 580e965db4a1466da14357ff969e2429
-#: ../../../src/trsp/doc/index.rst:61
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` identifiant de l'arête"
-
-# 1240ecd9b29e479ca8b980c6282c5182
-#: ../../../src/trsp/doc/index.rst:62
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` identifiant du sommet source"
-
-# f155b6dee53749049cc6a9eac4126083
-#: ../../../src/trsp/doc/index.rst:63
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` identifiant du sommet cible"
-
-# 882a25b98f4f4c7cb2f288cf7c327c4a
-#: ../../../src/trsp/doc/index.rst:64
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` valeur, du coût de l'arête traversée. Un coût négatif va prévenir l'arête d'être insérée dans le graphe."
-
-# 0a3a626251a840ab96796ef2ab9b91c5
-#: ../../../src/trsp/doc/index.rst:65
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(optionnel) le coût pour la traversée inverse de l'arête. Ceci est seulement utilisé quand les paramètres ``directed`` et ``has_rcost`` sont ``true`` (voir la remarque ci-dessus sur les coûts négatifs)."
-
-# 510dbeaa32914dc18ed3e6799281fbef
-#: ../../../src/trsp/doc/index.rst:67
-msgid "``int4`` **NODE id** of the start point"
-msgstr "``int4`` **NODE id** du point de départ"
-
-# ece6f31366044417b07933b2c817c5df
-#: ../../../src/trsp/doc/index.rst:68
-msgid "``int4`` **NODE id** of the end point"
-msgstr "``int4`` **NODE id** du point final"
-
-# 31ad6aa2c51741de8dbafceaf67d397a
-#: ../../../src/trsp/doc/index.rst:69
-msgid "``true`` if the graph is directed"
-msgstr "``true`` si le graphe est dirigé"
-
-# 6605eca503604a6daa20167fcbdd05fa
-#: ../../../src/trsp/doc/index.rst:70
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "si ``true``, la colonne ``reverse_cost`` du SQL générant l'ensemble des lignes va être utilisé pour le coût de la traversée de l'arête dans la direction opposée."
-
-# 332748df482046d7b70e9012364915e3
-#: ../../../src/trsp/doc/index.rst:72
-msgid ""
-"(optional) a SQL query, which should return a set of rows with the following"
-" columns:"
-msgstr "(optionnel) une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# 936b80e377bd457081e14e36770ab130
-#: ../../../src/trsp/doc/index.rst:78
-msgid "``float8`` turn restriction cost"
-msgstr "``float8`` coût de restriction de virage"
-
-# d1715703f624412385536b88c78a32df
-#: ../../../src/trsp/doc/index.rst:79
-msgid "``int4`` target id"
-msgstr "``int4`` id cible"
-
-# 83a22871a9f6419190e4bf313f49c672
-#: ../../../src/trsp/doc/index.rst:80
-msgid ""
-"``text`` commar seperated list of edges in the reverse order of ``rule``"
-msgstr "``text`` liste séparée par virgule d'arêtes dans l'ordre inverse de ``rule``"
-
-# d0f078a9c92348a9bc1e880a0835b24c
-#: ../../../src/trsp/doc/index.rst:82
-msgid ""
-"Another variant of TRSP allows to specify **EDGE id** of source and target "
-"together with a fraction to interpolate the position:"
-msgstr "Un autre variante de TRSP autorise de spécifier **EDGE id** de source et cible ensemble avec une fraction pour interpoler la position :"
-
-# 021daf08280643738cfc9e67f4fa6fce
-#: ../../../src/trsp/doc/index.rst:84
-msgid "``int4`` **EDGE id** of the start edge"
-msgstr "``int4`` **EDGE id** d'une arête de départ"
-
-# 6c0b782e2a2d4ee7aac26b031327b48d
-#: ../../../src/trsp/doc/index.rst:85
-msgid "``float8`` fraction of 1 defines the position on the start edge"
-msgstr "``float8`` fraction de 1 définit la position de l'arête de départ"
-
-# 4f60cd31727245739cba5b4be8840191
-#: ../../../src/trsp/doc/index.rst:86
-msgid "``int4`` **EDGE id** of the end edge"
-msgstr "``int4`` **EDGE id** de l'arête finale"
-
-# 8a114786a737431f9d36f79718505b0c
-#: ../../../src/trsp/doc/index.rst:87
-msgid "``float8`` fraction of 1 defines the position on the end edge"
-msgstr "``float8`` fraction de 1 définit la position de l'arête finale"
-
-# 164eff72cc834e76afafdb24fae73b05
-#: ../../../src/trsp/doc/index.rst:89
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr "Retourne un ensemble de :ref:`type_cost_result`:"
-
-# f1e7b63cce7e45dca113b9c63b80531a
-#: ../../../src/trsp/doc/index.rst:91
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# 9224c385fbc84c6fb16a5752bb0dcf0f
-#: ../../../src/trsp/doc/index.rst:92
-msgid "node ID"
-msgstr "ID noeud"
-
-# 838eabec61db4ac1a64b9bb7b12a5bec
-#: ../../../src/trsp/doc/index.rst:93
-msgid "edge ID (``-1`` for the last row)"
-msgstr "ID arête (``-1`` pour la dernière ligne)"
-
-# dd4d4036ca89412ca65bb9dc36a98ff5
-#: ../../../src/trsp/doc/index.rst:94
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "coût pour traverser à partir de ``id1`` en utilisant ``id2``"
-
-# 3e879e6cbece4a27afe4738bdef1080b
-#: ../../../src/trsp/doc/index.rst:98
-msgid "History"
-msgstr "Histoire"
-
-# 16b0789da1954e179858d593d9973be6
-#: ../../../src/trsp/doc/index.rst:99
-msgid "New in version 2.0.0"
-msgstr "Nouveau depuis la version 2.0.0"
-
-# 36dc0630c4e04859ba0a41aa3da19ed6
-#: ../../../src/trsp/doc/index.rst:103
-msgid "Examples"
-msgstr "Exemples"
-
-# 0c40d66ced8b4b48914b3bb328c5f10e
-#: ../../../src/trsp/doc/index.rst:105
-msgid "Without turn restrictions"
-msgstr "Sans restrictions de virage"
-
-# 456ae3d3abc547978bd147c884275ac6
-#: ../../../src/trsp/doc/index.rst:126
-msgid "With turn restrictions"
-msgstr "Avec restrictions de virage"
-
-# 2541f0dba78f4dfe93fcda086ddeba34
-#: ../../../src/trsp/doc/index.rst:128
-msgid ""
-"Turn restrictions require additional information, which can be stored in a "
-"separate table:"
-msgstr "Les restrictions de virage requièrent des informations additionnelles, qui peuvent être stockées dans une table séparée :"
-
-# 4d9e1ab740a44fe990829e06dcc32f65
-#: ../../../src/trsp/doc/index.rst:144
-msgid "Then a query with turn restrictions is created as:"
-msgstr "Ensuite une requête avec des restrictions de virage est créée comme :"
-
-# 61dd0262b80b4db58f637fe5d2dd1ae8
-#: ../../../src/trsp/doc/index.rst:167
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 48bf89e209cc4518904b1b99e1a89f99
-#: ../../../src/trsp/doc/index.rst:171
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 7988e08198b04952bc5a1cb22cce310f
-#: ../../../src/trsp/doc/index.rst:173
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
diff --git a/doc/i18n/fr/LC_MESSAGES/src/tsp/doc/index.po b/doc/i18n/fr/LC_MESSAGES/src/tsp/doc/index.po
deleted file mode 100644
index 5778432..0000000
--- a/doc/i18n/fr/LC_MESSAGES/src/tsp/doc/index.po
+++ /dev/null
@@ -1,353 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# erikap, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: French (http://www.transifex.com/projects/p/pgrouting/language/fr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-# 588bb56f073f49f89c741579fbc2c17c
-#: ../../../src/tsp/doc/index.rst:13
-msgid "pgr_tsp - Traveling Sales Person"
-msgstr "pgr_tsp - Voyageur du commerce"
-
-# f69daf53ba3c47ca846fbcbbcf6aa25d
-#: ../../../src/tsp/doc/index.rst:23
-msgid "Name"
-msgstr "Nom"
-
-# 5ccbfce91c604bac96d73fdbc656f675
-#: ../../../src/tsp/doc/index.rst:25
-msgid ""
-"``pgr_tsp`` - Returns the best route from a start node via a list of nodes."
-msgstr "``pgr_tsp`` - Retourne la meilleure route à partir d'un point de départ via une liste de nœuds."
-
-# cd69b4b6495b448fa23e10806d8cd704
-#: ../../../src/tsp/doc/index.rst:26
-msgid ""
-"``pgr_tsp`` - Returns the best route order when passed a disance matrix."
-msgstr "``pgr_tsp`` - Retourne le meilleur ordre de route quand passée une matrice de distance."
-
-# eee8057e1f874582a8d82dbf95c33b83
-#: ../../../src/tsp/doc/index.rst:27
-msgid ""
-"``pgr_makeDistanceMatrix`` - Returns a Eucleadian distance Matrix from the "
-"points provided in the sql result."
-msgstr "``pgr_makeDistanceMatrix`` - Retourne une matrice de distance Euclidienne à partir de points fournis par le résultat sql."
-
-# c0ecbed749044ceea6ac67da6a92e851
-#: ../../../src/tsp/doc/index.rst:31
-msgid "Synopsis"
-msgstr "Synopsis"
-
-# bccf8e0d00d545fbb53db8de741e3629
-#: ../../../src/tsp/doc/index.rst:33
-msgid ""
-"The travelling salesman problem (TSP) or travelling salesperson problem asks"
-" the following question: Given a list of cities and the distances between "
-"each pair of cities, what is the shortest possible route that visits each "
-"city exactly once and returns to the origin city? This algoritm uses "
-"simulated annealing to return a high quality approximate solution. Returns a"
-" set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows,"
-" that make up a path."
-msgstr "Le problème du voyageur du commerce (TSP) demande la question suivante : étant donnée une liste de villes et les distances entre chaque paire de villes, quelle est la route la plus courte possible qui visite chaque ville exactement une fois et retourne à la ville originale ? Cet algorithme utilise un recuit simulé pour retourner une solution approximative de haute qualité. Retourne un ensemble de lignes :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost), qui constitue [...]
-
-# 4817fee0103a41c4816125ab5b8e50c9
-#: ../../../src/tsp/doc/index.rst:41
-msgid ""
-"Returns a set of (seq integer, id1 integer, id2 integer, cost float8) that "
-"is the best order to visit the nodes in the matrix. ``id1`` is the index "
-"into the distance matrix. ``id2`` is the point id from the sql."
-msgstr "Retourne un ensemble de (seq integer, id1 integer, id2 integer, cost float8) qui est le meilleur ordre pour visiter les noeuds dans la matrice. ``id1`` est l'index dans la matrice de distance. ``id2`` est l'id du point à partir du sql."
-
-# d81ab41209864a73a7ffa72604da479d
-#: ../../../src/tsp/doc/index.rst:43
-msgid ""
-"If no ``end_id`` is supplied or it is -1 or equal to the start_id then the "
-"TSP result is assumed to be a circluar loop returning back to the start. If "
-"``end_id`` is supplied then the route is assumed to start and end the the "
-"designated ids."
-msgstr "Si aucun ``end_id`` est donné ou est -1 ou égal au start_id alors le résultat TSP est supposé être une boucle circulaire retournant au départ. Si ``end_id`` est fourni alors la route est supposée commencer et finir aux ids désignés."
-
-# 50853fe7ce3a4230ba1ad32e1820ff86
-#: ../../../src/tsp/doc/index.rst:52
-msgid "Description"
-msgstr "Description"
-
-# 5c75019d15bb43c39560772bc3ee4607
-#: ../../../src/tsp/doc/index.rst:55
-msgid "With Euclidean distances"
-msgstr "Avec distances euclidiennes"
-
-# 66a3e0216d3948b082421f130af849fc
-#: ../../../src/tsp/doc/index.rst:56
-msgid ""
-"The TSP solver is based on ordering the points using straight line "
-"(euclidean) distance [#f0]_ between nodes. The implementation is using an "
-"approximation algorithm that is very fast. It is not an exact solution, but "
-"it is guaranteed that a solution is returned after certain number of "
-"iterations."
-msgstr "Le solveur TSP est basé sur l'ordonnancement des points en utilisant la distance (euclidienne) de ligne droite [#f0]_ entre les noeuds. L'implémentation est utilisé un algorithme d'approximation qui est très rapide. Ce n'est pas une solution exacte, mais il est garanti qu'une solution est retournée après un certain nombre d'itérations."
-
-# 7b0c0aa5e05b441ea75bea14ed4902cd
-#: ../../../src/tsp/doc/index.rst:58
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "une requête SQL, qui devrait retourner un ensemble de lignes avec les colonnes suivantes :"
-
-# 370960d08a674040ba2f83ed085dbb48
-#: ../../../src/tsp/doc/index.rst:64
-msgid "``int4`` identifier of the vertex"
-msgstr "``int4`` identifiant du sommet"
-
-# 041d921890f847d1bcb77251f630f8d5
-#: ../../../src/tsp/doc/index.rst:65
-msgid "``float8`` x-coordinate"
-msgstr "coordonnée x ``float8``"
-
-# 8662fbcf22f74a82900515c839683881
-#: ../../../src/tsp/doc/index.rst:66
-msgid "``float8`` y-coordinate"
-msgstr "coordonnée y ``float8``"
-
-# c71cd39ce3cf4e3e9301579f9a596cdb
-#: ../../../src/tsp/doc/index.rst:68
-msgid "``int4`` id of the start point"
-msgstr "``int4`` id du point de départ"
-
-# 5165a6a173194137bb498d88e0957b35
-#: ../../../src/tsp/doc/index.rst:69
-msgid ""
-"``int4`` id of the end point, This is *OPTIONAL*, if include the route is "
-"optimized from start to end, otherwise it is assumed that the start and the "
-"end are the same point."
-msgstr "``int4`` id du point final, c'est *OPTIONNEL*, si inclure la route est optimisée d'un point de départ à la fin, sinon c'est supposé que le départ et la fin sont le même point."
-
-# d73e6887338e4da3a107b753d970eb83
-#: ../../../src/tsp/doc/index.rst:72
-msgid "The function returns set of :ref:`type_cost_result`:"
-msgstr "La fonction retourne un ensemble de :ref:`type_cost_result`:"
-
-# 6a00ce9fe1e84a708606d26b563355af
-# c113028794ef4a08a59271625c0ae721
-#: ../../../src/tsp/doc/index.rst:74 ../../../src/tsp/doc/index.rst:107
-msgid "row sequence"
-msgstr "séquence de ligne"
-
-# 486fb735dda64593ba3d2773c140d01f
-#: ../../../src/tsp/doc/index.rst:75
-msgid "internal index to the distance matric"
-msgstr "index interne de la matrice de distance"
-
-# 47f9555a7ecb4013a9b7b1744788a432
-#: ../../../src/tsp/doc/index.rst:76
-msgid "``id`` of the node"
-msgstr "``id`` du noeud"
-
-# 879b651101634a9fa1850e585291b13d
-#: ../../../src/tsp/doc/index.rst:77
-msgid "cost to traverse from the current node to the next node."
-msgstr "coût pour traverser du nœud courant au prochain nœud"
-
-# 1219dbad1dbc483e8c66e492b2ddbb85
-#: ../../../src/tsp/doc/index.rst:80
-msgid "Create a distance matrix"
-msgstr "Créer une matrice de distance"
-
-# 0c6c6e0816e1404798c896777ad941f2
-#: ../../../src/tsp/doc/index.rst:81
-msgid ""
-"For users that need a distance matrix we have a simple function that takes "
-"SQL in ``sql`` as described above and returns a record with ``dmatrix`` and "
-"``ids``."
-msgstr "Pour les utilisateurs qui ont besoin d'une matrice de distance, nous avons une fonction simple qui prend le SQL dans ``sql`` comme décrit au-dessus et retourne avec ``dmatrix`` et ``ids``."
-
-# a9ebba1a8cbb4af9a325f5ebcf4c9c50
-#: ../../../src/tsp/doc/index.rst:87
-msgid "The function returns a record of ``dmatrix``, ``ids``:"
-msgstr "La fonction retourne un enregistrement de ``dmatrix``, ``ids``:"
-
-# 79831990a066442dbf3d4f24cebf6aef
-#: ../../../src/tsp/doc/index.rst:89
-msgid "``float8[][]`` a symeteric Euclidean distance matrix based on ``sql``."
-msgstr "``float8[][]`` une distance symétrique euclidienne basée sur ``sql``."
-
-# afbd6f830d5c4ab2847548f86f90dca1
-#: ../../../src/tsp/doc/index.rst:90
-msgid ""
-"``integer[]`` an array of ids as they are ordered in the distance matrix."
-msgstr "``integer[]`` un tableau d'ids comme ils sont ordonnés dans la matrice de distances."
-
-# f0b8169b552646f980bd6b7e0e4b580c
-#: ../../../src/tsp/doc/index.rst:94
-msgid "With distance matrix"
-msgstr "Avec matrice de distance"
-
-# e50bb0a665844d7682d3a1b216adb70e
-#: ../../../src/tsp/doc/index.rst:95
-msgid ""
-"For users, that do not want to use Euclidean distances, we also provode the "
-"ability to pass a distance matrix that we will solve and return an ordered "
-"list of nodes for the best order to visit each. It is up to the user to "
-"fully populate the distance matrix."
-msgstr "Pour les utilisateurs, qui ne veulent pas utiliser les distances euclidiennes, nous fournissons aussi la capacité de passer une matrice de distances et retourne une liste ordonnée de nœuds pour le meilleur ordre pour visiter chacun. C'est à l'utilisateur de remplir complètement la matrice de distances."
-
-# 900d7d9a9cfe4f48a183120d63a6b5fb
-#: ../../../src/tsp/doc/index.rst:97
-msgid "``float[][]`` distance matrix of points"
-msgstr "``float[][]`` matrice de distances de points"
-
-# ffe889182e9b49e48573a830538e2f76
-#: ../../../src/tsp/doc/index.rst:98
-msgid "``int4`` index of the start point"
-msgstr "``int4`` index du point de départ"
-
-# 7ff184ff9d034484941644d3528f9b11
-#: ../../../src/tsp/doc/index.rst:99
-msgid "``int4`` (optional) index of the end node"
-msgstr "``int4`` (optionnel) index du point final"
-
-# a7886e5620ad48308a92c602d785b979
-#: ../../../src/tsp/doc/index.rst:101
-msgid ""
-"The ``end`` node is an optional parameter, you can just leave it out if you "
-"want a loop where the ``start`` is the depot and the route returns back to "
-"the depot. If you include the ``end`` parameter, we optimize the path from "
-"``start`` to ``end`` and minimize the distance of the route while include "
-"the remaining points."
-msgstr "Le noeud ``end`` est un paramètre optionnel, vous pouvez juste le laisser ainsi si vous voulez une boucle où ``start``est le dépôt et la route retourne au dépôt. Si vous incluez le paramètre ``end``, nous optimisons le chemin de ``start`` à ``end`` et minimisons la distance de la route en incluant les points restants."
-
-# 3328187fb6f24c06bd2ade2fb9daff6c
-#: ../../../src/tsp/doc/index.rst:103
-msgid ""
-"The distance matrix is a multidimensional `PostgreSQL array type "
-"<http://www.postgresql.org/docs/9.1/static/arrays.html>`_ that must be ``N x"
-" N`` in size."
-msgstr "La matrice de distances est un tableau multidimensionnel `PostgreSQL array type <http://www.postgresql.org/docs/9.1/static/arrays.html>`_ qui doit être de taille ``N x N``."
-
-# 1768ea2352234c129198dbacd1452e65
-#: ../../../src/tsp/doc/index.rst:105
-msgid "The result will be N records of ``[ seq, id ]``:"
-msgstr "Le résultat sera de N enregistrements de ``[ seq, id ]``:"
-
-# f8e56b07da754f4396ccb1daa52b8213
-#: ../../../src/tsp/doc/index.rst:108
-msgid "index into the matrix"
-msgstr "index dans la matrice"
-
-# 700ed687dfd24327b5866cb91007c0ed
-#: ../../../src/tsp/doc/index.rst:112
-msgid "Footnotes"
-msgstr "Notes de bas de page"
-
-# bae6c65f712c4ff9b0fd388153cf42f7
-#: ../../../src/tsp/doc/index.rst:113
-msgid ""
-"There was some thought given to pre-calculating the driving distances "
-"between the nodes using Dijkstra, but then I read a paper (unfortunately I "
-"don't remember who wrote it), where it was proved that the quality of TSP "
-"with euclidean distance is only slightly worse than one with real distance "
-"in case of normal city layout. In case of very sparse network or rivers and "
-"bridges it becomes more inaccurate, but still wholly satisfactory. Of course"
-" it is nice to have exact solution, but this is a compromise between quality"
-" and speed (and development time also). If you need a more accurate "
-"solution, you can generate a distance matrix and use that form of the "
-"function to get your results."
-msgstr "Il a été pensé que pré-calculer les distances de conduites entre les noeuds en utilisant Dijkstra, mais ensuite j'ai lu un papier (malheureusement je ne me rappelle plus qu'il l'a écrit), où il a été prouvé que la qualité de TSP avec la distance euclidienne est seulement légèrement moindre que celle avec la distance réelle dans le cas d'une couche de ville normale. Dans le cas d'un réseau très épars ou rivières et ponts ça devient plus imprécis, mais toujours pleinement satisfais [...]
-
-# aeabcb34ceb245ac8c9c4dd783bae696
-#: ../../../src/tsp/doc/index.rst:117
-msgid "History"
-msgstr "Histoire"
-
-# 83259e3ddfad4bc8a503e3daa04b99d5
-#: ../../../src/tsp/doc/index.rst:118
-msgid "Renamed in version 2.0.0"
-msgstr "Renommé depuis la version 2.0.0"
-
-# 537d6a4a4cc64451857537f64823ac72
-#: ../../../src/tsp/doc/index.rst:119
-msgid "GAUL dependency removed in version 2.0.0"
-msgstr "dépendance GAUL supprimée depuis la version 2.0.0"
-
-# 51493667159c4c6395a48ada45bc3ddb
-#: ../../../src/tsp/doc/index.rst:123
-msgid "Examples"
-msgstr "Exemples"
-
-# 7c2ef386cc424fe5a5781147e3ea4cc2
-#: ../../../src/tsp/doc/index.rst:125
-msgid ""
-"Using SQL parameter (all points from the table, atarting from 6 and ending "
-"at 5). We have listed two queries in this example, the first might vary from"
-" system to system because there are multiple equivalent answers. The second "
-"query should be stable in that the length optimal route should be the same "
-"regardless of order."
-msgstr ""
-
-# 41662adbab25461784b154100646e929
-#: ../../../src/tsp/doc/index.rst:159
-msgid "Using distance matrix (A loop starting from 1)"
-msgstr "Utiliser la matrice de distances (boucle A en partant de 1)"
-
-# 936788f1e0c2469ba7d71161a6320815
-#: ../../../src/tsp/doc/index.rst:161
-msgid ""
-"When using just the start node you are getting a loop that starts with 1, in"
-" this case, and travels through the other nodes and is implied to return to "
-"the start node from the last one in the list. Since this is a circle there "
-"are at least two possible paths, one clockwise and one counter-clockwise "
-"that will have the same length and be equall valid. So in the following "
-"example it is also possible to get back a sequence of ids = {1,0,3,2} "
-"instead of the {1,2,3,0} sequence listed below."
-msgstr ""
-
-# 95907dec9016432f8b75f45be9e231c3
-#: ../../../src/tsp/doc/index.rst:175
-msgid "Using distance matrix (Starting from 1, ending at 2)"
-msgstr "Utiliser la matrice de distance (en partant de 1, jusqu'à 2)"
-
-# c376ad2787cd4f4abf9764fbe86699b2
-#: ../../../src/tsp/doc/index.rst:189
-msgid ""
-"Using the vertices table edge_table_vertices_pgr generated by "
-":ref:`pgr_create_topology`. Again we have two queries where the first might "
-"vary and the second is based on the overal path length."
-msgstr ""
-
-# c3d22bacc29d477ca8c5a118ddedb8f4
-#: ../../../src/tsp/doc/index.rst:226
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "Les requêtes utilisent le réseau :ref:`sampledata`."
-
-# 4f5c93447689413e86e9ed2751abff8f
-#: ../../../src/tsp/doc/index.rst:230
-msgid "See Also"
-msgstr "Voir aussi"
-
-# 5f49eba1079b40d297bf0872ae69fe06
-#: ../../../src/tsp/doc/index.rst:232
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 81d591e953334f24b72e9680e2ae42f9
-#: ../../../src/tsp/doc/index.rst:233
-msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
-msgstr "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
-
-# 2c62ab4de73248479f416573176f0c4a
-#: ../../../src/tsp/doc/index.rst:234
-msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
-msgstr "http://en.wikipedia.org/wiki/Simulated_annealing"
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/index.po b/doc/i18n/ja/LC_MESSAGES/doc/index.po
deleted file mode 100644
index e273fa4..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/index.po
+++ /dev/null
@@ -1,360 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-# sanak <geosanak at gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 21:48\n"
-"PO-Revision-Date: 2013-09-24 02:49+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# c86028e885c64c0987f44bbcc08fb02a
-#: ../../index.rst:13
-msgid "Table of Contents"
-msgstr "目次"
-
-# 32111013f9c94976b553857e93812724
-#: ../../index.rst:15
-msgid ""
-"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
-"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
-"and other network analysis functionality."
-msgstr "pgRouting は地理空間における経路探索や他のネットワーク解析機能を提供するために `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ 地理空間データベースを拡張します。"
-
-# cd5bc882f7f3412b8a937ba25e203de8
-#: ../../index.rst:17
-msgid "This is the manual for pgRouting |release|."
-msgstr "このマニュアルは pgRouting |release| のマニュアルです。"
-
-# d928c97ad24c4daeae96bb02b87c5a6d
-#: ../../index.rst:23
-msgid ""
-"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
-" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
-"free to use this material any way you like, but we ask that you attribute "
-"credit to the pgRouting Project and wherever possible, a link back to "
-"http://pgrouting.org. For other licenses used in pgRouting see the "
-":ref:`license` page."
-msgstr "pgRouting マニュアルは `クリエイティブ・コモンズ 表示 - 継承 3.0 Unported <http://creativecommons.org/licenses/by-sa/3.0/>`_ ライセンスで提供されています。 自由にこのコンテンツを使用することが可能ですが、クレジットが pgRouting プロジェクトに帰すること、また、どこでも構いませんので、 http://pgrouting.org へのリンクを表示することを求めます。 pgRouting で使用されているその他のライセンスについては、 :ref:`ライセンス <license>` ページを参照して下さい。"
-
-# 9024be66e4ef47b9b53de9a42af4550d
-#: ../../index.rst:27
-msgid "General"
-msgstr "概要"
-
-# 268439cb0a4f4417b56ca21d51394850
-#: ../../index.rst:40
-msgid "Tutorial"
-msgstr "チュートリアル"
-
-# bf01af3d0d3244f283f5b3fab105caad
-#: ../../index.rst:42
-msgid ":ref:`Tutorial <tutorial1>`"
-msgstr ""
-
-# 116777f411a248f9afe42b9b51679b78
-#: ../../index.rst:44
-msgid ":ref:`Getting started <tutorial>`"
-msgstr ""
-
-# 2066f7d15ec8444c833547cfb3b06a98
-#: ../../index.rst:45
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 2753f71d0fc14b0bbabb14a5180b10d9
-#: ../../index.rst:46
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-# 042f858c16ca4c7ea9fb4baa62efdd44
-#: ../../index.rst:47
-msgid ":ref:`custom_query` that is used in the routing algorithms."
-msgstr ""
-
-# 13f4fade1d47458abf8ba3706110d874
-#: ../../index.rst:48
-msgid ":ref:`performance` to improve your performance."
-msgstr ""
-
-# c3ccc6e6651e47f9b9d271c60976b15c
-#: ../../index.rst:49
-msgid ":ref:`custom_wrapper` to colaborate with a wrapper."
-msgstr ""
-
-# 233aebcc461745c2b0811b7f4328ce3a
-#: ../../index.rst:50
-msgid ":ref:`recipes` to colaborate with a recipe."
-msgstr ""
-
-# 3ae724b7e3714db2942fb7c77124cfc4
-#: ../../index.rst:51
-msgid ":ref:`sampledata` that is used in the examples of this manual."
-msgstr ""
-
-# c92e843c52364963a35112272cb814fd
-#: ../../index.rst:61
-msgid ""
-"For a more complete introduction how to build a routing application read the"
-" `pgRouting Workshop <http://workshop.pgrouting.org>`_."
-msgstr "経路探索アプリケーションを構築するための、より完全なイントロダクションについては、 `pgRouting ワークショップ <http://workshop.pgrouting.org>`_ を読んで下さい。"
-
-# 524c7dc0d5654f319fc62f2ae08b86f7
-#: ../../index.rst:65
-msgid "Data Types"
-msgstr ""
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:67
-msgid ":ref:`data_types`"
-msgstr ""
-
-# ef6b2fcc629f48c7b88d3ac78527893a
-#: ../../index.rst:69
-msgid ""
-":ref:`type_cost_result` - A set of records to describe a path result with "
-"cost attribute."
-msgstr ""
-
-# 84a33ec406d2412c9e681656b4cb9b43
-#: ../../index.rst:70
-msgid ""
-":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
-" path result with cost attribute."
-msgstr ""
-
-# 6a2ba698d366498caa046c97178f05d5
-#: ../../index.rst:71
-msgid ""
-":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
-"path result with geometry attribute."
-msgstr ""
-
-# 9c4629c11bc143a184a6564177b0e7bd
-#: ../../index.rst:80
-msgid "Functions reference"
-msgstr ""
-
-# 1f3545abdf7c42cdb73e76f5f149a31b
-#: ../../index.rst:82
-msgid ":ref:`topology_functions`"
-msgstr ""
-
-# 058f97425ccb4cb5870163ebbe948a72
-#: ../../index.rst:84
-msgid ""
-":ref:`pgr_create_topology` - to create a topology based on the geometry."
-msgstr ""
-
-# e839b8e9c3664685a6dc346cac1ea039
-#: ../../index.rst:85
-msgid ""
-":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
-"the source and target information."
-msgstr ""
-
-# 5d9cd0c5ac3043b99ae4fb495036d05f
-#: ../../index.rst:86
-msgid ""
-":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
-
-# 714b5f8623914db981048d201845d040
-#: ../../index.rst:87
-msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
-msgstr ""
-
-# 5f3a1ebfa74d4463912b1c695028121d
-#: ../../index.rst:88
-msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
-msgstr ""
-
-# 655d025751764d39b841997c13775783
-#: ../../index.rst:90
-msgid ":ref:`routing_functions`"
-msgstr ""
-
-# 6a94d292d24b45f7aafda5a754a6ba30
-#: ../../index.rst:92
-msgid ""
-":ref:`pgr_apspJohnson <pgr_apsp_johnson>`- All Pairs Shortest Path, "
-"Johnson’s Algorithm"
-msgstr ""
-
-# fbda3d31d88e4df891d2095dfbb8ab52
-#: ../../index.rst:93
-msgid ""
-":ref:`pgr_apspWarshall<pgr_apsp_warshall>` - All Pairs Shortest Path, Floyd-"
-"Warshall Algorithm"
-msgstr ""
-
-# 10cf6d194dcf4af2be81f0f8034cd5cb
-#: ../../index.rst:94
-msgid ":ref:`pgr_astar<pgr_astar>` - Shortest Path A*"
-msgstr ""
-
-# 72aa55b5147341e6be8b3ac29edc5056
-#: ../../index.rst:95
-msgid ":ref:`pgr_bdAstar<bd_astar>` - Bi-directional A* Shortest Path"
-msgstr ""
-
-# 659e5f56cae84ce598a95fe83608da28
-#: ../../index.rst:96
-msgid ""
-":ref:`pgr_bdDijkstra<bd_dijkstra>` - Bi-directional Dijkstra Shortest Path"
-msgstr ""
-
-# 2a0544bf5ac444cb9f814c98ddd9cac0
-#: ../../index.rst:97
-msgid ":ref:`pgr_dijkstra<pgr_dijkstra>` - Shortest Path Dijkstra"
-msgstr ""
-
-# 0d062718bba84332bc05094be53c7b0b
-#: ../../index.rst:98
-msgid ""
-":ref:`pgr_kDijkstra<pgr_kdijkstra>` - Mutliple destination Shortest Path "
-"Dijkstra"
-msgstr ""
-
-# 388e0ef15cac4c7a87ed5f5f7d164eab
-#: ../../index.rst:99
-msgid ":ref:`pgr_ksp<ksp>` - K-Shortest Path"
-msgstr ""
-
-# 488a2b3901c548b394c466b7580ea9a4
-#: ../../index.rst:100
-msgid ":ref:`pgr_tsp<pgr_tsp>` - Traveling Sales Person"
-msgstr ""
-
-# dc4452cb04fb47fb9d72b4a408ffabeb
-#: ../../index.rst:101
-msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
-msgstr ""
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:103
-msgid ":ref:`dd_index`"
-msgstr ""
-
-# 4f472ddb75b84b6abd644e500b7415f4
-#: ../../index.rst:105
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-# 607bcbfc39c649a4b54020f8d62ce9d0
-#: ../../index.rst:106
-msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
-msgstr ""
-
-# f2e6773ccf394c739af44245aaaf5d02
-#: ../../index.rst:107
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
-
-# ef6b2fcc629f48c7b88d3ac78527893a
-#: ../../index.rst:110
-msgid ""
-":ref:`pgr_get_column_name` - to get the name of the column as is stored in "
-"the postgres administration tables."
-msgstr ""
-
-# b080d86d06dd4b248b6191f5c98ed0b7
-#: ../../index.rst:111
-msgid ""
-":ref:`pgr_get_table_name` - to retrieve the name of the table as is stored "
-"in the postgres administration tables."
-msgstr ""
-
-# 187f8a7ace1944dda76ab8ae8460d727
-#: ../../index.rst:112
-msgid ":ref:`pgr_is_column_indexed` - to check if the column is indexed."
-msgstr ""
-
-# 767ec7460a314ae0ae3ad47836c94182
-#: ../../index.rst:113
-msgid ""
-":ref:`pgr_is_column_in_table` - to check only for the existance of the "
-"column."
-msgstr ""
-
-# 6d632e8288614fc59c04dbdfa5fceb36
-#: ../../index.rst:114
-msgid ""
-":ref:`pgr_point_to_id` -to insert/get the id of the inserted point in a "
-"vertices table."
-msgstr ""
-
-# fd1def8169f543b9afc595abde9021ef
-#: ../../index.rst:115
-msgid ""
-":ref:`pgr_quote_ident` - to quotes the input text to be used as an "
-"identifier in an SQL statement string."
-msgstr ""
-
-# 79be0c2066f3417fb063d0f11b8858bb
-#: ../../index.rst:116
-msgid ":ref:`pgr_version` - to get pgRouting's version information."
-msgstr ""
-
-# e92514488cf348499952b55020516c0f
-#: ../../index.rst:117
-msgid ":ref:`pgr_versionless` - to compare two version numbers."
-msgstr ""
-
-# 52049dec1aa94a84b44977cf3645aeee
-#: ../../index.rst:118
-msgid ""
-":ref:`pgr_start_point` - to get the start point of a (multi)linestring."
-msgstr ""
-
-# b58261fb708141cfbd15342b18e83df7
-#: ../../index.rst:119
-msgid ":ref:`pgr_end_point` - to get the end point of a (multi)linestring."
-msgstr ""
-
-# ccf6b70d55024c8cb87cd02c497cd394
-#: ../../index.rst:138
-msgid "Developer"
-msgstr "開発者"
-
-# bc20d365d4514a6dbf644153d3323f8d
-#: ../../index.rst:145
-msgid ":ref:`change_log`"
-msgstr ""
-
-# a6c26cabff9f4df5bbaa3de0ed924b11
-#: ../../index.rst:147
-msgid ":ref:`changelog_2_0`"
-msgstr ""
-
-# 9d2d97e5ab6a4af08a3f5903f9a87114
-#: ../../index.rst:148
-msgid ":ref:`changelog_1_x`"
-msgstr ""
-
-# d1533298308344f6bfa8e1644e3aace0
-#: ../../index.rst:157
-msgid "Indices and tables"
-msgstr "索引とテーブル"
-
-# e49a23cdc901419e8a3d5f17ed6c6ea0
-#: ../../index.rst:158
-msgid ":ref:`genindex`"
-msgstr ":ref:`genindex`"
-
-# 1572d01be82949ec8e487a5dc596b6a4
-#: ../../index.rst:159
-msgid ":ref:`search`"
-msgstr ":ref:`search`"
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/index_man.po b/doc/i18n/ja/LC_MESSAGES/doc/index_man.po
deleted file mode 100644
index f9552ff..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/index_man.po
+++ /dev/null
@@ -1,57 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# sanak <geosanak at gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:11+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 3f6e76c37d304447af292931aa52e56f
-#: ../../index_man.rst:13
-msgid "pgRouting Reference"
-msgstr "pgRouting リファレンス"
-
-# 8347fe2ff4be4f9fbcaafbad7adac911
-#: ../../index_man.rst:15
-msgid ""
-"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
-"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
-"and other network analysis functionality."
-msgstr "pgRouting は地理空間における経路探索や他のネットワーク解析機能を提供するために、 `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ 地理空間データベースを拡張します。"
-
-# 3f626ce82e7e467c8d0b401e6a88d9ca
-#: ../../index_man.rst:22
-msgid "pgRouting provides several :ref:`common functions <common>`:"
-msgstr "pgRouting が提供する :ref:`共通関数 <common>`:"
-
-# 387e53a164e94fa1a2c34d515a8958d2
-#: ../../index_man.rst:36
-msgid "pgRouting defines a few :ref:`custom data types <data_types>`:"
-msgstr ""
-
-# af0d92429b274dda891066d0b07d530f
-#: ../../index_man.rst:50
-msgid "pgRouting functions in alphabetical order:"
-msgstr "pgRouting のアルファベット順関数:"
-
-# 9f2f876866c6467ba1b45223a42790c6
-#: ../../index_man.rst:66
-msgid "If pgRouting is compiled with \"Driving Distance\" enabled:"
-msgstr "pgRouting が \"Driving Distance\" 有効でコンパイルされている場合:"
-
-# 1e0ce2246f904afbaf6c882025206eaa
-#: ../../index_man.rst:75
-msgid "Some functions from previous releases may have been removed."
-msgstr "以前のリリースから、いくつかの関数が削除されているかもしれません。"
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/changelog/1_x.po b/doc/i18n/ja/LC_MESSAGES/doc/src/changelog/1_x.po
deleted file mode 100644
index a9b68bf..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/changelog/1_x.po
+++ /dev/null
@@ -1,152 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:37+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 80139f0bb8004897a03df48a5421cd3e
-#: ../../src/changelog/1_x.rst:13
-msgid "pgRouting 1.x Release Notes"
-msgstr ""
-
-# 5a7212eff9be4a0d95a236c540a97f10
-#: ../../src/changelog/1_x.rst:15
-msgid ""
-"The following release notes have been copied from the previous "
-"``RELEASE_NOTES`` file and are kept as a reference. Release notes starting "
-"with :ref:`version 2.0.0 <changelog_2_0>` will follow a different schema."
-msgstr ""
-
-# b5ad5e6d0b78449890dda7fa6d30ac8e
-#: ../../src/changelog/1_x.rst:20
-msgid "Changes for release 1.05"
-msgstr ""
-
-# b37e8bfbe2794101a72e1fbb116f22cd
-# 2f1abbe57331424397cb03d0a5fafee2
-# 2da690cfaaea4d369a7bdb9f9d241bf2
-# e3524add2c604532a66d1bf9a62c5487
-#: ../../src/changelog/1_x.rst:22 ../../src/changelog/1_x.rst:29
-#: ../../src/changelog/1_x.rst:50 ../../src/changelog/1_x.rst:57
-msgid "Bugfixes"
-msgstr ""
-
-# a623678fab0744a3a38546523303795f
-#: ../../src/changelog/1_x.rst:26
-msgid "Changes for release 1.03"
-msgstr ""
-
-# e48813b4d3814054819ed027aa138f70
-#: ../../src/changelog/1_x.rst:28
-msgid "Much faster topology creation"
-msgstr ""
-
-# bdcfed86022a4309a80715bf768350ee
-#: ../../src/changelog/1_x.rst:33
-msgid "Changes for release 1.02"
-msgstr ""
-
-# 3803dd4ae425474caf39f6e7a2f28d9a
-# 0c92f6ddb54741f590c61761ee27cfbe
-#: ../../src/changelog/1_x.rst:35 ../../src/changelog/1_x.rst:42
-msgid "Shooting* bugfixes"
-msgstr ""
-
-# b304d596bae846d98c278686a2c64275
-#: ../../src/changelog/1_x.rst:36
-msgid "Compilation problems solved"
-msgstr ""
-
-# 741de983a5cf41eb98a113e54b847ec1
-#: ../../src/changelog/1_x.rst:40
-msgid "Changes for release 1.01"
-msgstr ""
-
-# 5f23e892e7ad4db6877db1f07f53a7ab
-#: ../../src/changelog/1_x.rst:46
-msgid "Changes for release 1.0"
-msgstr ""
-
-# 3cb70fa7d3064130a540fc0d347e55e7
-#: ../../src/changelog/1_x.rst:48
-msgid "Core and extra functions are separated"
-msgstr ""
-
-# 28375001527c4b8b80781351f8205d8a
-#: ../../src/changelog/1_x.rst:49
-msgid "Cmake build process"
-msgstr ""
-
-# 4c1b7575c8df44fab1668818780b0b4a
-#: ../../src/changelog/1_x.rst:54
-msgid "Changes for release 1.0.0b"
-msgstr ""
-
-# d7a94776f1854770a57103008fe4e7c9
-#: ../../src/changelog/1_x.rst:56
-msgid "Additional SQL file with more simple names for wrapper functions"
-msgstr ""
-
-# faf0ddf9d574472fabced8dc174aa067
-#: ../../src/changelog/1_x.rst:61
-msgid "Changes for release 1.0.0a"
-msgstr ""
-
-# db33894da05b41928897b7e5f71c58b9
-#: ../../src/changelog/1_x.rst:63
-msgid "Shooting* shortest path algorithm for real road networks"
-msgstr ""
-
-# f2c0f4381c3e47b6bde5b359c1e2bbcc
-#: ../../src/changelog/1_x.rst:64
-msgid "Several SQL bugs were fixed"
-msgstr ""
-
-# 6df06ca83d7d4d628cd6dec8fc31a678
-#: ../../src/changelog/1_x.rst:68
-msgid "Changes for release 0.9.9"
-msgstr ""
-
-# e5dce1be773a447db6c9c01820775913
-#: ../../src/changelog/1_x.rst:70
-msgid "PostgreSQL 8.2 support"
-msgstr ""
-
-# 0e71a0116ff04ba2bfb985d5cebf4210
-#: ../../src/changelog/1_x.rst:71
-msgid ""
-"Shortest path functions return empty result if they couldn’t find any path"
-msgstr ""
-
-# 5eecb0b7cf404ff383192dc71ba233a9
-#: ../../src/changelog/1_x.rst:75
-msgid "Changes for release 0.9.8"
-msgstr ""
-
-# ef658c0aaf2f482a99d1dd9691b0762d
-#: ../../src/changelog/1_x.rst:77
-msgid "Renumbering scheme was added to shortest path functions"
-msgstr ""
-
-# e47ae703842949b280bd34e4f45a1c76
-#: ../../src/changelog/1_x.rst:78
-msgid "Directed shortest path functions were added"
-msgstr ""
-
-# 46ab0c039fee4edcb20db32c73c62757
-#: ../../src/changelog/1_x.rst:79
-msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/changelog/2_0.po b/doc/i18n/ja/LC_MESSAGES/doc/src/changelog/2_0.po
deleted file mode 100644
index 671e7ce..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/changelog/2_0.po
+++ /dev/null
@@ -1,164 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:37+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# c1b1516c8da846a195824e5281582281
-#: ../../src/changelog/2_0.rst:13
-msgid "pgRouting 2.0 Release Notes"
-msgstr ""
-
-# 3e67d45a281c48bd9d6eea1ce58d38c3
-#: ../../src/changelog/2_0.rst:15
-msgid ""
-"With the release of pgRouting 2.0 the library has abandoned backwards "
-"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. We did this "
-"so we could restructure pgRouting, standardize the function naming, and "
-"prepare the project for future development. As a result of this effort, we "
-"have been able to simplify pgRouting, add significant new functionality, "
-"integrate documentation and testing into the source tree and make it easier "
-"for multiple developers to make contribution."
-msgstr ""
-
-# b7dbd742ac1c45cea48afc0b61bf3a35
-#: ../../src/changelog/2_0.rst:17
-msgid ""
-"For important changes see the following release notes. To see the full list "
-"of changes check the list of `Git commits "
-"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
-msgstr ""
-
-# f0cd146d674e46449ba99a8100934ec0
-#: ../../src/changelog/2_0.rst:28
-msgid "Changes for 2.0.0"
-msgstr ""
-
-# ef9ef27b926145108086d936b6ca0b28
-#: ../../src/changelog/2_0.rst:30
-msgid ""
-"Graph Analytics - tools for detecting and fixing connection some problems in"
-" a graph"
-msgstr ""
-
-# 42f88056af7e4432b32f065a7a24a919
-#: ../../src/changelog/2_0.rst:31
-msgid "A collection of useful utility functions"
-msgstr ""
-
-# 2f534c34e0974efe890889f3b21a0b4d
-#: ../../src/changelog/2_0.rst:32
-msgid ""
-"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
-msgstr ""
-
-# 8ce3dd738c2d4dc4b31299c1a0914faf
-#: ../../src/changelog/2_0.rst:33
-msgid ""
-"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
-"pgr_bdDijkstra)"
-msgstr ""
-
-# 8f43c2d6075f49e79bbaa6f8aabab4da
-#: ../../src/changelog/2_0.rst:34
-msgid "One to many nodes search (pgr_kDijkstra)"
-msgstr ""
-
-# c4b5876cdfd748b0b212c0934c824f64
-#: ../../src/changelog/2_0.rst:35
-msgid "K alternate paths shortest path (pgr_ksp)"
-msgstr ""
-
-# acd1a044738b4276a2e8e94a0dd76534
-#: ../../src/changelog/2_0.rst:36
-msgid ""
-"New TSP solver that simplifies the code and the build process (pgr_tsp), "
-"dropped \"Gaul Library\" dependency"
-msgstr ""
-
-# 8f926050f9324e25900b05fed56a589e
-#: ../../src/changelog/2_0.rst:37
-msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
-msgstr ""
-
-# d1e83f5c735b4bfcba1d268ea2935a7f
-#: ../../src/changelog/2_0.rst:38
-msgid "Dropped support for Shooting Star"
-msgstr ""
-
-# ca6f7155ffb1427ba1c145efd90b72e3
-#: ../../src/changelog/2_0.rst:39
-msgid ""
-"Built a test infrastructure that is run before major code changes are "
-"checked in"
-msgstr ""
-
-# 3d47be6570aa47e3b48a446cfd55c3f8
-#: ../../src/changelog/2_0.rst:40
-msgid ""
-"Tested and fixed most all of the outstanding bugs reported against 1.x that "
-"existing in the 2.0-dev code base."
-msgstr ""
-
-# f99da159237841a583466e7bdaa5a964
-#: ../../src/changelog/2_0.rst:41
-msgid "Improved build process for Windows"
-msgstr ""
-
-# eaef81c47c28441d9c6d9c55785f6664
-#: ../../src/changelog/2_0.rst:42
-msgid "Modular library design"
-msgstr ""
-
-# 5b1f3d44b55d4502b2761acd0aed5b08
-#: ../../src/changelog/2_0.rst:43
-msgid "Compatibility with PostgreSQL 9.1 or newer"
-msgstr ""
-
-# 592cb52588884e7e88488112e5001c71
-#: ../../src/changelog/2_0.rst:44
-msgid "Compatibility with PostGIS 2.0 or newer"
-msgstr ""
-
-# 6f72789ca5ae4828bbe00dd0b44ed049
-#: ../../src/changelog/2_0.rst:45
-msgid "Installs as PostgreSQL EXTENSION"
-msgstr ""
-
-# 7f85fdaaa5374934b83c0baef45e2074
-#: ../../src/changelog/2_0.rst:46
-msgid "Return types refactored and unified"
-msgstr ""
-
-# 60c67a38e1594c7cb774d5b29c284a17
-#: ../../src/changelog/2_0.rst:47
-msgid "Support for table SCHEMA in function parameters"
-msgstr ""
-
-# da8aea5a0d034dce84e5a2bfd3e2b342
-#: ../../src/changelog/2_0.rst:48
-msgid "Support for ``st_`` PostGIS function prefix"
-msgstr ""
-
-# c204bde79a394b93a1a3c46bbedab1a0
-#: ../../src/changelog/2_0.rst:49
-msgid "Added ``pgr_`` prefix to functions and types"
-msgstr ""
-
-# d7df479e712e4c3689e121a22f45f909
-#: ../../src/changelog/2_0.rst:50
-msgid "Better documentation: http://docs.pgrouting.org"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/developer/discontinued.po b/doc/i18n/ja/LC_MESSAGES/doc/src/developer/discontinued.po
deleted file mode 100644
index 32b7ea1..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/developer/discontinued.po
+++ /dev/null
@@ -1,55 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:36+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 09366a0298d04b47be343c8bf8c6e12a
-#: ../../src/developer/discontinued.rst:13
-msgid "Discontinued Functions"
-msgstr ""
-
-# 8ab172e3591c493f94919b9391d65313
-#: ../../src/developer/discontinued.rst:15
-msgid ""
-"Especially with new major releases functionality may change and functions "
-"may be discontinued for various reasons. Functionality that has been "
-"discontinued will be listed here."
-msgstr ""
-
-# 6bb9bb9b649544eb9384e2c03fa6e60d
-#: ../../src/developer/discontinued.rst:22
-msgid "Shooting Star algorithm"
-msgstr ""
-
-# 6c87b9ac3f1b441a88d4bd7a32449eeb
-#: ../../src/developer/discontinued.rst:24
-msgid "Removed with 2.0.0"
-msgstr ""
-
-# 6afa2318319f4b5e93e9eb99d1dd1843
-#: ../../src/developer/discontinued.rst:25
-msgid "Unresolved bugs, no maintainer, replaced with :ref:`trsp`"
-msgstr ""
-
-# 7e711820b4534143a7fd0d1aa4c5cc58
-#: ../../src/developer/discontinued.rst:26
-msgid ""
-"Please :ref:`contact us <support>` if you're interested to sponsor or "
-"maintain this algorithm. The function signature is still available in "
-":ref:`common_legacy` but it is just a wrapper that throws an error. We have "
-"not included any of the old code for this in this release."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/developer/index.po b/doc/i18n/ja/LC_MESSAGES/doc/src/developer/index.po
deleted file mode 100644
index d576218..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/developer/index.po
+++ /dev/null
@@ -1,245 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-04 04:17+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 1d69d70e3de44767ae858314df13b562
-#: ../../src/developer/index.rst:13
-msgid "Developer's Guide"
-msgstr ""
-
-# 82f29db373764b3e96cdb308263a9321
-#: ../../src/developer/index.rst:16
-msgid ""
-"All documentation should be in reStructuredText format. See: "
-"<http://docutils.sf.net/rst.html> for introductory docs."
-msgstr ""
-
-# 5641994c410248fbb2042daf032b4f2d
-#: ../../src/developer/index.rst:20
-msgid "Source Tree Layout"
-msgstr ""
-
-# 696f1ffe5fef47a68eb3f899e315ac24
-#: ../../src/developer/index.rst:23
-msgid "cmake scripts used as part of our build system."
-msgstr ""
-
-# 1f0669f1dce543df8ec72ab64c0a3435
-#: ../../src/developer/index.rst:26
-msgid ""
-"This is the algorithm source tree. Each alogorithm should be contained in "
-"its on sub-tree with doc, sql, src, and test sub-directories. This might get"
-" renamed to \"algorithms\" at some point."
-msgstr ""
-
-# d510542616954ff48b4208874a211b08
-#: ../../src/developer/index.rst:31
-msgid ""
-"This is an implementation of A* Search based on using Boost Graph libraries "
-"for its implementation. This is a Dijkstra shortest path implementation with"
-" a Euclidean Heuristic."
-msgstr ""
-
-# 82e5ed804fa34202903c4ca49117d16e
-#: ../../src/developer/index.rst:36
-msgid ""
-"At the moment this does not have an core in \"src\", but does have a lot of "
-"SQL wrapper code and topology code in the \"sql\" directory. *Algorithm "
-"specific wrappers should get move to the algorithm tree and appropriate "
-"tests should get added to validate the wrappers.*"
-msgstr ""
-
-# bfff36e01ca84eadbf8dd70bb1d2276b
-#: ../../src/developer/index.rst:42
-msgid ""
-"This is an implementation of Dikjstra's shortest path solution using Boost "
-"Graph libraries for the implementation."
-msgstr ""
-
-# 4b632593c518431abd06afc2badcf018
-#: ../../src/developer/index.rst:46
-msgid ""
-"This optional package creates driving distance polygons based on solving a "
-"Dijkstra shortest path solution, then creating polygons based on equal cost "
-"distances from the start point. This optional package requires CGAL "
-"libraries to be installed."
-msgstr ""
-
-# 936e4db4894447a899f6c0b8ca26f617
-#: ../../src/developer/index.rst:52
-msgid ""
-"*DEPRECATED and DOES NOT WORK and IS BEING REMOVED* This is an edge based "
-"shortest path algorithm that supports turn restrictions. It is based on "
-"Boost Graph. Do *NOT* use this algorithm as it is broken, instead use *trsp*"
-" which has the same functionality and is faster and give correct results."
-msgstr ""
-
-# c7f26387b9b24096ba96fb7a518e437a
-#: ../../src/developer/index.rst:59
-msgid ""
-"This is a turn restricted shortest path algorithm. It has some nice features"
-" like you can specify the start and end points as a percentage along an "
-"edge. Restrictions are stored in a separate table from the graph edges and "
-"this make it easier to manage the data."
-msgstr ""
-
-# 3141234121954acaa2dc52065d5d7dce
-#: ../../src/developer/index.rst:65
-msgid ""
-"This optional package provides the ability to compute traveling salesman "
-"problem solutions and compute the resulting route. This optional package "
-"requires GAUL libaries to be installed."
-msgstr ""
-
-# 5ace4e065d5c41c2808f78da0db17058
-#: ../../src/developer/index.rst:70
-msgid "Miscellaneous scripts and tools."
-msgstr ""
-
-# 498a3b11a76644cfa7088aa739876e51
-#: ../../src/developer/index.rst:73
-msgid ""
-"This is the output directory where compiled libraries and installation "
-"targets are staged before installation."
-msgstr ""
-
-# 52c0a49d07ec469bb08dae55c7b29f1d
-#: ../../src/developer/index.rst:78
-msgid "Documentation Layout"
-msgstr ""
-
-# 223870fbd494436ba478618c7f0655ab
-#: ../../src/developer/index.rst:80
-msgid ""
-"*As noted above all documentation should be done using reStructuredText "
-"formated files.*"
-msgstr ""
-
-# 056f8e732df8417c8d30876629544918
-#: ../../src/developer/index.rst:83
-msgid ""
-"Documentation is distributed into the source tree. This top level \"doc\" "
-"directory is intended for high level documentation cover subjects like:"
-msgstr ""
-
-# cb7d40e7fa8f4bf99586caad505ee056
-#: ../../src/developer/index.rst:86
-msgid "Compiling and testing"
-msgstr ""
-
-# f8297a944ea14512ac068fffbebb9704
-#: ../../src/developer/index.rst:87
-msgid "Installation"
-msgstr ""
-
-# 2623e7a6862948a88651b230afb04066
-#: ../../src/developer/index.rst:88
-msgid "Tutorials"
-msgstr ""
-
-# 48cc983d7eb14596bc213e04f2424ef5
-#: ../../src/developer/index.rst:89
-msgid "Users' Guide front materials"
-msgstr ""
-
-# 35d4289409ff4e20b9f3fc99e5ff3ebc
-#: ../../src/developer/index.rst:90
-msgid "Reference Manual front materials"
-msgstr ""
-
-# 0a39de23e4754aeaaf23bda932025e46
-#: ../../src/developer/index.rst:91
-msgid "etc"
-msgstr ""
-
-# 1d97d5eb207f4948a5d054cbc1f0d11d
-#: ../../src/developer/index.rst:93
-msgid ""
-"Since the algorithm specific documentation is contained in the source tree "
-"with the algorithm specific files, the process of building the documentation"
-" and publishing it will need to assemble the details with the front material"
-" as needed."
-msgstr ""
-
-# 4a479c8d44504c31bb0c966f29b59fca
-#: ../../src/developer/index.rst:98
-msgid ""
-"Also, to keep the \"doc\" directory from getting cluttered, each major book "
-"like those listed above, should be contained in a separate directory under "
-"\"doc\". Any images or other materials related to the book should also be "
-"kept in that directory."
-msgstr ""
-
-# c7f0aeb3bd8b446780356e0c8cda8810
-#: ../../src/developer/index.rst:105
-msgid "Testing Infrastructure"
-msgstr ""
-
-# c623e96a0a244704afbc0fd1bdc839eb
-#: ../../src/developer/index.rst:107
-msgid ""
-"There is a very basic testing infrastructure put in place. Here are the "
-"basics of how it works. We need more test cases. Longer term we should "
-"probably get someone to setup travis-ci or jenkins testing frameworks."
-msgstr ""
-
-# 795beec501574346bf79b70ec796327d
-#: ../../src/developer/index.rst:111
-msgid "Here is the graph for the TRSP tests."
-msgstr ""
-
-# c307557b6e9345bb80ecec65181e0e3b
-#: ../../src/developer/index.rst:115
-msgid ""
-"Tests are run via the script at the top level tools/test-runner.pl and it "
-"runs all the test configured tests and at the moment just dumps the results "
-"structure of the test. This can be prettied up later."
-msgstr ""
-
-# 0124c9e435cd45ed8add01948a01c8b4
-#: ../../src/developer/index.rst:119
-msgid ""
-"It also assumes that you have installed the libraries as it tests using the "
-"installed postgresql. This probably needs to be made smarter so we can test "
-"out of the build tree. I'll need to think about that."
-msgstr ""
-
-# ba9f62496a8043bfa546ff97514644ee
-#: ../../src/developer/index.rst:124
-msgid ""
-"Basically each .../test/ directory should include one *test.conf* file that "
-"is a perl script fragment that defines what data files to load and what "
-"tests to run. I have built in some mechanisms to allow test and data to be "
-"pg version and postgis version specific, but I'm not using that yet. So for "
-"example, *core/trsp/test/test-any-00.data* is a sql plain text dump that "
-"will load and needed data for a set of tests. This is also the graph in the "
-"image above. You can specify multiple files to load, but as a group they "
-"need to have unique names."
-msgstr ""
-
-# 43961b4cdd0949378b7a7fc420ef8db7
-#: ../../src/developer/index.rst:133
-msgid ""
-"core/trsp/test/test-any-00.test is a sql command to be run. It will get run "
-"as:"
-msgstr ""
-
-# bcfc5aa90d5f426eb6d757230beba796
-#: ../../src/developer/index.rst:141
-msgid "Then if there is a difference then an test failure is reported."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/developer/sampledata.po b/doc/i18n/ja/LC_MESSAGES/doc/src/developer/sampledata.po
deleted file mode 100644
index 97fd8f3..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/developer/sampledata.po
+++ /dev/null
@@ -1,59 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# sanak <geosanak at gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 8292d60ebfc34fb492ea6193998bab3e
-#: ../../src/developer/sampledata.rst:13
-msgid "Sample Data"
-msgstr "サンプルデータ"
-
-# 4b0d58dd2dff4d9c97134f99fe6b536f
-#: ../../src/developer/sampledata.rst:15
-msgid ""
-"The documentation provides very simple example queries based on a small "
-"sample network. To be able to execute the sample queries, run the following "
-"SQL commands to create a table with a small network data set."
-msgstr ""
-
-# e01baf347c854525b5c3bdc1af8d1523
-#: ../../src/developer/sampledata.rst:20
-msgid "Create table"
-msgstr "テーブル作成"
-
-# f6ec8db09c164800a1e2d817a06e2a20
-#: ../../src/developer/sampledata.rst:40
-msgid "Insert network data"
-msgstr "ネットワークデータの挿入"
-
-# 41d209ca693c4739986152fcdfcb3d25
-#: ../../src/developer/sampledata.rst:70
-msgid ""
-"Before you test a routing function use this query to fill the source and "
-"target columns."
-msgstr ""
-
-# 449efcf19ef14ade9797f5818e87ab24
-#: ../../src/developer/sampledata.rst:77
-msgid "This table is used in some of our examples"
-msgstr ""
-
-# eb2ac2aa18da494185f02f4a2fe0427d
-#: ../../src/developer/sampledata.rst:94
-msgid "The network created in *edge_table*"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/installation/build.po b/doc/i18n/ja/LC_MESSAGES/doc/src/installation/build.po
deleted file mode 100644
index bbb412b..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/installation/build.po
+++ /dev/null
@@ -1,91 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:38+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# c5cf6a87972b42e690264e99c7e7f795
-#: ../../src/installation/build.rst:13
-msgid "Build Guide"
-msgstr ""
-
-# 5527da7dad584795b7924d50c9a79bc5
-#: ../../src/installation/build.rst:15
-msgid ""
-"To be able to compile pgRouting make sure that the following dependencies "
-"are met:"
-msgstr ""
-
-# c618619f835444dd967f78370b841d92
-#: ../../src/installation/build.rst:17
-msgid "C and C++ compilers"
-msgstr ""
-
-# c6f85509591d47b1bdd395919b761319
-#: ../../src/installation/build.rst:18
-msgid "Postgresql version >= 8.4 (>= 9.1 recommended)"
-msgstr ""
-
-# 61951def91f1402395e57355188cec62
-#: ../../src/installation/build.rst:19
-msgid "PostGIS version >= 1.5 (>= 2.0 recommended)"
-msgstr ""
-
-# 6a0e008243f44ec2bb618be4f76a271c
-#: ../../src/installation/build.rst:20
-msgid "The Boost Graph Library (BGL). Version >= [TBD]"
-msgstr ""
-
-# 2179e1be36474631a70ac3b85e801064
-#: ../../src/installation/build.rst:21
-msgid "CMake >= 2.8.8"
-msgstr ""
-
-# a2d266c73ac3427a99d9bf46c26d448c
-#: ../../src/installation/build.rst:22
-msgid "(optional, for Driving Distance) CGAL >= [TBD]"
-msgstr ""
-
-# ae32d61c4d0e4d94ab13d2c5f5a63605
-#: ../../src/installation/build.rst:23
-msgid "(optional, for Documentation) Sphinx >= 1.1"
-msgstr ""
-
-# e4af919f484c44b5abe44e0b1687d39d
-#: ../../src/installation/build.rst:27
-msgid "For MinGW on Windows"
-msgstr ""
-
-# b52927567d764a66bf438f60b059cec7
-#: ../../src/installation/build.rst:39
-msgid "For Linux"
-msgstr ""
-
-# 0cca23f827f646d08e5a07057f388eb0
-#: ../../src/installation/build.rst:51
-msgid "With Documentation"
-msgstr ""
-
-# 2addc81e2db341c797d8531756937c4e
-#: ../../src/installation/build.rst:53
-msgid ""
-"Build with documentation (requires `Sphinx <http://sphinx-doc.org/>`_):"
-msgstr ""
-
-# 27e2e61f20fe4b048aa384365b49ced1
-#: ../../src/installation/build.rst:60
-msgid "Rebuild modified documentation only:"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/installation/index.po b/doc/i18n/ja/LC_MESSAGES/doc/src/installation/index.po
deleted file mode 100644
index f4bc127..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/installation/index.po
+++ /dev/null
@@ -1,202 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# b41e3e6e82bc4cc1ae494ad03a5e3db0
-#: ../../src/installation/index.rst:13
-msgid "Installation"
-msgstr ""
-
-# c8a69d5d6c9242ad82bf2995a2d43c40
-#: ../../src/installation/index.rst:15
-msgid ""
-"Binary packages are provided for the current version on the following "
-"platforms:"
-msgstr ""
-
-# 724bcb2a14ac419f99c2f7d5cfe22b6d
-#: ../../src/installation/index.rst:19
-msgid "Windows"
-msgstr ""
-
-# b683dadc50114de7a4bd0073be4510cf
-#: ../../src/installation/index.rst:21
-msgid "Winnie Bot Experimental Builds:"
-msgstr ""
-
-# 006e74f1eaf042779773f59248230fcb
-#: ../../src/installation/index.rst:23
-msgid ""
-"`PostgreSQL 9.2 32-bit, 64-bit "
-"<http://winnie.postgis.net/download/windows/pg92/buildbot/>`_"
-msgstr ""
-
-# 7825f3f82e3e426188a552cac3d76d0c
-#: ../../src/installation/index.rst:27
-msgid "Ubuntu/Debian"
-msgstr ""
-
-# 5d5652a1d3a04382800239684a4d26cc
-#: ../../src/installation/index.rst:29
-msgid "Ubuntu packages are available in Launchpad repositories:"
-msgstr ""
-
-# 761afc4473ab4a35aff506637c8e80aa
-#: ../../src/installation/index.rst:31
-msgid "*stable* https://launchpad.net/~georepublic/+archive/pgrouting"
-msgstr ""
-
-# 6500186f8e3d42c88983fa564fc4facf
-#: ../../src/installation/index.rst:32
-msgid ""
-"*unstable* https://launchpad.net/~georepublic/+archive/pgrouting-unstable"
-msgstr ""
-
-# 7050e2f75f7b42fea67597e63cf2f111
-#: ../../src/installation/index.rst:43
-msgid ""
-"Use `UbuntuGIS-unstable PPA <https://launchpad.net/~ubuntugis/+archive"
-"/ubuntugis-unstable>`_ to install PostGIS 2.0."
-msgstr ""
-
-# ce72f9b5cb814c5fb4a4ec48c0f7a294
-#: ../../src/installation/index.rst:47
-msgid "RHEL/CentOS/Fedora"
-msgstr ""
-
-# 06c08177883146369e10318b54f2662a
-#: ../../src/installation/index.rst:49
-msgid ""
-"Fedora RPM's: https://admin.fedoraproject.org/pkgdb/acls/name/pgRouting"
-msgstr ""
-
-# b6146b0917b441268525a1fe54b0f17e
-#: ../../src/installation/index.rst:53
-msgid "OS X"
-msgstr ""
-
-# cdc507aa586e4ac8b00a7d5818bde423
-#: ../../src/installation/index.rst:57
-msgid "Homebrew"
-msgstr ""
-
-# e949ab234590487ca8c4cfa47be11908
-#: ../../src/installation/index.rst:65
-msgid "Source Package"
-msgstr ""
-
-# ec1db5ae27a4451fae0ee5b486baa0db
-#: ../../src/installation/index.rst:68
-msgid "Git 2.0.0-rc1 release"
-msgstr ""
-
-# 8f33d62c1dda4436a3c0a75489dec129
-#: ../../src/installation/index.rst:68
-msgid "`v2.0.0-rc1.tar.gz`_"
-msgstr "`v2.0.0-rc1.tar.gz`_"
-
-# 4eb23002a0464e94a6e62cdef2c72234
-#: ../../src/installation/index.rst:68
-msgid "`v2.0.0-rc1.zip`_"
-msgstr "`v2.0.0-rc1.zip`_"
-
-# b5a17e917a89472c955c6f2cfdfff517
-#: ../../src/installation/index.rst:69
-msgid "Git 2.0.0-beta release"
-msgstr ""
-
-# 3db241a58e4c4d6f868116a6770030b5
-#: ../../src/installation/index.rst:69
-msgid "`v2.0.0-beta.tar.gz`_"
-msgstr "`v2.0.0-beta.tar.gz`_"
-
-# 1e21c08cc7c84816b3ca5cc813d1470d
-#: ../../src/installation/index.rst:69
-msgid "`v2.0.0-beta.zip`_"
-msgstr "`v2.0.0-beta.zip`_"
-
-# 2286b25add114b9e82622ff02d730a8e
-#: ../../src/installation/index.rst:70
-msgid "Git 2.0.0-alpha release"
-msgstr ""
-
-# 3db12a14f5b94a0eae1772d2f84c9058
-#: ../../src/installation/index.rst:70
-msgid "`v2.0.0-alpha.tar.gz`_"
-msgstr "`v2.0.0-alpha.tar.gz`_"
-
-# 9ecc4cba22564943855591c0079db428
-#: ../../src/installation/index.rst:70
-msgid "`v2.0.0-alpha.zip`_"
-msgstr "`v2.0.0-alpha.zip`_"
-
-# 708d8ebb02c2479c86755b38333b9e3d
-#: ../../src/installation/index.rst:71
-msgid "Git master branch"
-msgstr ""
-
-# 07931d9e017b4fc7aabc4ca1affa9ec4
-#: ../../src/installation/index.rst:71
-msgid "`master.tar.gz`_"
-msgstr "`master.tar.gz`_"
-
-# 8ed2f03dcd4b4be1bfee86da4d9bcdc9
-#: ../../src/installation/index.rst:71
-msgid "`master.zip`_"
-msgstr "`master.zip`_"
-
-# bded77386d4a4124b17d0ee2903d5877
-#: ../../src/installation/index.rst:72
-msgid "Git develop branch"
-msgstr ""
-
-# 9da6c796cd3045c28c04775b7c49e27c
-#: ../../src/installation/index.rst:72
-msgid "`develop.tar.gz`_"
-msgstr "`develop.tar.gz`_"
-
-# 1671db28e6df4d6094c2fb0a5afe4106
-#: ../../src/installation/index.rst:72
-msgid "`develop.zip`_"
-msgstr "`develop.zip`_"
-
-# 5a32f08a903c487092dbfb1eae278d84
-#: ../../src/installation/index.rst:92
-msgid "Using Git"
-msgstr ""
-
-# f1630712900a49db825c618380b4a713
-#: ../../src/installation/index.rst:94
-msgid "Git protocol (read-only):"
-msgstr ""
-
-# 9c36f0b296a343ea9c7103d514b6af07
-#: ../../src/installation/index.rst:101
-msgid "HTTPS protocol (read-only): .. code-block:: bash"
-msgstr ""
-
-# 79827ebd49da4add88e7275c6abc8a5d
-#: ../../src/installation/index.rst:104
-msgid "git clone https://github.com/pgRouting/pgrouting.git"
-msgstr ""
-
-# 00af13df90844038a100e3ed84ea8572
-#: ../../src/installation/index.rst:107
-msgid "See :ref:`build` for notes on compiling from source."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/introduction/index.po b/doc/i18n/ja/LC_MESSAGES/doc/src/introduction/index.po
deleted file mode 100644
index 22baeb7..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/introduction/index.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:20+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 3cb0b7c03fa84c59a8bdb4f5efd33fec
-#: ../../src/introduction/index.rst:23
-msgid "Indices and tables"
-msgstr "索引とテーブル"
-
-# 8cbfd2a6f6d44a1599cfff832b626535
-#: ../../src/introduction/index.rst:24
-msgid ":ref:`genindex`"
-msgstr ":ref:`genindex`"
-
-# df46715e85104bf48ebb9fb9005099e0
-#: ../../src/introduction/index.rst:25
-msgid ":ref:`search`"
-msgstr ":ref:`search`"
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/introduction/support.po b/doc/i18n/ja/LC_MESSAGES/doc/src/introduction/support.po
deleted file mode 100644
index f994bf9..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/introduction/support.po
+++ /dev/null
@@ -1,212 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:37+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 3f3e673fb58a4facae23af5d85b92a3e
-#: ../../src/introduction/support.rst:13
-msgid "Support"
-msgstr ""
-
-# 054afbc73bff4758b3f1f2f23c57f16c
-#: ../../src/introduction/support.rst:15
-msgid ""
-"pgRouting community support is available through `website "
-"<http://www.pgrouting.org>`_, `documentation <http://docs.pgrouting.org>`_, "
-"tutorials, mailing lists and others. If you’re looking for :ref:`commercial "
-"support <support_commercial>`, find below a list of companies providing "
-"pgRouting development and consulting services."
-msgstr ""
-
-# 00eb6c3f6a9d4ffa879660f666f09fd2
-#: ../../src/introduction/support.rst:19
-msgid "Reporting Problems"
-msgstr ""
-
-# f852f553af29413fa977344ea5ebe860
-#: ../../src/introduction/support.rst:21
-msgid ""
-"Bugs are reported and managed in an `issue tracker "
-"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
-"steps:"
-msgstr ""
-
-# 6db36a1db3dd43e58fd38f9dbd64a222
-#: ../../src/introduction/support.rst:23
-msgid ""
-"Search the tickets to see if your problem has already been reported. If so, "
-"add any extra context you might have found, or at least indicate that you "
-"too are having the problem. This will help us prioritize common issues."
-msgstr ""
-
-# c1bf71ad2fbb411bb697d605d746d9a7
-#: ../../src/introduction/support.rst:24
-msgid ""
-"If your problem is unreported, create a `new issue "
-"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
-msgstr ""
-
-# fe9adaa2deb041a29b790096a0172f6d
-#: ../../src/introduction/support.rst:25
-msgid ""
-"In your report include explicit instructions to replicate your issue. The "
-"best tickets include the exact SQL necessary to replicate a problem."
-msgstr ""
-
-# a1b37c7ea578450897528b3c37b048d1
-#: ../../src/introduction/support.rst:26
-msgid ""
-"If you can test older versions of PostGIS for your problem, please do. On "
-"your ticket, note the earliest version the problem appears."
-msgstr ""
-
-# 7c99e581b4624250aff7cdae6bdcd0c8
-#: ../../src/introduction/support.rst:27
-msgid ""
-"For the versions where you can replicate the problem, note the operating "
-"system and version of pgRouting, PostGIS and PostgreSQL."
-msgstr ""
-
-# b5fd7543c8b54f34b556a133fb638174
-#: ../../src/introduction/support.rst:31
-msgid "Mailing List and GIS StackExchange"
-msgstr ""
-
-# 2867bdf7c4d8450b86de7702b26e37ab
-#: ../../src/introduction/support.rst:33
-msgid ""
-"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
-"server:"
-msgstr ""
-
-# 36b218682a5b495386d69caea89554a0
-#: ../../src/introduction/support.rst:35
-msgid ""
-"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
-msgstr ""
-
-# af2dbf4b5c35487cbbf47c409093d3c3
-#: ../../src/introduction/support.rst:36
-msgid ""
-"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
-"dev"
-msgstr ""
-
-# 37947883c7b74e47bfa51cdac68b080a
-#: ../../src/introduction/support.rst:38
-msgid ""
-"For general questions and topics about how to use pgRouting, please write to"
-" the user mailing list."
-msgstr ""
-
-# 7e3dfcc3a31a4ba3bc41f6c7d5a3c19b
-#: ../../src/introduction/support.rst:40
-msgid ""
-"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
-" tag the question with ``pgrouting``. Find all questions tagged with "
-"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
-"or subscribe to the `pgRouting questions feed "
-"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
-msgstr ""
-
-# 18af2d65168042edac691be50d758d38
-#: ../../src/introduction/support.rst:46
-msgid "Commercial Support"
-msgstr ""
-
-# 01737e94c36042388ff00a08c37c5837
-#: ../../src/introduction/support.rst:48
-msgid ""
-"For users who require professional support, development and consulting "
-"services, consider contacting any of the following organizations, which have"
-" significantly contributed to the development of pgRouting:"
-msgstr ""
-
-# 698641cbd88f432f9273710e46df58c5
-#: ../../src/introduction/support.rst:53
-msgid "**Company**"
-msgstr ""
-
-# 0ab2194260424eb395df6be8d03f0611
-#: ../../src/introduction/support.rst:54
-msgid "**Offices in**"
-msgstr ""
-
-# e3c7d214f6aa4fc5bc8e54c16bd586b3
-#: ../../src/introduction/support.rst:55
-msgid "**Website**"
-msgstr ""
-
-# 6342d8daef894a66b042852b7aed0be3
-#: ../../src/introduction/support.rst:56
-msgid "Georepublic"
-msgstr ""
-
-# 4cff0cbdf09142fe96cedf784e527f88
-#: ../../src/introduction/support.rst:57
-msgid "Germany, Japan"
-msgstr ""
-
-# d21fbd0b66dd460782765e0899cda198
-#: ../../src/introduction/support.rst:58
-msgid "http://georepublic.info"
-msgstr ""
-
-# 4709209a400848fbb145d3e9bbd8289b
-#: ../../src/introduction/support.rst:59
-msgid "iMaptools"
-msgstr ""
-
-# 9c4e2cec8d6e49b9b1d395ef568e7bf4
-#: ../../src/introduction/support.rst:60
-msgid "United States"
-msgstr ""
-
-# f139763c29294bb79ebd32b4794edfcb
-#: ../../src/introduction/support.rst:61
-msgid "http://imaptools.com"
-msgstr ""
-
-# bc88272585b7418e87f8aa1e03fd54a5
-#: ../../src/introduction/support.rst:62
-msgid "Orkney Inc."
-msgstr ""
-
-# 84daebce6fc94b6e953b97d39cdf8c25
-#: ../../src/introduction/support.rst:63
-msgid "Japan"
-msgstr ""
-
-# 624d95640fbb41c3b1e2c8be2ac6643f
-#: ../../src/introduction/support.rst:64
-msgid "http://www.orkney.co.jp"
-msgstr ""
-
-# dfe08a11bfac41ccb2e0c58cb1e0147c
-#: ../../src/introduction/support.rst:65
-msgid "Camptocamp"
-msgstr ""
-
-# 6de446c9b4aa48b7bdf619923546c10d
-#: ../../src/introduction/support.rst:66
-msgid "Switzerland, France"
-msgstr ""
-
-# c15be03a07254055b4b18b07c808943c
-#: ../../src/introduction/support.rst:67
-msgid "http://www.camptocamp.com"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/analytics.po b/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/analytics.po
deleted file mode 100644
index ec48ae5..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/analytics.po
+++ /dev/null
@@ -1,215 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 980fad1a06484f7c8cef9a7fde4958ec
-#: ../../src/tutorial/analytics.rst:13
-msgid "Graph Analytics"
-msgstr ""
-
-# 92dfdaca18154d5fb972e4b0377224d1
-#: ../../src/tutorial/analytics.rst:15
-msgid "Stephen Woodbridge <woodbri at swoodbridge.com>"
-msgstr ""
-
-# 9d29818196394fe6bde3a64a6a4ecc11
-#: ../../src/tutorial/analytics.rst:16
-msgid ""
-"Stephen Woodbridge. The source code is released under the MIT-X license."
-msgstr ""
-
-# 310f125aa8204065bcc2b95d49db2196
-#: ../../src/tutorial/analytics.rst:20
-msgid "Overview"
-msgstr ""
-
-# a3236e530b504e8895bcee266c2f686b
-#: ../../src/tutorial/analytics.rst:22
-msgid ""
-"It is common to find problems with graphs that have not been constructed "
-"fully noded or in graphs with z-levels at intersection that have been "
-"entered incorrectly. An other problem is one way streets that have been "
-"entered in the wrong direction. We can not detect errors with respect to "
-"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
-"a graph and report them for additional inspections."
-msgstr ""
-
-# be553e417c184b5eb0ad8ee4096ad7fa
-#: ../../src/tutorial/analytics.rst:24
-msgid ""
-"We do not current have any visualization tools for these problems, but I "
-"have used mapserver to render the graph and highlight potential problem "
-"areas. Someone familiar with graphviz might contribute tools for generating "
-"images with that."
-msgstr ""
-
-# d3e3bf311b944d1cb4f8ebfa1e3d1c35
-#: ../../src/tutorial/analytics.rst:28
-msgid "Analyze a Graph"
-msgstr ""
-
-# b7b34732b36b4c3386ebb82a99725c87
-#: ../../src/tutorial/analytics.rst:30
-msgid ""
-"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
-"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
-"table:"
-msgstr ""
-
-# 883152de9fb3419fa261d8c6761b619f
-#: ../../src/tutorial/analytics.rst:53
-msgid "In the vertices table \"mytab_vertices_pgr\":"
-msgstr ""
-
-# dde249ef911949ab835d0b7d9350c416
-#: ../../src/tutorial/analytics.rst:55
-msgid "Deadends are indentified by ``cnt=1``"
-msgstr ""
-
-# 99f8cb76dde84268b23cafcadb364a32
-#: ../../src/tutorial/analytics.rst:56
-msgid "Potencial gap problems are identified with ``chk=1``."
-msgstr ""
-
-# fd199f728c124588a6fccf258e912e65
-#: ../../src/tutorial/analytics.rst:74
-msgid ""
-"For isolated road segments, for example, a segment where both ends are "
-"deadends. you can find these with the following query:"
-msgstr ""
-
-# 6986ddb18688499ca9065a00ac84b5fc
-#: ../../src/tutorial/analytics.rst:83
-msgid ""
-"If you want to visualize these on a graphic image, then you can use "
-"something like mapserver to render the edges and the vertices and style "
-"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
-"tool like graphviz, or geoserver or other similar tools."
-msgstr ""
-
-# a9cdd802bf2d44b8ad116075edfa006d
-#: ../../src/tutorial/analytics.rst:87
-msgid "Analyze One Way Streets"
-msgstr ""
-
-# ceeba0ba5905459c92f8e38e90544cb4
-#: ../../src/tutorial/analytics.rst:89
-msgid ""
-":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
-" any flipped segments. Basically if you count the edges coming into a node "
-"and the edges exiting a node the number has to be greater than one."
-msgstr ""
-
-# 965b89e720674f77a4d6d97b26312235
-#: ../../src/tutorial/analytics.rst:91
-msgid ""
-"This query will add two columns to the vertices_tmp table ``ein int`` and "
-"``eout int`` and populate it with the appropriate counts. After running this"
-" on a graph you can identify nodes with potential problems with the "
-"following query."
-msgstr ""
-
-# 7a483848e9424b628eadf2560140d784
-#: ../../src/tutorial/analytics.rst:94
-msgid ""
-"The rules are defined as an array of text strings that if match the ``col`` "
-"value would be counted as true for the source or target in or out condition."
-msgstr ""
-
-# 07304f9bde2d4248af5616aa3ad7b998
-#: ../../src/tutorial/analytics.rst:98
-msgid "Example"
-msgstr ""
-
-# 3a0862cb802a42dd9a8eb1972e947d4a
-#: ../../src/tutorial/analytics.rst:100
-msgid ""
-"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
-"might have values like:"
-msgstr ""
-
-# 04d77c12d42a49098ac138d4cd8d1134
-#: ../../src/tutorial/analytics.rst:102
-msgid "'FT' - oneway from the source to the target node."
-msgstr ""
-
-# 1e433297e48745b8a26d9bdc471bb079
-#: ../../src/tutorial/analytics.rst:103
-msgid "'TF' - oneway from the target to the source node."
-msgstr ""
-
-# ec58ad375c304521a62c088b53b57cca
-#: ../../src/tutorial/analytics.rst:104
-msgid "'B' - two way street."
-msgstr ""
-
-# de3d50611ab84de8abc0434aaf176361
-#: ../../src/tutorial/analytics.rst:105
-msgid "'' - empty field, assume twoway."
-msgstr ""
-
-# bec6afb7e7f0453b8d028b521ce38b1f
-#: ../../src/tutorial/analytics.rst:106
-msgid "<NULL> - NULL field, use two_way_if_null flag."
-msgstr ""
-
-# 8b2a6e5d0f58459b9c0d857b8094b2b1
-#: ../../src/tutorial/analytics.rst:108
-msgid ""
-"Then we could form the following query to analyze the oneway streets for "
-"errors."
-msgstr ""
-
-# ca0da22fa34a4ab8abffbb33176f1196
-#: ../../src/tutorial/analytics.rst:127
-msgid ""
-"Typically these problems are generated by a break in the network, the one "
-"way direction set wrong, maybe an error related to z-levels or a network "
-"that is not properly noded."
-msgstr ""
-
-# e6995522d4b34322a49f7fc234ef5a92
-#: ../../src/tutorial/analytics.rst:129
-msgid ""
-"The above tools do not detect all network issues, but they will identify "
-"some common problems. There are other problems that are hard to detect "
-"because they are more global in nature like multiple disconnected networks. "
-"Think of an island with a road network that is not connected to the mainland"
-" network because the bridge or ferry routes are missing."
-msgstr ""
-
-# f35ee6b63cb84a21956ba58f495375b3
-#: ../../src/tutorial/analytics.rst:133
-msgid "See Also"
-msgstr "参照"
-
-# 46adfdf5d9b042109be5c667ad12afdc
-#: ../../src/tutorial/analytics.rst:135
-msgid ":ref:`pgr_analyze_graph`"
-msgstr ":ref:`pgr_analyze_graph`"
-
-# d6a1979339344f65beef1fb134c99ea0
-#: ../../src/tutorial/analytics.rst:136
-msgid ":ref:`pgr_analyze_oneway`"
-msgstr ":ref:`pgr_analyze_oneway`"
-
-# b1e8747121eb4e61bc26581ab784c9ce
-#: ../../src/tutorial/analytics.rst:137
-msgid ":ref:`pgr_node_network`"
-msgstr ":ref:`pgr_node_network`"
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/custom_query.po b/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/custom_query.po
deleted file mode 100644
index c1f55e7..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/custom_query.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:36+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# b91f0d6588cf4d91a064ad81536cb9a5
-#: ../../src/tutorial/custom_query.rst:13
-msgid "Custom Query"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po b/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po
deleted file mode 100644
index 15d7cec..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/custom_wrapper.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:35+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# eabd47deb6034d1c95a09b9014e26c69
-#: ../../src/tutorial/custom_wrapper.rst:13
-msgid "Custom Wrapper"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/index.po b/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/index.po
deleted file mode 100644
index 0446cde..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/index.po
+++ /dev/null
@@ -1,98 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (187a022 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-23 15:04\n"
-"PO-Revision-Date: 2013-09-23 20:11+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 6a8f93140b244bb29541e366b9af91dd
-#: ../../src/tutorial/index.rst:13
-msgid "Tutorial"
-msgstr "チュートリアル"
-
-# a64c244637f4455cbded0e09c15fb8e1
-#: ../../src/tutorial/index.rst:16
-msgid ":ref:`Getting started <tutorial>`"
-msgstr ""
-
-# acf4544cb0394b96859312fe489b6b5f
-#: ../../src/tutorial/index.rst:18
-msgid "How to create a database to use for our project"
-msgstr ""
-
-# 29bb03c78beb407cb3c7ef833144e908
-#: ../../src/tutorial/index.rst:19
-msgid "How to load some data"
-msgstr ""
-
-# 6522624c4787423098652645beaca70b
-#: ../../src/tutorial/index.rst:20
-msgid "How to build a topology"
-msgstr ""
-
-# 7e3a1701c1cb4f2399f80cab2f32fbfd
-#: ../../src/tutorial/index.rst:21
-msgid "How to check your graph for errors"
-msgstr ""
-
-# 7a4ac738b5a54446a3fb6a2a872ee973
-#: ../../src/tutorial/index.rst:22
-msgid "How to compute a route"
-msgstr ""
-
-# 267375c5b956437cab09d66694082436
-#: ../../src/tutorial/index.rst:23
-msgid "How to use other tools to view your graph and route"
-msgstr ""
-
-# 7eb6346c00174549a67aa3ba5b639061
-#: ../../src/tutorial/index.rst:24
-msgid "How to create a web app"
-msgstr ""
-
-# 9c88e3538b4443db8727c2ac29dfe064
-#: ../../src/tutorial/index.rst:26
-msgid "Advanced Topics"
-msgstr ""
-
-# 96bfb05f4c374de79f250704d4c8b3e7
-#: ../../src/tutorial/index.rst:28
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 5bb8a81892314636b035fe0d8e56b426
-#: ../../src/tutorial/index.rst:29
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-# 6cfe3bc3d8b942b188c87a00b5e92cb8
-#: ../../src/tutorial/index.rst:30
-msgid ":ref:`custom_query` that is used in the routing algorithms."
-msgstr ""
-
-# 2fc8eb635e614b249d37a76fb7d66f68
-#: ../../src/tutorial/index.rst:31
-msgid ":ref:`performance` to improve your performance."
-msgstr ""
-
-# 1cf3220a11c4411b85339e05e3546f22
-#: ../../src/tutorial/index.rst:32
-msgid ":ref:`custom_wrapper` to colaborate with a wrapper."
-msgstr ""
-
-# 025472df762342bb955f96e2572111ed
-#: ../../src/tutorial/index.rst:33
-msgid ":ref:`recipes` to colaborate with a recipe."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/performance.po b/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/performance.po
deleted file mode 100644
index 32a34b6..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/performance.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:35+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 1cd2afc4adbb468398fef1d40d5c4336
-#: ../../src/tutorial/performance.rst:13
-msgid "Performance Tips"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/recipes.po b/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/recipes.po
deleted file mode 100644
index c9dc73c..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/recipes.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:36+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 227045a7e0474d4998d6a6d10503851b
-#: ../../src/tutorial/recipes.rst:13
-msgid "Useful Recipes"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/topology.po b/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/topology.po
deleted file mode 100644
index 5e4adb2..0000000
--- a/doc/i18n/ja/LC_MESSAGES/doc/src/tutorial/topology.po
+++ /dev/null
@@ -1,124 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:12+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 95ba56beb837464cac49ef7880693c4c
-#: ../../src/tutorial/topology.rst:13
-msgid "Routing Topology"
-msgstr ""
-
-# a13e17875be047edb65c4dff0e77e3a3
-#: ../../src/tutorial/topology.rst:15
-msgid "Stephen Woodbridge <woodbri at swoodbridge.com>"
-msgstr ""
-
-# fae10235d477445e8c8ad3b8ddf138c5
-#: ../../src/tutorial/topology.rst:16
-msgid ""
-"Stephen Woodbridge. The source code is released under the MIT-X license."
-msgstr ""
-
-# bb8d84bed17047048664ea7fe078eb94
-#: ../../src/tutorial/topology.rst:20
-msgid "Overview"
-msgstr ""
-
-# 2a882bec3de94c1eb574a3eb222c98e4
-#: ../../src/tutorial/topology.rst:22
-msgid ""
-"Typically when GIS files are loaded into the data database for use with "
-"pgRouting they do not have topology information associated with them. To "
-"create a useful topology the data needs to be \"noded\". This means that "
-"where two or more roads form an intersection there it needs to be a node at "
-"the intersection and all the road segments need to be broken at the "
-"intersection, assuming that you can navigate from any of these segments to "
-"any other segment via that intersection."
-msgstr ""
-
-# 65c5e66127ab486492799e66af98970c
-#: ../../src/tutorial/topology.rst:24
-msgid ""
-"You can use the :ref:`graph analysis functions <analytics>` to help you see "
-"where you might have topology problems in your data. If you need to node "
-"your data, we also have a function :ref:`pgr_nodeNetwork() "
-"<pgr_node_network>` that might work for you. This function splits ALL "
-"crossing segments and nodes them. There are some cases where this might NOT "
-"be the right thing to do."
-msgstr ""
-
-# efc1fb5385064e7da087f3b0371faf57
-#: ../../src/tutorial/topology.rst:26
-msgid ""
-"For example, when you have an overpass and underpass intersection, you do "
-"not want these noded, but pgr_nodeNetwork does not know that is the case and"
-" will node them which is not good because then the router will be able to "
-"turn off the overpass onto the underpass like it was a flat 2D intersection."
-" To deal with this problem some data sets use z-levels at these types of "
-"intersections and other data might not node these intersection which would "
-"be ok."
-msgstr ""
-
-# 43c22da1f7b34db7999adbad7ac7a4e1
-#: ../../src/tutorial/topology.rst:28
-msgid ""
-"For those cases where topology needs to be added the following functions may"
-" be useful. One way to prep the data for pgRouting is to add the following "
-"columns to your table and then populate them as appropriate. This example "
-"makes a lot of assumption like that you original data tables already has "
-"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
-"that they contain specific data values. This is only to give you an idea of "
-"what you can do with your data."
-msgstr ""
-
-# 30e52836594b46f1917dd9ffaa55fc0c
-#: ../../src/tutorial/topology.rst:49
-msgid ""
-"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
-"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
-"columns. The following example populated the remaining columns. In this "
-"example, the ``fcc`` column contains feature class code and the ``CASE`` "
-"statements converts it to an average speed."
-msgstr ""
-
-# 6aa2b52ff1ac4c16a315c9ddfdf90b57
-#: ../../src/tutorial/topology.rst:112
-msgid ""
-"Now your database should be ready to use any (most?) of the pgRouting "
-"algorithms."
-msgstr ""
-
-# 6cc3d005cb454b77959bfbdc6fdd2105
-#: ../../src/tutorial/topology.rst:116
-msgid "See Also"
-msgstr "参照"
-
-# 40847af777814998afe63d824d73c507
-#: ../../src/tutorial/topology.rst:118
-msgid ":ref:`pgr_create_topology`"
-msgstr ":ref:`pgr_create_topology`"
-
-# 974b427fbcf64ec8ab76456dcd37bd7d
-#: ../../src/tutorial/topology.rst:119
-msgid ":ref:`pgr_node_network`"
-msgstr ":ref:`pgr_node_network`"
-
-# adedad6329b0494988daee57bcf0cb98
-#: ../../src/tutorial/topology.rst:120
-msgid ":ref:`pgr_point_to_id`"
-msgstr ":ref:`pgr_point_to_id`"
diff --git a/doc/i18n/ja/LC_MESSAGES/src/apsp_johnson/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/apsp_johnson/doc/index.po
deleted file mode 100644
index f8c340d..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/apsp_johnson/doc/index.po
+++ /dev/null
@@ -1,140 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-06 16:30+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# c9937b945f654be08e4180e57b2723de
-#: ../../../src/apsp_johnson/doc/index.rst:13
-msgid "pgr_apspJohnson - All Pairs Shortest Path, Johnson's Algorithm"
-msgstr ""
-
-# 79936f3a71384a8a9148a3886df7a858
-#: ../../../src/apsp_johnson/doc/index.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 3145d47e956649628986400ffdab56a5
-#: ../../../src/apsp_johnson/doc/index.rst:22
-msgid ""
-"``pgr_apspJohnson`` - Returns all costs for each pair of nodes in the graph."
-msgstr ""
-
-# 24009fd27614418c9dee8d1d27eca209
-#: ../../../src/apsp_johnson/doc/index.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 6aa48442c73548e58b708ec465f0993a
-#: ../../../src/apsp_johnson/doc/index.rst:28
-msgid ""
-"Johnson's algorithm is a way to find the shortest paths between all pairs of"
-" vertices in a sparse, edge weighted, directed graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows for "
-"every pair of nodes in the graph."
-msgstr ""
-
-# afa92fc38dee48288d509f6006247df1
-#: ../../../src/apsp_johnson/doc/index.rst:36
-msgid "Description"
-msgstr "説明"
-
-# 1256fc43f6ad440689b650619604651c
-#: ../../../src/apsp_johnson/doc/index.rst:38
-msgid ""
-"a SQL query that should return the edges for the graph that will be "
-"analyzed:"
-msgstr ""
-
-# 3f908a1bbdd04eaa9bf33225e67da2c7
-#: ../../../src/apsp_johnson/doc/index.rst:44
-msgid "``int4`` identifier of the source vertex for this edge"
-msgstr ""
-
-# 993049755c48440a9bc398ea9a13fe95
-#: ../../../src/apsp_johnson/doc/index.rst:45
-msgid "``int4`` identifier of the target vertex for this edge"
-msgstr ""
-
-# 28aa6b13c7d54bbdb49c76098a8e4d8e
-#: ../../../src/apsp_johnson/doc/index.rst:46
-msgid "``float8`` a positive value for the cost to traverse this edge"
-msgstr ""
-
-# 7514070dfcd1415e8414754509baee32
-#: ../../../src/apsp_johnson/doc/index.rst:48
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ":ref:`type_cost_result` のセットを返します:"
-
-# 25408ce6cf3d45bebebd52768b102fc0
-#: ../../../src/apsp_johnson/doc/index.rst:50
-msgid "row sequence"
-msgstr "行の連番"
-
-# e4b9d28e22be4a78a2edc7edbf4f1af3
-#: ../../../src/apsp_johnson/doc/index.rst:51
-msgid "source node ID"
-msgstr ""
-
-# f4ef2869f447410dbdb75bf3856bfa93
-#: ../../../src/apsp_johnson/doc/index.rst:52
-msgid "target node ID"
-msgstr ""
-
-# 74d7b05838ba4c978e0c33f94ab0868f
-#: ../../../src/apsp_johnson/doc/index.rst:53
-msgid "cost to traverse from ``id1`` to ``id2``"
-msgstr ""
-
-# 1767087139fa47218a9eef54ebf0b0f1
-#: ../../../src/apsp_johnson/doc/index.rst:56
-msgid "History"
-msgstr "歴史"
-
-# 5bc1dae5c7f041298849cae876983c32
-#: ../../../src/apsp_johnson/doc/index.rst:57
-msgid "New in version 2.0.0"
-msgstr ""
-
-# b679c9ef11b544a6a6502b461b4e3d96
-#: ../../../src/apsp_johnson/doc/index.rst:61
-msgid "Examples"
-msgstr "例"
-
-# 5d6ef1673c204a229ed05dae0c96d0f8
-#: ../../../src/apsp_johnson/doc/index.rst:78
-msgid "The query uses the :ref:`sampledata` network."
-msgstr ""
-
-# 8ba7f2721fe74966b8dfd4620ae10b9a
-#: ../../../src/apsp_johnson/doc/index.rst:82
-msgid "See Also"
-msgstr "参照"
-
-# 475eb50687e74051895523e791434bc1
-#: ../../../src/apsp_johnson/doc/index.rst:84
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 75e0dd6fa0ed4621acf49893e637237c
-#: ../../../src/apsp_johnson/doc/index.rst:85
-msgid ":ref:`pgr_apsp_warshall`"
-msgstr ""
-
-# 0e63d6ba27244302bfd848164331ea09
-#: ../../../src/apsp_johnson/doc/index.rst:86
-msgid "http://en.wikipedia.org/wiki/Johnson%27s_algorithm"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/apsp_warshall/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/apsp_warshall/doc/index.po
deleted file mode 100644
index bce6aa8..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/apsp_warshall/doc/index.po
+++ /dev/null
@@ -1,161 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# sanak <geosanak at gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:15+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 0f1284ff13c64db68306d3e8f9c97beb
-#: ../../../src/apsp_warshall/doc/index.rst:13
-msgid "pgr_apspWarshall - All Pairs Shortest Path, Floyd-Warshall Algorithm"
-msgstr ""
-
-# 42b576974e9a458e951dd429ba4ac9f7
-#: ../../../src/apsp_warshall/doc/index.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 8610cfce602b4e43867a979e40348da5
-#: ../../../src/apsp_warshall/doc/index.rst:22
-msgid ""
-"``pgr_apspWarshall`` - Returns all costs for each pair of nodes in the "
-"graph."
-msgstr ""
-
-# 4c8c0af0a22f4783b5f40d7d68b431da
-#: ../../../src/apsp_warshall/doc/index.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 001f0668ce734f4b9419fd7b22d98b00
-#: ../../../src/apsp_warshall/doc/index.rst:28
-msgid ""
-"The Floyd-Warshall algorithm (also known as Floyd's algorithm and other "
-"names) is a graph analysis algorithm for finding the shortest paths between "
-"all pairs of nodes in a weighted graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows for "
-"every pair of nodes in the graph."
-msgstr ""
-
-# e7c4a6dd259d46cd9fcf2631dbc22f2e
-#: ../../../src/apsp_warshall/doc/index.rst:36
-msgid "Description"
-msgstr "説明"
-
-# e0f6896524cc4a4d91c418144da5102b
-#: ../../../src/apsp_warshall/doc/index.rst:38
-msgid ""
-"a SQL query that should return the edges for the graph that will be "
-"analyzed:"
-msgstr ""
-
-# 97a32a6ff6e14816834d1eb5e229f2b4
-#: ../../../src/apsp_warshall/doc/index.rst:44
-msgid "``int4`` identifier of the edge"
-msgstr "エッジの識別子[``int4``]"
-
-# b42ae19f11c44f618c034ae1ce6be00a
-#: ../../../src/apsp_warshall/doc/index.rst:45
-msgid "``int4`` identifier of the source vertex for this edge"
-msgstr ""
-
-# c0b57bb608d34affbce8c6bb5ec9302f
-#: ../../../src/apsp_warshall/doc/index.rst:46
-msgid "``int4`` identifier of the target vertex for this edge"
-msgstr ""
-
-# c5cb344693474da29d9a8ff57e96c0f7
-#: ../../../src/apsp_warshall/doc/index.rst:47
-msgid "``float8`` a positive value for the cost to traverse this edge"
-msgstr ""
-
-# 5dd37dfc4bff497d85337655170aa2fe
-#: ../../../src/apsp_warshall/doc/index.rst:49
-msgid "``true`` if the graph is directed"
-msgstr "有向グラフの場合は``true``を指定"
-
-# 6996d55bc55245d39ea7b7fadce791a7
-#: ../../../src/apsp_warshall/doc/index.rst:50
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "``true``の場合、SQLで生成される行セットの``reverse_cost``カラムは、エッジの逆方向にかかる重みとして使用されます。"
-
-# a26f91fad97b4c1fb810f9cbe42a7c55
-#: ../../../src/apsp_warshall/doc/index.rst:52
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ":ref:`type_cost_result` のセットを返します:"
-
-# d67cd203b9424e1faa0416ab268956c5
-#: ../../../src/apsp_warshall/doc/index.rst:54
-msgid "row sequence"
-msgstr "行の連番"
-
-# 13448c2239764d798d56189875475d19
-#: ../../../src/apsp_warshall/doc/index.rst:55
-msgid "source node ID"
-msgstr ""
-
-# 754d094ac6ae42d5a22b8855ce7a73e7
-#: ../../../src/apsp_warshall/doc/index.rst:56
-msgid "target node ID"
-msgstr ""
-
-# c9edf1f99746459c9ef79922766fc805
-#: ../../../src/apsp_warshall/doc/index.rst:57
-msgid "cost to traverse from ``id1`` to ``id2``"
-msgstr ""
-
-# e878f40e61334a669136534d82f3bc05
-#: ../../../src/apsp_warshall/doc/index.rst:61
-msgid "History"
-msgstr "歴史"
-
-# b506bf29ad7944d7bd0db6d48ffe9f4f
-#: ../../../src/apsp_warshall/doc/index.rst:62
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 5c0117f6a40740aa8b02bc181e0e01dc
-#: ../../../src/apsp_warshall/doc/index.rst:66
-msgid "Examples"
-msgstr "例"
-
-# 38918d939ef74f6e86528d1060dc810c
-#: ../../../src/apsp_warshall/doc/index.rst:84
-msgid "The query uses the :ref:`sampledata` network."
-msgstr ""
-
-# 4feffc0c2a824f81bb35b10c6f13176d
-#: ../../../src/apsp_warshall/doc/index.rst:88
-msgid "See Also"
-msgstr "参照"
-
-# aa6ecd6c9d584db1adf49b7df81583e9
-#: ../../../src/apsp_warshall/doc/index.rst:90
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 0f05cbf530e0455daed36d6b50bbf30f
-#: ../../../src/apsp_warshall/doc/index.rst:91
-msgid ":ref:`pgr_apsp_johnson`"
-msgstr ""
-
-# b09888d0778445eb93cbdfb7075b4157
-#: ../../../src/apsp_warshall/doc/index.rst:92
-msgid "http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/astar/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/astar/doc/index.po
deleted file mode 100644
index 3c4525c..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/astar/doc/index.po
+++ /dev/null
@@ -1,203 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# sanak <geosanak at gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-07 13:30+0000\n"
-"Last-Translator: sanak <geosanak at gmail.com>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# b270045aa6e74d789897bb176f5c4a37
-#: ../../../src/astar/doc/index.rst:13
-msgid "pgr_astar - Shortest Path A*"
-msgstr "pgr_astar - A*アルゴリズムによる最短経路探索"
-
-# a4d6dd313b3f44bdbbecdf59c8e4e866
-#: ../../../src/astar/doc/index.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 0c4c2fff9ea445dcbb1dfdca8374cd09
-#: ../../../src/astar/doc/index.rst:22
-msgid "``pgr_astar`` — Returns the shortest path using A* algorithm."
-msgstr "``pgr_astar`` — A*アルゴリズムを用いた最短経路を返します。"
-
-# d3e3e83acd754acb9ac4c583d6dd0649
-#: ../../../src/astar/doc/index.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 87ae068cf08b4ddca7f5bb3722ce57f2
-#: ../../../src/astar/doc/index.rst:28
-msgid ""
-"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
-"with a heuristic that allow it to solve most shortest path problems by "
-"evaluation only a sub-set of the overall graph. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
-"make up a path."
-msgstr "A* (\"A スター\"と発音します) アルゴリズムは経験則ありのダイクストラのアルゴリズムに基づき、全てのグラフの部分集合のみの評価により、最短経路問題を解きます。経路を構成する :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) の行のセットを返します。"
-
-# cd2802c13d3d4798934f9f60cc9ebfb9
-#: ../../../src/astar/doc/index.rst:37
-msgid "Description"
-msgstr "説明"
-
-# 64ca501e984b45df9055511188eb65f4
-#: ../../../src/astar/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "SQLのクエリーです。以下に続くカラムからなる行セットを返します:"
-
-# 739adee835f647ff94511acc6e126ee5
-#: ../../../src/astar/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` 型のエッジの識別子"
-
-# 72186cf53aee4035bdbcc0495fb6bf42
-#: ../../../src/astar/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` 型の始点ノードの識別子"
-
-# 0857159bb2c949bb892388c25f6fb4ec
-#: ../../../src/astar/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` 型の終点ノードの識別子"
-
-# 4ddccc85290d4aba9b82668e90b2ba31
-#: ../../../src/astar/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` 型のエッジの横断コストの値。負のコストはエッジがグラフに挿入されることを防ぎます。"
-
-# d21510a5452e4a098e36f5ae7f7585b4
-#: ../../../src/astar/doc/index.rst:50
-msgid "``x`` coordinate of the start point of the edge"
-msgstr "エッジの始点の ``x`` 座標"
-
-# 78d6feeb1c174e96ad209b97fb1cd538
-#: ../../../src/astar/doc/index.rst:51
-msgid "``y`` coordinate of the start point of the edge"
-msgstr "エッジの始点の ``y`` 座標"
-
-# b7404cbf8c86414494f72f87b3702241
-#: ../../../src/astar/doc/index.rst:52
-msgid "``x`` coordinate of the end point of the edge"
-msgstr "エッジの終点の ``x`` 座標"
-
-# d0f8d9e10994475dac4ad4e8ea1315f7
-#: ../../../src/astar/doc/index.rst:53
-msgid "``y`` coordinate of the end point of the edge"
-msgstr "エッジの終点の ``y`` 座標"
-
-# 46b33f8b295043059fce210e43698191
-#: ../../../src/astar/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(オプション) エッジの反対方向のコスト。この値は ``directed`` および ``has_rcost`` パラメータが ``true`` の場合のみ使用されます。(負のコストについては前述の通りです)"
-
-# bfd63fe9d374441babb8662a0874482b
-#: ../../../src/astar/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4`` 型の始点ノードのID"
-
-# 85d35dcc4ced4efaac8d7b50f4ff9357
-#: ../../../src/astar/doc/index.rst:57
-msgid "``int4`` id of the end point"
-msgstr "``int4`` 型の始点ノードのID"
-
-# f93b4ce091a6440d9a656b374fce6636
-#: ../../../src/astar/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "有向グラフの場合は ``true`` を指定"
-
-# 1a783bf8f88146999659f222ef236d1b
-#: ../../../src/astar/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "``true`` の場合、SQLで生成される行セットの ``reverse_cost`` カラムは、エッジの逆方向の横断コストとして使用されます。"
-
-# c0f6cf1f1daf40bc8d08fa3b85c3af6b
-#: ../../../src/astar/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ":ref:`type_cost_result` のセットを返します:"
-
-# 22b5e075f6e94c608af67a4c040f4e70
-#: ../../../src/astar/doc/index.rst:63
-msgid "row sequence"
-msgstr "行の連番"
-
-# 1f3ccd737354442fb4d87684690988a2
-#: ../../../src/astar/doc/index.rst:64
-msgid "node ID"
-msgstr "ノードID"
-
-# 8a4fe9f16a934ffa842ea049c36728bf
-#: ../../../src/astar/doc/index.rst:65
-msgid "edge ID (``-1`` for the last row)"
-msgstr "エッジID (最終行は ``-1``)"
-
-# 7cff3509785e40adb8ff4ce4f4bf0774
-#: ../../../src/astar/doc/index.rst:66
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "``id1`` から ``id2`` を横断するコスト"
-
-# 9cc8b235e4214d4c87b729d24031271e
-#: ../../../src/astar/doc/index.rst:70
-msgid "History"
-msgstr "履歴"
-
-# 623c2a84d062407d93855875a467dbe1
-#: ../../../src/astar/doc/index.rst:71
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# 7f75da722e6e4680a8d9e0a3d69678b9
-#: ../../../src/astar/doc/index.rst:75
-msgid "Examples"
-msgstr "例"
-
-# 533a7e7ccd3645c4a6e6d3e90875cccf
-#: ../../../src/astar/doc/index.rst:77
-msgid "Without ``reverse_cost``"
-msgstr "``reverse_cost`` なしの場合"
-
-# 0cf32ba2b9dd435191e182fa2e1219a3
-#: ../../../src/astar/doc/index.rst:99
-msgid "With ``reverse_cost``"
-msgstr "``reverse_cost`` ありの場合"
-
-# 266a522386364908870781287ffe7c77
-#: ../../../src/astar/doc/index.rst:117
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 3f0ab007b6c24393bda58a4c8f051a6b
-#: ../../../src/astar/doc/index.rst:121
-msgid "See Also"
-msgstr "参照"
-
-# c407743821a8437fa59503cbee2e31b7
-#: ../../../src/astar/doc/index.rst:123
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 994c0952621c47349ec4e5b209ee1129
-#: ../../../src/astar/doc/index.rst:124
-msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
-msgstr "http://en.wikipedia.org/wiki/A*_search_algorithm"
diff --git a/doc/i18n/ja/LC_MESSAGES/src/bd_astar/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/bd_astar/doc/index.po
deleted file mode 100644
index 463d4b5..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/bd_astar/doc/index.po
+++ /dev/null
@@ -1,222 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-07 12:30+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# d85c70ae393d476284068bf297195cc7
-#: ../../../src/bd_astar/doc/index.rst:13
-msgid "pgr_bdAstar - Bi-directional A* Shortest Path"
-msgstr ""
-
-# 59f0d447a4034729bbdc2dad7b88dcce
-#: ../../../src/bd_astar/doc/index.rst:20
-msgid "Name"
-msgstr "名前"
-
-# ff5b6b1bd362408c80bec7cfbc7108bf
-#: ../../../src/bd_astar/doc/index.rst:22
-msgid ""
-"``pgr_bdAstar`` - Returns the shortest path using Bidirectional A* "
-"algorithm."
-msgstr ""
-
-# 6e2dd97777d64f02afc4b396822f7c37
-#: ../../../src/bd_astar/doc/index.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# d88a86d95c0447db93be2a1f185b91bd
-#: ../../../src/bd_astar/doc/index.rst:28
-msgid ""
-"This is a bi-directional A* search algorithm. It searchs from the source "
-"toward the distination and at the same time from the destination to the "
-"source and terminates whe these to searchs meet in the middle. Returns a set"
-" of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, "
-"that make up a path."
-msgstr ""
-
-# c9f7d12fb2c9416390cbb64c61cdaaba
-#: ../../../src/bd_astar/doc/index.rst:37
-msgid "Description"
-msgstr "説明"
-
-# 2228656c57724bc18029fa054849a999
-#: ../../../src/bd_astar/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "SQLのクエリーです。以下に続くカラムからなる行セットを返します:"
-
-# ba13914fdd78469389ae129eee02785f
-#: ../../../src/bd_astar/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "エッジの識別子[``int4``]"
-
-# 5e7f92a0ffa845a385efe72da0760ee5
-#: ../../../src/bd_astar/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4``型の始点ノードの識別子"
-
-# 194b29afb7b3486eb5611222273bb323
-#: ../../../src/bd_astar/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4``型の終点ノードの識別子"
-
-# 37f1ad354f13413fa6a47ec8ceaa3262
-#: ../../../src/bd_astar/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8``型のエッジにかかる重み。負の重みはエッジがグラフに挿入されることを防ぎます。"
-
-# f7bf689e55584ee0b2e095b8f3147354
-#: ../../../src/bd_astar/doc/index.rst:50
-msgid "``x`` coordinate of the start point of the edge"
-msgstr "エッジの始点の``x``座標"
-
-# e7b2325c3e8f473fae345bff6b9f9af6
-#: ../../../src/bd_astar/doc/index.rst:51
-msgid "``y`` coordinate of the start point of the edge"
-msgstr "エッジの始点の``y``座標"
-
-# a554e40ce41e485d83bdcc425edab876
-#: ../../../src/bd_astar/doc/index.rst:52
-msgid "``x`` coordinate of the end point of the edge"
-msgstr "エッジの終点の``x``座標"
-
-# d0033effb66d4af891d51c0553106616
-#: ../../../src/bd_astar/doc/index.rst:53
-msgid "``y`` coordinate of the end point of the edge"
-msgstr "エッジの終点の``y``座標"
-
-# 52fd318293ff42458d93837f06a5dd78
-#: ../../../src/bd_astar/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(オプション) エッジの反対方向のコスト。この値は``directed``および``has_rcost``パラメータが``true``の場合のみ使用されます。(負のコストについては前述の通りです)"
-
-# b2ec788128e44b59a8a9eaf588b3ef93
-#: ../../../src/bd_astar/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4``型の始点ノードのID"
-
-# f5809c895ef3496fbaf43892301858ca
-#: ../../../src/bd_astar/doc/index.rst:57
-msgid "``int4`` id of the end point"
-msgstr "``int4``型の始点ノードのID"
-
-# 29607e76254f42938d9c38a10e11c7b9
-#: ../../../src/bd_astar/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "有向グラフの場合は``true``を指定"
-
-# f4b5e84674e749be9f6ba934004cd598
-#: ../../../src/bd_astar/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "``true``の場合、SQLで生成される行セットの``reverse_cost``カラムは、エッジの逆方向にかかる重みとして使用されます。"
-
-# 9969bf0e6e5f40e3b44efbfd0e53d70b
-#: ../../../src/bd_astar/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ":ref:`type_cost_result` のセットを返します:"
-
-# 1634c060516d40388b007b17f2fee94c
-#: ../../../src/bd_astar/doc/index.rst:63
-msgid "row sequence"
-msgstr "行の連番"
-
-# 4a478cf05b72415ebfc7f95d8e0b8625
-#: ../../../src/bd_astar/doc/index.rst:64
-msgid "node ID"
-msgstr "ノードID"
-
-# b94cd2b23db94500b803d9c02b8ab358
-#: ../../../src/bd_astar/doc/index.rst:65
-msgid "edge ID (``-1`` for the last row)"
-msgstr "エッジID (最終行は``-1``)"
-
-# b8b6a3e185934bc4b7d44f66694523c5
-#: ../../../src/bd_astar/doc/index.rst:66
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "``id1``から``id2``を横断するコスト"
-
-# f9a6aa6c249c40968bc39a3db86a5ebe
-#: ../../../src/bd_astar/doc/index.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr ""
-
-# e574996346fe4d3d937be160d621e660
-#: ../../../src/bd_astar/doc/index.rst:74
-msgid "History"
-msgstr "歴史"
-
-# 98c01f9f86914541a78481fc80a804dd
-#: ../../../src/bd_astar/doc/index.rst:75
-msgid "New in version 2.0.0"
-msgstr ""
-
-# fd577945de174be79b0b53dc92d1fdae
-#: ../../../src/bd_astar/doc/index.rst:79
-msgid "Examples"
-msgstr "例"
-
-# 1e4a6776b9154f5da5abb5c6d64f3221
-#: ../../../src/bd_astar/doc/index.rst:81
-msgid "Without ``reverse_cost``"
-msgstr "``reverse_cost``なしの場合"
-
-# 3f707fb48bdf4edfa0f1b3657cfcbb7a
-#: ../../../src/bd_astar/doc/index.rst:101
-msgid "With ``reverse_cost``"
-msgstr "``reverse_cost``ありの場合"
-
-# 473f16db67964e14b8efb25a1cf057b9
-#: ../../../src/bd_astar/doc/index.rst:120
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 7289ec5f57844a379608577bd455d4b5
-#: ../../../src/bd_astar/doc/index.rst:124
-msgid "See Also"
-msgstr "参照"
-
-# 773014635f2c4e87a452416b391581e5
-#: ../../../src/bd_astar/doc/index.rst:126
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# f4c3b61a97b94311a9f83508c040b614
-#: ../../../src/bd_astar/doc/index.rst:127
-msgid ":ref:`bd_dijkstra`"
-msgstr ":ref:`bd_dijkstra`"
-
-# 769c0e94fba24848bb36a7bb9ca90800
-#: ../../../src/bd_astar/doc/index.rst:128
-msgid "http://en.wikipedia.org/wiki/Bidirectional_search"
-msgstr "http://en.wikipedia.org/wiki/Bidirectional_search"
-
-# bc6e6a206f44475d91e857ec85d36106
-#: ../../../src/bd_astar/doc/index.rst:129
-msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
-msgstr "http://en.wikipedia.org/wiki/A*_search_algorithm"
diff --git a/doc/i18n/ja/LC_MESSAGES/src/bd_dijkstra/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/bd_dijkstra/doc/index.po
deleted file mode 100644
index c9a75f1..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/bd_dijkstra/doc/index.po
+++ /dev/null
@@ -1,195 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-07 12:30+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 3c0a9e188c614b0d8a83fad794d3b42f
-#: ../../../src/bd_dijkstra/doc/index.rst:13
-msgid "pgr_bdDijkstra - Bi-directional Dijkstra Shortest Path"
-msgstr ""
-
-# 2a8d7f88cd7c41549e90531d1d565848
-#: ../../../src/bd_dijkstra/doc/index.rst:21
-msgid "Name"
-msgstr "名前"
-
-# 9e326337967141dd8cb35c1a7eb5d7b2
-#: ../../../src/bd_dijkstra/doc/index.rst:23
-msgid ""
-"``pgr_bdDijkstra`` - Returns the shortest path using Bidirectional Dijkstra "
-"algorithm."
-msgstr ""
-
-# e2e0af558a7340a7a29f667b07037690
-#: ../../../src/bd_dijkstra/doc/index.rst:27
-msgid "Synopsis"
-msgstr "概要"
-
-# 23d2258a058a4b5fa6dcb6655362484a
-#: ../../../src/bd_dijkstra/doc/index.rst:29
-msgid ""
-"This is a bi-directional Dijkstra search algorithm. It searchs from the "
-"source toward the distination and at the same time from the destination to "
-"the source and terminates whe these to searchs meet in the middle. Returns a"
-" set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows,"
-" that make up a path."
-msgstr ""
-
-# b37dbb1c097441d7afac9b1c3be4fa16
-#: ../../../src/bd_dijkstra/doc/index.rst:38
-msgid "Description"
-msgstr "説明"
-
-# 27182b928a294e22bbd7567e7ef6a1a6
-#: ../../../src/bd_dijkstra/doc/index.rst:40
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "SQLのクエリーです。以下に続くカラムからなる行セットを返します:"
-
-# d5ecf6b2aa844b768783b31d91cc0d1c
-#: ../../../src/bd_dijkstra/doc/index.rst:47
-msgid "``int4`` identifier of the edge"
-msgstr "エッジの識別子[``int4``]"
-
-# 282a69ee248b4dcfa591ec2aa3668cf4
-#: ../../../src/bd_dijkstra/doc/index.rst:48
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4``型の始点ノードの識別子"
-
-# d8ca4a99797f4da89401ca4eae5de81b
-#: ../../../src/bd_dijkstra/doc/index.rst:49
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4``型の終点ノードの識別子"
-
-# 16d3eacf8377421dbb3aa3f559f8c2fd
-#: ../../../src/bd_dijkstra/doc/index.rst:50
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8``型のエッジにかかる重み。負の重みはエッジがグラフに挿入されることを防ぎます。"
-
-# 2a8cd5659ad849358862b656205877aa
-#: ../../../src/bd_dijkstra/doc/index.rst:51
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(オプション) エッジの反対方向のコスト。この値は``directed``および``has_rcost``パラメータが``true``の場合のみ使用されます。(負のコストについては前述の通りです)"
-
-# 95f13721773f433891e1e8b50ac04509
-#: ../../../src/bd_dijkstra/doc/index.rst:53
-msgid "``int4`` id of the start point"
-msgstr "``int4``型の始点ノードのID"
-
-# b9798483a7944c23b68242badf5ba991
-#: ../../../src/bd_dijkstra/doc/index.rst:54
-msgid "``int4`` id of the end point"
-msgstr "``int4``型の始点ノードのID"
-
-# ff73a5d65d1e44728449829347874aa3
-#: ../../../src/bd_dijkstra/doc/index.rst:55
-msgid "``true`` if the graph is directed"
-msgstr "有向グラフの場合は``true``を指定"
-
-# c177b69ec8f34e3e8347a48cd4fd0eec
-#: ../../../src/bd_dijkstra/doc/index.rst:56
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "``true``の場合、SQLで生成される行セットの``reverse_cost``カラムは、エッジの逆方向にかかる重みとして使用されます。"
-
-# 94093f98581b414e8de69c5c03ed7ff9
-#: ../../../src/bd_dijkstra/doc/index.rst:58
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ":ref:`type_cost_result` のセットを返します:"
-
-# b6dcdf2882344c97b13a0a1b5dcfc76f
-#: ../../../src/bd_dijkstra/doc/index.rst:60
-msgid "row sequence"
-msgstr "行の連番"
-
-# 71a25f43edad4704b8f7bc386b951d6a
-#: ../../../src/bd_dijkstra/doc/index.rst:61
-msgid "node ID"
-msgstr "ノードID"
-
-# bb342316c7374f38ae60758a95fe5aa0
-#: ../../../src/bd_dijkstra/doc/index.rst:62
-msgid "edge ID (``-1`` for the last row)"
-msgstr "エッジID (最終行は``-1``)"
-
-# 903aaea6437d438094faa1255671261a
-#: ../../../src/bd_dijkstra/doc/index.rst:63
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "``id1``から``id2``を横断するコスト"
-
-# 9422981e26f04c7e9edb754944c47cea
-#: ../../../src/bd_dijkstra/doc/index.rst:66
-msgid "History"
-msgstr "歴史"
-
-# c1db7489de2b4ef8880d8d9f3abb66e3
-#: ../../../src/bd_dijkstra/doc/index.rst:67
-msgid "New in version 2.0.0"
-msgstr ""
-
-# e61d7de8bdb04972a567e5884e47773a
-#: ../../../src/bd_dijkstra/doc/index.rst:71
-msgid "Examples"
-msgstr "例"
-
-# e5bb5ec0cf844c229475d4e75c327eb3
-#: ../../../src/bd_dijkstra/doc/index.rst:73
-msgid "Without ``reverse_cost``"
-msgstr "``reverse_cost``なしの場合"
-
-# 7b425886ca994a1e87e833443909b584
-#: ../../../src/bd_dijkstra/doc/index.rst:93
-msgid "With ``reverse_cost``"
-msgstr "``reverse_cost``ありの場合"
-
-# f47bce06d90b47c0a3ba534e4af09213
-#: ../../../src/bd_dijkstra/doc/index.rst:113
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# dce05fd947104f7fb53f334994b47db8
-#: ../../../src/bd_dijkstra/doc/index.rst:117
-msgid "See Also"
-msgstr "参照"
-
-# e9e1be5a32c8439083185caf29aaa09b
-#: ../../../src/bd_dijkstra/doc/index.rst:119
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 7e04714c590148078028bde3efbb5f57
-#: ../../../src/bd_dijkstra/doc/index.rst:120
-msgid ":ref:`bd_astar`"
-msgstr ":ref:`bd_astar`"
-
-# 1e532cd9d5634fb0934e837b0db7ad8a
-#: ../../../src/bd_dijkstra/doc/index.rst:121
-msgid "http://en.wikipedia.org/wiki/Bidirectional_search"
-msgstr "http://en.wikipedia.org/wiki/Bidirectional_search"
-
-# e3826d9e6a084b349a9ed0d6fffdb1ad
-#: ../../../src/bd_dijkstra/doc/index.rst:122
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/analyze_graph.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/analyze_graph.po
deleted file mode 100644
index e663f84..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/analyze_graph.po
+++ /dev/null
@@ -1,411 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 4ec68d2c61f945ef81648e1b5c6415f1
-#: ../../../src/common/doc/functions/analyze_graph.rst:13
-msgid "pgr_analyzeGraph"
-msgstr ""
-
-# 4c3762e114fb4e67a2515bba541c8f36
-#: ../../../src/common/doc/functions/analyze_graph.rst:20
-msgid "Name"
-msgstr "名前"
-
-# ac455e0fb31e44308320f39bbd78adfc
-#: ../../../src/common/doc/functions/analyze_graph.rst:22
-msgid "``pgr_anlizeGraph`` — Analyzes the network topology."
-msgstr ""
-
-# 7d6b06e1d5354d94ac2855084e4e9e71
-#: ../../../src/common/doc/functions/analyze_graph.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 19f89e76f38342129988c1b3de66af9a
-# ebc7d96a54cb409a916a9e44ff8544f9
-#: ../../../src/common/doc/functions/analyze_graph.rst:28
-#: ../../../src/common/doc/functions/analyze_graph.rst:61
-msgid "The function returns:"
-msgstr ""
-
-# b996e0d0950741438419d72fc2aaa1a6
-# ac02a2dca7d24bb296b418e5019b5d52
-#: ../../../src/common/doc/functions/analyze_graph.rst:30
-#: ../../../src/common/doc/functions/analyze_graph.rst:63
-msgid "``OK`` after the analysis has finished."
-msgstr ""
-
-# 6494556e5a0240b6b89d6cc13588a959
-# 226def8709104fefbde358ee19f0dbdc
-#: ../../../src/common/doc/functions/analyze_graph.rst:31
-#: ../../../src/common/doc/functions/analyze_graph.rst:69
-msgid "``FAIL`` when the analysis was not completed due to an error."
-msgstr ""
-
-# 258df98c829a48e794073f4f67e64d37
-#: ../../../src/common/doc/functions/analyze_graph.rst:40
-msgid "Description"
-msgstr "説明"
-
-# 2ea823d9ac6a4b309542c1efdf685188
-#: ../../../src/common/doc/functions/analyze_graph.rst:43
-msgid "Prerequisites"
-msgstr ""
-
-# b6f61bceeb764c09a0519ef218788641
-#: ../../../src/common/doc/functions/analyze_graph.rst:44
-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 <edge_table>_vertices_pgr that stores the "
-"vertices information."
-msgstr ""
-
-# bc5a5fd73e194a1eb18560c62b8726c5
-#: ../../../src/common/doc/functions/analyze_graph.rst:46
-msgid ""
-"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
-"vertices table."
-msgstr ""
-
-# dddd02de549c450da54ecc30da50bcac
-#: ../../../src/common/doc/functions/analyze_graph.rst:47
-msgid ""
-"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
-"and the vertices table."
-msgstr ""
-
-# 2f1a64c5c7df47c08b9460c1c2ca9a0d
-#: ../../../src/common/doc/functions/analyze_graph.rst:50
-msgid "Parameters"
-msgstr ""
-
-# f7ef120ecd234df3bc9de0b69122a094
-#: ../../../src/common/doc/functions/analyze_graph.rst:51
-msgid "The analyze graph function accepts the following parameters:"
-msgstr ""
-
-# 93b5fa9bcdd84ccbae6d4945adb6b9b5
-#: ../../../src/common/doc/functions/analyze_graph.rst:53
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# 0c3bf879395649e1aac68ae62880746b
-#: ../../../src/common/doc/functions/analyze_graph.rst:54
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-# cd2deb23e3394ad298d9787e069561e2
-#: ../../../src/common/doc/functions/analyze_graph.rst:55
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# 31330d72cbb748289eafa0fcb996153d
-#: ../../../src/common/doc/functions/analyze_graph.rst:56
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr ""
-
-# b9e5db8199ce47ccb092272e93020d7c
-#: ../../../src/common/doc/functions/analyze_graph.rst:57
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# 245c992a7082431684659ae5845aced6
-#: ../../../src/common/doc/functions/analyze_graph.rst:58
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# 8e81329133844e65b7eef1f84cb73965
-#: ../../../src/common/doc/functions/analyze_graph.rst:59
-msgid ""
-"``text`` Condition to select a subset or rows. Default value is ``true``"
-" to indicate all rows."
-msgstr ""
-
-# c99a684aa3994cc4b60c334882d9ed78
-#: ../../../src/common/doc/functions/analyze_graph.rst:65
-msgid "Uses the vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# e32eb0de40d0487fbb1062ec88c5bbe9
-#: ../../../src/common/doc/functions/analyze_graph.rst:66
-msgid "Fills completly the ``cnt`` and ``chk`` columns of the vertices table."
-msgstr ""
-
-# a4a0f627086946459e80cc8ac16b31b8
-#: ../../../src/common/doc/functions/analyze_graph.rst:67
-msgid ""
-"Returns the analysis of the section of the network defined by "
-"``rows_where``"
-msgstr ""
-
-# f2d3df84fbb14b48a0dba64650326883
-#: ../../../src/common/doc/functions/analyze_graph.rst:71
-msgid "The vertices table is not found."
-msgstr ""
-
-# 1c3dd89f91d94a32b0fa96e3c8544649
-#: ../../../src/common/doc/functions/analyze_graph.rst:72
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# 0e7728a66df8403b80c0e73cc496d665
-#: ../../../src/common/doc/functions/analyze_graph.rst:73
-msgid "The condition is not well formed."
-msgstr ""
-
-# 8a41f89e1b6c4622925078236419ba59
-#: ../../../src/common/doc/functions/analyze_graph.rst:74
-msgid "The names of source , target or id are the same."
-msgstr ""
-
-# 9a0c49ad17e7442291584a6d38ad24f0
-#: ../../../src/common/doc/functions/analyze_graph.rst:75
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-# a28d4cfc2fb145bd8b620cd99ae007ef
-#: ../../../src/common/doc/functions/analyze_graph.rst:79
-msgid "The Vertices Table"
-msgstr ""
-
-# 6726eb03c9e14ce487a84ef6bdb3d061
-#: ../../../src/common/doc/functions/analyze_graph.rst:80
-msgid ""
-"The vertices table can be created with :ref:`pgr_createVerticesTable "
-"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
-msgstr ""
-
-# f69881355abd43b08fd4b112a15c823a
-#: ../../../src/common/doc/functions/analyze_graph.rst:82
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# e9b846b6c67a40a5a56ce827cbde2335
-#: ../../../src/common/doc/functions/analyze_graph.rst:84
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# c76d33c8d1d243e78adb977c995c1ed9
-#: ../../../src/common/doc/functions/analyze_graph.rst:85
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-msgstr ""
-
-# 2a14dd7a08114891908953fe3f87a075
-#: ../../../src/common/doc/functions/analyze_graph.rst:86
-msgid "``integer`` Indicator that the vertex might have a problem."
-msgstr ""
-
-# 9731ccd0742c4573b05224539f373580
-#: ../../../src/common/doc/functions/analyze_graph.rst:87
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# bf31d82856954293ac270255b046d010
-#: ../../../src/common/doc/functions/analyze_graph.rst:88
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# fa51c4280ee2409daf5cee9fbc858ef4
-#: ../../../src/common/doc/functions/analyze_graph.rst:89
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# 3a2bb12205fe4cd6ad67ba6a8f37afe4
-#: ../../../src/common/doc/functions/analyze_graph.rst:92
-msgid "History"
-msgstr "歴史"
-
-# 378f4d42f82e4d30a6ab016e5ecc621a
-#: ../../../src/common/doc/functions/analyze_graph.rst:93
-msgid "New in version 2.0.0"
-msgstr ""
-
-# f2b122f189224840ad820005cf04c3c1
-#: ../../../src/common/doc/functions/analyze_graph.rst:96
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-# bbc188364d7a4ba9b73c901703f754a0
-#: ../../../src/common/doc/functions/analyze_graph.rst:99
-msgid "The simplest way to use pgr_analyzeGraph is:"
-msgstr ""
-
-# eef338680d2247e485489cda2088d085
-#: ../../../src/common/doc/functions/analyze_graph.rst:106
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-# bd9ee1725f5f458e84d65ccbde7489d2
-#: ../../../src/common/doc/functions/analyze_graph.rst:111
-msgid "We get the same result as the simplest way to use the function."
-msgstr ""
-
-# e6bd1bc511a6475aaa6fcce1db0cc9fd
-# 667d346fce1340c89b86814855215f31
-#: ../../../src/common/doc/functions/analyze_graph.rst:118
-#: ../../../src/common/doc/functions/analyze_graph.rst:184
-msgid "When using the named notation"
-msgstr ""
-
-# a6f10ab57f0645b6b0307bcb5d6c7ef3
-# eae5acaa57ff4a459953c203612092fa
-#: ../../../src/common/doc/functions/analyze_graph.rst:119
-#: ../../../src/common/doc/functions/analyze_graph.rst:185
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-# 0b36ba3cb2c24c17b8740a45f3430b69
-#: ../../../src/common/doc/functions/analyze_graph.rst:129
-msgid ""
-"Parameters defined with a default value can be ommited, as long as the value"
-" matches the default:"
-msgstr ""
-
-# 5130840677694ba3a4c08ae3b787e4d5
-# 309f2f767a9c4f419bb1a4ad1c1bfacf
-#: ../../../src/common/doc/functions/analyze_graph.rst:136
-#: ../../../src/common/doc/functions/analyze_graph.rst:199
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-# e7093f0dacbf44af908a1259b2b8f45d
-#: ../../../src/common/doc/functions/analyze_graph.rst:137
-msgid ""
-"Selecting rows based on the id. Displays the analysis a the section of the "
-"network."
-msgstr ""
-
-# 2867ea63b6b14572adb1130a9d04e28a
-#: ../../../src/common/doc/functions/analyze_graph.rst:143
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# 3cf323ab63204d99ac7ca31677b9e667
-#: ../../../src/common/doc/functions/analyze_graph.rst:149
-msgid ""
-"Selecting the rows where the geometry is near the geometry of the row with "
-"``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-# baf5ffc28192473483bc4a1a4a0315f3
-#: ../../../src/common/doc/functions/analyze_graph.rst:160
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-# 57cb32f6495d4cb0b5f36be03adc7efa
-#: ../../../src/common/doc/functions/analyze_graph.rst:162
-msgid "For the following table"
-msgstr ""
-
-# 12fcad9f3b484280baa8b29867859861
-#: ../../../src/common/doc/functions/analyze_graph.rst:171
-msgid "Using positional notation:"
-msgstr ""
-
-# 07a02c55d3eb4f9eb1dfed2833efcbe8
-#: ../../../src/common/doc/functions/analyze_graph.rst:172
-msgid ""
-"The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-# 5dc716a92a81438c888764e8cb2b5b79
-#: ../../../src/common/doc/functions/analyze_graph.rst:195
-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 ""
-
-# 057829092b8a4504a3115036a73a489f
-#: ../../../src/common/doc/functions/analyze_graph.rst:200
-msgid "Selecting rows based on the id."
-msgstr ""
-
-# 5c1437170b9149c5bc4174edc58ee875
-#: ../../../src/common/doc/functions/analyze_graph.rst:210
-msgid ""
-"Selecting the rows WHERE the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# 3d622065f50846578692f7a1b2a136d9
-#: ../../../src/common/doc/functions/analyze_graph.rst:222
-msgid ""
-"Selecting the rows WHERE the geometry is near the place='myhouse' of the "
-"table ``othertable``. (note the use of quote_literal)"
-msgstr ""
-
-# 2cffbd13f5f54de1abd9c025df6a762a
-#: ../../../src/common/doc/functions/analyze_graph.rst:239
-msgid "Examples"
-msgstr "例"
-
-# eeedfddf23864b98a801913ef15f7cd9
-#: ../../../src/common/doc/functions/analyze_graph.rst:366
-msgid "The examples use the :ref:`sampledata` network."
-msgstr ""
-
-# d6f7c52a1a824867943d8adae7b2e245
-#: ../../../src/common/doc/functions/analyze_graph.rst:370
-msgid "See Also"
-msgstr "参照"
-
-# ba0f07ab7dca4083a5aef16d566cf506
-#: ../../../src/common/doc/functions/analyze_graph.rst:372
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 90d9202a2da94489b4b43a71caa66956
-#: ../../../src/common/doc/functions/analyze_graph.rst:373
-msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
-msgstr ""
-
-# 73d10e9d35dd4a269249fbc09274000b
-#: ../../../src/common/doc/functions/analyze_graph.rst:374
-msgid ""
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
-"vertices table based on the source and target information."
-msgstr ""
-
-# 2f459b0453c141239d9564e2467fbdd5
-#: ../../../src/common/doc/functions/analyze_graph.rst:375
-msgid ""
-":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
-"edge table."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po
deleted file mode 100644
index 979d32d..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/analyze_oneway.po
+++ /dev/null
@@ -1,335 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# f8ca74e3c9a54cd0b0e6cd3bcec8de7e
-#: ../../../src/common/doc/functions/analyze_oneway.rst:13
-msgid "pgr_analyzeOneway"
-msgstr ""
-
-# ee3b92d1a5184a92b6fa72a69ab2f1c9
-#: ../../../src/common/doc/functions/analyze_oneway.rst:20
-msgid "Name"
-msgstr "名前"
-
-# fd816817954b4f3d8d25927cebce353b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:22
-msgid ""
-"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
-"segments."
-msgstr ""
-
-# 4c9dfc86ed0042de97bf0107b0b2eccd
-#: ../../../src/common/doc/functions/analyze_oneway.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# d31a1ab567db4873a46256e8ecbdedf4
-#: ../../../src/common/doc/functions/analyze_oneway.rst:28
-msgid ""
-"This function analyzes oneway streets in a graph and identifies any flipped "
-"segments."
-msgstr ""
-
-# 74bdfef086ae480bbe2affdece2c9efa
-#: ../../../src/common/doc/functions/analyze_oneway.rst:40
-msgid "Description"
-msgstr "説明"
-
-# 04f93117821f4eae962594c71a06a5a8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:42
-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 ""
-
-# 035956781a774bc3bb1214394ad77be8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:44
-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 ""
-
-# 007bbd995cbf4e7c86ce8e9916675879
-#: ../../../src/common/doc/functions/analyze_oneway.rst:46
-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 ""
-
-# f972114db5c841928b7f2ac705bb0687
-#: ../../../src/common/doc/functions/analyze_oneway.rst:49
-msgid "Prerequisites"
-msgstr ""
-
-# 54a0c52cee394d389a81fcd50b24ad97
-#: ../../../src/common/doc/functions/analyze_oneway.rst:50
-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 <edge_table>_vertices_pgr that stores the "
-"vertices information."
-msgstr ""
-
-# 808b5b795d364182b543ab30a1ad1644
-#: ../../../src/common/doc/functions/analyze_oneway.rst:52
-msgid ""
-"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
-"vertices table."
-msgstr ""
-
-# f6248fc57e734ead94edd12cab567915
-#: ../../../src/common/doc/functions/analyze_oneway.rst:53
-msgid ""
-"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
-"and the vertices table."
-msgstr ""
-
-# 4cacac934ba64cda907561e98847bf8b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:56
-msgid "Parameters"
-msgstr ""
-
-# 669f0d5432dd4c0c8da55dba8c3502e7
-#: ../../../src/common/doc/functions/analyze_oneway.rst:57
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# a16edb2699f1486c91c10ac7533fef7c
-#: ../../../src/common/doc/functions/analyze_oneway.rst:58
-msgid "``text[]`` source node **in** rules"
-msgstr ""
-
-# 28b4c2457d3b4aaba43dc42af4d2bd5e
-#: ../../../src/common/doc/functions/analyze_oneway.rst:59
-msgid "``text[]`` source node **out** rules"
-msgstr ""
-
-# 5180ad82f6e6434a99defa1823c0a2d8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:60
-msgid "``text[]`` target node **in** rules"
-msgstr ""
-
-# 4866b796c7fb49d985a479c3a97eec38
-#: ../../../src/common/doc/functions/analyze_oneway.rst:61
-msgid "``text[]`` target node **out** rules"
-msgstr ""
-
-# 2744331fb9ac447ba0c40a6035ac0a95
-#: ../../../src/common/doc/functions/analyze_oneway.rst:62
-msgid ""
-"``text`` oneway column name name of the network table. Default value is "
-"``oneway``."
-msgstr ""
-
-# b116cd1fc10f4f5bbd8fe9800562b62f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:63
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# 8ca5a93ed45443c09202b1e5779dfa76
-#: ../../../src/common/doc/functions/analyze_oneway.rst:64
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# e41f4c872a3445dbbc0bd183a71971fa
-#: ../../../src/common/doc/functions/analyze_oneway.rst:65
-msgid ""
-"``boolean`` flag to treat oneway NULL values as bi-directional. Default "
-"value is ``true``."
-msgstr ""
-
-# 9cd0459ca40940448e6c0d9c07c4a157
-#: ../../../src/common/doc/functions/analyze_oneway.rst:67
-msgid ""
-"It is strongly recommended to use the named notation. See "
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
-":ref:`pgr_createTopology <pgr_create_topology>` for examples."
-msgstr ""
-
-# e217ab2060e447e9a7a3745f4d84390d
-#: ../../../src/common/doc/functions/analyze_oneway.rst:70
-msgid "The function returns:"
-msgstr ""
-
-# 95dedd1c39c9424a906e6f2ff882e84a
-#: ../../../src/common/doc/functions/analyze_oneway.rst:72
-msgid "``OK`` after the analysis has finished."
-msgstr ""
-
-# 573d5fab7bb247d5adc39d8460683357
-#: ../../../src/common/doc/functions/analyze_oneway.rst:74
-msgid "Uses the vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# 86597d037fe242378cc71e6e2ec88b19
-#: ../../../src/common/doc/functions/analyze_oneway.rst:75
-msgid ""
-"Fills completely the ``ein`` and ``eout`` columns of the vertices table."
-msgstr ""
-
-# dcae6d2cceea4b6bb47a700cc4338340
-#: ../../../src/common/doc/functions/analyze_oneway.rst:77
-msgid "``FAIL`` when the analysis was not completed due to an error."
-msgstr ""
-
-# 792572ffb7314163be7e4aabadd4429c
-#: ../../../src/common/doc/functions/analyze_oneway.rst:79
-msgid "The vertices table is not found."
-msgstr ""
-
-# affbb7122dd844f3b5c7962c97dec0d3
-#: ../../../src/common/doc/functions/analyze_oneway.rst:80
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# e50d016ee05048779dea2db4006500be
-#: ../../../src/common/doc/functions/analyze_oneway.rst:81
-msgid "The names of source , target or oneway are the same."
-msgstr ""
-
-# f14e2456527945e0a80e7888bb6dde7f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:83
-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 ""
-
-# 02623674186e4e0c961078942584c0ec
-#: ../../../src/common/doc/functions/analyze_oneway.rst:86
-msgid "The Vertices Table"
-msgstr ""
-
-# dd7fb8252bfe456aaa65515346941e74
-#: ../../../src/common/doc/functions/analyze_oneway.rst:87
-msgid ""
-"The vertices table can be created with :ref:`pgr_createVerticesTable "
-"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
-msgstr ""
-
-# f838bf466e424966bd61af7b901279d2
-#: ../../../src/common/doc/functions/analyze_oneway.rst:89
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# 722239d3877b48d8bc5e63052fc7424f
-#: ../../../src/common/doc/functions/analyze_oneway.rst:91
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# 0d3b269abc8e45a1abf355e4bb7d51c0
-#: ../../../src/common/doc/functions/analyze_oneway.rst:92
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 50b3729c83964ef3ae1a1511c76b50f8
-#: ../../../src/common/doc/functions/analyze_oneway.rst:93
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# a5b1fe0206ea4c428c94f43a141b527b
-#: ../../../src/common/doc/functions/analyze_oneway.rst:94
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming."
-msgstr ""
-
-# 7c678b91ca8a408aafda94e5fa217fae
-#: ../../../src/common/doc/functions/analyze_oneway.rst:95
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing."
-msgstr ""
-
-# 6d672d0be9cf41d69db69e46109d1624
-#: ../../../src/common/doc/functions/analyze_oneway.rst:96
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# b7cf2a5bba544714b9b79373c889e6cc
-#: ../../../src/common/doc/functions/analyze_oneway.rst:100
-msgid "History"
-msgstr "歴史"
-
-# ee9866aeb2c94c7fb0aa1e6cda48e6cb
-#: ../../../src/common/doc/functions/analyze_oneway.rst:101
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 3eed638ba1dd400186848b0928d632cf
-#: ../../../src/common/doc/functions/analyze_oneway.rst:105
-msgid "Examples"
-msgstr "例"
-
-# fb1f0f5537c0427a866814b367160245
-#: ../../../src/common/doc/functions/analyze_oneway.rst:129
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 34726fcf405940b780880e71c6a2dad3
-#: ../../../src/common/doc/functions/analyze_oneway.rst:133
-msgid "See Also"
-msgstr "参照"
-
-# 384816237f7b49d5911a48675467810d
-#: ../../../src/common/doc/functions/analyze_oneway.rst:135
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# f8a2c637ce834c5ab9fea42ec365f0d1
-#: ../../../src/common/doc/functions/analyze_oneway.rst:136
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-# 1688102891bc4abaaed229738ca05755
-#: ../../../src/common/doc/functions/analyze_oneway.rst:137
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
-
-# 5914f34793e24715acb0adbe7d9fe1e0
-#: ../../../src/common/doc/functions/analyze_oneway.rst:138
-msgid ""
-":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
-"source and target information."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/create_topology.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/create_topology.po
deleted file mode 100644
index 862c949..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/create_topology.po
+++ /dev/null
@@ -1,414 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 841ce4ae2ccd42aeb6708e0469affc85
-#: ../../../src/common/doc/functions/create_topology.rst:13
-msgid "pgr_createTopology"
-msgstr ""
-
-# bceb18f1c7484f2495890a181eb43749
-#: ../../../src/common/doc/functions/create_topology.rst:20
-msgid "Name"
-msgstr "名前"
-
-# efddc8da13ee412aa1fb75bf84ad023b
-#: ../../../src/common/doc/functions/create_topology.rst:22
-msgid ""
-"``pgr_createTopology`` — Builds a network topology based on the geometry "
-"information."
-msgstr ""
-
-# c01e1abb389b4e0096e2971378967ac9
-#: ../../../src/common/doc/functions/create_topology.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 0dcc6bb9100b4d89afa5b1404283d0c9
-# 2f90d445d42f4c839d6d2b2e4bdd588b
-#: ../../../src/common/doc/functions/create_topology.rst:28
-#: ../../../src/common/doc/functions/create_topology.rst:69
-msgid "The function returns:"
-msgstr ""
-
-# 88833f75e6d741b5bc91526488d66e4e
-#: ../../../src/common/doc/functions/create_topology.rst:30
-msgid ""
-"``OK`` after the network topology has been built and the vertices table "
-"created."
-msgstr ""
-
-# da6aad799955428fb1bef9ff2dbd70b5
-#: ../../../src/common/doc/functions/create_topology.rst:31
-msgid "``FAIL`` when the network topology was not built due to an error."
-msgstr ""
-
-# c4d463cfb61840f689831eeafe2844dc
-#: ../../../src/common/doc/functions/create_topology.rst:42
-msgid "Description"
-msgstr "説明"
-
-# fba8585de1c94f0ba612f64f8cd4f39d
-#: ../../../src/common/doc/functions/create_topology.rst:45
-msgid "Parameters"
-msgstr ""
-
-# 33e33f7ee98e4b9a9d333f8ab95cbc9b
-#: ../../../src/common/doc/functions/create_topology.rst:46
-msgid "The topology creation function accepts the following parameters:"
-msgstr ""
-
-# d19b1856e3d440749487a15a83c9d44c
-#: ../../../src/common/doc/functions/create_topology.rst:48
-msgid "``text`` Network table name. (may contain the schema name AS well)"
-msgstr ""
-
-# 6afd7b88cbaf4a58b2dcbd161b278356
-#: ../../../src/common/doc/functions/create_topology.rst:49
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-# 905510b263854f1eb05f10c8a64d9d20
-#: ../../../src/common/doc/functions/create_topology.rst:50
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# f9b621bcf0ab41c3b87693c812f3d710
-#: ../../../src/common/doc/functions/create_topology.rst:51
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr ""
-
-# 6bcaf9c3c7e1422ea8e1b4dc45e7c613
-#: ../../../src/common/doc/functions/create_topology.rst:52
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# e2b13126a14a4ebeb8c3f453235560a1
-#: ../../../src/common/doc/functions/create_topology.rst:53
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# adbfdd92db3740e5b4e8a6259a0a064c
-#: ../../../src/common/doc/functions/create_topology.rst:54
-msgid ""
-"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
-"to indicate all rows."
-msgstr ""
-
-# 65297b06273d46cc98c9a3be75886137
-#: ../../../src/common/doc/functions/create_topology.rst:58
-msgid "The ``edge_table`` will be affected"
-msgstr ""
-
-# 7f45565b3b8d40408b2da1bee3d1c354
-#: ../../../src/common/doc/functions/create_topology.rst:60
-msgid "The ``source`` column values will change."
-msgstr ""
-
-# e05fe9ce627848aa8aa72f032d303f04
-#: ../../../src/common/doc/functions/create_topology.rst:61
-msgid "The ``target`` column values will change."
-msgstr ""
-
-# 72c3682247aa4841a49790a78db8c3c3
-#: ../../../src/common/doc/functions/create_topology.rst:62
-msgid ""
-"An index will be created, if it doesn't exists, to speed up the process to "
-"the following columns:"
-msgstr ""
-
-# 993784afa3ce4ca68f11e8e02f2b4b27
-#: ../../../src/common/doc/functions/create_topology.rst:64
-msgid "``id``"
-msgstr ""
-
-# 3074ee818e8241bc93c5a3284d7c3af4
-#: ../../../src/common/doc/functions/create_topology.rst:65
-msgid "``the_geom``"
-msgstr ""
-
-# e40fef18592542b98d234ac6a8038def
-#: ../../../src/common/doc/functions/create_topology.rst:66
-msgid "``source``"
-msgstr ""
-
-# 0360a33adc734d1eaf83f5e1e314cc73
-#: ../../../src/common/doc/functions/create_topology.rst:67
-msgid "``target``"
-msgstr ""
-
-# a2aae07be90348b0b2190f647731fb26
-#: ../../../src/common/doc/functions/create_topology.rst:71
-msgid "``OK`` after the network topology has been built."
-msgstr ""
-
-# 33a4fd15e75a41a68105d2ea67b4aab1
-#: ../../../src/common/doc/functions/create_topology.rst:73
-msgid "Creates a vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# 589a7e90c6404cbe902baec0a884189b
-#: ../../../src/common/doc/functions/create_topology.rst:74
-msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
-msgstr ""
-
-# 92e7ab03c5ce43ed8c705a26aa4b801c
-#: ../../../src/common/doc/functions/create_topology.rst:75
-msgid ""
-"Fills the source and target columns of the edge table referencing the ``id``"
-" of the vertices table."
-msgstr ""
-
-# 0635e9d515184ccc80747864939f789c
-#: ../../../src/common/doc/functions/create_topology.rst:78
-msgid "``FAIL`` when the network topology was not built due to an error:"
-msgstr ""
-
-# 607fcb6f6ae3438789ecf9c95992bc3f
-#: ../../../src/common/doc/functions/create_topology.rst:80
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# 2bad2b565914457a90a990e718e857fd
-#: ../../../src/common/doc/functions/create_topology.rst:81
-msgid "The condition is not well formed."
-msgstr ""
-
-# c800f5e3462c44c1b786308aec4cfea4
-#: ../../../src/common/doc/functions/create_topology.rst:82
-msgid "The names of source , target or id are the same."
-msgstr ""
-
-# 51c96f82e8ea49bcbde8aaeb905a6c6c
-#: ../../../src/common/doc/functions/create_topology.rst:83
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-# f5f0d0a1c3814e1d9c14e4de52bd9899
-#: ../../../src/common/doc/functions/create_topology.rst:87
-msgid "The Vertices Table"
-msgstr ""
-
-# 54ef7e60b4d445cfa453323fbe80032d
-#: ../../../src/common/doc/functions/create_topology.rst:88
-msgid ""
-"The vertices table is a requirment of the :ref:`pgr_analyzeGraph "
-"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
-"functions."
-msgstr ""
-
-# faaffddd86fd4680a80925c8c3877f07
-#: ../../../src/common/doc/functions/create_topology.rst:90
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# fc31880c8b034aae99d6d4caec420302
-#: ../../../src/common/doc/functions/create_topology.rst:92
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# 7684f52a607845ef802799c26c221bf3
-#: ../../../src/common/doc/functions/create_topology.rst:93
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 1dc63c1d7cbb417d916ed0561df67df9
-#: ../../../src/common/doc/functions/create_topology.rst:94
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 546f74ccc20545de9c032cabcaac878f
-#: ../../../src/common/doc/functions/create_topology.rst:95
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# 9fe606ee590d4f009989e3cdcf09b5c5
-#: ../../../src/common/doc/functions/create_topology.rst:96
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# 2ee4f32c8546412bad1e109e6051e249
-#: ../../../src/common/doc/functions/create_topology.rst:97
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# a63156aa23b54785aaf66150bfe98a52
-#: ../../../src/common/doc/functions/create_topology.rst:100
-msgid "History"
-msgstr "歴史"
-
-# da8726d6435e42f09d83f4a310d5c432
-#: ../../../src/common/doc/functions/create_topology.rst:101
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# 5b4b6a4bea1543ac98f444d9ec32d7eb
-#: ../../../src/common/doc/functions/create_topology.rst:104
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-# 6db23da4afd448bab89802246bccb65a
-#: ../../../src/common/doc/functions/create_topology.rst:107
-msgid "The simplest way to use pgr_createtopology is:"
-msgstr ""
-
-# 6905f56f53bb4cdfb9ae49021265afe9
-#: ../../../src/common/doc/functions/create_topology.rst:115
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-# f8c6c68c7d334f68bac36a818c4091ab
-#: ../../../src/common/doc/functions/create_topology.rst:120
-msgid "We get the same result AS the simplest way to use the function."
-msgstr ""
-
-# 8dcbdbf60c2e4522a87d80a7796a354b
-# b72940f0e2054c46a50358fc40af026e
-#: ../../../src/common/doc/functions/create_topology.rst:127
-#: ../../../src/common/doc/functions/create_topology.rst:192
-msgid "When using the named notation"
-msgstr ""
-
-# 460cbff5c7054542a80375a4f50072e0
-# 56d9daba24ff4ce9ac02e3326af007af
-#: ../../../src/common/doc/functions/create_topology.rst:128
-#: ../../../src/common/doc/functions/create_topology.rst:193
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-# 4b24ad3db4be4b60a6c8bfcc38fae359
-#: ../../../src/common/doc/functions/create_topology.rst:138
-msgid ""
-"Parameters defined with a default value can be omited, AS long AS the value "
-"matches the default:"
-msgstr ""
-
-# 8aab982078634384ab4dfced463b5c14
-# d9c7d4fa12394a5a915a9f6f664e7a8a
-#: ../../../src/common/doc/functions/create_topology.rst:145
-#: ../../../src/common/doc/functions/create_topology.rst:207
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-# 4be49c2f23734283895a40625620047b
-# 1734ac1429ad4691861fbfcc7954d800
-#: ../../../src/common/doc/functions/create_topology.rst:146
-#: ../../../src/common/doc/functions/create_topology.rst:208
-msgid "Selecting rows based on the id."
-msgstr ""
-
-# 499347aef3cb49f993c320d1fd353a29
-# a0cd57644bf443fbaa81efed8df8a30f
-#: ../../../src/common/doc/functions/create_topology.rst:152
-#: ../../../src/common/doc/functions/create_topology.rst:218
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# b8e12b4f62d24fb0a535290a0a480ff0
-# 42da9f122c7240bea10a78685a6b5b8d
-#: ../../../src/common/doc/functions/create_topology.rst:158
-#: ../../../src/common/doc/functions/create_topology.rst:230
-msgid ""
-"Selecting the rows where the geometry is near the geometry of the row with "
-"``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-# 596d74ac25d34cbda9a05349a4a0af21
-#: ../../../src/common/doc/functions/create_topology.rst:169
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-# ac1bf6e79288443486b7b105e25e07eb
-#: ../../../src/common/doc/functions/create_topology.rst:171
-msgid "For the following table"
-msgstr ""
-
-# a24fc2426b5c4b91bc53f875e37dddaa
-#: ../../../src/common/doc/functions/create_topology.rst:179
-msgid "Using positional notation:"
-msgstr ""
-
-# d1937a888b40477b8d696215b7b93425
-#: ../../../src/common/doc/functions/create_topology.rst:180
-msgid ""
-"The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-# 7e510379477f445a9432549c095c12bb
-#: ../../../src/common/doc/functions/create_topology.rst:203
-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 ""
-
-# de088e18a1634e6a96b99df9171c530a
-#: ../../../src/common/doc/functions/create_topology.rst:247
-msgid "Examples"
-msgstr "例"
-
-# 89b592f2e7f6474cbed2d9d5bca887e9
-#: ../../../src/common/doc/functions/create_topology.rst:279
-msgid "The example uses the :ref:`sampledata` network."
-msgstr ""
-
-# ae52cd8922264c939460bd2df2108508
-#: ../../../src/common/doc/functions/create_topology.rst:283
-msgid "See Also"
-msgstr "参照"
-
-# 664429e917764979b9255e4f9a72377f
-#: ../../../src/common/doc/functions/create_topology.rst:285
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 9ded0191d7344e8baca758e97f34cf68
-#: ../../../src/common/doc/functions/create_topology.rst:286
-msgid ""
-":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
-"source and target information."
-msgstr ""
-
-# ca4432eb1b4246268b1acee87b464b2f
-#: ../../../src/common/doc/functions/create_topology.rst:287
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/create_vert_table.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/create_vert_table.po
deleted file mode 100644
index 9520371..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/create_vert_table.po
+++ /dev/null
@@ -1,388 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 1a8504651dd840e4a48344ead373a073
-#: ../../../src/common/doc/functions/create_vert_table.rst:13
-msgid "pgr_createVerticesTable"
-msgstr ""
-
-# ad976846c3444135a397d1f47a0ffceb
-#: ../../../src/common/doc/functions/create_vert_table.rst:20
-msgid "Name"
-msgstr "名前"
-
-# c26ff674db0d4b65bff9b1483e524956
-#: ../../../src/common/doc/functions/create_vert_table.rst:22
-msgid ""
-"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
-"source and target information."
-msgstr ""
-
-# b27c4239c9034d8fb5bbfc4b736af367
-#: ../../../src/common/doc/functions/create_vert_table.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# bbfea2a13422443f8e1b9b863f56dea0
-# 139eabd1665d4dc8b6caac92f0764d50
-#: ../../../src/common/doc/functions/create_vert_table.rst:28
-#: ../../../src/common/doc/functions/create_vert_table.rst:63
-msgid "The function returns:"
-msgstr ""
-
-# bdf469a3c50c4176bcc89409cbe50136
-# 268e8b4480b24112a72e1d7da0dab1bd
-#: ../../../src/common/doc/functions/create_vert_table.rst:30
-#: ../../../src/common/doc/functions/create_vert_table.rst:65
-msgid "``OK`` after the vertices table has been reconstructed."
-msgstr ""
-
-# f542765a7c984a57b56f203df843634d
-# a536d714aa4240dca5d92dfeee6dd7bb
-#: ../../../src/common/doc/functions/create_vert_table.rst:31
-#: ../../../src/common/doc/functions/create_vert_table.rst:70
-msgid ""
-"``FAIL`` when the vertices table was not reconstructed due to an error."
-msgstr ""
-
-# c7c8bc00b10d45a897224d240c4f96bf
-#: ../../../src/common/doc/functions/create_vert_table.rst:41
-msgid "Description"
-msgstr "説明"
-
-# c53a2ef242f8484dac84581a80134594
-#: ../../../src/common/doc/functions/create_vert_table.rst:44
-msgid "Parameters"
-msgstr ""
-
-# 2dc2c3867d7a4367a958a6e1049f44c0
-#: ../../../src/common/doc/functions/create_vert_table.rst:45
-msgid ""
-"The reconstruction of the vertices table function accepts the following "
-"parameters:"
-msgstr ""
-
-# e92b11f0f4ea47af9581936d11972ef6
-#: ../../../src/common/doc/functions/create_vert_table.rst:47
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# 75d43bdeeb7843139aec9b4c7dc60097
-#: ../../../src/common/doc/functions/create_vert_table.rst:48
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# f0e2bb638cd841f2b61bc8398e3ea59b
-#: ../../../src/common/doc/functions/create_vert_table.rst:49
-msgid ""
-"``text`` Source column name of the network table. Default value is "
-"``source``."
-msgstr ""
-
-# ba67bced62994e7b98967cf09cbf3ca6
-#: ../../../src/common/doc/functions/create_vert_table.rst:50
-msgid ""
-"``text`` Target column name of the network table. Default value is "
-"``target``."
-msgstr ""
-
-# d7d53a50bc9249518132241a2c83dc1b
-#: ../../../src/common/doc/functions/create_vert_table.rst:51
-msgid ""
-"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
-"to indicate all rows."
-msgstr ""
-
-# a87c8e9949df409da09632babbb99748
-#: ../../../src/common/doc/functions/create_vert_table.rst:55
-msgid "The ``edge_table`` will be affected"
-msgstr ""
-
-# a0b202c14bf849e1a9506fc9c4010540
-#: ../../../src/common/doc/functions/create_vert_table.rst:57
-msgid ""
-"An index will be created, if it doesn't exists, to speed up the process to "
-"the following columns:"
-msgstr ""
-
-# 51ab4d2ba98b4affa7e5cec96e352cce
-#: ../../../src/common/doc/functions/create_vert_table.rst:59
-msgid "``the_geom``"
-msgstr ""
-
-# 134fb1a15f8742a49fe36e2683c4c324
-#: ../../../src/common/doc/functions/create_vert_table.rst:60
-msgid "``source``"
-msgstr ""
-
-# 1c5f7bc5486b44999341e4f8f9b92c2e
-#: ../../../src/common/doc/functions/create_vert_table.rst:61
-msgid "``target``"
-msgstr ""
-
-# 2c70ff2c521c48c799c898d61a01e119
-#: ../../../src/common/doc/functions/create_vert_table.rst:67
-msgid "Creates a vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-# b0e0cf6163ea49f3b3a38e97576f301e
-#: ../../../src/common/doc/functions/create_vert_table.rst:68
-msgid ""
-"Fills ``id`` and ``the_geom`` columns of the vertices table based on the "
-"source and target columns of the edge table."
-msgstr ""
-
-# 28e32e20ebd74f88920b7c6fd45054e9
-#: ../../../src/common/doc/functions/create_vert_table.rst:72
-msgid ""
-"A required column of the Network table is not found or is not of the "
-"appropriate type."
-msgstr ""
-
-# 8501c3c5738f4907bf64b63007218466
-#: ../../../src/common/doc/functions/create_vert_table.rst:73
-msgid "The condition is not well formed."
-msgstr ""
-
-# 5252c79651354d40a6271efe4b78d226
-#: ../../../src/common/doc/functions/create_vert_table.rst:74
-msgid "The names of source, target are the same."
-msgstr ""
-
-# 41c42eeafd6b487ebc676126c0f92f0c
-#: ../../../src/common/doc/functions/create_vert_table.rst:75
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-# d61aba7cc54d49b9a670817e7dd52472
-#: ../../../src/common/doc/functions/create_vert_table.rst:78
-msgid "The Vertices Table"
-msgstr ""
-
-# 93a53c04ff294116acf94a067d17ff73
-#: ../../../src/common/doc/functions/create_vert_table.rst:79
-msgid ""
-"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
-"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
-"functions."
-msgstr ""
-
-# 7e418508090c4667b4128b22f562b5db
-#: ../../../src/common/doc/functions/create_vert_table.rst:81
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-# 114548eb64364741b99e10c86fe55fad
-#: ../../../src/common/doc/functions/create_vert_table.rst:83
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-# 35f0fc22f2464997bce4d704a9f4ee88
-#: ../../../src/common/doc/functions/create_vert_table.rst:84
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex."
-" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# d71ba1da8657438b86fe6ce3326cf94a
-#: ../../../src/common/doc/functions/create_vert_table.rst:85
-msgid ""
-"``integer`` Indicator that the vertex might have a problem. See "
-":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-# 9ea4778e1ed64d3cb8c12ffedca5748b
-#: ../../../src/common/doc/functions/create_vert_table.rst:86
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# cd631484ea62455cae3d37b03ca36624
-#: ../../../src/common/doc/functions/create_vert_table.rst:87
-msgid ""
-"``integer`` Number of vertices in the edge_table that reference this vertex "
-"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-# 29652dcb521b4111813d63d570b62873
-#: ../../../src/common/doc/functions/create_vert_table.rst:88
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-# ca63675181414139865690332306235b
-#: ../../../src/common/doc/functions/create_vert_table.rst:91
-msgid "History"
-msgstr "履歴"
-
-# e383b8838b4b40618c66151c1f94fb48
-#: ../../../src/common/doc/functions/create_vert_table.rst:92
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# f4e14bd6d88d4f1e8d5ff2fbf9aea722
-#: ../../../src/common/doc/functions/create_vert_table.rst:95
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-# 6fc1c7d9c4e04380ada776f609bf4505
-#: ../../../src/common/doc/functions/create_vert_table.rst:98
-msgid "The simplest way to use pgr_createVerticesTable is:"
-msgstr ""
-
-# 3373cb2347994f2fa122008bdff12190
-#: ../../../src/common/doc/functions/create_vert_table.rst:105
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-# f75126b9da994fea920678a643a80e25
-#: ../../../src/common/doc/functions/create_vert_table.rst:110
-msgid "We get the same result as the simplest way to use the function."
-msgstr ""
-
-# 90ea5b12d9a64eb2bafd6d211e0ffeff
-# 34ff976ba1f24ec08a19a8d87673156d
-#: ../../../src/common/doc/functions/create_vert_table.rst:117
-#: ../../../src/common/doc/functions/create_vert_table.rst:181
-msgid "When using the named notation"
-msgstr ""
-
-# 213a5c21ddcb4745987210530901695f
-# fac4e4da33fb494981c36957cd000a29
-#: ../../../src/common/doc/functions/create_vert_table.rst:118
-#: ../../../src/common/doc/functions/create_vert_table.rst:182
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-# 529a856bf0404a10a837b07945c52175
-#: ../../../src/common/doc/functions/create_vert_table.rst:128
-msgid ""
-"Parameters defined with a default value can be omited, as long as the value "
-"matches the default:"
-msgstr ""
-
-# 55574bcb1be54b1b907c0524cbf1057d
-# af501046d7d84255bd3030520c3e2f15
-#: ../../../src/common/doc/functions/create_vert_table.rst:135
-#: ../../../src/common/doc/functions/create_vert_table.rst:196
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-# 7080aeec9c1e4a31bfb9be1ed4506ab7
-#: ../../../src/common/doc/functions/create_vert_table.rst:136
-msgid "Selecting rows based on the id."
-msgstr ""
-
-# 74ec654344604925875e20b1447a6a3e
-#: ../../../src/common/doc/functions/create_vert_table.rst:142
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``id`` =5 ."
-msgstr ""
-
-# 89d554dba13d40be8ca51e74d18c7c6f
-# fbda0895e287413fb2455b07ba2ba7fb
-#: ../../../src/common/doc/functions/create_vert_table.rst:148
-#: ../../../src/common/doc/functions/create_vert_table.rst:219
-msgid ""
-"Selecting the rows where the geometry is near the geometry of the row with "
-"``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-# 7f2e698d7f844861bd468923e95ef16a
-#: ../../../src/common/doc/functions/create_vert_table.rst:159
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-# 381c72bdf71543d4853557e93d021602
-#: ../../../src/common/doc/functions/create_vert_table.rst:161
-msgid "For the following table"
-msgstr ""
-
-# 5d51a2b4e3e84516bab9cc22039007c8
-#: ../../../src/common/doc/functions/create_vert_table.rst:169
-msgid "Using positional notation:"
-msgstr ""
-
-# 3be19d9038134fe2907db9c97eaeca7d
-#: ../../../src/common/doc/functions/create_vert_table.rst:170
-msgid ""
-"The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-# 94d47a836ffa45268fc1f9662f902f2b
-#: ../../../src/common/doc/functions/create_vert_table.rst:192
-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 ""
-
-# 6d8d108291094933afdde4095193e506
-#: ../../../src/common/doc/functions/create_vert_table.rst:197
-msgid "Selecting rows based on the gid."
-msgstr ""
-
-# 5df5fd0f734e46c6bfb93444bd86905e
-#: ../../../src/common/doc/functions/create_vert_table.rst:207
-msgid ""
-"Selecting the rows where the geometry is near the geometry of row with "
-"``gid`` =5 ."
-msgstr ""
-
-# e2c54fc28df243609e8d003180886771
-#: ../../../src/common/doc/functions/create_vert_table.rst:236
-msgid "Examples"
-msgstr "例"
-
-# 0587b0909413456482f8b8725b101b7a
-#: ../../../src/common/doc/functions/create_vert_table.rst:258
-msgid "The example uses the :ref:`sampledata` network."
-msgstr ""
-
-# ad71788bef724cb1809d4b5d96ef1e5c
-#: ../../../src/common/doc/functions/create_vert_table.rst:262
-msgid "See Also"
-msgstr "参照"
-
-# 6baea98fd7b6493faabb8fcc69f975d8
-#: ../../../src/common/doc/functions/create_vert_table.rst:264
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-# 7103284d91854b18939e44589085f3cf
-#: ../../../src/common/doc/functions/create_vert_table.rst:265
-msgid ""
-":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
-"on the geometry."
-msgstr ""
-
-# 4c67e74087fe4035a8b54bb0d58d8a84
-#: ../../../src/common/doc/functions/create_vert_table.rst:266
-msgid ""
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
-
-# a7eb449e6d594406ab3779c29d1937c8
-#: ../../../src/common/doc/functions/create_vert_table.rst:267
-msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po
deleted file mode 100644
index 1050678..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/is_column_in_table.po
+++ /dev/null
@@ -1,89 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-06 19:50+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 1451c59201944bfd9022c90ef89ebf8a
-#: ../../../src/common/doc/functions/is_column_in_table.rst:13
-msgid "pgr_isColumnInTable - Check if column exists"
-msgstr ""
-
-# cb570c2703fc45e9bba281cae42780d6
-#: ../../../src/common/doc/functions/is_column_in_table.rst:20
-msgid "Name"
-msgstr "名前"
-
-# b4cdca42128d4828961c3e7076774fc0
-#: ../../../src/common/doc/functions/is_column_in_table.rst:22
-msgid "``pgr_isColumnInTable`` — Check if a column exists in a table."
-msgstr ""
-
-# 33b135e2f8dd4f5e81aad53d1a016cfe
-#: ../../../src/common/doc/functions/is_column_in_table.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 96d06813601a419c9b44fe8298f74a51
-#: ../../../src/common/doc/functions/is_column_in_table.rst:28
-msgid "Returns ``true`` or ``false`` if column “col” exists in table “tab”."
-msgstr ""
-
-# 44f17585bbd843cb9fbcacb785ad3130
-#: ../../../src/common/doc/functions/is_column_in_table.rst:36
-msgid "Description"
-msgstr "説明"
-
-# b57ee4621bd04e6991a266235c5a592a
-#: ../../../src/common/doc/functions/is_column_in_table.rst:38
-msgid "``text`` table name with or without schema component"
-msgstr ""
-
-# ac6b45788cac4cc7a5dcf6e4c44bb9ad
-#: ../../../src/common/doc/functions/is_column_in_table.rst:39
-msgid "``text`` column name to be checked for"
-msgstr ""
-
-# 5f4ac9523c3b487884e6dd8e67b1e082
-#: ../../../src/common/doc/functions/is_column_in_table.rst:43
-msgid "History"
-msgstr "歴史"
-
-# 028851614bd7489991629d8c8f6f8bbf
-#: ../../../src/common/doc/functions/is_column_in_table.rst:44
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 3c3db2df87634ae4b3c8713633f9214f
-#: ../../../src/common/doc/functions/is_column_in_table.rst:48
-msgid "Examples"
-msgstr "例"
-
-# 61e31f4885e444eea60640117f0f8264
-#: ../../../src/common/doc/functions/is_column_in_table.rst:59
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 179da1f0bf5342b49e83327d1e277ca9
-#: ../../../src/common/doc/functions/is_column_in_table.rst:63
-msgid "See Also"
-msgstr "参照"
-
-# 7e1d2140f94d40db8ce6f48c9a3b119f
-#: ../../../src/common/doc/functions/is_column_in_table.rst:65
-msgid ":ref:`pgr_is_column_indexed`"
-msgstr ":ref:`pgr_is_column_indexed`"
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po
deleted file mode 100644
index 1a60b4f..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/is_column_indexed.po
+++ /dev/null
@@ -1,89 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-06 16:30+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# f85a66c48ca94cc9a5bba227e6479482
-#: ../../../src/common/doc/functions/is_column_indexed.rst:13
-msgid "pgr_isColumnIndexed - Check if column is indexed"
-msgstr ""
-
-# a4e361cfe30d494982b2755f507c2df4
-#: ../../../src/common/doc/functions/is_column_indexed.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 2616614bd27b4f3aac95e5ee66f8771c
-#: ../../../src/common/doc/functions/is_column_indexed.rst:22
-msgid "``pgr_isColumnIndexed`` — Check if a column in a table is indexed."
-msgstr ""
-
-# 4aff78895aaf431bb254a1725ab1bab6
-#: ../../../src/common/doc/functions/is_column_indexed.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 62d98585fdfb49d287f711a97ba6f261
-#: ../../../src/common/doc/functions/is_column_indexed.rst:28
-msgid ""
-"Returns ``true`` or ``false`` if column “col” in table “tab” is indexed."
-msgstr ""
-
-# 016a3d2a60a745c39afdaa4ba6d24b5f
-#: ../../../src/common/doc/functions/is_column_indexed.rst:36
-msgid "Description"
-msgstr "説明"
-
-# 5efc6b2a366544cdadac135ab40dee54
-#: ../../../src/common/doc/functions/is_column_indexed.rst:38
-msgid "``text`` table name with or without schema component"
-msgstr ""
-
-# 76548c59562d4c4188ea7a5bbd5b769a
-#: ../../../src/common/doc/functions/is_column_indexed.rst:39
-msgid "``text`` column name to be checked for"
-msgstr ""
-
-# 20bbf0766ada4f7b81807c2e917be118
-#: ../../../src/common/doc/functions/is_column_indexed.rst:43
-msgid "History"
-msgstr "歴史"
-
-# 3ca6785c8cb24235a6b581e63c32bd03
-#: ../../../src/common/doc/functions/is_column_indexed.rst:44
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 89feb49b01e94980935495257bf135a9
-#: ../../../src/common/doc/functions/is_column_indexed.rst:48
-msgid "Examples"
-msgstr "例"
-
-# c8b849f8431c42ef9ecdcde47c516f03
-#: ../../../src/common/doc/functions/is_column_indexed.rst:59
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 4d38c2d872d0425290c2371cbc5d27e8
-#: ../../../src/common/doc/functions/is_column_indexed.rst:63
-msgid "See Also"
-msgstr "参照"
-
-# ed5ed4b10dc74af48b9de1a8743ec37b
-#: ../../../src/common/doc/functions/is_column_indexed.rst:65
-msgid ":ref:`pgr_is_column_in_table`"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/node_network.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/node_network.po
deleted file mode 100644
index c7c5ffd..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/node_network.po
+++ /dev/null
@@ -1,416 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# e70efe892bc14a45b9e0a2483d5955c1
-#: ../../../src/common/doc/functions/node_network.rst:13
-msgid "pgr_nodeNetwork"
-msgstr ""
-
-# 928e918755da48d29b113ad9fcdac620
-#: ../../../src/common/doc/functions/node_network.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 4c656aa4f4bf48c39d41d16b429a0f0f
-#: ../../../src/common/doc/functions/node_network.rst:22
-msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
-msgstr ""
-
-# b5fd23c4e27446ce8ac33a3ee9bd1fe7
-#: ../../../src/common/doc/functions/node_network.rst:24
-msgid "Nicolas Ribot"
-msgstr ""
-
-# 16108dce80dd41e2a458f2f45f2864d0
-#: ../../../src/common/doc/functions/node_network.rst:25
-msgid "Nicolas Ribot, The source code is released under the MIT-X license."
-msgstr ""
-
-# 3977ae6b9cf044318ec203a8e5aa5692
-#: ../../../src/common/doc/functions/node_network.rst:29
-msgid "Synopsis"
-msgstr "概要"
-
-# 2f6a7ad6abe5481da1e313d912af14e9
-#: ../../../src/common/doc/functions/node_network.rst:31
-msgid ""
-"The function reads edges from a not \"noded\" network table and writes the "
-"\"noded\" edges into a new table."
-msgstr ""
-
-# 3461fdeb834f4294ae2b188234db4eff
-#: ../../../src/common/doc/functions/node_network.rst:40
-msgid "Description"
-msgstr "説明"
-
-# 422a0c6c90c04a46bec03a6510ec201f
-#: ../../../src/common/doc/functions/node_network.rst:42
-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 ""
-
-# 69294245f1c44993a75f749e3721222a
-#: ../../../src/common/doc/functions/node_network.rst:44
-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 ""
-
-# 2817b2a1050f4b5da0c9aac6f306ea5e
-#: ../../../src/common/doc/functions/node_network.rst:46
-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 ""
-
-# b6408b0103e84de6acf993a22a25e533
-#: ../../../src/common/doc/functions/node_network.rst:48
-msgid "Parameters"
-msgstr ""
-
-# 40ed2f0c80b64683aa3f8d42d20a77a2
-#: ../../../src/common/doc/functions/node_network.rst:50
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-# 86c247b372114883b5f6d0949e51b3c8
-#: ../../../src/common/doc/functions/node_network.rst:51
-msgid "``float8`` tolerance for coincident points (in projection unit)dd"
-msgstr ""
-
-# 946d6ed96b2b4f7fac8bcc7ba4d8e68b
-#: ../../../src/common/doc/functions/node_network.rst:52
-msgid ""
-"``text`` Primary key column name of the network table. Default value is "
-"``id``."
-msgstr ""
-
-# ce2e7f47f3bb4b299dda0387123f0409
-#: ../../../src/common/doc/functions/node_network.rst:53
-msgid ""
-"``text`` Geometry column name of the network table. Default value is "
-"``the_geom``."
-msgstr ""
-
-# 74d00078e6354e09a4592cf7e3f9dbe8
-#: ../../../src/common/doc/functions/node_network.rst:54
-msgid "``text`` Suffix for the new table's. Default value is ``noded``."
-msgstr ""
-
-# bc28085240354b228628c4449f877afe
-#: ../../../src/common/doc/functions/node_network.rst:56
-msgid "The output table will have for ``edge_table_noded``"
-msgstr ""
-
-# df15f6d14415411b85a167c31717fb4e
-#: ../../../src/common/doc/functions/node_network.rst:58
-msgid "``bigint`` Unique identifier for the table"
-msgstr ""
-
-# 4acc7cf0acea40ac852585983687ef11
-#: ../../../src/common/doc/functions/node_network.rst:59
-msgid "``bigint`` Identifier of the edge in original table"
-msgstr ""
-
-# 99bb3c953a7243e1b8232bf4a387c7d7
-#: ../../../src/common/doc/functions/node_network.rst:60
-msgid "``integer`` Segment number of the original edge"
-msgstr ""
-
-# 36a3bdb3e58840f78502c1f388619d52
-#: ../../../src/common/doc/functions/node_network.rst:61
-msgid ""
-"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
-"function"
-msgstr ""
-
-# 05092b2ea62744f1910db90fe30ab152
-#: ../../../src/common/doc/functions/node_network.rst:62
-msgid ""
-"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
-"function"
-msgstr ""
-
-# c2b0caed0dd643e1991dd4e7f0f08e4c
-#: ../../../src/common/doc/functions/node_network.rst:63
-msgid "``geometry`` Geometry column of the noded network"
-msgstr ""
-
-# a1f34fff1602404db7f2c2344f99cad1
-#: ../../../src/common/doc/functions/node_network.rst:66
-msgid "History"
-msgstr "歴史"
-
-# b92ecc8b6d9a4eaba9e0a30ce164fed0
-#: ../../../src/common/doc/functions/node_network.rst:67
-msgid "New in version 2.0.0"
-msgstr ""
-
-# cd2560788805450aa6ffb5ce84c8058e
-#: ../../../src/common/doc/functions/node_network.rst:71
-msgid "Example"
-msgstr ""
-
-# 7e9403e106bb4c0abdd7ed3d1b266079
-#: ../../../src/common/doc/functions/node_network.rst:73
-msgid "Let's create the topology for the data in :ref:`sampledata`"
-msgstr ""
-
-# 5c1a627f182d47efa30c1d4c830862ab
-#: ../../../src/common/doc/functions/node_network.rst:91
-msgid "Now we can analyze the network."
-msgstr ""
-
-# 3eb0c69215284a33ab1505fded4b5a1f
-#: ../../../src/common/doc/functions/node_network.rst:115
-msgid ""
-"The analysis tell us that the network has a gap and and an intersection. We "
-"try to fix the problem using:"
-msgstr ""
-
-# 8be31305870e491c92ad11d8f8d0a20a
-#: ../../../src/common/doc/functions/node_network.rst:137
-msgid ""
-"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
-"segmented"
-msgstr ""
-
-# 8a086446ed8d4b30bf07015ab46ea12d
-#: ../../../src/common/doc/functions/node_network.rst:167
-msgid "We can create the topology of the new network"
-msgstr ""
-
-# 8944601cf6e343c09dce0bf706960a8c
-#: ../../../src/common/doc/functions/node_network.rst:185
-msgid "Now let's analyze the new topology"
-msgstr ""
-
-# 8a596982abe141b4a1925e35e1db79a3
-#: ../../../src/common/doc/functions/node_network.rst:211
-msgid "Images"
-msgstr ""
-
-# 960ada27fdd34c3dbfb61f10e5feba5f
-#: ../../../src/common/doc/functions/node_network.rst:244
-msgid "Comparing the results"
-msgstr ""
-
-# 8bbf24ce7c7e42f5a20e2a8d89e04c36
-#: ../../../src/common/doc/functions/node_network.rst:246
-msgid "Comparing with the Analysis in the original edge_table, we see that."
-msgstr ""
-
-# a3503fcd45dd4095b55e814ab842c829
-#: ../../../src/common/doc/functions/node_network.rst:249
-msgid "Before"
-msgstr ""
-
-# dfb592f8bd4e4572bbda7700558b3e93
-#: ../../../src/common/doc/functions/node_network.rst:249
-msgid "After"
-msgstr ""
-
-# dde3349cc54e4b94afb37800f2a163f5
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "Table name"
-msgstr ""
-
-# f672bf7770e8488fbe5ea1fbd13d7ac9
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "edge_table"
-msgstr ""
-
-# fbe3a7f491d4488085062b1fb783b357
-#: ../../../src/common/doc/functions/node_network.rst:251
-msgid "edge_table_noded"
-msgstr ""
-
-# adaa5d5eca664ecb9d20315adfd329b4
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "Fields"
-msgstr ""
-
-# ebcf10a104ba4d7eaae546ec13365142
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "All original fields"
-msgstr ""
-
-# be45b275890a4aa8a6d624b6f87774d0
-#: ../../../src/common/doc/functions/node_network.rst:253
-msgid "Has only basic fields to do a topology analysis"
-msgstr ""
-
-# 92f3a885bad349d6b5f9ef2345cb905f
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Dead ends"
-msgstr ""
-
-# 40a53c9b632b40a6a81f9277c11765b1
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Edges with 1 dead end: 1,6,24"
-msgstr ""
-
-# 709cbda3addd4b32b9b267d9ceafdb4f
-#: ../../../src/common/doc/functions/node_network.rst:256
-msgid "Edges with 2 dead ends 17,18"
-msgstr ""
-
-# d0de891ebf004a148c2bcd4510d81064
-#: ../../../src/common/doc/functions/node_network.rst:258
-msgid ""
-"Edge 17's right node is a dead end because there is no other edge sharing "
-"that same node. (cnt=1)"
-msgstr ""
-
-# 57918afd2f0445cea564eba267fa8c37
-#: ../../../src/common/doc/functions/node_network.rst:255
-msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
-msgstr ""
-
-# ff6cb3034ea345c89df6d718108fd2bc
-#: ../../../src/common/doc/functions/node_network.rst:262
-msgid "Isolated segments"
-msgstr ""
-
-# b958862fe349475ca7c2b38bbb40663b
-#: ../../../src/common/doc/functions/node_network.rst:262
-msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
-msgstr ""
-
-# 8d0bda0399694c6d8677fa928bdab03c
-#: ../../../src/common/doc/functions/node_network.rst:263
-msgid "No Isolated segments"
-msgstr ""
-
-# ac2cf90e5b2a4e75bb94688d6e4ec553
-#: ../../../src/common/doc/functions/node_network.rst:263
-msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
-msgstr ""
-
-# 287c00afc68a4e869f912d7b2ddabefb
-#: ../../../src/common/doc/functions/node_network.rst:264
-msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
-msgstr ""
-
-# bab6a1bf5c10447caa298e9247f3bf2a
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid "Gaps"
-msgstr ""
-
-# c23ab3c2eff44ddf9ddb0bee4f90197a
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid ""
-"There is a gap between edge 17 and 14 because edge 14 is near to the right "
-"node of edge 17"
-msgstr ""
-
-# 89fabbc2722649c9adf098ea0f9dde1c
-#: ../../../src/common/doc/functions/node_network.rst:266
-msgid ""
-"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
-"tolerance value was taken in account"
-msgstr ""
-
-# c04f1c8028d846aeb593cd2389ee45da
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid "Intersections"
-msgstr ""
-
-# db3e94db58d0422bbfbdb83ba509d29e
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid "Edges 13 and 18 were intersecting"
-msgstr ""
-
-# 50736f49b59e4f7fa0c66f0e979d80bd
-#: ../../../src/common/doc/functions/node_network.rst:270
-msgid ""
-"Edges were segmented, So, now in the interection's point there is a node and"
-" the following edges share it: 13-1 13-2 18-1 18-2"
-msgstr ""
-
-# f39fa18acedb410fb827e37f226da00b
-#: ../../../src/common/doc/functions/node_network.rst:275
-msgid ""
-"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
-"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
-"with tho following steps:"
-msgstr ""
-
-# 40eb8df52b5649ddb2401cc0c9fe4e7c
-#: ../../../src/common/doc/functions/node_network.rst:277
-msgid ""
-"Add a column old_id into edge_table, this column is going to keep track the "
-"id of the original edge"
-msgstr ""
-
-# 91eb1db3098b4353be78c9aef064421e
-#: ../../../src/common/doc/functions/node_network.rst:278
-msgid ""
-"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
-msgstr ""
-
-# 2158163aaac748eca84fcd78a42e9b3a
-#: ../../../src/common/doc/functions/node_network.rst:291
-msgid "We recreate the topology:"
-msgstr ""
-
-# 03050935f9bb42a69dfe42e303e8f164
-#: ../../../src/common/doc/functions/node_network.rst:311
-msgid ""
-"To get the same analysis results as the topology of edge_table_noded, we do "
-"the following query:"
-msgstr ""
-
-# bcefb46820504921aa7a3260a988c26d
-#: ../../../src/common/doc/functions/node_network.rst:338
-msgid ""
-"To get the same analysis results as the original edge_table, we do the "
-"following query:"
-msgstr ""
-
-# 376c4a5e033d42b3ba4e3c3ec018f8e8
-#: ../../../src/common/doc/functions/node_network.rst:363
-msgid ""
-"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
-"is an under pass and there is also a street level juction, and the same "
-"happens with edges 17 and 13."
-msgstr ""
-
-# 26fbd57b79324bd08ef2c5ee3579831e
-#: ../../../src/common/doc/functions/node_network.rst:390
-msgid "See Also"
-msgstr "参照"
-
-# 9df40faa94c64db5b2256f265be6e4d4
-#: ../../../src/common/doc/functions/node_network.rst:392
-msgid ""
-":ref:`topology` for an overview of a topology for routing algorithms. "
-":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
-":ref:`pgr_create_topology` to create a topology based on the geometry. "
-":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
-"table."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/point_to_id.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/point_to_id.po
deleted file mode 100644
index 7ea557b..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/point_to_id.po
+++ /dev/null
@@ -1,104 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-06 19:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 81e0b58a4b464395b3661da85edfaa90
-#: ../../../src/common/doc/functions/point_to_id.rst:13
-msgid "pgr_pointToId - Inserts point into a vertices table"
-msgstr ""
-
-# 9bebf9f4ff2b43a39470ee284698fa33
-#: ../../../src/common/doc/functions/point_to_id.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 8fcf7e9e33b448b982f7111389a7e412
-#: ../../../src/common/doc/functions/point_to_id.rst:22
-msgid "``pgr_pointToId`` — Inserts a point into a temporary vertices table."
-msgstr ""
-
-# 1ebe04b75e4444e2970f12bf667f07fa
-#: ../../../src/common/doc/functions/point_to_id.rst:26
-msgid ""
-"This function should not be used directly. Use :ref:`pgr_createTopology "
-"<pgr_create_topology>` instead."
-msgstr ""
-
-# 8c3303cb3d73446795471f411d835691
-#: ../../../src/common/doc/functions/point_to_id.rst:30
-msgid "Synopsis"
-msgstr "概要"
-
-# e17d53fea1674ad692e9d65129c04e5d
-#: ../../../src/common/doc/functions/point_to_id.rst:32
-msgid ""
-"Inserts a point into a temporary vertices table, and returns an id of a new "
-"point or an existing point. Tolerance is the minimal distance between "
-"existing points and the new point to create a new point."
-msgstr ""
-
-# 4b067a809bbd4210baf154f274aab5f0
-#: ../../../src/common/doc/functions/point_to_id.rst:40
-msgid "Description"
-msgstr "説明"
-
-# de6b0b7b7ae44691a60a709a1245e12c
-#: ../../../src/common/doc/functions/point_to_id.rst:42
-msgid "``geometry`` of the existing point"
-msgstr ""
-
-# e05906cd2cd545eead6a6a277d441ea4
-#: ../../../src/common/doc/functions/point_to_id.rst:43
-msgid ""
-"``float8`` snapping tolerance of disconnected edges (in projection unit)"
-msgstr ""
-
-# 7eb52d95126d47efbf485a1397785c34
-#: ../../../src/common/doc/functions/point_to_id.rst:45
-msgid "Returns point id (``bigint``) of a new or existing point."
-msgstr ""
-
-# 78ed162b771d42c1bdadb75ea1806c17
-#: ../../../src/common/doc/functions/point_to_id.rst:49
-msgid "History"
-msgstr "歴史"
-
-# 932b962d76c14946b54db15e77b3c90d
-#: ../../../src/common/doc/functions/point_to_id.rst:50
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# c1b2ccd7df20427c88dcf1ebf4b06d82
-#: ../../../src/common/doc/functions/point_to_id.rst:54
-msgid "See Also"
-msgstr "参照"
-
-# 4dafa239ff7648c2952a2d3ee70671bf
-#: ../../../src/common/doc/functions/point_to_id.rst:56
-msgid ":ref:`pgr_create_topology`"
-msgstr ":ref:`pgr_create_topology`"
-
-# 8100a50d0b5f4b0cab8d62645becc674
-#: ../../../src/common/doc/functions/point_to_id.rst:57
-msgid ":ref:`topology`"
-msgstr ":ref:`topology`"
-
-# 86ad35d9d3ce44a696b6dc61c466e04e
-#: ../../../src/common/doc/functions/point_to_id.rst:58
-msgid ":ref:`pgr_node_network`"
-msgstr ":ref:`pgr_node_network`"
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/quote_ident.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/quote_ident.po
deleted file mode 100644
index bc4243c..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/quote_ident.po
+++ /dev/null
@@ -1,89 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-06 14:00+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 59a19788e4ba478cb0d046fc07c08179
-#: ../../../src/common/doc/functions/quote_ident.rst:13
-msgid "pgr_quote_ident - Quote table name with Schema Component"
-msgstr ""
-
-# 61a86f593d04476692b89157939b8a1e
-#: ../../../src/common/doc/functions/quote_ident.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 7ae4a51cc62143058b829f9317d4b282
-#: ../../../src/common/doc/functions/quote_ident.rst:22
-msgid ""
-"``pgr_quote_ident`` — Quote table name with or without schema component."
-msgstr ""
-
-# d09400822917498ab08038e0453f93a2
-#: ../../../src/common/doc/functions/quote_ident.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 02e534c6d94e4d7fa366eb30dfd82602
-#: ../../../src/common/doc/functions/quote_ident.rst:28
-msgid ""
-"Function to split a string on ``.`` characters and then quote the components"
-" as postgres identifiers and then join them back together with ``.`` "
-"characters. Multile ``.`` will get collapsed into a single ``.``, so "
-"``schema...table`` till get returned as ``schema.\"table\"`` and "
-"``Schema.table`` becomes ``\"Schema\".\"table\"``."
-msgstr ""
-
-# 70b63ad008b14b5cbd540f478c596e97
-#: ../../../src/common/doc/functions/quote_ident.rst:37
-msgid "Description"
-msgstr "説明"
-
-# 76375d16726e4e8a8c4e02b54bd4b33a
-#: ../../../src/common/doc/functions/quote_ident.rst:39
-msgid "``text`` table name with or without schema component"
-msgstr ""
-
-# d8548a7bfe3542b28f614894ba6f4b84
-#: ../../../src/common/doc/functions/quote_ident.rst:41
-msgid "Returns table name with or without schema as ``text``."
-msgstr ""
-
-# ebc95d6ee53c42f29aa6a18a134d4d20
-#: ../../../src/common/doc/functions/quote_ident.rst:45
-msgid "History"
-msgstr "歴史"
-
-# 6bea52def68e4f05ae56873b8d4f9d1c
-#: ../../../src/common/doc/functions/quote_ident.rst:46
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 21e9cb20b57e4b4681d4e04d5f083d2a
-#: ../../../src/common/doc/functions/quote_ident.rst:50
-msgid "Examples"
-msgstr "例"
-
-# 5e3a344a21eb45bfba3e880ae3981a30
-#: ../../../src/common/doc/functions/quote_ident.rst:77
-msgid "See Also"
-msgstr "参照"
-
-# b4ee52cbb2b74bb59b22b1802748f96d
-#: ../../../src/common/doc/functions/quote_ident.rst:79
-msgid "[TBD]"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/version.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/version.po
deleted file mode 100644
index 0edee7e..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/version.po
+++ /dev/null
@@ -1,113 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-06 14:00+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# dbab41817c8a46459e8f33cf684a7afb
-#: ../../../src/common/doc/functions/version.rst:13
-msgid "pgr_version - Get version information"
-msgstr ""
-
-# 19cd8fb76f754d898f75659f97628007
-#: ../../../src/common/doc/functions/version.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 5531935ef2384b709c4f1d81ddcdf15c
-#: ../../../src/common/doc/functions/version.rst:22
-msgid "``pgr_version`` — Query for pgRouting version information."
-msgstr ""
-
-# 52175fb13b944970989d3ef4a23a7b66
-#: ../../../src/common/doc/functions/version.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 14783f07374f4ccdaa53515b95c17943
-#: ../../../src/common/doc/functions/version.rst:28
-msgid "Returns a table with pgRouting version information."
-msgstr ""
-
-# 6d5995ab278d476d80f54ab15b8af686
-#: ../../../src/common/doc/functions/version.rst:36
-msgid "Description"
-msgstr "説明"
-
-# b4baa0103a55431abaa586f16230af8c
-#: ../../../src/common/doc/functions/version.rst:38
-msgid "Returns a table with:"
-msgstr ""
-
-# 7d8a75cf72b840b39e0eea6140a5839d
-#: ../../../src/common/doc/functions/version.rst:40
-msgid "``varchar`` pgRouting version"
-msgstr ""
-
-# 2af5168bce0a4b03bf2b097d3099c850
-#: ../../../src/common/doc/functions/version.rst:41
-msgid "``varchar`` Git tag of pgRouting build"
-msgstr ""
-
-# b4444b51e41549b399751bcba194a8a8
-#: ../../../src/common/doc/functions/version.rst:42
-msgid "``varchar`` Git hash of pgRouting build"
-msgstr ""
-
-# 6737b5df55e94bb185f64d0de3389f3e
-#: ../../../src/common/doc/functions/version.rst:43
-msgid "``varchar`` Git branch of pgRouting build"
-msgstr ""
-
-# e5b735559b2949b09899e982d6f2ecf3
-#: ../../../src/common/doc/functions/version.rst:44
-msgid "``varchar`` Boost version"
-msgstr ""
-
-# 9042ea468aba4c4490b7124bbf14aacb
-#: ../../../src/common/doc/functions/version.rst:48
-msgid "History"
-msgstr "歴史"
-
-# 3829660b5485491083028df2cb267d03
-#: ../../../src/common/doc/functions/version.rst:49
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 8638cdf8594940cbad096c9ac3d261ad
-#: ../../../src/common/doc/functions/version.rst:53
-msgid "Examples"
-msgstr "例"
-
-# d80877f2810741ada5737305d484de11
-#: ../../../src/common/doc/functions/version.rst:55
-msgid "Query for full version string"
-msgstr ""
-
-# 2ff90cee91e644fab554650cc24bd3bf
-#: ../../../src/common/doc/functions/version.rst:67
-msgid "Query for ``version`` and ``boost`` attribute"
-msgstr ""
-
-# 6c3a1c332dc54ea2a01d81c5f5f9dcc1
-#: ../../../src/common/doc/functions/version.rst:80
-msgid "See Also"
-msgstr "参照"
-
-# 1eeb4f68d3c342dbbadade6c52b87baf
-#: ../../../src/common/doc/functions/version.rst:82
-msgid ":ref:`pgr_versionless`"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/versionless.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/versionless.po
deleted file mode 100644
index 2023e89..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/functions/versionless.po
+++ /dev/null
@@ -1,86 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-06 14:00+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# f15b37fde8e64b508893630a0291dc6a
-#: ../../../src/common/doc/functions/versionless.rst:13
-msgid "pgr_versionless - Compare version numbers"
-msgstr ""
-
-# cd0dcc3f3489468ab55c89598715d895
-#: ../../../src/common/doc/functions/versionless.rst:20
-msgid "Name"
-msgstr "名前"
-
-# e2f0eb00eca142c8bc7d71b317604c7e
-#: ../../../src/common/doc/functions/versionless.rst:22
-msgid "``pgr_version`` — Compare two version numbers and return if smaller."
-msgstr ""
-
-# d85cf15bf8894e158945855624a422f5
-#: ../../../src/common/doc/functions/versionless.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# ed2cb6f5c03645b3ab2a296d062c1eb9
-#: ../../../src/common/doc/functions/versionless.rst:28
-msgid ""
-"Returns ``true`` if the first version number is smaller than the second "
-"version number. Otherwise returns ``false``."
-msgstr ""
-
-# a11f675500e140ae997cdb4f167d2da4
-#: ../../../src/common/doc/functions/versionless.rst:36
-msgid "Description"
-msgstr "説明"
-
-# 7d1ac8fa4fce4362965d8587a3cd7099
-#: ../../../src/common/doc/functions/versionless.rst:38
-msgid "``text`` first version number"
-msgstr ""
-
-# 1d8a5a36a0fa4da19892193a11578a08
-#: ../../../src/common/doc/functions/versionless.rst:39
-msgid "``text`` second version number"
-msgstr ""
-
-# a32770a22cf849cb96bd78825f332825
-#: ../../../src/common/doc/functions/versionless.rst:43
-msgid "History"
-msgstr "歴史"
-
-# 14ef379da17a48389cb627817c173253
-#: ../../../src/common/doc/functions/versionless.rst:44
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 7a3d2290bca342b79b4105e7aee330b0
-#: ../../../src/common/doc/functions/versionless.rst:48
-msgid "Examples"
-msgstr "例"
-
-# ca2f13a6ce4444258be7f46d40c8bd2a
-#: ../../../src/common/doc/functions/versionless.rst:61
-msgid "See Also"
-msgstr "参照"
-
-# a621baf581ff4ba8b4b03d3481d5a660
-#: ../../../src/common/doc/functions/versionless.rst:63
-msgid ":ref:`pgr_version`"
-msgstr ":ref:`pgr_version`"
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/index.po
deleted file mode 100644
index 1763a68..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/index.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:38+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# ce4dbf6fe47b4c15b713488c800a92bb
-#: ../../../src/common/doc/index.rst:13
-msgid "Common Functions"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/legacy.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/legacy.po
deleted file mode 100644
index 2f50653..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/legacy.po
+++ /dev/null
@@ -1,66 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:38+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# af2e041923d44d0d9563d0085aea25c8
-#: ../../../src/common/doc/legacy.rst:13
-msgid "Legacy Functions"
-msgstr ""
-
-# d1e607e21eea4ec49b92a5b901eff665
-#: ../../../src/common/doc/legacy.rst:15
-msgid ""
-"pgRouting 2.0 release has total restructured the function naming and "
-"obsoleted many of the functions that were available in the 1.x releases. "
-"While we realize that this may inconvenience our existing users, we felt "
-"this was needed for the long term viability of the project to be more "
-"response to our users and to be able to add new functionality and test "
-"existing functionality."
-msgstr ""
-
-# 0fe94cadd0b6451fbc30559fa5f70275
-#: ../../../src/common/doc/legacy.rst:17
-msgid ""
-"We have made a minimal effort to save most of these function and distribute "
-"with the release in a file ``pgrouting_legacy.sql`` that is not part of the "
-"pgrouting extension and is not supported. If you can use these functions "
-"that is great. We have not tested any of these functions so if you find "
-"issues and want to post a pull request or a patch to help other users that "
-"is fine, but it is likely this file will be removed in a future release and "
-"we strongly recommend that you convert your existing code to use the new "
-"documented and supported functions."
-msgstr ""
-
-# 8eb3da3e4cb1441d8743706f7397c8ee
-#: ../../../src/common/doc/legacy.rst:19
-msgid ""
-"The follow is a list of TYPEs, CASTs and FUNCTION included in the "
-"``pgrouting_legacy.sql`` file. The list is provide as a convenience but "
-"these functions are deprecated, not supported, and probably will need some "
-"changes to get them to work."
-msgstr ""
-
-# 96302a33dc8a461e9c82b33165d2f03f
-#: ../../../src/common/doc/legacy.rst:23
-msgid "TYPEs & CASTs"
-msgstr ""
-
-# 0dca26b88cc44808b873318da81f0095
-#: ../../../src/common/doc/legacy.rst:34
-msgid "FUNCTIONs"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/types.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/types.po
deleted file mode 100644
index e4967f6..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/types.po
+++ /dev/null
@@ -1,30 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-02 02:38+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# a647839f49f94a9997479367dc35d13f
-#: ../../../src/common/doc/types.rst:13
-msgid "Custom Types"
-msgstr ""
-
-# f00f6611879f4afd961586e955284a41
-#: ../../../src/common/doc/types.rst:15
-msgid ""
-"The following are commonly used data types for some of the pgRouting "
-"functions."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/types/cost_result.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/types/cost_result.po
deleted file mode 100644
index 1a4f349..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/types/cost_result.po
+++ /dev/null
@@ -1,115 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 575fa6fd8a1842c68aba9825683b178d
-#: ../../../src/common/doc/types/cost_result.rst:13
-msgid "pgr_costResult[]"
-msgstr ""
-
-# 3b55f2f3cdc24995bd590e235062c389
-# 1d4bd884218342d6a7ca7ae79998c3a0
-#: ../../../src/common/doc/types/cost_result.rst:20
-#: ../../../src/common/doc/types/cost_result.rst:54
-msgid "Name"
-msgstr "名前"
-
-# 691ba9180a9f4854922720a03e1db3e0
-#: ../../../src/common/doc/types/cost_result.rst:22
-msgid ""
-"``pgr_costResult[]`` — A set of records to describe a path result with cost "
-"attribute."
-msgstr ""
-
-# 4bc0f98e83fc482daf119d02f3ab4386
-# b80ec90ac4244e82a1aa8f7e58b78921
-#: ../../../src/common/doc/types/cost_result.rst:26
-#: ../../../src/common/doc/types/cost_result.rst:60
-msgid "Description"
-msgstr "説明"
-
-# 023a9b6d62474dbdbb4d587b192099c4
-# 8e1c61381d6f47909ea0830da8a4740c
-#: ../../../src/common/doc/types/cost_result.rst:38
-#: ../../../src/common/doc/types/cost_result.rst:73
-msgid "sequential ID indicating the path order"
-msgstr ""
-
-# 98a23fe6530d43418558cdd8be417a26
-# 8c3701ae807d4738b8bbe72260f4c476
-#: ../../../src/common/doc/types/cost_result.rst:39
-#: ../../../src/common/doc/types/cost_result.rst:75
-msgid "generic name, to be specified by the function, typically the node id"
-msgstr ""
-
-# f4abd64c5dea4cda97490766f42a395c
-# 1be5c24bdc684ed1a182e9e2b0ab2343
-#: ../../../src/common/doc/types/cost_result.rst:40
-#: ../../../src/common/doc/types/cost_result.rst:76
-msgid "generic name, to be specified by the function, typically the edge id"
-msgstr ""
-
-# 0b4a362ff97d481cafd2c0328ad1f715
-# 8e11a66126844a1682d4e4c84166794d
-#: ../../../src/common/doc/types/cost_result.rst:41
-#: ../../../src/common/doc/types/cost_result.rst:77
-msgid "cost attribute"
-msgstr ""
-
-# 7e74e200db1b40e1a5231037b2e9b993
-#: ../../../src/common/doc/types/cost_result.rst:47
-msgid "pgr_costResult3[] - Multiple Path Results with Cost"
-msgstr ""
-
-# 307f0248b6c54a71bfc205bb2270b5ce
-#: ../../../src/common/doc/types/cost_result.rst:56
-msgid ""
-"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
-" attribute."
-msgstr ""
-
-# 13465c99a9fb49ebab1d1852e6c61aab
-#: ../../../src/common/doc/types/cost_result.rst:74
-msgid "generic name, to be specified by the function, typically the path id"
-msgstr ""
-
-# ac46c731c85d4d358a763bc1268ef510
-#: ../../../src/common/doc/types/cost_result.rst:81
-msgid "History"
-msgstr "歴史"
-
-# 6bc9329d908f474bbcd380272dae671d
-#: ../../../src/common/doc/types/cost_result.rst:82
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 7e5f0c1b76c349ce940c19b2312cc2ec
-#: ../../../src/common/doc/types/cost_result.rst:83
-msgid "Replaces ``path_result``"
-msgstr ""
-
-# 28df9e1fa19b49f9bb57710715c52fcb
-#: ../../../src/common/doc/types/cost_result.rst:87
-msgid "See Also"
-msgstr "参照"
-
-# 21432e8842c1490ba3a7825f4b4e57bb
-#: ../../../src/common/doc/types/cost_result.rst:89
-msgid ":ref:`introduction`"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/types/geom_result.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/types/geom_result.po
deleted file mode 100644
index 2229e77..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/types/geom_result.po
+++ /dev/null
@@ -1,83 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:13+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# baeae55a13de4766b42a9f43c6f8caaf
-#: ../../../src/common/doc/types/geom_result.rst:13
-msgid "pgr_geomResult[]"
-msgstr ""
-
-# 4fc9eadff47c4a24baa096c8c667c469
-#: ../../../src/common/doc/types/geom_result.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 03beb686e4ec49e08cd6f1f0f5e03339
-#: ../../../src/common/doc/types/geom_result.rst:22
-msgid ""
-"``pgr_geomResult[]`` — A set of records to describe a path result with "
-"geometry attribute."
-msgstr ""
-
-# fd9c91caacdf4a2fb1c186c45e1d5525
-#: ../../../src/common/doc/types/geom_result.rst:26
-msgid "Description"
-msgstr "説明"
-
-# c00f6b668c744c7d822d2d2155e76b7a
-#: ../../../src/common/doc/types/geom_result.rst:38
-msgid "sequential ID indicating the path order"
-msgstr ""
-
-# 5782feff61f84fd4b3130a80b1abd7a9
-# 69c0e9623b4d41669a2601517d1563d2
-#: ../../../src/common/doc/types/geom_result.rst:39
-#: ../../../src/common/doc/types/geom_result.rst:40
-msgid "generic name, to be specified by the function"
-msgstr ""
-
-# c837b15d4460475996b2f7bac8b14076
-#: ../../../src/common/doc/types/geom_result.rst:41
-msgid "geometry attribute"
-msgstr ""
-
-# cf5503504b26427b800efddbc1098b64
-#: ../../../src/common/doc/types/geom_result.rst:45
-msgid "History"
-msgstr "歴史"
-
-# 4e474c2cf69748c680853e0505ce4773
-#: ../../../src/common/doc/types/geom_result.rst:46
-msgid "New in version 2.0.0"
-msgstr ""
-
-# f4d42016a50f43438838421dfb361835
-#: ../../../src/common/doc/types/geom_result.rst:47
-msgid "Replaces ``geoms``"
-msgstr ""
-
-# 0075486d62f84298b41797b5789d377a
-#: ../../../src/common/doc/types/geom_result.rst:51
-msgid "See Also"
-msgstr "参照"
-
-# 5a190ec8601a4a919a058395614d7db5
-#: ../../../src/common/doc/types/geom_result.rst:53
-msgid ":ref:`introduction`"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/end_point.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/end_point.po
deleted file mode 100644
index 62a1b0f..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/end_point.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 608ee0c4d0644bdba6e3dc233e2143a7
-#: ../../../src/common/doc/utilities/end_point.rst:13
-msgid "pgr_endPoint"
-msgstr ""
-
-# 8518d0c13dcc4cb9b4a6eb5bd83e8d6e
-#: ../../../src/common/doc/utilities/end_point.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 3660b4422cfa4aaea41cf4b4e91164ee
-#: ../../../src/common/doc/utilities/end_point.rst:22
-msgid ""
-"``pgr_endPoint`` — Returns an end point of a (multi)linestring geometry."
-msgstr ""
-
-# 549e2d553af74e0bba5a2833eafa7983
-#: ../../../src/common/doc/utilities/end_point.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-# d2cdf35b795f4fcfbfc9c84a2c36387b
-#: ../../../src/common/doc/utilities/end_point.rst:28
-msgid "Synopsis"
-msgstr "概要"
-
-# 180a778d767b496986ed060d48f0de04
-# 14f173f6f91f488b940887c452049824
-#: ../../../src/common/doc/utilities/end_point.rst:30
-#: ../../../src/common/doc/utilities/end_point.rst:44
-msgid ""
-"Returns the geometry of the end point of the first LINESTRING of ``geom``."
-msgstr ""
-
-# c8cfaed54e00467bba188637f3d25e04
-#: ../../../src/common/doc/utilities/end_point.rst:38
-msgid "Description"
-msgstr "説明"
-
-# b7a5d14354644a79aaa532e44543b0f1
-#: ../../../src/common/doc/utilities/end_point.rst:41
-msgid "Parameters"
-msgstr ""
-
-# 01b0d917d9534f74885248e0be35ca6d
-#: ../../../src/common/doc/utilities/end_point.rst:42
-msgid "``geometry`` Geometry of a MULTILINESTRING or LINESTRING."
-msgstr ""
-
-# a1951e42b2164de2b73d7ecde1bc5252
-#: ../../../src/common/doc/utilities/end_point.rst:49
-msgid "History"
-msgstr "履歴"
-
-# fd2421f2ca2945c4ad59395a0fa9cb90
-#: ../../../src/common/doc/utilities/end_point.rst:50
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 031cd30124a9491e80778dce1c6d77ab
-#: ../../../src/common/doc/utilities/end_point.rst:55
-msgid "See Also"
-msgstr "参照"
-
-# f17f7b08a35d44098381d1c280756f49
-#: ../../../src/common/doc/utilities/end_point.rst:57
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 68b294268f37462fb09eb605267d0686
-#: ../../../src/common/doc/utilities/end_point.rst:58
-msgid ":ref:`pgr_start_point` to get the start point of a (multi)linestring."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/get_column_name.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/get_column_name.po
deleted file mode 100644
index 093e90c..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/get_column_name.po
+++ /dev/null
@@ -1,140 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# f62e871185dd40c2a9e8b7cec3ea97b9
-#: ../../../src/common/doc/utilities/get_column_name.rst:13
-msgid "pgr_getColumnName"
-msgstr ""
-
-# 0d4e05a54bf944d2a712bcee9d7897c4
-#: ../../../src/common/doc/utilities/get_column_name.rst:20
-msgid "Name"
-msgstr "名前"
-
-# c1e5f5dde2804946bee1804968cb4efc
-#: ../../../src/common/doc/utilities/get_column_name.rst:22
-msgid ""
-"``pgr_getColumnName`` — Retrieves the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ""
-
-# 89a0f81382ca4dd4807320cd56be21bb
-#: ../../../src/common/doc/utilities/get_column_name.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# a6025211521149deb893b8e059385c6b
-#: ../../../src/common/doc/utilities/get_column_name.rst:27
-msgid "Synopsis"
-msgstr "概要"
-
-# e6dc3534289949caa3eebca95dbe364e
-#: ../../../src/common/doc/utilities/get_column_name.rst:29
-msgid "Returns a ``text`` contining the registered name of the column."
-msgstr ""
-
-# ef6704e3345e4be4a51fd144fbfc5d82
-#: ../../../src/common/doc/utilities/get_column_name.rst:37
-msgid "Description"
-msgstr "説明"
-
-# de7acd82e1244d8ba20da3bae0d95f22
-#: ../../../src/common/doc/utilities/get_column_name.rst:39
-msgid "Parameters"
-msgstr ""
-
-# 0b9f663d5b0e4f18a4bda0b996e55470
-#: ../../../src/common/doc/utilities/get_column_name.rst:41
-msgid "``text`` table name with or without schema component."
-msgstr ""
-
-# 34e350e22e5a495aa831ca55d080899a
-#: ../../../src/common/doc/utilities/get_column_name.rst:42
-msgid "``text`` column name to be retrived."
-msgstr ""
-
-# e495d55a75424870ba29867eb248cf4d
-#: ../../../src/common/doc/utilities/get_column_name.rst:44
-msgid "Returns"
-msgstr ""
-
-# c1394725601143b081216fe27794fbe6
-#: ../../../src/common/doc/utilities/get_column_name.rst:46
-msgid "``text`` containing the registered name of the column."
-msgstr ""
-
-# ec0c3eb922f44a818f1724026f43c7da
-#: ../../../src/common/doc/utilities/get_column_name.rst:47
-msgid "``NULL`` when :"
-msgstr ""
-
-# d3cb598bdcdf4349837225c6e9efa756
-#: ../../../src/common/doc/utilities/get_column_name.rst:49
-msgid "The table “tab” is not found or"
-msgstr ""
-
-# 6d27bb1e405343a893db971fe1cee8b7
-#: ../../../src/common/doc/utilities/get_column_name.rst:50
-msgid ""
-"Column “col” is not found in table “tab” in the postgres administration "
-"tables."
-msgstr ""
-
-# f56b94dfc7574beba7ee2b42199e9c27
-#: ../../../src/common/doc/utilities/get_column_name.rst:53
-msgid "History"
-msgstr "履歴"
-
-# 57eede78e2024b059d7e09968747a720
-#: ../../../src/common/doc/utilities/get_column_name.rst:54
-msgid "New in version 2.0.0"
-msgstr ""
-
-# efbc409d37be4e30a8edf913a4d89664
-#: ../../../src/common/doc/utilities/get_column_name.rst:58
-msgid "Examples"
-msgstr "例"
-
-# 741d466c28fb47feb64d7ef7593275e7
-#: ../../../src/common/doc/utilities/get_column_name.rst:76
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# acb3053630ab458d93853aa31aad9ade
-#: ../../../src/common/doc/utilities/get_column_name.rst:80
-msgid "See Also"
-msgstr "参照"
-
-# e54ecee9b6744650b79cb07b0c0274dd
-#: ../../../src/common/doc/utilities/get_column_name.rst:82
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 9143b02cdd264a818a9edda19a0e7ce7
-#: ../../../src/common/doc/utilities/get_column_name.rst:83
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column."
-msgstr ""
-
-# 11630fb324eb4a80bdfffb972707478d
-#: ../../../src/common/doc/utilities/get_column_name.rst:84
-msgid ""
-":ref:`pgr_get_table_name` to retrieve the name of the table as is stored in "
-"the postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/get_table_name.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/get_table_name.po
deleted file mode 100644
index 57d7f1f..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/get_table_name.po
+++ /dev/null
@@ -1,151 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 95f0c2d0bb88448c8b72400e83c9f6f4
-#: ../../../src/common/doc/utilities/get_table_name.rst:13
-msgid "pgr_getTableName"
-msgstr ""
-
-# 68a49ae29d0e4036bda025f169e4f3f7
-#: ../../../src/common/doc/utilities/get_table_name.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 8f9480f595c9426f945620d8b5977b86
-#: ../../../src/common/doc/utilities/get_table_name.rst:22
-msgid ""
-"``pgr_getTableName`` — Retrieves the name of the column as is stored in the "
-"postgres administration tables."
-msgstr ""
-
-# c06c3bd3649a4e27af6f710e189ea071
-#: ../../../src/common/doc/utilities/get_table_name.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# 3285b01b587a4aac94ab9ee03a474ef7
-#: ../../../src/common/doc/utilities/get_table_name.rst:27
-msgid "Synopsis"
-msgstr "概要"
-
-# ecd7065df5e047ef8415f13acf653201
-#: ../../../src/common/doc/utilities/get_table_name.rst:29
-msgid ""
-"Returns a record containing the registered names of the table and of the "
-"schema it belongs to."
-msgstr ""
-
-# 9912cc30113340efa3e5e3ac408d3a3c
-#: ../../../src/common/doc/utilities/get_table_name.rst:37
-msgid "Description"
-msgstr "説明"
-
-# 787a57d13f8a48a289b545e5c5fc50d5
-#: ../../../src/common/doc/utilities/get_table_name.rst:39
-msgid "Parameters"
-msgstr ""
-
-# 3c523e72ddd74a10b3defc135e0a1fa1
-#: ../../../src/common/doc/utilities/get_table_name.rst:41
-msgid "``text`` table name with or without schema component."
-msgstr ""
-
-# bc51a86638e44b1b8d435a7fcec971e1
-#: ../../../src/common/doc/utilities/get_table_name.rst:43
-msgid "Returns"
-msgstr ""
-
-# a3da192f153341e484e7a1c973e77570
-#: ../../../src/common/doc/utilities/get_table_name.rst:47
-msgid "``text`` containing the registered name of the schema of table \"tab\"."
-msgstr ""
-
-# 77471087a83049e4924411216422cd8f
-#: ../../../src/common/doc/utilities/get_table_name.rst:49
-msgid "when the schema was not provided in \"tab\" the current schema is used."
-msgstr ""
-
-# f253b42e28a3413abcbeebd5a25fbb53
-# a25f490ebce344728e53d37057ded897
-#: ../../../src/common/doc/utilities/get_table_name.rst:51
-#: ../../../src/common/doc/utilities/get_table_name.rst:58
-msgid "``NULL`` when :"
-msgstr ""
-
-# ab062cff517a43b6b5a40e1090073265
-# 49a4ab8abced47adaf11ea7b321f06b9
-#: ../../../src/common/doc/utilities/get_table_name.rst:53
-#: ../../../src/common/doc/utilities/get_table_name.rst:60
-msgid "The schema is not found in the postgres administration tables."
-msgstr ""
-
-# 19d2a93e6d45419d89974c286d1347f3
-#: ../../../src/common/doc/utilities/get_table_name.rst:57
-msgid "``text`` containing the registered name of the table \"tab\"."
-msgstr ""
-
-# 7c7d80132bbc4693a79fbb1bb32a804d
-#: ../../../src/common/doc/utilities/get_table_name.rst:61
-msgid ""
-"The table \"tab\" is not registered under the schema ``sname`` in the "
-"postgres administration tables"
-msgstr ""
-
-# fe048e6d68984dfb9e8d91f72f99f65a
-#: ../../../src/common/doc/utilities/get_table_name.rst:65
-msgid "History"
-msgstr "履歴"
-
-# 0ac3887a0f0642ca8bf6c6fa12f497bb
-#: ../../../src/common/doc/utilities/get_table_name.rst:66
-msgid "New in version 2.0.0"
-msgstr ""
-
-# fbd75b0146ff4f9595156794c4ebd6fd
-#: ../../../src/common/doc/utilities/get_table_name.rst:70
-msgid "Examples"
-msgstr "例"
-
-# 3792394a3a344c4493db40c2d04b5e2d
-#: ../../../src/common/doc/utilities/get_table_name.rst:95
-msgid "The examples use the :ref:`sampledata` network."
-msgstr ""
-
-# 10229dc5fd6545bdb875c9885f090618
-#: ../../../src/common/doc/utilities/get_table_name.rst:99
-msgid "See Also"
-msgstr "参照"
-
-# c24e1b3593b44343b2e4c86e06b4cbb2
-#: ../../../src/common/doc/utilities/get_table_name.rst:101
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 830f93a843b145ebb35db5cf5de99e00
-#: ../../../src/common/doc/utilities/get_table_name.rst:102
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column."
-msgstr ""
-
-# e731438ed94a48a0b26ea5223b564393
-#: ../../../src/common/doc/utilities/get_table_name.rst:103
-msgid ""
-":ref:`pgr_get_table_name` to retrieve the name of the table as is stored in "
-"the postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po
deleted file mode 100644
index df27e81..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/is_column_in_table.po
+++ /dev/null
@@ -1,137 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# f6500f30614b461f90b682890f3c3192
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:13
-msgid "pgr_isColumnInTable"
-msgstr ""
-
-# 7a4ec9b1b3514801a079916c0000371b
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 90dd01a206e24dbf9f73f90924c0615b
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:22
-msgid "``pgr_isColumnInTable`` — Check if a column is in the table."
-msgstr ""
-
-# 0d927909521c4f638c543baff8ebd318
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# b52fa51d192444e0a61674ede982a3e5
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:27
-msgid "Synopsis"
-msgstr "概要"
-
-# ea409e6a176b489aa7f326229d178d13
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:29
-msgid "Returns ``true`` when the column “col” is in table “tab”."
-msgstr ""
-
-# f5b2b429515a474892b7bddaebd7fa87
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:37
-msgid "Description"
-msgstr "説明"
-
-# a513395f631244f18df21c3b85ea7820
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:39
-msgid "``text`` Table name with or without schema component."
-msgstr ""
-
-# df577648959b4e0daab9d343543d3501
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:40
-msgid "``text`` Column name to be checked for."
-msgstr ""
-
-# faa09fc52bc54a0f9fe811ff099aa562
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:42
-msgid "Returns:"
-msgstr ""
-
-# 67ed5e9b40764fa1be45f8936680f526
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:44
-msgid "``true`` when the column “col” is in table “tab”."
-msgstr ""
-
-# fc38c243b9154c03833b5c9acd63804e
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:45
-msgid "``false`` when:"
-msgstr ""
-
-# fb6952dd480644c78db65cfbc109f967
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:47
-msgid "The table \"tab\" is not found or"
-msgstr ""
-
-# e701055cfb574ccd800767d4d4555d02
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:48
-msgid "Column “col” is not found in table “tab”"
-msgstr ""
-
-# be793f469b524522a2331a60fb6d7bac
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:51
-msgid "History"
-msgstr "履歴"
-
-# 03a9d21bed654a438312a5a6d45fcf17
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:52
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 1691f75cb0674d2d83b0bebe24105a6d
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:56
-msgid "Examples"
-msgstr "例"
-
-# c8d317a25f554ec6b9af54b1f7ae6c26
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:76
-msgid "The example use the :ref:`sampledata` network."
-msgstr ""
-
-# 24c87607bf1b4b23bb01e403b16e856f
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:80
-msgid "See Also"
-msgstr "参照"
-
-# b3efbf8b34fd415bbfc31810cc19b9dc
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:82
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 53d890d3132e4c7d94e0675093e6c146
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:83
-msgid ":ref:`pgr_is_column_indexed` to check if the column is indexed."
-msgstr ""
-
-# 5324fa01310a4c509d7ce91c088865e9
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:84
-msgid ""
-":ref:`pgr_get_column_name` to get the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ""
-
-# d97c057248844396aaa96cacbfcbc034
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:85
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po
deleted file mode 100644
index 48271dc..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/is_column_indexed.po
+++ /dev/null
@@ -1,144 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# d13f67c428de40999845a53a259a0896
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:13
-msgid "pgr_isColumnIndexed"
-msgstr ""
-
-# 8c9da63e8a0e4da4aa092b82eced03c0
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:20
-msgid "Name"
-msgstr "名前"
-
-# cdfe958887b74d69a5d69a8c3b76f35d
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:22
-msgid "``pgr_isColumnIndexed`` — Check if a column in a table is indexed."
-msgstr ""
-
-# 16efc5cad4b0458aa30f27dcc834fb0b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# 1611a88987e54ab8a15606f82d4c6098
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:27
-msgid "Synopsis"
-msgstr "概要"
-
-# 004725222faa47fd971e321be44816e6
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:29
-msgid "Returns ``true`` when the column “col” in table “tab” is indexed."
-msgstr ""
-
-# 3389fb7dd377428cbf442296f0032a6a
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:37
-msgid "Description"
-msgstr "説明"
-
-# cfb294e6535c4b0d91975ec3cb1c8985
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:39
-msgid "``text`` Table name with or without schema component."
-msgstr ""
-
-# 4cb8e78e50fb4ecbb15f141bb496040d
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:40
-msgid "``text`` Column name to be checked for."
-msgstr ""
-
-# a0f63aba19d0494b9cdcc5c7a61aebdb
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:42
-msgid "Returns:"
-msgstr ""
-
-# 66eed092853a47f9a7f69aa1fedbc666
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:44
-msgid "``true`` when the column “col” in table “tab” is indexed."
-msgstr ""
-
-# dbb567f94e994beaac90ea65cc8a324e
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:45
-msgid "``false`` when:"
-msgstr ""
-
-# f45a928140f24c299053e944f5550b7e
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:47
-msgid "The table \"tab\" is not found or"
-msgstr ""
-
-# c949dec2746e48459f93287f24a1334a
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:48
-msgid "Column “col” is not found in table “tab” or"
-msgstr ""
-
-# b2fd725d67df46b98d8ca3eddde9d1b5
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:49
-msgid "Column \"col\" in table \"tab\" is not indexed"
-msgstr ""
-
-# fe7b50380e1246599dd0b8abbac9a394
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:52
-msgid "History"
-msgstr "履歴"
-
-# 2949ff82708f44db903c9e175d8fd484
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:53
-msgid "New in version 2.0.0"
-msgstr ""
-
-# c19a7c36df38472bb330eafac37c34d3
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:57
-msgid "Examples"
-msgstr "例"
-
-# 9484e0bc1f1942da88f6261afd689f40
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:77
-msgid "The example use the :ref:`sampledata` network."
-msgstr ""
-
-# ba4b525f9ced43898aab4410c804208b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:81
-msgid "See Also"
-msgstr "参照"
-
-# 76c91def69da43539042f05a15240e67
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:83
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 10267ea719b141b7a9e7712543121d34
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:84
-msgid ""
-":ref:`pgr_is_column_in_table` to check only for the existance of the column "
-"in the table."
-msgstr ""
-
-# 4e5e6df51cf149cd9e79ef3459273a4b
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:85
-msgid ""
-":ref:`pgr_get_column_name` to get the name of the column as is stored in the"
-" postgres administration tables."
-msgstr ""
-
-# 2cda9c32c4ec4117914b3e51f125c1df
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:86
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/point_to_id.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/point_to_id.po
deleted file mode 100644
index fb995f0..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/point_to_id.po
+++ /dev/null
@@ -1,144 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 94641dca24af4c0dba2fbeed97300d22
-#: ../../../src/common/doc/utilities/point_to_id.rst:13
-msgid "pgr_pointToId"
-msgstr ""
-
-# 56e635560a6d4492ae86100badf0e086
-#: ../../../src/common/doc/utilities/point_to_id.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 81cc9d306cd54f46b4d517216a806eb7
-#: ../../../src/common/doc/utilities/point_to_id.rst:22
-msgid ""
-"``pgr_pointToId`` — Inserts a point into a vertices table and returns the "
-"corresponig id."
-msgstr ""
-
-# f6b714528cf7426dbeb9245b9719427c
-#: ../../../src/common/doc/utilities/point_to_id.rst:26
-msgid ""
-"This function is intended for the developer's aid. Use "
-":ref:`pgr_createTopology <pgr_create_topology>` or "
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` instead."
-msgstr ""
-
-# ba51b8bd879447188b15521bc44768c2
-#: ../../../src/common/doc/utilities/point_to_id.rst:30
-msgid "Synopsis"
-msgstr "概要"
-
-# 426a196654d64ba99aa86b9e3eb47996
-#: ../../../src/common/doc/utilities/point_to_id.rst:32
-msgid ""
-"This function returns the ``id`` of the row in the vertices table that "
-"corresponds to the ``point`` geometry"
-msgstr ""
-
-# ad82864ab2bc436bb940d9dbb4bb7e28
-#: ../../../src/common/doc/utilities/point_to_id.rst:40
-msgid "Description"
-msgstr "説明"
-
-# 6f0b7969c38c4b60a652b8c56e860cb5
-#: ../../../src/common/doc/utilities/point_to_id.rst:42
-msgid "``geometry`` \"POINT\" geometry to be inserted."
-msgstr ""
-
-# 972b42f5a56a456584ffe992d2c9f597
-#: ../../../src/common/doc/utilities/point_to_id.rst:43
-msgid ""
-"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-# 8026350c7b7b4ab9bb8a4d01a5398e92
-#: ../../../src/common/doc/utilities/point_to_id.rst:44
-msgid "``text`` Vertices table name WITH schema included."
-msgstr ""
-
-# fdb31c3aac0442fd9a79fd2e3cec8567
-#: ../../../src/common/doc/utilities/point_to_id.rst:45
-msgid "``integer`` SRID of the geometry point."
-msgstr ""
-
-# 1cb7d86e4eb54c46b998f27b7d883269
-#: ../../../src/common/doc/utilities/point_to_id.rst:47
-msgid ""
-"This function returns the id of the row that corresponds to the ``point`` "
-"geometry"
-msgstr ""
-
-# 6444a2e3a1eb4ec1b9e456bd7d566ec3
-#: ../../../src/common/doc/utilities/point_to_id.rst:49
-msgid ""
-"When the ``point`` geometry already exists in the vertices table "
-"``vertname``, it returns the corresponing ``id``."
-msgstr ""
-
-# f348861666b446b8b94833b19fc43b3a
-#: ../../../src/common/doc/utilities/point_to_id.rst:50
-msgid ""
-"When the ``point`` geometry is not found in the vertices table ``vertname``,"
-" the funcion inserts the ``point`` and returns the corresponing ``id`` of "
-"the newly created vertex."
-msgstr ""
-
-# bbc93993a9494838bb777feb3c966b2b
-#: ../../../src/common/doc/utilities/point_to_id.rst:52
-msgid ""
-"The function do not perform any checking of the parameters. Any validation "
-"has to be done before calling this function."
-msgstr ""
-
-# feb893694fe44a30b39b6671d6603125
-#: ../../../src/common/doc/utilities/point_to_id.rst:55
-msgid "History"
-msgstr "履歴"
-
-# ac4bb20cbeeb49e8a95d92ca52981979
-#: ../../../src/common/doc/utilities/point_to_id.rst:56
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# f159557b0fd44238a8114795dbd499e6
-#: ../../../src/common/doc/utilities/point_to_id.rst:60
-msgid "See Also"
-msgstr "参照"
-
-# 44d7d6a102634aaab89b81a21117e3b4
-#: ../../../src/common/doc/utilities/point_to_id.rst:62
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 34d3f5b67bd04eef9a27bb0f9058f7a0
-#: ../../../src/common/doc/utilities/point_to_id.rst:63
-msgid ""
-":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create a topology "
-"based on the geometry."
-msgstr ""
-
-# 6efeb93fdd6f461b95ba6fa218148c75
-#: ../../../src/common/doc/utilities/point_to_id.rst:64
-msgid ""
-":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
-"on the geometry."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/quote_ident.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/quote_ident.po
deleted file mode 100644
index b6220b7..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/quote_ident.po
+++ /dev/null
@@ -1,135 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# ad4f702fd7ab40f587534a31a99d703a
-#: ../../../src/common/doc/utilities/quote_ident.rst:13
-msgid "pgr_quote_ident"
-msgstr ""
-
-# a05a481e84424fde848925bc9df67822
-#: ../../../src/common/doc/utilities/quote_ident.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 2c0d5a39de7d48a894991413895eeb1d
-#: ../../../src/common/doc/utilities/quote_ident.rst:22
-msgid ""
-"``pgr_quote_ident`` — Quotes the input text to be used as an identifier in "
-"an SQL statement string."
-msgstr ""
-
-# 81be5b43d83b4f259a8627fdbd918321
-#: ../../../src/common/doc/utilities/quote_ident.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-# 9a208d9638b343d49e208a250552bf58
-#: ../../../src/common/doc/utilities/quote_ident.rst:28
-msgid "Synopsis"
-msgstr "概要"
-
-# 20357172c5b74450a1dd908f249e1c22
-#: ../../../src/common/doc/utilities/quote_ident.rst:30
-msgid ""
-"Returns the given identifier ``idname`` suitably quoted to be used as an "
-"identifier in an SQL statement string."
-msgstr ""
-
-# ec0d7e517b52424e83e0a39e700f6ded
-#: ../../../src/common/doc/utilities/quote_ident.rst:38
-msgid "Description"
-msgstr "説明"
-
-# 0333bd56b4d146478a759f9bec187900
-#: ../../../src/common/doc/utilities/quote_ident.rst:41
-msgid "Parameters"
-msgstr ""
-
-# 24fafacf2e084c8ebd35cc820529ddf1
-#: ../../../src/common/doc/utilities/quote_ident.rst:42
-msgid ""
-"``text`` Name of an SQL identifier. Can include ``.`` dot notation for "
-"schemas.table identifiers"
-msgstr ""
-
-# 43a32f6d513f42dda64a31f538a7cb0b
-#: ../../../src/common/doc/utilities/quote_ident.rst:44
-msgid ""
-"Returns the given string suitably quoted to be used as an identifier in an "
-"SQL statement string."
-msgstr ""
-
-# d4e0873a14da42f5b4ca3f89505e8335
-#: ../../../src/common/doc/utilities/quote_ident.rst:46
-msgid ""
-"When the identifier ``idname`` contains on or more ``.`` separators, each "
-"component is suitably quoted to be used in an SQL string."
-msgstr ""
-
-# 1842d74622194549bf87e0e37e8220c8
-#: ../../../src/common/doc/utilities/quote_ident.rst:50
-msgid "History"
-msgstr "履歴"
-
-# 3e97c734ccfc46efaedb156bfd028772
-#: ../../../src/common/doc/utilities/quote_ident.rst:51
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 4c8ad273e78c414ca99c84a290acff83
-#: ../../../src/common/doc/utilities/quote_ident.rst:55
-msgid "Examples"
-msgstr "例"
-
-# c27e93edd7144c1986103e042e5b991c
-#: ../../../src/common/doc/utilities/quote_ident.rst:57
-msgid "Everything is lower case so nothing needs to be quoted."
-msgstr ""
-
-# 275c25d761794895a7a9474bd1622943
-#: ../../../src/common/doc/utilities/quote_ident.rst:76
-msgid "The column is upper case so its double quoted."
-msgstr ""
-
-# 7fc7d47e83624683a58343f8b5935b6f
-#: ../../../src/common/doc/utilities/quote_ident.rst:95
-msgid "The schema name has a capital letter so its double quoted."
-msgstr ""
-
-# 68aa84ac853546419c541739eee038e6
-#: ../../../src/common/doc/utilities/quote_ident.rst:106
-msgid "Ignores extra ``.`` separators."
-msgstr ""
-
-# 13976da7e76249c1bbbc10fb34130c59
-#: ../../../src/common/doc/utilities/quote_ident.rst:118
-msgid "See Also"
-msgstr "参照"
-
-# 9ca53a95db55462780e7fb68bba70aca
-#: ../../../src/common/doc/utilities/quote_ident.rst:120
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# fb4b95d8a6d8403497a36238ed980b58
-#: ../../../src/common/doc/utilities/quote_ident.rst:121
-msgid ""
-":ref:`pgr_get_table_name` to get the name of the table as is stored in the "
-"postgres administration tables."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/start_point.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/start_point.po
deleted file mode 100644
index e305a0d..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/start_point.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# a24de4d0526742168dd2c7673d357cfe
-#: ../../../src/common/doc/utilities/start_point.rst:13
-msgid "pgr_startPoint"
-msgstr ""
-
-# 2878d80121d3453794e0871f34873592
-#: ../../../src/common/doc/utilities/start_point.rst:20
-msgid "Name"
-msgstr "名前"
-
-# ef267d5bd4dc444b9db70d9f4079f505
-#: ../../../src/common/doc/utilities/start_point.rst:22
-msgid ""
-"``pgr_startPoint`` — Returns a start point of a (multi)linestring geometry."
-msgstr ""
-
-# 57c55f6c23fd4dc59ad7f25a4a4e6f90
-#: ../../../src/common/doc/utilities/start_point.rst:24
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-# 7fb8df5ab251417bba38529aaefd457b
-#: ../../../src/common/doc/utilities/start_point.rst:28
-msgid "Synopsis"
-msgstr "概要"
-
-# 7becd53f47734fbe99a71ba8adef0d07
-# 9345f683e56b40dcb259f1ef2ea5e240
-#: ../../../src/common/doc/utilities/start_point.rst:30
-#: ../../../src/common/doc/utilities/start_point.rst:44
-msgid ""
-"Returns the geometry of the start point of the first LINESTRING of ``geom``."
-msgstr ""
-
-# f2295bc1e9ef4b08884c65ec18de9744
-#: ../../../src/common/doc/utilities/start_point.rst:38
-msgid "Description"
-msgstr "説明"
-
-# fef77a15910b4557bb253c868468c67a
-#: ../../../src/common/doc/utilities/start_point.rst:41
-msgid "Parameters"
-msgstr ""
-
-# c938ded08b8743bf9eac1b5d064e0ed0
-#: ../../../src/common/doc/utilities/start_point.rst:42
-msgid "``geometry`` Geometry of a MULTILINESTRING or LINESTRING."
-msgstr ""
-
-# 364eba92da1046889b073b64c9827bdf
-#: ../../../src/common/doc/utilities/start_point.rst:49
-msgid "History"
-msgstr "履歴"
-
-# 62c8d013ab68473c8adda6fbfaf564e9
-#: ../../../src/common/doc/utilities/start_point.rst:50
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 8e8a05a8da734bb5961b296230e53bcb
-#: ../../../src/common/doc/utilities/start_point.rst:55
-msgid "See Also"
-msgstr "参照"
-
-# 6026c7e6914a49cab16a616dd0fb6bac
-#: ../../../src/common/doc/utilities/start_point.rst:57
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# 5b0650667c4b470691f4647d5b73f783
-#: ../../../src/common/doc/utilities/start_point.rst:58
-msgid ":ref:`pgr_end_Point` to get the end point of a (multi)linestring."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/version.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/version.po
deleted file mode 100644
index 272b91e..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/version.po
+++ /dev/null
@@ -1,113 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# cb10fa2694924ce19d909a3e1df513f1
-#: ../../../src/common/doc/utilities/version.rst:13
-msgid "pgr_version"
-msgstr ""
-
-# 135f514b10854445bd0cfa9f89f21f86
-#: ../../../src/common/doc/utilities/version.rst:20
-msgid "Name"
-msgstr "名前"
-
-# ee914323b4b6411ea5c157325bdfac90
-#: ../../../src/common/doc/utilities/version.rst:22
-msgid "``pgr_version`` — Query for pgRouting version information."
-msgstr ""
-
-# 301b5989ecef437b858e054c95827d83
-#: ../../../src/common/doc/utilities/version.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 607aa236b6134901a0871ed5bf518253
-#: ../../../src/common/doc/utilities/version.rst:28
-msgid "Returns a table with pgRouting version information."
-msgstr ""
-
-# 6190754a1b934ee586562b0995c07bc0
-#: ../../../src/common/doc/utilities/version.rst:36
-msgid "Description"
-msgstr "説明"
-
-# b85aeaeb021647e59321f2b6c9953333
-#: ../../../src/common/doc/utilities/version.rst:38
-msgid "Returns a table with:"
-msgstr ""
-
-# e5a458cace474e8babaaaff2837c160f
-#: ../../../src/common/doc/utilities/version.rst:40
-msgid "``varchar`` pgRouting version"
-msgstr ""
-
-# 7f02654b7c3641b5a35c56c47ea63022
-#: ../../../src/common/doc/utilities/version.rst:41
-msgid "``varchar`` Git tag of pgRouting build"
-msgstr ""
-
-# c50e77a54d3d4828a5ea0e89182d5f03
-#: ../../../src/common/doc/utilities/version.rst:42
-msgid "``varchar`` Git hash of pgRouting build"
-msgstr ""
-
-# ba32c01940164cfab6dec3df2cb565ed
-#: ../../../src/common/doc/utilities/version.rst:43
-msgid "``varchar`` Git branch of pgRouting build"
-msgstr ""
-
-# 135e588dcbe144db9a806d3c5b75b88c
-#: ../../../src/common/doc/utilities/version.rst:44
-msgid "``varchar`` Boost version"
-msgstr ""
-
-# 7e0b5fe0384f43648b6ca7dcdd703fd6
-#: ../../../src/common/doc/utilities/version.rst:48
-msgid "History"
-msgstr "履歴"
-
-# 3f8e572f137d472592f2abb0483e3153
-#: ../../../src/common/doc/utilities/version.rst:49
-msgid "New in version 2.0.0"
-msgstr ""
-
-# abdab1e6a00347269b027b2fedd31c15
-#: ../../../src/common/doc/utilities/version.rst:53
-msgid "Examples"
-msgstr "例"
-
-# 86be3ecef9da4b22b39cfe8fc3848b92
-#: ../../../src/common/doc/utilities/version.rst:55
-msgid "Query for full version string"
-msgstr ""
-
-# 85c014398a004db5bb9cf5afa9515f32
-#: ../../../src/common/doc/utilities/version.rst:67
-msgid "Query for ``version`` and ``boost`` attribute"
-msgstr ""
-
-# e3b6b7e66a8e4b8698f253e26126b8af
-#: ../../../src/common/doc/utilities/version.rst:80
-msgid "See Also"
-msgstr "参照"
-
-# 73744f59f3494c4e827095b7f6ca9503
-#: ../../../src/common/doc/utilities/version.rst:82
-msgid ":ref:`pgr_versionless` to compare two version numbers"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/versionless.po b/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/versionless.po
deleted file mode 100644
index 2883cb2..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/common/doc/utilities/versionless.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 5209a60f43eb4ca889765b2f2855917f
-#: ../../../src/common/doc/utilities/versionless.rst:13
-msgid "pgr_versionless"
-msgstr ""
-
-# cf214511459c4e01a98c636ee93edf10
-#: ../../../src/common/doc/utilities/versionless.rst:20
-msgid "Name"
-msgstr "名前"
-
-# af9f449a91a94497a1a06310c12763cc
-#: ../../../src/common/doc/utilities/versionless.rst:22
-msgid "``pgr_versionless`` — Compare two version numbers."
-msgstr ""
-
-# cfa4ec4da8d143e9bb4f33521dc1f6b2
-#: ../../../src/common/doc/utilities/versionless.rst:24
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-# 7a40ac52554840c48edaf4e3bc893f86
-#: ../../../src/common/doc/utilities/versionless.rst:27
-msgid "Synopsis"
-msgstr "概要"
-
-# 99a72026827e4e44b1b7e0b9defa52f8
-#: ../../../src/common/doc/utilities/versionless.rst:29
-msgid ""
-"Returns ``true`` if the first version number is smaller than the second "
-"version number. Otherwise returns ``false``."
-msgstr ""
-
-# b541ba956f94407fbbfa4f325152d137
-#: ../../../src/common/doc/utilities/versionless.rst:37
-msgid "Description"
-msgstr "説明"
-
-# f2b9c579402a4d529bdcf44885b7999e
-#: ../../../src/common/doc/utilities/versionless.rst:39
-msgid "``text`` first version number"
-msgstr ""
-
-# ff2f3530055d46b39b083a6e013b18f1
-#: ../../../src/common/doc/utilities/versionless.rst:40
-msgid "``text`` second version number"
-msgstr ""
-
-# aa0e1cf348454207aba6b1bd4d82ddcd
-#: ../../../src/common/doc/utilities/versionless.rst:44
-msgid "History"
-msgstr "履歴"
-
-# 84d6600a81814c3b87c5e309a80eef62
-#: ../../../src/common/doc/utilities/versionless.rst:45
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 0dbed91f114f41a2a1ccbffbb4886a47
-#: ../../../src/common/doc/utilities/versionless.rst:49
-msgid "Examples"
-msgstr "例"
-
-# cd2ca34fb88c4024ac73c6c7076b3de2
-#: ../../../src/common/doc/utilities/versionless.rst:62
-msgid "See Also"
-msgstr "参照"
-
-# ac8a4a1b5fd0499e910d1f9c088d0d25
-#: ../../../src/common/doc/utilities/versionless.rst:64
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-# f733092d16de4d7b9bdf31b6bdae27d3
-#: ../../../src/common/doc/utilities/versionless.rst:65
-msgid ":ref:`pgr_version` to get the current version of pgRouting."
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/dijkstra/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/dijkstra/doc/index.po
deleted file mode 100644
index 26a7970..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/dijkstra/doc/index.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# sanak <geosanak at gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:15+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# a6876a00bcae42fdb134f789dabd19d7
-#: ../../../src/dijkstra/doc/index.rst:13
-msgid "pgr_dijkstra - Shortest Path Dijkstra"
-msgstr "pgr_dijkstra - ダイクストラのアルゴリズムによる最短経路探索"
-
-# 5ba32c2871ea4858b8bfd351b4a01f34
-#: ../../../src/dijkstra/doc/index.rst:20
-msgid "Name"
-msgstr "名前"
-
-# eb4931f6253f4daea164710031c062f7
-#: ../../../src/dijkstra/doc/index.rst:22
-msgid "``pgr_dijkstra`` — Returns the shortest path using Dijkstra algorithm."
-msgstr "``pgr_dijkstra`` — ダイクストラのアルゴリズムを用いた最短経路を返します。"
-
-# aad22c43d6da4f658543ad79e2b4789c
-#: ../../../src/dijkstra/doc/index.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# d23c857c49554c10a6c99810575627e1
-#: ../../../src/dijkstra/doc/index.rst:28
-msgid ""
-"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
-"in 1956. It is a graph search algorithm that solves the single-source "
-"shortest path problem for a graph with non-negative edge path costs, "
-"producing a shortest path tree. Returns a set of :ref:`pgr_costResult "
-"<type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
-msgstr ""
-
-# 9b3ef7764a8a4aec8be3fd97d0f78855
-#: ../../../src/dijkstra/doc/index.rst:37
-msgid "Description"
-msgstr "説明"
-
-# 8f12864ae55a48e6a49e9a5c7f232731
-#: ../../../src/dijkstra/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "SQLのクエリーです。以下に続くカラムからなる行セットを返します:"
-
-# 883dbba5f5b94668af12a1c3d280804f
-#: ../../../src/dijkstra/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` 型のエッジの識別子"
-
-# 64eaa5363cc64362829f60de0f81517d
-#: ../../../src/dijkstra/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` 型の始点ノードの識別子"
-
-# 849ed774dfa442cf86f3d184c820a717
-#: ../../../src/dijkstra/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` 型の終点ノードの識別子"
-
-# 2c000dd6564240d09f3533f4b2411029
-#: ../../../src/dijkstra/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` 型のエッジの横断コストの値。負のコストはエッジがグラフに挿入されることを防ぎます。"
-
-# 13bbd212a94840bbbdd82ba008836790
-#: ../../../src/dijkstra/doc/index.rst:50
-msgid ""
-"``float8`` (optional) the cost for the reverse traversal of the edge. This "
-"is only used when the ``directed`` and ``has_rcost`` parameters are ``true``"
-" (see the above remark about negative costs)."
-msgstr ""
-
-# 42be1660a80b461ba4e56f070cde4c04
-#: ../../../src/dijkstra/doc/index.rst:52
-msgid "``int4`` id of the start point"
-msgstr "``int4`` 型の始点ノードのID"
-
-# 95547c9e5de74556a208d7c0a9e58772
-#: ../../../src/dijkstra/doc/index.rst:53
-msgid "``int4`` id of the end point"
-msgstr "``int4`` 型の始点ノードのID"
-
-# 89e9934bdbfd42aabf98993066529f92
-#: ../../../src/dijkstra/doc/index.rst:54
-msgid "``true`` if the graph is directed"
-msgstr "有向グラフの場合は ``true`` を指定"
-
-# 03f039cd5de34a3f99a5871456ed269f
-#: ../../../src/dijkstra/doc/index.rst:55
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "``true`` の場合、SQLで生成される行セットの ``reverse_cost`` カラムは、エッジの逆方向の横断コストとして使用されます。"
-
-# 2c03ff621dfb4e11a0f215844b6cd41c
-#: ../../../src/dijkstra/doc/index.rst:57
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ":ref:`type_cost_result` のセットを返します:"
-
-# f43f68991432480385556098be3f32ab
-#: ../../../src/dijkstra/doc/index.rst:59
-msgid "row sequence"
-msgstr "行の連番"
-
-# b5cd0a7c7e1943e2934f2d315fd0d58d
-#: ../../../src/dijkstra/doc/index.rst:60
-msgid "node ID"
-msgstr "ノードID"
-
-# ae466d86ce304295afc5b1f956c97732
-#: ../../../src/dijkstra/doc/index.rst:61
-msgid "edge ID (``-1`` for the last row)"
-msgstr "エッジID (最終行は ``-1``)"
-
-# d74ec405ac62479a93ddd9070e1cfead
-#: ../../../src/dijkstra/doc/index.rst:62
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "``id1`` から ``id2`` を横断するコスト"
-
-# d45859a53252493eaea97bdbe6c8936f
-#: ../../../src/dijkstra/doc/index.rst:66
-msgid "History"
-msgstr "履歴"
-
-# 41349c9ad4574d009aa7375219beab0c
-#: ../../../src/dijkstra/doc/index.rst:67
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# d1ebc8bc726844eab5795b5dedc18fe0
-#: ../../../src/dijkstra/doc/index.rst:71
-msgid "Examples"
-msgstr "例"
-
-# 5ea59cfbc4b240c29bc8268d4a36cdb4
-#: ../../../src/dijkstra/doc/index.rst:73
-msgid "Without ``reverse_cost``"
-msgstr "``reverse_cost`` なしの場合"
-
-# a37bcf6c164b442ca94ded3b2df83f61
-#: ../../../src/dijkstra/doc/index.rst:92
-msgid "With ``reverse_cost``"
-msgstr "``reverse_cost`` ありの場合"
-
-# 1013877e3d214e6f8d87c5747e261b20
-#: ../../../src/dijkstra/doc/index.rst:110
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 7097292ec353427d90c60607583c42c2
-#: ../../../src/dijkstra/doc/index.rst:114
-msgid "See Also"
-msgstr "参照"
-
-# d98cbcb325484a81bcb0e6b0afd3928c
-#: ../../../src/dijkstra/doc/index.rst:116
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# cc938bae0828409fb0efae9ad098fa4d
-#: ../../../src/dijkstra/doc/index.rst:117
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
diff --git a/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po b/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po
deleted file mode 100644
index 5ef0a14..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/dd_alphashape.po
+++ /dev/null
@@ -1,141 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# cb2e05bbf556427191f8dd5d87c670db
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:13
-msgid "pgr_alphaShape"
-msgstr ""
-
-# cd5cca6682b34a85b72fd0b7c90d739b
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 9a0ca65720774711aefd2d017e4487e9
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:22
-msgid "``pgr_alphashape`` — Core function for alpha shape computation."
-msgstr ""
-
-# 525edb2bc28a4e77804ac30781cc3dc5
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:26
-msgid ""
-"This function should not be used directly. Use :ref:`pgr_drivingDistance "
-"<pgr_driving_distance>` instead."
-msgstr ""
-
-# 96d2ea88d3bf44a793219826f7fddda3
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:30
-msgid "Synopsis"
-msgstr "概要"
-
-# 4b5074bd7bc64d1c89dcc1e5b250c5f0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:32
-msgid ""
-"Returns a table with (x, y) rows that describe the vertices of an alpha "
-"shape."
-msgstr ""
-
-# eed5f82ec9924367b7a2c7ce8ce7704a
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:40
-msgid "Description"
-msgstr "説明"
-
-# 3607e16f8fe24de6a2226bb43a73dadd
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:42
-msgid ""
-"``text`` a SQL query, which should return a set of rows with the following "
-"columns:"
-msgstr ""
-
-# afd24b1ef69d439691025ff955e63f25
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:48
-msgid "``int4`` identifier of the vertex"
-msgstr ""
-
-# c4ec83f59d634b458e6e04dc6822cc62
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:49
-msgid "``float8`` x-coordinate"
-msgstr ""
-
-# c78115c69ec645ceb3a8de6f3a97ebdc
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:50
-msgid "``float8`` y-coordinate"
-msgstr ""
-
-# 63cffe47a71d462cae8c09a10473bdaf
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:53
-msgid "Returns a vertex record for each row :"
-msgstr ""
-
-# 385ec313cc69493989a17eecd282d5b4
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:55
-msgid "x-coordinate"
-msgstr ""
-
-# 2eb9452ee2864540b535c7be538a73f0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:56
-msgid "y-coordinate"
-msgstr ""
-
-# bf1e04aab9ed4558aeb274dbc93fc476
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:60
-msgid "History"
-msgstr "歴史"
-
-# 6301d43186dc47ca9c0925f563c2b4ee
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:61
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# 2dcc599a683743b09eb440895c823584
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:65
-msgid "Examples"
-msgstr "例"
-
-# 28059fce0d66461c88851c2efa8995b4
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:66
-msgid ""
-"In the alpha shape code we have no way to control the order of the points so"
-" the actual output you might get could be similar but different. The simple "
-"query is followed by a more complex one that constructs a polygon and "
-"computes the areas of it. This should be the same as the result on your "
-"system. We leave the details of the complex query to the reader as an "
-"exercise if they wish to decompose it into understandable pieces or to just "
-"copy and paste it into a SQL window to run."
-msgstr ""
-
-# cea925c912c14e2bae7b67a9493f67d0
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:119
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# b737b880282d447b840b23e77501d03b
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:123
-msgid "See Also"
-msgstr "参照"
-
-# 79772e0e113745068a7c48d32ae903ee
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:125
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-# 98ad4c5291f04893a9e5a6f616ce2d11
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:126
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po b/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po
deleted file mode 100644
index aacc0ca..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/dd_driving_distance.po
+++ /dev/null
@@ -1,199 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-22 05:50+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 49d83b442baa4f9981fa13ff4abc3c6b
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:13
-msgid "pgr_drivingDistance"
-msgstr ""
-
-# ce7edabbdab546a3a318f86316d0abc6
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 7a89c6c2c0ca404eb82afe9d6de38db2
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:22
-msgid ""
-"``pgr_drivingDistance`` - Returns the driving distance from a start node."
-msgstr ""
-
-# 5afa2748d4964e35b9cfcf71ba431015
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:26
-msgid ""
-"Requires :ref:`to build pgRouting <build>` with support for Driving "
-"Distance."
-msgstr ""
-
-# 91fbeb2cd46146c4bb9f86b8600faa87
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:30
-msgid "Synopsis"
-msgstr "概要"
-
-# cffb1438aa5d43d8b1792ec1d53769ae
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:32
-msgid ""
-"This function computes a Dijkstra shortest path solution them extracts the "
-"cost to get to each node in the network from the starting node. Using these "
-"nodes and costs it is possible to compute constant drive time polygons. "
-"Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, "
-"cost) rows, that make up a list of accessible points."
-msgstr ""
-
-# b2253b753da44597b1d449509c96ca75
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:41
-msgid "Description"
-msgstr "説明"
-
-# f187f52a62034b2cae8bb00b570bea15
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:43
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "SQLのクエリーです。以下に続くカラムからなる行セットを返します:"
-
-# 85949c2cc0334abbbb500996221eeba0
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:50
-msgid "``int4`` identifier of the edge"
-msgstr "``int4`` 型のエッジの識別子"
-
-# 35a904f5f23643b7a6e7e457b8f05846
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:51
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4`` 型の始点ノードの識別子"
-
-# 815615381d8d43989567cc15d154736a
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:52
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4`` 型の終点ノードの識別子"
-
-# 5c9e142543534a0bbc7668603ad465b4
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:53
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8`` 型のエッジの横断コストの値。負のコストはエッジがグラフに挿入されることを防ぎます。"
-
-# fa3ca524dbe24d47891420e71caa324c
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(オプション) エッジの反対方向のコスト。この値は ``directed`` および ``has_rcost`` パラメータが ``true`` の場合のみ使用されます。(負のコストについては前述の通りです)"
-
-# c9e1f4debc904118ab177e2b4427d364
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4`` 型の始点ノードのID"
-
-# 2da59a7b4e0b4b6fbac510bfe0adbd1e
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:57
-msgid ""
-"``float8`` value in edge cost units (not in projection units - they might be"
-" different)."
-msgstr ""
-
-# b09a53cf12bd49a09659eb105e2e7d2a
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "有向グラフの場合は ``true`` を指定"
-
-# e771178ac5514ae6bc7cf3dcccfe5408
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "``true`` の場合、SQLで生成される行セットの ``reverse_cost`` カラムは、エッジの逆方向の横断コストとして使用されます。"
-
-# 5770f80a74ec49cf8f9e11b9fd082533
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ":ref:`type_cost_result` のセットを返します:"
-
-# ed0dbd0e73234b70827a7663d390886d
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:63
-msgid "row sequence"
-msgstr "行の連番"
-
-# dc9caee8fdc84c45bb1ebf3c046a436d
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:64
-msgid "node ID"
-msgstr "ノードID"
-
-# ae36b60db435425b8a4bfa4ada217dd7
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:65
-msgid "edge ID (this is probably not a useful item)"
-msgstr ""
-
-# ee9063c6bb49444e94e08af7eedbb401
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:66
-msgid "cost to get to this node ID"
-msgstr ""
-
-# 3bb717c83f2d4993a4b1704a88749ee9
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr ""
-
-# 306f0588bb5148dab4d4a97e5bb35889
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:74
-msgid "History"
-msgstr "履歴"
-
-# cc8f5e8248314554bd506fc27f7208ed
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:75
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# 9db1973c0a0b4420afe780fa3d4b3d0f
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:79
-msgid "Examples"
-msgstr "例"
-
-# 3f34e359dbd242b6a82b49b0beb2acd5
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:81
-msgid "Without ``reverse_cost``"
-msgstr "``reverse_cost`` なしの場合"
-
-# f58a8bec8b9447f59bf31eb2d52c7782
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:101
-msgid "With ``reverse_cost``"
-msgstr "``reverse_cost`` ありの場合"
-
-# f6d9ddd77a7c48dcaafa2cd1225d8e27
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:121
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 15ad7ce30a424139b00e9874b4461215
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:125
-msgid "See Also"
-msgstr "参照"
-
-# 04113586118441f6b13f5bf83f5fa224
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:127
-msgid ":ref:`pgr_alphashape` - Alpha shape computation"
-msgstr ""
-
-# b474eeeca7284f5f983f498713f1640f
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:128
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po b/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po
deleted file mode 100644
index 548db10..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/dd_points_as_polygon.po
+++ /dev/null
@@ -1,122 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# a2329478f830474e9819c418ae391538
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:13
-msgid "pgr_pointsAsPolygon"
-msgstr ""
-
-# df6c5bd4620d47ae9f8682195aca1e18
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 968dbf3147554bcc994e903e5917a0bd
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:22
-msgid ""
-"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
-msgstr ""
-
-# 0b81c4a0e03d47938cd256882a6facac
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# 568b6a3cf23a4a7980b7796df73d334b
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:28
-msgid "Returns the alpha shape as polygon geometry."
-msgstr ""
-
-# 240f6c0c9ac848a2b1815408c264a3d7
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:36
-msgid "Description"
-msgstr "説明"
-
-# bfa10edae1114295852086c42f84d811
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:38
-msgid ""
-"``text`` a SQL query, which should return a set of rows with the following "
-"columns:"
-msgstr ""
-
-# d3ca4ae81d3e4a709a2fda2d60f23946
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:44
-msgid "``int4`` identifier of the vertex"
-msgstr ""
-
-# 10e342dfa5274ea89ea284bd657b2469
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:45
-msgid "``float8`` x-coordinate"
-msgstr ""
-
-# d36090e578224b30b065a3c28f26d565
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:46
-msgid "``float8`` y-coordinate"
-msgstr ""
-
-# 1029622f3ac34a30abc0f3babfe7118f
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:49
-msgid "Returns a polygon geometry."
-msgstr ""
-
-# 49392543fb984b5f922e683b9ba560c5
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:53
-msgid "History"
-msgstr "歴史"
-
-# b00e0e03870244cca7aa9e1c81bad9c1
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:54
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# f8001d60b6d54b67afc641f38b8e5b4a
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:58
-msgid "Examples"
-msgstr "例"
-
-# 7e01fc6f880549e7b7bde01255cc2811
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:59
-msgid ""
-"In the following query there is not way to control which point in the "
-"polygon is the first in the list, so you may get similar but different "
-"results than the following which are also correct. Each of the "
-"pgr_pointsAsPolygon queries below is followed by one the compute the area of"
-" the polygon. This area should remain constant regardles of the order of the"
-" points making up the polygon."
-msgstr ""
-
-# 1deae2c2bb624110980cf832e66993d9
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:93
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 801871cf3dd94fd292387e49941223e3
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:97
-msgid "See Also"
-msgstr "参照"
-
-# abc4c217086645fe88ff21568ab13c50
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:99
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-# 51bae94aaf75403a81353100c953d805
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:100
-msgid ":ref:`pgr_alphashape` - Alpha shape computation"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/index.po
deleted file mode 100644
index 65717f9..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/driving_distance/doc/index.po
+++ /dev/null
@@ -1,201 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-# sanak <geosanak at gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: 2013-08-07 12:30+0000\n"
-"Last-Translator: cvvergara\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 0979e1fbbc9641b5ade79d4c28a2473a
-#: ../../../src/driving_distance/doc/index.rst:13
-msgid "pgr_drivingDistance - Driving Distance"
-msgstr ""
-
-# 7b3011e2af744bfdb31fc2960aaa4664
-#: ../../../src/driving_distance/doc/index.rst:20
-msgid "Name"
-msgstr "名前"
-
-# 3c08eb6932d34c2ca49bd0889566e8e3
-#: ../../../src/driving_distance/doc/index.rst:22
-msgid ""
-"``pgr_drivingDistance`` - Returns the driving distance from a start node."
-msgstr ""
-
-# 726c1fdc95044e52b22d50c0f0b766fb
-#: ../../../src/driving_distance/doc/index.rst:26
-msgid ""
-"Requires :ref:`to build pgRouting <build>` with support for Driving "
-"Distance."
-msgstr ""
-
-# ce1ce7f3f6c9425ab9c4a1aae81baeb3
-#: ../../../src/driving_distance/doc/index.rst:30
-msgid "Synopsis"
-msgstr "概要"
-
-# 12a9eb19a15e4f42acd14d76a3847c02
-#: ../../../src/driving_distance/doc/index.rst:32
-msgid ""
-"This function computes a Dijkstra shortest path solution them extracts the "
-"cost to get to each node in the network from the starting node. Using these "
-"nodes and costs it is possible to compute constant drive time polygons. "
-"Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, "
-"cost) rows, that make up a list of accessible points."
-msgstr ""
-
-# df9cee3f069447debee18ff47cce02f8
-#: ../../../src/driving_distance/doc/index.rst:41
-msgid "Description"
-msgstr "説明"
-
-# fda5e314fd1b46c6a96ad0b8a241ae12
-#: ../../../src/driving_distance/doc/index.rst:43
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "SQLのクエリーです。以下に続くカラムからなる行セットを返します:"
-
-# 9621e3c82e434709bfcb9df2a0febdee
-#: ../../../src/driving_distance/doc/index.rst:50
-msgid "``int4`` identifier of the edge"
-msgstr "エッジの識別子[``int4``]"
-
-# b0b6976ee3d3495ca2e27a1359c6b07c
-#: ../../../src/driving_distance/doc/index.rst:51
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4``型の始点ノードの識別子"
-
-# fec5e9d5cb5e438ea2c5f0feecd1aa03
-#: ../../../src/driving_distance/doc/index.rst:52
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4``型の終点ノードの識別子"
-
-# ec8176b8c36e447ebd1f0995dadd973d
-#: ../../../src/driving_distance/doc/index.rst:53
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8``型のエッジにかかる重み。負の重みはエッジがグラフに挿入されることを防ぎます。"
-
-# 9c3f6ea025a84d0a8ac13358a10ed166
-#: ../../../src/driving_distance/doc/index.rst:54
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(オプション) エッジの反対方向のコスト。この値は``directed``および``has_rcost``パラメータが``true``の場合のみ使用されます。(負のコストについては前述の通りです)"
-
-# 32fef696ffaf450fb041bf2ebc1fc270
-#: ../../../src/driving_distance/doc/index.rst:56
-msgid "``int4`` id of the start point"
-msgstr "``int4``型の始点ノードのID"
-
-# 420175e68aac485f86544b6aa6cae550
-#: ../../../src/driving_distance/doc/index.rst:57
-msgid ""
-"``float8`` value in edge cost units (not in projection units - they might be"
-" different)."
-msgstr ""
-
-# a7f57fdcfe0544e69a4cde06a7344fb6
-#: ../../../src/driving_distance/doc/index.rst:58
-msgid "``true`` if the graph is directed"
-msgstr "有向グラフの場合は``true``を指定"
-
-# d72d8b646a964dea88cd97d711c69e94
-#: ../../../src/driving_distance/doc/index.rst:59
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "``true``の場合、SQLで生成される行セットの``reverse_cost``カラムは、エッジの逆方向にかかる重みとして使用されます。"
-
-# ef1631b756b54c3aa2b66ae0abfad917
-#: ../../../src/driving_distance/doc/index.rst:61
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ":ref:`type_cost_result` のセットを返します:"
-
-# e440be6d227945fa904c13d07855a863
-#: ../../../src/driving_distance/doc/index.rst:63
-msgid "row sequence"
-msgstr "行の連番"
-
-# bfe1245d3dde49048c4e9bf715508e92
-#: ../../../src/driving_distance/doc/index.rst:64
-msgid "node ID"
-msgstr "ノードID"
-
-# 401535e148ae4023aefb138c6f8ff762
-#: ../../../src/driving_distance/doc/index.rst:65
-msgid "edge ID (this is probably not a useful item)"
-msgstr ""
-
-# 3a2b1d8c38434024b2edd02add5bb1fc
-#: ../../../src/driving_distance/doc/index.rst:66
-msgid "cost to get to this node ID"
-msgstr ""
-
-# 1d8dc027684e453f9a61e3e3f12ee255
-#: ../../../src/driving_distance/doc/index.rst:70
-msgid ""
-"You must reconnect to the database after ``CREATE EXTENSION pgrouting``. "
-"Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr ""
-
-# a61d60a110d54bc0a6930cab19c3ce24
-#: ../../../src/driving_distance/doc/index.rst:74
-msgid "History"
-msgstr "履歴"
-
-# f2e8e48820a54015ab1b6a85136df5f0
-#: ../../../src/driving_distance/doc/index.rst:75
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# 817cc13bb697434e9f0803ed3f365934
-#: ../../../src/driving_distance/doc/index.rst:79
-msgid "Examples"
-msgstr "例"
-
-# 82aec7db1ea043b28641f4963d13763b
-#: ../../../src/driving_distance/doc/index.rst:81
-msgid "Without ``reverse_cost``"
-msgstr "``reverse_cost``なしの場合"
-
-# ac2a8b6a32a24b6095a9fb31fce4ebe0
-#: ../../../src/driving_distance/doc/index.rst:101
-msgid "With ``reverse_cost``"
-msgstr "``reverse_cost``ありの場合"
-
-# 0d7631d9310b438c91153c3dd1b24a5b
-#: ../../../src/driving_distance/doc/index.rst:121
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# eed359d1899540fab05b3a4dc12fcaa1
-#: ../../../src/driving_distance/doc/index.rst:125
-msgid "See Also"
-msgstr "参照"
-
-# affd024607f942fb927cdf15975a7d4d
-#: ../../../src/driving_distance/doc/index.rst:127
-msgid ":ref:`pgr_points_as_polygon`"
-msgstr ":ref:`pgr_points_as_polygon`"
-
-# 5809d5028efc4d909ba300c75482cb61
-#: ../../../src/driving_distance/doc/index.rst:128
-msgid ":ref:`pgr_alphashape`"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/kdijkstra/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/kdijkstra/doc/index.po
deleted file mode 100644
index 270e16e..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/kdijkstra/doc/index.po
+++ /dev/null
@@ -1,231 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 36e2253743a8455dbfbf75b26155205f
-#: ../../../src/kdijkstra/doc/index.rst:13
-msgid "pgr_kDijkstra - Mutliple destination Shortest Path Dijkstra"
-msgstr ""
-
-# 9f432bf1623d4a299d50ff492edbd66b
-#: ../../../src/kdijkstra/doc/index.rst:21
-msgid "Name"
-msgstr "名前"
-
-# 57c34a235f7a4cea8458d98a50a54e77
-#: ../../../src/kdijkstra/doc/index.rst:23
-msgid ""
-"``pgr_kdijkstraCost`` - Returns the costs for K shortest paths using "
-"Dijkstra algorithm."
-msgstr ""
-
-# ce7c4be9a502473591591e4d330d46e7
-#: ../../../src/kdijkstra/doc/index.rst:24
-msgid ""
-"``pgr_kdijkstraPath`` - Returns the paths for K shortest paths using "
-"Dijkstra algorithm."
-msgstr ""
-
-# 130c100b24ac47d4afd3b8ae17ea1335
-#: ../../../src/kdijkstra/doc/index.rst:28
-msgid "Synopsis"
-msgstr "概要"
-
-# 1b2f7dd687d84d76bbc57fc3ad8ed5ec
-#: ../../../src/kdijkstra/doc/index.rst:30
-msgid ""
-"These functions allow you to have a single start node and multiple "
-"destination nodes and will compute the routes to all the destinations from "
-"the source node. Returns a set of :ref:`pgr_costResult3 <type_cost_result3>`"
-" or :ref:`pgr_costResult3 <type_cost_result3>`. ``pgr_kdijkstraCost`` "
-"returns one record for each destination node and the cost is the total code "
-"of the route to that node. ``pgr_kdijkstraPath`` returns one record for "
-"every edge in that path from source to destination and the cost is to "
-"traverse that edge."
-msgstr ""
-
-# 06379d79c78b4c9bb92226bc66c58c3f
-#: ../../../src/kdijkstra/doc/index.rst:42
-msgid "Description"
-msgstr "説明"
-
-# 84671f541e384cf79360df9e260a5f52
-#: ../../../src/kdijkstra/doc/index.rst:44
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "SQLのクエリーです。以下に続くカラムからなる行セットを返します:"
-
-# adccb52524354a6c92d9d45edb967dc0
-#: ../../../src/kdijkstra/doc/index.rst:51
-msgid "``int4`` identifier of the edge"
-msgstr "エッジの識別子[``int4``]"
-
-# 5b2a072be67f471a8ab0c6b3daddcc48
-#: ../../../src/kdijkstra/doc/index.rst:52
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4``型の始点ノードの識別子"
-
-# d00470fb22ae4294a3cf56db3d064839
-#: ../../../src/kdijkstra/doc/index.rst:53
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4``型の終点ノードの識別子"
-
-# 4bdbc59e5d2d46ba94031caa56975d17
-#: ../../../src/kdijkstra/doc/index.rst:54
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8``型のエッジにかかる重み。負の重みはエッジがグラフに挿入されることを防ぎます。"
-
-# 569cecbec8e34fa9942c4bcf4ce0c6a4
-#: ../../../src/kdijkstra/doc/index.rst:55
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(オプション) エッジの反対方向のコスト。この値は``directed``および``has_rcost``パラメータが``true``の場合のみ使用されます。(負のコストについては前述の通りです)"
-
-# b3c8762d18e14a65b4d45ca5b654dabd
-#: ../../../src/kdijkstra/doc/index.rst:57
-msgid "``int4`` id of the start point"
-msgstr "``int4``型の始点ノードのID"
-
-# 552184e10f0940f09327b71d0a2a5293
-#: ../../../src/kdijkstra/doc/index.rst:58
-msgid "``int4[]`` an array of ids of the end points"
-msgstr ""
-
-# 6bee551c7fae494d9429ddf6404f457a
-#: ../../../src/kdijkstra/doc/index.rst:59
-msgid "``true`` if the graph is directed"
-msgstr "有向グラフの場合は``true``を指定"
-
-# c79e8fecdbb94d6f836a2fb692d24fea
-#: ../../../src/kdijkstra/doc/index.rst:60
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "``true``の場合、SQLで生成される行セットの``reverse_cost``カラムは、エッジの逆方向にかかる重みとして使用されます。"
-
-# fe741d49c0f94473971ebcad7951456b
-#: ../../../src/kdijkstra/doc/index.rst:63
-msgid "``pgr_kdijkstraCost`` returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# 2325329e3ec24e3cbe4c347369b857a4
-# 2ac53854f37a48a89b705310628c4d3e
-#: ../../../src/kdijkstra/doc/index.rst:65
-#: ../../../src/kdijkstra/doc/index.rst:73
-msgid "row sequence"
-msgstr "行の連番"
-
-# 73cb6093021a456aace98c1f58641bef
-#: ../../../src/kdijkstra/doc/index.rst:66
-msgid ""
-"path vertex source id (this will always be source start point in the query)."
-msgstr ""
-
-# 9afd4e01323945118421ebb27f420068
-#: ../../../src/kdijkstra/doc/index.rst:67
-msgid "path vertex target id"
-msgstr ""
-
-# 8b3c8fe211a147f4b031db8a8d899ddd
-#: ../../../src/kdijkstra/doc/index.rst:68
-msgid ""
-"cost to traverse the path from ``id1`` to ``id2``. Cost will be -1.0 if "
-"there is no path to that target vertex id."
-msgstr ""
-
-# 703a5ecca86b4ef4ba2c275d9ba8a20f
-#: ../../../src/kdijkstra/doc/index.rst:71
-msgid "``pgr_kdijkstraPath`` returns set of :ref:`type_cost_result3`:"
-msgstr ""
-
-# 7fc792793b7c4e65ba68cea3f25384aa
-#: ../../../src/kdijkstra/doc/index.rst:74
-msgid "path target id (identifies the target path)."
-msgstr ""
-
-# c43bcd54fee6435fbe6afd2ec4bb6d65
-#: ../../../src/kdijkstra/doc/index.rst:75
-msgid "path edge source node id"
-msgstr ""
-
-# a567112ee5584a46ac397cb9783627a8
-#: ../../../src/kdijkstra/doc/index.rst:76
-msgid "path edge id (``-1`` for the last row)"
-msgstr ""
-
-# 47af04f2ce09412f8475df30be9581ae
-#: ../../../src/kdijkstra/doc/index.rst:77
-msgid "cost to traverse this edge or -1.0 if there is no path to this target"
-msgstr ""
-
-# e7349c2020bc491aaa02b3eb1ebca791
-#: ../../../src/kdijkstra/doc/index.rst:81
-msgid "History"
-msgstr "歴史"
-
-# f7b3cf1f2e494a4c8697b712adcbd1fc
-#: ../../../src/kdijkstra/doc/index.rst:82
-msgid "New in version 2.0.0"
-msgstr ""
-
-# adf5de36019d4982b76cd696909168b0
-#: ../../../src/kdijkstra/doc/index.rst:86
-msgid "Examples"
-msgstr "例"
-
-# f332ab5afb39404284be98f0e9a2c8dc
-#: ../../../src/kdijkstra/doc/index.rst:88
-msgid "Returning a ``cost`` result"
-msgstr ""
-
-# cb5abec6a55e41a4a61c22fd3f461110
-#: ../../../src/kdijkstra/doc/index.rst:123
-msgid "Returning a ``path`` result"
-msgstr ""
-
-# d2e7b4076702425a9c6928a0cc4b997e
-#: ../../../src/kdijkstra/doc/index.rst:144
-msgid ""
-"There is no assurance that the result above will be ordered in the direction"
-" of flow of the route, ie: it might be reversed. You will need to check if "
-"``st_startPoint()`` of the route is the same as the start node location and "
-"if it is not then call ``st_reverse()`` to reverse the direction of the "
-"route. This behavior is a function of PostGIS functions ``st_linemerge()`` "
-"and ``st_union()`` and not pgRouting."
-msgstr ""
-
-# d6928031c7d047a5999f03c79c5bcfea
-#: ../../../src/kdijkstra/doc/index.rst:153
-msgid "See Also"
-msgstr "参照"
-
-# cd86a4612fe944acbe5a39daaf52dafd
-#: ../../../src/kdijkstra/doc/index.rst:155
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# c2386bf8c6314521abe162d0bf548225
-#: ../../../src/kdijkstra/doc/index.rst:156
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
diff --git a/doc/i18n/ja/LC_MESSAGES/src/ksp/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/ksp/doc/index.po
deleted file mode 100644
index a165068..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/ksp/doc/index.po
+++ /dev/null
@@ -1,192 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# Daniel Kastl, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:15+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# dc72571c7ce5498b92c659e3e482c885
-#: ../../../src/ksp/doc/index.rst:13
-msgid "pgr_ksp - K-Shortest Path"
-msgstr ""
-
-# 57b24beea69846f58a8cb9b1a7a892b5
-#: ../../../src/ksp/doc/index.rst:20
-msgid "Name"
-msgstr "名前"
-
-# b3d0fc92b23443c8b718233c1e16f052
-#: ../../../src/ksp/doc/index.rst:22
-msgid "``pgr_ksp`` — Returns the \"K\" shortest paths."
-msgstr ""
-
-# 0e60ee2dfa944557a1e9c76106489a7f
-#: ../../../src/ksp/doc/index.rst:26
-msgid "Synopsis"
-msgstr "概要"
-
-# bcf915dc485c4e3b90c9a8ea251b55d1
-#: ../../../src/ksp/doc/index.rst:28
-msgid ""
-"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
-" number of shortest paths desired. Returns a set of :ref:`pgr_costResult3 "
-"<type_cost_result3>` (seq, id1, id2, id3, cost) rows, that make up a path."
-msgstr ""
-
-# 46b5ce0d54a64718819888b77b007080
-#: ../../../src/ksp/doc/index.rst:37
-msgid "Description"
-msgstr "説明"
-
-# dddbbca8781f41eab4aac1d4e2ecdf32
-#: ../../../src/ksp/doc/index.rst:39
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "SQLのクエリーです。以下に続くカラムからなる行セットを返します:"
-
-# 575d21e3bc994dc3a92a7c6cbb0ed6a2
-#: ../../../src/ksp/doc/index.rst:46
-msgid "``int4`` identifier of the edge"
-msgstr "エッジの識別子[``int4``]"
-
-# 589751b9c7d34dac9b4eeb12894fd648
-#: ../../../src/ksp/doc/index.rst:47
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4``型の始点ノードの識別子"
-
-# 6567c097438040d9b678e88df7521b35
-#: ../../../src/ksp/doc/index.rst:48
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4``型の終点ノードの識別子"
-
-# a1e24bd423dd445889b72928d964a5ec
-#: ../../../src/ksp/doc/index.rst:49
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8``型のエッジにかかる重み。負の重みはエッジがグラフに挿入されることを防ぎます。"
-
-# ed76ed5e3a504c7aa3a35ea3fa5b4c16
-#: ../../../src/ksp/doc/index.rst:50
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when ``has_rcost`` the parameter is ``true`` (see the above remark about "
-"negative costs)."
-msgstr ""
-
-# 588bdec4303b49869b6d1eedd541c198
-#: ../../../src/ksp/doc/index.rst:52
-msgid "``int4`` id of the start point"
-msgstr "``int4``型の始点ノードのID"
-
-# 96b44480fac34f6286b863e6c75d4d8a
-#: ../../../src/ksp/doc/index.rst:53
-msgid "``int4`` id of the end point"
-msgstr "``int4``型の始点ノードのID"
-
-# 0ffd51df58754f0b89f1b3ad6f75b632
-#: ../../../src/ksp/doc/index.rst:54
-msgid "``int4`` number of alternative routes"
-msgstr ""
-
-# 0fc58370aa30454ea32a2c8b9f3b14a3
-#: ../../../src/ksp/doc/index.rst:55
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "``true``の場合、SQLで生成される行セットの``reverse_cost``カラムは、エッジの逆方向にかかる重みとして使用されます。"
-
-# dc8dfcffbd604441a95743930181b042
-#: ../../../src/ksp/doc/index.rst:57
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ":ref:`type_cost_result` のセットを返します:"
-
-# 611d6bbb82ca4987ae39fd45bb107c2b
-#: ../../../src/ksp/doc/index.rst:59
-msgid "sequence for ording the results"
-msgstr ""
-
-# b79966a030e04ee3b5e992b5a6858947
-#: ../../../src/ksp/doc/index.rst:60
-msgid "route ID"
-msgstr ""
-
-# a324539cdc2e4202b416aa19693d1c3f
-#: ../../../src/ksp/doc/index.rst:61
-msgid "node ID"
-msgstr "ノードID"
-
-# 4d87667a7b744eec999819b399fee50c
-#: ../../../src/ksp/doc/index.rst:62
-msgid "edge ID (``0`` for the last row)"
-msgstr ""
-
-# baaba3dc621142bd8fc6b8ba32eb2b2e
-#: ../../../src/ksp/doc/index.rst:63
-msgid "cost to traverse from ``id2`` using ``id3``"
-msgstr ""
-
-# b585e07096f74b0389f8b7dffc969faa
-#: ../../../src/ksp/doc/index.rst:65
-msgid ""
-"KSP code base taken from http://code.google.com/p/k-shortest-paths/source."
-msgstr ""
-
-# 2d033ec25b09426c82d7bc27450b0e13
-#: ../../../src/ksp/doc/index.rst:69
-msgid "History"
-msgstr "歴史"
-
-# 2910d7995ec342b995c857c1e8ea0ac3
-#: ../../../src/ksp/doc/index.rst:70
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 0fb494088fa241d6a4aa5482217c2851
-#: ../../../src/ksp/doc/index.rst:74
-msgid "Examples"
-msgstr "例"
-
-# d3ea07b1c58a42ea9f68558e55eb90a0
-#: ../../../src/ksp/doc/index.rst:76
-msgid "Without ``reverse_cost``"
-msgstr "``reverse_cost``なしの場合"
-
-# 7c55b739634c4401b46c4014669d2896
-#: ../../../src/ksp/doc/index.rst:104
-msgid "With ``reverse_cost``"
-msgstr "``reverse_cost``ありの場合"
-
-# 2412b0b4ec044973a1c2304488a73b1a
-#: ../../../src/ksp/doc/index.rst:131
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 14d58e1d3a8f4723bb11ed549594cb26
-#: ../../../src/ksp/doc/index.rst:135
-msgid "See Also"
-msgstr "参照"
-
-# 73cf1bb94518468996cdd3ff6bf897be
-#: ../../../src/ksp/doc/index.rst:137
-msgid ":ref:`type_cost_result3`"
-msgstr ":ref:`type_cost_result3`"
-
-# 3dde120556744d3f9ce7d6e9b9f0c1ee
-#: ../../../src/ksp/doc/index.rst:138
-msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
-msgstr ""
diff --git a/doc/i18n/ja/LC_MESSAGES/src/trsp/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/trsp/doc/index.po
deleted file mode 100644
index 682ce8e..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/trsp/doc/index.po
+++ /dev/null
@@ -1,259 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-08-07 12:30+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 15b2085c08994c0bafb02ec924886b36
-#: ../../../src/trsp/doc/index.rst:13
-msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
-msgstr ""
-
-# 001ce231c65b42a19a62809e63a0b153
-#: ../../../src/trsp/doc/index.rst:23
-msgid "Name"
-msgstr "名前"
-
-# e7d332e28a5540d2af454386b4bf39e5
-#: ../../../src/trsp/doc/index.rst:25
-msgid ""
-"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
-msgstr ""
-
-# 9f0ad26664fc4d2aa44b49daf329cbcf
-#: ../../../src/trsp/doc/index.rst:29
-msgid "Synopsis"
-msgstr "概要"
-
-# 2d74de00ff7144f1a68f40ec98315004
-#: ../../../src/trsp/doc/index.rst:31
-msgid ""
-"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
-"can optionally take into account complicated turn restrictions like those "
-"found in real work navigable road networks. Performamnce wise it is nearly "
-"as fast as the A* search but has many additional features like it works with"
-" edges rather than the nodes of the network. Returns a set of "
-":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
-"make up a path."
-msgstr ""
-
-# 258764bba06c4ef58ac4b5f8fc99fa51
-#: ../../../src/trsp/doc/index.rst:47
-msgid "Description"
-msgstr "説明"
-
-# db4ead8b9b724ada9fcd352b21c13c47
-#: ../../../src/trsp/doc/index.rst:49
-msgid ""
-"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
-":ref:`shooting_star` in that you can specify turn restrictions."
-msgstr ""
-
-# f8c43b665915464c9bfc35604fd91aee
-#: ../../../src/trsp/doc/index.rst:51
-msgid ""
-"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
-"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
-"This makes adding turn restrictions to a road network much easier than "
-"trying to add them to Shooting Star where you had to ad the same edges "
-"multiple times if it was involved in a restriction."
-msgstr ""
-
-# b95a0195c5bd43caa2d6cfb1f998a956
-#: ../../../src/trsp/doc/index.rst:54
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "SQLのクエリーです。以下に続くカラムからなる行セットを返します:"
-
-# 580e965db4a1466da14357ff969e2429
-#: ../../../src/trsp/doc/index.rst:61
-msgid "``int4`` identifier of the edge"
-msgstr "エッジの識別子[``int4``]"
-
-# 1240ecd9b29e479ca8b980c6282c5182
-#: ../../../src/trsp/doc/index.rst:62
-msgid "``int4`` identifier of the source vertex"
-msgstr "``int4``型の始点ノードの識別子"
-
-# f155b6dee53749049cc6a9eac4126083
-#: ../../../src/trsp/doc/index.rst:63
-msgid "``int4`` identifier of the target vertex"
-msgstr "``int4``型の終点ノードの識別子"
-
-# 882a25b98f4f4c7cb2f288cf7c327c4a
-#: ../../../src/trsp/doc/index.rst:64
-msgid ""
-"``float8`` value, of the edge traversal cost. A negative cost will prevent "
-"the edge from being inserted in the graph."
-msgstr "``float8``型のエッジにかかる重み。負の重みはエッジがグラフに挿入されることを防ぎます。"
-
-# 0a3a626251a840ab96796ef2ab9b91c5
-#: ../../../src/trsp/doc/index.rst:65
-msgid ""
-"(optional) the cost for the reverse traversal of the edge. This is only used"
-" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
-"above remark about negative costs)."
-msgstr "(オプション) エッジの反対方向のコスト。この値は``directed``および``has_rcost``パラメータが``true``の場合のみ使用されます。(負のコストについては前述の通りです)"
-
-# 510dbeaa32914dc18ed3e6799281fbef
-#: ../../../src/trsp/doc/index.rst:67
-msgid "``int4`` **NODE id** of the start point"
-msgstr ""
-
-# ece6f31366044417b07933b2c817c5df
-#: ../../../src/trsp/doc/index.rst:68
-msgid "``int4`` **NODE id** of the end point"
-msgstr ""
-
-# 31ad6aa2c51741de8dbafceaf67d397a
-#: ../../../src/trsp/doc/index.rst:69
-msgid "``true`` if the graph is directed"
-msgstr "有向グラフの場合は``true``を指定"
-
-# 6605eca503604a6daa20167fcbdd05fa
-#: ../../../src/trsp/doc/index.rst:70
-msgid ""
-"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
-"will be used for the cost of the traversal of the edge in the opposite "
-"direction."
-msgstr "``true``の場合、SQLで生成される行セットの``reverse_cost``カラムは、エッジの逆方向にかかる重みとして使用されます。"
-
-# 332748df482046d7b70e9012364915e3
-#: ../../../src/trsp/doc/index.rst:72
-msgid ""
-"(optional) a SQL query, which should return a set of rows with the following"
-" columns:"
-msgstr ""
-
-# 936b80e377bd457081e14e36770ab130
-#: ../../../src/trsp/doc/index.rst:78
-msgid "``float8`` turn restriction cost"
-msgstr ""
-
-# d1715703f624412385536b88c78a32df
-#: ../../../src/trsp/doc/index.rst:79
-msgid "``int4`` target id"
-msgstr ""
-
-# 83a22871a9f6419190e4bf313f49c672
-#: ../../../src/trsp/doc/index.rst:80
-msgid ""
-"``text`` commar seperated list of edges in the reverse order of ``rule``"
-msgstr ""
-
-# d0f078a9c92348a9bc1e880a0835b24c
-#: ../../../src/trsp/doc/index.rst:82
-msgid ""
-"Another variant of TRSP allows to specify **EDGE id** of source and target "
-"together with a fraction to interpolate the position:"
-msgstr ""
-
-# 021daf08280643738cfc9e67f4fa6fce
-#: ../../../src/trsp/doc/index.rst:84
-msgid "``int4`` **EDGE id** of the start edge"
-msgstr ""
-
-# 6c0b782e2a2d4ee7aac26b031327b48d
-#: ../../../src/trsp/doc/index.rst:85
-msgid "``float8`` fraction of 1 defines the position on the start edge"
-msgstr ""
-
-# 4f60cd31727245739cba5b4be8840191
-#: ../../../src/trsp/doc/index.rst:86
-msgid "``int4`` **EDGE id** of the end edge"
-msgstr ""
-
-# 8a114786a737431f9d36f79718505b0c
-#: ../../../src/trsp/doc/index.rst:87
-msgid "``float8`` fraction of 1 defines the position on the end edge"
-msgstr ""
-
-# 164eff72cc834e76afafdb24fae73b05
-#: ../../../src/trsp/doc/index.rst:89
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ":ref:`type_cost_result` のセットを返します:"
-
-# f1e7b63cce7e45dca113b9c63b80531a
-#: ../../../src/trsp/doc/index.rst:91
-msgid "row sequence"
-msgstr "行の連番"
-
-# 9224c385fbc84c6fb16a5752bb0dcf0f
-#: ../../../src/trsp/doc/index.rst:92
-msgid "node ID"
-msgstr "ノードID"
-
-# 838eabec61db4ac1a64b9bb7b12a5bec
-#: ../../../src/trsp/doc/index.rst:93
-msgid "edge ID (``-1`` for the last row)"
-msgstr "エッジID (最終行は``-1``)"
-
-# dd4d4036ca89412ca65bb9dc36a98ff5
-#: ../../../src/trsp/doc/index.rst:94
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr "``id1``から``id2``を横断するコスト"
-
-# 3e879e6cbece4a27afe4738bdef1080b
-#: ../../../src/trsp/doc/index.rst:98
-msgid "History"
-msgstr "歴史"
-
-# 16b0789da1954e179858d593d9973be6
-#: ../../../src/trsp/doc/index.rst:99
-msgid "New in version 2.0.0"
-msgstr ""
-
-# 36dc0630c4e04859ba0a41aa3da19ed6
-#: ../../../src/trsp/doc/index.rst:103
-msgid "Examples"
-msgstr "例"
-
-# 0c40d66ced8b4b48914b3bb328c5f10e
-#: ../../../src/trsp/doc/index.rst:105
-msgid "Without turn restrictions"
-msgstr ""
-
-# 456ae3d3abc547978bd147c884275ac6
-#: ../../../src/trsp/doc/index.rst:126
-msgid "With turn restrictions"
-msgstr ""
-
-# 2541f0dba78f4dfe93fcda086ddeba34
-#: ../../../src/trsp/doc/index.rst:128
-msgid ""
-"Turn restrictions require additional information, which can be stored in a "
-"separate table:"
-msgstr ""
-
-# 4d9e1ab740a44fe990829e06dcc32f65
-#: ../../../src/trsp/doc/index.rst:144
-msgid "Then a query with turn restrictions is created as:"
-msgstr ""
-
-# 61dd0262b80b4db58f637fe5d2dd1ae8
-#: ../../../src/trsp/doc/index.rst:167
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 48bf89e209cc4518904b1b99e1a89f99
-#: ../../../src/trsp/doc/index.rst:171
-msgid "See Also"
-msgstr "参照"
-
-# 7988e08198b04952bc5a1cb22cce310f
-#: ../../../src/trsp/doc/index.rst:173
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
diff --git a/doc/i18n/ja/LC_MESSAGES/src/tsp/doc/index.po b/doc/i18n/ja/LC_MESSAGES/src/tsp/doc/index.po
deleted file mode 100644
index fc74846..0000000
--- a/doc/i18n/ja/LC_MESSAGES/src/tsp/doc/index.po
+++ /dev/null
@@ -1,354 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (ec59fc1 develop)
-# This file is distributed under the same license as the pgRouting package.
-#
-# Translators:
-# cvvergara, 2013
-# sanak <geosanak at gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: Documentation\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-22 13:52\n"
-"PO-Revision-Date: 2013-09-20 14:14+0000\n"
-"Last-Translator: Daniel Kastl\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/pgrouting/language/ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-# 588bb56f073f49f89c741579fbc2c17c
-#: ../../../src/tsp/doc/index.rst:13
-msgid "pgr_tsp - Traveling Sales Person"
-msgstr ""
-
-# f69daf53ba3c47ca846fbcbbcf6aa25d
-#: ../../../src/tsp/doc/index.rst:23
-msgid "Name"
-msgstr "名前"
-
-# 5ccbfce91c604bac96d73fdbc656f675
-#: ../../../src/tsp/doc/index.rst:25
-msgid ""
-"``pgr_tsp`` - Returns the best route from a start node via a list of nodes."
-msgstr ""
-
-# cd69b4b6495b448fa23e10806d8cd704
-#: ../../../src/tsp/doc/index.rst:26
-msgid ""
-"``pgr_tsp`` - Returns the best route order when passed a disance matrix."
-msgstr ""
-
-# eee8057e1f874582a8d82dbf95c33b83
-#: ../../../src/tsp/doc/index.rst:27
-msgid ""
-"``pgr_makeDistanceMatrix`` - Returns a Eucleadian distance Matrix from the "
-"points provided in the sql result."
-msgstr ""
-
-# c0ecbed749044ceea6ac67da6a92e851
-#: ../../../src/tsp/doc/index.rst:31
-msgid "Synopsis"
-msgstr "概要"
-
-# bccf8e0d00d545fbb53db8de741e3629
-#: ../../../src/tsp/doc/index.rst:33
-msgid ""
-"The travelling salesman problem (TSP) or travelling salesperson problem asks"
-" the following question: Given a list of cities and the distances between "
-"each pair of cities, what is the shortest possible route that visits each "
-"city exactly once and returns to the origin city? This algoritm uses "
-"simulated annealing to return a high quality approximate solution. Returns a"
-" set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows,"
-" that make up a path."
-msgstr ""
-
-# 4817fee0103a41c4816125ab5b8e50c9
-#: ../../../src/tsp/doc/index.rst:41
-msgid ""
-"Returns a set of (seq integer, id1 integer, id2 integer, cost float8) that "
-"is the best order to visit the nodes in the matrix. ``id1`` is the index "
-"into the distance matrix. ``id2`` is the point id from the sql."
-msgstr ""
-
-# d81ab41209864a73a7ffa72604da479d
-#: ../../../src/tsp/doc/index.rst:43
-msgid ""
-"If no ``end_id`` is supplied or it is -1 or equal to the start_id then the "
-"TSP result is assumed to be a circluar loop returning back to the start. If "
-"``end_id`` is supplied then the route is assumed to start and end the the "
-"designated ids."
-msgstr ""
-
-# 50853fe7ce3a4230ba1ad32e1820ff86
-#: ../../../src/tsp/doc/index.rst:52
-msgid "Description"
-msgstr "説明"
-
-# 5c75019d15bb43c39560772bc3ee4607
-#: ../../../src/tsp/doc/index.rst:55
-msgid "With Euclidean distances"
-msgstr ""
-
-# 66a3e0216d3948b082421f130af849fc
-#: ../../../src/tsp/doc/index.rst:56
-msgid ""
-"The TSP solver is based on ordering the points using straight line "
-"(euclidean) distance [#f0]_ between nodes. The implementation is using an "
-"approximation algorithm that is very fast. It is not an exact solution, but "
-"it is guaranteed that a solution is returned after certain number of "
-"iterations."
-msgstr ""
-
-# 7b0c0aa5e05b441ea75bea14ed4902cd
-#: ../../../src/tsp/doc/index.rst:58
-msgid ""
-"a SQL query, which should return a set of rows with the following columns:"
-msgstr "SQLのクエリーです。以下に続くカラムからなる行セットを返します:"
-
-# 370960d08a674040ba2f83ed085dbb48
-#: ../../../src/tsp/doc/index.rst:64
-msgid "``int4`` identifier of the vertex"
-msgstr ""
-
-# 041d921890f847d1bcb77251f630f8d5
-#: ../../../src/tsp/doc/index.rst:65
-msgid "``float8`` x-coordinate"
-msgstr ""
-
-# 8662fbcf22f74a82900515c839683881
-#: ../../../src/tsp/doc/index.rst:66
-msgid "``float8`` y-coordinate"
-msgstr ""
-
-# c71cd39ce3cf4e3e9301579f9a596cdb
-#: ../../../src/tsp/doc/index.rst:68
-msgid "``int4`` id of the start point"
-msgstr "``int4``型の始点ノードのID"
-
-# 5165a6a173194137bb498d88e0957b35
-#: ../../../src/tsp/doc/index.rst:69
-msgid ""
-"``int4`` id of the end point, This is *OPTIONAL*, if include the route is "
-"optimized from start to end, otherwise it is assumed that the start and the "
-"end are the same point."
-msgstr ""
-
-# d73e6887338e4da3a107b753d970eb83
-#: ../../../src/tsp/doc/index.rst:72
-msgid "The function returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-# 6a00ce9fe1e84a708606d26b563355af
-# c113028794ef4a08a59271625c0ae721
-#: ../../../src/tsp/doc/index.rst:74 ../../../src/tsp/doc/index.rst:107
-msgid "row sequence"
-msgstr "行の連番"
-
-# 486fb735dda64593ba3d2773c140d01f
-#: ../../../src/tsp/doc/index.rst:75
-msgid "internal index to the distance matric"
-msgstr ""
-
-# 47f9555a7ecb4013a9b7b1744788a432
-#: ../../../src/tsp/doc/index.rst:76
-msgid "``id`` of the node"
-msgstr ""
-
-# 879b651101634a9fa1850e585291b13d
-#: ../../../src/tsp/doc/index.rst:77
-msgid "cost to traverse from the current node to the next node."
-msgstr ""
-
-# 1219dbad1dbc483e8c66e492b2ddbb85
-#: ../../../src/tsp/doc/index.rst:80
-msgid "Create a distance matrix"
-msgstr ""
-
-# 0c6c6e0816e1404798c896777ad941f2
-#: ../../../src/tsp/doc/index.rst:81
-msgid ""
-"For users that need a distance matrix we have a simple function that takes "
-"SQL in ``sql`` as described above and returns a record with ``dmatrix`` and "
-"``ids``."
-msgstr ""
-
-# a9ebba1a8cbb4af9a325f5ebcf4c9c50
-#: ../../../src/tsp/doc/index.rst:87
-msgid "The function returns a record of ``dmatrix``, ``ids``:"
-msgstr ""
-
-# 79831990a066442dbf3d4f24cebf6aef
-#: ../../../src/tsp/doc/index.rst:89
-msgid "``float8[][]`` a symeteric Euclidean distance matrix based on ``sql``."
-msgstr ""
-
-# afbd6f830d5c4ab2847548f86f90dca1
-#: ../../../src/tsp/doc/index.rst:90
-msgid ""
-"``integer[]`` an array of ids as they are ordered in the distance matrix."
-msgstr ""
-
-# f0b8169b552646f980bd6b7e0e4b580c
-#: ../../../src/tsp/doc/index.rst:94
-msgid "With distance matrix"
-msgstr ""
-
-# e50bb0a665844d7682d3a1b216adb70e
-#: ../../../src/tsp/doc/index.rst:95
-msgid ""
-"For users, that do not want to use Euclidean distances, we also provode the "
-"ability to pass a distance matrix that we will solve and return an ordered "
-"list of nodes for the best order to visit each. It is up to the user to "
-"fully populate the distance matrix."
-msgstr ""
-
-# 900d7d9a9cfe4f48a183120d63a6b5fb
-#: ../../../src/tsp/doc/index.rst:97
-msgid "``float[][]`` distance matrix of points"
-msgstr ""
-
-# ffe889182e9b49e48573a830538e2f76
-#: ../../../src/tsp/doc/index.rst:98
-msgid "``int4`` index of the start point"
-msgstr ""
-
-# 7ff184ff9d034484941644d3528f9b11
-#: ../../../src/tsp/doc/index.rst:99
-msgid "``int4`` (optional) index of the end node"
-msgstr ""
-
-# a7886e5620ad48308a92c602d785b979
-#: ../../../src/tsp/doc/index.rst:101
-msgid ""
-"The ``end`` node is an optional parameter, you can just leave it out if you "
-"want a loop where the ``start`` is the depot and the route returns back to "
-"the depot. If you include the ``end`` parameter, we optimize the path from "
-"``start`` to ``end`` and minimize the distance of the route while include "
-"the remaining points."
-msgstr ""
-
-# 3328187fb6f24c06bd2ade2fb9daff6c
-#: ../../../src/tsp/doc/index.rst:103
-msgid ""
-"The distance matrix is a multidimensional `PostgreSQL array type "
-"<http://www.postgresql.org/docs/9.1/static/arrays.html>`_ that must be ``N x"
-" N`` in size."
-msgstr ""
-
-# 1768ea2352234c129198dbacd1452e65
-#: ../../../src/tsp/doc/index.rst:105
-msgid "The result will be N records of ``[ seq, id ]``:"
-msgstr ""
-
-# f8e56b07da754f4396ccb1daa52b8213
-#: ../../../src/tsp/doc/index.rst:108
-msgid "index into the matrix"
-msgstr ""
-
-# 700ed687dfd24327b5866cb91007c0ed
-#: ../../../src/tsp/doc/index.rst:112
-msgid "Footnotes"
-msgstr ""
-
-# bae6c65f712c4ff9b0fd388153cf42f7
-#: ../../../src/tsp/doc/index.rst:113
-msgid ""
-"There was some thought given to pre-calculating the driving distances "
-"between the nodes using Dijkstra, but then I read a paper (unfortunately I "
-"don't remember who wrote it), where it was proved that the quality of TSP "
-"with euclidean distance is only slightly worse than one with real distance "
-"in case of normal city layout. In case of very sparse network or rivers and "
-"bridges it becomes more inaccurate, but still wholly satisfactory. Of course"
-" it is nice to have exact solution, but this is a compromise between quality"
-" and speed (and development time also). If you need a more accurate "
-"solution, you can generate a distance matrix and use that form of the "
-"function to get your results."
-msgstr ""
-
-# aeabcb34ceb245ac8c9c4dd783bae696
-#: ../../../src/tsp/doc/index.rst:117
-msgid "History"
-msgstr "履歴"
-
-# 83259e3ddfad4bc8a503e3daa04b99d5
-#: ../../../src/tsp/doc/index.rst:118
-msgid "Renamed in version 2.0.0"
-msgstr "バージョン 2.0.0 でリネームされました"
-
-# 537d6a4a4cc64451857537f64823ac72
-#: ../../../src/tsp/doc/index.rst:119
-msgid "GAUL dependency removed in version 2.0.0"
-msgstr ""
-
-# 51493667159c4c6395a48ada45bc3ddb
-#: ../../../src/tsp/doc/index.rst:123
-msgid "Examples"
-msgstr "例"
-
-# 7c2ef386cc424fe5a5781147e3ea4cc2
-#: ../../../src/tsp/doc/index.rst:125
-msgid ""
-"Using SQL parameter (all points from the table, atarting from 6 and ending "
-"at 5). We have listed two queries in this example, the first might vary from"
-" system to system because there are multiple equivalent answers. The second "
-"query should be stable in that the length optimal route should be the same "
-"regardless of order."
-msgstr ""
-
-# 41662adbab25461784b154100646e929
-#: ../../../src/tsp/doc/index.rst:159
-msgid "Using distance matrix (A loop starting from 1)"
-msgstr ""
-
-# 936788f1e0c2469ba7d71161a6320815
-#: ../../../src/tsp/doc/index.rst:161
-msgid ""
-"When using just the start node you are getting a loop that starts with 1, in"
-" this case, and travels through the other nodes and is implied to return to "
-"the start node from the last one in the list. Since this is a circle there "
-"are at least two possible paths, one clockwise and one counter-clockwise "
-"that will have the same length and be equall valid. So in the following "
-"example it is also possible to get back a sequence of ids = {1,0,3,2} "
-"instead of the {1,2,3,0} sequence listed below."
-msgstr ""
-
-# 95907dec9016432f8b75f45be9e231c3
-#: ../../../src/tsp/doc/index.rst:175
-msgid "Using distance matrix (Starting from 1, ending at 2)"
-msgstr ""
-
-# c376ad2787cd4f4abf9764fbe86699b2
-#: ../../../src/tsp/doc/index.rst:189
-msgid ""
-"Using the vertices table edge_table_vertices_pgr generated by "
-":ref:`pgr_create_topology`. Again we have two queries where the first might "
-"vary and the second is based on the overal path length."
-msgstr ""
-
-# c3d22bacc29d477ca8c5a118ddedb8f4
-#: ../../../src/tsp/doc/index.rst:226
-msgid "The queries use the :ref:`sampledata` network."
-msgstr "上記クエリは :ref:`sampledata` のネットワークを使用しています。"
-
-# 4f5c93447689413e86e9ed2751abff8f
-#: ../../../src/tsp/doc/index.rst:230
-msgid "See Also"
-msgstr "参照"
-
-# 5f49eba1079b40d297bf0872ae69fe06
-#: ../../../src/tsp/doc/index.rst:232
-msgid ":ref:`type_cost_result`"
-msgstr ":ref:`type_cost_result`"
-
-# 81d591e953334f24b72e9680e2ae42f9
-#: ../../../src/tsp/doc/index.rst:233
-msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
-msgstr "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
-
-# 2c62ab4de73248479f416573176f0c4a
-#: ../../../src/tsp/doc/index.rst:234
-msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
-msgstr ""
diff --git a/doc/i18n/pot/doc/index.pot b/doc/i18n/pot/doc/index.pot
deleted file mode 100644
index e924c46..0000000
--- a/doc/i18n/pot/doc/index.pot
+++ /dev/null
@@ -1,318 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../index.rst:13
-# 3114b591a3e34bcc8632fdb1b4676f09
-msgid "Table of Contents"
-msgstr ""
-
-#: ../../index.rst:15
-# 7a873a7437d54575bea37f68a355139c
-msgid "pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ geospatial database to provide geospatial routing and other network analysis functionality."
-msgstr ""
-
-#: ../../index.rst:17
-# 046c3fad7d4b4c018145562e387e5e76
-msgid "This is the manual for pgRouting |release|."
-msgstr ""
-
-#: ../../index.rst:23
-# 36679e74a75d477f9cf0cf7116981c34
-msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel free to use this material any way you like, but we ask that you attribute credit to the pgRouting Project and wherever possible, a link back to http://pgrouting.org. For other licenses used in pgRouting see the :ref:`license` page."
-msgstr ""
-
-#: ../../index.rst:27
-# 2a1ba0adb28e4d95861f3fc9f55cd4b7
-msgid "General"
-msgstr ""
-
-#: ../../index.rst:40
-# 47fb20ffa3fd41a3a77332fdac2e56d2
-msgid "Tutorial"
-msgstr ""
-
-#: ../../index.rst:42
-# 49767fd9b10947cb84b9dc4a1e11aafe
-msgid ":ref:`Tutorial <tutorial1>`"
-msgstr ""
-
-#: ../../index.rst:44
-# e294e6eafbf342e9b5d76a3955d41fd3
-msgid ":ref:`Getting started <tutorial>`"
-msgstr ""
-
-#: ../../index.rst:45
-# 792045603d8747cea6194d979fafe69e
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-#: ../../index.rst:46
-# 8679e75425304920a8cd234c69946c0e
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-#: ../../index.rst:47
-# 11bfd5f304664dc49cf6f278654dfe4d
-msgid ":ref:`custom_query` that is used in the routing algorithms."
-msgstr ""
-
-#: ../../index.rst:48
-# e42d9dc6b64f4e4f9b8e90690ecf5161
-msgid ":ref:`performance` to improve your performance."
-msgstr ""
-
-#: ../../index.rst:49
-# 609a30fd8c8644a6becc0f31f020446d
-msgid ":ref:`custom_wrapper` to colaborate with a wrapper."
-msgstr ""
-
-#: ../../index.rst:50
-# b5eb83961e4e47fe93c2afa2323169ed
-msgid ":ref:`recipes` to colaborate with a recipe."
-msgstr ""
-
-#: ../../index.rst:51
-# b3906b783d2c43cd815e3860b0d0d776
-msgid ":ref:`sampledata` that is used in the examples of this manual."
-msgstr ""
-
-#: ../../index.rst:61
-# b75d732ac8bd4709882c5760d01f152c
-msgid "For a more complete introduction how to build a routing application read the `pgRouting Workshop <http://workshop.pgrouting.org>`_."
-msgstr ""
-
-#: ../../index.rst:65
-# 83bde3c72f684a568af0fceb3ef34dff
-msgid "Data Types"
-msgstr ""
-
-#: ../../index.rst:67
-# a395fe9f7cd24298ad5f0e14b7d2bb20
-msgid ":ref:`data_types`"
-msgstr ""
-
-#: ../../index.rst:69
-# 369cef561501444e9d5e6f337a4d5c92
-msgid ":ref:`type_cost_result` - A set of records to describe a path result with cost attribute."
-msgstr ""
-
-#: ../../index.rst:70
-# d4b7f05968f442a99e97dc3c3e70c4fd
-msgid ":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a path result with cost attribute."
-msgstr ""
-
-#: ../../index.rst:71
-# f2163918182048f5b92023c33a76ca1a
-msgid ":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a path result with geometry attribute."
-msgstr ""
-
-#: ../../index.rst:80
-# a1d2d28381b24c508232a6633040cd3c
-msgid "Functions reference"
-msgstr ""
-
-#: ../../index.rst:82
-# c6671e9d478d49af87a1048487a9716a
-msgid ":ref:`topology_functions`"
-msgstr ""
-
-#: ../../index.rst:84
-# de5a824ab17b49d7b09df5f4e67f16b6
-msgid ":ref:`pgr_create_topology` - to create a topology based on the geometry."
-msgstr ""
-
-#: ../../index.rst:85
-# 4293e3c5e8424c1da1c99a0a718e8435
-msgid ":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on the source and target information."
-msgstr ""
-
-#: ../../index.rst:86
-# b8d498e24ed745ecaffb840b72f12501
-msgid ":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge table."
-msgstr ""
-
-#: ../../index.rst:87
-# 38b8e935c37c4012a9ab5be2067301ba
-msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
-msgstr ""
-
-#: ../../index.rst:88
-# 2205760d07b54531aaef8d1c1327d59c
-msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
-msgstr ""
-
-#: ../../index.rst:90
-# 195226e31aa04c81b84286c4cf37a5a2
-msgid ":ref:`routing_functions`"
-msgstr ""
-
-#: ../../index.rst:92
-# 0ec03dfd7213415b9cbe7602cea96b63
-msgid ":ref:`pgr_apspJohnson <pgr_apsp_johnson>`- All Pairs Shortest Path, Johnson’s Algorithm"
-msgstr ""
-
-#: ../../index.rst:93
-# 5acd44a27ec34adb8e0f486881eb72d9
-msgid ":ref:`pgr_apspWarshall<pgr_apsp_warshall>` - All Pairs Shortest Path, Floyd-Warshall Algorithm"
-msgstr ""
-
-#: ../../index.rst:94
-# 0d898e0df22d4b9fafbb487b5d0e9175
-msgid ":ref:`pgr_astar<pgr_astar>` - Shortest Path A*"
-msgstr ""
-
-#: ../../index.rst:95
-# 75133541e029463287e8007e84629182
-msgid ":ref:`pgr_bdAstar<bd_astar>` - Bi-directional A* Shortest Path"
-msgstr ""
-
-#: ../../index.rst:96
-# d6182da49f974c5484c3aead923fd700
-msgid ":ref:`pgr_bdDijkstra<bd_dijkstra>` - Bi-directional Dijkstra Shortest Path"
-msgstr ""
-
-#: ../../index.rst:97
-# 50e23fa113d2453eb51a73d72133cce8
-msgid ":ref:`pgr_dijkstra<pgr_dijkstra>` - Shortest Path Dijkstra"
-msgstr ""
-
-#: ../../index.rst:98
-# d167195e03cf4f13ae09ae9db49a05e7
-msgid ":ref:`pgr_kDijkstra<pgr_kdijkstra>` - Mutliple destination Shortest Path Dijkstra"
-msgstr ""
-
-#: ../../index.rst:99
-# 23ccb5f1314d46719c852fde9864c1cf
-msgid ":ref:`pgr_ksp<ksp>` - K-Shortest Path"
-msgstr ""
-
-#: ../../index.rst:100
-# f3e5f19093284915a7c07e06552e3f94
-msgid ":ref:`pgr_tsp<pgr_tsp>` - Traveling Sales Person"
-msgstr ""
-
-#: ../../index.rst:101
-# 7a18afc4bb844b8ba796559021ca5e8f
-msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
-msgstr ""
-
-#: ../../index.rst:103
-# 753d19cda55a4ea0a16c5ca15b3186ce
-msgid ":ref:`dd_index`"
-msgstr ""
-
-#: ../../index.rst:105
-# dd0ad741445e46f182f227bf9a5d4eaf
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-#: ../../index.rst:106
-# 8239f5b5033f4c5182c6846ef9d6604f
-msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
-msgstr ""
-
-#: ../../index.rst:107
-# 307778e9fa794923a05b5d3782acc85d
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
-
-#: ../../index.rst:110
-# 0c385d08b81a4d888e49ecd739bf1860
-msgid ":ref:`pgr_get_column_name` - to get the name of the column as is stored in the postgres administration tables."
-msgstr ""
-
-#: ../../index.rst:111
-# fc6a6440521e42e097e4adcba17e8e1f
-msgid ":ref:`pgr_get_table_name` - to retrieve the name of the table as is stored in the postgres administration tables."
-msgstr ""
-
-#: ../../index.rst:112
-# c544d6984d0b4ba7a7ceb1c053606d7b
-msgid ":ref:`pgr_is_column_indexed` - to check if the column is indexed."
-msgstr ""
-
-#: ../../index.rst:113
-# a544a1986e2e4c03b3a4611dd5b6a1c9
-msgid ":ref:`pgr_is_column_in_table` - to check only for the existance of the column."
-msgstr ""
-
-#: ../../index.rst:114
-# 96af6a0330594966bbdea86f35b8405d
-msgid ":ref:`pgr_point_to_id` -to insert/get the id of the inserted point in a vertices table."
-msgstr ""
-
-#: ../../index.rst:115
-# a92c8f120ec5487597d80728d05e5978
-msgid ":ref:`pgr_quote_ident` - to quotes the input text to be used as an identifier in an SQL statement string."
-msgstr ""
-
-#: ../../index.rst:116
-# e2d96242a9564a2db5d992b2f5c69be7
-msgid ":ref:`pgr_version` - to get pgRouting's version information."
-msgstr ""
-
-#: ../../index.rst:117
-# bcb3172f60ab43ca86d719778f75a3bc
-msgid ":ref:`pgr_versionless` - to compare two version numbers."
-msgstr ""
-
-#: ../../index.rst:118
-# 35ac2e5b13ec4c20849e57c180e92d8c
-msgid ":ref:`pgr_start_point` - to get the start point of a (multi)linestring."
-msgstr ""
-
-#: ../../index.rst:119
-# fc2e800cd6a0425d9d638fe33e490468
-msgid ":ref:`pgr_end_point` - to get the end point of a (multi)linestring."
-msgstr ""
-
-#: ../../index.rst:138
-# dd55c9e2b877489b86fba4084df5f7ba
-msgid "Developer"
-msgstr ""
-
-#: ../../index.rst:145
-# fadd1dc90eba4ec6be0b4466f523da31
-msgid ":ref:`change_log`"
-msgstr ""
-
-#: ../../index.rst:147
-# 17abb9d0a9f14ebda7042d8d554da58c
-msgid ":ref:`changelog_2_0`"
-msgstr ""
-
-#: ../../index.rst:148
-# a03fca6a9cd24cf19ed79e9873ab6d22
-msgid ":ref:`changelog_1_x`"
-msgstr ""
-
-#: ../../index.rst:157
-# 98ece8ca8a064845a5bd97957b61c7b5
-msgid "Indices and tables"
-msgstr ""
-
-#: ../../index.rst:158
-# 2b70d2db546341f0bbba1a4da5cb0f83
-msgid ":ref:`genindex`"
-msgstr ""
-
-#: ../../index.rst:159
-# 112cec8d59494476a4e1211283a1f3ac
-msgid ":ref:`search`"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/index_man.pot b/doc/i18n/pot/doc/index_man.pot
deleted file mode 100644
index 65c5be2..0000000
--- a/doc/i18n/pot/doc/index_man.pot
+++ /dev/null
@@ -1,53 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../index_man.rst:13
-# bcb490abce784770af97b32d34aa0afe
-msgid "pgRouting Reference"
-msgstr ""
-
-#: ../../index_man.rst:15
-# c974855aa66744e59dcc86dd78caa667
-msgid "pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ geospatial database to provide geospatial routing and other network analysis functionality."
-msgstr ""
-
-#: ../../index_man.rst:22
-# f1484b7dfad94f9581d74ad9e93a78b6
-msgid "pgRouting provides several :ref:`common functions <common>`:"
-msgstr ""
-
-#: ../../index_man.rst:36
-# d29dd3961cbc43be8f0de1be3a72a388
-msgid "pgRouting defines a few :ref:`custom data types <data_types>`:"
-msgstr ""
-
-#: ../../index_man.rst:50
-# d07315699da14e0a9d073b22236c43e2
-msgid "pgRouting functions in alphabetical order:"
-msgstr ""
-
-#: ../../index_man.rst:66
-# 70b33ac19c574d5e9ec11adeaa460c23
-msgid "If pgRouting is compiled with \"Driving Distance\" enabled:"
-msgstr ""
-
-#: ../../index_man.rst:75
-# e18cd5a6bd954425ab5f16172df9382d
-msgid "Some functions from previous releases may have been removed."
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/changelog/1_x.pot b/doc/i18n/pot/doc/src/changelog/1_x.pot
deleted file mode 100644
index 651fcf3..0000000
--- a/doc/i18n/pot/doc/src/changelog/1_x.pot
+++ /dev/null
@@ -1,151 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/changelog/1_x.rst:13
-# 34774aa2085c4852a5ab3de45ae58a65
-msgid "pgRouting 1.x Release Notes"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:15
-# ca2f0467090b4d3f82784a2c1672b51b
-msgid "The following release notes have been copied from the previous ``RELEASE_NOTES`` file and are kept as a reference. Release notes starting with :ref:`version 2.0.0 <changelog_2_0>` will follow a different schema."
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:20
-# 54ebb1e4d2e740589b905457a968ed46
-msgid "Changes for release 1.05"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:22
-#: ../../src/changelog/1_x.rst:29
-#: ../../src/changelog/1_x.rst:50
-#: ../../src/changelog/1_x.rst:57
-# 9161110780584894806569a3861fcd1a
-# 27415461221243e988578c3a080687d5
-# c81ea5229d1f4ca5b27479f985f98046
-# e894abae35ce440e80f2af3a04626ea9
-msgid "Bugfixes"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:26
-# b55351591b104ec68c5bfcf5d07ddfac
-msgid "Changes for release 1.03"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:28
-# f6335f292d414bfea51f992ffb2161ba
-msgid "Much faster topology creation"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:33
-# e7e0a5c95783468bb073e2a686825f92
-msgid "Changes for release 1.02"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:35
-#: ../../src/changelog/1_x.rst:42
-# afdee266a11d496fa47a526dba3e09ad
-# cb123220760844328a0b74b150248e17
-msgid "Shooting* bugfixes"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:36
-# d48489e5d2074fc8b1e1d6e77a53b419
-msgid "Compilation problems solved"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:40
-# cd5b4b1fece84e0db67f340dc585a59b
-msgid "Changes for release 1.01"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:46
-# dfb9d10fd3124a948a241864b4f79a6f
-msgid "Changes for release 1.0"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:48
-# e38837733b7948eaaea37352ea7b5f8e
-msgid "Core and extra functions are separated"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:49
-# b77a8ae8166542b790bb3b1982a45ee3
-msgid "Cmake build process"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:54
-# 94cb6f4849ef48d992527d1f6a3bbd8a
-msgid "Changes for release 1.0.0b"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:56
-# 1f70b3f40311437985bc67871dc086b7
-msgid "Additional SQL file with more simple names for wrapper functions"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:61
-# 4c1e8e6daa90483f9042750a1d8435ae
-msgid "Changes for release 1.0.0a"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:63
-# ad9d7891b91640b6a264925cf0d909c6
-msgid "Shooting* shortest path algorithm for real road networks"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:64
-# a96846b0c9094a13901505c774e8edf3
-msgid "Several SQL bugs were fixed"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:68
-# 2bf9307d0e234f6f815c588dd7112fe9
-msgid "Changes for release 0.9.9"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:70
-# 54d2820e40d6419e9ea194ab5e8ad33c
-msgid "PostgreSQL 8.2 support"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:71
-# 1de3ab2c1f4b43e980610120be8d9d82
-msgid "Shortest path functions return empty result if they couldn’t find any path"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:75
-# 590e3d4c9f994fc2872eff0695a24290
-msgid "Changes for release 0.9.8"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:77
-# 1f81e073a0f8495ea5d4443b7a4e5f65
-msgid "Renumbering scheme was added to shortest path functions"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:78
-# ea9741e485de481baf4581ced2d6fbdb
-msgid "Directed shortest path functions were added"
-msgstr ""
-
-#: ../../src/changelog/1_x.rst:79
-# c902f1b39b0240f99913e6370633bafd
-msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/changelog/2_0.pot b/doc/i18n/pot/doc/src/changelog/2_0.pot
deleted file mode 100644
index 860cab5..0000000
--- a/doc/i18n/pot/doc/src/changelog/2_0.pot
+++ /dev/null
@@ -1,148 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/changelog/2_0.rst:13
-# a715879e688945d0a6861bd9140c950b
-msgid "pgRouting 2.0 Release Notes"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:15
-# 91b9abe3dfe5419d85dcba21dd72768e
-msgid "With the release of pgRouting 2.0 the library has abandoned backwards compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. We did this so we could restructure pgRouting, standardize the function naming, and prepare the project for future development. As a result of this effort, we have been able to simplify pgRouting, add significant new functionality, integrate documentation and testing into the source tree and make it easier for multiple developers to make contribution."
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:17
-# 0ed2708f626c458e8cd7a754cc290bee
-msgid "For important changes see the following release notes. To see the full list of changes check the list of `Git commits <https://github.com/pgRouting/pgrouting/commits>`_ on Github."
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:28
-# 134b54d9dc28424186d8c764b65a64cd
-msgid "Changes for 2.0.0"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:30
-# bcec99c0b1564dde8484f7bcfcab58fd
-msgid "Graph Analytics - tools for detecting and fixing connection some problems in a graph"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:31
-# 152b4d4ec49c4de8b45e75aa69aab982
-msgid "A collection of useful utility functions"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:32
-# e8085889ef4441c29c57d6717560dfba
-msgid "Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:33
-# ea0d25e8d5ef4758b69cfff801f79014
-msgid "Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, pgr_bdDijkstra)"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:34
-# 60e72f802c0c42bfa1d0e03b910fb2a6
-msgid "One to many nodes search (pgr_kDijkstra)"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:35
-# 3c96500d421c4c57886cb99b260341ae
-msgid "K alternate paths shortest path (pgr_ksp)"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:36
-# 197a5368f7a64d23ac1174757e001245
-msgid "New TSP solver that simplifies the code and the build process (pgr_tsp), dropped \"Gaul Library\" dependency"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:37
-# f43a9a4f30384f5d84c9c01b0e3bcfa9
-msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:38
-# e170b7e329464668ad9056078feaf9fb
-msgid "Dropped support for Shooting Star"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:39
-# 6657465c4bff46eead7e2f624ab9784f
-msgid "Built a test infrastructure that is run before major code changes are checked in"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:40
-# 1ec3c1c7e92344fa98b966301fd7908f
-msgid "Tested and fixed most all of the outstanding bugs reported against 1.x that existing in the 2.0-dev code base."
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:41
-# b0209200646b4cc99f00cc60383c4dcd
-msgid "Improved build process for Windows"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:42
-# 7fc2fc8bea044f54a63f96bbfef9e2e5
-msgid "Automated testing on Linux and Windows platforms trigger by every commit"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:43
-# 4e500be4dfdf48559ce8509625cc990c
-msgid "Modular library design"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:44
-# cf70e3dec74f4f6dbd9fa0c980eeb380
-msgid "Compatibility with PostgreSQL 9.1 or newer"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:45
-# be4611c8b8694e29ba749c111d3289b4
-msgid "Compatibility with PostGIS 2.0 or newer"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:46
-# 634a9f4e6a3b478cb42717a3e7bca991
-msgid "Installs as PostgreSQL EXTENSION"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:47
-# 382bb46ee7a44e5a87985e1ffdc7c57f
-msgid "Return types refactored and unified"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:48
-# d17f7b7db0ee4030bdcba8819d0cae9a
-msgid "Support for table SCHEMA in function parameters"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:49
-# 86455c26d4e3493a910fa8309f9f21ec
-msgid "Support for ``st_`` PostGIS function prefix"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:50
-# 98da605c73074436ac641ea1eb74ba37
-msgid "Added ``pgr_`` prefix to functions and types"
-msgstr ""
-
-#: ../../src/changelog/2_0.rst:51
-# ca139831bcab4d5290685d4ba3a39bba
-msgid "Better documentation: http://docs.pgrouting.org"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/changelog/index.pot b/doc/i18n/pot/doc/src/changelog/index.pot
deleted file mode 100644
index 768bff5..0000000
--- a/doc/i18n/pot/doc/src/changelog/index.pot
+++ /dev/null
@@ -1,33 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/changelog/index.rst:13
-# f1cec6fbd88145139cbdf844035c461e
-msgid "Release Notes"
-msgstr ""
-
-#: ../../src/changelog/index.rst:15
-# 469fe2c4cf14420887968fb244b89641
-msgid ":ref:`changelog_2_0`"
-msgstr ""
-
-#: ../../src/changelog/index.rst:16
-# 4a9469338e814f81aaef87cd6efcb2c5
-msgid ":ref:`changelog_1_x`"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/developer/discontinued.pot b/doc/i18n/pot/doc/src/developer/discontinued.pot
deleted file mode 100644
index 7fe1e7d..0000000
--- a/doc/i18n/pot/doc/src/developer/discontinued.pot
+++ /dev/null
@@ -1,48 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/developer/discontinued.rst:13
-# 7490293fd85e4e4e98e4da73f4d33c48
-msgid "Discontinued Functions"
-msgstr ""
-
-#: ../../src/developer/discontinued.rst:15
-# c03453e9026146b0bc840f71521310c9
-msgid "Especially with new major releases functionality may change and functions may be discontinued for various reasons. Functionality that has been discontinued will be listed here."
-msgstr ""
-
-#: ../../src/developer/discontinued.rst:22
-# b4716d2a622d4da4832313344d6d314d
-msgid "Shooting Star algorithm"
-msgstr ""
-
-#: ../../src/developer/discontinued.rst:24
-# 67a2d7fa801d4041ad839993dedad031
-msgid "Removed with 2.0.0"
-msgstr ""
-
-#: ../../src/developer/discontinued.rst:25
-# 22b71502b61844b7b11f8487e2b4ec4f
-msgid "Unresolved bugs, no maintainer, replaced with :ref:`trsp`"
-msgstr ""
-
-#: ../../src/developer/discontinued.rst:26
-# ae3be36c2d784a5798b139317310e375
-msgid "Please :ref:`contact us <support>` if you're interested to sponsor or maintain this algorithm. The function signature is still available in :ref:`common_legacy` but it is just a wrapper that throws an error. We have not included any of the old code for this in this release."
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/developer/index.pot b/doc/i18n/pot/doc/src/developer/index.pot
deleted file mode 100644
index 228aafd..0000000
--- a/doc/i18n/pot/doc/src/developer/index.pot
+++ /dev/null
@@ -1,183 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/developer/index.rst:13
-# dd9778e8f6b34f5e81236f0a987c4ca0
-msgid "Developer's Guide"
-msgstr ""
-
-#: ../../src/developer/index.rst:16
-# 5ab4af0630fc4725b637f9d15cfaae04
-msgid "All documentation should be in reStructuredText format. See: <http://docutils.sf.net/rst.html> for introductory docs."
-msgstr ""
-
-#: ../../src/developer/index.rst:20
-# 16624c1c1e0b490ba6fc570fdf5e8b95
-msgid "Source Tree Layout"
-msgstr ""
-
-#: ../../src/developer/index.rst:23
-# 1126e2a3a9414da3908533bed8c8280d
-msgid "cmake scripts used as part of our build system."
-msgstr ""
-
-#: ../../src/developer/index.rst:26
-# f1bd421698c644e4b8bce00ffad4f2ad
-msgid "This is the algorithm source tree. Each algorithm should be contained in its on sub-tree with doc, sql, src, and test sub-directories. This might get renamed to \"algorithms\" at some point."
-msgstr ""
-
-#: ../../src/developer/index.rst:31
-# 33aceb274b004ba397a6e70e5c6bff99
-msgid "This is an implementation of A* Search based on using Boost Graph libraries for its implementation. This is a Dijkstra shortest path implementation with a Euclidean Heuristic."
-msgstr ""
-
-#: ../../src/developer/index.rst:36
-# 3a68e887f49347ca9f4b4ba7dca1b2d2
-msgid "At the moment this does not have an core in \"src\", but does have a lot of SQL wrapper code and topology code in the \"sql\" directory. *Algorithm specific wrappers should get move to the algorithm tree and appropriate tests should get added to validate the wrappers.*"
-msgstr ""
-
-#: ../../src/developer/index.rst:42
-# 7b5e1a0acede452aac11898a79f7a0d7
-msgid "This is an implementation of Dikjstra's shortest path solution using Boost Graph libraries for the implementation."
-msgstr ""
-
-#: ../../src/developer/index.rst:46
-# 4efe4e5dd0774532a58f7edf649b03fe
-msgid "This optional package creates driving distance polygons based on solving a Dijkstra shortest path solution, then creating polygons based on equal cost distances from the start point. This optional package requires CGAL libraries to be installed."
-msgstr ""
-
-#: ../../src/developer/index.rst:52
-# ba3e62ce53474d8b8a39253b9aafd00c
-msgid "*DEPRECATED and DOES NOT WORK and IS BEING REMOVED* This is an edge based shortest path algorithm that supports turn restrictions. It is based on Boost Graph. Do *NOT* use this algorithm as it is broken, instead use *trsp* which has the same functionality and is faster and give correct results."
-msgstr ""
-
-#: ../../src/developer/index.rst:59
-# 83d03de3b6d64fbd9e72a82869899dcf
-msgid "This is a turn restricted shortest path algorithm. It has some nice features like you can specify the start and end points as a percentage along an edge. Restrictions are stored in a separate table from the graph edges and this make it easier to manage the data."
-msgstr ""
-
-#: ../../src/developer/index.rst:65
-# f353043d4a84477189f21a79af4c4422
-msgid "This optional package provides the ability to compute traveling salesman problem solutions and compute the resulting route. This optional package requires GAUL libaries to be installed."
-msgstr ""
-
-#: ../../src/developer/index.rst:70
-# d8464e37f5b248b8b01daa6f8760026b
-msgid "Miscellaneous scripts and tools."
-msgstr ""
-
-#: ../../src/developer/index.rst:73
-# 09c71e3a9f864830aa5c928aaabe7f24
-msgid "This is the output directory where compiled libraries and installation targets are staged before installation."
-msgstr ""
-
-#: ../../src/developer/index.rst:78
-# 66a640a1530c4bf3a656722e481b7c89
-msgid "Documentation Layout"
-msgstr ""
-
-#: ../../src/developer/index.rst:80
-# 9a3ec152c58c43ac99c1853e662e568c
-msgid "*As noted above all documentation should be done using reStructuredText formated files.*"
-msgstr ""
-
-#: ../../src/developer/index.rst:83
-# 7a52dc0ba119404681f559e60ef23814
-msgid "Documentation is distributed into the source tree. This top level \"doc\" directory is intended for high level documentation cover subjects like:"
-msgstr ""
-
-#: ../../src/developer/index.rst:86
-# 5ed02eb63fbf4928a93ebeb2faac8d20
-msgid "Compiling and testing"
-msgstr ""
-
-#: ../../src/developer/index.rst:87
-# f74a190a655f4685811ae3f57290cd28
-msgid "Installation"
-msgstr ""
-
-#: ../../src/developer/index.rst:88
-# 8ac59a999e2e4a63b68eb64a107d56fd
-msgid "Tutorials"
-msgstr ""
-
-#: ../../src/developer/index.rst:89
-# 8b2d3aaf679e4280abaec5f66febc05d
-msgid "Users' Guide front materials"
-msgstr ""
-
-#: ../../src/developer/index.rst:90
-# c726df360e6e40bc97392bc93c97be15
-msgid "Reference Manual front materials"
-msgstr ""
-
-#: ../../src/developer/index.rst:91
-# ad4ab80865ee49ac978312e71a4fc6b5
-msgid "etc"
-msgstr ""
-
-#: ../../src/developer/index.rst:93
-# eb1075f9ccb14a1997f5ba12492b5a69
-msgid "Since the algorithm specific documentation is contained in the source tree with the algorithm specific files, the process of building the documentation and publishing it will need to assemble the details with the front material as needed."
-msgstr ""
-
-#: ../../src/developer/index.rst:98
-# bb670ff9881c4741a82745506bd9b1ec
-msgid "Also, to keep the \"doc\" directory from getting cluttered, each major book like those listed above, should be contained in a separate directory under \"doc\". Any images or other materials related to the book should also be kept in that directory."
-msgstr ""
-
-#: ../../src/developer/index.rst:105
-# 411663c8822c4c5eab55674c7554e488
-msgid "Testing Infrastructure"
-msgstr ""
-
-#: ../../src/developer/index.rst:107
-# 1dcbae2ed1a84569a4a5e289d53dd828
-msgid "There is a very basic testing infrastructure put in place. Here are the basics of how it works. We need more test cases. Longer term we should probably get someone to setup travis-ci or jenkins testing frameworks."
-msgstr ""
-
-#: ../../src/developer/index.rst:111
-# 41f330f446f74c53b055787569a14909
-msgid "Here is the graph for the TRSP tests."
-msgstr ""
-
-#: ../../src/developer/index.rst:115
-# 2913795d3e6f4be6b4a7e88f8deb96f4
-msgid "Tests are run via the script at the top level tools/test-runner.pl and it runs all the test configured tests and at the moment just dumps the results structure of the test. This can be prettied up later."
-msgstr ""
-
-#: ../../src/developer/index.rst:119
-# a97e7afe47594503bce6759c4618a4df
-msgid "It also assumes that you have installed the libraries as it tests using the installed postgresql. This probably needs to be made smarter so we can test out of the build tree. I'll need to think about that."
-msgstr ""
-
-#: ../../src/developer/index.rst:124
-# 070adb1a0e4842af988a4ff2096379d0
-msgid "Basically each .../test/ directory should include one *test.conf* file that is a perl script fragment that defines what data files to load and what tests to run. I have built in some mechanisms to allow test and data to be pg version and postgis version specific, but I'm not using that yet. So for example, *core/trsp/test/test-any-00.data* is a sql plain text dump that will load and needed data for a set of tests. This is also the graph in the image above. You can specify multiple [...]
-msgstr ""
-
-#: ../../src/developer/index.rst:133
-# 5cc6ac71e65c4c34b0f6f84a922e774d
-msgid "core/trsp/test/test-any-00.test is a sql command to be run. It will get run as:"
-msgstr ""
-
-#: ../../src/developer/index.rst:141
-# 00a56fbb2fc345498bfd8fb80175362e
-msgid "Then if there is a difference then an test failure is reported."
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/developer/sampledata.pot b/doc/i18n/pot/doc/src/developer/sampledata.pot
deleted file mode 100644
index 946f79b..0000000
--- a/doc/i18n/pot/doc/src/developer/sampledata.pot
+++ /dev/null
@@ -1,53 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/developer/sampledata.rst:13
-# ba4eedd90f324e7c8cdf7796820bfecf
-msgid "Sample Data"
-msgstr ""
-
-#: ../../src/developer/sampledata.rst:15
-# 9e493f04148b40fcabb837efae5c0e79
-msgid "The documentation provides very simple example queries based on a small sample network. To be able to execute the sample queries, run the following SQL commands to create a table with a small network data set."
-msgstr ""
-
-#: ../../src/developer/sampledata.rst:20
-# 229d513d61904b279260cfe545130efd
-msgid "Create table"
-msgstr ""
-
-#: ../../src/developer/sampledata.rst:40
-# 58e167fc212e47df8bce8182f5f6f18f
-msgid "Insert network data"
-msgstr ""
-
-#: ../../src/developer/sampledata.rst:70
-# 32e8a993a3954cd99d1e9e1f845c6509
-msgid "Before you test a routing function use this query to fill the source and target columns."
-msgstr ""
-
-#: ../../src/developer/sampledata.rst:77
-# 1d6ec82bbe35418dab00ea92e370846d
-msgid "This table is used in some of our examples"
-msgstr ""
-
-#: ../../src/developer/sampledata.rst:94
-# f25af2ce290b45dbaae4c435a13077f4
-msgid "The network created in *edge_table*"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/installation/build.pot b/doc/i18n/pot/doc/src/installation/build.pot
deleted file mode 100644
index 2331332..0000000
--- a/doc/i18n/pot/doc/src/installation/build.pot
+++ /dev/null
@@ -1,128 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/installation/build.rst:13
-# 7ca37ffe8204407785528b35d96efbca
-msgid "Build Guide"
-msgstr ""
-
-#: ../../src/installation/build.rst:15
-# cf78d0fc200e4a00ab13da3910b5a133
-msgid "To be able to compile pgRouting make sure that the following dependencies are met:"
-msgstr ""
-
-#: ../../src/installation/build.rst:17
-# 7812e3015a7a467ea5b86a6801e7e255
-msgid "C and C++ compilers"
-msgstr ""
-
-#: ../../src/installation/build.rst:18
-# 1371a204e532415aac2b8ebc073d7460
-msgid "Postgresql version >= 8.4 (>= 9.1 recommended)"
-msgstr ""
-
-#: ../../src/installation/build.rst:19
-# b161109c64204b80a54760aeebafd193
-msgid "PostGIS version >= 1.5 (>= 2.0 recommended)"
-msgstr ""
-
-#: ../../src/installation/build.rst:20
-# 0750dd65b38a4975b1b67817fd69ab81
-msgid "The Boost Graph Library (BGL). Version >= [TBD]"
-msgstr ""
-
-#: ../../src/installation/build.rst:21
-# 1af0d9868c614f23a1ed6e2649f647ba
-msgid "CMake >= 2.8.8"
-msgstr ""
-
-#: ../../src/installation/build.rst:22
-# ce5e03eec1cd4c1da6abf75d5e49caaf
-msgid "(optional, for Driving Distance) CGAL >= [TBD]"
-msgstr ""
-
-#: ../../src/installation/build.rst:23
-# 32965def05f54cbf8fef3795bebd45fe
-msgid "(optional, for Documentation) Sphinx >= 1.1"
-msgstr ""
-
-#: ../../src/installation/build.rst:24
-# a82f28ce517741aaaea2575163d7a24c
-msgid "(optional, for Documentation as PDF) Latex >= [TBD]"
-msgstr ""
-
-#: ../../src/installation/build.rst:26
-# 831069f7ed284c2b80d241b26e133726
-msgid "The cmake system has variables the can be configured via the command line options by setting them with -D<varable>=<value>. You can get a listing of these via:"
-msgstr ""
-
-#: ../../src/installation/build.rst:34
-# 5d9c658b37bf4994b7bd98db347f41e3
-msgid "Currently these are:"
-msgstr ""
-
-#: ../../src/installation/build.rst:36
-# b27051231cbe4d88b604dcd8f1adf7d8
-msgid "Boost_DIR:PATH=Boost_DIR-NOTFOUND CMAKE_BUILD_TYPE:STRING= CMAKE_INSTALL_PREFIX:PATH=/usr/local POSTGRESQL_EXECUTABLE:FILEPATH=/usr/lib/postgresql/9.2/bin/postgres POSTGRESQL_PG_CONFIG:FILEPATH=/usr/bin/pg_config WITH_DD:BOOL=ON WITH_DOC:BOOL=OFF BUILD_HTML:BOOL=ON BUILD_LATEX:BOOL=OFF BUILD_MAN:BOOL=ON"
-msgstr ""
-
-#: ../../src/installation/build.rst:47
-# a44fdc0f9b7c4f3b9a79037558700c7f
-msgid "These also show the current or default values based on our development system. So your values my be different. In general the ones that are of most interest are:"
-msgstr ""
-
-#: ../../src/installation/build.rst:49
-# 403d9b32e4824cdfb29bc0b3faf400a7
-msgid "WITH_DD:BOOL=ON -- Turn on/off building driving distance code. WITH_DOC:BOOL=OFF -- Turn on/off building the documentation BUILD_HTML:BOOL=ON -- If WITH_DOC=ON, turn on/off building HTML BUILD_LATEX:BOOL=OFF -- If WITH_DOC=ON, turn on/off building PDF BUILD_MAN:BOOL=ON -- If WITH_DOC=ON, turn on/off building MAN pages"
-msgstr ""
-
-#: ../../src/installation/build.rst:55
-# b9a07c63fbbd4f138ae4a4d0700fe56a
-msgid "To change any of these add ``-D<variable>=<value>`` to the cmake lines below. For example to turn on documentation, your cmake command might look like:"
-msgstr ""
-
-#: ../../src/installation/build.rst:62
-# 4c3dc167fd254a10a701ee647c852666
-msgid "If you turn on the documentation, you also need to add the ``doc`` target to the make command."
-msgstr ""
-
-#: ../../src/installation/build.rst:72
-# 5514f2407b3647deb84d86d331014680
-msgid "For MinGW on Windows"
-msgstr ""
-
-#: ../../src/installation/build.rst:84
-# 98bc3231ca8040f499d85acbbb115b66
-msgid "For Linux"
-msgstr ""
-
-#: ../../src/installation/build.rst:96
-# 3077b3438151444c93980d4f883cf21c
-msgid "With Documentation"
-msgstr ""
-
-#: ../../src/installation/build.rst:98
-# dd1713378fe447c8883fc24dcdb9ddb6
-msgid "Build with documentation (requires `Sphinx <http://sphinx-doc.org/>`_):"
-msgstr ""
-
-#: ../../src/installation/build.rst:106
-# 12f4405e6eab4f94b380bc408c60ca64
-msgid "Rebuild modified documentation only:"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/installation/index.pot b/doc/i18n/pot/doc/src/installation/index.pot
deleted file mode 100644
index 0da2cc2..0000000
--- a/doc/i18n/pot/doc/src/installation/index.pot
+++ /dev/null
@@ -1,193 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/installation/index.rst:13
-# e99a02e543da4575b3119115c1b12890
-msgid "Installation"
-msgstr ""
-
-#: ../../src/installation/index.rst:15
-# 750ddf4b1b794660b7193b507fc50a97
-msgid "Binary packages are provided for the current version on the following platforms:"
-msgstr ""
-
-#: ../../src/installation/index.rst:19
-# 17f7d5c2722145e58d527b1986c38729
-msgid "Windows"
-msgstr ""
-
-#: ../../src/installation/index.rst:21
-# a0f76335d522429eb8fd312cd44fbbf0
-msgid "Winnie Bot Experimental Builds:"
-msgstr ""
-
-#: ../../src/installation/index.rst:23
-# 42b5f2fa3fe94023bba24019c3f4cd70
-msgid "`PostgreSQL 9.2 32-bit, 64-bit <http://winnie.postgis.net/download/windows/pg92/buildbot/>`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:27
-# 7caea0f739ac40079a65734a3f904587
-msgid "Ubuntu/Debian"
-msgstr ""
-
-#: ../../src/installation/index.rst:29
-# 391c003657a7419386648662df8b2fe1
-msgid "Ubuntu packages are available in Launchpad repositories:"
-msgstr ""
-
-#: ../../src/installation/index.rst:31
-# cf5d713f52384127acefcb1835615575
-msgid "*stable* https://launchpad.net/~georepublic/+archive/pgrouting"
-msgstr ""
-
-#: ../../src/installation/index.rst:32
-# ee401bf810574986a8d76adc89207709
-msgid "*unstable* https://launchpad.net/~georepublic/+archive/pgrouting-unstable"
-msgstr ""
-
-#: ../../src/installation/index.rst:43
-# 7d155c97705942f38e617e56e930fdcf
-msgid "Use `UbuntuGIS-unstable PPA <https://launchpad.net/~ubuntugis/+archive/ubuntugis-unstable>`_ to install PostGIS 2.0."
-msgstr ""
-
-#: ../../src/installation/index.rst:47
-# 7ed4d0e8f7bf489bb4260cf72d619353
-msgid "RHEL/CentOS/Fedora"
-msgstr ""
-
-#: ../../src/installation/index.rst:49
-# 880be2917ef44e348715720724eeb36a
-msgid "Fedora RPM's: https://admin.fedoraproject.org/pkgdb/acls/name/pgRouting"
-msgstr ""
-
-#: ../../src/installation/index.rst:53
-# b7656017a37847af917b9982e783f484
-msgid "OS X"
-msgstr ""
-
-#: ../../src/installation/index.rst:57
-# 094f8f18c1bf4a549eae698ecf436c70
-msgid "Homebrew"
-msgstr ""
-
-#: ../../src/installation/index.rst:65
-# 9bd8a95b05884a6f9dd3386461499f65
-msgid "Source Package"
-msgstr ""
-
-#: ../../src/installation/index.rst:68
-# 85c05371670747c19470a6aa635eca43
-msgid "Git 2.0.0-rc1 release"
-msgstr ""
-
-#: ../../src/installation/index.rst:68
-# 93e66bb1bcfe48879472f8a2fc8f0eb2
-msgid "`v2.0.0-rc1.tar.gz`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:68
-# 7d1faf7a050b4600892612b9b5cb9107
-msgid "`v2.0.0-rc1.zip`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:69
-# 7779ccda870a464287858c6f1246fe6c
-msgid "Git 2.0.0-beta release"
-msgstr ""
-
-#: ../../src/installation/index.rst:69
-# 1cf3f78fdae44893b69017dd3431fbde
-msgid "`v2.0.0-beta.tar.gz`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:69
-# 6de5c2e8d36d405f9e93540de8cefcc0
-msgid "`v2.0.0-beta.zip`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:70
-# 8dab8cbc19df4943b2bb123cbef01b4f
-msgid "Git 2.0.0-alpha release"
-msgstr ""
-
-#: ../../src/installation/index.rst:70
-# c0ac0a4fb9964caabd4dba0f0878f1f2
-msgid "`v2.0.0-alpha.tar.gz`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:70
-# e30f4a87fa444db69f37e0ee0dd9d66a
-msgid "`v2.0.0-alpha.zip`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:71
-# b3ebd6fb08094d32adbfacc9d58fcf1c
-msgid "Git master branch"
-msgstr ""
-
-#: ../../src/installation/index.rst:71
-# 67521c1fdf4f49ebacfe1e5c769a0ecd
-msgid "`master.tar.gz`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:71
-# 092f447e5e0e43ada3e9a6bf507f91ad
-msgid "`master.zip`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:72
-# 92d860c92dc64e34a0dc7c71b2d53a28
-msgid "Git develop branch"
-msgstr ""
-
-#: ../../src/installation/index.rst:72
-# 1dcd902807c54fcda900cece955a2f4e
-msgid "`develop.tar.gz`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:72
-# f4b1bad880d9412fb5bda9b850f4898b
-msgid "`develop.zip`_"
-msgstr ""
-
-#: ../../src/installation/index.rst:92
-# 55016de8fc864e98bb25e136f909267e
-msgid "Using Git"
-msgstr ""
-
-#: ../../src/installation/index.rst:94
-# 94e2754216444adaabe114a815eba7db
-msgid "Git protocol (read-only):"
-msgstr ""
-
-#: ../../src/installation/index.rst:101
-# 5cb5c9c516a14820a509d0158b2b37c2
-msgid "HTTPS protocol (read-only): .. code-block:: bash"
-msgstr ""
-
-#: ../../src/installation/index.rst:104
-# fe6100c2adc24a76b628be1832abea60
-msgid "git clone https://github.com/pgRouting/pgrouting.git"
-msgstr ""
-
-#: ../../src/installation/index.rst:107
-# e15c461c5aee4a16af0194821336d21a
-msgid "See :ref:`build` for notes on compiling from source."
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/introduction/index.pot b/doc/i18n/pot/doc/src/introduction/index.pot
deleted file mode 100644
index e715186..0000000
--- a/doc/i18n/pot/doc/src/introduction/index.pot
+++ /dev/null
@@ -1,33 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/introduction/index.rst:23
-# aae4b604dbdc4cd29882bb4ad071dc73
-msgid "Indices and tables"
-msgstr ""
-
-#: ../../src/introduction/index.rst:24
-# 621c9a1ae458437ea667d6739cc434bb
-msgid ":ref:`genindex`"
-msgstr ""
-
-#: ../../src/introduction/index.rst:25
-# 3fb8ff3d2b9a42b5a245e90374660f0c
-msgid ":ref:`search`"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/introduction/introduction.pot b/doc/i18n/pot/doc/src/introduction/introduction.pot
deleted file mode 100644
index 6460498..0000000
--- a/doc/i18n/pot/doc/src/introduction/introduction.pot
+++ /dev/null
@@ -1,153 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/introduction/introduction.rst:13
-# db7a9197c94f4694be0debc228725326
-msgid "Introduction"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:15
-# e1ab968a49474e08a51cc6a5293ff675
-msgid "pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL <http://postgresql.org>`_ geospatial database and adds routing and other network analysis functionality. A predecessor of pgRouting – pgDijkstra, written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to pgRouting. The project is now supported and maintained by `Georepublic <http://georepublic.info>`_, `iMaptools <http:// [...]
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:17
-# 69b26ba84d004c57a5919c0f2c9f5605
-msgid "pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo Live <http://live.osgeo.org/>`_."
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:23
-# 078b30e71798444498641786bd203e19
-msgid "License"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:25
-# 6c4b66f203b8422e9563c8ad28f54839
-msgid "The following licenses can be found in pgRouting:"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:30
-# d164df747b594809a00187d644423950
-msgid "**License**"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:32
-# f3f2ee77936f4adf9acde40a61fab06d
-msgid "GNU General Public License, version 2"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:33
-# af3b211cb3df4b399e13145f25c9c3f2
-msgid "Most features of pgRouting are available under `GNU General Public License, version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:34
-# e7469743ba2744aeb933366f491b3ebf
-msgid "Boost Software License - Version 1.0"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:35
-# 66cae48d3cc545ae870bc7453fb54fe4
-msgid "Some Boost extensions are available under `Boost Software License - Version 1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:36
-# bd7f061fe70546dba37f4d73a068abd3
-msgid "MIT-X License"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:37
-# 33606ca1178d466e830a72e11e941602
-msgid "Some code contributed by iMaptools.com is available under MIT-X license."
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:38
-# 76cd2e58c8534266a55c3ce7db940e18
-msgid "Creative Commons Attribution-Share Alike 3.0 License"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:39
-# 90c91ba63a5e416c9d3edb03b41d6e92
-msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:41
-# 637bce644f01485bb2df99669fd97063
-msgid "In general license information should be included in the header of each source file."
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:45
-# 128679ca199c4408b71888935af07cbc
-msgid "Contributors"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:48
-# a036e92f2f3449acbf377fcd8f186bff
-msgid "Individuals (in alphabetical order)"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:50
-# dfba51b50ac2407184eaeade19a7de5f
-msgid "Akio Takubo, Anton Patrushev, Ashraf Hossain, Christian Gonzalez, Daniel Kastl, Dave Potts, David Techer, Ema Miyawaki, Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, Kai Behncke, Kishore Kumar, Ko Nagase, Mario Basa, Martin Wiesenhaan, Razequl Islam, Stephen Woodbridge, Sylvain Housseman, Sylvain Pasche, Virginia Vergara"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:54
-# 20f28195f1944e078e6721303cdf9e93
-msgid "Corporate Sponsors (in alphabetical order)"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:56
-# ac8b23cb602d47778a972448d37df41a
-msgid "These are corporate entities that have contributed developer time, hosting, or direct monetary funding to the pgRouting project:"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:58
-# 3d20a9c3b8c44157a6d28c2f70b8dfb1
-msgid "Camptocamp, CSIS (University of Tokyo), Georepublic, Google Summer of Code, iMaptools, Orkney, Paragon Corporation"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:62
-# 378a74ceff9d46f08159384e421aceda
-msgid "More Information"
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:64
-# 2c0a067006e54cfd96c72f3b503776e2
-msgid "The latest software, documentation and news items are available at the pgRouting web site http://pgrouting.org."
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:65
-# a7e5b0aeff6b424ca181298c5a5f2cde
-msgid "PostgreSQL database server at the PostgreSQL main site http://www.postgresql.org."
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:66
-# 476715ce5d0c43a09bcbddd27dbf2675
-msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:67
-# e1d37342c02c4f268b60f110453d80a1
-msgid "Boost C++ source libraries at http://www.boost.org."
-msgstr ""
-
-#: ../../src/introduction/introduction.rst:68
-# 0a9a94f444b54dd78a3d1060975e43aa
-msgid "Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/introduction/support.pot b/doc/i18n/pot/doc/src/introduction/support.pot
deleted file mode 100644
index b76a9c3..0000000
--- a/doc/i18n/pot/doc/src/introduction/support.pot
+++ /dev/null
@@ -1,183 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/introduction/support.rst:13
-# b3a5f8f3969e4044a381397a261ba4cb
-msgid "Support"
-msgstr ""
-
-#: ../../src/introduction/support.rst:15
-# 14b20eda5bf6472e80234e2295d8afb3
-msgid "pgRouting community support is available through `website <http://www.pgrouting.org>`_, `documentation <http://docs.pgrouting.org>`_, tutorials, mailing lists and others. If you’re looking for :ref:`commercial support <support_commercial>`, find below a list of companies providing pgRouting development and consulting services."
-msgstr ""
-
-#: ../../src/introduction/support.rst:19
-# 39af5317df5f4991a31406effa1a9bfd
-msgid "Reporting Problems"
-msgstr ""
-
-#: ../../src/introduction/support.rst:21
-# 846db30aae8243b88a94128cd88a2d13
-msgid "Bugs are reported and managed in an `issue tracker <https://github.com/pgrouting/pgrouting/issues>`_. Please follow these steps:"
-msgstr ""
-
-#: ../../src/introduction/support.rst:23
-# b216a415cf874553844a63de9a3e7e37
-msgid "Search the tickets to see if your problem has already been reported. If so, add any extra context you might have found, or at least indicate that you too are having the problem. This will help us prioritize common issues."
-msgstr ""
-
-#: ../../src/introduction/support.rst:24
-# f90bf6bb28cd424c99999fefde16b870
-msgid "If your problem is unreported, create a `new issue <https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
-msgstr ""
-
-#: ../../src/introduction/support.rst:25
-# 6932232f3b494120bf3cd5845790dfb5
-msgid "In your report include explicit instructions to replicate your issue. The best tickets include the exact SQL necessary to replicate a problem."
-msgstr ""
-
-#: ../../src/introduction/support.rst:26
-# 28de5e590b3e47aea44a0d6f268542ca
-msgid "If you can test older versions of PostGIS for your problem, please do. On your ticket, note the earliest version the problem appears."
-msgstr ""
-
-#: ../../src/introduction/support.rst:27
-# f72042193b2340189e79b8157aa396c2
-msgid "For the versions where you can replicate the problem, note the operating system and version of pgRouting, PostGIS and PostgreSQL."
-msgstr ""
-
-#: ../../src/introduction/support.rst:28
-# c9fd079d20de411982eb4f1bbf785bff
-msgid "It is recommended to use the following wrapper on the problem to pin point the step that is causing the problem."
-msgstr ""
-
-#: ../../src/introduction/support.rst:39
-# 78da830808444e8a9b33427b71b7ade3
-msgid "Mailing List and GIS StackExchange"
-msgstr ""
-
-#: ../../src/introduction/support.rst:41
-# dce6c1586cf44001a08347ec6db5f8a0
-msgid "There are two mailing lists for pgRouting hosted on OSGeo mailing list server:"
-msgstr ""
-
-#: ../../src/introduction/support.rst:43
-# ba27e5f495ff45578f9fb19f7bc634e6
-msgid "User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
-msgstr ""
-
-#: ../../src/introduction/support.rst:44
-# 96a4eb1cc9b94c7f83a98fe0e9fbf404
-msgid "Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-dev"
-msgstr ""
-
-#: ../../src/introduction/support.rst:46
-# 4a9ace0357b94eecaf93ddb0bdbaf131
-msgid "For general questions and topics about how to use pgRouting, please write to the user mailing list."
-msgstr ""
-
-#: ../../src/introduction/support.rst:48
-# 02d78a467082497ba17123302780dbd0
-msgid "You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and tag the question with ``pgrouting``. Find all questions tagged with ``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting or subscribe to the `pgRouting questions feed <http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
-msgstr ""
-
-#: ../../src/introduction/support.rst:54
-# 120403ad7b7a49c98a04dfecbc278fd4
-msgid "Commercial Support"
-msgstr ""
-
-#: ../../src/introduction/support.rst:56
-# 24e3a1d45ea64cb1a5baf76dde6c3900
-msgid "For users who require professional support, development and consulting services, consider contacting any of the following organizations, which have significantly contributed to the development of pgRouting:"
-msgstr ""
-
-#: ../../src/introduction/support.rst:61
-# a14390d0ad424921a7496be9a782353c
-msgid "**Company**"
-msgstr ""
-
-#: ../../src/introduction/support.rst:62
-# fc52e8e827d849e1bd4763f74f132912
-msgid "**Offices in**"
-msgstr ""
-
-#: ../../src/introduction/support.rst:63
-# 9d16b878b9f147d8ac975974f8d08893
-msgid "**Website**"
-msgstr ""
-
-#: ../../src/introduction/support.rst:64
-# 7c2d1daf89eb477b8ef916cbc3b580b7
-msgid "Georepublic"
-msgstr ""
-
-#: ../../src/introduction/support.rst:65
-# 6e9a1212cf424bb79135fc776d540425
-msgid "Germany, Japan"
-msgstr ""
-
-#: ../../src/introduction/support.rst:66
-# e7718917bc8e4ee98a2531c382c41822
-msgid "http://georepublic.info"
-msgstr ""
-
-#: ../../src/introduction/support.rst:67
-# 74dd9ca2e81845388ab727db74056fbf
-msgid "iMaptools"
-msgstr ""
-
-#: ../../src/introduction/support.rst:68
-# b01fa3f414e34f0094e80693bf5ace2b
-msgid "United States"
-msgstr ""
-
-#: ../../src/introduction/support.rst:69
-# e5d84b3e16614c76b8b6eb32b0dbb76f
-msgid "http://imaptools.com"
-msgstr ""
-
-#: ../../src/introduction/support.rst:70
-# d6fc6ed908ed4dc2a2cf29dce5152916
-msgid "Orkney Inc."
-msgstr ""
-
-#: ../../src/introduction/support.rst:71
-# 9ba93fb521a1423386c96d467103c66b
-msgid "Japan"
-msgstr ""
-
-#: ../../src/introduction/support.rst:72
-# 1994c13572dd4f30b7e43039f56c83da
-msgid "http://www.orkney.co.jp"
-msgstr ""
-
-#: ../../src/introduction/support.rst:73
-# 00a63203a2744d2e997e92f7679fc37e
-msgid "Camptocamp"
-msgstr ""
-
-#: ../../src/introduction/support.rst:74
-# d70b9ffbfe524565add3618282d7fb3e
-msgid "Switzerland, France"
-msgstr ""
-
-#: ../../src/introduction/support.rst:75
-# 69ca9d4d59b54f288771a4194bda7182
-msgid "http://www.camptocamp.com"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/tutorial/analytics.pot b/doc/i18n/pot/doc/src/tutorial/analytics.pot
deleted file mode 100644
index 0808e20..0000000
--- a/doc/i18n/pot/doc/src/tutorial/analytics.pot
+++ /dev/null
@@ -1,173 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/tutorial/analytics.rst:13
-# 9bb2bd3626cd4963af58fa92b51e9919
-msgid "Graph Analytics"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:15
-# 44103bb4e37949d2b005a15a9b62ef69
-msgid "Stephen Woodbridge <woodbri at swoodbridge.com>"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:16
-# 2f190e03d221441a8b893ae7a8cbb843
-msgid "Stephen Woodbridge. The source code is released under the MIT-X license."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:20
-# 21bb31b2be914f509ce4e3bc8c190291
-msgid "Overview"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:22
-# 1c91f49498d44c23a21896c3176eb2e6
-msgid "It is common to find problems with graphs that have not been constructed fully noded or in graphs with z-levels at intersection that have been entered incorrectly. An other problem is one way streets that have been entered in the wrong direction. We can not detect errors with respect to \"ground\" truth, but we can look for inconsistencies and some anomalies in a graph and report them for additional inspections."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:24
-# e7a6f04d92314f218a4630cd0bd1d5dd
-msgid "We do not current have any visualization tools for these problems, but I have used mapserver to render the graph and highlight potential problem areas. Someone familiar with graphviz might contribute tools for generating images with that."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:28
-# a3a676f9e1e94e98b7fe13b19e05c299
-msgid "Analyze a Graph"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:30
-# 4acca336e2b54dd1a924da70266e05f0
-msgid "With :ref:`pgr_analyze_graph` the graph can be checked for errors. For example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices table:"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:53
-# f0d0abed136245d29c3e3215c4692afa
-msgid "In the vertices table \"mytab_vertices_pgr\":"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:55
-# 6b9c4034040e4fcdb2c4307007812444
-msgid "Deadends are indentified by ``cnt=1``"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:56
-# 4aad85137bf849fe92d92b5c11aa405e
-msgid "Potencial gap problems are identified with ``chk=1``."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:74
-# c7a3d9cdf154446dabf79505c45aa6d9
-msgid "For isolated road segments, for example, a segment where both ends are deadends. you can find these with the following query:"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:83
-# 445b457711484140b2b8b9047011076b
-msgid "If you want to visualize these on a graphic image, then you can use something like mapserver to render the edges and the vertices and style based on ``cnt`` or if they are isolated, etc. You can also do this with a tool like graphviz, or geoserver or other similar tools."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:87
-# 0f23d2f74bd247f98705d903b5092b01
-msgid "Analyze One Way Streets"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:89
-# 91a97fa2e4b248e38a4ddb2835bcb9a0
-msgid ":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies any flipped segments. Basically if you count the edges coming into a node and the edges exiting a node the number has to be greater than one."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:91
-# d3cc233afc9445cfb38a101d4b7957b0
-msgid "This query will add two columns to the vertices_tmp table ``ein int`` and ``eout int`` and populate it with the appropriate counts. After running this on a graph you can identify nodes with potential problems with the following query."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:94
-# 141f59cee9b54b07b4604d7113514baa
-msgid "The rules are defined as an array of text strings that if match the ``col`` value would be counted as true for the source or target in or out condition."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:98
-# 104462249c9c43c6a6aadfba7bb30b61
-msgid "Example"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:100
-# 416ab98bf07d43569e7c6c734485163b
-msgid "Lets assume we have a table \"st\" of edges and a column \"one_way\" that might have values like:"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:102
-# a2be56f70ad5420c9ce538a9b57e4f99
-msgid "'FT' - oneway from the source to the target node."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:103
-# a4da13471e8e4159b8e84c8310544ef5
-msgid "'TF' - oneway from the target to the source node."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:104
-# fdbb652554154f688abf5949c07e7721
-msgid "'B' - two way street."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:105
-# 749352e7a82147d0877caff5ba7e72da
-msgid "'' - empty field, assume twoway."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:106
-# 73fdc5c8db7a442b9c821dbca31d8e24
-msgid "<NULL> - NULL field, use two_way_if_null flag."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:108
-# c89d93ddab594f0f8fe939f9f13a2371
-msgid "Then we could form the following query to analyze the oneway streets for errors."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:127
-# f8855d2f89da468a9da80b20a8c44e36
-msgid "Typically these problems are generated by a break in the network, the one way direction set wrong, maybe an error related to z-levels or a network that is not properly noded."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:129
-# 33d2e84857b24394a979e99c4000e306
-msgid "The above tools do not detect all network issues, but they will identify some common problems. There are other problems that are hard to detect because they are more global in nature like multiple disconnected networks. Think of an island with a road network that is not connected to the mainland network because the bridge or ferry routes are missing."
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:133
-# 61e250584bc743fca3a42d23020f0e12
-msgid "See Also"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:135
-# 647dd767dc4d4bc1bc168c0b8fa0f32a
-msgid ":ref:`pgr_analyze_graph`"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:136
-# 95b8ac2db9134eaf8736d9fc322f0c0d
-msgid ":ref:`pgr_analyze_oneway`"
-msgstr ""
-
-#: ../../src/tutorial/analytics.rst:137
-# 5d1cc8446c2d4efcb5745f3d53c408f4
-msgid ":ref:`pgr_node_network`"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/tutorial/custom_query.pot b/doc/i18n/pot/doc/src/tutorial/custom_query.pot
deleted file mode 100644
index f256a02..0000000
--- a/doc/i18n/pot/doc/src/tutorial/custom_query.pot
+++ /dev/null
@@ -1,134 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/tutorial/custom_query.rst:13
-# 0d35651661ad4f858cb0a34e41504644
-msgid "Custom Query"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:17
-# 35ecd2199cb543df958a1b69df6001cd
-msgid "In general, the routing algorithms need an SQL query that contain one or more of the following required columns with the preferred type:"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:19
-#: ../../src/tutorial/custom_query.rst:20
-#: ../../src/tutorial/custom_query.rst:21
-# df79ebffa3e24c64a769def6713625c2
-# 8aa6b9e6ab5844ea89ca17851ba304c6
-# 5f0ba70a9bd448c28141574853b77644
-msgid "int4"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:22
-#: ../../src/tutorial/custom_query.rst:23
-#: ../../src/tutorial/custom_query.rst:24
-#: ../../src/tutorial/custom_query.rst:25
-#: ../../src/tutorial/custom_query.rst:26
-#: ../../src/tutorial/custom_query.rst:27
-#: ../../src/tutorial/custom_query.rst:28
-#: ../../src/tutorial/custom_query.rst:29
-#: ../../src/tutorial/custom_query.rst:63
-# a0153d07ce2b41009e4b5d6be32b0113
-# 695127ba869b4a68924ac21d8b7908ed
-# acf4d08a488b400998d912b1501581f1
-# 3c7f3d7ca73c40418bc24640aca03e9f
-# be5a966e207941768a651f4aceab3e66
-# 3dd77ca625554b8fab19383394cb790e
-# fe17758a58f2485ba1393a783c268730
-# 9a503c547fb74143a15857072b67370c
-# fa4dd4b0d79a46b4a40f533fee862357
-msgid "float8"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:31
-# 14cba07465b843d8b1fbc4d7cf295194
-msgid "When the edge table has the mentioned columns, the following SQL queries can be used."
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:39
-# 0f72c087756242bdb579449eb19aa0a1
-msgid "When the edge table has a different name to represent the required columns:"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:51
-# b09b0a56941346de90e0e0fe671e0df4
-msgid "The topology functions use the same names for ``id``, ``source`` and ``target`` columns of the edge table, The fowllowing parameters have as default value:"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:53
-# 0b0cd0e18e4d4c1b8680d7726f3260b4
-msgid "int4 Default ``id``"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:54
-# 184a43915fa04e1f91123985115ab7f5
-msgid "int4 Default ``source``"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:55
-# f0c709cc69b74d3a94b367634fad8f32
-msgid "int4 Default ``target``"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:56
-# 04a2a3e17a184f4f97663a809d588e77
-msgid "text Default ``the_geom``"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:57
-# a9676dced4a04ac883b7112054a08e09
-msgid "text Default ``oneway``"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:58
-# fe38ae596cf74c5d9b7d679cc1921e89
-msgid "text Default ``true`` to indicate all rows (this is not a column)"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:60
-# 7212cb1856ac4813acb06c3bfcdfce8c
-msgid "The following parameters do not have a default value and when used they have to be inserted in strict order:"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:62
-# 7e71e5b2bd214853a82981bc944088ff
-msgid "text"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:64
-#: ../../src/tutorial/custom_query.rst:65
-#: ../../src/tutorial/custom_query.rst:66
-#: ../../src/tutorial/custom_query.rst:67
-# dc1ed8e7c1d64346ae6e9b01214e3de8
-# 9be844ba33614716987e0875640d66b4
-# c8bbf392974b441781647845cc302f18
-# 1316d53ebfcf42dcbd880ff9ce33cfb3
-msgid "text[]"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:69
-# 134fff020b0e48cc828612cd5449b795
-msgid "When the columns required have the default names this can be used (pgr_func is to represent a topology function)"
-msgstr ""
-
-#: ../../src/tutorial/custom_query.rst:79
-# 6e39eee011a646699f5a33886015c080
-msgid "When the columns required do not have the default names its strongly recomended to use the *named notation*."
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/tutorial/custom_wrapper.pot b/doc/i18n/pot/doc/src/tutorial/custom_wrapper.pot
deleted file mode 100644
index 5bfe404..0000000
--- a/doc/i18n/pot/doc/src/tutorial/custom_wrapper.pot
+++ /dev/null
@@ -1,63 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/tutorial/custom_wrapper.rst:13
-# 70bd07ac44fb4ee79a8480875ef3110e
-msgid "User's wrapper contributions"
-msgstr ""
-
-#: ../../src/tutorial/custom_wrapper.rst:16
-# bd53876fbf0449e5bd8c13e28f434fb1
-msgid "How to contribute."
-msgstr ""
-
-#: ../../src/tutorial/custom_wrapper.rst:17
-# f1ebeeb384cb46b28d7ad725d2a043ab
-msgid "Use an issue tracker (see :ref:`support`) with a title containing: *Proposing a wrapper: Mywrappername*. The body will contain:"
-msgstr ""
-
-#: ../../src/tutorial/custom_wrapper.rst:19
-# 9dd8bc946b7542289e73645f5afc3e30
-msgid "author: Required"
-msgstr ""
-
-#: ../../src/tutorial/custom_wrapper.rst:20
-# 381e313e46bb44188e812ba5e24218e7
-msgid "mail: if you are subscribed to the developers list this is not necessary"
-msgstr ""
-
-#: ../../src/tutorial/custom_wrapper.rst:21
-# f902c8b242f448108cde6e8cc8364551
-msgid "date: Date posted"
-msgstr ""
-
-#: ../../src/tutorial/custom_wrapper.rst:22
-# 5de2adde9c234b50a567041468e1df7e
-msgid "comments and code: using reStructuredText format"
-msgstr ""
-
-#: ../../src/tutorial/custom_wrapper.rst:24
-# dc75ff6fc3cb4f709aecbe418998349f
-msgid "Any contact with the author will be done using the developers mailing list. The pgRouting team will evaluate the wrapper and will be included it in this section when approved."
-msgstr ""
-
-#: ../../src/tutorial/custom_wrapper.rst:27
-# 2e5442c3cb56493b850e662432a8a21b
-msgid "*No contributions at this time*"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/tutorial/index.pot b/doc/i18n/pot/doc/src/tutorial/index.pot
deleted file mode 100644
index 32f8c49..0000000
--- a/doc/i18n/pot/doc/src/tutorial/index.pot
+++ /dev/null
@@ -1,98 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/tutorial/index.rst:13
-# d134467705d24dd889eeceb01d29140d
-msgid "Tutorial"
-msgstr ""
-
-#: ../../src/tutorial/index.rst:16
-# c68e7fecbca2416db843eaf5565a6f3c
-msgid ":ref:`Getting started <tutorial>`"
-msgstr ""
-
-#: ../../src/tutorial/index.rst:18
-# cc96da12a2c4416c82484e405d456d4d
-msgid "How to create a database to use for our project"
-msgstr ""
-
-#: ../../src/tutorial/index.rst:19
-# 7349527e7c14483c9b1dd48348f05bab
-msgid "How to load some data"
-msgstr ""
-
-#: ../../src/tutorial/index.rst:20
-# d1613ad3f5144117891cf0982e5b1b80
-msgid "How to build a topology"
-msgstr ""
-
-#: ../../src/tutorial/index.rst:21
-# 9926f0ac6f1448d49435649536a92a91
-msgid "How to check your graph for errors"
-msgstr ""
-
-#: ../../src/tutorial/index.rst:22
-# 1a3ef54deea3465195f62e76e78c483d
-msgid "How to compute a route"
-msgstr ""
-
-#: ../../src/tutorial/index.rst:23
-# 7e235afaf23844e0b9c354077654e28d
-msgid "How to use other tools to view your graph and route"
-msgstr ""
-
-#: ../../src/tutorial/index.rst:24
-# cfb2e01855bf4f35893b40112946b440
-msgid "How to create a web app"
-msgstr ""
-
-#: ../../src/tutorial/index.rst:26
-# d7d7a45d9ad7444c84a7de3d75b9f152
-msgid "Advanced Topics"
-msgstr ""
-
-#: ../../src/tutorial/index.rst:28
-# 19fb3ec9e3c24a30b3efabf1bfa5988f
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-#: ../../src/tutorial/index.rst:29
-# b9a5be5e408a47679c5601e9d22afcd3
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-#: ../../src/tutorial/index.rst:30
-# 901afb3045474e88943651b269a06c24
-msgid ":ref:`custom_query` that is used in the routing algorithms."
-msgstr ""
-
-#: ../../src/tutorial/index.rst:31
-# 4d2e839290f9465292557d8eaf6cf779
-msgid ":ref:`performance` to improve your performance."
-msgstr ""
-
-#: ../../src/tutorial/index.rst:32
-# b2b14b6dcae64a5287a6032776296697
-msgid ":ref:`custom_wrapper` to colaborate with a wrapper."
-msgstr ""
-
-#: ../../src/tutorial/index.rst:33
-# 8c292a3727454de69e79bb6857ce3172
-msgid ":ref:`recipes` to colaborate with a recipe."
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/tutorial/performance.pot b/doc/i18n/pot/doc/src/tutorial/performance.pot
deleted file mode 100644
index 6255e6d..0000000
--- a/doc/i18n/pot/doc/src/tutorial/performance.pot
+++ /dev/null
@@ -1,53 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/tutorial/performance.rst:13
-# dcdbd525f2b248ecab7ac1feaffe77ef
-msgid "Performance Tips"
-msgstr ""
-
-#: ../../src/tutorial/performance.rst:16
-# 301a27864ab84e54bbb66c299f3a4b0d
-msgid "When \"you know\" that you are going to remove a set of edges from the edges table, and without those edges you are going to use a routing function you can do the following:"
-msgstr ""
-
-#: ../../src/tutorial/performance.rst:18
-# 09a0f58bd304468caf8497a339d2bfea
-msgid "Analize the new topology based on the actual topology:"
-msgstr ""
-
-#: ../../src/tutorial/performance.rst:24
-# fa006eadd05447759f7070fb8d7152b3
-msgid "Or create a new topology if the change is permanent:"
-msgstr ""
-
-#: ../../src/tutorial/performance.rst:31
-# c7ac177f8c31416a821a69f8e3ecdd93
-msgid "Use an SQL that \"removes\" the edges in the routing function"
-msgstr ""
-
-#: ../../src/tutorial/performance.rst:37
-# 36aa057dbf6a45cd83e18d532a439ec3
-msgid "When \"you know\" that the route will not go out of a particular area, to speed up the process you can use a more complex SQL query like"
-msgstr ""
-
-#: ../../src/tutorial/performance.rst:46
-# d1f505a12a444c9ea717d68a92f694d2
-msgid "Note that the same condition ``id < 17`` is used in all cases."
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/tutorial/recipes.pot b/doc/i18n/pot/doc/src/tutorial/recipes.pot
deleted file mode 100644
index 3ee0bde..0000000
--- a/doc/i18n/pot/doc/src/tutorial/recipes.pot
+++ /dev/null
@@ -1,78 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/tutorial/recipes.rst:13
-# a4969d019125422fb821d4f6a75f8f2a
-msgid "Use's Recipes contributions"
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:16
-# e2c90e0779584569bedb85cec2f79fec
-msgid "How to contribute."
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:17
-# c6e5a3af14f9478e96206dea6dcf7d79
-msgid "Use an issue tracker (see :ref:`support`) with a title containing: *Proposing a Recipe: Myrecipename*. The body will contain:"
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:19
-# 6d7180b2ba0e4c83a73d992977c51068
-msgid "author: Required"
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:20
-# ac7ecd988bf94c2cbd16f682a1bb9ecc
-msgid "mail: if you are subscribed to the developers list this is not necessary"
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:21
-# 63e56712602845b4b566be2ad234e135
-msgid "date: Date posted"
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:22
-# ebc86c53595a4fd7adfa779d57fd7ef9
-msgid "comments and code: using reStructuredText format"
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:24
-# 0600690120844238bc1a262ba19bfd0e
-msgid "Any contact with the author will be done using the developers mailing list. The pgRouting team will evaluate the recipe and will be included it in this section when approved."
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:27
-# a361bdb0686a45e6bec61b0e6828dc1d
-msgid "Comparing topology of a unnoded network with a noded network"
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:30
-# 91269bc92dfc4815890277a0e7edb23d
-msgid "pgRouting team."
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:32
-# d04425f05c0b4f55b7ff883bda1a0347
-msgid "This recipe uses the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../src/tutorial/recipes.rst:42
-# e1240db6ffb9479a9cb3eee9f888e53f
-msgid "*No more contributions*"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/tutorial/topology.pot b/doc/i18n/pot/doc/src/tutorial/topology.pot
deleted file mode 100644
index c45e33a..0000000
--- a/doc/i18n/pot/doc/src/tutorial/topology.pot
+++ /dev/null
@@ -1,88 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/tutorial/topology.rst:13
-# d9123d5e4c2c469e9a88e05bb8badeec
-msgid "Routing Topology"
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:15
-# 7cb7af56f29a423db4d384080316ca7e
-msgid "Stephen Woodbridge <woodbri at swoodbridge.com>"
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:16
-# bb80b423989c42f3b33b31563cfe5399
-msgid "Stephen Woodbridge. The source code is released under the MIT-X license."
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:20
-# 70c362c71bb5442c8809b3ac990167d6
-msgid "Overview"
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:22
-# 85ea125648d946cc9fe6880e57547b1f
-msgid "Typically when GIS files are loaded into the data database for use with pgRouting they do not have topology information associated with them. To create a useful topology the data needs to be \"noded\". This means that where two or more roads form an intersection there it needs to be a node at the intersection and all the road segments need to be broken at the intersection, assuming that you can navigate from any of these segments to any other segment via that intersection."
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:24
-# 9ee51e22158d448cae68e2a9fe09fa89
-msgid "You can use the :ref:`graph analysis functions <analytics>` to help you see where you might have topology problems in your data. If you need to node your data, we also have a function :ref:`pgr_nodeNetwork() <pgr_node_network>` that might work for you. This function splits ALL crossing segments and nodes them. There are some cases where this might NOT be the right thing to do."
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:26
-# 8f5e5be5d8eb4d75a4e8b9a01dea0077
-msgid "For example, when you have an overpass and underpass intersection, you do not want these noded, but pgr_nodeNetwork does not know that is the case and will node them which is not good because then the router will be able to turn off the overpass onto the underpass like it was a flat 2D intersection. To deal with this problem some data sets use z-levels at these types of intersections and other data might not node these intersection which would be ok."
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:28
-# 2171e350c2c644518b87fa1e1df08cdd
-msgid "For those cases where topology needs to be added the following functions may be useful. One way to prep the data for pgRouting is to add the following columns to your table and then populate them as appropriate. This example makes a lot of assumption like that you original data tables already has certain columns in it like ``one_way``, ``fcc``, and possibly others and that they contain specific data values. This is only to give you an idea of what you can do with your data."
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:49
-# 4e558a29e8fd412bbc4cedfecb8d484b
-msgid "The function :ref:`pgr_createTopology() <pgr_create_topology>` will create the ``vertices_tmp`` table and populate the ``source`` and ``target`` columns. The following example populated the remaining columns. In this example, the ``fcc`` column contains feature class code and the ``CASE`` statements converts it to an average speed."
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:112
-# 62bfa0ef907946359864eb05df3b9bae
-msgid "Now your database should be ready to use any (most?) of the pgRouting algorithms."
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:116
-# ba946c6a5f8f456ca75ee18452a2c4cb
-msgid "See Also"
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:118
-# e327c1e45b424b1fab4fa5271b4a914d
-msgid ":ref:`pgr_create_topology`"
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:119
-# c91a15fb424f4b88a868e392e0501112
-msgid ":ref:`pgr_node_network`"
-msgstr ""
-
-#: ../../src/tutorial/topology.rst:120
-# 4f51208bf997435ab050ba39c2161b68
-msgid ":ref:`pgr_point_to_id`"
-msgstr ""
-
diff --git a/doc/i18n/pot/doc/src/tutorial/tutorial.pot b/doc/i18n/pot/doc/src/tutorial/tutorial.pot
deleted file mode 100644
index b8c1275..0000000
--- a/doc/i18n/pot/doc/src/tutorial/tutorial.pot
+++ /dev/null
@@ -1,174 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../src/tutorial/tutorial.rst:13
-# 4fa427625676477cb1b87dd1d73d66cb
-msgid "Getting Started"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:15
-# dbb966efab874ff1b8a0476e0fbc52c1
-msgid "This is a simple guide to walk you through the steps of getting started with pgRouting. In this guide we will cover:"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:18
-#: ../../src/tutorial/tutorial.rst:27
-# b1b1339701754942b16ae3f85df3aa69
-# 5c9bbf6d7d8e4f698f1671a72db3bf46
-msgid "How to create a database to use for our project"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:19
-#: ../../src/tutorial/tutorial.rst:61
-# 64e5375efb394ceb9386dfe70c7ba356
-# a2fa349f8f6c4078b8b6d8008306d92d
-msgid "How to load some data"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:20
-#: ../../src/tutorial/tutorial.rst:77
-# e00e69310537477596b4a48d5f281df7
-# 9f9463792ade4d4b942b9d333b4366d9
-msgid "How to build a topology"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:21
-#: ../../src/tutorial/tutorial.rst:93
-# 4622aba512d2427db82e14a2c53eb5ea
-# a301a0c0a02f40089f5cbb347b3b6668
-msgid "How to check your graph for errors"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:22
-#: ../../src/tutorial/tutorial.rst:121
-# 45dc9701dc5f4213a7295611b6b7811f
-# b3649bed48ba4412b15dc6499d7e86eb
-msgid "How to compute a route"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:23
-#: ../../src/tutorial/tutorial.rst:142
-# e1902906d1aa4c9aa36eb36dcba81cd7
-# f43de5f970c64d078f4fffcff081e259
-msgid "How to use other tools to view your graph and route"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:24
-#: ../../src/tutorial/tutorial.rst:147
-# dbaf43eea3784d8a8266dcc29fef55c9
-# fd2b9f1faf90467396554662fdbf8ef2
-msgid "How to create a web app"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:29
-# 96187cb600b24f0da3e47a188f10f6e5
-msgid "The first thing we need to do is create a database and load pgrouting in the database. Typically you will create a database for each project. Once you have a database to work in, your can load your data and build your application in that database. This makes it easy to move your project later if you want to to say a production server."
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:35
-# e43130bd40e3494b9be318f73b9725e6
-msgid "For Postgresql 9.1 and later versions"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:44
-# d6b87512844f4305b2d26cb7a8ff5d19
-msgid "For older versions of postgresql"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:63
-# c3044d368fab44ab8b786cc57e5c193a
-msgid "How you load your data will depend in what form it comes it. There are various OpenSource tools that can help you, like:"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:66
-# c6a67a06b55e46568d65fa85269dbd26
-msgid "this is the postgresql shapefile loader"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:67
-# 65d939a281214360b0df8df9a45f4a91
-msgid "this is a vector data conversion utility"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:68
-# 80cdc1e6692a4276af3a243af69fb17c
-msgid "this is a tool for loading OSM data into postgresql"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:70
-# d41410c64b974f29b25ee3bb886255cc
-msgid "So these tools and probably others will allow you to read vector data and and can load that data into your database as a table of some kind. At this point you need to know a little about your data structure and content. One easy way to browse you data table is with pgAdmin3 or phpPgAdmin."
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:79
-# 30b9e6e2ca104b7f9ddd16e92c5ddd3b
-msgid "Next we need to build a topology for our street data. What this means is that for any given edge in your street data the ends of that edge will be connected to a unique node and to other edges that are also connected to that same unique node. Once all the edges are connected to nodes we have a graph that can be used for routing with pgrouting. We provide a tools the will help with this:"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:89
-# c03da0290952410e897a52c691bb2501
-msgid "See :ref:`pgr_create_topology` for more information."
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:95
-# fba9ad34b68e4bf581d28a5aec85f701
-msgid "There are lots of possible sources for errors in a graph. The data that you started with may not have been designed with routing in mind. A graph as some very specific requirments. One it that it is *NODED*, this means that except for some very specific use cases, each road segments starts and ends at a node and that in general is does not cross another road segment that it should be connected to."
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:102
-# 9a7d951c3c044167add56c2ba01cc504
-msgid "There can be other errors like the direction of a one-way street being entered in the wrong direction. We do not have tools to search for all possible errors but we have some basic tools that might help."
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:113
-# a28be3d4b3854387a93f6b9a4df34736
-msgid "See :ref:`analytics` for more information."
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:115
-# 45de2e4d69e84c63b389b8e835f5e070
-msgid "If your data needs to be *NODED*, we have a tool that can help for that also."
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:117
-# 5ac8361d061f47a2a75c67fb35cb72c3
-msgid "See :ref:`pgr_node_network` for more information."
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:123
-# b63410ea77944bfbbf97cf74378e81f7
-msgid "Once you have all the prep work done above, computing a route is fairly easy. We have a lot of different algorithms but they can work with your prepared road network. The general form of a route query is:"
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:131
-# 8c2139cb15374d8493e9d357b0db0a95
-msgid "As you can see this is fairly straight forward and you can look and the specific algorithms for the details on how to use them. What you get as a result from these queries will be a set of record of type :ref:`type_cost_result` or :ref:`type_geom_result`. These results have information like edge id and/or the node id along with the cost or geometry for the step in the path from *start* to *end*. Using the ids you can join these result back to your edge table to get more informatio [...]
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:139
-# 1ee9ba41f235467bbdf850b6814d9821
-msgid "See also :ref:`type_cost_result` and :ref:`type_geom_result`."
-msgstr ""
-
-#: ../../src/tutorial/tutorial.rst:144
-#: ../../src/tutorial/tutorial.rst:149
-# 7834933387a54412bfa93b3bd5910012
-# 5ed47f57bd5b4f80b06008666fc961b3
-msgid "TBD"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/apsp_johnson/doc/index.pot b/doc/i18n/pot/src/apsp_johnson/doc/index.pot
deleted file mode 100644
index c2bc4d2..0000000
--- a/doc/i18n/pot/src/apsp_johnson/doc/index.pot
+++ /dev/null
@@ -1,133 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/apsp_johnson/doc/index.rst:13
-# 88a2ec1d2eb44607a0dcec23c001f89f
-msgid "pgr_apspJohnson - All Pairs Shortest Path, Johnson's Algorithm"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:20
-# 2f8388c94505467cbaff2676afaa6256
-msgid "Name"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:22
-# 17a5236a6aca4fadaf3096c0518dec09
-msgid "``pgr_apspJohnson`` - Returns all costs for each pair of nodes in the graph."
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:26
-# 3618c952a36b4852a671f2f7b9a3ab14
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:28
-# c277608a374e444c8d7e5c5034e03f73
-msgid "Johnson's algorithm is a way to find the shortest paths between all pairs of vertices in a sparse, edge weighted, directed graph. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows for every pair of nodes in the graph."
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:36
-# cbecd97ba97d4faba51654305d98d1e9
-msgid "Description"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:38
-# 04393824e2034fda8655aac415d76c11
-msgid "a SQL query that should return the edges for the graph that will be analyzed:"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:44
-# 3e25a6e034ab42e8ad52a1bdc54d8811
-msgid "``int4`` identifier of the source vertex for this edge"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:45
-# 392c3bd6824e4bb6a2d440eb658105f6
-msgid "``int4`` identifier of the target vertex for this edge"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:46
-# e0f466d3f95444998039171e00e7f179
-msgid "``float8`` a positive value for the cost to traverse this edge"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:48
-# e3a9871c7b9843528244c29cbcf2c3fb
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:50
-# 81c0db551a0f496ea7b9db840c8df97b
-msgid "row sequence"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:51
-# b80c00eeb0c84881a5ab4b6616dadca0
-msgid "source node ID"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:52
-# 329100ef2f684ef4b1e38ee686694f4d
-msgid "target node ID"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:53
-# 3c805361256c4e63ab2a9d0e892c5edd
-msgid "cost to traverse from ``id1`` to ``id2``"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:56
-# 760bf1e4ab2843dcb5b31cfdc927c722
-msgid "History"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:57
-# 63a884de17654ec6b1b2d13b172649b6
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:61
-# de09c9bbab4747879ae4dccc40f14ee6
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:78
-# e5dc5bd74bac4bca9c72ffeebd06934c
-msgid "The query uses the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:82
-# be0394087e64497fb6149bab9d484a84
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:84
-# b8020a9b49ea4c51804260cb16f55ad5
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:85
-# 0f1298616a094d49b8455587893aac05
-msgid ":ref:`pgr_apsp_warshall`"
-msgstr ""
-
-#: ../../../src/apsp_johnson/doc/index.rst:86
-# d28e3419b9164f73b602f91ba5e564e6
-msgid "http://en.wikipedia.org/wiki/Johnson%27s_algorithm"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/apsp_warshall/doc/index.pot b/doc/i18n/pot/src/apsp_warshall/doc/index.pot
deleted file mode 100644
index 0fc03ba..0000000
--- a/doc/i18n/pot/src/apsp_warshall/doc/index.pot
+++ /dev/null
@@ -1,148 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/apsp_warshall/doc/index.rst:13
-# 7add0991b1ee4cf9bc2449e62cf04ccf
-msgid "pgr_apspWarshall - All Pairs Shortest Path, Floyd-Warshall Algorithm"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:20
-# 6fa2ac07e7ab489d9be3396059e30262
-msgid "Name"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:22
-# be59fcda2b174e958759bacd6a5eac29
-msgid "``pgr_apspWarshall`` - Returns all costs for each pair of nodes in the graph."
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:26
-# 9b1c345344de48c5a7de376fb938b2bc
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:28
-# a4bfac99a1434f7ba1b18f928a646f03
-msgid "The Floyd-Warshall algorithm (also known as Floyd's algorithm and other names) is a graph analysis algorithm for finding the shortest paths between all pairs of nodes in a weighted graph. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows for every pair of nodes in the graph."
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:36
-# 73b7f90125c84f4c91ed8969ccd69073
-msgid "Description"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:38
-# 7687d12f83fe4e678c0e1586c9cc637f
-msgid "a SQL query that should return the edges for the graph that will be analyzed:"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:44
-# 4e716a827d30422abf5601ab943b1d75
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:45
-# 435999fb331c43d19f27443aaae1cd69
-msgid "``int4`` identifier of the source vertex for this edge"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:46
-# b9639050a9564c17a16b7bf16707da5c
-msgid "``int4`` identifier of the target vertex for this edge"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:47
-# 27bb14f92a1944e28848eac6b641ecc9
-msgid "``float8`` a positive value for the cost to traverse this edge"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:49
-# 04cfdb319da040bebe2de7328a0216cb
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:50
-# 6efa1b6d77a048dd8d4d578541690843
-msgid "if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction."
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:52
-# 8173dc4688734aa8966a3fbdc93d3522
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:54
-# 64866735e3e9480d98052558054d9763
-msgid "row sequence"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:55
-# dbe11772c5064f4e8802bb2c3725ba73
-msgid "source node ID"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:56
-# b43dd7b099604f21840c8dd646206182
-msgid "target node ID"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:57
-# c1e3f1144400411f9a33ef40575436bb
-msgid "cost to traverse from ``id1`` to ``id2``"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:61
-# 547f485bb8fb4073a528b42603590799
-msgid "History"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:62
-# 31e70bb2a9904407ae43d844f4642fe4
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:66
-# e9715dc4ef1f4633957589e9abeb3ba7
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:84
-# d4d26a7ba28d42ca8e874a54942bc42a
-msgid "The query uses the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:88
-# 9aa2f0f54f6b47ca893a2d1987631a01
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:90
-# cdc67360bcf1411fa86355bf3191d741
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:91
-# eb60bcbf87dd42fe84e7bc462bd0ae92
-msgid ":ref:`pgr_apsp_johnson`"
-msgstr ""
-
-#: ../../../src/apsp_warshall/doc/index.rst:92
-# d94fd234d41b4421a447cb6c532d5c9a
-msgid "http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/astar/doc/index.pot b/doc/i18n/pot/src/astar/doc/index.pot
deleted file mode 100644
index 2cc3b9e..0000000
--- a/doc/i18n/pot/src/astar/doc/index.pot
+++ /dev/null
@@ -1,188 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/astar/doc/index.rst:13
-# 6e1e586d213443b784008328909e5ece
-msgid "pgr_astar - Shortest Path A*"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:20
-# 2facf0f31f2146489701757746e8a64a
-msgid "Name"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:22
-# 23aacea288c342798e40cf0e9ba814c9
-msgid "``pgr_astar`` — Returns the shortest path using A* algorithm."
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:26
-# acf9bf94f29e4b06b7484e750b4b90a2
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:28
-# ef84d81b818b48008d29bc99965a6777
-msgid "The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm with a heuristic that allow it to solve most shortest path problems by evaluation only a sub-set of the overall graph. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:37
-# 2b4f80c2b5b34af5915bdd1bbda06371
-msgid "Description"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:39
-# 73b24acd9a0a4cabbb90fb0722484f64
-msgid "a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:46
-# 170c19f4695f4528b1032549f545e7da
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:47
-# 2c6b77c66814423fb74406d92b5f94ce
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:48
-# 15b50cb99b7b437f89a8d677084941bb
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:49
-# 325ac85ef0124349938b85bc8c4c0dad
-msgid "``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph."
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:50
-# d787e67c203f4224af29aab1d419490f
-msgid "``x`` coordinate of the start point of the edge"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:51
-# 2906752f87f24b64a6e5b7321b0db4b1
-msgid "``y`` coordinate of the start point of the edge"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:52
-# caf5b571d9d94061a23572a64c4d1b97
-msgid "``x`` coordinate of the end point of the edge"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:53
-# 09f3e444d5b84c449c9b4bfed347727c
-msgid "``y`` coordinate of the end point of the edge"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:54
-# 23cefa9d8f8d4175a70310ba6cff3491
-msgid "(optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs)."
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:56
-# a67e6af024634f0b9951a9ee8c9a5b0e
-msgid "``int4`` id of the start point"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:57
-# 0d93c19173084e758387fbdf0685e7eb
-msgid "``int4`` id of the end point"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:58
-# d775130bce1240e29e45304d0e01b438
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:59
-# 01a1716de277419bb01c175efa6fc8a6
-msgid "if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction."
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:61
-# 9053bb99674d467c90a070c7475ba028
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:63
-# d4c3a227512549ac9b51a4b4574e82a6
-msgid "row sequence"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:64
-# 883026be35e04211b0017c663b155fc3
-msgid "node ID"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:65
-# 58d443157e2941c1af29d7fd7f16ce3b
-msgid "edge ID (``-1`` for the last row)"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:66
-# f5bfb7d3074b40fd95b474899a49fb42
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:70
-# 5b850b7d5d74412fbfe7c33a0d944ec1
-msgid "History"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:71
-# 6dbcad5c304445bb90e3d32a771ee68b
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:75
-# cd89b18e41e44a87998eee51aa4484dc
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:77
-# e9194064ec3642a3be701e5b6beb5cba
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:99
-# c7f170f7fc3e4a8ebfd8e0e5808d0640
-msgid "With ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:117
-# 540bf79726d843d88a072ba5ac357cc9
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:121
-# 0534beb965ef450e898194e478a8ad99
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:123
-# ebdee1902c164749b486df950420287b
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-#: ../../../src/astar/doc/index.rst:124
-# d54c6506fb0b4d10a75e6d6965a9f8c0
-msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/bd_astar/doc/index.pot b/doc/i18n/pot/src/bd_astar/doc/index.pot
deleted file mode 100644
index fadc202..0000000
--- a/doc/i18n/pot/src/bd_astar/doc/index.pot
+++ /dev/null
@@ -1,203 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/bd_astar/doc/index.rst:13
-# 94d553821b2843da8b53f2b62144b2ac
-msgid "pgr_bdAstar - Bi-directional A* Shortest Path"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:20
-# d66a892d62ea42f389ac4d633677bc69
-msgid "Name"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:22
-# af928c8cbb924f2a8e51c2ee5b809a1a
-msgid "``pgr_bdAstar`` - Returns the shortest path using Bidirectional A* algorithm."
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:26
-# 9c224b471f5744db9fab9bc20e85ea4f
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:28
-# 796b6647ea7343cba5cb08d5b378ab90
-msgid "This is a bi-directional A* search algorithm. It searchs from the source toward the distination and at the same time from the destination to the source and terminates whe these to searchs meet in the middle. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:37
-# 8725c147c87145b18b91fce7eef413e8
-msgid "Description"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:39
-# 5b595925c43e40f3ba35fd9ad4863a92
-msgid "a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:46
-# 349f1a1cc4a343b99b10297f9254fa6d
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:47
-# 4290dfb0558549ab82cfbbd0a7a7791e
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:48
-# 3b6f59d09a2b4506b2fb5d08f8d94fbf
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:49
-# 317ca9c7b5104fa7a0e9bb4fe944ce82
-msgid "``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph."
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:50
-# 191d7cb28c2f49bba23dbf0b8848d74e
-msgid "``x`` coordinate of the start point of the edge"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:51
-# aadcb526a9f54bdf9499ff31a5c988a2
-msgid "``y`` coordinate of the start point of the edge"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:52
-# a1f9145757ab4193a1bb998f34438c9a
-msgid "``x`` coordinate of the end point of the edge"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:53
-# 96fc3a62bd38495ba875685af0462eb4
-msgid "``y`` coordinate of the end point of the edge"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:54
-# d81a0f9f10b74755a00b60e69a26f2a2
-msgid "(optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs)."
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:56
-# 45182780b36c4bf79c8d40211f1e99ec
-msgid "``int4`` id of the start point"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:57
-# f3177ef8858649878c1ae22a6a330acd
-msgid "``int4`` id of the end point"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:58
-# 698fa2d9c6d94092a9e0e7e99ba795b5
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:59
-# ec9151bbea714618b966e3a4e0144fb8
-msgid "if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction."
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:61
-# 35ae9e0fbf7b4bf5b1bd2b8ef5682c64
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:63
-# ba88c81469da47dc98ffac1c11199489
-msgid "row sequence"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:64
-# 0f5c9120b49740f493aa38b9df82dab0
-msgid "node ID"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:65
-# 985b7d421710447385e7d3d37e311590
-msgid "edge ID (``-1`` for the last row)"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:66
-# 2aac10119ea244b8b0a064e3277f70d5
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:70
-# 16b869e2a9c34357806099659c237e08
-msgid "You must reconnect to the database after ``CREATE EXTENSION pgrouting``. Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:74
-# 11446825468747189e98ea3e7110fae1
-msgid "History"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:75
-# d95dd9d2ac904f7a8ee6fe9ab78a7738
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:79
-# b926578064e14ec9befea2cbcdcb47a0
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:81
-# 3d07cb2cc3c9492db217a0574dfda373
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:101
-# fa4260eb1fe248cf8572e37c60e387d2
-msgid "With ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:120
-# c01af650893943b4bc17cde283c41a18
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:124
-# f1d4852c159b455580e97a7956413aee
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:126
-# 8a47b4b822a149ac9872af9e6198353c
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:127
-# b4440a71fb6a4e5daf6d46b8e557780f
-msgid ":ref:`bd_dijkstra`"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:128
-# 2f7b25d2e2644a2bb0b7757c92d0bcef
-msgid "http://en.wikipedia.org/wiki/Bidirectional_search"
-msgstr ""
-
-#: ../../../src/bd_astar/doc/index.rst:129
-# 540474312722476ba70eac8d56ff1887
-msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/bd_dijkstra/doc/index.pot b/doc/i18n/pot/src/bd_dijkstra/doc/index.pot
deleted file mode 100644
index 524c416..0000000
--- a/doc/i18n/pot/src/bd_dijkstra/doc/index.pot
+++ /dev/null
@@ -1,178 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/bd_dijkstra/doc/index.rst:13
-# cd087563fa634417a9a96f1447db3eef
-msgid "pgr_bdDijkstra - Bi-directional Dijkstra Shortest Path"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:21
-# 8792d257978d40b78b63abe4efc5e526
-msgid "Name"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:23
-# 837b0c3d34e748dd8604ad26d045af3b
-msgid "``pgr_bdDijkstra`` - Returns the shortest path using Bidirectional Dijkstra algorithm."
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:27
-# b0164687c8474bb58b095e2a16944cb5
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:29
-# 468d5a655f514969b05514fc141936cd
-msgid "This is a bi-directional Dijkstra search algorithm. It searchs from the source toward the distination and at the same time from the destination to the source and terminates whe these to searchs meet in the middle. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:38
-# c1d7beb510774fb1bcfaaabf7de9ffdb
-msgid "Description"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:40
-# 022ee086b0cf494f920b34c5bf9ab727
-msgid "a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:47
-# d492aaf139ca4f1e862a40b159c05c39
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:48
-# 62644c61c70f44d3b3dbc5ddb896a59e
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:49
-# 0d8b18de07504cde837a6fce2619d6a8
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:50
-# a5db01a342ed4659ac55681c020e7b8c
-msgid "``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph."
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:51
-# f947208020fc4835826101f9a5b2a2e6
-msgid "(optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs)."
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:53
-# 8af5c7909ee3491381b628192ea60583
-msgid "``int4`` id of the start point"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:54
-# b2e95038b1174633b071d88bb5b89f52
-msgid "``int4`` id of the end point"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:55
-# 2c8bee2885f94ec7b4238ae1ae4acf8d
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:56
-# 256f47e8dcfb4938bc26e27cbdf2f010
-msgid "if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction."
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:58
-# 6d9e7fff08af4a06995fbbbca0210783
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:60
-# f9139c237adb4ae5a68dcf9cdf00fa88
-msgid "row sequence"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:61
-# cf58390319724ff28fcf907d2c10f9ac
-msgid "node ID"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:62
-# 592c54ff23f34cfbb8aab59112f8bffa
-msgid "edge ID (``-1`` for the last row)"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:63
-# 0ca96bd644b847c396563b2d230838c3
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:66
-# 15894b000d784eb7b3228a22113ad2c1
-msgid "History"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:67
-# 5749a50aaa3949a2b093e3c474d74bbb
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:71
-# fe393668e10441ff8d71c2399d47aff8
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:73
-# f5b17ce493294d2f8a5b47b034f89acb
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:93
-# 7b362f2655c44b2e80a0fcbd72489fb8
-msgid "With ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:113
-# 0aea658bd347454a915aa248d4e5db72
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:117
-# 89cc685068e345f2a2a0aa44d793a833
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:119
-# 474fed6e1f654dd7887a1e646ca466a6
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:120
-# ca73c5f11d8a40e1a6280cad363bd614
-msgid ":ref:`bd_astar`"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:121
-# fca2300e8ffd4f919376e6bcfb7798ec
-msgid "http://en.wikipedia.org/wiki/Bidirectional_search"
-msgstr ""
-
-#: ../../../src/bd_dijkstra/doc/index.rst:122
-# eaefcfbf6d4c4f05af6ccff090f48be4
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/analyze_graph.pot b/doc/i18n/pot/src/common/doc/functions/analyze_graph.pot
deleted file mode 100644
index c04cb42..0000000
--- a/doc/i18n/pot/src/common/doc/functions/analyze_graph.pot
+++ /dev/null
@@ -1,360 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:13
-# 53296f8e73474011b28fc01905a2eceb
-msgid "pgr_analyzeGraph"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:20
-# a9ff33e8d32b4fe8876e390f6daac4c6
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:22
-# 6d37842f5bd849ecb80efe9b198325b9
-msgid "``pgr_anlizeGraph`` — Analyzes the network topology."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:26
-# abe284778bb645899a176b9a8f00800b
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:28
-#: ../../../src/common/doc/functions/analyze_graph.rst:61
-# 4a67a9eb11fd4ad4bcbc544aea9672ea
-# 9b0bd64389e44dddafa6c5fa4ddc9d1c
-msgid "The function returns:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:30
-#: ../../../src/common/doc/functions/analyze_graph.rst:63
-# 6844bd6c77ce4c0db77c04aa67e2de95
-# ecb54ce2e73e4d7b8e7961d9355b74b7
-msgid "``OK`` after the analysis has finished."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:31
-#: ../../../src/common/doc/functions/analyze_graph.rst:69
-# 8815bbad2a1342a38b27439e65f1acc4
-# f28a0ca1c3224407ab774973b719898e
-msgid "``FAIL`` when the analysis was not completed due to an error."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:40
-# 6151576984d8477e876bcbc67e94e414
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:43
-# e09f06bede684ceea5fac809d46fe810
-msgid "Prerequisites"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:44
-# b8cc242999a4400788d34bff97cc3ba5
-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 <edge_table>_vertices_pgr that stores the vertices information."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:46
-# b6d175711f1d4c6d83a2c3731abd2b5e
-msgid "Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the vertices table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:47
-# 9c083425d21a4895ae03834df0bb204b
-msgid "Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology and the vertices table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:50
-# 76f922a853d14626985bd89f1383f3e8
-msgid "Parameters"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:51
-# 70a11d91f4b94cf2b1e5597a655be0b0
-msgid "The analyze graph function accepts the following parameters:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:53
-# de4891a7dbbe47b69f6420d6eb547778
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:54
-# f5902ebc84e44ddabf87cef3b7dee0f0
-msgid "``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:55
-# 4a6edc40ffc9470793686e6ca7cd0753
-msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:56
-# c1499758fb98480da967cf3ddfe55853
-msgid "``text`` Primary key column name of the network table. Default value is ``id``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:57
-# dc010031e2424cdb890335d45a71d242
-msgid "``text`` Source column name of the network table. Default value is ``source``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:58
-# 7cd55fba939742c9978ded9c9748deed
-msgid "``text`` Target column name of the network table. Default value is ``target``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:59
-# 345f64633a4c448b8ecd11cb5bd42041
-msgid "``text`` Condition to select a subset or rows. Default value is ``true`` to indicate all rows."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:65
-# a07eab49ed854bf193e003948cf9fb05
-msgid "Uses the vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:66
-# bcde9f4bc93b49c2b2415cbb21d4ca3f
-msgid "Fills completly the ``cnt`` and ``chk`` columns of the vertices table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:67
-# 9bb7b639647c49d18871684b99930d74
-msgid "Returns the analysis of the section of the network defined by ``rows_where``"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:71
-# b967488c400f47eda9c765417683d8b7
-msgid "The vertices table is not found."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:72
-# a63cc4d5fd0f4d48b9885bca068f6b01
-msgid "A required column of the Network table is not found or is not of the appropriate type."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:73
-# d287c3e270fb4013ad83bfc189e8af77
-msgid "The condition is not well formed."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:74
-# b3a972d53f204fa8bd4ae6ae88eff76f
-msgid "The names of source , target or id are the same."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:75
-# 35c5085b0ce741e9aa6953479f1f127c
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:79
-# 6f547ddda2ff46f89859338633cbf0cb
-msgid "The Vertices Table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:80
-# d4e491cd97cf4b68bbcd954930cd47de
-msgid "The vertices table can be created with :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:82
-# 3f55a076c4e4466fa079b946c0a7e454
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:84
-# 7f6c53b9512c44ec83ce405d430cf768
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:85
-# 65c23f4e9a904d10a7b76e54f1a44f1d
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:86
-# d55fdb616d624f6e993c7e728929d707
-msgid "``integer`` Indicator that the vertex might have a problem."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:87
-# 35904deb26774982a5cd233c99c83c08
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:88
-# 9fa235f539a341f69afa16d5c1c3c2df
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:89
-# 07f0acf41b0a46e4a3bd351af1c46c03
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:92
-# 56966f47b876419c84e5d6a0c6d073ec
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:93
-# ca1c28beb6404d42b53f2ca962a0fedf
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:96
-# 662e9c746d03470998e226040593f93f
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:99
-# 7c9b355410c8454ab8183fef23420f2e
-msgid "The simplest way to use pgr_analyzeGraph is:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:106
-# 8a24a9dcf21a4d2f81e3891b2b1a9320
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:111
-# b1415b38a05546d980abd87ba888ebb5
-msgid "We get the same result as the simplest way to use the function."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:118
-#: ../../../src/common/doc/functions/analyze_graph.rst:184
-# da4890853e66469d88a30e44850f8554
-# 8790c3dfbeb048ef884d217443273bf9
-msgid "When using the named notation"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:119
-#: ../../../src/common/doc/functions/analyze_graph.rst:185
-# 4bb30134280c41f69e7bf11d2ce582a5
-# f5b2f0a0bab54cf2865759a0a49db759
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:129
-# a9c325861d2b491cac0a7adef86882a9
-msgid "Parameters defined with a default value can be ommited, as long as the value matches the default:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:136
-#: ../../../src/common/doc/functions/analyze_graph.rst:199
-# 2313c3c501b749669a51001a30acaa5f
-# 12c436bdd7be4aa4bd271bf92fc2bcb6
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:137
-# 2feb27747d194170837630a768421acf
-msgid "Selecting rows based on the id. Displays the analysis a the section of the network."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:143
-# 4c84e7c1d62a414fb245092ff2a8300a
-msgid "Selecting the rows where the geometry is near the geometry of row with ``id`` =5 ."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:149
-# 3775e8094da5493caae4ea999ade2d8c
-msgid "Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:160
-# cd9e7427df954eacb895df213dba2f14
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:162
-# f3bac5580daf4591aa486aa57bbce01b
-msgid "For the following table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:171
-# f43305e3194f4ee1969522d707a85cdd
-msgid "Using positional notation:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:172
-# 2504a81fed7f4cd182be87b388204e91
-msgid "The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:195
-# f523b7ecbf2b47b892bbebb0942d013d
-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 ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:200
-# f85a9896ab6c40de814133473b759f6e
-msgid "Selecting rows based on the id."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:210
-# 3e5a9ad67cb14497ae1e7bd84d79d34f
-msgid "Selecting the rows WHERE the geometry is near the geometry of row with ``id`` =5 ."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:222
-# 0a2bbe5acbe543b8b46decda47536690
-msgid "Selecting the rows WHERE the geometry is near the place='myhouse' of the table ``othertable``. (note the use of quote_literal)"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:239
-# 78ecd4d365f34d98b3b4e8790a54f749
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:366
-# cca99ab5844e465588f4c80e48f3c55e
-msgid "The examples use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:370
-# 5307571be3b94a37ac8b874e39952cc0
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:372
-# 33bf2b15c0474e1190dd51f154e3c707
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:373
-# 19e9e8853cf4428eac4d0a21abfb43c5
-msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:374
-# 977b5f0505ad40ff9a60c96cbbb31eb8
-msgid ":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the vertices table based on the source and target information."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_graph.rst:375
-# 18f197b27f90406f9c4162b0fa53ff3d
-msgid ":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded edge table."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/analyze_oneway.pot b/doc/i18n/pot/src/common/doc/functions/analyze_oneway.pot
deleted file mode 100644
index 6f59e84..0000000
--- a/doc/i18n/pot/src/common/doc/functions/analyze_oneway.pot
+++ /dev/null
@@ -1,273 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:13
-# cd2b46cedc604e1ab5287aecab9ac075
-msgid "pgr_analyzeOneway"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:20
-# a4175d27465445508c66a6946c3fbc5a
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:22
-# 3e3c99f2a8214eb4a3faaa39fefc2e0c
-msgid "``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped segments."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:26
-# 8f309ac104ec4e55b2464222b41ee221
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:28
-# a5fbf3f35a5640cca13be3a84e2cb44f
-msgid "This function analyzes oneway streets in a graph and identifies any flipped segments."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:40
-# 9dce8875582a404696ee5db4d04918ad
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:42
-# 6837009b5352472695f51592c2e192b2
-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 no [...]
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:44
-# 391713a7c958440ba1f21ae9dc2de2a6
-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 ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:46
-# fca5f219411a488ea010b839c1857c39
-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 ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:49
-# e9e00f6bf74c4e1cb1ca6c32976c7b26
-msgid "Prerequisites"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:50
-# c574bb6e95f641e284a268f706077a01
-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 <edge_table>_vertices_pgr that stores the vertices information."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:52
-# a7b0ea9132de4afca4d7e548cb86ef19
-msgid "Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the vertices table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:53
-# 5e4b58693280495fa62bca8f9a091797
-msgid "Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology and the vertices table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:56
-# 74ead58164c5476d9a4b70270bd5d703
-msgid "Parameters"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:57
-# 4613a3ad8f084141aa87f350c36c7bb3
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:58
-# e1865ee56a614646873fcfb11a66703e
-msgid "``text[]`` source node **in** rules"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:59
-# cd2863921e4d4f2a8e8cb1801d7ab848
-msgid "``text[]`` source node **out** rules"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:60
-# c876f3fab4dc4a5c8e488edfae671f7d
-msgid "``text[]`` target node **in** rules"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:61
-# 60ad166af1924da5aa34a9f800dbe485
-msgid "``text[]`` target node **out** rules"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:62
-# 73e54c7fd26546fd9f85a6ec74241e40
-msgid "``text`` oneway column name name of the network table. Default value is ``oneway``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:63
-# ed69f6daeab64593a1a92a9150296a15
-msgid "``text`` Source column name of the network table. Default value is ``source``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:64
-# 7f224684dfdb43a7801ba81d2ffd4bf0
-msgid "``text`` Target column name of the network table. Default value is ``target``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:65
-# 401d7513740543e2a455651239330731
-msgid "``boolean`` flag to treat oneway NULL values as bi-directional. Default value is ``true``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:67
-# d66fd9c242c94ea7b40b7614b6a0ebf4
-msgid "It is strongly recommended to use the named notation. See :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>` for examples."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:70
-# 1d84d525fda34d00ac27cbc5da3c4c44
-msgid "The function returns:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:72
-# 72a20c2696bc48f593f07b2c3a8dd1ff
-msgid "``OK`` after the analysis has finished."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:74
-# d381c7f752254029bc4a21e18e9bc700
-msgid "Uses the vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:75
-# a316006c25a549cb99b93c263c6a1901
-msgid "Fills completely the ``ein`` and ``eout`` columns of the vertices table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:77
-# caadbc05a852481da09d131b3938306c
-msgid "``FAIL`` when the analysis was not completed due to an error."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:79
-# 8586b50eb34b454a9d47af412939940c
-msgid "The vertices table is not found."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:80
-# 40595774f1134b57a6ed7a432f4e60d9
-msgid "A required column of the Network table is not found or is not of the appropriate type."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:81
-# 3315953bc0554eb7b240234181e33ced
-msgid "The names of source , target or oneway are the same."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:83
-# ffa21a86aa99420cb9f6e5fb38127280
-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 ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:86
-# a93b5bf2b9ce4e39b6e0bc6129752051
-msgid "The Vertices Table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:87
-# 2cedeec119d44237baf88f13550d0547
-msgid "The vertices table can be created with :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:89
-# cc957f24f3b1443f9b3bf8f59bf6b7c7
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:91
-# 01a48bd17955434ea31bb91e7b62c192
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:92
-# d7a908b9938044bea052101db854cb5d
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:93
-# 273ac35d950540b694d298d6c1668239
-msgid "``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:94
-# 9fe0761d1a474f75bf053dda227d41f6
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex as incoming."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:95
-# 08306551ee0240fc8daf114089f9ca5f
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex as outgoing."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:96
-# 38cac0c9db7346139d769f2ec9123ec4
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:100
-# d44990981a9f42a7aac68c9945e35af8
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:101
-# 0a311568293a48f6956e4f292b75b510
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:105
-# fb2126471e71404885a2c9b07fefffc6
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:129
-# c4009d22e3fd4fd49e54137665bfb090
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:133
-# b45fe0aec3c746038afef68b1fd86b2b
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:135
-# fd9f9c4b02f44abda48888853b3f85e6
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:136
-# 52d0f1d2584b466a89fab3ce38d106c9
-msgid ":ref:`analytics` for an overview of the analysis of a graph."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:137
-# 97ef0178ae294c64b232a031b8f1a3e1
-msgid ":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/analyze_oneway.rst:138
-# 691d757a8c4a4ce2aba7fc701fa8582b
-msgid ":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the source and target information."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/create_topology.pot b/doc/i18n/pot/src/common/doc/functions/create_topology.pot
deleted file mode 100644
index 5086eda..0000000
--- a/doc/i18n/pot/src/common/doc/functions/create_topology.pot
+++ /dev/null
@@ -1,367 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/create_topology.rst:13
-# a057d4235b0f410b8a51c86b4f1d239e
-msgid "pgr_createTopology"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:20
-# 876ac7339cfa4d5d9c5e98495016fe42
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:22
-# eb2a5070684f46bd90b9f8512750b680
-msgid "``pgr_createTopology`` — Builds a network topology based on the geometry information."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:26
-# 7263a0f9a25d48b085678d32bbea9db7
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:28
-#: ../../../src/common/doc/functions/create_topology.rst:69
-# 92f5bca5e18049199dc016877f4494eb
-# 5fe62a12a8344a67919197d00d01bb16
-msgid "The function returns:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:30
-# d78b55aaaf3a43269616fcdda85c5020
-msgid "``OK`` after the network topology has been built and the vertices table created."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:31
-# 8f3071556cda4e5a995aacae3f5662e6
-msgid "``FAIL`` when the network topology was not built due to an error."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:42
-# a3909db63bbc48f88abfc9bc23b15b2e
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:45
-# ac9560f65a814fdeb938bcdf2a6804c5
-msgid "Parameters"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:46
-# e59968660f7d41f1a56e0c677cb1bcac
-msgid "The topology creation function accepts the following parameters:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:48
-# 512435b2814443a8a6c755edfd8b61d2
-msgid "``text`` Network table name. (may contain the schema name AS well)"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:49
-# 4dabef5beb804f1aa78222ca095d5fd5
-msgid "``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:50
-# b1b948b75c8c4ab09961a27683512362
-msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:51
-# 8c92e096fedb4669b3c6f5fd930a7e94
-msgid "``text`` Primary key column name of the network table. Default value is ``id``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:52
-# b45b04a21eb04a0fb1dd39c979c48094
-msgid "``text`` Source column name of the network table. Default value is ``source``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:53
-# ee599f7fe1da4578b98b493b6df70680
-msgid "``text`` Target column name of the network table. Default value is ``target``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:54
-# a078a560551a49d38d28d42c4736169c
-msgid "``text`` Condition to SELECT a subset or rows. Default value is ``true`` to indicate all rows."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:58
-# 988ceb63f5194a26b3f7e09b033d42b3
-msgid "The ``edge_table`` will be affected"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:60
-# a1aa8461a462439ead0575f38bc1ee51
-msgid "The ``source`` column values will change."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:61
-# da96e9e35745453296b842e2d294261b
-msgid "The ``target`` column values will change."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:62
-# be376c91462a4c6ba7e7a389eae05023
-msgid "An index will be created, if it doesn't exists, to speed up the process to the following columns:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:64
-# 119a1ff059274fc8af0acebed30c6c4c
-msgid "``id``"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:65
-# 8556ba19ffb4495d89f47f5db0710bb5
-msgid "``the_geom``"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:66
-# fea48b704221400680207aba1015868e
-msgid "``source``"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:67
-# 32783a4e5dd7480ab8490e5f1c7b4dc2
-msgid "``target``"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:71
-# 5c14015f45cf4b3c86cbeed39d47c6a4
-msgid "``OK`` after the network topology has been built."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:73
-# c15c0dadb9a74b13a62173d12792fdd1
-msgid "Creates a vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:74
-# 93e6d9cd7128495d8d34fe6be8981994
-msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:75
-# d7675cb094654e7b82256730b0951ed1
-msgid "Fills the source and target columns of the edge table referencing the ``id`` of the vertices table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:78
-# e3e0e07fa01f426ab3fdb5c3f0b10d2d
-msgid "``FAIL`` when the network topology was not built due to an error:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:80
-# 1bb5c01982b64b7da8db5ad0c7a61028
-msgid "A required column of the Network table is not found or is not of the appropriate type."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:81
-# e909065fd5fb41bdae222dbbc03acc6d
-msgid "The condition is not well formed."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:82
-# ad03c82e96974cf592bce638a7b19829
-msgid "The names of source , target or id are the same."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:83
-# ca417f626fae4d7e9854b9fa8a9ffaff
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:87
-# 4f04770eda4e4fcbbb5b0b275829e0f7
-msgid "The Vertices Table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:88
-# 3c118b71108142fab9911c3d4b533fb2
-msgid "The vertices table is a requirment of the :ref:`pgr_analyzeGraph <pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` functions."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:90
-# c948e5b57b764e60a9cce10094d7c9f0
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:92
-# 80329822774e4174a4039771071c23ba
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:93
-# 5280fb8e31194994b9763e4149846253
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:94
-# 9a86c7965034442c95d310d44e6fe4e2
-msgid "``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:95
-# aae4ac8fd58b44f19e4c30f9c6ac9798
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:96
-# 213baacdd22e4728ab8a8ccf78ae6516
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:97
-# 1744e8d6bb454e1d8323cddca24b3f49
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:100
-# 80a77df8d710441bbfa89f7f8dbe80fe
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:101
-# 7a36a50edc3d479a92a954c8fdeac046
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:104
-# b9204acb696e42bdaefa65418f3bf3b2
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:107
-# 0d2de92f9ed24cb88592d55123ed6f4f
-msgid "The simplest way to use pgr_createtopology is:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:115
-# 357d886a0524445ea68bbf19f0e61f49
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:120
-# f3c9f2926d9a4993810c2fff1c060934
-msgid "We get the same result AS the simplest way to use the function."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:127
-#: ../../../src/common/doc/functions/create_topology.rst:192
-# e7301499167b4633b6602390bc293b03
-# ed3bba1a504b4e29b784325c99267d4d
-msgid "When using the named notation"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:128
-#: ../../../src/common/doc/functions/create_topology.rst:193
-# f9a61303a41046c9918ad3512bd02f2c
-# 9881940dbd8441df847104029bbcbf78
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:138
-# 8dbf66976cea42268b69dc7ff00bd9a5
-msgid "Parameters defined with a default value can be omited, AS long AS the value matches the default:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:145
-#: ../../../src/common/doc/functions/create_topology.rst:207
-# e0b00d8a30db469a806d0664b131cdc7
-# 3b10c72dc1a24e8998c9ee46912b366f
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:146
-#: ../../../src/common/doc/functions/create_topology.rst:208
-# 6f49e677fd684a559b2f9923bae23a55
-# 7bffa75333ab405a8bd6a8caa1ab28fb
-msgid "Selecting rows based on the id."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:152
-#: ../../../src/common/doc/functions/create_topology.rst:218
-# 91f444b2e3274fd9a0cdd5806d65c1cf
-# efb16059a3914b2d877dcf980fe49fa5
-msgid "Selecting the rows where the geometry is near the geometry of row with ``id`` =5 ."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:158
-#: ../../../src/common/doc/functions/create_topology.rst:230
-# 161e8e6a307f42e58bcd5b3a83a1f66c
-# e38c78705c6649a1a4805ee7f5c2fb7a
-msgid "Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:169
-# b157f423279642af98591835eaaf2b54
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:171
-# 251042ad3df84397b5e8e8d170e80d2b
-msgid "For the following table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:179
-# 69f91e04ea3b401f9b0904b150976673
-msgid "Using positional notation:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:180
-# ec942a72f3444536ba640a6ff698f2f8
-msgid "The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:203
-# a4035cf96ed444a9bd41789ffebb958a
-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 ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:247
-# 87335dd660b243e3ad76d7cbb518eada
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:279
-# a869009035b941729ff0ffa7455a3e42
-msgid "The example uses the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:283
-# cb2b4d2e75854b198e4b25d05003f098
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:285
-# 4a3a07550bbe4810ac080806624b4d8b
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:286
-# d1922d7a561e4ff69449fe75f8bcf84e
-msgid ":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the source and target information."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_topology.rst:287
-# 325f59cdc7e04d39ace5a8bb0c5395f8
-msgid ":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/create_vert_table.pot b/doc/i18n/pot/src/common/doc/functions/create_vert_table.pot
deleted file mode 100644
index c5232e9..0000000
--- a/doc/i18n/pot/src/common/doc/functions/create_vert_table.pot
+++ /dev/null
@@ -1,342 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:13
-# 19a631dd8d134b8b84a68204ed3e9d41
-msgid "pgr_createVerticesTable"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:20
-# dbd6600ecaac45f6b8867e57eb38fc5d
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:22
-# a29458cc158d4f499d981869b9fe80f1
-msgid "``pgr_createVerticesTable`` — Reconstructs the vertices table based on the source and target information."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:26
-# aae2526fd60c48e180fef3b043df1e78
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:28
-#: ../../../src/common/doc/functions/create_vert_table.rst:63
-# 27dc7808202b457697769289df7fd7df
-# aa36c85dd6024813a58efb3559cea011
-msgid "The function returns:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:30
-#: ../../../src/common/doc/functions/create_vert_table.rst:65
-# a71d7d0641964f8ab1d90cc85ffa5698
-# d23fc0c9251a4a7893267070122dece1
-msgid "``OK`` after the vertices table has been reconstructed."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:31
-#: ../../../src/common/doc/functions/create_vert_table.rst:70
-# 575b00c1ef0d4ce9be181b3a4618b86a
-# c4f9095eb78b46cda68c21b5b6c4177a
-msgid "``FAIL`` when the vertices table was not reconstructed due to an error."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:41
-# 5d4e599359bb4044a0ab76a42ec24d55
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:44
-# ff2ba7f56e154fbfb7c8ca1cef5bcd83
-msgid "Parameters"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:45
-# d6fe650a9beb48faae0604ad27d0473e
-msgid "The reconstruction of the vertices table function accepts the following parameters:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:47
-# 1cb3bba0eace4224bfd959ceb965d5b3
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:48
-# 3693db7e8e03488f8c7e41ce66f68564
-msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:49
-# db6c17c2d53a417f9c03f50c92c005e3
-msgid "``text`` Source column name of the network table. Default value is ``source``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:50
-# 07030afe12f24527a339ee08106acdd4
-msgid "``text`` Target column name of the network table. Default value is ``target``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:51
-# 953d953272574d1cb2f2082781e7cd57
-msgid "``text`` Condition to SELECT a subset or rows. Default value is ``true`` to indicate all rows."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:55
-# 93eec2b40e2543329968022ac0fb743e
-msgid "The ``edge_table`` will be affected"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:57
-# 87e963ab8d6740c3b1a1c7c90aadb0cb
-msgid "An index will be created, if it doesn't exists, to speed up the process to the following columns:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:59
-# 0b4db9bedb5c4e8aae178cdf8501e995
-msgid "``the_geom``"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:60
-# c6f28e49bbb94fff8a6a79a37a37f148
-msgid "``source``"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:61
-# 48bf54d2872e42e3951374082f047936
-msgid "``target``"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:67
-# b8c36294294f415091c47eed722e184e
-msgid "Creates a vertices table: <edge_table>_vertices_pgr."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:68
-# 20a5668e4f824df08ce6d40b2972d67c
-msgid "Fills ``id`` and ``the_geom`` columns of the vertices table based on the source and target columns of the edge table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:72
-# f773aa554da04cc6970ffd2696e995ba
-msgid "A required column of the Network table is not found or is not of the appropriate type."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:73
-# b5a53ad737e74ba382d562f7885b692a
-msgid "The condition is not well formed."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:74
-# e6a33ab1fef64aad86222787fab3af3c
-msgid "The names of source, target are the same."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:75
-# 6d469609f58c46f29de5c8a90af5081a
-msgid "The SRID of the geometry could not be determined."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:78
-# 147e1b6b08814f7b9ee88407b62a498a
-msgid "The Vertices Table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:79
-# 3c4bf582df624750bc03941c3619f4c7
-msgid "The vertices table is a requierment of the :ref:`pgr_analyzeGraph <pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` functions."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:81
-# 91b1981a14a94c20bca776be85b535a3
-msgid "The structure of the vertices table is:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:83
-# dc0e633324514f4e9b38f21fcc433f60
-msgid "``bigint`` Identifier of the vertex."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:84
-# 332ebc8247294592991bb43d212d2934
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:85
-# 9dadca7827724a16a72b724caecaf17d
-msgid "``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:86
-# 39745576abc34406876c0adcee78bc5f
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:87
-# 22e339ae16f14852a431554fb215af48
-msgid "``integer`` Number of vertices in the edge_table that reference this vertex as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:88
-# ce14855be22b4104bbb07a5e5604f2d4
-msgid "``geometry`` Point geometry of the vertex."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:91
-# 459b3b8c4acd4aa3a9871f6dd5738099
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:92
-# 53812a5605b541d388700a95581cffb5
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:95
-# 308e674a2f0042ecb68fa5cdfda66c35
-msgid "Usage when the edge table's columns MATCH the default values:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:98
-# 60cd2611626e4881a4f7598d088f7ae9
-msgid "The simplest way to use pgr_createVerticesTable is:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:105
-# 2f2349e83a9943c5914bdc408761e821
-msgid "When the arguments are given in the order described in the parameters:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:110
-# f781676f7b5c4f96ab2a6c29d9da6f7f
-msgid "We get the same result as the simplest way to use the function."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:117
-#: ../../../src/common/doc/functions/create_vert_table.rst:181
-# 664c471ccfda4497b6645e8a878dc3dc
-# 7e918d97a00f411da9454756825ff8c8
-msgid "When using the named notation"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:118
-#: ../../../src/common/doc/functions/create_vert_table.rst:182
-# 73df3af7e8674465a0fea28f5ef4af6a
-# d67790fcb73148b08041370ea40c9704
-msgid "The order of the parameters do not matter:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:128
-# d75edd32144a4a56876ce8669eb9c666
-msgid "Parameters defined with a default value can be omited, as long as the value matches the default:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:135
-#: ../../../src/common/doc/functions/create_vert_table.rst:196
-# 205323d5b2c84c60bcc0a48cf0ffe2c3
-# b8ee67193fef4450b7b078d5e0f9ed8e
-msgid "Selecting rows using rows_where parameter"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:136
-# 78b6beb526fe44a08ba33968fd97e704
-msgid "Selecting rows based on the id."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:142
-# 87beb11c777742819e896cdba5e1e69c
-msgid "Selecting the rows where the geometry is near the geometry of row with ``id`` =5 ."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:148
-#: ../../../src/common/doc/functions/create_vert_table.rst:219
-# 23096a1510064202a6666747f3283d4b
-# 3107ec82a919450798746493e0878454
-msgid "Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:159
-# cffbe0ddc41c4322a015816531b6c20d
-msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:161
-# dbe012108f364058a8796adaafb1e023
-msgid "For the following table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:169
-# 08dccb27acdb4f51a09d7804934b76ff
-msgid "Using positional notation:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:170
-# 3a0524fff1ba43cd990d2c3e9af31526
-msgid "The arguments need to be given in the order described in the parameters:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:192
-# 399db1d8f6ac4444beabbbe5d87a715b
-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 ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:197
-# ee561095bdf14700b7d35c5e9cb495a3
-msgid "Selecting rows based on the gid."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:207
-# 12595dac797d451d93c5ef33bb5a0dec
-msgid "Selecting the rows where the geometry is near the geometry of row with ``gid`` =5 ."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:236
-# dfa04bca1d5a4dc29d3d0ecb59e23b5a
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:258
-# 4a25da4213474121ab37fdd23d3ebcb3
-msgid "The example uses the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:262
-# 743fc9bd38c24e9599c37117b09a12d4
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:264
-# 99d6f7120b264df29684f04f5a052e7d
-msgid ":ref:`topology` for an overview of a topology for routing algorithms."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:265
-# 7626b59fe28f49d9bca9b18466f65ed0
-msgid ":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based on the geometry."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:266
-# 68c51bd2f3f34bf0837774644e0d90ed
-msgid ":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/create_vert_table.rst:267
-# 5c232ab6d6bf483fbba17b835369ea67
-msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/index.pot b/doc/i18n/pot/src/common/doc/functions/index.pot
deleted file mode 100644
index cc6b576..0000000
--- a/doc/i18n/pot/src/common/doc/functions/index.pot
+++ /dev/null
@@ -1,53 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/index.rst:13
-# e6059e864a2f45449fd7f85406460837
-msgid "Topology Functions"
-msgstr ""
-
-#: ../../../src/common/doc/functions/index.rst:15
-# 9ea9f6b4b70c4435aa543c472a818b2f
-msgid "The pgRouting's topology of a network, represented with an edge table with source and target attributes and a vertices table associated with it. Depending on the algorithm, you can create a topology or just reconstruct the vertices table, You can analyze the topology, We also provide a function to node an unoded network."
-msgstr ""
-
-#: ../../../src/common/doc/functions/index.rst:19
-# 76da7263f53f4462a723804e1174e3ff
-msgid ":ref:`pgr_create_topology` - to create a topology based on the geometry."
-msgstr ""
-
-#: ../../../src/common/doc/functions/index.rst:20
-# 7e6fef362938498ca27bcaeec5ab9410
-msgid ":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on the source and target information."
-msgstr ""
-
-#: ../../../src/common/doc/functions/index.rst:21
-# 46b3cb82a6ca4081af5590a2b3d42a66
-msgid ":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/index.rst:22
-# 39c72fdc49ea45c889de546e56648f89
-msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
-msgstr ""
-
-#: ../../../src/common/doc/functions/index.rst:23
-# 97cb5a2e957349b8a30dee4f69b4b2de
-msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/is_column_in_table.pot b/doc/i18n/pot/src/common/doc/functions/is_column_in_table.pot
deleted file mode 100644
index 91c00d2..0000000
--- a/doc/i18n/pot/src/common/doc/functions/is_column_in_table.pot
+++ /dev/null
@@ -1,88 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0-dev\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:13
-# 1451c59201944bfd9022c90ef89ebf8a
-msgid "pgr_isColumnInTable - Check if column exists"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:20
-# cb570c2703fc45e9bba281cae42780d6
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:22
-# b4cdca42128d4828961c3e7076774fc0
-msgid "``pgr_isColumnInTable`` — Check if a column exists in a table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:26
-# 33b135e2f8dd4f5e81aad53d1a016cfe
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:28
-# 96d06813601a419c9b44fe8298f74a51
-msgid "Returns ``true`` or ``false`` if column “col” exists in table “tab”."
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:36
-# 44f17585bbd843cb9fbcacb785ad3130
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:38
-# b57ee4621bd04e6991a266235c5a592a
-msgid "``text`` table name with or without schema component"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:39
-# ac6b45788cac4cc7a5dcf6e4c44bb9ad
-msgid "``text`` column name to be checked for"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:43
-# 5f4ac9523c3b487884e6dd8e67b1e082
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:44
-# 028851614bd7489991629d8c8f6f8bbf
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:48
-# 3c3db2df87634ae4b3c8713633f9214f
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:59
-# 61e31f4885e444eea60640117f0f8264
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:63
-# 179da1f0bf5342b49e83327d1e277ca9
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_in_table.rst:65
-# 7e1d2140f94d40db8ce6f48c9a3b119f
-msgid ":ref:`pgr_is_column_indexed`"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/is_column_indexed.pot b/doc/i18n/pot/src/common/doc/functions/is_column_indexed.pot
deleted file mode 100644
index 0266a0d..0000000
--- a/doc/i18n/pot/src/common/doc/functions/is_column_indexed.pot
+++ /dev/null
@@ -1,88 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0-dev\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:13
-# f85a66c48ca94cc9a5bba227e6479482
-msgid "pgr_isColumnIndexed - Check if column is indexed"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:20
-# a4e361cfe30d494982b2755f507c2df4
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:22
-# 2616614bd27b4f3aac95e5ee66f8771c
-msgid "``pgr_isColumnIndexed`` — Check if a column in a table is indexed."
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:26
-# 4aff78895aaf431bb254a1725ab1bab6
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:28
-# 62d98585fdfb49d287f711a97ba6f261
-msgid "Returns ``true`` or ``false`` if column “col” in table “tab” is indexed."
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:36
-# 016a3d2a60a745c39afdaa4ba6d24b5f
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:38
-# 5efc6b2a366544cdadac135ab40dee54
-msgid "``text`` table name with or without schema component"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:39
-# 76548c59562d4c4188ea7a5bbd5b769a
-msgid "``text`` column name to be checked for"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:43
-# 20bbf0766ada4f7b81807c2e917be118
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:44
-# 3ca6785c8cb24235a6b581e63c32bd03
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:48
-# 89feb49b01e94980935495257bf135a9
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:59
-# c8b849f8431c42ef9ecdcde47c516f03
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:63
-# 4d38c2d872d0425290c2371cbc5d27e8
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/is_column_indexed.rst:65
-# ed5ed4b10dc74af48b9de1a8743ec37b
-msgid ":ref:`pgr_is_column_in_table`"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/node_network.pot b/doc/i18n/pot/src/common/doc/functions/node_network.pot
deleted file mode 100644
index 1e237a3..0000000
--- a/doc/i18n/pot/src/common/doc/functions/node_network.pot
+++ /dev/null
@@ -1,358 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/node_network.rst:13
-# 415578013ce34db4a3787ac6ea14aacc
-msgid "pgr_nodeNetwork"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:20
-# e9c26bba555b4828a00dc49ce2872b5a
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:22
-# f0dd86de64e54470915620bca00b63ba
-msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:24
-# 679f4270da0b4d9d8fb6652528ffb487
-msgid "Nicolas Ribot"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:25
-# f4f913584ef94bff838c5e7d10ff438a
-msgid "Nicolas Ribot, The source code is released under the MIT-X license."
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:29
-# d62bc53d82d84b0a9f614bbabb22cf6f
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:31
-# e448f6fffc93437fad7db63886f3440f
-msgid "The function reads edges from a not \"noded\" network table and writes the \"noded\" edges into a new table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:40
-# 41ae931db7c6429690ebe55f14bf3f82
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:42
-# e34d15cecb1146dca66b7ec359baf90c
-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 ""
-
-#: ../../../src/common/doc/functions/node_network.rst:44
-# 9e4e802f4e90417e882cc78db46aba37
-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 ""
-
-#: ../../../src/common/doc/functions/node_network.rst:46
-# 3f8f5e5b87194a6883104358b7477256
-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 ""
-
-#: ../../../src/common/doc/functions/node_network.rst:48
-# 5602fcf370ba4d8cb599b63b3f75baba
-msgid "Parameters"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:50
-# 5843a7b94c6c4c77811e371a18a69092
-msgid "``text`` Network table name. (may contain the schema name as well)"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:51
-# c91bb375113b492f84d5fea1ae0fc546
-msgid "``float8`` tolerance for coincident points (in projection unit)dd"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:52
-# 4fa7469277e8421aad3a8cf5f1e0934c
-msgid "``text`` Primary key column name of the network table. Default value is ``id``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:53
-# 53ed478d206d4a4e82ceb7861d8e5653
-msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:54
-# 310e22f89384472688d6355d4bba3b10
-msgid "``text`` Suffix for the new table's. Default value is ``noded``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:56
-# 596ff88dc11a40de8abbf7da4478bab0
-msgid "The output table will have for ``edge_table_noded``"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:58
-# cb73019cb86c4bd39cb518e52bcc84ec
-msgid "``bigint`` Unique identifier for the table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:59
-# 24b0b9f6e03c4a508072619180b3d0a3
-msgid "``bigint`` Identifier of the edge in original table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:60
-# 4ccb00203c0a45fc9794aa7fb27ce455
-msgid "``integer`` Segment number of the original edge"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:61
-# 54a883acaa9246c7b1427e348da8b076
-msgid "``integer`` Empty source column to be used with :ref:`pgr_create_topology` function"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:62
-# 778c798bcc8348debd8bcb136f2f7d13
-msgid "``integer`` Empty target column to be used with :ref:`pgr_create_topology` function"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:63
-# f136252657c44cb79c81a096741357fe
-msgid "``geometry`` Geometry column of the noded network"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:66
-# 9f34912f29f54b75b43f1ee3033ee603
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:67
-# f1b11cc9deea46c88aa0b2d004d9a1a7
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:71
-# 841cca977e4d4484822b151c607743ec
-msgid "Example"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:73
-# 8a8ea62cd18b4cf193613f8ee0f90070
-msgid "Let's create the topology for the data in :ref:`sampledata`"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:91
-# 98383300bdb4430082742c4c18f74020
-msgid "Now we can analyze the network."
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:115
-# fe3570f625b5402da6c4b5f45236a261
-msgid "The analysis tell us that the network has a gap and and an intersection. We try to fix the problem using:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:137
-# a484dc23bc074e73ba08cb512cdfe437
-msgid "Inspecting the generated table, we can see that edges 13,14 and 18 has been segmented"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:167
-# b347a18a57974e8baba1de38a166c77c
-msgid "We can create the topology of the new network"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:185
-# 167165f9184a484cb231c5271167716d
-msgid "Now let's analyze the new topology"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:211
-# 0de7b06075294c0c8a7391cf807318ac
-msgid "Images"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:244
-# 58d5e574bdf4403584368d356c7df7b4
-msgid "Comparing the results"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:246
-# 1845a9b80b00497998b4fe06574a92d6
-msgid "Comparing with the Analysis in the original edge_table, we see that."
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:249
-# b88b79fe83dc4bfeb58a04ef2183a06d
-msgid "Before"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:249
-# d1a674a326e248b69c340715f54b9f8e
-msgid "After"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:251
-# dcd9be44b93e418c83427c58e2c5a6ef
-msgid "Table name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:251
-# 67ee47d202fc4c58b513b2458225cf84
-msgid "edge_table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:251
-# 37ff6330038e41cf9e924c593156df6d
-msgid "edge_table_noded"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:253
-# 345f0bbc1d35424dbac31091bce17bb6
-msgid "Fields"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:253
-# e00cf7b579524a7181d9bc88ef89e337
-msgid "All original fields"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:253
-# b7a662aeed814ca199602c238105360d
-msgid "Has only basic fields to do a topology analysis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:255
-# 00aa49d172f644b5b111ea1e533ff2ec
-msgid "Dead ends"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:255
-# a2d40fdc49d24f198ddf745685c9b501
-msgid "Edges with 1 dead end: 1,6,24"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:256
-# 609672ee4d5d4b99867c0d6bc99e3cdd
-msgid "Edges with 2 dead ends 17,18"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:258
-# a3e5db6c7f844f63b8cb1cb0243a3334
-msgid "Edge 17's right node is a dead end because there is no other edge sharing that same node. (cnt=1)"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:255
-# d0aff0fcbc73452496fe7b3624c389fc
-msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:262
-# 12af7d522e2a4f26ac9467afb0178130
-msgid "Isolated segments"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:262
-# d94b2811ed404bb0acaa947902554cd5
-msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:263
-# 4e8f772974dc4c939bc43eb679a2a091
-msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:264
-# 4a520a1d55334062bc73b99f29420ca4
-msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:266
-# bb7df7c6886b46299e9d35f82b0ff18a
-msgid "Gaps"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:266
-# 7fa8265fcae843f5a30d759292ff4679
-msgid "There is a gap between edge 17 and 14 because edge 14 is near to the right node of edge 17"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:266
-# a10c0958aba0468abee75f8813e9db84
-msgid "Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The tolerance value was taken in account"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:270
-# 9dec0d5c36d84e2ead7e64237552b20d
-msgid "Intersections"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:270
-# 99d6f45e97174002bacddafb18ab7c17
-msgid "Edges 13 and 18 were intersecting"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:270
-# 7d26cb6211274d629519128907861761
-msgid "Edges were segmented, So, now in the interection's point there is a node and the following edges share it: 13-1 13-2 18-1 18-2"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:275
-# 44badddc9c6e4c0ead8f842ea16d9903
-msgid "Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and 18-2 into our edge-table, copying the data for dir,cost,and reverse cost with tho following steps:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:277
-# fbc22adbcbbb4c4e8c18b101d444ba3b
-msgid "Add a column old_id into edge_table, this column is going to keep track the id of the original edge"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:278
-# 149535f8124447a7969e46eab80cdfaf
-msgid "Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:291
-# 3022549213bd4c159345c2fc982b0cbb
-msgid "We recreate the topology:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:311
-# 2bf2c86357c643fa825fb1690a2ec630
-msgid "To get the same analysis results as the topology of edge_table_noded, we do the following query:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:338
-# d2001d74045e446e9be443c8bc45134f
-msgid "To get the same analysis results as the original edge_table, we do the following query:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:363
-# 056bc0a747d344fa823a4644c580d5c0
-msgid "Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 is an under pass and there is also a street level juction, and the same happens with edges 17 and 13."
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:390
-# acf5f8a2131748029998badf207366dc
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/node_network.rst:392
-# 4e6dd7e7554a4958a751b3654a3c698c
-msgid ":ref:`topology` for an overview of a topology for routing algorithms. :ref:`pgr_analyze_oneway` to analyze directionality of the edges. :ref:`pgr_create_topology` to create a topology based on the geometry. :ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/point_to_id.pot b/doc/i18n/pot/src/common/doc/functions/point_to_id.pot
deleted file mode 100644
index 6f350bb..0000000
--- a/doc/i18n/pot/src/common/doc/functions/point_to_id.pot
+++ /dev/null
@@ -1,98 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0-dev\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/point_to_id.rst:13
-# 81e0b58a4b464395b3661da85edfaa90
-msgid "pgr_pointToId - Inserts point into a vertices table"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:20
-# 9bebf9f4ff2b43a39470ee284698fa33
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:22
-# 8fcf7e9e33b448b982f7111389a7e412
-msgid "``pgr_pointToId`` — Inserts a point into a temporary vertices table."
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:26
-# 1ebe04b75e4444e2970f12bf667f07fa
-msgid "This function should not be used directly. Use :ref:`pgr_createTopology <pgr_create_topology>` instead."
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:30
-# 8c3303cb3d73446795471f411d835691
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:32
-# e17d53fea1674ad692e9d65129c04e5d
-msgid "Inserts a point into a temporary vertices table, and returns an id of a new point or an existing point. Tolerance is the minimal distance between existing points and the new point to create a new point."
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:40
-# 4b067a809bbd4210baf154f274aab5f0
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:42
-# de6b0b7b7ae44691a60a709a1245e12c
-msgid "``geometry`` of the existing point"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:43
-# e05906cd2cd545eead6a6a277d441ea4
-msgid "``float8`` snapping tolerance of disconnected edges (in projection unit)"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:45
-# 7eb52d95126d47efbf485a1397785c34
-msgid "Returns point id (``bigint``) of a new or existing point."
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:49
-# 78ed162b771d42c1bdadb75ea1806c17
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:50
-# 932b962d76c14946b54db15e77b3c90d
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:54
-# c1b2ccd7df20427c88dcf1ebf4b06d82
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:56
-# 4dafa239ff7648c2952a2d3ee70671bf
-msgid ":ref:`pgr_create_topology`"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:57
-# 8100a50d0b5f4b0cab8d62645becc674
-msgid ":ref:`topology`"
-msgstr ""
-
-#: ../../../src/common/doc/functions/point_to_id.rst:58
-# 86ad35d9d3ce44a696b6dc61c466e04e
-msgid ":ref:`pgr_node_network`"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/quote_ident.pot b/doc/i18n/pot/src/common/doc/functions/quote_ident.pot
deleted file mode 100644
index b880898..0000000
--- a/doc/i18n/pot/src/common/doc/functions/quote_ident.pot
+++ /dev/null
@@ -1,83 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0-dev\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/quote_ident.rst:13
-# 59a19788e4ba478cb0d046fc07c08179
-msgid "pgr_quote_ident - Quote table name with Schema Component"
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:20
-# 61a86f593d04476692b89157939b8a1e
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:22
-# 7ae4a51cc62143058b829f9317d4b282
-msgid "``pgr_quote_ident`` — Quote table name with or without schema component."
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:26
-# d09400822917498ab08038e0453f93a2
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:28
-# 02e534c6d94e4d7fa366eb30dfd82602
-msgid "Function to split a string on ``.`` characters and then quote the components as postgres identifiers and then join them back together with ``.`` characters. Multile ``.`` will get collapsed into a single ``.``, so ``schema...table`` till get returned as ``schema.\"table\"`` and ``Schema.table`` becomes ``\"Schema\".\"table\"``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:37
-# 70b63ad008b14b5cbd540f478c596e97
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:39
-# 76375d16726e4e8a8c4e02b54bd4b33a
-msgid "``text`` table name with or without schema component"
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:41
-# d8548a7bfe3542b28f614894ba6f4b84
-msgid "Returns table name with or without schema as ``text``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:45
-# ebc95d6ee53c42f29aa6a18a134d4d20
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:46
-# 6bea52def68e4f05ae56873b8d4f9d1c
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:50
-# 21e9cb20b57e4b4681d4e04d5f083d2a
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:77
-# 5e3a344a21eb45bfba3e880ae3981a30
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/quote_ident.rst:79
-# b4ee52cbb2b74bb59b22b1802748f96d
-msgid "[TBD]"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/version.pot b/doc/i18n/pot/src/common/doc/functions/version.pot
deleted file mode 100644
index 5db1e87..0000000
--- a/doc/i18n/pot/src/common/doc/functions/version.pot
+++ /dev/null
@@ -1,113 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0-dev\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/version.rst:13
-# dbab41817c8a46459e8f33cf684a7afb
-msgid "pgr_version - Get version information"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:20
-# 19cd8fb76f754d898f75659f97628007
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:22
-# 5531935ef2384b709c4f1d81ddcdf15c
-msgid "``pgr_version`` — Query for pgRouting version information."
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:26
-# 52175fb13b944970989d3ef4a23a7b66
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:28
-# 14783f07374f4ccdaa53515b95c17943
-msgid "Returns a table with pgRouting version information."
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:36
-# 6d5995ab278d476d80f54ab15b8af686
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:38
-# b4baa0103a55431abaa586f16230af8c
-msgid "Returns a table with:"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:40
-# 7d8a75cf72b840b39e0eea6140a5839d
-msgid "``varchar`` pgRouting version"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:41
-# 2af5168bce0a4b03bf2b097d3099c850
-msgid "``varchar`` Git tag of pgRouting build"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:42
-# b4444b51e41549b399751bcba194a8a8
-msgid "``varchar`` Git hash of pgRouting build"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:43
-# 6737b5df55e94bb185f64d0de3389f3e
-msgid "``varchar`` Git branch of pgRouting build"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:44
-# e5b735559b2949b09899e982d6f2ecf3
-msgid "``varchar`` Boost version"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:48
-# 9042ea468aba4c4490b7124bbf14aacb
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:49
-# 3829660b5485491083028df2cb267d03
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:53
-# 8638cdf8594940cbad096c9ac3d261ad
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:55
-# d80877f2810741ada5737305d484de11
-msgid "Query for full version string"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:67
-# 2ff90cee91e644fab554650cc24bd3bf
-msgid "Query for ``version`` and ``boost`` attribute"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:80
-# 6c3a1c332dc54ea2a01d81c5f5f9dcc1
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/version.rst:82
-# 1eeb4f68d3c342dbbadade6c52b87baf
-msgid ":ref:`pgr_versionless`"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/functions/versionless.pot b/doc/i18n/pot/src/common/doc/functions/versionless.pot
deleted file mode 100644
index d994726..0000000
--- a/doc/i18n/pot/src/common/doc/functions/versionless.pot
+++ /dev/null
@@ -1,83 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0-dev\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/functions/versionless.rst:13
-# f15b37fde8e64b508893630a0291dc6a
-msgid "pgr_versionless - Compare version numbers"
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:20
-# cd0dcc3f3489468ab55c89598715d895
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:22
-# e2f0eb00eca142c8bc7d71b317604c7e
-msgid "``pgr_version`` — Compare two version numbers and return if smaller."
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:26
-# d85cf15bf8894e158945855624a422f5
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:28
-# ed2cb6f5c03645b3ab2a296d062c1eb9
-msgid "Returns ``true`` if the first version number is smaller than the second version number. Otherwise returns ``false``."
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:36
-# a11f675500e140ae997cdb4f167d2da4
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:38
-# 7d1ac8fa4fce4362965d8587a3cd7099
-msgid "``text`` first version number"
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:39
-# 1d8a5a36a0fa4da19892193a11578a08
-msgid "``text`` second version number"
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:43
-# a32770a22cf849cb96bd78825f332825
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:44
-# 14ef379da17a48389cb627817c173253
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:48
-# 7a3d2290bca342b79b4105e7aee330b0
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:61
-# ca2f13a6ce4444258be7f46d40c8bd2a
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/functions/versionless.rst:63
-# a621baf581ff4ba8b4b03d3481d5a660
-msgid ":ref:`pgr_version`"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/index.pot b/doc/i18n/pot/src/common/doc/index.pot
deleted file mode 100644
index e384a0e..0000000
--- a/doc/i18n/pot/src/common/doc/index.pot
+++ /dev/null
@@ -1,23 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/index.rst:13
-# def264c0f9e943f4bfe3be4277eaf0e4
-msgid "Common Functions"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/legacy.pot b/doc/i18n/pot/src/common/doc/legacy.pot
deleted file mode 100644
index b27716b..0000000
--- a/doc/i18n/pot/src/common/doc/legacy.pot
+++ /dev/null
@@ -1,48 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/legacy.rst:13
-# 6685ac176b6d45fb8a01eac642baa7f9
-msgid "Legacy Functions"
-msgstr ""
-
-#: ../../../src/common/doc/legacy.rst:15
-# 66cd7e014efa481388e76134375f5514
-msgid "pgRouting 2.0 release has total restructured the function naming and obsoleted many of the functions that were available in the 1.x releases. While we realize that this may inconvenience our existing users, we felt this was needed for the long term viability of the project to be more response to our users and to be able to add new functionality and test existing functionality."
-msgstr ""
-
-#: ../../../src/common/doc/legacy.rst:17
-# 03594f8f7bbb4164af6047d47b6940e8
-msgid "We have made a minimal effort to save most of these function and distribute with the release in a file ``pgrouting_legacy.sql`` that is not part of the pgrouting extension and is not supported. If you can use these functions that is great. We have not tested any of these functions so if you find issues and want to post a pull request or a patch to help other users that is fine, but it is likely this file will be removed in a future release and we strongly recommend that you conver [...]
-msgstr ""
-
-#: ../../../src/common/doc/legacy.rst:19
-# bf5ae1fb6ad540ad91201915140cb5eb
-msgid "The follow is a list of TYPEs, CASTs and FUNCTION included in the ``pgrouting_legacy.sql`` file. The list is provide as a convenience but these functions are deprecated, not supported, and probably will need some changes to get them to work."
-msgstr ""
-
-#: ../../../src/common/doc/legacy.rst:23
-# 2bb0592e548e4456b3464582051ee11d
-msgid "TYPEs & CASTs"
-msgstr ""
-
-#: ../../../src/common/doc/legacy.rst:34
-# 37a0d889dbcb4f2b8844030f7eede4bb
-msgid "FUNCTIONs"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/types.pot b/doc/i18n/pot/src/common/doc/types.pot
deleted file mode 100644
index 38af198..0000000
--- a/doc/i18n/pot/src/common/doc/types.pot
+++ /dev/null
@@ -1,28 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0-dev (129919f develop)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0-dev\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-02 16:47\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/types.rst:13
-# a647839f49f94a9997479367dc35d13f
-msgid "Custom Types"
-msgstr ""
-
-#: ../../../src/common/doc/types.rst:15
-# f00f6611879f4afd961586e955284a41
-msgid "The following are commonly used data types for some of the pgRouting functions."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/types/cost_result.pot b/doc/i18n/pot/src/common/doc/types/cost_result.pot
deleted file mode 100644
index f1a41dc..0000000
--- a/doc/i18n/pot/src/common/doc/types/cost_result.pot
+++ /dev/null
@@ -1,110 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/types/cost_result.rst:13
-# 6eea8f1b01374b3485d735489b86fc68
-msgid "pgr_costResult[]"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:20
-#: ../../../src/common/doc/types/cost_result.rst:54
-# 8bfa7c6addc040afa727976de846555a
-# c7390b41f982471b9477839d5d8e5369
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:22
-# 23d61d0157514208a7ef251c38ac6b19
-msgid "``pgr_costResult[]`` — A set of records to describe a path result with cost attribute."
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:26
-#: ../../../src/common/doc/types/cost_result.rst:60
-# 7fc692e78f574159895884e2dd63fc0c
-# 41788da9d61e4459a73bac9c64def620
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:38
-#: ../../../src/common/doc/types/cost_result.rst:73
-# cb1dbe621f784a38823b7d6b35bebc8d
-# e68154e687d344a5917bdc81e2ae7d1d
-msgid "sequential ID indicating the path order"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:39
-#: ../../../src/common/doc/types/cost_result.rst:75
-# 03f92c10733a4fa4b8e1ff5dce1eee15
-# 9d9ac5a51d144174b1b718ec2aff353e
-msgid "generic name, to be specified by the function, typically the node id"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:40
-#: ../../../src/common/doc/types/cost_result.rst:76
-# 2eea4d5c48b348fe9a97e07495d98de0
-# 8c6b23c4fa47480090c19db1177d3199
-msgid "generic name, to be specified by the function, typically the edge id"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:41
-#: ../../../src/common/doc/types/cost_result.rst:77
-# cc054e37302a42e5b57b5f32db2c4e04
-# 8646ba20eec5430499ce913f0eb22a5f
-msgid "cost attribute"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:47
-# 9800eda19f1d4da2af5db30064711728
-msgid "pgr_costResult3[] - Multiple Path Results with Cost"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:56
-# 714e01dfd1fe44489e99d0df9b34b01f
-msgid "``pgr_costResult3[]`` — A set of records to describe a path result with cost attribute."
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:74
-# 0935f00f5e054308a38e29057fe7489b
-msgid "generic name, to be specified by the function, typically the path id"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:81
-# 122f35171d6b4dc4b74bf0dbe622d1c8
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:82
-# 2db1c9c8a0cd471b8c88448975d8c934
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:83
-# 24e23657366d4fae8235c18053f57cc4
-msgid "Replaces ``path_result``"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:87
-# d7863e6181a64523a200c37c57c6d53c
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/types/cost_result.rst:89
-# b449ee32d2244a62be713e11a2398d02
-msgid ":ref:`introduction`"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/types/geom_result.pot b/doc/i18n/pot/src/common/doc/types/geom_result.pot
deleted file mode 100644
index 2dc74fa..0000000
--- a/doc/i18n/pot/src/common/doc/types/geom_result.pot
+++ /dev/null
@@ -1,80 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/types/geom_result.rst:13
-# 26028d81209d4210a6092ad0c5e43ef0
-msgid "pgr_geomResult[]"
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:20
-# 13c92d992ff94f93b86c6052d1c88276
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:22
-# 3385db8c8de94282b5be3b66790790e4
-msgid "``pgr_geomResult[]`` — A set of records to describe a path result with geometry attribute."
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:26
-# 067e22fc726a43278ed7cf3962886cb1
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:38
-# 81fdf2a6ebd14f9b922f14fb72c36d15
-msgid "sequential ID indicating the path order"
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:39
-#: ../../../src/common/doc/types/geom_result.rst:40
-# f0f901642c64492bad7c9d51436a00a6
-# 1f4519a97f1d4e519c2ff671e49e07e2
-msgid "generic name, to be specified by the function"
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:41
-# 341f0af76c5e4baab56f3b2ca168fb71
-msgid "geometry attribute"
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:45
-# 631e262464724322bdb4bc53a9666a12
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:46
-# 58d5a83853b14bf2b721ac311fb0a380
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:47
-# 470d17263e5f43f5a8a0af1837e87967
-msgid "Replaces ``geoms``"
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:51
-# c6e97feee2de4ebc9fc27ffb443fb9bd
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/types/geom_result.rst:53
-# a25696b33a534f7b84e2433f0cead81b
-msgid ":ref:`introduction`"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/types/index.pot b/doc/i18n/pot/src/common/doc/types/index.pot
deleted file mode 100644
index 7ba2873..0000000
--- a/doc/i18n/pot/src/common/doc/types/index.pot
+++ /dev/null
@@ -1,43 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/types/index.rst:13
-# 7c41ce7b163843488f583393b915cb86
-msgid "pgRouting Data Types"
-msgstr ""
-
-#: ../../../src/common/doc/types/index.rst:15
-# 7829851e55604125a270140d66a1ac90
-msgid "The following are commonly used data types for some of the pgRouting functions."
-msgstr ""
-
-#: ../../../src/common/doc/types/index.rst:17
-# faf963e5d961477ba9f5d5d1d81270b8
-msgid ":ref:`type_cost_result` - A set of records to describe a path result with cost attribute."
-msgstr ""
-
-#: ../../../src/common/doc/types/index.rst:18
-# 61541920ce914f74b16d0a61a3d00c70
-msgid ":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe a path result with cost attribute."
-msgstr ""
-
-#: ../../../src/common/doc/types/index.rst:19
-# 1050c9881561433a9fb376b183ffc0d2
-msgid ":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a path result with geometry attribute."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/end_point.pot b/doc/i18n/pot/src/common/doc/utilities/end_point.pot
deleted file mode 100644
index b6ac0d1..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/end_point.pot
+++ /dev/null
@@ -1,90 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/end_point.rst:13
-# 6cebbdd85e6945bfa9cafb9a5982c546
-msgid "pgr_endPoint"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:20
-# 045307769ed24168935d9b6c6bf6c30e
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:22
-# 93f527ab4669454ea6168501b2061f07
-msgid "``pgr_endPoint`` — Returns an end point of a (multi)linestring geometry."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:24
-# d33216fe0e844048af08255bf6a6ddd6
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:28
-# 39bea53092fd40b4ad3986450abb8629
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:30
-#: ../../../src/common/doc/utilities/end_point.rst:44
-# c0445bd91f26473aa475b5ee5cc891a9
-# c946ccfe66dd4386b291cda29045536c
-msgid "Returns the geometry of the end point of the first LINESTRING of ``geom``."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:38
-# 7eb29fbc5d7d401fa8a3649c14d45145
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:41
-# 34ae5b1615bd4f13a79b0fa2b2083ea6
-msgid "Parameters"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:42
-# 27cf4b1be0f64a198ee7b53aaf668dca
-msgid "``geometry`` Geometry of a MULTILINESTRING or LINESTRING."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:49
-# e31e97e4f8c345e1a70e0777d7e8b8e7
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:50
-# 881eef9e0f41473c8fd665512a3e841f
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:55
-# 65ff973c398846eb8a6951c0d9ba6aab
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:57
-# cfe22f1c5c6e468bb860b1b4c449fb60
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/end_point.rst:58
-# e1ddf7fa1e004c11bc7590169b8c249e
-msgid ":ref:`pgr_start_point` to get the start point of a (multi)linestring."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/get_column_name.pot b/doc/i18n/pot/src/common/doc/utilities/get_column_name.pot
deleted file mode 100644
index 52e2bb6..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/get_column_name.pot
+++ /dev/null
@@ -1,133 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:13
-# d49238818e5441fbb003168cc8e36b08
-msgid "pgr_getColumnName"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:20
-# 1b7e09aeb16a4ccbbf851453bd60a522
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:22
-# 9751df61b65e4122909bcd1bfd5daa1e
-msgid "``pgr_getColumnName`` — Retrieves the name of the column as is stored in the postgres administration tables."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:24
-# 8e088e94c23e4926b1d684da3be14091
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:27
-# 4963da97fad54842a35ceeaf5c365f93
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:29
-# f845091933a74d26ad1c2abab2d9f3f1
-msgid "Returns a ``text`` contining the registered name of the column."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:37
-# 7626c6283814486098d2db7dce1e5ee0
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:39
-# a3eecb8ace4d44bc8c84dac16b8dee6a
-msgid "Parameters"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:41
-# aac7efeb75b944969d257f64e18550c2
-msgid "``text`` table name with or without schema component."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:42
-# 6cdd6d7187f14505affadf51a351344b
-msgid "``text`` column name to be retrived."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:44
-# 53859c69e3dc420a81f891829adc0cb8
-msgid "Returns"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:46
-# 985e26d6fb894bf58d55d1fc4b67dcb4
-msgid "``text`` containing the registered name of the column."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:47
-# 7b4cddea648c49aab48528518ae23b89
-msgid "``NULL`` when :"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:49
-# 14b036b056904908ac4c986f4bab1ba2
-msgid "The table “tab” is not found or"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:50
-# 0cad9c64ea2641e5b90cbb621af6fa7f
-msgid "Column “col” is not found in table “tab” in the postgres administration tables."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:53
-# 7fbe20f0f64f48248fca186a65a2139e
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:54
-# 8ac0d8d22a9d455da9ba40aa7a2f6ab4
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:58
-# 971bdf07d50d4c2381a495299db57f97
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:76
-# cd55f28f2d9a448e9e9015eaa28797f7
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:80
-# ab741d72b4fb458cbedc734112be4934
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:82
-# 48e38867d8f347a99ce546e04cfca8fb
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:83
-# 64a358930cbb4f5dbb82348afec3c8d8
-msgid ":ref:`pgr_is_column_in_table` to check only for the existance of the column."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_column_name.rst:84
-# 7508ea8805a44c6ea2c80afc64a3302a
-msgid ":ref:`pgr_get_table_name` to retrieve the name of the table as is stored in the postgres administration tables."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/get_table_name.pot b/doc/i18n/pot/src/common/doc/utilities/get_table_name.pot
deleted file mode 100644
index 3501e3e..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/get_table_name.pot
+++ /dev/null
@@ -1,142 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:13
-# 3f3fd8384da6489cbc835dc268555fee
-msgid "pgr_getTableName"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:20
-# 8855f6077b3f4ebea35bd5365ff01fb0
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:22
-# 7429cee05b494752b88985db791e2d51
-msgid "``pgr_getTableName`` — Retrieves the name of the column as is stored in the postgres administration tables."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:24
-# 23dd1fe54bba4241a83a90d42835c15a
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:27
-# a67877e2e9bb4380a0b9efd9488a1c03
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:29
-# 193d8f1279824afd930f19671a122fb2
-msgid "Returns a record containing the registered names of the table and of the schema it belongs to."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:37
-# b0515c911d4c47b184357eb437dbf25a
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:39
-# 084ab78239744cd7b30434d81f195f46
-msgid "Parameters"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:41
-# c448a975fe854447b125baca2309ed92
-msgid "``text`` table name with or without schema component."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:43
-# d60cb02a488b400ebd46e7a938f5f861
-msgid "Returns"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:47
-# af61fb8a959f4c658b929418fea3695a
-msgid "``text`` containing the registered name of the schema of table \"tab\"."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:49
-# 75ae2b53a0db422282b2b1aa10a90604
-msgid "when the schema was not provided in \"tab\" the current schema is used."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:51
-#: ../../../src/common/doc/utilities/get_table_name.rst:58
-# 0e79dbba80bd4be9a437093436b63671
-# b09a352846da470c8f164759c499fbdf
-msgid "``NULL`` when :"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:53
-#: ../../../src/common/doc/utilities/get_table_name.rst:60
-# 6c0302b21c664daaa7b0299e27bd5144
-# d4a6ebe8ccc8438a8af4e6b191bdf4f6
-msgid "The schema is not found in the postgres administration tables."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:57
-# 2cd1eb0c67c944329d4bbfa881dd4508
-msgid "``text`` containing the registered name of the table \"tab\"."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:61
-# 02d3fbe3f8644e5f9f2b07692bb6a4e1
-msgid "The table \"tab\" is not registered under the schema ``sname`` in the postgres administration tables"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:65
-# bf7d6b7eb4ce418fa8b6c0827b898c03
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:66
-# 85f842e157ab4b6aa440075019b0953c
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:70
-# bb7530b777084e05b3b3b1c39e969f65
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:95
-# 494e6a949cc24db0bf24f2a34d647994
-msgid "The examples use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:99
-# d4acb2f2721b4e4d8ae90e116e30f946
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:101
-# 4efeaf912c6d4adca5d3f74221029a95
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:102
-# 9d5cb0bebe6541c9a63ae66cf5d338e1
-msgid ":ref:`pgr_is_column_in_table` to check only for the existance of the column."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/get_table_name.rst:103
-# 52bdc6b75c0547c0834be6a99ead7e5e
-msgid ":ref:`pgr_get_table_name` to retrieve the name of the table as is stored in the postgres administration tables."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/index.pot b/doc/i18n/pot/src/common/doc/utilities/index.pot
deleted file mode 100644
index e744671..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/index.pot
+++ /dev/null
@@ -1,78 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/index.rst:13
-# 0e77eadde21444ae8a4bc5dfa8fcba26
-msgid "Developers's Functions"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:15
-# 44d25d4823da463ebe59f9505bc73b29
-msgid "Functions to help you develop a wrapper or a recipe"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:17
-# 97ca2436709a413e9bae93f5ec5a539d
-msgid ":ref:`pgr_get_column_name` - to get the name of the column as is stored in the postgres administration tables."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:18
-# 48f28d2862a24e5c847dcea700e620b8
-msgid ":ref:`pgr_get_table_name` - to retrieve the name of the table as is stored in the postgres administration tables."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:19
-# f8890b6d41d04962882925746b968dc8
-msgid ":ref:`pgr_is_column_indexed` - to check if the column is indexed."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:20
-# 6232be8593ed443c99052062d09b347c
-msgid ":ref:`pgr_is_column_in_table` - to check only for the existance of the column."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:21
-# 9babeb7d18094806b7e34f5fd45a5a4c
-msgid ":ref:`pgr_point_to_id` -to insert/get the id of the inserted point in a vertices table."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:22
-# 2c5079432fc74c5b90347fd8ce15d598
-msgid ":ref:`pgr_quote_ident` - to quotes the input text to be used as an identifier in an SQL statement string."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:23
-# f90adbe880bd4fb8a26d5b8d422f1ffa
-msgid ":ref:`pgr_version` - to get pgRouting's version information."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:24
-# 6a11b5d8649c487e8c0ec8e47374f58c
-msgid ":ref:`pgr_versionless` - to compare two version numbers."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:25
-# 13fa2ec9535a49f896660871c5b17d8f
-msgid ":ref:`pgr_start_point` - to get the start point of a (multi)linestring."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/index.rst:26
-# 91fb0530fd06415da1b7ce63b4ee387d
-msgid ":ref:`pgr_end_point` - to get the end point of a (multi)linestring."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/is_column_in_table.pot b/doc/i18n/pot/src/common/doc/utilities/is_column_in_table.pot
deleted file mode 100644
index 25930d0..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/is_column_in_table.pot
+++ /dev/null
@@ -1,133 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:13
-# 249bbcc592de4defa96a706809fc3785
-msgid "pgr_isColumnInTable"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:20
-# 4fc8574f1bba4c1c97c68686a8c17ea7
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:22
-# d320ba4dd38a406096f36129cf93bb5c
-msgid "``pgr_isColumnInTable`` — Check if a column is in the table."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:24
-# 1f01a91f656f49efaa498ecbcf900842
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:27
-# 3dbea64f332247db87bafa9d74054e32
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:29
-# 94612313263543b8a1f2ad219d40aaa2
-msgid "Returns ``true`` when the column “col” is in table “tab”."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:37
-# f7dcd242fd4842e285f2fbb8bbf812ba
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:39
-# 264091f88283469fb410faef9afd05ba
-msgid "``text`` Table name with or without schema component."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:40
-# b9b1222fcb2a4cf2aa4d26432d91020f
-msgid "``text`` Column name to be checked for."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:42
-# 508f280252014ae5b55822eae9be2223
-msgid "Returns:"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:44
-# b8660f2c224f432b9f8d2f5fe61356f7
-msgid "``true`` when the column “col” is in table “tab”."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:45
-# a98df291793349c79cf9761f21f67f1f
-msgid "``false`` when:"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:47
-# b2c36f120012430cbac241a9e1ab9659
-msgid "The table \"tab\" is not found or"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:48
-# 451ea2ad463f41a1a2355879e20b10f9
-msgid "Column “col” is not found in table “tab”"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:51
-# 2823c34d7c7b4630824516676011afff
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:52
-# d1093638c71f4386bbe1c99e16ede035
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:56
-# 558127c6356443dcadef96ae091e326c
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:76
-# 5dee6228faa249d3943f6af3cc20ae12
-msgid "The example use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:80
-# c3ae4d108abb43cf9a5b58742432b4a6
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:82
-# b2652f8ce39f4f8aae2f8877fc762682
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:83
-# 94e580c9269642828c55365079238843
-msgid ":ref:`pgr_is_column_indexed` to check if the column is indexed."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:84
-# 9c693d02d3254bd9835275539c98d986
-msgid ":ref:`pgr_get_column_name` to get the name of the column as is stored in the postgres administration tables."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_in_table.rst:85
-# ee582e3bef7042ea91f53e14a2ce7961
-msgid ":ref:`pgr_get_table_name` to get the name of the table as is stored in the postgres administration tables."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/is_column_indexed.pot b/doc/i18n/pot/src/common/doc/utilities/is_column_indexed.pot
deleted file mode 100644
index 7688da9..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/is_column_indexed.pot
+++ /dev/null
@@ -1,138 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:13
-# 338233797ea2499c83046e9c714ee022
-msgid "pgr_isColumnIndexed"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:20
-# 86f6f8b2a66d411aabc06f998eed3efa
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:22
-# c2292040ff08489192f7bb15a1a5f5ac
-msgid "``pgr_isColumnIndexed`` — Check if a column in a table is indexed."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:24
-# 1c0cefb08636441ea6e8c755302096a6
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:27
-# 4d3d243794b240f58a3f5f28b1d7361a
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:29
-# e3a98a6c4893453081cd8aedb086f1c9
-msgid "Returns ``true`` when the column “col” in table “tab” is indexed."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:37
-# dfb4eaa587d44b0690fd251ab5185e98
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:39
-# f511d859bfe046989023539c1f2d1129
-msgid "``text`` Table name with or without schema component."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:40
-# f0a2cd529ee941aaaed970c2538116af
-msgid "``text`` Column name to be checked for."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:42
-# 70e6418103d44a1fbeeb97e4b5ecc5e8
-msgid "Returns:"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:44
-# f99c66f2171347bb9e36f99bbd69efaf
-msgid "``true`` when the column “col” in table “tab” is indexed."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:45
-# 292f41c8c5104692a8bbf659a84fc378
-msgid "``false`` when:"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:47
-# 701997927e524450bd924bf7134bdfc7
-msgid "The table \"tab\" is not found or"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:48
-# 41b37ba61c8c4213bb1df5dd8e65ce87
-msgid "Column “col” is not found in table “tab” or"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:49
-# 29dd85d5aaf942b8b19cf7cad5a4a95a
-msgid "Column \"col\" in table \"tab\" is not indexed"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:52
-# ec660d6d14484fcf890cdaff3841fbb6
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:53
-# 502e0dcfa9c94d5d8f32f08805cccc61
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:57
-# 92ffab70ca704c10a6cc4cca64f9684e
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:77
-# 93c2e790240f41c29cd21b34f7c38e69
-msgid "The example use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:81
-# df3aed4fbcc1436b909badbac38c665d
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:83
-# f7acee1408dc4fbfa921dc44d4984832
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:84
-# 7357e1d9b3dc4d16909ae3c8a5bae25c
-msgid ":ref:`pgr_is_column_in_table` to check only for the existance of the column in the table."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:85
-# fd278b288b0d47929ada365ea3298a48
-msgid ":ref:`pgr_get_column_name` to get the name of the column as is stored in the postgres administration tables."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/is_column_indexed.rst:86
-# 0acfa104130e4bad85d03eb9de98cc6f
-msgid ":ref:`pgr_get_table_name` to get the name of the table as is stored in the postgres administration tables."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/point_to_id.pot b/doc/i18n/pot/src/common/doc/utilities/point_to_id.pot
deleted file mode 100644
index 9375c25..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/point_to_id.pot
+++ /dev/null
@@ -1,123 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:13
-# bb4d35d81dbf419d92135993b25bf3f2
-msgid "pgr_pointToId"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:20
-# 5f8bbbeb7257407eaccbcd4eb1cdde5f
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:22
-# 4e786b0d97c64529a693cb93a0066fbe
-msgid "``pgr_pointToId`` — Inserts a point into a vertices table and returns the corresponig id."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:26
-# 0540395d30d84b3a88f9496a96eb607f
-msgid "This function is intended for the developer's aid. Use :ref:`pgr_createTopology <pgr_create_topology>` or :ref:`pgr_createVerticesTable <pgr_create_vert_table>` instead."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:30
-# 0468d329e0c847ed9ae5519621e0321b
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:32
-# 48fa8684361f4511b857e0edea5433c1
-msgid "This function returns the ``id`` of the row in the vertices table that corresponds to the ``point`` geometry"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:40
-# ea3ee86983c54a158d1e648ad52f94f7
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:42
-# dcc1718fe36d483b8690cc772cc0a27d
-msgid "``geometry`` \"POINT\" geometry to be inserted."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:43
-# 82ac56ebeb534d39aa4a80574f9f1559
-msgid "``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:44
-# 9e2de147d9e14ece8cce6efc5c40e083
-msgid "``text`` Vertices table name WITH schema included."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:45
-# 5ac57ef6195b479e94642402fbc4f3a7
-msgid "``integer`` SRID of the geometry point."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:47
-# e4e0e0d3469e4682bbb6ba09157f8aae
-msgid "This function returns the id of the row that corresponds to the ``point`` geometry"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:49
-# e82b0dd9b9de4e6d80afba2ae3a78461
-msgid "When the ``point`` geometry already exists in the vertices table ``vertname``, it returns the corresponing ``id``."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:50
-# fa30a17bd3cc415ba37c7875ca33e130
-msgid "When the ``point`` geometry is not found in the vertices table ``vertname``, the funcion inserts the ``point`` and returns the corresponing ``id`` of the newly created vertex."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:52
-# fec6b7cd746a40a29761c7b8359f0f36
-msgid "The function do not perform any checking of the parameters. Any validation has to be done before calling this function."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:55
-# d14eb51215f648beb8de8ca57ced7f34
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:56
-# b011ef2ed6f14d2aa8bf7482c8f4c7b7
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:60
-# 6378fa10935b4141aba8800771d6ffc2
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:62
-# 3113010645e44f3eb066ced204809fd9
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:63
-# 7cc73b074fda41cab4ba4c266d0e03af
-msgid ":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create a topology based on the geometry."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/point_to_id.rst:64
-# fb031db0a9724f879b4aba030bf7e4cf
-msgid ":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based on the geometry."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/quote_ident.pot b/doc/i18n/pot/src/common/doc/utilities/quote_ident.pot
deleted file mode 100644
index b77cc46..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/quote_ident.pot
+++ /dev/null
@@ -1,123 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:13
-# a29bc38c00934455a61a928809e726c5
-msgid "pgr_quote_ident"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:20
-# 7a607b3217414dacb7a60ed553fa669e
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:22
-# 83d8f70549f6449694696760f3433ed2
-msgid "``pgr_quote_ident`` — Quotes the input text to be used as an identifier in an SQL statement string."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:24
-# 9acf3b885dcf47748574996d6839fa5e
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:28
-# 9766286ff78e4bdd807b6fc2a0d18f03
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:30
-# 17f1e06617ec49c9b4d10c7ee987676b
-msgid "Returns the given identifier ``idname`` suitably quoted to be used as an identifier in an SQL statement string."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:38
-# fc5793575dc74a4caa2e719f0abb78b5
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:41
-# ae9f56d7fd374c07a07cbf4ae95484a4
-msgid "Parameters"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:42
-# 975ba92b089b4538bbd814fe8da1d1e0
-msgid "``text`` Name of an SQL identifier. Can include ``.`` dot notation for schemas.table identifiers"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:44
-# d3b2e0d842ca41cf99f72a01baa11306
-msgid "Returns the given string suitably quoted to be used as an identifier in an SQL statement string."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:46
-# 9acfa5fbdf96495fa518298a83f457ee
-msgid "When the identifier ``idname`` contains on or more ``.`` separators, each component is suitably quoted to be used in an SQL string."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:50
-# 26f5d9d6d22a4db78936693238b7599e
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:51
-# 8ccc12d9c11b44a2bcb209901fd31a82
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:55
-# 5ea5e79a7ee14e8a872be7667bff2a5c
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:57
-# 6bf5893c3a56426ab1d6e6979dfdc23a
-msgid "Everything is lower case so nothing needs to be quoted."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:76
-# 267e5af3a91f43e1b20f454c4245763b
-msgid "The column is upper case so its double quoted."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:95
-# 2fb617d87f7349d9840668ff59a22bd1
-msgid "The schema name has a capital letter so its double quoted."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:106
-# b99fdd5fa3334085bd12923569264f02
-msgid "Ignores extra ``.`` separators."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:118
-# a2ac15143e554318a483eb1975c90e9d
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:120
-# d733cd020091460e9ce0f9bad998a90c
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/quote_ident.rst:121
-# 7a1957891442488ea5097c12faac8a4b
-msgid ":ref:`pgr_get_table_name` to get the name of the table as is stored in the postgres administration tables."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/start_point.pot b/doc/i18n/pot/src/common/doc/utilities/start_point.pot
deleted file mode 100644
index ebb649c..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/start_point.pot
+++ /dev/null
@@ -1,90 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/start_point.rst:13
-# a0014a80f1854f6c8c487ecf38de18ab
-msgid "pgr_startPoint"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:20
-# e34ec0347c644975b97988612823f49e
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:22
-# 6f89d904e615496ab9fd079ca91410e6
-msgid "``pgr_startPoint`` — Returns a start point of a (multi)linestring geometry."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:24
-# bbe06b7720234701af354f96178457d8
-msgid "This function is intended for the developer's aid."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:28
-# 376576a63861477baf7dcc2f263d4b40
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:30
-#: ../../../src/common/doc/utilities/start_point.rst:44
-# e0f3168cb24a46308d2c8bc98fc19625
-# 39cfd17dabde4ba7aa077e36bf68e888
-msgid "Returns the geometry of the start point of the first LINESTRING of ``geom``."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:38
-# 9820b82dfe91433691178c90f94ca715
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:41
-# 828e6f995b9641d19fe042ff74d599a3
-msgid "Parameters"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:42
-# 1beb95ca3e2044ccb2b67f67e3774c2f
-msgid "``geometry`` Geometry of a MULTILINESTRING or LINESTRING."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:49
-# 455a5c21197143f7ae842b0ff7c93abc
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:50
-# ff66c11e90e54398a9da56e715260af5
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:55
-# cf55e686bbdc412b81a3f693cbdbb148
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:57
-# a0f1ef45c6ea431cafd23afe380fb5b3
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/start_point.rst:58
-# cb1f2ccc1b4d4773b44b8596071fa7ec
-msgid ":ref:`pgr_end_Point` to get the end point of a (multi)linestring."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/version.pot b/doc/i18n/pot/src/common/doc/utilities/version.pot
deleted file mode 100644
index 984223c..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/version.pot
+++ /dev/null
@@ -1,113 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/version.rst:13
-# 120e93c3ef3647949e1a975294a99bd3
-msgid "pgr_version"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:20
-# b6c91310e12c463eb0617bfab826c83e
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:22
-# f11eb3407d534137b871fdc8e4d77e2c
-msgid "``pgr_version`` — Query for pgRouting version information."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:26
-# d1e04916876543639e982c802bcb77d0
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:28
-# f6852ef0ec754bd6878dc0f6ff276b4a
-msgid "Returns a table with pgRouting version information."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:36
-# 8310435b46cd4eb4b7617bf861ebfd73
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:38
-# 84fc0d5f9dae4ff2b8845d0d06c387ff
-msgid "Returns a table with:"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:40
-# 4b9882bf11504eaaace36023f9e3fefd
-msgid "``varchar`` pgRouting version"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:41
-# cb9baac28c5f44cbbf847927e7bf7a1d
-msgid "``varchar`` Git tag of pgRouting build"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:42
-# baa7bc2926d44f2491342c85304990c4
-msgid "``varchar`` Git hash of pgRouting build"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:43
-# af23c5ed520a4879b08fd0b7f6fa558a
-msgid "``varchar`` Git branch of pgRouting build"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:44
-# 9e3b7fa474ad4a91a67a2d657c321dd9
-msgid "``varchar`` Boost version"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:48
-# b0c9105abb784c4dbc6e480b6d200a96
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:49
-# 8427743df80d4a139543e5e908ddb657
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:53
-# eb2405381b964d788c775cfcbfe79586
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:55
-# 6973b676f6f949a3bbc7901dee35477a
-msgid "Query for full version string"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:67
-# 0ccb4834560b4e7996f265b014688fd5
-msgid "Query for ``version`` and ``boost`` attribute"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:80
-# c416c15423ca4981947bfd806b359f96
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/version.rst:82
-# 5a81421619a74d6e8c949d37fb36d47a
-msgid ":ref:`pgr_versionless` to compare two version numbers"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/common/doc/utilities/versionless.pot b/doc/i18n/pot/src/common/doc/utilities/versionless.pot
deleted file mode 100644
index 9137bf5..0000000
--- a/doc/i18n/pot/src/common/doc/utilities/versionless.pot
+++ /dev/null
@@ -1,93 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/common/doc/utilities/versionless.rst:13
-# bc5450efd52446e5b77059638a5489b9
-msgid "pgr_versionless"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:20
-# 2f65851860ce4d92aa624ec6220926f9
-msgid "Name"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:22
-# 392ec183950848928c4ed890d366048a
-msgid "``pgr_versionless`` — Compare two version numbers."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:24
-# 08c5a652edb447058c68ad1665ed5b37
-msgid "This function is intended for the developer’s aid."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:27
-# d20c83be337d4d70b92314f8456c00ac
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:29
-# 5fdd9b5a2c0e4a0a884ecfb88571e774
-msgid "Returns ``true`` if the first version number is smaller than the second version number. Otherwise returns ``false``."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:37
-# 83187570213e4f0abf4baa9d9041b0a7
-msgid "Description"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:39
-# 76df5f109e9544eda9bffefb0eddcaf8
-msgid "``text`` first version number"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:40
-# 802d2ea5436f4736afd84178d7ca2933
-msgid "``text`` second version number"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:44
-# ba3d1a09dc494fba9a10df433131521f
-msgid "History"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:45
-# 4a6dccc0743e4964a47f0f7fdd76f048
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:49
-# 5e55333851f146efb2467abadd1b9a67
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:62
-# 87f3cfc47d18405a93604e77f0e5db79
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:64
-# 147571c3db724ba4b6e49b670cb5d433
-msgid ":ref:`developer` for the tree layout of the project."
-msgstr ""
-
-#: ../../../src/common/doc/utilities/versionless.rst:65
-# 09128f53be59426cb5052a986bd2399c
-msgid ":ref:`pgr_version` to get the current version of pgRouting."
-msgstr ""
-
diff --git a/doc/i18n/pot/src/dijkstra/doc/index.pot b/doc/i18n/pot/src/dijkstra/doc/index.pot
deleted file mode 100644
index 1bff129..0000000
--- a/doc/i18n/pot/src/dijkstra/doc/index.pot
+++ /dev/null
@@ -1,168 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/dijkstra/doc/index.rst:13
-# 50301171ce5d401f85559f0f78ed94c2
-msgid "pgr_dijkstra - Shortest Path Dijkstra"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:20
-# aac36ba64c474526bf1828597c388126
-msgid "Name"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:22
-# 8fab07f022884045989636bfdef28f17
-msgid "``pgr_dijkstra`` — Returns the shortest path using Dijkstra algorithm."
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:26
-# bac7f012950e44e781b8011504302763
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:28
-# 501edbe3463e4ee2894a8a47f64d6069
-msgid "Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra in 1956. It is a graph search algorithm that solves the single-source shortest path problem for a graph with non-negative edge path costs, producing a shortest path tree. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:37
-# bf015d45cc2c47e1a954c58da0c0c2d1
-msgid "Description"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:39
-# 3c98337205be4a89b11255489fdc5707
-msgid "a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:46
-# eb3d36feb6c0498fb0430392b4e6812c
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:47
-# 5007749c114a4a4883504de934b52755
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:48
-# 4b5b6dc5d0f34de5adf3377389a638b8
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:49
-# 8997da1dc3194f63bde2a1dd22f22459
-msgid "``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph."
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:50
-# a380f7a73abe40dcb448928e9e8f5d8e
-msgid "``float8`` (optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs)."
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:52
-# 6be50d4127614cb8af1c89912d3c470b
-msgid "``int4`` id of the start point"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:53
-# ac4470290cc0492bbbd774e19c7f3885
-msgid "``int4`` id of the end point"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:54
-# e8017573874b4b32806334bbf0b5c66a
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:55
-# a77e45a90ab247519a55dd214eb09183
-msgid "if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction."
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:57
-# 8fa8d103a2c54e799dfefc851d437351
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:59
-# 8a1768b88a6348df950c421a085a39b4
-msgid "row sequence"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:60
-# 4b694cf4fa72486997d4dc72b4131ae9
-msgid "node ID"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:61
-# cc7e0ea1d452430b905568dbcecf976b
-msgid "edge ID (``-1`` for the last row)"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:62
-# 199ffe68ac7e4a2a8584fb600c90369d
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:66
-# 49024735230e45e6afe5d7fcf5ff9903
-msgid "History"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:67
-# f7df24de24614eb591f1d2e5455ddd60
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:71
-# dda042482061476987a715274a6859b3
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:73
-# 161506681f4442b386c588480840fa42
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:92
-# ad62d0be8ed14ada88f2af6d93bc47ba
-msgid "With ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:110
-# ecdd052e4b2f46e6977bac493ef43b81
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:114
-# e563519bf1d34a6fa67db74514cba5a4
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:116
-# c1af2ee0672a4d8394b784757941806c
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-#: ../../../src/dijkstra/doc/index.rst:117
-# f67200f21bf1487ba2a3c2d0399fc8e6
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/driving_distance/doc/dd_alphashape.pot b/doc/i18n/pot/src/driving_distance/doc/dd_alphashape.pot
deleted file mode 100644
index aff8b2c..0000000
--- a/doc/i18n/pot/src/driving_distance/doc/dd_alphashape.pot
+++ /dev/null
@@ -1,128 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:13
-# d077d033e32945eda2db624b4fb15c87
-msgid "pgr_alphaShape"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:20
-# 0f03d66ae6c24cebb71294dd4bd57738
-msgid "Name"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:22
-# b91b4fac0f1d4436a46d6b68c0564b27
-msgid "``pgr_alphashape`` — Core function for alpha shape computation."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:26
-# 8c5d810808004da28c9608bfe8612a35
-msgid "This function should not be used directly. Use :ref:`pgr_drivingDistance <pgr_driving_distance>` instead."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:30
-# cffb335eb0b8413091b3288a827ba95f
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:32
-# cea4c9280e7045e38a48a2ad48b2f88d
-msgid "Returns a table with (x, y) rows that describe the vertices of an alpha shape."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:40
-# e21f6decfdc048c6b807ac4b75dfc009
-msgid "Description"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:42
-# 239252ef272549988742e68d409be1c5
-msgid "``text`` a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:48
-# ea79b4217a04470db9b944edde756735
-msgid "``int4`` identifier of the vertex"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:49
-# 374aad70a8bc43fab7825995427b1341
-msgid "``float8`` x-coordinate"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:50
-# 7a68355e3c98492eae0e8e9c4db06550
-msgid "``float8`` y-coordinate"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:53
-# bdffab8e97c14d00ba6fd622a69ac93d
-msgid "Returns a vertex record for each row :"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:55
-# 9ae7ba0261ec47e1957eff0c43054c20
-msgid "x-coordinate"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:56
-# d5704df2c3be4fa2975a9eb652ed7c83
-msgid "y-coordinate"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:60
-# b360947766ce45b7b9e306b47ee0e3e6
-msgid "History"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:61
-# 889a23948a5a4365ade4a5ddd8574c35
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:65
-# 87779de62bfe4b6683ee50152d6a672c
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:66
-# c550537fd6dd42d5af69e473853ec69c
-msgid "In the alpha shape code we have no way to control the order of the points so the actual output you might get could be similar but different. The simple query is followed by a more complex one that constructs a polygon and computes the areas of it. This should be the same as the result on your system. We leave the details of the complex query to the reader as an exercise if they wish to decompose it into understandable pieces or to just copy and paste it into a SQL window to run."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:119
-# 17d05b32fc364eba9c6e14ee8d20ac6f
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:123
-# acddeeeafb7f4adc934aeed899b5d90a
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:125
-# b7a2a079ede34ff7b98afb5367c2d81a
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_alphashape.rst:126
-# d3155940c26b4c7ca571712ad0b3458f
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/driving_distance/doc/dd_driving_distance.pot b/doc/i18n/pot/src/driving_distance/doc/dd_driving_distance.pot
deleted file mode 100644
index b934b89..0000000
--- a/doc/i18n/pot/src/driving_distance/doc/dd_driving_distance.pot
+++ /dev/null
@@ -1,178 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:13
-# 13ad2bf13e424cc6860d73932d3d0ef3
-msgid "pgr_drivingDistance"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:20
-# a3a62f6711c643cd8b46d6c8efa8979a
-msgid "Name"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:22
-# 4df03c9837844d15a2ef1f69c8b1d6d1
-msgid "``pgr_drivingDistance`` - Returns the driving distance from a start node."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:26
-# ed124ddfdba740f1a7a2fe858b044921
-msgid "Requires :ref:`to build pgRouting <build>` with support for Driving Distance."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:30
-# d30cc7baa5ec4ef9b0e2cfcaa9abc823
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:32
-# c39bf072197e44af857573b4321b93f8
-msgid "This function computes a Dijkstra shortest path solution them extracts the cost to get to each node in the network from the starting node. Using these nodes and costs it is possible to compute constant drive time polygons. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a list of accessible points."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:41
-# cfa9c122e87741d1b420a6c009bde3bd
-msgid "Description"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:43
-# 5b11549936b247e0916c31575bc873a9
-msgid "a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:50
-# 1cad499986e64e7087c9d53c00edf785
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:51
-# 4a0642fea1dc458ebe0fff4bd9ae068e
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:52
-# 6eb2c2e575474bf6b9fdf5f73a3d3133
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:53
-# 37c527d8ce7d4835bc902f791545e719
-msgid "``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:54
-# 0e0be8b97cdc4789bf52927612f18093
-msgid "(optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs)."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:56
-# 51879485fdc74456ab8713532784bae9
-msgid "``int4`` id of the start point"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:57
-# cc718c6eeaf142aebebbac343f3735ee
-msgid "``float8`` value in edge cost units (not in projection units - they might be different)."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:58
-# e799a2c5db3f4e3ea5acccb7885c9c09
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:59
-# b5a481533b404906a0ac80911c3d128c
-msgid "if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:61
-# 4347c456fe8842a1a71bf1a6dda67c9c
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:63
-# feca3515964d4e13831803c5cce23ef7
-msgid "row sequence"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:64
-# cea1ec0763be4d9493014381ac1a9f4d
-msgid "node ID"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:65
-# 58485a6aae3f467b8003af4a2466a4db
-msgid "edge ID (this is probably not a useful item)"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:66
-# 40a1586ef5c247098537a0a9a02bb439
-msgid "cost to get to this node ID"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:70
-# 91feeda5554f4491b1021dd096bde9c1
-msgid "You must reconnect to the database after ``CREATE EXTENSION pgrouting``. Otherwise the function will return ``Error computing path: std::bad_alloc``."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:74
-# 1cb8d1668c9143d1add08f338e6b6226
-msgid "History"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:75
-# 1ba0522ef3114a84a02fef855734fdfa
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:79
-# 71327a7485e24bf4a12c6e44c8e89b0d
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:81
-# e100d6420c0a4c238d29b1b7e88276bf
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:101
-# 8d5f6019a42f496aa35aecd4876b1d28
-msgid "With ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:121
-# ab3dcc12ed474b6b8368041393f4ae6b
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:125
-# 83f1ee65122647598d2f2d93adf5570b
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:127
-# a57748a909a84cbb81c6e89f951ff521
-msgid ":ref:`pgr_alphashape` - Alpha shape computation"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_driving_distance.rst:128
-# 1803d90dc87943b3bcd563650ce43a28
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/driving_distance/doc/dd_points_as_polygon.pot b/doc/i18n/pot/src/driving_distance/doc/dd_points_as_polygon.pot
deleted file mode 100644
index 8c1624e..0000000
--- a/doc/i18n/pot/src/driving_distance/doc/dd_points_as_polygon.pot
+++ /dev/null
@@ -1,113 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:13
-# be93d52711ca42e4946468212e312ae5
-msgid "pgr_pointsAsPolygon"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:20
-# 2ea235cb4cce42fb813e8f41aa552a28
-msgid "Name"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:22
-# 1430de2fc0c14cd8b7cfc0ef9d21ae3c
-msgid "``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:26
-# 4194eb7aea434a638edc87167bb4f1e1
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:28
-# 6aa5a5337d764379b1df0471779aefa5
-msgid "Returns the alpha shape as polygon geometry."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:36
-# 6cf5af5edc05462da22ae0bdc35b1428
-msgid "Description"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:38
-# 1ae3cca73e1e47ebb15e0ea2211d5551
-msgid "``text`` a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:44
-# c98eeb70402c425491209d7939ba55b1
-msgid "``int4`` identifier of the vertex"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:45
-# 7d8a2fb99fea4fa69aa71fa0a8683723
-msgid "``float8`` x-coordinate"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:46
-# 2222fe3151c840c58a8589f727ab958b
-msgid "``float8`` y-coordinate"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:49
-# 3104ee2168b54ceca71494e8bca5341c
-msgid "Returns a polygon geometry."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:53
-# 8eeab4028e344899bcd5dfbeb9dc7c87
-msgid "History"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:54
-# ffd92ee0acc041afad1503af1294c1c9
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:58
-# a7ba25fc81a94d0a888fa72020939906
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:59
-# e31e4b104c2e44b9a70ef30d98b50305
-msgid "In the following query there is not way to control which point in the polygon is the first in the list, so you may get similar but different results than the following which are also correct. Each of the pgr_pointsAsPolygon queries below is followed by one the compute the area of the polygon. This area should remain constant regardles of the order of the points making up the polygon."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:93
-# 92ebb13d0cf84344bfe94aba861781a1
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:97
-# 4d7c6f71a4fd4b8d8f6e6ad7817041bc
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:99
-# 4830bc30eee140148e889683f6188334
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/dd_points_as_polygon.rst:100
-# 3e503d0c045f4912ab7dd045b7cf311c
-msgid ":ref:`pgr_alphashape` - Alpha shape computation"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/driving_distance/doc/index.pot b/doc/i18n/pot/src/driving_distance/doc/index.pot
deleted file mode 100644
index b09592c..0000000
--- a/doc/i18n/pot/src/driving_distance/doc/index.pot
+++ /dev/null
@@ -1,43 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/driving_distance/doc/index.rst:13
-# 44cd245e0159442bb2b1eb7df2e5e8f8
-msgid "With Driving Distance Enabled"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/index.rst:15
-# bf2dd2ef860f42af85c5427bb3d02d6b
-msgid "Driving distance related Functions"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/index.rst:17
-# 907ccdeae58b448aa8ef88931b961e37
-msgid ":ref:`pgr_driving_distance` - Driving Distance"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/index.rst:18
-# 6efbd852d891404998969898e9442e71
-msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
-msgstr ""
-
-#: ../../../src/driving_distance/doc/index.rst:19
-# b6665aa94dd5451f933ffd1d2d4cb658
-msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/index.pot b/doc/i18n/pot/src/index.pot
deleted file mode 100644
index 92063df..0000000
--- a/doc/i18n/pot/src/index.pot
+++ /dev/null
@@ -1,73 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/index.rst:13
-# 5525311c7795491fbde8c298291a90a7
-msgid "Routing Functions"
-msgstr ""
-
-#: ../../../src/index.rst:15
-# 8fdb1103188843b6949017df12eca3e5
-msgid ":ref:`pgr_apspJohnson <pgr_apsp_johnson>`- All Pairs Shortest Path, Johnson’s Algorithm"
-msgstr ""
-
-#: ../../../src/index.rst:16
-# e785107549eb4a819ef8a4ec2c53024f
-msgid ":ref:`pgr_apspWarshall<pgr_apsp_warshall>` - All Pairs Shortest Path, Floyd-Warshall Algorithm"
-msgstr ""
-
-#: ../../../src/index.rst:17
-# 8e9e345db88641dcac253af72dd57d74
-msgid ":ref:`pgr_astar<pgr_astar>` - Shortest Path A*"
-msgstr ""
-
-#: ../../../src/index.rst:18
-# 23ad52ea0f22463eab74e643b17dbaab
-msgid ":ref:`pgr_bdAstar<bd_astar>` - Bi-directional A* Shortest Path"
-msgstr ""
-
-#: ../../../src/index.rst:19
-# 4593f71258fa4eb5a73040e3c8d6df09
-msgid ":ref:`pgr_bdDijkstra<bd_dijkstra>` - Bi-directional Dijkstra Shortest Path"
-msgstr ""
-
-#: ../../../src/index.rst:20
-# 9c9d7324d76144cc87d44f199c86ad45
-msgid ":ref:`pgr_dijkstra<pgr_dijkstra>` - Shortest Path Dijkstra"
-msgstr ""
-
-#: ../../../src/index.rst:21
-# 969c1456730541eab216fd6f9256a548
-msgid ":ref:`pgr_kDijkstra<pgr_kdijkstra>` - Multiple destination Shortest Path Dijkstra"
-msgstr ""
-
-#: ../../../src/index.rst:22
-# d95a968f376b4d6084ba35c392dca0e8
-msgid ":ref:`pgr_ksp<ksp>` - K-Shortest Path"
-msgstr ""
-
-#: ../../../src/index.rst:23
-# ad0e9763fb6842b4ba3a654a73420db6
-msgid ":ref:`pgr_tsp<pgr_tsp>` - Traveling Sales Person"
-msgstr ""
-
-#: ../../../src/index.rst:24
-# 7e1610eae7ba48d9b45bcf5d527cc51b
-msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/kdijkstra/doc/index.pot b/doc/i18n/pot/src/kdijkstra/doc/index.pot
deleted file mode 100644
index 93421c7..0000000
--- a/doc/i18n/pot/src/kdijkstra/doc/index.pot
+++ /dev/null
@@ -1,200 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/kdijkstra/doc/index.rst:13
-# 321a2d444abf468a90711a7e0d2c2632
-msgid "pgr_kDijkstra - Mutliple destination Shortest Path Dijkstra"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:21
-# e79fa12d3f2646dba7b0fecc8ebb3db8
-msgid "Name"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:23
-# d9f49d8a02ce47dfb286613acd899230
-msgid "``pgr_kdijkstraCost`` - Returns the costs for K shortest paths using Dijkstra algorithm."
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:24
-# eaba512b56f746e68d8b0596b2236603
-msgid "``pgr_kdijkstraPath`` - Returns the paths for K shortest paths using Dijkstra algorithm."
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:28
-# 1f33329c6918489a9360f3f05f91a5e5
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:30
-# f246b5beb7a84fd29e22bff9729a11b8
-msgid "These functions allow you to have a single start node and multiple destination nodes and will compute the routes to all the destinations from the source node. Returns a set of :ref:`pgr_costResult3 <type_cost_result3>` or :ref:`pgr_costResult3 <type_cost_result3>`. ``pgr_kdijkstraCost`` returns one record for each destination node and the cost is the total code of the route to that node. ``pgr_kdijkstraPath`` returns one record for every edge in that path from source to destinatio [...]
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:42
-# 4d073996761445fe92adf32a152cd99e
-msgid "Description"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:44
-# 34aae6f8476f4c73b6d780aec323a7f2
-msgid "a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:51
-# f7a64250d6b44382ad4755c1fda7392b
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:52
-# ecd14cf38909448a87b3541ca6b8683f
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:53
-# 31ae557bbf954747ac55210035341e61
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:54
-# 4ad7cad1a8374f029ba8163961933966
-msgid "``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph."
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:55
-# 7423095b6c724d6bbeb94e8bc81e5045
-msgid "(optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs)."
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:57
-# e006660aa8fe43889829a3fb9129722e
-msgid "``int4`` id of the start point"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:58
-# 5902a09a1c8843dd86f773ac9a02742b
-msgid "``int4[]`` an array of ids of the end points"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:59
-# 7ef04792acbd48eba2dfac459fa5d246
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:60
-# 01a01d93e6cc44f3b437ae8a0638bd98
-msgid "if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction."
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:63
-# f97cec15230f45d0b682bd48370f036a
-msgid "``pgr_kdijkstraCost`` returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:65
-#: ../../../src/kdijkstra/doc/index.rst:73
-# 444acaa21b8d49b1a199d3c98d061da5
-# 3afefd4792044712a85101225a520776
-msgid "row sequence"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:66
-# f91b69aec2754787b2e0546c0e9d5b8d
-msgid "path vertex source id (this will always be source start point in the query)."
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:67
-# 28e57f8b708a4fcfb61b45bef618b32a
-msgid "path vertex target id"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:68
-# a77a25a88d0a43f2a1785927cc97fab5
-msgid "cost to traverse the path from ``id1`` to ``id2``. Cost will be -1.0 if there is no path to that target vertex id."
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:71
-# cf8954ea0a5049bcb69571c00c870bfd
-msgid "``pgr_kdijkstraPath`` returns set of :ref:`type_cost_result3`:"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:74
-# 44cee94dc70d409a82748324c968d441
-msgid "path target id (identifies the target path)."
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:75
-# 64d54eda8e3a49f38b12fe36a607cd14
-msgid "path edge source node id"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:76
-# 011bd73b0bf44f34aae133abed6fea7f
-msgid "path edge id (``-1`` for the last row)"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:77
-# b457a094c550405080dbc41bd88797f4
-msgid "cost to traverse this edge or -1.0 if there is no path to this target"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:81
-# 1111e0b2e1ec4565a9eb3cb35ebfca97
-msgid "History"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:82
-# 5de8275fef754c6c88bea5e5db3cfd52
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:86
-# caab19edab694293be8ab9fe5000e071
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:88
-# 51dfaec15b51441a92854a7600ab3970
-msgid "Returning a ``cost`` result"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:123
-# 0c705d0e2cac4fd18cc45a401790b3e2
-msgid "Returning a ``path`` result"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:144
-# 1bfccc73ccde407fa34f8c9618d6f554
-msgid "There is no assurance that the result above will be ordered in the direction of flow of the route, ie: it might be reversed. You will need to check if ``st_startPoint()`` of the route is the same as the start node location and if it is not then call ``st_reverse()`` to reverse the direction of the route. This behavior is a function of PostGIS functions ``st_linemerge()`` and ``st_union()`` and not pgRouting."
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:153
-# b7a116ab40884da09e5f686ef41af548
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:155
-# 17c6245299574655bd1eb989883ce059
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-#: ../../../src/kdijkstra/doc/index.rst:156
-# 34ebfed0f3964ad6b42644c80b51c99e
-msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/ksp/doc/index.pot b/doc/i18n/pot/src/ksp/doc/index.pot
deleted file mode 100644
index ba68858..0000000
--- a/doc/i18n/pot/src/ksp/doc/index.pot
+++ /dev/null
@@ -1,178 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/ksp/doc/index.rst:13
-# 8fded0f5c5394081adda4db3a409a1bd
-msgid "pgr_ksp - K-Shortest Path"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:20
-# 285de40d0f134529b7fd366033d21d76
-msgid "Name"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:22
-# 16ffe1a382574d129150e62378004f50
-msgid "``pgr_ksp`` — Returns the \"K\" shortest paths."
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:26
-# 4e4ecc509a594b3abb906d4d82974bc5
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:28
-# eb7a454715764d35bdba5d1d8682646f
-msgid "The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the number of shortest paths desired. Returns a set of :ref:`pgr_costResult3 <type_cost_result3>` (seq, id1, id2, id3, cost) rows, that make up a path."
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:37
-# 0bdce7ee5be74ba98a0d5221b5a10499
-msgid "Description"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:39
-# 2a75f0b325af45a5b254d9a9d9ed9e81
-msgid "a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:46
-# 0436c16bb8514c469724f3a9c576fbc9
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:47
-# a97e14ef3fd4438abfb74c371fe473f7
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:48
-# d7bc27ad43df444abae7ec879dea89d7
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:49
-# 9a5e6739d10e4589ae71f3de3e6d07b0
-msgid "``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph."
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:50
-# 0600cb9492634d53894e713a4898268b
-msgid "(optional) the cost for the reverse traversal of the edge. This is only used when ``has_rcost`` the parameter is ``true`` (see the above remark about negative costs)."
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:52
-# b3de1559edb1457f956efb5784516201
-msgid "``int4`` id of the start point"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:53
-# 7b2591f4a6f8498484329ed74f95f47c
-msgid "``int4`` id of the end point"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:54
-# d0a0c5c83c02403f99940876269fe611
-msgid "``int4`` number of alternative routes"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:55
-# b24f1c5af0f846468cc3bb28f4f872f0
-msgid "if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction."
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:57
-# 5cc117f406fb49f4b932c8b8e7f20e0e
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:59
-# 66462f4fdf1a4ca79741d566b9d77823
-msgid "sequence for ording the results"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:60
-# 0e0ce45f43714e908322838c6764b5c2
-msgid "route ID"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:61
-# 78724897b88e431db972233eb93d0496
-msgid "node ID"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:62
-# 2a5a3764fedd403c8072acd92b09b4d6
-msgid "edge ID (``0`` for the last row)"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:63
-# c6c3999e4dd84dbf814f5d44e5bb2100
-msgid "cost to traverse from ``id2`` using ``id3``"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:65
-# f3f37d868f8b41fcb2f49b3242923eb2
-msgid "KSP code base taken from http://code.google.com/p/k-shortest-paths/source."
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:69
-# 80d641fff71848beb29d2be6f68c6526
-msgid "History"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:70
-# 168f0b58648c4c43b2b683d760d75222
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:74
-# c8dfe3e8f3c246f49801d1c26294159e
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:76
-# 6875c491f882458fb0d4f55d05823eb3
-msgid "Without ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:104
-# ad03f1fe958f415a94ebde027a5fcd10
-msgid "With ``reverse_cost``"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:131
-# d4fa56311a96421db001ffc5685ed2a1
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:135
-# aca51b91e9384c8a85bbc24dbfde463d
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:137
-# f1592eabd089430f8841c78093553773
-msgid ":ref:`type_cost_result3`"
-msgstr ""
-
-#: ../../../src/ksp/doc/index.rst:138
-# 2239083543de4ea4b3820e12cf094e05
-msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/trsp/doc/index.pot b/doc/i18n/pot/src/trsp/doc/index.pot
deleted file mode 100644
index a80e7a4..0000000
--- a/doc/i18n/pot/src/trsp/doc/index.pot
+++ /dev/null
@@ -1,228 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/trsp/doc/index.rst:13
-# e25db93cfed548499e37c2a53ca764ea
-msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:23
-# 569f8da166fa4b6b9e11126fff7fe8d2
-msgid "Name"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:25
-# 5a80c89ee268481b87d5fa641f98aa1f
-msgid "``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:29
-# cbe0111a1eb34d32871e7bdd33597fa5
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:31
-# db16fb08b61747fbbca144f887168e8d
-msgid "The turn restricted shorthest path (TRSP) is a shortest path algorithm that can optionally take into account complicated turn restrictions like those found in real work navigable road networks. Performamnce wise it is nearly as fast as the A* search but has many additional features like it works with edges rather than the nodes of the network. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:47
-# f60b1232f6ad4c979cddf53907a81045
-msgid "Description"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:49
-# ef4cda41c0564a839743865cbc603da4
-msgid "The Turn Restricted Shortest Path algorithm (TRSP) is similar to the :ref:`shooting_star` in that you can specify turn restrictions."
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:51
-# fa4644835d8f4a71a427862494b3602f
-msgid "The TRSP setup is mostly the same as :ref:`Dijkstra shortest path <pgr_dijkstra>` with the addition of an optional turn restriction table. This makes adding turn restrictions to a road network much easier than trying to add them to Shooting Star where you had to ad the same edges multiple times if it was involved in a restriction."
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:54
-# 50e0ea0f40fb4949bd680a91424b1cab
-msgid "a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:61
-# 5c9a3afcb3c44428b44e3faff4d7fb24
-msgid "``int4`` identifier of the edge"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:62
-# 0bc75b3d2a394b0b985c7ade6c8f1023
-msgid "``int4`` identifier of the source vertex"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:63
-# bf89d1ac315e45ff872ed2265b97e184
-msgid "``int4`` identifier of the target vertex"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:64
-# c35aabbc54664ed9b8b4d338830cbe51
-msgid "``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph."
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:65
-# 1772e656f0094d59b0ca539b5b518f40
-msgid "(optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs)."
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:67
-# 732186f456214aba9eb4cf4f550683c8
-msgid "``int4`` **NODE id** of the start point"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:68
-# 3cfd7b1609784af0baef097aae852cc4
-msgid "``int4`` **NODE id** of the end point"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:69
-# 25838598316d463d8fd4d5c8aceeae73
-msgid "``true`` if the graph is directed"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:70
-# c4ba536be8344e0c9efc09a72a386521
-msgid "if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction."
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:72
-# f5b994007d4b4265b077784f687cdd12
-msgid "(optional) a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:78
-# cf4a8d9b998d4bf19182ae1d7b81b12a
-msgid "``float8`` turn restriction cost"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:79
-# 31b200b38ab2467fad03e409ea4cb2fb
-msgid "``int4`` target id"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:80
-# 18631ca29f3049f5bf25994f48e30bd9
-msgid "``text`` commar seperated list of edges in the reverse order of ``rule``"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:82
-# 11a5643fa65c460dbed73d7f8b885b53
-msgid "Another variant of TRSP allows to specify **EDGE id** of source and target together with a fraction to interpolate the position:"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:84
-# 480daabb9a194383a1684fd0ff9c935f
-msgid "``int4`` **EDGE id** of the start edge"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:85
-# caecc7566bdf4de2a775d0bcc298c1da
-msgid "``float8`` fraction of 1 defines the position on the start edge"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:86
-# ce6b927039ce4e4e8691a3dc86a19350
-msgid "``int4`` **EDGE id** of the end edge"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:87
-# cfcd790081314f2d95b6380ad844bfaf
-msgid "``float8`` fraction of 1 defines the position on the end edge"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:89
-# 51a5b3df7cad44629dd16dd7d4df9a60
-msgid "Returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:91
-# c65b9f75f4b34f2dba2dff54126e2bdf
-msgid "row sequence"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:92
-# 202a1753b5d44d3d933af416314c552e
-msgid "node ID"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:93
-# ee2124c02c0644489ba3187b84c94f67
-msgid "edge ID (``-1`` for the last row)"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:94
-# 53553aa5696946a8a4f32fd29ac3ccdc
-msgid "cost to traverse from ``id1`` using ``id2``"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:98
-# 350ef7abfa374504af8c864e79ca19ea
-msgid "History"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:99
-# 274a6ed36f0c4b389215ecf11fe8ae3d
-msgid "New in version 2.0.0"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:103
-# 3de40dafd306464cb727e95d12199071
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:105
-# 4891aadd622e47c8813b06c9b16bef7e
-msgid "Without turn restrictions"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:126
-# 07a1695ee76d4cfdacd9e31404faeabb
-msgid "With turn restrictions"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:128
-# 9a9600189b5d49e78350080425375fa8
-msgid "Turn restrictions require additional information, which can be stored in a separate table:"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:144
-# 5df0a61bc74b4edf800bcf6c96fc35e4
-msgid "Then a query with turn restrictions is created as:"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:167
-# 07c0af23ed2d4b0c9c072126bad801b8
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:171
-# c9169eeeebbd45a5a6043cf527391dea
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/trsp/doc/index.rst:173
-# 6b71f73f59e84acb95464ac8fa93567a
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
diff --git a/doc/i18n/pot/src/tsp/doc/index.pot b/doc/i18n/pot/src/tsp/doc/index.pot
deleted file mode 100644
index c2289cd..0000000
--- a/doc/i18n/pot/src/tsp/doc/index.pot
+++ /dev/null
@@ -1,285 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) pgRouting Contributors - Version 2.0.0 (b19690f doc-merge)
-# This file is distributed under the same license as the pgRouting package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: pgRouting 2.0.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-09-24 15:37\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../../../src/tsp/doc/index.rst:13
-# 213bae5bc2614b69a60f3e0073160d13
-msgid "pgr_tsp - Traveling Sales Person"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:23
-# 28d53c5693be414b9d4e15432616d649
-msgid "Name"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:25
-# 7bdcd4773c134c22a45e8c2bf8c69234
-msgid "``pgr_tsp`` - Returns the best route from a start node via a list of nodes."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:26
-# e59f80608ac3408ca7fa946af5af4417
-msgid "``pgr_tsp`` - Returns the best route order when passed a disance matrix."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:27
-# e414d416862446308bea94c14348435a
-msgid "``pgr_makeDistanceMatrix`` - Returns a Eucleadian distance Matrix from the points provided in the sql result."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:31
-# b3c88820c7a5418a941ab297cd704504
-msgid "Synopsis"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:33
-# 489c0d1c212243d2a690175685879879
-msgid "The travelling salesman problem (TSP) or travelling salesperson problem asks the following question: Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city? This algoritm uses simulated annealing to return a high quality approximate solution. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:41
-# 4b29f9b87ba2478dbc22cc14e9de938a
-msgid "Returns a set of (seq integer, id1 integer, id2 integer, cost float8) that is the best order to visit the nodes in the matrix. ``id1`` is the index into the distance matrix. ``id2`` is the point id from the sql."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:43
-# bcd8df1b068345959235d9340bfbb6c9
-msgid "If no ``end_id`` is supplied or it is -1 or equal to the start_id then the TSP result is assumed to be a circluar loop returning back to the start. If ``end_id`` is supplied then the route is assumed to start and end the the designated ids."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:52
-# a5d696205ff64dd78838f7d496644fe9
-msgid "Description"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:55
-# ac5b308e5db84ccf930cf635b92ebe54
-msgid "With Euclidean distances"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:56
-# 2620c8627d1a49d49bb0792bd00252c4
-msgid "The TSP solver is based on ordering the points using straight line (euclidean) distance [#f0]_ between nodes. The implementation is using an approximation algorithm that is very fast. It is not an exact solution, but it is guaranteed that a solution is returned after certain number of iterations."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:58
-# 3de17b8a10e94e2988a8c3d14d2595a5
-msgid "a SQL query, which should return a set of rows with the following columns:"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:64
-# a63accfd6ffd4ff5a4dbd4f86d1cc9f8
-msgid "``int4`` identifier of the vertex"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:65
-# 84bf9edbffa04aeda33556bf2385177d
-msgid "``float8`` x-coordinate"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:66
-# 6c0979e0b89946b5b8adeebda45ce86a
-msgid "``float8`` y-coordinate"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:68
-# 971551f511c94aae883993550789160e
-msgid "``int4`` id of the start point"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:69
-# cdc6a47c5baf46c9a61e9f1b71d3c9f6
-msgid "``int4`` id of the end point, This is *OPTIONAL*, if include the route is optimized from start to end, otherwise it is assumed that the start and the end are the same point."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:72
-# 3b7db9712989472bb58f2479a6f800d4
-msgid "The function returns set of :ref:`type_cost_result`:"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:74
-#: ../../../src/tsp/doc/index.rst:107
-# 900f0388134843f6aa35cde99e590e83
-# e860a32f488247dbadc7c74756c3cb98
-msgid "row sequence"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:75
-# 6c0f9ab7a7d0408f973ff946bd6c7949
-msgid "internal index to the distance matric"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:76
-# f1d83f14c13d4bb0a1ca5c7dd40cb78d
-msgid "``id`` of the node"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:77
-# e0ec20a9dca54cc8b7bd9c908c0f1e5b
-msgid "cost to traverse from the current node to the next node."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:80
-# 70e99ac6fdfb4d689634b432425e5860
-msgid "Create a distance matrix"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:81
-# abbca3eeece44c25bf5ece181a334afa
-msgid "For users that need a distance matrix we have a simple function that takes SQL in ``sql`` as described above and returns a record with ``dmatrix`` and ``ids``."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:87
-# da2be5a058fd4caa9bbbae6bfe105b3d
-msgid "The function returns a record of ``dmatrix``, ``ids``:"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:89
-# 8c7f21a352fb47e08c85dd6b22ba5f90
-msgid "``float8[][]`` a symeteric Euclidean distance matrix based on ``sql``."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:90
-# a46135cbc16e4ff1992ecc75c7ae16f7
-msgid "``integer[]`` an array of ids as they are ordered in the distance matrix."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:94
-# da0acd3751d048deb913970497de142d
-msgid "With distance matrix"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:95
-# ee8200d99c414a8980a9fed0744dd7ff
-msgid "For users, that do not want to use Euclidean distances, we also provode the ability to pass a distance matrix that we will solve and return an ordered list of nodes for the best order to visit each. It is up to the user to fully populate the distance matrix."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:97
-# 1133284d6fa742728f54253d5d7a1b1f
-msgid "``float[][]`` distance matrix of points"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:98
-# 30bf5479d95f4f439c13a6a54566814e
-msgid "``int4`` index of the start point"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:99
-# b268b95158f74eedba20ffbc6963d252
-msgid "``int4`` (optional) index of the end node"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:101
-# 88e39cac076144bc9a404cdbaa72a2c6
-msgid "The ``end`` node is an optional parameter, you can just leave it out if you want a loop where the ``start`` is the depot and the route returns back to the depot. If you include the ``end`` parameter, we optimize the path from ``start`` to ``end`` and minimize the distance of the route while include the remaining points."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:103
-# e889605ba1284c35aef9887b26f5fd38
-msgid "The distance matrix is a multidimensional `PostgreSQL array type <http://www.postgresql.org/docs/9.1/static/arrays.html>`_ that must be ``N x N`` in size."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:105
-# 342bfeaa449942dbbe733bdd2857de88
-msgid "The result will be N records of ``[ seq, id ]``:"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:108
-# 0c8c76b6b870439782357ef66ae6e1ea
-msgid "index into the matrix"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:112
-# 049bf47d63bb40da8484a99c6f5e9b8b
-msgid "Footnotes"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:113
-# 4354faec266747d48c9aae3a1258e12b
-msgid "There was some thought given to pre-calculating the driving distances between the nodes using Dijkstra, but then I read a paper (unfortunately I don't remember who wrote it), where it was proved that the quality of TSP with euclidean distance is only slightly worse than one with real distance in case of normal city layout. In case of very sparse network or rivers and bridges it becomes more inaccurate, but still wholly satisfactory. Of course it is nice to have exact solution, but [...]
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:117
-# ace7d353ced743cf94e5ee9f2ab9e09a
-msgid "History"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:118
-# d0b9450fb14b43a9bd99ff9ea58edba2
-msgid "Renamed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:119
-# f3595749ecfb4d11a0febaf0b3b230ee
-msgid "GAUL dependency removed in version 2.0.0"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:123
-# 5c86b2316e2647c7b465fd00de8ace5d
-msgid "Examples"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:125
-# 829fb5cc6f52447ea2be085c5fda64ef
-msgid "Using SQL parameter (all points from the table, atarting from 6 and ending at 5). We have listed two queries in this example, the first might vary from system to system because there are multiple equivalent answers. The second query should be stable in that the length optimal route should be the same regardless of order."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:159
-# 4f796f78f49640e3b1fe208fc6f8c892
-msgid "Using distance matrix (A loop starting from 1)"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:161
-# 222083f1958f4204b2fff23ad86e4c1f
-msgid "When using just the start node you are getting a loop that starts with 1, in this case, and travels through the other nodes and is implied to return to the start node from the last one in the list. Since this is a circle there are at least two possible paths, one clockwise and one counter-clockwise that will have the same length and be equall valid. So in the following example it is also possible to get back a sequence of ids = {1,0,3,2} instead of the {1,2,3,0} sequence listed below."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:175
-# 65c749a00c8645559f47d60e1360a517
-msgid "Using distance matrix (Starting from 1, ending at 2)"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:189
-# 103e98d40fdc4e98959110d702cfd4a5
-msgid "Using the vertices table edge_table_vertices_pgr generated by :ref:`pgr_create_topology`. Again we have two queries where the first might vary and the second is based on the overal path length."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:226
-# 514cfde63a9b44ab8f28db46033cfd03
-msgid "The queries use the :ref:`sampledata` network."
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:230
-# d6fdc2608be94f8a8e4144d3aaab84a9
-msgid "See Also"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:232
-# 5f6c37ed377241eeaa63ee2d935a4120
-msgid ":ref:`type_cost_result`"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:233
-# cb7774109aae443ab3767851ab7a223d
-msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
-msgstr ""
-
-#: ../../../src/tsp/doc/index.rst:234
-# e1b965891ceb405ca71b7c2be4a1c017
-msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
-msgstr ""
-
diff --git a/doc/images/CMakeLists.txt b/doc/images/CMakeLists.txt
new file mode 100644
index 0000000..239a798
--- /dev/null
+++ b/doc/images/CMakeLists.txt
@@ -0,0 +1,19 @@
+
+SET(LOCAL_FILES
+ boost-inside.jpeg
+ Fig1-originalData.png
+ Fig2-cost.png
+ Fig4-costUndirected.png
+ Fig6-undirected.png
+ parallelImage.png
+ test1.png
+ trsp-test-image.png
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${f}" COPYONLY)
+ list(APPEND LOCAL_IMG_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} ${LOCAL_IMG_FILES} PARENT_SCOPE)
+
diff --git a/doc/src/images/Fig1-originalData.png b/doc/images/Fig1-originalData.png
similarity index 100%
rename from doc/src/images/Fig1-originalData.png
rename to doc/images/Fig1-originalData.png
diff --git a/doc/src/images/Fig2-cost.png b/doc/images/Fig2-cost.png
similarity index 100%
rename from doc/src/images/Fig2-cost.png
rename to doc/images/Fig2-cost.png
diff --git a/doc/src/images/Fig4-costUndirected.png b/doc/images/Fig4-costUndirected.png
similarity index 100%
rename from doc/src/images/Fig4-costUndirected.png
rename to doc/images/Fig4-costUndirected.png
diff --git a/doc/src/images/Fig6-undirected.png b/doc/images/Fig6-undirected.png
similarity index 100%
rename from doc/src/images/Fig6-undirected.png
rename to doc/images/Fig6-undirected.png
diff --git a/doc/src/images/boost-inside.jpeg b/doc/images/boost-inside.jpeg
similarity index 100%
rename from doc/src/images/boost-inside.jpeg
rename to doc/images/boost-inside.jpeg
diff --git a/doc/src/images/parallelImage.png b/doc/images/parallelImage.png
similarity index 100%
rename from doc/src/images/parallelImage.png
rename to doc/images/parallelImage.png
diff --git a/doc/src/images/test1.png b/doc/images/test1.png
similarity index 100%
rename from doc/src/images/test1.png
rename to doc/images/test1.png
diff --git a/doc/src/images/trsp-test-image.png b/doc/images/trsp-test-image.png
similarity index 100%
rename from doc/src/images/trsp-test-image.png
rename to doc/images/trsp-test-image.png
diff --git a/doc/index.rst b/doc/index.rst
deleted file mode 100644
index 64c2729..0000000
--- a/doc/index.rst
+++ /dev/null
@@ -1,143 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _index:
-
-*******************************************************************************
-Table of Contents
-*******************************************************************************
-
-pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ geospatial database to provide geospatial routing and other network analysis functionality.
-
-This is the manual for pgRouting |release|.
-
-.. image:: _build/static/images/ccbysa.png
- :align: left
- :alt: Creative Commons Attribution-Share Alike 3.0 License
-
-The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel free to use this material any way you like, but we ask that you attribute credit to the pgRouting Project and wherever possible, a link back to http://pgrouting.org. For other licenses used in pgRouting see the :ref:`license` page.
-
-General
-===============================================================================
-
-.. toctree::
- :maxdepth: 2
-
- pgRouting-introduction
- pgRouting-installation
- support
-
-
-- :ref:`sampledata` that is used in the examples of this manual.
-
-.. toctree::
- :hidden:
-
- sampledata
-
-:ref:`Pgrouting Concepts <pgrouting_concepts>`
-===============================================================================
-
-.. include:: pgRouting-concepts.rst
- :start-after: concepts_start
- :end-before: concepts_end
-
-
-.. toctree::
- :hidden:
-
- pgRouting-concepts
-
-
-.. rubric:: Reference
-
-:ref:`pgr_version` - to get pgRouting's version information.
-
-.. toctree::
- :hidden:
-
- pgr_version
-
-
-:ref:`Data Types <data_types>`
-===============================================================================
-
-
-- :ref:`type_cost_result` - A set of records to describe a path result with cost attribute.
-- :ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a path result with cost attribute.
-- :ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a path result with geometry attribute.
-
-.. toctree::
- :hidden:
-
- types_index
-
-
-:ref:`Topology Functions <topology_functions>`
-===============================================================================
-
-- :ref:`pgr_create_topology` - to create a topology based on the geometry.
-- :ref:`pgr_create_vert_table` - to reconstruct the vertices table based on the source and target information.
-- :ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge table.
-- :ref:`pgr_analyze_oneway` - to analyze directionality of the edges.
-- :ref:`pgr_node_network` -to create nodes to a not noded edge table.
-
-.. toctree::
- :hidden:
-
- topology-functions
-
-
-:ref:`Routing functions <routing_functions>`
-===============================================================================
-
-.. toctree::
- :hidden:
-
- routingFunctions
-
-
-.. include:: routingFunctions.rst
- :start-after: from-here
- :end-before: to-here
-
-
-
-Available Functions but not official pgRouting functions
-===============================================================================
-
-- :ref:`stable`
-- :ref:`proposed`
-
-.. toctree::
- :hidden:
-
- proposed
-
-
-
-:ref:`Change Log <change_log>`
-===============================================================================
-
-.. include:: release_notes.rst
- :start-after: changelog start
- :end-before: changelog end
-
-
-.. toctree::
- :hidden:
-
- release_notes
-
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/doc/ksp/CMakeLists.txt b/doc/ksp/CMakeLists.txt
new file mode 100644
index 0000000..1618f32
--- /dev/null
+++ b/doc/ksp/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(LOCAL_FILES
+ KSP-category.rst
+ pgr_KSP.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/ksp/KSP-category.rst b/doc/ksp/KSP-category.rst
new file mode 100644
index 0000000..71ad9f1
--- /dev/null
+++ b/doc/ksp/KSP-category.rst
@@ -0,0 +1,28 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+
+.. _KSP:
+
+KSP Category
+===============================================================================
+
+.. index from here
+
+* :ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra
+* :ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra
+
+.. index to here
+
+
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/ksp/pgr_KSP.rst b/doc/ksp/pgr_KSP.rst
new file mode 100644
index 0000000..410f280
--- /dev/null
+++ b/doc/ksp/pgr_KSP.rst
@@ -0,0 +1,181 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_ksp:
+
+pgr_KSP
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_KSP`` — Returns the "K" shortest paths.
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.0.0
+
+* Signature change 2.1.0
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+The K shortest path routing algorithm based on Yen's algorithm. "K" is the number of shortest paths desired.
+
+Signature Summary
+-------------------------------------------------------------------------------
+
+.. code-block:: sql
+
+ pgr_KSP(edges_sql, start_vid, end_vid, K);
+ pgr_KSP(edges_sql, start_vid, end_vid, k, directed, heap_paths)
+ RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: KSP(Minimal Signature)
+
+Minimal Signature
+..................
+
+.. code-block:: sql
+
+ pgr_ksp(edges_sql, start_vid, end_vid, K);
+ RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+
+.. index::
+ single: ksp(Complete Signature)
+
+Complete Signature
+...................
+
+.. code-block:: sql
+
+ pgr_KSP(edges_sql, start_vid, end_vid, k, directed, heap_paths)
+ RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost) or EMPTY SET
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+Description of the parameters of the signatures
+..................................................
+
+============== ============ =================================================
+Column Type Description
+============== ============ =================================================
+**edges_sql** ``TEXT`` SQL query as described above.
+**start_vid** ``BIGINT`` Identifier of the starting vertex.
+**end_vid** ``BIGINT`` Identifier of the ending vertex.
+**k** ``INTEGER`` The desiered number of paths.
+**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
+**heap_paths** ``BOOLEAN`` (optional). When ``true`` returns all the paths stored in the process heap. Default is ``false`` which only returns ``k`` paths.
+============== ============ =================================================
+
+Roughly, if the shortest path has ``N`` edges, the heap will contain about than ``N * k`` paths for small value of ``k`` and ``k > 1``.
+
+
+
+Description of the return values
+...................................
+
+Returns set of ``(seq, path_seq, path_id, node, edge, cost, agg_cost)``
+
+============== =========== =================================================
+Column Type Description
+============== =========== =================================================
+**seq** ``INTEGER`` Sequential value starting from **1**.
+**path_seq** ``INTEGER`` Relative position in the path of ``node`` and ``edge``. Has value **1** for the beginning of a path.
+**path_id** ``BIGINT`` Path identifier. The ordering of the paths For two paths i, j if i < j then agg_cost(i) <= agg_cost(j).
+**node** ``BIGINT`` Identifier of the node in the path.
+**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the route.
+**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence.
+**agg_cost** ``FLOAT`` Aggregate cost from ``start_vid`` to ``node``.
+============== =========== =================================================
+
+
+.. warning:: During the transition to 3.0, because pgr_ksp version 2.0 doesn't have defined a directed flag nor a heap_path flag, when pgr_ksp is used with only one flag version 2.0 signature will be used.
+
+
+Additional Examples
+------------------------------------------------------------------------------------------
+
+Examples to handle the one flag to choose signatures
+.........................................................................................
+
+The examples in this section use the following :ref:`fig1`
+
+.. literalinclude:: doc-ksp.queries
+ :start-after: --q1
+ :end-before: --q2
+
+
+Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
+.........................................................................................
+
+The examples in this section use the following :ref:`fig1`
+
+.. literalinclude:: doc-ksp.queries
+ :start-after: --q2
+ :end-before: --q3
+
+
+
+Examples for queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns
+.........................................................................................
+
+The examples in this section use the following :ref:`fig2`
+
+.. literalinclude:: doc-ksp.queries
+ :start-after: --q3
+ :end-before: --q4
+
+
+Examples for queries marked as ``directed`` with ``cost`` column
+.........................................................................................
+
+The examples in this section use the following :ref:`fig3`
+
+
+.. literalinclude:: doc-ksp.queries
+ :start-after: --q4
+ :end-before: --q5
+
+
+Examples for queries marked as ``undirected`` with ``cost`` column
+.........................................................................................
+
+The examples in this section use the following :ref:`fig4`
+
+.. literalinclude:: doc-ksp.queries
+ :start-after: --q5
+ :end-before: --q6
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/K_shortest_path_routing
+* :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/label_graph/CMakeLists.txt b/doc/label_graph/CMakeLists.txt
new file mode 100644
index 0000000..62a8943
--- /dev/null
+++ b/doc/label_graph/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ pgr_labelGraph.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/label_graph/pgr_labelGraph.rst b/doc/label_graph/pgr_labelGraph.rst
new file mode 100644
index 0000000..63e8e25
--- /dev/null
+++ b/doc/label_graph/pgr_labelGraph.rst
@@ -0,0 +1,92 @@
+..
+ ****************************************************************************
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_labelGraph:
+
+
+pgr_labelGraph - Experimental
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_labelGraph`` — Locates and labels sub-networks within a network which are not topologically connected.
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Must be run after ``pgr_createTopology()``. No use of ``geometry`` column. Only ``id``, ``source`` and ``target`` columns are required.
+
+The function returns:
+
+- ``OK`` when a column with provided name has been generated and populated successfully. All connected edges will have unique similar integer values. In case of ``rows_where`` condition, non participating rows will have -1 integer values.
+- ``FAIL`` when the processing cannot be finished due to some error. Notice will be thrown accordingly.
+- ``rows_where condition generated 0 rows`` when passed SQL condition has not been fulfilled by any row.
+
+.. index::
+ single: labelGraph(Complete Signature) - Proposed
+
+.. code-block:: sql
+
+ varchar pgr_labelGraph(text, text, text, text, text, text)
+
+
+
+Description
+-------------------------------------------------------------------------------
+
+A network behind any routing query may consist of sub-networks completely isolated from each other. Possible reasons could be:
+
+- An island with no bridge connecting to the mainland.
+- An edge or mesh of edges failed to connect to other networks because of human negligence during data generation.
+- The data is not properly noded.
+- Topology creation failed to succeed.
+
+pgr_labelGraph() will create an integer column (with the name provided by the user) and will assign same integer values to all those edges in the network which are connected topologically. Thus better analysis regarding network structure is possible. In case of ``rows_where`` condition, non participating rows will have -1 integer values.
+
+Prerequisites:
+Must run ``pgr_createTopology()`` in order to generate ``source`` and ``target`` columns. Primary key column ``id`` should also be there in the network table.
+
+Function accepts the following parameters:
+
+:edge_table: ``text`` Network table name, with optional schema name.
+:id: ``text`` Primary key column name of the network table. Default is ``id``.
+:source: ``text`` Source column name generated after ``pgr_createTopology()``. Default is ``source``.
+:target: ``text`` Target column name generated after ``pgr_createTopology()``. Default is ``target``.
+:subgraph: ``text`` Column name which will hold the integer labels for each sub-graph. Default is ``subgraph``.
+:rows_where: ``text`` The SQL where condition. Default is ``true``, means the processing will be done on the whole table.
+
+
+
+
+Example Usage
+-------------------------------------------------------------------------------
+
+The sample data, has 3 subgraphs.
+
+.. literalinclude:: doc-pgr_labelGraph.queries
+ :start-after: --q1
+ :end-before: --q2
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* `pgr_createTopology <https://github.com/Zia-/pgrouting/blob/develop/src/common/sql/pgrouting_topology.sql>`_ to create the topology of a table based on its geometry and tolerance value.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/lineGraph/CMakeLists.txt b/doc/lineGraph/CMakeLists.txt
new file mode 100644
index 0000000..570fc38
--- /dev/null
+++ b/doc/lineGraph/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(LOCAL_FILES
+ pgr_lineGraph.rst
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}")
+ list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f})
+endforeach()
+
+add_subdirectory("images")
+set(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} PARENT_SCOPE)
diff --git a/doc/lineGraph/images/CMakeLists.txt b/doc/lineGraph/images/CMakeLists.txt
new file mode 100644
index 0000000..89adbb1
--- /dev/null
+++ b/doc/lineGraph/images/CMakeLists.txt
@@ -0,0 +1,10 @@
+SET(LOCAL_FILES
+ lineGraph.png
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}" COPYONLY)
+ list(APPEND LOCAL_IMG_FILES "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}")
+endforeach()
+
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} ${LOCAL_IMG_FILES} PARENT_SCOPE)
diff --git a/doc/lineGraph/images/lineGraph.png b/doc/lineGraph/images/lineGraph.png
new file mode 100644
index 0000000..6ecbd2f
Binary files /dev/null and b/doc/lineGraph/images/lineGraph.png differ
diff --git a/doc/lineGraph/pgr_lineGraph.rst b/doc/lineGraph/pgr_lineGraph.rst
new file mode 100644
index 0000000..a296078
--- /dev/null
+++ b/doc/lineGraph/pgr_lineGraph.rst
@@ -0,0 +1,162 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_lineGraph:
+
+pgr_lineGraph - Experimental
+===============================================================================
+
+``pgr_lineGraph`` — Transforms a given graph into its corresponding edge-based graph.
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html
+
+ Boost Graph Inside
+
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Given a graph G, its line graph L(G) is a graph such that:-
+
+- each vertex of L(G) represents an edge of G
+- two vertices of L(G) are adjacent if and only if their corresponding edges share a common endpoint in G.
+
+The following figures show a graph (left, with blue vertices) and its
+Line Graph (right, with green vertices).
+
+| |first|
+
+.. |first| image:: images/lineGraph.png
+ :align: middle
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_lineGraph(edges_sql, directed)
+ RETURNS SET OF (seq, source, target, cost, reverse_cost)
+ OR EMPTY SET
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: lineGraph(Minimal Use)
+
+Minimal signature
+.......................................
+
+.. code-block:: none
+
+ pgr_lineGraph(edges_sql)
+ RETURNS SET OF (seq, source, target, cost, reverse_cost) or EMPTY SET
+
+The minimal signature is for a **directed** graph:
+
+:Example:
+
+.. literalinclude:: doc-pgr_lineGraph.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: lineGraph(Complete signature)
+
+Complete Signature
+.......................................
+
+.. code-block:: none
+
+ pgr_lineGraph(edges_sql, directed);
+ RETURNS SET OF (seq, source, target, cost, reverse_cost) or EMPTY SET
+
+This signature returns the Line Graph of the current graph:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+:Example:
+
+.. literalinclude:: doc-pgr_lineGraph.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+
+Description of the parameters of the signatures
+-------------------------------------------------------------------------------
+
+======================= ====================== =================================================
+Column Type Description
+======================= ====================== =================================================
+**edges_sql** ``TEXT`` SQL query as described above.
+**directed** ``BOOLEAN`` * When ``true`` the graph is considered as `Directed`.
+ * When ``false`` the graph is considered as `Undirected`.
+======================= ====================== =================================================
+
+Description of the return values
+-------------------------------------------------------------------------------
+
+RETURNS SETOF (seq, source, target, cost, reverse_cost)
+
+============================ ================= ===================================================================
+Column Type Description
+============================ ================= ===================================================================
+**seq** ``INTEGER`` Sequential value starting from **1**.
+
+**source** ``BIGINT`` Identifier of the source vertex of the current edge `id`.
+
+ * When `negative`: the source is the reverse edge in the original graph.
+
+**target** ``BIGINT`` Identifier of the target vertex of the current edge `id`.
+
+ * When `negative`: the target is the reverse edge in the original graph.
+
+**cost** ``FLOAT`` Weight of the edge (`source`, `target`).
+
+ * When `negative`: edge (`source`, `target`) does not exist, therefore it’s not part of the graph.
+
+**reverse_cost** ``FLOAT`` Weight of the edge (`target`, `source`).
+
+ * When `negative`: edge (`target`, `source`) does not exist, therefore it’s not part of the graph.
+============================ ================= ===================================================================
+
+Examples
+-------------------------------------------------------------------------------
+
+.. literalinclude:: doc-pgr_lineGraph.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+See Also
+-------------------------------------------------------------------------------
+
+* https://en.wikipedia.org/wiki/Line_graph
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/max_flow/CMakeLists.txt b/doc/max_flow/CMakeLists.txt
new file mode 100644
index 0000000..bb78e39
--- /dev/null
+++ b/doc/max_flow/CMakeLists.txt
@@ -0,0 +1,18 @@
+
+SET(LOCAL_FILES
+ flow-family.rst
+ pgr_maxFlow.rst
+ pgr_boykovKolmogorov.rst
+ pgr_edmondsKarp.rst
+ pgr_edgeDisjointPaths.rst
+ pgr_maxCardinalityMatch.rst
+ pgr_pushRelabel.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/max_flow/flow-family.rst b/doc/max_flow/flow-family.rst
new file mode 100644
index 0000000..c62d93f
--- /dev/null
+++ b/doc/max_flow/flow-family.rst
@@ -0,0 +1,142 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _maxFlow:
+
+Flow - Family of functions
+===================================
+
+.. index from here
+
+* :ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm.
+* :ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on edges.
+* :ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on edges.
+* :ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on edges.
+* Applications
+
+ * :ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices.
+ * :ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching in a graph.
+
+.. index to here
+
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+.. toctree::
+ :hidden:
+
+ pgr_maxFlow
+ pgr_pushRelabel
+ pgr_edmondsKarp
+ pgr_boykovKolmogorov
+ pgr_maxCardinalityMatch
+ pgr_edgeDisjointPaths
+
+
+Flow Functions General Information
+-----------------------------------
+
+.. characteristics_start
+
+.. rubric:: Characteristics
+
+
+- The graph is **directed**.
+- Process is done only on edges with positive capacities.
+- When the maximum flow is 0 then there is no flow and **EMPTY SET** is returned.
+
+ - There is no flow when a **source** is the same as a **target**.
+
+- Any duplicated value in the source(s) or target(s) are ignored.
+- Calculates the flow/residual capacity for each edge. In the output
+
+ - Edges with zero flow are omitted.
+
+- Creates a **super source** and edges to all the source(s), and a **super target** and the edges from all the targets(s).
+- The maximum flow through the graph is guaranteed to be the value returned by :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and can be calculated:
+
+ - By aggregation of the outgoing flow from the sources
+ - By aggregation of the incoming flow to the targets
+
+.. characteristics_end
+
+
+:ref:`pgr_maxFlow <pgr_maxFlow>` is the maximum Flow and that maximum is guaranteed to be the same on the functions :ref:`pgr_pushRelabel <pgr_pushRelabel>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, but the actual flow through each edge may vary.
+
+
+
+Problem definition
+------------------------
+
+A flow network is a directed graph where each edge has a capacity and a flow.
+The flow through an edge must not exceed the capacity of the edge.
+Additionally, the incoming and outgoing flow of a node must be equal except the for source which only has outgoing flow, and the destination(sink) which only has incoming flow.
+
+Maximum flow algorithms calculate the maximum flow through the graph and the flow of each edge.
+
+The maximum flow through the graph is guaranteed to be the same with all implementations,
+but the actual flow through each edge may vary.
+Given the following query:
+
+pgr_maxFlow :math:`(edges\_sql, source\_vertex, sink\_vertex)`
+
+where :math:`edges\_sql = \{(id_i, source_i, target_i, capacity_i, reverse\_capacity_i)\}`
+
+.. rubric:: Graph definition
+
+The weighted directed graph, :math:`G(V,E)`, is defined as:
+
+* the set of vertices :math:`V`
+
+ - :math:`source\_vertex \cup sink\_vertex \bigcup source_i \bigcup target_i`
+
+* the set of edges :math:`E`
+
+ - :math:`E = \begin{cases}
+ \text{ } \{(source_i, target_i, capacity_i) \text{ when } capacity > 0 \} & \quad \text{ if } reverse\_capacity = \varnothing \\
+ \text{ } & \quad \text{ } \\
+ \{(source_i, target_i, capacity_i) \text{ when } capacity > 0 \} & \text{ } \\
+ \cup \{(target_i, source_i, reverse\_capacity_i) \text{ when } reverse\_capacity_i > 0)\} & \quad \text{ if } reverse\_capacity \neq \varnothing \\ \end{cases}`
+
+
+.. rubric:: Maximum flow problem
+
+Given:
+
+
+- :math:`G(V,E)`
+- :math:`source\_vertex \in V` the source vertex
+- :math:`sink\_vertex \in V` the sink vertex
+
+Then:
+
+ :math:`pgr\_maxFlow(edges\_sql, source, sink) = \boldsymbol{\Phi}`
+
+ :math:`\boldsymbol{\Phi} = {(id_i, edge\_id_i, source_i, target_i, flow_i, residual\_capacity_i)}`
+
+Where:
+
+:math:`\boldsymbol{\Phi}` is a subset of the original edges with their residual capacity and flow. The maximum flow through the graph can be obtained by aggregating on the source or sink and summing the flow from/to it. In particular:
+
+- :math:`id_i = i`
+- :math:`edge\_id = id_i` in edges_sql
+- :math:`residual\_capacity_i = capacity_i - flow_i`
+
+
+See Also
+--------
+
+* https://en.wikipedia.org/wiki/Maximum_flow_problem
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/max_flow/pgr_boykovKolmogorov.rst b/doc/max_flow/pgr_boykovKolmogorov.rst
new file mode 100644
index 0000000..4d3ef98
--- /dev/null
+++ b/doc/max_flow/pgr_boykovKolmogorov.rst
@@ -0,0 +1,168 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+
+.. _pgr_boykovKolmogorov:
+
+pgr_boykovKolmogorov - Proposed
+============================================
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Boykov Kolmogorov algorithm.
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html
+
+ Boost Graph Inside
+
+.. Rubric:: Availability:
+
+* Renamed 2.5.0, Previous name pgr_maxFlowBoykovKolmogorov
+* New in 2.3.0
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+.. include:: flow-family.rst
+ :start-after: characteristics_start
+ :end-before: characteristics_end
+
+* Running time: Polynomial
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_boykovKolmogorov(edges_sql, source, target) - Proposed
+ pgr_boykovKolmogorov(edges_sql, sources, target) - Proposed
+ pgr_boykovKolmogorov(edges_sql, source, targets) - Proposed
+ pgr_boykovKolmogorov(edges_sql, sources, targets) - Proposed
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+
+.. index::
+ single: boykovKolmogorov(One to One) - Proposed
+
+One to One
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from the `source` to the `target`.
+
+.. code-block:: none
+
+ pgr_boykovKolmogorov(edges_sql, source, target)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_boykovKolmogorov.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: boykovKolmogorov(One to Many) - Proposed
+
+One to Many
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from the `source` to all of the `targets`.
+
+.. code-block:: none
+
+ pgr_boykovKolmogorov(edges_sql, source, targets)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_boykovKolmogorov.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. index::
+ single: boykovKolmogorov(Many to One) - Proposed
+
+Many to One
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to the `target`.
+
+.. code-block:: none
+
+ pgr_boykovKolmogorov(edges_sql, sources, target)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_boykovKolmogorov.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+
+.. index::
+ single: boykovKolmogorov(Many to Many) - Proposed
+
+Many to Many
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to all of the `targets`.
+
+.. code-block:: none
+
+ pgr_boykovKolmogorov(edges_sql, sources, targets)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_boykovKolmogorov.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+Description of the Signatures
+--------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: flow_edges_sql_start
+ :end-before: flow_edges_sql_end
+
+
+.. include:: ./pgr_maxFlow.rst
+ :start-after: pgr_flow_parameters_start
+ :end-before: pgr_flow_parameters_end
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: result_flow_start
+ :end-before: result_flow_end
+
+
+See Also
+--------
+
+* :ref:`maxFlow`, :ref:`pgr_pushRelabel <pgr_pushRelabel>`, :ref:`pgr_EdmondsKarp <pgr_edmondsKarp>`
+* http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/max_flow/pgr_edgeDisjointPaths.rst b/doc/max_flow/pgr_edgeDisjointPaths.rst
new file mode 100644
index 0000000..a1ea484
--- /dev/null
+++ b/doc/max_flow/pgr_edgeDisjointPaths.rst
@@ -0,0 +1,220 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+
+.. _pgr_edgeDisjointPaths:
+
+pgr_edgeDisjointPaths - Proposed
+==========================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two groups of vertices.
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html
+
+ Boost Graph Inside
+
+.. Rubric:: Availability: 2.3.0
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Calculates the edge disjoint paths between two groups of vertices.
+Utilizes underlying maximum flow algorithms to calculate the paths.
+
+Characteristics:
+----------------
+
+The main characterics are:
+ - Calculates the edge disjoint paths between any two groups of vertices.
+ - Returns EMPTY SET when source and destination are the same, or cannot be reached.
+ - The graph can be directed or undirected.
+ - One to many, many to one, many to many versions are also supported.
+ - Uses :ref:`pgr_boykovKolmogorov` to calculate the paths.
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_edgeDisjointPaths(edges_sql, start_vid, end_vid)
+ pgr_edgeDisjointPaths(edges_sql, start_vid, end_vid, directed)
+ pgr_edgeDisjointPaths(edges_sql, start_vid, end_vids, directed)
+ pgr_edgeDisjointPaths(edges_sql, start_vids, end_vid, directed)
+ pgr_edgeDisjointPaths(edges_sql, start_vids, end_vids, directed)
+
+ RETURNS SET OF (seq, path_id, path_seq, [start_vid,] [end_vid,] node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+
+Signatures
+----------
+
+.. index::
+ single: edgeDisjointPaths(Minimal Use) - Proposed
+
+Minimal use
+.................
+
+.. code-block:: none
+
+ pgr_edgeDisjointPaths(edges_sql, start_vid, end_vid)
+ RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+The minimal use is for a **directed** graph from one ``start_vid`` to one ``end_vid``.
+
+:Example:
+
+.. literalinclude:: doc-pgr_edgeDisjointPaths.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+.. index::
+ single: edgeDisjointPaths(One to One) - Proposed
+
+One to One
+.......................................
+
+This signature finds the set of dijoint paths from one ``start_vid`` to one ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+
+
+.. code-block:: none
+
+ pgr_edgeDisjointPaths(edges_sql, start_vid, end_vid, directed)
+ RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_edgeDisjointPaths.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. index::
+ single: edgeDisjointPaths(One to Many) - Proposed
+
+One to Many
+.......................................
+
+This signature finds the sset of disjoint paths from the ``start_vid`` to each one of the ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+ - The result is equivalent to the union of the results of the one to one `pgr_edgeDisjointPaths`.
+ - The extra ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+
+
+
+.. code-block:: none
+
+ pgr_edgeDisjointPaths(edges_sql, start_vid, end_vids, directed)
+ RETURNS SET OF (seq, path_id, path_seq, end_vid, node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_edgeDisjointPaths.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+
+
+.. index::
+ single: edgeDisjointPaths(Many to One) - Proposed
+
+Many to One
+.......................................
+
+This signature finds the set of disjoint paths from each one of the ``start_vid`` in ``start_vids`` to the ``end_vid``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+ - The result is equivalent to the union of the results of the one to one `pgr_edgeDisjointPaths`.
+ - The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
+
+.. code-block:: none
+
+ pgr_edgeDisjointPaths(edges_sql, start_vids, end_vid, directed)
+ RETURNS SET OF (seq, path_id, path_seq, start_vid, node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_edgeDisjointPaths.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+
+
+.. index::
+ single: edgeDisjointPaths(Many to Many) - Proposed
+
+Many to Many
+.......................................
+
+This signature finds the set of disjoint paths from each one of the ``start_vid`` in ``start_vids`` to each one of the ``end_vid`` in ``end_vids``:
+ - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
+ - on an **undirected** graph when ``directed`` flag is set to ``false``.
+ - The result is equivalent to the union of the results of the one to one `pgr_edgeDisjointPaths`.
+ - The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs.
+
+.. code-block:: none
+
+ pgr_edgeDisjointPaths(edges_sql, start_vids, end_vids, directed)
+ RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_edgeDisjointPaths.queries
+ :start-after: -- q5
+ :end-before: -- q6
+
+
+
+Description of the Signatures
+----------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+
+.. include:: pgr_dijkstra.rst
+ :start-after: pgr_dijkstra_parameters_start
+ :end-before: pgr_dijkstra_parameters_end
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: return_path_start
+ :end-before: return_path_end
+
+See Also
+--------
+
+* :ref:`maxFlow`
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/max_flow/pgr_edmondsKarp.rst b/doc/max_flow/pgr_edmondsKarp.rst
new file mode 100644
index 0000000..00272a2
--- /dev/null
+++ b/doc/max_flow/pgr_edmondsKarp.rst
@@ -0,0 +1,170 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+
+.. _pgr_edmondsKarp:
+
+pgr_edmondsKarp - Proposed
+============================================
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Push Relabel Algorithm.
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html
+
+ Boost Graph Inside
+
+.. Rubric:: Availability:
+
+* Renamed 2.5.0, Previous name pgr_maxFlowEdmondsKarp
+* New in 2.3.0
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+.. include:: flow-family.rst
+ :start-after: characteristics_start
+ :end-before: characteristics_end
+
+* Running time: :math:`O( V * E ^ 2)`
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_edmondsKarp(edges_sql, source, target) - Proposed
+ pgr_edmondsKarp(edges_sql, sources, target) - Proposed
+ pgr_edmondsKarp(edges_sql, source, targets) - Proposed
+ pgr_edmondsKarp(edges_sql, sources, targets) - Proposed
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+
+
+.. index::
+ single: edmondsKarp(One to One) - Proposed
+
+One to One
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from the `source` to the `target`.
+
+.. code-block:: none
+
+ pgr_edmondsKarp(edges_sql, source, target)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_edmondsKarp.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: edmondsKarp(One to Many) - Proposed
+
+One to Many
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from the `source` to all of the `targets`.
+
+.. code-block:: none
+
+ pgr_edmondsKarp(edges_sql, source, targets)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_edmondsKarp.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. index::
+ single: edmondsKarp(Many to One) - Proposed
+
+Many to One
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to the `target`.
+
+.. code-block:: none
+
+ pgr_edmondsKarp(edges_sql, sources, target)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_edmondsKarp.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+
+.. index::
+ single: edmondsKarp(Many to Many) - Proposed
+
+Many to Many
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to all of the `targets`.
+
+.. code-block:: none
+
+ pgr_edmondsKarp(edges_sql, sources, targets)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_edmondsKarp.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+Description of the Signatures
+--------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: flow_edges_sql_start
+ :end-before: flow_edges_sql_end
+
+
+.. include:: ./pgr_maxFlow.rst
+ :start-after: pgr_flow_parameters_start
+ :end-before: pgr_flow_parameters_end
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: result_flow_start
+ :end-before: result_flow_end
+
+
+See Also
+--------
+
+* :ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, :ref:`pgr_PushRelabel <pgr_pushRelabel>`
+* http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html
+* https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/max_flow/pgr_maxCardinalityMatch.rst b/doc/max_flow/pgr_maxCardinalityMatch.rst
new file mode 100644
index 0000000..abc68cc
--- /dev/null
+++ b/doc/max_flow/pgr_maxCardinalityMatch.rst
@@ -0,0 +1,166 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_maxCardinalityMatch:
+
+pgr_maxCardinalityMatch - Proposed
+============================================================
+
+
+Synopsis
+------------------------------------------------------------
+
+``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a graph.
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/maximum_matching.html
+
+ Boost Graph Inside
+
+.. Rubric:: Availability:
+
+* Renamed 2.5.0, Previous name pgr_maximumCardinalityMatching
+* New in 2.3.0
+
+
+.. rubric:: Characteristics
+
+* A matching or independent edge set in a graph is a set of edges without common vertices.
+* A maximum matching is a matching that contains the largest possible number of edges.
+
+ * There may be many maximum matchings.
+ * Calculates **one** possible maximum cardinality matching in a graph.
+
+* The graph can be **directed** or **undirected**.
+* Running time: :math:`O( E*V * \alpha(E,V))`
+
+ * :math:`\alpha(E,V)` is the inverse of the `Ackermann function`_.
+
+
+.. _Ackermann function: https://en.wikipedia.org/wiki/Ackermann_function
+
+Signature Summary
+------------------------------------------------------------
+
+.. code-block:: none
+
+ pgr_MaximumCardinalityMatching(edges_sql) - Proposed
+ pgr_MaximumCardinalityMatching(edges_sql, directed) - Proposed
+
+ RETURNS SET OF (seq, edge_id, source, target)
+ OR EMPTY SET
+
+
+.. index::
+ single: MaximumCardinalityMatching(Minimal Use) - Proposed
+
+
+
+Minimal Use
+.............................................
+
+.. code-block:: none
+
+ pgr_MaximumCardinalityMatching(edges_sql)
+ RETURNS SET OF (seq, edge_id, source, target) OR EMPTY SET
+
+The minimal use calculates one possible maximum cardinality matching on a **directed** graph.
+
+:Example:
+
+.. literalinclude:: doc-pgr_maxCardinalityMatch.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+.. index::
+ single: MaximumCardinalityMatching(Complete Signature) - Proposed
+
+Complete signature
+.............................................
+
+.. code-block:: none
+
+ pgr_MaximumCardinalityMatching(edges_sql, directed)
+ RETURNS SET OF (seq, edge_id, source, target) OR EMPTY SET
+
+
+The complete signature calculates one possible maximum cardinality matching.
+
+:Example:
+
+.. literalinclude:: doc-pgr_maxCardinalityMatch.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+
+Description of the Signatures
+--------------------------------------------------------
+
+
+Description of the SQL query
+...........................................................
+
+:edges_sql: an SQL query, which should return a set of rows with the following columns:
+
+==================== =================== =================================================
+Column Type Description
+==================== =================== =================================================
+**id** ``ANY-INTEGER`` Identifier of the edge.
+**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
+**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
+**going** ``ANY-NUMERIC`` A positive value represents the existence of the edge (source, target).
+**coming** ``ANY-NUMERIC`` A positive value represents the existence of the edge (target, source).
+==================== =================== =================================================
+
+Where:
+
+ - :ANY-INTEGER: SMALLINT, INTEGER, BIGINT
+ - :ANY-NUMERIC: SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION
+
+Description of the parameters of the signatures
+...........................................................
+
+================= ====================== =================================================
+Column Type Description
+================= ====================== =================================================
+**edges_sql** ``TEXT`` SQL query as described above.
+**directed** ``BOOLEAN`` (optional) Determines the type of the graph. Default TRUE.
+================= ====================== =================================================
+
+Description of the Result
+...........................................................
+
+===================== ==================== =================================================
+Column Type Description
+===================== ==================== =================================================
+**seq** ``INT`` Sequential value starting from **1**.
+**edge** ``BIGINT`` Identifier of the edge in the original query(edges_sql).
+**source** ``BIGINT`` Identifier of the first end point of the edge.
+**target** ``BIGINT`` Identifier of the second end point of the edge.
+===================== ==================== =================================================
+
+See Also
+--------
+
+* :ref:`maxFlow`
+* http://www.boost.org/libs/graph/doc/maximum_matching.html
+* https://en.wikipedia.org/wiki/Matching_%28graph_theory%29
+* https://en.wikipedia.org/wiki/Ackermann_function
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/max_flow/pgr_maxFlow.rst b/doc/max_flow/pgr_maxFlow.rst
new file mode 100644
index 0000000..09307a2
--- /dev/null
+++ b/doc/max_flow/pgr_maxFlow.rst
@@ -0,0 +1,185 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_maxFlow:
+
+pgr_maxFlow - Proposed
+============================================
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the source(s) to the targets(s) using the Push Relabel algorithm.
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html
+
+ Boost Graph Inside
+
+.. Rubric:: Availability: 2.4.0
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+.. rubric:: Characteristics
+
+- The graph is **directed**.
+- When the maximum flow is 0 then there is no flow and **0** is returned.
+
+ - There is no flow when a **source** is the same as a **target**.
+
+- Any duplicated value in the source(s) or target(s) are ignored.
+- Uses the :ref:`pgr_pushRelabel <pgr_pushRelabel>` algorithm.
+
+* Running time: :math:`O( V ^ 3)`
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_maxFlow(edges_sql, source, target)
+ pgr_maxFlow(edges_sql, sources, target)
+ pgr_maxFlow(edges_sql, source, targets)
+ pgr_maxFlow(edges_sql, sources, targets)
+ RETURNS BIGINT
+
+
+.. index::
+ single: maxFlow(One to One) - Proposed
+
+One to One
+.....................................................................
+
+Calculates the maximum flow from the `source` to the `target`.
+
+.. code-block:: none
+
+ pgr_maxFlow(edges_sql, source, target)
+ RETURNS BIGINT
+
+:Example:
+
+.. literalinclude:: doc-pgr_maxFlow.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: maxFlow(One to Many) - Proposed
+
+One to Many
+.....................................................................
+
+Calculates the maximum flow from the `source` to all of the `targets`.
+
+.. code-block:: none
+
+ pgr_maxFlow(edges_sql, source, targets)
+ RETURNS BIGINT
+
+:Example:
+
+.. literalinclude:: doc-pgr_maxFlow.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. index::
+ single: maxFlow(Many to One) - Proposed
+
+Many to One
+.....................................................................
+
+Calculates the maximum flow from all the `sources` to the `target`.
+
+.. code-block:: none
+
+ pgr_maxFlow(edges_sql, sources, target)
+ RETURNS BIGINT
+
+:Example:
+
+.. literalinclude:: doc-pgr_maxFlow.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+
+.. index::
+ single: maxFlow(Many to Many) - Proposed
+
+Many to Many
+.....................................................................
+
+Calculates the maximum flow from all of the `sources` to all of the `targets`.
+
+.. code-block:: none
+
+ pgr_maxFlow(edges_sql, sources, targets)
+ RETURNS BIGINT
+
+:Example:
+
+.. literalinclude:: doc-pgr_maxFlow.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+Description of the Signatures
+--------------------------------------------------------
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: flow_edges_sql_start
+ :end-before: flow_edges_sql_end
+
+
+.. pgr_flow_parameters_start
+
+Description of the Parameters of the Flow Signatures
+...............................................................................
+
+============== ================== ======== =================================================
+Column Type Default Description
+============== ================== ======== =================================================
+**edges_sql** ``TEXT`` The edges SQL query as described above.
+**source** ``BIGINT`` Identifier of the starting vertex of the flow.
+**sources** ``ARRAY[BIGINT]`` Array of identifiers of the starting vertices of the flow.
+**target** ``BIGINT`` Identifier of the ending vertex of the flow.
+**targets** ``ARRAY[BIGINT]`` Array of identifiers of the ending vertices of the flow.
+============== ================== ======== =================================================
+
+.. pgr_flow_parameters_end
+
+
+
+Description of the return value
+.....................................................................
+
+====================== =================================================
+Type Description
+====================== =================================================
+``BIGINT`` Maximum flow possible from the source(s) to the target(s)
+====================== =================================================
+
+See Also
+--------
+
+* :ref:`maxFlow`
+* http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html
+* https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/max_flow/pgr_pushRelabel.rst b/doc/max_flow/pgr_pushRelabel.rst
new file mode 100644
index 0000000..4d0ced5
--- /dev/null
+++ b/doc/max_flow/pgr_pushRelabel.rst
@@ -0,0 +1,168 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+
+.. _pgr_pushRelabel:
+
+pgr_pushRelabel - Proposed
+============================================
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Push Relabel Algorithm.
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html
+
+ Boost Graph Inside
+
+.. Rubric:: Availability:
+
+* Renamed 2.5.0, Previous name pgr_maxFlowPushRelabel
+* New in 2.3.0
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+.. include:: flow-family.rst
+ :start-after: characteristics_start
+ :end-before: characteristics_end
+
+* Running time: :math:`O( V ^ 3)`
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_pushRelabel(edges_sql, source, target) - Proposed
+ pgr_pushRelabel(edges_sql, sources, target) - Proposed
+ pgr_pushRelabel(edges_sql, source, targets) - Proposed
+ pgr_pushRelabel(edges_sql, sources, targets) - Proposed
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+
+.. index::
+ single: pushRelabel(One to One) - Proposed
+
+One to One
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from the `source` to the `target`.
+
+.. code-block:: none
+
+ pgr_pushRelabel(edges_sql, source, target)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_pushRelabel.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: pushRelabel(One to Many) - Proposed
+
+One to Many
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from the `source` to all of the `targets`.
+
+.. code-block:: none
+
+ pgr_pushRelabel(edges_sql, source, targets)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_pushRelabel.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+.. index::
+ single: pushRelabel(Many to One) - Proposed
+
+Many to One
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to the `target`.
+
+.. code-block:: none
+
+ pgr_pushRelabel(edges_sql, sources, target)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_pushRelabel.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+
+.. index::
+ single: pushRelabel(Many to Many) - Proposed
+
+Many to Many
+.....................................................................
+
+Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to all of the `targets`.
+
+.. code-block:: none
+
+ pgr_pushRelabel(edges_sql, sources, targets)
+ RETURNS SET OF (seq, edge, start_vid, end_vid, flow, residual_capacity)
+ OR EMPTY SET
+
+:Example:
+
+.. literalinclude:: doc-pgr_pushRelabel.queries
+ :start-after: -- q4
+ :end-before: -- q5
+
+Description of the Signatures
+--------------------------------------------------------
+
+.. include:: pgRouting-concepts.rst
+ :start-after: flow_edges_sql_start
+ :end-before: flow_edges_sql_end
+
+
+.. include:: ./pgr_maxFlow.rst
+ :start-after: pgr_flow_parameters_start
+ :end-before: pgr_flow_parameters_end
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: result_flow_start
+ :end-before: result_flow_end
+
+
+See Also
+--------
+
+* :ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`
+* http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html
+* https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/pickDeliver/CMakeLists.txt b/doc/pickDeliver/CMakeLists.txt
new file mode 100644
index 0000000..7be0530
--- /dev/null
+++ b/doc/pickDeliver/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+SET(LOCAL_FILES
+ pgr_pickDeliverEuclidean.rst
+ pgr_pickDeliver.rst
+ VRP-category.rst
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}")
+ list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f})
+endforeach()
+
+set(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/pickDeliver/VRP-category.rst b/doc/pickDeliver/VRP-category.rst
new file mode 100644
index 0000000..1ec91f5
--- /dev/null
+++ b/doc/pickDeliver/VRP-category.rst
@@ -0,0 +1,510 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _VRP:
+
+Vehicle Routing Functions Category
+===============================================================================
+
+.. contents::
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+.. index from here
+.. rubric:: Pickup and delivery problem
+
+- :doc:`pgr_pickDeliver` - Pickup & Delivery using a Cost Matrix
+- :doc:`pgr_pickDeliverEuclidean` - Pickup & Delivery with Euclidean distances
+
+.. rubric:: Experimental functions
+
+- :doc:`pgr_vrpOneDepot` - VRP One Depot
+
+.. index to here
+
+.. toctree::
+ :hidden:
+
+ pgr_pickDeliver
+ pgr_pickDeliverEuclidean
+ pgr_vrpOneDepot
+
+
+Introduction
+-------------------------------------------------------------------------------
+
+Vehicle Routing Problems `VRP` are **NP-hard** optimization problem, it generalises the travelling salesman problem (TSP).
+
+- The objective of the VRP is to minimize the total route cost.
+- There are several variants of the VRP problem,
+
+**pgRouting does not try to implement all variants.**
+
+
+Characteristics
+...............................................................................
+
+- Capacitated Vehicle Routing Problem `CVRP` where The vehicles have limited carrying capacity of the goods.
+- Vehicle Routing Problem with Time Windows `VRPTW` where the locations have time windows within which the vehicle's visits must be made.
+- Vehicle Routing Problem with Pickup and Delivery `VRPPD` where a number of goods need to be moved from certain pickup locations to other delivery locations.
+
+
+.. Rubric:: Limitations
+
+- No multiple time windows for a location.
+- Less vehicle used is considered better.
+- Less total duration is better.
+- Less wait time is better.
+
+
+Pick & Delivery
+-------------------------------------------------------------------------------
+
+Problem: `CVRPPDTW` Capacitated Pick and Delivery Vehicle Routing problem with Time Windows
+
+- Times are relative to `0`
+- The vehicles
+
+ - have start and ending service duration times.
+ - have opening and closing times for the start and ending locations.
+ - have a capacity.
+
+- The orders
+
+ - Have pick up and delivery locations.
+ - Have opening and closing times for the pickup and delivery locations.
+ - Have pickup and delivery duration service times.
+ - have a demand request for moving goods from the pickup location to the delivery location.
+
+- Time based calculations:
+
+ - Travel time between customers is :math:`distance / speed`
+ - Pickup and delivery order pair is done by the same vehicle.
+ - A pickup is done before the delivery.
+
+
+
+
+
+Parameters
+-------------------------------------------------------------------------------
+
+
+Pick & deliver
+...............................................................................
+
+Both implementations use the following same parameters:
+
+.. pd_parameters_start
+
+================= ================== ========= =================================================
+Column Type Default Description
+================= ================== ========= =================================================
+**orders_sql** ``TEXT`` `Pick & Deliver Orders SQL`_ query containing the orders to be processed.
+**vehicles_sql** ``TEXT`` `Pick & Deliver Vehicles SQL`_ query containing the vehicles to be used.
+**factor** ``NUMERIC`` 1 (Optional) Travel time multiplier. See :ref:`pd_factor`
+**max_cycles** ``INTEGER`` 10 (Optional) Maximum number of cycles to perform on the optimization.
+**initial_sol** ``INTEGER`` 4 (Optional) Initial solution to be used.
+
+ - ``1`` One order per truck
+ - ``2`` Push front order.
+ - ``3`` Push back order.
+ - ``4`` Optimize insert.
+ - ``5`` Push back order that allows more orders to be inserted at the back
+ - ``6`` Push front order that allows more orders to be inserted at the front
+================= ================== ========= =================================================
+
+.. pd_parameters_end
+
+The non euclidean implementation, additionally has:
+
+================= ================== =================================================
+Column Type Description
+================= ================== =================================================
+**matrix_sql** ``TEXT`` `Pick & Deliver Matrix SQL`_ query containing the distance or travel times.
+================= ================== =================================================
+
+
+Inner Queries
+-------------------------------------------------------------------------------
+
+- `Pick & Deliver Orders SQL`_
+- `Pick & Deliver Vehicles SQL`_
+- `Pick & Deliver Matrix SQL`_
+
+.. rubric:: return columns
+
+- :ref:`Description of return columns <return_vrp_matrix_start>`
+- :ref:`Description of the return columns for Euclidean version <return_vrp_euclidean_start>`
+
+
+..
+ info[0].name = strdup("id");
+ info[1].name = strdup("demand");
+ info[2].name = strdup("p_x");
+ info[3].name = strdup("p_y");
+ info[4].name = strdup("p_open");
+ info[5].name = strdup("p_close");
+ info[6].name = strdup("p_service");
+ info[7].name = strdup("d_x");
+ info[8].name = strdup("d_y");
+ info[9].name = strdup("d_open");
+ info[10].name = strdup("d_close");
+ info[11].name = strdup("d_service");
+ info[12].name = strdup("p_node_id");
+ info[13].name = strdup("d_node_id")
+
+Pick & Deliver Orders SQL
+.........................................................................................
+
+In general, the columns for the orders SQL is the same in both implementation of pick and delivery:
+
+.. pd_orders_sql_general_start
+
+================ =================== =========== ================================================
+Column Type Default Description
+================ =================== =========== ================================================
+**id** |ANY-INTEGER| Identifier of the pick-delivery order pair.
+**demand** |ANY-NUMERICAL| Number of units in the order
+**p_open** |ANY-NUMERICAL| The time, relative to 0, when the pickup location opens.
+**p_close** |ANY-NUMERICAL| The time, relative to 0, when the pickup location closes.
+**d_service** |ANY-NUMERICAL| 0 The duration of the loading at the pickup location.
+**d_open** |ANY-NUMERICAL| The time, relative to 0, when the delivery location opens.
+**d_close** |ANY-NUMERICAL| The time, relative to 0, when the delivery location closes.
+**d_service** |ANY-NUMERICAL| 0 The duration of the loading at the delivery location.
+================ =================== =========== ================================================
+
+
+.. pd_orders_sql_general_end
+
+
+.. pd_orders_sql_matrix_start
+
+For the non euclidean implementation, the starting and ending identifiers are needed:
+
+================== =================== ================================================
+Column Type Description
+================== =================== ================================================
+**p_node_id** |ANY-INTEGER| The node identifier of the pickup, must match a node identifier in the matrix table.
+**d_node_id** |ANY-INTEGER| The node identifier of the delivery, must match a node identifier in the matrix table.
+================== =================== ================================================
+
+.. pd_orders_sql_matrix_end
+
+
+.. pd_orders_euclidean_sql_start
+
+For the euclidean implementation, pick up and delivery :math:`(x,y)` locations are needed:
+
+================ =================== ================================================
+Column Type Description
+================ =================== ================================================
+**p_x** |ANY-NUMERICAL| :math:`x` value of the pick up location
+**p_y** |ANY-NUMERICAL| :math:`y` value of the pick up location
+**d_x** |ANY-NUMERICAL| :math:`x` value of the delivery location
+**d_y** |ANY-NUMERICAL| :math:`y` value of the delivery location
+================ =================== ================================================
+
+
+.. pd_orders_euclidean_sql_end
+
+
+
+..
+ info[0].name = strdup("id");
+ info[1].name = strdup("capacity");
+ info[2].name = strdup("start_x");
+ info[3].name = strdup("start_y");
+ info[4].name = strdup("number");
+ info[5].name = strdup("start_open");
+ info[6].name = strdup("start_close");
+ info[7].name = strdup("start_service");
+ info[8].name = strdup("end_x");
+ info[9].name = strdup("end_y");
+ info[10].name = strdup("end_open");
+ info[11].name = strdup("end_close");
+ info[12].name = strdup("end_service");
+ info[13].name = strdup("speed");
+ info[14].name = strdup("start_node_id");
+ info[15].name = strdup("end_node_id");
+
+
+.. _pd_vehicle_sql:
+
+Pick & Deliver Vehicles SQL
+.........................................................................................
+
+In general, the columns for the vehicles_sql is the same in both implementation of pick and delivery:
+
+.. pd_vehicle_sql_general_start
+
+================== =================== ================ ================================================
+Column Type Default Description
+================== =================== ================ ================================================
+**id** |ANY-INTEGER| Identifier of the pick-delivery order pair.
+**capacity** |ANY-NUMERICAL| Number of units in the order
+**speed** |ANY-NUMERICAL| `1` Average speed of the vehicle.
+
+**start_open** |ANY-NUMERICAL| The time, relative to 0, when the starting location opens.
+**start_close** |ANY-NUMERICAL| The time, relative to 0, when the starting location closes.
+**start_service** |ANY-NUMERICAL| `0` The duration of the loading at the starting location.
+
+**end_open** |ANY-NUMERICAL| `start_open` The time, relative to 0, when the ending location opens.
+**end_close** |ANY-NUMERICAL| `start_close` The time, relative to 0, when the ending location closes.
+**end_service** |ANY-NUMERICAL| `start_service` The duration of the loading at the ending location.
+================== =================== ================ ================================================
+
+.. pd_vehicle_sql_general_end
+
+.. pd_vehicle_sql_matrix_start
+
+For the non euclidean implementation, the starting and ending identifiers are needed:
+
+================== =================== ================ ================================================
+Column Type Default Description
+================== =================== ================ ================================================
+**start_node_id** |ANY-INTEGER| The node identifier of the starting location, must match a node identifier in the matrix table.
+**end_node_id** |ANY-INTEGER| `start_node_id` The node identifier of the ending location, must match a node identifier in the matrix table.
+================== =================== ================ ================================================
+
+.. pd_vehicle_sql_matrix_end
+
+.. pd_vehicle_sql_euclidean_start
+
+For the euclidean implementation, starting and ending :math:`(x,y)` locations are needed:
+
+================== =================== ================ ================================================
+Column Type Default Description
+================== =================== ================ ================================================
+**start_x** |ANY-NUMERICAL| :math:`x` value of the coordinate of the starting location.
+**start_y** |ANY-NUMERICAL| :math:`y` value of the coordinate of the starting location.
+**end_x** |ANY-NUMERICAL| `start_x` :math:`x` value of the coordinate of the ending location.
+**end_y** |ANY-NUMERICAL| `start_y` :math:`y` value of the coordinate of the ending location.
+================== =================== ================ ================================================
+
+.. pd_vehicle_sql_euclidean_end
+
+
+Pick & Deliver Matrix SQL
+.........................................................................................
+
+.. TODO
+
+.. warning:: TODO
+
+
+
+
+Results
+-------------------------------------------------------------------------------
+
+..
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT order_id BIGINT,
+ OUT stop_type INT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+
+.. _return_vrp_matrix_start:
+
+Description of the result (TODO Disussion: Euclidean & Matrix)
+.........................................................................................
+
+.. todo:: fix when everything below is fixed
+
+
+.. code-block:: none
+
+ RETURNS SET OF
+ (seq, vehicle_seq, vehicle_id, stop_seq, stop_type,
+ travel_time, arrival_time, wait_time, service_time, departure_time)
+ UNION
+ (summary row)
+
+=================== ============= =================================================
+Column Type Description
+=================== ============= =================================================
+**seq** INTEGER Sequential value starting from **1**.
+**vehicle_seq** INTEGER Sequential value starting from **1** for current vehicles. The :math:`n_{th}` vehicle in the solution.
+**vehicle_id** BIGINT Current vehicle identifier.
+**stop_seq** INTEGER Sequential value starting from **1** for the stops made by the current vehicle. The :math:`m_{th}` stop of the current vehicle.
+**stop_type** INTEGER Kind of stop location the vehicle is at:
+
+ - ``1``: Starting location
+ - ``2``: Pickup location
+ - ``3``: Delivery location
+ - ``6``: Ending location
+
+**order_id** BIGINT Pickup-Delivery order pair identifier.
+
+ - ``-1``: When no order is involved on the current stop location.
+
+**cargo** FLOAT Cargo units of the vehicle when leaving the stop.
+
+**travel_time** FLOAT Travel time from previous ``stop_seq`` to current ``stop_seq``.
+
+ - ``0`` When ``stop_type = 1``
+
+**arrival_time** FLOAT Previous ``departure_time`` plus current ``travel_time``.
+**wait_time** FLOAT Time spent waiting for current `location` to open.
+**service_time** FLOAT Service time at current `location`.
+**departure_time** FLOAT :math:`arrival\_time + wait\_time + service\_time`.
+
+ - When ``stop_type = 6`` has the `total_time` used for the current vehicle.
+=================== ============= =================================================
+
+.. rubric:: Summary Row
+
+.. warning:: TODO: Review the summary
+
+=================== ============= =================================================
+Column Type Description
+=================== ============= =================================================
+**seq** INTEGER Continues the Sequential value
+**vehicle_seq** INTEGER ``-2`` to indicate is a summary row
+**vehicle_id** BIGINT `Total Capacity Violations` in the solution.
+**stop_seq** INTEGER `Total Time Window Violations` in the solution.
+**stop_type** INTEGER ``-1``
+**order_id** BIGINT ``-1``
+**cargo** FLOAT ``-1``
+**travel_time** FLOAT `total_travel_time` The sum of all the `travel_time`
+**arrival_time** FLOAT ``-1``
+**wait_time** FLOAT `total_waiting_time` The sum of all the `wait_time`
+**service_time** FLOAT `total_service_time` The sum of all the `service_time`
+**departure_time** FLOAT `total_solution_time` = :math:`total\_travel\_time + total\_wait\_time + total\_service\_time`.
+=================== ============= =================================================
+
+
+.. return_vrp_matrix_end
+
+
+.. _return_vrp_euclidean_start:
+
+.. include:: VRP-category.rst
+ :start-after: return_vrp_matrix_start:
+ :end-before: return_vrp_matrix_end
+
+.. return_vrp_euclidean_end
+
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: where_definition_starts
+ :end-before: where_definition_ends
+
+
+Handling Parameters
+-------------------------------------------------------------------------------
+
+To define a problem, several considerations have to be done, to get consistent results.
+This section gives an insight of how parameters are to be considered.
+
+- `Capacity and Demand Units Handling`_
+- `Locations`_
+- `Time Handling`_
+- `Factor Handling`_
+
+
+Capacity and Demand Units Handling
+...............................................................................
+
+The `capacity` of a vehicle, can be measured in:
+
+- Volume units like :math:`m^3`.
+- Area units like :math:`m^2` (when no stacking is allowed).
+- Weight units like :math:`kg`.
+- Number of boxes that fit in the vehicle.
+- Number of seats in the vehicle
+
+The `demand` request of the pickup-deliver orders must use the same units as the units used in the vehicle's `capacity`.
+
+To handle problems like: 10 (equal dimension) boxes of apples and 5 kg of feathers that are to be transported (not packed in boxes).
+
+If the vehicle's `capacity` is measured by `boxes`, a conversion of `kg of feathers` to `equivalent number of boxes` is needed.
+If the vehicle's `capacity` is measured by `kg`, a conversion of `box of apples` to `equivalent number of kg` is needed.
+
+Showing how the 2 possible conversions can be done
+
+Let:
+- :math:`f_boxes`: number of boxes that would be used for `1` kg of feathers.
+- :math:`a_weight`: weight of `1` box of apples.
+
+=============== ====================== ==================
+Capacity Units apples feathers
+=============== ====================== ==================
+boxes 10 :math:`5 * f\_boxes`
+kg :math:`10 * a\_weight` 5
+=============== ====================== ==================
+
+
+
+Locations
+...............................................................................
+
+- When using the Euclidean signatures:
+
+ - The vehicles have :math:`(x, y)` pairs for start and ending locations.
+ - The orders Have :math:`(x, y)` pairs for pickup and delivery locations.
+
+- When using a matrix:
+
+ - The vehicles have identifiers for the start and ending locations.
+ - The orders have identifiers for the pickup and delivery locations.
+ - All the identifiers are indices to the given matrix.
+
+
+Time Handling
+...............................................................................
+
+The times are relative to 0
+
+Suppose that a vehicle's driver starts the shift at 9:00 am and ends the shift at 4:30 pm
+and the service time duration is 10 minutes with 30 seconds.
+
+All time units have to be converted
+
+============ ================= ==================== ===================== =========
+Meaning of 0 time units 9:00 am 4:30 pm 10 min 30 secs
+============ ================= ==================== ===================== =========
+0:00 am hours 9 16.5 :math:`10.5 / 60 = 0.175`
+9:00 am hours 0 7.5 :math:`10.5 / 60 = 0.175`
+0:00 am minutes :math:`9*60 = 54` :math:`16.5*60 = 990` 10.5
+9:00 am minutes 0 :math:`7.5*60 = 540` 10.5
+============ ================= ==================== ===================== =========
+
+
+.. _pd_factor:
+
+Factor Handling
+...............................................................................
+
+.. TODO
+.. warning:: TODO
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* https://en.wikipedia.org/wiki/Vehicle_routing_problem
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/pickDeliver/pgr_pickDeliver.rst b/doc/pickDeliver/pgr_pickDeliver.rst
new file mode 100644
index 0000000..35009e9
--- /dev/null
+++ b/doc/pickDeliver/pgr_pickDeliver.rst
@@ -0,0 +1,223 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_pickDeliver:
+
+pgr_pickDeliver - Proposed
+===============================================================================
+
+.. warning:: Documentation is being updated
+
+``pgr_pickDeliver`` - Pickup and delivery Vehicle Routing Problem
+
+.. rubric:: Availability
+
+* New as proposed in 2.5.0
+
+.. include:: proposed.rst
+ :start-after: stable-begin-warning
+ :end-before: stable-end-warning
+
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Problem: Distribute and optimize the pickup-delivery pairs into a fleet of vehicles.
+
+- Optimization problem is NP-hard.
+- pickup and Delivery with time windows.
+- All vehicles are equal.
+
+ - Same Starting location.
+ - Same Ending location which is the same as Starting location.
+ - All vehicles travel at the same speed.
+
+- A customer is for doing a pickup or doing a deliver.
+
+ - has an open time.
+ - has a closing time.
+ - has a service time.
+ - has an (x, y) location.
+
+- There is a customer where to deliver a pickup.
+
+ - travel time between customers is distance / speed
+ - pickup and delivery pair is done with the same vehicle.
+ - A pickup is done before the delivery.
+
+
+Characteristics
+-------------------------------------------------------------------------------
+
+- All trucks depart at time 0.
+- No multiple time windows for a location.
+- Less vehicle used is considered better.
+- Less total duration is better.
+- Less wait time is better.
+- the algorithm will raise an exception when
+
+ - If there is a pickup-deliver pair than violates time window
+ - The speed, max_cycles, ma_capacity have illegal values
+
+- Six different initial will be optimized
+ - the best solution found will be result
+
+.. index::
+ single: pgr_pickDeliverEuclidean - Proposed
+
+Signature
+-------------------------------------------------------------------------------
+
+..
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+..
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+
+
+.. code-block:: none
+
+ pgr_pickDeliver(orders_sql, vehicles_sql, matrix_sql [, factor, max_cycles, initial_sol])
+ RETURNS SET OF (seq, vehicle_number, vehicle_id, stop, order_id, stop_type, cargo,
+ travel_time, arrival_time, wait_time, service_time, departure_time)
+
+
+Parameters
+...............................................................................
+
+The parameters are:
+
+.. code-block:: none
+
+ orders_sql, vehicles_sql, matrix_sql [, factor, max_cycles, initial_sol]
+
+
+================= ================== ========= =================================================
+Column Type Default Description
+================= ================== ========= =================================================
+**orders_sql** ``TEXT`` `Pick & Deliver Orders SQL`_ query contianing the orders to be processed.
+**vehicles_sql** ``TEXT`` `Pick & Deliver Vehicles SQL`_ query containing the vehicles to be used.
+**matrix_sql** ``TEXT`` `Pick & Deliver Matrix SQL`_ query containing the distance or travel times.
+**factor** ``NUMERIC`` 1 Travel time multiplier. See :ref:`pd_factor`
+**max_cycles** ``INTEGER`` 10 Maximum number of cycles to perform on the optimization.
+**initial_sol** ``INTEGER`` 4 Initial solution to be used.
+
+ - ``1`` One order per truck
+ - ``2`` Push front order.
+ - ``3`` Push back order.
+ - ``4`` Optimize insert.
+ - ``5`` Push back order that allows more orders to be inserted at the back
+ - ``6`` Push front order that allows more orders to be inserted at the front
+================= ================== ========= =================================================
+
+
+
+Pick & Deliver Orders SQL
+................................................................................
+
+A `SELECT` statement that returns the following columns:
+
+.. code-block:: none
+
+ id, demand
+ p_node_id, p_open, p_close, [p_service, ]
+ d_node_id, d_open, d_close, [d_service, ]
+
+where:
+
+.. include:: VRP-category.rst
+ :start-after: pd_orders_sql_general_start
+ :end-before: pd_orders_sql_general_end
+
+.. include:: VRP-category.rst
+ :start-after: pd_orders_sql_matrix_start
+ :end-before: pd_orders_sql_matrix_end
+
+
+Pick & Deliver Vehicles SQL
+.........................................................................................
+
+A `SELECT` statement that returns the following columns:
+
+.. code-block:: none
+
+ id, capacity
+ start_node_id, start_open, start_close [, start_service, ]
+ [ end_node_id, end_open, end_close, end_service ]
+
+where:
+
+.. include:: VRP-category.rst
+ :start-after: pd_vehicle_sql_general_start
+ :end-before: pd_vehicle_sql_general_end
+
+.. include:: VRP-category.rst
+ :start-after: pd_vehicle_sql_matrix_start
+ :end-before: pd_vehicle_sql_matrix_end
+
+
+.. end of vehicles_sql
+
+Pick & Deliver Matrix SQL
+.........................................................................................
+
+A `SELECT` statement that returns the following columns:
+
+
+.. TODO
+.. warning:: TODO
+
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: where_definition_starts
+ :end-before: where_definition_ends
+
+
+
+Example
+-------------------------------------------------------------------------------
+
+.. TODO
+
+This example use the following data: TODO put link
+
+.. literalinclude:: doc-pickDeliver.queries
+ :start-after: --q2
+ :end-before: --q3
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`VRP`
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/pickDeliver/pgr_pickDeliverEuclidean.rst b/doc/pickDeliver/pgr_pickDeliverEuclidean.rst
new file mode 100644
index 0000000..be50528
--- /dev/null
+++ b/doc/pickDeliver/pgr_pickDeliverEuclidean.rst
@@ -0,0 +1,204 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_pickDeliverEuclidean:
+
+pgr_pickDeliverEuclidean - Proposed
+===============================================================================
+
+.. warning:: Documentation is being updated
+
+``pgr_pickDeliverEuclidean`` - Pickup and delivery Vehicle Routing Problem
+
+.. rubric:: Availability
+
+* New as proposed in 2.5.0
+
+
+.. include:: proposed.rst
+ :start-after: stable-begin-warning
+ :end-before: stable-end-warning
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Problem: Distribute and optimize the pickup-delivery pairs into a fleet of vehicles.
+
+- Optimization problem is NP-hard.
+- Pickup and Delivery:
+
+ - capacitated
+ - with time windows.
+
+- The vehicles
+
+ - have (x, y) start and ending locations.
+ - have a start and ending service times.
+ - have opening and closing times for the start and ending locations.
+
+- An order is for doing a pickup and a a deliver.
+
+ - has (x, y) pickup and delivery locations.
+ - has opening and closing times for the pickup and delivery locations.
+ - has a pickup and deliver service times.
+
+- There is a customer where to deliver a pickup.
+
+ - travel time between customers is distance / speed
+ - pickup and delivery pair is done with the same vehicle.
+ - A pickup is done before the delivery.
+
+
+
+Characteristics
+-------------------------------------------------------------------------------
+
+- No multiple time windows for a location.
+- Less vehicle used is considered better.
+- Less total duration is better.
+- Less wait time is better.
+- Six different optional different initial solutions
+
+ - the best solution found will be result
+
+
+.. index::
+ single: pgr_pickDeliverEuclidean - Proposed
+
+
+Signature
+-------------------------------------------------------------------------------
+
+..
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+
+..
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+
+
+.. code-block:: none
+
+ pgr_pickDeliverEuclidean(orders_sql, vehicles_sql [,factor, max_cycles, initial_sol])
+ RETURNS SET OF (seq, vehicle_seq, vehicle_id, stop_seq, stop_type, order_id,
+ cargo, travel_time, arrival_time, wait_time, service_time, departure_time)
+
+
+Parameters
+...............................................................................
+
+The parameters are:
+
+.. code-block:: none
+
+ orders_sql, vehicles_sql [,factor, max_cycles, initial_sol]
+
+Where:
+
+.. include:: VRP-category.rst
+ :start-after: pd_parameters_start
+ :end-before: pd_parameters_end
+
+
+Pick & Deliver Orders SQL
+...............................................................................
+
+A `SELECT` statement that returns the following columns:
+
+.. code-block:: none
+
+ id, demand
+ p_x, p_y, p_open, p_close, [p_service, ]
+ d_x, d_y, d_open, d_close, [d_service, ]
+
+Where:
+
+.. include:: VRP-category.rst
+ :start-after: pd_orders_sql_general_start
+ :end-before: pd_orders_sql_general_end
+
+
+.. include:: VRP-category.rst
+ :start-after: pd_orders_euclidean_sql_start
+ :end-before: pd_orders_euclidean_sql_end
+
+
+
+Pick & Deliver Vehicles SQL
+.........................................................................................
+
+A `SELECT` statement that returns the following columns:
+
+.. code-block:: none
+
+ id, capacity
+ start_x, start_y, start_open, start_close [, start_service, ]
+ [ end_x, end_y, end_open, end_close, end_service ]
+
+where:
+
+.. include:: VRP-category.rst
+ :start-after: pd_vehicle_sql_general_start
+ :end-before: pd_vehicle_sql_general_end
+
+
+.. include:: VRP-category.rst
+ :start-after: pd_vehicle_sql_euclidean_start
+ :end-before: pd_vehicle_sql_euclidean_end
+
+
+.. include:: VRP-category.rst
+ :start-after: return_vrp_euclidean_start:
+ :end-before: return_vrp_euclidean_end
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: where_definition_starts
+ :end-before: where_definition_ends
+
+
+Example
+-------------------------------------------------------------------------------
+
+.. TODO
+
+This example use the following data: TODO put link
+
+
+.. literalinclude:: ./doc-pickDeliverEuclidean.queries
+ :start-after: --q1
+ :end-before: --q2
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`VRP`
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/queries/CMakeLists.txt b/doc/queries/CMakeLists.txt
new file mode 100644
index 0000000..2617f8d
--- /dev/null
+++ b/doc/queries/CMakeLists.txt
@@ -0,0 +1,59 @@
+
+SET(LOCAL_FILES
+ doc-johnson.queries
+ doc-pgr_bdDijkstra.queries
+ doc-pgr_edgeDisjointPaths.queries
+ doc-pgr_pointsAsPolygon.queries
+ doc-pgr_withPoints.queries
+ doc-aStarCost.queries
+ doc-ksp.queries
+ doc-pgr_boykovKolmogorov.queries
+ doc-pgr_edmondsKarp.queries
+ doc-pgr_pushRelabel.queries
+ doc-pgr_withPointsVia.queries
+ doc-astar.queries
+ doc-pgr_alphashape.queries
+ doc-pgr_createTopology.queries
+ doc-pgr_eucledianTSP.queries
+ doc-pgr_TSP.queries
+ doc-pickDeliverEuclidean.queries
+ doc-contractGraph.queries
+ doc-pgr_analyzeGraph.queries
+ doc-pgr_dijkstraCost.queries
+ doc-pgr_fooDmatrix.queries
+ doc-pgr_version.queries
+ doc-pickDeliver.queries
+ doc-contraction.queries
+ doc-pgr_bdAstarCost.queries
+ doc-pgr_dijkstra.queries
+ doc-pgr_labelGraph.queries
+ doc-pgr_withPointsCost.queries
+ doc-trsp.queries
+ doc-floydWarshall.queries
+ doc-pgr_bdAstar.queries
+ doc-pgr_dijkstraVia.queries
+ doc-pgr_maxCardinalityMatch.queries
+ doc-pgr_withPointsDD.queries
+ doc-pgr_bdDijkstraCost.queries
+ doc-pgr_drivingDistance.queries
+ doc-pgr_maxFlow.queries
+ doc-pgr_withPointsKSP.queries
+ doc-pgr_connectedComponents.queries
+ doc-pgr_strongComponents.queries
+ doc-pgr_biconnectedComponents.queries
+ doc-pgr_articulationPoints.queries
+ doc-pgr_bridges.queries
+ doc-pgr_vrpOneDepot.queries
+ proof_of_concept.queries
+ trsp_notes_v2.5.0.queries
+ oneDepotWrapper.queries
+ doc-gsoc_vrppdtw.queries
+ doc-pgr_lineGraph.queries
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}")
+ list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f})
+endforeach()
+
+set(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
diff --git a/src/astar/doc/doc-aStarCost.queries b/doc/queries/doc-aStarCost.queries
similarity index 100%
rename from src/astar/doc/doc-aStarCost.queries
rename to doc/queries/doc-aStarCost.queries
diff --git a/doc/queries/doc-astar.queries b/doc/queries/doc-astar.queries
new file mode 100644
index 0000000..ef7b622
--- /dev/null
+++ b/doc/queries/doc-astar.queries
@@ -0,0 +1,104 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+--q1
+SELECT * FROM pgr_astar(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ 2, 12);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 10 | 1 | 1
+ 3 | 3 | 10 | 12 | 1 | 2
+ 4 | 4 | 11 | 13 | 1 | 3
+ 5 | 5 | 12 | -1 | 0 | 4
+(5 rows)
+
+--q2
+SELECT * FROM pgr_astar(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ 2, 12,
+ directed := false, heuristic := 2);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | 3 | 1 | 1
+ 3 | 3 | 4 | 16 | 1 | 2
+ 4 | 4 | 9 | 15 | 1 | 3
+ 5 | 5 | 12 | -1 | 0 | 4
+(5 rows)
+
+--q3
+SELECT * FROM pgr_astar(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ 2, ARRAY[3, 12], heuristic := 2);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 12 | 2 | 4 | 1 | 0
+ 8 | 2 | 12 | 5 | 10 | 1 | 1
+ 9 | 3 | 12 | 10 | 12 | 1 | 2
+ 10 | 4 | 12 | 11 | 13 | 1 | 3
+ 11 | 5 | 12 | 12 | -1 | 0 | 4
+(11 rows)
+
+--q4
+SELECT * FROM pgr_astar(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ ARRAY[7, 2], 12, heuristic := 0);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | 10 | 1 | 1
+ 3 | 3 | 2 | 10 | 12 | 1 | 2
+ 4 | 4 | 2 | 11 | 13 | 1 | 3
+ 5 | 5 | 2 | 12 | -1 | 0 | 4
+ 6 | 1 | 7 | 7 | 6 | 1 | 0
+ 7 | 2 | 7 | 8 | 7 | 1 | 1
+ 8 | 3 | 7 | 5 | 10 | 1 | 2
+ 9 | 4 | 7 | 10 | 12 | 1 | 3
+ 10 | 5 | 7 | 11 | 13 | 1 | 4
+ 11 | 6 | 7 | 12 | -1 | 0 | 5
+(11 rows)
+
+--q5
+SELECT * FROM pgr_astar(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ ARRAY[7, 2], ARRAY[3, 12], heuristic := 2);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 7 | 3 | 7 | 6 | 1 | 0
+ 8 | 2 | 7 | 3 | 8 | 7 | 1 | 1
+ 9 | 3 | 7 | 3 | 5 | 8 | 1 | 2
+ 10 | 4 | 7 | 3 | 6 | 9 | 1 | 3
+ 11 | 5 | 7 | 3 | 9 | 16 | 1 | 4
+ 12 | 6 | 7 | 3 | 4 | 3 | 1 | 5
+ 13 | 7 | 7 | 3 | 3 | -1 | 0 | 6
+ 14 | 1 | 2 | 12 | 2 | 4 | 1 | 0
+ 15 | 2 | 2 | 12 | 5 | 10 | 1 | 1
+ 16 | 3 | 2 | 12 | 10 | 12 | 1 | 2
+ 17 | 4 | 2 | 12 | 11 | 13 | 1 | 3
+ 18 | 5 | 2 | 12 | 12 | -1 | 0 | 4
+ 19 | 1 | 7 | 12 | 7 | 6 | 1 | 0
+ 20 | 2 | 7 | 12 | 8 | 7 | 1 | 1
+ 21 | 3 | 7 | 12 | 5 | 10 | 1 | 2
+ 22 | 4 | 7 | 12 | 10 | 12 | 1 | 3
+ 23 | 5 | 7 | 12 | 11 | 13 | 1 | 4
+ 24 | 6 | 7 | 12 | 12 | -1 | 0 | 5
+(24 rows)
+
+--q6
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/doc/doc-contractGraph.queries b/doc/queries/doc-contractGraph.queries
similarity index 100%
rename from src/contraction/doc/doc-contractGraph.queries
rename to doc/queries/doc-contractGraph.queries
diff --git a/doc/queries/doc-contraction.queries b/doc/queries/doc-contraction.queries
new file mode 100644
index 0000000..7e015f5
--- /dev/null
+++ b/doc/queries/doc-contraction.queries
@@ -0,0 +1,339 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q00
+-- q01
+SET client_min_messages TO ERROR;
+SET
+-- q1
+ALTER TABLE edge_table ADD contracted_vertices BIGINT[];
+ALTER TABLE
+ALTER TABLE edge_table_vertices_pgr ADD contracted_vertices BIGINT[];
+ALTER TABLE
+ALTER TABLE edge_table ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
+ALTER TABLE edge_table_vertices_pgr ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
+SET client_min_messages TO NOTICE;
+SET
+-- q2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[1,2], directed:=true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 5 | {7,8} | -1 | -1 | -1
+ 2 | v | 15 | {14} | -1 | -1 | -1
+ 3 | v | 17 | {16} | -1 | -1 | -1
+ 4 | e | -1 | {1,2} | 3 | 5 | 2
+ 5 | e | -2 | {4} | 9 | 3 | 2
+ 6 | e | -3 | {10,13} | 5 | 11 | 2
+ 7 | e | -4 | {12} | 11 | 9 | 2
+(7 rows)
+
+-- q3
+SELECT * INTO contraction_results
+FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[1,2], directed:=true);
+SELECT 7
+-- q4
+UPDATE edge_table_vertices_pgr
+SET is_contracted = true
+WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results);
+UPDATE 10
+-- q5
+SELECT id, is_contracted
+FROM edge_table_vertices_pgr
+ORDER BY id;
+ id | is_contracted
+----+---------------
+ 1 | t
+ 2 | t
+ 3 | f
+ 4 | t
+ 5 | f
+ 6 | f
+ 7 | t
+ 8 | t
+ 9 | f
+ 10 | t
+ 11 | f
+ 12 | t
+ 13 | t
+ 14 | t
+ 15 | f
+ 16 | t
+ 17 | f
+(17 rows)
+
+-- q6
+UPDATE edge_table_vertices_pgr
+SET contracted_vertices = contraction_results.contracted_vertices
+FROM contraction_results
+WHERE type = 'v' AND edge_table_vertices_pgr.id = contraction_results.id;
+UPDATE 3
+-- q7
+SELECT id, contracted_vertices, is_contracted
+FROM edge_table_vertices_pgr
+ORDER BY id;
+ id | contracted_vertices | is_contracted
+----+---------------------+---------------
+ 1 | | t
+ 2 | | t
+ 3 | | f
+ 4 | | t
+ 5 | {7,8} | f
+ 6 | | f
+ 7 | | t
+ 8 | | t
+ 9 | | f
+ 10 | | t
+ 11 | | f
+ 12 | | t
+ 13 | | t
+ 14 | | t
+ 15 | {14} | f
+ 16 | | t
+ 17 | {16} | f
+(17 rows)
+
+-- q8
+INSERT INTO edge_table(source, target, cost, reverse_cost, contracted_vertices, is_contracted)
+SELECT source, target, cost, -1, contracted_vertices, true
+FROM contraction_results
+WHERE type = 'e';
+INSERT 0 4
+-- q9
+SELECT id, source, target, cost, reverse_cost, contracted_vertices, is_contracted
+FROM edge_table
+ORDER BY id;
+ id | source | target | cost | reverse_cost | contracted_vertices | is_contracted
+----+--------+--------+------+--------------+---------------------+---------------
+ 1 | 1 | 2 | 1 | 1 | | f
+ 2 | 2 | 3 | -1 | 1 | | f
+ 3 | 3 | 4 | -1 | 1 | | f
+ 4 | 2 | 5 | 1 | 1 | | f
+ 5 | 3 | 6 | 1 | -1 | | f
+ 6 | 7 | 8 | 1 | 1 | | f
+ 7 | 8 | 5 | 1 | 1 | | f
+ 8 | 5 | 6 | 1 | 1 | | f
+ 9 | 6 | 9 | 1 | 1 | | f
+ 10 | 5 | 10 | 1 | 1 | | f
+ 11 | 6 | 11 | 1 | -1 | | f
+ 12 | 10 | 11 | 1 | -1 | | f
+ 13 | 11 | 12 | 1 | -1 | | f
+ 14 | 10 | 13 | 1 | 1 | | f
+ 15 | 9 | 12 | 1 | 1 | | f
+ 16 | 4 | 9 | 1 | 1 | | f
+ 17 | 14 | 15 | 1 | 1 | | f
+ 18 | 16 | 17 | 1 | 1 | | f
+ 19 | 3 | 5 | 2 | -1 | {1,2} | t
+ 20 | 9 | 3 | 2 | -1 | {4} | t
+ 21 | 5 | 11 | 2 | -1 | {10,13} | t
+ 22 | 11 | 9 | 2 | -1 | {12} | t
+(22 rows)
+
+-- q10
+SELECT id FROM edge_table_vertices_pgr
+WHERE is_contracted = false
+ORDER BY id;
+ id
+----
+ 3
+ 5
+ 6
+ 9
+ 11
+ 15
+ 17
+(7 rows)
+
+-- case1
+SELECT * FROM pgr_dijkstra(
+ $$
+ WITH
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ $$,
+ 3, 11, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 11 | 1 | 1
+ 3 | 3 | 11 | -1 | 0 | 2
+(3 rows)
+
+-- case2
+SELECT * FROM pgr_dijkstra(
+ $$
+ WITH
+ expand_edges AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table),
+ expand1 AS (SELECT contracted_vertices FROM edge_table
+ WHERE id IN (SELECT id FROM expand_edges WHERE vertex = 1)),
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand1)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ $$,
+ 3, 1, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 1 | 0
+ 2 | 2 | 2 | 1 | 1 | 1
+ 3 | 3 | 1 | -1 | 0 | 2
+(3 rows)
+
+-- case3
+SELECT * FROM pgr_dijkstra(
+ $$
+ WITH
+
+ expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
+ expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
+ WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
+
+ expand_edges AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table),
+ expand13 AS (SELECT contracted_vertices FROM edge_table
+ WHERE id IN (SELECT id FROM expand_edges WHERE vertex = 13)),
+
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand13
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand7)
+
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ $$,
+ 7, 13, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 7 | 6 | 1 | 0
+ 2 | 2 | 8 | 7 | 1 | 1
+ 3 | 3 | 5 | 10 | 1 | 2
+ 4 | 4 | 10 | 14 | 1 | 3
+ 5 | 5 | 13 | -1 | 0 | 4
+(5 rows)
+
+-- case4
+SELECT * FROM pgr_dijkstra(
+ $$
+ WITH
+ expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
+ expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
+ WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand7)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ $$,
+ 3, 7, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 19 | 2 | 0
+ 2 | 2 | 5 | 7 | 1 | 2
+ 3 | 3 | 8 | 6 | 1 | 3
+ 4 | 4 | 7 | -1 | 0 | 4
+(4 rows)
+
+-- case5q1
+WITH
+first_dijkstra AS (
+ SELECT * FROM pgr_dijkstra(
+ $$
+ WITH
+ expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
+ expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
+ WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand7)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ $$,
+ 3, 7, false))
+SELECT edge, contracted_vertices
+ FROM first_dijkstra JOIN edge_table
+ ON (edge = id)
+ WHERE is_contracted = true;
+ edge | contracted_vertices
+------+---------------------
+ 19 | {1,2}
+(1 row)
+
+-- case5q2
+SELECT * FROM pgr_dijkstra($$
+ WITH
+ -- This returns the results from case 2
+ first_dijkstra AS (
+ SELECT * FROM pgr_dijkstra(
+ '
+ WITH
+ expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
+ expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
+ WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand7)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ ',
+ 3, 7, false)),
+
+ -- edges that need expansion and the vertices to be expanded.
+ edges_to_expand AS (
+ SELECT edge, contracted_vertices
+ FROM first_dijkstra JOIN edge_table
+ ON (edge = id)
+ WHERE is_contracted = true),
+
+ vertices_in_graph AS (
+ -- the nodes of the contracted solution
+ SELECT node FROM first_dijkstra
+ UNION
+ -- the nodes of the expanding sections
+ SELECT unnest(contracted_vertices) FROM edges_to_expand)
+
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ -- not including the expanded edges
+ AND id NOT IN (SELECT edge FROM edges_to_expand)
+ $$,
+ 3, 7, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 1 | 0
+ 2 | 2 | 2 | 4 | 1 | 1
+ 3 | 3 | 5 | 7 | 1 | 2
+ 4 | 4 | 8 | 6 | 1 | 3
+ 5 | 5 | 7 | -1 | 0 | 4
+(5 rows)
+
+-- end
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-dijkstraTRSP.queries b/doc/queries/doc-dijkstraTRSP.queries
new file mode 100644
index 0000000..c72515b
--- /dev/null
+++ b/doc/queries/doc-dijkstraTRSP.queries
@@ -0,0 +1,25 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3
+);
+ERROR: function pgr_dijkstratrsp(unknown, unknown, integer, integer) does not exist
+LINE 1: SELECT * FROM pgr_dijkstraTRSP(
+ ^
+HINT: No function matches the given name and argument types. You might need to add explicit type casts.
+-- q2
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3,
+ FALSE
+);
+ERROR: current transaction is aborted, commands ignored until end of transaction block
+-- q3
+ROLLBACK;
+ROLLBACK
diff --git a/src/allpairs/doc/doc-floydWarshall.queries b/doc/queries/doc-floydWarshall.queries
similarity index 100%
rename from src/allpairs/doc/doc-floydWarshall.queries
rename to doc/queries/doc-floydWarshall.queries
diff --git a/doc/queries/doc-gsoc_vrppdtw.queries b/doc/queries/doc-gsoc_vrppdtw.queries
new file mode 100644
index 0000000..eed8a37
--- /dev/null
+++ b/doc/queries/doc-gsoc_vrppdtw.queries
@@ -0,0 +1,79 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+--q1
+SELECT DISTINCT(id1) FROM pgr_gsoc_vrppdtw(
+ 'SELECT * FROM customer ORDER BY id', 25, 200)
+ORDER BY id1;
+ id1
+-----
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+(10 rows)
+
+--q2
+SELECT count(*) FROM pgr_gsoc_vrppdtw(
+ 'SELECT * FROM customer ORDER BY id', 25, 200);
+ count
+-------
+ 126
+(1 row)
+
+--q3
+SELECT * FROM pgr_gsoc_vrppdtw(
+ 'SELECT * FROM customer ORDER BY id', 25, 200)
+ WHERE id1 in (1, 5, 9);
+ seq | id1 | id2 | cost
+-----+-----+-----+------------------
+ 1 | 1 | 0 | 0
+ 2 | 1 | 13 | 120.805843601499
+ 3 | 1 | 17 | 214.805843601499
+ 4 | 1 | 18 | 307.805843601499
+ 5 | 1 | 19 | 402.805843601499
+ 6 | 1 | 15 | 497.805843601499
+ 7 | 1 | 16 | 592.805843601499
+ 8 | 1 | 14 | 684.805843601499
+ 9 | 1 | 12 | 777.805843601499
+ 10 | 1 | 50 | 920.815276724293
+ 11 | 1 | 52 | 1013.97755438446
+ 12 | 1 | 49 | 1106.97755438446
+ 13 | 1 | 47 | 1198.97755438446
+ 14 | 1 | 0 | 1217.00531076178
+ 57 | 5 | 0 | 0
+ 58 | 5 | 90 | 110.615528128088
+ 59 | 5 | 87 | 205.615528128088
+ 60 | 5 | 86 | 296.615528128088
+ 61 | 5 | 83 | 392.615528128088
+ 62 | 5 | 82 | 485.615528128088
+ 63 | 5 | 84 | 581.446480022934
+ 64 | 5 | 85 | 674.27490714768
+ 65 | 5 | 88 | 767.27490714768
+ 66 | 5 | 89 | 860.103334272426
+ 67 | 5 | 91 | 953.70888554789
+ 68 | 5 | 0 | 976.069565322888
+ 105 | 9 | 0 | 0
+ 106 | 9 | 67 | 102.206555615734
+ 107 | 9 | 65 | 193.206555615734
+ 108 | 9 | 63 | 285.206555615734
+ 109 | 9 | 62 | 380.206555615734
+ 110 | 9 | 74 | 473.206555615734
+ 111 | 9 | 72 | 568.206555615734
+ 112 | 9 | 61 | 661.206555615734
+ 113 | 9 | 64 | 663.206555615734
+ 114 | 9 | 102 | 753.206555615734
+ 115 | 9 | 68 | 846.206555615734
+ 116 | 9 | 0 | 866.822083743822
+(38 rows)
+
+--q4
+ROLLBACK;
+ROLLBACK
diff --git a/src/allpairs/doc/doc-johnson.queries b/doc/queries/doc-johnson.queries
similarity index 100%
rename from src/allpairs/doc/doc-johnson.queries
rename to doc/queries/doc-johnson.queries
diff --git a/doc/queries/doc-ksp.queries b/doc/queries/doc-ksp.queries
new file mode 100644
index 0000000..3488172
--- /dev/null
+++ b/doc/queries/doc-ksp.queries
@@ -0,0 +1,274 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+--q1
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2,
+ directed:=true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+--q2
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2, heap_paths:=true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+(15 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2, true, true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+(15 rows)
+
+--q3
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2, directed:=false
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 1 | 2 | 3 | 3 | 1 | 1
+ 3 | 1 | 3 | 4 | 16 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2, false, true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 1 | 2 | 3 | 3 | 1 | 1
+ 3 | 1 | 3 | 4 | 16 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+ 16 | 4 | 1 | 2 | 4 | 1 | 0
+ 17 | 4 | 2 | 5 | 10 | 1 | 1
+ 18 | 4 | 3 | 10 | 12 | 1 | 2
+ 19 | 4 | 4 | 11 | 11 | 1 | 3
+ 20 | 4 | 5 | 6 | 9 | 1 | 4
+ 21 | 4 | 6 | 9 | 15 | 1 | 5
+ 22 | 4 | 7 | 12 | -1 | 0 | 6
+(22 rows)
+
+--q4
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 3, 2
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 12, 2
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 12, 2, heap_paths:=true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+(15 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 12, 2, true, true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+(15 rows)
+
+--q5
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 12, 2, directed:=false
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 12, 2, directed:=false, heap_paths:=true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+(15 rows)
+
+--q6
+ROLLBACK;
+ROLLBACK
diff --git a/src/tsp/doc/doc-pgr_TSP.queries b/doc/queries/doc-pgr_TSP.queries
similarity index 100%
rename from src/tsp/doc/doc-pgr_TSP.queries
rename to doc/queries/doc-pgr_TSP.queries
diff --git a/src/alpha_shape/doc/doc-pgr_alphashape.queries b/doc/queries/doc-pgr_alphashape.queries
similarity index 100%
rename from src/alpha_shape/doc/doc-pgr_alphashape.queries
rename to doc/queries/doc-pgr_alphashape.queries
diff --git a/src/topology/doc/doc-pgr_analyzeGraph.queries b/doc/queries/doc-pgr_analyzeGraph.queries
similarity index 100%
rename from src/topology/doc/doc-pgr_analyzeGraph.queries
rename to doc/queries/doc-pgr_analyzeGraph.queries
diff --git a/doc/queries/doc-pgr_articulationPoints.queries b/doc/queries/doc-pgr_articulationPoints.queries
new file mode 100644
index 0000000..4bbe0b6
--- /dev/null
+++ b/doc/queries/doc-pgr_articulationPoints.queries
@@ -0,0 +1,30 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_articulationPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | node
+-----+------
+ 1 | 2
+ 2 | 5
+ 3 | 8
+ 4 | 10
+(4 rows)
+
+-- q2
+SELECT * FROM pgr_articulationPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | node
+-----+------
+ 1 | 2
+ 2 | 5
+ 3 | 8
+ 4 | 10
+(4 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_bdAstar.queries b/doc/queries/doc-pgr_bdAstar.queries
new file mode 100644
index 0000000..3940236
--- /dev/null
+++ b/doc/queries/doc-pgr_bdAstar.queries
@@ -0,0 +1,112 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+-- q2
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3,
+ true, heuristic := 2
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+-- q3
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, ARRAY[3, 11],
+ heuristic := 3, factor := 3.5
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 11 | 2 | 4 | 1 | 0
+ 8 | 2 | 11 | 5 | 8 | 1 | 1
+ 9 | 3 | 11 | 6 | 11 | 1 | 2
+ 10 | 4 | 11 | 11 | -1 | 0 | 3
+(10 rows)
+
+-- q4
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], 3,
+ false, heuristic := 4
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 2 | 1 | 0
+ 2 | 2 | 2 | 3 | -1 | 0 | 1
+ 3 | 1 | 7 | 7 | 6 | 1 | 0
+ 4 | 2 | 7 | 8 | 7 | 1 | 1
+ 5 | 3 | 7 | 5 | 4 | 1 | 2
+ 6 | 4 | 7 | 2 | 2 | 1 | 3
+ 7 | 5 | 7 | 3 | -1 | 0 | 4
+(7 rows)
+
+-- q5
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11],
+ factor := 0.5
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 2 | 11 | 2 | 4 | 1 | 0
+ 8 | 2 | 2 | 11 | 5 | 8 | 1 | 1
+ 9 | 3 | 2 | 11 | 6 | 11 | 1 | 2
+ 10 | 4 | 2 | 11 | 11 | -1 | 0 | 3
+ 11 | 1 | 7 | 3 | 7 | 6 | 1 | 0
+ 12 | 2 | 7 | 3 | 8 | 7 | 1 | 1
+ 13 | 3 | 7 | 3 | 5 | 8 | 1 | 2
+ 14 | 4 | 7 | 3 | 6 | 9 | 1 | 3
+ 15 | 5 | 7 | 3 | 9 | 16 | 1 | 4
+ 16 | 6 | 7 | 3 | 4 | 3 | 1 | 5
+ 17 | 7 | 7 | 3 | 3 | -1 | 0 | 6
+ 18 | 1 | 7 | 11 | 7 | 6 | 1 | 0
+ 19 | 2 | 7 | 11 | 8 | 7 | 1 | 1
+ 20 | 3 | 7 | 11 | 5 | 10 | 1 | 2
+ 21 | 4 | 7 | 11 | 10 | 12 | 1 | 3
+ 22 | 5 | 7 | 11 | 11 | -1 | 0 | 4
+(22 rows)
+
+-- q6
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_bdAstarCost.queries b/doc/queries/doc-pgr_bdAstarCost.queries
new file mode 100644
index 0000000..f22ab6d
--- /dev/null
+++ b/doc/queries/doc-pgr_bdAstarCost.queries
@@ -0,0 +1,71 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+(1 row)
+
+-- q2
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3,
+ true, heuristic := 2
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+(1 row)
+
+-- q3
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, ARRAY[3, 11],
+ heuristic := 3, factor := 3.5
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 11 | 3
+(2 rows)
+
+-- q4
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], 3,
+ false, heuristic := 4
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 1
+ 7 | 3 | 4
+(2 rows)
+
+-- q5
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11],
+ factor := 0.5
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 11 | 3
+ 7 | 3 | 6
+ 7 | 11 | 4
+(4 rows)
+
+-- q6
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_bdDijkstra.queries b/doc/queries/doc-pgr_bdDijkstra.queries
new file mode 100644
index 0000000..203ae8b
--- /dev/null
+++ b/doc/queries/doc-pgr_bdDijkstra.queries
@@ -0,0 +1,119 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+-- q2
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ false
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+-- q3
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3, 11]);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 11 | 2 | 4 | 1 | 0
+ 8 | 2 | 11 | 5 | 8 | 1 | 1
+ 9 | 3 | 11 | 6 | 11 | 1 | 2
+ 10 | 4 | 11 | 11 | -1 | 0 | 3
+(10 rows)
+
+-- q4
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], 3);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | -1 | 0 | 5
+ 7 | 1 | 7 | 7 | 6 | 1 | 0
+ 8 | 2 | 7 | 8 | 7 | 1 | 1
+ 9 | 3 | 7 | 5 | 8 | 1 | 2
+ 10 | 4 | 7 | 6 | 9 | 1 | 3
+ 11 | 5 | 7 | 9 | 16 | 1 | 4
+ 12 | 6 | 7 | 4 | 3 | 1 | 5
+ 13 | 7 | 7 | 3 | -1 | 0 | 6
+(13 rows)
+
+-- q5
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11]);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 2 | 11 | 2 | 4 | 1 | 0
+ 8 | 2 | 2 | 11 | 5 | 8 | 1 | 1
+ 9 | 3 | 2 | 11 | 6 | 11 | 1 | 2
+ 10 | 4 | 2 | 11 | 11 | -1 | 0 | 3
+ 11 | 1 | 7 | 3 | 7 | 6 | 1 | 0
+ 12 | 2 | 7 | 3 | 8 | 7 | 1 | 1
+ 13 | 3 | 7 | 3 | 5 | 8 | 1 | 2
+ 14 | 4 | 7 | 3 | 6 | 9 | 1 | 3
+ 15 | 5 | 7 | 3 | 9 | 16 | 1 | 4
+ 16 | 6 | 7 | 3 | 4 | 3 | 1 | 5
+ 17 | 7 | 7 | 3 | 3 | -1 | 0 | 6
+ 18 | 1 | 7 | 11 | 7 | 6 | 1 | 0
+ 19 | 2 | 7 | 11 | 8 | 7 | 1 | 1
+ 20 | 3 | 7 | 11 | 5 | 10 | 1 | 2
+ 21 | 4 | 7 | 11 | 10 | 12 | 1 | 3
+ 22 | 5 | 7 | 11 | 11 | -1 | 0 | 4
+(22 rows)
+
+-- q6
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT FROM edge_table',
+ 2, 3,
+ false,
+ false
+);
+NOTICE: Deprecated Signature of pgr_bdDijkstra
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 5 | 1
+ 3 | 3 | -1 | 0
+(4 rows)
+
+-- q7
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_bdDijkstraCost.queries b/doc/queries/doc-pgr_bdDijkstraCost.queries
new file mode 100644
index 0000000..fa75c07
--- /dev/null
+++ b/doc/queries/doc-pgr_bdDijkstraCost.queries
@@ -0,0 +1,60 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+(1 row)
+
+-- q2
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 1
+(1 row)
+
+-- q3
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3, 11]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 11 | 3
+(2 rows)
+
+-- q4
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], 3);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 7 | 3 | 6
+(2 rows)
+
+-- q5
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 11 | 3
+ 7 | 3 | 6
+ 7 | 11 | 4
+(4 rows)
+
+-- q6
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_biconnectedComponents.queries b/doc/queries/doc-pgr_biconnectedComponents.queries
new file mode 100644
index 0000000..afaa41c
--- /dev/null
+++ b/doc/queries/doc-pgr_biconnectedComponents.queries
@@ -0,0 +1,58 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_biconnectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | edge
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 2 | 1 | 2
+ 3 | 2 | 2 | 3
+ 4 | 2 | 3 | 4
+ 5 | 2 | 4 | 5
+ 6 | 2 | 5 | 8
+ 7 | 2 | 6 | 9
+ 8 | 2 | 7 | 10
+ 9 | 2 | 8 | 11
+ 10 | 2 | 9 | 12
+ 11 | 2 | 10 | 13
+ 12 | 2 | 11 | 15
+ 13 | 2 | 12 | 16
+ 14 | 6 | 1 | 6
+ 15 | 7 | 1 | 7
+ 16 | 14 | 1 | 14
+ 17 | 17 | 1 | 17
+ 18 | 18 | 1 | 18
+(18 rows)
+
+-- q2
+SELECT * FROM pgr_biconnectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | edge
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 2 | 1 | 2
+ 3 | 2 | 2 | 3
+ 4 | 2 | 3 | 4
+ 5 | 2 | 4 | 5
+ 6 | 2 | 5 | 8
+ 7 | 2 | 6 | 9
+ 8 | 2 | 7 | 10
+ 9 | 2 | 8 | 11
+ 10 | 2 | 9 | 12
+ 11 | 2 | 10 | 13
+ 12 | 2 | 11 | 15
+ 13 | 2 | 12 | 16
+ 14 | 6 | 1 | 6
+ 15 | 7 | 1 | 7
+ 16 | 14 | 1 | 14
+ 17 | 17 | 1 | 17
+ 18 | 18 | 1 | 18
+(18 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_boykovKolmogorov.queries b/doc/queries/doc-pgr_boykovKolmogorov.queries
new file mode 100644
index 0000000..3058de9
--- /dev/null
+++ b/doc/queries/doc-pgr_boykovKolmogorov.queries
@@ -0,0 +1,90 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q2
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[1, 3, 11]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 50 | 80
+ 2 | 3 | 4 | 3 | 80 | 50
+ 3 | 4 | 5 | 2 | 50 | 0
+ 4 | 10 | 5 | 10 | 80 | 50
+ 5 | 8 | 6 | 5 | 130 | 0
+ 6 | 9 | 6 | 9 | 80 | 50
+ 7 | 11 | 6 | 11 | 130 | 0
+ 8 | 16 | 9 | 4 | 80 | 0
+ 9 | 12 | 10 | 11 | 80 | 20
+(9 rows)
+
+-- q3
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q4
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 50 | 80
+ 2 | 3 | 4 | 3 | 80 | 50
+ 3 | 4 | 5 | 2 | 50 | 0
+ 4 | 10 | 5 | 10 | 100 | 30
+ 5 | 8 | 6 | 5 | 130 | 0
+ 6 | 9 | 6 | 9 | 80 | 50
+ 7 | 11 | 6 | 11 | 130 | 0
+ 8 | 7 | 8 | 5 | 20 | 30
+ 9 | 16 | 9 | 4 | 80 | 0
+ 10 | 12 | 10 | 11 | 100 | 0
+(10 rows)
+
+-- q5
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_bridges.queries b/doc/queries/doc-pgr_bridges.queries
new file mode 100644
index 0000000..649046d
--- /dev/null
+++ b/doc/queries/doc-pgr_bridges.queries
@@ -0,0 +1,34 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_bridges(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | edge
+-----+------
+ 1 | 1
+ 2 | 6
+ 3 | 7
+ 4 | 14
+ 5 | 17
+ 6 | 18
+(6 rows)
+
+-- q2
+SELECT * FROM pgr_bridges(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | edge
+-----+------
+ 1 | 1
+ 2 | 6
+ 3 | 7
+ 4 | 14
+ 5 | 17
+ 6 | 18
+(6 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_connectedComponents.queries b/doc/queries/doc-pgr_connectedComponents.queries
new file mode 100644
index 0000000..da041b1
--- /dev/null
+++ b/doc/queries/doc-pgr_connectedComponents.queries
@@ -0,0 +1,56 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_connectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | node
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 2
+ 3 | 1 | 3 | 3
+ 4 | 1 | 4 | 4
+ 5 | 1 | 5 | 5
+ 6 | 1 | 6 | 6
+ 7 | 1 | 7 | 7
+ 8 | 1 | 8 | 8
+ 9 | 1 | 9 | 9
+ 10 | 1 | 10 | 10
+ 11 | 1 | 11 | 11
+ 12 | 1 | 12 | 12
+ 13 | 1 | 13 | 13
+ 14 | 14 | 1 | 14
+ 15 | 14 | 2 | 15
+ 16 | 16 | 1 | 16
+ 17 | 16 | 2 | 17
+(17 rows)
+
+-- q2
+SELECT * FROM pgr_connectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | node
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 2
+ 3 | 1 | 3 | 3
+ 4 | 1 | 4 | 4
+ 5 | 1 | 5 | 5
+ 6 | 1 | 6 | 6
+ 7 | 1 | 7 | 7
+ 8 | 1 | 8 | 8
+ 9 | 1 | 9 | 9
+ 10 | 1 | 10 | 10
+ 11 | 1 | 11 | 11
+ 12 | 1 | 12 | 12
+ 13 | 1 | 13 | 13
+ 14 | 14 | 1 | 14
+ 15 | 14 | 2 | 15
+ 16 | 16 | 1 | 16
+ 17 | 16 | 2 | 17
+(17 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_createTopology.queries b/doc/queries/doc-pgr_createTopology.queries
new file mode 100644
index 0000000..3b3e195
--- /dev/null
+++ b/doc/queries/doc-pgr_createTopology.queries
@@ -0,0 +1,262 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+DROP TABLE edge_table_vertices_pgr;
+DROP TABLE
+UPDATE edge_table SET source = NULL, target = NULL;
+UPDATE 18
+--q1
+SELECT pgr_createTopology('edge_table', 0.001);
+NOTICE: PROCESSING:
+NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
+NOTICE: Performing checks, please wait .....
+NOTICE: Creating Topology, Please wait...
+NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
+NOTICE: Rows with NULL geometry or NULL id: 0
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q1.1
+DROP TABLE edge_table_vertices_pgr;
+DROP TABLE
+UPDATE edge_table SET source = NULL, target = NULL;
+UPDATE 18
+--q2
+SELECT pgr_createTopology('edge_table', 0.001,
+ 'the_geom', 'id', 'source', 'target');
+NOTICE: PROCESSING:
+NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
+NOTICE: Performing checks, please wait .....
+NOTICE: Creating Topology, Please wait...
+NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
+NOTICE: Rows with NULL geometry or NULL id: 0
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q2.1
+SET client_min_messages TO NOTICE;
+SET
+--q3
+SELECT pgr_createTopology('edge_table', 0.001,
+ 'id', 'the_geom');
+NOTICE: PROCESSING:
+NOTICE: pgr_createTopology('edge_table', 0.001, 'id', 'the_geom', 'source', 'target', rows_where := 'true', clean := f)
+NOTICE: Performing checks, please wait .....
+NOTICE: ----> PGR ERROR in pgr_createTopology: Wrong type of Column id:the_geom
+NOTICE: Unexpected error raise_exception
+ pgr_createtopology
+--------------------
+ FAIL
+(1 row)
+
+--q3.1
+SET client_min_messages TO WARNING;
+SET
+DROP TABLE edge_table_vertices_pgr;
+DROP TABLE
+UPDATE edge_table SET source = NULL, target = NULL;
+UPDATE 18
+--q4
+SELECT pgr_createTopology('edge_table', 0.001,
+ the_geom:='the_geom', id:='id', source:='source', target:='target');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q4.1
+DROP TABLE edge_table_vertices_pgr;
+DROP TABLE
+UPDATE edge_table SET source = NULL, target = NULL;
+UPDATE 18
+--q5
+SELECT pgr_createTopology('edge_table', 0.001,
+ source:='source', id:='id', target:='target', the_geom:='the_geom');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q5.1
+DROP TABLE edge_table_vertices_pgr;
+DROP TABLE
+UPDATE edge_table SET source = NULL, target = NULL;
+UPDATE 18
+--q6
+SELECT pgr_createTopology('edge_table', 0.001, source:='source');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q6.1
+--q7
+SELECT pgr_createTopology('edge_table', 0.001, rows_where:='id < 10');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q7.1
+--q8
+SELECT pgr_createTopology('edge_table', 0.001,
+ rows_where:='the_geom && (SELECT st_buffer(the_geom, 0.05) FROM edge_table WHERE id=5)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q8.1
+--q9
+CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5, 2.5) AS other_geom);
+SELECT 1
+SELECT pgr_createTopology('edge_table', 0.001,
+ rows_where:='the_geom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q9.1
+--q10
+CREATE TABLE mytable AS (SELECT id AS gid, the_geom AS mygeom, source AS src , target AS tgt FROM edge_table) ;
+SELECT 18
+--q10.1
+--q11
+SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt', clean := TRUE);
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q11.1
+DROP TABLE mytable_vertices_pgr;
+DROP TABLE
+UPDATE mytable SET src = NULL, tgt = NULL;
+UPDATE 18
+SET client_min_messages TO NOTICE;
+SET
+--q12
+SELECT pgr_createTopology('mytable', 0.001, 'gid', 'mygeom', 'src', 'tgt');
+NOTICE: PROCESSING:
+NOTICE: pgr_createTopology('mytable', 0.001, 'gid', 'mygeom', 'src', 'tgt', rows_where := 'true', clean := f)
+NOTICE: Performing checks, please wait .....
+NOTICE: ----> PGR ERROR in pgr_createTopology: Wrong type of Column id:mygeom
+NOTICE: Unexpected error raise_exception
+ pgr_createtopology
+--------------------
+ FAIL
+(1 row)
+
+--q12.1
+SET client_min_messages TO WARNING;
+SET
+--q13
+SELECT pgr_createTopology('mytable', 0.001, the_geom:='mygeom', id:='gid', source:='src', target:='tgt');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q13.1
+DROP TABLE mytable_vertices_pgr;
+DROP TABLE
+UPDATE mytable SET src = NULL, tgt = NULL;
+UPDATE 18
+--q14
+SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q14.1
+--q15
+SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt', rows_where:='gid < 10');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom', rows_where:='gid < 10');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom, 1) FROM mytable WHERE gid=5)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom, 1) FROM mytable WHERE gid=5)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q15.1
+--q16
+SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt',
+ rows_where:='mygeom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q16.1
+SET client_min_messages TO NOTICE;
+SET
+--q17
+SELECT pgr_createTopology('edge_table', 0.001, rows_where:='id < 6', clean := true);
+NOTICE: PROCESSING:
+NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'id < 6', clean := t)
+NOTICE: Performing checks, please wait .....
+NOTICE: Creating Topology, Please wait...
+NOTICE: -------------> TOPOLOGY CREATED FOR 5 edges
+NOTICE: Rows with NULL geometry or NULL id: 0
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('edge_table', 0.001);
+NOTICE: PROCESSING:
+NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
+NOTICE: Performing checks, please wait .....
+NOTICE: Creating Topology, Please wait...
+NOTICE: -------------> TOPOLOGY CREATED FOR 13 edges
+NOTICE: Rows with NULL geometry or NULL id: 0
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+--q17.1
+SET client_min_messages TO NOTICE;
+SET
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_dijkstra.queries b/doc/queries/doc-pgr_dijkstra.queries
new file mode 100644
index 0000000..285e4ab
--- /dev/null
+++ b/doc/queries/doc-pgr_dijkstra.queries
@@ -0,0 +1,590 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+-- q2
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+-- q3
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 5 | 1 | 2
+ 4 | 4 | 3 | 3 | -1 | 0 | 3
+ 5 | 1 | 5 | 2 | 4 | 1 | 0
+ 6 | 2 | 5 | 5 | -1 | 0 | 1
+(6 rows)
+
+-- q4
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2,11], 5
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | -1 | 0 | 1
+ 3 | 1 | 11 | 11 | 13 | 1 | 0
+ 4 | 2 | 11 | 12 | 15 | 1 | 1
+ 5 | 3 | 11 | 9 | 9 | 1 | 2
+ 6 | 4 | 11 | 6 | 8 | 1 | 3
+ 7 | 5 | 11 | 5 | -1 | 0 | 4
+(7 rows)
+
+-- q5
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2,11], ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0
+ 2 | 2 | 2 | 3 | 3 | -1 | 0 | 1
+ 3 | 1 | 2 | 5 | 2 | 4 | 1 | 0
+ 4 | 2 | 2 | 5 | 5 | -1 | 0 | 1
+ 5 | 1 | 11 | 3 | 11 | 11 | 1 | 0
+ 6 | 2 | 11 | 3 | 6 | 5 | 1 | 1
+ 7 | 3 | 11 | 3 | 3 | -1 | 0 | 2
+ 8 | 1 | 11 | 5 | 11 | 11 | 1 | 0
+ 9 | 2 | 11 | 5 | 6 | 8 | 1 | 1
+ 10 | 3 | 11 | 5 | 5 | -1 | 0 | 2
+(10 rows)
+
+-- q6
+-- q7
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 5
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3,5]
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 5 | 2 | 4 | 1 | 0
+ 8 | 2 | 5 | 5 | -1 | 0 | 1
+(8 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 11, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 13 | 1 | 0
+ 2 | 2 | 12 | 15 | 1 | 1
+ 3 | 3 | 9 | 16 | 1 | 2
+ 4 | 4 | 4 | 3 | 1 | 3
+ 5 | 5 | 3 | -1 | 0 | 4
+(5 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 11, 5
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 13 | 1 | 0
+ 2 | 2 | 12 | 15 | 1 | 1
+ 3 | 3 | 9 | 9 | 1 | 2
+ 4 | 4 | 6 | 8 | 1 | 3
+ 5 | 5 | 5 | -1 | 0 | 4
+(5 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2,11], 5
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | -1 | 0 | 1
+ 3 | 1 | 11 | 11 | 13 | 1 | 0
+ 4 | 2 | 11 | 12 | 15 | 1 | 1
+ 5 | 3 | 11 | 9 | 9 | 1 | 2
+ 6 | 4 | 11 | 6 | 8 | 1 | 3
+ 7 | 5 | 11 | 5 | -1 | 0 | 4
+(7 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 11], ARRAY[3,5]
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 2 | 5 | 2 | 4 | 1 | 0
+ 8 | 2 | 2 | 5 | 5 | -1 | 0 | 1
+ 9 | 1 | 11 | 3 | 11 | 13 | 1 | 0
+ 10 | 2 | 11 | 3 | 12 | 15 | 1 | 1
+ 11 | 3 | 11 | 3 | 9 | 16 | 1 | 2
+ 12 | 4 | 11 | 3 | 4 | 3 | 1 | 3
+ 13 | 5 | 11 | 3 | 3 | -1 | 0 | 4
+ 14 | 1 | 11 | 5 | 11 | 13 | 1 | 0
+ 15 | 2 | 11 | 5 | 12 | 15 | 1 | 1
+ 16 | 3 | 11 | 5 | 9 | 9 | 1 | 2
+ 17 | 4 | 11 | 5 | 6 | 8 | 1 | 3
+ 18 | 5 | 11 | 5 | 5 | -1 | 0 | 4
+(18 rows)
+
+-- q8
+-- q9
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 5,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 11, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 11 | 1 | 0
+ 2 | 2 | 6 | 5 | 1 | 1
+ 3 | 3 | 3 | -1 | 0 | 2
+(3 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 11, 5,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 11 | 1 | 0
+ 2 | 2 | 6 | 8 | 1 | 1
+ 3 | 3 | 5 | -1 | 0 | 2
+(3 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2,11], 5,
+ FALSE
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | -1 | 0 | 1
+ 3 | 1 | 11 | 11 | 12 | 1 | 0
+ 4 | 2 | 11 | 10 | 10 | 1 | 1
+ 5 | 3 | 11 | 5 | -1 | 0 | 2
+(5 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | 3 | -1 | 0 | 1
+ 3 | 1 | 5 | 2 | 4 | 1 | 0
+ 4 | 2 | 5 | 5 | -1 | 0 | 1
+(4 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 11], ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0
+ 2 | 2 | 2 | 3 | 3 | -1 | 0 | 1
+ 3 | 1 | 2 | 5 | 2 | 4 | 1 | 0
+ 4 | 2 | 2 | 5 | 5 | -1 | 0 | 1
+ 5 | 1 | 11 | 3 | 11 | 11 | 1 | 0
+ 6 | 2 | 11 | 3 | 6 | 5 | 1 | 1
+ 7 | 3 | 11 | 3 | 3 | -1 | 0 | 2
+ 8 | 1 | 11 | 5 | 11 | 11 | 1 | 0
+ 9 | 2 | 11 | 5 | 6 | 8 | 1 | 1
+ 10 | 3 | 11 | 5 | 5 | -1 | 0 | 2
+(10 rows)
+
+-- q10
+-- q11
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 5
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 11, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 11, 5
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ ARRAY[2,11], 5
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, ARRAY[3,5]
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 5 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ ARRAY[2, 11], ARRAY[3,5]
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 5 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | 5 | -1 | 0 | 1
+(2 rows)
+
+-- q12
+-- q13
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 5 | 1 | 2
+ 4 | 4 | 3 | -1 | 0 | 3
+(4 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 5,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 11, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 11 | 1 | 0
+ 2 | 2 | 6 | 5 | 1 | 1
+ 3 | 3 | 3 | -1 | 0 | 2
+(3 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 11, 5,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 11 | 1 | 0
+ 2 | 2 | 6 | 8 | 1 | 1
+ 3 | 3 | 5 | -1 | 0 | 2
+(3 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ ARRAY[2,11], 5,
+ FALSE
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | -1 | 0 | 1
+ 3 | 1 | 11 | 11 | 12 | 1 | 0
+ 4 | 2 | 11 | 10 | 10 | 1 | 1
+ 5 | 3 | 11 | 5 | -1 | 0 | 2
+(5 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 5 | 1 | 2
+ 4 | 4 | 3 | 3 | -1 | 0 | 3
+ 5 | 1 | 5 | 2 | 4 | 1 | 0
+ 6 | 2 | 5 | 5 | -1 | 0 | 1
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ ARRAY[2, 11], ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 5 | 1 | 2
+ 4 | 4 | 2 | 3 | 3 | -1 | 0 | 3
+ 5 | 1 | 2 | 5 | 2 | 4 | 1 | 0
+ 6 | 2 | 2 | 5 | 5 | -1 | 0 | 1
+ 7 | 1 | 11 | 3 | 11 | 11 | 1 | 0
+ 8 | 2 | 11 | 3 | 6 | 5 | 1 | 1
+ 9 | 3 | 11 | 3 | 3 | -1 | 0 | 2
+ 10 | 1 | 11 | 5 | 11 | 11 | 1 | 0
+ 11 | 2 | 11 | 5 | 6 | 8 | 1 | 1
+ 12 | 3 | 11 | 5 | 5 | -1 | 0 | 2
+(12 rows)
+
+-- q14
+-- q15
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ TRUE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2,3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3],
+ TRUE
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3]
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2], ARRAY[3],
+ TRUE
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2], ARRAY[3]
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+(6 rows)
+
+-- q16
+-- q17
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3],
+ FALSE
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | 3 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2], 3,
+ FALSE
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 2 | 1 | 0
+ 2 | 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2], ARRAY[3],
+ FALSE
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0
+ 2 | 2 | 2 | 3 | 3 | -1 | 0 | 1
+(2 rows)
+
+-- q18
+ROLLBACK;
+ROLLBACK
diff --git a/src/dijkstra/doc/doc-pgr_dijkstraCost.queries b/doc/queries/doc-pgr_dijkstraCost.queries
similarity index 100%
rename from src/dijkstra/doc/doc-pgr_dijkstraCost.queries
rename to doc/queries/doc-pgr_dijkstraCost.queries
diff --git a/src/dijkstra/doc/doc-pgr_dijkstraVia.queries b/doc/queries/doc-pgr_dijkstraVia.queries
similarity index 100%
rename from src/dijkstra/doc/doc-pgr_dijkstraVia.queries
rename to doc/queries/doc-pgr_dijkstraVia.queries
diff --git a/doc/queries/doc-pgr_drivingDistance.queries b/doc/queries/doc-pgr_drivingDistance.queries
new file mode 100644
index 0000000..83759bf
--- /dev/null
+++ b/doc/queries/doc-pgr_drivingDistance.queries
@@ -0,0 +1,312 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+--q1
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 2 | -1 | 0 | 0
+ 2 | 1 | 1 | 1 | 1
+ 3 | 5 | 4 | 1 | 1
+ 4 | 6 | 8 | 1 | 2
+ 5 | 8 | 7 | 1 | 2
+ 6 | 10 | 10 | 1 | 2
+ 7 | 7 | 6 | 1 | 3
+ 8 | 9 | 9 | 1 | 3
+ 9 | 11 | 12 | 1 | 3
+ 10 | 13 | 14 | 1 | 3
+(10 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 13, 3
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 13 | -1 | 0 | 0
+ 2 | 10 | 14 | 1 | 1
+ 3 | 5 | 10 | 1 | 2
+ 4 | 11 | 12 | 1 | 2
+ 5 | 2 | 4 | 1 | 3
+ 6 | 6 | 8 | 1 | 3
+ 7 | 8 | 7 | 1 | 3
+ 8 | 12 | 13 | 1 | 3
+(8 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[2,13], 3
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 5 | 4 | 1 | 1
+ 4 | 2 | 6 | 8 | 1 | 2
+ 5 | 2 | 8 | 7 | 1 | 2
+ 6 | 2 | 10 | 10 | 1 | 2
+ 7 | 2 | 7 | 6 | 1 | 3
+ 8 | 2 | 9 | 9 | 1 | 3
+ 9 | 2 | 11 | 12 | 1 | 3
+ 10 | 2 | 13 | 14 | 1 | 3
+ 11 | 13 | 13 | -1 | 0 | 0
+ 12 | 13 | 10 | 14 | 1 | 1
+ 13 | 13 | 5 | 10 | 1 | 2
+ 14 | 13 | 11 | 12 | 1 | 2
+ 15 | 13 | 2 | 4 | 1 | 3
+ 16 | 13 | 6 | 8 | 1 | 3
+ 17 | 13 | 8 | 7 | 1 | 3
+ 18 | 13 | 12 | 13 | 1 | 3
+(18 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[2,13], 3, equicost:=true
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 5 | 4 | 1 | 1
+ 4 | 2 | 6 | 8 | 1 | 2
+ 5 | 2 | 8 | 7 | 1 | 2
+ 6 | 2 | 7 | 6 | 1 | 3
+ 7 | 2 | 9 | 9 | 1 | 3
+ 8 | 13 | 13 | -1 | 0 | 0
+ 9 | 13 | 10 | 14 | 1 | 1
+ 10 | 13 | 11 | 12 | 1 | 2
+ 11 | 13 | 12 | 13 | 1 | 3
+(11 rows)
+
+--q2
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3, false
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 2 | -1 | 0 | 0
+ 2 | 1 | 1 | 1 | 1
+ 3 | 3 | 2 | 1 | 1
+ 4 | 5 | 4 | 1 | 1
+ 5 | 4 | 3 | 1 | 2
+ 6 | 6 | 8 | 1 | 2
+ 7 | 8 | 7 | 1 | 2
+ 8 | 10 | 10 | 1 | 2
+ 9 | 7 | 6 | 1 | 3
+ 10 | 9 | 16 | 1 | 3
+ 11 | 11 | 12 | 1 | 3
+ 12 | 13 | 14 | 1 | 3
+(12 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 13, 3, false
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 13 | -1 | 0 | 0
+ 2 | 10 | 14 | 1 | 1
+ 3 | 5 | 10 | 1 | 2
+ 4 | 11 | 12 | 1 | 2
+ 5 | 2 | 4 | 1 | 3
+ 6 | 6 | 8 | 1 | 3
+ 7 | 8 | 7 | 1 | 3
+ 8 | 12 | 13 | 1 | 3
+(8 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[2,13], 3, false
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 3 | 2 | 1 | 1
+ 4 | 2 | 5 | 4 | 1 | 1
+ 5 | 2 | 4 | 3 | 1 | 2
+ 6 | 2 | 6 | 8 | 1 | 2
+ 7 | 2 | 8 | 7 | 1 | 2
+ 8 | 2 | 10 | 10 | 1 | 2
+ 9 | 2 | 7 | 6 | 1 | 3
+ 10 | 2 | 9 | 16 | 1 | 3
+ 11 | 2 | 11 | 12 | 1 | 3
+ 12 | 2 | 13 | 14 | 1 | 3
+ 13 | 13 | 13 | -1 | 0 | 0
+ 14 | 13 | 10 | 14 | 1 | 1
+ 15 | 13 | 5 | 10 | 1 | 2
+ 16 | 13 | 11 | 12 | 1 | 2
+ 17 | 13 | 2 | 4 | 1 | 3
+ 18 | 13 | 6 | 8 | 1 | 3
+ 19 | 13 | 8 | 7 | 1 | 3
+ 20 | 13 | 12 | 13 | 1 | 3
+(20 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[2,13], 3, false, equicost:=true
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 3 | 2 | 1 | 1
+ 4 | 2 | 5 | 4 | 1 | 1
+ 5 | 2 | 4 | 3 | 1 | 2
+ 6 | 2 | 6 | 8 | 1 | 2
+ 7 | 2 | 8 | 7 | 1 | 2
+ 8 | 2 | 7 | 6 | 1 | 3
+ 9 | 2 | 9 | 16 | 1 | 3
+ 10 | 13 | 13 | -1 | 0 | 0
+ 11 | 13 | 10 | 14 | 1 | 1
+ 12 | 13 | 11 | 12 | 1 | 2
+ 13 | 13 | 12 | 13 | 1 | 3
+(13 rows)
+
+--q3
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 3
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 2 | -1 | 0 | 0
+ 2 | 5 | 4 | 1 | 1
+ 3 | 6 | 8 | 1 | 2
+ 4 | 10 | 10 | 1 | 2
+ 5 | 9 | 9 | 1 | 3
+ 6 | 11 | 11 | 1 | 3
+ 7 | 13 | 14 | 1 | 3
+(7 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 13, 3
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 13 | -1 | 0 | 0
+(1 row)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ array[2,13], 3
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 5 | 4 | 1 | 1
+ 3 | 2 | 6 | 8 | 1 | 2
+ 4 | 2 | 10 | 10 | 1 | 2
+ 5 | 2 | 9 | 9 | 1 | 3
+ 6 | 2 | 11 | 11 | 1 | 3
+ 7 | 2 | 13 | 14 | 1 | 3
+ 8 | 13 | 13 | -1 | 0 | 0
+(8 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ array[2,13], 3, equicost:=true
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 5 | 4 | 1 | 1
+ 3 | 2 | 6 | 8 | 1 | 2
+ 4 | 2 | 10 | 10 | 1 | 2
+ 5 | 2 | 9 | 9 | 1 | 3
+ 6 | 2 | 11 | 11 | 1 | 3
+ 7 | 13 | 13 | -1 | 0 | 0
+(7 rows)
+
+--q4
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 3, false
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 2 | -1 | 0 | 0
+ 2 | 1 | 1 | 1 | 1
+ 3 | 5 | 4 | 1 | 1
+ 4 | 6 | 8 | 1 | 2
+ 5 | 8 | 7 | 1 | 2
+ 6 | 10 | 10 | 1 | 2
+ 7 | 3 | 5 | 1 | 3
+ 8 | 7 | 6 | 1 | 3
+ 9 | 9 | 9 | 1 | 3
+ 10 | 11 | 12 | 1 | 3
+ 11 | 13 | 14 | 1 | 3
+(11 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 13, 3, false
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 13 | -1 | 0 | 0
+ 2 | 10 | 14 | 1 | 1
+ 3 | 5 | 10 | 1 | 2
+ 4 | 11 | 12 | 1 | 2
+ 5 | 2 | 4 | 1 | 3
+ 6 | 6 | 8 | 1 | 3
+ 7 | 8 | 7 | 1 | 3
+ 8 | 12 | 13 | 1 | 3
+(8 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ array[2,13], 3, false
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 5 | 4 | 1 | 1
+ 4 | 2 | 6 | 8 | 1 | 2
+ 5 | 2 | 8 | 7 | 1 | 2
+ 6 | 2 | 10 | 10 | 1 | 2
+ 7 | 2 | 3 | 5 | 1 | 3
+ 8 | 2 | 7 | 6 | 1 | 3
+ 9 | 2 | 9 | 9 | 1 | 3
+ 10 | 2 | 11 | 12 | 1 | 3
+ 11 | 2 | 13 | 14 | 1 | 3
+ 12 | 13 | 13 | -1 | 0 | 0
+ 13 | 13 | 10 | 14 | 1 | 1
+ 14 | 13 | 5 | 10 | 1 | 2
+ 15 | 13 | 11 | 12 | 1 | 2
+ 16 | 13 | 2 | 4 | 1 | 3
+ 17 | 13 | 6 | 8 | 1 | 3
+ 18 | 13 | 8 | 7 | 1 | 3
+ 19 | 13 | 12 | 13 | 1 | 3
+(19 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ array[2,13], 3, false, equicost:=true
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 5 | 4 | 1 | 1
+ 4 | 2 | 6 | 8 | 1 | 2
+ 5 | 2 | 8 | 7 | 1 | 2
+ 6 | 2 | 3 | 5 | 1 | 3
+ 7 | 2 | 7 | 6 | 1 | 3
+ 8 | 2 | 9 | 9 | 1 | 3
+ 9 | 13 | 13 | -1 | 0 | 0
+ 10 | 13 | 10 | 14 | 1 | 1
+ 11 | 13 | 11 | 12 | 1 | 2
+ 12 | 13 | 12 | 13 | 1 | 3
+(12 rows)
+
+--q5
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_edgeDisjointPaths.queries b/doc/queries/doc-pgr_edgeDisjointPaths.queries
new file mode 100644
index 0000000..be2f812
--- /dev/null
+++ b/doc/queries/doc-pgr_edgeDisjointPaths.queries
@@ -0,0 +1,128 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 3, 5
+);
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 3 | 2 | 1 | 0
+ 2 | 1 | 2 | 2 | 4 | 1 | 1
+ 3 | 1 | 3 | 5 | -1 | 0 | 2
+ 4 | 2 | 1 | 3 | 5 | 1 | 0
+ 5 | 2 | 2 | 6 | 8 | 1 | 1
+ 6 | 2 | 3 | 5 | -1 | 0 | 2
+(6 rows)
+
+-- q2
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 3, 5,
+ directed := false
+);
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 3 | 2 | 1 | 0
+ 2 | 1 | 2 | 2 | 4 | 1 | 1
+ 3 | 1 | 3 | 5 | -1 | 0 | 2
+ 4 | 2 | 1 | 3 | 3 | -1 | 0
+ 5 | 2 | 2 | 4 | 16 | 1 | -1
+ 6 | 2 | 3 | 9 | 9 | 1 | 0
+ 7 | 2 | 4 | 6 | 8 | 1 | 1
+ 8 | 2 | 5 | 5 | -1 | 0 | 2
+ 9 | 3 | 1 | 3 | 5 | 1 | 0
+ 10 | 3 | 2 | 6 | 11 | 1 | 1
+ 11 | 3 | 3 | 11 | 12 | -1 | 2
+ 12 | 3 | 4 | 10 | 10 | 1 | 1
+ 13 | 3 | 5 | 5 | -1 | 0 | 2
+(13 rows)
+
+-- q3
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 3, ARRAY[4, 5, 10]
+);
+ seq | path_id | path_seq | end_vid | node | edge | cost | agg_cost
+-----+---------+----------+---------+------+------+------+----------
+ 1 | 1 | 1 | 4 | 3 | 5 | 1 | 0
+ 2 | 1 | 2 | 4 | 6 | 9 | 1 | 1
+ 3 | 1 | 3 | 4 | 9 | 16 | 1 | 2
+ 4 | 1 | 4 | 4 | 4 | -1 | 0 | 3
+ 5 | 2 | 1 | 5 | 3 | 2 | 1 | 0
+ 6 | 2 | 2 | 5 | 2 | 4 | 1 | 1
+ 7 | 2 | 3 | 5 | 5 | -1 | 0 | 2
+ 8 | 3 | 1 | 5 | 3 | 5 | 1 | 0
+ 9 | 3 | 2 | 5 | 6 | 8 | 1 | 1
+ 10 | 3 | 3 | 5 | 5 | -1 | 0 | 2
+ 11 | 4 | 1 | 10 | 3 | 2 | 1 | 0
+ 12 | 4 | 2 | 10 | 2 | 4 | 1 | 1
+ 13 | 4 | 3 | 10 | 5 | 10 | 1 | 2
+ 14 | 4 | 4 | 10 | 10 | -1 | 0 | 3
+(14 rows)
+
+-- q4
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[3, 6], 5
+);
+ seq | path_id | path_seq | start_vid | node | edge | cost | agg_cost
+-----+---------+----------+-----------+------+------+------+----------
+ 1 | 1 | 1 | 0 | 3 | 2 | 1 | 0
+ 2 | 1 | 2 | 0 | 2 | 4 | 1 | 1
+ 3 | 1 | 3 | 0 | 5 | -1 | 0 | 2
+ 4 | 2 | 1 | 1 | 3 | 5 | 1 | 0
+ 5 | 2 | 2 | 1 | 6 | 8 | 1 | 1
+ 6 | 2 | 3 | 1 | 5 | -1 | 0 | 2
+ 7 | 3 | 1 | 2 | 6 | 8 | 1 | 0
+ 8 | 3 | 2 | 2 | 5 | -1 | 0 | 1
+ 9 | 4 | 1 | 3 | 6 | 9 | 1 | 0
+ 10 | 4 | 2 | 3 | 9 | 16 | 1 | 1
+ 11 | 4 | 3 | 3 | 4 | 3 | 1 | 2
+ 12 | 4 | 4 | 3 | 3 | 2 | 1 | 3
+ 13 | 4 | 5 | 3 | 2 | 4 | 1 | 4
+ 14 | 4 | 6 | 3 | 5 | -1 | 0 | 5
+(14 rows)
+
+-- q5
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[3, 6], ARRAY[4, 5, 10]
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 1 | 0 | 4 | 3 | 5 | 1 | 0
+ 2 | 1 | 2 | 0 | 4 | 6 | 9 | 1 | 1
+ 3 | 1 | 3 | 0 | 4 | 9 | 16 | 1 | 2
+ 4 | 1 | 4 | 0 | 4 | 4 | -1 | 0 | 3
+ 5 | 2 | 1 | 1 | 5 | 3 | 2 | 1 | 0
+ 6 | 2 | 2 | 1 | 5 | 2 | 4 | 1 | 1
+ 7 | 2 | 3 | 1 | 5 | 5 | -1 | 0 | 2
+ 8 | 3 | 1 | 2 | 5 | 3 | 5 | 1 | 0
+ 9 | 3 | 2 | 2 | 5 | 6 | 8 | 1 | 1
+ 10 | 3 | 3 | 2 | 5 | 5 | -1 | 0 | 2
+ 11 | 4 | 1 | 3 | 10 | 3 | 2 | 1 | 0
+ 12 | 4 | 2 | 3 | 10 | 2 | 4 | 1 | 1
+ 13 | 4 | 3 | 3 | 10 | 5 | 10 | 1 | 2
+ 14 | 4 | 4 | 3 | 10 | 10 | -1 | 0 | 3
+ 15 | 5 | 1 | 4 | 4 | 6 | 9 | 1 | 0
+ 16 | 5 | 2 | 4 | 4 | 9 | 16 | 1 | 1
+ 17 | 5 | 3 | 4 | 4 | 4 | -1 | 0 | 2
+ 18 | 6 | 1 | 5 | 5 | 6 | 8 | 1 | 0
+ 19 | 6 | 2 | 5 | 5 | 5 | -1 | 0 | 1
+ 20 | 7 | 1 | 6 | 5 | 6 | 9 | 1 | 0
+ 21 | 7 | 2 | 6 | 5 | 9 | 16 | 1 | 1
+ 22 | 7 | 3 | 6 | 5 | 4 | 3 | 1 | 2
+ 23 | 7 | 4 | 6 | 5 | 3 | 2 | 1 | 3
+ 24 | 7 | 5 | 6 | 5 | 2 | 4 | 1 | 4
+ 25 | 7 | 6 | 6 | 5 | 5 | -1 | 0 | 5
+ 26 | 8 | 1 | 7 | 10 | 6 | 8 | 1 | 0
+ 27 | 8 | 2 | 7 | 10 | 5 | 10 | 1 | 1
+ 28 | 8 | 3 | 7 | 10 | 10 | -1 | 0 | 2
+(28 rows)
+
+-- q6
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_edmondsKarp.queries b/doc/queries/doc-pgr_edmondsKarp.queries
new file mode 100644
index 0000000..c24d3bf
--- /dev/null
+++ b/doc/queries/doc-pgr_edmondsKarp.queries
@@ -0,0 +1,90 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q2
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[1, 3, 11]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 50 | 80
+ 2 | 3 | 4 | 3 | 80 | 50
+ 3 | 4 | 5 | 2 | 50 | 0
+ 4 | 10 | 5 | 10 | 80 | 50
+ 5 | 8 | 6 | 5 | 130 | 0
+ 6 | 9 | 6 | 9 | 80 | 50
+ 7 | 11 | 6 | 11 | 130 | 0
+ 8 | 16 | 9 | 4 | 80 | 0
+ 9 | 12 | 10 | 11 | 80 | 20
+(9 rows)
+
+-- q3
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q4
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 50 | 80
+ 2 | 3 | 4 | 3 | 80 | 50
+ 3 | 4 | 5 | 2 | 50 | 0
+ 4 | 10 | 5 | 10 | 100 | 30
+ 5 | 8 | 6 | 5 | 130 | 0
+ 6 | 9 | 6 | 9 | 80 | 50
+ 7 | 11 | 6 | 11 | 130 | 0
+ 8 | 7 | 8 | 5 | 20 | 30
+ 9 | 16 | 9 | 4 | 80 | 0
+ 10 | 12 | 10 | 11 | 100 | 0
+(10 rows)
+
+-- q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/tsp/doc/doc-pgr_eucledianTSP.queries b/doc/queries/doc-pgr_eucledianTSP.queries
similarity index 100%
rename from src/tsp/doc/doc-pgr_eucledianTSP.queries
rename to doc/queries/doc-pgr_eucledianTSP.queries
diff --git a/doc/queries/doc-pgr_fooDmatrix.queries b/doc/queries/doc-pgr_fooDmatrix.queries
new file mode 100644
index 0000000..7c96952
--- /dev/null
+++ b/doc/queries/doc-pgr_fooDmatrix.queries
@@ -0,0 +1,324 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- dijkstra q1
+SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 6
+ 1 | 4 | 5
+ 2 | 1 | 1
+ 2 | 3 | 5
+ 2 | 4 | 4
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 3
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- dijkstra q2
+SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 2
+ 1 | 4 | 3
+ 2 | 1 | 1
+ 2 | 3 | 1
+ 2 | 4 | 2
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 1
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- dijkstra q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
+-- dijkstra q4
+-- withPoints q1
+SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 6, -6]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ -6 | -1 | 1.3
+ -6 | 3 | 4.3
+ -6 | 6 | 1.3
+ -1 | -6 | 1.3
+ -1 | 3 | 5.6
+ -1 | 6 | 2.6
+ 3 | -6 | 1.7
+ 3 | -1 | 1.6
+ 3 | 6 | 1
+ 6 | -6 | 1.3
+ 6 | -1 | 2.6
+ 6 | 3 | 3
+(12 rows)
+
+-- withPoints q2
+SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 6, -6], directed := false);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ -6 | -1 | 1.3
+ -6 | 3 | 1.7
+ -6 | 6 | 1.3
+ -1 | -6 | 1.3
+ -1 | 3 | 1.6
+ -1 | 6 | 2.6
+ 3 | -6 | 1.7
+ 3 | -1 | 1.6
+ 3 | 6 | 1
+ 6 | -6 | 1.3
+ 6 | -1 | 2.6
+ 6 | 3 | 1
+(12 rows)
+
+-- withPoints q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 6, -6], directed := false);
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | -6 | 1.3 | 0
+ 2 | -1 | 1.6 | 1.3
+ 3 | 3 | 1 | 2.9
+ 4 | 6 | 1.3 | 3.9
+ 5 | -6 | 0 | 5.2
+(5 rows)
+
+-- withPoints q4
+-- astar q1
+SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 1 | 1
+ 3 | 1 | 2
+ 4 | 1 | 3
+ 1 | 2 | 1
+ 3 | 2 | 1
+ 4 | 2 | 2
+ 1 | 3 | 6
+ 2 | 3 | 5
+ 4 | 3 | 1
+ 1 | 4 | 5
+ 2 | 4 | 4
+ 3 | 4 | 3
+(12 rows)
+
+-- astar q2
+SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ directed := false, heuristic := 2
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 1 | 1
+ 3 | 1 | 2
+ 4 | 1 | 3
+ 1 | 2 | 1
+ 3 | 2 | 1
+ 4 | 2 | 2
+ 1 | 3 | 2
+ 2 | 3 | 1
+ 4 | 3 | 1
+ 1 | 4 | 3
+ 2 | 4 | 2
+ 3 | 4 | 1
+(12 rows)
+
+-- astar q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ directed:= false, heuristic := 2
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
+-- astar q4
+-- bdDijkstra q1
+SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 6
+ 1 | 4 | 5
+ 2 | 1 | 1
+ 2 | 3 | 5
+ 2 | 4 | 4
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 3
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdDijkstra q2
+SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 2
+ 1 | 4 | 3
+ 2 | 1 | 1
+ 2 | 3 | 1
+ 2 | 4 | 2
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 1
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdDijkstra q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
+-- bdDijkstra q4
+-- bdAstar q1
+SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 6
+ 1 | 4 | 5
+ 2 | 1 | 1
+ 2 | 3 | 5
+ 2 | 4 | 4
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 3
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdAstar q2
+SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 2
+ 1 | 4 | 3
+ 2 | 1 | 1
+ 2 | 3 | 1
+ 2 | 4 | 2
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 1
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdAstar q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
+-- bdAstar q4
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_labelGraph.queries b/doc/queries/doc-pgr_labelGraph.queries
new file mode 100644
index 0000000..34f18d2
--- /dev/null
+++ b/doc/queries/doc-pgr_labelGraph.queries
@@ -0,0 +1,24 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+--q1
+SET client_min_messages TO WARNING;
+SET
+SELECT pgr_labelGraph('edge_table', 'id', 'source', 'target', 'subgraph');
+ pgr_labelgraph
+----------------
+ OK
+(1 row)
+
+SELECT DISTINCT subgraph FROM edge_table ORDER BY subgraph;
+ subgraph
+----------
+ 1
+ 2
+ 3
+(3 rows)
+
+--q2
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_lineGraph.queries b/doc/queries/doc-pgr_lineGraph.queries
new file mode 100644
index 0000000..d6744bd
--- /dev/null
+++ b/doc/queries/doc-pgr_lineGraph.queries
@@ -0,0 +1,210 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_lineGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | source | target | cost | reverse_cost
+-----+--------+--------+------+--------------
+ 1 | -16 | -3 | 1 | -1
+ 2 | -15 | -9 | 1 | 1
+ 3 | -14 | -10 | 1 | 1
+ 4 | -14 | 12 | 1 | -1
+ 5 | -10 | -7 | 1 | 1
+ 6 | -10 | -4 | 1 | 1
+ 7 | -10 | 8 | 1 | 1
+ 8 | -9 | -8 | 1 | 1
+ 9 | -9 | 11 | 1 | -1
+ 10 | -8 | -7 | 1 | 1
+ 11 | -8 | -4 | 1 | 1
+ 12 | -7 | -6 | 1 | 1
+ 13 | -4 | -1 | 1 | 1
+ 14 | -3 | -2 | 1 | -1
+ 15 | -3 | 5 | 1 | -1
+ 16 | -2 | -1 | 1 | -1
+ 17 | -2 | 4 | 1 | -1
+ 18 | 5 | -8 | 1 | -1
+ 19 | 5 | 9 | 1 | -1
+ 20 | 5 | 11 | 1 | -1
+ 21 | 7 | -4 | 1 | 1
+ 22 | 8 | 11 | 1 | -1
+ 23 | 10 | 12 | 1 | -1
+ 24 | 11 | 13 | 1 | -1
+ 25 | 12 | 13 | 1 | -1
+ 26 | 13 | -15 | 1 | -1
+ 27 | 16 | -9 | 1 | 1
+ 28 | 16 | 15 | 1 | 1
+(28 rows)
+
+-- q2
+SELECT * FROM pgr_lineGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ FALSE
+);
+ seq | source | target | cost | reverse_cost
+-----+--------+--------+------+--------------
+ 1 | -2 | -1 | 1 | -1
+ 2 | -4 | -1 | 1 | -1
+ 3 | 4 | -1 | 1 | -1
+ 4 | 1 | 4 | 1 | -1
+ 5 | -2 | 4 | 1 | -1
+ 6 | -1 | 4 | 1 | -1
+ 7 | -2 | 1 | 1 | -1
+ 8 | -4 | 1 | 1 | -1
+ 9 | 4 | 1 | 1 | -1
+ 10 | 1 | -2 | 1 | -1
+ 11 | -4 | -2 | 1 | -1
+ 12 | -1 | -2 | 1 | -1
+ 13 | 4 | -2 | 1 | -1
+ 14 | 1 | -4 | 1 | -1
+ 15 | -2 | -4 | 1 | -1
+ 16 | -1 | -4 | 1 | -1
+ 17 | -3 | -2 | 1 | -1
+ 18 | 5 | -2 | 1 | -1
+ 19 | -3 | 5 | 1 | -1
+ 20 | -2 | 5 | 1 | -1
+ 21 | -2 | -3 | 1 | -1
+ 22 | 5 | -3 | 1 | -1
+ 23 | -16 | -3 | 1 | -1
+ 24 | 16 | -3 | 1 | -1
+ 25 | -3 | 16 | 1 | -1
+ 26 | -3 | -16 | 1 | -1
+ 27 | 7 | -4 | 1 | -1
+ 28 | -8 | -4 | 1 | -1
+ 29 | -10 | -4 | 1 | -1
+ 30 | -7 | -4 | 1 | -1
+ 31 | 8 | -4 | 1 | -1
+ 32 | 10 | -4 | 1 | -1
+ 33 | 4 | -7 | 1 | -1
+ 34 | -8 | -7 | 1 | -1
+ 35 | -10 | -7 | 1 | -1
+ 36 | -4 | -7 | 1 | -1
+ 37 | 8 | -7 | 1 | -1
+ 38 | 10 | -7 | 1 | -1
+ 39 | 4 | 8 | 1 | -1
+ 40 | 7 | 8 | 1 | -1
+ 41 | -10 | 8 | 1 | -1
+ 42 | -4 | 8 | 1 | -1
+ 43 | -7 | 8 | 1 | -1
+ 44 | 10 | 8 | 1 | -1
+ 45 | 4 | 10 | 1 | -1
+ 46 | 7 | 10 | 1 | -1
+ 47 | -8 | 10 | 1 | -1
+ 48 | -4 | 10 | 1 | -1
+ 49 | -7 | 10 | 1 | -1
+ 50 | 8 | 10 | 1 | -1
+ 51 | 7 | 4 | 1 | -1
+ 52 | -8 | 4 | 1 | -1
+ 53 | -10 | 4 | 1 | -1
+ 54 | -7 | 4 | 1 | -1
+ 55 | 8 | 4 | 1 | -1
+ 56 | 10 | 4 | 1 | -1
+ 57 | 4 | 7 | 1 | -1
+ 58 | -8 | 7 | 1 | -1
+ 59 | -10 | 7 | 1 | -1
+ 60 | -4 | 7 | 1 | -1
+ 61 | 8 | 7 | 1 | -1
+ 62 | 10 | 7 | 1 | -1
+ 63 | 4 | -8 | 1 | -1
+ 64 | 7 | -8 | 1 | -1
+ 65 | -10 | -8 | 1 | -1
+ 66 | -4 | -8 | 1 | -1
+ 67 | -7 | -8 | 1 | -1
+ 68 | 10 | -8 | 1 | -1
+ 69 | 4 | -10 | 1 | -1
+ 70 | 7 | -10 | 1 | -1
+ 71 | -8 | -10 | 1 | -1
+ 72 | -4 | -10 | 1 | -1
+ 73 | -7 | -10 | 1 | -1
+ 74 | 8 | -10 | 1 | -1
+ 75 | 5 | -8 | 1 | -1
+ 76 | -9 | -8 | 1 | -1
+ 77 | 9 | -8 | 1 | -1
+ 78 | 11 | -8 | 1 | -1
+ 79 | 5 | 9 | 1 | -1
+ 80 | 8 | 9 | 1 | -1
+ 81 | -8 | 9 | 1 | -1
+ 82 | 11 | 9 | 1 | -1
+ 83 | 5 | 11 | 1 | -1
+ 84 | 8 | 11 | 1 | -1
+ 85 | -9 | 11 | 1 | -1
+ 86 | -8 | 11 | 1 | -1
+ 87 | 9 | 11 | 1 | -1
+ 88 | 8 | 5 | 1 | -1
+ 89 | -9 | 5 | 1 | -1
+ 90 | -8 | 5 | 1 | -1
+ 91 | 9 | 5 | 1 | -1
+ 92 | 11 | 5 | 1 | -1
+ 93 | 5 | 8 | 1 | -1
+ 94 | -9 | 8 | 1 | -1
+ 95 | 9 | 8 | 1 | -1
+ 96 | 11 | 8 | 1 | -1
+ 97 | 5 | -9 | 1 | -1
+ 98 | 8 | -9 | 1 | -1
+ 99 | -8 | -9 | 1 | -1
+ 100 | 11 | -9 | 1 | -1
+ 101 | -7 | -6 | 1 | -1
+ 102 | 7 | -6 | 1 | -1
+ 103 | 6 | 7 | 1 | -1
+ 104 | -6 | 7 | 1 | -1
+ 105 | -7 | 6 | 1 | -1
+ 106 | 7 | 6 | 1 | -1
+ 107 | 6 | -7 | 1 | -1
+ 108 | -6 | -7 | 1 | -1
+ 109 | -15 | -9 | 1 | -1
+ 110 | 16 | -9 | 1 | -1
+ 111 | 15 | -9 | 1 | -1
+ 112 | -16 | -9 | 1 | -1
+ 113 | 9 | 15 | 1 | -1
+ 114 | 16 | 15 | 1 | -1
+ 115 | -9 | 15 | 1 | -1
+ 116 | -16 | 15 | 1 | -1
+ 117 | 9 | -16 | 1 | -1
+ 118 | -15 | -16 | 1 | -1
+ 119 | -9 | -16 | 1 | -1
+ 120 | 15 | -16 | 1 | -1
+ 121 | -15 | 9 | 1 | -1
+ 122 | 16 | 9 | 1 | -1
+ 123 | 15 | 9 | 1 | -1
+ 124 | -16 | 9 | 1 | -1
+ 125 | 9 | -15 | 1 | -1
+ 126 | 16 | -15 | 1 | -1
+ 127 | -9 | -15 | 1 | -1
+ 128 | -16 | -15 | 1 | -1
+ 129 | 9 | 16 | 1 | -1
+ 130 | -15 | 16 | 1 | -1
+ 131 | -9 | 16 | 1 | -1
+ 132 | 15 | 16 | 1 | -1
+ 133 | -14 | -10 | 1 | -1
+ 134 | 12 | -10 | 1 | -1
+ 135 | 14 | -10 | 1 | -1
+ 136 | 10 | 12 | 1 | -1
+ 137 | -14 | 12 | 1 | -1
+ 138 | -10 | 12 | 1 | -1
+ 139 | 14 | 12 | 1 | -1
+ 140 | 10 | 14 | 1 | -1
+ 141 | -10 | 14 | 1 | -1
+ 142 | 12 | 14 | 1 | -1
+ 143 | -14 | 10 | 1 | -1
+ 144 | 12 | 10 | 1 | -1
+ 145 | 14 | 10 | 1 | -1
+ 146 | 10 | -14 | 1 | -1
+ 147 | -10 | -14 | 1 | -1
+ 148 | 12 | -14 | 1 | -1
+ 149 | 11 | 13 | 1 | -1
+ 150 | 12 | 13 | 1 | -1
+ 151 | 12 | 11 | 1 | -1
+ 152 | 13 | 11 | 1 | -1
+ 153 | 11 | 12 | 1 | -1
+ 154 | 13 | 12 | 1 | -1
+ 155 | 13 | -15 | 1 | -1
+ 156 | 15 | 13 | 1 | -1
+ 157 | -15 | 13 | 1 | -1
+ 158 | 13 | 15 | 1 | -1
+(158 rows)
+
+-- q3
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_maxCardinalityMatch.queries b/doc/queries/doc-pgr_maxCardinalityMatch.queries
new file mode 100644
index 0000000..feb0660
--- /dev/null
+++ b/doc/queries/doc-pgr_maxCardinalityMatch.queries
@@ -0,0 +1,40 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_maxCardinalityMatch(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
+);
+ seq | edge | source | target
+-----+------+--------+--------
+ 1 | 1 | 1 | 2
+ 2 | 3 | 4 | 3
+ 3 | 9 | 6 | 9
+ 4 | 6 | 7 | 8
+ 5 | 14 | 10 | 13
+ 6 | 13 | 11 | 12
+ 7 | 17 | 14 | 15
+ 8 | 18 | 16 | 17
+(8 rows)
+
+-- q2
+SELECT * FROM pgr_maxCardinalityMatch(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
+ directed := false
+);
+ seq | edge | source | target
+-----+------+--------+--------
+ 1 | 1 | 1 | 2
+ 2 | 3 | 3 | 4
+ 3 | 9 | 6 | 9
+ 4 | 6 | 7 | 8
+ 5 | 14 | 10 | 13
+ 6 | 13 | 11 | 12
+ 7 | 17 | 14 | 15
+ 8 | 18 | 16 | 17
+(8 rows)
+
+-- q3
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_maxFlow.queries b/doc/queries/doc-pgr_maxFlow.queries
new file mode 100644
index 0000000..aadd1fb
--- /dev/null
+++ b/doc/queries/doc-pgr_maxFlow.queries
@@ -0,0 +1,67 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_maxFlow(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+ pgr_maxflow
+-------------
+ 230
+(1 row)
+
+-- q2
+SELECT * FROM pgr_maxFlow(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[11, 1, 13]
+);
+ pgr_maxflow
+-------------
+ 340
+(1 row)
+
+-- q3
+SELECT * FROM pgr_maxFlow(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+ pgr_maxflow
+-------------
+ 230
+(1 row)
+
+-- q4
+SELECT * FROM pgr_maxFlow(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+ pgr_maxflow
+-------------
+ 360
+(1 row)
+
+-- q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/alpha_shape/doc/doc-pgr_pointsAsPolygon.queries b/doc/queries/doc-pgr_pointsAsPolygon.queries
similarity index 100%
rename from src/alpha_shape/doc/doc-pgr_pointsAsPolygon.queries
rename to doc/queries/doc-pgr_pointsAsPolygon.queries
diff --git a/doc/queries/doc-pgr_pushRelabel.queries b/doc/queries/doc-pgr_pushRelabel.queries
new file mode 100644
index 0000000..65969cb
--- /dev/null
+++ b/doc/queries/doc-pgr_pushRelabel.queries
@@ -0,0 +1,96 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q2
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[11, 1, 13]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 130 | 0
+ 2 | 2 | 3 | 2 | 80 | 20
+ 3 | 3 | 4 | 3 | 80 | 50
+ 4 | 4 | 5 | 2 | 50 | 0
+ 5 | 7 | 5 | 8 | 50 | 80
+ 6 | 10 | 5 | 10 | 80 | 50
+ 7 | 8 | 6 | 5 | 130 | 0
+ 8 | 9 | 6 | 9 | 80 | 50
+ 9 | 11 | 6 | 11 | 130 | 0
+ 10 | 6 | 7 | 8 | 50 | 0
+ 11 | 6 | 8 | 7 | 50 | 50
+ 12 | 7 | 8 | 5 | 50 | 0
+ 13 | 16 | 9 | 4 | 80 | 0
+ 14 | 12 | 10 | 11 | 80 | 20
+(14 rows)
+
+-- q3
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q4
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 50 | 80
+ 2 | 3 | 4 | 3 | 80 | 50
+ 3 | 4 | 5 | 2 | 50 | 0
+ 4 | 10 | 5 | 10 | 100 | 30
+ 5 | 8 | 6 | 5 | 130 | 0
+ 6 | 9 | 6 | 9 | 30 | 100
+ 7 | 11 | 6 | 11 | 130 | 0
+ 8 | 7 | 8 | 5 | 20 | 30
+ 9 | 16 | 9 | 4 | 80 | 0
+ 10 | 12 | 10 | 11 | 100 | 0
+ 11 | 15 | 12 | 9 | 50 | 0
+(11 rows)
+
+-- q5
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_strongComponents.queries b/doc/queries/doc-pgr_strongComponents.queries
new file mode 100644
index 0000000..ad97903
--- /dev/null
+++ b/doc/queries/doc-pgr_strongComponents.queries
@@ -0,0 +1,56 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_strongComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | node
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 2
+ 3 | 1 | 3 | 3
+ 4 | 1 | 4 | 4
+ 5 | 1 | 5 | 5
+ 6 | 1 | 6 | 6
+ 7 | 1 | 7 | 7
+ 8 | 1 | 8 | 8
+ 9 | 1 | 9 | 9
+ 10 | 1 | 10 | 10
+ 11 | 1 | 11 | 11
+ 12 | 1 | 12 | 12
+ 13 | 1 | 13 | 13
+ 14 | 14 | 1 | 14
+ 15 | 14 | 2 | 15
+ 16 | 16 | 1 | 16
+ 17 | 16 | 2 | 17
+(17 rows)
+
+-- q2
+SELECT * FROM pgr_strongComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | node
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 2
+ 3 | 1 | 3 | 3
+ 4 | 1 | 4 | 4
+ 5 | 1 | 5 | 5
+ 6 | 1 | 6 | 6
+ 7 | 1 | 7 | 7
+ 8 | 1 | 8 | 8
+ 9 | 1 | 9 | 9
+ 10 | 1 | 10 | 10
+ 11 | 1 | 11 | 11
+ 12 | 1 | 12 | 12
+ 13 | 1 | 13 | 13
+ 14 | 14 | 1 | 14
+ 15 | 14 | 2 | 15
+ 16 | 16 | 1 | 16
+ 17 | 16 | 2 | 17
+(17 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_version.queries b/doc/queries/doc-pgr_version.queries
new file mode 100644
index 0000000..aec10c6
--- /dev/null
+++ b/doc/queries/doc-pgr_version.queries
@@ -0,0 +1,14 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT version FROM pgr_version();
+ version
+---------
+ 2.5.0
+(1 row)
+
+-- q2
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pgr_vrpOneDepot.queries b/doc/queries/doc-pgr_vrpOneDepot.queries
new file mode 100644
index 0000000..2631800
--- /dev/null
+++ b/doc/queries/doc-pgr_vrpOneDepot.queries
@@ -0,0 +1,256 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT * FROM pgr_vrpOneDepot(
+ 'SELECT * FROM vrp_orders',
+ 'SELECT * FROM vrp_vehicles',
+ 'SELECT * FROM vrp_distance',
+ 1);
+ oid | opos | vid | tarrival | tdepart
+-----+------+-----+----------+---------
+ -1 | 1 | 5 | 0 | 0
+ 66 | 2 | 5 | 0 | 0
+ 25 | 3 | 5 | 0 | 0
+ 21 | 4 | 5 | 0 | 0
+ 84 | 5 | 5 | 0 | 0
+ 50 | 6 | 5 | 0 | 0
+ 49 | 7 | 5 | 0 | 0
+ 24 | 8 | 5 | 0 | 0
+ 22 | 9 | 5 | 0 | 0
+ 20 | 10 | 5 | 0 | 0
+ 19 | 11 | 5 | 0 | 0
+ 66 | 12 | 5 | 11 | 21
+ 84 | 13 | 5 | 30 | 45
+ 24 | 14 | 5 | 71 | 81
+ 22 | 15 | 5 | 83 | 93
+ 20 | 16 | 5 | 98 | 108
+ 19 | 17 | 5 | 114 | 124
+ 50 | 18 | 5 | 131 | 141
+ 21 | 19 | 5 | 144 | 154
+ 25 | 20 | 5 | 158 | 168
+ 49 | 21 | 5 | 179 | 189
+ -1 | 22 | 5 | 234 | 234
+ -1 | 1 | 6 | 0 | 0
+ 31 | 2 | 6 | 0 | 0
+ 32 | 3 | 6 | 0 | 0
+ 81 | 4 | 6 | 0 | 0
+ 94 | 5 | 6 | 0 | 0
+ 93 | 6 | 6 | 0 | 0
+ 35 | 7 | 6 | 0 | 0
+ 33 | 8 | 6 | 0 | 0
+ 28 | 9 | 6 | 0 | 0
+ 27 | 10 | 6 | 0 | 0
+ 93 | 11 | 6 | 15 | 25
+ 32 | 12 | 6 | 61 | 71
+ 28 | 13 | 6 | 78 | 88
+ 31 | 14 | 6 | 97 | 107
+ 35 | 15 | 6 | 112 | 122
+ 27 | 16 | 6 | 134 | 144
+ 33 | 17 | 6 | 152 | 162
+ 94 | 18 | 6 | 196 | 206
+ 81 | 19 | 6 | 221 | 231
+ -1 | 20 | 6 | 238 | 238
+ -1 | 1 | 3 | 0 | 0
+ 16 | 2 | 3 | 0 | 0
+ 14 | 3 | 3 | 0 | 0
+ 48 | 4 | 3 | 0 | 0
+ 18 | 5 | 3 | 0 | 0
+ 17 | 6 | 3 | 0 | 0
+ 15 | 7 | 3 | 0 | 0
+ 13 | 8 | 3 | 0 | 0
+ 11 | 9 | 3 | 0 | 0
+ 10 | 10 | 3 | 0 | 0
+ 15 | 11 | 3 | 35 | 45
+ 48 | 12 | 3 | 48 | 58
+ 13 | 13 | 3 | 64 | 74
+ 16 | 14 | 3 | 82 | 92
+ 17 | 15 | 3 | 94 | 104
+ 10 | 16 | 3 | 115 | 125
+ 11 | 17 | 3 | 130 | 140
+ 14 | 18 | 3 | 147 | 157
+ 18 | 19 | 3 | 169 | 179
+ -1 | 20 | 3 | 219 | 219
+ -1 | 1 | 8 | 0 | 0
+ 71 | 2 | 8 | 0 | 0
+ 55 | 3 | 8 | 0 | 0
+ 44 | 4 | 8 | 0 | 0
+ 43 | 5 | 8 | 0 | 0
+ 42 | 6 | 8 | 0 | 0
+ 41 | 7 | 8 | 0 | 0
+ 40 | 8 | 8 | 0 | 0
+ 39 | 9 | 8 | 0 | 0
+ 43 | 10 | 8 | 34 | 44
+ 40 | 11 | 8 | 49 | 59
+ 39 | 12 | 8 | 61 | 85
+ 41 | 13 | 8 | 90 | 100
+ 42 | 14 | 8 | 111 | 121
+ 44 | 15 | 8 | 131 | 141
+ 55 | 16 | 8 | 166 | 176
+ 71 | 17 | 8 | 198 | 208
+ -1 | 18 | 8 | 228 | 228
+ -1 | 1 | 1 | 0 | 0
+ 4 | 2 | 1 | 0 | 0
+ 101 | 3 | 1 | 0 | 0
+ 46 | 4 | 1 | 0 | 0
+ 5 | 5 | 1 | 0 | 0
+ 3 | 6 | 1 | 0 | 0
+ 46 | 7 | 1 | 38 | 48
+ 3 | 8 | 1 | 55 | 65
+ 2 | 9 | 1 | 96 | 96
+ 4 | 10 | 1 | 135 | 145
+ 2 | 11 | 1 | 148 | 158
+ 5 | 12 | 1 | 165 | 175
+ 101 | 13 | 1 | 192 | 202
+ -1 | 14 | 1 | 222 | 222
+ -1 | 1 | 13 | 0 | 0
+ 92 | 2 | 13 | 0 | 0
+ 52 | 3 | 13 | 0 | 0
+ 57 | 4 | 13 | 0 | 0
+ 85 | 5 | 13 | 0 | 0
+ 68 | 6 | 13 | 0 | 0
+ 63 | 7 | 13 | 0 | 0
+ 63 | 8 | 13 | 29 | 62
+ 68 | 9 | 13 | 69 | 80
+ 52 | 10 | 13 | 104 | 114
+ 85 | 11 | 13 | 123 | 133
+ 57 | 12 | 13 | 142 | 152
+ 92 | 13 | 13 | 159 | 177
+ -1 | 14 | 13 | 189 | 189
+ -1 | 1 | 7 | 0 | 0
+ 30 | 2 | 7 | 0 | 0
+ 29 | 3 | 7 | 0 | 0
+ 38 | 4 | 7 | 0 | 0
+ 36 | 5 | 7 | 0 | 0
+ 34 | 6 | 7 | 0 | 0
+ 34 | 7 | 7 | 51 | 61
+ 29 | 8 | 7 | 70 | 80
+ 30 | 9 | 7 | 85 | 95
+ 38 | 10 | 7 | 149 | 159
+ 36 | 11 | 7 | 162 | 172
+ -1 | 12 | 7 | 217 | 217
+ -1 | 1 | 2 | 0 | 0
+ 89 | 2 | 2 | 0 | 0
+ 47 | 3 | 2 | 0 | 0
+ 61 | 4 | 2 | 0 | 0
+ 9 | 5 | 2 | 0 | 0
+ 8 | 6 | 2 | 0 | 0
+ 89 | 7 | 2 | 18 | 77
+ 8 | 8 | 2 | 96 | 106
+ 9 | 9 | 2 | 111 | 121
+ 47 | 10 | 2 | 124 | 134
+ 61 | 11 | 2 | 154 | 165
+ -1 | 12 | 2 | 192 | 192
+ -1 | 1 | 14 | 0 | 0
+ 97 | 2 | 14 | 0 | 0
+ 64 | 3 | 14 | 0 | 0
+ 51 | 4 | 14 | 0 | 0
+ 96 | 5 | 14 | 0 | 0
+ 77 | 6 | 14 | 0 | 0
+ 96 | 7 | 14 | 21 | 44
+ 64 | 8 | 14 | 63 | 73
+ 77 | 9 | 14 | 83 | 93
+ 51 | 10 | 14 | 119 | 129
+ 97 | 11 | 14 | 154 | 164
+ -1 | 12 | 14 | 180 | 180
+ -1 | 1 | 15 | 0 | 0
+ 67 | 2 | 15 | 0 | 0
+ 73 | 3 | 15 | 0 | 0
+ 95 | 4 | 15 | 0 | 0
+ 82 | 5 | 15 | 0 | 0
+ 72 | 6 | 15 | 0 | 0
+ 73 | 7 | 15 | 27 | 40
+ 72 | 8 | 15 | 50 | 75
+ 82 | 9 | 15 | 91 | 101
+ 95 | 10 | 15 | 114 | 124
+ 67 | 11 | 15 | 144 | 154
+ -1 | 12 | 15 | 167 | 167
+ -1 | 1 | 11 | 0 | 0
+ 78 | 2 | 11 | 0 | 0
+ 26 | 3 | 11 | 0 | 0
+ 87 | 4 | 11 | 0 | 0
+ 23 | 5 | 11 | 0 | 0
+ 87 | 6 | 11 | 32 | 97
+ 23 | 7 | 11 | 118 | 128
+ 78 | 8 | 11 | 149 | 160
+ 26 | 9 | 11 | 172 | 182
+ -1 | 10 | 11 | 227 | 227
+ -1 | 1 | 4 | 0 | 0
+ 60 | 2 | 4 | 0 | 0
+ 59 | 3 | 4 | 0 | 0
+ 100 | 4 | 4 | 0 | 0
+ 54 | 5 | 4 | 0 | 0
+ 60 | 6 | 4 | 42 | 52
+ 100 | 7 | 4 | 74 | 87
+ 54 | 8 | 4 | 103 | 113
+ 59 | 9 | 4 | 153 | 163
+ -1 | 10 | 4 | 211 | 211
+ -1 | 1 | 10 | 0 | 0
+ 86 | 2 | 10 | 0 | 0
+ 90 | 3 | 10 | 0 | 0
+ 65 | 4 | 10 | 0 | 0
+ 53 | 5 | 10 | 0 | 0
+ 53 | 6 | 10 | 25 | 62
+ 65 | 7 | 10 | 82 | 92
+ 86 | 8 | 10 | 111 | 121
+ 90 | 9 | 10 | 140 | 154
+ -1 | 10 | 10 | 206 | 206
+ -1 | 1 | 12 | 0 | 0
+ 6 | 2 | 12 | 0 | 0
+ 80 | 3 | 12 | 0 | 0
+ 7 | 4 | 12 | 0 | 0
+ 56 | 5 | 12 | 0 | 0
+ 6 | 6 | 12 | 40 | 51
+ 80 | 7 | 12 | 73 | 99
+ 7 | 8 | 12 | 113 | 123
+ 56 | 9 | 12 | 142 | 152
+ -1 | 10 | 12 | 166 | 166
+ -1 | 1 | 19 | 0 | 0
+ 88 | 2 | 19 | 0 | 0
+ 70 | 3 | 19 | 0 | 0
+ 58 | 4 | 19 | 0 | 0
+ 99 | 5 | 19 | 0 | 0
+ 70 | 6 | 19 | 9 | 51
+ 99 | 7 | 19 | 56 | 66
+ 88 | 8 | 19 | 97 | 107
+ 58 | 9 | 19 | 125 | 135
+ -1 | 10 | 19 | 162 | 162
+ -1 | 1 | 17 | 0 | 0
+ 75 | 2 | 17 | 0 | 0
+ 98 | 3 | 17 | 0 | 0
+ 76 | 4 | 17 | 0 | 0
+ 76 | 5 | 17 | 57 | 84
+ 98 | 6 | 17 | 97 | 130
+ 75 | 7 | 17 | 146 | 156
+ -1 | 8 | 17 | 192 | 192
+ -1 | 1 | 16 | 0 | 0
+ 69 | 2 | 16 | 0 | 0
+ 79 | 3 | 16 | 0 | 0
+ 74 | 4 | 16 | 0 | 0
+ 74 | 5 | 16 | 39 | 87
+ 79 | 6 | 16 | 94 | 104
+ 69 | 7 | 16 | 136 | 154
+ -1 | 8 | 16 | 164 | 164
+ -1 | 1 | 9 | 0 | 0
+ 62 | 2 | 9 | 0 | 0
+ 37 | 3 | 9 | 0 | 0
+ 45 | 4 | 9 | 0 | 0
+ 37 | 5 | 9 | 43 | 53
+ 45 | 6 | 9 | 63 | 74
+ 62 | 7 | 9 | 94 | 104
+ -1 | 8 | 9 | 120 | 120
+ -1 | 1 | 18 | 0 | 0
+ 91 | 2 | 18 | 0 | 0
+ 12 | 3 | 18 | 0 | 0
+ 12 | 4 | 18 | 34 | 69
+ 91 | 5 | 18 | 99 | 109
+ -1 | 6 | 18 | 113 | 113
+ -1 | 1 | 20 | 0 | 0
+ 83 | 2 | 20 | 0 | 0
+ 83 | 3 | 20 | 15 | 52
+ -1 | 4 | 20 | 67 | 67
+ -1 | 0 | 0 | -1 | 3712
+(241 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/withPoints/doc/doc-pgr_withPoints.queries b/doc/queries/doc-pgr_withPoints.queries
similarity index 100%
rename from src/withPoints/doc/doc-pgr_withPoints.queries
rename to doc/queries/doc-pgr_withPoints.queries
diff --git a/src/withPoints/doc/doc-pgr_withPointsCost.queries b/doc/queries/doc-pgr_withPointsCost.queries
similarity index 100%
rename from src/withPoints/doc/doc-pgr_withPointsCost.queries
rename to doc/queries/doc-pgr_withPointsCost.queries
diff --git a/src/withPoints/doc/doc-pgr_withPointsDD.queries b/doc/queries/doc-pgr_withPointsDD.queries
similarity index 100%
rename from src/withPoints/doc/doc-pgr_withPointsDD.queries
rename to doc/queries/doc-pgr_withPointsDD.queries
diff --git a/src/withPoints/doc/doc-pgr_withPointsKSP.queries b/doc/queries/doc-pgr_withPointsKSP.queries
similarity index 100%
rename from src/withPoints/doc/doc-pgr_withPointsKSP.queries
rename to doc/queries/doc-pgr_withPointsKSP.queries
diff --git a/doc/queries/doc-pgr_withPointsVia.queries b/doc/queries/doc-pgr_withPointsVia.queries
new file mode 100644
index 0000000..4e234b8
--- /dev/null
+++ b/doc/queries/doc-pgr_withPointsVia.queries
@@ -0,0 +1,40 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+--q1
+SELECT * FROM pgr_withPointsVia(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[1,3,5]);
+ERROR: function pgr_withpointsvia(unknown, unknown, integer[]) does not exist
+LINE 1: SELECT * FROM pgr_withPointsVia(
+ ^
+HINT: No function matches the given name and argument types. You might need to add explicit type casts.
+--q2
+SELECT * FROM pgr_withPointsDD(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ 3, 3.0,
+ driving_side := 'r',
+ details := true);
+ERROR: current transaction is aborted, commands ignored until end of transaction block
+--q3
+SELECT * FROM pgr_withPointsDD(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ 3, 3.0,
+ driving_side := 'l',
+ details := true);
+ERROR: current transaction is aborted, commands ignored until end of transaction block
+--q4
+SELECT * FROM pgr_withPointsDD(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ 3, 3.0,
+ driving_side := 'b',
+ details := true);
+ERROR: current transaction is aborted, commands ignored until end of transaction block
+--q5
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pickDeliver.queries b/doc/queries/doc-pickDeliver.queries
new file mode 100644
index 0000000..b5b2096
--- /dev/null
+++ b/doc/queries/doc-pickDeliver.queries
@@ -0,0 +1,61 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+--q1
+SELECT * FROM _pgr_pickDeliver(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * from vehicles',
+
+ 'WITH
+ A AS (
+ SELECT p_node_id AS id, p_x AS x, p_y AS y FROM orders
+ UNION
+ SELECT d_node_id AS id, d_x, d_y FROM orders
+ UNION
+ SELECT start_node_id, start_x, start_y FROM vehicles
+ )
+ SELECT A.id AS start_vid, B.id AS end_vid, sqrt( (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)) AS agg_cost
+ FROM A, A AS B WHERE A.id != B.id'
+ );
+ seq | vehicle_seq | vehicle_id | stop_seq | stop_type | stop_id | order_id | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+-------------+------------+----------+-----------+---------+----------+-------+------------------+------------------+-----------+--------------+------------------
+ 1 | 1 | 1 | 1 | 1 | 6 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 1 | 2 | 2 | 5 | 3 | 30 | 1 | 1 | 1 | 3 | 5
+ 3 | 1 | 1 | 3 | 3 | 11 | 3 | 0 | 1.4142135623731 | 6.41421356237309 | 0 | 3 | 9.4142135623731
+ 4 | 1 | 1 | 4 | 2 | 9 | 2 | 20 | 1.4142135623731 | 10.8284271247462 | 0 | 2 | 12.8284271247462
+ 5 | 1 | 1 | 5 | 3 | 4 | 2 | 0 | 1 | 13.8284271247462 | 0 | 3 | 16.8284271247462
+ 6 | 1 | 1 | 6 | 6 | 6 | -1 | 0 | 1.4142135623731 | 18.2426406871193 | 0 | 0 | 18.2426406871193
+ 7 | 2 | 1 | 1 | 1 | 6 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 8 | 2 | 1 | 2 | 2 | 3 | 1 | 10 | 1 | 1 | 1 | 3 | 5
+ 9 | 2 | 1 | 3 | 3 | 8 | 1 | 0 | 2.23606797749979 | 7.23606797749979 | 0 | 3 | 10.2360679774998
+ 10 | 2 | 1 | 4 | 6 | 6 | -1 | 0 | 2 | 12.2360679774998 | 0 | 0 | 12.2360679774998
+ 11 | -2 | 0 | 0 | -1 | -1 | -1 | -1 | 11.4787086646191 | -1 | 2 | 17 | 30.4787086646191
+(11 rows)
+
+--q2
+SELECT * FROM _pgr_pickDeliver(
+ $$ SELECT * FROM orders ORDER BY id $$,
+ $$ SELECT * FROM vehicles $$,
+ $$ SELECT * from pgr_dijkstraCostMatrix(
+ ' SELECT * FROM edge_table ', ARRAY[3, 4, 5, 8, 9, 11])
+ $$
+);
+ seq | vehicle_seq | vehicle_id | stop_seq | stop_type | stop_id | order_id | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+-------------+------------+----------+-----------+---------+----------+-------+-------------+--------------+-----------+--------------+----------------
+ 1 | 1 | 1 | 1 | 1 | 6 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 1 | 2 | 2 | 5 | 3 | 30 | 1 | 1 | 1 | 3 | 5
+ 3 | 1 | 1 | 3 | 3 | 11 | 3 | 0 | 2 | 7 | 0 | 3 | 10
+ 4 | 1 | 1 | 4 | 2 | 9 | 2 | 20 | 2 | 12 | 0 | 2 | 14
+ 5 | 1 | 1 | 5 | 3 | 4 | 2 | 0 | 1 | 15 | 0 | 3 | 18
+ 6 | 1 | 1 | 6 | 6 | 6 | -1 | 0 | 4 | 22 | 0 | 0 | 22
+ 7 | 2 | 1 | 1 | 1 | 6 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 8 | 2 | 1 | 2 | 2 | 3 | 1 | 10 | 5 | 5 | 0 | 3 | 8
+ 9 | 2 | 1 | 3 | 3 | 8 | 1 | 0 | 3 | 11 | 0 | 3 | 14
+ 10 | 2 | 1 | 4 | 6 | 6 | -1 | 0 | 0 | 14 | 0 | 0 | 14
+ 11 | -2 | 0 | 0 | -1 | -1 | -1 | -1 | 18 | -1 | 1 | 17 | 36
+(11 rows)
+
+--q3
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/doc-pickDeliverEuclidean.queries b/doc/queries/doc-pickDeliverEuclidean.queries
new file mode 100644
index 0000000..1971291
--- /dev/null
+++ b/doc/queries/doc-pickDeliverEuclidean.queries
@@ -0,0 +1,27 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+--q1
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * from vehicles'
+);
+ seq | vehicle_seq | vehicle_id | stop_seq | stop_type | order_id | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+-------------+------------+----------+-----------+----------+-------+------------------+------------------+-----------+--------------+------------------
+ 1 | 1 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 1 | 2 | 2 | 3 | 30 | 1 | 1 | 1 | 3 | 5
+ 3 | 1 | 1 | 3 | 3 | 3 | 0 | 1.4142135623731 | 6.41421356237309 | 0 | 3 | 9.4142135623731
+ 4 | 1 | 1 | 4 | 2 | 2 | 20 | 1.4142135623731 | 10.8284271247462 | 0 | 2 | 12.8284271247462
+ 5 | 1 | 1 | 5 | 3 | 2 | 0 | 1 | 13.8284271247462 | 0 | 3 | 16.8284271247462
+ 6 | 1 | 1 | 6 | 6 | -1 | 0 | 1.4142135623731 | 18.2426406871193 | 0 | 0 | 18.2426406871193
+ 7 | 2 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 8 | 2 | 1 | 2 | 2 | 1 | 10 | 1 | 1 | 1 | 3 | 5
+ 9 | 2 | 1 | 3 | 3 | 1 | 0 | 2.23606797749979 | 7.23606797749979 | 0 | 3 | 10.2360679774998
+ 10 | 2 | 1 | 4 | 6 | -1 | 0 | 2 | 12.2360679774998 | 0 | 0 | 12.2360679774998
+ 11 | -2 | 0 | 0 | -1 | -1 | -1 | 11.4787086646191 | -1 | 2 | 17 | 30.4787086646191
+(11 rows)
+
+--q2
+ROLLBACK;
+ROLLBACK
diff --git a/src/trsp/doc/doc-trsp.queries b/doc/queries/doc-trsp.queries
similarity index 100%
rename from src/trsp/doc/doc-trsp.queries
rename to doc/queries/doc-trsp.queries
diff --git a/doc/queries/issue704.queries b/doc/queries/issue704.queries
new file mode 100644
index 0000000..364fa92
--- /dev/null
+++ b/doc/queries/issue704.queries
@@ -0,0 +1,82 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+CREATE TABLE maptest as
+SELECT 671222::integer as id, 318255::integer as source, 222698::integer as target, 14.02::float8 as cost, 14.02::float8 as reverse_cost UNION ALL
+SELECT 671223, 222698, 36655, 197.16, 197.16 UNION ALL
+SELECT 582877, 408918, 5556, 458.09, 458.09 UNION ALL
+SELECT 582876, 318255, 408918, 3.89, 3.89 UNION ALL
+SELECT 585280, 5556, 454424, 54.84, 54.84;
+SELECT 5
+q1
+SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4)
+FROM pgr_trsp(
+ 'select * from maptest',
+ 582877,
+ 0,
+ 582877,
+ 0.5,
+ true,
+ true,
+ null
+) PG ;
+ seq | node | edge | cost
+-----+------+------+------
+(0 rows)
+
+q2
+SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4)
+FROM pgr_trsp(
+ 'select * from maptest',
+ 582877,
+ 0.0000000001,
+ 582877,
+ 0.5,
+ true,
+ true,
+ null
+) PG ;
+ seq | node | edge | cost
+-----+------+--------+----------
+ 0 | -1 | 582877 | 229.0450
+ 1 | -2 | -1 | 0.0000
+(2 rows)
+
+q3
+SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4)
+FROM pgr_trsp(
+ 'select * from maptest',
+ 582877,
+ 0,
+ 582877,
+ 0.5,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+) PG ;
+ seq | node | edge | cost
+-----+------+--------+----------
+ 0 | -1 | 582877 | 229.0450
+(1 row)
+
+q4
+SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4)
+FROM pgr_trsp(
+ 'select * from maptest',
+ 582877,
+ 0.0000000001,
+ 582877,
+ 0.5,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+) PG ;
+ seq | node | edge | cost
+-----+------+--------+----------
+ 0 | -1 | 582877 | 229.0450
+(1 row)
+
+q5
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/oneDepotWrapper.queries b/doc/queries/oneDepotWrapper.queries
new file mode 100644
index 0000000..8c24c83
--- /dev/null
+++ b/doc/queries/oneDepotWrapper.queries
@@ -0,0 +1,256 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT * FROM _pgr_vrpOneDepot(
+ 'SELECT * FROM vrp_orders',
+ 'SELECT * FROM vrp_vehicles',
+ 'SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM vrp_distance',
+ 1);
+ seq | vehicle_seq | vehicle_id | stop_seq | stop_type | stop_id | order_id | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+-------------+------------+----------+-----------+---------+----------+-------+-------------+--------------+-------------------+--------------+----------------
+ 1 | 1 | 5 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 5 | 2 | 2 | 1 | 66 | 16 | 0 | 0 | 0 | 0 | 0
+ 3 | 1 | 5 | 3 | 2 | 1 | 25 | 26 | 0 | 0 | 0 | 0 | 0
+ 4 | 1 | 5 | 4 | 2 | 1 | 21 | 36 | 0 | 0 | 0 | 0 | 0
+ 5 | 1 | 5 | 5 | 2 | 1 | 84 | 50 | 0 | 0 | 0 | 0 | 0
+ 6 | 1 | 5 | 6 | 2 | 1 | 50 | 60 | 0 | 0 | 0 | 0 | 0
+ 7 | 1 | 5 | 7 | 2 | 1 | 49 | 70 | 0 | 0 | 0 | 0 | 0
+ 8 | 1 | 5 | 8 | 2 | 1 | 24 | 100 | 0 | 0 | 0 | 0 | 0
+ 9 | 1 | 5 | 9 | 2 | 1 | 22 | 110 | 0 | 0 | 0 | 0 | 0
+ 10 | 1 | 5 | 10 | 2 | 1 | 20 | 150 | 0 | 0 | 0 | 0 | 0
+ 11 | 1 | 5 | 11 | 2 | 1 | 19 | 170 | 0 | 0 | 0 | 0 | 0
+ 12 | 1 | 5 | 12 | 3 | 66 | 66 | 154 | 11.18034 | 11.18034 | 0 | 10 | 21.18034
+ 13 | 1 | 5 | 13 | 3 | 84 | 84 | 140 | 9.219544 | 30.399884 | 4.600116 | 10 | 45
+ 14 | 1 | 5 | 14 | 3 | 24 | 24 | 110 | 26.019224 | 71.019224 | 0 | 10 | 81.019224
+ 15 | 1 | 5 | 15 | 3 | 22 | 22 | 100 | 2 | 83.019224 | 0 | 10 | 93.019224
+ 16 | 1 | 5 | 16 | 3 | 20 | 20 | 60 | 5.385165 | 98.404389 | 0 | 10 | 108.404389
+ 17 | 1 | 5 | 17 | 3 | 19 | 19 | 40 | 5.385165 | 113.789554 | 0 | 10 | 123.789554
+ 18 | 1 | 5 | 18 | 3 | 50 | 50 | 30 | 7.28011 | 131.069664 | 0 | 10 | 141.069664
+ 19 | 1 | 5 | 19 | 3 | 21 | 21 | 20 | 3 | 144.069664 | 0 | 10 | 154.069664
+ 20 | 1 | 5 | 20 | 3 | 25 | 25 | 10 | 4 | 158.069664 | 0 | 10 | 168.069664
+ 21 | 1 | 5 | 21 | 3 | 49 | 49 | 0 | 10.77033 | 178.839994 | 0 | 10 | 188.839994
+ 22 | 1 | 5 | 22 | 6 | 1 | -1 | 0 | 45.044423 | 233.884417 | 0 | 0 | 233.884417
+ 23 | 2 | 6 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 24 | 2 | 6 | 2 | 2 | 1 | 31 | 10 | 0 | 0 | 0 | 0 | 0
+ 25 | 2 | 6 | 3 | 2 | 1 | 32 | 30 | 0 | 0 | 0 | 0 | 0
+ 26 | 2 | 6 | 4 | 2 | 1 | 81 | 43 | 0 | 0 | 0 | 0 | 0
+ 27 | 2 | 6 | 5 | 2 | 1 | 94 | 46 | 0 | 0 | 0 | 0 | 0
+ 28 | 2 | 6 | 6 | 2 | 1 | 93 | 60 | 0 | 0 | 0 | 0 | 0
+ 29 | 2 | 6 | 7 | 2 | 1 | 35 | 90 | 0 | 0 | 0 | 0 | 0
+ 30 | 2 | 6 | 8 | 2 | 1 | 33 | 100 | 0 | 0 | 0 | 0 | 0
+ 31 | 2 | 6 | 9 | 2 | 1 | 28 | 120 | 0 | 0 | 0 | 0 | 0
+ 32 | 2 | 6 | 10 | 2 | 1 | 27 | 150 | 0 | 0 | 0 | 0 | 0
+ 33 | 2 | 6 | 11 | 3 | 93 | 93 | 136 | 14.764823 | 14.764823 | 0 | 10 | 24.764823
+ 34 | 2 | 6 | 12 | 3 | 32 | 32 | 116 | 35.902646 | 60.667469 | 0.332531000000003 | 10 | 71
+ 35 | 2 | 6 | 13 | 3 | 28 | 28 | 96 | 7 | 78 | 0 | 10 | 88
+ 36 | 2 | 6 | 14 | 3 | 31 | 31 | 86 | 8.602325 | 96.602325 | 0 | 10 | 106.602325
+ 37 | 2 | 6 | 15 | 3 | 35 | 35 | 56 | 5.830952 | 112.433277 | 0 | 10 | 122.433277
+ 38 | 2 | 6 | 16 | 3 | 27 | 27 | 26 | 11.18034 | 133.613617 | 0 | 10 | 143.613617
+ 39 | 2 | 6 | 17 | 3 | 33 | 33 | 16 | 8 | 151.613617 | 0 | 10 | 161.613617
+ 40 | 2 | 6 | 18 | 3 | 94 | 94 | 13 | 34.058773 | 195.67239 | 0 | 10 | 205.67239
+ 41 | 2 | 6 | 19 | 3 | 81 | 81 | 0 | 14.866069 | 220.538459 | 0 | 10 | 230.538459
+ 42 | 2 | 6 | 20 | 6 | 1 | -1 | 0 | 7.615773 | 238.154232 | 0 | 0 | 238.154232
+ 43 | 3 | 3 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 44 | 3 | 3 | 2 | 2 | 1 | 16 | 20 | 0 | 0 | 0 | 0 | 0
+ 45 | 3 | 3 | 3 | 2 | 1 | 14 | 30 | 0 | 0 | 0 | 0 | 0
+ 46 | 3 | 3 | 4 | 2 | 1 | 48 | 40 | 0 | 0 | 0 | 0 | 0
+ 47 | 3 | 3 | 5 | 2 | 1 | 18 | 60 | 0 | 0 | 0 | 0 | 0
+ 48 | 3 | 3 | 6 | 2 | 1 | 17 | 80 | 0 | 0 | 0 | 0 | 0
+ 49 | 3 | 3 | 7 | 2 | 1 | 15 | 90 | 0 | 0 | 0 | 0 | 0
+ 50 | 3 | 3 | 8 | 2 | 1 | 13 | 110 | 0 | 0 | 0 | 0 | 0
+ 51 | 3 | 3 | 9 | 2 | 1 | 11 | 140 | 0 | 0 | 0 | 0 | 0
+ 52 | 3 | 3 | 10 | 2 | 1 | 10 | 160 | 0 | 0 | 0 | 0 | 0
+ 53 | 3 | 3 | 11 | 3 | 15 | 15 | 150 | 35.355339 | 35.355339 | 0 | 10 | 45.355339
+ 54 | 3 | 3 | 12 | 3 | 48 | 48 | 140 | 3 | 48.355339 | 0 | 10 | 58.355339
+ 55 | 3 | 3 | 13 | 3 | 13 | 13 | 120 | 6 | 64.355339 | 0 | 10 | 74.355339
+ 56 | 3 | 3 | 14 | 3 | 16 | 16 | 100 | 7.81025 | 82.165589 | 0 | 10 | 92.165589
+ 57 | 3 | 3 | 15 | 3 | 17 | 17 | 80 | 2 | 94.165589 | 0 | 10 | 104.165589
+ 58 | 3 | 3 | 16 | 3 | 10 | 10 | 60 | 11.18034 | 115.345929 | 0 | 10 | 125.345929
+ 59 | 3 | 3 | 17 | 3 | 11 | 11 | 30 | 5 | 130.345929 | 0 | 10 | 140.345929
+ 60 | 3 | 3 | 18 | 3 | 14 | 14 | 20 | 7.071068 | 147.416997 | 0 | 10 | 157.416997
+ 61 | 3 | 3 | 19 | 3 | 18 | 18 | 0 | 11.18034 | 168.597337 | 0 | 10 | 178.597337
+ 62 | 3 | 3 | 20 | 6 | 1 | -1 | 0 | 40.311289 | 218.908626 | 0 | 0 | 218.908626
+ 63 | 4 | 8 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 64 | 4 | 8 | 2 | 2 | 1 | 71 | 23 | 0 | 0 | 0 | 0 | 0
+ 65 | 4 | 8 | 3 | 2 | 1 | 55 | 39 | 0 | 0 | 0 | 0 | 0
+ 66 | 4 | 8 | 4 | 2 | 1 | 44 | 59 | 0 | 0 | 0 | 0 | 0
+ 67 | 4 | 8 | 5 | 2 | 1 | 43 | 69 | 0 | 0 | 0 | 0 | 0
+ 68 | 4 | 8 | 6 | 2 | 1 | 42 | 89 | 0 | 0 | 0 | 0 | 0
+ 69 | 4 | 8 | 7 | 2 | 1 | 41 | 119 | 0 | 0 | 0 | 0 | 0
+ 70 | 4 | 8 | 8 | 2 | 1 | 40 | 129 | 0 | 0 | 0 | 0 | 0
+ 71 | 4 | 8 | 9 | 2 | 1 | 39 | 159 | 0 | 0 | 0 | 0 | 0
+ 72 | 4 | 8 | 10 | 3 | 43 | 43 | 149 | 33.54102 | 33.54102 | 0 | 10 | 43.54102
+ 73 | 4 | 8 | 11 | 3 | 40 | 40 | 139 | 5 | 48.54102 | 0 | 10 | 58.54102
+ 74 | 4 | 8 | 12 | 3 | 39 | 39 | 109 | 2 | 60.54102 | 14.45898 | 10 | 85
+ 75 | 4 | 8 | 13 | 3 | 41 | 41 | 79 | 5.385165 | 90.385165 | 0 | 10 | 100.385165
+ 76 | 4 | 8 | 14 | 3 | 42 | 42 | 59 | 10.198039 | 110.583204 | 0 | 10 | 120.583204
+ 77 | 4 | 8 | 15 | 3 | 44 | 44 | 39 | 10.440307 | 131.023511 | 0 | 10 | 141.023511
+ 78 | 4 | 8 | 16 | 3 | 55 | 55 | 23 | 25 | 166.023511 | 0 | 10 | 176.023511
+ 79 | 4 | 8 | 17 | 3 | 71 | 71 | 0 | 21.931712 | 197.955223 | 0 | 10 | 207.955223
+ 80 | 4 | 8 | 18 | 6 | 1 | -1 | 0 | 19.646883 | 227.602106 | 0 | 0 | 227.602106
+ 81 | 5 | 1 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 82 | 5 | 1 | 2 | 2 | 1 | 4 | 10 | 0 | 0 | 0 | 0 | 0
+ 83 | 5 | 1 | 3 | 2 | 1 | 101 | 13 | 0 | 0 | 0 | 0 | 0
+ 84 | 5 | 1 | 4 | 2 | 1 | 46 | 23 | 0 | 0 | 0 | 0 | 0
+ 85 | 5 | 1 | 5 | 2 | 1 | 5 | 63 | 0 | 0 | 0 | 0 | 0
+ 86 | 5 | 1 | 6 | 2 | 1 | 3 | 93 | 0 | 0 | 0 | 0 | 0
+ 87 | 5 | 1 | 7 | 3 | 46 | 46 | 83 | 37.735925 | 37.735925 | 0 | 10 | 47.735925
+ 88 | 5 | 1 | 8 | 3 | 3 | 3 | 53 | 7.28011 | 55.016035 | 0 | 10 | 65.016035
+ 89 | 5 | 1 | 9 | 2 | 1 | 2 | 73 | 30.805844 | 95.821879 | 0 | 0 | 95.821879
+ 90 | 5 | 1 | 10 | 3 | 4 | 4 | 63 | 39.357337 | 135.179216 | 0 | 10 | 145.179216
+ 91 | 5 | 1 | 11 | 3 | 2 | 2 | 43 | 3 | 148.179216 | 0 | 10 | 158.179216
+ 92 | 5 | 1 | 12 | 3 | 5 | 5 | 3 | 7.071068 | 165.250284 | 0 | 10 | 175.250284
+ 93 | 5 | 1 | 13 | 3 | 101 | 101 | 0 | 17.029386 | 192.27967 | 0 | 10 | 202.27967
+ 94 | 5 | 1 | 14 | 6 | 1 | -1 | 0 | 19.235384 | 221.515054 | 0 | 0 | 221.515054
+ 95 | 6 | 13 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 96 | 6 | 13 | 2 | 2 | 1 | 92 | 13 | 0 | 0 | 0 | 0 | 0
+ 97 | 6 | 13 | 3 | 2 | 1 | 52 | 32 | 0 | 0 | 0 | 0 | 0
+ 98 | 6 | 13 | 4 | 2 | 1 | 57 | 51 | 0 | 0 | 0 | 0 | 0
+ 99 | 6 | 13 | 5 | 2 | 1 | 85 | 69 | 0 | 0 | 0 | 0 | 0
+ 100 | 6 | 13 | 6 | 2 | 1 | 68 | 78 | 0 | 0 | 0 | 0 | 0
+ 101 | 6 | 13 | 7 | 2 | 1 | 63 | 81 | 0 | 0 | 0 | 0 | 0
+ 102 | 6 | 13 | 8 | 3 | 63 | 63 | 78 | 29.154759 | 29.154759 | 22.845241 | 10 | 62
+ 103 | 6 | 13 | 9 | 3 | 68 | 68 | 69 | 7.071068 | 69.071068 | 0.928932000000003 | 10 | 80
+ 104 | 6 | 13 | 10 | 3 | 52 | 52 | 50 | 23.769729 | 103.769729 | 0 | 10 | 113.769729
+ 105 | 6 | 13 | 11 | 3 | 85 | 85 | 32 | 9.219544 | 122.989273 | 0 | 10 | 132.989273
+ 106 | 6 | 13 | 12 | 3 | 57 | 57 | 13 | 9.219544 | 142.208817 | 0 | 10 | 152.208817
+ 107 | 6 | 13 | 13 | 3 | 92 | 92 | 0 | 7.071068 | 159.279885 | 7.72011499999999 | 10 | 177
+ 108 | 6 | 13 | 14 | 6 | 1 | -1 | 0 | 12.041595 | 189.041595 | 0 | 0 | 189.041595
+ 109 | 7 | 7 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 110 | 7 | 7 | 2 | 2 | 1 | 30 | 10 | 0 | 0 | 0 | 0 | 0
+ 111 | 7 | 7 | 3 | 2 | 1 | 29 | 20 | 0 | 0 | 0 | 0 | 0
+ 112 | 7 | 7 | 4 | 2 | 1 | 38 | 30 | 0 | 0 | 0 | 0 | 0
+ 113 | 7 | 7 | 5 | 2 | 1 | 36 | 50 | 0 | 0 | 0 | 0 | 0
+ 114 | 7 | 7 | 6 | 2 | 1 | 34 | 60 | 0 | 0 | 0 | 0 | 0
+ 115 | 7 | 7 | 7 | 3 | 34 | 34 | 50 | 51.478151 | 51.478151 | 0 | 10 | 61.478151
+ 116 | 7 | 7 | 8 | 3 | 29 | 29 | 40 | 8.602325 | 70.080476 | 0 | 10 | 80.080476
+ 117 | 7 | 7 | 9 | 3 | 30 | 30 | 30 | 5.385165 | 85.465641 | 0 | 10 | 95.465641
+ 118 | 7 | 7 | 10 | 3 | 38 | 38 | 20 | 53.235327 | 148.700968 | 0 | 10 | 158.700968
+ 119 | 7 | 7 | 11 | 3 | 36 | 36 | 0 | 3.605551 | 162.306519 | 0 | 10 | 172.306519
+ 120 | 7 | 7 | 12 | 6 | 1 | -1 | 0 | 44.204072 | 216.510591 | 0 | 0 | 216.510591
+ 121 | 8 | 2 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 122 | 8 | 2 | 2 | 2 | 1 | 89 | 19 | 0 | 0 | 0 | 0 | 0
+ 123 | 8 | 2 | 3 | 2 | 1 | 47 | 29 | 0 | 0 | 0 | 0 | 0
+ 124 | 8 | 2 | 4 | 2 | 1 | 61 | 46 | 0 | 0 | 0 | 0 | 0
+ 125 | 8 | 2 | 5 | 2 | 1 | 9 | 56 | 0 | 0 | 0 | 0 | 0
+ 126 | 8 | 2 | 6 | 2 | 1 | 8 | 76 | 0 | 0 | 0 | 0 | 0
+ 127 | 8 | 2 | 7 | 3 | 89 | 89 | 57 | 17.888544 | 17.888544 | 49.111456 | 10 | 77
+ 128 | 8 | 2 | 8 | 3 | 8 | 8 | 37 | 19.235384 | 96.235384 | 0 | 10 | 106.235384
+ 129 | 8 | 2 | 9 | 3 | 9 | 9 | 27 | 5 | 111.235384 | 0 | 10 | 121.235384
+ 130 | 8 | 2 | 10 | 3 | 47 | 47 | 17 | 3 | 124.235384 | 0 | 10 | 134.235384
+ 131 | 8 | 2 | 11 | 3 | 61 | 61 | 0 | 20.223748 | 154.459132 | 0.540867999999989 | 10 | 165
+ 132 | 8 | 2 | 12 | 6 | 1 | -1 | 0 | 26.925824 | 191.925824 | 0 | 0 | 191.925824
+ 133 | 9 | 14 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 134 | 9 | 14 | 2 | 2 | 1 | 97 | 26 | 0 | 0 | 0 | 0 | 0
+ 135 | 9 | 14 | 3 | 2 | 1 | 64 | 32 | 0 | 0 | 0 | 0 | 0
+ 136 | 9 | 14 | 4 | 2 | 1 | 51 | 62 | 0 | 0 | 0 | 0 | 0
+ 137 | 9 | 14 | 5 | 2 | 1 | 96 | 68 | 0 | 0 | 0 | 0 | 0
+ 138 | 9 | 14 | 6 | 2 | 1 | 77 | 99 | 0 | 0 | 0 | 0 | 0
+ 139 | 9 | 14 | 7 | 3 | 96 | 96 | 93 | 20.615528 | 20.615528 | 13.384472 | 10 | 44
+ 140 | 9 | 14 | 8 | 3 | 64 | 64 | 87 | 19.235384 | 63.235384 | 0 | 10 | 73.235384
+ 141 | 9 | 14 | 9 | 3 | 77 | 77 | 56 | 9.433981 | 82.669365 | 0 | 10 | 92.669365
+ 142 | 9 | 14 | 10 | 3 | 51 | 51 | 26 | 25.942244 | 118.611609 | 0 | 10 | 128.611609
+ 143 | 9 | 14 | 11 | 3 | 97 | 97 | 0 | 25.495098 | 154.106707 | 0 | 10 | 164.106707
+ 144 | 9 | 14 | 12 | 6 | 1 | -1 | 0 | 15.524175 | 179.630882 | 0 | 0 | 179.630882
+ 145 | 10 | 15 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 146 | 10 | 15 | 2 | 2 | 1 | 67 | 16 | 0 | 0 | 0 | 0 | 0
+ 147 | 10 | 15 | 3 | 2 | 1 | 73 | 24 | 0 | 0 | 0 | 0 | 0
+ 148 | 10 | 15 | 4 | 2 | 1 | 95 | 47 | 0 | 0 | 0 | 0 | 0
+ 149 | 10 | 15 | 5 | 2 | 1 | 82 | 57 | 0 | 0 | 0 | 0 | 0
+ 150 | 10 | 15 | 6 | 2 | 1 | 72 | 71 | 0 | 0 | 0 | 0 | 0
+ 151 | 10 | 15 | 7 | 3 | 73 | 73 | 63 | 27.45906 | 27.45906 | 2.54094 | 10 | 40
+ 152 | 10 | 15 | 8 | 3 | 72 | 72 | 49 | 10.198039 | 50.198039 | 14.801961 | 10 | 75
+ 153 | 10 | 15 | 9 | 3 | 82 | 82 | 39 | 16.278821 | 91.278821 | 0 | 10 | 101.278821
+ 154 | 10 | 15 | 10 | 3 | 95 | 95 | 16 | 12.806248 | 114.085069 | 0 | 10 | 124.085069
+ 155 | 10 | 15 | 11 | 3 | 67 | 67 | 0 | 19.416488 | 143.501557 | 0 | 10 | 153.501557
+ 156 | 10 | 15 | 12 | 6 | 1 | -1 | 0 | 13.038405 | 166.539962 | 0 | 0 | 166.539962
+ 157 | 11 | 11 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 158 | 11 | 11 | 2 | 2 | 1 | 78 | 7 | 0 | 0 | 0 | 0 | 0
+ 159 | 11 | 11 | 3 | 2 | 1 | 26 | 27 | 0 | 0 | 0 | 0 | 0
+ 160 | 11 | 11 | 4 | 2 | 1 | 87 | 55 | 0 | 0 | 0 | 0 | 0
+ 161 | 11 | 11 | 5 | 2 | 1 | 23 | 95 | 0 | 0 | 0 | 0 | 0
+ 162 | 11 | 11 | 6 | 3 | 87 | 87 | 67 | 32.202484 | 32.202484 | 54.797516 | 10 | 97
+ 163 | 11 | 11 | 7 | 3 | 23 | 23 | 27 | 21.023796 | 118.023796 | 0 | 10 | 128.023796
+ 164 | 11 | 11 | 8 | 3 | 78 | 78 | 20 | 20.808652 | 148.832448 | 1.167552 | 10 | 160
+ 165 | 11 | 11 | 9 | 3 | 26 | 26 | 0 | 12.165525 | 172.165525 | 0 | 10 | 182.165525
+ 166 | 11 | 11 | 10 | 6 | 1 | -1 | 0 | 45.276926 | 227.442451 | 0 | 0 | 227.442451
+ 167 | 12 | 4 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 168 | 12 | 4 | 2 | 2 | 1 | 60 | 19 | 0 | 0 | 0 | 0 | 0
+ 169 | 12 | 4 | 3 | 2 | 1 | 59 | 39 | 0 | 0 | 0 | 0 | 0
+ 170 | 12 | 4 | 4 | 2 | 1 | 100 | 54 | 0 | 0 | 0 | 0 | 0
+ 171 | 12 | 4 | 5 | 2 | 1 | 54 | 59 | 0 | 0 | 0 | 0 | 0
+ 172 | 12 | 4 | 6 | 3 | 60 | 60 | 40 | 42.426407 | 42.426407 | 0 | 10 | 52.426407
+ 173 | 12 | 4 | 7 | 3 | 100 | 100 | 25 | 21.931712 | 74.358119 | 2.641881 | 10 | 87
+ 174 | 12 | 4 | 8 | 3 | 54 | 54 | 20 | 16.155494 | 103.155494 | 0 | 10 | 113.155494
+ 175 | 12 | 4 | 9 | 3 | 59 | 59 | 0 | 40.311289 | 153.466783 | 0 | 10 | 163.466783
+ 176 | 12 | 4 | 10 | 6 | 1 | -1 | 0 | 47.169906 | 210.636689 | 0 | 0 | 210.636689
+ 177 | 13 | 10 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 178 | 13 | 10 | 2 | 2 | 1 | 86 | 2 | 0 | 0 | 0 | 0 | 0
+ 179 | 13 | 10 | 3 | 2 | 1 | 90 | 27 | 0 | 0 | 0 | 0 | 0
+ 180 | 13 | 10 | 4 | 2 | 1 | 65 | 44 | 0 | 0 | 0 | 0 | 0
+ 181 | 13 | 10 | 5 | 2 | 1 | 53 | 47 | 0 | 0 | 0 | 0 | 0
+ 182 | 13 | 10 | 6 | 3 | 53 | 53 | 44 | 25 | 25 | 27 | 10 | 62
+ 183 | 13 | 10 | 7 | 3 | 65 | 65 | 27 | 20 | 82 | 0 | 10 | 92
+ 184 | 13 | 10 | 8 | 3 | 86 | 86 | 25 | 19.313208 | 111.313208 | 0 | 10 | 121.313208
+ 185 | 13 | 10 | 9 | 3 | 90 | 90 | 0 | 18.439089 | 139.752297 | 4.247703 | 10 | 154
+ 186 | 13 | 10 | 10 | 6 | 1 | -1 | 0 | 52.478567 | 206.478567 | 0 | 0 | 206.478567
+ 187 | 14 | 12 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 188 | 14 | 12 | 2 | 2 | 1 | 6 | 20 | 0 | 0 | 0 | 0 | 0
+ 189 | 14 | 12 | 3 | 2 | 1 | 80 | 50 | 0 | 0 | 0 | 0 | 0
+ 190 | 14 | 12 | 4 | 2 | 1 | 7 | 70 | 0 | 0 | 0 | 0 | 0
+ 191 | 14 | 12 | 5 | 2 | 1 | 56 | 86 | 0 | 0 | 0 | 0 | 0
+ 192 | 14 | 12 | 6 | 3 | 6 | 6 | 66 | 40.311289 | 40.311289 | 0.688710999999998 | 10 | 51
+ 193 | 14 | 12 | 7 | 3 | 80 | 80 | 36 | 22.022716 | 73.022716 | 15.977284 | 10 | 99
+ 194 | 14 | 12 | 8 | 3 | 7 | 7 | 16 | 13.892444 | 112.892444 | 0 | 10 | 122.892444
+ 195 | 14 | 12 | 9 | 3 | 56 | 56 | 0 | 19.209373 | 142.101817 | 0 | 10 | 152.101817
+ 196 | 14 | 12 | 10 | 6 | 1 | -1 | 0 | 14.142136 | 166.243953 | 0 | 0 | 166.243953
+ 197 | 15 | 19 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 198 | 15 | 19 | 2 | 2 | 1 | 88 | 13 | 0 | 0 | 0 | 0 | 0
+ 199 | 15 | 19 | 3 | 2 | 1 | 70 | 40 | 0 | 0 | 0 | 0 | 0
+ 200 | 15 | 19 | 4 | 2 | 1 | 58 | 63 | 0 | 0 | 0 | 0 | 0
+ 201 | 15 | 19 | 5 | 2 | 1 | 99 | 72 | 0 | 0 | 0 | 0 | 0
+ 202 | 15 | 19 | 6 | 3 | 70 | 70 | 45 | 9.219544 | 9.219544 | 31.780456 | 10 | 51
+ 203 | 15 | 19 | 7 | 3 | 99 | 99 | 36 | 5 | 56 | 0 | 10 | 66
+ 204 | 15 | 19 | 8 | 3 | 88 | 88 | 23 | 31.304952 | 97.304952 | 0 | 10 | 107.304952
+ 205 | 15 | 19 | 9 | 3 | 58 | 58 | 0 | 18.027756 | 125.332708 | 0 | 10 | 135.332708
+ 206 | 15 | 19 | 10 | 6 | 1 | -1 | 0 | 26.925824 | 162.258532 | 0 | 0 | 162.258532
+ 207 | 16 | 17 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 208 | 16 | 17 | 2 | 2 | 1 | 75 | 8 | 0 | 0 | 0 | 0 | 0
+ 209 | 16 | 17 | 3 | 2 | 1 | 98 | 43 | 0 | 0 | 0 | 0 | 0
+ 210 | 16 | 17 | 4 | 2 | 1 | 76 | 59 | 0 | 0 | 0 | 0 | 0
+ 211 | 16 | 17 | 5 | 3 | 76 | 76 | 43 | 57.008771 | 57.008771 | 16.991229 | 10 | 84
+ 212 | 16 | 17 | 6 | 3 | 98 | 98 | 8 | 13.038405 | 97.038405 | 22.961595 | 10 | 130
+ 213 | 16 | 17 | 7 | 3 | 75 | 75 | 0 | 16.124515 | 146.124515 | 0 | 10 | 156.124515
+ 214 | 16 | 17 | 8 | 6 | 1 | -1 | 0 | 36.055513 | 192.180028 | 0 | 0 | 192.180028
+ 215 | 17 | 16 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 216 | 17 | 16 | 2 | 2 | 1 | 69 | 21 | 0 | 0 | 0 | 0 | 0
+ 217 | 17 | 16 | 3 | 2 | 1 | 79 | 48 | 0 | 0 | 0 | 0 | 0
+ 218 | 17 | 16 | 4 | 2 | 1 | 74 | 53 | 0 | 0 | 0 | 0 | 0
+ 219 | 17 | 16 | 5 | 3 | 74 | 74 | 48 | 39.293765 | 39.293765 | 37.706235 | 10 | 87
+ 220 | 17 | 16 | 6 | 3 | 79 | 79 | 21 | 7.211103 | 94.211103 | 0 | 10 | 104.211103
+ 221 | 17 | 16 | 7 | 3 | 69 | 69 | 0 | 32.249031 | 136.460134 | 7.53986600000002 | 10 | 154
+ 222 | 17 | 16 | 8 | 6 | 1 | -1 | 0 | 10 | 164 | 0 | 0 | 164
+ 223 | 18 | 9 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 224 | 18 | 9 | 2 | 2 | 1 | 62 | 9 | 0 | 0 | 0 | 0 | 0
+ 225 | 18 | 9 | 3 | 2 | 1 | 37 | 49 | 0 | 0 | 0 | 0 | 0
+ 226 | 18 | 9 | 4 | 2 | 1 | 45 | 59 | 0 | 0 | 0 | 0 | 0
+ 227 | 18 | 9 | 5 | 3 | 37 | 37 | 19 | 43.011626 | 43.011626 | 0 | 10 | 53.011626
+ 228 | 18 | 9 | 6 | 3 | 45 | 45 | 9 | 10.440307 | 63.451933 | 0.548067000000003 | 10 | 74
+ 229 | 18 | 9 | 7 | 3 | 62 | 62 | 0 | 19.723083 | 93.723083 | 0 | 10 | 103.723083
+ 230 | 18 | 9 | 8 | 6 | 1 | -1 | 0 | 15.811388 | 119.534471 | 0 | 0 | 119.534471
+ 231 | 19 | 18 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 232 | 19 | 18 | 2 | 2 | 1 | 91 | 6 | 0 | 0 | 0 | 0 | 0
+ 233 | 19 | 18 | 3 | 2 | 1 | 12 | 46 | 0 | 0 | 0 | 0 | 0
+ 234 | 19 | 18 | 4 | 3 | 12 | 12 | 6 | 33.526109 | 33.526109 | 25.473891 | 10 | 69
+ 235 | 19 | 18 | 5 | 3 | 91 | 91 | 0 | 29.832868 | 98.832868 | 0 | 10 | 108.832868
+ 236 | 19 | 18 | 6 | 6 | 1 | -1 | 0 | 4.242641 | 113.075509 | 0 | 0 | 113.075509
+ 237 | 20 | 20 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 238 | 20 | 20 | 2 | 2 | 1 | 83 | 9 | 0 | 0 | 0 | 0 | 0
+ 239 | 20 | 20 | 3 | 3 | 83 | 83 | 0 | 14.764823 | 14.764823 | 27.235177 | 10 | 52
+ 240 | 20 | 20 | 4 | 6 | 1 | -1 | 0 | 14.764823 | 66.764823 | 0 | 0 | 66.764823
+ 241 | -2 | 0 | 0 | -1 | -1 | -1 | -1 | 2304.305537 | -1 | 408.022775 | 1000 | 3712.328312
+(241 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/proof_of_concept.queries b/doc/queries/proof_of_concept.queries
new file mode 100644
index 0000000..1e9f91c
--- /dev/null
+++ b/doc/queries/proof_of_concept.queries
@@ -0,0 +1,137 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+Adding an additional column to store if its part of the contracted graph
+ALTER TABLE edge_table ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
+Adding a new edge joining vertices 3 and 5 with cost=2 to the edge table
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+VALUES (19, 3, 5, 2, 2, true);
+INSERT 0 1
+Adding a new edge joining vertices 3 and 9 with cost=2 to the edge table
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+VALUES (20, 3, 9, 2, 2, true);
+INSERT 0 1
+Adding a new edge joining vertices 5 and 11 with cost=2 to the edge table
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+VALUES (21, 5, 11, 2, 2, true);
+INSERT 0 1
+Adding a new edge joining vertices 9 and 11 with cost=2 to the edge table
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+VALUES (22, 9, 11, 2, 2, true);
+INSERT 0 1
+Case 1: Both source and target belong to the contracted graph.
+We are going to route from 3 to 11
+Since 3 and 11 both are in the contracted graph we need not add any vertices.
+SELECT * FROM
+pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 9, 11, 15, 17)
+ AND target IN (3, 5, 6, 9, 11, 15, 17)$$,
+ 3, 11, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 11 | 1 | 1
+ 3 | 3 | 11 | -1 | 0 | 2
+(3 rows)
+
+Case 2: source belongs to a contracted graph, while target belongs to a vertex subgraph.
+We are going to route from 3 to 7
+Since 7 is in the contracted subgraph of vertex 5 we add {7, 8} to the vertex set, so the vertex set becomes (3, 5, 6, 7, 8, 9, 11, 15, 17)
+SELECT * FROM pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 9, 11, 15, 17, 7, 8)
+ AND target IN (3, 5, 6, 9, 11, 15, 17, 7, 8)$$,
+ 3, 7, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 19 | 2 | 0
+ 2 | 2 | 5 | 7 | 1 | 2
+ 3 | 3 | 8 | 6 | 1 | 3
+ 4 | 4 | 7 | -1 | 0 | 4
+(4 rows)
+
+Case 3: source belongs to a contracted graph, while target belongs to a edge subgraph.
+We are going to route from 3 to 13
+Since 13 is in the contracted subgraph of edge (5, 11) we add {10, 13} to the vertex set, so the vertex set becomes (3, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17)
+SELECT * FROM pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 9, 11, 15, 17, 10, 13)
+ AND target IN (3, 5, 6, 9, 11, 15, 17, 10, 13)$$,
+ 3, 13, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 11 | 1 | 1
+ 3 | 3 | 11 | 12 | 1 | 2
+ 4 | 4 | 10 | 14 | 1 | 3
+ 5 | 5 | 13 | -1 | 0 | 4
+(5 rows)
+
+Case 4: source belongs to a vertex subgraph, while target belongs to a edge subgraph.
+We are going to route from 7 to 13
+Since 13 is in the contracted subgraph of edge (5, 11) we add {10, 13} to the vertex set, and since 7 is in the contracted subgraph of vertex 5 we add {7, 8} to the vertex sets (3, 5, 6, 7, 8, 9, 11, 15, 17)
+SELECT * FROM pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13)
+ AND target IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13)$$,
+ 7, 13, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 7 | 6 | 1 | 0
+ 2 | 2 | 8 | 7 | 1 | 1
+ 3 | 3 | 5 | 10 | 1 | 2
+ 4 | 4 | 10 | 14 | 1 | 3
+ 5 | 5 | 13 | -1 | 0 | 4
+(5 rows)
+
+Case 5: The path contains a shortcut.
+We are going to route from 3 to 9
+Since 3 and 9 both are in the contracted graph we need not add any vertices.
+SELECT * FROM pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
+ AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17)$$,
+ 3, 9, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 20 | 2 | 0
+ 2 | 2 | 9 | -1 | 0 | 2
+(2 rows)
+
+SELECT id, source, target, cost, reverse_cost, is_contracted
+FROM edge_table
+WHERE is_contracted = true
+ORDER BY id;
+ id | source | target | cost | reverse_cost | is_contracted
+----+--------+--------+------+--------------+---------------
+ 19 | 3 | 5 | 2 | 2 | t
+ 20 | 3 | 9 | 2 | 2 | t
+ 21 | 5 | 11 | 2 | 2 | t
+ 22 | 9 | 11 | 2 | 2 | t
+(4 rows)
+
+This implies that it is a shortcut and should be expanded
+SELECT * FROM pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
+ AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
+ AND is_contracted=false$$,
+ 3, 9, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 9 | 1 | 1
+ 3 | 3 | 9 | -1 | 0 | 2
+(3 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/doc/queries/trsp_notes_v2.5.0.queries b/doc/queries/trsp_notes_v2.5.0.queries
new file mode 100644
index 0000000..fec6b64
--- /dev/null
+++ b/doc/queries/trsp_notes_v2.5.0.queries
@@ -0,0 +1,1112 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+ROLLBACK;
+ROLLBACK
+# Notes on pgr_trsp for version 2.5.0
+Table of contents
+* [Introduction](#introduction)
+ * [The restriction](#the-restriction)
+* [The Vertices Signature Version](#the-vertices-signature-version)
+ * [No path representation differences](#vertices-no-path-representation-differences)
+ * [Routing from/to same location](#routing-fromto-same-location)
+ * [Undirected graph](#vertices-undirected-graph)
+* [The Edges Signature Version](#the-edges-signature-version)
+ * [No path representation differences](#edges-no-path-representation-differences)
+ * [Definition of a path](#definition-of-a-path)
+ * [Points on the same edge](#points-on-the-same-edge)
+ * [Undirected graph](#edges-undirected-graph)
+ * [Using a points of interest table](#using-a-points-of-interest-table)
+ * [Routing from/to the same point](#routing-fromto-the-same-point)
+ * [Passing in front of other points](#passing-in-front-of-other-points)
+ * [Routing from a vertex to a point](#edges-routing-from-a-vertex-to-a-point)
+* [pgr_trspViaVertices](#pgr_trspviavertices)
+ * [pgr_trspViaVertices No path representation differences](#pgr_trspviavertices-no-path-representation-differences)
+ * [when a path does not exist on the route](#when-a-path-does-not-exist-on-the-route)
+ * [from 2 to 3 to 2](#from-2-to-3-to-2)
+* [pgr_trspViaEdges](#pgr_trspviaedges)
+ * [pgr_trspViaEdges No path representation differences](#pgr_trspviaedges-no-path-representation-differences)
+ * [Using a points of interest table](#pgr_trspviaedges-using-the-pointsofinterest-table)
+
+# Introduction
+pgr_trsp code has issues that are not being fixed yet, but as time passes and new functionality is added to pgRouting with wrappers to **hide** the issues, not to fix them.
+
+For clarity on the queries:
+* _pgr_trsp (with underscore) is the original code
+* pgr_trsp (lower case) represents the wrapper calling the original code
+* pgr_TRSP (upper case) represents the wrapper calling the replacement function, depending on the function, it can be:
+ * pgr_dijkstra
+ * pgr_dijkstraVia
+ * pgr_withPoints
+ * _pgr_withPointsVia
+
+This page intentions is to compare the original code with the wrapped version of the trsp group of functions.
+## The restriction
+The restriction used in the examples does not have to do anything with the graph:
+* No vertex has id: 25, 32 or 33
+* No edge has id: 25, 32 or 33
+```
+$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, 32, 33::TEXT AS via_path$$
+```
+therefore the shortest path expected are as if there was no restriction involved
+# The Vertices signature version
+## (Vertices) No path representation differences
+Original function code
+* Sometimes it crasses the server when no path was found
+* Sometimes represents with Error a no path found
+* Forcing the user to use the wrapper or the replacement function
+
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true
+);
+ERROR: Error computing path: Path Not Found
+```
+dijkstra returns EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+pgr_trsp use the pgr_dijkstra when there are no restrictions
+therefore returns EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+```
+pgr_trsp use the original code when there are restrictions
+therefore throws Error to represent no path found
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ERROR: Error computing path: Path Not Found
+CONTEXT: PL/pgSQL function pgr_trsp(text,integer,integer,boolean,boolean,text) line 29 at RETURN QUERY
+```
+## routing from/to same location
+using dijkstra to verify (1 to 1)
+```
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+This call uses the replacement function because there are no restrictions (1 to 1)
+therefore is expected to return EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+```
+call forcing the use of the original code (1 to 1)
+* not longer allowed without restrictions
+
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 1 | 1 | 1
+ 1 | 2 | 4 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 16 | 1
+ 5 | 4 | 3 | 1
+ 6 | 3 | 2 | 1
+ 7 | 2 | 1 | 1
+ 8 | 1 | -1 | 0
+(9 rows)
+
+```
+trsp with restrictions (1 to 1) use the original code
+is expected to return Error to represent no path found
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 1 | 1 | 1
+ 1 | 2 | 4 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 16 | 1
+ 5 | 4 | 3 | 1
+ 6 | 3 | 2 | 1
+ 7 | 2 | 1 | 1
+ 8 | 1 | -1 | 0
+(9 rows)
+
+```
+trsp calling the original code with restrictions (1 to 1)
+is expected to return Error to represent no path found
+but "finds" a path when there should be no path.
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 1 | 1 | 1
+ 1 | 2 | 4 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 16 | 1
+ 5 | 4 | 3 | 1
+ 6 | 3 | 2 | 1
+ 7 | 2 | 1 | 1
+ 8 | 1 | -1 | 0
+(9 rows)
+
+```
+## (vertices) Undirected graph
+using Dijkstra to verify the shortest path from (2 to 3) on undirected graph
+```
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3, false
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+```
+using the replacement function because there are no restrictions (2 to 3)
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false,
+ true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 2 | 1
+ 1 | 3 | -1 | 0
+(2 rows)
+
+```
+call forcing the use of the original code
+* not longer allowed without restrictions
+
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | -1 | 0
+(6 rows)
+
+```
+trsp with restrictions (2 to 3)
+does not find the shortest path
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | -1 | 0
+(6 rows)
+
+```
+calling the original code with restrictions (2 to 3)
+does not find the shortest path
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | -1 | 0
+(6 rows)
+
+```
+# The Edges signature version
+## (Edges) No path representation differences
+Original function code
+* Sometimes it crasses the server when no path was found
+* Sometimes represents with Error a no path found
+* Forcing the user to use the wrapper or the replacement function
+
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 17, 0.5, true, true
+);
+ERROR: Error computing path: Path Not Found
+```
+pgr_withPoints returns EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 17, 0.5)$$,
+ -1, -2
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+## Definition of a path
+Remember that one characteristic of a path is that for a path of N edges it has N+1 vertices.
+
+For this example, suppose points, where the pid are different even if the edge and fraction are different.
+One point might be on the left side other on the right side, pgr_trsp does not take into account
+the side of the point
+calls forcing the use of the original code
+* not longer allowed without restrictions
+
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+* with restrictions
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+Using the *pgr_withPoints* it returns a path of N edge and N+1 vertices
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 1, 0.5)$$,
+ -1, -2
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0 | 0
+ 2 | 2 | -2 | -1 | 0 | 0
+(2 rows)
+
+```
+The *pgr_withPoints* is used when there are no restrictions
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+ 1 | -2 | -1 | 0
+(2 rows)
+
+```
+The original *_pgr_trsp* code is used when there are restrictions
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+note that pgr_withPoints returns an EMPTY SET when the point is the same
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 1, 0.5)$$,
+ -1, -1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+## Points on the same edge
+The *pgr_withPoints* is used when there are no restrictions
+* it returns a path of N edges and N+1 vertices
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.8, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.3
+ 1 | -2 | -1 | 0
+(2 rows)
+
+```
+The original *_pgr_trsp* is used when there are restrictions
+* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.8, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.3
+(1 row)
+
+```
+## (Edges) Undirected graph
+the shortest path obtained with *pgr_withPoints*
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 4 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 2, 0.8)$$,
+ -1, -2, directed:=false
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 4 | 0.5 | 0
+ 2 | 2 | 2 | 2 | 0.8 | 0.5
+ 3 | 3 | -2 | -1 | 0 | 1.3
+(3 rows)
+
+```
+The original *_pgr_trsp* is used when there are restrictions
+
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 4, 0.5, 2, 0.8, false, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 4 | 0.5
+ 1 | 2 | 2 | 0.8
+ 2 | -2 | -1 | 0
+(3 rows)
+
+```
+when using restrictions the original *_pgr_trsp* is used internally
+* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+* it does not return the shortest path.
+
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 4, 0.5, 2, 0.8, false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 4 | 0.5
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | 2 | 0.2
+(6 rows)
+
+```
+## Using a points of interest table
+The points of interest
+```
+SELECT * FROM pointsOfInterest;
+ pid | x | y | edge_id | side | fraction | the_geom | newpoint
+-----+-----+-----+---------+------+----------+--------------------------------------------+--------------------------------------------
+ 1 | 1.8 | 0.4 | 1 | l | 0.4 | 0101000000CDCCCCCCCCCCFC3F9A9999999999D93F | 010100000000000000000000409A9999999999D93F
+ 2 | 4.2 | 2.4 | 15 | r | 0.4 | 0101000000CDCCCCCCCCCC10403333333333330340 | 010100000000000000000010403333333333330340
+ 3 | 2.6 | 3.2 | 12 | l | 0.6 | 0101000000CDCCCCCCCCCC04409A99999999990940 | 0101000000CDCCCCCCCCCC04400000000000000840
+ 4 | 0.3 | 1.8 | 6 | r | 0.3 | 0101000000333333333333D33FCDCCCCCCCCCCFC3F | 0101000000333333333333D33F0000000000000040
+ 5 | 2.9 | 1.8 | 5 | l | 0.8 | 01010000003333333333330740CDCCCCCCCCCCFC3F | 01010000000000000000000840CDCCCCCCCCCCFC3F
+ 6 | 2.2 | 1.7 | 4 | b | 0.7 | 01010000009A99999999990140333333333333FB3F | 01010000000000000000000040333333333333FB3F
+(6 rows)
+
+```
+On *pgr_trsp*, to be able to use the table information:
+* Each parameter has to be extracted explicitly from the table
+* Regardles of the point pid original value
+ * will always be -1 for the first point
+ * will always be -2 for the second point
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.6
+ 1 | 2 | 4 | 0.7
+ 2 | -2 | -1 | 0
+(3 rows)
+
+```
+On *pgr_withPoints*, to be able to use the table information:
+* select statement on the *pointsOfInterest* table
+* *Negative* the id to represent the id is a pid
+* The points pids in the result are not renumbered
+* The points pids in the result are represented with negative sign
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -6
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 0.7 | 0.6
+ 3 | 3 | -6 | -1 | 0 | 1.3
+(3 rows)
+
+```
+## routing from/to the same point
+using pgr_withPoints to check results
+expecting EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+This call uses the replacement function because there are no restrictions
+* Because the pid is not involved the points are considered different
+* it returns a path
+
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+ 1 | -2 | -1 | 0
+(2 rows)
+
+```
+pgr_trsp with restrictions use the original code
+* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+## passing in front of other points
+using pgr_withPoints to verify the shortest path from pids (1 to 3)
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 1 | 0.6
+ 3 | 3 | 5 | 10 | 1 | 1.6
+ 4 | 4 | 10 | 12 | 0.6 | 2.6
+ 5 | 5 | -3 | -1 | 0 | 3.2
+(5 rows)
+
+```
+**pgr_withPoints** can be used to see when the route passes in front of other points
+In this example point pid=6 is passed in front of
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -3, details:=true
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 0.7 | 0.6
+ 3 | 3 | -6 | 4 | 0.3 | 1.3
+ 4 | 4 | 5 | 10 | 1 | 1.6
+ 5 | 5 | 10 | 12 | 0.6 | 2.6
+ 6 | 6 | -3 | -1 | 0 | 3.2
+(6 rows)
+
+```
+Can not be used to see if other points are passed in front of.
+The pointsOfInterest table is not part of the parameter
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.6
+ 1 | 2 | 4 | 1
+ 2 | 5 | 10 | 1
+ 3 | 10 | 12 | 0.6
+ 4 | -2 | -1 | 0
+(5 rows)
+
+```
+## (edges) Routing from a vertex to a point
+Showing *pgr_withPoints* results of the shortest path from vid 6 to pid 1
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ 6, -1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 6 | 8 | 1 | 0
+ 2 | 2 | 5 | 4 | 1 | 1
+ 3 | 3 | 2 | 1 | 0.6 | 2
+ 4 | 4 | -1 | -1 | 0 | 2.6
+(4 rows)
+
+```
+* Vertex 6 is on edge 8 at 1 fraction
+* Vertex 6 is also edge 11 at 0 fraction
+* Undefined behaviour when at least one of the "points" is an actual vertex
+
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 8, 1,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 11, 0,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+```
+# pgr_trspViaVertices
+## pgr_trspViaVertices No path representation differences
+pgr_trspViaVertices uses _pgr_trsp which as mentioned before
+* Sometimes it crasses the server when no path was found
+* Sometimes represents with Error a no path found
+* Forcing the user to use the wrapper or the replacement function
+
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2],
+ false, true
+);
+ERROR: Error computing path: Path Not Found
+CONTEXT: PL/pgSQL function _pgr_trspviavertices(text,integer[],boolean,boolean,text) line 16 at FOR over SELECT rows
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2, 1],
+ false, true
+);
+ERROR: Error computing path: Path Not Found
+CONTEXT: PL/pgSQL function _pgr_trspviavertices(text,integer[],boolean,boolean,text) line 16 at FOR over SELECT rows
+```
+**pgr_dijkstraVia** returning what paths of the route it finds or EMPTY SET when non is found
+this case none is found
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2],
+ false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+(0 rows)
+
+```
+this case only from 2 to 1 is found
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2, 1],
+ false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 3 | 1 | 2 | 1 | 2 | 1 | 1 | 0 | 0
+ 2 | 3 | 2 | 2 | 1 | 1 | -2 | 0 | 1 | 1
+(2 rows)
+
+```
+the **pgr_dijkstraVia** used are for complete routes so its marked as **strict:=true**
+therefore the expected result is EMPTY SET to represent no route was found
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false,
+ strict := true
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+(0 rows)
+
+```
+## when a path does not exist on the route
+pgr_TRSPViaVertices using the *pgr_dijkstraVia* when there are no restrictions.
+Because there is no path from 1 to 1 then there is no complete route 1 to 1 to 2
+therefore the expected result is EMPTY SET to represent no route was found
+```
+SELECT * FROM pgr_TRSPViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+(0 rows)
+
+```
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 1 | 2 | 1 | 1
+ 9 | 2 | 1 | 1 | 1
+ 10 | 2 | 2 | -1 | 0
+(10 rows)
+
+```
+with restrictions the original code is used
+```
+SELECT * FROM pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 1 | 2 | 1 | 1
+ 9 | 2 | 1 | 1 | 1
+ 10 | 2 | 2 | -1 | 0
+(10 rows)
+
+```
+Using explicitly the original code
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 1 | 2 | 1 | 1
+ 9 | 2 | 1 | 1 | 1
+ 10 | 2 | 2 | -1 | 0
+(10 rows)
+
+```
+## from 2 to 3 to 2
+dijkstra via shows the shortest route on the two paths
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0 | 0
+ 2 | 1 | 2 | 2 | 3 | 3 | -1 | 0 | 1 | 1
+ 3 | 2 | 1 | 3 | 2 | 3 | 2 | 1 | 0 | 1
+ 4 | 2 | 2 | 3 | 2 | 2 | -2 | 0 | 1 | 2
+(4 rows)
+
+```
+the replacement function **pgr_dijkstraVia** is used because there are no restrictions
+```
+SELECT * FROM pgr_TRSPViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 2 | 1
+ 2 | 2 | 3 | 2 | 1
+ 3 | 2 | 2 | -1 | 0
+(3 rows)
+
+```
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 4 | 1
+ 2 | 1 | 5 | 8 | 1
+ 3 | 1 | 6 | 9 | 1
+ 4 | 1 | 9 | 16 | 1
+ 5 | 1 | 4 | 3 | 1
+ 6 | 2 | 3 | 2 | 1
+ 7 | 2 | 2 | -1 | 0
+(7 rows)
+
+```
+# pgr_trspViaEdges
+*pgr_trspViaEdges* will use the original code when
+* There are restrictions
+* A point is a vertex in disguise (with pcts value of 0)
+
+What it returns
+* Error to represent no route
+* the points are renumbered to -1, -2 .. -N
+* if a point is part of a path it will **not** show on the path
+
+Exaple execution
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.9
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 2 | 2 | 1 | 0.5
+(8 rows)
+
+```
+A temporay wraper function is used when:
+* There are no restrictions
+* Before: No point is a vertex in disguise (with pcts value of 0)
+* Now: c$Undefined behaviour when a point is a vertex in disguise (with pcts value of 0)
+
+Internaly:
+* builds a new graph and calls pgr_dijkstraVia
+
+What it returns
+* returns EMPTY SET to represent no route
+* edge = -1 in the result to represent the end of a intermediate path
+* edge = -2 in the result to represent the end of the last path & route
+* the points are renumbered to -1, -2 .. -N
+* if a point is part of a path it will show on the path
+
+Note: I do not mention the wrapper name due to the fact that this is not official documentation
+Note: I will use *_pgr_withPointsVia* as the wrapper name just for sake of this notes
+Example excution
+```
+SELECT * FROM _pgr_withPointsVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
+ directed := false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 1 | 1 | -1 | -2 | -1 | 1 | 0.1 | 0 | 0
+ 2 | 1 | 2 | -1 | -2 | 2 | 2 | 0.5 | 0.1 | 0.1
+ 3 | 1 | 3 | -1 | -2 | -2 | -1 | 0 | 0.6 | 0.6
+ 4 | 2 | 1 | -2 | -3 | -2 | 2 | 0.5 | 0 | 0.6
+ 5 | 2 | 2 | -2 | -3 | 2 | 1 | 0.5 | 0.5 | 1.1
+ 6 | 2 | 3 | -2 | -3 | -3 | -2 | 0 | 1 | 1.6
+(6 rows)
+
+```
+## pgr_trspViaEdges No path representation differences
+This example no path is found (edge 17 is disconnected) from the big graph.
+* There is a vertex in disguise (fraction 0 or 1)
+* Undefined behaviour
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 17, 1], ARRAY[0,0.5,0.5],
+ false, true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | | | |
+(1 row)
+
+```
+This example no path is found (edge 17 is disconnected) from the big graph.
+* Has a restriction
+* *pgr_trspViaEdges* original code is used
+* throws error to represent no route was not found
+
+```
+SELECT * FROM pgr_trspViaEdges(
+$$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ARRAY[1, 17, 1], ARRAY[0.5,0.5,0.5],
+false, true,
+$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, 32, 33::TEXT AS via_path$$
+);
+server closed the connection unexpectedly
+This probably means the server terminated abnormally
+before or while processing the request.
+The connection to the server was lost. Attempting reset: Failed.
+```
+This example no path is found (edge 17 is disconnected) from the big graph.
+* *_pgr_withPointsVia* is used
+* returns EMPTY SET to represent no route
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 17, 1], ARRAY[0.1,0.5,0.5],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+(0 rows)
+
+```
+## (pgr_trspViaEdges) Using the pointsOfInterest table
+Only routing points
+when *_pgr_withPointsVia* is used
+* the renumbering still takes place
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.4
+ 2 | 1 | 2 | 4 | 0.3
+ 3 | 1 | -3 | 4 | 0.3
+ 4 | 1 | 5 | 10 | 1
+ 5 | 1 | 10 | 12 | 0.6
+ 6 | 1 | -2 | -1 | 0
+ 7 | 2 | -2 | 12 | 0.6
+ 8 | 2 | 10 | 10 | 1
+ 9 | 2 | 5 | 4 | 0.3
+ 10 | 2 | -3 | -2 | 0
+(10 rows)
+
+```
+Only routing points
+when originalcode is used (because there is a restriction)
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.6
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 10 | 1
+ 4 | 1 | 10 | 12 | 1
+ 5 | 2 | 11 | 13 | 1
+ 6 | 2 | 12 | 15 | 1
+ 7 | 2 | 9 | 9 | 1
+ 8 | 2 | 6 | 8 | 1
+ 9 | 2 | 5 | 4 | 0.3
+(9 rows)
+
+```
+Routing points & vertices
+* vertex 6 is on edge 11 with fraction 0
+* Undefined behavior
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ 11],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ 0],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.6
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 10 | 1
+ 4 | 1 | 10 | 12 | 0.6
+ 5 | 1 | -2 | -1 | 0
+(5 rows)
+
+```
+BEGIN;
+BEGIN
+ROLLBACK;
+ROLLBACK
diff --git a/doc/src/CMakeLists.txt b/doc/src/CMakeLists.txt
new file mode 100644
index 0000000..1e30730
--- /dev/null
+++ b/doc/src/CMakeLists.txt
@@ -0,0 +1,20 @@
+
+SET(LOCAL_FILES
+ index.rst
+ pgRouting-concepts.rst
+ pgRouting-installation.rst
+ pgRouting-introduction.rst
+ proposed.rst
+ release_notes.rst
+ routingFunctions.rst
+ sampledata.rst
+ support.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/src/index.rst b/doc/src/index.rst
new file mode 100644
index 0000000..b4be075
--- /dev/null
+++ b/doc/src/index.rst
@@ -0,0 +1,138 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _index:
+
+*******************************************************************************
+Table of Contents
+*******************************************************************************
+
+pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ geospatial database to provide geospatial routing and other network analysis functionality.
+
+This is the manual for pgRouting |release|.
+
+.. image:: _static/images/ccbysa.png
+ :align: left
+ :alt: Creative Commons Attribution-Share Alike 3.0 License
+
+The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel free to use this material any way you like, but we ask that you attribute credit to the pgRouting Project and wherever possible, a link back to http://pgrouting.org. For other licenses used in pgRouting see the :ref:`license` page.
+
+General
+===============================================================================
+
+.. toctree::
+ :maxdepth: 2
+
+ pgRouting-introduction
+ pgRouting-installation
+ support
+
+
+- :doc:`sampledata` that is used in the examples of this manual.
+
+.. toctree::
+ :hidden:
+
+ sampledata
+
+Pgrouting Concepts
+===============================================================================
+
+.. toctree::
+ :maxdepth: 2
+
+ pgRouting-concepts
+
+
+.. rubric:: Reference
+
+:ref:`pgr_version` - to get pgRouting's version information.
+
+.. toctree::
+ :hidden:
+
+ pgr_version
+
+
+:ref:`Data Types <data_types>`
+===============================================================================
+
+
+- :ref:`type_cost_result` - A set of records to describe a path result with cost attribute.
+- :ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a path result with cost attribute.
+- :ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a path result with geometry attribute.
+
+.. toctree::
+ :hidden:
+
+ types_index
+
+
+:ref:`Topology Functions <topology_functions>`
+===============================================================================
+
+- :ref:`pgr_create_topology` - to create a topology based on the geometry.
+- :ref:`pgr_create_vert_table` - to reconstruct the vertices table based on the source and target information.
+- :ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge table.
+- :ref:`pgr_analyze_oneway` - to analyze directionality of the edges.
+- :ref:`pgr_node_network` -to create nodes to a not noded edge table.
+
+.. toctree::
+ :hidden:
+
+ topology-functions
+
+
+:ref:`Routing functions <routing_functions>`
+===============================================================================
+
+.. toctree::
+ :hidden:
+
+ routingFunctions
+
+
+.. include:: routingFunctions.rst
+ :start-after: from-here
+ :end-before: to-here
+
+
+
+Available Functions but not official pgRouting functions
+===============================================================================
+
+- :ref:`Stable`
+- :ref:`proposed`
+
+.. toctree::
+ :hidden:
+
+ proposed
+
+
+
+:ref:`Change Log <change_log>`
+===============================================================================
+
+.. include:: release_notes.rst
+ :start-after: changelog start
+ :end-before: changelog end
+
+
+.. toctree::
+ :hidden:
+
+ release_notes
+
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/src/pgRouting-concepts.rst b/doc/src/pgRouting-concepts.rst
index 9d2be2b..529d11d 100644
--- a/doc/src/pgRouting-concepts.rst
+++ b/doc/src/pgRouting-concepts.rst
@@ -12,33 +12,7 @@
pgRouting Concepts
===============================================================================
-.. rubric:: Table of Contents
-
-.. concepts_start
-
-* :ref:`Getting_started`
-
- * :ref:`create_database`
- * :ref:`load_data`
- * :ref:`build_topology`
- * :ref:`check_graph`
- * :ref:`compute_path`
- * `pgRouting Workshop <http://workshop.pgrouting.org>`_
-
-* :ref:`inner_queries`
-* :ref:`return_values`
-* :ref:`Advanced_Topics`
-
- * :ref:`topology`
- * :ref:`analytics`
- * :ref:`performance`
-
-* :ref:`how_contribute`
-
-
-
-
-.. concepts_end
+.. contents::
.. _Getting_started:
@@ -48,10 +22,8 @@ Getting Started
This is a simple guide to walk you through the steps of getting started
with pgRouting. In this guide we will cover:
-* :ref:`create_database`
-* :ref:`load_data`
-* :ref:`build_topology`
-* :ref:`check_graph`
+.. contents::
+ :local:
.. _create_database:
@@ -148,7 +120,7 @@ Once you have all the preparation work done above, computing a route is fairly e
We have a lot of different algorithms that can work with your prepared road
network. The general form of a route query is:
-.. code-block:: sql
+.. code-block:: none
select pgr_dijkstra(`SELECT * FROM myroads', 1, 2)
@@ -168,8 +140,21 @@ to get more information about each step in the path.
Inner Queries
-------------------------------------------------------------------------------
-There are several kinds of valid inner queries and also the columns returned are depending of the function..
-Which kind of **edges_sql** will depend on the function(s) requirements.
+.. contents::
+ :local:
+
+There are several kinds of valid inner queries and also the columns returned are depending of the function.
+Which kind of inner query will depend on the function(s) requirements.
+To simplify variety of types, ``ANY-INTEGER`` and ``ANY-NUMERICAL`` is used.
+
+.. where_definition_starts
+
+Where:
+
+:ANY-INTEGER: SMALLINT, INTEGER, BIGINT
+:ANY-NUMERICAL: SMALLINT, INTEGER, BIGINT, REAL, FLOAT
+
+.. where_definition_ends
.. basic_edges_sql_start
@@ -232,6 +217,28 @@ Where:
.. no_id_edges_sql_end
+
+.. pgr_dijkstra_via_parameters_start
+
+Description of the parameters of the signatures
+...............................................................................
+
+=================== ====================== ========= =========================================
+Parameter Type Default Description
+=================== ====================== ========= =========================================
+**edges_sql** ``TEXT`` SQL query as described above.
+**via_vertices** ``ARRAY[ANY-INTEGER]`` Array of ordered vertices identifiers that are going to be visited.
+**directed** ``BOOLEAN`` ``true`` - When ``true`` Graph is considered `Directed`
+ - When ``false`` the graph is considered as Undirected.
+**strict** ``BOOLEAN`` ``false`` - When ``false`` ignores missing paths returning all paths found
+ - When ``true`` if a path is missing stops and returns `EMPTY SET`
+**U_turn_on_edge** ``BOOLEAN`` ``true`` - When ``true`` departing from a visited vertex will not try to avoid using the edge used to reach it. In other words, U turn using the edge with same `id` is allowed.
+ - When ``false`` when a departing from a visited vertex tries to avoid using the edge used to reach it. In other words, U turn using the edge with same `id` is used when no other path is found.
+=================== ====================== ========= =========================================
+
+.. pgr_dijkstra_via_parameters_end
+
+
.. xy_edges_sql_start
Description of the edges_sql query for astar like functions
@@ -331,11 +338,15 @@ Where:
.. points_sql_end
+
.. _return_values:
Return columns & values
--------------------------------------------------------------------------------
+.. contents::
+ :local:
+
There are several kinds of columns returned are depending of the function.
.. return_path_start
@@ -398,12 +409,14 @@ Column Type Description
.. result_flow_end
-
.. _advanced_topics:
Advanced Topics
-------------------------------------------------------------------------------
+.. contents::
+ :local:
+
.. _topology:
Routing Topology
@@ -508,7 +521,7 @@ Now your database should be ready to use any (most?) of the pgRouting algorithms
.. _analytics:
Graph Analytics
--------------------------------------------------------------------------------
+...............................................................................
.. rubric:: Overview
@@ -546,8 +559,8 @@ With :ref:`pgr_analyze_graph` the graph can be checked for errors. For example f
In the vertices table "mytab_vertices_pgr":
- - Deadends are identified by ``cnt=1``
- - Potencial gap problems are identified with ``chk=1``.
+- Deadends are identified by ``cnt=1``
+- Potencial gap problems are identified with ``chk=1``.
.. code-block:: sql
@@ -589,15 +602,15 @@ The rules are defined as an array of text strings that if match the ``col`` valu
Example
-...............................................................................
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Lets assume we have a table "st" of edges and a column "one_way" that might have values like:
- * 'FT' - oneway from the source to the target node.
- * 'TF' - oneway from the target to the source node.
- * 'B' - two way street.
- * '' - empty field, assume twoway.
- * <NULL> - NULL field, use two_way_if_null flag.
+* 'FT' - oneway from the source to the target node.
+* 'TF' - oneway from the target to the source node.
+* 'B' - two way street.
+* '' - empty field, assume twoway.
+* <NULL> - NULL field, use two_way_if_null flag.
Then we could form the following query to analyze the oneway streets for errors.
@@ -630,6 +643,10 @@ The above tools do not detect all network issues, but they will identify some co
Performance Tips
-------------------------------------------------------------------------------
+.. contents::
+ :local:
+
+
For the Routing functions
...............................................................................
diff --git a/doc/src/pgRouting-installation.rst b/doc/src/pgRouting-installation.rst
index affc604..d2fa231 100644
--- a/doc/src/pgRouting-installation.rst
+++ b/doc/src/pgRouting-installation.rst
@@ -133,7 +133,7 @@ To be able to compile pgRouting, make sure that the following dependencies are m
* C and C++0x compilers
* g++ version >= 4.8
-* Postgresql version >= 9.1
+* Postgresql version >= 9.2
* PostGIS version >= 2.0
* The Boost Graph Library (BGL). Version >= 1.46
* CMake >= 2.8.8
diff --git a/doc/src/pgRouting-introduction.rst b/doc/src/pgRouting-introduction.rst
index e2daeb9..1360d66 100644
--- a/doc/src/pgRouting-introduction.rst
+++ b/doc/src/pgRouting-introduction.rst
@@ -14,12 +14,12 @@ Introduction
pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL <http://postgresql.org>`_ geospatial database and adds routing and other network analysis functionality. A predecessor of pgRouting – pgDijkstra, written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to pgRouting. The project is now supported and maintained by `Georepublic <http://georepublic.info>`_, `iMaptools <http://imaptoo [...]
-pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo Live <http://live.osgeo.org/>`_.
+pgRouting is part of `OSGeo Community Projects <http://wiki.osgeo.org/wiki/OSGeo_Community_Projects>`_ from the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo Live <http://live.osgeo.org/>`_.
.. _license:
-License
+Licensing
-------------------------------------------------------------------------------
The following licenses can be found in pgRouting:
@@ -50,7 +50,7 @@ This Release Contributors
Individuals (in alphabetical order)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Virginia Vergara
+Maoguang Wang, Vidhan Jain, Virginia Vergara
And all the people that give us a little of their time making comments, finding issues, making pull requests etc.
@@ -59,10 +59,10 @@ Corporate Sponsors (in alphabetical order)
These are corporate entities that have contributed developer time, hosting, or direct monetary funding to the pgRouting project:
- - `Georepublic <https://georepublic.info/en/>`__
- - `Google Summer of Code <https://developers.google.com/open-source/gsoc/>`_
- - `iMaptools <http://imaptools.com>`__
- - `Paragon Corporation <http://www.paragoncorporation.com/>`_
+- `Georepublic <https://georepublic.info/en/>`__
+- `Google Summer of Code <https://developers.google.com/open-source/gsoc/>`_
+- `iMaptools <http://imaptools.com>`__
+- `Paragon Corporation <http://www.paragoncorporation.com/>`_
Contributors Past & Present:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -70,20 +70,20 @@ Contributors Past & Present:
Individuals (in alphabetical order)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Akio Takubo, Andrea Nardelli, Anton Patrushev, Ashraf Hossain, Christian Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, Kai Behncke, Kishore Kumar, Ko Nagase, Manikata Kondeti, Mario Basa, Martin Wiesenhaan, Maxim Dubinin, Mohamed Zia, Mukul Priya, Razequl Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Stephen Woodbridge, Sylvain Housseman, Sylvain Pasche, Virginia Vergara
+Akio Takubo, Andrea Nardelli, Anton Patrushev, Ashraf Hossain, Christian Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, Kai Behncke, Kishore Kumar, Ko Nagase, Manikata Kondeti, Mario Basa, Martin Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Zia, Mukul Priya, Razequl Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Stephen Woodbridge, Sylvain Housseman, Sylvain Pasche, Vidhan Ja [...]
Corporate Sponsors (in alphabetical order)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
These are corporate entities that have contributed developer time, hosting, or direct monetary funding to the pgRouting project:
- - Camptocamp
- - CSIS (University of Tokyo)
- - Georepublic
- - Google Summer of Code
- - iMaptools
- - Orkney
- - Paragon Corporation
+- Camptocamp
+- CSIS (University of Tokyo)
+- Georepublic
+- Google Summer of Code
+- iMaptools
+- Orkney
+- Paragon Corporation
More Information
diff --git a/doc/src/proposed.rst b/doc/src/proposed.rst
index bbefe9c..8d1ee4b 100644
--- a/doc/src/proposed.rst
+++ b/doc/src/proposed.rst
@@ -9,12 +9,12 @@
.. _Stable:
-Stable proposed Functions
+Stable Proposed Functions
==================================
.. stable-begin-warning
-.. warning:: These are proposed functions for next mayor release.
+.. warning:: Proposed functions for next mayor release.
- They are not officially in the current release.
- They will likely officially be part of the next mayor release:
@@ -38,11 +38,28 @@ As part of the :ref:`dijkstra`
.. rubric:: Families
:ref:`astar`
-
+
.. include:: aStar-family.rst
:start-after: index from here
:end-before: index to here
+:ref:`bdAstar`
+
+.. include:: bdAstar-family.rst
+ :start-after: index from here
+ :end-before: index to here
+
+:ref:`bdDijkstra`
+
+.. include:: bdDijkstra-family.rst
+ :start-after: index from here
+ :end-before: index to here
+
+:ref:`maxFlow`
+
+.. include:: flow-family.rst
+ :start-after: index from here
+ :end-before: index to here
:ref:`withPoints`
@@ -74,6 +91,8 @@ As part of the :ref:`dijkstra`
:hidden:
aStar-family
+ bdAstar-family
+ bdDijkstra-family
withPoints-family
cost-category
@@ -83,13 +102,13 @@ As part of the :ref:`dijkstra`
.. _proposed:
-Experimental and Proposed functions
+Experimental Functions
===============================================================================
.. begin-warn-expr
-.. warning:: These are proposed functions
+.. warning:: Experimental functions
- They are not officially of the current release.
- They likely will not be officially be part of the next release:
@@ -114,25 +133,23 @@ Experimental and Proposed functions
- :ref:`pgr_contractgraph` - Reduce network size using contraction techniques
-:ref:`maxFlow`
-
-.. include:: flow-family.rst
- :start-after: index from here
- :end-before: index to here
-
-
-.. rubric:: Convenience
-
-- :ref:`pgr_point_to_edgenode` - convert a point geometry to a ``vertex_id`` based on closest edge.
.. rubric:: Graph Analysis
- :ref:`pgr_labelGraph` - Analyze / label subgraphs within a network
-.. rubric:: Vehicle Routing Problems
+:ref:`components` - Analyze components within a graph
+
+- :ref:`pgr_connectedComponents` - Return the connected components of an undirected graph
+- :ref:`pgr_strongComponents` - Return the strongly connected components of a directed graph
+- :ref:`pgr_biconnectedComponents` - Return the biconnected components of an undirected graph
+- :ref:`pgr_articulationPoints` - Return the articulation points of an undirected graph
+- :ref:`pgr_bridges` - Return the bridges of an undirected graph
-- :ref:`pgr_gsocvrppdtw` - VRP Pickup & Delivery (Euclidean)
-- :ref:`pgr_vrp_basic` - VRP One Depot
+.. rubric:: VRP
+
+- :ref:`pgr_gsocvrppdtw`
+- :ref:`pgr_vrp_basic`
.. toctree::
@@ -140,24 +157,24 @@ Experimental and Proposed functions
contraction-family
flow-family
- pgr_pointToEdgeNode
pgr_labelGraph
+ components-family
pgr_gsoc_vrppdtw
pgr_vrpOneDepot
+.. rubric:: Graph Transformation
+:doc:`pgr_lineGraph`
+.. toctree::
+ :hidden:
+ pgr_lineGraph
+See Also
+-------------------------------------------------------------------------------
+.. rubric:: Indices and tables
-
-..
- The template
- ------------
- - :ref:`pgr_funnyDijkstra`
- .. toctree::
- :hidden:
- ..
- ../src/funnyDijkstra/doc/pgr_funnyDijkstra.rst
-
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/src/release_notes.rst b/doc/src/release_notes.rst
index 315de45..bd1dd8d 100644
--- a/doc/src/release_notes.rst
+++ b/doc/src/release_notes.rst
@@ -18,6 +18,7 @@ To see the full list of changes check the list of `Git commits <https://github.c
.. changelog start
+* :ref:`changelog_2_5_0`
* :ref:`changelog_2_4_2`
* :ref:`changelog_2_4_1`
* :ref:`changelog_2_4_0`
@@ -36,6 +37,70 @@ To see the full list of changes check the list of `Git commits <https://github.c
.. changelog end
+.. _changelog_2_5_0:
+
+pgRouting 2.5.0 Release Notes
+-------------------------------------------------------------------------------
+
+To see the issues closed by this release see the `Git closed issues for 2.5.0 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.5.0%22+is%3Aclosed>`_ on Github.
+
+
+.. rubric:: enhancement:
+
+* pgr_version is now on SQL language
+
+.. rubric:: Breaking change on:
+
+* pgr_edgeDisjointPaths:
+
+ * Added path_id, cost and agg_cost columns on the result
+ * Parameter names changed
+ * The many version results are the union of the one to one version
+
+.. rubric:: New Signatures:
+
+* pgr_bdAstar(one to one)
+
+.. rubric:: New Proposed functions
+
+* pgr_bdAstar(one to many)
+* pgr_bdAstar(many to one)
+* pgr_bdAstar(many to many)
+* pgr_bdAstarCost(one to one)
+* pgr_bdAstarCost(one to many)
+* pgr_bdAstarCost(many to one)
+* pgr_bdAstarCost(many to many)
+* pgr_bdAstarCostMatrix
+* pgr_bdDijkstra(one to many)
+* pgr_bdDijkstra(many to one)
+* pgr_bdDijkstra(many to many)
+* pgr_bdDijkstraCost(one to one)
+* pgr_bdDijkstraCost(one to many)
+* pgr_bdDijkstraCost(many to one)
+* pgr_bdDijkstraCost(many to many)
+* pgr_bdDijkstraCostMatrix
+* pgr_lineGraph
+* pgr_connectedComponents
+* pgr_strongComponents
+* pgr_biconnectedComponents
+* pgr_articulationPoints
+* pgr_bridges
+
+.. rubric:: Deprecated Signatures
+
+* pgr_bdastar - use pgr_bdAstar instead
+
+.. rubric:: Renamed Functions
+
+* pgr_maxFlowPushRelabel - use pgr_pushRelabel instead
+* pgr_maxFlowEdmondsKarp -use pgr_edmondsKarp instead
+* pgr_maxFlowBoykovKolmogorov - use pgr_boykovKolmogorov instead
+* pgr_maximumCardinalityMatching - use pgr_maxCardinalityMatch instead
+
+.. rubric:: Deprecated function
+
+* pgr_pointToEdgeNode
+
.. _changelog_2_4_2:
diff --git a/doc/src/routingFunctions.rst b/doc/src/routingFunctions.rst
index fd4b2b6..4924e1f 100644
--- a/doc/src/routingFunctions.rst
+++ b/doc/src/routingFunctions.rst
@@ -25,7 +25,7 @@ Routing Functions
:ref:`pgr_astar` - Shortest Path A*
-:ref:`pgr_bdAstar<bd_astar>` - Bi-directional A* Shortest Path
+:ref:`pgr_bdAstar` - Bi-directional A* Shortest Path
:ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path
@@ -65,3 +65,11 @@ Routing Functions
pgr_trsp
TSP-family
drivingDistance-category
+
+See Also
+-------------------------------------------------------------------------------
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/src/sampledata.rst b/doc/src/sampledata.rst
index c7733d0..4e5cb19 100644
--- a/doc/src/sampledata.rst
+++ b/doc/src/sampledata.rst
@@ -7,8 +7,6 @@
Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
****************************************************************************
-.. _sampledata:
-
Sample Data
===============================================================================
@@ -73,54 +71,57 @@ To be able to execute the sample queries, run the following SQL commands to crea
Images
-------
+----------------
* Red arrows correspond when ``cost`` > 0 in the edge table.
* Blue arrows correspond when ``reverse_cost`` > 0 in the edge table.
* Points are outside the graph.
* Click on the graph to enlarge.
-.. note:: On all graphs,
+.. _fig1:
-.. rubric:: Network for queries marked as ``directed`` and ``cost`` and ``reverse_cost`` columns are used:
+Network for queries marked as ``directed`` and ``cost`` and ``reverse_cost`` columns are used
+......................................................................................................
When working with city networks, this is recommended for point of view of vehicles.
-.. _fig1:
-.. figure:: images/Fig1-originalData.png
+.. figure:: /images/Fig1-originalData.png
**Graph 1: Directed, with cost and reverse cost**
+.. _fig2:
-.. rubric:: Network for queries marked as ``undirected`` and ``cost`` and ``reverse_cost`` columns are used:
+Network for queries marked as ``undirected`` and ``cost`` and ``reverse_cost`` columns are used
+......................................................................................................
When working with city networks, this is recommended for point of view of pedestrians.
-.. _fig2:
-.. figure:: images/Fig6-undirected.png
+.. figure:: /images/Fig6-undirected.png
:scale: 50%
**Graph 2: Undirected, with cost and reverse cost**
+.. _fig3:
-.. rubric:: Network for queries marked as ``directed`` and only ``cost`` column is used:
+Network for queries marked as ``directed`` and only ``cost`` column is used
+......................................................................................................
-.. _fig3:
-.. figure:: images/Fig2-cost.png
+.. figure:: /images/Fig2-cost.png
:scale: 20%
**Graph 3: Directed, with cost**
+.. _fig4:
-.. rubric:: Network for queries marked as ``undirected`` and only ``cost`` column is used:
+Network for queries marked as ``undirected`` and only ``cost`` column is used
+......................................................................................................
-.. _fig4:
-.. figure:: images/Fig4-costUndirected.png
+.. figure:: /images/Fig4-costUndirected.png
:scale: 20%
**Graph 4: Undirected, with cost**
@@ -128,9 +129,10 @@ When working with city networks, this is recommended for point of view of pedest
.. _pickdeliverdata:
+
Pick & Deliver Data
-.........................
+...............................................................................
-.. literalinclude:: ../../src/pickDeliver/test/pickDeliver.data
+.. literalinclude:: ../../tools/testers/vrppdtw_data.sql
diff --git a/doc/test/example_recipe.result b/doc/test/example_recipe.result
deleted file mode 100644
index 21da4d2..0000000
--- a/doc/test/example_recipe.result
+++ /dev/null
@@ -1,5 +0,0 @@
-OK
-OK
-OK
-OK
-OK
diff --git a/doc/test/example_recipe.test.sql b/doc/test/example_recipe.test.sql
deleted file mode 100644
index 5fdaf1f..0000000
--- a/doc/test/example_recipe.test.sql
+++ /dev/null
@@ -1,30 +0,0 @@
-/*..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-*/
---.. _example_recipe:
-
---Comparing topology of a unnoded network with a noded network
--------------------------------------------------------------
-
---:Author: pgRouting team.
---:Licence: Open Source
-
---This recipe uses the :ref:`sampledata` network.
-
---The purpose of this recipe is to compare a not nodded network with a nodded network.
-
---.. code-block:: sql
-
-
-SET client_min_messages TO WARNING;
- SELECT pgr_createTopology('edge_table', 0.001);
- SELECT pgr_analyzegraph('edge_table', 0.001);
- SELECT pgr_nodeNetwork('edge_table', 0.001);
- SELECT pgr_createTopology('edge_table_noded', 0.001);
- SELECT pgr_analyzegraph('edge_table_noded', 0.001);
diff --git a/doc/test/parallel_handling.result b/doc/test/parallel_handling.result
deleted file mode 100644
index 7173ec1..0000000
--- a/doc/test/parallel_handling.result
+++ /dev/null
@@ -1,24 +0,0 @@
-OK
-1|1|1
-1|2|2
-1|3|5
-1|4|-1
-2|1|1
-2|2|6
-2|5|7
-2|6|8
-2|3|5
-2|4|-1
-1|0||-1|-1
-2|1|1|2|1
-3|1|2|3|2
-4|1|3|4|5
-5|1|4|-1|-1
-6|2|1|2|1
-7|2|2|3|3
-8|2|3|4|5
-9|2|4|-1|-1
-10|3|1|2|1
-11|3|2|3|4
-12|3|3|4|5
-13|3|4|-1|-1
diff --git a/doc/test/parallel_handling.test.sql b/doc/test/parallel_handling.test.sql
deleted file mode 100644
index 5e6753a..0000000
--- a/doc/test/parallel_handling.test.sql
+++ /dev/null
@@ -1,125 +0,0 @@
-SET client_min_messages = WARNING;
-
- drop table if exists parallel;
- CREATE TABLE parallel (
- id serial,
- source integer,
- target integer,
- cost double precision,
- reverse_cost double precision,
- x1 double precision,
- y1 double precision,
- x2 double precision,
- y2 double precision,
- the_geom geometry
- );
-
- INSERT INTO parallel (x1,y1,x2,y2)
- VALUES (1,0,1,1),(1,1,1,3),(1,1,1,3),(1,1,1,3),(1,3,1,4),(1,1,-1,1),(-1,1,-1,3),(-1,3,1,3);
- UPDATE parallel SET the_geom = ST_makeline(ST_point(x1,y1),ST_point(x2,y2));
- UPDATE parallel SET the_geom = ST_makeline(ARRAY[ST_point(1,1),ST_point(0,2),ST_point(1,3)]) WHERE id = 3;
- UPDATE parallel SET the_geom = ST_makeline(ARRAY[ST_point(1,1),ST_point(2,1),ST_point(2,3),ST_point(1,3)])
- WHERE id = 4;
- UPDATE parallel SET cost = ST_length(the_geom), reverse_cost = ST_length(the_geom);
-
- SET client_min_messages = WARNING;
- SELECT pgr_createTopology('parallel',0.001);
-
-
- select seq, path_id as route, node, edge into routes
- from pgr_ksp('select id, source, target, cost, reverse_cost from parallel',
- 1, 4, 3);
-
- select route, node, edge from routes;
-
- CREATE AGGREGATE array_accum (anyelement)
- (
- sfunc = array_append,
- stype = anyarray,
- initcond = '{}'
- );
-
-
-
- select distinct seq,route,source,target, array_accum(id) as edges into paths
- from (select seq, route, source, target
- from parallel, routes where id = edge) as r
- join parallel using (source, target)
- group by seq,route,source,target order by seq;
-
- -- select route, source, target, edges from paths;
-
- create or replace function multiply( integer, integer )
- returns integer as
- $$
- select $1 * $2;
- $$
- language sql stable;
-
- create aggregate prod(integer)
- (
- sfunc = multiply,
- stype = integer,
- initcond = 1
- );
-
-
-
- CREATE OR REPLACE function expand_parallel_edge_paths(tab text)
- returns TABLE (
- seq INTEGER,
- route INTEGER,
- source INTEGER, target INTEGER, -- this ones are not really needed
- edge INTEGER ) AS
- $body$
- DECLARE
- nroutes INTEGER;
- newroutes INTEGER;
- rec record;
- seq2 INTEGER := 1;
- rnum INTEGER := 0;
-
- BEGIN -- get the number of distinct routes
- execute 'select count(DISTINCT route) from ' || tab INTO nroutes;
- FOR i IN 0..nroutes-1
- LOOP
- -- compute the number of new routes this route will expand into
- -- this is the product of the lengths of the edges array for each route
- execute 'select prod(array_length(edges, 1))-1 from '
- || quote_ident(tab) || ' where route=' || i INTO newroutes;
- -- now we generate the number of new routes for this route
- -- by repeatedly listing the route and swapping out the parallel edges
- FOR j IN 0..newroutes
- LOOP
- -- query the specific route
- FOR rec IN execute 'select * from ' || quote_ident(tab) ||' where route=' || i
- || ' order by seq'
- LOOP
- seq := seq2;
- route := rnum;
- source := rec.source;
- target := rec.target;
- -- using module arithmetic iterate through the various edge choices
- edge := rec.edges[(j % (array_length(rec.edges, 1)))+1];
- -- return a new record
- RETURN next;
- seq2 := seq2 + 1; -- increment the record count
- END LOOP;
- seq := seq2;
- route := rnum;
- source := rec.target;
- target := -1;
- edge := -1;
- RETURN next; -- Insert the ending record of the route
- seq2 := seq2 + 1;
-
- rnum := rnum + 1; -- increment the route count
- END LOOP;
- END LOOP;
- END;
- $body$
- language plpgsql volatile strict cost 100 rows 100;
-
-
-
- select * from expand_parallel_edge_paths( 'paths' );
diff --git a/doc/test/test.conf b/doc/test/test.conf
deleted file mode 100644
index a918f4f..0000000
--- a/doc/test/test.conf
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/perl -w
-
-# ksp-any # this test does not return consistent results
-
-%main::tests = (
- 'any' => {
- 'comment' => 'documentation SQL tests for any versions.',
- 'data' => ['tsp.data'],
- 'tests' => [qw(
- example_recipe
- parallel_handling
- utilities-any
- )]
- },
-# 'vpg-vpgis' => {}, # for version specific tests
-# '8-1' => {}, # for pg 8.x and postgis 1.x
-# '9.2-2.1' => {}, # for pg 9.2 and postgis 2.1
-);
-
-1;
diff --git a/doc/test/utilities-any.result b/doc/test/utilities-any.result
deleted file mode 100644
index 8e8299d..0000000
--- a/doc/test/utilities-any.result
+++ /dev/null
@@ -1 +0,0 @@
-2.4.2
diff --git a/doc/test/utilities-any.test.sql b/doc/test/utilities-any.test.sql
deleted file mode 100644
index 99ad04b..0000000
--- a/doc/test/utilities-any.test.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-
---------------------------------------------------------------------------------
--- pgr_version
---------------------------------------------------------------------------------
--- SELECT pgr_version(); -- DON'T USE THIS IT CHANGES WITH EVERY COMMIT
-SELECT version FROM pgr_version(); -- This changes infrequently
diff --git a/doc/topology/CMakeLists.txt b/doc/topology/CMakeLists.txt
new file mode 100644
index 0000000..fb3dbcb
--- /dev/null
+++ b/doc/topology/CMakeLists.txt
@@ -0,0 +1,20 @@
+
+SET(LOCAL_FILES
+ pgr_analyzeGraph.rst
+ pgr_createTopology.rst
+ pgr_nodeNetwork.rst
+ pgr_analyzeOneWay.rst
+ pgr_createVerticesTable.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()
+
+
+add_subdirectory("images")
+set(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} PARENT_SCOPE)
+
diff --git a/doc/topology/images/CMakeLists.txt b/doc/topology/images/CMakeLists.txt
new file mode 100644
index 0000000..3a60bea
--- /dev/null
+++ b/doc/topology/images/CMakeLists.txt
@@ -0,0 +1,15 @@
+
+SET(LOCAL_FILES
+ after_node_net.png
+ before_node_net.png
+ #Fig3-reverseCost.png
+ #Fig5-reverseCostUndirected.png
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}" COPYONLY)
+ list(APPEND LOCAL_IMG_FILES "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}")
+endforeach()
+
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} ${LOCAL_IMG_FILES} PARENT_SCOPE)
+
diff --git a/src/topology/doc/images/Fig3-reverseCost.png b/doc/topology/images/Fig3-reverseCost.png
similarity index 100%
rename from src/topology/doc/images/Fig3-reverseCost.png
rename to doc/topology/images/Fig3-reverseCost.png
diff --git a/src/topology/doc/images/Fig5-reverseCostUndirected.png b/doc/topology/images/Fig5-reverseCostUndirected.png
similarity index 100%
rename from src/topology/doc/images/Fig5-reverseCostUndirected.png
rename to doc/topology/images/Fig5-reverseCostUndirected.png
diff --git a/src/topology/doc/images/after_node_net.png b/doc/topology/images/after_node_net.png
similarity index 100%
rename from src/topology/doc/images/after_node_net.png
rename to doc/topology/images/after_node_net.png
diff --git a/src/topology/doc/images/before_node_net.png b/doc/topology/images/before_node_net.png
similarity index 100%
rename from src/topology/doc/images/before_node_net.png
rename to doc/topology/images/before_node_net.png
diff --git a/doc/topology/pgr_analyzeGraph.rst b/doc/topology/pgr_analyzeGraph.rst
new file mode 100644
index 0000000..d882b9c
--- /dev/null
+++ b/doc/topology/pgr_analyzeGraph.rst
@@ -0,0 +1,404 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_analyze_graph:
+
+pgr_analyzeGraph
+===============================================================================
+
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_analyzeGraph`` — Analyzes the network topology.
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+The function returns:
+
+- ``OK`` after the analysis has finished.
+- ``FAIL`` when the analysis was not completed due to an error.
+
+.. index::
+ single: analyzeGraph(Complete Signature)
+
+.. code-block:: sql
+
+ varchar pgr_analyzeGraph(text edge_table, double precision tolerance,
+ text the_geom:='the_geom', text id:='id',
+ text source:='source',text target:='target',text rows_where:='true')
+
+Description
+-------------------------------------------------------------------------------
+
+.. rubric:: Prerequisites
+
+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 <edge_table>_vertices_pgr that stores the vertices information.
+
+- Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the vertices table.
+- Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology and the vertices table.
+
+.. rubric:: Parameters
+
+The analyze graph function accepts the following parameters:
+
+:edge_table: ``text`` Network table name. (may contain the schema name as well)
+:tolerance: ``float8`` Snapping tolerance of disconnected edges. (in projection unit)
+:the_geom: ``text`` Geometry column name of the network table. Default value is ``the_geom``.
+:id: ``text`` Primary key column name of the network table. Default value is ``id``.
+:source: ``text`` Source column name of the network table. Default value is ``source``.
+:target: ``text`` Target column name of the network table. Default value is ``target``.
+:rows_where: ``text`` Condition to select a subset or rows. Default value is ``true`` to indicate all rows.
+
+The function returns:
+
+- ``OK`` after the analysis has finished.
+
+ * Uses the vertices table: <edge_table>_vertices_pgr.
+ * Fills completely the ``cnt`` and ``chk`` columns of the vertices table.
+ * Returns the analysis of the section of the network defined by ``rows_where``
+
+- ``FAIL`` when the analysis was not completed due to an error.
+
+ * The vertices table is not found.
+ * A required column of the Network table is not found or is not of the appropriate type.
+ * The condition is not well formed.
+ * The names of source , target or id are the same.
+ * The SRID of the geometry could not be determined.
+
+
+.. rubric:: The Vertices Table
+
+The vertices table can be created with :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`
+
+The structure of the vertices table is:
+
+:id: ``bigint`` Identifier of the vertex.
+:cnt: ``integer`` Number of vertices in the edge_table that reference this vertex.
+:chk: ``integer`` Indicator that the vertex might have a problem.
+:ein: ``integer`` Number of vertices in the edge_table that reference this vertex as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
+:eout: ``integer`` Number of vertices in the edge_table that reference this vertex as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
+:the_geom: ``geometry`` Point geometry of the vertex.
+
+.. rubric:: History
+
+* New in version 2.0.0
+
+Usage when the edge table's columns MATCH the default values:
+-------------------------------------------------------------------------------
+
+.. rubric:: The simplest way to use pgr_analyzeGraph is:
+
+.. code-block:: sql
+
+ SELECT pgr_createTopology('edge_table',0.001);
+ SELECT pgr_analyzeGraph('edge_table',0.001);
+
+.. rubric:: When the arguments are given in the order described in the parameters:
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target');
+
+We get the same result as the simplest way to use the function.
+
+.. warning:: | An error would occur when the arguments are not given in the appropriate order: 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.
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('edge_table',0.001,'id','the_geom','source','target');
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table',0.001,'id','the_geom','source','target','true')
+ NOTICE: Performing checks, please wait ...
+ NOTICE: Got function st_srid(bigint) does not exist
+ NOTICE: ERROR: something went wrong when checking for SRID of id in table public.edge_table
+ pgr_analyzegraph
+ ------------------
+ FAIL
+ (1 row)
+
+
+.. rubric:: When using the named notation
+
+The order of the parameters do not matter:
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('edge_table',0.001,the_geom:='the_geom',id:='id',source:='source',target:='target');
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('edge_table',0.001,source:='source',id:='id',target:='target',the_geom:='the_geom');
+
+Parameters defined with a default value can be omitted, as long as the value matches the default:
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('edge_table',0.001,source:='source');
+
+.. rubric:: Selecting rows using rows_where parameter
+
+Selecting rows based on the id. Displays the analysis a the section of the network.
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='id < 10');
+
+Selecting the rows where the geometry is near the geometry of row with ``id`` =5 .
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='the_geom && (SELECT st_buffer(the_geom,0.05) FROM edge_table WHERE id=5)');
+
+Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``.
+
+.. code-block:: sql
+
+ DROP TABLE IF EXISTS otherTable;
+ CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
+ SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='the_geom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE gid=100)');
+
+
+
+Usage when the edge table's columns DO NOT MATCH the default values:
+-------------------------------------------------------------------------------
+
+For the following table
+
+.. code-block:: sql
+
+ DROP TABLE IF EXISTS mytable;
+ CREATE TABLE mytable AS (SELECT id AS gid, source AS src ,target AS tgt , the_geom AS mygeom FROM edge_table);
+ SELECT pgr_createTopology('mytable',0.001,'mygeom','gid','src','tgt');
+
+.. rubric:: Using positional notation:
+
+The arguments need to be given in the order described in the parameters:
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt');
+
+.. warning:: | 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.
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('mytable',0.001,'gid','mygeom','src','tgt');
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('mytable',0.001,'gid','mygeom','src','tgt','true')
+ NOTICE: Performing checks, please wait ...
+ NOTICE: Got function st_srid(bigint) does not exist
+ NOTICE: ERROR: something went wrong when checking for SRID of gid in table public.mytable
+ pgr_analyzegraph
+ ------------------
+ FAIL
+ (1 row)
+
+
+
+.. rubric:: When using the named notation
+
+The order of the parameters do not matter:
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('mytable',0.001,the_geom:='mygeom',id:='gid',source:='src',target:='tgt');
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom');
+
+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.
+
+
+.. rubric:: Selecting rows using rows_where parameter
+
+Selecting rows based on the id.
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt',rows_where:='gid < 10');
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom',rows_where:='gid < 10');
+
+Selecting the rows WHERE the geometry is near the geometry of row with ``id`` =5 .
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom,1) FROM mytable WHERE gid=5)');
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom,1) FROM mytable WHERE gid=5)');
+
+Selecting the rows WHERE the geometry is near the place='myhouse' of the table ``othertable``. (note the use of quote_literal)
+
+.. code-block:: sql
+
+ DROP TABLE IF EXISTS otherTable;
+ CREATE TABLE otherTable AS (SELECT 'myhouse'::text AS place, st_point(2.5,2.5) AS other_geom) ;
+ SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt',
+ rows_where:='mygeom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE place='||quote_literal('myhouse')||')');
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE place='||quote_literal('myhouse')||')');
+
+
+
+Examples
+-------------------------------------------------------------------------------
+
+.. code-block:: sql
+
+ SELECT pgr_createTopology('edge_table',0.001);
+ SELECT pgr_analyzeGraph('edge_table', 0.001);
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+ NOTICE: Performing checks, pelase wait...
+ NOTICE: Analyzing for dead ends. Please wait...
+ NOTICE: Analyzing for gaps. Please wait...
+ NOTICE: Analyzing for isolated edges. Please wait...
+ NOTICE: Analyzing for ring geometries. Please wait...
+ NOTICE: Analyzing for intersections. Please wait...
+ NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+ NOTICE: Isolated segments: 2
+ NOTICE: Dead ends: 7
+ NOTICE: Potential gaps found near dead ends: 1
+ NOTICE: Intersections detected: 1
+ NOTICE: Ring geometries: 0
+
+ pgr_analyzeGraph
+ --------------------
+ OK
+ (1 row)
+
+ SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='id < 10');
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id < 10')
+ NOTICE: Performing checks, pelase wait...
+ NOTICE: Analyzing for dead ends. Please wait...
+ NOTICE: Analyzing for gaps. Please wait...
+ NOTICE: Analyzing for isolated edges. Please wait...
+ NOTICE: Analyzing for ring geometries. Please wait...
+ NOTICE: Analyzing for intersections. Please wait...
+ NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+ NOTICE: Isolated segments: 0
+ NOTICE: Dead ends: 4
+ NOTICE: Potential gaps found near dead ends: 0
+ NOTICE: Intersections detected: 0
+ NOTICE: Ring geometries: 0
+
+ pgr_analyzeGraph
+ --------------------
+ OK
+ (1 row)
+
+ SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='id >= 10');
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id >= 10')
+ NOTICE: Performing checks, pelase wait...
+ NOTICE: Analyzing for dead ends. Please wait...
+ NOTICE: Analyzing for gaps. Please wait...
+ NOTICE: Analyzing for isolated edges. Please wait...
+ NOTICE: Analyzing for ring geometries. Please wait...
+ NOTICE: Analyzing for intersections. Please wait...
+ NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+ NOTICE: Isolated segments: 2
+ NOTICE: Dead ends: 8
+ NOTICE: Potential gaps found near dead ends: 1
+ NOTICE: Intersections detected: 1
+ NOTICE: Ring geometries: 0
+
+ pgr_analyzeGraph
+ --------------------
+ OK
+ (1 row)
+
+ -- Simulate removal of edges
+ SELECT pgr_createTopology('edge_table', 0.001,rows_where:='id <17');
+ SELECT pgr_analyzeGraph('edge_table', 0.001);
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+ NOTICE: Performing checks, pelase wait...
+ NOTICE: Analyzing for dead ends. Please wait...
+ NOTICE: Analyzing for gaps. Please wait...
+ NOTICE: Analyzing for isolated edges. Please wait...
+ NOTICE: Analyzing for ring geometries. Please wait...
+ NOTICE: Analyzing for intersections. Please wait...
+ NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+ NOTICE: Isolated segments: 0
+ NOTICE: Dead ends: 3
+ NOTICE: Potential gaps found near dead ends: 0
+ NOTICE: Intersections detected: 0
+ NOTICE: Ring geometries: 0
+
+ pgr_analyzeGraph
+ --------------------
+ OK
+ (1 row)
+ SELECT pgr_createTopology('edge_table', 0.001,rows_where:='id <17');
+ NOTICE: PROCESSING:
+ NOTICE: pgr_createTopology('edge_table',0.001,'the_geom','id','source','target','id <17')
+ NOTICE: Performing checks, pelase wait .....
+ NOTICE: Creating Topology, Please wait...
+ NOTICE: -------------> TOPOLOGY CREATED FOR 16 edges
+ NOTICE: Rows with NULL geometry or NULL id: 0
+ NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+ NOTICE: ----------------------------------------------
+
+ pgr_analyzeGraph
+ --------------------
+ OK
+ (1 row)
+
+ SELECT pgr_analyzeGraph('edge_table', 0.001);
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+ NOTICE: Performing checks, pelase wait...
+ NOTICE: Analyzing for dead ends. Please wait...
+ NOTICE: Analyzing for gaps. Please wait...
+ NOTICE: Analyzing for isolated edges. Please wait...
+ NOTICE: Analyzing for ring geometries. Please wait...
+ NOTICE: Analyzing for intersections. Please wait...
+ NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+ NOTICE: Isolated segments: 0
+ NOTICE: Dead ends: 3
+ NOTICE: Potential gaps found near dead ends: 0
+ NOTICE: Intersections detected: 0
+ NOTICE: Ring geometries: 0
+
+ pgr_analyzeGraph
+ --------------------
+ OK
+ (1 row)
+
+
+The examples use the :doc:`sampledata` network.
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`topology` for an overview of a topology for routing algorithms.
+* :ref:`pgr_analyze_oneway` to analyze directionality of the edges.
+* :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the vertices table based on the source and target information.
+* :ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded edge table.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/topology/pgr_analyzeOneWay.rst b/doc/topology/pgr_analyzeOneWay.rst
new file mode 100644
index 0000000..3bd4a51
--- /dev/null
+++ b/doc/topology/pgr_analyzeOneWay.rst
@@ -0,0 +1,143 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_analyze_oneway:
+
+pgr_analyzeOneway
+===============================================================================
+
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped segments.
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+This function analyzes oneway streets in a graph and identifies any flipped segments.
+
+.. index::
+ single: analyzeOneway(Complete Signature)
+
+.. code-block:: sql
+
+ text pgr_analyzeOneway(geom_table text,
+ text[] s_in_rules, text[] s_out_rules,
+ text[] t_in_rules, text[] t_out_rules,
+ text oneway='oneway', text source='source', text target='target',
+ boolean two_way_if_null=true);
+
+
+Description
+-------------------------------------------------------------------------------
+
+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. Lik [...]
+
+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.
+
+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.
+
+.. rubric:: Prerequisites
+
+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 <edge_table>_vertices_pgr that stores the vertices information.
+
+- Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the vertices table.
+- Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology and the vertices table.
+
+.. rubric:: Parameters
+
+:edge_table: ``text`` Network table name. (may contain the schema name as well)
+:s_in_rules: ``text[]`` source node **in** rules
+:s_out_rules: ``text[]`` source node **out** rules
+:t_in_rules: ``text[]`` target node **in** rules
+:t_out_rules: ``text[]`` target node **out** rules
+:oneway: ``text`` oneway column name name of the network table. Default value is ``oneway``.
+:source: ``text`` Source column name of the network table. Default value is ``source``.
+:target: ``text`` Target column name of the network table. Default value is ``target``.
+:two_way_if_null: ``boolean`` flag to treat oneway NULL values as bi-directional. Default value is ``true``.
+
+.. note:: It is strongly recommended to use the named notation. See :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>` for examples.
+
+
+The function returns:
+
+- ``OK`` after the analysis has finished.
+
+ * Uses the vertices table: <edge_table>_vertices_pgr.
+ * Fills completely the ``ein`` and ``eout`` columns of the vertices table.
+
+- ``FAIL`` when the analysis was not completed due to an error.
+
+ * The vertices table is not found.
+ * A required column of the Network table is not found or is not of the appropriate type.
+ * The names of source , target or oneway are the same.
+
+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.
+
+.. rubric:: The Vertices Table
+
+The vertices table can be created with :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`
+
+The structure of the vertices table is:
+
+:id: ``bigint`` Identifier of the vertex.
+:cnt: ``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`.
+:chk: ``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`.
+:ein: ``integer`` Number of vertices in the edge_table that reference this vertex as incoming.
+:eout: ``integer`` Number of vertices in the edge_table that reference this vertex as outgoing.
+:the_geom: ``geometry`` Point geometry of the vertex.
+
+
+.. rubric:: History
+
+* New in version 2.0.0
+
+
+Examples
+-------------------------------------------------------------------------------
+
+.. code-block:: sql
+
+ SELECT pgr_analyzeOneway('edge_table',
+ ARRAY['', 'B', 'TF'],
+ ARRAY['', 'B', 'FT'],
+ ARRAY['', 'B', 'FT'],
+ ARRAY['', 'B', 'TF'],
+ oneway:='dir');
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table','{"",B,TF}','{"",B,FT}','{"",B,FT}','{"",B,TF}','dir','source','target',t)
+ NOTICE: Analyzing graph for one way street errors.
+ NOTICE: Analysis 25% complete ...
+ NOTICE: Analysis 50% complete ...
+ NOTICE: Analysis 75% complete ...
+ NOTICE: Analysis 100% complete ...
+ NOTICE: Found 0 potential problems in directionality
+
+ pgr_analyzeoneway
+ -------------------
+ OK
+ (1 row)
+
+The queries use the :doc:`sampledata` network.
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`topology` for an overview of a topology for routing algorithms.
+* :ref:`analytics` for an overview of the analysis of a graph.
+* :ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table.
+* :ref:`pgr_create_vert_table` to reconstruct the vertices table based on the source and target information.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/topology/pgr_createTopology.rst b/doc/topology/pgr_createTopology.rst
new file mode 100644
index 0000000..648418b
--- /dev/null
+++ b/doc/topology/pgr_createTopology.rst
@@ -0,0 +1,257 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_create_topology:
+
+pgr_createTopology
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_createTopology`` — Builds a network topology based on the geometry information.
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+The function returns:
+
+- ``OK`` after the network topology has been built and the vertices table created.
+- ``FAIL`` when the network topology was not built due to an error.
+
+.. index::
+ single: createTopology(Complete Signature)
+
+.. code-block:: none
+
+ varchar pgr_createTopology(text edge_table, double precision tolerance,
+ text the_geom:='the_geom', text id:='id',
+ text source:='source',text target:='target',
+ text rows_where:='true', boolean clean:=false)
+
+
+
+Description
+-------------------------------------------------------------------------------
+
+.. rubric:: Parameters
+
+The topology creation function accepts the following parameters:
+
+:edge_table: ``text`` Network table name. (may contain the schema name AS well)
+:tolerance: ``float8`` Snapping tolerance of disconnected edges. (in projection unit)
+:the_geom: ``text`` Geometry column name of the network table. Default value is ``the_geom``.
+:id: ``text`` Primary key column name of the network table. Default value is ``id``.
+:source: ``text`` Source column name of the network table. Default value is ``source``.
+:target: ``text`` Target column name of the network table. Default value is ``target``.
+:rows_where: ``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.
+:clean: ``boolean`` Clean any previous topology. Default value is ``false``.
+
+.. warning::
+
+ The ``edge_table`` will be affected
+
+ - The ``source`` column values will change.
+ - The ``target`` column values will change.
+
+ - An index will be created, if it doesn't exists, to speed up the process to the following columns:
+
+ * ``id``
+ * ``the_geom``
+ * ``source``
+ * ``target``
+
+The function returns:
+
+- ``OK`` after the network topology has been built.
+
+ * Creates a vertices table: <edge_table>_vertices_pgr.
+ * Fills ``id`` and ``the_geom`` columns of the vertices table.
+ * Fills the source and target columns of the edge table referencing the ``id`` of the vertices table.
+
+
+- ``FAIL`` when the network topology was not built due to an error:
+
+ * A required column of the Network table is not found or is not of the appropriate type.
+ * The condition is not well formed.
+ * The names of source , target or id are the same.
+ * The SRID of the geometry could not be determined.
+
+
+.. rubric:: The Vertices Table
+
+The vertices table is a requirement of the :ref:`pgr_analyzeGraph <pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` functions.
+
+The structure of the vertices table is:
+
+:id: ``bigint`` Identifier of the vertex.
+:cnt: ``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`.
+:chk: ``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`.
+:ein: ``integer`` Number of vertices in the edge_table that reference this vertex AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
+:eout: ``integer`` Number of vertices in the edge_table that reference this vertex AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
+:the_geom: ``geometry`` Point geometry of the vertex.
+
+.. rubric:: History
+
+* Renamed in version 2.0.0
+
+Usage when the edge table's columns MATCH the default values:
+-------------------------------------------------------------------------------
+
+.. rubric:: The simplest way to use pgr_createTopology is:
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q1
+ :end-before: --q1.1
+
+
+
+.. rubric:: When the arguments are given in the order described in the parameters:
+
+We get the same result AS the simplest way to use the function.
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q2
+ :end-before: --q2.1
+
+
+.. warning:: | 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.
+
+ .. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q3
+ :end-before: --q3.1
+
+
+.. rubric:: When using the named notation
+
+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.
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q4
+ :end-before: --q4.1
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q5
+ :end-before: --q5.1
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q6
+ :end-before: --q6.1
+
+.. rubric:: Selecting rows using rows_where parameter
+
+Selecting rows based on the id.
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q7
+ :end-before: --q7.1
+
+Selecting the rows where the geometry is near the geometry of row with ``id = 5``.
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q8
+ :end-before: --q8.1
+
+Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``.
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q9
+ :end-before: --q9.1
+
+
+
+
+Usage when the edge table's columns DO NOT MATCH the default values:
+-------------------------------------------------------------------------------
+
+For the following table
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q10
+ :end-before: --q10.1
+
+.. rubric:: Using positional notation:
+
+The arguments need to be given in the order described in the parameters.
+
+Note that this example uses clean flag. So it recreates the whole vertices table.
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q11
+ :end-before: --q11.1
+
+.. warning:: | 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.
+
+ .. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q12
+ :end-before: --q12.1
+
+
+
+.. rubric:: When using the named notation
+
+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:
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q13
+ :end-before: --q13.1
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q14
+ :end-before: --q14.1
+
+
+.. rubric:: Selecting rows using rows_where parameter
+
+Based on id:
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q15
+ :end-before: --q15.1
+
+
+Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``.
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q16
+ :end-before: --q16.1
+
+
+Examples with full output
+-------------------------------------------------------------------------------
+
+This example start a clean topology, with 5 edges, and then its incremented to the rest of the edges.
+
+.. literalinclude:: doc-pgr_createTopology.queries
+ :start-after: --q17
+ :end-before: --q17.1
+
+The example uses the :doc:`sampledata` network.
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`topology` for an overview of a topology for routing algorithms.
+* :ref:`pgr_create_vert_table` to reconstruct the vertices table based on the source and target information.
+* :ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/topology/pgr_createVerticesTable.rst b/doc/topology/pgr_createVerticesTable.rst
new file mode 100644
index 0000000..e5202f7
--- /dev/null
+++ b/doc/topology/pgr_createVerticesTable.rst
@@ -0,0 +1,296 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_create_vert_table:
+
+pgr_createVerticesTable
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_createVerticesTable`` — Reconstructs the vertices table based on the source and target information.
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+The function returns:
+
+- ``OK`` after the vertices table has been reconstructed.
+- ``FAIL`` when the vertices table was not reconstructed due to an error.
+
+.. index::
+ single: createVerticesTable(Complete Signature)
+
+.. code-block:: sql
+
+ pgr_createVerticesTable(edge_table, the_geom, source, target, rows_where)
+ RETURNS VARCHAR
+
+
+
+Description
+-------------------------------------------------------------------------------
+
+.. Rubric:: Parameters
+
+The reconstruction of the vertices table function accepts the following parameters:
+
+:edge_table: ``text`` Network table name. (may contain the schema name as well)
+:the_geom: ``text`` Geometry column name of the network table. Default value is ``the_geom``.
+:source: ``text`` Source column name of the network table. Default value is ``source``.
+:target: ``text`` Target column name of the network table. Default value is ``target``.
+:rows_where: ``text`` Condition to SELECT a subset or rows. Default value is ``true`` to indicate all rows.
+
+.. warning::
+
+ The ``edge_table`` will be affected
+
+ - An index will be created, if it doesn't exists, to speed up the process to the following columns:
+
+ * ``the_geom``
+ * ``source``
+ * ``target``
+
+The function returns:
+
+- ``OK`` after the vertices table has been reconstructed.
+
+ * Creates a vertices table: <edge_table>_vertices_pgr.
+ * Fills ``id`` and ``the_geom`` columns of the vertices table based on the source and target columns of the edge table.
+
+- ``FAIL`` when the vertices table was not reconstructed due to an error.
+
+ * A required column of the Network table is not found or is not of the appropriate type.
+ * The condition is not well formed.
+ * The names of source, target are the same.
+ * The SRID of the geometry could not be determined.
+
+.. rubric:: The Vertices Table
+
+The vertices table is a requierment of the :ref:`pgr_analyzeGraph <pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` functions.
+
+The structure of the vertices table is:
+
+:id: ``bigint`` Identifier of the vertex.
+:cnt: ``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`.
+:chk: ``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`.
+:ein: ``integer`` Number of vertices in the edge_table that reference this vertex as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
+:eout: ``integer`` Number of vertices in the edge_table that reference this vertex as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
+:the_geom: ``geometry`` Point geometry of the vertex.
+
+.. rubric:: History
+
+* Renamed in version 2.0.0
+
+Usage when the edge table's columns MATCH the default values:
+-------------------------------------------------------------------------------
+
+.. rubric:: The simplest way to use pgr_createVerticesTable is:
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('edge_table');
+
+
+.. rubric:: When the arguments are given in the order described in the parameters:
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('edge_table','the_geom','source','target');
+
+We get the same result as the simplest way to use the function.
+
+.. warning:: 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.
+
+ .. code-block:: sql
+
+ SELECT pgr_createVerticesTable('edge_table','source','the_geom','target');
+ NOTICE: pgr_createVerticesTable('edge_table','source','the_geom','target','true')
+ NOTICE: Performing checks, please wait .....
+ NOTICE: ----> PGR ERROR in pgr_createVerticesTable: Wrong type of Column source: the_geom
+ HINT: ----> Expected type of the_geom is integer,smallint or bigint but USER-DEFINED was found
+ NOTICE: Unexpected error raise_exception
+ pgr_createverticestable
+ -------------------------
+ FAIL
+ (1 row)
+
+
+.. rubric:: When using the named notation
+
+The order of the parameters do not matter:
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('edge_table',the_geom:='the_geom',source:='source',target:='target');
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('edge_table',source:='source',target:='target',the_geom:='the_geom');
+
+Parameters defined with a default value can be omitted, as long as the value matches the default:
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('edge_table',source:='source');
+
+.. rubric:: Selecting rows using rows_where parameter
+
+Selecting rows based on the id.
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('edge_table',rows_where:='id < 10');
+
+Selecting the rows where the geometry is near the geometry of row with ``id`` =5 .
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('edge_table',rows_where:='the_geom && (select st_buffer(the_geom,0.5) FROM edge_table WHERE id=5)');
+
+Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``.
+
+.. code-block:: sql
+
+ DROP TABLE IF EXISTS otherTable;
+ CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
+ SELECT pgr_createVerticesTable('edge_table',rows_where:='the_geom && (select st_buffer(othergeom,0.5) FROM otherTable WHERE gid=100)');
+
+
+
+Usage when the edge table's columns DO NOT MATCH the default values:
+-------------------------------------------------------------------------------
+
+For the following table
+
+.. code-block:: sql
+
+ DROP TABLE IF EXISTS mytable;
+ CREATE TABLE mytable AS (SELECT id AS gid, the_geom AS mygeom,source AS src ,target AS tgt FROM edge_table) ;
+
+.. rubric:: Using positional notation:
+
+The arguments need to be given in the order described in the parameters:
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt');
+
+.. warning:: | 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.
+
+ .. code-block:: sql
+
+ SELECT pgr_createVerticesTable('mytable','src','mygeom','tgt');
+ NOTICE: PROCESSING:
+ NOTICE: pgr_createVerticesTable('mytable','src','mygeom','tgt','true')
+ NOTICE: Performing checks, please wait .....
+ NOTICE: ----> PGR ERROR in pgr_createVerticesTable: Table mytable not found
+ HINT: ----> Check your table name
+ NOTICE: Unexpected error raise_exception
+ pgr_createverticestable
+ -------------------------
+ FAIL
+ (1 row)
+
+
+.. rubric:: When using the named notation
+
+The order of the parameters do not matter:
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('mytable',the_geom:='mygeom',source:='src',target:='tgt');
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom');
+
+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.
+
+
+.. rubric:: Selecting rows using rows_where parameter
+
+Selecting rows based on the gid.
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',rows_where:='gid < 10');
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',rows_where:='gid < 10');
+
+Selecting the rows where the geometry is near the geometry of row with ``gid`` =5 .
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',
+ rows_where:='the_geom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE gid=5)');
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE id=5)');
+
+Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``.
+
+.. code-block:: sql
+
+ DROP TABLE IF EXISTS otherTable;
+ CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
+ SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',
+ rows_where:='the_geom && (SELECT st_buffer(othergeom,0.5) FROM otherTable WHERE gid=100)');
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',
+ rows_where:='the_geom && (SELECT st_buffer(othergeom,0.5) FROM otherTable WHERE gid=100)');
+
+
+
+Examples
+-------------------------------------------------------------------------------
+
+.. code-block:: sql
+
+ SELECT pgr_createVerticesTable('edge_table');
+ NOTICE: PROCESSING:
+ NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
+ NOTICE: Performing checks, pelase wait .....
+ NOTICE: Populating public.edge_table_vertices_pgr, please wait...
+ NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
+ NOTICE: FOR 18 EDGES
+ NOTICE: Edges with NULL geometry,source or target: 0
+ NOTICE: Edges processed: 18
+ NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+ NOTICE: ----------------------------------------------
+
+ pgr_createVerticesTable
+ --------------------
+ OK
+ (1 row)
+
+
+The example uses the :doc:`sampledata` network.
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`topology` for an overview of a topology for routing algorithms.
+* :ref:`pgr_createTopology <pgr_create_topology>` to create a topology based on the geometry.
+* :ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table.
+* :ref:`pgr_analyze_oneway` to analyze directionality of the edges.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/topology/pgr_nodeNetwork.rst b/doc/topology/pgr_nodeNetwork.rst
new file mode 100644
index 0000000..f3dc116
--- /dev/null
+++ b/doc/topology/pgr_nodeNetwork.rst
@@ -0,0 +1,399 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_node_network:
+
+pgr_nodeNetwork
+===============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_nodeNetwork`` - Nodes an network edge table.
+
+:Author: Nicolas Ribot
+:Copyright: Nicolas Ribot, The source code is released under the MIT-X license.
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+The function reads edges from a not "noded" network table and writes the "noded" edges into a new table.
+
+.. index::
+ single: pgr_NodeNetwork(Complete Signature)
+
+.. code-block:: sql
+
+ pgr_nodenetwork(edge_table, tolerance, id, text the_geom, table_ending, rows_where, outall)
+ RETURNS TEXT
+
+
+Description
+-------------------------------------------------------------------------------
+
+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: ``integer`` Empty source column to be used with :ref:`pgr_create_topology` function
+:target: ``integer`` Empty target column to be used with :ref:`pgr_create_topology` function
+:the geom: ``geometry`` Geometry column of the noded network
+
+.. rubric:: History
+
+* New in version 2.0.0
+
+
+Example
+-------------------------------------------------------------------------------
+
+Let's create the topology for the data in :doc:`sampledata`
+
+.. code-block:: sql
+
+ SELECT pgr_createTopology('edge_table', 0.001);
+ NOTICE: PROCESSING:
+ NOTICE: pgr_createTopology('edge_table',0.001,'the_geom','id','source','target','true')
+ NOTICE: Performing checks, pelase wait .....
+ NOTICE: Creating Topology, Please wait...
+ NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
+ NOTICE: Rows with NULL geometry or NULL id: 0
+ NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+ NOTICE: ----------------------------------------------
+ pgr_createtopology
+ --------------------
+ OK
+ (1 row)
+
+Now we can analyze the network.
+
+.. code-block:: sql
+
+ SELECT pgr_analyzegraph('edge_table', 0.001);
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+ NOTICE: Performing checks, pelase wait...
+ NOTICE: Analyzing for dead ends. Please wait...
+ NOTICE: Analyzing for gaps. Please wait...
+ NOTICE: Analyzing for isolated edges. Please wait...
+ NOTICE: Analyzing for ring geometries. Please wait...
+ NOTICE: Analyzing for intersections. Please wait...
+ NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+ NOTICE: Isolated segments: 2
+ NOTICE: Dead ends: 7
+ NOTICE: Potential gaps found near dead ends: 1
+ NOTICE: Intersections detected: 1
+ NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+ ------------------
+ OK
+ (1 row)
+
+The analysis tell us that the network has a gap and an intersection. We try to fix the problem using:
+
+.. code-block:: sql
+
+ SELECT pgr_nodeNetwork('edge_table', 0.001);
+ NOTICE: PROCESSING:
+ NOTICE: pgr_nodeNetwork('edge_table',0.001,'the_geom','id','noded')
+ NOTICE: Performing checks, pelase wait .....
+ NOTICE: Processing, pelase wait .....
+ NOTICE: Split Edges: 3
+ NOTICE: Untouched Edges: 15
+ NOTICE: Total original Edges: 18
+ NOTICE: Edges generated: 6
+ NOTICE: Untouched Edges: 15
+ NOTICE: Total New segments: 21
+ NOTICE: New Table: public.edge_table_noded
+ NOTICE: ----------------------------------
+ pgr_nodenetwork
+ -----------------
+ OK
+ (1 row)
+
+Inspecting the generated table, we can see that edges 13,14 and 18 has been segmented
+
+.. code-block:: sql
+
+ SELECT old_id,sub_id FROM edge_table_noded ORDER BY old_id,sub_id;
+ old_id | sub_id
+ --------+--------
+ 1 | 1
+ 2 | 1
+ 3 | 1
+ 4 | 1
+ 5 | 1
+ 6 | 1
+ 7 | 1
+ 8 | 1
+ 9 | 1
+ 10 | 1
+ 11 | 1
+ 12 | 1
+ 13 | 1
+ 13 | 2
+ 14 | 1
+ 14 | 2
+ 15 | 1
+ 16 | 1
+ 17 | 1
+ 18 | 1
+ 18 | 2
+ (21 rows)
+
+We can create the topology of the new network
+
+.. code-block:: sql
+
+ SELECT pgr_createTopology('edge_table_noded', 0.001);
+ NOTICE: PROCESSING:
+ NOTICE: pgr_createTopology('edge_table_noded',0.001,'the_geom','id','source','target','true')
+ NOTICE: Performing checks, pelase wait .....
+ NOTICE: Creating Topology, Please wait...
+ NOTICE: -------------> TOPOLOGY CREATED FOR 21 edges
+ NOTICE: Rows with NULL geometry or NULL id: 0
+ NOTICE: Vertices table for table public.edge_table_noded is: public.edge_table_noded_vertices_pgr
+ NOTICE: ----------------------------------------------
+ pgr_createtopology
+ --------------------
+ OK
+ (1 row)
+
+Now let's analyze the new topology
+
+.. code-block:: sql
+
+ SELECT pgr_analyzegraph('edge_table_noded', 0.001);
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table_noded',0.001,'the_geom','id','source','target','true')
+ NOTICE: Performing checks, pelase wait...
+ NOTICE: Analyzing for dead ends. Please wait...
+ NOTICE: Analyzing for gaps. Please wait...
+ NOTICE: Analyzing for isolated edges. Please wait...
+ NOTICE: Analyzing for ring geometries. Please wait...
+ NOTICE: Analyzing for intersections. Please wait...
+ NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+ NOTICE: Isolated segments: 0
+ NOTICE: Dead ends: 6
+ NOTICE: Potential gaps found near dead ends: 0
+ NOTICE: Intersections detected: 0
+ NOTICE: Ring geometries: 0
+ pgr_createtopology
+ --------------------
+ OK
+ (1 row)
+
+
+Images
+-------------------------------------------------------------------------------
+
+.. only:: html
+
+ +--------------------------------------+-------------------------------------+
+ |.. Rubric:: Before Image |.. Rubric:: After Image |
+ | | |
+ |.. image:: images/before_node_net.png |.. image:: images/after_node_net.png |
+ | :scale: 60% | :scale: 60% |
+ | :alt: before image | :alt: after image |
+ | :align: left | :align: right |
+ +--------------------------------------+-------------------------------------+
+
+
+.. only:: latex
+
+ .. Rubric:: Before Image
+
+ .. image:: images/before_node_net.png
+ :scale: 60%
+ :alt: before image
+ :align: left
+
+
+ .. Rubric:: After Image
+
+ .. image:: images/after_node_net.png
+ :scale: 60%
+ :alt: after image
+ :align: left
+
+
+Comparing the results
+-------------------------------------------------------------------------------
+
+Comparing with the Analysis in the original edge_table, we see that.
+
++------------------+-----------------------------------------+--------------------------------------------------------------+
+| | Before | After |
++==================+=========================================+==============================================================+
+|Table name | edge_table | edge_table_noded |
++------------------+-----------------------------------------+--------------------------------------------------------------+
+|Fields | All original fields | Has only basic fields to do a topology analysis |
++------------------+-----------------------------------------+--------------------------------------------------------------+
+|Dead ends | - Edges with 1 dead end: 1,6,24 | Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2 |
+| | - Edges with 2 dead ends 17,18 | |
+| | | |
+| | Edge 17's right node is a dead end | |
+| | because there is no other edge sharing | |
+| | that same node. (cnt=1) | |
++------------------+-----------------------------------------+--------------------------------------------------------------+
+|Isolated segments | two isolated segments: 17 and 18 both | No Isolated segments |
+| | they have 2 dead ends | - Edge 17 now shares a node with edges 14-1 and 14-2 |
+| | | - Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2 |
++------------------+-----------------------------------------+--------------------------------------------------------------+
+|Gaps | There is a gap between edge 17 and 14 | Edge 14 was segmented |
+| | because edge 14 is near to the right | Now edges: 14-1 14-2 17 share the same node |
+| | node of edge 17 | The tolerance value was taken in account |
++------------------+-----------------------------------------+--------------------------------------------------------------+
+|Intersections | Edges 13 and 18 were intersecting | Edges were segmented, So, now in the interection's |
+| | | point there is a node and the following edges share it: |
+| | | 13-1 13-2 18-1 18-2 |
++------------------+-----------------------------------------+--------------------------------------------------------------+
+
+Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and 18-2 into our edge-table, copying the data for dir,cost,and reverse cost with tho following steps:
+
+- Add a column old_id into edge_table, this column is going to keep track the id of the original edge
+- Insert only the segmented edges, that is, the ones whose max(sub_id) >1
+
+.. code-block:: sql
+
+ alter table edge_table drop column if exists old_id;
+ alter table edge_table add column old_id integer;
+ insert into edge_table (old_id,dir,cost,reverse_cost,the_geom)
+ (with
+ segmented as (select old_id,count(*) as i from edge_table_noded group by old_id)
+ select segments.old_id,dir,cost,reverse_cost,segments.the_geom
+ from edge_table as edges join edge_table_noded as segments on (edges.id = segments.old_id)
+ where edges.id in (select old_id from segmented where i>1) );
+
+We recreate the topology:
+
+.. code-block:: sql
+
+ SELECT pgr_createTopology('edge_table', 0.001);
+
+ NOTICE: PROCESSING:
+ NOTICE: pgr_createTopology('edge_table',0.001,'the_geom','id','source','target','true')
+ NOTICE: Performing checks, pelase wait .....
+ NOTICE: Creating Topology, Please wait...
+ NOTICE: -------------> TOPOLOGY CREATED FOR 24 edges
+ NOTICE: Rows with NULL geometry or NULL id: 0
+ NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+ NOTICE: ----------------------------------------------
+ pgr_createtopology
+ --------------------
+ OK
+ (1 row)
+
+
+To get the same analysis results as the topology of edge_table_noded, we do the following query:
+
+.. code-block:: sql
+
+ SELECT pgr_analyzegraph('edge_table', 0.001,rows_where:='id not in (select old_id from edge_table where old_id is not null)');
+
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target',
+ 'id not in (select old_id from edge_table where old_id is not null)')
+ NOTICE: Performing checks, pelase wait...
+ NOTICE: Analyzing for dead ends. Please wait...
+ NOTICE: Analyzing for gaps. Please wait...
+ NOTICE: Analyzing for isolated edges. Please wait...
+ NOTICE: Analyzing for ring geometries. Please wait...
+ NOTICE: Analyzing for intersections. Please wait...
+ NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+ NOTICE: Isolated segments: 0
+ NOTICE: Dead ends: 6
+ NOTICE: Potential gaps found near dead ends: 0
+ NOTICE: Intersections detected: 0
+ NOTICE: Ring geometries: 0
+ pgr_createtopology
+ --------------------
+ OK
+ (1 row)
+
+
+To get the same analysis results as the original edge_table, we do the following query:
+
+.. code-block:: sql
+
+ SELECT pgr_analyzegraph('edge_table', 0.001,rows_where:='old_id is null')
+
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','old_id is null')
+ NOTICE: Performing checks, pelase wait...
+ NOTICE: Analyzing for dead ends. Please wait...
+ NOTICE: Analyzing for gaps. Please wait...
+ NOTICE: Analyzing for isolated edges. Please wait...
+ NOTICE: Analyzing for ring geometries. Please wait...
+ NOTICE: Analyzing for intersections. Please wait...
+ NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+ NOTICE: Isolated segments: 2
+ NOTICE: Dead ends: 7
+ NOTICE: Potential gaps found near dead ends: 1
+ NOTICE: Intersections detected: 1
+ NOTICE: Ring geometries: 0
+ pgr_createtopology
+ --------------------
+ OK
+ (1 row)
+
+Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 is an under pass and there is also a street level juction, and the same happens with edges 17 and 13.
+
+.. code-block:: sql
+
+ SELECT pgr_analyzegraph('edge_table', 0.001);
+
+ NOTICE: PROCESSING:
+ NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+ NOTICE: Performing checks, pelase wait...
+ NOTICE: Analyzing for dead ends. Please wait...
+ NOTICE: Analyzing for gaps. Please wait...
+ NOTICE: Analyzing for isolated edges. Please wait...
+ NOTICE: Analyzing for ring geometries. Please wait...
+ NOTICE: Analyzing for intersections. Please wait...
+ NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+ NOTICE: Isolated segments: 0
+ NOTICE: Dead ends: 3
+ NOTICE: Potential gaps found near dead ends: 0
+ NOTICE: Intersections detected: 5
+ NOTICE: Ring geometries: 0
+ pgr_createtopology
+ --------------------
+ OK
+ (1 row)
+
+
+See Also
+-------------------------------------------------------------------------------
+
+:ref:`topology` for an overview of a topology for routing algorithms.
+:ref:`pgr_analyze_oneway` to analyze directionality of the edges.
+:ref:`pgr_create_topology` to create a topology based on the geometry.
+:ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/topology/topology-functions.rst b/doc/topology/topology-functions.rst
new file mode 100644
index 0000000..d5f00f7
--- /dev/null
+++ b/doc/topology/topology-functions.rst
@@ -0,0 +1,40 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _topology_functions:
+
+Topology - Family of Functions
+===============================================================================
+
+The pgRouting's topology of a network, represented with an edge table with source and target attributes and a vertices table associated with it.
+Depending on the algorithm, you can create a topology or just reconstruct the vertices table, You can analyze the topology,
+We also provide a function to node an unoded network.
+
+- :ref:`pgr_create_topology` - to create a topology based on the geometry.
+- :ref:`pgr_create_vert_table` - to reconstruct the vertices table based on the source and target information.
+- :ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge table.
+- :ref:`pgr_analyze_oneway` - to analyze directionality of the edges.
+- :ref:`pgr_node_network` -to create nodes to a not noded edge table.
+
+.. toctree::
+ :hidden:
+
+ pgr_createTopology
+ pgr_createVerticesTable
+ pgr_analyzeGraph
+ pgr_analyzeOneWay
+ pgr_nodeNetwork
+
+See Also
+-------------------------------------------------------------------------------
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/trsp/CMakeLists.txt b/doc/trsp/CMakeLists.txt
new file mode 100644
index 0000000..a2e7d6e
--- /dev/null
+++ b/doc/trsp/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ pgr_trsp.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/trsp/README.md b/doc/trsp/README.md
new file mode 100644
index 0000000..3f6e052
--- /dev/null
+++ b/doc/trsp/README.md
@@ -0,0 +1,1112 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+ROLLBACK;
+ROLLBACK
+# Notes on pgr_trsp for version 2.5.0
+Table of contents
+* [Introduction](#introduction)
+ * [The restriction](#the-restriction)
+* [The Vertices Signature Version](#the-vertices-signature-version)
+ * [No path representation differences](#vertices-no-path-representation-differences)
+ * [Routing from/to same location](#routing-fromto-same-location)
+ * [Undirected graph](#vertices-undirected-graph)
+* [The Edges Signature Version](#the-edges-signature-version)
+ * [No path representation differences](#edges-no-path-representation-differences)
+ * [Definition of a path](#definition-of-a-path)
+ * [Points on the same edge](#points-on-the-same-edge)
+ * [Undirected graph](#edges-undirected-graph)
+ * [Using a points of interest table](#using-a-points-of-interest-table)
+ * [Routing from/to the same point](#routing-fromto-the-same-point)
+ * [Passing in front of other points](#passing-in-front-of-other-points)
+ * [Routing from a vertex to a point](#edges-routing-from-a-vertex-to-a-point)
+* [pgr_trspViaVertices](#pgr_trspviavertices)
+ * [pgr_trspViaVertices No path representation differences](#pgr_trspviavertices-no-path-representation-differences)
+ * [when a path does not exist on the route](#when-a-path-does-not-exist-on-the-route)
+ * [from 2 to 3 to 2](#from-2-to-3-to-2)
+* [pgr_trspViaEdges](#pgr_trspviaedges)
+ * [pgr_trspViaEdges No path representation differences](#pgr_trspviaedges-no-path-representation-differences)
+ * [Using a points of interest table](#pgr_trspviaedges-using-the-pointsofinterest-table)
+
+# Introduction
+pgr_trsp code has issues that are not being fixed yet, but as time passes and new functionality is added to pgRouting with wrappers to **hide** the issues, not to fix them.
+
+For clarity on the queries:
+* _pgr_trsp (with underscore) is the original code
+* pgr_trsp (lower case) represents the wrapper calling the original code
+* pgr_TRSP (upper case) represents the wrapper calling the replacement function, depending on the function, it can be:
+ * pgr_dijkstra
+ * pgr_dijkstraVia
+ * pgr_withPoints
+ * _pgr_withPointsVia
+
+This page intentions is to compare the original code with the wrapped version of the trsp group of functions.
+## The restriction
+The restriction used in the examples does not have to do anything with the graph:
+* No vertex has id: 25, 32 or 33
+* No edge has id: 25, 32 or 33
+```
+$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, 32, 33::TEXT AS via_path$$
+```
+therefore the shortest path expected are as if there was no restriction involved
+# The Vertices signature version
+## (Vertices) No path representation differences
+Original function code
+* Sometimes it crasses the server when no path was found
+* Sometimes represents with Error a no path found
+* Forcing the user to use the wrapper or the replacement function
+
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true
+);
+ERROR: Error computing path: Path Not Found
+```
+dijkstra returns EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+pgr_trsp use the pgr_dijkstra when there are no restrictions
+therefore returns EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+```
+pgr_trsp use the original code when there are restrictions
+therefore throws Error to represent no path found
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ERROR: Error computing path: Path Not Found
+CONTEXT: PL/pgSQL function pgr_trsp(text,integer,integer,boolean,boolean,text) line 29 at RETURN QUERY
+```
+## routing from/to same location
+using dijkstra to verify (1 to 1)
+```
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+This call uses the replacement function because there are no restrictions (1 to 1)
+therefore is expected to return EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+```
+call forcing the use of the original code (1 to 1)
+* not longer allowed without restrictions
+
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 1 | 1 | 1
+ 1 | 2 | 4 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 16 | 1
+ 5 | 4 | 3 | 1
+ 6 | 3 | 2 | 1
+ 7 | 2 | 1 | 1
+ 8 | 1 | -1 | 0
+(9 rows)
+
+```
+trsp with restrictions (1 to 1) use the original code
+is expected to return Error to represent no path found
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 1 | 1 | 1
+ 1 | 2 | 4 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 16 | 1
+ 5 | 4 | 3 | 1
+ 6 | 3 | 2 | 1
+ 7 | 2 | 1 | 1
+ 8 | 1 | -1 | 0
+(9 rows)
+
+```
+trsp calling the original code with restrictions (1 to 1)
+is expected to return Error to represent no path found
+but "finds" a path when there should be no path.
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 1 | 1 | 1
+ 1 | 2 | 4 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 16 | 1
+ 5 | 4 | 3 | 1
+ 6 | 3 | 2 | 1
+ 7 | 2 | 1 | 1
+ 8 | 1 | -1 | 0
+(9 rows)
+
+```
+## (vertices) Undirected graph
+using Dijkstra to verify the shortest path from (2 to 3) on undirected graph
+```
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3, false
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+```
+using the replacement function because there are no restrictions (2 to 3)
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false,
+ true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 2 | 1
+ 1 | 3 | -1 | 0
+(2 rows)
+
+```
+call forcing the use of the original code
+* not longer allowed without restrictions
+
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | -1 | 0
+(6 rows)
+
+```
+trsp with restrictions (2 to 3)
+does not find the shortest path
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | -1 | 0
+(6 rows)
+
+```
+calling the original code with restrictions (2 to 3)
+does not find the shortest path
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | -1 | 0
+(6 rows)
+
+```
+# The Edges signature version
+## (Edges) No path representation differences
+Original function code
+* Sometimes it crasses the server when no path was found
+* Sometimes represents with Error a no path found
+* Forcing the user to use the wrapper or the replacement function
+
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 17, 0.5, true, true
+);
+ERROR: Error computing path: Path Not Found
+```
+pgr_withPoints returns EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 17, 0.5)$$,
+ -1, -2
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+## Definition of a path
+Remember that one characteristic of a path is that for a path of N edges it has N+1 vertices.
+
+For this example, suppose points, where the pid are different even if the edge and fraction are different.
+One point might be on the left side other on the right side, pgr_trsp does not take into account
+the side of the point
+calls forcing the use of the original code
+* not longer allowed without restrictions
+
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+* with restrictions
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+Using the *pgr_withPoints* it returns a path of N edge and N+1 vertices
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 1, 0.5)$$,
+ -1, -2
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0 | 0
+ 2 | 2 | -2 | -1 | 0 | 0
+(2 rows)
+
+```
+The *pgr_withPoints* is used when there are no restrictions
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+ 1 | -2 | -1 | 0
+(2 rows)
+
+```
+The original *_pgr_trsp* code is used when there are restrictions
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+note that pgr_withPoints returns an EMPTY SET when the point is the same
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 1, 0.5)$$,
+ -1, -1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+## Points on the same edge
+The *pgr_withPoints* is used when there are no restrictions
+* it returns a path of N edges and N+1 vertices
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.8, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.3
+ 1 | -2 | -1 | 0
+(2 rows)
+
+```
+The original *_pgr_trsp* is used when there are restrictions
+* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.8, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.3
+(1 row)
+
+```
+## (Edges) Undirected graph
+the shortest path obtained with *pgr_withPoints*
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 4 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 2, 0.8)$$,
+ -1, -2, directed:=false
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 4 | 0.5 | 0
+ 2 | 2 | 2 | 2 | 0.8 | 0.5
+ 3 | 3 | -2 | -1 | 0 | 1.3
+(3 rows)
+
+```
+The original *_pgr_trsp* is used when there are restrictions
+
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 4, 0.5, 2, 0.8, false, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 4 | 0.5
+ 1 | 2 | 2 | 0.8
+ 2 | -2 | -1 | 0
+(3 rows)
+
+```
+when using restrictions the original *_pgr_trsp* is used internally
+* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+* it does not return the shortest path.
+
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 4, 0.5, 2, 0.8, false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 4 | 0.5
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | 2 | 0.2
+(6 rows)
+
+```
+## Using a points of interest table
+The points of interest
+```
+SELECT * FROM pointsOfInterest;
+ pid | x | y | edge_id | side | fraction | the_geom | newpoint
+-----+-----+-----+---------+------+----------+--------------------------------------------+--------------------------------------------
+ 1 | 1.8 | 0.4 | 1 | l | 0.4 | 0101000000CDCCCCCCCCCCFC3F9A9999999999D93F | 010100000000000000000000409A9999999999D93F
+ 2 | 4.2 | 2.4 | 15 | r | 0.4 | 0101000000CDCCCCCCCCCC10403333333333330340 | 010100000000000000000010403333333333330340
+ 3 | 2.6 | 3.2 | 12 | l | 0.6 | 0101000000CDCCCCCCCCCC04409A99999999990940 | 0101000000CDCCCCCCCCCC04400000000000000840
+ 4 | 0.3 | 1.8 | 6 | r | 0.3 | 0101000000333333333333D33FCDCCCCCCCCCCFC3F | 0101000000333333333333D33F0000000000000040
+ 5 | 2.9 | 1.8 | 5 | l | 0.8 | 01010000003333333333330740CDCCCCCCCCCCFC3F | 01010000000000000000000840CDCCCCCCCCCCFC3F
+ 6 | 2.2 | 1.7 | 4 | b | 0.7 | 01010000009A99999999990140333333333333FB3F | 01010000000000000000000040333333333333FB3F
+(6 rows)
+
+```
+On *pgr_trsp*, to be able to use the table information:
+* Each parameter has to be extracted explicitly from the table
+* Regardles of the point pid original value
+ * will always be -1 for the first point
+ * will always be -2 for the second point
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.6
+ 1 | 2 | 4 | 0.7
+ 2 | -2 | -1 | 0
+(3 rows)
+
+```
+On *pgr_withPoints*, to be able to use the table information:
+* select statement on the *pointsOfInterest* table
+* *Negative* the id to represent the id is a pid
+* The points pids in the result are not renumbered
+* The points pids in the result are represented with negative sign
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -6
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 0.7 | 0.6
+ 3 | 3 | -6 | -1 | 0 | 1.3
+(3 rows)
+
+```
+## routing from/to the same point
+using pgr_withPoints to check results
+expecting EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+This call uses the replacement function because there are no restrictions
+* Because the pid is not involved the points are considered different
+* it returns a path
+
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+ 1 | -2 | -1 | 0
+(2 rows)
+
+```
+pgr_trsp with restrictions use the original code
+* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+## passing in front of other points
+using pgr_withPoints to verify the shortest path from pids (1 to 3)
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 1 | 0.6
+ 3 | 3 | 5 | 10 | 1 | 1.6
+ 4 | 4 | 10 | 12 | 0.6 | 2.6
+ 5 | 5 | -3 | -1 | 0 | 3.2
+(5 rows)
+
+```
+**pgr_withPoints** can be used to see when the route passes in front of other points
+In this example point pid=6 is passed in front of
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -3, details:=true
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 0.7 | 0.6
+ 3 | 3 | -6 | 4 | 0.3 | 1.3
+ 4 | 4 | 5 | 10 | 1 | 1.6
+ 5 | 5 | 10 | 12 | 0.6 | 2.6
+ 6 | 6 | -3 | -1 | 0 | 3.2
+(6 rows)
+
+```
+Can not be used to see if other points are passed in front of.
+The pointsOfInterest table is not part of the parameter
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.6
+ 1 | 2 | 4 | 1
+ 2 | 5 | 10 | 1
+ 3 | 10 | 12 | 0.6
+ 4 | -2 | -1 | 0
+(5 rows)
+
+```
+## (edges) Routing from a vertex to a point
+Showing *pgr_withPoints* results of the shortest path from vid 6 to pid 1
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ 6, -1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 6 | 8 | 1 | 0
+ 2 | 2 | 5 | 4 | 1 | 1
+ 3 | 3 | 2 | 1 | 0.6 | 2
+ 4 | 4 | -1 | -1 | 0 | 2.6
+(4 rows)
+
+```
+* Vertex 6 is on edge 8 at 1 fraction
+* Vertex 6 is also edge 11 at 0 fraction
+* Undefined behaviour when at least one of the "points" is an actual vertex
+
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 8, 1,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 11, 0,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+```
+# pgr_trspViaVertices
+## pgr_trspViaVertices No path representation differences
+pgr_trspViaVertices uses _pgr_trsp which as mentioned before
+* Sometimes it crasses the server when no path was found
+* Sometimes represents with Error a no path found
+* Forcing the user to use the wrapper or the replacement function
+
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2],
+ false, true
+);
+ERROR: Error computing path: Path Not Found
+CONTEXT: PL/pgSQL function _pgr_trspviavertices(text,integer[],boolean,boolean,text) line 23 at FOR over SELECT rows
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2, 1],
+ false, true
+);
+ERROR: Error computing path: Path Not Found
+CONTEXT: PL/pgSQL function _pgr_trspviavertices(text,integer[],boolean,boolean,text) line 23 at FOR over SELECT rows
+```
+**pgr_dijkstraVia** returning what paths of the route it finds or EMPTY SET when non is found
+this case none is found
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2],
+ false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+(0 rows)
+
+```
+this case only from 2 to 1 is found
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2, 1],
+ false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 3 | 1 | 2 | 1 | 2 | 1 | 1 | 0 | 0
+ 2 | 3 | 2 | 2 | 1 | 1 | -2 | 0 | 1 | 1
+(2 rows)
+
+```
+the **pgr_dijkstraVia** used are for complete routes so its marked as **strict:=true**
+therefore the expected result is EMPTY SET to represent no route was found
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false,
+ strict := true
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+(0 rows)
+
+```
+## when a path does not exist on the route
+pgr_TRSPViaVertices using the *pgr_dijkstraVia* when there are no restrictions.
+Because there is no path from 1 to 1 then there is no complete route 1 to 1 to 2
+therefore the expected result is EMPTY SET to represent no route was found
+```
+SELECT * FROM pgr_TRSPViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+(0 rows)
+
+```
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 1 | 2 | 1 | 1
+ 9 | 2 | 1 | 1 | 1
+ 10 | 2 | 2 | -1 | 0
+(10 rows)
+
+```
+with restrictions the original code is used
+```
+SELECT * FROM pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 1 | 2 | 1 | 1
+ 9 | 2 | 1 | 1 | 1
+ 10 | 2 | 2 | -1 | 0
+(10 rows)
+
+```
+Using explicitly the original code
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 1 | 2 | 1 | 1
+ 9 | 2 | 1 | 1 | 1
+ 10 | 2 | 2 | -1 | 0
+(10 rows)
+
+```
+## from 2 to 3 to 2
+dijkstra via shows the shortest route on the two paths
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0 | 0
+ 2 | 1 | 2 | 2 | 3 | 3 | -1 | 0 | 1 | 1
+ 3 | 2 | 1 | 3 | 2 | 3 | 2 | 1 | 0 | 1
+ 4 | 2 | 2 | 3 | 2 | 2 | -2 | 0 | 1 | 2
+(4 rows)
+
+```
+the replacement function **pgr_dijkstraVia** is used because there are no restrictions
+```
+SELECT * FROM pgr_TRSPViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 2 | 1
+ 2 | 2 | 3 | 2 | 1
+ 3 | 2 | 2 | -1 | 0
+(3 rows)
+
+```
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 4 | 1
+ 2 | 1 | 5 | 8 | 1
+ 3 | 1 | 6 | 9 | 1
+ 4 | 1 | 9 | 16 | 1
+ 5 | 1 | 4 | 3 | 1
+ 6 | 2 | 3 | 2 | 1
+ 7 | 2 | 2 | -1 | 0
+(7 rows)
+
+```
+# pgr_trspViaEdges
+*pgr_trspViaEdges* will use the original code when
+* There are restrictions
+* A point is a vertex in disguise (with pcts value of 0)
+
+What it returns
+* Error to represent no route
+* the points are renumbered to -1, -2 .. -N
+* if a point is part of a path it will **not** show on the path
+
+Exaple execution
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.9
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 2 | 2 | 1 | 0.5
+(8 rows)
+
+```
+A temporay wraper function is used when:
+* There are no restrictions
+* Before: No point is a vertex in disguise (with pcts value of 0)
+* Now: c$Undefined behaviour when a point is a vertex in disguise (with pcts value of 0)
+
+Internaly:
+* builds a new graph and calls pgr_dijkstraVia
+
+What it returns
+* returns EMPTY SET to represent no route
+* edge = -1 in the result to represent the end of a intermediate path
+* edge = -2 in the result to represent the end of the last path & route
+* the points are renumbered to -1, -2 .. -N
+* if a point is part of a path it will show on the path
+
+Note: I do not mention the wrapper name due to the fact that this is not official documentation
+Note: I will use *_pgr_withPointsVia* as the wrapper name just for sake of this notes
+Example excution
+```
+SELECT * FROM _pgr_withPointsVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
+ directed := false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 1 | 1 | -1 | -2 | -1 | 1 | 0.1 | 0 | 0
+ 2 | 1 | 2 | -1 | -2 | 2 | 2 | 0.5 | 0.1 | 0.1
+ 3 | 1 | 3 | -1 | -2 | -2 | -1 | 0 | 0.6 | 0.6
+ 4 | 2 | 1 | -2 | -3 | -2 | 2 | 0.5 | 0 | 0.6
+ 5 | 2 | 2 | -2 | -3 | 2 | 1 | 0.5 | 0.5 | 1.1
+ 6 | 2 | 3 | -2 | -3 | -3 | -2 | 0 | 1 | 1.6
+(6 rows)
+
+```
+## pgr_trspViaEdges No path representation differences
+This example no path is found (edge 17 is disconnected) from the big graph.
+* There is a vertex in disguise (fraction 0 or 1)
+* Undefined behaviour
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 17, 1], ARRAY[0,0.5,0.5],
+ false, true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | | | |
+(1 row)
+
+```
+This example no path is found (edge 17 is disconnected) from the big graph.
+* Has a restriction
+* *pgr_trspViaEdges* original code is used
+* throws error to represent no route was not found
+
+```
+SELECT * FROM pgr_trspViaEdges(
+$$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ARRAY[1, 17, 1], ARRAY[0.5,0.5,0.5],
+false, true,
+$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, 32, 33::TEXT AS via_path$$
+);
+server closed the connection unexpectedly
+This probably means the server terminated abnormally
+before or while processing the request.
+The connection to the server was lost. Attempting reset: Failed.
+```
+This example no path is found (edge 17 is disconnected) from the big graph.
+* *_pgr_withPointsVia* is used
+* returns EMPTY SET to represent no route
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 17, 1], ARRAY[0.1,0.5,0.5],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+(0 rows)
+
+```
+## (pgr_trspViaEdges) Using the pointsOfInterest table
+Only routing points
+when *_pgr_withPointsVia* is used
+* the renumbering still takes place
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.4
+ 2 | 1 | 2 | 4 | 0.3
+ 3 | 1 | -3 | 4 | 0.3
+ 4 | 1 | 5 | 10 | 1
+ 5 | 1 | 10 | 12 | 0.6
+ 6 | 1 | -2 | -1 | 0
+ 7 | 2 | -2 | 12 | 0.6
+ 8 | 2 | 10 | 10 | 1
+ 9 | 2 | 5 | 4 | 0.3
+ 10 | 2 | -3 | -2 | 0
+(10 rows)
+
+```
+Only routing points
+when originalcode is used (because there is a restriction)
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.6
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 10 | 1
+ 4 | 1 | 10 | 12 | 1
+ 5 | 2 | 11 | 13 | 1
+ 6 | 2 | 12 | 15 | 1
+ 7 | 2 | 9 | 9 | 1
+ 8 | 2 | 6 | 8 | 1
+ 9 | 2 | 5 | 4 | 0.3
+(9 rows)
+
+```
+Routing points & vertices
+* vertex 6 is on edge 11 with fraction 0
+* Undefined behavior
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ 11],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ 0],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.6
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 10 | 1
+ 4 | 1 | 10 | 12 | 0.6
+ 5 | 1 | -2 | -1 | 0
+(5 rows)
+
+```
+BEGIN;
+BEGIN
+ROLLBACK;
+ROLLBACK
diff --git a/doc/trsp/pgr_trsp.rst b/doc/trsp/pgr_trsp.rst
new file mode 100644
index 0000000..2f1a5be
--- /dev/null
+++ b/doc/trsp/pgr_trsp.rst
@@ -0,0 +1,209 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _trsp:
+
+pgr_trsp - Turn Restriction Shortest Path (TRSP)
+===============================================================================
+
+.. index::
+ single: trsp(text,integer,integer,boolean,boolean)
+ single: trsp(text,integer,integer,boolean,boolean,text)
+ single: trspViaVertices(text,integer,double precision,integer,double precision,boolean,boolean)
+ single: trspViaEdges(text,integer,double precision,integer,double precision,boolean,boolean,text)
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_trsp`` — Returns the shortest path with support for turn restrictions.
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+The turn restricted shorthest path (TRSP) is a shortest path algorithm that can optionally take into account complicated turn restrictions like those found in real world navigable road networks. Performamnce wise it is nearly as fast as the A* search but has many additional features like it works with edges rather than the nodes of the network. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a path.
+
+.. code-block:: sql
+
+ pgr_costResult[] pgr_trsp(sql text, source integer, target integer,
+ directed boolean, has_rcost boolean [,restrict_sql text]);
+
+
+.. code-block:: sql
+
+ pgr_costResult[] pgr_trsp(sql text, source_edge integer, source_pos float8,
+ target_edge integer, target_pos float8,
+ directed boolean, has_rcost boolean [,restrict_sql text]);
+
+.. code-block:: sql
+
+ pgr_costResult3[] pgr_trspViaVertices(sql text, vids integer[],
+ directed boolean, has_rcost boolean
+ [, turn_restrict_sql text]);
+
+.. code-block:: sql
+
+ pgr_costResult3[] pgr_trspViaEdges(sql text, eids integer[], pcts float8[],
+ directed boolean, has_rcost boolean
+ [, turn_restrict_sql text]);
+
+Description
+-------------------------------------------------------------------------------
+
+The Turn Restricted Shortest Path algorithm (TRSP) is similar to the shooting star in that you can specify turn restrictions.
+
+The TRSP setup is mostly the same as :ref:`Dijkstra shortest path <pgr_dijkstra>` with the addition of an optional turn restriction table. This provides an easy way of adding turn restrictions to a road network by placing them in a separate table.
+
+
+:sql: a SQL query, which should return a set of rows with the following columns:
+
+ .. code-block:: sql
+
+ SELECT id, source, target, cost, [,reverse_cost] FROM edge_table
+
+
+ :id: ``int4`` identifier of the edge
+ :source: ``int4`` identifier of the source vertex
+ :target: ``int4`` identifier of the target vertex
+ :cost: ``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph.
+ :reverse_cost: (optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs).
+
+:source: ``int4`` **NODE id** of the start point
+:target: ``int4`` **NODE id** of the end point
+:directed: ``true`` if the graph is directed
+:has_rcost: if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction.
+
+:restrict_sql: (optional) a SQL query, which should return a set of rows with the following columns:
+
+ .. code-block:: sql
+
+ SELECT to_cost, target_id, via_path FROM restrictions
+
+ :to_cost: ``float8`` turn restriction cost
+ :target_id: ``int4`` target id
+ :via_path: ``text`` comma separated list of edges in the reverse order of ``rule``
+
+Another variant of TRSP allows to specify **EDGE id** of source and target together with a fraction to interpolate the position:
+
+:source_edge: ``int4`` **EDGE id** of the start edge
+:source_pos: ``float8`` fraction of 1 defines the position on the start edge
+:target_edge: ``int4`` **EDGE id** of the end edge
+:target_pos: ``float8`` fraction of 1 defines the position on the end edge
+
+Returns set of :ref:`type_cost_result`:
+
+:seq: row sequence
+:id1: node ID
+:id2: edge ID (``-1`` for the last row)
+:cost: cost to traverse from ``id1`` using ``id2``
+
+.. rubric:: History
+
+* New in version 2.0.0
+
+Support for Vias
+--------------------------------------------------------------------
+
+.. warning:: The Support for Vias functions are prototypes. Not all corner cases are being considered.
+
+
+We also have support for vias where you can say generate a from A to B to C, etc. We support both methods above only you pass an array of vertices or and array of edges and percentage position along the edge in two arrays.
+
+
+
+:sql: a SQL query, which should return a set of rows with the following columns:
+
+ .. code-block:: sql
+
+ SELECT id, source, target, cost, [,reverse_cost] FROM edge_table
+
+
+ :id: ``int4`` identifier of the edge
+ :source: ``int4`` identifier of the source vertex
+ :target: ``int4`` identifier of the target vertex
+ :cost: ``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph.
+ :reverse_cost: (optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs).
+
+:vids: ``int4[]`` An ordered array of **NODE id** the path will go through from start to end.
+:directed: ``true`` if the graph is directed
+:has_rcost: if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction.
+
+:restrict_sql: (optional) a SQL query, which should return a set of rows with the following columns:
+
+ .. code-block:: sql
+
+ SELECT to_cost, target_id, via_path FROM restrictions
+
+ :to_cost: ``float8`` turn restriction cost
+ :target_id: ``int4`` target id
+ :via_path: ``text`` commar separated list of edges in the reverse order of ``rule``
+
+Another variant of TRSP allows to specify **EDGE id** together with a fraction to interpolate the position:
+
+:eids: ``int4`` An ordered array of **EDGE id** that the path has to traverse
+:pcts: ``float8`` An array of fractional positions along the respective edges in ``eids``, where 0.0 is the start of the edge and 1.0 is the end of the eadge.
+
+Returns set of :ref:`type_cost_result`:
+
+:seq: row sequence
+:id1: route ID
+:id2: node ID
+:id3: edge ID (``-1`` for the last row)
+:cost: cost to traverse from ``id2`` using ``id3``
+
+
+.. rubric:: History
+
+* Via Support prototypes new in version 2.1.0
+
+Examples
+-------------------------------------------------------------------------------
+
+**Without turn restrictions**
+
+.. literalinclude:: doc-trsp.queries
+ :start-after: --q1
+ :end-before: --q2
+
+
+**With turn restrictions**
+
+Then a query with turn restrictions is created as:
+
+.. literalinclude:: doc-trsp.queries
+ :start-after: --q3
+ :end-before: --q4
+
+
+An example query using vertex ids and via points:
+
+.. literalinclude:: doc-trsp.queries
+ :start-after: --q4
+ :end-before: --q5
+
+
+An example query using edge ids and vias:
+
+.. literalinclude:: doc-trsp.queries
+ :start-after: --q5
+ :end-before: --q6
+
+
+The queries use the :doc:`sampledata` network.
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`type_cost_result`
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/tsp/CMakeLists.txt b/doc/tsp/CMakeLists.txt
new file mode 100644
index 0000000..2586a9f
--- /dev/null
+++ b/doc/tsp/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+SET(LOCAL_FILES
+ pgr_eucledianTSP.rst
+ pgr_TSP.rst
+ TSP-family.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/tsp/TSP-family.rst b/doc/tsp/TSP-family.rst
new file mode 100644
index 0000000..7bfba8e
--- /dev/null
+++ b/doc/tsp/TSP-family.rst
@@ -0,0 +1,259 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _tsp:
+
+Traveling Sales Person - Family of functions
+===============================================================================
+
+.. index from here
+
+* :ref:`pgr_TSP` - When input is given as matrix cell information.
+* :ref:`pgr_eucledianTSP` - When input are coordinates.
+
+.. index to here
+
+.. toctree::
+ :hidden:
+
+ pgr_TSP
+ pgr_eucledianTSP
+
+
+General Information
+------------------------------------
+
+Origin
+..........
+
+The traveling sales person problem was studied in the 18th century by mathematicians
+ **Sir William Rowam Hamilton** and **Thomas Penyngton Kirkman**.
+
+A discussion about the work of Hamilton & Kirkman
+can be found in the book **Graph Theory (Biggs et al. 1976)**.
+
+* ISBN-13: 978-0198539162
+* ISBN-10: 0198539169
+
+It is believed that the general form of the TSP have been first studied by Kalr Menger in Vienna and Harvard.
+The problem was later promoted by Hassler, Whitney & Merrill at Princeton.
+A detailed description about the connection between Menger & Whitney, and the development of the
+TSP can be found in `On the history of combinatorial optimization (till 1960) <http://www.cwi.nl/~lex/files/histco.ps>`_
+
+Problem Definition
+...................
+
+Given a collection of cities and travel cost between each pair,
+find the cheapest way for visiting all of the cities and returning to the starting point.
+
+Characteristics
+................
+
+- The travel costs are symmetric:
+
+ - traveling costs from city A to city B are just as much as traveling from B to A.
+
+- This problem is an NP-hard optimization problem.
+
+- To calculate the number of different tours through :math:`n` cities:
+
+ - Given a starting city,
+ - There are :math:`n-1` choices for the second city,
+ - And :math:`n-2` choices for the third city, etc.
+ - Multiplying these together we get :math:`(n-1)! = (n-1) (n-2) . . 1`.
+ - Now since our travel costs do not depend on the direction we take around the tour:
+
+ - this number by 2
+ - :math:`(n-1)!/2`.
+
+TSP & Simulated Annealing
+.........................
+
+The simulated annealing algorithm was originally inspired from the process of
+annealing in metal work.
+
+Annealing involves heating and cooling a material to
+alter its physical properties due to the changes in its internal structure.
+As the metal cools its new structure becomes fixed,
+consequently causing the metal to retain its newly obtained properties. [C001]_
+
+
+.. rubric:: Pseudocode
+
+Given an initial solution, the simulated annealing process, will start with a high temperature
+and gradually cool down until the desired temperature is reached.
+
+For each temperature, a neighbouring new solution **snew** is calculated. The higher the temperature
+the higher the probability of accepting the new solution as a possible bester solution.
+
+Once the desired temperature is reached, the best solution found is returned
+
+.. code-block:: none
+
+ Solution = initial_solution;
+
+ temperature = initial_temperature;
+ while (temperature > final_temperature) {
+
+ do tries_per_temperature times {
+ snew = neighbour(solution);
+ If P(E(solution), E(snew), T) >= random(0, 1)
+ solution = snew;
+ }
+
+ temperature = temperature * cooling factor;
+ }
+
+ Output: the best solution
+
+
+
+pgRouting Implementation
+.........................
+
+pgRouting's implementation adds some extra parameters to allow some exit controls within the
+simulated annealing process.
+
+To cool down faster to the next temperature:
+
+- max_changes_per_temperature: limits the number of changes in the solution per temperature
+- max_consecutive_non_changes: limits the number of consecutive non changes per temperature
+
+This is done by doing some book keeping on the times **solution = snew;** is executed.
+
+- max_changes_per_temperature: Increases by one when **solution** changes
+- max_consecutive_non_changes: Reset to 0 when **solution** changes, and increased each **try**
+
+Additionally to stop the algorithm at a higher temperature than the desired one:
+
+- max_processing_time: limits the time the simulated annealing is performed.
+- book keeping is done to see if there was a change in **solution** on the last temperature
+
+Note that, if no change was found in the first **max_consecutive_non_changes** tries, then the
+simulated annealing will stop.
+
+.. code-block:: none
+
+ Solution = initial_solution;
+
+ temperature = initial_temperature;
+ while (temperature > final_temperature) {
+
+ do tries_per_temperature times {
+ snew = neighbour(solution);
+ If P(E(solution), E(snew), T) >= random(0, 1)
+ solution = snew;
+
+ when max_changes_per_temperature is reached
+ or max_consecutive_non_changes is reached
+ BREAK;
+ }
+
+ temperature = temperature * cooling factor;
+ when no changes were done in the current temperature
+ or max_processing_time has being reached
+ BREAK;
+ }
+
+ Output: the best solution
+
+
+Choosing parameters
+.........................
+
+There is no exact rule on how the parameters have to be chose, it will depend on the
+special characteristics of the problem.
+
+- Your computational time is crucial, then put your time limit to **max_processing_time**.
+- Make the **tries_per_temperture** depending on the number of cities, for example:
+
+ - Useful to estimate the time it takes to do one cycle: use `1`
+
+ - this will help to set a reasonable **max_processing_time**
+
+ - :math:`n * (n-1)`
+ - :math:`500 * n`
+
+- For a faster decreasing the temperature set **cooling_factor** to a smaller number,
+ and set to a higher number for a slower decrease.
+
+- When for the same given data the same results are needed, set **randomize** to `false`.
+
+ - When estimating how long it takes to do one cycle: use `false`
+
+
+A recommendation is to play with the values and see what fits to the particular data.
+
+.. tsp control parameters begin
+
+Description Of the Control parameters
+.....................................................................
+
+The control parameters are optional, and have a default value.
+
+=============================== =========== ============ =================================================
+Parameter Type Default Description
+=============================== =========== ============ =================================================
+**start_vid** ``BIGINT`` `0` The greedy part of the implementation will use this identifier.
+**end_vid** ``BIGINT`` `0` Last visiting vertex before returning to start_vid.
+**max_processing_time** ``FLOAT`` `+infinity` Stop the annealing processing when the value is reached.
+**tries_per_temperature** ``INTEGER`` `500` Maximum number of times a neighbor(s) is searched in each temperature.
+**max_changes_per_temperature** ``INTEGER`` `60` Maximum number of times the solution is changed in each temperature.
+**max_consecutive_non_changes** ``INTEGER`` `100` Maximum number of consecutive times the solution is not changed in each temperature.
+**initial_temperature** ``FLOAT`` `100` Starting temperature.
+**final_temperature** ``FLOAT`` `0.1` Ending temperature.
+**cooling_factor** ``FLOAT`` `0.9` Value between between 0 and 1 (not including) used to calculate the next temperature.
+**randomize** ``BOOLEAN`` `true` Choose the random seed
+
+ - true: Use current time as seed
+ - false: Use `1` as seed. Using this value will get the same results with the same data in each execution.
+
+=============================== =========== ============ =================================================
+
+
+.. tsp control parameters end
+
+.. tsp return values begin
+
+Description of the return columns
+...............................................................................
+
+Returns set of ``(seq, node, cost, agg_cost)``
+
+============= =========== =================================================
+Column Type Description
+============= =========== =================================================
+**seq** ``INTEGER`` Row sequence.
+**node** ``BIGINT`` Identifier of the node/coordinate/point.
+**cost** ``FLOAT`` Cost to traverse from the current ``node`` ito the next ``node`` in the path sequence.
+ - ``0`` for the last row in the path sequence.
+
+**agg_cost** ``FLOAT`` Aggregate cost from the ``node`` at ``seq = 1`` to the current node.
+ - ``0`` for the first row in the path sequence.
+
+============= =========== =================================================
+
+.. tsp return values end
+
+See Also
+.........................
+
+.. rubric:: References
+
+.. [C001] `Simulated annaeling algorithm for beginners <http://www.theprojectspot.com/tutorial-post/simulated-annealing-algorithm-for-beginners/6>`_
+
+* http://en.wikipedia.org/wiki/Traveling_salesman_problem
+* http://en.wikipedia.org/wiki/Simulated_annealing
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
+
diff --git a/doc/tsp/pgr_TSP.rst b/doc/tsp/pgr_TSP.rst
new file mode 100644
index 0000000..6753b6a
--- /dev/null
+++ b/doc/tsp/pgr_TSP.rst
@@ -0,0 +1,172 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_TSP:
+
+pgr_TSP
+=============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+* ``pgr_TSP`` - Returns a route that visits all the nodes exactly once.
+
+.. rubric:: Availability: 2.0.0
+
+* Signature changed 2.3.0
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+The travelling salesman problem (TSP) or travelling salesperson problem asks the following question:
+
+ - Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city?
+
+This implementation uses simulated annealing to return the approximate solution when the input is given in the form of matrix cell contents.
+The matrix information must be symmetrical.
+
+
+Signature Summary
+-------------------------------------------------------------------------------
+
+.. code-block:: none
+
+ pgr_TSP(matrix_cell_sql)
+ pgr_TSP(matrix_cell_sql,
+ start_id, end_id,
+ max_processing_time,
+ tries_per_temperature, max_changes_per_temperature, max_consecutive_non_changes,
+ initial_temperature, final_temperature, cooling_factor,
+ randomize,
+ RETURNS SETOF (seq, node, cost, agg_cost)
+
+Signatures
+-------------------------------------------------------------------------------
+
+
+.. index::
+ single: TSP(Basic Use)
+
+Basic Use
+...............................................................................
+
+.. code-block:: none
+
+ pgr_TSP(matrix_cell_sql)
+ RETURNS SETOF (seq, node, cost, agg_cost)
+
+:Example:
+
+Because the documentation examples are auto generated and tested for non changing results,
+and the default is to have random execution, the example is wrapping the actual call.
+
+.. literalinclude:: doc-pgr_TSP.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+..
+ TODO Intermediate Use
+
+.. index::
+ single: TSP(Complete Signature)
+
+Complete Signature
+...............................................................................
+
+.. code-block:: none
+
+
+ pgr_TSP(matrix_cell_sql,
+ start_id, end_id,
+ max_processing_time,
+ tries_per_temperature, max_changes_per_temperature, max_consecutive_non_changes,
+ initial_temperature, final_temperature, cooling_factor,
+ randomize,
+ RETURNS SETOF (seq, node, cost, agg_cost)
+
+
+.. rubric:: Example:
+
+.. literalinclude:: doc-pgr_TSP.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+Description of the Matrix Cell SQL query
+...............................................................................
+
+============= =========== =================================================
+Column Type Description
+============= =========== =================================================
+**start_vid** ``BIGINT`` Identifier of the starting vertex.
+**end_vid** ``BIGINT`` Identifier of the ending vertex.
+**agg_cost** ``FLOAT`` Cost for going from start_vid to end_vid
+============= =========== =================================================
+
+Can be Used with:
+
+* :ref:`pgr_dijkstraCostmatrix`
+* :ref:`pgr_withPointsCostmatrix`
+* :ref:`pgr_floydWarshall`
+* :ref:`pgr_johnson`
+
+To generate a symmetric matrix
+
+* directed := false.
+
+If using directed := true, the resulting non symmetric matrix must be converted to
+symmetric by fixing the non symmetric values according to your application needs.
+
+
+.. literalinclude:: TSP-family.rst
+ :start-after: tsp control parameters begin
+ :end-before: tsp control parameters end
+
+
+.. literalinclude:: TSP-family.rst
+ :start-after: tsp return values begin
+ :end-before: tsp return values end
+
+
+
+
+
+Examples
+-------------------------------------------------------------------------------
+
+:Example: Using with points of interest.
+
+To generate a symmetric matrix:
+
+* the **side** information of pointsOfInterset is ignored by not including it in the query
+* and **directed := false**
+
+.. literalinclude:: doc-pgr_TSP.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+The queries use the :doc:`sampledata` network.
+
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`tsp`
+* http://en.wikipedia.org/wiki/Traveling_salesman_problem
+* http://en.wikipedia.org/wiki/Simulated_annealing
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/tsp/pgr_eucledianTSP.rst b/doc/tsp/pgr_eucledianTSP.rst
new file mode 100644
index 0000000..fe85f64
--- /dev/null
+++ b/doc/tsp/pgr_eucledianTSP.rst
@@ -0,0 +1,154 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_eucledianTSP:
+
+pgr_eucledianTSP
+=============================================================================
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_eucledianTSP`` - Returns a route that visits all the coordinates pairs exactly once.
+
+.. rubric:: Availability: 2.3.0
+
+
+Synopsis
+-------------------------------------------------------------------------------
+
+The travelling salesman problem (TSP) or travelling salesperson problem asks the following question:
+
+ - Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city?
+
+This implementation uses simulated annealing to return the approximate solution when the input is given in the form of coordinates.
+
+Signature Summary
+-------------------------------------------------------------------------------
+
+.. code-block:: none
+
+ pgr_eucledianTSP(coordinates_sql)
+ pgr_eucledianTSP(coordinates_sql,
+ start_id, end_id,
+ max_processing_time,
+ tries_per_temperature, max_changes_per_temperature, max_consecutive_non_changes,
+ initial_temperature, final_temperature, cooling_factor,
+ randomize,
+ RETURNS SETOF (seq, node, cost, agg_cost)
+
+
+Signatures
+-------------------------------------------------------------------------------
+
+.. index::
+ single: eucledianTSP(Basic Use)
+
+Minimal Signature
+...............................................................................
+
+.. code-block:: none
+
+ pgr_eucledianTSP(coordinates_sql)
+ RETURNS SETOF (seq, node, cost, agg_cost)
+
+:Example:
+
+Because the documentation examples are auto generated and tested for non changing results,
+and the default is to have random execution, the example is wrapping the actual call.
+
+.. literalinclude:: doc-pgr_eucledianTSP.queries
+ :start-after: -- q1
+ :end-before: -- q2
+
+
+.. index::
+ single: eucledianTSP(Complete Signature)
+
+Complete Signature
+...............................................................................
+
+.. code-block:: none
+
+
+ pgr_eucledianTSP(coordinates_sql,
+ start_id, end_id,
+ max_processing_time,
+ tries_per_temperature, max_changes_per_temperature, max_consecutive_non_changes,
+ initial_temperature, final_temperature, cooling_factor,
+ randomize,
+ RETURNS SETOF (seq, node, cost, agg_cost)
+
+
+.. rubric:: Example:
+
+.. literalinclude:: doc-pgr_eucledianTSP.queries
+ :start-after: -- q2
+ :end-before: -- q3
+
+Description of the Signatures
+-------------------------------------------------------------------------------
+
+Description of the coordinates SQL query
+...............................................................................
+
+======= =========== =================================================
+Column Type Description
+======= =========== =================================================
+**id** ``BIGINT`` Identifier of the coordinate. (optional)
+**x** ``FLOAT`` X value of the coordinate.
+**y** ``FLOAT`` Y value of the coordinate.
+======= =========== =================================================
+
+
+When the value of **id** is not given then the coordinates will receive an **id** starting from 1, in the order given.
+
+
+.. literalinclude:: TSP-family.rst
+ :start-after: tsp control parameters begin
+ :end-before: tsp control parameters end
+
+
+.. literalinclude:: TSP-family.rst
+ :start-after: tsp return values begin
+ :end-before: tsp return values end
+
+
+
+Examples
+-------------------------------------------------------------------------------
+
+:Example: Skipping the Simulated Annealing & showing some process information
+
+.. literalinclude:: doc-pgr_eucledianTSP.queries
+ :start-after: -- q3
+ :end-before: -- q4
+
+
+
+The queries use the :doc:`sampledata` network.
+
+
+.. rubric:: History
+
+* New in version 2.3.0
+
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`tsp`
+* http://en.wikipedia.org/wiki/Traveling_salesman_problem
+* http://en.wikipedia.org/wiki/Simulated_annealing
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/vrp_basic/CMakeLists.txt b/doc/vrp_basic/CMakeLists.txt
new file mode 100644
index 0000000..8ccd85a
--- /dev/null
+++ b/doc/vrp_basic/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ pgr_vrpOneDepot.rst
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}")
+ list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f})
+endforeach()
+
+set(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/vrp_basic/pgr_vrpOneDepot.rst b/doc/vrp_basic/pgr_vrpOneDepot.rst
new file mode 100644
index 0000000..e29a66b
--- /dev/null
+++ b/doc/vrp_basic/pgr_vrpOneDepot.rst
@@ -0,0 +1,48 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_vrp_basic:
+
+
+pgr_vrpOneDepot - Experimental
+===============================================================================
+
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+**No documentation available**
+
+Example:
+-------------------------------------------------------------------------------
+
+
+Current Result
+...............................................................................
+
+.. literalinclude:: doc-pgr_vrpOneDepot.queries
+
+
+Data
+-------------------------------------------------------------------------------
+
+.. literalinclude:: ../../tools/testers/vrpOneDepot.data
+
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* http://en.wikipedia.org/wiki/Vehicle_routing_problem
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/vrppdtw/CMakeLists.txt b/doc/vrppdtw/CMakeLists.txt
new file mode 100644
index 0000000..2a78374
--- /dev/null
+++ b/doc/vrppdtw/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ pgr_gsoc_vrppdtw.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(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+
diff --git a/doc/vrppdtw/pgr_gsoc_vrppdtw.rst b/doc/vrppdtw/pgr_gsoc_vrppdtw.rst
new file mode 100644
index 0000000..9db5da1
--- /dev/null
+++ b/doc/vrppdtw/pgr_gsoc_vrppdtw.rst
@@ -0,0 +1,138 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_gsocvrppdtw:
+
+pgr_gsoc_vrppdtw - Experimental
+===============================================================================
+
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_gsoc_vrppdtw`` — Returns a solution for `Pick and Delivery` with `time windows` Vehicle Routing Problem
+
+.. include:: proposed.rst
+ :start-after: begin-warn-expr
+ :end-before: end-warn-expr
+
+
+Signature Summary
+-----------------
+
+
+.. code-block:: none
+
+ pgr_gsoc_vrppdtw(sql, vehicle_num, capacity)
+ RETURNS SET OF pgr_costResult[]:
+
+Signatures
+-----------
+
+.. index::
+ single: gsoc_vrppdtw(Complete Signature) - proposed
+
+
+Complete signature
+...................
+
+.. code-block:: none
+
+ pgr_gsoc_vrppdtw(sql, vehicle_num, capacity)
+ Returns set of pgr_costResult[]:
+
+
+.. rubric:: Example: Show the id1
+
+.. literalinclude:: ../doc/doc-gsoc_vrppdtw.queries
+ :start-after: --q1
+ :end-before: --q2
+
+
+Description of the Signatures
+-------------------------------
+
+Description of the sql query
+.........................................................................................
+
+================ =================== =================================================
+Column Type Description
+================ =================== =================================================
+**id** ``ANY-INTEGER`` Identifier of the customer.
+
+ - A value of ``0`` identifies the starting location
+
+**x** ``ANY-NUMERICAL`` ``X`` coordinate of the location.
+**y** ``ANY-NUMERICAL`` ``Y`` coordinate of the location.
+**demand** ``ANY-NUMERICAL`` How much is added / removed from the vehicle.
+
+ - Negative value is a delivery,
+ - Positive value is a pickup,
+
+**openTime** ``ANY-NUMERICAL`` The time relative to 0, when the customer opens.
+**closeTime** ``ANY-NUMERICAL`` The time relative to 0, when the customer closes.
+**serviceTime** ``ANY-NUMERICAL`` The duration of the loading / unloading.
+**pIndex** ``ANY-INTEGER`` Value used when the current customer is a Delivery to find the corresponding Pickup
+**dIndex** ``ANY-INTEGER`` Value used when the current customer is a Pickup to find the corresponding Delivery
+================ =================== =================================================
+
+Description of the parameters of the signatures
+.........................................................................................
+
+================== =========== =================================================
+Column Type Description
+================== =========== =================================================
+**sql** ``TEXT`` SQL query as described above.
+**vehicle_num** ``INTEGER`` Maximum number of vehicles in the result. (currently is ignored)
+**capacity** ``INTEGER`` Capacity of the vehicle.
+================== =========== =================================================
+
+Description of the result
+.........................................................................................
+
+RETURNS SET OF pgr_costResult[]:
+
+================== =========== =================================================
+Column Type Description
+================== =========== =================================================
+**seq** ``INTEGER`` Sequential value starting from **1**.
+**id1** ``INTEGER`` Current vehicle identifier.
+**id2** ``INTEGER`` Customer identifier.
+**cost** ``FLOAT`` Previous ``cost`` plus `travel time` plus `wait time` plus `service time`.
+ - when ``id2 = 0`` for the second time for the same ``id1``, then has the total time for the current ``id1``
+================== =========== =================================================
+
+
+
+Examples
+-------------------------------------------------------------------------------
+
+.. rubric:: Example: Total number of rows returned
+
+.. literalinclude:: ../doc/doc-gsoc_vrppdtw.queries
+ :start-after: --q2
+ :end-before: --q3
+
+.. rubric:: Example: Results for only id1 values: 1, 5, and 9
+
+.. literalinclude:: ../doc/doc-gsoc_vrppdtw.queries
+ :start-after: --q3
+ :end-before: --q4
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* The examples use :ref:`pickDeliverData`
+* http://en.wikipedia.org/wiki/Vehicle_routing_problem
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/withPoints/CMakeLists.txt b/doc/withPoints/CMakeLists.txt
new file mode 100644
index 0000000..2b6b70c
--- /dev/null
+++ b/doc/withPoints/CMakeLists.txt
@@ -0,0 +1,20 @@
+
+SET(LOCAL_FILES
+ pgr_withPointsDD.rst
+ pgr_withPoints.rst
+ withPoints-family.rst
+ pgr_withPointsCost.rst
+ pgr_withPointsKSP.rst
+ pgr_withPointsVia.rst
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/${f}")
+ list(APPEND LOCAL_DOC_FILES ${PGR_DOCUMENTATION_SOURCE_DIR}/${f})
+endforeach()
+
+
+add_subdirectory("images")
+set(PgRouting_DOC_FILES ${PgRouting_DOC_FILES} ${LOCAL_DOC_FILES} PARENT_SCOPE)
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} PARENT_SCOPE)
+
diff --git a/doc/withPoints/images/CMakeLists.txt b/doc/withPoints/images/CMakeLists.txt
new file mode 100644
index 0000000..45885cb
--- /dev/null
+++ b/doc/withPoints/images/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+SET(LOCAL_FILES
+ leftDrivingSide.png
+ noMatterDrivingSide.png
+ rightDrivingSide.png
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}" COPYONLY)
+ list(APPEND LOCAL_IMG_FILES "${PGR_DOCUMENTATION_SOURCE_DIR}/images/${f}")
+endforeach()
+
+set(PgRouting_IMG_FILES ${PgRouting_IMG_FILES} ${LOCAL_IMG_FILES} PARENT_SCOPE)
+
diff --git a/src/withPoints/doc/images/leftDrivingSide.png b/doc/withPoints/images/leftDrivingSide.png
similarity index 100%
rename from src/withPoints/doc/images/leftDrivingSide.png
rename to doc/withPoints/images/leftDrivingSide.png
diff --git a/src/withPoints/doc/images/noMatterDrivingSide.png b/doc/withPoints/images/noMatterDrivingSide.png
similarity index 100%
rename from src/withPoints/doc/images/noMatterDrivingSide.png
rename to doc/withPoints/images/noMatterDrivingSide.png
diff --git a/src/withPoints/doc/images/rightDrivingSide.png b/doc/withPoints/images/rightDrivingSide.png
similarity index 100%
rename from src/withPoints/doc/images/rightDrivingSide.png
rename to doc/withPoints/images/rightDrivingSide.png
diff --git a/doc/withPoints/pgr_withPoints.rst b/doc/withPoints/pgr_withPoints.rst
new file mode 100644
index 0000000..2a21646
--- /dev/null
+++ b/doc/withPoints/pgr_withPoints.rst
@@ -0,0 +1,298 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_withPoints:
+
+pgr_withPoints - Proposed
+===============================================================================
+
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_withPoints`` - Returns the shortest path in a graph with additional temporary vertices.
+
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.2.0
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Modify the graph to include points defined by points_sql.
+Using Dijkstra algorithm, find the shortest path(s)
+
+Characteristics:
+-------------------------------------------------------------------------------
+
+The main Characteristics are:
+
+- Process is done only on edges with positive costs.
+- Vertices of the graph are:
+
+ - **positive** when it belongs to the edges_sql
+ - **negative** when it belongs to the points_sql
+
+- Values are returned when there is a path.
+
+ - When the starting vertex and ending vertex are the same, there is no path.
+ - The agg_cost the non included values (v, v) is 0
+
+ - When the starting vertex and ending vertex are the different and there is no path:
+ - The agg_cost the non included values (u, v) is ∞
+
+- For optimization purposes, any duplicated value in the start_vids or end_vids are ignored.
+- The returned values are ordered:
+ - start_vid ascending
+ - end_vid ascending
+
+- Running time: :math:`O(|start\_vids|\times(V \log V + E))`
+
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_withPoints(edges_sql, points_sql, start_vid, end_vid)
+ pgr_withPoints(edges_sql, points_sql, start_vid, end_vid, directed, driving_side, details)
+ pgr_withPoints(edges_sql, points_sql, start_vid, end_vids, directed, driving_side, details)
+ pgr_withPoints(edges_sql, points_sql, start_vids, end_vid, directed, driving_side, details)
+ pgr_withPoints(edges_sql, points_sql, start_vids, end_vids, directed, driving_side, details)
+ RETURNS SET OF (seq, path_seq, [start_vid,] [end_vid,] node, edge, cost, agg_cost)
+
+
+Signatures
+-------------------
+
+.. index::
+ single: withPoints(Minimal Use) - Proposed
+
+Minimal Use
+.....................................................................
+
+The minimal signature:
+ - Is for a **directed** graph.
+ - The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction.
+ - No **details** are given about distance of other points of points_sql query.
+
+.. code-block:: none
+
+ pgr_withPoints(edges_sql, points_sql, start_vid, end_vid)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
+
+
+:Example: From point 1 to point 3
+
+.. literalinclude:: doc-pgr_withPoints.queries
+ :start-after: --e1
+ :end-before: --e2
+
+.. index::
+ single: withPoints(One to One) - Proposed
+
+One to One
+.....................................................................
+
+
+.. code-block:: none
+
+ pgr_withPoints(edges_sql, points_sql, start_vid, end_vid,
+ directed:=true, driving_side:='b', details:=false)
+ RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
+
+
+:Example: From point 1 to vertex 3
+
+.. literalinclude:: doc-pgr_withPoints.queries
+ :start-after: --e2
+ :end-before: --e3
+
+
+
+.. index::
+ single: withPoints(One to Many) - Proposed
+
+One to Many
+.....................................................................
+
+.. code-block:: none
+
+ pgr_withPoints(edges_sql, points_sql, start_vid, end_vids,
+ directed:=true, driving_side:='b', details:=false)
+ RETURNS SET OF (seq, path_seq, end_vid, node, edge, cost, agg_cost)
+
+
+:Example: From point 1 to point 3 and vertex 5
+
+.. literalinclude:: doc-pgr_withPoints.queries
+ :start-after: --e3
+ :end-before: --e4
+
+
+
+.. index::
+ single: withPoints(Many to One) - Proposed
+
+Many to One
+.....................................................................
+
+.. code-block:: none
+
+ pgr_withPoints(edges_sql, points_sql, start_vids, end_vid,
+ directed:=true, driving_side:='b', details:=false)
+ RETURNS SET OF (seq, path_seq, start_vid, node, edge, cost, agg_cost)
+
+
+:Example: From point 1 and vertex 2 to point 3
+
+.. literalinclude:: doc-pgr_withPoints.queries
+ :start-after: --e4
+ :end-before: --e5
+
+.. index::
+ single: withPoints(Many to Many) - Proposed
+
+Many to Many
+.....................................................................
+
+
+.. code-block:: none
+
+ pgr_withPoints(edges_sql, points_sql, start_vids, end_vids,
+ directed:=true, driving_side:='b', details:=false)
+ RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)
+
+
+:Example: From point 1 and vertex 2 to point 3 and vertex 7
+
+.. literalinclude:: doc-pgr_withPoints.queries
+ :start-after: --e5
+ :end-before: --q2
+
+
+
+
+Description of the Signatures
+---------------------------------
+
+..
+ description of the sql queries
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: points_sql_start
+ :end-before: points_sql_end
+
+
+Description of the parameters of the signatures
+.....................................................................
+
+
+================ ====================== =================================================
+Parameter Type Description
+================ ====================== =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**points_sql** ``TEXT`` Points SQL query as described above.
+**start_vid** ``ANY-INTEGER`` Starting vertex identifier. When negative: is a point's pid.
+**end_vid** ``ANY-INTEGER`` Ending vertex identifier. When negative: is a point's pid.
+**start_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of starting vertices. When negative: is a point's pid.
+**end_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of ending vertices. When negative: is a point's pid.
+**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
+**driving_side** ``CHAR`` (optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:
+ - In the right or left or
+ - If it doesn't matter with 'b' or NULL.
+ - If column not present 'b' is considered.
+
+**details** ``BOOLEAN`` (optional). When ``true`` the results will include the points in points_sql that are in the path.
+ Default is ``false`` which ignores other points of the points_sql.
+================ ====================== =================================================
+
+
+Description of the return values
+.....................................................................
+
+Returns set of ``(seq, [path_seq,] [start_vid,] [end_vid,] node, edge, cost, agg_cost)``
+
+============= =========== =================================================
+Column Type Description
+============= =========== =================================================
+**seq** ``INTEGER`` Row sequence.
+**path_seq** ``INTEGER`` Path sequence that indicates the relative position on the path.
+**start_vid** ``BIGINT`` Identifier of the starting vertex. When negative: is a point's pid.
+**end_vid** ``BIGINT`` Identifier of the ending vertex. When negative: is a point's pid.
+**node** ``BIGINT`` Identifier of the node:
+ - A positive value indicates the node is a vertex of edges_sql.
+ - A negative value indicates the node is a point of points_sql.
+
+**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence.
+ - ``-1`` for the last row in the path sequence.
+
+**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the path sequence.
+ - ``0`` for the last row in the path sequence.
+
+**agg_cost** ``FLOAT`` Aggregate cost from ``start_pid`` to ``node``.
+ - ``0`` for the first row in the path sequence.
+
+============= =========== =================================================
+
+
+
+Examples
+--------------------------------------------------------------------------------------
+
+:Example: Which path (if any) passes in front of point 6 or vertex 6 with **right** side driving topology.
+
+.. literalinclude:: doc-pgr_withPoints.queries
+ :start-after: --q2
+ :end-before: --q3
+
+:Example: Which path (if any) passes in front of point 6 or vertex 6 with **left** side driving topology.
+
+.. literalinclude:: doc-pgr_withPoints.queries
+ :start-after: --q3
+ :end-before: --q4
+
+:Example: Many to many example with a twist: on undirected graph and showing details.
+
+.. literalinclude:: doc-pgr_withPoints.queries
+ :start-after: --q4
+ :end-before: --q5
+
+
+The queries use the :doc:`sampledata` network.
+
+
+
+.. rubric:: History
+
+* Proposed in version 2.2
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`withPoints`
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doc/withPoints/pgr_withPointsCost.rst b/doc/withPoints/pgr_withPointsCost.rst
new file mode 100644
index 0000000..70fafc1
--- /dev/null
+++ b/doc/withPoints/pgr_withPointsCost.rst
@@ -0,0 +1,295 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_withPointsCost:
+
+pgr_withPointsCost - Proposed
+===============================================================================
+
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_withPointsCost`` - Calculates the shortest path and returns only the aggregate cost of the shortest path(s) found, for the combination of points given.
+
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.2.0
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Modify the graph to include points defined by points_sql.
+Using Dijkstra algorithm, return only the aggregate cost of the shortest path(s) found.
+
+Characteristics:
+----------------
+
+The main Characteristics are:
+ - It does not return a path.
+ - Returns the sum of the costs of the shortest path for pair combination of vertices in the modified graph.
+ - Vertices of the graph are:
+
+ - **positive** when it belongs to the edges_sql
+ - **negative** when it belongs to the points_sql
+
+ - Process is done only on edges with positive costs.
+ - Values are returned when there is a path.
+
+ - The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`.
+
+ - When the starting vertex and ending vertex are the same, there is no path.
+
+ - The `agg_cost` in the non included values `(v, v)` is `0`
+
+ - When the starting vertex and ending vertex are the different and there is no path.
+
+ - The `agg_cost` in the non included values `(u, v)` is :math:`\infty`
+
+ - If the values returned are stored in a table, the unique index would be the pair:
+ `(start_vid, end_vid)`.
+
+ - For undirected graphs, the results are symmetric.
+
+ - The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
+
+ - For optimization purposes, any duplicated value in the `start_vids` or `end_vids` is ignored.
+
+ - The returned values are ordered:
+
+ - `start_vid` ascending
+ - `end_vid` ascending
+
+ - Running time: :math:`O(| start\_vids | * (V \log V + E))`
+
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_withPointsCost(edges_sql, points_sql, start_vid, end_vid, directed, driving_side)
+ pgr_withPointsCost(edges_sql, points_sql, start_vid, end_vids, directed, driving_side)
+ pgr_withPointsCost(edges_sql, points_sql, start_vids, end_vid, directed, driving_side)
+ pgr_withPointsCost(edges_sql, points_sql, start_vids, end_vids, directed, driving_side)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+.. note:: There is no **details** flag, unlike the other members of the withPoints family of functions.
+
+
+Signatures
+------------
+
+.. index::
+ single: withPointsCost(Minimal Use) - proposed
+
+Minimal Use
+.........................................
+
+The minimal signature:
+ - Is for a **directed** graph.
+ - The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction.
+
+.. code-block:: none
+
+ pgr_withPointsCost(edges_sql, points_sql, start_vid, end_vid)
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+:Example:
+
+.. literalinclude:: doc-pgr_withPointsCost.queries
+ :start-after: --e1
+ :end-before: --e2
+
+.. index::
+ single: withPointsCost(One To One) - proposed
+
+One to One
+.........................................
+
+
+.. code-block:: none
+
+ pgr_withPointsCost(edges_sql, points_sql, start_vid, end_vid,
+ directed:=true, driving_side:='b')
+ RETURNS SET OF (seq, node, edge, cost, agg_cost)
+
+
+:Example:
+
+.. literalinclude:: doc-pgr_withPointsCost.queries
+ :start-after: --e2
+ :end-before: --e3
+
+
+.. index::
+ single: withPointsCost(One To Many) - proposed
+
+One to Many
+.........................................
+
+
+.. code-block:: none
+
+ pgr_withPointsCost(edges_sql, points_sql, start_vid, end_vids,
+ directed:=true, driving_side:='b')
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+:Example:
+
+.. literalinclude:: doc-pgr_withPointsCost.queries
+ :start-after: --e3
+ :end-before: --e4
+
+
+.. index::
+ single: withPointsCost(Many To One) - proposed
+
+Many to One
+.........................................
+
+.. code-block:: none
+
+ pgr_withPointsCost(edges_sql, points_sql, start_vids, end_vid,
+ directed:=true, driving_side:='b')
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+:Example:
+
+.. literalinclude:: doc-pgr_withPointsCost.queries
+ :start-after: --e4
+ :end-before: --e5
+
+.. index::
+ single: withPointsCost(Many To Many) - proposed
+
+Many to Many
+.........................................
+
+.. code-block:: none
+
+ pgr_withPointsCost(edges_sql, points_sql, start_vids, end_vids,
+ directed:=true, driving_side:='b')
+ RETURNS SET OF (start_vid, end_vid, agg_cost)
+
+
+:Example:
+
+.. literalinclude:: doc-pgr_withPointsCost.queries
+ :start-after: --e5
+ :end-before: --q2
+
+
+
+
+Description of the Signatures
+---------------------------------
+
+..
+ description of the sql queries
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: points_sql_start
+ :end-before: points_sql_end
+
+
+Description of the parameters of the signatures
+.................................................
+
+
+================ ====================== =================================================
+Parameter Type Description
+================ ====================== =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**points_sql** ``TEXT`` Points SQL query as described above.
+**start_vid** ``ANY-INTEGER`` Starting vertex identifier. When negative: is a point's pid.
+**end_vid** ``ANY-INTEGER`` Ending vertex identifier. When negative: is a point's pid.
+**start_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of starting vertices. When negative: is a point's pid.
+**end_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of ending vertices. When negative: is a point's pid.
+**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
+**driving_side** ``CHAR`` (optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:
+ - In the right or left or
+ - If it doesn't matter with 'b' or NULL.
+ - If column not present 'b' is considered.
+
+================ ====================== =================================================
+
+
+Description of the return values
+.................................................
+
+Returns set of ``(start_vid, end_vid, agg_cost)``
+
+============= =========== =================================================
+Column Type Description
+============= =========== =================================================
+**start_vid** ``BIGINT`` Identifier of the starting vertex. When negative: is a point's pid.
+**end_vid** ``BIGINT`` Identifier of the ending point. When negative: is a point's pid.
+**agg_cost** ``FLOAT`` Aggregate cost from ``start_vid`` to ``end_vid``.
+============= =========== =================================================
+
+
+
+Examples
+--------------------------------------------------------------------------------------
+
+:Example: With **right** side driving topology.
+
+.. literalinclude:: doc-pgr_withPointsCost.queries
+ :start-after: --q2
+ :end-before: --q3
+
+:Example: With **left** side driving topology.
+
+.. literalinclude:: doc-pgr_withPointsCost.queries
+ :start-after: --q3
+ :end-before: --q4
+
+:Example: Does not matter driving side.
+
+.. literalinclude:: doc-pgr_withPointsCost.queries
+ :start-after: --q4
+ :end-before: --q5
+
+
+The queries use the :doc:`sampledata` network.
+
+
+
+.. rubric:: History
+
+* Proposed in version 2.2
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`withPoints`
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/withPoints/pgr_withPointsDD.rst b/doc/withPoints/pgr_withPointsDD.rst
new file mode 100644
index 0000000..5bedec4
--- /dev/null
+++ b/doc/withPoints/pgr_withPointsDD.rst
@@ -0,0 +1,219 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_withPointsDD:
+
+pgr_withPointsDD - Proposed
+===============================================================================
+
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_withPointsDD`` - Returns the driving distance from a starting point.
+
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.2.0
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Modify the graph to include points and
+using Dijkstra algorithm, extracts all the nodes and points that have costs less
+than or equal to the value ``distance`` from the starting point.
+The edges extracted will conform the corresponding spanning tree.
+
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_withPointsDD(edges_sql, points_sql, start_vid, distance)
+ pgr_withPointsDD(edges_sql, points_sql, start_vid, distance, directed, driving_side, details)
+ pgr_withPointsDD(edges_sql, points_sql, start_vids, distance, directed, driving_side, details, equicost)
+ RETURNS SET OF (seq, node, edge, cost, agg_cost)
+
+Signatures
+------------
+
+.. index::
+ single: withPointsDD(Minimal Use) - proposed
+
+Minimal Use
+..................................
+
+The minimal signature:
+ - Is for a **directed** graph.
+ - The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction.
+ - No **details** are given about distance of other points of the query.
+
+.. code-block:: none
+
+ pgr_withPointsDD(edges_sql, points_sql, start_vid, distance)
+ directed:=true, driving_side:='b', details:=false)
+ RETURNS SET OF (seq, node, edge, cost, agg_cost)
+
+
+:Example:
+
+.. literalinclude:: doc-pgr_withPointsDD.queries
+ :start-after: --q1
+ :end-before: --q2
+
+.. index::
+ single: withPointsDD(Single Start Vertex) - proposed
+
+Driving distance from a single point
+..............................................
+
+Finds the driving distance depending on the optional parameters setup.
+
+.. code-block:: none
+
+ pgr_withPointsDD(edges_sql, points_sql, start_vids, distance,
+ directed:=true, driving_side:='b', details:=false)
+ RETURNS SET OF (seq, node, edge, cost, agg_cost)
+
+:Example: Right side driving topology
+
+.. literalinclude:: doc-pgr_withPointsDD.queries
+ :start-after: --q2
+ :end-before: --q3
+
+.. index::
+ single: withPointsDD(Multiple Starting Vertices) - proposed
+
+Driving distance from many starting points
+..................................................
+
+Finds the driving distance depending on the optional parameters setup.
+
+.. code-block:: none
+
+ pgr_withPointsDD(edges_sql, points_sql, start_vids, distance,
+ directed:=true, driving_side:='b', details:=false, equicost:=false)
+ RETURNS SET OF (seq, node, edge, cost, agg_cost)
+
+
+
+
+Description of the Signatures
+----------------------------------
+
+..
+ description of the sql queries
+
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: points_sql_start
+ :end-before: points_sql_end
+
+
+Description of the parameters of the signatures
+........................................................
+
+
+================ ================= =================================================
+Parameter Type Description
+================ ================= =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**points_sql** ``TEXT`` Points SQL query as described above.
+**start_vid** ``ANY-INTEGER`` Starting point id
+**distance** ``ANY-NUMERICAL`` Distance from the start_pid
+**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
+**driving_side** ``CHAR`` (optional). Value in ['b', 'r', 'l', NULL] indicating if the driving side is:
+ - In the right or left or
+ - If it doesn't matter with 'b' or NULL.
+ - If column not present 'b' is considered.
+
+**details** ``BOOLEAN`` (optional). When ``true`` the results will include the driving distance to the points with in the ``distance``.
+ Default is ``false`` which ignores other points of the points_sql.
+**equicost** ``BOOLEAN`` (optional). When ``true`` the nodes will only appear in the closest start_v list. Default is ``false`` which resembles several calls using the single starting point signatures. Tie brakes are arbitrary.
+================ ================= =================================================
+
+
+Description of the return values
+........................................................
+
+Returns set of ``(seq, node, edge, cost, agg_cost)``
+
+============ =========== =================================================
+Column Type Description
+============ =========== =================================================
+**seq** ``INT`` row sequence.
+**node** ``BIGINT`` Identifier of the node within the Distance from ``start_pid``. If ``details =: true`` a negative value is the identifier of a point.
+**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence.
+ - ``-1`` when ``start_vid`` = ``node``.
+
+**cost** ``FLOAT`` Cost to traverse ``edge``.
+ - ``0`` when ``start_vid`` = ``node``.
+
+**agg_cost** ``FLOAT`` Aggregate cost from ``start_vid`` to ``node``.
+ - ``0`` when ``start_vid`` = ``node``.
+
+============ =========== =================================================
+
+
+
+Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
+--------------------------------------------------------------------------------------
+
+The examples in this section use the following :ref:`fig1`
+
+:Example: Left side driving topology
+
+.. literalinclude:: doc-pgr_withPointsDD.queries
+ :start-after: --q3
+ :end-before: --q4
+
+:Example: Does not matter driving side.
+
+.. literalinclude:: doc-pgr_withPointsDD.queries
+ :start-after: --q4
+ :end-before: --q5
+
+
+
+
+The queries use the :doc:`sampledata` network.
+
+
+
+.. rubric:: History
+
+* Proposed in version 2.2
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`pgr_drivingDistance` - Driving distance using dijkstra.
+* :ref:`pgr_alphashape` - Alpha shape computation.
+* :ref:`pgr_points_as_polygon` - Polygon around set of points.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/withPoints/pgr_withPointsKSP.rst b/doc/withPoints/pgr_withPointsKSP.rst
new file mode 100644
index 0000000..e0f6e24
--- /dev/null
+++ b/doc/withPoints/pgr_withPointsKSP.rst
@@ -0,0 +1,194 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_withPointsKSP:
+
+pgr_withPointsKSP - Proposed
+===============================================================================
+
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_withPointsKSP`` - Find the K shortest paths using Yen's algorithm.
+
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: 2.2.0
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Modifies the graph to include the points defined in the ``points_sql`` and
+using Yen algorithm, finds the K shortest paths.
+
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ pgr_withPointsKSP(edges_sql, points_sql, start_pid, end_pid, K)
+ pgr_withPointsKSP(edges_sql, points_sql, start_pid, end_pid, K, directed, heap_paths, driving_side, details)
+ RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost)
+
+Signatures
+-----------
+
+.. index::
+ single: withPointsKSP(Minimal Signature) - Proposed
+
+Minimal Usage
+....................................
+
+The minimal usage:
+ - Is for a **directed** graph.
+ - The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction.
+ - No **details** are given about distance of other points of the query.
+ - No **heap paths** are returned.
+
+.. code-block:: none
+
+ pgr_withPointsKSP(edges_sql, points_sql, start_pid, end_pid, K)
+ RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost)
+
+
+:Example:
+
+.. literalinclude:: doc-pgr_withPointsKSP.queries
+ :start-after: --q1
+ :end-before: --q2
+
+.. index::
+ single: withPointsKSP(Complete Signature) - Proposed
+
+Complete Signature
+....................................
+
+Finds the K shortest paths depending on the optional parameters setup.
+
+.. code-block:: none
+
+ pgr_withPointsKSP(edges_sql, points_sql, start_pid, end_pid, K,
+ directed:=true, heap_paths:=false, driving_side:='b', details:=false)
+ RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost)
+
+
+:Example: With details.
+
+.. literalinclude:: doc-pgr_withPointsKSP.queries
+ :start-after: --q2
+ :end-before: --q3
+
+Description of the Signatures
+-------------------------------
+
+
+..
+ description of the sql queries
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: points_sql_start
+ :end-before: points_sql_end
+
+
+
+Description of the parameters of the signatures
+..............................................................
+
+
+================ ================= =================================================
+Parameter Type Description
+================ ================= =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**points_sql** ``TEXT`` Points SQL query as described above.
+**start_pid** ``ANY-INTEGER`` Starting point id.
+**end_pid** ``ANY-INTEGER`` Ending point id.
+**K** ``INTEGER`` Number of shortest paths.
+**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
+**heap_paths** ``BOOLEAN`` (optional). When ``true`` the paths calculated to get the shortests paths will be returned also. Default is ``false`` only the K shortest paths are returned.
+**driving_side** ``CHAR`` (optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:
+ - In the right or left or
+ - If it doesn't matter with 'b' or NULL.
+ - If column not present 'b' is considered.
+
+**details** ``BOOLEAN`` (optional). When ``true`` the results will include the driving distance to the points with in the ``distance``.
+ Default is ``false`` which ignores other points of the points_sql.
+================ ================= =================================================
+
+
+Description of the return values
+..............................................................
+
+Returns set of ``(seq, path_id, path_seq, node, edge, cost, agg_cost)``
+
+============ =========== =================================================
+Column Type Description
+============ =========== =================================================
+**seq** ``INTEGER`` Row sequence.
+**path_seq** ``INTEGER`` Relative position in the path of node and edge. Has value 1 for the beginning of a path.
+**path_id** ``INTEGER`` Path identifier. The ordering of the paths: For two paths i, j if i < j then agg_cost(i) <= agg_cost(j).
+**node** ``BIGINT`` Identifier of the node in the path. Negative values are the identifiers of a point.
+**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence.
+ - ``-1`` for the last row in the path sequence.
+
+**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the path sequence.
+ - ``0`` for the last row in the path sequence.
+
+**agg_cost** ``FLOAT`` Aggregate cost from ``start_pid`` to ``node``.
+ - ``0`` for the first row in the path sequence.
+
+============ =========== =================================================
+
+
+
+Examples
+--------------------------------------------------------------------------------------
+
+:Example: Left side driving topology with details.
+
+.. literalinclude:: doc-pgr_withPointsKSP.queries
+ :start-after: --q3
+ :end-before: --q4
+
+:Example: Right side driving topology with heap paths and details.
+
+.. literalinclude:: doc-pgr_withPointsKSP.queries
+ :start-after: --q4
+ :end-before: --q5
+
+The queries use the :doc:`sampledata` network.
+
+.. rubric:: History
+
+* Proposed in version 2.2
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`withPoints`
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/withPoints/pgr_withPointsVia.rst b/doc/withPoints/pgr_withPointsVia.rst
new file mode 100644
index 0000000..f199bf1
--- /dev/null
+++ b/doc/withPoints/pgr_withPointsVia.rst
@@ -0,0 +1,200 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+.. _pgr_withPointsVia:
+
+pgr_withPointsVia - Proposed
+===============================================================================
+
+
+Name
+-------------------------------------------------------------------------------
+
+``pgr_withPointsVia`` - Get a path using the vertices/points indicated
+
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+
+
+.. figure:: images/boost-inside.jpeg
+ :target: http://www.boost.org/libs/graph
+
+ Boost Graph Inside
+
+.. rubric:: Availability: PENDING.
+
+Synopsis
+-------------------------------------------------------------------------------
+
+Modify the graph to include points and
+using Dijkstra algorithm, extracts all the nodes and points that have costs less
+than or equal to the value ``distance`` from the starting point.
+The edges extracted will conform the corresponding spanning tree.
+
+
+Signature Summary
+-----------------
+
+.. code-block:: none
+
+ withPointsVia(edges_sql, points_sql, start_pid, distance)
+ withPointsVia(edges_sql, points_sql, start_pid, distance, directed, driving_side, details)
+ RETURNS SET OF (seq, node, edge, cost, agg_cost)
+
+Signatures
+-----------------
+
+.. index::
+ single: withPointsVia(edges_sql, points_sql, start_pid, distance) -- proposed
+
+Minimal signature
+...................................................
+
+The minimal signature:
+ - Is for a **directed** graph.
+ - The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction.
+ - No **details** are given about distance of other points of the query.
+
+.. code-block:: none
+
+ withPointsVia(edges_sql, points_sql, start_pid, distance)
+ RETURNS SET OF (seq, node, edge, cost, agg_cost)
+
+
+:Example:
+
+.. literalinclude:: doc-pgr_withPointsVia.queries
+ :start-after: --q1
+ :end-before: --q2
+
+.. index::
+ single: withPointsVia(edges_sql, points_sql, start_pid, distance, directed, driving_side, details) -- proposed
+
+Driving distance from a single point
+...................................................
+
+Finds the driving distance depending on the optional parameters setup.
+
+.. code-block:: none
+
+ pgr_withPointsVia(edges_sql, points_sql, start_pid, distance,
+ directed := true, driving_side := 'b', details := false)
+ RETURNS SET OF (seq, node, edge, cost, agg_cost)
+
+
+:Example: Right side driving topology
+
+.. literalinclude:: doc-pgr_withPointsVia.queries
+ :start-after: --q2
+ :end-before: --q3
+
+Description of the Signatures
+---------------------------------------------------
+
+
+..
+ description of the sql queries
+
+.. include:: pgRouting-concepts.rst
+ :start-after: basic_edges_sql_start
+ :end-before: basic_edges_sql_end
+
+.. include:: pgRouting-concepts.rst
+ :start-after: points_sql_start
+ :end-before: points_sql_end
+
+
+
+Description of the parameters of the signatures
+...................................................
+
+
+================ ================= =================================================
+Parameter Type Description
+================ ================= =================================================
+**edges_sql** ``TEXT`` Edges SQL query as described above.
+**points_sql** ``TEXT`` Points SQL query as described above.
+**start_pid** ``ANY-INTEGER`` Starting point id.
+**distance** ``ANY_NUMERICAL`` Distance from the start_pid
+**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
+**driving_side** ``CHAR`` (optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:
+ - In the right or left or
+ - If it doesn't matter with 'b' or NULL.
+ - If column not present 'b' is considered.
+
+**details** ``BOOLEAN`` (optional). When ``true`` the results will include the driving distance to the points with in Distance.
+ Default is ``false`` which ignores other points of the points_sql.
+================ ================= =================================================
+
+
+Description of the return values
+...................................................
+
+Returns set of ``(seq, node, edge, cost, agg_cost)``
+
+============ =========== =================================================
+Column Type Description
+============ =========== =================================================
+**seq** ``INT`` row sequence.
+**node** ``BIGINT`` Identifier of the node within the Distance from ``start_pid``. If ``details =: true`` a negative value is the identifier of a point.
+**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence.
+ - ``-1`` for the last row in the path sequence.
+
+**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the path sequence.
+ - ``0`` for the last row in the path sequence.
+
+**agg_cost** ``FLOAT`` Aggregate cost from ``start_pid`` to ``node``.
+ - ``0`` for the first row in the path sequence.
+
+============ =========== =================================================
+
+Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
+--------------------------------------------------------------------------------------
+
+The examples in this section use the following :ref:`fig1`
+
+:Example: Left side driving topology
+
+.. literalinclude:: doc-pgr_withPointsVia.queries
+ :start-after: --q3
+ :end-before: --q4
+
+:Example: Does not matter driving side.
+
+.. literalinclude:: doc-pgr_withPointsVia.queries
+ :start-after: --q4
+ :end-before: --q5
+
+
+
+
+
+
+
+.. rubric:: History
+
+* Proposed in version 2.2
+
+
+See Also
+-------------------------------------------------------------------------------
+
+* :ref:`pgr_drivingDistance` - Driving distance using dijkstra.
+* :ref:`pgr_alphashape` - Alpha shape computation.
+* :ref:`pgr_points_as_polygon` - Polygon around set of points.
+* The queries use the :doc:`sampledata` network.
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
+
diff --git a/doc/withPoints/withPoints-family.rst b/doc/withPoints/withPoints-family.rst
new file mode 100644
index 0000000..01ae589
--- /dev/null
+++ b/doc/withPoints/withPoints-family.rst
@@ -0,0 +1,195 @@
+..
+ ****************************************************************************
+ pgRouting Manual
+ Copyright(c) pgRouting Contributors
+
+ This documentation is licensed under a Creative Commons Attribution-Share
+ Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
+ ****************************************************************************
+
+
+.. _withPoints:
+
+withPoints - Family of functions
+===============================================================================
+
+When points are also given as input:
+
+.. index from here
+
+- :ref:`pgr_withPoints` - Route from/to points anywhere on the graph.
+- :ref:`pgr_withPointsCost` - Costs of the shortest paths.
+- :ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths.
+- :ref:`pgr_withPointsKSP` - K shortest paths.
+- :ref:`pgr_withPointsDD` - Driving distance.
+
+.. index to here
+
+.. toctree::
+ :hidden:
+
+ pgr_withPoints
+ pgr_withPointsCost
+ pgr_withPointsCostMatrix
+ pgr_withPointsKSP
+ pgr_withPointsDD
+
+
+
+.. include:: proposed.rst
+ :start-after: begin-warning
+ :end-before: end-warning
+
+
+
+
+Images
+--------------
+
+The squared vertices are the temporary vertices, The temporary vertices are added acordng to the
+dirving side, The following images visualy show the diferences on how depending on the driving side the data is interpreted.
+
+.. rubric:: Right driving side
+
+.. image:: images/rightDrivingSide.png
+ :scale: 50%
+
+.. rubric:: Left driving side
+
+.. image:: images/leftDrivingSide.png
+ :scale: 50%
+
+.. rubric:: doesn't matter the driving side
+
+.. image:: images/noMatterDrivingSide.png
+ :scale: 50%
+
+Introduction
+--------------
+
+This famly of functions was thought for routing vehicles, but might as well work
+for some other application that we can not think of.
+
+The with points family of function give you the ability to route between
+arbitrary points located outside the original graph.
+
+When given a point identified with a `pid` that its being mapped to and edge with
+an identifier `edge_id`, with a `fraction` along
+that edge (from the source to the target of the edge) and some additional
+information about which `side` of the edge the point is on, then routing
+from arbitrary points more accurately reflect routing vehicles in road networks,
+
+
+I talk about a family of functions because it includes different functionalities.
+ - pgr_withPoints is pgr_dijkstra based
+ - pgr_withPointsCost is pgr_dijkstraCost based
+ - pgr_withPointsKSP is pgr_ksp based
+ - pgr_withPointsDD is pgr_drivingDistance based
+
+In all this functions we have to take care of as many aspects as possible:
+
+- Must work for routing:
+
+ - Cars (directed graph)
+ - Pedestrians (undirected graph)
+
+- Arriving at the point:
+
+ - In either side of the street.
+ - Compulsory arrival on the side of the street where the point is located.
+
+- Countries with:
+
+ - Right side driving
+ - Left side driving
+
+- Some points are:
+
+ - Permanent, for example the set of points of clients stored in a table in the data base
+ - Temporal, for example points given through a web application
+
+- The numbering of the points are handled with negative sign.
+
+ - Original point identifiers are to be positive.
+ - Transformation to negative is done internally.
+ - For results for involving vertices identifiers
+
+ - positive sign is a vertex of the original grpah
+ - negative sign is a point of the temporary points
+
+The reason for doing this is to avoid confusion when there is a vertex with the same number as identifier as the points identifier.
+
+Graph & edges
+----------------
+
+- Let :math:`G_d(V,E)` where :math:`V` is the set of vertices and :math:`E` is the set of edges be the original directed graph.
+
+ - An edge of the original `edges_sql` is :math:`(id, source, target, cost, reverse\_cost)` will generate internally
+
+ - :math:`(id, source, target, cost)`
+ - :math:`(id, target, source, reverse\_cost)`
+
+Point Definition
+----------------
+
+- A point is defined by the quadruplet: :math:`(pid, eid, fraction, side)`
+
+ - **pid** is the point identifier
+ - **eid** is an edge id of the `edges_sql`
+ - **fraction** represents where the edge `eid` will be cut.
+ - **side** Indicates the side of the edge where the point is located.
+
+
+Creating Temporary Vertices in the Graph
+----------------------------------------
+
+For edge (15, 9,12 10, 20), & lets insert point (2, 12, 0.3, r)
+
+.. rubric:: On a right hand side driving network
+
+From first image above:
+
+- We can arrive to the point only via vertex 9.
+- It only afects the edge (15, 9,12, 10) so that edge is removed.
+- Edge (15, 12,9, 20) is kept.
+- Create new edges:
+
+ - (15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3
+ - (15, -1,12, 7) edge from point 1 to vertex 12 has cost 7
+
+.. rubric:: On a left hand side driving network
+
+From second image above:
+
+- We can arrive to the point only via vertex 12.
+- It only afects the edge (15, 12,9 20) so that edge is removed.
+- Edge (15, 9,12, 10) is kept.
+- Create new edges:
+
+ - (15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14
+ - (15, -1,9, 6) edge from point 1 to vertex 9 has cost 6
+
+:Remember: that fraction is from vertex 9 to vertex 12
+
+
+.. rubric:: When driving side does not matter
+
+From third image above:
+
+- We can arrive to the point either via vertex 12 or via vertex 9
+- Edge (15, 12,9 20) is removed.
+- Edge (15, 9,12, 10) is removed.
+- Create new edges:
+
+ - (15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14
+ - (15, -1,9, 6) edge from point 1 to vertex 9 has cost 6
+ - (15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3
+ - (15, -1,12, 7) edge from point 1 to vertex 12 has cost 7
+
+See Also
+-------------------------------------------------------------------------------
+
+.. rubric:: Indices and tables
+
+* :ref:`genindex`
+* :ref:`search`
diff --git a/doxygen/CMakeLists.txt b/doxygen/CMakeLists.txt
index b463d34..a957c98 100644
--- a/doxygen/CMakeLists.txt
+++ b/doxygen/CMakeLists.txt
@@ -4,9 +4,9 @@
#
option(BUILD_DOXY
- "Set ON|OFF (default=OFF) to build Developers Documentation" OFF)
+ "Set ON|OFF (default=OFF) to build Developers Documentation" ON)
-if (BUILD_DOXY)
+if (BUILD_DOXY AND WITH_DOC)
message(STATUS "Developers documentation.")
find_package(Doxygen ${DOXYGEN_MINIMUM_VERSION})
diff --git a/doxygen/Doxyfile.in b/doxygen/Doxyfile.in
index c02b5ca..7ad601d 100644
--- a/doxygen/Doxyfile.in
+++ b/doxygen/Doxyfile.in
@@ -51,7 +51,7 @@ PROJECT_BRIEF = "@PROJECT_BRIEF@"
# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
# to the output directory.
-PROJECT_LOGO = @CMAKE_CURRENT_SOURCE_DIR@/../doc/static/images/pgrouting-logo.png
+PROJECT_LOGO = @CMAKE_CURRENT_SOURCE_DIR@/../doc/_static/images/pgrouting-logo.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
@@ -140,7 +140,7 @@ INLINE_INHERITED_MEMB = YES
# shortest path that makes the file name unique will be used
# The default value is: YES.
-FULL_PATH_NAMES = NO
+FULL_PATH_NAMES = YES
# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
# Stripping is only done if one of the specified strings matches the left-hand
@@ -754,7 +754,7 @@ WARN_LOGFILE = ./LOG
# spaces.
# Note: If this tag is empty the current directory is searched.
-INPUT = @CMAKE_CURRENT_SOURCE_DIR@/../src @CMAKE_CURRENT_SOURCE_DIR@
+INPUT = @CMAKE_CURRENT_SOURCE_DIR@/../src @CMAKE_CURRENT_SOURCE_DIR@/../include @CMAKE_CURRENT_SOURCE_DIR@
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -806,7 +806,7 @@ EXCLUDE_SYMLINKS = NO
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*
-EXCLUDE_PATTERNS = */notUsed/* */test/* */src/trsp/doc/README.md
+EXCLUDE_PATTERNS = */notUsed/* */test/* */src/trsp/doc/README.md
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
@@ -843,8 +843,8 @@ EXAMPLE_RECURSIVE = NO
# that contain images that are to be included in the documentation (see the
# \image command).
-IMAGE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/../doc/static/images/developers \
- @CMAKE_CURRENT_SOURCE_DIR@/../src/contraction/doc/images
+IMAGE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/../doc/_static/images/developers \
+ @CMAKE_CURRENT_SOURCE_DIR@/../doc/contraction/images
# The INPUT_FILTER tag can be used to specify a program that doxygen should
@@ -912,7 +912,7 @@ SOURCE_BROWSER = YES
# classes and enums directly into the documentation.
# The default value is: NO.
-INLINE_SOURCES = NO
+INLINE_SOURCES = YES
# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
# special comment blocks from generated source code fragments. Normal C, C++ and
@@ -2059,7 +2059,7 @@ HIDE_UNDOC_RELATIONS = YES
# set to NO
# The default value is: YES.
-HAVE_DOT = NO
+HAVE_DOT = YES
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
# to run in parallel. When set to 0 doxygen will base this on the number of
@@ -2146,7 +2146,7 @@ UML_LIMIT_NUM_FIELDS = 10
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-TEMPLATE_RELATIONS = NO
+TEMPLATE_RELATIONS = YES
# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
# YES then doxygen will generate a graph for each documented file showing the
@@ -2175,7 +2175,7 @@ INCLUDED_BY_GRAPH = YES
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-CALL_GRAPH = NO
+CALL_GRAPH = YES
# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
# dependency graph for every global function or class method.
@@ -2186,7 +2186,7 @@ CALL_GRAPH = NO
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
-CALLER_GRAPH = NO
+CALLER_GRAPH = YES
# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
# hierarchy of all classes instead of a textual one.
@@ -2276,7 +2276,7 @@ DOT_GRAPH_MAX_NODES = 50
# Minimum value: 0, maximum value: 1000, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
-MAX_DOT_GRAPH_DEPTH = 0
+MAX_DOT_GRAPH_DEPTH = 1
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, because dot on Windows does not seem
@@ -2312,4 +2312,4 @@ GENERATE_LEGEND = YES
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
-DOT_CLEANUP = YES
+DOT_CLEANUP = NO
diff --git a/include/allpairs/pgr_allpairs.hpp b/include/allpairs/pgr_allpairs.hpp
new file mode 100644
index 0000000..5522e77
--- /dev/null
+++ b/include/allpairs/pgr_allpairs.hpp
@@ -0,0 +1,316 @@
+/*PGR-GNU*****************************************************************
+File: pgr_allpairs.hpp
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+// http://www.cs.rpi.edu/~musser/archive/2005/gsd/restricted/FloydWarshall/FloydWarshall.pdf
+
+#ifndef INCLUDE_ALLPAIRS_PGR_ALLPAIRS_HPP_
+#define INCLUDE_ALLPAIRS_PGR_ALLPAIRS_HPP_
+#pragma once
+
+
+#include <boost/config.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/property_map/property_map.hpp>
+#include <boost/graph/johnson_all_pairs_shortest.hpp>
+#include <boost/graph/floyd_warshall_shortest.hpp>
+
+
+#include <deque>
+#include <vector>
+#include <set>
+#include <limits>
+
+
+#include "cpp_common/basePath_SSEC.hpp"
+#include "cpp_common/pgr_base_graph.hpp"
+
+// TODO(vicky) don't keep it here
+#include "cpp_common/pgr_alloc.hpp"
+
+template < class G > class Pgr_allpairs;
+
+// user's functions
+template < class G >
+void
+pgr_johnson(G &graph, std::vector< Matrix_cell_t> &rows) {
+ Pgr_allpairs< G > fn_johnson;
+ fn_johnson.johnson(graph, rows);
+}
+
+template < class G >
+void
+pgr_floydWarshall(G &graph, std::vector< Matrix_cell_t> &rows) {
+ Pgr_allpairs< G > fn_floydWarshall;
+ fn_floydWarshall.floydWarshall(graph, rows);
+}
+
+// for postgres
+template < class G >
+void
+pgr_johnson(
+ G &graph,
+ size_t &result_tuple_count,
+ Matrix_cell_t **postgres_rows) {
+ Pgr_allpairs< G > fn_johnson;
+ fn_johnson.johnson(graph, result_tuple_count, postgres_rows);
+}
+
+
+template < class G >
+void
+pgr_floydWarshall(
+ G &graph,
+ size_t &result_tuple_count,
+ Matrix_cell_t **postgres_rows) {
+ Pgr_allpairs< G > fn_floydWarshall;
+ fn_floydWarshall.floydWarshall(graph, result_tuple_count, postgres_rows);
+}
+
+
+// template class
+template < class G >
+class Pgr_allpairs {
+ // default constructors and destructors
+ /*
+ Matrix_cell_t description:
+ int64_t from_vid;
+ int64_t to_vid;
+ float8 cost;
+ */
+ public:
+ void floydWarshall(
+ G &graph,
+ size_t &result_tuple_count,
+ Matrix_cell_t **postgres_rows);
+
+
+ void floydWarshall(
+ G &graph,
+ std::vector< Matrix_cell_t> &rows);
+
+ void johnson(
+ G &graph,
+ size_t &result_tuple_count,
+ Matrix_cell_t **postgres_rows);
+
+
+ void johnson(
+ G &graph,
+ std::vector< Matrix_cell_t> &rows);
+
+ private:
+ void make_matrix(
+ size_t v_size,
+ std::vector< std::vector<double>> &matrix) const;
+
+ void make_result(
+ const G &graph,
+ const std::vector< std::vector<double> > &matrix,
+ size_t &result_tuple_count,
+ Matrix_cell_t **postgres_rows) const;
+
+ size_t count_rows(
+ const G &graph,
+ const std::vector< std::vector<double> > &matrix) const;
+
+ void make_result(
+ G &graph,
+ std::vector< std::vector<double> > &matrix,
+ std::vector< Matrix_cell_t> &rows);
+
+ template <typename T>
+ struct inf_plus {
+ T operator()(const T& a, const T& b) const {
+ T inf = (std::numeric_limits<T>::max)();
+ if (a == inf || b == inf)
+ return inf;
+ return a + b;
+ }
+ };
+};
+
+/*
+ * PUBLIC FUNCTIONS
+ */
+
+template < class G >
+void Pgr_allpairs< G >::floydWarshall(
+ G &graph,
+ size_t &result_tuple_count,
+ Matrix_cell_t **postgres_rows) {
+ std::vector< std::vector<double>> matrix;
+ make_matrix(graph.num_vertices(), matrix);
+ inf_plus<double> combine;
+ boost::floyd_warshall_all_pairs_shortest_paths(
+ graph.graph,
+ matrix,
+ weight_map(get(&pgrouting::Basic_edge::cost, graph.graph)).
+ distance_combine(combine).
+ distance_inf((std::numeric_limits<double>::max)()).
+ distance_zero(0));
+
+ make_result(graph, matrix, result_tuple_count, postgres_rows);
+}
+
+
+template < class G >
+void Pgr_allpairs< G >::floydWarshall(
+ G &graph,
+ std::vector< Matrix_cell_t> &rows) {
+ std::vector< std::vector<double>> matrix;
+ make_matrix(graph.num_vertices(), matrix);
+ inf_plus<double> combine;
+ boost::floyd_warshall_all_pairs_shortest_paths(
+ graph.graph,
+ matrix,
+ weight_map(get(&pgrouting::Basic_edge::cost, graph.graph)).
+ distance_combine(combine).
+ distance_inf((std::numeric_limits<double>::max)()).
+ distance_zero(0));
+
+ make_result(graph, matrix, rows);
+}
+
+template < class G >
+void Pgr_allpairs< G >::johnson(
+ G &graph,
+ size_t &result_tuple_count,
+ Matrix_cell_t **postgres_rows) {
+ std::vector< std::vector<double>> matrix;
+ make_matrix(graph.num_vertices(), matrix);
+ inf_plus<double> combine;
+ boost::johnson_all_pairs_shortest_paths(
+ graph.graph,
+ matrix,
+ weight_map(get(&pgrouting::Basic_edge::cost, graph.graph)).
+ distance_combine(combine).
+ distance_inf((std::numeric_limits<double>::max)()).
+ distance_zero(0));
+
+ make_result(graph, matrix, result_tuple_count, postgres_rows);
+}
+
+
+template < class G >
+void Pgr_allpairs< G >::johnson(
+ G &graph,
+ std::vector< Matrix_cell_t> &rows) {
+ std::vector< std::vector<double>> matrix;
+ make_matrix(graph.num_vertices(), matrix);
+ inf_plus<double> combine;
+ boost::johnson_all_pairs_shortest_paths(
+ graph.graph,
+ matrix,
+ weight_map(get(&pgrouting::Basic_edge::cost, graph.graph)).
+ distance_combine(combine).
+ distance_inf((std::numeric_limits<double>::max)()).
+ distance_zero(0));
+
+ make_result(graph, matrix, rows);
+}
+
+
+
+
+/*
+ * PRIVATE FUNCTIONS
+ */
+
+template < class G >
+void
+Pgr_allpairs< G >::make_matrix(
+ size_t v_size,
+ std::vector< std::vector<double>> &matrix) const {
+ // TODO(vicky) in one step
+ matrix.resize(v_size);
+ for (size_t i=0; i < v_size; i++)
+ matrix[i].resize(v_size);
+}
+
+template < class G >
+size_t
+Pgr_allpairs< G >::count_rows(
+ const G &graph,
+ const std::vector< std::vector<double> > &matrix) const {
+ size_t result_tuple_count = 0;
+ for (size_t i = 0; i < graph.num_vertices(); i++) {
+ for (size_t j = 0; j < graph.num_vertices(); j++) {
+ if (i == j) continue;
+ if (matrix[i][j] != (std::numeric_limits<double>::max)()) {
+ result_tuple_count++;
+ } // if
+ } // for j
+ } // for i
+ return result_tuple_count;
+}
+
+// TODO(vicky) don't keep it here for postgres
+template < class G >
+void
+Pgr_allpairs< G >::make_result(
+ const G &graph,
+ const std::vector< std::vector<double> > &matrix,
+ size_t &result_tuple_count,
+ Matrix_cell_t **postgres_rows) const {
+ result_tuple_count = count_rows(graph, matrix);
+ *postgres_rows = pgr_alloc(result_tuple_count, (*postgres_rows));
+
+
+ size_t seq = 0;
+ for (typename G::V v_i = 0; v_i < graph.num_vertices(); v_i++) {
+ for (typename G::V v_j = 0; v_j < graph.num_vertices(); v_j++) {
+ if (v_i == v_j) continue;
+ if (matrix[v_i][v_j] != (std::numeric_limits<double>::max)()) {
+ (*postgres_rows)[seq].from_vid = graph[v_i].id;
+ (*postgres_rows)[seq].to_vid = graph[v_j].id;
+ (*postgres_rows)[seq].cost = matrix[v_i][v_j];
+ seq++;
+ } // if
+ } // for j
+ } // for i
+}
+
+
+template < class G >
+void
+Pgr_allpairs< G >::make_result(
+ G &graph,
+ std::vector< std::vector<double> > &matrix,
+ std::vector< Matrix_cell_t> &rows) {
+ size_t count = count_rows(graph, matrix);
+ rows.resize(count);
+ size_t seq = 0;
+
+ for (typename G::V v_i = 0; v_i < graph.num_vertices(); v_i++) {
+ for (typename G::V v_j = 0; v_j < graph.num_vertices(); v_j++) {
+ if (matrix[v_i][v_j] != (std::numeric_limits<double>::max)()) {
+ rows[seq] =
+ {graph[v_i].id, graph[v_j].id, matrix[v_i][v_j]};
+ seq++;
+ } // if
+ } // for j
+ } // for i
+}
+
+#endif // INCLUDE_ALLPAIRS_PGR_ALLPAIRS_HPP_
diff --git a/include/astar/pgr_astar.hpp b/include/astar/pgr_astar.hpp
new file mode 100644
index 0000000..0d7aa18
--- /dev/null
+++ b/include/astar/pgr_astar.hpp
@@ -0,0 +1,359 @@
+/*PGR-GNU*****************************************************************
+
+File: pgr_astar.hpp
+
+Copyright (c) 2015 Vicky Vergara
+Mail: vicky_vergara at hotmail.com
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_ASTAR_PGR_ASTAR_HPP_
+#define INCLUDE_ASTAR_PGR_ASTAR_HPP_
+#pragma once
+
+#include <boost/config.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/graph/astar_search.hpp>
+
+#include <cmath>
+
+
+#include <deque>
+#include <limits>
+#include <algorithm>
+#include <vector>
+#include <set>
+
+#include "cpp_common/basePath_SSEC.hpp"
+#include "cpp_common/pgr_base_graph.hpp"
+
+namespace pgrouting {
+namespace algorithms {
+
+template < class G >
+class Pgr_astar {
+ public:
+ typedef typename G::V V;
+ typedef typename G::B_G B_G;
+
+
+ void clear() {
+ predecessors.clear();
+ distances.clear();
+ }
+
+ //! @name Astar
+ //@{
+ //! one to one
+ //! astar 1 to 1
+ Path astar(
+ G &graph,
+ int64_t start_vertex,
+ int64_t end_vertex,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost) {
+ clear();
+
+ predecessors.resize(graph.num_vertices());
+ distances.resize(graph.num_vertices());
+
+ if (!graph.has_vertex(start_vertex)
+ || !graph.has_vertex(end_vertex)) {
+ return Path(start_vertex, end_vertex);
+ }
+
+ auto v_source(graph.get_V(start_vertex));
+ auto v_target(graph.get_V(end_vertex));
+
+ // perform the algorithm
+ astar_1_to_1(graph, v_source, v_target, heuristic, factor, epsilon);
+
+ return Path(graph,
+ v_source, v_target,
+ predecessors, distances,
+ only_cost);
+ }
+
+ //! astar 1 to many
+ std::deque<Path> astar(
+ G &graph,
+ int64_t start_vertex,
+ std::vector<int64_t> end_vertex,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost) {
+ clear();
+
+ predecessors.resize(graph.num_vertices());
+ distances.resize(graph.num_vertices());
+
+ if (!graph.has_vertex(start_vertex)) return std::deque<Path>();
+ auto v_source(graph.get_V(start_vertex));
+
+ std::vector<V> v_targets;
+ for (const auto &vertex : end_vertex) {
+ if (graph.has_vertex(vertex)) {
+ v_targets.push_back(graph.get_V(vertex));
+ }
+ }
+
+ astar_1_to_many(graph,
+ v_source,
+ v_targets,
+ heuristic,
+ factor,
+ epsilon);
+
+ auto paths = get_paths(graph, v_source, v_targets, only_cost);
+
+ std::stable_sort(paths.begin(), paths.end(),
+ [](const Path &e1, const Path &e2)->bool {
+ return e1.end_id() < e2.end_id();
+ });
+
+ return paths;
+ }
+
+ // preparation for many to many
+ std::deque<Path> astar(
+ G &graph,
+ std::vector<int64_t> start_vertex,
+ std::vector<int64_t> end_vertex,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost) {
+ std::deque<Path> paths;
+ for (const auto &start : start_vertex) {
+ auto r_paths = astar(graph, start, end_vertex,
+ heuristic, factor, epsilon, only_cost);
+ paths.insert(paths.begin(), r_paths.begin(), r_paths.end());
+ }
+
+ std::sort(paths.begin(), paths.end(),
+ [](const Path &e1, const Path &e2)->bool {
+ return e1.end_id() < e2.end_id();
+ });
+ std::stable_sort(paths.begin(), paths.end(),
+ [](const Path &e1, const Path &e2)->bool {
+ return e1.start_id() < e2.start_id();
+ });
+ return paths;
+ }
+ //@}
+
+
+
+ private:
+ //! @name members;
+ //@{
+ struct found_goals{}; //!< exception for termination
+ std::vector< V > predecessors;
+ std::vector< double > distances;
+ std::deque< V > nodesInDistance;
+ //@}
+
+ // heuristic for one goal
+ class distance_heuristic : public boost::astar_heuristic< B_G, double > {
+ public:
+ distance_heuristic(B_G &g, V goal, int heuristic, double factor)
+ : m_g(g),
+ m_factor(factor),
+ m_heuristic(heuristic) {
+ m_goals.insert(goal);
+ }
+ distance_heuristic(
+ B_G &g,
+ std::vector< V > goals,
+ int heuristic,
+ double factor)
+ : m_g(g),
+ m_goals(goals.begin(), goals.end()),
+ m_factor(factor),
+ m_heuristic(heuristic) {}
+
+ double operator()(V u) {
+ if (m_heuristic == 0) return 0;
+ if (m_goals.empty()) return 0;
+ double best_h((std::numeric_limits<double>::max)());
+ for (auto goal : m_goals) {
+ double current((std::numeric_limits<double>::max)());
+ double dx = m_g[goal].x() - m_g[u].x();
+ double dy = m_g[goal].y() - m_g[u].y();
+ switch (m_heuristic) {
+ case 0:
+ current = 0;
+ case 1:
+ current = std::fabs((std::max)(dx, dy)) * m_factor;
+ case 2:
+ current = std::fabs((std::min)(dx, dy)) * m_factor;
+ case 3:
+ current = (dx * dx + dy * dy) * m_factor * m_factor;
+ case 4:
+ current = std::sqrt(dx * dx + dy * dy) * m_factor;
+ case 5:
+ current = (std::fabs(dx) + std::fabs(dy)) * m_factor;
+ default:
+ current = 0;
+ }
+ if (current < best_h) {
+ best_h = current;
+ }
+ }
+ {
+ auto s_it = m_goals.find(u);
+ if (!(s_it == m_goals.end())) {
+ // found one more goal
+ m_goals.erase(s_it);
+ }
+ }
+ return best_h;
+ }
+
+ private:
+ B_G &m_g;
+ std::set< V > m_goals;
+ double m_factor;
+ int m_heuristic;
+ }; // class distance_heuristic
+
+
+ //! visitor that terminates when we find the goal
+ class astar_one_goal_visitor : public boost::default_astar_visitor {
+ public:
+ explicit astar_one_goal_visitor(V goal) : m_goal(goal) {}
+ template <class B_G>
+ void examine_vertex(V u, B_G &g) {
+ if (u == m_goal)
+ throw found_goals();
+ // using g, otherwise is throws a warning
+ num_edges(g);
+ }
+ private:
+ V m_goal;
+ }; // class astar_one_goal_visitor
+
+ //! class for stopping when all targets are found
+ class astar_many_goals_visitor : public boost::default_astar_visitor {
+ public:
+ explicit astar_many_goals_visitor(std::vector< V > goals)
+ :m_goals(goals.begin(), goals.end()) {}
+ template <class B_G>
+ void examine_vertex(V u, B_G &g) {
+ auto s_it = m_goals.find(u);
+ if (s_it == m_goals.end()) return;
+ // found one more goal
+ m_goals.erase(s_it);
+ if (m_goals.size() == 0) throw found_goals();
+ num_edges(g);
+ }
+ private:
+ std::set< V > m_goals;
+ };
+
+ /******************** IMPLEMENTTION ******************/
+
+
+
+ //! Call to Astar 1 source to 1 target
+ bool astar_1_to_1(
+ G &graph,
+ V source,
+ V target,
+ int heuristic,
+ double factor,
+ double epsilon) {
+ bool found = false;
+ try {
+ // Call A* named parameter interface
+ boost::astar_search(
+ graph.graph, source,
+ distance_heuristic(graph.graph, target,
+ heuristic, factor * epsilon),
+ boost::predecessor_map(&predecessors[0])
+ .weight_map(get(&pgrouting::Basic_edge::cost, graph.graph))
+ .distance_map(&distances[0])
+ .visitor(astar_one_goal_visitor(target)));
+ }
+ catch(found_goals &) {
+ found = true; // Target vertex found
+ }
+ return found;
+ }
+
+
+ //! Call to astar 1 source to many targets
+ bool astar_1_to_many(
+ G &graph,
+ V source,
+ const std::vector< V > &targets,
+ int heuristic,
+ double factor,
+ double epsilon) {
+ bool found = false;
+ try {
+ boost::astar_search(
+ graph.graph, source,
+ distance_heuristic(
+ graph.graph, targets,
+ heuristic, factor * epsilon),
+ boost::predecessor_map(&predecessors[0])
+ .weight_map(get(&pgrouting::Basic_edge::cost, graph.graph))
+ .distance_map(&distances[0])
+ .visitor(astar_many_goals_visitor(targets)));
+ }
+ catch(found_goals &) {
+ found = true; // Target vertex found
+ }
+ return found;
+ }
+
+
+ /*
+ * GET_PATHS
+ */
+
+
+ std::deque<Path> get_paths(
+ const G &graph,
+ V source,
+ const std::vector<V> &targets,
+ bool only_cost) const {
+ std::deque<Path> paths;
+ for (const auto &target : targets) {
+ paths.push_back(
+ Path(graph,
+ source, target,
+ predecessors, distances,
+ only_cost));
+ }
+ return paths;
+ }
+};
+
+
+} // namespace algorithms
+} // namespace pgrouting
+
+#endif // INCLUDE_ASTAR_PGR_ASTAR_HPP_
diff --git a/include/bdAstar/pgr_bdAstar.hpp b/include/bdAstar/pgr_bdAstar.hpp
new file mode 100644
index 0000000..9d02f99
--- /dev/null
+++ b/include/bdAstar/pgr_bdAstar.hpp
@@ -0,0 +1,194 @@
+/*PGR-GNU*****************************************************************
+File: pgr_bdAstar.hpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_BDASTAR_PGR_BDASTAR_HPP_
+#define INCLUDE_BDASTAR_PGR_BDASTAR_HPP_
+#pragma once
+
+
+#include "cpp_common/pgr_bidirectional.hpp"
+
+#include <string>
+#include <queue>
+#include <utility>
+#include <vector>
+#include <limits>
+#include <functional>
+
+#include "cpp_common/basePath_SSEC.hpp"
+
+namespace pgrouting {
+namespace bidirectional {
+
+template < typename G >
+class Pgr_bdAstar : public Pgr_bidirectional<G> {
+ typedef typename Pgr_bidirectional<G>::V V;
+ typedef typename Pgr_bidirectional<G>::E E;
+ typedef typename Pgr_bidirectional<G>::Cost_Vertex_pair Cost_Vertex_pair;
+
+ using Pgr_bidirectional<G>::graph;
+ using Pgr_bidirectional<G>::m_log;
+ using Pgr_bidirectional<G>::v_source;
+ using Pgr_bidirectional<G>::v_target;
+
+ using Pgr_bidirectional<G>::backward_predecessor;
+ using Pgr_bidirectional<G>::backward_queue;
+ using Pgr_bidirectional<G>::backward_finished;
+ using Pgr_bidirectional<G>::backward_cost;
+ using Pgr_bidirectional<G>::backward_edge;
+
+ using Pgr_bidirectional<G>::forward_predecessor;
+ using Pgr_bidirectional<G>::forward_queue;
+ using Pgr_bidirectional<G>::forward_finished;
+ using Pgr_bidirectional<G>::forward_cost;
+ using Pgr_bidirectional<G>::forward_edge;
+
+
+ using Pgr_bidirectional<G>::bidirectional;
+
+
+ public:
+ explicit Pgr_bdAstar(G &pgraph) :
+ Pgr_bidirectional<G>(pgraph),
+ m_heuristic(5),
+ m_factor(1.0) {
+ m_log << "pgr_bdAstar constructor\n";
+ }
+
+ ~Pgr_bdAstar() = default;
+
+ Path pgr_bdAstar(V start_vertex, V end_vertex,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost) {
+ m_log << "pgr_bdAstar\n";
+ v_source = start_vertex;
+ v_target = end_vertex;
+ m_heuristic = heuristic;
+ m_factor = factor * epsilon;
+
+ if (v_source == v_target) {
+ return Path(v_source, v_target);
+ }
+ return bidirectional(only_cost);
+ }
+
+ using Pgr_bidirectional<G>::log;
+ using Pgr_bidirectional<G>::clean_log;
+
+ private:
+ void explore_forward(const Cost_Vertex_pair &node) {
+ typename G::EO_i out, out_end;
+
+ auto current_cost = node.first;
+ auto current_node = node.second;
+
+ for (boost::tie(out, out_end) = out_edges(current_node, graph.graph);
+ out != out_end; ++out) {
+ auto edge_cost = graph[*out].cost;
+ auto next_node = graph.adjacent(current_node, *out);
+
+ if (forward_finished[next_node]) continue;
+
+ if (edge_cost + current_cost < forward_cost[next_node]) {
+ forward_cost[next_node] = edge_cost + current_cost;
+ forward_predecessor[next_node] = current_node;
+ forward_edge[next_node] = graph[*out].id;
+ forward_queue.push({
+ forward_cost[next_node]
+ + heuristic(next_node, v_target),
+ next_node});
+ }
+ }
+ forward_finished[current_node] = true;
+ }
+
+ void explore_backward(const Cost_Vertex_pair &node) {
+ typename G::EI_i in, in_end;
+
+ auto current_cost = node.first;
+ auto current_node = node.second;
+
+ for (boost::tie(in, in_end) = in_edges(current_node, graph.graph);
+ in != in_end; ++in) {
+ auto edge_cost = graph[*in].cost;
+ auto next_node = graph.adjacent(current_node, *in);
+
+ if (backward_finished[next_node]) continue;
+
+ if (edge_cost + current_cost < backward_cost[next_node]) {
+ backward_cost[next_node] = edge_cost + current_cost;
+ backward_predecessor[next_node] = current_node;
+ backward_edge[next_node] = graph[*in].id;
+ backward_queue.push({
+ backward_cost[next_node]
+ + heuristic(next_node, v_source),
+ next_node});
+ }
+ }
+ backward_finished[current_node] = true;
+ }
+
+
+ double heuristic(V v, V u) {
+ if (m_heuristic == 0) return 0;
+
+ double dx = graph[v].x() - graph[u].x();
+ double dy = graph[v].y() - graph[u].y();
+ double current;
+
+ switch (m_heuristic) {
+ case 0:
+ current = 0;
+ case 1:
+ current = std::fabs((std::max)(dx, dy)) * m_factor;
+ case 2:
+ current = std::fabs((std::min)(dx, dy)) * m_factor;
+ case 3:
+ current = (dx * dx + dy * dy) * m_factor * m_factor;
+ case 4:
+ current = std::sqrt(dx * dx + dy * dy) * m_factor;
+ case 5:
+ current = (std::fabs(dx) + std::fabs(dy)) * m_factor;
+ default:
+ current = 0;
+ }
+ return current;
+ }
+
+ private:
+ int m_heuristic;
+ double m_factor;
+};
+
+} // namespace bidirectional
+} // namespace pgrouting
+
+#endif // INCLUDE_BDASTAR_PGR_BDASTAR_HPP_
diff --git a/include/bdDijkstra/pgr_bdDijkstra.hpp b/include/bdDijkstra/pgr_bdDijkstra.hpp
new file mode 100644
index 0000000..7f34215
--- /dev/null
+++ b/include/bdDijkstra/pgr_bdDijkstra.hpp
@@ -0,0 +1,149 @@
+/*PGR-GNU*****************************************************************
+
+File: pgr_bdDijkstra.hpp
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_BDDIJKSTRA_PGR_BDDIJKSTRA_HPP_
+#define INCLUDE_BDDIJKSTRA_PGR_BDDIJKSTRA_HPP_
+#pragma once
+
+
+#include "cpp_common/pgr_bidirectional.hpp"
+
+#include <string>
+#include <queue>
+#include <utility>
+#include <vector>
+#include <limits>
+#include <functional>
+
+
+#include "cpp_common/basePath_SSEC.hpp"
+
+
+namespace pgrouting {
+namespace bidirectional {
+
+
+template < typename G >
+class Pgr_bdDijkstra : public Pgr_bidirectional<G> {
+ typedef typename Pgr_bidirectional<G>::V V;
+ typedef typename Pgr_bidirectional<G>::E E;
+ typedef typename Pgr_bidirectional<G>::Cost_Vertex_pair Cost_Vertex_pair;
+
+ using Pgr_bidirectional<G>::graph;
+ using Pgr_bidirectional<G>::m_log;
+ using Pgr_bidirectional<G>::v_source;
+ using Pgr_bidirectional<G>::v_target;
+
+ using Pgr_bidirectional<G>::backward_predecessor;
+ using Pgr_bidirectional<G>::backward_queue;
+ using Pgr_bidirectional<G>::backward_finished;
+ using Pgr_bidirectional<G>::backward_cost;
+ using Pgr_bidirectional<G>::backward_edge;
+
+ using Pgr_bidirectional<G>::forward_predecessor;
+ using Pgr_bidirectional<G>::forward_queue;
+ using Pgr_bidirectional<G>::forward_finished;
+ using Pgr_bidirectional<G>::forward_cost;
+ using Pgr_bidirectional<G>::forward_edge;
+
+
+ using Pgr_bidirectional<G>::bidirectional;
+
+ public:
+ explicit Pgr_bdDijkstra(G &pgraph):
+ Pgr_bidirectional<G>(pgraph) {
+ m_log << "pgr_bdDijkstra constructor\n";
+ }
+
+ ~Pgr_bdDijkstra() = default;
+
+ Path pgr_bdDijkstra(V start_vertex, V end_vertex, bool only_cost) {
+ m_log << "pgr_bdDijkstra\n";
+ v_source = start_vertex;
+ v_target = end_vertex;
+
+ if (v_source == v_target) {
+ return Path(v_source, v_target);
+ }
+ return bidirectional(only_cost);
+ }
+
+
+ using Pgr_bidirectional<G>::log;
+ using Pgr_bidirectional<G>::clean_log;
+
+
+ private:
+ void explore_forward(const Cost_Vertex_pair &node) {
+ typename G::EO_i out, out_end;
+
+ auto current_cost = node.first;
+ auto current_node = node.second;
+
+ for (boost::tie(out, out_end) = out_edges(current_node, graph.graph);
+ out != out_end; ++out) {
+ auto edge_cost = graph[*out].cost;
+ auto next_node = graph.adjacent(current_node, *out);
+
+ if (forward_finished[next_node]) continue;
+
+ if (edge_cost + current_cost < forward_cost[next_node]) {
+ forward_cost[next_node] = edge_cost + current_cost;
+ forward_predecessor[next_node] = current_node;
+ forward_edge[next_node] = graph[*out].id;
+ forward_queue.push({forward_cost[next_node], next_node});
+ }
+ }
+ forward_finished[current_node] = true;
+ }
+
+ void explore_backward(const Cost_Vertex_pair &node) {
+ typename G::EI_i in, in_end;
+
+ auto current_cost = node.first;
+ auto current_node = node.second;
+
+ for (boost::tie(in, in_end) = in_edges(current_node, graph.graph);
+ in != in_end; ++in) {
+ auto edge_cost = graph[*in].cost;
+ auto next_node = graph.adjacent(current_node, *in);
+
+ if (backward_finished[next_node]) continue;
+
+ if (edge_cost + current_cost < backward_cost[next_node]) {
+ backward_cost[next_node] = edge_cost + current_cost;
+ backward_predecessor[next_node] = current_node;
+ backward_edge[next_node] = graph[*in].id;
+ backward_queue.push({backward_cost[next_node], next_node});
+ }
+ }
+ backward_finished[current_node] = true;
+ }
+};
+
+} // namespace bidirectional
+} // namespace pgrouting
+
+#endif // INCLUDE_BDDIJKSTRA_PGR_BDDIJKSTRA_HPP_
diff --git a/include/c_common/README.md b/include/c_common/README.md
new file mode 100644
index 0000000..e850971
--- /dev/null
+++ b/include/c_common/README.md
@@ -0,0 +1,19 @@
+Purpose of this directory
+----------------------------------
+
+- Directory having files included exclusively by the `*.c` files
+- forbidden to be used on c++ code
+ - this prohibition is not enforced but will be in the future
+
+- Convention:
+ - files must end with `_input`
+
+
+Example
+----------------------------------
+
+in `foo.c` file
+
+ #include "c_common/edges_input.h"
+ #include "c_common/arrays_input.h"
+
diff --git a/include/c_common/arrays_input.h b/include/c_common/arrays_input.h
new file mode 100644
index 0000000..d58ba1e
--- /dev/null
+++ b/include/c_common/arrays_input.h
@@ -0,0 +1,52 @@
+/*PGR-GNU*****************************************************************
+File: arrays_input.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_ARRAYS_INPUT_H_
+#define INCLUDE_C_COMMON_ARRAYS_INPUT_H_
+#pragma once
+
+
+// first file to include
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// for ArrayType
+#include "utils/array.h"
+#include <stdint.h>
+
+
+/** @brief enforces the input array to be @b NOT empty */
+int64_t* pgr_get_bigIntArray(size_t *arrlen, ArrayType *input);
+
+/** @brief Allows the input array to be empty */
+int64_t* pgr_get_bigIntArray_allowEmpty(size_t *arrlen, ArrayType *input);
+
+#endif // INCLUDE_C_COMMON_ARRAYS_INPUT_H_
diff --git a/include/c_common/coordinates_input.h b/include/c_common/coordinates_input.h
new file mode 100644
index 0000000..061d528
--- /dev/null
+++ b/include/c_common/coordinates_input.h
@@ -0,0 +1,40 @@
+/*PGR-GNU*****************************************************************
+File: coordinates_input.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+#ifndef INCLUDE_C_COMMON_COORDINATES_INPUT_H_
+#define INCLUDE_C_COMMON_COORDINATES_INPUT_H_
+#pragma once
+
+#include "c_types/coordinate_t.h"
+
+/*!
+ bigint id,
+ float x,
+ float y,
+ */
+void pgr_get_coordinates(
+ char *sql,
+ Coordinate_t **coordinates,
+ size_t *total_coordinates);
+
+#endif // INCLUDE_C_COMMON_COORDINATES_INPUT_H_
diff --git a/include/c_common/debug_macro.h b/include/c_common/debug_macro.h
new file mode 100644
index 0000000..d96b094
--- /dev/null
+++ b/include/c_common/debug_macro.h
@@ -0,0 +1,40 @@
+/*PGR-GNU*****************************************************************
+
+File: debug_macro.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_DEBUG_MACRO_H_
+#define INCLUDE_C_COMMON_DEBUG_MACRO_H_
+#pragma once
+
+#ifndef NDEBUG
+
+#include "c_common/postgres_connection.h"
+
+#define PGR_DBG(...) \
+ elog(DEBUG3, __VA_ARGS__)
+#else
+#define PGR_DBG(...) do { ; } while (0)
+#endif
+
+#endif // INCLUDE_C_COMMON_DEBUG_MACRO_H_
diff --git a/include/c_common/e_report.h b/include/c_common/e_report.h
new file mode 100644
index 0000000..74a6186
--- /dev/null
+++ b/include/c_common/e_report.h
@@ -0,0 +1,138 @@
+/*PGR-GNU*****************************************************************
+File: e_report.h
+
+Function's developer:
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_E_REPORT_H_
+#define INCLUDE_C_COMMON_E_REPORT_H_
+#pragma once
+
+/*! @name Postgres ereport
+ * Send notice or error to postgreSQL (cleans the char *)
+ *
+ * From the C++ err_msg, log_msg, notice_msg are returned as a (char *),
+ *
+ * Before exiting the C code the pointers need to be freed:
+ * - This task can be done when there is no error,
+ * - Call to ERROR, gives the control back to postgreSQL
+ * - leaves a leak
+ *
+ * on C++ side, the message to be returned;
+ * ~~~~{.c}
+ * std::ostringstream log;
+ * log << "the messaage";
+ * log_msg = strdup(log.str().c_str());
+ * ~~~~
+ *
+ *
+ * The char* messages are cleared.
+ * New messages are made with palloc
+ *
+ * when there is ERROR then postgreSQL takes over control
+ *
+ * @warning When error: Free all data not created with palloc before calling
+ *
+ */
+///@{
+/*! @brief notice & error
+ *
+ * ~~~~{.c}
+ * pgr_notice(&log_msg, ¬ice_msg, &error_msg);
+ *
+ * precondition: before calling ereport
+ * assert(!*log_msg);
+ * assert(!*notice_msg);
+ * assert(!*error_msg);
+ * ~~~~
+ */
+void
+pgr_global_report(
+ char* log_msg,
+ char* notice_msg,
+ char* error_msg);
+
+/*! @brief notice with no hint
+ *
+ * ~~~~{.c}
+ * pgr_notice(&log_msg, ¬ice_msg);
+ *
+ * precondition: before calling ereport
+ * assert(!log_msg);
+ * assert(!notice_msg);
+ * ~~~~
+ */
+void
+pgr_notice(
+ char* notice_msg);
+
+/*! @brief notice with hint
+ *
+ * ~~~~{.c}
+ * pgr_notice(&log_msg, ¬ice_msg);
+ *
+ * precondition: before calling ereport
+ * assert(!log_msg);
+ * assert(!notice_msg);
+ * ~~~~
+ */
+void
+pgr_notice2(
+ char* log_msg,
+ char* notice_msg);
+
+/*! @brief error with no hint
+ *
+ *
+ * ~~~~{.c}
+ * if (err_msg) {
+ * pfree(<data>);
+ * }
+ * pgr_error(&error_msg);
+ *
+ * precondition: before calling ereport
+ * assert(!*error_msg);
+ * ~~~~
+ */
+void
+pgr_error(char* error_msg);
+
+/*! @brief error with hint
+ *
+ * ~~~~{.c}
+ * if (err_msg) {
+ * pfree(<data>);
+ * }
+ * pgr_error(&log_msg, &error_msg);
+ *
+ * precondition: before calling ereport
+ * assert(!*log_msg);
+ * assert(!*error_msg);
+ * ~~~~
+ */
+void
+pgr_error2(
+ char* log_msg,
+ char* error_msg);
+///@}
+
+#endif // INCLUDE_C_COMMON_E_REPORT_H_
diff --git a/include/c_common/edges_input.h b/include/c_common/edges_input.h
new file mode 100644
index 0000000..cd4c609
--- /dev/null
+++ b/include/c_common/edges_input.h
@@ -0,0 +1,159 @@
+/*PGR-GNU*****************************************************************
+File: edges_input.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_EDGES_INPUT_H_
+#define INCLUDE_C_COMMON_EDGES_INPUT_H_
+#pragma once
+
+#include "c_types/pgr_flow_t.h"
+#include "c_types/pgr_basic_edge_t.h"
+#include "c_types/pgr_edge_t.h"
+#include "c_types/pgr_edge_xy_t.h"
+
+
+/*! @brief edges_sql without id parameter
+
+~~~~{.c}
+SELECT source, target, cost, [reverse_cost]
+FROM edge_table;
+~~~~
+
+Currently used in: allpairs
+
+ at param[in] edges_sql
+ at param[out] edges
+ at param[out] total_edges
+*/
+void pgr_get_edges_no_id(
+ char *edges_sql,
+ pgr_edge_t **edges,
+ size_t *total_edges);
+
+
+
+/*! @brief basic edge_sql
+
+For queries of the type:
+~~~~{.c}
+SELECT id, source, target, cost, [reverse_cost]
+FROM edge_table;
+~~~~
+
+ at param[in] edges_sql
+ at param[out] edges
+ at param[out] total_edges
+*/
+void pgr_get_edges(
+ char *edges_sql,
+ pgr_edge_t **edges,
+ size_t *total_edges);
+void pgr_get_edges_reversed(
+ char *edges_sql,
+ pgr_edge_t **edges,
+ size_t *total_edges);
+
+
+
+/*! @brief Edges with x, y vertices values
+
+For queries of the type:
+~~~~{.c}
+SELECT id, source, target, cost, [reverse_cost], x1, y1, x2, y2
+FROM edge_table;
+~~~~
+
+ at param[in] edges_sql
+ at param[out] edges
+ at param[out] total_edges
+*/
+void pgr_get_edges_xy(
+ char *edges_sql,
+ Pgr_edge_xy_t **edges,
+ size_t *total_edges);
+
+/*! @brief for many to 1 on aStar
+
+Used internally
+
+Transforms queries of the type:
+~~~~{.c}
+SELECT id, source, target, cost, [reverse_cost], x1, y1, x2, y2
+FROM edge_table;
+~~~~
+
+to
+~~~~{.c}
+SELECT id, target, source, cost, [reverse_cost], x1, y1, x2, y2
+FROM edge_table;
+~~~~
+
+ at param[in] edges_sql
+ at param[out] edges
+ at param[out] total_edges
+*/
+void pgr_get_edges_xy_reversed(
+ char *edges_sql,
+ Pgr_edge_xy_t **edges,
+ size_t *total_edges);
+
+
+/*! @brief read edges for flow
+
+Edges:
+
+bigint id,
+bigint source,
+bigint target,
+bigint capacity,
+bigint reverse_capacity
+
+ at param[in] sql
+ at param[out] edges
+ at param[out] total_edges
+*/
+void pgr_get_flow_edges(
+ char *sql,
+ pgr_edge_t **edges,
+ size_t *total_edges);
+
+/*! @brief read basic edges
+
+For queries of the type:
+~~~~{.c}
+SELECT id, source, target, going, [coming]
+FROM edge_table;
+~~~~
+
+ at param[in] sql
+ at param[out] edges
+ at param[out] total_edges
+*/
+void pgr_get_basic_edges(
+ char *sql,
+ pgr_basic_edge_t **edges,
+ size_t *total_edges);
+
+
+
+#endif // INCLUDE_C_COMMON_EDGES_INPUT_H_
diff --git a/include/c_common/get_check_data.h b/include/c_common/get_check_data.h
new file mode 100644
index 0000000..5aead0d
--- /dev/null
+++ b/include/c_common/get_check_data.h
@@ -0,0 +1,70 @@
+/*PGR-GNU*****************************************************************
+File: get_check_data.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_GET_CHECK_DATA_H_
+#define INCLUDE_C_COMMON_GET_CHECK_DATA_H_
+#pragma once
+
+#include "c_common/postgres_connection.h"
+#include "c_types/column_info_t.h"
+
+bool column_found(int colNumber);
+
+void pgr_fetch_column_info(
+ Column_info_t info[],
+ int info_size);
+
+void pgr_check_any_integer_type(Column_info_t info);
+void pgr_check_any_numerical_type(Column_info_t info);
+void pgr_check_char_type(Column_info_t info);
+void pgr_check_text_type(Column_info_t info);
+void pgr_check_boolean_type(Column_info_t info);
+void pgr_check_any_integerarray_type(Column_info_t info);
+
+
+char pgr_SPI_getChar(
+ HeapTuple *tuple,
+ TupleDesc *tupdesc,
+ Column_info_t info,
+ bool strict,
+ char default_value);
+
+int64_t pgr_SPI_getBigInt(
+ HeapTuple *tuple,
+ TupleDesc *tupdesc,
+ Column_info_t info);
+
+double pgr_SPI_getFloat8(
+ HeapTuple *tuple,
+ TupleDesc *tupdesc,
+ Column_info_t info);
+
+char* pgr_SPI_getText(
+ HeapTuple *tuple,
+ TupleDesc *tupdesc,
+ Column_info_t info);
+
+char* pgr_stradd(const char *a, const char *b);
+
+#endif // INCLUDE_C_COMMON_GET_CHECK_DATA_H_
diff --git a/include/c_common/matrixRows_input.h b/include/c_common/matrixRows_input.h
new file mode 100644
index 0000000..7e833b9
--- /dev/null
+++ b/include/c_common/matrixRows_input.h
@@ -0,0 +1,41 @@
+/*PGR-GNU*****************************************************************
+File: distances_input.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_MATRIXROWS_INPUT_H_
+#define INCLUDE_C_COMMON_MATRIXROWS_INPUT_H_
+#pragma once
+
+#include "c_types/matrix_cell_t.h"
+
+/*!
+ bigint start_vid,
+ bigint end_vid,
+ float agg_cost,
+ */
+void pgr_get_matrixRows(
+ char *sql,
+ Matrix_cell_t **distaces,
+ size_t *total_distances);
+
+#endif // INCLUDE_C_COMMON_MATRIXROWS_INPUT_H_
diff --git a/include/c_common/orders_input.h b/include/c_common/orders_input.h
new file mode 100644
index 0000000..4ac3746
--- /dev/null
+++ b/include/c_common/orders_input.h
@@ -0,0 +1,55 @@
+/*PGR-GNU*****************************************************************
+File: orders_input.h
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_ORDERS_INPUT_H_
+#define INCLUDE_C_COMMON_ORDERS_INPUT_H_
+#pragma once
+
+#include "c_types/pickDeliver/pickDeliveryOrders_t.h"
+
+/** @brief Reads the pick-Deliver orders
+ *
+ * @param[in] pd_orders_sql
+ * @param[out] pd_orders
+ * @param[out] total_pd_orders
+ */
+void
+pgr_get_pd_orders(
+ char *pd_orders_sql,
+ PickDeliveryOrders_t **pd_orders,
+ size_t *total_pd_orders);
+
+/** @brief Reads the pick-Deliver orders
+ *
+ * @param[in] pd_orders_sql
+ * @param[out] pd_orders
+ * @param[out] total_pd_orders
+ */
+void
+pgr_get_pd_orders_with_id(
+ char *pd_orders_sql,
+ PickDeliveryOrders_t **pd_orders,
+ size_t *total_pd_orders);
+
+#endif // INCLUDE_C_COMMON_ORDERS_INPUT_H_
diff --git a/include/c_common/points_input.h b/include/c_common/points_input.h
new file mode 100644
index 0000000..d5ece7b
--- /dev/null
+++ b/include/c_common/points_input.h
@@ -0,0 +1,50 @@
+/*PGR-GNU*****************************************************************
+File: points_input.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_POINTS_INPUT_H_
+#define INCLUDE_C_COMMON_POINTS_INPUT_H_
+#pragma once
+
+#include "c_types/point_on_edge_t.h"
+
+/*! @brief pgr_get_points
+
+For queries of the type:
+~~~~{.c}
+SELECT pid, edge_id, fraction, [side]
+FROM edge_table;
+~~~~
+
+ at param[in] points_sql
+ at param[out] points
+ at param[out] total_points
+*/
+void pgr_get_points(
+ char *points_sql,
+ Point_on_edge_t **points,
+ size_t *total_points);
+
+
+
+#endif // INCLUDE_C_COMMON_POINTS_INPUT_H_
diff --git a/include/c_common/postgres_connection.h b/include/c_common/postgres_connection.h
new file mode 100644
index 0000000..163cf3a
--- /dev/null
+++ b/include/c_common/postgres_connection.h
@@ -0,0 +1,99 @@
+/*PGR-GNU*****************************************************************
+File: postgres_connection.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+#ifndef INCLUDE_C_COMMON_POSTGRES_CONNECTION_H_
+#define INCLUDE_C_COMMON_POSTGRES_CONNECTION_H_
+#pragma once
+
+
+
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#ifdef __clang__
+#pragma clang diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+
+
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wsign-conversion"
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif
+
+#ifdef __clang__
+#pragma clang diagnostic ignored "-Wsign-conversion"
+#pragma clang diagnostic ignored "-Wunused-parameter"
+#endif
+
+#include "executor/spi.h"
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#pragma GCC diagnostic pop
+#pragma GCC diagnostic pop
+#endif
+
+#ifdef __clang__
+#pragma clang diagnostic pop
+#pragma clang diagnostic pop
+#pragma clang diagnostic pop
+#endif
+
+#include "utils/builtins.h" // for text_to_cstring
+
+#if PGSQL_VERSION > 92
+#include "access/htup_details.h"
+#endif
+
+#ifdef __clang__
+#pragma clang diagnostic ignored "-Wunused-parameter"
+#endif
+
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#endif
+
+#include <funcapi.h>
+#include <fmgr.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+
+
+void pgr_send_error(int errcode);
+void pgr_SPI_finish(void);
+void pgr_SPI_connect(void);
+SPIPlanPtr pgr_SPI_prepare(char* sql);
+Portal pgr_SPI_cursor_open(SPIPlanPtr SPIplan);
+char* pgr_cstring2char(const char *inStr);
+
+#endif // INCLUDE_C_COMMON_POSTGRES_CONNECTION_H_
diff --git a/include/c_common/restrict_input.h b/include/c_common/restrict_input.h
new file mode 100644
index 0000000..fc76a0f
--- /dev/null
+++ b/include/c_common/restrict_input.h
@@ -0,0 +1,38 @@
+/*PGR-GNU*****************************************************************
+File: restrict_input.h
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+
+#ifndef INCLUDE_C_COMMON_RESTRICT_INPUT_H_
+#define INCLUDE_C_COMMON_RESTRICT_INPUT_H_
+#pragma once
+
+#include "c_types/restrict_t.h"
+
+void pgr_get_restriction_data(
+ char *restrictions_sql,
+ Restrict_t **restrictions,
+ size_t *total_restrictions);
+
+#endif // INCLUDE_C_COMMON_RESTRICT_INPUT_H_
diff --git a/include/c_common/restrictions_input.h b/include/c_common/restrictions_input.h
new file mode 100644
index 0000000..8e69bfe
--- /dev/null
+++ b/include/c_common/restrictions_input.h
@@ -0,0 +1,36 @@
+/*PGR-GNU*****************************************************************
+File: restrictions_input.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_RESTRICTIONS_INPUT_H_
+#define INCLUDE_C_COMMON_RESTRICTIONS_INPUT_H_
+#pragma once
+
+#include "c_types/restrict_t.h"
+
+void pgr_get_restriction_data(
+ char *restrictions_sql,
+ Restrict_t **restructions,
+ size_t *total_restrictions);
+
+#endif // INCLUDE_C_COMMON_RESTRICTIONS_INPUT_H_
diff --git a/include/c_common/time_msg.h b/include/c_common/time_msg.h
new file mode 100644
index 0000000..04a6b9a
--- /dev/null
+++ b/include/c_common/time_msg.h
@@ -0,0 +1,35 @@
+/*PGR-GNU*****************************************************************
+
+FILE: time_msg.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_TIME_MSG_H_
+#define INCLUDE_C_COMMON_TIME_MSG_H_
+#pragma once
+
+#include <time.h>
+#include <stdio.h>
+
+void time_msg(char *msg, clock_t start_t, clock_t end_t);
+
+#endif // INCLUDE_C_COMMON_TIME_MSG_H_
diff --git a/include/c_common/vehicles_input.h b/include/c_common/vehicles_input.h
new file mode 100644
index 0000000..4f2d661
--- /dev/null
+++ b/include/c_common/vehicles_input.h
@@ -0,0 +1,55 @@
+/*PGR-GNU*****************************************************************
+File: vehicles_input.h
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_C_COMMON_VEHICLES_INPUT_H_
+#define INCLUDE_C_COMMON_VEHICLES_INPUT_H_
+#pragma once
+
+#include "c_types/pickDeliver/vehicle_t.h"
+
+/** @brief Reads the vehicles orders
+ *
+ * @param[in] vehicles_sql
+ * @param[out] vehicles
+ * @param[out] total_vehicles
+ */
+void
+pgr_get_vehicles(
+ char *vehicles_sql,
+ Vehicle_t **vehicles,
+ size_t *total_vehicles);
+
+/** @brief Reads the vehicles orders
+ *
+ * @param[in] vehicles_sql
+ * @param[out] vehicles
+ * @param[out] total_vehicles
+ */
+void
+pgr_get_vehicles_with_id(
+ char *vehicles_sql,
+ Vehicle_t **vehicles,
+ size_t *total_vehicles);
+
+#endif // INCLUDE_C_COMMON_VEHICLES_INPUT_H_
diff --git a/include/c_types/column_info_t.h b/include/c_types/column_info_t.h
new file mode 100644
index 0000000..026d7fb
--- /dev/null
+++ b/include/c_types/column_info_t.h
@@ -0,0 +1,80 @@
+/*PGR-GNU*****************************************************************
+File: pgr_types.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_COLUMN_INFO_T_H_
+#define INCLUDE_C_TYPES_COLUMN_INFO_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+
+// used for getting the data
+typedef
+enum {
+ ANY_INTEGER,
+ ANY_NUMERICAL,
+ TEXT,
+ CHAR1,
+ ANY_INTEGER_ARRAY
+} expectType;
+
+
+typedef
+struct {
+ int colNumber;
+ uint64_t type;
+ bool strict;
+ char *name;
+ expectType eType;
+} Column_info_t;
+
+
+#endif // INCLUDE_C_TYPES_COLUMN_INFO_T_H_
diff --git a/include/c_types/contracted_rt.h b/include/c_types/contracted_rt.h
new file mode 100644
index 0000000..23864fa
--- /dev/null
+++ b/include/c_types/contracted_rt.h
@@ -0,0 +1,71 @@
+/*PGR-GNU*****************************************************************
+File: contracted_rt.h
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at 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*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_CONTRACTED_RT_H_
+#define INCLUDE_C_TYPES_CONTRACTED_RT_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+/**************************************************************************
+ * return type for contraction
+ * ***********************************************************************/
+typedef struct {
+ int64_t id;
+ char* type;
+ int64_t source;
+ int64_t target;
+ double cost;
+ int64_t *contracted_vertices;
+ int contracted_vertices_size;
+} contracted_rt;
+
+#endif // INCLUDE_C_TYPES_CONTRACTED_RT_H_
diff --git a/include/c_types/coordinate_t.h b/include/c_types/coordinate_t.h
new file mode 100644
index 0000000..93f1114
--- /dev/null
+++ b/include/c_types/coordinate_t.h
@@ -0,0 +1,63 @@
+/*PGR-GNU*****************************************************************
+File: coordinate_t.h
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_COORDINATE_T_H_
+#define INCLUDE_C_TYPES_COORDINATE_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+typedef struct {
+ int64_t id;
+ double x;
+ double y;
+} Coordinate_t;
+
+#endif // INCLUDE_C_TYPES_COORDINATE_T_H_
diff --git a/include/c_types/general_path_element_t.h b/include/c_types/general_path_element_t.h
new file mode 100644
index 0000000..265e517
--- /dev/null
+++ b/include/c_types/general_path_element_t.h
@@ -0,0 +1,68 @@
+/*PGR-GNU*****************************************************************
+File: general_path_element_t.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_GENERAL_PATH_ELEMENT_T_H_
+#define INCLUDE_C_TYPES_GENERAL_PATH_ELEMENT_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+typedef struct {
+ int seq;
+ int64_t start_id;
+ int64_t end_id;
+ int64_t node;
+ int64_t edge;
+ double cost;
+ double agg_cost;
+} General_path_element_t;
+
+#endif // INCLUDE_C_TYPES_GENERAL_PATH_ELEMENT_T_H_
diff --git a/include/c_types/graph_enum.h b/include/c_types/graph_enum.h
new file mode 100644
index 0000000..acb3dbd
--- /dev/null
+++ b/include/c_types/graph_enum.h
@@ -0,0 +1,33 @@
+/*PGR-GNU*****************************************************************
+File: pgr_types.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_GRAPH_ENUM_H_
+#define INCLUDE_C_TYPES_GRAPH_ENUM_H_
+#pragma once
+
+enum graphType {UNDIRECTED = 0, DIRECTED};
+
+
+#endif // INCLUDE_C_TYPES_GRAPH_ENUM_H_
diff --git a/include/c_types/line_graph_rt.h b/include/c_types/line_graph_rt.h
new file mode 100644
index 0000000..a570fd8
--- /dev/null
+++ b/include/c_types/line_graph_rt.h
@@ -0,0 +1,71 @@
+/*PGR-GNU*****************************************************************
+File: line_graph_rt.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_LINE_GRAPH_RT_H_
+#define INCLUDE_C_TYPES_LINE_GRAPH_RT_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+typedef struct {
+ int64_t id;
+ int64_t source;
+ int64_t target;
+ float cost;
+ float reverse_cost;
+} Line_graph_rt;
+
+#endif // INCLUDE_C_TYPES_LINE_GRAPH_RT_H_
diff --git a/include/c_types/matrix_cell_t.h b/include/c_types/matrix_cell_t.h
new file mode 100644
index 0000000..ee237ed
--- /dev/null
+++ b/include/c_types/matrix_cell_t.h
@@ -0,0 +1,64 @@
+/*PGR-GNU*****************************************************************
+File: matrix_cell_t.h
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_MATRIX_CELL_T_H_
+#define INCLUDE_C_TYPES_MATRIX_CELL_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+typedef struct matrix_cell {
+ int64_t from_vid;
+ int64_t to_vid;
+ double cost;
+} Matrix_cell_t;
+
+#endif // INCLUDE_C_TYPES_MATRIX_CELL_T_H_
diff --git a/include/c_types/pgr_basic_edge_t.h b/include/c_types/pgr_basic_edge_t.h
new file mode 100644
index 0000000..e8507ec
--- /dev/null
+++ b/include/c_types/pgr_basic_edge_t.h
@@ -0,0 +1,67 @@
+/*PGR-GNU*****************************************************************
+File: pgr_basic_edge_t.h
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_PGR_BASIC_EDGE_T_H_
+#define INCLUDE_C_TYPES_PGR_BASIC_EDGE_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+typedef struct {
+ int64_t id;
+ int64_t source;
+ int64_t target;
+ bool going;
+ bool coming;
+ int64_t edge_id;
+} pgr_basic_edge_t;
+
+#endif // INCLUDE_C_TYPES_PGR_BASIC_EDGE_T_H_
diff --git a/include/c_types/pgr_components_rt.h b/include/c_types/pgr_components_rt.h
new file mode 100644
index 0000000..56c1146
--- /dev/null
+++ b/include/c_types/pgr_components_rt.h
@@ -0,0 +1,64 @@
+/*PGR-GNU*****************************************************************
+File: pgr_components_rt.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_PGR_COMPONENTS_RT_H_
+#define INCLUDE_C_TYPES_PGR_COMPONENTS_RT_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+typedef struct {
+ int64_t component;
+ int n_seq;
+ int64_t identifier;
+} pgr_components_rt;
+
+#endif // INCLUDE_C_TYPES_PGR_COMPONENTS_RT_H_
diff --git a/include/c_types/pgr_edge_t.h b/include/c_types/pgr_edge_t.h
new file mode 100644
index 0000000..c6d1ec1
--- /dev/null
+++ b/include/c_types/pgr_edge_t.h
@@ -0,0 +1,66 @@
+/*PGR-GNU*****************************************************************
+File: pgr_edge_t.h
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_PGR_EDGE_T_H_
+#define INCLUDE_C_TYPES_PGR_EDGE_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+typedef struct {
+ int64_t id;
+ int64_t source;
+ int64_t target;
+ double cost;
+ double reverse_cost;
+} pgr_edge_t;
+
+#endif // INCLUDE_C_TYPES_PGR_EDGE_T_H_
diff --git a/include/c_types/pgr_edge_xy_t.h b/include/c_types/pgr_edge_xy_t.h
new file mode 100644
index 0000000..c4ab046
--- /dev/null
+++ b/include/c_types/pgr_edge_xy_t.h
@@ -0,0 +1,69 @@
+/*PGR-GNU*****************************************************************
+File: pgr_edge_xy_t.h
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_PGR_EDGE_XY_T_H_
+#define INCLUDE_C_TYPES_PGR_EDGE_XY_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+typedef struct {
+ int64_t id;
+ int64_t source;
+ int64_t target;
+ double cost;
+ double reverse_cost;
+ double x1;
+ double y1;
+ double x2;
+ double y2;
+} Pgr_edge_xy_t;
+
+#endif // INCLUDE_C_TYPES_PGR_EDGE_XY_T_H_
diff --git a/include/c_types/pgr_flow_t.h b/include/c_types/pgr_flow_t.h
new file mode 100644
index 0000000..e85039b
--- /dev/null
+++ b/include/c_types/pgr_flow_t.h
@@ -0,0 +1,66 @@
+/*PGR-GNU*****************************************************************
+File: pgr_flow_t.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_PGR_FLOW_T_H_
+#define INCLUDE_C_TYPES_PGR_FLOW_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+typedef struct {
+ int64_t edge;
+ int64_t source;
+ int64_t target;
+ int64_t flow;
+ int64_t residual_capacity;
+} pgr_flow_t;
+
+#endif // INCLUDE_C_TYPES_PGR_FLOW_T_H_
diff --git a/include/c_types/pickDeliver/general_vehicle_orders_t.h b/include/c_types/pickDeliver/general_vehicle_orders_t.h
new file mode 100644
index 0000000..2b51a92
--- /dev/null
+++ b/include/c_types/pickDeliver/general_vehicle_orders_t.h
@@ -0,0 +1,87 @@
+/*PGR-GNU*****************************************************************
+File: general_vehicle_orders_t.h
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_PICKDELIVER_GENERAL_VEHICLE_ORDERS_T_H_
+#define INCLUDE_C_TYPES_PICKDELIVER_GENERAL_VEHICLE_ORDERS_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+/*
+ OUT seq INTEGER, done in the .c code
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT order_id BIGINT,
+ OUT travelTime FLOAT,
+ OUT arrivalTime FLOAT,
+ OUT waitTime FLOAT,
+ OUT serviceTime FLOAT,
+ OUT departureTime FLOAT,
+ */
+
+typedef struct {
+ int vehicle_seq;
+ int64_t vehicle_id;
+ int stop_seq;
+ int64_t order_id;
+ int64_t stop_id;
+ int stop_type;
+ double cargo;
+ double travelTime;
+ double arrivalTime;
+ double waitTime;
+ double serviceTime;
+ double departureTime;
+} General_vehicle_orders_t;
+
+/*************************************************************************/
+
+#endif // INCLUDE_C_TYPES_PICKDELIVER_GENERAL_VEHICLE_ORDERS_T_H_
diff --git a/include/c_types/pickDeliver/pickDeliveryOrders_t.h b/include/c_types/pickDeliver/pickDeliveryOrders_t.h
new file mode 100644
index 0000000..8b98868
--- /dev/null
+++ b/include/c_types/pickDeliver/pickDeliveryOrders_t.h
@@ -0,0 +1,85 @@
+/*PGR-GNU*****************************************************************
+File: pickDeliveryOrders_t.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_PICKDELIVER_PICKDELIVERYORDERS_T_H_
+#define INCLUDE_C_TYPES_PICKDELIVER_PICKDELIVERYORDERS_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+/**************************************************************************
+ * pickDelivery types
+ * ***********************************************************************/
+/*
+ * its with either (foo_x, foo_y) pairs (for eucledian or with foo_node_id (for matrix)
+ */
+typedef struct {
+ int64_t id;
+ double demand;
+
+ double pick_x;
+ double pick_y;
+ int64_t pick_node_id;
+
+ double pick_open_t;
+ double pick_close_t;
+ double pick_service_t;
+
+ double deliver_x;
+ double deliver_y;
+ int64_t deliver_node_id;
+
+ double deliver_open_t;
+ double deliver_close_t;
+ double deliver_service_t;
+} PickDeliveryOrders_t;
+
+#endif // INCLUDE_C_TYPES_PICKDELIVER_PICKDELIVERYORDERS_T_H_
diff --git a/include/c_types/pickDeliver/vehicle_t.h b/include/c_types/pickDeliver/vehicle_t.h
new file mode 100644
index 0000000..8637c34
--- /dev/null
+++ b/include/c_types/pickDeliver/vehicle_t.h
@@ -0,0 +1,85 @@
+/*PGR-GNU*****************************************************************
+File: vehicle_t.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_PICKDELIVER_VEHICLE_T_H_
+#define INCLUDE_C_TYPES_PICKDELIVER_VEHICLE_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+/*
+ * its with either (foo_x, foo_y) pairs for eucledian or with foo_node_id (for matrix)
+ */
+typedef struct {
+ int64_t id;
+ double capacity;
+ double speed;
+
+ double start_x;
+ double start_y;
+ int64_t start_node_id;
+
+ int64_t cant_v;
+
+ double start_open_t;
+ double start_close_t;
+ double start_service_t;
+
+ double end_x;
+ double end_y;
+ int64_t end_node_id;
+
+ double end_open_t;
+ double end_close_t;
+ double end_service_t;
+} Vehicle_t;
+
+
+#endif // INCLUDE_C_TYPES_PICKDELIVER_VEHICLE_T_H_
diff --git a/include/c_types/point_on_edge_t.h b/include/c_types/point_on_edge_t.h
new file mode 100644
index 0000000..d9fa19b
--- /dev/null
+++ b/include/c_types/point_on_edge_t.h
@@ -0,0 +1,64 @@
+/*PGR-GNU*****************************************************************
+File: point_on_edge_t.h
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_POINT_ON_EDGE_T_H_
+#define INCLUDE_C_TYPES_POINT_ON_EDGE_T_H_
+#pragma once
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+typedef struct {
+ int64_t pid;
+ int64_t edge_id;
+ char side; // 'r', 'l', 'b' (default is both)
+ double fraction;
+ int64_t vertex_id; // number is negative and is used for processing
+} Point_on_edge_t;
+
+#endif // INCLUDE_C_TYPES_POINT_ON_EDGE_T_H_
diff --git a/include/c_types/restrict_t.h b/include/c_types/restrict_t.h
new file mode 100644
index 0000000..de2df5b
--- /dev/null
+++ b/include/c_types/restrict_t.h
@@ -0,0 +1,69 @@
+/*PGR-GNU*****************************************************************
+File: restrict_t.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_RESTRICT_T_H_
+#define INCLUDE_C_TYPES_RESTRICT_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+#define MAX_RULE_LENGTH 5
+
+typedef struct {
+ int64_t id;
+ double cost;
+ int64_t restricted_edges[MAX_RULE_LENGTH];
+}
+Restrict_t;
+
+
+
+#endif // INCLUDE_C_TYPES_RESTRICT_T_H_
diff --git a/include/c_types/routes_t.h b/include/c_types/routes_t.h
new file mode 100644
index 0000000..6d948f1
--- /dev/null
+++ b/include/c_types/routes_t.h
@@ -0,0 +1,71 @@
+/*PGR-GNU*****************************************************************
+File: pgr_types.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*! @file */
+
+#ifndef INCLUDE_C_TYPES_ROUTES_T_H_
+#define INCLUDE_C_TYPES_ROUTES_T_H_
+#pragma once
+
+
+#ifdef __cplusplus
+
+#include <cstddef>
+
+#else // __cplusplus
+
+// for bool
+#ifdef __GNUC__
+#pragma GCC diagnostic ignored "-pedantic"
+#endif
+
+#include <postgres.h>
+
+#ifdef __GNUC__
+#pragma GCC diagnostic pop
+#endif
+
+// For NULL & size_t
+#include <stdlib.h>
+
+
+#endif // __cplusplus
+
+// For int64_t etc
+#include <stdint.h>
+
+
+typedef struct {
+ int route_id;
+ int path_id;
+ int path_seq;
+ int64_t start_vid;
+ int64_t end_vid;
+ int64_t node;
+ int64_t edge;
+ double cost;
+ double agg_cost;
+ double route_agg_cost;
+} Routes_t;
+
+#endif // INCLUDE_C_TYPES_ROUTES_T_H_
diff --git a/include/components/pgr_components.hpp b/include/components/pgr_components.hpp
new file mode 100644
index 0000000..f013ecc
--- /dev/null
+++ b/include/components/pgr_components.hpp
@@ -0,0 +1,249 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2017 Maoguang Wang
+Mail: xjtumg1007 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_COMPONENTS_PGR_COMPONENTS_HPP_
+#define INCLUDE_COMPONENTS_PGR_COMPONENTS_HPP_
+#pragma once
+
+#include <boost/config.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/graph/connected_components.hpp>
+#include <boost/graph/strong_components.hpp>
+#include <boost/graph/biconnected_components.hpp>
+
+#include <vector>
+#include <map>
+#include <utility>
+#include <algorithm>
+
+#include "pgr_componentsGraph.hpp"
+
+template < class G > class Pgr_components;
+// user's functions
+// for development
+
+//******************************************
+
+template < class G >
+class Pgr_components {
+ public:
+ typedef typename G::V V;
+ typedef typename G::E E;
+ typedef typename G::E_i E_i;
+
+ //! Connected Components Vertex Version
+ std::vector<pgr_components_rt> connectedComponents(
+ G &graph);
+
+ //! Strongly Connected Components Vertex Version
+ std::vector<pgr_components_rt> strongComponents(
+ G &graph);
+
+ //! Biconnected Components
+ std::vector<pgr_components_rt> biconnectedComponents(
+ G &graph);
+
+ //! Articulation Points
+ std::vector<pgr_components_rt> articulationPoints(
+ G &graph);
+
+ //! Bridges
+ std::vector<pgr_components_rt> bridges(
+ G &graph);
+
+ private:
+ //! Generate Results, Vertex Version
+ std::vector<pgr_components_rt> generate_results(
+ std::vector< std::vector< int64_t > >);
+};
+
+
+/******************** IMPLEMENTTION ******************/
+
+//! Generate Results, Vertex Version
+template < class G >
+std::vector<pgr_components_rt>
+Pgr_components< G >::generate_results(
+ std::vector< std::vector< int64_t > > components) {
+ // sort identifier
+ size_t num_comps = components.size();
+ for (size_t i = 0; i < num_comps; i++) {
+ std::sort(components[i].begin(), components[i].end());
+ }
+ sort(components.begin(), components.end());
+
+ // generate results
+ std::vector< pgr_components_rt > results;
+ for (size_t i = 0; i < num_comps; i++) {
+ int64_t tempComp = components[i][0];
+ size_t sizeCompi = components[i].size();
+ for (size_t j = 0; j < sizeCompi; j++) {
+ pgr_components_rt tmp;
+ tmp.identifier = components[i][j];
+ tmp.n_seq = static_cast< int > (j + 1);
+ tmp.component = tempComp;
+ results.push_back(tmp);
+ }
+ }
+ return results;
+}
+
+//! Connected Components Vertex Version
+template < class G >
+std::vector<pgr_components_rt>
+Pgr_components< G >::connectedComponents(
+ G &graph) {
+ size_t totalNodes = num_vertices(graph.graph);
+
+ // perform the algorithm
+ std::vector< int > components(totalNodes);
+ int num_comps = boost::connected_components(graph.graph, &components[0]);
+
+ // get the results
+ std::vector< std::vector< int64_t > > results;
+ results.resize(num_comps);
+ for (size_t i = 0; i < totalNodes; i++)
+ results[components[i]].push_back(graph[i].id);
+
+ return generate_results(results);
+}
+
+//! Strongly Connected Components Vertex Version
+template < class G >
+std::vector<pgr_components_rt>
+Pgr_components< G >::strongComponents(
+ G &graph) {
+ size_t totalNodes = num_vertices(graph.graph);
+
+ // perform the algorithm
+ std::vector< int > components(totalNodes);
+ int num_comps = boost::strong_components(graph.graph,
+ boost::make_iterator_property_map(components.begin(),
+ get(boost::vertex_index,
+ graph.graph)));
+
+ // get the results
+ std::vector< std::vector< int64_t > > results;
+ results.resize(num_comps);
+ for (size_t i = 0; i < totalNodes; i++)
+ results[components[i]].push_back(graph[i].id);
+
+ return generate_results(results);
+}
+
+//! Biconnected Components
+template < class G >
+std::vector<pgr_components_rt>
+Pgr_components< G >::biconnectedComponents(
+ G &graph) {
+ // perform the algorithm
+ struct order_edges {
+ bool operator() (const E &left, const E &right) const {
+ return left.get_property() < right.get_property();
+ }
+ };
+ typedef std::map< E, size_t > edge_map;
+ edge_map bicmp_map;
+
+ boost::associative_property_map< edge_map > bimap(bicmp_map);
+ size_t num_comps = biconnected_components(graph.graph, bimap);
+
+ // get the results
+ E_i ei, ei_end;
+ std::vector< std::vector< int64_t > > components(num_comps);
+ for (boost::tie(ei, ei_end) = edges(graph.graph); ei != ei_end; ei++)
+ components[bimap[*ei]].push_back(graph[*ei].id);
+
+ return generate_results(components);
+}
+
+//! Articulation Points
+template < class G >
+std::vector<pgr_components_rt>
+Pgr_components< G >::articulationPoints(
+ G &graph) {
+ // perform the algorithm
+ std::vector <size_t> art_points;
+ boost::articulation_points(graph.graph, std::back_inserter(art_points));
+
+ // get the results
+ std::vector <pgr_components_rt> results;
+ size_t totalArtp = art_points.size();
+ results.resize(totalArtp);
+ for (size_t i = 0; i < totalArtp; i++)
+ results[i].identifier = graph[art_points[i]].id;
+
+ // sort identifier
+ std::sort(results.begin(), results.end(),
+ [](const pgr_components_rt &left, const pgr_components_rt &right) {
+ return left.identifier < right.identifier; });
+
+ return results;
+}
+
+//! Bridges
+template < class G >
+std::vector<pgr_components_rt>
+Pgr_components< G >::bridges(
+ G &graph) {
+ size_t totalNodes = num_vertices(graph.graph);
+ std::vector< int > tmp_comp(totalNodes);
+ std::vector <pgr_components_rt> results;
+ int ini_comps = boost::connected_components(graph.graph, &tmp_comp[0]);
+
+ // perform the algorithm
+ E_i ei, ei_end;
+ std::vector< std::pair<E, int64_t> > stored_edges;
+ for (boost::tie(ei, ei_end) = edges(graph.graph); ei != ei_end; ++ei) {
+ stored_edges.push_back(std::make_pair(*ei, graph[*ei].id));
+ }
+
+ for (const auto pair_edge : stored_edges) {
+ E edge = pair_edge.first;
+
+ boost::remove_edge(edge, graph.graph);
+
+ int now_comps = boost::connected_components(graph.graph, &tmp_comp[0]);
+ if (now_comps > ini_comps) {
+ pgr_components_rt temp;
+ temp.identifier = pair_edge.second;
+ results.push_back(temp);
+ }
+
+ boost::add_edge(boost::source(edge, graph.graph),
+ boost::target(edge, graph.graph),
+ graph.graph);
+ }
+
+ // sort identifier
+ std::sort(results.begin(), results.end(),
+ [](const pgr_components_rt &left, const pgr_components_rt &right) {
+ return left.identifier < right.identifier; });
+
+ return results;
+}
+
+#endif // INCLUDE_COMPONENTS_PGR_COMPONENTS_HPP_
diff --git a/include/components/pgr_componentsGraph.hpp b/include/components/pgr_componentsGraph.hpp
new file mode 100644
index 0000000..8d7df64
--- /dev/null
+++ b/include/components/pgr_componentsGraph.hpp
@@ -0,0 +1,117 @@
+/*PGR-GNU*****************************************************************
+File: pgr_componentsGraph.hpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Maoguang Wang
+Mail: xjtumg1007 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_COMPONENTS_PGR_COMPONENTSGRAPH_HPP_
+#define INCLUDE_COMPONENTS_PGR_COMPONENTSGRAPH_HPP_
+#pragma once
+
+
+#include <vector>
+
+#include "cpp_common/pgr_base_graph.hpp"
+
+
+namespace pgrouting {
+
+namespace graph {
+
+template <class G, typename T_V, typename T_E>
+class Pgr_componentsGraph;
+
+} // namespace graph
+
+typedef graph::Pgr_componentsGraph <
+boost::adjacency_list < boost::vecS, boost::vecS,
+ boost::undirectedS,
+ Basic_vertex, Basic_edge >,
+ Basic_vertex, Basic_edge > ComponentsUndiGraph;
+
+namespace graph {
+
+template <class G, typename T_V, typename T_E>
+class Pgr_componentsGraph : public Pgr_base_graph<G, T_V, T_E> {
+ public:
+ G graph;
+
+ explicit Pgr_componentsGraph< G, T_V, T_E >(graphType gtype)
+ : Pgr_base_graph< G, T_V, T_E >(gtype) {
+ }
+
+ template < typename T >
+ void insert_edges(const T *edges, int64_t count) {
+ insert_edges(std::vector < T >(edges, edges + count));
+ }
+
+ template <typename T >
+ void insert_edges(const std::vector < T > &edges) {
+ for (const auto edge : edges) {
+ graph_add_edge(edge);
+ }
+ }
+
+ private:
+ template < typename T >
+ void
+ graph_add_edge(const T &edge) {
+ bool inserted;
+ typename Pgr_base_graph< G, T_V, T_E >::E e;
+ if ((edge.cost < 0) && (edge.reverse_cost < 0))
+ return;
+
+ /*
+ * true: for source
+ * false: for target
+ */
+ auto vm_s = Pgr_base_graph< G, T_V, T_E >::get_V(T_V(edge, true));
+ auto vm_t = Pgr_base_graph< G, T_V, T_E >::get_V(T_V(edge, false));
+
+ pgassert((Pgr_base_graph< G, T_V, T_E >::vertices_map).find(edge.source)
+ !=
+ (Pgr_base_graph< G, T_V, T_E >::vertices_map).end());
+ pgassert((Pgr_base_graph< G, T_V, T_E >::vertices_map).find(edge.target)
+ !=
+ (Pgr_base_graph< G, T_V, T_E >::vertices_map).end());
+ if (edge.cost >= 0) {
+ boost::tie(e, inserted) =
+ boost::add_edge(vm_s, vm_t, graph);
+ graph[e].cost = edge.cost;
+ graph[e].id = edge.id;
+ } else if (edge.reverse_cost >= 0) {
+ boost::tie(e, inserted) =
+ boost::add_edge(vm_t, vm_s, graph);
+ graph[e].cost = edge.reverse_cost;
+ graph[e].id = edge.id;
+ }
+ }
+};
+
+} // namespace graph
+} // namespace pgrouting
+
+#endif // INCLUDE_COMPONENTS_PGR_COMPONENTSGRAPH_HPP_
diff --git a/include/contraction/pgr_contract.hpp b/include/contraction/pgr_contract.hpp
new file mode 100644
index 0000000..cd38136
--- /dev/null
+++ b/include/contraction/pgr_contract.hpp
@@ -0,0 +1,183 @@
+/*PGR-GNU*****************************************************************
+File: pgr_contract.hpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2016 Rohith Reddy
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef SRC_CONTRACTION_SRC_PGR_CONTRACT_HPP_
+#define SRC_CONTRACTION_SRC_PGR_CONTRACT_HPP_
+#pragma once
+
+#include <deque>
+#include <vector>
+#include "cpp_common/pgr_assert.h"
+
+#include "./pgr_contractionGraph.hpp"
+#include "./pgr_linearContraction.hpp"
+#include "./pgr_deadEndContraction.hpp"
+
+namespace pgrouting {
+namespace contraction {
+
+
+template < class G >
+class Pgr_contract {
+ typedef typename G::V V;
+
+
+ void perform_deadEnd(G &graph,
+ Identifiers<V> forbidden_vertices,
+ std::ostringstream& debug) {
+ Pgr_deadend<G> deadendContractor;
+ debug << "Setting forbidden_vertices";
+ deadendContractor.setForbiddenVertices(forbidden_vertices);
+
+ deadendContractor.calculateVertices(graph);
+ try {
+ deadendContractor.doContraction(graph);
+ }
+ catch ( ... ) {
+ debug << "Caught unknown exception!\n";
+ }
+ }
+
+
+ void perform_linear(G &graph,
+ Identifiers<V>& forbidden_vertices,
+ std::ostringstream& debug) {
+ std::ostringstream linear_debug;
+ Pgr_linear<G> linearContractor;
+ linearContractor.setForbiddenVertices(forbidden_vertices);
+ linearContractor.calculateVertices(graph);
+ try {
+ linearContractor.doContraction(graph);
+ }
+ catch ( ... ) {
+ linear_debug << "Caught unknown exception!\n";
+ }
+ debug << linear_debug.str().c_str() << "\n";
+ }
+
+
+ public:
+ Pgr_contract(
+ G &graph,
+ Identifiers<V> forbidden_vertices,
+ std::vector<int64_t> contraction_order,
+ int64_t max_cycles,
+ Identifiers<int64_t> &remaining_vertices,
+ std::vector<pgrouting::CH_edge> &shortcut_edges,
+ std::ostringstream& debug) {
+ std::deque<int64_t> contract_order;
+ // push -1 to indicate the start of the queue
+ contract_order.push_back(-1);
+ contract_order.insert(
+ contract_order.end(),
+ contraction_order.begin(), contraction_order.end());
+ for (int64_t i = 0; i < max_cycles; ++i) {
+ int64_t front = contract_order.front();
+ debug << "Starting cycle " << i+1 << "\n";
+ contract_order.pop_front();
+ contract_order.push_back(front);
+ front = contract_order.front();
+ while (front != -1) {
+ switch (front) {
+ case -1:
+ debug << "Finished cycle " << i+1 << std::endl;
+ break;
+ default:
+ debug << "contraction "<< front
+ << " asked" << std::endl;
+ if (front == 1) {
+#ifndef NDEBUG
+ debug << "Graph before dead end contraction"
+ << std::endl;
+ graph.print_graph(debug);
+ debug << "Performing dead end contraction"
+ << std::endl;
+#endif
+ perform_deadEnd(graph, forbidden_vertices, debug);
+#ifndef NDEBUG
+ debug << "Graph after dead end contraction"
+ << std::endl;
+ graph.print_graph(debug);
+#endif
+ } else if (front == 2) {
+#ifndef NDEBUG
+ debug << "Graph before linear contraction"
+ << std::endl;
+ graph.print_graph(debug);
+ debug << "Performing linear contraction"
+ << std::endl;
+#endif
+ perform_linear(graph, forbidden_vertices, debug);
+#ifndef NDEBUG
+ debug << "Graph after linear contraction"
+ << std::endl;
+ graph.print_graph(debug);
+#endif
+ }
+ contract_order.pop_front();
+ contract_order.push_back(front);
+ front = contract_order.front();
+ }
+ }
+ }
+ remaining_vertices = graph.get_changed_vertices();
+ debug << "Printing shortcuts\n";
+ for (auto shortcut : graph.shortcuts) {
+ debug << shortcut;
+ shortcut_edges.push_back(shortcut);
+ }
+ }
+
+#if 0
+ bool is_valid_contraction_number(int number) {
+ switch (number) {
+ case -2:
+ return false;
+ break;
+ case -1:
+ return false;
+ break;
+ case 0:
+ return true;
+ break;
+ case 1:
+ return true;
+ break;
+ default:
+ return false;
+ break;
+ }
+ }
+#endif
+};
+
+} // namespace contraction
+} // namespace pgrouting
+
+#endif // SRC_CONTRACTION_SRC_PGR_CONTRACT_HPP_
diff --git a/include/contraction/pgr_contractionGraph.hpp b/include/contraction/pgr_contractionGraph.hpp
new file mode 100644
index 0000000..6999680
--- /dev/null
+++ b/include/contraction/pgr_contractionGraph.hpp
@@ -0,0 +1,302 @@
+/*PGR-GNU*****************************************************************
+File: pgr_contractionGraph.hpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2016 Rohith Reddy
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef SRC_CONTRACTION_SRC_PGR_CONTRACTIONGRAPH_HPP_
+#define SRC_CONTRACTION_SRC_PGR_CONTRACTIONGRAPH_HPP_
+#pragma once
+
+
+#include <limits>
+#include <algorithm>
+#include <vector>
+
+#include "cpp_common/pgr_base_graph.hpp"
+#include "../../common/src/ch_vertex.h"
+#include "../../common/src/ch_edge.h"
+
+
+namespace pgrouting {
+
+namespace graph {
+template <class G, typename T_V, typename T_E>
+class Pgr_contractionGraph;
+}
+
+ typedef graph::Pgr_contractionGraph <
+ boost::adjacency_list < boost::listS, boost::vecS,
+ boost::undirectedS,
+ CH_vertex, CH_edge >,
+ CH_vertex, CH_edge > CHUndirectedGraph;
+
+ typedef graph::Pgr_contractionGraph <
+ boost::adjacency_list < boost::listS, boost::vecS,
+ boost::bidirectionalS,
+ CH_vertex, CH_edge >,
+ CH_vertex, CH_edge > CHDirectedGraph;
+
+namespace graph {
+
+template <class G, typename T_V, typename T_E>
+class Pgr_contractionGraph : public Pgr_base_graph<G, T_V, T_E> {
+ public:
+ typedef typename boost::graph_traits < G >::vertex_descriptor V;
+ typedef typename boost::graph_traits < G >::edge_descriptor E;
+ typedef typename boost::graph_traits < G >::vertex_iterator V_i;
+ typedef typename boost::graph_traits < G >::edge_iterator E_i;
+ typedef typename boost::graph_traits < G >::out_edge_iterator EO_i;
+ typedef typename boost::graph_traits < G >::in_edge_iterator EI_i;
+ typedef typename boost::graph_traits < G >::degree_size_type
+ degree_size_type;
+
+ Identifiers<V> removed_vertices;
+ std::vector<T_E> shortcuts;
+
+ /*! @brief Binary function that accepts two elements , and returns a value convertible to bool.
+ Used as a compare function to sort the edges in increasing order of edge id
+ */
+ static bool compareById(const T_E &edge1, const T_E &edge2) {
+ return edge1.id > edge2.id;
+ }
+
+ /*!
+ Prepares the _graph_ to be of type *gtype*
+ */
+ explicit Pgr_contractionGraph< G , T_V, T_E >(graphType gtype)
+ : Pgr_base_graph< G , T_V, T_E >(gtype) {
+ }
+
+ /*! @brief get the vertex descriptors of adjacent vertices of *v*
+ @param [in] v vertex_descriptor
+ @return Identifiers<V>: The set of vertex descriptors adjacent to the given vertex *v*
+ */
+ Identifiers<V> find_adjacent_vertices(V v) const {
+ EO_i out, out_end;
+ EI_i in, in_end;
+ Identifiers<V> adjacent_vertices;
+
+ for (boost::tie(out, out_end) = out_edges(v, this->graph);
+ out != out_end; ++out) {
+ adjacent_vertices += this->adjacent(v, *out);
+ }
+ for (boost::tie(in, in_end) = in_edges(v, this->graph);
+ in != in_end; ++in) {
+ adjacent_vertices += this->adjacent(v, *in);
+ }
+ return adjacent_vertices;
+ }
+
+
+ std::vector<int64_t> get_ids(
+ Identifiers<int64_t> boost_ids) const {
+ std::vector<int64_t> ids(boost_ids.size());
+ size_t count = 0;
+ for (auto id : boost_ids) {
+ ids[count++] = this->graph[id].id;
+ }
+ return ids;
+ }
+
+
+ /*! @brief vertices with at least one contracted vertex
+ *
+ @result The vids Identifiers with at least one contracted vertex
+ */
+ Identifiers<int64_t> get_changed_vertices() {
+ Identifiers<int64_t> vids;
+ for (auto vi = vertices(this->graph).first;
+ vi != vertices(this->graph).second;
+ ++vi) {
+ if (!removed_vertices.has(*vi)
+ && this->graph[*vi].has_contracted_vertices()) {
+ vids += this->graph[*vi].id;
+ }
+ }
+ return vids;
+ }
+
+
+ /*! @brief get the edge with minimum cost between two vertices
+ @param [in] source vertex_descriptor of source vertex
+ @param [in] destination vertex_descriptor of target vertex
+ @return E: The edge descriptor of the edge with minimum cost
+ */
+ E get_min_cost_edge(V source, V destination) {
+ EO_i out_i, out_end;
+ E min_cost_edge;
+ double min_cost = (std::numeric_limits<double>::max)();
+ for (boost::tie(out_i, out_end) =
+ boost::out_edges(source, this->graph);
+ out_i != out_end; ++out_i) {
+ auto e = *out_i;
+ if (this->target(e) == destination) {
+ if (this->graph[e].cost < min_cost) {
+ min_cost = this->graph[e].cost;
+ min_cost_edge = e;
+ }
+ }
+ }
+ return min_cost_edge;
+ }
+
+ /*! @brief The number of edges from @b neighbor to @b vertex
+
+ @param [in] vertex is the target of the edges
+ @param [in] neighbor is the source of the edges
+ @return degree_size_type: The in-degree of *vertex* from *neighbor*
+ */
+ degree_size_type in_degree_from_vertex(V vertex, V neighbor) {
+ return out_degree_to_vertex(neighbor, vertex);
+ }
+
+ /*! @brief The number of edges from @b vertex to @b neighbor
+
+ @param [in] vertex vertex_descriptor of the given vertex
+ @param [in] neighbor vertex_descriptor of neighbor
+ @return degree_size_type: The out-degree of *vertex* to *neighbor*
+ */
+ degree_size_type out_degree_to_vertex(V vertex, V neighbor) {
+ degree_size_type degree = 0;
+ EO_i out_i, out_end;
+ for (boost::tie(out_i, out_end) =
+ boost::out_edges(vertex, this->graph);
+ out_i != out_end; ++out_i) {
+ if (this->is_directed()
+ && (this->is_source(vertex, *out_i)
+ && this->is_target(neighbor, *out_i))) {
+ degree++;
+ } else if (this->is_undirected() &&
+ this->adjacent(vertex, *out_i) == neighbor) {
+ degree++;
+ }
+ }
+ return degree;
+ }
+
+
+ /*! @brief print the graph with contracted vertices of
+ all vertices and edges
+ */
+ void print_graph(std::ostringstream &log) {
+ EO_i out, out_end;
+ for (auto vi = vertices(this->graph).first;
+ vi != vertices(this->graph).second;
+ ++vi) {
+ if ((*vi) >= this->m_num_vertices) break;
+ log << this->graph[*vi].id << "(" << (*vi) << ")"
+ << this->graph[*vi].contracted_vertices() << std::endl;
+ log << " out_edges_of(" << this->graph[*vi].id << "):";
+ for (boost::tie(out, out_end) = out_edges(*vi, this->graph);
+ out != out_end; ++out) {
+ log << ' ' << this->graph[*out].id
+ << "=(" << this->graph[this->source(*out)].id
+ << ", " << this->graph[this->target(*out)].id << ") = "
+ << this->graph[*out].cost <<"\t";
+ }
+ log << std::endl;
+ }
+ }
+
+
+
+ /*! @brief get the contracted vertex ids of a given vertex in array format
+ @param [in] vid vertex_id
+
+ @returns ids of contracted_vertices
+ */
+ std::vector<int64_t> get_contracted_vertices(int64_t vid) {
+ if (!this->has_vertex(vid)) return std::vector<int64_t>();
+ auto v = this->get_V(vid);
+ std::vector<int64_t> ids(this->graph[v].contracted_vertices().size());
+
+ size_t count = 0;
+ for (auto idx : this->graph[v].contracted_vertices()) {
+ ids[count++] = this->graph[idx].id;
+ }
+ return ids;
+ }
+
+
+
+
+
+ /*! @brief add the contracted vertices of an edge *e* to the vertex *v*
+ @param [in] v vertex_descriptor
+ @param [in] e Edge of type *T_E*
+ */
+ void add_contracted_edge_vertices(V v, T_E &e) {
+ for (auto vid : e.contracted_vertices()) {
+ this->graph[v].add_vertex_id(vid);
+ }
+ e.clear_contracted_vertices();
+ }
+
+
+ /*! @brief add edges(shortuct) to the graph during contraction
+
+ a -> b -> c
+
+ a -> c
+
+ edge (a, c) is a new edge e
+ e.contracted_vertices = b + b.contracted vertices
+ b is "removed" disconnected from the graph
+ - by removing all edges to/from b
+
+
+ @param [in] edge of type *T_E* is to be added
+ */
+
+ void add_shortcut(const T_E &edge) {
+ std::ostringstream log;
+ bool inserted;
+ E e;
+ if (edge.cost < 0)
+ return;
+
+ pgassert(this->vertices_map.find(edge.source)
+ != this->vertices_map.end());
+ pgassert(this->vertices_map.find(edge.target)
+ != this->vertices_map.end());
+
+ auto vm_s = this->get_V(edge.source);
+ auto vm_t = this->get_V(edge.target);
+
+ boost::tie(e, inserted) =
+ boost::add_edge(vm_s, vm_t, this->graph);
+
+ this->graph[e].cp_members(edge);
+
+ shortcuts.push_back(edge);
+ }
+};
+
+} // namespace graph
+} // namespace pgrouting
+
+#endif // SRC_CONTRACTION_SRC_PGR_CONTRACTIONGRAPH_HPP_
diff --git a/include/contraction/pgr_deadEndContraction.hpp b/include/contraction/pgr_deadEndContraction.hpp
new file mode 100644
index 0000000..9e5a89c
--- /dev/null
+++ b/include/contraction/pgr_deadEndContraction.hpp
@@ -0,0 +1,408 @@
+/*PGR-GNU*****************************************************************
+File: pgr_deadend.hpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2016 Rohith Reddy
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef SRC_CONTRACTION_SRC_PGR_DEADENDCONTRACTION_HPP_
+#define SRC_CONTRACTION_SRC_PGR_DEADENDCONTRACTION_HPP_
+#pragma once
+
+
+#include <queue>
+#include <functional>
+#include <vector>
+#include "cpp_common/identifiers.hpp"
+
+namespace pgrouting {
+namespace contraction {
+
+template < class G >
+class Pgr_deadend {
+ private:
+ typedef typename G::V V;
+ typedef typename G::E E;
+
+ public:
+ void setForbiddenVertices(
+ Identifiers<V> forbidden_vertices);
+
+ void calculateVertices(G &graph);
+ /// @brief true when \b v is a dead end
+ bool is_dead_end(G &graph, V v);
+ void add_if_dead_end(G &graph, V v);
+ void doContraction(G &graph);
+
+ private:
+ Identifiers<V> deadendVertices;
+ Identifiers<V> forbiddenVertices;
+ std::ostringstream debug;
+};
+
+/******* IMPLEMENTATION ************/
+template < class G >
+void
+Pgr_deadend< G >::setForbiddenVertices(
+ Identifiers<V> forbidden_vertices) {
+#ifndef NDEBUG
+ debug << "Setting forbidden vertices\n";
+#endif
+ forbiddenVertices = forbidden_vertices;
+}
+
+
+template < class G >
+void Pgr_deadend<G>::calculateVertices(G &graph) {
+ debug << "Calculating vertices\n";
+
+ for (auto vi = vertices(graph.graph).first;
+ vi != vertices(graph.graph).second;
+ ++vi) {
+#ifndef NDEBUG
+ debug << "Checking vertex " << graph[(*vi)].id << '\n';
+#endif
+ if (is_dead_end(graph, *vi)) {
+#ifndef NDEBUG
+ debug << "Adding " << graph[(*vi)].id << " to dead end" << '\n';
+#endif
+ deadendVertices += (*vi);
+ }
+ }
+ deadendVertices -= forbiddenVertices;
+}
+
+template < class G >
+bool Pgr_deadend<G>::is_dead_end(G &graph, V v) {
+#ifndef NDEBUG
+ debug << "Is dead end: " << graph.graph[v].id << "?\n";
+#endif
+
+ if (forbiddenVertices.has(v)) {
+ /**
+ * - fobbiden_vertices
+ * - Not considered as dead end
+ */
+
+ return false;
+ }
+
+ if (graph.is_undirected()) {
+ /**
+ * undirected:
+ * ----------
+ * - There is only one adjacent vertex:
+ * - All adjcent edges are from a single vertex
+ *
+
+ @dot
+ graph G {
+ graph [rankdir=LR];
+ subgraph cluster0 {
+ node [shape=point,height=0.2,style=filled,color=black];
+ style=filled;
+ color=lightgrey;
+ a0; a1; a2;
+ label = "rest of graph";
+ }
+ v [color=green];
+ v -- a0;
+ v -- a0;
+ }
+ @enddot
+
+ */
+ Identifiers<V> adjacent_vertices = graph.find_adjacent_vertices(v);
+ if (adjacent_vertices.size() == 1) {
+ return true;
+ }
+ return false;
+ }
+
+ pgassert(graph.is_directed());
+ /*
+ * directed graph
+ *
+ * is dead end when:
+ * (2) one incoming edge, no outgoing edge (dead end)
+ * (3) one outgoing edge, one incoming edge
+ * and both are from/to the same vertex
+ * (4) many incoming edges
+ * and no outgoing edges
+ * (5) many outgoing edges TODO but all go to same vertex
+ * and no incoming edges
+ *
+ * NOT dead end when:
+ * (3) one outgoing edge, one incoming edge
+ * and both from/to different vertex
+ *
+ * note: when contracting case 4 & 5, the vertex has to be
+ * part of all the adjacent vertices
+ */
+
+ if (graph.in_degree(v) == 0 && graph.out_degree(v) == 1) {
+ /**
+ * directed
+ * ----------
+ * case (1): (dead start)
+ * - one outgoing edge,
+ * - no incoming edge
+ *
+
+ @dot
+ digraph G {
+ graph [rankdir=LR];
+ subgraph cluster0 {
+ node [shape=point,height=0.2,style=filled,color=black];
+ style=filled;
+ color=lightgrey;
+ a0; a1; a2;
+ label = "rest of graph";
+ }
+ v [color=green];
+ v -> a0;
+ }
+ @enddot
+
+ */
+ return true;
+ }
+
+ if (graph.in_degree(v) == 1 && graph.out_degree(v) == 0) {
+ /**
+ * case (2): (dead end)
+ * - no outgoing edge,
+ * - one incoming edge
+ *
+
+ @dot
+ digraph G {
+ graph [rankdir=LR];
+ subgraph cluster0 {
+ node [shape=point,height=0.2,style=filled,color=black];
+ style=filled;
+ color=lightgrey;
+ a0; a1; a2;
+ label = "rest of graph";
+ }
+ v [color=green];
+ a0 -> v;
+ }
+ @enddot
+
+ */
+ return true;
+ }
+
+ if (graph.out_degree(v) == 1 && graph.in_degree(v) == 1) {
+ /**
+ * case (3):
+ * - one outgoing edge,
+ * - one incoming edge
+ * - one adjacent vertex
+ *
+
+ @dot
+ digraph G {
+ graph [rankdir=LR];
+ subgraph cluster0 {
+ node [shape=point,height=0.2,style=filled,color=black];
+ style=filled;
+ color=lightgrey;
+ a0; a1; a2;
+ label = "rest of graph";
+ }
+ v [color=green];
+ v -> a0;
+ a0 -> v;
+ }
+ @enddot
+
+ */
+ auto out_e = *(out_edges(v, graph.graph).first);
+ auto in_e = *(in_edges(v, graph.graph).first);
+
+ auto out_v = graph.is_source(v, out_e) ?
+ graph.target(out_e) : graph.source(out_e);
+ auto in_v = graph.is_source(v, in_e) ?
+ graph.target(in_e) : graph.source(in_e);
+
+ if (out_v == in_v) {
+ return true;
+ }
+ return false;
+ }
+
+ if (graph.in_degree(v) > 0 && graph.out_degree(v) == 0) {
+ /**
+ * case (4):
+ * - no outgoing edge,
+ * - many incoming edges
+ *
+ *
+
+ @dot
+ digraph G {
+ graph [rankdir=LR];
+ subgraph cluster0 {
+ node [shape=point,height=0.2,style=filled,color=black];
+ style=filled;
+ color=lightgrey;
+ a0; a1; a2;
+ label = "rest of graph";
+ }
+ v [color=green];
+ a0 -> v;
+ a1 -> v;
+ a0 -> v;
+ }
+ @enddot
+
+ */
+ return true;
+ }
+
+ if (graph.in_degree(v) > 0 && graph.out_degree(v) > 0) {
+ /**
+ * case (5):
+ * - many outgoing edge,
+ * - many incoming edges
+ * - All adjacent edges are from a single vertex
+ *
+ *
+
+ @dot
+ digraph G {
+ graph [rankdir=LR];
+ subgraph cluster0 {
+ node [shape=point,height=0.2,style=filled,color=black];
+ style=filled;
+ color=lightgrey;
+ a0; a1; a2;
+ label = "rest of graph";
+ }
+ v [color=green];
+ a0 -> v;
+ a0 -> v;
+ v -> a0;
+ v -> a0;
+ }
+ @enddot
+
+ */
+
+ auto adjacent_vertices = graph.find_adjacent_vertices(v);
+ if (adjacent_vertices.size() == 1) {
+ return true;
+ }
+ }
+ debug << "Is Not Dead End\n";
+ return false;
+}
+
+template < class G >
+void
+Pgr_deadend<G>::add_if_dead_end(G &graph, V v) {
+ if (is_dead_end(graph, v)) {
+ deadendVertices += v;
+ }
+}
+
+template < class G >
+void
+Pgr_deadend<G>::doContraction(G &graph) {
+#ifndef NDEBUG
+ debug << "Performing contraction\n";
+#endif
+ std::priority_queue<V, std::vector<V>, std::greater<V> > deadendPriority;
+
+ for (V deadendVertex : deadendVertices) {
+ deadendPriority.push(deadendVertex);
+ }
+
+ while (!deadendPriority.empty()) {
+ V current_vertex = deadendPriority.top();
+ deadendPriority.pop();
+
+ if (!is_dead_end(graph, current_vertex)) {
+ continue;
+ }
+
+ Identifiers<V> adjacent_vertices =
+ graph.find_adjacent_vertices(current_vertex);
+
+ for (auto adjacent_vertex : adjacent_vertices) {
+#ifndef NDEBUG
+ debug << "Contracting current vertex "
+ << graph[current_vertex].id << std::endl;
+#endif
+ graph[adjacent_vertex].add_contracted_vertex(
+ graph[current_vertex], current_vertex);
+
+#ifndef NDEBUG
+ debug << "Adding contracted vertices of the edge\n";
+#endif
+ auto o_edges = out_edges(current_vertex, graph.graph);
+ for (auto out = o_edges.first;
+ out != o_edges.second;
+ ++out) {
+ debug << graph.graph[*out];
+ graph.add_contracted_edge_vertices(
+ adjacent_vertex, graph[*out]);
+ }
+ auto i_edges = in_edges(current_vertex, graph.graph);
+ for (auto in = i_edges.first;
+ in != i_edges.second; ++in) {
+#ifndef NDEBUG
+ debug << graph.graph[*in];
+#endif
+ graph.add_contracted_edge_vertices(adjacent_vertex, graph[*in]);
+ }
+#ifndef NDEBUG
+ debug << "Current Vertex:\n";
+ debug << graph[current_vertex];
+ debug << "Adjacent Vertex:\n";
+ debug << graph[adjacent_vertex];
+#endif
+ graph.disconnect_vertex(current_vertex);
+ deadendVertices -= current_vertex;
+#ifndef NDEBUG
+ debug << "Adjacent vertex dead_end?: "
+ << is_dead_end(graph, adjacent_vertex)
+ << std::endl;
+#endif
+ if (is_dead_end(graph, adjacent_vertex)
+ && !forbiddenVertices.has(adjacent_vertex)) {
+ deadendVertices += adjacent_vertex;
+ deadendPriority.push(adjacent_vertex);
+ }
+ }
+ }
+}
+
+} // namespace contraction
+} // namespace pgrouting
+
+#endif // SRC_CONTRACTION_SRC_PGR_DEADENDCONTRACTION_HPP_
diff --git a/include/contraction/pgr_linearContraction.hpp b/include/contraction/pgr_linearContraction.hpp
new file mode 100644
index 0000000..4eb74a7
--- /dev/null
+++ b/include/contraction/pgr_linearContraction.hpp
@@ -0,0 +1,282 @@
+/*PGR-GNU*****************************************************************
+File: pgr_linear.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2016 Rohith Reddy
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef SRC_CONTRACTION_SRC_PGR_LINEARCONTRACTION_HPP_
+#define SRC_CONTRACTION_SRC_PGR_LINEARCONTRACTION_HPP_
+#pragma once
+
+
+#include <queue>
+#include <functional>
+#include <vector>
+
+#include "cpp_common/identifiers.hpp"
+
+
+namespace pgrouting {
+namespace contraction {
+
+template < class G >
+class Pgr_linear {
+ private:
+ typedef typename G::V V;
+ typedef typename G::E E;
+ typedef typename G::V_i V_i;
+ typedef typename G::E_i E_i;
+ typedef typename G::EO_i EO_i;
+ typedef typename G::EI_i EI_i;
+ typedef typename G::degree_size_type degree_size_type;
+
+
+ public:
+ Pgr_linear():last_edge_id(0) {}
+ void setForbiddenVertices(
+ Identifiers<V> forbidden_vertices);
+ void calculateVertices(G &graph);
+ void doContraction(G &graph);
+
+ private:
+ int64_t get_next_id() {
+ return --last_edge_id;
+ }
+
+ bool is_linear(G &graph, V v);
+ void add_if_linear(G &graph, V v);
+ void add_edge_pair(V vertex, int64_t &incoming_eid,
+ int64_t &outgoing_eid);
+ void add_shortcut(G &graph, V vertex,
+ E incoming_edge,
+ E outgoing_edge);
+ void add_shortcut(G &graph,
+ pgrouting::CH_edge &shortcut);
+
+ private:
+ Identifiers<V> linearVertices;
+ Identifiers<V> forbiddenVertices;
+
+ int64_t last_edge_id;
+ std::ostringstream debug;
+};
+
+/*************** IMPLEMENTTION **************/
+
+template < class G >
+void
+Pgr_linear< G >::setForbiddenVertices(
+ Identifiers<V> forbidden_vertices) {
+ debug << "Setting forbidden vertices\n";
+ forbiddenVertices = forbidden_vertices;
+}
+
+
+template < class G >
+bool Pgr_linear<G>::is_linear(G &graph, V v) {
+ degree_size_type in_degree, out_degree;
+ in_degree = graph.in_degree(v);
+ out_degree = graph.out_degree(v);
+ Identifiers<V> adjacent_vertices = graph.find_adjacent_vertices(v);
+ if (adjacent_vertices.size() == 2) {
+ if (in_degree > 0 && out_degree > 0) {
+ debug << graph.graph[v].id << " is linear " << std::endl;
+ return true;
+ }
+ }
+ debug << graph.graph[v].id << " is not linear " << std::endl;
+ return false;
+}
+
+template < class G >
+void Pgr_linear<G>::calculateVertices(G &graph) {
+ debug << "Calculating vertices\n";
+ V_i vi;
+ for (vi = vertices(graph.graph).first;
+ vi != vertices(graph.graph).second;
+ ++vi) {
+ debug << "Checking vertex " << graph.graph[(*vi)].id << '\n';
+ if (is_linear(graph, *vi)) {
+ linearVertices += (*vi);
+ }
+ }
+ linearVertices -= forbiddenVertices;
+}
+
+
+
+template < class G >
+void Pgr_linear<G>::doContraction(G &graph) {
+ std::ostringstream contraction_debug;
+ contraction_debug << "Performing contraction\n";
+ std::priority_queue<V, std::vector<V>, std::greater<V> > linearPriority;
+ for (const auto linearVertex : linearVertices) {
+ linearPriority.push(linearVertex);
+ }
+ contraction_debug << "Linear vertices" << std::endl;
+ for (const auto v : linearVertices) {
+ contraction_debug << graph[v].id << ", ";
+ }
+ contraction_debug << std::endl;
+ while (!linearPriority.empty()) {
+ V current_vertex = linearPriority.top();
+ linearPriority.pop();
+ if (!is_linear(graph, current_vertex)) {
+ linearVertices -= current_vertex;
+ continue;
+ }
+ Identifiers<V> adjacent_vertices =
+ graph.find_adjacent_vertices(current_vertex);
+ pgassert(adjacent_vertices.size() == 2);
+
+ V vertex_1 = adjacent_vertices.front();
+ adjacent_vertices.pop_front();
+ V vertex_2 = adjacent_vertices.front();
+ adjacent_vertices.pop_front();
+
+ contraction_debug << "Adjacent vertices\n";
+ contraction_debug << graph[vertex_1].id
+ << ", " << graph[vertex_2].id
+ << std::endl;
+
+ if (graph.m_gType == DIRECTED) {
+ if (graph.out_degree_to_vertex(vertex_1, current_vertex) > 0 &&
+ graph.in_degree_from_vertex(vertex_2, current_vertex) > 0) {
+ E e1 = graph.get_min_cost_edge(vertex_1,
+ current_vertex);
+ E e2 = graph.get_min_cost_edge(current_vertex,
+ vertex_2);
+ add_shortcut(graph, current_vertex, e1, e2);
+ }
+
+ if (graph.out_degree_to_vertex(vertex_2, current_vertex) > 0 &&
+ graph.in_degree_from_vertex(vertex_1, current_vertex) > 0) {
+ E e1 = graph.get_min_cost_edge(vertex_2,
+ current_vertex);
+ E e2 = graph.get_min_cost_edge(current_vertex,
+ vertex_1);
+ add_shortcut(graph, current_vertex, e1, e2);
+ }
+ } else if (graph.m_gType == UNDIRECTED) {
+ if (graph.out_degree_to_vertex(vertex_1, current_vertex) > 0 &&
+ graph.in_degree_from_vertex(vertex_2, current_vertex) > 0) {
+ contraction_debug << "UNDIRECTED graph before contraction\n";
+ graph.print_graph(contraction_debug);
+ E e1 = graph.get_min_cost_edge(vertex_1,
+ current_vertex);
+ E e2 = graph.get_min_cost_edge(current_vertex,
+ vertex_2);
+ add_shortcut(graph, current_vertex, e1, e2);
+ }
+ }
+
+ graph.disconnect_vertex(current_vertex);
+ linearVertices -= current_vertex;
+ if (is_linear(graph, vertex_1)
+ && !forbiddenVertices.has(vertex_1)) {
+ linearPriority.push(vertex_1);
+ linearVertices += vertex_1;
+ }
+ if (is_linear(graph, vertex_2)
+ && !forbiddenVertices.has(vertex_2)) {
+ linearPriority.push(vertex_2);
+ linearVertices += vertex_2;
+ }
+ }
+ debug << contraction_debug.str().c_str() << "\n";
+}
+
+
+/*! \brief add edges(shortuct) to the graph during contraction
+
+ a --incomming--> b ---outgoing--> c
+
+ a -> c
+
+ edge (a, c) is a new edge: @b shortcut
+ e.contracted_vertices = b + b.contracted vertices
+ b is "removed" disconnected from the graph
+ - by removing all edges to/from b
+ */
+
+template < class G >
+void
+Pgr_linear<G>::add_shortcut(
+ G &graph, V vertex,
+ E incoming_edge,
+ E outgoing_edge) {
+ pgassert(incoming_edge != outgoing_edge);
+
+ auto a = graph.adjacent(vertex, incoming_edge);
+ auto c = graph.adjacent(vertex, outgoing_edge);
+ pgassert(a != vertex);
+ pgassert(a != c);
+ pgassert(vertex != c);
+
+ if (graph.is_undirected()) {
+ Identifiers<V> adjacent_vertices = graph.find_adjacent_vertices(vertex);
+
+ V vertex_1 = adjacent_vertices.front();
+ adjacent_vertices.pop_front();
+ V vertex_2 = adjacent_vertices.front();
+ adjacent_vertices.pop_front();
+
+ E shortcut_E;
+ CH_edge shortcut(get_next_id(), graph[vertex_1].id,
+ graph[vertex_2].id,
+ graph[incoming_edge].cost + graph[outgoing_edge].cost);
+ shortcut.add_contracted_vertex(graph[vertex], vertex);
+ shortcut.add_contracted_edge_vertices(graph[incoming_edge]);
+ shortcut.add_contracted_edge_vertices(graph[outgoing_edge]);
+ debug << "Adding shortcut\n";
+ debug << shortcut;
+ graph.add_shortcut(shortcut);
+ debug << "Added shortcut\n";
+ } else {
+ CH_edge shortcut(
+ get_next_id(),
+ graph[a].id,
+ graph[c].id,
+ graph[incoming_edge].cost + graph[outgoing_edge].cost);
+ shortcut.add_contracted_vertex(graph[vertex], vertex);
+ shortcut.add_contracted_edge_vertices(graph[incoming_edge]);
+ shortcut.add_contracted_edge_vertices(graph[outgoing_edge]);
+ debug << "Adding shortcut\n";
+ debug << shortcut;
+ graph.add_shortcut(shortcut);
+ debug << "Added shortcut\n";
+ }
+}
+template < class G >
+void Pgr_linear<G>::add_shortcut(G &graph,
+ pgrouting::CH_edge &shortcut) {
+ graph.add_shortcut(shortcut);
+}
+
+} // namespace contraction
+} // namespace pgrouting
+
+#endif // SRC_CONTRACTION_SRC_PGR_LINEARCONTRACTION_HPP_
diff --git a/include/cpp_common/Dmatrix.h b/include/cpp_common/Dmatrix.h
new file mode 100644
index 0000000..a2f594b
--- /dev/null
+++ b/include/cpp_common/Dmatrix.h
@@ -0,0 +1,134 @@
+/*PGR-GNU*****************************************************************
+
+FILE: Dmatrix.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_DMATRIX_H_
+#define INCLUDE_CPP_COMMON_DMATRIX_H_
+#pragma once
+
+#include <iostream>
+#include <vector>
+
+#include "c_types/matrix_cell_t.h"
+
+namespace pgrouting {
+namespace tsp {
+
+class Tour; // for tourCost
+
+class Dmatrix {
+ public:
+ Dmatrix() = default;
+ explicit Dmatrix(const std::vector < Matrix_cell_t > &data_costs);
+
+ bool has_no_infinity() const;
+ bool obeys_triangle_inequality() const;
+ bool is_symmetric() const;
+
+ /*! @brief sets a special value for the distance(i,j)
+ *
+ * @param [in] i - index in matrix
+ * @param [in] j - index in matrix
+ * @param [in] dist - distance from i to j & from j to i
+ *
+ */
+ void set(size_t i, size_t j, double dist) {
+ costs[i][j] = costs[j][i] = dist;}
+
+ /*! @brief original id -> true
+ *
+ * @param [in] id - original id
+ * @returns true if id is in the distance table
+ */
+ bool has_id(int64_t id) const;
+
+ /*! @brief original id -> idx
+ *
+ * @param [in] id - original id
+ * @returns idx index of the id in the distance table
+ */
+ size_t get_index(int64_t id) const;
+
+ /*! @brief idx -> original id
+ *
+ * @param [in] idx - index (i-th coordinate)
+ * @returns the original id corresponding to idx
+ */
+ int64_t get_id(size_t idx) const;
+
+ /*! @brief |idx|
+ *
+ * @returns the total number of coordinates
+ */
+ size_t size() const {return ids.size();}
+
+ /*! @brief tour evaluation
+ *
+ * @param [in] tour
+ * @returns total cost of traversing the tour
+ */
+ double tourCost(const Tour &tour) const;
+
+ /*! @brief returns a row of distances
+ *
+ * @param [in] idx - row index
+ * @returns distances from idx to all other coordinates
+ */
+ const std::vector<double>& get_row(size_t idx) const {
+ return costs[idx];}
+
+ double comparable_distance(size_t i, size_t j) const {
+ return distance(i, j);}
+
+ double distance(int64_t i, int64_t j) const {
+ return distance(get_index(i), get_index(j));}
+
+ double distance(size_t i, size_t j) const {
+ return costs[i][j];}
+
+ friend std::ostream& operator<<(
+ std::ostream &log,
+ const Dmatrix &matrix);
+
+ double empty() const {
+ return ids.empty();
+ }
+
+ protected:
+ void set_ids(const std::vector<matrix_cell> &data_costs);
+ std::vector<int64_t> ids;
+
+ private:
+ typedef std::vector < std::vector < double > > Costs;
+ Costs costs;
+ std::vector< double >& operator[] (size_t i) {return costs[i];}
+ const std::vector< double >& operator[] (size_t i) const {return costs[i];}
+};
+
+} // namespace tsp
+} // namespace pgrouting
+
+#endif // INCLUDE_CPP_COMMON_DMATRIX_H_
diff --git a/include/cpp_common/basePath_SSEC.hpp b/include/cpp_common/basePath_SSEC.hpp
new file mode 100644
index 0000000..2570be1
--- /dev/null
+++ b/include/cpp_common/basePath_SSEC.hpp
@@ -0,0 +1,279 @@
+/*PGR-GNU*****************************************************************
+
+File: basePath_SSEC.hpp
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_BASEPATH_SSEC_HPP_
+#define INCLUDE_CPP_COMMON_BASEPATH_SSEC_HPP_
+#pragma once
+
+
+#include <boost/config.hpp>
+#include <boost/graph/adjacency_list.hpp>
+
+
+#include <deque>
+#include <vector>
+#include <iostream>
+#include <algorithm>
+
+#include "c_types/general_path_element_t.h"
+
+#include "cpp_common/path_t.h"
+#include "cpp_common/pgr_base_graph.hpp"
+
+
+class Path {
+ typedef std::deque< Path_t >::iterator pthIt;
+ typedef std::deque< Path_t >::const_iterator ConstpthIt;
+
+ private:
+ std::deque< Path_t > path;
+ int64_t m_start_id;
+ int64_t m_end_id;
+ double m_tot_cost;
+
+ public:
+ Path(): m_tot_cost(0) {}
+ Path(int64_t s_id, int64_t e_id)
+ : m_start_id(s_id), m_end_id(e_id), m_tot_cost(0)
+ {}
+ Path(const Path&) = default;
+
+ int64_t start_id() const {return m_start_id;}
+ void start_id(int64_t value) {m_start_id = value;}
+ int64_t end_id() const {return m_end_id;}
+ void end_id(int64_t value) {m_end_id = value;}
+ double tot_cost() const {return m_tot_cost;}
+
+ size_t size() const {return path.size();}
+ bool empty() const {return path.empty();}
+
+ void push_front(Path_t data);
+ void push_back(Path_t data);
+ const Path_t& operator[](size_t i) const {return path[i];}
+ Path_t& operator[](size_t i) {return path[i];}
+
+ pthIt begin() {return path.begin();}
+ pthIt end() {return path.end();}
+ ConstpthIt begin() const {return path.begin();}
+ ConstpthIt end() const {return path.end();}
+
+
+ void erase(pthIt pos) {path.erase(pos);}
+ const Path_t& back() const {return path.back();}
+ Path_t& back() {return path.back();}
+ const Path_t& front() const {return path.front();}
+ Path_t& front() {return path.front();}
+ void sort_by_node_agg_cost();
+
+
+ Path_t set_data(
+ int64_t d_from,
+ int64_t d_to,
+ int64_t d_vertex,
+ int64_t d_edge,
+ double d_cost,
+ double d_tot_cost);
+
+ void push_front(
+ int64_t d_vertex,
+ int64_t d_edge,
+ double d_cost,
+ double d_tot_cost);
+ void clear();
+
+ friend std::ostream& operator<<(std::ostream &log, const Path &p);
+
+
+ void reverse();
+
+ Path getSubpath(unsigned int j) const;
+
+
+ bool isEqual(const Path &subpath) const;
+ void appendPath(const Path &o_path);
+ void append(const Path &other);
+ void empty_path(unsigned int d_vertex);
+
+ void get_pg_dd_path(
+ General_path_element_t **ret_path,
+ size_t &sequence) const;
+
+ void get_pg_ksp_path(
+ General_path_element_t **ret_path,
+ size_t &sequence, int routeId) const;
+
+ void generate_postgres_data(
+ General_path_element_t **postgres_data,
+ size_t &sequence) const;
+
+ friend size_t collapse_paths(
+ General_path_element_t **ret_path,
+ const std::deque< Path > &paths);
+
+
+ /** @brief discards common vertices with greater agg_cost */
+ friend void equi_cost(std::deque< Path > &paths);
+ /** @brief counts the tuples to be returned*/
+ friend size_t count_tuples(const std::deque< Path > &paths);
+
+ /*
+ * TEMPLATES
+ */
+ template <typename G , typename V> Path(
+ G &graph,
+ int64_t source,
+ double distance,
+ const std::vector<V> &predecessors,
+ const std::vector<double> &distances) :
+ m_start_id(source),
+ m_end_id(source) {
+ for (V i = 0; i < distances.size(); ++i) {
+ if (distances[i] <= distance) {
+ auto cost = distances[i] - distances[predecessors[i]];
+ auto edge_id = graph.get_edge_id(predecessors[i], i, cost);
+ push_back(
+ {graph[i].id,
+ edge_id, cost,
+ distances[i]});
+ }
+ }
+ }
+
+
+ template <typename G , typename V> Path(
+ G &graph,
+ V v_source,
+ double distance,
+ const std::vector<V> &predecessors,
+ const std::vector<double> &distances) :
+ m_start_id(graph.graph[v_source].id),
+ m_end_id(graph.graph[v_source].id) {
+ for (V i = 0; i < distances.size(); ++i) {
+ if (distances[i] <= distance) {
+ auto cost = distances[i] - distances[predecessors[i]];
+ auto edge_id = graph.get_edge_id(predecessors[i], i, cost);
+ push_back(
+ {graph[i].id,
+ edge_id, cost,
+ distances[i]});
+ }
+ }
+ }
+
+
+
+ template <typename G , typename V> Path(
+ const G &graph,
+ const V v_source,
+ const V v_target,
+ const std::vector<V> &predecessors,
+ const std::vector<double> &distances,
+ bool only_cost,
+ bool normal = true) :
+ m_start_id(graph.graph[v_source].id),
+ m_end_id(graph.graph[v_target].id) {
+ if (!only_cost) {
+ complete_path(graph,
+ v_source,
+ v_target,
+ predecessors,
+ distances,
+ normal);
+ return;
+ }
+ /*
+ * only_cost
+ */
+ if (v_target != predecessors[v_target]) {
+ push_front(
+ {graph.graph[v_target].id,
+ -1,
+ distances[v_target],
+ distances[v_target]});
+ }
+ return;
+ }
+
+ /*! @brief constructs a path based on results
+ *
+ * Normal = false for reversed search path like in pgr_bdDijkstra
+ */
+ template <typename G , typename V> void complete_path(
+ const G &graph,
+ const V v_source,
+ const V v_target,
+ const std::vector<V> &predecessors,
+ const std::vector<double> &distances,
+ bool normal) {
+ // no path was found
+ if (v_target == predecessors[v_target]) {
+ return;
+ }
+
+ /*
+ * set the target
+ */
+ auto target = v_target;
+
+ /*
+ * the last stop is the target
+ */
+ push_front(
+ {graph.graph[target].id, -1,
+ 0, distances[target]});
+
+ /*
+ * get the path
+ */
+ while (target != v_source) {
+ /*
+ * done when the predecesor of the target is the target
+ */
+ if (target == predecessors[target]) break;
+
+ /*
+ * Inserting values in the path
+ */
+ auto cost = distances[target] - distances[predecessors[target]];
+ auto vertex_id = graph.graph[predecessors[target]].id;
+ auto edge_id = normal?
+ graph.get_edge_id(predecessors[target], target, cost)
+ : graph.get_edge_id(target, predecessors[target], cost);
+
+ push_front({
+ vertex_id,
+ edge_id,
+ cost,
+ distances[target] - cost});
+ target = predecessors[target];
+ }
+
+ return;
+ }
+};
+
+
+#endif // INCLUDE_CPP_COMMON_BASEPATH_SSEC_HPP_
diff --git a/include/cpp_common/basic_edge.h b/include/cpp_common/basic_edge.h
new file mode 100644
index 0000000..d6f0ef1
--- /dev/null
+++ b/include/cpp_common/basic_edge.h
@@ -0,0 +1,49 @@
+/*PGR-GNU*****************************************************************
+ *
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_BASIC_EDGE_H_
+#define INCLUDE_CPP_COMMON_BASIC_EDGE_H_
+#pragma once
+
+#include <stdint.h>
+
+namespace pgrouting {
+
+class Basic_edge{
+ public:
+ void cp_members(const Basic_edge &other);
+
+ public:
+ int64_t source;
+ int64_t target;
+
+ int64_t id;
+ double cost;
+};
+
+} // namespace pgrouting
+
+#endif // INCLUDE_CPP_COMMON_BASIC_EDGE_H_
diff --git a/include/cpp_common/basic_vertex.h b/include/cpp_common/basic_vertex.h
new file mode 100644
index 0000000..632c948
--- /dev/null
+++ b/include/cpp_common/basic_vertex.h
@@ -0,0 +1,84 @@
+/*PGR-GNU*****************************************************************
+ *
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_BASIC_VERTEX_H_
+#define INCLUDE_CPP_COMMON_BASIC_VERTEX_H_
+#pragma once
+
+#include <vector>
+#include <ostream>
+
+#include "c_types/pgr_edge_t.h"
+
+
+
+namespace pgrouting {
+
+class Basic_vertex {
+ public:
+ Basic_vertex() :
+ id(0) {}
+ Basic_vertex(const Basic_vertex &v) :
+ id(v.id) {}
+
+ explicit Basic_vertex(const int64_t _id) :
+ id(_id) {}
+
+ Basic_vertex(const pgr_edge_t &other, bool is_source) :
+ id(is_source? other.source : other.target) {}
+
+ void cp_members(const Basic_vertex &other) {
+ this->id = other.id;
+ }
+
+
+ friend std::ostream& operator<<(std::ostream& log, const Basic_vertex &v);
+ public:
+ int64_t id;
+ size_t vertex_index;
+};
+
+size_t check_vertices(std::vector < Basic_vertex > vertices);
+
+
+std::vector < Basic_vertex > extract_vertices(
+ std::vector < Basic_vertex > vertices,
+ const pgr_edge_t *data_edges, int64_t count);
+
+std::vector < Basic_vertex > extract_vertices(
+ std::vector < Basic_vertex > vertices,
+ const std::vector < pgr_edge_t > data_edges);
+
+std::vector < Basic_vertex > extract_vertices(
+ const pgr_edge_t *data_edges, int64_t count);
+
+std::vector < Basic_vertex > extract_vertices(
+ const std::vector < pgr_edge_t > data_edges);
+
+
+} // namespace pgrouting
+
+#endif // INCLUDE_CPP_COMMON_BASIC_VERTEX_H_
diff --git a/include/cpp_common/identifier.h b/include/cpp_common/identifier.h
new file mode 100644
index 0000000..e741262
--- /dev/null
+++ b/include/cpp_common/identifier.h
@@ -0,0 +1,59 @@
+/*PGR-GNU*****************************************************************
+ *
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_IDENTIFIER_H_
+#define INCLUDE_CPP_COMMON_IDENTIFIER_H_
+#pragma once
+
+#if defined(__MINGW32__) || defined(_MSC_VER)
+#include <stdint.h>
+#endif
+
+#include <ostream>
+
+namespace pgrouting {
+
+class Identifier {
+ public:
+ Identifier() = default;
+ Identifier(const Identifier &v) = default;
+ Identifier(const size_t _idx, const int64_t _id);
+
+ int64_t id() const;
+ size_t idx() const;
+ void reset_id(int64_t);
+
+ friend std::ostream& operator<<(std::ostream& log, const Identifier&);
+
+ private:
+ size_t m_idx;
+ int64_t m_id;
+};
+
+
+} // namespace pgrouting
+
+#endif // INCLUDE_CPP_COMMON_IDENTIFIER_H_
diff --git a/include/cpp_common/identifiers.hpp b/include/cpp_common/identifiers.hpp
new file mode 100644
index 0000000..699115a
--- /dev/null
+++ b/include/cpp_common/identifiers.hpp
@@ -0,0 +1,254 @@
+/*PGR-GNU*****************************************************************
+
+File: identifiers.hpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2016 Rohith Reddy
+Mail:
+
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_IDENTIFIERS_HPP_
+#define INCLUDE_CPP_COMMON_IDENTIFIERS_HPP_
+#pragma once
+
+#include <set>
+#include <algorithm>
+#include <iterator>
+#include <sstream>
+#include <iostream>
+#include <stdexcept>
+
+/* TODO(vicky)
+ * compiler check that type T is a integral type
+ */
+
+template <typename T>
+class Identifiers {
+ public:
+ typedef typename std::set<T>::iterator iterator;
+ typedef typename std::set<T>::const_iterator const_iterator;
+
+
+ //! @name constructors
+ //@{
+ Identifiers<T>() = default;
+ Identifiers<T>(const Identifiers<T>&) = default;
+ Identifiers<T>(const std::set<T>& data) {
+ m_ids = data;
+ }
+
+ /* @brief initializes with {1 ~ number}
+ *
+ * @params [in] number
+ */
+ explicit Identifiers<T>(const size_t number) {
+ size_t i(0);
+ std::generate_n(std::inserter(m_ids, m_ids.begin()),
+ number,
+ [&i](){ return i++; });
+ }
+
+ //@}
+
+ //! @name set like operators
+ //@{
+ size_t size() const {return m_ids.size(); }
+ inline bool empty() const {return m_ids.empty(); }
+ inline T front() const {return *m_ids.begin();}
+ const_iterator begin() const {return m_ids.begin();}
+ const_iterator end() const {return m_ids.end();}
+ inline void pop_front() {m_ids.erase(m_ids.begin());}
+ inline void clear() {m_ids.clear();}
+ iterator begin() {return m_ids.begin();}
+ iterator end() {return m_ids.end();}
+ //@}
+
+
+ private:
+ std::set<T> m_ids;
+
+ public:
+ //! \brief true ids() has element
+ /*!
+ * @param [in] other Identifier of type *T*
+ */
+ bool has(const T other) const {
+ return (m_ids.find(other) != m_ids.end());
+ }
+
+
+ //! \brief true when both sets are equal
+ /*!
+ * @param [in] rhs set of identifiers to be compared
+ */
+ bool operator==(const Identifiers<T> &rhs) const {
+ return std::equal(m_ids.begin(), m_ids.end(), rhs.m_ids.begin());
+ }
+
+ //! @name set UNION
+ /// @{
+
+ /*! \brief set UNION set
+ *
+ * @param[in] lhs Identifiers
+ * @param[in] rhs Identifiers
+ */
+ friend Identifiers<T> operator +(
+ const Identifiers<T> &lhs,
+ const Identifiers<T> &rhs) {
+ Identifiers<T> union_ids(lhs);
+ union_ids += rhs;
+ return union_ids;
+ }
+
+ //! \brief compound set UNION set
+ /*!
+ * @param [in] other set of identifiers
+ */
+ Identifiers<T>& operator +=(
+ const Identifiers<T> &other) {
+ m_ids.insert(other.m_ids.begin(), other.m_ids.end());
+ return *this;
+ }
+ //! \brief compound set UNION element
+ /*!
+ * @param [in] element of type *T*
+ */
+ Identifiers<T>& operator +=(const T &element) {
+ m_ids.insert(element);
+ return *this;
+ }
+
+ /// @}
+
+
+
+ //! @name set INTERSECTION
+ /// @{
+
+ /*! \brief set INTERSECTION
+ *
+ *
+ * @param[in] lhs Identifiers
+ * @param[in] rhs Identifiers
+ */
+
+ friend Identifiers<T> operator *(
+ const Identifiers<T> &lhs,
+ const Identifiers<T> &rhs) {
+ std::set<T> result;
+ std::set_intersection(
+ lhs.m_ids.begin(), lhs.m_ids.end(),
+ rhs.m_ids.begin(), rhs.m_ids.end(),
+ std::inserter(result, result.begin()));
+ return Identifiers<T>(result);
+ }
+
+ //! \brief coumpound set INTERSECTION set
+ /*!
+ * @param [in] other is a set of identifiers of type *Identifiers<T>*
+ */
+ Identifiers<T>& operator *=(
+ const Identifiers<T> &other) {
+ *this = *this * other;
+ return *this;
+ }
+
+ //! \brief compund set INTERSECTION element
+ /*!
+ * @param[in] element is an identifiers of type *T*
+ */
+ Identifiers<T>& operator *=(const T &element) {
+ if (has(element)) {
+ m_ids.clear();
+ m_ids.insert(element);
+ } else {
+ m_ids.clear();
+ }
+ return *this;
+ }
+
+ /// @}
+
+
+ //! @name set DIFFERENCE
+ /// @{
+
+ /* \brief set DIFFERENCE set
+ *
+ * @param[in] lhs Identifiers
+ * @param[in] rhs Identifiers
+ */
+ friend
+ Identifiers<T> operator -(
+ const Identifiers<T> &lhs,
+ const Identifiers<T> &rhs) {
+ std::set<T> result;
+ std::set_difference(
+ lhs.m_ids.begin(), lhs.m_ids.end(),
+ rhs.m_ids.begin(), rhs.m_ids.end(),
+ std::inserter(result, result.begin()));
+ return Identifiers<T>(result);
+ }
+
+
+
+ //! \brief compound set DIFFERENCE set
+ /*!
+ @param [in] other is a set of identifiers of type *Identifiers<T>*
+ Replaces this set with the set difference between this set and other
+ */
+ Identifiers<T>& operator -=(const Identifiers<T> &other) {
+ *this = *this - other;
+ return *this;
+ }
+
+ //! \brief compund set DIFFERENCE element
+ /*!
+ @param[in] element to be removed
+ */
+ Identifiers<T>& operator -=(const T &element) {
+ m_ids.erase(element);
+ return *this;
+ }
+
+ /// @}
+
+ //! \brief Prints the set of identifiers
+ friend
+ std::ostream&
+ operator<<(std::ostream& os, const Identifiers<T>& identifiers) {
+ os << "{";
+ for (auto identifier : identifiers.m_ids) {
+ os << identifier << ", ";
+ }
+ os << "}";
+ return os;
+ }
+
+ /// @}
+};
+
+#endif // INCLUDE_CPP_COMMON_IDENTIFIERS_HPP_
diff --git a/include/cpp_common/line_vertex.h b/include/cpp_common/line_vertex.h
new file mode 100644
index 0000000..fc50d0b
--- /dev/null
+++ b/include/cpp_common/line_vertex.h
@@ -0,0 +1,99 @@
+/*PGR-GNU*****************************************************************
+File: line_vertex.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_LINE_VERTEX_H_
+#define INCLUDE_CPP_COMMON_LINE_VERTEX_H_
+#pragma once
+
+#include <vector>
+#include <ostream>
+
+#include "c_types/pgr_edge_t.h"
+
+
+
+namespace pgrouting {
+
+class Line_vertex {
+ public:
+ Line_vertex() :
+ id(0) {}
+
+ Line_vertex(const pgr_edge_t& edge) :
+ id(edge.id),
+ vertex_id(edge.id),
+ source(edge.source),
+ target(edge.target),
+ cost(edge.cost) {}
+
+ Line_vertex(const Line_vertex &v) :
+ id(v.id),
+ vertex_id(v.vertex_id),
+ source(v.source),
+ target(v.target),
+ cost(v.cost) {}
+
+ void cp_members(const Line_vertex &other) {
+ this->id = other.id;
+ this->vertex_id = other.vertex_id;
+ this->cost = other.cost;
+ this->source = other.source;
+ this->target = other.target;
+ }
+
+ void cp_members(int64_t _id, int64_t _source) {
+ this->id = _id;
+ this->vertex_id = -1;
+ this->cost = 0;
+ this->source = _source;
+ this->target = -1;
+ }
+
+ friend std::ostream& operator<<(std::ostream& log, const Line_vertex &v) {
+ log << "\nid = " << v.id;
+ log << " | vertex_id = " << v.vertex_id;
+ log << " | source = " << v.source;
+ log << " | target = " << v.target;
+ log << " | cost = " << v.cost;
+ return log;
+ }
+
+ public:
+ int64_t id;
+ int64_t vertex_id;
+ int64_t source;
+ int64_t target;
+ double cost;
+};
+
+} // namespace pgrouting
+
+#endif // INCLUDE_CPP_COMMON_LINE_VERTEX_H_
diff --git a/include/cpp_common/path_t.h b/include/cpp_common/path_t.h
new file mode 100644
index 0000000..386c51d
--- /dev/null
+++ b/include/cpp_common/path_t.h
@@ -0,0 +1,44 @@
+/*PGR-GNU*****************************************************************
+File: path_t.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_PATH_T_H_
+#define INCLUDE_CPP_COMMON_PATH_T_H_
+#pragma once
+
+#include <stdint.h>
+
+/*
+ * This one is for processing
+ */
+struct Path_t{
+ int64_t node;
+ int64_t edge;
+ double cost;
+ double agg_cost;
+};
+
+
+#endif // INCLUDE_CPP_COMMON_PATH_T_H_
diff --git a/include/cpp_common/pgr_alloc.hpp b/include/cpp_common/pgr_alloc.hpp
new file mode 100644
index 0000000..8833382
--- /dev/null
+++ b/include/cpp_common/pgr_alloc.hpp
@@ -0,0 +1,85 @@
+/*PGR-GNU*****************************************************************
+File: pgr_palloc.hpp
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_PGR_ALLOC_HPP_
+#define INCLUDE_CPP_COMMON_PGR_ALLOC_HPP_
+#pragma once
+
+
+extern "C" {
+#if PGSQL_VERSION < 94
+#ifdef __MINGW32__
+#include <winsock2.h>
+#include <windows.h>
+#endif
+#endif
+
+#include "c_common/postgres_connection.h"
+#include "utils/palloc.h"
+}
+
+#include <string>
+
+/*! \fn pgr_alloc(std::size_t size, T *ptr)
+
+\brief allocates memory
+
+- Does a malloc or realloc depending on the ptr value
+- To be used only on C++ code
+- To be used when returning results to postgres
+- free must occur in the C code
+
+\param[in] size
+\param[in] ptr
+\returns pointer to the first byte of allocated space
+
+ */
+
+
+template <typename T>
+T*
+pgr_alloc(std::size_t size, T* ptr) {
+ if (!ptr) {
+ ptr = static_cast<T*>(SPI_palloc(size * sizeof(T)));
+ } else {
+ ptr = static_cast<T*>(SPI_repalloc(ptr, size * sizeof(T)));
+ }
+ return ptr;
+}
+
+template <typename T>
+T*
+pgr_free(T* ptr) {
+ if (ptr) {
+ pfree(ptr);
+ }
+ return nullptr;
+}
+
+char *
+pgr_msg(const std::string &msg);
+
+#endif // INCLUDE_CPP_COMMON_PGR_ALLOC_HPP_
diff --git a/include/cpp_common/pgr_assert.h b/include/cpp_common/pgr_assert.h
new file mode 100644
index 0000000..3331503
--- /dev/null
+++ b/include/cpp_common/pgr_assert.h
@@ -0,0 +1,136 @@
+/*PGR-MIT******************************************************************
+ *
+ * file pgr_assert.h
+ *
+ * Copyright 2014 Stephen Woodbridge <woodbri at imaptools.com>
+ * Copyright 2014 Vicky Vergara <vicky_vergara at hotmail.com>
+ *
+ * This is free software; you can redistribute and/or modify it under
+ * the terms of the MIT License. Please file MIT-LICENSE for details.
+ *
+ *****************************************************************PGR-MIT*/
+
+#ifndef INCLUDE_CPP_COMMON_PGR_ASSERT_H_
+#define INCLUDE_CPP_COMMON_PGR_ASSERT_H_
+#pragma once
+
+#include <string>
+#include <exception>
+
+#ifdef assert
+#undef assert
+#endif
+
+
+/*! @file
+ *
+ * Assertions Handling
+ *
+ * @brief An assert functionality that uses C++ throw().
+ *
+ * This file provides an alternative to assert functionality that will
+ * convert all pgassert() into C++ throw using an AssertFailedException class.
+ *
+ * This allows catching errors and do appropriate clean up
+ * re-throw if needed to catch errors in the postgresql environment
+ *
+ * **Do not crash the backend server.**
+ */
+
+
+#ifndef __STRING
+#define __STRING(x) #x
+#endif
+
+#define __TOSTRING(x) __STRING(x)
+
+
+/*! @def pgassert(expr)
+ * @brief Uses the standard assert syntax.
+ *
+ * When an assertion fails it will throw \ref AssertFailedException and what()
+ * will return a string like "AssertFailedException(2+2 == 5) at t.cpp:11"
+ *
+ * Example:
+ * @code
+ #include <iostream>
+ #include "pgr_assert.h"
+
+ int main() {
+
+ try {
+ pgassert(2+2 == 4);
+ pgassert(2+2 == 5);
+ }
+ catch (AssertFailedException &e) {
+ std::cout << e.what() << "\n";
+ }
+ catch (std::exception& e) {
+ std::cout << e.what() << "\n";
+ }
+ catch(...) {
+ std::cout << "Caught unknown exception!\n";
+ }
+ return 0;
+ }
+ @endcode
+ */
+#ifdef NDEBUG
+#define pgassert(expr) ((void)0)
+#else
+#define pgassert(expr) \
+ ((expr) \
+ ? static_cast<void>(0) \
+ : throw AssertFailedException( \
+ "AssertFailedException: " __STRING(expr) \
+ " at " __FILE__ ":" __TOSTRING(__LINE__) + get_backtrace() ) )
+#endif
+
+/*! @def pgassertwm(expr, msg)
+ @brief Adds a message to the assertion.
+
+ Example:
+ @code
+ pgassert(2+2 == 5, "Expected a 4 as result");
+ std::ostringstream log;
+ log << "Expected a 4 as result"
+ pgassert(2+2 == 5, log.str());
+ @endcode
+*/
+
+#ifdef NDEBUG
+#define pgassertwm(expr, msg) ((void)0)
+#else
+#define pgassertwm(expr, msg) \
+ ((expr) \
+ ? static_cast<void>(0) \
+ : throw AssertFailedException( \
+ "AssertFailedException: " __STRING(expr) \
+ " at " __FILE__ ":" __TOSTRING(__LINE__) + get_backtrace(msg) ) )
+#endif
+
+/*! @brief returns the execution path of the trace
+
+ In case of a failed exception the backtrace can be is shown in the error message.
+
+ Does not work for windows, please read:
+ http://stackoverflow.com/questions/27639931/can-not-find-execinfo-h-when-setup-malpack
+
+ */
+std::string get_backtrace();
+std::string get_backtrace(const std::string &);
+
+/*! @class AssertFailedException
+ * @brief Extends std::exception and is the exception that we throw if an assert fails.
+ */
+class AssertFailedException : public std::exception {
+ private:
+ const std::string str; ///< Holds what() we got as message
+
+ public:
+ virtual const char *what() const throw();
+ explicit AssertFailedException(std::string msg);
+ virtual ~AssertFailedException() throw() {}
+};
+
+#endif // INCLUDE_CPP_COMMON_PGR_ASSERT_H_
diff --git a/include/cpp_common/pgr_base_graph.hpp b/include/cpp_common/pgr_base_graph.hpp
new file mode 100644
index 0000000..fcfc689
--- /dev/null
+++ b/include/cpp_common/pgr_base_graph.hpp
@@ -0,0 +1,953 @@
+/*PGR-GNU*****************************************************************
+ *
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_PGR_BASE_GRAPH_HPP_
+#define INCLUDE_CPP_COMMON_PGR_BASE_GRAPH_HPP_
+#pragma once
+
+#include <boost/graph/iteration_macros.hpp>
+#include <boost/config.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/graph/graph_utility.hpp>
+
+#include <deque>
+#include <vector>
+#include <set>
+#include <map>
+#include <limits>
+
+#include "c_types/graph_enum.h"
+
+#include "cpp_common/basic_vertex.h"
+#include "cpp_common/xy_vertex.h"
+#include "cpp_common/basic_edge.h"
+
+#include "cpp_common/pgr_assert.h"
+
+namespace pgrouting {
+
+/*! @brief boost::graph simplified to pgRouting needs
+
+ This class gives the handling basics of a boost::graph of kind G
+ where G:
+ can be an undirected graph or a directed graph.
+
+Requiremets:
+============
+
+A vertex class T_V
+------------------
+
+Current Available vertex classes:
+- Basic_vertex
+- XY_vertex
+
+
+An edge class T_E
+-----------------
+
+Current Available edge classes:
+- Basic_edge
+
+extract_vertices function
+-------------------------
+
+Data obtained from postgresql is stored in
+A C array of pgr_edge_t type.
+
+~~~~{.c}
+std::vector< T_V >
+extract_vertices(pgr_edge_t *, size_t)
+~~~~
+
+
+Data obtained from postgresql is stored in
+o a vector container.
+
+~~~~{.c}
+std::vector< T_V >
+extract_vertices(std::vector< pgr_edge_t >)
+~~~~
+
+Boost Graph
+-------------
+
+The code is prepared to be used for:
+- boost::adjacency_list graph type
+- boost::undirectedS when the graph is UNDIRECTED
+- boost::bidirectionalS when the graph is DIRECTED
+
+
+~~~~{.c}
+boost::adjacency_list
+< boost::vecS, // not tested with other values
+boost::vecS, // not tested with other values
+boost::undirectedS, // USinG UNDIRECTED
+Basic_vertex, // the vertex class
+Basic_edge > // the edge class
+~~~~
+
+
+
+Example Usage:
+=============
+
+For this example we will use:
+- Basic_vertex
+- Basic_edge
+- pgr_edge_t
+
+
+Create Graph type
+-----------------
+
+~~~~{.c}
+typedef typename
+graph::Pgr_base_graph <
+boost::adjacency_list <
+boost::vecS,
+ boost::vecS,
+ boost::bidirectionalS,
+ Basic_vertex,
+ Basic_edge >,
+ Basic_vertex,
+ Basic_edge >
+
+ DirectedGraph;
+~~~~
+
+
+Initializing the graph
+------------------------------
+
+Graph initialization is for seting the Vertices of the graph.
+
+//TODO discuss if also the edges
+
+Vector of unique vertices of the graph
+~~~~{.c}
+size_t total_edges;
+pgr_edge_t *my_edges = NULL;
+pgr_get_edges(edges_sql, &my_edges, &total_tuples);
+std::vector< Basic_Vertex > vertices(pgrouting::extract_vertices(my_edges));
+~~~~
+
+There are several ways to initialize the graph
+
+~~~~{.c}
+// 1. Initializes an empty graph
+pgrouting::DirectedGraph digraph(gType);
+
+// 2. Initializes a graph based on the vertices
+pgrouting::DirectedGraph digraph(
+ verices,
+ gType);
+vertices.clear();
+
+3. Initializes a graph based on the extracted vertices
+pgrouting::DirectedGraph digraph(
+ pgrouting::extract_vertices(my_edges, total_edges);
+ gType);
+
+4. Initializes a graph based on the extracted vertices
+pgrouting::DirectedGraph digraph(
+ pgrouting::extract_vertices(my_edges);
+ gType);
+~~~~
+
+1. Initializes an empty graph
+ - vertices vector size is 0
+
+2. Initializes a graph based on the vertices:
+ - vertices vector size is vertices.size()
+ - the vertices are inserted
+ - vertices container can be clared to free memory
+
+3. Initializes a graph based on the vertices extracted
+ - from edges stored on a C array
+ - the vertices are inserted
+
+4. Initializes a graph based on the vertices extracted
+ - from edges stored on a vector
+ - the vertices are inserted
+
+
+Fill the graph
+---------------------
+
+After initializing the graph with the vertices, the edges can be added.
+
+~~~~{.c}
+// inserting edges from a C array
+digraph.insert_edges(my_edges, total_edges);
+
+// adding more edges to the graph from a vector container
+digraph.insert_edges(new_edges);
+~~~~
+
+*/
+
+namespace graph {
+template <class G, typename Vertex, typename Edge>
+class Pgr_base_graph;
+
+} // namespace graph
+
+
+/** @name Graph types
+ Type | pgRouting
+ :---------: | :---------------------
+ UndirectedGraph | Basic undirected graph
+ DirectedGraph | Basic directed graph
+ xyUndirectedGraph | X & Y values stored on the vertex
+ xyDirectedGraph | X & Y values stored on the vertex
+ */
+//@{
+typedef graph::Pgr_base_graph <
+boost::adjacency_list < boost::vecS, boost::vecS,
+ boost::undirectedS,
+ Basic_vertex, Basic_edge >,
+ Basic_vertex, Basic_edge > UndirectedGraph;
+
+typedef graph::Pgr_base_graph <
+boost::adjacency_list < boost::vecS, boost::vecS,
+ boost::bidirectionalS,
+ Basic_vertex, Basic_edge >,
+ Basic_vertex, Basic_edge > DirectedGraph;
+
+typedef graph::Pgr_base_graph <
+boost::adjacency_list < boost::listS, boost::vecS,
+ boost::undirectedS,
+ XY_vertex, Basic_edge >,
+ XY_vertex, Basic_edge > xyUndirectedGraph;
+
+typedef graph::Pgr_base_graph <
+boost::adjacency_list < boost::listS, boost::vecS,
+ boost::bidirectionalS,
+ XY_vertex, Basic_edge >,
+ XY_vertex, Basic_edge > xyDirectedGraph;
+
+//@}
+
+
+namespace graph {
+
+template <class G, typename T_V, typename T_E>
+class Pgr_base_graph {
+ public:
+ /** @name Graph related types
+ Type | boost meaning | pgRouting meaning
+ :---------: | :-------------------- | :----------------------
+ G | boost::adjacency_list | Graph
+ V | vertex_descriptor | Think of it as local ID of a vertex
+ E | edge_descriptor | Think of it as local ID of an edge
+ V_i | vertex_iterator | To cycle the vertices of the Graph
+ E_i | edge_iterator | To cycle the edges of the Graph
+ EO_i | out_edge_iterator | To cycle the out going edges of a vertex
+ EI_i | in_edge_iterator | To cycle the in coming edges of a vertex (only in bidirectional graphs)
+ */
+ //@{
+ typedef G B_G;
+ typedef T_E G_T_E;
+ typedef T_V G_T_V;
+ typedef typename boost::graph_traits < G >::vertex_descriptor V;
+ typedef typename boost::graph_traits < G >::edge_descriptor E;
+ typedef typename boost::graph_traits < G >::vertex_iterator V_i;
+ typedef typename boost::graph_traits < G >::edge_iterator E_i;
+ typedef typename boost::graph_traits < G >::out_edge_iterator EO_i;
+ typedef typename boost::graph_traits < G >::in_edge_iterator EI_i;
+
+ typedef typename boost::graph_traits < G >::vertices_size_type
+ vertices_size_type;
+ typedef typename boost::graph_traits < G >::edges_size_type
+ edges_size_type;
+ typedef typename boost::graph_traits < G >::degree_size_type
+ degree_size_type;
+
+ //@}
+
+ /** @name Id handling related types
+ Type | Meaning | pgRouting Meaning
+ :---------: | :------------- | :----------------------
+ id_to_V | maps id -> V | given an id store the V
+ LI | Left Iterator | iterates over id_to_V
+ */
+ //@{
+
+ typedef typename std::map< int64_t, V > id_to_V;
+ typedef typename id_to_V::const_iterator LI;
+
+ //@}
+
+ //! @name The Graph
+ //@{
+ G graph; //!< The graph
+ size_t m_num_vertices; //!< local count.
+ graphType m_gType; //!< type (DIRECTED or UNDIRECTED)
+ //@}
+
+ //! @name Id mapping handling
+ //@{
+
+ id_to_V vertices_map; //!< id -> graph id
+
+ typename boost::property_map<G, boost::vertex_index_t>::type vertIndex;
+
+ typedef std::map<V, size_t> IndexMap;
+ IndexMap mapIndex;
+ boost::associative_property_map<IndexMap> propmapIndex;
+
+ //@}
+
+ //! @name Graph Modification
+ //@{
+ //! Used for storing the removed_edges
+
+ std::deque< T_E > removed_edges;
+
+ //@}
+
+
+
+ //! @name The Graph
+ //@{
+ //! @brief Constructor
+ /*!
+ - Prepares the graph to be of type gtype
+ - inserts the vertices
+ - The vertices must be checked (if necessary) before calling the constructor
+ */
+ Pgr_base_graph< G , T_V, T_E >(
+ const std::vector< T_V > &vertices, graphType gtype)
+ : graph(vertices.size()),
+ m_num_vertices(vertices.size()),
+ m_gType(gtype),
+ vertIndex(boost::get(boost::vertex_index, graph)),
+ propmapIndex(mapIndex) {
+ //add_vertices(vertices);
+ // This code does not work with contraction
+#if 0
+ pgassert(pgrouting::check_vertices(vertices) == 0);
+#endif
+ size_t i = 0;
+ for (auto vi = boost::vertices(graph).first;
+ vi != boost::vertices(graph).second; ++vi) {
+ vertices_map[vertices[i].id] = (*vi);
+ graph[(*vi)].cp_members(vertices[i]);
+ //put(propmapIndex, *vi, num_vertices());
+ pgassert(vertIndex[*vi] == i);
+ ++i;
+ }
+
+ std::ostringstream log;
+ for (auto iter = vertices_map.begin(); iter != vertices_map.end(); iter++) {
+ log << "Key: " << iter->first <<"\tValue:" << iter->second << "\n";
+ }
+ for (const auto vertex : vertices) {
+ pgassert(has_vertex(vertex.id));
+ }
+ //pgassert(mapIndex.size() == vertices.size());
+ }
+
+ /*!
+ Prepares the _graph_ to be of type gtype with 0 vertices
+ */
+ explicit Pgr_base_graph< G , T_V, T_E >(graphType gtype)
+ : graph(0),
+ m_num_vertices(0),
+ m_gType(gtype),
+ vertIndex(boost::get(boost::vertex_index, graph)),
+ propmapIndex(mapIndex) {
+ }
+
+
+ //! @name Insert edges
+ //@{
+ /*! @brief Inserts *count* edges of type *T* into the graph
+ *
+ * Converts the edges to a std::vector<T> & calls the overloaded
+ * twin function.
+ *
+ * @param edges
+ * @param count
+ */
+ template < typename T >
+ void insert_edges(const T *edges, int64_t count) {
+ insert_edges(std::vector < T >(edges, edges + count));
+ }
+
+ template < typename T>
+ void insert_edges(T *edges, int64_t count, bool) {
+ for (int64_t i = 0; i < count; ++i) {
+ pgassert(has_vertex(edges[i].source));
+ pgassert(has_vertex(edges[i].target));
+ graph_add_edge_no_create_vertex(edges[i]);
+ }
+ }
+
+
+ /*! @brief Inserts *count* edges of type *pgr_edge_t* into the graph
+
+ The set of edges should not have an illegal vertex defined
+
+ When the graph is empty calls:
+ - @b extract_vertices
+ and throws an exception if there are illegal vertices.
+
+
+ When developing:
+ - if an illegal vertex is found an exception is thrown
+ - That means that the set of vertices should be checked in the
+ code that is being developed
+
+ No edge is inserted when there is an error on the vertices
+
+ @param edges
+ */
+ template < typename T >
+ void insert_edges(const std::vector < T > &edges) {
+#if 0
+ // This code does not work with contraction
+ if (num_vertices() == 0) {
+ auto vertices = pgrouting::extract_vertices(edges);
+ pgassert(pgrouting::check_vertices(vertices) == 0);
+ add_vertices(vertices);
+ }
+#endif
+ for (const auto edge : edges) {
+ graph_add_edge(edge);
+ }
+ }
+ //@}
+
+ private:
+ /*! @brief adds the vertices into the graph
+ *
+ * PRECONDITIONS:
+ * - The graph has not being initialized before
+ * - There are no dupicated vertices
+ *
+ * ~~~~~{.c}
+ * precondition(boost::num_vertices(graph) == 0);
+ * for (vertex : vertices)
+ * precondition(!has_vertex(vertex.id));
+ * ~~~~~
+ *
+ *
+ * POSTCONDITIONS:
+ * ~~~~~{.c}
+ * postcondition(boost::num_vertices(graph) == vertices.size());
+ * for (vertex : vertices)
+ * postcondition(has_vertex(vertex.id));
+ * ~~~~~
+ *
+ * Example use:
+ *
+ * ~~~~~{.c}
+ * pgrouting::DirectedGraph digraph(gType);
+ * auto vertices(pgrouting::extract_vertices(data_edges, total_edges));
+ * digraph.add_vertices(vertices);
+ * ~~~~~
+ *
+ */
+ void add_vertices(
+ std::vector< T_V > vertices) {
+ pgassert(m_num_vertices == 0);
+ for (const auto vertex : vertices) {
+ pgassert(!has_vertex(vertex.id));
+
+ auto v = add_vertex(graph);
+ vertices_map[vertex.id] = v;
+ graph[v].cp_members(vertex);
+ //put(propmapIndex, v, num_vertices());
+
+ pgassert(has_vertex(vertex.id));
+ }
+ //pgassert(mapIndex.size() == vertices.size());
+ pgassert(num_vertices() == vertices.size());
+ }
+
+
+ public:
+ //! @name boost wrappers with original id
+ //@{
+ //! @brief get the out-degree of a vertex
+
+ /*!
+ @returns 0: The out degree of a vertex that its not in the graph
+
+ @param [in] vertex_id original vertex id
+ */
+ degree_size_type out_degree(int64_t vertex_id) const {
+ if (!has_vertex(vertex_id)) {
+ return 0;
+ }
+ return out_degree(get_V(vertex_id));
+ }
+ degree_size_type in_degree(int64_t vertex_id) const {
+ if (!has_vertex(vertex_id)) {
+ return 0;
+ }
+ return is_directed()?
+ in_degree(get_V(vertex_id))
+ : out_degree(get_V(vertex_id));
+ }
+
+
+ /*! @brief get the vertex descriptor of the vertex
+
+ When the vertex does not exist
+ - creates a new vetex
+
+ @return V: The vertex descriptor of the vertex
+ */
+ V get_V(const T_V &vertex) {
+ auto vm_s(vertices_map.find(vertex.id));
+ if (vm_s == vertices_map.end()) {
+ auto v = add_vertex(graph);
+ graph[v].cp_members(vertex);
+ vertices_map[vertex.id] = v;
+ put(propmapIndex, v, m_num_vertices++);
+ return v;
+ }
+ return vm_s->second;
+ }
+
+ /*! @brief get the vertex descriptor of the vid
+
+ Call has_vertex(vid) before calling this function
+
+ @return V: The vertex descriptor of the vertex
+ */
+ V get_V(int64_t vid) const {
+ pgassert(has_vertex(vid));
+ return vertices_map.find(vid)->second;
+ }
+
+ //! @brief True when vid is in the graph
+ bool has_vertex(int64_t vid) const {
+ return vertices_map.find(vid) != vertices_map.end();
+ }
+
+
+
+ //! @name to be or not to be
+ //@{
+
+ bool is_directed() const {return m_gType == DIRECTED;}
+ bool is_undirected() const {return m_gType == UNDIRECTED;}
+ bool is_source(V v_idx, E e_idx) const {return v_idx == source(e_idx);}
+ bool is_target(V v_idx, E e_idx) const {return v_idx == target(e_idx);}
+
+ //@}
+
+ //! @name boost wrappers with V
+ //@{
+
+
+ T_E& operator[](E e_idx) {return graph[e_idx];}
+ const T_E& operator[](E e_idx) const {return graph[e_idx];}
+
+ T_V& operator[](V v_idx) {return graph[v_idx];}
+ const T_V& operator[](V v_idx) const {return graph[v_idx];}
+
+ V source(E e_idx) const {return boost::source(e_idx, graph);}
+ V target(E e_idx) const {return boost::target(e_idx, graph);}
+ V adjacent(V v_idx, E e_idx) const {
+ pgassert(is_source(v_idx, e_idx) || is_target(v_idx, e_idx));
+ return is_source(v_idx, e_idx)?
+ target(e_idx) :
+ source(e_idx);
+ }
+
+
+ /*! @brief in degree of a vertex
+ *
+ * - when its undirected there is no "concept" of in degree
+ * - out degree is returned
+ * - on directed in degree of vertex is returned
+ */
+ degree_size_type in_degree(V &v) const {
+ return is_directed()?
+ boost::in_degree(v, graph) :
+ boost::out_degree(v, graph);
+ }
+
+ /*! @brief out degree of a vertex
+ *
+ * regardles of undirected or directed graph
+ * - out degree is returned
+ */
+ degree_size_type out_degree(V &v) const {
+ return boost::out_degree(v, graph);
+ }
+
+ //@}
+
+
+ //! @name edge disconection/reconnection
+ //@{
+ //! @brief Disconnects all edges from p_from to p_to
+ /*!
+
+ - No edge is disconnected if the vertices id's do not exist in the graph
+ - All removed edges are stored for future reinsertion
+ - All parallel edges are disconnected (automatically by boost)
+
+ 
+ 
+
+ @param [in] p_from original vertex id of the starting point of the edge
+ @param [in] p_to original vertex id of the ending point of the edge
+ */
+ void disconnect_edge(int64_t p_from, int64_t p_to);
+
+
+ //! @brief Disconnects the outgoing edges of a vertex
+ /*!
+
+ - No edge is disconnected if it doesn't exist in the graph
+ - Removed edges are stored for future reinsertion
+ - all outgoing edges with the edge_id are removed if they exist
+
+ @param [in] vertex_id original vertex
+ @param [in] edge_id original edge_id
+ */
+ void disconnect_out_going_edge(int64_t vertex_id, int64_t edge_id);
+
+
+
+
+ //! @brief Disconnects all incoming and outgoing edges from the vertex
+ /*!
+ boost::graph doesn't recommend th to insert/remove vertices, so a vertex removal is
+ simulated by disconnecting the vertex from the graph
+
+ - No edge is disconnected if the vertices id's do not exist in the graph
+ - All removed edges are stored for future reinsertion
+ - All parallel edges are disconnected (automatically by boost)
+
+ 
+ 
+
+ @param [in] p_vertex original vertex id of the starting point of the edge
+ */
+ void disconnect_vertex(int64_t p_vertex);
+ void disconnect_vertex(V vertex);
+
+
+ //! @brief Reconnects all edges that were removed
+ void restore_graph();
+
+ //@}
+
+ //! @name only for stand by program
+ //@{
+
+ friend std::ostream& operator<<(
+ std::ostream &log, const Pgr_base_graph< G, T_V, T_E > &g) {
+ typename Pgr_base_graph< G, T_V, T_E >::EO_i out, out_end;
+
+ for (auto vi = vertices(g.graph).first;
+ vi != vertices(g.graph).second; ++vi) {
+ if ((*vi) >= g.m_num_vertices) break;
+ log << (*vi) << ": " << " out_edges_of(" << g.graph[(*vi)] << "):";
+ for (boost::tie(out, out_end) = out_edges(*vi, g.graph);
+ out != out_end; ++out) {
+ log << ' '
+ << g.graph[*out].id << "=("
+ << g[g.source(*out)].id << ", "
+ << g[g.target(*out)].id << ") = "
+ << g.graph[*out].cost <<"\t";
+ }
+ log << std::endl;
+ }
+ return log;
+ }
+
+ //@}
+
+
+ int64_t get_edge_id(V from, V to, double &distance) const;
+
+ size_t num_vertices() const { return boost::num_vertices(graph);}
+
+
+ void graph_add_edge(const T_E &edge);
+
+ template < typename T >
+ void graph_add_edge(const T &edge);
+
+
+ /** Use this function when the vertices are already inserted in the graph */
+ template < typename T>
+ void graph_add_edge_no_create_vertex(const T &edge) {
+ bool inserted;
+ E e;
+ if ((edge.cost < 0) && (edge.reverse_cost < 0))
+ return;
+
+#if 0
+ std::ostringstream log;
+ for (auto iter = vertices_map.begin(); iter != vertices_map.end(); iter++) {
+ log << "Key: " << iter->first <<"\tValue:" << iter->second << "\n";
+ }
+ pgassertwm(has_vertex(edge.source), log.str().c_str());
+ pgassert(has_vertex(edge.target));
+#endif
+
+ auto vm_s = get_V(edge.source);
+ auto vm_t = get_V(edge.target);
+
+
+ if (edge.cost >= 0) {
+ boost::tie(e, inserted) =
+ boost::add_edge(vm_s, vm_t, graph);
+ graph[e].cost = edge.cost;
+ graph[e].id = edge.id;
+ }
+
+ if (edge.reverse_cost >= 0
+ && (is_directed() || (is_undirected() && edge.cost != edge.reverse_cost))) {
+ boost::tie(e, inserted) =
+ boost::add_edge(vm_t, vm_s, graph);
+ graph[e].cost = edge.reverse_cost;
+ graph[e].id = edge.id;
+ }
+ }
+};
+
+
+
+
+template < class G, typename T_V, typename T_E >
+void
+Pgr_base_graph< G, T_V, T_E >::disconnect_edge(int64_t p_from, int64_t p_to) {
+ T_E d_edge;
+
+ // nothing to do, the vertex doesn't exist
+ if (!has_vertex(p_from) || !has_vertex(p_to)) return;
+
+ EO_i out, out_end;
+ V g_from(get_V(p_from));
+ V g_to(get_V(p_to));
+
+ // store the edges that are going to be removed
+ for (boost::tie(out, out_end) = out_edges(g_from, graph);
+ out != out_end; ++out) {
+ if (target(*out) == g_to) {
+ d_edge.id = graph[*out].id;
+ d_edge.source = graph[source(*out)].id;
+ d_edge.target = graph[target(*out)].id;
+ d_edge.cost = graph[*out].cost;
+ removed_edges.push_back(d_edge);
+ }
+ }
+ // the actual removal
+ boost::remove_edge(g_from, g_to, graph);
+}
+
+
+
+template < class G, typename T_V, typename T_E >
+void
+Pgr_base_graph< G, T_V, T_E >::disconnect_out_going_edge(
+ int64_t vertex_id, int64_t edge_id) {
+ T_E d_edge;
+
+ // nothing to do, the vertex doesn't exist
+ if (!has_vertex(vertex_id)) return;
+ auto v_from(get_V(vertex_id));
+
+ EO_i out, out_end;
+ bool change = true;
+ // store the edge that are going to be removed
+ while (change) {
+ change = false;
+ for (boost::tie(out, out_end) = out_edges(v_from, graph);
+ out != out_end; ++out) {
+ if (graph[*out].id == edge_id) {
+ d_edge.id = graph[*out].id;
+ d_edge.source = graph[source(*out)].id;
+ d_edge.target = graph[target(*out)].id;
+ d_edge.cost = graph[*out].cost;
+ removed_edges.push_back(d_edge);
+ boost::remove_edge((*out), graph);
+ change = true;
+ break;
+ }
+ }
+ }
+}
+
+
+template < class G, typename T_V, typename T_E >
+void
+Pgr_base_graph< G, T_V, T_E >::disconnect_vertex(int64_t vertex) {
+ if (!has_vertex(vertex)) return;
+ disconnect_vertex(get_V(vertex));
+}
+
+template < class G, typename T_V, typename T_E >
+void
+Pgr_base_graph< G, T_V, T_E >::disconnect_vertex(V vertex) {
+ T_E d_edge;
+
+ EO_i out, out_end;
+ // store the edges that are going to be removed
+ for (boost::tie(out, out_end) = out_edges(vertex, graph);
+ out != out_end; ++out) {
+ d_edge.id = graph[*out].id;
+ d_edge.source = graph[source(*out)].id;
+ d_edge.target = graph[target(*out)].id;
+ d_edge.cost = graph[*out].cost;
+ removed_edges.push_back(d_edge);
+ }
+
+ // special case
+ if (m_gType == DIRECTED) {
+ EI_i in, in_end;
+ for (boost::tie(in, in_end) = in_edges(vertex, graph);
+ in != in_end; ++in) {
+ d_edge.id = graph[*in].id;
+ d_edge.source = graph[source(*in)].id;
+ d_edge.target = graph[target(*in)].id;
+ d_edge.cost = graph[*in].cost;
+ removed_edges.push_back(d_edge);
+ }
+ }
+
+ // delete incoming and outgoing edges from the vertex
+ boost::clear_vertex(vertex, graph);
+}
+
+template < class G, typename T_V, typename T_E >
+void
+Pgr_base_graph< G, T_V, T_E >::restore_graph() {
+ while (removed_edges.size() != 0) {
+ graph_add_edge(removed_edges[0]);
+ removed_edges.pop_front();
+ }
+}
+
+
+template < class G, typename T_V, typename T_E >
+int64_t
+Pgr_base_graph< G, T_V, T_E >::get_edge_id(
+ V from,
+ V to,
+ double &distance) const {
+ E e;
+ EO_i out_i, out_end;
+ V v_source, v_target;
+ double minCost = (std::numeric_limits<double>::max)();
+ int64_t minEdge = -1;
+ for (boost::tie(out_i, out_end) = boost::out_edges(from, graph);
+ out_i != out_end; ++out_i) {
+ e = *out_i;
+ v_target = target(e);
+ v_source = source(e);
+ if ((from == v_source) && (to == v_target)
+ && (distance == graph[e].cost))
+ return graph[e].id;
+ if ((from == v_source) && (to == v_target)
+ && (minCost > graph[e].cost)) {
+ minCost = graph[e].cost;
+ minEdge = graph[e].id;
+ }
+ }
+ distance = minEdge == -1? 0: minCost;
+ return minEdge;
+}
+
+
+template < class G, typename T_V, typename T_E >
+void
+Pgr_base_graph< G, T_V, T_E >::graph_add_edge(const T_E &edge ) {
+ bool inserted;
+ typename Pgr_base_graph< G, T_V, T_E >::LI vm_s, vm_t;
+ typename Pgr_base_graph< G, T_V, T_E >::E e;
+
+ vm_s = vertices_map.find(edge.source);
+ if (vm_s == vertices_map.end()) {
+ vertices_map[edge.source]= m_num_vertices;
+ vm_s = vertices_map.find(edge.source);
+ }
+
+ vm_t = vertices_map.find(edge.target);
+ if (vm_t == vertices_map.end()) {
+ vertices_map[edge.target]= m_num_vertices;
+ vm_t = vertices_map.find(edge.target);
+ }
+
+ if (edge.cost >= 0) {
+ boost::tie(e, inserted) =
+ boost::add_edge(vm_s->second, vm_t->second, graph);
+ graph[e].cp_members(edge);
+ }
+}
+
+
+template < class G, typename T_V, typename T_E >
+template < typename T>
+void
+Pgr_base_graph< G, T_V, T_E >::graph_add_edge(const T &edge) {
+ bool inserted;
+ typename Pgr_base_graph< G, T_V, T_E >::E e;
+ if ((edge.cost < 0) && (edge.reverse_cost < 0))
+ return;
+
+ /*
+ * true: for source
+ * false: for target
+ */
+ auto vm_s = get_V(T_V(edge, true));
+ auto vm_t = get_V(T_V(edge, false));
+
+ pgassert(vertices_map.find(edge.source) != vertices_map.end());
+ pgassert(vertices_map.find(edge.target) != vertices_map.end());
+ if (edge.cost >= 0) {
+ boost::tie(e, inserted) =
+ boost::add_edge(vm_s, vm_t, graph);
+ graph[e].cost = edge.cost;
+ graph[e].id = edge.id;
+ }
+
+ if (edge.reverse_cost >= 0) {
+ boost::tie(e, inserted) =
+ boost::add_edge(vm_t, vm_s, graph);
+
+ graph[e].cost = edge.reverse_cost;
+ graph[e].id = edge.id;
+ }
+}
+
+
+/****************** PRIVATE *******************/
+
+} // namespace graph
+} // namespace pgrouting
+#endif // INCLUDE_CPP_COMMON_PGR_BASE_GRAPH_HPP_
diff --git a/include/cpp_common/pgr_bidirectional.hpp b/include/cpp_common/pgr_bidirectional.hpp
new file mode 100644
index 0000000..35d8bcd
--- /dev/null
+++ b/include/cpp_common/pgr_bidirectional.hpp
@@ -0,0 +1,242 @@
+/*PGR-GNU*****************************************************************
+File: pgr_bdAstar.hpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_PGR_BIDIRECTIONAL_HPP_
+#define INCLUDE_CPP_COMMON_PGR_BIDIRECTIONAL_HPP_
+#pragma once
+
+
+#include <boost/config.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/graph/dijkstra_shortest_paths.hpp>
+
+#include <string>
+#include <queue>
+#include <utility>
+#include <vector>
+#include <limits>
+#include <functional>
+
+
+#include "cpp_common/pgr_assert.h"
+
+#include "cpp_common/basePath_SSEC.hpp"
+#include "cpp_common/pgr_base_graph.hpp"
+
+
+namespace pgrouting {
+namespace bidirectional {
+
+
+template < typename G >
+class Pgr_bidirectional {
+ protected:
+ typedef typename G::V V;
+ typedef typename G::E E;
+
+ typedef std::pair<double, V> Cost_Vertex_pair;
+ typedef typename std::priority_queue<
+ Cost_Vertex_pair,
+ std::vector<Cost_Vertex_pair>,
+ std::greater<Cost_Vertex_pair> > Priority_queue;
+
+
+ public:
+ explicit Pgr_bidirectional(G &pgraph):
+ graph(pgraph),
+ INF((std::numeric_limits<double>::max)()) {
+ m_log << "constructor\n";
+ };
+
+ ~Pgr_bidirectional() = default;
+
+ std::string log() const {return m_log.str();}
+ void clean_log() {m_log.clear();}
+ void clear() {
+ while (!forward_queue.empty()) forward_queue.pop();
+ while (!backward_queue.empty()) backward_queue.pop();
+
+ backward_finished.clear();
+ backward_edge.clear();
+ backward_predecessor.clear();
+ backward_cost.clear();
+
+ forward_finished.clear();
+ forward_edge.clear();
+ forward_predecessor.clear();
+ forward_cost.clear();
+ }
+
+
+ protected:
+ void initialize() {
+ m_log << "initializing\n";
+ clear();
+ forward_predecessor.resize(graph.num_vertices());
+ forward_finished.resize(graph.num_vertices(), false);
+ forward_edge.resize(graph.num_vertices(), -1);
+ forward_cost.resize(graph.num_vertices(), INF);
+ std::iota(forward_predecessor.begin(), forward_predecessor.end(), 0);
+
+ backward_predecessor.resize(graph.num_vertices());
+ backward_finished.resize(graph.num_vertices(), false);
+ backward_edge.resize(graph.num_vertices(), -1);
+ backward_cost.resize(graph.num_vertices(), INF);
+ std::iota(backward_predecessor.begin(), backward_predecessor.end(), 0);
+
+ v_min_node = -1;
+ best_cost = INF;
+ }
+
+ Path bidirectional(bool only_cost) {
+ m_log << "bidir_astar\n";
+
+ Pgr_bidirectional< G >::initialize();
+
+ forward_cost[v_source] = 0;
+ forward_queue.push(std::make_pair(0.0, v_source));
+
+
+ backward_cost[v_target] = 0;
+ backward_queue.push(std::make_pair(0.0, v_target));
+
+ while (!forward_queue.empty() && !backward_queue.empty()) {
+ auto forward_node = forward_queue.top();
+ auto backward_node = backward_queue.top();
+ /*
+ * done: there is no path with lower cost
+ */
+ if (forward_node.first == INF || backward_node.first == INF) {
+ break;
+ }
+
+ /*
+ * Explore from the cheapest side
+ */
+ if (backward_node.first < forward_node.first) {
+ backward_queue.pop();
+ if (!backward_finished[backward_node.second]) {
+ explore_backward(backward_node);
+ }
+ if (found(backward_node.second)) {
+ break;
+ }
+ } else {
+ forward_queue.pop();
+ if (!forward_finished[forward_node.second]) {
+ explore_forward(forward_node);
+ }
+ if (found(forward_node.second)) {
+ break;
+ }
+ }
+ }
+
+ if (best_cost == INF) return Path();
+
+ Path forward_path(
+ graph,
+ v_source,
+ v_min_node,
+ forward_predecessor,
+ forward_cost,
+ only_cost,
+ true);
+ Path backward_path(
+ graph,
+ v_target,
+ v_min_node,
+ backward_predecessor,
+ backward_cost,
+ only_cost,
+ false);
+ m_log << forward_path;
+ backward_path.reverse();
+ m_log << backward_path;
+ forward_path.append(backward_path);
+ m_log << forward_path;
+ return forward_path;
+ }
+
+
+
+ bool found(const V &node) {
+ /*
+ * Update common node
+ */
+ if (forward_finished[node] && backward_finished[node]) {
+ if (best_cost >= forward_cost[node] + backward_cost[node]) {
+ v_min_node = node;
+ best_cost = forward_cost[node] + backward_cost[node];
+ return false;
+ } else {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ virtual
+ void explore_forward(const Cost_Vertex_pair &node) = 0;
+
+ virtual
+ void explore_backward(const Cost_Vertex_pair &node) = 0;
+
+ protected:
+ G &graph;
+ V v_source; //!< source descriptor
+ V v_target; //!< target descriptor
+ V v_min_node; //!< target descriptor
+
+ double INF; //!< infinity
+
+ mutable std::ostringstream m_log;
+ Priority_queue forward_queue;
+ Priority_queue backward_queue;
+
+ double best_cost;
+ bool cost_only;
+
+ std::vector<bool> backward_finished;
+ std::vector<int64_t> backward_edge;
+ std::vector<V> backward_predecessor;
+ std::vector<double> backward_cost;
+
+ std::vector<bool> forward_finished;
+ std::vector<int64_t> forward_edge;
+ std::vector<V> forward_predecessor;
+ std::vector<double> forward_cost;
+};
+
+} // namespace bidirectional
+} // namespace pgrouting
+
+#endif // INCLUDE_CPP_COMMON_PGR_BIDIRECTIONAL_HPP_
diff --git a/include/cpp_common/pgr_messages.h b/include/cpp_common/pgr_messages.h
new file mode 100644
index 0000000..3acb37a
--- /dev/null
+++ b/include/cpp_common/pgr_messages.h
@@ -0,0 +1,126 @@
+/*PGR-GNU*****************************************************************
+
+FILE: pgr_messages.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_PGR_MESSAGES_H_
+#define INCLUDE_CPP_COMMON_PGR_MESSAGES_H_
+#pragma once
+
+
+
+#include <string>
+#include <sstream>
+
+namespace pgrouting {
+
+class Pgr_messages {
+ public:
+ Pgr_messages() = default;
+ Pgr_messages(const Pgr_messages&) { }
+ Pgr_messages& operator=(const Pgr_messages&) {
+ return *this;
+ }
+
+ /*! @brief get_log
+ *
+ * \returns the current contents of the log and clears the log
+ *
+ */
+ std::string get_log() const;
+
+ /*! @brief get_notice
+ *
+ * @returns the current contents of the log and clears the log
+ *
+ */
+ std::string get_notice() const;
+
+ /*! @brief get_error
+ *
+ * @returns the current contents of the log and clears the log
+ */
+ bool has_error() const;
+
+ /*! @brief get_error
+ *
+ * @returns the current contents of the log and clears the log
+ *
+ */
+ std::string get_error() const;
+
+ /*! @brief clear
+ *
+ * Clears All the messages
+ *
+ */
+ void clear();
+
+#ifndef NDEBUG
+ /*! @brief get_error
+ *
+ * @returns the current contents of the log and clears the log
+ *
+ */
+ std::string get_dbglog() const;
+#endif
+
+#if 0
+ void entering(const char* function) {
+#if defined(__MINGW32__) || defined(_MSC_VER)
+#else
+ log << "ENTERING: " << function << "\n";
+#endif
+ }
+#endif
+
+
+ public:
+ /*! Stores the hint information*/
+ mutable std::ostringstream log;
+ /*! Stores the notice information*/
+ mutable std::ostringstream notice;
+ /*! Stores the error information*/
+ mutable std::ostringstream error;
+#ifndef NDEBUG
+ mutable std::ostringstream dbg_log;
+#endif
+};
+
+
+
+#if defined(__MINGW32__) || defined(_MSC_VER)
+#define ENTERING()
+#define EXITING()
+#else
+#define ENTERING() msg.log << "--> " << __PRETTY_FUNCTION__ << "\n"
+#define EXITING() msg.log << "<-- " << __PRETTY_FUNCTION__ << "\n"
+#endif
+
+
+
+} // namespace pgrouting
+
+#endif // INCLUDE_CPP_COMMON_PGR_MESSAGES_H_
diff --git a/include/cpp_common/xy_vertex.h b/include/cpp_common/xy_vertex.h
new file mode 100644
index 0000000..90668de
--- /dev/null
+++ b/include/cpp_common/xy_vertex.h
@@ -0,0 +1,104 @@
+/*PGR-GNU*****************************************************************
+ *
+
+ Copyright (c) 2015 Celia Virginia Vergara Castillo
+ vicky_vergara at hotmail.com
+
+ ------
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+/*! @file */
+
+#ifndef INCLUDE_CPP_COMMON_XY_VERTEX_H_
+#define INCLUDE_CPP_COMMON_XY_VERTEX_H_
+#pragma once
+
+#ifdef Max
+#undef Max
+#endif
+#ifdef Min
+#undef Min
+#endif
+
+#include <CGAL/Simple_cartesian.h>
+#include <vector>
+
+#include "c_types/pgr_edge_xy_t.h"
+
+
+namespace pgrouting {
+
+// typedef boost::geometry::model::d2::point_xy<double> Point;
+typedef CGAL::Simple_cartesian<double> Simple_cartasian;
+typedef Simple_cartasian::Point_2 Point;
+
+
+class XY_vertex {
+ public:
+ XY_vertex() = default;
+ XY_vertex(const XY_vertex &) = default;
+ XY_vertex(const int64_t _id, double _x, double _y) :
+ id(_id), point(_x, _y) {
+ }
+
+ XY_vertex(const Pgr_edge_xy_t &other, bool is_source) :
+ id(is_source? other.source : other.target),
+ point(is_source? Point(other.x1, other.y1) : Point(other.x2, other.y2))
+ {}
+
+
+ double x() const {return point.x();}
+ double y() const {return point.y();}
+
+ inline void cp_members(const XY_vertex &other) {
+ this->id = other.id;
+ this->point = other.point;
+ }
+
+ friend std::ostream& operator<<(std::ostream& log, const XY_vertex &v);
+ bool operator==(const XY_vertex &rhs) const;
+
+ public:
+ int64_t id;
+ Point point;
+};
+
+size_t
+check_vertices(std::vector < XY_vertex > vertices);
+
+std::vector < XY_vertex >
+extract_vertices(
+ const Pgr_edge_xy_t *data_edges, int64_t count);
+
+std::vector < XY_vertex >
+extract_vertices(
+ const std::vector < Pgr_edge_xy_t > &data_edges);
+
+#if 0
+std::vector < XY_vertex > extract_vertices(
+ std::vector < XY_vertex > vertices,
+ const Pgr_edge_xy_t *data_edges, int64_t count);
+
+std::vector < XY_vertex > extract_vertices(
+ std::vector < XY_vertex > vertices,
+ const std::vector < Pgr_edge_xy_t > data_edges);
+#endif
+
+} // namespace pgrouting
+
+#endif // INCLUDE_CPP_COMMON_XY_VERTEX_H_
diff --git a/include/dijkstra/pgr_dijkstra.hpp b/include/dijkstra/pgr_dijkstra.hpp
new file mode 100644
index 0000000..eb52436
--- /dev/null
+++ b/include/dijkstra/pgr_dijkstra.hpp
@@ -0,0 +1,855 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DIJKSTRA_PGR_DIJKSTRA_HPP_
+#define INCLUDE_DIJKSTRA_PGR_DIJKSTRA_HPP_
+#pragma once
+
+#include <boost/config.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/graph/dijkstra_shortest_paths.hpp>
+
+#include <deque>
+#include <set>
+#include <vector>
+#include <algorithm>
+#include <sstream>
+#include <functional>
+#include <limits>
+
+#include "cpp_common/basePath_SSEC.hpp"
+#include "cpp_common/pgr_base_graph.hpp"
+#if 0
+#include "./../../common/src/signalhandler.h"
+#endif
+
+
+template < class G > class Pgr_dijkstra;
+// user's functions
+// for development
+
+template < class G >
+std::deque<Path>
+pgr_drivingDistance(
+ G &graph,
+ std::vector< int64_t > start_vids,
+ double distance,
+ bool equicost,
+ std::ostringstream &log) {
+ Pgr_dijkstra< G > fn_dijkstra;
+ return fn_dijkstra.drivingDistance(
+ graph,
+ start_vids,
+ distance,
+ equicost,
+ log);
+}
+
+
+/* 1 to 1*/
+template < class G >
+Path
+pgr_dijkstra(
+ G &graph,
+ int64_t source,
+ int64_t target,
+ bool only_cost = false) {
+ Pgr_dijkstra< G > fn_dijkstra;
+ return fn_dijkstra.dijkstra(graph, source, target, only_cost);
+}
+
+
+
+
+//******************************************
+
+template < class G >
+class Pgr_dijkstra {
+ public:
+ typedef typename G::V V;
+ typedef typename G::E E;
+
+ //! @name drivingDistance
+ //@{
+ //! 1 to distance
+ Path drivingDistance(
+ G &graph,
+ int64_t start_vertex,
+ double distance) {
+ if (execute_drivingDistance(
+ graph,
+ start_vertex,
+ distance)) {
+ auto path = Path(graph,
+ start_vertex,
+ distance,
+ predecessors,
+ distances);
+
+ std::sort(path.begin(), path.end(),
+ [](const Path_t &l, const Path_t &r)
+ {return l.node < r.node;});
+ std::stable_sort(path.begin(), path.end(),
+ [](const Path_t &l, const Path_t &r)
+ {return l.agg_cost < r.agg_cost;});
+ return path;
+ }
+
+ /* The result is empty */
+ Path p(start_vertex, start_vertex);
+ p.push_back({start_vertex, -1, 0, 0});
+ return p;
+ }
+
+ // preparation for many to distance
+ std::deque< Path > drivingDistance(
+ G &graph,
+ const std::vector< int64_t > start_vertex,
+ double distance,
+ bool equicost,
+ std::ostringstream &the_log) {
+ if (equicost) {
+ auto paths = drivingDistance_with_equicost(
+ graph,
+ start_vertex,
+ distance);
+ the_log << log.str();
+ return paths;
+ } else {
+ return drivingDistance_no_equicost(
+ graph,
+ start_vertex,
+ distance);
+ }
+ }
+
+
+
+
+
+
+ //@}
+
+ //! @name Dijkstra
+ //@{
+ //! Dijkstra 1 to 1
+ Path dijkstra(
+ G &graph,
+ int64_t start_vertex,
+ int64_t end_vertex,
+ bool only_cost = false) {
+ clear();
+
+ // adjust predecessors and distances vectors
+ predecessors.resize(graph.num_vertices());
+ distances.resize(graph.num_vertices());
+
+
+ if (!graph.has_vertex(start_vertex)
+ || !graph.has_vertex(end_vertex)) {
+ return Path(start_vertex, end_vertex);
+ }
+
+ // get the graphs source and target
+ auto v_source(graph.get_V(start_vertex));
+ auto v_target(graph.get_V(end_vertex));
+
+ // perform the algorithm
+ dijkstra_1_to_1(graph, v_source, v_target);
+
+ // get the results
+ return Path(
+ graph,
+ v_source, v_target,
+ predecessors, distances,
+ only_cost, true);
+ }
+
+
+
+
+
+
+ //! Dijkstra 1 to many
+ std::deque<Path> dijkstra(
+ G &graph,
+ int64_t start_vertex,
+ const std::vector< int64_t > &end_vertex,
+ bool only_cost) {
+ // adjust predecessors and distances vectors
+ clear();
+
+ predecessors.resize(graph.num_vertices());
+ distances.resize(graph.num_vertices());
+
+ // get the graphs source and target
+ if (!graph.has_vertex(start_vertex))
+ return std::deque<Path>();
+ auto v_source(graph.get_V(start_vertex));
+
+ std::set< V > s_v_targets;
+ for (const auto &vertex : end_vertex) {
+ if (graph.has_vertex(vertex)) {
+ s_v_targets.insert(graph.get_V(vertex));
+ }
+ }
+
+ std::vector< V > v_targets(s_v_targets.begin(), s_v_targets.end());
+ // perform the algorithm
+ dijkstra_1_to_many(graph, v_source, v_targets);
+
+ std::deque< Path > paths;
+ // get the results // route id are the targets
+ paths = get_paths(graph, v_source, v_targets, only_cost);
+
+ std::stable_sort(paths.begin(), paths.end(),
+ [](const Path &e1, const Path &e2)->bool {
+ return e1.end_id() < e2.end_id();
+ });
+
+ return paths;
+ }
+
+ // preparation for many to 1
+ std::deque<Path> dijkstra(
+ G &graph,
+ const std::vector < int64_t > &start_vertex,
+ int64_t end_vertex,
+ bool only_cost) {
+ std::deque<Path> paths;
+
+ for (const auto &start : start_vertex) {
+ paths.push_back(
+ dijkstra(graph, start, end_vertex, only_cost));
+ }
+
+ std::stable_sort(paths.begin(), paths.end(),
+ [](const Path &e1, const Path &e2)->bool {
+ return e1.start_id() < e2.start_id();
+ });
+ return paths;
+ }
+
+
+ // preparation for many to many
+ std::deque<Path> dijkstra(
+ G &graph,
+ const std::vector< int64_t > &start_vertex,
+ const std::vector< int64_t > &end_vertex,
+ bool only_cost) {
+ // a call to 1 to many is faster for each of the sources
+ std::deque<Path> paths;
+ for (const auto &start : start_vertex) {
+ auto r_paths = dijkstra(graph, start, end_vertex, only_cost);
+ paths.insert(paths.begin(), r_paths.begin(), r_paths.end());
+ }
+
+ std::sort(paths.begin(), paths.end(),
+ [](const Path &e1, const Path &e2)->bool {
+ return e1.end_id() < e2.end_id();
+ });
+ std::stable_sort(paths.begin(), paths.end(),
+ [](const Path &e1, const Path &e2)->bool {
+ return e1.start_id() < e2.start_id();
+ });
+ return paths;
+ }
+
+ //@}
+
+ private:
+ //! Call to Dijkstra 1 source to 1 target
+ bool dijkstra_1_to_1(
+ G &graph,
+ V source,
+ V target) {
+ try {
+ boost::dijkstra_shortest_paths(graph.graph, source,
+ boost::predecessor_map(&predecessors[0])
+ .weight_map(get(&G::G_T_E::cost, graph.graph))
+ .distance_map(&distances[0])
+ .visitor(dijkstra_one_goal_visitor(target)));
+ } catch(found_goals &) {
+ return true;
+ } catch (boost::exception const& ex) {
+ (void)ex;
+ throw;
+ } catch (std::exception &e) {
+ (void)e;
+ throw;
+ } catch (...) {
+ throw;
+ }
+ return true;
+ }
+
+ /** Call to Dijkstra 1 to distance
+ *
+ * Used on:
+ * 1 to distance
+ * many to distance
+ * On the first call of many to distance with equi_cost
+ */
+ bool dijkstra_1_to_distance(
+ G &graph,
+ V source,
+ double distance) {
+ try {
+ boost::dijkstra_shortest_paths(graph.graph, source,
+ boost::predecessor_map(&predecessors[0])
+ .weight_map(get(&G::G_T_E::cost, graph.graph))
+ .distance_map(&distances[0])
+ .visitor(dijkstra_distance_visitor(
+ distance,
+ nodesInDistance,
+ distances)));
+ } catch(found_goals &) {
+ return true;
+ } catch (boost::exception const& ex) {
+ throw;
+ (void)ex;
+ } catch (std::exception &e) {
+ (void)e;
+ throw;
+ } catch (...) {
+ throw;
+ }
+ return true;
+ }
+
+ /** Call to Dijkstra 1 to distance no init
+ *
+ * Used on:
+ * On the subsequent calls of many to distance with equi_cost
+ */
+ bool dijkstra_1_to_distance_no_init(
+ G &graph,
+ V source,
+ double distance) {
+ pgassert(predecessors.size() == graph.num_vertices());
+ pgassert(distances.size() == graph.num_vertices());
+ distances[source] = 0;
+ std::vector<boost::default_color_type> color_map(graph.num_vertices());
+ try {
+ boost::dijkstra_shortest_paths_no_init(graph.graph, source,
+ make_iterator_property_map(
+ predecessors.begin(),
+ graph.vertIndex),
+ make_iterator_property_map(
+ distances.begin(),
+ graph.vertIndex),
+ get(&G::G_T_E::cost, graph.graph),
+ graph.vertIndex,
+ std::less<double>(),
+ boost::closed_plus<double>(),
+ static_cast<double>(0),
+ dijkstra_distance_visitor_no_init(
+ log,
+ source,
+ distance,
+ predecessors,
+ distances,
+ color_map),
+ boost::make_iterator_property_map(
+ color_map.begin(),
+ graph.vertIndex,
+ color_map[0]));
+ } catch(found_goals &) {
+ return true;
+ } catch (boost::exception const& ex) {
+ (void)ex;
+ throw;
+ } catch (std::exception &e) {
+ (void)e;
+ throw;
+ } catch (...) {
+ throw;
+ }
+
+#if 0
+ /*
+ * Expensive assertion
+ */
+ for (V v = 0 ; v < predecessors.size(); ++v) {
+ log << "(" << predecessors[v] << "==" << v << "),";
+ if (v != source) {
+ pgassertwm(predecessors[v] == v, log.str().c_str());
+ }
+ }
+#endif
+ return true;
+ }
+
+
+ /** @brief to use with driving distance
+ *
+ * Prepares the execution for a driving distance:
+ *
+ * @param graph
+ * @param start_vertex
+ * @param distance
+ *
+ * Results are kept on predecessor & distances
+ *
+ * @returns bool @b True when results are found
+ */
+ bool execute_drivingDistance(
+ G &graph,
+ int64_t start_vertex,
+ double distance) {
+ clear();
+
+ predecessors.resize(graph.num_vertices());
+ distances.resize(graph.num_vertices());
+
+ // get source;
+ if (!graph.has_vertex(start_vertex)) {
+ return false;
+ }
+
+ return dijkstra_1_to_distance(
+ graph,
+ graph.get_V(start_vertex),
+ distance);
+ }
+
+
+ /** @brief to use with driving distance
+ *
+ * Prepares the execution for a driving distance:
+ *
+ * @param graph
+ * @param start_vertex
+ * @param distance
+ *
+ * Results are kept on predecessor & distances
+ *
+ * @returns bool @b True when results are found
+ */
+ bool execute_drivingDistance_no_init(
+ G &graph,
+ V start_vertex,
+ double distance) {
+ pgassert(predecessors.size() == graph.num_vertices());
+ pgassert(distances.size() == graph.num_vertices());
+
+ std::iota(predecessors.begin(), predecessors.end(), 0);
+
+#if 0
+ /*
+ * Expensive assertion
+ */
+ for (V i = 0 ; i < predecessors.size(); ++i) {
+ pgassert(i == predecessors[i]);
+ }
+#endif
+
+ return dijkstra_1_to_distance_no_init(
+ graph,
+ start_vertex,
+ distance);
+ }
+
+ /* preparation for many to distance with equicost
+ *
+ * Idea:
+ * The distances vector does not change
+ * The predecessors vector does not change
+ * The first @b valid execution is done normally:
+ * - The distances will have:
+ * - inf
+ * - values < distance
+ * - values > distance
+ * Subsequent @b valid executions
+ * - will not change the:
+ * - values < distance
+ * Don't know yet what happens to predecessors
+ */
+ std::deque< Path > drivingDistance_with_equicost(
+ G &graph,
+ const std::vector< int64_t > start_vertex,
+ double distance) {
+ clear();
+ log << "Number of edges:" << boost::num_edges(graph.graph) << "\n";
+
+ predecessors.resize(graph.num_vertices());
+ distances.resize(
+ graph.num_vertices(),
+ std::numeric_limits<double>::max());
+
+ /*
+ * Vector to store the different predessesors
+ * each is of size = graph.num_vertices()
+ *
+ * TODO(vicky)
+ * - figure out less storage if possible
+ */
+ std::deque< std::vector< V > > pred(start_vertex.size());
+
+ // perform the algorithm
+ size_t i = 0;
+ for (const auto &vertex : start_vertex) {
+ nodesInDistance.clear();
+ /*
+ * The vertex does not exist
+ * Nothing to do
+ */
+ if (graph.has_vertex(vertex)) {
+ if (execute_drivingDistance_no_init(
+ graph,
+ graph.get_V(vertex),
+ distance)) {
+ pred[i] = predecessors;
+ }
+ }
+ ++i;
+ }
+
+
+ /*
+ * predecessors of vertices in the set are themselves
+ */
+ for (const auto &vertex : start_vertex) {
+ for (auto &p : pred) {
+ if (!p.empty() & graph.has_vertex(vertex))
+ p[graph.get_V(vertex)] = graph.get_V(vertex);
+ }
+ }
+
+
+ return get_drivingDistance_with_equicost_paths(
+ graph,
+ start_vertex,
+ pred,
+ distance);
+ }
+
+ /** @brief gets results in form of a container of paths
+ *
+ * @param [in] graph The graph that is being worked
+ * @param [in] start_vertex An array of vertices @b id
+ * @param [in] pred an array of predecessors
+ * @param [in] distance the max distance
+ */
+ std::deque< Path > get_drivingDistance_with_equicost_paths(
+ G &graph,
+ const std::vector< int64_t > &start_vertex,
+ std::deque< std::vector< V > > &pred,
+ double distance) {
+ /*
+ * precondition
+ */
+ pgassert(start_vertex.size() == pred.size());
+
+
+ /*
+ * Creating all the result "paths"
+ */
+ std::deque<Path> paths;
+ for (const auto vertex : start_vertex) {
+ paths.push_back(Path(vertex, vertex));
+ paths.back().push_back({vertex, -1, 0, 0});
+ }
+
+ /*
+ * Ciclying the distances:
+ * To which vertex do they belong to?
+ */
+ for (V d = 0; d < distances.size(); ++d) {
+ /*
+ * Sikiping distances greater than the one asked for
+ */
+ if (!(distances[d] <= distance)) continue;
+
+ for (auto i = start_vertex.size(); i > 0; --i) {
+ /*
+ * The vertex does not exist on the graph
+ */
+ if (pred[i - 1].empty()) {pgassert(false); continue;}
+
+
+ /*
+ * The predecessor = current then
+ * its unreachable to this vertex
+ */
+ if (pred[i - 1][d] == d) continue;
+
+ auto cost = distances[d] - distances[pred[i - 1][d]];
+ auto edge_id = graph.get_edge_id(pred[i - 1][d], d, cost);
+ pgassert(edge_id != -1);
+ paths[i - 1].push_back(
+ {graph[d].id,
+ edge_id, cost,
+ distances[d]});
+ break;
+ }
+ }
+
+ for (auto &path : paths) {
+ path.sort_by_node_agg_cost();
+ }
+ return paths;
+ }
+
+
+ // preparation for many to distance No equicost
+ std::deque< Path > drivingDistance_no_equicost(
+ G &graph,
+ const std::vector< int64_t > start_vertex,
+ double distance) {
+ std::deque< std::vector< V > > pred;
+ std::deque< std::vector< double > > dist;
+
+ // perform the algorithm
+ std::deque<Path> paths;
+ for (const auto &vertex : start_vertex) {
+ if (execute_drivingDistance(graph, vertex, distance)) {
+ auto path = Path(
+ graph,
+ vertex,
+ distance,
+ predecessors,
+ distances);
+ path.sort_by_node_agg_cost();
+ paths.push_back(path);
+ } else {
+ Path p(vertex, vertex);
+ p.push_back({vertex, -1, 0, 0});
+ paths.push_back(p);
+ }
+ }
+ return paths;
+ }
+
+
+ //! Call to Dijkstra 1 source to many targets
+ bool dijkstra_1_to_many(
+ G &graph,
+ V source,
+ const std::vector< V > &targets) {
+ try {
+ boost::dijkstra_shortest_paths(graph.graph, source,
+ boost::predecessor_map(&predecessors[0])
+ .weight_map(get(&G::G_T_E::cost, graph.graph))
+ .distance_map(&distances[0])
+ .visitor(dijkstra_many_goal_visitor(targets)));
+ } catch(found_goals &) {
+ return true;
+ } catch (boost::exception const& ex) {
+ (void)ex;
+ throw;
+ } catch (std::exception &e) {
+ (void)e;
+ throw;
+ } catch (...) {
+ throw;
+ }
+ return true;
+ }
+
+
+ void clear() {
+ predecessors.clear();
+ distances.clear();
+ nodesInDistance.clear();
+ }
+
+
+
+
+ // used when multiple goals
+ std::deque<Path> get_paths(
+ const G &graph,
+ V source,
+ std::vector< V > &targets,
+ bool only_cost) const {
+ std::deque<Path> paths;
+ for (const auto target : targets) {
+ paths.push_back(Path(
+ graph,
+ source, target,
+ predecessors, distances,
+ only_cost, true));
+ }
+ return paths;
+ }
+
+
+
+ //! @name members
+ //@{
+ struct found_goals{}; //!< exception for termination
+ std::vector< V > predecessors;
+ std::vector< double > distances;
+ std::deque< V > nodesInDistance;
+ std::ostringstream log;
+ //@}
+
+ //! @name Stopping classes
+ //@{
+ //! class for stopping when 1 target is found
+ class dijkstra_one_goal_visitor : public boost::default_dijkstra_visitor {
+ public:
+ explicit dijkstra_one_goal_visitor(V goal) : m_goal(goal) {}
+ template <class B_G>
+ void examine_vertex(V &u, B_G &) {
+ if (u == m_goal) throw found_goals();
+ }
+ private:
+ V m_goal;
+ };
+
+ //! class for stopping when all targets are found
+ class dijkstra_many_goal_visitor : public boost::default_dijkstra_visitor {
+ public:
+ explicit dijkstra_many_goal_visitor(std::vector< V > goals)
+ :m_goals(goals.begin(), goals.end()) {}
+ template <class B_G>
+ void examine_vertex(V u, B_G &) {
+ auto s_it = m_goals.find(u);
+ if (s_it == m_goals.end()) return;
+ // we found one more goal
+ m_goals.erase(s_it);
+ if (m_goals.size() == 0) throw found_goals();
+ }
+ private:
+ std::set< V > m_goals;
+ };
+
+
+ //! class for stopping when a distance/cost has being surpassed
+ class dijkstra_distance_visitor : public boost::default_dijkstra_visitor {
+ public:
+ explicit dijkstra_distance_visitor(
+ double distance_goal,
+ std::deque< V > &nodesInDistance,
+ std::vector< double > &distances) :
+ m_distance_goal(distance_goal),
+ m_nodes(nodesInDistance),
+ m_dist(distances) {
+ pgassert(m_nodes.empty());
+ pgassert(m_distance_goal > 0);
+ }
+ template <class B_G>
+ void examine_vertex(V u, B_G &) {
+ if (m_dist[u] > m_distance_goal) {
+ throw found_goals();
+ }
+ m_nodes.push_back(u);
+ }
+
+ private:
+ double m_distance_goal;
+ std::deque< V > &m_nodes;
+ std::vector< double > &m_dist;
+ };
+
+ //! class for stopping when a distance/cost has being surpassed
+ class dijkstra_distance_visitor_no_init
+ : public boost::default_dijkstra_visitor {
+ public:
+ explicit dijkstra_distance_visitor_no_init(
+ std::ostringstream &p_log,
+ V source,
+ double distance_goal,
+ std::vector< V > &predecessors,
+ std::vector< double > &distances,
+ std::vector<boost::default_color_type> &color_map) :
+ log(p_log),
+ first(source),
+ m_distance_goal(distance_goal),
+ m_num_examined(0),
+ m_predecessors(predecessors),
+ m_dist(distances),
+ m_color(color_map) {
+ pgassert(m_num_examined == 0);
+ pgassert(m_distance_goal > 0);
+ }
+
+ template <class B_G>
+ void examine_vertex(V u, B_G &) {
+ if ( 0 == m_num_examined++) first = u;
+ if (m_dist[u] > m_distance_goal) {
+ throw found_goals();
+ }
+ if (u != first && m_predecessors[u] == u) {
+ m_color[u] = boost::black_color;
+ }
+ }
+
+ template <class B_G>
+ void examine_edge(E e, B_G &g) {
+ if (source(e, g) != first
+ && m_predecessors[source(e, g)] == source(e, g)) {
+ m_color[target(e, g)] = boost::black_color;
+ }
+ }
+
+
+ template <class B_G>
+ void edge_relaxed(E, B_G &) {
+ }
+
+
+
+ template <class B_G>
+ void edge_not_relaxed(E e, B_G &g) {
+ if (source(e, g) != first
+ && m_predecessors[source(e, g)] == source(e, g)) {
+ m_color[target(e, g)] = boost::black_color;
+ }
+ }
+
+
+ template <class B_G>
+ void finish_vertex(V, B_G &) {
+ }
+
+
+ template <class B_G>
+ void discover_vertex(V u, B_G &) {
+ if (u != first && m_predecessors[u] == u) {
+ m_color[u] = boost::black_color;
+ }
+ }
+
+ private:
+ std::ostringstream &log;
+ V first;
+ double m_distance_goal;
+ size_t m_num_examined;
+ std::vector< V > &m_predecessors;
+ std::vector< double > &m_dist;
+ std::vector<boost::default_color_type> &m_color;
+ };
+
+
+ //@}
+};
+
+
+
+#endif // INCLUDE_DIJKSTRA_PGR_DIJKSTRA_HPP_
diff --git a/include/dijkstraTRSP/pgr_dijkstraTRSP.hpp b/include/dijkstraTRSP/pgr_dijkstraTRSP.hpp
new file mode 100644
index 0000000..d857f01
--- /dev/null
+++ b/include/dijkstraTRSP/pgr_dijkstraTRSP.hpp
@@ -0,0 +1,208 @@
+/*PGR-GNU*****************************************************************
+File: pgr_dijkstraTRSP.hpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+********************************************************************PGR-GNU*/
+#ifndef INCLUDE_DIJKSTRATRSP_PGR_DIJKSTRATRSP_HPP_
+#define INCLUDE_DIJKSTRATRSP_PGR_DIJKSTRATRSP_HPP_
+#pragma once
+
+#include "dijkstra/pgr_dijkstra.hpp"
+#include "c_types/line_graph_rt.h"
+
+#include "lineGraph/pgr_lineGraph.hpp"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+#include <set>
+#include <limits>
+
+#include "cpp_common/pgr_assert.h"
+#include "cpp_common/basePath_SSEC.hpp"
+
+
+template < class G >
+class Pgr_dijkstraTRSP {
+ public:
+ Path dijkstraTRSP(
+ G& graph,
+ const std::vector< Restriction >& restrictions,
+ const std::vector< pgr_edge_t >& edges,
+ int64_t source,
+ int64_t target,
+ bool only_cost,
+ bool strict);
+ void clear();
+ private:
+ void executeDijkstraTRSP(G& graph);
+ void getDijkstraSolution(G& graph);
+ bool has_restriction();
+ bool has_a_restriction(int64_t edge, int64_t index);
+ private:
+ typedef typename G::V V;
+ V v_source;
+ V v_target;
+ int64_t m_start;
+ int64_t m_end;
+ std::vector< Restriction > m_restrictions;
+ std::vector< int64_t > m_edges_in_path;
+ bool m_only_cost;
+ bool m_strict;
+
+ Path curr_result_path;
+
+ public:
+ std::ostringstream log;
+};
+
+template < class G >
+void Pgr_dijkstraTRSP< G >::clear() {
+}
+
+template < class G >
+Path
+Pgr_dijkstraTRSP< G >::dijkstraTRSP(
+ G& graph,
+ const std::vector< Restriction >& restrictions,
+ const std::vector< pgr_edge_t >& edges,
+ int64_t start_vertex,
+ int64_t end_vertex,
+ bool only_cost,
+ bool strict) {
+ if (start_vertex == end_vertex)
+ return Path();
+ if (!graph.has_vertex(start_vertex) || !graph.has_vertex(end_vertex))
+ return Path();
+
+ m_only_cost = only_cost;
+ v_source = graph.get_V(start_vertex);
+ v_target = graph.get_V(end_vertex);
+ m_start = start_vertex;
+ m_end = end_vertex;
+ m_restrictions = restrictions;
+ m_strict = strict;
+ executeDijkstraTRSP(graph);
+ if (curr_result_path.size() or graph.m_gType == UNDIRECTED)
+ return curr_result_path;
+
+#if 0
+ pgrouting::LinearDirectedGraph line(DIRECTED);
+ line.insert_vertices(edges);
+ auto line_graph_edges = line.transform(graph);
+ log << "\nGraph before removing restrictions\n" << line << "\n";
+ auto remaining_restrictions = line.remove_restricted_edges(m_restrictions);
+ log << "\n Graph after removing restrictions\n" << line << "\n";
+
+ log << line.log.str().c_str() << "\n\n\n";
+
+ line.create_virtual_vertices();
+ log << line << "\n";
+#endif
+
+ return curr_result_path;
+}
+
+template < class G >
+void Pgr_dijkstraTRSP< G >::getDijkstraSolution(G& graph) {
+ Path path;
+
+ Pgr_dijkstra< G > fn_dijkstra;
+ path = fn_dijkstra.dijkstra(graph, m_start, m_end);
+
+ if (path.empty()) return;
+ curr_result_path = path;
+}
+
+template < class G >
+bool Pgr_dijkstraTRSP< G >::has_a_restriction(int64_t edge, int64_t index) {
+ auto lower_bound_cmp = [](const Restriction& r, const int64_t& target) {
+ return r.restrict_edges()[0] < target;
+ };
+ auto edge_index = std::lower_bound(m_restrictions.begin(),
+ m_restrictions.end(), edge, lower_bound_cmp) - m_restrictions.begin();
+ log << "\nResult generated from lower_bound\n";
+ while (edge_index < (int64_t)m_restrictions.size()) {
+ auto r_edges = m_restrictions[edge_index].restrict_edges();
+ if (r_edges[0] != edge) break;
+ log << m_restrictions[edge_index] << "\n";
+ bool okay = true;
+ size_t temp_edge_index = index;
+
+ for (auto &edge_id: r_edges) {
+ if (temp_edge_index >= m_edges_in_path.size() or
+ m_edges_in_path[temp_edge_index] != edge_id) {
+ okay = false;
+ break;
+ }
+ temp_edge_index++;
+ }
+ log << "\nokay value = " << okay <<"\n";
+ if (okay) return true;
+ edge_index++;
+ }
+ log << "Ends Here\n";
+ return false;
+}
+
+template < class G >
+bool Pgr_dijkstraTRSP< G >::has_restriction() {
+ auto sort_cmp = [](const Restriction& left,
+ const Restriction& right) -> bool {
+ return left.restrict_edges()[0] <= right.restrict_edges()[0];
+ };
+ std::stable_sort(m_restrictions.begin(), m_restrictions.end(),
+ sort_cmp);
+ log << "\nRestriction array after sorting.\n";
+ for (auto &it: m_restrictions) log << it << "\n";
+ log << "\nEnd\n";
+ size_t index = 0;
+ for (auto &edge: m_edges_in_path) {
+ if (has_a_restriction(edge, index))
+ return true;
+ index++;
+ }
+ return false;
+}
+
+template < class G >
+void Pgr_dijkstraTRSP< G >::executeDijkstraTRSP(G& graph) {
+ clear();
+ getDijkstraSolution(graph);
+ log << curr_result_path;
+
+ for (auto &path: curr_result_path) {
+ m_edges_in_path.push_back(path.edge);
+ }
+ while (m_edges_in_path.size() and m_edges_in_path.back() == -1) {
+ m_edges_in_path.pop_back();
+ }
+
+ log << "Edges in m_edges_in_path:-------------------\n";
+ for(auto &it: m_edges_in_path) log << it << "\n";
+ log << "---------------------------------------------\n";
+ bool sol = has_restriction();
+ log << "Result of valid solution: " << sol << "\n";
+ if (sol) curr_result_path = Path();
+}
+
+#endif // INCLUDE_DIJKSTRATRSP_PGR_DIJKSTRATRSP_HPP_
diff --git a/include/dijkstraTRSP/restriction.h b/include/dijkstraTRSP/restriction.h
new file mode 100644
index 0000000..1842a99
--- /dev/null
+++ b/include/dijkstraTRSP/restriction.h
@@ -0,0 +1,65 @@
+/*PGR-GNU*****************************************************************
+File: restriction.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DIJKSTRATRSP_RESTRICTION_H
+#define INCLUDE_DIJKSTRATRSP_RESTRICTION_H
+#pragma once
+
+#include <sstream>
+#include <deque>
+#include <vector>
+#include <set>
+#include <limits>
+
+#include "c_types/restrict_t.h"
+
+class Restriction {
+ private:
+ int64_t m_id;
+ std::vector< int64_t > m_restrict_edges;
+ double m_cost;
+
+ public:
+ Restriction() = default;
+ Restriction(const Restrict_t &r);
+
+ int64_t id() const {return m_id;}
+ void id(const int64_t& value) {m_id = value;}
+
+ double cost() const {return m_cost;}
+ void cost(const double& value) {m_cost = value;}
+
+ std::vector< int64_t > restrict_edges() const {return m_restrict_edges;}
+ void restrict_edges(const int64_t& value) {m_restrict_edges.push_back(value);}
+ void clear() {
+ m_restrict_edges.clear();
+ }
+
+ int64_t restriction_size() const {return m_restrict_edges.size();}
+
+ friend std::ostream& operator << (std::ostream &log, const Restriction &r);
+};
+
+#endif // INCLUDE_DIJKSTRATRSP_RESTRICTION_H
diff --git a/include/drivers/allpairs/floydWarshall_driver.h b/include/drivers/allpairs/floydWarshall_driver.h
new file mode 100644
index 0000000..cc3ed97
--- /dev/null
+++ b/include/drivers/allpairs/floydWarshall_driver.h
@@ -0,0 +1,57 @@
+/*PGR-GNU*****************************************************************
+File: floydWarshall_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_ALLPAIRS_FLOYDWARSHALL_DRIVER_H_
+#define INCLUDE_DRIVERS_ALLPAIRS_FLOYDWARSHALL_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/matrix_cell_t.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void
+do_pgr_floydWarshall(
+ pgr_edge_t *data_edges,
+ size_t total_tuples,
+ bool directedFlag,
+
+ // return values
+ Matrix_cell_t **ret_matrix,
+ size_t *return_tuple_count,
+ char ** log_msg,
+ char ** err_msg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_ALLPAIRS_FLOYDWARSHALL_DRIVER_H_
diff --git a/include/drivers/allpairs/johnson_driver.h b/include/drivers/allpairs/johnson_driver.h
new file mode 100644
index 0000000..01f7ee0
--- /dev/null
+++ b/include/drivers/allpairs/johnson_driver.h
@@ -0,0 +1,56 @@
+/*PGR-GNU*****************************************************************
+File: johnson_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+#ifndef INCLUDE_DRIVERS_ALLPAIRS_JOHNSON_DRIVER_H_
+#define INCLUDE_DRIVERS_ALLPAIRS_JOHNSON_DRIVER_H_
+
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/matrix_cell_t.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN,
+void
+do_pgr_johnson(
+ pgr_edge_t *data_edges,
+ size_t total_tuples,
+ bool directed,
+ Matrix_cell_t **return_tuples,
+ size_t *return_count,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_ALLPAIRS_JOHNSON_DRIVER_H_
diff --git a/include/drivers/astar/astar_driver.h b/include/drivers/astar/astar_driver.h
new file mode 100644
index 0000000..731fee0
--- /dev/null
+++ b/include/drivers/astar/astar_driver.h
@@ -0,0 +1,74 @@
+/*PGR-GNU*****************************************************************
+File: astarOneToMany_driver.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_ASTAR_ASTAR_DRIVER_H_
+#define INCLUDE_DRIVERS_ASTAR_ASTAR_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_xy_t.h"
+#include "c_types/general_path_element_t.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ void check_parameters(
+ int heuristic,
+ double factor,
+ double epsilon);
+
+ /*********************************************************
+ edges_sql TEXT,
+ vertex_table TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT directed BOOLEAN DEFAULT true,
+ ********************************************************/
+ void do_pgr_astarManyToMany(
+ Pgr_edge_xy_t *data_edges,
+ size_t total_edges,
+ int64_t *start_vidsArr, size_t size_start_vidsArr,
+ int64_t *end_vidsArr, size_t size_end_vidsArr,
+ bool directed,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost,
+ bool normal,
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+ char** log_msg,
+ char** notice_msg,
+ char** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_ASTAR_ASTAR_DRIVER_H_
diff --git a/include/drivers/bdAstar/bdAstar_driver.h b/include/drivers/bdAstar/bdAstar_driver.h
new file mode 100644
index 0000000..17ce9f6
--- /dev/null
+++ b/include/drivers/bdAstar/bdAstar_driver.h
@@ -0,0 +1,77 @@
+/*PGR-GNU*****************************************************************
+File: bdAstar_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_BDASTAR_BDASTAR_DRIVER_H_
+#define INCLUDE_DRIVERS_BDASTAR_BDASTAR_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_xy_t.h"
+#include "c_types/general_path_element_t.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ ********************************************************/
+
+
+ void do_pgr_bdAstar(
+ Pgr_edge_xy_t *data_edges,
+ size_t total_edges,
+ int64_t *start_vidsArr,
+ size_t size_start_vidsArr,
+ int64_t *end_vidsArr,
+ size_t size_end_vidsArr,
+
+ bool directed,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost,
+
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+
+ char** log_msg,
+ char** notice_msg,
+ char** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_BDASTAR_BDASTAR_DRIVER_H_
diff --git a/include/drivers/bdDijkstra/bdDijkstra_driver.h b/include/drivers/bdDijkstra/bdDijkstra_driver.h
new file mode 100644
index 0000000..2c18089
--- /dev/null
+++ b/include/drivers/bdDijkstra/bdDijkstra_driver.h
@@ -0,0 +1,65 @@
+/*PGR-GNU*****************************************************************
+File: bdDijkstra_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_BDDIJKSTRA_BDDIJKSTRA_DRIVER_H_
+#define INCLUDE_DRIVERS_BDDIJKSTRA_BDDIJKSTRA_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/general_path_element_t.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+ void do_pgr_bdDijkstra(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ int64_t *start_vidsArr,
+ size_t size_start_vidsArr,
+ int64_t *end_vidsArr,
+ size_t size_end_vidsArr,
+
+ bool directed,
+ bool only_cost,
+
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_BDDIJKSTRA_BDDIJKSTRA_DRIVER_H_
diff --git a/include/drivers/components/articulationPoints_driver.h b/include/drivers/components/articulationPoints_driver.h
new file mode 100644
index 0000000..ed63b15
--- /dev/null
+++ b/include/drivers/components/articulationPoints_driver.h
@@ -0,0 +1,63 @@
+/*PGR-GNU*****************************************************************
+File: articulationPoints_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_COMPONENTS_ARTICULATIONPOINTS_DRIVER_H_
+#define INCLUDE_DRIVERS_COMPONENTS_ARTICULATIONPOINTS_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/pgr_components_rt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ TEXT,
+ BIGINT,
+ BIGINT,
+ ********************************************************/
+
+
+ void
+ do_pgr_articulationPoints(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ pgr_components_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_COMPONENTS_ARTICULATIONPOINTS_DRIVER_H_
diff --git a/include/drivers/components/biconnectedComponents_driver.h b/include/drivers/components/biconnectedComponents_driver.h
new file mode 100644
index 0000000..7713355
--- /dev/null
+++ b/include/drivers/components/biconnectedComponents_driver.h
@@ -0,0 +1,63 @@
+/*PGR-GNU*****************************************************************
+File: biconnectedComponents_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_COMPONENTS_BICONNECTEDCOMPONENTS_DRIVER_H_
+#define INCLUDE_DRIVERS_COMPONENTS_BICONNECTEDCOMPONENTS_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/pgr_components_rt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ TEXT,
+ BIGINT,
+ BIGINT,
+ ********************************************************/
+
+
+ void
+ do_pgr_biconnectedComponents(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ pgr_components_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_COMPONENTS_BICONNECTEDCOMPONENTS_DRIVER_H_
diff --git a/include/drivers/components/bridges_driver.h b/include/drivers/components/bridges_driver.h
new file mode 100644
index 0000000..56f6b73
--- /dev/null
+++ b/include/drivers/components/bridges_driver.h
@@ -0,0 +1,63 @@
+/*PGR-GNU*****************************************************************
+File: bridges_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_COMPONENTS_BRIDGES_DRIVER_H_
+#define INCLUDE_DRIVERS_COMPONENTS_BRIDGES_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/pgr_components_rt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ TEXT,
+ BIGINT,
+ BIGINT,
+ ********************************************************/
+
+
+ void
+ do_pgr_bridges(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ pgr_components_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_COMPONENTS_BRIDGES_DRIVER_H_
diff --git a/include/drivers/components/connectedComponents_driver.h b/include/drivers/components/connectedComponents_driver.h
new file mode 100644
index 0000000..3676c4f
--- /dev/null
+++ b/include/drivers/components/connectedComponents_driver.h
@@ -0,0 +1,63 @@
+/*PGR-GNU*****************************************************************
+File: connectedComponents_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_COMPONENTS_CONNECTEDCOMPONENTS_DRIVER_H_
+#define INCLUDE_DRIVERS_COMPONENTS_CONNECTEDCOMPONENTS_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/pgr_components_rt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ TEXT,
+ BIGINT,
+ BIGINT,
+ ********************************************************/
+
+
+ void
+ do_pgr_connectedComponents(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ pgr_components_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_COMPONENTS_CONNECTEDCOMPONENTS_DRIVER_H_
diff --git a/include/drivers/components/strongComponents_driver.h b/include/drivers/components/strongComponents_driver.h
new file mode 100644
index 0000000..a2a153d
--- /dev/null
+++ b/include/drivers/components/strongComponents_driver.h
@@ -0,0 +1,63 @@
+/*PGR-GNU*****************************************************************
+File: strongComponents_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_COMPONENTS_STRONGCOMPONENTS_DRIVER_H_
+#define INCLUDE_DRIVERS_COMPONENTS_STRONGCOMPONENTS_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/pgr_components_rt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ TEXT,
+ BIGINT,
+ BIGINT,
+ ********************************************************/
+
+
+ void
+ do_pgr_strongComponents(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ pgr_components_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_COMPONENTS_STRONGCOMPONENTS_DRIVER_H_
diff --git a/include/drivers/contraction/contractGraph_driver.h b/include/drivers/contraction/contractGraph_driver.h
new file mode 100644
index 0000000..bd85cce
--- /dev/null
+++ b/include/drivers/contraction/contractGraph_driver.h
@@ -0,0 +1,68 @@
+/*PGR-GNU*****************************************************************
+File: contractGraph_driver.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2016 Rohith Reddy
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef SRC_CONTRACTION_SRC_CONTRACTGRAPH_DRIVER_H_
+#define SRC_CONTRACTION_SRC_CONTRACTGRAPH_DRIVER_H_
+#pragma once
+
+#include "c_types/contracted_rt.h"
+#include "c_types/pgr_edge_t.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ max_cycles integer DEFAULT 1,
+ directed BOOLEAN DEFAULT true
+ ********************************************************/
+ void
+ do_pgr_contractGraph(
+ pgr_edge_t *data_edges,
+ size_t total_tuples,
+ int64_t *forbidden_vertices,
+ size_t size_forbidden_vertices,
+ int64_t *contraction_order,
+ size_t size_contraction_order,
+ int64_t max_cycles,
+ bool directed,
+ contracted_rt **return_tuples,
+ size_t *return_count,
+ char **log_msg,
+ char **notice_msg,
+ char **err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SRC_CONTRACTION_SRC_CONTRACTGRAPH_DRIVER_H_
diff --git a/include/drivers/dijkstra/dijkstraVia_driver.h b/include/drivers/dijkstra/dijkstraVia_driver.h
new file mode 100644
index 0000000..2712a95
--- /dev/null
+++ b/include/drivers/dijkstra/dijkstraVia_driver.h
@@ -0,0 +1,62 @@
+/*PGR-GNU*****************************************************************
+File: dijkstraViaVertex.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_DIJKSTRA_DIJKSTRAVIA_DRIVER_H_
+#define INCLUDE_DRIVERS_DIJKSTRA_DIJKSTRAVIA_DRIVER_H_
+#pragma once
+
+#include "c_types/routes_t.h"
+#include "c_types/pgr_edge_t.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*
+ CREATE OR REPLACE FUNCTION pgr_dijkstraViaVertices(
+ sql text,
+ vertices anyarray,
+ directed boolean default true,
+ */
+ void
+ do_pgr_dijkstraVia(
+ pgr_edge_t *data_edges, size_t total_edges,
+ int64_t *via_vidsArr, size_t size_via_vidsArr,
+ bool directed,
+ bool strict,
+ bool U_turn_on_edge,
+ Routes_t **return_tuples, size_t *return_count,
+
+ char** log_msg,
+ char** notice_msg,
+ char** err_msg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_DIJKSTRA_DIJKSTRAVIA_DRIVER_H_
diff --git a/include/drivers/dijkstra/dijkstra_driver.h b/include/drivers/dijkstra/dijkstra_driver.h
new file mode 100644
index 0000000..ab02e74
--- /dev/null
+++ b/include/drivers/dijkstra/dijkstra_driver.h
@@ -0,0 +1,69 @@
+/*PGR-GNU*****************************************************************
+
+File: dijkstra_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_DIJKSTRA_DIJKSTRA_DRIVER_H_
+#define INCLUDE_DRIVERS_DIJKSTRA_DIJKSTRA_DRIVER_H_
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/general_path_element_t.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ // CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ // sql text,
+ // start_vids anyarray,
+ // end_vids anyarray,
+ // directed boolean default true,
+ void do_pgr_many_to_many_dijkstra(
+ pgr_edge_t *data_edges,
+ size_t total_tuples,
+ int64_t *start_vidsArr,
+ size_t size_start_vidsArr,
+ int64_t *end_vidsArr,
+ size_t size_end_vidsArr,
+ bool directed,
+ bool only_cost,
+ bool normal,
+
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+
+ char** log_msg,
+ char** notice_msg,
+ char** err_msg);
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif // INCLUDE_DRIVERS_DIJKSTRA_DIJKSTRA_DRIVER_H_
diff --git a/include/drivers/dijkstraTRSP/dijkstraTRSP_driver.h b/include/drivers/dijkstraTRSP/dijkstraTRSP_driver.h
new file mode 100644
index 0000000..1e60d0a
--- /dev/null
+++ b/include/drivers/dijkstraTRSP/dijkstraTRSP_driver.h
@@ -0,0 +1,74 @@
+/*PGR-GNU*****************************************************************
+File: dijkstraTRSP_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_DIJKSTRATRSP_DIJKSTRATRSP_DRIVER_H_
+#define INCLUDE_DRIVERS_DIJKSTRATRSP_DIJKSTRATRSP_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/general_path_element_t.h"
+#include "c_types/restrict_t.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ TEXT,
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ ********************************************************/
+
+
+ void
+ do_pgr_dijkstraTRSP(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ Restrict_t *restrictions,
+ size_t total_restrictions,
+ int64_t start_vid,
+ int64_t end_vid,
+ bool directed,
+ bool only_cost,
+ bool strict,
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_DIJKSTRATRSP_DIJKSTRATRSP_DRIVER_H_
diff --git a/include/drivers/driving_distance/drivedist_driver.h b/include/drivers/driving_distance/drivedist_driver.h
new file mode 100644
index 0000000..5995c5d
--- /dev/null
+++ b/include/drivers/driving_distance/drivedist_driver.h
@@ -0,0 +1,51 @@
+/*PGR-GNU*****************************************************************
+File: boost_interface_drivedist.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_DRIVING_DISTANCE_DRIVEDIST_DRIVER_H_
+#define INCLUDE_DRIVERS_DRIVING_DISTANCE_DRIVEDIST_DRIVER_H_
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/general_path_element_t.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ void do_pgr_driving_many_to_dist(
+ pgr_edge_t* edges, size_t total_edges,
+ int64_t* start_vertex, size_t s_len,
+ double distance,
+ bool directed,
+ bool equicost,
+ General_path_element_t** return_tuples, size_t* return_count,
+ char **log_msg,
+ char **notice_msg,
+ char **err_msg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_DRIVING_DISTANCE_DRIVEDIST_DRIVER_H_
diff --git a/include/drivers/driving_distance/withPoints_dd_driver.h b/include/drivers/driving_distance/withPoints_dd_driver.h
new file mode 100644
index 0000000..a815808
--- /dev/null
+++ b/include/drivers/driving_distance/withPoints_dd_driver.h
@@ -0,0 +1,66 @@
+/*PGR-GNU*****************************************************************
+File: withPoints_driver.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_DRIVING_DISTANCE_WITHPOINTS_DD_DRIVER_H_
+#define INCLUDE_DRIVERS_DRIVING_DISTANCE_WITHPOINTS_DD_DRIVER_H_
+#pragma once
+
+#include "c_types/point_on_edge_t.h"
+#include "c_types/pgr_edge_t.h"
+#include "c_types/general_path_element_t.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+ void do_pgr_many_withPointsDD(
+ pgr_edge_t *edges, size_t total_edges,
+ Point_on_edge_t *points_p, size_t total_points,
+ pgr_edge_t *edges_of_points, size_t total_edges_of_points,
+
+ int64_t *start_pids_arr, size_t s_len,
+ double distance,
+
+ bool directed,
+ char driving_side,
+ bool details,
+ bool equiCost,
+
+ General_path_element_t **return_tuples, size_t *return_count,
+ char** log_msg,
+ char** notice_msg,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_DRIVING_DISTANCE_WITHPOINTS_DD_DRIVER_H_
diff --git a/include/drivers/lineGraph/lineGraph_driver.h b/include/drivers/lineGraph/lineGraph_driver.h
new file mode 100644
index 0000000..672bf1c
--- /dev/null
+++ b/include/drivers/lineGraph/lineGraph_driver.h
@@ -0,0 +1,63 @@
+/*PGR-GNU*****************************************************************
+File: lineGraph_driver.h
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_LINEGRAPH_LINEGRAPH_DRIVER_H_
+#define INCLUDE_DRIVERS_LINEGRAPH_LINEGRAPH_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/line_graph_rt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ TEXT,
+ directed BOOLEAN DEFAULT true,
+ ********************************************************/
+
+
+ void
+ do_pgr_lineGraph(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ bool directed,
+ Line_graph_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_LINEGRAPH_LINEGRAPH_DRIVER_H_
diff --git a/include/drivers/pickDeliver/pickDeliverEuclidean_driver.h b/include/drivers/pickDeliver/pickDeliverEuclidean_driver.h
new file mode 100644
index 0000000..0910085
--- /dev/null
+++ b/include/drivers/pickDeliver/pickDeliverEuclidean_driver.h
@@ -0,0 +1,69 @@
+/*PGR-GNU*****************************************************************
+File: pickDeliverEuclidean_driver.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+/*! @file pickDeliverEuclidean_driver.h */
+
+#ifndef INCLUDE_DRIVERS_PICKDELIVER_PICKDELIVEREUCLIDEAN_DRIVER_H_
+#define INCLUDE_DRIVERS_PICKDELIVER_PICKDELIVEREUCLIDEAN_DRIVER_H_
+#pragma once
+
+#include "c_types/pickDeliver/general_vehicle_orders_t.h"
+#include "c_types/pickDeliver/pickDeliveryOrders_t.h"
+#include "c_types/pickDeliver/vehicle_t.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ orders_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ max_cycles INTEGER,
+ ********************************************************/
+ void do_pgr_pickDeliverEuclidean(
+ PickDeliveryOrders_t *pd_orders_arr, size_t total_pd_orders,
+ Vehicle_t *vehicles_arr, size_t total_vehicles,
+
+ double factor,
+ int max_cycles,
+ int initial_solution_id,
+
+ General_vehicle_orders_t **return_tuples,
+ size_t *return_count,
+
+ char **log_msg,
+ char **notice_msg,
+ char **err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_PICKDELIVER_PICKDELIVEREUCLIDEAN_DRIVER_H_
diff --git a/include/drivers/pickDeliver/pickDeliver_driver.h b/include/drivers/pickDeliver/pickDeliver_driver.h
new file mode 100644
index 0000000..56974ad
--- /dev/null
+++ b/include/drivers/pickDeliver/pickDeliver_driver.h
@@ -0,0 +1,71 @@
+/*PGR-GNU*****************************************************************
+File: pickDeliver_driver.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+/*! @file pickDeliver_driver.h */
+
+#ifndef INCLUDE_DRIVERS_PICKDELIVER_PICKDELIVER_DRIVER_H_
+#define INCLUDE_DRIVERS_PICKDELIVER_PICKDELIVER_DRIVER_H_
+#pragma once
+
+#include "c_types/pickDeliver/pickDeliveryOrders_t.h"
+#include "c_types/pickDeliver/vehicle_t.h"
+#include "c_types/matrix_cell_t.h"
+#include "c_types/pickDeliver/general_vehicle_orders_t.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*********************************************************
+ orders_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ max_cycles INTEGER,
+ ********************************************************/
+ void do_pgr_pickDeliver(
+ PickDeliveryOrders_t pd_orders_arr[], size_t total_pd_orders,
+ Vehicle_t *vehicles_arr, size_t total_vehicles,
+ Matrix_cell_t *matrix_cells_arr, size_t total_cells,
+
+ double factor,
+ int max_cycles,
+ int initial_solution_id,
+
+ General_vehicle_orders_t **return_tuples,
+ size_t *return_count,
+
+ char **log_msg,
+ char **notice_msg,
+ char **err_msg);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_PICKDELIVER_PICKDELIVER_DRIVER_H_
diff --git a/include/drivers/tsp/eucledianTSP_driver.h b/include/drivers/tsp/eucledianTSP_driver.h
new file mode 100644
index 0000000..9af4417
--- /dev/null
+++ b/include/drivers/tsp/eucledianTSP_driver.h
@@ -0,0 +1,67 @@
+/*PGR-GNU*****************************************************************
+ * File: tsp_driver.h
+ *
+ * Generated with Template by:
+ * Copyright (c) 2015 pgRouting developers
+ * Mail: project at pgrouting.org
+ *
+ * Function's developer:
+ * Copyright (c) 2015 Celia Virginia Vergara Castillo
+ * Mail: vicky_vergara at hotmail.com
+ *
+ * ------
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_TSP_EUCLEDIANTSP_DRIVER_H_
+#define INCLUDE_DRIVERS_TSP_EUCLEDIANTSP_DRIVER_H_
+#pragma once
+
+#include "c_types/coordinate_t.h"
+#include "c_types/general_path_element_t.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void
+do_pgr_eucledianTSP(
+ Coordinate_t *coordinates, size_t total_coordinates,
+ int64_t start_vid,
+ int64_t end_vid,
+
+ double initial_temperature,
+ double final_temperature,
+ double cooling_factor,
+ int64_t tries_per_temperature,
+ int64_t max_changes_per_temperature,
+ int64_t max_consecutive_non_changes,
+ bool randomize,
+ double time_limit,
+
+ General_path_element_t **results,
+ size_t *total_results,
+ char **log_msg,
+ char **notice_msg,
+ char **err_msg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_TSP_EUCLEDIANTSP_DRIVER_H_
diff --git a/include/drivers/tsp/newTSP_driver.h b/include/drivers/tsp/newTSP_driver.h
new file mode 100644
index 0000000..62466f2
--- /dev/null
+++ b/include/drivers/tsp/newTSP_driver.h
@@ -0,0 +1,67 @@
+/*PGR-GNU*****************************************************************
+ * File: tsp_driver.h
+ *
+ * Generated with Template by:
+ * Copyright (c) 2015 pgRouting developers
+ * Mail: project at pgrouting.org
+ *
+ * Function's developer:
+ * Copyright (c) 2015 Celia Virginia Vergara Castillo
+ * Mail: vicky_vergara at hotmail.com
+ *
+ * ------
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_TSP_NEWTSP_DRIVER_H_
+#define INCLUDE_DRIVERS_TSP_NEWTSP_DRIVER_H_
+#pragma once
+
+#include "c_types/matrix_cell_t.h"
+#include "c_types/general_path_element_t.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void
+do_pgr_tsp(
+ Matrix_cell_t *distances, size_t total_distances,
+ int64_t start_vid,
+ int64_t end_vid,
+
+ double initial_temperature,
+ double final_temperature,
+ double cooling_factor,
+ int64_t tries_per_temperature,
+ int64_t max_changes_per_temperature,
+ int64_t max_consecutive_non_changes,
+ bool randomize,
+ double time_limit,
+
+ General_path_element_t **results,
+ size_t *total_results,
+ char **log_msg,
+ char **notice_msg,
+ char **err_msg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_TSP_NEWTSP_DRIVER_H_
diff --git a/include/drivers/withPoints/get_new_queries.h b/include/drivers/withPoints/get_new_queries.h
new file mode 100644
index 0000000..fc55a5b
--- /dev/null
+++ b/include/drivers/withPoints/get_new_queries.h
@@ -0,0 +1,50 @@
+/*PGR-GNU*****************************************************************
+File: get_new_queries.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+#ifndef INCLUDE_DRIVERS_WITHPOINTS_GET_NEW_QUERIES_H_
+#define INCLUDE_DRIVERS_WITHPOINTS_GET_NEW_QUERIES_H_
+
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ char estimate_drivingSide(char driving_side);
+
+ void get_new_queries(
+ char *edges_sql,
+ char *points_sql,
+ char **edges_of_points_query,
+ char **edges_no_points_query);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_WITHPOINTS_GET_NEW_QUERIES_H_
diff --git a/include/drivers/withPoints/withPoints_driver.h b/include/drivers/withPoints/withPoints_driver.h
new file mode 100644
index 0000000..445aa8e
--- /dev/null
+++ b/include/drivers/withPoints/withPoints_driver.h
@@ -0,0 +1,80 @@
+/*PGR-GNU*****************************************************************
+File: many_to_many_withPoints_driver.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_WITHPOINTS_WITHPOINTS_DRIVER_H_
+#define INCLUDE_DRIVERS_WITHPOINTS_WITHPOINTS_DRIVER_H_
+#pragma once
+
+#include "c_types/point_on_edge_t.h"
+#include "c_types/pgr_edge_t.h"
+#include "c_types/general_path_element_t.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// CREATE OR REPLACE FUNCTION pgr_withPoint(
+// edges_sql TEXT,
+// points_sql TEXT,
+// start_pid ANYARRAY,
+// end_pid BIGINT,
+// directed BOOLEAN DEFAULT true,
+ void do_pgr_withPoints(
+ pgr_edge_t *edges,
+ size_t total_edges,
+
+ Point_on_edge_t *points,
+ size_t total_points,
+
+ pgr_edge_t *edges_of_points,
+ size_t total_edges_of_points,
+
+ int64_t *start_pidsArr,
+ size_t size_start_pidsArr,
+
+ int64_t *end_pidsArr,
+ size_t size_end_pidsArr,
+
+
+ char driving_side,
+ bool details,
+ bool directed,
+ bool only_cost,
+ bool normal,
+
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+ char** log_msg,
+ char** notice_msg,
+ char** err_msg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_WITHPOINTS_WITHPOINTS_DRIVER_H_
diff --git a/include/drivers/yen/ksp_driver.h b/include/drivers/yen/ksp_driver.h
new file mode 100644
index 0000000..5537d7b
--- /dev/null
+++ b/include/drivers/yen/ksp_driver.h
@@ -0,0 +1,55 @@
+/*PGR-GNU*****************************************************************
+File: ksp_driver.h
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_YEN_KSP_DRIVER_H_
+#define INCLUDE_DRIVERS_YEN_KSP_DRIVER_H_
+#pragma once
+
+#include "c_types/pgr_edge_t.h"
+#include "c_types/general_path_element_t.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ void do_pgr_ksp(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ int64_t start_vid,
+ int64_t end_vid,
+ int no_paths,
+ bool directed,
+ bool heap_paths,
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // INCLUDE_DRIVERS_YEN_KSP_DRIVER_H_
diff --git a/include/drivers/yen/withPoints_ksp_driver.h b/include/drivers/yen/withPoints_ksp_driver.h
new file mode 100644
index 0000000..cc6ebfc
--- /dev/null
+++ b/include/drivers/yen/withPoints_ksp_driver.h
@@ -0,0 +1,71 @@
+/*PGR-GNU*****************************************************************
+File: withPoints_driver.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_DRIVERS_YEN_WITHPOINTS_KSP_DRIVER_H_
+#define INCLUDE_DRIVERS_YEN_WITHPOINTS_KSP_DRIVER_H_
+#pragma once
+
+#include "c_types/point_on_edge_t.h"
+#include "c_types/pgr_edge_t.h"
+#include "c_types/general_path_element_t.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ // CREATE OR REPLACE FUNCTION pgr_withPointKsp(
+ // edges_sql TEXT,
+ // points_sql TEXT,
+ // start_pid BIGINT,
+ // end_pid BIGINT,
+ // directed BOOLEAN DEFAULT true,
+ int do_pgr_withPointsKsp(
+ pgr_edge_t *edges, size_t total_edges,
+ Point_on_edge_t *points, size_t total_points,
+ pgr_edge_t *edges_of_points, size_t total_edges_of_points,
+ int64_t start_pid,
+ int64_t end_pid,
+ int k,
+ bool directed,
+ bool heap_paths,
+ char driving_side,
+ bool details,
+
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg);
+
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif // INCLUDE_DRIVERS_YEN_WITHPOINTS_KSP_DRIVER_H_
diff --git a/include/lineGraph/pgr_lineGraph.hpp b/include/lineGraph/pgr_lineGraph.hpp
new file mode 100644
index 0000000..0835c0a
--- /dev/null
+++ b/include/lineGraph/pgr_lineGraph.hpp
@@ -0,0 +1,592 @@
+/*PGR-GNU*****************************************************************
+File: pgr_lineGraph.hpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_COMPONENTS_PGR_LINEGRAPH_HPP_
+#define INCLUDE_COMPONENTS_PGR_LINEGRAPH_HPP_
+#pragma once
+
+
+#include <vector>
+#include <set>
+#include <utility>
+#include <map>
+
+#include "cpp_common/pgr_base_graph.hpp"
+#include "cpp_common/line_vertex.h"
+#include "dijkstraTRSP/restriction.h"
+
+namespace pgrouting {
+
+namespace graph {
+template <class G, typename T_V, typename T_E>
+class Pgr_lineGraph;
+} // namespace graph
+
+typedef graph::Pgr_lineGraph <
+boost::adjacency_list < boost::vecS, boost::vecS,
+ boost::bidirectionalS,
+ Line_vertex, Basic_edge >,
+ Line_vertex, Basic_edge > LinearDirectedGraph;
+
+namespace graph {
+
+template <class G, typename T_V, typename T_E>
+class Pgr_lineGraph : public Pgr_base_graph<G, T_V, T_E> {
+ private:
+ int64_t m_num_edges;
+ std::map < int64_t, pgr_edge_t > m_edges;
+ std::map < std::pair< int64_t, int64_t >, int64_t > m_vertex_map;
+
+ void add_vertices(std::vector< T_V > vertices);
+
+ void create_edges(const pgrouting::DirectedGraph& digraph);
+
+ template < typename T >
+ void graph_add_edge(int64_t, const T &source, const T&target, int64_t, int64_t);
+
+#if 0
+ template < typename T >
+ void disconnect_edge(const T& from, const T& to);
+
+ template < typename T >
+ void get_ids(std::vector< T >& restrictions);
+
+ void create_virtual_vertex(int64_t id);
+ void create_virtual_edge(
+ int64_t source_id,
+ int64_t source_vertex,
+ int64_t target_id,
+ int64_t target_vertex
+ );
+#endif
+
+ public:
+ typedef typename boost::graph_traits < G >::vertex_descriptor V;
+ typedef typename boost::graph_traits < G >::edge_descriptor E;
+ typedef typename boost::graph_traits < G >::vertex_iterator V_i;
+ typedef typename boost::graph_traits < G >::out_edge_iterator EO_i;
+ typedef typename boost::graph_traits < G >::in_edge_iterator EI_i;
+
+ std::ostringstream log;
+
+ explicit Pgr_lineGraph< G, T_V, T_E >(graphType gtype)
+ : Pgr_base_graph< G, T_V, T_E >(gtype),
+ m_num_edges(0) {
+ }
+
+ template < typename T >
+ void insert_vertices(const T* edges, int64_t count) {
+ insert_vertices(std::vector < T >(edges, edges + count));
+ }
+
+ template < typename T >
+ void insert_vertices(const std::vector < T > &edges) {
+
+ for (auto &it: edges)
+ m_edges[it.id] = it;
+ std::vector < Line_vertex > vertices = extract_vertices();
+
+#if 1
+ log << "\nVertices of line graph: \n";
+ for (auto vertex: vertices) {
+ log << vertex.id << "(" << vertex.source << " - > ";
+ log << vertex.target << ")" << vertex.cost << "\n";
+ }
+#endif
+
+ add_vertices(vertices);
+ }
+
+#if 0
+ template < typename T >
+ std::vector< Restriction > remove_restricted_edges(std::vector< T >& restrictions) {
+ get_ids(restrictions);
+ std::vector< T > remaining;
+ for (const auto &r: restrictions) {
+ if (r.restriction_size() > 2) {
+ remaining.push_back(r);
+ continue;
+ }
+ disconnect_edge(r.restrict_edges()[0], r.restrict_edges()[1]);
+ }
+ return remaining;
+ }
+#endif
+
+ std::vector < Line_vertex > extract_vertices();
+
+ void transform(pgrouting::DirectedGraph& digraph) {
+ create_edges(digraph);
+ }
+
+#if 0
+ void create_virtual_vertices();
+#endif
+
+ int64_t num_edges() const { return m_num_edges; }
+ std::vector< Line_graph_rt > get_postgres_results_undirected();
+ std::vector< Line_graph_rt > get_postgres_results_directed();
+
+ friend std::ostream& operator<<(
+ std::ostream &log, const Pgr_lineGraph< G, T_V, T_E > &g) {
+ typename Pgr_base_graph< G, T_V, T_E >::EO_i out, out_end;
+
+ for (auto vi = vertices(g.graph).first;
+ vi != vertices(g.graph).second; ++vi) {
+ if ((*vi) >= g.m_num_vertices) break;
+ log << (*vi) << ": " << " out_edges_of(" << g.graph[(*vi)] << "):";
+ for (boost::tie(out, out_end) = out_edges(*vi, g.graph);
+ out != out_end; ++out) {
+ log << ' '
+ << g.graph[*out].id << "=("
+ << g[g.source(*out)].id << ", "
+ << g[g.target(*out)].id << ")\t";
+ }
+ log << std::endl;
+ }
+ return log;
+ }
+};
+
+template < class G, typename T_V, typename T_E >
+std::vector< Line_graph_rt >
+Pgr_lineGraph< G, T_V, T_E >::get_postgres_results_undirected() {
+ std::vector< Line_graph_rt > results;
+
+ typename boost::graph_traits < G >::edge_iterator edgeIt, edgeEnd;
+ int64_t count = 0;
+
+ log << "\nPostgres results\n";
+ for (boost::tie(edgeIt, edgeEnd) = boost::edges(this->graph);
+ edgeIt != edgeEnd; edgeIt++) {
+ E e = *edgeIt;
+ auto e_source = this->graph[this->source(e)].vertex_id;
+ auto e_target = this->graph[this->target(e)].vertex_id;
+
+ log << "e_source = " << e_source << " | e_target = " << e_target << "\n";
+
+ Line_graph_rt edge = {
+ ++count,
+ e_source,
+ e_target,
+ 1.0,
+ -1.0
+ };
+ results.push_back(edge);
+ }
+
+ return results;
+}
+
+template < class G, typename T_V, typename T_E >
+std::vector< Line_graph_rt >
+Pgr_lineGraph< G, T_V, T_E >::get_postgres_results_directed() {
+ std::vector< Line_graph_rt > results;
+
+ typename boost::graph_traits < G >::edge_iterator edgeIt, edgeEnd;
+ std::map < std::pair<int64_t,int64_t >, Line_graph_rt > unique;
+ int64_t count = 0;
+
+ log << "\nPostgres results\n";
+ for (boost::tie(edgeIt, edgeEnd) = boost::edges(this->graph);
+ edgeIt != edgeEnd; edgeIt++) {
+ E e = *edgeIt;
+ auto e_source = this->graph[this->source(e)].vertex_id;
+ auto e_target = this->graph[this->target(e)].vertex_id;
+
+ log << "e_source = " << e_source << " | e_target = " << e_target << "\n";
+
+ if(unique.find( {e_target, e_source} ) != unique.end()) {
+ unique[ std::pair<int64_t,int64_t>(e_target, e_source) ].reverse_cost = 1.0;
+ continue;
+ }
+ e_source *= -1;
+ e_target *= -1;
+ if(unique.find( {e_target, e_source} ) != unique.end()) {
+ unique[ std::pair<int64_t,int64_t>(e_target, e_source) ].reverse_cost = 1.0;
+ continue;
+ }
+ e_source *= -1;
+ e_target *= -1;
+
+ Line_graph_rt edge = {
+ ++count,
+ e_source,
+ e_target,
+ 1.0,
+ -1.0
+ };
+ unique[ std::pair<int64_t,int64_t>(e_source, e_target)] = edge;
+ }
+ for (const auto &edge: unique) {
+ results.push_back(edge.second);
+ }
+ return results;
+}
+
+#if 0
+template < class G, typename T_V, typename T_E >
+template < typename T >
+void
+Pgr_lineGraph< G, T_V, T_E >::get_ids(std::vector< T >& restrictions) {
+ for (auto &r: restrictions) {
+ auto restrict_edges = r.restrict_edges();
+ std::vector < int64_t > temp;
+
+ pgassert(m_edges.find(restrict_edges[0]) != m_edges.end());
+ auto prev = m_edges[restrict_edges[0]];
+
+ for (auto i = 1; i < (int64_t)restrict_edges.size(); i++) {
+ pgassert(m_edges.find(restrict_edges[i]) != m_edges.end());
+ auto cur = m_edges[restrict_edges[i]];
+
+ if (prev.target == cur.target) {
+ std::swap(cur.source, cur.target);
+ std::swap(cur.cost, cur.reverse_cost);
+ }
+
+ if(prev.source == cur.source) {
+ std::swap(prev.source, prev.target);
+ std::swap(prev.cost, prev.reverse_cost);
+ }
+
+ if(prev.source == cur.target) {
+ std::swap(prev.source, prev.target);
+ std::swap(prev.cost, prev.reverse_cost);
+ std::swap(cur.source, cur.target);
+ std::swap(cur.cost, cur.reverse_cost);
+ }
+
+ pgassert(m_vertex_map.find( {prev.id, prev.source} ) != m_vertex_map.end());
+ pgassert(m_vertex_map.find( {cur.id, cur.source} ) != m_vertex_map.end());
+
+ if (temp.empty()) {
+ temp.push_back( m_vertex_map[ {prev.id, prev.source} ] );
+ }
+
+ temp.push_back( m_vertex_map[ {cur.id, cur.source} ] );
+ prev = cur;
+ }
+ r.clear();
+ for (const auto &it: temp) r.restrict_edges(it);
+ }
+}
+
+template < class G, typename T_V, typename T_E >
+template < typename T >
+void
+Pgr_lineGraph< G, T_V, T_E >::disconnect_edge(const T& from, const T& to) {
+
+ pgassert(this->vertices_map.find(from) != this->vertices_map.end());
+ pgassert(this->vertices_map.find(to) != this->vertices_map.end());
+
+ auto vm_s = this->get_V(from);
+ auto vm_t = this->get_V(to);
+
+ boost::remove_edge(vm_s, vm_t, this->graph);
+}
+
+template < class G, typename T_V, typename T_E >
+void
+Pgr_lineGraph< G, T_V, T_E >::create_virtual_vertex(int64_t id) {
+ ++(this->m_num_vertices);
+ auto v = add_vertex(this->graph);
+ this->vertices_map[this->m_num_vertices] = v;
+ this->graph[v].cp_members(this->m_num_vertices, id);
+ m_vertex_map[ {id, -1} ] = this->m_num_vertices;
+ pgassert(boost::num_vertices(this->graph) == this->num_vertices());
+}
+
+template < class G, typename T_V, typename T_E >
+void
+Pgr_lineGraph< G, T_V, T_E >::create_virtual_edge(
+ int64_t source_id,
+ int64_t source_vertex,
+ int64_t target_id,
+ int64_t target_vertex) {
+ bool inserted;
+ typename Pgr_base_graph< G, T_V, T_E >::E e;
+
+ if (source_id < 0) source_id *= -1;
+ if (target_id < 0) target_id *= -1;
+
+ pgassert(m_vertex_map.find( {source_id, source_vertex} ) !=
+ m_vertex_map.end());
+ pgassert(m_vertex_map.find( {target_id, target_vertex} ) !=
+ m_vertex_map.end());
+
+ auto index_source_edge = m_vertex_map[ {source_id, source_vertex} ];
+ auto index_target_edge = m_vertex_map[ {target_id, target_vertex} ];
+
+ auto vm_s = this->get_V(index_source_edge);
+ auto vm_t = this->get_V(index_target_edge);
+
+ boost::tie(e, inserted) =
+ boost::add_edge(vm_s, vm_t, this->graph);
+
+ ++m_num_edges;
+ this->graph[e].id = m_num_edges;
+}
+
+template < class G, typename T_V, typename T_E >
+void
+Pgr_lineGraph< G, T_V, T_E >::create_virtual_vertices() {
+ V_i vertexIt, vertexEnd;
+ boost::tie(vertexIt, vertexEnd) = boost::vertices(this->graph);
+ for (;vertexIt != vertexEnd; vertexIt++) {
+ auto vertex = this->graph[*vertexIt];
+ if (!m_vertex_map.count( {vertex.source, -1} )) {
+ create_virtual_vertex(vertex.source);
+ }
+ if(!m_vertex_map.count( {vertex.target, -1} )) {
+ create_virtual_vertex(vertex.target);
+ }
+
+ pgassert(m_vertex_map.find( {vertex.source, -1} ) !=
+ m_vertex_map.end());
+ pgassert(m_vertex_map.find( {vertex.target, -1} ) !=
+ m_vertex_map.end());
+
+ create_virtual_edge(vertex.source, -1, vertex.vertex_id, vertex.source);
+ create_virtual_edge(vertex.vertex_id, vertex.source, vertex.target, -1);
+ }
+}
+#endif
+
+template < class G, typename T_V, typename T_E >
+std::vector < Line_vertex >
+Pgr_lineGraph< G, T_V, T_E >::extract_vertices() {
+ /*
+ m_vertex_map stores a unique id assigned to each vertex of Line Graph.
+
+ In case of a directed edge, either 1 or 2 vertices are to be created in
+ the Line Graph for each of the edges.
+ Consider the following edge in directed graph:-
+ ID = 1 | source = 2 | target = 3 | cost = 10 | reverse_cost = 20
+ This creates 2 vertices in Line Graph:-
+ 1. ID = 1 | source = 2 | target = 3 | cost = 10
+ 2. ID = 1 | source = 3 | target = 2 | cost = 25
+ So, the values stored in m_vertex_map would be:-
+ 1. {1, 2} = 1(Denoting the edge from 2 - > 3 of cost 10).
+ 2. {1, 3} = 2(Denoting the edge from 3 - > 2 of cost 25).
+ where {key} = value in m_vertex_map.
+
+ In case of undirected edge, either 2 or 4 vertices are to be created in
+ the Line Graph for each of the edges.
+ Consider the following edge in an undirected graph:-
+ ID = 1 | source = 2 | target = 3 | cost = 10 | reverse_cost = 25
+ This creates the following 4 vertices in Line Graph:-
+ 1. ID = 1 | source = 2 | target = 3 | cost = 10
+ 2. ID = 1 | source = 3 | target = 2 | cost = 10
+ 3. ID = 1 | source = 3 | target = 2 | cost = 25
+ 4. ID = 1 | source = 2 | target = 3 | cost = 25
+ so, the values stored in m_vertex_map would be:-
+ 1. {1, 2} = 1(Denoting the edge from 2 - > 3 of cost 10).
+ 2. {-1, 3} = 2(Denoting the edge from 3 - > 2 of cost 10).
+ 3. {1, 3} = 3(Deonting the edge from 3 - > 2 of cost 25).
+ 4. {-1, 2} = 4(Denoting the edge from 2 - > 3 of cost 25).
+ where {key} = value in m_vertex_map.
+ */
+ if (m_edges.empty()) return std::vector< Line_vertex >();
+
+ std::vector< Line_vertex > vertices;
+
+#if 0
+ log << "\nEdges of original graph\n";
+#endif
+
+ for (const auto &it : m_edges) {
+ auto edge = it.second;
+ Line_vertex vertex(edge);
+
+#if 1
+ log << "ID: " << edge.id;
+ log << "| source: " << edge.source;
+ log << "| target: " << edge.target;
+ log << "| cost: " << edge.cost;
+ log << "| reverse_cost: " << edge.reverse_cost << "\n\n";
+#endif
+
+ if (edge.cost > 0) {
+ vertex.id = (++(this->m_num_vertices));
+ vertices.push_back(vertex);
+ m_vertex_map[ std::pair<int64_t,int64_t>(edge.id, edge.source) ] = this->m_num_vertices;
+
+ if (this->m_gType == UNDIRECTED) {
+ vertex.id = (++(this->m_num_vertices));
+ std::swap(vertex.source, vertex.target);
+ vertices.push_back(vertex);
+ m_vertex_map[std::pair<int64_t,int64_t>(-1*edge.id, edge.target)] = this->m_num_vertices;
+ std::swap(vertex.source, vertex.target);
+ }
+ }
+
+ if (edge.reverse_cost > 0) {
+ vertex.id = (++(this->m_num_vertices));
+ vertex.cost = edge.reverse_cost;
+ vertex.vertex_id *= -1;
+ std::swap(vertex.source, vertex.target);
+ vertices.push_back(vertex);
+ m_vertex_map[ std::pair<int64_t,int64_t>(edge.id, edge.target) ] = this->m_num_vertices;
+
+ if (this->m_gType == UNDIRECTED) {
+ vertex.id = (++(this->m_num_vertices));
+ std::swap(vertex.source, vertex.target);
+ vertices.push_back(vertex);
+ m_vertex_map[std::pair<int64_t,int64_t>(-1*edge.id, edge.source)] = this->m_num_vertices;
+ }
+ }
+ }
+#if 0
+ for (auto it: m_vertex_map) {
+ log << it.first.first << " | " << it.first.second << " | " << it.second << "\n";
+ }
+#endif
+ return vertices;
+}
+
+template < class G, typename T_V, typename T_E >
+template < typename T>
+void
+Pgr_lineGraph< G, T_V, T_E >::graph_add_edge(
+ int64_t _id,
+ const T &source,
+ const T &target,
+ int64_t source_in_edge,
+ int64_t source_out_edge) {
+
+ bool inserted;
+ typename Pgr_base_graph< G, T_V, T_E >::E e;
+
+ pgassert(m_vertex_map.find( {source, source_in_edge} ) !=
+ m_vertex_map.end());
+ pgassert(m_vertex_map.find( {target, source_out_edge} ) !=
+ m_vertex_map.end());
+
+ auto index_source_edge = m_vertex_map[ std::pair<int64_t,int64_t>(source, source_in_edge) ];
+ auto index_target_edge = m_vertex_map[ std::pair<int64_t,int64_t>(target, source_out_edge) ];
+
+#if 0
+ log << "\nsource_in_edge = " << source_in_edge << " | "
+ << "source_out_edge = " << source_out_edge << " | "
+ << "index_source_edge = " << index_source_edge << " | "
+ << "index_target_edge = " << index_target_edge << " | "
+ << "edge.source = " << source << " | "
+ << "edge.target = " << target << "\n";
+#endif
+
+ auto vm_s = this->get_V(index_source_edge);
+ auto vm_t = this->get_V(index_target_edge);
+
+ pgassert(this->vertices_map.find(index_source_edge) != this->vertices_map.end());
+ pgassert(this->vertices_map.find(index_target_edge) != this->vertices_map.end());
+
+ boost::tie(e, inserted) =
+ boost::add_edge(vm_s, vm_t, this->graph);
+
+ this->graph[e].id = _id;
+}
+
+template < class G, typename T_V, typename T_E >
+void
+Pgr_lineGraph< G, T_V, T_E >::create_edges(
+ const pgrouting::DirectedGraph& digraph) {
+
+ V_i vertexIt, vertexEnd;
+ EO_i e_outIt, e_outEnd;
+ EI_i e_inIt, e_inEnd;
+
+ /*
+ for (each vertex v in original graph) {
+ for( all incoming edges inn to vertex v) {
+ for( all outgoing edges outt from vertex v) {
+ create an edge in the line graph(inn, outt);
+ }
+ }
+ }
+ */
+
+ for(boost::tie(vertexIt, vertexEnd) = boost::vertices(digraph.graph);
+ vertexIt != vertexEnd; vertexIt++) {
+ V vertex = *vertexIt;
+
+ for (boost::tie(e_outIt, e_outEnd) = boost::out_edges(vertex, digraph.graph);
+ e_outIt != e_outEnd; e_outIt++) {
+ for (boost::tie(e_inIt, e_inEnd) = boost::in_edges(vertex, digraph.graph);
+ e_inIt != e_inEnd; e_inIt++) {
+
+#if 0
+ log << "\n";
+ log << digraph.graph[*inIt].id << " | " << digraph[digraph.source(*inIt)].id << " | " << digraph[digraph.target(*inIt)].id << " | " << digraph.graph[*inIt].cost << "\n";
+ log << digraph.graph[*outIt].id << " | " << digraph[digraph.source(*outIt)].id << " | " << digraph[digraph.target(*outIt)].id << " | " << digraph.graph[*outIt].cost << "\n\n";
+#endif
+
+ /*
+ Prevent self-edges from being created in the Line Graph
+ */
+ if (labs(digraph.graph[*e_inIt].id) == labs(digraph.graph[*e_outIt].id))
+ continue;
+
+ auto source_in_edge = digraph.source(*e_inIt);
+
+#if 0
+ log << "source = " << digraph[source_in_edge] << " | mid = " << digraph[vertex] << "\n\n\n";
+#endif
+
+ ++m_num_edges;
+
+ graph_add_edge(
+ m_num_edges,
+ (digraph.graph[*e_inIt]).id,
+ (digraph.graph[*e_outIt]).id,
+ digraph[source_in_edge].id,
+ digraph[vertex].id
+ );
+ }
+ }
+ }
+}
+
+template < class G, typename T_V, typename T_E >
+ void
+ Pgr_lineGraph< G, T_V, T_E >::add_vertices(
+ std::vector< T_V > vertices) {
+
+ for (const auto vertex : vertices) {
+ pgassert(this->vertices_map.find(vertex.id) == this->vertices_map.end());
+
+ auto v = add_vertex(this->graph);
+ this->vertices_map[vertex.id] = v;
+ this->graph[v].cp_members(vertex);
+
+ pgassert(boost::num_vertices(this->graph) == this->num_vertices());
+ }
+ return;
+ }
+
+} // namespace graph
+} // namespace pgrouting
+
+#endif // INCLUDE_COMPONENTS_PGR_LINEGRAPH_HPP_
diff --git a/include/tsp/eucledianDmatrix.h b/include/tsp/eucledianDmatrix.h
new file mode 100644
index 0000000..882803e
--- /dev/null
+++ b/include/tsp/eucledianDmatrix.h
@@ -0,0 +1,124 @@
+/*PGR-GNU*****************************************************************
+
+FILE: eucledianDmatrix.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_TSP_EUCLEDIANDMATRIX_H_
+#define INCLUDE_TSP_EUCLEDIANDMATRIX_H_
+#pragma once
+
+#include <iostream>
+#include <vector>
+
+#include "c_types/coordinate_t.h"
+
+namespace pgrouting {
+namespace tsp {
+
+class Tour; // for tourCost
+
+class eucledianDmatrix {
+ public:
+ eucledianDmatrix() = default;
+ explicit eucledianDmatrix(
+ const std::vector< Coordinate_t > &data_coordinates);
+
+ bool has_no_infinity() const;
+ bool obeys_triangle_inequality() const;
+ bool is_symmetric() const;
+
+ /*! @brief sets a special value for the distance(i,j)
+ *
+ * @param[in] i - index in matrix
+ * @param[in] j - index in matrix
+ * @param[in] dist - distance from i to j & from j to i
+ *
+ */
+ void set(size_t i, size_t j, double dist) {
+ row = i; column = j; special_distance = dist;}
+
+ /*! @brief original id -> true
+ *
+ * @param[in] id original id
+ *
+ * @returns true if id is in the distance table
+ */
+ bool has_id(int64_t id) const;
+
+ /*! @brief original id -> idx
+ *
+ * @param[in] id - original id
+ * @returns idx index of the id in the distance table
+ */
+ size_t get_index(int64_t id) const;
+
+ /*! @brief idx -> original id
+ *
+ * @param[in] idx - index (i-th coordinate)
+ * @returns the original id corresponding to idx
+ */
+ int64_t get_id(size_t idx) const;
+
+ /*! @brief |idx|
+ *
+ * @returns the total number of coordinates
+ */
+ size_t size() const {return ids.size();}
+
+ /*! @brief tour evaluation
+ *
+ * @param[in] tour
+ * @returns total cost of traversing the tour
+ */
+ double tourCost(const Tour &tour) const;
+
+ /*! @brief returns a row of distances
+ *
+ * @param[in] idx row index
+ *
+ * @returns distances from idx to all other coordinates
+ */
+ const std::vector<double> get_row(size_t idx) const;
+
+ double comparable_distance(size_t i, size_t j) const;
+ double distance(size_t i, size_t j) const;
+
+ friend std::ostream& operator<<(
+ std::ostream &log,
+ const eucledianDmatrix &matrix);
+
+ protected:
+ void set_ids();
+ std::vector<int64_t> ids;
+
+ private:
+ std::vector < Coordinate_t > coordinates;
+ size_t row;
+ size_t column;
+ double special_distance;
+};
+
+} // namespace tsp
+} // namespace pgrouting
+
+#endif // INCLUDE_TSP_EUCLEDIANDMATRIX_H_
diff --git a/include/tsp/pgr_tsp.cpp b/include/tsp/pgr_tsp.cpp
new file mode 100644
index 0000000..4a08bc6
--- /dev/null
+++ b/include/tsp/pgr_tsp.cpp
@@ -0,0 +1,572 @@
+/*PGR-GNU*****************************************************************
+ * File: pgr_tsp.cpp
+ *
+ * Generated with Template by:
+ * Copyright (c) 2015 pgRouting developers
+ * Mail: project at pgrouting.org
+ *
+ * Function's developer:
+ * Copyright (c) 2015 Celia Virginia Vergara Castillo
+ * Mail: vicky_vergara at hotmail.com
+ *
+ * ------
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * ********************************************************************PGR-GNU*/
+
+
+#include "tsp/pgr_tsp.hpp"
+
+#include <time.h>
+
+#include <utility>
+#include <iomanip>
+#include <limits>
+#include <vector>
+#include <set>
+#include <algorithm>
+#include <cmath>
+
+#include "cpp_common/pgr_assert.h"
+
+
+
+static
+size_t
+rand(size_t n) {
+ pgassert(n > 0);
+ return static_cast< size_t >(std::rand() % n);
+}
+
+
+static
+size_t
+succ(size_t i, size_t n) {
+ pgassert(n > 0);
+ return static_cast<size_t>((i + 1) % n);
+}
+
+static
+size_t
+pred(size_t i, size_t n) {
+ return i == 0? n - 1: i -1;
+}
+
+
+namespace pgrouting {
+namespace tsp {
+
+template < typename MATRIX >
+void TSP<MATRIX>::invariant() const {
+ /* the calculated value & the actual value are the same */
+ pgassert(std::fabs(tourCost(current_tour) - current_cost) < epsilon);
+ pgassert(std::fabs(tourCost(best_tour) - bestCost) < epsilon);
+ pgassert(n == MATRIX::ids.size());
+ pgassert(n == current_tour.size());
+ pgassert(n == best_tour.size());
+}
+
+template < typename MATRIX >
+void
+TSP<MATRIX>::update_if_best() {
+ invariant();
+ ++updatecalls;
+
+ if (current_cost < bestCost) {
+ ++improve_count;
+ best_tour = current_tour;
+ bestCost = current_cost;
+ }
+
+ invariant();
+}
+
+
+
+template < typename MATRIX >
+size_t
+TSP<MATRIX>::find_closest_city(
+ size_t current_city,
+ const std::set<size_t> inserted) const {
+ invariant();
+
+ auto distance_row(get_row(current_city));
+ pgassert(distance_row.size() == n);
+
+#ifndef NDEBUG
+ std::ostringstream err;
+ for (const auto &d : distance_row) {
+ err << d << ", ";
+ }
+#endif
+
+ size_t best_city = 0;
+ auto best_distance = (std::numeric_limits<double>::max)();
+#ifndef NDEBUG
+ bool found(false);
+#endif
+
+ for (size_t i = 0; i < distance_row.size(); ++i) {
+ if (i == current_city) continue;
+ if (inserted.find(i) != inserted.end()) continue;
+ if (distance_row[i] < best_distance) {
+ best_city = i;
+ best_distance = distance_row[i];
+#ifndef NDEBUG
+ found = true;
+#endif
+ }
+ }
+ pgassertwm(found, err.str());
+
+ invariant();
+ return best_city;
+}
+
+
+
+template < typename MATRIX >
+void
+TSP<MATRIX>::greedyInitial(size_t idx_start) {
+ invariant();
+
+ std::set<size_t> pending(best_tour.cities.begin(), best_tour.cities.end());
+ std::set<size_t> inserted;
+ std::vector<size_t> tour_to_be;
+
+ auto current_city = idx_start;
+
+#ifndef NDEBUG
+ std::ostringstream err;
+ auto ps(pending.size());
+#endif
+
+ pending.erase(idx_start);
+
+#ifndef NDEBUG
+ pgassert(pending.size() == (ps - 1));
+#endif
+
+ tour_to_be.push_back(current_city);
+ inserted.insert(current_city);
+
+ while (!pending.empty()) {
+ auto next_city = find_closest_city(current_city, inserted);
+ tour_to_be.push_back(next_city);
+ inserted.insert(next_city);
+
+#ifndef NDEBUG
+ auto ps(pending.size());
+ err << "before";
+ for (const auto p : pending) {
+ err << p << ",";
+ }
+#endif
+
+ pending.erase(next_city);
+
+#ifndef NDEBUG
+ err << "\nafter deleting" << next_city << ":\t";
+ for (const auto p : pending) {
+ err << p << ",";
+ }
+ pgassertwm(pending.size() == (ps - 1), err.str());
+#endif
+
+ current_city = next_city;
+ }
+
+ pgassert(tour_to_be.size() == n);
+ current_tour = Tour(tour_to_be);
+ current_cost = tourCost(current_tour);
+ update_if_best();
+ swapClimb();
+
+ invariant();
+ return;
+}
+
+
+
+/*
+ *
+ * 0 1 2 3 4 5 6 7 8 9
+ * p f l
+ * slides [4,5,6] to position p
+ *
+ * 0 1 4 5 6 2 3 7 8 9
+ *
+ *
+ * 0 1 2 3 4 5 6 7 8 9
+ * f l p
+ * slides [2,3,4] to position p
+ *
+ * 0 1 6 7 2 3 4 5 8 9
+ *
+ *
+ */
+
+template < typename MATRIX >
+double
+TSP<MATRIX>::getDeltaSlide(size_t place, size_t first, size_t last) const {
+ invariant();
+#ifndef NDEBUG
+ std::ostringstream err;
+ err << "\tplace" << place
+ << "\tfirst" << first
+ << "\tlast" << last
+ << "\tn" << n;
+#endif
+
+ pgassertwm(place < first || place > last, err.str());
+ pgassertwm(first < last, err.str());
+ pgassertwm(last < n, err.str());
+ pgassertwm(place < n, err.str());
+ pgassertwm(first < n, err.str());
+
+ /*
+ * Initial state
+ * [...f] [f+1 ... l] [l+1 ...p] [p+1 ...]
+ *
+ * final state
+ * [...f] [l+1 ... p] [f+1 ...l] [p+1 ...]
+ *
+ *
+ * Initial state
+ * [f+1 ... l]
+ * : :
+ * [...f] [l+1 ...p] [p+1 ...]
+ *
+ * final state
+ * [f+1 ... l]
+ * : :
+ * [...f] [l+1 ...p] [p+1 ...]
+ *
+ */
+
+ auto cityP = current_tour.cities[place];
+ auto cityF = current_tour.cities[first];
+ auto cityL = current_tour.cities[last];
+ auto cityP1 = current_tour.cities[succ(place, n)];
+ auto cityF1 = current_tour.cities[succ(first, n)];
+ auto cityL1 = current_tour.cities[succ(last, n)];
+
+ auto delta(
+ distance(cityF, cityL1)
+ + distance(cityP, cityF1)
+ + distance(cityL, cityP1)
+ - distance(cityF, cityF1)
+ - distance(cityL, cityL1)
+ - distance(cityP, cityP1));
+
+#ifndef NDEBUG
+ Tour new_tour(current_tour);
+ new_tour.slide(place, first, last);
+
+ err << "\ncurrent_tour:";
+ for (const auto id : current_tour.cities) {
+ err << id << ", ";
+ }
+
+ err << "\nnew_tour:";
+ for (const auto id : new_tour.cities) {
+ err << id << ", ";
+ }
+
+ auto exactDelta = tourCost(new_tour) - tourCost(current_tour);
+ err << "\n"
+ << exactDelta
+ << " - " << delta
+ << " = "
+ << exactDelta - delta
+ << " = "
+ << std::fabs(exactDelta - delta);
+ pgassertwm(std::fabs((exactDelta - delta)) < epsilon, err.str());
+#endif
+
+ invariant();
+ return delta;
+}
+
+
+/*
+ * c..d c..d
+ * | | => | |
+ * | | | |
+ * b -- a e --f b -- e a -- f
+ *
+ * a b 1 2 .. n-1 n c d
+ * a c n n-1 .. 2 1 c d
+ */
+template < typename MATRIX >
+double
+TSP<MATRIX>::getDeltaSwap(size_t posA, size_t posE) const {
+ invariant();
+
+ if (succ(posE, n ) == posA) std::swap(posA, posE);
+ if (succ(posA, n) == posE) {
+ auto b = current_tour.cities[pred(posA, n)];
+ auto a = current_tour.cities[posA];
+
+ auto e = current_tour.cities[posE];
+ auto f = current_tour.cities[succ(posE, n)];
+ return distance(b, e) + distance(e, a) + distance(a, f)
+ - distance(b, a) - distance(a, e) - distance(e, f);
+ }
+
+ auto b = current_tour.cities[pred(posA, n)];
+ auto a = current_tour.cities[posA];
+ auto c = current_tour.cities[succ(posA, n)];
+
+ auto d = current_tour.cities[pred(posE, n)];
+ auto e = current_tour.cities[posE];
+ auto f = current_tour.cities[succ(posE, n)];
+
+#ifndef NDEBUG
+ auto delta = distance(b, e)
+ + distance(e, c) + distance(d, a) + distance(a, f)
+ - distance(b, a) - distance(a, c) - distance(d, e) - distance(e, f);
+ auto new_tour(current_tour);
+ new_tour.swap(posA, posE);
+ auto exactDelta = tourCost(new_tour) - tourCost(current_tour);
+ std::ostringstream log;
+ log << exactDelta
+ << " - " << delta
+ << " = "
+ << exactDelta - delta
+ << " = "
+ << std::fabs(exactDelta - delta);
+
+ pgassertwm(std::fabs((exactDelta - delta)) < epsilon, log.str());
+#endif
+
+ invariant();
+ return distance(b, e) + distance(e, c) + distance(d, a) + distance(a, f)
+ - distance(b, a) - distance(a, c) - distance(d, e) - distance(e, f);
+}
+
+/*
+ * ..A C
+ * [ )
+ * ..a b 1 2 .. n-1 n c d ..
+ * ..a c n n-1 .. 2 1 b d ..
+ */
+template < typename MATRIX >
+double
+TSP<MATRIX>::getDeltaReverse(size_t posA, size_t posC) const {
+ invariant();
+
+ if (posA == (posC - 1)) return 0;
+ auto a = current_tour.cities[posA];
+ auto b = current_tour.cities[succ(posA, n)];
+
+ auto c = current_tour.cities[posC];
+ auto d = current_tour.cities[succ(posC, n)];
+
+
+#ifndef NDEBUG
+ auto delta =
+ distance(a, c) + distance(b, d) - distance(a, b) - distance(c, d);
+ auto new_tour(current_tour);
+ new_tour.reverse(posA, posC);
+ auto exactDelta = tourCost(new_tour) - tourCost(current_tour);
+
+ std::ostringstream log;
+ log << "exactDelta(" << exactDelta
+ << ") - delta(" << delta
+ << ") = "
+ << exactDelta - delta
+ << " = "
+ << (exactDelta - delta)
+ << " epsilon = " << epsilon;
+ pgassertwm(std::fabs((exactDelta - delta)) < epsilon, log.str());
+#endif
+
+ invariant();
+ return distance(a, c) + distance(b, d) - distance(a, b) - distance(c, d);
+}
+
+template < typename MATRIX >
+void
+TSP<MATRIX>::swapClimb() {
+ invariant();
+ pgassert(n > 2);
+
+ // auto first = std::rand() % n;
+ // for (size_t first = std::rand() % n; first < n; first++) {
+ for (size_t first = 0; first < n; first++) {
+ for (size_t last = first + 1; last < n; last++) {
+ pgassert(first < last);
+
+ auto energyChange = getDeltaSwap(first, last);
+
+ if (energyChange < 0 && epsilon < std::fabs(energyChange)) {
+ ++swap_count;
+ current_cost += energyChange;
+ current_tour.swap(first, last);
+ update_if_best();
+ }
+ }
+ }
+ invariant();
+}
+
+template < typename MATRIX >
+void
+TSP<MATRIX>::annealing(
+ double temperature,
+ double final_temperature,
+ double cooling_factor,
+ int64_t tries_per_temperature,
+ int64_t max_changes_per_temperature,
+ int64_t max_consecutive_non_changes,
+ bool randomize,
+ double time_limit) {
+ invariant();
+ clock_t start_time(clock());
+
+ if (randomize) {
+ std::srand(static_cast<unsigned int>(time(NULL)));
+ } else {
+ std::srand(1);
+ }
+
+
+
+
+ /* annealing schedule */
+ for (; final_temperature < temperature; temperature *= cooling_factor) {
+ invariant();
+
+ log << "\nCycle(" << temperature <<") ";
+
+ /*
+ how many times the tour changed in current temperature
+ */
+ int64_t pathchg = 0;
+ size_t enchg = 0;
+ int64_t non_change = 0;
+ for (int64_t j = 0; j < tries_per_temperature; j++) {
+ ++non_change;
+
+ auto which = rand(2);
+ // which = 1;
+ switch (which) {
+ case 0: {
+ /* reverse */
+ pgassert(n > 2);
+
+ auto c1 = std::rand() % n;
+ auto c2 = std::rand() % n;
+
+ if (c1 == c2) c2 = succ(c2, n);
+ if (c1 == (c2 - 1)) c2 = succ(c2, n);
+ if (c1 > c2) std::swap(c1, c2);
+
+ pgassert(c1 != c2);
+ pgassert(c1 < n && c2 < n);
+ pgassert(c1 < c2);
+
+ auto energyChange = getDeltaReverse(c1, c2);
+
+ if ( (energyChange < 0
+ && epsilon < std::fabs(energyChange))
+ || (0 < energyChange
+ && (
+ static_cast<double>(std::rand()) /
+ static_cast<double>(RAND_MAX))
+ < exp(-energyChange / temperature))) {
+ if (energyChange < 0) ++enchg;
+ ++reverse_count;
+ ++pathchg;
+ non_change = 0;
+ current_cost += energyChange;
+ current_tour.reverse(c1, c2);
+ update_if_best();
+ }
+ }
+ break;
+ case 1: {
+ /* slide */
+ if (n <= 3) {
+ break;
+ }
+
+ pgassert(n > 3);
+
+ auto first = std::rand() % n;
+ auto last = std::rand() % n;
+
+ if (first == last) last = succ(last, n);
+ if (first > last) std::swap(first, last);
+ if (first == 0 && last == (n - 1)) {
+ first = succ(first, n);
+ }
+
+ pgassert((n - (last - first) - 1) > 0);
+ auto place = std::rand() % (n - (last - first) - 1);
+ place = place < first? place :
+ last + (place - first) + 1;
+
+
+ pgassert((place < first
+ || place > last)
+ && (first < last));
+
+ auto energyChange = getDeltaSlide(
+ place, first, last);
+
+ if ((energyChange < 0
+ && epsilon < std::fabs(energyChange))
+ || (0 < energyChange
+ && (static_cast<double>(std::rand())
+ / static_cast<double>(RAND_MAX))
+ < exp(-energyChange / temperature))) {
+ if (energyChange < 0) ++enchg;
+ ++slide_count;
+ ++pathchg;
+ non_change = 0;
+ current_cost += energyChange;
+ current_tour.slide(place, first, last);
+ update_if_best();
+ }
+ }
+ break;
+ } // switch
+
+
+ if (max_changes_per_temperature < pathchg
+ && max_consecutive_non_changes < non_change ) {
+ break;
+ }
+ } // for tries per temperature
+
+ swapClimb();
+ clock_t current_time(clock());
+ double elapsed_time = static_cast<double>(
+ current_time - start_time) / CLOCKS_PER_SEC;
+ if (time_limit < elapsed_time) {
+ break;
+ }
+ log << "\ttotal changes =" << pathchg
+ << "\t" << enchg << " were because delta energy < 0";
+ if (pathchg == 0) break; /* if no change then quit */
+ } // for temperatures
+}
+
+} // namespace tsp
+} // namespace pgrouting
+
diff --git a/include/tsp/pgr_tsp.hpp b/include/tsp/pgr_tsp.hpp
new file mode 100644
index 0000000..ec93814
--- /dev/null
+++ b/include/tsp/pgr_tsp.hpp
@@ -0,0 +1,674 @@
+/*PGR-GNU*****************************************************************
+ * File: tsp_driver.cpp
+ *
+ * Generated with Template by:
+ * Copyright (c) 2015 pgRouting developers
+ * Mail: project at pgrouting.org
+ *
+ * Function's developer:
+ * Copyright (c) 2015 Celia Virginia Vergara Castillo
+ * Mail: vicky_vergara at hotmail.com
+ *
+ * ------
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_TSP_PGR_TSP_HPP_
+#define INCLUDE_TSP_PGR_TSP_HPP_
+#pragma once
+
+#include <time.h>
+
+#include <sstream>
+#include <vector>
+#include <set>
+#include <string>
+#include <utility>
+#include <limits>
+#include <cmath>
+
+#include "cpp_common/pgr_assert.h"
+#include "cpp_common/Dmatrix.h"
+#include "tsp/eucledianDmatrix.h"
+#include "tsp/tour.h"
+
+
+
+static
+size_t
+rand(size_t n) {
+ pgassert(n > 0);
+ return static_cast< size_t >(std::rand() % n);
+}
+
+
+static
+size_t
+succ(size_t i, size_t n) {
+ pgassert(n > 0);
+ return static_cast<size_t>((i + 1) % n);
+}
+
+static
+size_t
+pred(size_t i, size_t n) {
+ return i == 0? n - 1: i -1;
+}
+
+
+namespace pgrouting {
+namespace tsp {
+
+template < typename MATRIX >
+class TSP: public MATRIX {
+ public:
+ using MATRIX::distance;
+ using MATRIX::tourCost;
+ using MATRIX::get_row;
+
+ /*
+ * function members
+ */
+ explicit TSP(const MATRIX &_costs)
+ : MATRIX(_costs),
+ current_tour(_costs.size()),
+ best_tour(_costs.size()),
+ epsilon(0.000001),
+ n(_costs.size()),
+ updatecalls(0),
+ swap_count(0),
+ slide_count(0),
+ reverse_count(0),
+ improve_count(0) {
+ pgassert(n == MATRIX::size());
+ bestCost = MATRIX::tourCost(best_tour);
+ current_cost = MATRIX::tourCost(current_tour);
+ pgassert(bestCost == current_cost);
+ }
+
+
+ Tour get_tour() const {return best_tour;}
+
+ std::string get_stats() const {
+ std::ostringstream log1;
+ log1
+ << "\nTotal swaps: " << swap_count
+ << "\nTotal slides: " << slide_count
+ << "\nTotal reverses: " << reverse_count
+ << "\nTimes best tour changed: " << improve_count;
+ return log1.str();}
+
+ std::string get_log() const {
+ return log.str();}
+
+ void greedyInitial(size_t idx_start = 0);
+ void annealing(
+ double initial_temperature,
+ double final_temperature,
+ double cooling_factor,
+ int64_t tries_per_temperature,
+ int64_t max_changes_per_temperature,
+ int64_t max_consecutive_non_changes,
+ bool randomize,
+ double time_limit);
+
+
+ private:
+ Tour current_tour;
+ Tour best_tour;
+ double bestCost;
+ double current_cost;
+ double epsilon;
+ size_t n;
+
+ int updatecalls;
+
+ std::ostringstream log;
+ size_t swap_count;
+ size_t slide_count;
+ size_t reverse_count;
+ size_t improve_count;
+
+ private:
+ void invariant() const;
+
+ size_t find_closest_city(
+ size_t current_city,
+ const std::set<size_t> inserted) const;
+
+ double getDeltaSlide(
+ size_t posP,
+ size_t posF,
+ size_t posL) const;
+
+ void swapClimb();
+
+ double getDeltaSwap(
+ size_t posA,
+ size_t posC) const;
+
+ double getDeltaReverse(
+ size_t posA,
+ size_t posC) const;
+
+ void update_if_best();
+};
+
+
+
+template < typename MATRIX >
+void TSP<MATRIX>::invariant() const {
+ /* the calculated value & the actual value are the same */
+ pgassert(std::fabs(tourCost(current_tour) - current_cost) < epsilon);
+ pgassert(std::fabs(tourCost(best_tour) - bestCost) < epsilon);
+ pgassert(n == MATRIX::ids.size());
+ pgassert(n == current_tour.size());
+ pgassert(n == best_tour.size());
+}
+
+template < typename MATRIX >
+void
+TSP<MATRIX>::update_if_best() {
+ invariant();
+ ++updatecalls;
+
+ if (current_cost < bestCost) {
+ ++improve_count;
+ best_tour = current_tour;
+ bestCost = current_cost;
+ }
+
+ invariant();
+}
+
+
+
+template < typename MATRIX >
+size_t
+TSP<MATRIX>::find_closest_city(
+ size_t current_city,
+ const std::set<size_t> inserted) const {
+ invariant();
+
+ auto distance_row(get_row(current_city));
+ pgassert(distance_row.size() == n);
+
+#ifndef NDEBUG
+ std::ostringstream err;
+ for (const auto &d : distance_row) {
+ err << d << ", ";
+ }
+#endif
+
+ size_t best_city = 0;
+ auto best_distance = (std::numeric_limits<double>::max)();
+#ifndef NDEBUG
+ bool found(false);
+#endif
+
+ for (size_t i = 0; i < distance_row.size(); ++i) {
+ if (i == current_city) continue;
+ if (inserted.find(i) != inserted.end()) continue;
+ if (distance_row[i] < best_distance) {
+ best_city = i;
+ best_distance = distance_row[i];
+#ifndef NDEBUG
+ found = true;
+#endif
+ }
+ }
+ pgassertwm(found, err.str());
+
+ invariant();
+ return best_city;
+}
+
+
+
+template < typename MATRIX >
+void
+TSP<MATRIX>::greedyInitial(size_t idx_start) {
+ invariant();
+
+ std::set<size_t> pending(best_tour.cities.begin(), best_tour.cities.end());
+ std::set<size_t> inserted;
+ std::vector<size_t> tour_to_be;
+
+ auto current_city = idx_start;
+
+#ifndef NDEBUG
+ std::ostringstream err;
+ auto ps(pending.size());
+#endif
+
+ pending.erase(idx_start);
+
+#ifndef NDEBUG
+ pgassert(pending.size() == (ps - 1));
+#endif
+
+ tour_to_be.push_back(current_city);
+ inserted.insert(current_city);
+
+ while (!pending.empty()) {
+ auto next_city = find_closest_city(current_city, inserted);
+ tour_to_be.push_back(next_city);
+ inserted.insert(next_city);
+
+#ifndef NDEBUG
+ auto ps(pending.size());
+ err << "before";
+ for (const auto p : pending) {
+ err << p << ",";
+ }
+#endif
+
+ pending.erase(next_city);
+
+#ifndef NDEBUG
+ err << "\nafter deleting" << next_city << ":\t";
+ for (const auto p : pending) {
+ err << p << ",";
+ }
+ pgassertwm(pending.size() == (ps - 1), err.str());
+#endif
+
+ current_city = next_city;
+ }
+
+ pgassert(tour_to_be.size() == n);
+ current_tour = Tour(tour_to_be);
+ current_cost = tourCost(current_tour);
+ update_if_best();
+ swapClimb();
+
+ invariant();
+ return;
+}
+
+
+
+/*
+ *
+ * 0 1 2 3 4 5 6 7 8 9
+ * p f l
+ * slides [4,5,6] to position p
+ *
+ * 0 1 4 5 6 2 3 7 8 9
+ *
+ *
+ * 0 1 2 3 4 5 6 7 8 9
+ * f l p
+ * slides [2,3,4] to position p
+ *
+ * 0 1 6 7 2 3 4 5 8 9
+ *
+ *
+ */
+
+template < typename MATRIX >
+double
+TSP<MATRIX>::getDeltaSlide(size_t place, size_t first, size_t last) const {
+ invariant();
+#ifndef NDEBUG
+ std::ostringstream err;
+ err << "\tplace" << place
+ << "\tfirst" << first
+ << "\tlast" << last
+ << "\tn" << n;
+#endif
+
+ pgassertwm(place < first || place > last, err.str());
+ pgassertwm(first < last, err.str());
+ pgassertwm(last < n, err.str());
+ pgassertwm(place < n, err.str());
+ pgassertwm(first < n, err.str());
+
+ /*
+ * Initial state
+ * [...f] [f+1 ... l] [l+1 ...p] [p+1 ...]
+ *
+ * final state
+ * [...f] [l+1 ... p] [f+1 ...l] [p+1 ...]
+ *
+ *
+ * Initial state
+ * [f+1 ... l]
+ * : :
+ * [...f] [l+1 ...p] [p+1 ...]
+ *
+ * final state
+ * [f+1 ... l]
+ * : :
+ * [...f] [l+1 ...p] [p+1 ...]
+ *
+ */
+
+ auto cityP = current_tour.cities[place];
+ auto cityF = current_tour.cities[first];
+ auto cityL = current_tour.cities[last];
+ auto cityP1 = current_tour.cities[succ(place, n)];
+ auto cityF1 = current_tour.cities[succ(first, n)];
+ auto cityL1 = current_tour.cities[succ(last, n)];
+
+ auto delta(
+ distance(cityF, cityL1)
+ + distance(cityP, cityF1)
+ + distance(cityL, cityP1)
+ - distance(cityF, cityF1)
+ - distance(cityL, cityL1)
+ - distance(cityP, cityP1));
+
+#ifndef NDEBUG
+ Tour new_tour(current_tour);
+ new_tour.slide(place, first, last);
+
+ err << "\ncurrent_tour:";
+ for (const auto id : current_tour.cities) {
+ err << id << ", ";
+ }
+
+ err << "\nnew_tour:";
+ for (const auto id : new_tour.cities) {
+ err << id << ", ";
+ }
+
+ auto exactDelta = tourCost(new_tour) - tourCost(current_tour);
+ err << "\n"
+ << exactDelta
+ << " - " << delta
+ << " = "
+ << exactDelta - delta
+ << " = "
+ << std::fabs(exactDelta - delta);
+ pgassertwm(std::fabs((exactDelta - delta)) < epsilon, err.str());
+#endif
+
+ invariant();
+ return delta;
+}
+
+
+/*
+ * c..d c..d
+ * | | => | |
+ * | | | |
+ * b -- a e --f b -- e a -- f
+ *
+ * a b 1 2 .. n-1 n c d
+ * a c n n-1 .. 2 1 c d
+ */
+template < typename MATRIX >
+double
+TSP<MATRIX>::getDeltaSwap(size_t posA, size_t posE) const {
+ invariant();
+
+ if (succ(posE, n ) == posA) std::swap(posA, posE);
+ if (succ(posA, n) == posE) {
+ auto b = current_tour.cities[pred(posA, n)];
+ auto a = current_tour.cities[posA];
+
+ auto e = current_tour.cities[posE];
+ auto f = current_tour.cities[succ(posE, n)];
+ return distance(b, e) + distance(e, a) + distance(a, f)
+ - distance(b, a) - distance(a, e) - distance(e, f);
+ }
+
+ auto b = current_tour.cities[pred(posA, n)];
+ auto a = current_tour.cities[posA];
+ auto c = current_tour.cities[succ(posA, n)];
+
+ auto d = current_tour.cities[pred(posE, n)];
+ auto e = current_tour.cities[posE];
+ auto f = current_tour.cities[succ(posE, n)];
+
+#ifndef NDEBUG
+ auto delta = distance(b, e)
+ + distance(e, c) + distance(d, a) + distance(a, f)
+ - distance(b, a) - distance(a, c) - distance(d, e) - distance(e, f);
+ auto new_tour(current_tour);
+ new_tour.swap(posA, posE);
+ auto exactDelta = tourCost(new_tour) - tourCost(current_tour);
+ std::ostringstream log;
+ log << exactDelta
+ << " - " << delta
+ << " = "
+ << exactDelta - delta
+ << " = "
+ << std::fabs(exactDelta - delta);
+
+ pgassertwm(std::fabs((exactDelta - delta)) < epsilon, log.str());
+#endif
+
+ invariant();
+ return distance(b, e) + distance(e, c) + distance(d, a) + distance(a, f)
+ - distance(b, a) - distance(a, c) - distance(d, e) - distance(e, f);
+}
+
+/*
+ * ..A C
+ * [ )
+ * ..a b 1 2 .. n-1 n c d ..
+ * ..a c n n-1 .. 2 1 b d ..
+ */
+template < typename MATRIX >
+double
+TSP<MATRIX>::getDeltaReverse(size_t posA, size_t posC) const {
+ invariant();
+
+ if (posA == (posC - 1)) return 0;
+ auto a = current_tour.cities[posA];
+ auto b = current_tour.cities[succ(posA, n)];
+
+ auto c = current_tour.cities[posC];
+ auto d = current_tour.cities[succ(posC, n)];
+
+
+#ifndef NDEBUG
+ auto delta =
+ distance(a, c) + distance(b, d) - distance(a, b) - distance(c, d);
+ auto new_tour(current_tour);
+ new_tour.reverse(posA, posC);
+ auto exactDelta = tourCost(new_tour) - tourCost(current_tour);
+
+ std::ostringstream log;
+ log << "exactDelta(" << exactDelta
+ << ") - delta(" << delta
+ << ") = "
+ << exactDelta - delta
+ << " = "
+ << (exactDelta - delta)
+ << " epsilon = " << epsilon;
+ pgassertwm(std::fabs((exactDelta - delta)) < epsilon, log.str());
+#endif
+
+ invariant();
+ return distance(a, c) + distance(b, d) - distance(a, b) - distance(c, d);
+}
+
+template < typename MATRIX >
+void
+TSP<MATRIX>::swapClimb() {
+ invariant();
+ pgassert(n > 2);
+
+ // auto first = std::rand() % n;
+ // for (size_t first = std::rand() % n; first < n; first++) {
+ for (size_t first = 0; first < n; first++) {
+ for (size_t last = first + 1; last < n; last++) {
+ pgassert(first < last);
+
+ auto energyChange = getDeltaSwap(first, last);
+
+ if (energyChange < 0 && epsilon < std::fabs(energyChange)) {
+ ++swap_count;
+ current_cost += energyChange;
+ current_tour.swap(first, last);
+ update_if_best();
+ }
+ }
+ }
+ invariant();
+}
+
+template < typename MATRIX >
+void
+TSP<MATRIX>::annealing(
+ double temperature,
+ double final_temperature,
+ double cooling_factor,
+ int64_t tries_per_temperature,
+ int64_t max_changes_per_temperature,
+ int64_t max_consecutive_non_changes,
+ bool randomize,
+ double time_limit) {
+ invariant();
+ clock_t start_time(clock());
+
+ if (randomize) {
+ std::srand(static_cast<unsigned int>(time(NULL)));
+ } else {
+ std::srand(1);
+ }
+
+
+
+
+ /* annealing schedule */
+ for (; final_temperature < temperature; temperature *= cooling_factor) {
+ invariant();
+
+ log << "\nCycle(" << temperature <<") ";
+
+ /*
+ how many times the tour changed in current temperature
+ */
+ int64_t pathchg = 0;
+ size_t enchg = 0;
+ int64_t non_change = 0;
+ for (int64_t j = 0; j < tries_per_temperature; j++) {
+ ++non_change;
+
+ auto which = rand(2);
+ // which = 1;
+ switch (which) {
+ case 0: {
+ /* reverse */
+ pgassert(n > 2);
+
+ auto c1 = std::rand() % n;
+ auto c2 = std::rand() % n;
+
+ if (c1 == c2) c2 = succ(c2, n);
+ if (c1 == (c2 - 1)) c2 = succ(c2, n);
+ if (c1 > c2) std::swap(c1, c2);
+
+ pgassert(c1 != c2);
+ pgassert(c1 < n && c2 < n);
+ pgassert(c1 < c2);
+
+ auto energyChange = getDeltaReverse(c1, c2);
+
+ if ( (energyChange < 0
+ && epsilon < std::fabs(energyChange))
+ || (0 < energyChange
+ && (
+ static_cast<double>(std::rand()) /
+ static_cast<double>(RAND_MAX))
+ < exp(-energyChange / temperature))) {
+ if (energyChange < 0) ++enchg;
+ ++reverse_count;
+ ++pathchg;
+ non_change = 0;
+ current_cost += energyChange;
+ current_tour.reverse(c1, c2);
+ update_if_best();
+ }
+ }
+ break;
+ case 1: {
+ /* slide */
+ if (n <= 3) {
+ break;
+ }
+
+ pgassert(n > 3);
+
+ auto first = std::rand() % n;
+ auto last = std::rand() % n;
+
+ if (first == last) last = succ(last, n);
+ if (first > last) std::swap(first, last);
+ if (first == 0 && last == (n - 1)) {
+ first = succ(first, n);
+ }
+
+ pgassert((n - (last - first) - 1) > 0);
+ auto place = std::rand() % (n - (last - first) - 1);
+ place = place < first? place :
+ last + (place - first) + 1;
+
+
+ pgassert((place < first
+ || place > last)
+ && (first < last));
+
+ auto energyChange = getDeltaSlide(
+ place, first, last);
+
+ if ((energyChange < 0
+ && epsilon < std::fabs(energyChange))
+ || (0 < energyChange
+ && (static_cast<double>(std::rand())
+ / static_cast<double>(RAND_MAX))
+ < exp(-energyChange / temperature))) {
+ if (energyChange < 0) ++enchg;
+ ++slide_count;
+ ++pathchg;
+ non_change = 0;
+ current_cost += energyChange;
+ current_tour.slide(place, first, last);
+ update_if_best();
+ }
+ }
+ break;
+ } // switch
+
+
+ if (max_changes_per_temperature < pathchg
+ && max_consecutive_non_changes < non_change ) {
+ break;
+ }
+ } // for tries per temperature
+
+ swapClimb();
+ clock_t current_time(clock());
+ double elapsed_time = static_cast<double>(
+ current_time - start_time) / CLOCKS_PER_SEC;
+ if (time_limit < elapsed_time) {
+ break;
+ }
+ log << "\ttotal changes =" << pathchg
+ << "\t" << enchg << " were because delta energy < 0";
+ if (pathchg == 0) break; /* if no change then quit */
+ } // for temperatures
+}
+
+} // namespace tsp
+} // namespace pgrouting
+
+#endif // INCLUDE_TSP_PGR_TSP_HPP_
diff --git a/include/tsp/tour.h b/include/tsp/tour.h
new file mode 100644
index 0000000..72f3728
--- /dev/null
+++ b/include/tsp/tour.h
@@ -0,0 +1,160 @@
+/*PGR-GNU*****************************************************************
+
+FILE: tour.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_TSP_TOUR_H_
+#define INCLUDE_TSP_TOUR_H_
+#pragma once
+
+#include <stdlib.h>
+#include <algorithm>
+#include <numeric>
+#include <vector>
+
+#include "cpp_common/Dmatrix.h"
+
+
+namespace pgrouting {
+namespace tsp {
+
+
+class Tour {
+ public:
+ Tour(const Tour &) = default;
+
+ explicit Tour(const std::vector<size_t> &cities_order) :
+ cities(cities_order) {
+ }
+
+ explicit Tour(size_t n) {
+ cities.resize(n);
+ std::iota(std::begin(cities), std::end(cities), 0);
+ }
+
+ inline size_t size() const {return cities.size();}
+
+ friend std::ostream& operator<<(
+ std::ostream &log,
+ const Tour &tour);
+
+
+ friend double Dmatrix::tourCost(const Tour &tour) const;
+
+
+ /* @brief slides range [first + 1, last + 1) into place + 1
+ *
+ * 0 1 2 3 4 5 6 7 8 9
+ * p f l
+ * slides [4,5,6] to position p
+ *
+ * 0 1 4 5 6 2 3 7 8 9
+ *
+ *
+ * 0 1 2 3 4 5 6 7 8 9
+ * f l p
+ * slides [2,3,4] to position p
+ *
+ * 0 1 6 7 2 3 4 5 8 9
+ *
+ * uses std::reverse
+ *
+ * http://en.cppreference.com/w/cpp/algorithm/rotate
+ *
+ * first - the beginning of the original range
+ * last - the end of the original range
+ * place - location where to slide
+ *
+ *
+ *
+ * @params[IN] place index of place
+ * @params[IN] first - index of first
+ * @params[IN] last - index of last
+ *
+ * precondition:
+ * pgassert(first < cities.size();
+ * pgassert(last < cities.size();
+ * pgassert(place < cities.size();
+ *
+ */
+
+ void slide(
+ size_t place,
+ size_t first,
+ size_t last);
+
+
+ /* @brief std::reverse on the cities
+ *
+ * http://en.cppreference.com/w/cpp/algorithm/reverse
+ *
+ * first - the beginning of the original range
+ * last - the end of the original range
+ *
+ * @params[IN] c1 - index of first
+ * @params[IN] c2 - index of lasst
+ *
+ * precondition:
+ * pgassert(c1 < c2);
+ *
+ */
+
+ void reverse(
+ size_t c1,
+ size_t c2);
+
+
+ /* @brief std::rotate on the cities
+ *
+ * http://en.cppreference.com/w/cpp/algorithm/rotate
+ *
+ * first - the beginning of the original range
+ * n_first - the element that should appear at the beginning of the rotated range
+ * last - the end of the original range
+ *
+ * @params[IN] c1 - index of first
+ * @params[IN] c2 - index of n_first
+ * @params[IN] c3 - index of last
+ *
+ * precondition:
+ * pgassert(c2 && c2 < c3 && c3 < n);
+ *
+ */
+ void rotate(
+ size_t c1,
+ size_t c2,
+ size_t c3);
+
+
+ void swap(
+ size_t c1,
+ size_t c2);
+
+ public:
+ std::vector<size_t> cities;
+};
+
+} // namespace tsp
+} // namespace pgrouting
+
+#endif // INCLUDE_TSP_TOUR_H_
diff --git a/include/vrp/base_node.h b/include/vrp/base_node.h
new file mode 100644
index 0000000..a3053ea
--- /dev/null
+++ b/include/vrp/base_node.h
@@ -0,0 +1,78 @@
+/*PGR-GNU*****************************************************************
+
+FILE: base_node.h
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_BASE_NODE_H_
+#define INCLUDE_VRP_BASE_NODE_H_
+#pragma once
+
+#include <iosfwd>
+#include "cpp_common/identifier.h"
+
+#if defined(__MINGW32__) || defined(_MSC_VER)
+#include <stdint.h>
+#endif
+
+namespace pgrouting {
+namespace vrp {
+
+/*! \class Base_node
+ * \brief The Base_node class defines the operations that can be performed in a 2D node.
+ *
+ * A Base_node is an identifier of a Node or Dnode.
+ */
+class Base_node : public Identifier {
+ public:
+ Base_node() = default;
+ Base_node(size_t, int64_t);
+
+
+ /** @name to be or not to be */
+ /*!@{*/
+
+ virtual bool operator ==(const Base_node &rhs) const;
+
+ /*!@}*/
+
+ friend std::ostream& operator<<(
+ std::ostream &log,
+ const Base_node &node);
+
+ /*! @name distance
+ @{
+ */
+ virtual double distance(const Base_node *node) const = 0;
+ /*!@}*/
+
+
+ private:
+ virtual void print(std::ostream& os) const;
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_BASE_NODE_H_
diff --git a/include/vrp/book_keeping.h b/include/vrp/book_keeping.h
new file mode 100644
index 0000000..47f336a
--- /dev/null
+++ b/include/vrp/book_keeping.h
@@ -0,0 +1,134 @@
+/*PGR-GNU*****************************************************************
+ *
+ * FILE: book_keeping.h
+ *
+ * Copyright (c) 2017 pgRouting developers
+ * Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_BOOK_KEEPING_H_
+#define INCLUDE_VRP_BOOK_KEEPING_H_
+#pragma once
+
+#include <queue>
+#include <vector>
+#include <iostream>
+#include "vrp/vehicle_pickDeliver.h"
+/**
+ * Book keeping class for swapping orders between vehicles
+ */
+
+namespace pgrouting {
+namespace vrp {
+
+class Swap_bk;
+class Swap_info {
+ friend class Swap_bk;
+
+ public:
+ Swap_info() = default;
+ Swap_info(const Swap_info &) = default;
+ Swap_info(const Vehicle_pickDeliver &from,
+ const Vehicle_pickDeliver &to,
+ size_t from_o,
+ size_t to_o,
+ double delta);
+#if 0
+ from_truck(from),
+ to_truck(to),
+ from_order(from_o),
+ to_order(to_o),
+ estimated_delta(delta)
+ { }
+#endif
+ friend std::ostream& operator << (std::ostream& log, const Swap_info &d);
+#if 0
+ {
+ log
+ << "\n" << d.from_truck.tau() << " --> "
+ << d.from_order
+ << "("
+ << d.from_truck.orders()[d.from_order].pickup().original_id()
+ << ")"
+ << "\n" << d.to_truck.tau() << " --> "
+ << d.to_order
+ << "("
+ << d.to_truck.orders()[d.to_order].pickup().original_id()
+ << ")"
+ << "\n" << "delta = " << d.estimated_delta;
+ return log;
+ }
+#endif
+
+ public:
+ Vehicle_pickDeliver from_truck;
+ Vehicle_pickDeliver to_truck;
+ size_t from_order;
+ size_t to_order;
+ double estimated_delta;
+};
+
+
+class Swap_bk {
+ private:
+ class Compare {
+ public:
+ bool operator() (const Swap_info &lhs, const Swap_info rhs) {
+ return lhs.estimated_delta > rhs.estimated_delta;
+ }
+ };
+
+ public:
+ typedef std::priority_queue<
+ Swap_info,
+ std::vector<Swap_info>,
+ Compare > Swaps_queue;
+
+
+ Swaps_queue m_swaps;
+ friend std::ostream& operator<< (std::ostream &log, const Swap_bk &data);
+#if 0
+ {
+ auto q = data.m_swaps;
+ while (!q.empty()) {
+ log << q.top() << " ";
+ q.pop();
+ }
+ log << '\n';
+ return log;
+ }
+#endif
+
+ public:
+ Swap_bk() = default;
+ Swap_bk(const Swap_bk &bk) = default;
+ Swaps_queue& possible_swaps() {return m_swaps;}
+ void push(const Swap_info& data) {m_swaps.push(data);}
+ Swap_info top() {return m_swaps.top();}
+ void pop() {return m_swaps.pop();}
+ bool empty() {return m_swaps.empty();}
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_BOOK_KEEPING_H_
diff --git a/include/vrp/dnode.h b/include/vrp/dnode.h
new file mode 100644
index 0000000..208cf62
--- /dev/null
+++ b/include/vrp/dnode.h
@@ -0,0 +1,66 @@
+/*PGR-GNU*****************************************************************
+
+FILE: dnode.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file dnode.h */
+
+#ifndef INCLUDE_PICKDELIVER_DNODE_H_
+#define INCLUDE_PICKDELIVER_DNODE_H_
+#pragma once
+
+#include <string>
+#include <iosfwd>
+#include "vrp/base_node.h"
+#include "vrp/pd_problem.h"
+
+namespace pgrouting {
+namespace vrp {
+
+/*! @class Dnode
+ * @brief The Dnode class defines a the basic operations when data is a matrix.
+ *
+ * currently needs the PD_problem
+ */
+class Dnode : public Base_node, public PD_problem {
+ public:
+ /*! @name constructors
+ * @{
+ */
+ Dnode() = default;
+ /*! @brief data constructor */
+ Dnode(size_t id, int64_t original_id, double, double);
+ /*!@}*/
+
+
+ using Base_node::operator==;
+
+ double distance(const Base_node *) const;
+
+ friend std::ostream& operator << (std::ostream &log, const Dnode &node);
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_PICKDELIVER_DNODE_H_
diff --git a/include/vrp/fleet.h b/include/vrp/fleet.h
new file mode 100644
index 0000000..589db31
--- /dev/null
+++ b/include/vrp/fleet.h
@@ -0,0 +1,141 @@
+/*PGR-GNU*****************************************************************
+
+FILE: fleet.h
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_FLEET_H_
+#define INCLUDE_VRP_FLEET_H_
+#pragma once
+
+#include <iosfwd>
+#include <vector>
+#include <memory>
+#include <utility>
+
+#include "cpp_common/identifiers.hpp"
+#include "vrp/pd_problem.h"
+#include "vrp/vehicle_pickDeliver.h"
+
+namespace pgrouting {
+namespace vrp {
+
+class Pgr_pickDeliver;
+class PD_Orders;
+
+class Fleet : public PD_problem {
+ public:
+ typedef std::vector<Vehicle_pickDeliver>::iterator iterator;
+ std::vector<Vehicle_pickDeliver> m_trucks;
+
+
+ public:
+ /*! @name constructor
+ * @{
+ */
+ Fleet() = default;
+
+ Fleet(const std::vector<Vehicle_t> &vehicles, double factor);
+
+ Fleet(const Fleet &fleet);
+ /*!@}*/
+
+ /* TODO move code to .cpp */
+ Fleet& operator=(const Fleet &fleet) {
+ m_trucks = fleet.m_trucks;
+ used = fleet.used;
+ un_used = fleet.un_used;
+ return *this;
+ }
+
+ void set_compatibles(const PD_Orders &orders);
+
+ bool is_fleet_ok() const;
+ bool is_order_ok(const Order &order) const;
+
+ Vehicle_pickDeliver get_truck();
+ void release_truck(size_t id);
+ Vehicle_pickDeliver get_truck(size_t order);
+ Vehicle_pickDeliver get_truck(const Order order);
+
+ /*! @name vector like functions
+ * @{
+ */
+ size_t size() const {return m_trucks.size();}
+ Vehicle_pickDeliver& operator[](size_t i);
+ iterator begin() {return m_trucks.begin();}
+ iterator end() {return m_trucks.end();}
+
+ /*!@}*/
+
+ friend std::ostream& operator << (std::ostream &log, const Fleet &v);
+
+ private:
+ Identifiers<size_t> used;
+ Identifiers<size_t> un_used;
+
+ /*! @brief build the fleet
+ *
+ * @param[in] vehicles of type Vehicle_t
+ */
+ bool build_fleet(
+ std::vector<Vehicle_t> vehicles,
+ double factor);
+
+ void add_vehicle(
+ Vehicle_t,
+ double factor,
+ std::unique_ptr<Base_node>,
+ const Vehicle_node&,
+ std::unique_ptr<Base_node>,
+ const Vehicle_node&);
+
+ template <typename T> std::unique_ptr<Base_node> create_b_start(
+ const Vehicle_t &vehicle,
+ size_t node_id) {
+ std::unique_ptr<Base_node> b_start(new T(
+ node_id,
+ vehicle.start_node_id,
+ vehicle.start_x,
+ vehicle.start_y));
+ return std::move(b_start);
+ }
+
+ template <typename T> std::unique_ptr<Base_node> create_b_end(
+ const Vehicle_t &vehicle,
+ size_t node_id) {
+ std::unique_ptr<Base_node> b_end(new T(
+ node_id,
+ vehicle.end_node_id,
+ vehicle.end_x,
+ vehicle.end_y));
+ return std::move(b_end);
+ }
+};
+
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_FLEET_H_
diff --git a/include/vrp/initial_solution.h b/include/vrp/initial_solution.h
new file mode 100644
index 0000000..bcd5f43
--- /dev/null
+++ b/include/vrp/initial_solution.h
@@ -0,0 +1,71 @@
+/*PGR-GNU*****************************************************************
+
+FILE: initial_solution.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_INITIAL_SOLUTION_H_
+#define INCLUDE_VRP_INITIAL_SOLUTION_H_
+#pragma once
+
+#include <set>
+#include <deque>
+#include "vrp/pd_orders.h"
+#include "vrp/solution.h"
+#include "cpp_common/identifiers.hpp"
+
+namespace pgrouting {
+namespace vrp {
+
+
+class Pgr_pickDeliver;
+
+
+class Initial_solution : public Solution {
+ public:
+ Initial_solution(
+ int kind,
+ size_t);
+
+ void invariant() const;
+
+ private:
+ /*
+ * one truck per order
+ */
+ void one_truck_all_orders();
+
+ void do_while_foo(int kind);
+
+
+ private:
+ Identifiers<size_t> all_orders;
+ Identifiers<size_t> unassigned;
+ Identifiers<size_t> assigned;
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_INITIAL_SOLUTION_H_
diff --git a/include/vrp/node.h b/include/vrp/node.h
new file mode 100644
index 0000000..8521c47
--- /dev/null
+++ b/include/vrp/node.h
@@ -0,0 +1,77 @@
+/*PGR-GNU*****************************************************************
+
+FILE: node.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_NODE_H_
+#define INCLUDE_VRP_NODE_H_
+#pragma once
+
+#include <string>
+#include <iosfwd>
+#include "vrp/base_node.h"
+#include "cpp_common/xy_vertex.h"
+#include "vrp/pd_problem.h"
+
+namespace pgrouting {
+namespace vrp {
+
+/*! @class Node
+ * @brief The Node class defines a point in 2D space with an id.
+ *
+ * A Node is a point that defines a location in 2D space. It maintains
+ * a user @c id and an internal @c nid along with its @c x, @c y location.
+ * This is the base object that things like depots, customer locations, etc.
+ * are built upon.
+ *
+ */
+class Node : public Base_node {
+ public:
+ Node() = default;
+ Node(size_t id, int64_t original_id, double _x, double _y);
+
+
+ /** @name to be or not to be */
+ /*!@{*/
+ bool operator ==(const Node &rhs) const;
+ /*!@}*/
+
+ /** @brief Calculates distance between two Node */
+ double distance(const Base_node *) const;
+
+ friend std::ostream& operator << (std::ostream &log, const Node &node);
+
+ private:
+ double distance(const Node &) const;
+ void print(std::ostream& os) const;
+
+ private:
+ pgrouting::Point m_point;
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_NODE_H_
diff --git a/include/vrp/optimize.h b/include/vrp/optimize.h
new file mode 100644
index 0000000..bb101c2
--- /dev/null
+++ b/include/vrp/optimize.h
@@ -0,0 +1,88 @@
+/*PGR-GNU*****************************************************************
+
+FILE: optimize.cpp
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_OPTIMIZE_H_
+#define INCLUDE_VRP_OPTIMIZE_H_
+#pragma once
+
+#include "vrp/optimize.h"
+#include "vrp/book_keeping.h"
+
+namespace pgrouting {
+namespace vrp {
+
+class Solution;
+class Pgr_pickDeliver;
+
+
+class Optimize : public Solution {
+ public:
+ explicit Optimize(const Solution &solution);
+ Optimize(const Solution &solution, size_t times);
+
+ /* @brief decrease_truck
+ *
+ * Optimization by decreasing trucks
+ */
+ void decrease_truck();
+ void move_wait_time_based();
+ void move_duration_based();
+ void inter_swap(size_t times);
+ Solution best_solution;
+
+ private:
+ bool decrease_truck(size_t);
+ void sort_for_move();
+ void sort_by_duration();
+ void sort_by_size();
+ void sort_by_id();
+ void delete_empty_truck();
+
+ bool swap_worse(Vehicle_pickDeliver &from, Vehicle_pickDeliver &to);
+ bool move_reduce_cost(Vehicle_pickDeliver &from, Vehicle_pickDeliver &to);
+ bool inter_swap();
+
+ void move_order(
+ Order order,
+ Vehicle_pickDeliver &from_truck,
+ Vehicle_pickDeliver &to_truck);
+ bool swap_order();
+ bool swap_order(
+ Order from_order,
+ Vehicle_pickDeliver &from_truck,
+ Order to_order,
+ Vehicle_pickDeliver &to_truck);
+ void save_if_best();
+
+ private:
+ Swap_bk p_swaps;
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_OPTIMIZE_H_
diff --git a/include/vrp/order.h b/include/vrp/order.h
new file mode 100644
index 0000000..f196120
--- /dev/null
+++ b/include/vrp/order.h
@@ -0,0 +1,188 @@
+/*PGR-GNU*****************************************************************
+
+FILE: order.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_ORDER_H_
+#define INCLUDE_VRP_ORDER_H_
+#pragma once
+
+
+#include <iosfwd>
+#include "cpp_common/identifier.h"
+#include "cpp_common/identifiers.hpp"
+#include "vrp/vehicle_node.h"
+
+namespace pgrouting {
+namespace vrp {
+
+
+class Order : public Identifier {
+ public:
+ /*! @name Constructors
+ * @{
+ */
+ Order(size_t p_id, int64_t p_idx,
+ const Vehicle_node &p_pickup,
+ const Vehicle_node &p_deliver);
+
+ Order(const Order &) = default;
+ /*!@}*/
+
+
+ /*! @name Accessors
+ * @{
+ */
+
+
+ /*! The delivery node identifier
+ *
+ * It hold's the idx of the node
+ */
+ const Vehicle_node& delivery() const;
+
+ /*! The delivery node identifier
+ *
+ * It hold's the idx of the node
+ */
+ const Vehicle_node& pickup() const;
+
+ /*! Get a subset of the orders that can be placed after @b this order
+
+ @dot
+ digraph G {
+ graph [rankdir=LR];
+ this [color=green];
+ this -> "this.J * J";
+ }
+ @enddot
+
+ * @param[in] J set of orders
+ * @result ithe set intersection of the @b J orders with the @b compatible_J orders of @b this order
+ */
+ Identifiers<size_t> subsetJ(const Identifiers<size_t> &J) const;
+ Identifiers<size_t> subsetI(const Identifiers<size_t> &I) const;
+ /*!@}*/
+
+
+ /*! @name Modifiers
+ * @{
+ */
+
+ void set_compatibles(const Order order, double speed);
+ /*!@}*/
+
+ /*! @name To be or not to be
+ * @{
+ */
+
+ /*! @brief validate a pickup/delivery order
+ *
+ * An order is valid when:
+ * - The pickup is well formed
+ * - The delivery is well formed
+ * - isCompatibleIJ to go to delivery after inmediatly visiting pickup
+ */
+ bool is_valid(double speed) const;
+
+
+ /*! @brief Can order @b I be placed before @b this order?
+ *
+
+ @dot
+ digraph G {
+ graph [rankdir=LR];
+ this [color=green];
+ "I" -> this;
+ }
+ @enddot
+
+ @param[in] I order
+ @param[in] speed to be used for evaluating the order
+
+ @returns true when order @b I can be placed before @b this order
+ */
+ bool isCompatibleIJ(const Order &I, double speed) const;
+ /*!@}*/
+
+
+
+ /*! @name Friends
+ * @{
+ */
+
+ friend std::ostream& operator << (std::ostream&, const Order &);
+ /*!@}*/
+
+ private:
+ /*! The pick up node identifier
+ *
+ * It hold's the idx of the node
+ */
+
+ Vehicle_node m_pickup;
+
+ /*! The delivery node identifier
+ *
+ * It hold's the idx of the node
+ */
+ Vehicle_node m_delivery;
+
+ /*! Stores all the orders that can be placed after this order
+ *
+
+ @dot
+ digraph G {
+ graph [rankdir=LR];
+ this [color=green];
+ this -> "{J}";
+ }
+ @enddot
+
+ @todo TODO
+ - compatibility changes based on the speed this is not taking that into account (here)
+ - check where is it talking that into account
+ */
+ Identifiers<size_t> m_compatibleJ;
+
+ /*! Stores all the orders that can be placed before this order
+ *
+
+ @dot
+ digraph G {
+ graph [rankdir=LR];
+ this [color=green];
+ "{I}" -> this;
+ }
+ @enddot
+
+ */
+ Identifiers<size_t> m_compatibleI;
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_ORDER_H_
diff --git a/include/vrp/pd_orders.h b/include/vrp/pd_orders.h
new file mode 100644
index 0000000..2026d2a
--- /dev/null
+++ b/include/vrp/pd_orders.h
@@ -0,0 +1,125 @@
+/*PGR-GNU*****************************************************************
+
+FILE: pd_orders.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_PD_ORDERS_H_
+#define INCLUDE_VRP_PD_ORDERS_H_
+#pragma once
+
+#include <vector>
+#include <memory>
+#include <utility>
+
+#include "c_types/pickDeliver/pickDeliveryOrders_t.h"
+#include "cpp_common/identifiers.hpp"
+
+#include "vrp/base_node.h"
+#include "vrp/pd_problem.h"
+
+
+namespace pgrouting {
+namespace vrp {
+
+class Order;
+class Vehicle_node;
+
+class PD_Orders : public PD_problem {
+ typedef std::vector<Order> Orders;
+
+ public:
+ typedef Orders::iterator o_iterator;
+ typedef Orders::const_iterator o_const_iterator;
+
+ public:
+ /*! @name constructors
+ * @{
+ */
+ PD_Orders() = default;
+ PD_Orders(const PD_Orders&) = default;
+ explicit PD_Orders(const std::vector<PickDeliveryOrders_t>&);
+ /*!@}*/
+
+ void set_compatibles(double speed);
+ size_t find_best_J(Identifiers<size_t> &within_this_set) const;
+ size_t find_best_I(Identifiers<size_t> &within_this_set) const;
+
+
+ bool is_valid(double speed) const;
+
+ /*! @name std container functions
+ * functions with same "meaning" as an std container
+ * @{
+ */
+ Order& operator[](size_t o);
+ const Order& operator[](size_t o) const;
+ size_t size() const {return m_orders.size();}
+ o_iterator begin() {return m_orders.begin();}
+ o_iterator end() {return m_orders.end();}
+ o_const_iterator begin() const {return m_orders.begin();}
+ o_const_iterator end() const {return m_orders.end();}
+ /*!@}*/
+
+ private:
+ void build_orders(
+ const std::vector<PickDeliveryOrders_t> &pd_orders);
+
+ void add_order(
+ const PickDeliveryOrders_t &,
+ std::unique_ptr<Base_node>,
+ const Vehicle_node&,
+ std::unique_ptr<Base_node>,
+ const Vehicle_node&);
+
+ template <typename T> std::unique_ptr<Base_node> create_b_pick(
+ const PickDeliveryOrders_t &order,
+ size_t node_id) {
+ std::unique_ptr<Base_node> b_pick(new T(
+ node_id,
+ order.pick_node_id,
+ order.pick_x,
+ order.pick_y));
+ return std::move(b_pick);
+ }
+
+ template <typename T> std::unique_ptr<Base_node> create_b_deliver(
+ const PickDeliveryOrders_t &order,
+ size_t node_id) {
+ std::unique_ptr<Base_node> b_drop(new T(
+ node_id,
+ order.deliver_node_id,
+ order.deliver_x,
+ order.deliver_y));
+ return std::move(b_drop);
+ }
+
+ private:
+ Orders m_orders;
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_PD_ORDERS_H_
diff --git a/include/vrp/pd_problem.h b/include/vrp/pd_problem.h
new file mode 100644
index 0000000..3e95790
--- /dev/null
+++ b/include/vrp/pd_problem.h
@@ -0,0 +1,57 @@
+/*PGR-GNU*****************************************************************
+
+FILE: pd_problem.h
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_PD_PROBLEM_H_
+#define INCLUDE_VRP_PD_PROBLEM_H_
+#pragma once
+
+#include "cpp_common/pgr_messages.h"
+
+
+
+namespace pgrouting {
+namespace vrp {
+
+class Pgr_pickDeliver;
+
+class PD_problem {
+ public:
+ explicit PD_problem(Pgr_pickDeliver* p_problem);
+ PD_problem(const PD_problem &problem);
+ PD_problem() { }
+
+ public:
+ static Pgr_messages msg;
+
+ protected:
+ static Pgr_pickDeliver* problem;
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_PD_PROBLEM_H_
diff --git a/include/vrp/pgr_pickDeliver.h b/include/vrp/pgr_pickDeliver.h
new file mode 100644
index 0000000..a8c8379
--- /dev/null
+++ b/include/vrp/pgr_pickDeliver.h
@@ -0,0 +1,122 @@
+/*PGR-GNU*****************************************************************
+
+FILE: pgr_pickDeliver.h
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_PGR_PICKDELIVER_H_
+#define INCLUDE_VRP_PGR_PICKDELIVER_H_
+#pragma once
+
+
+
+#include <vector>
+#include <memory>
+#include <utility>
+
+#include "c_types/pickDeliver/general_vehicle_orders_t.h"
+#include "c_types/pickDeliver/vehicle_t.h"
+#include "c_types/pickDeliver/pickDeliveryOrders_t.h"
+#include "cpp_common/identifiers.hpp"
+#include "cpp_common/Dmatrix.h"
+#include "vrp/fleet.h"
+#include "vrp/pd_orders.h"
+#include "vrp/solution.h"
+
+namespace pgrouting {
+namespace vrp {
+
+class Order;
+class Vehicle_node;
+class Base_node;
+
+class Pgr_pickDeliver : public PD_problem {
+ public:
+ Pgr_pickDeliver(
+ const std::vector<PickDeliveryOrders_t> &pd_orders,
+ const std::vector<Vehicle_t> &vehicles,
+ double factor,
+ size_t max_cycles,
+ int initial);
+
+ Pgr_pickDeliver(
+ const std::vector<PickDeliveryOrders_t> &pd_orders,
+ const std::vector<Vehicle_t> &vehicles,
+ const pgrouting::tsp::Dmatrix &cost_matrix,
+ double factor,
+ size_t max_cycles,
+ int initial);
+
+ void solve();
+
+ std::vector<General_vehicle_orders_t>
+ get_postgres_result() const;
+
+
+ Solution optimize(const Solution init_solution);
+ size_t max_cycles() const {return m_max_cycles;}
+
+ inline size_t& node_id() {return m_node_id;}
+
+ void add_node(const Vehicle_node &node) {
+ m_nodes.push_back(node);
+ }
+
+ void add_base_node(std::unique_ptr<Base_node> node_ptr) {
+ m_base_nodes.push_back(std::move(node_ptr));
+ }
+
+#if 1
+ // TODO(vicky) delete this function
+ bool nodesOK() const;
+#endif
+ Fleet trucks() const {return m_trucks;}
+
+ private:
+ //! used define the initial solution algorithm to be used
+ int m_initial_id;
+
+ //! maximum cycles in the optimization
+ size_t m_max_cycles;
+
+ //! used to keep track of the next id the node gets in the eucledian version
+ size_t m_node_id;
+
+ std::vector<Vehicle_node> m_nodes;
+
+ public:
+ // TODO(vicky) make this private
+ std::vector<std::unique_ptr<Base_node>> m_base_nodes;
+ pgrouting::tsp::Dmatrix m_cost_matrix;
+
+ private:
+ PD_Orders m_orders;
+ Fleet m_trucks;
+ std::vector<Solution> solutions;
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_PGR_PICKDELIVER_H_
diff --git a/include/vrp/solution.h b/include/vrp/solution.h
new file mode 100644
index 0000000..b163bae
--- /dev/null
+++ b/include/vrp/solution.h
@@ -0,0 +1,119 @@
+/*PGR-GNU*****************************************************************
+
+FILE: solution.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_SOLUTION_H_
+#define INCLUDE_VRP_SOLUTION_H_
+#pragma once
+
+#include <deque>
+#include <tuple>
+#include <string>
+#include <vector>
+
+#include "vrp/vehicle_pickDeliver.h"
+#include "vrp/fleet.h"
+#include "vrp/pd_problem.h"
+
+namespace pgrouting {
+namespace vrp {
+
+
+class Solution : public PD_problem {
+ friend class Optimize;
+ protected:
+ double EPSILON;
+ std::deque<Vehicle_pickDeliver> fleet;
+
+ /* this solution belongs to this problem*/
+ Fleet trucks;
+
+ public:
+ std::vector<General_vehicle_orders_t>
+ get_postgres_result() const;
+
+
+ /* @brief constructor
+ *
+ */
+ Solution();
+
+
+#if 0
+ /* @brief move constructor */
+ Solution(Solution &&sol) = default;
+#endif
+
+ /* @brief copy constructor */
+ Solution(const Solution &sol) :
+ PD_problem(),
+ EPSILON(0.0001),
+ fleet(sol.fleet),
+ trucks(sol.trucks)
+ {};
+
+ /* @brief copy assignment */
+ Solution& operator = (const Solution& sol) {
+ EPSILON = 0.0001,
+ fleet = sol.fleet;
+ trucks = sol.trucks;
+ return *this;
+ };
+
+ void sort_by_id();
+
+ std::string cost_str() const;
+ std::string tau(const std::string &title = "Tau") const;
+ friend std::ostream& operator<<(
+ std::ostream &log,
+ const Solution &solution);
+ bool operator <(const Solution &s_rhs) const;
+
+ bool is_feasable() const;
+ double duration() const;
+ double wait_time() const;
+ double total_travel_time() const;
+ double total_service_time() const;
+ int twvTot() const;
+ int cvTot() const;
+ size_t fleet_size() const {return fleet.size();}
+
+ /*
+ * Cost in terms of a tuple
+ * <0> time window violations
+ * <1> capacity violations
+ * <2> fleet size TODO
+ * <3> wait_time
+ * <4> duration
+ */
+ Vehicle::Cost cost() const;
+};
+
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_SOLUTION_H_
diff --git a/include/vrp/tw_node.h b/include/vrp/tw_node.h
new file mode 100644
index 0000000..21ca82b
--- /dev/null
+++ b/include/vrp/tw_node.h
@@ -0,0 +1,284 @@
+/*PGR-GNU*****************************************************************
+
+FILE: tw_node.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_TW_NODE_H_
+#define INCLUDE_VRP_TW_NODE_H_
+#pragma once
+
+#include <string>
+
+#include "c_types/pickDeliver/pickDeliveryOrders_t.h"
+#include "c_types/pickDeliver/vehicle_t.h"
+#include "cpp_common/pgr_assert.h"
+#include "cpp_common/identifier.h"
+
+#include "vrp/pd_problem.h"
+#include "vrp/node.h"
+
+namespace pgrouting {
+namespace vrp {
+
+
+/*! @class Tw_node
+ * @brief Extends the Node class to create a Node with time window attributes.
+ *
+ * A Time Window node is a Node with addition attributes and methods to
+ * to support Time Windows and to model a more complex Node need in many
+ * vehicle routing problems.
+ *
+ * Most application specific code will extend this class and define the specific
+ * values and requirements for @c type and @c streetid.
+ *
+ */
+class Tw_node : public Identifier, public PD_problem {
+ public:
+ typedef enum {
+ kStart = 0, ///< starting site
+ kPickup, ///< pickup site
+ kDelivery, ///< delivery site
+ kDump, ///< dump site, empties truck
+ kLoad, ///< load site, fills the truck
+ kEnd ///< ending site
+ } NodeType;
+
+
+ /** @name accessors */
+ ///@ {
+
+ /*! @brief Returns the opening time.*/
+ inline int64_t order() const {return m_order;}
+
+ /*! @brief Returns the opening time.*/
+ inline double opens() const {return m_opens;}
+
+ /*! @brief Returns the closing time. */
+ inline double closes() const {return m_closes;}
+
+ /*! @brief Returns the demand associated with this node. */
+ inline double demand() const {return m_demand;}
+ inline void demand(double value) {m_demand = value;}
+
+ /*! * @brief Returns the service time for this node. */
+ inline double service_time() const {return m_service_time;}
+
+ /*! * @brief Returns the type of this node. */
+ inline NodeType type() const {return m_type;}
+
+ /*! @brief Returns the length of time between the opening and closing. */
+ inline double window_length() const {return m_closes - m_opens;}
+
+ /*! @brief time = distance / speed. */
+ double travel_time_to(const Tw_node &other, double speed) const;
+
+ ///@}
+
+ /** @name kind of node
+ *
+ * A true value when;
+ *
+ * - 0 < opens < closes
+ * - the type is the requested type
+ * - the demand are valid for the requested type
+ */
+
+ ///@ {
+
+
+ /*! @brief is_start
+ *
+ * To be a start node:
+ * - type is kStart
+ * - demand == 0
+ *
+ **/
+ bool is_start() const;
+
+
+ /*! @brief is_pickup
+ *
+ * To be a pickup node:
+ * - type is kPickup
+ * - demand > 0
+ *
+ **/
+ bool is_pickup() const;
+
+
+ /*! @brief is_delivery
+ *
+ * To be a delivery node:
+ * - type is kDelivery
+ * - demand < 0
+ *
+ **/
+ bool is_delivery() const;
+
+
+ /*! @brief is_dump
+ *
+ * To be a dump node:
+ * - type is kDump
+ * - demand <= 0
+ *
+ **/
+ bool is_dump() const;
+
+
+ /*! @brief is_Load
+ *
+ * To be a Load node:
+ * - type is kLoad
+ * - demand >= 0
+ *
+ **/
+ bool is_load() const;
+
+
+ /*! @brief is_end
+ *
+ * To be a End node:
+ * - type is kEnd
+ * - demand == 0
+ *
+ **/
+ bool is_end() const;
+
+
+ std::string type_str() const;
+
+ /*!@}*/
+
+
+ /*! * @brief Print the contents of a Twnode object. */
+ friend std::ostream& operator<< (std::ostream &log, const Tw_node &node);
+
+ /*! @name to be or not to be
+ * @{
+ */
+ bool operator ==(const Tw_node &rhs) const;
+
+
+
+ /*! @brief True when @b arrivalTime is before it @b opens */
+ inline bool is_early_arrival(double arrival_time) const {
+ return arrival_time < m_opens;
+ }
+
+ /*! @brief True when @b arrivalTime is after it @b closes */
+ inline bool is_late_arrival(double arrival_time) const {
+ return arrival_time > m_closes;
+ }
+ /*! @brief True when @b arrivalTime in the time window */
+ inline bool is_on_time(double arrival_time) const {
+ return !is_early_arrival(arrival_time)
+ && !is_late_arrival(arrival_time);
+ }
+ /*!@}*/
+
+
+ /** @name document functions */
+ ///@ {
+ /*!
+ * The actual arrival time at @b This node, given that:
+ * @b this node is visited directly after @b other node
+ * and that the actual arrival time at @b other node was opens(other)
+ **/
+ double arrival_j_opens_i(const Tw_node &I, double speed) const;
+
+ /*!
+ * The actual arrival time at @b this node, given that:
+ * @b this node is visited directly after @b other node
+ * and that the actual arrival time at @b other node was closes(other)
+ **/
+ double arrival_j_closes_i(const Tw_node &I, double speed) const;
+
+
+ /*
+ * is possible to arrive to @b this after visiting @bother
+ * - departing as early as possible from @b other it can arrives to @b this
+ */
+ bool is_compatible_IJ(const Tw_node &I, double speed) const;
+
+ /*
+ * is possible to arrive to @b this after visiting @bother
+ * - departing as late as possible from @b other it can arrives to @b this
+ */
+ bool is_partially_compatible_IJ(const Tw_node &I, double speed) const;
+
+ /*
+ * is possible to arrive to @b this after visiting @bother
+ * - departing as late as possible from @b other it can arrives to @b this
+ */
+ bool is_tight_compatible_IJ(const Tw_node &I, double speed) const;
+
+ /*
+ * is possible to arrive to @b this after visiting @b other
+ * - departing as late as possible from @b other it can arrives to @b this
+ */
+ bool is_partially_waitTime_compatible_IJ(
+ const Tw_node &I,
+ double speed) const;
+
+ /*
+ * is compatible to arrive to @b this after visiting @b other
+ * - is fully compatible
+ * - does not have a waiting time when arriving as earliest as possible after
+ */
+ bool is_waitTime_compatible_IJ(const Tw_node &I, double speed) const;
+
+
+ ///@}
+
+
+
+ Tw_node() = default;
+ Tw_node(const Tw_node &) = default;
+ Tw_node(
+ size_t id,
+ PickDeliveryOrders_t data,
+ NodeType type);
+ Tw_node(
+ size_t id,
+ Vehicle_t data,
+ NodeType type);
+
+ protected:
+ bool is_valid() const;
+
+ private:
+ int64_t m_order; ///< order to which it belongs
+ double m_opens; ///< opening time of the node
+ double m_closes; ///< closing time of the node
+ double m_service_time; // /< time it takes to be served
+ double m_demand; ///< The demand for the Node
+ NodeType m_type; ///< The demand for the Node
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_TW_NODE_H_
diff --git a/include/vrp/vehicle.h b/include/vrp/vehicle.h
new file mode 100644
index 0000000..19095a6
--- /dev/null
+++ b/include/vrp/vehicle.h
@@ -0,0 +1,356 @@
+/*PGR-GNU*****************************************************************
+
+FILE: vehicle.h
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_VEHICLE_H_
+#define INCLUDE_VRP_VEHICLE_H_
+#pragma once
+
+#include <deque>
+#include <iostream>
+#include <algorithm>
+#include <string>
+#include <tuple>
+#include <utility>
+#include <vector>
+
+
+#include "cpp_common/identifier.h"
+#include "vrp/vehicle_node.h"
+#include "c_types/pickDeliver/general_vehicle_orders_t.h"
+
+namespace pgrouting {
+namespace vrp {
+
+
+/*! @class Vehicle
+ * @brief Vehicle with time windows
+ *
+ * General functionality for a vehicle in a VRP problem
+ *
+ * Recommended use:
+ *
+ * ~~~~{.c}
+ * Class my_vehicle : public vechicle
+ * ~~~~
+ *
+ * @note All members return @b true when the operation is successful
+ *
+ * A vehicle is a sequence of @ref Vehicle_node
+ * from @b starting site to @b ending site.
+ * has:
+ * @b capacity
+ * @b speed
+ * @b factor TODO(vicky)
+ *
+ * @sa @ref Vehicle_node
+ */
+
+class Vehicle : public Identifier, public PD_problem {
+ protected:
+ typedef size_t POS;
+ std::deque< Vehicle_node > m_path;
+
+ private:
+ double m_capacity;
+ double m_factor;
+ double m_speed;
+
+ public:
+ /*
+ * (twv, cv, fleet_size, wait_time, duration)
+ */
+ typedef std::tuple< int, int, size_t, double, double > Cost;
+ std::vector<General_vehicle_orders_t>
+ get_postgres_result(int vid) const;
+
+ Vehicle(const Vehicle &);
+ Vehicle(
+ size_t idx,
+ int64_t kind,
+ const Vehicle_node &starting_site,
+ const Vehicle_node &ending_site,
+ double p_capacity,
+ double p_speed,
+ double p_factor);
+
+
+ bool is_phony() const {return id() < 0;}
+ double speed() const;
+
+ /*! @name deque like functions
+
+ @returns True if the operation was performed
+ @warning Assertions are performed for out of range operations
+ @warning no feasability nor time window or capacity violations
+ checks are performed
+ @todo TODO more deque like functions here
+ */
+
+ /*! @brief Invariant
+ * The path must:
+ * - have at least 2 nodes
+ * - first node of the path must be Start node
+ * - last node of the path must be End node
+ *
+ * path: S ..... E
+ */
+ void invariant() const;
+
+
+ /// @ {
+
+ /*! @brief Insert @b node at @b pos position.
+ *
+ * @param[in] pos The position that the node should be inserted.
+ * @param[in] node The node to insert.
+ *
+ */
+ void insert(POS pos, Vehicle_node node);
+
+
+ /*! @brief Insert @b node in best position of the @b position_limits.
+ *
+ * @param[in] position_limits
+ * @param[in] node The node to insert
+ *
+ * @returns position where it was inserted
+ */
+ POS insert(std::pair<POS, POS> position_limits, const Vehicle_node &node);
+
+
+
+
+
+ /*! @brief Evaluated: push_back a node to the path.
+ *
+ * ~~~~{.c}
+ * before: S <nodes> E
+ * after: S <nodes> n E
+ * ~~~~
+ *
+ * @param[in] node to be push_back.
+ */
+ void push_back(const Vehicle_node &node);
+
+ /*! @brief Evaluated: push_back a node to the path.
+ *
+ * ~~~~{.c}
+ * before: S <nodes> E
+ * after: S n <nodes> E
+ * ~~~~
+ *
+ * @param[in] node to be push_back.
+ */
+ void push_front(const Vehicle_node &node);
+
+
+ /*! @brief Evaluated: pop_back a node to the path.
+ *
+ * ~~~~{.c}
+ * before: S <nodes> n E
+ * after: S <nodes> E
+ * ~~~~
+ */
+ void pop_back();
+
+ /*! @brief Evaluated: pop_front a node to the path.
+ *
+ * ~~~~{.c}
+ * before: S n <nodes> E
+ * after: S <nodes> E
+ * ~~~~
+ */
+ void pop_front();
+
+ /*! @brief Erase node.id()
+ *
+ * @note start and ending nodes cannot be erased
+ *
+ * Numbers are positions
+ * before: S .... node.id() .... E
+ * after: S .... .... E
+ *
+ */
+ void erase(const Vehicle_node &node);
+
+
+
+ /*! @brief Erase node at `pos` from the path.
+ *
+ * @note start and ending nodes cannot be erased
+ *
+ * Numbers are positions
+ * before: S 1 2 3 4 5 6 pos 8 9 E
+ * after: S 1 2 3 4 5 6 8 9 E
+ *
+ * @param[in] pos to be erased.
+ */
+ void erase(POS pos);
+
+ /*! @brief return true when no nodes are in the truck
+ *
+ * ~~~~{.c}
+ * True: S E
+ * False: S <nodes> E
+ * ~~~~
+ */
+ bool empty() const;
+
+
+ /// @{
+ Cost cost() const;
+ bool cost_compare(const Cost&, const Cost&) const;
+
+ double duration() const {
+ return m_path.back().departure_time();
+ }
+ double total_wait_time() const {
+ return m_path.back().total_wait_time();
+ }
+ double total_travel_time() const {
+ return m_path.back().total_travel_time();
+ }
+ double total_service_time() const {
+ return m_path.back().total_service_time();
+ }
+ double free_time() const {
+ return total_wait_time() + (m_path[0].closes() - duration());
+ }
+ int twvTot() const {
+ return m_path.back().twvTot();
+ }
+ int cvTot() const {
+ return m_path.back().cvTot();
+ }
+ bool has_twv() const {
+ return twvTot() != 0;
+ }
+ bool has_cv() const {
+ return cvTot() != 0;
+ }
+
+ bool is_feasable() const {
+ return !(has_twv() || has_cv());
+ }
+
+ bool is_ok() const;
+
+ Vehicle_node start_site() const {
+ return m_path.front();
+ }
+ Vehicle_node end_site() const {
+ return m_path.back();
+ }
+#if 0
+ double speed() const {return m_speed;}
+#endif
+ double capacity() const {return m_capacity;}
+ /// @}
+
+
+
+ /*!
+ * @brief Swap two nodes in the path.
+ *
+ * ~~~~{.c}
+ * Before: S <nodesA> I <nodesB> J <nodesC> E
+ * After: S <nodesA> J <nodesB> I <nodesC> E
+ * ~~~~
+ *
+ * @param[in] i The position of the first node to swap.
+ * @param[in] j The position of the second node to swap.
+ */
+ void swap(POS i, POS j);
+
+
+ /*! @name Evaluation
+ *
+ *
+ *
+ * Path evaluation is done incrementally: from a given position to the
+ * end of the path, and intermediate values are cached on each node.
+ * So, for example, changing the path at position 100:
+ * the evaluation function should be called as
+ * @c evaluate(100, maxcapacity)
+ * and from that position to the end of the path will be evaluated.
+ * None of the "unaffected" positions get reevaluated
+ *
+ *
+ *
+ */
+
+ ///@ {
+
+ /*! @brief Evaluate: Evaluate the whole path from the start. */
+ void evaluate();
+
+ /*! @brief Evaluate: Evaluate a path from the given position.
+ *
+ * @param[in] from The starting position in the path for evaluation to
+ * the end of the path.
+ */
+ void evaluate(POS from);
+
+ ///@}
+
+ double deltaTime(const Vehicle_node &node, POS pos) const;
+ POS insert_less_travel_time(const Vehicle_node &node, POS after_pos = 0);
+
+
+
+ /*! @name accessors */
+ ///@ {
+
+ std::deque< Vehicle_node > path() const;
+
+ ///@}
+
+ /*! @name operators */
+ ///@ {
+
+
+ friend std::ostream& operator << (std::ostream &log, const Vehicle &v);
+
+ std::string tau() const;
+
+ friend bool operator<(const Vehicle &lhs, const Vehicle &rhs);
+
+ ///@}
+
+
+
+ std::pair<POS, POS> position_limits(const Vehicle_node node) const;
+
+ private:
+ POS getPosLowLimit(const Vehicle_node &node) const;
+ POS getPosHighLimit(const Vehicle_node &node) const;
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_VEHICLE_H_
diff --git a/include/vrp/vehicle_node.h b/include/vrp/vehicle_node.h
new file mode 100644
index 0000000..44e7bc3
--- /dev/null
+++ b/include/vrp/vehicle_node.h
@@ -0,0 +1,190 @@
+/*PGR-GNU*****************************************************************
+
+FILE: vehicle_node.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_VEHICLE_NODE_H_
+#define INCLUDE_VRP_VEHICLE_NODE_H_
+#pragma once
+
+
+#include <string>
+
+#include "vrp/tw_node.h"
+
+namespace pgrouting {
+namespace vrp {
+
+
+/*! \class Vehicle_node;
+ * \brief Extend Tw_node to evaluate the vehicle at node level
+ *
+ * This class extends Twnode by adding attributes to store information
+ * about the node in a path and provides the tools evaluate the node
+ * and to set and get these attribute values.
+ */
+class Vehicle_node: public Tw_node {
+ public:
+ /** @name log */
+ ///@ {
+
+ friend std::ostream& operator<<(
+ std::ostream &log, const Vehicle_node &node);
+
+ ///@}
+
+ /** @name Node evaluation accessors */
+ ///@ {
+
+ /*! \brief Truck's travel_time from previous node to this node. */
+ inline double travel_time() const {return m_travel_time;}
+
+ /*! \brief Truck's arrival_time to this node. */
+ inline double arrival_time() const {return m_arrival_time;}
+
+ /*! \brief Truck's wait_time at this node. */
+ inline double wait_time() const {return m_wait_time;}
+
+ /*! \brief Truck's departure_time from this node. */
+ inline double departure_time() const {return m_departure_time;}
+
+ /*! \brief delta_time = departure_time(this) - departure_time(previous) */
+ inline double delta_time() const {return m_delta_time;}
+
+ ///@}
+
+
+
+
+
+
+ /** @name Accumulated evaluation accessors */
+ ///@ {
+
+ /*! \brief Truck's total times it has violated time windows. */
+ inline int twvTot() const {return m_twvTot;}
+
+ /*! \brief Truck's total times it has violated cargo limits. */
+ inline int cvTot() const {return m_cvTot;}
+
+ /*! \brief Truck's total cargo after the node was served. */
+ inline double cargo() const {return m_cargo;}
+
+ /*! \brief Truck's travel duration up to this node. */
+ inline double total_time() const {return m_departure_time;}
+
+ /*! \brief _time spent moving between nodes by the truck */
+ inline double total_travel_time() const {return m_tot_travel_time;}
+
+ /*! \brief _time spent by the truck waiting for nodes to open */
+ inline double total_wait_time() const {return m_tot_wait_time;}
+
+ /*! \brief _time spent by the truck servicing the nodes */
+ inline double total_service_time() const {return m_tot_service_time;}
+
+ ///@}
+
+ /*! \brief True when \b arrival_time + \b delta_time generates TWV.*/
+ bool deltaGeneratesTWV(double delta_time) const;
+
+ /** @name State */
+ ///@ {
+
+ /*! \brief True when the total count for violations are 0 */
+ bool feasible() const {return m_twvTot == 0 && m_cvTot == 0;}
+
+ /*! \brief True doesn't have twc nor cv (including total counts) */
+ bool feasible(double cargoLimit) const {
+ return feasible() && !has_twv() && !has_cv(cargoLimit);
+ }
+
+ /*! \brief True when at this node does not violate time windows */
+ bool has_twv() const {
+ return is_late_arrival(m_arrival_time);
+ }
+
+ /*! \brief True when not violation
+ *
+ * Ending's or start's cargo should be 0
+ **/
+ bool has_cv(double cargoLimit) const {
+ return is_end() || is_start() ? m_cargo != 0
+ : m_cargo > cargoLimit || m_cargo < 0;
+ }
+ ///@}
+
+ /** @name mutators */
+ ///@ {
+ /*! @todo TODO evaluate with matrix also*/
+ void evaluate(double cargoLimit);
+ void evaluate(const Vehicle_node &pred, double cargoLimit, double speed);
+ ///@}
+
+ /** @name Document*/
+ ///@ {
+
+ /*! \brief returns the arrval time at \b this visited after \b other */
+ double arrival_i_arrives_j(
+ const Vehicle_node &other,
+ double speed) const;
+
+ ///@}
+
+
+
+ /*! \brief Construct from parameters */
+ Vehicle_node() : Tw_node() {}
+ Vehicle_node(const Vehicle_node &) = default;
+ explicit Vehicle_node(const Tw_node &node);
+
+ private:
+ /** @name Node evaluation members */
+ ///@ {
+
+ double m_travel_time; ///< Travel time from last node
+ double m_arrival_time; ///< Arrival time at this node
+ double m_wait_time; ///< Wait time at this node when early arrival
+ double m_departure_time; // /< Departure time from this node
+ double m_delta_time; ///< Departure time - last nodes departure time
+
+ ///@}
+
+ /** @name Accumulated evaluation members */
+ ///@ {
+
+ double m_cargo; ///< Accumulated cargo
+ int m_twvTot; ///< Total count of TWV
+ int m_cvTot; ///< Total count of CV
+ double m_tot_wait_time; ///< Accumulated wait time
+ double m_tot_travel_time; ///< Accumulated travel time
+ double m_tot_service_time; // /< Accumulated service time
+
+ ///@}
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_VEHICLE_NODE_H_
diff --git a/include/vrp/vehicle_pickDeliver.h b/include/vrp/vehicle_pickDeliver.h
new file mode 100644
index 0000000..bf8a277
--- /dev/null
+++ b/include/vrp/vehicle_pickDeliver.h
@@ -0,0 +1,183 @@
+/*PGR-GNU*****************************************************************
+
+FILE: vehicle_pickDeliver.h
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at 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*/
+
+/*! @file */
+
+#ifndef INCLUDE_VRP_VEHICLE_PICKDELIVER_H_
+#define INCLUDE_VRP_VEHICLE_PICKDELIVER_H_
+#pragma once
+
+#include <set>
+#include "vrp/order.h"
+#include "vrp/pd_orders.h"
+#include "vrp/tw_node.h"
+#include "vrp/vehicle.h"
+#include "cpp_common/identifiers.hpp"
+
+namespace pgrouting {
+namespace vrp {
+
+
+class Initial_solution;
+class Optimize;
+
+class Vehicle_pickDeliver : public Vehicle {
+ protected:
+ double cost;
+ //! orders inserted in this vehicle
+ Identifiers<size_t> m_orders_in_vehicle;
+ PD_Orders m_orders;
+ //! orders that fit in the truck
+ Identifiers<size_t> m_feasable_orders;
+
+
+ public:
+ friend class Initial_solution;
+ friend class Optimize;
+
+ Vehicle_pickDeliver(
+ size_t id,
+ size_t kind,
+ const Vehicle_node &starting_site,
+ const Vehicle_node &ending_site,
+ double p_capacity,
+ double p_speed,
+ double factor);
+
+ Vehicle_pickDeliver(const Vehicle_pickDeliver &) = default;
+
+
+ void set_compatibles(const PD_Orders &orders);
+ bool is_order_feasable(const Order &order) const;
+ Identifiers<size_t> feasable_orders() const {return m_feasable_orders;}
+
+ const PD_Orders& orders() const {return m_orders;}
+ size_t orders_size() const {return m_orders_in_vehicle.size();}
+ Identifiers<size_t> orders_in_vehicle() const {return m_orders_in_vehicle;}
+
+ bool has_order(const Order &order) const;
+
+ /*! @brief puts an order at the end of the truck
+ *
+ * Precondition:
+ * !has_order(order)
+ *
+ * Postcondition:
+ * has_order(order)
+ * !has_cv();
+ *
+ * ~~~~{.c}
+ * Before: S <nodes> E
+ * After: S <nodes> P D E
+ * ~~~~
+ *
+ * Can generate time window violation
+ * No capacity violation
+ */
+ void push_back(const Order &order);
+
+
+ /*! @brief Puts an order at the end front of the truck
+ *
+ * Precondition:
+ * !has_order(order)
+ *
+ * Postcondition:
+ * has_order(order)
+ * !has_cv();
+ *
+ * ~~~~{.c}
+ * Before: S <nodes> E
+ * After: S P D <nodes> E
+ * ~~~~
+ *
+ * Can generate time window violation
+ * No capacity violation
+ */
+ void push_front(const Order &order);
+
+
+ /*! @brief Inserts an order
+ *
+ * Precondition:
+ * !has_order(order)
+ *
+ * Postcondition:
+ * has_order(order)
+ * !has_cv();
+ *
+ * ~~~~{.c}
+ * Before: S <nodes> E
+ * After: S ....P .... D .... E
+ * ~~~~
+ *
+ * push_back is performed when
+ * - pickup
+ *
+ * Can generate time window violation
+ * No capacity violation
+ */
+ void insert(const Order &order);
+
+#if 0
+ void insert_while_compatibleJ(
+ Identifiers<PD_Orders::OID> &unassigned,
+ Identifiers<PD_Orders::OID> &assigned);
+#endif
+ /* @brief erases the order from the vehicle
+ *
+ * Precondition:
+ * has_order(order)
+ *
+ * Precondition:
+ * !has_order(order)
+ */
+ void erase(const Order &order);
+
+ /* @brief
+ */
+ Order get_first_order() const;
+ Order get_worse_order(Identifiers<size_t> of_this_subset) const;
+
+ void do_while_feasable(
+ int kind,
+ Identifiers<size_t> &unassigned,
+ Identifiers<size_t> &assigned);
+
+
+ /*!
+ * The order that is picked last is removed
+ *
+ * \returns id of the removed order
+ */
+
+ size_t pop_back();
+ size_t pop_front();
+};
+
+} // namespace vrp
+} // namespace pgrouting
+
+#endif // INCLUDE_VRP_VEHICLE_PICKDELIVER_H_
diff --git a/include/yen/pgr_ksp.hpp b/include/yen/pgr_ksp.hpp
new file mode 100644
index 0000000..30939e5
--- /dev/null
+++ b/include/yen/pgr_ksp.hpp
@@ -0,0 +1,263 @@
+/*PGR-GNU*****************************************************************
+File: pgr_ksp.hpp
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef INCLUDE_YEN_PGR_KSP_HPP_
+#define INCLUDE_YEN_PGR_KSP_HPP_
+#pragma once
+
+#include "dijkstra/pgr_dijkstra.hpp"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+#include <set>
+#include <limits>
+
+#include "cpp_common/pgr_assert.h"
+#include "cpp_common/basePath_SSEC.hpp"
+
+template < class G >
+class Pgr_ksp {
+ public:
+ std::deque<Path> Yen(
+ G &graph,
+ int64_t source,
+ int64_t target,
+ int K,
+ bool heap_paths);
+ void clear();
+
+ private:
+ class compPaths {
+ public:
+ bool operator()(const Path &p1, const Path &p2) const {
+ /*
+ * less cost is best
+ */
+ if (p1.tot_cost() > p2.tot_cost())
+ return false;
+ if (p1.tot_cost() < p2.tot_cost())
+ return true;
+
+ pgassert(p1.tot_cost() == p2.tot_cost());
+
+ // paths costs are equal now check by length
+ if (p1.size() > p2.size())
+ return false;
+ if (p1.size() < p2.size())
+ return true;
+
+ pgassert(p1.tot_cost() == p2.tot_cost());
+ pgassert(p1.size() == p2.size());
+
+ // paths weights & lengths are equal now check by node ID
+ unsigned int i;
+ for (i = 0; i < p1.size(); i++) {
+ if (p1[i].node > p2[i].node)
+ return false;
+ if (p1[i].node < p2[i].node)
+ return true;
+ }
+
+ pgassert(p1.tot_cost() == p2.tot_cost());
+ pgassert(p1.size() == p2.size());
+#ifdef NDEBUG
+ for (i = 0; i < p1.size(); i++) {
+ pgassert(p1[i].node == p2[i].node);
+ }
+#endif
+
+ // we got here and everything is equal
+ return false;
+ }
+ };
+
+ //! the actual algorithm
+ void executeYen(G &graph, int top_k);
+
+ /** @name Auxiliary function for yen's algorithm */
+ ///@{
+
+ //! Performs the first Dijkstra of the algorithm
+ void getFirstSolution(G &graph);
+ //! Performs the next cycle of the algorithm
+ void doNextCycle(G &graph);
+ //! stores in subPath the first i elements of path
+ void removeVertices(G &graph, const Path &path);
+ ///@}
+
+ private:
+ /** @name members */
+ ///@{
+ typedef typename G::V V;
+ V v_source; //!< source descriptor
+ V v_target; //!< target descriptor
+ int64_t m_start; //!< source id
+ int64_t m_end; //!< target id
+
+ Path curr_result_path; //!< storage for the current result
+
+ typedef std::set<Path, compPaths> pSet;
+ pSet m_ResultSet; //!< ordered set of shortest paths
+ pSet m_Heap; //!< the heap
+
+ std::ostringstream log;
+};
+
+
+template < class G >
+void Pgr_ksp< G >::clear() {
+ m_Heap.clear();
+}
+
+template < class G >
+void Pgr_ksp< G >::getFirstSolution(G &graph) {
+ Path path;
+
+ Pgr_dijkstra< G > fn_dijkstra;
+ path = fn_dijkstra.dijkstra(graph, m_start, m_end);
+
+ if (path.empty()) return;
+ curr_result_path = path;
+ m_ResultSet.insert(curr_result_path);
+}
+
+template < class G>
+std::deque<Path>
+Pgr_ksp< G >::Yen(G &graph,
+ int64_t start_vertex, int64_t end_vertex, int K, bool heap_paths) {
+ /*
+ * No path: already in destination
+ */
+ if ((start_vertex == end_vertex) || (K == 0)) {
+ return std::deque<Path>();
+ }
+ /*
+ * no path: disconnected vertices
+ */
+ if (!graph.has_vertex(start_vertex)
+ || !graph.has_vertex(end_vertex)) {
+ return std::deque<Path>();
+ }
+ m_ResultSet.clear();
+ m_Heap.clear();
+
+ v_source = graph.get_V(start_vertex);
+ v_target = graph.get_V(end_vertex);
+ m_start = start_vertex;
+ m_end = end_vertex;
+ executeYen(graph, K);
+
+ while (!m_ResultSet.empty()) {
+ m_Heap.insert(*m_ResultSet.begin());
+ m_ResultSet.erase(m_ResultSet.begin());
+ }
+ std::deque<Path> l_ResultList(m_Heap.begin(), m_Heap.end());
+
+ std::stable_sort(l_ResultList.begin(), l_ResultList.end(),
+ [](const Path &left, const Path &right) -> bool {
+ for (size_t i = 0;
+ i < (std::min)(left.size(), right.size());
+ ++i) {
+ if (left[i].node < right[i].node) return true;
+ if (left[i].node > right[i].node) return false;
+ }
+ return false;
+ });
+
+ std::stable_sort(l_ResultList.begin(), l_ResultList.end(),
+ [](const Path &left, const Path &right) {
+ return left.size() < right.size();});
+
+ if (!heap_paths && l_ResultList.size() > (size_t) K)
+ l_ResultList.resize(K);
+
+ return l_ResultList;
+}
+
+
+template < class G >
+void Pgr_ksp< G >::removeVertices(G &graph, const Path &subpath) {
+ for (const auto &e : subpath)
+ graph.disconnect_vertex(e.node);
+}
+
+template < class G >
+void Pgr_ksp< G >::doNextCycle(G &graph) {
+ int64_t spurNodeId;
+
+
+ for (unsigned int i = 0; i < curr_result_path.size(); ++i) {
+ spurNodeId = curr_result_path[i].node;
+
+ auto rootPath = curr_result_path.getSubpath(i);
+
+ for (const auto &path : m_ResultSet) {
+ if (path.isEqual(rootPath)) {
+ if (path.size() > i + 1) {
+ graph.disconnect_edge(path[i].node, // from
+ path[i + 1].node); // to
+ }
+ }
+ }
+
+ removeVertices(graph, rootPath);
+
+ Pgr_dijkstra< G > fn_dijkstra;
+ auto spurPath = fn_dijkstra.dijkstra(graph, spurNodeId, m_end);
+
+ if (spurPath.size() > 0) {
+ rootPath.appendPath(spurPath);
+ m_Heap.insert(rootPath);
+ }
+
+ graph.restore_graph();
+ }
+}
+
+template < class G >
+void Pgr_ksp< G >::executeYen(G &graph, int K) {
+ clear();
+ getFirstSolution(graph);
+
+ if (m_ResultSet.size() == 0) return; // no path found
+
+ while (m_ResultSet.size() < (unsigned int) K) {
+ doNextCycle(graph);
+ if (m_Heap.empty()) break;
+ curr_result_path = *m_Heap.begin();
+ m_ResultSet.insert(curr_result_path);
+ m_Heap.erase(m_Heap.begin());
+ /*
+ * without the next line withpointsKSP hungs with:
+ * c++ 4.6
+ * Debug mode
+ */
+#ifndef NDEBUG
+ log << "end of while heap size" << m_Heap.size();
+#endif
+ }
+}
+
+#endif // INCLUDE_YEN_PGR_KSP_HPP_
diff --git a/locale/.gitignore b/locale/.gitignore
new file mode 100644
index 0000000..cd1f2c9
--- /dev/null
+++ b/locale/.gitignore
@@ -0,0 +1 @@
+*.mo
diff --git a/locale/README.md b/locale/README.md
new file mode 100644
index 0000000..d3bf688
--- /dev/null
+++ b/locale/README.md
@@ -0,0 +1,133 @@
+
+
+# Locale
+
+Currently the setup is for `es` `ru` `ja` `it` `de` `fr`
+
+## Building the LOCALE:
+
+Use this when the English documentation changed.
+
+```
+cd build
+#rm -rf * #BE VERY CAREFULL
+cmake -D LOCALE=ON ..
+make locale
+cd ..
+sphinx-intl update -d locale
+```
+
+review
+```
+for f in locale/pot/*; do echo $f; grep $f .tx/config; done
+for f in `grep '\.pot' .tx/config | sed 's/^.*pot\/\(.*\)$/\1/' | grep '\.pot'` ; do echo $f; ls locale/pot/* | grep $f ; done
+```
+
+commit changes and push
+
+
+## MANAGERS: Interaction with transifex:
+
+### Push the resource to transifex
+
+Push a New or changed resource:
+
+* New resource
+
+Add the resource to the `.tx/config` located at the root of the repository
+(Use as example the other resources)
+
+```
+vim ../.tx/config
+```
+
+* Push the new resource
+```
+tx push --source -r pgrouting.pgr_createVerticesTable
+
+```
+Note: Do not put the file extension
+
+NOTE: INFORM: A documentation frezze to let translators translate
+
+### Pull the resources from transifex
+
+Be patient takes time (I like the `-d` flag just to know what is being downloaded)
+
+* this pulls all the translations
+```
+tx -d pull -f
+```
+
+* this pulls the Spanish translations
+```
+tx -d pull -f -l es
+```
+
+
+
+## TRANSLATORS
+
+For this example the translator is translating `pgr_createVerticesTable` to `Spanish`
+
+* Step 1: Build a local documentation
+
+```
+cd build
+rm -rf *
+cmake -D HTML=ON -D ES=ON ..
+make html-es
+```
+
+* Step 2: Navigate to the page you are translating:
+
+On the Browser go to:
+```
+file:///path/to/build/doc/_build/html/es/pgr_createVerticesTable.html
+```
+
+* Step 3: Pull the translation & build the documentation & refresh browser
+
+```
+tx pull -r pgrouting.pgr_createVerticesTable -l es
+make html-es
+```
+`Refresh browser`
+
+## Building the documentation:
+
+NOTE: in any case English is always build
+
+* Building all languages
+
+```
+cmake -D HTML=ON -D WITH_ALL_LANG=ON ..
+make doc
+```
+
+* Building a a particular language
+
+This example shows Spanish:
+
+```
+cmake -D HTML=ON -D ES=ON ..
+make html
+```
+
+* Building a particular language
+
+This example shows Spanish:
+
+```
+make -D HTML=ON -D SINGLEHTML=OM -D ES=ON ..
+make html
+make singlehtml
+# OR to build both:
+make doc
+```
+
+# References
+
+* https://pypi.python.org/pypi/sphinx-intl
+* https://docs.transifex.com/client/introduction
+* http://www.sphinx-doc.org/en/stable/intl.html
diff --git a/locale/de/LC_MESSAGES/KSP-category.po b/locale/de/LC_MESSAGES/KSP-category.po
new file mode 100644
index 0000000..9232738
--- /dev/null
+++ b/locale/de/LC_MESSAGES/KSP-category.po
@@ -0,0 +1,36 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/KSP-category.rst:14
+msgid "KSP Category"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:18
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:19
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:26
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:27
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:28
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/TSP-family.po b/locale/de/LC_MESSAGES/TSP-family.po
new file mode 100644
index 0000000..0f03653
--- /dev/null
+++ b/locale/de/LC_MESSAGES/TSP-family.po
@@ -0,0 +1,556 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/TSP-family.rst:13
+msgid "Traveling Sales Person - Family of functions"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:17
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:18
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:33
+msgid "Origin"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid ""
+"The traveling sales person problem was studied in the 18th century by "
+"mathematicians"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid "**Sir William Rowam Hamilton** and **Thomas Penyngton Kirkman**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:38
+msgid ""
+"A discussion about the work of Hamilton & Kirkman can be found in the book "
+"**Graph Theory (Biggs et al. 1976)**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:41
+msgid "ISBN-13: 978-0198539162"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:42
+msgid "ISBN-10: 0198539169"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:44
+msgid ""
+"It is believed that the general form of the TSP have been first studied by "
+"Kalr Menger in Vienna and Harvard. The problem was later promoted by "
+"Hassler, Whitney & Merrill at Princeton. A detailed description about the"
+" connection between Menger & Whitney, and the development of the TSP can be "
+"found in `On the history of combinatorial optimization (till 1960) "
+"<http://www.cwi.nl/~lex/files/histco.ps>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:50
+msgid "Problem Definition"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:52
+msgid ""
+"Given a collection of cities and travel cost between each pair, find the "
+"cheapest way for visiting all of the cities and returning to the starting "
+"point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:56
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:58
+msgid "The travel costs are symmetric:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:60
+msgid ""
+"traveling costs from city A to city B are just as much as traveling from B "
+"to A."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:62
+msgid "This problem is an NP-hard optimization problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:64
+msgid "To calculate the number of different tours through :math:`n` cities:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:66
+msgid "Given a starting city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:67
+msgid "There are :math:`n-1` choices for the second city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:68
+msgid "And :math:`n-2` choices for the third city, etc."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:69
+msgid ""
+"Multiplying these together we get :math:`(n-1)! = (n-1) (n-2) . . 1`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:70
+msgid ""
+"Now since our travel costs do not depend on the direction we take around the"
+" tour:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:72
+msgid "this number by 2"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:73
+msgid ":math:`(n-1)!/2`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:76
+msgid "TSP & Simulated Annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:78
+msgid ""
+"The simulated annealing algorithm was originally inspired from the process "
+"of annealing in metal work."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:81
+msgid ""
+"Annealing involves heating and cooling a material to alter its physical "
+"properties due to the changes in its internal structure. As the metal cools "
+"its new structure becomes fixed, consequently causing the metal to retain "
+"its newly obtained properties. [C001]_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:88
+msgid "Pseudocode"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:89
+msgid ""
+"Given an initial solution, the simulated annealing process, will start with "
+"a high temperature and gradually cool down until the desired temperature is "
+"reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:92
+msgid ""
+"For each temperature, a neighbouring new solution **snew** is calculated. "
+"The higher the temperature the higher the probability of accepting the new "
+"solution as a possible bester solution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:95
+msgid ""
+"Once the desired temperature is reached, the best solution found is returned"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:118
+msgid "pgRouting Implementation"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:120
+msgid ""
+"pgRouting's implementation adds some extra parameters to allow some exit "
+"controls within the simulated annealing process."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:123
+msgid "To cool down faster to the next temperature:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:125
+msgid ""
+"max_changes_per_temperature: limits the number of changes in the solution "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:126
+msgid ""
+"max_consecutive_non_changes: limits the number of consecutive non changes "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:128
+msgid ""
+"This is done by doing some book keeping on the times **solution = snew;** is"
+" executed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:130
+msgid ""
+"max_changes_per_temperature: Increases by one when **solution** changes"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:131
+msgid ""
+"max_consecutive_non_changes: Reset to 0 when **solution** changes, and "
+"increased each **try**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:133
+msgid ""
+"Additionally to stop the algorithm at a higher temperature than the desired "
+"one:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:135
+msgid ""
+"max_processing_time: limits the time the simulated annealing is performed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:136
+msgid ""
+"book keeping is done to see if there was a change in **solution** on the "
+"last temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:138
+msgid ""
+"Note that, if no change was found in the first "
+"**max_consecutive_non_changes** tries, then the simulated annealing will "
+"stop."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:168
+msgid "Choosing parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:170
+msgid ""
+"There is no exact rule on how the parameters have to be chose, it will "
+"depend on the special characteristics of the problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:173
+msgid ""
+"Your computational time is crucial, then put your time limit to "
+"**max_processing_time**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:174
+msgid ""
+"Make the **tries_per_temperture** depending on the number of cities, for "
+"example:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:176
+msgid "Useful to estimate the time it takes to do one cycle: use `1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:178
+msgid "this will help to set a reasonable **max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:180
+msgid ":math:`n * (n-1)`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:181
+msgid ":math:`500 * n`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:183
+msgid ""
+"For a faster decreasing the temperature set **cooling_factor** to a smaller "
+"number, and set to a higher number for a slower decrease."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:186
+msgid ""
+"When for the same given data the same results are needed, set **randomize** "
+"to `false`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:188
+msgid "When estimating how long it takes to do one cycle: use `false`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:191
+msgid ""
+"A recommendation is to play with the values and see what fits to the "
+"particular data."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:196
+msgid "Description Of the Control parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:198
+msgid "The control parameters are optional, and have a default value."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+#: ../../build/doc/TSP-family.rst:233
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+msgid "`0`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "The greedy part of the implementation will use this identifier."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "Last visiting vertex before returning to start_vid."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "**max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205 ../../build/doc/TSP-family.rst:209
+#: ../../build/doc/TSP-family.rst:210 ../../build/doc/TSP-family.rst:211
+#: ../../build/doc/TSP-family.rst:234 ../../build/doc/TSP-family.rst:237
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "`+infinity`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "Stop the annealing processing when the value is reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "**tries_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206 ../../build/doc/TSP-family.rst:207
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:232
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "`500`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "Maximum number of times a neighbor(s) is searched in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "**max_changes_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "`60`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "Maximum number of times the solution is changed in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid "**max_consecutive_non_changes**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:209
+msgid "`100`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid ""
+"Maximum number of consecutive times the solution is not changed in each "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "**initial_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "Starting temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "**final_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "`0.1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "Ending temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "**cooling_factor**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "`0.9`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid ""
+"Value between between 0 and 1 (not including) used to calculate the next "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "**randomize**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "`true`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "Choose the random seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:214
+msgid "true: Use current time as seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:215
+msgid ""
+"false: Use `1` as seed. Using this value will get the same results with the "
+"same data in each execution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:225
+msgid "Description of the return columns"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:227
+msgid "Returns set of ``(seq, node, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:230
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "Identifier of the node/coordinate/point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:234
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid ""
+"Cost to traverse from the current ``node`` ito the next ``node`` in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:237
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:245
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:248
+msgid "References"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:249
+msgid ""
+"`Simulated annaeling algorithm for beginners <http://www.theprojectspot.com"
+"/tutorial-post/simulated-annealing-algorithm-for-beginners/6>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:251
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:252
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:255
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:256
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:257
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/aStar-family.po b/locale/de/LC_MESSAGES/aStar-family.po
new file mode 100644
index 0000000..3364e02
--- /dev/null
+++ b/locale/de/LC_MESSAGES/aStar-family.po
@@ -0,0 +1,205 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/aStar-family.rst:13
+msgid "aStar - Family of functions"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:15
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic that allow it to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:19
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:20
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:21
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:34
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:36
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic, that is an estimation of the remaining cost from the "
+"vertex to the goal, that allows to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph. Running time: :math:`O((E + "
+"V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:46
+msgid "Heuristic"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:48
+msgid "Currently the heuristic functions available are:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:50
+msgid "0: :math:`h(v) = 0` (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:51
+msgid "1: :math:`h(v) = abs(max(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:52
+msgid "2: :math:`h(v) = abs(min(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:53
+msgid "3: :math:`h(v) = \\Delta x * \\Delta x + \\Delta y * \\Delta y`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:54
+msgid "4: :math:`h(v) = sqrt(\\Delta x * \\Delta x + \\Delta y * \\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:55
+msgid "5: :math:`h(v) = abs(\\Delta x) + abs(\\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:57
+msgid "where :math:`\\Delta x = x_1 - x_0` and :math:`\\Delta y = y_1 - y_0`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:63 ../../build/doc/aStar-family.rst:76
+#: ../../build/doc/aStar-family.rst:89
+msgid "Factor"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:66
+msgid "Analysis 1"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:67
+msgid ""
+"Working with cost/reverse_cost as length in degrees, x/y in lat/lon: Factor "
+"= 1 (no need to change units)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:71
+msgid "Analysis 2"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:72
+msgid ""
+"Working with cost/reverse_cost as length in meters, x/y in lat/lon: Factor ="
+" would depend on the location of the points:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "latitude"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "conversion"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78 ../../build/doc/aStar-family.rst:91
+msgid "45"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "1 longitude degree is 78846.81 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "78846"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79 ../../build/doc/aStar-family.rst:92
+msgid "0"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "1 longitude degree is 111319.46 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "111319"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:83
+msgid "Analysis 3"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:84
+msgid ""
+"Working with cost/reverse_cost as time in seconds, x/y in lat/lon: Factor: "
+"would depend on the location of the points and on the average speed say "
+"25m/s is the speed."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "1 longitude degree is (78846.81m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "3153 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "1 longitude degree is (111319.46 m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "4452 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:98
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:100
+msgid ":ref:`pgr_aStar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:101
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:102
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:103
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:104
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:107
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:108
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:109
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/allpairs-family.po b/locale/de/LC_MESSAGES/allpairs-family.po
new file mode 100644
index 0000000..9749ed9
--- /dev/null
+++ b/locale/de/LC_MESSAGES/allpairs-family.po
@@ -0,0 +1,996 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/allpairs-family.rst:14
+msgid "All Pairs - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:16
+msgid "The following functions work an all vertices pair combinations"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:33
+msgid "Performance"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "The following tests:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:36
+msgid "non server computer"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:37
+msgid "with AMD 64 CPU"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:38
+msgid "4G memory"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:39
+msgid "trusty"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "posgreSQL version 9.3"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:43
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:45
+msgid "The following data was used"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:53
+msgid "Data processing was done with osm2pgrouting-alpha"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:66
+msgid "Results"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:68
+msgid "One"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:70
+msgid ""
+"This test is not with a bounding box The density of the passed graph is "
+"extremely low. For each <SIZE> 30 tests were executed to get the average The"
+" tested query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:83
+#: ../../build/doc/allpairs-family.rst:140
+msgid "The results of this tests are presented as:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:85
+msgid "is the number of edges given as input."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:86
+#: ../../build/doc/allpairs-family.rst:143
+msgid "is the total number of records in the query."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:87
+#: ../../build/doc/allpairs-family.rst:144
+msgid "is the density of the data :math:`\\dfrac{E}{V \\times (V-1)}`."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:88
+#: ../../build/doc/allpairs-family.rst:145
+msgid "is the number of records returned by the queries."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:89
+#: ../../build/doc/allpairs-family.rst:146
+msgid "is the average execution time in seconds of pgr_floydWarshall."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:90
+#: ../../build/doc/allpairs-family.rst:147
+msgid "is the average execution time in seconds of pgr_johnson."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "SIZE"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "EDGES"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "DENSITY"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "OUT ROWS"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Floyd-Warshall"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Johnson"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+#: ../../build/doc/allpairs-family.rst:96
+msgid "500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.18E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "1346"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.14"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.13"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+#: ../../build/doc/allpairs-family.rst:97
+msgid "1000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.36E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "2655"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.23"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.18"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:98
+msgid "1500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.55E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "4110"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:99
+msgid "2000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.73E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "5676"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.56"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+#: ../../build/doc/allpairs-family.rst:100
+msgid "2500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.89E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "7177"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.84"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+#: ../../build/doc/allpairs-family.rst:101
+msgid "3000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.07E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "8778"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "0.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+#: ../../build/doc/allpairs-family.rst:102
+msgid "3500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "1.24E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "10526"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "2.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "0.95"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+#: ../../build/doc/allpairs-family.rst:103
+msgid "4000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.41E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "12484"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "3.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.58E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "14354"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+#: ../../build/doc/allpairs-family.rst:105
+msgid "5000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.76E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "16503"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "6.05"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.78"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+#: ../../build/doc/allpairs-family.rst:106
+msgid "5500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "1.93E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "18623"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "7.53"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "2.03"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+#: ../../build/doc/allpairs-family.rst:107
+msgid "6000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.11E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "20710"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "8.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+#: ../../build/doc/allpairs-family.rst:108
+msgid "6500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.28E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "22752"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "9.99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+#: ../../build/doc/allpairs-family.rst:109
+msgid "7000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "2.46E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "24687"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "11.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "3.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+#: ../../build/doc/allpairs-family.rst:110
+msgid "7500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "2.64E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "26861"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "13.94"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "3.60"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+#: ../../build/doc/allpairs-family.rst:111
+msgid "8000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "2.83E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "29050"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "15.61"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "4.09"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+#: ../../build/doc/allpairs-family.rst:112
+msgid "8500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "3.01E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "31693"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "17.43"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "4.63"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+#: ../../build/doc/allpairs-family.rst:113
+msgid "9000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "3.17E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "33879"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "19.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "5.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+#: ../../build/doc/allpairs-family.rst:114
+msgid "9500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "3.35E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "36287"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "20.77"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "6.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+#: ../../build/doc/allpairs-family.rst:115
+msgid "10000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "3.52E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "38491"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "23.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "6.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:119
+msgid "Two"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:121
+msgid ""
+"This test is with a bounding box The density of the passed graph higher than"
+" of the Test One. For each <SIZE> 30 tests were executed to get the average "
+"The tested edge query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:133
+msgid "The tested queries"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:142
+msgid "is the size of the bounding box."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.001"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "44"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.0608"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "1197"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:154
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.10"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.002"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.0251"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "4330"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.003"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "223"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.0122"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "18849"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.004"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "358"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.0085"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "71834"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.005"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "470"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.0070"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "116290"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.22"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.006"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "639"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.0055"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "207030"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.27"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "843"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.0043"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "346930"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.64"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.38"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.008"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "996"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.0037"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "469936"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.90"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.009"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1146"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.0032"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "613135"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.62"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.010"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1360"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.0027"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "849304"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1.87"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.011"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1573"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.0024"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1147101"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "2.65"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1.04"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1789"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.0021"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1483629"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "3.72"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1.35"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1975"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.0019"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1846897"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "4.86"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.014"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2281"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.0017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2438298"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "7.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2588"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.0015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "3156007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "10.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2.80"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.016"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "2958"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.0013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "4090618"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "14.67"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "3.76"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "3247"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.0012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4868919"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "18.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4.48"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:174
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:176
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:177
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:178
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:181
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:182
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:183
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/bdAstar-family.po b/locale/de/LC_MESSAGES/bdAstar-family.po
new file mode 100644
index 0000000..b2bd16b
--- /dev/null
+++ b/locale/de/LC_MESSAGES/bdAstar-family.po
@@ -0,0 +1,394 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Bidirectional A* - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:18
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:35
+msgid ""
+"Based on A* algorithm, the bidirectional search finds a shortest path from a"
+" starting vertex (``start_vid``) to an ending vertex (``end_vid``). It runs "
+"two simultaneous searches: one forward from the ``start_vid``, and one "
+"backward from the ``end_vid``, stopping when the two meet in the middle. "
+"This implementation can be used with a directed graph and an undirected "
+"graph."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:60
+msgid "It is expected to terminate faster than pgr_astar"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:63
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:78 ../../build/doc/bdAstar-family.rst:80
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:72
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79 ../../build/doc/bdAstar-family.rst:81
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:84
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:85
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:89
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:90
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:91
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:92
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:93
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:94
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96 ../../build/doc/bdAstar-family.rst:97
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:103
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/bdDijkstra-family.po b/locale/de/LC_MESSAGES/bdDijkstra-family.po
new file mode 100644
index 0000000..67de3fa
--- /dev/null
+++ b/locale/de/LC_MESSAGES/bdDijkstra-family.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdDijkstra-family.rst:13
+msgid "Bidirectional Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:17
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:18
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:19
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:35
+msgid ""
+"Based on Dijkstra's algorithm, the bidirectional search finds a shortest "
+"path a starting vertex (``start_vid``) to an ending vertex (``end_vid``). It"
+" runs two simultaneous searches: one forward from the source, and one "
+"backward from the target, stopping when the two meet in the middle. This "
+"implementation can be used with a directed graph and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:60
+msgid "It is expected to terminate faster than pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:63
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:66
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:67
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:68
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/components-family.po b/locale/de/LC_MESSAGES/components-family.po
new file mode 100644
index 0000000..dbca49a
--- /dev/null
+++ b/locale/de/LC_MESSAGES/components-family.po
@@ -0,0 +1,750 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/components-family.rst:13
+msgid "Components - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:22
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:23
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:25
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:42
+msgid "The problem definition"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:45
+msgid "Connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:46
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:49
+#: ../../build/doc/components-family.rst:183
+#: ../../build/doc/components-family.rst:252
+#: ../../build/doc/components-family.rst:312
+msgid "**Notice**: This problem defines on an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:51
+#: ../../build/doc/components-family.rst:117
+#: ../../build/doc/components-family.rst:185
+#: ../../build/doc/components-family.rst:254
+#: ../../build/doc/components-family.rst:314
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:54
+msgid "pgr_connectedComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:56
+#: ../../build/doc/components-family.rst:122
+#: ../../build/doc/components-family.rst:190
+#: ../../build/doc/components-family.rst:259
+#: ../../build/doc/components-family.rst:319
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:58
+#: ../../build/doc/components-family.rst:124
+#: ../../build/doc/components-family.rst:192
+#: ../../build/doc/components-family.rst:261
+#: ../../build/doc/components-family.rst:321
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:60
+#: ../../build/doc/components-family.rst:126
+#: ../../build/doc/components-family.rst:194
+#: ../../build/doc/components-family.rst:263
+#: ../../build/doc/components-family.rst:323
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:61
+#: ../../build/doc/components-family.rst:127
+#: ../../build/doc/components-family.rst:195
+#: ../../build/doc/components-family.rst:264
+#: ../../build/doc/components-family.rst:324
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:63
+#: ../../build/doc/components-family.rst:129
+#: ../../build/doc/components-family.rst:197
+#: ../../build/doc/components-family.rst:266
+#: ../../build/doc/components-family.rst:326
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:65
+#: ../../build/doc/components-family.rst:199
+#: ../../build/doc/components-family.rst:268
+#: ../../build/doc/components-family.rst:328
+msgid "The weighted undirected graph, :math:`G(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:67
+#: ../../build/doc/components-family.rst:133
+#: ../../build/doc/components-family.rst:201
+#: ../../build/doc/components-family.rst:270
+#: ../../build/doc/components-family.rst:330
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:69
+#: ../../build/doc/components-family.rst:203
+#: ../../build/doc/components-family.rst:272
+#: ../../build/doc/components-family.rst:332
+msgid ":math:`V = source \\cup target`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:72
+#: ../../build/doc/components-family.rst:137
+#: ../../build/doc/components-family.rst:206
+#: ../../build/doc/components-family.rst:275
+#: ../../build/doc/components-family.rst:335
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:74
+#: ../../build/doc/components-family.rst:208
+#: ../../build/doc/components-family.rst:277
+#: ../../build/doc/components-family.rst:337
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, cost_i) \\text{ when } cost"
+" >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} \\\\ \\cup &\\{(source_i, target_i, reverse\\_cost_i) \\text{ when }"
+" reverse\\_cost_i >=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:77
+#: ../../build/doc/components-family.rst:142
+#: ../../build/doc/components-family.rst:211
+#: ../../build/doc/components-family.rst:280
+#: ../../build/doc/components-family.rst:340
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:79
+#: ../../build/doc/components-family.rst:144
+#: ../../build/doc/components-family.rst:213
+#: ../../build/doc/components-family.rst:282
+#: ../../build/doc/components-family.rst:342
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:81
+#: ../../build/doc/components-family.rst:146
+#: ../../build/doc/components-family.rst:215
+#: ../../build/doc/components-family.rst:284
+#: ../../build/doc/components-family.rst:344
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:89
+#: ../../build/doc/components-family.rst:154
+#: ../../build/doc/components-family.rst:223
+msgid ":math:`\\boldsymbol{\\pi} = \\{(component_i, n\\_seq_i, node_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:298
+#: ../../build/doc/components-family.rst:358
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:92
+msgid ":math:`component_i = \\min \\{node_j | node_j \\in component_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:93
+#: ../../build/doc/components-family.rst:158
+#: ../../build/doc/components-family.rst:227
+msgid ""
+":math:`n\\_seq_i` is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:94
+#: ../../build/doc/components-family.rst:159
+msgid ":math:`node_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:95
+#: ../../build/doc/components-family.rst:160
+#: ../../build/doc/components-family.rst:229
+#: ../../build/doc/components-family.rst:296
+#: ../../build/doc/components-family.rst:356
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:97
+#: ../../build/doc/components-family.rst:162
+#: ../../build/doc/components-family.rst:231
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:298
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+#: ../../build/doc/components-family.rst:170
+#: ../../build/doc/components-family.rst:239
+#: ../../build/doc/components-family.rst:301
+#: ../../build/doc/components-family.rst:361
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:101
+msgid "The first component is composed of nodes ``0``, ``1`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:102
+msgid "The second component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+msgid "The third component is composed of nodes ``2`` and ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:111
+msgid "Strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:112
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:115
+msgid "**Notice**: This problem defines on a directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:120
+msgid "pgr_strongComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:131
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:135
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:139
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:157
+#: ../../build/doc/components-family.rst:226
+msgid ":math:`component_i = \\min {node_j | node_j \\in component_i}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:166
+msgid "The first component is composed of nodes ``1``, ``2`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:167
+msgid "The second component is composed of node ``0``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:168
+msgid "The third component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:169
+msgid "The fourth component is composed of node ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:170
+msgid "The fifth component is composed of node ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:177
+msgid "Biconnected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:178
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:188
+msgid "pgr_biconnectedComponents(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:228
+msgid ":math:`edge_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:358
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:235
+msgid ""
+"The first component is composed of edges ``1 - 2``, ``0 - 1`` and ``0 - 2``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:236
+msgid ""
+"The second component is composed of edges ``2 - 4``, ``2 - 3`` and ``3 - "
+"4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:237
+msgid "The third component is composed of edge ``5 - 6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:238
+msgid "The fourth component is composed of edge ``6 - 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:239
+msgid ""
+"The fifth component is composed of edges ``8 - 9``, ``9 - 10`` and ``8 - "
+"10``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:246
+msgid "Articulation Points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:247
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:257
+msgid "pgr_articulationPoints(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:292
+msgid ":math:`\\boldsymbol{\\pi} = \\{node_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:295
+msgid ":math:`node_i` is an articulation point."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:301
+msgid "Articulation points are nodes ``2`` and ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:308
+msgid "Bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:309
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:317
+msgid "pgr_bridges(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:352
+msgid ":math:`\\boldsymbol{\\pi} = \\{edge_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:355
+msgid ":math:`edge_i` is an edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:361
+msgid "Bridges are edges ``5 <--> 6`` and ``6 <--> 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:370
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:372
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:378
+#: ../../build/doc/components-family.rst:379
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+#: ../../build/doc/components-family.rst:384
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:382
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:386
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:390
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:392
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:393
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:402
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:405
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:416
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:418
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:444
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:443
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:443
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:461
+#: ../../build/doc/components-family.rst:477
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:435
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:437
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:443
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:453
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:455
+#: ../../build/doc/components-family.rst:471
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:469
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:483
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:486
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:487
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:488
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/contraction-family.po b/locale/de/LC_MESSAGES/contraction-family.po
new file mode 100644
index 0000000..182343c
--- /dev/null
+++ b/locale/de/LC_MESSAGES/contraction-family.po
@@ -0,0 +1,745 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/contraction-family.rst:14
+msgid "Contraction - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:21
+msgid ":ref:`pgr_contractGraph`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:29
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:31
+msgid ""
+"In big graphs, like the road graphs, or electric networks, graph contraction"
+" can be used to speed up some graph algorithms. Contraction reduces the size"
+" of the graph by removing some of the vertices and edges and, for example, "
+"might add edges that represent a sequence of original edges decreasing the "
+"total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:33
+msgid ""
+"This implementation gives a flexible framework for adding contraction "
+"algorithms in the future, currently, it supports two algorithms:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:35
+#: ../../build/doc/contraction-family.rst:46
+msgid "Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:36
+#: ../../build/doc/contraction-family.rst:166
+msgid "Linear contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:38
+msgid "Allowing the user to:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:40
+msgid "Forbid contraction on a set of nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:41
+msgid ""
+"Decide the order of the contraction algorithms and set the maximum number of"
+" times they are to be executed."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:43
+msgid "UNDER DISCUSSION: Forbid contraction on a set of edges"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:47
+msgid "In the algorithm, dead end contraction is represented by 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:50
+msgid "Dead end nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:52
+msgid ""
+"The definition of a dead end node is different for a directed and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:54
+msgid "In case of a undirected graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:56
+msgid "The number of adjacent vertices is 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:58
+msgid "In case of an directed graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:60
+msgid "There are no outgoing edges and has at least one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:61
+msgid "There is one incoming and one outgoing edge with the same identifier."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:64
+#: ../../build/doc/contraction-family.rst:178
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:65
+msgid "The green node ``B`` represents a dead end node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:66
+msgid "The node ``A`` is the only node connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:67
+#: ../../build/doc/contraction-family.rst:181
+msgid ""
+"Node ``A`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:68
+#: ../../build/doc/contraction-family.rst:183
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:86
+msgid "Operation: Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:88
+msgid ""
+"The dead end contraction will stop until there are no more dead end nodes. "
+"For example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:91
+#: ../../build/doc/contraction-family.rst:208
+msgid ""
+"Node ``A`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:92
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:93
+msgid "Node ``B`` is the only node connecting to ``C``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:94
+msgid "The green node ``C`` represents a `Dead End` node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:113
+msgid ""
+"After contracting ``C``, node ``B`` is now a `Dead End` node and is "
+"contracted:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:129
+msgid "Node ``B`` gets contracted"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:143
+msgid "Nodes ``B`` and ``C`` belong to node ``A``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:148
+msgid "Not Dead End nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:150
+msgid "In this graph ``B`` is not a `dead end` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:167
+msgid "In the algorithm, linear contraction is represented by 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:170
+msgid "Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:172
+msgid "A node is considered a linear node if satisfies the following:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:174
+msgid "The number of adjacent vertices are 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:175
+msgid "Should have at least one incoming edge and one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:179
+msgid "The green node ``B`` represents a linear node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:180
+msgid "The nodes ``A`` and ``C`` are the only nodes connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:182
+msgid ""
+"Node ``C`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:203
+msgid "Operation: Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:205
+msgid ""
+"The linear contraction will stop until there are no more linear nodes. For "
+"example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:209
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:210
+msgid ""
+"Node ``C`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:211
+msgid ""
+"Node ``D`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:212
+msgid "The green nodes ``B`` and ``C`` represents `Linear` nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:234
+msgid ""
+"After contracting ``B``, a new edge gets inserted between ``A`` and ``C`` "
+"which is represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:254
+msgid "Node ``C`` is `linear node` and gets contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:272
+msgid ""
+"Nodes ``B`` and ``C`` belong to edge connecting ``A`` and ``D`` which is "
+"represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:275
+msgid "Not Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:277
+msgid "In this graph ``B`` is not a `linear` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:298
+msgid "The cycle"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:300
+msgid ""
+"Contracting a graph, can be done with more than one operation. The order of "
+"the operations affect the resulting contracted graph, after applying one "
+"operation, the set of vertices that can be contracted by another operation "
+"changes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:302
+msgid ""
+"This implementation, cycles ``max_cycles`` times through "
+"``operations_order`` ."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:315
+msgid "Contracting Sample Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:317
+msgid ""
+"In this section, building and using a contracted graph will be shown by "
+"example."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:319
+msgid "The :doc:`sampledata` for an undirected graph is used"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:320
+msgid "a dead end operation first followed by a linear operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:322
+msgid "The original graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:326
+msgid "After doing a dead end contraction operation:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:330
+msgid "Doing a linear contraction operation to the graph above"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:335
+msgid ""
+"There are five cases, in this documentation, which arise when calculating "
+"the shortest path between a given source and target. In this examples, "
+"``pgr_dijkstra`` is used."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:338
+msgid "**Case 1**: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:339
+msgid ""
+"**Case 2**: Source belongs to a contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:340
+msgid ""
+"**Case 3**: Source belongs to a vertex subgraph, while target belongs to an "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:341
+msgid ""
+"**Case 4**: Source belongs to a contracted graph, while target belongs to an"
+" vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:342
+msgid ""
+"**Case 5**: The path contains a new edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:345
+msgid "Construction of the graph in the database"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:348
+msgid "Original Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:349
+msgid ""
+"The following query shows the original data involved in the contraction "
+"operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:356
+msgid "Contraction Results"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:361
+msgid ""
+"The above results do not represent the contracted graph. They represent the "
+"changes done to the graph after applying the contraction algorithm. We can "
+"see that vertices like 6 and 11 do not appear in the contraction results "
+"because they were not affected by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:364
+msgid "step 1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:365
+msgid ""
+"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` "
+"tables:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "The vertices set belonging to the vertex/edge"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+#: ../../build/doc/contraction-family.rst:372
+msgid "**is_contracted**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+msgid ""
+"On a `vertex` table: when ``true`` the vertex is contracted, so is not part "
+"of the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:372
+msgid ""
+"On an `edge` table: when ``true`` the edge was generated by the contraction "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:375
+msgid "Using the following queries:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:382
+msgid "step 2"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:383
+msgid ""
+"For simplicity, in this documentation, store the results of the call to "
+"pgr_contractGraph in a temporary table"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:390
+msgid "step 3"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:391
+msgid ""
+"Update the `vertex` and `edge` tables using the results of the call to "
+"pgr_contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:393
+msgid ""
+"In `edge_table_vertices_pgr.is_contracted` indicate the vertices that are "
+"contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:399
+msgid ""
+"Add to `edge_table_vertices_pgr.contracted_vertices` the contracted "
+"vertices belonging to the vertices."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:405
+msgid "Insert the new edges generated by pgr_contractGraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:412
+msgid "step 3.1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:413
+msgid "Verify visually the updates."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:415
+msgid "On the `edge_table_vertices_pgr`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:421
+msgid "On the `edge_table`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:427
+msgid ""
+"vertices that belong to the contracted graph are the non contracted vertices"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:434
+msgid "case 1: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:435
+msgid ""
+"Inspecting the contracted graph above, vertex 3 and vertex 11 are part of "
+"the contracted graph. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:437
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:438
+#: ../../build/doc/contraction-family.rst:452
+#: ../../build/doc/contraction-family.rst:469
+#: ../../build/doc/contraction-family.rst:485
+#: ../../build/doc/contraction-family.rst:507
+msgid ""
+"when selecting the edges, only edges that have the source and the target in "
+"that set are the edges belonging to the contracted graph, that is done in "
+"the WHERE clause."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:440
+msgid ""
+"Visually, looking at the original graph, going from 3 to 11: 3 -> 6 -> 11, "
+"and in the contracted graph, it is also 3 -> 6 -> 11. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:448
+msgid ""
+"case 2: Source belongs to the contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:452
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 1 belongs to the contracted subgraph of edge 19. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:450
+msgid ""
+"expand1 holds the contracted vertices of the edge where vertex 1 belongs. "
+"(belongs to edge 19)."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:451
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"also the contracted vertices of edge 19."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:454
+msgid ""
+"Visually, looking at the original graph, going from 3 to 1: 3 -> 2 -> 1, and"
+" in the contracted graph, it is also 3 -> 2 -> 1. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:463
+msgid ""
+"case 3: Source belongs to a vertex subgraph, while target belongs to an edge"
+" subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:464
+msgid ""
+"Inspecting the contracted graph above, vertex 7 belongs to the contracted "
+"subgraph of vertex 5 and vertex 13 belongs to the contracted subgraph of "
+"edge 21. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:466
+#: ../../build/doc/contraction-family.rst:483
+msgid ""
+"expand7 holds the contracted vertices of vertex where vertex 7 belongs. "
+"(belongs to vertex 5)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:467
+msgid ""
+"expand13 holds the contracted vertices of edge where vertex 13 belongs. "
+"(belongs to edge 21)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:468
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"contracted vertices of vertex 5 and contracted vertices of edge 21."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:471
+msgid ""
+"Visually, looking at the original graph, going from 7 to 13: 7 -> 8 -> 5 -> "
+"10 -> 13, and in the contracted graph, it is also 7 -> 8 -> 5 -> 10 -> 13. "
+"The results, on the contracted graph match the results as if it was done on "
+"the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:480
+msgid ""
+"case 4: Source belongs to the contracted graph, while target belongs to an "
+"vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:481
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 7 belongs to the contracted subgraph of vertex 5. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:484
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"the contracted vertices of vertex 5."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:487
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, but in the contracted graph, it is 3 -> 5 -> 8 -> 7. The results, on "
+"the contracted graph do not match the results as if it was done on the "
+"original graph. This is because the path contains edge 19 which is added by "
+"the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:495
+msgid "case 5: The path contains an edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:496
+msgid ""
+"In the previous example we can see that the path from vertex 3 to vertex 7 "
+"contains an edge which is added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:502
+msgid ""
+"Inspecting the contracted graph above, edge 19 should be expanded. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:504
+msgid "first_dijkstra holds the results of the dijkstra query."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:505
+msgid ""
+"edges_to_expand holds the edges added by the contraction algorithm and "
+"included in the path."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:506
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"vertices of the contracted solution and the contracted vertices of the edges"
+" added by the contraction algorithm and included in the contracted solution."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:509
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, and in the contracted graph, it is also 3 -> 2 -> 5 -> 8 -> 7. The "
+"results, on the contracted graph match the results as if it was done on the "
+"original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:517
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:519
+msgid ""
+"http://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:520
+msgid "http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:521
+msgid ""
+"The queries use :ref:`pgr_contractGraph` function and the :doc:`sampledata` "
+"network."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:524
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:525
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:526
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/cost-category.po b/locale/de/LC_MESSAGES/cost-category.po
new file mode 100644
index 0000000..efea606
--- /dev/null
+++ b/locale/de/LC_MESSAGES/cost-category.po
@@ -0,0 +1,178 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost-category.rst:13
+msgid "Cost - Category"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:17
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:18
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:20
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:21
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:34
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:36
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:38
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:39
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:40
+msgid ""
+"Returns the sum of the costs of the resulting path(s) for pair combination "
+"of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:44
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:46
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:48
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:50
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:52
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:54
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:56
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:58
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:60
+msgid "Any duplicated value in the `start_vids` or in `end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:62
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:64
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:65
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/costMatrix-category.po b/locale/de/LC_MESSAGES/costMatrix-category.po
new file mode 100644
index 0000000..ad36b5e
--- /dev/null
+++ b/locale/de/LC_MESSAGES/costMatrix-category.po
@@ -0,0 +1,237 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/costMatrix-category.rst:13
+msgid "Cost Matrix - Category"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:17
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:18
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:20
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:21
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:40
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:43
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:45
+msgid ""
+":ref:`tsp` needs as input a symmetric cost matrix and no edge `(u, v)` must "
+"value :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:47
+msgid ""
+"This collection of functions will return a cost matrix in form of a table."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:53
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:55
+msgid "Can be used as input to :ref:`pgr_tsp`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:57
+msgid ""
+"when the resulting matrix is symmetric and there is no :math:`\\infty` "
+"value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:58
+msgid "It will be the users responsibility to make the matrix symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:60
+msgid "By using geometric or harmonic average of the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:61
+msgid "By using max or min the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:62
+msgid ""
+"By setting the upper triangle to be the mirror image of the lower triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:63
+msgid ""
+"By setting the lower triangle to be the mirror image of the upper triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:65
+msgid "It is also the users responsibility to fix an :math:`\\infty` value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:67
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:68
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:69
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:70
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:71
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:73
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:75
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:77
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:79
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:81
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:83
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:85
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:87
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:89
+msgid "Any duplicated value in the `start_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:91
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:93
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:94
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:96
+msgid "Running time: approximately :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:101
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:103
+msgid ":ref:`pgr_tsp`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/cost_result.po b/locale/de/LC_MESSAGES/cost_result.po
new file mode 100644
index 0000000..cfc1232
--- /dev/null
+++ b/locale/de/LC_MESSAGES/cost_result.po
@@ -0,0 +1,92 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost_result.rst:13
+msgid "pgr_costResult[]"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:19 ../../build/doc/cost_result.rst:52
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:21
+msgid ""
+"``pgr_costResult[]`` — A set of records to describe a path result with cost "
+"attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:25 ../../build/doc/cost_result.rst:58
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:37 ../../build/doc/cost_result.rst:71
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:38 ../../build/doc/cost_result.rst:73
+msgid "generic name, to be specified by the function, typically the node id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:39 ../../build/doc/cost_result.rst:74
+msgid "generic name, to be specified by the function, typically the edge id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:40 ../../build/doc/cost_result.rst:75
+msgid "cost attribute"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:46
+msgid "pgr_costResult3[] - Multiple Path Results with Cost"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:54
+msgid ""
+"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
+" attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:72
+msgid "generic name, to be specified by the function, typically the path id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:79
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:80
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:81
+msgid "Replaces ``path_result``"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:87
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/dijkstra-family.po b/locale/de/LC_MESSAGES/dijkstra-family.po
new file mode 100644
index 0000000..a9fa495
--- /dev/null
+++ b/locale/de/LC_MESSAGES/dijkstra-family.po
@@ -0,0 +1,262 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/dijkstra-family.rst:13
+msgid "Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:17
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:18
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:19
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:20
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:21
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:22
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:39
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:42
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:45
+msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:47
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:49
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:51
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:52
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:54
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:57
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:58
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:60
+#: ../../build/doc/dijkstra-family.rst:79
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:62
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:64
+#: ../../build/doc/dijkstra-family.rst:84
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:66
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = \\varnothing \\\\"
+" \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } \\{(source_i, "
+"target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup"
+" \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } "
+"reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:76
+msgid "Undirected graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:77
+msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:81
+msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:86
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, "
+"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } "
+"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ "
+"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & "
+"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost "
+">=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) "
+"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup "
+"\\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:99
+msgid "The problem"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:100
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:102
+msgid ":math:`start_{vid} \\in V` a starting vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:103
+msgid ":math:`end_{vid} \\in V` an ending vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:104
+msgid ""
+":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = "
+"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:109
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:118
+msgid ""
+":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, "
+"agg\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:131
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:121
+msgid ":math:`path\\_seq_i = i`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:122
+msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:123
+msgid ":math:`node_i \\in V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:124
+msgid ":math:`node_1 = start_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:125
+msgid ":math:`node_{| \\pi |} = end_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:126
+msgid ":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:127
+msgid ""
+":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad "
+"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | "
+"\\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:128
+msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:129
+msgid ""
+":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 "
+"\\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad "
+"\\text{when } i \\neq 1 \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:137
+msgid ""
+"In other words: The algorithm returns a the shortest path between "
+":math:`start_{vid}` and :math:`end_{vid}` , if it exists, in terms of a "
+"sequence of nodes and of edges,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:134
+msgid ""
+":math:`path\\_seq` indicates the relative position in the path of the "
+":math:`node` or :math:`edge`."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:135
+msgid ""
+":math:`cost` is the cost of the edge to be used to go to the next node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:136
+msgid ""
+":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:139
+msgid "If there is no path, the resulting set is empty."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:143
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:146
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:147
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:148
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/drivingDistance-category.po b/locale/de/LC_MESSAGES/drivingDistance-category.po
new file mode 100644
index 0000000..a71b4c7
--- /dev/null
+++ b/locale/de/LC_MESSAGES/drivingDistance-category.po
@@ -0,0 +1,52 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/drivingDistance-category.rst:14
+msgid "Driving Distance - Category"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:18
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:19
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:20
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:22
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:23
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:36
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:39
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:40
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:41
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/flow-family.po b/locale/de/LC_MESSAGES/flow-family.po
new file mode 100644
index 0000000..a000199
--- /dev/null
+++ b/locale/de/LC_MESSAGES/flow-family.po
@@ -0,0 +1,331 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Flow - Family of functions"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:19
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:23
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:24
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:45
+msgid "Flow Functions General Information"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:52
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:53
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:54
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:56
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:58
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:59
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:61
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:63
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:64
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:66
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:67
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:72
+msgid ""
+":ref:`pgr_maxFlow <pgr_maxFlow>` is the maximum Flow and that maximum is "
+"guaranteed to be the same on the functions :ref:`pgr_pushRelabel "
+"<pgr_pushRelabel>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`, "
+":ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, but the actual flow "
+"through each edge may vary."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:77
+msgid "Problem definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:79
+msgid ""
+"A flow network is a directed graph where each edge has a capacity and a "
+"flow. The flow through an edge must not exceed the capacity of the edge. "
+"Additionally, the incoming and outgoing flow of a node must be equal except "
+"the for source which only has outgoing flow, and the destination(sink) which"
+" only has incoming flow."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:83
+msgid ""
+"Maximum flow algorithms calculate the maximum flow through the graph and the"
+" flow of each edge."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:85
+msgid ""
+"The maximum flow through the graph is guaranteed to be the same with all "
+"implementations, but the actual flow through each edge may vary. Given the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:89
+msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:91
+msgid ""
+"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, "
+"reverse\\_capacity_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:94
+msgid "Graph definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:95
+msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:97
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:99
+msgid ""
+":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup "
+"target_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:101
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:103
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) "
+"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = "
+"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, "
+"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup "
+"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } "
+"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:111
+msgid "Maximum flow problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:112
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:115
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:116
+msgid ":math:`source\\_vertex \\in V` the source vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:117
+msgid ":math:`sink\\_vertex \\in V` the sink vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:119
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:121
+msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:123
+msgid ""
+":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, "
+"flow_i, residual\\_capacity_i)}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:125
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:127
+msgid ""
+":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their "
+"residual capacity and flow. The maximum flow through the graph can be "
+"obtained by aggregating on the source or sink and summing the flow from/to "
+"it. In particular:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:129
+msgid ":math:`id_i = i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:130
+msgid ":math:`edge\\_id = id_i` in edges_sql"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:131
+msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:135
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:137
+msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/geom_result.po b/locale/de/LC_MESSAGES/geom_result.po
new file mode 100644
index 0000000..e2d89a1
--- /dev/null
+++ b/locale/de/LC_MESSAGES/geom_result.po
@@ -0,0 +1,74 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/geom_result.rst:13
+msgid "pgr_geomResult[]"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:21
+msgid ""
+"``pgr_geomResult[]`` — A set of records to describe a path result with "
+"geometry attribute."
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:25
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:37
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:38 ../../build/doc/geom_result.rst:39
+msgid "generic name, to be specified by the function"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:40
+msgid "geometry attribute"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:44
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:45
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:46
+msgid "Replaces ``geoms``"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:50
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:52
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:56
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:57
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:58
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/index.po b/locale/de/LC_MESSAGES/index.po
new file mode 100644
index 0000000..44ac3e4
--- /dev/null
+++ b/locale/de/LC_MESSAGES/index.po
@@ -0,0 +1,306 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/index.rst:14
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/index.rst:16
+msgid ""
+"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
+"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
+"and other network analysis functionality."
+msgstr ""
+
+#: ../../build/doc/index.rst:18
+msgid "This is the manual for pgRouting |release|."
+msgstr ""
+
+#: ../../build/doc/index.rst:24
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
+"free to use this material any way you like, but we ask that you attribute "
+"credit to the pgRouting Project and wherever possible, a link back to "
+"http://pgrouting.org. For other licenses used in pgRouting see the "
+":ref:`license` page."
+msgstr ""
+
+#: ../../build/doc/index.rst:27
+msgid "General"
+msgstr ""
+
+#: ../../build/doc/index.rst:37
+msgid ":doc:`sampledata` that is used in the examples of this manual."
+msgstr ""
+
+#: ../../build/doc/index.rst:45
+msgid "Pgrouting Concepts"
+msgstr ""
+
+#: ../../build/doc/index.rst:54
+msgid "Reference"
+msgstr ""
+
+#: ../../build/doc/index.rst:55
+msgid ":ref:`pgr_version` - to get pgRouting's version information."
+msgstr ""
+
+#: ../../build/doc/index.rst:64
+msgid ":ref:`Data Types <data_types>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:67
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:68
+msgid ""
+":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
+" path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:69
+msgid ""
+":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:78
+msgid ":ref:`Topology Functions <topology_functions>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:80
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/index.rst:81
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/index.rst:82
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/index.rst:83
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/index.rst:84
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/index.rst:93
+msgid ":ref:`Routing functions <routing_functions>`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:4
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:6
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:7
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:9
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:11
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:13
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:16
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:22
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:32
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/index.rst:108
+msgid "Available Functions but not official pgRouting functions"
+msgstr ""
+
+#: ../../build/doc/index.rst:110
+msgid ":ref:`Stable`"
+msgstr ""
+
+#: ../../build/doc/index.rst:111
+msgid ":ref:`proposed`"
+msgstr ""
+
+#: ../../build/doc/index.rst:121
+msgid ":ref:`Change Log <change_log>`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:3
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:4
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:5
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:6
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:7
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:8
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:9
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:10
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:11
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:12
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:13
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:14
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:16
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:17
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/index.rst:135
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/index.rst:136
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/index.rst:137
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgRouting-concepts.po b/locale/de/LC_MESSAGES/pgRouting-concepts.po
new file mode 100644
index 0000000..34885ba
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgRouting-concepts.po
@@ -0,0 +1,1071 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "pgRouting Concepts"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:0
+msgid "Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "Getting Started"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid ""
+"This is a simple guide to walk you through the steps of getting started with"
+" pgRouting. In this guide we will cover:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:32
+msgid "Create a routing Database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:34
+msgid ""
+"The first thing we need to do is create a database and load pgrouting in the"
+" database. Typically you will create a database for each project. Once you "
+"have a database to work in, your can load your data and build your "
+"application in that database. This makes it easy to move your project later "
+"if you want to to say a production server."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:40
+msgid "For Postgresql 9.2 and later versions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:51
+msgid "Load Data"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:53
+msgid ""
+"How you load your data will depend in what form it comes it. There are "
+"various OpenSource tools that can help you, like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:56
+msgid ""
+"this is a tool for loading OSM data into postgresql with pgRouting "
+"requirements"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:57
+msgid "this is the postgresql shapefile loader"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:58
+msgid "this is a vector data conversion utility"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:59
+msgid "this is a tool for loading OSM data into postgresql"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:61
+msgid ""
+"So these tools and probably others will allow you to read vector data so "
+"that you may then load that data into your database as a table of some kind."
+" At this point you need to know a little about your data structure and "
+"content. One easy way to browse your new data table is with pgAdmin3 or "
+"phpPgAdmin."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:69
+msgid "Build a Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:71
+msgid ""
+"Next we need to build a topology for our street data. What this means is "
+"that for any given edge in your street data the ends of that edge will be "
+"connected to a unique node and to other edges that are also connected to "
+"that same unique node. Once all the edges are connected to nodes we have a "
+"graph that can be used for routing with pgrouting. We provide a tool that "
+"will help with this:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:77
+msgid "this step is not needed if data is loaded with `osm2pgrouting`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:83
+msgid ":ref:`pgr_create_topology`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:88
+msgid "Check the Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:90
+msgid ""
+"There are lots of possible sources for errors in a graph. The data that you "
+"started with may not have been designed with routing in mind. A graph has "
+"some very specific requirements. One is that it is *NODED*, this means that "
+"except for some very specific use cases, each road segment starts and ends "
+"at a node and that in general is does not cross another road segment that it"
+" should be connected to."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:97
+msgid ""
+"There can be other errors like the direction of a one-way street being "
+"entered in the wrong direction. We do not have tools to search for all "
+"possible errors but we have some basic tools that might help."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:109
+msgid ":ref:`pgr_analyze_graph`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:110
+msgid ":ref:`pgr_analyze_oneway`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:111
+msgid ":ref:`pgr_node_network`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:117
+msgid "Compute a Path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:119
+msgid ""
+"Once you have all the preparation work done above, computing a route is "
+"fairly easy. We have a lot of different algorithms that can work with your "
+"prepared road network. The general form of a route query is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:127
+msgid ""
+"As you can see this is fairly straight forward and you can look and the "
+"specific algorithms for the details of the signatures and how to use them. "
+"These results have information like edge id and/or the node id along with "
+"the cost or geometry for the step in the path from *start* to *end*. Using "
+"the ids you can join these result back to your edge table to get more "
+"information about each step in the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:134
+msgid ":ref:`pgr_dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:141
+msgid "Inner Queries"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:146
+msgid ""
+"There are several kinds of valid inner queries and also the columns returned"
+" are depending of the function. Which kind of inner query will depend on the"
+" function(s) requirements. To simplify variety of types, ``ANY-INTEGER`` and"
+" ``ANY-NUMERICAL`` is used."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:152
+#: ../../build/doc/pgRouting-concepts.rst:182
+#: ../../build/doc/pgRouting-concepts.rst:212
+#: ../../build/doc/pgRouting-concepts.rst:269
+#: ../../build/doc/pgRouting-concepts.rst:300
+#: ../../build/doc/pgRouting-concepts.rst:334
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:154
+#: ../../build/doc/pgRouting-concepts.rst:184
+#: ../../build/doc/pgRouting-concepts.rst:214
+#: ../../build/doc/pgRouting-concepts.rst:271
+#: ../../build/doc/pgRouting-concepts.rst:302
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:155
+#: ../../build/doc/pgRouting-concepts.rst:185
+#: ../../build/doc/pgRouting-concepts.rst:215
+#: ../../build/doc/pgRouting-concepts.rst:272
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:162
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:164
+#: ../../build/doc/pgRouting-concepts.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:247
+#: ../../build/doc/pgRouting-concepts.rst:282
+#: ../../build/doc/pgRouting-concepts.rst:314
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:287
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:290
+#: ../../build/doc/pgRouting-concepts.rst:294
+#: ../../build/doc/pgRouting-concepts.rst:319
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:263
+#: ../../build/doc/pgRouting-concepts.rst:264
+#: ../../build/doc/pgRouting-concepts.rst:265
+#: ../../build/doc/pgRouting-concepts.rst:266
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:174
+#: ../../build/doc/pgRouting-concepts.rst:204
+#: ../../build/doc/pgRouting-concepts.rst:257
+#: ../../build/doc/pgRouting-concepts.rst:292
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:178
+#: ../../build/doc/pgRouting-concepts.rst:208
+#: ../../build/doc/pgRouting-concepts.rst:261
+#: ../../build/doc/pgRouting-concepts.rst:296
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:193
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:224
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:227
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:232
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:234
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:236
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:245
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:280
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:312
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:321
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:322
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:328
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:329
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:330
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:336
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:337
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:345
+msgid "Return columns & values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:350
+msgid ""
+"There are several kinds of columns returned are depending of the function."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:355
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:357
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:363
+#: ../../build/doc/pgRouting-concepts.rst:364
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:367
+#: ../../build/doc/pgRouting-concepts.rst:368
+#: ../../build/doc/pgRouting-concepts.rst:385
+#: ../../build/doc/pgRouting-concepts.rst:386
+#: ../../build/doc/pgRouting-concepts.rst:403
+#: ../../build/doc/pgRouting-concepts.rst:404
+#: ../../build/doc/pgRouting-concepts.rst:405
+#: ../../build/doc/pgRouting-concepts.rst:406
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:378
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:380
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:397
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:415
+msgid "Advanced Topics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:423
+msgid "Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:427
+#: ../../build/doc/pgRouting-concepts.rst:528
+msgid "Overview"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:428
+msgid ""
+"Typically when GIS files are loaded into the data database for use with "
+"pgRouting they do not have topology information associated with them. To "
+"create a useful topology the data needs to be \"noded\". This means that "
+"where two or more roads form an intersection there it needs to be a node at "
+"the intersection and all the road segments need to be broken at the "
+"intersection, assuming that you can navigate from any of these segments to "
+"any other segment via that intersection."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:430
+msgid ""
+"You can use the :ref:`graph analysis functions <analytics>` to help you see "
+"where you might have topology problems in your data. If you need to node "
+"your data, we also have a function :ref:`pgr_nodeNetwork() "
+"<pgr_node_network>` that might work for you. This function splits ALL "
+"crossing segments and nodes them. There are some cases where this might NOT "
+"be the right thing to do."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:432
+msgid ""
+"For example, when you have an overpass and underpass intersection, you do "
+"not want these noded, but pgr_nodeNetwork does not know that is the case and"
+" will node them which is not good because then the router will be able to "
+"turn off the overpass onto the underpass like it was a flat 2D intersection."
+" To deal with this problem some data sets use z-levels at these types of "
+"intersections and other data might not node these intersection which would "
+"be ok."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:434
+msgid ""
+"For those cases where topology needs to be added the following functions may"
+" be useful. One way to prep the data for pgRouting is to add the following "
+"columns to your table and then populate them as appropriate. This example "
+"makes a lot of assumption like that you original data tables already has "
+"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
+"that they contain specific data values. This is only to give you an idea of "
+"what you can do with your data."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:455
+msgid ""
+"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
+"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
+"columns. The following example populated the remaining columns. In this "
+"example, the ``fcc`` column contains feature class code and the ``CASE`` "
+"statements converts it to an average speed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:518
+msgid ""
+"Now your database should be ready to use any (most?) of the pgRouting "
+"algorithms."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:524
+msgid "Graph Analytics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:529
+msgid ""
+"It is common to find problems with graphs that have not been constructed "
+"fully noded or in graphs with z-levels at intersection that have been "
+"entered incorrectly. An other problem is one way streets that have been "
+"entered in the wrong direction. We can not detect errors with respect to "
+"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
+"a graph and report them for additional inspections."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:531
+msgid ""
+"We do not current have any visualization tools for these problems, but I "
+"have used mapserver to render the graph and highlight potential problem "
+"areas. Someone familiar with graphviz might contribute tools for generating "
+"images with that."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:535
+msgid "Analyze a Graph"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:537
+msgid ""
+"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
+"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
+"table:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:560
+msgid "In the vertices table \"mytab_vertices_pgr\":"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:562
+msgid "Deadends are identified by ``cnt=1``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:563
+msgid "Potencial gap problems are identified with ``chk=1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:581
+msgid ""
+"For isolated road segments, for example, a segment where both ends are "
+"deadends. you can find these with the following query:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:590
+msgid ""
+"If you want to visualize these on a graphic image, then you can use "
+"something like mapserver to render the edges and the vertices and style "
+"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
+"tool like graphviz, or geoserver or other similar tools."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:594
+msgid "Analyze One Way Streets"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:596
+msgid ""
+":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
+" any flipped segments. Basically if you count the edges coming into a node "
+"and the edges exiting a node the number has to be greater than one."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:598
+msgid ""
+"This query will add two columns to the vertices_tmp table ``ein int`` and "
+"``eout int`` and populate it with the appropriate counts. After running this"
+" on a graph you can identify nodes with potential problems with the "
+"following query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:601
+msgid ""
+"The rules are defined as an array of text strings that if match the ``col`` "
+"value would be counted as true for the source or target in or out condition."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:605
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:607
+msgid ""
+"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
+"might have values like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:609
+msgid "'FT' - oneway from the source to the target node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:610
+msgid "'TF' - oneway from the target to the source node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:611
+msgid "'B' - two way street."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:612
+msgid "'' - empty field, assume twoway."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:613
+msgid "<NULL> - NULL field, use two_way_if_null flag."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:615
+msgid ""
+"Then we could form the following query to analyze the oneway streets for "
+"errors."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:634
+msgid ""
+"Typically these problems are generated by a break in the network, the one "
+"way direction set wrong, maybe an error related to z-levels or a network "
+"that is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:636
+msgid ""
+"The above tools do not detect all network issues, but they will identify "
+"some common problems. There are other problems that are hard to detect "
+"because they are more global in nature like multiple disconnected networks. "
+"Think of an island with a road network that is not connected to the mainland"
+" network because the bridge or ferry routes are missing."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:644
+msgid "Performance Tips"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:651
+msgid "For the Routing functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:653
+msgid ""
+"To get faster results bound your queries to the area of interest of routing "
+"to have, for example, no more than one million rows."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:655
+msgid ""
+"Use an inner query SQL that does not include some edges in the routing "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:663
+msgid "Integrating the inner query to the pgRouting function:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:677
+msgid "For the topology functions:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:679
+msgid ""
+"When \"you know\" that you are going to remove a set of edges from the edges"
+" table, and without those edges you are going to use a routing function you "
+"can do the following:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:681
+msgid "Analize the new topology based on the actual topology:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:687
+msgid "Or create a new topology if the change is permanent:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:698
+msgid "How to contribute"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:701
+msgid "Wiki"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:702
+msgid ""
+"Edit an existing `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_ page."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:703
+msgid "Or create a new Wiki page"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:705
+msgid ""
+"Create a page on the `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:706
+msgid "Give the title an appropriate name"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:709
+msgid ""
+"`Example <https://github.com/pgRouting/pgrouting/wiki/How-to:-Handle-"
+"parallel-edges-(KSP)>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:713
+msgid "Adding Functionaity to pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:714
+msgid ""
+"Consult the `developer's documentation "
+"<http://docs.pgrouting.org/doxy/2.4/index.html>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:719
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:720
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:721
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgRouting-installation.po b/locale/de/LC_MESSAGES/pgRouting-installation.po
new file mode 100644
index 0000000..71b7f5f
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgRouting-installation.po
@@ -0,0 +1,418 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-installation.rst:13
+msgid "Installation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:16
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:17
+msgid ":ref:`install-short`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:18
+msgid ":ref:`install_get_sources`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:19
+msgid ":ref:`install_enable_db`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:20
+msgid ":ref:`install_dependencies`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:21
+msgid ":ref:`install_configuring`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:22
+msgid ":ref:`install_build`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:23
+msgid ":ref:`install_testing`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:25
+msgid ""
+"Instructions for downloading and installing binaries for different Operative"
+" systems instructions and additional notes and corrections not included in "
+"this documentation can be found in `Installation wiki "
+"<https://github.com/pgRouting/pgrouting/wiki/Notes-on-Download%2C-"
+"Installation-and-building-pgRouting>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:27
+msgid ""
+"To use pgRouting postGIS needs to be installed, please read the information "
+"about installation in this `Install Guide "
+"<http://www.postgis.us/presentations/postgis_install_guide_22.html>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:32
+msgid "Short Version"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:37
+msgid "Extracting the tar ball"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:44
+msgid "To compile assuming you have all the dependencies in your search path:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:54
+msgid ""
+"Once pgRouting is installed, it needs to be enabled in each individual "
+"database you want to use it in."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:66
+msgid "Get the sources"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:69
+msgid ""
+"The pgRouting latest release can be found in "
+"https://github.com/pgRouting/pgrouting/releases/latest"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:72
+msgid "wget"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:73
+msgid "To download this release:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:81
+msgid "Goto :ref:`install-short` to the extract and compile instructions."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:84
+msgid "git"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:85
+msgid "To download the repository"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:93
+msgid ""
+"Goto :ref:`install-short` to the compile instructions (there is no tar "
+"ball)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:100
+msgid "Enabling and upgrading in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:103
+msgid "Enabling the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:104
+msgid ""
+"pgRouting is an extension and depends on postGIS. Enabling postGIS before "
+"enabling pgRouting in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:113
+msgid "Upgrading the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:114
+msgid ""
+"To upgrade pgRouting in the database to version 2.4.0 use the following "
+"command:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:122
+msgid ""
+"More information can be found in "
+"https://www.postgresql.org/docs/current/static/sql-createextension.html"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:128
+msgid "Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:131
+msgid "Compilation Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:132
+msgid ""
+"To be able to compile pgRouting, make sure that the following dependencies "
+"are met:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:134
+msgid "C and C++0x compilers * g++ version >= 4.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:136
+msgid "Postgresql version >= 9.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:137
+msgid "PostGIS version >= 2.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:138
+msgid "The Boost Graph Library (BGL). Version >= 1.46"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:139
+msgid "CMake >= 2.8.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:140
+msgid "CGAL >= 4.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:144
+msgid "optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:145
+msgid "For user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:147
+msgid "Sphinx >= 1.1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:148
+msgid "Latex"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:150
+msgid "For developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:152
+msgid "Doxygen >= 1.7"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:154
+msgid "For testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:156
+msgid "pgtap"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:157
+msgid "pg_prove"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:161
+msgid "Example: Installing dependencies on linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:162
+msgid "Installing the compilation dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:174
+msgid "Installing the optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:188
+msgid "Configuring"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:190
+msgid "pgRouting uses the `cmake` system to do the configuration."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:192
+msgid "The build directory is different from the source directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:194
+msgid "Create the build directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:201
+msgid "Configurable variables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:205
+msgid "To see the variables that can be configured"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:213
+msgid "Configuring The Documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:214
+msgid ""
+"Most of the effort of the documentation has being on the HTML files. Some "
+"variables for the documentation:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Variable"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Comment"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "WITH_DOC"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+#: ../../build/doc/pgRouting-installation.rst:223
+#: ../../build/doc/pgRouting-installation.rst:224
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "BOOL=OFF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "Turn on/off building the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "BUILD_HTML"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BOOL=ON"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "If ON, turn on/off building HTML for user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BUILD_DOXY"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "If ON, turn on/off building HTML for developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "BUILD_LATEX"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "If ON, turn on/off building PDF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "BUILD_MAN"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "If ON, turn on/off building MAN pages"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "DOC_USE_BOOTSTRAP"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:228
+msgid "Configuring with documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:234
+msgid "Most of the effort of the documentation has being on the html files."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:240
+msgid "Building"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:242
+msgid "Using ``make`` to build the code and the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:244
+msgid "The following instructions start from *path/to/pgrouting/build*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:253
+msgid ""
+"We have tested on several platforms, For installing or reinstalling all the "
+"steps are needed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:255
+msgid "The sql signatures are configured and build in the ``cmake`` command."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:258
+msgid "MinGW on Windows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:269
+msgid "Linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:270
+msgid "The following instructions start from *path/to/pgrouting*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:280
+msgid "When the configuration changes:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:286
+msgid "and start the build process as mentioned above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:291
+msgid "Testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:293
+msgid "Currently there is no :code:`make test` and testing is done as follows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:295
+msgid "The following instructions start from *path/to/pgrouting/*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:305
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:308
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:309
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:310
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgRouting-introduction.po b/locale/de/LC_MESSAGES/pgRouting-introduction.po
new file mode 100644
index 0000000..2f5927b
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgRouting-introduction.po
@@ -0,0 +1,222 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-introduction.rst:13
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:15
+msgid ""
+"pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL"
+" <http://postgresql.org>`_ geospatial database and adds routing and other "
+"network analysis functionality. A predecessor of pgRouting – pgDijkstra, "
+"written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was "
+"later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to "
+"pgRouting. The project is now supported and maintained by `Georepublic "
+"<http://georepublic.info>`_, `iMaptools <http://imaptools.com/>`__ and a "
+"broad user community."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:17
+msgid ""
+"pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ "
+"project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo"
+" Live <http://live.osgeo.org/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:23
+msgid "License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:25
+msgid "The following licenses can be found in pgRouting:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:30
+msgid "**License**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:32
+msgid "GNU General Public License, version 2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:33
+msgid ""
+"Most features of pgRouting are available under `GNU General Public License, "
+"version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:34
+msgid "Boost Software License - Version 1.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:35
+msgid ""
+"Some Boost extensions are available under `Boost Software License - Version "
+"1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:36
+msgid "MIT-X License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:37
+msgid ""
+"Some code contributed by iMaptools.com is available under MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:38
+msgid "Creative Commons Attribution-Share Alike 3.0 License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:39
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:41
+msgid ""
+"In general license information should be included in the header of each "
+"source file."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:45
+msgid "Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:48
+msgid "This Release Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:51
+#: ../../build/doc/pgRouting-introduction.rst:71
+msgid "Individuals (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:53
+msgid "Maoguang Wang, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:55
+msgid ""
+"And all the people that give us a little of their time making comments, "
+"finding issues, making pull requests etc."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:58
+#: ../../build/doc/pgRouting-introduction.rst:76
+msgid "Corporate Sponsors (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:60
+#: ../../build/doc/pgRouting-introduction.rst:78
+msgid ""
+"These are corporate entities that have contributed developer time, hosting, "
+"or direct monetary funding to the pgRouting project:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:62
+msgid "`Georepublic <https://georepublic.info/en/>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:63
+msgid ""
+"`Google Summer of Code <https://developers.google.com/open-source/gsoc/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:64
+msgid "`iMaptools <http://imaptools.com>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:65
+msgid "`Paragon Corporation <http://www.paragoncorporation.com/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:68
+msgid "Contributors Past & Present:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:73
+msgid ""
+"Akio Takubo, Andrea Nardelli, Anton Patrushev, Ashraf Hossain, Christian "
+"Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki,"
+" Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, "
+"Kai Behncke, Kishore Kumar, Ko Nagase, Manikata Kondeti, Mario Basa, Martin "
+"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Zia, Mukul Priya, Razequl"
+" Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Stephen Woodbridge, "
+"Sylvain Housseman, Sylvain Pasche, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:80
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:81
+msgid "CSIS (University of Tokyo)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:82
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:83
+msgid "Google Summer of Code"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:84
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:85
+msgid "Orkney"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:86
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:90
+msgid "More Information"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:92
+msgid ""
+"The latest software, documentation and news items are available at the "
+"pgRouting web site http://pgrouting.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:93
+msgid ""
+"PostgreSQL database server at the PostgreSQL main site "
+"http://www.postgresql.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:94
+msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:95
+msgid "Boost C++ source libraries at http://www.boost.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:96
+msgid ""
+"Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:97
+msgid ""
+"The Migration guide can be found at "
+"https://github.com/pgRouting/pgrouting/wiki/Migration-Guide."
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_KSP.po b/locale/de/LC_MESSAGES/pgr_KSP.po
new file mode 100644
index 0000000..2ace271
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_KSP.po
@@ -0,0 +1,402 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_KSP.rst:13
+msgid "pgr_KSP"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:18
+msgid "``pgr_KSP`` — Returns the \"K\" shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:28
+msgid "Signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:34
+msgid ""
+"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
+" number of shortest paths desired."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:52
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:64
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:73
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14 ../../build/doc/pgr_KSP.rst:110
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:80
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86 ../../build/doc/pgr_KSP.rst:87
+#: ../../build/doc/pgr_KSP.rst:107 ../../build/doc/pgr_KSP.rst:108
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "**k**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88 ../../build/doc/pgr_KSP.rst:105
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "The desiered number of paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89 ../../build/doc/pgr_KSP.rst:90
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid ""
+"(optional). When ``true`` returns all the paths stored in the process heap. "
+"Default is ``false`` which only returns ``k`` paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:93
+msgid ""
+"Roughly, if the shortest path has ``N`` edges, the heap will contain about "
+"than ``N * k`` paths for small value of ``k`` and ``k > 1``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:98
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:100
+msgid ""
+"Returns set of ``(seq, path_seq, path_id, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid ""
+"Relative position in the path of ``node`` and ``edge``. Has value **1** for "
+"the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid ""
+"Path identifier. The ordering of the paths For two paths i, j if i < j then "
+"agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "Identifier of the node in the path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110 ../../build/doc/pgr_KSP.rst:111
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:115
+msgid ""
+"During the transition to 3.0, because pgr_ksp version 2.0 doesn't have "
+"defined a directed flag nor a heap_path flag, when pgr_ksp is used with only"
+" one flag version 2.0 signature will be used."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:119
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:122
+msgid "Examples to handle the one flag to choose signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:124 ../../build/doc/pgr_KSP.rst:134
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:132
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:143
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:145
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:153
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:155
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:164
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:166
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:173
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:175
+msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:176
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:179
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:180
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:181
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_TSP.po b/locale/de/LC_MESSAGES/pgr_TSP.po
new file mode 100644
index 0000000..a9fecef
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_TSP.po
@@ -0,0 +1,224 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_TSP.rst:13
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:18
+msgid "``pgr_TSP`` - Returns a route that visits all the nodes exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:21
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:22
+msgid "Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:26
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:28
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:30
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:32
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of matrix cell contents. The "
+"matrix information must be symmetrical."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:58
+msgid "Basic Use"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:67
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:96
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:103
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:106
+msgid "Description of the Matrix Cell SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111 ../../build/doc/pgr_TSP.rst:112
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "Cost for going from start_vid to end_vid"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:116
+msgid "Can be Used with:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:118
+msgid ":ref:`pgr_dijkstraCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:119
+msgid ":ref:`pgr_withPointsCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:120
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:121
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:123
+msgid "To generate a symmetric matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:125
+msgid "directed := false."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:127
+msgid ""
+"If using directed := true, the resulting non symmetric matrix must be "
+"converted to symmetric by fixing the non symmetric values according to your "
+"application needs."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:145
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:147
+msgid "Using with points of interest."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:149
+msgid "To generate a symmetric matrix:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:151
+msgid ""
+"the **side** information of pointsOfInterset is ignored by not including it "
+"in the query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:152
+msgid "and **directed := false**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:158
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:163
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:165
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:166
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:167
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:170
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:171
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:172
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_aStar.po b/locale/de/LC_MESSAGES/pgr_aStar.po
new file mode 100644
index 0000000..4e2ccb4
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_aStar.po
@@ -0,0 +1,642 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStar.rst:13
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:18
+msgid "``pgr_aStar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:27
+msgid "pgr_astar(one to one) 2.0.0, Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:28
+msgid "pgr_astar(other signatures) 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:33
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:35
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:37
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:38
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:40
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:46
+msgid "The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:50
+msgid "The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:52
+msgid "When (x,y) coordinates for the same vertex identifier differ:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:54
+msgid "A random selection of the vertex's (x,y) coordinates is used."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:56
+msgid "Running time: :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:84
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:92
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:99
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:112
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:118
+msgid "Undirected using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:130
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:138 ../../build/doc/pgr_aStar.rst:165
+#: ../../build/doc/pgr_aStar.rst:194
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139 ../../build/doc/pgr_aStar.rst:166
+#: ../../build/doc/pgr_aStar.rst:195
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:141
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:144
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:145
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:157
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:166
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:168
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:171
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:172 ../../build/doc/pgr_aStar.rst:201
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:186
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:195
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:197
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:200
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:203
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:217
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13 ../../build/doc/pgr_aStar.rst:234
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:228
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:231
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234 ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235 ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:238
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:239
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:243
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:244
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:245
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:246
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:247
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:248
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250 ../../build/doc/pgr_aStar.rst:251
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:260
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:262
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:263
+msgid ":doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:264
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:265
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:268
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:269
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:270
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_aStarCost.po b/locale/de/LC_MESSAGES/pgr_aStarCost.po
new file mode 100644
index 0000000..41e1637
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_aStarCost.po
@@ -0,0 +1,528 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCost.rst:13
+msgid "pgr_aStarCost -- proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:18
+msgid ""
+"``pgr_aStarCost`` — Returns the aggregate cost shortest path using "
+":ref:`astar` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:26
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:53
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:60
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:72
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:78
+msgid "Setting a Heuristic"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:90
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99
+msgid ""
+"This signature finds a path from one ``start_vid`` to each ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:98 ../../build/doc/pgr_aStarCost.rst:125
+#: ../../build/doc/pgr_aStarCost.rst:154
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99 ../../build/doc/pgr_aStarCost.rst:126
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:101
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:104
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:105
+msgid ""
+"The extra ``end_vid`` column in the result is used to distinguish to which "
+"path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:117
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:126
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:128
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:131
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:132
+msgid ""
+"The extra ``start_vid`` column in the result is used to distinguish to "
+"which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:146
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:157
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:160
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:161
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:163
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:177
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_aStarCost.rst:194 ../../build/doc/pgr_aStarCost.rst:195
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:188
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:191
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:198
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:199
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:203
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:204
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:205
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:206
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:207
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:208
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210 ../../build/doc/pgr_aStarCost.rst:211
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. See "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:224
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:226
+msgid ":ref:`astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:227
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:228
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:229
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:232
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:233
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:234
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_aStarCostMatrix.po b/locale/de/LC_MESSAGES/pgr_aStarCostMatrix.po
new file mode 100644
index 0000000..5193921
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_aStarCostMatrix.po
@@ -0,0 +1,457 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:13
+msgid "pgr_aStarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:18
+msgid ""
+"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:33
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:37
+msgid "Using aStar algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:40
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:57
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:68
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:88
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:90
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "**vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "Array of vertices_identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:115
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:116
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:120
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:121
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:122
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:123
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:124
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:125
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:150
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:152
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:153
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:154
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:155
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_alphaShape.po b/locale/de/LC_MESSAGES/pgr_alphaShape.po
new file mode 100644
index 0000000..851cd18
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_alphaShape.po
@@ -0,0 +1,169 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_alphaShape.rst:13
+msgid "pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:21
+msgid "``pgr_alphaShape`` — Core function for alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:27
+msgid ""
+"Returns a table with (x, y) rows that describe the vertices of an alpha "
+"shape."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:50
+msgid "Returns a vertex record for each row:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:52
+msgid "x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:53
+msgid "y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:55
+msgid ""
+"If a result includes multiple outer/inner rings, return those with separator"
+" row (x=NULL and y=NULL)."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:58
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:59
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:60
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:61
+msgid ""
+"Supported to return multiple outer/inner ring coordinates with separator row"
+" (x=NULL and y=NULL) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:64
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:65
+msgid ""
+"PgRouting's alpha shape implementation has no way to control the order of "
+"the output points, so the actual output might different for the same input "
+"data. The first query, has the output ordered, he second query shows an "
+"example usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:70
+msgid "Example: the (ordered) results"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:76
+msgid "Example: calculating the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:77
+msgid "Steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:79
+msgid "Calculates the alpha shape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:80
+msgid "the :code:`ORDER BY` clause is not used."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:81
+msgid "constructs a polygon"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:82
+msgid "and computes the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:90
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:93
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:95
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:96
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:99
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:100
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:101
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_analyzeGraph.po b/locale/de/LC_MESSAGES/pgr_analyzeGraph.po
new file mode 100644
index 0000000..22237a6
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_analyzeGraph.po
@@ -0,0 +1,361 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeGraph.rst:13
+msgid "pgr_analyzeGraph"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:19
+msgid "``pgr_analyzeGraph`` — Analyzes the network topology."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:25
+#: ../../build/doc/pgr_analyzeGraph.rst:61
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:27
+#: ../../build/doc/pgr_analyzeGraph.rst:63
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:28
+#: ../../build/doc/pgr_analyzeGraph.rst:69
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:43
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:44
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:46
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:47
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:50
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:51
+msgid "The analyze graph function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:53
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:54
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:55
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:56
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:57
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:58
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:59
+msgid ""
+"``text`` Condition to select a subset or rows. Default value is ``true``"
+" to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:65
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:66
+msgid ""
+"Fills completely the ``cnt`` and ``chk`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:67
+msgid ""
+"Returns the analysis of the section of the network defined by "
+"``rows_where``"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:71
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:72
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:73
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:74
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:75
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:79
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:80
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:82
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:84
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:86
+msgid "``integer`` Indicator that the vertex might have a problem."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:87
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:88
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:89
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:92
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:93
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:96
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:99
+msgid "The simplest way to use pgr_analyzeGraph is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:106
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:111
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order: 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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:130
+#: ../../build/doc/pgr_analyzeGraph.rst:208
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:131
+#: ../../build/doc/pgr_analyzeGraph.rst:209
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:141
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:148
+#: ../../build/doc/pgr_analyzeGraph.rst:223
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:149
+msgid ""
+"Selecting rows based on the id. Displays the analysis a the section of the "
+"network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:155
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:161
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:172
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:174
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:183
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:184
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:219
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:224
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:234
+msgid ""
+"Selecting the rows WHERE the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:246
+msgid ""
+"Selecting the rows WHERE the geometry is near the place='myhouse' of the "
+"table ``othertable``. (note the use of quote_literal)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:263
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:390
+msgid "The examples use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:394
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:396
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:397
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:398
+msgid ""
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
+"vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:399
+msgid ""
+":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
+"edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:402
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:403
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:404
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_analyzeOneWay.po b/locale/de/LC_MESSAGES/pgr_analyzeOneWay.po
new file mode 100644
index 0000000..627da76
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_analyzeOneWay.po
@@ -0,0 +1,290 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:13
+msgid "pgr_analyzeOneway"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:19
+msgid ""
+"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:25
+msgid ""
+"This function analyzes oneway streets in a graph and identifies any flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:42
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:44
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:46
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:49
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:50
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:52
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:53
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:56
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:57
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:58
+msgid "``text[]`` source node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:59
+msgid "``text[]`` source node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:60
+msgid "``text[]`` target node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:61
+msgid "``text[]`` target node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:62
+msgid ""
+"``text`` oneway column name name of the network table. Default value is "
+"``oneway``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:63
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:64
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:65
+msgid ""
+"``boolean`` flag to treat oneway NULL values as bi-directional. Default "
+"value is ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:67
+msgid ""
+"It is strongly recommended to use the named notation. See "
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
+":ref:`pgr_createTopology <pgr_create_topology>` for examples."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:70
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:72
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:74
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:75
+msgid ""
+"Fills completely the ``ein`` and ``eout`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:77
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:79
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:80
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:81
+msgid "The names of source , target or oneway are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:83
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:86
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:87
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:89
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:91
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:92
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:93
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:94
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:95
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:96
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:100
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:101
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:105
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:129
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:135
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:136
+msgid ":ref:`analytics` for an overview of the analysis of a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:137
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:138
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_articulationPoints.po b/locale/de/LC_MESSAGES/pgr_articulationPoints.po
new file mode 100644
index 0000000..225a3d6
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_articulationPoints.po
@@ -0,0 +1,316 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_articulationPoints.rst:13
+msgid "pgr_articulationPoints - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:16
+msgid ""
+"``pgr_articulationPoints`` - Return the articulation points of an undirected"
+" graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:32
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph. This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:62
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:93
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_bdAstar.po b/locale/de/LC_MESSAGES/pgr_bdAstar.po
new file mode 100644
index 0000000..fdfaa05
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_bdAstar.po
@@ -0,0 +1,669 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstar.rst:13
+msgid "pgr_bdAstar"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:18
+msgid "``pgr_bdAstar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:27
+msgid "pgr_bdAstar(one to one) 2.0.0, Signature change on 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:28
+msgid "pgr_bdAstar(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:54
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:56
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:57
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:61
+msgid "Avaliability"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:62
+msgid "pgr_bdAstar(one to one) 2.0, signature change on 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:63
+msgid "pgr_bdAstar(other signatures) 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:84
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:85
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:86
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:89
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:102
+msgid "pgr_bdAstar One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+" allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:109
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:110 ../../build/doc/pgr_bdAstar.rst:137
+#: ../../build/doc/pgr_bdAstar.rst:162 ../../build/doc/pgr_bdAstar.rst:186
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111 ../../build/doc/pgr_bdAstar.rst:138
+#: ../../build/doc/pgr_bdAstar.rst:163 ../../build/doc/pgr_bdAstar.rst:187
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:114
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:116
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:127
+msgid "pgr_bdAstar One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:139
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:135 ../../build/doc/pgr_bdAstar.rst:160
+#: ../../build/doc/pgr_bdAstar.rst:184
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:136 ../../build/doc/pgr_bdAstar.rst:161
+#: ../../build/doc/pgr_bdAstar.rst:185
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:141
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:152
+msgid "pgr_bdAstar Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:163
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:165
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:176
+msgid "pgr_bdAstar Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:187
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:189
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:196
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:213
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:215
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:216
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:217
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:218
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:221
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:222
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:223
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_bdAstarCost.po b/locale/de/LC_MESSAGES/pgr_bdAstarCost.po
new file mode 100644
index 0000000..9b72e10
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_bdAstarCost.po
@@ -0,0 +1,594 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCost.rst:13
+msgid "pgr_bdAstarCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:18
+msgid "``pgr_bdAstarCost`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:26
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:46
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:48
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAstarCost`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:49
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:56
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:64
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:72
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:73
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:74
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:77
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:90
+msgid "pgr_bdAstarCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:128
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:97
+#: ../../build/doc/pgr_bdAstarCost.rst:124
+#: ../../build/doc/pgr_bdAstarCost.rst:149
+#: ../../build/doc/pgr_bdAstarCost.rst:173
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:98
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:99
+#: ../../build/doc/pgr_bdAstarCost.rst:126
+#: ../../build/doc/pgr_bdAstarCost.rst:151
+#: ../../build/doc/pgr_bdAstarCost.rst:175
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:127
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:103
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:105
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:116
+msgid "pgr_bdAstarCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:125
+#: ../../build/doc/pgr_bdAstarCost.rst:150
+#: ../../build/doc/pgr_bdAstarCost.rst:174
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:130
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:141
+msgid "pgr_bdAstarCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:154
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:165
+msgid "pgr_bdAstarCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:178
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:185
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:204
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:205
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:206
+msgid ""
+"`Migration Guide <https://github.com/cvvergara/pgrouting/wiki/Migration-"
+"Guide#pgr_bdastar>`_"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:207
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:208
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:211
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:212
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:213
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_bdAstarCostMatrix.po b/locale/de/LC_MESSAGES/pgr_bdAstarCostMatrix.po
new file mode 100644
index 0000000..c8738fa
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_bdAstarCostMatrix.po
@@ -0,0 +1,536 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:13
+msgid "pgr_bdAstarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:18
+msgid ""
+"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdAstar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:68
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:64
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:65
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:66
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:67
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:70
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:82
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:95
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:91
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:92
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:93
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:94
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:97
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:99
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:107
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:135
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_bdDijkstra.po b/locale/de/LC_MESSAGES/pgr_bdDijkstra.po
new file mode 100644
index 0000000..b05e40f
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_bdDijkstra.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstra.rst:13
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:15
+msgid ""
+"``pgr_bdDijkstra`` — Returns the shortest path(s) using Bidirectional "
+"Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:23
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:24
+msgid "pgr_bdDijkstra(one to one) 2.0.0, Signature changed 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:25
+msgid "pgr_bdDijkstra(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:60
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:67
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:80
+msgid "pgr_bdDijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:87
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:89
+#: ../../build/doc/pgr_bdDijkstra.rst:112
+#: ../../build/doc/pgr_bdDijkstra.rst:141
+#: ../../build/doc/pgr_bdDijkstra.rst:170
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:90
+#: ../../build/doc/pgr_bdDijkstra.rst:113
+#: ../../build/doc/pgr_bdDijkstra.rst:142
+#: ../../build/doc/pgr_bdDijkstra.rst:171
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:103
+msgid "pgr_bdDijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:110
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:115
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:118
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:119
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:132
+msgid "pgr_bdDijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:139
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:144
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:147
+#: ../../build/doc/pgr_bdDijkstra.rst:176
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:148
+#: ../../build/doc/pgr_bdDijkstra.rst:177
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:161
+msgid "pgr_bdDijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:173
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:179
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:190
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:208
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:210
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:211
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:212
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:213
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_bdDijkstraCost.po b/locale/de/LC_MESSAGES/pgr_bdDijkstraCost.po
new file mode 100644
index 0000000..0516529
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_bdDijkstraCost.po
@@ -0,0 +1,470 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:13
+msgid "pgr_bdDijkstraCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:15
+msgid ""
+"``pgr_bdDijkstraCost`` — Returns the shortest path(s)'s cost using "
+"Bidirectional Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:23
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:30
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:52
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:59
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:72
+msgid "pgr_bdDijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:80
+#: ../../build/doc/pgr_bdDijkstraCost.rst:102
+#: ../../build/doc/pgr_bdDijkstraCost.rst:130
+#: ../../build/doc/pgr_bdDijkstraCost.rst:158
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:94
+msgid "pgr_bdDijkstraCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:105
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:108
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:109
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:122
+msgid "pgr_bdDijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:133
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:136
+#: ../../build/doc/pgr_bdDijkstraCost.rst:164
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:137
+#: ../../build/doc/pgr_bdDijkstraCost.rst:165
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:150
+msgid "pgr_bdDijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:161
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:167
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:178
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:195
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:197
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:198
+msgid ":ref:`pgr_bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:199
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:200
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:203
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:204
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:205
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po b/locale/de/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
new file mode 100644
index 0000000..0b0a2ae
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
@@ -0,0 +1,382 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:13
+msgid "pgr_bdDijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_bdDijkstraCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdDijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:66
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:86
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:88
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:122
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:124
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:132
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:134
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:135
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:136
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:137
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_biconnectedComponents.po b/locale/de/LC_MESSAGES/pgr_biconnectedComponents.po
new file mode 100644
index 0000000..f4db188
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_biconnectedComponents.po
@@ -0,0 +1,349 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:13
+msgid "pgr_biconnectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:15
+msgid ""
+"``pgr_biconnectedComponents`` — Return the biconnected components of an "
+"undirected graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:31
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:36
+msgid "This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:43
+msgid "Components are described by edges"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:45
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:47
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:48
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:50
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:65
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:78
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:94
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:96
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:97
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:100
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:101
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:102
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_boykovKolmogorov.po b/locale/de/LC_MESSAGES/pgr_boykovKolmogorov.po
new file mode 100644
index 0000000..84d76a4
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_boykovKolmogorov.po
@@ -0,0 +1,435 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:14
+msgid "pgr_boykovKolmogorov - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:20
+msgid ""
+"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that "
+"maximizes the flow from the sources to the targets using Boykov Kolmogorov "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowBoykovKolmogorov"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:42
+msgid "Running time: Polynomial"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:61
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:63
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:84
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:103
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:105
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:124
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:126
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:141
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:159
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:161
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_pushRelabel <pgr_pushRelabel>`, "
+":ref:`pgr_EdmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:162
+msgid "http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_bridges.po b/locale/de/LC_MESSAGES/pgr_bridges.po
new file mode 100644
index 0000000..a80bf4e
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_bridges.po
@@ -0,0 +1,310 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bridges.rst:13
+msgid "pgr_bridges - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:16
+msgid "``pgr_bridges`` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:31
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components. This implementation can only be used with an"
+" undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:40
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:42
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:44
+msgid "Running time: :math:`O(E * (V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:47
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:59
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:72
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:88
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:90
+msgid "http://en.wikipedia.org/wiki/Bridge_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:91
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:94
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:95
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:96
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_connectedComponents.po b/locale/de/LC_MESSAGES/pgr_connectedComponents.po
new file mode 100644
index 0000000..2474096
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_connectedComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_connectedComponents.rst:13
+msgid "pgr_connectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:16
+msgid ""
+"``pgr_connectedComponents`` — Return the connected components of an "
+"undirected graph using a DFS-based approach. In particular, the algorithm "
+"implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:32
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other. This implementation can only be used with an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:39
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:41
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:45
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:46
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:48
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:63
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:76
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:92
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:94
+msgid "http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:95
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:98
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:99
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:100
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_contractGraph.po b/locale/de/LC_MESSAGES/pgr_contractGraph.po
new file mode 100644
index 0000000..8d27664
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_contractGraph.po
@@ -0,0 +1,488 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_contractGraph.rst:13
+msgid "pgr_contractGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:15
+msgid ""
+"``pgr_contractGraph`` — Performs graph contraction and returns the "
+"contracted vertices and edges."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:23
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:32
+msgid ""
+"Contraction reduces the size of the graph by removing some of the vertices "
+"and edges and, for example, might add edges that represent a sequence of "
+"original edges decreasing the total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:52
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:38
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:40
+msgid "There are two types of contraction methods used namely,"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:42
+msgid "Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:43
+msgid "Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:45
+msgid "The values returned include the added edges and contracted vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:47
+msgid "The returned values are ordered as follows:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:49
+msgid "column `id` ascending when type = `v`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:50
+msgid "column `id` descending when type = `e`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:55
+msgid "Signature Summary:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:57
+msgid "The pgr_contractGraph function has the following signatures:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:74
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:80
+msgid "Making a dead end contraction and a linear contraction."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:87
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:93
+msgid ""
+"Making a dead end contraction and a linear contraction and vertex 2 is "
+"forbidden from contraction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_contractGraph.rst:136
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+msgid "**contraction_order**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "Ordered contraction operations."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "1 = Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:114
+msgid "2 = Linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "**forbidden_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid ""
+"(optional). Identifiers of vertices forbidden from contraction. Default is "
+"an empty array."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid "**max_cycles**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid ""
+"(optional). Number of times the contraction operations on "
+"`contraction_order` will be performed. Default is 1."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:118
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:123
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:125
+msgid ""
+"RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:127
+msgid "The function returns a single row. The columns of the row are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "**type**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "Type of the `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "'v' when `id` is an identifier of a vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:135
+msgid "'e' when `id` is an identifier of an edge."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:136
+#: ../../build/doc/pgr_contractGraph.rst:146
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:143
+msgid "Identifier of:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:137
+msgid "the vertex when `type = 'v'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:139
+msgid "The vertex belongs to the edge_table passed as a parameter."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:140
+msgid "the edge when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:142
+msgid "The `id` is a decreasing sequence starting from **-1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:144
+msgid "Representing a pseudo `id` as is not incorporated into the edge_table."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "Array of contracted vertex identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid ""
+"Identifier of the source vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid ""
+"Identifier of the target vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid ""
+"Weight of the edge (`source`, `target`). Valid values when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:152
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:154
+msgid "Only dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:160
+msgid "Only linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:168
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:169
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:170
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_createTopology.po b/locale/de/LC_MESSAGES/pgr_createTopology.po
new file mode 100644
index 0000000..44a282e
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_createTopology.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createTopology.rst:13
+msgid "pgr_createTopology"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:18
+msgid ""
+"``pgr_createTopology`` — Builds a network topology based on the geometry "
+"information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:24
+#: ../../build/doc/pgr_createTopology.rst:72
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:26
+msgid ""
+"``OK`` after the network topology has been built and the vertices table "
+"created."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:27
+msgid "``FAIL`` when the network topology was not built due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:42
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:45
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:46
+msgid "The topology creation function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:48
+msgid "``text`` Network table name. (may contain the schema name AS well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:49
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:50
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:52
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:53
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:54
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:56
+msgid "``boolean`` Clean any previous topology. Default value is ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:60
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:62
+msgid "The ``source`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:63
+msgid "The ``target`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:65
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:67
+msgid "``id``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:68
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:69
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:70
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:74
+msgid "``OK`` after the network topology has been built."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:76
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:77
+msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:78
+msgid ""
+"Fills the source and target columns of the edge table referencing the ``id``"
+" of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:81
+msgid "``FAIL`` when the network topology was not built due to an error:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:83
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:84
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:85
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:86
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:90
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:91
+msgid ""
+"The vertices table is a requirement of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:93
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:95
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:96
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:97
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:98
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:99
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:100
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:103
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:104
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:107
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:110
+msgid "The simplest way to use pgr_createTopology is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:118
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:119
+msgid "We get the same result AS the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``id`` of the table ``ege_table`` is passed to "
+"the function as the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``the_geom`` is passed to the function as the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:136
+#: ../../build/doc/pgr_createTopology.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:137
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:153
+#: ../../build/doc/pgr_createTopology.rst:219
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:154
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:160
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with ``id "
+"= 5``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:166
+#: ../../build/doc/pgr_createTopology.rst:227
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:176
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:178
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:185
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:186
+msgid ""
+"The arguments need to be given in the order described in the parameters."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:188
+msgid ""
+"Note that this example uses clean flag. So it recreates the whole vertices "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropiriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``gid`` of the table ``mytable`` is passed to "
+"the function AS the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``mygeom`` is passed to the function AS the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:206
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:220
+msgid "Based on id:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:235
+msgid "Examples with full output"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:237
+msgid ""
+"This example start a clean topology, with 5 edges, and then its incremented "
+"to the rest of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:243
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:247
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:249
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:250
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:251
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:254
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:255
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:256
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_createVerticesTable.po b/locale/de/LC_MESSAGES/pgr_createVerticesTable.po
new file mode 100644
index 0000000..191059e
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_createVerticesTable.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createVerticesTable.rst:13
+msgid "pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:18
+msgid ""
+"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:24
+#: ../../build/doc/pgr_createVerticesTable.rst:62
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:26
+#: ../../build/doc/pgr_createVerticesTable.rst:64
+msgid "``OK`` after the vertices table has been reconstructed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:27
+#: ../../build/doc/pgr_createVerticesTable.rst:69
+msgid ""
+"``FAIL`` when the vertices table was not reconstructed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:43
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:44
+msgid ""
+"The reconstruction of the vertices table function accepts the following "
+"parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:46
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:47
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:48
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:49
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:50
+msgid ""
+"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
+"to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:54
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:56
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:58
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:59
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:60
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:66
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:67
+msgid ""
+"Fills ``id`` and ``the_geom`` columns of the vertices table based on the "
+"source and target columns of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:71
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:72
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:73
+msgid "The names of source, target are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:74
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:77
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:78
+msgid ""
+"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:80
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:82
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:83
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:84
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:86
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:87
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:90
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:91
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:94
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:97
+msgid "The simplest way to use pgr_createVerticesTable is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:104
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:109
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:111
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:128
+#: ../../build/doc/pgr_createVerticesTable.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:129
+#: ../../build/doc/pgr_createVerticesTable.rst:206
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:139
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:146
+#: ../../build/doc/pgr_createVerticesTable.rst:220
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:147
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:153
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:159
+#: ../../build/doc/pgr_createVerticesTable.rst:243
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:170
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:172
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:180
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:181
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:0
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:216
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:221
+msgid "Selecting rows based on the gid."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:231
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``gid`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:282
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:286
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:288
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:289
+msgid ""
+":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
+"on the geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:290
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:291
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:294
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:295
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:296
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_dijkstra.po b/locale/de/LC_MESSAGES/pgr_dijkstra.po
new file mode 100644
index 0000000..45cbd10
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_dijkstra.po
@@ -0,0 +1,621 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid ""
+"``pgr_dijkstra`` — Returns the shortest path(s) using Dijkstra algorithm. In"
+" particular, the Dijkstra algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:24
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:25
+msgid "pgr_dijkstra(one to one) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:26
+msgid "pgr_dijkstra(other signatures) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:31
+msgid ""
+"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
+"in 1956. It is a graph search algorithm that solves the shortest path "
+"problem for a graph with non-negative edge path costs, producing a shortest "
+"path from a starting vertex (``start_vid``) to an ending vertex "
+"(``end_vid``). This implementation can be used with a directed graph and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:60
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:46
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:50
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:52
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:54
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:56
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:57
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:59
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:63
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:78
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:84
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:91
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:104
+msgid "pgr_dijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:113 ../../build/doc/pgr_dijkstra.rst:136
+#: ../../build/doc/pgr_dijkstra.rst:167 ../../build/doc/pgr_dijkstra.rst:197
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114 ../../build/doc/pgr_dijkstra.rst:137
+#: ../../build/doc/pgr_dijkstra.rst:168 ../../build/doc/pgr_dijkstra.rst:198
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:127
+msgid "pgr_dijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:137
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:139
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:142
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:143
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:158
+msgid "pgr_dijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:170
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:173 ../../build/doc/pgr_dijkstra.rst:203
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:174 ../../build/doc/pgr_dijkstra.rst:204
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:188
+msgid "pgr_dijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:198
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:200
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:206
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:215
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:225
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231 ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232 ../../build/doc/pgr_dijkstra.rst:234
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:236
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:248
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:250
+msgid ""
+"The examples of this section are based on the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:252
+msgid ""
+"The examples include combinations from starting vertices 2 and 11 to ending "
+"vertices 3 and 5 in a directed and undirected graph with and with out "
+"reverse_cost."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:256
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:258
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:267
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:269
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:277
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:279
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:287
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:289
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:297
+msgid "Equvalences between signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:299
+msgid ""
+"For queries marked as ``directed`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:301 ../../build/doc/pgr_dijkstra.rst:313
+msgid "The examples in this section use the following:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:303
+msgid ":ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:311
+msgid ""
+"For queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:315
+msgid ":ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:324
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:326
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:327
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:330
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:331
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:332
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_dijkstraCost.po b/locale/de/LC_MESSAGES/pgr_dijkstraCost.po
new file mode 100644
index 0000000..a9193fb
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_dijkstraCost.po
@@ -0,0 +1,473 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCost.rst:13
+msgid "pgr_dijkstraCost"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:19
+msgid "``pgr_dijkstraCost``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:21
+msgid ""
+"Using Dijkstra algorithm implemented by Boost.Graph, and extract only the "
+"aggregate cost of the shortest path(s) found, for the combination of "
+"vertices given."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:27
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:30
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:31
+msgid "pgr_dijkstraCost(all signatures) 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:33
+msgid ""
+"The ``pgr_dijkstraCost`` algorithm, is a good choice to calculate the sum of"
+" the costs of the shortest path for a subset of pairs of nodes of the graph."
+" We make use of the Boost's implementation of dijkstra which runs in "
+":math:`O(V \\log V + E)` time."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:42
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:43
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:44
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:45
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:47
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:51
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:55
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:57
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:60
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:62
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:64
+msgid "Any duplicated value in the `start_vids` or `end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:66
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:68
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:69
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:74
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:89
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:95
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:97
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:106
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:117
+msgid "pgr_dijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:121
+#: ../../build/doc/pgr_dijkstraCost.rst:150
+#: ../../build/doc/pgr_dijkstraCost.rst:176
+#: ../../build/doc/pgr_dijkstraCost.rst:201
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+#: ../../build/doc/pgr_dijkstraCost.rst:151
+#: ../../build/doc/pgr_dijkstraCost.rst:177
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:141
+msgid "pgr_dijkstraCost One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:152
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:167
+msgid "pgr_dijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:178
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:192
+msgid "pgr_dijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:213
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:229
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:231
+msgid "Demonstration of repeated values are ignored, and result is sorted."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:237
+msgid "Making `start_vids` the same as `end_vids`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:246
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:248
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:249
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:252
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:253
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:254
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_dijkstraCostMatrix.po b/locale/de/LC_MESSAGES/pgr_dijkstraCostMatrix.po
new file mode 100644
index 0000000..95cf121
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_dijkstraCostMatrix.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:13
+msgid "pgr_dijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_dijkstraCostMatrix`` - Calculates the a cost matrix using "
+"pgr_dijktras."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:32
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:36
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:56
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:67
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:79
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:87
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:89
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:97
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:135
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_dijkstraVia.po b/locale/de/LC_MESSAGES/pgr_dijkstraVia.po
new file mode 100644
index 0000000..0a3c5f1
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_dijkstraVia.po
@@ -0,0 +1,480 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraVia.rst:13
+msgid "pgr_dijkstraVia - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:19
+msgid ""
+"``pgr_dijkstraVia`` — Using dijkstra algorithm, it finds the route that goes"
+" through a list of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:30
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:34
+msgid ""
+"Given a list of vertices and a graph, this function is equivalent to finding"
+" the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all"
+" :math:`i < size\\_of(vertex_via)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:37
+msgid "The paths represents the sections of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:39
+msgid "This is a proposed function"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:42
+msgid "Signatrue Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:59
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:67
+msgid "Find the route that visits the vertices 1 3 9 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:77
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:86
+msgid ""
+"Find the route that visits the vertices 1 3 9 in that order on an "
+"undirected graph, avoiding U-turns when possible"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:94
+msgid "Description of the Signature"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+#: ../../build/doc/pgr_dijkstraVia.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "Array of vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid ""
+"(optional) ignores if a subsection of the route is missing and returns "
+"everything it found Default is true (is directed). When set to false the "
+"graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:119
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:121
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "Sequential value starting from 1."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "**path_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "Identifier of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "Sequential value starting from 1 for the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "Identifier of the node in the path from start_vid to end_vid."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid ""
+"Identifier of the edge used to go from node to the next node in the path "
+"sequence. -1 for the last node of the path. -2 for the last node of the "
+"route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the route "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "Total cost from ``start_vid`` to ``end_vid`` of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "**route_agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid ""
+"Total cost from ``start_vid`` of ``path_pid = 1`` to ``end_vid`` of the "
+"current ``path_pid`` ."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:142
+msgid "Find the route that visits the vertices 1 5 3 9 4 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:148
+msgid "What's the aggregate cost of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:154
+msgid ""
+"What's the route's aggregate cost of the route at the end of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:160
+msgid "How are the nodes visited in the route?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:166
+msgid ""
+"What are the aggregate costs of the route when the visited vertices are "
+"reached?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:172
+msgid ""
+"show the route's seq and aggregate cost and a status of \"passes in front\" "
+"or \"visits\" node 9"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:179
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:181
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:182
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:185
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:186
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:187
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_drivingDistance.po b/locale/de/LC_MESSAGES/pgr_drivingDistance.po
new file mode 100644
index 0000000..77f7b8e
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_drivingDistance.po
@@ -0,0 +1,391 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_drivingDistance.rst:13
+msgid "pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:19
+msgid ""
+"``pgr_drivingDistance`` - Returns the driving distance from a start node."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:28
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:29
+msgid "pgr_drivingDistance(single vertex) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:30
+msgid "pgr_drivingDistance(multiple vertices) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:35
+msgid ""
+"Using the Dijkstra algorithm, extracts all the nodes that have costs less "
+"than or equal to the value ``distance``. The edges extracted will conform to"
+" the corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:57
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:70
+msgid "Driving Distance From A Single Starting Vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:82
+msgid "Driving Distance From Multiple Starting Vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:90
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:98
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:123
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "Array of identifiers of the starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+#: ../../build/doc/pgr_drivingDistance.rst:125
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "Upper limit for the inclusion of the node in the result."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid ""
+"(optional). When ``true`` the node will only appear in the closest "
+"``start_vid`` list. Default is ``false`` which resembles several calls "
+"using the single starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:114
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:116
+msgid "Returns set of ``(seq [, start_v], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid ""
+"Identifier of the node in the path within the limits from ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid ""
+"Identifier of the edge used to arrive to ``node``. ``0`` when the ``node`` "
+"is the ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:132
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:135
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:137
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:144
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:146
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:154
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:156
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:165
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:167
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:177
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:178
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:179
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_edgeDisjointPaths.po b/locale/de/LC_MESSAGES/pgr_edgeDisjointPaths.po
new file mode 100644
index 0000000..54a0ffe
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_edgeDisjointPaths.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:14
+msgid "pgr_edgeDisjointPaths - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:19
+msgid ""
+"``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:28
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:36
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:38
+msgid ""
+"Calculates the edge disjoint paths between two groups of vertices. Utilizes "
+"underlying maximum flow algorithms to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:42
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "The main characterics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:45
+msgid "Calculates the edge disjoint paths between any two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:46
+msgid ""
+"Returns EMPTY SET when source and destination are the same, or cannot be "
+"reached."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:47
+msgid "The graph can be directed or undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:48
+msgid "One to many, many to one, many to many versions are also supported."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "Uses :ref:`pgr_boykovKolmogorov` to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:52
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:67
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:73
+msgid "Minimal use"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:81
+msgid ""
+"The minimal use is for a **directed** graph from one ``start_vid`` to one "
+"``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:93
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:98
+msgid ""
+"This signature finds the set of dijoint paths from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:96
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:120
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:149
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:175
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:97
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:121
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:150
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:176
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:117
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:126
+msgid ""
+"This signature finds the sset of disjoint paths from the ``start_vid`` to "
+"each one of the ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:122
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:151
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:177
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_edgeDisjointPaths`."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:123
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:146
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to the ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to each one of the ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:195
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:212
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:214
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:217
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:218
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:219
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_edmondsKarp.po b/locale/de/LC_MESSAGES/pgr_edmondsKarp.po
new file mode 100644
index 0000000..8523277
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_edmondsKarp.po
@@ -0,0 +1,438 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edmondsKarp.rst:14
+msgid "pgr_edmondsKarp - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:20
+msgid ""
+"``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowEdmondsKarp"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:42
+msgid "Running time: :math:`O( V * E ^ 2)`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:64
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:83
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:85
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:104
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:106
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:125
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:127
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:142
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:160
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:162
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_PushRelabel <pgr_pushRelabel>`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:163
+msgid "http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:164
+msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:167
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:168
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:169
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_eucledianTSP.po b/locale/de/LC_MESSAGES/pgr_eucledianTSP.po
new file mode 100644
index 0000000..5b9be5e
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_eucledianTSP.po
@@ -0,0 +1,187 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_eucledianTSP.rst:13
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:18
+msgid ""
+"``pgr_eucledianTSP`` - Returns a route that visits all the coordinates pairs"
+" exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:22
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:24
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:26
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:28
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:30
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of coordinates."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:33
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:48
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:54
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:63
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:75
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:90
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:99
+msgid "Description of the coordinates SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "Identifier of the coordinate. (optional)"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "X value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "Y value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:110
+msgid ""
+"When the value of **id** is not given then the coordinates will receive an "
+"**id** starting from 1, in the order given."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:125
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:127
+msgid "Skipping the Simulated Annealing & showing some process information"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:135
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:139
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:140
+msgid "New in version 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:145
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:147
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:148
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:149
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:152
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:153
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:154
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_floydWarshall.po b/locale/de/LC_MESSAGES/pgr_floydWarshall.po
new file mode 100644
index 0000000..4fe9ece
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_floydWarshall.po
@@ -0,0 +1,348 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_floydWarshall.rst:13
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:18
+msgid ""
+"``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path "
+"for each pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:31
+msgid ""
+"The Floyd-Warshall algorithm, also known as Floyd's algorithm, is a good "
+"choice to calculate the sum of the costs of the shortest path for each pair "
+"of nodes in the graph, for *dense graphs*. We make use of the Boost's "
+"implementation which runs in :math:`\\Theta(V^3)` time,"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:41
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:42
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:43
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:44
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:47
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:49
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:52
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:54
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:56
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "**Recommended, use a bounding box of no more than 3500 edges.**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:70
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:77
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:84
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:95
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:103
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:110
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:118
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:120
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:123
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:131
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:133
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:148
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:149
+msgid "Re-design of pgr_apspWarshall in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:152
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:154
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:155
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:156
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_gsoc_vrppdtw.po b/locale/de/LC_MESSAGES/pgr_gsoc_vrppdtw.po
new file mode 100644
index 0000000..7705842
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_gsoc_vrppdtw.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:13
+msgid "pgr_gsoc_vrppdtw - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:19
+msgid ""
+"``pgr_gsoc_vrppdtw`` — Returns a solution for `Pick and Delivery` with `time"
+" windows` Vehicle Routing Problem"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:27
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:36
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:43
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:52
+msgid "Example: Show the id1"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:59
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:62
+msgid "Description of the sql query"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "Identifier of the customer."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:69
+msgid "A value of ``0`` identifies the starting location"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "``X`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "``Y`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "**demand**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "How much is added / removed from the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:75
+msgid "Negative value is a delivery,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:76
+msgid "Positive value is a pickup,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "**openTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "The time relative to 0, when the customer opens."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "**closeTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "The time relative to 0, when the customer closes."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "**serviceTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "The duration of the loading / unloading."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid "**pIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid ""
+"Value used when the current customer is a Delivery to find the corresponding"
+" Pickup"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "**dIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid ""
+"Value used when the current customer is a Pickup to find the corresponding "
+"Delivery"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:86
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "**vehicle_num**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "Maximum number of vehicles in the result. (currently is ignored)"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "Capacity of the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:97
+msgid "Description of the result"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:99
+msgid "RETURNS SET OF pgr_costResult[]:"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "**id1**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "Current vehicle identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "**id2**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "Customer identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid ""
+"Previous ``cost`` plus `travel time` plus `wait time` plus `service time`."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:108
+msgid ""
+"when ``id2 = 0`` for the second time for the same ``id1``, then has the "
+"total time for the current ``id1``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:114
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:117
+msgid "Example: Total number of rows returned"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:123
+msgid "Example: Results for only id1 values: 1, 5, and 9"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:130
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:132
+msgid "The examples use :ref:`pickDeliverData`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:133
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:136
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:137
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:138
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_johnson.po b/locale/de/LC_MESSAGES/pgr_johnson.po
new file mode 100644
index 0000000..d0ef00b
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_johnson.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_johnson.rst:13
+msgid "pgr_johnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:18
+msgid ""
+"``pgr_johnson`` - Returns the sum of the costs of the shortest path for each"
+" pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspJohnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:31
+msgid ""
+"The Johnson algorithm, is a good choice to calculate the sum of the costs of"
+" the shortest path for each pair of nodes in the graph, for *sparse graphs*."
+" It usees the Boost's implementation which runs in :math:`O(V E \\log V)` "
+"time,"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:57
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:40
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:41
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:42
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:43
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:46
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:48
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:51
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:53
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:55
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:60
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:69
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:83
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:94
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:102
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:135
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:117
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:119
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:122
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:130
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:132
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137 ../../build/doc/pgr_johnson.rst:138
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:147
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:148
+msgid "Re-design of pgr_apspJohnson in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:153
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:154
+msgid ""
+"`Boost Johnson "
+"<http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html>`_ "
+"algorithm implementation."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:155
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_labelGraph.po b/locale/de/LC_MESSAGES/pgr_labelGraph.po
new file mode 100644
index 0000000..e5d6532
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_labelGraph.po
@@ -0,0 +1,233 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_labelGraph.rst:15
+msgid "pgr_labelGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:18
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:20
+msgid ""
+"``pgr_labelGraph`` — Locates and labels sub-networks within a network which "
+"are not topologically connected."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:30
+msgid ""
+"Must be run after ``pgr_createTopology()``. No use of ``geometry`` column. "
+"Only ``id``, ``source`` and ``target`` columns are required."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:32
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:34
+msgid ""
+"``OK`` when a column with provided name has been generated and populated "
+"successfully. All connected edges will have unique similar integer values. "
+"In case of ``rows_where`` condition, non participating rows will have -1 "
+"integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:35
+msgid ""
+"``FAIL`` when the processing cannot be finished due to some error. Notice "
+"will be thrown accordingly."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:36
+msgid ""
+"``rows_where condition generated 0 rows`` when passed SQL condition has not "
+"been fulfilled by any row."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:48
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:50
+msgid ""
+"A network behind any routing query may consist of sub-networks completely "
+"isolated from each other. Possible reasons could be:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:52
+msgid "An island with no bridge connecting to the mainland."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:53
+msgid ""
+"An edge or mesh of edges failed to connect to other networks because of "
+"human negligence during data generation."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:54
+msgid "The data is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:55
+msgid "Topology creation failed to succeed."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:57
+msgid ""
+"pgr_labelGraph() will create an integer column (with the name provided by "
+"the user) and will assign same integer values to all those edges in the "
+"network which are connected topologically. Thus better analysis regarding "
+"network structure is possible. In case of ``rows_where`` condition, non "
+"participating rows will have -1 integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:59
+msgid ""
+"Prerequisites: Must run ``pgr_createTopology()`` in order to generate "
+"``source`` and ``target`` columns. Primary key column ``id`` should also be "
+"there in the network table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:62
+msgid "Function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:64
+msgid "``text`` Network table name, with optional schema name."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:65
+msgid ""
+"``text`` Primary key column name of the network table. Default is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:66
+msgid ""
+"``text`` Source column name generated after ``pgr_createTopology()``. "
+"Default is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:67
+msgid ""
+"``text`` Target column name generated after ``pgr_createTopology()``. "
+"Default is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:68
+msgid ""
+"``text`` Column name which will hold the integer labels for each sub-graph. "
+"Default is ``subgraph``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:69
+msgid ""
+"``text`` The SQL where condition. Default is ``true``, means the processing "
+"will be done on the whole table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:75
+msgid "Example Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:77
+msgid "The sample data, has 3 subgraphs."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:87
+msgid ""
+"`pgr_createTopology "
+"<https://github.com/Zia-/pgrouting/blob/develop/src/common/sql/pgrouting_topology.sql>`_"
+" to create the topology of a table based on its geometry and tolerance "
+"value."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_lineGraph.po b/locale/de/LC_MESSAGES/pgr_lineGraph.po
new file mode 100644
index 0000000..7b69209
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_lineGraph.po
@@ -0,0 +1,387 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_lineGraph.rst:13
+msgid "pgr_lineGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:15
+msgid ""
+"``pgr_lineGraph`` — Transforms a given graph into its corresponding edge-"
+"based graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:31
+msgid "Given a graph G, its line graph L(G) is a graph such that:-"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:33
+msgid "each vertex of L(G) represents an edge of G"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:34
+msgid ""
+"two vertices of L(G) are adjacent if and only if their corresponding edges "
+"share a common endpoint in G."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:36
+msgid ""
+"The following figures show a graph (left, with blue vertices) and its Line "
+"Graph (right, with green vertices)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:39
+msgid "|first|"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:55
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:61
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:68
+msgid "The minimal signature is for a **directed** graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "This signature returns the Line Graph of the current graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:89
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:101
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:109
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:116
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:120
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:122
+msgid "RETURNS SETOF (seq, source, target, cost, reverse_cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129 ../../build/doc/pgr_lineGraph.rst:133
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "Identifier of the source vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:131
+msgid "When `negative`: the source is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "Identifier of the target vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:135
+msgid "When `negative`: the target is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137 ../../build/doc/pgr_lineGraph.rst:141
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "Weight of the edge (`source`, `target`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:139
+msgid ""
+"When `negative`: edge (`source`, `target`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "Weight of the edge (`target`, `source`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:143
+msgid ""
+"When `negative`: edge (`target`, `source`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:147
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:154
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:156
+msgid "https://en.wikipedia.org/wiki/Line_graph"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:157
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:160
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:161
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:162
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_maxCardinalityMatch.po b/locale/de/LC_MESSAGES/pgr_maxCardinalityMatch.po
new file mode 100644
index 0000000..4c6c884
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_maxCardinalityMatch.po
@@ -0,0 +1,357 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:13
+msgid "pgr_maxCardinalityMatch - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:19
+msgid ""
+"``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a"
+" graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:32
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:33
+msgid "Renamed 2.5.0, Previous name pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:34
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:39
+msgid ""
+"A matching or independent edge set in a graph is a set of edges without "
+"common vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:40
+msgid ""
+"A maximum matching is a matching that contains the largest possible number "
+"of edges."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:42
+msgid "There may be many maximum matchings."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:43
+msgid "Calculates **one** possible maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:45
+msgid "The graph can be **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:46
+msgid "Running time: :math:`O( E*V * \\alpha(E,V))`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:48
+msgid ":math:`\\alpha(E,V)` is the inverse of the `Ackermann function`_."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:54
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:71
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:78
+msgid ""
+"The minimal use calculates one possible maximum cardinality matching on a "
+"**directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:90
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:98
+msgid ""
+"The complete signature calculates one possible maximum cardinality matching."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:113
+msgid "Description of the SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:115
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid "**going**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "``ANY-NUMERIC``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid ""
+"A positive value represents the existence of the edge (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "**coming**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid ""
+"A positive value represents the existence of the edge (target, source)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:127
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:129
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:130
+msgid "SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:133
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "(optional) Determines the type of the graph. Default TRUE."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:143
+msgid "Description of the Result"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "Identifier of the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "Identifier of the second end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:155
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:157
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:158
+msgid "http://www.boost.org/libs/graph/doc/maximum_matching.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:159
+msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:160
+msgid "https://en.wikipedia.org/wiki/Ackermann_function"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:163
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:164
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:165
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_maxFlow.po b/locale/de/LC_MESSAGES/pgr_maxFlow.po
new file mode 100644
index 0000000..0327a6f
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_maxFlow.po
@@ -0,0 +1,354 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "pgr_maxFlow - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:19
+msgid ""
+"``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the "
+"source(s) to the targets(s) using the Push Relabel algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:28
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:36
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:37
+msgid ""
+"When the maximum flow is 0 then there is no flow and **0** is returned."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:39
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:41
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:42
+msgid "Uses the :ref:`pgr_pushRelabel <pgr_pushRelabel>` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:44
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:47
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:64
+msgid "Calculates the maximum flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:84
+msgid "Calculates the maximum flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:104
+msgid "Calculates the maximum flow from all the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:122
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:124
+msgid ""
+"Calculates the maximum flow from all of the `sources` to all of the "
+"`targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:138
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:149
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155 ../../build/doc/pgr_maxFlow.rst:157
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156 ../../build/doc/pgr_maxFlow.rst:158
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:166
+msgid "Description of the return value"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "Maximum flow possible from the source(s) to the target(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:177
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:178
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:179
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_nodeNetwork.po b/locale/de/LC_MESSAGES/pgr_nodeNetwork.po
new file mode 100644
index 0000000..b9b92db
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_nodeNetwork.po
@@ -0,0 +1,353 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_nodeNetwork.rst:13
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:18
+msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:20
+msgid "Nicolas Ribot"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:21
+msgid "Nicolas Ribot, The source code is released under the MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:27
+msgid ""
+"The function reads edges from a not \"noded\" network table and writes the "
+"\"noded\" edges into a new table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:39
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:41
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:43
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:45
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:47
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:49
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:50
+msgid "``float8`` tolerance for coincident points (in projection unit)dd"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:52
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:53
+msgid "``text`` Suffix for the new table's. Default value is ``noded``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:55
+msgid "The output table will have for ``edge_table_noded``"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:57
+msgid "``bigint`` Unique identifier for the table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:58
+msgid "``bigint`` Identifier of the edge in original table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:59
+msgid "``integer`` Segment number of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:60
+msgid ""
+"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:61
+msgid ""
+"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:62
+msgid "``geometry`` Geometry column of the noded network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:65
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:66
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:70
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:72
+msgid "Let's create the topology for the data in :doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:90
+msgid "Now we can analyze the network."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:114
+msgid ""
+"The analysis tell us that the network has a gap and an intersection. We try "
+"to fix the problem using:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:136
+msgid ""
+"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
+"segmented"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:166
+msgid "We can create the topology of the new network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:184
+msgid "Now let's analyze the new topology"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:210
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:243
+msgid "Comparing the results"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:245
+msgid "Comparing with the Analysis in the original edge_table, we see that."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "Before"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "After"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "Table name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table_noded"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "All original fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Has only basic fields to do a topology analysis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1,6,24"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:255
+msgid "Edges with 2 dead ends 17,18"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:257
+msgid ""
+"Edge 17's right node is a dead end because there is no other edge sharing "
+"that same node. (cnt=1)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "No Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:263
+msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid "Gaps"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"There is a gap between edge 17 and 14 because edge 14 is near to the right "
+"node of edge 17"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
+"tolerance value was taken in account"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Intersections"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Edges 13 and 18 were intersecting"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid ""
+"Edges were segmented, So, now in the interection's point there is a node and"
+" the following edges share it: 13-1 13-2 18-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:274
+msgid ""
+"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
+"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
+"with tho following steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:276
+msgid ""
+"Add a column old_id into edge_table, this column is going to keep track the "
+"id of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:277
+msgid ""
+"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:290
+msgid "We recreate the topology:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:310
+msgid ""
+"To get the same analysis results as the topology of edge_table_noded, we do "
+"the following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:337
+msgid ""
+"To get the same analysis results as the original edge_table, we do the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:362
+msgid ""
+"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
+"is an under pass and there is also a street level juction, and the same "
+"happens with edges 17 and 13."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:389
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:391
+msgid ""
+":ref:`topology` for an overview of a topology for routing algorithms. "
+":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
+":ref:`pgr_create_topology` to create a topology based on the geometry. "
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:397
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:398
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:399
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_pointsAsPolygon.po b/locale/de/LC_MESSAGES/pgr_pointsAsPolygon.po
new file mode 100644
index 0000000..356d85b
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_pointsAsPolygon.po
@@ -0,0 +1,124 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:13
+msgid "pgr_pointsAsPolygon"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:21
+msgid ""
+"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:27
+msgid "Returns the alpha shape as (multi)polygon geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:50
+msgid "Returns a (multi)polygon geometry (with holes)."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:54
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:55
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:56
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:57
+msgid ""
+"Supported to return a (multi)polygon geometry (with holes) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:61
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:62
+msgid ""
+"In the following query there is no way to control which point in the polygon"
+" is the first in the list, so you may get similar but different results than"
+" the following which are also correct."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:69
+msgid "The query use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:73
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:75
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:76
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:79
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:80
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:81
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_pushRelabel.po b/locale/de/LC_MESSAGES/pgr_pushRelabel.po
new file mode 100644
index 0000000..13e8a04
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_pushRelabel.po
@@ -0,0 +1,439 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pushRelabel.rst:14
+msgid "pgr_pushRelabel - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:20
+msgid ""
+"``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowPushRelabel"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:41
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:60
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:62
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:81
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:83
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:104
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:123
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:125
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:140
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:158
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:160
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_edmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:161
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:162
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_strongComponents.po b/locale/de/LC_MESSAGES/pgr_strongComponents.po
new file mode 100644
index 0000000..6f6c0cf
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_strongComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_strongComponents.rst:13
+msgid "pgr_strongComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:15
+msgid ""
+"``pgr_strongComponents`` — Return the strongly connected components of a "
+"directed graph using Tarjan's algorithm based on DFS. In particular, the "
+"algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:31
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other. This implementation can only be used "
+"with a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:40
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:42
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:44
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:62
+msgid "The signature is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:93
+msgid "http://en.wikipedia.org/wiki/Strongly_connected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_trsp.po b/locale/de/LC_MESSAGES/pgr_trsp.po
new file mode 100644
index 0000000..108f0f8
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_trsp.po
@@ -0,0 +1,281 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_trsp.rst:13
+msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:22
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:24
+msgid ""
+"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:30
+msgid ""
+"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
+"can optionally take into account complicated turn restrictions like those "
+"found in real world navigable road networks. Performamnce wise it is nearly "
+"as fast as the A* search but has many additional features like it works with"
+" edges rather than the nodes of the network. Returns a set of "
+":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
+"make up a path."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:57
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:59
+msgid ""
+"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
+"shooting star in that you can specify turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:61
+msgid ""
+"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
+"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
+"This provides an easy way of adding turn restrictions to a road network by "
+"placing them in a separate table."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:64 ../../build/doc/pgr_trsp.rst:120
+msgid ""
+"a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:71 ../../build/doc/pgr_trsp.rst:127
+msgid "``int4`` identifier of the edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:72 ../../build/doc/pgr_trsp.rst:128
+msgid "``int4`` identifier of the source vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:73 ../../build/doc/pgr_trsp.rst:129
+msgid "``int4`` identifier of the target vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:74 ../../build/doc/pgr_trsp.rst:130
+msgid ""
+"``float8`` value, of the edge traversal cost. A negative cost will prevent "
+"the edge from being inserted in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:75 ../../build/doc/pgr_trsp.rst:131
+msgid ""
+"(optional) the cost for the reverse traversal of the edge. This is only used"
+" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
+"above remark about negative costs)."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:77
+msgid "``int4`` **NODE id** of the start point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:78
+msgid "``int4`` **NODE id** of the end point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:79 ../../build/doc/pgr_trsp.rst:134
+msgid "``true`` if the graph is directed"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:80 ../../build/doc/pgr_trsp.rst:135
+msgid ""
+"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
+"will be used for the cost of the traversal of the edge in the opposite "
+"direction."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:82 ../../build/doc/pgr_trsp.rst:137
+msgid ""
+"(optional) a SQL query, which should return a set of rows with the following"
+" columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:88 ../../build/doc/pgr_trsp.rst:143
+msgid "``float8`` turn restriction cost"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:89 ../../build/doc/pgr_trsp.rst:144
+msgid "``int4`` target id"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:90
+msgid ""
+"``text`` comma separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:92
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** of source and target "
+"together with a fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:94
+msgid "``int4`` **EDGE id** of the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:95
+msgid "``float8`` fraction of 1 defines the position on the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:96
+msgid "``int4`` **EDGE id** of the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:97
+msgid "``float8`` fraction of 1 defines the position on the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:99 ../../build/doc/pgr_trsp.rst:152
+msgid "Returns set of :ref:`type_cost_result`:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:101 ../../build/doc/pgr_trsp.rst:154
+msgid "row sequence"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:102 ../../build/doc/pgr_trsp.rst:156
+msgid "node ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:103 ../../build/doc/pgr_trsp.rst:157
+msgid "edge ID (``-1`` for the last row)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:104
+msgid "cost to traverse from ``id1`` using ``id2``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:107 ../../build/doc/pgr_trsp.rst:162
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:108
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:111
+msgid "Support for Vias"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:113
+msgid ""
+"The Support for Vias functions are prototypes. Not all corner cases are "
+"being considered."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:116
+msgid ""
+"We also have support for vias where you can say generate a from A to B to C,"
+" etc. We support both methods above only you pass an array of vertices or "
+"and array of edges and percentage position along the edge in two arrays."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:133
+msgid ""
+"``int4[]`` An ordered array of **NODE id** the path will go through from "
+"start to end."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:145
+msgid ""
+"``text`` commar separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:147
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** together with a "
+"fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:149
+msgid "``int4`` An ordered array of **EDGE id** that the path has to traverse"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:150
+msgid ""
+"``float8`` An array of fractional positions along the respective edges in "
+"``eids``, where 0.0 is the start of the edge and 1.0 is the end of the "
+"eadge."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:155
+msgid "route ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:158
+msgid "cost to traverse from ``id2`` using ``id3``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:163
+msgid "Via Support prototypes new in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:166
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:168
+msgid "**Without turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:175
+msgid "**With turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:177
+msgid "Then a query with turn restrictions is created as:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:184
+msgid "An example query using vertex ids and via points:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:191
+msgid "An example query using edge ids and vias:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:198
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:204
+msgid ":ref:`type_cost_result`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:207
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:208
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:209
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_version.po b/locale/de/LC_MESSAGES/pgr_version.po
new file mode 100644
index 0000000..5a6623a
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_version.po
@@ -0,0 +1,130 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_version.rst:13
+msgid "pgr_version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:21
+msgid "``pgr_version`` — Query for pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:27
+msgid "Returns a table with pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:35 ../../build/doc/pgr_version.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:37
+msgid "Returns a table with:"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "**version**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42 ../../build/doc/pgr_version.rst:43
+#: ../../build/doc/pgr_version.rst:44 ../../build/doc/pgr_version.rst:45
+#: ../../build/doc/pgr_version.rst:46
+msgid "``varchar``"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "pgRouting version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "**tag**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "Git tag of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "**hash**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "Git hash of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "**branch**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "Git branch of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "**boost**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "Boost version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:51
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:52
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:56
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:58
+msgid "Query for full version string"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:66
+msgid "Query for ``version`` and ``boost`` attribute"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:78
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:81
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:82
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:83
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_vrpOneDepot.po b/locale/de/LC_MESSAGES/pgr_vrpOneDepot.po
new file mode 100644
index 0000000..a0c5006
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_vrpOneDepot.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:14
+msgid "pgr_vrpOneDepot - Experimental"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:21
+msgid "**No documentation available**"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:24
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:28
+msgid "Current Result"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:34
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:41
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:43
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:46
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:47
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:48
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_withPoints.po b/locale/de/LC_MESSAGES/pgr_withPoints.po
new file mode 100644
index 0000000..be629d4
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_withPoints.po
@@ -0,0 +1,665 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPoints.rst:13
+msgid "pgr_withPoints - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:19
+msgid ""
+"``pgr_withPoints`` - Returns the shortest path in a graph with additional "
+"temporary vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, find the shortest path(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:43
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:45
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:51
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path. -"
+" The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path: - The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:59
+msgid ""
+"For optimization purposes, any duplicated value in the start_vids or "
+"end_vids are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:60
+msgid ""
+"The returned values are ordered: - start_vid ascending - end_vid ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:64
+msgid "Running time: :math:`O(|start\\_vids|\\times(V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:68
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:81
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:87
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:90
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:91
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid ""
+"No **details** are given about distance of other points of points_sql query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:100
+msgid "From point 1 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:110
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:120
+msgid "From point 1 to vertex 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:132
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:141
+msgid "From point 1 to point 3 and vertex 5"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:153
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:162
+msgid "From point 1 and vertex 2 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:182
+msgid "From point 1 and vertex 2 to point 3 and vertex 7"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:192
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPoints.rst:249
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPoints.rst:222
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:207
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:211
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:221
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid ""
+"(optional). When ``true`` the results will include the points in points_sql "
+"that are in the path. Default is ``false`` which ignores other points of the"
+" points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:231
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:233
+msgid ""
+"Returns set of ``(seq, [path_seq,] [start_vid,] [end_vid,] node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "Path sequence that indicates the relative position on the path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+#: ../../build/doc/pgr_withPoints.rst:241
+#: ../../build/doc/pgr_withPoints.rst:242
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "Identifier of the ending vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:242
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "Identifier of the node:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:243
+msgid "A positive value indicates the node is a vertex of edges_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "A negative value indicates the node is a point of points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:249
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:262
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **right** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:268
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **left** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:274
+msgid ""
+"Many to many example with a twist: on undirected graph and showing details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:281
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:286
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:287
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:291
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:293
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:296
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:297
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:298
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_withPointsCost.po b/locale/de/LC_MESSAGES/pgr_withPointsCost.po
new file mode 100644
index 0000000..f478ccd
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_withPointsCost.po
@@ -0,0 +1,603 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCost.rst:13
+msgid "pgr_withPointsCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:19
+msgid ""
+"``pgr_withPointsCost`` - Calculates the shortest path and returns only the "
+"aggregate cost of the shortest path(s) found, for the combination of points "
+"given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, return only the aggregate cost of the shortest path(s) found."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:79
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:44
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:45
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"vertices in the modified graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:51
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:52
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:54
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:58
+msgid "The `agg_cost` in the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:60
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:62
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:64
+msgid ""
+"If the values returned are stored in a table, the unique index would be the "
+"pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:67
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:69
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:71
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:73
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:75
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:76
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:78
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:82
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:92
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:96
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:102
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:105
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:124
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:145
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:166
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:185
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:204
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCost.rst:234
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:219
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:223
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:233
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:241
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:243
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "Identifier of the ending point. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:256
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:258
+msgid "With **right** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:264
+msgid "With **left** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:270
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:277
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:282
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:283
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:287
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:289
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:292
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:293
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:294
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_withPointsCostMatrix.po b/locale/de/LC_MESSAGES/pgr_withPointsCostMatrix.po
new file mode 100644
index 0000000..c9bb20f
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_withPointsCostMatrix.po
@@ -0,0 +1,472 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:13
+msgid "pgr_withPointsCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:19
+msgid ""
+"``pgr_withPointsCostMatrix`` - Calculates the shortest path and returns only"
+" the aggregate cost of the shortest path(s) found, for the combination of "
+"points given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:31
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:35
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:45
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:87
+msgid "returning a symmetrical cost matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:89
+msgid "Using the default **side** value on the **points_sql** query"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:90
+msgid "Using an undirected graph"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:91
+msgid "Using the default **driving_side** value"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:100
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:128
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:116
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:127
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:153
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:154
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:155
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:156
+msgid "`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_withPointsDD.po b/locale/de/LC_MESSAGES/pgr_withPointsDD.po
new file mode 100644
index 0000000..95b4be1
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_withPointsDD.po
@@ -0,0 +1,552 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsDD.rst:13
+msgid "pgr_withPointsDD - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:19
+msgid ""
+"``pgr_withPointsDD`` - Returns the driving distance from a starting point."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:37
+msgid ""
+"Modify the graph to include points and using Dijkstra algorithm, extracts "
+"all the nodes and points that have costs less than or equal to the value "
+"``distance`` from the starting point. The edges extracted will conform the "
+"corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:60
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:63
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:64
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:84
+msgid "Driving distance from a single point"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:86
+#: ../../build/doc/pgr_withPointsDD.rst:106
+msgid "Finds the driving distance depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:94
+msgid "Right side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:104
+msgid "Driving distance from many starting points"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:118
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsDD.rst:169
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsDD.rst:147
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:134
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:138
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "Starting point id"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "Distance from the start_pid"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+#: ../../build/doc/pgr_withPointsDD.rst:150
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid ""
+"(optional). Value in ['b', 'r', 'l', NULL] indicating if the driving side "
+"is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:146
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid ""
+"(optional). When ``true`` the nodes will only appear in the closest start_v "
+"list. Default is ``false`` which resembles several calls using the single "
+"starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:157
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:159
+msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid ""
+"Identifier of the node within the Distance from ``start_pid``. If ``details "
+"=: true`` a negative value is the identifier of a point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid "``-1`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:169
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "``0`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:180
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:182
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:184
+msgid "Left side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:190
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:199
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:204
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:205
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:209
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:211
+msgid ":ref:`pgr_drivingDistance` - Driving distance using dijkstra."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:212
+msgid ":ref:`pgr_alphashape` - Alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:213
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/pgr_withPointsKSP.po b/locale/de/LC_MESSAGES/pgr_withPointsKSP.po
new file mode 100644
index 0000000..8202877
--- /dev/null
+++ b/locale/de/LC_MESSAGES/pgr_withPointsKSP.po
@@ -0,0 +1,571 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsKSP.rst:13
+msgid "pgr_withPointsKSP - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:19
+msgid ""
+"``pgr_withPointsKSP`` - Find the K shortest paths using Yen's algorithm."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:32
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:36
+msgid ""
+"Modifies the graph to include the points defined in the ``points_sql`` and "
+"using Yen algorithm, finds the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:41
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:56
+msgid "Minimal Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "The minimal usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:60
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:61
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "No **heap paths** are returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:82
+msgid "Finds the K shortest paths depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:91
+msgid "With details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsKSP.rst:130
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:115
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "**start_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "Starting point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "**end_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "Ending point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "**K**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "Number of shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid ""
+"(optional). When ``true`` the paths calculated to get the shortests paths "
+"will be returned also. Default is ``false`` only the K shortest paths are "
+"returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:129
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:139
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:141
+msgid ""
+"Returns set of ``(seq, path_id, path_seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid ""
+"Relative position in the path of node and edge. Has value 1 for the "
+"beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid ""
+"Path identifier. The ordering of the paths: For two paths i, j if i < j then"
+" agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid ""
+"Identifier of the node in the path. Negative values are the identifiers of a"
+" point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:164
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:166
+msgid "Left side driving topology with details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:172
+msgid "Right side driving topology with heap paths and details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:178
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:181
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:182
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:186
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:188
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:191
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:192
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:193
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/proposed.po b/locale/de/LC_MESSAGES/proposed.po
new file mode 100644
index 0000000..9f1a6f4
--- /dev/null
+++ b/locale/de/LC_MESSAGES/proposed.po
@@ -0,0 +1,410 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/proposed.rst:13
+msgid "Stable Proposed Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:20
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:22
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:23
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:24
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:25
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:26
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:27
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:33
+msgid "As part of the :ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:35
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` Use pgr_dijkstra to calculate a cost matrix."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:36
+msgid ""
+":ref:`pgr_dijkstraVia` - Use pgr_dijkstra to make a route via vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:39
+msgid "Families"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:40
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:3
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:4
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:5
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:46
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:3
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:5
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:52
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:3
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:4
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:5
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:58
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:3
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:4
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:9
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:64
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:3
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:4
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:5
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:6
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:7
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:71
+msgid "categories"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:72
+msgid ":ref:`Cost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:3
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:4
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:6
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:7
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:78
+msgid ":ref:`CostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:3
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:4
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:6
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:7
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:84
+msgid ":ref:`KSP`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:3
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:4
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:106
+msgid "Experimental Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:111
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:113
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:114
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:116
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:117
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:118
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:119
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:120
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:121
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:122
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:123
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:124
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:125
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:126
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:127
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:132
+msgid ":ref:`contraction` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:134
+msgid ""
+":ref:`pgr_contractgraph` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:138
+msgid "Graph Analysis"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:139
+msgid ":ref:`pgr_labelGraph` - Analyze / label subgraphs within a network"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:141
+msgid ":ref:`components` - Analyze components within a graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:143
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:144
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:145
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:146
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:147
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:150
+msgid "VRP"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:151
+msgid ":ref:`pgr_gsocvrppdtw`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:152
+msgid ":ref:`pgr_vrp_basic`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:166
+msgid "Graph Transformation"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:167
+msgid ":doc:`pgr_lineGraph`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:178
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:179
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:180
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/release_notes.po b/locale/de/LC_MESSAGES/release_notes.po
new file mode 100644
index 0000000..f4a09f7
--- /dev/null
+++ b/locale/de/LC_MESSAGES/release_notes.po
@@ -0,0 +1,1278 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/release_notes.rst:13
+msgid "Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ""
+"To see the full list of changes check the list of `Git commits "
+"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid "Table of contents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:21
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:22
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:23
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:24
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:25
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:26
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:27
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:28
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:29
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:30
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:31
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:32
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:33
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:34
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:35
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:36
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:43
+msgid "pgRouting 2.5.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:45
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.5.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.5.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:49
+msgid "enhancement:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:50
+msgid "pgr_version is now on SQL language"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:53
+msgid "Breaking change on:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:54
+msgid "pgr_edgeDisjointPaths:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:56
+msgid "Added path_id, cost and agg_cost columns on the result"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:57
+msgid "Parameter names changed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:58
+msgid "The many version results are the union of the one to one version"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:61
+msgid "New Signatures:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:62
+msgid "pgr_bdAstar(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:65 ../../build/doc/release_notes.rst:223
+msgid "New Proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:66
+msgid "pgr_bdAstar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:67
+msgid "pgr_bdAstar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:68
+msgid "pgr_bdAstar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:69
+msgid "pgr_bdAstarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:70
+msgid "pgr_bdAstarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:71
+msgid "pgr_bdAstarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:72
+msgid "pgr_bdAstarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:73
+msgid "pgr_bdAstarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:74
+msgid "pgr_bdDijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:75
+msgid "pgr_bdDijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:76
+msgid "pgr_bdDijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:77
+msgid "pgr_bdDijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:78
+msgid "pgr_bdDijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:79
+msgid "pgr_bdDijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:80
+msgid "pgr_bdDijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:81
+msgid "pgr_bdDijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:82
+msgid "pgr_lineGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:83
+msgid "pgr_connectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:84
+msgid "pgr_strongComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:85
+msgid "pgr_biconnectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:86
+msgid "pgr_articulationPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:87
+msgid "pgr_bridges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:90 ../../build/doc/release_notes.rst:160
+#: ../../build/doc/release_notes.rst:247
+msgid "Deprecated Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:91
+msgid "pgr_bdastar - use pgr_bdAstar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:94
+msgid "Renamed Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:95
+msgid "pgr_maxFlowPushRelabel - use pgr_pushRelabel instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:96
+msgid "pgr_maxFlowEdmondsKarp -use pgr_edmondsKarp instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:97
+msgid "pgr_maxFlowBoykovKolmogorov - use pgr_boykovKolmogorov instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:98
+msgid "pgr_maximumCardinalityMatching - use pgr_maxCardinalityMatch instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:101
+msgid "Deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:102
+msgid "pgr_pointToEdgeNode"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:108
+msgid "pgRouting 2.4.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:110
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.2 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.2%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:113
+msgid "Improvement"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:114
+msgid "Works for postgreSQL 10"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:117 ../../build/doc/release_notes.rst:131
+#: ../../build/doc/release_notes.rst:168 ../../build/doc/release_notes.rst:522
+#: ../../build/doc/release_notes.rst:529 ../../build/doc/release_notes.rst:550
+#: ../../build/doc/release_notes.rst:557
+msgid "Bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:118
+msgid "Fixed: Unexpected error column \"cname\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:119
+msgid ""
+"Replace __linux__ with __GLIBC__ for glibc-specific headers and functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:126
+msgid "pgRouting 2.4.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:128
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.1 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.1%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:132
+msgid "Fixed compiling error on macOS"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:133
+msgid "Condition error on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:138
+msgid "pgRouting 2.4.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:140
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.4.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.4.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:143 ../../build/doc/release_notes.rst:213
+#: ../../build/doc/release_notes.rst:374
+msgid "New Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:144
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:148
+msgid "New Proposed Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:149
+msgid "pgr_maxFlow"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:150
+msgid "pgr_astar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:151
+msgid "pgr_astar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:152
+msgid "pgr_astar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:153
+msgid "pgr_astarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:154
+msgid "pgr_astarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:155
+msgid "pgr_astarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:156
+msgid "pgr_astarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:157
+msgid "pgr_astarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:161
+msgid "pgr_bddijkstra - use pgr_bdDijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:164 ../../build/doc/release_notes.rst:253
+msgid "Deprecated Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:165
+msgid "pgr_pointsToVids"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:169
+msgid "Bug fixes on proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:171
+msgid "pgr_withPointsKSP: fixed ordering"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:173
+msgid "TRSP original code is used with no changes on the compilation warnings"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:178
+msgid "pgRouting 2.3.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:180
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:183 ../../build/doc/release_notes.rst:199
+#: ../../build/doc/release_notes.rst:269 ../../build/doc/release_notes.rst:282
+#: ../../build/doc/release_notes.rst:293 ../../build/doc/release_notes.rst:305
+#: ../../build/doc/release_notes.rst:424 ../../build/doc/release_notes.rst:455
+msgid "Bug Fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:184
+msgid "Fixed pgr_gsoc_vrppdtw crash when all orders fit on one truck."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:185
+msgid "Fixed pgr_trsp:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:187
+msgid "Alternate code is not executed when the point is in reality a vertex"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:188
+msgid "Fixed ambiguity on seq"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:194
+msgid "pgRouting 2.3.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:196
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.1%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:200
+msgid "Leaks on proposed max_flow functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:201
+msgid "Regression error on pgr_trsp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:202
+msgid "Types discrepancy on pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:208
+msgid "pgRouting 2.3.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:210
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:214
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:215
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:218 ../../build/doc/release_notes.rst:330
+msgid "New Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:219
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:224
+msgid "pgr_dijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:225
+msgid "pgr_withPointsCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:226
+msgid "pgr_maxFlowPushRelabel(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:227
+msgid "pgr_maxFlowPushRelabel(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:228
+msgid "pgr_maxFlowPushRelabel(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:229
+msgid "pgr_maxFlowPushRelabel(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:230
+msgid "pgr_maxFlowEdmondsKarp(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:231
+msgid "pgr_maxFlowEdmondsKarp(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:232
+msgid "pgr_maxFlowEdmondsKarp(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:233
+msgid "pgr_maxFlowEdmondsKarp(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:234
+msgid "pgr_maxFlowBoykovKolmogorov (one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:235
+msgid "pgr_maxFlowBoykovKolmogorov (one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:236
+msgid "pgr_maxFlowBoykovKolmogorov (many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:237
+msgid "pgr_maxFlowBoykovKolmogorov (many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:238
+msgid "pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:239
+msgid "pgr_edgeDisjointPaths(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:240
+msgid "pgr_edgeDisjointPaths(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:241
+msgid "pgr_edgeDisjointPaths(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:242
+msgid "pgr_edgeDisjointPaths(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:243
+msgid "pgr_contractGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:248
+msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:249
+msgid "pgr_astar - use pgr_aStar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:254
+msgid "pgr_flip_edges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:255
+msgid "pgr_vidsToDmatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:256
+msgid "pgr_pointsToDMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:257
+msgid "pgr_textToPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:264
+msgid "pgRouting 2.2.4 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:266
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.4 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.4%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:270
+msgid "Bogus uses of extern \"C\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:271
+msgid "Build error on Fedora 24 + GCC 6.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:272
+msgid "Regression error pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:277
+msgid "pgRouting 2.2.3 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:279
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.3 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.3%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:283
+msgid "Fixed compatibility issues with PostgreSQL 9.6."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:288
+msgid "pgRouting 2.2.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:290
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:294
+msgid "Fixed regression error on pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:300
+msgid "pgRouting 2.2.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:302
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A2.2.1+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:306
+msgid "Server crash fix on pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:307
+msgid "Bug fix on With Points family of functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:313
+msgid "pgRouting 2.2.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:315
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:319 ../../build/doc/release_notes.rst:387
+msgid "Improvements"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:320
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:322
+msgid "Adding a row_where and outall optional parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:324
+msgid "Signature fix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:326
+msgid "pgr_dijkstra -- to match what is documented"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:331
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:332
+msgid "pgr_Johnson"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:333
+msgid "pgr_dijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:334
+msgid "pgr_dijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:335
+msgid "pgr_dijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:336
+msgid "pgr_dijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:339 ../../build/doc/release_notes.rst:391
+msgid "Proposed functionality"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:340
+msgid "pgr_withPoints(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:341
+msgid "pgr_withPoints(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:342
+msgid "pgr_withPoints(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:343
+msgid "pgr_withPoints(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:344
+msgid "pgr_withPointsCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:345
+msgid "pgr_withPointsCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:346
+msgid "pgr_withPointsCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:347
+msgid "pgr_withPointsCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:348
+msgid "pgr_withPointsDD(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:349
+msgid "pgr_withPointsDD(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:350
+msgid "pgr_withPointsKSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:351
+msgid "pgr_dijkstraVia"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:355
+msgid "Deprecated functions:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:356
+msgid "pgr_apspWarshall use pgr_floydWarshall instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:357
+msgid "pgr_apspJohnson use pgr_Johnson instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:358
+msgid "pgr_kDijkstraCost use pgr_dijkstraCost instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:359
+msgid "pgr_kDijkstraPath use pgr_dijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:362
+msgid "Renamed and deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:363
+msgid "pgr_makeDistanceMatrix renamed to _pgr_makeDistanceMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:369
+msgid "pgRouting 2.1.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:371
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.1.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:375
+msgid "pgr_dijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:376
+msgid "pgr_dijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:377
+msgid "pgr_dijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:378
+msgid "pgr_drivingDistance(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:381
+msgid "Refactored"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:382
+msgid "pgr_dijkstra(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:383
+msgid "pgr_ksp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:384
+msgid "pgr_drivingDistance(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:388
+msgid ""
+"pgr_alphaShape function now can generate better (multi)polygon with holes "
+"and alpha parameter."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:392
+msgid ""
+"Proposed functions from Steve Woodbridge, (Classified as Convenience by the "
+"author.)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:394
+msgid ""
+"pgr_pointToEdgeNode - convert a point geometry to a vertex_id based on "
+"closest edge."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:395
+msgid ""
+"pgr_flipEdges - flip the edges in an array of geometries so the connect end "
+"to end."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:396
+msgid ""
+"pgr_textToPoints - convert a string of x,y;x,y;... locations into point "
+"geometries."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:397
+msgid ""
+"pgr_pointsToVids - convert an array of point geometries into vertex ids."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:398
+msgid ""
+"pgr_pointsToDMatrix - Create a distance matrix from an array of points."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:399 ../../build/doc/release_notes.rst:400
+msgid ""
+"pgr_vidsToDMatrix - Create a distance matrix from an array of vertix_id."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:402
+msgid "Added proposed functions from GSoc Projects:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:404
+msgid "pgr_vrppdtw"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:405
+msgid "pgr_vrponedepot"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:408
+msgid "Deprecated functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:409
+msgid "pgr_getColumnName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:410
+msgid "pgr_getTableName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:411
+msgid "pgr_isColumnCndexed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:412
+msgid "pgr_isColumnInTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:413
+msgid "pgr_quote_ident"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:414
+msgid "pgr_versionless"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:415
+msgid "pgr_startPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:416
+msgid "pgr_endPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:417
+msgid "pgr_pointToId"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:420
+msgid "No longer supported"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:421
+msgid "Removed the 1.x legacy functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:425
+msgid "Some bug fixes in other functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:429
+msgid "Refactoring Internal Code"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:430
+msgid "A C and C++ library for developer was created"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:432
+msgid "encapsulates postgreSQL related functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:433
+msgid "encapsulates Boost.Graph graphs"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:435
+msgid "Directed Boost.Graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:436
+msgid "Undirected Boost.graph."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:438
+msgid "allow any-integer in the id's"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:439
+msgid "allow any-numerical on the cost/reverse_cost columns"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:441
+msgid ""
+"Instead of generating many libraries: - All functions are encapsulated in "
+"one library - The library has the prefix 2-1-0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:450
+msgid "pgRouting 2.0.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:452
+msgid "Minor bug fixes."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:456
+msgid "No track of the bug fixes were kept."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:462
+msgid "pgRouting 2.0.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:464
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.0.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.0.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:466
+msgid ""
+"With the release of pgRouting 2.0.0 the library has abandoned backwards "
+"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. The main "
+"Goals for this release are:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:469
+msgid "Major restructuring of pgRouting."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:470
+msgid "Standardization of the function naming"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:471
+msgid "Preparation of the project for future development."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:473
+msgid "As a result of this effort:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:475
+msgid "pgRouting has a simplified structure"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:476
+msgid "Significant new functionality has being added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:477
+msgid "Documentation has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:478
+msgid "Testing has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:479
+msgid "And made it easier for multiple developers to make contributions."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:483
+msgid "Important Changes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:484
+msgid ""
+"Graph Analytics - tools for detecting and fixing connection some problems in"
+" a graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:485
+msgid "A collection of useful utility functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:486
+msgid ""
+"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:487
+msgid ""
+"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
+"pgr_bdDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:488
+msgid "One to many nodes search (pgr_kDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:489
+msgid "K alternate paths shortest path (pgr_ksp)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:490
+msgid ""
+"New TSP solver that simplifies the code and the build process (pgr_tsp), "
+"dropped \"Gaul Library\" dependency"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:491
+msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:492
+msgid "Dropped support for Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:493
+msgid ""
+"Built a test infrastructure that is run before major code changes are "
+"checked in"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:494
+msgid ""
+"Tested and fixed most all of the outstanding bugs reported against 1.x that "
+"existing in the 2.0-dev code base."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:495
+msgid "Improved build process for Windows"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:496
+msgid ""
+"Automated testing on Linux and Windows platforms trigger by every commit"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:497
+msgid "Modular library design"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:498
+msgid "Compatibility with PostgreSQL 9.1 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:499
+msgid "Compatibility with PostGIS 2.0 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:500
+msgid "Installs as PostgreSQL EXTENSION"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:501
+msgid "Return types re factored and unified"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:502
+msgid "Support for table SCHEMA in function parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:503
+msgid "Support for ``st_`` PostGIS function prefix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:504
+msgid "Added ``pgr_`` prefix to functions and types"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:505
+msgid "Better documentation: http://docs.pgrouting.org"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:506
+msgid "shooting_star is discontinued"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:513
+msgid "pgRouting 1.x Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:515
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for 1.x "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+1.x%22+is%3Aclosed>`_"
+" on Github. The following release notes have been copied from the previous "
+"``RELEASE_NOTES`` file and are kept as a reference."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:520
+msgid "Changes for release 1.05"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:526
+msgid "Changes for release 1.03"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:528
+msgid "Much faster topology creation"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:533
+msgid "Changes for release 1.02"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:535 ../../build/doc/release_notes.rst:542
+msgid "Shooting* bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:536
+msgid "Compilation problems solved"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:540
+msgid "Changes for release 1.01"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:546
+msgid "Changes for release 1.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:548
+msgid "Core and extra functions are separated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:549
+msgid "Cmake build process"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:554
+msgid "Changes for release 1.0.0b"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:556
+msgid "Additional SQL file with more simple names for wrapper functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:561
+msgid "Changes for release 1.0.0a"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:563
+msgid "Shooting* shortest path algorithm for real road networks"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:564
+msgid "Several SQL bugs were fixed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:568
+msgid "Changes for release 0.9.9"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:570
+msgid "PostgreSQL 8.2 support"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:571
+msgid ""
+"Shortest path functions return empty result if they could not find any path"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:575
+msgid "Changes for release 0.9.8"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:577
+msgid "Renumbering scheme was added to shortest path functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:578
+msgid "Directed shortest path functions were added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:579
+msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/routingFunctions.po b/locale/de/LC_MESSAGES/routingFunctions.po
new file mode 100644
index 0000000..3242809
--- /dev/null
+++ b/locale/de/LC_MESSAGES/routingFunctions.po
@@ -0,0 +1,134 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/routingFunctions.rst:15
+msgid "Routing Functions"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:21
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:23
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:28
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:30
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:33
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:39
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:41
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:43
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:49
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/sampledata.po b/locale/de/LC_MESSAGES/sampledata.po
new file mode 100644
index 0000000..2ded9cd
--- /dev/null
+++ b/locale/de/LC_MESSAGES/sampledata.po
@@ -0,0 +1,152 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/sampledata.rst:11
+msgid "Sample Data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:13
+msgid ""
+"The documentation provides very simple example queries based on a small "
+"sample network. To be able to execute the sample queries, run the following "
+"SQL commands to create a table with a small network data set."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:18
+msgid "Create table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:25
+msgid "Insert data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:32
+msgid "Topology"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:33
+msgid ""
+"Before you test a routing function use this query to create a topology "
+"(fills the ``source`` and ``target`` columns)."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:40
+msgid "Points of interest"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:41
+msgid "When points outside of the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:42
+msgid "Used with the :ref:`withPoints` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:49
+msgid "Restrictions"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:50
+msgid "Used with the :ref:`trsp` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:57
+msgid "Categories"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:58
+msgid "Used with the :ref:`maxFlow` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:65
+msgid "Vertex table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:66
+msgid "Used in some deprecated signatures or deprecated functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:74
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:76
+msgid "Red arrows correspond when ``cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:77
+msgid "Blue arrows correspond when ``reverse_cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:78
+msgid "Points are outside the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:79
+msgid "Click on the graph to enlarge."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:84
+msgid ""
+"Network for queries marked as ``directed`` and ``cost`` and ``reverse_cost``"
+" columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:86
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"vehicles."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:91
+msgid "**Graph 1: Directed, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:96
+msgid ""
+"Network for queries marked as ``undirected`` and ``cost`` and "
+"``reverse_cost`` columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:98
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"pedestrians."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:104
+msgid "**Graph 2: Undirected, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:109
+msgid ""
+"Network for queries marked as ``directed`` and only ``cost`` column is used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:116
+msgid "**Graph 3: Directed, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:121
+msgid ""
+"Network for queries marked as ``undirected`` and only ``cost`` column is "
+"used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:127
+msgid "**Graph 4: Undirected, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:134
+msgid "Pick & Deliver Data"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/support.po b/locale/de/LC_MESSAGES/support.po
new file mode 100644
index 0000000..4082646
--- /dev/null
+++ b/locale/de/LC_MESSAGES/support.po
@@ -0,0 +1,177 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/support.rst:13
+msgid "Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:15
+msgid ""
+"pgRouting community support is available through the `pgRouting website "
+"<http://pgrouting.org/support.html>`_, `documentation "
+"<http://docs.pgrouting.org>`_, tutorials, mailing lists and others. If "
+"you’re looking for :ref:`commercial support <support_commercial>`, find "
+"below a list of companies providing pgRouting development and consulting "
+"services."
+msgstr ""
+
+#: ../../build/doc/support.rst:19
+msgid "Reporting Problems"
+msgstr ""
+
+#: ../../build/doc/support.rst:21
+msgid ""
+"Bugs are reported and managed in an `issue tracker "
+"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
+"steps:"
+msgstr ""
+
+#: ../../build/doc/support.rst:23
+msgid ""
+"Search the tickets to see if your problem has already been reported. If so, "
+"add any extra context you might have found, or at least indicate that you "
+"too are having the problem. This will help us prioritize common issues."
+msgstr ""
+
+#: ../../build/doc/support.rst:24
+msgid ""
+"If your problem is unreported, create a `new issue "
+"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
+msgstr ""
+
+#: ../../build/doc/support.rst:25
+msgid ""
+"In your report include explicit instructions to replicate your issue. The "
+"best tickets include the exact SQL necessary to replicate a problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:26
+msgid ""
+"If you can test older versions of PostGIS for your problem, please do. On "
+"your ticket, note the earliest version the problem appears."
+msgstr ""
+
+#: ../../build/doc/support.rst:27
+msgid ""
+"For the versions where you can replicate the problem, note the operating "
+"system and version of pgRouting, PostGIS and PostgreSQL."
+msgstr ""
+
+#: ../../build/doc/support.rst:28
+msgid ""
+"It is recommended to use the following wrapper on the problem to pin point "
+"the step that is causing the problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:39
+msgid "Mailing List and GIS StackExchange"
+msgstr ""
+
+#: ../../build/doc/support.rst:41
+msgid ""
+"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
+"server:"
+msgstr ""
+
+#: ../../build/doc/support.rst:43
+msgid ""
+"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
+msgstr ""
+
+#: ../../build/doc/support.rst:44
+msgid ""
+"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
+"dev"
+msgstr ""
+
+#: ../../build/doc/support.rst:46
+msgid ""
+"For general questions and topics about how to use pgRouting, please write to"
+" the user mailing list."
+msgstr ""
+
+#: ../../build/doc/support.rst:48
+msgid ""
+"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
+" tag the question with ``pgrouting``. Find all questions tagged with "
+"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
+"or subscribe to the `pgRouting questions feed "
+"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
+msgstr ""
+
+#: ../../build/doc/support.rst:54
+msgid "Commercial Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:56
+msgid ""
+"For users who require professional support, development and consulting "
+"services, consider contacting any of the following organizations, which have"
+" significantly contributed to the development of pgRouting:"
+msgstr ""
+
+#: ../../build/doc/support.rst:61
+msgid "**Company**"
+msgstr ""
+
+#: ../../build/doc/support.rst:62
+msgid "**Offices in**"
+msgstr ""
+
+#: ../../build/doc/support.rst:63
+msgid "**Website**"
+msgstr ""
+
+#: ../../build/doc/support.rst:64
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/support.rst:65
+msgid "Germany, Japan"
+msgstr ""
+
+#: ../../build/doc/support.rst:66
+msgid "https://georepublic.info"
+msgstr ""
+
+#: ../../build/doc/support.rst:67
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/support.rst:68 ../../build/doc/support.rst:71
+msgid "United States"
+msgstr ""
+
+#: ../../build/doc/support.rst:69
+msgid "http://imaptools.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:70
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/support.rst:72
+msgid "http://www.paragoncorporation.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:73
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/support.rst:74
+msgid "Switzerland, France"
+msgstr ""
+
+#: ../../build/doc/support.rst:75
+msgid "http://www.camptocamp.com"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/topology-functions.po b/locale/de/LC_MESSAGES/topology-functions.po
new file mode 100644
index 0000000..ac6a1b3
--- /dev/null
+++ b/locale/de/LC_MESSAGES/topology-functions.po
@@ -0,0 +1,66 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/topology-functions.rst:13
+msgid "Topology - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:15
+msgid ""
+"The pgRouting's topology of a network, represented with an edge table with "
+"source and target attributes and a vertices table associated with it. "
+"Depending on the algorithm, you can create a topology or just reconstruct "
+"the vertices table, You can analyze the topology, We also provide a function"
+" to node an unoded network."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:19
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:20
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:21
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:22
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:23
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:35
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:38
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:39
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:40
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/types_index.po b/locale/de/LC_MESSAGES/types_index.po
new file mode 100644
index 0000000..3f3faa7
--- /dev/null
+++ b/locale/de/LC_MESSAGES/types_index.po
@@ -0,0 +1,56 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/types_index.rst:13
+msgid "pgRouting Data Types"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:15
+msgid ""
+"The following are commonly used data types for some of the pgRouting "
+"functions."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:17
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:18
+msgid ""
+":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe "
+"a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:19
+msgid ""
+":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:30
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:33
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:34
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:35
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/withPoints-family.po b/locale/de/LC_MESSAGES/withPoints-family.po
new file mode 100644
index 0000000..3d4f303
--- /dev/null
+++ b/locale/de/LC_MESSAGES/withPoints-family.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/withPoints-family.rst:14
+msgid "withPoints - Family of functions"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:16
+msgid "When points are also given as input:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:20
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:21
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:22
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:23
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:24
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:47
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:49
+msgid ""
+"The squared vertices are the temporary vertices, The temporary vertices are "
+"added acordng to the dirving side, The following images visualy show the "
+"diferences on how depending on the driving side the data is interpreted."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:53
+msgid "Right driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:58
+msgid "Left driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:63
+msgid "doesn't matter the driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:68
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:70
+msgid ""
+"This famly of functions was thought for routing vehicles, but might as well "
+"work for some other application that we can not think of."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:73
+msgid ""
+"The with points family of function give you the ability to route between "
+"arbitrary points located outside the original graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:76
+msgid ""
+"When given a point identified with a `pid` that its being mapped to and edge"
+" with an identifier `edge_id`, with a `fraction` along that edge (from the "
+"source to the target of the edge) and some additional information about "
+"which `side` of the edge the point is on, then routing from arbitrary points"
+" more accurately reflect routing vehicles in road networks,"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid ""
+"I talk about a family of functions because it includes different "
+"functionalities."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:84
+msgid "pgr_withPoints is pgr_dijkstra based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:85
+msgid "pgr_withPointsCost is pgr_dijkstraCost based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:86
+msgid "pgr_withPointsKSP is pgr_ksp based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid "pgr_withPointsDD is pgr_drivingDistance based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:89
+msgid ""
+"In all this functions we have to take care of as many aspects as possible:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:91
+msgid "Must work for routing:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:93
+msgid "Cars (directed graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:94
+msgid "Pedestrians (undirected graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:96
+msgid "Arriving at the point:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:98
+msgid "In either side of the street."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:99
+msgid ""
+"Compulsory arrival on the side of the street where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:101
+msgid "Countries with:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:103
+msgid "Right side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:104
+msgid "Left side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:106
+msgid "Some points are:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:108
+msgid ""
+"Permanent, for example the set of points of clients stored in a table in the"
+" data base"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:109
+msgid "Temporal, for example points given through a web application"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:111
+msgid "The numbering of the points are handled with negative sign."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:113
+msgid "Original point identifiers are to be positive."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:114
+msgid "Transformation to negative is done internally."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:115
+msgid "For results for involving vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:117
+msgid "positive sign is a vertex of the original grpah"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:118
+msgid "negative sign is a point of the temporary points"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:120
+msgid ""
+"The reason for doing this is to avoid confusion when there is a vertex with "
+"the same number as identifier as the points identifier."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:123
+msgid "Graph & edges"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:125
+msgid ""
+"Let :math:`G_d(V,E)` where :math:`V` is the set of vertices and :math:`E` is"
+" the set of edges be the original directed graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:127
+msgid ""
+"An edge of the original `edges_sql` is :math:`(id, source, target, cost, "
+"reverse\\_cost)` will generate internally"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:129
+msgid ":math:`(id, source, target, cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:130
+msgid ":math:`(id, target, source, reverse\\_cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:133
+msgid "Point Definition"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:135
+msgid ""
+"A point is defined by the quadruplet: :math:`(pid, eid, fraction, side)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:137
+msgid "**pid** is the point identifier"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:138
+msgid "**eid** is an edge id of the `edges_sql`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:139
+msgid "**fraction** represents where the edge `eid` will be cut."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:140
+msgid "**side** Indicates the side of the edge where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:144
+msgid "Creating Temporary Vertices in the Graph"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:146
+msgid "For edge (15, 9,12 10, 20), & lets insert point (2, 12, 0.3, r)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:149
+msgid "On a right hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:150
+msgid "From first image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:152
+msgid "We can arrive to the point only via vertex 9."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:153
+msgid "It only afects the edge (15, 9,12, 10) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:154
+msgid "Edge (15, 12,9, 20) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:155
+#: ../../build/doc/withPoints-family.rst:167
+#: ../../build/doc/withPoints-family.rst:182
+msgid "Create new edges:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:157
+#: ../../build/doc/withPoints-family.rst:186
+msgid "(15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:158
+#: ../../build/doc/withPoints-family.rst:187
+msgid "(15, -1,12, 7) edge from point 1 to vertex 12 has cost 7"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:161
+msgid "On a left hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:162
+msgid "From second image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:164
+msgid "We can arrive to the point only via vertex 12."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:165
+msgid "It only afects the edge (15, 12,9 20) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:166
+msgid "Edge (15, 9,12, 10) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:169
+#: ../../build/doc/withPoints-family.rst:184
+msgid "(15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:170
+#: ../../build/doc/withPoints-family.rst:185
+msgid "(15, -1,9, 6) edge from point 1 to vertex 9 has cost 6"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:172
+msgid "that fraction is from vertex 9 to vertex 12"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:176
+msgid "When driving side does not matter"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:177
+msgid "From third image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:179
+msgid "We can arrive to the point either via vertex 12 or via vertex 9"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:180
+msgid "Edge (15, 12,9 20) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:181
+msgid "Edge (15, 9,12, 10) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:190
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:193
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:194
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:195
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/KSP-category.po b/locale/en/LC_MESSAGES/KSP-category.po
new file mode 100644
index 0000000..9232738
--- /dev/null
+++ b/locale/en/LC_MESSAGES/KSP-category.po
@@ -0,0 +1,36 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/KSP-category.rst:14
+msgid "KSP Category"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:18
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:19
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:26
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:27
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:28
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/TSP-family.po b/locale/en/LC_MESSAGES/TSP-family.po
new file mode 100644
index 0000000..0f03653
--- /dev/null
+++ b/locale/en/LC_MESSAGES/TSP-family.po
@@ -0,0 +1,556 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/TSP-family.rst:13
+msgid "Traveling Sales Person - Family of functions"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:17
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:18
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:33
+msgid "Origin"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid ""
+"The traveling sales person problem was studied in the 18th century by "
+"mathematicians"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid "**Sir William Rowam Hamilton** and **Thomas Penyngton Kirkman**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:38
+msgid ""
+"A discussion about the work of Hamilton & Kirkman can be found in the book "
+"**Graph Theory (Biggs et al. 1976)**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:41
+msgid "ISBN-13: 978-0198539162"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:42
+msgid "ISBN-10: 0198539169"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:44
+msgid ""
+"It is believed that the general form of the TSP have been first studied by "
+"Kalr Menger in Vienna and Harvard. The problem was later promoted by "
+"Hassler, Whitney & Merrill at Princeton. A detailed description about the"
+" connection between Menger & Whitney, and the development of the TSP can be "
+"found in `On the history of combinatorial optimization (till 1960) "
+"<http://www.cwi.nl/~lex/files/histco.ps>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:50
+msgid "Problem Definition"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:52
+msgid ""
+"Given a collection of cities and travel cost between each pair, find the "
+"cheapest way for visiting all of the cities and returning to the starting "
+"point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:56
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:58
+msgid "The travel costs are symmetric:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:60
+msgid ""
+"traveling costs from city A to city B are just as much as traveling from B "
+"to A."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:62
+msgid "This problem is an NP-hard optimization problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:64
+msgid "To calculate the number of different tours through :math:`n` cities:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:66
+msgid "Given a starting city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:67
+msgid "There are :math:`n-1` choices for the second city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:68
+msgid "And :math:`n-2` choices for the third city, etc."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:69
+msgid ""
+"Multiplying these together we get :math:`(n-1)! = (n-1) (n-2) . . 1`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:70
+msgid ""
+"Now since our travel costs do not depend on the direction we take around the"
+" tour:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:72
+msgid "this number by 2"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:73
+msgid ":math:`(n-1)!/2`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:76
+msgid "TSP & Simulated Annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:78
+msgid ""
+"The simulated annealing algorithm was originally inspired from the process "
+"of annealing in metal work."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:81
+msgid ""
+"Annealing involves heating and cooling a material to alter its physical "
+"properties due to the changes in its internal structure. As the metal cools "
+"its new structure becomes fixed, consequently causing the metal to retain "
+"its newly obtained properties. [C001]_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:88
+msgid "Pseudocode"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:89
+msgid ""
+"Given an initial solution, the simulated annealing process, will start with "
+"a high temperature and gradually cool down until the desired temperature is "
+"reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:92
+msgid ""
+"For each temperature, a neighbouring new solution **snew** is calculated. "
+"The higher the temperature the higher the probability of accepting the new "
+"solution as a possible bester solution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:95
+msgid ""
+"Once the desired temperature is reached, the best solution found is returned"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:118
+msgid "pgRouting Implementation"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:120
+msgid ""
+"pgRouting's implementation adds some extra parameters to allow some exit "
+"controls within the simulated annealing process."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:123
+msgid "To cool down faster to the next temperature:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:125
+msgid ""
+"max_changes_per_temperature: limits the number of changes in the solution "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:126
+msgid ""
+"max_consecutive_non_changes: limits the number of consecutive non changes "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:128
+msgid ""
+"This is done by doing some book keeping on the times **solution = snew;** is"
+" executed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:130
+msgid ""
+"max_changes_per_temperature: Increases by one when **solution** changes"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:131
+msgid ""
+"max_consecutive_non_changes: Reset to 0 when **solution** changes, and "
+"increased each **try**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:133
+msgid ""
+"Additionally to stop the algorithm at a higher temperature than the desired "
+"one:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:135
+msgid ""
+"max_processing_time: limits the time the simulated annealing is performed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:136
+msgid ""
+"book keeping is done to see if there was a change in **solution** on the "
+"last temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:138
+msgid ""
+"Note that, if no change was found in the first "
+"**max_consecutive_non_changes** tries, then the simulated annealing will "
+"stop."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:168
+msgid "Choosing parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:170
+msgid ""
+"There is no exact rule on how the parameters have to be chose, it will "
+"depend on the special characteristics of the problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:173
+msgid ""
+"Your computational time is crucial, then put your time limit to "
+"**max_processing_time**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:174
+msgid ""
+"Make the **tries_per_temperture** depending on the number of cities, for "
+"example:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:176
+msgid "Useful to estimate the time it takes to do one cycle: use `1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:178
+msgid "this will help to set a reasonable **max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:180
+msgid ":math:`n * (n-1)`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:181
+msgid ":math:`500 * n`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:183
+msgid ""
+"For a faster decreasing the temperature set **cooling_factor** to a smaller "
+"number, and set to a higher number for a slower decrease."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:186
+msgid ""
+"When for the same given data the same results are needed, set **randomize** "
+"to `false`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:188
+msgid "When estimating how long it takes to do one cycle: use `false`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:191
+msgid ""
+"A recommendation is to play with the values and see what fits to the "
+"particular data."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:196
+msgid "Description Of the Control parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:198
+msgid "The control parameters are optional, and have a default value."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+#: ../../build/doc/TSP-family.rst:233
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+msgid "`0`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "The greedy part of the implementation will use this identifier."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "Last visiting vertex before returning to start_vid."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "**max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205 ../../build/doc/TSP-family.rst:209
+#: ../../build/doc/TSP-family.rst:210 ../../build/doc/TSP-family.rst:211
+#: ../../build/doc/TSP-family.rst:234 ../../build/doc/TSP-family.rst:237
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "`+infinity`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "Stop the annealing processing when the value is reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "**tries_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206 ../../build/doc/TSP-family.rst:207
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:232
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "`500`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "Maximum number of times a neighbor(s) is searched in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "**max_changes_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "`60`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "Maximum number of times the solution is changed in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid "**max_consecutive_non_changes**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:209
+msgid "`100`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid ""
+"Maximum number of consecutive times the solution is not changed in each "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "**initial_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "Starting temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "**final_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "`0.1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "Ending temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "**cooling_factor**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "`0.9`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid ""
+"Value between between 0 and 1 (not including) used to calculate the next "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "**randomize**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "`true`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "Choose the random seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:214
+msgid "true: Use current time as seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:215
+msgid ""
+"false: Use `1` as seed. Using this value will get the same results with the "
+"same data in each execution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:225
+msgid "Description of the return columns"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:227
+msgid "Returns set of ``(seq, node, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:230
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "Identifier of the node/coordinate/point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:234
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid ""
+"Cost to traverse from the current ``node`` ito the next ``node`` in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:237
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:245
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:248
+msgid "References"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:249
+msgid ""
+"`Simulated annaeling algorithm for beginners <http://www.theprojectspot.com"
+"/tutorial-post/simulated-annealing-algorithm-for-beginners/6>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:251
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:252
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:255
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:256
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:257
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/aStar-family.po b/locale/en/LC_MESSAGES/aStar-family.po
new file mode 100644
index 0000000..3364e02
--- /dev/null
+++ b/locale/en/LC_MESSAGES/aStar-family.po
@@ -0,0 +1,205 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/aStar-family.rst:13
+msgid "aStar - Family of functions"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:15
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic that allow it to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:19
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:20
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:21
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:34
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:36
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic, that is an estimation of the remaining cost from the "
+"vertex to the goal, that allows to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph. Running time: :math:`O((E + "
+"V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:46
+msgid "Heuristic"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:48
+msgid "Currently the heuristic functions available are:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:50
+msgid "0: :math:`h(v) = 0` (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:51
+msgid "1: :math:`h(v) = abs(max(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:52
+msgid "2: :math:`h(v) = abs(min(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:53
+msgid "3: :math:`h(v) = \\Delta x * \\Delta x + \\Delta y * \\Delta y`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:54
+msgid "4: :math:`h(v) = sqrt(\\Delta x * \\Delta x + \\Delta y * \\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:55
+msgid "5: :math:`h(v) = abs(\\Delta x) + abs(\\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:57
+msgid "where :math:`\\Delta x = x_1 - x_0` and :math:`\\Delta y = y_1 - y_0`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:63 ../../build/doc/aStar-family.rst:76
+#: ../../build/doc/aStar-family.rst:89
+msgid "Factor"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:66
+msgid "Analysis 1"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:67
+msgid ""
+"Working with cost/reverse_cost as length in degrees, x/y in lat/lon: Factor "
+"= 1 (no need to change units)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:71
+msgid "Analysis 2"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:72
+msgid ""
+"Working with cost/reverse_cost as length in meters, x/y in lat/lon: Factor ="
+" would depend on the location of the points:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "latitude"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "conversion"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78 ../../build/doc/aStar-family.rst:91
+msgid "45"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "1 longitude degree is 78846.81 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "78846"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79 ../../build/doc/aStar-family.rst:92
+msgid "0"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "1 longitude degree is 111319.46 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "111319"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:83
+msgid "Analysis 3"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:84
+msgid ""
+"Working with cost/reverse_cost as time in seconds, x/y in lat/lon: Factor: "
+"would depend on the location of the points and on the average speed say "
+"25m/s is the speed."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "1 longitude degree is (78846.81m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "3153 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "1 longitude degree is (111319.46 m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "4452 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:98
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:100
+msgid ":ref:`pgr_aStar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:101
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:102
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:103
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:104
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:107
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:108
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:109
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/allpairs-family.po b/locale/en/LC_MESSAGES/allpairs-family.po
new file mode 100644
index 0000000..9749ed9
--- /dev/null
+++ b/locale/en/LC_MESSAGES/allpairs-family.po
@@ -0,0 +1,996 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/allpairs-family.rst:14
+msgid "All Pairs - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:16
+msgid "The following functions work an all vertices pair combinations"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:33
+msgid "Performance"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "The following tests:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:36
+msgid "non server computer"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:37
+msgid "with AMD 64 CPU"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:38
+msgid "4G memory"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:39
+msgid "trusty"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "posgreSQL version 9.3"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:43
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:45
+msgid "The following data was used"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:53
+msgid "Data processing was done with osm2pgrouting-alpha"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:66
+msgid "Results"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:68
+msgid "One"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:70
+msgid ""
+"This test is not with a bounding box The density of the passed graph is "
+"extremely low. For each <SIZE> 30 tests were executed to get the average The"
+" tested query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:83
+#: ../../build/doc/allpairs-family.rst:140
+msgid "The results of this tests are presented as:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:85
+msgid "is the number of edges given as input."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:86
+#: ../../build/doc/allpairs-family.rst:143
+msgid "is the total number of records in the query."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:87
+#: ../../build/doc/allpairs-family.rst:144
+msgid "is the density of the data :math:`\\dfrac{E}{V \\times (V-1)}`."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:88
+#: ../../build/doc/allpairs-family.rst:145
+msgid "is the number of records returned by the queries."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:89
+#: ../../build/doc/allpairs-family.rst:146
+msgid "is the average execution time in seconds of pgr_floydWarshall."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:90
+#: ../../build/doc/allpairs-family.rst:147
+msgid "is the average execution time in seconds of pgr_johnson."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "SIZE"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "EDGES"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "DENSITY"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "OUT ROWS"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Floyd-Warshall"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Johnson"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+#: ../../build/doc/allpairs-family.rst:96
+msgid "500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.18E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "1346"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.14"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.13"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+#: ../../build/doc/allpairs-family.rst:97
+msgid "1000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.36E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "2655"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.23"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.18"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:98
+msgid "1500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.55E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "4110"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:99
+msgid "2000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.73E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "5676"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.56"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+#: ../../build/doc/allpairs-family.rst:100
+msgid "2500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.89E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "7177"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.84"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+#: ../../build/doc/allpairs-family.rst:101
+msgid "3000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.07E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "8778"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "0.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+#: ../../build/doc/allpairs-family.rst:102
+msgid "3500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "1.24E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "10526"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "2.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "0.95"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+#: ../../build/doc/allpairs-family.rst:103
+msgid "4000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.41E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "12484"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "3.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.58E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "14354"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+#: ../../build/doc/allpairs-family.rst:105
+msgid "5000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.76E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "16503"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "6.05"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.78"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+#: ../../build/doc/allpairs-family.rst:106
+msgid "5500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "1.93E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "18623"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "7.53"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "2.03"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+#: ../../build/doc/allpairs-family.rst:107
+msgid "6000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.11E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "20710"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "8.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+#: ../../build/doc/allpairs-family.rst:108
+msgid "6500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.28E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "22752"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "9.99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+#: ../../build/doc/allpairs-family.rst:109
+msgid "7000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "2.46E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "24687"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "11.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "3.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+#: ../../build/doc/allpairs-family.rst:110
+msgid "7500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "2.64E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "26861"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "13.94"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "3.60"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+#: ../../build/doc/allpairs-family.rst:111
+msgid "8000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "2.83E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "29050"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "15.61"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "4.09"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+#: ../../build/doc/allpairs-family.rst:112
+msgid "8500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "3.01E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "31693"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "17.43"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "4.63"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+#: ../../build/doc/allpairs-family.rst:113
+msgid "9000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "3.17E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "33879"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "19.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "5.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+#: ../../build/doc/allpairs-family.rst:114
+msgid "9500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "3.35E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "36287"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "20.77"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "6.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+#: ../../build/doc/allpairs-family.rst:115
+msgid "10000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "3.52E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "38491"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "23.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "6.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:119
+msgid "Two"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:121
+msgid ""
+"This test is with a bounding box The density of the passed graph higher than"
+" of the Test One. For each <SIZE> 30 tests were executed to get the average "
+"The tested edge query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:133
+msgid "The tested queries"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:142
+msgid "is the size of the bounding box."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.001"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "44"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.0608"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "1197"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:154
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.10"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.002"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.0251"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "4330"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.003"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "223"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.0122"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "18849"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.004"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "358"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.0085"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "71834"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.005"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "470"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.0070"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "116290"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.22"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.006"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "639"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.0055"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "207030"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.27"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "843"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.0043"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "346930"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.64"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.38"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.008"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "996"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.0037"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "469936"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.90"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.009"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1146"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.0032"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "613135"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.62"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.010"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1360"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.0027"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "849304"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1.87"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.011"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1573"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.0024"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1147101"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "2.65"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1.04"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1789"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.0021"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1483629"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "3.72"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1.35"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1975"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.0019"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1846897"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "4.86"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.014"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2281"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.0017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2438298"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "7.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2588"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.0015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "3156007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "10.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2.80"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.016"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "2958"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.0013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "4090618"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "14.67"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "3.76"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "3247"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.0012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4868919"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "18.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4.48"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:174
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:176
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:177
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:178
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:181
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:182
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:183
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/bdAstar-family.po b/locale/en/LC_MESSAGES/bdAstar-family.po
new file mode 100644
index 0000000..b2bd16b
--- /dev/null
+++ b/locale/en/LC_MESSAGES/bdAstar-family.po
@@ -0,0 +1,394 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Bidirectional A* - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:18
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:35
+msgid ""
+"Based on A* algorithm, the bidirectional search finds a shortest path from a"
+" starting vertex (``start_vid``) to an ending vertex (``end_vid``). It runs "
+"two simultaneous searches: one forward from the ``start_vid``, and one "
+"backward from the ``end_vid``, stopping when the two meet in the middle. "
+"This implementation can be used with a directed graph and an undirected "
+"graph."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:60
+msgid "It is expected to terminate faster than pgr_astar"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:63
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:78 ../../build/doc/bdAstar-family.rst:80
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:72
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79 ../../build/doc/bdAstar-family.rst:81
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:84
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:85
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:89
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:90
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:91
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:92
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:93
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:94
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96 ../../build/doc/bdAstar-family.rst:97
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:103
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/bdDijkstra-family.po b/locale/en/LC_MESSAGES/bdDijkstra-family.po
new file mode 100644
index 0000000..67de3fa
--- /dev/null
+++ b/locale/en/LC_MESSAGES/bdDijkstra-family.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdDijkstra-family.rst:13
+msgid "Bidirectional Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:17
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:18
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:19
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:35
+msgid ""
+"Based on Dijkstra's algorithm, the bidirectional search finds a shortest "
+"path a starting vertex (``start_vid``) to an ending vertex (``end_vid``). It"
+" runs two simultaneous searches: one forward from the source, and one "
+"backward from the target, stopping when the two meet in the middle. This "
+"implementation can be used with a directed graph and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:60
+msgid "It is expected to terminate faster than pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:63
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:66
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:67
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:68
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/components-family.po b/locale/en/LC_MESSAGES/components-family.po
new file mode 100644
index 0000000..dbca49a
--- /dev/null
+++ b/locale/en/LC_MESSAGES/components-family.po
@@ -0,0 +1,750 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/components-family.rst:13
+msgid "Components - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:22
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:23
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:25
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:42
+msgid "The problem definition"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:45
+msgid "Connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:46
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:49
+#: ../../build/doc/components-family.rst:183
+#: ../../build/doc/components-family.rst:252
+#: ../../build/doc/components-family.rst:312
+msgid "**Notice**: This problem defines on an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:51
+#: ../../build/doc/components-family.rst:117
+#: ../../build/doc/components-family.rst:185
+#: ../../build/doc/components-family.rst:254
+#: ../../build/doc/components-family.rst:314
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:54
+msgid "pgr_connectedComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:56
+#: ../../build/doc/components-family.rst:122
+#: ../../build/doc/components-family.rst:190
+#: ../../build/doc/components-family.rst:259
+#: ../../build/doc/components-family.rst:319
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:58
+#: ../../build/doc/components-family.rst:124
+#: ../../build/doc/components-family.rst:192
+#: ../../build/doc/components-family.rst:261
+#: ../../build/doc/components-family.rst:321
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:60
+#: ../../build/doc/components-family.rst:126
+#: ../../build/doc/components-family.rst:194
+#: ../../build/doc/components-family.rst:263
+#: ../../build/doc/components-family.rst:323
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:61
+#: ../../build/doc/components-family.rst:127
+#: ../../build/doc/components-family.rst:195
+#: ../../build/doc/components-family.rst:264
+#: ../../build/doc/components-family.rst:324
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:63
+#: ../../build/doc/components-family.rst:129
+#: ../../build/doc/components-family.rst:197
+#: ../../build/doc/components-family.rst:266
+#: ../../build/doc/components-family.rst:326
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:65
+#: ../../build/doc/components-family.rst:199
+#: ../../build/doc/components-family.rst:268
+#: ../../build/doc/components-family.rst:328
+msgid "The weighted undirected graph, :math:`G(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:67
+#: ../../build/doc/components-family.rst:133
+#: ../../build/doc/components-family.rst:201
+#: ../../build/doc/components-family.rst:270
+#: ../../build/doc/components-family.rst:330
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:69
+#: ../../build/doc/components-family.rst:203
+#: ../../build/doc/components-family.rst:272
+#: ../../build/doc/components-family.rst:332
+msgid ":math:`V = source \\cup target`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:72
+#: ../../build/doc/components-family.rst:137
+#: ../../build/doc/components-family.rst:206
+#: ../../build/doc/components-family.rst:275
+#: ../../build/doc/components-family.rst:335
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:74
+#: ../../build/doc/components-family.rst:208
+#: ../../build/doc/components-family.rst:277
+#: ../../build/doc/components-family.rst:337
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, cost_i) \\text{ when } cost"
+" >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} \\\\ \\cup &\\{(source_i, target_i, reverse\\_cost_i) \\text{ when }"
+" reverse\\_cost_i >=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:77
+#: ../../build/doc/components-family.rst:142
+#: ../../build/doc/components-family.rst:211
+#: ../../build/doc/components-family.rst:280
+#: ../../build/doc/components-family.rst:340
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:79
+#: ../../build/doc/components-family.rst:144
+#: ../../build/doc/components-family.rst:213
+#: ../../build/doc/components-family.rst:282
+#: ../../build/doc/components-family.rst:342
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:81
+#: ../../build/doc/components-family.rst:146
+#: ../../build/doc/components-family.rst:215
+#: ../../build/doc/components-family.rst:284
+#: ../../build/doc/components-family.rst:344
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:89
+#: ../../build/doc/components-family.rst:154
+#: ../../build/doc/components-family.rst:223
+msgid ":math:`\\boldsymbol{\\pi} = \\{(component_i, n\\_seq_i, node_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:298
+#: ../../build/doc/components-family.rst:358
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:92
+msgid ":math:`component_i = \\min \\{node_j | node_j \\in component_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:93
+#: ../../build/doc/components-family.rst:158
+#: ../../build/doc/components-family.rst:227
+msgid ""
+":math:`n\\_seq_i` is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:94
+#: ../../build/doc/components-family.rst:159
+msgid ":math:`node_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:95
+#: ../../build/doc/components-family.rst:160
+#: ../../build/doc/components-family.rst:229
+#: ../../build/doc/components-family.rst:296
+#: ../../build/doc/components-family.rst:356
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:97
+#: ../../build/doc/components-family.rst:162
+#: ../../build/doc/components-family.rst:231
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:298
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+#: ../../build/doc/components-family.rst:170
+#: ../../build/doc/components-family.rst:239
+#: ../../build/doc/components-family.rst:301
+#: ../../build/doc/components-family.rst:361
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:101
+msgid "The first component is composed of nodes ``0``, ``1`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:102
+msgid "The second component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+msgid "The third component is composed of nodes ``2`` and ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:111
+msgid "Strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:112
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:115
+msgid "**Notice**: This problem defines on a directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:120
+msgid "pgr_strongComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:131
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:135
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:139
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:157
+#: ../../build/doc/components-family.rst:226
+msgid ":math:`component_i = \\min {node_j | node_j \\in component_i}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:166
+msgid "The first component is composed of nodes ``1``, ``2`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:167
+msgid "The second component is composed of node ``0``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:168
+msgid "The third component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:169
+msgid "The fourth component is composed of node ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:170
+msgid "The fifth component is composed of node ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:177
+msgid "Biconnected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:178
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:188
+msgid "pgr_biconnectedComponents(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:228
+msgid ":math:`edge_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:358
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:235
+msgid ""
+"The first component is composed of edges ``1 - 2``, ``0 - 1`` and ``0 - 2``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:236
+msgid ""
+"The second component is composed of edges ``2 - 4``, ``2 - 3`` and ``3 - "
+"4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:237
+msgid "The third component is composed of edge ``5 - 6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:238
+msgid "The fourth component is composed of edge ``6 - 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:239
+msgid ""
+"The fifth component is composed of edges ``8 - 9``, ``9 - 10`` and ``8 - "
+"10``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:246
+msgid "Articulation Points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:247
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:257
+msgid "pgr_articulationPoints(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:292
+msgid ":math:`\\boldsymbol{\\pi} = \\{node_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:295
+msgid ":math:`node_i` is an articulation point."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:301
+msgid "Articulation points are nodes ``2`` and ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:308
+msgid "Bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:309
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:317
+msgid "pgr_bridges(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:352
+msgid ":math:`\\boldsymbol{\\pi} = \\{edge_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:355
+msgid ":math:`edge_i` is an edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:361
+msgid "Bridges are edges ``5 <--> 6`` and ``6 <--> 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:370
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:372
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:378
+#: ../../build/doc/components-family.rst:379
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+#: ../../build/doc/components-family.rst:384
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:382
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:386
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:390
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:392
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:393
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:402
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:405
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:416
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:418
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:444
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:443
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:443
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:461
+#: ../../build/doc/components-family.rst:477
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:435
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:437
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:443
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:453
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:455
+#: ../../build/doc/components-family.rst:471
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:469
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:483
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:486
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:487
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:488
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/contraction-family.po b/locale/en/LC_MESSAGES/contraction-family.po
new file mode 100644
index 0000000..182343c
--- /dev/null
+++ b/locale/en/LC_MESSAGES/contraction-family.po
@@ -0,0 +1,745 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/contraction-family.rst:14
+msgid "Contraction - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:21
+msgid ":ref:`pgr_contractGraph`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:29
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:31
+msgid ""
+"In big graphs, like the road graphs, or electric networks, graph contraction"
+" can be used to speed up some graph algorithms. Contraction reduces the size"
+" of the graph by removing some of the vertices and edges and, for example, "
+"might add edges that represent a sequence of original edges decreasing the "
+"total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:33
+msgid ""
+"This implementation gives a flexible framework for adding contraction "
+"algorithms in the future, currently, it supports two algorithms:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:35
+#: ../../build/doc/contraction-family.rst:46
+msgid "Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:36
+#: ../../build/doc/contraction-family.rst:166
+msgid "Linear contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:38
+msgid "Allowing the user to:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:40
+msgid "Forbid contraction on a set of nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:41
+msgid ""
+"Decide the order of the contraction algorithms and set the maximum number of"
+" times they are to be executed."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:43
+msgid "UNDER DISCUSSION: Forbid contraction on a set of edges"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:47
+msgid "In the algorithm, dead end contraction is represented by 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:50
+msgid "Dead end nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:52
+msgid ""
+"The definition of a dead end node is different for a directed and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:54
+msgid "In case of a undirected graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:56
+msgid "The number of adjacent vertices is 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:58
+msgid "In case of an directed graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:60
+msgid "There are no outgoing edges and has at least one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:61
+msgid "There is one incoming and one outgoing edge with the same identifier."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:64
+#: ../../build/doc/contraction-family.rst:178
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:65
+msgid "The green node ``B`` represents a dead end node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:66
+msgid "The node ``A`` is the only node connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:67
+#: ../../build/doc/contraction-family.rst:181
+msgid ""
+"Node ``A`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:68
+#: ../../build/doc/contraction-family.rst:183
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:86
+msgid "Operation: Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:88
+msgid ""
+"The dead end contraction will stop until there are no more dead end nodes. "
+"For example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:91
+#: ../../build/doc/contraction-family.rst:208
+msgid ""
+"Node ``A`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:92
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:93
+msgid "Node ``B`` is the only node connecting to ``C``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:94
+msgid "The green node ``C`` represents a `Dead End` node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:113
+msgid ""
+"After contracting ``C``, node ``B`` is now a `Dead End` node and is "
+"contracted:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:129
+msgid "Node ``B`` gets contracted"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:143
+msgid "Nodes ``B`` and ``C`` belong to node ``A``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:148
+msgid "Not Dead End nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:150
+msgid "In this graph ``B`` is not a `dead end` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:167
+msgid "In the algorithm, linear contraction is represented by 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:170
+msgid "Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:172
+msgid "A node is considered a linear node if satisfies the following:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:174
+msgid "The number of adjacent vertices are 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:175
+msgid "Should have at least one incoming edge and one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:179
+msgid "The green node ``B`` represents a linear node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:180
+msgid "The nodes ``A`` and ``C`` are the only nodes connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:182
+msgid ""
+"Node ``C`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:203
+msgid "Operation: Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:205
+msgid ""
+"The linear contraction will stop until there are no more linear nodes. For "
+"example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:209
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:210
+msgid ""
+"Node ``C`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:211
+msgid ""
+"Node ``D`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:212
+msgid "The green nodes ``B`` and ``C`` represents `Linear` nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:234
+msgid ""
+"After contracting ``B``, a new edge gets inserted between ``A`` and ``C`` "
+"which is represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:254
+msgid "Node ``C`` is `linear node` and gets contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:272
+msgid ""
+"Nodes ``B`` and ``C`` belong to edge connecting ``A`` and ``D`` which is "
+"represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:275
+msgid "Not Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:277
+msgid "In this graph ``B`` is not a `linear` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:298
+msgid "The cycle"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:300
+msgid ""
+"Contracting a graph, can be done with more than one operation. The order of "
+"the operations affect the resulting contracted graph, after applying one "
+"operation, the set of vertices that can be contracted by another operation "
+"changes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:302
+msgid ""
+"This implementation, cycles ``max_cycles`` times through "
+"``operations_order`` ."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:315
+msgid "Contracting Sample Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:317
+msgid ""
+"In this section, building and using a contracted graph will be shown by "
+"example."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:319
+msgid "The :doc:`sampledata` for an undirected graph is used"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:320
+msgid "a dead end operation first followed by a linear operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:322
+msgid "The original graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:326
+msgid "After doing a dead end contraction operation:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:330
+msgid "Doing a linear contraction operation to the graph above"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:335
+msgid ""
+"There are five cases, in this documentation, which arise when calculating "
+"the shortest path between a given source and target. In this examples, "
+"``pgr_dijkstra`` is used."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:338
+msgid "**Case 1**: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:339
+msgid ""
+"**Case 2**: Source belongs to a contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:340
+msgid ""
+"**Case 3**: Source belongs to a vertex subgraph, while target belongs to an "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:341
+msgid ""
+"**Case 4**: Source belongs to a contracted graph, while target belongs to an"
+" vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:342
+msgid ""
+"**Case 5**: The path contains a new edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:345
+msgid "Construction of the graph in the database"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:348
+msgid "Original Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:349
+msgid ""
+"The following query shows the original data involved in the contraction "
+"operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:356
+msgid "Contraction Results"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:361
+msgid ""
+"The above results do not represent the contracted graph. They represent the "
+"changes done to the graph after applying the contraction algorithm. We can "
+"see that vertices like 6 and 11 do not appear in the contraction results "
+"because they were not affected by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:364
+msgid "step 1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:365
+msgid ""
+"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` "
+"tables:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "The vertices set belonging to the vertex/edge"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+#: ../../build/doc/contraction-family.rst:372
+msgid "**is_contracted**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+msgid ""
+"On a `vertex` table: when ``true`` the vertex is contracted, so is not part "
+"of the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:372
+msgid ""
+"On an `edge` table: when ``true`` the edge was generated by the contraction "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:375
+msgid "Using the following queries:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:382
+msgid "step 2"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:383
+msgid ""
+"For simplicity, in this documentation, store the results of the call to "
+"pgr_contractGraph in a temporary table"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:390
+msgid "step 3"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:391
+msgid ""
+"Update the `vertex` and `edge` tables using the results of the call to "
+"pgr_contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:393
+msgid ""
+"In `edge_table_vertices_pgr.is_contracted` indicate the vertices that are "
+"contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:399
+msgid ""
+"Add to `edge_table_vertices_pgr.contracted_vertices` the contracted "
+"vertices belonging to the vertices."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:405
+msgid "Insert the new edges generated by pgr_contractGraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:412
+msgid "step 3.1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:413
+msgid "Verify visually the updates."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:415
+msgid "On the `edge_table_vertices_pgr`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:421
+msgid "On the `edge_table`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:427
+msgid ""
+"vertices that belong to the contracted graph are the non contracted vertices"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:434
+msgid "case 1: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:435
+msgid ""
+"Inspecting the contracted graph above, vertex 3 and vertex 11 are part of "
+"the contracted graph. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:437
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:438
+#: ../../build/doc/contraction-family.rst:452
+#: ../../build/doc/contraction-family.rst:469
+#: ../../build/doc/contraction-family.rst:485
+#: ../../build/doc/contraction-family.rst:507
+msgid ""
+"when selecting the edges, only edges that have the source and the target in "
+"that set are the edges belonging to the contracted graph, that is done in "
+"the WHERE clause."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:440
+msgid ""
+"Visually, looking at the original graph, going from 3 to 11: 3 -> 6 -> 11, "
+"and in the contracted graph, it is also 3 -> 6 -> 11. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:448
+msgid ""
+"case 2: Source belongs to the contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:452
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 1 belongs to the contracted subgraph of edge 19. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:450
+msgid ""
+"expand1 holds the contracted vertices of the edge where vertex 1 belongs. "
+"(belongs to edge 19)."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:451
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"also the contracted vertices of edge 19."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:454
+msgid ""
+"Visually, looking at the original graph, going from 3 to 1: 3 -> 2 -> 1, and"
+" in the contracted graph, it is also 3 -> 2 -> 1. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:463
+msgid ""
+"case 3: Source belongs to a vertex subgraph, while target belongs to an edge"
+" subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:464
+msgid ""
+"Inspecting the contracted graph above, vertex 7 belongs to the contracted "
+"subgraph of vertex 5 and vertex 13 belongs to the contracted subgraph of "
+"edge 21. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:466
+#: ../../build/doc/contraction-family.rst:483
+msgid ""
+"expand7 holds the contracted vertices of vertex where vertex 7 belongs. "
+"(belongs to vertex 5)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:467
+msgid ""
+"expand13 holds the contracted vertices of edge where vertex 13 belongs. "
+"(belongs to edge 21)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:468
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"contracted vertices of vertex 5 and contracted vertices of edge 21."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:471
+msgid ""
+"Visually, looking at the original graph, going from 7 to 13: 7 -> 8 -> 5 -> "
+"10 -> 13, and in the contracted graph, it is also 7 -> 8 -> 5 -> 10 -> 13. "
+"The results, on the contracted graph match the results as if it was done on "
+"the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:480
+msgid ""
+"case 4: Source belongs to the contracted graph, while target belongs to an "
+"vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:481
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 7 belongs to the contracted subgraph of vertex 5. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:484
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"the contracted vertices of vertex 5."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:487
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, but in the contracted graph, it is 3 -> 5 -> 8 -> 7. The results, on "
+"the contracted graph do not match the results as if it was done on the "
+"original graph. This is because the path contains edge 19 which is added by "
+"the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:495
+msgid "case 5: The path contains an edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:496
+msgid ""
+"In the previous example we can see that the path from vertex 3 to vertex 7 "
+"contains an edge which is added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:502
+msgid ""
+"Inspecting the contracted graph above, edge 19 should be expanded. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:504
+msgid "first_dijkstra holds the results of the dijkstra query."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:505
+msgid ""
+"edges_to_expand holds the edges added by the contraction algorithm and "
+"included in the path."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:506
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"vertices of the contracted solution and the contracted vertices of the edges"
+" added by the contraction algorithm and included in the contracted solution."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:509
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, and in the contracted graph, it is also 3 -> 2 -> 5 -> 8 -> 7. The "
+"results, on the contracted graph match the results as if it was done on the "
+"original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:517
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:519
+msgid ""
+"http://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:520
+msgid "http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:521
+msgid ""
+"The queries use :ref:`pgr_contractGraph` function and the :doc:`sampledata` "
+"network."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:524
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:525
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:526
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/cost-category.po b/locale/en/LC_MESSAGES/cost-category.po
new file mode 100644
index 0000000..efea606
--- /dev/null
+++ b/locale/en/LC_MESSAGES/cost-category.po
@@ -0,0 +1,178 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost-category.rst:13
+msgid "Cost - Category"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:17
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:18
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:20
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:21
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:34
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:36
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:38
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:39
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:40
+msgid ""
+"Returns the sum of the costs of the resulting path(s) for pair combination "
+"of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:44
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:46
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:48
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:50
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:52
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:54
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:56
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:58
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:60
+msgid "Any duplicated value in the `start_vids` or in `end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:62
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:64
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:65
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/costMatrix-category.po b/locale/en/LC_MESSAGES/costMatrix-category.po
new file mode 100644
index 0000000..ad36b5e
--- /dev/null
+++ b/locale/en/LC_MESSAGES/costMatrix-category.po
@@ -0,0 +1,237 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/costMatrix-category.rst:13
+msgid "Cost Matrix - Category"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:17
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:18
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:20
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:21
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:40
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:43
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:45
+msgid ""
+":ref:`tsp` needs as input a symmetric cost matrix and no edge `(u, v)` must "
+"value :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:47
+msgid ""
+"This collection of functions will return a cost matrix in form of a table."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:53
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:55
+msgid "Can be used as input to :ref:`pgr_tsp`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:57
+msgid ""
+"when the resulting matrix is symmetric and there is no :math:`\\infty` "
+"value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:58
+msgid "It will be the users responsibility to make the matrix symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:60
+msgid "By using geometric or harmonic average of the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:61
+msgid "By using max or min the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:62
+msgid ""
+"By setting the upper triangle to be the mirror image of the lower triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:63
+msgid ""
+"By setting the lower triangle to be the mirror image of the upper triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:65
+msgid "It is also the users responsibility to fix an :math:`\\infty` value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:67
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:68
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:69
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:70
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:71
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:73
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:75
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:77
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:79
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:81
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:83
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:85
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:87
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:89
+msgid "Any duplicated value in the `start_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:91
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:93
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:94
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:96
+msgid "Running time: approximately :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:101
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:103
+msgid ":ref:`pgr_tsp`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/cost_result.po b/locale/en/LC_MESSAGES/cost_result.po
new file mode 100644
index 0000000..cfc1232
--- /dev/null
+++ b/locale/en/LC_MESSAGES/cost_result.po
@@ -0,0 +1,92 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost_result.rst:13
+msgid "pgr_costResult[]"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:19 ../../build/doc/cost_result.rst:52
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:21
+msgid ""
+"``pgr_costResult[]`` — A set of records to describe a path result with cost "
+"attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:25 ../../build/doc/cost_result.rst:58
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:37 ../../build/doc/cost_result.rst:71
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:38 ../../build/doc/cost_result.rst:73
+msgid "generic name, to be specified by the function, typically the node id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:39 ../../build/doc/cost_result.rst:74
+msgid "generic name, to be specified by the function, typically the edge id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:40 ../../build/doc/cost_result.rst:75
+msgid "cost attribute"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:46
+msgid "pgr_costResult3[] - Multiple Path Results with Cost"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:54
+msgid ""
+"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
+" attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:72
+msgid "generic name, to be specified by the function, typically the path id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:79
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:80
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:81
+msgid "Replaces ``path_result``"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:87
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/dijkstra-family.po b/locale/en/LC_MESSAGES/dijkstra-family.po
new file mode 100644
index 0000000..a9fa495
--- /dev/null
+++ b/locale/en/LC_MESSAGES/dijkstra-family.po
@@ -0,0 +1,262 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/dijkstra-family.rst:13
+msgid "Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:17
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:18
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:19
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:20
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:21
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:22
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:39
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:42
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:45
+msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:47
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:49
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:51
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:52
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:54
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:57
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:58
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:60
+#: ../../build/doc/dijkstra-family.rst:79
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:62
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:64
+#: ../../build/doc/dijkstra-family.rst:84
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:66
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = \\varnothing \\\\"
+" \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } \\{(source_i, "
+"target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup"
+" \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } "
+"reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:76
+msgid "Undirected graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:77
+msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:81
+msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:86
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, "
+"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } "
+"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ "
+"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & "
+"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost "
+">=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) "
+"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup "
+"\\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:99
+msgid "The problem"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:100
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:102
+msgid ":math:`start_{vid} \\in V` a starting vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:103
+msgid ":math:`end_{vid} \\in V` an ending vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:104
+msgid ""
+":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = "
+"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:109
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:118
+msgid ""
+":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, "
+"agg\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:131
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:121
+msgid ":math:`path\\_seq_i = i`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:122
+msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:123
+msgid ":math:`node_i \\in V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:124
+msgid ":math:`node_1 = start_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:125
+msgid ":math:`node_{| \\pi |} = end_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:126
+msgid ":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:127
+msgid ""
+":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad "
+"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | "
+"\\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:128
+msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:129
+msgid ""
+":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 "
+"\\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad "
+"\\text{when } i \\neq 1 \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:137
+msgid ""
+"In other words: The algorithm returns a the shortest path between "
+":math:`start_{vid}` and :math:`end_{vid}` , if it exists, in terms of a "
+"sequence of nodes and of edges,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:134
+msgid ""
+":math:`path\\_seq` indicates the relative position in the path of the "
+":math:`node` or :math:`edge`."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:135
+msgid ""
+":math:`cost` is the cost of the edge to be used to go to the next node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:136
+msgid ""
+":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:139
+msgid "If there is no path, the resulting set is empty."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:143
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:146
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:147
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:148
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/drivingDistance-category.po b/locale/en/LC_MESSAGES/drivingDistance-category.po
new file mode 100644
index 0000000..a71b4c7
--- /dev/null
+++ b/locale/en/LC_MESSAGES/drivingDistance-category.po
@@ -0,0 +1,52 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/drivingDistance-category.rst:14
+msgid "Driving Distance - Category"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:18
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:19
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:20
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:22
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:23
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:36
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:39
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:40
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:41
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/flow-family.po b/locale/en/LC_MESSAGES/flow-family.po
new file mode 100644
index 0000000..a000199
--- /dev/null
+++ b/locale/en/LC_MESSAGES/flow-family.po
@@ -0,0 +1,331 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Flow - Family of functions"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:19
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:23
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:24
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:45
+msgid "Flow Functions General Information"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:52
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:53
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:54
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:56
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:58
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:59
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:61
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:63
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:64
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:66
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:67
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:72
+msgid ""
+":ref:`pgr_maxFlow <pgr_maxFlow>` is the maximum Flow and that maximum is "
+"guaranteed to be the same on the functions :ref:`pgr_pushRelabel "
+"<pgr_pushRelabel>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`, "
+":ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, but the actual flow "
+"through each edge may vary."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:77
+msgid "Problem definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:79
+msgid ""
+"A flow network is a directed graph where each edge has a capacity and a "
+"flow. The flow through an edge must not exceed the capacity of the edge. "
+"Additionally, the incoming and outgoing flow of a node must be equal except "
+"the for source which only has outgoing flow, and the destination(sink) which"
+" only has incoming flow."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:83
+msgid ""
+"Maximum flow algorithms calculate the maximum flow through the graph and the"
+" flow of each edge."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:85
+msgid ""
+"The maximum flow through the graph is guaranteed to be the same with all "
+"implementations, but the actual flow through each edge may vary. Given the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:89
+msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:91
+msgid ""
+"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, "
+"reverse\\_capacity_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:94
+msgid "Graph definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:95
+msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:97
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:99
+msgid ""
+":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup "
+"target_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:101
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:103
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) "
+"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = "
+"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, "
+"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup "
+"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } "
+"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:111
+msgid "Maximum flow problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:112
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:115
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:116
+msgid ":math:`source\\_vertex \\in V` the source vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:117
+msgid ":math:`sink\\_vertex \\in V` the sink vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:119
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:121
+msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:123
+msgid ""
+":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, "
+"flow_i, residual\\_capacity_i)}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:125
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:127
+msgid ""
+":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their "
+"residual capacity and flow. The maximum flow through the graph can be "
+"obtained by aggregating on the source or sink and summing the flow from/to "
+"it. In particular:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:129
+msgid ":math:`id_i = i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:130
+msgid ":math:`edge\\_id = id_i` in edges_sql"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:131
+msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:135
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:137
+msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/geom_result.po b/locale/en/LC_MESSAGES/geom_result.po
new file mode 100644
index 0000000..e2d89a1
--- /dev/null
+++ b/locale/en/LC_MESSAGES/geom_result.po
@@ -0,0 +1,74 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/geom_result.rst:13
+msgid "pgr_geomResult[]"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:21
+msgid ""
+"``pgr_geomResult[]`` — A set of records to describe a path result with "
+"geometry attribute."
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:25
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:37
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:38 ../../build/doc/geom_result.rst:39
+msgid "generic name, to be specified by the function"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:40
+msgid "geometry attribute"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:44
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:45
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:46
+msgid "Replaces ``geoms``"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:50
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:52
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:56
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:57
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:58
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/index.po b/locale/en/LC_MESSAGES/index.po
new file mode 100644
index 0000000..44ac3e4
--- /dev/null
+++ b/locale/en/LC_MESSAGES/index.po
@@ -0,0 +1,306 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/index.rst:14
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/index.rst:16
+msgid ""
+"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
+"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
+"and other network analysis functionality."
+msgstr ""
+
+#: ../../build/doc/index.rst:18
+msgid "This is the manual for pgRouting |release|."
+msgstr ""
+
+#: ../../build/doc/index.rst:24
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
+"free to use this material any way you like, but we ask that you attribute "
+"credit to the pgRouting Project and wherever possible, a link back to "
+"http://pgrouting.org. For other licenses used in pgRouting see the "
+":ref:`license` page."
+msgstr ""
+
+#: ../../build/doc/index.rst:27
+msgid "General"
+msgstr ""
+
+#: ../../build/doc/index.rst:37
+msgid ":doc:`sampledata` that is used in the examples of this manual."
+msgstr ""
+
+#: ../../build/doc/index.rst:45
+msgid "Pgrouting Concepts"
+msgstr ""
+
+#: ../../build/doc/index.rst:54
+msgid "Reference"
+msgstr ""
+
+#: ../../build/doc/index.rst:55
+msgid ":ref:`pgr_version` - to get pgRouting's version information."
+msgstr ""
+
+#: ../../build/doc/index.rst:64
+msgid ":ref:`Data Types <data_types>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:67
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:68
+msgid ""
+":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
+" path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:69
+msgid ""
+":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:78
+msgid ":ref:`Topology Functions <topology_functions>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:80
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/index.rst:81
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/index.rst:82
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/index.rst:83
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/index.rst:84
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/index.rst:93
+msgid ":ref:`Routing functions <routing_functions>`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:4
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:6
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:7
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:9
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:11
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:13
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:16
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:22
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:32
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/index.rst:108
+msgid "Available Functions but not official pgRouting functions"
+msgstr ""
+
+#: ../../build/doc/index.rst:110
+msgid ":ref:`Stable`"
+msgstr ""
+
+#: ../../build/doc/index.rst:111
+msgid ":ref:`proposed`"
+msgstr ""
+
+#: ../../build/doc/index.rst:121
+msgid ":ref:`Change Log <change_log>`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:3
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:4
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:5
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:6
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:7
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:8
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:9
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:10
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:11
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:12
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:13
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:14
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:16
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:17
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/index.rst:135
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/index.rst:136
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/index.rst:137
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgRouting-concepts.po b/locale/en/LC_MESSAGES/pgRouting-concepts.po
new file mode 100644
index 0000000..34885ba
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgRouting-concepts.po
@@ -0,0 +1,1071 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "pgRouting Concepts"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:0
+msgid "Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "Getting Started"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid ""
+"This is a simple guide to walk you through the steps of getting started with"
+" pgRouting. In this guide we will cover:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:32
+msgid "Create a routing Database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:34
+msgid ""
+"The first thing we need to do is create a database and load pgrouting in the"
+" database. Typically you will create a database for each project. Once you "
+"have a database to work in, your can load your data and build your "
+"application in that database. This makes it easy to move your project later "
+"if you want to to say a production server."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:40
+msgid "For Postgresql 9.2 and later versions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:51
+msgid "Load Data"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:53
+msgid ""
+"How you load your data will depend in what form it comes it. There are "
+"various OpenSource tools that can help you, like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:56
+msgid ""
+"this is a tool for loading OSM data into postgresql with pgRouting "
+"requirements"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:57
+msgid "this is the postgresql shapefile loader"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:58
+msgid "this is a vector data conversion utility"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:59
+msgid "this is a tool for loading OSM data into postgresql"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:61
+msgid ""
+"So these tools and probably others will allow you to read vector data so "
+"that you may then load that data into your database as a table of some kind."
+" At this point you need to know a little about your data structure and "
+"content. One easy way to browse your new data table is with pgAdmin3 or "
+"phpPgAdmin."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:69
+msgid "Build a Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:71
+msgid ""
+"Next we need to build a topology for our street data. What this means is "
+"that for any given edge in your street data the ends of that edge will be "
+"connected to a unique node and to other edges that are also connected to "
+"that same unique node. Once all the edges are connected to nodes we have a "
+"graph that can be used for routing with pgrouting. We provide a tool that "
+"will help with this:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:77
+msgid "this step is not needed if data is loaded with `osm2pgrouting`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:83
+msgid ":ref:`pgr_create_topology`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:88
+msgid "Check the Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:90
+msgid ""
+"There are lots of possible sources for errors in a graph. The data that you "
+"started with may not have been designed with routing in mind. A graph has "
+"some very specific requirements. One is that it is *NODED*, this means that "
+"except for some very specific use cases, each road segment starts and ends "
+"at a node and that in general is does not cross another road segment that it"
+" should be connected to."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:97
+msgid ""
+"There can be other errors like the direction of a one-way street being "
+"entered in the wrong direction. We do not have tools to search for all "
+"possible errors but we have some basic tools that might help."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:109
+msgid ":ref:`pgr_analyze_graph`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:110
+msgid ":ref:`pgr_analyze_oneway`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:111
+msgid ":ref:`pgr_node_network`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:117
+msgid "Compute a Path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:119
+msgid ""
+"Once you have all the preparation work done above, computing a route is "
+"fairly easy. We have a lot of different algorithms that can work with your "
+"prepared road network. The general form of a route query is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:127
+msgid ""
+"As you can see this is fairly straight forward and you can look and the "
+"specific algorithms for the details of the signatures and how to use them. "
+"These results have information like edge id and/or the node id along with "
+"the cost or geometry for the step in the path from *start* to *end*. Using "
+"the ids you can join these result back to your edge table to get more "
+"information about each step in the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:134
+msgid ":ref:`pgr_dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:141
+msgid "Inner Queries"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:146
+msgid ""
+"There are several kinds of valid inner queries and also the columns returned"
+" are depending of the function. Which kind of inner query will depend on the"
+" function(s) requirements. To simplify variety of types, ``ANY-INTEGER`` and"
+" ``ANY-NUMERICAL`` is used."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:152
+#: ../../build/doc/pgRouting-concepts.rst:182
+#: ../../build/doc/pgRouting-concepts.rst:212
+#: ../../build/doc/pgRouting-concepts.rst:269
+#: ../../build/doc/pgRouting-concepts.rst:300
+#: ../../build/doc/pgRouting-concepts.rst:334
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:154
+#: ../../build/doc/pgRouting-concepts.rst:184
+#: ../../build/doc/pgRouting-concepts.rst:214
+#: ../../build/doc/pgRouting-concepts.rst:271
+#: ../../build/doc/pgRouting-concepts.rst:302
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:155
+#: ../../build/doc/pgRouting-concepts.rst:185
+#: ../../build/doc/pgRouting-concepts.rst:215
+#: ../../build/doc/pgRouting-concepts.rst:272
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:162
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:164
+#: ../../build/doc/pgRouting-concepts.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:247
+#: ../../build/doc/pgRouting-concepts.rst:282
+#: ../../build/doc/pgRouting-concepts.rst:314
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:287
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:290
+#: ../../build/doc/pgRouting-concepts.rst:294
+#: ../../build/doc/pgRouting-concepts.rst:319
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:263
+#: ../../build/doc/pgRouting-concepts.rst:264
+#: ../../build/doc/pgRouting-concepts.rst:265
+#: ../../build/doc/pgRouting-concepts.rst:266
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:174
+#: ../../build/doc/pgRouting-concepts.rst:204
+#: ../../build/doc/pgRouting-concepts.rst:257
+#: ../../build/doc/pgRouting-concepts.rst:292
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:178
+#: ../../build/doc/pgRouting-concepts.rst:208
+#: ../../build/doc/pgRouting-concepts.rst:261
+#: ../../build/doc/pgRouting-concepts.rst:296
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:193
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:224
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:227
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:232
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:234
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:236
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:245
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:280
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:312
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:321
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:322
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:328
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:329
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:330
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:336
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:337
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:345
+msgid "Return columns & values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:350
+msgid ""
+"There are several kinds of columns returned are depending of the function."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:355
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:357
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:363
+#: ../../build/doc/pgRouting-concepts.rst:364
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:367
+#: ../../build/doc/pgRouting-concepts.rst:368
+#: ../../build/doc/pgRouting-concepts.rst:385
+#: ../../build/doc/pgRouting-concepts.rst:386
+#: ../../build/doc/pgRouting-concepts.rst:403
+#: ../../build/doc/pgRouting-concepts.rst:404
+#: ../../build/doc/pgRouting-concepts.rst:405
+#: ../../build/doc/pgRouting-concepts.rst:406
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:378
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:380
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:397
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:415
+msgid "Advanced Topics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:423
+msgid "Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:427
+#: ../../build/doc/pgRouting-concepts.rst:528
+msgid "Overview"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:428
+msgid ""
+"Typically when GIS files are loaded into the data database for use with "
+"pgRouting they do not have topology information associated with them. To "
+"create a useful topology the data needs to be \"noded\". This means that "
+"where two or more roads form an intersection there it needs to be a node at "
+"the intersection and all the road segments need to be broken at the "
+"intersection, assuming that you can navigate from any of these segments to "
+"any other segment via that intersection."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:430
+msgid ""
+"You can use the :ref:`graph analysis functions <analytics>` to help you see "
+"where you might have topology problems in your data. If you need to node "
+"your data, we also have a function :ref:`pgr_nodeNetwork() "
+"<pgr_node_network>` that might work for you. This function splits ALL "
+"crossing segments and nodes them. There are some cases where this might NOT "
+"be the right thing to do."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:432
+msgid ""
+"For example, when you have an overpass and underpass intersection, you do "
+"not want these noded, but pgr_nodeNetwork does not know that is the case and"
+" will node them which is not good because then the router will be able to "
+"turn off the overpass onto the underpass like it was a flat 2D intersection."
+" To deal with this problem some data sets use z-levels at these types of "
+"intersections and other data might not node these intersection which would "
+"be ok."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:434
+msgid ""
+"For those cases where topology needs to be added the following functions may"
+" be useful. One way to prep the data for pgRouting is to add the following "
+"columns to your table and then populate them as appropriate. This example "
+"makes a lot of assumption like that you original data tables already has "
+"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
+"that they contain specific data values. This is only to give you an idea of "
+"what you can do with your data."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:455
+msgid ""
+"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
+"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
+"columns. The following example populated the remaining columns. In this "
+"example, the ``fcc`` column contains feature class code and the ``CASE`` "
+"statements converts it to an average speed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:518
+msgid ""
+"Now your database should be ready to use any (most?) of the pgRouting "
+"algorithms."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:524
+msgid "Graph Analytics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:529
+msgid ""
+"It is common to find problems with graphs that have not been constructed "
+"fully noded or in graphs with z-levels at intersection that have been "
+"entered incorrectly. An other problem is one way streets that have been "
+"entered in the wrong direction. We can not detect errors with respect to "
+"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
+"a graph and report them for additional inspections."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:531
+msgid ""
+"We do not current have any visualization tools for these problems, but I "
+"have used mapserver to render the graph and highlight potential problem "
+"areas. Someone familiar with graphviz might contribute tools for generating "
+"images with that."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:535
+msgid "Analyze a Graph"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:537
+msgid ""
+"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
+"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
+"table:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:560
+msgid "In the vertices table \"mytab_vertices_pgr\":"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:562
+msgid "Deadends are identified by ``cnt=1``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:563
+msgid "Potencial gap problems are identified with ``chk=1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:581
+msgid ""
+"For isolated road segments, for example, a segment where both ends are "
+"deadends. you can find these with the following query:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:590
+msgid ""
+"If you want to visualize these on a graphic image, then you can use "
+"something like mapserver to render the edges and the vertices and style "
+"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
+"tool like graphviz, or geoserver or other similar tools."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:594
+msgid "Analyze One Way Streets"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:596
+msgid ""
+":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
+" any flipped segments. Basically if you count the edges coming into a node "
+"and the edges exiting a node the number has to be greater than one."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:598
+msgid ""
+"This query will add two columns to the vertices_tmp table ``ein int`` and "
+"``eout int`` and populate it with the appropriate counts. After running this"
+" on a graph you can identify nodes with potential problems with the "
+"following query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:601
+msgid ""
+"The rules are defined as an array of text strings that if match the ``col`` "
+"value would be counted as true for the source or target in or out condition."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:605
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:607
+msgid ""
+"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
+"might have values like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:609
+msgid "'FT' - oneway from the source to the target node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:610
+msgid "'TF' - oneway from the target to the source node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:611
+msgid "'B' - two way street."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:612
+msgid "'' - empty field, assume twoway."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:613
+msgid "<NULL> - NULL field, use two_way_if_null flag."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:615
+msgid ""
+"Then we could form the following query to analyze the oneway streets for "
+"errors."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:634
+msgid ""
+"Typically these problems are generated by a break in the network, the one "
+"way direction set wrong, maybe an error related to z-levels or a network "
+"that is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:636
+msgid ""
+"The above tools do not detect all network issues, but they will identify "
+"some common problems. There are other problems that are hard to detect "
+"because they are more global in nature like multiple disconnected networks. "
+"Think of an island with a road network that is not connected to the mainland"
+" network because the bridge or ferry routes are missing."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:644
+msgid "Performance Tips"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:651
+msgid "For the Routing functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:653
+msgid ""
+"To get faster results bound your queries to the area of interest of routing "
+"to have, for example, no more than one million rows."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:655
+msgid ""
+"Use an inner query SQL that does not include some edges in the routing "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:663
+msgid "Integrating the inner query to the pgRouting function:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:677
+msgid "For the topology functions:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:679
+msgid ""
+"When \"you know\" that you are going to remove a set of edges from the edges"
+" table, and without those edges you are going to use a routing function you "
+"can do the following:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:681
+msgid "Analize the new topology based on the actual topology:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:687
+msgid "Or create a new topology if the change is permanent:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:698
+msgid "How to contribute"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:701
+msgid "Wiki"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:702
+msgid ""
+"Edit an existing `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_ page."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:703
+msgid "Or create a new Wiki page"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:705
+msgid ""
+"Create a page on the `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:706
+msgid "Give the title an appropriate name"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:709
+msgid ""
+"`Example <https://github.com/pgRouting/pgrouting/wiki/How-to:-Handle-"
+"parallel-edges-(KSP)>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:713
+msgid "Adding Functionaity to pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:714
+msgid ""
+"Consult the `developer's documentation "
+"<http://docs.pgrouting.org/doxy/2.4/index.html>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:719
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:720
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:721
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgRouting-installation.po b/locale/en/LC_MESSAGES/pgRouting-installation.po
new file mode 100644
index 0000000..71b7f5f
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgRouting-installation.po
@@ -0,0 +1,418 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-installation.rst:13
+msgid "Installation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:16
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:17
+msgid ":ref:`install-short`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:18
+msgid ":ref:`install_get_sources`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:19
+msgid ":ref:`install_enable_db`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:20
+msgid ":ref:`install_dependencies`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:21
+msgid ":ref:`install_configuring`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:22
+msgid ":ref:`install_build`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:23
+msgid ":ref:`install_testing`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:25
+msgid ""
+"Instructions for downloading and installing binaries for different Operative"
+" systems instructions and additional notes and corrections not included in "
+"this documentation can be found in `Installation wiki "
+"<https://github.com/pgRouting/pgrouting/wiki/Notes-on-Download%2C-"
+"Installation-and-building-pgRouting>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:27
+msgid ""
+"To use pgRouting postGIS needs to be installed, please read the information "
+"about installation in this `Install Guide "
+"<http://www.postgis.us/presentations/postgis_install_guide_22.html>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:32
+msgid "Short Version"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:37
+msgid "Extracting the tar ball"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:44
+msgid "To compile assuming you have all the dependencies in your search path:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:54
+msgid ""
+"Once pgRouting is installed, it needs to be enabled in each individual "
+"database you want to use it in."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:66
+msgid "Get the sources"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:69
+msgid ""
+"The pgRouting latest release can be found in "
+"https://github.com/pgRouting/pgrouting/releases/latest"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:72
+msgid "wget"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:73
+msgid "To download this release:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:81
+msgid "Goto :ref:`install-short` to the extract and compile instructions."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:84
+msgid "git"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:85
+msgid "To download the repository"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:93
+msgid ""
+"Goto :ref:`install-short` to the compile instructions (there is no tar "
+"ball)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:100
+msgid "Enabling and upgrading in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:103
+msgid "Enabling the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:104
+msgid ""
+"pgRouting is an extension and depends on postGIS. Enabling postGIS before "
+"enabling pgRouting in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:113
+msgid "Upgrading the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:114
+msgid ""
+"To upgrade pgRouting in the database to version 2.4.0 use the following "
+"command:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:122
+msgid ""
+"More information can be found in "
+"https://www.postgresql.org/docs/current/static/sql-createextension.html"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:128
+msgid "Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:131
+msgid "Compilation Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:132
+msgid ""
+"To be able to compile pgRouting, make sure that the following dependencies "
+"are met:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:134
+msgid "C and C++0x compilers * g++ version >= 4.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:136
+msgid "Postgresql version >= 9.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:137
+msgid "PostGIS version >= 2.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:138
+msgid "The Boost Graph Library (BGL). Version >= 1.46"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:139
+msgid "CMake >= 2.8.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:140
+msgid "CGAL >= 4.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:144
+msgid "optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:145
+msgid "For user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:147
+msgid "Sphinx >= 1.1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:148
+msgid "Latex"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:150
+msgid "For developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:152
+msgid "Doxygen >= 1.7"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:154
+msgid "For testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:156
+msgid "pgtap"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:157
+msgid "pg_prove"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:161
+msgid "Example: Installing dependencies on linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:162
+msgid "Installing the compilation dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:174
+msgid "Installing the optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:188
+msgid "Configuring"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:190
+msgid "pgRouting uses the `cmake` system to do the configuration."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:192
+msgid "The build directory is different from the source directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:194
+msgid "Create the build directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:201
+msgid "Configurable variables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:205
+msgid "To see the variables that can be configured"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:213
+msgid "Configuring The Documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:214
+msgid ""
+"Most of the effort of the documentation has being on the HTML files. Some "
+"variables for the documentation:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Variable"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Comment"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "WITH_DOC"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+#: ../../build/doc/pgRouting-installation.rst:223
+#: ../../build/doc/pgRouting-installation.rst:224
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "BOOL=OFF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "Turn on/off building the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "BUILD_HTML"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BOOL=ON"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "If ON, turn on/off building HTML for user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BUILD_DOXY"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "If ON, turn on/off building HTML for developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "BUILD_LATEX"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "If ON, turn on/off building PDF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "BUILD_MAN"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "If ON, turn on/off building MAN pages"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "DOC_USE_BOOTSTRAP"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:228
+msgid "Configuring with documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:234
+msgid "Most of the effort of the documentation has being on the html files."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:240
+msgid "Building"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:242
+msgid "Using ``make`` to build the code and the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:244
+msgid "The following instructions start from *path/to/pgrouting/build*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:253
+msgid ""
+"We have tested on several platforms, For installing or reinstalling all the "
+"steps are needed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:255
+msgid "The sql signatures are configured and build in the ``cmake`` command."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:258
+msgid "MinGW on Windows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:269
+msgid "Linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:270
+msgid "The following instructions start from *path/to/pgrouting*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:280
+msgid "When the configuration changes:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:286
+msgid "and start the build process as mentioned above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:291
+msgid "Testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:293
+msgid "Currently there is no :code:`make test` and testing is done as follows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:295
+msgid "The following instructions start from *path/to/pgrouting/*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:305
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:308
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:309
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:310
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgRouting-introduction.po b/locale/en/LC_MESSAGES/pgRouting-introduction.po
new file mode 100644
index 0000000..2f5927b
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgRouting-introduction.po
@@ -0,0 +1,222 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-introduction.rst:13
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:15
+msgid ""
+"pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL"
+" <http://postgresql.org>`_ geospatial database and adds routing and other "
+"network analysis functionality. A predecessor of pgRouting – pgDijkstra, "
+"written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was "
+"later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to "
+"pgRouting. The project is now supported and maintained by `Georepublic "
+"<http://georepublic.info>`_, `iMaptools <http://imaptools.com/>`__ and a "
+"broad user community."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:17
+msgid ""
+"pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ "
+"project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo"
+" Live <http://live.osgeo.org/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:23
+msgid "License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:25
+msgid "The following licenses can be found in pgRouting:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:30
+msgid "**License**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:32
+msgid "GNU General Public License, version 2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:33
+msgid ""
+"Most features of pgRouting are available under `GNU General Public License, "
+"version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:34
+msgid "Boost Software License - Version 1.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:35
+msgid ""
+"Some Boost extensions are available under `Boost Software License - Version "
+"1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:36
+msgid "MIT-X License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:37
+msgid ""
+"Some code contributed by iMaptools.com is available under MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:38
+msgid "Creative Commons Attribution-Share Alike 3.0 License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:39
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:41
+msgid ""
+"In general license information should be included in the header of each "
+"source file."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:45
+msgid "Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:48
+msgid "This Release Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:51
+#: ../../build/doc/pgRouting-introduction.rst:71
+msgid "Individuals (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:53
+msgid "Maoguang Wang, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:55
+msgid ""
+"And all the people that give us a little of their time making comments, "
+"finding issues, making pull requests etc."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:58
+#: ../../build/doc/pgRouting-introduction.rst:76
+msgid "Corporate Sponsors (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:60
+#: ../../build/doc/pgRouting-introduction.rst:78
+msgid ""
+"These are corporate entities that have contributed developer time, hosting, "
+"or direct monetary funding to the pgRouting project:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:62
+msgid "`Georepublic <https://georepublic.info/en/>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:63
+msgid ""
+"`Google Summer of Code <https://developers.google.com/open-source/gsoc/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:64
+msgid "`iMaptools <http://imaptools.com>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:65
+msgid "`Paragon Corporation <http://www.paragoncorporation.com/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:68
+msgid "Contributors Past & Present:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:73
+msgid ""
+"Akio Takubo, Andrea Nardelli, Anton Patrushev, Ashraf Hossain, Christian "
+"Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki,"
+" Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, "
+"Kai Behncke, Kishore Kumar, Ko Nagase, Manikata Kondeti, Mario Basa, Martin "
+"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Zia, Mukul Priya, Razequl"
+" Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Stephen Woodbridge, "
+"Sylvain Housseman, Sylvain Pasche, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:80
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:81
+msgid "CSIS (University of Tokyo)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:82
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:83
+msgid "Google Summer of Code"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:84
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:85
+msgid "Orkney"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:86
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:90
+msgid "More Information"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:92
+msgid ""
+"The latest software, documentation and news items are available at the "
+"pgRouting web site http://pgrouting.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:93
+msgid ""
+"PostgreSQL database server at the PostgreSQL main site "
+"http://www.postgresql.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:94
+msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:95
+msgid "Boost C++ source libraries at http://www.boost.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:96
+msgid ""
+"Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:97
+msgid ""
+"The Migration guide can be found at "
+"https://github.com/pgRouting/pgrouting/wiki/Migration-Guide."
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_KSP.po b/locale/en/LC_MESSAGES/pgr_KSP.po
new file mode 100644
index 0000000..2ace271
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_KSP.po
@@ -0,0 +1,402 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_KSP.rst:13
+msgid "pgr_KSP"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:18
+msgid "``pgr_KSP`` — Returns the \"K\" shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:28
+msgid "Signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:34
+msgid ""
+"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
+" number of shortest paths desired."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:52
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:64
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:73
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14 ../../build/doc/pgr_KSP.rst:110
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:80
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86 ../../build/doc/pgr_KSP.rst:87
+#: ../../build/doc/pgr_KSP.rst:107 ../../build/doc/pgr_KSP.rst:108
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "**k**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88 ../../build/doc/pgr_KSP.rst:105
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "The desiered number of paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89 ../../build/doc/pgr_KSP.rst:90
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid ""
+"(optional). When ``true`` returns all the paths stored in the process heap. "
+"Default is ``false`` which only returns ``k`` paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:93
+msgid ""
+"Roughly, if the shortest path has ``N`` edges, the heap will contain about "
+"than ``N * k`` paths for small value of ``k`` and ``k > 1``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:98
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:100
+msgid ""
+"Returns set of ``(seq, path_seq, path_id, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid ""
+"Relative position in the path of ``node`` and ``edge``. Has value **1** for "
+"the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid ""
+"Path identifier. The ordering of the paths For two paths i, j if i < j then "
+"agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "Identifier of the node in the path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110 ../../build/doc/pgr_KSP.rst:111
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:115
+msgid ""
+"During the transition to 3.0, because pgr_ksp version 2.0 doesn't have "
+"defined a directed flag nor a heap_path flag, when pgr_ksp is used with only"
+" one flag version 2.0 signature will be used."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:119
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:122
+msgid "Examples to handle the one flag to choose signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:124 ../../build/doc/pgr_KSP.rst:134
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:132
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:143
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:145
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:153
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:155
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:164
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:166
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:173
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:175
+msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:176
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:179
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:180
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:181
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_TSP.po b/locale/en/LC_MESSAGES/pgr_TSP.po
new file mode 100644
index 0000000..a9fecef
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_TSP.po
@@ -0,0 +1,224 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_TSP.rst:13
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:18
+msgid "``pgr_TSP`` - Returns a route that visits all the nodes exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:21
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:22
+msgid "Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:26
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:28
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:30
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:32
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of matrix cell contents. The "
+"matrix information must be symmetrical."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:58
+msgid "Basic Use"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:67
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:96
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:103
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:106
+msgid "Description of the Matrix Cell SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111 ../../build/doc/pgr_TSP.rst:112
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "Cost for going from start_vid to end_vid"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:116
+msgid "Can be Used with:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:118
+msgid ":ref:`pgr_dijkstraCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:119
+msgid ":ref:`pgr_withPointsCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:120
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:121
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:123
+msgid "To generate a symmetric matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:125
+msgid "directed := false."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:127
+msgid ""
+"If using directed := true, the resulting non symmetric matrix must be "
+"converted to symmetric by fixing the non symmetric values according to your "
+"application needs."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:145
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:147
+msgid "Using with points of interest."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:149
+msgid "To generate a symmetric matrix:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:151
+msgid ""
+"the **side** information of pointsOfInterset is ignored by not including it "
+"in the query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:152
+msgid "and **directed := false**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:158
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:163
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:165
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:166
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:167
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:170
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:171
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:172
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_aStar.po b/locale/en/LC_MESSAGES/pgr_aStar.po
new file mode 100644
index 0000000..4e2ccb4
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_aStar.po
@@ -0,0 +1,642 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStar.rst:13
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:18
+msgid "``pgr_aStar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:27
+msgid "pgr_astar(one to one) 2.0.0, Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:28
+msgid "pgr_astar(other signatures) 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:33
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:35
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:37
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:38
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:40
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:46
+msgid "The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:50
+msgid "The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:52
+msgid "When (x,y) coordinates for the same vertex identifier differ:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:54
+msgid "A random selection of the vertex's (x,y) coordinates is used."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:56
+msgid "Running time: :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:84
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:92
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:99
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:112
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:118
+msgid "Undirected using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:130
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:138 ../../build/doc/pgr_aStar.rst:165
+#: ../../build/doc/pgr_aStar.rst:194
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139 ../../build/doc/pgr_aStar.rst:166
+#: ../../build/doc/pgr_aStar.rst:195
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:141
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:144
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:145
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:157
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:166
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:168
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:171
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:172 ../../build/doc/pgr_aStar.rst:201
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:186
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:195
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:197
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:200
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:203
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:217
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13 ../../build/doc/pgr_aStar.rst:234
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:228
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:231
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234 ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235 ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:238
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:239
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:243
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:244
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:245
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:246
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:247
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:248
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250 ../../build/doc/pgr_aStar.rst:251
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:260
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:262
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:263
+msgid ":doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:264
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:265
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:268
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:269
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:270
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_aStarCost.po b/locale/en/LC_MESSAGES/pgr_aStarCost.po
new file mode 100644
index 0000000..41e1637
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_aStarCost.po
@@ -0,0 +1,528 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCost.rst:13
+msgid "pgr_aStarCost -- proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:18
+msgid ""
+"``pgr_aStarCost`` — Returns the aggregate cost shortest path using "
+":ref:`astar` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:26
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:53
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:60
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:72
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:78
+msgid "Setting a Heuristic"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:90
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99
+msgid ""
+"This signature finds a path from one ``start_vid`` to each ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:98 ../../build/doc/pgr_aStarCost.rst:125
+#: ../../build/doc/pgr_aStarCost.rst:154
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99 ../../build/doc/pgr_aStarCost.rst:126
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:101
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:104
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:105
+msgid ""
+"The extra ``end_vid`` column in the result is used to distinguish to which "
+"path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:117
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:126
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:128
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:131
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:132
+msgid ""
+"The extra ``start_vid`` column in the result is used to distinguish to "
+"which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:146
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:157
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:160
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:161
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:163
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:177
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_aStarCost.rst:194 ../../build/doc/pgr_aStarCost.rst:195
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:188
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:191
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:198
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:199
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:203
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:204
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:205
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:206
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:207
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:208
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210 ../../build/doc/pgr_aStarCost.rst:211
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. See "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:224
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:226
+msgid ":ref:`astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:227
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:228
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:229
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:232
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:233
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:234
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_aStarCostMatrix.po b/locale/en/LC_MESSAGES/pgr_aStarCostMatrix.po
new file mode 100644
index 0000000..5193921
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_aStarCostMatrix.po
@@ -0,0 +1,457 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:13
+msgid "pgr_aStarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:18
+msgid ""
+"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:33
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:37
+msgid "Using aStar algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:40
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:57
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:68
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:88
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:90
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "**vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "Array of vertices_identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:115
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:116
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:120
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:121
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:122
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:123
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:124
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:125
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:150
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:152
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:153
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:154
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:155
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_alphaShape.po b/locale/en/LC_MESSAGES/pgr_alphaShape.po
new file mode 100644
index 0000000..851cd18
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_alphaShape.po
@@ -0,0 +1,169 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_alphaShape.rst:13
+msgid "pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:21
+msgid "``pgr_alphaShape`` — Core function for alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:27
+msgid ""
+"Returns a table with (x, y) rows that describe the vertices of an alpha "
+"shape."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:50
+msgid "Returns a vertex record for each row:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:52
+msgid "x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:53
+msgid "y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:55
+msgid ""
+"If a result includes multiple outer/inner rings, return those with separator"
+" row (x=NULL and y=NULL)."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:58
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:59
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:60
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:61
+msgid ""
+"Supported to return multiple outer/inner ring coordinates with separator row"
+" (x=NULL and y=NULL) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:64
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:65
+msgid ""
+"PgRouting's alpha shape implementation has no way to control the order of "
+"the output points, so the actual output might different for the same input "
+"data. The first query, has the output ordered, he second query shows an "
+"example usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:70
+msgid "Example: the (ordered) results"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:76
+msgid "Example: calculating the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:77
+msgid "Steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:79
+msgid "Calculates the alpha shape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:80
+msgid "the :code:`ORDER BY` clause is not used."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:81
+msgid "constructs a polygon"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:82
+msgid "and computes the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:90
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:93
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:95
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:96
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:99
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:100
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:101
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_analyzeGraph.po b/locale/en/LC_MESSAGES/pgr_analyzeGraph.po
new file mode 100644
index 0000000..22237a6
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_analyzeGraph.po
@@ -0,0 +1,361 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeGraph.rst:13
+msgid "pgr_analyzeGraph"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:19
+msgid "``pgr_analyzeGraph`` — Analyzes the network topology."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:25
+#: ../../build/doc/pgr_analyzeGraph.rst:61
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:27
+#: ../../build/doc/pgr_analyzeGraph.rst:63
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:28
+#: ../../build/doc/pgr_analyzeGraph.rst:69
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:43
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:44
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:46
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:47
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:50
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:51
+msgid "The analyze graph function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:53
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:54
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:55
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:56
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:57
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:58
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:59
+msgid ""
+"``text`` Condition to select a subset or rows. Default value is ``true``"
+" to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:65
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:66
+msgid ""
+"Fills completely the ``cnt`` and ``chk`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:67
+msgid ""
+"Returns the analysis of the section of the network defined by "
+"``rows_where``"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:71
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:72
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:73
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:74
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:75
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:79
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:80
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:82
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:84
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:86
+msgid "``integer`` Indicator that the vertex might have a problem."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:87
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:88
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:89
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:92
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:93
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:96
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:99
+msgid "The simplest way to use pgr_analyzeGraph is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:106
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:111
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order: 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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:130
+#: ../../build/doc/pgr_analyzeGraph.rst:208
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:131
+#: ../../build/doc/pgr_analyzeGraph.rst:209
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:141
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:148
+#: ../../build/doc/pgr_analyzeGraph.rst:223
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:149
+msgid ""
+"Selecting rows based on the id. Displays the analysis a the section of the "
+"network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:155
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:161
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:172
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:174
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:183
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:184
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:219
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:224
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:234
+msgid ""
+"Selecting the rows WHERE the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:246
+msgid ""
+"Selecting the rows WHERE the geometry is near the place='myhouse' of the "
+"table ``othertable``. (note the use of quote_literal)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:263
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:390
+msgid "The examples use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:394
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:396
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:397
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:398
+msgid ""
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
+"vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:399
+msgid ""
+":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
+"edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:402
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:403
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:404
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_analyzeOneWay.po b/locale/en/LC_MESSAGES/pgr_analyzeOneWay.po
new file mode 100644
index 0000000..627da76
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_analyzeOneWay.po
@@ -0,0 +1,290 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:13
+msgid "pgr_analyzeOneway"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:19
+msgid ""
+"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:25
+msgid ""
+"This function analyzes oneway streets in a graph and identifies any flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:42
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:44
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:46
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:49
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:50
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:52
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:53
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:56
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:57
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:58
+msgid "``text[]`` source node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:59
+msgid "``text[]`` source node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:60
+msgid "``text[]`` target node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:61
+msgid "``text[]`` target node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:62
+msgid ""
+"``text`` oneway column name name of the network table. Default value is "
+"``oneway``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:63
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:64
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:65
+msgid ""
+"``boolean`` flag to treat oneway NULL values as bi-directional. Default "
+"value is ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:67
+msgid ""
+"It is strongly recommended to use the named notation. See "
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
+":ref:`pgr_createTopology <pgr_create_topology>` for examples."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:70
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:72
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:74
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:75
+msgid ""
+"Fills completely the ``ein`` and ``eout`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:77
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:79
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:80
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:81
+msgid "The names of source , target or oneway are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:83
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:86
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:87
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:89
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:91
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:92
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:93
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:94
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:95
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:96
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:100
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:101
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:105
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:129
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:135
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:136
+msgid ":ref:`analytics` for an overview of the analysis of a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:137
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:138
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_articulationPoints.po b/locale/en/LC_MESSAGES/pgr_articulationPoints.po
new file mode 100644
index 0000000..225a3d6
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_articulationPoints.po
@@ -0,0 +1,316 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_articulationPoints.rst:13
+msgid "pgr_articulationPoints - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:16
+msgid ""
+"``pgr_articulationPoints`` - Return the articulation points of an undirected"
+" graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:32
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph. This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:62
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:93
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_bdAstar.po b/locale/en/LC_MESSAGES/pgr_bdAstar.po
new file mode 100644
index 0000000..fdfaa05
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_bdAstar.po
@@ -0,0 +1,669 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstar.rst:13
+msgid "pgr_bdAstar"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:18
+msgid "``pgr_bdAstar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:27
+msgid "pgr_bdAstar(one to one) 2.0.0, Signature change on 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:28
+msgid "pgr_bdAstar(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:54
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:56
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:57
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:61
+msgid "Avaliability"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:62
+msgid "pgr_bdAstar(one to one) 2.0, signature change on 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:63
+msgid "pgr_bdAstar(other signatures) 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:84
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:85
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:86
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:89
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:102
+msgid "pgr_bdAstar One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+" allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:109
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:110 ../../build/doc/pgr_bdAstar.rst:137
+#: ../../build/doc/pgr_bdAstar.rst:162 ../../build/doc/pgr_bdAstar.rst:186
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111 ../../build/doc/pgr_bdAstar.rst:138
+#: ../../build/doc/pgr_bdAstar.rst:163 ../../build/doc/pgr_bdAstar.rst:187
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:114
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:116
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:127
+msgid "pgr_bdAstar One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:139
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:135 ../../build/doc/pgr_bdAstar.rst:160
+#: ../../build/doc/pgr_bdAstar.rst:184
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:136 ../../build/doc/pgr_bdAstar.rst:161
+#: ../../build/doc/pgr_bdAstar.rst:185
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:141
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:152
+msgid "pgr_bdAstar Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:163
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:165
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:176
+msgid "pgr_bdAstar Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:187
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:189
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:196
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:213
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:215
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:216
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:217
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:218
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:221
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:222
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:223
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_bdAstarCost.po b/locale/en/LC_MESSAGES/pgr_bdAstarCost.po
new file mode 100644
index 0000000..9b72e10
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_bdAstarCost.po
@@ -0,0 +1,594 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCost.rst:13
+msgid "pgr_bdAstarCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:18
+msgid "``pgr_bdAstarCost`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:26
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:46
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:48
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAstarCost`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:49
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:56
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:64
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:72
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:73
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:74
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:77
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:90
+msgid "pgr_bdAstarCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:128
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:97
+#: ../../build/doc/pgr_bdAstarCost.rst:124
+#: ../../build/doc/pgr_bdAstarCost.rst:149
+#: ../../build/doc/pgr_bdAstarCost.rst:173
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:98
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:99
+#: ../../build/doc/pgr_bdAstarCost.rst:126
+#: ../../build/doc/pgr_bdAstarCost.rst:151
+#: ../../build/doc/pgr_bdAstarCost.rst:175
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:127
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:103
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:105
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:116
+msgid "pgr_bdAstarCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:125
+#: ../../build/doc/pgr_bdAstarCost.rst:150
+#: ../../build/doc/pgr_bdAstarCost.rst:174
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:130
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:141
+msgid "pgr_bdAstarCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:154
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:165
+msgid "pgr_bdAstarCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:178
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:185
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:204
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:205
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:206
+msgid ""
+"`Migration Guide <https://github.com/cvvergara/pgrouting/wiki/Migration-"
+"Guide#pgr_bdastar>`_"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:207
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:208
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:211
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:212
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:213
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_bdAstarCostMatrix.po b/locale/en/LC_MESSAGES/pgr_bdAstarCostMatrix.po
new file mode 100644
index 0000000..c8738fa
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_bdAstarCostMatrix.po
@@ -0,0 +1,536 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:13
+msgid "pgr_bdAstarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:18
+msgid ""
+"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdAstar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:68
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:64
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:65
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:66
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:67
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:70
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:82
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:95
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:91
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:92
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:93
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:94
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:97
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:99
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:107
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:135
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_bdDijkstra.po b/locale/en/LC_MESSAGES/pgr_bdDijkstra.po
new file mode 100644
index 0000000..b05e40f
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_bdDijkstra.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstra.rst:13
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:15
+msgid ""
+"``pgr_bdDijkstra`` — Returns the shortest path(s) using Bidirectional "
+"Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:23
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:24
+msgid "pgr_bdDijkstra(one to one) 2.0.0, Signature changed 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:25
+msgid "pgr_bdDijkstra(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:60
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:67
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:80
+msgid "pgr_bdDijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:87
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:89
+#: ../../build/doc/pgr_bdDijkstra.rst:112
+#: ../../build/doc/pgr_bdDijkstra.rst:141
+#: ../../build/doc/pgr_bdDijkstra.rst:170
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:90
+#: ../../build/doc/pgr_bdDijkstra.rst:113
+#: ../../build/doc/pgr_bdDijkstra.rst:142
+#: ../../build/doc/pgr_bdDijkstra.rst:171
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:103
+msgid "pgr_bdDijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:110
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:115
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:118
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:119
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:132
+msgid "pgr_bdDijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:139
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:144
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:147
+#: ../../build/doc/pgr_bdDijkstra.rst:176
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:148
+#: ../../build/doc/pgr_bdDijkstra.rst:177
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:161
+msgid "pgr_bdDijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:173
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:179
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:190
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:208
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:210
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:211
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:212
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:213
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_bdDijkstraCost.po b/locale/en/LC_MESSAGES/pgr_bdDijkstraCost.po
new file mode 100644
index 0000000..0516529
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_bdDijkstraCost.po
@@ -0,0 +1,470 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:13
+msgid "pgr_bdDijkstraCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:15
+msgid ""
+"``pgr_bdDijkstraCost`` — Returns the shortest path(s)'s cost using "
+"Bidirectional Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:23
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:30
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:52
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:59
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:72
+msgid "pgr_bdDijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:80
+#: ../../build/doc/pgr_bdDijkstraCost.rst:102
+#: ../../build/doc/pgr_bdDijkstraCost.rst:130
+#: ../../build/doc/pgr_bdDijkstraCost.rst:158
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:94
+msgid "pgr_bdDijkstraCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:105
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:108
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:109
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:122
+msgid "pgr_bdDijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:133
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:136
+#: ../../build/doc/pgr_bdDijkstraCost.rst:164
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:137
+#: ../../build/doc/pgr_bdDijkstraCost.rst:165
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:150
+msgid "pgr_bdDijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:161
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:167
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:178
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:195
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:197
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:198
+msgid ":ref:`pgr_bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:199
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:200
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:203
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:204
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:205
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po b/locale/en/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
new file mode 100644
index 0000000..0b0a2ae
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
@@ -0,0 +1,382 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:13
+msgid "pgr_bdDijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_bdDijkstraCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdDijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:66
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:86
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:88
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:122
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:124
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:132
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:134
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:135
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:136
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:137
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_biconnectedComponents.po b/locale/en/LC_MESSAGES/pgr_biconnectedComponents.po
new file mode 100644
index 0000000..f4db188
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_biconnectedComponents.po
@@ -0,0 +1,349 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:13
+msgid "pgr_biconnectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:15
+msgid ""
+"``pgr_biconnectedComponents`` — Return the biconnected components of an "
+"undirected graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:31
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:36
+msgid "This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:43
+msgid "Components are described by edges"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:45
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:47
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:48
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:50
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:65
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:78
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:94
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:96
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:97
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:100
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:101
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:102
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_boykovKolmogorov.po b/locale/en/LC_MESSAGES/pgr_boykovKolmogorov.po
new file mode 100644
index 0000000..84d76a4
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_boykovKolmogorov.po
@@ -0,0 +1,435 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:14
+msgid "pgr_boykovKolmogorov - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:20
+msgid ""
+"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that "
+"maximizes the flow from the sources to the targets using Boykov Kolmogorov "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowBoykovKolmogorov"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:42
+msgid "Running time: Polynomial"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:61
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:63
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:84
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:103
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:105
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:124
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:126
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:141
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:159
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:161
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_pushRelabel <pgr_pushRelabel>`, "
+":ref:`pgr_EdmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:162
+msgid "http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_bridges.po b/locale/en/LC_MESSAGES/pgr_bridges.po
new file mode 100644
index 0000000..a80bf4e
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_bridges.po
@@ -0,0 +1,310 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bridges.rst:13
+msgid "pgr_bridges - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:16
+msgid "``pgr_bridges`` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:31
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components. This implementation can only be used with an"
+" undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:40
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:42
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:44
+msgid "Running time: :math:`O(E * (V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:47
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:59
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:72
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:88
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:90
+msgid "http://en.wikipedia.org/wiki/Bridge_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:91
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:94
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:95
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:96
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_connectedComponents.po b/locale/en/LC_MESSAGES/pgr_connectedComponents.po
new file mode 100644
index 0000000..2474096
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_connectedComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_connectedComponents.rst:13
+msgid "pgr_connectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:16
+msgid ""
+"``pgr_connectedComponents`` — Return the connected components of an "
+"undirected graph using a DFS-based approach. In particular, the algorithm "
+"implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:32
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other. This implementation can only be used with an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:39
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:41
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:45
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:46
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:48
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:63
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:76
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:92
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:94
+msgid "http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:95
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:98
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:99
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:100
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_contractGraph.po b/locale/en/LC_MESSAGES/pgr_contractGraph.po
new file mode 100644
index 0000000..8d27664
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_contractGraph.po
@@ -0,0 +1,488 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_contractGraph.rst:13
+msgid "pgr_contractGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:15
+msgid ""
+"``pgr_contractGraph`` — Performs graph contraction and returns the "
+"contracted vertices and edges."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:23
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:32
+msgid ""
+"Contraction reduces the size of the graph by removing some of the vertices "
+"and edges and, for example, might add edges that represent a sequence of "
+"original edges decreasing the total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:52
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:38
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:40
+msgid "There are two types of contraction methods used namely,"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:42
+msgid "Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:43
+msgid "Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:45
+msgid "The values returned include the added edges and contracted vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:47
+msgid "The returned values are ordered as follows:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:49
+msgid "column `id` ascending when type = `v`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:50
+msgid "column `id` descending when type = `e`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:55
+msgid "Signature Summary:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:57
+msgid "The pgr_contractGraph function has the following signatures:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:74
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:80
+msgid "Making a dead end contraction and a linear contraction."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:87
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:93
+msgid ""
+"Making a dead end contraction and a linear contraction and vertex 2 is "
+"forbidden from contraction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_contractGraph.rst:136
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+msgid "**contraction_order**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "Ordered contraction operations."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "1 = Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:114
+msgid "2 = Linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "**forbidden_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid ""
+"(optional). Identifiers of vertices forbidden from contraction. Default is "
+"an empty array."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid "**max_cycles**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid ""
+"(optional). Number of times the contraction operations on "
+"`contraction_order` will be performed. Default is 1."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:118
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:123
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:125
+msgid ""
+"RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:127
+msgid "The function returns a single row. The columns of the row are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "**type**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "Type of the `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "'v' when `id` is an identifier of a vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:135
+msgid "'e' when `id` is an identifier of an edge."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:136
+#: ../../build/doc/pgr_contractGraph.rst:146
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:143
+msgid "Identifier of:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:137
+msgid "the vertex when `type = 'v'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:139
+msgid "The vertex belongs to the edge_table passed as a parameter."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:140
+msgid "the edge when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:142
+msgid "The `id` is a decreasing sequence starting from **-1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:144
+msgid "Representing a pseudo `id` as is not incorporated into the edge_table."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "Array of contracted vertex identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid ""
+"Identifier of the source vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid ""
+"Identifier of the target vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid ""
+"Weight of the edge (`source`, `target`). Valid values when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:152
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:154
+msgid "Only dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:160
+msgid "Only linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:168
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:169
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:170
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_createTopology.po b/locale/en/LC_MESSAGES/pgr_createTopology.po
new file mode 100644
index 0000000..44a282e
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_createTopology.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createTopology.rst:13
+msgid "pgr_createTopology"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:18
+msgid ""
+"``pgr_createTopology`` — Builds a network topology based on the geometry "
+"information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:24
+#: ../../build/doc/pgr_createTopology.rst:72
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:26
+msgid ""
+"``OK`` after the network topology has been built and the vertices table "
+"created."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:27
+msgid "``FAIL`` when the network topology was not built due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:42
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:45
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:46
+msgid "The topology creation function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:48
+msgid "``text`` Network table name. (may contain the schema name AS well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:49
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:50
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:52
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:53
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:54
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:56
+msgid "``boolean`` Clean any previous topology. Default value is ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:60
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:62
+msgid "The ``source`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:63
+msgid "The ``target`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:65
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:67
+msgid "``id``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:68
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:69
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:70
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:74
+msgid "``OK`` after the network topology has been built."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:76
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:77
+msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:78
+msgid ""
+"Fills the source and target columns of the edge table referencing the ``id``"
+" of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:81
+msgid "``FAIL`` when the network topology was not built due to an error:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:83
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:84
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:85
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:86
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:90
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:91
+msgid ""
+"The vertices table is a requirement of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:93
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:95
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:96
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:97
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:98
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:99
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:100
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:103
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:104
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:107
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:110
+msgid "The simplest way to use pgr_createTopology is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:118
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:119
+msgid "We get the same result AS the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``id`` of the table ``ege_table`` is passed to "
+"the function as the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``the_geom`` is passed to the function as the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:136
+#: ../../build/doc/pgr_createTopology.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:137
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:153
+#: ../../build/doc/pgr_createTopology.rst:219
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:154
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:160
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with ``id "
+"= 5``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:166
+#: ../../build/doc/pgr_createTopology.rst:227
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:176
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:178
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:185
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:186
+msgid ""
+"The arguments need to be given in the order described in the parameters."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:188
+msgid ""
+"Note that this example uses clean flag. So it recreates the whole vertices "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropiriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``gid`` of the table ``mytable`` is passed to "
+"the function AS the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``mygeom`` is passed to the function AS the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:206
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:220
+msgid "Based on id:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:235
+msgid "Examples with full output"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:237
+msgid ""
+"This example start a clean topology, with 5 edges, and then its incremented "
+"to the rest of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:243
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:247
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:249
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:250
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:251
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:254
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:255
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:256
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_createVerticesTable.po b/locale/en/LC_MESSAGES/pgr_createVerticesTable.po
new file mode 100644
index 0000000..191059e
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_createVerticesTable.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createVerticesTable.rst:13
+msgid "pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:18
+msgid ""
+"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:24
+#: ../../build/doc/pgr_createVerticesTable.rst:62
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:26
+#: ../../build/doc/pgr_createVerticesTable.rst:64
+msgid "``OK`` after the vertices table has been reconstructed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:27
+#: ../../build/doc/pgr_createVerticesTable.rst:69
+msgid ""
+"``FAIL`` when the vertices table was not reconstructed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:43
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:44
+msgid ""
+"The reconstruction of the vertices table function accepts the following "
+"parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:46
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:47
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:48
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:49
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:50
+msgid ""
+"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
+"to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:54
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:56
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:58
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:59
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:60
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:66
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:67
+msgid ""
+"Fills ``id`` and ``the_geom`` columns of the vertices table based on the "
+"source and target columns of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:71
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:72
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:73
+msgid "The names of source, target are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:74
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:77
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:78
+msgid ""
+"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:80
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:82
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:83
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:84
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:86
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:87
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:90
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:91
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:94
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:97
+msgid "The simplest way to use pgr_createVerticesTable is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:104
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:109
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:111
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:128
+#: ../../build/doc/pgr_createVerticesTable.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:129
+#: ../../build/doc/pgr_createVerticesTable.rst:206
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:139
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:146
+#: ../../build/doc/pgr_createVerticesTable.rst:220
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:147
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:153
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:159
+#: ../../build/doc/pgr_createVerticesTable.rst:243
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:170
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:172
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:180
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:181
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:0
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:216
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:221
+msgid "Selecting rows based on the gid."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:231
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``gid`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:282
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:286
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:288
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:289
+msgid ""
+":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
+"on the geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:290
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:291
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:294
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:295
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:296
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_dijkstra.po b/locale/en/LC_MESSAGES/pgr_dijkstra.po
new file mode 100644
index 0000000..45cbd10
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_dijkstra.po
@@ -0,0 +1,621 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid ""
+"``pgr_dijkstra`` — Returns the shortest path(s) using Dijkstra algorithm. In"
+" particular, the Dijkstra algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:24
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:25
+msgid "pgr_dijkstra(one to one) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:26
+msgid "pgr_dijkstra(other signatures) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:31
+msgid ""
+"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
+"in 1956. It is a graph search algorithm that solves the shortest path "
+"problem for a graph with non-negative edge path costs, producing a shortest "
+"path from a starting vertex (``start_vid``) to an ending vertex "
+"(``end_vid``). This implementation can be used with a directed graph and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:60
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:46
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:50
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:52
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:54
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:56
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:57
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:59
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:63
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:78
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:84
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:91
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:104
+msgid "pgr_dijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:113 ../../build/doc/pgr_dijkstra.rst:136
+#: ../../build/doc/pgr_dijkstra.rst:167 ../../build/doc/pgr_dijkstra.rst:197
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114 ../../build/doc/pgr_dijkstra.rst:137
+#: ../../build/doc/pgr_dijkstra.rst:168 ../../build/doc/pgr_dijkstra.rst:198
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:127
+msgid "pgr_dijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:137
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:139
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:142
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:143
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:158
+msgid "pgr_dijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:170
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:173 ../../build/doc/pgr_dijkstra.rst:203
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:174 ../../build/doc/pgr_dijkstra.rst:204
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:188
+msgid "pgr_dijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:198
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:200
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:206
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:215
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:225
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231 ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232 ../../build/doc/pgr_dijkstra.rst:234
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:236
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:248
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:250
+msgid ""
+"The examples of this section are based on the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:252
+msgid ""
+"The examples include combinations from starting vertices 2 and 11 to ending "
+"vertices 3 and 5 in a directed and undirected graph with and with out "
+"reverse_cost."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:256
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:258
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:267
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:269
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:277
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:279
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:287
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:289
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:297
+msgid "Equvalences between signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:299
+msgid ""
+"For queries marked as ``directed`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:301 ../../build/doc/pgr_dijkstra.rst:313
+msgid "The examples in this section use the following:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:303
+msgid ":ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:311
+msgid ""
+"For queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:315
+msgid ":ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:324
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:326
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:327
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:330
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:331
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:332
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_dijkstraCost.po b/locale/en/LC_MESSAGES/pgr_dijkstraCost.po
new file mode 100644
index 0000000..a9193fb
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_dijkstraCost.po
@@ -0,0 +1,473 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCost.rst:13
+msgid "pgr_dijkstraCost"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:19
+msgid "``pgr_dijkstraCost``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:21
+msgid ""
+"Using Dijkstra algorithm implemented by Boost.Graph, and extract only the "
+"aggregate cost of the shortest path(s) found, for the combination of "
+"vertices given."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:27
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:30
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:31
+msgid "pgr_dijkstraCost(all signatures) 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:33
+msgid ""
+"The ``pgr_dijkstraCost`` algorithm, is a good choice to calculate the sum of"
+" the costs of the shortest path for a subset of pairs of nodes of the graph."
+" We make use of the Boost's implementation of dijkstra which runs in "
+":math:`O(V \\log V + E)` time."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:42
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:43
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:44
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:45
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:47
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:51
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:55
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:57
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:60
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:62
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:64
+msgid "Any duplicated value in the `start_vids` or `end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:66
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:68
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:69
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:74
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:89
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:95
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:97
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:106
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:117
+msgid "pgr_dijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:121
+#: ../../build/doc/pgr_dijkstraCost.rst:150
+#: ../../build/doc/pgr_dijkstraCost.rst:176
+#: ../../build/doc/pgr_dijkstraCost.rst:201
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+#: ../../build/doc/pgr_dijkstraCost.rst:151
+#: ../../build/doc/pgr_dijkstraCost.rst:177
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:141
+msgid "pgr_dijkstraCost One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:152
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:167
+msgid "pgr_dijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:178
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:192
+msgid "pgr_dijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:213
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:229
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:231
+msgid "Demonstration of repeated values are ignored, and result is sorted."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:237
+msgid "Making `start_vids` the same as `end_vids`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:246
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:248
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:249
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:252
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:253
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:254
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_dijkstraCostMatrix.po b/locale/en/LC_MESSAGES/pgr_dijkstraCostMatrix.po
new file mode 100644
index 0000000..95cf121
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_dijkstraCostMatrix.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:13
+msgid "pgr_dijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_dijkstraCostMatrix`` - Calculates the a cost matrix using "
+"pgr_dijktras."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:32
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:36
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:56
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:67
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:79
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:87
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:89
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:97
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:135
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_dijkstraVia.po b/locale/en/LC_MESSAGES/pgr_dijkstraVia.po
new file mode 100644
index 0000000..0a3c5f1
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_dijkstraVia.po
@@ -0,0 +1,480 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraVia.rst:13
+msgid "pgr_dijkstraVia - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:19
+msgid ""
+"``pgr_dijkstraVia`` — Using dijkstra algorithm, it finds the route that goes"
+" through a list of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:30
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:34
+msgid ""
+"Given a list of vertices and a graph, this function is equivalent to finding"
+" the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all"
+" :math:`i < size\\_of(vertex_via)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:37
+msgid "The paths represents the sections of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:39
+msgid "This is a proposed function"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:42
+msgid "Signatrue Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:59
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:67
+msgid "Find the route that visits the vertices 1 3 9 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:77
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:86
+msgid ""
+"Find the route that visits the vertices 1 3 9 in that order on an "
+"undirected graph, avoiding U-turns when possible"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:94
+msgid "Description of the Signature"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+#: ../../build/doc/pgr_dijkstraVia.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "Array of vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid ""
+"(optional) ignores if a subsection of the route is missing and returns "
+"everything it found Default is true (is directed). When set to false the "
+"graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:119
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:121
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "Sequential value starting from 1."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "**path_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "Identifier of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "Sequential value starting from 1 for the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "Identifier of the node in the path from start_vid to end_vid."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid ""
+"Identifier of the edge used to go from node to the next node in the path "
+"sequence. -1 for the last node of the path. -2 for the last node of the "
+"route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the route "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "Total cost from ``start_vid`` to ``end_vid`` of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "**route_agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid ""
+"Total cost from ``start_vid`` of ``path_pid = 1`` to ``end_vid`` of the "
+"current ``path_pid`` ."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:142
+msgid "Find the route that visits the vertices 1 5 3 9 4 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:148
+msgid "What's the aggregate cost of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:154
+msgid ""
+"What's the route's aggregate cost of the route at the end of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:160
+msgid "How are the nodes visited in the route?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:166
+msgid ""
+"What are the aggregate costs of the route when the visited vertices are "
+"reached?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:172
+msgid ""
+"show the route's seq and aggregate cost and a status of \"passes in front\" "
+"or \"visits\" node 9"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:179
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:181
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:182
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:185
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:186
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:187
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_drivingDistance.po b/locale/en/LC_MESSAGES/pgr_drivingDistance.po
new file mode 100644
index 0000000..77f7b8e
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_drivingDistance.po
@@ -0,0 +1,391 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_drivingDistance.rst:13
+msgid "pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:19
+msgid ""
+"``pgr_drivingDistance`` - Returns the driving distance from a start node."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:28
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:29
+msgid "pgr_drivingDistance(single vertex) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:30
+msgid "pgr_drivingDistance(multiple vertices) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:35
+msgid ""
+"Using the Dijkstra algorithm, extracts all the nodes that have costs less "
+"than or equal to the value ``distance``. The edges extracted will conform to"
+" the corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:57
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:70
+msgid "Driving Distance From A Single Starting Vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:82
+msgid "Driving Distance From Multiple Starting Vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:90
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:98
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:123
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "Array of identifiers of the starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+#: ../../build/doc/pgr_drivingDistance.rst:125
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "Upper limit for the inclusion of the node in the result."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid ""
+"(optional). When ``true`` the node will only appear in the closest "
+"``start_vid`` list. Default is ``false`` which resembles several calls "
+"using the single starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:114
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:116
+msgid "Returns set of ``(seq [, start_v], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid ""
+"Identifier of the node in the path within the limits from ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid ""
+"Identifier of the edge used to arrive to ``node``. ``0`` when the ``node`` "
+"is the ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:132
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:135
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:137
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:144
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:146
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:154
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:156
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:165
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:167
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:177
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:178
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:179
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_edgeDisjointPaths.po b/locale/en/LC_MESSAGES/pgr_edgeDisjointPaths.po
new file mode 100644
index 0000000..54a0ffe
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_edgeDisjointPaths.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:14
+msgid "pgr_edgeDisjointPaths - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:19
+msgid ""
+"``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:28
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:36
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:38
+msgid ""
+"Calculates the edge disjoint paths between two groups of vertices. Utilizes "
+"underlying maximum flow algorithms to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:42
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "The main characterics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:45
+msgid "Calculates the edge disjoint paths between any two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:46
+msgid ""
+"Returns EMPTY SET when source and destination are the same, or cannot be "
+"reached."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:47
+msgid "The graph can be directed or undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:48
+msgid "One to many, many to one, many to many versions are also supported."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "Uses :ref:`pgr_boykovKolmogorov` to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:52
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:67
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:73
+msgid "Minimal use"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:81
+msgid ""
+"The minimal use is for a **directed** graph from one ``start_vid`` to one "
+"``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:93
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:98
+msgid ""
+"This signature finds the set of dijoint paths from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:96
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:120
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:149
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:175
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:97
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:121
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:150
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:176
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:117
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:126
+msgid ""
+"This signature finds the sset of disjoint paths from the ``start_vid`` to "
+"each one of the ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:122
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:151
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:177
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_edgeDisjointPaths`."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:123
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:146
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to the ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to each one of the ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:195
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:212
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:214
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:217
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:218
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:219
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_edmondsKarp.po b/locale/en/LC_MESSAGES/pgr_edmondsKarp.po
new file mode 100644
index 0000000..8523277
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_edmondsKarp.po
@@ -0,0 +1,438 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edmondsKarp.rst:14
+msgid "pgr_edmondsKarp - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:20
+msgid ""
+"``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowEdmondsKarp"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:42
+msgid "Running time: :math:`O( V * E ^ 2)`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:64
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:83
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:85
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:104
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:106
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:125
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:127
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:142
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:160
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:162
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_PushRelabel <pgr_pushRelabel>`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:163
+msgid "http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:164
+msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:167
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:168
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:169
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_eucledianTSP.po b/locale/en/LC_MESSAGES/pgr_eucledianTSP.po
new file mode 100644
index 0000000..5b9be5e
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_eucledianTSP.po
@@ -0,0 +1,187 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_eucledianTSP.rst:13
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:18
+msgid ""
+"``pgr_eucledianTSP`` - Returns a route that visits all the coordinates pairs"
+" exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:22
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:24
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:26
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:28
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:30
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of coordinates."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:33
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:48
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:54
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:63
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:75
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:90
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:99
+msgid "Description of the coordinates SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "Identifier of the coordinate. (optional)"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "X value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "Y value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:110
+msgid ""
+"When the value of **id** is not given then the coordinates will receive an "
+"**id** starting from 1, in the order given."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:125
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:127
+msgid "Skipping the Simulated Annealing & showing some process information"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:135
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:139
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:140
+msgid "New in version 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:145
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:147
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:148
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:149
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:152
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:153
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:154
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_floydWarshall.po b/locale/en/LC_MESSAGES/pgr_floydWarshall.po
new file mode 100644
index 0000000..4fe9ece
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_floydWarshall.po
@@ -0,0 +1,348 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_floydWarshall.rst:13
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:18
+msgid ""
+"``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path "
+"for each pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:31
+msgid ""
+"The Floyd-Warshall algorithm, also known as Floyd's algorithm, is a good "
+"choice to calculate the sum of the costs of the shortest path for each pair "
+"of nodes in the graph, for *dense graphs*. We make use of the Boost's "
+"implementation which runs in :math:`\\Theta(V^3)` time,"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:41
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:42
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:43
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:44
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:47
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:49
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:52
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:54
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:56
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "**Recommended, use a bounding box of no more than 3500 edges.**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:70
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:77
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:84
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:95
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:103
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:110
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:118
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:120
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:123
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:131
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:133
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:148
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:149
+msgid "Re-design of pgr_apspWarshall in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:152
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:154
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:155
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:156
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_gsoc_vrppdtw.po b/locale/en/LC_MESSAGES/pgr_gsoc_vrppdtw.po
new file mode 100644
index 0000000..7705842
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_gsoc_vrppdtw.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:13
+msgid "pgr_gsoc_vrppdtw - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:19
+msgid ""
+"``pgr_gsoc_vrppdtw`` — Returns a solution for `Pick and Delivery` with `time"
+" windows` Vehicle Routing Problem"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:27
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:36
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:43
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:52
+msgid "Example: Show the id1"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:59
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:62
+msgid "Description of the sql query"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "Identifier of the customer."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:69
+msgid "A value of ``0`` identifies the starting location"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "``X`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "``Y`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "**demand**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "How much is added / removed from the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:75
+msgid "Negative value is a delivery,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:76
+msgid "Positive value is a pickup,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "**openTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "The time relative to 0, when the customer opens."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "**closeTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "The time relative to 0, when the customer closes."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "**serviceTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "The duration of the loading / unloading."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid "**pIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid ""
+"Value used when the current customer is a Delivery to find the corresponding"
+" Pickup"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "**dIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid ""
+"Value used when the current customer is a Pickup to find the corresponding "
+"Delivery"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:86
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "**vehicle_num**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "Maximum number of vehicles in the result. (currently is ignored)"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "Capacity of the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:97
+msgid "Description of the result"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:99
+msgid "RETURNS SET OF pgr_costResult[]:"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "**id1**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "Current vehicle identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "**id2**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "Customer identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid ""
+"Previous ``cost`` plus `travel time` plus `wait time` plus `service time`."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:108
+msgid ""
+"when ``id2 = 0`` for the second time for the same ``id1``, then has the "
+"total time for the current ``id1``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:114
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:117
+msgid "Example: Total number of rows returned"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:123
+msgid "Example: Results for only id1 values: 1, 5, and 9"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:130
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:132
+msgid "The examples use :ref:`pickDeliverData`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:133
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:136
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:137
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:138
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_johnson.po b/locale/en/LC_MESSAGES/pgr_johnson.po
new file mode 100644
index 0000000..d0ef00b
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_johnson.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_johnson.rst:13
+msgid "pgr_johnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:18
+msgid ""
+"``pgr_johnson`` - Returns the sum of the costs of the shortest path for each"
+" pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspJohnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:31
+msgid ""
+"The Johnson algorithm, is a good choice to calculate the sum of the costs of"
+" the shortest path for each pair of nodes in the graph, for *sparse graphs*."
+" It usees the Boost's implementation which runs in :math:`O(V E \\log V)` "
+"time,"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:57
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:40
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:41
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:42
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:43
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:46
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:48
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:51
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:53
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:55
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:60
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:69
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:83
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:94
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:102
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:135
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:117
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:119
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:122
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:130
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:132
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137 ../../build/doc/pgr_johnson.rst:138
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:147
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:148
+msgid "Re-design of pgr_apspJohnson in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:153
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:154
+msgid ""
+"`Boost Johnson "
+"<http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html>`_ "
+"algorithm implementation."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:155
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_labelGraph.po b/locale/en/LC_MESSAGES/pgr_labelGraph.po
new file mode 100644
index 0000000..e5d6532
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_labelGraph.po
@@ -0,0 +1,233 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_labelGraph.rst:15
+msgid "pgr_labelGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:18
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:20
+msgid ""
+"``pgr_labelGraph`` — Locates and labels sub-networks within a network which "
+"are not topologically connected."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:30
+msgid ""
+"Must be run after ``pgr_createTopology()``. No use of ``geometry`` column. "
+"Only ``id``, ``source`` and ``target`` columns are required."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:32
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:34
+msgid ""
+"``OK`` when a column with provided name has been generated and populated "
+"successfully. All connected edges will have unique similar integer values. "
+"In case of ``rows_where`` condition, non participating rows will have -1 "
+"integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:35
+msgid ""
+"``FAIL`` when the processing cannot be finished due to some error. Notice "
+"will be thrown accordingly."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:36
+msgid ""
+"``rows_where condition generated 0 rows`` when passed SQL condition has not "
+"been fulfilled by any row."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:48
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:50
+msgid ""
+"A network behind any routing query may consist of sub-networks completely "
+"isolated from each other. Possible reasons could be:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:52
+msgid "An island with no bridge connecting to the mainland."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:53
+msgid ""
+"An edge or mesh of edges failed to connect to other networks because of "
+"human negligence during data generation."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:54
+msgid "The data is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:55
+msgid "Topology creation failed to succeed."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:57
+msgid ""
+"pgr_labelGraph() will create an integer column (with the name provided by "
+"the user) and will assign same integer values to all those edges in the "
+"network which are connected topologically. Thus better analysis regarding "
+"network structure is possible. In case of ``rows_where`` condition, non "
+"participating rows will have -1 integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:59
+msgid ""
+"Prerequisites: Must run ``pgr_createTopology()`` in order to generate "
+"``source`` and ``target`` columns. Primary key column ``id`` should also be "
+"there in the network table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:62
+msgid "Function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:64
+msgid "``text`` Network table name, with optional schema name."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:65
+msgid ""
+"``text`` Primary key column name of the network table. Default is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:66
+msgid ""
+"``text`` Source column name generated after ``pgr_createTopology()``. "
+"Default is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:67
+msgid ""
+"``text`` Target column name generated after ``pgr_createTopology()``. "
+"Default is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:68
+msgid ""
+"``text`` Column name which will hold the integer labels for each sub-graph. "
+"Default is ``subgraph``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:69
+msgid ""
+"``text`` The SQL where condition. Default is ``true``, means the processing "
+"will be done on the whole table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:75
+msgid "Example Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:77
+msgid "The sample data, has 3 subgraphs."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:87
+msgid ""
+"`pgr_createTopology "
+"<https://github.com/Zia-/pgrouting/blob/develop/src/common/sql/pgrouting_topology.sql>`_"
+" to create the topology of a table based on its geometry and tolerance "
+"value."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_lineGraph.po b/locale/en/LC_MESSAGES/pgr_lineGraph.po
new file mode 100644
index 0000000..7b69209
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_lineGraph.po
@@ -0,0 +1,387 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_lineGraph.rst:13
+msgid "pgr_lineGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:15
+msgid ""
+"``pgr_lineGraph`` — Transforms a given graph into its corresponding edge-"
+"based graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:31
+msgid "Given a graph G, its line graph L(G) is a graph such that:-"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:33
+msgid "each vertex of L(G) represents an edge of G"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:34
+msgid ""
+"two vertices of L(G) are adjacent if and only if their corresponding edges "
+"share a common endpoint in G."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:36
+msgid ""
+"The following figures show a graph (left, with blue vertices) and its Line "
+"Graph (right, with green vertices)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:39
+msgid "|first|"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:55
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:61
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:68
+msgid "The minimal signature is for a **directed** graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "This signature returns the Line Graph of the current graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:89
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:101
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:109
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:116
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:120
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:122
+msgid "RETURNS SETOF (seq, source, target, cost, reverse_cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129 ../../build/doc/pgr_lineGraph.rst:133
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "Identifier of the source vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:131
+msgid "When `negative`: the source is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "Identifier of the target vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:135
+msgid "When `negative`: the target is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137 ../../build/doc/pgr_lineGraph.rst:141
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "Weight of the edge (`source`, `target`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:139
+msgid ""
+"When `negative`: edge (`source`, `target`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "Weight of the edge (`target`, `source`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:143
+msgid ""
+"When `negative`: edge (`target`, `source`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:147
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:154
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:156
+msgid "https://en.wikipedia.org/wiki/Line_graph"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:157
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:160
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:161
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:162
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_maxCardinalityMatch.po b/locale/en/LC_MESSAGES/pgr_maxCardinalityMatch.po
new file mode 100644
index 0000000..4c6c884
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_maxCardinalityMatch.po
@@ -0,0 +1,357 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:13
+msgid "pgr_maxCardinalityMatch - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:19
+msgid ""
+"``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a"
+" graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:32
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:33
+msgid "Renamed 2.5.0, Previous name pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:34
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:39
+msgid ""
+"A matching or independent edge set in a graph is a set of edges without "
+"common vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:40
+msgid ""
+"A maximum matching is a matching that contains the largest possible number "
+"of edges."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:42
+msgid "There may be many maximum matchings."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:43
+msgid "Calculates **one** possible maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:45
+msgid "The graph can be **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:46
+msgid "Running time: :math:`O( E*V * \\alpha(E,V))`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:48
+msgid ":math:`\\alpha(E,V)` is the inverse of the `Ackermann function`_."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:54
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:71
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:78
+msgid ""
+"The minimal use calculates one possible maximum cardinality matching on a "
+"**directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:90
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:98
+msgid ""
+"The complete signature calculates one possible maximum cardinality matching."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:113
+msgid "Description of the SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:115
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid "**going**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "``ANY-NUMERIC``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid ""
+"A positive value represents the existence of the edge (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "**coming**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid ""
+"A positive value represents the existence of the edge (target, source)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:127
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:129
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:130
+msgid "SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:133
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "(optional) Determines the type of the graph. Default TRUE."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:143
+msgid "Description of the Result"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "Identifier of the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "Identifier of the second end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:155
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:157
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:158
+msgid "http://www.boost.org/libs/graph/doc/maximum_matching.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:159
+msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:160
+msgid "https://en.wikipedia.org/wiki/Ackermann_function"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:163
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:164
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:165
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_maxFlow.po b/locale/en/LC_MESSAGES/pgr_maxFlow.po
new file mode 100644
index 0000000..0327a6f
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_maxFlow.po
@@ -0,0 +1,354 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "pgr_maxFlow - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:19
+msgid ""
+"``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the "
+"source(s) to the targets(s) using the Push Relabel algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:28
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:36
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:37
+msgid ""
+"When the maximum flow is 0 then there is no flow and **0** is returned."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:39
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:41
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:42
+msgid "Uses the :ref:`pgr_pushRelabel <pgr_pushRelabel>` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:44
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:47
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:64
+msgid "Calculates the maximum flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:84
+msgid "Calculates the maximum flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:104
+msgid "Calculates the maximum flow from all the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:122
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:124
+msgid ""
+"Calculates the maximum flow from all of the `sources` to all of the "
+"`targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:138
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:149
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155 ../../build/doc/pgr_maxFlow.rst:157
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156 ../../build/doc/pgr_maxFlow.rst:158
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:166
+msgid "Description of the return value"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "Maximum flow possible from the source(s) to the target(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:177
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:178
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:179
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_nodeNetwork.po b/locale/en/LC_MESSAGES/pgr_nodeNetwork.po
new file mode 100644
index 0000000..b9b92db
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_nodeNetwork.po
@@ -0,0 +1,353 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_nodeNetwork.rst:13
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:18
+msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:20
+msgid "Nicolas Ribot"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:21
+msgid "Nicolas Ribot, The source code is released under the MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:27
+msgid ""
+"The function reads edges from a not \"noded\" network table and writes the "
+"\"noded\" edges into a new table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:39
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:41
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:43
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:45
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:47
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:49
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:50
+msgid "``float8`` tolerance for coincident points (in projection unit)dd"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:52
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:53
+msgid "``text`` Suffix for the new table's. Default value is ``noded``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:55
+msgid "The output table will have for ``edge_table_noded``"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:57
+msgid "``bigint`` Unique identifier for the table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:58
+msgid "``bigint`` Identifier of the edge in original table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:59
+msgid "``integer`` Segment number of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:60
+msgid ""
+"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:61
+msgid ""
+"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:62
+msgid "``geometry`` Geometry column of the noded network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:65
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:66
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:70
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:72
+msgid "Let's create the topology for the data in :doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:90
+msgid "Now we can analyze the network."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:114
+msgid ""
+"The analysis tell us that the network has a gap and an intersection. We try "
+"to fix the problem using:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:136
+msgid ""
+"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
+"segmented"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:166
+msgid "We can create the topology of the new network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:184
+msgid "Now let's analyze the new topology"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:210
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:243
+msgid "Comparing the results"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:245
+msgid "Comparing with the Analysis in the original edge_table, we see that."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "Before"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "After"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "Table name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table_noded"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "All original fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Has only basic fields to do a topology analysis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1,6,24"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:255
+msgid "Edges with 2 dead ends 17,18"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:257
+msgid ""
+"Edge 17's right node is a dead end because there is no other edge sharing "
+"that same node. (cnt=1)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "No Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:263
+msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid "Gaps"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"There is a gap between edge 17 and 14 because edge 14 is near to the right "
+"node of edge 17"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
+"tolerance value was taken in account"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Intersections"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Edges 13 and 18 were intersecting"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid ""
+"Edges were segmented, So, now in the interection's point there is a node and"
+" the following edges share it: 13-1 13-2 18-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:274
+msgid ""
+"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
+"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
+"with tho following steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:276
+msgid ""
+"Add a column old_id into edge_table, this column is going to keep track the "
+"id of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:277
+msgid ""
+"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:290
+msgid "We recreate the topology:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:310
+msgid ""
+"To get the same analysis results as the topology of edge_table_noded, we do "
+"the following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:337
+msgid ""
+"To get the same analysis results as the original edge_table, we do the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:362
+msgid ""
+"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
+"is an under pass and there is also a street level juction, and the same "
+"happens with edges 17 and 13."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:389
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:391
+msgid ""
+":ref:`topology` for an overview of a topology for routing algorithms. "
+":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
+":ref:`pgr_create_topology` to create a topology based on the geometry. "
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:397
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:398
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:399
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_pointsAsPolygon.po b/locale/en/LC_MESSAGES/pgr_pointsAsPolygon.po
new file mode 100644
index 0000000..356d85b
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_pointsAsPolygon.po
@@ -0,0 +1,124 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:13
+msgid "pgr_pointsAsPolygon"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:21
+msgid ""
+"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:27
+msgid "Returns the alpha shape as (multi)polygon geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:50
+msgid "Returns a (multi)polygon geometry (with holes)."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:54
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:55
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:56
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:57
+msgid ""
+"Supported to return a (multi)polygon geometry (with holes) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:61
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:62
+msgid ""
+"In the following query there is no way to control which point in the polygon"
+" is the first in the list, so you may get similar but different results than"
+" the following which are also correct."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:69
+msgid "The query use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:73
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:75
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:76
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:79
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:80
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:81
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_pushRelabel.po b/locale/en/LC_MESSAGES/pgr_pushRelabel.po
new file mode 100644
index 0000000..13e8a04
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_pushRelabel.po
@@ -0,0 +1,439 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pushRelabel.rst:14
+msgid "pgr_pushRelabel - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:20
+msgid ""
+"``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowPushRelabel"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:41
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:60
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:62
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:81
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:83
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:104
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:123
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:125
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:140
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:158
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:160
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_edmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:161
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:162
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_strongComponents.po b/locale/en/LC_MESSAGES/pgr_strongComponents.po
new file mode 100644
index 0000000..6f6c0cf
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_strongComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_strongComponents.rst:13
+msgid "pgr_strongComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:15
+msgid ""
+"``pgr_strongComponents`` — Return the strongly connected components of a "
+"directed graph using Tarjan's algorithm based on DFS. In particular, the "
+"algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:31
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other. This implementation can only be used "
+"with a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:40
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:42
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:44
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:62
+msgid "The signature is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:93
+msgid "http://en.wikipedia.org/wiki/Strongly_connected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_trsp.po b/locale/en/LC_MESSAGES/pgr_trsp.po
new file mode 100644
index 0000000..108f0f8
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_trsp.po
@@ -0,0 +1,281 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_trsp.rst:13
+msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:22
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:24
+msgid ""
+"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:30
+msgid ""
+"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
+"can optionally take into account complicated turn restrictions like those "
+"found in real world navigable road networks. Performamnce wise it is nearly "
+"as fast as the A* search but has many additional features like it works with"
+" edges rather than the nodes of the network. Returns a set of "
+":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
+"make up a path."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:57
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:59
+msgid ""
+"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
+"shooting star in that you can specify turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:61
+msgid ""
+"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
+"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
+"This provides an easy way of adding turn restrictions to a road network by "
+"placing them in a separate table."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:64 ../../build/doc/pgr_trsp.rst:120
+msgid ""
+"a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:71 ../../build/doc/pgr_trsp.rst:127
+msgid "``int4`` identifier of the edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:72 ../../build/doc/pgr_trsp.rst:128
+msgid "``int4`` identifier of the source vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:73 ../../build/doc/pgr_trsp.rst:129
+msgid "``int4`` identifier of the target vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:74 ../../build/doc/pgr_trsp.rst:130
+msgid ""
+"``float8`` value, of the edge traversal cost. A negative cost will prevent "
+"the edge from being inserted in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:75 ../../build/doc/pgr_trsp.rst:131
+msgid ""
+"(optional) the cost for the reverse traversal of the edge. This is only used"
+" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
+"above remark about negative costs)."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:77
+msgid "``int4`` **NODE id** of the start point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:78
+msgid "``int4`` **NODE id** of the end point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:79 ../../build/doc/pgr_trsp.rst:134
+msgid "``true`` if the graph is directed"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:80 ../../build/doc/pgr_trsp.rst:135
+msgid ""
+"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
+"will be used for the cost of the traversal of the edge in the opposite "
+"direction."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:82 ../../build/doc/pgr_trsp.rst:137
+msgid ""
+"(optional) a SQL query, which should return a set of rows with the following"
+" columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:88 ../../build/doc/pgr_trsp.rst:143
+msgid "``float8`` turn restriction cost"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:89 ../../build/doc/pgr_trsp.rst:144
+msgid "``int4`` target id"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:90
+msgid ""
+"``text`` comma separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:92
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** of source and target "
+"together with a fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:94
+msgid "``int4`` **EDGE id** of the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:95
+msgid "``float8`` fraction of 1 defines the position on the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:96
+msgid "``int4`` **EDGE id** of the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:97
+msgid "``float8`` fraction of 1 defines the position on the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:99 ../../build/doc/pgr_trsp.rst:152
+msgid "Returns set of :ref:`type_cost_result`:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:101 ../../build/doc/pgr_trsp.rst:154
+msgid "row sequence"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:102 ../../build/doc/pgr_trsp.rst:156
+msgid "node ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:103 ../../build/doc/pgr_trsp.rst:157
+msgid "edge ID (``-1`` for the last row)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:104
+msgid "cost to traverse from ``id1`` using ``id2``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:107 ../../build/doc/pgr_trsp.rst:162
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:108
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:111
+msgid "Support for Vias"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:113
+msgid ""
+"The Support for Vias functions are prototypes. Not all corner cases are "
+"being considered."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:116
+msgid ""
+"We also have support for vias where you can say generate a from A to B to C,"
+" etc. We support both methods above only you pass an array of vertices or "
+"and array of edges and percentage position along the edge in two arrays."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:133
+msgid ""
+"``int4[]`` An ordered array of **NODE id** the path will go through from "
+"start to end."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:145
+msgid ""
+"``text`` commar separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:147
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** together with a "
+"fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:149
+msgid "``int4`` An ordered array of **EDGE id** that the path has to traverse"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:150
+msgid ""
+"``float8`` An array of fractional positions along the respective edges in "
+"``eids``, where 0.0 is the start of the edge and 1.0 is the end of the "
+"eadge."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:155
+msgid "route ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:158
+msgid "cost to traverse from ``id2`` using ``id3``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:163
+msgid "Via Support prototypes new in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:166
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:168
+msgid "**Without turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:175
+msgid "**With turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:177
+msgid "Then a query with turn restrictions is created as:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:184
+msgid "An example query using vertex ids and via points:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:191
+msgid "An example query using edge ids and vias:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:198
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:204
+msgid ":ref:`type_cost_result`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:207
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:208
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:209
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_version.po b/locale/en/LC_MESSAGES/pgr_version.po
new file mode 100644
index 0000000..5a6623a
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_version.po
@@ -0,0 +1,130 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_version.rst:13
+msgid "pgr_version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:21
+msgid "``pgr_version`` — Query for pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:27
+msgid "Returns a table with pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:35 ../../build/doc/pgr_version.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:37
+msgid "Returns a table with:"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "**version**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42 ../../build/doc/pgr_version.rst:43
+#: ../../build/doc/pgr_version.rst:44 ../../build/doc/pgr_version.rst:45
+#: ../../build/doc/pgr_version.rst:46
+msgid "``varchar``"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "pgRouting version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "**tag**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "Git tag of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "**hash**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "Git hash of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "**branch**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "Git branch of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "**boost**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "Boost version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:51
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:52
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:56
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:58
+msgid "Query for full version string"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:66
+msgid "Query for ``version`` and ``boost`` attribute"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:78
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:81
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:82
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:83
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_vrpOneDepot.po b/locale/en/LC_MESSAGES/pgr_vrpOneDepot.po
new file mode 100644
index 0000000..a0c5006
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_vrpOneDepot.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:14
+msgid "pgr_vrpOneDepot - Experimental"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:21
+msgid "**No documentation available**"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:24
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:28
+msgid "Current Result"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:34
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:41
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:43
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:46
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:47
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:48
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_withPoints.po b/locale/en/LC_MESSAGES/pgr_withPoints.po
new file mode 100644
index 0000000..be629d4
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_withPoints.po
@@ -0,0 +1,665 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPoints.rst:13
+msgid "pgr_withPoints - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:19
+msgid ""
+"``pgr_withPoints`` - Returns the shortest path in a graph with additional "
+"temporary vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, find the shortest path(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:43
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:45
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:51
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path. -"
+" The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path: - The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:59
+msgid ""
+"For optimization purposes, any duplicated value in the start_vids or "
+"end_vids are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:60
+msgid ""
+"The returned values are ordered: - start_vid ascending - end_vid ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:64
+msgid "Running time: :math:`O(|start\\_vids|\\times(V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:68
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:81
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:87
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:90
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:91
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid ""
+"No **details** are given about distance of other points of points_sql query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:100
+msgid "From point 1 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:110
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:120
+msgid "From point 1 to vertex 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:132
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:141
+msgid "From point 1 to point 3 and vertex 5"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:153
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:162
+msgid "From point 1 and vertex 2 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:182
+msgid "From point 1 and vertex 2 to point 3 and vertex 7"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:192
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPoints.rst:249
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPoints.rst:222
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:207
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:211
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:221
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid ""
+"(optional). When ``true`` the results will include the points in points_sql "
+"that are in the path. Default is ``false`` which ignores other points of the"
+" points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:231
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:233
+msgid ""
+"Returns set of ``(seq, [path_seq,] [start_vid,] [end_vid,] node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "Path sequence that indicates the relative position on the path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+#: ../../build/doc/pgr_withPoints.rst:241
+#: ../../build/doc/pgr_withPoints.rst:242
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "Identifier of the ending vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:242
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "Identifier of the node:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:243
+msgid "A positive value indicates the node is a vertex of edges_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "A negative value indicates the node is a point of points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:249
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:262
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **right** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:268
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **left** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:274
+msgid ""
+"Many to many example with a twist: on undirected graph and showing details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:281
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:286
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:287
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:291
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:293
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:296
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:297
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:298
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_withPointsCost.po b/locale/en/LC_MESSAGES/pgr_withPointsCost.po
new file mode 100644
index 0000000..f478ccd
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_withPointsCost.po
@@ -0,0 +1,603 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCost.rst:13
+msgid "pgr_withPointsCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:19
+msgid ""
+"``pgr_withPointsCost`` - Calculates the shortest path and returns only the "
+"aggregate cost of the shortest path(s) found, for the combination of points "
+"given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, return only the aggregate cost of the shortest path(s) found."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:79
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:44
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:45
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"vertices in the modified graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:51
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:52
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:54
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:58
+msgid "The `agg_cost` in the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:60
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:62
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:64
+msgid ""
+"If the values returned are stored in a table, the unique index would be the "
+"pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:67
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:69
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:71
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:73
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:75
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:76
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:78
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:82
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:92
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:96
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:102
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:105
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:124
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:145
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:166
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:185
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:204
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCost.rst:234
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:219
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:223
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:233
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:241
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:243
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "Identifier of the ending point. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:256
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:258
+msgid "With **right** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:264
+msgid "With **left** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:270
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:277
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:282
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:283
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:287
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:289
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:292
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:293
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:294
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_withPointsCostMatrix.po b/locale/en/LC_MESSAGES/pgr_withPointsCostMatrix.po
new file mode 100644
index 0000000..c9bb20f
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_withPointsCostMatrix.po
@@ -0,0 +1,472 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:13
+msgid "pgr_withPointsCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:19
+msgid ""
+"``pgr_withPointsCostMatrix`` - Calculates the shortest path and returns only"
+" the aggregate cost of the shortest path(s) found, for the combination of "
+"points given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:31
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:35
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:45
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:87
+msgid "returning a symmetrical cost matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:89
+msgid "Using the default **side** value on the **points_sql** query"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:90
+msgid "Using an undirected graph"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:91
+msgid "Using the default **driving_side** value"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:100
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:128
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:116
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:127
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:153
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:154
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:155
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:156
+msgid "`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_withPointsDD.po b/locale/en/LC_MESSAGES/pgr_withPointsDD.po
new file mode 100644
index 0000000..95b4be1
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_withPointsDD.po
@@ -0,0 +1,552 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsDD.rst:13
+msgid "pgr_withPointsDD - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:19
+msgid ""
+"``pgr_withPointsDD`` - Returns the driving distance from a starting point."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:37
+msgid ""
+"Modify the graph to include points and using Dijkstra algorithm, extracts "
+"all the nodes and points that have costs less than or equal to the value "
+"``distance`` from the starting point. The edges extracted will conform the "
+"corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:60
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:63
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:64
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:84
+msgid "Driving distance from a single point"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:86
+#: ../../build/doc/pgr_withPointsDD.rst:106
+msgid "Finds the driving distance depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:94
+msgid "Right side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:104
+msgid "Driving distance from many starting points"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:118
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsDD.rst:169
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsDD.rst:147
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:134
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:138
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "Starting point id"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "Distance from the start_pid"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+#: ../../build/doc/pgr_withPointsDD.rst:150
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid ""
+"(optional). Value in ['b', 'r', 'l', NULL] indicating if the driving side "
+"is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:146
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid ""
+"(optional). When ``true`` the nodes will only appear in the closest start_v "
+"list. Default is ``false`` which resembles several calls using the single "
+"starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:157
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:159
+msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid ""
+"Identifier of the node within the Distance from ``start_pid``. If ``details "
+"=: true`` a negative value is the identifier of a point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid "``-1`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:169
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "``0`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:180
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:182
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:184
+msgid "Left side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:190
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:199
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:204
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:205
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:209
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:211
+msgid ":ref:`pgr_drivingDistance` - Driving distance using dijkstra."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:212
+msgid ":ref:`pgr_alphashape` - Alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:213
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/pgr_withPointsKSP.po b/locale/en/LC_MESSAGES/pgr_withPointsKSP.po
new file mode 100644
index 0000000..8202877
--- /dev/null
+++ b/locale/en/LC_MESSAGES/pgr_withPointsKSP.po
@@ -0,0 +1,571 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsKSP.rst:13
+msgid "pgr_withPointsKSP - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:19
+msgid ""
+"``pgr_withPointsKSP`` - Find the K shortest paths using Yen's algorithm."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:32
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:36
+msgid ""
+"Modifies the graph to include the points defined in the ``points_sql`` and "
+"using Yen algorithm, finds the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:41
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:56
+msgid "Minimal Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "The minimal usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:60
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:61
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "No **heap paths** are returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:82
+msgid "Finds the K shortest paths depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:91
+msgid "With details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsKSP.rst:130
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:115
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "**start_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "Starting point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "**end_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "Ending point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "**K**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "Number of shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid ""
+"(optional). When ``true`` the paths calculated to get the shortests paths "
+"will be returned also. Default is ``false`` only the K shortest paths are "
+"returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:129
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:139
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:141
+msgid ""
+"Returns set of ``(seq, path_id, path_seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid ""
+"Relative position in the path of node and edge. Has value 1 for the "
+"beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid ""
+"Path identifier. The ordering of the paths: For two paths i, j if i < j then"
+" agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid ""
+"Identifier of the node in the path. Negative values are the identifiers of a"
+" point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:164
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:166
+msgid "Left side driving topology with details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:172
+msgid "Right side driving topology with heap paths and details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:178
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:181
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:182
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:186
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:188
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:191
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:192
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:193
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/proposed.po b/locale/en/LC_MESSAGES/proposed.po
new file mode 100644
index 0000000..9f1a6f4
--- /dev/null
+++ b/locale/en/LC_MESSAGES/proposed.po
@@ -0,0 +1,410 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/proposed.rst:13
+msgid "Stable Proposed Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:20
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:22
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:23
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:24
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:25
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:26
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:27
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:33
+msgid "As part of the :ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:35
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` Use pgr_dijkstra to calculate a cost matrix."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:36
+msgid ""
+":ref:`pgr_dijkstraVia` - Use pgr_dijkstra to make a route via vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:39
+msgid "Families"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:40
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:3
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:4
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:5
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:46
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:3
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:5
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:52
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:3
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:4
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:5
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:58
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:3
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:4
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:9
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:64
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:3
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:4
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:5
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:6
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:7
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:71
+msgid "categories"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:72
+msgid ":ref:`Cost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:3
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:4
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:6
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:7
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:78
+msgid ":ref:`CostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:3
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:4
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:6
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:7
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:84
+msgid ":ref:`KSP`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:3
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:4
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:106
+msgid "Experimental Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:111
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:113
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:114
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:116
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:117
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:118
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:119
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:120
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:121
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:122
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:123
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:124
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:125
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:126
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:127
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:132
+msgid ":ref:`contraction` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:134
+msgid ""
+":ref:`pgr_contractgraph` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:138
+msgid "Graph Analysis"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:139
+msgid ":ref:`pgr_labelGraph` - Analyze / label subgraphs within a network"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:141
+msgid ":ref:`components` - Analyze components within a graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:143
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:144
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:145
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:146
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:147
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:150
+msgid "VRP"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:151
+msgid ":ref:`pgr_gsocvrppdtw`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:152
+msgid ":ref:`pgr_vrp_basic`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:166
+msgid "Graph Transformation"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:167
+msgid ":doc:`pgr_lineGraph`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:178
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:179
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:180
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/release_notes.po b/locale/en/LC_MESSAGES/release_notes.po
new file mode 100644
index 0000000..f4a09f7
--- /dev/null
+++ b/locale/en/LC_MESSAGES/release_notes.po
@@ -0,0 +1,1278 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/release_notes.rst:13
+msgid "Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ""
+"To see the full list of changes check the list of `Git commits "
+"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid "Table of contents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:21
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:22
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:23
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:24
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:25
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:26
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:27
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:28
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:29
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:30
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:31
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:32
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:33
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:34
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:35
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:36
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:43
+msgid "pgRouting 2.5.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:45
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.5.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.5.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:49
+msgid "enhancement:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:50
+msgid "pgr_version is now on SQL language"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:53
+msgid "Breaking change on:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:54
+msgid "pgr_edgeDisjointPaths:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:56
+msgid "Added path_id, cost and agg_cost columns on the result"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:57
+msgid "Parameter names changed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:58
+msgid "The many version results are the union of the one to one version"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:61
+msgid "New Signatures:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:62
+msgid "pgr_bdAstar(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:65 ../../build/doc/release_notes.rst:223
+msgid "New Proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:66
+msgid "pgr_bdAstar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:67
+msgid "pgr_bdAstar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:68
+msgid "pgr_bdAstar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:69
+msgid "pgr_bdAstarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:70
+msgid "pgr_bdAstarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:71
+msgid "pgr_bdAstarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:72
+msgid "pgr_bdAstarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:73
+msgid "pgr_bdAstarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:74
+msgid "pgr_bdDijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:75
+msgid "pgr_bdDijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:76
+msgid "pgr_bdDijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:77
+msgid "pgr_bdDijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:78
+msgid "pgr_bdDijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:79
+msgid "pgr_bdDijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:80
+msgid "pgr_bdDijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:81
+msgid "pgr_bdDijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:82
+msgid "pgr_lineGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:83
+msgid "pgr_connectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:84
+msgid "pgr_strongComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:85
+msgid "pgr_biconnectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:86
+msgid "pgr_articulationPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:87
+msgid "pgr_bridges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:90 ../../build/doc/release_notes.rst:160
+#: ../../build/doc/release_notes.rst:247
+msgid "Deprecated Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:91
+msgid "pgr_bdastar - use pgr_bdAstar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:94
+msgid "Renamed Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:95
+msgid "pgr_maxFlowPushRelabel - use pgr_pushRelabel instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:96
+msgid "pgr_maxFlowEdmondsKarp -use pgr_edmondsKarp instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:97
+msgid "pgr_maxFlowBoykovKolmogorov - use pgr_boykovKolmogorov instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:98
+msgid "pgr_maximumCardinalityMatching - use pgr_maxCardinalityMatch instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:101
+msgid "Deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:102
+msgid "pgr_pointToEdgeNode"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:108
+msgid "pgRouting 2.4.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:110
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.2 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.2%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:113
+msgid "Improvement"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:114
+msgid "Works for postgreSQL 10"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:117 ../../build/doc/release_notes.rst:131
+#: ../../build/doc/release_notes.rst:168 ../../build/doc/release_notes.rst:522
+#: ../../build/doc/release_notes.rst:529 ../../build/doc/release_notes.rst:550
+#: ../../build/doc/release_notes.rst:557
+msgid "Bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:118
+msgid "Fixed: Unexpected error column \"cname\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:119
+msgid ""
+"Replace __linux__ with __GLIBC__ for glibc-specific headers and functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:126
+msgid "pgRouting 2.4.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:128
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.1 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.1%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:132
+msgid "Fixed compiling error on macOS"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:133
+msgid "Condition error on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:138
+msgid "pgRouting 2.4.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:140
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.4.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.4.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:143 ../../build/doc/release_notes.rst:213
+#: ../../build/doc/release_notes.rst:374
+msgid "New Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:144
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:148
+msgid "New Proposed Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:149
+msgid "pgr_maxFlow"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:150
+msgid "pgr_astar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:151
+msgid "pgr_astar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:152
+msgid "pgr_astar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:153
+msgid "pgr_astarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:154
+msgid "pgr_astarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:155
+msgid "pgr_astarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:156
+msgid "pgr_astarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:157
+msgid "pgr_astarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:161
+msgid "pgr_bddijkstra - use pgr_bdDijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:164 ../../build/doc/release_notes.rst:253
+msgid "Deprecated Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:165
+msgid "pgr_pointsToVids"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:169
+msgid "Bug fixes on proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:171
+msgid "pgr_withPointsKSP: fixed ordering"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:173
+msgid "TRSP original code is used with no changes on the compilation warnings"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:178
+msgid "pgRouting 2.3.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:180
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:183 ../../build/doc/release_notes.rst:199
+#: ../../build/doc/release_notes.rst:269 ../../build/doc/release_notes.rst:282
+#: ../../build/doc/release_notes.rst:293 ../../build/doc/release_notes.rst:305
+#: ../../build/doc/release_notes.rst:424 ../../build/doc/release_notes.rst:455
+msgid "Bug Fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:184
+msgid "Fixed pgr_gsoc_vrppdtw crash when all orders fit on one truck."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:185
+msgid "Fixed pgr_trsp:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:187
+msgid "Alternate code is not executed when the point is in reality a vertex"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:188
+msgid "Fixed ambiguity on seq"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:194
+msgid "pgRouting 2.3.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:196
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.1%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:200
+msgid "Leaks on proposed max_flow functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:201
+msgid "Regression error on pgr_trsp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:202
+msgid "Types discrepancy on pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:208
+msgid "pgRouting 2.3.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:210
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:214
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:215
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:218 ../../build/doc/release_notes.rst:330
+msgid "New Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:219
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:224
+msgid "pgr_dijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:225
+msgid "pgr_withPointsCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:226
+msgid "pgr_maxFlowPushRelabel(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:227
+msgid "pgr_maxFlowPushRelabel(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:228
+msgid "pgr_maxFlowPushRelabel(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:229
+msgid "pgr_maxFlowPushRelabel(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:230
+msgid "pgr_maxFlowEdmondsKarp(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:231
+msgid "pgr_maxFlowEdmondsKarp(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:232
+msgid "pgr_maxFlowEdmondsKarp(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:233
+msgid "pgr_maxFlowEdmondsKarp(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:234
+msgid "pgr_maxFlowBoykovKolmogorov (one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:235
+msgid "pgr_maxFlowBoykovKolmogorov (one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:236
+msgid "pgr_maxFlowBoykovKolmogorov (many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:237
+msgid "pgr_maxFlowBoykovKolmogorov (many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:238
+msgid "pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:239
+msgid "pgr_edgeDisjointPaths(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:240
+msgid "pgr_edgeDisjointPaths(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:241
+msgid "pgr_edgeDisjointPaths(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:242
+msgid "pgr_edgeDisjointPaths(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:243
+msgid "pgr_contractGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:248
+msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:249
+msgid "pgr_astar - use pgr_aStar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:254
+msgid "pgr_flip_edges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:255
+msgid "pgr_vidsToDmatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:256
+msgid "pgr_pointsToDMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:257
+msgid "pgr_textToPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:264
+msgid "pgRouting 2.2.4 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:266
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.4 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.4%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:270
+msgid "Bogus uses of extern \"C\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:271
+msgid "Build error on Fedora 24 + GCC 6.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:272
+msgid "Regression error pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:277
+msgid "pgRouting 2.2.3 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:279
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.3 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.3%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:283
+msgid "Fixed compatibility issues with PostgreSQL 9.6."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:288
+msgid "pgRouting 2.2.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:290
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:294
+msgid "Fixed regression error on pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:300
+msgid "pgRouting 2.2.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:302
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A2.2.1+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:306
+msgid "Server crash fix on pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:307
+msgid "Bug fix on With Points family of functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:313
+msgid "pgRouting 2.2.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:315
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:319 ../../build/doc/release_notes.rst:387
+msgid "Improvements"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:320
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:322
+msgid "Adding a row_where and outall optional parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:324
+msgid "Signature fix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:326
+msgid "pgr_dijkstra -- to match what is documented"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:331
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:332
+msgid "pgr_Johnson"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:333
+msgid "pgr_dijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:334
+msgid "pgr_dijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:335
+msgid "pgr_dijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:336
+msgid "pgr_dijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:339 ../../build/doc/release_notes.rst:391
+msgid "Proposed functionality"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:340
+msgid "pgr_withPoints(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:341
+msgid "pgr_withPoints(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:342
+msgid "pgr_withPoints(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:343
+msgid "pgr_withPoints(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:344
+msgid "pgr_withPointsCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:345
+msgid "pgr_withPointsCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:346
+msgid "pgr_withPointsCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:347
+msgid "pgr_withPointsCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:348
+msgid "pgr_withPointsDD(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:349
+msgid "pgr_withPointsDD(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:350
+msgid "pgr_withPointsKSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:351
+msgid "pgr_dijkstraVia"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:355
+msgid "Deprecated functions:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:356
+msgid "pgr_apspWarshall use pgr_floydWarshall instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:357
+msgid "pgr_apspJohnson use pgr_Johnson instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:358
+msgid "pgr_kDijkstraCost use pgr_dijkstraCost instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:359
+msgid "pgr_kDijkstraPath use pgr_dijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:362
+msgid "Renamed and deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:363
+msgid "pgr_makeDistanceMatrix renamed to _pgr_makeDistanceMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:369
+msgid "pgRouting 2.1.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:371
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.1.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:375
+msgid "pgr_dijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:376
+msgid "pgr_dijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:377
+msgid "pgr_dijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:378
+msgid "pgr_drivingDistance(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:381
+msgid "Refactored"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:382
+msgid "pgr_dijkstra(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:383
+msgid "pgr_ksp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:384
+msgid "pgr_drivingDistance(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:388
+msgid ""
+"pgr_alphaShape function now can generate better (multi)polygon with holes "
+"and alpha parameter."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:392
+msgid ""
+"Proposed functions from Steve Woodbridge, (Classified as Convenience by the "
+"author.)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:394
+msgid ""
+"pgr_pointToEdgeNode - convert a point geometry to a vertex_id based on "
+"closest edge."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:395
+msgid ""
+"pgr_flipEdges - flip the edges in an array of geometries so the connect end "
+"to end."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:396
+msgid ""
+"pgr_textToPoints - convert a string of x,y;x,y;... locations into point "
+"geometries."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:397
+msgid ""
+"pgr_pointsToVids - convert an array of point geometries into vertex ids."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:398
+msgid ""
+"pgr_pointsToDMatrix - Create a distance matrix from an array of points."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:399 ../../build/doc/release_notes.rst:400
+msgid ""
+"pgr_vidsToDMatrix - Create a distance matrix from an array of vertix_id."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:402
+msgid "Added proposed functions from GSoc Projects:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:404
+msgid "pgr_vrppdtw"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:405
+msgid "pgr_vrponedepot"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:408
+msgid "Deprecated functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:409
+msgid "pgr_getColumnName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:410
+msgid "pgr_getTableName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:411
+msgid "pgr_isColumnCndexed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:412
+msgid "pgr_isColumnInTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:413
+msgid "pgr_quote_ident"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:414
+msgid "pgr_versionless"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:415
+msgid "pgr_startPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:416
+msgid "pgr_endPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:417
+msgid "pgr_pointToId"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:420
+msgid "No longer supported"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:421
+msgid "Removed the 1.x legacy functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:425
+msgid "Some bug fixes in other functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:429
+msgid "Refactoring Internal Code"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:430
+msgid "A C and C++ library for developer was created"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:432
+msgid "encapsulates postgreSQL related functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:433
+msgid "encapsulates Boost.Graph graphs"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:435
+msgid "Directed Boost.Graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:436
+msgid "Undirected Boost.graph."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:438
+msgid "allow any-integer in the id's"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:439
+msgid "allow any-numerical on the cost/reverse_cost columns"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:441
+msgid ""
+"Instead of generating many libraries: - All functions are encapsulated in "
+"one library - The library has the prefix 2-1-0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:450
+msgid "pgRouting 2.0.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:452
+msgid "Minor bug fixes."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:456
+msgid "No track of the bug fixes were kept."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:462
+msgid "pgRouting 2.0.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:464
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.0.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.0.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:466
+msgid ""
+"With the release of pgRouting 2.0.0 the library has abandoned backwards "
+"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. The main "
+"Goals for this release are:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:469
+msgid "Major restructuring of pgRouting."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:470
+msgid "Standardization of the function naming"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:471
+msgid "Preparation of the project for future development."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:473
+msgid "As a result of this effort:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:475
+msgid "pgRouting has a simplified structure"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:476
+msgid "Significant new functionality has being added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:477
+msgid "Documentation has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:478
+msgid "Testing has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:479
+msgid "And made it easier for multiple developers to make contributions."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:483
+msgid "Important Changes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:484
+msgid ""
+"Graph Analytics - tools for detecting and fixing connection some problems in"
+" a graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:485
+msgid "A collection of useful utility functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:486
+msgid ""
+"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:487
+msgid ""
+"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
+"pgr_bdDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:488
+msgid "One to many nodes search (pgr_kDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:489
+msgid "K alternate paths shortest path (pgr_ksp)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:490
+msgid ""
+"New TSP solver that simplifies the code and the build process (pgr_tsp), "
+"dropped \"Gaul Library\" dependency"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:491
+msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:492
+msgid "Dropped support for Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:493
+msgid ""
+"Built a test infrastructure that is run before major code changes are "
+"checked in"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:494
+msgid ""
+"Tested and fixed most all of the outstanding bugs reported against 1.x that "
+"existing in the 2.0-dev code base."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:495
+msgid "Improved build process for Windows"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:496
+msgid ""
+"Automated testing on Linux and Windows platforms trigger by every commit"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:497
+msgid "Modular library design"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:498
+msgid "Compatibility with PostgreSQL 9.1 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:499
+msgid "Compatibility with PostGIS 2.0 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:500
+msgid "Installs as PostgreSQL EXTENSION"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:501
+msgid "Return types re factored and unified"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:502
+msgid "Support for table SCHEMA in function parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:503
+msgid "Support for ``st_`` PostGIS function prefix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:504
+msgid "Added ``pgr_`` prefix to functions and types"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:505
+msgid "Better documentation: http://docs.pgrouting.org"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:506
+msgid "shooting_star is discontinued"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:513
+msgid "pgRouting 1.x Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:515
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for 1.x "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+1.x%22+is%3Aclosed>`_"
+" on Github. The following release notes have been copied from the previous "
+"``RELEASE_NOTES`` file and are kept as a reference."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:520
+msgid "Changes for release 1.05"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:526
+msgid "Changes for release 1.03"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:528
+msgid "Much faster topology creation"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:533
+msgid "Changes for release 1.02"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:535 ../../build/doc/release_notes.rst:542
+msgid "Shooting* bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:536
+msgid "Compilation problems solved"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:540
+msgid "Changes for release 1.01"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:546
+msgid "Changes for release 1.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:548
+msgid "Core and extra functions are separated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:549
+msgid "Cmake build process"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:554
+msgid "Changes for release 1.0.0b"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:556
+msgid "Additional SQL file with more simple names for wrapper functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:561
+msgid "Changes for release 1.0.0a"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:563
+msgid "Shooting* shortest path algorithm for real road networks"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:564
+msgid "Several SQL bugs were fixed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:568
+msgid "Changes for release 0.9.9"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:570
+msgid "PostgreSQL 8.2 support"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:571
+msgid ""
+"Shortest path functions return empty result if they could not find any path"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:575
+msgid "Changes for release 0.9.8"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:577
+msgid "Renumbering scheme was added to shortest path functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:578
+msgid "Directed shortest path functions were added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:579
+msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/routingFunctions.po b/locale/en/LC_MESSAGES/routingFunctions.po
new file mode 100644
index 0000000..3242809
--- /dev/null
+++ b/locale/en/LC_MESSAGES/routingFunctions.po
@@ -0,0 +1,134 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/routingFunctions.rst:15
+msgid "Routing Functions"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:21
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:23
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:28
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:30
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:33
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:39
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:41
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:43
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:49
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/sampledata.po b/locale/en/LC_MESSAGES/sampledata.po
new file mode 100644
index 0000000..2ded9cd
--- /dev/null
+++ b/locale/en/LC_MESSAGES/sampledata.po
@@ -0,0 +1,152 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/sampledata.rst:11
+msgid "Sample Data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:13
+msgid ""
+"The documentation provides very simple example queries based on a small "
+"sample network. To be able to execute the sample queries, run the following "
+"SQL commands to create a table with a small network data set."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:18
+msgid "Create table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:25
+msgid "Insert data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:32
+msgid "Topology"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:33
+msgid ""
+"Before you test a routing function use this query to create a topology "
+"(fills the ``source`` and ``target`` columns)."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:40
+msgid "Points of interest"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:41
+msgid "When points outside of the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:42
+msgid "Used with the :ref:`withPoints` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:49
+msgid "Restrictions"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:50
+msgid "Used with the :ref:`trsp` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:57
+msgid "Categories"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:58
+msgid "Used with the :ref:`maxFlow` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:65
+msgid "Vertex table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:66
+msgid "Used in some deprecated signatures or deprecated functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:74
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:76
+msgid "Red arrows correspond when ``cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:77
+msgid "Blue arrows correspond when ``reverse_cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:78
+msgid "Points are outside the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:79
+msgid "Click on the graph to enlarge."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:84
+msgid ""
+"Network for queries marked as ``directed`` and ``cost`` and ``reverse_cost``"
+" columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:86
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"vehicles."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:91
+msgid "**Graph 1: Directed, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:96
+msgid ""
+"Network for queries marked as ``undirected`` and ``cost`` and "
+"``reverse_cost`` columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:98
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"pedestrians."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:104
+msgid "**Graph 2: Undirected, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:109
+msgid ""
+"Network for queries marked as ``directed`` and only ``cost`` column is used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:116
+msgid "**Graph 3: Directed, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:121
+msgid ""
+"Network for queries marked as ``undirected`` and only ``cost`` column is "
+"used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:127
+msgid "**Graph 4: Undirected, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:134
+msgid "Pick & Deliver Data"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/support.po b/locale/en/LC_MESSAGES/support.po
new file mode 100644
index 0000000..4082646
--- /dev/null
+++ b/locale/en/LC_MESSAGES/support.po
@@ -0,0 +1,177 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/support.rst:13
+msgid "Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:15
+msgid ""
+"pgRouting community support is available through the `pgRouting website "
+"<http://pgrouting.org/support.html>`_, `documentation "
+"<http://docs.pgrouting.org>`_, tutorials, mailing lists and others. If "
+"you’re looking for :ref:`commercial support <support_commercial>`, find "
+"below a list of companies providing pgRouting development and consulting "
+"services."
+msgstr ""
+
+#: ../../build/doc/support.rst:19
+msgid "Reporting Problems"
+msgstr ""
+
+#: ../../build/doc/support.rst:21
+msgid ""
+"Bugs are reported and managed in an `issue tracker "
+"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
+"steps:"
+msgstr ""
+
+#: ../../build/doc/support.rst:23
+msgid ""
+"Search the tickets to see if your problem has already been reported. If so, "
+"add any extra context you might have found, or at least indicate that you "
+"too are having the problem. This will help us prioritize common issues."
+msgstr ""
+
+#: ../../build/doc/support.rst:24
+msgid ""
+"If your problem is unreported, create a `new issue "
+"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
+msgstr ""
+
+#: ../../build/doc/support.rst:25
+msgid ""
+"In your report include explicit instructions to replicate your issue. The "
+"best tickets include the exact SQL necessary to replicate a problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:26
+msgid ""
+"If you can test older versions of PostGIS for your problem, please do. On "
+"your ticket, note the earliest version the problem appears."
+msgstr ""
+
+#: ../../build/doc/support.rst:27
+msgid ""
+"For the versions where you can replicate the problem, note the operating "
+"system and version of pgRouting, PostGIS and PostgreSQL."
+msgstr ""
+
+#: ../../build/doc/support.rst:28
+msgid ""
+"It is recommended to use the following wrapper on the problem to pin point "
+"the step that is causing the problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:39
+msgid "Mailing List and GIS StackExchange"
+msgstr ""
+
+#: ../../build/doc/support.rst:41
+msgid ""
+"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
+"server:"
+msgstr ""
+
+#: ../../build/doc/support.rst:43
+msgid ""
+"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
+msgstr ""
+
+#: ../../build/doc/support.rst:44
+msgid ""
+"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
+"dev"
+msgstr ""
+
+#: ../../build/doc/support.rst:46
+msgid ""
+"For general questions and topics about how to use pgRouting, please write to"
+" the user mailing list."
+msgstr ""
+
+#: ../../build/doc/support.rst:48
+msgid ""
+"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
+" tag the question with ``pgrouting``. Find all questions tagged with "
+"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
+"or subscribe to the `pgRouting questions feed "
+"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
+msgstr ""
+
+#: ../../build/doc/support.rst:54
+msgid "Commercial Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:56
+msgid ""
+"For users who require professional support, development and consulting "
+"services, consider contacting any of the following organizations, which have"
+" significantly contributed to the development of pgRouting:"
+msgstr ""
+
+#: ../../build/doc/support.rst:61
+msgid "**Company**"
+msgstr ""
+
+#: ../../build/doc/support.rst:62
+msgid "**Offices in**"
+msgstr ""
+
+#: ../../build/doc/support.rst:63
+msgid "**Website**"
+msgstr ""
+
+#: ../../build/doc/support.rst:64
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/support.rst:65
+msgid "Germany, Japan"
+msgstr ""
+
+#: ../../build/doc/support.rst:66
+msgid "https://georepublic.info"
+msgstr ""
+
+#: ../../build/doc/support.rst:67
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/support.rst:68 ../../build/doc/support.rst:71
+msgid "United States"
+msgstr ""
+
+#: ../../build/doc/support.rst:69
+msgid "http://imaptools.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:70
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/support.rst:72
+msgid "http://www.paragoncorporation.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:73
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/support.rst:74
+msgid "Switzerland, France"
+msgstr ""
+
+#: ../../build/doc/support.rst:75
+msgid "http://www.camptocamp.com"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/topology-functions.po b/locale/en/LC_MESSAGES/topology-functions.po
new file mode 100644
index 0000000..ac6a1b3
--- /dev/null
+++ b/locale/en/LC_MESSAGES/topology-functions.po
@@ -0,0 +1,66 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/topology-functions.rst:13
+msgid "Topology - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:15
+msgid ""
+"The pgRouting's topology of a network, represented with an edge table with "
+"source and target attributes and a vertices table associated with it. "
+"Depending on the algorithm, you can create a topology or just reconstruct "
+"the vertices table, You can analyze the topology, We also provide a function"
+" to node an unoded network."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:19
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:20
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:21
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:22
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:23
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:35
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:38
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:39
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:40
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/types_index.po b/locale/en/LC_MESSAGES/types_index.po
new file mode 100644
index 0000000..3f3faa7
--- /dev/null
+++ b/locale/en/LC_MESSAGES/types_index.po
@@ -0,0 +1,56 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/types_index.rst:13
+msgid "pgRouting Data Types"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:15
+msgid ""
+"The following are commonly used data types for some of the pgRouting "
+"functions."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:17
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:18
+msgid ""
+":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe "
+"a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:19
+msgid ""
+":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:30
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:33
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:34
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:35
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/en/LC_MESSAGES/withPoints-family.po b/locale/en/LC_MESSAGES/withPoints-family.po
new file mode 100644
index 0000000..3d4f303
--- /dev/null
+++ b/locale/en/LC_MESSAGES/withPoints-family.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/withPoints-family.rst:14
+msgid "withPoints - Family of functions"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:16
+msgid "When points are also given as input:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:20
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:21
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:22
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:23
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:24
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:47
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:49
+msgid ""
+"The squared vertices are the temporary vertices, The temporary vertices are "
+"added acordng to the dirving side, The following images visualy show the "
+"diferences on how depending on the driving side the data is interpreted."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:53
+msgid "Right driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:58
+msgid "Left driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:63
+msgid "doesn't matter the driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:68
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:70
+msgid ""
+"This famly of functions was thought for routing vehicles, but might as well "
+"work for some other application that we can not think of."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:73
+msgid ""
+"The with points family of function give you the ability to route between "
+"arbitrary points located outside the original graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:76
+msgid ""
+"When given a point identified with a `pid` that its being mapped to and edge"
+" with an identifier `edge_id`, with a `fraction` along that edge (from the "
+"source to the target of the edge) and some additional information about "
+"which `side` of the edge the point is on, then routing from arbitrary points"
+" more accurately reflect routing vehicles in road networks,"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid ""
+"I talk about a family of functions because it includes different "
+"functionalities."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:84
+msgid "pgr_withPoints is pgr_dijkstra based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:85
+msgid "pgr_withPointsCost is pgr_dijkstraCost based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:86
+msgid "pgr_withPointsKSP is pgr_ksp based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid "pgr_withPointsDD is pgr_drivingDistance based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:89
+msgid ""
+"In all this functions we have to take care of as many aspects as possible:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:91
+msgid "Must work for routing:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:93
+msgid "Cars (directed graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:94
+msgid "Pedestrians (undirected graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:96
+msgid "Arriving at the point:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:98
+msgid "In either side of the street."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:99
+msgid ""
+"Compulsory arrival on the side of the street where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:101
+msgid "Countries with:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:103
+msgid "Right side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:104
+msgid "Left side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:106
+msgid "Some points are:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:108
+msgid ""
+"Permanent, for example the set of points of clients stored in a table in the"
+" data base"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:109
+msgid "Temporal, for example points given through a web application"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:111
+msgid "The numbering of the points are handled with negative sign."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:113
+msgid "Original point identifiers are to be positive."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:114
+msgid "Transformation to negative is done internally."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:115
+msgid "For results for involving vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:117
+msgid "positive sign is a vertex of the original grpah"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:118
+msgid "negative sign is a point of the temporary points"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:120
+msgid ""
+"The reason for doing this is to avoid confusion when there is a vertex with "
+"the same number as identifier as the points identifier."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:123
+msgid "Graph & edges"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:125
+msgid ""
+"Let :math:`G_d(V,E)` where :math:`V` is the set of vertices and :math:`E` is"
+" the set of edges be the original directed graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:127
+msgid ""
+"An edge of the original `edges_sql` is :math:`(id, source, target, cost, "
+"reverse\\_cost)` will generate internally"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:129
+msgid ":math:`(id, source, target, cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:130
+msgid ":math:`(id, target, source, reverse\\_cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:133
+msgid "Point Definition"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:135
+msgid ""
+"A point is defined by the quadruplet: :math:`(pid, eid, fraction, side)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:137
+msgid "**pid** is the point identifier"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:138
+msgid "**eid** is an edge id of the `edges_sql`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:139
+msgid "**fraction** represents where the edge `eid` will be cut."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:140
+msgid "**side** Indicates the side of the edge where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:144
+msgid "Creating Temporary Vertices in the Graph"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:146
+msgid "For edge (15, 9,12 10, 20), & lets insert point (2, 12, 0.3, r)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:149
+msgid "On a right hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:150
+msgid "From first image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:152
+msgid "We can arrive to the point only via vertex 9."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:153
+msgid "It only afects the edge (15, 9,12, 10) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:154
+msgid "Edge (15, 12,9, 20) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:155
+#: ../../build/doc/withPoints-family.rst:167
+#: ../../build/doc/withPoints-family.rst:182
+msgid "Create new edges:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:157
+#: ../../build/doc/withPoints-family.rst:186
+msgid "(15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:158
+#: ../../build/doc/withPoints-family.rst:187
+msgid "(15, -1,12, 7) edge from point 1 to vertex 12 has cost 7"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:161
+msgid "On a left hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:162
+msgid "From second image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:164
+msgid "We can arrive to the point only via vertex 12."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:165
+msgid "It only afects the edge (15, 12,9 20) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:166
+msgid "Edge (15, 9,12, 10) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:169
+#: ../../build/doc/withPoints-family.rst:184
+msgid "(15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:170
+#: ../../build/doc/withPoints-family.rst:185
+msgid "(15, -1,9, 6) edge from point 1 to vertex 9 has cost 6"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:172
+msgid "that fraction is from vertex 9 to vertex 12"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:176
+msgid "When driving side does not matter"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:177
+msgid "From third image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:179
+msgid "We can arrive to the point either via vertex 12 or via vertex 9"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:180
+msgid "Edge (15, 12,9 20) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:181
+msgid "Edge (15, 9,12, 10) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:190
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:193
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:194
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:195
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/KSP-category.po b/locale/es/LC_MESSAGES/KSP-category.po
new file mode 100644
index 0000000..9232738
--- /dev/null
+++ b/locale/es/LC_MESSAGES/KSP-category.po
@@ -0,0 +1,36 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/KSP-category.rst:14
+msgid "KSP Category"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:18
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:19
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:26
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:27
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:28
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/TSP-family.po b/locale/es/LC_MESSAGES/TSP-family.po
new file mode 100644
index 0000000..0f03653
--- /dev/null
+++ b/locale/es/LC_MESSAGES/TSP-family.po
@@ -0,0 +1,556 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/TSP-family.rst:13
+msgid "Traveling Sales Person - Family of functions"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:17
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:18
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:33
+msgid "Origin"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid ""
+"The traveling sales person problem was studied in the 18th century by "
+"mathematicians"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid "**Sir William Rowam Hamilton** and **Thomas Penyngton Kirkman**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:38
+msgid ""
+"A discussion about the work of Hamilton & Kirkman can be found in the book "
+"**Graph Theory (Biggs et al. 1976)**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:41
+msgid "ISBN-13: 978-0198539162"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:42
+msgid "ISBN-10: 0198539169"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:44
+msgid ""
+"It is believed that the general form of the TSP have been first studied by "
+"Kalr Menger in Vienna and Harvard. The problem was later promoted by "
+"Hassler, Whitney & Merrill at Princeton. A detailed description about the"
+" connection between Menger & Whitney, and the development of the TSP can be "
+"found in `On the history of combinatorial optimization (till 1960) "
+"<http://www.cwi.nl/~lex/files/histco.ps>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:50
+msgid "Problem Definition"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:52
+msgid ""
+"Given a collection of cities and travel cost between each pair, find the "
+"cheapest way for visiting all of the cities and returning to the starting "
+"point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:56
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:58
+msgid "The travel costs are symmetric:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:60
+msgid ""
+"traveling costs from city A to city B are just as much as traveling from B "
+"to A."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:62
+msgid "This problem is an NP-hard optimization problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:64
+msgid "To calculate the number of different tours through :math:`n` cities:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:66
+msgid "Given a starting city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:67
+msgid "There are :math:`n-1` choices for the second city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:68
+msgid "And :math:`n-2` choices for the third city, etc."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:69
+msgid ""
+"Multiplying these together we get :math:`(n-1)! = (n-1) (n-2) . . 1`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:70
+msgid ""
+"Now since our travel costs do not depend on the direction we take around the"
+" tour:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:72
+msgid "this number by 2"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:73
+msgid ":math:`(n-1)!/2`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:76
+msgid "TSP & Simulated Annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:78
+msgid ""
+"The simulated annealing algorithm was originally inspired from the process "
+"of annealing in metal work."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:81
+msgid ""
+"Annealing involves heating and cooling a material to alter its physical "
+"properties due to the changes in its internal structure. As the metal cools "
+"its new structure becomes fixed, consequently causing the metal to retain "
+"its newly obtained properties. [C001]_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:88
+msgid "Pseudocode"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:89
+msgid ""
+"Given an initial solution, the simulated annealing process, will start with "
+"a high temperature and gradually cool down until the desired temperature is "
+"reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:92
+msgid ""
+"For each temperature, a neighbouring new solution **snew** is calculated. "
+"The higher the temperature the higher the probability of accepting the new "
+"solution as a possible bester solution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:95
+msgid ""
+"Once the desired temperature is reached, the best solution found is returned"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:118
+msgid "pgRouting Implementation"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:120
+msgid ""
+"pgRouting's implementation adds some extra parameters to allow some exit "
+"controls within the simulated annealing process."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:123
+msgid "To cool down faster to the next temperature:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:125
+msgid ""
+"max_changes_per_temperature: limits the number of changes in the solution "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:126
+msgid ""
+"max_consecutive_non_changes: limits the number of consecutive non changes "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:128
+msgid ""
+"This is done by doing some book keeping on the times **solution = snew;** is"
+" executed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:130
+msgid ""
+"max_changes_per_temperature: Increases by one when **solution** changes"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:131
+msgid ""
+"max_consecutive_non_changes: Reset to 0 when **solution** changes, and "
+"increased each **try**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:133
+msgid ""
+"Additionally to stop the algorithm at a higher temperature than the desired "
+"one:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:135
+msgid ""
+"max_processing_time: limits the time the simulated annealing is performed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:136
+msgid ""
+"book keeping is done to see if there was a change in **solution** on the "
+"last temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:138
+msgid ""
+"Note that, if no change was found in the first "
+"**max_consecutive_non_changes** tries, then the simulated annealing will "
+"stop."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:168
+msgid "Choosing parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:170
+msgid ""
+"There is no exact rule on how the parameters have to be chose, it will "
+"depend on the special characteristics of the problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:173
+msgid ""
+"Your computational time is crucial, then put your time limit to "
+"**max_processing_time**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:174
+msgid ""
+"Make the **tries_per_temperture** depending on the number of cities, for "
+"example:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:176
+msgid "Useful to estimate the time it takes to do one cycle: use `1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:178
+msgid "this will help to set a reasonable **max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:180
+msgid ":math:`n * (n-1)`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:181
+msgid ":math:`500 * n`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:183
+msgid ""
+"For a faster decreasing the temperature set **cooling_factor** to a smaller "
+"number, and set to a higher number for a slower decrease."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:186
+msgid ""
+"When for the same given data the same results are needed, set **randomize** "
+"to `false`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:188
+msgid "When estimating how long it takes to do one cycle: use `false`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:191
+msgid ""
+"A recommendation is to play with the values and see what fits to the "
+"particular data."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:196
+msgid "Description Of the Control parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:198
+msgid "The control parameters are optional, and have a default value."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+#: ../../build/doc/TSP-family.rst:233
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+msgid "`0`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "The greedy part of the implementation will use this identifier."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "Last visiting vertex before returning to start_vid."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "**max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205 ../../build/doc/TSP-family.rst:209
+#: ../../build/doc/TSP-family.rst:210 ../../build/doc/TSP-family.rst:211
+#: ../../build/doc/TSP-family.rst:234 ../../build/doc/TSP-family.rst:237
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "`+infinity`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "Stop the annealing processing when the value is reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "**tries_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206 ../../build/doc/TSP-family.rst:207
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:232
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "`500`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "Maximum number of times a neighbor(s) is searched in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "**max_changes_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "`60`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "Maximum number of times the solution is changed in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid "**max_consecutive_non_changes**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:209
+msgid "`100`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid ""
+"Maximum number of consecutive times the solution is not changed in each "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "**initial_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "Starting temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "**final_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "`0.1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "Ending temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "**cooling_factor**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "`0.9`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid ""
+"Value between between 0 and 1 (not including) used to calculate the next "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "**randomize**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "`true`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "Choose the random seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:214
+msgid "true: Use current time as seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:215
+msgid ""
+"false: Use `1` as seed. Using this value will get the same results with the "
+"same data in each execution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:225
+msgid "Description of the return columns"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:227
+msgid "Returns set of ``(seq, node, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:230
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "Identifier of the node/coordinate/point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:234
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid ""
+"Cost to traverse from the current ``node`` ito the next ``node`` in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:237
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:245
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:248
+msgid "References"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:249
+msgid ""
+"`Simulated annaeling algorithm for beginners <http://www.theprojectspot.com"
+"/tutorial-post/simulated-annealing-algorithm-for-beginners/6>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:251
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:252
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:255
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:256
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:257
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/aStar-family.po b/locale/es/LC_MESSAGES/aStar-family.po
new file mode 100644
index 0000000..3364e02
--- /dev/null
+++ b/locale/es/LC_MESSAGES/aStar-family.po
@@ -0,0 +1,205 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/aStar-family.rst:13
+msgid "aStar - Family of functions"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:15
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic that allow it to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:19
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:20
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:21
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:34
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:36
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic, that is an estimation of the remaining cost from the "
+"vertex to the goal, that allows to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph. Running time: :math:`O((E + "
+"V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:46
+msgid "Heuristic"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:48
+msgid "Currently the heuristic functions available are:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:50
+msgid "0: :math:`h(v) = 0` (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:51
+msgid "1: :math:`h(v) = abs(max(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:52
+msgid "2: :math:`h(v) = abs(min(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:53
+msgid "3: :math:`h(v) = \\Delta x * \\Delta x + \\Delta y * \\Delta y`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:54
+msgid "4: :math:`h(v) = sqrt(\\Delta x * \\Delta x + \\Delta y * \\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:55
+msgid "5: :math:`h(v) = abs(\\Delta x) + abs(\\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:57
+msgid "where :math:`\\Delta x = x_1 - x_0` and :math:`\\Delta y = y_1 - y_0`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:63 ../../build/doc/aStar-family.rst:76
+#: ../../build/doc/aStar-family.rst:89
+msgid "Factor"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:66
+msgid "Analysis 1"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:67
+msgid ""
+"Working with cost/reverse_cost as length in degrees, x/y in lat/lon: Factor "
+"= 1 (no need to change units)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:71
+msgid "Analysis 2"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:72
+msgid ""
+"Working with cost/reverse_cost as length in meters, x/y in lat/lon: Factor ="
+" would depend on the location of the points:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "latitude"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "conversion"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78 ../../build/doc/aStar-family.rst:91
+msgid "45"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "1 longitude degree is 78846.81 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "78846"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79 ../../build/doc/aStar-family.rst:92
+msgid "0"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "1 longitude degree is 111319.46 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "111319"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:83
+msgid "Analysis 3"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:84
+msgid ""
+"Working with cost/reverse_cost as time in seconds, x/y in lat/lon: Factor: "
+"would depend on the location of the points and on the average speed say "
+"25m/s is the speed."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "1 longitude degree is (78846.81m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "3153 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "1 longitude degree is (111319.46 m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "4452 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:98
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:100
+msgid ":ref:`pgr_aStar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:101
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:102
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:103
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:104
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:107
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:108
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:109
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/allpairs-family.po b/locale/es/LC_MESSAGES/allpairs-family.po
new file mode 100644
index 0000000..9749ed9
--- /dev/null
+++ b/locale/es/LC_MESSAGES/allpairs-family.po
@@ -0,0 +1,996 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/allpairs-family.rst:14
+msgid "All Pairs - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:16
+msgid "The following functions work an all vertices pair combinations"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:33
+msgid "Performance"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "The following tests:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:36
+msgid "non server computer"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:37
+msgid "with AMD 64 CPU"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:38
+msgid "4G memory"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:39
+msgid "trusty"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "posgreSQL version 9.3"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:43
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:45
+msgid "The following data was used"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:53
+msgid "Data processing was done with osm2pgrouting-alpha"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:66
+msgid "Results"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:68
+msgid "One"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:70
+msgid ""
+"This test is not with a bounding box The density of the passed graph is "
+"extremely low. For each <SIZE> 30 tests were executed to get the average The"
+" tested query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:83
+#: ../../build/doc/allpairs-family.rst:140
+msgid "The results of this tests are presented as:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:85
+msgid "is the number of edges given as input."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:86
+#: ../../build/doc/allpairs-family.rst:143
+msgid "is the total number of records in the query."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:87
+#: ../../build/doc/allpairs-family.rst:144
+msgid "is the density of the data :math:`\\dfrac{E}{V \\times (V-1)}`."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:88
+#: ../../build/doc/allpairs-family.rst:145
+msgid "is the number of records returned by the queries."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:89
+#: ../../build/doc/allpairs-family.rst:146
+msgid "is the average execution time in seconds of pgr_floydWarshall."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:90
+#: ../../build/doc/allpairs-family.rst:147
+msgid "is the average execution time in seconds of pgr_johnson."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "SIZE"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "EDGES"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "DENSITY"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "OUT ROWS"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Floyd-Warshall"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Johnson"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+#: ../../build/doc/allpairs-family.rst:96
+msgid "500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.18E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "1346"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.14"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.13"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+#: ../../build/doc/allpairs-family.rst:97
+msgid "1000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.36E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "2655"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.23"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.18"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:98
+msgid "1500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.55E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "4110"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:99
+msgid "2000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.73E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "5676"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.56"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+#: ../../build/doc/allpairs-family.rst:100
+msgid "2500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.89E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "7177"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.84"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+#: ../../build/doc/allpairs-family.rst:101
+msgid "3000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.07E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "8778"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "0.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+#: ../../build/doc/allpairs-family.rst:102
+msgid "3500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "1.24E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "10526"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "2.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "0.95"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+#: ../../build/doc/allpairs-family.rst:103
+msgid "4000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.41E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "12484"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "3.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.58E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "14354"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+#: ../../build/doc/allpairs-family.rst:105
+msgid "5000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.76E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "16503"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "6.05"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.78"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+#: ../../build/doc/allpairs-family.rst:106
+msgid "5500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "1.93E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "18623"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "7.53"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "2.03"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+#: ../../build/doc/allpairs-family.rst:107
+msgid "6000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.11E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "20710"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "8.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+#: ../../build/doc/allpairs-family.rst:108
+msgid "6500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.28E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "22752"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "9.99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+#: ../../build/doc/allpairs-family.rst:109
+msgid "7000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "2.46E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "24687"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "11.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "3.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+#: ../../build/doc/allpairs-family.rst:110
+msgid "7500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "2.64E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "26861"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "13.94"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "3.60"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+#: ../../build/doc/allpairs-family.rst:111
+msgid "8000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "2.83E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "29050"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "15.61"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "4.09"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+#: ../../build/doc/allpairs-family.rst:112
+msgid "8500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "3.01E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "31693"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "17.43"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "4.63"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+#: ../../build/doc/allpairs-family.rst:113
+msgid "9000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "3.17E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "33879"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "19.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "5.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+#: ../../build/doc/allpairs-family.rst:114
+msgid "9500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "3.35E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "36287"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "20.77"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "6.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+#: ../../build/doc/allpairs-family.rst:115
+msgid "10000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "3.52E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "38491"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "23.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "6.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:119
+msgid "Two"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:121
+msgid ""
+"This test is with a bounding box The density of the passed graph higher than"
+" of the Test One. For each <SIZE> 30 tests were executed to get the average "
+"The tested edge query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:133
+msgid "The tested queries"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:142
+msgid "is the size of the bounding box."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.001"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "44"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.0608"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "1197"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:154
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.10"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.002"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.0251"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "4330"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.003"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "223"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.0122"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "18849"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.004"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "358"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.0085"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "71834"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.005"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "470"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.0070"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "116290"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.22"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.006"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "639"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.0055"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "207030"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.27"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "843"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.0043"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "346930"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.64"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.38"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.008"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "996"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.0037"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "469936"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.90"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.009"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1146"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.0032"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "613135"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.62"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.010"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1360"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.0027"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "849304"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1.87"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.011"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1573"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.0024"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1147101"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "2.65"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1.04"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1789"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.0021"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1483629"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "3.72"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1.35"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1975"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.0019"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1846897"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "4.86"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.014"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2281"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.0017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2438298"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "7.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2588"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.0015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "3156007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "10.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2.80"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.016"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "2958"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.0013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "4090618"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "14.67"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "3.76"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "3247"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.0012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4868919"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "18.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4.48"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:174
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:176
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:177
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:178
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:181
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:182
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:183
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/bdAstar-family.po b/locale/es/LC_MESSAGES/bdAstar-family.po
new file mode 100644
index 0000000..b2bd16b
--- /dev/null
+++ b/locale/es/LC_MESSAGES/bdAstar-family.po
@@ -0,0 +1,394 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Bidirectional A* - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:18
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:35
+msgid ""
+"Based on A* algorithm, the bidirectional search finds a shortest path from a"
+" starting vertex (``start_vid``) to an ending vertex (``end_vid``). It runs "
+"two simultaneous searches: one forward from the ``start_vid``, and one "
+"backward from the ``end_vid``, stopping when the two meet in the middle. "
+"This implementation can be used with a directed graph and an undirected "
+"graph."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:60
+msgid "It is expected to terminate faster than pgr_astar"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:63
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:78 ../../build/doc/bdAstar-family.rst:80
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:72
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79 ../../build/doc/bdAstar-family.rst:81
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:84
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:85
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:89
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:90
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:91
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:92
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:93
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:94
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96 ../../build/doc/bdAstar-family.rst:97
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:103
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/bdDijkstra-family.po b/locale/es/LC_MESSAGES/bdDijkstra-family.po
new file mode 100644
index 0000000..67de3fa
--- /dev/null
+++ b/locale/es/LC_MESSAGES/bdDijkstra-family.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdDijkstra-family.rst:13
+msgid "Bidirectional Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:17
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:18
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:19
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:35
+msgid ""
+"Based on Dijkstra's algorithm, the bidirectional search finds a shortest "
+"path a starting vertex (``start_vid``) to an ending vertex (``end_vid``). It"
+" runs two simultaneous searches: one forward from the source, and one "
+"backward from the target, stopping when the two meet in the middle. This "
+"implementation can be used with a directed graph and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:60
+msgid "It is expected to terminate faster than pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:63
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:66
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:67
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:68
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/components-family.po b/locale/es/LC_MESSAGES/components-family.po
new file mode 100644
index 0000000..dbca49a
--- /dev/null
+++ b/locale/es/LC_MESSAGES/components-family.po
@@ -0,0 +1,750 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/components-family.rst:13
+msgid "Components - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:22
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:23
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:25
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:42
+msgid "The problem definition"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:45
+msgid "Connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:46
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:49
+#: ../../build/doc/components-family.rst:183
+#: ../../build/doc/components-family.rst:252
+#: ../../build/doc/components-family.rst:312
+msgid "**Notice**: This problem defines on an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:51
+#: ../../build/doc/components-family.rst:117
+#: ../../build/doc/components-family.rst:185
+#: ../../build/doc/components-family.rst:254
+#: ../../build/doc/components-family.rst:314
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:54
+msgid "pgr_connectedComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:56
+#: ../../build/doc/components-family.rst:122
+#: ../../build/doc/components-family.rst:190
+#: ../../build/doc/components-family.rst:259
+#: ../../build/doc/components-family.rst:319
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:58
+#: ../../build/doc/components-family.rst:124
+#: ../../build/doc/components-family.rst:192
+#: ../../build/doc/components-family.rst:261
+#: ../../build/doc/components-family.rst:321
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:60
+#: ../../build/doc/components-family.rst:126
+#: ../../build/doc/components-family.rst:194
+#: ../../build/doc/components-family.rst:263
+#: ../../build/doc/components-family.rst:323
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:61
+#: ../../build/doc/components-family.rst:127
+#: ../../build/doc/components-family.rst:195
+#: ../../build/doc/components-family.rst:264
+#: ../../build/doc/components-family.rst:324
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:63
+#: ../../build/doc/components-family.rst:129
+#: ../../build/doc/components-family.rst:197
+#: ../../build/doc/components-family.rst:266
+#: ../../build/doc/components-family.rst:326
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:65
+#: ../../build/doc/components-family.rst:199
+#: ../../build/doc/components-family.rst:268
+#: ../../build/doc/components-family.rst:328
+msgid "The weighted undirected graph, :math:`G(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:67
+#: ../../build/doc/components-family.rst:133
+#: ../../build/doc/components-family.rst:201
+#: ../../build/doc/components-family.rst:270
+#: ../../build/doc/components-family.rst:330
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:69
+#: ../../build/doc/components-family.rst:203
+#: ../../build/doc/components-family.rst:272
+#: ../../build/doc/components-family.rst:332
+msgid ":math:`V = source \\cup target`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:72
+#: ../../build/doc/components-family.rst:137
+#: ../../build/doc/components-family.rst:206
+#: ../../build/doc/components-family.rst:275
+#: ../../build/doc/components-family.rst:335
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:74
+#: ../../build/doc/components-family.rst:208
+#: ../../build/doc/components-family.rst:277
+#: ../../build/doc/components-family.rst:337
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, cost_i) \\text{ when } cost"
+" >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} \\\\ \\cup &\\{(source_i, target_i, reverse\\_cost_i) \\text{ when }"
+" reverse\\_cost_i >=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:77
+#: ../../build/doc/components-family.rst:142
+#: ../../build/doc/components-family.rst:211
+#: ../../build/doc/components-family.rst:280
+#: ../../build/doc/components-family.rst:340
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:79
+#: ../../build/doc/components-family.rst:144
+#: ../../build/doc/components-family.rst:213
+#: ../../build/doc/components-family.rst:282
+#: ../../build/doc/components-family.rst:342
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:81
+#: ../../build/doc/components-family.rst:146
+#: ../../build/doc/components-family.rst:215
+#: ../../build/doc/components-family.rst:284
+#: ../../build/doc/components-family.rst:344
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:89
+#: ../../build/doc/components-family.rst:154
+#: ../../build/doc/components-family.rst:223
+msgid ":math:`\\boldsymbol{\\pi} = \\{(component_i, n\\_seq_i, node_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:298
+#: ../../build/doc/components-family.rst:358
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:92
+msgid ":math:`component_i = \\min \\{node_j | node_j \\in component_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:93
+#: ../../build/doc/components-family.rst:158
+#: ../../build/doc/components-family.rst:227
+msgid ""
+":math:`n\\_seq_i` is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:94
+#: ../../build/doc/components-family.rst:159
+msgid ":math:`node_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:95
+#: ../../build/doc/components-family.rst:160
+#: ../../build/doc/components-family.rst:229
+#: ../../build/doc/components-family.rst:296
+#: ../../build/doc/components-family.rst:356
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:97
+#: ../../build/doc/components-family.rst:162
+#: ../../build/doc/components-family.rst:231
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:298
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+#: ../../build/doc/components-family.rst:170
+#: ../../build/doc/components-family.rst:239
+#: ../../build/doc/components-family.rst:301
+#: ../../build/doc/components-family.rst:361
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:101
+msgid "The first component is composed of nodes ``0``, ``1`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:102
+msgid "The second component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+msgid "The third component is composed of nodes ``2`` and ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:111
+msgid "Strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:112
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:115
+msgid "**Notice**: This problem defines on a directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:120
+msgid "pgr_strongComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:131
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:135
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:139
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:157
+#: ../../build/doc/components-family.rst:226
+msgid ":math:`component_i = \\min {node_j | node_j \\in component_i}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:166
+msgid "The first component is composed of nodes ``1``, ``2`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:167
+msgid "The second component is composed of node ``0``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:168
+msgid "The third component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:169
+msgid "The fourth component is composed of node ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:170
+msgid "The fifth component is composed of node ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:177
+msgid "Biconnected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:178
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:188
+msgid "pgr_biconnectedComponents(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:228
+msgid ":math:`edge_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:358
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:235
+msgid ""
+"The first component is composed of edges ``1 - 2``, ``0 - 1`` and ``0 - 2``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:236
+msgid ""
+"The second component is composed of edges ``2 - 4``, ``2 - 3`` and ``3 - "
+"4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:237
+msgid "The third component is composed of edge ``5 - 6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:238
+msgid "The fourth component is composed of edge ``6 - 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:239
+msgid ""
+"The fifth component is composed of edges ``8 - 9``, ``9 - 10`` and ``8 - "
+"10``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:246
+msgid "Articulation Points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:247
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:257
+msgid "pgr_articulationPoints(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:292
+msgid ":math:`\\boldsymbol{\\pi} = \\{node_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:295
+msgid ":math:`node_i` is an articulation point."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:301
+msgid "Articulation points are nodes ``2`` and ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:308
+msgid "Bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:309
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:317
+msgid "pgr_bridges(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:352
+msgid ":math:`\\boldsymbol{\\pi} = \\{edge_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:355
+msgid ":math:`edge_i` is an edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:361
+msgid "Bridges are edges ``5 <--> 6`` and ``6 <--> 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:370
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:372
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:378
+#: ../../build/doc/components-family.rst:379
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+#: ../../build/doc/components-family.rst:384
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:382
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:386
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:390
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:392
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:393
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:402
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:405
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:416
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:418
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:444
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:443
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:443
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:461
+#: ../../build/doc/components-family.rst:477
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:435
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:437
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:443
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:453
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:455
+#: ../../build/doc/components-family.rst:471
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:469
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:483
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:486
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:487
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:488
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/contraction-family.po b/locale/es/LC_MESSAGES/contraction-family.po
new file mode 100644
index 0000000..182343c
--- /dev/null
+++ b/locale/es/LC_MESSAGES/contraction-family.po
@@ -0,0 +1,745 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/contraction-family.rst:14
+msgid "Contraction - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:21
+msgid ":ref:`pgr_contractGraph`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:29
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:31
+msgid ""
+"In big graphs, like the road graphs, or electric networks, graph contraction"
+" can be used to speed up some graph algorithms. Contraction reduces the size"
+" of the graph by removing some of the vertices and edges and, for example, "
+"might add edges that represent a sequence of original edges decreasing the "
+"total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:33
+msgid ""
+"This implementation gives a flexible framework for adding contraction "
+"algorithms in the future, currently, it supports two algorithms:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:35
+#: ../../build/doc/contraction-family.rst:46
+msgid "Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:36
+#: ../../build/doc/contraction-family.rst:166
+msgid "Linear contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:38
+msgid "Allowing the user to:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:40
+msgid "Forbid contraction on a set of nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:41
+msgid ""
+"Decide the order of the contraction algorithms and set the maximum number of"
+" times they are to be executed."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:43
+msgid "UNDER DISCUSSION: Forbid contraction on a set of edges"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:47
+msgid "In the algorithm, dead end contraction is represented by 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:50
+msgid "Dead end nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:52
+msgid ""
+"The definition of a dead end node is different for a directed and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:54
+msgid "In case of a undirected graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:56
+msgid "The number of adjacent vertices is 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:58
+msgid "In case of an directed graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:60
+msgid "There are no outgoing edges and has at least one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:61
+msgid "There is one incoming and one outgoing edge with the same identifier."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:64
+#: ../../build/doc/contraction-family.rst:178
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:65
+msgid "The green node ``B`` represents a dead end node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:66
+msgid "The node ``A`` is the only node connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:67
+#: ../../build/doc/contraction-family.rst:181
+msgid ""
+"Node ``A`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:68
+#: ../../build/doc/contraction-family.rst:183
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:86
+msgid "Operation: Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:88
+msgid ""
+"The dead end contraction will stop until there are no more dead end nodes. "
+"For example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:91
+#: ../../build/doc/contraction-family.rst:208
+msgid ""
+"Node ``A`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:92
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:93
+msgid "Node ``B`` is the only node connecting to ``C``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:94
+msgid "The green node ``C`` represents a `Dead End` node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:113
+msgid ""
+"After contracting ``C``, node ``B`` is now a `Dead End` node and is "
+"contracted:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:129
+msgid "Node ``B`` gets contracted"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:143
+msgid "Nodes ``B`` and ``C`` belong to node ``A``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:148
+msgid "Not Dead End nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:150
+msgid "In this graph ``B`` is not a `dead end` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:167
+msgid "In the algorithm, linear contraction is represented by 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:170
+msgid "Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:172
+msgid "A node is considered a linear node if satisfies the following:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:174
+msgid "The number of adjacent vertices are 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:175
+msgid "Should have at least one incoming edge and one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:179
+msgid "The green node ``B`` represents a linear node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:180
+msgid "The nodes ``A`` and ``C`` are the only nodes connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:182
+msgid ""
+"Node ``C`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:203
+msgid "Operation: Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:205
+msgid ""
+"The linear contraction will stop until there are no more linear nodes. For "
+"example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:209
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:210
+msgid ""
+"Node ``C`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:211
+msgid ""
+"Node ``D`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:212
+msgid "The green nodes ``B`` and ``C`` represents `Linear` nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:234
+msgid ""
+"After contracting ``B``, a new edge gets inserted between ``A`` and ``C`` "
+"which is represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:254
+msgid "Node ``C`` is `linear node` and gets contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:272
+msgid ""
+"Nodes ``B`` and ``C`` belong to edge connecting ``A`` and ``D`` which is "
+"represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:275
+msgid "Not Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:277
+msgid "In this graph ``B`` is not a `linear` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:298
+msgid "The cycle"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:300
+msgid ""
+"Contracting a graph, can be done with more than one operation. The order of "
+"the operations affect the resulting contracted graph, after applying one "
+"operation, the set of vertices that can be contracted by another operation "
+"changes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:302
+msgid ""
+"This implementation, cycles ``max_cycles`` times through "
+"``operations_order`` ."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:315
+msgid "Contracting Sample Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:317
+msgid ""
+"In this section, building and using a contracted graph will be shown by "
+"example."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:319
+msgid "The :doc:`sampledata` for an undirected graph is used"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:320
+msgid "a dead end operation first followed by a linear operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:322
+msgid "The original graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:326
+msgid "After doing a dead end contraction operation:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:330
+msgid "Doing a linear contraction operation to the graph above"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:335
+msgid ""
+"There are five cases, in this documentation, which arise when calculating "
+"the shortest path between a given source and target. In this examples, "
+"``pgr_dijkstra`` is used."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:338
+msgid "**Case 1**: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:339
+msgid ""
+"**Case 2**: Source belongs to a contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:340
+msgid ""
+"**Case 3**: Source belongs to a vertex subgraph, while target belongs to an "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:341
+msgid ""
+"**Case 4**: Source belongs to a contracted graph, while target belongs to an"
+" vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:342
+msgid ""
+"**Case 5**: The path contains a new edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:345
+msgid "Construction of the graph in the database"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:348
+msgid "Original Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:349
+msgid ""
+"The following query shows the original data involved in the contraction "
+"operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:356
+msgid "Contraction Results"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:361
+msgid ""
+"The above results do not represent the contracted graph. They represent the "
+"changes done to the graph after applying the contraction algorithm. We can "
+"see that vertices like 6 and 11 do not appear in the contraction results "
+"because they were not affected by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:364
+msgid "step 1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:365
+msgid ""
+"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` "
+"tables:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "The vertices set belonging to the vertex/edge"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+#: ../../build/doc/contraction-family.rst:372
+msgid "**is_contracted**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+msgid ""
+"On a `vertex` table: when ``true`` the vertex is contracted, so is not part "
+"of the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:372
+msgid ""
+"On an `edge` table: when ``true`` the edge was generated by the contraction "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:375
+msgid "Using the following queries:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:382
+msgid "step 2"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:383
+msgid ""
+"For simplicity, in this documentation, store the results of the call to "
+"pgr_contractGraph in a temporary table"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:390
+msgid "step 3"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:391
+msgid ""
+"Update the `vertex` and `edge` tables using the results of the call to "
+"pgr_contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:393
+msgid ""
+"In `edge_table_vertices_pgr.is_contracted` indicate the vertices that are "
+"contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:399
+msgid ""
+"Add to `edge_table_vertices_pgr.contracted_vertices` the contracted "
+"vertices belonging to the vertices."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:405
+msgid "Insert the new edges generated by pgr_contractGraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:412
+msgid "step 3.1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:413
+msgid "Verify visually the updates."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:415
+msgid "On the `edge_table_vertices_pgr`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:421
+msgid "On the `edge_table`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:427
+msgid ""
+"vertices that belong to the contracted graph are the non contracted vertices"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:434
+msgid "case 1: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:435
+msgid ""
+"Inspecting the contracted graph above, vertex 3 and vertex 11 are part of "
+"the contracted graph. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:437
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:438
+#: ../../build/doc/contraction-family.rst:452
+#: ../../build/doc/contraction-family.rst:469
+#: ../../build/doc/contraction-family.rst:485
+#: ../../build/doc/contraction-family.rst:507
+msgid ""
+"when selecting the edges, only edges that have the source and the target in "
+"that set are the edges belonging to the contracted graph, that is done in "
+"the WHERE clause."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:440
+msgid ""
+"Visually, looking at the original graph, going from 3 to 11: 3 -> 6 -> 11, "
+"and in the contracted graph, it is also 3 -> 6 -> 11. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:448
+msgid ""
+"case 2: Source belongs to the contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:452
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 1 belongs to the contracted subgraph of edge 19. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:450
+msgid ""
+"expand1 holds the contracted vertices of the edge where vertex 1 belongs. "
+"(belongs to edge 19)."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:451
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"also the contracted vertices of edge 19."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:454
+msgid ""
+"Visually, looking at the original graph, going from 3 to 1: 3 -> 2 -> 1, and"
+" in the contracted graph, it is also 3 -> 2 -> 1. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:463
+msgid ""
+"case 3: Source belongs to a vertex subgraph, while target belongs to an edge"
+" subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:464
+msgid ""
+"Inspecting the contracted graph above, vertex 7 belongs to the contracted "
+"subgraph of vertex 5 and vertex 13 belongs to the contracted subgraph of "
+"edge 21. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:466
+#: ../../build/doc/contraction-family.rst:483
+msgid ""
+"expand7 holds the contracted vertices of vertex where vertex 7 belongs. "
+"(belongs to vertex 5)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:467
+msgid ""
+"expand13 holds the contracted vertices of edge where vertex 13 belongs. "
+"(belongs to edge 21)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:468
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"contracted vertices of vertex 5 and contracted vertices of edge 21."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:471
+msgid ""
+"Visually, looking at the original graph, going from 7 to 13: 7 -> 8 -> 5 -> "
+"10 -> 13, and in the contracted graph, it is also 7 -> 8 -> 5 -> 10 -> 13. "
+"The results, on the contracted graph match the results as if it was done on "
+"the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:480
+msgid ""
+"case 4: Source belongs to the contracted graph, while target belongs to an "
+"vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:481
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 7 belongs to the contracted subgraph of vertex 5. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:484
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"the contracted vertices of vertex 5."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:487
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, but in the contracted graph, it is 3 -> 5 -> 8 -> 7. The results, on "
+"the contracted graph do not match the results as if it was done on the "
+"original graph. This is because the path contains edge 19 which is added by "
+"the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:495
+msgid "case 5: The path contains an edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:496
+msgid ""
+"In the previous example we can see that the path from vertex 3 to vertex 7 "
+"contains an edge which is added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:502
+msgid ""
+"Inspecting the contracted graph above, edge 19 should be expanded. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:504
+msgid "first_dijkstra holds the results of the dijkstra query."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:505
+msgid ""
+"edges_to_expand holds the edges added by the contraction algorithm and "
+"included in the path."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:506
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"vertices of the contracted solution and the contracted vertices of the edges"
+" added by the contraction algorithm and included in the contracted solution."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:509
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, and in the contracted graph, it is also 3 -> 2 -> 5 -> 8 -> 7. The "
+"results, on the contracted graph match the results as if it was done on the "
+"original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:517
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:519
+msgid ""
+"http://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:520
+msgid "http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:521
+msgid ""
+"The queries use :ref:`pgr_contractGraph` function and the :doc:`sampledata` "
+"network."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:524
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:525
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:526
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/cost-category.po b/locale/es/LC_MESSAGES/cost-category.po
new file mode 100644
index 0000000..efea606
--- /dev/null
+++ b/locale/es/LC_MESSAGES/cost-category.po
@@ -0,0 +1,178 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost-category.rst:13
+msgid "Cost - Category"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:17
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:18
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:20
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:21
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:34
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:36
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:38
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:39
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:40
+msgid ""
+"Returns the sum of the costs of the resulting path(s) for pair combination "
+"of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:44
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:46
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:48
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:50
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:52
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:54
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:56
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:58
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:60
+msgid "Any duplicated value in the `start_vids` or in `end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:62
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:64
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:65
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/costMatrix-category.po b/locale/es/LC_MESSAGES/costMatrix-category.po
new file mode 100644
index 0000000..ad36b5e
--- /dev/null
+++ b/locale/es/LC_MESSAGES/costMatrix-category.po
@@ -0,0 +1,237 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/costMatrix-category.rst:13
+msgid "Cost Matrix - Category"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:17
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:18
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:20
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:21
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:40
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:43
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:45
+msgid ""
+":ref:`tsp` needs as input a symmetric cost matrix and no edge `(u, v)` must "
+"value :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:47
+msgid ""
+"This collection of functions will return a cost matrix in form of a table."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:53
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:55
+msgid "Can be used as input to :ref:`pgr_tsp`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:57
+msgid ""
+"when the resulting matrix is symmetric and there is no :math:`\\infty` "
+"value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:58
+msgid "It will be the users responsibility to make the matrix symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:60
+msgid "By using geometric or harmonic average of the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:61
+msgid "By using max or min the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:62
+msgid ""
+"By setting the upper triangle to be the mirror image of the lower triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:63
+msgid ""
+"By setting the lower triangle to be the mirror image of the upper triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:65
+msgid "It is also the users responsibility to fix an :math:`\\infty` value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:67
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:68
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:69
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:70
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:71
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:73
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:75
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:77
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:79
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:81
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:83
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:85
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:87
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:89
+msgid "Any duplicated value in the `start_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:91
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:93
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:94
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:96
+msgid "Running time: approximately :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:101
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:103
+msgid ":ref:`pgr_tsp`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/cost_result.po b/locale/es/LC_MESSAGES/cost_result.po
new file mode 100644
index 0000000..cfc1232
--- /dev/null
+++ b/locale/es/LC_MESSAGES/cost_result.po
@@ -0,0 +1,92 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost_result.rst:13
+msgid "pgr_costResult[]"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:19 ../../build/doc/cost_result.rst:52
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:21
+msgid ""
+"``pgr_costResult[]`` — A set of records to describe a path result with cost "
+"attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:25 ../../build/doc/cost_result.rst:58
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:37 ../../build/doc/cost_result.rst:71
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:38 ../../build/doc/cost_result.rst:73
+msgid "generic name, to be specified by the function, typically the node id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:39 ../../build/doc/cost_result.rst:74
+msgid "generic name, to be specified by the function, typically the edge id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:40 ../../build/doc/cost_result.rst:75
+msgid "cost attribute"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:46
+msgid "pgr_costResult3[] - Multiple Path Results with Cost"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:54
+msgid ""
+"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
+" attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:72
+msgid "generic name, to be specified by the function, typically the path id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:79
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:80
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:81
+msgid "Replaces ``path_result``"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:87
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/dijkstra-family.po b/locale/es/LC_MESSAGES/dijkstra-family.po
new file mode 100644
index 0000000..a9fa495
--- /dev/null
+++ b/locale/es/LC_MESSAGES/dijkstra-family.po
@@ -0,0 +1,262 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/dijkstra-family.rst:13
+msgid "Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:17
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:18
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:19
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:20
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:21
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:22
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:39
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:42
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:45
+msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:47
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:49
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:51
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:52
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:54
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:57
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:58
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:60
+#: ../../build/doc/dijkstra-family.rst:79
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:62
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:64
+#: ../../build/doc/dijkstra-family.rst:84
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:66
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = \\varnothing \\\\"
+" \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } \\{(source_i, "
+"target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup"
+" \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } "
+"reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:76
+msgid "Undirected graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:77
+msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:81
+msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:86
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, "
+"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } "
+"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ "
+"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & "
+"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost "
+">=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) "
+"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup "
+"\\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:99
+msgid "The problem"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:100
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:102
+msgid ":math:`start_{vid} \\in V` a starting vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:103
+msgid ":math:`end_{vid} \\in V` an ending vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:104
+msgid ""
+":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = "
+"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:109
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:118
+msgid ""
+":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, "
+"agg\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:131
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:121
+msgid ":math:`path\\_seq_i = i`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:122
+msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:123
+msgid ":math:`node_i \\in V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:124
+msgid ":math:`node_1 = start_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:125
+msgid ":math:`node_{| \\pi |} = end_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:126
+msgid ":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:127
+msgid ""
+":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad "
+"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | "
+"\\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:128
+msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:129
+msgid ""
+":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 "
+"\\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad "
+"\\text{when } i \\neq 1 \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:137
+msgid ""
+"In other words: The algorithm returns a the shortest path between "
+":math:`start_{vid}` and :math:`end_{vid}` , if it exists, in terms of a "
+"sequence of nodes and of edges,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:134
+msgid ""
+":math:`path\\_seq` indicates the relative position in the path of the "
+":math:`node` or :math:`edge`."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:135
+msgid ""
+":math:`cost` is the cost of the edge to be used to go to the next node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:136
+msgid ""
+":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:139
+msgid "If there is no path, the resulting set is empty."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:143
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:146
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:147
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:148
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/drivingDistance-category.po b/locale/es/LC_MESSAGES/drivingDistance-category.po
new file mode 100644
index 0000000..a71b4c7
--- /dev/null
+++ b/locale/es/LC_MESSAGES/drivingDistance-category.po
@@ -0,0 +1,52 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/drivingDistance-category.rst:14
+msgid "Driving Distance - Category"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:18
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:19
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:20
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:22
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:23
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:36
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:39
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:40
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:41
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/flow-family.po b/locale/es/LC_MESSAGES/flow-family.po
new file mode 100644
index 0000000..a000199
--- /dev/null
+++ b/locale/es/LC_MESSAGES/flow-family.po
@@ -0,0 +1,331 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Flow - Family of functions"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:19
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:23
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:24
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:45
+msgid "Flow Functions General Information"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:52
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:53
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:54
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:56
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:58
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:59
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:61
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:63
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:64
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:66
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:67
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:72
+msgid ""
+":ref:`pgr_maxFlow <pgr_maxFlow>` is the maximum Flow and that maximum is "
+"guaranteed to be the same on the functions :ref:`pgr_pushRelabel "
+"<pgr_pushRelabel>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`, "
+":ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, but the actual flow "
+"through each edge may vary."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:77
+msgid "Problem definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:79
+msgid ""
+"A flow network is a directed graph where each edge has a capacity and a "
+"flow. The flow through an edge must not exceed the capacity of the edge. "
+"Additionally, the incoming and outgoing flow of a node must be equal except "
+"the for source which only has outgoing flow, and the destination(sink) which"
+" only has incoming flow."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:83
+msgid ""
+"Maximum flow algorithms calculate the maximum flow through the graph and the"
+" flow of each edge."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:85
+msgid ""
+"The maximum flow through the graph is guaranteed to be the same with all "
+"implementations, but the actual flow through each edge may vary. Given the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:89
+msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:91
+msgid ""
+"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, "
+"reverse\\_capacity_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:94
+msgid "Graph definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:95
+msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:97
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:99
+msgid ""
+":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup "
+"target_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:101
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:103
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) "
+"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = "
+"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, "
+"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup "
+"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } "
+"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:111
+msgid "Maximum flow problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:112
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:115
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:116
+msgid ":math:`source\\_vertex \\in V` the source vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:117
+msgid ":math:`sink\\_vertex \\in V` the sink vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:119
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:121
+msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:123
+msgid ""
+":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, "
+"flow_i, residual\\_capacity_i)}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:125
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:127
+msgid ""
+":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their "
+"residual capacity and flow. The maximum flow through the graph can be "
+"obtained by aggregating on the source or sink and summing the flow from/to "
+"it. In particular:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:129
+msgid ":math:`id_i = i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:130
+msgid ":math:`edge\\_id = id_i` in edges_sql"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:131
+msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:135
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:137
+msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/geom_result.po b/locale/es/LC_MESSAGES/geom_result.po
new file mode 100644
index 0000000..e2d89a1
--- /dev/null
+++ b/locale/es/LC_MESSAGES/geom_result.po
@@ -0,0 +1,74 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/geom_result.rst:13
+msgid "pgr_geomResult[]"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:21
+msgid ""
+"``pgr_geomResult[]`` — A set of records to describe a path result with "
+"geometry attribute."
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:25
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:37
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:38 ../../build/doc/geom_result.rst:39
+msgid "generic name, to be specified by the function"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:40
+msgid "geometry attribute"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:44
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:45
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:46
+msgid "Replaces ``geoms``"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:50
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:52
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:56
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:57
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:58
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/index.po b/locale/es/LC_MESSAGES/index.po
new file mode 100644
index 0000000..44ac3e4
--- /dev/null
+++ b/locale/es/LC_MESSAGES/index.po
@@ -0,0 +1,306 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/index.rst:14
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/index.rst:16
+msgid ""
+"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
+"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
+"and other network analysis functionality."
+msgstr ""
+
+#: ../../build/doc/index.rst:18
+msgid "This is the manual for pgRouting |release|."
+msgstr ""
+
+#: ../../build/doc/index.rst:24
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
+"free to use this material any way you like, but we ask that you attribute "
+"credit to the pgRouting Project and wherever possible, a link back to "
+"http://pgrouting.org. For other licenses used in pgRouting see the "
+":ref:`license` page."
+msgstr ""
+
+#: ../../build/doc/index.rst:27
+msgid "General"
+msgstr ""
+
+#: ../../build/doc/index.rst:37
+msgid ":doc:`sampledata` that is used in the examples of this manual."
+msgstr ""
+
+#: ../../build/doc/index.rst:45
+msgid "Pgrouting Concepts"
+msgstr ""
+
+#: ../../build/doc/index.rst:54
+msgid "Reference"
+msgstr ""
+
+#: ../../build/doc/index.rst:55
+msgid ":ref:`pgr_version` - to get pgRouting's version information."
+msgstr ""
+
+#: ../../build/doc/index.rst:64
+msgid ":ref:`Data Types <data_types>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:67
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:68
+msgid ""
+":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
+" path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:69
+msgid ""
+":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:78
+msgid ":ref:`Topology Functions <topology_functions>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:80
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/index.rst:81
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/index.rst:82
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/index.rst:83
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/index.rst:84
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/index.rst:93
+msgid ":ref:`Routing functions <routing_functions>`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:4
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:6
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:7
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:9
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:11
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:13
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:16
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:22
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:32
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/index.rst:108
+msgid "Available Functions but not official pgRouting functions"
+msgstr ""
+
+#: ../../build/doc/index.rst:110
+msgid ":ref:`Stable`"
+msgstr ""
+
+#: ../../build/doc/index.rst:111
+msgid ":ref:`proposed`"
+msgstr ""
+
+#: ../../build/doc/index.rst:121
+msgid ":ref:`Change Log <change_log>`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:3
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:4
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:5
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:6
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:7
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:8
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:9
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:10
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:11
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:12
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:13
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:14
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:16
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:17
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/index.rst:135
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/index.rst:136
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/index.rst:137
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgRouting-concepts.po b/locale/es/LC_MESSAGES/pgRouting-concepts.po
new file mode 100644
index 0000000..34885ba
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgRouting-concepts.po
@@ -0,0 +1,1071 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "pgRouting Concepts"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:0
+msgid "Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "Getting Started"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid ""
+"This is a simple guide to walk you through the steps of getting started with"
+" pgRouting. In this guide we will cover:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:32
+msgid "Create a routing Database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:34
+msgid ""
+"The first thing we need to do is create a database and load pgrouting in the"
+" database. Typically you will create a database for each project. Once you "
+"have a database to work in, your can load your data and build your "
+"application in that database. This makes it easy to move your project later "
+"if you want to to say a production server."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:40
+msgid "For Postgresql 9.2 and later versions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:51
+msgid "Load Data"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:53
+msgid ""
+"How you load your data will depend in what form it comes it. There are "
+"various OpenSource tools that can help you, like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:56
+msgid ""
+"this is a tool for loading OSM data into postgresql with pgRouting "
+"requirements"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:57
+msgid "this is the postgresql shapefile loader"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:58
+msgid "this is a vector data conversion utility"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:59
+msgid "this is a tool for loading OSM data into postgresql"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:61
+msgid ""
+"So these tools and probably others will allow you to read vector data so "
+"that you may then load that data into your database as a table of some kind."
+" At this point you need to know a little about your data structure and "
+"content. One easy way to browse your new data table is with pgAdmin3 or "
+"phpPgAdmin."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:69
+msgid "Build a Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:71
+msgid ""
+"Next we need to build a topology for our street data. What this means is "
+"that for any given edge in your street data the ends of that edge will be "
+"connected to a unique node and to other edges that are also connected to "
+"that same unique node. Once all the edges are connected to nodes we have a "
+"graph that can be used for routing with pgrouting. We provide a tool that "
+"will help with this:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:77
+msgid "this step is not needed if data is loaded with `osm2pgrouting`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:83
+msgid ":ref:`pgr_create_topology`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:88
+msgid "Check the Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:90
+msgid ""
+"There are lots of possible sources for errors in a graph. The data that you "
+"started with may not have been designed with routing in mind. A graph has "
+"some very specific requirements. One is that it is *NODED*, this means that "
+"except for some very specific use cases, each road segment starts and ends "
+"at a node and that in general is does not cross another road segment that it"
+" should be connected to."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:97
+msgid ""
+"There can be other errors like the direction of a one-way street being "
+"entered in the wrong direction. We do not have tools to search for all "
+"possible errors but we have some basic tools that might help."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:109
+msgid ":ref:`pgr_analyze_graph`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:110
+msgid ":ref:`pgr_analyze_oneway`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:111
+msgid ":ref:`pgr_node_network`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:117
+msgid "Compute a Path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:119
+msgid ""
+"Once you have all the preparation work done above, computing a route is "
+"fairly easy. We have a lot of different algorithms that can work with your "
+"prepared road network. The general form of a route query is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:127
+msgid ""
+"As you can see this is fairly straight forward and you can look and the "
+"specific algorithms for the details of the signatures and how to use them. "
+"These results have information like edge id and/or the node id along with "
+"the cost or geometry for the step in the path from *start* to *end*. Using "
+"the ids you can join these result back to your edge table to get more "
+"information about each step in the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:134
+msgid ":ref:`pgr_dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:141
+msgid "Inner Queries"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:146
+msgid ""
+"There are several kinds of valid inner queries and also the columns returned"
+" are depending of the function. Which kind of inner query will depend on the"
+" function(s) requirements. To simplify variety of types, ``ANY-INTEGER`` and"
+" ``ANY-NUMERICAL`` is used."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:152
+#: ../../build/doc/pgRouting-concepts.rst:182
+#: ../../build/doc/pgRouting-concepts.rst:212
+#: ../../build/doc/pgRouting-concepts.rst:269
+#: ../../build/doc/pgRouting-concepts.rst:300
+#: ../../build/doc/pgRouting-concepts.rst:334
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:154
+#: ../../build/doc/pgRouting-concepts.rst:184
+#: ../../build/doc/pgRouting-concepts.rst:214
+#: ../../build/doc/pgRouting-concepts.rst:271
+#: ../../build/doc/pgRouting-concepts.rst:302
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:155
+#: ../../build/doc/pgRouting-concepts.rst:185
+#: ../../build/doc/pgRouting-concepts.rst:215
+#: ../../build/doc/pgRouting-concepts.rst:272
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:162
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:164
+#: ../../build/doc/pgRouting-concepts.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:247
+#: ../../build/doc/pgRouting-concepts.rst:282
+#: ../../build/doc/pgRouting-concepts.rst:314
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:287
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:290
+#: ../../build/doc/pgRouting-concepts.rst:294
+#: ../../build/doc/pgRouting-concepts.rst:319
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:263
+#: ../../build/doc/pgRouting-concepts.rst:264
+#: ../../build/doc/pgRouting-concepts.rst:265
+#: ../../build/doc/pgRouting-concepts.rst:266
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:174
+#: ../../build/doc/pgRouting-concepts.rst:204
+#: ../../build/doc/pgRouting-concepts.rst:257
+#: ../../build/doc/pgRouting-concepts.rst:292
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:178
+#: ../../build/doc/pgRouting-concepts.rst:208
+#: ../../build/doc/pgRouting-concepts.rst:261
+#: ../../build/doc/pgRouting-concepts.rst:296
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:193
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:224
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:227
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:232
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:234
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:236
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:245
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:280
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:312
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:321
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:322
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:328
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:329
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:330
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:336
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:337
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:345
+msgid "Return columns & values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:350
+msgid ""
+"There are several kinds of columns returned are depending of the function."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:355
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:357
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:363
+#: ../../build/doc/pgRouting-concepts.rst:364
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:367
+#: ../../build/doc/pgRouting-concepts.rst:368
+#: ../../build/doc/pgRouting-concepts.rst:385
+#: ../../build/doc/pgRouting-concepts.rst:386
+#: ../../build/doc/pgRouting-concepts.rst:403
+#: ../../build/doc/pgRouting-concepts.rst:404
+#: ../../build/doc/pgRouting-concepts.rst:405
+#: ../../build/doc/pgRouting-concepts.rst:406
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:378
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:380
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:397
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:415
+msgid "Advanced Topics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:423
+msgid "Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:427
+#: ../../build/doc/pgRouting-concepts.rst:528
+msgid "Overview"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:428
+msgid ""
+"Typically when GIS files are loaded into the data database for use with "
+"pgRouting they do not have topology information associated with them. To "
+"create a useful topology the data needs to be \"noded\". This means that "
+"where two or more roads form an intersection there it needs to be a node at "
+"the intersection and all the road segments need to be broken at the "
+"intersection, assuming that you can navigate from any of these segments to "
+"any other segment via that intersection."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:430
+msgid ""
+"You can use the :ref:`graph analysis functions <analytics>` to help you see "
+"where you might have topology problems in your data. If you need to node "
+"your data, we also have a function :ref:`pgr_nodeNetwork() "
+"<pgr_node_network>` that might work for you. This function splits ALL "
+"crossing segments and nodes them. There are some cases where this might NOT "
+"be the right thing to do."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:432
+msgid ""
+"For example, when you have an overpass and underpass intersection, you do "
+"not want these noded, but pgr_nodeNetwork does not know that is the case and"
+" will node them which is not good because then the router will be able to "
+"turn off the overpass onto the underpass like it was a flat 2D intersection."
+" To deal with this problem some data sets use z-levels at these types of "
+"intersections and other data might not node these intersection which would "
+"be ok."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:434
+msgid ""
+"For those cases where topology needs to be added the following functions may"
+" be useful. One way to prep the data for pgRouting is to add the following "
+"columns to your table and then populate them as appropriate. This example "
+"makes a lot of assumption like that you original data tables already has "
+"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
+"that they contain specific data values. This is only to give you an idea of "
+"what you can do with your data."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:455
+msgid ""
+"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
+"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
+"columns. The following example populated the remaining columns. In this "
+"example, the ``fcc`` column contains feature class code and the ``CASE`` "
+"statements converts it to an average speed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:518
+msgid ""
+"Now your database should be ready to use any (most?) of the pgRouting "
+"algorithms."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:524
+msgid "Graph Analytics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:529
+msgid ""
+"It is common to find problems with graphs that have not been constructed "
+"fully noded or in graphs with z-levels at intersection that have been "
+"entered incorrectly. An other problem is one way streets that have been "
+"entered in the wrong direction. We can not detect errors with respect to "
+"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
+"a graph and report them for additional inspections."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:531
+msgid ""
+"We do not current have any visualization tools for these problems, but I "
+"have used mapserver to render the graph and highlight potential problem "
+"areas. Someone familiar with graphviz might contribute tools for generating "
+"images with that."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:535
+msgid "Analyze a Graph"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:537
+msgid ""
+"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
+"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
+"table:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:560
+msgid "In the vertices table \"mytab_vertices_pgr\":"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:562
+msgid "Deadends are identified by ``cnt=1``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:563
+msgid "Potencial gap problems are identified with ``chk=1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:581
+msgid ""
+"For isolated road segments, for example, a segment where both ends are "
+"deadends. you can find these with the following query:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:590
+msgid ""
+"If you want to visualize these on a graphic image, then you can use "
+"something like mapserver to render the edges and the vertices and style "
+"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
+"tool like graphviz, or geoserver or other similar tools."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:594
+msgid "Analyze One Way Streets"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:596
+msgid ""
+":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
+" any flipped segments. Basically if you count the edges coming into a node "
+"and the edges exiting a node the number has to be greater than one."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:598
+msgid ""
+"This query will add two columns to the vertices_tmp table ``ein int`` and "
+"``eout int`` and populate it with the appropriate counts. After running this"
+" on a graph you can identify nodes with potential problems with the "
+"following query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:601
+msgid ""
+"The rules are defined as an array of text strings that if match the ``col`` "
+"value would be counted as true for the source or target in or out condition."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:605
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:607
+msgid ""
+"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
+"might have values like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:609
+msgid "'FT' - oneway from the source to the target node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:610
+msgid "'TF' - oneway from the target to the source node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:611
+msgid "'B' - two way street."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:612
+msgid "'' - empty field, assume twoway."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:613
+msgid "<NULL> - NULL field, use two_way_if_null flag."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:615
+msgid ""
+"Then we could form the following query to analyze the oneway streets for "
+"errors."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:634
+msgid ""
+"Typically these problems are generated by a break in the network, the one "
+"way direction set wrong, maybe an error related to z-levels or a network "
+"that is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:636
+msgid ""
+"The above tools do not detect all network issues, but they will identify "
+"some common problems. There are other problems that are hard to detect "
+"because they are more global in nature like multiple disconnected networks. "
+"Think of an island with a road network that is not connected to the mainland"
+" network because the bridge or ferry routes are missing."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:644
+msgid "Performance Tips"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:651
+msgid "For the Routing functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:653
+msgid ""
+"To get faster results bound your queries to the area of interest of routing "
+"to have, for example, no more than one million rows."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:655
+msgid ""
+"Use an inner query SQL that does not include some edges in the routing "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:663
+msgid "Integrating the inner query to the pgRouting function:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:677
+msgid "For the topology functions:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:679
+msgid ""
+"When \"you know\" that you are going to remove a set of edges from the edges"
+" table, and without those edges you are going to use a routing function you "
+"can do the following:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:681
+msgid "Analize the new topology based on the actual topology:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:687
+msgid "Or create a new topology if the change is permanent:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:698
+msgid "How to contribute"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:701
+msgid "Wiki"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:702
+msgid ""
+"Edit an existing `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_ page."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:703
+msgid "Or create a new Wiki page"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:705
+msgid ""
+"Create a page on the `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:706
+msgid "Give the title an appropriate name"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:709
+msgid ""
+"`Example <https://github.com/pgRouting/pgrouting/wiki/How-to:-Handle-"
+"parallel-edges-(KSP)>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:713
+msgid "Adding Functionaity to pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:714
+msgid ""
+"Consult the `developer's documentation "
+"<http://docs.pgrouting.org/doxy/2.4/index.html>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:719
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:720
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:721
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgRouting-installation.po b/locale/es/LC_MESSAGES/pgRouting-installation.po
new file mode 100644
index 0000000..71b7f5f
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgRouting-installation.po
@@ -0,0 +1,418 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-installation.rst:13
+msgid "Installation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:16
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:17
+msgid ":ref:`install-short`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:18
+msgid ":ref:`install_get_sources`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:19
+msgid ":ref:`install_enable_db`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:20
+msgid ":ref:`install_dependencies`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:21
+msgid ":ref:`install_configuring`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:22
+msgid ":ref:`install_build`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:23
+msgid ":ref:`install_testing`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:25
+msgid ""
+"Instructions for downloading and installing binaries for different Operative"
+" systems instructions and additional notes and corrections not included in "
+"this documentation can be found in `Installation wiki "
+"<https://github.com/pgRouting/pgrouting/wiki/Notes-on-Download%2C-"
+"Installation-and-building-pgRouting>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:27
+msgid ""
+"To use pgRouting postGIS needs to be installed, please read the information "
+"about installation in this `Install Guide "
+"<http://www.postgis.us/presentations/postgis_install_guide_22.html>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:32
+msgid "Short Version"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:37
+msgid "Extracting the tar ball"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:44
+msgid "To compile assuming you have all the dependencies in your search path:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:54
+msgid ""
+"Once pgRouting is installed, it needs to be enabled in each individual "
+"database you want to use it in."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:66
+msgid "Get the sources"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:69
+msgid ""
+"The pgRouting latest release can be found in "
+"https://github.com/pgRouting/pgrouting/releases/latest"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:72
+msgid "wget"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:73
+msgid "To download this release:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:81
+msgid "Goto :ref:`install-short` to the extract and compile instructions."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:84
+msgid "git"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:85
+msgid "To download the repository"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:93
+msgid ""
+"Goto :ref:`install-short` to the compile instructions (there is no tar "
+"ball)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:100
+msgid "Enabling and upgrading in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:103
+msgid "Enabling the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:104
+msgid ""
+"pgRouting is an extension and depends on postGIS. Enabling postGIS before "
+"enabling pgRouting in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:113
+msgid "Upgrading the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:114
+msgid ""
+"To upgrade pgRouting in the database to version 2.4.0 use the following "
+"command:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:122
+msgid ""
+"More information can be found in "
+"https://www.postgresql.org/docs/current/static/sql-createextension.html"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:128
+msgid "Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:131
+msgid "Compilation Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:132
+msgid ""
+"To be able to compile pgRouting, make sure that the following dependencies "
+"are met:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:134
+msgid "C and C++0x compilers * g++ version >= 4.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:136
+msgid "Postgresql version >= 9.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:137
+msgid "PostGIS version >= 2.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:138
+msgid "The Boost Graph Library (BGL). Version >= 1.46"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:139
+msgid "CMake >= 2.8.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:140
+msgid "CGAL >= 4.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:144
+msgid "optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:145
+msgid "For user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:147
+msgid "Sphinx >= 1.1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:148
+msgid "Latex"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:150
+msgid "For developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:152
+msgid "Doxygen >= 1.7"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:154
+msgid "For testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:156
+msgid "pgtap"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:157
+msgid "pg_prove"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:161
+msgid "Example: Installing dependencies on linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:162
+msgid "Installing the compilation dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:174
+msgid "Installing the optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:188
+msgid "Configuring"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:190
+msgid "pgRouting uses the `cmake` system to do the configuration."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:192
+msgid "The build directory is different from the source directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:194
+msgid "Create the build directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:201
+msgid "Configurable variables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:205
+msgid "To see the variables that can be configured"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:213
+msgid "Configuring The Documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:214
+msgid ""
+"Most of the effort of the documentation has being on the HTML files. Some "
+"variables for the documentation:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Variable"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Comment"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "WITH_DOC"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+#: ../../build/doc/pgRouting-installation.rst:223
+#: ../../build/doc/pgRouting-installation.rst:224
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "BOOL=OFF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "Turn on/off building the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "BUILD_HTML"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BOOL=ON"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "If ON, turn on/off building HTML for user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BUILD_DOXY"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "If ON, turn on/off building HTML for developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "BUILD_LATEX"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "If ON, turn on/off building PDF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "BUILD_MAN"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "If ON, turn on/off building MAN pages"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "DOC_USE_BOOTSTRAP"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:228
+msgid "Configuring with documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:234
+msgid "Most of the effort of the documentation has being on the html files."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:240
+msgid "Building"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:242
+msgid "Using ``make`` to build the code and the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:244
+msgid "The following instructions start from *path/to/pgrouting/build*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:253
+msgid ""
+"We have tested on several platforms, For installing or reinstalling all the "
+"steps are needed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:255
+msgid "The sql signatures are configured and build in the ``cmake`` command."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:258
+msgid "MinGW on Windows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:269
+msgid "Linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:270
+msgid "The following instructions start from *path/to/pgrouting*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:280
+msgid "When the configuration changes:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:286
+msgid "and start the build process as mentioned above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:291
+msgid "Testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:293
+msgid "Currently there is no :code:`make test` and testing is done as follows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:295
+msgid "The following instructions start from *path/to/pgrouting/*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:305
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:308
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:309
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:310
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgRouting-introduction.po b/locale/es/LC_MESSAGES/pgRouting-introduction.po
new file mode 100644
index 0000000..2f5927b
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgRouting-introduction.po
@@ -0,0 +1,222 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-introduction.rst:13
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:15
+msgid ""
+"pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL"
+" <http://postgresql.org>`_ geospatial database and adds routing and other "
+"network analysis functionality. A predecessor of pgRouting – pgDijkstra, "
+"written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was "
+"later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to "
+"pgRouting. The project is now supported and maintained by `Georepublic "
+"<http://georepublic.info>`_, `iMaptools <http://imaptools.com/>`__ and a "
+"broad user community."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:17
+msgid ""
+"pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ "
+"project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo"
+" Live <http://live.osgeo.org/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:23
+msgid "License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:25
+msgid "The following licenses can be found in pgRouting:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:30
+msgid "**License**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:32
+msgid "GNU General Public License, version 2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:33
+msgid ""
+"Most features of pgRouting are available under `GNU General Public License, "
+"version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:34
+msgid "Boost Software License - Version 1.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:35
+msgid ""
+"Some Boost extensions are available under `Boost Software License - Version "
+"1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:36
+msgid "MIT-X License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:37
+msgid ""
+"Some code contributed by iMaptools.com is available under MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:38
+msgid "Creative Commons Attribution-Share Alike 3.0 License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:39
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:41
+msgid ""
+"In general license information should be included in the header of each "
+"source file."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:45
+msgid "Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:48
+msgid "This Release Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:51
+#: ../../build/doc/pgRouting-introduction.rst:71
+msgid "Individuals (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:53
+msgid "Maoguang Wang, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:55
+msgid ""
+"And all the people that give us a little of their time making comments, "
+"finding issues, making pull requests etc."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:58
+#: ../../build/doc/pgRouting-introduction.rst:76
+msgid "Corporate Sponsors (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:60
+#: ../../build/doc/pgRouting-introduction.rst:78
+msgid ""
+"These are corporate entities that have contributed developer time, hosting, "
+"or direct monetary funding to the pgRouting project:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:62
+msgid "`Georepublic <https://georepublic.info/en/>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:63
+msgid ""
+"`Google Summer of Code <https://developers.google.com/open-source/gsoc/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:64
+msgid "`iMaptools <http://imaptools.com>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:65
+msgid "`Paragon Corporation <http://www.paragoncorporation.com/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:68
+msgid "Contributors Past & Present:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:73
+msgid ""
+"Akio Takubo, Andrea Nardelli, Anton Patrushev, Ashraf Hossain, Christian "
+"Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki,"
+" Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, "
+"Kai Behncke, Kishore Kumar, Ko Nagase, Manikata Kondeti, Mario Basa, Martin "
+"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Zia, Mukul Priya, Razequl"
+" Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Stephen Woodbridge, "
+"Sylvain Housseman, Sylvain Pasche, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:80
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:81
+msgid "CSIS (University of Tokyo)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:82
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:83
+msgid "Google Summer of Code"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:84
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:85
+msgid "Orkney"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:86
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:90
+msgid "More Information"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:92
+msgid ""
+"The latest software, documentation and news items are available at the "
+"pgRouting web site http://pgrouting.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:93
+msgid ""
+"PostgreSQL database server at the PostgreSQL main site "
+"http://www.postgresql.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:94
+msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:95
+msgid "Boost C++ source libraries at http://www.boost.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:96
+msgid ""
+"Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:97
+msgid ""
+"The Migration guide can be found at "
+"https://github.com/pgRouting/pgrouting/wiki/Migration-Guide."
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_KSP.po b/locale/es/LC_MESSAGES/pgr_KSP.po
new file mode 100644
index 0000000..2ace271
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_KSP.po
@@ -0,0 +1,402 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_KSP.rst:13
+msgid "pgr_KSP"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:18
+msgid "``pgr_KSP`` — Returns the \"K\" shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:28
+msgid "Signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:34
+msgid ""
+"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
+" number of shortest paths desired."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:52
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:64
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:73
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14 ../../build/doc/pgr_KSP.rst:110
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:80
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86 ../../build/doc/pgr_KSP.rst:87
+#: ../../build/doc/pgr_KSP.rst:107 ../../build/doc/pgr_KSP.rst:108
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "**k**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88 ../../build/doc/pgr_KSP.rst:105
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "The desiered number of paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89 ../../build/doc/pgr_KSP.rst:90
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid ""
+"(optional). When ``true`` returns all the paths stored in the process heap. "
+"Default is ``false`` which only returns ``k`` paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:93
+msgid ""
+"Roughly, if the shortest path has ``N`` edges, the heap will contain about "
+"than ``N * k`` paths for small value of ``k`` and ``k > 1``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:98
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:100
+msgid ""
+"Returns set of ``(seq, path_seq, path_id, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid ""
+"Relative position in the path of ``node`` and ``edge``. Has value **1** for "
+"the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid ""
+"Path identifier. The ordering of the paths For two paths i, j if i < j then "
+"agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "Identifier of the node in the path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110 ../../build/doc/pgr_KSP.rst:111
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:115
+msgid ""
+"During the transition to 3.0, because pgr_ksp version 2.0 doesn't have "
+"defined a directed flag nor a heap_path flag, when pgr_ksp is used with only"
+" one flag version 2.0 signature will be used."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:119
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:122
+msgid "Examples to handle the one flag to choose signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:124 ../../build/doc/pgr_KSP.rst:134
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:132
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:143
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:145
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:153
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:155
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:164
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:166
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:173
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:175
+msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:176
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:179
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:180
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:181
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_TSP.po b/locale/es/LC_MESSAGES/pgr_TSP.po
new file mode 100644
index 0000000..a9fecef
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_TSP.po
@@ -0,0 +1,224 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_TSP.rst:13
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:18
+msgid "``pgr_TSP`` - Returns a route that visits all the nodes exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:21
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:22
+msgid "Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:26
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:28
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:30
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:32
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of matrix cell contents. The "
+"matrix information must be symmetrical."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:58
+msgid "Basic Use"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:67
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:96
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:103
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:106
+msgid "Description of the Matrix Cell SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111 ../../build/doc/pgr_TSP.rst:112
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "Cost for going from start_vid to end_vid"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:116
+msgid "Can be Used with:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:118
+msgid ":ref:`pgr_dijkstraCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:119
+msgid ":ref:`pgr_withPointsCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:120
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:121
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:123
+msgid "To generate a symmetric matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:125
+msgid "directed := false."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:127
+msgid ""
+"If using directed := true, the resulting non symmetric matrix must be "
+"converted to symmetric by fixing the non symmetric values according to your "
+"application needs."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:145
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:147
+msgid "Using with points of interest."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:149
+msgid "To generate a symmetric matrix:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:151
+msgid ""
+"the **side** information of pointsOfInterset is ignored by not including it "
+"in the query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:152
+msgid "and **directed := false**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:158
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:163
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:165
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:166
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:167
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:170
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:171
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:172
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_aStar.po b/locale/es/LC_MESSAGES/pgr_aStar.po
new file mode 100644
index 0000000..4e2ccb4
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_aStar.po
@@ -0,0 +1,642 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStar.rst:13
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:18
+msgid "``pgr_aStar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:27
+msgid "pgr_astar(one to one) 2.0.0, Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:28
+msgid "pgr_astar(other signatures) 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:33
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:35
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:37
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:38
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:40
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:46
+msgid "The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:50
+msgid "The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:52
+msgid "When (x,y) coordinates for the same vertex identifier differ:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:54
+msgid "A random selection of the vertex's (x,y) coordinates is used."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:56
+msgid "Running time: :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:84
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:92
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:99
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:112
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:118
+msgid "Undirected using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:130
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:138 ../../build/doc/pgr_aStar.rst:165
+#: ../../build/doc/pgr_aStar.rst:194
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139 ../../build/doc/pgr_aStar.rst:166
+#: ../../build/doc/pgr_aStar.rst:195
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:141
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:144
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:145
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:157
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:166
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:168
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:171
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:172 ../../build/doc/pgr_aStar.rst:201
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:186
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:195
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:197
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:200
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:203
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:217
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13 ../../build/doc/pgr_aStar.rst:234
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:228
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:231
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234 ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235 ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:238
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:239
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:243
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:244
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:245
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:246
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:247
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:248
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250 ../../build/doc/pgr_aStar.rst:251
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:260
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:262
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:263
+msgid ":doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:264
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:265
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:268
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:269
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:270
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_aStarCost.po b/locale/es/LC_MESSAGES/pgr_aStarCost.po
new file mode 100644
index 0000000..41e1637
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_aStarCost.po
@@ -0,0 +1,528 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCost.rst:13
+msgid "pgr_aStarCost -- proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:18
+msgid ""
+"``pgr_aStarCost`` — Returns the aggregate cost shortest path using "
+":ref:`astar` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:26
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:53
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:60
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:72
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:78
+msgid "Setting a Heuristic"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:90
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99
+msgid ""
+"This signature finds a path from one ``start_vid`` to each ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:98 ../../build/doc/pgr_aStarCost.rst:125
+#: ../../build/doc/pgr_aStarCost.rst:154
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99 ../../build/doc/pgr_aStarCost.rst:126
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:101
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:104
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:105
+msgid ""
+"The extra ``end_vid`` column in the result is used to distinguish to which "
+"path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:117
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:126
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:128
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:131
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:132
+msgid ""
+"The extra ``start_vid`` column in the result is used to distinguish to "
+"which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:146
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:157
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:160
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:161
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:163
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:177
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_aStarCost.rst:194 ../../build/doc/pgr_aStarCost.rst:195
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:188
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:191
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:198
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:199
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:203
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:204
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:205
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:206
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:207
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:208
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210 ../../build/doc/pgr_aStarCost.rst:211
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. See "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:224
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:226
+msgid ":ref:`astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:227
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:228
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:229
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:232
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:233
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:234
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_aStarCostMatrix.po b/locale/es/LC_MESSAGES/pgr_aStarCostMatrix.po
new file mode 100644
index 0000000..5193921
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_aStarCostMatrix.po
@@ -0,0 +1,457 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:13
+msgid "pgr_aStarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:18
+msgid ""
+"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:33
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:37
+msgid "Using aStar algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:40
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:57
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:68
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:88
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:90
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "**vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "Array of vertices_identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:115
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:116
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:120
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:121
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:122
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:123
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:124
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:125
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:150
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:152
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:153
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:154
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:155
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_alphaShape.po b/locale/es/LC_MESSAGES/pgr_alphaShape.po
new file mode 100644
index 0000000..851cd18
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_alphaShape.po
@@ -0,0 +1,169 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_alphaShape.rst:13
+msgid "pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:21
+msgid "``pgr_alphaShape`` — Core function for alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:27
+msgid ""
+"Returns a table with (x, y) rows that describe the vertices of an alpha "
+"shape."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:50
+msgid "Returns a vertex record for each row:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:52
+msgid "x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:53
+msgid "y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:55
+msgid ""
+"If a result includes multiple outer/inner rings, return those with separator"
+" row (x=NULL and y=NULL)."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:58
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:59
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:60
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:61
+msgid ""
+"Supported to return multiple outer/inner ring coordinates with separator row"
+" (x=NULL and y=NULL) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:64
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:65
+msgid ""
+"PgRouting's alpha shape implementation has no way to control the order of "
+"the output points, so the actual output might different for the same input "
+"data. The first query, has the output ordered, he second query shows an "
+"example usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:70
+msgid "Example: the (ordered) results"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:76
+msgid "Example: calculating the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:77
+msgid "Steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:79
+msgid "Calculates the alpha shape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:80
+msgid "the :code:`ORDER BY` clause is not used."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:81
+msgid "constructs a polygon"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:82
+msgid "and computes the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:90
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:93
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:95
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:96
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:99
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:100
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:101
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_analyzeGraph.po b/locale/es/LC_MESSAGES/pgr_analyzeGraph.po
new file mode 100644
index 0000000..22237a6
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_analyzeGraph.po
@@ -0,0 +1,361 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeGraph.rst:13
+msgid "pgr_analyzeGraph"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:19
+msgid "``pgr_analyzeGraph`` — Analyzes the network topology."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:25
+#: ../../build/doc/pgr_analyzeGraph.rst:61
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:27
+#: ../../build/doc/pgr_analyzeGraph.rst:63
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:28
+#: ../../build/doc/pgr_analyzeGraph.rst:69
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:43
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:44
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:46
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:47
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:50
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:51
+msgid "The analyze graph function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:53
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:54
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:55
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:56
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:57
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:58
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:59
+msgid ""
+"``text`` Condition to select a subset or rows. Default value is ``true``"
+" to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:65
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:66
+msgid ""
+"Fills completely the ``cnt`` and ``chk`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:67
+msgid ""
+"Returns the analysis of the section of the network defined by "
+"``rows_where``"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:71
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:72
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:73
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:74
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:75
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:79
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:80
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:82
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:84
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:86
+msgid "``integer`` Indicator that the vertex might have a problem."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:87
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:88
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:89
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:92
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:93
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:96
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:99
+msgid "The simplest way to use pgr_analyzeGraph is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:106
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:111
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order: 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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:130
+#: ../../build/doc/pgr_analyzeGraph.rst:208
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:131
+#: ../../build/doc/pgr_analyzeGraph.rst:209
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:141
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:148
+#: ../../build/doc/pgr_analyzeGraph.rst:223
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:149
+msgid ""
+"Selecting rows based on the id. Displays the analysis a the section of the "
+"network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:155
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:161
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:172
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:174
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:183
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:184
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:219
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:224
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:234
+msgid ""
+"Selecting the rows WHERE the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:246
+msgid ""
+"Selecting the rows WHERE the geometry is near the place='myhouse' of the "
+"table ``othertable``. (note the use of quote_literal)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:263
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:390
+msgid "The examples use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:394
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:396
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:397
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:398
+msgid ""
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
+"vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:399
+msgid ""
+":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
+"edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:402
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:403
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:404
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_analyzeOneWay.po b/locale/es/LC_MESSAGES/pgr_analyzeOneWay.po
new file mode 100644
index 0000000..627da76
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_analyzeOneWay.po
@@ -0,0 +1,290 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:13
+msgid "pgr_analyzeOneway"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:19
+msgid ""
+"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:25
+msgid ""
+"This function analyzes oneway streets in a graph and identifies any flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:42
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:44
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:46
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:49
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:50
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:52
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:53
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:56
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:57
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:58
+msgid "``text[]`` source node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:59
+msgid "``text[]`` source node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:60
+msgid "``text[]`` target node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:61
+msgid "``text[]`` target node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:62
+msgid ""
+"``text`` oneway column name name of the network table. Default value is "
+"``oneway``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:63
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:64
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:65
+msgid ""
+"``boolean`` flag to treat oneway NULL values as bi-directional. Default "
+"value is ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:67
+msgid ""
+"It is strongly recommended to use the named notation. See "
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
+":ref:`pgr_createTopology <pgr_create_topology>` for examples."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:70
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:72
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:74
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:75
+msgid ""
+"Fills completely the ``ein`` and ``eout`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:77
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:79
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:80
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:81
+msgid "The names of source , target or oneway are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:83
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:86
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:87
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:89
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:91
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:92
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:93
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:94
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:95
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:96
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:100
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:101
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:105
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:129
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:135
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:136
+msgid ":ref:`analytics` for an overview of the analysis of a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:137
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:138
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_articulationPoints.po b/locale/es/LC_MESSAGES/pgr_articulationPoints.po
new file mode 100644
index 0000000..225a3d6
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_articulationPoints.po
@@ -0,0 +1,316 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_articulationPoints.rst:13
+msgid "pgr_articulationPoints - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:16
+msgid ""
+"``pgr_articulationPoints`` - Return the articulation points of an undirected"
+" graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:32
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph. This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:62
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:93
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_bdAstar.po b/locale/es/LC_MESSAGES/pgr_bdAstar.po
new file mode 100644
index 0000000..fdfaa05
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_bdAstar.po
@@ -0,0 +1,669 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstar.rst:13
+msgid "pgr_bdAstar"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:18
+msgid "``pgr_bdAstar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:27
+msgid "pgr_bdAstar(one to one) 2.0.0, Signature change on 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:28
+msgid "pgr_bdAstar(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:54
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:56
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:57
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:61
+msgid "Avaliability"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:62
+msgid "pgr_bdAstar(one to one) 2.0, signature change on 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:63
+msgid "pgr_bdAstar(other signatures) 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:84
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:85
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:86
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:89
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:102
+msgid "pgr_bdAstar One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+" allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:109
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:110 ../../build/doc/pgr_bdAstar.rst:137
+#: ../../build/doc/pgr_bdAstar.rst:162 ../../build/doc/pgr_bdAstar.rst:186
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111 ../../build/doc/pgr_bdAstar.rst:138
+#: ../../build/doc/pgr_bdAstar.rst:163 ../../build/doc/pgr_bdAstar.rst:187
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:114
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:116
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:127
+msgid "pgr_bdAstar One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:139
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:135 ../../build/doc/pgr_bdAstar.rst:160
+#: ../../build/doc/pgr_bdAstar.rst:184
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:136 ../../build/doc/pgr_bdAstar.rst:161
+#: ../../build/doc/pgr_bdAstar.rst:185
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:141
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:152
+msgid "pgr_bdAstar Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:163
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:165
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:176
+msgid "pgr_bdAstar Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:187
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:189
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:196
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:213
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:215
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:216
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:217
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:218
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:221
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:222
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:223
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_bdAstarCost.po b/locale/es/LC_MESSAGES/pgr_bdAstarCost.po
new file mode 100644
index 0000000..9b72e10
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_bdAstarCost.po
@@ -0,0 +1,594 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCost.rst:13
+msgid "pgr_bdAstarCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:18
+msgid "``pgr_bdAstarCost`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:26
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:46
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:48
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAstarCost`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:49
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:56
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:64
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:72
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:73
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:74
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:77
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:90
+msgid "pgr_bdAstarCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:128
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:97
+#: ../../build/doc/pgr_bdAstarCost.rst:124
+#: ../../build/doc/pgr_bdAstarCost.rst:149
+#: ../../build/doc/pgr_bdAstarCost.rst:173
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:98
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:99
+#: ../../build/doc/pgr_bdAstarCost.rst:126
+#: ../../build/doc/pgr_bdAstarCost.rst:151
+#: ../../build/doc/pgr_bdAstarCost.rst:175
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:127
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:103
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:105
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:116
+msgid "pgr_bdAstarCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:125
+#: ../../build/doc/pgr_bdAstarCost.rst:150
+#: ../../build/doc/pgr_bdAstarCost.rst:174
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:130
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:141
+msgid "pgr_bdAstarCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:154
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:165
+msgid "pgr_bdAstarCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:178
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:185
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:204
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:205
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:206
+msgid ""
+"`Migration Guide <https://github.com/cvvergara/pgrouting/wiki/Migration-"
+"Guide#pgr_bdastar>`_"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:207
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:208
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:211
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:212
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:213
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_bdAstarCostMatrix.po b/locale/es/LC_MESSAGES/pgr_bdAstarCostMatrix.po
new file mode 100644
index 0000000..c8738fa
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_bdAstarCostMatrix.po
@@ -0,0 +1,536 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:13
+msgid "pgr_bdAstarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:18
+msgid ""
+"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdAstar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:68
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:64
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:65
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:66
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:67
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:70
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:82
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:95
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:91
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:92
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:93
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:94
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:97
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:99
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:107
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:135
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_bdDijkstra.po b/locale/es/LC_MESSAGES/pgr_bdDijkstra.po
new file mode 100644
index 0000000..b05e40f
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_bdDijkstra.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstra.rst:13
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:15
+msgid ""
+"``pgr_bdDijkstra`` — Returns the shortest path(s) using Bidirectional "
+"Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:23
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:24
+msgid "pgr_bdDijkstra(one to one) 2.0.0, Signature changed 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:25
+msgid "pgr_bdDijkstra(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:60
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:67
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:80
+msgid "pgr_bdDijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:87
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:89
+#: ../../build/doc/pgr_bdDijkstra.rst:112
+#: ../../build/doc/pgr_bdDijkstra.rst:141
+#: ../../build/doc/pgr_bdDijkstra.rst:170
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:90
+#: ../../build/doc/pgr_bdDijkstra.rst:113
+#: ../../build/doc/pgr_bdDijkstra.rst:142
+#: ../../build/doc/pgr_bdDijkstra.rst:171
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:103
+msgid "pgr_bdDijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:110
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:115
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:118
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:119
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:132
+msgid "pgr_bdDijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:139
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:144
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:147
+#: ../../build/doc/pgr_bdDijkstra.rst:176
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:148
+#: ../../build/doc/pgr_bdDijkstra.rst:177
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:161
+msgid "pgr_bdDijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:173
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:179
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:190
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:208
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:210
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:211
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:212
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:213
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_bdDijkstraCost.po b/locale/es/LC_MESSAGES/pgr_bdDijkstraCost.po
new file mode 100644
index 0000000..0516529
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_bdDijkstraCost.po
@@ -0,0 +1,470 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:13
+msgid "pgr_bdDijkstraCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:15
+msgid ""
+"``pgr_bdDijkstraCost`` — Returns the shortest path(s)'s cost using "
+"Bidirectional Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:23
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:30
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:52
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:59
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:72
+msgid "pgr_bdDijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:80
+#: ../../build/doc/pgr_bdDijkstraCost.rst:102
+#: ../../build/doc/pgr_bdDijkstraCost.rst:130
+#: ../../build/doc/pgr_bdDijkstraCost.rst:158
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:94
+msgid "pgr_bdDijkstraCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:105
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:108
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:109
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:122
+msgid "pgr_bdDijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:133
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:136
+#: ../../build/doc/pgr_bdDijkstraCost.rst:164
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:137
+#: ../../build/doc/pgr_bdDijkstraCost.rst:165
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:150
+msgid "pgr_bdDijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:161
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:167
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:178
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:195
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:197
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:198
+msgid ":ref:`pgr_bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:199
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:200
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:203
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:204
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:205
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po b/locale/es/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
new file mode 100644
index 0000000..0b0a2ae
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
@@ -0,0 +1,382 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:13
+msgid "pgr_bdDijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_bdDijkstraCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdDijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:66
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:86
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:88
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:122
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:124
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:132
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:134
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:135
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:136
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:137
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_biconnectedComponents.po b/locale/es/LC_MESSAGES/pgr_biconnectedComponents.po
new file mode 100644
index 0000000..f4db188
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_biconnectedComponents.po
@@ -0,0 +1,349 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:13
+msgid "pgr_biconnectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:15
+msgid ""
+"``pgr_biconnectedComponents`` — Return the biconnected components of an "
+"undirected graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:31
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:36
+msgid "This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:43
+msgid "Components are described by edges"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:45
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:47
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:48
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:50
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:65
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:78
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:94
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:96
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:97
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:100
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:101
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:102
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_boykovKolmogorov.po b/locale/es/LC_MESSAGES/pgr_boykovKolmogorov.po
new file mode 100644
index 0000000..84d76a4
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_boykovKolmogorov.po
@@ -0,0 +1,435 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:14
+msgid "pgr_boykovKolmogorov - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:20
+msgid ""
+"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that "
+"maximizes the flow from the sources to the targets using Boykov Kolmogorov "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowBoykovKolmogorov"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:42
+msgid "Running time: Polynomial"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:61
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:63
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:84
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:103
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:105
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:124
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:126
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:141
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:159
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:161
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_pushRelabel <pgr_pushRelabel>`, "
+":ref:`pgr_EdmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:162
+msgid "http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_bridges.po b/locale/es/LC_MESSAGES/pgr_bridges.po
new file mode 100644
index 0000000..a80bf4e
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_bridges.po
@@ -0,0 +1,310 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bridges.rst:13
+msgid "pgr_bridges - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:16
+msgid "``pgr_bridges`` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:31
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components. This implementation can only be used with an"
+" undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:40
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:42
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:44
+msgid "Running time: :math:`O(E * (V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:47
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:59
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:72
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:88
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:90
+msgid "http://en.wikipedia.org/wiki/Bridge_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:91
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:94
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:95
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:96
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_connectedComponents.po b/locale/es/LC_MESSAGES/pgr_connectedComponents.po
new file mode 100644
index 0000000..2474096
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_connectedComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_connectedComponents.rst:13
+msgid "pgr_connectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:16
+msgid ""
+"``pgr_connectedComponents`` — Return the connected components of an "
+"undirected graph using a DFS-based approach. In particular, the algorithm "
+"implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:32
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other. This implementation can only be used with an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:39
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:41
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:45
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:46
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:48
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:63
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:76
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:92
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:94
+msgid "http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:95
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:98
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:99
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:100
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_contractGraph.po b/locale/es/LC_MESSAGES/pgr_contractGraph.po
new file mode 100644
index 0000000..8d27664
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_contractGraph.po
@@ -0,0 +1,488 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_contractGraph.rst:13
+msgid "pgr_contractGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:15
+msgid ""
+"``pgr_contractGraph`` — Performs graph contraction and returns the "
+"contracted vertices and edges."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:23
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:32
+msgid ""
+"Contraction reduces the size of the graph by removing some of the vertices "
+"and edges and, for example, might add edges that represent a sequence of "
+"original edges decreasing the total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:52
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:38
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:40
+msgid "There are two types of contraction methods used namely,"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:42
+msgid "Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:43
+msgid "Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:45
+msgid "The values returned include the added edges and contracted vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:47
+msgid "The returned values are ordered as follows:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:49
+msgid "column `id` ascending when type = `v`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:50
+msgid "column `id` descending when type = `e`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:55
+msgid "Signature Summary:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:57
+msgid "The pgr_contractGraph function has the following signatures:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:74
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:80
+msgid "Making a dead end contraction and a linear contraction."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:87
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:93
+msgid ""
+"Making a dead end contraction and a linear contraction and vertex 2 is "
+"forbidden from contraction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_contractGraph.rst:136
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+msgid "**contraction_order**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "Ordered contraction operations."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "1 = Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:114
+msgid "2 = Linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "**forbidden_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid ""
+"(optional). Identifiers of vertices forbidden from contraction. Default is "
+"an empty array."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid "**max_cycles**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid ""
+"(optional). Number of times the contraction operations on "
+"`contraction_order` will be performed. Default is 1."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:118
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:123
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:125
+msgid ""
+"RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:127
+msgid "The function returns a single row. The columns of the row are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "**type**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "Type of the `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "'v' when `id` is an identifier of a vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:135
+msgid "'e' when `id` is an identifier of an edge."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:136
+#: ../../build/doc/pgr_contractGraph.rst:146
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:143
+msgid "Identifier of:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:137
+msgid "the vertex when `type = 'v'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:139
+msgid "The vertex belongs to the edge_table passed as a parameter."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:140
+msgid "the edge when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:142
+msgid "The `id` is a decreasing sequence starting from **-1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:144
+msgid "Representing a pseudo `id` as is not incorporated into the edge_table."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "Array of contracted vertex identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid ""
+"Identifier of the source vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid ""
+"Identifier of the target vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid ""
+"Weight of the edge (`source`, `target`). Valid values when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:152
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:154
+msgid "Only dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:160
+msgid "Only linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:168
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:169
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:170
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_createTopology.po b/locale/es/LC_MESSAGES/pgr_createTopology.po
new file mode 100644
index 0000000..44a282e
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_createTopology.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createTopology.rst:13
+msgid "pgr_createTopology"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:18
+msgid ""
+"``pgr_createTopology`` — Builds a network topology based on the geometry "
+"information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:24
+#: ../../build/doc/pgr_createTopology.rst:72
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:26
+msgid ""
+"``OK`` after the network topology has been built and the vertices table "
+"created."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:27
+msgid "``FAIL`` when the network topology was not built due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:42
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:45
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:46
+msgid "The topology creation function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:48
+msgid "``text`` Network table name. (may contain the schema name AS well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:49
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:50
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:52
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:53
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:54
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:56
+msgid "``boolean`` Clean any previous topology. Default value is ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:60
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:62
+msgid "The ``source`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:63
+msgid "The ``target`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:65
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:67
+msgid "``id``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:68
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:69
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:70
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:74
+msgid "``OK`` after the network topology has been built."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:76
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:77
+msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:78
+msgid ""
+"Fills the source and target columns of the edge table referencing the ``id``"
+" of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:81
+msgid "``FAIL`` when the network topology was not built due to an error:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:83
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:84
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:85
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:86
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:90
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:91
+msgid ""
+"The vertices table is a requirement of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:93
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:95
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:96
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:97
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:98
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:99
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:100
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:103
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:104
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:107
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:110
+msgid "The simplest way to use pgr_createTopology is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:118
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:119
+msgid "We get the same result AS the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``id`` of the table ``ege_table`` is passed to "
+"the function as the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``the_geom`` is passed to the function as the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:136
+#: ../../build/doc/pgr_createTopology.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:137
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:153
+#: ../../build/doc/pgr_createTopology.rst:219
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:154
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:160
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with ``id "
+"= 5``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:166
+#: ../../build/doc/pgr_createTopology.rst:227
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:176
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:178
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:185
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:186
+msgid ""
+"The arguments need to be given in the order described in the parameters."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:188
+msgid ""
+"Note that this example uses clean flag. So it recreates the whole vertices "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropiriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``gid`` of the table ``mytable`` is passed to "
+"the function AS the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``mygeom`` is passed to the function AS the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:206
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:220
+msgid "Based on id:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:235
+msgid "Examples with full output"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:237
+msgid ""
+"This example start a clean topology, with 5 edges, and then its incremented "
+"to the rest of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:243
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:247
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:249
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:250
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:251
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:254
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:255
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:256
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_createVerticesTable.po b/locale/es/LC_MESSAGES/pgr_createVerticesTable.po
new file mode 100644
index 0000000..191059e
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_createVerticesTable.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createVerticesTable.rst:13
+msgid "pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:18
+msgid ""
+"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:24
+#: ../../build/doc/pgr_createVerticesTable.rst:62
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:26
+#: ../../build/doc/pgr_createVerticesTable.rst:64
+msgid "``OK`` after the vertices table has been reconstructed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:27
+#: ../../build/doc/pgr_createVerticesTable.rst:69
+msgid ""
+"``FAIL`` when the vertices table was not reconstructed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:43
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:44
+msgid ""
+"The reconstruction of the vertices table function accepts the following "
+"parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:46
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:47
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:48
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:49
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:50
+msgid ""
+"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
+"to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:54
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:56
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:58
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:59
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:60
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:66
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:67
+msgid ""
+"Fills ``id`` and ``the_geom`` columns of the vertices table based on the "
+"source and target columns of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:71
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:72
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:73
+msgid "The names of source, target are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:74
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:77
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:78
+msgid ""
+"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:80
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:82
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:83
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:84
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:86
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:87
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:90
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:91
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:94
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:97
+msgid "The simplest way to use pgr_createVerticesTable is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:104
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:109
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:111
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:128
+#: ../../build/doc/pgr_createVerticesTable.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:129
+#: ../../build/doc/pgr_createVerticesTable.rst:206
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:139
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:146
+#: ../../build/doc/pgr_createVerticesTable.rst:220
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:147
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:153
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:159
+#: ../../build/doc/pgr_createVerticesTable.rst:243
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:170
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:172
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:180
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:181
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:0
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:216
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:221
+msgid "Selecting rows based on the gid."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:231
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``gid`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:282
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:286
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:288
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:289
+msgid ""
+":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
+"on the geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:290
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:291
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:294
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:295
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:296
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_dijkstra.po b/locale/es/LC_MESSAGES/pgr_dijkstra.po
new file mode 100644
index 0000000..45cbd10
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_dijkstra.po
@@ -0,0 +1,621 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid ""
+"``pgr_dijkstra`` — Returns the shortest path(s) using Dijkstra algorithm. In"
+" particular, the Dijkstra algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:24
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:25
+msgid "pgr_dijkstra(one to one) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:26
+msgid "pgr_dijkstra(other signatures) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:31
+msgid ""
+"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
+"in 1956. It is a graph search algorithm that solves the shortest path "
+"problem for a graph with non-negative edge path costs, producing a shortest "
+"path from a starting vertex (``start_vid``) to an ending vertex "
+"(``end_vid``). This implementation can be used with a directed graph and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:60
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:46
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:50
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:52
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:54
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:56
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:57
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:59
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:63
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:78
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:84
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:91
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:104
+msgid "pgr_dijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:113 ../../build/doc/pgr_dijkstra.rst:136
+#: ../../build/doc/pgr_dijkstra.rst:167 ../../build/doc/pgr_dijkstra.rst:197
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114 ../../build/doc/pgr_dijkstra.rst:137
+#: ../../build/doc/pgr_dijkstra.rst:168 ../../build/doc/pgr_dijkstra.rst:198
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:127
+msgid "pgr_dijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:137
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:139
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:142
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:143
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:158
+msgid "pgr_dijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:170
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:173 ../../build/doc/pgr_dijkstra.rst:203
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:174 ../../build/doc/pgr_dijkstra.rst:204
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:188
+msgid "pgr_dijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:198
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:200
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:206
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:215
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:225
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231 ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232 ../../build/doc/pgr_dijkstra.rst:234
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:236
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:248
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:250
+msgid ""
+"The examples of this section are based on the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:252
+msgid ""
+"The examples include combinations from starting vertices 2 and 11 to ending "
+"vertices 3 and 5 in a directed and undirected graph with and with out "
+"reverse_cost."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:256
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:258
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:267
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:269
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:277
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:279
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:287
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:289
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:297
+msgid "Equvalences between signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:299
+msgid ""
+"For queries marked as ``directed`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:301 ../../build/doc/pgr_dijkstra.rst:313
+msgid "The examples in this section use the following:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:303
+msgid ":ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:311
+msgid ""
+"For queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:315
+msgid ":ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:324
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:326
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:327
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:330
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:331
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:332
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_dijkstraCost.po b/locale/es/LC_MESSAGES/pgr_dijkstraCost.po
new file mode 100644
index 0000000..a9193fb
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_dijkstraCost.po
@@ -0,0 +1,473 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCost.rst:13
+msgid "pgr_dijkstraCost"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:19
+msgid "``pgr_dijkstraCost``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:21
+msgid ""
+"Using Dijkstra algorithm implemented by Boost.Graph, and extract only the "
+"aggregate cost of the shortest path(s) found, for the combination of "
+"vertices given."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:27
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:30
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:31
+msgid "pgr_dijkstraCost(all signatures) 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:33
+msgid ""
+"The ``pgr_dijkstraCost`` algorithm, is a good choice to calculate the sum of"
+" the costs of the shortest path for a subset of pairs of nodes of the graph."
+" We make use of the Boost's implementation of dijkstra which runs in "
+":math:`O(V \\log V + E)` time."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:42
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:43
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:44
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:45
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:47
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:51
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:55
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:57
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:60
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:62
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:64
+msgid "Any duplicated value in the `start_vids` or `end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:66
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:68
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:69
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:74
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:89
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:95
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:97
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:106
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:117
+msgid "pgr_dijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:121
+#: ../../build/doc/pgr_dijkstraCost.rst:150
+#: ../../build/doc/pgr_dijkstraCost.rst:176
+#: ../../build/doc/pgr_dijkstraCost.rst:201
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+#: ../../build/doc/pgr_dijkstraCost.rst:151
+#: ../../build/doc/pgr_dijkstraCost.rst:177
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:141
+msgid "pgr_dijkstraCost One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:152
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:167
+msgid "pgr_dijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:178
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:192
+msgid "pgr_dijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:213
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:229
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:231
+msgid "Demonstration of repeated values are ignored, and result is sorted."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:237
+msgid "Making `start_vids` the same as `end_vids`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:246
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:248
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:249
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:252
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:253
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:254
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_dijkstraCostMatrix.po b/locale/es/LC_MESSAGES/pgr_dijkstraCostMatrix.po
new file mode 100644
index 0000000..95cf121
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_dijkstraCostMatrix.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:13
+msgid "pgr_dijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_dijkstraCostMatrix`` - Calculates the a cost matrix using "
+"pgr_dijktras."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:32
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:36
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:56
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:67
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:79
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:87
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:89
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:97
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:135
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_dijkstraVia.po b/locale/es/LC_MESSAGES/pgr_dijkstraVia.po
new file mode 100644
index 0000000..0a3c5f1
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_dijkstraVia.po
@@ -0,0 +1,480 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraVia.rst:13
+msgid "pgr_dijkstraVia - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:19
+msgid ""
+"``pgr_dijkstraVia`` — Using dijkstra algorithm, it finds the route that goes"
+" through a list of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:30
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:34
+msgid ""
+"Given a list of vertices and a graph, this function is equivalent to finding"
+" the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all"
+" :math:`i < size\\_of(vertex_via)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:37
+msgid "The paths represents the sections of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:39
+msgid "This is a proposed function"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:42
+msgid "Signatrue Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:59
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:67
+msgid "Find the route that visits the vertices 1 3 9 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:77
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:86
+msgid ""
+"Find the route that visits the vertices 1 3 9 in that order on an "
+"undirected graph, avoiding U-turns when possible"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:94
+msgid "Description of the Signature"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+#: ../../build/doc/pgr_dijkstraVia.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "Array of vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid ""
+"(optional) ignores if a subsection of the route is missing and returns "
+"everything it found Default is true (is directed). When set to false the "
+"graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:119
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:121
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "Sequential value starting from 1."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "**path_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "Identifier of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "Sequential value starting from 1 for the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "Identifier of the node in the path from start_vid to end_vid."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid ""
+"Identifier of the edge used to go from node to the next node in the path "
+"sequence. -1 for the last node of the path. -2 for the last node of the "
+"route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the route "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "Total cost from ``start_vid`` to ``end_vid`` of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "**route_agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid ""
+"Total cost from ``start_vid`` of ``path_pid = 1`` to ``end_vid`` of the "
+"current ``path_pid`` ."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:142
+msgid "Find the route that visits the vertices 1 5 3 9 4 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:148
+msgid "What's the aggregate cost of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:154
+msgid ""
+"What's the route's aggregate cost of the route at the end of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:160
+msgid "How are the nodes visited in the route?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:166
+msgid ""
+"What are the aggregate costs of the route when the visited vertices are "
+"reached?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:172
+msgid ""
+"show the route's seq and aggregate cost and a status of \"passes in front\" "
+"or \"visits\" node 9"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:179
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:181
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:182
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:185
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:186
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:187
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_drivingDistance.po b/locale/es/LC_MESSAGES/pgr_drivingDistance.po
new file mode 100644
index 0000000..77f7b8e
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_drivingDistance.po
@@ -0,0 +1,391 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_drivingDistance.rst:13
+msgid "pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:19
+msgid ""
+"``pgr_drivingDistance`` - Returns the driving distance from a start node."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:28
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:29
+msgid "pgr_drivingDistance(single vertex) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:30
+msgid "pgr_drivingDistance(multiple vertices) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:35
+msgid ""
+"Using the Dijkstra algorithm, extracts all the nodes that have costs less "
+"than or equal to the value ``distance``. The edges extracted will conform to"
+" the corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:57
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:70
+msgid "Driving Distance From A Single Starting Vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:82
+msgid "Driving Distance From Multiple Starting Vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:90
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:98
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:123
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "Array of identifiers of the starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+#: ../../build/doc/pgr_drivingDistance.rst:125
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "Upper limit for the inclusion of the node in the result."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid ""
+"(optional). When ``true`` the node will only appear in the closest "
+"``start_vid`` list. Default is ``false`` which resembles several calls "
+"using the single starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:114
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:116
+msgid "Returns set of ``(seq [, start_v], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid ""
+"Identifier of the node in the path within the limits from ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid ""
+"Identifier of the edge used to arrive to ``node``. ``0`` when the ``node`` "
+"is the ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:132
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:135
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:137
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:144
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:146
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:154
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:156
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:165
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:167
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:177
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:178
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:179
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_edgeDisjointPaths.po b/locale/es/LC_MESSAGES/pgr_edgeDisjointPaths.po
new file mode 100644
index 0000000..54a0ffe
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_edgeDisjointPaths.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:14
+msgid "pgr_edgeDisjointPaths - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:19
+msgid ""
+"``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:28
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:36
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:38
+msgid ""
+"Calculates the edge disjoint paths between two groups of vertices. Utilizes "
+"underlying maximum flow algorithms to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:42
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "The main characterics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:45
+msgid "Calculates the edge disjoint paths between any two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:46
+msgid ""
+"Returns EMPTY SET when source and destination are the same, or cannot be "
+"reached."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:47
+msgid "The graph can be directed or undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:48
+msgid "One to many, many to one, many to many versions are also supported."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "Uses :ref:`pgr_boykovKolmogorov` to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:52
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:67
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:73
+msgid "Minimal use"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:81
+msgid ""
+"The minimal use is for a **directed** graph from one ``start_vid`` to one "
+"``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:93
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:98
+msgid ""
+"This signature finds the set of dijoint paths from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:96
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:120
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:149
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:175
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:97
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:121
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:150
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:176
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:117
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:126
+msgid ""
+"This signature finds the sset of disjoint paths from the ``start_vid`` to "
+"each one of the ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:122
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:151
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:177
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_edgeDisjointPaths`."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:123
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:146
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to the ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to each one of the ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:195
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:212
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:214
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:217
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:218
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:219
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_edmondsKarp.po b/locale/es/LC_MESSAGES/pgr_edmondsKarp.po
new file mode 100644
index 0000000..8523277
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_edmondsKarp.po
@@ -0,0 +1,438 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edmondsKarp.rst:14
+msgid "pgr_edmondsKarp - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:20
+msgid ""
+"``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowEdmondsKarp"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:42
+msgid "Running time: :math:`O( V * E ^ 2)`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:64
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:83
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:85
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:104
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:106
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:125
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:127
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:142
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:160
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:162
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_PushRelabel <pgr_pushRelabel>`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:163
+msgid "http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:164
+msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:167
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:168
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:169
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_eucledianTSP.po b/locale/es/LC_MESSAGES/pgr_eucledianTSP.po
new file mode 100644
index 0000000..5b9be5e
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_eucledianTSP.po
@@ -0,0 +1,187 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_eucledianTSP.rst:13
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:18
+msgid ""
+"``pgr_eucledianTSP`` - Returns a route that visits all the coordinates pairs"
+" exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:22
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:24
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:26
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:28
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:30
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of coordinates."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:33
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:48
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:54
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:63
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:75
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:90
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:99
+msgid "Description of the coordinates SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "Identifier of the coordinate. (optional)"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "X value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "Y value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:110
+msgid ""
+"When the value of **id** is not given then the coordinates will receive an "
+"**id** starting from 1, in the order given."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:125
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:127
+msgid "Skipping the Simulated Annealing & showing some process information"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:135
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:139
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:140
+msgid "New in version 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:145
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:147
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:148
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:149
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:152
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:153
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:154
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_floydWarshall.po b/locale/es/LC_MESSAGES/pgr_floydWarshall.po
new file mode 100644
index 0000000..4fe9ece
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_floydWarshall.po
@@ -0,0 +1,348 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_floydWarshall.rst:13
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:18
+msgid ""
+"``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path "
+"for each pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:31
+msgid ""
+"The Floyd-Warshall algorithm, also known as Floyd's algorithm, is a good "
+"choice to calculate the sum of the costs of the shortest path for each pair "
+"of nodes in the graph, for *dense graphs*. We make use of the Boost's "
+"implementation which runs in :math:`\\Theta(V^3)` time,"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:41
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:42
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:43
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:44
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:47
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:49
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:52
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:54
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:56
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "**Recommended, use a bounding box of no more than 3500 edges.**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:70
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:77
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:84
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:95
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:103
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:110
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:118
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:120
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:123
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:131
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:133
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:148
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:149
+msgid "Re-design of pgr_apspWarshall in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:152
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:154
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:155
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:156
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_gsoc_vrppdtw.po b/locale/es/LC_MESSAGES/pgr_gsoc_vrppdtw.po
new file mode 100644
index 0000000..7705842
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_gsoc_vrppdtw.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:13
+msgid "pgr_gsoc_vrppdtw - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:19
+msgid ""
+"``pgr_gsoc_vrppdtw`` — Returns a solution for `Pick and Delivery` with `time"
+" windows` Vehicle Routing Problem"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:27
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:36
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:43
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:52
+msgid "Example: Show the id1"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:59
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:62
+msgid "Description of the sql query"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "Identifier of the customer."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:69
+msgid "A value of ``0`` identifies the starting location"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "``X`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "``Y`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "**demand**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "How much is added / removed from the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:75
+msgid "Negative value is a delivery,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:76
+msgid "Positive value is a pickup,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "**openTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "The time relative to 0, when the customer opens."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "**closeTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "The time relative to 0, when the customer closes."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "**serviceTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "The duration of the loading / unloading."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid "**pIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid ""
+"Value used when the current customer is a Delivery to find the corresponding"
+" Pickup"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "**dIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid ""
+"Value used when the current customer is a Pickup to find the corresponding "
+"Delivery"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:86
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "**vehicle_num**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "Maximum number of vehicles in the result. (currently is ignored)"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "Capacity of the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:97
+msgid "Description of the result"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:99
+msgid "RETURNS SET OF pgr_costResult[]:"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "**id1**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "Current vehicle identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "**id2**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "Customer identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid ""
+"Previous ``cost`` plus `travel time` plus `wait time` plus `service time`."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:108
+msgid ""
+"when ``id2 = 0`` for the second time for the same ``id1``, then has the "
+"total time for the current ``id1``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:114
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:117
+msgid "Example: Total number of rows returned"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:123
+msgid "Example: Results for only id1 values: 1, 5, and 9"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:130
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:132
+msgid "The examples use :ref:`pickDeliverData`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:133
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:136
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:137
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:138
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_johnson.po b/locale/es/LC_MESSAGES/pgr_johnson.po
new file mode 100644
index 0000000..d0ef00b
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_johnson.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_johnson.rst:13
+msgid "pgr_johnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:18
+msgid ""
+"``pgr_johnson`` - Returns the sum of the costs of the shortest path for each"
+" pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspJohnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:31
+msgid ""
+"The Johnson algorithm, is a good choice to calculate the sum of the costs of"
+" the shortest path for each pair of nodes in the graph, for *sparse graphs*."
+" It usees the Boost's implementation which runs in :math:`O(V E \\log V)` "
+"time,"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:57
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:40
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:41
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:42
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:43
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:46
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:48
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:51
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:53
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:55
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:60
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:69
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:83
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:94
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:102
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:135
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:117
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:119
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:122
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:130
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:132
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137 ../../build/doc/pgr_johnson.rst:138
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:147
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:148
+msgid "Re-design of pgr_apspJohnson in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:153
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:154
+msgid ""
+"`Boost Johnson "
+"<http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html>`_ "
+"algorithm implementation."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:155
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_labelGraph.po b/locale/es/LC_MESSAGES/pgr_labelGraph.po
new file mode 100644
index 0000000..e5d6532
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_labelGraph.po
@@ -0,0 +1,233 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_labelGraph.rst:15
+msgid "pgr_labelGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:18
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:20
+msgid ""
+"``pgr_labelGraph`` — Locates and labels sub-networks within a network which "
+"are not topologically connected."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:30
+msgid ""
+"Must be run after ``pgr_createTopology()``. No use of ``geometry`` column. "
+"Only ``id``, ``source`` and ``target`` columns are required."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:32
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:34
+msgid ""
+"``OK`` when a column with provided name has been generated and populated "
+"successfully. All connected edges will have unique similar integer values. "
+"In case of ``rows_where`` condition, non participating rows will have -1 "
+"integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:35
+msgid ""
+"``FAIL`` when the processing cannot be finished due to some error. Notice "
+"will be thrown accordingly."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:36
+msgid ""
+"``rows_where condition generated 0 rows`` when passed SQL condition has not "
+"been fulfilled by any row."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:48
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:50
+msgid ""
+"A network behind any routing query may consist of sub-networks completely "
+"isolated from each other. Possible reasons could be:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:52
+msgid "An island with no bridge connecting to the mainland."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:53
+msgid ""
+"An edge or mesh of edges failed to connect to other networks because of "
+"human negligence during data generation."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:54
+msgid "The data is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:55
+msgid "Topology creation failed to succeed."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:57
+msgid ""
+"pgr_labelGraph() will create an integer column (with the name provided by "
+"the user) and will assign same integer values to all those edges in the "
+"network which are connected topologically. Thus better analysis regarding "
+"network structure is possible. In case of ``rows_where`` condition, non "
+"participating rows will have -1 integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:59
+msgid ""
+"Prerequisites: Must run ``pgr_createTopology()`` in order to generate "
+"``source`` and ``target`` columns. Primary key column ``id`` should also be "
+"there in the network table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:62
+msgid "Function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:64
+msgid "``text`` Network table name, with optional schema name."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:65
+msgid ""
+"``text`` Primary key column name of the network table. Default is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:66
+msgid ""
+"``text`` Source column name generated after ``pgr_createTopology()``. "
+"Default is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:67
+msgid ""
+"``text`` Target column name generated after ``pgr_createTopology()``. "
+"Default is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:68
+msgid ""
+"``text`` Column name which will hold the integer labels for each sub-graph. "
+"Default is ``subgraph``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:69
+msgid ""
+"``text`` The SQL where condition. Default is ``true``, means the processing "
+"will be done on the whole table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:75
+msgid "Example Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:77
+msgid "The sample data, has 3 subgraphs."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:87
+msgid ""
+"`pgr_createTopology "
+"<https://github.com/Zia-/pgrouting/blob/develop/src/common/sql/pgrouting_topology.sql>`_"
+" to create the topology of a table based on its geometry and tolerance "
+"value."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_lineGraph.po b/locale/es/LC_MESSAGES/pgr_lineGraph.po
new file mode 100644
index 0000000..7b69209
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_lineGraph.po
@@ -0,0 +1,387 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_lineGraph.rst:13
+msgid "pgr_lineGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:15
+msgid ""
+"``pgr_lineGraph`` — Transforms a given graph into its corresponding edge-"
+"based graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:31
+msgid "Given a graph G, its line graph L(G) is a graph such that:-"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:33
+msgid "each vertex of L(G) represents an edge of G"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:34
+msgid ""
+"two vertices of L(G) are adjacent if and only if their corresponding edges "
+"share a common endpoint in G."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:36
+msgid ""
+"The following figures show a graph (left, with blue vertices) and its Line "
+"Graph (right, with green vertices)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:39
+msgid "|first|"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:55
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:61
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:68
+msgid "The minimal signature is for a **directed** graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "This signature returns the Line Graph of the current graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:89
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:101
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:109
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:116
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:120
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:122
+msgid "RETURNS SETOF (seq, source, target, cost, reverse_cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129 ../../build/doc/pgr_lineGraph.rst:133
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "Identifier of the source vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:131
+msgid "When `negative`: the source is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "Identifier of the target vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:135
+msgid "When `negative`: the target is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137 ../../build/doc/pgr_lineGraph.rst:141
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "Weight of the edge (`source`, `target`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:139
+msgid ""
+"When `negative`: edge (`source`, `target`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "Weight of the edge (`target`, `source`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:143
+msgid ""
+"When `negative`: edge (`target`, `source`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:147
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:154
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:156
+msgid "https://en.wikipedia.org/wiki/Line_graph"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:157
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:160
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:161
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:162
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_maxCardinalityMatch.po b/locale/es/LC_MESSAGES/pgr_maxCardinalityMatch.po
new file mode 100644
index 0000000..4c6c884
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_maxCardinalityMatch.po
@@ -0,0 +1,357 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:13
+msgid "pgr_maxCardinalityMatch - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:19
+msgid ""
+"``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a"
+" graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:32
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:33
+msgid "Renamed 2.5.0, Previous name pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:34
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:39
+msgid ""
+"A matching or independent edge set in a graph is a set of edges without "
+"common vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:40
+msgid ""
+"A maximum matching is a matching that contains the largest possible number "
+"of edges."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:42
+msgid "There may be many maximum matchings."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:43
+msgid "Calculates **one** possible maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:45
+msgid "The graph can be **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:46
+msgid "Running time: :math:`O( E*V * \\alpha(E,V))`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:48
+msgid ":math:`\\alpha(E,V)` is the inverse of the `Ackermann function`_."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:54
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:71
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:78
+msgid ""
+"The minimal use calculates one possible maximum cardinality matching on a "
+"**directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:90
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:98
+msgid ""
+"The complete signature calculates one possible maximum cardinality matching."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:113
+msgid "Description of the SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:115
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid "**going**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "``ANY-NUMERIC``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid ""
+"A positive value represents the existence of the edge (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "**coming**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid ""
+"A positive value represents the existence of the edge (target, source)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:127
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:129
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:130
+msgid "SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:133
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "(optional) Determines the type of the graph. Default TRUE."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:143
+msgid "Description of the Result"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "Identifier of the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "Identifier of the second end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:155
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:157
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:158
+msgid "http://www.boost.org/libs/graph/doc/maximum_matching.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:159
+msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:160
+msgid "https://en.wikipedia.org/wiki/Ackermann_function"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:163
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:164
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:165
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_maxFlow.po b/locale/es/LC_MESSAGES/pgr_maxFlow.po
new file mode 100644
index 0000000..0327a6f
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_maxFlow.po
@@ -0,0 +1,354 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "pgr_maxFlow - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:19
+msgid ""
+"``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the "
+"source(s) to the targets(s) using the Push Relabel algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:28
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:36
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:37
+msgid ""
+"When the maximum flow is 0 then there is no flow and **0** is returned."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:39
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:41
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:42
+msgid "Uses the :ref:`pgr_pushRelabel <pgr_pushRelabel>` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:44
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:47
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:64
+msgid "Calculates the maximum flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:84
+msgid "Calculates the maximum flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:104
+msgid "Calculates the maximum flow from all the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:122
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:124
+msgid ""
+"Calculates the maximum flow from all of the `sources` to all of the "
+"`targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:138
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:149
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155 ../../build/doc/pgr_maxFlow.rst:157
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156 ../../build/doc/pgr_maxFlow.rst:158
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:166
+msgid "Description of the return value"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "Maximum flow possible from the source(s) to the target(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:177
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:178
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:179
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_nodeNetwork.po b/locale/es/LC_MESSAGES/pgr_nodeNetwork.po
new file mode 100644
index 0000000..b9b92db
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_nodeNetwork.po
@@ -0,0 +1,353 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_nodeNetwork.rst:13
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:18
+msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:20
+msgid "Nicolas Ribot"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:21
+msgid "Nicolas Ribot, The source code is released under the MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:27
+msgid ""
+"The function reads edges from a not \"noded\" network table and writes the "
+"\"noded\" edges into a new table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:39
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:41
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:43
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:45
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:47
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:49
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:50
+msgid "``float8`` tolerance for coincident points (in projection unit)dd"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:52
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:53
+msgid "``text`` Suffix for the new table's. Default value is ``noded``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:55
+msgid "The output table will have for ``edge_table_noded``"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:57
+msgid "``bigint`` Unique identifier for the table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:58
+msgid "``bigint`` Identifier of the edge in original table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:59
+msgid "``integer`` Segment number of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:60
+msgid ""
+"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:61
+msgid ""
+"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:62
+msgid "``geometry`` Geometry column of the noded network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:65
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:66
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:70
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:72
+msgid "Let's create the topology for the data in :doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:90
+msgid "Now we can analyze the network."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:114
+msgid ""
+"The analysis tell us that the network has a gap and an intersection. We try "
+"to fix the problem using:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:136
+msgid ""
+"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
+"segmented"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:166
+msgid "We can create the topology of the new network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:184
+msgid "Now let's analyze the new topology"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:210
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:243
+msgid "Comparing the results"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:245
+msgid "Comparing with the Analysis in the original edge_table, we see that."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "Before"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "After"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "Table name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table_noded"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "All original fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Has only basic fields to do a topology analysis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1,6,24"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:255
+msgid "Edges with 2 dead ends 17,18"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:257
+msgid ""
+"Edge 17's right node is a dead end because there is no other edge sharing "
+"that same node. (cnt=1)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "No Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:263
+msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid "Gaps"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"There is a gap between edge 17 and 14 because edge 14 is near to the right "
+"node of edge 17"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
+"tolerance value was taken in account"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Intersections"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Edges 13 and 18 were intersecting"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid ""
+"Edges were segmented, So, now in the interection's point there is a node and"
+" the following edges share it: 13-1 13-2 18-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:274
+msgid ""
+"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
+"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
+"with tho following steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:276
+msgid ""
+"Add a column old_id into edge_table, this column is going to keep track the "
+"id of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:277
+msgid ""
+"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:290
+msgid "We recreate the topology:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:310
+msgid ""
+"To get the same analysis results as the topology of edge_table_noded, we do "
+"the following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:337
+msgid ""
+"To get the same analysis results as the original edge_table, we do the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:362
+msgid ""
+"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
+"is an under pass and there is also a street level juction, and the same "
+"happens with edges 17 and 13."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:389
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:391
+msgid ""
+":ref:`topology` for an overview of a topology for routing algorithms. "
+":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
+":ref:`pgr_create_topology` to create a topology based on the geometry. "
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:397
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:398
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:399
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_pointsAsPolygon.po b/locale/es/LC_MESSAGES/pgr_pointsAsPolygon.po
new file mode 100644
index 0000000..356d85b
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_pointsAsPolygon.po
@@ -0,0 +1,124 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:13
+msgid "pgr_pointsAsPolygon"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:21
+msgid ""
+"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:27
+msgid "Returns the alpha shape as (multi)polygon geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:50
+msgid "Returns a (multi)polygon geometry (with holes)."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:54
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:55
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:56
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:57
+msgid ""
+"Supported to return a (multi)polygon geometry (with holes) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:61
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:62
+msgid ""
+"In the following query there is no way to control which point in the polygon"
+" is the first in the list, so you may get similar but different results than"
+" the following which are also correct."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:69
+msgid "The query use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:73
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:75
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:76
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:79
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:80
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:81
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_pushRelabel.po b/locale/es/LC_MESSAGES/pgr_pushRelabel.po
new file mode 100644
index 0000000..13e8a04
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_pushRelabel.po
@@ -0,0 +1,439 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pushRelabel.rst:14
+msgid "pgr_pushRelabel - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:20
+msgid ""
+"``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowPushRelabel"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:41
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:60
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:62
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:81
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:83
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:104
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:123
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:125
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:140
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:158
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:160
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_edmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:161
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:162
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_strongComponents.po b/locale/es/LC_MESSAGES/pgr_strongComponents.po
new file mode 100644
index 0000000..6f6c0cf
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_strongComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_strongComponents.rst:13
+msgid "pgr_strongComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:15
+msgid ""
+"``pgr_strongComponents`` — Return the strongly connected components of a "
+"directed graph using Tarjan's algorithm based on DFS. In particular, the "
+"algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:31
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other. This implementation can only be used "
+"with a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:40
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:42
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:44
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:62
+msgid "The signature is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:93
+msgid "http://en.wikipedia.org/wiki/Strongly_connected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_trsp.po b/locale/es/LC_MESSAGES/pgr_trsp.po
new file mode 100644
index 0000000..108f0f8
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_trsp.po
@@ -0,0 +1,281 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_trsp.rst:13
+msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:22
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:24
+msgid ""
+"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:30
+msgid ""
+"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
+"can optionally take into account complicated turn restrictions like those "
+"found in real world navigable road networks. Performamnce wise it is nearly "
+"as fast as the A* search but has many additional features like it works with"
+" edges rather than the nodes of the network. Returns a set of "
+":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
+"make up a path."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:57
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:59
+msgid ""
+"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
+"shooting star in that you can specify turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:61
+msgid ""
+"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
+"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
+"This provides an easy way of adding turn restrictions to a road network by "
+"placing them in a separate table."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:64 ../../build/doc/pgr_trsp.rst:120
+msgid ""
+"a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:71 ../../build/doc/pgr_trsp.rst:127
+msgid "``int4`` identifier of the edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:72 ../../build/doc/pgr_trsp.rst:128
+msgid "``int4`` identifier of the source vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:73 ../../build/doc/pgr_trsp.rst:129
+msgid "``int4`` identifier of the target vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:74 ../../build/doc/pgr_trsp.rst:130
+msgid ""
+"``float8`` value, of the edge traversal cost. A negative cost will prevent "
+"the edge from being inserted in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:75 ../../build/doc/pgr_trsp.rst:131
+msgid ""
+"(optional) the cost for the reverse traversal of the edge. This is only used"
+" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
+"above remark about negative costs)."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:77
+msgid "``int4`` **NODE id** of the start point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:78
+msgid "``int4`` **NODE id** of the end point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:79 ../../build/doc/pgr_trsp.rst:134
+msgid "``true`` if the graph is directed"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:80 ../../build/doc/pgr_trsp.rst:135
+msgid ""
+"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
+"will be used for the cost of the traversal of the edge in the opposite "
+"direction."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:82 ../../build/doc/pgr_trsp.rst:137
+msgid ""
+"(optional) a SQL query, which should return a set of rows with the following"
+" columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:88 ../../build/doc/pgr_trsp.rst:143
+msgid "``float8`` turn restriction cost"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:89 ../../build/doc/pgr_trsp.rst:144
+msgid "``int4`` target id"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:90
+msgid ""
+"``text`` comma separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:92
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** of source and target "
+"together with a fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:94
+msgid "``int4`` **EDGE id** of the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:95
+msgid "``float8`` fraction of 1 defines the position on the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:96
+msgid "``int4`` **EDGE id** of the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:97
+msgid "``float8`` fraction of 1 defines the position on the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:99 ../../build/doc/pgr_trsp.rst:152
+msgid "Returns set of :ref:`type_cost_result`:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:101 ../../build/doc/pgr_trsp.rst:154
+msgid "row sequence"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:102 ../../build/doc/pgr_trsp.rst:156
+msgid "node ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:103 ../../build/doc/pgr_trsp.rst:157
+msgid "edge ID (``-1`` for the last row)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:104
+msgid "cost to traverse from ``id1`` using ``id2``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:107 ../../build/doc/pgr_trsp.rst:162
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:108
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:111
+msgid "Support for Vias"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:113
+msgid ""
+"The Support for Vias functions are prototypes. Not all corner cases are "
+"being considered."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:116
+msgid ""
+"We also have support for vias where you can say generate a from A to B to C,"
+" etc. We support both methods above only you pass an array of vertices or "
+"and array of edges and percentage position along the edge in two arrays."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:133
+msgid ""
+"``int4[]`` An ordered array of **NODE id** the path will go through from "
+"start to end."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:145
+msgid ""
+"``text`` commar separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:147
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** together with a "
+"fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:149
+msgid "``int4`` An ordered array of **EDGE id** that the path has to traverse"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:150
+msgid ""
+"``float8`` An array of fractional positions along the respective edges in "
+"``eids``, where 0.0 is the start of the edge and 1.0 is the end of the "
+"eadge."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:155
+msgid "route ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:158
+msgid "cost to traverse from ``id2`` using ``id3``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:163
+msgid "Via Support prototypes new in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:166
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:168
+msgid "**Without turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:175
+msgid "**With turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:177
+msgid "Then a query with turn restrictions is created as:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:184
+msgid "An example query using vertex ids and via points:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:191
+msgid "An example query using edge ids and vias:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:198
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:204
+msgid ":ref:`type_cost_result`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:207
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:208
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:209
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_version.po b/locale/es/LC_MESSAGES/pgr_version.po
new file mode 100644
index 0000000..5a6623a
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_version.po
@@ -0,0 +1,130 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_version.rst:13
+msgid "pgr_version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:21
+msgid "``pgr_version`` — Query for pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:27
+msgid "Returns a table with pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:35 ../../build/doc/pgr_version.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:37
+msgid "Returns a table with:"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "**version**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42 ../../build/doc/pgr_version.rst:43
+#: ../../build/doc/pgr_version.rst:44 ../../build/doc/pgr_version.rst:45
+#: ../../build/doc/pgr_version.rst:46
+msgid "``varchar``"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "pgRouting version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "**tag**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "Git tag of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "**hash**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "Git hash of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "**branch**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "Git branch of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "**boost**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "Boost version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:51
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:52
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:56
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:58
+msgid "Query for full version string"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:66
+msgid "Query for ``version`` and ``boost`` attribute"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:78
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:81
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:82
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:83
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_vrpOneDepot.po b/locale/es/LC_MESSAGES/pgr_vrpOneDepot.po
new file mode 100644
index 0000000..a0c5006
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_vrpOneDepot.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:14
+msgid "pgr_vrpOneDepot - Experimental"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:21
+msgid "**No documentation available**"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:24
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:28
+msgid "Current Result"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:34
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:41
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:43
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:46
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:47
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:48
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_withPoints.po b/locale/es/LC_MESSAGES/pgr_withPoints.po
new file mode 100644
index 0000000..be629d4
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_withPoints.po
@@ -0,0 +1,665 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPoints.rst:13
+msgid "pgr_withPoints - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:19
+msgid ""
+"``pgr_withPoints`` - Returns the shortest path in a graph with additional "
+"temporary vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, find the shortest path(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:43
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:45
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:51
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path. -"
+" The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path: - The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:59
+msgid ""
+"For optimization purposes, any duplicated value in the start_vids or "
+"end_vids are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:60
+msgid ""
+"The returned values are ordered: - start_vid ascending - end_vid ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:64
+msgid "Running time: :math:`O(|start\\_vids|\\times(V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:68
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:81
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:87
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:90
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:91
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid ""
+"No **details** are given about distance of other points of points_sql query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:100
+msgid "From point 1 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:110
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:120
+msgid "From point 1 to vertex 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:132
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:141
+msgid "From point 1 to point 3 and vertex 5"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:153
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:162
+msgid "From point 1 and vertex 2 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:182
+msgid "From point 1 and vertex 2 to point 3 and vertex 7"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:192
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPoints.rst:249
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPoints.rst:222
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:207
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:211
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:221
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid ""
+"(optional). When ``true`` the results will include the points in points_sql "
+"that are in the path. Default is ``false`` which ignores other points of the"
+" points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:231
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:233
+msgid ""
+"Returns set of ``(seq, [path_seq,] [start_vid,] [end_vid,] node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "Path sequence that indicates the relative position on the path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+#: ../../build/doc/pgr_withPoints.rst:241
+#: ../../build/doc/pgr_withPoints.rst:242
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "Identifier of the ending vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:242
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "Identifier of the node:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:243
+msgid "A positive value indicates the node is a vertex of edges_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "A negative value indicates the node is a point of points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:249
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:262
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **right** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:268
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **left** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:274
+msgid ""
+"Many to many example with a twist: on undirected graph and showing details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:281
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:286
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:287
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:291
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:293
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:296
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:297
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:298
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_withPointsCost.po b/locale/es/LC_MESSAGES/pgr_withPointsCost.po
new file mode 100644
index 0000000..f478ccd
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_withPointsCost.po
@@ -0,0 +1,603 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCost.rst:13
+msgid "pgr_withPointsCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:19
+msgid ""
+"``pgr_withPointsCost`` - Calculates the shortest path and returns only the "
+"aggregate cost of the shortest path(s) found, for the combination of points "
+"given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, return only the aggregate cost of the shortest path(s) found."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:79
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:44
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:45
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"vertices in the modified graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:51
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:52
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:54
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:58
+msgid "The `agg_cost` in the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:60
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:62
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:64
+msgid ""
+"If the values returned are stored in a table, the unique index would be the "
+"pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:67
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:69
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:71
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:73
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:75
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:76
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:78
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:82
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:92
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:96
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:102
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:105
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:124
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:145
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:166
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:185
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:204
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCost.rst:234
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:219
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:223
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:233
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:241
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:243
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "Identifier of the ending point. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:256
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:258
+msgid "With **right** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:264
+msgid "With **left** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:270
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:277
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:282
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:283
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:287
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:289
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:292
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:293
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:294
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_withPointsCostMatrix.po b/locale/es/LC_MESSAGES/pgr_withPointsCostMatrix.po
new file mode 100644
index 0000000..c9bb20f
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_withPointsCostMatrix.po
@@ -0,0 +1,472 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:13
+msgid "pgr_withPointsCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:19
+msgid ""
+"``pgr_withPointsCostMatrix`` - Calculates the shortest path and returns only"
+" the aggregate cost of the shortest path(s) found, for the combination of "
+"points given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:31
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:35
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:45
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:87
+msgid "returning a symmetrical cost matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:89
+msgid "Using the default **side** value on the **points_sql** query"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:90
+msgid "Using an undirected graph"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:91
+msgid "Using the default **driving_side** value"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:100
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:128
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:116
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:127
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:153
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:154
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:155
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:156
+msgid "`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_withPointsDD.po b/locale/es/LC_MESSAGES/pgr_withPointsDD.po
new file mode 100644
index 0000000..95b4be1
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_withPointsDD.po
@@ -0,0 +1,552 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsDD.rst:13
+msgid "pgr_withPointsDD - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:19
+msgid ""
+"``pgr_withPointsDD`` - Returns the driving distance from a starting point."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:37
+msgid ""
+"Modify the graph to include points and using Dijkstra algorithm, extracts "
+"all the nodes and points that have costs less than or equal to the value "
+"``distance`` from the starting point. The edges extracted will conform the "
+"corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:60
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:63
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:64
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:84
+msgid "Driving distance from a single point"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:86
+#: ../../build/doc/pgr_withPointsDD.rst:106
+msgid "Finds the driving distance depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:94
+msgid "Right side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:104
+msgid "Driving distance from many starting points"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:118
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsDD.rst:169
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsDD.rst:147
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:134
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:138
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "Starting point id"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "Distance from the start_pid"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+#: ../../build/doc/pgr_withPointsDD.rst:150
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid ""
+"(optional). Value in ['b', 'r', 'l', NULL] indicating if the driving side "
+"is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:146
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid ""
+"(optional). When ``true`` the nodes will only appear in the closest start_v "
+"list. Default is ``false`` which resembles several calls using the single "
+"starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:157
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:159
+msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid ""
+"Identifier of the node within the Distance from ``start_pid``. If ``details "
+"=: true`` a negative value is the identifier of a point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid "``-1`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:169
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "``0`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:180
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:182
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:184
+msgid "Left side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:190
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:199
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:204
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:205
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:209
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:211
+msgid ":ref:`pgr_drivingDistance` - Driving distance using dijkstra."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:212
+msgid ":ref:`pgr_alphashape` - Alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:213
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/pgr_withPointsKSP.po b/locale/es/LC_MESSAGES/pgr_withPointsKSP.po
new file mode 100644
index 0000000..8202877
--- /dev/null
+++ b/locale/es/LC_MESSAGES/pgr_withPointsKSP.po
@@ -0,0 +1,571 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsKSP.rst:13
+msgid "pgr_withPointsKSP - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:19
+msgid ""
+"``pgr_withPointsKSP`` - Find the K shortest paths using Yen's algorithm."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:32
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:36
+msgid ""
+"Modifies the graph to include the points defined in the ``points_sql`` and "
+"using Yen algorithm, finds the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:41
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:56
+msgid "Minimal Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "The minimal usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:60
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:61
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "No **heap paths** are returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:82
+msgid "Finds the K shortest paths depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:91
+msgid "With details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsKSP.rst:130
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:115
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "**start_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "Starting point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "**end_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "Ending point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "**K**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "Number of shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid ""
+"(optional). When ``true`` the paths calculated to get the shortests paths "
+"will be returned also. Default is ``false`` only the K shortest paths are "
+"returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:129
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:139
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:141
+msgid ""
+"Returns set of ``(seq, path_id, path_seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid ""
+"Relative position in the path of node and edge. Has value 1 for the "
+"beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid ""
+"Path identifier. The ordering of the paths: For two paths i, j if i < j then"
+" agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid ""
+"Identifier of the node in the path. Negative values are the identifiers of a"
+" point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:164
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:166
+msgid "Left side driving topology with details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:172
+msgid "Right side driving topology with heap paths and details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:178
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:181
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:182
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:186
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:188
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:191
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:192
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:193
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/proposed.po b/locale/es/LC_MESSAGES/proposed.po
new file mode 100644
index 0000000..9f1a6f4
--- /dev/null
+++ b/locale/es/LC_MESSAGES/proposed.po
@@ -0,0 +1,410 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/proposed.rst:13
+msgid "Stable Proposed Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:20
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:22
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:23
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:24
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:25
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:26
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:27
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:33
+msgid "As part of the :ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:35
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` Use pgr_dijkstra to calculate a cost matrix."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:36
+msgid ""
+":ref:`pgr_dijkstraVia` - Use pgr_dijkstra to make a route via vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:39
+msgid "Families"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:40
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:3
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:4
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:5
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:46
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:3
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:5
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:52
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:3
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:4
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:5
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:58
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:3
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:4
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:9
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:64
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:3
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:4
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:5
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:6
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:7
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:71
+msgid "categories"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:72
+msgid ":ref:`Cost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:3
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:4
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:6
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:7
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:78
+msgid ":ref:`CostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:3
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:4
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:6
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:7
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:84
+msgid ":ref:`KSP`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:3
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:4
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:106
+msgid "Experimental Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:111
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:113
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:114
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:116
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:117
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:118
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:119
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:120
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:121
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:122
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:123
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:124
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:125
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:126
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:127
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:132
+msgid ":ref:`contraction` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:134
+msgid ""
+":ref:`pgr_contractgraph` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:138
+msgid "Graph Analysis"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:139
+msgid ":ref:`pgr_labelGraph` - Analyze / label subgraphs within a network"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:141
+msgid ":ref:`components` - Analyze components within a graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:143
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:144
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:145
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:146
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:147
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:150
+msgid "VRP"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:151
+msgid ":ref:`pgr_gsocvrppdtw`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:152
+msgid ":ref:`pgr_vrp_basic`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:166
+msgid "Graph Transformation"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:167
+msgid ":doc:`pgr_lineGraph`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:178
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:179
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:180
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/release_notes.po b/locale/es/LC_MESSAGES/release_notes.po
new file mode 100644
index 0000000..f4a09f7
--- /dev/null
+++ b/locale/es/LC_MESSAGES/release_notes.po
@@ -0,0 +1,1278 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/release_notes.rst:13
+msgid "Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ""
+"To see the full list of changes check the list of `Git commits "
+"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid "Table of contents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:21
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:22
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:23
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:24
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:25
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:26
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:27
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:28
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:29
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:30
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:31
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:32
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:33
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:34
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:35
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:36
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:43
+msgid "pgRouting 2.5.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:45
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.5.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.5.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:49
+msgid "enhancement:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:50
+msgid "pgr_version is now on SQL language"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:53
+msgid "Breaking change on:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:54
+msgid "pgr_edgeDisjointPaths:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:56
+msgid "Added path_id, cost and agg_cost columns on the result"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:57
+msgid "Parameter names changed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:58
+msgid "The many version results are the union of the one to one version"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:61
+msgid "New Signatures:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:62
+msgid "pgr_bdAstar(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:65 ../../build/doc/release_notes.rst:223
+msgid "New Proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:66
+msgid "pgr_bdAstar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:67
+msgid "pgr_bdAstar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:68
+msgid "pgr_bdAstar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:69
+msgid "pgr_bdAstarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:70
+msgid "pgr_bdAstarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:71
+msgid "pgr_bdAstarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:72
+msgid "pgr_bdAstarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:73
+msgid "pgr_bdAstarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:74
+msgid "pgr_bdDijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:75
+msgid "pgr_bdDijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:76
+msgid "pgr_bdDijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:77
+msgid "pgr_bdDijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:78
+msgid "pgr_bdDijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:79
+msgid "pgr_bdDijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:80
+msgid "pgr_bdDijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:81
+msgid "pgr_bdDijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:82
+msgid "pgr_lineGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:83
+msgid "pgr_connectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:84
+msgid "pgr_strongComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:85
+msgid "pgr_biconnectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:86
+msgid "pgr_articulationPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:87
+msgid "pgr_bridges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:90 ../../build/doc/release_notes.rst:160
+#: ../../build/doc/release_notes.rst:247
+msgid "Deprecated Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:91
+msgid "pgr_bdastar - use pgr_bdAstar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:94
+msgid "Renamed Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:95
+msgid "pgr_maxFlowPushRelabel - use pgr_pushRelabel instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:96
+msgid "pgr_maxFlowEdmondsKarp -use pgr_edmondsKarp instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:97
+msgid "pgr_maxFlowBoykovKolmogorov - use pgr_boykovKolmogorov instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:98
+msgid "pgr_maximumCardinalityMatching - use pgr_maxCardinalityMatch instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:101
+msgid "Deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:102
+msgid "pgr_pointToEdgeNode"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:108
+msgid "pgRouting 2.4.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:110
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.2 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.2%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:113
+msgid "Improvement"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:114
+msgid "Works for postgreSQL 10"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:117 ../../build/doc/release_notes.rst:131
+#: ../../build/doc/release_notes.rst:168 ../../build/doc/release_notes.rst:522
+#: ../../build/doc/release_notes.rst:529 ../../build/doc/release_notes.rst:550
+#: ../../build/doc/release_notes.rst:557
+msgid "Bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:118
+msgid "Fixed: Unexpected error column \"cname\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:119
+msgid ""
+"Replace __linux__ with __GLIBC__ for glibc-specific headers and functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:126
+msgid "pgRouting 2.4.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:128
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.1 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.1%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:132
+msgid "Fixed compiling error on macOS"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:133
+msgid "Condition error on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:138
+msgid "pgRouting 2.4.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:140
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.4.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.4.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:143 ../../build/doc/release_notes.rst:213
+#: ../../build/doc/release_notes.rst:374
+msgid "New Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:144
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:148
+msgid "New Proposed Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:149
+msgid "pgr_maxFlow"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:150
+msgid "pgr_astar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:151
+msgid "pgr_astar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:152
+msgid "pgr_astar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:153
+msgid "pgr_astarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:154
+msgid "pgr_astarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:155
+msgid "pgr_astarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:156
+msgid "pgr_astarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:157
+msgid "pgr_astarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:161
+msgid "pgr_bddijkstra - use pgr_bdDijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:164 ../../build/doc/release_notes.rst:253
+msgid "Deprecated Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:165
+msgid "pgr_pointsToVids"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:169
+msgid "Bug fixes on proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:171
+msgid "pgr_withPointsKSP: fixed ordering"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:173
+msgid "TRSP original code is used with no changes on the compilation warnings"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:178
+msgid "pgRouting 2.3.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:180
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:183 ../../build/doc/release_notes.rst:199
+#: ../../build/doc/release_notes.rst:269 ../../build/doc/release_notes.rst:282
+#: ../../build/doc/release_notes.rst:293 ../../build/doc/release_notes.rst:305
+#: ../../build/doc/release_notes.rst:424 ../../build/doc/release_notes.rst:455
+msgid "Bug Fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:184
+msgid "Fixed pgr_gsoc_vrppdtw crash when all orders fit on one truck."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:185
+msgid "Fixed pgr_trsp:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:187
+msgid "Alternate code is not executed when the point is in reality a vertex"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:188
+msgid "Fixed ambiguity on seq"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:194
+msgid "pgRouting 2.3.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:196
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.1%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:200
+msgid "Leaks on proposed max_flow functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:201
+msgid "Regression error on pgr_trsp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:202
+msgid "Types discrepancy on pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:208
+msgid "pgRouting 2.3.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:210
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:214
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:215
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:218 ../../build/doc/release_notes.rst:330
+msgid "New Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:219
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:224
+msgid "pgr_dijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:225
+msgid "pgr_withPointsCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:226
+msgid "pgr_maxFlowPushRelabel(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:227
+msgid "pgr_maxFlowPushRelabel(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:228
+msgid "pgr_maxFlowPushRelabel(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:229
+msgid "pgr_maxFlowPushRelabel(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:230
+msgid "pgr_maxFlowEdmondsKarp(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:231
+msgid "pgr_maxFlowEdmondsKarp(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:232
+msgid "pgr_maxFlowEdmondsKarp(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:233
+msgid "pgr_maxFlowEdmondsKarp(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:234
+msgid "pgr_maxFlowBoykovKolmogorov (one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:235
+msgid "pgr_maxFlowBoykovKolmogorov (one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:236
+msgid "pgr_maxFlowBoykovKolmogorov (many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:237
+msgid "pgr_maxFlowBoykovKolmogorov (many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:238
+msgid "pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:239
+msgid "pgr_edgeDisjointPaths(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:240
+msgid "pgr_edgeDisjointPaths(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:241
+msgid "pgr_edgeDisjointPaths(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:242
+msgid "pgr_edgeDisjointPaths(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:243
+msgid "pgr_contractGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:248
+msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:249
+msgid "pgr_astar - use pgr_aStar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:254
+msgid "pgr_flip_edges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:255
+msgid "pgr_vidsToDmatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:256
+msgid "pgr_pointsToDMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:257
+msgid "pgr_textToPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:264
+msgid "pgRouting 2.2.4 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:266
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.4 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.4%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:270
+msgid "Bogus uses of extern \"C\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:271
+msgid "Build error on Fedora 24 + GCC 6.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:272
+msgid "Regression error pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:277
+msgid "pgRouting 2.2.3 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:279
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.3 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.3%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:283
+msgid "Fixed compatibility issues with PostgreSQL 9.6."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:288
+msgid "pgRouting 2.2.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:290
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:294
+msgid "Fixed regression error on pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:300
+msgid "pgRouting 2.2.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:302
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A2.2.1+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:306
+msgid "Server crash fix on pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:307
+msgid "Bug fix on With Points family of functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:313
+msgid "pgRouting 2.2.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:315
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:319 ../../build/doc/release_notes.rst:387
+msgid "Improvements"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:320
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:322
+msgid "Adding a row_where and outall optional parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:324
+msgid "Signature fix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:326
+msgid "pgr_dijkstra -- to match what is documented"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:331
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:332
+msgid "pgr_Johnson"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:333
+msgid "pgr_dijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:334
+msgid "pgr_dijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:335
+msgid "pgr_dijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:336
+msgid "pgr_dijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:339 ../../build/doc/release_notes.rst:391
+msgid "Proposed functionality"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:340
+msgid "pgr_withPoints(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:341
+msgid "pgr_withPoints(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:342
+msgid "pgr_withPoints(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:343
+msgid "pgr_withPoints(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:344
+msgid "pgr_withPointsCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:345
+msgid "pgr_withPointsCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:346
+msgid "pgr_withPointsCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:347
+msgid "pgr_withPointsCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:348
+msgid "pgr_withPointsDD(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:349
+msgid "pgr_withPointsDD(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:350
+msgid "pgr_withPointsKSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:351
+msgid "pgr_dijkstraVia"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:355
+msgid "Deprecated functions:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:356
+msgid "pgr_apspWarshall use pgr_floydWarshall instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:357
+msgid "pgr_apspJohnson use pgr_Johnson instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:358
+msgid "pgr_kDijkstraCost use pgr_dijkstraCost instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:359
+msgid "pgr_kDijkstraPath use pgr_dijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:362
+msgid "Renamed and deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:363
+msgid "pgr_makeDistanceMatrix renamed to _pgr_makeDistanceMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:369
+msgid "pgRouting 2.1.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:371
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.1.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:375
+msgid "pgr_dijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:376
+msgid "pgr_dijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:377
+msgid "pgr_dijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:378
+msgid "pgr_drivingDistance(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:381
+msgid "Refactored"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:382
+msgid "pgr_dijkstra(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:383
+msgid "pgr_ksp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:384
+msgid "pgr_drivingDistance(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:388
+msgid ""
+"pgr_alphaShape function now can generate better (multi)polygon with holes "
+"and alpha parameter."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:392
+msgid ""
+"Proposed functions from Steve Woodbridge, (Classified as Convenience by the "
+"author.)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:394
+msgid ""
+"pgr_pointToEdgeNode - convert a point geometry to a vertex_id based on "
+"closest edge."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:395
+msgid ""
+"pgr_flipEdges - flip the edges in an array of geometries so the connect end "
+"to end."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:396
+msgid ""
+"pgr_textToPoints - convert a string of x,y;x,y;... locations into point "
+"geometries."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:397
+msgid ""
+"pgr_pointsToVids - convert an array of point geometries into vertex ids."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:398
+msgid ""
+"pgr_pointsToDMatrix - Create a distance matrix from an array of points."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:399 ../../build/doc/release_notes.rst:400
+msgid ""
+"pgr_vidsToDMatrix - Create a distance matrix from an array of vertix_id."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:402
+msgid "Added proposed functions from GSoc Projects:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:404
+msgid "pgr_vrppdtw"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:405
+msgid "pgr_vrponedepot"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:408
+msgid "Deprecated functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:409
+msgid "pgr_getColumnName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:410
+msgid "pgr_getTableName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:411
+msgid "pgr_isColumnCndexed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:412
+msgid "pgr_isColumnInTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:413
+msgid "pgr_quote_ident"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:414
+msgid "pgr_versionless"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:415
+msgid "pgr_startPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:416
+msgid "pgr_endPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:417
+msgid "pgr_pointToId"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:420
+msgid "No longer supported"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:421
+msgid "Removed the 1.x legacy functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:425
+msgid "Some bug fixes in other functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:429
+msgid "Refactoring Internal Code"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:430
+msgid "A C and C++ library for developer was created"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:432
+msgid "encapsulates postgreSQL related functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:433
+msgid "encapsulates Boost.Graph graphs"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:435
+msgid "Directed Boost.Graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:436
+msgid "Undirected Boost.graph."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:438
+msgid "allow any-integer in the id's"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:439
+msgid "allow any-numerical on the cost/reverse_cost columns"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:441
+msgid ""
+"Instead of generating many libraries: - All functions are encapsulated in "
+"one library - The library has the prefix 2-1-0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:450
+msgid "pgRouting 2.0.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:452
+msgid "Minor bug fixes."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:456
+msgid "No track of the bug fixes were kept."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:462
+msgid "pgRouting 2.0.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:464
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.0.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.0.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:466
+msgid ""
+"With the release of pgRouting 2.0.0 the library has abandoned backwards "
+"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. The main "
+"Goals for this release are:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:469
+msgid "Major restructuring of pgRouting."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:470
+msgid "Standardization of the function naming"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:471
+msgid "Preparation of the project for future development."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:473
+msgid "As a result of this effort:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:475
+msgid "pgRouting has a simplified structure"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:476
+msgid "Significant new functionality has being added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:477
+msgid "Documentation has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:478
+msgid "Testing has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:479
+msgid "And made it easier for multiple developers to make contributions."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:483
+msgid "Important Changes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:484
+msgid ""
+"Graph Analytics - tools for detecting and fixing connection some problems in"
+" a graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:485
+msgid "A collection of useful utility functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:486
+msgid ""
+"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:487
+msgid ""
+"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
+"pgr_bdDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:488
+msgid "One to many nodes search (pgr_kDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:489
+msgid "K alternate paths shortest path (pgr_ksp)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:490
+msgid ""
+"New TSP solver that simplifies the code and the build process (pgr_tsp), "
+"dropped \"Gaul Library\" dependency"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:491
+msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:492
+msgid "Dropped support for Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:493
+msgid ""
+"Built a test infrastructure that is run before major code changes are "
+"checked in"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:494
+msgid ""
+"Tested and fixed most all of the outstanding bugs reported against 1.x that "
+"existing in the 2.0-dev code base."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:495
+msgid "Improved build process for Windows"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:496
+msgid ""
+"Automated testing on Linux and Windows platforms trigger by every commit"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:497
+msgid "Modular library design"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:498
+msgid "Compatibility with PostgreSQL 9.1 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:499
+msgid "Compatibility with PostGIS 2.0 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:500
+msgid "Installs as PostgreSQL EXTENSION"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:501
+msgid "Return types re factored and unified"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:502
+msgid "Support for table SCHEMA in function parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:503
+msgid "Support for ``st_`` PostGIS function prefix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:504
+msgid "Added ``pgr_`` prefix to functions and types"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:505
+msgid "Better documentation: http://docs.pgrouting.org"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:506
+msgid "shooting_star is discontinued"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:513
+msgid "pgRouting 1.x Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:515
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for 1.x "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+1.x%22+is%3Aclosed>`_"
+" on Github. The following release notes have been copied from the previous "
+"``RELEASE_NOTES`` file and are kept as a reference."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:520
+msgid "Changes for release 1.05"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:526
+msgid "Changes for release 1.03"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:528
+msgid "Much faster topology creation"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:533
+msgid "Changes for release 1.02"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:535 ../../build/doc/release_notes.rst:542
+msgid "Shooting* bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:536
+msgid "Compilation problems solved"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:540
+msgid "Changes for release 1.01"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:546
+msgid "Changes for release 1.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:548
+msgid "Core and extra functions are separated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:549
+msgid "Cmake build process"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:554
+msgid "Changes for release 1.0.0b"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:556
+msgid "Additional SQL file with more simple names for wrapper functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:561
+msgid "Changes for release 1.0.0a"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:563
+msgid "Shooting* shortest path algorithm for real road networks"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:564
+msgid "Several SQL bugs were fixed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:568
+msgid "Changes for release 0.9.9"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:570
+msgid "PostgreSQL 8.2 support"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:571
+msgid ""
+"Shortest path functions return empty result if they could not find any path"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:575
+msgid "Changes for release 0.9.8"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:577
+msgid "Renumbering scheme was added to shortest path functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:578
+msgid "Directed shortest path functions were added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:579
+msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/routingFunctions.po b/locale/es/LC_MESSAGES/routingFunctions.po
new file mode 100644
index 0000000..3242809
--- /dev/null
+++ b/locale/es/LC_MESSAGES/routingFunctions.po
@@ -0,0 +1,134 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/routingFunctions.rst:15
+msgid "Routing Functions"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:21
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:23
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:28
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:30
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:33
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:39
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:41
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:43
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:49
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/sampledata.po b/locale/es/LC_MESSAGES/sampledata.po
new file mode 100644
index 0000000..2ded9cd
--- /dev/null
+++ b/locale/es/LC_MESSAGES/sampledata.po
@@ -0,0 +1,152 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/sampledata.rst:11
+msgid "Sample Data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:13
+msgid ""
+"The documentation provides very simple example queries based on a small "
+"sample network. To be able to execute the sample queries, run the following "
+"SQL commands to create a table with a small network data set."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:18
+msgid "Create table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:25
+msgid "Insert data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:32
+msgid "Topology"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:33
+msgid ""
+"Before you test a routing function use this query to create a topology "
+"(fills the ``source`` and ``target`` columns)."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:40
+msgid "Points of interest"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:41
+msgid "When points outside of the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:42
+msgid "Used with the :ref:`withPoints` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:49
+msgid "Restrictions"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:50
+msgid "Used with the :ref:`trsp` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:57
+msgid "Categories"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:58
+msgid "Used with the :ref:`maxFlow` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:65
+msgid "Vertex table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:66
+msgid "Used in some deprecated signatures or deprecated functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:74
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:76
+msgid "Red arrows correspond when ``cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:77
+msgid "Blue arrows correspond when ``reverse_cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:78
+msgid "Points are outside the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:79
+msgid "Click on the graph to enlarge."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:84
+msgid ""
+"Network for queries marked as ``directed`` and ``cost`` and ``reverse_cost``"
+" columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:86
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"vehicles."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:91
+msgid "**Graph 1: Directed, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:96
+msgid ""
+"Network for queries marked as ``undirected`` and ``cost`` and "
+"``reverse_cost`` columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:98
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"pedestrians."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:104
+msgid "**Graph 2: Undirected, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:109
+msgid ""
+"Network for queries marked as ``directed`` and only ``cost`` column is used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:116
+msgid "**Graph 3: Directed, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:121
+msgid ""
+"Network for queries marked as ``undirected`` and only ``cost`` column is "
+"used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:127
+msgid "**Graph 4: Undirected, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:134
+msgid "Pick & Deliver Data"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/support.po b/locale/es/LC_MESSAGES/support.po
new file mode 100644
index 0000000..4082646
--- /dev/null
+++ b/locale/es/LC_MESSAGES/support.po
@@ -0,0 +1,177 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/support.rst:13
+msgid "Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:15
+msgid ""
+"pgRouting community support is available through the `pgRouting website "
+"<http://pgrouting.org/support.html>`_, `documentation "
+"<http://docs.pgrouting.org>`_, tutorials, mailing lists and others. If "
+"you’re looking for :ref:`commercial support <support_commercial>`, find "
+"below a list of companies providing pgRouting development and consulting "
+"services."
+msgstr ""
+
+#: ../../build/doc/support.rst:19
+msgid "Reporting Problems"
+msgstr ""
+
+#: ../../build/doc/support.rst:21
+msgid ""
+"Bugs are reported and managed in an `issue tracker "
+"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
+"steps:"
+msgstr ""
+
+#: ../../build/doc/support.rst:23
+msgid ""
+"Search the tickets to see if your problem has already been reported. If so, "
+"add any extra context you might have found, or at least indicate that you "
+"too are having the problem. This will help us prioritize common issues."
+msgstr ""
+
+#: ../../build/doc/support.rst:24
+msgid ""
+"If your problem is unreported, create a `new issue "
+"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
+msgstr ""
+
+#: ../../build/doc/support.rst:25
+msgid ""
+"In your report include explicit instructions to replicate your issue. The "
+"best tickets include the exact SQL necessary to replicate a problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:26
+msgid ""
+"If you can test older versions of PostGIS for your problem, please do. On "
+"your ticket, note the earliest version the problem appears."
+msgstr ""
+
+#: ../../build/doc/support.rst:27
+msgid ""
+"For the versions where you can replicate the problem, note the operating "
+"system and version of pgRouting, PostGIS and PostgreSQL."
+msgstr ""
+
+#: ../../build/doc/support.rst:28
+msgid ""
+"It is recommended to use the following wrapper on the problem to pin point "
+"the step that is causing the problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:39
+msgid "Mailing List and GIS StackExchange"
+msgstr ""
+
+#: ../../build/doc/support.rst:41
+msgid ""
+"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
+"server:"
+msgstr ""
+
+#: ../../build/doc/support.rst:43
+msgid ""
+"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
+msgstr ""
+
+#: ../../build/doc/support.rst:44
+msgid ""
+"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
+"dev"
+msgstr ""
+
+#: ../../build/doc/support.rst:46
+msgid ""
+"For general questions and topics about how to use pgRouting, please write to"
+" the user mailing list."
+msgstr ""
+
+#: ../../build/doc/support.rst:48
+msgid ""
+"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
+" tag the question with ``pgrouting``. Find all questions tagged with "
+"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
+"or subscribe to the `pgRouting questions feed "
+"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
+msgstr ""
+
+#: ../../build/doc/support.rst:54
+msgid "Commercial Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:56
+msgid ""
+"For users who require professional support, development and consulting "
+"services, consider contacting any of the following organizations, which have"
+" significantly contributed to the development of pgRouting:"
+msgstr ""
+
+#: ../../build/doc/support.rst:61
+msgid "**Company**"
+msgstr ""
+
+#: ../../build/doc/support.rst:62
+msgid "**Offices in**"
+msgstr ""
+
+#: ../../build/doc/support.rst:63
+msgid "**Website**"
+msgstr ""
+
+#: ../../build/doc/support.rst:64
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/support.rst:65
+msgid "Germany, Japan"
+msgstr ""
+
+#: ../../build/doc/support.rst:66
+msgid "https://georepublic.info"
+msgstr ""
+
+#: ../../build/doc/support.rst:67
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/support.rst:68 ../../build/doc/support.rst:71
+msgid "United States"
+msgstr ""
+
+#: ../../build/doc/support.rst:69
+msgid "http://imaptools.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:70
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/support.rst:72
+msgid "http://www.paragoncorporation.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:73
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/support.rst:74
+msgid "Switzerland, France"
+msgstr ""
+
+#: ../../build/doc/support.rst:75
+msgid "http://www.camptocamp.com"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/topology-functions.po b/locale/es/LC_MESSAGES/topology-functions.po
new file mode 100644
index 0000000..ac6a1b3
--- /dev/null
+++ b/locale/es/LC_MESSAGES/topology-functions.po
@@ -0,0 +1,66 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/topology-functions.rst:13
+msgid "Topology - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:15
+msgid ""
+"The pgRouting's topology of a network, represented with an edge table with "
+"source and target attributes and a vertices table associated with it. "
+"Depending on the algorithm, you can create a topology or just reconstruct "
+"the vertices table, You can analyze the topology, We also provide a function"
+" to node an unoded network."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:19
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:20
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:21
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:22
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:23
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:35
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:38
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:39
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:40
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/types_index.po b/locale/es/LC_MESSAGES/types_index.po
new file mode 100644
index 0000000..3f3faa7
--- /dev/null
+++ b/locale/es/LC_MESSAGES/types_index.po
@@ -0,0 +1,56 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/types_index.rst:13
+msgid "pgRouting Data Types"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:15
+msgid ""
+"The following are commonly used data types for some of the pgRouting "
+"functions."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:17
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:18
+msgid ""
+":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe "
+"a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:19
+msgid ""
+":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:30
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:33
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:34
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:35
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/es/LC_MESSAGES/withPoints-family.po b/locale/es/LC_MESSAGES/withPoints-family.po
new file mode 100644
index 0000000..3d4f303
--- /dev/null
+++ b/locale/es/LC_MESSAGES/withPoints-family.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/withPoints-family.rst:14
+msgid "withPoints - Family of functions"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:16
+msgid "When points are also given as input:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:20
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:21
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:22
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:23
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:24
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:47
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:49
+msgid ""
+"The squared vertices are the temporary vertices, The temporary vertices are "
+"added acordng to the dirving side, The following images visualy show the "
+"diferences on how depending on the driving side the data is interpreted."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:53
+msgid "Right driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:58
+msgid "Left driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:63
+msgid "doesn't matter the driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:68
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:70
+msgid ""
+"This famly of functions was thought for routing vehicles, but might as well "
+"work for some other application that we can not think of."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:73
+msgid ""
+"The with points family of function give you the ability to route between "
+"arbitrary points located outside the original graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:76
+msgid ""
+"When given a point identified with a `pid` that its being mapped to and edge"
+" with an identifier `edge_id`, with a `fraction` along that edge (from the "
+"source to the target of the edge) and some additional information about "
+"which `side` of the edge the point is on, then routing from arbitrary points"
+" more accurately reflect routing vehicles in road networks,"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid ""
+"I talk about a family of functions because it includes different "
+"functionalities."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:84
+msgid "pgr_withPoints is pgr_dijkstra based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:85
+msgid "pgr_withPointsCost is pgr_dijkstraCost based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:86
+msgid "pgr_withPointsKSP is pgr_ksp based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid "pgr_withPointsDD is pgr_drivingDistance based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:89
+msgid ""
+"In all this functions we have to take care of as many aspects as possible:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:91
+msgid "Must work for routing:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:93
+msgid "Cars (directed graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:94
+msgid "Pedestrians (undirected graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:96
+msgid "Arriving at the point:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:98
+msgid "In either side of the street."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:99
+msgid ""
+"Compulsory arrival on the side of the street where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:101
+msgid "Countries with:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:103
+msgid "Right side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:104
+msgid "Left side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:106
+msgid "Some points are:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:108
+msgid ""
+"Permanent, for example the set of points of clients stored in a table in the"
+" data base"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:109
+msgid "Temporal, for example points given through a web application"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:111
+msgid "The numbering of the points are handled with negative sign."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:113
+msgid "Original point identifiers are to be positive."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:114
+msgid "Transformation to negative is done internally."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:115
+msgid "For results for involving vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:117
+msgid "positive sign is a vertex of the original grpah"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:118
+msgid "negative sign is a point of the temporary points"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:120
+msgid ""
+"The reason for doing this is to avoid confusion when there is a vertex with "
+"the same number as identifier as the points identifier."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:123
+msgid "Graph & edges"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:125
+msgid ""
+"Let :math:`G_d(V,E)` where :math:`V` is the set of vertices and :math:`E` is"
+" the set of edges be the original directed graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:127
+msgid ""
+"An edge of the original `edges_sql` is :math:`(id, source, target, cost, "
+"reverse\\_cost)` will generate internally"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:129
+msgid ":math:`(id, source, target, cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:130
+msgid ":math:`(id, target, source, reverse\\_cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:133
+msgid "Point Definition"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:135
+msgid ""
+"A point is defined by the quadruplet: :math:`(pid, eid, fraction, side)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:137
+msgid "**pid** is the point identifier"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:138
+msgid "**eid** is an edge id of the `edges_sql`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:139
+msgid "**fraction** represents where the edge `eid` will be cut."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:140
+msgid "**side** Indicates the side of the edge where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:144
+msgid "Creating Temporary Vertices in the Graph"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:146
+msgid "For edge (15, 9,12 10, 20), & lets insert point (2, 12, 0.3, r)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:149
+msgid "On a right hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:150
+msgid "From first image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:152
+msgid "We can arrive to the point only via vertex 9."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:153
+msgid "It only afects the edge (15, 9,12, 10) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:154
+msgid "Edge (15, 12,9, 20) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:155
+#: ../../build/doc/withPoints-family.rst:167
+#: ../../build/doc/withPoints-family.rst:182
+msgid "Create new edges:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:157
+#: ../../build/doc/withPoints-family.rst:186
+msgid "(15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:158
+#: ../../build/doc/withPoints-family.rst:187
+msgid "(15, -1,12, 7) edge from point 1 to vertex 12 has cost 7"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:161
+msgid "On a left hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:162
+msgid "From second image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:164
+msgid "We can arrive to the point only via vertex 12."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:165
+msgid "It only afects the edge (15, 12,9 20) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:166
+msgid "Edge (15, 9,12, 10) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:169
+#: ../../build/doc/withPoints-family.rst:184
+msgid "(15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:170
+#: ../../build/doc/withPoints-family.rst:185
+msgid "(15, -1,9, 6) edge from point 1 to vertex 9 has cost 6"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:172
+msgid "that fraction is from vertex 9 to vertex 12"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:176
+msgid "When driving side does not matter"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:177
+msgid "From third image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:179
+msgid "We can arrive to the point either via vertex 12 or via vertex 9"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:180
+msgid "Edge (15, 12,9 20) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:181
+msgid "Edge (15, 9,12, 10) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:190
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:193
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:194
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:195
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/KSP-category.po b/locale/fr/LC_MESSAGES/KSP-category.po
new file mode 100644
index 0000000..9232738
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/KSP-category.po
@@ -0,0 +1,36 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/KSP-category.rst:14
+msgid "KSP Category"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:18
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:19
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:26
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:27
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:28
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/TSP-family.po b/locale/fr/LC_MESSAGES/TSP-family.po
new file mode 100644
index 0000000..0f03653
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/TSP-family.po
@@ -0,0 +1,556 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/TSP-family.rst:13
+msgid "Traveling Sales Person - Family of functions"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:17
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:18
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:33
+msgid "Origin"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid ""
+"The traveling sales person problem was studied in the 18th century by "
+"mathematicians"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid "**Sir William Rowam Hamilton** and **Thomas Penyngton Kirkman**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:38
+msgid ""
+"A discussion about the work of Hamilton & Kirkman can be found in the book "
+"**Graph Theory (Biggs et al. 1976)**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:41
+msgid "ISBN-13: 978-0198539162"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:42
+msgid "ISBN-10: 0198539169"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:44
+msgid ""
+"It is believed that the general form of the TSP have been first studied by "
+"Kalr Menger in Vienna and Harvard. The problem was later promoted by "
+"Hassler, Whitney & Merrill at Princeton. A detailed description about the"
+" connection between Menger & Whitney, and the development of the TSP can be "
+"found in `On the history of combinatorial optimization (till 1960) "
+"<http://www.cwi.nl/~lex/files/histco.ps>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:50
+msgid "Problem Definition"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:52
+msgid ""
+"Given a collection of cities and travel cost between each pair, find the "
+"cheapest way for visiting all of the cities and returning to the starting "
+"point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:56
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:58
+msgid "The travel costs are symmetric:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:60
+msgid ""
+"traveling costs from city A to city B are just as much as traveling from B "
+"to A."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:62
+msgid "This problem is an NP-hard optimization problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:64
+msgid "To calculate the number of different tours through :math:`n` cities:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:66
+msgid "Given a starting city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:67
+msgid "There are :math:`n-1` choices for the second city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:68
+msgid "And :math:`n-2` choices for the third city, etc."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:69
+msgid ""
+"Multiplying these together we get :math:`(n-1)! = (n-1) (n-2) . . 1`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:70
+msgid ""
+"Now since our travel costs do not depend on the direction we take around the"
+" tour:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:72
+msgid "this number by 2"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:73
+msgid ":math:`(n-1)!/2`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:76
+msgid "TSP & Simulated Annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:78
+msgid ""
+"The simulated annealing algorithm was originally inspired from the process "
+"of annealing in metal work."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:81
+msgid ""
+"Annealing involves heating and cooling a material to alter its physical "
+"properties due to the changes in its internal structure. As the metal cools "
+"its new structure becomes fixed, consequently causing the metal to retain "
+"its newly obtained properties. [C001]_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:88
+msgid "Pseudocode"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:89
+msgid ""
+"Given an initial solution, the simulated annealing process, will start with "
+"a high temperature and gradually cool down until the desired temperature is "
+"reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:92
+msgid ""
+"For each temperature, a neighbouring new solution **snew** is calculated. "
+"The higher the temperature the higher the probability of accepting the new "
+"solution as a possible bester solution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:95
+msgid ""
+"Once the desired temperature is reached, the best solution found is returned"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:118
+msgid "pgRouting Implementation"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:120
+msgid ""
+"pgRouting's implementation adds some extra parameters to allow some exit "
+"controls within the simulated annealing process."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:123
+msgid "To cool down faster to the next temperature:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:125
+msgid ""
+"max_changes_per_temperature: limits the number of changes in the solution "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:126
+msgid ""
+"max_consecutive_non_changes: limits the number of consecutive non changes "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:128
+msgid ""
+"This is done by doing some book keeping on the times **solution = snew;** is"
+" executed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:130
+msgid ""
+"max_changes_per_temperature: Increases by one when **solution** changes"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:131
+msgid ""
+"max_consecutive_non_changes: Reset to 0 when **solution** changes, and "
+"increased each **try**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:133
+msgid ""
+"Additionally to stop the algorithm at a higher temperature than the desired "
+"one:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:135
+msgid ""
+"max_processing_time: limits the time the simulated annealing is performed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:136
+msgid ""
+"book keeping is done to see if there was a change in **solution** on the "
+"last temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:138
+msgid ""
+"Note that, if no change was found in the first "
+"**max_consecutive_non_changes** tries, then the simulated annealing will "
+"stop."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:168
+msgid "Choosing parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:170
+msgid ""
+"There is no exact rule on how the parameters have to be chose, it will "
+"depend on the special characteristics of the problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:173
+msgid ""
+"Your computational time is crucial, then put your time limit to "
+"**max_processing_time**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:174
+msgid ""
+"Make the **tries_per_temperture** depending on the number of cities, for "
+"example:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:176
+msgid "Useful to estimate the time it takes to do one cycle: use `1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:178
+msgid "this will help to set a reasonable **max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:180
+msgid ":math:`n * (n-1)`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:181
+msgid ":math:`500 * n`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:183
+msgid ""
+"For a faster decreasing the temperature set **cooling_factor** to a smaller "
+"number, and set to a higher number for a slower decrease."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:186
+msgid ""
+"When for the same given data the same results are needed, set **randomize** "
+"to `false`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:188
+msgid "When estimating how long it takes to do one cycle: use `false`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:191
+msgid ""
+"A recommendation is to play with the values and see what fits to the "
+"particular data."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:196
+msgid "Description Of the Control parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:198
+msgid "The control parameters are optional, and have a default value."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+#: ../../build/doc/TSP-family.rst:233
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+msgid "`0`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "The greedy part of the implementation will use this identifier."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "Last visiting vertex before returning to start_vid."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "**max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205 ../../build/doc/TSP-family.rst:209
+#: ../../build/doc/TSP-family.rst:210 ../../build/doc/TSP-family.rst:211
+#: ../../build/doc/TSP-family.rst:234 ../../build/doc/TSP-family.rst:237
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "`+infinity`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "Stop the annealing processing when the value is reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "**tries_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206 ../../build/doc/TSP-family.rst:207
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:232
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "`500`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "Maximum number of times a neighbor(s) is searched in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "**max_changes_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "`60`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "Maximum number of times the solution is changed in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid "**max_consecutive_non_changes**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:209
+msgid "`100`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid ""
+"Maximum number of consecutive times the solution is not changed in each "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "**initial_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "Starting temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "**final_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "`0.1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "Ending temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "**cooling_factor**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "`0.9`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid ""
+"Value between between 0 and 1 (not including) used to calculate the next "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "**randomize**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "`true`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "Choose the random seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:214
+msgid "true: Use current time as seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:215
+msgid ""
+"false: Use `1` as seed. Using this value will get the same results with the "
+"same data in each execution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:225
+msgid "Description of the return columns"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:227
+msgid "Returns set of ``(seq, node, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:230
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "Identifier of the node/coordinate/point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:234
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid ""
+"Cost to traverse from the current ``node`` ito the next ``node`` in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:237
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:245
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:248
+msgid "References"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:249
+msgid ""
+"`Simulated annaeling algorithm for beginners <http://www.theprojectspot.com"
+"/tutorial-post/simulated-annealing-algorithm-for-beginners/6>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:251
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:252
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:255
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:256
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:257
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/aStar-family.po b/locale/fr/LC_MESSAGES/aStar-family.po
new file mode 100644
index 0000000..3364e02
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/aStar-family.po
@@ -0,0 +1,205 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/aStar-family.rst:13
+msgid "aStar - Family of functions"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:15
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic that allow it to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:19
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:20
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:21
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:34
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:36
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic, that is an estimation of the remaining cost from the "
+"vertex to the goal, that allows to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph. Running time: :math:`O((E + "
+"V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:46
+msgid "Heuristic"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:48
+msgid "Currently the heuristic functions available are:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:50
+msgid "0: :math:`h(v) = 0` (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:51
+msgid "1: :math:`h(v) = abs(max(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:52
+msgid "2: :math:`h(v) = abs(min(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:53
+msgid "3: :math:`h(v) = \\Delta x * \\Delta x + \\Delta y * \\Delta y`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:54
+msgid "4: :math:`h(v) = sqrt(\\Delta x * \\Delta x + \\Delta y * \\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:55
+msgid "5: :math:`h(v) = abs(\\Delta x) + abs(\\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:57
+msgid "where :math:`\\Delta x = x_1 - x_0` and :math:`\\Delta y = y_1 - y_0`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:63 ../../build/doc/aStar-family.rst:76
+#: ../../build/doc/aStar-family.rst:89
+msgid "Factor"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:66
+msgid "Analysis 1"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:67
+msgid ""
+"Working with cost/reverse_cost as length in degrees, x/y in lat/lon: Factor "
+"= 1 (no need to change units)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:71
+msgid "Analysis 2"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:72
+msgid ""
+"Working with cost/reverse_cost as length in meters, x/y in lat/lon: Factor ="
+" would depend on the location of the points:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "latitude"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "conversion"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78 ../../build/doc/aStar-family.rst:91
+msgid "45"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "1 longitude degree is 78846.81 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "78846"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79 ../../build/doc/aStar-family.rst:92
+msgid "0"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "1 longitude degree is 111319.46 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "111319"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:83
+msgid "Analysis 3"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:84
+msgid ""
+"Working with cost/reverse_cost as time in seconds, x/y in lat/lon: Factor: "
+"would depend on the location of the points and on the average speed say "
+"25m/s is the speed."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "1 longitude degree is (78846.81m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "3153 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "1 longitude degree is (111319.46 m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "4452 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:98
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:100
+msgid ":ref:`pgr_aStar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:101
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:102
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:103
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:104
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:107
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:108
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:109
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/allpairs-family.po b/locale/fr/LC_MESSAGES/allpairs-family.po
new file mode 100644
index 0000000..9749ed9
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/allpairs-family.po
@@ -0,0 +1,996 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/allpairs-family.rst:14
+msgid "All Pairs - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:16
+msgid "The following functions work an all vertices pair combinations"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:33
+msgid "Performance"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "The following tests:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:36
+msgid "non server computer"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:37
+msgid "with AMD 64 CPU"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:38
+msgid "4G memory"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:39
+msgid "trusty"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "posgreSQL version 9.3"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:43
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:45
+msgid "The following data was used"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:53
+msgid "Data processing was done with osm2pgrouting-alpha"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:66
+msgid "Results"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:68
+msgid "One"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:70
+msgid ""
+"This test is not with a bounding box The density of the passed graph is "
+"extremely low. For each <SIZE> 30 tests were executed to get the average The"
+" tested query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:83
+#: ../../build/doc/allpairs-family.rst:140
+msgid "The results of this tests are presented as:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:85
+msgid "is the number of edges given as input."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:86
+#: ../../build/doc/allpairs-family.rst:143
+msgid "is the total number of records in the query."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:87
+#: ../../build/doc/allpairs-family.rst:144
+msgid "is the density of the data :math:`\\dfrac{E}{V \\times (V-1)}`."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:88
+#: ../../build/doc/allpairs-family.rst:145
+msgid "is the number of records returned by the queries."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:89
+#: ../../build/doc/allpairs-family.rst:146
+msgid "is the average execution time in seconds of pgr_floydWarshall."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:90
+#: ../../build/doc/allpairs-family.rst:147
+msgid "is the average execution time in seconds of pgr_johnson."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "SIZE"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "EDGES"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "DENSITY"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "OUT ROWS"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Floyd-Warshall"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Johnson"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+#: ../../build/doc/allpairs-family.rst:96
+msgid "500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.18E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "1346"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.14"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.13"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+#: ../../build/doc/allpairs-family.rst:97
+msgid "1000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.36E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "2655"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.23"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.18"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:98
+msgid "1500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.55E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "4110"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:99
+msgid "2000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.73E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "5676"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.56"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+#: ../../build/doc/allpairs-family.rst:100
+msgid "2500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.89E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "7177"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.84"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+#: ../../build/doc/allpairs-family.rst:101
+msgid "3000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.07E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "8778"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "0.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+#: ../../build/doc/allpairs-family.rst:102
+msgid "3500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "1.24E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "10526"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "2.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "0.95"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+#: ../../build/doc/allpairs-family.rst:103
+msgid "4000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.41E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "12484"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "3.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.58E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "14354"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+#: ../../build/doc/allpairs-family.rst:105
+msgid "5000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.76E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "16503"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "6.05"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.78"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+#: ../../build/doc/allpairs-family.rst:106
+msgid "5500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "1.93E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "18623"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "7.53"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "2.03"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+#: ../../build/doc/allpairs-family.rst:107
+msgid "6000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.11E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "20710"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "8.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+#: ../../build/doc/allpairs-family.rst:108
+msgid "6500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.28E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "22752"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "9.99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+#: ../../build/doc/allpairs-family.rst:109
+msgid "7000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "2.46E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "24687"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "11.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "3.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+#: ../../build/doc/allpairs-family.rst:110
+msgid "7500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "2.64E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "26861"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "13.94"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "3.60"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+#: ../../build/doc/allpairs-family.rst:111
+msgid "8000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "2.83E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "29050"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "15.61"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "4.09"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+#: ../../build/doc/allpairs-family.rst:112
+msgid "8500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "3.01E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "31693"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "17.43"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "4.63"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+#: ../../build/doc/allpairs-family.rst:113
+msgid "9000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "3.17E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "33879"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "19.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "5.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+#: ../../build/doc/allpairs-family.rst:114
+msgid "9500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "3.35E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "36287"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "20.77"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "6.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+#: ../../build/doc/allpairs-family.rst:115
+msgid "10000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "3.52E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "38491"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "23.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "6.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:119
+msgid "Two"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:121
+msgid ""
+"This test is with a bounding box The density of the passed graph higher than"
+" of the Test One. For each <SIZE> 30 tests were executed to get the average "
+"The tested edge query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:133
+msgid "The tested queries"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:142
+msgid "is the size of the bounding box."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.001"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "44"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.0608"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "1197"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:154
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.10"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.002"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.0251"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "4330"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.003"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "223"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.0122"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "18849"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.004"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "358"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.0085"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "71834"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.005"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "470"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.0070"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "116290"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.22"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.006"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "639"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.0055"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "207030"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.27"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "843"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.0043"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "346930"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.64"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.38"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.008"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "996"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.0037"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "469936"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.90"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.009"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1146"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.0032"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "613135"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.62"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.010"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1360"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.0027"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "849304"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1.87"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.011"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1573"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.0024"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1147101"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "2.65"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1.04"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1789"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.0021"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1483629"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "3.72"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1.35"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1975"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.0019"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1846897"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "4.86"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.014"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2281"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.0017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2438298"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "7.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2588"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.0015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "3156007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "10.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2.80"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.016"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "2958"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.0013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "4090618"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "14.67"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "3.76"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "3247"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.0012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4868919"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "18.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4.48"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:174
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:176
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:177
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:178
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:181
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:182
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:183
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/bdAstar-family.po b/locale/fr/LC_MESSAGES/bdAstar-family.po
new file mode 100644
index 0000000..b2bd16b
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/bdAstar-family.po
@@ -0,0 +1,394 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Bidirectional A* - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:18
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:35
+msgid ""
+"Based on A* algorithm, the bidirectional search finds a shortest path from a"
+" starting vertex (``start_vid``) to an ending vertex (``end_vid``). It runs "
+"two simultaneous searches: one forward from the ``start_vid``, and one "
+"backward from the ``end_vid``, stopping when the two meet in the middle. "
+"This implementation can be used with a directed graph and an undirected "
+"graph."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:60
+msgid "It is expected to terminate faster than pgr_astar"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:63
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:78 ../../build/doc/bdAstar-family.rst:80
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:72
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79 ../../build/doc/bdAstar-family.rst:81
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:84
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:85
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:89
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:90
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:91
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:92
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:93
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:94
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96 ../../build/doc/bdAstar-family.rst:97
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:103
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/bdDijkstra-family.po b/locale/fr/LC_MESSAGES/bdDijkstra-family.po
new file mode 100644
index 0000000..67de3fa
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/bdDijkstra-family.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdDijkstra-family.rst:13
+msgid "Bidirectional Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:17
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:18
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:19
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:35
+msgid ""
+"Based on Dijkstra's algorithm, the bidirectional search finds a shortest "
+"path a starting vertex (``start_vid``) to an ending vertex (``end_vid``). It"
+" runs two simultaneous searches: one forward from the source, and one "
+"backward from the target, stopping when the two meet in the middle. This "
+"implementation can be used with a directed graph and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:60
+msgid "It is expected to terminate faster than pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:63
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:66
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:67
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:68
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/components-family.po b/locale/fr/LC_MESSAGES/components-family.po
new file mode 100644
index 0000000..dbca49a
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/components-family.po
@@ -0,0 +1,750 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/components-family.rst:13
+msgid "Components - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:22
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:23
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:25
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:42
+msgid "The problem definition"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:45
+msgid "Connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:46
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:49
+#: ../../build/doc/components-family.rst:183
+#: ../../build/doc/components-family.rst:252
+#: ../../build/doc/components-family.rst:312
+msgid "**Notice**: This problem defines on an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:51
+#: ../../build/doc/components-family.rst:117
+#: ../../build/doc/components-family.rst:185
+#: ../../build/doc/components-family.rst:254
+#: ../../build/doc/components-family.rst:314
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:54
+msgid "pgr_connectedComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:56
+#: ../../build/doc/components-family.rst:122
+#: ../../build/doc/components-family.rst:190
+#: ../../build/doc/components-family.rst:259
+#: ../../build/doc/components-family.rst:319
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:58
+#: ../../build/doc/components-family.rst:124
+#: ../../build/doc/components-family.rst:192
+#: ../../build/doc/components-family.rst:261
+#: ../../build/doc/components-family.rst:321
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:60
+#: ../../build/doc/components-family.rst:126
+#: ../../build/doc/components-family.rst:194
+#: ../../build/doc/components-family.rst:263
+#: ../../build/doc/components-family.rst:323
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:61
+#: ../../build/doc/components-family.rst:127
+#: ../../build/doc/components-family.rst:195
+#: ../../build/doc/components-family.rst:264
+#: ../../build/doc/components-family.rst:324
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:63
+#: ../../build/doc/components-family.rst:129
+#: ../../build/doc/components-family.rst:197
+#: ../../build/doc/components-family.rst:266
+#: ../../build/doc/components-family.rst:326
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:65
+#: ../../build/doc/components-family.rst:199
+#: ../../build/doc/components-family.rst:268
+#: ../../build/doc/components-family.rst:328
+msgid "The weighted undirected graph, :math:`G(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:67
+#: ../../build/doc/components-family.rst:133
+#: ../../build/doc/components-family.rst:201
+#: ../../build/doc/components-family.rst:270
+#: ../../build/doc/components-family.rst:330
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:69
+#: ../../build/doc/components-family.rst:203
+#: ../../build/doc/components-family.rst:272
+#: ../../build/doc/components-family.rst:332
+msgid ":math:`V = source \\cup target`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:72
+#: ../../build/doc/components-family.rst:137
+#: ../../build/doc/components-family.rst:206
+#: ../../build/doc/components-family.rst:275
+#: ../../build/doc/components-family.rst:335
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:74
+#: ../../build/doc/components-family.rst:208
+#: ../../build/doc/components-family.rst:277
+#: ../../build/doc/components-family.rst:337
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, cost_i) \\text{ when } cost"
+" >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} \\\\ \\cup &\\{(source_i, target_i, reverse\\_cost_i) \\text{ when }"
+" reverse\\_cost_i >=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:77
+#: ../../build/doc/components-family.rst:142
+#: ../../build/doc/components-family.rst:211
+#: ../../build/doc/components-family.rst:280
+#: ../../build/doc/components-family.rst:340
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:79
+#: ../../build/doc/components-family.rst:144
+#: ../../build/doc/components-family.rst:213
+#: ../../build/doc/components-family.rst:282
+#: ../../build/doc/components-family.rst:342
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:81
+#: ../../build/doc/components-family.rst:146
+#: ../../build/doc/components-family.rst:215
+#: ../../build/doc/components-family.rst:284
+#: ../../build/doc/components-family.rst:344
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:89
+#: ../../build/doc/components-family.rst:154
+#: ../../build/doc/components-family.rst:223
+msgid ":math:`\\boldsymbol{\\pi} = \\{(component_i, n\\_seq_i, node_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:298
+#: ../../build/doc/components-family.rst:358
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:92
+msgid ":math:`component_i = \\min \\{node_j | node_j \\in component_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:93
+#: ../../build/doc/components-family.rst:158
+#: ../../build/doc/components-family.rst:227
+msgid ""
+":math:`n\\_seq_i` is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:94
+#: ../../build/doc/components-family.rst:159
+msgid ":math:`node_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:95
+#: ../../build/doc/components-family.rst:160
+#: ../../build/doc/components-family.rst:229
+#: ../../build/doc/components-family.rst:296
+#: ../../build/doc/components-family.rst:356
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:97
+#: ../../build/doc/components-family.rst:162
+#: ../../build/doc/components-family.rst:231
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:298
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+#: ../../build/doc/components-family.rst:170
+#: ../../build/doc/components-family.rst:239
+#: ../../build/doc/components-family.rst:301
+#: ../../build/doc/components-family.rst:361
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:101
+msgid "The first component is composed of nodes ``0``, ``1`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:102
+msgid "The second component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+msgid "The third component is composed of nodes ``2`` and ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:111
+msgid "Strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:112
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:115
+msgid "**Notice**: This problem defines on a directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:120
+msgid "pgr_strongComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:131
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:135
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:139
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:157
+#: ../../build/doc/components-family.rst:226
+msgid ":math:`component_i = \\min {node_j | node_j \\in component_i}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:166
+msgid "The first component is composed of nodes ``1``, ``2`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:167
+msgid "The second component is composed of node ``0``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:168
+msgid "The third component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:169
+msgid "The fourth component is composed of node ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:170
+msgid "The fifth component is composed of node ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:177
+msgid "Biconnected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:178
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:188
+msgid "pgr_biconnectedComponents(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:228
+msgid ":math:`edge_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:358
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:235
+msgid ""
+"The first component is composed of edges ``1 - 2``, ``0 - 1`` and ``0 - 2``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:236
+msgid ""
+"The second component is composed of edges ``2 - 4``, ``2 - 3`` and ``3 - "
+"4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:237
+msgid "The third component is composed of edge ``5 - 6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:238
+msgid "The fourth component is composed of edge ``6 - 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:239
+msgid ""
+"The fifth component is composed of edges ``8 - 9``, ``9 - 10`` and ``8 - "
+"10``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:246
+msgid "Articulation Points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:247
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:257
+msgid "pgr_articulationPoints(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:292
+msgid ":math:`\\boldsymbol{\\pi} = \\{node_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:295
+msgid ":math:`node_i` is an articulation point."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:301
+msgid "Articulation points are nodes ``2`` and ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:308
+msgid "Bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:309
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:317
+msgid "pgr_bridges(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:352
+msgid ":math:`\\boldsymbol{\\pi} = \\{edge_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:355
+msgid ":math:`edge_i` is an edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:361
+msgid "Bridges are edges ``5 <--> 6`` and ``6 <--> 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:370
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:372
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:378
+#: ../../build/doc/components-family.rst:379
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+#: ../../build/doc/components-family.rst:384
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:382
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:386
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:390
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:392
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:393
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:402
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:405
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:416
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:418
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:444
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:443
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:443
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:461
+#: ../../build/doc/components-family.rst:477
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:435
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:437
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:443
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:453
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:455
+#: ../../build/doc/components-family.rst:471
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:469
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:483
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:486
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:487
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:488
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/contraction-family.po b/locale/fr/LC_MESSAGES/contraction-family.po
new file mode 100644
index 0000000..182343c
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/contraction-family.po
@@ -0,0 +1,745 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/contraction-family.rst:14
+msgid "Contraction - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:21
+msgid ":ref:`pgr_contractGraph`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:29
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:31
+msgid ""
+"In big graphs, like the road graphs, or electric networks, graph contraction"
+" can be used to speed up some graph algorithms. Contraction reduces the size"
+" of the graph by removing some of the vertices and edges and, for example, "
+"might add edges that represent a sequence of original edges decreasing the "
+"total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:33
+msgid ""
+"This implementation gives a flexible framework for adding contraction "
+"algorithms in the future, currently, it supports two algorithms:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:35
+#: ../../build/doc/contraction-family.rst:46
+msgid "Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:36
+#: ../../build/doc/contraction-family.rst:166
+msgid "Linear contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:38
+msgid "Allowing the user to:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:40
+msgid "Forbid contraction on a set of nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:41
+msgid ""
+"Decide the order of the contraction algorithms and set the maximum number of"
+" times they are to be executed."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:43
+msgid "UNDER DISCUSSION: Forbid contraction on a set of edges"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:47
+msgid "In the algorithm, dead end contraction is represented by 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:50
+msgid "Dead end nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:52
+msgid ""
+"The definition of a dead end node is different for a directed and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:54
+msgid "In case of a undirected graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:56
+msgid "The number of adjacent vertices is 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:58
+msgid "In case of an directed graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:60
+msgid "There are no outgoing edges and has at least one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:61
+msgid "There is one incoming and one outgoing edge with the same identifier."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:64
+#: ../../build/doc/contraction-family.rst:178
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:65
+msgid "The green node ``B`` represents a dead end node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:66
+msgid "The node ``A`` is the only node connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:67
+#: ../../build/doc/contraction-family.rst:181
+msgid ""
+"Node ``A`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:68
+#: ../../build/doc/contraction-family.rst:183
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:86
+msgid "Operation: Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:88
+msgid ""
+"The dead end contraction will stop until there are no more dead end nodes. "
+"For example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:91
+#: ../../build/doc/contraction-family.rst:208
+msgid ""
+"Node ``A`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:92
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:93
+msgid "Node ``B`` is the only node connecting to ``C``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:94
+msgid "The green node ``C`` represents a `Dead End` node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:113
+msgid ""
+"After contracting ``C``, node ``B`` is now a `Dead End` node and is "
+"contracted:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:129
+msgid "Node ``B`` gets contracted"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:143
+msgid "Nodes ``B`` and ``C`` belong to node ``A``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:148
+msgid "Not Dead End nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:150
+msgid "In this graph ``B`` is not a `dead end` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:167
+msgid "In the algorithm, linear contraction is represented by 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:170
+msgid "Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:172
+msgid "A node is considered a linear node if satisfies the following:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:174
+msgid "The number of adjacent vertices are 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:175
+msgid "Should have at least one incoming edge and one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:179
+msgid "The green node ``B`` represents a linear node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:180
+msgid "The nodes ``A`` and ``C`` are the only nodes connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:182
+msgid ""
+"Node ``C`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:203
+msgid "Operation: Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:205
+msgid ""
+"The linear contraction will stop until there are no more linear nodes. For "
+"example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:209
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:210
+msgid ""
+"Node ``C`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:211
+msgid ""
+"Node ``D`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:212
+msgid "The green nodes ``B`` and ``C`` represents `Linear` nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:234
+msgid ""
+"After contracting ``B``, a new edge gets inserted between ``A`` and ``C`` "
+"which is represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:254
+msgid "Node ``C`` is `linear node` and gets contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:272
+msgid ""
+"Nodes ``B`` and ``C`` belong to edge connecting ``A`` and ``D`` which is "
+"represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:275
+msgid "Not Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:277
+msgid "In this graph ``B`` is not a `linear` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:298
+msgid "The cycle"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:300
+msgid ""
+"Contracting a graph, can be done with more than one operation. The order of "
+"the operations affect the resulting contracted graph, after applying one "
+"operation, the set of vertices that can be contracted by another operation "
+"changes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:302
+msgid ""
+"This implementation, cycles ``max_cycles`` times through "
+"``operations_order`` ."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:315
+msgid "Contracting Sample Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:317
+msgid ""
+"In this section, building and using a contracted graph will be shown by "
+"example."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:319
+msgid "The :doc:`sampledata` for an undirected graph is used"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:320
+msgid "a dead end operation first followed by a linear operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:322
+msgid "The original graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:326
+msgid "After doing a dead end contraction operation:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:330
+msgid "Doing a linear contraction operation to the graph above"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:335
+msgid ""
+"There are five cases, in this documentation, which arise when calculating "
+"the shortest path between a given source and target. In this examples, "
+"``pgr_dijkstra`` is used."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:338
+msgid "**Case 1**: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:339
+msgid ""
+"**Case 2**: Source belongs to a contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:340
+msgid ""
+"**Case 3**: Source belongs to a vertex subgraph, while target belongs to an "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:341
+msgid ""
+"**Case 4**: Source belongs to a contracted graph, while target belongs to an"
+" vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:342
+msgid ""
+"**Case 5**: The path contains a new edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:345
+msgid "Construction of the graph in the database"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:348
+msgid "Original Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:349
+msgid ""
+"The following query shows the original data involved in the contraction "
+"operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:356
+msgid "Contraction Results"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:361
+msgid ""
+"The above results do not represent the contracted graph. They represent the "
+"changes done to the graph after applying the contraction algorithm. We can "
+"see that vertices like 6 and 11 do not appear in the contraction results "
+"because they were not affected by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:364
+msgid "step 1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:365
+msgid ""
+"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` "
+"tables:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "The vertices set belonging to the vertex/edge"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+#: ../../build/doc/contraction-family.rst:372
+msgid "**is_contracted**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+msgid ""
+"On a `vertex` table: when ``true`` the vertex is contracted, so is not part "
+"of the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:372
+msgid ""
+"On an `edge` table: when ``true`` the edge was generated by the contraction "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:375
+msgid "Using the following queries:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:382
+msgid "step 2"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:383
+msgid ""
+"For simplicity, in this documentation, store the results of the call to "
+"pgr_contractGraph in a temporary table"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:390
+msgid "step 3"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:391
+msgid ""
+"Update the `vertex` and `edge` tables using the results of the call to "
+"pgr_contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:393
+msgid ""
+"In `edge_table_vertices_pgr.is_contracted` indicate the vertices that are "
+"contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:399
+msgid ""
+"Add to `edge_table_vertices_pgr.contracted_vertices` the contracted "
+"vertices belonging to the vertices."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:405
+msgid "Insert the new edges generated by pgr_contractGraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:412
+msgid "step 3.1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:413
+msgid "Verify visually the updates."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:415
+msgid "On the `edge_table_vertices_pgr`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:421
+msgid "On the `edge_table`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:427
+msgid ""
+"vertices that belong to the contracted graph are the non contracted vertices"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:434
+msgid "case 1: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:435
+msgid ""
+"Inspecting the contracted graph above, vertex 3 and vertex 11 are part of "
+"the contracted graph. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:437
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:438
+#: ../../build/doc/contraction-family.rst:452
+#: ../../build/doc/contraction-family.rst:469
+#: ../../build/doc/contraction-family.rst:485
+#: ../../build/doc/contraction-family.rst:507
+msgid ""
+"when selecting the edges, only edges that have the source and the target in "
+"that set are the edges belonging to the contracted graph, that is done in "
+"the WHERE clause."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:440
+msgid ""
+"Visually, looking at the original graph, going from 3 to 11: 3 -> 6 -> 11, "
+"and in the contracted graph, it is also 3 -> 6 -> 11. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:448
+msgid ""
+"case 2: Source belongs to the contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:452
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 1 belongs to the contracted subgraph of edge 19. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:450
+msgid ""
+"expand1 holds the contracted vertices of the edge where vertex 1 belongs. "
+"(belongs to edge 19)."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:451
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"also the contracted vertices of edge 19."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:454
+msgid ""
+"Visually, looking at the original graph, going from 3 to 1: 3 -> 2 -> 1, and"
+" in the contracted graph, it is also 3 -> 2 -> 1. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:463
+msgid ""
+"case 3: Source belongs to a vertex subgraph, while target belongs to an edge"
+" subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:464
+msgid ""
+"Inspecting the contracted graph above, vertex 7 belongs to the contracted "
+"subgraph of vertex 5 and vertex 13 belongs to the contracted subgraph of "
+"edge 21. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:466
+#: ../../build/doc/contraction-family.rst:483
+msgid ""
+"expand7 holds the contracted vertices of vertex where vertex 7 belongs. "
+"(belongs to vertex 5)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:467
+msgid ""
+"expand13 holds the contracted vertices of edge where vertex 13 belongs. "
+"(belongs to edge 21)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:468
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"contracted vertices of vertex 5 and contracted vertices of edge 21."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:471
+msgid ""
+"Visually, looking at the original graph, going from 7 to 13: 7 -> 8 -> 5 -> "
+"10 -> 13, and in the contracted graph, it is also 7 -> 8 -> 5 -> 10 -> 13. "
+"The results, on the contracted graph match the results as if it was done on "
+"the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:480
+msgid ""
+"case 4: Source belongs to the contracted graph, while target belongs to an "
+"vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:481
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 7 belongs to the contracted subgraph of vertex 5. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:484
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"the contracted vertices of vertex 5."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:487
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, but in the contracted graph, it is 3 -> 5 -> 8 -> 7. The results, on "
+"the contracted graph do not match the results as if it was done on the "
+"original graph. This is because the path contains edge 19 which is added by "
+"the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:495
+msgid "case 5: The path contains an edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:496
+msgid ""
+"In the previous example we can see that the path from vertex 3 to vertex 7 "
+"contains an edge which is added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:502
+msgid ""
+"Inspecting the contracted graph above, edge 19 should be expanded. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:504
+msgid "first_dijkstra holds the results of the dijkstra query."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:505
+msgid ""
+"edges_to_expand holds the edges added by the contraction algorithm and "
+"included in the path."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:506
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"vertices of the contracted solution and the contracted vertices of the edges"
+" added by the contraction algorithm and included in the contracted solution."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:509
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, and in the contracted graph, it is also 3 -> 2 -> 5 -> 8 -> 7. The "
+"results, on the contracted graph match the results as if it was done on the "
+"original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:517
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:519
+msgid ""
+"http://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:520
+msgid "http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:521
+msgid ""
+"The queries use :ref:`pgr_contractGraph` function and the :doc:`sampledata` "
+"network."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:524
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:525
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:526
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/cost-category.po b/locale/fr/LC_MESSAGES/cost-category.po
new file mode 100644
index 0000000..efea606
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/cost-category.po
@@ -0,0 +1,178 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost-category.rst:13
+msgid "Cost - Category"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:17
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:18
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:20
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:21
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:34
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:36
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:38
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:39
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:40
+msgid ""
+"Returns the sum of the costs of the resulting path(s) for pair combination "
+"of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:44
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:46
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:48
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:50
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:52
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:54
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:56
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:58
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:60
+msgid "Any duplicated value in the `start_vids` or in `end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:62
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:64
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:65
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/costMatrix-category.po b/locale/fr/LC_MESSAGES/costMatrix-category.po
new file mode 100644
index 0000000..ad36b5e
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/costMatrix-category.po
@@ -0,0 +1,237 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/costMatrix-category.rst:13
+msgid "Cost Matrix - Category"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:17
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:18
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:20
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:21
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:40
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:43
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:45
+msgid ""
+":ref:`tsp` needs as input a symmetric cost matrix and no edge `(u, v)` must "
+"value :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:47
+msgid ""
+"This collection of functions will return a cost matrix in form of a table."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:53
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:55
+msgid "Can be used as input to :ref:`pgr_tsp`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:57
+msgid ""
+"when the resulting matrix is symmetric and there is no :math:`\\infty` "
+"value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:58
+msgid "It will be the users responsibility to make the matrix symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:60
+msgid "By using geometric or harmonic average of the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:61
+msgid "By using max or min the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:62
+msgid ""
+"By setting the upper triangle to be the mirror image of the lower triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:63
+msgid ""
+"By setting the lower triangle to be the mirror image of the upper triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:65
+msgid "It is also the users responsibility to fix an :math:`\\infty` value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:67
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:68
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:69
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:70
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:71
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:73
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:75
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:77
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:79
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:81
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:83
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:85
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:87
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:89
+msgid "Any duplicated value in the `start_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:91
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:93
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:94
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:96
+msgid "Running time: approximately :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:101
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:103
+msgid ":ref:`pgr_tsp`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/cost_result.po b/locale/fr/LC_MESSAGES/cost_result.po
new file mode 100644
index 0000000..cfc1232
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/cost_result.po
@@ -0,0 +1,92 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost_result.rst:13
+msgid "pgr_costResult[]"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:19 ../../build/doc/cost_result.rst:52
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:21
+msgid ""
+"``pgr_costResult[]`` — A set of records to describe a path result with cost "
+"attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:25 ../../build/doc/cost_result.rst:58
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:37 ../../build/doc/cost_result.rst:71
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:38 ../../build/doc/cost_result.rst:73
+msgid "generic name, to be specified by the function, typically the node id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:39 ../../build/doc/cost_result.rst:74
+msgid "generic name, to be specified by the function, typically the edge id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:40 ../../build/doc/cost_result.rst:75
+msgid "cost attribute"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:46
+msgid "pgr_costResult3[] - Multiple Path Results with Cost"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:54
+msgid ""
+"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
+" attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:72
+msgid "generic name, to be specified by the function, typically the path id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:79
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:80
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:81
+msgid "Replaces ``path_result``"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:87
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/dijkstra-family.po b/locale/fr/LC_MESSAGES/dijkstra-family.po
new file mode 100644
index 0000000..a9fa495
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/dijkstra-family.po
@@ -0,0 +1,262 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/dijkstra-family.rst:13
+msgid "Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:17
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:18
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:19
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:20
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:21
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:22
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:39
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:42
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:45
+msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:47
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:49
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:51
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:52
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:54
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:57
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:58
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:60
+#: ../../build/doc/dijkstra-family.rst:79
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:62
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:64
+#: ../../build/doc/dijkstra-family.rst:84
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:66
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = \\varnothing \\\\"
+" \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } \\{(source_i, "
+"target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup"
+" \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } "
+"reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:76
+msgid "Undirected graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:77
+msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:81
+msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:86
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, "
+"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } "
+"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ "
+"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & "
+"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost "
+">=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) "
+"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup "
+"\\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:99
+msgid "The problem"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:100
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:102
+msgid ":math:`start_{vid} \\in V` a starting vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:103
+msgid ":math:`end_{vid} \\in V` an ending vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:104
+msgid ""
+":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = "
+"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:109
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:118
+msgid ""
+":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, "
+"agg\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:131
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:121
+msgid ":math:`path\\_seq_i = i`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:122
+msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:123
+msgid ":math:`node_i \\in V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:124
+msgid ":math:`node_1 = start_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:125
+msgid ":math:`node_{| \\pi |} = end_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:126
+msgid ":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:127
+msgid ""
+":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad "
+"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | "
+"\\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:128
+msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:129
+msgid ""
+":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 "
+"\\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad "
+"\\text{when } i \\neq 1 \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:137
+msgid ""
+"In other words: The algorithm returns a the shortest path between "
+":math:`start_{vid}` and :math:`end_{vid}` , if it exists, in terms of a "
+"sequence of nodes and of edges,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:134
+msgid ""
+":math:`path\\_seq` indicates the relative position in the path of the "
+":math:`node` or :math:`edge`."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:135
+msgid ""
+":math:`cost` is the cost of the edge to be used to go to the next node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:136
+msgid ""
+":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:139
+msgid "If there is no path, the resulting set is empty."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:143
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:146
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:147
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:148
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/drivingDistance-category.po b/locale/fr/LC_MESSAGES/drivingDistance-category.po
new file mode 100644
index 0000000..a71b4c7
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/drivingDistance-category.po
@@ -0,0 +1,52 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/drivingDistance-category.rst:14
+msgid "Driving Distance - Category"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:18
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:19
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:20
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:22
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:23
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:36
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:39
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:40
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:41
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/flow-family.po b/locale/fr/LC_MESSAGES/flow-family.po
new file mode 100644
index 0000000..a000199
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/flow-family.po
@@ -0,0 +1,331 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Flow - Family of functions"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:19
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:23
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:24
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:45
+msgid "Flow Functions General Information"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:52
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:53
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:54
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:56
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:58
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:59
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:61
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:63
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:64
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:66
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:67
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:72
+msgid ""
+":ref:`pgr_maxFlow <pgr_maxFlow>` is the maximum Flow and that maximum is "
+"guaranteed to be the same on the functions :ref:`pgr_pushRelabel "
+"<pgr_pushRelabel>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`, "
+":ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, but the actual flow "
+"through each edge may vary."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:77
+msgid "Problem definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:79
+msgid ""
+"A flow network is a directed graph where each edge has a capacity and a "
+"flow. The flow through an edge must not exceed the capacity of the edge. "
+"Additionally, the incoming and outgoing flow of a node must be equal except "
+"the for source which only has outgoing flow, and the destination(sink) which"
+" only has incoming flow."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:83
+msgid ""
+"Maximum flow algorithms calculate the maximum flow through the graph and the"
+" flow of each edge."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:85
+msgid ""
+"The maximum flow through the graph is guaranteed to be the same with all "
+"implementations, but the actual flow through each edge may vary. Given the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:89
+msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:91
+msgid ""
+"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, "
+"reverse\\_capacity_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:94
+msgid "Graph definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:95
+msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:97
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:99
+msgid ""
+":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup "
+"target_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:101
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:103
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) "
+"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = "
+"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, "
+"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup "
+"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } "
+"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:111
+msgid "Maximum flow problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:112
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:115
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:116
+msgid ":math:`source\\_vertex \\in V` the source vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:117
+msgid ":math:`sink\\_vertex \\in V` the sink vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:119
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:121
+msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:123
+msgid ""
+":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, "
+"flow_i, residual\\_capacity_i)}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:125
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:127
+msgid ""
+":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their "
+"residual capacity and flow. The maximum flow through the graph can be "
+"obtained by aggregating on the source or sink and summing the flow from/to "
+"it. In particular:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:129
+msgid ":math:`id_i = i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:130
+msgid ":math:`edge\\_id = id_i` in edges_sql"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:131
+msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:135
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:137
+msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/geom_result.po b/locale/fr/LC_MESSAGES/geom_result.po
new file mode 100644
index 0000000..e2d89a1
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/geom_result.po
@@ -0,0 +1,74 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/geom_result.rst:13
+msgid "pgr_geomResult[]"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:21
+msgid ""
+"``pgr_geomResult[]`` — A set of records to describe a path result with "
+"geometry attribute."
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:25
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:37
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:38 ../../build/doc/geom_result.rst:39
+msgid "generic name, to be specified by the function"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:40
+msgid "geometry attribute"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:44
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:45
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:46
+msgid "Replaces ``geoms``"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:50
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:52
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:56
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:57
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:58
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/index.po b/locale/fr/LC_MESSAGES/index.po
new file mode 100644
index 0000000..44ac3e4
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/index.po
@@ -0,0 +1,306 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/index.rst:14
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/index.rst:16
+msgid ""
+"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
+"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
+"and other network analysis functionality."
+msgstr ""
+
+#: ../../build/doc/index.rst:18
+msgid "This is the manual for pgRouting |release|."
+msgstr ""
+
+#: ../../build/doc/index.rst:24
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
+"free to use this material any way you like, but we ask that you attribute "
+"credit to the pgRouting Project and wherever possible, a link back to "
+"http://pgrouting.org. For other licenses used in pgRouting see the "
+":ref:`license` page."
+msgstr ""
+
+#: ../../build/doc/index.rst:27
+msgid "General"
+msgstr ""
+
+#: ../../build/doc/index.rst:37
+msgid ":doc:`sampledata` that is used in the examples of this manual."
+msgstr ""
+
+#: ../../build/doc/index.rst:45
+msgid "Pgrouting Concepts"
+msgstr ""
+
+#: ../../build/doc/index.rst:54
+msgid "Reference"
+msgstr ""
+
+#: ../../build/doc/index.rst:55
+msgid ":ref:`pgr_version` - to get pgRouting's version information."
+msgstr ""
+
+#: ../../build/doc/index.rst:64
+msgid ":ref:`Data Types <data_types>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:67
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:68
+msgid ""
+":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
+" path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:69
+msgid ""
+":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:78
+msgid ":ref:`Topology Functions <topology_functions>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:80
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/index.rst:81
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/index.rst:82
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/index.rst:83
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/index.rst:84
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/index.rst:93
+msgid ":ref:`Routing functions <routing_functions>`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:4
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:6
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:7
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:9
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:11
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:13
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:16
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:22
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:32
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/index.rst:108
+msgid "Available Functions but not official pgRouting functions"
+msgstr ""
+
+#: ../../build/doc/index.rst:110
+msgid ":ref:`Stable`"
+msgstr ""
+
+#: ../../build/doc/index.rst:111
+msgid ":ref:`proposed`"
+msgstr ""
+
+#: ../../build/doc/index.rst:121
+msgid ":ref:`Change Log <change_log>`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:3
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:4
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:5
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:6
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:7
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:8
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:9
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:10
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:11
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:12
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:13
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:14
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:16
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:17
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/index.rst:135
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/index.rst:136
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/index.rst:137
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgRouting-concepts.po b/locale/fr/LC_MESSAGES/pgRouting-concepts.po
new file mode 100644
index 0000000..34885ba
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgRouting-concepts.po
@@ -0,0 +1,1071 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "pgRouting Concepts"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:0
+msgid "Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "Getting Started"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid ""
+"This is a simple guide to walk you through the steps of getting started with"
+" pgRouting. In this guide we will cover:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:32
+msgid "Create a routing Database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:34
+msgid ""
+"The first thing we need to do is create a database and load pgrouting in the"
+" database. Typically you will create a database for each project. Once you "
+"have a database to work in, your can load your data and build your "
+"application in that database. This makes it easy to move your project later "
+"if you want to to say a production server."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:40
+msgid "For Postgresql 9.2 and later versions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:51
+msgid "Load Data"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:53
+msgid ""
+"How you load your data will depend in what form it comes it. There are "
+"various OpenSource tools that can help you, like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:56
+msgid ""
+"this is a tool for loading OSM data into postgresql with pgRouting "
+"requirements"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:57
+msgid "this is the postgresql shapefile loader"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:58
+msgid "this is a vector data conversion utility"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:59
+msgid "this is a tool for loading OSM data into postgresql"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:61
+msgid ""
+"So these tools and probably others will allow you to read vector data so "
+"that you may then load that data into your database as a table of some kind."
+" At this point you need to know a little about your data structure and "
+"content. One easy way to browse your new data table is with pgAdmin3 or "
+"phpPgAdmin."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:69
+msgid "Build a Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:71
+msgid ""
+"Next we need to build a topology for our street data. What this means is "
+"that for any given edge in your street data the ends of that edge will be "
+"connected to a unique node and to other edges that are also connected to "
+"that same unique node. Once all the edges are connected to nodes we have a "
+"graph that can be used for routing with pgrouting. We provide a tool that "
+"will help with this:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:77
+msgid "this step is not needed if data is loaded with `osm2pgrouting`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:83
+msgid ":ref:`pgr_create_topology`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:88
+msgid "Check the Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:90
+msgid ""
+"There are lots of possible sources for errors in a graph. The data that you "
+"started with may not have been designed with routing in mind. A graph has "
+"some very specific requirements. One is that it is *NODED*, this means that "
+"except for some very specific use cases, each road segment starts and ends "
+"at a node and that in general is does not cross another road segment that it"
+" should be connected to."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:97
+msgid ""
+"There can be other errors like the direction of a one-way street being "
+"entered in the wrong direction. We do not have tools to search for all "
+"possible errors but we have some basic tools that might help."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:109
+msgid ":ref:`pgr_analyze_graph`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:110
+msgid ":ref:`pgr_analyze_oneway`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:111
+msgid ":ref:`pgr_node_network`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:117
+msgid "Compute a Path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:119
+msgid ""
+"Once you have all the preparation work done above, computing a route is "
+"fairly easy. We have a lot of different algorithms that can work with your "
+"prepared road network. The general form of a route query is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:127
+msgid ""
+"As you can see this is fairly straight forward and you can look and the "
+"specific algorithms for the details of the signatures and how to use them. "
+"These results have information like edge id and/or the node id along with "
+"the cost or geometry for the step in the path from *start* to *end*. Using "
+"the ids you can join these result back to your edge table to get more "
+"information about each step in the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:134
+msgid ":ref:`pgr_dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:141
+msgid "Inner Queries"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:146
+msgid ""
+"There are several kinds of valid inner queries and also the columns returned"
+" are depending of the function. Which kind of inner query will depend on the"
+" function(s) requirements. To simplify variety of types, ``ANY-INTEGER`` and"
+" ``ANY-NUMERICAL`` is used."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:152
+#: ../../build/doc/pgRouting-concepts.rst:182
+#: ../../build/doc/pgRouting-concepts.rst:212
+#: ../../build/doc/pgRouting-concepts.rst:269
+#: ../../build/doc/pgRouting-concepts.rst:300
+#: ../../build/doc/pgRouting-concepts.rst:334
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:154
+#: ../../build/doc/pgRouting-concepts.rst:184
+#: ../../build/doc/pgRouting-concepts.rst:214
+#: ../../build/doc/pgRouting-concepts.rst:271
+#: ../../build/doc/pgRouting-concepts.rst:302
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:155
+#: ../../build/doc/pgRouting-concepts.rst:185
+#: ../../build/doc/pgRouting-concepts.rst:215
+#: ../../build/doc/pgRouting-concepts.rst:272
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:162
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:164
+#: ../../build/doc/pgRouting-concepts.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:247
+#: ../../build/doc/pgRouting-concepts.rst:282
+#: ../../build/doc/pgRouting-concepts.rst:314
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:287
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:290
+#: ../../build/doc/pgRouting-concepts.rst:294
+#: ../../build/doc/pgRouting-concepts.rst:319
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:263
+#: ../../build/doc/pgRouting-concepts.rst:264
+#: ../../build/doc/pgRouting-concepts.rst:265
+#: ../../build/doc/pgRouting-concepts.rst:266
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:174
+#: ../../build/doc/pgRouting-concepts.rst:204
+#: ../../build/doc/pgRouting-concepts.rst:257
+#: ../../build/doc/pgRouting-concepts.rst:292
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:178
+#: ../../build/doc/pgRouting-concepts.rst:208
+#: ../../build/doc/pgRouting-concepts.rst:261
+#: ../../build/doc/pgRouting-concepts.rst:296
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:193
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:224
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:227
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:232
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:234
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:236
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:245
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:280
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:312
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:321
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:322
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:328
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:329
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:330
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:336
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:337
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:345
+msgid "Return columns & values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:350
+msgid ""
+"There are several kinds of columns returned are depending of the function."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:355
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:357
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:363
+#: ../../build/doc/pgRouting-concepts.rst:364
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:367
+#: ../../build/doc/pgRouting-concepts.rst:368
+#: ../../build/doc/pgRouting-concepts.rst:385
+#: ../../build/doc/pgRouting-concepts.rst:386
+#: ../../build/doc/pgRouting-concepts.rst:403
+#: ../../build/doc/pgRouting-concepts.rst:404
+#: ../../build/doc/pgRouting-concepts.rst:405
+#: ../../build/doc/pgRouting-concepts.rst:406
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:378
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:380
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:397
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:415
+msgid "Advanced Topics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:423
+msgid "Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:427
+#: ../../build/doc/pgRouting-concepts.rst:528
+msgid "Overview"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:428
+msgid ""
+"Typically when GIS files are loaded into the data database for use with "
+"pgRouting they do not have topology information associated with them. To "
+"create a useful topology the data needs to be \"noded\". This means that "
+"where two or more roads form an intersection there it needs to be a node at "
+"the intersection and all the road segments need to be broken at the "
+"intersection, assuming that you can navigate from any of these segments to "
+"any other segment via that intersection."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:430
+msgid ""
+"You can use the :ref:`graph analysis functions <analytics>` to help you see "
+"where you might have topology problems in your data. If you need to node "
+"your data, we also have a function :ref:`pgr_nodeNetwork() "
+"<pgr_node_network>` that might work for you. This function splits ALL "
+"crossing segments and nodes them. There are some cases where this might NOT "
+"be the right thing to do."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:432
+msgid ""
+"For example, when you have an overpass and underpass intersection, you do "
+"not want these noded, but pgr_nodeNetwork does not know that is the case and"
+" will node them which is not good because then the router will be able to "
+"turn off the overpass onto the underpass like it was a flat 2D intersection."
+" To deal with this problem some data sets use z-levels at these types of "
+"intersections and other data might not node these intersection which would "
+"be ok."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:434
+msgid ""
+"For those cases where topology needs to be added the following functions may"
+" be useful. One way to prep the data for pgRouting is to add the following "
+"columns to your table and then populate them as appropriate. This example "
+"makes a lot of assumption like that you original data tables already has "
+"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
+"that they contain specific data values. This is only to give you an idea of "
+"what you can do with your data."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:455
+msgid ""
+"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
+"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
+"columns. The following example populated the remaining columns. In this "
+"example, the ``fcc`` column contains feature class code and the ``CASE`` "
+"statements converts it to an average speed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:518
+msgid ""
+"Now your database should be ready to use any (most?) of the pgRouting "
+"algorithms."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:524
+msgid "Graph Analytics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:529
+msgid ""
+"It is common to find problems with graphs that have not been constructed "
+"fully noded or in graphs with z-levels at intersection that have been "
+"entered incorrectly. An other problem is one way streets that have been "
+"entered in the wrong direction. We can not detect errors with respect to "
+"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
+"a graph and report them for additional inspections."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:531
+msgid ""
+"We do not current have any visualization tools for these problems, but I "
+"have used mapserver to render the graph and highlight potential problem "
+"areas. Someone familiar with graphviz might contribute tools for generating "
+"images with that."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:535
+msgid "Analyze a Graph"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:537
+msgid ""
+"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
+"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
+"table:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:560
+msgid "In the vertices table \"mytab_vertices_pgr\":"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:562
+msgid "Deadends are identified by ``cnt=1``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:563
+msgid "Potencial gap problems are identified with ``chk=1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:581
+msgid ""
+"For isolated road segments, for example, a segment where both ends are "
+"deadends. you can find these with the following query:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:590
+msgid ""
+"If you want to visualize these on a graphic image, then you can use "
+"something like mapserver to render the edges and the vertices and style "
+"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
+"tool like graphviz, or geoserver or other similar tools."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:594
+msgid "Analyze One Way Streets"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:596
+msgid ""
+":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
+" any flipped segments. Basically if you count the edges coming into a node "
+"and the edges exiting a node the number has to be greater than one."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:598
+msgid ""
+"This query will add two columns to the vertices_tmp table ``ein int`` and "
+"``eout int`` and populate it with the appropriate counts. After running this"
+" on a graph you can identify nodes with potential problems with the "
+"following query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:601
+msgid ""
+"The rules are defined as an array of text strings that if match the ``col`` "
+"value would be counted as true for the source or target in or out condition."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:605
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:607
+msgid ""
+"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
+"might have values like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:609
+msgid "'FT' - oneway from the source to the target node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:610
+msgid "'TF' - oneway from the target to the source node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:611
+msgid "'B' - two way street."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:612
+msgid "'' - empty field, assume twoway."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:613
+msgid "<NULL> - NULL field, use two_way_if_null flag."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:615
+msgid ""
+"Then we could form the following query to analyze the oneway streets for "
+"errors."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:634
+msgid ""
+"Typically these problems are generated by a break in the network, the one "
+"way direction set wrong, maybe an error related to z-levels or a network "
+"that is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:636
+msgid ""
+"The above tools do not detect all network issues, but they will identify "
+"some common problems. There are other problems that are hard to detect "
+"because they are more global in nature like multiple disconnected networks. "
+"Think of an island with a road network that is not connected to the mainland"
+" network because the bridge or ferry routes are missing."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:644
+msgid "Performance Tips"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:651
+msgid "For the Routing functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:653
+msgid ""
+"To get faster results bound your queries to the area of interest of routing "
+"to have, for example, no more than one million rows."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:655
+msgid ""
+"Use an inner query SQL that does not include some edges in the routing "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:663
+msgid "Integrating the inner query to the pgRouting function:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:677
+msgid "For the topology functions:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:679
+msgid ""
+"When \"you know\" that you are going to remove a set of edges from the edges"
+" table, and without those edges you are going to use a routing function you "
+"can do the following:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:681
+msgid "Analize the new topology based on the actual topology:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:687
+msgid "Or create a new topology if the change is permanent:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:698
+msgid "How to contribute"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:701
+msgid "Wiki"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:702
+msgid ""
+"Edit an existing `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_ page."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:703
+msgid "Or create a new Wiki page"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:705
+msgid ""
+"Create a page on the `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:706
+msgid "Give the title an appropriate name"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:709
+msgid ""
+"`Example <https://github.com/pgRouting/pgrouting/wiki/How-to:-Handle-"
+"parallel-edges-(KSP)>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:713
+msgid "Adding Functionaity to pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:714
+msgid ""
+"Consult the `developer's documentation "
+"<http://docs.pgrouting.org/doxy/2.4/index.html>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:719
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:720
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:721
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgRouting-installation.po b/locale/fr/LC_MESSAGES/pgRouting-installation.po
new file mode 100644
index 0000000..71b7f5f
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgRouting-installation.po
@@ -0,0 +1,418 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-installation.rst:13
+msgid "Installation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:16
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:17
+msgid ":ref:`install-short`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:18
+msgid ":ref:`install_get_sources`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:19
+msgid ":ref:`install_enable_db`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:20
+msgid ":ref:`install_dependencies`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:21
+msgid ":ref:`install_configuring`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:22
+msgid ":ref:`install_build`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:23
+msgid ":ref:`install_testing`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:25
+msgid ""
+"Instructions for downloading and installing binaries for different Operative"
+" systems instructions and additional notes and corrections not included in "
+"this documentation can be found in `Installation wiki "
+"<https://github.com/pgRouting/pgrouting/wiki/Notes-on-Download%2C-"
+"Installation-and-building-pgRouting>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:27
+msgid ""
+"To use pgRouting postGIS needs to be installed, please read the information "
+"about installation in this `Install Guide "
+"<http://www.postgis.us/presentations/postgis_install_guide_22.html>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:32
+msgid "Short Version"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:37
+msgid "Extracting the tar ball"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:44
+msgid "To compile assuming you have all the dependencies in your search path:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:54
+msgid ""
+"Once pgRouting is installed, it needs to be enabled in each individual "
+"database you want to use it in."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:66
+msgid "Get the sources"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:69
+msgid ""
+"The pgRouting latest release can be found in "
+"https://github.com/pgRouting/pgrouting/releases/latest"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:72
+msgid "wget"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:73
+msgid "To download this release:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:81
+msgid "Goto :ref:`install-short` to the extract and compile instructions."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:84
+msgid "git"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:85
+msgid "To download the repository"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:93
+msgid ""
+"Goto :ref:`install-short` to the compile instructions (there is no tar "
+"ball)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:100
+msgid "Enabling and upgrading in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:103
+msgid "Enabling the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:104
+msgid ""
+"pgRouting is an extension and depends on postGIS. Enabling postGIS before "
+"enabling pgRouting in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:113
+msgid "Upgrading the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:114
+msgid ""
+"To upgrade pgRouting in the database to version 2.4.0 use the following "
+"command:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:122
+msgid ""
+"More information can be found in "
+"https://www.postgresql.org/docs/current/static/sql-createextension.html"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:128
+msgid "Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:131
+msgid "Compilation Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:132
+msgid ""
+"To be able to compile pgRouting, make sure that the following dependencies "
+"are met:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:134
+msgid "C and C++0x compilers * g++ version >= 4.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:136
+msgid "Postgresql version >= 9.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:137
+msgid "PostGIS version >= 2.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:138
+msgid "The Boost Graph Library (BGL). Version >= 1.46"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:139
+msgid "CMake >= 2.8.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:140
+msgid "CGAL >= 4.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:144
+msgid "optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:145
+msgid "For user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:147
+msgid "Sphinx >= 1.1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:148
+msgid "Latex"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:150
+msgid "For developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:152
+msgid "Doxygen >= 1.7"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:154
+msgid "For testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:156
+msgid "pgtap"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:157
+msgid "pg_prove"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:161
+msgid "Example: Installing dependencies on linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:162
+msgid "Installing the compilation dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:174
+msgid "Installing the optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:188
+msgid "Configuring"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:190
+msgid "pgRouting uses the `cmake` system to do the configuration."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:192
+msgid "The build directory is different from the source directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:194
+msgid "Create the build directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:201
+msgid "Configurable variables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:205
+msgid "To see the variables that can be configured"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:213
+msgid "Configuring The Documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:214
+msgid ""
+"Most of the effort of the documentation has being on the HTML files. Some "
+"variables for the documentation:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Variable"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Comment"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "WITH_DOC"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+#: ../../build/doc/pgRouting-installation.rst:223
+#: ../../build/doc/pgRouting-installation.rst:224
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "BOOL=OFF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "Turn on/off building the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "BUILD_HTML"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BOOL=ON"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "If ON, turn on/off building HTML for user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BUILD_DOXY"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "If ON, turn on/off building HTML for developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "BUILD_LATEX"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "If ON, turn on/off building PDF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "BUILD_MAN"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "If ON, turn on/off building MAN pages"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "DOC_USE_BOOTSTRAP"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:228
+msgid "Configuring with documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:234
+msgid "Most of the effort of the documentation has being on the html files."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:240
+msgid "Building"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:242
+msgid "Using ``make`` to build the code and the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:244
+msgid "The following instructions start from *path/to/pgrouting/build*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:253
+msgid ""
+"We have tested on several platforms, For installing or reinstalling all the "
+"steps are needed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:255
+msgid "The sql signatures are configured and build in the ``cmake`` command."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:258
+msgid "MinGW on Windows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:269
+msgid "Linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:270
+msgid "The following instructions start from *path/to/pgrouting*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:280
+msgid "When the configuration changes:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:286
+msgid "and start the build process as mentioned above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:291
+msgid "Testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:293
+msgid "Currently there is no :code:`make test` and testing is done as follows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:295
+msgid "The following instructions start from *path/to/pgrouting/*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:305
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:308
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:309
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:310
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgRouting-introduction.po b/locale/fr/LC_MESSAGES/pgRouting-introduction.po
new file mode 100644
index 0000000..2f5927b
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgRouting-introduction.po
@@ -0,0 +1,222 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-introduction.rst:13
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:15
+msgid ""
+"pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL"
+" <http://postgresql.org>`_ geospatial database and adds routing and other "
+"network analysis functionality. A predecessor of pgRouting – pgDijkstra, "
+"written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was "
+"later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to "
+"pgRouting. The project is now supported and maintained by `Georepublic "
+"<http://georepublic.info>`_, `iMaptools <http://imaptools.com/>`__ and a "
+"broad user community."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:17
+msgid ""
+"pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ "
+"project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo"
+" Live <http://live.osgeo.org/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:23
+msgid "License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:25
+msgid "The following licenses can be found in pgRouting:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:30
+msgid "**License**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:32
+msgid "GNU General Public License, version 2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:33
+msgid ""
+"Most features of pgRouting are available under `GNU General Public License, "
+"version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:34
+msgid "Boost Software License - Version 1.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:35
+msgid ""
+"Some Boost extensions are available under `Boost Software License - Version "
+"1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:36
+msgid "MIT-X License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:37
+msgid ""
+"Some code contributed by iMaptools.com is available under MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:38
+msgid "Creative Commons Attribution-Share Alike 3.0 License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:39
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:41
+msgid ""
+"In general license information should be included in the header of each "
+"source file."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:45
+msgid "Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:48
+msgid "This Release Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:51
+#: ../../build/doc/pgRouting-introduction.rst:71
+msgid "Individuals (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:53
+msgid "Maoguang Wang, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:55
+msgid ""
+"And all the people that give us a little of their time making comments, "
+"finding issues, making pull requests etc."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:58
+#: ../../build/doc/pgRouting-introduction.rst:76
+msgid "Corporate Sponsors (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:60
+#: ../../build/doc/pgRouting-introduction.rst:78
+msgid ""
+"These are corporate entities that have contributed developer time, hosting, "
+"or direct monetary funding to the pgRouting project:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:62
+msgid "`Georepublic <https://georepublic.info/en/>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:63
+msgid ""
+"`Google Summer of Code <https://developers.google.com/open-source/gsoc/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:64
+msgid "`iMaptools <http://imaptools.com>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:65
+msgid "`Paragon Corporation <http://www.paragoncorporation.com/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:68
+msgid "Contributors Past & Present:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:73
+msgid ""
+"Akio Takubo, Andrea Nardelli, Anton Patrushev, Ashraf Hossain, Christian "
+"Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki,"
+" Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, "
+"Kai Behncke, Kishore Kumar, Ko Nagase, Manikata Kondeti, Mario Basa, Martin "
+"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Zia, Mukul Priya, Razequl"
+" Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Stephen Woodbridge, "
+"Sylvain Housseman, Sylvain Pasche, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:80
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:81
+msgid "CSIS (University of Tokyo)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:82
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:83
+msgid "Google Summer of Code"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:84
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:85
+msgid "Orkney"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:86
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:90
+msgid "More Information"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:92
+msgid ""
+"The latest software, documentation and news items are available at the "
+"pgRouting web site http://pgrouting.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:93
+msgid ""
+"PostgreSQL database server at the PostgreSQL main site "
+"http://www.postgresql.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:94
+msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:95
+msgid "Boost C++ source libraries at http://www.boost.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:96
+msgid ""
+"Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:97
+msgid ""
+"The Migration guide can be found at "
+"https://github.com/pgRouting/pgrouting/wiki/Migration-Guide."
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_KSP.po b/locale/fr/LC_MESSAGES/pgr_KSP.po
new file mode 100644
index 0000000..2ace271
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_KSP.po
@@ -0,0 +1,402 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_KSP.rst:13
+msgid "pgr_KSP"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:18
+msgid "``pgr_KSP`` — Returns the \"K\" shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:28
+msgid "Signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:34
+msgid ""
+"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
+" number of shortest paths desired."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:52
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:64
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:73
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14 ../../build/doc/pgr_KSP.rst:110
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:80
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86 ../../build/doc/pgr_KSP.rst:87
+#: ../../build/doc/pgr_KSP.rst:107 ../../build/doc/pgr_KSP.rst:108
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "**k**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88 ../../build/doc/pgr_KSP.rst:105
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "The desiered number of paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89 ../../build/doc/pgr_KSP.rst:90
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid ""
+"(optional). When ``true`` returns all the paths stored in the process heap. "
+"Default is ``false`` which only returns ``k`` paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:93
+msgid ""
+"Roughly, if the shortest path has ``N`` edges, the heap will contain about "
+"than ``N * k`` paths for small value of ``k`` and ``k > 1``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:98
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:100
+msgid ""
+"Returns set of ``(seq, path_seq, path_id, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid ""
+"Relative position in the path of ``node`` and ``edge``. Has value **1** for "
+"the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid ""
+"Path identifier. The ordering of the paths For two paths i, j if i < j then "
+"agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "Identifier of the node in the path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110 ../../build/doc/pgr_KSP.rst:111
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:115
+msgid ""
+"During the transition to 3.0, because pgr_ksp version 2.0 doesn't have "
+"defined a directed flag nor a heap_path flag, when pgr_ksp is used with only"
+" one flag version 2.0 signature will be used."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:119
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:122
+msgid "Examples to handle the one flag to choose signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:124 ../../build/doc/pgr_KSP.rst:134
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:132
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:143
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:145
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:153
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:155
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:164
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:166
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:173
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:175
+msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:176
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:179
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:180
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:181
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_TSP.po b/locale/fr/LC_MESSAGES/pgr_TSP.po
new file mode 100644
index 0000000..a9fecef
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_TSP.po
@@ -0,0 +1,224 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_TSP.rst:13
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:18
+msgid "``pgr_TSP`` - Returns a route that visits all the nodes exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:21
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:22
+msgid "Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:26
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:28
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:30
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:32
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of matrix cell contents. The "
+"matrix information must be symmetrical."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:58
+msgid "Basic Use"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:67
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:96
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:103
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:106
+msgid "Description of the Matrix Cell SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111 ../../build/doc/pgr_TSP.rst:112
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "Cost for going from start_vid to end_vid"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:116
+msgid "Can be Used with:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:118
+msgid ":ref:`pgr_dijkstraCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:119
+msgid ":ref:`pgr_withPointsCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:120
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:121
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:123
+msgid "To generate a symmetric matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:125
+msgid "directed := false."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:127
+msgid ""
+"If using directed := true, the resulting non symmetric matrix must be "
+"converted to symmetric by fixing the non symmetric values according to your "
+"application needs."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:145
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:147
+msgid "Using with points of interest."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:149
+msgid "To generate a symmetric matrix:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:151
+msgid ""
+"the **side** information of pointsOfInterset is ignored by not including it "
+"in the query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:152
+msgid "and **directed := false**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:158
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:163
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:165
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:166
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:167
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:170
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:171
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:172
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_aStar.po b/locale/fr/LC_MESSAGES/pgr_aStar.po
new file mode 100644
index 0000000..4e2ccb4
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_aStar.po
@@ -0,0 +1,642 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStar.rst:13
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:18
+msgid "``pgr_aStar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:27
+msgid "pgr_astar(one to one) 2.0.0, Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:28
+msgid "pgr_astar(other signatures) 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:33
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:35
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:37
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:38
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:40
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:46
+msgid "The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:50
+msgid "The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:52
+msgid "When (x,y) coordinates for the same vertex identifier differ:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:54
+msgid "A random selection of the vertex's (x,y) coordinates is used."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:56
+msgid "Running time: :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:84
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:92
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:99
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:112
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:118
+msgid "Undirected using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:130
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:138 ../../build/doc/pgr_aStar.rst:165
+#: ../../build/doc/pgr_aStar.rst:194
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139 ../../build/doc/pgr_aStar.rst:166
+#: ../../build/doc/pgr_aStar.rst:195
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:141
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:144
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:145
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:157
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:166
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:168
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:171
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:172 ../../build/doc/pgr_aStar.rst:201
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:186
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:195
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:197
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:200
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:203
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:217
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13 ../../build/doc/pgr_aStar.rst:234
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:228
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:231
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234 ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235 ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:238
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:239
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:243
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:244
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:245
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:246
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:247
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:248
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250 ../../build/doc/pgr_aStar.rst:251
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:260
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:262
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:263
+msgid ":doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:264
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:265
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:268
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:269
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:270
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_aStarCost.po b/locale/fr/LC_MESSAGES/pgr_aStarCost.po
new file mode 100644
index 0000000..41e1637
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_aStarCost.po
@@ -0,0 +1,528 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCost.rst:13
+msgid "pgr_aStarCost -- proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:18
+msgid ""
+"``pgr_aStarCost`` — Returns the aggregate cost shortest path using "
+":ref:`astar` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:26
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:53
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:60
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:72
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:78
+msgid "Setting a Heuristic"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:90
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99
+msgid ""
+"This signature finds a path from one ``start_vid`` to each ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:98 ../../build/doc/pgr_aStarCost.rst:125
+#: ../../build/doc/pgr_aStarCost.rst:154
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99 ../../build/doc/pgr_aStarCost.rst:126
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:101
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:104
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:105
+msgid ""
+"The extra ``end_vid`` column in the result is used to distinguish to which "
+"path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:117
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:126
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:128
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:131
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:132
+msgid ""
+"The extra ``start_vid`` column in the result is used to distinguish to "
+"which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:146
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:157
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:160
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:161
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:163
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:177
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_aStarCost.rst:194 ../../build/doc/pgr_aStarCost.rst:195
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:188
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:191
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:198
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:199
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:203
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:204
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:205
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:206
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:207
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:208
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210 ../../build/doc/pgr_aStarCost.rst:211
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. See "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:224
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:226
+msgid ":ref:`astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:227
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:228
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:229
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:232
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:233
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:234
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_aStarCostMatrix.po b/locale/fr/LC_MESSAGES/pgr_aStarCostMatrix.po
new file mode 100644
index 0000000..5193921
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_aStarCostMatrix.po
@@ -0,0 +1,457 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:13
+msgid "pgr_aStarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:18
+msgid ""
+"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:33
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:37
+msgid "Using aStar algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:40
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:57
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:68
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:88
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:90
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "**vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "Array of vertices_identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:115
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:116
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:120
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:121
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:122
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:123
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:124
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:125
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:150
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:152
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:153
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:154
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:155
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_alphaShape.po b/locale/fr/LC_MESSAGES/pgr_alphaShape.po
new file mode 100644
index 0000000..851cd18
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_alphaShape.po
@@ -0,0 +1,169 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_alphaShape.rst:13
+msgid "pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:21
+msgid "``pgr_alphaShape`` — Core function for alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:27
+msgid ""
+"Returns a table with (x, y) rows that describe the vertices of an alpha "
+"shape."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:50
+msgid "Returns a vertex record for each row:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:52
+msgid "x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:53
+msgid "y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:55
+msgid ""
+"If a result includes multiple outer/inner rings, return those with separator"
+" row (x=NULL and y=NULL)."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:58
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:59
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:60
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:61
+msgid ""
+"Supported to return multiple outer/inner ring coordinates with separator row"
+" (x=NULL and y=NULL) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:64
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:65
+msgid ""
+"PgRouting's alpha shape implementation has no way to control the order of "
+"the output points, so the actual output might different for the same input "
+"data. The first query, has the output ordered, he second query shows an "
+"example usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:70
+msgid "Example: the (ordered) results"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:76
+msgid "Example: calculating the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:77
+msgid "Steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:79
+msgid "Calculates the alpha shape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:80
+msgid "the :code:`ORDER BY` clause is not used."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:81
+msgid "constructs a polygon"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:82
+msgid "and computes the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:90
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:93
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:95
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:96
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:99
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:100
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:101
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_analyzeGraph.po b/locale/fr/LC_MESSAGES/pgr_analyzeGraph.po
new file mode 100644
index 0000000..22237a6
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_analyzeGraph.po
@@ -0,0 +1,361 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeGraph.rst:13
+msgid "pgr_analyzeGraph"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:19
+msgid "``pgr_analyzeGraph`` — Analyzes the network topology."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:25
+#: ../../build/doc/pgr_analyzeGraph.rst:61
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:27
+#: ../../build/doc/pgr_analyzeGraph.rst:63
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:28
+#: ../../build/doc/pgr_analyzeGraph.rst:69
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:43
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:44
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:46
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:47
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:50
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:51
+msgid "The analyze graph function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:53
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:54
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:55
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:56
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:57
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:58
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:59
+msgid ""
+"``text`` Condition to select a subset or rows. Default value is ``true``"
+" to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:65
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:66
+msgid ""
+"Fills completely the ``cnt`` and ``chk`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:67
+msgid ""
+"Returns the analysis of the section of the network defined by "
+"``rows_where``"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:71
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:72
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:73
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:74
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:75
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:79
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:80
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:82
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:84
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:86
+msgid "``integer`` Indicator that the vertex might have a problem."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:87
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:88
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:89
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:92
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:93
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:96
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:99
+msgid "The simplest way to use pgr_analyzeGraph is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:106
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:111
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order: 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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:130
+#: ../../build/doc/pgr_analyzeGraph.rst:208
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:131
+#: ../../build/doc/pgr_analyzeGraph.rst:209
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:141
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:148
+#: ../../build/doc/pgr_analyzeGraph.rst:223
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:149
+msgid ""
+"Selecting rows based on the id. Displays the analysis a the section of the "
+"network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:155
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:161
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:172
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:174
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:183
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:184
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:219
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:224
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:234
+msgid ""
+"Selecting the rows WHERE the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:246
+msgid ""
+"Selecting the rows WHERE the geometry is near the place='myhouse' of the "
+"table ``othertable``. (note the use of quote_literal)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:263
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:390
+msgid "The examples use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:394
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:396
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:397
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:398
+msgid ""
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
+"vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:399
+msgid ""
+":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
+"edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:402
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:403
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:404
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_analyzeOneWay.po b/locale/fr/LC_MESSAGES/pgr_analyzeOneWay.po
new file mode 100644
index 0000000..627da76
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_analyzeOneWay.po
@@ -0,0 +1,290 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:13
+msgid "pgr_analyzeOneway"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:19
+msgid ""
+"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:25
+msgid ""
+"This function analyzes oneway streets in a graph and identifies any flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:42
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:44
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:46
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:49
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:50
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:52
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:53
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:56
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:57
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:58
+msgid "``text[]`` source node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:59
+msgid "``text[]`` source node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:60
+msgid "``text[]`` target node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:61
+msgid "``text[]`` target node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:62
+msgid ""
+"``text`` oneway column name name of the network table. Default value is "
+"``oneway``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:63
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:64
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:65
+msgid ""
+"``boolean`` flag to treat oneway NULL values as bi-directional. Default "
+"value is ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:67
+msgid ""
+"It is strongly recommended to use the named notation. See "
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
+":ref:`pgr_createTopology <pgr_create_topology>` for examples."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:70
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:72
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:74
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:75
+msgid ""
+"Fills completely the ``ein`` and ``eout`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:77
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:79
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:80
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:81
+msgid "The names of source , target or oneway are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:83
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:86
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:87
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:89
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:91
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:92
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:93
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:94
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:95
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:96
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:100
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:101
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:105
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:129
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:135
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:136
+msgid ":ref:`analytics` for an overview of the analysis of a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:137
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:138
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_articulationPoints.po b/locale/fr/LC_MESSAGES/pgr_articulationPoints.po
new file mode 100644
index 0000000..225a3d6
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_articulationPoints.po
@@ -0,0 +1,316 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_articulationPoints.rst:13
+msgid "pgr_articulationPoints - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:16
+msgid ""
+"``pgr_articulationPoints`` - Return the articulation points of an undirected"
+" graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:32
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph. This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:62
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:93
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_bdAstar.po b/locale/fr/LC_MESSAGES/pgr_bdAstar.po
new file mode 100644
index 0000000..fdfaa05
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_bdAstar.po
@@ -0,0 +1,669 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstar.rst:13
+msgid "pgr_bdAstar"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:18
+msgid "``pgr_bdAstar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:27
+msgid "pgr_bdAstar(one to one) 2.0.0, Signature change on 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:28
+msgid "pgr_bdAstar(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:54
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:56
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:57
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:61
+msgid "Avaliability"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:62
+msgid "pgr_bdAstar(one to one) 2.0, signature change on 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:63
+msgid "pgr_bdAstar(other signatures) 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:84
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:85
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:86
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:89
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:102
+msgid "pgr_bdAstar One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+" allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:109
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:110 ../../build/doc/pgr_bdAstar.rst:137
+#: ../../build/doc/pgr_bdAstar.rst:162 ../../build/doc/pgr_bdAstar.rst:186
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111 ../../build/doc/pgr_bdAstar.rst:138
+#: ../../build/doc/pgr_bdAstar.rst:163 ../../build/doc/pgr_bdAstar.rst:187
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:114
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:116
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:127
+msgid "pgr_bdAstar One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:139
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:135 ../../build/doc/pgr_bdAstar.rst:160
+#: ../../build/doc/pgr_bdAstar.rst:184
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:136 ../../build/doc/pgr_bdAstar.rst:161
+#: ../../build/doc/pgr_bdAstar.rst:185
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:141
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:152
+msgid "pgr_bdAstar Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:163
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:165
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:176
+msgid "pgr_bdAstar Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:187
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:189
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:196
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:213
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:215
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:216
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:217
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:218
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:221
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:222
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:223
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_bdAstarCost.po b/locale/fr/LC_MESSAGES/pgr_bdAstarCost.po
new file mode 100644
index 0000000..9b72e10
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_bdAstarCost.po
@@ -0,0 +1,594 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCost.rst:13
+msgid "pgr_bdAstarCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:18
+msgid "``pgr_bdAstarCost`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:26
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:46
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:48
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAstarCost`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:49
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:56
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:64
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:72
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:73
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:74
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:77
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:90
+msgid "pgr_bdAstarCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:128
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:97
+#: ../../build/doc/pgr_bdAstarCost.rst:124
+#: ../../build/doc/pgr_bdAstarCost.rst:149
+#: ../../build/doc/pgr_bdAstarCost.rst:173
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:98
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:99
+#: ../../build/doc/pgr_bdAstarCost.rst:126
+#: ../../build/doc/pgr_bdAstarCost.rst:151
+#: ../../build/doc/pgr_bdAstarCost.rst:175
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:127
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:103
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:105
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:116
+msgid "pgr_bdAstarCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:125
+#: ../../build/doc/pgr_bdAstarCost.rst:150
+#: ../../build/doc/pgr_bdAstarCost.rst:174
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:130
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:141
+msgid "pgr_bdAstarCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:154
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:165
+msgid "pgr_bdAstarCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:178
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:185
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:204
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:205
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:206
+msgid ""
+"`Migration Guide <https://github.com/cvvergara/pgrouting/wiki/Migration-"
+"Guide#pgr_bdastar>`_"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:207
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:208
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:211
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:212
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:213
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_bdAstarCostMatrix.po b/locale/fr/LC_MESSAGES/pgr_bdAstarCostMatrix.po
new file mode 100644
index 0000000..c8738fa
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_bdAstarCostMatrix.po
@@ -0,0 +1,536 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:13
+msgid "pgr_bdAstarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:18
+msgid ""
+"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdAstar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:68
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:64
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:65
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:66
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:67
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:70
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:82
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:95
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:91
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:92
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:93
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:94
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:97
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:99
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:107
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:135
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_bdDijkstra.po b/locale/fr/LC_MESSAGES/pgr_bdDijkstra.po
new file mode 100644
index 0000000..b05e40f
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_bdDijkstra.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstra.rst:13
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:15
+msgid ""
+"``pgr_bdDijkstra`` — Returns the shortest path(s) using Bidirectional "
+"Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:23
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:24
+msgid "pgr_bdDijkstra(one to one) 2.0.0, Signature changed 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:25
+msgid "pgr_bdDijkstra(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:60
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:67
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:80
+msgid "pgr_bdDijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:87
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:89
+#: ../../build/doc/pgr_bdDijkstra.rst:112
+#: ../../build/doc/pgr_bdDijkstra.rst:141
+#: ../../build/doc/pgr_bdDijkstra.rst:170
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:90
+#: ../../build/doc/pgr_bdDijkstra.rst:113
+#: ../../build/doc/pgr_bdDijkstra.rst:142
+#: ../../build/doc/pgr_bdDijkstra.rst:171
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:103
+msgid "pgr_bdDijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:110
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:115
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:118
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:119
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:132
+msgid "pgr_bdDijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:139
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:144
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:147
+#: ../../build/doc/pgr_bdDijkstra.rst:176
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:148
+#: ../../build/doc/pgr_bdDijkstra.rst:177
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:161
+msgid "pgr_bdDijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:173
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:179
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:190
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:208
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:210
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:211
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:212
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:213
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_bdDijkstraCost.po b/locale/fr/LC_MESSAGES/pgr_bdDijkstraCost.po
new file mode 100644
index 0000000..0516529
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_bdDijkstraCost.po
@@ -0,0 +1,470 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:13
+msgid "pgr_bdDijkstraCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:15
+msgid ""
+"``pgr_bdDijkstraCost`` — Returns the shortest path(s)'s cost using "
+"Bidirectional Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:23
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:30
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:52
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:59
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:72
+msgid "pgr_bdDijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:80
+#: ../../build/doc/pgr_bdDijkstraCost.rst:102
+#: ../../build/doc/pgr_bdDijkstraCost.rst:130
+#: ../../build/doc/pgr_bdDijkstraCost.rst:158
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:94
+msgid "pgr_bdDijkstraCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:105
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:108
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:109
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:122
+msgid "pgr_bdDijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:133
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:136
+#: ../../build/doc/pgr_bdDijkstraCost.rst:164
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:137
+#: ../../build/doc/pgr_bdDijkstraCost.rst:165
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:150
+msgid "pgr_bdDijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:161
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:167
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:178
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:195
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:197
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:198
+msgid ":ref:`pgr_bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:199
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:200
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:203
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:204
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:205
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po b/locale/fr/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
new file mode 100644
index 0000000..0b0a2ae
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
@@ -0,0 +1,382 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:13
+msgid "pgr_bdDijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_bdDijkstraCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdDijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:66
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:86
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:88
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:122
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:124
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:132
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:134
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:135
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:136
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:137
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_biconnectedComponents.po b/locale/fr/LC_MESSAGES/pgr_biconnectedComponents.po
new file mode 100644
index 0000000..f4db188
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_biconnectedComponents.po
@@ -0,0 +1,349 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:13
+msgid "pgr_biconnectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:15
+msgid ""
+"``pgr_biconnectedComponents`` — Return the biconnected components of an "
+"undirected graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:31
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:36
+msgid "This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:43
+msgid "Components are described by edges"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:45
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:47
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:48
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:50
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:65
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:78
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:94
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:96
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:97
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:100
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:101
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:102
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_boykovKolmogorov.po b/locale/fr/LC_MESSAGES/pgr_boykovKolmogorov.po
new file mode 100644
index 0000000..84d76a4
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_boykovKolmogorov.po
@@ -0,0 +1,435 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:14
+msgid "pgr_boykovKolmogorov - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:20
+msgid ""
+"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that "
+"maximizes the flow from the sources to the targets using Boykov Kolmogorov "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowBoykovKolmogorov"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:42
+msgid "Running time: Polynomial"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:61
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:63
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:84
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:103
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:105
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:124
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:126
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:141
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:159
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:161
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_pushRelabel <pgr_pushRelabel>`, "
+":ref:`pgr_EdmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:162
+msgid "http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_bridges.po b/locale/fr/LC_MESSAGES/pgr_bridges.po
new file mode 100644
index 0000000..a80bf4e
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_bridges.po
@@ -0,0 +1,310 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bridges.rst:13
+msgid "pgr_bridges - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:16
+msgid "``pgr_bridges`` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:31
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components. This implementation can only be used with an"
+" undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:40
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:42
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:44
+msgid "Running time: :math:`O(E * (V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:47
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:59
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:72
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:88
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:90
+msgid "http://en.wikipedia.org/wiki/Bridge_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:91
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:94
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:95
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:96
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_connectedComponents.po b/locale/fr/LC_MESSAGES/pgr_connectedComponents.po
new file mode 100644
index 0000000..2474096
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_connectedComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_connectedComponents.rst:13
+msgid "pgr_connectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:16
+msgid ""
+"``pgr_connectedComponents`` — Return the connected components of an "
+"undirected graph using a DFS-based approach. In particular, the algorithm "
+"implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:32
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other. This implementation can only be used with an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:39
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:41
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:45
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:46
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:48
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:63
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:76
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:92
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:94
+msgid "http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:95
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:98
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:99
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:100
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_contractGraph.po b/locale/fr/LC_MESSAGES/pgr_contractGraph.po
new file mode 100644
index 0000000..8d27664
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_contractGraph.po
@@ -0,0 +1,488 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_contractGraph.rst:13
+msgid "pgr_contractGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:15
+msgid ""
+"``pgr_contractGraph`` — Performs graph contraction and returns the "
+"contracted vertices and edges."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:23
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:32
+msgid ""
+"Contraction reduces the size of the graph by removing some of the vertices "
+"and edges and, for example, might add edges that represent a sequence of "
+"original edges decreasing the total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:52
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:38
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:40
+msgid "There are two types of contraction methods used namely,"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:42
+msgid "Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:43
+msgid "Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:45
+msgid "The values returned include the added edges and contracted vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:47
+msgid "The returned values are ordered as follows:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:49
+msgid "column `id` ascending when type = `v`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:50
+msgid "column `id` descending when type = `e`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:55
+msgid "Signature Summary:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:57
+msgid "The pgr_contractGraph function has the following signatures:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:74
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:80
+msgid "Making a dead end contraction and a linear contraction."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:87
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:93
+msgid ""
+"Making a dead end contraction and a linear contraction and vertex 2 is "
+"forbidden from contraction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_contractGraph.rst:136
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+msgid "**contraction_order**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "Ordered contraction operations."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "1 = Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:114
+msgid "2 = Linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "**forbidden_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid ""
+"(optional). Identifiers of vertices forbidden from contraction. Default is "
+"an empty array."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid "**max_cycles**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid ""
+"(optional). Number of times the contraction operations on "
+"`contraction_order` will be performed. Default is 1."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:118
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:123
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:125
+msgid ""
+"RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:127
+msgid "The function returns a single row. The columns of the row are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "**type**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "Type of the `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "'v' when `id` is an identifier of a vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:135
+msgid "'e' when `id` is an identifier of an edge."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:136
+#: ../../build/doc/pgr_contractGraph.rst:146
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:143
+msgid "Identifier of:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:137
+msgid "the vertex when `type = 'v'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:139
+msgid "The vertex belongs to the edge_table passed as a parameter."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:140
+msgid "the edge when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:142
+msgid "The `id` is a decreasing sequence starting from **-1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:144
+msgid "Representing a pseudo `id` as is not incorporated into the edge_table."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "Array of contracted vertex identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid ""
+"Identifier of the source vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid ""
+"Identifier of the target vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid ""
+"Weight of the edge (`source`, `target`). Valid values when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:152
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:154
+msgid "Only dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:160
+msgid "Only linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:168
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:169
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:170
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_createTopology.po b/locale/fr/LC_MESSAGES/pgr_createTopology.po
new file mode 100644
index 0000000..44a282e
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_createTopology.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createTopology.rst:13
+msgid "pgr_createTopology"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:18
+msgid ""
+"``pgr_createTopology`` — Builds a network topology based on the geometry "
+"information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:24
+#: ../../build/doc/pgr_createTopology.rst:72
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:26
+msgid ""
+"``OK`` after the network topology has been built and the vertices table "
+"created."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:27
+msgid "``FAIL`` when the network topology was not built due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:42
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:45
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:46
+msgid "The topology creation function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:48
+msgid "``text`` Network table name. (may contain the schema name AS well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:49
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:50
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:52
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:53
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:54
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:56
+msgid "``boolean`` Clean any previous topology. Default value is ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:60
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:62
+msgid "The ``source`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:63
+msgid "The ``target`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:65
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:67
+msgid "``id``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:68
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:69
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:70
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:74
+msgid "``OK`` after the network topology has been built."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:76
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:77
+msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:78
+msgid ""
+"Fills the source and target columns of the edge table referencing the ``id``"
+" of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:81
+msgid "``FAIL`` when the network topology was not built due to an error:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:83
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:84
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:85
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:86
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:90
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:91
+msgid ""
+"The vertices table is a requirement of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:93
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:95
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:96
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:97
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:98
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:99
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:100
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:103
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:104
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:107
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:110
+msgid "The simplest way to use pgr_createTopology is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:118
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:119
+msgid "We get the same result AS the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``id`` of the table ``ege_table`` is passed to "
+"the function as the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``the_geom`` is passed to the function as the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:136
+#: ../../build/doc/pgr_createTopology.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:137
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:153
+#: ../../build/doc/pgr_createTopology.rst:219
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:154
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:160
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with ``id "
+"= 5``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:166
+#: ../../build/doc/pgr_createTopology.rst:227
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:176
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:178
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:185
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:186
+msgid ""
+"The arguments need to be given in the order described in the parameters."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:188
+msgid ""
+"Note that this example uses clean flag. So it recreates the whole vertices "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropiriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``gid`` of the table ``mytable`` is passed to "
+"the function AS the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``mygeom`` is passed to the function AS the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:206
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:220
+msgid "Based on id:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:235
+msgid "Examples with full output"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:237
+msgid ""
+"This example start a clean topology, with 5 edges, and then its incremented "
+"to the rest of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:243
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:247
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:249
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:250
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:251
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:254
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:255
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:256
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_createVerticesTable.po b/locale/fr/LC_MESSAGES/pgr_createVerticesTable.po
new file mode 100644
index 0000000..191059e
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_createVerticesTable.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createVerticesTable.rst:13
+msgid "pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:18
+msgid ""
+"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:24
+#: ../../build/doc/pgr_createVerticesTable.rst:62
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:26
+#: ../../build/doc/pgr_createVerticesTable.rst:64
+msgid "``OK`` after the vertices table has been reconstructed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:27
+#: ../../build/doc/pgr_createVerticesTable.rst:69
+msgid ""
+"``FAIL`` when the vertices table was not reconstructed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:43
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:44
+msgid ""
+"The reconstruction of the vertices table function accepts the following "
+"parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:46
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:47
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:48
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:49
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:50
+msgid ""
+"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
+"to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:54
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:56
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:58
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:59
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:60
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:66
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:67
+msgid ""
+"Fills ``id`` and ``the_geom`` columns of the vertices table based on the "
+"source and target columns of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:71
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:72
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:73
+msgid "The names of source, target are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:74
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:77
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:78
+msgid ""
+"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:80
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:82
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:83
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:84
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:86
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:87
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:90
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:91
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:94
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:97
+msgid "The simplest way to use pgr_createVerticesTable is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:104
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:109
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:111
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:128
+#: ../../build/doc/pgr_createVerticesTable.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:129
+#: ../../build/doc/pgr_createVerticesTable.rst:206
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:139
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:146
+#: ../../build/doc/pgr_createVerticesTable.rst:220
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:147
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:153
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:159
+#: ../../build/doc/pgr_createVerticesTable.rst:243
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:170
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:172
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:180
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:181
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:0
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:216
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:221
+msgid "Selecting rows based on the gid."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:231
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``gid`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:282
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:286
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:288
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:289
+msgid ""
+":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
+"on the geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:290
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:291
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:294
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:295
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:296
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_dijkstra.po b/locale/fr/LC_MESSAGES/pgr_dijkstra.po
new file mode 100644
index 0000000..45cbd10
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_dijkstra.po
@@ -0,0 +1,621 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid ""
+"``pgr_dijkstra`` — Returns the shortest path(s) using Dijkstra algorithm. In"
+" particular, the Dijkstra algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:24
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:25
+msgid "pgr_dijkstra(one to one) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:26
+msgid "pgr_dijkstra(other signatures) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:31
+msgid ""
+"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
+"in 1956. It is a graph search algorithm that solves the shortest path "
+"problem for a graph with non-negative edge path costs, producing a shortest "
+"path from a starting vertex (``start_vid``) to an ending vertex "
+"(``end_vid``). This implementation can be used with a directed graph and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:60
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:46
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:50
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:52
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:54
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:56
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:57
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:59
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:63
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:78
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:84
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:91
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:104
+msgid "pgr_dijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:113 ../../build/doc/pgr_dijkstra.rst:136
+#: ../../build/doc/pgr_dijkstra.rst:167 ../../build/doc/pgr_dijkstra.rst:197
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114 ../../build/doc/pgr_dijkstra.rst:137
+#: ../../build/doc/pgr_dijkstra.rst:168 ../../build/doc/pgr_dijkstra.rst:198
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:127
+msgid "pgr_dijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:137
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:139
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:142
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:143
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:158
+msgid "pgr_dijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:170
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:173 ../../build/doc/pgr_dijkstra.rst:203
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:174 ../../build/doc/pgr_dijkstra.rst:204
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:188
+msgid "pgr_dijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:198
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:200
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:206
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:215
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:225
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231 ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232 ../../build/doc/pgr_dijkstra.rst:234
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:236
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:248
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:250
+msgid ""
+"The examples of this section are based on the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:252
+msgid ""
+"The examples include combinations from starting vertices 2 and 11 to ending "
+"vertices 3 and 5 in a directed and undirected graph with and with out "
+"reverse_cost."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:256
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:258
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:267
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:269
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:277
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:279
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:287
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:289
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:297
+msgid "Equvalences between signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:299
+msgid ""
+"For queries marked as ``directed`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:301 ../../build/doc/pgr_dijkstra.rst:313
+msgid "The examples in this section use the following:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:303
+msgid ":ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:311
+msgid ""
+"For queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:315
+msgid ":ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:324
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:326
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:327
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:330
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:331
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:332
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_dijkstraCost.po b/locale/fr/LC_MESSAGES/pgr_dijkstraCost.po
new file mode 100644
index 0000000..a9193fb
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_dijkstraCost.po
@@ -0,0 +1,473 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCost.rst:13
+msgid "pgr_dijkstraCost"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:19
+msgid "``pgr_dijkstraCost``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:21
+msgid ""
+"Using Dijkstra algorithm implemented by Boost.Graph, and extract only the "
+"aggregate cost of the shortest path(s) found, for the combination of "
+"vertices given."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:27
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:30
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:31
+msgid "pgr_dijkstraCost(all signatures) 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:33
+msgid ""
+"The ``pgr_dijkstraCost`` algorithm, is a good choice to calculate the sum of"
+" the costs of the shortest path for a subset of pairs of nodes of the graph."
+" We make use of the Boost's implementation of dijkstra which runs in "
+":math:`O(V \\log V + E)` time."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:42
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:43
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:44
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:45
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:47
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:51
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:55
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:57
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:60
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:62
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:64
+msgid "Any duplicated value in the `start_vids` or `end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:66
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:68
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:69
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:74
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:89
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:95
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:97
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:106
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:117
+msgid "pgr_dijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:121
+#: ../../build/doc/pgr_dijkstraCost.rst:150
+#: ../../build/doc/pgr_dijkstraCost.rst:176
+#: ../../build/doc/pgr_dijkstraCost.rst:201
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+#: ../../build/doc/pgr_dijkstraCost.rst:151
+#: ../../build/doc/pgr_dijkstraCost.rst:177
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:141
+msgid "pgr_dijkstraCost One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:152
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:167
+msgid "pgr_dijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:178
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:192
+msgid "pgr_dijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:213
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:229
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:231
+msgid "Demonstration of repeated values are ignored, and result is sorted."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:237
+msgid "Making `start_vids` the same as `end_vids`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:246
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:248
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:249
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:252
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:253
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:254
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_dijkstraCostMatrix.po b/locale/fr/LC_MESSAGES/pgr_dijkstraCostMatrix.po
new file mode 100644
index 0000000..95cf121
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_dijkstraCostMatrix.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:13
+msgid "pgr_dijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_dijkstraCostMatrix`` - Calculates the a cost matrix using "
+"pgr_dijktras."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:32
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:36
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:56
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:67
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:79
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:87
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:89
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:97
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:135
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_dijkstraVia.po b/locale/fr/LC_MESSAGES/pgr_dijkstraVia.po
new file mode 100644
index 0000000..0a3c5f1
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_dijkstraVia.po
@@ -0,0 +1,480 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraVia.rst:13
+msgid "pgr_dijkstraVia - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:19
+msgid ""
+"``pgr_dijkstraVia`` — Using dijkstra algorithm, it finds the route that goes"
+" through a list of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:30
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:34
+msgid ""
+"Given a list of vertices and a graph, this function is equivalent to finding"
+" the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all"
+" :math:`i < size\\_of(vertex_via)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:37
+msgid "The paths represents the sections of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:39
+msgid "This is a proposed function"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:42
+msgid "Signatrue Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:59
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:67
+msgid "Find the route that visits the vertices 1 3 9 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:77
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:86
+msgid ""
+"Find the route that visits the vertices 1 3 9 in that order on an "
+"undirected graph, avoiding U-turns when possible"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:94
+msgid "Description of the Signature"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+#: ../../build/doc/pgr_dijkstraVia.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "Array of vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid ""
+"(optional) ignores if a subsection of the route is missing and returns "
+"everything it found Default is true (is directed). When set to false the "
+"graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:119
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:121
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "Sequential value starting from 1."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "**path_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "Identifier of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "Sequential value starting from 1 for the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "Identifier of the node in the path from start_vid to end_vid."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid ""
+"Identifier of the edge used to go from node to the next node in the path "
+"sequence. -1 for the last node of the path. -2 for the last node of the "
+"route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the route "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "Total cost from ``start_vid`` to ``end_vid`` of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "**route_agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid ""
+"Total cost from ``start_vid`` of ``path_pid = 1`` to ``end_vid`` of the "
+"current ``path_pid`` ."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:142
+msgid "Find the route that visits the vertices 1 5 3 9 4 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:148
+msgid "What's the aggregate cost of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:154
+msgid ""
+"What's the route's aggregate cost of the route at the end of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:160
+msgid "How are the nodes visited in the route?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:166
+msgid ""
+"What are the aggregate costs of the route when the visited vertices are "
+"reached?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:172
+msgid ""
+"show the route's seq and aggregate cost and a status of \"passes in front\" "
+"or \"visits\" node 9"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:179
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:181
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:182
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:185
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:186
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:187
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_drivingDistance.po b/locale/fr/LC_MESSAGES/pgr_drivingDistance.po
new file mode 100644
index 0000000..77f7b8e
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_drivingDistance.po
@@ -0,0 +1,391 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_drivingDistance.rst:13
+msgid "pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:19
+msgid ""
+"``pgr_drivingDistance`` - Returns the driving distance from a start node."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:28
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:29
+msgid "pgr_drivingDistance(single vertex) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:30
+msgid "pgr_drivingDistance(multiple vertices) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:35
+msgid ""
+"Using the Dijkstra algorithm, extracts all the nodes that have costs less "
+"than or equal to the value ``distance``. The edges extracted will conform to"
+" the corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:57
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:70
+msgid "Driving Distance From A Single Starting Vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:82
+msgid "Driving Distance From Multiple Starting Vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:90
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:98
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:123
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "Array of identifiers of the starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+#: ../../build/doc/pgr_drivingDistance.rst:125
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "Upper limit for the inclusion of the node in the result."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid ""
+"(optional). When ``true`` the node will only appear in the closest "
+"``start_vid`` list. Default is ``false`` which resembles several calls "
+"using the single starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:114
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:116
+msgid "Returns set of ``(seq [, start_v], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid ""
+"Identifier of the node in the path within the limits from ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid ""
+"Identifier of the edge used to arrive to ``node``. ``0`` when the ``node`` "
+"is the ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:132
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:135
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:137
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:144
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:146
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:154
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:156
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:165
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:167
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:177
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:178
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:179
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_edgeDisjointPaths.po b/locale/fr/LC_MESSAGES/pgr_edgeDisjointPaths.po
new file mode 100644
index 0000000..54a0ffe
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_edgeDisjointPaths.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:14
+msgid "pgr_edgeDisjointPaths - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:19
+msgid ""
+"``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:28
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:36
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:38
+msgid ""
+"Calculates the edge disjoint paths between two groups of vertices. Utilizes "
+"underlying maximum flow algorithms to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:42
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "The main characterics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:45
+msgid "Calculates the edge disjoint paths between any two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:46
+msgid ""
+"Returns EMPTY SET when source and destination are the same, or cannot be "
+"reached."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:47
+msgid "The graph can be directed or undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:48
+msgid "One to many, many to one, many to many versions are also supported."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "Uses :ref:`pgr_boykovKolmogorov` to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:52
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:67
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:73
+msgid "Minimal use"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:81
+msgid ""
+"The minimal use is for a **directed** graph from one ``start_vid`` to one "
+"``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:93
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:98
+msgid ""
+"This signature finds the set of dijoint paths from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:96
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:120
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:149
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:175
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:97
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:121
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:150
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:176
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:117
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:126
+msgid ""
+"This signature finds the sset of disjoint paths from the ``start_vid`` to "
+"each one of the ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:122
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:151
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:177
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_edgeDisjointPaths`."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:123
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:146
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to the ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to each one of the ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:195
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:212
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:214
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:217
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:218
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:219
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_edmondsKarp.po b/locale/fr/LC_MESSAGES/pgr_edmondsKarp.po
new file mode 100644
index 0000000..8523277
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_edmondsKarp.po
@@ -0,0 +1,438 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edmondsKarp.rst:14
+msgid "pgr_edmondsKarp - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:20
+msgid ""
+"``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowEdmondsKarp"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:42
+msgid "Running time: :math:`O( V * E ^ 2)`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:64
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:83
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:85
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:104
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:106
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:125
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:127
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:142
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:160
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:162
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_PushRelabel <pgr_pushRelabel>`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:163
+msgid "http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:164
+msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:167
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:168
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:169
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_eucledianTSP.po b/locale/fr/LC_MESSAGES/pgr_eucledianTSP.po
new file mode 100644
index 0000000..5b9be5e
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_eucledianTSP.po
@@ -0,0 +1,187 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_eucledianTSP.rst:13
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:18
+msgid ""
+"``pgr_eucledianTSP`` - Returns a route that visits all the coordinates pairs"
+" exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:22
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:24
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:26
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:28
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:30
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of coordinates."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:33
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:48
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:54
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:63
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:75
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:90
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:99
+msgid "Description of the coordinates SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "Identifier of the coordinate. (optional)"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "X value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "Y value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:110
+msgid ""
+"When the value of **id** is not given then the coordinates will receive an "
+"**id** starting from 1, in the order given."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:125
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:127
+msgid "Skipping the Simulated Annealing & showing some process information"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:135
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:139
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:140
+msgid "New in version 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:145
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:147
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:148
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:149
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:152
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:153
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:154
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_floydWarshall.po b/locale/fr/LC_MESSAGES/pgr_floydWarshall.po
new file mode 100644
index 0000000..4fe9ece
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_floydWarshall.po
@@ -0,0 +1,348 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_floydWarshall.rst:13
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:18
+msgid ""
+"``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path "
+"for each pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:31
+msgid ""
+"The Floyd-Warshall algorithm, also known as Floyd's algorithm, is a good "
+"choice to calculate the sum of the costs of the shortest path for each pair "
+"of nodes in the graph, for *dense graphs*. We make use of the Boost's "
+"implementation which runs in :math:`\\Theta(V^3)` time,"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:41
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:42
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:43
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:44
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:47
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:49
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:52
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:54
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:56
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "**Recommended, use a bounding box of no more than 3500 edges.**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:70
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:77
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:84
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:95
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:103
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:110
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:118
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:120
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:123
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:131
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:133
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:148
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:149
+msgid "Re-design of pgr_apspWarshall in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:152
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:154
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:155
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:156
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_gsoc_vrppdtw.po b/locale/fr/LC_MESSAGES/pgr_gsoc_vrppdtw.po
new file mode 100644
index 0000000..7705842
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_gsoc_vrppdtw.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:13
+msgid "pgr_gsoc_vrppdtw - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:19
+msgid ""
+"``pgr_gsoc_vrppdtw`` — Returns a solution for `Pick and Delivery` with `time"
+" windows` Vehicle Routing Problem"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:27
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:36
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:43
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:52
+msgid "Example: Show the id1"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:59
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:62
+msgid "Description of the sql query"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "Identifier of the customer."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:69
+msgid "A value of ``0`` identifies the starting location"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "``X`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "``Y`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "**demand**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "How much is added / removed from the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:75
+msgid "Negative value is a delivery,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:76
+msgid "Positive value is a pickup,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "**openTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "The time relative to 0, when the customer opens."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "**closeTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "The time relative to 0, when the customer closes."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "**serviceTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "The duration of the loading / unloading."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid "**pIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid ""
+"Value used when the current customer is a Delivery to find the corresponding"
+" Pickup"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "**dIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid ""
+"Value used when the current customer is a Pickup to find the corresponding "
+"Delivery"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:86
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "**vehicle_num**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "Maximum number of vehicles in the result. (currently is ignored)"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "Capacity of the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:97
+msgid "Description of the result"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:99
+msgid "RETURNS SET OF pgr_costResult[]:"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "**id1**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "Current vehicle identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "**id2**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "Customer identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid ""
+"Previous ``cost`` plus `travel time` plus `wait time` plus `service time`."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:108
+msgid ""
+"when ``id2 = 0`` for the second time for the same ``id1``, then has the "
+"total time for the current ``id1``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:114
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:117
+msgid "Example: Total number of rows returned"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:123
+msgid "Example: Results for only id1 values: 1, 5, and 9"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:130
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:132
+msgid "The examples use :ref:`pickDeliverData`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:133
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:136
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:137
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:138
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_johnson.po b/locale/fr/LC_MESSAGES/pgr_johnson.po
new file mode 100644
index 0000000..d0ef00b
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_johnson.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_johnson.rst:13
+msgid "pgr_johnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:18
+msgid ""
+"``pgr_johnson`` - Returns the sum of the costs of the shortest path for each"
+" pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspJohnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:31
+msgid ""
+"The Johnson algorithm, is a good choice to calculate the sum of the costs of"
+" the shortest path for each pair of nodes in the graph, for *sparse graphs*."
+" It usees the Boost's implementation which runs in :math:`O(V E \\log V)` "
+"time,"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:57
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:40
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:41
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:42
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:43
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:46
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:48
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:51
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:53
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:55
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:60
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:69
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:83
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:94
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:102
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:135
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:117
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:119
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:122
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:130
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:132
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137 ../../build/doc/pgr_johnson.rst:138
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:147
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:148
+msgid "Re-design of pgr_apspJohnson in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:153
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:154
+msgid ""
+"`Boost Johnson "
+"<http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html>`_ "
+"algorithm implementation."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:155
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_labelGraph.po b/locale/fr/LC_MESSAGES/pgr_labelGraph.po
new file mode 100644
index 0000000..e5d6532
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_labelGraph.po
@@ -0,0 +1,233 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_labelGraph.rst:15
+msgid "pgr_labelGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:18
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:20
+msgid ""
+"``pgr_labelGraph`` — Locates and labels sub-networks within a network which "
+"are not topologically connected."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:30
+msgid ""
+"Must be run after ``pgr_createTopology()``. No use of ``geometry`` column. "
+"Only ``id``, ``source`` and ``target`` columns are required."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:32
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:34
+msgid ""
+"``OK`` when a column with provided name has been generated and populated "
+"successfully. All connected edges will have unique similar integer values. "
+"In case of ``rows_where`` condition, non participating rows will have -1 "
+"integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:35
+msgid ""
+"``FAIL`` when the processing cannot be finished due to some error. Notice "
+"will be thrown accordingly."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:36
+msgid ""
+"``rows_where condition generated 0 rows`` when passed SQL condition has not "
+"been fulfilled by any row."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:48
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:50
+msgid ""
+"A network behind any routing query may consist of sub-networks completely "
+"isolated from each other. Possible reasons could be:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:52
+msgid "An island with no bridge connecting to the mainland."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:53
+msgid ""
+"An edge or mesh of edges failed to connect to other networks because of "
+"human negligence during data generation."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:54
+msgid "The data is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:55
+msgid "Topology creation failed to succeed."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:57
+msgid ""
+"pgr_labelGraph() will create an integer column (with the name provided by "
+"the user) and will assign same integer values to all those edges in the "
+"network which are connected topologically. Thus better analysis regarding "
+"network structure is possible. In case of ``rows_where`` condition, non "
+"participating rows will have -1 integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:59
+msgid ""
+"Prerequisites: Must run ``pgr_createTopology()`` in order to generate "
+"``source`` and ``target`` columns. Primary key column ``id`` should also be "
+"there in the network table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:62
+msgid "Function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:64
+msgid "``text`` Network table name, with optional schema name."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:65
+msgid ""
+"``text`` Primary key column name of the network table. Default is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:66
+msgid ""
+"``text`` Source column name generated after ``pgr_createTopology()``. "
+"Default is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:67
+msgid ""
+"``text`` Target column name generated after ``pgr_createTopology()``. "
+"Default is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:68
+msgid ""
+"``text`` Column name which will hold the integer labels for each sub-graph. "
+"Default is ``subgraph``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:69
+msgid ""
+"``text`` The SQL where condition. Default is ``true``, means the processing "
+"will be done on the whole table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:75
+msgid "Example Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:77
+msgid "The sample data, has 3 subgraphs."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:87
+msgid ""
+"`pgr_createTopology "
+"<https://github.com/Zia-/pgrouting/blob/develop/src/common/sql/pgrouting_topology.sql>`_"
+" to create the topology of a table based on its geometry and tolerance "
+"value."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_lineGraph.po b/locale/fr/LC_MESSAGES/pgr_lineGraph.po
new file mode 100644
index 0000000..7b69209
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_lineGraph.po
@@ -0,0 +1,387 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_lineGraph.rst:13
+msgid "pgr_lineGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:15
+msgid ""
+"``pgr_lineGraph`` — Transforms a given graph into its corresponding edge-"
+"based graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:31
+msgid "Given a graph G, its line graph L(G) is a graph such that:-"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:33
+msgid "each vertex of L(G) represents an edge of G"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:34
+msgid ""
+"two vertices of L(G) are adjacent if and only if their corresponding edges "
+"share a common endpoint in G."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:36
+msgid ""
+"The following figures show a graph (left, with blue vertices) and its Line "
+"Graph (right, with green vertices)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:39
+msgid "|first|"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:55
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:61
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:68
+msgid "The minimal signature is for a **directed** graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "This signature returns the Line Graph of the current graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:89
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:101
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:109
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:116
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:120
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:122
+msgid "RETURNS SETOF (seq, source, target, cost, reverse_cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129 ../../build/doc/pgr_lineGraph.rst:133
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "Identifier of the source vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:131
+msgid "When `negative`: the source is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "Identifier of the target vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:135
+msgid "When `negative`: the target is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137 ../../build/doc/pgr_lineGraph.rst:141
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "Weight of the edge (`source`, `target`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:139
+msgid ""
+"When `negative`: edge (`source`, `target`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "Weight of the edge (`target`, `source`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:143
+msgid ""
+"When `negative`: edge (`target`, `source`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:147
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:154
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:156
+msgid "https://en.wikipedia.org/wiki/Line_graph"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:157
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:160
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:161
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:162
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_maxCardinalityMatch.po b/locale/fr/LC_MESSAGES/pgr_maxCardinalityMatch.po
new file mode 100644
index 0000000..4c6c884
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_maxCardinalityMatch.po
@@ -0,0 +1,357 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:13
+msgid "pgr_maxCardinalityMatch - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:19
+msgid ""
+"``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a"
+" graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:32
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:33
+msgid "Renamed 2.5.0, Previous name pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:34
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:39
+msgid ""
+"A matching or independent edge set in a graph is a set of edges without "
+"common vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:40
+msgid ""
+"A maximum matching is a matching that contains the largest possible number "
+"of edges."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:42
+msgid "There may be many maximum matchings."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:43
+msgid "Calculates **one** possible maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:45
+msgid "The graph can be **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:46
+msgid "Running time: :math:`O( E*V * \\alpha(E,V))`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:48
+msgid ":math:`\\alpha(E,V)` is the inverse of the `Ackermann function`_."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:54
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:71
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:78
+msgid ""
+"The minimal use calculates one possible maximum cardinality matching on a "
+"**directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:90
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:98
+msgid ""
+"The complete signature calculates one possible maximum cardinality matching."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:113
+msgid "Description of the SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:115
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid "**going**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "``ANY-NUMERIC``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid ""
+"A positive value represents the existence of the edge (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "**coming**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid ""
+"A positive value represents the existence of the edge (target, source)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:127
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:129
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:130
+msgid "SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:133
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "(optional) Determines the type of the graph. Default TRUE."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:143
+msgid "Description of the Result"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "Identifier of the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "Identifier of the second end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:155
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:157
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:158
+msgid "http://www.boost.org/libs/graph/doc/maximum_matching.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:159
+msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:160
+msgid "https://en.wikipedia.org/wiki/Ackermann_function"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:163
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:164
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:165
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_maxFlow.po b/locale/fr/LC_MESSAGES/pgr_maxFlow.po
new file mode 100644
index 0000000..0327a6f
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_maxFlow.po
@@ -0,0 +1,354 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "pgr_maxFlow - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:19
+msgid ""
+"``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the "
+"source(s) to the targets(s) using the Push Relabel algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:28
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:36
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:37
+msgid ""
+"When the maximum flow is 0 then there is no flow and **0** is returned."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:39
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:41
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:42
+msgid "Uses the :ref:`pgr_pushRelabel <pgr_pushRelabel>` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:44
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:47
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:64
+msgid "Calculates the maximum flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:84
+msgid "Calculates the maximum flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:104
+msgid "Calculates the maximum flow from all the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:122
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:124
+msgid ""
+"Calculates the maximum flow from all of the `sources` to all of the "
+"`targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:138
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:149
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155 ../../build/doc/pgr_maxFlow.rst:157
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156 ../../build/doc/pgr_maxFlow.rst:158
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:166
+msgid "Description of the return value"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "Maximum flow possible from the source(s) to the target(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:177
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:178
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:179
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_nodeNetwork.po b/locale/fr/LC_MESSAGES/pgr_nodeNetwork.po
new file mode 100644
index 0000000..b9b92db
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_nodeNetwork.po
@@ -0,0 +1,353 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_nodeNetwork.rst:13
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:18
+msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:20
+msgid "Nicolas Ribot"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:21
+msgid "Nicolas Ribot, The source code is released under the MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:27
+msgid ""
+"The function reads edges from a not \"noded\" network table and writes the "
+"\"noded\" edges into a new table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:39
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:41
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:43
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:45
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:47
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:49
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:50
+msgid "``float8`` tolerance for coincident points (in projection unit)dd"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:52
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:53
+msgid "``text`` Suffix for the new table's. Default value is ``noded``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:55
+msgid "The output table will have for ``edge_table_noded``"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:57
+msgid "``bigint`` Unique identifier for the table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:58
+msgid "``bigint`` Identifier of the edge in original table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:59
+msgid "``integer`` Segment number of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:60
+msgid ""
+"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:61
+msgid ""
+"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:62
+msgid "``geometry`` Geometry column of the noded network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:65
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:66
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:70
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:72
+msgid "Let's create the topology for the data in :doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:90
+msgid "Now we can analyze the network."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:114
+msgid ""
+"The analysis tell us that the network has a gap and an intersection. We try "
+"to fix the problem using:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:136
+msgid ""
+"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
+"segmented"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:166
+msgid "We can create the topology of the new network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:184
+msgid "Now let's analyze the new topology"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:210
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:243
+msgid "Comparing the results"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:245
+msgid "Comparing with the Analysis in the original edge_table, we see that."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "Before"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "After"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "Table name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table_noded"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "All original fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Has only basic fields to do a topology analysis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1,6,24"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:255
+msgid "Edges with 2 dead ends 17,18"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:257
+msgid ""
+"Edge 17's right node is a dead end because there is no other edge sharing "
+"that same node. (cnt=1)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "No Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:263
+msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid "Gaps"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"There is a gap between edge 17 and 14 because edge 14 is near to the right "
+"node of edge 17"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
+"tolerance value was taken in account"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Intersections"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Edges 13 and 18 were intersecting"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid ""
+"Edges were segmented, So, now in the interection's point there is a node and"
+" the following edges share it: 13-1 13-2 18-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:274
+msgid ""
+"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
+"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
+"with tho following steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:276
+msgid ""
+"Add a column old_id into edge_table, this column is going to keep track the "
+"id of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:277
+msgid ""
+"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:290
+msgid "We recreate the topology:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:310
+msgid ""
+"To get the same analysis results as the topology of edge_table_noded, we do "
+"the following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:337
+msgid ""
+"To get the same analysis results as the original edge_table, we do the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:362
+msgid ""
+"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
+"is an under pass and there is also a street level juction, and the same "
+"happens with edges 17 and 13."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:389
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:391
+msgid ""
+":ref:`topology` for an overview of a topology for routing algorithms. "
+":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
+":ref:`pgr_create_topology` to create a topology based on the geometry. "
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:397
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:398
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:399
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_pointsAsPolygon.po b/locale/fr/LC_MESSAGES/pgr_pointsAsPolygon.po
new file mode 100644
index 0000000..356d85b
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_pointsAsPolygon.po
@@ -0,0 +1,124 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:13
+msgid "pgr_pointsAsPolygon"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:21
+msgid ""
+"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:27
+msgid "Returns the alpha shape as (multi)polygon geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:50
+msgid "Returns a (multi)polygon geometry (with holes)."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:54
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:55
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:56
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:57
+msgid ""
+"Supported to return a (multi)polygon geometry (with holes) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:61
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:62
+msgid ""
+"In the following query there is no way to control which point in the polygon"
+" is the first in the list, so you may get similar but different results than"
+" the following which are also correct."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:69
+msgid "The query use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:73
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:75
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:76
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:79
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:80
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:81
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_pushRelabel.po b/locale/fr/LC_MESSAGES/pgr_pushRelabel.po
new file mode 100644
index 0000000..13e8a04
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_pushRelabel.po
@@ -0,0 +1,439 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pushRelabel.rst:14
+msgid "pgr_pushRelabel - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:20
+msgid ""
+"``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowPushRelabel"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:41
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:60
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:62
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:81
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:83
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:104
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:123
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:125
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:140
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:158
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:160
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_edmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:161
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:162
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_strongComponents.po b/locale/fr/LC_MESSAGES/pgr_strongComponents.po
new file mode 100644
index 0000000..6f6c0cf
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_strongComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_strongComponents.rst:13
+msgid "pgr_strongComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:15
+msgid ""
+"``pgr_strongComponents`` — Return the strongly connected components of a "
+"directed graph using Tarjan's algorithm based on DFS. In particular, the "
+"algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:31
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other. This implementation can only be used "
+"with a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:40
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:42
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:44
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:62
+msgid "The signature is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:93
+msgid "http://en.wikipedia.org/wiki/Strongly_connected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_trsp.po b/locale/fr/LC_MESSAGES/pgr_trsp.po
new file mode 100644
index 0000000..108f0f8
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_trsp.po
@@ -0,0 +1,281 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_trsp.rst:13
+msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:22
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:24
+msgid ""
+"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:30
+msgid ""
+"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
+"can optionally take into account complicated turn restrictions like those "
+"found in real world navigable road networks. Performamnce wise it is nearly "
+"as fast as the A* search but has many additional features like it works with"
+" edges rather than the nodes of the network. Returns a set of "
+":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
+"make up a path."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:57
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:59
+msgid ""
+"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
+"shooting star in that you can specify turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:61
+msgid ""
+"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
+"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
+"This provides an easy way of adding turn restrictions to a road network by "
+"placing them in a separate table."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:64 ../../build/doc/pgr_trsp.rst:120
+msgid ""
+"a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:71 ../../build/doc/pgr_trsp.rst:127
+msgid "``int4`` identifier of the edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:72 ../../build/doc/pgr_trsp.rst:128
+msgid "``int4`` identifier of the source vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:73 ../../build/doc/pgr_trsp.rst:129
+msgid "``int4`` identifier of the target vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:74 ../../build/doc/pgr_trsp.rst:130
+msgid ""
+"``float8`` value, of the edge traversal cost. A negative cost will prevent "
+"the edge from being inserted in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:75 ../../build/doc/pgr_trsp.rst:131
+msgid ""
+"(optional) the cost for the reverse traversal of the edge. This is only used"
+" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
+"above remark about negative costs)."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:77
+msgid "``int4`` **NODE id** of the start point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:78
+msgid "``int4`` **NODE id** of the end point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:79 ../../build/doc/pgr_trsp.rst:134
+msgid "``true`` if the graph is directed"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:80 ../../build/doc/pgr_trsp.rst:135
+msgid ""
+"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
+"will be used for the cost of the traversal of the edge in the opposite "
+"direction."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:82 ../../build/doc/pgr_trsp.rst:137
+msgid ""
+"(optional) a SQL query, which should return a set of rows with the following"
+" columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:88 ../../build/doc/pgr_trsp.rst:143
+msgid "``float8`` turn restriction cost"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:89 ../../build/doc/pgr_trsp.rst:144
+msgid "``int4`` target id"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:90
+msgid ""
+"``text`` comma separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:92
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** of source and target "
+"together with a fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:94
+msgid "``int4`` **EDGE id** of the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:95
+msgid "``float8`` fraction of 1 defines the position on the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:96
+msgid "``int4`` **EDGE id** of the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:97
+msgid "``float8`` fraction of 1 defines the position on the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:99 ../../build/doc/pgr_trsp.rst:152
+msgid "Returns set of :ref:`type_cost_result`:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:101 ../../build/doc/pgr_trsp.rst:154
+msgid "row sequence"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:102 ../../build/doc/pgr_trsp.rst:156
+msgid "node ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:103 ../../build/doc/pgr_trsp.rst:157
+msgid "edge ID (``-1`` for the last row)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:104
+msgid "cost to traverse from ``id1`` using ``id2``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:107 ../../build/doc/pgr_trsp.rst:162
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:108
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:111
+msgid "Support for Vias"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:113
+msgid ""
+"The Support for Vias functions are prototypes. Not all corner cases are "
+"being considered."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:116
+msgid ""
+"We also have support for vias where you can say generate a from A to B to C,"
+" etc. We support both methods above only you pass an array of vertices or "
+"and array of edges and percentage position along the edge in two arrays."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:133
+msgid ""
+"``int4[]`` An ordered array of **NODE id** the path will go through from "
+"start to end."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:145
+msgid ""
+"``text`` commar separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:147
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** together with a "
+"fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:149
+msgid "``int4`` An ordered array of **EDGE id** that the path has to traverse"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:150
+msgid ""
+"``float8`` An array of fractional positions along the respective edges in "
+"``eids``, where 0.0 is the start of the edge and 1.0 is the end of the "
+"eadge."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:155
+msgid "route ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:158
+msgid "cost to traverse from ``id2`` using ``id3``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:163
+msgid "Via Support prototypes new in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:166
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:168
+msgid "**Without turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:175
+msgid "**With turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:177
+msgid "Then a query with turn restrictions is created as:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:184
+msgid "An example query using vertex ids and via points:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:191
+msgid "An example query using edge ids and vias:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:198
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:204
+msgid ":ref:`type_cost_result`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:207
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:208
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:209
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_version.po b/locale/fr/LC_MESSAGES/pgr_version.po
new file mode 100644
index 0000000..5a6623a
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_version.po
@@ -0,0 +1,130 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_version.rst:13
+msgid "pgr_version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:21
+msgid "``pgr_version`` — Query for pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:27
+msgid "Returns a table with pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:35 ../../build/doc/pgr_version.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:37
+msgid "Returns a table with:"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "**version**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42 ../../build/doc/pgr_version.rst:43
+#: ../../build/doc/pgr_version.rst:44 ../../build/doc/pgr_version.rst:45
+#: ../../build/doc/pgr_version.rst:46
+msgid "``varchar``"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "pgRouting version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "**tag**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "Git tag of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "**hash**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "Git hash of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "**branch**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "Git branch of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "**boost**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "Boost version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:51
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:52
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:56
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:58
+msgid "Query for full version string"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:66
+msgid "Query for ``version`` and ``boost`` attribute"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:78
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:81
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:82
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:83
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_vrpOneDepot.po b/locale/fr/LC_MESSAGES/pgr_vrpOneDepot.po
new file mode 100644
index 0000000..a0c5006
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_vrpOneDepot.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:14
+msgid "pgr_vrpOneDepot - Experimental"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:21
+msgid "**No documentation available**"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:24
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:28
+msgid "Current Result"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:34
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:41
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:43
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:46
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:47
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:48
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_withPoints.po b/locale/fr/LC_MESSAGES/pgr_withPoints.po
new file mode 100644
index 0000000..be629d4
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_withPoints.po
@@ -0,0 +1,665 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPoints.rst:13
+msgid "pgr_withPoints - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:19
+msgid ""
+"``pgr_withPoints`` - Returns the shortest path in a graph with additional "
+"temporary vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, find the shortest path(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:43
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:45
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:51
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path. -"
+" The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path: - The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:59
+msgid ""
+"For optimization purposes, any duplicated value in the start_vids or "
+"end_vids are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:60
+msgid ""
+"The returned values are ordered: - start_vid ascending - end_vid ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:64
+msgid "Running time: :math:`O(|start\\_vids|\\times(V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:68
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:81
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:87
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:90
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:91
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid ""
+"No **details** are given about distance of other points of points_sql query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:100
+msgid "From point 1 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:110
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:120
+msgid "From point 1 to vertex 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:132
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:141
+msgid "From point 1 to point 3 and vertex 5"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:153
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:162
+msgid "From point 1 and vertex 2 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:182
+msgid "From point 1 and vertex 2 to point 3 and vertex 7"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:192
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPoints.rst:249
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPoints.rst:222
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:207
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:211
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:221
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid ""
+"(optional). When ``true`` the results will include the points in points_sql "
+"that are in the path. Default is ``false`` which ignores other points of the"
+" points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:231
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:233
+msgid ""
+"Returns set of ``(seq, [path_seq,] [start_vid,] [end_vid,] node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "Path sequence that indicates the relative position on the path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+#: ../../build/doc/pgr_withPoints.rst:241
+#: ../../build/doc/pgr_withPoints.rst:242
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "Identifier of the ending vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:242
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "Identifier of the node:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:243
+msgid "A positive value indicates the node is a vertex of edges_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "A negative value indicates the node is a point of points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:249
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:262
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **right** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:268
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **left** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:274
+msgid ""
+"Many to many example with a twist: on undirected graph and showing details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:281
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:286
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:287
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:291
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:293
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:296
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:297
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:298
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_withPointsCost.po b/locale/fr/LC_MESSAGES/pgr_withPointsCost.po
new file mode 100644
index 0000000..f478ccd
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_withPointsCost.po
@@ -0,0 +1,603 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCost.rst:13
+msgid "pgr_withPointsCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:19
+msgid ""
+"``pgr_withPointsCost`` - Calculates the shortest path and returns only the "
+"aggregate cost of the shortest path(s) found, for the combination of points "
+"given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, return only the aggregate cost of the shortest path(s) found."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:79
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:44
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:45
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"vertices in the modified graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:51
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:52
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:54
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:58
+msgid "The `agg_cost` in the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:60
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:62
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:64
+msgid ""
+"If the values returned are stored in a table, the unique index would be the "
+"pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:67
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:69
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:71
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:73
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:75
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:76
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:78
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:82
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:92
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:96
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:102
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:105
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:124
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:145
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:166
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:185
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:204
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCost.rst:234
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:219
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:223
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:233
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:241
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:243
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "Identifier of the ending point. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:256
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:258
+msgid "With **right** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:264
+msgid "With **left** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:270
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:277
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:282
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:283
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:287
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:289
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:292
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:293
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:294
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_withPointsCostMatrix.po b/locale/fr/LC_MESSAGES/pgr_withPointsCostMatrix.po
new file mode 100644
index 0000000..c9bb20f
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_withPointsCostMatrix.po
@@ -0,0 +1,472 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:13
+msgid "pgr_withPointsCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:19
+msgid ""
+"``pgr_withPointsCostMatrix`` - Calculates the shortest path and returns only"
+" the aggregate cost of the shortest path(s) found, for the combination of "
+"points given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:31
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:35
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:45
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:87
+msgid "returning a symmetrical cost matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:89
+msgid "Using the default **side** value on the **points_sql** query"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:90
+msgid "Using an undirected graph"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:91
+msgid "Using the default **driving_side** value"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:100
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:128
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:116
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:127
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:153
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:154
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:155
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:156
+msgid "`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_withPointsDD.po b/locale/fr/LC_MESSAGES/pgr_withPointsDD.po
new file mode 100644
index 0000000..95b4be1
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_withPointsDD.po
@@ -0,0 +1,552 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsDD.rst:13
+msgid "pgr_withPointsDD - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:19
+msgid ""
+"``pgr_withPointsDD`` - Returns the driving distance from a starting point."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:37
+msgid ""
+"Modify the graph to include points and using Dijkstra algorithm, extracts "
+"all the nodes and points that have costs less than or equal to the value "
+"``distance`` from the starting point. The edges extracted will conform the "
+"corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:60
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:63
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:64
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:84
+msgid "Driving distance from a single point"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:86
+#: ../../build/doc/pgr_withPointsDD.rst:106
+msgid "Finds the driving distance depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:94
+msgid "Right side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:104
+msgid "Driving distance from many starting points"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:118
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsDD.rst:169
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsDD.rst:147
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:134
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:138
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "Starting point id"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "Distance from the start_pid"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+#: ../../build/doc/pgr_withPointsDD.rst:150
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid ""
+"(optional). Value in ['b', 'r', 'l', NULL] indicating if the driving side "
+"is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:146
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid ""
+"(optional). When ``true`` the nodes will only appear in the closest start_v "
+"list. Default is ``false`` which resembles several calls using the single "
+"starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:157
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:159
+msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid ""
+"Identifier of the node within the Distance from ``start_pid``. If ``details "
+"=: true`` a negative value is the identifier of a point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid "``-1`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:169
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "``0`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:180
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:182
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:184
+msgid "Left side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:190
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:199
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:204
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:205
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:209
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:211
+msgid ":ref:`pgr_drivingDistance` - Driving distance using dijkstra."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:212
+msgid ":ref:`pgr_alphashape` - Alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:213
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/pgr_withPointsKSP.po b/locale/fr/LC_MESSAGES/pgr_withPointsKSP.po
new file mode 100644
index 0000000..8202877
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/pgr_withPointsKSP.po
@@ -0,0 +1,571 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsKSP.rst:13
+msgid "pgr_withPointsKSP - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:19
+msgid ""
+"``pgr_withPointsKSP`` - Find the K shortest paths using Yen's algorithm."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:32
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:36
+msgid ""
+"Modifies the graph to include the points defined in the ``points_sql`` and "
+"using Yen algorithm, finds the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:41
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:56
+msgid "Minimal Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "The minimal usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:60
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:61
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "No **heap paths** are returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:82
+msgid "Finds the K shortest paths depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:91
+msgid "With details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsKSP.rst:130
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:115
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "**start_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "Starting point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "**end_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "Ending point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "**K**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "Number of shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid ""
+"(optional). When ``true`` the paths calculated to get the shortests paths "
+"will be returned also. Default is ``false`` only the K shortest paths are "
+"returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:129
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:139
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:141
+msgid ""
+"Returns set of ``(seq, path_id, path_seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid ""
+"Relative position in the path of node and edge. Has value 1 for the "
+"beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid ""
+"Path identifier. The ordering of the paths: For two paths i, j if i < j then"
+" agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid ""
+"Identifier of the node in the path. Negative values are the identifiers of a"
+" point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:164
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:166
+msgid "Left side driving topology with details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:172
+msgid "Right side driving topology with heap paths and details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:178
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:181
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:182
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:186
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:188
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:191
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:192
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:193
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/proposed.po b/locale/fr/LC_MESSAGES/proposed.po
new file mode 100644
index 0000000..9f1a6f4
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/proposed.po
@@ -0,0 +1,410 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/proposed.rst:13
+msgid "Stable Proposed Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:20
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:22
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:23
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:24
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:25
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:26
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:27
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:33
+msgid "As part of the :ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:35
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` Use pgr_dijkstra to calculate a cost matrix."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:36
+msgid ""
+":ref:`pgr_dijkstraVia` - Use pgr_dijkstra to make a route via vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:39
+msgid "Families"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:40
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:3
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:4
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:5
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:46
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:3
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:5
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:52
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:3
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:4
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:5
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:58
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:3
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:4
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:9
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:64
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:3
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:4
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:5
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:6
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:7
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:71
+msgid "categories"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:72
+msgid ":ref:`Cost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:3
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:4
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:6
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:7
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:78
+msgid ":ref:`CostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:3
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:4
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:6
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:7
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:84
+msgid ":ref:`KSP`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:3
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:4
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:106
+msgid "Experimental Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:111
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:113
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:114
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:116
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:117
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:118
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:119
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:120
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:121
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:122
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:123
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:124
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:125
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:126
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:127
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:132
+msgid ":ref:`contraction` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:134
+msgid ""
+":ref:`pgr_contractgraph` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:138
+msgid "Graph Analysis"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:139
+msgid ":ref:`pgr_labelGraph` - Analyze / label subgraphs within a network"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:141
+msgid ":ref:`components` - Analyze components within a graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:143
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:144
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:145
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:146
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:147
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:150
+msgid "VRP"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:151
+msgid ":ref:`pgr_gsocvrppdtw`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:152
+msgid ":ref:`pgr_vrp_basic`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:166
+msgid "Graph Transformation"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:167
+msgid ":doc:`pgr_lineGraph`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:178
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:179
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:180
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/release_notes.po b/locale/fr/LC_MESSAGES/release_notes.po
new file mode 100644
index 0000000..f4a09f7
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/release_notes.po
@@ -0,0 +1,1278 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/release_notes.rst:13
+msgid "Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ""
+"To see the full list of changes check the list of `Git commits "
+"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid "Table of contents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:21
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:22
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:23
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:24
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:25
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:26
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:27
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:28
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:29
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:30
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:31
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:32
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:33
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:34
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:35
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:36
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:43
+msgid "pgRouting 2.5.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:45
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.5.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.5.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:49
+msgid "enhancement:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:50
+msgid "pgr_version is now on SQL language"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:53
+msgid "Breaking change on:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:54
+msgid "pgr_edgeDisjointPaths:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:56
+msgid "Added path_id, cost and agg_cost columns on the result"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:57
+msgid "Parameter names changed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:58
+msgid "The many version results are the union of the one to one version"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:61
+msgid "New Signatures:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:62
+msgid "pgr_bdAstar(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:65 ../../build/doc/release_notes.rst:223
+msgid "New Proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:66
+msgid "pgr_bdAstar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:67
+msgid "pgr_bdAstar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:68
+msgid "pgr_bdAstar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:69
+msgid "pgr_bdAstarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:70
+msgid "pgr_bdAstarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:71
+msgid "pgr_bdAstarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:72
+msgid "pgr_bdAstarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:73
+msgid "pgr_bdAstarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:74
+msgid "pgr_bdDijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:75
+msgid "pgr_bdDijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:76
+msgid "pgr_bdDijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:77
+msgid "pgr_bdDijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:78
+msgid "pgr_bdDijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:79
+msgid "pgr_bdDijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:80
+msgid "pgr_bdDijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:81
+msgid "pgr_bdDijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:82
+msgid "pgr_lineGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:83
+msgid "pgr_connectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:84
+msgid "pgr_strongComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:85
+msgid "pgr_biconnectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:86
+msgid "pgr_articulationPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:87
+msgid "pgr_bridges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:90 ../../build/doc/release_notes.rst:160
+#: ../../build/doc/release_notes.rst:247
+msgid "Deprecated Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:91
+msgid "pgr_bdastar - use pgr_bdAstar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:94
+msgid "Renamed Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:95
+msgid "pgr_maxFlowPushRelabel - use pgr_pushRelabel instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:96
+msgid "pgr_maxFlowEdmondsKarp -use pgr_edmondsKarp instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:97
+msgid "pgr_maxFlowBoykovKolmogorov - use pgr_boykovKolmogorov instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:98
+msgid "pgr_maximumCardinalityMatching - use pgr_maxCardinalityMatch instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:101
+msgid "Deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:102
+msgid "pgr_pointToEdgeNode"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:108
+msgid "pgRouting 2.4.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:110
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.2 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.2%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:113
+msgid "Improvement"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:114
+msgid "Works for postgreSQL 10"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:117 ../../build/doc/release_notes.rst:131
+#: ../../build/doc/release_notes.rst:168 ../../build/doc/release_notes.rst:522
+#: ../../build/doc/release_notes.rst:529 ../../build/doc/release_notes.rst:550
+#: ../../build/doc/release_notes.rst:557
+msgid "Bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:118
+msgid "Fixed: Unexpected error column \"cname\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:119
+msgid ""
+"Replace __linux__ with __GLIBC__ for glibc-specific headers and functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:126
+msgid "pgRouting 2.4.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:128
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.1 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.1%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:132
+msgid "Fixed compiling error on macOS"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:133
+msgid "Condition error on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:138
+msgid "pgRouting 2.4.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:140
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.4.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.4.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:143 ../../build/doc/release_notes.rst:213
+#: ../../build/doc/release_notes.rst:374
+msgid "New Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:144
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:148
+msgid "New Proposed Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:149
+msgid "pgr_maxFlow"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:150
+msgid "pgr_astar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:151
+msgid "pgr_astar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:152
+msgid "pgr_astar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:153
+msgid "pgr_astarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:154
+msgid "pgr_astarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:155
+msgid "pgr_astarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:156
+msgid "pgr_astarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:157
+msgid "pgr_astarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:161
+msgid "pgr_bddijkstra - use pgr_bdDijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:164 ../../build/doc/release_notes.rst:253
+msgid "Deprecated Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:165
+msgid "pgr_pointsToVids"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:169
+msgid "Bug fixes on proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:171
+msgid "pgr_withPointsKSP: fixed ordering"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:173
+msgid "TRSP original code is used with no changes on the compilation warnings"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:178
+msgid "pgRouting 2.3.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:180
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:183 ../../build/doc/release_notes.rst:199
+#: ../../build/doc/release_notes.rst:269 ../../build/doc/release_notes.rst:282
+#: ../../build/doc/release_notes.rst:293 ../../build/doc/release_notes.rst:305
+#: ../../build/doc/release_notes.rst:424 ../../build/doc/release_notes.rst:455
+msgid "Bug Fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:184
+msgid "Fixed pgr_gsoc_vrppdtw crash when all orders fit on one truck."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:185
+msgid "Fixed pgr_trsp:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:187
+msgid "Alternate code is not executed when the point is in reality a vertex"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:188
+msgid "Fixed ambiguity on seq"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:194
+msgid "pgRouting 2.3.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:196
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.1%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:200
+msgid "Leaks on proposed max_flow functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:201
+msgid "Regression error on pgr_trsp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:202
+msgid "Types discrepancy on pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:208
+msgid "pgRouting 2.3.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:210
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:214
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:215
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:218 ../../build/doc/release_notes.rst:330
+msgid "New Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:219
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:224
+msgid "pgr_dijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:225
+msgid "pgr_withPointsCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:226
+msgid "pgr_maxFlowPushRelabel(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:227
+msgid "pgr_maxFlowPushRelabel(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:228
+msgid "pgr_maxFlowPushRelabel(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:229
+msgid "pgr_maxFlowPushRelabel(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:230
+msgid "pgr_maxFlowEdmondsKarp(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:231
+msgid "pgr_maxFlowEdmondsKarp(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:232
+msgid "pgr_maxFlowEdmondsKarp(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:233
+msgid "pgr_maxFlowEdmondsKarp(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:234
+msgid "pgr_maxFlowBoykovKolmogorov (one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:235
+msgid "pgr_maxFlowBoykovKolmogorov (one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:236
+msgid "pgr_maxFlowBoykovKolmogorov (many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:237
+msgid "pgr_maxFlowBoykovKolmogorov (many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:238
+msgid "pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:239
+msgid "pgr_edgeDisjointPaths(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:240
+msgid "pgr_edgeDisjointPaths(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:241
+msgid "pgr_edgeDisjointPaths(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:242
+msgid "pgr_edgeDisjointPaths(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:243
+msgid "pgr_contractGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:248
+msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:249
+msgid "pgr_astar - use pgr_aStar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:254
+msgid "pgr_flip_edges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:255
+msgid "pgr_vidsToDmatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:256
+msgid "pgr_pointsToDMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:257
+msgid "pgr_textToPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:264
+msgid "pgRouting 2.2.4 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:266
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.4 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.4%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:270
+msgid "Bogus uses of extern \"C\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:271
+msgid "Build error on Fedora 24 + GCC 6.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:272
+msgid "Regression error pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:277
+msgid "pgRouting 2.2.3 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:279
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.3 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.3%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:283
+msgid "Fixed compatibility issues with PostgreSQL 9.6."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:288
+msgid "pgRouting 2.2.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:290
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:294
+msgid "Fixed regression error on pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:300
+msgid "pgRouting 2.2.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:302
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A2.2.1+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:306
+msgid "Server crash fix on pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:307
+msgid "Bug fix on With Points family of functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:313
+msgid "pgRouting 2.2.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:315
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:319 ../../build/doc/release_notes.rst:387
+msgid "Improvements"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:320
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:322
+msgid "Adding a row_where and outall optional parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:324
+msgid "Signature fix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:326
+msgid "pgr_dijkstra -- to match what is documented"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:331
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:332
+msgid "pgr_Johnson"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:333
+msgid "pgr_dijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:334
+msgid "pgr_dijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:335
+msgid "pgr_dijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:336
+msgid "pgr_dijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:339 ../../build/doc/release_notes.rst:391
+msgid "Proposed functionality"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:340
+msgid "pgr_withPoints(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:341
+msgid "pgr_withPoints(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:342
+msgid "pgr_withPoints(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:343
+msgid "pgr_withPoints(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:344
+msgid "pgr_withPointsCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:345
+msgid "pgr_withPointsCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:346
+msgid "pgr_withPointsCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:347
+msgid "pgr_withPointsCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:348
+msgid "pgr_withPointsDD(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:349
+msgid "pgr_withPointsDD(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:350
+msgid "pgr_withPointsKSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:351
+msgid "pgr_dijkstraVia"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:355
+msgid "Deprecated functions:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:356
+msgid "pgr_apspWarshall use pgr_floydWarshall instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:357
+msgid "pgr_apspJohnson use pgr_Johnson instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:358
+msgid "pgr_kDijkstraCost use pgr_dijkstraCost instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:359
+msgid "pgr_kDijkstraPath use pgr_dijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:362
+msgid "Renamed and deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:363
+msgid "pgr_makeDistanceMatrix renamed to _pgr_makeDistanceMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:369
+msgid "pgRouting 2.1.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:371
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.1.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:375
+msgid "pgr_dijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:376
+msgid "pgr_dijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:377
+msgid "pgr_dijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:378
+msgid "pgr_drivingDistance(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:381
+msgid "Refactored"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:382
+msgid "pgr_dijkstra(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:383
+msgid "pgr_ksp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:384
+msgid "pgr_drivingDistance(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:388
+msgid ""
+"pgr_alphaShape function now can generate better (multi)polygon with holes "
+"and alpha parameter."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:392
+msgid ""
+"Proposed functions from Steve Woodbridge, (Classified as Convenience by the "
+"author.)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:394
+msgid ""
+"pgr_pointToEdgeNode - convert a point geometry to a vertex_id based on "
+"closest edge."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:395
+msgid ""
+"pgr_flipEdges - flip the edges in an array of geometries so the connect end "
+"to end."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:396
+msgid ""
+"pgr_textToPoints - convert a string of x,y;x,y;... locations into point "
+"geometries."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:397
+msgid ""
+"pgr_pointsToVids - convert an array of point geometries into vertex ids."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:398
+msgid ""
+"pgr_pointsToDMatrix - Create a distance matrix from an array of points."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:399 ../../build/doc/release_notes.rst:400
+msgid ""
+"pgr_vidsToDMatrix - Create a distance matrix from an array of vertix_id."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:402
+msgid "Added proposed functions from GSoc Projects:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:404
+msgid "pgr_vrppdtw"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:405
+msgid "pgr_vrponedepot"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:408
+msgid "Deprecated functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:409
+msgid "pgr_getColumnName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:410
+msgid "pgr_getTableName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:411
+msgid "pgr_isColumnCndexed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:412
+msgid "pgr_isColumnInTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:413
+msgid "pgr_quote_ident"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:414
+msgid "pgr_versionless"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:415
+msgid "pgr_startPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:416
+msgid "pgr_endPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:417
+msgid "pgr_pointToId"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:420
+msgid "No longer supported"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:421
+msgid "Removed the 1.x legacy functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:425
+msgid "Some bug fixes in other functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:429
+msgid "Refactoring Internal Code"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:430
+msgid "A C and C++ library for developer was created"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:432
+msgid "encapsulates postgreSQL related functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:433
+msgid "encapsulates Boost.Graph graphs"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:435
+msgid "Directed Boost.Graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:436
+msgid "Undirected Boost.graph."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:438
+msgid "allow any-integer in the id's"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:439
+msgid "allow any-numerical on the cost/reverse_cost columns"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:441
+msgid ""
+"Instead of generating many libraries: - All functions are encapsulated in "
+"one library - The library has the prefix 2-1-0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:450
+msgid "pgRouting 2.0.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:452
+msgid "Minor bug fixes."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:456
+msgid "No track of the bug fixes were kept."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:462
+msgid "pgRouting 2.0.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:464
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.0.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.0.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:466
+msgid ""
+"With the release of pgRouting 2.0.0 the library has abandoned backwards "
+"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. The main "
+"Goals for this release are:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:469
+msgid "Major restructuring of pgRouting."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:470
+msgid "Standardization of the function naming"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:471
+msgid "Preparation of the project for future development."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:473
+msgid "As a result of this effort:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:475
+msgid "pgRouting has a simplified structure"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:476
+msgid "Significant new functionality has being added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:477
+msgid "Documentation has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:478
+msgid "Testing has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:479
+msgid "And made it easier for multiple developers to make contributions."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:483
+msgid "Important Changes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:484
+msgid ""
+"Graph Analytics - tools for detecting and fixing connection some problems in"
+" a graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:485
+msgid "A collection of useful utility functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:486
+msgid ""
+"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:487
+msgid ""
+"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
+"pgr_bdDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:488
+msgid "One to many nodes search (pgr_kDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:489
+msgid "K alternate paths shortest path (pgr_ksp)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:490
+msgid ""
+"New TSP solver that simplifies the code and the build process (pgr_tsp), "
+"dropped \"Gaul Library\" dependency"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:491
+msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:492
+msgid "Dropped support for Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:493
+msgid ""
+"Built a test infrastructure that is run before major code changes are "
+"checked in"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:494
+msgid ""
+"Tested and fixed most all of the outstanding bugs reported against 1.x that "
+"existing in the 2.0-dev code base."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:495
+msgid "Improved build process for Windows"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:496
+msgid ""
+"Automated testing on Linux and Windows platforms trigger by every commit"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:497
+msgid "Modular library design"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:498
+msgid "Compatibility with PostgreSQL 9.1 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:499
+msgid "Compatibility with PostGIS 2.0 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:500
+msgid "Installs as PostgreSQL EXTENSION"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:501
+msgid "Return types re factored and unified"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:502
+msgid "Support for table SCHEMA in function parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:503
+msgid "Support for ``st_`` PostGIS function prefix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:504
+msgid "Added ``pgr_`` prefix to functions and types"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:505
+msgid "Better documentation: http://docs.pgrouting.org"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:506
+msgid "shooting_star is discontinued"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:513
+msgid "pgRouting 1.x Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:515
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for 1.x "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+1.x%22+is%3Aclosed>`_"
+" on Github. The following release notes have been copied from the previous "
+"``RELEASE_NOTES`` file and are kept as a reference."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:520
+msgid "Changes for release 1.05"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:526
+msgid "Changes for release 1.03"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:528
+msgid "Much faster topology creation"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:533
+msgid "Changes for release 1.02"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:535 ../../build/doc/release_notes.rst:542
+msgid "Shooting* bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:536
+msgid "Compilation problems solved"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:540
+msgid "Changes for release 1.01"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:546
+msgid "Changes for release 1.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:548
+msgid "Core and extra functions are separated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:549
+msgid "Cmake build process"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:554
+msgid "Changes for release 1.0.0b"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:556
+msgid "Additional SQL file with more simple names for wrapper functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:561
+msgid "Changes for release 1.0.0a"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:563
+msgid "Shooting* shortest path algorithm for real road networks"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:564
+msgid "Several SQL bugs were fixed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:568
+msgid "Changes for release 0.9.9"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:570
+msgid "PostgreSQL 8.2 support"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:571
+msgid ""
+"Shortest path functions return empty result if they could not find any path"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:575
+msgid "Changes for release 0.9.8"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:577
+msgid "Renumbering scheme was added to shortest path functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:578
+msgid "Directed shortest path functions were added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:579
+msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/routingFunctions.po b/locale/fr/LC_MESSAGES/routingFunctions.po
new file mode 100644
index 0000000..3242809
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/routingFunctions.po
@@ -0,0 +1,134 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/routingFunctions.rst:15
+msgid "Routing Functions"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:21
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:23
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:28
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:30
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:33
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:39
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:41
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:43
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:49
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/sampledata.po b/locale/fr/LC_MESSAGES/sampledata.po
new file mode 100644
index 0000000..2ded9cd
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/sampledata.po
@@ -0,0 +1,152 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/sampledata.rst:11
+msgid "Sample Data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:13
+msgid ""
+"The documentation provides very simple example queries based on a small "
+"sample network. To be able to execute the sample queries, run the following "
+"SQL commands to create a table with a small network data set."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:18
+msgid "Create table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:25
+msgid "Insert data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:32
+msgid "Topology"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:33
+msgid ""
+"Before you test a routing function use this query to create a topology "
+"(fills the ``source`` and ``target`` columns)."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:40
+msgid "Points of interest"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:41
+msgid "When points outside of the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:42
+msgid "Used with the :ref:`withPoints` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:49
+msgid "Restrictions"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:50
+msgid "Used with the :ref:`trsp` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:57
+msgid "Categories"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:58
+msgid "Used with the :ref:`maxFlow` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:65
+msgid "Vertex table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:66
+msgid "Used in some deprecated signatures or deprecated functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:74
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:76
+msgid "Red arrows correspond when ``cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:77
+msgid "Blue arrows correspond when ``reverse_cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:78
+msgid "Points are outside the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:79
+msgid "Click on the graph to enlarge."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:84
+msgid ""
+"Network for queries marked as ``directed`` and ``cost`` and ``reverse_cost``"
+" columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:86
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"vehicles."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:91
+msgid "**Graph 1: Directed, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:96
+msgid ""
+"Network for queries marked as ``undirected`` and ``cost`` and "
+"``reverse_cost`` columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:98
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"pedestrians."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:104
+msgid "**Graph 2: Undirected, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:109
+msgid ""
+"Network for queries marked as ``directed`` and only ``cost`` column is used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:116
+msgid "**Graph 3: Directed, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:121
+msgid ""
+"Network for queries marked as ``undirected`` and only ``cost`` column is "
+"used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:127
+msgid "**Graph 4: Undirected, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:134
+msgid "Pick & Deliver Data"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/support.po b/locale/fr/LC_MESSAGES/support.po
new file mode 100644
index 0000000..4082646
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/support.po
@@ -0,0 +1,177 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/support.rst:13
+msgid "Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:15
+msgid ""
+"pgRouting community support is available through the `pgRouting website "
+"<http://pgrouting.org/support.html>`_, `documentation "
+"<http://docs.pgrouting.org>`_, tutorials, mailing lists and others. If "
+"you’re looking for :ref:`commercial support <support_commercial>`, find "
+"below a list of companies providing pgRouting development and consulting "
+"services."
+msgstr ""
+
+#: ../../build/doc/support.rst:19
+msgid "Reporting Problems"
+msgstr ""
+
+#: ../../build/doc/support.rst:21
+msgid ""
+"Bugs are reported and managed in an `issue tracker "
+"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
+"steps:"
+msgstr ""
+
+#: ../../build/doc/support.rst:23
+msgid ""
+"Search the tickets to see if your problem has already been reported. If so, "
+"add any extra context you might have found, or at least indicate that you "
+"too are having the problem. This will help us prioritize common issues."
+msgstr ""
+
+#: ../../build/doc/support.rst:24
+msgid ""
+"If your problem is unreported, create a `new issue "
+"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
+msgstr ""
+
+#: ../../build/doc/support.rst:25
+msgid ""
+"In your report include explicit instructions to replicate your issue. The "
+"best tickets include the exact SQL necessary to replicate a problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:26
+msgid ""
+"If you can test older versions of PostGIS for your problem, please do. On "
+"your ticket, note the earliest version the problem appears."
+msgstr ""
+
+#: ../../build/doc/support.rst:27
+msgid ""
+"For the versions where you can replicate the problem, note the operating "
+"system and version of pgRouting, PostGIS and PostgreSQL."
+msgstr ""
+
+#: ../../build/doc/support.rst:28
+msgid ""
+"It is recommended to use the following wrapper on the problem to pin point "
+"the step that is causing the problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:39
+msgid "Mailing List and GIS StackExchange"
+msgstr ""
+
+#: ../../build/doc/support.rst:41
+msgid ""
+"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
+"server:"
+msgstr ""
+
+#: ../../build/doc/support.rst:43
+msgid ""
+"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
+msgstr ""
+
+#: ../../build/doc/support.rst:44
+msgid ""
+"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
+"dev"
+msgstr ""
+
+#: ../../build/doc/support.rst:46
+msgid ""
+"For general questions and topics about how to use pgRouting, please write to"
+" the user mailing list."
+msgstr ""
+
+#: ../../build/doc/support.rst:48
+msgid ""
+"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
+" tag the question with ``pgrouting``. Find all questions tagged with "
+"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
+"or subscribe to the `pgRouting questions feed "
+"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
+msgstr ""
+
+#: ../../build/doc/support.rst:54
+msgid "Commercial Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:56
+msgid ""
+"For users who require professional support, development and consulting "
+"services, consider contacting any of the following organizations, which have"
+" significantly contributed to the development of pgRouting:"
+msgstr ""
+
+#: ../../build/doc/support.rst:61
+msgid "**Company**"
+msgstr ""
+
+#: ../../build/doc/support.rst:62
+msgid "**Offices in**"
+msgstr ""
+
+#: ../../build/doc/support.rst:63
+msgid "**Website**"
+msgstr ""
+
+#: ../../build/doc/support.rst:64
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/support.rst:65
+msgid "Germany, Japan"
+msgstr ""
+
+#: ../../build/doc/support.rst:66
+msgid "https://georepublic.info"
+msgstr ""
+
+#: ../../build/doc/support.rst:67
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/support.rst:68 ../../build/doc/support.rst:71
+msgid "United States"
+msgstr ""
+
+#: ../../build/doc/support.rst:69
+msgid "http://imaptools.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:70
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/support.rst:72
+msgid "http://www.paragoncorporation.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:73
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/support.rst:74
+msgid "Switzerland, France"
+msgstr ""
+
+#: ../../build/doc/support.rst:75
+msgid "http://www.camptocamp.com"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/topology-functions.po b/locale/fr/LC_MESSAGES/topology-functions.po
new file mode 100644
index 0000000..ac6a1b3
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/topology-functions.po
@@ -0,0 +1,66 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/topology-functions.rst:13
+msgid "Topology - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:15
+msgid ""
+"The pgRouting's topology of a network, represented with an edge table with "
+"source and target attributes and a vertices table associated with it. "
+"Depending on the algorithm, you can create a topology or just reconstruct "
+"the vertices table, You can analyze the topology, We also provide a function"
+" to node an unoded network."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:19
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:20
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:21
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:22
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:23
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:35
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:38
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:39
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:40
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/types_index.po b/locale/fr/LC_MESSAGES/types_index.po
new file mode 100644
index 0000000..3f3faa7
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/types_index.po
@@ -0,0 +1,56 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/types_index.rst:13
+msgid "pgRouting Data Types"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:15
+msgid ""
+"The following are commonly used data types for some of the pgRouting "
+"functions."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:17
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:18
+msgid ""
+":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe "
+"a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:19
+msgid ""
+":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:30
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:33
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:34
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:35
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/withPoints-family.po b/locale/fr/LC_MESSAGES/withPoints-family.po
new file mode 100644
index 0000000..3d4f303
--- /dev/null
+++ b/locale/fr/LC_MESSAGES/withPoints-family.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/withPoints-family.rst:14
+msgid "withPoints - Family of functions"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:16
+msgid "When points are also given as input:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:20
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:21
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:22
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:23
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:24
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:47
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:49
+msgid ""
+"The squared vertices are the temporary vertices, The temporary vertices are "
+"added acordng to the dirving side, The following images visualy show the "
+"diferences on how depending on the driving side the data is interpreted."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:53
+msgid "Right driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:58
+msgid "Left driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:63
+msgid "doesn't matter the driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:68
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:70
+msgid ""
+"This famly of functions was thought for routing vehicles, but might as well "
+"work for some other application that we can not think of."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:73
+msgid ""
+"The with points family of function give you the ability to route between "
+"arbitrary points located outside the original graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:76
+msgid ""
+"When given a point identified with a `pid` that its being mapped to and edge"
+" with an identifier `edge_id`, with a `fraction` along that edge (from the "
+"source to the target of the edge) and some additional information about "
+"which `side` of the edge the point is on, then routing from arbitrary points"
+" more accurately reflect routing vehicles in road networks,"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid ""
+"I talk about a family of functions because it includes different "
+"functionalities."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:84
+msgid "pgr_withPoints is pgr_dijkstra based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:85
+msgid "pgr_withPointsCost is pgr_dijkstraCost based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:86
+msgid "pgr_withPointsKSP is pgr_ksp based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid "pgr_withPointsDD is pgr_drivingDistance based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:89
+msgid ""
+"In all this functions we have to take care of as many aspects as possible:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:91
+msgid "Must work for routing:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:93
+msgid "Cars (directed graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:94
+msgid "Pedestrians (undirected graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:96
+msgid "Arriving at the point:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:98
+msgid "In either side of the street."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:99
+msgid ""
+"Compulsory arrival on the side of the street where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:101
+msgid "Countries with:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:103
+msgid "Right side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:104
+msgid "Left side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:106
+msgid "Some points are:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:108
+msgid ""
+"Permanent, for example the set of points of clients stored in a table in the"
+" data base"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:109
+msgid "Temporal, for example points given through a web application"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:111
+msgid "The numbering of the points are handled with negative sign."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:113
+msgid "Original point identifiers are to be positive."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:114
+msgid "Transformation to negative is done internally."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:115
+msgid "For results for involving vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:117
+msgid "positive sign is a vertex of the original grpah"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:118
+msgid "negative sign is a point of the temporary points"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:120
+msgid ""
+"The reason for doing this is to avoid confusion when there is a vertex with "
+"the same number as identifier as the points identifier."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:123
+msgid "Graph & edges"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:125
+msgid ""
+"Let :math:`G_d(V,E)` where :math:`V` is the set of vertices and :math:`E` is"
+" the set of edges be the original directed graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:127
+msgid ""
+"An edge of the original `edges_sql` is :math:`(id, source, target, cost, "
+"reverse\\_cost)` will generate internally"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:129
+msgid ":math:`(id, source, target, cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:130
+msgid ":math:`(id, target, source, reverse\\_cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:133
+msgid "Point Definition"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:135
+msgid ""
+"A point is defined by the quadruplet: :math:`(pid, eid, fraction, side)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:137
+msgid "**pid** is the point identifier"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:138
+msgid "**eid** is an edge id of the `edges_sql`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:139
+msgid "**fraction** represents where the edge `eid` will be cut."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:140
+msgid "**side** Indicates the side of the edge where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:144
+msgid "Creating Temporary Vertices in the Graph"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:146
+msgid "For edge (15, 9,12 10, 20), & lets insert point (2, 12, 0.3, r)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:149
+msgid "On a right hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:150
+msgid "From first image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:152
+msgid "We can arrive to the point only via vertex 9."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:153
+msgid "It only afects the edge (15, 9,12, 10) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:154
+msgid "Edge (15, 12,9, 20) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:155
+#: ../../build/doc/withPoints-family.rst:167
+#: ../../build/doc/withPoints-family.rst:182
+msgid "Create new edges:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:157
+#: ../../build/doc/withPoints-family.rst:186
+msgid "(15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:158
+#: ../../build/doc/withPoints-family.rst:187
+msgid "(15, -1,12, 7) edge from point 1 to vertex 12 has cost 7"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:161
+msgid "On a left hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:162
+msgid "From second image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:164
+msgid "We can arrive to the point only via vertex 12."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:165
+msgid "It only afects the edge (15, 12,9 20) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:166
+msgid "Edge (15, 9,12, 10) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:169
+#: ../../build/doc/withPoints-family.rst:184
+msgid "(15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:170
+#: ../../build/doc/withPoints-family.rst:185
+msgid "(15, -1,9, 6) edge from point 1 to vertex 9 has cost 6"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:172
+msgid "that fraction is from vertex 9 to vertex 12"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:176
+msgid "When driving side does not matter"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:177
+msgid "From third image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:179
+msgid "We can arrive to the point either via vertex 12 or via vertex 9"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:180
+msgid "Edge (15, 12,9 20) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:181
+msgid "Edge (15, 9,12, 10) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:190
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:193
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:194
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:195
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/KSP-category.po b/locale/it/LC_MESSAGES/KSP-category.po
new file mode 100644
index 0000000..9232738
--- /dev/null
+++ b/locale/it/LC_MESSAGES/KSP-category.po
@@ -0,0 +1,36 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/KSP-category.rst:14
+msgid "KSP Category"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:18
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:19
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:26
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:27
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:28
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/TSP-family.po b/locale/it/LC_MESSAGES/TSP-family.po
new file mode 100644
index 0000000..0f03653
--- /dev/null
+++ b/locale/it/LC_MESSAGES/TSP-family.po
@@ -0,0 +1,556 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/TSP-family.rst:13
+msgid "Traveling Sales Person - Family of functions"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:17
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:18
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:33
+msgid "Origin"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid ""
+"The traveling sales person problem was studied in the 18th century by "
+"mathematicians"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid "**Sir William Rowam Hamilton** and **Thomas Penyngton Kirkman**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:38
+msgid ""
+"A discussion about the work of Hamilton & Kirkman can be found in the book "
+"**Graph Theory (Biggs et al. 1976)**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:41
+msgid "ISBN-13: 978-0198539162"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:42
+msgid "ISBN-10: 0198539169"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:44
+msgid ""
+"It is believed that the general form of the TSP have been first studied by "
+"Kalr Menger in Vienna and Harvard. The problem was later promoted by "
+"Hassler, Whitney & Merrill at Princeton. A detailed description about the"
+" connection between Menger & Whitney, and the development of the TSP can be "
+"found in `On the history of combinatorial optimization (till 1960) "
+"<http://www.cwi.nl/~lex/files/histco.ps>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:50
+msgid "Problem Definition"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:52
+msgid ""
+"Given a collection of cities and travel cost between each pair, find the "
+"cheapest way for visiting all of the cities and returning to the starting "
+"point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:56
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:58
+msgid "The travel costs are symmetric:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:60
+msgid ""
+"traveling costs from city A to city B are just as much as traveling from B "
+"to A."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:62
+msgid "This problem is an NP-hard optimization problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:64
+msgid "To calculate the number of different tours through :math:`n` cities:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:66
+msgid "Given a starting city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:67
+msgid "There are :math:`n-1` choices for the second city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:68
+msgid "And :math:`n-2` choices for the third city, etc."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:69
+msgid ""
+"Multiplying these together we get :math:`(n-1)! = (n-1) (n-2) . . 1`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:70
+msgid ""
+"Now since our travel costs do not depend on the direction we take around the"
+" tour:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:72
+msgid "this number by 2"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:73
+msgid ":math:`(n-1)!/2`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:76
+msgid "TSP & Simulated Annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:78
+msgid ""
+"The simulated annealing algorithm was originally inspired from the process "
+"of annealing in metal work."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:81
+msgid ""
+"Annealing involves heating and cooling a material to alter its physical "
+"properties due to the changes in its internal structure. As the metal cools "
+"its new structure becomes fixed, consequently causing the metal to retain "
+"its newly obtained properties. [C001]_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:88
+msgid "Pseudocode"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:89
+msgid ""
+"Given an initial solution, the simulated annealing process, will start with "
+"a high temperature and gradually cool down until the desired temperature is "
+"reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:92
+msgid ""
+"For each temperature, a neighbouring new solution **snew** is calculated. "
+"The higher the temperature the higher the probability of accepting the new "
+"solution as a possible bester solution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:95
+msgid ""
+"Once the desired temperature is reached, the best solution found is returned"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:118
+msgid "pgRouting Implementation"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:120
+msgid ""
+"pgRouting's implementation adds some extra parameters to allow some exit "
+"controls within the simulated annealing process."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:123
+msgid "To cool down faster to the next temperature:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:125
+msgid ""
+"max_changes_per_temperature: limits the number of changes in the solution "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:126
+msgid ""
+"max_consecutive_non_changes: limits the number of consecutive non changes "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:128
+msgid ""
+"This is done by doing some book keeping on the times **solution = snew;** is"
+" executed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:130
+msgid ""
+"max_changes_per_temperature: Increases by one when **solution** changes"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:131
+msgid ""
+"max_consecutive_non_changes: Reset to 0 when **solution** changes, and "
+"increased each **try**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:133
+msgid ""
+"Additionally to stop the algorithm at a higher temperature than the desired "
+"one:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:135
+msgid ""
+"max_processing_time: limits the time the simulated annealing is performed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:136
+msgid ""
+"book keeping is done to see if there was a change in **solution** on the "
+"last temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:138
+msgid ""
+"Note that, if no change was found in the first "
+"**max_consecutive_non_changes** tries, then the simulated annealing will "
+"stop."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:168
+msgid "Choosing parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:170
+msgid ""
+"There is no exact rule on how the parameters have to be chose, it will "
+"depend on the special characteristics of the problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:173
+msgid ""
+"Your computational time is crucial, then put your time limit to "
+"**max_processing_time**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:174
+msgid ""
+"Make the **tries_per_temperture** depending on the number of cities, for "
+"example:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:176
+msgid "Useful to estimate the time it takes to do one cycle: use `1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:178
+msgid "this will help to set a reasonable **max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:180
+msgid ":math:`n * (n-1)`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:181
+msgid ":math:`500 * n`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:183
+msgid ""
+"For a faster decreasing the temperature set **cooling_factor** to a smaller "
+"number, and set to a higher number for a slower decrease."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:186
+msgid ""
+"When for the same given data the same results are needed, set **randomize** "
+"to `false`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:188
+msgid "When estimating how long it takes to do one cycle: use `false`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:191
+msgid ""
+"A recommendation is to play with the values and see what fits to the "
+"particular data."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:196
+msgid "Description Of the Control parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:198
+msgid "The control parameters are optional, and have a default value."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+#: ../../build/doc/TSP-family.rst:233
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+msgid "`0`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "The greedy part of the implementation will use this identifier."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "Last visiting vertex before returning to start_vid."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "**max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205 ../../build/doc/TSP-family.rst:209
+#: ../../build/doc/TSP-family.rst:210 ../../build/doc/TSP-family.rst:211
+#: ../../build/doc/TSP-family.rst:234 ../../build/doc/TSP-family.rst:237
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "`+infinity`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "Stop the annealing processing when the value is reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "**tries_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206 ../../build/doc/TSP-family.rst:207
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:232
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "`500`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "Maximum number of times a neighbor(s) is searched in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "**max_changes_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "`60`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "Maximum number of times the solution is changed in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid "**max_consecutive_non_changes**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:209
+msgid "`100`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid ""
+"Maximum number of consecutive times the solution is not changed in each "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "**initial_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "Starting temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "**final_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "`0.1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "Ending temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "**cooling_factor**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "`0.9`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid ""
+"Value between between 0 and 1 (not including) used to calculate the next "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "**randomize**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "`true`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "Choose the random seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:214
+msgid "true: Use current time as seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:215
+msgid ""
+"false: Use `1` as seed. Using this value will get the same results with the "
+"same data in each execution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:225
+msgid "Description of the return columns"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:227
+msgid "Returns set of ``(seq, node, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:230
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "Identifier of the node/coordinate/point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:234
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid ""
+"Cost to traverse from the current ``node`` ito the next ``node`` in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:237
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:245
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:248
+msgid "References"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:249
+msgid ""
+"`Simulated annaeling algorithm for beginners <http://www.theprojectspot.com"
+"/tutorial-post/simulated-annealing-algorithm-for-beginners/6>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:251
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:252
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:255
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:256
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:257
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/aStar-family.po b/locale/it/LC_MESSAGES/aStar-family.po
new file mode 100644
index 0000000..3364e02
--- /dev/null
+++ b/locale/it/LC_MESSAGES/aStar-family.po
@@ -0,0 +1,205 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/aStar-family.rst:13
+msgid "aStar - Family of functions"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:15
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic that allow it to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:19
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:20
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:21
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:34
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:36
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic, that is an estimation of the remaining cost from the "
+"vertex to the goal, that allows to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph. Running time: :math:`O((E + "
+"V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:46
+msgid "Heuristic"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:48
+msgid "Currently the heuristic functions available are:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:50
+msgid "0: :math:`h(v) = 0` (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:51
+msgid "1: :math:`h(v) = abs(max(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:52
+msgid "2: :math:`h(v) = abs(min(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:53
+msgid "3: :math:`h(v) = \\Delta x * \\Delta x + \\Delta y * \\Delta y`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:54
+msgid "4: :math:`h(v) = sqrt(\\Delta x * \\Delta x + \\Delta y * \\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:55
+msgid "5: :math:`h(v) = abs(\\Delta x) + abs(\\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:57
+msgid "where :math:`\\Delta x = x_1 - x_0` and :math:`\\Delta y = y_1 - y_0`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:63 ../../build/doc/aStar-family.rst:76
+#: ../../build/doc/aStar-family.rst:89
+msgid "Factor"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:66
+msgid "Analysis 1"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:67
+msgid ""
+"Working with cost/reverse_cost as length in degrees, x/y in lat/lon: Factor "
+"= 1 (no need to change units)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:71
+msgid "Analysis 2"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:72
+msgid ""
+"Working with cost/reverse_cost as length in meters, x/y in lat/lon: Factor ="
+" would depend on the location of the points:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "latitude"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "conversion"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78 ../../build/doc/aStar-family.rst:91
+msgid "45"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "1 longitude degree is 78846.81 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "78846"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79 ../../build/doc/aStar-family.rst:92
+msgid "0"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "1 longitude degree is 111319.46 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "111319"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:83
+msgid "Analysis 3"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:84
+msgid ""
+"Working with cost/reverse_cost as time in seconds, x/y in lat/lon: Factor: "
+"would depend on the location of the points and on the average speed say "
+"25m/s is the speed."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "1 longitude degree is (78846.81m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "3153 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "1 longitude degree is (111319.46 m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "4452 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:98
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:100
+msgid ":ref:`pgr_aStar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:101
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:102
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:103
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:104
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:107
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:108
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:109
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/allpairs-family.po b/locale/it/LC_MESSAGES/allpairs-family.po
new file mode 100644
index 0000000..9749ed9
--- /dev/null
+++ b/locale/it/LC_MESSAGES/allpairs-family.po
@@ -0,0 +1,996 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/allpairs-family.rst:14
+msgid "All Pairs - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:16
+msgid "The following functions work an all vertices pair combinations"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:33
+msgid "Performance"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "The following tests:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:36
+msgid "non server computer"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:37
+msgid "with AMD 64 CPU"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:38
+msgid "4G memory"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:39
+msgid "trusty"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "posgreSQL version 9.3"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:43
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:45
+msgid "The following data was used"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:53
+msgid "Data processing was done with osm2pgrouting-alpha"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:66
+msgid "Results"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:68
+msgid "One"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:70
+msgid ""
+"This test is not with a bounding box The density of the passed graph is "
+"extremely low. For each <SIZE> 30 tests were executed to get the average The"
+" tested query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:83
+#: ../../build/doc/allpairs-family.rst:140
+msgid "The results of this tests are presented as:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:85
+msgid "is the number of edges given as input."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:86
+#: ../../build/doc/allpairs-family.rst:143
+msgid "is the total number of records in the query."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:87
+#: ../../build/doc/allpairs-family.rst:144
+msgid "is the density of the data :math:`\\dfrac{E}{V \\times (V-1)}`."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:88
+#: ../../build/doc/allpairs-family.rst:145
+msgid "is the number of records returned by the queries."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:89
+#: ../../build/doc/allpairs-family.rst:146
+msgid "is the average execution time in seconds of pgr_floydWarshall."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:90
+#: ../../build/doc/allpairs-family.rst:147
+msgid "is the average execution time in seconds of pgr_johnson."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "SIZE"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "EDGES"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "DENSITY"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "OUT ROWS"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Floyd-Warshall"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Johnson"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+#: ../../build/doc/allpairs-family.rst:96
+msgid "500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.18E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "1346"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.14"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.13"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+#: ../../build/doc/allpairs-family.rst:97
+msgid "1000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.36E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "2655"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.23"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.18"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:98
+msgid "1500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.55E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "4110"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:99
+msgid "2000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.73E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "5676"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.56"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+#: ../../build/doc/allpairs-family.rst:100
+msgid "2500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.89E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "7177"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.84"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+#: ../../build/doc/allpairs-family.rst:101
+msgid "3000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.07E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "8778"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "0.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+#: ../../build/doc/allpairs-family.rst:102
+msgid "3500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "1.24E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "10526"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "2.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "0.95"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+#: ../../build/doc/allpairs-family.rst:103
+msgid "4000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.41E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "12484"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "3.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.58E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "14354"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+#: ../../build/doc/allpairs-family.rst:105
+msgid "5000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.76E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "16503"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "6.05"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.78"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+#: ../../build/doc/allpairs-family.rst:106
+msgid "5500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "1.93E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "18623"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "7.53"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "2.03"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+#: ../../build/doc/allpairs-family.rst:107
+msgid "6000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.11E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "20710"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "8.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+#: ../../build/doc/allpairs-family.rst:108
+msgid "6500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.28E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "22752"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "9.99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+#: ../../build/doc/allpairs-family.rst:109
+msgid "7000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "2.46E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "24687"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "11.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "3.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+#: ../../build/doc/allpairs-family.rst:110
+msgid "7500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "2.64E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "26861"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "13.94"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "3.60"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+#: ../../build/doc/allpairs-family.rst:111
+msgid "8000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "2.83E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "29050"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "15.61"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "4.09"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+#: ../../build/doc/allpairs-family.rst:112
+msgid "8500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "3.01E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "31693"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "17.43"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "4.63"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+#: ../../build/doc/allpairs-family.rst:113
+msgid "9000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "3.17E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "33879"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "19.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "5.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+#: ../../build/doc/allpairs-family.rst:114
+msgid "9500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "3.35E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "36287"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "20.77"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "6.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+#: ../../build/doc/allpairs-family.rst:115
+msgid "10000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "3.52E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "38491"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "23.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "6.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:119
+msgid "Two"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:121
+msgid ""
+"This test is with a bounding box The density of the passed graph higher than"
+" of the Test One. For each <SIZE> 30 tests were executed to get the average "
+"The tested edge query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:133
+msgid "The tested queries"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:142
+msgid "is the size of the bounding box."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.001"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "44"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.0608"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "1197"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:154
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.10"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.002"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.0251"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "4330"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.003"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "223"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.0122"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "18849"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.004"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "358"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.0085"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "71834"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.005"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "470"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.0070"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "116290"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.22"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.006"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "639"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.0055"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "207030"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.27"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "843"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.0043"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "346930"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.64"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.38"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.008"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "996"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.0037"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "469936"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.90"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.009"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1146"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.0032"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "613135"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.62"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.010"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1360"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.0027"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "849304"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1.87"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.011"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1573"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.0024"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1147101"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "2.65"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1.04"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1789"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.0021"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1483629"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "3.72"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1.35"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1975"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.0019"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1846897"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "4.86"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.014"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2281"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.0017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2438298"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "7.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2588"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.0015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "3156007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "10.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2.80"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.016"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "2958"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.0013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "4090618"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "14.67"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "3.76"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "3247"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.0012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4868919"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "18.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4.48"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:174
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:176
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:177
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:178
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:181
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:182
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:183
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/bdAstar-family.po b/locale/it/LC_MESSAGES/bdAstar-family.po
new file mode 100644
index 0000000..b2bd16b
--- /dev/null
+++ b/locale/it/LC_MESSAGES/bdAstar-family.po
@@ -0,0 +1,394 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Bidirectional A* - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:18
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:35
+msgid ""
+"Based on A* algorithm, the bidirectional search finds a shortest path from a"
+" starting vertex (``start_vid``) to an ending vertex (``end_vid``). It runs "
+"two simultaneous searches: one forward from the ``start_vid``, and one "
+"backward from the ``end_vid``, stopping when the two meet in the middle. "
+"This implementation can be used with a directed graph and an undirected "
+"graph."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:60
+msgid "It is expected to terminate faster than pgr_astar"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:63
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:78 ../../build/doc/bdAstar-family.rst:80
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:72
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79 ../../build/doc/bdAstar-family.rst:81
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:84
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:85
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:89
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:90
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:91
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:92
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:93
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:94
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96 ../../build/doc/bdAstar-family.rst:97
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:103
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/bdDijkstra-family.po b/locale/it/LC_MESSAGES/bdDijkstra-family.po
new file mode 100644
index 0000000..67de3fa
--- /dev/null
+++ b/locale/it/LC_MESSAGES/bdDijkstra-family.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdDijkstra-family.rst:13
+msgid "Bidirectional Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:17
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:18
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:19
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:35
+msgid ""
+"Based on Dijkstra's algorithm, the bidirectional search finds a shortest "
+"path a starting vertex (``start_vid``) to an ending vertex (``end_vid``). It"
+" runs two simultaneous searches: one forward from the source, and one "
+"backward from the target, stopping when the two meet in the middle. This "
+"implementation can be used with a directed graph and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:60
+msgid "It is expected to terminate faster than pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:63
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:66
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:67
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:68
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/components-family.po b/locale/it/LC_MESSAGES/components-family.po
new file mode 100644
index 0000000..dbca49a
--- /dev/null
+++ b/locale/it/LC_MESSAGES/components-family.po
@@ -0,0 +1,750 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/components-family.rst:13
+msgid "Components - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:22
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:23
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:25
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:42
+msgid "The problem definition"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:45
+msgid "Connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:46
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:49
+#: ../../build/doc/components-family.rst:183
+#: ../../build/doc/components-family.rst:252
+#: ../../build/doc/components-family.rst:312
+msgid "**Notice**: This problem defines on an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:51
+#: ../../build/doc/components-family.rst:117
+#: ../../build/doc/components-family.rst:185
+#: ../../build/doc/components-family.rst:254
+#: ../../build/doc/components-family.rst:314
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:54
+msgid "pgr_connectedComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:56
+#: ../../build/doc/components-family.rst:122
+#: ../../build/doc/components-family.rst:190
+#: ../../build/doc/components-family.rst:259
+#: ../../build/doc/components-family.rst:319
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:58
+#: ../../build/doc/components-family.rst:124
+#: ../../build/doc/components-family.rst:192
+#: ../../build/doc/components-family.rst:261
+#: ../../build/doc/components-family.rst:321
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:60
+#: ../../build/doc/components-family.rst:126
+#: ../../build/doc/components-family.rst:194
+#: ../../build/doc/components-family.rst:263
+#: ../../build/doc/components-family.rst:323
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:61
+#: ../../build/doc/components-family.rst:127
+#: ../../build/doc/components-family.rst:195
+#: ../../build/doc/components-family.rst:264
+#: ../../build/doc/components-family.rst:324
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:63
+#: ../../build/doc/components-family.rst:129
+#: ../../build/doc/components-family.rst:197
+#: ../../build/doc/components-family.rst:266
+#: ../../build/doc/components-family.rst:326
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:65
+#: ../../build/doc/components-family.rst:199
+#: ../../build/doc/components-family.rst:268
+#: ../../build/doc/components-family.rst:328
+msgid "The weighted undirected graph, :math:`G(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:67
+#: ../../build/doc/components-family.rst:133
+#: ../../build/doc/components-family.rst:201
+#: ../../build/doc/components-family.rst:270
+#: ../../build/doc/components-family.rst:330
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:69
+#: ../../build/doc/components-family.rst:203
+#: ../../build/doc/components-family.rst:272
+#: ../../build/doc/components-family.rst:332
+msgid ":math:`V = source \\cup target`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:72
+#: ../../build/doc/components-family.rst:137
+#: ../../build/doc/components-family.rst:206
+#: ../../build/doc/components-family.rst:275
+#: ../../build/doc/components-family.rst:335
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:74
+#: ../../build/doc/components-family.rst:208
+#: ../../build/doc/components-family.rst:277
+#: ../../build/doc/components-family.rst:337
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, cost_i) \\text{ when } cost"
+" >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} \\\\ \\cup &\\{(source_i, target_i, reverse\\_cost_i) \\text{ when }"
+" reverse\\_cost_i >=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:77
+#: ../../build/doc/components-family.rst:142
+#: ../../build/doc/components-family.rst:211
+#: ../../build/doc/components-family.rst:280
+#: ../../build/doc/components-family.rst:340
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:79
+#: ../../build/doc/components-family.rst:144
+#: ../../build/doc/components-family.rst:213
+#: ../../build/doc/components-family.rst:282
+#: ../../build/doc/components-family.rst:342
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:81
+#: ../../build/doc/components-family.rst:146
+#: ../../build/doc/components-family.rst:215
+#: ../../build/doc/components-family.rst:284
+#: ../../build/doc/components-family.rst:344
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:89
+#: ../../build/doc/components-family.rst:154
+#: ../../build/doc/components-family.rst:223
+msgid ":math:`\\boldsymbol{\\pi} = \\{(component_i, n\\_seq_i, node_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:298
+#: ../../build/doc/components-family.rst:358
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:92
+msgid ":math:`component_i = \\min \\{node_j | node_j \\in component_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:93
+#: ../../build/doc/components-family.rst:158
+#: ../../build/doc/components-family.rst:227
+msgid ""
+":math:`n\\_seq_i` is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:94
+#: ../../build/doc/components-family.rst:159
+msgid ":math:`node_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:95
+#: ../../build/doc/components-family.rst:160
+#: ../../build/doc/components-family.rst:229
+#: ../../build/doc/components-family.rst:296
+#: ../../build/doc/components-family.rst:356
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:97
+#: ../../build/doc/components-family.rst:162
+#: ../../build/doc/components-family.rst:231
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:298
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+#: ../../build/doc/components-family.rst:170
+#: ../../build/doc/components-family.rst:239
+#: ../../build/doc/components-family.rst:301
+#: ../../build/doc/components-family.rst:361
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:101
+msgid "The first component is composed of nodes ``0``, ``1`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:102
+msgid "The second component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+msgid "The third component is composed of nodes ``2`` and ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:111
+msgid "Strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:112
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:115
+msgid "**Notice**: This problem defines on a directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:120
+msgid "pgr_strongComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:131
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:135
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:139
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:157
+#: ../../build/doc/components-family.rst:226
+msgid ":math:`component_i = \\min {node_j | node_j \\in component_i}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:166
+msgid "The first component is composed of nodes ``1``, ``2`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:167
+msgid "The second component is composed of node ``0``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:168
+msgid "The third component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:169
+msgid "The fourth component is composed of node ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:170
+msgid "The fifth component is composed of node ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:177
+msgid "Biconnected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:178
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:188
+msgid "pgr_biconnectedComponents(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:228
+msgid ":math:`edge_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:358
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:235
+msgid ""
+"The first component is composed of edges ``1 - 2``, ``0 - 1`` and ``0 - 2``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:236
+msgid ""
+"The second component is composed of edges ``2 - 4``, ``2 - 3`` and ``3 - "
+"4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:237
+msgid "The third component is composed of edge ``5 - 6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:238
+msgid "The fourth component is composed of edge ``6 - 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:239
+msgid ""
+"The fifth component is composed of edges ``8 - 9``, ``9 - 10`` and ``8 - "
+"10``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:246
+msgid "Articulation Points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:247
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:257
+msgid "pgr_articulationPoints(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:292
+msgid ":math:`\\boldsymbol{\\pi} = \\{node_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:295
+msgid ":math:`node_i` is an articulation point."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:301
+msgid "Articulation points are nodes ``2`` and ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:308
+msgid "Bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:309
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:317
+msgid "pgr_bridges(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:352
+msgid ":math:`\\boldsymbol{\\pi} = \\{edge_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:355
+msgid ":math:`edge_i` is an edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:361
+msgid "Bridges are edges ``5 <--> 6`` and ``6 <--> 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:370
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:372
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:378
+#: ../../build/doc/components-family.rst:379
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+#: ../../build/doc/components-family.rst:384
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:382
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:386
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:390
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:392
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:393
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:402
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:405
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:416
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:418
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:444
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:443
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:443
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:461
+#: ../../build/doc/components-family.rst:477
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:435
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:437
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:443
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:453
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:455
+#: ../../build/doc/components-family.rst:471
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:469
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:483
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:486
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:487
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:488
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/contraction-family.po b/locale/it/LC_MESSAGES/contraction-family.po
new file mode 100644
index 0000000..182343c
--- /dev/null
+++ b/locale/it/LC_MESSAGES/contraction-family.po
@@ -0,0 +1,745 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/contraction-family.rst:14
+msgid "Contraction - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:21
+msgid ":ref:`pgr_contractGraph`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:29
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:31
+msgid ""
+"In big graphs, like the road graphs, or electric networks, graph contraction"
+" can be used to speed up some graph algorithms. Contraction reduces the size"
+" of the graph by removing some of the vertices and edges and, for example, "
+"might add edges that represent a sequence of original edges decreasing the "
+"total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:33
+msgid ""
+"This implementation gives a flexible framework for adding contraction "
+"algorithms in the future, currently, it supports two algorithms:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:35
+#: ../../build/doc/contraction-family.rst:46
+msgid "Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:36
+#: ../../build/doc/contraction-family.rst:166
+msgid "Linear contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:38
+msgid "Allowing the user to:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:40
+msgid "Forbid contraction on a set of nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:41
+msgid ""
+"Decide the order of the contraction algorithms and set the maximum number of"
+" times they are to be executed."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:43
+msgid "UNDER DISCUSSION: Forbid contraction on a set of edges"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:47
+msgid "In the algorithm, dead end contraction is represented by 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:50
+msgid "Dead end nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:52
+msgid ""
+"The definition of a dead end node is different for a directed and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:54
+msgid "In case of a undirected graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:56
+msgid "The number of adjacent vertices is 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:58
+msgid "In case of an directed graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:60
+msgid "There are no outgoing edges and has at least one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:61
+msgid "There is one incoming and one outgoing edge with the same identifier."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:64
+#: ../../build/doc/contraction-family.rst:178
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:65
+msgid "The green node ``B`` represents a dead end node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:66
+msgid "The node ``A`` is the only node connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:67
+#: ../../build/doc/contraction-family.rst:181
+msgid ""
+"Node ``A`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:68
+#: ../../build/doc/contraction-family.rst:183
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:86
+msgid "Operation: Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:88
+msgid ""
+"The dead end contraction will stop until there are no more dead end nodes. "
+"For example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:91
+#: ../../build/doc/contraction-family.rst:208
+msgid ""
+"Node ``A`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:92
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:93
+msgid "Node ``B`` is the only node connecting to ``C``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:94
+msgid "The green node ``C`` represents a `Dead End` node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:113
+msgid ""
+"After contracting ``C``, node ``B`` is now a `Dead End` node and is "
+"contracted:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:129
+msgid "Node ``B`` gets contracted"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:143
+msgid "Nodes ``B`` and ``C`` belong to node ``A``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:148
+msgid "Not Dead End nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:150
+msgid "In this graph ``B`` is not a `dead end` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:167
+msgid "In the algorithm, linear contraction is represented by 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:170
+msgid "Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:172
+msgid "A node is considered a linear node if satisfies the following:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:174
+msgid "The number of adjacent vertices are 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:175
+msgid "Should have at least one incoming edge and one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:179
+msgid "The green node ``B`` represents a linear node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:180
+msgid "The nodes ``A`` and ``C`` are the only nodes connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:182
+msgid ""
+"Node ``C`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:203
+msgid "Operation: Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:205
+msgid ""
+"The linear contraction will stop until there are no more linear nodes. For "
+"example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:209
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:210
+msgid ""
+"Node ``C`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:211
+msgid ""
+"Node ``D`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:212
+msgid "The green nodes ``B`` and ``C`` represents `Linear` nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:234
+msgid ""
+"After contracting ``B``, a new edge gets inserted between ``A`` and ``C`` "
+"which is represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:254
+msgid "Node ``C`` is `linear node` and gets contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:272
+msgid ""
+"Nodes ``B`` and ``C`` belong to edge connecting ``A`` and ``D`` which is "
+"represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:275
+msgid "Not Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:277
+msgid "In this graph ``B`` is not a `linear` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:298
+msgid "The cycle"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:300
+msgid ""
+"Contracting a graph, can be done with more than one operation. The order of "
+"the operations affect the resulting contracted graph, after applying one "
+"operation, the set of vertices that can be contracted by another operation "
+"changes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:302
+msgid ""
+"This implementation, cycles ``max_cycles`` times through "
+"``operations_order`` ."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:315
+msgid "Contracting Sample Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:317
+msgid ""
+"In this section, building and using a contracted graph will be shown by "
+"example."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:319
+msgid "The :doc:`sampledata` for an undirected graph is used"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:320
+msgid "a dead end operation first followed by a linear operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:322
+msgid "The original graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:326
+msgid "After doing a dead end contraction operation:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:330
+msgid "Doing a linear contraction operation to the graph above"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:335
+msgid ""
+"There are five cases, in this documentation, which arise when calculating "
+"the shortest path between a given source and target. In this examples, "
+"``pgr_dijkstra`` is used."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:338
+msgid "**Case 1**: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:339
+msgid ""
+"**Case 2**: Source belongs to a contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:340
+msgid ""
+"**Case 3**: Source belongs to a vertex subgraph, while target belongs to an "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:341
+msgid ""
+"**Case 4**: Source belongs to a contracted graph, while target belongs to an"
+" vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:342
+msgid ""
+"**Case 5**: The path contains a new edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:345
+msgid "Construction of the graph in the database"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:348
+msgid "Original Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:349
+msgid ""
+"The following query shows the original data involved in the contraction "
+"operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:356
+msgid "Contraction Results"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:361
+msgid ""
+"The above results do not represent the contracted graph. They represent the "
+"changes done to the graph after applying the contraction algorithm. We can "
+"see that vertices like 6 and 11 do not appear in the contraction results "
+"because they were not affected by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:364
+msgid "step 1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:365
+msgid ""
+"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` "
+"tables:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "The vertices set belonging to the vertex/edge"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+#: ../../build/doc/contraction-family.rst:372
+msgid "**is_contracted**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+msgid ""
+"On a `vertex` table: when ``true`` the vertex is contracted, so is not part "
+"of the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:372
+msgid ""
+"On an `edge` table: when ``true`` the edge was generated by the contraction "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:375
+msgid "Using the following queries:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:382
+msgid "step 2"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:383
+msgid ""
+"For simplicity, in this documentation, store the results of the call to "
+"pgr_contractGraph in a temporary table"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:390
+msgid "step 3"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:391
+msgid ""
+"Update the `vertex` and `edge` tables using the results of the call to "
+"pgr_contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:393
+msgid ""
+"In `edge_table_vertices_pgr.is_contracted` indicate the vertices that are "
+"contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:399
+msgid ""
+"Add to `edge_table_vertices_pgr.contracted_vertices` the contracted "
+"vertices belonging to the vertices."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:405
+msgid "Insert the new edges generated by pgr_contractGraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:412
+msgid "step 3.1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:413
+msgid "Verify visually the updates."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:415
+msgid "On the `edge_table_vertices_pgr`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:421
+msgid "On the `edge_table`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:427
+msgid ""
+"vertices that belong to the contracted graph are the non contracted vertices"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:434
+msgid "case 1: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:435
+msgid ""
+"Inspecting the contracted graph above, vertex 3 and vertex 11 are part of "
+"the contracted graph. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:437
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:438
+#: ../../build/doc/contraction-family.rst:452
+#: ../../build/doc/contraction-family.rst:469
+#: ../../build/doc/contraction-family.rst:485
+#: ../../build/doc/contraction-family.rst:507
+msgid ""
+"when selecting the edges, only edges that have the source and the target in "
+"that set are the edges belonging to the contracted graph, that is done in "
+"the WHERE clause."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:440
+msgid ""
+"Visually, looking at the original graph, going from 3 to 11: 3 -> 6 -> 11, "
+"and in the contracted graph, it is also 3 -> 6 -> 11. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:448
+msgid ""
+"case 2: Source belongs to the contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:452
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 1 belongs to the contracted subgraph of edge 19. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:450
+msgid ""
+"expand1 holds the contracted vertices of the edge where vertex 1 belongs. "
+"(belongs to edge 19)."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:451
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"also the contracted vertices of edge 19."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:454
+msgid ""
+"Visually, looking at the original graph, going from 3 to 1: 3 -> 2 -> 1, and"
+" in the contracted graph, it is also 3 -> 2 -> 1. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:463
+msgid ""
+"case 3: Source belongs to a vertex subgraph, while target belongs to an edge"
+" subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:464
+msgid ""
+"Inspecting the contracted graph above, vertex 7 belongs to the contracted "
+"subgraph of vertex 5 and vertex 13 belongs to the contracted subgraph of "
+"edge 21. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:466
+#: ../../build/doc/contraction-family.rst:483
+msgid ""
+"expand7 holds the contracted vertices of vertex where vertex 7 belongs. "
+"(belongs to vertex 5)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:467
+msgid ""
+"expand13 holds the contracted vertices of edge where vertex 13 belongs. "
+"(belongs to edge 21)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:468
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"contracted vertices of vertex 5 and contracted vertices of edge 21."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:471
+msgid ""
+"Visually, looking at the original graph, going from 7 to 13: 7 -> 8 -> 5 -> "
+"10 -> 13, and in the contracted graph, it is also 7 -> 8 -> 5 -> 10 -> 13. "
+"The results, on the contracted graph match the results as if it was done on "
+"the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:480
+msgid ""
+"case 4: Source belongs to the contracted graph, while target belongs to an "
+"vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:481
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 7 belongs to the contracted subgraph of vertex 5. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:484
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"the contracted vertices of vertex 5."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:487
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, but in the contracted graph, it is 3 -> 5 -> 8 -> 7. The results, on "
+"the contracted graph do not match the results as if it was done on the "
+"original graph. This is because the path contains edge 19 which is added by "
+"the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:495
+msgid "case 5: The path contains an edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:496
+msgid ""
+"In the previous example we can see that the path from vertex 3 to vertex 7 "
+"contains an edge which is added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:502
+msgid ""
+"Inspecting the contracted graph above, edge 19 should be expanded. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:504
+msgid "first_dijkstra holds the results of the dijkstra query."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:505
+msgid ""
+"edges_to_expand holds the edges added by the contraction algorithm and "
+"included in the path."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:506
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"vertices of the contracted solution and the contracted vertices of the edges"
+" added by the contraction algorithm and included in the contracted solution."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:509
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, and in the contracted graph, it is also 3 -> 2 -> 5 -> 8 -> 7. The "
+"results, on the contracted graph match the results as if it was done on the "
+"original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:517
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:519
+msgid ""
+"http://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:520
+msgid "http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:521
+msgid ""
+"The queries use :ref:`pgr_contractGraph` function and the :doc:`sampledata` "
+"network."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:524
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:525
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:526
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/cost-category.po b/locale/it/LC_MESSAGES/cost-category.po
new file mode 100644
index 0000000..efea606
--- /dev/null
+++ b/locale/it/LC_MESSAGES/cost-category.po
@@ -0,0 +1,178 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost-category.rst:13
+msgid "Cost - Category"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:17
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:18
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:20
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:21
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:34
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:36
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:38
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:39
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:40
+msgid ""
+"Returns the sum of the costs of the resulting path(s) for pair combination "
+"of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:44
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:46
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:48
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:50
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:52
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:54
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:56
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:58
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:60
+msgid "Any duplicated value in the `start_vids` or in `end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:62
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:64
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:65
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/costMatrix-category.po b/locale/it/LC_MESSAGES/costMatrix-category.po
new file mode 100644
index 0000000..ad36b5e
--- /dev/null
+++ b/locale/it/LC_MESSAGES/costMatrix-category.po
@@ -0,0 +1,237 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/costMatrix-category.rst:13
+msgid "Cost Matrix - Category"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:17
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:18
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:20
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:21
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:40
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:43
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:45
+msgid ""
+":ref:`tsp` needs as input a symmetric cost matrix and no edge `(u, v)` must "
+"value :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:47
+msgid ""
+"This collection of functions will return a cost matrix in form of a table."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:53
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:55
+msgid "Can be used as input to :ref:`pgr_tsp`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:57
+msgid ""
+"when the resulting matrix is symmetric and there is no :math:`\\infty` "
+"value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:58
+msgid "It will be the users responsibility to make the matrix symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:60
+msgid "By using geometric or harmonic average of the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:61
+msgid "By using max or min the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:62
+msgid ""
+"By setting the upper triangle to be the mirror image of the lower triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:63
+msgid ""
+"By setting the lower triangle to be the mirror image of the upper triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:65
+msgid "It is also the users responsibility to fix an :math:`\\infty` value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:67
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:68
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:69
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:70
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:71
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:73
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:75
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:77
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:79
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:81
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:83
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:85
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:87
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:89
+msgid "Any duplicated value in the `start_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:91
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:93
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:94
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:96
+msgid "Running time: approximately :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:101
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:103
+msgid ":ref:`pgr_tsp`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/cost_result.po b/locale/it/LC_MESSAGES/cost_result.po
new file mode 100644
index 0000000..cfc1232
--- /dev/null
+++ b/locale/it/LC_MESSAGES/cost_result.po
@@ -0,0 +1,92 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost_result.rst:13
+msgid "pgr_costResult[]"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:19 ../../build/doc/cost_result.rst:52
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:21
+msgid ""
+"``pgr_costResult[]`` — A set of records to describe a path result with cost "
+"attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:25 ../../build/doc/cost_result.rst:58
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:37 ../../build/doc/cost_result.rst:71
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:38 ../../build/doc/cost_result.rst:73
+msgid "generic name, to be specified by the function, typically the node id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:39 ../../build/doc/cost_result.rst:74
+msgid "generic name, to be specified by the function, typically the edge id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:40 ../../build/doc/cost_result.rst:75
+msgid "cost attribute"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:46
+msgid "pgr_costResult3[] - Multiple Path Results with Cost"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:54
+msgid ""
+"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
+" attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:72
+msgid "generic name, to be specified by the function, typically the path id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:79
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:80
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:81
+msgid "Replaces ``path_result``"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:87
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/dijkstra-family.po b/locale/it/LC_MESSAGES/dijkstra-family.po
new file mode 100644
index 0000000..a9fa495
--- /dev/null
+++ b/locale/it/LC_MESSAGES/dijkstra-family.po
@@ -0,0 +1,262 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/dijkstra-family.rst:13
+msgid "Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:17
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:18
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:19
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:20
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:21
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:22
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:39
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:42
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:45
+msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:47
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:49
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:51
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:52
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:54
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:57
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:58
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:60
+#: ../../build/doc/dijkstra-family.rst:79
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:62
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:64
+#: ../../build/doc/dijkstra-family.rst:84
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:66
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = \\varnothing \\\\"
+" \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } \\{(source_i, "
+"target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup"
+" \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } "
+"reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:76
+msgid "Undirected graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:77
+msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:81
+msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:86
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, "
+"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } "
+"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ "
+"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & "
+"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost "
+">=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) "
+"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup "
+"\\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:99
+msgid "The problem"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:100
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:102
+msgid ":math:`start_{vid} \\in V` a starting vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:103
+msgid ":math:`end_{vid} \\in V` an ending vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:104
+msgid ""
+":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = "
+"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:109
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:118
+msgid ""
+":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, "
+"agg\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:131
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:121
+msgid ":math:`path\\_seq_i = i`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:122
+msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:123
+msgid ":math:`node_i \\in V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:124
+msgid ":math:`node_1 = start_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:125
+msgid ":math:`node_{| \\pi |} = end_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:126
+msgid ":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:127
+msgid ""
+":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad "
+"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | "
+"\\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:128
+msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:129
+msgid ""
+":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 "
+"\\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad "
+"\\text{when } i \\neq 1 \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:137
+msgid ""
+"In other words: The algorithm returns a the shortest path between "
+":math:`start_{vid}` and :math:`end_{vid}` , if it exists, in terms of a "
+"sequence of nodes and of edges,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:134
+msgid ""
+":math:`path\\_seq` indicates the relative position in the path of the "
+":math:`node` or :math:`edge`."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:135
+msgid ""
+":math:`cost` is the cost of the edge to be used to go to the next node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:136
+msgid ""
+":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:139
+msgid "If there is no path, the resulting set is empty."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:143
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:146
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:147
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:148
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/drivingDistance-category.po b/locale/it/LC_MESSAGES/drivingDistance-category.po
new file mode 100644
index 0000000..a71b4c7
--- /dev/null
+++ b/locale/it/LC_MESSAGES/drivingDistance-category.po
@@ -0,0 +1,52 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/drivingDistance-category.rst:14
+msgid "Driving Distance - Category"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:18
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:19
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:20
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:22
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:23
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:36
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:39
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:40
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:41
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/flow-family.po b/locale/it/LC_MESSAGES/flow-family.po
new file mode 100644
index 0000000..a000199
--- /dev/null
+++ b/locale/it/LC_MESSAGES/flow-family.po
@@ -0,0 +1,331 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Flow - Family of functions"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:19
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:23
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:24
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:45
+msgid "Flow Functions General Information"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:52
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:53
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:54
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:56
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:58
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:59
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:61
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:63
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:64
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:66
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:67
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:72
+msgid ""
+":ref:`pgr_maxFlow <pgr_maxFlow>` is the maximum Flow and that maximum is "
+"guaranteed to be the same on the functions :ref:`pgr_pushRelabel "
+"<pgr_pushRelabel>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`, "
+":ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, but the actual flow "
+"through each edge may vary."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:77
+msgid "Problem definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:79
+msgid ""
+"A flow network is a directed graph where each edge has a capacity and a "
+"flow. The flow through an edge must not exceed the capacity of the edge. "
+"Additionally, the incoming and outgoing flow of a node must be equal except "
+"the for source which only has outgoing flow, and the destination(sink) which"
+" only has incoming flow."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:83
+msgid ""
+"Maximum flow algorithms calculate the maximum flow through the graph and the"
+" flow of each edge."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:85
+msgid ""
+"The maximum flow through the graph is guaranteed to be the same with all "
+"implementations, but the actual flow through each edge may vary. Given the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:89
+msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:91
+msgid ""
+"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, "
+"reverse\\_capacity_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:94
+msgid "Graph definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:95
+msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:97
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:99
+msgid ""
+":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup "
+"target_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:101
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:103
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) "
+"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = "
+"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, "
+"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup "
+"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } "
+"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:111
+msgid "Maximum flow problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:112
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:115
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:116
+msgid ":math:`source\\_vertex \\in V` the source vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:117
+msgid ":math:`sink\\_vertex \\in V` the sink vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:119
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:121
+msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:123
+msgid ""
+":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, "
+"flow_i, residual\\_capacity_i)}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:125
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:127
+msgid ""
+":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their "
+"residual capacity and flow. The maximum flow through the graph can be "
+"obtained by aggregating on the source or sink and summing the flow from/to "
+"it. In particular:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:129
+msgid ":math:`id_i = i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:130
+msgid ":math:`edge\\_id = id_i` in edges_sql"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:131
+msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:135
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:137
+msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/geom_result.po b/locale/it/LC_MESSAGES/geom_result.po
new file mode 100644
index 0000000..e2d89a1
--- /dev/null
+++ b/locale/it/LC_MESSAGES/geom_result.po
@@ -0,0 +1,74 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/geom_result.rst:13
+msgid "pgr_geomResult[]"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:21
+msgid ""
+"``pgr_geomResult[]`` — A set of records to describe a path result with "
+"geometry attribute."
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:25
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:37
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:38 ../../build/doc/geom_result.rst:39
+msgid "generic name, to be specified by the function"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:40
+msgid "geometry attribute"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:44
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:45
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:46
+msgid "Replaces ``geoms``"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:50
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:52
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:56
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:57
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:58
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/index.po b/locale/it/LC_MESSAGES/index.po
new file mode 100644
index 0000000..44ac3e4
--- /dev/null
+++ b/locale/it/LC_MESSAGES/index.po
@@ -0,0 +1,306 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/index.rst:14
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/index.rst:16
+msgid ""
+"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
+"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
+"and other network analysis functionality."
+msgstr ""
+
+#: ../../build/doc/index.rst:18
+msgid "This is the manual for pgRouting |release|."
+msgstr ""
+
+#: ../../build/doc/index.rst:24
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
+"free to use this material any way you like, but we ask that you attribute "
+"credit to the pgRouting Project and wherever possible, a link back to "
+"http://pgrouting.org. For other licenses used in pgRouting see the "
+":ref:`license` page."
+msgstr ""
+
+#: ../../build/doc/index.rst:27
+msgid "General"
+msgstr ""
+
+#: ../../build/doc/index.rst:37
+msgid ":doc:`sampledata` that is used in the examples of this manual."
+msgstr ""
+
+#: ../../build/doc/index.rst:45
+msgid "Pgrouting Concepts"
+msgstr ""
+
+#: ../../build/doc/index.rst:54
+msgid "Reference"
+msgstr ""
+
+#: ../../build/doc/index.rst:55
+msgid ":ref:`pgr_version` - to get pgRouting's version information."
+msgstr ""
+
+#: ../../build/doc/index.rst:64
+msgid ":ref:`Data Types <data_types>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:67
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:68
+msgid ""
+":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
+" path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:69
+msgid ""
+":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:78
+msgid ":ref:`Topology Functions <topology_functions>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:80
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/index.rst:81
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/index.rst:82
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/index.rst:83
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/index.rst:84
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/index.rst:93
+msgid ":ref:`Routing functions <routing_functions>`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:4
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:6
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:7
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:9
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:11
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:13
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:16
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:22
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:32
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/index.rst:108
+msgid "Available Functions but not official pgRouting functions"
+msgstr ""
+
+#: ../../build/doc/index.rst:110
+msgid ":ref:`Stable`"
+msgstr ""
+
+#: ../../build/doc/index.rst:111
+msgid ":ref:`proposed`"
+msgstr ""
+
+#: ../../build/doc/index.rst:121
+msgid ":ref:`Change Log <change_log>`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:3
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:4
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:5
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:6
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:7
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:8
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:9
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:10
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:11
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:12
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:13
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:14
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:16
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:17
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/index.rst:135
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/index.rst:136
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/index.rst:137
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgRouting-concepts.po b/locale/it/LC_MESSAGES/pgRouting-concepts.po
new file mode 100644
index 0000000..34885ba
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgRouting-concepts.po
@@ -0,0 +1,1071 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "pgRouting Concepts"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:0
+msgid "Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "Getting Started"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid ""
+"This is a simple guide to walk you through the steps of getting started with"
+" pgRouting. In this guide we will cover:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:32
+msgid "Create a routing Database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:34
+msgid ""
+"The first thing we need to do is create a database and load pgrouting in the"
+" database. Typically you will create a database for each project. Once you "
+"have a database to work in, your can load your data and build your "
+"application in that database. This makes it easy to move your project later "
+"if you want to to say a production server."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:40
+msgid "For Postgresql 9.2 and later versions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:51
+msgid "Load Data"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:53
+msgid ""
+"How you load your data will depend in what form it comes it. There are "
+"various OpenSource tools that can help you, like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:56
+msgid ""
+"this is a tool for loading OSM data into postgresql with pgRouting "
+"requirements"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:57
+msgid "this is the postgresql shapefile loader"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:58
+msgid "this is a vector data conversion utility"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:59
+msgid "this is a tool for loading OSM data into postgresql"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:61
+msgid ""
+"So these tools and probably others will allow you to read vector data so "
+"that you may then load that data into your database as a table of some kind."
+" At this point you need to know a little about your data structure and "
+"content. One easy way to browse your new data table is with pgAdmin3 or "
+"phpPgAdmin."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:69
+msgid "Build a Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:71
+msgid ""
+"Next we need to build a topology for our street data. What this means is "
+"that for any given edge in your street data the ends of that edge will be "
+"connected to a unique node and to other edges that are also connected to "
+"that same unique node. Once all the edges are connected to nodes we have a "
+"graph that can be used for routing with pgrouting. We provide a tool that "
+"will help with this:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:77
+msgid "this step is not needed if data is loaded with `osm2pgrouting`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:83
+msgid ":ref:`pgr_create_topology`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:88
+msgid "Check the Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:90
+msgid ""
+"There are lots of possible sources for errors in a graph. The data that you "
+"started with may not have been designed with routing in mind. A graph has "
+"some very specific requirements. One is that it is *NODED*, this means that "
+"except for some very specific use cases, each road segment starts and ends "
+"at a node and that in general is does not cross another road segment that it"
+" should be connected to."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:97
+msgid ""
+"There can be other errors like the direction of a one-way street being "
+"entered in the wrong direction. We do not have tools to search for all "
+"possible errors but we have some basic tools that might help."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:109
+msgid ":ref:`pgr_analyze_graph`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:110
+msgid ":ref:`pgr_analyze_oneway`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:111
+msgid ":ref:`pgr_node_network`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:117
+msgid "Compute a Path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:119
+msgid ""
+"Once you have all the preparation work done above, computing a route is "
+"fairly easy. We have a lot of different algorithms that can work with your "
+"prepared road network. The general form of a route query is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:127
+msgid ""
+"As you can see this is fairly straight forward and you can look and the "
+"specific algorithms for the details of the signatures and how to use them. "
+"These results have information like edge id and/or the node id along with "
+"the cost or geometry for the step in the path from *start* to *end*. Using "
+"the ids you can join these result back to your edge table to get more "
+"information about each step in the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:134
+msgid ":ref:`pgr_dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:141
+msgid "Inner Queries"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:146
+msgid ""
+"There are several kinds of valid inner queries and also the columns returned"
+" are depending of the function. Which kind of inner query will depend on the"
+" function(s) requirements. To simplify variety of types, ``ANY-INTEGER`` and"
+" ``ANY-NUMERICAL`` is used."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:152
+#: ../../build/doc/pgRouting-concepts.rst:182
+#: ../../build/doc/pgRouting-concepts.rst:212
+#: ../../build/doc/pgRouting-concepts.rst:269
+#: ../../build/doc/pgRouting-concepts.rst:300
+#: ../../build/doc/pgRouting-concepts.rst:334
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:154
+#: ../../build/doc/pgRouting-concepts.rst:184
+#: ../../build/doc/pgRouting-concepts.rst:214
+#: ../../build/doc/pgRouting-concepts.rst:271
+#: ../../build/doc/pgRouting-concepts.rst:302
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:155
+#: ../../build/doc/pgRouting-concepts.rst:185
+#: ../../build/doc/pgRouting-concepts.rst:215
+#: ../../build/doc/pgRouting-concepts.rst:272
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:162
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:164
+#: ../../build/doc/pgRouting-concepts.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:247
+#: ../../build/doc/pgRouting-concepts.rst:282
+#: ../../build/doc/pgRouting-concepts.rst:314
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:287
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:290
+#: ../../build/doc/pgRouting-concepts.rst:294
+#: ../../build/doc/pgRouting-concepts.rst:319
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:263
+#: ../../build/doc/pgRouting-concepts.rst:264
+#: ../../build/doc/pgRouting-concepts.rst:265
+#: ../../build/doc/pgRouting-concepts.rst:266
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:174
+#: ../../build/doc/pgRouting-concepts.rst:204
+#: ../../build/doc/pgRouting-concepts.rst:257
+#: ../../build/doc/pgRouting-concepts.rst:292
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:178
+#: ../../build/doc/pgRouting-concepts.rst:208
+#: ../../build/doc/pgRouting-concepts.rst:261
+#: ../../build/doc/pgRouting-concepts.rst:296
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:193
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:224
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:227
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:232
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:234
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:236
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:245
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:280
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:312
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:321
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:322
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:328
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:329
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:330
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:336
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:337
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:345
+msgid "Return columns & values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:350
+msgid ""
+"There are several kinds of columns returned are depending of the function."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:355
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:357
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:363
+#: ../../build/doc/pgRouting-concepts.rst:364
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:367
+#: ../../build/doc/pgRouting-concepts.rst:368
+#: ../../build/doc/pgRouting-concepts.rst:385
+#: ../../build/doc/pgRouting-concepts.rst:386
+#: ../../build/doc/pgRouting-concepts.rst:403
+#: ../../build/doc/pgRouting-concepts.rst:404
+#: ../../build/doc/pgRouting-concepts.rst:405
+#: ../../build/doc/pgRouting-concepts.rst:406
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:378
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:380
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:397
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:415
+msgid "Advanced Topics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:423
+msgid "Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:427
+#: ../../build/doc/pgRouting-concepts.rst:528
+msgid "Overview"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:428
+msgid ""
+"Typically when GIS files are loaded into the data database for use with "
+"pgRouting they do not have topology information associated with them. To "
+"create a useful topology the data needs to be \"noded\". This means that "
+"where two or more roads form an intersection there it needs to be a node at "
+"the intersection and all the road segments need to be broken at the "
+"intersection, assuming that you can navigate from any of these segments to "
+"any other segment via that intersection."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:430
+msgid ""
+"You can use the :ref:`graph analysis functions <analytics>` to help you see "
+"where you might have topology problems in your data. If you need to node "
+"your data, we also have a function :ref:`pgr_nodeNetwork() "
+"<pgr_node_network>` that might work for you. This function splits ALL "
+"crossing segments and nodes them. There are some cases where this might NOT "
+"be the right thing to do."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:432
+msgid ""
+"For example, when you have an overpass and underpass intersection, you do "
+"not want these noded, but pgr_nodeNetwork does not know that is the case and"
+" will node them which is not good because then the router will be able to "
+"turn off the overpass onto the underpass like it was a flat 2D intersection."
+" To deal with this problem some data sets use z-levels at these types of "
+"intersections and other data might not node these intersection which would "
+"be ok."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:434
+msgid ""
+"For those cases where topology needs to be added the following functions may"
+" be useful. One way to prep the data for pgRouting is to add the following "
+"columns to your table and then populate them as appropriate. This example "
+"makes a lot of assumption like that you original data tables already has "
+"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
+"that they contain specific data values. This is only to give you an idea of "
+"what you can do with your data."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:455
+msgid ""
+"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
+"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
+"columns. The following example populated the remaining columns. In this "
+"example, the ``fcc`` column contains feature class code and the ``CASE`` "
+"statements converts it to an average speed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:518
+msgid ""
+"Now your database should be ready to use any (most?) of the pgRouting "
+"algorithms."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:524
+msgid "Graph Analytics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:529
+msgid ""
+"It is common to find problems with graphs that have not been constructed "
+"fully noded or in graphs with z-levels at intersection that have been "
+"entered incorrectly. An other problem is one way streets that have been "
+"entered in the wrong direction. We can not detect errors with respect to "
+"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
+"a graph and report them for additional inspections."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:531
+msgid ""
+"We do not current have any visualization tools for these problems, but I "
+"have used mapserver to render the graph and highlight potential problem "
+"areas. Someone familiar with graphviz might contribute tools for generating "
+"images with that."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:535
+msgid "Analyze a Graph"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:537
+msgid ""
+"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
+"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
+"table:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:560
+msgid "In the vertices table \"mytab_vertices_pgr\":"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:562
+msgid "Deadends are identified by ``cnt=1``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:563
+msgid "Potencial gap problems are identified with ``chk=1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:581
+msgid ""
+"For isolated road segments, for example, a segment where both ends are "
+"deadends. you can find these with the following query:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:590
+msgid ""
+"If you want to visualize these on a graphic image, then you can use "
+"something like mapserver to render the edges and the vertices and style "
+"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
+"tool like graphviz, or geoserver or other similar tools."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:594
+msgid "Analyze One Way Streets"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:596
+msgid ""
+":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
+" any flipped segments. Basically if you count the edges coming into a node "
+"and the edges exiting a node the number has to be greater than one."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:598
+msgid ""
+"This query will add two columns to the vertices_tmp table ``ein int`` and "
+"``eout int`` and populate it with the appropriate counts. After running this"
+" on a graph you can identify nodes with potential problems with the "
+"following query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:601
+msgid ""
+"The rules are defined as an array of text strings that if match the ``col`` "
+"value would be counted as true for the source or target in or out condition."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:605
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:607
+msgid ""
+"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
+"might have values like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:609
+msgid "'FT' - oneway from the source to the target node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:610
+msgid "'TF' - oneway from the target to the source node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:611
+msgid "'B' - two way street."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:612
+msgid "'' - empty field, assume twoway."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:613
+msgid "<NULL> - NULL field, use two_way_if_null flag."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:615
+msgid ""
+"Then we could form the following query to analyze the oneway streets for "
+"errors."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:634
+msgid ""
+"Typically these problems are generated by a break in the network, the one "
+"way direction set wrong, maybe an error related to z-levels or a network "
+"that is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:636
+msgid ""
+"The above tools do not detect all network issues, but they will identify "
+"some common problems. There are other problems that are hard to detect "
+"because they are more global in nature like multiple disconnected networks. "
+"Think of an island with a road network that is not connected to the mainland"
+" network because the bridge or ferry routes are missing."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:644
+msgid "Performance Tips"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:651
+msgid "For the Routing functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:653
+msgid ""
+"To get faster results bound your queries to the area of interest of routing "
+"to have, for example, no more than one million rows."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:655
+msgid ""
+"Use an inner query SQL that does not include some edges in the routing "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:663
+msgid "Integrating the inner query to the pgRouting function:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:677
+msgid "For the topology functions:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:679
+msgid ""
+"When \"you know\" that you are going to remove a set of edges from the edges"
+" table, and without those edges you are going to use a routing function you "
+"can do the following:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:681
+msgid "Analize the new topology based on the actual topology:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:687
+msgid "Or create a new topology if the change is permanent:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:698
+msgid "How to contribute"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:701
+msgid "Wiki"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:702
+msgid ""
+"Edit an existing `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_ page."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:703
+msgid "Or create a new Wiki page"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:705
+msgid ""
+"Create a page on the `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:706
+msgid "Give the title an appropriate name"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:709
+msgid ""
+"`Example <https://github.com/pgRouting/pgrouting/wiki/How-to:-Handle-"
+"parallel-edges-(KSP)>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:713
+msgid "Adding Functionaity to pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:714
+msgid ""
+"Consult the `developer's documentation "
+"<http://docs.pgrouting.org/doxy/2.4/index.html>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:719
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:720
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:721
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgRouting-installation.po b/locale/it/LC_MESSAGES/pgRouting-installation.po
new file mode 100644
index 0000000..71b7f5f
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgRouting-installation.po
@@ -0,0 +1,418 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-installation.rst:13
+msgid "Installation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:16
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:17
+msgid ":ref:`install-short`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:18
+msgid ":ref:`install_get_sources`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:19
+msgid ":ref:`install_enable_db`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:20
+msgid ":ref:`install_dependencies`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:21
+msgid ":ref:`install_configuring`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:22
+msgid ":ref:`install_build`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:23
+msgid ":ref:`install_testing`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:25
+msgid ""
+"Instructions for downloading and installing binaries for different Operative"
+" systems instructions and additional notes and corrections not included in "
+"this documentation can be found in `Installation wiki "
+"<https://github.com/pgRouting/pgrouting/wiki/Notes-on-Download%2C-"
+"Installation-and-building-pgRouting>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:27
+msgid ""
+"To use pgRouting postGIS needs to be installed, please read the information "
+"about installation in this `Install Guide "
+"<http://www.postgis.us/presentations/postgis_install_guide_22.html>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:32
+msgid "Short Version"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:37
+msgid "Extracting the tar ball"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:44
+msgid "To compile assuming you have all the dependencies in your search path:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:54
+msgid ""
+"Once pgRouting is installed, it needs to be enabled in each individual "
+"database you want to use it in."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:66
+msgid "Get the sources"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:69
+msgid ""
+"The pgRouting latest release can be found in "
+"https://github.com/pgRouting/pgrouting/releases/latest"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:72
+msgid "wget"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:73
+msgid "To download this release:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:81
+msgid "Goto :ref:`install-short` to the extract and compile instructions."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:84
+msgid "git"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:85
+msgid "To download the repository"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:93
+msgid ""
+"Goto :ref:`install-short` to the compile instructions (there is no tar "
+"ball)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:100
+msgid "Enabling and upgrading in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:103
+msgid "Enabling the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:104
+msgid ""
+"pgRouting is an extension and depends on postGIS. Enabling postGIS before "
+"enabling pgRouting in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:113
+msgid "Upgrading the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:114
+msgid ""
+"To upgrade pgRouting in the database to version 2.4.0 use the following "
+"command:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:122
+msgid ""
+"More information can be found in "
+"https://www.postgresql.org/docs/current/static/sql-createextension.html"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:128
+msgid "Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:131
+msgid "Compilation Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:132
+msgid ""
+"To be able to compile pgRouting, make sure that the following dependencies "
+"are met:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:134
+msgid "C and C++0x compilers * g++ version >= 4.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:136
+msgid "Postgresql version >= 9.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:137
+msgid "PostGIS version >= 2.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:138
+msgid "The Boost Graph Library (BGL). Version >= 1.46"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:139
+msgid "CMake >= 2.8.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:140
+msgid "CGAL >= 4.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:144
+msgid "optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:145
+msgid "For user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:147
+msgid "Sphinx >= 1.1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:148
+msgid "Latex"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:150
+msgid "For developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:152
+msgid "Doxygen >= 1.7"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:154
+msgid "For testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:156
+msgid "pgtap"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:157
+msgid "pg_prove"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:161
+msgid "Example: Installing dependencies on linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:162
+msgid "Installing the compilation dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:174
+msgid "Installing the optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:188
+msgid "Configuring"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:190
+msgid "pgRouting uses the `cmake` system to do the configuration."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:192
+msgid "The build directory is different from the source directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:194
+msgid "Create the build directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:201
+msgid "Configurable variables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:205
+msgid "To see the variables that can be configured"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:213
+msgid "Configuring The Documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:214
+msgid ""
+"Most of the effort of the documentation has being on the HTML files. Some "
+"variables for the documentation:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Variable"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Comment"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "WITH_DOC"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+#: ../../build/doc/pgRouting-installation.rst:223
+#: ../../build/doc/pgRouting-installation.rst:224
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "BOOL=OFF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "Turn on/off building the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "BUILD_HTML"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BOOL=ON"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "If ON, turn on/off building HTML for user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BUILD_DOXY"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "If ON, turn on/off building HTML for developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "BUILD_LATEX"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "If ON, turn on/off building PDF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "BUILD_MAN"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "If ON, turn on/off building MAN pages"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "DOC_USE_BOOTSTRAP"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:228
+msgid "Configuring with documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:234
+msgid "Most of the effort of the documentation has being on the html files."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:240
+msgid "Building"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:242
+msgid "Using ``make`` to build the code and the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:244
+msgid "The following instructions start from *path/to/pgrouting/build*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:253
+msgid ""
+"We have tested on several platforms, For installing or reinstalling all the "
+"steps are needed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:255
+msgid "The sql signatures are configured and build in the ``cmake`` command."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:258
+msgid "MinGW on Windows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:269
+msgid "Linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:270
+msgid "The following instructions start from *path/to/pgrouting*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:280
+msgid "When the configuration changes:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:286
+msgid "and start the build process as mentioned above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:291
+msgid "Testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:293
+msgid "Currently there is no :code:`make test` and testing is done as follows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:295
+msgid "The following instructions start from *path/to/pgrouting/*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:305
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:308
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:309
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:310
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgRouting-introduction.po b/locale/it/LC_MESSAGES/pgRouting-introduction.po
new file mode 100644
index 0000000..2f5927b
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgRouting-introduction.po
@@ -0,0 +1,222 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-introduction.rst:13
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:15
+msgid ""
+"pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL"
+" <http://postgresql.org>`_ geospatial database and adds routing and other "
+"network analysis functionality. A predecessor of pgRouting – pgDijkstra, "
+"written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was "
+"later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to "
+"pgRouting. The project is now supported and maintained by `Georepublic "
+"<http://georepublic.info>`_, `iMaptools <http://imaptools.com/>`__ and a "
+"broad user community."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:17
+msgid ""
+"pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ "
+"project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo"
+" Live <http://live.osgeo.org/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:23
+msgid "License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:25
+msgid "The following licenses can be found in pgRouting:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:30
+msgid "**License**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:32
+msgid "GNU General Public License, version 2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:33
+msgid ""
+"Most features of pgRouting are available under `GNU General Public License, "
+"version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:34
+msgid "Boost Software License - Version 1.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:35
+msgid ""
+"Some Boost extensions are available under `Boost Software License - Version "
+"1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:36
+msgid "MIT-X License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:37
+msgid ""
+"Some code contributed by iMaptools.com is available under MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:38
+msgid "Creative Commons Attribution-Share Alike 3.0 License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:39
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:41
+msgid ""
+"In general license information should be included in the header of each "
+"source file."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:45
+msgid "Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:48
+msgid "This Release Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:51
+#: ../../build/doc/pgRouting-introduction.rst:71
+msgid "Individuals (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:53
+msgid "Maoguang Wang, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:55
+msgid ""
+"And all the people that give us a little of their time making comments, "
+"finding issues, making pull requests etc."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:58
+#: ../../build/doc/pgRouting-introduction.rst:76
+msgid "Corporate Sponsors (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:60
+#: ../../build/doc/pgRouting-introduction.rst:78
+msgid ""
+"These are corporate entities that have contributed developer time, hosting, "
+"or direct monetary funding to the pgRouting project:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:62
+msgid "`Georepublic <https://georepublic.info/en/>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:63
+msgid ""
+"`Google Summer of Code <https://developers.google.com/open-source/gsoc/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:64
+msgid "`iMaptools <http://imaptools.com>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:65
+msgid "`Paragon Corporation <http://www.paragoncorporation.com/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:68
+msgid "Contributors Past & Present:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:73
+msgid ""
+"Akio Takubo, Andrea Nardelli, Anton Patrushev, Ashraf Hossain, Christian "
+"Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki,"
+" Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, "
+"Kai Behncke, Kishore Kumar, Ko Nagase, Manikata Kondeti, Mario Basa, Martin "
+"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Zia, Mukul Priya, Razequl"
+" Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Stephen Woodbridge, "
+"Sylvain Housseman, Sylvain Pasche, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:80
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:81
+msgid "CSIS (University of Tokyo)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:82
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:83
+msgid "Google Summer of Code"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:84
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:85
+msgid "Orkney"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:86
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:90
+msgid "More Information"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:92
+msgid ""
+"The latest software, documentation and news items are available at the "
+"pgRouting web site http://pgrouting.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:93
+msgid ""
+"PostgreSQL database server at the PostgreSQL main site "
+"http://www.postgresql.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:94
+msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:95
+msgid "Boost C++ source libraries at http://www.boost.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:96
+msgid ""
+"Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:97
+msgid ""
+"The Migration guide can be found at "
+"https://github.com/pgRouting/pgrouting/wiki/Migration-Guide."
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_KSP.po b/locale/it/LC_MESSAGES/pgr_KSP.po
new file mode 100644
index 0000000..2ace271
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_KSP.po
@@ -0,0 +1,402 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_KSP.rst:13
+msgid "pgr_KSP"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:18
+msgid "``pgr_KSP`` — Returns the \"K\" shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:28
+msgid "Signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:34
+msgid ""
+"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
+" number of shortest paths desired."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:52
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:64
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:73
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14 ../../build/doc/pgr_KSP.rst:110
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:80
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86 ../../build/doc/pgr_KSP.rst:87
+#: ../../build/doc/pgr_KSP.rst:107 ../../build/doc/pgr_KSP.rst:108
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "**k**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88 ../../build/doc/pgr_KSP.rst:105
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "The desiered number of paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89 ../../build/doc/pgr_KSP.rst:90
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid ""
+"(optional). When ``true`` returns all the paths stored in the process heap. "
+"Default is ``false`` which only returns ``k`` paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:93
+msgid ""
+"Roughly, if the shortest path has ``N`` edges, the heap will contain about "
+"than ``N * k`` paths for small value of ``k`` and ``k > 1``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:98
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:100
+msgid ""
+"Returns set of ``(seq, path_seq, path_id, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid ""
+"Relative position in the path of ``node`` and ``edge``. Has value **1** for "
+"the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid ""
+"Path identifier. The ordering of the paths For two paths i, j if i < j then "
+"agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "Identifier of the node in the path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110 ../../build/doc/pgr_KSP.rst:111
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:115
+msgid ""
+"During the transition to 3.0, because pgr_ksp version 2.0 doesn't have "
+"defined a directed flag nor a heap_path flag, when pgr_ksp is used with only"
+" one flag version 2.0 signature will be used."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:119
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:122
+msgid "Examples to handle the one flag to choose signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:124 ../../build/doc/pgr_KSP.rst:134
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:132
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:143
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:145
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:153
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:155
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:164
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:166
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:173
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:175
+msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:176
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:179
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:180
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:181
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_TSP.po b/locale/it/LC_MESSAGES/pgr_TSP.po
new file mode 100644
index 0000000..a9fecef
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_TSP.po
@@ -0,0 +1,224 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_TSP.rst:13
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:18
+msgid "``pgr_TSP`` - Returns a route that visits all the nodes exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:21
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:22
+msgid "Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:26
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:28
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:30
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:32
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of matrix cell contents. The "
+"matrix information must be symmetrical."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:58
+msgid "Basic Use"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:67
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:96
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:103
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:106
+msgid "Description of the Matrix Cell SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111 ../../build/doc/pgr_TSP.rst:112
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "Cost for going from start_vid to end_vid"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:116
+msgid "Can be Used with:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:118
+msgid ":ref:`pgr_dijkstraCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:119
+msgid ":ref:`pgr_withPointsCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:120
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:121
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:123
+msgid "To generate a symmetric matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:125
+msgid "directed := false."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:127
+msgid ""
+"If using directed := true, the resulting non symmetric matrix must be "
+"converted to symmetric by fixing the non symmetric values according to your "
+"application needs."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:145
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:147
+msgid "Using with points of interest."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:149
+msgid "To generate a symmetric matrix:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:151
+msgid ""
+"the **side** information of pointsOfInterset is ignored by not including it "
+"in the query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:152
+msgid "and **directed := false**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:158
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:163
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:165
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:166
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:167
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:170
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:171
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:172
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_aStar.po b/locale/it/LC_MESSAGES/pgr_aStar.po
new file mode 100644
index 0000000..4e2ccb4
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_aStar.po
@@ -0,0 +1,642 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStar.rst:13
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:18
+msgid "``pgr_aStar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:27
+msgid "pgr_astar(one to one) 2.0.0, Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:28
+msgid "pgr_astar(other signatures) 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:33
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:35
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:37
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:38
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:40
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:46
+msgid "The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:50
+msgid "The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:52
+msgid "When (x,y) coordinates for the same vertex identifier differ:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:54
+msgid "A random selection of the vertex's (x,y) coordinates is used."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:56
+msgid "Running time: :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:84
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:92
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:99
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:112
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:118
+msgid "Undirected using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:130
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:138 ../../build/doc/pgr_aStar.rst:165
+#: ../../build/doc/pgr_aStar.rst:194
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139 ../../build/doc/pgr_aStar.rst:166
+#: ../../build/doc/pgr_aStar.rst:195
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:141
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:144
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:145
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:157
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:166
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:168
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:171
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:172 ../../build/doc/pgr_aStar.rst:201
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:186
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:195
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:197
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:200
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:203
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:217
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13 ../../build/doc/pgr_aStar.rst:234
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:228
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:231
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234 ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235 ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:238
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:239
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:243
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:244
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:245
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:246
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:247
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:248
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250 ../../build/doc/pgr_aStar.rst:251
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:260
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:262
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:263
+msgid ":doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:264
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:265
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:268
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:269
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:270
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_aStarCost.po b/locale/it/LC_MESSAGES/pgr_aStarCost.po
new file mode 100644
index 0000000..41e1637
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_aStarCost.po
@@ -0,0 +1,528 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCost.rst:13
+msgid "pgr_aStarCost -- proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:18
+msgid ""
+"``pgr_aStarCost`` — Returns the aggregate cost shortest path using "
+":ref:`astar` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:26
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:53
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:60
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:72
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:78
+msgid "Setting a Heuristic"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:90
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99
+msgid ""
+"This signature finds a path from one ``start_vid`` to each ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:98 ../../build/doc/pgr_aStarCost.rst:125
+#: ../../build/doc/pgr_aStarCost.rst:154
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99 ../../build/doc/pgr_aStarCost.rst:126
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:101
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:104
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:105
+msgid ""
+"The extra ``end_vid`` column in the result is used to distinguish to which "
+"path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:117
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:126
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:128
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:131
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:132
+msgid ""
+"The extra ``start_vid`` column in the result is used to distinguish to "
+"which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:146
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:157
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:160
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:161
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:163
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:177
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_aStarCost.rst:194 ../../build/doc/pgr_aStarCost.rst:195
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:188
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:191
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:198
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:199
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:203
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:204
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:205
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:206
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:207
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:208
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210 ../../build/doc/pgr_aStarCost.rst:211
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. See "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:224
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:226
+msgid ":ref:`astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:227
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:228
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:229
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:232
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:233
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:234
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_aStarCostMatrix.po b/locale/it/LC_MESSAGES/pgr_aStarCostMatrix.po
new file mode 100644
index 0000000..5193921
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_aStarCostMatrix.po
@@ -0,0 +1,457 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:13
+msgid "pgr_aStarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:18
+msgid ""
+"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:33
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:37
+msgid "Using aStar algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:40
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:57
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:68
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:88
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:90
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "**vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "Array of vertices_identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:115
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:116
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:120
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:121
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:122
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:123
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:124
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:125
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:150
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:152
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:153
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:154
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:155
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_alphaShape.po b/locale/it/LC_MESSAGES/pgr_alphaShape.po
new file mode 100644
index 0000000..851cd18
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_alphaShape.po
@@ -0,0 +1,169 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_alphaShape.rst:13
+msgid "pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:21
+msgid "``pgr_alphaShape`` — Core function for alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:27
+msgid ""
+"Returns a table with (x, y) rows that describe the vertices of an alpha "
+"shape."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:50
+msgid "Returns a vertex record for each row:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:52
+msgid "x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:53
+msgid "y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:55
+msgid ""
+"If a result includes multiple outer/inner rings, return those with separator"
+" row (x=NULL and y=NULL)."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:58
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:59
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:60
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:61
+msgid ""
+"Supported to return multiple outer/inner ring coordinates with separator row"
+" (x=NULL and y=NULL) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:64
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:65
+msgid ""
+"PgRouting's alpha shape implementation has no way to control the order of "
+"the output points, so the actual output might different for the same input "
+"data. The first query, has the output ordered, he second query shows an "
+"example usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:70
+msgid "Example: the (ordered) results"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:76
+msgid "Example: calculating the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:77
+msgid "Steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:79
+msgid "Calculates the alpha shape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:80
+msgid "the :code:`ORDER BY` clause is not used."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:81
+msgid "constructs a polygon"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:82
+msgid "and computes the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:90
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:93
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:95
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:96
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:99
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:100
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:101
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_analyzeGraph.po b/locale/it/LC_MESSAGES/pgr_analyzeGraph.po
new file mode 100644
index 0000000..22237a6
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_analyzeGraph.po
@@ -0,0 +1,361 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeGraph.rst:13
+msgid "pgr_analyzeGraph"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:19
+msgid "``pgr_analyzeGraph`` — Analyzes the network topology."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:25
+#: ../../build/doc/pgr_analyzeGraph.rst:61
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:27
+#: ../../build/doc/pgr_analyzeGraph.rst:63
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:28
+#: ../../build/doc/pgr_analyzeGraph.rst:69
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:43
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:44
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:46
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:47
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:50
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:51
+msgid "The analyze graph function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:53
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:54
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:55
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:56
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:57
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:58
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:59
+msgid ""
+"``text`` Condition to select a subset or rows. Default value is ``true``"
+" to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:65
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:66
+msgid ""
+"Fills completely the ``cnt`` and ``chk`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:67
+msgid ""
+"Returns the analysis of the section of the network defined by "
+"``rows_where``"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:71
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:72
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:73
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:74
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:75
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:79
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:80
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:82
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:84
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:86
+msgid "``integer`` Indicator that the vertex might have a problem."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:87
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:88
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:89
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:92
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:93
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:96
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:99
+msgid "The simplest way to use pgr_analyzeGraph is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:106
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:111
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order: 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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:130
+#: ../../build/doc/pgr_analyzeGraph.rst:208
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:131
+#: ../../build/doc/pgr_analyzeGraph.rst:209
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:141
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:148
+#: ../../build/doc/pgr_analyzeGraph.rst:223
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:149
+msgid ""
+"Selecting rows based on the id. Displays the analysis a the section of the "
+"network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:155
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:161
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:172
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:174
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:183
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:184
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:219
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:224
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:234
+msgid ""
+"Selecting the rows WHERE the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:246
+msgid ""
+"Selecting the rows WHERE the geometry is near the place='myhouse' of the "
+"table ``othertable``. (note the use of quote_literal)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:263
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:390
+msgid "The examples use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:394
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:396
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:397
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:398
+msgid ""
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
+"vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:399
+msgid ""
+":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
+"edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:402
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:403
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:404
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_analyzeOneWay.po b/locale/it/LC_MESSAGES/pgr_analyzeOneWay.po
new file mode 100644
index 0000000..627da76
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_analyzeOneWay.po
@@ -0,0 +1,290 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:13
+msgid "pgr_analyzeOneway"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:19
+msgid ""
+"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:25
+msgid ""
+"This function analyzes oneway streets in a graph and identifies any flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:42
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:44
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:46
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:49
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:50
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:52
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:53
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:56
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:57
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:58
+msgid "``text[]`` source node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:59
+msgid "``text[]`` source node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:60
+msgid "``text[]`` target node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:61
+msgid "``text[]`` target node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:62
+msgid ""
+"``text`` oneway column name name of the network table. Default value is "
+"``oneway``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:63
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:64
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:65
+msgid ""
+"``boolean`` flag to treat oneway NULL values as bi-directional. Default "
+"value is ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:67
+msgid ""
+"It is strongly recommended to use the named notation. See "
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
+":ref:`pgr_createTopology <pgr_create_topology>` for examples."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:70
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:72
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:74
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:75
+msgid ""
+"Fills completely the ``ein`` and ``eout`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:77
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:79
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:80
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:81
+msgid "The names of source , target or oneway are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:83
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:86
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:87
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:89
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:91
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:92
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:93
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:94
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:95
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:96
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:100
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:101
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:105
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:129
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:135
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:136
+msgid ":ref:`analytics` for an overview of the analysis of a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:137
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:138
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_articulationPoints.po b/locale/it/LC_MESSAGES/pgr_articulationPoints.po
new file mode 100644
index 0000000..225a3d6
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_articulationPoints.po
@@ -0,0 +1,316 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_articulationPoints.rst:13
+msgid "pgr_articulationPoints - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:16
+msgid ""
+"``pgr_articulationPoints`` - Return the articulation points of an undirected"
+" graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:32
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph. This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:62
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:93
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_bdAstar.po b/locale/it/LC_MESSAGES/pgr_bdAstar.po
new file mode 100644
index 0000000..fdfaa05
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_bdAstar.po
@@ -0,0 +1,669 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstar.rst:13
+msgid "pgr_bdAstar"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:18
+msgid "``pgr_bdAstar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:27
+msgid "pgr_bdAstar(one to one) 2.0.0, Signature change on 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:28
+msgid "pgr_bdAstar(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:54
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:56
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:57
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:61
+msgid "Avaliability"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:62
+msgid "pgr_bdAstar(one to one) 2.0, signature change on 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:63
+msgid "pgr_bdAstar(other signatures) 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:84
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:85
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:86
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:89
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:102
+msgid "pgr_bdAstar One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+" allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:109
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:110 ../../build/doc/pgr_bdAstar.rst:137
+#: ../../build/doc/pgr_bdAstar.rst:162 ../../build/doc/pgr_bdAstar.rst:186
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111 ../../build/doc/pgr_bdAstar.rst:138
+#: ../../build/doc/pgr_bdAstar.rst:163 ../../build/doc/pgr_bdAstar.rst:187
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:114
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:116
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:127
+msgid "pgr_bdAstar One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:139
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:135 ../../build/doc/pgr_bdAstar.rst:160
+#: ../../build/doc/pgr_bdAstar.rst:184
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:136 ../../build/doc/pgr_bdAstar.rst:161
+#: ../../build/doc/pgr_bdAstar.rst:185
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:141
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:152
+msgid "pgr_bdAstar Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:163
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:165
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:176
+msgid "pgr_bdAstar Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:187
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:189
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:196
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:213
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:215
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:216
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:217
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:218
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:221
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:222
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:223
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_bdAstarCost.po b/locale/it/LC_MESSAGES/pgr_bdAstarCost.po
new file mode 100644
index 0000000..9b72e10
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_bdAstarCost.po
@@ -0,0 +1,594 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCost.rst:13
+msgid "pgr_bdAstarCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:18
+msgid "``pgr_bdAstarCost`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:26
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:46
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:48
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAstarCost`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:49
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:56
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:64
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:72
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:73
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:74
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:77
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:90
+msgid "pgr_bdAstarCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:128
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:97
+#: ../../build/doc/pgr_bdAstarCost.rst:124
+#: ../../build/doc/pgr_bdAstarCost.rst:149
+#: ../../build/doc/pgr_bdAstarCost.rst:173
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:98
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:99
+#: ../../build/doc/pgr_bdAstarCost.rst:126
+#: ../../build/doc/pgr_bdAstarCost.rst:151
+#: ../../build/doc/pgr_bdAstarCost.rst:175
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:127
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:103
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:105
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:116
+msgid "pgr_bdAstarCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:125
+#: ../../build/doc/pgr_bdAstarCost.rst:150
+#: ../../build/doc/pgr_bdAstarCost.rst:174
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:130
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:141
+msgid "pgr_bdAstarCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:154
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:165
+msgid "pgr_bdAstarCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:178
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:185
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:204
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:205
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:206
+msgid ""
+"`Migration Guide <https://github.com/cvvergara/pgrouting/wiki/Migration-"
+"Guide#pgr_bdastar>`_"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:207
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:208
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:211
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:212
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:213
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_bdAstarCostMatrix.po b/locale/it/LC_MESSAGES/pgr_bdAstarCostMatrix.po
new file mode 100644
index 0000000..c8738fa
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_bdAstarCostMatrix.po
@@ -0,0 +1,536 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:13
+msgid "pgr_bdAstarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:18
+msgid ""
+"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdAstar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:68
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:64
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:65
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:66
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:67
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:70
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:82
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:95
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:91
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:92
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:93
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:94
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:97
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:99
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:107
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:135
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_bdDijkstra.po b/locale/it/LC_MESSAGES/pgr_bdDijkstra.po
new file mode 100644
index 0000000..b05e40f
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_bdDijkstra.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstra.rst:13
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:15
+msgid ""
+"``pgr_bdDijkstra`` — Returns the shortest path(s) using Bidirectional "
+"Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:23
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:24
+msgid "pgr_bdDijkstra(one to one) 2.0.0, Signature changed 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:25
+msgid "pgr_bdDijkstra(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:60
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:67
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:80
+msgid "pgr_bdDijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:87
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:89
+#: ../../build/doc/pgr_bdDijkstra.rst:112
+#: ../../build/doc/pgr_bdDijkstra.rst:141
+#: ../../build/doc/pgr_bdDijkstra.rst:170
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:90
+#: ../../build/doc/pgr_bdDijkstra.rst:113
+#: ../../build/doc/pgr_bdDijkstra.rst:142
+#: ../../build/doc/pgr_bdDijkstra.rst:171
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:103
+msgid "pgr_bdDijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:110
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:115
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:118
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:119
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:132
+msgid "pgr_bdDijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:139
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:144
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:147
+#: ../../build/doc/pgr_bdDijkstra.rst:176
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:148
+#: ../../build/doc/pgr_bdDijkstra.rst:177
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:161
+msgid "pgr_bdDijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:173
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:179
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:190
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:208
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:210
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:211
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:212
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:213
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_bdDijkstraCost.po b/locale/it/LC_MESSAGES/pgr_bdDijkstraCost.po
new file mode 100644
index 0000000..0516529
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_bdDijkstraCost.po
@@ -0,0 +1,470 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:13
+msgid "pgr_bdDijkstraCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:15
+msgid ""
+"``pgr_bdDijkstraCost`` — Returns the shortest path(s)'s cost using "
+"Bidirectional Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:23
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:30
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:52
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:59
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:72
+msgid "pgr_bdDijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:80
+#: ../../build/doc/pgr_bdDijkstraCost.rst:102
+#: ../../build/doc/pgr_bdDijkstraCost.rst:130
+#: ../../build/doc/pgr_bdDijkstraCost.rst:158
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:94
+msgid "pgr_bdDijkstraCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:105
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:108
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:109
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:122
+msgid "pgr_bdDijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:133
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:136
+#: ../../build/doc/pgr_bdDijkstraCost.rst:164
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:137
+#: ../../build/doc/pgr_bdDijkstraCost.rst:165
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:150
+msgid "pgr_bdDijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:161
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:167
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:178
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:195
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:197
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:198
+msgid ":ref:`pgr_bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:199
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:200
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:203
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:204
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:205
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po b/locale/it/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
new file mode 100644
index 0000000..0b0a2ae
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
@@ -0,0 +1,382 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:13
+msgid "pgr_bdDijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_bdDijkstraCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdDijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:66
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:86
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:88
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:122
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:124
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:132
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:134
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:135
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:136
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:137
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_biconnectedComponents.po b/locale/it/LC_MESSAGES/pgr_biconnectedComponents.po
new file mode 100644
index 0000000..f4db188
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_biconnectedComponents.po
@@ -0,0 +1,349 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:13
+msgid "pgr_biconnectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:15
+msgid ""
+"``pgr_biconnectedComponents`` — Return the biconnected components of an "
+"undirected graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:31
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:36
+msgid "This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:43
+msgid "Components are described by edges"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:45
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:47
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:48
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:50
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:65
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:78
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:94
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:96
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:97
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:100
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:101
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:102
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_boykovKolmogorov.po b/locale/it/LC_MESSAGES/pgr_boykovKolmogorov.po
new file mode 100644
index 0000000..84d76a4
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_boykovKolmogorov.po
@@ -0,0 +1,435 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:14
+msgid "pgr_boykovKolmogorov - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:20
+msgid ""
+"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that "
+"maximizes the flow from the sources to the targets using Boykov Kolmogorov "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowBoykovKolmogorov"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:42
+msgid "Running time: Polynomial"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:61
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:63
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:84
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:103
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:105
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:124
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:126
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:141
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:159
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:161
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_pushRelabel <pgr_pushRelabel>`, "
+":ref:`pgr_EdmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:162
+msgid "http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_bridges.po b/locale/it/LC_MESSAGES/pgr_bridges.po
new file mode 100644
index 0000000..a80bf4e
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_bridges.po
@@ -0,0 +1,310 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bridges.rst:13
+msgid "pgr_bridges - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:16
+msgid "``pgr_bridges`` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:31
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components. This implementation can only be used with an"
+" undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:40
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:42
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:44
+msgid "Running time: :math:`O(E * (V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:47
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:59
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:72
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:88
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:90
+msgid "http://en.wikipedia.org/wiki/Bridge_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:91
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:94
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:95
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:96
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_connectedComponents.po b/locale/it/LC_MESSAGES/pgr_connectedComponents.po
new file mode 100644
index 0000000..2474096
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_connectedComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_connectedComponents.rst:13
+msgid "pgr_connectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:16
+msgid ""
+"``pgr_connectedComponents`` — Return the connected components of an "
+"undirected graph using a DFS-based approach. In particular, the algorithm "
+"implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:32
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other. This implementation can only be used with an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:39
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:41
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:45
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:46
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:48
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:63
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:76
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:92
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:94
+msgid "http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:95
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:98
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:99
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:100
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_contractGraph.po b/locale/it/LC_MESSAGES/pgr_contractGraph.po
new file mode 100644
index 0000000..8d27664
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_contractGraph.po
@@ -0,0 +1,488 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_contractGraph.rst:13
+msgid "pgr_contractGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:15
+msgid ""
+"``pgr_contractGraph`` — Performs graph contraction and returns the "
+"contracted vertices and edges."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:23
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:32
+msgid ""
+"Contraction reduces the size of the graph by removing some of the vertices "
+"and edges and, for example, might add edges that represent a sequence of "
+"original edges decreasing the total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:52
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:38
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:40
+msgid "There are two types of contraction methods used namely,"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:42
+msgid "Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:43
+msgid "Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:45
+msgid "The values returned include the added edges and contracted vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:47
+msgid "The returned values are ordered as follows:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:49
+msgid "column `id` ascending when type = `v`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:50
+msgid "column `id` descending when type = `e`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:55
+msgid "Signature Summary:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:57
+msgid "The pgr_contractGraph function has the following signatures:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:74
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:80
+msgid "Making a dead end contraction and a linear contraction."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:87
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:93
+msgid ""
+"Making a dead end contraction and a linear contraction and vertex 2 is "
+"forbidden from contraction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_contractGraph.rst:136
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+msgid "**contraction_order**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "Ordered contraction operations."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "1 = Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:114
+msgid "2 = Linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "**forbidden_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid ""
+"(optional). Identifiers of vertices forbidden from contraction. Default is "
+"an empty array."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid "**max_cycles**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid ""
+"(optional). Number of times the contraction operations on "
+"`contraction_order` will be performed. Default is 1."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:118
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:123
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:125
+msgid ""
+"RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:127
+msgid "The function returns a single row. The columns of the row are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "**type**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "Type of the `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "'v' when `id` is an identifier of a vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:135
+msgid "'e' when `id` is an identifier of an edge."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:136
+#: ../../build/doc/pgr_contractGraph.rst:146
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:143
+msgid "Identifier of:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:137
+msgid "the vertex when `type = 'v'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:139
+msgid "The vertex belongs to the edge_table passed as a parameter."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:140
+msgid "the edge when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:142
+msgid "The `id` is a decreasing sequence starting from **-1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:144
+msgid "Representing a pseudo `id` as is not incorporated into the edge_table."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "Array of contracted vertex identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid ""
+"Identifier of the source vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid ""
+"Identifier of the target vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid ""
+"Weight of the edge (`source`, `target`). Valid values when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:152
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:154
+msgid "Only dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:160
+msgid "Only linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:168
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:169
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:170
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_createTopology.po b/locale/it/LC_MESSAGES/pgr_createTopology.po
new file mode 100644
index 0000000..44a282e
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_createTopology.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createTopology.rst:13
+msgid "pgr_createTopology"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:18
+msgid ""
+"``pgr_createTopology`` — Builds a network topology based on the geometry "
+"information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:24
+#: ../../build/doc/pgr_createTopology.rst:72
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:26
+msgid ""
+"``OK`` after the network topology has been built and the vertices table "
+"created."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:27
+msgid "``FAIL`` when the network topology was not built due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:42
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:45
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:46
+msgid "The topology creation function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:48
+msgid "``text`` Network table name. (may contain the schema name AS well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:49
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:50
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:52
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:53
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:54
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:56
+msgid "``boolean`` Clean any previous topology. Default value is ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:60
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:62
+msgid "The ``source`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:63
+msgid "The ``target`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:65
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:67
+msgid "``id``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:68
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:69
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:70
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:74
+msgid "``OK`` after the network topology has been built."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:76
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:77
+msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:78
+msgid ""
+"Fills the source and target columns of the edge table referencing the ``id``"
+" of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:81
+msgid "``FAIL`` when the network topology was not built due to an error:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:83
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:84
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:85
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:86
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:90
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:91
+msgid ""
+"The vertices table is a requirement of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:93
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:95
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:96
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:97
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:98
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:99
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:100
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:103
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:104
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:107
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:110
+msgid "The simplest way to use pgr_createTopology is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:118
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:119
+msgid "We get the same result AS the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``id`` of the table ``ege_table`` is passed to "
+"the function as the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``the_geom`` is passed to the function as the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:136
+#: ../../build/doc/pgr_createTopology.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:137
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:153
+#: ../../build/doc/pgr_createTopology.rst:219
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:154
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:160
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with ``id "
+"= 5``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:166
+#: ../../build/doc/pgr_createTopology.rst:227
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:176
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:178
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:185
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:186
+msgid ""
+"The arguments need to be given in the order described in the parameters."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:188
+msgid ""
+"Note that this example uses clean flag. So it recreates the whole vertices "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropiriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``gid`` of the table ``mytable`` is passed to "
+"the function AS the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``mygeom`` is passed to the function AS the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:206
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:220
+msgid "Based on id:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:235
+msgid "Examples with full output"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:237
+msgid ""
+"This example start a clean topology, with 5 edges, and then its incremented "
+"to the rest of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:243
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:247
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:249
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:250
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:251
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:254
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:255
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:256
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_createVerticesTable.po b/locale/it/LC_MESSAGES/pgr_createVerticesTable.po
new file mode 100644
index 0000000..191059e
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_createVerticesTable.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createVerticesTable.rst:13
+msgid "pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:18
+msgid ""
+"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:24
+#: ../../build/doc/pgr_createVerticesTable.rst:62
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:26
+#: ../../build/doc/pgr_createVerticesTable.rst:64
+msgid "``OK`` after the vertices table has been reconstructed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:27
+#: ../../build/doc/pgr_createVerticesTable.rst:69
+msgid ""
+"``FAIL`` when the vertices table was not reconstructed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:43
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:44
+msgid ""
+"The reconstruction of the vertices table function accepts the following "
+"parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:46
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:47
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:48
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:49
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:50
+msgid ""
+"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
+"to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:54
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:56
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:58
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:59
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:60
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:66
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:67
+msgid ""
+"Fills ``id`` and ``the_geom`` columns of the vertices table based on the "
+"source and target columns of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:71
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:72
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:73
+msgid "The names of source, target are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:74
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:77
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:78
+msgid ""
+"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:80
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:82
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:83
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:84
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:86
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:87
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:90
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:91
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:94
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:97
+msgid "The simplest way to use pgr_createVerticesTable is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:104
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:109
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:111
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:128
+#: ../../build/doc/pgr_createVerticesTable.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:129
+#: ../../build/doc/pgr_createVerticesTable.rst:206
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:139
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:146
+#: ../../build/doc/pgr_createVerticesTable.rst:220
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:147
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:153
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:159
+#: ../../build/doc/pgr_createVerticesTable.rst:243
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:170
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:172
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:180
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:181
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:0
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:216
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:221
+msgid "Selecting rows based on the gid."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:231
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``gid`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:282
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:286
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:288
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:289
+msgid ""
+":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
+"on the geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:290
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:291
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:294
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:295
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:296
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_dijkstra.po b/locale/it/LC_MESSAGES/pgr_dijkstra.po
new file mode 100644
index 0000000..45cbd10
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_dijkstra.po
@@ -0,0 +1,621 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid ""
+"``pgr_dijkstra`` — Returns the shortest path(s) using Dijkstra algorithm. In"
+" particular, the Dijkstra algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:24
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:25
+msgid "pgr_dijkstra(one to one) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:26
+msgid "pgr_dijkstra(other signatures) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:31
+msgid ""
+"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
+"in 1956. It is a graph search algorithm that solves the shortest path "
+"problem for a graph with non-negative edge path costs, producing a shortest "
+"path from a starting vertex (``start_vid``) to an ending vertex "
+"(``end_vid``). This implementation can be used with a directed graph and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:60
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:46
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:50
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:52
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:54
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:56
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:57
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:59
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:63
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:78
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:84
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:91
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:104
+msgid "pgr_dijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:113 ../../build/doc/pgr_dijkstra.rst:136
+#: ../../build/doc/pgr_dijkstra.rst:167 ../../build/doc/pgr_dijkstra.rst:197
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114 ../../build/doc/pgr_dijkstra.rst:137
+#: ../../build/doc/pgr_dijkstra.rst:168 ../../build/doc/pgr_dijkstra.rst:198
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:127
+msgid "pgr_dijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:137
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:139
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:142
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:143
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:158
+msgid "pgr_dijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:170
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:173 ../../build/doc/pgr_dijkstra.rst:203
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:174 ../../build/doc/pgr_dijkstra.rst:204
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:188
+msgid "pgr_dijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:198
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:200
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:206
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:215
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:225
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231 ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232 ../../build/doc/pgr_dijkstra.rst:234
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:236
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:248
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:250
+msgid ""
+"The examples of this section are based on the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:252
+msgid ""
+"The examples include combinations from starting vertices 2 and 11 to ending "
+"vertices 3 and 5 in a directed and undirected graph with and with out "
+"reverse_cost."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:256
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:258
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:267
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:269
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:277
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:279
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:287
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:289
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:297
+msgid "Equvalences between signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:299
+msgid ""
+"For queries marked as ``directed`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:301 ../../build/doc/pgr_dijkstra.rst:313
+msgid "The examples in this section use the following:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:303
+msgid ":ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:311
+msgid ""
+"For queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:315
+msgid ":ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:324
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:326
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:327
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:330
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:331
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:332
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_dijkstraCost.po b/locale/it/LC_MESSAGES/pgr_dijkstraCost.po
new file mode 100644
index 0000000..a9193fb
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_dijkstraCost.po
@@ -0,0 +1,473 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCost.rst:13
+msgid "pgr_dijkstraCost"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:19
+msgid "``pgr_dijkstraCost``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:21
+msgid ""
+"Using Dijkstra algorithm implemented by Boost.Graph, and extract only the "
+"aggregate cost of the shortest path(s) found, for the combination of "
+"vertices given."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:27
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:30
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:31
+msgid "pgr_dijkstraCost(all signatures) 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:33
+msgid ""
+"The ``pgr_dijkstraCost`` algorithm, is a good choice to calculate the sum of"
+" the costs of the shortest path for a subset of pairs of nodes of the graph."
+" We make use of the Boost's implementation of dijkstra which runs in "
+":math:`O(V \\log V + E)` time."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:42
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:43
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:44
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:45
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:47
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:51
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:55
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:57
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:60
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:62
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:64
+msgid "Any duplicated value in the `start_vids` or `end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:66
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:68
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:69
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:74
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:89
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:95
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:97
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:106
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:117
+msgid "pgr_dijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:121
+#: ../../build/doc/pgr_dijkstraCost.rst:150
+#: ../../build/doc/pgr_dijkstraCost.rst:176
+#: ../../build/doc/pgr_dijkstraCost.rst:201
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+#: ../../build/doc/pgr_dijkstraCost.rst:151
+#: ../../build/doc/pgr_dijkstraCost.rst:177
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:141
+msgid "pgr_dijkstraCost One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:152
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:167
+msgid "pgr_dijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:178
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:192
+msgid "pgr_dijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:213
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:229
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:231
+msgid "Demonstration of repeated values are ignored, and result is sorted."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:237
+msgid "Making `start_vids` the same as `end_vids`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:246
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:248
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:249
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:252
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:253
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:254
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_dijkstraCostMatrix.po b/locale/it/LC_MESSAGES/pgr_dijkstraCostMatrix.po
new file mode 100644
index 0000000..95cf121
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_dijkstraCostMatrix.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:13
+msgid "pgr_dijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_dijkstraCostMatrix`` - Calculates the a cost matrix using "
+"pgr_dijktras."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:32
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:36
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:56
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:67
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:79
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:87
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:89
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:97
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:135
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_dijkstraVia.po b/locale/it/LC_MESSAGES/pgr_dijkstraVia.po
new file mode 100644
index 0000000..0a3c5f1
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_dijkstraVia.po
@@ -0,0 +1,480 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraVia.rst:13
+msgid "pgr_dijkstraVia - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:19
+msgid ""
+"``pgr_dijkstraVia`` — Using dijkstra algorithm, it finds the route that goes"
+" through a list of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:30
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:34
+msgid ""
+"Given a list of vertices and a graph, this function is equivalent to finding"
+" the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all"
+" :math:`i < size\\_of(vertex_via)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:37
+msgid "The paths represents the sections of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:39
+msgid "This is a proposed function"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:42
+msgid "Signatrue Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:59
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:67
+msgid "Find the route that visits the vertices 1 3 9 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:77
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:86
+msgid ""
+"Find the route that visits the vertices 1 3 9 in that order on an "
+"undirected graph, avoiding U-turns when possible"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:94
+msgid "Description of the Signature"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+#: ../../build/doc/pgr_dijkstraVia.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "Array of vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid ""
+"(optional) ignores if a subsection of the route is missing and returns "
+"everything it found Default is true (is directed). When set to false the "
+"graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:119
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:121
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "Sequential value starting from 1."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "**path_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "Identifier of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "Sequential value starting from 1 for the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "Identifier of the node in the path from start_vid to end_vid."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid ""
+"Identifier of the edge used to go from node to the next node in the path "
+"sequence. -1 for the last node of the path. -2 for the last node of the "
+"route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the route "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "Total cost from ``start_vid`` to ``end_vid`` of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "**route_agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid ""
+"Total cost from ``start_vid`` of ``path_pid = 1`` to ``end_vid`` of the "
+"current ``path_pid`` ."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:142
+msgid "Find the route that visits the vertices 1 5 3 9 4 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:148
+msgid "What's the aggregate cost of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:154
+msgid ""
+"What's the route's aggregate cost of the route at the end of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:160
+msgid "How are the nodes visited in the route?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:166
+msgid ""
+"What are the aggregate costs of the route when the visited vertices are "
+"reached?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:172
+msgid ""
+"show the route's seq and aggregate cost and a status of \"passes in front\" "
+"or \"visits\" node 9"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:179
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:181
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:182
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:185
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:186
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:187
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_drivingDistance.po b/locale/it/LC_MESSAGES/pgr_drivingDistance.po
new file mode 100644
index 0000000..77f7b8e
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_drivingDistance.po
@@ -0,0 +1,391 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_drivingDistance.rst:13
+msgid "pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:19
+msgid ""
+"``pgr_drivingDistance`` - Returns the driving distance from a start node."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:28
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:29
+msgid "pgr_drivingDistance(single vertex) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:30
+msgid "pgr_drivingDistance(multiple vertices) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:35
+msgid ""
+"Using the Dijkstra algorithm, extracts all the nodes that have costs less "
+"than or equal to the value ``distance``. The edges extracted will conform to"
+" the corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:57
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:70
+msgid "Driving Distance From A Single Starting Vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:82
+msgid "Driving Distance From Multiple Starting Vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:90
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:98
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:123
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "Array of identifiers of the starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+#: ../../build/doc/pgr_drivingDistance.rst:125
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "Upper limit for the inclusion of the node in the result."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid ""
+"(optional). When ``true`` the node will only appear in the closest "
+"``start_vid`` list. Default is ``false`` which resembles several calls "
+"using the single starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:114
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:116
+msgid "Returns set of ``(seq [, start_v], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid ""
+"Identifier of the node in the path within the limits from ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid ""
+"Identifier of the edge used to arrive to ``node``. ``0`` when the ``node`` "
+"is the ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:132
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:135
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:137
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:144
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:146
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:154
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:156
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:165
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:167
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:177
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:178
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:179
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_edgeDisjointPaths.po b/locale/it/LC_MESSAGES/pgr_edgeDisjointPaths.po
new file mode 100644
index 0000000..54a0ffe
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_edgeDisjointPaths.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:14
+msgid "pgr_edgeDisjointPaths - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:19
+msgid ""
+"``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:28
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:36
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:38
+msgid ""
+"Calculates the edge disjoint paths between two groups of vertices. Utilizes "
+"underlying maximum flow algorithms to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:42
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "The main characterics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:45
+msgid "Calculates the edge disjoint paths between any two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:46
+msgid ""
+"Returns EMPTY SET when source and destination are the same, or cannot be "
+"reached."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:47
+msgid "The graph can be directed or undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:48
+msgid "One to many, many to one, many to many versions are also supported."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "Uses :ref:`pgr_boykovKolmogorov` to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:52
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:67
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:73
+msgid "Minimal use"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:81
+msgid ""
+"The minimal use is for a **directed** graph from one ``start_vid`` to one "
+"``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:93
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:98
+msgid ""
+"This signature finds the set of dijoint paths from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:96
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:120
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:149
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:175
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:97
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:121
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:150
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:176
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:117
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:126
+msgid ""
+"This signature finds the sset of disjoint paths from the ``start_vid`` to "
+"each one of the ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:122
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:151
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:177
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_edgeDisjointPaths`."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:123
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:146
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to the ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to each one of the ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:195
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:212
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:214
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:217
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:218
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:219
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_edmondsKarp.po b/locale/it/LC_MESSAGES/pgr_edmondsKarp.po
new file mode 100644
index 0000000..8523277
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_edmondsKarp.po
@@ -0,0 +1,438 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edmondsKarp.rst:14
+msgid "pgr_edmondsKarp - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:20
+msgid ""
+"``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowEdmondsKarp"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:42
+msgid "Running time: :math:`O( V * E ^ 2)`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:64
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:83
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:85
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:104
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:106
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:125
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:127
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:142
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:160
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:162
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_PushRelabel <pgr_pushRelabel>`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:163
+msgid "http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:164
+msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:167
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:168
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:169
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_eucledianTSP.po b/locale/it/LC_MESSAGES/pgr_eucledianTSP.po
new file mode 100644
index 0000000..5b9be5e
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_eucledianTSP.po
@@ -0,0 +1,187 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_eucledianTSP.rst:13
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:18
+msgid ""
+"``pgr_eucledianTSP`` - Returns a route that visits all the coordinates pairs"
+" exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:22
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:24
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:26
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:28
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:30
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of coordinates."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:33
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:48
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:54
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:63
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:75
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:90
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:99
+msgid "Description of the coordinates SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "Identifier of the coordinate. (optional)"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "X value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "Y value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:110
+msgid ""
+"When the value of **id** is not given then the coordinates will receive an "
+"**id** starting from 1, in the order given."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:125
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:127
+msgid "Skipping the Simulated Annealing & showing some process information"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:135
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:139
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:140
+msgid "New in version 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:145
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:147
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:148
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:149
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:152
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:153
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:154
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_floydWarshall.po b/locale/it/LC_MESSAGES/pgr_floydWarshall.po
new file mode 100644
index 0000000..4fe9ece
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_floydWarshall.po
@@ -0,0 +1,348 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_floydWarshall.rst:13
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:18
+msgid ""
+"``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path "
+"for each pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:31
+msgid ""
+"The Floyd-Warshall algorithm, also known as Floyd's algorithm, is a good "
+"choice to calculate the sum of the costs of the shortest path for each pair "
+"of nodes in the graph, for *dense graphs*. We make use of the Boost's "
+"implementation which runs in :math:`\\Theta(V^3)` time,"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:41
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:42
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:43
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:44
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:47
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:49
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:52
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:54
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:56
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "**Recommended, use a bounding box of no more than 3500 edges.**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:70
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:77
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:84
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:95
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:103
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:110
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:118
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:120
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:123
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:131
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:133
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:148
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:149
+msgid "Re-design of pgr_apspWarshall in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:152
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:154
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:155
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:156
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_gsoc_vrppdtw.po b/locale/it/LC_MESSAGES/pgr_gsoc_vrppdtw.po
new file mode 100644
index 0000000..7705842
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_gsoc_vrppdtw.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:13
+msgid "pgr_gsoc_vrppdtw - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:19
+msgid ""
+"``pgr_gsoc_vrppdtw`` — Returns a solution for `Pick and Delivery` with `time"
+" windows` Vehicle Routing Problem"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:27
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:36
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:43
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:52
+msgid "Example: Show the id1"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:59
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:62
+msgid "Description of the sql query"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "Identifier of the customer."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:69
+msgid "A value of ``0`` identifies the starting location"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "``X`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "``Y`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "**demand**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "How much is added / removed from the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:75
+msgid "Negative value is a delivery,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:76
+msgid "Positive value is a pickup,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "**openTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "The time relative to 0, when the customer opens."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "**closeTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "The time relative to 0, when the customer closes."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "**serviceTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "The duration of the loading / unloading."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid "**pIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid ""
+"Value used when the current customer is a Delivery to find the corresponding"
+" Pickup"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "**dIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid ""
+"Value used when the current customer is a Pickup to find the corresponding "
+"Delivery"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:86
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "**vehicle_num**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "Maximum number of vehicles in the result. (currently is ignored)"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "Capacity of the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:97
+msgid "Description of the result"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:99
+msgid "RETURNS SET OF pgr_costResult[]:"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "**id1**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "Current vehicle identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "**id2**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "Customer identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid ""
+"Previous ``cost`` plus `travel time` plus `wait time` plus `service time`."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:108
+msgid ""
+"when ``id2 = 0`` for the second time for the same ``id1``, then has the "
+"total time for the current ``id1``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:114
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:117
+msgid "Example: Total number of rows returned"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:123
+msgid "Example: Results for only id1 values: 1, 5, and 9"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:130
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:132
+msgid "The examples use :ref:`pickDeliverData`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:133
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:136
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:137
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:138
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_johnson.po b/locale/it/LC_MESSAGES/pgr_johnson.po
new file mode 100644
index 0000000..d0ef00b
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_johnson.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_johnson.rst:13
+msgid "pgr_johnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:18
+msgid ""
+"``pgr_johnson`` - Returns the sum of the costs of the shortest path for each"
+" pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspJohnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:31
+msgid ""
+"The Johnson algorithm, is a good choice to calculate the sum of the costs of"
+" the shortest path for each pair of nodes in the graph, for *sparse graphs*."
+" It usees the Boost's implementation which runs in :math:`O(V E \\log V)` "
+"time,"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:57
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:40
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:41
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:42
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:43
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:46
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:48
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:51
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:53
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:55
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:60
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:69
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:83
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:94
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:102
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:135
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:117
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:119
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:122
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:130
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:132
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137 ../../build/doc/pgr_johnson.rst:138
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:147
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:148
+msgid "Re-design of pgr_apspJohnson in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:153
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:154
+msgid ""
+"`Boost Johnson "
+"<http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html>`_ "
+"algorithm implementation."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:155
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_labelGraph.po b/locale/it/LC_MESSAGES/pgr_labelGraph.po
new file mode 100644
index 0000000..e5d6532
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_labelGraph.po
@@ -0,0 +1,233 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_labelGraph.rst:15
+msgid "pgr_labelGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:18
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:20
+msgid ""
+"``pgr_labelGraph`` — Locates and labels sub-networks within a network which "
+"are not topologically connected."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:30
+msgid ""
+"Must be run after ``pgr_createTopology()``. No use of ``geometry`` column. "
+"Only ``id``, ``source`` and ``target`` columns are required."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:32
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:34
+msgid ""
+"``OK`` when a column with provided name has been generated and populated "
+"successfully. All connected edges will have unique similar integer values. "
+"In case of ``rows_where`` condition, non participating rows will have -1 "
+"integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:35
+msgid ""
+"``FAIL`` when the processing cannot be finished due to some error. Notice "
+"will be thrown accordingly."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:36
+msgid ""
+"``rows_where condition generated 0 rows`` when passed SQL condition has not "
+"been fulfilled by any row."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:48
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:50
+msgid ""
+"A network behind any routing query may consist of sub-networks completely "
+"isolated from each other. Possible reasons could be:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:52
+msgid "An island with no bridge connecting to the mainland."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:53
+msgid ""
+"An edge or mesh of edges failed to connect to other networks because of "
+"human negligence during data generation."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:54
+msgid "The data is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:55
+msgid "Topology creation failed to succeed."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:57
+msgid ""
+"pgr_labelGraph() will create an integer column (with the name provided by "
+"the user) and will assign same integer values to all those edges in the "
+"network which are connected topologically. Thus better analysis regarding "
+"network structure is possible. In case of ``rows_where`` condition, non "
+"participating rows will have -1 integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:59
+msgid ""
+"Prerequisites: Must run ``pgr_createTopology()`` in order to generate "
+"``source`` and ``target`` columns. Primary key column ``id`` should also be "
+"there in the network table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:62
+msgid "Function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:64
+msgid "``text`` Network table name, with optional schema name."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:65
+msgid ""
+"``text`` Primary key column name of the network table. Default is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:66
+msgid ""
+"``text`` Source column name generated after ``pgr_createTopology()``. "
+"Default is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:67
+msgid ""
+"``text`` Target column name generated after ``pgr_createTopology()``. "
+"Default is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:68
+msgid ""
+"``text`` Column name which will hold the integer labels for each sub-graph. "
+"Default is ``subgraph``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:69
+msgid ""
+"``text`` The SQL where condition. Default is ``true``, means the processing "
+"will be done on the whole table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:75
+msgid "Example Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:77
+msgid "The sample data, has 3 subgraphs."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:87
+msgid ""
+"`pgr_createTopology "
+"<https://github.com/Zia-/pgrouting/blob/develop/src/common/sql/pgrouting_topology.sql>`_"
+" to create the topology of a table based on its geometry and tolerance "
+"value."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_lineGraph.po b/locale/it/LC_MESSAGES/pgr_lineGraph.po
new file mode 100644
index 0000000..7b69209
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_lineGraph.po
@@ -0,0 +1,387 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_lineGraph.rst:13
+msgid "pgr_lineGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:15
+msgid ""
+"``pgr_lineGraph`` — Transforms a given graph into its corresponding edge-"
+"based graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:31
+msgid "Given a graph G, its line graph L(G) is a graph such that:-"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:33
+msgid "each vertex of L(G) represents an edge of G"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:34
+msgid ""
+"two vertices of L(G) are adjacent if and only if their corresponding edges "
+"share a common endpoint in G."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:36
+msgid ""
+"The following figures show a graph (left, with blue vertices) and its Line "
+"Graph (right, with green vertices)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:39
+msgid "|first|"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:55
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:61
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:68
+msgid "The minimal signature is for a **directed** graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "This signature returns the Line Graph of the current graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:89
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:101
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:109
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:116
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:120
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:122
+msgid "RETURNS SETOF (seq, source, target, cost, reverse_cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129 ../../build/doc/pgr_lineGraph.rst:133
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "Identifier of the source vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:131
+msgid "When `negative`: the source is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "Identifier of the target vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:135
+msgid "When `negative`: the target is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137 ../../build/doc/pgr_lineGraph.rst:141
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "Weight of the edge (`source`, `target`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:139
+msgid ""
+"When `negative`: edge (`source`, `target`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "Weight of the edge (`target`, `source`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:143
+msgid ""
+"When `negative`: edge (`target`, `source`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:147
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:154
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:156
+msgid "https://en.wikipedia.org/wiki/Line_graph"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:157
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:160
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:161
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:162
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_maxCardinalityMatch.po b/locale/it/LC_MESSAGES/pgr_maxCardinalityMatch.po
new file mode 100644
index 0000000..4c6c884
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_maxCardinalityMatch.po
@@ -0,0 +1,357 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:13
+msgid "pgr_maxCardinalityMatch - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:19
+msgid ""
+"``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a"
+" graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:32
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:33
+msgid "Renamed 2.5.0, Previous name pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:34
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:39
+msgid ""
+"A matching or independent edge set in a graph is a set of edges without "
+"common vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:40
+msgid ""
+"A maximum matching is a matching that contains the largest possible number "
+"of edges."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:42
+msgid "There may be many maximum matchings."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:43
+msgid "Calculates **one** possible maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:45
+msgid "The graph can be **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:46
+msgid "Running time: :math:`O( E*V * \\alpha(E,V))`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:48
+msgid ":math:`\\alpha(E,V)` is the inverse of the `Ackermann function`_."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:54
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:71
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:78
+msgid ""
+"The minimal use calculates one possible maximum cardinality matching on a "
+"**directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:90
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:98
+msgid ""
+"The complete signature calculates one possible maximum cardinality matching."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:113
+msgid "Description of the SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:115
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid "**going**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "``ANY-NUMERIC``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid ""
+"A positive value represents the existence of the edge (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "**coming**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid ""
+"A positive value represents the existence of the edge (target, source)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:127
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:129
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:130
+msgid "SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:133
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "(optional) Determines the type of the graph. Default TRUE."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:143
+msgid "Description of the Result"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "Identifier of the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "Identifier of the second end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:155
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:157
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:158
+msgid "http://www.boost.org/libs/graph/doc/maximum_matching.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:159
+msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:160
+msgid "https://en.wikipedia.org/wiki/Ackermann_function"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:163
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:164
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:165
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_maxFlow.po b/locale/it/LC_MESSAGES/pgr_maxFlow.po
new file mode 100644
index 0000000..0327a6f
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_maxFlow.po
@@ -0,0 +1,354 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "pgr_maxFlow - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:19
+msgid ""
+"``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the "
+"source(s) to the targets(s) using the Push Relabel algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:28
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:36
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:37
+msgid ""
+"When the maximum flow is 0 then there is no flow and **0** is returned."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:39
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:41
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:42
+msgid "Uses the :ref:`pgr_pushRelabel <pgr_pushRelabel>` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:44
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:47
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:64
+msgid "Calculates the maximum flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:84
+msgid "Calculates the maximum flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:104
+msgid "Calculates the maximum flow from all the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:122
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:124
+msgid ""
+"Calculates the maximum flow from all of the `sources` to all of the "
+"`targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:138
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:149
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155 ../../build/doc/pgr_maxFlow.rst:157
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156 ../../build/doc/pgr_maxFlow.rst:158
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:166
+msgid "Description of the return value"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "Maximum flow possible from the source(s) to the target(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:177
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:178
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:179
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_nodeNetwork.po b/locale/it/LC_MESSAGES/pgr_nodeNetwork.po
new file mode 100644
index 0000000..b9b92db
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_nodeNetwork.po
@@ -0,0 +1,353 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_nodeNetwork.rst:13
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:18
+msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:20
+msgid "Nicolas Ribot"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:21
+msgid "Nicolas Ribot, The source code is released under the MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:27
+msgid ""
+"The function reads edges from a not \"noded\" network table and writes the "
+"\"noded\" edges into a new table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:39
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:41
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:43
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:45
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:47
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:49
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:50
+msgid "``float8`` tolerance for coincident points (in projection unit)dd"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:52
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:53
+msgid "``text`` Suffix for the new table's. Default value is ``noded``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:55
+msgid "The output table will have for ``edge_table_noded``"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:57
+msgid "``bigint`` Unique identifier for the table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:58
+msgid "``bigint`` Identifier of the edge in original table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:59
+msgid "``integer`` Segment number of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:60
+msgid ""
+"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:61
+msgid ""
+"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:62
+msgid "``geometry`` Geometry column of the noded network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:65
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:66
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:70
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:72
+msgid "Let's create the topology for the data in :doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:90
+msgid "Now we can analyze the network."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:114
+msgid ""
+"The analysis tell us that the network has a gap and an intersection. We try "
+"to fix the problem using:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:136
+msgid ""
+"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
+"segmented"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:166
+msgid "We can create the topology of the new network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:184
+msgid "Now let's analyze the new topology"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:210
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:243
+msgid "Comparing the results"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:245
+msgid "Comparing with the Analysis in the original edge_table, we see that."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "Before"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "After"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "Table name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table_noded"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "All original fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Has only basic fields to do a topology analysis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1,6,24"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:255
+msgid "Edges with 2 dead ends 17,18"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:257
+msgid ""
+"Edge 17's right node is a dead end because there is no other edge sharing "
+"that same node. (cnt=1)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "No Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:263
+msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid "Gaps"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"There is a gap between edge 17 and 14 because edge 14 is near to the right "
+"node of edge 17"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
+"tolerance value was taken in account"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Intersections"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Edges 13 and 18 were intersecting"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid ""
+"Edges were segmented, So, now in the interection's point there is a node and"
+" the following edges share it: 13-1 13-2 18-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:274
+msgid ""
+"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
+"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
+"with tho following steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:276
+msgid ""
+"Add a column old_id into edge_table, this column is going to keep track the "
+"id of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:277
+msgid ""
+"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:290
+msgid "We recreate the topology:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:310
+msgid ""
+"To get the same analysis results as the topology of edge_table_noded, we do "
+"the following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:337
+msgid ""
+"To get the same analysis results as the original edge_table, we do the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:362
+msgid ""
+"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
+"is an under pass and there is also a street level juction, and the same "
+"happens with edges 17 and 13."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:389
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:391
+msgid ""
+":ref:`topology` for an overview of a topology for routing algorithms. "
+":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
+":ref:`pgr_create_topology` to create a topology based on the geometry. "
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:397
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:398
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:399
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_pointsAsPolygon.po b/locale/it/LC_MESSAGES/pgr_pointsAsPolygon.po
new file mode 100644
index 0000000..356d85b
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_pointsAsPolygon.po
@@ -0,0 +1,124 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:13
+msgid "pgr_pointsAsPolygon"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:21
+msgid ""
+"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:27
+msgid "Returns the alpha shape as (multi)polygon geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:50
+msgid "Returns a (multi)polygon geometry (with holes)."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:54
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:55
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:56
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:57
+msgid ""
+"Supported to return a (multi)polygon geometry (with holes) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:61
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:62
+msgid ""
+"In the following query there is no way to control which point in the polygon"
+" is the first in the list, so you may get similar but different results than"
+" the following which are also correct."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:69
+msgid "The query use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:73
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:75
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:76
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:79
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:80
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:81
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_pushRelabel.po b/locale/it/LC_MESSAGES/pgr_pushRelabel.po
new file mode 100644
index 0000000..13e8a04
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_pushRelabel.po
@@ -0,0 +1,439 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pushRelabel.rst:14
+msgid "pgr_pushRelabel - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:20
+msgid ""
+"``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowPushRelabel"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:41
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:60
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:62
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:81
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:83
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:104
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:123
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:125
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:140
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:158
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:160
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_edmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:161
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:162
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_strongComponents.po b/locale/it/LC_MESSAGES/pgr_strongComponents.po
new file mode 100644
index 0000000..6f6c0cf
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_strongComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_strongComponents.rst:13
+msgid "pgr_strongComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:15
+msgid ""
+"``pgr_strongComponents`` — Return the strongly connected components of a "
+"directed graph using Tarjan's algorithm based on DFS. In particular, the "
+"algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:31
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other. This implementation can only be used "
+"with a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:40
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:42
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:44
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:62
+msgid "The signature is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:93
+msgid "http://en.wikipedia.org/wiki/Strongly_connected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_trsp.po b/locale/it/LC_MESSAGES/pgr_trsp.po
new file mode 100644
index 0000000..108f0f8
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_trsp.po
@@ -0,0 +1,281 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_trsp.rst:13
+msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:22
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:24
+msgid ""
+"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:30
+msgid ""
+"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
+"can optionally take into account complicated turn restrictions like those "
+"found in real world navigable road networks. Performamnce wise it is nearly "
+"as fast as the A* search but has many additional features like it works with"
+" edges rather than the nodes of the network. Returns a set of "
+":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
+"make up a path."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:57
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:59
+msgid ""
+"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
+"shooting star in that you can specify turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:61
+msgid ""
+"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
+"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
+"This provides an easy way of adding turn restrictions to a road network by "
+"placing them in a separate table."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:64 ../../build/doc/pgr_trsp.rst:120
+msgid ""
+"a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:71 ../../build/doc/pgr_trsp.rst:127
+msgid "``int4`` identifier of the edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:72 ../../build/doc/pgr_trsp.rst:128
+msgid "``int4`` identifier of the source vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:73 ../../build/doc/pgr_trsp.rst:129
+msgid "``int4`` identifier of the target vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:74 ../../build/doc/pgr_trsp.rst:130
+msgid ""
+"``float8`` value, of the edge traversal cost. A negative cost will prevent "
+"the edge from being inserted in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:75 ../../build/doc/pgr_trsp.rst:131
+msgid ""
+"(optional) the cost for the reverse traversal of the edge. This is only used"
+" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
+"above remark about negative costs)."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:77
+msgid "``int4`` **NODE id** of the start point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:78
+msgid "``int4`` **NODE id** of the end point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:79 ../../build/doc/pgr_trsp.rst:134
+msgid "``true`` if the graph is directed"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:80 ../../build/doc/pgr_trsp.rst:135
+msgid ""
+"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
+"will be used for the cost of the traversal of the edge in the opposite "
+"direction."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:82 ../../build/doc/pgr_trsp.rst:137
+msgid ""
+"(optional) a SQL query, which should return a set of rows with the following"
+" columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:88 ../../build/doc/pgr_trsp.rst:143
+msgid "``float8`` turn restriction cost"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:89 ../../build/doc/pgr_trsp.rst:144
+msgid "``int4`` target id"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:90
+msgid ""
+"``text`` comma separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:92
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** of source and target "
+"together with a fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:94
+msgid "``int4`` **EDGE id** of the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:95
+msgid "``float8`` fraction of 1 defines the position on the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:96
+msgid "``int4`` **EDGE id** of the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:97
+msgid "``float8`` fraction of 1 defines the position on the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:99 ../../build/doc/pgr_trsp.rst:152
+msgid "Returns set of :ref:`type_cost_result`:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:101 ../../build/doc/pgr_trsp.rst:154
+msgid "row sequence"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:102 ../../build/doc/pgr_trsp.rst:156
+msgid "node ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:103 ../../build/doc/pgr_trsp.rst:157
+msgid "edge ID (``-1`` for the last row)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:104
+msgid "cost to traverse from ``id1`` using ``id2``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:107 ../../build/doc/pgr_trsp.rst:162
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:108
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:111
+msgid "Support for Vias"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:113
+msgid ""
+"The Support for Vias functions are prototypes. Not all corner cases are "
+"being considered."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:116
+msgid ""
+"We also have support for vias where you can say generate a from A to B to C,"
+" etc. We support both methods above only you pass an array of vertices or "
+"and array of edges and percentage position along the edge in two arrays."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:133
+msgid ""
+"``int4[]`` An ordered array of **NODE id** the path will go through from "
+"start to end."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:145
+msgid ""
+"``text`` commar separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:147
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** together with a "
+"fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:149
+msgid "``int4`` An ordered array of **EDGE id** that the path has to traverse"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:150
+msgid ""
+"``float8`` An array of fractional positions along the respective edges in "
+"``eids``, where 0.0 is the start of the edge and 1.0 is the end of the "
+"eadge."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:155
+msgid "route ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:158
+msgid "cost to traverse from ``id2`` using ``id3``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:163
+msgid "Via Support prototypes new in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:166
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:168
+msgid "**Without turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:175
+msgid "**With turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:177
+msgid "Then a query with turn restrictions is created as:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:184
+msgid "An example query using vertex ids and via points:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:191
+msgid "An example query using edge ids and vias:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:198
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:204
+msgid ":ref:`type_cost_result`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:207
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:208
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:209
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_version.po b/locale/it/LC_MESSAGES/pgr_version.po
new file mode 100644
index 0000000..5a6623a
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_version.po
@@ -0,0 +1,130 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_version.rst:13
+msgid "pgr_version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:21
+msgid "``pgr_version`` — Query for pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:27
+msgid "Returns a table with pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:35 ../../build/doc/pgr_version.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:37
+msgid "Returns a table with:"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "**version**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42 ../../build/doc/pgr_version.rst:43
+#: ../../build/doc/pgr_version.rst:44 ../../build/doc/pgr_version.rst:45
+#: ../../build/doc/pgr_version.rst:46
+msgid "``varchar``"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "pgRouting version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "**tag**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "Git tag of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "**hash**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "Git hash of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "**branch**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "Git branch of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "**boost**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "Boost version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:51
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:52
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:56
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:58
+msgid "Query for full version string"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:66
+msgid "Query for ``version`` and ``boost`` attribute"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:78
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:81
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:82
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:83
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_vrpOneDepot.po b/locale/it/LC_MESSAGES/pgr_vrpOneDepot.po
new file mode 100644
index 0000000..a0c5006
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_vrpOneDepot.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:14
+msgid "pgr_vrpOneDepot - Experimental"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:21
+msgid "**No documentation available**"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:24
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:28
+msgid "Current Result"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:34
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:41
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:43
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:46
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:47
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:48
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_withPoints.po b/locale/it/LC_MESSAGES/pgr_withPoints.po
new file mode 100644
index 0000000..be629d4
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_withPoints.po
@@ -0,0 +1,665 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPoints.rst:13
+msgid "pgr_withPoints - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:19
+msgid ""
+"``pgr_withPoints`` - Returns the shortest path in a graph with additional "
+"temporary vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, find the shortest path(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:43
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:45
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:51
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path. -"
+" The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path: - The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:59
+msgid ""
+"For optimization purposes, any duplicated value in the start_vids or "
+"end_vids are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:60
+msgid ""
+"The returned values are ordered: - start_vid ascending - end_vid ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:64
+msgid "Running time: :math:`O(|start\\_vids|\\times(V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:68
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:81
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:87
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:90
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:91
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid ""
+"No **details** are given about distance of other points of points_sql query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:100
+msgid "From point 1 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:110
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:120
+msgid "From point 1 to vertex 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:132
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:141
+msgid "From point 1 to point 3 and vertex 5"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:153
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:162
+msgid "From point 1 and vertex 2 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:182
+msgid "From point 1 and vertex 2 to point 3 and vertex 7"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:192
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPoints.rst:249
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPoints.rst:222
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:207
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:211
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:221
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid ""
+"(optional). When ``true`` the results will include the points in points_sql "
+"that are in the path. Default is ``false`` which ignores other points of the"
+" points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:231
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:233
+msgid ""
+"Returns set of ``(seq, [path_seq,] [start_vid,] [end_vid,] node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "Path sequence that indicates the relative position on the path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+#: ../../build/doc/pgr_withPoints.rst:241
+#: ../../build/doc/pgr_withPoints.rst:242
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "Identifier of the ending vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:242
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "Identifier of the node:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:243
+msgid "A positive value indicates the node is a vertex of edges_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "A negative value indicates the node is a point of points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:249
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:262
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **right** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:268
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **left** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:274
+msgid ""
+"Many to many example with a twist: on undirected graph and showing details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:281
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:286
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:287
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:291
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:293
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:296
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:297
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:298
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_withPointsCost.po b/locale/it/LC_MESSAGES/pgr_withPointsCost.po
new file mode 100644
index 0000000..f478ccd
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_withPointsCost.po
@@ -0,0 +1,603 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCost.rst:13
+msgid "pgr_withPointsCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:19
+msgid ""
+"``pgr_withPointsCost`` - Calculates the shortest path and returns only the "
+"aggregate cost of the shortest path(s) found, for the combination of points "
+"given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, return only the aggregate cost of the shortest path(s) found."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:79
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:44
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:45
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"vertices in the modified graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:51
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:52
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:54
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:58
+msgid "The `agg_cost` in the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:60
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:62
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:64
+msgid ""
+"If the values returned are stored in a table, the unique index would be the "
+"pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:67
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:69
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:71
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:73
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:75
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:76
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:78
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:82
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:92
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:96
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:102
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:105
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:124
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:145
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:166
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:185
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:204
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCost.rst:234
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:219
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:223
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:233
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:241
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:243
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "Identifier of the ending point. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:256
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:258
+msgid "With **right** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:264
+msgid "With **left** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:270
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:277
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:282
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:283
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:287
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:289
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:292
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:293
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:294
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_withPointsCostMatrix.po b/locale/it/LC_MESSAGES/pgr_withPointsCostMatrix.po
new file mode 100644
index 0000000..c9bb20f
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_withPointsCostMatrix.po
@@ -0,0 +1,472 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:13
+msgid "pgr_withPointsCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:19
+msgid ""
+"``pgr_withPointsCostMatrix`` - Calculates the shortest path and returns only"
+" the aggregate cost of the shortest path(s) found, for the combination of "
+"points given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:31
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:35
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:45
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:87
+msgid "returning a symmetrical cost matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:89
+msgid "Using the default **side** value on the **points_sql** query"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:90
+msgid "Using an undirected graph"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:91
+msgid "Using the default **driving_side** value"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:100
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:128
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:116
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:127
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:153
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:154
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:155
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:156
+msgid "`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_withPointsDD.po b/locale/it/LC_MESSAGES/pgr_withPointsDD.po
new file mode 100644
index 0000000..95b4be1
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_withPointsDD.po
@@ -0,0 +1,552 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsDD.rst:13
+msgid "pgr_withPointsDD - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:19
+msgid ""
+"``pgr_withPointsDD`` - Returns the driving distance from a starting point."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:37
+msgid ""
+"Modify the graph to include points and using Dijkstra algorithm, extracts "
+"all the nodes and points that have costs less than or equal to the value "
+"``distance`` from the starting point. The edges extracted will conform the "
+"corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:60
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:63
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:64
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:84
+msgid "Driving distance from a single point"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:86
+#: ../../build/doc/pgr_withPointsDD.rst:106
+msgid "Finds the driving distance depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:94
+msgid "Right side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:104
+msgid "Driving distance from many starting points"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:118
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsDD.rst:169
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsDD.rst:147
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:134
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:138
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "Starting point id"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "Distance from the start_pid"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+#: ../../build/doc/pgr_withPointsDD.rst:150
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid ""
+"(optional). Value in ['b', 'r', 'l', NULL] indicating if the driving side "
+"is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:146
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid ""
+"(optional). When ``true`` the nodes will only appear in the closest start_v "
+"list. Default is ``false`` which resembles several calls using the single "
+"starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:157
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:159
+msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid ""
+"Identifier of the node within the Distance from ``start_pid``. If ``details "
+"=: true`` a negative value is the identifier of a point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid "``-1`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:169
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "``0`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:180
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:182
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:184
+msgid "Left side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:190
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:199
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:204
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:205
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:209
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:211
+msgid ":ref:`pgr_drivingDistance` - Driving distance using dijkstra."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:212
+msgid ":ref:`pgr_alphashape` - Alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:213
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/pgr_withPointsKSP.po b/locale/it/LC_MESSAGES/pgr_withPointsKSP.po
new file mode 100644
index 0000000..8202877
--- /dev/null
+++ b/locale/it/LC_MESSAGES/pgr_withPointsKSP.po
@@ -0,0 +1,571 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsKSP.rst:13
+msgid "pgr_withPointsKSP - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:19
+msgid ""
+"``pgr_withPointsKSP`` - Find the K shortest paths using Yen's algorithm."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:32
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:36
+msgid ""
+"Modifies the graph to include the points defined in the ``points_sql`` and "
+"using Yen algorithm, finds the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:41
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:56
+msgid "Minimal Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "The minimal usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:60
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:61
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "No **heap paths** are returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:82
+msgid "Finds the K shortest paths depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:91
+msgid "With details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsKSP.rst:130
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:115
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "**start_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "Starting point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "**end_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "Ending point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "**K**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "Number of shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid ""
+"(optional). When ``true`` the paths calculated to get the shortests paths "
+"will be returned also. Default is ``false`` only the K shortest paths are "
+"returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:129
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:139
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:141
+msgid ""
+"Returns set of ``(seq, path_id, path_seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid ""
+"Relative position in the path of node and edge. Has value 1 for the "
+"beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid ""
+"Path identifier. The ordering of the paths: For two paths i, j if i < j then"
+" agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid ""
+"Identifier of the node in the path. Negative values are the identifiers of a"
+" point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:164
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:166
+msgid "Left side driving topology with details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:172
+msgid "Right side driving topology with heap paths and details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:178
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:181
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:182
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:186
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:188
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:191
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:192
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:193
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/proposed.po b/locale/it/LC_MESSAGES/proposed.po
new file mode 100644
index 0000000..9f1a6f4
--- /dev/null
+++ b/locale/it/LC_MESSAGES/proposed.po
@@ -0,0 +1,410 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/proposed.rst:13
+msgid "Stable Proposed Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:20
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:22
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:23
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:24
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:25
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:26
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:27
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:33
+msgid "As part of the :ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:35
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` Use pgr_dijkstra to calculate a cost matrix."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:36
+msgid ""
+":ref:`pgr_dijkstraVia` - Use pgr_dijkstra to make a route via vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:39
+msgid "Families"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:40
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:3
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:4
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:5
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:46
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:3
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:5
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:52
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:3
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:4
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:5
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:58
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:3
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:4
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:9
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:64
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:3
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:4
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:5
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:6
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:7
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:71
+msgid "categories"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:72
+msgid ":ref:`Cost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:3
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:4
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:6
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:7
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:78
+msgid ":ref:`CostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:3
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:4
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:6
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:7
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:84
+msgid ":ref:`KSP`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:3
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:4
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:106
+msgid "Experimental Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:111
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:113
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:114
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:116
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:117
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:118
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:119
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:120
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:121
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:122
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:123
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:124
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:125
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:126
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:127
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:132
+msgid ":ref:`contraction` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:134
+msgid ""
+":ref:`pgr_contractgraph` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:138
+msgid "Graph Analysis"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:139
+msgid ":ref:`pgr_labelGraph` - Analyze / label subgraphs within a network"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:141
+msgid ":ref:`components` - Analyze components within a graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:143
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:144
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:145
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:146
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:147
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:150
+msgid "VRP"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:151
+msgid ":ref:`pgr_gsocvrppdtw`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:152
+msgid ":ref:`pgr_vrp_basic`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:166
+msgid "Graph Transformation"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:167
+msgid ":doc:`pgr_lineGraph`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:178
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:179
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:180
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/release_notes.po b/locale/it/LC_MESSAGES/release_notes.po
new file mode 100644
index 0000000..f4a09f7
--- /dev/null
+++ b/locale/it/LC_MESSAGES/release_notes.po
@@ -0,0 +1,1278 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/release_notes.rst:13
+msgid "Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ""
+"To see the full list of changes check the list of `Git commits "
+"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid "Table of contents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:21
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:22
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:23
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:24
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:25
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:26
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:27
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:28
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:29
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:30
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:31
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:32
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:33
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:34
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:35
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:36
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:43
+msgid "pgRouting 2.5.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:45
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.5.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.5.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:49
+msgid "enhancement:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:50
+msgid "pgr_version is now on SQL language"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:53
+msgid "Breaking change on:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:54
+msgid "pgr_edgeDisjointPaths:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:56
+msgid "Added path_id, cost and agg_cost columns on the result"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:57
+msgid "Parameter names changed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:58
+msgid "The many version results are the union of the one to one version"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:61
+msgid "New Signatures:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:62
+msgid "pgr_bdAstar(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:65 ../../build/doc/release_notes.rst:223
+msgid "New Proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:66
+msgid "pgr_bdAstar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:67
+msgid "pgr_bdAstar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:68
+msgid "pgr_bdAstar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:69
+msgid "pgr_bdAstarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:70
+msgid "pgr_bdAstarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:71
+msgid "pgr_bdAstarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:72
+msgid "pgr_bdAstarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:73
+msgid "pgr_bdAstarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:74
+msgid "pgr_bdDijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:75
+msgid "pgr_bdDijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:76
+msgid "pgr_bdDijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:77
+msgid "pgr_bdDijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:78
+msgid "pgr_bdDijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:79
+msgid "pgr_bdDijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:80
+msgid "pgr_bdDijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:81
+msgid "pgr_bdDijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:82
+msgid "pgr_lineGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:83
+msgid "pgr_connectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:84
+msgid "pgr_strongComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:85
+msgid "pgr_biconnectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:86
+msgid "pgr_articulationPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:87
+msgid "pgr_bridges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:90 ../../build/doc/release_notes.rst:160
+#: ../../build/doc/release_notes.rst:247
+msgid "Deprecated Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:91
+msgid "pgr_bdastar - use pgr_bdAstar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:94
+msgid "Renamed Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:95
+msgid "pgr_maxFlowPushRelabel - use pgr_pushRelabel instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:96
+msgid "pgr_maxFlowEdmondsKarp -use pgr_edmondsKarp instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:97
+msgid "pgr_maxFlowBoykovKolmogorov - use pgr_boykovKolmogorov instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:98
+msgid "pgr_maximumCardinalityMatching - use pgr_maxCardinalityMatch instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:101
+msgid "Deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:102
+msgid "pgr_pointToEdgeNode"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:108
+msgid "pgRouting 2.4.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:110
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.2 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.2%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:113
+msgid "Improvement"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:114
+msgid "Works for postgreSQL 10"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:117 ../../build/doc/release_notes.rst:131
+#: ../../build/doc/release_notes.rst:168 ../../build/doc/release_notes.rst:522
+#: ../../build/doc/release_notes.rst:529 ../../build/doc/release_notes.rst:550
+#: ../../build/doc/release_notes.rst:557
+msgid "Bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:118
+msgid "Fixed: Unexpected error column \"cname\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:119
+msgid ""
+"Replace __linux__ with __GLIBC__ for glibc-specific headers and functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:126
+msgid "pgRouting 2.4.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:128
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.1 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.1%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:132
+msgid "Fixed compiling error on macOS"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:133
+msgid "Condition error on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:138
+msgid "pgRouting 2.4.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:140
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.4.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.4.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:143 ../../build/doc/release_notes.rst:213
+#: ../../build/doc/release_notes.rst:374
+msgid "New Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:144
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:148
+msgid "New Proposed Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:149
+msgid "pgr_maxFlow"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:150
+msgid "pgr_astar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:151
+msgid "pgr_astar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:152
+msgid "pgr_astar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:153
+msgid "pgr_astarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:154
+msgid "pgr_astarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:155
+msgid "pgr_astarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:156
+msgid "pgr_astarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:157
+msgid "pgr_astarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:161
+msgid "pgr_bddijkstra - use pgr_bdDijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:164 ../../build/doc/release_notes.rst:253
+msgid "Deprecated Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:165
+msgid "pgr_pointsToVids"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:169
+msgid "Bug fixes on proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:171
+msgid "pgr_withPointsKSP: fixed ordering"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:173
+msgid "TRSP original code is used with no changes on the compilation warnings"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:178
+msgid "pgRouting 2.3.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:180
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:183 ../../build/doc/release_notes.rst:199
+#: ../../build/doc/release_notes.rst:269 ../../build/doc/release_notes.rst:282
+#: ../../build/doc/release_notes.rst:293 ../../build/doc/release_notes.rst:305
+#: ../../build/doc/release_notes.rst:424 ../../build/doc/release_notes.rst:455
+msgid "Bug Fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:184
+msgid "Fixed pgr_gsoc_vrppdtw crash when all orders fit on one truck."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:185
+msgid "Fixed pgr_trsp:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:187
+msgid "Alternate code is not executed when the point is in reality a vertex"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:188
+msgid "Fixed ambiguity on seq"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:194
+msgid "pgRouting 2.3.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:196
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.1%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:200
+msgid "Leaks on proposed max_flow functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:201
+msgid "Regression error on pgr_trsp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:202
+msgid "Types discrepancy on pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:208
+msgid "pgRouting 2.3.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:210
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:214
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:215
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:218 ../../build/doc/release_notes.rst:330
+msgid "New Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:219
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:224
+msgid "pgr_dijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:225
+msgid "pgr_withPointsCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:226
+msgid "pgr_maxFlowPushRelabel(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:227
+msgid "pgr_maxFlowPushRelabel(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:228
+msgid "pgr_maxFlowPushRelabel(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:229
+msgid "pgr_maxFlowPushRelabel(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:230
+msgid "pgr_maxFlowEdmondsKarp(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:231
+msgid "pgr_maxFlowEdmondsKarp(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:232
+msgid "pgr_maxFlowEdmondsKarp(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:233
+msgid "pgr_maxFlowEdmondsKarp(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:234
+msgid "pgr_maxFlowBoykovKolmogorov (one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:235
+msgid "pgr_maxFlowBoykovKolmogorov (one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:236
+msgid "pgr_maxFlowBoykovKolmogorov (many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:237
+msgid "pgr_maxFlowBoykovKolmogorov (many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:238
+msgid "pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:239
+msgid "pgr_edgeDisjointPaths(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:240
+msgid "pgr_edgeDisjointPaths(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:241
+msgid "pgr_edgeDisjointPaths(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:242
+msgid "pgr_edgeDisjointPaths(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:243
+msgid "pgr_contractGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:248
+msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:249
+msgid "pgr_astar - use pgr_aStar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:254
+msgid "pgr_flip_edges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:255
+msgid "pgr_vidsToDmatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:256
+msgid "pgr_pointsToDMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:257
+msgid "pgr_textToPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:264
+msgid "pgRouting 2.2.4 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:266
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.4 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.4%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:270
+msgid "Bogus uses of extern \"C\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:271
+msgid "Build error on Fedora 24 + GCC 6.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:272
+msgid "Regression error pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:277
+msgid "pgRouting 2.2.3 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:279
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.3 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.3%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:283
+msgid "Fixed compatibility issues with PostgreSQL 9.6."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:288
+msgid "pgRouting 2.2.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:290
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:294
+msgid "Fixed regression error on pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:300
+msgid "pgRouting 2.2.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:302
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A2.2.1+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:306
+msgid "Server crash fix on pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:307
+msgid "Bug fix on With Points family of functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:313
+msgid "pgRouting 2.2.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:315
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:319 ../../build/doc/release_notes.rst:387
+msgid "Improvements"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:320
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:322
+msgid "Adding a row_where and outall optional parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:324
+msgid "Signature fix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:326
+msgid "pgr_dijkstra -- to match what is documented"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:331
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:332
+msgid "pgr_Johnson"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:333
+msgid "pgr_dijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:334
+msgid "pgr_dijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:335
+msgid "pgr_dijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:336
+msgid "pgr_dijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:339 ../../build/doc/release_notes.rst:391
+msgid "Proposed functionality"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:340
+msgid "pgr_withPoints(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:341
+msgid "pgr_withPoints(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:342
+msgid "pgr_withPoints(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:343
+msgid "pgr_withPoints(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:344
+msgid "pgr_withPointsCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:345
+msgid "pgr_withPointsCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:346
+msgid "pgr_withPointsCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:347
+msgid "pgr_withPointsCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:348
+msgid "pgr_withPointsDD(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:349
+msgid "pgr_withPointsDD(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:350
+msgid "pgr_withPointsKSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:351
+msgid "pgr_dijkstraVia"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:355
+msgid "Deprecated functions:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:356
+msgid "pgr_apspWarshall use pgr_floydWarshall instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:357
+msgid "pgr_apspJohnson use pgr_Johnson instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:358
+msgid "pgr_kDijkstraCost use pgr_dijkstraCost instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:359
+msgid "pgr_kDijkstraPath use pgr_dijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:362
+msgid "Renamed and deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:363
+msgid "pgr_makeDistanceMatrix renamed to _pgr_makeDistanceMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:369
+msgid "pgRouting 2.1.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:371
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.1.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:375
+msgid "pgr_dijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:376
+msgid "pgr_dijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:377
+msgid "pgr_dijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:378
+msgid "pgr_drivingDistance(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:381
+msgid "Refactored"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:382
+msgid "pgr_dijkstra(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:383
+msgid "pgr_ksp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:384
+msgid "pgr_drivingDistance(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:388
+msgid ""
+"pgr_alphaShape function now can generate better (multi)polygon with holes "
+"and alpha parameter."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:392
+msgid ""
+"Proposed functions from Steve Woodbridge, (Classified as Convenience by the "
+"author.)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:394
+msgid ""
+"pgr_pointToEdgeNode - convert a point geometry to a vertex_id based on "
+"closest edge."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:395
+msgid ""
+"pgr_flipEdges - flip the edges in an array of geometries so the connect end "
+"to end."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:396
+msgid ""
+"pgr_textToPoints - convert a string of x,y;x,y;... locations into point "
+"geometries."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:397
+msgid ""
+"pgr_pointsToVids - convert an array of point geometries into vertex ids."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:398
+msgid ""
+"pgr_pointsToDMatrix - Create a distance matrix from an array of points."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:399 ../../build/doc/release_notes.rst:400
+msgid ""
+"pgr_vidsToDMatrix - Create a distance matrix from an array of vertix_id."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:402
+msgid "Added proposed functions from GSoc Projects:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:404
+msgid "pgr_vrppdtw"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:405
+msgid "pgr_vrponedepot"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:408
+msgid "Deprecated functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:409
+msgid "pgr_getColumnName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:410
+msgid "pgr_getTableName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:411
+msgid "pgr_isColumnCndexed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:412
+msgid "pgr_isColumnInTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:413
+msgid "pgr_quote_ident"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:414
+msgid "pgr_versionless"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:415
+msgid "pgr_startPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:416
+msgid "pgr_endPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:417
+msgid "pgr_pointToId"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:420
+msgid "No longer supported"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:421
+msgid "Removed the 1.x legacy functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:425
+msgid "Some bug fixes in other functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:429
+msgid "Refactoring Internal Code"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:430
+msgid "A C and C++ library for developer was created"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:432
+msgid "encapsulates postgreSQL related functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:433
+msgid "encapsulates Boost.Graph graphs"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:435
+msgid "Directed Boost.Graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:436
+msgid "Undirected Boost.graph."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:438
+msgid "allow any-integer in the id's"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:439
+msgid "allow any-numerical on the cost/reverse_cost columns"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:441
+msgid ""
+"Instead of generating many libraries: - All functions are encapsulated in "
+"one library - The library has the prefix 2-1-0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:450
+msgid "pgRouting 2.0.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:452
+msgid "Minor bug fixes."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:456
+msgid "No track of the bug fixes were kept."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:462
+msgid "pgRouting 2.0.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:464
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.0.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.0.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:466
+msgid ""
+"With the release of pgRouting 2.0.0 the library has abandoned backwards "
+"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. The main "
+"Goals for this release are:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:469
+msgid "Major restructuring of pgRouting."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:470
+msgid "Standardization of the function naming"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:471
+msgid "Preparation of the project for future development."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:473
+msgid "As a result of this effort:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:475
+msgid "pgRouting has a simplified structure"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:476
+msgid "Significant new functionality has being added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:477
+msgid "Documentation has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:478
+msgid "Testing has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:479
+msgid "And made it easier for multiple developers to make contributions."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:483
+msgid "Important Changes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:484
+msgid ""
+"Graph Analytics - tools for detecting and fixing connection some problems in"
+" a graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:485
+msgid "A collection of useful utility functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:486
+msgid ""
+"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:487
+msgid ""
+"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
+"pgr_bdDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:488
+msgid "One to many nodes search (pgr_kDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:489
+msgid "K alternate paths shortest path (pgr_ksp)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:490
+msgid ""
+"New TSP solver that simplifies the code and the build process (pgr_tsp), "
+"dropped \"Gaul Library\" dependency"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:491
+msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:492
+msgid "Dropped support for Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:493
+msgid ""
+"Built a test infrastructure that is run before major code changes are "
+"checked in"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:494
+msgid ""
+"Tested and fixed most all of the outstanding bugs reported against 1.x that "
+"existing in the 2.0-dev code base."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:495
+msgid "Improved build process for Windows"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:496
+msgid ""
+"Automated testing on Linux and Windows platforms trigger by every commit"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:497
+msgid "Modular library design"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:498
+msgid "Compatibility with PostgreSQL 9.1 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:499
+msgid "Compatibility with PostGIS 2.0 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:500
+msgid "Installs as PostgreSQL EXTENSION"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:501
+msgid "Return types re factored and unified"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:502
+msgid "Support for table SCHEMA in function parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:503
+msgid "Support for ``st_`` PostGIS function prefix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:504
+msgid "Added ``pgr_`` prefix to functions and types"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:505
+msgid "Better documentation: http://docs.pgrouting.org"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:506
+msgid "shooting_star is discontinued"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:513
+msgid "pgRouting 1.x Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:515
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for 1.x "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+1.x%22+is%3Aclosed>`_"
+" on Github. The following release notes have been copied from the previous "
+"``RELEASE_NOTES`` file and are kept as a reference."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:520
+msgid "Changes for release 1.05"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:526
+msgid "Changes for release 1.03"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:528
+msgid "Much faster topology creation"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:533
+msgid "Changes for release 1.02"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:535 ../../build/doc/release_notes.rst:542
+msgid "Shooting* bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:536
+msgid "Compilation problems solved"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:540
+msgid "Changes for release 1.01"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:546
+msgid "Changes for release 1.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:548
+msgid "Core and extra functions are separated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:549
+msgid "Cmake build process"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:554
+msgid "Changes for release 1.0.0b"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:556
+msgid "Additional SQL file with more simple names for wrapper functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:561
+msgid "Changes for release 1.0.0a"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:563
+msgid "Shooting* shortest path algorithm for real road networks"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:564
+msgid "Several SQL bugs were fixed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:568
+msgid "Changes for release 0.9.9"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:570
+msgid "PostgreSQL 8.2 support"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:571
+msgid ""
+"Shortest path functions return empty result if they could not find any path"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:575
+msgid "Changes for release 0.9.8"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:577
+msgid "Renumbering scheme was added to shortest path functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:578
+msgid "Directed shortest path functions were added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:579
+msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/routingFunctions.po b/locale/it/LC_MESSAGES/routingFunctions.po
new file mode 100644
index 0000000..3242809
--- /dev/null
+++ b/locale/it/LC_MESSAGES/routingFunctions.po
@@ -0,0 +1,134 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/routingFunctions.rst:15
+msgid "Routing Functions"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:21
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:23
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:28
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:30
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:33
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:39
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:41
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:43
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:49
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/sampledata.po b/locale/it/LC_MESSAGES/sampledata.po
new file mode 100644
index 0000000..2ded9cd
--- /dev/null
+++ b/locale/it/LC_MESSAGES/sampledata.po
@@ -0,0 +1,152 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/sampledata.rst:11
+msgid "Sample Data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:13
+msgid ""
+"The documentation provides very simple example queries based on a small "
+"sample network. To be able to execute the sample queries, run the following "
+"SQL commands to create a table with a small network data set."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:18
+msgid "Create table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:25
+msgid "Insert data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:32
+msgid "Topology"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:33
+msgid ""
+"Before you test a routing function use this query to create a topology "
+"(fills the ``source`` and ``target`` columns)."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:40
+msgid "Points of interest"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:41
+msgid "When points outside of the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:42
+msgid "Used with the :ref:`withPoints` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:49
+msgid "Restrictions"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:50
+msgid "Used with the :ref:`trsp` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:57
+msgid "Categories"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:58
+msgid "Used with the :ref:`maxFlow` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:65
+msgid "Vertex table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:66
+msgid "Used in some deprecated signatures or deprecated functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:74
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:76
+msgid "Red arrows correspond when ``cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:77
+msgid "Blue arrows correspond when ``reverse_cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:78
+msgid "Points are outside the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:79
+msgid "Click on the graph to enlarge."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:84
+msgid ""
+"Network for queries marked as ``directed`` and ``cost`` and ``reverse_cost``"
+" columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:86
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"vehicles."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:91
+msgid "**Graph 1: Directed, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:96
+msgid ""
+"Network for queries marked as ``undirected`` and ``cost`` and "
+"``reverse_cost`` columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:98
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"pedestrians."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:104
+msgid "**Graph 2: Undirected, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:109
+msgid ""
+"Network for queries marked as ``directed`` and only ``cost`` column is used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:116
+msgid "**Graph 3: Directed, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:121
+msgid ""
+"Network for queries marked as ``undirected`` and only ``cost`` column is "
+"used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:127
+msgid "**Graph 4: Undirected, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:134
+msgid "Pick & Deliver Data"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/support.po b/locale/it/LC_MESSAGES/support.po
new file mode 100644
index 0000000..4082646
--- /dev/null
+++ b/locale/it/LC_MESSAGES/support.po
@@ -0,0 +1,177 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/support.rst:13
+msgid "Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:15
+msgid ""
+"pgRouting community support is available through the `pgRouting website "
+"<http://pgrouting.org/support.html>`_, `documentation "
+"<http://docs.pgrouting.org>`_, tutorials, mailing lists and others. If "
+"you’re looking for :ref:`commercial support <support_commercial>`, find "
+"below a list of companies providing pgRouting development and consulting "
+"services."
+msgstr ""
+
+#: ../../build/doc/support.rst:19
+msgid "Reporting Problems"
+msgstr ""
+
+#: ../../build/doc/support.rst:21
+msgid ""
+"Bugs are reported and managed in an `issue tracker "
+"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
+"steps:"
+msgstr ""
+
+#: ../../build/doc/support.rst:23
+msgid ""
+"Search the tickets to see if your problem has already been reported. If so, "
+"add any extra context you might have found, or at least indicate that you "
+"too are having the problem. This will help us prioritize common issues."
+msgstr ""
+
+#: ../../build/doc/support.rst:24
+msgid ""
+"If your problem is unreported, create a `new issue "
+"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
+msgstr ""
+
+#: ../../build/doc/support.rst:25
+msgid ""
+"In your report include explicit instructions to replicate your issue. The "
+"best tickets include the exact SQL necessary to replicate a problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:26
+msgid ""
+"If you can test older versions of PostGIS for your problem, please do. On "
+"your ticket, note the earliest version the problem appears."
+msgstr ""
+
+#: ../../build/doc/support.rst:27
+msgid ""
+"For the versions where you can replicate the problem, note the operating "
+"system and version of pgRouting, PostGIS and PostgreSQL."
+msgstr ""
+
+#: ../../build/doc/support.rst:28
+msgid ""
+"It is recommended to use the following wrapper on the problem to pin point "
+"the step that is causing the problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:39
+msgid "Mailing List and GIS StackExchange"
+msgstr ""
+
+#: ../../build/doc/support.rst:41
+msgid ""
+"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
+"server:"
+msgstr ""
+
+#: ../../build/doc/support.rst:43
+msgid ""
+"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
+msgstr ""
+
+#: ../../build/doc/support.rst:44
+msgid ""
+"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
+"dev"
+msgstr ""
+
+#: ../../build/doc/support.rst:46
+msgid ""
+"For general questions and topics about how to use pgRouting, please write to"
+" the user mailing list."
+msgstr ""
+
+#: ../../build/doc/support.rst:48
+msgid ""
+"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
+" tag the question with ``pgrouting``. Find all questions tagged with "
+"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
+"or subscribe to the `pgRouting questions feed "
+"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
+msgstr ""
+
+#: ../../build/doc/support.rst:54
+msgid "Commercial Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:56
+msgid ""
+"For users who require professional support, development and consulting "
+"services, consider contacting any of the following organizations, which have"
+" significantly contributed to the development of pgRouting:"
+msgstr ""
+
+#: ../../build/doc/support.rst:61
+msgid "**Company**"
+msgstr ""
+
+#: ../../build/doc/support.rst:62
+msgid "**Offices in**"
+msgstr ""
+
+#: ../../build/doc/support.rst:63
+msgid "**Website**"
+msgstr ""
+
+#: ../../build/doc/support.rst:64
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/support.rst:65
+msgid "Germany, Japan"
+msgstr ""
+
+#: ../../build/doc/support.rst:66
+msgid "https://georepublic.info"
+msgstr ""
+
+#: ../../build/doc/support.rst:67
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/support.rst:68 ../../build/doc/support.rst:71
+msgid "United States"
+msgstr ""
+
+#: ../../build/doc/support.rst:69
+msgid "http://imaptools.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:70
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/support.rst:72
+msgid "http://www.paragoncorporation.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:73
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/support.rst:74
+msgid "Switzerland, France"
+msgstr ""
+
+#: ../../build/doc/support.rst:75
+msgid "http://www.camptocamp.com"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/topology-functions.po b/locale/it/LC_MESSAGES/topology-functions.po
new file mode 100644
index 0000000..ac6a1b3
--- /dev/null
+++ b/locale/it/LC_MESSAGES/topology-functions.po
@@ -0,0 +1,66 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/topology-functions.rst:13
+msgid "Topology - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:15
+msgid ""
+"The pgRouting's topology of a network, represented with an edge table with "
+"source and target attributes and a vertices table associated with it. "
+"Depending on the algorithm, you can create a topology or just reconstruct "
+"the vertices table, You can analyze the topology, We also provide a function"
+" to node an unoded network."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:19
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:20
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:21
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:22
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:23
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:35
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:38
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:39
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:40
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/types_index.po b/locale/it/LC_MESSAGES/types_index.po
new file mode 100644
index 0000000..3f3faa7
--- /dev/null
+++ b/locale/it/LC_MESSAGES/types_index.po
@@ -0,0 +1,56 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/types_index.rst:13
+msgid "pgRouting Data Types"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:15
+msgid ""
+"The following are commonly used data types for some of the pgRouting "
+"functions."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:17
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:18
+msgid ""
+":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe "
+"a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:19
+msgid ""
+":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:30
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:33
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:34
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:35
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/it/LC_MESSAGES/withPoints-family.po b/locale/it/LC_MESSAGES/withPoints-family.po
new file mode 100644
index 0000000..3d4f303
--- /dev/null
+++ b/locale/it/LC_MESSAGES/withPoints-family.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/withPoints-family.rst:14
+msgid "withPoints - Family of functions"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:16
+msgid "When points are also given as input:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:20
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:21
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:22
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:23
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:24
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:47
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:49
+msgid ""
+"The squared vertices are the temporary vertices, The temporary vertices are "
+"added acordng to the dirving side, The following images visualy show the "
+"diferences on how depending on the driving side the data is interpreted."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:53
+msgid "Right driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:58
+msgid "Left driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:63
+msgid "doesn't matter the driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:68
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:70
+msgid ""
+"This famly of functions was thought for routing vehicles, but might as well "
+"work for some other application that we can not think of."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:73
+msgid ""
+"The with points family of function give you the ability to route between "
+"arbitrary points located outside the original graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:76
+msgid ""
+"When given a point identified with a `pid` that its being mapped to and edge"
+" with an identifier `edge_id`, with a `fraction` along that edge (from the "
+"source to the target of the edge) and some additional information about "
+"which `side` of the edge the point is on, then routing from arbitrary points"
+" more accurately reflect routing vehicles in road networks,"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid ""
+"I talk about a family of functions because it includes different "
+"functionalities."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:84
+msgid "pgr_withPoints is pgr_dijkstra based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:85
+msgid "pgr_withPointsCost is pgr_dijkstraCost based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:86
+msgid "pgr_withPointsKSP is pgr_ksp based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid "pgr_withPointsDD is pgr_drivingDistance based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:89
+msgid ""
+"In all this functions we have to take care of as many aspects as possible:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:91
+msgid "Must work for routing:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:93
+msgid "Cars (directed graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:94
+msgid "Pedestrians (undirected graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:96
+msgid "Arriving at the point:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:98
+msgid "In either side of the street."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:99
+msgid ""
+"Compulsory arrival on the side of the street where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:101
+msgid "Countries with:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:103
+msgid "Right side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:104
+msgid "Left side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:106
+msgid "Some points are:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:108
+msgid ""
+"Permanent, for example the set of points of clients stored in a table in the"
+" data base"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:109
+msgid "Temporal, for example points given through a web application"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:111
+msgid "The numbering of the points are handled with negative sign."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:113
+msgid "Original point identifiers are to be positive."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:114
+msgid "Transformation to negative is done internally."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:115
+msgid "For results for involving vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:117
+msgid "positive sign is a vertex of the original grpah"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:118
+msgid "negative sign is a point of the temporary points"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:120
+msgid ""
+"The reason for doing this is to avoid confusion when there is a vertex with "
+"the same number as identifier as the points identifier."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:123
+msgid "Graph & edges"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:125
+msgid ""
+"Let :math:`G_d(V,E)` where :math:`V` is the set of vertices and :math:`E` is"
+" the set of edges be the original directed graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:127
+msgid ""
+"An edge of the original `edges_sql` is :math:`(id, source, target, cost, "
+"reverse\\_cost)` will generate internally"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:129
+msgid ":math:`(id, source, target, cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:130
+msgid ":math:`(id, target, source, reverse\\_cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:133
+msgid "Point Definition"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:135
+msgid ""
+"A point is defined by the quadruplet: :math:`(pid, eid, fraction, side)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:137
+msgid "**pid** is the point identifier"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:138
+msgid "**eid** is an edge id of the `edges_sql`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:139
+msgid "**fraction** represents where the edge `eid` will be cut."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:140
+msgid "**side** Indicates the side of the edge where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:144
+msgid "Creating Temporary Vertices in the Graph"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:146
+msgid "For edge (15, 9,12 10, 20), & lets insert point (2, 12, 0.3, r)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:149
+msgid "On a right hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:150
+msgid "From first image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:152
+msgid "We can arrive to the point only via vertex 9."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:153
+msgid "It only afects the edge (15, 9,12, 10) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:154
+msgid "Edge (15, 12,9, 20) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:155
+#: ../../build/doc/withPoints-family.rst:167
+#: ../../build/doc/withPoints-family.rst:182
+msgid "Create new edges:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:157
+#: ../../build/doc/withPoints-family.rst:186
+msgid "(15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:158
+#: ../../build/doc/withPoints-family.rst:187
+msgid "(15, -1,12, 7) edge from point 1 to vertex 12 has cost 7"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:161
+msgid "On a left hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:162
+msgid "From second image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:164
+msgid "We can arrive to the point only via vertex 12."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:165
+msgid "It only afects the edge (15, 12,9 20) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:166
+msgid "Edge (15, 9,12, 10) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:169
+#: ../../build/doc/withPoints-family.rst:184
+msgid "(15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:170
+#: ../../build/doc/withPoints-family.rst:185
+msgid "(15, -1,9, 6) edge from point 1 to vertex 9 has cost 6"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:172
+msgid "that fraction is from vertex 9 to vertex 12"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:176
+msgid "When driving side does not matter"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:177
+msgid "From third image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:179
+msgid "We can arrive to the point either via vertex 12 or via vertex 9"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:180
+msgid "Edge (15, 12,9 20) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:181
+msgid "Edge (15, 9,12, 10) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:190
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:193
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:194
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:195
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/KSP-category.po b/locale/ja/LC_MESSAGES/KSP-category.po
new file mode 100644
index 0000000..9232738
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/KSP-category.po
@@ -0,0 +1,36 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/KSP-category.rst:14
+msgid "KSP Category"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:18
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:19
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:26
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:27
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:28
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/TSP-family.po b/locale/ja/LC_MESSAGES/TSP-family.po
new file mode 100644
index 0000000..0f03653
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/TSP-family.po
@@ -0,0 +1,556 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/TSP-family.rst:13
+msgid "Traveling Sales Person - Family of functions"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:17
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:18
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:33
+msgid "Origin"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid ""
+"The traveling sales person problem was studied in the 18th century by "
+"mathematicians"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid "**Sir William Rowam Hamilton** and **Thomas Penyngton Kirkman**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:38
+msgid ""
+"A discussion about the work of Hamilton & Kirkman can be found in the book "
+"**Graph Theory (Biggs et al. 1976)**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:41
+msgid "ISBN-13: 978-0198539162"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:42
+msgid "ISBN-10: 0198539169"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:44
+msgid ""
+"It is believed that the general form of the TSP have been first studied by "
+"Kalr Menger in Vienna and Harvard. The problem was later promoted by "
+"Hassler, Whitney & Merrill at Princeton. A detailed description about the"
+" connection between Menger & Whitney, and the development of the TSP can be "
+"found in `On the history of combinatorial optimization (till 1960) "
+"<http://www.cwi.nl/~lex/files/histco.ps>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:50
+msgid "Problem Definition"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:52
+msgid ""
+"Given a collection of cities and travel cost between each pair, find the "
+"cheapest way for visiting all of the cities and returning to the starting "
+"point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:56
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:58
+msgid "The travel costs are symmetric:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:60
+msgid ""
+"traveling costs from city A to city B are just as much as traveling from B "
+"to A."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:62
+msgid "This problem is an NP-hard optimization problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:64
+msgid "To calculate the number of different tours through :math:`n` cities:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:66
+msgid "Given a starting city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:67
+msgid "There are :math:`n-1` choices for the second city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:68
+msgid "And :math:`n-2` choices for the third city, etc."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:69
+msgid ""
+"Multiplying these together we get :math:`(n-1)! = (n-1) (n-2) . . 1`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:70
+msgid ""
+"Now since our travel costs do not depend on the direction we take around the"
+" tour:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:72
+msgid "this number by 2"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:73
+msgid ":math:`(n-1)!/2`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:76
+msgid "TSP & Simulated Annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:78
+msgid ""
+"The simulated annealing algorithm was originally inspired from the process "
+"of annealing in metal work."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:81
+msgid ""
+"Annealing involves heating and cooling a material to alter its physical "
+"properties due to the changes in its internal structure. As the metal cools "
+"its new structure becomes fixed, consequently causing the metal to retain "
+"its newly obtained properties. [C001]_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:88
+msgid "Pseudocode"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:89
+msgid ""
+"Given an initial solution, the simulated annealing process, will start with "
+"a high temperature and gradually cool down until the desired temperature is "
+"reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:92
+msgid ""
+"For each temperature, a neighbouring new solution **snew** is calculated. "
+"The higher the temperature the higher the probability of accepting the new "
+"solution as a possible bester solution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:95
+msgid ""
+"Once the desired temperature is reached, the best solution found is returned"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:118
+msgid "pgRouting Implementation"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:120
+msgid ""
+"pgRouting's implementation adds some extra parameters to allow some exit "
+"controls within the simulated annealing process."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:123
+msgid "To cool down faster to the next temperature:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:125
+msgid ""
+"max_changes_per_temperature: limits the number of changes in the solution "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:126
+msgid ""
+"max_consecutive_non_changes: limits the number of consecutive non changes "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:128
+msgid ""
+"This is done by doing some book keeping on the times **solution = snew;** is"
+" executed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:130
+msgid ""
+"max_changes_per_temperature: Increases by one when **solution** changes"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:131
+msgid ""
+"max_consecutive_non_changes: Reset to 0 when **solution** changes, and "
+"increased each **try**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:133
+msgid ""
+"Additionally to stop the algorithm at a higher temperature than the desired "
+"one:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:135
+msgid ""
+"max_processing_time: limits the time the simulated annealing is performed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:136
+msgid ""
+"book keeping is done to see if there was a change in **solution** on the "
+"last temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:138
+msgid ""
+"Note that, if no change was found in the first "
+"**max_consecutive_non_changes** tries, then the simulated annealing will "
+"stop."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:168
+msgid "Choosing parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:170
+msgid ""
+"There is no exact rule on how the parameters have to be chose, it will "
+"depend on the special characteristics of the problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:173
+msgid ""
+"Your computational time is crucial, then put your time limit to "
+"**max_processing_time**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:174
+msgid ""
+"Make the **tries_per_temperture** depending on the number of cities, for "
+"example:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:176
+msgid "Useful to estimate the time it takes to do one cycle: use `1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:178
+msgid "this will help to set a reasonable **max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:180
+msgid ":math:`n * (n-1)`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:181
+msgid ":math:`500 * n`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:183
+msgid ""
+"For a faster decreasing the temperature set **cooling_factor** to a smaller "
+"number, and set to a higher number for a slower decrease."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:186
+msgid ""
+"When for the same given data the same results are needed, set **randomize** "
+"to `false`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:188
+msgid "When estimating how long it takes to do one cycle: use `false`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:191
+msgid ""
+"A recommendation is to play with the values and see what fits to the "
+"particular data."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:196
+msgid "Description Of the Control parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:198
+msgid "The control parameters are optional, and have a default value."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+#: ../../build/doc/TSP-family.rst:233
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+msgid "`0`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "The greedy part of the implementation will use this identifier."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "Last visiting vertex before returning to start_vid."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "**max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205 ../../build/doc/TSP-family.rst:209
+#: ../../build/doc/TSP-family.rst:210 ../../build/doc/TSP-family.rst:211
+#: ../../build/doc/TSP-family.rst:234 ../../build/doc/TSP-family.rst:237
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "`+infinity`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "Stop the annealing processing when the value is reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "**tries_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206 ../../build/doc/TSP-family.rst:207
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:232
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "`500`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "Maximum number of times a neighbor(s) is searched in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "**max_changes_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "`60`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "Maximum number of times the solution is changed in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid "**max_consecutive_non_changes**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:209
+msgid "`100`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid ""
+"Maximum number of consecutive times the solution is not changed in each "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "**initial_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "Starting temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "**final_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "`0.1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "Ending temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "**cooling_factor**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "`0.9`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid ""
+"Value between between 0 and 1 (not including) used to calculate the next "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "**randomize**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "`true`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "Choose the random seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:214
+msgid "true: Use current time as seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:215
+msgid ""
+"false: Use `1` as seed. Using this value will get the same results with the "
+"same data in each execution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:225
+msgid "Description of the return columns"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:227
+msgid "Returns set of ``(seq, node, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:230
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "Identifier of the node/coordinate/point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:234
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid ""
+"Cost to traverse from the current ``node`` ito the next ``node`` in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:237
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:245
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:248
+msgid "References"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:249
+msgid ""
+"`Simulated annaeling algorithm for beginners <http://www.theprojectspot.com"
+"/tutorial-post/simulated-annealing-algorithm-for-beginners/6>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:251
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:252
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:255
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:256
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:257
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/aStar-family.po b/locale/ja/LC_MESSAGES/aStar-family.po
new file mode 100644
index 0000000..3364e02
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/aStar-family.po
@@ -0,0 +1,205 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/aStar-family.rst:13
+msgid "aStar - Family of functions"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:15
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic that allow it to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:19
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:20
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:21
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:34
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:36
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic, that is an estimation of the remaining cost from the "
+"vertex to the goal, that allows to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph. Running time: :math:`O((E + "
+"V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:46
+msgid "Heuristic"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:48
+msgid "Currently the heuristic functions available are:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:50
+msgid "0: :math:`h(v) = 0` (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:51
+msgid "1: :math:`h(v) = abs(max(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:52
+msgid "2: :math:`h(v) = abs(min(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:53
+msgid "3: :math:`h(v) = \\Delta x * \\Delta x + \\Delta y * \\Delta y`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:54
+msgid "4: :math:`h(v) = sqrt(\\Delta x * \\Delta x + \\Delta y * \\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:55
+msgid "5: :math:`h(v) = abs(\\Delta x) + abs(\\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:57
+msgid "where :math:`\\Delta x = x_1 - x_0` and :math:`\\Delta y = y_1 - y_0`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:63 ../../build/doc/aStar-family.rst:76
+#: ../../build/doc/aStar-family.rst:89
+msgid "Factor"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:66
+msgid "Analysis 1"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:67
+msgid ""
+"Working with cost/reverse_cost as length in degrees, x/y in lat/lon: Factor "
+"= 1 (no need to change units)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:71
+msgid "Analysis 2"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:72
+msgid ""
+"Working with cost/reverse_cost as length in meters, x/y in lat/lon: Factor ="
+" would depend on the location of the points:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "latitude"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "conversion"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78 ../../build/doc/aStar-family.rst:91
+msgid "45"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "1 longitude degree is 78846.81 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "78846"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79 ../../build/doc/aStar-family.rst:92
+msgid "0"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "1 longitude degree is 111319.46 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "111319"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:83
+msgid "Analysis 3"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:84
+msgid ""
+"Working with cost/reverse_cost as time in seconds, x/y in lat/lon: Factor: "
+"would depend on the location of the points and on the average speed say "
+"25m/s is the speed."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "1 longitude degree is (78846.81m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "3153 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "1 longitude degree is (111319.46 m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "4452 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:98
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:100
+msgid ":ref:`pgr_aStar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:101
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:102
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:103
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:104
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:107
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:108
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:109
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/allpairs-family.po b/locale/ja/LC_MESSAGES/allpairs-family.po
new file mode 100644
index 0000000..9749ed9
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/allpairs-family.po
@@ -0,0 +1,996 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/allpairs-family.rst:14
+msgid "All Pairs - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:16
+msgid "The following functions work an all vertices pair combinations"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:33
+msgid "Performance"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "The following tests:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:36
+msgid "non server computer"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:37
+msgid "with AMD 64 CPU"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:38
+msgid "4G memory"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:39
+msgid "trusty"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "posgreSQL version 9.3"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:43
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:45
+msgid "The following data was used"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:53
+msgid "Data processing was done with osm2pgrouting-alpha"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:66
+msgid "Results"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:68
+msgid "One"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:70
+msgid ""
+"This test is not with a bounding box The density of the passed graph is "
+"extremely low. For each <SIZE> 30 tests were executed to get the average The"
+" tested query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:83
+#: ../../build/doc/allpairs-family.rst:140
+msgid "The results of this tests are presented as:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:85
+msgid "is the number of edges given as input."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:86
+#: ../../build/doc/allpairs-family.rst:143
+msgid "is the total number of records in the query."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:87
+#: ../../build/doc/allpairs-family.rst:144
+msgid "is the density of the data :math:`\\dfrac{E}{V \\times (V-1)}`."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:88
+#: ../../build/doc/allpairs-family.rst:145
+msgid "is the number of records returned by the queries."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:89
+#: ../../build/doc/allpairs-family.rst:146
+msgid "is the average execution time in seconds of pgr_floydWarshall."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:90
+#: ../../build/doc/allpairs-family.rst:147
+msgid "is the average execution time in seconds of pgr_johnson."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "SIZE"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "EDGES"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "DENSITY"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "OUT ROWS"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Floyd-Warshall"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Johnson"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+#: ../../build/doc/allpairs-family.rst:96
+msgid "500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.18E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "1346"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.14"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.13"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+#: ../../build/doc/allpairs-family.rst:97
+msgid "1000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.36E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "2655"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.23"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.18"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:98
+msgid "1500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.55E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "4110"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:99
+msgid "2000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.73E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "5676"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.56"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+#: ../../build/doc/allpairs-family.rst:100
+msgid "2500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.89E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "7177"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.84"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+#: ../../build/doc/allpairs-family.rst:101
+msgid "3000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.07E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "8778"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "0.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+#: ../../build/doc/allpairs-family.rst:102
+msgid "3500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "1.24E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "10526"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "2.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "0.95"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+#: ../../build/doc/allpairs-family.rst:103
+msgid "4000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.41E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "12484"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "3.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.58E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "14354"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+#: ../../build/doc/allpairs-family.rst:105
+msgid "5000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.76E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "16503"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "6.05"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.78"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+#: ../../build/doc/allpairs-family.rst:106
+msgid "5500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "1.93E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "18623"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "7.53"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "2.03"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+#: ../../build/doc/allpairs-family.rst:107
+msgid "6000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.11E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "20710"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "8.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+#: ../../build/doc/allpairs-family.rst:108
+msgid "6500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.28E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "22752"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "9.99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+#: ../../build/doc/allpairs-family.rst:109
+msgid "7000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "2.46E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "24687"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "11.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "3.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+#: ../../build/doc/allpairs-family.rst:110
+msgid "7500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "2.64E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "26861"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "13.94"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "3.60"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+#: ../../build/doc/allpairs-family.rst:111
+msgid "8000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "2.83E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "29050"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "15.61"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "4.09"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+#: ../../build/doc/allpairs-family.rst:112
+msgid "8500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "3.01E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "31693"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "17.43"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "4.63"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+#: ../../build/doc/allpairs-family.rst:113
+msgid "9000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "3.17E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "33879"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "19.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "5.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+#: ../../build/doc/allpairs-family.rst:114
+msgid "9500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "3.35E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "36287"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "20.77"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "6.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+#: ../../build/doc/allpairs-family.rst:115
+msgid "10000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "3.52E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "38491"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "23.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "6.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:119
+msgid "Two"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:121
+msgid ""
+"This test is with a bounding box The density of the passed graph higher than"
+" of the Test One. For each <SIZE> 30 tests were executed to get the average "
+"The tested edge query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:133
+msgid "The tested queries"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:142
+msgid "is the size of the bounding box."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.001"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "44"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.0608"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "1197"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:154
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.10"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.002"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.0251"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "4330"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.003"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "223"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.0122"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "18849"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.004"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "358"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.0085"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "71834"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.005"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "470"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.0070"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "116290"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.22"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.006"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "639"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.0055"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "207030"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.27"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "843"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.0043"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "346930"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.64"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.38"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.008"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "996"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.0037"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "469936"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.90"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.009"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1146"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.0032"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "613135"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.62"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.010"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1360"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.0027"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "849304"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1.87"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.011"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1573"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.0024"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1147101"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "2.65"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1.04"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1789"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.0021"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1483629"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "3.72"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1.35"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1975"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.0019"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1846897"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "4.86"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.014"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2281"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.0017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2438298"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "7.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2588"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.0015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "3156007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "10.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2.80"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.016"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "2958"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.0013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "4090618"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "14.67"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "3.76"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "3247"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.0012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4868919"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "18.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4.48"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:174
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:176
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:177
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:178
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:181
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:182
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:183
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/bdAstar-family.po b/locale/ja/LC_MESSAGES/bdAstar-family.po
new file mode 100644
index 0000000..b2bd16b
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/bdAstar-family.po
@@ -0,0 +1,394 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Bidirectional A* - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:18
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:35
+msgid ""
+"Based on A* algorithm, the bidirectional search finds a shortest path from a"
+" starting vertex (``start_vid``) to an ending vertex (``end_vid``). It runs "
+"two simultaneous searches: one forward from the ``start_vid``, and one "
+"backward from the ``end_vid``, stopping when the two meet in the middle. "
+"This implementation can be used with a directed graph and an undirected "
+"graph."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:60
+msgid "It is expected to terminate faster than pgr_astar"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:63
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:78 ../../build/doc/bdAstar-family.rst:80
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:72
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79 ../../build/doc/bdAstar-family.rst:81
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:84
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:85
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:89
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:90
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:91
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:92
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:93
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:94
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96 ../../build/doc/bdAstar-family.rst:97
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:103
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/bdDijkstra-family.po b/locale/ja/LC_MESSAGES/bdDijkstra-family.po
new file mode 100644
index 0000000..67de3fa
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/bdDijkstra-family.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdDijkstra-family.rst:13
+msgid "Bidirectional Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:17
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:18
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:19
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:35
+msgid ""
+"Based on Dijkstra's algorithm, the bidirectional search finds a shortest "
+"path a starting vertex (``start_vid``) to an ending vertex (``end_vid``). It"
+" runs two simultaneous searches: one forward from the source, and one "
+"backward from the target, stopping when the two meet in the middle. This "
+"implementation can be used with a directed graph and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:60
+msgid "It is expected to terminate faster than pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:63
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:66
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:67
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:68
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/components-family.po b/locale/ja/LC_MESSAGES/components-family.po
new file mode 100644
index 0000000..dbca49a
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/components-family.po
@@ -0,0 +1,750 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/components-family.rst:13
+msgid "Components - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:22
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:23
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:25
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:42
+msgid "The problem definition"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:45
+msgid "Connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:46
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:49
+#: ../../build/doc/components-family.rst:183
+#: ../../build/doc/components-family.rst:252
+#: ../../build/doc/components-family.rst:312
+msgid "**Notice**: This problem defines on an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:51
+#: ../../build/doc/components-family.rst:117
+#: ../../build/doc/components-family.rst:185
+#: ../../build/doc/components-family.rst:254
+#: ../../build/doc/components-family.rst:314
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:54
+msgid "pgr_connectedComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:56
+#: ../../build/doc/components-family.rst:122
+#: ../../build/doc/components-family.rst:190
+#: ../../build/doc/components-family.rst:259
+#: ../../build/doc/components-family.rst:319
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:58
+#: ../../build/doc/components-family.rst:124
+#: ../../build/doc/components-family.rst:192
+#: ../../build/doc/components-family.rst:261
+#: ../../build/doc/components-family.rst:321
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:60
+#: ../../build/doc/components-family.rst:126
+#: ../../build/doc/components-family.rst:194
+#: ../../build/doc/components-family.rst:263
+#: ../../build/doc/components-family.rst:323
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:61
+#: ../../build/doc/components-family.rst:127
+#: ../../build/doc/components-family.rst:195
+#: ../../build/doc/components-family.rst:264
+#: ../../build/doc/components-family.rst:324
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:63
+#: ../../build/doc/components-family.rst:129
+#: ../../build/doc/components-family.rst:197
+#: ../../build/doc/components-family.rst:266
+#: ../../build/doc/components-family.rst:326
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:65
+#: ../../build/doc/components-family.rst:199
+#: ../../build/doc/components-family.rst:268
+#: ../../build/doc/components-family.rst:328
+msgid "The weighted undirected graph, :math:`G(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:67
+#: ../../build/doc/components-family.rst:133
+#: ../../build/doc/components-family.rst:201
+#: ../../build/doc/components-family.rst:270
+#: ../../build/doc/components-family.rst:330
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:69
+#: ../../build/doc/components-family.rst:203
+#: ../../build/doc/components-family.rst:272
+#: ../../build/doc/components-family.rst:332
+msgid ":math:`V = source \\cup target`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:72
+#: ../../build/doc/components-family.rst:137
+#: ../../build/doc/components-family.rst:206
+#: ../../build/doc/components-family.rst:275
+#: ../../build/doc/components-family.rst:335
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:74
+#: ../../build/doc/components-family.rst:208
+#: ../../build/doc/components-family.rst:277
+#: ../../build/doc/components-family.rst:337
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, cost_i) \\text{ when } cost"
+" >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} \\\\ \\cup &\\{(source_i, target_i, reverse\\_cost_i) \\text{ when }"
+" reverse\\_cost_i >=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:77
+#: ../../build/doc/components-family.rst:142
+#: ../../build/doc/components-family.rst:211
+#: ../../build/doc/components-family.rst:280
+#: ../../build/doc/components-family.rst:340
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:79
+#: ../../build/doc/components-family.rst:144
+#: ../../build/doc/components-family.rst:213
+#: ../../build/doc/components-family.rst:282
+#: ../../build/doc/components-family.rst:342
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:81
+#: ../../build/doc/components-family.rst:146
+#: ../../build/doc/components-family.rst:215
+#: ../../build/doc/components-family.rst:284
+#: ../../build/doc/components-family.rst:344
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:89
+#: ../../build/doc/components-family.rst:154
+#: ../../build/doc/components-family.rst:223
+msgid ":math:`\\boldsymbol{\\pi} = \\{(component_i, n\\_seq_i, node_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:298
+#: ../../build/doc/components-family.rst:358
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:92
+msgid ":math:`component_i = \\min \\{node_j | node_j \\in component_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:93
+#: ../../build/doc/components-family.rst:158
+#: ../../build/doc/components-family.rst:227
+msgid ""
+":math:`n\\_seq_i` is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:94
+#: ../../build/doc/components-family.rst:159
+msgid ":math:`node_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:95
+#: ../../build/doc/components-family.rst:160
+#: ../../build/doc/components-family.rst:229
+#: ../../build/doc/components-family.rst:296
+#: ../../build/doc/components-family.rst:356
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:97
+#: ../../build/doc/components-family.rst:162
+#: ../../build/doc/components-family.rst:231
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:298
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+#: ../../build/doc/components-family.rst:170
+#: ../../build/doc/components-family.rst:239
+#: ../../build/doc/components-family.rst:301
+#: ../../build/doc/components-family.rst:361
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:101
+msgid "The first component is composed of nodes ``0``, ``1`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:102
+msgid "The second component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+msgid "The third component is composed of nodes ``2`` and ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:111
+msgid "Strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:112
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:115
+msgid "**Notice**: This problem defines on a directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:120
+msgid "pgr_strongComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:131
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:135
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:139
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:157
+#: ../../build/doc/components-family.rst:226
+msgid ":math:`component_i = \\min {node_j | node_j \\in component_i}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:166
+msgid "The first component is composed of nodes ``1``, ``2`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:167
+msgid "The second component is composed of node ``0``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:168
+msgid "The third component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:169
+msgid "The fourth component is composed of node ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:170
+msgid "The fifth component is composed of node ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:177
+msgid "Biconnected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:178
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:188
+msgid "pgr_biconnectedComponents(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:228
+msgid ":math:`edge_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:358
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:235
+msgid ""
+"The first component is composed of edges ``1 - 2``, ``0 - 1`` and ``0 - 2``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:236
+msgid ""
+"The second component is composed of edges ``2 - 4``, ``2 - 3`` and ``3 - "
+"4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:237
+msgid "The third component is composed of edge ``5 - 6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:238
+msgid "The fourth component is composed of edge ``6 - 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:239
+msgid ""
+"The fifth component is composed of edges ``8 - 9``, ``9 - 10`` and ``8 - "
+"10``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:246
+msgid "Articulation Points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:247
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:257
+msgid "pgr_articulationPoints(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:292
+msgid ":math:`\\boldsymbol{\\pi} = \\{node_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:295
+msgid ":math:`node_i` is an articulation point."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:301
+msgid "Articulation points are nodes ``2`` and ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:308
+msgid "Bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:309
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:317
+msgid "pgr_bridges(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:352
+msgid ":math:`\\boldsymbol{\\pi} = \\{edge_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:355
+msgid ":math:`edge_i` is an edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:361
+msgid "Bridges are edges ``5 <--> 6`` and ``6 <--> 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:370
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:372
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:378
+#: ../../build/doc/components-family.rst:379
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+#: ../../build/doc/components-family.rst:384
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:382
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:386
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:390
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:392
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:393
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:402
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:405
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:416
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:418
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:444
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:443
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:443
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:461
+#: ../../build/doc/components-family.rst:477
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:435
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:437
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:443
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:453
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:455
+#: ../../build/doc/components-family.rst:471
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:469
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:483
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:486
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:487
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:488
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/contraction-family.po b/locale/ja/LC_MESSAGES/contraction-family.po
new file mode 100644
index 0000000..182343c
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/contraction-family.po
@@ -0,0 +1,745 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/contraction-family.rst:14
+msgid "Contraction - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:21
+msgid ":ref:`pgr_contractGraph`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:29
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:31
+msgid ""
+"In big graphs, like the road graphs, or electric networks, graph contraction"
+" can be used to speed up some graph algorithms. Contraction reduces the size"
+" of the graph by removing some of the vertices and edges and, for example, "
+"might add edges that represent a sequence of original edges decreasing the "
+"total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:33
+msgid ""
+"This implementation gives a flexible framework for adding contraction "
+"algorithms in the future, currently, it supports two algorithms:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:35
+#: ../../build/doc/contraction-family.rst:46
+msgid "Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:36
+#: ../../build/doc/contraction-family.rst:166
+msgid "Linear contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:38
+msgid "Allowing the user to:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:40
+msgid "Forbid contraction on a set of nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:41
+msgid ""
+"Decide the order of the contraction algorithms and set the maximum number of"
+" times they are to be executed."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:43
+msgid "UNDER DISCUSSION: Forbid contraction on a set of edges"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:47
+msgid "In the algorithm, dead end contraction is represented by 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:50
+msgid "Dead end nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:52
+msgid ""
+"The definition of a dead end node is different for a directed and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:54
+msgid "In case of a undirected graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:56
+msgid "The number of adjacent vertices is 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:58
+msgid "In case of an directed graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:60
+msgid "There are no outgoing edges and has at least one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:61
+msgid "There is one incoming and one outgoing edge with the same identifier."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:64
+#: ../../build/doc/contraction-family.rst:178
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:65
+msgid "The green node ``B`` represents a dead end node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:66
+msgid "The node ``A`` is the only node connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:67
+#: ../../build/doc/contraction-family.rst:181
+msgid ""
+"Node ``A`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:68
+#: ../../build/doc/contraction-family.rst:183
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:86
+msgid "Operation: Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:88
+msgid ""
+"The dead end contraction will stop until there are no more dead end nodes. "
+"For example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:91
+#: ../../build/doc/contraction-family.rst:208
+msgid ""
+"Node ``A`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:92
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:93
+msgid "Node ``B`` is the only node connecting to ``C``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:94
+msgid "The green node ``C`` represents a `Dead End` node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:113
+msgid ""
+"After contracting ``C``, node ``B`` is now a `Dead End` node and is "
+"contracted:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:129
+msgid "Node ``B`` gets contracted"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:143
+msgid "Nodes ``B`` and ``C`` belong to node ``A``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:148
+msgid "Not Dead End nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:150
+msgid "In this graph ``B`` is not a `dead end` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:167
+msgid "In the algorithm, linear contraction is represented by 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:170
+msgid "Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:172
+msgid "A node is considered a linear node if satisfies the following:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:174
+msgid "The number of adjacent vertices are 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:175
+msgid "Should have at least one incoming edge and one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:179
+msgid "The green node ``B`` represents a linear node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:180
+msgid "The nodes ``A`` and ``C`` are the only nodes connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:182
+msgid ""
+"Node ``C`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:203
+msgid "Operation: Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:205
+msgid ""
+"The linear contraction will stop until there are no more linear nodes. For "
+"example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:209
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:210
+msgid ""
+"Node ``C`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:211
+msgid ""
+"Node ``D`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:212
+msgid "The green nodes ``B`` and ``C`` represents `Linear` nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:234
+msgid ""
+"After contracting ``B``, a new edge gets inserted between ``A`` and ``C`` "
+"which is represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:254
+msgid "Node ``C`` is `linear node` and gets contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:272
+msgid ""
+"Nodes ``B`` and ``C`` belong to edge connecting ``A`` and ``D`` which is "
+"represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:275
+msgid "Not Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:277
+msgid "In this graph ``B`` is not a `linear` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:298
+msgid "The cycle"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:300
+msgid ""
+"Contracting a graph, can be done with more than one operation. The order of "
+"the operations affect the resulting contracted graph, after applying one "
+"operation, the set of vertices that can be contracted by another operation "
+"changes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:302
+msgid ""
+"This implementation, cycles ``max_cycles`` times through "
+"``operations_order`` ."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:315
+msgid "Contracting Sample Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:317
+msgid ""
+"In this section, building and using a contracted graph will be shown by "
+"example."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:319
+msgid "The :doc:`sampledata` for an undirected graph is used"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:320
+msgid "a dead end operation first followed by a linear operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:322
+msgid "The original graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:326
+msgid "After doing a dead end contraction operation:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:330
+msgid "Doing a linear contraction operation to the graph above"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:335
+msgid ""
+"There are five cases, in this documentation, which arise when calculating "
+"the shortest path between a given source and target. In this examples, "
+"``pgr_dijkstra`` is used."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:338
+msgid "**Case 1**: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:339
+msgid ""
+"**Case 2**: Source belongs to a contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:340
+msgid ""
+"**Case 3**: Source belongs to a vertex subgraph, while target belongs to an "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:341
+msgid ""
+"**Case 4**: Source belongs to a contracted graph, while target belongs to an"
+" vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:342
+msgid ""
+"**Case 5**: The path contains a new edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:345
+msgid "Construction of the graph in the database"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:348
+msgid "Original Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:349
+msgid ""
+"The following query shows the original data involved in the contraction "
+"operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:356
+msgid "Contraction Results"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:361
+msgid ""
+"The above results do not represent the contracted graph. They represent the "
+"changes done to the graph after applying the contraction algorithm. We can "
+"see that vertices like 6 and 11 do not appear in the contraction results "
+"because they were not affected by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:364
+msgid "step 1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:365
+msgid ""
+"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` "
+"tables:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "The vertices set belonging to the vertex/edge"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+#: ../../build/doc/contraction-family.rst:372
+msgid "**is_contracted**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+msgid ""
+"On a `vertex` table: when ``true`` the vertex is contracted, so is not part "
+"of the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:372
+msgid ""
+"On an `edge` table: when ``true`` the edge was generated by the contraction "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:375
+msgid "Using the following queries:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:382
+msgid "step 2"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:383
+msgid ""
+"For simplicity, in this documentation, store the results of the call to "
+"pgr_contractGraph in a temporary table"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:390
+msgid "step 3"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:391
+msgid ""
+"Update the `vertex` and `edge` tables using the results of the call to "
+"pgr_contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:393
+msgid ""
+"In `edge_table_vertices_pgr.is_contracted` indicate the vertices that are "
+"contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:399
+msgid ""
+"Add to `edge_table_vertices_pgr.contracted_vertices` the contracted "
+"vertices belonging to the vertices."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:405
+msgid "Insert the new edges generated by pgr_contractGraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:412
+msgid "step 3.1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:413
+msgid "Verify visually the updates."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:415
+msgid "On the `edge_table_vertices_pgr`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:421
+msgid "On the `edge_table`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:427
+msgid ""
+"vertices that belong to the contracted graph are the non contracted vertices"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:434
+msgid "case 1: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:435
+msgid ""
+"Inspecting the contracted graph above, vertex 3 and vertex 11 are part of "
+"the contracted graph. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:437
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:438
+#: ../../build/doc/contraction-family.rst:452
+#: ../../build/doc/contraction-family.rst:469
+#: ../../build/doc/contraction-family.rst:485
+#: ../../build/doc/contraction-family.rst:507
+msgid ""
+"when selecting the edges, only edges that have the source and the target in "
+"that set are the edges belonging to the contracted graph, that is done in "
+"the WHERE clause."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:440
+msgid ""
+"Visually, looking at the original graph, going from 3 to 11: 3 -> 6 -> 11, "
+"and in the contracted graph, it is also 3 -> 6 -> 11. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:448
+msgid ""
+"case 2: Source belongs to the contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:452
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 1 belongs to the contracted subgraph of edge 19. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:450
+msgid ""
+"expand1 holds the contracted vertices of the edge where vertex 1 belongs. "
+"(belongs to edge 19)."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:451
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"also the contracted vertices of edge 19."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:454
+msgid ""
+"Visually, looking at the original graph, going from 3 to 1: 3 -> 2 -> 1, and"
+" in the contracted graph, it is also 3 -> 2 -> 1. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:463
+msgid ""
+"case 3: Source belongs to a vertex subgraph, while target belongs to an edge"
+" subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:464
+msgid ""
+"Inspecting the contracted graph above, vertex 7 belongs to the contracted "
+"subgraph of vertex 5 and vertex 13 belongs to the contracted subgraph of "
+"edge 21. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:466
+#: ../../build/doc/contraction-family.rst:483
+msgid ""
+"expand7 holds the contracted vertices of vertex where vertex 7 belongs. "
+"(belongs to vertex 5)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:467
+msgid ""
+"expand13 holds the contracted vertices of edge where vertex 13 belongs. "
+"(belongs to edge 21)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:468
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"contracted vertices of vertex 5 and contracted vertices of edge 21."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:471
+msgid ""
+"Visually, looking at the original graph, going from 7 to 13: 7 -> 8 -> 5 -> "
+"10 -> 13, and in the contracted graph, it is also 7 -> 8 -> 5 -> 10 -> 13. "
+"The results, on the contracted graph match the results as if it was done on "
+"the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:480
+msgid ""
+"case 4: Source belongs to the contracted graph, while target belongs to an "
+"vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:481
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 7 belongs to the contracted subgraph of vertex 5. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:484
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"the contracted vertices of vertex 5."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:487
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, but in the contracted graph, it is 3 -> 5 -> 8 -> 7. The results, on "
+"the contracted graph do not match the results as if it was done on the "
+"original graph. This is because the path contains edge 19 which is added by "
+"the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:495
+msgid "case 5: The path contains an edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:496
+msgid ""
+"In the previous example we can see that the path from vertex 3 to vertex 7 "
+"contains an edge which is added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:502
+msgid ""
+"Inspecting the contracted graph above, edge 19 should be expanded. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:504
+msgid "first_dijkstra holds the results of the dijkstra query."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:505
+msgid ""
+"edges_to_expand holds the edges added by the contraction algorithm and "
+"included in the path."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:506
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"vertices of the contracted solution and the contracted vertices of the edges"
+" added by the contraction algorithm and included in the contracted solution."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:509
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, and in the contracted graph, it is also 3 -> 2 -> 5 -> 8 -> 7. The "
+"results, on the contracted graph match the results as if it was done on the "
+"original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:517
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:519
+msgid ""
+"http://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:520
+msgid "http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:521
+msgid ""
+"The queries use :ref:`pgr_contractGraph` function and the :doc:`sampledata` "
+"network."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:524
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:525
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:526
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/cost-category.po b/locale/ja/LC_MESSAGES/cost-category.po
new file mode 100644
index 0000000..efea606
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/cost-category.po
@@ -0,0 +1,178 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost-category.rst:13
+msgid "Cost - Category"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:17
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:18
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:20
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:21
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:34
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:36
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:38
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:39
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:40
+msgid ""
+"Returns the sum of the costs of the resulting path(s) for pair combination "
+"of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:44
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:46
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:48
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:50
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:52
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:54
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:56
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:58
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:60
+msgid "Any duplicated value in the `start_vids` or in `end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:62
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:64
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:65
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/costMatrix-category.po b/locale/ja/LC_MESSAGES/costMatrix-category.po
new file mode 100644
index 0000000..ad36b5e
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/costMatrix-category.po
@@ -0,0 +1,237 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/costMatrix-category.rst:13
+msgid "Cost Matrix - Category"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:17
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:18
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:20
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:21
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:40
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:43
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:45
+msgid ""
+":ref:`tsp` needs as input a symmetric cost matrix and no edge `(u, v)` must "
+"value :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:47
+msgid ""
+"This collection of functions will return a cost matrix in form of a table."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:53
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:55
+msgid "Can be used as input to :ref:`pgr_tsp`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:57
+msgid ""
+"when the resulting matrix is symmetric and there is no :math:`\\infty` "
+"value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:58
+msgid "It will be the users responsibility to make the matrix symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:60
+msgid "By using geometric or harmonic average of the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:61
+msgid "By using max or min the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:62
+msgid ""
+"By setting the upper triangle to be the mirror image of the lower triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:63
+msgid ""
+"By setting the lower triangle to be the mirror image of the upper triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:65
+msgid "It is also the users responsibility to fix an :math:`\\infty` value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:67
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:68
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:69
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:70
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:71
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:73
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:75
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:77
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:79
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:81
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:83
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:85
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:87
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:89
+msgid "Any duplicated value in the `start_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:91
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:93
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:94
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:96
+msgid "Running time: approximately :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:101
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:103
+msgid ":ref:`pgr_tsp`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/cost_result.po b/locale/ja/LC_MESSAGES/cost_result.po
new file mode 100644
index 0000000..cfc1232
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/cost_result.po
@@ -0,0 +1,92 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost_result.rst:13
+msgid "pgr_costResult[]"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:19 ../../build/doc/cost_result.rst:52
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:21
+msgid ""
+"``pgr_costResult[]`` — A set of records to describe a path result with cost "
+"attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:25 ../../build/doc/cost_result.rst:58
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:37 ../../build/doc/cost_result.rst:71
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:38 ../../build/doc/cost_result.rst:73
+msgid "generic name, to be specified by the function, typically the node id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:39 ../../build/doc/cost_result.rst:74
+msgid "generic name, to be specified by the function, typically the edge id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:40 ../../build/doc/cost_result.rst:75
+msgid "cost attribute"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:46
+msgid "pgr_costResult3[] - Multiple Path Results with Cost"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:54
+msgid ""
+"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
+" attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:72
+msgid "generic name, to be specified by the function, typically the path id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:79
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:80
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:81
+msgid "Replaces ``path_result``"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:87
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/dijkstra-family.po b/locale/ja/LC_MESSAGES/dijkstra-family.po
new file mode 100644
index 0000000..a9fa495
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/dijkstra-family.po
@@ -0,0 +1,262 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/dijkstra-family.rst:13
+msgid "Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:17
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:18
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:19
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:20
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:21
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:22
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:39
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:42
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:45
+msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:47
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:49
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:51
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:52
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:54
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:57
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:58
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:60
+#: ../../build/doc/dijkstra-family.rst:79
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:62
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:64
+#: ../../build/doc/dijkstra-family.rst:84
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:66
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = \\varnothing \\\\"
+" \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } \\{(source_i, "
+"target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup"
+" \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } "
+"reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:76
+msgid "Undirected graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:77
+msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:81
+msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:86
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, "
+"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } "
+"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ "
+"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & "
+"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost "
+">=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) "
+"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup "
+"\\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:99
+msgid "The problem"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:100
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:102
+msgid ":math:`start_{vid} \\in V` a starting vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:103
+msgid ":math:`end_{vid} \\in V` an ending vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:104
+msgid ""
+":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = "
+"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:109
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:118
+msgid ""
+":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, "
+"agg\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:131
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:121
+msgid ":math:`path\\_seq_i = i`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:122
+msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:123
+msgid ":math:`node_i \\in V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:124
+msgid ":math:`node_1 = start_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:125
+msgid ":math:`node_{| \\pi |} = end_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:126
+msgid ":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:127
+msgid ""
+":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad "
+"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | "
+"\\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:128
+msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:129
+msgid ""
+":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 "
+"\\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad "
+"\\text{when } i \\neq 1 \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:137
+msgid ""
+"In other words: The algorithm returns a the shortest path between "
+":math:`start_{vid}` and :math:`end_{vid}` , if it exists, in terms of a "
+"sequence of nodes and of edges,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:134
+msgid ""
+":math:`path\\_seq` indicates the relative position in the path of the "
+":math:`node` or :math:`edge`."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:135
+msgid ""
+":math:`cost` is the cost of the edge to be used to go to the next node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:136
+msgid ""
+":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:139
+msgid "If there is no path, the resulting set is empty."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:143
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:146
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:147
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:148
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/drivingDistance-category.po b/locale/ja/LC_MESSAGES/drivingDistance-category.po
new file mode 100644
index 0000000..a71b4c7
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/drivingDistance-category.po
@@ -0,0 +1,52 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/drivingDistance-category.rst:14
+msgid "Driving Distance - Category"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:18
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:19
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:20
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:22
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:23
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:36
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:39
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:40
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:41
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/flow-family.po b/locale/ja/LC_MESSAGES/flow-family.po
new file mode 100644
index 0000000..a000199
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/flow-family.po
@@ -0,0 +1,331 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Flow - Family of functions"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:19
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:23
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:24
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:45
+msgid "Flow Functions General Information"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:52
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:53
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:54
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:56
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:58
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:59
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:61
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:63
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:64
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:66
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:67
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:72
+msgid ""
+":ref:`pgr_maxFlow <pgr_maxFlow>` is the maximum Flow and that maximum is "
+"guaranteed to be the same on the functions :ref:`pgr_pushRelabel "
+"<pgr_pushRelabel>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`, "
+":ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, but the actual flow "
+"through each edge may vary."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:77
+msgid "Problem definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:79
+msgid ""
+"A flow network is a directed graph where each edge has a capacity and a "
+"flow. The flow through an edge must not exceed the capacity of the edge. "
+"Additionally, the incoming and outgoing flow of a node must be equal except "
+"the for source which only has outgoing flow, and the destination(sink) which"
+" only has incoming flow."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:83
+msgid ""
+"Maximum flow algorithms calculate the maximum flow through the graph and the"
+" flow of each edge."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:85
+msgid ""
+"The maximum flow through the graph is guaranteed to be the same with all "
+"implementations, but the actual flow through each edge may vary. Given the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:89
+msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:91
+msgid ""
+"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, "
+"reverse\\_capacity_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:94
+msgid "Graph definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:95
+msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:97
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:99
+msgid ""
+":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup "
+"target_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:101
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:103
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) "
+"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = "
+"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, "
+"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup "
+"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } "
+"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:111
+msgid "Maximum flow problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:112
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:115
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:116
+msgid ":math:`source\\_vertex \\in V` the source vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:117
+msgid ":math:`sink\\_vertex \\in V` the sink vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:119
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:121
+msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:123
+msgid ""
+":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, "
+"flow_i, residual\\_capacity_i)}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:125
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:127
+msgid ""
+":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their "
+"residual capacity and flow. The maximum flow through the graph can be "
+"obtained by aggregating on the source or sink and summing the flow from/to "
+"it. In particular:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:129
+msgid ":math:`id_i = i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:130
+msgid ":math:`edge\\_id = id_i` in edges_sql"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:131
+msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:135
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:137
+msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/geom_result.po b/locale/ja/LC_MESSAGES/geom_result.po
new file mode 100644
index 0000000..e2d89a1
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/geom_result.po
@@ -0,0 +1,74 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/geom_result.rst:13
+msgid "pgr_geomResult[]"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:21
+msgid ""
+"``pgr_geomResult[]`` — A set of records to describe a path result with "
+"geometry attribute."
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:25
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:37
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:38 ../../build/doc/geom_result.rst:39
+msgid "generic name, to be specified by the function"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:40
+msgid "geometry attribute"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:44
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:45
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:46
+msgid "Replaces ``geoms``"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:50
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:52
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:56
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:57
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:58
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/index.po b/locale/ja/LC_MESSAGES/index.po
new file mode 100644
index 0000000..44ac3e4
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/index.po
@@ -0,0 +1,306 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/index.rst:14
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/index.rst:16
+msgid ""
+"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
+"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
+"and other network analysis functionality."
+msgstr ""
+
+#: ../../build/doc/index.rst:18
+msgid "This is the manual for pgRouting |release|."
+msgstr ""
+
+#: ../../build/doc/index.rst:24
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
+"free to use this material any way you like, but we ask that you attribute "
+"credit to the pgRouting Project and wherever possible, a link back to "
+"http://pgrouting.org. For other licenses used in pgRouting see the "
+":ref:`license` page."
+msgstr ""
+
+#: ../../build/doc/index.rst:27
+msgid "General"
+msgstr ""
+
+#: ../../build/doc/index.rst:37
+msgid ":doc:`sampledata` that is used in the examples of this manual."
+msgstr ""
+
+#: ../../build/doc/index.rst:45
+msgid "Pgrouting Concepts"
+msgstr ""
+
+#: ../../build/doc/index.rst:54
+msgid "Reference"
+msgstr ""
+
+#: ../../build/doc/index.rst:55
+msgid ":ref:`pgr_version` - to get pgRouting's version information."
+msgstr ""
+
+#: ../../build/doc/index.rst:64
+msgid ":ref:`Data Types <data_types>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:67
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:68
+msgid ""
+":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
+" path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:69
+msgid ""
+":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:78
+msgid ":ref:`Topology Functions <topology_functions>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:80
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/index.rst:81
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/index.rst:82
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/index.rst:83
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/index.rst:84
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/index.rst:93
+msgid ":ref:`Routing functions <routing_functions>`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:4
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:6
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:7
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:9
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:11
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:13
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:16
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:22
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:32
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/index.rst:108
+msgid "Available Functions but not official pgRouting functions"
+msgstr ""
+
+#: ../../build/doc/index.rst:110
+msgid ":ref:`Stable`"
+msgstr ""
+
+#: ../../build/doc/index.rst:111
+msgid ":ref:`proposed`"
+msgstr ""
+
+#: ../../build/doc/index.rst:121
+msgid ":ref:`Change Log <change_log>`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:3
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:4
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:5
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:6
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:7
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:8
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:9
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:10
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:11
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:12
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:13
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:14
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:16
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:17
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/index.rst:135
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/index.rst:136
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/index.rst:137
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgRouting-concepts.po b/locale/ja/LC_MESSAGES/pgRouting-concepts.po
new file mode 100644
index 0000000..34885ba
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgRouting-concepts.po
@@ -0,0 +1,1071 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "pgRouting Concepts"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:0
+msgid "Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "Getting Started"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid ""
+"This is a simple guide to walk you through the steps of getting started with"
+" pgRouting. In this guide we will cover:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:32
+msgid "Create a routing Database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:34
+msgid ""
+"The first thing we need to do is create a database and load pgrouting in the"
+" database. Typically you will create a database for each project. Once you "
+"have a database to work in, your can load your data and build your "
+"application in that database. This makes it easy to move your project later "
+"if you want to to say a production server."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:40
+msgid "For Postgresql 9.2 and later versions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:51
+msgid "Load Data"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:53
+msgid ""
+"How you load your data will depend in what form it comes it. There are "
+"various OpenSource tools that can help you, like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:56
+msgid ""
+"this is a tool for loading OSM data into postgresql with pgRouting "
+"requirements"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:57
+msgid "this is the postgresql shapefile loader"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:58
+msgid "this is a vector data conversion utility"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:59
+msgid "this is a tool for loading OSM data into postgresql"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:61
+msgid ""
+"So these tools and probably others will allow you to read vector data so "
+"that you may then load that data into your database as a table of some kind."
+" At this point you need to know a little about your data structure and "
+"content. One easy way to browse your new data table is with pgAdmin3 or "
+"phpPgAdmin."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:69
+msgid "Build a Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:71
+msgid ""
+"Next we need to build a topology for our street data. What this means is "
+"that for any given edge in your street data the ends of that edge will be "
+"connected to a unique node and to other edges that are also connected to "
+"that same unique node. Once all the edges are connected to nodes we have a "
+"graph that can be used for routing with pgrouting. We provide a tool that "
+"will help with this:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:77
+msgid "this step is not needed if data is loaded with `osm2pgrouting`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:83
+msgid ":ref:`pgr_create_topology`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:88
+msgid "Check the Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:90
+msgid ""
+"There are lots of possible sources for errors in a graph. The data that you "
+"started with may not have been designed with routing in mind. A graph has "
+"some very specific requirements. One is that it is *NODED*, this means that "
+"except for some very specific use cases, each road segment starts and ends "
+"at a node and that in general is does not cross another road segment that it"
+" should be connected to."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:97
+msgid ""
+"There can be other errors like the direction of a one-way street being "
+"entered in the wrong direction. We do not have tools to search for all "
+"possible errors but we have some basic tools that might help."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:109
+msgid ":ref:`pgr_analyze_graph`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:110
+msgid ":ref:`pgr_analyze_oneway`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:111
+msgid ":ref:`pgr_node_network`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:117
+msgid "Compute a Path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:119
+msgid ""
+"Once you have all the preparation work done above, computing a route is "
+"fairly easy. We have a lot of different algorithms that can work with your "
+"prepared road network. The general form of a route query is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:127
+msgid ""
+"As you can see this is fairly straight forward and you can look and the "
+"specific algorithms for the details of the signatures and how to use them. "
+"These results have information like edge id and/or the node id along with "
+"the cost or geometry for the step in the path from *start* to *end*. Using "
+"the ids you can join these result back to your edge table to get more "
+"information about each step in the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:134
+msgid ":ref:`pgr_dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:141
+msgid "Inner Queries"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:146
+msgid ""
+"There are several kinds of valid inner queries and also the columns returned"
+" are depending of the function. Which kind of inner query will depend on the"
+" function(s) requirements. To simplify variety of types, ``ANY-INTEGER`` and"
+" ``ANY-NUMERICAL`` is used."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:152
+#: ../../build/doc/pgRouting-concepts.rst:182
+#: ../../build/doc/pgRouting-concepts.rst:212
+#: ../../build/doc/pgRouting-concepts.rst:269
+#: ../../build/doc/pgRouting-concepts.rst:300
+#: ../../build/doc/pgRouting-concepts.rst:334
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:154
+#: ../../build/doc/pgRouting-concepts.rst:184
+#: ../../build/doc/pgRouting-concepts.rst:214
+#: ../../build/doc/pgRouting-concepts.rst:271
+#: ../../build/doc/pgRouting-concepts.rst:302
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:155
+#: ../../build/doc/pgRouting-concepts.rst:185
+#: ../../build/doc/pgRouting-concepts.rst:215
+#: ../../build/doc/pgRouting-concepts.rst:272
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:162
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:164
+#: ../../build/doc/pgRouting-concepts.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:247
+#: ../../build/doc/pgRouting-concepts.rst:282
+#: ../../build/doc/pgRouting-concepts.rst:314
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:287
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:290
+#: ../../build/doc/pgRouting-concepts.rst:294
+#: ../../build/doc/pgRouting-concepts.rst:319
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:263
+#: ../../build/doc/pgRouting-concepts.rst:264
+#: ../../build/doc/pgRouting-concepts.rst:265
+#: ../../build/doc/pgRouting-concepts.rst:266
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:174
+#: ../../build/doc/pgRouting-concepts.rst:204
+#: ../../build/doc/pgRouting-concepts.rst:257
+#: ../../build/doc/pgRouting-concepts.rst:292
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:178
+#: ../../build/doc/pgRouting-concepts.rst:208
+#: ../../build/doc/pgRouting-concepts.rst:261
+#: ../../build/doc/pgRouting-concepts.rst:296
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:193
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:224
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:227
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:232
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:234
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:236
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:245
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:280
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:312
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:321
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:322
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:328
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:329
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:330
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:336
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:337
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:345
+msgid "Return columns & values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:350
+msgid ""
+"There are several kinds of columns returned are depending of the function."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:355
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:357
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:363
+#: ../../build/doc/pgRouting-concepts.rst:364
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:367
+#: ../../build/doc/pgRouting-concepts.rst:368
+#: ../../build/doc/pgRouting-concepts.rst:385
+#: ../../build/doc/pgRouting-concepts.rst:386
+#: ../../build/doc/pgRouting-concepts.rst:403
+#: ../../build/doc/pgRouting-concepts.rst:404
+#: ../../build/doc/pgRouting-concepts.rst:405
+#: ../../build/doc/pgRouting-concepts.rst:406
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:378
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:380
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:397
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:415
+msgid "Advanced Topics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:423
+msgid "Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:427
+#: ../../build/doc/pgRouting-concepts.rst:528
+msgid "Overview"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:428
+msgid ""
+"Typically when GIS files are loaded into the data database for use with "
+"pgRouting they do not have topology information associated with them. To "
+"create a useful topology the data needs to be \"noded\". This means that "
+"where two or more roads form an intersection there it needs to be a node at "
+"the intersection and all the road segments need to be broken at the "
+"intersection, assuming that you can navigate from any of these segments to "
+"any other segment via that intersection."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:430
+msgid ""
+"You can use the :ref:`graph analysis functions <analytics>` to help you see "
+"where you might have topology problems in your data. If you need to node "
+"your data, we also have a function :ref:`pgr_nodeNetwork() "
+"<pgr_node_network>` that might work for you. This function splits ALL "
+"crossing segments and nodes them. There are some cases where this might NOT "
+"be the right thing to do."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:432
+msgid ""
+"For example, when you have an overpass and underpass intersection, you do "
+"not want these noded, but pgr_nodeNetwork does not know that is the case and"
+" will node them which is not good because then the router will be able to "
+"turn off the overpass onto the underpass like it was a flat 2D intersection."
+" To deal with this problem some data sets use z-levels at these types of "
+"intersections and other data might not node these intersection which would "
+"be ok."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:434
+msgid ""
+"For those cases where topology needs to be added the following functions may"
+" be useful. One way to prep the data for pgRouting is to add the following "
+"columns to your table and then populate them as appropriate. This example "
+"makes a lot of assumption like that you original data tables already has "
+"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
+"that they contain specific data values. This is only to give you an idea of "
+"what you can do with your data."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:455
+msgid ""
+"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
+"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
+"columns. The following example populated the remaining columns. In this "
+"example, the ``fcc`` column contains feature class code and the ``CASE`` "
+"statements converts it to an average speed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:518
+msgid ""
+"Now your database should be ready to use any (most?) of the pgRouting "
+"algorithms."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:524
+msgid "Graph Analytics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:529
+msgid ""
+"It is common to find problems with graphs that have not been constructed "
+"fully noded or in graphs with z-levels at intersection that have been "
+"entered incorrectly. An other problem is one way streets that have been "
+"entered in the wrong direction. We can not detect errors with respect to "
+"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
+"a graph and report them for additional inspections."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:531
+msgid ""
+"We do not current have any visualization tools for these problems, but I "
+"have used mapserver to render the graph and highlight potential problem "
+"areas. Someone familiar with graphviz might contribute tools for generating "
+"images with that."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:535
+msgid "Analyze a Graph"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:537
+msgid ""
+"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
+"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
+"table:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:560
+msgid "In the vertices table \"mytab_vertices_pgr\":"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:562
+msgid "Deadends are identified by ``cnt=1``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:563
+msgid "Potencial gap problems are identified with ``chk=1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:581
+msgid ""
+"For isolated road segments, for example, a segment where both ends are "
+"deadends. you can find these with the following query:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:590
+msgid ""
+"If you want to visualize these on a graphic image, then you can use "
+"something like mapserver to render the edges and the vertices and style "
+"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
+"tool like graphviz, or geoserver or other similar tools."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:594
+msgid "Analyze One Way Streets"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:596
+msgid ""
+":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
+" any flipped segments. Basically if you count the edges coming into a node "
+"and the edges exiting a node the number has to be greater than one."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:598
+msgid ""
+"This query will add two columns to the vertices_tmp table ``ein int`` and "
+"``eout int`` and populate it with the appropriate counts. After running this"
+" on a graph you can identify nodes with potential problems with the "
+"following query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:601
+msgid ""
+"The rules are defined as an array of text strings that if match the ``col`` "
+"value would be counted as true for the source or target in or out condition."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:605
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:607
+msgid ""
+"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
+"might have values like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:609
+msgid "'FT' - oneway from the source to the target node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:610
+msgid "'TF' - oneway from the target to the source node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:611
+msgid "'B' - two way street."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:612
+msgid "'' - empty field, assume twoway."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:613
+msgid "<NULL> - NULL field, use two_way_if_null flag."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:615
+msgid ""
+"Then we could form the following query to analyze the oneway streets for "
+"errors."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:634
+msgid ""
+"Typically these problems are generated by a break in the network, the one "
+"way direction set wrong, maybe an error related to z-levels or a network "
+"that is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:636
+msgid ""
+"The above tools do not detect all network issues, but they will identify "
+"some common problems. There are other problems that are hard to detect "
+"because they are more global in nature like multiple disconnected networks. "
+"Think of an island with a road network that is not connected to the mainland"
+" network because the bridge or ferry routes are missing."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:644
+msgid "Performance Tips"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:651
+msgid "For the Routing functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:653
+msgid ""
+"To get faster results bound your queries to the area of interest of routing "
+"to have, for example, no more than one million rows."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:655
+msgid ""
+"Use an inner query SQL that does not include some edges in the routing "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:663
+msgid "Integrating the inner query to the pgRouting function:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:677
+msgid "For the topology functions:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:679
+msgid ""
+"When \"you know\" that you are going to remove a set of edges from the edges"
+" table, and without those edges you are going to use a routing function you "
+"can do the following:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:681
+msgid "Analize the new topology based on the actual topology:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:687
+msgid "Or create a new topology if the change is permanent:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:698
+msgid "How to contribute"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:701
+msgid "Wiki"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:702
+msgid ""
+"Edit an existing `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_ page."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:703
+msgid "Or create a new Wiki page"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:705
+msgid ""
+"Create a page on the `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:706
+msgid "Give the title an appropriate name"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:709
+msgid ""
+"`Example <https://github.com/pgRouting/pgrouting/wiki/How-to:-Handle-"
+"parallel-edges-(KSP)>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:713
+msgid "Adding Functionaity to pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:714
+msgid ""
+"Consult the `developer's documentation "
+"<http://docs.pgrouting.org/doxy/2.4/index.html>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:719
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:720
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:721
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgRouting-installation.po b/locale/ja/LC_MESSAGES/pgRouting-installation.po
new file mode 100644
index 0000000..71b7f5f
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgRouting-installation.po
@@ -0,0 +1,418 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-installation.rst:13
+msgid "Installation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:16
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:17
+msgid ":ref:`install-short`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:18
+msgid ":ref:`install_get_sources`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:19
+msgid ":ref:`install_enable_db`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:20
+msgid ":ref:`install_dependencies`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:21
+msgid ":ref:`install_configuring`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:22
+msgid ":ref:`install_build`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:23
+msgid ":ref:`install_testing`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:25
+msgid ""
+"Instructions for downloading and installing binaries for different Operative"
+" systems instructions and additional notes and corrections not included in "
+"this documentation can be found in `Installation wiki "
+"<https://github.com/pgRouting/pgrouting/wiki/Notes-on-Download%2C-"
+"Installation-and-building-pgRouting>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:27
+msgid ""
+"To use pgRouting postGIS needs to be installed, please read the information "
+"about installation in this `Install Guide "
+"<http://www.postgis.us/presentations/postgis_install_guide_22.html>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:32
+msgid "Short Version"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:37
+msgid "Extracting the tar ball"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:44
+msgid "To compile assuming you have all the dependencies in your search path:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:54
+msgid ""
+"Once pgRouting is installed, it needs to be enabled in each individual "
+"database you want to use it in."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:66
+msgid "Get the sources"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:69
+msgid ""
+"The pgRouting latest release can be found in "
+"https://github.com/pgRouting/pgrouting/releases/latest"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:72
+msgid "wget"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:73
+msgid "To download this release:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:81
+msgid "Goto :ref:`install-short` to the extract and compile instructions."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:84
+msgid "git"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:85
+msgid "To download the repository"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:93
+msgid ""
+"Goto :ref:`install-short` to the compile instructions (there is no tar "
+"ball)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:100
+msgid "Enabling and upgrading in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:103
+msgid "Enabling the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:104
+msgid ""
+"pgRouting is an extension and depends on postGIS. Enabling postGIS before "
+"enabling pgRouting in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:113
+msgid "Upgrading the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:114
+msgid ""
+"To upgrade pgRouting in the database to version 2.4.0 use the following "
+"command:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:122
+msgid ""
+"More information can be found in "
+"https://www.postgresql.org/docs/current/static/sql-createextension.html"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:128
+msgid "Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:131
+msgid "Compilation Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:132
+msgid ""
+"To be able to compile pgRouting, make sure that the following dependencies "
+"are met:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:134
+msgid "C and C++0x compilers * g++ version >= 4.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:136
+msgid "Postgresql version >= 9.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:137
+msgid "PostGIS version >= 2.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:138
+msgid "The Boost Graph Library (BGL). Version >= 1.46"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:139
+msgid "CMake >= 2.8.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:140
+msgid "CGAL >= 4.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:144
+msgid "optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:145
+msgid "For user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:147
+msgid "Sphinx >= 1.1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:148
+msgid "Latex"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:150
+msgid "For developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:152
+msgid "Doxygen >= 1.7"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:154
+msgid "For testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:156
+msgid "pgtap"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:157
+msgid "pg_prove"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:161
+msgid "Example: Installing dependencies on linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:162
+msgid "Installing the compilation dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:174
+msgid "Installing the optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:188
+msgid "Configuring"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:190
+msgid "pgRouting uses the `cmake` system to do the configuration."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:192
+msgid "The build directory is different from the source directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:194
+msgid "Create the build directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:201
+msgid "Configurable variables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:205
+msgid "To see the variables that can be configured"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:213
+msgid "Configuring The Documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:214
+msgid ""
+"Most of the effort of the documentation has being on the HTML files. Some "
+"variables for the documentation:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Variable"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Comment"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "WITH_DOC"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+#: ../../build/doc/pgRouting-installation.rst:223
+#: ../../build/doc/pgRouting-installation.rst:224
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "BOOL=OFF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "Turn on/off building the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "BUILD_HTML"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BOOL=ON"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "If ON, turn on/off building HTML for user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BUILD_DOXY"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "If ON, turn on/off building HTML for developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "BUILD_LATEX"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "If ON, turn on/off building PDF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "BUILD_MAN"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "If ON, turn on/off building MAN pages"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "DOC_USE_BOOTSTRAP"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:228
+msgid "Configuring with documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:234
+msgid "Most of the effort of the documentation has being on the html files."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:240
+msgid "Building"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:242
+msgid "Using ``make`` to build the code and the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:244
+msgid "The following instructions start from *path/to/pgrouting/build*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:253
+msgid ""
+"We have tested on several platforms, For installing or reinstalling all the "
+"steps are needed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:255
+msgid "The sql signatures are configured and build in the ``cmake`` command."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:258
+msgid "MinGW on Windows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:269
+msgid "Linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:270
+msgid "The following instructions start from *path/to/pgrouting*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:280
+msgid "When the configuration changes:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:286
+msgid "and start the build process as mentioned above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:291
+msgid "Testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:293
+msgid "Currently there is no :code:`make test` and testing is done as follows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:295
+msgid "The following instructions start from *path/to/pgrouting/*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:305
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:308
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:309
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:310
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgRouting-introduction.po b/locale/ja/LC_MESSAGES/pgRouting-introduction.po
new file mode 100644
index 0000000..2f5927b
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgRouting-introduction.po
@@ -0,0 +1,222 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-introduction.rst:13
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:15
+msgid ""
+"pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL"
+" <http://postgresql.org>`_ geospatial database and adds routing and other "
+"network analysis functionality. A predecessor of pgRouting – pgDijkstra, "
+"written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was "
+"later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to "
+"pgRouting. The project is now supported and maintained by `Georepublic "
+"<http://georepublic.info>`_, `iMaptools <http://imaptools.com/>`__ and a "
+"broad user community."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:17
+msgid ""
+"pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ "
+"project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo"
+" Live <http://live.osgeo.org/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:23
+msgid "License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:25
+msgid "The following licenses can be found in pgRouting:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:30
+msgid "**License**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:32
+msgid "GNU General Public License, version 2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:33
+msgid ""
+"Most features of pgRouting are available under `GNU General Public License, "
+"version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:34
+msgid "Boost Software License - Version 1.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:35
+msgid ""
+"Some Boost extensions are available under `Boost Software License - Version "
+"1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:36
+msgid "MIT-X License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:37
+msgid ""
+"Some code contributed by iMaptools.com is available under MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:38
+msgid "Creative Commons Attribution-Share Alike 3.0 License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:39
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:41
+msgid ""
+"In general license information should be included in the header of each "
+"source file."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:45
+msgid "Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:48
+msgid "This Release Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:51
+#: ../../build/doc/pgRouting-introduction.rst:71
+msgid "Individuals (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:53
+msgid "Maoguang Wang, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:55
+msgid ""
+"And all the people that give us a little of their time making comments, "
+"finding issues, making pull requests etc."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:58
+#: ../../build/doc/pgRouting-introduction.rst:76
+msgid "Corporate Sponsors (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:60
+#: ../../build/doc/pgRouting-introduction.rst:78
+msgid ""
+"These are corporate entities that have contributed developer time, hosting, "
+"or direct monetary funding to the pgRouting project:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:62
+msgid "`Georepublic <https://georepublic.info/en/>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:63
+msgid ""
+"`Google Summer of Code <https://developers.google.com/open-source/gsoc/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:64
+msgid "`iMaptools <http://imaptools.com>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:65
+msgid "`Paragon Corporation <http://www.paragoncorporation.com/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:68
+msgid "Contributors Past & Present:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:73
+msgid ""
+"Akio Takubo, Andrea Nardelli, Anton Patrushev, Ashraf Hossain, Christian "
+"Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki,"
+" Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, "
+"Kai Behncke, Kishore Kumar, Ko Nagase, Manikata Kondeti, Mario Basa, Martin "
+"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Zia, Mukul Priya, Razequl"
+" Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Stephen Woodbridge, "
+"Sylvain Housseman, Sylvain Pasche, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:80
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:81
+msgid "CSIS (University of Tokyo)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:82
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:83
+msgid "Google Summer of Code"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:84
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:85
+msgid "Orkney"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:86
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:90
+msgid "More Information"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:92
+msgid ""
+"The latest software, documentation and news items are available at the "
+"pgRouting web site http://pgrouting.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:93
+msgid ""
+"PostgreSQL database server at the PostgreSQL main site "
+"http://www.postgresql.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:94
+msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:95
+msgid "Boost C++ source libraries at http://www.boost.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:96
+msgid ""
+"Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:97
+msgid ""
+"The Migration guide can be found at "
+"https://github.com/pgRouting/pgrouting/wiki/Migration-Guide."
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_KSP.po b/locale/ja/LC_MESSAGES/pgr_KSP.po
new file mode 100644
index 0000000..2ace271
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_KSP.po
@@ -0,0 +1,402 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_KSP.rst:13
+msgid "pgr_KSP"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:18
+msgid "``pgr_KSP`` — Returns the \"K\" shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:28
+msgid "Signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:34
+msgid ""
+"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
+" number of shortest paths desired."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:52
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:64
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:73
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14 ../../build/doc/pgr_KSP.rst:110
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:80
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86 ../../build/doc/pgr_KSP.rst:87
+#: ../../build/doc/pgr_KSP.rst:107 ../../build/doc/pgr_KSP.rst:108
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "**k**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88 ../../build/doc/pgr_KSP.rst:105
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "The desiered number of paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89 ../../build/doc/pgr_KSP.rst:90
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid ""
+"(optional). When ``true`` returns all the paths stored in the process heap. "
+"Default is ``false`` which only returns ``k`` paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:93
+msgid ""
+"Roughly, if the shortest path has ``N`` edges, the heap will contain about "
+"than ``N * k`` paths for small value of ``k`` and ``k > 1``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:98
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:100
+msgid ""
+"Returns set of ``(seq, path_seq, path_id, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid ""
+"Relative position in the path of ``node`` and ``edge``. Has value **1** for "
+"the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid ""
+"Path identifier. The ordering of the paths For two paths i, j if i < j then "
+"agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "Identifier of the node in the path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110 ../../build/doc/pgr_KSP.rst:111
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:115
+msgid ""
+"During the transition to 3.0, because pgr_ksp version 2.0 doesn't have "
+"defined a directed flag nor a heap_path flag, when pgr_ksp is used with only"
+" one flag version 2.0 signature will be used."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:119
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:122
+msgid "Examples to handle the one flag to choose signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:124 ../../build/doc/pgr_KSP.rst:134
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:132
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:143
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:145
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:153
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:155
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:164
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:166
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:173
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:175
+msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:176
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:179
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:180
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:181
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_TSP.po b/locale/ja/LC_MESSAGES/pgr_TSP.po
new file mode 100644
index 0000000..a9fecef
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_TSP.po
@@ -0,0 +1,224 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_TSP.rst:13
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:18
+msgid "``pgr_TSP`` - Returns a route that visits all the nodes exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:21
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:22
+msgid "Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:26
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:28
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:30
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:32
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of matrix cell contents. The "
+"matrix information must be symmetrical."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:58
+msgid "Basic Use"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:67
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:96
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:103
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:106
+msgid "Description of the Matrix Cell SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111 ../../build/doc/pgr_TSP.rst:112
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "Cost for going from start_vid to end_vid"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:116
+msgid "Can be Used with:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:118
+msgid ":ref:`pgr_dijkstraCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:119
+msgid ":ref:`pgr_withPointsCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:120
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:121
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:123
+msgid "To generate a symmetric matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:125
+msgid "directed := false."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:127
+msgid ""
+"If using directed := true, the resulting non symmetric matrix must be "
+"converted to symmetric by fixing the non symmetric values according to your "
+"application needs."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:145
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:147
+msgid "Using with points of interest."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:149
+msgid "To generate a symmetric matrix:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:151
+msgid ""
+"the **side** information of pointsOfInterset is ignored by not including it "
+"in the query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:152
+msgid "and **directed := false**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:158
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:163
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:165
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:166
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:167
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:170
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:171
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:172
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_aStar.po b/locale/ja/LC_MESSAGES/pgr_aStar.po
new file mode 100644
index 0000000..4e2ccb4
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_aStar.po
@@ -0,0 +1,642 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStar.rst:13
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:18
+msgid "``pgr_aStar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:27
+msgid "pgr_astar(one to one) 2.0.0, Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:28
+msgid "pgr_astar(other signatures) 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:33
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:35
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:37
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:38
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:40
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:46
+msgid "The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:50
+msgid "The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:52
+msgid "When (x,y) coordinates for the same vertex identifier differ:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:54
+msgid "A random selection of the vertex's (x,y) coordinates is used."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:56
+msgid "Running time: :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:84
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:92
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:99
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:112
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:118
+msgid "Undirected using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:130
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:138 ../../build/doc/pgr_aStar.rst:165
+#: ../../build/doc/pgr_aStar.rst:194
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139 ../../build/doc/pgr_aStar.rst:166
+#: ../../build/doc/pgr_aStar.rst:195
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:141
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:144
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:145
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:157
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:166
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:168
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:171
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:172 ../../build/doc/pgr_aStar.rst:201
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:186
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:195
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:197
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:200
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:203
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:217
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13 ../../build/doc/pgr_aStar.rst:234
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:228
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:231
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234 ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235 ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:238
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:239
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:243
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:244
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:245
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:246
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:247
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:248
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250 ../../build/doc/pgr_aStar.rst:251
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:260
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:262
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:263
+msgid ":doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:264
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:265
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:268
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:269
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:270
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_aStarCost.po b/locale/ja/LC_MESSAGES/pgr_aStarCost.po
new file mode 100644
index 0000000..41e1637
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_aStarCost.po
@@ -0,0 +1,528 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCost.rst:13
+msgid "pgr_aStarCost -- proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:18
+msgid ""
+"``pgr_aStarCost`` — Returns the aggregate cost shortest path using "
+":ref:`astar` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:26
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:53
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:60
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:72
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:78
+msgid "Setting a Heuristic"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:90
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99
+msgid ""
+"This signature finds a path from one ``start_vid`` to each ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:98 ../../build/doc/pgr_aStarCost.rst:125
+#: ../../build/doc/pgr_aStarCost.rst:154
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99 ../../build/doc/pgr_aStarCost.rst:126
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:101
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:104
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:105
+msgid ""
+"The extra ``end_vid`` column in the result is used to distinguish to which "
+"path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:117
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:126
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:128
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:131
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:132
+msgid ""
+"The extra ``start_vid`` column in the result is used to distinguish to "
+"which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:146
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:157
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:160
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:161
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:163
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:177
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_aStarCost.rst:194 ../../build/doc/pgr_aStarCost.rst:195
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:188
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:191
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:198
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:199
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:203
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:204
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:205
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:206
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:207
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:208
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210 ../../build/doc/pgr_aStarCost.rst:211
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. See "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:224
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:226
+msgid ":ref:`astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:227
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:228
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:229
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:232
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:233
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:234
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_aStarCostMatrix.po b/locale/ja/LC_MESSAGES/pgr_aStarCostMatrix.po
new file mode 100644
index 0000000..5193921
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_aStarCostMatrix.po
@@ -0,0 +1,457 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:13
+msgid "pgr_aStarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:18
+msgid ""
+"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:33
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:37
+msgid "Using aStar algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:40
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:57
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:68
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:88
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:90
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "**vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "Array of vertices_identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:115
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:116
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:120
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:121
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:122
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:123
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:124
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:125
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:150
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:152
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:153
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:154
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:155
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_alphaShape.po b/locale/ja/LC_MESSAGES/pgr_alphaShape.po
new file mode 100644
index 0000000..851cd18
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_alphaShape.po
@@ -0,0 +1,169 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_alphaShape.rst:13
+msgid "pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:21
+msgid "``pgr_alphaShape`` — Core function for alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:27
+msgid ""
+"Returns a table with (x, y) rows that describe the vertices of an alpha "
+"shape."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:50
+msgid "Returns a vertex record for each row:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:52
+msgid "x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:53
+msgid "y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:55
+msgid ""
+"If a result includes multiple outer/inner rings, return those with separator"
+" row (x=NULL and y=NULL)."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:58
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:59
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:60
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:61
+msgid ""
+"Supported to return multiple outer/inner ring coordinates with separator row"
+" (x=NULL and y=NULL) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:64
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:65
+msgid ""
+"PgRouting's alpha shape implementation has no way to control the order of "
+"the output points, so the actual output might different for the same input "
+"data. The first query, has the output ordered, he second query shows an "
+"example usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:70
+msgid "Example: the (ordered) results"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:76
+msgid "Example: calculating the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:77
+msgid "Steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:79
+msgid "Calculates the alpha shape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:80
+msgid "the :code:`ORDER BY` clause is not used."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:81
+msgid "constructs a polygon"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:82
+msgid "and computes the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:90
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:93
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:95
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:96
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:99
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:100
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:101
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_analyzeGraph.po b/locale/ja/LC_MESSAGES/pgr_analyzeGraph.po
new file mode 100644
index 0000000..22237a6
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_analyzeGraph.po
@@ -0,0 +1,361 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeGraph.rst:13
+msgid "pgr_analyzeGraph"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:19
+msgid "``pgr_analyzeGraph`` — Analyzes the network topology."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:25
+#: ../../build/doc/pgr_analyzeGraph.rst:61
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:27
+#: ../../build/doc/pgr_analyzeGraph.rst:63
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:28
+#: ../../build/doc/pgr_analyzeGraph.rst:69
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:43
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:44
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:46
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:47
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:50
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:51
+msgid "The analyze graph function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:53
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:54
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:55
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:56
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:57
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:58
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:59
+msgid ""
+"``text`` Condition to select a subset or rows. Default value is ``true``"
+" to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:65
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:66
+msgid ""
+"Fills completely the ``cnt`` and ``chk`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:67
+msgid ""
+"Returns the analysis of the section of the network defined by "
+"``rows_where``"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:71
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:72
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:73
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:74
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:75
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:79
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:80
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:82
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:84
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:86
+msgid "``integer`` Indicator that the vertex might have a problem."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:87
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:88
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:89
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:92
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:93
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:96
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:99
+msgid "The simplest way to use pgr_analyzeGraph is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:106
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:111
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order: 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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:130
+#: ../../build/doc/pgr_analyzeGraph.rst:208
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:131
+#: ../../build/doc/pgr_analyzeGraph.rst:209
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:141
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:148
+#: ../../build/doc/pgr_analyzeGraph.rst:223
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:149
+msgid ""
+"Selecting rows based on the id. Displays the analysis a the section of the "
+"network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:155
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:161
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:172
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:174
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:183
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:184
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:219
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:224
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:234
+msgid ""
+"Selecting the rows WHERE the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:246
+msgid ""
+"Selecting the rows WHERE the geometry is near the place='myhouse' of the "
+"table ``othertable``. (note the use of quote_literal)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:263
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:390
+msgid "The examples use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:394
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:396
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:397
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:398
+msgid ""
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
+"vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:399
+msgid ""
+":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
+"edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:402
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:403
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:404
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_analyzeOneWay.po b/locale/ja/LC_MESSAGES/pgr_analyzeOneWay.po
new file mode 100644
index 0000000..627da76
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_analyzeOneWay.po
@@ -0,0 +1,290 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:13
+msgid "pgr_analyzeOneway"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:19
+msgid ""
+"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:25
+msgid ""
+"This function analyzes oneway streets in a graph and identifies any flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:42
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:44
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:46
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:49
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:50
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:52
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:53
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:56
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:57
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:58
+msgid "``text[]`` source node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:59
+msgid "``text[]`` source node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:60
+msgid "``text[]`` target node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:61
+msgid "``text[]`` target node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:62
+msgid ""
+"``text`` oneway column name name of the network table. Default value is "
+"``oneway``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:63
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:64
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:65
+msgid ""
+"``boolean`` flag to treat oneway NULL values as bi-directional. Default "
+"value is ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:67
+msgid ""
+"It is strongly recommended to use the named notation. See "
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
+":ref:`pgr_createTopology <pgr_create_topology>` for examples."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:70
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:72
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:74
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:75
+msgid ""
+"Fills completely the ``ein`` and ``eout`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:77
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:79
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:80
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:81
+msgid "The names of source , target or oneway are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:83
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:86
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:87
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:89
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:91
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:92
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:93
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:94
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:95
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:96
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:100
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:101
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:105
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:129
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:135
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:136
+msgid ":ref:`analytics` for an overview of the analysis of a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:137
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:138
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_articulationPoints.po b/locale/ja/LC_MESSAGES/pgr_articulationPoints.po
new file mode 100644
index 0000000..225a3d6
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_articulationPoints.po
@@ -0,0 +1,316 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_articulationPoints.rst:13
+msgid "pgr_articulationPoints - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:16
+msgid ""
+"``pgr_articulationPoints`` - Return the articulation points of an undirected"
+" graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:32
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph. This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:62
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:93
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_bdAstar.po b/locale/ja/LC_MESSAGES/pgr_bdAstar.po
new file mode 100644
index 0000000..fdfaa05
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_bdAstar.po
@@ -0,0 +1,669 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstar.rst:13
+msgid "pgr_bdAstar"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:18
+msgid "``pgr_bdAstar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:27
+msgid "pgr_bdAstar(one to one) 2.0.0, Signature change on 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:28
+msgid "pgr_bdAstar(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:54
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:56
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:57
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:61
+msgid "Avaliability"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:62
+msgid "pgr_bdAstar(one to one) 2.0, signature change on 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:63
+msgid "pgr_bdAstar(other signatures) 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:84
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:85
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:86
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:89
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:102
+msgid "pgr_bdAstar One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+" allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:109
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:110 ../../build/doc/pgr_bdAstar.rst:137
+#: ../../build/doc/pgr_bdAstar.rst:162 ../../build/doc/pgr_bdAstar.rst:186
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111 ../../build/doc/pgr_bdAstar.rst:138
+#: ../../build/doc/pgr_bdAstar.rst:163 ../../build/doc/pgr_bdAstar.rst:187
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:114
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:116
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:127
+msgid "pgr_bdAstar One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:139
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:135 ../../build/doc/pgr_bdAstar.rst:160
+#: ../../build/doc/pgr_bdAstar.rst:184
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:136 ../../build/doc/pgr_bdAstar.rst:161
+#: ../../build/doc/pgr_bdAstar.rst:185
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:141
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:152
+msgid "pgr_bdAstar Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:163
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:165
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:176
+msgid "pgr_bdAstar Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:187
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:189
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:196
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:213
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:215
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:216
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:217
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:218
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:221
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:222
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:223
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_bdAstarCost.po b/locale/ja/LC_MESSAGES/pgr_bdAstarCost.po
new file mode 100644
index 0000000..9b72e10
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_bdAstarCost.po
@@ -0,0 +1,594 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCost.rst:13
+msgid "pgr_bdAstarCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:18
+msgid "``pgr_bdAstarCost`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:26
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:46
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:48
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAstarCost`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:49
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:56
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:64
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:72
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:73
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:74
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:77
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:90
+msgid "pgr_bdAstarCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:128
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:97
+#: ../../build/doc/pgr_bdAstarCost.rst:124
+#: ../../build/doc/pgr_bdAstarCost.rst:149
+#: ../../build/doc/pgr_bdAstarCost.rst:173
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:98
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:99
+#: ../../build/doc/pgr_bdAstarCost.rst:126
+#: ../../build/doc/pgr_bdAstarCost.rst:151
+#: ../../build/doc/pgr_bdAstarCost.rst:175
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:127
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:103
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:105
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:116
+msgid "pgr_bdAstarCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:125
+#: ../../build/doc/pgr_bdAstarCost.rst:150
+#: ../../build/doc/pgr_bdAstarCost.rst:174
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:130
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:141
+msgid "pgr_bdAstarCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:154
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:165
+msgid "pgr_bdAstarCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:178
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:185
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:204
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:205
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:206
+msgid ""
+"`Migration Guide <https://github.com/cvvergara/pgrouting/wiki/Migration-"
+"Guide#pgr_bdastar>`_"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:207
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:208
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:211
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:212
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:213
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_bdAstarCostMatrix.po b/locale/ja/LC_MESSAGES/pgr_bdAstarCostMatrix.po
new file mode 100644
index 0000000..c8738fa
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_bdAstarCostMatrix.po
@@ -0,0 +1,536 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:13
+msgid "pgr_bdAstarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:18
+msgid ""
+"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdAstar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:68
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:64
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:65
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:66
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:67
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:70
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:82
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:95
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:91
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:92
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:93
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:94
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:97
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:99
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:107
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:135
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_bdDijkstra.po b/locale/ja/LC_MESSAGES/pgr_bdDijkstra.po
new file mode 100644
index 0000000..b05e40f
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_bdDijkstra.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstra.rst:13
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:15
+msgid ""
+"``pgr_bdDijkstra`` — Returns the shortest path(s) using Bidirectional "
+"Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:23
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:24
+msgid "pgr_bdDijkstra(one to one) 2.0.0, Signature changed 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:25
+msgid "pgr_bdDijkstra(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:60
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:67
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:80
+msgid "pgr_bdDijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:87
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:89
+#: ../../build/doc/pgr_bdDijkstra.rst:112
+#: ../../build/doc/pgr_bdDijkstra.rst:141
+#: ../../build/doc/pgr_bdDijkstra.rst:170
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:90
+#: ../../build/doc/pgr_bdDijkstra.rst:113
+#: ../../build/doc/pgr_bdDijkstra.rst:142
+#: ../../build/doc/pgr_bdDijkstra.rst:171
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:103
+msgid "pgr_bdDijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:110
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:115
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:118
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:119
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:132
+msgid "pgr_bdDijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:139
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:144
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:147
+#: ../../build/doc/pgr_bdDijkstra.rst:176
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:148
+#: ../../build/doc/pgr_bdDijkstra.rst:177
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:161
+msgid "pgr_bdDijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:173
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:179
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:190
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:208
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:210
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:211
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:212
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:213
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_bdDijkstraCost.po b/locale/ja/LC_MESSAGES/pgr_bdDijkstraCost.po
new file mode 100644
index 0000000..0516529
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_bdDijkstraCost.po
@@ -0,0 +1,470 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:13
+msgid "pgr_bdDijkstraCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:15
+msgid ""
+"``pgr_bdDijkstraCost`` — Returns the shortest path(s)'s cost using "
+"Bidirectional Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:23
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:30
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:52
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:59
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:72
+msgid "pgr_bdDijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:80
+#: ../../build/doc/pgr_bdDijkstraCost.rst:102
+#: ../../build/doc/pgr_bdDijkstraCost.rst:130
+#: ../../build/doc/pgr_bdDijkstraCost.rst:158
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:94
+msgid "pgr_bdDijkstraCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:105
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:108
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:109
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:122
+msgid "pgr_bdDijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:133
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:136
+#: ../../build/doc/pgr_bdDijkstraCost.rst:164
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:137
+#: ../../build/doc/pgr_bdDijkstraCost.rst:165
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:150
+msgid "pgr_bdDijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:161
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:167
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:178
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:195
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:197
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:198
+msgid ":ref:`pgr_bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:199
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:200
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:203
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:204
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:205
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po b/locale/ja/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
new file mode 100644
index 0000000..0b0a2ae
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
@@ -0,0 +1,382 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:13
+msgid "pgr_bdDijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_bdDijkstraCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdDijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:66
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:86
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:88
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:122
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:124
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:132
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:134
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:135
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:136
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:137
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_biconnectedComponents.po b/locale/ja/LC_MESSAGES/pgr_biconnectedComponents.po
new file mode 100644
index 0000000..f4db188
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_biconnectedComponents.po
@@ -0,0 +1,349 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:13
+msgid "pgr_biconnectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:15
+msgid ""
+"``pgr_biconnectedComponents`` — Return the biconnected components of an "
+"undirected graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:31
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:36
+msgid "This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:43
+msgid "Components are described by edges"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:45
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:47
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:48
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:50
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:65
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:78
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:94
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:96
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:97
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:100
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:101
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:102
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_boykovKolmogorov.po b/locale/ja/LC_MESSAGES/pgr_boykovKolmogorov.po
new file mode 100644
index 0000000..84d76a4
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_boykovKolmogorov.po
@@ -0,0 +1,435 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:14
+msgid "pgr_boykovKolmogorov - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:20
+msgid ""
+"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that "
+"maximizes the flow from the sources to the targets using Boykov Kolmogorov "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowBoykovKolmogorov"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:42
+msgid "Running time: Polynomial"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:61
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:63
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:84
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:103
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:105
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:124
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:126
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:141
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:159
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:161
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_pushRelabel <pgr_pushRelabel>`, "
+":ref:`pgr_EdmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:162
+msgid "http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_bridges.po b/locale/ja/LC_MESSAGES/pgr_bridges.po
new file mode 100644
index 0000000..a80bf4e
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_bridges.po
@@ -0,0 +1,310 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bridges.rst:13
+msgid "pgr_bridges - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:16
+msgid "``pgr_bridges`` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:31
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components. This implementation can only be used with an"
+" undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:40
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:42
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:44
+msgid "Running time: :math:`O(E * (V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:47
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:59
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:72
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:88
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:90
+msgid "http://en.wikipedia.org/wiki/Bridge_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:91
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:94
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:95
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:96
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_connectedComponents.po b/locale/ja/LC_MESSAGES/pgr_connectedComponents.po
new file mode 100644
index 0000000..2474096
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_connectedComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_connectedComponents.rst:13
+msgid "pgr_connectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:16
+msgid ""
+"``pgr_connectedComponents`` — Return the connected components of an "
+"undirected graph using a DFS-based approach. In particular, the algorithm "
+"implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:32
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other. This implementation can only be used with an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:39
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:41
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:45
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:46
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:48
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:63
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:76
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:92
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:94
+msgid "http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:95
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:98
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:99
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:100
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_contractGraph.po b/locale/ja/LC_MESSAGES/pgr_contractGraph.po
new file mode 100644
index 0000000..8d27664
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_contractGraph.po
@@ -0,0 +1,488 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_contractGraph.rst:13
+msgid "pgr_contractGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:15
+msgid ""
+"``pgr_contractGraph`` — Performs graph contraction and returns the "
+"contracted vertices and edges."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:23
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:32
+msgid ""
+"Contraction reduces the size of the graph by removing some of the vertices "
+"and edges and, for example, might add edges that represent a sequence of "
+"original edges decreasing the total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:52
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:38
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:40
+msgid "There are two types of contraction methods used namely,"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:42
+msgid "Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:43
+msgid "Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:45
+msgid "The values returned include the added edges and contracted vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:47
+msgid "The returned values are ordered as follows:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:49
+msgid "column `id` ascending when type = `v`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:50
+msgid "column `id` descending when type = `e`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:55
+msgid "Signature Summary:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:57
+msgid "The pgr_contractGraph function has the following signatures:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:74
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:80
+msgid "Making a dead end contraction and a linear contraction."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:87
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:93
+msgid ""
+"Making a dead end contraction and a linear contraction and vertex 2 is "
+"forbidden from contraction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_contractGraph.rst:136
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+msgid "**contraction_order**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "Ordered contraction operations."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "1 = Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:114
+msgid "2 = Linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "**forbidden_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid ""
+"(optional). Identifiers of vertices forbidden from contraction. Default is "
+"an empty array."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid "**max_cycles**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid ""
+"(optional). Number of times the contraction operations on "
+"`contraction_order` will be performed. Default is 1."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:118
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:123
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:125
+msgid ""
+"RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:127
+msgid "The function returns a single row. The columns of the row are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "**type**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "Type of the `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "'v' when `id` is an identifier of a vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:135
+msgid "'e' when `id` is an identifier of an edge."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:136
+#: ../../build/doc/pgr_contractGraph.rst:146
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:143
+msgid "Identifier of:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:137
+msgid "the vertex when `type = 'v'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:139
+msgid "The vertex belongs to the edge_table passed as a parameter."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:140
+msgid "the edge when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:142
+msgid "The `id` is a decreasing sequence starting from **-1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:144
+msgid "Representing a pseudo `id` as is not incorporated into the edge_table."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "Array of contracted vertex identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid ""
+"Identifier of the source vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid ""
+"Identifier of the target vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid ""
+"Weight of the edge (`source`, `target`). Valid values when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:152
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:154
+msgid "Only dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:160
+msgid "Only linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:168
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:169
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:170
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_createTopology.po b/locale/ja/LC_MESSAGES/pgr_createTopology.po
new file mode 100644
index 0000000..44a282e
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_createTopology.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createTopology.rst:13
+msgid "pgr_createTopology"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:18
+msgid ""
+"``pgr_createTopology`` — Builds a network topology based on the geometry "
+"information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:24
+#: ../../build/doc/pgr_createTopology.rst:72
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:26
+msgid ""
+"``OK`` after the network topology has been built and the vertices table "
+"created."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:27
+msgid "``FAIL`` when the network topology was not built due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:42
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:45
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:46
+msgid "The topology creation function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:48
+msgid "``text`` Network table name. (may contain the schema name AS well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:49
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:50
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:52
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:53
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:54
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:56
+msgid "``boolean`` Clean any previous topology. Default value is ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:60
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:62
+msgid "The ``source`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:63
+msgid "The ``target`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:65
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:67
+msgid "``id``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:68
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:69
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:70
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:74
+msgid "``OK`` after the network topology has been built."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:76
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:77
+msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:78
+msgid ""
+"Fills the source and target columns of the edge table referencing the ``id``"
+" of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:81
+msgid "``FAIL`` when the network topology was not built due to an error:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:83
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:84
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:85
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:86
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:90
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:91
+msgid ""
+"The vertices table is a requirement of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:93
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:95
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:96
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:97
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:98
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:99
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:100
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:103
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:104
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:107
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:110
+msgid "The simplest way to use pgr_createTopology is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:118
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:119
+msgid "We get the same result AS the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``id`` of the table ``ege_table`` is passed to "
+"the function as the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``the_geom`` is passed to the function as the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:136
+#: ../../build/doc/pgr_createTopology.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:137
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:153
+#: ../../build/doc/pgr_createTopology.rst:219
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:154
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:160
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with ``id "
+"= 5``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:166
+#: ../../build/doc/pgr_createTopology.rst:227
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:176
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:178
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:185
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:186
+msgid ""
+"The arguments need to be given in the order described in the parameters."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:188
+msgid ""
+"Note that this example uses clean flag. So it recreates the whole vertices "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropiriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``gid`` of the table ``mytable`` is passed to "
+"the function AS the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``mygeom`` is passed to the function AS the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:206
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:220
+msgid "Based on id:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:235
+msgid "Examples with full output"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:237
+msgid ""
+"This example start a clean topology, with 5 edges, and then its incremented "
+"to the rest of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:243
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:247
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:249
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:250
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:251
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:254
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:255
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:256
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_createVerticesTable.po b/locale/ja/LC_MESSAGES/pgr_createVerticesTable.po
new file mode 100644
index 0000000..191059e
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_createVerticesTable.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createVerticesTable.rst:13
+msgid "pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:18
+msgid ""
+"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:24
+#: ../../build/doc/pgr_createVerticesTable.rst:62
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:26
+#: ../../build/doc/pgr_createVerticesTable.rst:64
+msgid "``OK`` after the vertices table has been reconstructed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:27
+#: ../../build/doc/pgr_createVerticesTable.rst:69
+msgid ""
+"``FAIL`` when the vertices table was not reconstructed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:43
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:44
+msgid ""
+"The reconstruction of the vertices table function accepts the following "
+"parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:46
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:47
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:48
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:49
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:50
+msgid ""
+"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
+"to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:54
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:56
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:58
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:59
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:60
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:66
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:67
+msgid ""
+"Fills ``id`` and ``the_geom`` columns of the vertices table based on the "
+"source and target columns of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:71
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:72
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:73
+msgid "The names of source, target are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:74
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:77
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:78
+msgid ""
+"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:80
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:82
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:83
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:84
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:86
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:87
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:90
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:91
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:94
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:97
+msgid "The simplest way to use pgr_createVerticesTable is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:104
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:109
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:111
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:128
+#: ../../build/doc/pgr_createVerticesTable.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:129
+#: ../../build/doc/pgr_createVerticesTable.rst:206
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:139
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:146
+#: ../../build/doc/pgr_createVerticesTable.rst:220
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:147
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:153
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:159
+#: ../../build/doc/pgr_createVerticesTable.rst:243
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:170
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:172
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:180
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:181
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:0
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:216
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:221
+msgid "Selecting rows based on the gid."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:231
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``gid`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:282
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:286
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:288
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:289
+msgid ""
+":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
+"on the geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:290
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:291
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:294
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:295
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:296
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_dijkstra.po b/locale/ja/LC_MESSAGES/pgr_dijkstra.po
new file mode 100644
index 0000000..45cbd10
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_dijkstra.po
@@ -0,0 +1,621 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid ""
+"``pgr_dijkstra`` — Returns the shortest path(s) using Dijkstra algorithm. In"
+" particular, the Dijkstra algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:24
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:25
+msgid "pgr_dijkstra(one to one) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:26
+msgid "pgr_dijkstra(other signatures) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:31
+msgid ""
+"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
+"in 1956. It is a graph search algorithm that solves the shortest path "
+"problem for a graph with non-negative edge path costs, producing a shortest "
+"path from a starting vertex (``start_vid``) to an ending vertex "
+"(``end_vid``). This implementation can be used with a directed graph and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:60
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:46
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:50
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:52
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:54
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:56
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:57
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:59
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:63
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:78
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:84
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:91
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:104
+msgid "pgr_dijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:113 ../../build/doc/pgr_dijkstra.rst:136
+#: ../../build/doc/pgr_dijkstra.rst:167 ../../build/doc/pgr_dijkstra.rst:197
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114 ../../build/doc/pgr_dijkstra.rst:137
+#: ../../build/doc/pgr_dijkstra.rst:168 ../../build/doc/pgr_dijkstra.rst:198
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:127
+msgid "pgr_dijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:137
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:139
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:142
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:143
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:158
+msgid "pgr_dijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:170
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:173 ../../build/doc/pgr_dijkstra.rst:203
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:174 ../../build/doc/pgr_dijkstra.rst:204
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:188
+msgid "pgr_dijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:198
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:200
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:206
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:215
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:225
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231 ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232 ../../build/doc/pgr_dijkstra.rst:234
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:236
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:248
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:250
+msgid ""
+"The examples of this section are based on the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:252
+msgid ""
+"The examples include combinations from starting vertices 2 and 11 to ending "
+"vertices 3 and 5 in a directed and undirected graph with and with out "
+"reverse_cost."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:256
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:258
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:267
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:269
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:277
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:279
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:287
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:289
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:297
+msgid "Equvalences between signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:299
+msgid ""
+"For queries marked as ``directed`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:301 ../../build/doc/pgr_dijkstra.rst:313
+msgid "The examples in this section use the following:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:303
+msgid ":ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:311
+msgid ""
+"For queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:315
+msgid ":ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:324
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:326
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:327
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:330
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:331
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:332
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_dijkstraCost.po b/locale/ja/LC_MESSAGES/pgr_dijkstraCost.po
new file mode 100644
index 0000000..a9193fb
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_dijkstraCost.po
@@ -0,0 +1,473 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCost.rst:13
+msgid "pgr_dijkstraCost"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:19
+msgid "``pgr_dijkstraCost``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:21
+msgid ""
+"Using Dijkstra algorithm implemented by Boost.Graph, and extract only the "
+"aggregate cost of the shortest path(s) found, for the combination of "
+"vertices given."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:27
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:30
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:31
+msgid "pgr_dijkstraCost(all signatures) 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:33
+msgid ""
+"The ``pgr_dijkstraCost`` algorithm, is a good choice to calculate the sum of"
+" the costs of the shortest path for a subset of pairs of nodes of the graph."
+" We make use of the Boost's implementation of dijkstra which runs in "
+":math:`O(V \\log V + E)` time."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:42
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:43
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:44
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:45
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:47
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:51
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:55
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:57
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:60
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:62
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:64
+msgid "Any duplicated value in the `start_vids` or `end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:66
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:68
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:69
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:74
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:89
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:95
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:97
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:106
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:117
+msgid "pgr_dijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:121
+#: ../../build/doc/pgr_dijkstraCost.rst:150
+#: ../../build/doc/pgr_dijkstraCost.rst:176
+#: ../../build/doc/pgr_dijkstraCost.rst:201
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+#: ../../build/doc/pgr_dijkstraCost.rst:151
+#: ../../build/doc/pgr_dijkstraCost.rst:177
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:141
+msgid "pgr_dijkstraCost One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:152
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:167
+msgid "pgr_dijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:178
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:192
+msgid "pgr_dijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:213
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:229
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:231
+msgid "Demonstration of repeated values are ignored, and result is sorted."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:237
+msgid "Making `start_vids` the same as `end_vids`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:246
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:248
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:249
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:252
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:253
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:254
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_dijkstraCostMatrix.po b/locale/ja/LC_MESSAGES/pgr_dijkstraCostMatrix.po
new file mode 100644
index 0000000..95cf121
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_dijkstraCostMatrix.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:13
+msgid "pgr_dijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_dijkstraCostMatrix`` - Calculates the a cost matrix using "
+"pgr_dijktras."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:32
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:36
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:56
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:67
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:79
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:87
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:89
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:97
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:135
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_dijkstraVia.po b/locale/ja/LC_MESSAGES/pgr_dijkstraVia.po
new file mode 100644
index 0000000..0a3c5f1
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_dijkstraVia.po
@@ -0,0 +1,480 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraVia.rst:13
+msgid "pgr_dijkstraVia - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:19
+msgid ""
+"``pgr_dijkstraVia`` — Using dijkstra algorithm, it finds the route that goes"
+" through a list of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:30
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:34
+msgid ""
+"Given a list of vertices and a graph, this function is equivalent to finding"
+" the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all"
+" :math:`i < size\\_of(vertex_via)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:37
+msgid "The paths represents the sections of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:39
+msgid "This is a proposed function"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:42
+msgid "Signatrue Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:59
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:67
+msgid "Find the route that visits the vertices 1 3 9 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:77
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:86
+msgid ""
+"Find the route that visits the vertices 1 3 9 in that order on an "
+"undirected graph, avoiding U-turns when possible"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:94
+msgid "Description of the Signature"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+#: ../../build/doc/pgr_dijkstraVia.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "Array of vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid ""
+"(optional) ignores if a subsection of the route is missing and returns "
+"everything it found Default is true (is directed). When set to false the "
+"graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:119
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:121
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "Sequential value starting from 1."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "**path_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "Identifier of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "Sequential value starting from 1 for the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "Identifier of the node in the path from start_vid to end_vid."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid ""
+"Identifier of the edge used to go from node to the next node in the path "
+"sequence. -1 for the last node of the path. -2 for the last node of the "
+"route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the route "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "Total cost from ``start_vid`` to ``end_vid`` of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "**route_agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid ""
+"Total cost from ``start_vid`` of ``path_pid = 1`` to ``end_vid`` of the "
+"current ``path_pid`` ."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:142
+msgid "Find the route that visits the vertices 1 5 3 9 4 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:148
+msgid "What's the aggregate cost of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:154
+msgid ""
+"What's the route's aggregate cost of the route at the end of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:160
+msgid "How are the nodes visited in the route?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:166
+msgid ""
+"What are the aggregate costs of the route when the visited vertices are "
+"reached?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:172
+msgid ""
+"show the route's seq and aggregate cost and a status of \"passes in front\" "
+"or \"visits\" node 9"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:179
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:181
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:182
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:185
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:186
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:187
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_drivingDistance.po b/locale/ja/LC_MESSAGES/pgr_drivingDistance.po
new file mode 100644
index 0000000..77f7b8e
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_drivingDistance.po
@@ -0,0 +1,391 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_drivingDistance.rst:13
+msgid "pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:19
+msgid ""
+"``pgr_drivingDistance`` - Returns the driving distance from a start node."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:28
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:29
+msgid "pgr_drivingDistance(single vertex) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:30
+msgid "pgr_drivingDistance(multiple vertices) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:35
+msgid ""
+"Using the Dijkstra algorithm, extracts all the nodes that have costs less "
+"than or equal to the value ``distance``. The edges extracted will conform to"
+" the corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:57
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:70
+msgid "Driving Distance From A Single Starting Vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:82
+msgid "Driving Distance From Multiple Starting Vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:90
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:98
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:123
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "Array of identifiers of the starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+#: ../../build/doc/pgr_drivingDistance.rst:125
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "Upper limit for the inclusion of the node in the result."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid ""
+"(optional). When ``true`` the node will only appear in the closest "
+"``start_vid`` list. Default is ``false`` which resembles several calls "
+"using the single starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:114
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:116
+msgid "Returns set of ``(seq [, start_v], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid ""
+"Identifier of the node in the path within the limits from ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid ""
+"Identifier of the edge used to arrive to ``node``. ``0`` when the ``node`` "
+"is the ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:132
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:135
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:137
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:144
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:146
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:154
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:156
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:165
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:167
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:177
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:178
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:179
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_edgeDisjointPaths.po b/locale/ja/LC_MESSAGES/pgr_edgeDisjointPaths.po
new file mode 100644
index 0000000..54a0ffe
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_edgeDisjointPaths.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:14
+msgid "pgr_edgeDisjointPaths - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:19
+msgid ""
+"``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:28
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:36
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:38
+msgid ""
+"Calculates the edge disjoint paths between two groups of vertices. Utilizes "
+"underlying maximum flow algorithms to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:42
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "The main characterics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:45
+msgid "Calculates the edge disjoint paths between any two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:46
+msgid ""
+"Returns EMPTY SET when source and destination are the same, or cannot be "
+"reached."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:47
+msgid "The graph can be directed or undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:48
+msgid "One to many, many to one, many to many versions are also supported."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "Uses :ref:`pgr_boykovKolmogorov` to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:52
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:67
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:73
+msgid "Minimal use"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:81
+msgid ""
+"The minimal use is for a **directed** graph from one ``start_vid`` to one "
+"``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:93
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:98
+msgid ""
+"This signature finds the set of dijoint paths from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:96
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:120
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:149
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:175
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:97
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:121
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:150
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:176
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:117
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:126
+msgid ""
+"This signature finds the sset of disjoint paths from the ``start_vid`` to "
+"each one of the ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:122
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:151
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:177
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_edgeDisjointPaths`."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:123
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:146
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to the ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to each one of the ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:195
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:212
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:214
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:217
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:218
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:219
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_edmondsKarp.po b/locale/ja/LC_MESSAGES/pgr_edmondsKarp.po
new file mode 100644
index 0000000..8523277
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_edmondsKarp.po
@@ -0,0 +1,438 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edmondsKarp.rst:14
+msgid "pgr_edmondsKarp - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:20
+msgid ""
+"``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowEdmondsKarp"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:42
+msgid "Running time: :math:`O( V * E ^ 2)`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:64
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:83
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:85
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:104
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:106
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:125
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:127
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:142
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:160
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:162
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_PushRelabel <pgr_pushRelabel>`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:163
+msgid "http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:164
+msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:167
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:168
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:169
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_eucledianTSP.po b/locale/ja/LC_MESSAGES/pgr_eucledianTSP.po
new file mode 100644
index 0000000..5b9be5e
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_eucledianTSP.po
@@ -0,0 +1,187 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_eucledianTSP.rst:13
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:18
+msgid ""
+"``pgr_eucledianTSP`` - Returns a route that visits all the coordinates pairs"
+" exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:22
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:24
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:26
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:28
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:30
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of coordinates."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:33
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:48
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:54
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:63
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:75
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:90
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:99
+msgid "Description of the coordinates SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "Identifier of the coordinate. (optional)"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "X value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "Y value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:110
+msgid ""
+"When the value of **id** is not given then the coordinates will receive an "
+"**id** starting from 1, in the order given."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:125
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:127
+msgid "Skipping the Simulated Annealing & showing some process information"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:135
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:139
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:140
+msgid "New in version 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:145
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:147
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:148
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:149
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:152
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:153
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:154
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_floydWarshall.po b/locale/ja/LC_MESSAGES/pgr_floydWarshall.po
new file mode 100644
index 0000000..4fe9ece
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_floydWarshall.po
@@ -0,0 +1,348 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_floydWarshall.rst:13
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:18
+msgid ""
+"``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path "
+"for each pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:31
+msgid ""
+"The Floyd-Warshall algorithm, also known as Floyd's algorithm, is a good "
+"choice to calculate the sum of the costs of the shortest path for each pair "
+"of nodes in the graph, for *dense graphs*. We make use of the Boost's "
+"implementation which runs in :math:`\\Theta(V^3)` time,"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:41
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:42
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:43
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:44
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:47
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:49
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:52
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:54
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:56
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "**Recommended, use a bounding box of no more than 3500 edges.**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:70
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:77
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:84
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:95
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:103
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:110
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:118
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:120
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:123
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:131
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:133
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:148
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:149
+msgid "Re-design of pgr_apspWarshall in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:152
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:154
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:155
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:156
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_gsoc_vrppdtw.po b/locale/ja/LC_MESSAGES/pgr_gsoc_vrppdtw.po
new file mode 100644
index 0000000..7705842
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_gsoc_vrppdtw.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:13
+msgid "pgr_gsoc_vrppdtw - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:19
+msgid ""
+"``pgr_gsoc_vrppdtw`` — Returns a solution for `Pick and Delivery` with `time"
+" windows` Vehicle Routing Problem"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:27
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:36
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:43
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:52
+msgid "Example: Show the id1"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:59
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:62
+msgid "Description of the sql query"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "Identifier of the customer."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:69
+msgid "A value of ``0`` identifies the starting location"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "``X`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "``Y`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "**demand**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "How much is added / removed from the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:75
+msgid "Negative value is a delivery,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:76
+msgid "Positive value is a pickup,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "**openTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "The time relative to 0, when the customer opens."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "**closeTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "The time relative to 0, when the customer closes."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "**serviceTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "The duration of the loading / unloading."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid "**pIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid ""
+"Value used when the current customer is a Delivery to find the corresponding"
+" Pickup"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "**dIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid ""
+"Value used when the current customer is a Pickup to find the corresponding "
+"Delivery"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:86
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "**vehicle_num**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "Maximum number of vehicles in the result. (currently is ignored)"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "Capacity of the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:97
+msgid "Description of the result"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:99
+msgid "RETURNS SET OF pgr_costResult[]:"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "**id1**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "Current vehicle identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "**id2**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "Customer identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid ""
+"Previous ``cost`` plus `travel time` plus `wait time` plus `service time`."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:108
+msgid ""
+"when ``id2 = 0`` for the second time for the same ``id1``, then has the "
+"total time for the current ``id1``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:114
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:117
+msgid "Example: Total number of rows returned"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:123
+msgid "Example: Results for only id1 values: 1, 5, and 9"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:130
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:132
+msgid "The examples use :ref:`pickDeliverData`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:133
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:136
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:137
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:138
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_johnson.po b/locale/ja/LC_MESSAGES/pgr_johnson.po
new file mode 100644
index 0000000..d0ef00b
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_johnson.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_johnson.rst:13
+msgid "pgr_johnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:18
+msgid ""
+"``pgr_johnson`` - Returns the sum of the costs of the shortest path for each"
+" pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspJohnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:31
+msgid ""
+"The Johnson algorithm, is a good choice to calculate the sum of the costs of"
+" the shortest path for each pair of nodes in the graph, for *sparse graphs*."
+" It usees the Boost's implementation which runs in :math:`O(V E \\log V)` "
+"time,"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:57
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:40
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:41
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:42
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:43
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:46
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:48
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:51
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:53
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:55
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:60
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:69
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:83
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:94
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:102
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:135
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:117
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:119
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:122
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:130
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:132
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137 ../../build/doc/pgr_johnson.rst:138
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:147
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:148
+msgid "Re-design of pgr_apspJohnson in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:153
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:154
+msgid ""
+"`Boost Johnson "
+"<http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html>`_ "
+"algorithm implementation."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:155
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_labelGraph.po b/locale/ja/LC_MESSAGES/pgr_labelGraph.po
new file mode 100644
index 0000000..e5d6532
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_labelGraph.po
@@ -0,0 +1,233 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_labelGraph.rst:15
+msgid "pgr_labelGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:18
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:20
+msgid ""
+"``pgr_labelGraph`` — Locates and labels sub-networks within a network which "
+"are not topologically connected."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:30
+msgid ""
+"Must be run after ``pgr_createTopology()``. No use of ``geometry`` column. "
+"Only ``id``, ``source`` and ``target`` columns are required."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:32
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:34
+msgid ""
+"``OK`` when a column with provided name has been generated and populated "
+"successfully. All connected edges will have unique similar integer values. "
+"In case of ``rows_where`` condition, non participating rows will have -1 "
+"integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:35
+msgid ""
+"``FAIL`` when the processing cannot be finished due to some error. Notice "
+"will be thrown accordingly."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:36
+msgid ""
+"``rows_where condition generated 0 rows`` when passed SQL condition has not "
+"been fulfilled by any row."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:48
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:50
+msgid ""
+"A network behind any routing query may consist of sub-networks completely "
+"isolated from each other. Possible reasons could be:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:52
+msgid "An island with no bridge connecting to the mainland."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:53
+msgid ""
+"An edge or mesh of edges failed to connect to other networks because of "
+"human negligence during data generation."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:54
+msgid "The data is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:55
+msgid "Topology creation failed to succeed."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:57
+msgid ""
+"pgr_labelGraph() will create an integer column (with the name provided by "
+"the user) and will assign same integer values to all those edges in the "
+"network which are connected topologically. Thus better analysis regarding "
+"network structure is possible. In case of ``rows_where`` condition, non "
+"participating rows will have -1 integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:59
+msgid ""
+"Prerequisites: Must run ``pgr_createTopology()`` in order to generate "
+"``source`` and ``target`` columns. Primary key column ``id`` should also be "
+"there in the network table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:62
+msgid "Function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:64
+msgid "``text`` Network table name, with optional schema name."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:65
+msgid ""
+"``text`` Primary key column name of the network table. Default is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:66
+msgid ""
+"``text`` Source column name generated after ``pgr_createTopology()``. "
+"Default is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:67
+msgid ""
+"``text`` Target column name generated after ``pgr_createTopology()``. "
+"Default is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:68
+msgid ""
+"``text`` Column name which will hold the integer labels for each sub-graph. "
+"Default is ``subgraph``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:69
+msgid ""
+"``text`` The SQL where condition. Default is ``true``, means the processing "
+"will be done on the whole table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:75
+msgid "Example Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:77
+msgid "The sample data, has 3 subgraphs."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:87
+msgid ""
+"`pgr_createTopology "
+"<https://github.com/Zia-/pgrouting/blob/develop/src/common/sql/pgrouting_topology.sql>`_"
+" to create the topology of a table based on its geometry and tolerance "
+"value."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_lineGraph.po b/locale/ja/LC_MESSAGES/pgr_lineGraph.po
new file mode 100644
index 0000000..7b69209
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_lineGraph.po
@@ -0,0 +1,387 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_lineGraph.rst:13
+msgid "pgr_lineGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:15
+msgid ""
+"``pgr_lineGraph`` — Transforms a given graph into its corresponding edge-"
+"based graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:31
+msgid "Given a graph G, its line graph L(G) is a graph such that:-"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:33
+msgid "each vertex of L(G) represents an edge of G"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:34
+msgid ""
+"two vertices of L(G) are adjacent if and only if their corresponding edges "
+"share a common endpoint in G."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:36
+msgid ""
+"The following figures show a graph (left, with blue vertices) and its Line "
+"Graph (right, with green vertices)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:39
+msgid "|first|"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:55
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:61
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:68
+msgid "The minimal signature is for a **directed** graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "This signature returns the Line Graph of the current graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:89
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:101
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:109
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:116
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:120
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:122
+msgid "RETURNS SETOF (seq, source, target, cost, reverse_cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129 ../../build/doc/pgr_lineGraph.rst:133
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "Identifier of the source vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:131
+msgid "When `negative`: the source is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "Identifier of the target vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:135
+msgid "When `negative`: the target is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137 ../../build/doc/pgr_lineGraph.rst:141
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "Weight of the edge (`source`, `target`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:139
+msgid ""
+"When `negative`: edge (`source`, `target`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "Weight of the edge (`target`, `source`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:143
+msgid ""
+"When `negative`: edge (`target`, `source`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:147
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:154
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:156
+msgid "https://en.wikipedia.org/wiki/Line_graph"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:157
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:160
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:161
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:162
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_maxCardinalityMatch.po b/locale/ja/LC_MESSAGES/pgr_maxCardinalityMatch.po
new file mode 100644
index 0000000..4c6c884
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_maxCardinalityMatch.po
@@ -0,0 +1,357 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:13
+msgid "pgr_maxCardinalityMatch - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:19
+msgid ""
+"``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a"
+" graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:32
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:33
+msgid "Renamed 2.5.0, Previous name pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:34
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:39
+msgid ""
+"A matching or independent edge set in a graph is a set of edges without "
+"common vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:40
+msgid ""
+"A maximum matching is a matching that contains the largest possible number "
+"of edges."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:42
+msgid "There may be many maximum matchings."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:43
+msgid "Calculates **one** possible maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:45
+msgid "The graph can be **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:46
+msgid "Running time: :math:`O( E*V * \\alpha(E,V))`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:48
+msgid ":math:`\\alpha(E,V)` is the inverse of the `Ackermann function`_."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:54
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:71
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:78
+msgid ""
+"The minimal use calculates one possible maximum cardinality matching on a "
+"**directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:90
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:98
+msgid ""
+"The complete signature calculates one possible maximum cardinality matching."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:113
+msgid "Description of the SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:115
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid "**going**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "``ANY-NUMERIC``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid ""
+"A positive value represents the existence of the edge (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "**coming**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid ""
+"A positive value represents the existence of the edge (target, source)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:127
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:129
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:130
+msgid "SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:133
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "(optional) Determines the type of the graph. Default TRUE."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:143
+msgid "Description of the Result"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "Identifier of the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "Identifier of the second end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:155
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:157
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:158
+msgid "http://www.boost.org/libs/graph/doc/maximum_matching.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:159
+msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:160
+msgid "https://en.wikipedia.org/wiki/Ackermann_function"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:163
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:164
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:165
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_maxFlow.po b/locale/ja/LC_MESSAGES/pgr_maxFlow.po
new file mode 100644
index 0000000..0327a6f
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_maxFlow.po
@@ -0,0 +1,354 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "pgr_maxFlow - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:19
+msgid ""
+"``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the "
+"source(s) to the targets(s) using the Push Relabel algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:28
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:36
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:37
+msgid ""
+"When the maximum flow is 0 then there is no flow and **0** is returned."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:39
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:41
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:42
+msgid "Uses the :ref:`pgr_pushRelabel <pgr_pushRelabel>` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:44
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:47
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:64
+msgid "Calculates the maximum flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:84
+msgid "Calculates the maximum flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:104
+msgid "Calculates the maximum flow from all the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:122
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:124
+msgid ""
+"Calculates the maximum flow from all of the `sources` to all of the "
+"`targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:138
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:149
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155 ../../build/doc/pgr_maxFlow.rst:157
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156 ../../build/doc/pgr_maxFlow.rst:158
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:166
+msgid "Description of the return value"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "Maximum flow possible from the source(s) to the target(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:177
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:178
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:179
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_nodeNetwork.po b/locale/ja/LC_MESSAGES/pgr_nodeNetwork.po
new file mode 100644
index 0000000..b9b92db
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_nodeNetwork.po
@@ -0,0 +1,353 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_nodeNetwork.rst:13
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:18
+msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:20
+msgid "Nicolas Ribot"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:21
+msgid "Nicolas Ribot, The source code is released under the MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:27
+msgid ""
+"The function reads edges from a not \"noded\" network table and writes the "
+"\"noded\" edges into a new table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:39
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:41
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:43
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:45
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:47
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:49
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:50
+msgid "``float8`` tolerance for coincident points (in projection unit)dd"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:52
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:53
+msgid "``text`` Suffix for the new table's. Default value is ``noded``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:55
+msgid "The output table will have for ``edge_table_noded``"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:57
+msgid "``bigint`` Unique identifier for the table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:58
+msgid "``bigint`` Identifier of the edge in original table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:59
+msgid "``integer`` Segment number of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:60
+msgid ""
+"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:61
+msgid ""
+"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:62
+msgid "``geometry`` Geometry column of the noded network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:65
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:66
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:70
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:72
+msgid "Let's create the topology for the data in :doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:90
+msgid "Now we can analyze the network."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:114
+msgid ""
+"The analysis tell us that the network has a gap and an intersection. We try "
+"to fix the problem using:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:136
+msgid ""
+"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
+"segmented"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:166
+msgid "We can create the topology of the new network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:184
+msgid "Now let's analyze the new topology"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:210
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:243
+msgid "Comparing the results"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:245
+msgid "Comparing with the Analysis in the original edge_table, we see that."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "Before"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "After"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "Table name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table_noded"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "All original fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Has only basic fields to do a topology analysis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1,6,24"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:255
+msgid "Edges with 2 dead ends 17,18"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:257
+msgid ""
+"Edge 17's right node is a dead end because there is no other edge sharing "
+"that same node. (cnt=1)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "No Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:263
+msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid "Gaps"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"There is a gap between edge 17 and 14 because edge 14 is near to the right "
+"node of edge 17"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
+"tolerance value was taken in account"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Intersections"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Edges 13 and 18 were intersecting"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid ""
+"Edges were segmented, So, now in the interection's point there is a node and"
+" the following edges share it: 13-1 13-2 18-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:274
+msgid ""
+"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
+"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
+"with tho following steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:276
+msgid ""
+"Add a column old_id into edge_table, this column is going to keep track the "
+"id of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:277
+msgid ""
+"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:290
+msgid "We recreate the topology:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:310
+msgid ""
+"To get the same analysis results as the topology of edge_table_noded, we do "
+"the following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:337
+msgid ""
+"To get the same analysis results as the original edge_table, we do the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:362
+msgid ""
+"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
+"is an under pass and there is also a street level juction, and the same "
+"happens with edges 17 and 13."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:389
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:391
+msgid ""
+":ref:`topology` for an overview of a topology for routing algorithms. "
+":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
+":ref:`pgr_create_topology` to create a topology based on the geometry. "
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:397
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:398
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:399
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_pointsAsPolygon.po b/locale/ja/LC_MESSAGES/pgr_pointsAsPolygon.po
new file mode 100644
index 0000000..356d85b
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_pointsAsPolygon.po
@@ -0,0 +1,124 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:13
+msgid "pgr_pointsAsPolygon"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:21
+msgid ""
+"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:27
+msgid "Returns the alpha shape as (multi)polygon geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:50
+msgid "Returns a (multi)polygon geometry (with holes)."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:54
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:55
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:56
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:57
+msgid ""
+"Supported to return a (multi)polygon geometry (with holes) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:61
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:62
+msgid ""
+"In the following query there is no way to control which point in the polygon"
+" is the first in the list, so you may get similar but different results than"
+" the following which are also correct."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:69
+msgid "The query use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:73
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:75
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:76
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:79
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:80
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:81
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_pushRelabel.po b/locale/ja/LC_MESSAGES/pgr_pushRelabel.po
new file mode 100644
index 0000000..13e8a04
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_pushRelabel.po
@@ -0,0 +1,439 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pushRelabel.rst:14
+msgid "pgr_pushRelabel - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:20
+msgid ""
+"``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowPushRelabel"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:41
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:60
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:62
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:81
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:83
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:104
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:123
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:125
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:140
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:158
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:160
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_edmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:161
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:162
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_strongComponents.po b/locale/ja/LC_MESSAGES/pgr_strongComponents.po
new file mode 100644
index 0000000..6f6c0cf
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_strongComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_strongComponents.rst:13
+msgid "pgr_strongComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:15
+msgid ""
+"``pgr_strongComponents`` — Return the strongly connected components of a "
+"directed graph using Tarjan's algorithm based on DFS. In particular, the "
+"algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:31
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other. This implementation can only be used "
+"with a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:40
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:42
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:44
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:62
+msgid "The signature is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:93
+msgid "http://en.wikipedia.org/wiki/Strongly_connected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_trsp.po b/locale/ja/LC_MESSAGES/pgr_trsp.po
new file mode 100644
index 0000000..108f0f8
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_trsp.po
@@ -0,0 +1,281 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_trsp.rst:13
+msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:22
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:24
+msgid ""
+"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:30
+msgid ""
+"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
+"can optionally take into account complicated turn restrictions like those "
+"found in real world navigable road networks. Performamnce wise it is nearly "
+"as fast as the A* search but has many additional features like it works with"
+" edges rather than the nodes of the network. Returns a set of "
+":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
+"make up a path."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:57
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:59
+msgid ""
+"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
+"shooting star in that you can specify turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:61
+msgid ""
+"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
+"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
+"This provides an easy way of adding turn restrictions to a road network by "
+"placing them in a separate table."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:64 ../../build/doc/pgr_trsp.rst:120
+msgid ""
+"a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:71 ../../build/doc/pgr_trsp.rst:127
+msgid "``int4`` identifier of the edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:72 ../../build/doc/pgr_trsp.rst:128
+msgid "``int4`` identifier of the source vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:73 ../../build/doc/pgr_trsp.rst:129
+msgid "``int4`` identifier of the target vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:74 ../../build/doc/pgr_trsp.rst:130
+msgid ""
+"``float8`` value, of the edge traversal cost. A negative cost will prevent "
+"the edge from being inserted in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:75 ../../build/doc/pgr_trsp.rst:131
+msgid ""
+"(optional) the cost for the reverse traversal of the edge. This is only used"
+" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
+"above remark about negative costs)."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:77
+msgid "``int4`` **NODE id** of the start point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:78
+msgid "``int4`` **NODE id** of the end point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:79 ../../build/doc/pgr_trsp.rst:134
+msgid "``true`` if the graph is directed"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:80 ../../build/doc/pgr_trsp.rst:135
+msgid ""
+"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
+"will be used for the cost of the traversal of the edge in the opposite "
+"direction."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:82 ../../build/doc/pgr_trsp.rst:137
+msgid ""
+"(optional) a SQL query, which should return a set of rows with the following"
+" columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:88 ../../build/doc/pgr_trsp.rst:143
+msgid "``float8`` turn restriction cost"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:89 ../../build/doc/pgr_trsp.rst:144
+msgid "``int4`` target id"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:90
+msgid ""
+"``text`` comma separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:92
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** of source and target "
+"together with a fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:94
+msgid "``int4`` **EDGE id** of the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:95
+msgid "``float8`` fraction of 1 defines the position on the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:96
+msgid "``int4`` **EDGE id** of the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:97
+msgid "``float8`` fraction of 1 defines the position on the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:99 ../../build/doc/pgr_trsp.rst:152
+msgid "Returns set of :ref:`type_cost_result`:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:101 ../../build/doc/pgr_trsp.rst:154
+msgid "row sequence"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:102 ../../build/doc/pgr_trsp.rst:156
+msgid "node ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:103 ../../build/doc/pgr_trsp.rst:157
+msgid "edge ID (``-1`` for the last row)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:104
+msgid "cost to traverse from ``id1`` using ``id2``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:107 ../../build/doc/pgr_trsp.rst:162
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:108
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:111
+msgid "Support for Vias"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:113
+msgid ""
+"The Support for Vias functions are prototypes. Not all corner cases are "
+"being considered."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:116
+msgid ""
+"We also have support for vias where you can say generate a from A to B to C,"
+" etc. We support both methods above only you pass an array of vertices or "
+"and array of edges and percentage position along the edge in two arrays."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:133
+msgid ""
+"``int4[]`` An ordered array of **NODE id** the path will go through from "
+"start to end."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:145
+msgid ""
+"``text`` commar separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:147
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** together with a "
+"fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:149
+msgid "``int4`` An ordered array of **EDGE id** that the path has to traverse"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:150
+msgid ""
+"``float8`` An array of fractional positions along the respective edges in "
+"``eids``, where 0.0 is the start of the edge and 1.0 is the end of the "
+"eadge."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:155
+msgid "route ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:158
+msgid "cost to traverse from ``id2`` using ``id3``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:163
+msgid "Via Support prototypes new in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:166
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:168
+msgid "**Without turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:175
+msgid "**With turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:177
+msgid "Then a query with turn restrictions is created as:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:184
+msgid "An example query using vertex ids and via points:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:191
+msgid "An example query using edge ids and vias:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:198
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:204
+msgid ":ref:`type_cost_result`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:207
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:208
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:209
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_version.po b/locale/ja/LC_MESSAGES/pgr_version.po
new file mode 100644
index 0000000..5a6623a
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_version.po
@@ -0,0 +1,130 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_version.rst:13
+msgid "pgr_version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:21
+msgid "``pgr_version`` — Query for pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:27
+msgid "Returns a table with pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:35 ../../build/doc/pgr_version.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:37
+msgid "Returns a table with:"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "**version**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42 ../../build/doc/pgr_version.rst:43
+#: ../../build/doc/pgr_version.rst:44 ../../build/doc/pgr_version.rst:45
+#: ../../build/doc/pgr_version.rst:46
+msgid "``varchar``"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "pgRouting version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "**tag**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "Git tag of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "**hash**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "Git hash of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "**branch**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "Git branch of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "**boost**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "Boost version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:51
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:52
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:56
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:58
+msgid "Query for full version string"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:66
+msgid "Query for ``version`` and ``boost`` attribute"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:78
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:81
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:82
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:83
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_vrpOneDepot.po b/locale/ja/LC_MESSAGES/pgr_vrpOneDepot.po
new file mode 100644
index 0000000..a0c5006
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_vrpOneDepot.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:14
+msgid "pgr_vrpOneDepot - Experimental"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:21
+msgid "**No documentation available**"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:24
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:28
+msgid "Current Result"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:34
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:41
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:43
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:46
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:47
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:48
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_withPoints.po b/locale/ja/LC_MESSAGES/pgr_withPoints.po
new file mode 100644
index 0000000..be629d4
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_withPoints.po
@@ -0,0 +1,665 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPoints.rst:13
+msgid "pgr_withPoints - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:19
+msgid ""
+"``pgr_withPoints`` - Returns the shortest path in a graph with additional "
+"temporary vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, find the shortest path(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:43
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:45
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:51
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path. -"
+" The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path: - The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:59
+msgid ""
+"For optimization purposes, any duplicated value in the start_vids or "
+"end_vids are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:60
+msgid ""
+"The returned values are ordered: - start_vid ascending - end_vid ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:64
+msgid "Running time: :math:`O(|start\\_vids|\\times(V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:68
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:81
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:87
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:90
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:91
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid ""
+"No **details** are given about distance of other points of points_sql query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:100
+msgid "From point 1 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:110
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:120
+msgid "From point 1 to vertex 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:132
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:141
+msgid "From point 1 to point 3 and vertex 5"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:153
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:162
+msgid "From point 1 and vertex 2 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:182
+msgid "From point 1 and vertex 2 to point 3 and vertex 7"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:192
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPoints.rst:249
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPoints.rst:222
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:207
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:211
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:221
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid ""
+"(optional). When ``true`` the results will include the points in points_sql "
+"that are in the path. Default is ``false`` which ignores other points of the"
+" points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:231
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:233
+msgid ""
+"Returns set of ``(seq, [path_seq,] [start_vid,] [end_vid,] node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "Path sequence that indicates the relative position on the path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+#: ../../build/doc/pgr_withPoints.rst:241
+#: ../../build/doc/pgr_withPoints.rst:242
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "Identifier of the ending vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:242
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "Identifier of the node:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:243
+msgid "A positive value indicates the node is a vertex of edges_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "A negative value indicates the node is a point of points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:249
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:262
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **right** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:268
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **left** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:274
+msgid ""
+"Many to many example with a twist: on undirected graph and showing details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:281
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:286
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:287
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:291
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:293
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:296
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:297
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:298
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_withPointsCost.po b/locale/ja/LC_MESSAGES/pgr_withPointsCost.po
new file mode 100644
index 0000000..f478ccd
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_withPointsCost.po
@@ -0,0 +1,603 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCost.rst:13
+msgid "pgr_withPointsCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:19
+msgid ""
+"``pgr_withPointsCost`` - Calculates the shortest path and returns only the "
+"aggregate cost of the shortest path(s) found, for the combination of points "
+"given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, return only the aggregate cost of the shortest path(s) found."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:79
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:44
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:45
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"vertices in the modified graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:51
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:52
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:54
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:58
+msgid "The `agg_cost` in the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:60
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:62
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:64
+msgid ""
+"If the values returned are stored in a table, the unique index would be the "
+"pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:67
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:69
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:71
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:73
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:75
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:76
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:78
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:82
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:92
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:96
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:102
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:105
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:124
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:145
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:166
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:185
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:204
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCost.rst:234
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:219
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:223
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:233
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:241
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:243
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "Identifier of the ending point. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:256
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:258
+msgid "With **right** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:264
+msgid "With **left** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:270
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:277
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:282
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:283
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:287
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:289
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:292
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:293
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:294
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_withPointsCostMatrix.po b/locale/ja/LC_MESSAGES/pgr_withPointsCostMatrix.po
new file mode 100644
index 0000000..c9bb20f
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_withPointsCostMatrix.po
@@ -0,0 +1,472 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:13
+msgid "pgr_withPointsCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:19
+msgid ""
+"``pgr_withPointsCostMatrix`` - Calculates the shortest path and returns only"
+" the aggregate cost of the shortest path(s) found, for the combination of "
+"points given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:31
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:35
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:45
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:87
+msgid "returning a symmetrical cost matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:89
+msgid "Using the default **side** value on the **points_sql** query"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:90
+msgid "Using an undirected graph"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:91
+msgid "Using the default **driving_side** value"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:100
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:128
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:116
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:127
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:153
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:154
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:155
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:156
+msgid "`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_withPointsDD.po b/locale/ja/LC_MESSAGES/pgr_withPointsDD.po
new file mode 100644
index 0000000..95b4be1
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_withPointsDD.po
@@ -0,0 +1,552 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsDD.rst:13
+msgid "pgr_withPointsDD - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:19
+msgid ""
+"``pgr_withPointsDD`` - Returns the driving distance from a starting point."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:37
+msgid ""
+"Modify the graph to include points and using Dijkstra algorithm, extracts "
+"all the nodes and points that have costs less than or equal to the value "
+"``distance`` from the starting point. The edges extracted will conform the "
+"corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:60
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:63
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:64
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:84
+msgid "Driving distance from a single point"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:86
+#: ../../build/doc/pgr_withPointsDD.rst:106
+msgid "Finds the driving distance depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:94
+msgid "Right side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:104
+msgid "Driving distance from many starting points"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:118
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsDD.rst:169
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsDD.rst:147
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:134
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:138
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "Starting point id"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "Distance from the start_pid"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+#: ../../build/doc/pgr_withPointsDD.rst:150
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid ""
+"(optional). Value in ['b', 'r', 'l', NULL] indicating if the driving side "
+"is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:146
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid ""
+"(optional). When ``true`` the nodes will only appear in the closest start_v "
+"list. Default is ``false`` which resembles several calls using the single "
+"starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:157
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:159
+msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid ""
+"Identifier of the node within the Distance from ``start_pid``. If ``details "
+"=: true`` a negative value is the identifier of a point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid "``-1`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:169
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "``0`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:180
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:182
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:184
+msgid "Left side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:190
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:199
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:204
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:205
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:209
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:211
+msgid ":ref:`pgr_drivingDistance` - Driving distance using dijkstra."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:212
+msgid ":ref:`pgr_alphashape` - Alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:213
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/pgr_withPointsKSP.po b/locale/ja/LC_MESSAGES/pgr_withPointsKSP.po
new file mode 100644
index 0000000..8202877
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/pgr_withPointsKSP.po
@@ -0,0 +1,571 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsKSP.rst:13
+msgid "pgr_withPointsKSP - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:19
+msgid ""
+"``pgr_withPointsKSP`` - Find the K shortest paths using Yen's algorithm."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:32
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:36
+msgid ""
+"Modifies the graph to include the points defined in the ``points_sql`` and "
+"using Yen algorithm, finds the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:41
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:56
+msgid "Minimal Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "The minimal usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:60
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:61
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "No **heap paths** are returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:82
+msgid "Finds the K shortest paths depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:91
+msgid "With details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsKSP.rst:130
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:115
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "**start_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "Starting point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "**end_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "Ending point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "**K**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "Number of shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid ""
+"(optional). When ``true`` the paths calculated to get the shortests paths "
+"will be returned also. Default is ``false`` only the K shortest paths are "
+"returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:129
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:139
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:141
+msgid ""
+"Returns set of ``(seq, path_id, path_seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid ""
+"Relative position in the path of node and edge. Has value 1 for the "
+"beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid ""
+"Path identifier. The ordering of the paths: For two paths i, j if i < j then"
+" agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid ""
+"Identifier of the node in the path. Negative values are the identifiers of a"
+" point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:164
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:166
+msgid "Left side driving topology with details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:172
+msgid "Right side driving topology with heap paths and details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:178
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:181
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:182
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:186
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:188
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:191
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:192
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:193
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/proposed.po b/locale/ja/LC_MESSAGES/proposed.po
new file mode 100644
index 0000000..9f1a6f4
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/proposed.po
@@ -0,0 +1,410 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/proposed.rst:13
+msgid "Stable Proposed Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:20
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:22
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:23
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:24
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:25
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:26
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:27
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:33
+msgid "As part of the :ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:35
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` Use pgr_dijkstra to calculate a cost matrix."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:36
+msgid ""
+":ref:`pgr_dijkstraVia` - Use pgr_dijkstra to make a route via vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:39
+msgid "Families"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:40
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:3
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:4
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:5
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:46
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:3
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:5
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:52
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:3
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:4
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:5
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:58
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:3
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:4
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:9
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:64
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:3
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:4
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:5
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:6
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:7
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:71
+msgid "categories"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:72
+msgid ":ref:`Cost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:3
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:4
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:6
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:7
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:78
+msgid ":ref:`CostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:3
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:4
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:6
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:7
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:84
+msgid ":ref:`KSP`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:3
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:4
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:106
+msgid "Experimental Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:111
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:113
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:114
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:116
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:117
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:118
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:119
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:120
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:121
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:122
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:123
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:124
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:125
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:126
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:127
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:132
+msgid ":ref:`contraction` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:134
+msgid ""
+":ref:`pgr_contractgraph` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:138
+msgid "Graph Analysis"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:139
+msgid ":ref:`pgr_labelGraph` - Analyze / label subgraphs within a network"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:141
+msgid ":ref:`components` - Analyze components within a graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:143
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:144
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:145
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:146
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:147
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:150
+msgid "VRP"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:151
+msgid ":ref:`pgr_gsocvrppdtw`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:152
+msgid ":ref:`pgr_vrp_basic`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:166
+msgid "Graph Transformation"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:167
+msgid ":doc:`pgr_lineGraph`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:178
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:179
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:180
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/release_notes.po b/locale/ja/LC_MESSAGES/release_notes.po
new file mode 100644
index 0000000..f4a09f7
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/release_notes.po
@@ -0,0 +1,1278 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/release_notes.rst:13
+msgid "Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ""
+"To see the full list of changes check the list of `Git commits "
+"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid "Table of contents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:21
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:22
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:23
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:24
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:25
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:26
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:27
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:28
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:29
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:30
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:31
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:32
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:33
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:34
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:35
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:36
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:43
+msgid "pgRouting 2.5.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:45
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.5.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.5.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:49
+msgid "enhancement:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:50
+msgid "pgr_version is now on SQL language"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:53
+msgid "Breaking change on:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:54
+msgid "pgr_edgeDisjointPaths:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:56
+msgid "Added path_id, cost and agg_cost columns on the result"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:57
+msgid "Parameter names changed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:58
+msgid "The many version results are the union of the one to one version"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:61
+msgid "New Signatures:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:62
+msgid "pgr_bdAstar(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:65 ../../build/doc/release_notes.rst:223
+msgid "New Proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:66
+msgid "pgr_bdAstar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:67
+msgid "pgr_bdAstar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:68
+msgid "pgr_bdAstar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:69
+msgid "pgr_bdAstarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:70
+msgid "pgr_bdAstarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:71
+msgid "pgr_bdAstarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:72
+msgid "pgr_bdAstarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:73
+msgid "pgr_bdAstarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:74
+msgid "pgr_bdDijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:75
+msgid "pgr_bdDijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:76
+msgid "pgr_bdDijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:77
+msgid "pgr_bdDijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:78
+msgid "pgr_bdDijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:79
+msgid "pgr_bdDijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:80
+msgid "pgr_bdDijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:81
+msgid "pgr_bdDijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:82
+msgid "pgr_lineGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:83
+msgid "pgr_connectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:84
+msgid "pgr_strongComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:85
+msgid "pgr_biconnectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:86
+msgid "pgr_articulationPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:87
+msgid "pgr_bridges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:90 ../../build/doc/release_notes.rst:160
+#: ../../build/doc/release_notes.rst:247
+msgid "Deprecated Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:91
+msgid "pgr_bdastar - use pgr_bdAstar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:94
+msgid "Renamed Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:95
+msgid "pgr_maxFlowPushRelabel - use pgr_pushRelabel instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:96
+msgid "pgr_maxFlowEdmondsKarp -use pgr_edmondsKarp instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:97
+msgid "pgr_maxFlowBoykovKolmogorov - use pgr_boykovKolmogorov instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:98
+msgid "pgr_maximumCardinalityMatching - use pgr_maxCardinalityMatch instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:101
+msgid "Deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:102
+msgid "pgr_pointToEdgeNode"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:108
+msgid "pgRouting 2.4.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:110
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.2 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.2%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:113
+msgid "Improvement"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:114
+msgid "Works for postgreSQL 10"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:117 ../../build/doc/release_notes.rst:131
+#: ../../build/doc/release_notes.rst:168 ../../build/doc/release_notes.rst:522
+#: ../../build/doc/release_notes.rst:529 ../../build/doc/release_notes.rst:550
+#: ../../build/doc/release_notes.rst:557
+msgid "Bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:118
+msgid "Fixed: Unexpected error column \"cname\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:119
+msgid ""
+"Replace __linux__ with __GLIBC__ for glibc-specific headers and functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:126
+msgid "pgRouting 2.4.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:128
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.1 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.1%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:132
+msgid "Fixed compiling error on macOS"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:133
+msgid "Condition error on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:138
+msgid "pgRouting 2.4.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:140
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.4.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.4.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:143 ../../build/doc/release_notes.rst:213
+#: ../../build/doc/release_notes.rst:374
+msgid "New Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:144
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:148
+msgid "New Proposed Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:149
+msgid "pgr_maxFlow"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:150
+msgid "pgr_astar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:151
+msgid "pgr_astar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:152
+msgid "pgr_astar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:153
+msgid "pgr_astarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:154
+msgid "pgr_astarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:155
+msgid "pgr_astarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:156
+msgid "pgr_astarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:157
+msgid "pgr_astarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:161
+msgid "pgr_bddijkstra - use pgr_bdDijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:164 ../../build/doc/release_notes.rst:253
+msgid "Deprecated Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:165
+msgid "pgr_pointsToVids"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:169
+msgid "Bug fixes on proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:171
+msgid "pgr_withPointsKSP: fixed ordering"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:173
+msgid "TRSP original code is used with no changes on the compilation warnings"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:178
+msgid "pgRouting 2.3.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:180
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:183 ../../build/doc/release_notes.rst:199
+#: ../../build/doc/release_notes.rst:269 ../../build/doc/release_notes.rst:282
+#: ../../build/doc/release_notes.rst:293 ../../build/doc/release_notes.rst:305
+#: ../../build/doc/release_notes.rst:424 ../../build/doc/release_notes.rst:455
+msgid "Bug Fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:184
+msgid "Fixed pgr_gsoc_vrppdtw crash when all orders fit on one truck."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:185
+msgid "Fixed pgr_trsp:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:187
+msgid "Alternate code is not executed when the point is in reality a vertex"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:188
+msgid "Fixed ambiguity on seq"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:194
+msgid "pgRouting 2.3.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:196
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.1%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:200
+msgid "Leaks on proposed max_flow functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:201
+msgid "Regression error on pgr_trsp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:202
+msgid "Types discrepancy on pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:208
+msgid "pgRouting 2.3.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:210
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:214
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:215
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:218 ../../build/doc/release_notes.rst:330
+msgid "New Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:219
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:224
+msgid "pgr_dijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:225
+msgid "pgr_withPointsCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:226
+msgid "pgr_maxFlowPushRelabel(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:227
+msgid "pgr_maxFlowPushRelabel(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:228
+msgid "pgr_maxFlowPushRelabel(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:229
+msgid "pgr_maxFlowPushRelabel(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:230
+msgid "pgr_maxFlowEdmondsKarp(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:231
+msgid "pgr_maxFlowEdmondsKarp(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:232
+msgid "pgr_maxFlowEdmondsKarp(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:233
+msgid "pgr_maxFlowEdmondsKarp(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:234
+msgid "pgr_maxFlowBoykovKolmogorov (one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:235
+msgid "pgr_maxFlowBoykovKolmogorov (one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:236
+msgid "pgr_maxFlowBoykovKolmogorov (many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:237
+msgid "pgr_maxFlowBoykovKolmogorov (many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:238
+msgid "pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:239
+msgid "pgr_edgeDisjointPaths(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:240
+msgid "pgr_edgeDisjointPaths(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:241
+msgid "pgr_edgeDisjointPaths(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:242
+msgid "pgr_edgeDisjointPaths(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:243
+msgid "pgr_contractGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:248
+msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:249
+msgid "pgr_astar - use pgr_aStar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:254
+msgid "pgr_flip_edges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:255
+msgid "pgr_vidsToDmatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:256
+msgid "pgr_pointsToDMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:257
+msgid "pgr_textToPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:264
+msgid "pgRouting 2.2.4 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:266
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.4 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.4%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:270
+msgid "Bogus uses of extern \"C\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:271
+msgid "Build error on Fedora 24 + GCC 6.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:272
+msgid "Regression error pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:277
+msgid "pgRouting 2.2.3 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:279
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.3 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.3%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:283
+msgid "Fixed compatibility issues with PostgreSQL 9.6."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:288
+msgid "pgRouting 2.2.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:290
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:294
+msgid "Fixed regression error on pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:300
+msgid "pgRouting 2.2.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:302
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A2.2.1+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:306
+msgid "Server crash fix on pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:307
+msgid "Bug fix on With Points family of functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:313
+msgid "pgRouting 2.2.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:315
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:319 ../../build/doc/release_notes.rst:387
+msgid "Improvements"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:320
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:322
+msgid "Adding a row_where and outall optional parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:324
+msgid "Signature fix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:326
+msgid "pgr_dijkstra -- to match what is documented"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:331
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:332
+msgid "pgr_Johnson"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:333
+msgid "pgr_dijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:334
+msgid "pgr_dijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:335
+msgid "pgr_dijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:336
+msgid "pgr_dijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:339 ../../build/doc/release_notes.rst:391
+msgid "Proposed functionality"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:340
+msgid "pgr_withPoints(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:341
+msgid "pgr_withPoints(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:342
+msgid "pgr_withPoints(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:343
+msgid "pgr_withPoints(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:344
+msgid "pgr_withPointsCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:345
+msgid "pgr_withPointsCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:346
+msgid "pgr_withPointsCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:347
+msgid "pgr_withPointsCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:348
+msgid "pgr_withPointsDD(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:349
+msgid "pgr_withPointsDD(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:350
+msgid "pgr_withPointsKSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:351
+msgid "pgr_dijkstraVia"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:355
+msgid "Deprecated functions:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:356
+msgid "pgr_apspWarshall use pgr_floydWarshall instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:357
+msgid "pgr_apspJohnson use pgr_Johnson instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:358
+msgid "pgr_kDijkstraCost use pgr_dijkstraCost instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:359
+msgid "pgr_kDijkstraPath use pgr_dijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:362
+msgid "Renamed and deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:363
+msgid "pgr_makeDistanceMatrix renamed to _pgr_makeDistanceMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:369
+msgid "pgRouting 2.1.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:371
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.1.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:375
+msgid "pgr_dijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:376
+msgid "pgr_dijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:377
+msgid "pgr_dijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:378
+msgid "pgr_drivingDistance(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:381
+msgid "Refactored"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:382
+msgid "pgr_dijkstra(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:383
+msgid "pgr_ksp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:384
+msgid "pgr_drivingDistance(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:388
+msgid ""
+"pgr_alphaShape function now can generate better (multi)polygon with holes "
+"and alpha parameter."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:392
+msgid ""
+"Proposed functions from Steve Woodbridge, (Classified as Convenience by the "
+"author.)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:394
+msgid ""
+"pgr_pointToEdgeNode - convert a point geometry to a vertex_id based on "
+"closest edge."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:395
+msgid ""
+"pgr_flipEdges - flip the edges in an array of geometries so the connect end "
+"to end."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:396
+msgid ""
+"pgr_textToPoints - convert a string of x,y;x,y;... locations into point "
+"geometries."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:397
+msgid ""
+"pgr_pointsToVids - convert an array of point geometries into vertex ids."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:398
+msgid ""
+"pgr_pointsToDMatrix - Create a distance matrix from an array of points."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:399 ../../build/doc/release_notes.rst:400
+msgid ""
+"pgr_vidsToDMatrix - Create a distance matrix from an array of vertix_id."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:402
+msgid "Added proposed functions from GSoc Projects:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:404
+msgid "pgr_vrppdtw"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:405
+msgid "pgr_vrponedepot"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:408
+msgid "Deprecated functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:409
+msgid "pgr_getColumnName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:410
+msgid "pgr_getTableName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:411
+msgid "pgr_isColumnCndexed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:412
+msgid "pgr_isColumnInTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:413
+msgid "pgr_quote_ident"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:414
+msgid "pgr_versionless"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:415
+msgid "pgr_startPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:416
+msgid "pgr_endPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:417
+msgid "pgr_pointToId"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:420
+msgid "No longer supported"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:421
+msgid "Removed the 1.x legacy functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:425
+msgid "Some bug fixes in other functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:429
+msgid "Refactoring Internal Code"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:430
+msgid "A C and C++ library for developer was created"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:432
+msgid "encapsulates postgreSQL related functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:433
+msgid "encapsulates Boost.Graph graphs"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:435
+msgid "Directed Boost.Graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:436
+msgid "Undirected Boost.graph."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:438
+msgid "allow any-integer in the id's"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:439
+msgid "allow any-numerical on the cost/reverse_cost columns"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:441
+msgid ""
+"Instead of generating many libraries: - All functions are encapsulated in "
+"one library - The library has the prefix 2-1-0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:450
+msgid "pgRouting 2.0.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:452
+msgid "Minor bug fixes."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:456
+msgid "No track of the bug fixes were kept."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:462
+msgid "pgRouting 2.0.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:464
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.0.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.0.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:466
+msgid ""
+"With the release of pgRouting 2.0.0 the library has abandoned backwards "
+"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. The main "
+"Goals for this release are:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:469
+msgid "Major restructuring of pgRouting."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:470
+msgid "Standardization of the function naming"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:471
+msgid "Preparation of the project for future development."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:473
+msgid "As a result of this effort:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:475
+msgid "pgRouting has a simplified structure"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:476
+msgid "Significant new functionality has being added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:477
+msgid "Documentation has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:478
+msgid "Testing has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:479
+msgid "And made it easier for multiple developers to make contributions."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:483
+msgid "Important Changes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:484
+msgid ""
+"Graph Analytics - tools for detecting and fixing connection some problems in"
+" a graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:485
+msgid "A collection of useful utility functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:486
+msgid ""
+"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:487
+msgid ""
+"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
+"pgr_bdDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:488
+msgid "One to many nodes search (pgr_kDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:489
+msgid "K alternate paths shortest path (pgr_ksp)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:490
+msgid ""
+"New TSP solver that simplifies the code and the build process (pgr_tsp), "
+"dropped \"Gaul Library\" dependency"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:491
+msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:492
+msgid "Dropped support for Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:493
+msgid ""
+"Built a test infrastructure that is run before major code changes are "
+"checked in"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:494
+msgid ""
+"Tested and fixed most all of the outstanding bugs reported against 1.x that "
+"existing in the 2.0-dev code base."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:495
+msgid "Improved build process for Windows"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:496
+msgid ""
+"Automated testing on Linux and Windows platforms trigger by every commit"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:497
+msgid "Modular library design"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:498
+msgid "Compatibility with PostgreSQL 9.1 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:499
+msgid "Compatibility with PostGIS 2.0 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:500
+msgid "Installs as PostgreSQL EXTENSION"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:501
+msgid "Return types re factored and unified"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:502
+msgid "Support for table SCHEMA in function parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:503
+msgid "Support for ``st_`` PostGIS function prefix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:504
+msgid "Added ``pgr_`` prefix to functions and types"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:505
+msgid "Better documentation: http://docs.pgrouting.org"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:506
+msgid "shooting_star is discontinued"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:513
+msgid "pgRouting 1.x Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:515
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for 1.x "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+1.x%22+is%3Aclosed>`_"
+" on Github. The following release notes have been copied from the previous "
+"``RELEASE_NOTES`` file and are kept as a reference."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:520
+msgid "Changes for release 1.05"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:526
+msgid "Changes for release 1.03"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:528
+msgid "Much faster topology creation"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:533
+msgid "Changes for release 1.02"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:535 ../../build/doc/release_notes.rst:542
+msgid "Shooting* bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:536
+msgid "Compilation problems solved"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:540
+msgid "Changes for release 1.01"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:546
+msgid "Changes for release 1.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:548
+msgid "Core and extra functions are separated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:549
+msgid "Cmake build process"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:554
+msgid "Changes for release 1.0.0b"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:556
+msgid "Additional SQL file with more simple names for wrapper functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:561
+msgid "Changes for release 1.0.0a"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:563
+msgid "Shooting* shortest path algorithm for real road networks"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:564
+msgid "Several SQL bugs were fixed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:568
+msgid "Changes for release 0.9.9"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:570
+msgid "PostgreSQL 8.2 support"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:571
+msgid ""
+"Shortest path functions return empty result if they could not find any path"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:575
+msgid "Changes for release 0.9.8"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:577
+msgid "Renumbering scheme was added to shortest path functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:578
+msgid "Directed shortest path functions were added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:579
+msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/routingFunctions.po b/locale/ja/LC_MESSAGES/routingFunctions.po
new file mode 100644
index 0000000..3242809
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/routingFunctions.po
@@ -0,0 +1,134 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/routingFunctions.rst:15
+msgid "Routing Functions"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:21
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:23
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:28
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:30
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:33
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:39
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:41
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:43
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:49
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/sampledata.po b/locale/ja/LC_MESSAGES/sampledata.po
new file mode 100644
index 0000000..2ded9cd
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/sampledata.po
@@ -0,0 +1,152 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/sampledata.rst:11
+msgid "Sample Data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:13
+msgid ""
+"The documentation provides very simple example queries based on a small "
+"sample network. To be able to execute the sample queries, run the following "
+"SQL commands to create a table with a small network data set."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:18
+msgid "Create table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:25
+msgid "Insert data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:32
+msgid "Topology"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:33
+msgid ""
+"Before you test a routing function use this query to create a topology "
+"(fills the ``source`` and ``target`` columns)."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:40
+msgid "Points of interest"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:41
+msgid "When points outside of the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:42
+msgid "Used with the :ref:`withPoints` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:49
+msgid "Restrictions"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:50
+msgid "Used with the :ref:`trsp` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:57
+msgid "Categories"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:58
+msgid "Used with the :ref:`maxFlow` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:65
+msgid "Vertex table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:66
+msgid "Used in some deprecated signatures or deprecated functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:74
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:76
+msgid "Red arrows correspond when ``cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:77
+msgid "Blue arrows correspond when ``reverse_cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:78
+msgid "Points are outside the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:79
+msgid "Click on the graph to enlarge."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:84
+msgid ""
+"Network for queries marked as ``directed`` and ``cost`` and ``reverse_cost``"
+" columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:86
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"vehicles."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:91
+msgid "**Graph 1: Directed, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:96
+msgid ""
+"Network for queries marked as ``undirected`` and ``cost`` and "
+"``reverse_cost`` columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:98
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"pedestrians."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:104
+msgid "**Graph 2: Undirected, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:109
+msgid ""
+"Network for queries marked as ``directed`` and only ``cost`` column is used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:116
+msgid "**Graph 3: Directed, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:121
+msgid ""
+"Network for queries marked as ``undirected`` and only ``cost`` column is "
+"used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:127
+msgid "**Graph 4: Undirected, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:134
+msgid "Pick & Deliver Data"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/support.po b/locale/ja/LC_MESSAGES/support.po
new file mode 100644
index 0000000..4082646
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/support.po
@@ -0,0 +1,177 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/support.rst:13
+msgid "Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:15
+msgid ""
+"pgRouting community support is available through the `pgRouting website "
+"<http://pgrouting.org/support.html>`_, `documentation "
+"<http://docs.pgrouting.org>`_, tutorials, mailing lists and others. If "
+"you’re looking for :ref:`commercial support <support_commercial>`, find "
+"below a list of companies providing pgRouting development and consulting "
+"services."
+msgstr ""
+
+#: ../../build/doc/support.rst:19
+msgid "Reporting Problems"
+msgstr ""
+
+#: ../../build/doc/support.rst:21
+msgid ""
+"Bugs are reported and managed in an `issue tracker "
+"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
+"steps:"
+msgstr ""
+
+#: ../../build/doc/support.rst:23
+msgid ""
+"Search the tickets to see if your problem has already been reported. If so, "
+"add any extra context you might have found, or at least indicate that you "
+"too are having the problem. This will help us prioritize common issues."
+msgstr ""
+
+#: ../../build/doc/support.rst:24
+msgid ""
+"If your problem is unreported, create a `new issue "
+"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
+msgstr ""
+
+#: ../../build/doc/support.rst:25
+msgid ""
+"In your report include explicit instructions to replicate your issue. The "
+"best tickets include the exact SQL necessary to replicate a problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:26
+msgid ""
+"If you can test older versions of PostGIS for your problem, please do. On "
+"your ticket, note the earliest version the problem appears."
+msgstr ""
+
+#: ../../build/doc/support.rst:27
+msgid ""
+"For the versions where you can replicate the problem, note the operating "
+"system and version of pgRouting, PostGIS and PostgreSQL."
+msgstr ""
+
+#: ../../build/doc/support.rst:28
+msgid ""
+"It is recommended to use the following wrapper on the problem to pin point "
+"the step that is causing the problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:39
+msgid "Mailing List and GIS StackExchange"
+msgstr ""
+
+#: ../../build/doc/support.rst:41
+msgid ""
+"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
+"server:"
+msgstr ""
+
+#: ../../build/doc/support.rst:43
+msgid ""
+"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
+msgstr ""
+
+#: ../../build/doc/support.rst:44
+msgid ""
+"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
+"dev"
+msgstr ""
+
+#: ../../build/doc/support.rst:46
+msgid ""
+"For general questions and topics about how to use pgRouting, please write to"
+" the user mailing list."
+msgstr ""
+
+#: ../../build/doc/support.rst:48
+msgid ""
+"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
+" tag the question with ``pgrouting``. Find all questions tagged with "
+"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
+"or subscribe to the `pgRouting questions feed "
+"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
+msgstr ""
+
+#: ../../build/doc/support.rst:54
+msgid "Commercial Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:56
+msgid ""
+"For users who require professional support, development and consulting "
+"services, consider contacting any of the following organizations, which have"
+" significantly contributed to the development of pgRouting:"
+msgstr ""
+
+#: ../../build/doc/support.rst:61
+msgid "**Company**"
+msgstr ""
+
+#: ../../build/doc/support.rst:62
+msgid "**Offices in**"
+msgstr ""
+
+#: ../../build/doc/support.rst:63
+msgid "**Website**"
+msgstr ""
+
+#: ../../build/doc/support.rst:64
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/support.rst:65
+msgid "Germany, Japan"
+msgstr ""
+
+#: ../../build/doc/support.rst:66
+msgid "https://georepublic.info"
+msgstr ""
+
+#: ../../build/doc/support.rst:67
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/support.rst:68 ../../build/doc/support.rst:71
+msgid "United States"
+msgstr ""
+
+#: ../../build/doc/support.rst:69
+msgid "http://imaptools.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:70
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/support.rst:72
+msgid "http://www.paragoncorporation.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:73
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/support.rst:74
+msgid "Switzerland, France"
+msgstr ""
+
+#: ../../build/doc/support.rst:75
+msgid "http://www.camptocamp.com"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/topology-functions.po b/locale/ja/LC_MESSAGES/topology-functions.po
new file mode 100644
index 0000000..ac6a1b3
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/topology-functions.po
@@ -0,0 +1,66 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/topology-functions.rst:13
+msgid "Topology - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:15
+msgid ""
+"The pgRouting's topology of a network, represented with an edge table with "
+"source and target attributes and a vertices table associated with it. "
+"Depending on the algorithm, you can create a topology or just reconstruct "
+"the vertices table, You can analyze the topology, We also provide a function"
+" to node an unoded network."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:19
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:20
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:21
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:22
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:23
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:35
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:38
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:39
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:40
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/types_index.po b/locale/ja/LC_MESSAGES/types_index.po
new file mode 100644
index 0000000..3f3faa7
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/types_index.po
@@ -0,0 +1,56 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/types_index.rst:13
+msgid "pgRouting Data Types"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:15
+msgid ""
+"The following are commonly used data types for some of the pgRouting "
+"functions."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:17
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:18
+msgid ""
+":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe "
+"a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:19
+msgid ""
+":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:30
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:33
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:34
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:35
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ja/LC_MESSAGES/withPoints-family.po b/locale/ja/LC_MESSAGES/withPoints-family.po
new file mode 100644
index 0000000..3d4f303
--- /dev/null
+++ b/locale/ja/LC_MESSAGES/withPoints-family.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/withPoints-family.rst:14
+msgid "withPoints - Family of functions"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:16
+msgid "When points are also given as input:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:20
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:21
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:22
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:23
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:24
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:47
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:49
+msgid ""
+"The squared vertices are the temporary vertices, The temporary vertices are "
+"added acordng to the dirving side, The following images visualy show the "
+"diferences on how depending on the driving side the data is interpreted."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:53
+msgid "Right driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:58
+msgid "Left driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:63
+msgid "doesn't matter the driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:68
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:70
+msgid ""
+"This famly of functions was thought for routing vehicles, but might as well "
+"work for some other application that we can not think of."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:73
+msgid ""
+"The with points family of function give you the ability to route between "
+"arbitrary points located outside the original graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:76
+msgid ""
+"When given a point identified with a `pid` that its being mapped to and edge"
+" with an identifier `edge_id`, with a `fraction` along that edge (from the "
+"source to the target of the edge) and some additional information about "
+"which `side` of the edge the point is on, then routing from arbitrary points"
+" more accurately reflect routing vehicles in road networks,"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid ""
+"I talk about a family of functions because it includes different "
+"functionalities."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:84
+msgid "pgr_withPoints is pgr_dijkstra based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:85
+msgid "pgr_withPointsCost is pgr_dijkstraCost based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:86
+msgid "pgr_withPointsKSP is pgr_ksp based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid "pgr_withPointsDD is pgr_drivingDistance based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:89
+msgid ""
+"In all this functions we have to take care of as many aspects as possible:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:91
+msgid "Must work for routing:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:93
+msgid "Cars (directed graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:94
+msgid "Pedestrians (undirected graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:96
+msgid "Arriving at the point:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:98
+msgid "In either side of the street."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:99
+msgid ""
+"Compulsory arrival on the side of the street where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:101
+msgid "Countries with:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:103
+msgid "Right side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:104
+msgid "Left side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:106
+msgid "Some points are:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:108
+msgid ""
+"Permanent, for example the set of points of clients stored in a table in the"
+" data base"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:109
+msgid "Temporal, for example points given through a web application"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:111
+msgid "The numbering of the points are handled with negative sign."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:113
+msgid "Original point identifiers are to be positive."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:114
+msgid "Transformation to negative is done internally."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:115
+msgid "For results for involving vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:117
+msgid "positive sign is a vertex of the original grpah"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:118
+msgid "negative sign is a point of the temporary points"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:120
+msgid ""
+"The reason for doing this is to avoid confusion when there is a vertex with "
+"the same number as identifier as the points identifier."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:123
+msgid "Graph & edges"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:125
+msgid ""
+"Let :math:`G_d(V,E)` where :math:`V` is the set of vertices and :math:`E` is"
+" the set of edges be the original directed graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:127
+msgid ""
+"An edge of the original `edges_sql` is :math:`(id, source, target, cost, "
+"reverse\\_cost)` will generate internally"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:129
+msgid ":math:`(id, source, target, cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:130
+msgid ":math:`(id, target, source, reverse\\_cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:133
+msgid "Point Definition"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:135
+msgid ""
+"A point is defined by the quadruplet: :math:`(pid, eid, fraction, side)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:137
+msgid "**pid** is the point identifier"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:138
+msgid "**eid** is an edge id of the `edges_sql`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:139
+msgid "**fraction** represents where the edge `eid` will be cut."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:140
+msgid "**side** Indicates the side of the edge where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:144
+msgid "Creating Temporary Vertices in the Graph"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:146
+msgid "For edge (15, 9,12 10, 20), & lets insert point (2, 12, 0.3, r)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:149
+msgid "On a right hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:150
+msgid "From first image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:152
+msgid "We can arrive to the point only via vertex 9."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:153
+msgid "It only afects the edge (15, 9,12, 10) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:154
+msgid "Edge (15, 12,9, 20) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:155
+#: ../../build/doc/withPoints-family.rst:167
+#: ../../build/doc/withPoints-family.rst:182
+msgid "Create new edges:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:157
+#: ../../build/doc/withPoints-family.rst:186
+msgid "(15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:158
+#: ../../build/doc/withPoints-family.rst:187
+msgid "(15, -1,12, 7) edge from point 1 to vertex 12 has cost 7"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:161
+msgid "On a left hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:162
+msgid "From second image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:164
+msgid "We can arrive to the point only via vertex 12."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:165
+msgid "It only afects the edge (15, 12,9 20) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:166
+msgid "Edge (15, 9,12, 10) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:169
+#: ../../build/doc/withPoints-family.rst:184
+msgid "(15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:170
+#: ../../build/doc/withPoints-family.rst:185
+msgid "(15, -1,9, 6) edge from point 1 to vertex 9 has cost 6"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:172
+msgid "that fraction is from vertex 9 to vertex 12"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:176
+msgid "When driving side does not matter"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:177
+msgid "From third image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:179
+msgid "We can arrive to the point either via vertex 12 or via vertex 9"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:180
+msgid "Edge (15, 12,9 20) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:181
+msgid "Edge (15, 9,12, 10) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:190
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:193
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:194
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:195
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/pot/.gitignore b/locale/pot/.gitignore
new file mode 100644
index 0000000..b7e8e96
--- /dev/null
+++ b/locale/pot/.gitignore
@@ -0,0 +1 @@
+.doctrees
diff --git a/locale/pot/KSP-category.pot b/locale/pot/KSP-category.pot
new file mode 100644
index 0000000..f197f5f
--- /dev/null
+++ b/locale/pot/KSP-category.pot
@@ -0,0 +1,42 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/KSP-category.rst:14
+msgid "KSP Category"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:18
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:19
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:26
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:27
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:28
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/TSP-family.pot b/locale/pot/TSP-family.pot
new file mode 100644
index 0000000..e159794
--- /dev/null
+++ b/locale/pot/TSP-family.pot
@@ -0,0 +1,500 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/TSP-family.rst:13
+msgid "Traveling Sales Person - Family of functions"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:17
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:18
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:33
+msgid "Origin"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid "The traveling sales person problem was studied in the 18th century by mathematicians"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid "**Sir William Rowam Hamilton** and **Thomas Penyngton Kirkman**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:38
+msgid "A discussion about the work of Hamilton & Kirkman can be found in the book **Graph Theory (Biggs et al. 1976)**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:41
+msgid "ISBN-13: 978-0198539162"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:42
+msgid "ISBN-10: 0198539169"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:44
+msgid "It is believed that the general form of the TSP have been first studied by Kalr Menger in Vienna and Harvard. The problem was later promoted by Hassler, Whitney & Merrill at Princeton. A detailed description about the connection between Menger & Whitney, and the development of the TSP can be found in `On the history of combinatorial optimization (till 1960) <http://www.cwi.nl/~lex/files/histco.ps>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:50
+msgid "Problem Definition"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:52
+msgid "Given a collection of cities and travel cost between each pair, find the cheapest way for visiting all of the cities and returning to the starting point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:56
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:58
+msgid "The travel costs are symmetric:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:60
+msgid "traveling costs from city A to city B are just as much as traveling from B to A."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:62
+msgid "This problem is an NP-hard optimization problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:64
+msgid "To calculate the number of different tours through :math:`n` cities:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:66
+msgid "Given a starting city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:67
+msgid "There are :math:`n-1` choices for the second city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:68
+msgid "And :math:`n-2` choices for the third city, etc."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:69
+msgid "Multiplying these together we get :math:`(n-1)! = (n-1) (n-2) . . 1`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:70
+msgid "Now since our travel costs do not depend on the direction we take around the tour:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:72
+msgid "this number by 2"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:73
+msgid ":math:`(n-1)!/2`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:76
+msgid "TSP & Simulated Annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:78
+msgid "The simulated annealing algorithm was originally inspired from the process of annealing in metal work."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:81
+msgid "Annealing involves heating and cooling a material to alter its physical properties due to the changes in its internal structure. As the metal cools its new structure becomes fixed, consequently causing the metal to retain its newly obtained properties. [C001]_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:88
+msgid "Pseudocode"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:89
+msgid "Given an initial solution, the simulated annealing process, will start with a high temperature and gradually cool down until the desired temperature is reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:92
+msgid "For each temperature, a neighbouring new solution **snew** is calculated. The higher the temperature the higher the probability of accepting the new solution as a possible bester solution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:95
+msgid "Once the desired temperature is reached, the best solution found is returned"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:118
+msgid "pgRouting Implementation"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:120
+msgid "pgRouting's implementation adds some extra parameters to allow some exit controls within the simulated annealing process."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:123
+msgid "To cool down faster to the next temperature:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:125
+msgid "max_changes_per_temperature: limits the number of changes in the solution per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:126
+msgid "max_consecutive_non_changes: limits the number of consecutive non changes per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:128
+msgid "This is done by doing some book keeping on the times **solution = snew;** is executed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:130
+msgid "max_changes_per_temperature: Increases by one when **solution** changes"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:131
+msgid "max_consecutive_non_changes: Reset to 0 when **solution** changes, and increased each **try**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:133
+msgid "Additionally to stop the algorithm at a higher temperature than the desired one:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:135
+msgid "max_processing_time: limits the time the simulated annealing is performed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:136
+msgid "book keeping is done to see if there was a change in **solution** on the last temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:138
+msgid "Note that, if no change was found in the first **max_consecutive_non_changes** tries, then the simulated annealing will stop."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:168
+msgid "Choosing parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:170
+msgid "There is no exact rule on how the parameters have to be chose, it will depend on the special characteristics of the problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:173
+msgid "Your computational time is crucial, then put your time limit to **max_processing_time**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:174
+msgid "Make the **tries_per_temperture** depending on the number of cities, for example:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:176
+msgid "Useful to estimate the time it takes to do one cycle: use `1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:178
+msgid "this will help to set a reasonable **max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:180
+msgid ":math:`n * (n-1)`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:181
+msgid ":math:`500 * n`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:183
+msgid "For a faster decreasing the temperature set **cooling_factor** to a smaller number, and set to a higher number for a slower decrease."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:186
+msgid "When for the same given data the same results are needed, set **randomize** to `false`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:188
+msgid "When estimating how long it takes to do one cycle: use `false`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:191
+msgid "A recommendation is to play with the values and see what fits to the particular data."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:196
+msgid "Description Of the Control parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:198
+msgid "The control parameters are optional, and have a default value."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+#: ../../build/doc/TSP-family.rst:230
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+#: ../../build/doc/TSP-family.rst:230
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+#: ../../build/doc/TSP-family.rst:204
+#: ../../build/doc/TSP-family.rst:233
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+#: ../../build/doc/TSP-family.rst:204
+msgid "`0`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "The greedy part of the implementation will use this identifier."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "Last visiting vertex before returning to start_vid."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "**max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+#: ../../build/doc/TSP-family.rst:209
+#: ../../build/doc/TSP-family.rst:210
+#: ../../build/doc/TSP-family.rst:211
+#: ../../build/doc/TSP-family.rst:234
+#: ../../build/doc/TSP-family.rst:237
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "`+infinity`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "Stop the annealing processing when the value is reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "**tries_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+#: ../../build/doc/TSP-family.rst:207
+#: ../../build/doc/TSP-family.rst:208
+#: ../../build/doc/TSP-family.rst:232
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "`500`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "Maximum number of times a neighbor(s) is searched in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "**max_changes_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "`60`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "Maximum number of times the solution is changed in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid "**max_consecutive_non_changes**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+#: ../../build/doc/TSP-family.rst:209
+msgid "`100`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid "Maximum number of consecutive times the solution is not changed in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "**initial_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "Starting temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "**final_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "`0.1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "Ending temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "**cooling_factor**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "`0.9`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "Value between between 0 and 1 (not including) used to calculate the next temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "**randomize**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "`true`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "Choose the random seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:214
+msgid "true: Use current time as seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:215
+msgid "false: Use `1` as seed. Using this value will get the same results with the same data in each execution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:225
+msgid "Description of the return columns"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:227
+msgid "Returns set of ``(seq, node, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:230
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "Identifier of the node/coordinate/point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:234
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid "Cost to traverse from the current ``node`` ito the next ``node`` in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:237
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:245
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:248
+msgid "References"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:249
+msgid "`Simulated annaeling algorithm for beginners <http://www.theprojectspot.com/tutorial-post/simulated-annealing-algorithm-for-beginners/6>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:251
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:252
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:255
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:256
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:257
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/aStar-family.pot b/locale/pot/aStar-family.pot
new file mode 100644
index 0000000..7d6d097
--- /dev/null
+++ b/locale/pot/aStar-family.pot
@@ -0,0 +1,200 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/aStar-family.rst:13
+msgid "aStar - Family of functions"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:15
+msgid "The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm with a heuristic that allow it to solve most shortest path problems by evaluation only a sub-set of the overall graph."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:19
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:20
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:21
+msgid ":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:34
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:36
+msgid "The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm with a heuristic, that is an estimation of the remaining cost from the vertex to the goal, that allows to solve most shortest path problems by evaluation only a sub-set of the overall graph. Running time: :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:46
+msgid "Heuristic"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:48
+msgid "Currently the heuristic functions available are:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:50
+msgid "0: :math:`h(v) = 0` (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:51
+msgid "1: :math:`h(v) = abs(max(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:52
+msgid "2: :math:`h(v) = abs(min(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:53
+msgid "3: :math:`h(v) = \\Delta x * \\Delta x + \\Delta y * \\Delta y`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:54
+msgid "4: :math:`h(v) = sqrt(\\Delta x * \\Delta x + \\Delta y * \\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:55
+msgid "5: :math:`h(v) = abs(\\Delta x) + abs(\\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:57
+msgid "where :math:`\\Delta x = x_1 - x_0` and :math:`\\Delta y = y_1 - y_0`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:63
+#: ../../build/doc/aStar-family.rst:76
+#: ../../build/doc/aStar-family.rst:89
+msgid "Factor"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:66
+msgid "Analysis 1"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:67
+msgid "Working with cost/reverse_cost as length in degrees, x/y in lat/lon: Factor = 1 (no need to change units)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:71
+msgid "Analysis 2"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:72
+msgid "Working with cost/reverse_cost as length in meters, x/y in lat/lon: Factor = would depend on the location of the points:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76
+#: ../../build/doc/aStar-family.rst:89
+msgid "latitude"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76
+#: ../../build/doc/aStar-family.rst:89
+msgid "conversion"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+#: ../../build/doc/aStar-family.rst:91
+msgid "45"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "1 longitude degree is 78846.81 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "78846"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+#: ../../build/doc/aStar-family.rst:92
+msgid "0"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "1 longitude degree is 111319.46 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "111319"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:83
+msgid "Analysis 3"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:84
+msgid "Working with cost/reverse_cost as time in seconds, x/y in lat/lon: Factor: would depend on the location of the points and on the average speed say 25m/s is the speed."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "1 longitude degree is (78846.81m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "3153 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "1 longitude degree is (111319.46 m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "4452 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:98
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:100
+msgid ":ref:`pgr_aStar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:101
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:102
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:103
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:104
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:107
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:108
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:109
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/allpairs-family.pot b/locale/pot/allpairs-family.pot
new file mode 100644
index 0000000..7c5644b
--- /dev/null
+++ b/locale/pot/allpairs-family.pot
@@ -0,0 +1,993 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/allpairs-family.rst:14
+msgid "All Pairs - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:16
+msgid "The following functions work an all vertices pair combinations"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:33
+msgid "Performance"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "The following tests:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:36
+msgid "non server computer"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:37
+msgid "with AMD 64 CPU"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:38
+msgid "4G memory"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:39
+msgid "trusty"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "posgreSQL version 9.3"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:43
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:45
+msgid "The following data was used"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:53
+msgid "Data processing was done with osm2pgrouting-alpha"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:66
+msgid "Results"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:68
+msgid "One"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:70
+msgid "This test is not with a bounding box The density of the passed graph is extremely low. For each <SIZE> 30 tests were executed to get the average The tested query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:83
+#: ../../build/doc/allpairs-family.rst:140
+msgid "The results of this tests are presented as:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:85
+msgid "is the number of edges given as input."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:86
+#: ../../build/doc/allpairs-family.rst:143
+msgid "is the total number of records in the query."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:87
+#: ../../build/doc/allpairs-family.rst:144
+msgid "is the density of the data :math:`\\dfrac{E}{V \\times (V-1)}`."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:88
+#: ../../build/doc/allpairs-family.rst:145
+msgid "is the number of records returned by the queries."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:89
+#: ../../build/doc/allpairs-family.rst:146
+msgid "is the average execution time in seconds of pgr_floydWarshall."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:90
+#: ../../build/doc/allpairs-family.rst:147
+msgid "is the average execution time in seconds of pgr_johnson."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "SIZE"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "EDGES"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "DENSITY"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "OUT ROWS"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Floyd-Warshall"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Johnson"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+#: ../../build/doc/allpairs-family.rst:96
+msgid "500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.18E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "1346"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.14"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.13"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+#: ../../build/doc/allpairs-family.rst:97
+msgid "1000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.36E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "2655"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.23"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.18"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:98
+msgid "1500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.55E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "4110"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:99
+msgid "2000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.73E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "5676"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.56"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+#: ../../build/doc/allpairs-family.rst:100
+msgid "2500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.89E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "7177"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.84"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+#: ../../build/doc/allpairs-family.rst:101
+msgid "3000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.07E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "8778"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "0.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+#: ../../build/doc/allpairs-family.rst:102
+msgid "3500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "1.24E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "10526"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "2.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "0.95"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+#: ../../build/doc/allpairs-family.rst:103
+msgid "4000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.41E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "12484"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "3.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.58E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "14354"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+#: ../../build/doc/allpairs-family.rst:105
+msgid "5000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.76E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "16503"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "6.05"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.78"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+#: ../../build/doc/allpairs-family.rst:106
+msgid "5500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "1.93E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "18623"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "7.53"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "2.03"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+#: ../../build/doc/allpairs-family.rst:107
+msgid "6000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.11E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "20710"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "8.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+#: ../../build/doc/allpairs-family.rst:108
+msgid "6500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.28E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "22752"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "9.99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+#: ../../build/doc/allpairs-family.rst:109
+msgid "7000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "2.46E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "24687"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "11.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "3.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+#: ../../build/doc/allpairs-family.rst:110
+msgid "7500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "2.64E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "26861"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "13.94"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "3.60"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+#: ../../build/doc/allpairs-family.rst:111
+msgid "8000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "2.83E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "29050"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "15.61"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "4.09"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+#: ../../build/doc/allpairs-family.rst:112
+msgid "8500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "3.01E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "31693"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "17.43"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "4.63"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+#: ../../build/doc/allpairs-family.rst:113
+msgid "9000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "3.17E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "33879"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "19.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "5.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+#: ../../build/doc/allpairs-family.rst:114
+msgid "9500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "3.35E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "36287"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "20.77"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "6.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+#: ../../build/doc/allpairs-family.rst:115
+msgid "10000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "3.52E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "38491"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "23.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "6.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:119
+msgid "Two"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:121
+msgid "This test is with a bounding box The density of the passed graph higher than of the Test One. For each <SIZE> 30 tests were executed to get the average The tested edge query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:133
+msgid "The tested queries"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:142
+msgid "is the size of the bounding box."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.001"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "44"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.0608"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "1197"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:154
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.10"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.002"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.0251"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "4330"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.003"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "223"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.0122"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "18849"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.004"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "358"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.0085"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "71834"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.005"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "470"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.0070"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "116290"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.22"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.006"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "639"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.0055"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "207030"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.27"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "843"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.0043"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "346930"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.64"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.38"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.008"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "996"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.0037"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "469936"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.90"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.009"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1146"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.0032"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "613135"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.62"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.010"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1360"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.0027"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "849304"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1.87"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.011"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1573"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.0024"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1147101"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "2.65"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1.04"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1789"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.0021"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1483629"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "3.72"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1.35"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1975"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.0019"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1846897"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "4.86"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.014"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2281"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.0017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2438298"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "7.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2588"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.0015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "3156007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "10.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2.80"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.016"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "2958"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.0013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "4090618"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "14.67"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "3.76"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "3247"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.0012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4868919"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "18.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4.48"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:174
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:176
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:177
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:178
+msgid "`Boost floyd-Warshall <http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ algorithm"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:181
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:182
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:183
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/bdAstar-family.pot b/locale/pot/bdAstar-family.pot
new file mode 100644
index 0000000..e7da33c
--- /dev/null
+++ b/locale/pot/bdAstar-family.pot
@@ -0,0 +1,379 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Bidirectional A* - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:18
+msgid ":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid ":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:35
+msgid "Based on A* algorithm, the bidirectional search finds a shortest path from a starting vertex (``start_vid``) to an ending vertex (``end_vid``). It runs two simultaneous searches: one forward from the ``start_vid``, and one backward from the ``end_vid``, stopping when the two meet in the middle. This implementation can be used with a directed graph and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:49
+msgid "When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:53
+msgid "When the starting vertex and ending vertex are the different and there is no path:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:58
+msgid "For large graphs where there is a path bewtween the starting vertex and ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:60
+msgid "It is expected to terminate faster than pgr_astar"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:63
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:78
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:72
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:84
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:85
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:89
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:90
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:91
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:92
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:93
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:94
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+#: ../../build/doc/bdAstar-family.rst:97
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid "(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see :ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid "(optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:103
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:108
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/bdDijkstra-family.pot b/locale/pot/bdDijkstra-family.pot
new file mode 100644
index 0000000..a0650ad
--- /dev/null
+++ b/locale/pot/bdDijkstra-family.pot
@@ -0,0 +1,102 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdDijkstra-family.rst:13
+msgid "Bidirectional Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:17
+msgid ":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:18
+msgid ":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:19
+msgid ":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:35
+msgid "Based on Dijkstra's algorithm, the bidirectional search finds a shortest path a starting vertex (``start_vid``) to an ending vertex (``end_vid``). It runs two simultaneous searches: one forward from the source, and one backward from the target, stopping when the two meet in the middle. This implementation can be used with a directed graph and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:49
+msgid "When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:53
+msgid "When the starting vertex and ending vertex are the different and there is no path:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:58
+msgid "For large graphs where there is a path bewtween the starting vertex and ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:60
+msgid "It is expected to terminate faster than pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:63
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:66
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:67
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:68
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/components-family.pot b/locale/pot/components-family.pot
new file mode 100644
index 0000000..8d8e60d
--- /dev/null
+++ b/locale/pot/components-family.pot
@@ -0,0 +1,696 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/components-family.rst:13
+msgid "Components - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:22
+msgid ":ref:`pgr_connectedComponents` - Return the connected components of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:23
+msgid ":ref:`pgr_strongComponents` - Return the strongly connected components of a directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid ":ref:`pgr_biconnectedComponents` - Return the biconnected components of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:25
+msgid ":ref:`pgr_articulationPoints` - Return the articulation points of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:42
+msgid "The problem definition"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:45
+msgid "Connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:46
+msgid "A connected component of an undirected graph is a set of vertices that are all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:49
+#: ../../build/doc/components-family.rst:183
+#: ../../build/doc/components-family.rst:252
+#: ../../build/doc/components-family.rst:312
+msgid "**Notice**: This problem defines on an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:51
+#: ../../build/doc/components-family.rst:117
+#: ../../build/doc/components-family.rst:185
+#: ../../build/doc/components-family.rst:254
+#: ../../build/doc/components-family.rst:314
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:54
+msgid "pgr_connectedComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:56
+#: ../../build/doc/components-family.rst:122
+#: ../../build/doc/components-family.rst:190
+#: ../../build/doc/components-family.rst:259
+#: ../../build/doc/components-family.rst:319
+msgid "where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:58
+#: ../../build/doc/components-family.rst:124
+#: ../../build/doc/components-family.rst:192
+#: ../../build/doc/components-family.rst:261
+#: ../../build/doc/components-family.rst:321
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:60
+#: ../../build/doc/components-family.rst:126
+#: ../../build/doc/components-family.rst:194
+#: ../../build/doc/components-family.rst:263
+#: ../../build/doc/components-family.rst:323
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:61
+#: ../../build/doc/components-family.rst:127
+#: ../../build/doc/components-family.rst:195
+#: ../../build/doc/components-family.rst:264
+#: ../../build/doc/components-family.rst:324
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:63
+#: ../../build/doc/components-family.rst:129
+#: ../../build/doc/components-family.rst:197
+#: ../../build/doc/components-family.rst:266
+#: ../../build/doc/components-family.rst:326
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:65
+#: ../../build/doc/components-family.rst:199
+#: ../../build/doc/components-family.rst:268
+#: ../../build/doc/components-family.rst:328
+msgid "The weighted undirected graph, :math:`G(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:67
+#: ../../build/doc/components-family.rst:133
+#: ../../build/doc/components-family.rst:201
+#: ../../build/doc/components-family.rst:270
+#: ../../build/doc/components-family.rst:330
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:69
+#: ../../build/doc/components-family.rst:203
+#: ../../build/doc/components-family.rst:272
+#: ../../build/doc/components-family.rst:332
+msgid ":math:`V = source \\cup target`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:72
+#: ../../build/doc/components-family.rst:137
+#: ../../build/doc/components-family.rst:206
+#: ../../build/doc/components-family.rst:275
+#: ../../build/doc/components-family.rst:335
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:74
+#: ../../build/doc/components-family.rst:208
+#: ../../build/doc/components-family.rst:277
+#: ../../build/doc/components-family.rst:337
+msgid ":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ &\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} \\\\ \\cup &\\{(source_i, target_i, [...]
+msgstr ""
+
+#: ../../build/doc/components-family.rst:77
+#: ../../build/doc/components-family.rst:142
+#: ../../build/doc/components-family.rst:211
+#: ../../build/doc/components-family.rst:280
+#: ../../build/doc/components-family.rst:340
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:79
+#: ../../build/doc/components-family.rst:144
+#: ../../build/doc/components-family.rst:213
+#: ../../build/doc/components-family.rst:282
+#: ../../build/doc/components-family.rst:342
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:81
+#: ../../build/doc/components-family.rst:146
+#: ../../build/doc/components-family.rst:215
+#: ../../build/doc/components-family.rst:284
+#: ../../build/doc/components-family.rst:344
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:89
+#: ../../build/doc/components-family.rst:154
+#: ../../build/doc/components-family.rst:223
+msgid ":math:`\\boldsymbol{\\pi} = \\{(component_i, n\\_seq_i, node_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:298
+#: ../../build/doc/components-family.rst:358
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:92
+msgid ":math:`component_i = \\min \\{node_j | node_j \\in component_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:93
+#: ../../build/doc/components-family.rst:158
+#: ../../build/doc/components-family.rst:227
+msgid ":math:`n\\_seq_i` is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:94
+#: ../../build/doc/components-family.rst:159
+msgid ":math:`node_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:95
+#: ../../build/doc/components-family.rst:160
+#: ../../build/doc/components-family.rst:229
+#: ../../build/doc/components-family.rst:296
+#: ../../build/doc/components-family.rst:356
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:97
+#: ../../build/doc/components-family.rst:162
+#: ../../build/doc/components-family.rst:231
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:298
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+#: ../../build/doc/components-family.rst:170
+#: ../../build/doc/components-family.rst:239
+#: ../../build/doc/components-family.rst:301
+#: ../../build/doc/components-family.rst:361
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:101
+msgid "The first component is composed of nodes ``0``, ``1`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:102
+msgid "The second component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+msgid "The third component is composed of nodes ``2`` and ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:111
+msgid "Strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:112
+msgid "A strongly connected component of a directed graph is a set of vertices that are all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:115
+msgid "**Notice**: This problem defines on a directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:120
+msgid "pgr_strongComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:131
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:135
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:139
+msgid ":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ &\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i >=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:157
+#: ../../build/doc/components-family.rst:226
+msgid ":math:`component_i = \\min {node_j | node_j \\in component_i}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:166
+msgid "The first component is composed of nodes ``1``, ``2`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:167
+msgid "The second component is composed of node ``0``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:168
+msgid "The third component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:169
+msgid "The fourth component is composed of node ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:170
+msgid "The fifth component is composed of node ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:177
+msgid "Biconnected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:178
+msgid "The biconnected components of an undirected graph are the maximal subsets of vertices such that the removal of a vertex from particular component will not disconnect the component. Unlike connected components, vertices may belong to multiple biconnected components. Vertices can be present in multiple biconnected components, but each edge can only be contained in a single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:188
+msgid "pgr_biconnectedComponents(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:228
+msgid ":math:`edge_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:358
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:235
+msgid "The first component is composed of edges ``1 - 2``, ``0 - 1`` and ``0 - 2``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:236
+msgid "The second component is composed of edges ``2 - 4``, ``2 - 3`` and ``3 - 4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:237
+msgid "The third component is composed of edge ``5 - 6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:238
+msgid "The fourth component is composed of edge ``6 - 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:239
+msgid "The fifth component is composed of edges ``8 - 9``, ``9 - 10`` and ``8 - 10``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:246
+msgid "Articulation Points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:247
+msgid "Those vertices that belong to more than one biconnected component are called articulation points or, equivalently, cut vertices. Articulation points are vertices whose removal would increase the number of connected components in the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:257
+msgid "pgr_articulationPoints(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:292
+msgid ":math:`\\boldsymbol{\\pi} = \\{node_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:295
+msgid ":math:`node_i` is an articulation point."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:301
+msgid "Articulation points are nodes ``2`` and ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:308
+msgid "Bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:309
+msgid "A bridge is an edge of an undirected graph whose deletion increases its number of connected components."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:317
+msgid "pgr_bridges(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:352
+msgid ":math:`\\boldsymbol{\\pi} = \\{edge_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:355
+msgid ":math:`edge_i` is an edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:361
+msgid "Bridges are edges ``5 <--> 6`` and ``6 <--> 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:370
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:372
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:378
+#: ../../build/doc/components-family.rst:379
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+#: ../../build/doc/components-family.rst:384
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:382
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:386
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:390
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:392
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:393
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:402
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:405
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:416
+msgid "Description of the return values for connected components and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:418
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:444
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:443
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:443
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:461
+#: ../../build/doc/components-family.rst:477
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+msgid "Component identifier. It is equal to the minimum node identifier in the component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:435
+msgid "Description of the return values for biconnected components, connected components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:437
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:443
+msgid "Component identifier. It is equal to the minimum edge identifier in the component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:453
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:455
+#: ../../build/doc/components-family.rst:471
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:469
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:483
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:486
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:487
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:488
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/contraction-family.pot b/locale/pot/contraction-family.pot
new file mode 100644
index 0000000..260435f
--- /dev/null
+++ b/locale/pot/contraction-family.pot
@@ -0,0 +1,614 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/contraction-family.rst:14
+msgid "Contraction - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:21
+msgid ":ref:`pgr_contractGraph`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:29
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:31
+msgid "In big graphs, like the road graphs, or electric networks, graph contraction can be used to speed up some graph algorithms. Contraction reduces the size of the graph by removing some of the vertices and edges and, for example, might add edges that represent a sequence of original edges decreasing the total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:33
+msgid "This implementation gives a flexible framework for adding contraction algorithms in the future, currently, it supports two algorithms:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:35
+#: ../../build/doc/contraction-family.rst:46
+msgid "Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:36
+#: ../../build/doc/contraction-family.rst:166
+msgid "Linear contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:38
+msgid "Allowing the user to:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:40
+msgid "Forbid contraction on a set of nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:41
+msgid "Decide the order of the contraction algorithms and set the maximum number of times they are to be executed."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:43
+msgid "UNDER DISCUSSION: Forbid contraction on a set of edges"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:47
+msgid "In the algorithm, dead end contraction is represented by 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:50
+msgid "Dead end nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:52
+msgid "The definition of a dead end node is different for a directed and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:54
+msgid "In case of a undirected graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:56
+msgid "The number of adjacent vertices is 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:58
+msgid "In case of an directed graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:60
+msgid "There are no outgoing edges and has at least one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:61
+msgid "There is one incoming and one outgoing edge with the same identifier."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:64
+#: ../../build/doc/contraction-family.rst:178
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:65
+msgid "The green node ``B`` represents a dead end node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:66
+msgid "The node ``A`` is the only node connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:67
+#: ../../build/doc/contraction-family.rst:181
+msgid "Node ``A`` is part of the rest of the graph and has an unlimited number of incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:68
+#: ../../build/doc/contraction-family.rst:183
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:86
+msgid "Operation: Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:88
+msgid "The dead end contraction will stop until there are no more dead end nodes. For example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:91
+#: ../../build/doc/contraction-family.rst:208
+msgid "Node ``A`` is connected to the rest of the graph by an unlimited number of edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:92
+msgid "Node ``B`` is connected to the rest of the graph with one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:93
+msgid "Node ``B`` is the only node connecting to ``C``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:94
+msgid "The green node ``C`` represents a `Dead End` node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:113
+msgid "After contracting ``C``, node ``B`` is now a `Dead End` node and is contracted:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:129
+msgid "Node ``B`` gets contracted"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:143
+msgid "Nodes ``B`` and ``C`` belong to node ``A``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:148
+msgid "Not Dead End nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:150
+msgid "In this graph ``B`` is not a `dead end` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:167
+msgid "In the algorithm, linear contraction is represented by 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:170
+msgid "Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:172
+msgid "A node is considered a linear node if satisfies the following:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:174
+msgid "The number of adjacent vertices are 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:175
+msgid "Should have at least one incoming edge and one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:179
+msgid "The green node ``B`` represents a linear node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:180
+msgid "The nodes ``A`` and ``C`` are the only nodes connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:182
+msgid "Node ``C`` is part of the rest of the graph and has an unlimited number of incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:203
+msgid "Operation: Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:205
+msgid "The linear contraction will stop until there are no more linear nodes. For example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:209
+msgid "Node ``B`` is connected to the rest of the graph with one incoming edge and one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:210
+msgid "Node ``C`` is connected to the rest of the graph with one incoming edge and one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:211
+msgid "Node ``D`` is connected to the rest of the graph by an unlimited number of edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:212
+msgid "The green nodes ``B`` and ``C`` represents `Linear` nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:234
+msgid "After contracting ``B``, a new edge gets inserted between ``A`` and ``C`` which is represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:254
+msgid "Node ``C`` is `linear node` and gets contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:272
+msgid "Nodes ``B`` and ``C`` belong to edge connecting ``A`` and ``D`` which is represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:275
+msgid "Not Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:277
+msgid "In this graph ``B`` is not a `linear` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:298
+msgid "The cycle"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:300
+msgid "Contracting a graph, can be done with more than one operation. The order of the operations affect the resulting contracted graph, after applying one operation, the set of vertices that can be contracted by another operation changes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:302
+msgid "This implementation, cycles ``max_cycles`` times through ``operations_order`` ."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:315
+msgid "Contracting Sample Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:317
+msgid "In this section, building and using a contracted graph will be shown by example."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:319
+msgid "The :doc:`sampledata` for an undirected graph is used"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:320
+msgid "a dead end operation first followed by a linear operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:322
+msgid "The original graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:326
+msgid "After doing a dead end contraction operation:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:330
+msgid "Doing a linear contraction operation to the graph above"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:335
+msgid "There are five cases, in this documentation, which arise when calculating the shortest path between a given source and target. In this examples, ``pgr_dijkstra`` is used."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:338
+msgid "**Case 1**: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:339
+msgid "**Case 2**: Source belongs to a contracted graph, while target belongs to a edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:340
+msgid "**Case 3**: Source belongs to a vertex subgraph, while target belongs to an edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:341
+msgid "**Case 4**: Source belongs to a contracted graph, while target belongs to an vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:342
+msgid "**Case 5**: The path contains a new edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:345
+msgid "Construction of the graph in the database"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:348
+msgid "Original Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:349
+msgid "The following query shows the original data involved in the contraction operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:356
+msgid "Contraction Results"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:361
+msgid "The above results do not represent the contracted graph. They represent the changes done to the graph after applying the contraction algorithm. We can see that vertices like 6 and 11 do not appear in the contraction results because they were not affected by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:364
+msgid "step 1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:365
+msgid "Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` tables:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "The vertices set belonging to the vertex/edge"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+#: ../../build/doc/contraction-family.rst:372
+msgid "**is_contracted**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+msgid "On a `vertex` table: when ``true`` the vertex is contracted, so is not part of the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:372
+msgid "On an `edge` table: when ``true`` the edge was generated by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:375
+msgid "Using the following queries:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:382
+msgid "step 2"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:383
+msgid "For simplicity, in this documentation, store the results of the call to pgr_contractGraph in a temporary table"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:390
+msgid "step 3"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:391
+msgid "Update the `vertex` and `edge` tables using the results of the call to pgr_contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:393
+msgid "In `edge_table_vertices_pgr.is_contracted` indicate the vertices that are contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:399
+msgid "Add to `edge_table_vertices_pgr.contracted_vertices` the contracted vertices belonging to the vertices."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:405
+msgid "Insert the new edges generated by pgr_contractGraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:412
+msgid "step 3.1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:413
+msgid "Verify visually the updates."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:415
+msgid "On the `edge_table_vertices_pgr`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:421
+msgid "On the `edge_table`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:427
+msgid "vertices that belong to the contracted graph are the non contracted vertices"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:434
+msgid "case 1: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:435
+msgid "Inspecting the contracted graph above, vertex 3 and vertex 11 are part of the contracted graph. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:437
+msgid "vertices_in_graph hold the vertices that belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:438
+#: ../../build/doc/contraction-family.rst:452
+#: ../../build/doc/contraction-family.rst:469
+#: ../../build/doc/contraction-family.rst:485
+#: ../../build/doc/contraction-family.rst:507
+msgid "when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:440
+msgid "Visually, looking at the original graph, going from 3 to 11: 3 -> 6 -> 11, and in the contracted graph, it is also 3 -> 6 -> 11. The results, on the contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:448
+msgid "case 2: Source belongs to the contracted graph, while target belongs to a edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:452
+msgid "Inspecting the contracted graph above, vertex 3 is part of the contracted graph and vertex 1 belongs to the contracted subgraph of edge 19. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:450
+msgid "expand1 holds the contracted vertices of the edge where vertex 1 belongs. (belongs to edge 19)."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:451
+msgid "vertices_in_graph hold the vertices that belong to the contracted graph and also the contracted vertices of edge 19."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:454
+msgid "Visually, looking at the original graph, going from 3 to 1: 3 -> 2 -> 1, and in the contracted graph, it is also 3 -> 2 -> 1. The results, on the contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:463
+msgid "case 3: Source belongs to a vertex subgraph, while target belongs to an edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:464
+msgid "Inspecting the contracted graph above, vertex 7 belongs to the contracted subgraph of vertex 5 and vertex 13 belongs to the contracted subgraph of edge 21. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:466
+#: ../../build/doc/contraction-family.rst:483
+msgid "expand7 holds the contracted vertices of vertex where vertex 7 belongs. (belongs to vertex 5)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:467
+msgid "expand13 holds the contracted vertices of edge where vertex 13 belongs. (belongs to edge 21)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:468
+msgid "vertices_in_graph hold the vertices that belong to the contracted graph, contracted vertices of vertex 5 and contracted vertices of edge 21."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:471
+msgid "Visually, looking at the original graph, going from 7 to 13: 7 -> 8 -> 5 -> 10 -> 13, and in the contracted graph, it is also 7 -> 8 -> 5 -> 10 -> 13. The results, on the contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:480
+msgid "case 4: Source belongs to the contracted graph, while target belongs to an vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:481
+msgid "Inspecting the contracted graph above, vertex 3 is part of the contracted graph and vertex 7 belongs to the contracted subgraph of vertex 5. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:484
+msgid "vertices_in_graph hold the vertices that belong to the contracted graph and the contracted vertices of vertex 5."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:487
+msgid "Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8 -> 7, but in the contracted graph, it is 3 -> 5 -> 8 -> 7. The results, on the contracted graph do not match the results as if it was done on the original graph. This is because the path contains edge 19 which is added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:495
+msgid "case 5: The path contains an edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:496
+msgid "In the previous example we can see that the path from vertex 3 to vertex 7 contains an edge which is added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:502
+msgid "Inspecting the contracted graph above, edge 19 should be expanded. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:504
+msgid "first_dijkstra holds the results of the dijkstra query."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:505
+msgid "edges_to_expand holds the edges added by the contraction algorithm and included in the path."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:506
+msgid "vertices_in_graph hold the vertices that belong to the contracted graph, vertices of the contracted solution and the contracted vertices of the edges added by the contraction algorithm and included in the contracted solution."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:509
+msgid "Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8 -> 7, and in the contracted graph, it is also 3 -> 2 -> 5 -> 8 -> 7. The results, on the contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:517
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:519
+msgid "http://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:520
+msgid "http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:521
+msgid "The queries use :ref:`pgr_contractGraph` function and the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:524
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:525
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:526
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/cost-category.pot b/locale/pot/cost-category.pot
new file mode 100644
index 0000000..2912586
--- /dev/null
+++ b/locale/pot/cost-category.pot
@@ -0,0 +1,174 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost-category.rst:13
+msgid "Cost - Category"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:17
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:18
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:20
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:21
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:34
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:36
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:38
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:39
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:40
+msgid "Returns the sum of the costs of the resulting path(s) for pair combination of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:44
+msgid "The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:46
+msgid "When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:48
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:50
+msgid "When the starting vertex and ending vertex are the different and there is no path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:52
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:54
+msgid "Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:56
+msgid "Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:58
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:60
+msgid "Any duplicated value in the `start_vids` or in `end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:62
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:64
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:65
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:75
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/costMatrix-category.pot b/locale/pot/costMatrix-category.pot
new file mode 100644
index 0000000..b373d6d
--- /dev/null
+++ b/locale/pot/costMatrix-category.pot
@@ -0,0 +1,226 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/costMatrix-category.rst:13
+msgid "Cost Matrix - Category"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:17
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:18
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:20
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:21
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:40
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:43
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:45
+msgid ":ref:`tsp` needs as input a symmetric cost matrix and no edge `(u, v)` must value :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:47
+msgid "This collection of functions will return a cost matrix in form of a table."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:53
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:55
+msgid "Can be used as input to :ref:`pgr_tsp`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:57
+msgid "when the resulting matrix is symmetric and there is no :math:`\\infty` value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:58
+msgid "It will be the users responsibility to make the matrix symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:60
+msgid "By using geometric or harmonic average of the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:61
+msgid "By using max or min the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:62
+msgid "By setting the upper triangle to be the mirror image of the lower triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:63
+msgid "By setting the lower triangle to be the mirror image of the upper triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:65
+msgid "It is also the users responsibility to fix an :math:`\\infty` value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:67
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:68
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:69
+msgid "Returns the sum of the costs of the shortest path for pair combination of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:70
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:71
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:73
+msgid "The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:75
+msgid "When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:77
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:79
+msgid "When the starting vertex and ending vertex are the different and there is no path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:81
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:83
+msgid "Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:85
+msgid "Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:87
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:89
+msgid "Any duplicated value in the `start_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:91
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:93
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:94
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:96
+msgid "Running time: approximately :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:101
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:103
+msgid ":ref:`pgr_tsp`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:108
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/cost_result.pot b/locale/pot/cost_result.pot
new file mode 100644
index 0000000..7127f27
--- /dev/null
+++ b/locale/pot/cost_result.pot
@@ -0,0 +1,100 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost_result.rst:13
+msgid "pgr_costResult[]"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:19
+#: ../../build/doc/cost_result.rst:52
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:21
+msgid "``pgr_costResult[]`` — A set of records to describe a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:25
+#: ../../build/doc/cost_result.rst:58
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:37
+#: ../../build/doc/cost_result.rst:71
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:38
+#: ../../build/doc/cost_result.rst:73
+msgid "generic name, to be specified by the function, typically the node id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:39
+#: ../../build/doc/cost_result.rst:74
+msgid "generic name, to be specified by the function, typically the edge id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:40
+#: ../../build/doc/cost_result.rst:75
+msgid "cost attribute"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:46
+msgid "pgr_costResult3[] - Multiple Path Results with Cost"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:54
+msgid "``pgr_costResult3[]`` — A set of records to describe a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:72
+msgid "generic name, to be specified by the function, typically the path id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:79
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:80
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:81
+msgid "Replaces ``path_result``"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:87
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:92
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/dijkstra-family.pot b/locale/pot/dijkstra-family.pot
new file mode 100644
index 0000000..7fc8988
--- /dev/null
+++ b/locale/pot/dijkstra-family.pot
@@ -0,0 +1,224 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/dijkstra-family.rst:13
+msgid "Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:17
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:18
+msgid ":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:19
+msgid ":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:20
+msgid ":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:21
+msgid ":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:22
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:39
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:42
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:45
+msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:47
+msgid "where :math:`sql = \\{(id_i, source_i, target_i, cost_i, reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:49
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:51
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:52
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:54
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:57
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:58
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:60
+#: ../../build/doc/dijkstra-family.rst:79
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:62
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:64
+#: ../../build/doc/dijkstra-family.rst:84
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:66
+msgid ":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq \\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:76
+msgid "Undirected graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:77
+msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:81
+msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:86
+msgid ":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ \\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, so [...]
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:99
+msgid "The problem"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:100
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:102
+msgid ":math:`start_{vid} \\in V` a starting vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:103
+msgid ":math:`end_{vid} \\in V` an ending vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:104
+msgid ":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:109
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:118
+msgid ":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, agg\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:131
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:121
+msgid ":math:`path\\_seq_i = i`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:122
+msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:123
+msgid ":math:`node_i \\in V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:124
+msgid ":math:`node_1 = start_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:125
+msgid ":math:`node_{| \\pi |} = end_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:126
+msgid ":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:127
+msgid ":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad \\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:128
+msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:129
+msgid ":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 \\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad \\text{when } i \\neq 1 \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:137
+msgid "In other words: The algorithm returns a the shortest path between :math:`start_{vid}` and :math:`end_{vid}` , if it exists, in terms of a sequence of nodes and of edges,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:134
+msgid ":math:`path\\_seq` indicates the relative position in the path of the :math:`node` or :math:`edge`."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:135
+msgid ":math:`cost` is the cost of the edge to be used to go to the next node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:136
+msgid ":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:139
+msgid "If there is no path, the resulting set is empty."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:143
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:146
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:147
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:148
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/drivingDistance-category.pot b/locale/pot/drivingDistance-category.pot
new file mode 100644
index 0000000..4dd6646
--- /dev/null
+++ b/locale/pot/drivingDistance-category.pot
@@ -0,0 +1,58 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/drivingDistance-category.rst:14
+msgid "Driving Distance - Category"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:18
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:19
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:20
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:22
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:23
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:36
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:39
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:40
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:41
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/flow-family.pot b/locale/pot/flow-family.pot
new file mode 100644
index 0000000..6498dc8
--- /dev/null
+++ b/locale/pot/flow-family.pot
@@ -0,0 +1,286 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Flow - Family of functions"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:19
+msgid ":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid ":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:23
+msgid ":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:24
+msgid ":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:45
+msgid "Flow Functions General Information"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:52
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:53
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:54
+msgid "When the maximum flow is 0 then there is no flow and **EMPTY SET** is returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:56
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:58
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:59
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:61
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:63
+msgid "Creates a **super source** and edges to all the source(s), and a **super target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:64
+msgid "The maximum flow through the graph is guaranteed to be the value returned by :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:66
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:67
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:72
+msgid ":ref:`pgr_maxFlow <pgr_maxFlow>` is the maximum Flow and that maximum is guaranteed to be the same on the functions :ref:`pgr_pushRelabel <pgr_pushRelabel>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, but the actual flow through each edge may vary."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:77
+msgid "Problem definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:79
+msgid "A flow network is a directed graph where each edge has a capacity and a flow. The flow through an edge must not exceed the capacity of the edge. Additionally, the incoming and outgoing flow of a node must be equal except the for source which only has outgoing flow, and the destination(sink) which only has incoming flow."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:83
+msgid "Maximum flow algorithms calculate the maximum flow through the graph and the flow of each edge."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:85
+msgid "The maximum flow through the graph is guaranteed to be the same with all implementations, but the actual flow through each edge may vary. Given the following query:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:89
+msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:91
+msgid "where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, reverse\\_capacity_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:94
+msgid "Graph definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:95
+msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:97
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:99
+msgid ":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup target_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:101
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:103
+msgid ":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) \\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = \\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq \\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:111
+msgid "Maximum flow problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:112
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:115
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:116
+msgid ":math:`source\\_vertex \\in V` the source vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:117
+msgid ":math:`sink\\_vertex \\in V` the sink vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:119
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:121
+msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:123
+msgid ":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, flow_i, residual\\_capacity_i)}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:125
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:127
+msgid ":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their residual capacity and flow. The maximum flow through the graph can be obtained by aggregating on the source or sink and summing the flow from/to it. In particular:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:129
+msgid ":math:`id_i = i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:130
+msgid ":math:`edge\\_id = id_i` in edges_sql"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:131
+msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:135
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:137
+msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:142
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/geom_result.pot b/locale/pot/geom_result.pot
new file mode 100644
index 0000000..a21668a
--- /dev/null
+++ b/locale/pot/geom_result.pot
@@ -0,0 +1,79 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/geom_result.rst:13
+msgid "pgr_geomResult[]"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:21
+msgid "``pgr_geomResult[]`` — A set of records to describe a path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:25
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:37
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:38
+#: ../../build/doc/geom_result.rst:39
+msgid "generic name, to be specified by the function"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:40
+msgid "geometry attribute"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:44
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:45
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:46
+msgid "Replaces ``geoms``"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:50
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:52
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:56
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:57
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:58
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/index.pot b/locale/pot/index.pot
new file mode 100644
index 0000000..fcc1651
--- /dev/null
+++ b/locale/pot/index.pot
@@ -0,0 +1,286 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/index.rst:14
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/index.rst:16
+msgid "pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL <http://postgresql.org>`_ geospatial database to provide geospatial routing and other network analysis functionality."
+msgstr ""
+
+#: ../../build/doc/index.rst:18
+msgid "This is the manual for pgRouting |release|."
+msgstr ""
+
+#: ../../build/doc/index.rst:24
+msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel free to use this material any way you like, but we ask that you attribute credit to the pgRouting Project and wherever possible, a link back to http://pgrouting.org. For other licenses used in pgRouting see the :ref:`license` page."
+msgstr ""
+
+#: ../../build/doc/index.rst:27
+msgid "General"
+msgstr ""
+
+#: ../../build/doc/index.rst:37
+msgid ":doc:`sampledata` that is used in the examples of this manual."
+msgstr ""
+
+#: ../../build/doc/index.rst:45
+msgid "Pgrouting Concepts"
+msgstr ""
+
+#: ../../build/doc/index.rst:54
+msgid "Reference"
+msgstr ""
+
+#: ../../build/doc/index.rst:55
+msgid ":ref:`pgr_version` - to get pgRouting's version information."
+msgstr ""
+
+#: ../../build/doc/index.rst:64
+msgid ":ref:`Data Types <data_types>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:67
+msgid ":ref:`type_cost_result` - A set of records to describe a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:68
+msgid ":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:69
+msgid ":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:78
+msgid ":ref:`Topology Functions <topology_functions>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:80
+msgid ":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/index.rst:81
+msgid ":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/index.rst:82
+msgid ":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge table."
+msgstr ""
+
+#: ../../build/doc/index.rst:83
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/index.rst:84
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/index.rst:93
+msgid ":ref:`Routing functions <routing_functions>`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:4
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:6
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:7
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:9
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:11
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:13
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:16
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:22
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:32
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/index.rst:108
+msgid "Available Functions but not official pgRouting functions"
+msgstr ""
+
+#: ../../build/doc/index.rst:110
+msgid ":ref:`Stable`"
+msgstr ""
+
+#: ../../build/doc/index.rst:111
+msgid ":ref:`proposed`"
+msgstr ""
+
+#: ../../build/doc/index.rst:121
+msgid ":ref:`Change Log <change_log>`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:3
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:4
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:5
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:6
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:7
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:8
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:9
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:10
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:11
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:12
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:13
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:14
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:16
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:17
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/index.rst:135
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/index.rst:136
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/index.rst:137
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgRouting-concepts.pot b/locale/pot/pgRouting-concepts.pot
new file mode 100644
index 0000000..c986999
--- /dev/null
+++ b/locale/pot/pgRouting-concepts.pot
@@ -0,0 +1,916 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "pgRouting Concepts"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:0
+msgid "Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "Getting Started"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "This is a simple guide to walk you through the steps of getting started with pgRouting. In this guide we will cover:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:32
+msgid "Create a routing Database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:34
+msgid "The first thing we need to do is create a database and load pgrouting in the database. Typically you will create a database for each project. Once you have a database to work in, your can load your data and build your application in that database. This makes it easy to move your project later if you want to to say a production server."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:40
+msgid "For Postgresql 9.2 and later versions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:51
+msgid "Load Data"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:53
+msgid "How you load your data will depend in what form it comes it. There are various OpenSource tools that can help you, like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:56
+msgid "this is a tool for loading OSM data into postgresql with pgRouting requirements"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:57
+msgid "this is the postgresql shapefile loader"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:58
+msgid "this is a vector data conversion utility"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:59
+msgid "this is a tool for loading OSM data into postgresql"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:61
+msgid "So these tools and probably others will allow you to read vector data so that you may then load that data into your database as a table of some kind. At this point you need to know a little about your data structure and content. One easy way to browse your new data table is with pgAdmin3 or phpPgAdmin."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:69
+msgid "Build a Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:71
+msgid "Next we need to build a topology for our street data. What this means is that for any given edge in your street data the ends of that edge will be connected to a unique node and to other edges that are also connected to that same unique node. Once all the edges are connected to nodes we have a graph that can be used for routing with pgrouting. We provide a tool that will help with this:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:77
+msgid "this step is not needed if data is loaded with `osm2pgrouting`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:83
+msgid ":ref:`pgr_create_topology`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:88
+msgid "Check the Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:90
+msgid "There are lots of possible sources for errors in a graph. The data that you started with may not have been designed with routing in mind. A graph has some very specific requirements. One is that it is *NODED*, this means that except for some very specific use cases, each road segment starts and ends at a node and that in general is does not cross another road segment that it should be connected to."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:97
+msgid "There can be other errors like the direction of a one-way street being entered in the wrong direction. We do not have tools to search for all possible errors but we have some basic tools that might help."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:109
+msgid ":ref:`pgr_analyze_graph`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:110
+msgid ":ref:`pgr_analyze_oneway`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:111
+msgid ":ref:`pgr_node_network`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:117
+msgid "Compute a Path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:119
+msgid "Once you have all the preparation work done above, computing a route is fairly easy. We have a lot of different algorithms that can work with your prepared road network. The general form of a route query is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:127
+msgid "As you can see this is fairly straight forward and you can look and the specific algorithms for the details of the signatures and how to use them. These results have information like edge id and/or the node id along with the cost or geometry for the step in the path from *start* to *end*. Using the ids you can join these result back to your edge table to get more information about each step in the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:134
+msgid ":ref:`pgr_dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:141
+msgid "Inner Queries"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:146
+msgid "There are several kinds of valid inner queries and also the columns returned are depending of the function. Which kind of inner query will depend on the function(s) requirements. To simplify variety of types, ``ANY-INTEGER`` and ``ANY-NUMERICAL`` is used."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:152
+#: ../../build/doc/pgRouting-concepts.rst:182
+#: ../../build/doc/pgRouting-concepts.rst:212
+#: ../../build/doc/pgRouting-concepts.rst:269
+#: ../../build/doc/pgRouting-concepts.rst:300
+#: ../../build/doc/pgRouting-concepts.rst:334
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:154
+#: ../../build/doc/pgRouting-concepts.rst:184
+#: ../../build/doc/pgRouting-concepts.rst:214
+#: ../../build/doc/pgRouting-concepts.rst:271
+#: ../../build/doc/pgRouting-concepts.rst:302
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:155
+#: ../../build/doc/pgRouting-concepts.rst:185
+#: ../../build/doc/pgRouting-concepts.rst:215
+#: ../../build/doc/pgRouting-concepts.rst:272
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:162
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:164
+#: ../../build/doc/pgRouting-concepts.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:247
+#: ../../build/doc/pgRouting-concepts.rst:282
+#: ../../build/doc/pgRouting-concepts.rst:314
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:287
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:290
+#: ../../build/doc/pgRouting-concepts.rst:294
+#: ../../build/doc/pgRouting-concepts.rst:319
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:263
+#: ../../build/doc/pgRouting-concepts.rst:264
+#: ../../build/doc/pgRouting-concepts.rst:265
+#: ../../build/doc/pgRouting-concepts.rst:266
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:174
+#: ../../build/doc/pgRouting-concepts.rst:204
+#: ../../build/doc/pgRouting-concepts.rst:257
+#: ../../build/doc/pgRouting-concepts.rst:292
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:178
+#: ../../build/doc/pgRouting-concepts.rst:208
+#: ../../build/doc/pgRouting-concepts.rst:261
+#: ../../build/doc/pgRouting-concepts.rst:296
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:193
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:224
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:227
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:232
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:234
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "When ``true`` departing from a visited vertex will not try to avoid using the edge used to reach it. In other words, U turn using the edge with same `id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:236
+msgid "When ``false`` when a departing from a visited vertex tries to avoid using the edge used to reach it. In other words, U turn using the edge with same `id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:245
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:280
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:312
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:321
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:322
+msgid "If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "Value in <0,1> that indicates the relative postition from the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:328
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:329
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:330
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:336
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:337
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:345
+msgid "Return columns & values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:350
+msgid "There are several kinds of columns returned are depending of the function."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:355
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:357
+msgid "Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:363
+#: ../../build/doc/pgRouting-concepts.rst:364
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid "Path identifier. Has value **1** for the first of a path. Used when there are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid "Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:367
+#: ../../build/doc/pgRouting-concepts.rst:368
+#: ../../build/doc/pgRouting-concepts.rst:385
+#: ../../build/doc/pgRouting-concepts.rst:386
+#: ../../build/doc/pgRouting-concepts.rst:403
+#: ../../build/doc/pgRouting-concepts.rst:404
+#: ../../build/doc/pgRouting-concepts.rst:405
+#: ../../build/doc/pgRouting-concepts.rst:406
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid "Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:378
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:380
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:397
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:415
+msgid "Advanced Topics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:423
+msgid "Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:427
+#: ../../build/doc/pgRouting-concepts.rst:528
+msgid "Overview"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:428
+msgid "Typically when GIS files are loaded into the data database for use with pgRouting they do not have topology information associated with them. To create a useful topology the data needs to be \"noded\". This means that where two or more roads form an intersection there it needs to be a node at the intersection and all the road segments need to be broken at the intersection, assuming that you can navigate from any of these segments to any other segment via that intersection."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:430
+msgid "You can use the :ref:`graph analysis functions <analytics>` to help you see where you might have topology problems in your data. If you need to node your data, we also have a function :ref:`pgr_nodeNetwork() <pgr_node_network>` that might work for you. This function splits ALL crossing segments and nodes them. There are some cases where this might NOT be the right thing to do."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:432
+msgid "For example, when you have an overpass and underpass intersection, you do not want these noded, but pgr_nodeNetwork does not know that is the case and will node them which is not good because then the router will be able to turn off the overpass onto the underpass like it was a flat 2D intersection. To deal with this problem some data sets use z-levels at these types of intersections and other data might not node these intersection which would be ok."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:434
+msgid "For those cases where topology needs to be added the following functions may be useful. One way to prep the data for pgRouting is to add the following columns to your table and then populate them as appropriate. This example makes a lot of assumption like that you original data tables already has certain columns in it like ``one_way``, ``fcc``, and possibly others and that they contain specific data values. This is only to give you an idea of what you can do with your data."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:455
+msgid "The function :ref:`pgr_createTopology() <pgr_create_topology>` will create the ``vertices_tmp`` table and populate the ``source`` and ``target`` columns. The following example populated the remaining columns. In this example, the ``fcc`` column contains feature class code and the ``CASE`` statements converts it to an average speed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:518
+msgid "Now your database should be ready to use any (most?) of the pgRouting algorithms."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:524
+msgid "Graph Analytics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:529
+msgid "It is common to find problems with graphs that have not been constructed fully noded or in graphs with z-levels at intersection that have been entered incorrectly. An other problem is one way streets that have been entered in the wrong direction. We can not detect errors with respect to \"ground\" truth, but we can look for inconsistencies and some anomalies in a graph and report them for additional inspections."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:531
+msgid "We do not current have any visualization tools for these problems, but I have used mapserver to render the graph and highlight potential problem areas. Someone familiar with graphviz might contribute tools for generating images with that."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:535
+msgid "Analyze a Graph"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:537
+msgid "With :ref:`pgr_analyze_graph` the graph can be checked for errors. For example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices table:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:560
+msgid "In the vertices table \"mytab_vertices_pgr\":"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:562
+msgid "Deadends are identified by ``cnt=1``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:563
+msgid "Potencial gap problems are identified with ``chk=1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:581
+msgid "For isolated road segments, for example, a segment where both ends are deadends. you can find these with the following query:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:590
+msgid "If you want to visualize these on a graphic image, then you can use something like mapserver to render the edges and the vertices and style based on ``cnt`` or if they are isolated, etc. You can also do this with a tool like graphviz, or geoserver or other similar tools."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:594
+msgid "Analyze One Way Streets"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:596
+msgid ":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies any flipped segments. Basically if you count the edges coming into a node and the edges exiting a node the number has to be greater than one."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:598
+msgid "This query will add two columns to the vertices_tmp table ``ein int`` and ``eout int`` and populate it with the appropriate counts. After running this on a graph you can identify nodes with potential problems with the following query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:601
+msgid "The rules are defined as an array of text strings that if match the ``col`` value would be counted as true for the source or target in or out condition."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:605
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:607
+msgid "Lets assume we have a table \"st\" of edges and a column \"one_way\" that might have values like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:609
+msgid "'FT' - oneway from the source to the target node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:610
+msgid "'TF' - oneway from the target to the source node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:611
+msgid "'B' - two way street."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:612
+msgid "'' - empty field, assume twoway."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:613
+msgid "<NULL> - NULL field, use two_way_if_null flag."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:615
+msgid "Then we could form the following query to analyze the oneway streets for errors."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:634
+msgid "Typically these problems are generated by a break in the network, the one way direction set wrong, maybe an error related to z-levels or a network that is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:636
+msgid "The above tools do not detect all network issues, but they will identify some common problems. There are other problems that are hard to detect because they are more global in nature like multiple disconnected networks. Think of an island with a road network that is not connected to the mainland network because the bridge or ferry routes are missing."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:644
+msgid "Performance Tips"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:651
+msgid "For the Routing functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:653
+msgid "To get faster results bound your queries to the area of interest of routing to have, for example, no more than one million rows."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:655
+msgid "Use an inner query SQL that does not include some edges in the routing function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:663
+msgid "Integrating the inner query to the pgRouting function:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:677
+msgid "For the topology functions:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:679
+msgid "When \"you know\" that you are going to remove a set of edges from the edges table, and without those edges you are going to use a routing function you can do the following:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:681
+msgid "Analize the new topology based on the actual topology:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:687
+msgid "Or create a new topology if the change is permanent:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:698
+msgid "How to contribute"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:701
+msgid "Wiki"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:702
+msgid "Edit an existing `pgRouting Wiki <https://github.com/pgRouting/pgrouting/wiki>`_ page."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:703
+msgid "Or create a new Wiki page"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:705
+msgid "Create a page on the `pgRouting Wiki <https://github.com/pgRouting/pgrouting/wiki>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:706
+msgid "Give the title an appropriate name"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:709
+msgid "`Example <https://github.com/pgRouting/pgrouting/wiki/How-to:-Handle-parallel-edges-(KSP)>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:713
+msgid "Adding Functionaity to pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:714
+msgid "Consult the `developer's documentation <http://docs.pgrouting.org/doxy/2.4/index.html>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:719
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:720
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:721
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgRouting-installation.pot b/locale/pot/pgRouting-installation.pot
new file mode 100644
index 0000000..e0449f4
--- /dev/null
+++ b/locale/pot/pgRouting-installation.pot
@@ -0,0 +1,398 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-installation.rst:13
+msgid "Installation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:16
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:17
+msgid ":ref:`install-short`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:18
+msgid ":ref:`install_get_sources`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:19
+msgid ":ref:`install_enable_db`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:20
+msgid ":ref:`install_dependencies`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:21
+msgid ":ref:`install_configuring`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:22
+msgid ":ref:`install_build`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:23
+msgid ":ref:`install_testing`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:25
+msgid "Instructions for downloading and installing binaries for different Operative systems instructions and additional notes and corrections not included in this documentation can be found in `Installation wiki <https://github.com/pgRouting/pgrouting/wiki/Notes-on-Download%2C-Installation-and-building-pgRouting>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:27
+msgid "To use pgRouting postGIS needs to be installed, please read the information about installation in this `Install Guide <http://www.postgis.us/presentations/postgis_install_guide_22.html>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:32
+msgid "Short Version"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:37
+msgid "Extracting the tar ball"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:44
+msgid "To compile assuming you have all the dependencies in your search path:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:54
+msgid "Once pgRouting is installed, it needs to be enabled in each individual database you want to use it in."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:66
+msgid "Get the sources"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:69
+msgid "The pgRouting latest release can be found in https://github.com/pgRouting/pgrouting/releases/latest"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:72
+msgid "wget"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:73
+msgid "To download this release:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:81
+msgid "Goto :ref:`install-short` to the extract and compile instructions."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:84
+msgid "git"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:85
+msgid "To download the repository"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:93
+msgid "Goto :ref:`install-short` to the compile instructions (there is no tar ball)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:100
+msgid "Enabling and upgrading in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:103
+msgid "Enabling the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:104
+msgid "pgRouting is an extension and depends on postGIS. Enabling postGIS before enabling pgRouting in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:113
+msgid "Upgrading the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:114
+msgid "To upgrade pgRouting in the database to version 2.4.0 use the following command:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:122
+msgid "More information can be found in https://www.postgresql.org/docs/current/static/sql-createextension.html"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:128
+msgid "Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:131
+msgid "Compilation Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:132
+msgid "To be able to compile pgRouting, make sure that the following dependencies are met:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:134
+msgid "C and C++0x compilers * g++ version >= 4.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:136
+msgid "Postgresql version >= 9.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:137
+msgid "PostGIS version >= 2.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:138
+msgid "The Boost Graph Library (BGL). Version >= 1.46"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:139
+msgid "CMake >= 2.8.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:140
+msgid "CGAL >= 4.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:144
+msgid "optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:145
+msgid "For user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:147
+msgid "Sphinx >= 1.1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:148
+msgid "Latex"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:150
+msgid "For developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:152
+msgid "Doxygen >= 1.7"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:154
+msgid "For testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:156
+msgid "pgtap"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:157
+msgid "pg_prove"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:161
+msgid "Example: Installing dependencies on linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:162
+msgid "Installing the compilation dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:174
+msgid "Installing the optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:188
+msgid "Configuring"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:190
+msgid "pgRouting uses the `cmake` system to do the configuration."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:192
+msgid "The build directory is different from the source directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:194
+msgid "Create the build directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:201
+msgid "Configurable variables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:205
+msgid "To see the variables that can be configured"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:213
+msgid "Configuring The Documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:214
+msgid "Most of the effort of the documentation has being on the HTML files. Some variables for the documentation:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Variable"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Comment"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "WITH_DOC"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+#: ../../build/doc/pgRouting-installation.rst:223
+#: ../../build/doc/pgRouting-installation.rst:224
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "BOOL=OFF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "Turn on/off building the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "BUILD_HTML"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BOOL=ON"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "If ON, turn on/off building HTML for user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BUILD_DOXY"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "If ON, turn on/off building HTML for developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "BUILD_LATEX"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "If ON, turn on/off building PDF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "BUILD_MAN"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "If ON, turn on/off building MAN pages"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "DOC_USE_BOOTSTRAP"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:228
+msgid "Configuring with documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:234
+msgid "Most of the effort of the documentation has being on the html files."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:240
+msgid "Building"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:242
+msgid "Using ``make`` to build the code and the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:244
+msgid "The following instructions start from *path/to/pgrouting/build*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:253
+msgid "We have tested on several platforms, For installing or reinstalling all the steps are needed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:255
+msgid "The sql signatures are configured and build in the ``cmake`` command."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:258
+msgid "MinGW on Windows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:269
+msgid "Linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:270
+msgid "The following instructions start from *path/to/pgrouting*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:280
+msgid "When the configuration changes:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:286
+msgid "and start the build process as mentioned above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:291
+msgid "Testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:293
+msgid "Currently there is no :code:`make test` and testing is done as follows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:295
+msgid "The following instructions start from *path/to/pgrouting/*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:305
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:308
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:309
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:310
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgRouting-introduction.pot b/locale/pot/pgRouting-introduction.pot
new file mode 100644
index 0000000..9926c65
--- /dev/null
+++ b/locale/pot/pgRouting-introduction.pot
@@ -0,0 +1,189 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-introduction.rst:13
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:15
+msgid "pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL <http://postgresql.org>`_ geospatial database and adds routing and other network analysis functionality. A predecessor of pgRouting – pgDijkstra, written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to pgRouting. The project is now supported and maintained by `Georepublic <http://georepublic.info>`_, `iMaptools <http:// [...]
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:17
+msgid "pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo Live <http://live.osgeo.org/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:23
+msgid "License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:25
+msgid "The following licenses can be found in pgRouting:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:30
+msgid "**License**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:32
+msgid "GNU General Public License, version 2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:33
+msgid "Most features of pgRouting are available under `GNU General Public License, version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:34
+msgid "Boost Software License - Version 1.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:35
+msgid "Some Boost extensions are available under `Boost Software License - Version 1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:36
+msgid "MIT-X License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:37
+msgid "Some code contributed by iMaptools.com is available under MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:38
+msgid "Creative Commons Attribution-Share Alike 3.0 License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:39
+msgid "The pgRouting Manual is licensed under a `Creative Commons Attribution-Share Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:41
+msgid "In general license information should be included in the header of each source file."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:45
+msgid "Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:48
+msgid "This Release Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:51
+#: ../../build/doc/pgRouting-introduction.rst:71
+msgid "Individuals (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:53
+msgid "Maoguang Wang, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:55
+msgid "And all the people that give us a little of their time making comments, finding issues, making pull requests etc."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:58
+#: ../../build/doc/pgRouting-introduction.rst:76
+msgid "Corporate Sponsors (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:60
+#: ../../build/doc/pgRouting-introduction.rst:78
+msgid "These are corporate entities that have contributed developer time, hosting, or direct monetary funding to the pgRouting project:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:62
+msgid "`Georepublic <https://georepublic.info/en/>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:63
+msgid "`Google Summer of Code <https://developers.google.com/open-source/gsoc/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:64
+msgid "`iMaptools <http://imaptools.com>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:65
+msgid "`Paragon Corporation <http://www.paragoncorporation.com/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:68
+msgid "Contributors Past & Present:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:73
+msgid "Akio Takubo, Andrea Nardelli, Anton Patrushev, Ashraf Hossain, Christian Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki, Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, Kai Behncke, Kishore Kumar, Ko Nagase, Manikata Kondeti, Mario Basa, Martin Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Zia, Mukul Priya, Razequl Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Stephen Woodbridge, Sylvain Housseman, Sylvain Pasche, Vi [...]
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:80
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:81
+msgid "CSIS (University of Tokyo)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:82
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:83
+msgid "Google Summer of Code"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:84
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:85
+msgid "Orkney"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:86
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:90
+msgid "More Information"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:92
+msgid "The latest software, documentation and news items are available at the pgRouting web site http://pgrouting.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:93
+msgid "PostgreSQL database server at the PostgreSQL main site http://www.postgresql.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:94
+msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:95
+msgid "Boost C++ source libraries at http://www.boost.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:96
+msgid "Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:97
+msgid "The Migration guide can be found at https://github.com/pgRouting/pgrouting/wiki/Migration-Guide."
+msgstr ""
+
diff --git a/locale/pot/pgr_KSP.pot b/locale/pot/pgr_KSP.pot
new file mode 100644
index 0000000..93b1a28
--- /dev/null
+++ b/locale/pot/pgr_KSP.pot
@@ -0,0 +1,389 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_KSP.rst:13
+msgid "pgr_KSP"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:18
+msgid "``pgr_KSP`` — Returns the \"K\" shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:28
+msgid "Signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:34
+msgid "The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the number of shortest paths desired."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:52
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:64
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:73
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_KSP.rst:110
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:80
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+#: ../../build/doc/pgr_KSP.rst:87
+#: ../../build/doc/pgr_KSP.rst:107
+#: ../../build/doc/pgr_KSP.rst:108
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "**k**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+#: ../../build/doc/pgr_KSP.rst:105
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "The desiered number of paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+#: ../../build/doc/pgr_KSP.rst:90
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid "(optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid "(optional). When ``true`` returns all the paths stored in the process heap. Default is ``false`` which only returns ``k`` paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:93
+msgid "Roughly, if the shortest path has ``N`` edges, the heap will contain about than ``N * k`` paths for small value of ``k`` and ``k > 1``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:98
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:100
+msgid "Returns set of ``(seq, path_seq, path_id, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "Relative position in the path of ``node`` and ``edge``. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid "Path identifier. The ordering of the paths For two paths i, j if i < j then agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "Identifier of the node in the path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110
+msgid "Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:115
+msgid "During the transition to 3.0, because pgr_ksp version 2.0 doesn't have defined a directed flag nor a heap_path flag, when pgr_ksp is used with only one flag version 2.0 signature will be used."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:119
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:122
+msgid "Examples to handle the one flag to choose signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:124
+#: ../../build/doc/pgr_KSP.rst:134
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:132
+msgid "Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:143
+msgid "Examples for queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:145
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:153
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:155
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:164
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:166
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:173
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:175
+msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:176
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:179
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:180
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:181
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_TSP.pot b/locale/pot/pgr_TSP.pot
new file mode 100644
index 0000000..773fda8
--- /dev/null
+++ b/locale/pot/pgr_TSP.pot
@@ -0,0 +1,215 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_TSP.rst:13
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:18
+msgid "``pgr_TSP`` - Returns a route that visits all the nodes exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:21
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:22
+msgid "Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:26
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:28
+msgid "The travelling salesman problem (TSP) or travelling salesperson problem asks the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:30
+msgid "Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:32
+msgid "This implementation uses simulated annealing to return the approximate solution when the input is given in the form of matrix cell contents. The matrix information must be symmetrical."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:58
+msgid "Basic Use"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:67
+msgid "Because the documentation examples are auto generated and tested for non changing results, and the default is to have random execution, the example is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:96
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:103
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:106
+msgid "Description of the Matrix Cell SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "Cost for going from start_vid to end_vid"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:116
+msgid "Can be Used with:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:118
+msgid ":ref:`pgr_dijkstraCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:119
+msgid ":ref:`pgr_withPointsCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:120
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:121
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:123
+msgid "To generate a symmetric matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:125
+msgid "directed := false."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:127
+msgid "If using directed := true, the resulting non symmetric matrix must be converted to symmetric by fixing the non symmetric values according to your application needs."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:145
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:147
+msgid "Using with points of interest."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:149
+msgid "To generate a symmetric matrix:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:151
+msgid "the **side** information of pointsOfInterset is ignored by not including it in the query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:152
+msgid "and **directed := false**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:158
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:163
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:165
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:166
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:167
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:170
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:171
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:172
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_aStar.pot b/locale/pot/pgr_aStar.pot
new file mode 100644
index 0000000..2706222
--- /dev/null
+++ b/locale/pot/pgr_aStar.pot
@@ -0,0 +1,608 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStar.rst:13
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:18
+msgid "``pgr_aStar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:27
+msgid "pgr_astar(one to one) 2.0.0, Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:28
+msgid "pgr_astar(other signatures) 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:33
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:35
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:37
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:38
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:40
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:44
+msgid "When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:46
+msgid "The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:48
+msgid "When the starting vertex and ending vertex are the different and there is no path:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:50
+msgid "The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:52
+msgid "When (x,y) coordinates for the same vertex identifier differ:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:54
+msgid "A random selection of the vertex's (x,y) coordinates is used."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:56
+msgid "Running time: :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:84
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:92
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:99
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:112
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:118
+msgid "Undirected using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:130
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139
+msgid "This signature finds the shortest path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:138
+#: ../../build/doc/pgr_aStar.rst:165
+#: ../../build/doc/pgr_aStar.rst:194
+msgid "on a **directed** graph when ``directed`` flag is missing or is set to ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139
+#: ../../build/doc/pgr_aStar.rst:166
+#: ../../build/doc/pgr_aStar.rst:195
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:141
+msgid "Using this signature, will load once the graph and perform a one to one `pgr_astar` where the starting vertex is fixed, and stop when all ``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:144
+msgid "The result is equivalent to the union of the results of the one to one `pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:145
+msgid "The extra ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:157
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:166
+msgid "This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:168
+msgid "Using this signature, will load once the graph and perform several one to one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:171
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:172
+#: ../../build/doc/pgr_aStar.rst:201
+msgid "The extra ``start_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:186
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:195
+msgid "This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:197
+msgid "Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:200
+msgid "The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:203
+msgid "The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:217
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_aStar.rst:234
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:228
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:231
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:238
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:239
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:243
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:244
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:245
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:246
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:247
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:248
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+#: ../../build/doc/pgr_aStar.rst:251
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid "(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see :ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid "(optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Path identifier. Has value **1** for the first of a path. Used when there are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:260
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:262
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:263
+msgid ":doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:264
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:265
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:268
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:269
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:270
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_aStarCost.pot b/locale/pot/pgr_aStarCost.pot
new file mode 100644
index 0000000..a8700a2
--- /dev/null
+++ b/locale/pot/pgr_aStarCost.pot
@@ -0,0 +1,497 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCost.rst:13
+msgid "pgr_aStarCost -- proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:18
+msgid "``pgr_aStarCost`` — Returns the aggregate cost shortest path using :ref:`astar` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:26
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:53
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:60
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:72
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:78
+msgid "Setting a Heuristic"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:90
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99
+msgid "This signature finds a path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:98
+#: ../../build/doc/pgr_aStarCost.rst:125
+#: ../../build/doc/pgr_aStarCost.rst:154
+msgid "on a **directed** graph when ``directed`` flag is missing or is set to ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99
+#: ../../build/doc/pgr_aStarCost.rst:126
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:101
+msgid "Using this signature, will load once the graph and perform a one to one `pgr_astar` where the starting vertex is fixed, and stop when all ``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:104
+msgid "The result is equivalent to the union of the results of the one to one `pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:105
+msgid "The extra ``end_vid`` column in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:117
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:126
+msgid "This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:128
+msgid "Using this signature, will load once the graph and perform several one to one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:131
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:132
+msgid "The extra ``start_vid`` column in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:146
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid "This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:157
+msgid "Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:160
+msgid "The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:161
+msgid "The extra ``start_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:163
+msgid "The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:177
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_aStarCost.rst:194
+#: ../../build/doc/pgr_aStarCost.rst:195
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:188
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:191
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:198
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:199
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:203
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:204
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:205
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:206
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:207
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:208
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+#: ../../build/doc/pgr_aStarCost.rst:211
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid "(optional). For units manipulation. :math:`factor > 0`. Default ``1``. See :ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid "(optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:224
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:226
+msgid ":ref:`astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:227
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:228
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:229
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:232
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:233
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:234
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_aStarCostMatrix.pot b/locale/pot/pgr_aStarCostMatrix.pot
new file mode 100644
index 0000000..7714393
--- /dev/null
+++ b/locale/pot/pgr_aStarCostMatrix.pot
@@ -0,0 +1,449 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:13
+msgid "pgr_aStarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:18
+msgid "``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :ref:`pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:33
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:37
+msgid "Using aStar algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:40
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:57
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:68
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:88
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:90
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "**vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "Array of vertices_identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:115
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:116
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:120
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:121
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:122
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:123
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:124
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:125
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid "(optional). For units manipulation. :math:`factor > 0`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid "(optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:150
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:152
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:153
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:154
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:155
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:160
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_alphaShape.pot b/locale/pot/pgr_alphaShape.pot
new file mode 100644
index 0000000..6fae172
--- /dev/null
+++ b/locale/pot/pgr_alphaShape.pot
@@ -0,0 +1,158 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_alphaShape.rst:13
+msgid "pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:21
+msgid "``pgr_alphaShape`` — Core function for alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:27
+msgid "Returns a table with (x, y) rows that describe the vertices of an alpha shape."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:37
+msgid "``text`` a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:47
+msgid "(optional) ``float8`` alpha value. If specified alpha value equals 0 (default), then optimal alpha value is used. For more information, see `CGAL - 2D Alpha Shapes <http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:50
+msgid "Returns a vertex record for each row:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:52
+msgid "x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:53
+msgid "y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:55
+msgid "If a result includes multiple outer/inner rings, return those with separator row (x=NULL and y=NULL)."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:58
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:59
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:60
+msgid "Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:61
+msgid "Supported to return multiple outer/inner ring coordinates with separator row (x=NULL and y=NULL) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:64
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:65
+msgid "PgRouting's alpha shape implementation has no way to control the order of the output points, so the actual output might different for the same input data. The first query, has the output ordered, he second query shows an example usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:70
+msgid "Example: the (ordered) results"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:76
+msgid "Example: calculating the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:77
+msgid "Steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:79
+msgid "Calculates the alpha shape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:80
+msgid "the :code:`ORDER BY` clause is not used."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:81
+msgid "constructs a polygon"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:82
+msgid "and computes the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:90
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:93
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:95
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:96
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:99
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:100
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:101
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_analyzeGraph.pot b/locale/pot/pgr_analyzeGraph.pot
new file mode 100644
index 0000000..3f6ef52
--- /dev/null
+++ b/locale/pot/pgr_analyzeGraph.pot
@@ -0,0 +1,308 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeGraph.rst:13
+msgid "pgr_analyzeGraph"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:19
+msgid "``pgr_analyzeGraph`` — Analyzes the network topology."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:25
+#: ../../build/doc/pgr_analyzeGraph.rst:61
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:27
+#: ../../build/doc/pgr_analyzeGraph.rst:63
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:28
+#: ../../build/doc/pgr_analyzeGraph.rst:69
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:43
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:44
+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 <edge_table>_vertices_pgr that stores the vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:46
+msgid "Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:47
+msgid "Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:50
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:51
+msgid "The analyze graph function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:53
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:54
+msgid "``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:55
+msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:56
+msgid "``text`` Primary key column name of the network table. Default value is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:57
+msgid "``text`` Source column name of the network table. Default value is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:58
+msgid "``text`` Target column name of the network table. Default value is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:59
+msgid "``text`` Condition to select a subset or rows. Default value is ``true`` to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:65
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:66
+msgid "Fills completely the ``cnt`` and ``chk`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:67
+msgid "Returns the analysis of the section of the network defined by ``rows_where``"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:71
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:72
+msgid "A required column of the Network table is not found or is not of the appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:73
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:74
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:75
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:79
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:80
+msgid "The vertices table can be created with :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:82
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:84
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:85
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:86
+msgid "``integer`` Indicator that the vertex might have a problem."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:87
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:88
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:89
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:92
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:93
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:96
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:99
+msgid "The simplest way to use pgr_analyzeGraph is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:106
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:111
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+msgid "An error would occur when the arguments are not given in the appropriate order: 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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:130
+#: ../../build/doc/pgr_analyzeGraph.rst:208
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:131
+#: ../../build/doc/pgr_analyzeGraph.rst:209
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:141
+msgid "Parameters defined with a default value can be omitted, as long as the value matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:148
+#: ../../build/doc/pgr_analyzeGraph.rst:223
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:149
+msgid "Selecting rows based on the id. Displays the analysis a the section of the network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:155
+msgid "Selecting the rows where the geometry is near the geometry of row with ``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:161
+msgid "Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:172
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:174
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:183
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:184
+msgid "The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:219
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:224
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:234
+msgid "Selecting the rows WHERE the geometry is near the geometry of row with ``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:246
+msgid "Selecting the rows WHERE the geometry is near the place='myhouse' of the table ``othertable``. (note the use of quote_literal)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:263
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:390
+msgid "The examples use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:394
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:396
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:397
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:398
+msgid ":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:399
+msgid ":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:402
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:403
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:404
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_analyzeOneWay.pot b/locale/pot/pgr_analyzeOneWay.pot
new file mode 100644
index 0000000..d1ea54e
--- /dev/null
+++ b/locale/pot/pgr_analyzeOneWay.pot
@@ -0,0 +1,234 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:13
+msgid "pgr_analyzeOneway"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:19
+msgid "``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:25
+msgid "This function analyzes oneway streets in a graph and identifies any flipped segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:42
+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 no [...]
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:44
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:46
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:49
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:50
+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 <edge_table>_vertices_pgr that stores the vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:52
+msgid "Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:53
+msgid "Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:56
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:57
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:58
+msgid "``text[]`` source node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:59
+msgid "``text[]`` source node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:60
+msgid "``text[]`` target node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:61
+msgid "``text[]`` target node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:62
+msgid "``text`` oneway column name name of the network table. Default value is ``oneway``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:63
+msgid "``text`` Source column name of the network table. Default value is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:64
+msgid "``text`` Target column name of the network table. Default value is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:65
+msgid "``boolean`` flag to treat oneway NULL values as bi-directional. Default value is ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:67
+msgid "It is strongly recommended to use the named notation. See :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>` for examples."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:70
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:72
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:74
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:75
+msgid "Fills completely the ``ein`` and ``eout`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:77
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:79
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:80
+msgid "A required column of the Network table is not found or is not of the appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:81
+msgid "The names of source , target or oneway are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:83
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:86
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:87
+msgid "The vertices table can be created with :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:89
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:91
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:92
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:93
+msgid "``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:94
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex as incoming."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:95
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex as outgoing."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:96
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:100
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:101
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:105
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:129
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:135
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:136
+msgid ":ref:`analytics` for an overview of the analysis of a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:137
+msgid ":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:138
+msgid ":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:143
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_articulationPoints.pot b/locale/pot/pgr_articulationPoints.pot
new file mode 100644
index 0000000..8964b8e
--- /dev/null
+++ b/locale/pot/pgr_articulationPoints.pot
@@ -0,0 +1,311 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_articulationPoints.rst:13
+msgid "pgr_articulationPoints - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:16
+msgid "``pgr_articulationPoints`` - Return the articulation points of an undirected graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:32
+msgid "Those vertices that belong to more than one biconnected component are called articulation points or, equivalently, cut vertices. Articulation points are vertices whose removal would increase the number of connected components in the graph. This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:62
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:93
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:99
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_bdAstar.pot b/locale/pot/pgr_bdAstar.pot
new file mode 100644
index 0000000..85818b2
--- /dev/null
+++ b/locale/pot/pgr_bdAstar.pot
@@ -0,0 +1,646 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstar.rst:13
+msgid "pgr_bdAstar"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:18
+msgid "``pgr_bdAstar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:27
+msgid "pgr_bdAstar(one to one) 2.0.0, Signature change on 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:28
+msgid "pgr_bdAstar(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:54
+msgid "Using these signatures, will load once the graph and perform several one to one `pgr_bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:56
+msgid "The result is the union of the results of the one to one `pgr_bdAStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:57
+msgid "The extra ``start_vid`` and/or ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:61
+msgid "Avaliability"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:62
+msgid "pgr_bdAstar(one to one) 2.0, signature change on 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:63
+msgid "pgr_bdAstar(other signatures) 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid "This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:84
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:85
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:86
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:89
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:102
+msgid "pgr_bdAstar One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111
+msgid "This usage finds the shortest path from the ``start_vid`` to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:109
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:110
+#: ../../build/doc/pgr_bdAstar.rst:137
+#: ../../build/doc/pgr_bdAstar.rst:162
+#: ../../build/doc/pgr_bdAstar.rst:186
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111
+#: ../../build/doc/pgr_bdAstar.rst:138
+#: ../../build/doc/pgr_bdAstar.rst:163
+#: ../../build/doc/pgr_bdAstar.rst:187
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:114
+msgid "In the One to One signature, because of the deprecated signature existence, it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:116
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:127
+msgid "pgr_bdAstar One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:139
+msgid "This usage finds the shortest path from the ``start_vid`` to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:135
+#: ../../build/doc/pgr_bdAstar.rst:160
+#: ../../build/doc/pgr_bdAstar.rst:184
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:136
+#: ../../build/doc/pgr_bdAstar.rst:161
+#: ../../build/doc/pgr_bdAstar.rst:185
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:141
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:152
+msgid "pgr_bdAstar Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:163
+msgid "This usage finds the shortest path from each ``start_vid`` in ``start_vids`` to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:165
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:176
+msgid "pgr_bdAstar Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:187
+msgid "This usage finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:189
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:196
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+#: ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see :ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "(optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Path identifier. Has value **1** for the first of a path. Used when there are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:213
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:215
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:216
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:217
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:218
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:221
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:222
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:223
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_bdAstarCost.pot b/locale/pot/pgr_bdAstarCost.pot
new file mode 100644
index 0000000..4a7abed
--- /dev/null
+++ b/locale/pot/pgr_bdAstarCost.pot
@@ -0,0 +1,574 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCost.rst:13
+msgid "pgr_bdAstarCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:18
+msgid "``pgr_bdAstarCost`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:26
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:46
+msgid "Using these signatures, will load once the graph and perform several one to one `pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:48
+msgid "The result is the union of the results of the one to one `pgr_bdAstarCost`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:49
+msgid "The extra ``start_vid`` and/or ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:56
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:64
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid "This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:72
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:73
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:74
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:77
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:90
+msgid "pgr_bdAstarCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:128
+msgid "This usage finds the shortest path from the ``start_vid`` to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:97
+#: ../../build/doc/pgr_bdAstarCost.rst:124
+#: ../../build/doc/pgr_bdAstarCost.rst:149
+#: ../../build/doc/pgr_bdAstarCost.rst:173
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:98
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:99
+#: ../../build/doc/pgr_bdAstarCost.rst:126
+#: ../../build/doc/pgr_bdAstarCost.rst:151
+#: ../../build/doc/pgr_bdAstarCost.rst:175
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:127
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:103
+msgid "In the One to One signature, because of the deprecated signature existence, it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:105
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:116
+msgid "pgr_bdAstarCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:125
+#: ../../build/doc/pgr_bdAstarCost.rst:150
+#: ../../build/doc/pgr_bdAstarCost.rst:174
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:130
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:141
+msgid "pgr_bdAstarCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+msgid "This usage finds the shortest path from each ``start_vid`` in ``start_vids`` to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:154
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:165
+msgid "pgr_bdAstarCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid "This usage finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:178
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:185
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+#: ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see :ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "(optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:204
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:205
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:206
+msgid "`Migration Guide <https://github.com/cvvergara/pgrouting/wiki/Migration-Guide#pgr_bdastar>`_"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:207
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:208
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:211
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:212
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:213
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_bdAstarCostMatrix.pot b/locale/pot/pgr_bdAstarCostMatrix.pot
new file mode 100644
index 0000000..492d6f8
--- /dev/null
+++ b/locale/pot/pgr_bdAstarCostMatrix.pot
@@ -0,0 +1,526 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:13
+msgid "pgr_bdAstarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:18
+msgid "``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using :ref:`pgr_bdAstar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:68
+msgid "This usage calculates the cost from the each ``start_vid`` in ``start_vids`` to each ``start_vid`` in ``start_vids``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:64
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:65
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:66
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:67
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:70
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:82
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:95
+msgid "This usage calculates the cost from the each ``start_vid`` in ``start_vids`` to each ``start_vid`` in ``start_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:91
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:92
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:93
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:94
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:97
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:99
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:107
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+#: ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see :ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "(optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:135
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_bdDijkstra.pot b/locale/pot/pgr_bdDijkstra.pot
new file mode 100644
index 0000000..3163d66
--- /dev/null
+++ b/locale/pot/pgr_bdDijkstra.pot
@@ -0,0 +1,504 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstra.rst:13
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:15
+msgid "``pgr_bdDijkstra`` — Returns the shortest path(s) using Bidirectional Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:23
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:24
+msgid "pgr_bdDijkstra(one to one) 2.0.0, Signature changed 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:25
+msgid "pgr_bdDijkstra(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:60
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:67
+msgid "The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:80
+msgid "pgr_bdDijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:87
+msgid "This signature finds the shortest path from one ``start_vid`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:89
+#: ../../build/doc/pgr_bdDijkstra.rst:112
+#: ../../build/doc/pgr_bdDijkstra.rst:141
+#: ../../build/doc/pgr_bdDijkstra.rst:170
+msgid "on a **directed** graph when ``directed`` flag is missing or is set to ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:90
+#: ../../build/doc/pgr_bdDijkstra.rst:113
+#: ../../build/doc/pgr_bdDijkstra.rst:142
+#: ../../build/doc/pgr_bdDijkstra.rst:171
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:103
+msgid "pgr_bdDijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:110
+msgid "This signature finds the shortest path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:115
+msgid "Using this signature, will load once the graph and perform a one to one `pgr_dijkstra` where the starting vertex is fixed, and stop when all ``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:118
+msgid "The result is equivalent to the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:119
+msgid "The extra ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:132
+msgid "pgr_bdDijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:139
+msgid "This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:144
+msgid "Using this signature, will load once the graph and perform several one to one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:147
+#: ../../build/doc/pgr_bdDijkstra.rst:176
+msgid "The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:148
+#: ../../build/doc/pgr_bdDijkstra.rst:177
+msgid "The extra ``start_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:161
+msgid "pgr_bdDijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:168
+msgid "This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:173
+msgid "Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:179
+msgid "The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:190
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Path identifier. Has value **1** for the first of a path. Used when there are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:208
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:210
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:211
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:212
+msgid "http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:213
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:218
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_bdDijkstraCost.pot b/locale/pot/pgr_bdDijkstraCost.pot
new file mode 100644
index 0000000..1fab30a
--- /dev/null
+++ b/locale/pot/pgr_bdDijkstraCost.pot
@@ -0,0 +1,442 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:13
+msgid "pgr_bdDijkstraCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:15
+msgid "``pgr_bdDijkstraCost`` — Returns the shortest path(s)'s cost using Bidirectional Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:23
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:30
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:52
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:59
+msgid "The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:72
+msgid "pgr_bdDijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+msgid "This signature finds the shortest path from one ``start_vid`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:80
+#: ../../build/doc/pgr_bdDijkstraCost.rst:102
+#: ../../build/doc/pgr_bdDijkstraCost.rst:130
+#: ../../build/doc/pgr_bdDijkstraCost.rst:158
+msgid "on a **directed** graph when ``directed`` flag is missing or is set to ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:94
+msgid "pgr_bdDijkstraCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+msgid "This signature finds the shortest path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:105
+msgid "Using this signature, will load once the graph and perform a one to one `pgr_dijkstra` where the starting vertex is fixed, and stop when all ``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:108
+msgid "The result is equivalent to the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:109
+msgid "The extra ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:122
+msgid "pgr_bdDijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+msgid "This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:133
+msgid "Using this signature, will load once the graph and perform several one to one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:136
+#: ../../build/doc/pgr_bdDijkstraCost.rst:164
+msgid "The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:137
+#: ../../build/doc/pgr_bdDijkstraCost.rst:165
+msgid "The extra ``start_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:150
+msgid "pgr_bdDijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid "This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:161
+msgid "Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:167
+msgid "The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:178
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:195
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:197
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:198
+msgid ":ref:`pgr_bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:199
+msgid "http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:200
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:203
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:204
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:205
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_bdDijkstraCostMatrix.pot b/locale/pot/pgr_bdDijkstraCostMatrix.pot
new file mode 100644
index 0000000..2c915f3
--- /dev/null
+++ b/locale/pot/pgr_bdDijkstraCostMatrix.pot
@@ -0,0 +1,375 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:13
+msgid "pgr_bdDijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:18
+msgid "``pgr_bdDijkstraCostMatrix`` - Calculates the a cost matrix using :ref:`pgr_bdDijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:66
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:86
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:88
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "(optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:122
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:124
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:132
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:134
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:135
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:136
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:137
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:142
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_biconnectedComponents.pot b/locale/pot/pgr_biconnectedComponents.pot
new file mode 100644
index 0000000..d4979bc
--- /dev/null
+++ b/locale/pot/pgr_biconnectedComponents.pot
@@ -0,0 +1,338 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:13
+msgid "pgr_biconnectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:15
+msgid "``pgr_biconnectedComponents`` — Return the biconnected components of an undirected graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:31
+msgid "The biconnected components of an undirected graph are the maximal subsets of vertices such that the removal of a vertex from particular component will not disconnect the component. Unlike connected components, vertices may belong to multiple biconnected components. Vertices can be present in multiple biconnected components, but each edge can only be contained in a single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:36
+msgid "This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:43
+msgid "Components are described by edges"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:45
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:47
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:48
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:50
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:65
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:78
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for biconnected components, connected components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Component identifier. It is equal to the minimum edge identifier in the component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:94
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:96
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:97
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:100
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:101
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:102
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_boykovKolmogorov.pot b/locale/pot/pgr_boykovKolmogorov.pot
new file mode 100644
index 0000000..abff37c
--- /dev/null
+++ b/locale/pot/pgr_boykovKolmogorov.pot
@@ -0,0 +1,422 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:14
+msgid "pgr_boykovKolmogorov - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:20
+msgid "``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Boykov Kolmogorov algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowBoykovKolmogorov"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid "When the maximum flow is 0 then there is no flow and **EMPTY SET** is returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid "Creates a **super source** and edges to all the source(s), and a **super target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid "The maximum flow through the graph is guaranteed to be the value returned by :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:42
+msgid "Running time: Polynomial"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:61
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:63
+msgid "Calculates the flow on the graph edges that maximizes the flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:84
+msgid "Calculates the flow on the graph edges that maximizes the flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:103
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:105
+msgid "Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:124
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:126
+msgid "Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:141
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:159
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:161
+msgid ":ref:`maxFlow`, :ref:`pgr_pushRelabel <pgr_pushRelabel>`, :ref:`pgr_EdmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:162
+msgid "http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:167
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_bridges.pot b/locale/pot/pgr_bridges.pot
new file mode 100644
index 0000000..6cd0fa2
--- /dev/null
+++ b/locale/pot/pgr_bridges.pot
@@ -0,0 +1,308 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bridges.rst:13
+msgid "pgr_bridges - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:16
+msgid "``pgr_bridges`` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:31
+msgid "A bridge is an edge of an undirected graph whose deletion increases its number of connected components. This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:40
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:42
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:44
+msgid "Running time: :math:`O(E * (V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:47
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:59
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:72
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:88
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:90
+msgid "http://en.wikipedia.org/wiki/Bridge_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:91
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:94
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:95
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:96
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_connectedComponents.pot b/locale/pot/pgr_connectedComponents.pot
new file mode 100644
index 0000000..fa72c21
--- /dev/null
+++ b/locale/pot/pgr_connectedComponents.pot
@@ -0,0 +1,337 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_connectedComponents.rst:13
+msgid "pgr_connectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:16
+msgid "``pgr_connectedComponents`` — Return the connected components of an undirected graph using a DFS-based approach. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:32
+msgid "A connected component of an undirected graph is a set of vertices that are all reachable from each other. This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:39
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:41
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:45
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:46
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:48
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:63
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:76
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for connected components and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Component identifier. It is equal to the minimum node identifier in the component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:92
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:94
+msgid "http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:95
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:98
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:99
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:100
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_contractGraph.pot b/locale/pot/pgr_contractGraph.pot
new file mode 100644
index 0000000..fc56a16
--- /dev/null
+++ b/locale/pot/pgr_contractGraph.pot
@@ -0,0 +1,472 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_contractGraph.rst:13
+msgid "pgr_contractGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:15
+msgid "``pgr_contractGraph`` — Performs graph contraction and returns the contracted vertices and edges."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:23
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:32
+msgid "Contraction reduces the size of the graph by removing some of the vertices and edges and, for example, might add edges that represent a sequence of original edges decreasing the total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:52
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:38
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:40
+msgid "There are two types of contraction methods used namely,"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:42
+msgid "Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:43
+msgid "Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:45
+msgid "The values returned include the added edges and contracted vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:47
+msgid "The returned values are ordered as follows:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:49
+msgid "column `id` ascending when type = `v`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:50
+msgid "column `id` descending when type = `e`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:55
+msgid "Signature Summary:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:57
+msgid "The pgr_contractGraph function has the following signatures:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:74
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:80
+msgid "Making a dead end contraction and a linear contraction."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:87
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:93
+msgid "Making a dead end contraction and a linear contraction and vertex 2 is forbidden from contraction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_contractGraph.rst:136
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+msgid "**contraction_order**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "Ordered contraction operations."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "1 = Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:114
+msgid "2 = Linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "**forbidden_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "(optional). Identifiers of vertices forbidden from contraction. Default is an empty array."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid "**max_cycles**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid "(optional). Number of times the contraction operations on `contraction_order` will be performed. Default is 1."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:118
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:123
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:125
+msgid "RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:127
+msgid "The function returns a single row. The columns of the row are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "**type**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "Type of the `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "'v' when `id` is an identifier of a vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:135
+msgid "'e' when `id` is an identifier of an edge."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:136
+#: ../../build/doc/pgr_contractGraph.rst:146
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:143
+msgid "Identifier of:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:137
+msgid "the vertex when `type = 'v'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:139
+msgid "The vertex belongs to the edge_table passed as a parameter."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:140
+msgid "the edge when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:142
+msgid "The `id` is a decreasing sequence starting from **-1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:144
+msgid "Representing a pseudo `id` as is not incorporated into the edge_table."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "Array of contracted vertex identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid "Identifier of the source vertex of the current edge `id`. Valid values when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "Identifier of the target vertex of the current edge `id`. Valid values when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "Weight of the edge (`source`, `target`). Valid values when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:152
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:154
+msgid "Only dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:160
+msgid "Only linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:168
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:169
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:170
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_createTopology.pot b/locale/pot/pgr_createTopology.pot
new file mode 100644
index 0000000..f067a1a
--- /dev/null
+++ b/locale/pot/pgr_createTopology.pot
@@ -0,0 +1,338 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createTopology.rst:13
+msgid "pgr_createTopology"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:18
+msgid "``pgr_createTopology`` — Builds a network topology based on the geometry information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:24
+#: ../../build/doc/pgr_createTopology.rst:72
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:26
+msgid "``OK`` after the network topology has been built and the vertices table created."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:27
+msgid "``FAIL`` when the network topology was not built due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:42
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:45
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:46
+msgid "The topology creation function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:48
+msgid "``text`` Network table name. (may contain the schema name AS well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:49
+msgid "``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:50
+msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:51
+msgid "``text`` Primary key column name of the network table. Default value is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:52
+msgid "``text`` Source column name of the network table. Default value is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:53
+msgid "``text`` Target column name of the network table. Default value is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:54
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:56
+msgid "``boolean`` Clean any previous topology. Default value is ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:60
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:62
+msgid "The ``source`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:63
+msgid "The ``target`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:65
+msgid "An index will be created, if it doesn't exists, to speed up the process to the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:67
+msgid "``id``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:68
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:69
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:70
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:74
+msgid "``OK`` after the network topology has been built."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:76
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:77
+msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:78
+msgid "Fills the source and target columns of the edge table referencing the ``id`` of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:81
+msgid "``FAIL`` when the network topology was not built due to an error:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:83
+msgid "A required column of the Network table is not found or is not of the appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:84
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:85
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:86
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:90
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:91
+msgid "The vertices table is a requirement of the :ref:`pgr_analyzeGraph <pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:93
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:95
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:96
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:97
+msgid "``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:98
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:99
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:100
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:103
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:104
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:107
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:110
+msgid "The simplest way to use pgr_createTopology is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:118
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:119
+msgid "We get the same result AS the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid "An error would occur when the arguments are not given in the appropriate order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid "In this example, the column ``id`` of the table ``ege_table`` is passed to the function as the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid "and the geometry column ``the_geom`` is passed to the function as the id column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:136
+#: ../../build/doc/pgr_createTopology.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:137
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:153
+#: ../../build/doc/pgr_createTopology.rst:219
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:154
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:160
+msgid "Selecting the rows where the geometry is near the geometry of row with ``id = 5``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:166
+#: ../../build/doc/pgr_createTopology.rst:227
+msgid "Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:176
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:178
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:185
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:186
+msgid "The arguments need to be given in the order described in the parameters."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:188
+msgid "Note that this example uses clean flag. So it recreates the whole vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid "An error would occur when the arguments are not given in the appropiriate order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid "In this example, the column ``gid`` of the table ``mytable`` is passed to the function AS the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid "and the geometry column ``mygeom`` is passed to the function AS the id column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:206
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:220
+msgid "Based on id:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:235
+msgid "Examples with full output"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:237
+msgid "This example start a clean topology, with 5 edges, and then its incremented to the rest of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:243
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:247
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:249
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:250
+msgid ":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:251
+msgid ":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:254
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:255
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:256
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_createVerticesTable.pot b/locale/pot/pgr_createVerticesTable.pot
new file mode 100644
index 0000000..bdcd7fd
--- /dev/null
+++ b/locale/pot/pgr_createVerticesTable.pot
@@ -0,0 +1,293 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createVerticesTable.rst:13
+msgid "pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:18
+msgid "``pgr_createVerticesTable`` — Reconstructs the vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:24
+#: ../../build/doc/pgr_createVerticesTable.rst:62
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:26
+#: ../../build/doc/pgr_createVerticesTable.rst:64
+msgid "``OK`` after the vertices table has been reconstructed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:27
+#: ../../build/doc/pgr_createVerticesTable.rst:69
+msgid "``FAIL`` when the vertices table was not reconstructed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:43
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:44
+msgid "The reconstruction of the vertices table function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:46
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:47
+msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:48
+msgid "``text`` Source column name of the network table. Default value is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:49
+msgid "``text`` Target column name of the network table. Default value is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:50
+msgid "``text`` Condition to SELECT a subset or rows. Default value is ``true`` to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:54
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:56
+msgid "An index will be created, if it doesn't exists, to speed up the process to the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:58
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:59
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:60
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:66
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:67
+msgid "Fills ``id`` and ``the_geom`` columns of the vertices table based on the source and target columns of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:71
+msgid "A required column of the Network table is not found or is not of the appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:72
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:73
+msgid "The names of source, target are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:74
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:77
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:78
+msgid "The vertices table is a requierment of the :ref:`pgr_analyzeGraph <pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:80
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:82
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:83
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:84
+msgid "``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:85
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:86
+msgid "``integer`` Number of vertices in the edge_table that reference this vertex as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:87
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:90
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:91
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:94
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:97
+msgid "The simplest way to use pgr_createVerticesTable is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:104
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:109
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:111
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:128
+#: ../../build/doc/pgr_createVerticesTable.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:129
+#: ../../build/doc/pgr_createVerticesTable.rst:206
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:139
+msgid "Parameters defined with a default value can be omitted, as long as the value matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:146
+#: ../../build/doc/pgr_createVerticesTable.rst:220
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:147
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:153
+msgid "Selecting the rows where the geometry is near the geometry of row with ``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:159
+#: ../../build/doc/pgr_createVerticesTable.rst:243
+msgid "Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:170
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:172
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:180
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:181
+msgid "The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:0
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:216
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:221
+msgid "Selecting rows based on the gid."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:231
+msgid "Selecting the rows where the geometry is near the geometry of row with ``gid`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:282
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:286
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:288
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:289
+msgid ":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:290
+msgid ":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:291
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:294
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:295
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:296
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_dijkstra.pot b/locale/pot/pgr_dijkstra.pot
new file mode 100644
index 0000000..8660ec1
--- /dev/null
+++ b/locale/pot/pgr_dijkstra.pot
@@ -0,0 +1,565 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "``pgr_dijkstra`` — Returns the shortest path(s) using Dijkstra algorithm. In particular, the Dijkstra algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:24
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:25
+msgid "pgr_dijkstra(one to one) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:26
+msgid "pgr_dijkstra(other signatures) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:31
+msgid "Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra in 1956. It is a graph search algorithm that solves the shortest path problem for a graph with non-negative edge path costs, producing a shortest path from a starting vertex (``start_vid``) to an ending vertex (``end_vid``). This implementation can be used with a directed graph and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:60
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:44
+msgid "When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:46
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:48
+msgid "When the starting vertex and ending vertex are the different and there is no path:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:50
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:52
+msgid "For optimization purposes, any duplicated value in the `start_vids` or `end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:54
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:56
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:57
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:59
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:63
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:78
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:84
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:91
+msgid "The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:104
+msgid "pgr_dijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114
+msgid "This signature finds the shortest path from one ``start_vid`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:113
+#: ../../build/doc/pgr_dijkstra.rst:136
+#: ../../build/doc/pgr_dijkstra.rst:167
+#: ../../build/doc/pgr_dijkstra.rst:197
+msgid "on a **directed** graph when ``directed`` flag is missing or is set to ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114
+#: ../../build/doc/pgr_dijkstra.rst:137
+#: ../../build/doc/pgr_dijkstra.rst:168
+#: ../../build/doc/pgr_dijkstra.rst:198
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:127
+msgid "pgr_dijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:137
+msgid "This signature finds the shortest path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:139
+msgid "Using this signature, will load once the graph and perform a one to one `pgr_dijkstra` where the starting vertex is fixed, and stop when all ``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:142
+msgid "The result is equivalent to the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:143
+msgid "The extra ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:158
+msgid "pgr_dijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:168
+msgid "This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:170
+msgid "Using this signature, will load once the graph and perform several one to one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:173
+#: ../../build/doc/pgr_dijkstra.rst:203
+msgid "The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:174
+#: ../../build/doc/pgr_dijkstra.rst:204
+msgid "The extra ``start_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:188
+msgid "pgr_dijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:198
+msgid "This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:200
+msgid "Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:206
+msgid "The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:215
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:225
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+#: ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:236
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Path identifier. Has value **1** for the first of a path. Used when there are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:248
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:250
+msgid "The examples of this section are based on the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:252
+msgid "The examples include combinations from starting vertices 2 and 11 to ending vertices 3 and 5 in a directed and undirected graph with and with out reverse_cost."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:256
+msgid "Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:258
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:267
+msgid "Examples for queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:269
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:277
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:279
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:287
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:289
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:297
+msgid "Equvalences between signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:299
+msgid "For queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:301
+#: ../../build/doc/pgr_dijkstra.rst:313
+msgid "The examples in this section use the following:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:303
+msgid ":ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:311
+msgid "For queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:315
+msgid ":ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:324
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:326
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:327
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:330
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:331
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:332
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_dijkstraCost.pot b/locale/pot/pgr_dijkstraCost.pot
new file mode 100644
index 0000000..28938ad
--- /dev/null
+++ b/locale/pot/pgr_dijkstraCost.pot
@@ -0,0 +1,448 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCost.rst:13
+msgid "pgr_dijkstraCost"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:19
+msgid "``pgr_dijkstraCost``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:21
+msgid "Using Dijkstra algorithm implemented by Boost.Graph, and extract only the aggregate cost of the shortest path(s) found, for the combination of vertices given."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:27
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:30
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:31
+msgid "pgr_dijkstraCost(all signatures) 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:33
+msgid "The ``pgr_dijkstraCost`` algorithm, is a good choice to calculate the sum of the costs of the shortest path for a subset of pairs of nodes of the graph. We make use of the Boost's implementation of dijkstra which runs in :math:`O(V \\log V + E)` time."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:42
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:43
+msgid "Returns the sum of the costs of the shortest path for pair combination of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:44
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:45
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:47
+msgid "The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:49
+msgid "When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:51
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:53
+msgid "When the starting vertex and ending vertex are the different and there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:55
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:57
+msgid "Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:60
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:62
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:64
+msgid "Any duplicated value in the `start_vids` or `end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:66
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:68
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:69
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:74
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:89
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:95
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:97
+msgid "The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:106
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:117
+msgid "pgr_dijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+msgid "This signature performs a Dijkstra from one ``start_vid`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:121
+#: ../../build/doc/pgr_dijkstraCost.rst:150
+#: ../../build/doc/pgr_dijkstraCost.rst:176
+#: ../../build/doc/pgr_dijkstraCost.rst:201
+msgid "on a **directed** graph when ``directed`` flag is missing or is set to ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+#: ../../build/doc/pgr_dijkstraCost.rst:151
+#: ../../build/doc/pgr_dijkstraCost.rst:177
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:141
+msgid "pgr_dijkstraCost One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:152
+msgid "This signature performs a Dijkstra from one ``start_vid`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:167
+msgid "pgr_dijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:178
+msgid "This signature performs a Dijkstra from each ``start_vid`` in ``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:192
+msgid "pgr_dijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid "This signature performs a Dijkstra from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:213
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:229
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:231
+msgid "Demonstration of repeated values are ignored, and result is sorted."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:237
+msgid "Making `start_vids` the same as `end_vids`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:246
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:248
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:249
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:252
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:253
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:254
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_dijkstraCostMatrix.pot b/locale/pot/pgr_dijkstraCostMatrix.pot
new file mode 100644
index 0000000..29054cb
--- /dev/null
+++ b/locale/pot/pgr_dijkstraCostMatrix.pot
@@ -0,0 +1,351 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:13
+msgid "pgr_dijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:18
+msgid "``pgr_dijkstraCostMatrix`` - Calculates the a cost matrix using pgr_dijktras."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:32
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:36
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:56
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:67
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:79
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:87
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:89
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:97
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "(optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:135
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_dijkstraVia.pot b/locale/pot/pgr_dijkstraVia.pot
new file mode 100644
index 0000000..73a1d68
--- /dev/null
+++ b/locale/pot/pgr_dijkstraVia.pot
@@ -0,0 +1,451 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraVia.rst:13
+msgid "pgr_dijkstraVia - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:19
+msgid "``pgr_dijkstraVia`` — Using dijkstra algorithm, it finds the route that goes through a list of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:30
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:34
+msgid "Given a list of vertices and a graph, this function is equivalent to finding the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all :math:`i < size\\_of(vertex_via)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:37
+msgid "The paths represents the sections of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:39
+msgid "This is a proposed function"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:42
+msgid "Signatrue Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:59
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:67
+msgid "Find the route that visits the vertices 1 3 9 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:77
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:86
+msgid "Find the route that visits the vertices 1 3 9 in that order on an undirected graph, avoiding U-turns when possible"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:94
+msgid "Description of the Signature"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+#: ../../build/doc/pgr_dijkstraVia.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "When ``true`` departing from a visited vertex will not try to avoid using the edge used to reach it. In other words, U turn using the edge with same `id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When ``false`` when a departing from a visited vertex tries to avoid using the edge used to reach it. In other words, U turn using the edge with same `id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "Array of vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "(optional) Default is true (is directed). When set to false the graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid "(optional) ignores if a subsection of the route is missing and returns everything it found Default is true (is directed). When set to false the graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:119
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:121
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "Sequential value starting from 1."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "**path_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "Identifier of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "Sequential value starting from 1 for the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "Identifier of the node in the path from start_vid to end_vid."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "Identifier of the edge used to go from node to the next node in the path sequence. -1 for the last node of the path. -2 for the last node of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid "Cost to traverse from ``node`` using ``edge`` to the next node in the route sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "Total cost from ``start_vid`` to ``end_vid`` of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "**route_agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "Total cost from ``start_vid`` of ``path_pid = 1`` to ``end_vid`` of the current ``path_pid`` ."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:142
+msgid "Find the route that visits the vertices 1 5 3 9 4 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:148
+msgid "What's the aggregate cost of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:154
+msgid "What's the route's aggregate cost of the route at the end of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:160
+msgid "How are the nodes visited in the route?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:166
+msgid "What are the aggregate costs of the route when the visited vertices are reached?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:172
+msgid "show the route's seq and aggregate cost and a status of \"passes in front\" or \"visits\" node 9"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:179
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:181
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:182
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:185
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:186
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:187
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_drivingDistance.pot b/locale/pot/pgr_drivingDistance.pot
new file mode 100644
index 0000000..e7effde
--- /dev/null
+++ b/locale/pot/pgr_drivingDistance.pot
@@ -0,0 +1,376 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_drivingDistance.rst:13
+msgid "pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:19
+msgid "``pgr_drivingDistance`` - Returns the driving distance from a start node."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:28
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:29
+msgid "pgr_drivingDistance(single vertex) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:30
+msgid "pgr_drivingDistance(multiple vertices) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:35
+msgid "Using the Dijkstra algorithm, extracts all the nodes that have costs less than or equal to the value ``distance``. The edges extracted will conform to the corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:57
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:70
+msgid "Driving Distance From A Single Starting Vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:82
+msgid "Driving Distance From Multiple Starting Vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:90
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:98
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:123
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "Array of identifiers of the starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+#: ../../build/doc/pgr_drivingDistance.rst:125
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "Upper limit for the inclusion of the node in the result."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid "(optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "(optional). When ``true`` the node will only appear in the closest ``start_vid`` list. Default is ``false`` which resembles several calls using the single starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:114
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:116
+msgid "Returns set of ``(seq [, start_v], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid "Identifier of the node in the path within the limits from ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "Identifier of the edge used to arrive to ``node``. ``0`` when the ``node`` is the ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:132
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:135
+msgid "Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:137
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:144
+msgid "Examples for queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:146
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:154
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:156
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:165
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:167
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:177
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:178
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:179
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:184
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_edgeDisjointPaths.pot b/locale/pot/pgr_edgeDisjointPaths.pot
new file mode 100644
index 0000000..8d271db
--- /dev/null
+++ b/locale/pot/pgr_edgeDisjointPaths.pot
@@ -0,0 +1,508 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:14
+msgid "pgr_edgeDisjointPaths - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:19
+msgid "``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:28
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:36
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:38
+msgid "Calculates the edge disjoint paths between two groups of vertices. Utilizes underlying maximum flow algorithms to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:42
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "The main characterics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:45
+msgid "Calculates the edge disjoint paths between any two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:46
+msgid "Returns EMPTY SET when source and destination are the same, or cannot be reached."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:47
+msgid "The graph can be directed or undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:48
+msgid "One to many, many to one, many to many versions are also supported."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "Uses :ref:`pgr_boykovKolmogorov` to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:52
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:67
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:73
+msgid "Minimal use"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:81
+msgid "The minimal use is for a **directed** graph from one ``start_vid`` to one ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:93
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:98
+msgid "This signature finds the set of dijoint paths from one ``start_vid`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:96
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:120
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:149
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:175
+msgid "on a **directed** graph when ``directed`` flag is missing or is set to ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:97
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:121
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:150
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:176
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:117
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:126
+msgid "This signature finds the sset of disjoint paths from the ``start_vid`` to each one of the ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:122
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:151
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:177
+msgid "The result is equivalent to the union of the results of the one to one `pgr_edgeDisjointPaths`."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:123
+msgid "The extra ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:146
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid "This signature finds the set of disjoint paths from each one of the ``start_vid`` in ``start_vids`` to the ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid "The extra ``start_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid "This signature finds the set of disjoint paths from each one of the ``start_vid`` in ``start_vids`` to each one of the ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid "The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:195
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Path identifier. Has value **1** for the first of a path. Used when there are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:212
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:214
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:217
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:218
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:219
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_edmondsKarp.pot b/locale/pot/pgr_edmondsKarp.pot
new file mode 100644
index 0000000..dc05961
--- /dev/null
+++ b/locale/pot/pgr_edmondsKarp.pot
@@ -0,0 +1,426 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edmondsKarp.rst:14
+msgid "pgr_edmondsKarp - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:20
+msgid "``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowEdmondsKarp"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid "When the maximum flow is 0 then there is no flow and **EMPTY SET** is returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid "Creates a **super source** and edges to all the source(s), and a **super target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid "The maximum flow through the graph is guaranteed to be the value returned by :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:42
+msgid "Running time: :math:`O( V * E ^ 2)`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:64
+msgid "Calculates the flow on the graph edges that maximizes the flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:83
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:85
+msgid "Calculates the flow on the graph edges that maximizes the flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:104
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:106
+msgid "Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:125
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:127
+msgid "Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:142
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:160
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:162
+msgid ":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, :ref:`pgr_PushRelabel <pgr_pushRelabel>`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:163
+msgid "http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:164
+msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:167
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:168
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:169
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_eucledianTSP.pot b/locale/pot/pgr_eucledianTSP.pot
new file mode 100644
index 0000000..a4784c4
--- /dev/null
+++ b/locale/pot/pgr_eucledianTSP.pot
@@ -0,0 +1,179 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_eucledianTSP.rst:13
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:18
+msgid "``pgr_eucledianTSP`` - Returns a route that visits all the coordinates pairs exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:22
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:24
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:26
+msgid "The travelling salesman problem (TSP) or travelling salesperson problem asks the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:28
+msgid "Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:30
+msgid "This implementation uses simulated annealing to return the approximate solution when the input is given in the form of coordinates."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:33
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:48
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:54
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:63
+msgid "Because the documentation examples are auto generated and tested for non changing results, and the default is to have random execution, the example is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:75
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:90
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:99
+msgid "Description of the coordinates SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "Identifier of the coordinate. (optional)"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "X value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "Y value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:110
+msgid "When the value of **id** is not given then the coordinates will receive an **id** starting from 1, in the order given."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:125
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:127
+msgid "Skipping the Simulated Annealing & showing some process information"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:135
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:139
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:140
+msgid "New in version 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:145
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:147
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:148
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:149
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:152
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:153
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:154
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_floydWarshall.pot b/locale/pot/pgr_floydWarshall.pot
new file mode 100644
index 0000000..a65f33f
--- /dev/null
+++ b/locale/pot/pgr_floydWarshall.pot
@@ -0,0 +1,330 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_floydWarshall.rst:13
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:18
+msgid "``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path for each pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:31
+msgid "The Floyd-Warshall algorithm, also known as Floyd's algorithm, is a good choice to calculate the sum of the costs of the shortest path for each pair of nodes in the graph, for *dense graphs*. We make use of the Boost's implementation which runs in :math:`\\Theta(V^3)` time,"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:41
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:42
+msgid "Returns the sum of the costs of the shortest path for each pair of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:43
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:44
+msgid "Boost returns a :math:`V \\times V` matrix, where the infinity values. Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:47
+msgid "We return only the non infinity values in form of a set of `(start_vid, end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:49
+msgid "Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:52
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:54
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:56
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "**Recommended, use a bounding box of no more than 3500 edges.**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:70
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:77
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:84
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:95
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:103
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:110
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:118
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:120
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:123
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "(optional) Default is true (is directed). When set to false the graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:131
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:133
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:148
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:149
+msgid "Re-design of pgr_apspWarshall in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:152
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:154
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:155
+msgid "`Boost floyd-Warshall <http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:156
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:161
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_gsoc_vrppdtw.pot b/locale/pot/pgr_gsoc_vrppdtw.pot
new file mode 100644
index 0000000..a4d272f
--- /dev/null
+++ b/locale/pot/pgr_gsoc_vrppdtw.pot
@@ -0,0 +1,355 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:13
+msgid "pgr_gsoc_vrppdtw - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:19
+msgid "``pgr_gsoc_vrppdtw`` — Returns a solution for `Pick and Delivery` with `time windows` Vehicle Routing Problem"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:27
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:36
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:43
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:52
+msgid "Example: Show the id1"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:59
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:62
+msgid "Description of the sql query"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "Identifier of the customer."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:69
+msgid "A value of ``0`` identifies the starting location"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "``X`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "``Y`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "**demand**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "How much is added / removed from the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:75
+msgid "Negative value is a delivery,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:76
+msgid "Positive value is a pickup,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "**openTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "The time relative to 0, when the customer opens."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "**closeTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "The time relative to 0, when the customer closes."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "**serviceTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "The duration of the loading / unloading."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid "**pIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid "Value used when the current customer is a Delivery to find the corresponding Pickup"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "**dIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "Value used when the current customer is a Pickup to find the corresponding Delivery"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:86
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "**vehicle_num**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "Maximum number of vehicles in the result. (currently is ignored)"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "Capacity of the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:97
+msgid "Description of the result"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:99
+msgid "RETURNS SET OF pgr_costResult[]:"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "**id1**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "Current vehicle identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "**id2**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "Customer identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "Previous ``cost`` plus `travel time` plus `wait time` plus `service time`."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:108
+msgid "when ``id2 = 0`` for the second time for the same ``id1``, then has the total time for the current ``id1``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:114
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:117
+msgid "Example: Total number of rows returned"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:123
+msgid "Example: Results for only id1 values: 1, 5, and 9"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:130
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:132
+msgid "The examples use :ref:`pickDeliverData`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:133
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:136
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:137
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:138
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_johnson.pot b/locale/pot/pgr_johnson.pot
new file mode 100644
index 0000000..74514e9
--- /dev/null
+++ b/locale/pot/pgr_johnson.pot
@@ -0,0 +1,326 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_johnson.rst:13
+msgid "pgr_johnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:18
+msgid "``pgr_johnson`` - Returns the sum of the costs of the shortest path for each pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspJohnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:31
+msgid "The Johnson algorithm, is a good choice to calculate the sum of the costs of the shortest path for each pair of nodes in the graph, for *sparse graphs*. It usees the Boost's implementation which runs in :math:`O(V E \\log V)` time,"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:57
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:40
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:41
+msgid "Returns the sum of the costs of the shortest path for each pair of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:42
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:43
+msgid "Boost returns a :math:`V \\times V` matrix, where the infinity values. Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:46
+msgid "We return only the non infinity values in form of a set of `(start_vid, end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:48
+msgid "Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:51
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:53
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:55
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:60
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:69
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:83
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:94
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:102
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:135
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122
+#: ../../build/doc/pgr_johnson.rst:135
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122
+#: ../../build/doc/pgr_johnson.rst:135
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:117
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:119
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:122
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "(optional) Default is true (is directed). When set to false the graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:130
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:132
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:147
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:148
+msgid "Re-design of pgr_apspJohnson in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:153
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:154
+msgid "`Boost Johnson <http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html>`_ algorithm implementation."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:155
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:160
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_labelGraph.pot b/locale/pot/pgr_labelGraph.pot
new file mode 100644
index 0000000..05b28c4
--- /dev/null
+++ b/locale/pot/pgr_labelGraph.pot
@@ -0,0 +1,202 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_labelGraph.rst:15
+msgid "pgr_labelGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:18
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:20
+msgid "``pgr_labelGraph`` — Locates and labels sub-networks within a network which are not topologically connected."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:30
+msgid "Must be run after ``pgr_createTopology()``. No use of ``geometry`` column. Only ``id``, ``source`` and ``target`` columns are required."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:32
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:34
+msgid "``OK`` when a column with provided name has been generated and populated successfully. All connected edges will have unique similar integer values. In case of ``rows_where`` condition, non participating rows will have -1 integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:35
+msgid "``FAIL`` when the processing cannot be finished due to some error. Notice will be thrown accordingly."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:36
+msgid "``rows_where condition generated 0 rows`` when passed SQL condition has not been fulfilled by any row."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:48
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:50
+msgid "A network behind any routing query may consist of sub-networks completely isolated from each other. Possible reasons could be:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:52
+msgid "An island with no bridge connecting to the mainland."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:53
+msgid "An edge or mesh of edges failed to connect to other networks because of human negligence during data generation."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:54
+msgid "The data is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:55
+msgid "Topology creation failed to succeed."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:57
+msgid "pgr_labelGraph() will create an integer column (with the name provided by the user) and will assign same integer values to all those edges in the network which are connected topologically. Thus better analysis regarding network structure is possible. In case of ``rows_where`` condition, non participating rows will have -1 integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:59
+msgid "Prerequisites: Must run ``pgr_createTopology()`` in order to generate ``source`` and ``target`` columns. Primary key column ``id`` should also be there in the network table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:62
+msgid "Function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:64
+msgid "``text`` Network table name, with optional schema name."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:65
+msgid "``text`` Primary key column name of the network table. Default is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:66
+msgid "``text`` Source column name generated after ``pgr_createTopology()``. Default is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:67
+msgid "``text`` Target column name generated after ``pgr_createTopology()``. Default is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:68
+msgid "``text`` Column name which will hold the integer labels for each sub-graph. Default is ``subgraph``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:69
+msgid "``text`` The SQL where condition. Default is ``true``, means the processing will be done on the whole table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:75
+msgid "Example Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:77
+msgid "The sample data, has 3 subgraphs."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:87
+msgid "`pgr_createTopology <https://github.com/Zia-/pgrouting/blob/develop/src/common/sql/pgrouting_topology.sql>`_ to create the topology of a table based on its geometry and tolerance value."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:92
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_lineGraph.pot b/locale/pot/pgr_lineGraph.pot
new file mode 100644
index 0000000..7af23a7
--- /dev/null
+++ b/locale/pot/pgr_lineGraph.pot
@@ -0,0 +1,381 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_lineGraph.rst:13
+msgid "pgr_lineGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:15
+msgid "``pgr_lineGraph`` — Transforms a given graph into its corresponding edge-based graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:31
+msgid "Given a graph G, its line graph L(G) is a graph such that:-"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:33
+msgid "each vertex of L(G) represents an edge of G"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:34
+msgid "two vertices of L(G) are adjacent if and only if their corresponding edges share a common endpoint in G."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:36
+msgid "The following figures show a graph (left, with blue vertices) and its Line Graph (right, with green vertices)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:39
+msgid "|first|"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:55
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:61
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:68
+msgid "The minimal signature is for a **directed** graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "This signature returns the Line Graph of the current graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:89
+msgid "on a **directed** graph when ``directed`` flag is missing or is set to ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:101
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112
+#: ../../build/doc/pgr_lineGraph.rst:125
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112
+#: ../../build/doc/pgr_lineGraph.rst:125
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112
+#: ../../build/doc/pgr_lineGraph.rst:125
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:109
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:116
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:120
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:122
+msgid "RETURNS SETOF (seq, source, target, cost, reverse_cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "Identifier of the source vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:131
+msgid "When `negative`: the source is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "Identifier of the target vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:135
+msgid "When `negative`: the target is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "Weight of the edge (`source`, `target`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:139
+msgid "When `negative`: edge (`source`, `target`) does not exist, therefore it’s not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "Weight of the edge (`target`, `source`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:143
+msgid "When `negative`: edge (`target`, `source`) does not exist, therefore it’s not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:147
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:154
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:156
+msgid "https://en.wikipedia.org/wiki/Line_graph"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:157
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:160
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:161
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:162
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_maxCardinalityMatch.pot b/locale/pot/pgr_maxCardinalityMatch.pot
new file mode 100644
index 0000000..66c453d
--- /dev/null
+++ b/locale/pot/pgr_maxCardinalityMatch.pot
@@ -0,0 +1,351 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:13
+msgid "pgr_maxCardinalityMatch - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:19
+msgid "``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:32
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:33
+msgid "Renamed 2.5.0, Previous name pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:34
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:39
+msgid "A matching or independent edge set in a graph is a set of edges without common vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:40
+msgid "A maximum matching is a matching that contains the largest possible number of edges."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:42
+msgid "There may be many maximum matchings."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:43
+msgid "Calculates **one** possible maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:45
+msgid "The graph can be **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:46
+msgid "Running time: :math:`O( E*V * \\alpha(E,V))`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:48
+msgid ":math:`\\alpha(E,V)` is the inverse of the `Ackermann function`_."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:54
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:71
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:78
+msgid "The minimal use calculates one possible maximum cardinality matching on a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:90
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:98
+msgid "The complete signature calculates one possible maximum cardinality matching."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:113
+msgid "Description of the SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:115
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid "**going**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "``ANY-NUMERIC``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid "A positive value represents the existence of the edge (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "**coming**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "A positive value represents the existence of the edge (target, source)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:127
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:129
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:130
+msgid "SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:133
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "(optional) Determines the type of the graph. Default TRUE."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:143
+msgid "Description of the Result"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "Identifier of the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "Identifier of the second end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:155
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:157
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:158
+msgid "http://www.boost.org/libs/graph/doc/maximum_matching.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:159
+msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:160
+msgid "https://en.wikipedia.org/wiki/Ackermann_function"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:163
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:164
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:165
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_maxFlow.pot b/locale/pot/pgr_maxFlow.pot
new file mode 100644
index 0000000..c2a1566
--- /dev/null
+++ b/locale/pot/pgr_maxFlow.pot
@@ -0,0 +1,353 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "pgr_maxFlow - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:19
+msgid "``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the source(s) to the targets(s) using the Push Relabel algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:28
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:36
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:37
+msgid "When the maximum flow is 0 then there is no flow and **0** is returned."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:39
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:41
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:42
+msgid "Uses the :ref:`pgr_pushRelabel <pgr_pushRelabel>` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:44
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:47
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:64
+msgid "Calculates the maximum flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:84
+msgid "Calculates the maximum flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:104
+msgid "Calculates the maximum flow from all the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:122
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:124
+msgid "Calculates the maximum flow from all of the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:138
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+#: ../../build/doc/pgr_maxFlow.rst:169
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+#: ../../build/doc/pgr_maxFlow.rst:169
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:149
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155
+#: ../../build/doc/pgr_maxFlow.rst:157
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:166
+msgid "Description of the return value"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "Maximum flow possible from the source(s) to the target(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:177
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:178
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:179
+msgid "https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:184
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_nodeNetwork.pot b/locale/pot/pgr_nodeNetwork.pot
new file mode 100644
index 0000000..321b052
--- /dev/null
+++ b/locale/pot/pgr_nodeNetwork.pot
@@ -0,0 +1,306 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_nodeNetwork.rst:13
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:18
+msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:20
+msgid "Nicolas Ribot"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:21
+msgid "Nicolas Ribot, The source code is released under the MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:27
+msgid "The function reads edges from a not \"noded\" network table and writes the \"noded\" edges into a new table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:39
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:41
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:43
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:45
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:47
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:49
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:50
+msgid "``float8`` tolerance for coincident points (in projection unit)dd"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:51
+msgid "``text`` Primary key column name of the network table. Default value is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:52
+msgid "``text`` Geometry column name of the network table. Default value is ``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:53
+msgid "``text`` Suffix for the new table's. Default value is ``noded``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:55
+msgid "The output table will have for ``edge_table_noded``"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:57
+msgid "``bigint`` Unique identifier for the table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:58
+msgid "``bigint`` Identifier of the edge in original table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:59
+msgid "``integer`` Segment number of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:60
+msgid "``integer`` Empty source column to be used with :ref:`pgr_create_topology` function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:61
+msgid "``integer`` Empty target column to be used with :ref:`pgr_create_topology` function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:62
+msgid "``geometry`` Geometry column of the noded network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:65
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:66
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:70
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:72
+msgid "Let's create the topology for the data in :doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:90
+msgid "Now we can analyze the network."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:114
+msgid "The analysis tell us that the network has a gap and an intersection. We try to fix the problem using:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:136
+msgid "Inspecting the generated table, we can see that edges 13,14 and 18 has been segmented"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:166
+msgid "We can create the topology of the new network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:184
+msgid "Now let's analyze the new topology"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:210
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:243
+msgid "Comparing the results"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:245
+msgid "Comparing with the Analysis in the original edge_table, we see that."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "Before"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "After"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "Table name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table_noded"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "All original fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Has only basic fields to do a topology analysis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1,6,24"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:255
+msgid "Edges with 2 dead ends 17,18"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:257
+msgid "Edge 17's right node is a dead end because there is no other edge sharing that same node. (cnt=1)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "No Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:263
+msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid "Gaps"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid "There is a gap between edge 17 and 14 because edge 14 is near to the right node of edge 17"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid "Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The tolerance value was taken in account"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Intersections"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Edges 13 and 18 were intersecting"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Edges were segmented, So, now in the interection's point there is a node and the following edges share it: 13-1 13-2 18-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:274
+msgid "Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and 18-2 into our edge-table, copying the data for dir,cost,and reverse cost with tho following steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:276
+msgid "Add a column old_id into edge_table, this column is going to keep track the id of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:277
+msgid "Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:290
+msgid "We recreate the topology:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:310
+msgid "To get the same analysis results as the topology of edge_table_noded, we do the following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:337
+msgid "To get the same analysis results as the original edge_table, we do the following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:362
+msgid "Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 is an under pass and there is also a street level juction, and the same happens with edges 17 and 13."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:389
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:391
+msgid ":ref:`topology` for an overview of a topology for routing algorithms. :ref:`pgr_analyze_oneway` to analyze directionality of the edges. :ref:`pgr_create_topology` to create a topology based on the geometry. :ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:397
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:398
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:399
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_pointsAsPolygon.pot b/locale/pot/pgr_pointsAsPolygon.pot
new file mode 100644
index 0000000..e373ff9
--- /dev/null
+++ b/locale/pot/pgr_pointsAsPolygon.pot
@@ -0,0 +1,118 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:13
+msgid "pgr_pointsAsPolygon"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:21
+msgid "``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:27
+msgid "Returns the alpha shape as (multi)polygon geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:37
+msgid "``text`` a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:47
+msgid "(optional) ``float8`` alpha value. If specified alpha value equals 0 (default), then optimal alpha value is used. For more information, see `CGAL - 2D Alpha Shapes <http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:50
+msgid "Returns a (multi)polygon geometry (with holes)."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:54
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:55
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:56
+msgid "Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:57
+msgid "Supported to return a (multi)polygon geometry (with holes) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:61
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:62
+msgid "In the following query there is no way to control which point in the polygon is the first in the list, so you may get similar but different results than the following which are also correct."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:69
+msgid "The query use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:73
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:75
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:76
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:79
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:80
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:81
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_pushRelabel.pot b/locale/pot/pgr_pushRelabel.pot
new file mode 100644
index 0000000..b8cf3fe
--- /dev/null
+++ b/locale/pot/pgr_pushRelabel.pot
@@ -0,0 +1,426 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pushRelabel.rst:14
+msgid "pgr_pushRelabel - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:20
+msgid "``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowPushRelabel"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid "When the maximum flow is 0 then there is no flow and **EMPTY SET** is returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid "Creates a **super source** and edges to all the source(s), and a **super target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid "The maximum flow through the graph is guaranteed to be the value returned by :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:41
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:60
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:62
+msgid "Calculates the flow on the graph edges that maximizes the flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:81
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:83
+msgid "Calculates the flow on the graph edges that maximizes the flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:104
+msgid "Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:123
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:125
+msgid "Calculates the flow on the graph edges that maximizes the flow from all of the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:140
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:158
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:160
+msgid ":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:161
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:162
+msgid "https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:167
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_strongComponents.pot b/locale/pot/pgr_strongComponents.pot
new file mode 100644
index 0000000..b024c15
--- /dev/null
+++ b/locale/pot/pgr_strongComponents.pot
@@ -0,0 +1,337 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_strongComponents.rst:13
+msgid "pgr_strongComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:15
+msgid "``pgr_strongComponents`` — Return the strongly connected components of a directed graph using Tarjan's algorithm based on DFS. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:31
+msgid "A strongly connected component of a directed graph is a set of vertices that are all reachable from each other. This implementation can only be used with a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:40
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:42
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:44
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:62
+msgid "The signature is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for connected components and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Component identifier. It is equal to the minimum node identifier in the component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:93
+msgid "http://en.wikipedia.org/wiki/Strongly_connected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:99
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_trsp.pot b/locale/pot/pgr_trsp.pot
new file mode 100644
index 0000000..e9b4ac0
--- /dev/null
+++ b/locale/pot/pgr_trsp.pot
@@ -0,0 +1,262 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_trsp.rst:13
+msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:22
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:24
+msgid "``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:30
+msgid "The turn restricted shorthest path (TRSP) is a shortest path algorithm that can optionally take into account complicated turn restrictions like those found in real world navigable road networks. Performamnce wise it is nearly as fast as the A* search but has many additional features like it works with edges rather than the nodes of the network. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a path."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:57
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:59
+msgid "The Turn Restricted Shortest Path algorithm (TRSP) is similar to the shooting star in that you can specify turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:61
+msgid "The TRSP setup is mostly the same as :ref:`Dijkstra shortest path <pgr_dijkstra>` with the addition of an optional turn restriction table. This provides an easy way of adding turn restrictions to a road network by placing them in a separate table."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:64
+#: ../../build/doc/pgr_trsp.rst:120
+msgid "a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:71
+#: ../../build/doc/pgr_trsp.rst:127
+msgid "``int4`` identifier of the edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:72
+#: ../../build/doc/pgr_trsp.rst:128
+msgid "``int4`` identifier of the source vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:73
+#: ../../build/doc/pgr_trsp.rst:129
+msgid "``int4`` identifier of the target vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:74
+#: ../../build/doc/pgr_trsp.rst:130
+msgid "``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:75
+#: ../../build/doc/pgr_trsp.rst:131
+msgid "(optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs)."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:77
+msgid "``int4`` **NODE id** of the start point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:78
+msgid "``int4`` **NODE id** of the end point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:79
+#: ../../build/doc/pgr_trsp.rst:134
+msgid "``true`` if the graph is directed"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:80
+#: ../../build/doc/pgr_trsp.rst:135
+msgid "if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:82
+#: ../../build/doc/pgr_trsp.rst:137
+msgid "(optional) a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:88
+#: ../../build/doc/pgr_trsp.rst:143
+msgid "``float8`` turn restriction cost"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:89
+#: ../../build/doc/pgr_trsp.rst:144
+msgid "``int4`` target id"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:90
+msgid "``text`` comma separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:92
+msgid "Another variant of TRSP allows to specify **EDGE id** of source and target together with a fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:94
+msgid "``int4`` **EDGE id** of the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:95
+msgid "``float8`` fraction of 1 defines the position on the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:96
+msgid "``int4`` **EDGE id** of the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:97
+msgid "``float8`` fraction of 1 defines the position on the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:99
+#: ../../build/doc/pgr_trsp.rst:152
+msgid "Returns set of :ref:`type_cost_result`:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:101
+#: ../../build/doc/pgr_trsp.rst:154
+msgid "row sequence"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:102
+#: ../../build/doc/pgr_trsp.rst:156
+msgid "node ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:103
+#: ../../build/doc/pgr_trsp.rst:157
+msgid "edge ID (``-1`` for the last row)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:104
+msgid "cost to traverse from ``id1`` using ``id2``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:107
+#: ../../build/doc/pgr_trsp.rst:162
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:108
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:111
+msgid "Support for Vias"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:113
+msgid "The Support for Vias functions are prototypes. Not all corner cases are being considered."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:116
+msgid "We also have support for vias where you can say generate a from A to B to C, etc. We support both methods above only you pass an array of vertices or and array of edges and percentage position along the edge in two arrays."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:133
+msgid "``int4[]`` An ordered array of **NODE id** the path will go through from start to end."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:145
+msgid "``text`` commar separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:147
+msgid "Another variant of TRSP allows to specify **EDGE id** together with a fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:149
+msgid "``int4`` An ordered array of **EDGE id** that the path has to traverse"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:150
+msgid "``float8`` An array of fractional positions along the respective edges in ``eids``, where 0.0 is the start of the edge and 1.0 is the end of the eadge."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:155
+msgid "route ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:158
+msgid "cost to traverse from ``id2`` using ``id3``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:163
+msgid "Via Support prototypes new in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:166
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:168
+msgid "**Without turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:175
+msgid "**With turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:177
+msgid "Then a query with turn restrictions is created as:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:184
+msgid "An example query using vertex ids and via points:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:191
+msgid "An example query using edge ids and vias:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:198
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:204
+msgid ":ref:`type_cost_result`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:207
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:208
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:209
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_version.pot b/locale/pot/pgr_version.pot
new file mode 100644
index 0000000..67eb04b
--- /dev/null
+++ b/locale/pot/pgr_version.pot
@@ -0,0 +1,139 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_version.rst:13
+msgid "pgr_version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:21
+msgid "``pgr_version`` — Query for pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:27
+msgid "Returns a table with pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:35
+#: ../../build/doc/pgr_version.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:37
+msgid "Returns a table with:"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "**version**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+#: ../../build/doc/pgr_version.rst:43
+#: ../../build/doc/pgr_version.rst:44
+#: ../../build/doc/pgr_version.rst:45
+#: ../../build/doc/pgr_version.rst:46
+msgid "``varchar``"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "pgRouting version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "**tag**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "Git tag of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "**hash**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "Git hash of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "**branch**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "Git branch of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "**boost**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "Boost version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:51
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:52
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:56
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:58
+msgid "Query for full version string"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:66
+msgid "Query for ``version`` and ``boost`` attribute"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:78
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:81
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:82
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:83
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_vrpOneDepot.pot b/locale/pot/pgr_vrpOneDepot.pot
new file mode 100644
index 0000000..737d43f
--- /dev/null
+++ b/locale/pot/pgr_vrpOneDepot.pot
@@ -0,0 +1,118 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:14
+msgid "pgr_vrpOneDepot - Experimental"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:21
+msgid "**No documentation available**"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:24
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:28
+msgid "Current Result"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:34
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:41
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:43
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:46
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:47
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:48
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_withPoints.pot b/locale/pot/pgr_withPoints.pot
new file mode 100644
index 0000000..5475882
--- /dev/null
+++ b/locale/pot/pgr_withPoints.pot
@@ -0,0 +1,630 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPoints.rst:13
+msgid "pgr_withPoints - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:19
+msgid "``pgr_withPoints`` - Returns the shortest path in a graph with additional temporary vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:37
+msgid "Modify the graph to include points defined by points_sql. Using Dijkstra algorithm, find the shortest path(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:43
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:45
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:51
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:53
+msgid "When the starting vertex and ending vertex are the same, there is no path. - The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:56
+msgid "When the starting vertex and ending vertex are the different and there is no path: - The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:59
+msgid "For optimization purposes, any duplicated value in the start_vids or end_vids are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:60
+msgid "The returned values are ordered: - start_vid ascending - end_vid ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:64
+msgid "Running time: :math:`O(|start\\_vids|\\times(V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:68
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:81
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:87
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:90
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:91
+msgid "The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid "No **details** are given about distance of other points of points_sql query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:100
+msgid "From point 1 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:110
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:120
+msgid "From point 1 to vertex 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:132
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:141
+msgid "From point 1 to point 3 and vertex 5"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:153
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:162
+msgid "From point 1 and vertex 2 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:182
+msgid "From point 1 and vertex 2 to point 3 and vertex 7"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:192
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPoints.rst:249
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Value in <0,1> that indicates the relative postition from the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPoints.rst:222
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:207
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:211
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid "Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid "(optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:221
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "(optional). When ``true`` the results will include the points in points_sql that are in the path. Default is ``false`` which ignores other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:231
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:233
+msgid "Returns set of ``(seq, [path_seq,] [start_vid,] [end_vid,] node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "Path sequence that indicates the relative position on the path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+#: ../../build/doc/pgr_withPoints.rst:241
+#: ../../build/doc/pgr_withPoints.rst:242
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "Identifier of the ending vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:242
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "Identifier of the node:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:243
+msgid "A positive value indicates the node is a vertex of edges_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "A negative value indicates the node is a point of points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:249
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid "Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:262
+msgid "Which path (if any) passes in front of point 6 or vertex 6 with **right** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:268
+msgid "Which path (if any) passes in front of point 6 or vertex 6 with **left** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:274
+msgid "Many to many example with a twist: on undirected graph and showing details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:281
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:286
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:287
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:291
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:293
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:296
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:297
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:298
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_withPointsCost.pot b/locale/pot/pgr_withPointsCost.pot
new file mode 100644
index 0000000..021b895
--- /dev/null
+++ b/locale/pot/pgr_withPointsCost.pot
@@ -0,0 +1,576 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCost.rst:13
+msgid "pgr_withPointsCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:19
+msgid "``pgr_withPointsCost`` - Calculates the shortest path and returns only the aggregate cost of the shortest path(s) found, for the combination of points given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:37
+msgid "Modify the graph to include points defined by points_sql. Using Dijkstra algorithm, return only the aggregate cost of the shortest path(s) found."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:79
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:44
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:45
+msgid "Returns the sum of the costs of the shortest path for pair combination of vertices in the modified graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:51
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:52
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:54
+msgid "The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:56
+msgid "When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:58
+msgid "The `agg_cost` in the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:60
+msgid "When the starting vertex and ending vertex are the different and there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:62
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:64
+msgid "If the values returned are stored in a table, the unique index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:67
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:69
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:71
+msgid "For optimization purposes, any duplicated value in the `start_vids` or `end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:73
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:75
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:76
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:78
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:82
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:92
+msgid "There is no **details** flag, unlike the other members of the withPoints family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:96
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:102
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:105
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid "The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:124
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:145
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:166
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:185
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:204
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Value in <0,1> that indicates the relative postition from the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCost.rst:234
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:219
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:223
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid "Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "(optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:233
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:241
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:243
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "Identifier of the ending point. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:256
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:258
+msgid "With **right** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:264
+msgid "With **left** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:270
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:277
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:282
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:283
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:287
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:289
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:292
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:293
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:294
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_withPointsCostMatrix.pot b/locale/pot/pgr_withPointsCostMatrix.pot
new file mode 100644
index 0000000..a0e97dd
--- /dev/null
+++ b/locale/pot/pgr_withPointsCostMatrix.pot
@@ -0,0 +1,455 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:13
+msgid "pgr_withPointsCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:19
+msgid "``pgr_withPointsCostMatrix`` - Calculates the shortest path and returns only the aggregate cost of the shortest path(s) found, for the combination of points given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:31
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:35
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:45
+msgid "There is no **details** flag, unlike the other members of the withPoints family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid "The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:87
+msgid "returning a symmetrical cost matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:89
+msgid "Using the default **side** value on the **points_sql** query"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:90
+msgid "Using an undirected graph"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:91
+msgid "Using the default **driving_side** value"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:100
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Value in <0,1> that indicates the relative postition from the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:128
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:116
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "(optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:127
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the starting vertex. Used when multiple starting vetrices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the ending vertex. Used when multiple ending vertices are in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:153
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:154
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:155
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:156
+msgid "`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:161
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_withPointsDD.pot b/locale/pot/pgr_withPointsDD.pot
new file mode 100644
index 0000000..b78f02b
--- /dev/null
+++ b/locale/pot/pgr_withPointsDD.pot
@@ -0,0 +1,527 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsDD.rst:13
+msgid "pgr_withPointsDD - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:19
+msgid "``pgr_withPointsDD`` - Returns the driving distance from a starting point."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:37
+msgid "Modify the graph to include points and using Dijkstra algorithm, extracts all the nodes and points that have costs less than or equal to the value ``distance`` from the starting point. The edges extracted will conform the corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:60
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:63
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:64
+msgid "The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:84
+msgid "Driving distance from a single point"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:86
+#: ../../build/doc/pgr_withPointsDD.rst:106
+msgid "Finds the driving distance depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:94
+msgid "Right side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:104
+msgid "Driving distance from many starting points"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:118
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsDD.rst:169
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Value in <0,1> that indicates the relative postition from the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsDD.rst:147
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:134
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:138
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "Starting point id"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "Distance from the start_pid"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+#: ../../build/doc/pgr_withPointsDD.rst:150
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid "(optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid "(optional). Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:146
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid "(optional). When ``true`` the results will include the driving distance to the points with in the ``distance``. Default is ``false`` which ignores other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "(optional). When ``true`` the nodes will only appear in the closest start_v list. Default is ``false`` which resembles several calls using the single starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:157
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:159
+msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid "Identifier of the node within the Distance from ``start_pid``. If ``details =: true`` a negative value is the identifier of a point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid "``-1`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:169
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "``0`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:180
+msgid "Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:182
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:184
+msgid "Left side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:190
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:199
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:204
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:205
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:209
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:211
+msgid ":ref:`pgr_drivingDistance` - Driving distance using dijkstra."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:212
+msgid ":ref:`pgr_alphashape` - Alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:213
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:218
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/pgr_withPointsKSP.pot b/locale/pot/pgr_withPointsKSP.pot
new file mode 100644
index 0000000..a398e1f
--- /dev/null
+++ b/locale/pot/pgr_withPointsKSP.pot
@@ -0,0 +1,544 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsKSP.rst:13
+msgid "pgr_withPointsKSP - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:19
+msgid "``pgr_withPointsKSP`` - Find the K shortest paths using Yen's algorithm."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:32
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:36
+msgid "Modifies the graph to include the points defined in the ``points_sql`` and using Yen algorithm, finds the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:41
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:56
+msgid "Minimal Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "The minimal usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:60
+msgid "The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:61
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "No **heap paths** are returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:82
+msgid "Finds the K shortest paths depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:91
+msgid "With details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "When negative: edge `(source, target)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "When negative: edge `(target, source)` does not exist, therefore it's not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Value in <0,1> that indicates the relative postition from the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsKSP.rst:130
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:115
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "**start_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "Starting point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "**end_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "Ending point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "**K**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "Number of shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid "(optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid "(optional). When ``true`` the paths calculated to get the shortests paths will be returned also. Default is ``false`` only the K shortest paths are returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:129
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "(optional). When ``true`` the results will include the driving distance to the points with in the ``distance``. Default is ``false`` which ignores other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:139
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:141
+msgid "Returns set of ``(seq, path_id, path_seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid "Relative position in the path of node and edge. Has value 1 for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "Path identifier. The ordering of the paths: For two paths i, j if i < j then agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid "Identifier of the node in the path. Negative values are the identifiers of a point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid "Identifier of the edge used to go from ``node`` to the next node in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid "Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:164
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:166
+msgid "Left side driving topology with details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:172
+msgid "Right side driving topology with heap paths and details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:178
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:181
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:182
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:186
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:188
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:191
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:192
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:193
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/proposed.pot b/locale/pot/proposed.pot
new file mode 100644
index 0000000..8d2ee99
--- /dev/null
+++ b/locale/pot/proposed.pot
@@ -0,0 +1,382 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/proposed.rst:13
+msgid "Stable Proposed Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:20
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:22
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:23
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:24
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:25
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:26
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:27
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:33
+msgid "As part of the :ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:35
+msgid ":ref:`pgr_dijkstraCostMatrix` Use pgr_dijkstra to calculate a cost matrix."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:36
+msgid ":ref:`pgr_dijkstraVia` - Use pgr_dijkstra to make a route via vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:39
+msgid "Families"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:40
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:3
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:4
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:5
+msgid ":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:46
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:3
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid ":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:5
+msgid ":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:52
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:3
+msgid ":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:4
+msgid ":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:5
+msgid ":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:58
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:3
+msgid ":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:4
+msgid ":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid ":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid ":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:9
+msgid ":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid ":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:64
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:3
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:4
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:5
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:6
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:7
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:71
+msgid "categories"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:72
+msgid ":ref:`Cost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:3
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:4
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:6
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:7
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:78
+msgid ":ref:`CostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:3
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:4
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:6
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:7
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:84
+msgid ":ref:`KSP`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:3
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:4
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:106
+msgid "Experimental Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:111
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:113
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:114
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:116
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:117
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:118
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:119
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:120
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:121
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:122
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:123
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:124
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:125
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:126
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:127
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:132
+msgid ":ref:`contraction` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:134
+msgid ":ref:`pgr_contractgraph` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:138
+msgid "Graph Analysis"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:139
+msgid ":ref:`pgr_labelGraph` - Analyze / label subgraphs within a network"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:141
+msgid ":ref:`components` - Analyze components within a graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:143
+msgid ":ref:`pgr_connectedComponents` - Return the connected components of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:144
+msgid ":ref:`pgr_strongComponents` - Return the strongly connected components of a directed graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:145
+msgid ":ref:`pgr_biconnectedComponents` - Return the biconnected components of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:146
+msgid ":ref:`pgr_articulationPoints` - Return the articulation points of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:147
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:150
+msgid "VRP"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:151
+msgid ":ref:`pgr_gsocvrppdtw`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:152
+msgid ":ref:`pgr_vrp_basic`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:166
+msgid "Graph Transformation"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:167
+msgid ":doc:`pgr_lineGraph`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:178
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:179
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:180
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/release_notes.pot b/locale/pot/release_notes.pot
new file mode 100644
index 0000000..ca762d4
--- /dev/null
+++ b/locale/pot/release_notes.pot
@@ -0,0 +1,1206 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/release_notes.rst:13
+msgid "Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid "To see the full list of changes check the list of `Git commits <https://github.com/pgRouting/pgrouting/commits>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid "Table of contents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:21
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:22
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:23
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:24
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:25
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:26
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:27
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:28
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:29
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:30
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:31
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:32
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:33
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:34
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:35
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:36
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:43
+msgid "pgRouting 2.5.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:45
+msgid "To see the issues closed by this release see the `Git closed issues for 2.5.0 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.5.0%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:49
+msgid "enhancement:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:50
+msgid "pgr_version is now on SQL language"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:53
+msgid "Breaking change on:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:54
+msgid "pgr_edgeDisjointPaths:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:56
+msgid "Added path_id, cost and agg_cost columns on the result"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:57
+msgid "Parameter names changed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:58
+msgid "The many version results are the union of the one to one version"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:61
+msgid "New Signatures:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:62
+msgid "pgr_bdAstar(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:65
+#: ../../build/doc/release_notes.rst:223
+msgid "New Proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:66
+msgid "pgr_bdAstar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:67
+msgid "pgr_bdAstar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:68
+msgid "pgr_bdAstar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:69
+msgid "pgr_bdAstarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:70
+msgid "pgr_bdAstarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:71
+msgid "pgr_bdAstarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:72
+msgid "pgr_bdAstarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:73
+msgid "pgr_bdAstarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:74
+msgid "pgr_bdDijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:75
+msgid "pgr_bdDijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:76
+msgid "pgr_bdDijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:77
+msgid "pgr_bdDijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:78
+msgid "pgr_bdDijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:79
+msgid "pgr_bdDijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:80
+msgid "pgr_bdDijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:81
+msgid "pgr_bdDijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:82
+msgid "pgr_lineGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:83
+msgid "pgr_connectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:84
+msgid "pgr_strongComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:85
+msgid "pgr_biconnectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:86
+msgid "pgr_articulationPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:87
+msgid "pgr_bridges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:90
+#: ../../build/doc/release_notes.rst:160
+#: ../../build/doc/release_notes.rst:247
+msgid "Deprecated Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:91
+msgid "pgr_bdastar - use pgr_bdAstar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:94
+msgid "Renamed Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:95
+msgid "pgr_maxFlowPushRelabel - use pgr_pushRelabel instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:96
+msgid "pgr_maxFlowEdmondsKarp -use pgr_edmondsKarp instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:97
+msgid "pgr_maxFlowBoykovKolmogorov - use pgr_boykovKolmogorov instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:98
+msgid "pgr_maximumCardinalityMatching - use pgr_maxCardinalityMatch instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:101
+msgid "Deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:102
+msgid "pgr_pointToEdgeNode"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:108
+msgid "pgRouting 2.4.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:110
+msgid "To see the issues closed by this release see the `Git closed milestone for 2.4.2 <https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.2%22%20>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:113
+msgid "Improvement"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:114
+msgid "Works for postgreSQL 10"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:117
+#: ../../build/doc/release_notes.rst:131
+#: ../../build/doc/release_notes.rst:168
+#: ../../build/doc/release_notes.rst:522
+#: ../../build/doc/release_notes.rst:529
+#: ../../build/doc/release_notes.rst:550
+#: ../../build/doc/release_notes.rst:557
+msgid "Bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:118
+msgid "Fixed: Unexpected error column \"cname\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:119
+msgid "Replace __linux__ with __GLIBC__ for glibc-specific headers and functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:126
+msgid "pgRouting 2.4.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:128
+msgid "To see the issues closed by this release see the `Git closed milestone for 2.4.1 <https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.1%22%20>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:132
+msgid "Fixed compiling error on macOS"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:133
+msgid "Condition error on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:138
+msgid "pgRouting 2.4.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:140
+msgid "To see the issues closed by this release see the `Git closed issues for 2.4.0 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.4.0%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:143
+#: ../../build/doc/release_notes.rst:213
+#: ../../build/doc/release_notes.rst:374
+msgid "New Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:144
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:148
+msgid "New Proposed Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:149
+msgid "pgr_maxFlow"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:150
+msgid "pgr_astar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:151
+msgid "pgr_astar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:152
+msgid "pgr_astar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:153
+msgid "pgr_astarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:154
+msgid "pgr_astarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:155
+msgid "pgr_astarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:156
+msgid "pgr_astarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:157
+msgid "pgr_astarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:161
+msgid "pgr_bddijkstra - use pgr_bdDijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:164
+#: ../../build/doc/release_notes.rst:253
+msgid "Deprecated Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:165
+msgid "pgr_pointsToVids"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:169
+msgid "Bug fixes on proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:171
+msgid "pgr_withPointsKSP: fixed ordering"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:173
+msgid "TRSP original code is used with no changes on the compilation warnings"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:178
+msgid "pgRouting 2.3.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:180
+msgid "To see the issues closed by this release see the `Git closed issues for 2.3.2 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.2%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:183
+#: ../../build/doc/release_notes.rst:199
+#: ../../build/doc/release_notes.rst:269
+#: ../../build/doc/release_notes.rst:282
+#: ../../build/doc/release_notes.rst:293
+#: ../../build/doc/release_notes.rst:305
+#: ../../build/doc/release_notes.rst:424
+#: ../../build/doc/release_notes.rst:455
+msgid "Bug Fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:184
+msgid "Fixed pgr_gsoc_vrppdtw crash when all orders fit on one truck."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:185
+msgid "Fixed pgr_trsp:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:187
+msgid "Alternate code is not executed when the point is in reality a vertex"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:188
+msgid "Fixed ambiguity on seq"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:194
+msgid "pgRouting 2.3.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:196
+msgid "To see the issues closed by this release see the `Git closed issues for 2.3.1 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.1%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:200
+msgid "Leaks on proposed max_flow functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:201
+msgid "Regression error on pgr_trsp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:202
+msgid "Types discrepancy on pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:208
+msgid "pgRouting 2.3.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:210
+msgid "To see the issues closed by this release see the `Git closed issues for 2.3.0 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.0%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:214
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:215
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:218
+#: ../../build/doc/release_notes.rst:330
+msgid "New Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:219
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:224
+msgid "pgr_dijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:225
+msgid "pgr_withPointsCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:226
+msgid "pgr_maxFlowPushRelabel(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:227
+msgid "pgr_maxFlowPushRelabel(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:228
+msgid "pgr_maxFlowPushRelabel(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:229
+msgid "pgr_maxFlowPushRelabel(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:230
+msgid "pgr_maxFlowEdmondsKarp(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:231
+msgid "pgr_maxFlowEdmondsKarp(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:232
+msgid "pgr_maxFlowEdmondsKarp(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:233
+msgid "pgr_maxFlowEdmondsKarp(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:234
+msgid "pgr_maxFlowBoykovKolmogorov (one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:235
+msgid "pgr_maxFlowBoykovKolmogorov (one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:236
+msgid "pgr_maxFlowBoykovKolmogorov (many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:237
+msgid "pgr_maxFlowBoykovKolmogorov (many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:238
+msgid "pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:239
+msgid "pgr_edgeDisjointPaths(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:240
+msgid "pgr_edgeDisjointPaths(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:241
+msgid "pgr_edgeDisjointPaths(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:242
+msgid "pgr_edgeDisjointPaths(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:243
+msgid "pgr_contractGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:248
+msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:249
+msgid "pgr_astar - use pgr_aStar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:254
+msgid "pgr_flip_edges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:255
+msgid "pgr_vidsToDmatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:256
+msgid "pgr_pointsToDMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:257
+msgid "pgr_textToPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:264
+msgid "pgRouting 2.2.4 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:266
+msgid "To see the issues closed by this release see the `Git closed issues for 2.2.4 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.4%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:270
+msgid "Bogus uses of extern \"C\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:271
+msgid "Build error on Fedora 24 + GCC 6.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:272
+msgid "Regression error pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:277
+msgid "pgRouting 2.2.3 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:279
+msgid "To see the issues closed by this release see the `Git closed issues for 2.2.3 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.3%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:283
+msgid "Fixed compatibility issues with PostgreSQL 9.6."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:288
+msgid "pgRouting 2.2.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:290
+msgid "To see the issues closed by this release see the `Git closed issues for 2.2.2 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.2%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:294
+msgid "Fixed regression error on pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:300
+msgid "pgRouting 2.2.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:302
+msgid "To see the issues closed by this release see the `Git closed issues for 2.2.1 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A2.2.1+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:306
+msgid "Server crash fix on pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:307
+msgid "Bug fix on With Points family of functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:313
+msgid "pgRouting 2.2.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:315
+msgid "To see the issues closed by this release see the `Git closed issues for 2.2.0 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.0%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:319
+#: ../../build/doc/release_notes.rst:387
+msgid "Improvements"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:320
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:322
+msgid "Adding a row_where and outall optional parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:324
+msgid "Signature fix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:326
+msgid "pgr_dijkstra -- to match what is documented"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:331
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:332
+msgid "pgr_Johnson"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:333
+msgid "pgr_dijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:334
+msgid "pgr_dijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:335
+msgid "pgr_dijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:336
+msgid "pgr_dijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:339
+#: ../../build/doc/release_notes.rst:391
+msgid "Proposed functionality"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:340
+msgid "pgr_withPoints(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:341
+msgid "pgr_withPoints(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:342
+msgid "pgr_withPoints(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:343
+msgid "pgr_withPoints(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:344
+msgid "pgr_withPointsCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:345
+msgid "pgr_withPointsCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:346
+msgid "pgr_withPointsCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:347
+msgid "pgr_withPointsCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:348
+msgid "pgr_withPointsDD(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:349
+msgid "pgr_withPointsDD(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:350
+msgid "pgr_withPointsKSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:351
+msgid "pgr_dijkstraVia"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:355
+msgid "Deprecated functions:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:356
+msgid "pgr_apspWarshall use pgr_floydWarshall instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:357
+msgid "pgr_apspJohnson use pgr_Johnson instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:358
+msgid "pgr_kDijkstraCost use pgr_dijkstraCost instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:359
+msgid "pgr_kDijkstraPath use pgr_dijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:362
+msgid "Renamed and deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:363
+msgid "pgr_makeDistanceMatrix renamed to _pgr_makeDistanceMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:369
+msgid "pgRouting 2.1.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:371
+msgid "To see the issues closed by this release see the `Git closed issues for 2.1.0 <https://github.com/pgRouting/pgrouting/issues?q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:375
+msgid "pgr_dijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:376
+msgid "pgr_dijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:377
+msgid "pgr_dijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:378
+msgid "pgr_drivingDistance(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:381
+msgid "Refactored"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:382
+msgid "pgr_dijkstra(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:383
+msgid "pgr_ksp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:384
+msgid "pgr_drivingDistance(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:388
+msgid "pgr_alphaShape function now can generate better (multi)polygon with holes and alpha parameter."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:392
+msgid "Proposed functions from Steve Woodbridge, (Classified as Convenience by the author.)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:394
+msgid "pgr_pointToEdgeNode - convert a point geometry to a vertex_id based on closest edge."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:395
+msgid "pgr_flipEdges - flip the edges in an array of geometries so the connect end to end."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:396
+msgid "pgr_textToPoints - convert a string of x,y;x,y;... locations into point geometries."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:397
+msgid "pgr_pointsToVids - convert an array of point geometries into vertex ids."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:398
+msgid "pgr_pointsToDMatrix - Create a distance matrix from an array of points."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:399
+#: ../../build/doc/release_notes.rst:400
+msgid "pgr_vidsToDMatrix - Create a distance matrix from an array of vertix_id."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:402
+msgid "Added proposed functions from GSoc Projects:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:404
+msgid "pgr_vrppdtw"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:405
+msgid "pgr_vrponedepot"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:408
+msgid "Deprecated functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:409
+msgid "pgr_getColumnName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:410
+msgid "pgr_getTableName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:411
+msgid "pgr_isColumnCndexed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:412
+msgid "pgr_isColumnInTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:413
+msgid "pgr_quote_ident"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:414
+msgid "pgr_versionless"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:415
+msgid "pgr_startPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:416
+msgid "pgr_endPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:417
+msgid "pgr_pointToId"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:420
+msgid "No longer supported"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:421
+msgid "Removed the 1.x legacy functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:425
+msgid "Some bug fixes in other functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:429
+msgid "Refactoring Internal Code"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:430
+msgid "A C and C++ library for developer was created"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:432
+msgid "encapsulates postgreSQL related functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:433
+msgid "encapsulates Boost.Graph graphs"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:435
+msgid "Directed Boost.Graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:436
+msgid "Undirected Boost.graph."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:438
+msgid "allow any-integer in the id's"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:439
+msgid "allow any-numerical on the cost/reverse_cost columns"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:441
+msgid "Instead of generating many libraries: - All functions are encapsulated in one library - The library has the prefix 2-1-0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:450
+msgid "pgRouting 2.0.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:452
+msgid "Minor bug fixes."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:456
+msgid "No track of the bug fixes were kept."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:462
+msgid "pgRouting 2.0.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:464
+msgid "To see the issues closed by this release see the `Git closed issues for 2.0.0 <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.0.0%22+is%3Aclosed>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:466
+msgid "With the release of pgRouting 2.0.0 the library has abandoned backwards compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. The main Goals for this release are:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:469
+msgid "Major restructuring of pgRouting."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:470
+msgid "Standardization of the function naming"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:471
+msgid "Preparation of the project for future development."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:473
+msgid "As a result of this effort:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:475
+msgid "pgRouting has a simplified structure"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:476
+msgid "Significant new functionality has being added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:477
+msgid "Documentation has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:478
+msgid "Testing has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:479
+msgid "And made it easier for multiple developers to make contributions."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:483
+msgid "Important Changes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:484
+msgid "Graph Analytics - tools for detecting and fixing connection some problems in a graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:485
+msgid "A collection of useful utility functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:486
+msgid "Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:487
+msgid "Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, pgr_bdDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:488
+msgid "One to many nodes search (pgr_kDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:489
+msgid "K alternate paths shortest path (pgr_ksp)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:490
+msgid "New TSP solver that simplifies the code and the build process (pgr_tsp), dropped \"Gaul Library\" dependency"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:491
+msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:492
+msgid "Dropped support for Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:493
+msgid "Built a test infrastructure that is run before major code changes are checked in"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:494
+msgid "Tested and fixed most all of the outstanding bugs reported against 1.x that existing in the 2.0-dev code base."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:495
+msgid "Improved build process for Windows"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:496
+msgid "Automated testing on Linux and Windows platforms trigger by every commit"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:497
+msgid "Modular library design"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:498
+msgid "Compatibility with PostgreSQL 9.1 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:499
+msgid "Compatibility with PostGIS 2.0 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:500
+msgid "Installs as PostgreSQL EXTENSION"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:501
+msgid "Return types re factored and unified"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:502
+msgid "Support for table SCHEMA in function parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:503
+msgid "Support for ``st_`` PostGIS function prefix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:504
+msgid "Added ``pgr_`` prefix to functions and types"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:505
+msgid "Better documentation: http://docs.pgrouting.org"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:506
+msgid "shooting_star is discontinued"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:513
+msgid "pgRouting 1.x Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:515
+msgid "To see the issues closed by this release see the `Git closed issues for 1.x <https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+1.x%22+is%3Aclosed>`_ on Github. The following release notes have been copied from the previous ``RELEASE_NOTES`` file and are kept as a reference."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:520
+msgid "Changes for release 1.05"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:526
+msgid "Changes for release 1.03"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:528
+msgid "Much faster topology creation"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:533
+msgid "Changes for release 1.02"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:535
+#: ../../build/doc/release_notes.rst:542
+msgid "Shooting* bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:536
+msgid "Compilation problems solved"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:540
+msgid "Changes for release 1.01"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:546
+msgid "Changes for release 1.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:548
+msgid "Core and extra functions are separated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:549
+msgid "Cmake build process"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:554
+msgid "Changes for release 1.0.0b"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:556
+msgid "Additional SQL file with more simple names for wrapper functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:561
+msgid "Changes for release 1.0.0a"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:563
+msgid "Shooting* shortest path algorithm for real road networks"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:564
+msgid "Several SQL bugs were fixed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:568
+msgid "Changes for release 0.9.9"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:570
+msgid "PostgreSQL 8.2 support"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:571
+msgid "Shortest path functions return empty result if they could not find any path"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:575
+msgid "Changes for release 0.9.8"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:577
+msgid "Renumbering scheme was added to shortest path functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:578
+msgid "Directed shortest path functions were added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:579
+msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
+msgstr ""
+
diff --git a/locale/pot/routingFunctions.pot b/locale/pot/routingFunctions.pot
new file mode 100644
index 0000000..0fadcca
--- /dev/null
+++ b/locale/pot/routingFunctions.pot
@@ -0,0 +1,134 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/routingFunctions.rst:15
+msgid "Routing Functions"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:21
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:23
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:28
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:30
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:33
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:39
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:41
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:43
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:49
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:75
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/sampledata.pot b/locale/pot/sampledata.pot
new file mode 100644
index 0000000..16a78d3
--- /dev/null
+++ b/locale/pot/sampledata.pot
@@ -0,0 +1,142 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/sampledata.rst:11
+msgid "Sample Data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:13
+msgid "The documentation provides very simple example queries based on a small sample network. To be able to execute the sample queries, run the following SQL commands to create a table with a small network data set."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:18
+msgid "Create table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:25
+msgid "Insert data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:32
+msgid "Topology"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:33
+msgid "Before you test a routing function use this query to create a topology (fills the ``source`` and ``target`` columns)."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:40
+msgid "Points of interest"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:41
+msgid "When points outside of the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:42
+msgid "Used with the :ref:`withPoints` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:49
+msgid "Restrictions"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:50
+msgid "Used with the :ref:`trsp` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:57
+msgid "Categories"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:58
+msgid "Used with the :ref:`maxFlow` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:65
+msgid "Vertex table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:66
+msgid "Used in some deprecated signatures or deprecated functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:74
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:76
+msgid "Red arrows correspond when ``cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:77
+msgid "Blue arrows correspond when ``reverse_cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:78
+msgid "Points are outside the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:79
+msgid "Click on the graph to enlarge."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:84
+msgid "Network for queries marked as ``directed`` and ``cost`` and ``reverse_cost`` columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:86
+msgid "When working with city networks, this is recommended for point of view of vehicles."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:91
+msgid "**Graph 1: Directed, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:96
+msgid "Network for queries marked as ``undirected`` and ``cost`` and ``reverse_cost`` columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:98
+msgid "When working with city networks, this is recommended for point of view of pedestrians."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:104
+msgid "**Graph 2: Undirected, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:109
+msgid "Network for queries marked as ``directed`` and only ``cost`` column is used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:116
+msgid "**Graph 3: Directed, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:121
+msgid "Network for queries marked as ``undirected`` and only ``cost`` column is used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:127
+msgid "**Graph 4: Undirected, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:134
+msgid "Pick & Deliver Data"
+msgstr ""
+
diff --git a/locale/pot/support.pot b/locale/pot/support.pot
new file mode 100644
index 0000000..392ef81
--- /dev/null
+++ b/locale/pot/support.pot
@@ -0,0 +1,147 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/support.rst:13
+msgid "Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:15
+msgid "pgRouting community support is available through the `pgRouting website <http://pgrouting.org/support.html>`_, `documentation <http://docs.pgrouting.org>`_, tutorials, mailing lists and others. If you’re looking for :ref:`commercial support <support_commercial>`, find below a list of companies providing pgRouting development and consulting services."
+msgstr ""
+
+#: ../../build/doc/support.rst:19
+msgid "Reporting Problems"
+msgstr ""
+
+#: ../../build/doc/support.rst:21
+msgid "Bugs are reported and managed in an `issue tracker <https://github.com/pgrouting/pgrouting/issues>`_. Please follow these steps:"
+msgstr ""
+
+#: ../../build/doc/support.rst:23
+msgid "Search the tickets to see if your problem has already been reported. If so, add any extra context you might have found, or at least indicate that you too are having the problem. This will help us prioritize common issues."
+msgstr ""
+
+#: ../../build/doc/support.rst:24
+msgid "If your problem is unreported, create a `new issue <https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
+msgstr ""
+
+#: ../../build/doc/support.rst:25
+msgid "In your report include explicit instructions to replicate your issue. The best tickets include the exact SQL necessary to replicate a problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:26
+msgid "If you can test older versions of PostGIS for your problem, please do. On your ticket, note the earliest version the problem appears."
+msgstr ""
+
+#: ../../build/doc/support.rst:27
+msgid "For the versions where you can replicate the problem, note the operating system and version of pgRouting, PostGIS and PostgreSQL."
+msgstr ""
+
+#: ../../build/doc/support.rst:28
+msgid "It is recommended to use the following wrapper on the problem to pin point the step that is causing the problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:39
+msgid "Mailing List and GIS StackExchange"
+msgstr ""
+
+#: ../../build/doc/support.rst:41
+msgid "There are two mailing lists for pgRouting hosted on OSGeo mailing list server:"
+msgstr ""
+
+#: ../../build/doc/support.rst:43
+msgid "User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
+msgstr ""
+
+#: ../../build/doc/support.rst:44
+msgid "Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-dev"
+msgstr ""
+
+#: ../../build/doc/support.rst:46
+msgid "For general questions and topics about how to use pgRouting, please write to the user mailing list."
+msgstr ""
+
+#: ../../build/doc/support.rst:48
+msgid "You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and tag the question with ``pgrouting``. Find all questions tagged with ``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting or subscribe to the `pgRouting questions feed <http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
+msgstr ""
+
+#: ../../build/doc/support.rst:54
+msgid "Commercial Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:56
+msgid "For users who require professional support, development and consulting services, consider contacting any of the following organizations, which have significantly contributed to the development of pgRouting:"
+msgstr ""
+
+#: ../../build/doc/support.rst:61
+msgid "**Company**"
+msgstr ""
+
+#: ../../build/doc/support.rst:62
+msgid "**Offices in**"
+msgstr ""
+
+#: ../../build/doc/support.rst:63
+msgid "**Website**"
+msgstr ""
+
+#: ../../build/doc/support.rst:64
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/support.rst:65
+msgid "Germany, Japan"
+msgstr ""
+
+#: ../../build/doc/support.rst:66
+msgid "https://georepublic.info"
+msgstr ""
+
+#: ../../build/doc/support.rst:67
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/support.rst:68
+#: ../../build/doc/support.rst:71
+msgid "United States"
+msgstr ""
+
+#: ../../build/doc/support.rst:69
+msgid "http://imaptools.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:70
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/support.rst:72
+msgid "http://www.paragoncorporation.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:73
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/support.rst:74
+msgid "Switzerland, France"
+msgstr ""
+
+#: ../../build/doc/support.rst:75
+msgid "http://www.camptocamp.com"
+msgstr ""
+
diff --git a/locale/pot/topology-functions.pot b/locale/pot/topology-functions.pot
new file mode 100644
index 0000000..f35513d
--- /dev/null
+++ b/locale/pot/topology-functions.pot
@@ -0,0 +1,62 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/topology-functions.rst:13
+msgid "Topology - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:15
+msgid "The pgRouting's topology of a network, represented with an edge table with source and target attributes and a vertices table associated with it. Depending on the algorithm, you can create a topology or just reconstruct the vertices table, You can analyze the topology, We also provide a function to node an unoded network."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:19
+msgid ":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:20
+msgid ":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:21
+msgid ":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:22
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:23
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:35
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:38
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:39
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:40
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/types_index.pot b/locale/pot/types_index.pot
new file mode 100644
index 0000000..4e2b841
--- /dev/null
+++ b/locale/pot/types_index.pot
@@ -0,0 +1,54 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/types_index.rst:13
+msgid "pgRouting Data Types"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:15
+msgid "The following are commonly used data types for some of the pgRouting functions."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:17
+msgid ":ref:`type_cost_result` - A set of records to describe a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:18
+msgid ":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:19
+msgid ":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:30
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:33
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:34
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:35
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/pot/withPoints-family.pot b/locale/pot/withPoints-family.pot
new file mode 100644
index 0000000..b805520
--- /dev/null
+++ b/locale/pot/withPoints-family.pot
@@ -0,0 +1,376 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) pgRouting Contributors - Version v2.5.0-alpha
+# This file is distributed under the same license as the pgRouting package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/withPoints-family.rst:14
+msgid "withPoints - Family of functions"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:16
+msgid "When points are also given as input:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:20
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:21
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:22
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:23
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:24
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:47
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:49
+msgid "The squared vertices are the temporary vertices, The temporary vertices are added acordng to the dirving side, The following images visualy show the diferences on how depending on the driving side the data is interpreted."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:53
+msgid "Right driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:58
+msgid "Left driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:63
+msgid "doesn't matter the driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:68
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:70
+msgid "This famly of functions was thought for routing vehicles, but might as well work for some other application that we can not think of."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:73
+msgid "The with points family of function give you the ability to route between arbitrary points located outside the original graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:76
+msgid "When given a point identified with a `pid` that its being mapped to and edge with an identifier `edge_id`, with a `fraction` along that edge (from the source to the target of the edge) and some additional information about which `side` of the edge the point is on, then routing from arbitrary points more accurately reflect routing vehicles in road networks,"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid "I talk about a family of functions because it includes different functionalities."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:84
+msgid "pgr_withPoints is pgr_dijkstra based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:85
+msgid "pgr_withPointsCost is pgr_dijkstraCost based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:86
+msgid "pgr_withPointsKSP is pgr_ksp based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid "pgr_withPointsDD is pgr_drivingDistance based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:89
+msgid "In all this functions we have to take care of as many aspects as possible:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:91
+msgid "Must work for routing:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:93
+msgid "Cars (directed graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:94
+msgid "Pedestrians (undirected graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:96
+msgid "Arriving at the point:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:98
+msgid "In either side of the street."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:99
+msgid "Compulsory arrival on the side of the street where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:101
+msgid "Countries with:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:103
+msgid "Right side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:104
+msgid "Left side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:106
+msgid "Some points are:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:108
+msgid "Permanent, for example the set of points of clients stored in a table in the data base"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:109
+msgid "Temporal, for example points given through a web application"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:111
+msgid "The numbering of the points are handled with negative sign."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:113
+msgid "Original point identifiers are to be positive."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:114
+msgid "Transformation to negative is done internally."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:115
+msgid "For results for involving vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:117
+msgid "positive sign is a vertex of the original grpah"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:118
+msgid "negative sign is a point of the temporary points"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:120
+msgid "The reason for doing this is to avoid confusion when there is a vertex with the same number as identifier as the points identifier."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:123
+msgid "Graph & edges"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:125
+msgid "Let :math:`G_d(V,E)` where :math:`V` is the set of vertices and :math:`E` is the set of edges be the original directed graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:127
+msgid "An edge of the original `edges_sql` is :math:`(id, source, target, cost, reverse\\_cost)` will generate internally"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:129
+msgid ":math:`(id, source, target, cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:130
+msgid ":math:`(id, target, source, reverse\\_cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:133
+msgid "Point Definition"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:135
+msgid "A point is defined by the quadruplet: :math:`(pid, eid, fraction, side)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:137
+msgid "**pid** is the point identifier"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:138
+msgid "**eid** is an edge id of the `edges_sql`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:139
+msgid "**fraction** represents where the edge `eid` will be cut."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:140
+msgid "**side** Indicates the side of the edge where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:144
+msgid "Creating Temporary Vertices in the Graph"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:146
+msgid "For edge (15, 9,12 10, 20), & lets insert point (2, 12, 0.3, r)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:149
+msgid "On a right hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:150
+msgid "From first image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:152
+msgid "We can arrive to the point only via vertex 9."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:153
+msgid "It only afects the edge (15, 9,12, 10) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:154
+msgid "Edge (15, 12,9, 20) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:155
+#: ../../build/doc/withPoints-family.rst:167
+#: ../../build/doc/withPoints-family.rst:182
+msgid "Create new edges:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:157
+#: ../../build/doc/withPoints-family.rst:186
+msgid "(15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:158
+#: ../../build/doc/withPoints-family.rst:187
+msgid "(15, -1,12, 7) edge from point 1 to vertex 12 has cost 7"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:161
+msgid "On a left hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:162
+msgid "From second image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:164
+msgid "We can arrive to the point only via vertex 12."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:165
+msgid "It only afects the edge (15, 12,9 20) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:166
+msgid "Edge (15, 9,12, 10) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:169
+#: ../../build/doc/withPoints-family.rst:184
+msgid "(15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:170
+#: ../../build/doc/withPoints-family.rst:185
+msgid "(15, -1,9, 6) edge from point 1 to vertex 9 has cost 6"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:172
+msgid "that fraction is from vertex 9 to vertex 12"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:176
+msgid "When driving side does not matter"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:177
+msgid "From third image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:179
+msgid "We can arrive to the point either via vertex 12 or via vertex 9"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:180
+msgid "Edge (15, 12,9 20) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:181
+msgid "Edge (15, 9,12, 10) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:190
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:193
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:194
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:195
+msgid ":ref:`search`"
+msgstr ""
+
diff --git a/locale/ru/LC_MESSAGES/KSP-category.po b/locale/ru/LC_MESSAGES/KSP-category.po
new file mode 100644
index 0000000..9232738
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/KSP-category.po
@@ -0,0 +1,36 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/KSP-category.rst:14
+msgid "KSP Category"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:18
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:19
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:26
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:27
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:28
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/TSP-family.po b/locale/ru/LC_MESSAGES/TSP-family.po
new file mode 100644
index 0000000..0f03653
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/TSP-family.po
@@ -0,0 +1,556 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/TSP-family.rst:13
+msgid "Traveling Sales Person - Family of functions"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:17
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:18
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:33
+msgid "Origin"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid ""
+"The traveling sales person problem was studied in the 18th century by "
+"mathematicians"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:36
+msgid "**Sir William Rowam Hamilton** and **Thomas Penyngton Kirkman**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:38
+msgid ""
+"A discussion about the work of Hamilton & Kirkman can be found in the book "
+"**Graph Theory (Biggs et al. 1976)**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:41
+msgid "ISBN-13: 978-0198539162"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:42
+msgid "ISBN-10: 0198539169"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:44
+msgid ""
+"It is believed that the general form of the TSP have been first studied by "
+"Kalr Menger in Vienna and Harvard. The problem was later promoted by "
+"Hassler, Whitney & Merrill at Princeton. A detailed description about the"
+" connection between Menger & Whitney, and the development of the TSP can be "
+"found in `On the history of combinatorial optimization (till 1960) "
+"<http://www.cwi.nl/~lex/files/histco.ps>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:50
+msgid "Problem Definition"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:52
+msgid ""
+"Given a collection of cities and travel cost between each pair, find the "
+"cheapest way for visiting all of the cities and returning to the starting "
+"point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:56
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:58
+msgid "The travel costs are symmetric:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:60
+msgid ""
+"traveling costs from city A to city B are just as much as traveling from B "
+"to A."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:62
+msgid "This problem is an NP-hard optimization problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:64
+msgid "To calculate the number of different tours through :math:`n` cities:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:66
+msgid "Given a starting city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:67
+msgid "There are :math:`n-1` choices for the second city,"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:68
+msgid "And :math:`n-2` choices for the third city, etc."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:69
+msgid ""
+"Multiplying these together we get :math:`(n-1)! = (n-1) (n-2) . . 1`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:70
+msgid ""
+"Now since our travel costs do not depend on the direction we take around the"
+" tour:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:72
+msgid "this number by 2"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:73
+msgid ":math:`(n-1)!/2`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:76
+msgid "TSP & Simulated Annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:78
+msgid ""
+"The simulated annealing algorithm was originally inspired from the process "
+"of annealing in metal work."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:81
+msgid ""
+"Annealing involves heating and cooling a material to alter its physical "
+"properties due to the changes in its internal structure. As the metal cools "
+"its new structure becomes fixed, consequently causing the metal to retain "
+"its newly obtained properties. [C001]_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:88
+msgid "Pseudocode"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:89
+msgid ""
+"Given an initial solution, the simulated annealing process, will start with "
+"a high temperature and gradually cool down until the desired temperature is "
+"reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:92
+msgid ""
+"For each temperature, a neighbouring new solution **snew** is calculated. "
+"The higher the temperature the higher the probability of accepting the new "
+"solution as a possible bester solution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:95
+msgid ""
+"Once the desired temperature is reached, the best solution found is returned"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:118
+msgid "pgRouting Implementation"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:120
+msgid ""
+"pgRouting's implementation adds some extra parameters to allow some exit "
+"controls within the simulated annealing process."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:123
+msgid "To cool down faster to the next temperature:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:125
+msgid ""
+"max_changes_per_temperature: limits the number of changes in the solution "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:126
+msgid ""
+"max_consecutive_non_changes: limits the number of consecutive non changes "
+"per temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:128
+msgid ""
+"This is done by doing some book keeping on the times **solution = snew;** is"
+" executed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:130
+msgid ""
+"max_changes_per_temperature: Increases by one when **solution** changes"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:131
+msgid ""
+"max_consecutive_non_changes: Reset to 0 when **solution** changes, and "
+"increased each **try**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:133
+msgid ""
+"Additionally to stop the algorithm at a higher temperature than the desired "
+"one:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:135
+msgid ""
+"max_processing_time: limits the time the simulated annealing is performed."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:136
+msgid ""
+"book keeping is done to see if there was a change in **solution** on the "
+"last temperature"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:138
+msgid ""
+"Note that, if no change was found in the first "
+"**max_consecutive_non_changes** tries, then the simulated annealing will "
+"stop."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:168
+msgid "Choosing parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:170
+msgid ""
+"There is no exact rule on how the parameters have to be chose, it will "
+"depend on the special characteristics of the problem."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:173
+msgid ""
+"Your computational time is crucial, then put your time limit to "
+"**max_processing_time**."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:174
+msgid ""
+"Make the **tries_per_temperture** depending on the number of cities, for "
+"example:"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:176
+msgid "Useful to estimate the time it takes to do one cycle: use `1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:178
+msgid "this will help to set a reasonable **max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:180
+msgid ":math:`n * (n-1)`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:181
+msgid ":math:`500 * n`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:183
+msgid ""
+"For a faster decreasing the temperature set **cooling_factor** to a smaller "
+"number, and set to a higher number for a slower decrease."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:186
+msgid ""
+"When for the same given data the same results are needed, set **randomize** "
+"to `false`."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:188
+msgid "When estimating how long it takes to do one cycle: use `false`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:191
+msgid ""
+"A recommendation is to play with the values and see what fits to the "
+"particular data."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:196
+msgid "Description Of the Control parameters"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:198
+msgid "The control parameters are optional, and have a default value."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:201 ../../build/doc/TSP-family.rst:230
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+#: ../../build/doc/TSP-family.rst:233
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203 ../../build/doc/TSP-family.rst:204
+msgid "`0`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:203
+msgid "The greedy part of the implementation will use this identifier."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:204
+msgid "Last visiting vertex before returning to start_vid."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "**max_processing_time**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205 ../../build/doc/TSP-family.rst:209
+#: ../../build/doc/TSP-family.rst:210 ../../build/doc/TSP-family.rst:211
+#: ../../build/doc/TSP-family.rst:234 ../../build/doc/TSP-family.rst:237
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "`+infinity`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:205
+msgid "Stop the annealing processing when the value is reached."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "**tries_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206 ../../build/doc/TSP-family.rst:207
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:232
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "`500`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:206
+msgid "Maximum number of times a neighbor(s) is searched in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "**max_changes_per_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "`60`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:207
+msgid "Maximum number of times the solution is changed in each temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid "**max_consecutive_non_changes**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208 ../../build/doc/TSP-family.rst:209
+msgid "`100`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:208
+msgid ""
+"Maximum number of consecutive times the solution is not changed in each "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "**initial_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:209
+msgid "Starting temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "**final_temperature**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "`0.1`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:210
+msgid "Ending temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "**cooling_factor**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid "`0.9`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:211
+msgid ""
+"Value between between 0 and 1 (not including) used to calculate the next "
+"temperature."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "**randomize**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "`true`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:212
+msgid "Choose the random seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:214
+msgid "true: Use current time as seed"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:215
+msgid ""
+"false: Use `1` as seed. Using this value will get the same results with the "
+"same data in each execution."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:225
+msgid "Description of the return columns"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:227
+msgid "Returns set of ``(seq, node, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:230
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:232
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:233
+msgid "Identifier of the node/coordinate/point."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:234
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid ""
+"Cost to traverse from the current ``node`` ito the next ``node`` in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:235
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:237
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "Aggregate cost from the ``node`` at ``seq = 1`` to the current node."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:238
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:245
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:248
+msgid "References"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:249
+msgid ""
+"`Simulated annaeling algorithm for beginners <http://www.theprojectspot.com"
+"/tutorial-post/simulated-annealing-algorithm-for-beginners/6>`_"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:251
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:252
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:255
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:256
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:257
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/aStar-family.po b/locale/ru/LC_MESSAGES/aStar-family.po
new file mode 100644
index 0000000..3364e02
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/aStar-family.po
@@ -0,0 +1,205 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/aStar-family.rst:13
+msgid "aStar - Family of functions"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:15
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic that allow it to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:19
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:20
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:21
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:34
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:36
+msgid ""
+"The A* (pronounced \"A Star\") algorithm is based on Dijkstra's algorithm "
+"with a heuristic, that is an estimation of the remaining cost from the "
+"vertex to the goal, that allows to solve most shortest path problems by "
+"evaluation only a sub-set of the overall graph. Running time: :math:`O((E + "
+"V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:46
+msgid "Heuristic"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:48
+msgid "Currently the heuristic functions available are:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:50
+msgid "0: :math:`h(v) = 0` (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:51
+msgid "1: :math:`h(v) = abs(max(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:52
+msgid "2: :math:`h(v) = abs(min(\\Delta x, \\Delta y))`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:53
+msgid "3: :math:`h(v) = \\Delta x * \\Delta x + \\Delta y * \\Delta y`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:54
+msgid "4: :math:`h(v) = sqrt(\\Delta x * \\Delta x + \\Delta y * \\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:55
+msgid "5: :math:`h(v) = abs(\\Delta x) + abs(\\Delta y)`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:57
+msgid "where :math:`\\Delta x = x_1 - x_0` and :math:`\\Delta y = y_1 - y_0`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:63 ../../build/doc/aStar-family.rst:76
+#: ../../build/doc/aStar-family.rst:89
+msgid "Factor"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:66
+msgid "Analysis 1"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:67
+msgid ""
+"Working with cost/reverse_cost as length in degrees, x/y in lat/lon: Factor "
+"= 1 (no need to change units)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:71
+msgid "Analysis 2"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:72
+msgid ""
+"Working with cost/reverse_cost as length in meters, x/y in lat/lon: Factor ="
+" would depend on the location of the points:"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "latitude"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:76 ../../build/doc/aStar-family.rst:89
+msgid "conversion"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78 ../../build/doc/aStar-family.rst:91
+msgid "45"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "1 longitude degree is 78846.81 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:78
+msgid "78846"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79 ../../build/doc/aStar-family.rst:92
+msgid "0"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "1 longitude degree is 111319.46 m"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:79
+msgid "111319"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:83
+msgid "Analysis 3"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:84
+msgid ""
+"Working with cost/reverse_cost as time in seconds, x/y in lat/lon: Factor: "
+"would depend on the location of the points and on the average speed say "
+"25m/s is the speed."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "1 longitude degree is (78846.81m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:91
+msgid "3153 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "1 longitude degree is (111319.46 m)/(25m/s)"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:92
+msgid "4452 s"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:98
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:100
+msgid ":ref:`pgr_aStar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:101
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:102
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:103
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:104
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:107
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:108
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:109
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/allpairs-family.po b/locale/ru/LC_MESSAGES/allpairs-family.po
new file mode 100644
index 0000000..9749ed9
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/allpairs-family.po
@@ -0,0 +1,996 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/allpairs-family.rst:14
+msgid "All Pairs - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:16
+msgid "The following functions work an all vertices pair combinations"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:33
+msgid "Performance"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "The following tests:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:36
+msgid "non server computer"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:37
+msgid "with AMD 64 CPU"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:38
+msgid "4G memory"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:39
+msgid "trusty"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:40
+msgid "posgreSQL version 9.3"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:43
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:45
+msgid "The following data was used"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:53
+msgid "Data processing was done with osm2pgrouting-alpha"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:66
+msgid "Results"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:68
+msgid "One"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:70
+msgid ""
+"This test is not with a bounding box The density of the passed graph is "
+"extremely low. For each <SIZE> 30 tests were executed to get the average The"
+" tested query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:83
+#: ../../build/doc/allpairs-family.rst:140
+msgid "The results of this tests are presented as:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:85
+msgid "is the number of edges given as input."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:86
+#: ../../build/doc/allpairs-family.rst:143
+msgid "is the total number of records in the query."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:87
+#: ../../build/doc/allpairs-family.rst:144
+msgid "is the density of the data :math:`\\dfrac{E}{V \\times (V-1)}`."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:88
+#: ../../build/doc/allpairs-family.rst:145
+msgid "is the number of records returned by the queries."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:89
+#: ../../build/doc/allpairs-family.rst:146
+msgid "is the average execution time in seconds of pgr_floydWarshall."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:90
+#: ../../build/doc/allpairs-family.rst:147
+msgid "is the average execution time in seconds of pgr_johnson."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "SIZE"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "EDGES"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "DENSITY"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "OUT ROWS"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Floyd-Warshall"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:94
+#: ../../build/doc/allpairs-family.rst:151
+msgid "Johnson"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+#: ../../build/doc/allpairs-family.rst:96
+msgid "500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.18E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "1346"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.14"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:96
+msgid "0.13"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+#: ../../build/doc/allpairs-family.rst:97
+msgid "1000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.36E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "2655"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.23"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:97
+msgid "0.18"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:98
+msgid "1500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.55E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "4110"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:98
+msgid "0.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+#: ../../build/doc/allpairs-family.rst:99
+msgid "2000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.73E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "5676"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:99
+msgid "0.56"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+#: ../../build/doc/allpairs-family.rst:100
+msgid "2500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.89E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "7177"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.84"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:100
+msgid "0.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+#: ../../build/doc/allpairs-family.rst:101
+msgid "3000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.07E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "8778"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "1.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:101
+msgid "0.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+#: ../../build/doc/allpairs-family.rst:102
+msgid "3500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "1.24E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "10526"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "2.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:102
+msgid "0.95"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+#: ../../build/doc/allpairs-family.rst:103
+msgid "4000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.41E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "12484"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "3.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:103
+msgid "1.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.58E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "14354"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "4.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:104
+msgid "1.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+#: ../../build/doc/allpairs-family.rst:105
+msgid "5000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.76E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "16503"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "6.05"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:105
+msgid "1.78"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+#: ../../build/doc/allpairs-family.rst:106
+msgid "5500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "1.93E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "18623"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "7.53"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:106
+msgid "2.03"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+#: ../../build/doc/allpairs-family.rst:107
+msgid "6000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.11E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "20710"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "8.47"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:107
+msgid "2.37"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+#: ../../build/doc/allpairs-family.rst:108
+msgid "6500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.28E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "22752"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "9.99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:108
+msgid "2.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+#: ../../build/doc/allpairs-family.rst:109
+msgid "7000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "2.46E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "24687"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "11.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:109
+msgid "3.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+#: ../../build/doc/allpairs-family.rst:110
+msgid "7500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "2.64E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "26861"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "13.94"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:110
+msgid "3.60"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+#: ../../build/doc/allpairs-family.rst:111
+msgid "8000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "2.83E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "29050"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "15.61"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:111
+msgid "4.09"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+#: ../../build/doc/allpairs-family.rst:112
+msgid "8500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "3.01E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "31693"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "17.43"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:112
+msgid "4.63"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+#: ../../build/doc/allpairs-family.rst:113
+msgid "9000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "3.17E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "33879"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "19.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:113
+msgid "5.34"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+#: ../../build/doc/allpairs-family.rst:114
+msgid "9500"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "3.35E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "36287"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "20.77"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:114
+msgid "6.24"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+#: ../../build/doc/allpairs-family.rst:115
+msgid "10000"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "3.52E-7"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "38491"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "23.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:115
+msgid "6.51"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:119
+msgid "Two"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:121
+msgid ""
+"This test is with a bounding box The density of the passed graph higher than"
+" of the Test One. For each <SIZE> 30 tests were executed to get the average "
+"The tested edge query is:"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:133
+msgid "The tested queries"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:142
+msgid "is the size of the bounding box."
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.001"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "44"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "0.0608"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+msgid "1197"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:153
+#: ../../build/doc/allpairs-family.rst:154
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.10"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.002"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "99"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "0.0251"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:154
+msgid "4330"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.003"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "223"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.0122"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+msgid "18849"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:155
+#: ../../build/doc/allpairs-family.rst:155
+msgid "0.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.004"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "358"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.0085"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+msgid "71834"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:156
+#: ../../build/doc/allpairs-family.rst:156
+msgid "0.16"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.005"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "470"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.0070"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "116290"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.22"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:157
+msgid "0.19"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.006"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "639"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.0055"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "207030"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:158
+msgid "0.27"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "843"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.0043"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "346930"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.64"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:159
+msgid "0.38"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.008"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "996"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.0037"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "469936"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.90"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:160
+msgid "0.49"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.009"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1146"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.0032"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "613135"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "1.26"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:161
+msgid "0.62"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.010"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1360"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.0027"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "849304"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "1.87"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:162
+msgid "0.82"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.011"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1573"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "0.0024"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1147101"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "2.65"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:163
+msgid "1.04"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1789"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "0.0021"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1483629"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "3.72"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:164
+msgid "1.35"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1975"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "0.0019"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1846897"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "4.86"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:165
+msgid "1.68"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.014"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2281"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "0.0017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2438298"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "7.08"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:166
+msgid "2.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2588"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "0.0015"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "3156007"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "10.28"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:167
+msgid "2.80"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.016"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "2958"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "0.0013"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "4090618"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "14.67"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:168
+msgid "3.76"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.017"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "3247"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "0.0012"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4868919"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "18.12"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:169
+msgid "4.48"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:174
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:176
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:177
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:178
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:181
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:182
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/allpairs-family.rst:183
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/bdAstar-family.po b/locale/ru/LC_MESSAGES/bdAstar-family.po
new file mode 100644
index 0000000..b2bd16b
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/bdAstar-family.po
@@ -0,0 +1,394 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Bidirectional A* - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:18
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:35
+msgid ""
+"Based on A* algorithm, the bidirectional search finds a shortest path from a"
+" starting vertex (``start_vid``) to an ending vertex (``end_vid``). It runs "
+"two simultaneous searches: one forward from the ``start_vid``, and one "
+"backward from the ``end_vid``, stopping when the two meet in the middle. "
+"This implementation can be used with a directed graph and an undirected "
+"graph."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:60
+msgid "It is expected to terminate faster than pgr_astar"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:63
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:78 ../../build/doc/bdAstar-family.rst:80
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:72
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:75
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:77
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:78
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79 ../../build/doc/bdAstar-family.rst:81
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:79
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:80
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:81
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:82
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:84
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:85
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:87
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:89
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:90
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:91
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:92
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:93
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:94
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96 ../../build/doc/bdAstar-family.rst:97
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:96
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:97
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:103
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/bdDijkstra-family.po b/locale/ru/LC_MESSAGES/bdDijkstra-family.po
new file mode 100644
index 0000000..67de3fa
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/bdDijkstra-family.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/bdDijkstra-family.rst:13
+msgid "Bidirectional Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:17
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:18
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:19
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:35
+msgid ""
+"Based on Dijkstra's algorithm, the bidirectional search finds a shortest "
+"path a starting vertex (``start_vid``) to an ending vertex (``end_vid``). It"
+" runs two simultaneous searches: one forward from the source, and one "
+"backward from the target, stopping when the two meet in the middle. This "
+"implementation can be used with a directed graph and an undirected graph."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:42
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:44
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:46
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:47
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:51
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:55
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:57
+msgid "Running time (worse case scenario): :math:`O((V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:58
+msgid ""
+"For large graphs where there is a path bewtween the starting vertex and "
+"ending vertex:"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:60
+msgid "It is expected to terminate faster than pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:63
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:66
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:67
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:68
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/components-family.po b/locale/ru/LC_MESSAGES/components-family.po
new file mode 100644
index 0000000..dbca49a
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/components-family.po
@@ -0,0 +1,750 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/components-family.rst:13
+msgid "Components - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:22
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:23
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:25
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:42
+msgid "The problem definition"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:45
+msgid "Connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:46
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:49
+#: ../../build/doc/components-family.rst:183
+#: ../../build/doc/components-family.rst:252
+#: ../../build/doc/components-family.rst:312
+msgid "**Notice**: This problem defines on an undirected graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:51
+#: ../../build/doc/components-family.rst:117
+#: ../../build/doc/components-family.rst:185
+#: ../../build/doc/components-family.rst:254
+#: ../../build/doc/components-family.rst:314
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:54
+msgid "pgr_connectedComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:56
+#: ../../build/doc/components-family.rst:122
+#: ../../build/doc/components-family.rst:190
+#: ../../build/doc/components-family.rst:259
+#: ../../build/doc/components-family.rst:319
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:58
+#: ../../build/doc/components-family.rst:124
+#: ../../build/doc/components-family.rst:192
+#: ../../build/doc/components-family.rst:261
+#: ../../build/doc/components-family.rst:321
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:60
+#: ../../build/doc/components-family.rst:126
+#: ../../build/doc/components-family.rst:194
+#: ../../build/doc/components-family.rst:263
+#: ../../build/doc/components-family.rst:323
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:61
+#: ../../build/doc/components-family.rst:127
+#: ../../build/doc/components-family.rst:195
+#: ../../build/doc/components-family.rst:264
+#: ../../build/doc/components-family.rst:324
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:63
+#: ../../build/doc/components-family.rst:129
+#: ../../build/doc/components-family.rst:197
+#: ../../build/doc/components-family.rst:266
+#: ../../build/doc/components-family.rst:326
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:65
+#: ../../build/doc/components-family.rst:199
+#: ../../build/doc/components-family.rst:268
+#: ../../build/doc/components-family.rst:328
+msgid "The weighted undirected graph, :math:`G(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:67
+#: ../../build/doc/components-family.rst:133
+#: ../../build/doc/components-family.rst:201
+#: ../../build/doc/components-family.rst:270
+#: ../../build/doc/components-family.rst:330
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:69
+#: ../../build/doc/components-family.rst:203
+#: ../../build/doc/components-family.rst:272
+#: ../../build/doc/components-family.rst:332
+msgid ":math:`V = source \\cup target`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:72
+#: ../../build/doc/components-family.rst:137
+#: ../../build/doc/components-family.rst:206
+#: ../../build/doc/components-family.rst:275
+#: ../../build/doc/components-family.rst:335
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:74
+#: ../../build/doc/components-family.rst:208
+#: ../../build/doc/components-family.rst:277
+#: ../../build/doc/components-family.rst:337
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} \\\\ \\cup &\\{(target_i, source_i, cost_i) \\text{ when } cost"
+" >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} \\\\ \\cup &\\{(source_i, target_i, reverse\\_cost_i) \\text{ when }"
+" reverse\\_cost_i >=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:77
+#: ../../build/doc/components-family.rst:142
+#: ../../build/doc/components-family.rst:211
+#: ../../build/doc/components-family.rst:280
+#: ../../build/doc/components-family.rst:340
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:79
+#: ../../build/doc/components-family.rst:144
+#: ../../build/doc/components-family.rst:213
+#: ../../build/doc/components-family.rst:282
+#: ../../build/doc/components-family.rst:342
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:81
+#: ../../build/doc/components-family.rst:146
+#: ../../build/doc/components-family.rst:215
+#: ../../build/doc/components-family.rst:284
+#: ../../build/doc/components-family.rst:344
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:89
+#: ../../build/doc/components-family.rst:154
+#: ../../build/doc/components-family.rst:223
+msgid ":math:`\\boldsymbol{\\pi} = \\{(component_i, n\\_seq_i, node_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:298
+#: ../../build/doc/components-family.rst:358
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:92
+msgid ":math:`component_i = \\min \\{node_j | node_j \\in component_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:93
+#: ../../build/doc/components-family.rst:158
+#: ../../build/doc/components-family.rst:227
+msgid ""
+":math:`n\\_seq_i` is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:94
+#: ../../build/doc/components-family.rst:159
+msgid ":math:`node_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:95
+#: ../../build/doc/components-family.rst:160
+#: ../../build/doc/components-family.rst:229
+#: ../../build/doc/components-family.rst:296
+#: ../../build/doc/components-family.rst:356
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:97
+#: ../../build/doc/components-family.rst:162
+#: ../../build/doc/components-family.rst:231
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:98
+#: ../../build/doc/components-family.rst:163
+#: ../../build/doc/components-family.rst:298
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+#: ../../build/doc/components-family.rst:170
+#: ../../build/doc/components-family.rst:239
+#: ../../build/doc/components-family.rst:301
+#: ../../build/doc/components-family.rst:361
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:101
+msgid "The first component is composed of nodes ``0``, ``1`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:102
+msgid "The second component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:103
+msgid "The third component is composed of nodes ``2`` and ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:111
+msgid "Strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:112
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:115
+msgid "**Notice**: This problem defines on a directed graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:120
+msgid "pgr_strongComponentsV(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:131
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:135
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:139
+msgid ""
+":math:`E = \\begin{cases} &\\{(source_i, target_i, cost_i) \\text{ when } "
+"cost >=0 \\} &\\quad \\text{ if } reverse\\_cost = \\varnothing \\\\ \\\\ "
+"&\\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} \\\\ \\cup "
+"&\\{(target_i, source_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} &\\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:157
+#: ../../build/doc/components-family.rst:226
+msgid ":math:`component_i = \\min {node_j | node_j \\in component_i}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:166
+msgid "The first component is composed of nodes ``1``, ``2`` and ``4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:167
+msgid "The second component is composed of node ``0``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:168
+msgid "The third component is composed of node ``3``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:169
+msgid "The fourth component is composed of node ``5``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:170
+msgid "The fifth component is composed of node ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:177
+msgid "Biconnected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:178
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:188
+msgid "pgr_biconnectedComponents(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:228
+msgid ":math:`edge_i \\in component_i`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:232
+#: ../../build/doc/components-family.rst:358
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:235
+msgid ""
+"The first component is composed of edges ``1 - 2``, ``0 - 1`` and ``0 - 2``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:236
+msgid ""
+"The second component is composed of edges ``2 - 4``, ``2 - 3`` and ``3 - "
+"4``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:237
+msgid "The third component is composed of edge ``5 - 6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:238
+msgid "The fourth component is composed of edge ``6 - 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:239
+msgid ""
+"The fifth component is composed of edges ``8 - 9``, ``9 - 10`` and ``8 - "
+"10``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:246
+msgid "Articulation Points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:247
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:257
+msgid "pgr_articulationPoints(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:292
+msgid ":math:`\\boldsymbol{\\pi} = \\{node_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:295
+msgid ":math:`node_i` is an articulation point."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:301
+msgid "Articulation points are nodes ``2`` and ``6``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:308
+msgid "Bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:309
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:317
+msgid "pgr_bridges(:math:`sql`)"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:352
+msgid ":math:`\\boldsymbol{\\pi} = \\{edge_i\\}`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:355
+msgid ":math:`edge_i` is an edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:361
+msgid "Bridges are edges ``5 <--> 6`` and ``6 <--> 7``."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:370
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:372
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:375
+#: ../../build/doc/components-family.rst:405
+#: ../../build/doc/components-family.rst:421
+#: ../../build/doc/components-family.rst:440
+#: ../../build/doc/components-family.rst:458
+#: ../../build/doc/components-family.rst:474
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:378
+#: ../../build/doc/components-family.rst:379
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:377
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:378
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:379
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+#: ../../build/doc/components-family.rst:384
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:380
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:382
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:384
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:386
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:390
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:392
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:393
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:402
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:405
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:407
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:416
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:418
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:444
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:423
+#: ../../build/doc/components-family.rst:442
+#: ../../build/doc/components-family.rst:460
+#: ../../build/doc/components-family.rst:476
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:443
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:443
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:461
+#: ../../build/doc/components-family.rst:477
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:424
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:425
+#: ../../build/doc/components-family.rst:444
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:426
+#: ../../build/doc/components-family.rst:461
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:435
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:437
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:443
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:445
+#: ../../build/doc/components-family.rst:477
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:453
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:455
+#: ../../build/doc/components-family.rst:471
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:469
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:483
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:486
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:487
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:488
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/contraction-family.po b/locale/ru/LC_MESSAGES/contraction-family.po
new file mode 100644
index 0000000..182343c
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/contraction-family.po
@@ -0,0 +1,745 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/contraction-family.rst:14
+msgid "Contraction - Family of functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:21
+msgid ":ref:`pgr_contractGraph`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:29
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:31
+msgid ""
+"In big graphs, like the road graphs, or electric networks, graph contraction"
+" can be used to speed up some graph algorithms. Contraction reduces the size"
+" of the graph by removing some of the vertices and edges and, for example, "
+"might add edges that represent a sequence of original edges decreasing the "
+"total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:33
+msgid ""
+"This implementation gives a flexible framework for adding contraction "
+"algorithms in the future, currently, it supports two algorithms:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:35
+#: ../../build/doc/contraction-family.rst:46
+msgid "Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:36
+#: ../../build/doc/contraction-family.rst:166
+msgid "Linear contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:38
+msgid "Allowing the user to:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:40
+msgid "Forbid contraction on a set of nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:41
+msgid ""
+"Decide the order of the contraction algorithms and set the maximum number of"
+" times they are to be executed."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:43
+msgid "UNDER DISCUSSION: Forbid contraction on a set of edges"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:47
+msgid "In the algorithm, dead end contraction is represented by 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:50
+msgid "Dead end nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:52
+msgid ""
+"The definition of a dead end node is different for a directed and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:54
+msgid "In case of a undirected graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:56
+msgid "The number of adjacent vertices is 1."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:58
+msgid "In case of an directed graph, a node is considered a dead end node if"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:60
+msgid "There are no outgoing edges and has at least one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:61
+msgid "There is one incoming and one outgoing edge with the same identifier."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:64
+#: ../../build/doc/contraction-family.rst:178
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:65
+msgid "The green node ``B`` represents a dead end node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:66
+msgid "The node ``A`` is the only node connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:67
+#: ../../build/doc/contraction-family.rst:181
+msgid ""
+"Node ``A`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:68
+#: ../../build/doc/contraction-family.rst:183
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:86
+msgid "Operation: Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:88
+msgid ""
+"The dead end contraction will stop until there are no more dead end nodes. "
+"For example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:91
+#: ../../build/doc/contraction-family.rst:208
+msgid ""
+"Node ``A`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:92
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:93
+msgid "Node ``B`` is the only node connecting to ``C``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:94
+msgid "The green node ``C`` represents a `Dead End` node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:113
+msgid ""
+"After contracting ``C``, node ``B`` is now a `Dead End` node and is "
+"contracted:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:129
+msgid "Node ``B`` gets contracted"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:143
+msgid "Nodes ``B`` and ``C`` belong to node ``A``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:148
+msgid "Not Dead End nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:150
+msgid "In this graph ``B`` is not a `dead end` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:167
+msgid "In the algorithm, linear contraction is represented by 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:170
+msgid "Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:172
+msgid "A node is considered a linear node if satisfies the following:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:174
+msgid "The number of adjacent vertices are 2."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:175
+msgid "Should have at least one incoming edge and one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:179
+msgid "The green node ``B`` represents a linear node"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:180
+msgid "The nodes ``A`` and ``C`` are the only nodes connecting to ``B``."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:182
+msgid ""
+"Node ``C`` is part of the rest of the graph and has an unlimited number of "
+"incoming and outgoing edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:203
+msgid "Operation: Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:205
+msgid ""
+"The linear contraction will stop until there are no more linear nodes. For "
+"example from the following graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:209
+msgid ""
+"Node ``B`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:210
+msgid ""
+"Node ``C`` is connected to the rest of the graph with one incoming edge and "
+"one outgoing edge."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:211
+msgid ""
+"Node ``D`` is connected to the rest of the graph by an unlimited number of "
+"edges."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:212
+msgid "The green nodes ``B`` and ``C`` represents `Linear` nodes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:234
+msgid ""
+"After contracting ``B``, a new edge gets inserted between ``A`` and ``C`` "
+"which is represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:254
+msgid "Node ``C`` is `linear node` and gets contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:272
+msgid ""
+"Nodes ``B`` and ``C`` belong to edge connecting ``A`` and ``D`` which is "
+"represented by red color."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:275
+msgid "Not Linear nodes"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:277
+msgid "In this graph ``B`` is not a `linear` node."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:298
+msgid "The cycle"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:300
+msgid ""
+"Contracting a graph, can be done with more than one operation. The order of "
+"the operations affect the resulting contracted graph, after applying one "
+"operation, the set of vertices that can be contracted by another operation "
+"changes."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:302
+msgid ""
+"This implementation, cycles ``max_cycles`` times through "
+"``operations_order`` ."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:315
+msgid "Contracting Sample Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:317
+msgid ""
+"In this section, building and using a contracted graph will be shown by "
+"example."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:319
+msgid "The :doc:`sampledata` for an undirected graph is used"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:320
+msgid "a dead end operation first followed by a linear operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:322
+msgid "The original graph:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:326
+msgid "After doing a dead end contraction operation:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:330
+msgid "Doing a linear contraction operation to the graph above"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:335
+msgid ""
+"There are five cases, in this documentation, which arise when calculating "
+"the shortest path between a given source and target. In this examples, "
+"``pgr_dijkstra`` is used."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:338
+msgid "**Case 1**: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:339
+msgid ""
+"**Case 2**: Source belongs to a contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:340
+msgid ""
+"**Case 3**: Source belongs to a vertex subgraph, while target belongs to an "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:341
+msgid ""
+"**Case 4**: Source belongs to a contracted graph, while target belongs to an"
+" vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:342
+msgid ""
+"**Case 5**: The path contains a new edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:345
+msgid "Construction of the graph in the database"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:348
+msgid "Original Data"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:349
+msgid ""
+"The following query shows the original data involved in the contraction "
+"operation."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:356
+msgid "Contraction Results"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:361
+msgid ""
+"The above results do not represent the contracted graph. They represent the "
+"changes done to the graph after applying the contraction algorithm. We can "
+"see that vertices like 6 and 11 do not appear in the contraction results "
+"because they were not affected by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:364
+msgid "step 1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:365
+msgid ""
+"Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` "
+"tables:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:368
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:370
+msgid "The vertices set belonging to the vertex/edge"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+#: ../../build/doc/contraction-family.rst:372
+msgid "**is_contracted**"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:371
+msgid ""
+"On a `vertex` table: when ``true`` the vertex is contracted, so is not part "
+"of the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:372
+msgid ""
+"On an `edge` table: when ``true`` the edge was generated by the contraction "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:375
+msgid "Using the following queries:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:382
+msgid "step 2"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:383
+msgid ""
+"For simplicity, in this documentation, store the results of the call to "
+"pgr_contractGraph in a temporary table"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:390
+msgid "step 3"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:391
+msgid ""
+"Update the `vertex` and `edge` tables using the results of the call to "
+"pgr_contraction"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:393
+msgid ""
+"In `edge_table_vertices_pgr.is_contracted` indicate the vertices that are "
+"contracted."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:399
+msgid ""
+"Add to `edge_table_vertices_pgr.contracted_vertices` the contracted "
+"vertices belonging to the vertices."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:405
+msgid "Insert the new edges generated by pgr_contractGraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:412
+msgid "step 3.1"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:413
+msgid "Verify visually the updates."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:415
+msgid "On the `edge_table_vertices_pgr`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:421
+msgid "On the `edge_table`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:427
+msgid ""
+"vertices that belong to the contracted graph are the non contracted vertices"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:434
+msgid "case 1: Both source and target belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:435
+msgid ""
+"Inspecting the contracted graph above, vertex 3 and vertex 11 are part of "
+"the contracted graph. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:437
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:438
+#: ../../build/doc/contraction-family.rst:452
+#: ../../build/doc/contraction-family.rst:469
+#: ../../build/doc/contraction-family.rst:485
+#: ../../build/doc/contraction-family.rst:507
+msgid ""
+"when selecting the edges, only edges that have the source and the target in "
+"that set are the edges belonging to the contracted graph, that is done in "
+"the WHERE clause."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:440
+msgid ""
+"Visually, looking at the original graph, going from 3 to 11: 3 -> 6 -> 11, "
+"and in the contracted graph, it is also 3 -> 6 -> 11. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:448
+msgid ""
+"case 2: Source belongs to the contracted graph, while target belongs to a "
+"edge subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:452
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 1 belongs to the contracted subgraph of edge 19. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:450
+msgid ""
+"expand1 holds the contracted vertices of the edge where vertex 1 belongs. "
+"(belongs to edge 19)."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:451
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"also the contracted vertices of edge 19."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:454
+msgid ""
+"Visually, looking at the original graph, going from 3 to 1: 3 -> 2 -> 1, and"
+" in the contracted graph, it is also 3 -> 2 -> 1. The results, on the "
+"contracted graph match the results as if it was done on the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:463
+msgid ""
+"case 3: Source belongs to a vertex subgraph, while target belongs to an edge"
+" subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:464
+msgid ""
+"Inspecting the contracted graph above, vertex 7 belongs to the contracted "
+"subgraph of vertex 5 and vertex 13 belongs to the contracted subgraph of "
+"edge 21. In the following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:466
+#: ../../build/doc/contraction-family.rst:483
+msgid ""
+"expand7 holds the contracted vertices of vertex where vertex 7 belongs. "
+"(belongs to vertex 5)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:467
+msgid ""
+"expand13 holds the contracted vertices of edge where vertex 13 belongs. "
+"(belongs to edge 21)"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:468
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"contracted vertices of vertex 5 and contracted vertices of edge 21."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:471
+msgid ""
+"Visually, looking at the original graph, going from 7 to 13: 7 -> 8 -> 5 -> "
+"10 -> 13, and in the contracted graph, it is also 7 -> 8 -> 5 -> 10 -> 13. "
+"The results, on the contracted graph match the results as if it was done on "
+"the original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:480
+msgid ""
+"case 4: Source belongs to the contracted graph, while target belongs to an "
+"vertex subgraph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:481
+msgid ""
+"Inspecting the contracted graph above, vertex 3 is part of the contracted "
+"graph and vertex 7 belongs to the contracted subgraph of vertex 5. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:484
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph and "
+"the contracted vertices of vertex 5."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:487
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, but in the contracted graph, it is 3 -> 5 -> 8 -> 7. The results, on "
+"the contracted graph do not match the results as if it was done on the "
+"original graph. This is because the path contains edge 19 which is added by "
+"the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:495
+msgid "case 5: The path contains an edge added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:496
+msgid ""
+"In the previous example we can see that the path from vertex 3 to vertex 7 "
+"contains an edge which is added by the contraction algorithm."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:502
+msgid ""
+"Inspecting the contracted graph above, edge 19 should be expanded. In the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:504
+msgid "first_dijkstra holds the results of the dijkstra query."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:505
+msgid ""
+"edges_to_expand holds the edges added by the contraction algorithm and "
+"included in the path."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:506
+msgid ""
+"vertices_in_graph hold the vertices that belong to the contracted graph, "
+"vertices of the contracted solution and the contracted vertices of the edges"
+" added by the contraction algorithm and included in the contracted solution."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:509
+msgid ""
+"Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8"
+" -> 7, and in the contracted graph, it is also 3 -> 2 -> 5 -> 8 -> 7. The "
+"results, on the contracted graph match the results as if it was done on the "
+"original graph."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:517
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:519
+msgid ""
+"http://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:520
+msgid "http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:521
+msgid ""
+"The queries use :ref:`pgr_contractGraph` function and the :doc:`sampledata` "
+"network."
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:524
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:525
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/contraction-family.rst:526
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/cost-category.po b/locale/ru/LC_MESSAGES/cost-category.po
new file mode 100644
index 0000000..efea606
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/cost-category.po
@@ -0,0 +1,178 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost-category.rst:13
+msgid "Cost - Category"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:17
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:18
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:20
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:21
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:30
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:34
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:36
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:38
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:39
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:40
+msgid ""
+"Returns the sum of the costs of the resulting path(s) for pair combination "
+"of nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:44
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:46
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:48
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:50
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:52
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:54
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:56
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:58
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:60
+msgid "Any duplicated value in the `start_vids` or in `end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:62
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:64
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:65
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/costMatrix-category.po b/locale/ru/LC_MESSAGES/costMatrix-category.po
new file mode 100644
index 0000000..ad36b5e
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/costMatrix-category.po
@@ -0,0 +1,237 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/costMatrix-category.rst:13
+msgid "Cost Matrix - Category"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:17
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:18
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:19
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:20
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:21
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:40
+msgid "General Information"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:43
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:45
+msgid ""
+":ref:`tsp` needs as input a symmetric cost matrix and no edge `(u, v)` must "
+"value :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:47
+msgid ""
+"This collection of functions will return a cost matrix in form of a table."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:53
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:55
+msgid "Can be used as input to :ref:`pgr_tsp`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:57
+msgid ""
+"when the resulting matrix is symmetric and there is no :math:`\\infty` "
+"value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:58
+msgid "It will be the users responsibility to make the matrix symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:60
+msgid "By using geometric or harmonic average of the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:61
+msgid "By using max or min the non symmetric values."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:62
+msgid ""
+"By setting the upper triangle to be the mirror image of the lower triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:63
+msgid ""
+"By setting the lower triangle to be the mirror image of the upper triangle."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:65
+msgid "It is also the users responsibility to fix an :math:`\\infty` value."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:67
+msgid "Each function works as part of the family it belongs to."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:68
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:69
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:70
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:71
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:73
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:75
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:77
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:79
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:81
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:83
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:85
+msgid ""
+"Depending on the function and its parameters, the results can be symmetric."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:87
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:89
+msgid "Any duplicated value in the `start_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:91
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:93
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:94
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:96
+msgid "Running time: approximately :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:101
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:103
+msgid ":ref:`pgr_tsp`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:106
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:107
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:108
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/cost_result.po b/locale/ru/LC_MESSAGES/cost_result.po
new file mode 100644
index 0000000..cfc1232
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/cost_result.po
@@ -0,0 +1,92 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/cost_result.rst:13
+msgid "pgr_costResult[]"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:19 ../../build/doc/cost_result.rst:52
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:21
+msgid ""
+"``pgr_costResult[]`` — A set of records to describe a path result with cost "
+"attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:25 ../../build/doc/cost_result.rst:58
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:37 ../../build/doc/cost_result.rst:71
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:38 ../../build/doc/cost_result.rst:73
+msgid "generic name, to be specified by the function, typically the node id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:39 ../../build/doc/cost_result.rst:74
+msgid "generic name, to be specified by the function, typically the edge id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:40 ../../build/doc/cost_result.rst:75
+msgid "cost attribute"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:46
+msgid "pgr_costResult3[] - Multiple Path Results with Cost"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:54
+msgid ""
+"``pgr_costResult3[]`` — A set of records to describe a path result with cost"
+" attribute."
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:72
+msgid "generic name, to be specified by the function, typically the path id"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:79
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:80
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:81
+msgid "Replaces ``path_result``"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:87
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/cost_result.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/dijkstra-family.po b/locale/ru/LC_MESSAGES/dijkstra-family.po
new file mode 100644
index 0000000..a9fa495
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/dijkstra-family.po
@@ -0,0 +1,262 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/dijkstra-family.rst:13
+msgid "Dijkstra - Family of functions"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:17
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:18
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:19
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:20
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:21
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:22
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:39
+msgid "The problem definition (Advanced documentation)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:42
+msgid "Given the following query:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:45
+msgid "pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:47
+msgid ""
+"where :math:`sql = \\{(id_i, source_i, target_i, cost_i, "
+"reverse\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:49
+msgid "and"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:51
+msgid ":math:`source = \\bigcup source_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:52
+msgid ":math:`target = \\bigcup target_i`,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:54
+msgid "The graphs are defined as follows:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:57
+msgid "Directed graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:58
+msgid "The weighted directed graph, :math:`G_d(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:60
+#: ../../build/doc/dijkstra-family.rst:79
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:62
+msgid ":math:`V = source \\cup target \\cup {start_{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:64
+#: ../../build/doc/dijkstra-family.rst:84
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:66
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{if } reverse\\_cost = \\varnothing \\\\"
+" \\text{ } \\text{ } & \\quad \\text{ } \\\\ \\text{ } \\{(source_i, "
+"target_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup"
+" \\{(target_i, source_i, reverse\\_cost_i) \\text{ when } "
+"reverse\\_cost_i>=0 \\} & \\quad \\text{if } reverse\\_cost \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:76
+msgid "Undirected graph"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:77
+msgid "The weighted undirected graph, :math:`G_u(V,E)`, is definied by:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:81
+msgid ":math:`V = source \\cup target \\cup {start_v{vid}} \\cup {end_{vid}}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:86
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, cost_i) \\text{"
+" when } cost >=0 \\} & \\quad \\text{ } \\\\ \\cup \\{(target_i, "
+"source_i, cost_i) \\text{ when } cost >=0 \\} & \\quad \\text{ if } "
+"reverse\\_cost = \\varnothing \\\\ \\text{ } \\text{ } & \\text{ } \\\\ "
+"\\text{ } \\{(source_i, target_i, cost_i) \\text{ when } cost >=0 \\} & "
+"\\text{ } \\\\ \\cup \\{(target_i, source_i, cost_i) \\text{ when } cost "
+">=0 \\} & \\text{ } \\\\ \\cup \\{(target_i, source_i, reverse\\_cost_i) "
+"\\text{ when } reverse\\_cost_i >=0)\\} & \\text{ } \\\\ \\cup "
+"\\{(source_i, target_i, reverse\\_cost_i) \\text{ when } reverse\\_cost_i "
+">=0)\\} & \\quad \\text{ if } reverse\\_cost \\neq \\varnothing \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:99
+msgid "The problem"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:100
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:102
+msgid ":math:`start_{vid} \\in V` a starting vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:103
+msgid ":math:`end_{vid} \\in V` an ending vertex"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:104
+msgid ""
+":math:`G(V,E) = \\begin{cases} G_d(V,E) & \\quad \\text{ if6 } directed = "
+"true \\\\ G_u(V,E) & \\quad \\text{ if5 } directed = false \\\\ "
+"\\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:109
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:118
+msgid ""
+":math:`\\boldsymbol{\\pi} = \\{(path\\_seq_i, node_i, edge_i, cost_i, "
+"agg\\_cost_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:131
+msgid "where:"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:121
+msgid ":math:`path\\_seq_i = i`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:122
+msgid ":math:`path\\_seq_{| \\pi |} = | \\pi |`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:123
+msgid ":math:`node_i \\in V`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:124
+msgid ":math:`node_1 = start_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:125
+msgid ":math:`node_{| \\pi |} = end_{vid}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:126
+msgid ":math:`\\forall i \\neq | \\pi |, \\quad (node_i, node_{i+1}, cost_i) \\in E`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:127
+msgid ""
+":math:`edge_i = \\begin{cases} id_{(node_i, node_{i+1},cost_i)} &\\quad "
+"\\text{when } i \\neq | \\pi | \\\\ -1 &\\quad \\text{when } i = | \\pi | "
+"\\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:128
+msgid ":math:`cost_i = cost_{(node_i, node_{i+1})}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:129
+msgid ""
+":math:`agg\\_cost_i = \\begin{cases} 0 &\\quad \\text{when } i = 1 "
+"\\\\ \\displaystyle\\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\\quad "
+"\\text{when } i \\neq 1 \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:137
+msgid ""
+"In other words: The algorithm returns a the shortest path between "
+":math:`start_{vid}` and :math:`end_{vid}` , if it exists, in terms of a "
+"sequence of nodes and of edges,"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:134
+msgid ""
+":math:`path\\_seq` indicates the relative position in the path of the "
+":math:`node` or :math:`edge`."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:135
+msgid ""
+":math:`cost` is the cost of the edge to be used to go to the next node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:136
+msgid ""
+":math:`agg\\_cost` is the cost from the :math:`start_{vid}` up to the node."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:139
+msgid "If there is no path, the resulting set is empty."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:143
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:146
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:147
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:148
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/drivingDistance-category.po b/locale/ru/LC_MESSAGES/drivingDistance-category.po
new file mode 100644
index 0000000..a71b4c7
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/drivingDistance-category.po
@@ -0,0 +1,52 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/drivingDistance-category.rst:14
+msgid "Driving Distance - Category"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:18
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:19
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:20
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:22
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:23
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:36
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:39
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:40
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:41
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/flow-family.po b/locale/ru/LC_MESSAGES/flow-family.po
new file mode 100644
index 0000000..a000199
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/flow-family.po
@@ -0,0 +1,331 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Flow - Family of functions"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:19
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:23
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:24
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:45
+msgid "Flow Functions General Information"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:51
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:52
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:53
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:54
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:56
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:58
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:59
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:61
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:63
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:64
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:66
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:67
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:72
+msgid ""
+":ref:`pgr_maxFlow <pgr_maxFlow>` is the maximum Flow and that maximum is "
+"guaranteed to be the same on the functions :ref:`pgr_pushRelabel "
+"<pgr_pushRelabel>`, :ref:`pgr_edmondsKarp <pgr_edmondsKarp>`, "
+":ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, but the actual flow "
+"through each edge may vary."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:77
+msgid "Problem definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:79
+msgid ""
+"A flow network is a directed graph where each edge has a capacity and a "
+"flow. The flow through an edge must not exceed the capacity of the edge. "
+"Additionally, the incoming and outgoing flow of a node must be equal except "
+"the for source which only has outgoing flow, and the destination(sink) which"
+" only has incoming flow."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:83
+msgid ""
+"Maximum flow algorithms calculate the maximum flow through the graph and the"
+" flow of each edge."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:85
+msgid ""
+"The maximum flow through the graph is guaranteed to be the same with all "
+"implementations, but the actual flow through each edge may vary. Given the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:89
+msgid "pgr_maxFlow :math:`(edges\\_sql, source\\_vertex, sink\\_vertex)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:91
+msgid ""
+"where :math:`edges\\_sql = \\{(id_i, source_i, target_i, capacity_i, "
+"reverse\\_capacity_i)\\}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:94
+msgid "Graph definition"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:95
+msgid "The weighted directed graph, :math:`G(V,E)`, is defined as:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:97
+msgid "the set of vertices :math:`V`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:99
+msgid ""
+":math:`source\\_vertex \\cup sink\\_vertex \\bigcup source_i \\bigcup "
+"target_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:101
+msgid "the set of edges :math:`E`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:103
+msgid ""
+":math:`E = \\begin{cases} \\text{ } \\{(source_i, target_i, capacity_i) "
+"\\text{ when } capacity > 0 \\} & \\quad \\text{ if } reverse\\_capacity = "
+"\\varnothing \\\\ \\text{ } & \\quad \\text{ } \\\\ \\{(source_i, target_i, "
+"capacity_i) \\text{ when } capacity > 0 \\} & \\text{ } \\\\ \\cup "
+"\\{(target_i, source_i, reverse\\_capacity_i) \\text{ when } "
+"reverse\\_capacity_i > 0)\\} & \\quad \\text{ if } reverse\\_capacity \\neq "
+"\\varnothing \\\\ \\end{cases}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:111
+msgid "Maximum flow problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:112
+msgid "Given:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:115
+msgid ":math:`G(V,E)`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:116
+msgid ":math:`source\\_vertex \\in V` the source vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:117
+msgid ":math:`sink\\_vertex \\in V` the sink vertex"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:119
+msgid "Then:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:121
+msgid ":math:`pgr\\_maxFlow(edges\\_sql, source, sink) = \\boldsymbol{\\Phi}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:123
+msgid ""
+":math:`\\boldsymbol{\\Phi} = {(id_i, edge\\_id_i, source_i, target_i, "
+"flow_i, residual\\_capacity_i)}`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:125
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:127
+msgid ""
+":math:`\\boldsymbol{\\Phi}` is a subset of the original edges with their "
+"residual capacity and flow. The maximum flow through the graph can be "
+"obtained by aggregating on the source or sink and summing the flow from/to "
+"it. In particular:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:129
+msgid ":math:`id_i = i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:130
+msgid ":math:`edge\\_id = id_i` in edges_sql"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:131
+msgid ":math:`residual\\_capacity_i = capacity_i - flow_i`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:135
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:137
+msgid "https://en.wikipedia.org/wiki/Maximum_flow_problem"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/geom_result.po b/locale/ru/LC_MESSAGES/geom_result.po
new file mode 100644
index 0000000..e2d89a1
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/geom_result.po
@@ -0,0 +1,74 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/geom_result.rst:13
+msgid "pgr_geomResult[]"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:21
+msgid ""
+"``pgr_geomResult[]`` — A set of records to describe a path result with "
+"geometry attribute."
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:25
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:37
+msgid "sequential ID indicating the path order"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:38 ../../build/doc/geom_result.rst:39
+msgid "generic name, to be specified by the function"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:40
+msgid "geometry attribute"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:44
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:45
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:46
+msgid "Replaces ``geoms``"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:50
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:52
+msgid ":ref:`introduction`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:56
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:57
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/geom_result.rst:58
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/index.po b/locale/ru/LC_MESSAGES/index.po
new file mode 100644
index 0000000..44ac3e4
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/index.po
@@ -0,0 +1,306 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/index.rst:14
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/index.rst:16
+msgid ""
+"pgRouting extends the `PostGIS <http://postgis.net>`_/`PostgreSQL "
+"<http://postgresql.org>`_ geospatial database to provide geospatial routing "
+"and other network analysis functionality."
+msgstr ""
+
+#: ../../build/doc/index.rst:18
+msgid "This is the manual for pgRouting |release|."
+msgstr ""
+
+#: ../../build/doc/index.rst:24
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_. Feel "
+"free to use this material any way you like, but we ask that you attribute "
+"credit to the pgRouting Project and wherever possible, a link back to "
+"http://pgrouting.org. For other licenses used in pgRouting see the "
+":ref:`license` page."
+msgstr ""
+
+#: ../../build/doc/index.rst:27
+msgid "General"
+msgstr ""
+
+#: ../../build/doc/index.rst:37
+msgid ":doc:`sampledata` that is used in the examples of this manual."
+msgstr ""
+
+#: ../../build/doc/index.rst:45
+msgid "Pgrouting Concepts"
+msgstr ""
+
+#: ../../build/doc/index.rst:54
+msgid "Reference"
+msgstr ""
+
+#: ../../build/doc/index.rst:55
+msgid ":ref:`pgr_version` - to get pgRouting's version information."
+msgstr ""
+
+#: ../../build/doc/index.rst:64
+msgid ":ref:`Data Types <data_types>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:67
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:68
+msgid ""
+":ref:`pgr_costResult3[]<type_cost_result3>` - A set of records to describe a"
+" path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:69
+msgid ""
+":ref:`pgr_geomResult<type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/index.rst:78
+msgid ":ref:`Topology Functions <topology_functions>`"
+msgstr ""
+
+#: ../../build/doc/index.rst:80
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/index.rst:81
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/index.rst:82
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/index.rst:83
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/index.rst:84
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/index.rst:93
+msgid ":ref:`Routing functions <routing_functions>`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:4
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:6
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:7
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:9
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:11
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:13
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:16
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:22
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:32
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/index.rst:108
+msgid "Available Functions but not official pgRouting functions"
+msgstr ""
+
+#: ../../build/doc/index.rst:110
+msgid ":ref:`Stable`"
+msgstr ""
+
+#: ../../build/doc/index.rst:111
+msgid ":ref:`proposed`"
+msgstr ""
+
+#: ../../build/doc/index.rst:121
+msgid ":ref:`Change Log <change_log>`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:3
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:4
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:5
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:6
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:7
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:8
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:9
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:10
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:11
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:12
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:13
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:14
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:16
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:17
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/index.rst:135
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/index.rst:136
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/index.rst:137
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgRouting-concepts.po b/locale/ru/LC_MESSAGES/pgRouting-concepts.po
new file mode 100644
index 0000000..34885ba
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgRouting-concepts.po
@@ -0,0 +1,1071 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "pgRouting Concepts"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:0
+msgid "Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "Getting Started"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid ""
+"This is a simple guide to walk you through the steps of getting started with"
+" pgRouting. In this guide we will cover:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:32
+msgid "Create a routing Database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:34
+msgid ""
+"The first thing we need to do is create a database and load pgrouting in the"
+" database. Typically you will create a database for each project. Once you "
+"have a database to work in, your can load your data and build your "
+"application in that database. This makes it easy to move your project later "
+"if you want to to say a production server."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:40
+msgid "For Postgresql 9.2 and later versions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:51
+msgid "Load Data"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:53
+msgid ""
+"How you load your data will depend in what form it comes it. There are "
+"various OpenSource tools that can help you, like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:56
+msgid ""
+"this is a tool for loading OSM data into postgresql with pgRouting "
+"requirements"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:57
+msgid "this is the postgresql shapefile loader"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:58
+msgid "this is a vector data conversion utility"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:59
+msgid "this is a tool for loading OSM data into postgresql"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:61
+msgid ""
+"So these tools and probably others will allow you to read vector data so "
+"that you may then load that data into your database as a table of some kind."
+" At this point you need to know a little about your data structure and "
+"content. One easy way to browse your new data table is with pgAdmin3 or "
+"phpPgAdmin."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:69
+msgid "Build a Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:71
+msgid ""
+"Next we need to build a topology for our street data. What this means is "
+"that for any given edge in your street data the ends of that edge will be "
+"connected to a unique node and to other edges that are also connected to "
+"that same unique node. Once all the edges are connected to nodes we have a "
+"graph that can be used for routing with pgrouting. We provide a tool that "
+"will help with this:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:77
+msgid "this step is not needed if data is loaded with `osm2pgrouting`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:83
+msgid ":ref:`pgr_create_topology`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:88
+msgid "Check the Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:90
+msgid ""
+"There are lots of possible sources for errors in a graph. The data that you "
+"started with may not have been designed with routing in mind. A graph has "
+"some very specific requirements. One is that it is *NODED*, this means that "
+"except for some very specific use cases, each road segment starts and ends "
+"at a node and that in general is does not cross another road segment that it"
+" should be connected to."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:97
+msgid ""
+"There can be other errors like the direction of a one-way street being "
+"entered in the wrong direction. We do not have tools to search for all "
+"possible errors but we have some basic tools that might help."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:109
+msgid ":ref:`pgr_analyze_graph`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:110
+msgid ":ref:`pgr_analyze_oneway`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:111
+msgid ":ref:`pgr_node_network`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:117
+msgid "Compute a Path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:119
+msgid ""
+"Once you have all the preparation work done above, computing a route is "
+"fairly easy. We have a lot of different algorithms that can work with your "
+"prepared road network. The general form of a route query is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:127
+msgid ""
+"As you can see this is fairly straight forward and you can look and the "
+"specific algorithms for the details of the signatures and how to use them. "
+"These results have information like edge id and/or the node id along with "
+"the cost or geometry for the step in the path from *start* to *end*. Using "
+"the ids you can join these result back to your edge table to get more "
+"information about each step in the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:134
+msgid ":ref:`pgr_dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:141
+msgid "Inner Queries"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:146
+msgid ""
+"There are several kinds of valid inner queries and also the columns returned"
+" are depending of the function. Which kind of inner query will depend on the"
+" function(s) requirements. To simplify variety of types, ``ANY-INTEGER`` and"
+" ``ANY-NUMERICAL`` is used."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:152
+#: ../../build/doc/pgRouting-concepts.rst:182
+#: ../../build/doc/pgRouting-concepts.rst:212
+#: ../../build/doc/pgRouting-concepts.rst:269
+#: ../../build/doc/pgRouting-concepts.rst:300
+#: ../../build/doc/pgRouting-concepts.rst:334
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:154
+#: ../../build/doc/pgRouting-concepts.rst:184
+#: ../../build/doc/pgRouting-concepts.rst:214
+#: ../../build/doc/pgRouting-concepts.rst:271
+#: ../../build/doc/pgRouting-concepts.rst:302
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:155
+#: ../../build/doc/pgRouting-concepts.rst:185
+#: ../../build/doc/pgRouting-concepts.rst:215
+#: ../../build/doc/pgRouting-concepts.rst:272
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:162
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:164
+#: ../../build/doc/pgRouting-concepts.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:247
+#: ../../build/doc/pgRouting-concepts.rst:282
+#: ../../build/doc/pgRouting-concepts.rst:314
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:167
+#: ../../build/doc/pgRouting-concepts.rst:198
+#: ../../build/doc/pgRouting-concepts.rst:227
+#: ../../build/doc/pgRouting-concepts.rst:250
+#: ../../build/doc/pgRouting-concepts.rst:285
+#: ../../build/doc/pgRouting-concepts.rst:317
+#: ../../build/doc/pgRouting-concepts.rst:360
+#: ../../build/doc/pgRouting-concepts.rst:383
+#: ../../build/doc/pgRouting-concepts.rst:400
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:287
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:290
+#: ../../build/doc/pgRouting-concepts.rst:294
+#: ../../build/doc/pgRouting-concepts.rst:319
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:169
+#: ../../build/doc/pgRouting-concepts.rst:252
+#: ../../build/doc/pgRouting-concepts.rst:287
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:170
+#: ../../build/doc/pgRouting-concepts.rst:200
+#: ../../build/doc/pgRouting-concepts.rst:253
+#: ../../build/doc/pgRouting-concepts.rst:288
+#: ../../build/doc/pgRouting-concepts.rst:404
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:171
+#: ../../build/doc/pgRouting-concepts.rst:201
+#: ../../build/doc/pgRouting-concepts.rst:254
+#: ../../build/doc/pgRouting-concepts.rst:289
+#: ../../build/doc/pgRouting-concepts.rst:405
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:263
+#: ../../build/doc/pgRouting-concepts.rst:264
+#: ../../build/doc/pgRouting-concepts.rst:265
+#: ../../build/doc/pgRouting-concepts.rst:266
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:172
+#: ../../build/doc/pgRouting-concepts.rst:202
+#: ../../build/doc/pgRouting-concepts.rst:255
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:174
+#: ../../build/doc/pgRouting-concepts.rst:204
+#: ../../build/doc/pgRouting-concepts.rst:257
+#: ../../build/doc/pgRouting-concepts.rst:292
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:176
+#: ../../build/doc/pgRouting-concepts.rst:206
+#: ../../build/doc/pgRouting-concepts.rst:259
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:178
+#: ../../build/doc/pgRouting-concepts.rst:208
+#: ../../build/doc/pgRouting-concepts.rst:261
+#: ../../build/doc/pgRouting-concepts.rst:296
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:193
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:224
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:227
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:229
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:230
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:231
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:232
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:233
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:234
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:235
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:236
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:245
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:263
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:264
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:265
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:266
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:280
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:290
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:294
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:312
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:319
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:321
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:322
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:324
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:325
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:326
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:328
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:329
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:330
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:336
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:337
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:345
+msgid "Return columns & values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:350
+msgid ""
+"There are several kinds of columns returned are depending of the function."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:355
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:357
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:363
+#: ../../build/doc/pgRouting-concepts.rst:364
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:362
+#: ../../build/doc/pgRouting-concepts.rst:402
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:363
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:364
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:367
+#: ../../build/doc/pgRouting-concepts.rst:368
+#: ../../build/doc/pgRouting-concepts.rst:385
+#: ../../build/doc/pgRouting-concepts.rst:386
+#: ../../build/doc/pgRouting-concepts.rst:403
+#: ../../build/doc/pgRouting-concepts.rst:404
+#: ../../build/doc/pgRouting-concepts.rst:405
+#: ../../build/doc/pgRouting-concepts.rst:406
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:365
+#: ../../build/doc/pgRouting-concepts.rst:385
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:366
+#: ../../build/doc/pgRouting-concepts.rst:386
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:367
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:368
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:369
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:370
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:378
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:380
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:387
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:397
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:403
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:406
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:407
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:415
+msgid "Advanced Topics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:423
+msgid "Routing Topology"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:427
+#: ../../build/doc/pgRouting-concepts.rst:528
+msgid "Overview"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:428
+msgid ""
+"Typically when GIS files are loaded into the data database for use with "
+"pgRouting they do not have topology information associated with them. To "
+"create a useful topology the data needs to be \"noded\". This means that "
+"where two or more roads form an intersection there it needs to be a node at "
+"the intersection and all the road segments need to be broken at the "
+"intersection, assuming that you can navigate from any of these segments to "
+"any other segment via that intersection."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:430
+msgid ""
+"You can use the :ref:`graph analysis functions <analytics>` to help you see "
+"where you might have topology problems in your data. If you need to node "
+"your data, we also have a function :ref:`pgr_nodeNetwork() "
+"<pgr_node_network>` that might work for you. This function splits ALL "
+"crossing segments and nodes them. There are some cases where this might NOT "
+"be the right thing to do."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:432
+msgid ""
+"For example, when you have an overpass and underpass intersection, you do "
+"not want these noded, but pgr_nodeNetwork does not know that is the case and"
+" will node them which is not good because then the router will be able to "
+"turn off the overpass onto the underpass like it was a flat 2D intersection."
+" To deal with this problem some data sets use z-levels at these types of "
+"intersections and other data might not node these intersection which would "
+"be ok."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:434
+msgid ""
+"For those cases where topology needs to be added the following functions may"
+" be useful. One way to prep the data for pgRouting is to add the following "
+"columns to your table and then populate them as appropriate. This example "
+"makes a lot of assumption like that you original data tables already has "
+"certain columns in it like ``one_way``, ``fcc``, and possibly others and "
+"that they contain specific data values. This is only to give you an idea of "
+"what you can do with your data."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:455
+msgid ""
+"The function :ref:`pgr_createTopology() <pgr_create_topology>` will create "
+"the ``vertices_tmp`` table and populate the ``source`` and ``target`` "
+"columns. The following example populated the remaining columns. In this "
+"example, the ``fcc`` column contains feature class code and the ``CASE`` "
+"statements converts it to an average speed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:518
+msgid ""
+"Now your database should be ready to use any (most?) of the pgRouting "
+"algorithms."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:524
+msgid "Graph Analytics"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:529
+msgid ""
+"It is common to find problems with graphs that have not been constructed "
+"fully noded or in graphs with z-levels at intersection that have been "
+"entered incorrectly. An other problem is one way streets that have been "
+"entered in the wrong direction. We can not detect errors with respect to "
+"\"ground\" truth, but we can look for inconsistencies and some anomalies in "
+"a graph and report them for additional inspections."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:531
+msgid ""
+"We do not current have any visualization tools for these problems, but I "
+"have used mapserver to render the graph and highlight potential problem "
+"areas. Someone familiar with graphviz might contribute tools for generating "
+"images with that."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:535
+msgid "Analyze a Graph"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:537
+msgid ""
+"With :ref:`pgr_analyze_graph` the graph can be checked for errors. For "
+"example for table \"mytab\" that has \"mytab_vertices_pgr\" as the vertices "
+"table:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:560
+msgid "In the vertices table \"mytab_vertices_pgr\":"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:562
+msgid "Deadends are identified by ``cnt=1``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:563
+msgid "Potencial gap problems are identified with ``chk=1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:581
+msgid ""
+"For isolated road segments, for example, a segment where both ends are "
+"deadends. you can find these with the following query:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:590
+msgid ""
+"If you want to visualize these on a graphic image, then you can use "
+"something like mapserver to render the edges and the vertices and style "
+"based on ``cnt`` or if they are isolated, etc. You can also do this with a "
+"tool like graphviz, or geoserver or other similar tools."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:594
+msgid "Analyze One Way Streets"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:596
+msgid ""
+":ref:`pgr_analyze_oneway` analyzes one way streets in a graph and identifies"
+" any flipped segments. Basically if you count the edges coming into a node "
+"and the edges exiting a node the number has to be greater than one."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:598
+msgid ""
+"This query will add two columns to the vertices_tmp table ``ein int`` and "
+"``eout int`` and populate it with the appropriate counts. After running this"
+" on a graph you can identify nodes with potential problems with the "
+"following query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:601
+msgid ""
+"The rules are defined as an array of text strings that if match the ``col`` "
+"value would be counted as true for the source or target in or out condition."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:605
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:607
+msgid ""
+"Lets assume we have a table \"st\" of edges and a column \"one_way\" that "
+"might have values like:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:609
+msgid "'FT' - oneway from the source to the target node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:610
+msgid "'TF' - oneway from the target to the source node."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:611
+msgid "'B' - two way street."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:612
+msgid "'' - empty field, assume twoway."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:613
+msgid "<NULL> - NULL field, use two_way_if_null flag."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:615
+msgid ""
+"Then we could form the following query to analyze the oneway streets for "
+"errors."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:634
+msgid ""
+"Typically these problems are generated by a break in the network, the one "
+"way direction set wrong, maybe an error related to z-levels or a network "
+"that is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:636
+msgid ""
+"The above tools do not detect all network issues, but they will identify "
+"some common problems. There are other problems that are hard to detect "
+"because they are more global in nature like multiple disconnected networks. "
+"Think of an island with a road network that is not connected to the mainland"
+" network because the bridge or ferry routes are missing."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:644
+msgid "Performance Tips"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:651
+msgid "For the Routing functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:653
+msgid ""
+"To get faster results bound your queries to the area of interest of routing "
+"to have, for example, no more than one million rows."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:655
+msgid ""
+"Use an inner query SQL that does not include some edges in the routing "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:663
+msgid "Integrating the inner query to the pgRouting function:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:677
+msgid "For the topology functions:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:679
+msgid ""
+"When \"you know\" that you are going to remove a set of edges from the edges"
+" table, and without those edges you are going to use a routing function you "
+"can do the following:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:681
+msgid "Analize the new topology based on the actual topology:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:687
+msgid "Or create a new topology if the change is permanent:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:698
+msgid "How to contribute"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:701
+msgid "Wiki"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:702
+msgid ""
+"Edit an existing `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_ page."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:703
+msgid "Or create a new Wiki page"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:705
+msgid ""
+"Create a page on the `pgRouting Wiki "
+"<https://github.com/pgRouting/pgrouting/wiki>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:706
+msgid "Give the title an appropriate name"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:709
+msgid ""
+"`Example <https://github.com/pgRouting/pgrouting/wiki/How-to:-Handle-"
+"parallel-edges-(KSP)>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:713
+msgid "Adding Functionaity to pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:714
+msgid ""
+"Consult the `developer's documentation "
+"<http://docs.pgrouting.org/doxy/2.4/index.html>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:719
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:720
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:721
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgRouting-installation.po b/locale/ru/LC_MESSAGES/pgRouting-installation.po
new file mode 100644
index 0000000..71b7f5f
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgRouting-installation.po
@@ -0,0 +1,418 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-installation.rst:13
+msgid "Installation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:16
+msgid "Table of Contents"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:17
+msgid ":ref:`install-short`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:18
+msgid ":ref:`install_get_sources`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:19
+msgid ":ref:`install_enable_db`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:20
+msgid ":ref:`install_dependencies`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:21
+msgid ":ref:`install_configuring`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:22
+msgid ":ref:`install_build`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:23
+msgid ":ref:`install_testing`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:25
+msgid ""
+"Instructions for downloading and installing binaries for different Operative"
+" systems instructions and additional notes and corrections not included in "
+"this documentation can be found in `Installation wiki "
+"<https://github.com/pgRouting/pgrouting/wiki/Notes-on-Download%2C-"
+"Installation-and-building-pgRouting>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:27
+msgid ""
+"To use pgRouting postGIS needs to be installed, please read the information "
+"about installation in this `Install Guide "
+"<http://www.postgis.us/presentations/postgis_install_guide_22.html>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:32
+msgid "Short Version"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:37
+msgid "Extracting the tar ball"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:44
+msgid "To compile assuming you have all the dependencies in your search path:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:54
+msgid ""
+"Once pgRouting is installed, it needs to be enabled in each individual "
+"database you want to use it in."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:66
+msgid "Get the sources"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:69
+msgid ""
+"The pgRouting latest release can be found in "
+"https://github.com/pgRouting/pgrouting/releases/latest"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:72
+msgid "wget"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:73
+msgid "To download this release:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:81
+msgid "Goto :ref:`install-short` to the extract and compile instructions."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:84
+msgid "git"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:85
+msgid "To download the repository"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:93
+msgid ""
+"Goto :ref:`install-short` to the compile instructions (there is no tar "
+"ball)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:100
+msgid "Enabling and upgrading in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:103
+msgid "Enabling the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:104
+msgid ""
+"pgRouting is an extension and depends on postGIS. Enabling postGIS before "
+"enabling pgRouting in the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:113
+msgid "Upgrading the database"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:114
+msgid ""
+"To upgrade pgRouting in the database to version 2.4.0 use the following "
+"command:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:122
+msgid ""
+"More information can be found in "
+"https://www.postgresql.org/docs/current/static/sql-createextension.html"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:128
+msgid "Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:131
+msgid "Compilation Dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:132
+msgid ""
+"To be able to compile pgRouting, make sure that the following dependencies "
+"are met:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:134
+msgid "C and C++0x compilers * g++ version >= 4.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:136
+msgid "Postgresql version >= 9.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:137
+msgid "PostGIS version >= 2.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:138
+msgid "The Boost Graph Library (BGL). Version >= 1.46"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:139
+msgid "CMake >= 2.8.8"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:140
+msgid "CGAL >= 4.2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:144
+msgid "optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:145
+msgid "For user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:147
+msgid "Sphinx >= 1.1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:148
+msgid "Latex"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:150
+msgid "For developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:152
+msgid "Doxygen >= 1.7"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:154
+msgid "For testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:156
+msgid "pgtap"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:157
+msgid "pg_prove"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:161
+msgid "Example: Installing dependencies on linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:162
+msgid "Installing the compilation dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:174
+msgid "Installing the optional dependencies"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:188
+msgid "Configuring"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:190
+msgid "pgRouting uses the `cmake` system to do the configuration."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:192
+msgid "The build directory is different from the source directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:194
+msgid "Create the build directory"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:201
+msgid "Configurable variables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:205
+msgid "To see the variables that can be configured"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:213
+msgid "Configuring The Documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:214
+msgid ""
+"Most of the effort of the documentation has being on the HTML files. Some "
+"variables for the documentation:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Variable"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:218
+msgid "Comment"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "WITH_DOC"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+#: ../../build/doc/pgRouting-installation.rst:223
+#: ../../build/doc/pgRouting-installation.rst:224
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "BOOL=OFF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:220
+msgid "Turn on/off building the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "BUILD_HTML"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BOOL=ON"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:221
+msgid "If ON, turn on/off building HTML for user's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "BUILD_DOXY"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:222
+msgid "If ON, turn on/off building HTML for developer's documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "BUILD_LATEX"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:223
+msgid "If ON, turn on/off building PDF"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "BUILD_MAN"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:224
+msgid "If ON, turn on/off building MAN pages"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "DOC_USE_BOOTSTRAP"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:225
+msgid "If ON, use sphinx-bootstrap for HTML pages of the users documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:228
+msgid "Configuring with documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:234
+msgid "Most of the effort of the documentation has being on the html files."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:240
+msgid "Building"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:242
+msgid "Using ``make`` to build the code and the documentation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:244
+msgid "The following instructions start from *path/to/pgrouting/build*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:253
+msgid ""
+"We have tested on several platforms, For installing or reinstalling all the "
+"steps are needed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:255
+msgid "The sql signatures are configured and build in the ``cmake`` command."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:258
+msgid "MinGW on Windows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:269
+msgid "Linux"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:270
+msgid "The following instructions start from *path/to/pgrouting*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:280
+msgid "When the configuration changes:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:286
+msgid "and start the build process as mentioned above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:291
+msgid "Testing"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:293
+msgid "Currently there is no :code:`make test` and testing is done as follows"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:295
+msgid "The following instructions start from *path/to/pgrouting/*"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:305
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:308
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:309
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-installation.rst:310
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgRouting-introduction.po b/locale/ru/LC_MESSAGES/pgRouting-introduction.po
new file mode 100644
index 0000000..2f5927b
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgRouting-introduction.po
@@ -0,0 +1,222 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgRouting-introduction.rst:13
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:15
+msgid ""
+"pgRouting is an extension of `PostGIS <http://postgis.net>`_ and `PostgreSQL"
+" <http://postgresql.org>`_ geospatial database and adds routing and other "
+"network analysis functionality. A predecessor of pgRouting – pgDijkstra, "
+"written by Sylvain Pasche from `Camptocamp <http://camptocamp.com>`_, was "
+"later extended by `Orkney <http://www.orkney.co.jp>`_ and renamed to "
+"pgRouting. The project is now supported and maintained by `Georepublic "
+"<http://georepublic.info>`_, `iMaptools <http://imaptools.com/>`__ and a "
+"broad user community."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:17
+msgid ""
+"pgRouting is an `OSGeo Labs <http://wiki.osgeo.org/wiki/OSGeo_Labs>`_ "
+"project of the `OSGeo Foundation <http://osgeo.org>`_ and included on `OSGeo"
+" Live <http://live.osgeo.org/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:23
+msgid "License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:25
+msgid "The following licenses can be found in pgRouting:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:30
+msgid "**License**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:32
+msgid "GNU General Public License, version 2"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:33
+msgid ""
+"Most features of pgRouting are available under `GNU General Public License, "
+"version 2 <http://www.gnu.org/licenses/gpl-2.0.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:34
+msgid "Boost Software License - Version 1.0"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:35
+msgid ""
+"Some Boost extensions are available under `Boost Software License - Version "
+"1.0 <http://www.boost.org/LICENSE_1_0.txt>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:36
+msgid "MIT-X License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:37
+msgid ""
+"Some code contributed by iMaptools.com is available under MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:38
+msgid "Creative Commons Attribution-Share Alike 3.0 License"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:39
+msgid ""
+"The pgRouting Manual is licensed under a `Creative Commons Attribution-Share"
+" Alike 3.0 License <http://creativecommons.org/licenses/by-sa/3.0/>`_."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:41
+msgid ""
+"In general license information should be included in the header of each "
+"source file."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:45
+msgid "Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:48
+msgid "This Release Contributors"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:51
+#: ../../build/doc/pgRouting-introduction.rst:71
+msgid "Individuals (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:53
+msgid "Maoguang Wang, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:55
+msgid ""
+"And all the people that give us a little of their time making comments, "
+"finding issues, making pull requests etc."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:58
+#: ../../build/doc/pgRouting-introduction.rst:76
+msgid "Corporate Sponsors (in alphabetical order)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:60
+#: ../../build/doc/pgRouting-introduction.rst:78
+msgid ""
+"These are corporate entities that have contributed developer time, hosting, "
+"or direct monetary funding to the pgRouting project:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:62
+msgid "`Georepublic <https://georepublic.info/en/>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:63
+msgid ""
+"`Google Summer of Code <https://developers.google.com/open-source/gsoc/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:64
+msgid "`iMaptools <http://imaptools.com>`__"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:65
+msgid "`Paragon Corporation <http://www.paragoncorporation.com/>`_"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:68
+msgid "Contributors Past & Present:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:73
+msgid ""
+"Akio Takubo, Andrea Nardelli, Anton Patrushev, Ashraf Hossain, Christian "
+"Gonzalez, Daniel Kastl, Dave Potts, David Techer, Denis Rykov, Ema Miyawaki,"
+" Florian Thurkow, Frederic Junod, Gerald Fenoy, Jay Mahadeokar, Jinfu Leng, "
+"Kai Behncke, Kishore Kumar, Ko Nagase, Manikata Kondeti, Mario Basa, Martin "
+"Wiesenhaan, Maxim Dubinin, Maoguang Wang, Mohamed Zia, Mukul Priya, Razequl"
+" Islam, Regina Obe, Rohith Reddy, Sarthak Agarwal, Stephen Woodbridge, "
+"Sylvain Housseman, Sylvain Pasche, Vidhan Jain, Virginia Vergara"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:80
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:81
+msgid "CSIS (University of Tokyo)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:82
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:83
+msgid "Google Summer of Code"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:84
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:85
+msgid "Orkney"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:86
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:90
+msgid "More Information"
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:92
+msgid ""
+"The latest software, documentation and news items are available at the "
+"pgRouting web site http://pgrouting.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:93
+msgid ""
+"PostgreSQL database server at the PostgreSQL main site "
+"http://www.postgresql.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:94
+msgid "PostGIS extension at the PostGIS project web site http://postgis.net."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:95
+msgid "Boost C++ source libraries at http://www.boost.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:96
+msgid ""
+"Computational Geometry Algorithms Library (CGAL) at http://www.cgal.org."
+msgstr ""
+
+#: ../../build/doc/pgRouting-introduction.rst:97
+msgid ""
+"The Migration guide can be found at "
+"https://github.com/pgRouting/pgrouting/wiki/Migration-Guide."
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_KSP.po b/locale/ru/LC_MESSAGES/pgr_KSP.po
new file mode 100644
index 0000000..2ace271
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_KSP.po
@@ -0,0 +1,402 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_KSP.rst:13
+msgid "pgr_KSP"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:18
+msgid "``pgr_KSP`` — Returns the \"K\" shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:28
+msgid "Signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:34
+msgid ""
+"The K shortest path routing algorithm based on Yen's algorithm. \"K\" is the"
+" number of shortest paths desired."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:52
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:64
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:73
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_KSP.rst:83
+#: ../../build/doc/pgr_KSP.rst:103
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14 ../../build/doc/pgr_KSP.rst:110
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:80
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:85
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86 ../../build/doc/pgr_KSP.rst:87
+#: ../../build/doc/pgr_KSP.rst:107 ../../build/doc/pgr_KSP.rst:108
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:86
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:87
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "**k**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88 ../../build/doc/pgr_KSP.rst:105
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:88
+msgid "The desiered number of paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89 ../../build/doc/pgr_KSP.rst:90
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:89
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:90
+msgid ""
+"(optional). When ``true`` returns all the paths stored in the process heap. "
+"Default is ``false`` which only returns ``k`` paths."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:93
+msgid ""
+"Roughly, if the shortest path has ``N`` edges, the heap will contain about "
+"than ``N * k`` paths for small value of ``k`` and ``k > 1``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:98
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:100
+msgid ""
+"Returns set of ``(seq, path_seq, path_id, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:105
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:106
+msgid ""
+"Relative position in the path of ``node`` and ``edge``. Has value **1** for "
+"the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:107
+msgid ""
+"Path identifier. The ordering of the paths For two paths i, j if i < j then "
+"agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:108
+msgid "Identifier of the node in the path."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:109
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110 ../../build/doc/pgr_KSP.rst:111
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:110
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:111
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:115
+msgid ""
+"During the transition to 3.0, because pgr_ksp version 2.0 doesn't have "
+"defined a directed flag nor a heap_path flag, when pgr_ksp is used with only"
+" one flag version 2.0 signature will be used."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:119
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:122
+msgid "Examples to handle the one flag to choose signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:124 ../../build/doc/pgr_KSP.rst:134
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:132
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:143
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:145
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:153
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:155
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:164
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:166
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:173
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:175
+msgid "http://en.wikipedia.org/wiki/K_shortest_path_routing"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:176
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:179
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:180
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_KSP.rst:181
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_TSP.po b/locale/ru/LC_MESSAGES/pgr_TSP.po
new file mode 100644
index 0000000..a9fecef
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_TSP.po
@@ -0,0 +1,224 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_TSP.rst:13
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:18
+msgid "``pgr_TSP`` - Returns a route that visits all the nodes exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:21
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:22
+msgid "Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:26
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:28
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:30
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:32
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of matrix cell contents. The "
+"matrix information must be symmetrical."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:58
+msgid "Basic Use"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:67
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:96
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:103
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:106
+msgid "Description of the Matrix Cell SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:109
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111 ../../build/doc/pgr_TSP.rst:112
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:111
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:112
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:113
+msgid "Cost for going from start_vid to end_vid"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:116
+msgid "Can be Used with:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:118
+msgid ":ref:`pgr_dijkstraCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:119
+msgid ":ref:`pgr_withPointsCostmatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:120
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:121
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:123
+msgid "To generate a symmetric matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:125
+msgid "directed := false."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:127
+msgid ""
+"If using directed := true, the resulting non symmetric matrix must be "
+"converted to symmetric by fixing the non symmetric values according to your "
+"application needs."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:145
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:147
+msgid "Using with points of interest."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:149
+msgid "To generate a symmetric matrix:"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:151
+msgid ""
+"the **side** information of pointsOfInterset is ignored by not including it "
+"in the query"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:152
+msgid "and **directed := false**"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:158
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:163
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:165
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:166
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:167
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:170
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:171
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_TSP.rst:172
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_aStar.po b/locale/ru/LC_MESSAGES/pgr_aStar.po
new file mode 100644
index 0000000..4e2ccb4
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_aStar.po
@@ -0,0 +1,642 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStar.rst:13
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:18
+msgid "``pgr_aStar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:27
+msgid "pgr_astar(one to one) 2.0.0, Signature changed 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:28
+msgid "pgr_astar(other signatures) 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:33
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:35
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:37
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:38
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:40
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:46
+msgid "The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:50
+msgid "The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:52
+msgid "When (x,y) coordinates for the same vertex identifier differ:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:54
+msgid "A random selection of the vertex's (x,y) coordinates is used."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:56
+msgid "Running time: :math:`O((E + V) * \\log V)`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:84
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:92
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:99
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:112
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:118
+msgid "Undirected using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:130
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:138 ../../build/doc/pgr_aStar.rst:165
+#: ../../build/doc/pgr_aStar.rst:194
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:139 ../../build/doc/pgr_aStar.rst:166
+#: ../../build/doc/pgr_aStar.rst:195
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:141
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:144
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:145
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:157
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:166
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:168
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:171
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:172 ../../build/doc/pgr_aStar.rst:201
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:186
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:195
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:197
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:200
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:203
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:217
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_aStar.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13 ../../build/doc/pgr_aStar.rst:234
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:228
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:231
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:233
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234 ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:234
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235 ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:235
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:236
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:238
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:239
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:241
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:243
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:244
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:245
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:246
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:247
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:248
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250 ../../build/doc/pgr_aStar.rst:251
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:250
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:251
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:260
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:262
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:263
+msgid ":doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:264
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:265
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:268
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:269
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStar.rst:270
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_aStarCost.po b/locale/ru/LC_MESSAGES/pgr_aStarCost.po
new file mode 100644
index 0000000..41e1637
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_aStarCost.po
@@ -0,0 +1,528 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCost.rst:13
+msgid "pgr_aStarCost -- proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:18
+msgid ""
+"``pgr_aStarCost`` — Returns the aggregate cost shortest path using "
+":ref:`astar` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:26
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:53
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:60
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:72
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:78
+msgid "Setting a Heuristic"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:90
+msgid "One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99
+msgid ""
+"This signature finds a path from one ``start_vid`` to each ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:98 ../../build/doc/pgr_aStarCost.rst:125
+#: ../../build/doc/pgr_aStarCost.rst:154
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:99 ../../build/doc/pgr_aStarCost.rst:126
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:101
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_astar` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:104
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:105
+msgid ""
+"The extra ``end_vid`` column in the result is used to distinguish to which "
+"path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:117
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:126
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:128
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_aStar` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:131
+msgid "The result is the union of the results of the one to one `pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:132
+msgid ""
+"The extra ``start_vid`` column in the result is used to distinguish to "
+"which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:146
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:155
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:157
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:160
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:161
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:163
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:177
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCost.rst:191
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_aStarCost.rst:194 ../../build/doc/pgr_aStarCost.rst:195
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:188
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:191
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:193
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:194
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:195
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:196
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:198
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:199
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:201
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:203
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:204
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:205
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:206
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:207
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:208
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210 ../../build/doc/pgr_aStarCost.rst:211
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:210
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. See "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:211
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:224
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:226
+msgid ":ref:`astar`."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:227
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:228
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:229
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:232
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:233
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCost.rst:234
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_aStarCostMatrix.po b/locale/ru/LC_MESSAGES/pgr_aStarCostMatrix.po
new file mode 100644
index 0000000..5193921
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_aStarCostMatrix.po
@@ -0,0 +1,457 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:13
+msgid "pgr_aStarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:18
+msgid ""
+"``pgr_aStarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_aStar`."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:33
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:37
+msgid "Using aStar algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:40
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:57
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:60
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:68
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:88
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:90
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "**vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:112
+msgid "Array of vertices_identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:113
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:115
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:116
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:118
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:120
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:121
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:122
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:123
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:124
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:125
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:127
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:128
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:150
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:152
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:153
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:154
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:155
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_aStarCostMatrix.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_alphaShape.po b/locale/ru/LC_MESSAGES/pgr_alphaShape.po
new file mode 100644
index 0000000..851cd18
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_alphaShape.po
@@ -0,0 +1,169 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_alphaShape.rst:13
+msgid "pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:21
+msgid "``pgr_alphaShape`` — Core function for alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:27
+msgid ""
+"Returns a table with (x, y) rows that describe the vertices of an alpha "
+"shape."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:50
+msgid "Returns a vertex record for each row:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:52
+msgid "x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:53
+msgid "y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:55
+msgid ""
+"If a result includes multiple outer/inner rings, return those with separator"
+" row (x=NULL and y=NULL)."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:58
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:59
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:60
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:61
+msgid ""
+"Supported to return multiple outer/inner ring coordinates with separator row"
+" (x=NULL and y=NULL) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:64
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:65
+msgid ""
+"PgRouting's alpha shape implementation has no way to control the order of "
+"the output points, so the actual output might different for the same input "
+"data. The first query, has the output ordered, he second query shows an "
+"example usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:70
+msgid "Example: the (ordered) results"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:76
+msgid "Example: calculating the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:77
+msgid "Steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:79
+msgid "Calculates the alpha shape"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:80
+msgid "the :code:`ORDER BY` clause is not used."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:81
+msgid "constructs a polygon"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:82
+msgid "and computes the area"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:90
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:93
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:95
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:96
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:99
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:100
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_alphaShape.rst:101
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_analyzeGraph.po b/locale/ru/LC_MESSAGES/pgr_analyzeGraph.po
new file mode 100644
index 0000000..22237a6
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_analyzeGraph.po
@@ -0,0 +1,361 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeGraph.rst:13
+msgid "pgr_analyzeGraph"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:19
+msgid "``pgr_analyzeGraph`` — Analyzes the network topology."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:25
+#: ../../build/doc/pgr_analyzeGraph.rst:61
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:27
+#: ../../build/doc/pgr_analyzeGraph.rst:63
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:28
+#: ../../build/doc/pgr_analyzeGraph.rst:69
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:43
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:44
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:46
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:47
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:50
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:51
+msgid "The analyze graph function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:53
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:54
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:55
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:56
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:57
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:58
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:59
+msgid ""
+"``text`` Condition to select a subset or rows. Default value is ``true``"
+" to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:65
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:66
+msgid ""
+"Fills completely the ``cnt`` and ``chk`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:67
+msgid ""
+"Returns the analysis of the section of the network defined by "
+"``rows_where``"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:71
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:72
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:73
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:74
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:75
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:79
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:80
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:82
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:84
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:86
+msgid "``integer`` Indicator that the vertex might have a problem."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:87
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:88
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:89
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:92
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:93
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:96
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:99
+msgid "The simplest way to use pgr_analyzeGraph is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:106
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:111
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order: 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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:130
+#: ../../build/doc/pgr_analyzeGraph.rst:208
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:131
+#: ../../build/doc/pgr_analyzeGraph.rst:209
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:141
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:148
+#: ../../build/doc/pgr_analyzeGraph.rst:223
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:149
+msgid ""
+"Selecting rows based on the id. Displays the analysis a the section of the "
+"network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:155
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:161
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:172
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:174
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:183
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:184
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:0
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:219
+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 ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:224
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:234
+msgid ""
+"Selecting the rows WHERE the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:246
+msgid ""
+"Selecting the rows WHERE the geometry is near the place='myhouse' of the "
+"table ``othertable``. (note the use of quote_literal)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:263
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:390
+msgid "The examples use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:394
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:396
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:397
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:398
+msgid ""
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the "
+"vertices table based on the source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:399
+msgid ""
+":ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded "
+"edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:402
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:403
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeGraph.rst:404
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_analyzeOneWay.po b/locale/ru/LC_MESSAGES/pgr_analyzeOneWay.po
new file mode 100644
index 0000000..627da76
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_analyzeOneWay.po
@@ -0,0 +1,290 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:13
+msgid "pgr_analyzeOneway"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:19
+msgid ""
+"``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:23
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:25
+msgid ""
+"This function analyzes oneway streets in a graph and identifies any flipped "
+"segments."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:42
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:44
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:46
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:49
+msgid "Prerequisites"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:50
+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 <edge_table>_vertices_pgr that stores the "
+"vertices information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:52
+msgid ""
+"Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the "
+"vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:53
+msgid ""
+"Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology "
+"and the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:56
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:57
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:58
+msgid "``text[]`` source node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:59
+msgid "``text[]`` source node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:60
+msgid "``text[]`` target node **in** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:61
+msgid "``text[]`` target node **out** rules"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:62
+msgid ""
+"``text`` oneway column name name of the network table. Default value is "
+"``oneway``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:63
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:64
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:65
+msgid ""
+"``boolean`` flag to treat oneway NULL values as bi-directional. Default "
+"value is ``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:67
+msgid ""
+"It is strongly recommended to use the named notation. See "
+":ref:`pgr_createVerticesTable <pgr_create_vert_table>` or "
+":ref:`pgr_createTopology <pgr_create_topology>` for examples."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:70
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:72
+msgid "``OK`` after the analysis has finished."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:74
+msgid "Uses the vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:75
+msgid ""
+"Fills completely the ``ein`` and ``eout`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:77
+msgid "``FAIL`` when the analysis was not completed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:79
+msgid "The vertices table is not found."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:80
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:81
+msgid "The names of source , target or oneway are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:83
+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 ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:86
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:87
+msgid ""
+"The vertices table can be created with :ref:`pgr_createVerticesTable "
+"<pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:89
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:91
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:92
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:93
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:94
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:95
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:96
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:100
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:101
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:105
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:129
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:135
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:136
+msgid ":ref:`analytics` for an overview of the analysis of a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:137
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:138
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_analyzeOneWay.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_articulationPoints.po b/locale/ru/LC_MESSAGES/pgr_articulationPoints.po
new file mode 100644
index 0000000..225a3d6
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_articulationPoints.po
@@ -0,0 +1,316 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_articulationPoints.rst:13
+msgid "pgr_articulationPoints - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:16
+msgid ""
+"``pgr_articulationPoints`` - Return the articulation points of an undirected"
+" graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:32
+msgid ""
+"Those vertices that belong to more than one biconnected component are called"
+" articulation points or, equivalently, cut vertices. Articulation points are"
+" vertices whose removal would increase the number of connected components in"
+" the graph. This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:62
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for articulation points"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:93
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_articulationPoints.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_bdAstar.po b/locale/ru/LC_MESSAGES/pgr_bdAstar.po
new file mode 100644
index 0000000..fdfaa05
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_bdAstar.po
@@ -0,0 +1,669 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstar.rst:13
+msgid "pgr_bdAstar"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:18
+msgid "``pgr_bdAstar`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:26
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:27
+msgid "pgr_bdAstar(one to one) 2.0.0, Signature change on 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:28
+msgid "pgr_bdAstar(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:54
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:56
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAStar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:57
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:61
+msgid "Avaliability"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:62
+msgid "pgr_bdAstar(one to one) 2.0, signature change on 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:63
+msgid "pgr_bdAstar(other signatures) 2.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:84
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:85
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:86
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:87
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:89
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:102
+msgid "pgr_bdAstar One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+" allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:109
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:110 ../../build/doc/pgr_bdAstar.rst:137
+#: ../../build/doc/pgr_bdAstar.rst:162 ../../build/doc/pgr_bdAstar.rst:186
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:111 ../../build/doc/pgr_bdAstar.rst:138
+#: ../../build/doc/pgr_bdAstar.rst:163 ../../build/doc/pgr_bdAstar.rst:187
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:114
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:116
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:127
+msgid "pgr_bdAstar One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:139
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:135 ../../build/doc/pgr_bdAstar.rst:160
+#: ../../build/doc/pgr_bdAstar.rst:184
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:136 ../../build/doc/pgr_bdAstar.rst:161
+#: ../../build/doc/pgr_bdAstar.rst:185
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:141
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:152
+msgid "pgr_bdAstar Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:163
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:165
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:176
+msgid "pgr_bdAstar Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:187
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:189
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:196
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:213
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:215
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:216
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:217
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:218
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:221
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:222
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstar.rst:223
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_bdAstarCost.po b/locale/ru/LC_MESSAGES/pgr_bdAstarCost.po
new file mode 100644
index 0000000..9b72e10
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_bdAstarCost.po
@@ -0,0 +1,594 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCost.rst:13
+msgid "pgr_bdAstarCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:18
+msgid "``pgr_bdAstarCost`` — Returns the shortest path using A* algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:23
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:26
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:32
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:46
+msgid ""
+"Using these signatures, will load once the graph and perform several one to "
+"one `pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:48
+msgid ""
+"The result is the union of the results of the one to one `pgr_bdAstarCost`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:49
+msgid ""
+"The extra ``start_vid`` and/or ``end_vid`` in the result is used to "
+"distinguish to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:56
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:64
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to the ``end_vid``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:72
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:73
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:74
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:75
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:77
+msgid "Using the defaults"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:90
+msgid "pgr_bdAstarCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:128
+msgid ""
+"This usage finds the shortest path from the ``start_vid`` to each "
+"``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:97
+#: ../../build/doc/pgr_bdAstarCost.rst:124
+#: ../../build/doc/pgr_bdAstarCost.rst:149
+#: ../../build/doc/pgr_bdAstarCost.rst:173
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:98
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:99
+#: ../../build/doc/pgr_bdAstarCost.rst:126
+#: ../../build/doc/pgr_bdAstarCost.rst:151
+#: ../../build/doc/pgr_bdAstarCost.rst:175
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:100
+#: ../../build/doc/pgr_bdAstarCost.rst:127
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:103
+msgid ""
+"In the One to One signature, because of the deprecated signature existence, "
+"it is compulsory to indicate if the graph is **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:105
+msgid "Directed using Heuristic 2"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:116
+msgid "pgr_bdAstarCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:125
+#: ../../build/doc/pgr_bdAstarCost.rst:150
+#: ../../build/doc/pgr_bdAstarCost.rst:174
+msgid "and/or **heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:130
+msgid "Directed using Heuristic 3 and a factor of 3.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:141
+msgid "pgr_bdAstarCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:152
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to the ``end_vid`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:154
+msgid "Undirected graph with Heuristic 4"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:165
+msgid "pgr_bdAstarCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:176
+msgid ""
+"This usage finds the shortest path from each ``start_vid`` in ``start_vids``"
+" to each ``end_vid`` in ``end_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:178
+msgid "Directed graph with a factor of 0.5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:185
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:204
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:205
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:206
+msgid ""
+"`Migration Guide <https://github.com/cvvergara/pgrouting/wiki/Migration-"
+"Guide#pgr_bdastar>`_"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:207
+msgid "http://www.boost.org/libs/graph/doc/astar_search.html"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:208
+msgid "http://en.wikipedia.org/wiki/A*_search_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:211
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:212
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCost.rst:213
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_bdAstarCostMatrix.po b/locale/ru/LC_MESSAGES/pgr_bdAstarCostMatrix.po
new file mode 100644
index 0000000..c8738fa
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_bdAstarCostMatrix.po
@@ -0,0 +1,536 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:13
+msgid "pgr_bdAstarCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:18
+msgid ""
+"``pgr_bdAstarCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdAstar`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:68
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:64
+msgid "on a **directed** graph"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:65
+msgid "with **heuristic**'s value 5"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:66
+msgid "with **factor**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:67
+msgid "with **epsilon**'s value 1"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:70
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:82
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:95
+msgid ""
+"This usage calculates the cost from the each ``start_vid`` in ``start_vids``"
+" to each ``start_vid`` in ``start_vids`` allowing the user to choose"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:91
+msgid "if the graph is **directed** or **undirected**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:92
+msgid "**heuristic**,"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:93
+msgid "and/or **factor**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:94
+msgid "and/or **epsilon**."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:97
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:99
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:107
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for astar like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/bdAstar-family.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/bdAstar-family.rst:10 ../../build/doc/bdAstar-family.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgRouting-concepts.rst:23
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "**x1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+msgid "X coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "**y1**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Y coordinate of `source` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "**x2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "X coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "**y2**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "Y coordinate of `target` vertex."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:30
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:31
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:9
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:10
+msgid "Starting vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11 ../../build/doc/bdAstar-family.rst:13
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:11
+msgid "Starting vertices identifierers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:12
+msgid "Ending vertex identifier."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:13
+msgid "Ending vertices identifiers."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:14
+msgid "Optional."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:16
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:17
+msgid "Default is ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "**heuristic**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:19
+msgid "(optional). Heuristic number. Current valid values 0~5. Default ``5``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:21
+msgid "0: h(v) = 0 (Use this value to compare with pgr_dijkstra)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:22
+msgid "1: h(v) abs(max(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:23
+msgid "2: h(v) abs(min(dx, dy))"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:24
+msgid "3: h(v) = dx * dx + dy * dy"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:25
+msgid "4: h(v) = sqrt(dx * dx + dy * dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:26
+msgid "5: h(v) = abs(dx) + abs(dy)"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid "**factor**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28 ../../build/doc/bdAstar-family.rst:29
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:28
+msgid ""
+"(optional). For units manipulation. :math:`factor > 0`. Default ``1``. see "
+":ref:`astar_factor`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid "**epsilon**"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:29
+msgid ""
+"(optional). For less restricted results. :math:`epsilon >= 1`. Default "
+"``1``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:135
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdAstarCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_bdDijkstra.po b/locale/ru/LC_MESSAGES/pgr_bdDijkstra.po
new file mode 100644
index 0000000..b05e40f
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_bdDijkstra.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstra.rst:13
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:15
+msgid ""
+"``pgr_bdDijkstra`` — Returns the shortest path(s) using Bidirectional "
+"Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:23
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:24
+msgid "pgr_bdDijkstra(one to one) 2.0.0, Signature changed 2.4.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:25
+msgid "pgr_bdDijkstra(other signatures) 2.5.0"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:28
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:60
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:67
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:80
+msgid "pgr_bdDijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:87
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:89
+#: ../../build/doc/pgr_bdDijkstra.rst:112
+#: ../../build/doc/pgr_bdDijkstra.rst:141
+#: ../../build/doc/pgr_bdDijkstra.rst:170
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:90
+#: ../../build/doc/pgr_bdDijkstra.rst:113
+#: ../../build/doc/pgr_bdDijkstra.rst:142
+#: ../../build/doc/pgr_bdDijkstra.rst:171
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:103
+msgid "pgr_bdDijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:110
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:115
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:118
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:119
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:132
+msgid "pgr_bdDijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:139
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:144
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:147
+#: ../../build/doc/pgr_bdDijkstra.rst:176
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:148
+#: ../../build/doc/pgr_bdDijkstra.rst:177
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:161
+msgid "pgr_bdDijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:173
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:179
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:190
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:208
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:210
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:211
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:212
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:213
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstra.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_bdDijkstraCost.po b/locale/ru/LC_MESSAGES/pgr_bdDijkstraCost.po
new file mode 100644
index 0000000..0516529
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_bdDijkstraCost.po
@@ -0,0 +1,470 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:13
+msgid "pgr_bdDijkstraCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:15
+msgid ""
+"``pgr_bdDijkstraCost`` — Returns the shortest path(s)'s cost using "
+"Bidirectional Dijkstra algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:23
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:30
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:46
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:52
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:59
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:72
+msgid "pgr_bdDijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:80
+#: ../../build/doc/pgr_bdDijkstraCost.rst:102
+#: ../../build/doc/pgr_bdDijkstraCost.rst:130
+#: ../../build/doc/pgr_bdDijkstraCost.rst:158
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:81
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:94
+msgid "pgr_bdDijkstraCost One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:103
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:105
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:108
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:109
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:122
+msgid "pgr_bdDijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:131
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:133
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:136
+#: ../../build/doc/pgr_bdDijkstraCost.rst:164
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:137
+#: ../../build/doc/pgr_bdDijkstraCost.rst:165
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:150
+msgid "pgr_bdDijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:159
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:161
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:167
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:178
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:195
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:197
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:198
+msgid ":ref:`pgr_bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:199
+msgid ""
+"http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:200
+msgid "https://en.wikipedia.org/wiki/Bidirectional_search"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:203
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:204
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCost.rst:205
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po b/locale/ru/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
new file mode 100644
index 0000000..0b0a2ae
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_bdDijkstraCostMatrix.po
@@ -0,0 +1,382 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:13
+msgid "pgr_bdDijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_bdDijkstraCostMatrix`` - Calculates the a cost matrix using "
+":ref:`pgr_bdDijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:27
+msgid "Availability: 2.5.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:35
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:38
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:66
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:86
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:88
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:110
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:111
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:112
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:122
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:124
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:132
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:134
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:135
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:136
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:137
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:140
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:141
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bdDijkstraCostMatrix.rst:142
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_biconnectedComponents.po b/locale/ru/LC_MESSAGES/pgr_biconnectedComponents.po
new file mode 100644
index 0000000..f4db188
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_biconnectedComponents.po
@@ -0,0 +1,349 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:13
+msgid "pgr_biconnectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:15
+msgid ""
+"``pgr_biconnectedComponents`` — Return the biconnected components of an "
+"undirected graph. In particular, the algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:31
+msgid ""
+"The biconnected components of an undirected graph are the maximal subsets of"
+" vertices such that the removal of a vertex from particular component will "
+"not disconnect the component. Unlike connected components, vertices may "
+"belong to multiple biconnected components. Vertices can be present in "
+"multiple biconnected components, but each edge can only be contained in a "
+"single biconnected component. So, the output only has edge version."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:36
+msgid "This implementation can only be used with an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:41
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:43
+msgid "Components are described by edges"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:45
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:47
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:48
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:50
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:65
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:78
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for biconnected components, connected "
+"components (edge version) and strongly connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, edge)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum edge identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:94
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:96
+msgid "http://en.wikipedia.org/wiki/Biconnected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:97
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:100
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:101
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_biconnectedComponents.rst:102
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_boykovKolmogorov.po b/locale/ru/LC_MESSAGES/pgr_boykovKolmogorov.po
new file mode 100644
index 0000000..84d76a4
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_boykovKolmogorov.po
@@ -0,0 +1,435 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:14
+msgid "pgr_boykovKolmogorov - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:20
+msgid ""
+"``pgr_boykovKolmogorov`` — Calculates the flow on the graph edges that "
+"maximizes the flow from the sources to the targets using Boykov Kolmogorov "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowBoykovKolmogorov"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:42
+msgid "Running time: Polynomial"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:61
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:63
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:84
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:103
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:105
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:124
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:126
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:141
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:159
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:161
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_pushRelabel <pgr_pushRelabel>`, "
+":ref:`pgr_EdmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:162
+msgid "http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_boykovKolmogorov.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_bridges.po b/locale/ru/LC_MESSAGES/pgr_bridges.po
new file mode 100644
index 0000000..a80bf4e
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_bridges.po
@@ -0,0 +1,310 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_bridges.rst:13
+msgid "pgr_bridges - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:16
+msgid "``pgr_bridges`` - Return the bridges of an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:31
+msgid ""
+"A bridge is an edge of an undirected graph whose deletion increases its "
+"number of connected components. This implementation can only be used with an"
+" undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:40
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:42
+msgid "`edge` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:44
+msgid "Running time: :math:`O(E * (V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:47
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:59
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:72
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the return values for bridges"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:88
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:90
+msgid "http://en.wikipedia.org/wiki/Bridge_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:91
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:94
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:95
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_bridges.rst:96
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_connectedComponents.po b/locale/ru/LC_MESSAGES/pgr_connectedComponents.po
new file mode 100644
index 0000000..2474096
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_connectedComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_connectedComponents.rst:13
+msgid "pgr_connectedComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:16
+msgid ""
+"``pgr_connectedComponents`` — Return the connected components of an "
+"undirected graph using a DFS-based approach. In particular, the algorithm "
+"implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:22
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:32
+msgid ""
+"A connected component of an undirected graph is a set of vertices that are "
+"all reachable from each other. This implementation can only be used with an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:39
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:41
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:43
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:45
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:46
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:48
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:63
+msgid "The signature is for a **undirected** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:76
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:92
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:94
+msgid "http://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:95
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:98
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:99
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_connectedComponents.rst:100
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_contractGraph.po b/locale/ru/LC_MESSAGES/pgr_contractGraph.po
new file mode 100644
index 0000000..8d27664
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_contractGraph.po
@@ -0,0 +1,488 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_contractGraph.rst:13
+msgid "pgr_contractGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:15
+msgid ""
+"``pgr_contractGraph`` — Performs graph contraction and returns the "
+"contracted vertices and edges."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:23
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:30
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:32
+msgid ""
+"Contraction reduces the size of the graph by removing some of the vertices "
+"and edges and, for example, might add edges that represent a sequence of "
+"original edges decreasing the total time and space used in graph algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:52
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:38
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:40
+msgid "There are two types of contraction methods used namely,"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:42
+msgid "Dead End Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:43
+msgid "Linear Contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:45
+msgid "The values returned include the added edges and contracted vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:47
+msgid "The returned values are ordered as follows:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:49
+msgid "column `id` ascending when type = `v`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:50
+msgid "column `id` descending when type = `e`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:55
+msgid "Signature Summary:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:57
+msgid "The pgr_contractGraph function has the following signatures:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:68
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:74
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:80
+msgid "Making a dead end contraction and a linear contraction."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:87
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:93
+msgid ""
+"Making a dead end contraction and a linear contraction and vertex 2 is "
+"forbidden from contraction"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_contractGraph.rst:109
+#: ../../build/doc/pgr_contractGraph.rst:130
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_contractGraph.rst:136
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:111
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+msgid "**contraction_order**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:112
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "Ordered contraction operations."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:113
+msgid "1 = Dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:114
+msgid "2 = Linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid "**forbidden_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:115
+msgid ""
+"(optional). Identifiers of vertices forbidden from contraction. Default is "
+"an empty array."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid "**max_cycles**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:116
+msgid ""
+"(optional). Number of times the contraction operations on "
+"`contraction_order` will be performed. Default is 1."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:117
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:118
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:123
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:125
+msgid ""
+"RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:127
+msgid "The function returns a single row. The columns of the row are:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:132
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:133
+msgid "**type**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "Type of the `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:134
+msgid "'v' when `id` is an identifier of a vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:135
+msgid "'e' when `id` is an identifier of an edge."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:136
+#: ../../build/doc/pgr_contractGraph.rst:146
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:143
+msgid "Identifier of:"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:137
+msgid "the vertex when `type = 'v'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:139
+msgid "The vertex belongs to the edge_table passed as a parameter."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:140
+msgid "the edge when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:142
+msgid "The `id` is a decreasing sequence starting from **-1**."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:144
+msgid "Representing a pseudo `id` as is not incorporated into the edge_table."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "**contracted_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:145
+msgid "Array of contracted vertex identifiers."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:146
+msgid ""
+"Identifier of the source vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:147
+msgid ""
+"Identifier of the target vertex of the current edge `id`. Valid values when "
+"`type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:148
+msgid ""
+"Weight of the edge (`source`, `target`). Valid values when `type = 'e'`."
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:152
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:154
+msgid "Only dead end contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:160
+msgid "Only linear contraction"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:168
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:169
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_contractGraph.rst:170
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_createTopology.po b/locale/ru/LC_MESSAGES/pgr_createTopology.po
new file mode 100644
index 0000000..44a282e
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_createTopology.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createTopology.rst:13
+msgid "pgr_createTopology"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:18
+msgid ""
+"``pgr_createTopology`` — Builds a network topology based on the geometry "
+"information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:24
+#: ../../build/doc/pgr_createTopology.rst:72
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:26
+msgid ""
+"``OK`` after the network topology has been built and the vertices table "
+"created."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:27
+msgid "``FAIL`` when the network topology was not built due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:42
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:45
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:46
+msgid "The topology creation function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:48
+msgid "``text`` Network table name. (may contain the schema name AS well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:49
+msgid ""
+"``float8`` Snapping tolerance of disconnected edges. (in projection unit)"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:50
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:52
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:53
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:54
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:56
+msgid "``boolean`` Clean any previous topology. Default value is ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:60
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:62
+msgid "The ``source`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:63
+msgid "The ``target`` column values will change."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:65
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:67
+msgid "``id``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:68
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:69
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:70
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:74
+msgid "``OK`` after the network topology has been built."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:76
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:77
+msgid "Fills ``id`` and ``the_geom`` columns of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:78
+msgid ""
+"Fills the source and target columns of the edge table referencing the ``id``"
+" of the vertices table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:81
+msgid "``FAIL`` when the network topology was not built due to an error:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:83
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:84
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:85
+msgid "The names of source , target or id are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:86
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:90
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:91
+msgid ""
+"The vertices table is a requirement of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:93
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:95
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:96
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:97
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:98
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:99
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:100
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:103
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:104
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:107
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:110
+msgid "The simplest way to use pgr_createTopology is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:118
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:119
+msgid "We get the same result AS the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``id`` of the table ``ege_table`` is passed to "
+"the function as the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``the_geom`` is passed to the function as the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:136
+#: ../../build/doc/pgr_createTopology.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:137
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:153
+#: ../../build/doc/pgr_createTopology.rst:219
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:154
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:160
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with ``id "
+"= 5``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:166
+#: ../../build/doc/pgr_createTopology.rst:227
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:176
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:178
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:185
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:186
+msgid ""
+"The arguments need to be given in the order described in the parameters."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:188
+msgid ""
+"Note that this example uses clean flag. So it recreates the whole vertices "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"An error would occur when the arguments are not given in the appropiriate "
+"order:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"In this example, the column ``gid`` of the table ``mytable`` is passed to "
+"the function AS the geometry column,"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:0
+msgid ""
+"and the geometry column ``mygeom`` is passed to the function AS the id "
+"column."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:206
+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 ""
+
+#: ../../build/doc/pgr_createTopology.rst:220
+msgid "Based on id:"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:235
+msgid "Examples with full output"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:237
+msgid ""
+"This example start a clean topology, with 5 edges, and then its incremented "
+"to the rest of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:243
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:247
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:249
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:250
+msgid ""
+":ref:`pgr_create_vert_table` to reconstruct the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:251
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:254
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:255
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createTopology.rst:256
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_createVerticesTable.po b/locale/ru/LC_MESSAGES/pgr_createVerticesTable.po
new file mode 100644
index 0000000..191059e
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_createVerticesTable.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_createVerticesTable.rst:13
+msgid "pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:18
+msgid ""
+"``pgr_createVerticesTable`` — Reconstructs the vertices table based on the "
+"source and target information."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:22
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:24
+#: ../../build/doc/pgr_createVerticesTable.rst:62
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:26
+#: ../../build/doc/pgr_createVerticesTable.rst:64
+msgid "``OK`` after the vertices table has been reconstructed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:27
+#: ../../build/doc/pgr_createVerticesTable.rst:69
+msgid ""
+"``FAIL`` when the vertices table was not reconstructed due to an error."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:43
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:44
+msgid ""
+"The reconstruction of the vertices table function accepts the following "
+"parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:46
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:47
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:48
+msgid ""
+"``text`` Source column name of the network table. Default value is "
+"``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:49
+msgid ""
+"``text`` Target column name of the network table. Default value is "
+"``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:50
+msgid ""
+"``text`` Condition to SELECT a subset or rows. Default value is ``true`` "
+"to indicate all rows."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:54
+msgid "The ``edge_table`` will be affected"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:56
+msgid ""
+"An index will be created, if it doesn't exists, to speed up the process to "
+"the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:58
+msgid "``the_geom``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:59
+msgid "``source``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:60
+msgid "``target``"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:66
+msgid "Creates a vertices table: <edge_table>_vertices_pgr."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:67
+msgid ""
+"Fills ``id`` and ``the_geom`` columns of the vertices table based on the "
+"source and target columns of the edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:71
+msgid ""
+"A required column of the Network table is not found or is not of the "
+"appropriate type."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:72
+msgid "The condition is not well formed."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:73
+msgid "The names of source, target are the same."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:74
+msgid "The SRID of the geometry could not be determined."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:77
+msgid "The Vertices Table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:78
+msgid ""
+"The vertices table is a requierment of the :ref:`pgr_analyzeGraph "
+"<pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` "
+"functions."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:80
+msgid "The structure of the vertices table is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:82
+msgid "``bigint`` Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:83
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex."
+" See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:84
+msgid ""
+"``integer`` Indicator that the vertex might have a problem. See "
+":ref:`pgr_analyzeGraph <pgr_analyze_graph>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:85
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:86
+msgid ""
+"``integer`` Number of vertices in the edge_table that reference this vertex "
+"as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:87
+msgid "``geometry`` Point geometry of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:90
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:91
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:94
+msgid "Usage when the edge table's columns MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:97
+msgid "The simplest way to use pgr_createVerticesTable is:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:104
+msgid "When the arguments are given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:109
+msgid "We get the same result as the simplest way to use the function."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:111
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:128
+#: ../../build/doc/pgr_createVerticesTable.rst:205
+msgid "When using the named notation"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:129
+#: ../../build/doc/pgr_createVerticesTable.rst:206
+msgid "The order of the parameters do not matter:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:139
+msgid ""
+"Parameters defined with a default value can be omitted, as long as the value"
+" matches the default:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:146
+#: ../../build/doc/pgr_createVerticesTable.rst:220
+msgid "Selecting rows using rows_where parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:147
+msgid "Selecting rows based on the id."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:153
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``id`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:159
+#: ../../build/doc/pgr_createVerticesTable.rst:243
+msgid ""
+"Selecting the rows where the geometry is near the geometry of the row with "
+"``gid`` =100 of the table ``othertable``."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:170
+msgid "Usage when the edge table's columns DO NOT MATCH the default values:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:172
+msgid "For the following table"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:180
+msgid "Using positional notation:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:181
+msgid ""
+"The arguments need to be given in the order described in the parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:0
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:216
+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 ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:221
+msgid "Selecting rows based on the gid."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:231
+msgid ""
+"Selecting the rows where the geometry is near the geometry of row with "
+"``gid`` =5 ."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:282
+msgid "The example uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:286
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:288
+msgid ":ref:`topology` for an overview of a topology for routing algorithms."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:289
+msgid ""
+":ref:`pgr_createTopology <pgr_create_topology>` to create a topology based "
+"on the geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:290
+msgid ""
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:291
+msgid ":ref:`pgr_analyze_oneway` to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:294
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:295
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_createVerticesTable.rst:296
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_dijkstra.po b/locale/ru/LC_MESSAGES/pgr_dijkstra.po
new file mode 100644
index 0000000..45cbd10
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_dijkstra.po
@@ -0,0 +1,621 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid ""
+"``pgr_dijkstra`` — Returns the shortest path(s) using Dijkstra algorithm. In"
+" particular, the Dijkstra algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:24
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:25
+msgid "pgr_dijkstra(one to one) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:26
+msgid "pgr_dijkstra(other signatures) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:31
+msgid ""
+"Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra "
+"in 1956. It is a graph search algorithm that solves the shortest path "
+"problem for a graph with non-negative edge path costs, producing a shortest "
+"path from a starting vertex (``start_vid``) to an ending vertex "
+"(``end_vid``). This implementation can be used with a directed graph and an "
+"undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:60
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:41
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:42
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:44
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:46
+msgid "The `agg_cost` the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:48
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:50
+msgid "The `agg_cost` the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:52
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:54
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:56
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:57
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:59
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:63
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:78
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:84
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:91
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:104
+msgid "pgr_dijkstra One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:113 ../../build/doc/pgr_dijkstra.rst:136
+#: ../../build/doc/pgr_dijkstra.rst:167 ../../build/doc/pgr_dijkstra.rst:197
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:114 ../../build/doc/pgr_dijkstra.rst:137
+#: ../../build/doc/pgr_dijkstra.rst:168 ../../build/doc/pgr_dijkstra.rst:198
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:127
+msgid "pgr_dijkstra One to many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:137
+msgid ""
+"This signature finds the shortest path from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:139
+msgid ""
+"Using this signature, will load once the graph and perform a one to one "
+"`pgr_dijkstra` where the starting vertex is fixed, and stop when all "
+"``end_vids`` are reached."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:142
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:143
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:158
+msgid "pgr_dijkstra Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:168
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:170
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"one `pgr_dijkstra` where the ending vertex is fixed."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:173 ../../build/doc/pgr_dijkstra.rst:203
+msgid ""
+"The result is the union of the results of the one to one `pgr_dijkstra`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:174 ../../build/doc/pgr_dijkstra.rst:204
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:188
+msgid "pgr_dijkstra Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:198
+msgid ""
+"This signature finds the shortest path from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:200
+msgid ""
+"Using this signature, will load once the graph and perform several one to "
+"Many `pgr_dijkstra` for all ``start_vids``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:206
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:215
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstra.rst:228
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:225
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:230
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231 ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:231
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232 ../../build/doc/pgr_dijkstra.rst:234
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:232
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:233
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:234
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:235
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:236
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:248
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:250
+msgid ""
+"The examples of this section are based on the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:252
+msgid ""
+"The examples include combinations from starting vertices 2 and 11 to ending "
+"vertices 3 and 5 in a directed and undirected graph with and with out "
+"reverse_cost."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:256
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:258
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:267
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:269
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:277
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:279
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:287
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:289
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:297
+msgid "Equvalences between signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:299
+msgid ""
+"For queries marked as ``directed`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:301 ../../build/doc/pgr_dijkstra.rst:313
+msgid "The examples in this section use the following:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:303
+msgid ":ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:311
+msgid ""
+"For queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` "
+"columns"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:315
+msgid ":ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:324
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:326
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:327
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:330
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:331
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:332
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_dijkstraCost.po b/locale/ru/LC_MESSAGES/pgr_dijkstraCost.po
new file mode 100644
index 0000000..a9193fb
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_dijkstraCost.po
@@ -0,0 +1,473 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCost.rst:13
+msgid "pgr_dijkstraCost"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:19
+msgid "``pgr_dijkstraCost``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:21
+msgid ""
+"Using Dijkstra algorithm implemented by Boost.Graph, and extract only the "
+"aggregate cost of the shortest path(s) found, for the combination of "
+"vertices given."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:27
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:30
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:31
+msgid "pgr_dijkstraCost(all signatures) 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:33
+msgid ""
+"The ``pgr_dijkstraCost`` algorithm, is a good choice to calculate the sum of"
+" the costs of the shortest path for a subset of pairs of nodes of the graph."
+" We make use of the Boost's implementation of dijkstra which runs in "
+":math:`O(V \\log V + E)` time."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:39
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:42
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:43
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"nodes in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:44
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:45
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:47
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:49
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:51
+msgid "The `agg_cost` int the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:55
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:57
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:60
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:62
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:64
+msgid "Any duplicated value in the `start_vids` or `end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:66
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:68
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:69
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:71
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:74
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:89
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:95
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:97
+msgid ""
+"The minimal signature is for a **directed** graph from one ``start_vid`` to "
+"one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:106
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:117
+msgid "pgr_dijkstraCost One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:121
+#: ../../build/doc/pgr_dijkstraCost.rst:150
+#: ../../build/doc/pgr_dijkstraCost.rst:176
+#: ../../build/doc/pgr_dijkstraCost.rst:201
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:122
+#: ../../build/doc/pgr_dijkstraCost.rst:151
+#: ../../build/doc/pgr_dijkstraCost.rst:177
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:141
+msgid "pgr_dijkstraCost One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:152
+msgid ""
+"This signature performs a Dijkstra from one ``start_vid`` to each "
+"``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:167
+msgid "pgr_dijkstraCost Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:178
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to one ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:192
+msgid "pgr_dijkstraCost Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:202
+msgid ""
+"This signature performs a Dijkstra from each ``start_vid`` in "
+"``start_vids`` to each ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:213
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:229
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:231
+msgid "Demonstration of repeated values are ignored, and result is sorted."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:237
+msgid "Making `start_vids` the same as `end_vids`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:246
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:248
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:249
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:252
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:253
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCost.rst:254
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_dijkstraCostMatrix.po b/locale/ru/LC_MESSAGES/pgr_dijkstraCostMatrix.po
new file mode 100644
index 0000000..95cf121
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_dijkstraCostMatrix.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:13
+msgid "pgr_dijkstraCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:18
+msgid ""
+"``pgr_dijkstraCostMatrix`` - Calculates the a cost matrix using "
+"pgr_dijktras."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:32
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:36
+msgid "Using Dijkstra algorithm, calculate and return a cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:56
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:67
+msgid "Cost matrix for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:79
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:87
+msgid "Cost matrix for an undirected graph for vertices 1, 2, 3, and 4."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:89
+msgid "This example returns a symmetric cost matrix."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:97
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:106
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:109
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:111
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:112
+msgid "Array of identifiers of the vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:113
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:123
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:125
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:133
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:135
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:136
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:137
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:138
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:141
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:142
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraCostMatrix.rst:143
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_dijkstraVia.po b/locale/ru/LC_MESSAGES/pgr_dijkstraVia.po
new file mode 100644
index 0000000..0a3c5f1
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_dijkstraVia.po
@@ -0,0 +1,480 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_dijkstraVia.rst:13
+msgid "pgr_dijkstraVia - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:19
+msgid ""
+"``pgr_dijkstraVia`` — Using dijkstra algorithm, it finds the route that goes"
+" through a list of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:30
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:32
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:34
+msgid ""
+"Given a list of vertices and a graph, this function is equivalent to finding"
+" the shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all"
+" :math:`i < size\\_of(vertex_via)`."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:37
+msgid "The paths represents the sections of the route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:39
+msgid "This is a proposed function"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:42
+msgid "Signatrue Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:53
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:59
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:67
+msgid "Find the route that visits the vertices 1 3 9 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:77
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:86
+msgid ""
+"Find the route that visits the vertices 1 3 9 in that order on an "
+"undirected graph, avoiding U-turns when possible"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:94
+msgid "Description of the Signature"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+#: ../../build/doc/pgr_dijkstraVia.rst:124
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+#: ../../build/doc/pgr_dijkstraVia.rst:105
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:7
+#: ../../build/doc/pgr_dijkstraVia.rst:108
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_dijkstraVia.rst:110
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "**via_vertices**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Array of ordered vertices identifiers that are going to be visited."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "When ``false`` the graph is considered as Undirected."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid "**strict**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``false``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "When ``false`` ignores missing paths returning all paths found"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "When ``true`` if a path is missing stops and returns `EMPTY SET`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid "**U_turn_on_edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When ``true`` departing from a visited vertex will not try to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is allowed."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When ``false`` when a departing from a visited vertex tries to avoid using "
+"the edge used to reach it. In other words, U turn using the edge with same "
+"`id` is used when no other path is found."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:111
+msgid "Array of vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:112
+#: ../../build/doc/pgr_dijkstraVia.rst:114
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:113
+msgid ""
+"(optional) ignores if a subsection of the route is missing and returns "
+"everything it found Default is true (is directed). When set to false the "
+"graph is considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:119
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:121
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:126
+msgid "Sequential value starting from 1."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "**path_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:127
+msgid "Identifier of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:128
+msgid "Sequential value starting from 1 for the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:129
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:130
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:131
+msgid "Identifier of the node in the path from start_vid to end_vid."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:132
+msgid ""
+"Identifier of the edge used to go from node to the next node in the path "
+"sequence. -1 for the last node of the path. -2 for the last node of the "
+"route."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:133
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the route "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:134
+msgid "Total cost from ``start_vid`` to ``end_vid`` of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid "**route_agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:135
+msgid ""
+"Total cost from ``start_vid`` of ``path_pid = 1`` to ``end_vid`` of the "
+"current ``path_pid`` ."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:142
+msgid "Find the route that visits the vertices 1 5 3 9 4 in that order"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:148
+msgid "What's the aggregate cost of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:154
+msgid ""
+"What's the route's aggregate cost of the route at the end of the third path?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:160
+msgid "How are the nodes visited in the route?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:166
+msgid ""
+"What are the aggregate costs of the route when the visited vertices are "
+"reached?"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:172
+msgid ""
+"show the route's seq and aggregate cost and a status of \"passes in front\" "
+"or \"visits\" node 9"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:179
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:181
+msgid "http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:182
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:185
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:186
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstraVia.rst:187
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_drivingDistance.po b/locale/ru/LC_MESSAGES/pgr_drivingDistance.po
new file mode 100644
index 0000000..77f7b8e
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_drivingDistance.po
@@ -0,0 +1,391 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_drivingDistance.rst:13
+msgid "pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:19
+msgid ""
+"``pgr_drivingDistance`` - Returns the driving distance from a start node."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:28
+msgid "Availability"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:29
+msgid "pgr_drivingDistance(single vertex) 2.0.0, signature change 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:30
+msgid "pgr_drivingDistance(multiple vertices) 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:33
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:35
+msgid ""
+"Using the Dijkstra algorithm, extracts all the nodes that have costs less "
+"than or equal to the value ``distance``. The edges extracted will conform to"
+" the corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:39
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:51
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:57
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:70
+msgid "Driving Distance From A Single Starting Vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:82
+msgid "Driving Distance From Multiple Starting Vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:90
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_drivingDistance.rst:101
+#: ../../build/doc/pgr_drivingDistance.rst:119
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:98
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:103
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:123
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:104
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:105
+msgid "Array of identifiers of the starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+#: ../../build/doc/pgr_drivingDistance.rst:125
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:106
+msgid "Upper limit for the inclusion of the node in the result."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:107
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:108
+msgid ""
+"(optional). When ``true`` the node will only appear in the closest "
+"``start_vid`` list. Default is ``false`` which resembles several calls "
+"using the single starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:114
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:116
+msgid "Returns set of ``(seq [, start_v], node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+#: ../../build/doc/pgr_drivingDistance.rst:122
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:121
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:123
+msgid ""
+"Identifier of the node in the path within the limits from ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:124
+msgid ""
+"Identifier of the edge used to arrive to ``node``. ``0`` when the ``node`` "
+"is the ``start_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:125
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:126
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:132
+msgid "Additional Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:135
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:137
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:144
+msgid ""
+"Examples for queries marked as ``undirected`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:146
+msgid "The examples in this section use the following :ref:`fig2`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:154
+msgid "Examples for queries marked as ``directed`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:156
+msgid "The examples in this section use the following :ref:`fig3`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:165
+msgid "Examples for queries marked as ``undirected`` with ``cost`` column"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:167
+msgid "The examples in this section use the following :ref:`fig4`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:177
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:178
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:179
+msgid ":doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_drivingDistance.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_edgeDisjointPaths.po b/locale/ru/LC_MESSAGES/pgr_edgeDisjointPaths.po
new file mode 100644
index 0000000..54a0ffe
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_edgeDisjointPaths.po
@@ -0,0 +1,541 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:14
+msgid "pgr_edgeDisjointPaths - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:19
+msgid ""
+"``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:28
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:36
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:38
+msgid ""
+"Calculates the edge disjoint paths between two groups of vertices. Utilizes "
+"underlying maximum flow algorithms to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:42
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "The main characterics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:45
+msgid "Calculates the edge disjoint paths between any two groups of vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:46
+msgid ""
+"Returns EMPTY SET when source and destination are the same, or cannot be "
+"reached."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:47
+msgid "The graph can be directed or undirected."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:48
+msgid "One to many, many to one, many to many versions are also supported."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:49
+msgid "Uses :ref:`pgr_boykovKolmogorov` to calculate the paths."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:52
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:67
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:73
+msgid "Minimal use"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:81
+msgid ""
+"The minimal use is for a **directed** graph from one ``start_vid`` to one "
+"``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:93
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:98
+msgid ""
+"This signature finds the set of dijoint paths from one ``start_vid`` to one "
+"``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:96
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:120
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:149
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:175
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:97
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:121
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:150
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:176
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:117
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:126
+msgid ""
+"This signature finds the sset of disjoint paths from the ``start_vid`` to "
+"each one of the ``end_vid`` in ``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:122
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:151
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:177
+msgid ""
+"The result is equivalent to the union of the results of the one to one "
+"`pgr_edgeDisjointPaths`."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:123
+msgid ""
+"The extra ``end_vid`` in the result is used to distinguish to which path it "
+"belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:146
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to the ``end_vid``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:152
+msgid ""
+"The extra ``start_vid`` in the result is used to distinguish to which path "
+"it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"This signature finds the set of disjoint paths from each one of the "
+"``start_vid`` in ``start_vids`` to each one of the ``end_vid`` in "
+"``end_vids``:"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:178
+msgid ""
+"The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish"
+" to which path it belongs."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:195
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_dijkstra.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10 ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:15
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:10
+msgid "Identifier of the starting vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11 ../../build/doc/pgr_dijkstra.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:11
+msgid "Array of identifiers of starting vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:12
+msgid "Identifier of the ending vertex of the path."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:13
+msgid "Array of identifiers of ending vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "``true``"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:14
+msgid "When ``true`` Graph is considered `Directed`"
+msgstr ""
+
+#: ../../build/doc/pgr_dijkstra.rst:15
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a path"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"Returns set of ``(seq, path_seq [, start_vid] [, end_vid], node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Path identifier. Has value **1** for the first of a path. Used when there "
+"are multiple paths for the same ``start_vid`` to ``end_vid`` combination."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid ""
+"Relative position in the path. Has value **1** for the beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the node in the path from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence. ``-1`` for the last node of the path."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next node in the path "
+"sequence."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid "Aggregate cost from ``start_v`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:212
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:214
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:217
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:218
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edgeDisjointPaths.rst:219
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_edmondsKarp.po b/locale/ru/LC_MESSAGES/pgr_edmondsKarp.po
new file mode 100644
index 0000000..8523277
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_edmondsKarp.po
@@ -0,0 +1,438 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_edmondsKarp.rst:14
+msgid "pgr_edmondsKarp - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:20
+msgid ""
+"``pgr_edmondsKarp`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowEdmondsKarp"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:42
+msgid "Running time: :math:`O( V * E ^ 2)`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:64
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:83
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:85
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:104
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:106
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:125
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:127
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:142
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:160
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:162
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_PushRelabel <pgr_pushRelabel>`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:163
+msgid "http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:164
+msgid "https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:167
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:168
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_edmondsKarp.rst:169
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_eucledianTSP.po b/locale/ru/LC_MESSAGES/pgr_eucledianTSP.po
new file mode 100644
index 0000000..5b9be5e
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_eucledianTSP.po
@@ -0,0 +1,187 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_eucledianTSP.rst:13
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:18
+msgid ""
+"``pgr_eucledianTSP`` - Returns a route that visits all the coordinates pairs"
+" exactly once."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:22
+msgid "Availability: 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:24
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:26
+msgid ""
+"The travelling salesman problem (TSP) or travelling salesperson problem asks"
+" the following question:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:28
+msgid ""
+"Given a list of cities and the distances between each pair of cities, what "
+"is the shortest possible route that visits each city exactly once and "
+"returns to the origin city?"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:30
+msgid ""
+"This implementation uses simulated annealing to return the approximate "
+"solution when the input is given in the form of coordinates."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:33
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:48
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:54
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:63
+msgid ""
+"Because the documentation examples are auto generated and tested for non "
+"changing results, and the default is to have random execution, the example "
+"is wrapping the actual call."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:75
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:90
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:96
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:99
+msgid "Description of the coordinates SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:104
+msgid "Identifier of the coordinate. (optional)"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:105
+msgid "X value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:106
+msgid "Y value of the coordinate."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:110
+msgid ""
+"When the value of **id** is not given then the coordinates will receive an "
+"**id** starting from 1, in the order given."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:125
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:127
+msgid "Skipping the Simulated Annealing & showing some process information"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:135
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:139
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:140
+msgid "New in version 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:145
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:147
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:148
+msgid "http://en.wikipedia.org/wiki/Traveling_salesman_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:149
+msgid "http://en.wikipedia.org/wiki/Simulated_annealing"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:152
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:153
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_eucledianTSP.rst:154
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_floydWarshall.po b/locale/ru/LC_MESSAGES/pgr_floydWarshall.po
new file mode 100644
index 0000000..4fe9ece
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_floydWarshall.po
@@ -0,0 +1,348 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_floydWarshall.rst:13
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:18
+msgid ""
+"``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path "
+"for each pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspWarshall"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:31
+msgid ""
+"The Floyd-Warshall algorithm, also known as Floyd's algorithm, is a good "
+"choice to calculate the sum of the costs of the shortest path for each pair "
+"of nodes in the graph, for *dense graphs*. We make use of the Boost's "
+"implementation which runs in :math:`\\Theta(V^3)` time,"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:41
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:42
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:43
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:44
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:47
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:49
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:52
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:54
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:56
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:58
+msgid "**Recommended, use a bounding box of no more than 3500 edges.**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:61
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:70
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:77
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:84
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:95
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:103
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:110
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_floydWarshall.rst:123
+#: ../../build/doc/pgr_floydWarshall.rst:136
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:118
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:120
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:123
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:125
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:126
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:131
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:133
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:138
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:139
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:140
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:148
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:149
+msgid "Re-design of pgr_apspWarshall in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:152
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:154
+msgid ":ref:`pgr_johnson`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:155
+msgid ""
+"`Boost floyd-Warshall "
+"<http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ "
+"algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:156
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_floydWarshall.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_gsoc_vrppdtw.po b/locale/ru/LC_MESSAGES/pgr_gsoc_vrppdtw.po
new file mode 100644
index 0000000..7705842
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_gsoc_vrppdtw.po
@@ -0,0 +1,358 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:13
+msgid "pgr_gsoc_vrppdtw - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:19
+msgid ""
+"``pgr_gsoc_vrppdtw`` — Returns a solution for `Pick and Delivery` with `time"
+" windows` Vehicle Routing Problem"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:27
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:36
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:43
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:52
+msgid "Example: Show the id1"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:59
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:62
+msgid "Description of the sql query"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:65
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:89
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:102
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:67
+msgid "Identifier of the customer."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:69
+msgid "A value of ``0`` identifies the starting location"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "**x**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:71
+msgid "``X`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "**y**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:72
+msgid "``Y`` coordinate of the location."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "**demand**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:73
+msgid "How much is added / removed from the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:75
+msgid "Negative value is a delivery,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:76
+msgid "Positive value is a pickup,"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "**openTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:78
+msgid "The time relative to 0, when the customer opens."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "**closeTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:79
+msgid "The time relative to 0, when the customer closes."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "**serviceTime**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:80
+msgid "The duration of the loading / unloading."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid "**pIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:81
+msgid ""
+"Value used when the current customer is a Delivery to find the corresponding"
+" Pickup"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid "**dIndex**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:82
+msgid ""
+"Value used when the current customer is a Pickup to find the corresponding "
+"Delivery"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:86
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "**sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:91
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "**vehicle_num**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:92
+msgid "Maximum number of vehicles in the result. (currently is ignored)"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:93
+msgid "Capacity of the vehicle."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:97
+msgid "Description of the result"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:99
+msgid "RETURNS SET OF pgr_costResult[]:"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:104
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "**id1**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:105
+msgid "Current vehicle identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "**id2**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:106
+msgid "Customer identifier."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:107
+msgid ""
+"Previous ``cost`` plus `travel time` plus `wait time` plus `service time`."
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:108
+msgid ""
+"when ``id2 = 0`` for the second time for the same ``id1``, then has the "
+"total time for the current ``id1``"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:114
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:117
+msgid "Example: Total number of rows returned"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:123
+msgid "Example: Results for only id1 values: 1, 5, and 9"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:130
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:132
+msgid "The examples use :ref:`pickDeliverData`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:133
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:136
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:137
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_gsoc_vrppdtw.rst:138
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_johnson.po b/locale/ru/LC_MESSAGES/pgr_johnson.po
new file mode 100644
index 0000000..d0ef00b
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_johnson.po
@@ -0,0 +1,341 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_johnson.rst:13
+msgid "pgr_johnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:16
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:18
+msgid ""
+"``pgr_johnson`` - Returns the sum of the costs of the shortest path for each"
+" pair of nodes in the graph using Floyd-Warshall algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:24
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:27
+msgid "Availability: 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:28
+msgid "Renamed on 2.2.0, previous name pgr_apspJohnson"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:31
+msgid ""
+"The Johnson algorithm, is a good choice to calculate the sum of the costs of"
+" the shortest path for each pair of nodes in the graph, for *sparse graphs*."
+" It usees the Boost's implementation which runs in :math:`O(V E \\log V)` "
+"time,"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:37
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:57
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:40
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:41
+msgid ""
+"Returns the sum of the costs of the shortest path for each pair of nodes in "
+"the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:42
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:43
+msgid ""
+"Boost returns a :math:`V \\times V` matrix, where the infinity values. "
+"Represent the distance between vertices for which there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:46
+msgid ""
+"We return only the non infinity values in form of a set of `(start_vid, "
+"end_vid, agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:48
+msgid ""
+"Let be the case the values returned are stored in a table, so the unique "
+"index would be the pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:51
+msgid "For the undirected graph, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:53
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:55
+msgid "When `start_vid` = `end_vid`, the `agg_cost` = 0."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:60
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:69
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:76
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:83
+msgid "On a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:94
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:102
+msgid "On an undirected graph."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query (id is not necessary)"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:135
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_johnson.rst:122 ../../build/doc/pgr_johnson.rst:135
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:15
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:19
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:23
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:25
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:117
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:119
+msgid "Receives ``(edges_sql, directed)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:122
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:124
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:125
+msgid ""
+"(optional) Default is true (is directed). When set to false the graph is "
+"considered as Undirected"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:130
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:132
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137 ../../build/doc/pgr_johnson.rst:138
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:137
+msgid "Identifier of the starting vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:138
+msgid "Identifier of the ending vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:139
+msgid "Total cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:147
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:148
+msgid "Re-design of pgr_apspJohnson in Version 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:153
+msgid ":ref:`pgr_floydWarshall`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:154
+msgid ""
+"`Boost Johnson "
+"<http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html>`_ "
+"algorithm implementation."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:155
+msgid "Queries uses the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:158
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:159
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_johnson.rst:160
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_labelGraph.po b/locale/ru/LC_MESSAGES/pgr_labelGraph.po
new file mode 100644
index 0000000..e5d6532
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_labelGraph.po
@@ -0,0 +1,233 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_labelGraph.rst:15
+msgid "pgr_labelGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:18
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:20
+msgid ""
+"``pgr_labelGraph`` — Locates and labels sub-networks within a network which "
+"are not topologically connected."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:30
+msgid ""
+"Must be run after ``pgr_createTopology()``. No use of ``geometry`` column. "
+"Only ``id``, ``source`` and ``target`` columns are required."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:32
+msgid "The function returns:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:34
+msgid ""
+"``OK`` when a column with provided name has been generated and populated "
+"successfully. All connected edges will have unique similar integer values. "
+"In case of ``rows_where`` condition, non participating rows will have -1 "
+"integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:35
+msgid ""
+"``FAIL`` when the processing cannot be finished due to some error. Notice "
+"will be thrown accordingly."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:36
+msgid ""
+"``rows_where condition generated 0 rows`` when passed SQL condition has not "
+"been fulfilled by any row."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:48
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:50
+msgid ""
+"A network behind any routing query may consist of sub-networks completely "
+"isolated from each other. Possible reasons could be:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:52
+msgid "An island with no bridge connecting to the mainland."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:53
+msgid ""
+"An edge or mesh of edges failed to connect to other networks because of "
+"human negligence during data generation."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:54
+msgid "The data is not properly noded."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:55
+msgid "Topology creation failed to succeed."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:57
+msgid ""
+"pgr_labelGraph() will create an integer column (with the name provided by "
+"the user) and will assign same integer values to all those edges in the "
+"network which are connected topologically. Thus better analysis regarding "
+"network structure is possible. In case of ``rows_where`` condition, non "
+"participating rows will have -1 integer values."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:59
+msgid ""
+"Prerequisites: Must run ``pgr_createTopology()`` in order to generate "
+"``source`` and ``target`` columns. Primary key column ``id`` should also be "
+"there in the network table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:62
+msgid "Function accepts the following parameters:"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:64
+msgid "``text`` Network table name, with optional schema name."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:65
+msgid ""
+"``text`` Primary key column name of the network table. Default is ``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:66
+msgid ""
+"``text`` Source column name generated after ``pgr_createTopology()``. "
+"Default is ``source``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:67
+msgid ""
+"``text`` Target column name generated after ``pgr_createTopology()``. "
+"Default is ``target``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:68
+msgid ""
+"``text`` Column name which will hold the integer labels for each sub-graph. "
+"Default is ``subgraph``."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:69
+msgid ""
+"``text`` The SQL where condition. Default is ``true``, means the processing "
+"will be done on the whole table."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:75
+msgid "Example Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:77
+msgid "The sample data, has 3 subgraphs."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:85
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:87
+msgid ""
+"`pgr_createTopology "
+"<https://github.com/Zia-/pgrouting/blob/develop/src/common/sql/pgrouting_topology.sql>`_"
+" to create the topology of a table based on its geometry and tolerance "
+"value."
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:90
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:91
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_labelGraph.rst:92
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_lineGraph.po b/locale/ru/LC_MESSAGES/pgr_lineGraph.po
new file mode 100644
index 0000000..7b69209
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_lineGraph.po
@@ -0,0 +1,387 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_lineGraph.rst:13
+msgid "pgr_lineGraph - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:15
+msgid ""
+"``pgr_lineGraph`` — Transforms a given graph into its corresponding edge-"
+"based graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:20
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:31
+msgid "Given a graph G, its line graph L(G) is a graph such that:-"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:33
+msgid "each vertex of L(G) represents an edge of G"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:34
+msgid ""
+"two vertices of L(G) are adjacent if and only if their corresponding edges "
+"share a common endpoint in G."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:36
+msgid ""
+"The following figures show a graph (left, with blue vertices) and its Line "
+"Graph (right, with green vertices)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:39
+msgid "|first|"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:45
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:55
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:61
+msgid "Minimal signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:68
+msgid "The minimal signature is for a **directed** graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:81
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "This signature returns the Line Graph of the current graph:"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:89
+msgid ""
+"on a **directed** graph when ``directed`` flag is missing or is set to "
+"``true``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:90
+msgid "on an **undirected** graph when ``directed`` flag is set to ``false``."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:101
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_lineGraph.rst:112 ../../build/doc/pgr_lineGraph.rst:125
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:109
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:114
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:115
+msgid "When ``true`` the graph is considered as `Directed`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:116
+msgid "When ``false`` the graph is considered as `Undirected`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:120
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:122
+msgid "RETURNS SETOF (seq, source, target, cost, reverse_cost)"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:127
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129 ../../build/doc/pgr_lineGraph.rst:133
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:129
+msgid "Identifier of the source vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:131
+msgid "When `negative`: the source is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:133
+msgid "Identifier of the target vertex of the current edge `id`."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:135
+msgid "When `negative`: the target is the reverse edge in the original graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137 ../../build/doc/pgr_lineGraph.rst:141
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:137
+msgid "Weight of the edge (`source`, `target`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:139
+msgid ""
+"When `negative`: edge (`source`, `target`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:141
+msgid "Weight of the edge (`target`, `source`)."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:143
+msgid ""
+"When `negative`: edge (`target`, `source`) does not exist, therefore it’s "
+"not part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:147
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:154
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:156
+msgid "https://en.wikipedia.org/wiki/Line_graph"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:157
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:160
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:161
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_lineGraph.rst:162
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_maxCardinalityMatch.po b/locale/ru/LC_MESSAGES/pgr_maxCardinalityMatch.po
new file mode 100644
index 0000000..4c6c884
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_maxCardinalityMatch.po
@@ -0,0 +1,357 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:13
+msgid "pgr_maxCardinalityMatch - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:19
+msgid ""
+"``pgr_maxCardinalityMatch`` — Calculates a maximum cardinality matching in a"
+" graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:32
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:33
+msgid "Renamed 2.5.0, Previous name pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:34
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:38
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:39
+msgid ""
+"A matching or independent edge set in a graph is a set of edges without "
+"common vertices."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:40
+msgid ""
+"A maximum matching is a matching that contains the largest possible number "
+"of edges."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:42
+msgid "There may be many maximum matchings."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:43
+msgid "Calculates **one** possible maximum cardinality matching in a graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:45
+msgid "The graph can be **directed** or **undirected**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:46
+msgid "Running time: :math:`O( E*V * \\alpha(E,V))`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:48
+msgid ":math:`\\alpha(E,V)` is the inverse of the `Ackermann function`_."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:54
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:71
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:78
+msgid ""
+"The minimal use calculates one possible maximum cardinality matching on a "
+"**directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:90
+msgid "Complete signature"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:98
+msgid ""
+"The complete signature calculates one possible maximum cardinality matching."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:109
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:113
+msgid "Description of the SQL query"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:115
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:118
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:136
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:146
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:120
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:121
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:122
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid "**going**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "``ANY-NUMERIC``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:123
+msgid ""
+"A positive value represents the existence of the edge (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid "**coming**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:124
+msgid ""
+"A positive value represents the existence of the edge (target, source)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:127
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:129
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:130
+msgid "SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:133
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:138
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:139
+msgid "(optional) Determines the type of the graph. Default TRUE."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:143
+msgid "Description of the Result"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:148
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:149
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:150
+msgid "Identifier of the first end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:151
+msgid "Identifier of the second end point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:155
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:157
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:158
+msgid "http://www.boost.org/libs/graph/doc/maximum_matching.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:159
+msgid "https://en.wikipedia.org/wiki/Matching_%28graph_theory%29"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:160
+msgid "https://en.wikipedia.org/wiki/Ackermann_function"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:163
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:164
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxCardinalityMatch.rst:165
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_maxFlow.po b/locale/ru/LC_MESSAGES/pgr_maxFlow.po
new file mode 100644
index 0000000..0327a6f
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_maxFlow.po
@@ -0,0 +1,354 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "pgr_maxFlow - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:17
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:19
+msgid ""
+"``pgr_maxFlow`` — Calculates the maximum flow in a directed graph from the "
+"source(s) to the targets(s) using the Push Relabel algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:25
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:28
+msgid "Availability: 2.4.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:35
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:36
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:37
+msgid ""
+"When the maximum flow is 0 then there is no flow and **0** is returned."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:39
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:41
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:42
+msgid "Uses the :ref:`pgr_pushRelabel <pgr_pushRelabel>` algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:44
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:47
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:62
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:64
+msgid "Calculates the maximum flow from the `source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:82
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:84
+msgid "Calculates the maximum flow from the `source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:104
+msgid "Calculates the maximum flow from all the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:122
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:124
+msgid ""
+"Calculates the maximum flow from all of the `sources` to all of the "
+"`targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:138
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_maxFlow.rst:152 ../../build/doc/pgr_maxFlow.rst:169
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:149
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:154
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155 ../../build/doc/pgr_maxFlow.rst:157
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:155
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156 ../../build/doc/pgr_maxFlow.rst:158
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:156
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:157
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:158
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:166
+msgid "Description of the return value"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:171
+msgid "Maximum flow possible from the source(s) to the target(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:177
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:178
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:179
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:182
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:183
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:184
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_nodeNetwork.po b/locale/ru/LC_MESSAGES/pgr_nodeNetwork.po
new file mode 100644
index 0000000..b9b92db
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_nodeNetwork.po
@@ -0,0 +1,353 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_nodeNetwork.rst:13
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:16
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:18
+msgid "``pgr_nodeNetwork`` - Nodes an network edge table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:20
+msgid "Nicolas Ribot"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:21
+msgid "Nicolas Ribot, The source code is released under the MIT-X license."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:27
+msgid ""
+"The function reads edges from a not \"noded\" network table and writes the "
+"\"noded\" edges into a new table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:39
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:41
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:43
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:45
+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 ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:47
+msgid "Parameters"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:49
+msgid "``text`` Network table name. (may contain the schema name as well)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:50
+msgid "``float8`` tolerance for coincident points (in projection unit)dd"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:51
+msgid ""
+"``text`` Primary key column name of the network table. Default value is "
+"``id``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:52
+msgid ""
+"``text`` Geometry column name of the network table. Default value is "
+"``the_geom``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:53
+msgid "``text`` Suffix for the new table's. Default value is ``noded``."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:55
+msgid "The output table will have for ``edge_table_noded``"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:57
+msgid "``bigint`` Unique identifier for the table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:58
+msgid "``bigint`` Identifier of the edge in original table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:59
+msgid "``integer`` Segment number of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:60
+msgid ""
+"``integer`` Empty source column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:61
+msgid ""
+"``integer`` Empty target column to be used with :ref:`pgr_create_topology` "
+"function"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:62
+msgid "``geometry`` Geometry column of the noded network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:65
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:66
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:70
+msgid "Example"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:72
+msgid "Let's create the topology for the data in :doc:`sampledata`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:90
+msgid "Now we can analyze the network."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:114
+msgid ""
+"The analysis tell us that the network has a gap and an intersection. We try "
+"to fix the problem using:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:136
+msgid ""
+"Inspecting the generated table, we can see that edges 13,14 and 18 has been "
+"segmented"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:166
+msgid "We can create the topology of the new network"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:184
+msgid "Now let's analyze the new topology"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:210
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:243
+msgid "Comparing the results"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:245
+msgid "Comparing with the Analysis in the original edge_table, we see that."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "Before"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:248
+msgid "After"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "Table name"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:250
+msgid "edge_table_noded"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "All original fields"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:252
+msgid "Has only basic fields to do a topology analysis"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1,6,24"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:255
+msgid "Edges with 2 dead ends 17,18"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:257
+msgid ""
+"Edge 17's right node is a dead end because there is no other edge sharing "
+"that same node. (cnt=1)"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:254
+msgid "Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:261
+msgid "two isolated segments: 17 and 18 both they have 2 dead ends"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "No Isolated segments"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:262
+msgid "Edge 17 now shares a node with edges 14-1 and 14-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:263
+msgid "Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid "Gaps"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"There is a gap between edge 17 and 14 because edge 14 is near to the right "
+"node of edge 17"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:265
+msgid ""
+"Edge 14 was segmented Now edges: 14-1 14-2 17 share the same node The "
+"tolerance value was taken in account"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Intersections"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid "Edges 13 and 18 were intersecting"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:269
+msgid ""
+"Edges were segmented, So, now in the interection's point there is a node and"
+" the following edges share it: 13-1 13-2 18-1 18-2"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:274
+msgid ""
+"Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and "
+"18-2 into our edge-table, copying the data for dir,cost,and reverse cost "
+"with tho following steps:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:276
+msgid ""
+"Add a column old_id into edge_table, this column is going to keep track the "
+"id of the original edge"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:277
+msgid ""
+"Insert only the segmented edges, that is, the ones whose max(sub_id) >1"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:290
+msgid "We recreate the topology:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:310
+msgid ""
+"To get the same analysis results as the topology of edge_table_noded, we do "
+"the following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:337
+msgid ""
+"To get the same analysis results as the original edge_table, we do the "
+"following query:"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:362
+msgid ""
+"Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 "
+"is an under pass and there is also a street level juction, and the same "
+"happens with edges 17 and 13."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:389
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:391
+msgid ""
+":ref:`topology` for an overview of a topology for routing algorithms. "
+":ref:`pgr_analyze_oneway` to analyze directionality of the edges. "
+":ref:`pgr_create_topology` to create a topology based on the geometry. "
+":ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:397
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:398
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_nodeNetwork.rst:399
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_pointsAsPolygon.po b/locale/ru/LC_MESSAGES/pgr_pointsAsPolygon.po
new file mode 100644
index 0000000..356d85b
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_pointsAsPolygon.po
@@ -0,0 +1,124 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:13
+msgid "pgr_pointsAsPolygon"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:21
+msgid ""
+"``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:27
+msgid "Returns the alpha shape as (multi)polygon geometry."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:35
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:37
+msgid ""
+"``text`` a SQL query, which should return a set of rows with the following "
+"columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:43
+msgid "``int4`` identifier of the vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:44
+msgid "``float8`` x-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:45
+msgid "``float8`` y-coordinate"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:47
+msgid ""
+"(optional) ``float8`` alpha value. If specified alpha value equals 0 "
+"(default), then optimal alpha value is used. For more information, see `CGAL"
+" - 2D Alpha Shapes "
+"<http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:50
+msgid "Returns a (multi)polygon geometry (with holes)."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:54
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:55
+msgid "Renamed in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:56
+msgid ""
+"Added alpha argument with default 0 (use optimal value) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:57
+msgid ""
+"Supported to return a (multi)polygon geometry (with holes) in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:61
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:62
+msgid ""
+"In the following query there is no way to control which point in the polygon"
+" is the first in the list, so you may get similar but different results than"
+" the following which are also correct."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:69
+msgid "The query use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:73
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:75
+msgid ":ref:`pgr_drivingDistance` - Driving Distance"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:76
+msgid ":ref:`pgr_alphashape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:79
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:80
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pointsAsPolygon.rst:81
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_pushRelabel.po b/locale/ru/LC_MESSAGES/pgr_pushRelabel.po
new file mode 100644
index 0000000..13e8a04
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_pushRelabel.po
@@ -0,0 +1,439 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_pushRelabel.rst:14
+msgid "pgr_pushRelabel - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:18
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:20
+msgid ""
+"``pgr_pushRelabel`` — Calculates the flow on the graph edges that maximizes "
+"the flow from the sources to the targets using Push Relabel Algorithm."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:26
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:29
+msgid "Availability:"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:30
+msgid "Renamed 2.5.0, Previous name pgr_maxFlowPushRelabel"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:31
+msgid "New in 2.3.0"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid "The graph is **directed**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Process is done only on edges with positive capacities."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:8
+msgid ""
+"When the maximum flow is 0 then there is no flow and **EMPTY SET** is "
+"returned."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid "There is no flow when a **source** is the same as a **target**."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:12
+msgid "Any duplicated value in the source(s) or target(s) are ignored."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:13
+msgid "Calculates the flow/residual capacity for each edge. In the output"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:15
+msgid "Edges with zero flow are omitted."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:17
+msgid ""
+"Creates a **super source** and edges to all the source(s), and a **super "
+"target** and the edges from all the targets(s)."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:18
+msgid ""
+"The maximum flow through the graph is guaranteed to be the value returned by"
+" :ref:`pgr_maxFlow <pgr_maxFlow>` when executed with the same parameters and"
+" can be calculated:"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:20
+msgid "By aggregation of the outgoing flow from the sources"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:21
+msgid "By aggregation of the incoming flow to the targets"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:41
+msgid "Running time: :math:`O( V ^ 3)`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:60
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:62
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:81
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:83
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from the "
+"`source` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:102
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:104
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to the `target`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:123
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:125
+msgid ""
+"Calculates the flow on the graph edges that maximizes the flow from all of "
+"the `sources` to all of the `targets`."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:140
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for Max-flow like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9 ../../build/doc/pgr_maxFlow.rst:7
+#: ../../build/doc/pgRouting-concepts.rst:7
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgr_maxFlow.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:4
+msgid "Description of the Parameters of the Flow Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:9
+msgid "The edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10 ../../build/doc/pgr_maxFlow.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:10
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:10
+msgid "Identifier of the starting vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "**sources**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11 ../../build/doc/pgr_maxFlow.rst:13
+msgid "``ARRAY[BIGINT]``"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:11
+msgid "Array of identifiers of the starting vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:12
+msgid "Identifier of the ending vertex of the flow."
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "**targets**"
+msgstr ""
+
+#: ../../build/doc/pgr_maxFlow.rst:13
+msgid "Array of identifiers of the ending vertices of the flow."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Return Values"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:10
+msgid "Identifier of the edge in the original query(edges_sql)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**flow**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Flow through the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**residual_capacity**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Residual capacity of the edge in the direction (source, target)."
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:158
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:160
+msgid ""
+":ref:`maxFlow`, :ref:`pgr_boykovKolmogorov <pgr_boykovKolmogorov>`, "
+":ref:`pgr_edmondsKarp <pgr_edmondsKarp>`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:161
+msgid "http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:162
+msgid ""
+"https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:165
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:166
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_pushRelabel.rst:167
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_strongComponents.po b/locale/ru/LC_MESSAGES/pgr_strongComponents.po
new file mode 100644
index 0000000..6f6c0cf
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_strongComponents.po
@@ -0,0 +1,346 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_strongComponents.rst:13
+msgid "pgr_strongComponents - Experimental"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:15
+msgid ""
+"``pgr_strongComponents`` — Return the strongly connected components of a "
+"directed graph using Tarjan's algorithm based on DFS. In particular, the "
+"algorithm implemented by Boost.Graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:21
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:29
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:31
+msgid ""
+"A strongly connected component of a directed graph is a set of vertices that"
+" are all reachable from each other. This implementation can only be used "
+"with a directed graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:36
+msgid "Characteristics"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:38
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:40
+msgid "Components are described by vertices"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:42
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:44
+msgid "`component` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:45
+msgid "`node` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:47
+msgid "Running time: :math:`O(V + E)`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:62
+msgid "The signature is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:75
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the edges_sql query for components functions"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+#: ../../build/doc/components-family.rst:7
+#: ../../build/doc/components-family.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:13
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+#: ../../build/doc/components-family.rst:18
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:24
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:7
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:9
+msgid "SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:4
+msgid ""
+"Description of the return values for connected components and strongly "
+"connected components"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:6
+msgid "Returns set of ``(seq, component, n_seq, node)``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+#: ../../build/doc/components-family.rst:13
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:11
+msgid "Sequential value starting from **1**."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid "**component**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+#: ../../build/doc/components-family.rst:14
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:12
+msgid ""
+"Component identifier. It is equal to the minimum node identifier in the "
+"component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "**n_seq**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:13
+msgid "It is a sequential value starting from **1** in a component."
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/components-family.rst:14
+msgid "Identifier of the vertex."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:91
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:93
+msgid "http://en.wikipedia.org/wiki/Strongly_connected_component"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:94
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:97
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:98
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_strongComponents.rst:99
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_trsp.po b/locale/ru/LC_MESSAGES/pgr_trsp.po
new file mode 100644
index 0000000..108f0f8
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_trsp.po
@@ -0,0 +1,281 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_trsp.rst:13
+msgid "pgr_trsp - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:22
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:24
+msgid ""
+"``pgr_trsp`` — Returns the shortest path with support for turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:28
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:30
+msgid ""
+"The turn restricted shorthest path (TRSP) is a shortest path algorithm that "
+"can optionally take into account complicated turn restrictions like those "
+"found in real world navigable road networks. Performamnce wise it is nearly "
+"as fast as the A* search but has many additional features like it works with"
+" edges rather than the nodes of the network. Returns a set of "
+":ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that "
+"make up a path."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:57
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:59
+msgid ""
+"The Turn Restricted Shortest Path algorithm (TRSP) is similar to the "
+"shooting star in that you can specify turn restrictions."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:61
+msgid ""
+"The TRSP setup is mostly the same as :ref:`Dijkstra shortest path "
+"<pgr_dijkstra>` with the addition of an optional turn restriction table. "
+"This provides an easy way of adding turn restrictions to a road network by "
+"placing them in a separate table."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:64 ../../build/doc/pgr_trsp.rst:120
+msgid ""
+"a SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:71 ../../build/doc/pgr_trsp.rst:127
+msgid "``int4`` identifier of the edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:72 ../../build/doc/pgr_trsp.rst:128
+msgid "``int4`` identifier of the source vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:73 ../../build/doc/pgr_trsp.rst:129
+msgid "``int4`` identifier of the target vertex"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:74 ../../build/doc/pgr_trsp.rst:130
+msgid ""
+"``float8`` value, of the edge traversal cost. A negative cost will prevent "
+"the edge from being inserted in the graph."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:75 ../../build/doc/pgr_trsp.rst:131
+msgid ""
+"(optional) the cost for the reverse traversal of the edge. This is only used"
+" when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the "
+"above remark about negative costs)."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:77
+msgid "``int4`` **NODE id** of the start point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:78
+msgid "``int4`` **NODE id** of the end point"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:79 ../../build/doc/pgr_trsp.rst:134
+msgid "``true`` if the graph is directed"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:80 ../../build/doc/pgr_trsp.rst:135
+msgid ""
+"if ``true``, the ``reverse_cost`` column of the SQL generated set of rows "
+"will be used for the cost of the traversal of the edge in the opposite "
+"direction."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:82 ../../build/doc/pgr_trsp.rst:137
+msgid ""
+"(optional) a SQL query, which should return a set of rows with the following"
+" columns:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:88 ../../build/doc/pgr_trsp.rst:143
+msgid "``float8`` turn restriction cost"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:89 ../../build/doc/pgr_trsp.rst:144
+msgid "``int4`` target id"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:90
+msgid ""
+"``text`` comma separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:92
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** of source and target "
+"together with a fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:94
+msgid "``int4`` **EDGE id** of the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:95
+msgid "``float8`` fraction of 1 defines the position on the start edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:96
+msgid "``int4`` **EDGE id** of the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:97
+msgid "``float8`` fraction of 1 defines the position on the end edge"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:99 ../../build/doc/pgr_trsp.rst:152
+msgid "Returns set of :ref:`type_cost_result`:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:101 ../../build/doc/pgr_trsp.rst:154
+msgid "row sequence"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:102 ../../build/doc/pgr_trsp.rst:156
+msgid "node ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:103 ../../build/doc/pgr_trsp.rst:157
+msgid "edge ID (``-1`` for the last row)"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:104
+msgid "cost to traverse from ``id1`` using ``id2``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:107 ../../build/doc/pgr_trsp.rst:162
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:108
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:111
+msgid "Support for Vias"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:113
+msgid ""
+"The Support for Vias functions are prototypes. Not all corner cases are "
+"being considered."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:116
+msgid ""
+"We also have support for vias where you can say generate a from A to B to C,"
+" etc. We support both methods above only you pass an array of vertices or "
+"and array of edges and percentage position along the edge in two arrays."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:133
+msgid ""
+"``int4[]`` An ordered array of **NODE id** the path will go through from "
+"start to end."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:145
+msgid ""
+"``text`` commar separated list of edges in the reverse order of ``rule``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:147
+msgid ""
+"Another variant of TRSP allows to specify **EDGE id** together with a "
+"fraction to interpolate the position:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:149
+msgid "``int4`` An ordered array of **EDGE id** that the path has to traverse"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:150
+msgid ""
+"``float8`` An array of fractional positions along the respective edges in "
+"``eids``, where 0.0 is the start of the edge and 1.0 is the end of the "
+"eadge."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:155
+msgid "route ID"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:158
+msgid "cost to traverse from ``id2`` using ``id3``"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:163
+msgid "Via Support prototypes new in version 2.1.0"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:166
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:168
+msgid "**Without turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:175
+msgid "**With turn restrictions**"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:177
+msgid "Then a query with turn restrictions is created as:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:184
+msgid "An example query using vertex ids and via points:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:191
+msgid "An example query using edge ids and vias:"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:198
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:202
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:204
+msgid ":ref:`type_cost_result`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:207
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:208
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_trsp.rst:209
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_version.po b/locale/ru/LC_MESSAGES/pgr_version.po
new file mode 100644
index 0000000..5a6623a
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_version.po
@@ -0,0 +1,130 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_version.rst:13
+msgid "pgr_version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:19
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:21
+msgid "``pgr_version`` — Query for pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:25
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:27
+msgid "Returns a table with pgRouting version information."
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:35 ../../build/doc/pgr_version.rst:40
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:37
+msgid "Returns a table with:"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:40
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "**version**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42 ../../build/doc/pgr_version.rst:43
+#: ../../build/doc/pgr_version.rst:44 ../../build/doc/pgr_version.rst:45
+#: ../../build/doc/pgr_version.rst:46
+msgid "``varchar``"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:42
+msgid "pgRouting version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "**tag**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:43
+msgid "Git tag of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "**hash**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:44
+msgid "Git hash of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "**branch**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:45
+msgid "Git branch of pgRouting build"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "**boost**"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:46
+msgid "Boost version"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:51
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:52
+msgid "New in version 2.0.0"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:56
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:58
+msgid "Query for full version string"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:66
+msgid "Query for ``version`` and ``boost`` attribute"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:78
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:81
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:82
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_version.rst:83
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_vrpOneDepot.po b/locale/ru/LC_MESSAGES/pgr_vrpOneDepot.po
new file mode 100644
index 0000000..a0c5006
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_vrpOneDepot.po
@@ -0,0 +1,112 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:14
+msgid "pgr_vrpOneDepot - Experimental"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:14
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:15
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:16
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:18
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:21
+msgid "**No documentation available**"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:24
+msgid "Example:"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:28
+msgid "Current Result"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:34
+msgid "Data"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:41
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:43
+msgid "http://en.wikipedia.org/wiki/Vehicle_routing_problem"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:46
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:47
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_vrpOneDepot.rst:48
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_withPoints.po b/locale/ru/LC_MESSAGES/pgr_withPoints.po
new file mode 100644
index 0000000..be629d4
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_withPoints.po
@@ -0,0 +1,665 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPoints.rst:13
+msgid "pgr_withPoints - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:19
+msgid ""
+"``pgr_withPoints`` - Returns the shortest path in a graph with additional "
+"temporary vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, find the shortest path(s)"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:43
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:45
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:51
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:53
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path. -"
+" The agg_cost the non included values (v, v) is 0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path: - The agg_cost the non included values (u, v) is ∞"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:59
+msgid ""
+"For optimization purposes, any duplicated value in the start_vids or "
+"end_vids are ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:60
+msgid ""
+"The returned values are ordered: - start_vid ascending - end_vid ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:64
+msgid "Running time: :math:`O(|start\\_vids|\\times(V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:68
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:81
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:87
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:90
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:91
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:92
+msgid ""
+"No **details** are given about distance of other points of points_sql query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:100
+msgid "From point 1 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:110
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:120
+msgid "From point 1 to vertex 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:132
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:141
+msgid "From point 1 to point 3 and vertex 5"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:153
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:162
+msgid "From point 1 and vertex 2 to point 3"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:172
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:182
+msgid "From point 1 and vertex 2 to point 3 and vertex 7"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:192
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPoints.rst:211
+#: ../../build/doc/pgr_withPoints.rst:236
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPoints.rst:249
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPoints.rst:222
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:207
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:211
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:213
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:214
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:215
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:216
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:217
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:218
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:219
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:220
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:223
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:221
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:225
+msgid ""
+"(optional). When ``true`` the results will include the points in points_sql "
+"that are in the path. Default is ``false`` which ignores other points of the"
+" points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:231
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:233
+msgid ""
+"Returns set of ``(seq, [path_seq,] [start_vid,] [end_vid,] node, edge, cost,"
+" agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:238
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:239
+msgid "Path sequence that indicates the relative position on the path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+#: ../../build/doc/pgr_withPoints.rst:241
+#: ../../build/doc/pgr_withPoints.rst:242
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:240
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:241
+msgid "Identifier of the ending vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:242
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "Identifier of the node:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:243
+msgid "A positive value indicates the node is a vertex of edges_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:244
+msgid "A negative value indicates the node is a point of points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:246
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:247
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:249
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:250
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:252
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:253
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:260
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:262
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **right** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:268
+msgid ""
+"Which path (if any) passes in front of point 6 or vertex 6 with **left** "
+"side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:274
+msgid ""
+"Many to many example with a twist: on undirected graph and showing details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:281
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:286
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:287
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:291
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:293
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:296
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:297
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPoints.rst:298
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_withPointsCost.po b/locale/ru/LC_MESSAGES/pgr_withPointsCost.po
new file mode 100644
index 0000000..f478ccd
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_withPointsCost.po
@@ -0,0 +1,603 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCost.rst:13
+msgid "pgr_withPointsCost - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:19
+msgid ""
+"``pgr_withPointsCost`` - Calculates the shortest path and returns only the "
+"aggregate cost of the shortest path(s) found, for the combination of points "
+"given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:37
+msgid ""
+"Modify the graph to include points defined by points_sql. Using Dijkstra "
+"algorithm, return only the aggregate cost of the shortest path(s) found."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:41
+msgid "Characteristics:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:79
+msgid "The main Characteristics are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:44
+msgid "It does not return a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:45
+msgid ""
+"Returns the sum of the costs of the shortest path for pair combination of "
+"vertices in the modified graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:46
+msgid "Vertices of the graph are:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:48
+msgid "**positive** when it belongs to the edges_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:49
+msgid "**negative** when it belongs to the points_sql"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:51
+msgid "Process is done only on edges with positive costs."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:52
+msgid "Values are returned when there is a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:54
+msgid ""
+"The returned values are in the form of a set of `(start_vid, end_vid, "
+"agg_cost)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:56
+msgid ""
+"When the starting vertex and ending vertex are the same, there is no path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:58
+msgid "The `agg_cost` in the non included values `(v, v)` is `0`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:60
+msgid ""
+"When the starting vertex and ending vertex are the different and there is no"
+" path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:62
+msgid "The `agg_cost` in the non included values `(u, v)` is :math:`\\infty`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:64
+msgid ""
+"If the values returned are stored in a table, the unique index would be the "
+"pair: `(start_vid, end_vid)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:67
+msgid "For undirected graphs, the results are symmetric."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:69
+msgid "The `agg_cost` of `(u, v)` is the same as for `(v, u)`."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:71
+msgid ""
+"For optimization purposes, any duplicated value in the `start_vids` or "
+"`end_vids` is ignored."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:73
+msgid "The returned values are ordered:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:75
+msgid "`start_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:76
+msgid "`end_vid` ascending"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:78
+msgid "Running time: :math:`O(| start\\_vids | * (V \\log V + E))`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:82
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:92
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:96
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:102
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:105
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:106
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:124
+msgid "One to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:145
+msgid "One to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:166
+msgid "Many to One"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:185
+msgid "Many to Many"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:204
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCost.rst:223
+#: ../../build/doc/pgr_withPointsCost.rst:246
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCost.rst:234
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:219
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:223
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:225
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:226
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:227
+msgid "Starting vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:228
+msgid "Ending vertex identifier. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:229
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid "**end_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:230
+msgid ""
+"Array of identifiers of ending vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:231
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:232
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:235
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:233
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:241
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:243
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:248
+msgid "Identifier of the starting vertex. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:249
+msgid "Identifier of the ending point. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:250
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:256
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:258
+msgid "With **right** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:264
+msgid "With **left** side driving topology."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:270
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:277
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:282
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:283
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:287
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:289
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:292
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:293
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCost.rst:294
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_withPointsCostMatrix.po b/locale/ru/LC_MESSAGES/pgr_withPointsCostMatrix.po
new file mode 100644
index 0000000..c9bb20f
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_withPointsCostMatrix.po
@@ -0,0 +1,472 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:13
+msgid "pgr_withPointsCostMatrix - proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:19
+msgid ""
+"``pgr_withPointsCostMatrix`` - Calculates the shortest path and returns only"
+" the aggregate cost of the shortest path(s) found, for the combination of "
+"points given."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:31
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:35
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:37
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:45
+msgid ""
+"There is no **details** flag, unlike the other members of the withPoints "
+"family of functions."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:49
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:55
+msgid "Minimal Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:58
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:59
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:78
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:87
+msgid "returning a symmetrical cost matrix"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:89
+msgid "Using the default **side** value on the **points_sql** query"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:90
+msgid "Using an undirected graph"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:91
+msgid "Using the default **driving_side** value"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:100
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:128
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:116
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:120
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:122
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:123
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "**start_vids**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid "``ARRAY[ANY-INTEGER]``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:124
+msgid ""
+"Array of identifiers of starting vertices. When negative: is a point's pid."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:125
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:126
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:129
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:127
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the return values for a Cost function"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid "Returns set of ``(start_vid, end_vid, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid ""
+"Identifier of the starting vertex. Used when multiple starting vetrices are "
+"in the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**end_vid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid ""
+"Identifier of the ending vertex. Used when multiple ending vertices are in "
+"the query."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Aggregate cost from ``start_vid`` to ``end_vid``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:140
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:142
+msgid "Use with tsp"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:151
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:153
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:154
+msgid ":ref:`costMatrix`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:155
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:156
+msgid "`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:159
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:160
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsCostMatrix.rst:161
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_withPointsDD.po b/locale/ru/LC_MESSAGES/pgr_withPointsDD.po
new file mode 100644
index 0000000..95b4be1
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_withPointsDD.po
@@ -0,0 +1,552 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsDD.rst:13
+msgid "pgr_withPointsDD - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:19
+msgid ""
+"``pgr_withPointsDD`` - Returns the driving distance from a starting point."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:30
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:33
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:35
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:37
+msgid ""
+"Modify the graph to include points and using Dijkstra algorithm, extracts "
+"all the nodes and points that have costs less than or equal to the value "
+"``distance`` from the starting point. The edges extracted will conform the "
+"corresponding spanning tree."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:44
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:54
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:60
+msgid "Minimal Use"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "The minimal signature:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:63
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:64
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:65
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:84
+msgid "Driving distance from a single point"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:86
+#: ../../build/doc/pgr_withPointsDD.rst:106
+msgid "Finds the driving distance depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:94
+msgid "Right side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:104
+msgid "Driving distance from many starting points"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:118
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsDD.rst:138
+#: ../../build/doc/pgr_withPointsDD.rst:162
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsDD.rst:169
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsDD.rst:147
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:134
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:138
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:140
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:141
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "**start_vid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:142
+msgid "Starting point id"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "**distance**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:143
+msgid "Distance from the start_pid"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+#: ../../build/doc/pgr_withPointsDD.rst:150
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:144
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:145
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:148
+msgid ""
+"(optional). Value in ['b', 'r', 'l', NULL] indicating if the driving side "
+"is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:146
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:150
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid "**equicost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:152
+msgid ""
+"(optional). When ``true`` the nodes will only appear in the closest start_v "
+"list. Default is ``false`` which resembles several calls using the single "
+"starting point signatures. Tie brakes are arbitrary."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:157
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:159
+msgid "Returns set of ``(seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "``INT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:164
+msgid "row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:165
+msgid ""
+"Identifier of the node within the Distance from ``start_pid``. If ``details "
+"=: true`` a negative value is the identifier of a point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:166
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:167
+msgid "``-1`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:169
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+msgid "Cost to traverse ``edge``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:170
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "``0`` when ``start_vid`` = ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:172
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:173
+msgid "Aggregate cost from ``start_vid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:180
+msgid ""
+"Examples for queries marked as ``directed`` with ``cost`` and "
+"``reverse_cost`` columns"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:182
+msgid "The examples in this section use the following :ref:`fig1`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:184
+msgid "Left side driving topology"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:190
+msgid "Does not matter driving side."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:199
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:204
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:205
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:209
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:211
+msgid ":ref:`pgr_drivingDistance` - Driving distance using dijkstra."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:212
+msgid ":ref:`pgr_alphashape` - Alpha shape computation."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:213
+msgid ":ref:`pgr_points_as_polygon` - Polygon around set of points."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:216
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:217
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsDD.rst:218
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/pgr_withPointsKSP.po b/locale/ru/LC_MESSAGES/pgr_withPointsKSP.po
new file mode 100644
index 0000000..8202877
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/pgr_withPointsKSP.po
@@ -0,0 +1,571 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/pgr_withPointsKSP.rst:13
+msgid "pgr_withPointsKSP - Proposed"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:17
+msgid "Name"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:19
+msgid ""
+"``pgr_withPointsKSP`` - Find the K shortest paths using Yen's algorithm."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:29
+msgid "Boost Graph Inside"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:32
+msgid "Availability: 2.2.0"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:34
+msgid "Synopsis"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:36
+msgid ""
+"Modifies the graph to include the points defined in the ``points_sql`` and "
+"using Yen algorithm, finds the K shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:41
+msgid "Signature Summary"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:50
+msgid "Signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:56
+msgid "Minimal Usage"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "The minimal usage:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:59
+msgid "Is for a **directed** graph."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:60
+msgid ""
+"The driving side is set as **b** both. So arriving/departing to/from the "
+"point(s) can be in any direction."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:61
+msgid "No **details** are given about distance of other points of the query."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:62
+msgid "No **heap paths** are returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:80
+msgid "Complete Signature"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:82
+msgid "Finds the K shortest paths depending on the optional parameters setup."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:91
+msgid "With details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:98
+msgid "Description of the Signatures"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the edges_sql query for dijkstra like functions"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:6
+#: ../../build/doc/pgRouting-concepts.rst:6
+msgid ""
+"an SQL query, which should return a set of rows with the following columns:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Column"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Type"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+msgid "Default"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgRouting-concepts.rst:9
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+#: ../../build/doc/pgr_withPointsKSP.rst:144
+msgid "Description"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:12
+#: ../../build/doc/pgRouting-concepts.rst:13
+#: ../../build/doc/pgRouting-concepts.rst:11
+#: ../../build/doc/pgRouting-concepts.rst:16
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "``ANY-INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "Identifier of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "**source**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:12
+msgid "Identifier of the first end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "**target**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "Identifier of the second end point vertex of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+msgid "**cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "``ANY-NUMERICAL``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid "Weight of the edge `(source, target)`"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid ""
+"When negative: edge `(source, target)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**reverse_cost**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "-1"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "Weight of the edge `(target, source)`,"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid ""
+"When negative: edge `(target, source)` does not exist, therefore it's not "
+"part of the graph."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:24
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "Where:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:26
+msgid "SMALLINT, INTEGER, BIGINT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:27
+msgid "SMALLINT, INTEGER, BIGINT, REAL, FLOAT"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:4
+msgid "Description of the Points SQL query"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "**pid**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:11
+msgid "(optional) Identifier of the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:13
+msgid "If column present, it can not be NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:14
+msgid ""
+"If column not present, a sequential identifier will be given automatically."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "**edge_id**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:16
+msgid "Identifier of the \"closest\" edge to the point."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid "**fraction**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:17
+msgid ""
+"Value in <0,1> that indicates the relative postition from the first end "
+"point of the edge."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "**side**"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "``CHAR``"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:18
+msgid "(optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:20
+msgid "In the right, left of the edge or"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:21
+#: ../../build/doc/pgr_withPointsKSP.rst:130
+msgid "If it doesn't matter with 'b' or NULL."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:22
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid "If column not present 'b' is considered."
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:28
+msgid "smallint, int, bigint"
+msgstr ""
+
+#: ../../build/doc/pgRouting-concepts.rst:29
+msgid "smallint, int, bigint, real, float"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:115
+msgid "Description of the parameters of the signatures"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:119
+msgid "Parameter"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "**edges_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "``TEXT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:121
+msgid "Edges SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "**points_sql**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:122
+msgid "Points SQL query as described above."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "**start_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:123
+msgid "Starting point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "**end_pid**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:124
+msgid "Ending point id."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "**K**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "``INTEGER``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:125
+msgid "Number of shortest paths."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid "**directed**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "``BOOLEAN``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:126
+msgid ""
+"(optional). When ``false`` the graph is considered as Undirected. Default is"
+" ``true`` which considers the graph as Directed."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid "**heap_paths**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:127
+msgid ""
+"(optional). When ``true`` the paths calculated to get the shortests paths "
+"will be returned also. Default is ``false`` only the K shortest paths are "
+"returned."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:128
+msgid "**driving_side**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:131
+msgid ""
+"(optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:129
+msgid "In the right or left or"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid "**details**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:133
+msgid ""
+"(optional). When ``true`` the results will include the driving distance to "
+"the points with in the ``distance``. Default is ``false`` which ignores "
+"other points of the points_sql."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:139
+msgid "Description of the return values"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:141
+msgid ""
+"Returns set of ``(seq, path_id, path_seq, node, edge, cost, agg_cost)``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "**seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:146
+msgid "Row sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid "**path_seq**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:147
+msgid ""
+"Relative position in the path of node and edge. Has value 1 for the "
+"beginning of a path."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid "**path_id**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:148
+msgid ""
+"Path identifier. The ordering of the paths: For two paths i, j if i < j then"
+" agg_cost(i) <= agg_cost(j)."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid "**node**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "``BIGINT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:149
+msgid ""
+"Identifier of the node in the path. Negative values are the identifiers of a"
+" point."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:150
+msgid "**edge**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid ""
+"Identifier of the edge used to go from ``node`` to the next node in the path"
+" sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:151
+msgid "``-1`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:153
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "``FLOAT``"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid ""
+"Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the "
+"path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:154
+msgid "``0`` for the last row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:156
+msgid "**agg_cost**"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "Aggregate cost from ``start_pid`` to ``node``."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:157
+msgid "``0`` for the first row in the path sequence."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:164
+msgid "Examples"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:166
+msgid "Left side driving topology with details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:172
+msgid "Right side driving topology with heap paths and details."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:178
+msgid "The queries use the :doc:`sampledata` network."
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:181
+msgid "History"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:182
+msgid "Proposed in version 2.2"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:186
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:188
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:191
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:192
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/pgr_withPointsKSP.rst:193
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/proposed.po b/locale/ru/LC_MESSAGES/proposed.po
new file mode 100644
index 0000000..9f1a6f4
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/proposed.po
@@ -0,0 +1,410 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/proposed.rst:13
+msgid "Stable Proposed Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:17
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:19
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:20
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:22
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:23
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:24
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:25
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:26
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:27
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:33
+msgid "As part of the :ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:35
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` Use pgr_dijkstra to calculate a cost matrix."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:36
+msgid ""
+":ref:`pgr_dijkstraVia` - Use pgr_dijkstra to make a route via vertices."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:39
+msgid "Families"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:40
+msgid ":ref:`astar`"
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:3
+msgid ":ref:`pgr_aStar` - A* algorithm for the shortest path."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:4
+msgid ":ref:`pgr_aStarCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/aStar-family.rst:5
+msgid ""
+":ref:`pgr_aStarCostMatrix` - Get the cost matrix of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:46
+msgid ":ref:`bdAstar`"
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:3
+msgid ":ref:`pgr_bdAstar` - Bidirectional A* algorithm for obtaining paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:4
+msgid ""
+":ref:`pgr_bdAstarCost` - Bidirectional A* algorithm to calculate the cost of"
+" the paths."
+msgstr ""
+
+#: ../../build/doc/bdAstar-family.rst:5
+msgid ""
+":ref:`pgr_bdAstarCostMatrix` - Bidirectional A* algorithm to calculate a "
+"cost matrix of paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:52
+msgid ":ref:`bdDijkstra`"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:3
+msgid ""
+":ref:`pgr_bdDijkstra` - Bidirectional Dijkstra algorithm for the shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:4
+msgid ""
+":ref:`pgr_bdDijkstraCost` - Bidirectional Dijkstra to calculate the cost of "
+"the shortest paths"
+msgstr ""
+
+#: ../../build/doc/bdDijkstra-family.rst:5
+msgid ""
+":ref:`pgr_bdDijkstraCostMatrix` - Bidirectional Dijkstra algorithm to "
+"create a matrix of costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:58
+msgid ":ref:`maxFlow`"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:3
+msgid ""
+":ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel "
+"algorithm."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:4
+msgid ""
+":ref:`pgr_BoykovKolmogorov` - Boykov and Kolmogorov with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:5
+msgid ""
+":ref:`pgr_EdmondsKarp` - Edmonds and Karp algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:6
+msgid ""
+":ref:`pgr_PushRelabel` - Push and relabel algorithm with details of flow on "
+"edges."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:7
+msgid "Applications"
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:9
+msgid ""
+":ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two "
+"groups of vertices."
+msgstr ""
+
+#: ../../build/doc/flow-family.rst:10
+msgid ""
+":ref:`pgr_maxCardinalityMatch` - Calculates a maximum cardinality matching "
+"in a graph."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:64
+msgid ":ref:`withPoints`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:3
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:4
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:5
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:6
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:7
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:71
+msgid "categories"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:72
+msgid ":ref:`Cost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:3
+msgid ":ref:`pgr_aStarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:4
+msgid ":ref:`pgr_bdAstarCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:6
+msgid ":ref:`pgr_dijkstraCost`"
+msgstr ""
+
+#: ../../build/doc/cost-category.rst:7
+msgid ":ref:`pgr_withPointsCost`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:78
+msgid ":ref:`CostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:3
+msgid ":ref:`pgr_aStarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:4
+msgid ":ref:`pgr_bdAstarCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:5
+msgid ":ref:`pgr_bdDijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:6
+msgid ":ref:`pgr_dijkstraCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/costMatrix-category.rst:7
+msgid ":ref:`pgr_withPointsCostMatrix`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:84
+msgid ":ref:`KSP`"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:3
+msgid ":ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/KSP-category.rst:4
+msgid ":ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:106
+msgid "Experimental Functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:111
+msgid "Experimental functions"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:113
+msgid "They are not officially of the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:114
+msgid "They likely will not be officially be part of the next release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:116
+msgid "The functions might not make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:117
+msgid "Name might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:118
+msgid "Signature might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:119
+msgid "Functionality might change."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:120
+msgid "pgTap tests might be missing."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:121
+msgid "Might need c/c++ coding."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:122
+msgid "May lack documentation."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:123
+msgid "Documentation if any might need to be rewritten."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:124
+msgid "Documentation examples might need to be automatically generated."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:125
+msgid "Might need a lot of feedback from the comunity."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:126
+msgid "Might depend on a proposed function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:127
+msgid "Might depend on a deprecated function of pgRouting"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:132
+msgid ":ref:`contraction` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:134
+msgid ""
+":ref:`pgr_contractgraph` - Reduce network size using contraction techniques"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:138
+msgid "Graph Analysis"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:139
+msgid ":ref:`pgr_labelGraph` - Analyze / label subgraphs within a network"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:141
+msgid ":ref:`components` - Analyze components within a graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:143
+msgid ""
+":ref:`pgr_connectedComponents` - Return the connected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:144
+msgid ""
+":ref:`pgr_strongComponents` - Return the strongly connected components of a "
+"directed graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:145
+msgid ""
+":ref:`pgr_biconnectedComponents` - Return the biconnected components of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:146
+msgid ""
+":ref:`pgr_articulationPoints` - Return the articulation points of an "
+"undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:147
+msgid ":ref:`pgr_bridges` - Return the bridges of an undirected graph"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:150
+msgid "VRP"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:151
+msgid ":ref:`pgr_gsocvrppdtw`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:152
+msgid ":ref:`pgr_vrp_basic`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:166
+msgid "Graph Transformation"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:167
+msgid ":doc:`pgr_lineGraph`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:175
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:178
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:179
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:180
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/release_notes.po b/locale/ru/LC_MESSAGES/release_notes.po
new file mode 100644
index 0000000..f4a09f7
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/release_notes.po
@@ -0,0 +1,1278 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/release_notes.rst:13
+msgid "Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:15
+msgid ""
+"To see the full list of changes check the list of `Git commits "
+"<https://github.com/pgRouting/pgrouting/commits>`_ on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:18
+msgid "Table of contents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:21
+msgid ":ref:`changelog_2_5_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:22
+msgid ":ref:`changelog_2_4_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:23
+msgid ":ref:`changelog_2_4_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:24
+msgid ":ref:`changelog_2_4_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:25
+msgid ":ref:`changelog_2_3_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:26
+msgid ":ref:`changelog_2_3_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:27
+msgid ":ref:`changelog_2_3_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:28
+msgid ":ref:`changelog_2_2_4`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:29
+msgid ":ref:`changelog_2_2_3`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:30
+msgid ":ref:`changelog_2_2_2`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:31
+msgid ":ref:`changelog_2_2_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:32
+msgid ":ref:`changelog_2_2_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:33
+msgid ":ref:`changelog_2_1_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:34
+msgid ":ref:`changelog_2_0_1`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:35
+msgid ":ref:`changelog_2_0_0`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:36
+msgid ":ref:`changelog_1_x`"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:43
+msgid "pgRouting 2.5.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:45
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.5.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.5.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:49
+msgid "enhancement:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:50
+msgid "pgr_version is now on SQL language"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:53
+msgid "Breaking change on:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:54
+msgid "pgr_edgeDisjointPaths:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:56
+msgid "Added path_id, cost and agg_cost columns on the result"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:57
+msgid "Parameter names changed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:58
+msgid "The many version results are the union of the one to one version"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:61
+msgid "New Signatures:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:62
+msgid "pgr_bdAstar(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:65 ../../build/doc/release_notes.rst:223
+msgid "New Proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:66
+msgid "pgr_bdAstar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:67
+msgid "pgr_bdAstar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:68
+msgid "pgr_bdAstar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:69
+msgid "pgr_bdAstarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:70
+msgid "pgr_bdAstarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:71
+msgid "pgr_bdAstarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:72
+msgid "pgr_bdAstarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:73
+msgid "pgr_bdAstarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:74
+msgid "pgr_bdDijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:75
+msgid "pgr_bdDijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:76
+msgid "pgr_bdDijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:77
+msgid "pgr_bdDijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:78
+msgid "pgr_bdDijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:79
+msgid "pgr_bdDijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:80
+msgid "pgr_bdDijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:81
+msgid "pgr_bdDijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:82
+msgid "pgr_lineGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:83
+msgid "pgr_connectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:84
+msgid "pgr_strongComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:85
+msgid "pgr_biconnectedComponents"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:86
+msgid "pgr_articulationPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:87
+msgid "pgr_bridges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:90 ../../build/doc/release_notes.rst:160
+#: ../../build/doc/release_notes.rst:247
+msgid "Deprecated Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:91
+msgid "pgr_bdastar - use pgr_bdAstar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:94
+msgid "Renamed Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:95
+msgid "pgr_maxFlowPushRelabel - use pgr_pushRelabel instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:96
+msgid "pgr_maxFlowEdmondsKarp -use pgr_edmondsKarp instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:97
+msgid "pgr_maxFlowBoykovKolmogorov - use pgr_boykovKolmogorov instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:98
+msgid "pgr_maximumCardinalityMatching - use pgr_maxCardinalityMatch instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:101
+msgid "Deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:102
+msgid "pgr_pointToEdgeNode"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:108
+msgid "pgRouting 2.4.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:110
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.2 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.2%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:113
+msgid "Improvement"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:114
+msgid "Works for postgreSQL 10"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:117 ../../build/doc/release_notes.rst:131
+#: ../../build/doc/release_notes.rst:168 ../../build/doc/release_notes.rst:522
+#: ../../build/doc/release_notes.rst:529 ../../build/doc/release_notes.rst:550
+#: ../../build/doc/release_notes.rst:557
+msgid "Bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:118
+msgid "Fixed: Unexpected error column \"cname\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:119
+msgid ""
+"Replace __linux__ with __GLIBC__ for glibc-specific headers and functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:126
+msgid "pgRouting 2.4.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:128
+msgid ""
+"To see the issues closed by this release see the `Git closed milestone for "
+"2.4.1 "
+"<https://github.com/pgRouting/pgrouting/issues?utf8=%E2%9C%93&q=milestone%3A%22Release%202.4.1%22%20>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:132
+msgid "Fixed compiling error on macOS"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:133
+msgid "Condition error on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:138
+msgid "pgRouting 2.4.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:140
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.4.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.4.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:143 ../../build/doc/release_notes.rst:213
+#: ../../build/doc/release_notes.rst:374
+msgid "New Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:144
+msgid "pgr_bdDijkstra"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:148
+msgid "New Proposed Signatures"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:149
+msgid "pgr_maxFlow"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:150
+msgid "pgr_astar(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:151
+msgid "pgr_astar(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:152
+msgid "pgr_astar(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:153
+msgid "pgr_astarCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:154
+msgid "pgr_astarCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:155
+msgid "pgr_astarCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:156
+msgid "pgr_astarCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:157
+msgid "pgr_astarCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:161
+msgid "pgr_bddijkstra - use pgr_bdDijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:164 ../../build/doc/release_notes.rst:253
+msgid "Deprecated Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:165
+msgid "pgr_pointsToVids"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:169
+msgid "Bug fixes on proposed functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:171
+msgid "pgr_withPointsKSP: fixed ordering"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:173
+msgid "TRSP original code is used with no changes on the compilation warnings"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:178
+msgid "pgRouting 2.3.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:180
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:183 ../../build/doc/release_notes.rst:199
+#: ../../build/doc/release_notes.rst:269 ../../build/doc/release_notes.rst:282
+#: ../../build/doc/release_notes.rst:293 ../../build/doc/release_notes.rst:305
+#: ../../build/doc/release_notes.rst:424 ../../build/doc/release_notes.rst:455
+msgid "Bug Fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:184
+msgid "Fixed pgr_gsoc_vrppdtw crash when all orders fit on one truck."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:185
+msgid "Fixed pgr_trsp:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:187
+msgid "Alternate code is not executed when the point is in reality a vertex"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:188
+msgid "Fixed ambiguity on seq"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:194
+msgid "pgRouting 2.3.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:196
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.1%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:200
+msgid "Leaks on proposed max_flow functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:201
+msgid "Regression error on pgr_trsp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:202
+msgid "Types discrepancy on pgr_createVerticesTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:208
+msgid "pgRouting 2.3.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:210
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.3.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.3.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:214
+msgid "pgr_TSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:215
+msgid "pgr_aStar"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:218 ../../build/doc/release_notes.rst:330
+msgid "New Functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:219
+msgid "pgr_eucledianTSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:224
+msgid "pgr_dijkstraCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:225
+msgid "pgr_withPointsCostMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:226
+msgid "pgr_maxFlowPushRelabel(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:227
+msgid "pgr_maxFlowPushRelabel(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:228
+msgid "pgr_maxFlowPushRelabel(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:229
+msgid "pgr_maxFlowPushRelabel(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:230
+msgid "pgr_maxFlowEdmondsKarp(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:231
+msgid "pgr_maxFlowEdmondsKarp(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:232
+msgid "pgr_maxFlowEdmondsKarp(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:233
+msgid "pgr_maxFlowEdmondsKarp(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:234
+msgid "pgr_maxFlowBoykovKolmogorov (one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:235
+msgid "pgr_maxFlowBoykovKolmogorov (one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:236
+msgid "pgr_maxFlowBoykovKolmogorov (many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:237
+msgid "pgr_maxFlowBoykovKolmogorov (many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:238
+msgid "pgr_maximumCardinalityMatching"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:239
+msgid "pgr_edgeDisjointPaths(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:240
+msgid "pgr_edgeDisjointPaths(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:241
+msgid "pgr_edgeDisjointPaths(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:242
+msgid "pgr_edgeDisjointPaths(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:243
+msgid "pgr_contractGraph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:248
+msgid "pgr_tsp - use pgr_TSP or pgr_eucledianTSP instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:249
+msgid "pgr_astar - use pgr_aStar instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:254
+msgid "pgr_flip_edges"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:255
+msgid "pgr_vidsToDmatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:256
+msgid "pgr_pointsToDMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:257
+msgid "pgr_textToPoints"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:264
+msgid "pgRouting 2.2.4 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:266
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.4 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.4%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:270
+msgid "Bogus uses of extern \"C\""
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:271
+msgid "Build error on Fedora 24 + GCC 6.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:272
+msgid "Regression error pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:277
+msgid "pgRouting 2.2.3 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:279
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.3 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.3%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:283
+msgid "Fixed compatibility issues with PostgreSQL 9.6."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:288
+msgid "pgRouting 2.2.2 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:290
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.2 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.2%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:294
+msgid "Fixed regression error on pgr_drivingDistance"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:300
+msgid "pgRouting 2.2.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:302
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.1 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A2.2.1+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:306
+msgid "Server crash fix on pgr_alphaShape"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:307
+msgid "Bug fix on With Points family of functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:313
+msgid "pgRouting 2.2.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:315
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.2.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.2.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:319 ../../build/doc/release_notes.rst:387
+msgid "Improvements"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:320
+msgid "pgr_nodeNetwork"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:322
+msgid "Adding a row_where and outall optional parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:324
+msgid "Signature fix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:326
+msgid "pgr_dijkstra -- to match what is documented"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:331
+msgid "pgr_floydWarshall"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:332
+msgid "pgr_Johnson"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:333
+msgid "pgr_dijkstraCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:334
+msgid "pgr_dijkstraCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:335
+msgid "pgr_dijkstraCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:336
+msgid "pgr_dijkstraCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:339 ../../build/doc/release_notes.rst:391
+msgid "Proposed functionality"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:340
+msgid "pgr_withPoints(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:341
+msgid "pgr_withPoints(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:342
+msgid "pgr_withPoints(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:343
+msgid "pgr_withPoints(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:344
+msgid "pgr_withPointsCost(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:345
+msgid "pgr_withPointsCost(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:346
+msgid "pgr_withPointsCost(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:347
+msgid "pgr_withPointsCost(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:348
+msgid "pgr_withPointsDD(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:349
+msgid "pgr_withPointsDD(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:350
+msgid "pgr_withPointsKSP"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:351
+msgid "pgr_dijkstraVia"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:355
+msgid "Deprecated functions:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:356
+msgid "pgr_apspWarshall use pgr_floydWarshall instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:357
+msgid "pgr_apspJohnson use pgr_Johnson instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:358
+msgid "pgr_kDijkstraCost use pgr_dijkstraCost instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:359
+msgid "pgr_kDijkstraPath use pgr_dijkstra instead"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:362
+msgid "Renamed and deprecated function"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:363
+msgid "pgr_makeDistanceMatrix renamed to _pgr_makeDistanceMatrix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:369
+msgid "pgRouting 2.1.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:371
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.1.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=is%3Aissue+milestone%3A%22Release+2.1.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:375
+msgid "pgr_dijkstra(one to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:376
+msgid "pgr_dijkstra(many to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:377
+msgid "pgr_dijkstra(many to many)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:378
+msgid "pgr_drivingDistance(multiple vertices)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:381
+msgid "Refactored"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:382
+msgid "pgr_dijkstra(one to one)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:383
+msgid "pgr_ksp"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:384
+msgid "pgr_drivingDistance(single vertex)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:388
+msgid ""
+"pgr_alphaShape function now can generate better (multi)polygon with holes "
+"and alpha parameter."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:392
+msgid ""
+"Proposed functions from Steve Woodbridge, (Classified as Convenience by the "
+"author.)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:394
+msgid ""
+"pgr_pointToEdgeNode - convert a point geometry to a vertex_id based on "
+"closest edge."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:395
+msgid ""
+"pgr_flipEdges - flip the edges in an array of geometries so the connect end "
+"to end."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:396
+msgid ""
+"pgr_textToPoints - convert a string of x,y;x,y;... locations into point "
+"geometries."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:397
+msgid ""
+"pgr_pointsToVids - convert an array of point geometries into vertex ids."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:398
+msgid ""
+"pgr_pointsToDMatrix - Create a distance matrix from an array of points."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:399 ../../build/doc/release_notes.rst:400
+msgid ""
+"pgr_vidsToDMatrix - Create a distance matrix from an array of vertix_id."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:402
+msgid "Added proposed functions from GSoc Projects:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:404
+msgid "pgr_vrppdtw"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:405
+msgid "pgr_vrponedepot"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:408
+msgid "Deprecated functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:409
+msgid "pgr_getColumnName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:410
+msgid "pgr_getTableName"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:411
+msgid "pgr_isColumnCndexed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:412
+msgid "pgr_isColumnInTable"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:413
+msgid "pgr_quote_ident"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:414
+msgid "pgr_versionless"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:415
+msgid "pgr_startPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:416
+msgid "pgr_endPoint"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:417
+msgid "pgr_pointToId"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:420
+msgid "No longer supported"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:421
+msgid "Removed the 1.x legacy functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:425
+msgid "Some bug fixes in other functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:429
+msgid "Refactoring Internal Code"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:430
+msgid "A C and C++ library for developer was created"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:432
+msgid "encapsulates postgreSQL related functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:433
+msgid "encapsulates Boost.Graph graphs"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:435
+msgid "Directed Boost.Graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:436
+msgid "Undirected Boost.graph."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:438
+msgid "allow any-integer in the id's"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:439
+msgid "allow any-numerical on the cost/reverse_cost columns"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:441
+msgid ""
+"Instead of generating many libraries: - All functions are encapsulated in "
+"one library - The library has the prefix 2-1-0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:450
+msgid "pgRouting 2.0.1 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:452
+msgid "Minor bug fixes."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:456
+msgid "No track of the bug fixes were kept."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:462
+msgid "pgRouting 2.0.0 Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:464
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for "
+"2.0.0 "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+2.0.0%22+is%3Aclosed>`_"
+" on Github."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:466
+msgid ""
+"With the release of pgRouting 2.0.0 the library has abandoned backwards "
+"compatibility to :ref:`pgRouting 1.x <changelog_1_x>` releases. The main "
+"Goals for this release are:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:469
+msgid "Major restructuring of pgRouting."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:470
+msgid "Standardization of the function naming"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:471
+msgid "Preparation of the project for future development."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:473
+msgid "As a result of this effort:"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:475
+msgid "pgRouting has a simplified structure"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:476
+msgid "Significant new functionality has being added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:477
+msgid "Documentation has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:478
+msgid "Testing has being integrated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:479
+msgid "And made it easier for multiple developers to make contributions."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:483
+msgid "Important Changes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:484
+msgid ""
+"Graph Analytics - tools for detecting and fixing connection some problems in"
+" a graph"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:485
+msgid "A collection of useful utility functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:486
+msgid ""
+"Two new All Pairs Short Path algorithms (pgr_apspJohnson, pgr_apspWarshall)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:487
+msgid ""
+"Bi-directional Dijkstra and A-star search algorithms (pgr_bdAstar, "
+"pgr_bdDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:488
+msgid "One to many nodes search (pgr_kDijkstra)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:489
+msgid "K alternate paths shortest path (pgr_ksp)"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:490
+msgid ""
+"New TSP solver that simplifies the code and the build process (pgr_tsp), "
+"dropped \"Gaul Library\" dependency"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:491
+msgid "Turn Restricted shortest path (pgr_trsp) that replaces Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:492
+msgid "Dropped support for Shooting Star"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:493
+msgid ""
+"Built a test infrastructure that is run before major code changes are "
+"checked in"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:494
+msgid ""
+"Tested and fixed most all of the outstanding bugs reported against 1.x that "
+"existing in the 2.0-dev code base."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:495
+msgid "Improved build process for Windows"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:496
+msgid ""
+"Automated testing on Linux and Windows platforms trigger by every commit"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:497
+msgid "Modular library design"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:498
+msgid "Compatibility with PostgreSQL 9.1 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:499
+msgid "Compatibility with PostGIS 2.0 or newer"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:500
+msgid "Installs as PostgreSQL EXTENSION"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:501
+msgid "Return types re factored and unified"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:502
+msgid "Support for table SCHEMA in function parameters"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:503
+msgid "Support for ``st_`` PostGIS function prefix"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:504
+msgid "Added ``pgr_`` prefix to functions and types"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:505
+msgid "Better documentation: http://docs.pgrouting.org"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:506
+msgid "shooting_star is discontinued"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:513
+msgid "pgRouting 1.x Release Notes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:515
+msgid ""
+"To see the issues closed by this release see the `Git closed issues for 1.x "
+"<https://github.com/pgRouting/pgrouting/issues?q=milestone%3A%22Release+1.x%22+is%3Aclosed>`_"
+" on Github. The following release notes have been copied from the previous "
+"``RELEASE_NOTES`` file and are kept as a reference."
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:520
+msgid "Changes for release 1.05"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:526
+msgid "Changes for release 1.03"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:528
+msgid "Much faster topology creation"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:533
+msgid "Changes for release 1.02"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:535 ../../build/doc/release_notes.rst:542
+msgid "Shooting* bug fixes"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:536
+msgid "Compilation problems solved"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:540
+msgid "Changes for release 1.01"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:546
+msgid "Changes for release 1.0"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:548
+msgid "Core and extra functions are separated"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:549
+msgid "Cmake build process"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:554
+msgid "Changes for release 1.0.0b"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:556
+msgid "Additional SQL file with more simple names for wrapper functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:561
+msgid "Changes for release 1.0.0a"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:563
+msgid "Shooting* shortest path algorithm for real road networks"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:564
+msgid "Several SQL bugs were fixed"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:568
+msgid "Changes for release 0.9.9"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:570
+msgid "PostgreSQL 8.2 support"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:571
+msgid ""
+"Shortest path functions return empty result if they could not find any path"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:575
+msgid "Changes for release 0.9.8"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:577
+msgid "Renumbering scheme was added to shortest path functions"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:578
+msgid "Directed shortest path functions were added"
+msgstr ""
+
+#: ../../build/doc/release_notes.rst:579
+msgid "routing_postgis.sql was modified to use dijkstra in TSP search"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/routingFunctions.po b/locale/ru/LC_MESSAGES/routingFunctions.po
new file mode 100644
index 0000000..3242809
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/routingFunctions.po
@@ -0,0 +1,134 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/routingFunctions.rst:15
+msgid "Routing Functions"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:21
+msgid ":ref:`all_pairs`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:23
+msgid ":ref:`pgr_floydWarshall` - Floyd-Warshall's Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:24
+msgid ":ref:`pgr_johnson`- Johnson’s Algorithm"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:26
+msgid ":ref:`pgr_astar` - Shortest Path A*"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:28
+msgid ":ref:`pgr_bdAstar` - Bi-directional A* Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:30
+msgid ":ref:`pgr_bdDijkstra` - Bi-directional Dijkstra Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:33
+msgid ":ref:`dijkstra`"
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:3
+msgid ":ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:4
+msgid ""
+":ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:5
+msgid ""
+":ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:6
+msgid ""
+":ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament "
+"information."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:7
+msgid ""
+":ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest "
+"paths."
+msgstr ""
+
+#: ../../build/doc/dijkstra-family.rst:8
+msgid ":ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:39
+msgid ":ref:`pgr_ksp` - K-Shortest Path"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:41
+msgid ":ref:`pgr_trsp<trsp>` - Turn Restriction Shortest Path (TRSP)"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:43
+msgid ":ref:`tsp`"
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:3
+msgid ":ref:`pgr_TSP` - When input is given as matrix cell information."
+msgstr ""
+
+#: ../../build/doc/TSP-family.rst:4
+msgid ":ref:`pgr_eucledianTSP` - When input are coordinates."
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:49
+msgid ":ref:`drivingDistance`"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:3
+msgid ":ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:4
+msgid ":ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:5
+msgid "Post pocessing"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:7
+msgid ":ref:`pgr_alphaShape` - Alpha shape computation"
+msgstr ""
+
+#: ../../build/doc/drivingDistance-category.rst:8
+msgid ":ref:`pgr_points_as_polygon` - Polygon around a set of points"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:70
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:73
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:74
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/routingFunctions.rst:75
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/sampledata.po b/locale/ru/LC_MESSAGES/sampledata.po
new file mode 100644
index 0000000..2ded9cd
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/sampledata.po
@@ -0,0 +1,152 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/sampledata.rst:11
+msgid "Sample Data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:13
+msgid ""
+"The documentation provides very simple example queries based on a small "
+"sample network. To be able to execute the sample queries, run the following "
+"SQL commands to create a table with a small network data set."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:18
+msgid "Create table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:25
+msgid "Insert data"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:32
+msgid "Topology"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:33
+msgid ""
+"Before you test a routing function use this query to create a topology "
+"(fills the ``source`` and ``target`` columns)."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:40
+msgid "Points of interest"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:41
+msgid "When points outside of the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:42
+msgid "Used with the :ref:`withPoints` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:49
+msgid "Restrictions"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:50
+msgid "Used with the :ref:`trsp` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:57
+msgid "Categories"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:58
+msgid "Used with the :ref:`maxFlow` functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:65
+msgid "Vertex table"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:66
+msgid "Used in some deprecated signatures or deprecated functions."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:74
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:76
+msgid "Red arrows correspond when ``cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:77
+msgid "Blue arrows correspond when ``reverse_cost`` > 0 in the edge table."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:78
+msgid "Points are outside the graph."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:79
+msgid "Click on the graph to enlarge."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:84
+msgid ""
+"Network for queries marked as ``directed`` and ``cost`` and ``reverse_cost``"
+" columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:86
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"vehicles."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:91
+msgid "**Graph 1: Directed, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:96
+msgid ""
+"Network for queries marked as ``undirected`` and ``cost`` and "
+"``reverse_cost`` columns are used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:98
+msgid ""
+"When working with city networks, this is recommended for point of view of "
+"pedestrians."
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:104
+msgid "**Graph 2: Undirected, with cost and reverse cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:109
+msgid ""
+"Network for queries marked as ``directed`` and only ``cost`` column is used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:116
+msgid "**Graph 3: Directed, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:121
+msgid ""
+"Network for queries marked as ``undirected`` and only ``cost`` column is "
+"used"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:127
+msgid "**Graph 4: Undirected, with cost**"
+msgstr ""
+
+#: ../../build/doc/sampledata.rst:134
+msgid "Pick & Deliver Data"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/support.po b/locale/ru/LC_MESSAGES/support.po
new file mode 100644
index 0000000..4082646
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/support.po
@@ -0,0 +1,177 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/support.rst:13
+msgid "Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:15
+msgid ""
+"pgRouting community support is available through the `pgRouting website "
+"<http://pgrouting.org/support.html>`_, `documentation "
+"<http://docs.pgrouting.org>`_, tutorials, mailing lists and others. If "
+"you’re looking for :ref:`commercial support <support_commercial>`, find "
+"below a list of companies providing pgRouting development and consulting "
+"services."
+msgstr ""
+
+#: ../../build/doc/support.rst:19
+msgid "Reporting Problems"
+msgstr ""
+
+#: ../../build/doc/support.rst:21
+msgid ""
+"Bugs are reported and managed in an `issue tracker "
+"<https://github.com/pgrouting/pgrouting/issues>`_. Please follow these "
+"steps:"
+msgstr ""
+
+#: ../../build/doc/support.rst:23
+msgid ""
+"Search the tickets to see if your problem has already been reported. If so, "
+"add any extra context you might have found, or at least indicate that you "
+"too are having the problem. This will help us prioritize common issues."
+msgstr ""
+
+#: ../../build/doc/support.rst:24
+msgid ""
+"If your problem is unreported, create a `new issue "
+"<https://github.com/pgRouting/pgrouting/issues/new>`_ for it."
+msgstr ""
+
+#: ../../build/doc/support.rst:25
+msgid ""
+"In your report include explicit instructions to replicate your issue. The "
+"best tickets include the exact SQL necessary to replicate a problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:26
+msgid ""
+"If you can test older versions of PostGIS for your problem, please do. On "
+"your ticket, note the earliest version the problem appears."
+msgstr ""
+
+#: ../../build/doc/support.rst:27
+msgid ""
+"For the versions where you can replicate the problem, note the operating "
+"system and version of pgRouting, PostGIS and PostgreSQL."
+msgstr ""
+
+#: ../../build/doc/support.rst:28
+msgid ""
+"It is recommended to use the following wrapper on the problem to pin point "
+"the step that is causing the problem."
+msgstr ""
+
+#: ../../build/doc/support.rst:39
+msgid "Mailing List and GIS StackExchange"
+msgstr ""
+
+#: ../../build/doc/support.rst:41
+msgid ""
+"There are two mailing lists for pgRouting hosted on OSGeo mailing list "
+"server:"
+msgstr ""
+
+#: ../../build/doc/support.rst:43
+msgid ""
+"User mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-users"
+msgstr ""
+
+#: ../../build/doc/support.rst:44
+msgid ""
+"Developer mailing list: http://lists.osgeo.org/mailman/listinfo/pgrouting-"
+"dev"
+msgstr ""
+
+#: ../../build/doc/support.rst:46
+msgid ""
+"For general questions and topics about how to use pgRouting, please write to"
+" the user mailing list."
+msgstr ""
+
+#: ../../build/doc/support.rst:48
+msgid ""
+"You can also ask at `GIS StackExchange <http://gis.stackexchange.com/>`_ and"
+" tag the question with ``pgrouting``. Find all questions tagged with "
+"``pgrouting`` under http://gis.stackexchange.com/questions/tagged/pgrouting "
+"or subscribe to the `pgRouting questions feed "
+"<http://gis.stackexchange.com/feeds/tag?tagnames=pgrouting&sort=newest>`_."
+msgstr ""
+
+#: ../../build/doc/support.rst:54
+msgid "Commercial Support"
+msgstr ""
+
+#: ../../build/doc/support.rst:56
+msgid ""
+"For users who require professional support, development and consulting "
+"services, consider contacting any of the following organizations, which have"
+" significantly contributed to the development of pgRouting:"
+msgstr ""
+
+#: ../../build/doc/support.rst:61
+msgid "**Company**"
+msgstr ""
+
+#: ../../build/doc/support.rst:62
+msgid "**Offices in**"
+msgstr ""
+
+#: ../../build/doc/support.rst:63
+msgid "**Website**"
+msgstr ""
+
+#: ../../build/doc/support.rst:64
+msgid "Georepublic"
+msgstr ""
+
+#: ../../build/doc/support.rst:65
+msgid "Germany, Japan"
+msgstr ""
+
+#: ../../build/doc/support.rst:66
+msgid "https://georepublic.info"
+msgstr ""
+
+#: ../../build/doc/support.rst:67
+msgid "iMaptools"
+msgstr ""
+
+#: ../../build/doc/support.rst:68 ../../build/doc/support.rst:71
+msgid "United States"
+msgstr ""
+
+#: ../../build/doc/support.rst:69
+msgid "http://imaptools.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:70
+msgid "Paragon Corporation"
+msgstr ""
+
+#: ../../build/doc/support.rst:72
+msgid "http://www.paragoncorporation.com"
+msgstr ""
+
+#: ../../build/doc/support.rst:73
+msgid "Camptocamp"
+msgstr ""
+
+#: ../../build/doc/support.rst:74
+msgid "Switzerland, France"
+msgstr ""
+
+#: ../../build/doc/support.rst:75
+msgid "http://www.camptocamp.com"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/topology-functions.po b/locale/ru/LC_MESSAGES/topology-functions.po
new file mode 100644
index 0000000..ac6a1b3
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/topology-functions.po
@@ -0,0 +1,66 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/topology-functions.rst:13
+msgid "Topology - Family of Functions"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:15
+msgid ""
+"The pgRouting's topology of a network, represented with an edge table with "
+"source and target attributes and a vertices table associated with it. "
+"Depending on the algorithm, you can create a topology or just reconstruct "
+"the vertices table, You can analyze the topology, We also provide a function"
+" to node an unoded network."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:19
+msgid ""
+":ref:`pgr_create_topology` - to create a topology based on the geometry."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:20
+msgid ""
+":ref:`pgr_create_vert_table` - to reconstruct the vertices table based on "
+"the source and target information."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:21
+msgid ""
+":ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge "
+"table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:22
+msgid ":ref:`pgr_analyze_oneway` - to analyze directionality of the edges."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:23
+msgid ":ref:`pgr_node_network` -to create nodes to a not noded edge table."
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:35
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:38
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:39
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/topology-functions.rst:40
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/types_index.po b/locale/ru/LC_MESSAGES/types_index.po
new file mode 100644
index 0000000..3f3faa7
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/types_index.po
@@ -0,0 +1,56 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/types_index.rst:13
+msgid "pgRouting Data Types"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:15
+msgid ""
+"The following are commonly used data types for some of the pgRouting "
+"functions."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:17
+msgid ""
+":ref:`type_cost_result` - A set of records to describe a path result with "
+"cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:18
+msgid ""
+":ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe "
+"a path result with cost attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:19
+msgid ""
+":ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a "
+"path result with geometry attribute."
+msgstr ""
+
+#: ../../build/doc/types_index.rst:30
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:33
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:34
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/types_index.rst:35
+msgid ":ref:`search`"
+msgstr ""
diff --git a/locale/ru/LC_MESSAGES/withPoints-family.po b/locale/ru/LC_MESSAGES/withPoints-family.po
new file mode 100644
index 0000000..3d4f303
--- /dev/null
+++ b/locale/ru/LC_MESSAGES/withPoints-family.po
@@ -0,0 +1,395 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pgRouting v2.5.0-alpha\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-26 16:13-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../../build/doc/withPoints-family.rst:14
+msgid "withPoints - Family of functions"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:16
+msgid "When points are also given as input:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:20
+msgid ":ref:`pgr_withPoints` - Route from/to points anywhere on the graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:21
+msgid ":ref:`pgr_withPointsCost` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:22
+msgid ":ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:23
+msgid ":ref:`pgr_withPointsKSP` - K shortest paths."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:24
+msgid ":ref:`pgr_withPointsDD` - Driving distance."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:3
+msgid "Proposed functions for next mayor release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:5
+msgid "They are not officially in the current release."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:6
+msgid "They will likely officially be part of the next mayor release:"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:8
+msgid "The functions make use of ANY-INTEGER and ANY-NUMERICAL"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:9
+msgid "Name might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:10
+msgid "Signature might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:11
+msgid "Functionality might not change. (But still can)"
+msgstr ""
+
+#: ../../build/doc/proposed.rst:12
+msgid "pgTap tests have being done. But might need more."
+msgstr ""
+
+#: ../../build/doc/proposed.rst:13
+msgid "Documentation might need refinement."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:47
+msgid "Images"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:49
+msgid ""
+"The squared vertices are the temporary vertices, The temporary vertices are "
+"added acordng to the dirving side, The following images visualy show the "
+"diferences on how depending on the driving side the data is interpreted."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:53
+msgid "Right driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:58
+msgid "Left driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:63
+msgid "doesn't matter the driving side"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:68
+msgid "Introduction"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:70
+msgid ""
+"This famly of functions was thought for routing vehicles, but might as well "
+"work for some other application that we can not think of."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:73
+msgid ""
+"The with points family of function give you the ability to route between "
+"arbitrary points located outside the original graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:76
+msgid ""
+"When given a point identified with a `pid` that its being mapped to and edge"
+" with an identifier `edge_id`, with a `fraction` along that edge (from the "
+"source to the target of the edge) and some additional information about "
+"which `side` of the edge the point is on, then routing from arbitrary points"
+" more accurately reflect routing vehicles in road networks,"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid ""
+"I talk about a family of functions because it includes different "
+"functionalities."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:84
+msgid "pgr_withPoints is pgr_dijkstra based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:85
+msgid "pgr_withPointsCost is pgr_dijkstraCost based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:86
+msgid "pgr_withPointsKSP is pgr_ksp based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:87
+msgid "pgr_withPointsDD is pgr_drivingDistance based"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:89
+msgid ""
+"In all this functions we have to take care of as many aspects as possible:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:91
+msgid "Must work for routing:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:93
+msgid "Cars (directed graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:94
+msgid "Pedestrians (undirected graph)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:96
+msgid "Arriving at the point:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:98
+msgid "In either side of the street."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:99
+msgid ""
+"Compulsory arrival on the side of the street where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:101
+msgid "Countries with:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:103
+msgid "Right side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:104
+msgid "Left side driving"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:106
+msgid "Some points are:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:108
+msgid ""
+"Permanent, for example the set of points of clients stored in a table in the"
+" data base"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:109
+msgid "Temporal, for example points given through a web application"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:111
+msgid "The numbering of the points are handled with negative sign."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:113
+msgid "Original point identifiers are to be positive."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:114
+msgid "Transformation to negative is done internally."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:115
+msgid "For results for involving vertices identifiers"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:117
+msgid "positive sign is a vertex of the original grpah"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:118
+msgid "negative sign is a point of the temporary points"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:120
+msgid ""
+"The reason for doing this is to avoid confusion when there is a vertex with "
+"the same number as identifier as the points identifier."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:123
+msgid "Graph & edges"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:125
+msgid ""
+"Let :math:`G_d(V,E)` where :math:`V` is the set of vertices and :math:`E` is"
+" the set of edges be the original directed graph."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:127
+msgid ""
+"An edge of the original `edges_sql` is :math:`(id, source, target, cost, "
+"reverse\\_cost)` will generate internally"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:129
+msgid ":math:`(id, source, target, cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:130
+msgid ":math:`(id, target, source, reverse\\_cost)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:133
+msgid "Point Definition"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:135
+msgid ""
+"A point is defined by the quadruplet: :math:`(pid, eid, fraction, side)`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:137
+msgid "**pid** is the point identifier"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:138
+msgid "**eid** is an edge id of the `edges_sql`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:139
+msgid "**fraction** represents where the edge `eid` will be cut."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:140
+msgid "**side** Indicates the side of the edge where the point is located."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:144
+msgid "Creating Temporary Vertices in the Graph"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:146
+msgid "For edge (15, 9,12 10, 20), & lets insert point (2, 12, 0.3, r)"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:149
+msgid "On a right hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:150
+msgid "From first image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:152
+msgid "We can arrive to the point only via vertex 9."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:153
+msgid "It only afects the edge (15, 9,12, 10) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:154
+msgid "Edge (15, 12,9, 20) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:155
+#: ../../build/doc/withPoints-family.rst:167
+#: ../../build/doc/withPoints-family.rst:182
+msgid "Create new edges:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:157
+#: ../../build/doc/withPoints-family.rst:186
+msgid "(15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:158
+#: ../../build/doc/withPoints-family.rst:187
+msgid "(15, -1,12, 7) edge from point 1 to vertex 12 has cost 7"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:161
+msgid "On a left hand side driving network"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:162
+msgid "From second image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:164
+msgid "We can arrive to the point only via vertex 12."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:165
+msgid "It only afects the edge (15, 12,9 20) so that edge is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:166
+msgid "Edge (15, 9,12, 10) is kept."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:169
+#: ../../build/doc/withPoints-family.rst:184
+msgid "(15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:170
+#: ../../build/doc/withPoints-family.rst:185
+msgid "(15, -1,9, 6) edge from point 1 to vertex 9 has cost 6"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:172
+msgid "that fraction is from vertex 9 to vertex 12"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:176
+msgid "When driving side does not matter"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:177
+msgid "From third image above:"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:179
+msgid "We can arrive to the point either via vertex 12 or via vertex 9"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:180
+msgid "Edge (15, 12,9 20) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:181
+msgid "Edge (15, 9,12, 10) is removed."
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:190
+msgid "See Also"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:193
+msgid "Indices and tables"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:194
+msgid ":ref:`genindex`"
+msgstr ""
+
+#: ../../build/doc/withPoints-family.rst:195
+msgid ":ref:`search`"
+msgstr ""
diff --git a/src/allpairs/test/pgtap/compare-directed.test.sql b/pgtap/allpairs/compare-directed.test.sql
similarity index 100%
rename from src/allpairs/test/pgtap/compare-directed.test.sql
rename to pgtap/allpairs/compare-directed.test.sql
diff --git a/src/allpairs/test/pgtap/compare-undirected.test.sql b/pgtap/allpairs/compare-undirected.test.sql
similarity index 100%
rename from src/allpairs/test/pgtap/compare-undirected.test.sql
rename to pgtap/allpairs/compare-undirected.test.sql
diff --git a/pgtap/allpairs/floydWarshall-innerQuery.sql b/pgtap/allpairs/floydWarshall-innerQuery.sql
new file mode 100644
index 0000000..d008b3e
--- /dev/null
+++ b/pgtap/allpairs/floydWarshall-innerQuery.sql
@@ -0,0 +1,18 @@
+\i setup.sql
+
+SELECT plan(82);
+
+
+SELECT has_function('pgr_floydwarshall',
+ ARRAY['text', 'boolean']);
+
+SELECT function_returns('pgr_floydwarshall',
+ ARRAY['text', 'boolean'],
+ 'setof record');
+
+SELECT style_dijkstra_no_id('pgr_floydwarshall', ', true)');
+SELECT style_dijkstra('pgr_floydwarshall', ', true)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/allpairs/fw-types-check.sql b/pgtap/allpairs/fw-types-check.sql
new file mode 100644
index 0000000..aeb679d
--- /dev/null
+++ b/pgtap/allpairs/fw-types-check.sql
@@ -0,0 +1,52 @@
+
+\i setup.sql
+
+
+SELECT plan(4);
+
+PREPARE q1 AS
+SELECT * FROM pgr_floydWarshall(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+
+PREPARE q2 AS
+SELECT * FROM pgr_floydWarshall(
+ 'SELECT source, target, cost, reverse_cost FROM edge_table'
+);
+
+
+PREPARE q3 AS
+SELECT * FROM pgr_floydWarshall(
+ 'SELECT source, target, cost FROM edge_table',
+ true
+);
+
+
+SELECT lives_ok('q1', 'SHOULD WORK: without flag & with id');
+SELECT lives_ok('q2', 'SHOULD WORK: without flag');
+SELECT lives_ok('q3', 'SHOULD WORK: with flag');
+
+
+-- CHECKING THE RETURN TYPES
+PREPARE v21q00 AS
+SELECT pg_typeof(start_vid)::text AS t1,
+ pg_typeof(end_vid)::text AS t2,
+ pg_typeof(agg_cost)::TEXT AS t3
+FROM (
+ SELECT * FROM pgr_floydWarshall(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+ )) AS a
+LIMIT 1
+;
+
+PREPARE v21q01 AS
+SELECT 'bigint'::text AS t1,
+ 'bigint'::text AS t2,
+ 'double precision'::text AS t3;
+
+SELECT set_eq('v21q00', 'v21q01','Expected columns names & types');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/allpairs/j-types-check.sql b/pgtap/allpairs/j-types-check.sql
new file mode 100644
index 0000000..afbb799
--- /dev/null
+++ b/pgtap/allpairs/j-types-check.sql
@@ -0,0 +1,52 @@
+
+\i setup.sql
+
+
+SELECT plan(4);
+
+PREPARE q1 AS
+SELECT * FROM pgr_johnson(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+
+PREPARE q2 AS
+SELECT * FROM pgr_johnson(
+ 'SELECT source, target, cost, reverse_cost FROM edge_table'
+);
+
+
+PREPARE q3 AS
+SELECT * FROM pgr_johnson(
+ 'SELECT source, target, cost FROM edge_table',
+ true
+);
+
+
+SELECT lives_ok('q1', 'SHOULD WORK: without flag & with id');
+SELECT lives_ok('q2', 'SHOULD WORK: without flag');
+SELECT lives_ok('q3', 'SHOULD WORK: with flag');
+
+
+-- CHECKING THE RETURN TYPES
+PREPARE v21q00 AS
+SELECT pg_typeof(start_vid)::text AS t1,
+ pg_typeof(end_vid)::text AS t2,
+ pg_typeof(agg_cost)::TEXT AS t3
+FROM (
+ SELECT * FROM pgr_johnson(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+ )) AS a
+LIMIT 1
+;
+
+PREPARE v21q01 AS
+SELECT 'bigint'::text AS t1,
+ 'bigint'::text AS t2,
+ 'double precision'::text AS t3;
+
+SELECT set_eq('v21q00', 'v21q01','Expected columns names & types');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/allpairs/johnson-innerQuery.sql b/pgtap/allpairs/johnson-innerQuery.sql
new file mode 100644
index 0000000..6a5d8b5
--- /dev/null
+++ b/pgtap/allpairs/johnson-innerQuery.sql
@@ -0,0 +1,20 @@
+\i setup.sql
+
+SELECT plan(82);
+
+
+SELECT has_function('pgr_johnson',
+ ARRAY['text', 'boolean']);
+
+SELECT function_returns('pgr_johnson',
+ ARRAY['text', 'boolean'],
+ 'setof record');
+
+
+SELECT style_dijkstra_no_id('pgr_johnson', ', true)');
+SELECT style_dijkstra('pgr_johnson', ', true)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/alpha_shape/test/pgtap/issue-544.sql b/pgtap/alpha_shape/issue-544.sql
similarity index 100%
rename from src/alpha_shape/test/pgtap/issue-544.sql
rename to pgtap/alpha_shape/issue-544.sql
diff --git a/pgtap/astar/aStar-group-innerQuery.sql b/pgtap/astar/aStar-group-innerQuery.sql
new file mode 100644
index 0000000..bb64433
--- /dev/null
+++ b/pgtap/astar/aStar-group-innerQuery.sql
@@ -0,0 +1,41 @@
+\i setup.sql
+
+SELECT plan(348);
+
+
+SELECT has_function('pgr_astar',
+ ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astar',
+ ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astar',
+ ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astar',
+ ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision']);
+
+SELECT function_returns('pgr_astar',
+ ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'double precision', 'double precision'],
+ 'setof record');
+SELECT function_returns('pgr_astar',
+ ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision'],
+ 'setof record');
+SELECT function_returns('pgr_astar',
+ ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'double precision', 'double precision'],
+ 'setof record');
+SELECT function_returns('pgr_astar',
+ ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision'],
+ 'setof record');
+
+
+
+-- ONE TO ONE
+SELECT style_astar('pgr_astar', ', 2, 3, true)');
+-- ONE TO MANY
+SELECT style_astar('pgr_astar', ', 2, ARRAY[3], true)');
+-- MANY TO ONE
+SELECT style_astar('pgr_astar', ', ARRAY[2], 3, true)');
+-- MANY TO MANY
+SELECT style_astar('pgr_astar', ', ARRAY[2], ARRAY[3], true)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/astar/aStarCost-group-innerQuery.sql b/pgtap/astar/aStarCost-group-innerQuery.sql
new file mode 100644
index 0000000..028bf66
--- /dev/null
+++ b/pgtap/astar/aStarCost-group-innerQuery.sql
@@ -0,0 +1,39 @@
+\i setup.sql
+
+SELECT plan(348);
+
+
+SELECT has_function('pgr_astarcost',
+ ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astarcost',
+ ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astarcost',
+ ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astarcost',
+ ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision']);
+
+SELECT function_returns('pgr_astarcost',
+ ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'double precision', 'double precision'],
+ 'setof record');
+SELECT function_returns('pgr_astarcost',
+ ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision'],
+ 'setof record');
+SELECT function_returns('pgr_astarcost',
+ ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'double precision', 'double precision'],
+ 'setof record');
+SELECT function_returns('pgr_astarcost',
+ ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision'],
+ 'setof record');
+
+-- ONE TO ONE
+SELECT style_astar('pgr_astarcost', ', 2, 3, true)');
+-- ONE TO MANY
+SELECT style_astar('pgr_astarcost', ', 2, ARRAY[3], true)');
+-- MANY TO ONE
+SELECT style_astar('pgr_astarcost', ', ARRAY[2], 3, true)');
+-- MANY TO MANY
+SELECT style_astar('pgr_astarcost', ', ARRAY[2], ARRAY[3], true)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/astar/astar_ManyToMany-compare-dijkstra.test.sql b/pgtap/astar/astar_ManyToMany-compare-dijkstra.test.sql
new file mode 100644
index 0000000..bda7909
--- /dev/null
+++ b/pgtap/astar/astar_ManyToMany-compare-dijkstra.test.sql
@@ -0,0 +1,94 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+\i setup.sql
+
+SELECT plan(4);
+
+UPDATE edge_table SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id;
+
+CREATE or REPLACE FUNCTION astarCompareDijkstra(cant INTEGER default 17)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+inner_sql TEXT;
+dijkstra_sql TEXT;
+astar_sql TEXT;
+vids TEXT;
+data TEXT;
+BEGIN
+ data := ' path_seq, start_vid, end_vid, cost::text, agg_cost::text ';
+ vids := ' ARRAY[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] ';
+
+
+ -----------------------
+ -- with reverse cost
+ -----------------------
+ -- DIRECTED
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table';
+ dijkstra_sql := 'SELECT ' || data || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || vids
+ || ',' || vids || ', true)';
+
+ astar_sql := 'SELECT ' || data || ' FROM pgr_astar($$' || inner_sql || '$$, ' || vids
+ || ',' || vids || ', true, heuristic := 0)';
+ RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
+
+ -- UNDIRECTED
+ dijkstra_sql := 'SELECT ' || data || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || vids
+ || ',' || vids || ', false)';
+
+ astar_sql := 'SELECT ' || data || ' FROM pgr_astar($$' || inner_sql || '$$, ' || vids
+ || ', ' || vids || ', false, heuristic := 0)';
+ RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
+
+ -----------------------
+ -- NO reverse cost
+ -----------------------
+ -- DIRECTED
+ inner_sql := 'SELECT id, source, target, cost, x1, y1, x2, y2 FROM edge_table';
+ dijkstra_sql := 'SELECT ' || data || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || vids
+ || ',' || vids || ', true)';
+
+ astar_sql := 'SELECT ' || data || ' FROM pgr_astar($$' || inner_sql || '$$, ' || vids
+ || ',' || vids || ', true, heuristic := 0)';
+ RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
+
+ -- UNDIRECTED
+ dijkstra_sql := 'SELECT ' || data || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || vids
+ || ',' || vids || ', false)';
+
+ astar_sql := 'SELECT ' || data || ' FROM pgr_astar($$' || inner_sql || '$$, ' || vids
+ || ', ' || vids || ', false, heuristic := 0)';
+ RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
+
+ RETURN;
+END
+$BODY$
+language plpgsql;
+
+SELECT * from astarCompareDijkstra();
+
+
+SELECT * FROM finish();
+ROLLBACK;
+
diff --git a/src/astar/test/pgtap/astar_ManyToOne-compare-dijkstra.test.sql b/pgtap/astar/astar_ManyToOne-compare-dijkstra.test.sql
similarity index 100%
rename from src/astar/test/pgtap/astar_ManyToOne-compare-dijkstra.test.sql
rename to pgtap/astar/astar_ManyToOne-compare-dijkstra.test.sql
diff --git a/src/astar/test/pgtap/astar_oneToMany-compare-dijkstra.test.sql b/pgtap/astar/astar_oneToMany-compare-dijkstra.test.sql
similarity index 100%
rename from src/astar/test/pgtap/astar_oneToMany-compare-dijkstra.test.sql
rename to pgtap/astar/astar_oneToMany-compare-dijkstra.test.sql
diff --git a/pgtap/astar/astar_oneToOne-compare-dijkstra.test.sql b/pgtap/astar/astar_oneToOne-compare-dijkstra.test.sql
new file mode 100644
index 0000000..cdded62
--- /dev/null
+++ b/pgtap/astar/astar_oneToOne-compare-dijkstra.test.sql
@@ -0,0 +1,99 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+\i setup.sql
+
+SELECT plan(612);
+
+UPDATE edge_table SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id;
+
+CREATE or REPLACE FUNCTION astarCompareDijkstra(cant INTEGER default 17)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+inner_sql TEXT;
+dijkstra_sql TEXT;
+astar_sql TEXT;
+result_columns TEXT;
+BEGIN
+ result_columns := ' seq, path_seq, cost::TEXT, agg_cost::TEXT ';
+
+ FOR i IN 1.. cant BY 2 LOOP
+ FOR j IN 1.. cant LOOP
+
+ -- DIRECTED WITH REVERSE COST
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table';
+ dijkstra_sql := 'SELECT ' || result_columns || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true)';
+
+ astar_sql := 'SELECT ' || result_columns || ' FROM pgr_astar($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true, heuristic:=0)';
+ RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
+
+
+ -- DIRECTED WITHOUT REVERSE COST
+ inner_sql := 'SELECT id, source, target, cost, x1, y1, x2, y2 FROM edge_table';
+ dijkstra_sql := 'SELECT ' || result_columns || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true)';
+
+ astar_sql := 'SELECT ' || result_columns || ' FROM pgr_astar($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true, heuristic:=0)';
+ RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
+
+
+ -- UNDIRECTED WITH REVERSE COST
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table';
+ dijkstra_sql := 'SELECT ' || result_columns || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false)';
+
+ astar_sql := 'SELECT ' || result_columns || ' FROM pgr_astar($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false, heuristic:=0)';
+ RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
+
+
+ -- UNDIRECTED WITHOUT REVERSE COST
+ inner_sql := 'SELECT id, source, target, cost, x1, y1, x2, y2 FROM edge_table';
+ dijkstra_sql := 'SELECT ' || result_columns || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false)';
+
+ astar_sql := 'SELECT ' || result_columns || ' FROM pgr_astar($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false, heuristic:=0)';
+ RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
+
+
+
+
+ END LOOP;
+ END LOOP;
+
+ RETURN;
+END
+$BODY$
+language plpgsql;
+
+SELECT * from astarCompareDijkstra();
+
+
+SELECT * FROM finish();
+ROLLBACK;
+
diff --git a/src/astar/test/pgtap/astar_oneToOne-compare-dijkstra1.test.sql b/pgtap/astar/astar_oneToOne-compare-dijkstra1.test.sql
similarity index 100%
rename from src/astar/test/pgtap/astar_oneToOne-compare-dijkstra1.test.sql
rename to pgtap/astar/astar_oneToOne-compare-dijkstra1.test.sql
diff --git a/src/astar/test/pgtap/astar_oneToOne-types-check.sql b/pgtap/astar/astar_oneToOne-types-check.sql
similarity index 100%
rename from src/astar/test/pgtap/astar_oneToOne-types-check.sql
rename to pgtap/astar/astar_oneToOne-types-check.sql
diff --git a/pgtap/bdAstar/bdAstar-compare-dijkstra.sql b/pgtap/bdAstar/bdAstar-compare-dijkstra.sql
new file mode 100644
index 0000000..421c41f
--- /dev/null
+++ b/pgtap/bdAstar/bdAstar-compare-dijkstra.sql
@@ -0,0 +1,79 @@
+\i setup.sql
+
+SET client_min_messages TO ERROR;
+
+SELECT plan(544);
+
+UPDATE edge_table SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id;
+
+
+CREATE or REPLACE FUNCTION bdastar_compare_dijkstra(cant INTEGER default 17)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+inner_sql TEXT;
+dijkstra_sql TEXT;
+bdastar_sql TEXT;
+BEGIN
+
+ FOR i IN 1.. cant LOOP
+ FOR j IN 2.. cant BY 2 LOOP
+
+ -- DIRECTED
+ -- with reverse_cost
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2 FROM edge_table';
+ dijkstra_sql := 'SELECT seq,node,edge,cost::text,agg_cost::text FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true)';
+
+ bdastar_sql := 'SELECT seq,node,edge,cost::text,agg_cost::text FROM pgr_bdastar($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true, 0)';
+ RETURN query SELECT set_eq(bdastar_sql, dijkstra_sql, bdastar_sql);
+
+
+ -- DIRECTED
+ -- NO reverse_cost
+ inner_sql := 'SELECT id, source, target, cost, x1,y1,x2,y2 FROM edge_table';
+ dijkstra_sql := 'SELECT seq,node,edge,cost::text,agg_cost::text FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true)';
+
+ bdastar_sql := 'SELECT seq,node,edge,cost::text,agg_cost::text FROM pgr_bdastar($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true, 0)';
+ RETURN query SELECT set_eq(bdastar_sql, dijkstra_sql, bdastar_sql);
+
+ -- UNDIRECTED
+ -- with reverse_cost
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2 FROM edge_table';
+ dijkstra_sql := 'SELECT seq,node,edge,cost::text,agg_cost::text FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false)';
+
+ bdastar_sql := 'SELECT seq,node,edge,cost::text,agg_cost::text FROM pgr_bdastar($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false, 0)';
+ RETURN query SELECT set_eq(bdastar_sql, dijkstra_sql, bdastar_sql);
+
+
+ -- UNDIRECTED
+ -- NO reverse_cost
+ inner_sql := 'SELECT id, source, target, cost, x1,y1,x2,y2 FROM edge_table';
+ dijkstra_sql := 'SELECT seq,node,edge,cost::text,agg_cost::text FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false)';
+
+ bdastar_sql := 'SELECT seq,node,edge,cost::text,agg_cost::text FROM pgr_bdastar($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false, 0)';
+ RETURN query SELECT set_eq(bdastar_sql, dijkstra_sql, bdastar_sql);
+
+
+ END LOOP;
+ END LOOP;
+
+ RETURN;
+END
+$BODY$
+language plpgsql;
+
+
+SELECT * from bdastar_compare_dijkstra();
+
+
+SELECT * FROM finish();
+ROLLBACK;
+
diff --git a/pgtap/bdAstar/bdAstar-innerQuery.sql b/pgtap/bdAstar/bdAstar-innerQuery.sql
new file mode 100644
index 0000000..5761ba9
--- /dev/null
+++ b/pgtap/bdAstar/bdAstar-innerQuery.sql
@@ -0,0 +1,26 @@
+\i setup.sql
+
+SELECT plan(348);
+
+
+SELECT has_function('pgr_bdastar', ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastar', ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastar', ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastar', ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric']);
+
+SELECT function_returns('pgr_bdastar', ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record');
+SELECT function_returns('pgr_bdastar', ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record');
+SELECT function_returns('pgr_bdastar', ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record');
+SELECT function_returns('pgr_bdastar', ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record');
+
+SELECT style_astar('pgr_bdastar', ', 2, 3, true)');
+SELECT style_astar('pgr_bdastar', ', 2, ARRAY[3], true)');
+SELECT style_astar('pgr_bdastar', ', ARRAY[2], 3, true)');
+SELECT style_astar('pgr_bdastar', ', ARRAY[2], ARRAY[3], true)');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/bdAstar/bdAstar-parameter-types-check.sql b/pgtap/bdAstar/bdAstar-parameter-types-check.sql
new file mode 100644
index 0000000..b30d05b
--- /dev/null
+++ b/pgtap/bdAstar/bdAstar-parameter-types-check.sql
@@ -0,0 +1,72 @@
+
+\i setup.sql
+
+SELECT plan(10);
+
+
+SELECT has_function('pgr_bdastar',
+ ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT function_returns('pgr_bdastar',
+ ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record','Returns set record');
+
+SELECT has_function('pgr_bdastar',ARRAY['text', 'bigint', 'bigint']);
+SELECT function_returns('pgr_bdastar', ARRAY['text', 'bigint', 'bigint'], 'setof record','Returns set record');
+
+
+SELECT throws_ok(
+ $$SELECT * FROM pgr_bdastar('SELECT * FROM edge_table',
+ 2, 3,
+ true, 6, 1, 1)$$,
+ 'XX000',
+ 'Unknown heuristic',
+ 'SHOULD THROW because heuristic > 5'
+);
+
+SELECT throws_ok(
+ $$SELECT * FROM pgr_bdastar('SELECT * FROM edge_table',
+ 2, 3,
+ true, -1, 1, 1)$$,
+ 'XX000',
+ 'Unknown heuristic',
+ 'SHOULD THROW because heuristic < 0'
+);
+
+SELECT throws_ok(
+ $$SELECT * FROM pgr_bdastar('SELECT * FROM edge_table',
+ 2, 3,
+ true, 0, 0, 1)$$,
+ 'XX000',
+ 'Factor value out of range',
+ 'SHOULD THROW because factor = 0'
+);
+
+SELECT throws_ok(
+ $$SELECT * FROM pgr_bdastar('SELECT * FROM edge_table',
+ 2, 3,
+ true, 0, -1.4, 1)$$,
+ 'XX000',
+ 'Factor value out of range',
+ 'SHOULD THROW because factor < 0'
+);
+
+SELECT throws_ok(
+ $$SELECT * FROM pgr_bdastar('SELECT * FROM edge_table',
+ 2, 3,
+ true, 0, 1, -3)$$,
+ 'XX000',
+ 'Epsilon value out of range',
+ 'SHOULD THROW because epsilon < 0'
+);
+SELECT throws_ok(
+ $$SELECT * FROM pgr_bdastar('SELECT * FROM edge_table',
+ 2, 3,
+ true, 0, 1, 0.9)$$,
+ 'XX000',
+ 'Epsilon value out of range',
+ 'SHOULD THROW because epsilon < 1'
+);
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/bdAstar/bdAstar-return-types-check.sql b/pgtap/bdAstar/bdAstar-return-types-check.sql
new file mode 100644
index 0000000..9e43de8
--- /dev/null
+++ b/pgtap/bdAstar/bdAstar-return-types-check.sql
@@ -0,0 +1,54 @@
+\i setup.sql
+
+
+SELECT plan(6);
+
+SELECT can(ARRAY['pgr_bdastar']);
+
+
+--V2.4+
+SELECT has_function('pgr_bdastar',
+ ARRAY['text','bigint','bigint','boolean', 'integer', 'numeric', 'numeric']);
+SELECT function_returns('pgr_bdastar',
+ ARRAY['text','bigint','bigint','boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record');
+
+-- testing for the signature that they return the correct names & columns
+
+PREPARE v21q00 AS
+SELECT pg_typeof(seq)::text AS t1, pg_typeof(path_seq)::text AS t2,
+ pg_typeof(node)::text AS t5, pg_typeof(edge)::text AS t6,
+ pg_typeof(cost)::text AS t7, pg_typeof(agg_cost)::TEXT AS t8
+ FROM (
+ SELECT * FROM pgr_bdastar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2 FROM edge_table',
+ 2, 3, true) ) AS a
+ limit 1
+;
+
+PREPARE v21q01 AS
+SELECT 'integer'::text AS t1,'integer'::text AS t2,
+ 'bigint'::text AS t5, 'bigint'::text AS t6,
+ 'double precision'::text AS t7, 'double precision'::text AS t8;
+
+SELECT set_eq('v21q00', 'v21q01','Expected columns names & types in version 2.5');
+
+
+-- CHECKING WORKS WITH & WITOUT REVERSE COST
+
+PREPARE v20q1 AS
+SELECT * FROM pgr_bdastar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2 FROM edge_table',
+ 2, 3, true);
+
+PREPARE v20q3 AS
+SELECT * FROM pgr_bdastar(
+ 'SELECT id, source, target, cost, x1,y1,x2,y2 FROM edge_table',
+ 2, 3, false);
+
+SELECT lives_ok('v20q1','with reverse cost');
+SELECT lives_ok('v20q3','with NO reverse cost');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/bdAstar/bdAstarCost-innerQuery.sql b/pgtap/bdAstar/bdAstarCost-innerQuery.sql
new file mode 100644
index 0000000..e698e6a
--- /dev/null
+++ b/pgtap/bdAstar/bdAstarCost-innerQuery.sql
@@ -0,0 +1,26 @@
+\i setup.sql
+
+SELECT plan(348);
+
+
+SELECT has_function('pgr_bdastarcost', ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastarcost', ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastarcost', ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastarcost', ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric']);
+
+SELECT function_returns('pgr_bdastarcost', ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record');
+SELECT function_returns('pgr_bdastarcost', ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record');
+SELECT function_returns('pgr_bdastarcost', ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record');
+SELECT function_returns('pgr_bdastarcost', ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record');
+
+SELECT style_astar('pgr_bdastarcost', ', 2, 3, true)');
+SELECT style_astar('pgr_bdastarcost', ', 2, ARRAY[3], true)');
+SELECT style_astar('pgr_bdastarcost', ', ARRAY[2], 3, true)');
+SELECT style_astar('pgr_bdastarcost', ', ARRAY[2], ARRAY[3], true)');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/bdAstar/bdAstarCostMatrix-innerQuery.sql b/pgtap/bdAstar/bdAstarCostMatrix-innerQuery.sql
new file mode 100644
index 0000000..67d1c05
--- /dev/null
+++ b/pgtap/bdAstar/bdAstarCostMatrix-innerQuery.sql
@@ -0,0 +1,15 @@
+\i setup.sql
+
+SELECT plan(172);
+
+
+SELECT has_function('pgr_bdastarcostmatrix', ARRAY['text', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric']);
+
+SELECT function_returns('pgr_bdastarcostmatrix', ARRAY['text', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric'],
+ 'setof record');
+
+SELECT style_astar('pgr_bdastarcostmatrix', ', ARRAY[2, 3], true)');
+SELECT style_astar('pgr_bdastarcostmatrix', ', ARRAY[2, 3], false)');
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/bdDijkstra/test/pgtap/bdDijkstra-compare-dijkstra.sql b/pgtap/bdDijkstra/bdDijkstra-compare-dijkstra.sql
similarity index 100%
rename from src/bdDijkstra/test/pgtap/bdDijkstra-compare-dijkstra.sql
rename to pgtap/bdDijkstra/bdDijkstra-compare-dijkstra.sql
diff --git a/pgtap/bdDijkstra/bdDijkstra-innerQuery.sql b/pgtap/bdDijkstra/bdDijkstra-innerQuery.sql
new file mode 100644
index 0000000..6bde49f
--- /dev/null
+++ b/pgtap/bdDijkstra/bdDijkstra-innerQuery.sql
@@ -0,0 +1,37 @@
+\i setup.sql
+
+SELECT plan(548);
+
+SELECT has_function('pgr_bddijkstra', ARRAY['text', 'bigint', 'bigint', 'boolean']);
+SELECT has_function('pgr_bddijkstra', ARRAY['text', 'bigint', 'anyarray', 'boolean']);
+SELECT has_function('pgr_bddijkstra', ARRAY['text', 'anyarray', 'bigint', 'boolean']);
+SELECT has_function('pgr_bddijkstra', ARRAY['text', 'anyarray', 'anyarray', 'boolean']);
+
+SELECT function_returns('pgr_bddijkstra', ARRAY['text', 'bigint', 'bigint', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_bddijkstra', ARRAY['text', 'bigint', 'anyarray', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_bddijkstra', ARRAY['text', 'anyarray', 'bigint', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_bddijkstra', ARRAY['text', 'anyarray', 'anyarray', 'boolean'],
+ 'setof record');
+
+
+
+SELECT style_dijkstra('pgr_bddijkstra', ', 2, 3, true)');
+SELECT style_dijkstra('pgr_bddijkstra', ', 2, ARRAY[3], true)');
+SELECT style_dijkstra('pgr_bddijkstra', ', 2, ARRAY[3], true)');
+SELECT style_dijkstra('pgr_bddijkstra', ', ARRAY[2], ARRAY[3], true)');
+
+SELECT style_dijkstra('pgr_bddijkstra', ', 2, 3)');
+SELECT style_dijkstra('pgr_bddijkstra', ', 2, ARRAY[3])');
+SELECT style_dijkstra('pgr_bddijkstra', ', 2, ARRAY[3])');
+SELECT style_dijkstra('pgr_bddijkstra', ', ARRAY[2], ARRAY[3])');
+
+SELECT style_dijkstra('pgr_bddijkstra', ', 2, 3, false)');
+SELECT style_dijkstra('pgr_bddijkstra', ', 2, ARRAY[3], false)');
+SELECT style_dijkstra('pgr_bddijkstra', ', 2, ARRAY[3], false)');
+SELECT style_dijkstra('pgr_bddijkstra', ', ARRAY[2], ARRAY[3], false)');
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/bdDijkstra/test/pgtap/bdDijkstra-types-check.sql b/pgtap/bdDijkstra/bdDijkstra-types-check.sql
similarity index 100%
rename from src/bdDijkstra/test/pgtap/bdDijkstra-types-check.sql
rename to pgtap/bdDijkstra/bdDijkstra-types-check.sql
diff --git a/pgtap/bdDijkstra/bdDijkstraCost-innerQuery.sql b/pgtap/bdDijkstra/bdDijkstraCost-innerQuery.sql
new file mode 100644
index 0000000..4ea2cf7
--- /dev/null
+++ b/pgtap/bdDijkstra/bdDijkstraCost-innerQuery.sql
@@ -0,0 +1,37 @@
+\i setup.sql
+
+SELECT plan(548);
+
+SELECT has_function('pgr_bddijkstracost', ARRAY['text', 'bigint', 'bigint', 'boolean']);
+SELECT has_function('pgr_bddijkstracost', ARRAY['text', 'anyarray', 'bigint', 'boolean']);
+SELECT has_function('pgr_bddijkstracost', ARRAY['text', 'bigint', 'anyarray', 'boolean']);
+SELECT has_function('pgr_bddijkstracost', ARRAY['text', 'anyarray', 'anyarray', 'boolean']);
+
+SELECT function_returns('pgr_bddijkstracost', ARRAY['text', 'bigint', 'bigint', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_bddijkstracost', ARRAY['text', 'bigint', 'anyarray', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_bddijkstracost', ARRAY['text', 'anyarray', 'bigint', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_bddijkstracost', ARRAY['text', 'anyarray', 'anyarray', 'boolean'],
+ 'setof record');
+
+
+
+SELECT style_dijkstra('pgr_bddijkstracost', ', 2, 3, true)');
+SELECT style_dijkstra('pgr_bddijkstracost', ', 2, ARRAY[3], true)');
+SELECT style_dijkstra('pgr_bddijkstracost', ', 2, ARRAY[3], true)');
+SELECT style_dijkstra('pgr_bddijkstracost', ', ARRAY[2], ARRAY[3], true)');
+
+SELECT style_dijkstra('pgr_bddijkstracost', ', 2, 3)');
+SELECT style_dijkstra('pgr_bddijkstracost', ', 2, ARRAY[3])');
+SELECT style_dijkstra('pgr_bddijkstracost', ', 2, ARRAY[3])');
+SELECT style_dijkstra('pgr_bddijkstracost', ', ARRAY[2], ARRAY[3])');
+
+SELECT style_dijkstra('pgr_bddijkstracost', ', 2, 3, false)');
+SELECT style_dijkstra('pgr_bddijkstracost', ', 2, ARRAY[3], false)');
+SELECT style_dijkstra('pgr_bddijkstracost', ', 2, ARRAY[3], false)');
+SELECT style_dijkstra('pgr_bddijkstracost', ', ARRAY[2], ARRAY[3], false)');
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/common/test/pgtap/checkVertTab.test.sql b/pgtap/common/checkVertTab.test.sql
similarity index 100%
rename from src/common/test/pgtap/checkVertTab.test.sql
rename to pgtap/common/checkVertTab.test.sql
diff --git a/src/common/test/pgtap/getColumnName.test.sql b/pgtap/common/getColumnName.test.sql
similarity index 100%
rename from src/common/test/pgtap/getColumnName.test.sql
rename to pgtap/common/getColumnName.test.sql
diff --git a/src/common/test/pgtap/getColumnType.test.sql b/pgtap/common/getColumnType.test.sql
similarity index 100%
rename from src/common/test/pgtap/getColumnType.test.sql
rename to pgtap/common/getColumnType.test.sql
diff --git a/src/common/test/pgtap/getTableName.test.sql b/pgtap/common/getTableName.test.sql
similarity index 100%
rename from src/common/test/pgtap/getTableName.test.sql
rename to pgtap/common/getTableName.test.sql
diff --git a/pgtap/common/has_v3_signatures.sql b/pgtap/common/has_v3_signatures.sql
new file mode 100644
index 0000000..53e273a
--- /dev/null
+++ b/pgtap/common/has_v3_signatures.sql
@@ -0,0 +1,141 @@
+
+\i setup.sql
+
+SELECT plan(90);
+
+SELECT todo_start();
+
+-- testing names only
+SELECT has_function('pgr_pickdeliver');
+SELECT has_function('pgr_distribution');
+SELECT has_function('pgr_euclideantsp');
+SELECT has_function('pgr_withpointsvia');
+
+SELECT todo_end();
+
+-- testing names only
+SELECT has_function('pgr_floydwarshall');
+SELECT has_function('pgr_johnson');
+SELECT has_function('pgr_astar');
+SELECT has_function('pgr_astarcost');
+SELECT has_function('pgr_astarcostmatrix');
+SELECT has_function('pgr_bdastar');
+SELECT has_function('pgr_bddijkstra');
+SELECT has_function('pgr_dijkstra');
+SELECT has_function('pgr_dijkstracost');
+SELECT has_function('pgr_dijkstracostmatrix');
+SELECT has_function('pgr_dijkstravia');
+SELECT has_function('pgr_drivingdistance');
+SELECT has_function('pgr_ksp');
+SELECT has_function('pgr_withpoints');
+SELECT has_function('pgr_withpointscost');
+SELECT has_function('pgr_withpointscostmatrix');
+SELECT has_function('pgr_withpointsksp');
+SELECT has_function('pgr_withpointsdd');
+
+SELECT has_function('pgr_contractgraph');
+SELECT has_function('pgr_maxflow');
+SELECT has_function('pgr_pushrelabel');
+SELECT has_function('pgr_edmondskarp');
+SELECT has_function('pgr_boykovkolmogorov');
+SELECT has_function('pgr_maxcardinalitymatch');
+SELECT has_function('pgr_edgedisjointpaths');
+
+-- testing with parameters
+-- Dijkstra based
+
+-- DIJKSTRA
+SELECT has_function('pgr_dijkstra', ARRAY['text', 'bigint', 'bigint', 'boolean']);
+SELECT has_function('pgr_dijkstra', ARRAY['text', 'anyarray', 'bigint', 'boolean']);
+SELECT has_function('pgr_dijkstra', ARRAY['text', 'bigint', 'anyarray', 'boolean']);
+SELECT has_function('pgr_dijkstra', ARRAY['text', 'anyarray', 'anyarray', 'boolean']);
+
+SELECT has_function('pgr_dijkstracost', ARRAY['text', 'bigint', 'bigint', 'boolean']);
+SELECT has_function('pgr_dijkstracost', ARRAY['text', 'anyarray', 'bigint', 'boolean']);
+SELECT has_function('pgr_dijkstracost', ARRAY['text', 'bigint', 'anyarray', 'boolean']);
+SELECT has_function('pgr_dijkstracost', ARRAY['text', 'anyarray', 'anyarray', 'boolean']);
+
+SELECT has_function('pgr_dijkstracostmatrix', ARRAY['text', 'anyarray', 'boolean']);
+
+SELECT has_function('pgr_dijkstravia', ARRAY['text', 'anyarray', 'boolean', 'boolean', 'boolean']);
+
+SELECT has_function('pgr_drivingdistance', ARRAY['text', 'anyarray', 'double precision', 'boolean', 'boolean']);
+SELECT has_function('pgr_drivingdistance', ARRAY['text', 'bigint', 'double precision', 'boolean']);
+
+SELECT has_function('pgr_ksp', ARRAY['text','bigint','bigint','integer','boolean','boolean']);
+
+-- bd DIJKSTRA
+SELECT has_function('pgr_bddijkstra', ARRAY['text', 'bigint', 'bigint', 'boolean']);
+SELECT has_function('pgr_bddijkstra', ARRAY['text', 'anyarray', 'bigint', 'boolean']);
+SELECT has_function('pgr_bddijkstra', ARRAY['text', 'bigint', 'anyarray', 'boolean']);
+SELECT has_function('pgr_bddijkstra', ARRAY['text', 'anyarray', 'anyarray', 'boolean']);
+
+SELECT has_function('pgr_bddijkstracost', ARRAY['text', 'bigint', 'bigint', 'boolean']);
+SELECT has_function('pgr_bddijkstracost', ARRAY['text', 'anyarray', 'bigint', 'boolean']);
+SELECT has_function('pgr_bddijkstracost', ARRAY['text', 'bigint', 'anyarray', 'boolean']);
+SELECT has_function('pgr_bddijkstracost', ARRAY['text', 'anyarray', 'anyarray', 'boolean']);
+
+SELECT has_function('pgr_bddijkstracostmatrix', ARRAY['text', 'anyarray', 'boolean']);
+
+
+-- Astar based
+
+-- ASTAR
+SELECT has_function('pgr_astar', ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astar', ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astar', ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astar', ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision']);
+
+SELECT has_function('pgr_astarcost', ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astarcost', ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astarcost', ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision']);
+SELECT has_function('pgr_astarcost', ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision']);
+
+SELECT has_function('pgr_astarcostmatrix', ARRAY['text', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision']);
+
+-- bd ASTAR
+SELECT has_function('pgr_bdastar', ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastar', ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastar', ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastar', ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric']);
+
+SELECT has_function('pgr_bdastarcost', ARRAY['text', 'bigint', 'bigint', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastarcost', ARRAY['text', 'anyarray', 'bigint', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastarcost', ARRAY['text', 'bigint', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric']);
+SELECT has_function('pgr_bdastarcost', ARRAY['text', 'anyarray', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric']);
+
+SELECT has_function('pgr_bdastarcostmatrix', ARRAY['text', 'anyarray', 'boolean', 'integer', 'numeric', 'numeric']);
+
+-- max flow
+SELECT has_function('pgr_maxflow', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_maxflow', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_maxflow', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_maxflow', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT has_function('pgr_boykovkolmogorov', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_boykovkolmogorov', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_boykovkolmogorov', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_boykovkolmogorov', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT has_function('pgr_edmondskarp', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_edmondskarp', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_edmondskarp', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_edmondskarp', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT has_function('pgr_pushrelabel', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_pushrelabel', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_pushrelabel', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_pushrelabel', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT has_function('pgr_maxcardinalitymatch', ARRAY['text', 'boolean']);
+
+SELECT has_function('pgr_edgedisjointpaths', ARRAY['text', 'bigint', 'bigint', 'boolean']);
+SELECT has_function('pgr_edgedisjointpaths', ARRAY['text', 'bigint', 'anyarray', 'boolean']);
+SELECT has_function('pgr_edgedisjointpaths', ARRAY['text', 'anyarray', 'bigint', 'boolean']);
+SELECT has_function('pgr_edgedisjointpaths', ARRAY['text', 'anyarray', 'anyarray', 'boolean']);
+
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/common/hasnt_v2_signatures.sql b/pgtap/common/hasnt_v2_signatures.sql
new file mode 100644
index 0000000..5b4042d
--- /dev/null
+++ b/pgtap/common/hasnt_v2_signatures.sql
@@ -0,0 +1,53 @@
+
+\i setup.sql
+
+SELECT plan(30);
+
+SELECT todo_start();
+
+-- auxiliary
+SELECT hasnt_function('pgr_flipedges');
+SELECT hasnt_function('pgr_endpoint');
+SELECT hasnt_function('pgr_startpoint');
+SELECT hasnt_function('pgr_versionless');
+SELECT hasnt_function('pgr_quote_ident');
+SELECT hasnt_function('pgr_iscolumnintable');
+SELECT hasnt_function('pgr_iscolumnindexed');
+SELECT hasnt_function('pgr_gettablename');
+SELECT hasnt_function('pgr_getcolumnname');
+
+-- convenience
+SELECT hasnt_function('pgr_texttopoints');
+SELECT hasnt_function('pgr_pointstodmatrix');
+SELECT hasnt_function('pgr_flipedges');
+SELECT hasnt_function('pgr_pointstovids');
+SELECT hasnt_function('pgr_pointtoedgenode');
+
+-- deprecated signatures
+SELECT hasnt_function('pgr_dijkstra',ARRAY['text', 'integer', 'integer', 'boolean', 'boolean']);
+SELECT hasnt_function('pgr_astar',ARRAY['text', 'integer', 'integer', 'boolean', 'boolean']);
+SELECT hasnt_function('pgr_ksp',ARRAY['text', 'integer', 'integer', 'integer', 'boolean']);
+SELECT hasnt_function('pgr_drivingdistance',ARRAY['text', 'integer', 'double precision', 'boolean', 'boolean']);
+SELECT hasnt_function('pgr_bdastar',ARRAY['text', 'integer', 'integer', 'boolean', 'boolean']);
+SELECT hasnt_function('pgr_bddijkstra',ARRAY['text', 'integer', 'integer', 'boolean', 'boolean']);
+SELECT hasnt_function('pgr_tsp',ARRAY['(double precision[]', 'integer', 'integer']);
+
+-- deprecated functions
+SELECT hasnt_function('pgr_kdijkstracost');
+SELECT hasnt_function('pgr_kdijkstrapath');
+SELECT hasnt_function('pgr_gsoc_vrppdtw');
+SELECT hasnt_function('pgr_apspjohnson');
+SELECT hasnt_function('pgr_apspwarshall');
+
+-- deprecated functions max-flow
+SELECT hasnt_function('pgr_maxflowboykovkolmogorov');
+SELECT hasnt_function('pgr_maxflowpushrelable');
+SELECT hasnt_function('pgr_maxflowedmondskarp');
+SELECT hasnt_function('pgr_maximumcardinalitymatching');
+
+SELECT todo_end();
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/common/test/pgtap/isColumnInTable.test.sql b/pgtap/common/isColumnInTable.test.sql
similarity index 100%
rename from src/common/test/pgtap/isColumnInTable.test.sql
rename to pgtap/common/isColumnInTable.test.sql
diff --git a/src/common/test/pgtap/isColumnIndexed.test.sql b/pgtap/common/isColumnIndexed.test.sql
similarity index 100%
rename from src/common/test/pgtap/isColumnIndexed.test.sql
rename to pgtap/common/isColumnIndexed.test.sql
diff --git a/src/contraction/test/pgtap/contraction-types-check.sql b/pgtap/contraction/contraction-types-check.sql
similarity index 100%
rename from src/contraction/test/pgtap/contraction-types-check.sql
rename to pgtap/contraction/contraction-types-check.sql
diff --git a/src/contraction/test/pgtap/contraction_cycle_directed.sql b/pgtap/contraction/contraction_cycle_directed.sql
similarity index 100%
rename from src/contraction/test/pgtap/contraction_cycle_directed.sql
rename to pgtap/contraction/contraction_cycle_directed.sql
diff --git a/src/contraction/test/pgtap/contraction_cycle_undirected.sql b/pgtap/contraction/contraction_cycle_undirected.sql
similarity index 100%
rename from src/contraction/test/pgtap/contraction_cycle_undirected.sql
rename to pgtap/contraction/contraction_cycle_undirected.sql
diff --git a/src/contraction/test/pgtap/directed_dead_end.sql b/pgtap/contraction/directed_dead_end.sql
similarity index 100%
rename from src/contraction/test/pgtap/directed_dead_end.sql
rename to pgtap/contraction/directed_dead_end.sql
diff --git a/src/contraction/test/pgtap/directed_linear.sql b/pgtap/contraction/directed_linear.sql
similarity index 100%
rename from src/contraction/test/pgtap/directed_linear.sql
rename to pgtap/contraction/directed_linear.sql
diff --git a/src/contraction/test/pgtap/undirected_dead_end.sql b/pgtap/contraction/undirected_dead_end.sql
similarity index 100%
rename from src/contraction/test/pgtap/undirected_dead_end.sql
rename to pgtap/contraction/undirected_dead_end.sql
diff --git a/src/contraction/test/pgtap/undirected_linear.sql b/pgtap/contraction/undirected_linear.sql
similarity index 100%
rename from src/contraction/test/pgtap/undirected_linear.sql
rename to pgtap/contraction/undirected_linear.sql
diff --git a/pgtap/costMatrix/aStarCostMatrix-innerQuery.sql b/pgtap/costMatrix/aStarCostMatrix-innerQuery.sql
new file mode 100644
index 0000000..803a32b
--- /dev/null
+++ b/pgtap/costMatrix/aStarCostMatrix-innerQuery.sql
@@ -0,0 +1,19 @@
+\i setup.sql
+
+SELECT plan(87);
+
+
+SELECT has_function('pgr_astarcostmatrix',
+ ARRAY['text', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision']);
+
+SELECT function_returns('pgr_astarcostmatrix',
+ ARRAY['text', 'anyarray', 'boolean', 'integer', 'double precision', 'double precision'],
+ 'setof record');
+
+
+SELECT style_astar('pgr_astarcostmatrix', ',ARRAY[2, 3], true)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/costMatrix/dijkstraCostMatrix-innerQuery.sql b/pgtap/costMatrix/dijkstraCostMatrix-innerQuery.sql
new file mode 100644
index 0000000..39eb8c8
--- /dev/null
+++ b/pgtap/costMatrix/dijkstraCostMatrix-innerQuery.sql
@@ -0,0 +1,18 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_dijkstracostmatrix',
+ ARRAY['text', 'anyarray', 'boolean']);
+
+SELECT function_returns('pgr_dijkstracostmatrix',
+ ARRAY['text', 'anyarray', 'boolean'],
+ 'setof record');
+
+
+SELECT style_dijkstra('pgr_dijkstracostmatrix', ',ARRAY[2, 3], true)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/costMatrix/withPointsCostMatrix-innerQuery.sql b/pgtap/costMatrix/withPointsCostMatrix-innerQuery.sql
new file mode 100644
index 0000000..3a720e8
--- /dev/null
+++ b/pgtap/costMatrix/withPointsCostMatrix-innerQuery.sql
@@ -0,0 +1,19 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_withpointscostmatrix',
+ ARRAY['text', 'text', 'anyarray', 'boolean', 'character']);
+
+SELECT function_returns('pgr_withpointscostmatrix',
+ ARRAY['text', 'text', 'anyarray', 'boolean', 'character'],
+ 'setof record');
+
+
+SELECT style_withpoints('pgr_withpointscostmatrix', ', ARRAY[2, 3], true)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/apsp_johnson/test/pgtap/apsp_johnson-any-00.test.sql b/pgtap/deprecated/apspJohnson-any-00.test.sql
similarity index 100%
rename from src/apsp_johnson/test/pgtap/apsp_johnson-any-00.test.sql
rename to pgtap/deprecated/apspJohnson-any-00.test.sql
diff --git a/pgtap/deprecated/apspJohnson-innerQuery.sql b/pgtap/deprecated/apspJohnson-innerQuery.sql
new file mode 100644
index 0000000..4f991c2
--- /dev/null
+++ b/pgtap/deprecated/apspJohnson-innerQuery.sql
@@ -0,0 +1,21 @@
+\i setup.sql
+
+SELECT plan(17);
+
+
+SELECT has_function('pgr_apspjohnson',
+ ARRAY['text']);
+
+SELECT function_returns('pgr_apspjohnson',
+ ARRAY['text'],
+ 'setof pgr_costresult');
+
+
+-- only works with source, target, cost
+-- no reverse_cost and no id
+-- when reverse_cost or id are added they are ignored???
+
+SELECT style_old_dijkstra_no_id_no_reverse('pgr_apspjohnson', ')');
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/apsp_johnson/test/pgtap/types-check.sql b/pgtap/deprecated/apspJohnson-types-check.sql
similarity index 100%
rename from src/apsp_johnson/test/pgtap/types-check.sql
rename to pgtap/deprecated/apspJohnson-types-check.sql
diff --git a/src/apsp_johnson/test/pgtap/v2-v3-equivalence.test.sql b/pgtap/deprecated/apspJohnson-v2-v3-equivalence.test.sql
similarity index 100%
rename from src/apsp_johnson/test/pgtap/v2-v3-equivalence.test.sql
rename to pgtap/deprecated/apspJohnson-v2-v3-equivalence.test.sql
diff --git a/src/apsp_warshall/test/pgtap/apsp_warshall-any-00.test.sql b/pgtap/deprecated/apspWarshall-any-00.test.sql
similarity index 100%
rename from src/apsp_warshall/test/pgtap/apsp_warshall-any-00.test.sql
rename to pgtap/deprecated/apspWarshall-any-00.test.sql
diff --git a/pgtap/deprecated/apspWarshall-innerQuery.sql b/pgtap/deprecated/apspWarshall-innerQuery.sql
new file mode 100644
index 0000000..2da2e46
--- /dev/null
+++ b/pgtap/deprecated/apspWarshall-innerQuery.sql
@@ -0,0 +1,18 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_apspwarshall',
+ ARRAY['text', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_apspwarshall',
+ ARRAY['text', 'boolean', 'boolean'],
+ 'setof pgr_costresult');
+
+SELECT style_old_dijkstra_with('pgr_apspwarshall', ', true, true)');
+SELECT style_old_dijkstra_no_rev('pgr_apspwarshall', ', true, false)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/apsp_warshall/test/pgtap/types-check.sql b/pgtap/deprecated/apspWarshall-types-check.sql
similarity index 100%
rename from src/apsp_warshall/test/pgtap/types-check.sql
rename to pgtap/deprecated/apspWarshall-types-check.sql
diff --git a/src/apsp_warshall/test/pgtap/v2-v3-equivalence-directed.test.sql b/pgtap/deprecated/apspWarshall-v2-v3-equivalence-directed.test.sql
similarity index 100%
rename from src/apsp_warshall/test/pgtap/v2-v3-equivalence-directed.test.sql
rename to pgtap/deprecated/apspWarshall-v2-v3-equivalence-directed.test.sql
diff --git a/src/apsp_warshall/test/pgtap/v2-v3-equivalence-undirected.test.sql b/pgtap/deprecated/apspWarshall-v2-v3-equivalence-undirected.test.sql
similarity index 100%
rename from src/apsp_warshall/test/pgtap/v2-v3-equivalence-undirected.test.sql
rename to pgtap/deprecated/apspWarshall-v2-v3-equivalence-undirected.test.sql
diff --git a/src/astar/test/pgtap/astarV2.0-compare-dijkstra.test.sql b/pgtap/deprecated/astarV2.0-compare-dijkstra.test.sql
similarity index 100%
rename from src/astar/test/pgtap/astarV2.0-compare-dijkstra.test.sql
rename to pgtap/deprecated/astarV2.0-compare-dijkstra.test.sql
diff --git a/pgtap/deprecated/astarV2.0-innerQuery.sql b/pgtap/deprecated/astarV2.0-innerQuery.sql
new file mode 100644
index 0000000..6a631d0
--- /dev/null
+++ b/pgtap/deprecated/astarV2.0-innerQuery.sql
@@ -0,0 +1,22 @@
+\i setup.sql
+
+SELECT plan(87);
+
+
+SELECT has_function('pgr_astar',
+ ARRAY['text', 'integer', 'integer', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_astar',
+ ARRAY['text', 'integer', 'integer', 'boolean', 'boolean'],
+ 'setof pgr_costresult');
+
+
+
+-- ONE TO ONE
+--with reverse cost
+SELECT style_old_astar_with('pgr_astar', ',2,3, true, true)');
+SELECT style_old_astar_no_rev('pgr_astar', ',2,3, true, false)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/astar/test/pgtap/astarV2.0-types-check.sql b/pgtap/deprecated/astarV2.0-types-check.sql
similarity index 100%
rename from src/astar/test/pgtap/astarV2.0-types-check.sql
rename to pgtap/deprecated/astarV2.0-types-check.sql
diff --git a/src/astar/test/pgtap/astarV2.0-types-check2.sql b/pgtap/deprecated/astarV2.0-types-check2.sql
similarity index 100%
rename from src/astar/test/pgtap/astarV2.0-types-check2.sql
rename to pgtap/deprecated/astarV2.0-types-check2.sql
diff --git a/pgtap/deprecated/bd_astar-innerQuery.sql b/pgtap/deprecated/bd_astar-innerQuery.sql
new file mode 100644
index 0000000..754acf0
--- /dev/null
+++ b/pgtap/deprecated/bd_astar-innerQuery.sql
@@ -0,0 +1,17 @@
+\i setup.sql
+
+SELECT plan(87);
+
+SELECT has_function('pgr_bdastar',
+ ARRAY['text', 'integer', 'integer', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_bdastar',
+ ARRAY['text', 'integer', 'integer', 'boolean', 'boolean'],
+ 'setof pgr_costresult');
+
+SELECT style_old_astar_with('pgr_bdastar', ', 2, 3, true, true)');
+SELECT style_old_astar_no_rev('pgr_bdastar', ', 2, 3, true, false)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/bd_astar-types-check.sql b/pgtap/deprecated/bd_astar-types-check.sql
new file mode 100644
index 0000000..35023a9
--- /dev/null
+++ b/pgtap/deprecated/bd_astar-types-check.sql
@@ -0,0 +1,162 @@
+
+\i setup.sql
+-- TESTING DOCUMNETATIONS INFORMATION
+
+SELECT plan(33);
+
+-- RECEIVES 5 PARAMETERS
+
+SELECT has_function('pgr_bdastar',ARRAY['text', 'integer', 'integer', 'boolean', 'boolean']);
+SELECT function_returns('pgr_bdastar', ARRAY['text', 'integer', 'integer', 'boolean', 'boolean'], 'setof pgr_costresult','Returns set of costResult[]');
+
+
+-- CHECKING THE INNER QUERY
+
+
+
+PREPARE q1 AS
+SELECT * FROM pgr_bdastar(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table',
+ 2, 3, true, true);
+SELECT lives_ok('q1', 'edges query accepts INTEGER & FLOAT');
+
+
+
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::BIGINT, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::SMALLINT, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::BIGINT, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::SMALLINT, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::BIGINT, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::SMALLINT, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::BIGINT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::INTEGER, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::SMALLINT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::REAL, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::BIGINT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::INTEGER, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::SMALLINT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::REAL, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+
+-- x1
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::BIGINT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::INTEGER, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::SMALLINT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::REAL, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+
+-- x2
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x2::BIGINT, y1::FLOAT, x1::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x2::INTEGER, y1::FLOAT, x1::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x2::SMALLINT, y1::FLOAT, x1::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x2::REAL, y1::FLOAT, x1::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+
+
+-- y1
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y1::BIGINT, x1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y1::INTEGER, x1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y1::SMALLINT, x1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y1::REAL, x1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+
+-- y2
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y2::BIGINT, y1::FLOAT, x1::FLOAT, x2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y2::INTEGER, y1::FLOAT, x1::FLOAT, x2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y2::SMALLINT, y1::FLOAT, x1::FLOAT, x2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+SELECT throws_ok(
+ 'SELECT * FROM pgr_bdastar(
+ ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y2::REAL, y1::FLOAT, x1::FLOAT, x2::FLOAT FROM edge_table'',
+ 2, 3, true, true)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/bd_dijkstra-innerQuery.sql b/pgtap/deprecated/bd_dijkstra-innerQuery.sql
new file mode 100644
index 0000000..b3d30fa
--- /dev/null
+++ b/pgtap/deprecated/bd_dijkstra-innerQuery.sql
@@ -0,0 +1,22 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_bddijkstra',
+ ARRAY['text', 'integer', 'integer', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_bddijkstra',
+ ARRAY['text', 'integer', 'integer', 'boolean', 'boolean'],
+ 'setof pgr_costresult');
+
+
+
+--with reverse cost
+SELECT style_old_dijkstra_with('pgr_bddijkstra', ',2,3, true, true)');
+SELECT style_old_dijkstra_no_rev('pgr_bddijkstra', ',2,3, true, false)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/bd_dijkstra/test/pgtap/bdDijkstra-types-check.sql b/pgtap/deprecated/bd_dijkstra-types-check.sql
similarity index 100%
rename from src/bd_dijkstra/test/pgtap/bdDijkstra-types-check.sql
rename to pgtap/deprecated/bd_dijkstra-types-check.sql
diff --git a/src/bd_dijkstra/test/pgtap/v2-bdDijkstra-compare-dijkstra.sql b/pgtap/deprecated/bd_dijkstra-v2-compare-dijkstra.sql
similarity index 100%
rename from src/bd_dijkstra/test/pgtap/v2-bdDijkstra-compare-dijkstra.sql
rename to pgtap/deprecated/bd_dijkstra-v2-compare-dijkstra.sql
diff --git a/src/convenience/test/pgtap/flipEdges-types-check.sql b/pgtap/deprecated/convenience-flipEdges-types-check.sql
similarity index 100%
rename from src/convenience/test/pgtap/flipEdges-types-check.sql
rename to pgtap/deprecated/convenience-flipEdges-types-check.sql
diff --git a/src/convenience/test/pgtap/pointToEdgeNode-types-check.sql b/pgtap/deprecated/convenience-pointToEdgeNode-types-check.sql
similarity index 100%
rename from src/convenience/test/pgtap/pointToEdgeNode-types-check.sql
rename to pgtap/deprecated/convenience-pointToEdgeNode-types-check.sql
diff --git a/src/convenience/test/pgtap/pointsToDMatrix-types-check.sql b/pgtap/deprecated/convenience-pointsToDMatrix-types-check.sql
similarity index 100%
rename from src/convenience/test/pgtap/pointsToDMatrix-types-check.sql
rename to pgtap/deprecated/convenience-pointsToDMatrix-types-check.sql
diff --git a/src/convenience/test/pgtap/pointsToVids-types-check.sql b/pgtap/deprecated/convenience-pointsToVids-types-check.sql
similarity index 100%
rename from src/convenience/test/pgtap/pointsToVids-types-check.sql
rename to pgtap/deprecated/convenience-pointsToVids-types-check.sql
diff --git a/src/convenience/test/pgtap/textToPoints-types-check.sql b/pgtap/deprecated/convenience-textToPoints-types-check.sql
similarity index 100%
rename from src/convenience/test/pgtap/textToPoints-types-check.sql
rename to pgtap/deprecated/convenience-textToPoints-types-check.sql
diff --git a/src/convenience/test/pgtap/vidsToDMatrix-types-check.sql b/pgtap/deprecated/convenience-vidsToDMatrix-types-check.sql
similarity index 100%
rename from src/convenience/test/pgtap/vidsToDMatrix-types-check.sql
rename to pgtap/deprecated/convenience-vidsToDMatrix-types-check.sql
diff --git a/src/dijkstra/test/pgtap/v2-equi-v3-directed-N-reverse.test.sql b/pgtap/deprecated/dijkstra-v2-equi-v3-directed-N-reverse.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/v2-equi-v3-directed-N-reverse.test.sql
rename to pgtap/deprecated/dijkstra-v2-equi-v3-directed-N-reverse.test.sql
diff --git a/src/dijkstra/test/pgtap/v2-equi-v3-directed-W-reverse.test.sql b/pgtap/deprecated/dijkstra-v2-equi-v3-directed-W-reverse.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/v2-equi-v3-directed-W-reverse.test.sql
rename to pgtap/deprecated/dijkstra-v2-equi-v3-directed-W-reverse.test.sql
diff --git a/src/dijkstra/test/pgtap/v2-equi-v3-undirected-N-reverse.test.sql b/pgtap/deprecated/dijkstra-v2-equi-v3-undirected-N-reverse.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/v2-equi-v3-undirected-N-reverse.test.sql
rename to pgtap/deprecated/dijkstra-v2-equi-v3-undirected-N-reverse.test.sql
diff --git a/src/dijkstra/test/pgtap/v2-equi-v3-undirected-W-reverse.test.sql b/pgtap/deprecated/dijkstra-v2-equi-v3-undirected-W-reverse.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/v2-equi-v3-undirected-W-reverse.test.sql
rename to pgtap/deprecated/dijkstra-v2-equi-v3-undirected-W-reverse.test.sql
diff --git a/pgtap/deprecated/dijkstra-v2-innerQuery.sql b/pgtap/deprecated/dijkstra-v2-innerQuery.sql
new file mode 100644
index 0000000..13909ba
--- /dev/null
+++ b/pgtap/deprecated/dijkstra-v2-innerQuery.sql
@@ -0,0 +1,21 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_dijkstra',
+ ARRAY['text', 'integer', 'integer', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_dijkstra',
+ ARRAY['text', 'integer', 'integer', 'boolean', 'boolean'],
+ 'setof pgr_costresult');
+
+
+
+SELECT style_old_dijkstra_with('pgr_dijkstra', ',2,3, true, true)');
+SELECT style_old_dijkstra_no_rev('pgr_dijkstra', ',2,3, true, false)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/dijkstra/test/pgtap/dijkstraV2-types-check.sql b/pgtap/deprecated/dijkstraV2-types-check.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/dijkstraV2-types-check.sql
rename to pgtap/deprecated/dijkstraV2-types-check.sql
diff --git a/pgtap/deprecated/drivingDistance-v2-innerQuery.sql b/pgtap/deprecated/drivingDistance-v2-innerQuery.sql
new file mode 100644
index 0000000..47fa9e5
--- /dev/null
+++ b/pgtap/deprecated/drivingDistance-v2-innerQuery.sql
@@ -0,0 +1,21 @@
+\i setup.sql
+
+SELECT plan(52);
+
+
+SELECT has_function('pgr_drivingdistance',
+ ARRAY['text', 'bigint', 'double precision', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_drivingdistance',
+ ARRAY['text', 'bigint', 'double precision', 'boolean', 'boolean'],
+ 'setof pgr_costresult');
+
+
+-- ONE SOURCE
+SELECT style_old_dijkstra_with('pgr_drivingdistance', ',2,3, true, true)');
+SELECT style_old_dijkstra_with('pgr_drivingdistance', ',2,3, true, false)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/kdijkstra/test/pgtap/kdijkstra-any-01.test.sql b/pgtap/deprecated/kdijkstra-any-01.test.sql
similarity index 100%
rename from src/kdijkstra/test/pgtap/kdijkstra-any-01.test.sql
rename to pgtap/deprecated/kdijkstra-any-01.test.sql
diff --git a/src/kdijkstra/test/pgtap/issue229.test.sql b/pgtap/deprecated/kdijkstra-issue229.test.sql
similarity index 100%
rename from src/kdijkstra/test/pgtap/issue229.test.sql
rename to pgtap/deprecated/kdijkstra-issue229.test.sql
diff --git a/src/kdijkstra/test/pgtap/issue333.test.sql b/pgtap/deprecated/kdijkstra-issue333.test.sql
similarity index 100%
rename from src/kdijkstra/test/pgtap/issue333.test.sql
rename to pgtap/deprecated/kdijkstra-issue333.test.sql
diff --git a/src/kdijkstra/test/pgtap/compare-kdijstraCost-dijkstraCost.test.sql b/pgtap/deprecated/kdijkstraCost-dijkstraCost-compare.test.sql
similarity index 100%
rename from src/kdijkstra/test/pgtap/compare-kdijstraCost-dijkstraCost.test.sql
rename to pgtap/deprecated/kdijkstraCost-dijkstraCost-compare.test.sql
diff --git a/src/kdijkstra/test/pgtap/errors-exceptions-cost.test.sql b/pgtap/deprecated/kdijkstraCost-errors-exceptions-cost.test.sql
similarity index 100%
rename from src/kdijkstra/test/pgtap/errors-exceptions-cost.test.sql
rename to pgtap/deprecated/kdijkstraCost-errors-exceptions-cost.test.sql
diff --git a/pgtap/deprecated/kdijkstraCost-innerquery.sql b/pgtap/deprecated/kdijkstraCost-innerquery.sql
new file mode 100644
index 0000000..fd29edd
--- /dev/null
+++ b/pgtap/deprecated/kdijkstraCost-innerquery.sql
@@ -0,0 +1,21 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_kdijkstracost',
+ ARRAY['text', 'integer', 'integer[]', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_kdijkstracost',
+ ARRAY['text', 'integer', 'integer[]', 'boolean', 'boolean'],
+ 'setof pgr_costresult');
+
+
+
+-- ONE TO MANY
+SELECT style_old_dijkstra_with('pgr_kdijkstracost', ',2,ARRAY[3], true, true)');
+SELECT style_old_dijkstra_no_rev('pgr_kdijkstracost', ',2,ARRAY[3], true, false)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/kdijkstra/test/pgtap/compare-kdijstraPath-dijkstra.test.sql b/pgtap/deprecated/kdijkstraPath-dijkstra-compare.test.sql
similarity index 100%
rename from src/kdijkstra/test/pgtap/compare-kdijstraPath-dijkstra.test.sql
rename to pgtap/deprecated/kdijkstraPath-dijkstra-compare.test.sql
diff --git a/src/kdijkstra/test/pgtap/errors-exceptions-path.test.sql b/pgtap/deprecated/kdijkstraPath-errors-exceptions-path.test.sql
similarity index 100%
rename from src/kdijkstra/test/pgtap/errors-exceptions-path.test.sql
rename to pgtap/deprecated/kdijkstraPath-errors-exceptions-path.test.sql
diff --git a/pgtap/deprecated/kdijkstraPath-innerquery.sql b/pgtap/deprecated/kdijkstraPath-innerquery.sql
new file mode 100644
index 0000000..2dc9808
--- /dev/null
+++ b/pgtap/deprecated/kdijkstraPath-innerquery.sql
@@ -0,0 +1,21 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_kdijkstrapath',
+ ARRAY['text', 'integer', 'integer[]', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_kdijkstrapath',
+ ARRAY['text', 'integer', 'integer[]', 'boolean', 'boolean'],
+ 'setof pgr_costresult3');
+
+
+-- ONE TO MANY
+SELECT style_old_dijkstra_with('pgr_kdijkstrapath', ',2,ARRAY[3], true, true)');
+SELECT style_old_dijkstra_no_rev('pgr_kdijkstrapath', ',2,ARRAY[3], true, false)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/maxflowboykovkolmogorov-group-innerQuery.sql b/pgtap/deprecated/maxflowboykovkolmogorov-group-innerQuery.sql
new file mode 100644
index 0000000..67c1682
--- /dev/null
+++ b/pgtap/deprecated/maxflowboykovkolmogorov-group-innerQuery.sql
@@ -0,0 +1,36 @@
+\i setup.sql
+
+SELECT plan(188);
+
+
+SELECT has_function('pgr_maxflowboykovkolmogorov',
+ ARRAY['text', 'bigint', 'bigint']);
+SELECT has_function('pgr_maxflowboykovkolmogorov',
+ ARRAY['text', 'bigint', 'anyarray']);
+SELECT has_function('pgr_maxflowboykovkolmogorov',
+ ARRAY['text', 'anyarray', 'bigint']);
+SELECT has_function('pgr_maxflowboykovkolmogorov',
+ ARRAY['text', 'anyarray', 'anyarray']);
+
+SELECT function_returns('pgr_maxflowboykovkolmogorov',
+ ARRAY['text', 'bigint', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_maxflowboykovkolmogorov',
+ ARRAY['text', 'bigint', 'anyarray'],
+ 'setof record');
+SELECT function_returns('pgr_maxflowboykovkolmogorov',
+ ARRAY['text', 'anyarray', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_maxflowboykovkolmogorov',
+ ARRAY['text', 'anyarray', 'anyarray'],
+ 'setof record');
+
+
+-- ONLY WORKS ON DIRECTED GRAPH
+SELECT style_max_flow('pgr_maxflowboykovkolmogorov', ', 2, 3)');
+SELECT style_max_flow('pgr_maxflowboykovkolmogorov', ', 2, ARRAY[3])');
+SELECT style_max_flow('pgr_maxflowboykovkolmogorov', ', ARRAY[2], 3)');
+SELECT style_max_flow('pgr_maxflowboykovkolmogorov', ', ARRAY[2], ARRAY[3])');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/maxflowboykovkolmogorov-types-check.sql b/pgtap/deprecated/maxflowboykovkolmogorov-types-check.sql
new file mode 100644
index 0000000..045cbdc
--- /dev/null
+++ b/pgtap/deprecated/maxflowboykovkolmogorov-types-check.sql
@@ -0,0 +1,139 @@
+\i setup.sql
+
+SELECT plan(21);
+
+SELECT has_function('pgr_maxflowboykovkolmogorov');
+
+SELECT has_function('pgr_maxflowboykovkolmogorov', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_maxflowboykovkolmogorov', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_maxflowboykovkolmogorov', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_maxflowboykovkolmogorov', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT function_returns('pgr_maxflowboykovkolmogorov', ARRAY[ 'text', 'bigint', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_maxflowboykovkolmogorov', ARRAY[ 'text', 'bigint', 'anyarray' ], 'setof record');
+SELECT function_returns('pgr_maxflowboykovkolmogorov', ARRAY[ 'text', 'anyarray', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_maxflowboykovkolmogorov', ARRAY[ 'text', 'anyarray', 'anyarray' ], 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowboykovkolmogorov'$$,
+ $$SELECT '{"edges_sql","source_vertex","sink_vertex","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowboykovkolmogorov'$$,
+ $$SELECT '{"edges_sql","source_vertex","sink_vertices","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowboykovkolmogorov'$$,
+ $$SELECT '{"edges_sql","source_vertices","sink_vertex","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowboykovkolmogorov'$$,
+ $$SELECT '{"edges_sql","source_vertices","sink_vertices","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+
+
+-- pgr_maxFlowBoykovKolmogorov works
+PREPARE t1 AS
+SELECT * FROM pgr_maxFlowBoykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5);
+PREPARE t2 AS
+SELECT * FROM pgr_maxFlowBoykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]);
+PREPARE t3 AS
+SELECT * FROM pgr_maxFlowBoykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5);
+PREPARE t4 AS
+SELECT * FROM pgr_maxFlowBoykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]);
+
+SELECT lives_ok('t1','pgr_maxFlowBoykovKolmogorov(one to One)');
+SELECT lives_ok('t2','pgr_maxFlowBoykovKolmogorov(one to Many)');
+SELECT lives_ok('t3','pgr_maxFlowBoykovKolmogorov(Many to One)');
+SELECT lives_ok('t4','pgr_maxFlowBoykovKolmogorov(Many to Many)');
+
+
+-- preparing for testing return types
+PREPARE all_return AS
+SELECT
+ 'integer'::text AS t1,
+ 'bigint'::text AS t2,
+ 'bigint'::text AS t3,
+ 'bigint'::text AS t4,
+ 'bigint'::text AS t5,
+ 'bigint'::text AS t6;
+
+
+PREPARE q1 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxFlowBoykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q2 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxFlowBoykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+PREPARE q3 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxFlowBoykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q4 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxFlowBoykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+-- testing return types
+SELECT set_eq('q1', 'all_return','1 to 1: Expected returning, columns names & types');
+SELECT set_eq('q2', 'all_return','1 to many: Expected returning, columns names & types');
+SELECT set_eq('q3', 'all_return','many to 1: Expected returning, columns names & types');
+SELECT set_eq('q4', 'all_return','many to many: Expected returning, columns names & types');
+
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/maxflowedmondskarp-group-innerQuery.sql b/pgtap/deprecated/maxflowedmondskarp-group-innerQuery.sql
new file mode 100644
index 0000000..fa4fff0
--- /dev/null
+++ b/pgtap/deprecated/maxflowedmondskarp-group-innerQuery.sql
@@ -0,0 +1,36 @@
+\i setup.sql
+
+SELECT plan(188);
+
+
+SELECT has_function('pgr_maxflowedmondskarp',
+ ARRAY['text', 'bigint', 'bigint']);
+SELECT has_function('pgr_maxflowedmondskarp',
+ ARRAY['text', 'bigint', 'anyarray']);
+SELECT has_function('pgr_maxflowedmondskarp',
+ ARRAY['text', 'anyarray', 'bigint']);
+SELECT has_function('pgr_maxflowedmondskarp',
+ ARRAY['text', 'anyarray', 'anyarray']);
+
+SELECT function_returns('pgr_maxflowedmondskarp',
+ ARRAY['text', 'bigint', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_maxflowedmondskarp',
+ ARRAY['text', 'bigint', 'anyarray'],
+ 'setof record');
+SELECT function_returns('pgr_maxflowedmondskarp',
+ ARRAY['text', 'anyarray', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_maxflowedmondskarp',
+ ARRAY['text', 'anyarray', 'anyarray'],
+ 'setof record');
+
+
+-- ONLY WORKS ON DIRECTED GRAPH
+SELECT style_max_flow('pgr_maxflowedmondskarp', ', 2, 3)');
+SELECT style_max_flow('pgr_maxflowedmondskarp', ', 2, ARRAY[3])');
+SELECT style_max_flow('pgr_maxflowedmondskarp', ', ARRAY[2], 3)');
+SELECT style_max_flow('pgr_maxflowedmondskarp', ', ARRAY[2], ARRAY[3])');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/maxflowedmondskarp-types-check.sql b/pgtap/deprecated/maxflowedmondskarp-types-check.sql
new file mode 100644
index 0000000..48b98c8
--- /dev/null
+++ b/pgtap/deprecated/maxflowedmondskarp-types-check.sql
@@ -0,0 +1,143 @@
+\i setup.sql
+
+SELECT plan(21);
+
+SELECT has_function('pgr_maxflowedmondskarp');
+
+SELECT has_function('pgr_maxflowedmondskarp', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_maxflowedmondskarp', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_maxflowedmondskarp', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_maxflowedmondskarp', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT function_returns('pgr_maxflowedmondskarp', ARRAY[ 'text', 'bigint', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_maxflowedmondskarp', ARRAY[ 'text', 'bigint', 'anyarray' ], 'setof record');
+SELECT function_returns('pgr_maxflowedmondskarp', ARRAY[ 'text', 'anyarray', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_maxflowedmondskarp', ARRAY[ 'text', 'anyarray', 'anyarray' ], 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowedmondskarp'$$,
+ $$SELECT '{"edges_sql","source_vertex","sink_vertex","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowedmondskarp'$$,
+ $$SELECT '{"edges_sql","source_vertex","sink_vertices","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowedmondskarp'$$,
+ $$SELECT '{"edges_sql","source_vertices","sink_vertex","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowedmondskarp'$$,
+ $$SELECT '{"edges_sql","source_vertices","sink_vertices","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+
+
+-- pgr_maxflowedmondskarp works
+PREPARE t1 AS
+SELECT * FROM pgr_maxflowedmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+);
+PREPARE t2 AS
+SELECT * FROM pgr_maxflowedmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+);
+PREPARE t3 AS
+SELECT * FROM pgr_maxflowedmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+);
+PREPARE t4 AS
+SELECT * FROM pgr_maxflowedmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+);
+
+SELECT lives_ok('t1','pgr_pgr_maxflowedmondskarp(one to one)');
+SELECT lives_ok('t2','pgr_pgr_maxflowedmondskarp(one to many)');
+SELECT lives_ok('t3','pgr_pgr_maxflowedmondskarp(many to one)');
+SELECT lives_ok('t4','pgr_pgr_maxflowedmondskarp(many to many)');
+
+
+-- preparing for testing return types
+PREPARE all_return AS
+SELECT
+ 'integer'::text AS t1,
+ 'bigint'::text AS t2,
+ 'bigint'::text AS t3,
+ 'bigint'::text AS t4,
+ 'bigint'::text AS t5,
+ 'bigint'::text AS t6;
+
+
+PREPARE q1 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxflowedmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q2 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxflowedmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+PREPARE q3 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxflowedmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q4 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxflowedmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+-- testing return types
+SELECT set_eq('q1', 'all_return','1 to 1: Expected returning, columns names & types');
+SELECT set_eq('q2', 'all_return','1 to many: Expected returning, columns names & types');
+SELECT set_eq('q3', 'all_return','many to 1: Expected returning, columns names & types');
+SELECT set_eq('q4', 'all_return','many to many: Expected returning, columns names & types');
+
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/maxflowpushrelabel-group-innerQuery.sql b/pgtap/deprecated/maxflowpushrelabel-group-innerQuery.sql
new file mode 100644
index 0000000..a42acb5
--- /dev/null
+++ b/pgtap/deprecated/maxflowpushrelabel-group-innerQuery.sql
@@ -0,0 +1,36 @@
+\i setup.sql
+
+SELECT plan(188);
+
+
+SELECT has_function('pgr_maxflowpushrelabel',
+ ARRAY['text', 'bigint', 'bigint']);
+SELECT has_function('pgr_maxflowpushrelabel',
+ ARRAY['text', 'bigint', 'anyarray']);
+SELECT has_function('pgr_maxflowpushrelabel',
+ ARRAY['text', 'anyarray', 'bigint']);
+SELECT has_function('pgr_maxflowpushrelabel',
+ ARRAY['text', 'anyarray', 'anyarray']);
+
+SELECT function_returns('pgr_maxflowpushrelabel',
+ ARRAY['text', 'bigint', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_maxflowpushrelabel',
+ ARRAY['text', 'bigint', 'anyarray'],
+ 'setof record');
+SELECT function_returns('pgr_maxflowpushrelabel',
+ ARRAY['text', 'anyarray', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_maxflowpushrelabel',
+ ARRAY['text', 'anyarray', 'anyarray'],
+ 'setof record');
+
+
+-- ONLY WORKS ON DIRECTED GRAPH
+SELECT style_max_flow('pgr_maxflowpushrelabel', ', 2, 3)');
+SELECT style_max_flow('pgr_maxflowpushrelabel', ', 2, ARRAY[3])');
+SELECT style_max_flow('pgr_maxflowpushrelabel', ', ARRAY[2], 3)');
+SELECT style_max_flow('pgr_maxflowpushrelabel', ', ARRAY[2], ARRAY[3])');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/maxflowpushrelabel-types-check.sql b/pgtap/deprecated/maxflowpushrelabel-types-check.sql
new file mode 100644
index 0000000..07f3d79
--- /dev/null
+++ b/pgtap/deprecated/maxflowpushrelabel-types-check.sql
@@ -0,0 +1,143 @@
+\i setup.sql
+
+SELECT plan(21);
+
+SELECT has_function('pgr_maxflowpushrelabel');
+
+SELECT has_function('pgr_maxflowpushrelabel', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_maxflowpushrelabel', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_maxflowpushrelabel', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_maxflowpushrelabel', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT function_returns('pgr_maxflowpushrelabel', ARRAY[ 'text', 'bigint', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_maxflowpushrelabel', ARRAY[ 'text', 'bigint', 'anyarray' ], 'setof record');
+SELECT function_returns('pgr_maxflowpushrelabel', ARRAY[ 'text', 'anyarray', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_maxflowpushrelabel', ARRAY[ 'text', 'anyarray', 'anyarray' ], 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowpushrelabel'$$,
+ $$SELECT '{"edges_sql","source_vertex","sink_vertex","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowpushrelabel'$$,
+ $$SELECT '{"edges_sql","source_vertex","sink_vertices","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowpushrelabel'$$,
+ $$SELECT '{"edges_sql","source_vertices","sink_vertex","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflowpushrelabel'$$,
+ $$SELECT '{"edges_sql","source_vertices","sink_vertices","seq","edge_id","source","target","flow","residual_capacity"}'::TEXT[] $$
+);
+
+
+-- pgr_maxflowpushrelabel works
+PREPARE t1 AS
+SELECT * FROM pgr_maxflowpushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+);
+PREPARE t2 AS
+SELECT * FROM pgr_maxflowpushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+);
+PREPARE t3 AS
+SELECT * FROM pgr_maxflowpushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+);
+PREPARE t4 AS
+SELECT * FROM pgr_maxflowpushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+);
+
+SELECT lives_ok('t1','pgr_pgr_maxflowpushrelabel(one to one)');
+SELECT lives_ok('t2','pgr_pgr_maxflowpushrelabel(one to many)');
+SELECT lives_ok('t3','pgr_pgr_maxflowpushrelabel(many to one)');
+SELECT lives_ok('t4','pgr_pgr_maxflowpushrelabel(many to many)');
+
+
+-- preparing for testing return types
+PREPARE all_return AS
+SELECT
+ 'integer'::text AS t1,
+ 'bigint'::text AS t2,
+ 'bigint'::text AS t3,
+ 'bigint'::text AS t4,
+ 'bigint'::text AS t5,
+ 'bigint'::text AS t6;
+
+
+PREPARE q1 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxflowpushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q2 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxflowpushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+PREPARE q3 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxflowpushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q4 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text as t3,
+ pg_typeof(target)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_maxflowpushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+-- testing return types
+SELECT set_eq('q1', 'all_return','1 to 1: Expected returning, columns names & types');
+SELECT set_eq('q2', 'all_return','1 to many: Expected returning, columns names & types');
+SELECT set_eq('q3', 'all_return','many to 1: Expected returning, columns names & types');
+SELECT set_eq('q4', 'all_return','many to many: Expected returning, columns names & types');
+
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/maximumcardinalitymatching-innerQuery.sql b/pgtap/deprecated/maximumcardinalitymatching-innerQuery.sql
new file mode 100644
index 0000000..961ac4b
--- /dev/null
+++ b/pgtap/deprecated/maximumcardinalitymatching-innerQuery.sql
@@ -0,0 +1,19 @@
+\i setup.sql
+
+SELECT plan(137);
+
+
+SELECT has_function('pgr_maximumcardinalitymatching',
+ ARRAY['text', 'boolean']);
+
+SELECT function_returns('pgr_maximumcardinalitymatching',
+ ARRAY['text', 'boolean'],
+ 'setof record');
+
+
+SELECT style_cardinalitymatch('pgr_maximumcardinalitymatching', ')');
+SELECT style_cardinalitymatch('pgr_maximumcardinalitymatching', ', true)');
+SELECT style_cardinalitymatch('pgr_maximumcardinalitymatching', ', false)');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/maximumcardinalitymatching-types-check.sql b/pgtap/deprecated/maximumcardinalitymatching-types-check.sql
new file mode 100644
index 0000000..872990f
--- /dev/null
+++ b/pgtap/deprecated/maximumcardinalitymatching-types-check.sql
@@ -0,0 +1,52 @@
+\i setup.sql
+SET client_min_messages TO WARNING;
+
+SELECT plan(7);
+
+
+SELECT has_function('pgr_maximumcardinalitymatching');
+
+SELECT has_function('pgr_maximumcardinalitymatching', ARRAY['text', 'boolean']);
+
+SELECT function_returns('pgr_maximumcardinalitymatching', ARRAY['text', 'boolean'], 'setof record');
+
+-- Maximum cardinality matching
+PREPARE mcm_dir AS
+SELECT * FROM pgr_maximumCardinalityMatching(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
+);
+
+PREPARE mcm_undir AS
+SELECT * FROM pgr_maximumCardinalityMatching(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
+ directed := false
+);
+
+SELECT lives_ok('mcm_dir','directed');
+SELECT lives_ok('mcm_undir','undirected');
+
+PREPARE mcm_q AS
+SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
+ pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4
+ FROM (
+ SELECT * FROM pgr_maximumCardinalityMatching(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
+ ) ) AS a
+ limit 1
+;
+
+PREPARE mcm_v AS
+SELECT 'integer'::text AS t1,'bigint'::text AS t2,
+ 'bigint'::text AS t3, 'bigint'::text AS t4;
+
+SELECT set_eq('mcm_q', 'mcm_v','Expected returning, columns names & types');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maximumcardinalitymatching'$$,
+ $$SELECT '{"edges_sql","directed","seq","edge_id","source","target"}'::TEXT[] $$
+);
+
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/pgtap/deprecated/no_underscored-2x.test.sql b/pgtap/deprecated/no_underscored-2x.test.sql
new file mode 100644
index 0000000..0eb73f4
--- /dev/null
+++ b/pgtap/deprecated/no_underscored-2x.test.sql
@@ -0,0 +1,63 @@
+
+\i setup.sql
+
+
+SELECT plan(18);
+
+set client_min_messages to WARNING;
+SELECT results_eq('SELECT 1, sname, tname FROM pgr_getTableName(''EDGe_table'')',
+ 'SELECT 1, ''public''::TEXT, ''edge_table''::TEXT ');
+SELECT results_eq('SELECT 2, sname, tname FROM pgr_getTableName(''EDes2'')',
+ 'SELECT 2, ''public''::TEXT, NULL::TEXT ');
+
+
+select todo(1);
+SELECT results_eq('SELECT 3, pgr_getColumnName(''EDGe_table'', ''SOuRce'')' ,
+ 'SELECT 3, ''source''::TEXT ');
+SELECT results_eq('SELECT 4, pgr_getColumnName(''EDes2'', ''SOuRce'') ',
+ 'SELECT 4, NULL::TEXT ');
+SELECT results_eq('SELECT 5, pgr_getColumnName(''EDes2'', ''SOuce'') ',
+ 'SELECT 5, NULL::TEXT ');
+SELECT results_eq('SELECT 6, pgr_getColumnName(''EDes2'', ''SOuce'') ',
+ 'SELECT 6, NULL::TEXT ');
+
+
+select todo(1);
+SELECT results_eq('SELECT 7, pgr_isColumnInTable(''EDGe_table'', ''SOuRce'') ',
+ 'SELECT 7, true ');
+SELECT results_eq('SELECT 8, pgr_isColumnInTable(''EDes2'', ''SOuRce'')',
+ 'SELECT 8, false ');
+SELECT results_eq('SELECT 9, pgr_isColumnInTable(''EDes2'', ''SOuce'')',
+ 'SELECT 9, false ');
+SELECT results_eq('SELECT 10, pgr_isColumnInTable(''EDes2'', ''SOuce'')',
+ 'SELECT 10, false ');
+
+
+SELECT results_eq('SELECT 11, pgr_isColumnIndexed(''EDGe_table'', ''id'') ',
+ 'SELECT 11, true ');
+SELECT results_eq('SELECT 12, pgr_isColumnIndexed(''EDGe_table'', ''X1'') ',
+ 'SELECT 12, false ');
+
+
+SELECT results_eq('SELECT 13, pgr_versionless(''2.1.0foobar23'', ''2.1'') ',
+ 'SELECT 13, true ');
+SELECT results_eq('SELECT 14, pgr_versionless(''2.1.0foobar23'', ''2.1-rc1'') ',
+ 'SELECT 14, true ');
+SELECT results_eq('SELECT 15, pgr_versionless(''2.1.0foobar23'', ''2.1-beta'') ',
+ 'SELECT 15, true ');
+
+
+select todo(1);
+SELECT results_eq('SELECT 16, pgr_quote_ident(''idname.text'') ',
+ 'SELECT 16, ''idname.text''::TEXT ');
+
+SELECT results_eq('SELECT 17, pgr_startPoint(the_geom)::TEXT FROM edge_table where id = 1 ',
+ 'SELECT 17, ''010100000000000000000000400000000000000000''::TEXT ');
+
+SELECT results_eq('SELECT 18, pgr_endPoint(the_geom)::TEXT FROM edge_table where id = 1 ',
+ 'SELECT 18, ''01010000000000000000000040000000000000F03F''::TEXT ');
+
+-- Finish the tests and clean up.
+SELECT * FROM finish();
+ROLLBACK;
+
diff --git a/pgtap/dijkstra/dijkstra-group-innerQuery.sql b/pgtap/dijkstra/dijkstra-group-innerQuery.sql
new file mode 100644
index 0000000..d09ff91
--- /dev/null
+++ b/pgtap/dijkstra/dijkstra-group-innerQuery.sql
@@ -0,0 +1,39 @@
+\i setup.sql
+
+SELECT plan(188);
+
+
+SELECT has_function('pgr_dijkstra',
+ ARRAY['text', 'bigint', 'bigint', 'boolean']);
+SELECT has_function('pgr_dijkstra',
+ ARRAY['text', 'bigint', 'anyarray', 'boolean']);
+SELECT has_function('pgr_dijkstra',
+ ARRAY['text', 'anyarray', 'bigint', 'boolean']);
+SELECT has_function('pgr_dijkstra',
+ ARRAY['text', 'anyarray', 'anyarray', 'boolean']);
+
+SELECT function_returns('pgr_dijkstra',
+ ARRAY['text', 'bigint', 'bigint', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_dijkstra',
+ ARRAY['text', 'bigint', 'anyarray', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_dijkstra',
+ ARRAY['text', 'anyarray', 'bigint', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_dijkstra',
+ ARRAY['text', 'anyarray', 'anyarray', 'boolean'],
+ 'setof record');
+
+
+-- ONE TO ONE
+SELECT style_dijkstra('pgr_dijkstra', ', 2, 3, true)');
+-- ONE TO MANY
+SELECT style_dijkstra('pgr_dijkstra', ', 2, ARRAY[3], true)');
+-- MANY TO ONE
+SELECT style_dijkstra('pgr_dijkstra', ', ARRAY[2], 3, true)');
+-- MANY TO MANY
+SELECT style_dijkstra('pgr_dijkstra', ', ARRAY[2], ARRAY[3], true)');
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/dijkstra/test/pgtap/issue-353.test.sql b/pgtap/dijkstra/dijkstra-issue-353.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/issue-353.test.sql
rename to pgtap/dijkstra/dijkstra-issue-353.test.sql
diff --git a/src/dijkstra/test/pgtap/dijkstra-types-check.sql b/pgtap/dijkstra/dijkstra-types-check.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/dijkstra-types-check.sql
rename to pgtap/dijkstra/dijkstra-types-check.sql
diff --git a/pgtap/dijkstra/dijkstraCost-group-innerQuery.sql b/pgtap/dijkstra/dijkstraCost-group-innerQuery.sql
new file mode 100644
index 0000000..a406a29
--- /dev/null
+++ b/pgtap/dijkstra/dijkstraCost-group-innerQuery.sql
@@ -0,0 +1,40 @@
+\i setup.sql
+
+SELECT plan(188);
+
+
+SELECT has_function('pgr_dijkstracost',
+ ARRAY['text', 'bigint', 'bigint', 'boolean']);
+SELECT has_function('pgr_dijkstracost',
+ ARRAY['text', 'bigint', 'anyarray', 'boolean']);
+SELECT has_function('pgr_dijkstracost',
+ ARRAY['text', 'anyarray', 'bigint', 'boolean']);
+SELECT has_function('pgr_dijkstracost',
+ ARRAY['text', 'anyarray', 'anyarray', 'boolean']);
+
+SELECT function_returns('pgr_dijkstracost',
+ ARRAY['text', 'bigint', 'bigint', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_dijkstracost',
+ ARRAY['text', 'bigint', 'anyarray', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_dijkstracost',
+ ARRAY['text', 'anyarray', 'bigint', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_dijkstracost',
+ ARRAY['text', 'anyarray', 'anyarray', 'boolean'],
+ 'setof record');
+
+
+-- ONE TO ONE
+SELECT style_dijkstra('pgr_dijkstracost', ', 2, 3, true)');
+-- ONE TO MANY
+SELECT style_dijkstra('pgr_dijkstracost', ', 2, ARRAY[3], true)');
+-- MANY TO ONE
+SELECT style_dijkstra('pgr_dijkstracost', ', ARRAY[2], 3, true)');
+-- MANY TO MANY
+SELECT style_dijkstra('pgr_dijkstracost', ', ARRAY[2], ARRAY[3], true)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/dijkstra/test/pgtap/dijkstraCost-types-check.sql b/pgtap/dijkstra/dijkstraCost-types-check.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/dijkstraCost-types-check.sql
rename to pgtap/dijkstra/dijkstraCost-types-check.sql
diff --git a/src/dijkstra/test/pgtap/dijkstraVia-equivalenceDijkstra.test.sql b/pgtap/dijkstra/dijkstraVia-equivalenceDijkstra.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/dijkstraVia-equivalenceDijkstra.test.sql
rename to pgtap/dijkstra/dijkstraVia-equivalenceDijkstra.test.sql
diff --git a/pgtap/dijkstra/dijkstraVia-innerQuery.sql b/pgtap/dijkstra/dijkstraVia-innerQuery.sql
new file mode 100644
index 0000000..9d5f4e0
--- /dev/null
+++ b/pgtap/dijkstra/dijkstraVia-innerQuery.sql
@@ -0,0 +1,17 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_dijkstravia',
+ ARRAY['text', 'anyarray', 'boolean', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_dijkstravia',
+ ARRAY['text', 'anyarray', 'boolean', 'boolean', 'boolean'],
+ 'setof record');
+
+SELECT style_dijkstra('pgr_dijkstravia', ', ARRAY[2, 3], true, true)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/dijkstra/test/pgtap/dijkstraVia-types-check.sql b/pgtap/dijkstra/dijkstraVia-types-check.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/dijkstraVia-types-check.sql
rename to pgtap/dijkstra/dijkstraVia-types-check.sql
diff --git a/src/dijkstra/test/pgtap/oneToOne_equiv_manyToMany.test.sql b/pgtap/dijkstra/oneToOne_equiv_manyToMany.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/oneToOne_equiv_manyToMany.test.sql
rename to pgtap/dijkstra/oneToOne_equiv_manyToMany.test.sql
diff --git a/src/dijkstra/test/pgtap/oneToOne_equiv_manyToOne.test.sql b/pgtap/dijkstra/oneToOne_equiv_manyToOne.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/oneToOne_equiv_manyToOne.test.sql
rename to pgtap/dijkstra/oneToOne_equiv_manyToOne.test.sql
diff --git a/src/dijkstra/test/pgtap/oneToOne_equiv_oneToMany.test.sql b/pgtap/dijkstra/oneToOne_equiv_oneToMany.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/oneToOne_equiv_oneToMany.test.sql
rename to pgtap/dijkstra/oneToOne_equiv_oneToMany.test.sql
diff --git a/src/dijkstra/test/pgtap/zero_one_edge_-1_rev.test.sql b/pgtap/dijkstra/zero_one_edge_-1_rev.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/zero_one_edge_-1_rev.test.sql
rename to pgtap/dijkstra/zero_one_edge_-1_rev.test.sql
diff --git a/src/dijkstra/test/pgtap/zero_one_edge_has_rev.test.sql b/pgtap/dijkstra/zero_one_edge_has_rev.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/zero_one_edge_has_rev.test.sql
rename to pgtap/dijkstra/zero_one_edge_has_rev.test.sql
diff --git a/src/dijkstra/test/pgtap/zero_one_edge_no_rev.test.sql b/pgtap/dijkstra/zero_one_edge_no_rev.test.sql
similarity index 100%
rename from src/dijkstra/test/pgtap/zero_one_edge_no_rev.test.sql
rename to pgtap/dijkstra/zero_one_edge_no_rev.test.sql
diff --git a/pgtap/driving_distance/dijkstraDD-innerQuery.sql b/pgtap/driving_distance/dijkstraDD-innerQuery.sql
new file mode 100644
index 0000000..b360724
--- /dev/null
+++ b/pgtap/driving_distance/dijkstraDD-innerQuery.sql
@@ -0,0 +1,28 @@
+\i setup.sql
+
+SELECT plan(94);
+
+
+SELECT has_function('pgr_drivingdistance',
+ ARRAY['text', 'bigint', 'double precision', 'boolean']);
+SELECT has_function('pgr_drivingdistance',
+ ARRAY['text', 'anyarray', 'double precision', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_drivingdistance',
+ ARRAY['text', 'bigint', 'double precision', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_drivingdistance',
+ ARRAY['text', 'anyarray', 'double precision', 'boolean', 'boolean'],
+ 'setof record');
+
+
+-- ONE SOURCE
+SELECT style_dijkstra('pgr_drivingdistance', ',2, 1, true)');
+
+-- MANY SOURCES
+SELECT style_dijkstra('pgr_drivingdistance', ',ARRAY[2,3], 1, true)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/driving_distance/test/pgtap/issue-519.sql b/pgtap/driving_distance/issue-519.sql
similarity index 100%
rename from src/driving_distance/test/pgtap/issue-519.sql
rename to pgtap/driving_distance/issue-519.sql
diff --git a/pgtap/driving_distance/withPointsDD-group-innerQuery.sql b/pgtap/driving_distance/withPointsDD-group-innerQuery.sql
new file mode 100644
index 0000000..a9acbab
--- /dev/null
+++ b/pgtap/driving_distance/withPointsDD-group-innerQuery.sql
@@ -0,0 +1,29 @@
+\i setup.sql
+
+SELECT plan(94);
+
+
+SELECT has_function('pgr_withpointsdd',
+ ARRAY['text', 'text', 'bigint', 'double precision', 'boolean', 'character', 'boolean']);
+SELECT has_function('pgr_withpointsdd',
+ ARRAY['text', 'text', 'anyarray', 'double precision', 'boolean', 'character', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_withpointsdd',
+ ARRAY['text', 'text', 'bigint', 'double precision', 'boolean', 'character', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_withpointsdd',
+ ARRAY['text', 'text', 'anyarray', 'double precision', 'boolean', 'character', 'boolean', 'boolean'],
+ 'setof record');
+
+
+-- ONE SOURCE
+SELECT style_withpoints('pgr_withpointsdd', ', 2, 3, true)');
+
+
+-- MANY SOURCES
+SELECT style_withpoints('pgr_withpointsdd', ', ARRAY[2], 3, true)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/ksp/ksp-innerQuery.sql b/pgtap/ksp/ksp-innerQuery.sql
new file mode 100644
index 0000000..964bc3c
--- /dev/null
+++ b/pgtap/ksp/ksp-innerQuery.sql
@@ -0,0 +1,19 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_ksp',
+ ARRAY['text', 'bigint', 'bigint', 'integer', 'boolean', 'boolean']);
+
+SELECT function_returns('pgr_ksp',
+ ARRAY['text', 'bigint', 'bigint', 'integer', 'boolean', 'boolean'],
+ 'setof record');
+
+
+-- ONE TO ONE
+SELECT style_dijkstra('pgr_ksp', ',2,3,2, true, false)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/ksp/ksp-old-innerQuery.sql b/pgtap/ksp/ksp-old-innerQuery.sql
new file mode 100644
index 0000000..2e0bae3
--- /dev/null
+++ b/pgtap/ksp/ksp-old-innerQuery.sql
@@ -0,0 +1,20 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_ksp',
+ ARRAY['text', 'integer', 'integer', 'integer', 'boolean']);
+
+SELECT function_returns('pgr_ksp',
+ ARRAY['text', 'integer', 'integer', 'integer', 'boolean'],
+ 'setof pgr_costresult3');
+
+
+-- ONE TO ONE
+SELECT style_old_dijkstra_with('pgr_ksp', ',2,3,2, true)');
+SELECT style_old_dijkstra_no_rev('pgr_ksp', ',2,3,2, false)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/ksp/test/pgtap/ksp-v3-1route.test.sql b/pgtap/ksp/ksp-v3-1route.test.sql
similarity index 100%
rename from src/ksp/test/pgtap/ksp-v3-1route.test.sql
rename to pgtap/ksp/ksp-v3-1route.test.sql
diff --git a/src/ksp/test/pgtap/parallel-v2.test.sql b/pgtap/ksp/parallel-v2.test.sql
similarity index 100%
rename from src/ksp/test/pgtap/parallel-v2.test.sql
rename to pgtap/ksp/parallel-v2.test.sql
diff --git a/src/ksp/test/pgtap/parallel.test.sql b/pgtap/ksp/parallel.test.sql
similarity index 100%
rename from src/ksp/test/pgtap/parallel.test.sql
rename to pgtap/ksp/parallel.test.sql
diff --git a/pgtap/ksp/withPointsKSP-innerQuery.sql b/pgtap/ksp/withPointsKSP-innerQuery.sql
new file mode 100644
index 0000000..8dabbfc
--- /dev/null
+++ b/pgtap/ksp/withPointsKSP-innerQuery.sql
@@ -0,0 +1,21 @@
+\i setup.sql
+
+SELECT plan(47);
+
+
+SELECT has_function('pgr_withpointsksp',
+ ARRAY['text', 'text', 'bigint', 'bigint', 'integer', 'boolean', 'boolean', 'character', 'boolean']);
+
+SELECT function_returns('pgr_withpointsksp',
+ ARRAY['text', 'text', 'bigint', 'bigint', 'integer', 'boolean', 'boolean', 'character', 'boolean'],
+ 'setof record');
+
+
+
+-- ONE TO ONE
+SELECT style_withpoints('pgr_withpointsksp', ', 2, 3, 2, true)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/boykovKolmogorov-innerQuery.sql b/pgtap/max_flow/boykovKolmogorov-innerQuery.sql
new file mode 100644
index 0000000..2835ce8
--- /dev/null
+++ b/pgtap/max_flow/boykovKolmogorov-innerQuery.sql
@@ -0,0 +1,36 @@
+\i setup.sql
+
+SELECT plan(188);
+
+
+SELECT has_function('pgr_boykovkolmogorov',
+ ARRAY['text', 'bigint', 'bigint']);
+SELECT has_function('pgr_boykovkolmogorov',
+ ARRAY['text', 'bigint', 'anyarray']);
+SELECT has_function('pgr_boykovkolmogorov',
+ ARRAY['text', 'anyarray', 'bigint']);
+SELECT has_function('pgr_boykovkolmogorov',
+ ARRAY['text', 'anyarray', 'anyarray']);
+
+SELECT function_returns('pgr_boykovkolmogorov',
+ ARRAY['text', 'bigint', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_boykovkolmogorov',
+ ARRAY['text', 'bigint', 'anyarray'],
+ 'setof record');
+SELECT function_returns('pgr_boykovkolmogorov',
+ ARRAY['text', 'anyarray', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_boykovkolmogorov',
+ ARRAY['text', 'anyarray', 'anyarray'],
+ 'setof record');
+
+
+-- ONLY WORKS ON DIRECTED GRAPH
+SELECT style_max_flow('pgr_boykovkolmogorov', ', 2, 3)');
+SELECT style_max_flow('pgr_boykovkolmogorov', ', 2, ARRAY[3])');
+SELECT style_max_flow('pgr_boykovkolmogorov', ', ARRAY[2], 3)');
+SELECT style_max_flow('pgr_boykovkolmogorov', ', ARRAY[2], ARRAY[3])');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/boykovKolmogorov-types-check.sql b/pgtap/max_flow/boykovKolmogorov-types-check.sql
new file mode 100644
index 0000000..7f485eb
--- /dev/null
+++ b/pgtap/max_flow/boykovKolmogorov-types-check.sql
@@ -0,0 +1,139 @@
+\i setup.sql
+
+SELECT plan(21);
+
+SELECT has_function('pgr_boykovkolmogorov');
+
+SELECT has_function('pgr_boykovkolmogorov', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_boykovkolmogorov', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_boykovkolmogorov', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_boykovkolmogorov', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT function_returns('pgr_boykovkolmogorov', ARRAY[ 'text', 'bigint', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_boykovkolmogorov', ARRAY[ 'text', 'bigint', 'anyarray' ], 'setof record');
+SELECT function_returns('pgr_boykovkolmogorov', ARRAY[ 'text', 'anyarray', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_boykovkolmogorov', ARRAY[ 'text', 'anyarray', 'anyarray' ], 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_boykovkolmogorov'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_boykovkolmogorov'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_boykovkolmogorov'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_boykovkolmogorov'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+
+
+-- pgr_boykovKolmogorov works
+PREPARE t1 AS
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5);
+PREPARE t2 AS
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]);
+PREPARE t3 AS
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5);
+PREPARE t4 AS
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]);
+
+SELECT lives_ok('t1','pgr_boykovKolmogorov(one to One)');
+SELECT lives_ok('t2','pgr_boykovKolmogorov(one to Many)');
+SELECT lives_ok('t3','pgr_boykovKolmogorov(Many to One)');
+SELECT lives_ok('t4','pgr_boykovKolmogorov(Many to Many)');
+
+
+-- preparing for testing return types
+PREPARE all_return AS
+SELECT
+ 'integer'::text AS t1,
+ 'bigint'::text AS t2,
+ 'bigint'::text AS t3,
+ 'bigint'::text AS t4,
+ 'bigint'::text AS t5,
+ 'bigint'::text AS t6;
+
+
+PREPARE q1 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q2 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+PREPARE q3 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q4 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+-- testing return types
+SELECT set_eq('q1', 'all_return','1 to 1: Expected returning, columns names & types');
+SELECT set_eq('q2', 'all_return','1 to many: Expected returning, columns names & types');
+SELECT set_eq('q3', 'all_return','many to 1: Expected returning, columns names & types');
+SELECT set_eq('q4', 'all_return','many to many: Expected returning, columns names & types');
+
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/edgedisjointpaths-group-innerQuery.sql b/pgtap/max_flow/edgedisjointpaths-group-innerQuery.sql
new file mode 100644
index 0000000..a631cad
--- /dev/null
+++ b/pgtap/max_flow/edgedisjointpaths-group-innerQuery.sql
@@ -0,0 +1,45 @@
+\i setup.sql
+
+SELECT plan(548);
+
+
+SELECT has_function('pgr_edgedisjointpaths',
+ ARRAY['text', 'bigint', 'bigint', 'boolean']);
+SELECT has_function('pgr_edgedisjointpaths',
+ ARRAY['text', 'bigint', 'anyarray', 'boolean']);
+SELECT has_function('pgr_edgedisjointpaths',
+ ARRAY['text', 'anyarray', 'bigint', 'boolean']);
+SELECT has_function('pgr_edgedisjointpaths',
+ ARRAY['text', 'anyarray', 'anyarray', 'boolean']);
+
+SELECT function_returns('pgr_edgedisjointpaths',
+ ARRAY['text', 'bigint', 'bigint', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_edgedisjointpaths',
+ ARRAY['text', 'bigint', 'anyarray', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_edgedisjointpaths',
+ ARRAY['text', 'anyarray', 'bigint', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_edgedisjointpaths',
+ ARRAY['text', 'anyarray', 'anyarray', 'boolean'],
+ 'setof record');
+
+
+-- DIRECTED
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', 2, 3)');
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', 2, ARRAY[3])');
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', ARRAY[2], 3)');
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', ARRAY[2], ARRAY[3])');
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', 2, 3, true)');
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', 2, ARRAY[3], true)');
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', ARRAY[2], 3, true)');
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', ARRAY[2], ARRAY[3], true)');
+-- UNDIRECTED
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', 2, 3, false)');
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', 2, ARRAY[3], false)');
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', ARRAY[2], 3, false)');
+SELECT style_dijkstra('pgr_edgedisjointpaths', ', ARRAY[2], ARRAY[3], false)');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/edgedisjointpaths-types-check.sql b/pgtap/max_flow/edgedisjointpaths-types-check.sql
new file mode 100644
index 0000000..975b9cf
--- /dev/null
+++ b/pgtap/max_flow/edgedisjointpaths-types-check.sql
@@ -0,0 +1,155 @@
+\i setup.sql
+
+SELECT plan(10);
+
+
+-- Edge disjoint paths
+PREPARE edp_dir AS
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 3, 5
+);
+PREPARE edp_undir AS
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 3, 5,
+ directed := false
+);
+
+SELECT lives_ok('edp_dir','directed');
+SELECT lives_ok('edp_undir','undirected');
+
+
+-- preparing return types pgr_edgeDisjointPaths(One to One)
+PREPARE edp_v_o2o AS
+SELECT
+ 'integer'::text AS t1,
+ 'integer'::text AS t2,
+ 'bigint'::text AS t3,
+ 'bigint'::text AS t4,
+ 'double precision'::text AS t5,
+ 'double precision'::text AS t6,
+ 'integer'::text AS t10;
+
+PREPARE edp_q_o2o AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(path_seq)::text AS t2,
+ pg_typeof(node)::text AS t3,
+ pg_typeof(edge)::text AS t4,
+ pg_typeof(cost)::text AS t5,
+ pg_typeof(agg_cost)::text AS t6,
+ pg_typeof(path_id)::text AS t10
+ FROM (
+ SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 3, 5
+ ) ) AS a
+ limit 1;
+
+
+
+-- preparing return types for:
+-- pgr_edgeDisjointPaths(One to Many)
+-- pgr_edgeDisjointPaths(Many to One)
+PREPARE edp_v_o2m AS
+SELECT
+ 'integer'::text AS t1,
+ 'integer'::text AS t2,
+ 'bigint'::text AS t3,
+ 'bigint'::text AS t4,
+ 'bigint'::text AS t5,
+ 'double precision'::text AS t6,
+ 'double precision'::text AS t7,
+ 'integer'::text AS t10;
+
+PREPARE edp_q_o2m AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(path_seq)::text AS t2,
+ pg_typeof(end_vid)::text as t3,
+ pg_typeof(node)::text AS t4,
+ pg_typeof(edge)::text AS t5,
+ pg_typeof(cost)::text AS t6,
+ pg_typeof(agg_cost)::text AS t7,
+ pg_typeof(path_id)::text AS t10
+ FROM (
+ SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 3, ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+PREPARE edp_q_m2o AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(path_seq)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(node)::text AS t4,
+ pg_typeof(edge)::text AS t5,
+ pg_typeof(cost)::text AS t6,
+ pg_typeof(agg_cost)::text AS t7,
+ pg_typeof(path_id)::text AS t10
+ FROM (
+ SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[3], 5
+ ) ) AS a
+ limit 1;
+
+-- preparing return types pgr_edgeDisjointPaths(Many to Many)
+PREPARE edp_v_m2m AS
+SELECT
+ 'integer'::text AS t1,
+ 'integer'::text AS t2,
+ 'bigint'::text AS t3,
+ 'bigint'::text AS t4,
+ 'bigint'::text AS t5,
+ 'bigint'::text AS t6,
+ 'double precision'::text AS t7,
+ 'double precision'::text AS t8,
+ 'integer'::text AS t10;
+
+PREPARE edp_q_m2m AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(path_seq)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(node)::text AS t5,
+ pg_typeof(edge)::text AS t6,
+ pg_typeof(cost)::text AS t7,
+ pg_typeof(agg_cost)::text AS t8,
+ pg_typeof(path_id)::text AS t10
+ FROM (
+ SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[3], ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+-- testing return types
+SELECT set_eq('edp_v_o2o', 'edp_q_o2o','1 to 1: Expected returning, columns names & types');
+SELECT set_eq('edp_v_o2m', 'edp_q_o2m','1 to many: Expected returning, columns names & types');
+SELECT set_eq('edp_v_o2m', 'edp_q_m2o','many to 1: Expected returning, columns names & types');
+SELECT set_eq('edp_v_m2m', 'edp_q_m2m','many to many: Expected returning, columns names & types');
+
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_edgedisjointpaths'$$,
+ $$SELECT '{"","","","directed","seq","path_id","path_seq","node","edge","cost","agg_cost"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_edgedisjointpaths'$$,
+ $$SELECT '{"","","","directed","seq","path_id","path_seq","end_vid","node","edge","cost","agg_cost"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_edgedisjointpaths'$$,
+ $$SELECT '{"","","","directed","seq","path_id","path_seq","start_vid","node","edge","cost","agg_cost"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_edgedisjointpaths'$$,
+ $$SELECT '{"","","","directed","seq","path_id","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[] $$
+);
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/edmondsKarp-innerQuery.sql b/pgtap/max_flow/edmondsKarp-innerQuery.sql
new file mode 100644
index 0000000..abb5374
--- /dev/null
+++ b/pgtap/max_flow/edmondsKarp-innerQuery.sql
@@ -0,0 +1,36 @@
+\i setup.sql
+
+SELECT plan(188);
+
+
+SELECT has_function('pgr_edmondskarp',
+ ARRAY['text', 'bigint', 'bigint']);
+SELECT has_function('pgr_edmondskarp',
+ ARRAY['text', 'bigint', 'anyarray']);
+SELECT has_function('pgr_edmondskarp',
+ ARRAY['text', 'anyarray', 'bigint']);
+SELECT has_function('pgr_edmondskarp',
+ ARRAY['text', 'anyarray', 'anyarray']);
+
+SELECT function_returns('pgr_edmondskarp',
+ ARRAY['text', 'bigint', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_edmondskarp',
+ ARRAY['text', 'bigint', 'anyarray'],
+ 'setof record');
+SELECT function_returns('pgr_edmondskarp',
+ ARRAY['text', 'anyarray', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_edmondskarp',
+ ARRAY['text', 'anyarray', 'anyarray'],
+ 'setof record');
+
+
+-- ONLY WORKS ON DIRECTED GRAPH
+SELECT style_max_flow('pgr_edmondskarp', ', 2, 3)');
+SELECT style_max_flow('pgr_edmondskarp', ', 2, ARRAY[3])');
+SELECT style_max_flow('pgr_edmondskarp', ', ARRAY[2], 3)');
+SELECT style_max_flow('pgr_edmondskarp', ', ARRAY[2], ARRAY[3])');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/edmondsKarp-types-check.sql b/pgtap/max_flow/edmondsKarp-types-check.sql
new file mode 100644
index 0000000..03eb5c0
--- /dev/null
+++ b/pgtap/max_flow/edmondsKarp-types-check.sql
@@ -0,0 +1,143 @@
+\i setup.sql
+
+SELECT plan(21);
+
+SELECT has_function('pgr_edmondskarp');
+
+SELECT has_function('pgr_edmondskarp', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_edmondskarp', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_edmondskarp', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_edmondskarp', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT function_returns('pgr_edmondskarp', ARRAY[ 'text', 'bigint', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_edmondskarp', ARRAY[ 'text', 'bigint', 'anyarray' ], 'setof record');
+SELECT function_returns('pgr_edmondskarp', ARRAY[ 'text', 'anyarray', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_edmondskarp', ARRAY[ 'text', 'anyarray', 'anyarray' ], 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_edmondskarp'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_edmondskarp'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_edmondskarp'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_edmondskarp'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+
+
+-- pgr_edmondskarp works
+PREPARE t1 AS
+SELECT * FROM pgr_edmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+);
+PREPARE t2 AS
+SELECT * FROM pgr_edmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+);
+PREPARE t3 AS
+SELECT * FROM pgr_edmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+);
+PREPARE t4 AS
+SELECT * FROM pgr_edmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+);
+
+SELECT lives_ok('t1','pgr_pgr_edmondskarp(one to one)');
+SELECT lives_ok('t2','pgr_pgr_edmondskarp(one to many)');
+SELECT lives_ok('t3','pgr_pgr_edmondskarp(many to one)');
+SELECT lives_ok('t4','pgr_pgr_edmondskarp(many to many)');
+
+
+-- preparing for testing return types
+PREPARE all_return AS
+SELECT
+ 'integer'::text AS t1,
+ 'bigint'::text AS t2,
+ 'bigint'::text AS t3,
+ 'bigint'::text AS t4,
+ 'bigint'::text AS t5,
+ 'bigint'::text AS t6;
+
+
+PREPARE q1 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_edmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q2 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_edmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+PREPARE q3 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_edmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q4 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_edmondskarp(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+-- testing return types
+SELECT set_eq('q1', 'all_return','1 to 1: Expected returning, columns names & types');
+SELECT set_eq('q2', 'all_return','1 to many: Expected returning, columns names & types');
+SELECT set_eq('q3', 'all_return','many to 1: Expected returning, columns names & types');
+SELECT set_eq('q4', 'all_return','many to many: Expected returning, columns names & types');
+
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/internet_example.sql b/pgtap/max_flow/internet_example.sql
new file mode 100644
index 0000000..0fef4aa
--- /dev/null
+++ b/pgtap/max_flow/internet_example.sql
@@ -0,0 +1,144 @@
+\i setup.sql
+
+SELECT plan(3);
+
+
+/**************************** BOOST EXAMPLE ****************/
+
+CREATE TABLE boost_example(
+ id SERIAL PRIMARY KEY,
+ source BIGINT,
+ target BIGINT,
+ capacity INTEGER
+);
+
+INSERT INTO boost_example (source, target, capacity)
+VALUES
+(1, 7,3),
+(1, 2, 20),
+(1, 3, 20),
+(2, 6,1),
+(2, 1, 20),
+(2, 4, 20),
+(3, 5,4),
+(3, 4, 20),
+(3, 1, 20),
+(4, 8,5),
+(4, 3, 20),
+(4, 2, 20),
+(5, 6, 20),
+(5, 7, 20),
+(6, 5, 20),
+(6, 8, 20),
+(7, 8, 20),
+(7, 5, 20),
+(8, 7, 20),
+(8, 6, 20)
+;
+
+
+/* NOTE: what is equal between the three algorithms is the maximum flow achieved */
+
+PREPARE boostSample1 AS
+SELECT sum(flow) FROM pgr_EdmondsKarp(
+ 'SELECT id, source, target,capacity
+ FROM boost_example'
+ ,1, 8) WHERE start_vid = 1;
+
+PREPARE boostSample2 AS
+SELECT * FROM pgr_BoykovKolmogorov(
+ 'SELECT id, source, target,capacity
+ FROM boost_example'
+ ,1, 8) WHERE start_vid = 1;
+
+PREPARE boostSample3 AS
+SELECT * FROM pgr_PushRelabel(
+ 'SELECT id, source, target,capacity
+ FROM boost_example'
+ ,1, 8) WHERE start_vid = 1;
+
+PREPARE boostSample4 AS
+SELECT sum(flow) FROM pgr_EdmondsKarp(
+ 'SELECT id, source, target,capacity
+ FROM boost_example'
+ ,1, 8) WHERE end_vid = 8;
+
+PREPARE boostSample5 AS
+SELECT * FROM pgr_BoykovKolmogorov(
+ 'SELECT id, source, target,capacity
+ FROM boost_example'
+ ,1, 8) WHERE end_vid = 8;
+
+PREPARE boostSample6 AS
+SELECT * FROM pgr_PushRelabel(
+ 'SELECT id, source, target,capacity
+ FROM boost_example'
+ ,1, 8) WHERE end_vid = 8;
+
+SELECT ('boostSample1',13, 'BOOST: pgr_EdmondsKarp, flow from source is 13');
+SELECT ('boostSample4',13, 'BOOST: pgr_EdmondsKarp, flow from source is 13');
+SELECT ('boostSample2',13, 'BOOST: pgr_BoykovKolmogorov, flow from source is 13');
+SELECT ('boostSample5',13, 'BOOST: pgr_BoykovKolmogorov, flow from source is 13');
+SELECT ('boostSample3',13, 'BOOST: pgr_PushRelabel, flow from source is 13');
+SELECT ('boostSample6',13, 'BOOST: pgr_PushRelabel, flow from source is 13');
+
+/**************************** WIKI EXAMPLE ****************/
+
+CREATE TABLE wiki_example(
+ id SERIAL PRIMARY KEY,
+ source BIGINT,
+ target BIGINT,
+ capacity INTEGER
+);
+
+/*
+S = 1, O = 2, P = 3, Q = 4, R = 5, T = 6
+*/
+INSERT INTO wiki_example(source, target, capacity)
+VALUES
+(1, 2, 3),
+(1, 3, 3),
+(2, 3, 2),
+(2, 4, 3),
+(3, 5, 2),
+(4, 5, 4),
+(4, 6, 2),
+(5, 6, 3)
+;
+
+
+PREPARE wikiSample1 AS
+SELECT * FROM pgr_EdmondsKarp(
+ 'SELECT id, source, target,capacity
+ FROM wiki_example'
+ ,1, 6);
+
+PREPARE wikiSample2 AS
+SELECT * FROM pgr_BoykovKolmogorov(
+ 'SELECT id, source, target,capacity
+ FROM wiki_example'
+ ,1, 6);
+
+PREPARE wikiSample3 AS
+SELECT * FROM pgr_PushRelabel(
+ 'SELECT id, source, target,capacity
+ FROM wiki_example'
+ ,1, 6);
+
+PREPARE wikiresult AS
+SELECT *
+FROM (VALUES
+ (1, 1, 1, 2, 3, 0),
+ (2, 2, 1, 3, 2, 1),
+ (3, 4, 2, 4, 3, 0),
+ (4, 5, 3, 5, 2, 0),
+ (5, 6, 4, 5, 1, 3),
+ (6, 7, 4, 6, 2, 0),
+ (7, 8, 5, 6, 3, 0)
+) AS t(seq, edge_id, source, target, flow, residual_capacity);
+
+SELECT set_eq('wikiSample1', 'wikiresult', 'WIKI: pgr_EdmondsKarp');
+SELECT set_eq('wikiSample2', 'wikiresult', 'WIKI: pgr_BoykovKolmogorov');
+SELECT set_eq('wikiSample3', 'wikiresult', 'WIKI: pgr_PushRelabel');
+
+ROLLBACK;
diff --git a/pgtap/max_flow/maxCardinalityMatch-innerQuery.sql b/pgtap/max_flow/maxCardinalityMatch-innerQuery.sql
new file mode 100644
index 0000000..90bdb05
--- /dev/null
+++ b/pgtap/max_flow/maxCardinalityMatch-innerQuery.sql
@@ -0,0 +1,19 @@
+\i setup.sql
+
+SELECT plan(137);
+
+
+SELECT has_function('pgr_maxcardinalitymatch',
+ ARRAY['text', 'boolean']);
+
+SELECT function_returns('pgr_maxcardinalitymatch',
+ ARRAY['text', 'boolean'],
+ 'setof record');
+
+
+SELECT style_cardinalitymatch('pgr_maxcardinalitymatch', ')');
+SELECT style_cardinalitymatch('pgr_maxcardinalitymatch', ', true)');
+SELECT style_cardinalitymatch('pgr_maxcardinalitymatch', ', false)');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/maxCardinalityMatch-types-check.sql b/pgtap/max_flow/maxCardinalityMatch-types-check.sql
new file mode 100644
index 0000000..565bd94
--- /dev/null
+++ b/pgtap/max_flow/maxCardinalityMatch-types-check.sql
@@ -0,0 +1,52 @@
+\i setup.sql
+SET client_min_messages TO WARNING;
+
+SELECT plan(7);
+
+
+SELECT has_function('pgr_maxcardinalitymatch');
+
+SELECT has_function('pgr_maxcardinalitymatch', ARRAY['text', 'boolean']);
+
+SELECT function_returns('pgr_maxcardinalitymatch', ARRAY['text', 'boolean'], 'setof record');
+
+-- Maximum cardinality matching
+PREPARE mcm_dir AS
+SELECT * FROM pgr_maxCardinalityMatch(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
+);
+
+PREPARE mcm_undir AS
+SELECT * FROM pgr_maxCardinalityMatch(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
+ directed := false
+);
+
+SELECT lives_ok('mcm_dir','directed');
+SELECT lives_ok('mcm_undir','undirected');
+
+PREPARE mcm_q AS
+SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge)::text AS t2,
+ pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4
+ FROM (
+ SELECT * FROM pgr_maxCardinalityMatch(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
+ ) ) AS a
+ limit 1
+;
+
+PREPARE mcm_v AS
+SELECT 'integer'::text AS t1,'bigint'::text AS t2,
+ 'bigint'::text AS t3, 'bigint'::text AS t4;
+
+SELECT set_eq('mcm_q', 'mcm_v','Expected returning, columns names & types');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxcardinalitymatch'$$,
+ $$SELECT '{"edges_sql","directed","seq","edge","source","target"}'::TEXT[] $$
+);
+
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/maxflow-group-innerQuery.sql b/pgtap/max_flow/maxflow-group-innerQuery.sql
new file mode 100644
index 0000000..04f346f
--- /dev/null
+++ b/pgtap/max_flow/maxflow-group-innerQuery.sql
@@ -0,0 +1,36 @@
+\i setup.sql
+
+SELECT plan(188);
+
+
+SELECT has_function('pgr_maxflow',
+ ARRAY['text', 'bigint', 'bigint']);
+SELECT has_function('pgr_maxflow',
+ ARRAY['text', 'bigint', 'anyarray']);
+SELECT has_function('pgr_maxflow',
+ ARRAY['text', 'anyarray', 'bigint']);
+SELECT has_function('pgr_maxflow',
+ ARRAY['text', 'anyarray', 'anyarray']);
+
+SELECT function_returns('pgr_maxflow',
+ ARRAY['text', 'bigint', 'bigint'],
+ 'bigint');
+SELECT function_returns('pgr_maxflow',
+ ARRAY['text', 'bigint', 'anyarray'],
+ 'bigint');
+SELECT function_returns('pgr_maxflow',
+ ARRAY['text', 'anyarray', 'bigint'],
+ 'bigint');
+SELECT function_returns('pgr_maxflow',
+ ARRAY['text', 'anyarray', 'anyarray'],
+ 'bigint');
+
+
+-- ONLY WORKS ON DIRECTED GRAPH
+SELECT style_max_flow('pgr_maxflow', ', 2, 3)');
+SELECT style_max_flow('pgr_maxflow', ', 2, ARRAY[3])');
+SELECT style_max_flow('pgr_maxflow', ', ARRAY[2], 3)');
+SELECT style_max_flow('pgr_maxflow', ', ARRAY[2], ARRAY[3])');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/maxflow-types-check.sql b/pgtap/max_flow/maxflow-types-check.sql
new file mode 100644
index 0000000..52cfbf3
--- /dev/null
+++ b/pgtap/max_flow/maxflow-types-check.sql
@@ -0,0 +1,118 @@
+\i setup.sql
+
+SELECT plan(21);
+
+SELECT has_function('pgr_maxflow');
+
+SELECT has_function('pgr_maxflow', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_maxflow', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_maxflow', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_maxflow', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT function_returns('pgr_maxflow', ARRAY[ 'text', 'bigint', 'bigint' ], 'bigint');
+SELECT function_returns('pgr_maxflow', ARRAY[ 'text', 'bigint', 'anyarray' ], 'bigint');
+SELECT function_returns('pgr_maxflow', ARRAY[ 'text', 'anyarray', 'bigint' ], 'bigint');
+SELECT function_returns('pgr_maxflow', ARRAY[ 'text', 'anyarray', 'anyarray' ], 'bigint');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflow'$$,
+ $$SELECT '{"edges_sql","source_vertices","sink_vertices"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflow'$$,
+ $$SELECT '{"edges_sql","source_vertices","sink_vertices"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflow'$$,
+ $$SELECT '{"edges_sql","source_vertices","sink_vertices"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_maxflow'$$,
+ $$SELECT '{"edges_sql","source_vertices","sink_vertices"}'::TEXT[] $$
+);
+
+
+-- pgr_maxflow works
+PREPARE t1 AS
+SELECT * FROM pgr_maxflow(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+);
+PREPARE t2 AS
+SELECT * FROM pgr_maxflow(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+);
+PREPARE t3 AS
+SELECT * FROM pgr_maxflow(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+);
+PREPARE t4 AS
+SELECT * FROM pgr_maxflow(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+);
+
+SELECT lives_ok('t1','pgr_pgr_maxflow(one to one)');
+SELECT lives_ok('t2','pgr_pgr_maxflow(one to many)');
+SELECT lives_ok('t3','pgr_pgr_maxflow(many to one)');
+SELECT lives_ok('t4','pgr_pgr_maxflow(many to many)');
+
+
+-- preparing for testing return types
+PREPARE all_return AS
+SELECT
+ 'bigint'::text AS t1;
+
+
+PREPARE q1 AS
+SELECT pg_typeof(pgr_maxflow)::text AS t1
+ FROM (
+ SELECT * FROM pgr_maxflow(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q2 AS
+SELECT pg_typeof(pgr_maxflow)::text AS t1
+ FROM (
+ SELECT * FROM pgr_maxflow(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+PREPARE q3 AS
+SELECT pg_typeof(pgr_maxflow)::text AS t1
+ FROM (
+ SELECT * FROM pgr_maxflow(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q4 AS
+SELECT pg_typeof(pgr_maxflow)::text AS t1
+ FROM (
+ SELECT * FROM pgr_maxflow(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+-- testing return types
+SELECT set_eq('q1', 'all_return','1 to 1: Expected returning, columns names & types');
+SELECT set_eq('q2', 'all_return','1 to many: Expected returning, columns names & types');
+SELECT set_eq('q3', 'all_return','many to 1: Expected returning, columns names & types');
+SELECT set_eq('q4', 'all_return','many to many: Expected returning, columns names & types');
+
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/pushRelabel-innerQuery.sql b/pgtap/max_flow/pushRelabel-innerQuery.sql
new file mode 100644
index 0000000..10c3546
--- /dev/null
+++ b/pgtap/max_flow/pushRelabel-innerQuery.sql
@@ -0,0 +1,36 @@
+\i setup.sql
+
+SELECT plan(188);
+
+
+SELECT has_function('pgr_pushrelabel',
+ ARRAY['text', 'bigint', 'bigint']);
+SELECT has_function('pgr_pushrelabel',
+ ARRAY['text', 'bigint', 'anyarray']);
+SELECT has_function('pgr_pushrelabel',
+ ARRAY['text', 'anyarray', 'bigint']);
+SELECT has_function('pgr_pushrelabel',
+ ARRAY['text', 'anyarray', 'anyarray']);
+
+SELECT function_returns('pgr_pushrelabel',
+ ARRAY['text', 'bigint', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_pushrelabel',
+ ARRAY['text', 'bigint', 'anyarray'],
+ 'setof record');
+SELECT function_returns('pgr_pushrelabel',
+ ARRAY['text', 'anyarray', 'bigint'],
+ 'setof record');
+SELECT function_returns('pgr_pushrelabel',
+ ARRAY['text', 'anyarray', 'anyarray'],
+ 'setof record');
+
+
+-- ONLY WORKS ON DIRECTED GRAPH
+SELECT style_max_flow('pgr_pushrelabel', ', 2, 3)');
+SELECT style_max_flow('pgr_pushrelabel', ', 2, ARRAY[3])');
+SELECT style_max_flow('pgr_pushrelabel', ', ARRAY[2], 3)');
+SELECT style_max_flow('pgr_pushrelabel', ', ARRAY[2], ARRAY[3])');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/max_flow/pushRelabel-types-check.sql b/pgtap/max_flow/pushRelabel-types-check.sql
new file mode 100644
index 0000000..106aa5b
--- /dev/null
+++ b/pgtap/max_flow/pushRelabel-types-check.sql
@@ -0,0 +1,143 @@
+\i setup.sql
+
+SELECT plan(21);
+
+SELECT has_function('pgr_pushrelabel');
+
+SELECT has_function('pgr_pushrelabel', ARRAY[ 'text', 'bigint', 'bigint' ]);
+SELECT has_function('pgr_pushrelabel', ARRAY[ 'text', 'anyarray', 'bigint' ]);
+SELECT has_function('pgr_pushrelabel', ARRAY[ 'text', 'bigint', 'anyarray' ]);
+SELECT has_function('pgr_pushrelabel', ARRAY[ 'text', 'anyarray', 'anyarray' ]);
+
+SELECT function_returns('pgr_pushrelabel', ARRAY[ 'text', 'bigint', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_pushrelabel', ARRAY[ 'text', 'bigint', 'anyarray' ], 'setof record');
+SELECT function_returns('pgr_pushrelabel', ARRAY[ 'text', 'anyarray', 'bigint' ], 'setof record');
+SELECT function_returns('pgr_pushrelabel', ARRAY[ 'text', 'anyarray', 'anyarray' ], 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_pushrelabel'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_pushrelabel'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_pushrelabel'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_pushrelabel'$$,
+ $$SELECT '{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[] $$
+);
+
+
+-- pgr_pushrelabel works
+PREPARE t1 AS
+SELECT * FROM pgr_pushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+);
+PREPARE t2 AS
+SELECT * FROM pgr_pushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+);
+PREPARE t3 AS
+SELECT * FROM pgr_pushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+);
+PREPARE t4 AS
+SELECT * FROM pgr_pushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+);
+
+SELECT lives_ok('t1','pgr_pgr_pushrelabel(one to one)');
+SELECT lives_ok('t2','pgr_pgr_pushrelabel(one to many)');
+SELECT lives_ok('t3','pgr_pgr_pushrelabel(many to one)');
+SELECT lives_ok('t4','pgr_pgr_pushrelabel(many to many)');
+
+
+-- preparing for testing return types
+PREPARE all_return AS
+SELECT
+ 'integer'::text AS t1,
+ 'bigint'::text AS t2,
+ 'bigint'::text AS t3,
+ 'bigint'::text AS t4,
+ 'bigint'::text AS t5,
+ 'bigint'::text AS t6;
+
+
+PREPARE q1 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_pushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q2 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_pushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ 3, ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+PREPARE q3 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_pushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], 5
+ ) ) AS a
+ limit 1;
+
+
+PREPARE q4 AS
+SELECT pg_typeof(seq)::text AS t1,
+ pg_typeof(edge)::text AS t2,
+ pg_typeof(start_vid)::text as t3,
+ pg_typeof(end_vid)::text as t4,
+ pg_typeof(flow)::text AS t5,
+ pg_typeof(residual_capacity)::text AS t6
+ FROM (
+ SELECT * FROM pgr_pushrelabel(
+ 'SELECT id, source, target, capacity, reverse_capacity FROM edge_table',
+ ARRAY[3], ARRAY[5]
+ ) ) AS a
+ limit 1
+;
+
+-- testing return types
+SELECT set_eq('q1', 'all_return','1 to 1: Expected returning, columns names & types');
+SELECT set_eq('q2', 'all_return','1 to many: Expected returning, columns names & types');
+SELECT set_eq('q3', 'all_return','many to 1: Expected returning, columns names & types');
+SELECT set_eq('q4', 'all_return','many to many: Expected returning, columns names & types');
+
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/pgtap/pickDeliver/order_id_is_neg1.sql b/pgtap/pickDeliver/order_id_is_neg1.sql
new file mode 100644
index 0000000..844e9e0
--- /dev/null
+++ b/pgtap/pickDeliver/order_id_is_neg1.sql
@@ -0,0 +1,30 @@
+
+\i setup.sql
+
+SELECT plan(2);
+
+SELECT * INTO results
+FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$);
+
+DECLARE q1 CURSOR FOR
+SELECT DISTINCT order_id
+FROM results
+WHERE stop_type IN (-1, 1, 6);
+
+SELECT results_eq(
+ 'q1'::refcursor,
+ ARRAY[ -1 ]::BIGINT[]
+);
+
+DECLARE q2 CURSOR FOR
+SELECT DISTINCT stop_type FROM results ORDER BY stop_type;
+
+SELECT results_eq(
+ 'q2'::refcursor,
+ ARRAY[ -1, 1, 2, 3, 6 ]::INTEGER[]
+);
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/pickDeliver/pickDeliver-VS-pickDeliverEuclidean.sql b/pgtap/pickDeliver/pickDeliver-VS-pickDeliverEuclidean.sql
new file mode 100644
index 0000000..bb94554
--- /dev/null
+++ b/pgtap/pickDeliver/pickDeliver-VS-pickDeliverEuclidean.sql
@@ -0,0 +1,37 @@
+
+\i setup.sql
+
+SELECT plan(1);
+SET client_min_messages TO ERROR;
+
+PREPARE pd AS
+SELECT seq, vehicle_seq, vehicle_id, stop_seq, stop_type,
+ order_id, cargo,
+ travel_time, arrival_time, wait_time, service_time, departure_time
+FROM _pgr_pickDeliver(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * from vehicles',
+ -- matrix query
+ 'WITH
+ A AS (
+ SELECT p_node_id AS id, p_x AS x, p_y AS y FROM orders
+ UNION
+ SELECT d_node_id AS id, d_x, d_y FROM orders
+ UNION
+ SELECT start_node_id, start_x, start_y FROM vehicles
+ )
+ SELECT A.id AS start_vid, B.id AS end_vid, sqrt( (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)) AS agg_cost
+ FROM A, A AS B WHERE A.id != B.id'
+ );
+
+PREPARE pd_e AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * from vehicles');
+
+SELECT set_eq('pd', 'pd_e');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/pickDeliver/pickDeliverEuclidean-innerquery.sql b/pgtap/pickDeliver/pickDeliverEuclidean-innerquery.sql
new file mode 100644
index 0000000..63743f7
--- /dev/null
+++ b/pgtap/pickDeliver/pickDeliverEuclidean-innerquery.sql
@@ -0,0 +1,261 @@
+\i setup.sql
+
+SELECT plan(92);
+SET client_min_messages TO ERROR;
+
+/* A call looks like this
+TODO select a smaller test, because each passing test takes about 19 seconds
+SELECT * INTO pickDeliverResults FROM _pgr_pickdeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$,
+ 30);
+*/
+
+SELECT has_function('_pgr_pickdelivereuclidean',
+ ARRAY['text', 'text', 'double precision', 'integer', 'integer']);
+
+SELECT function_returns('_pgr_pickdelivereuclidean',
+ ARRAY['text', 'text', 'double precision', 'integer', 'integer'],
+ 'setof record');
+
+/* testing the pick/deliver orders*/
+CREATE OR REPLACE FUNCTION test_anyInteger_orders(fn TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'select * from ' || fn || '($$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM orders $$, $$SELECT * FROM vehicles $$, max_cycles := 30)';
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+/* testing the pick/deliver orders*/
+CREATE OR REPLACE FUNCTION test_anyNumerical_orders(fn TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'select * from ' || fn || '($$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM orders $$, $$SELECT * FROM vehicles $$, max_cycles := 30)';
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+/*
+testing the pick/deliver vehicles
+*/
+CREATE OR REPLACE FUNCTION test_anyInteger_vehicles(fn TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'SELECT * FROM ' || fn || '($$ SELECT * FROM orders $$, $$SELECT ';
+
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM vehicles $$, max_cycles := 30)';
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+/*
+testing the pick/deliver vehicles
+ */
+CREATE OR REPLACE FUNCTION test_anyNumerical_vehicles(fn TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'SELECT * FROM ' || fn || '($$ SELECT * FROM orders $$, $$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM vehicles $$, max_cycles := 30)';
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+SELECT test_anyInteger_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'id');
+
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'demand');
+
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'p_x');
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'p_y');
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'p_open');
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'p_close');
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'p_service');
+
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'd_x');
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'd_y');
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'd_open');
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'd_close');
+SELECT test_anynumerical_orders('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'demand',
+ 'p_x', 'p_y', 'p_open', 'p_close', 'p_service',
+ 'd_x', 'd_y', 'd_open', 'd_close', 'd_service'],
+ 'd_service');
+
+/* Currently this are not used TODO add when they are used
+ 'end_x', 'end_y', 'end_open', 'end_close', 'end_service'],
+ 'speed' is optional defaults to 1
+ 'start_service' is optional defaults to 0
+*/
+SELECT test_anyInteger_vehicles('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'capacity',
+ 'start_x', 'start_y', 'start_open', 'start_close'],
+ 'id');
+SELECT test_anyNumerical_vehicles('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'capacity',
+ 'start_x', 'start_y', 'start_open', 'start_close'],
+ 'capacity');
+SELECT test_anyNumerical_vehicles('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'capacity',
+ 'start_x', 'start_y', 'start_open', 'start_close'],
+ 'start_x');
+SELECT test_anyNumerical_vehicles('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'capacity',
+ 'start_x', 'start_y', 'start_open', 'start_close'],
+ 'start_y');
+SELECT test_anyNumerical_vehicles('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'capacity',
+ 'start_x', 'start_y', 'start_open', 'start_close'],
+ 'start_open');
+SELECT test_anyNumerical_vehicles('_pgr_pickdelivereuclidean',
+ ARRAY['id', 'capacity',
+ 'start_x', 'start_y', 'start_open', 'start_close'],
+ 'start_close');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/pickDeliver/pickDeliverEuclidean_types_check.sql b/pgtap/pickDeliver/pickDeliverEuclidean_types_check.sql
new file mode 100644
index 0000000..6f6ba12
--- /dev/null
+++ b/pgtap/pickDeliver/pickDeliverEuclidean_types_check.sql
@@ -0,0 +1,65 @@
+
+\i setup.sql
+
+SELECT plan(4);
+
+
+SELECT has_function('_pgr_pickdelivereuclidean',
+ ARRAY['text','text', 'double precision', 'integer', 'integer']);
+SELECT function_returns('_pgr_pickdelivereuclidean',
+ ARRAY['text','text', 'double precision', 'integer', 'integer'],
+ 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = '_pgr_pickdelivereuclidean'$$,
+ $$SELECT '{"","","factor","max_cycles","initial_sol","seq","vehicle_seq","vehicle_id","stop_seq","stop_type","order_id","cargo",
+ "travel_time","arrival_time","wait_time","service_time","departure_time"}'::TEXT[] $$
+);
+
+
+PREPARE expected_types AS
+SELECT
+'integer'::text AS t1,
+'integer'::text AS t2,
+'bigint'::text AS t3,
+
+'integer'::text AS t4,
+'integer'::text AS t5,
+'bigint'::text AS t6,
+
+'double precision'::text AS t7,
+'double precision'::text AS t8,
+'double precision'::text AS t9,
+'double precision'::text AS t10,
+'double precision'::text AS t11,
+'double precision'::text AS t12;
+
+SELECT * INTO pickDeliverResults FROM _pgr_pickdeliverEuclidean(
+ $$SELECT * FROM orders $$,
+ $$SELECT * FROM vehicles $$
+ );
+
+
+PREPARE real_types AS
+SELECT
+ pg_typeof(seq)::text AS t1,
+ pg_typeof(vehicle_seq)::text AS t2,
+ pg_typeof(vehicle_id)::text AS t3,
+
+ pg_typeof(stop_seq)::text AS t4,
+ pg_typeof(stop_type)::text AS t5,
+ pg_typeof(order_id)::text AS t6,
+
+ pg_typeof(cargo)::text AS t7,
+ pg_typeof(travel_time)::text AS t8,
+ pg_typeof(arrival_time)::text AS t9,
+ pg_typeof(wait_time)::TEXT AS t10,
+ pg_typeof(service_time)::TEXT AS t11,
+ pg_typeof(departure_time)::TEXT AS t12
+FROM pickdeliverResults LIMIT 1;
+
+SELECT set_eq('expected_types', 'real_types','_pgr_pickdeliverEuclidean: SHOULD RETURN expected columns names & types');
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/pickDeliver/wrong_data_pickDeliverEuclidean.sql b/pgtap/pickDeliver/wrong_data_pickDeliverEuclidean.sql
new file mode 100644
index 0000000..b5ba7a0
--- /dev/null
+++ b/pgtap/pickDeliver/wrong_data_pickDeliverEuclidean.sql
@@ -0,0 +1,284 @@
+
+\i setup.sql
+
+SELECT plan(23);
+
+PREPARE q1 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$,
+ max_cycles := 30);
+
+
+SELECT lives_ok('q1', 'Original query should not fail');
+
+--------------------------------------
+-- testing wrong data on max_cycles
+--------------------------------------
+PREPARE q6 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$,
+ max_cycles := -1);
+
+PREPARE q61 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$,
+ max_cycles := 0);
+
+SELECT throws_ok('q6',
+ 'XX000',
+ 'Illegal value in parameter: max_cycles',
+ 'Should throw: max_cycles < 0');
+
+SELECT lives_ok('q61',
+ 'Should live: max_cycles == 0');
+
+
+--------------------------------------
+-- testing wrong data on initial_sol
+--------------------------------------
+PREPARE initsol1 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$,
+ initial_sol := -1);
+
+PREPARE initsol2 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$,
+ initial_sol := 7);
+
+PREPARE initsol3 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$,
+ initial_sol := 0);
+
+
+
+SELECT throws_ok('initsol1',
+ 'XX000',
+ 'Illegal value in parameter: initial_sol',
+ 'Should throw: initial_sol < 0');
+
+SELECT throws_ok('initsol2',
+ 'XX000',
+ 'Illegal value in parameter: initial_sol',
+ 'Should throw: initial_sol > 6');
+
+SELECT throws_ok('initsol3',
+ 'XX000',
+ 'Illegal value in parameter: initial_sol',
+ 'Should throw: initial_sol = 0');
+
+--------------------------------------
+-- testing wrong data on factor
+--------------------------------------
+PREPARE factor1 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$,
+ factor := -1);
+
+PREPARE factor2 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$,
+ factor := 0);
+
+PREPARE factor3 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$,
+ factor := 1);
+
+SELECT throws_ok('factor1',
+ 'XX000',
+ 'Illegal value in parameter: factor',
+ 'Should throw: factor < 0');
+
+SELECT throws_ok('factor2',
+ 'XX000',
+ 'Illegal value in parameter: factor',
+ 'Should throw: factor = 0');
+
+SELECT lives_ok('factor3',
+ 'Should live: factor >= 1');
+
+-- id | capacity | start_x | start_y | start_open_t | start_close_t | start_service_t
+-- | end_x | end_y | end_open_t | end_close_t | end_service_t
+
+
+PREPARE vehiles0 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT id AS vid FROM vehicles$$);
+
+PREPARE vehiles1 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT id FROM vehicles$$);
+
+PREPARE vehiles2 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT id, capacity FROM vehicles$$);
+
+PREPARE vehiles3 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT id, capacity, start_x FROM vehicles$$);
+
+PREPARE vehiles4 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT id, capacity, start_x, start_y FROM vehicles$$);
+
+SELECT throws_ok('vehiles0',
+ 'XX000',
+ $$Column 'id' not Found$$,
+ 'Should throw: id is not included in data');
+
+SELECT throws_ok('vehiles1',
+ 'XX000',
+ $$Column 'capacity' not Found$$,
+ 'Should throw: capacity is not included in data');
+
+SELECT throws_ok('vehiles2',
+ 'XX000',
+ $$Column 'start_x' not Found$$,
+ 'Should throw: start_x is not included in data');
+
+SELECT throws_ok('vehiles3',
+ 'XX000',
+ $$Column 'start_y' not Found$$,
+ 'Should throw: start_y is not included in data');
+
+SELECT lives_ok('vehiles4',
+ 'Should live: rest of parameters are optional');
+
+-- end_open and end_close should exist together or not at all
+
+PREPARE vehiles5 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT *, 10 AS end_close FROM vehicles$$);
+
+PREPARE vehiles6 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT *, 10 AS end_open FROM vehicles$$);
+
+-- end_x and end_y should exist together or not at all
+
+PREPARE vehiles7 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT *, 10 AS end_x FROM vehicles$$);
+
+PREPARE vehiles8 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT *, 10 AS end_open FROM vehicles$$);
+
+SELECT throws_ok('vehiles5',
+ 'XX000',
+ $$Column 'end_open' not Found$$,
+ 'vehiles5, Should throw: end_close found, but not end_open');
+
+SELECT throws_ok('vehiles6',
+ 'XX000',
+ $$Column 'end_close' not Found$$,
+ 'vehiles6, Should throw: end_open found, but not end_close');
+
+SELECT throws_ok('vehiles7',
+ 'XX000',
+ $$Column 'end_y' not Found$$,
+ 'vehiles7, Should throw: end_x found, but not end_y');
+
+SELECT throws_ok('vehiles8',
+ 'XX000',
+ $$Column 'end_close' not Found$$,
+ 'vehiles8, Should throw: end_y found, but not end_x');
+
+---------------------
+-- start_open > start_close
+---------------------
+UPDATE vehicles SET start_open = 5, start_close = 4 WHERE id = 1;
+
+PREPARE vehicles9 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$);
+
+SELECT throws_ok('vehicles9',
+ 'XX000',
+ 'Illegal values found on vehicle',
+ 'vehicles9, Should throw: start_open > start_close');
+
+UPDATE vehicles SET start_open = 0, start_close = 50 WHERE id = 1;
+
+---------------------
+-- end_open > end_close
+---------------------
+PREPARE vehicles10 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT *, 5 AS end_open, 4 AS end_close FROM vehicles$$);
+
+SELECT throws_ok('vehicles10',
+ 'XX000',
+ 'Illegal values found on vehicle',
+ 'vehicles10, Should throw: end_open > end_close');
+
+--------------------------------------
+-- testing wrong data on orders
+--------------------------------------
+
+---------------------
+-- d_open > d_close
+---------------------
+UPDATE orders SET d_close = 5 WHERE id = 1;
+
+PREPARE orders1 AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$);
+
+SELECT throws_ok('orders1',
+ 'XX000',
+ 'Order not feasible on any truck was found',
+ 'orders1, Should throw: d_open > d_close');
+
+UPDATE orders SET d_close = 15 WHERE id = 1;
+
+---------------------
+-- p_open > p_close
+---------------------
+UPDATE orders SET p_close = 1 WHERE id = 1;
+
+SELECT throws_ok('orders1',
+ 'XX000',
+ 'Order not feasible on any truck was found',
+ 'orders1, Should throw: p_open > p_close');
+
+UPDATE orders SET p_close = 10 WHERE id = 1;
+
+---------------------
+-- demand <= 0
+---------------------
+
+UPDATE orders SET demand= -20 WHERE id =1;
+
+SELECT throws_ok('orders1',
+ 'XX000',
+ 'Order not feasible on any truck was found',
+ 'Should throw: demand(PICKUP) < 0');
+
+UPDATE orders SET demand= 10 WHERE id =11;
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/topology/test/pgtap/analyzeGraph.test.sql b/pgtap/topology/analyzeGraph.test.sql
similarity index 100%
rename from src/topology/test/pgtap/analyzeGraph.test.sql
rename to pgtap/topology/analyzeGraph.test.sql
diff --git a/src/topology/test/pgtap/analyzeOneWay.test.sql b/pgtap/topology/analyzeOneWay.test.sql
similarity index 100%
rename from src/topology/test/pgtap/analyzeOneWay.test.sql
rename to pgtap/topology/analyzeOneWay.test.sql
diff --git a/src/topology/test/pgtap/createTopology.test.sql b/pgtap/topology/createTopology.test.sql
similarity index 100%
rename from src/topology/test/pgtap/createTopology.test.sql
rename to pgtap/topology/createTopology.test.sql
diff --git a/src/topology/test/pgtap/createVerticesTable.test.sql b/pgtap/topology/createVerticesTable.test.sql
similarity index 100%
rename from src/topology/test/pgtap/createVerticesTable.test.sql
rename to pgtap/topology/createVerticesTable.test.sql
diff --git a/src/topology/test/pgtap/incrementalCreateTopology.test.sql b/pgtap/topology/incrementalCreateTopology.test.sql
similarity index 100%
rename from src/topology/test/pgtap/incrementalCreateTopology.test.sql
rename to pgtap/topology/incrementalCreateTopology.test.sql
diff --git a/src/topology/test/pgtap/nodeNetwork.test.sql b/pgtap/topology/nodeNetwork.test.sql
similarity index 100%
rename from src/topology/test/pgtap/nodeNetwork.test.sql
rename to pgtap/topology/nodeNetwork.test.sql
diff --git a/src/trsp/test/pgtap/blank-restrictions-compare-dijkstra.test.sql b/pgtap/trsp/blank-restrictions-compare-dijkstra.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/blank-restrictions-compare-dijkstra.test.sql
rename to pgtap/trsp/blank-restrictions-compare-dijkstra.test.sql
diff --git a/src/trsp/test/pgtap/emptyset-from-i-to-i.test.sql b/pgtap/trsp/emptyset-from-i-to-i.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/emptyset-from-i-to-i.test.sql
rename to pgtap/trsp/emptyset-from-i-to-i.test.sql
diff --git a/src/trsp/test/pgtap/from1to3.test.sql b/pgtap/trsp/from1to3.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/from1to3.test.sql
rename to pgtap/trsp/from1to3.test.sql
diff --git a/src/trsp/test/pgtap/from3to4-directed.test.sql b/pgtap/trsp/from3to4-directed.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/from3to4-directed.test.sql
rename to pgtap/trsp/from3to4-directed.test.sql
diff --git a/src/trsp/test/pgtap/no-restrictions-compare-dijkstra-directed.test.sql b/pgtap/trsp/no-restrictions-compare-dijkstra-directed.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/no-restrictions-compare-dijkstra-directed.test.sql
rename to pgtap/trsp/no-restrictions-compare-dijkstra-directed.test.sql
diff --git a/src/trsp/test/pgtap/no-restrictions-compare-dijkstra-undirected.test.sql b/pgtap/trsp/no-restrictions-compare-dijkstra-undirected.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/no-restrictions-compare-dijkstra-undirected.test.sql
rename to pgtap/trsp/no-restrictions-compare-dijkstra-undirected.test.sql
diff --git a/src/trsp/test/pgtap/trsp-any-00.test.sql b/pgtap/trsp/trsp-any-00.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/trsp-any-00.test.sql
rename to pgtap/trsp/trsp-any-00.test.sql
diff --git a/src/trsp/test/pgtap/trsp-any-01.test.sql b/pgtap/trsp/trsp-any-01.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/trsp-any-01.test.sql
rename to pgtap/trsp/trsp-any-01.test.sql
diff --git a/src/trsp/test/pgtap/trsp-issue244.test.sql b/pgtap/trsp/trsp-issue244.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/trsp-issue244.test.sql
rename to pgtap/trsp/trsp-issue244.test.sql
diff --git a/src/trsp/test/pgtap/viaV-no-restrictions-compare-dijkstra-directed.test.sql b/pgtap/trsp/viaV-no-restrictions-compare-dijkstra-directed.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/viaV-no-restrictions-compare-dijkstra-directed.test.sql
rename to pgtap/trsp/viaV-no-restrictions-compare-dijkstra-directed.test.sql
diff --git a/src/trsp/test/pgtap/viaV-no-restrictions-compare-dijkstra-undirected.test.sql b/pgtap/trsp/viaV-no-restrictions-compare-dijkstra-undirected.test.sql
similarity index 100%
rename from src/trsp/test/pgtap/viaV-no-restrictions-compare-dijkstra-undirected.test.sql
rename to pgtap/trsp/viaV-no-restrictions-compare-dijkstra-undirected.test.sql
diff --git a/src/tsp/test/pgtap/pgr_TSP_types_check.sql b/pgtap/tsp/pgr_TSP_types_check.sql
similarity index 100%
rename from src/tsp/test/pgtap/pgr_TSP_types_check.sql
rename to pgtap/tsp/pgr_TSP_types_check.sql
diff --git a/src/tsp/test/pgtap/pgr_eucledianTSP_types_check.sql b/pgtap/tsp/pgr_eucledianTSP_types_check.sql
similarity index 100%
rename from src/tsp/test/pgtap/pgr_eucledianTSP_types_check.sql
rename to pgtap/tsp/pgr_eucledianTSP_types_check.sql
diff --git a/src/withPoints/test/pgtap/many_to_many_eq_one_to_one_withPoint.test.sql b/pgtap/withPoints/many_to_many_eq_one_to_one_withPoint.test.sql
similarity index 100%
rename from src/withPoints/test/pgtap/many_to_many_eq_one_to_one_withPoint.test.sql
rename to pgtap/withPoints/many_to_many_eq_one_to_one_withPoint.test.sql
diff --git a/src/withPoints/test/pgtap/many_to_one_eq_one_to_one_withPoint.test.sql b/pgtap/withPoints/many_to_one_eq_one_to_one_withPoint.test.sql
similarity index 100%
rename from src/withPoints/test/pgtap/many_to_one_eq_one_to_one_withPoint.test.sql
rename to pgtap/withPoints/many_to_one_eq_one_to_one_withPoint.test.sql
diff --git a/src/withPoints/test/pgtap/one_to_many_eq_one_to_one_withPoint.test.sql b/pgtap/withPoints/one_to_many_eq_one_to_one_withPoint.test.sql
similarity index 100%
rename from src/withPoints/test/pgtap/one_to_many_eq_one_to_one_withPoint.test.sql
rename to pgtap/withPoints/one_to_many_eq_one_to_one_withPoint.test.sql
diff --git a/src/withPoints/test/pgtap/one_to_many_withPoint.test.sql b/pgtap/withPoints/one_to_many_withPoint.test.sql
similarity index 100%
rename from src/withPoints/test/pgtap/one_to_many_withPoint.test.sql
rename to pgtap/withPoints/one_to_many_withPoint.test.sql
diff --git a/src/withPoints/test/pgtap/one_to_one_withPoint.test.sql b/pgtap/withPoints/one_to_one_withPoint.test.sql
similarity index 100%
rename from src/withPoints/test/pgtap/one_to_one_withPoint.test.sql
rename to pgtap/withPoints/one_to_one_withPoint.test.sql
diff --git a/pgtap/withPoints/withPoints-group-innerQuery.sql b/pgtap/withPoints/withPoints-group-innerQuery.sql
new file mode 100644
index 0000000..f5f625f
--- /dev/null
+++ b/pgtap/withPoints/withPoints-group-innerQuery.sql
@@ -0,0 +1,48 @@
+\i setup.sql
+
+SELECT plan(548);
+SET client_min_messages TO ERROR;
+
+
+SELECT has_function('pgr_withpoints',
+ ARRAY['text', 'text', 'bigint', 'bigint', 'boolean','character', 'boolean']);
+SELECT has_function('pgr_withpoints',
+ ARRAY['text', 'text', 'bigint', 'anyarray', 'boolean','character', 'boolean']);
+SELECT has_function('pgr_withpoints',
+ ARRAY['text', 'text', 'anyarray', 'bigint', 'boolean','character', 'boolean']);
+SELECT has_function('pgr_withpoints',
+ ARRAY['text', 'text', 'anyarray', 'anyarray', 'boolean','character', 'boolean']);
+
+SELECT function_returns('pgr_withpoints',
+ ARRAY['text', 'text', 'bigint', 'bigint', 'boolean','character', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_withpoints',
+ ARRAY['text', 'text', 'bigint', 'anyarray', 'boolean','character', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_withpoints',
+ ARRAY['text', 'text', 'anyarray', 'bigint', 'boolean','character', 'boolean'],
+ 'setof record');
+SELECT function_returns('pgr_withpoints',
+ ARRAY['text', 'text', 'anyarray', 'anyarray', 'boolean','character', 'boolean'],
+ 'setof record');
+
+
+-- DIRECTED
+SELECT style_withpoints('pgr_withpoints', ', 2, 3)');
+SELECT style_withpoints('pgr_withpoints', ', 2, ARRAY[3])');
+SELECT style_withpoints('pgr_withpoints', ', ARRAY[2], 3)');
+SELECT style_withpoints('pgr_withpoints', ', ARRAY[2], ARRAY[3])');
+SELECT style_withpoints('pgr_withpoints', ', 2, 3, true)');
+SELECT style_withpoints('pgr_withpoints', ', 2, ARRAY[3], true)');
+SELECT style_withpoints('pgr_withpoints', ', ARRAY[2], 3, true)');
+SELECT style_withpoints('pgr_withpoints', ', ARRAY[2], ARRAY[3], true)');
+-- UNDIRECTED
+SELECT style_withpoints('pgr_withpoints', ', 2, 3, false)');
+SELECT style_withpoints('pgr_withpoints', ', 2, ARRAY[3], false)');
+SELECT style_withpoints('pgr_withpoints', ', ARRAY[2], 3, false)');
+SELECT style_withpoints('pgr_withpoints', ', ARRAY[2], ARRAY[3], false)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/pgtap/withPoints/withPointsCost-group-innerQuery.sql b/pgtap/withPoints/withPointsCost-group-innerQuery.sql
new file mode 100644
index 0000000..29ed212
--- /dev/null
+++ b/pgtap/withPoints/withPointsCost-group-innerQuery.sql
@@ -0,0 +1,47 @@
+\i setup.sql
+
+SELECT plan(548);
+SET client_min_messages TO ERROR;
+
+
+SELECT has_function('pgr_withpointscost',
+ ARRAY['text', 'text', 'bigint', 'bigint', 'boolean','character']);
+SELECT has_function('pgr_withpointscost',
+ ARRAY['text', 'text', 'bigint', 'anyarray', 'boolean','character']);
+SELECT has_function('pgr_withpointscost',
+ ARRAY['text', 'text', 'anyarray', 'bigint', 'boolean','character']);
+SELECT has_function('pgr_withpointscost',
+ ARRAY['text', 'text', 'anyarray', 'anyarray', 'boolean','character']);
+
+SELECT function_returns('pgr_withpointscost',
+ ARRAY['text', 'text', 'bigint', 'bigint', 'boolean','character'],
+ 'setof record');
+SELECT function_returns('pgr_withpointscost',
+ ARRAY['text', 'text', 'bigint', 'anyarray', 'boolean','character'],
+ 'setof record');
+SELECT function_returns('pgr_withpointscost',
+ ARRAY['text', 'text', 'anyarray', 'bigint', 'boolean','character'],
+ 'setof record');
+SELECT function_returns('pgr_withpointscost',
+ ARRAY['text', 'text', 'anyarray', 'anyarray', 'boolean','character'],
+ 'setof record');
+
+
+-- DIRECTED
+SELECT style_withpoints('pgr_withpointscost', ', 2, 3)');
+SELECT style_withpoints('pgr_withpointscost', ', 2, ARRAY[3])');
+SELECT style_withpoints('pgr_withpointscost', ', ARRAY[2], 3)');
+SELECT style_withpoints('pgr_withpointscost', ', ARRAY[2], ARRAY[3])');
+SELECT style_withpoints('pgr_withpointscost', ', 2, 3, true)');
+SELECT style_withpoints('pgr_withpointscost', ', 2, ARRAY[3], true)');
+SELECT style_withpoints('pgr_withpointscost', ', ARRAY[2], 3, true)');
+SELECT style_withpoints('pgr_withpointscost', ', ARRAY[2], ARRAY[3], true)');
+-- UNDIRECTED
+SELECT style_withpoints('pgr_withpointscost', ', 2, 3, false)');
+SELECT style_withpoints('pgr_withpointscost', ', 2, ARRAY[3], false)');
+SELECT style_withpoints('pgr_withpointscost', ', ARRAY[2], 3, false)');
+SELECT style_withpoints('pgr_withpointscost', ', ARRAY[2], ARRAY[3], false)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
new file mode 100644
index 0000000..3d9ac57
--- /dev/null
+++ b/sql/CMakeLists.txt
@@ -0,0 +1,102 @@
+#
+# Format convention
+# - command (lower case)
+# - VARIABLE (upper case)
+# (http://www.cmake.org/cmake/help/v2.8.12/cmake.html)
+#
+
+
+
+#set (PgRouting_DEBUG "1")
+
+#-------------------
+# add the signatrues subdirectory
+#-------------------
+
+add_subdirectory(sigs)
+
+
+#-------------------
+# From the parent get the subdirectories that have the SQL files
+#
+# configuring the PgRouting_SQL_FILES variable
+#-------------------
+
+set(MODULE_PATHNAME "$libdir/libpgrouting-${PGROUTING_VERSION_MAJOR}.${PGROUTING_VERSION_MINOR}")
+
+foreach (subdir ${PgRouting_SQL_DIRECTORIES})
+ add_subdirectory(${subdir})
+endforeach()
+
+if (PgRouting_DEBUG)
+ message(STATUS "PgRouting_SQL_FILES=")
+ foreach (f ${PgRouting_SQL_FILES})
+ message(STATUS ${f})
+ endforeach()
+endif()
+
+
+
+#-------------------
+# TARGET: PgRouting_SQL_FILE
+#
+# Builds: pgrouting--${PGROUTING_VERSION}.sql
+#
+# add the scripts subdirectory
+# the variable ${PgRouting_SQL_FILES} should already be set at this point
+#
+# has the perl for building the current sql file
+# has the perl for building the update files
+#-------------------
+
+set(PgRouting_CURRENT_SQL_FILE "pgrouting--${PGROUTING_VERSION}.sql")
+
+# subdirectory that has the perl files
+add_subdirectory(scripts)
+
+
+
+add_custom_command(
+ OUTPUT ${PgRouting_CURRENT_SQL_FILE}
+ COMMAND ${PERL_EXECUTABLE} ./scripts/build-extension-file.pl '${PgRouting_SQL_FILES}'
+ DEPENDS
+ scripts/build-extension-file.pl
+ ${PgRouting_SQL_FILES}
+ )
+
+add_custom_target(PgRouting_SQL_FILE ALL
+ DEPENDS
+ ${PgRouting_CURRENT_SQL_FILE}
+ )
+
+#-------------------
+# TARGET: update_files
+#-------------------
+
+if (PgRouting_DEBUG)
+ message(STATUS "OLD_SIGNATURES=")
+ foreach (s ${OLD_SIGNATURES})
+ message(STATUS ${s})
+ endforeach()
+endif()
+
+foreach (old_s ${OLD_SIGNATURES})
+ SET (UPDATE_FILES ${UPDATE_FILES} pgrouting--${old_s}--${PGROUTING_VERSION}.sql)
+ SET (PgRouting_SQL_FILES_TO_INSTALL ${PgRouting_SQL_FILES_TO_INSTALL} "${CMAKE_CURRENT_BINARY_DIR}/pgrouting--${old_s}--${PGROUTING_VERSION}.sql")
+ add_custom_command(
+ OUTPUT pgrouting--${old_s}--${PGROUTING_VERSION}.sql
+ COMMAND ${PERL_EXECUTABLE} ./scripts/build-extension-update-files1.pl ${old_s} ${PgRouting_DEBUG}
+ DEPENDS
+ ./scripts/build-extension-update-files1.pl
+ ${PgRouting_CURRENT_SQL_FILE}
+ PgRouting_SQL_FILE
+ ./sigs/pgrouting--${old_s}.sig
+ )
+endforeach()
+
+add_custom_target(update_files ALL
+ DEPENDS
+ ${UPDATE_FILES}
+ )
+
+SET(PgRouting_SQL_FILES_TO_INSTALL ${PgRouting_SQL_FILES_TO_INSTALL} ${CMAKE_CURRENT_BINARY_DIR}/${PgRouting_CURRENT_SQL_FILE} "${CMAKE_CURRENT_BINARY_DIR}/common/pgrouting.control" PARENT_SCOPE)
diff --git a/sql/allpairs/CMakeLists.txt b/sql/allpairs/CMakeLists.txt
new file mode 100644
index 0000000..3d57d17
--- /dev/null
+++ b/sql/allpairs/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ johnson.sql
+ floydWarshall.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/allpairs/floydWarshall.sql b/sql/allpairs/floydWarshall.sql
new file mode 100644
index 0000000..94514cb
--- /dev/null
+++ b/sql/allpairs/floydWarshall.sql
@@ -0,0 +1,36 @@
+/*PGR-GNU*****************************************************************
+
+File: floydWarshall.sql
+
+Template:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function developer:
+Copyright (c) 2013 Vicky Vergara
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
diff --git a/sql/allpairs/johnson.sql b/sql/allpairs/johnson.sql
new file mode 100644
index 0000000..211f320
--- /dev/null
+++ b/sql/allpairs/johnson.sql
@@ -0,0 +1,36 @@
+/*PGR-GNU*****************************************************************
+
+File: johnson.sql
+
+Template:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function developer:
+Copyright (c) 2013 Vicky Vergara
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'johnson'
+ LANGUAGE c VOLATILE;
+
diff --git a/sql/alpha_shape/CMakeLists.txt b/sql/alpha_shape/CMakeLists.txt
new file mode 100644
index 0000000..12eb9a4
--- /dev/null
+++ b/sql/alpha_shape/CMakeLists.txt
@@ -0,0 +1,11 @@
+
+SET(LOCAL_FILES
+ alpha_shape.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/alpha_shape/alpha_shape.sql b/sql/alpha_shape/alpha_shape.sql
new file mode 100644
index 0000000..2b16411
--- /dev/null
+++ b/sql/alpha_shape/alpha_shape.sql
@@ -0,0 +1,100 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Copyright (c) 2006-2007 Anton A. Patrushev, Orkney, Inc.
+Copyright (c) 2005 Sylvain Pasche,
+Mail: project at 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*/
+
+/*
+-----------------------------------------------------------------------
+-- Core function for alpha shape computation.
+-- The sql should return vertex ids and x,y values. Return ordered
+-- vertex ids.
+-----------------------------------------------------------------------
+*/
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '${MODULE_PATHNAME}', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+/*
+----------------------------------------------------------
+-- Draws an alpha shape around given set of points.
+-- ** This should be rewritten as an aggregate. **
+----------------------------------------------------------
+*/
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
diff --git a/sql/astar/CMakeLists.txt b/sql/astar/CMakeLists.txt
new file mode 100644
index 0000000..6e70f96
--- /dev/null
+++ b/sql/astar/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(LOCAL_FILES
+ _astar.sql
+ astar.sql
+ astarCost.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/astar/_astar.sql b/sql/astar/_astar.sql
new file mode 100644
index 0000000..2b59f4e
--- /dev/null
+++ b/sql/astar/_astar.sql
@@ -0,0 +1,51 @@
+/*PGR-GNU*****************************************************************
+File: astarV3.0.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'${MODULE_PATHNAME}', 'astarManyToMany'
+LANGUAGE c VOLATILE;
diff --git a/sql/astar/astar.sql b/sql/astar/astar.sql
new file mode 100644
index 0000000..7abc805
--- /dev/null
+++ b/sql/astar/astar.sql
@@ -0,0 +1,137 @@
+/*PGR-GNU*****************************************************************
+File: astar.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
diff --git a/sql/astar/astarCost.sql b/sql/astar/astarCost.sql
new file mode 100644
index 0000000..a87e188
--- /dev/null
+++ b/sql/astar/astarCost.sql
@@ -0,0 +1,126 @@
+/*PGR-GNU*****************************************************************
+File: astar.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
diff --git a/sql/bdAstar/CMakeLists.txt b/sql/bdAstar/CMakeLists.txt
new file mode 100644
index 0000000..6989d1c
--- /dev/null
+++ b/sql/bdAstar/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(LOCAL_FILES
+ _bdAstar.sql
+ bdAstar.sql
+ bdAstarCost.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/bdAstar/_bdAstar.sql b/sql/bdAstar/_bdAstar.sql
new file mode 100644
index 0000000..12bc8d1
--- /dev/null
+++ b/sql/bdAstar/_bdAstar.sql
@@ -0,0 +1,49 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
diff --git a/sql/bdAstar/bdAstar.sql b/sql/bdAstar/bdAstar.sql
new file mode 100644
index 0000000..29a4d3d
--- /dev/null
+++ b/sql/bdAstar/bdAstar.sql
@@ -0,0 +1,156 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
diff --git a/sql/bdAstar/bdAstarCost.sql b/sql/bdAstar/bdAstarCost.sql
new file mode 100644
index 0000000..dfbd964
--- /dev/null
+++ b/sql/bdAstar/bdAstarCost.sql
@@ -0,0 +1,118 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
diff --git a/sql/bdDijkstra/CMakeLists.txt b/sql/bdDijkstra/CMakeLists.txt
new file mode 100644
index 0000000..2e0ac2f
--- /dev/null
+++ b/sql/bdDijkstra/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(LOCAL_FILES
+ _bdDijkstra.sql
+ bdDijkstra.sql
+ bdDijkstraCost.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/bdDijkstra/_bdDijkstra.sql b/sql/bdDijkstra/_bdDijkstra.sql
new file mode 100644
index 0000000..4152a66
--- /dev/null
+++ b/sql/bdDijkstra/_bdDijkstra.sql
@@ -0,0 +1,45 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'${MODULE_PATHNAME}', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
diff --git a/sql/bdDijkstra/bdDijkstra.sql b/sql/bdDijkstra/bdDijkstra.sql
new file mode 100644
index 0000000..b7dfea2
--- /dev/null
+++ b/sql/bdDijkstra/bdDijkstra.sql
@@ -0,0 +1,136 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
diff --git a/sql/bdDijkstra/bdDijkstraCost.sql b/sql/bdDijkstra/bdDijkstraCost.sql
new file mode 100644
index 0000000..41fee71
--- /dev/null
+++ b/sql/bdDijkstra/bdDijkstraCost.sql
@@ -0,0 +1,100 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
diff --git a/sql/common/CMakeLists.txt b/sql/common/CMakeLists.txt
new file mode 100644
index 0000000..e2a8b77
--- /dev/null
+++ b/sql/common/CMakeLists.txt
@@ -0,0 +1,20 @@
+
+SET(LOCAL_FILES
+ pgRouting-header.sql
+ pgrouting-types.sql
+ pgrouting_version.sql
+ pgrouting_utilities.sql
+ pgr_parameter_check.sql
+ utilities_pgr.sql
+ createIndex.sql
+ _point_toId.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
+
+configure_file(pgrouting.control pgrouting.control)
diff --git a/sql/common/_point_toId.sql b/sql/common/_point_toId.sql
new file mode 100644
index 0000000..02b332a
--- /dev/null
+++ b/sql/common/_point_toId.sql
@@ -0,0 +1,81 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Author: Stephen Woodbridge <woodbri at imaptools.com>
+Author: Vicky Vergara <vicky_vergara at hotmail,com>
+Mail: project at 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*/
+/*
+.. function:: _pgr_pointToId(point geometry, tolerance double precision,vname text,srid integer)
+Using tolerance to determine if its an existing point:
+ - Inserts a point into the vertices table "vertname" with the srid "srid",
+and returns
+ - the id of the new point
+ - the id of the existing point.
+
+Tolerance is the minimal distance between existing points and the new point to create a new point.
+
+Last changes: 2013-03-22
+
+HISTORY
+Last changes: 2013-03-22
+2013-08-19: handling schemas
+*/
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
diff --git a/sql/common/createIndex.sql b/sql/common/createIndex.sql
new file mode 100644
index 0000000..71fe2ef
--- /dev/null
+++ b/sql/common/createIndex.sql
@@ -0,0 +1,115 @@
+/*PGR-GNU*****************************************************************
+
+ FILE: createIndex.sql
+
+ Copyright (c) 2014 Celia Virginia Vergara Castillo
+ vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+
+/************************************************************************
+.. function:: _pgr_createIndex(tab, col,indextype)
+ _pgr_createIndex(sname,tname,colname,indextypes)
+
+ if the column is not indexed it creates a 'gist' index otherwise a 'btree' index
+ Examples:
+ * select _pgr_createIndex('tab','col','btree');
+ * select _pgr_createIndex('myschema','mytable','col','gist');
+ * perform 'select _pgr_createIndex('||quote_literal('tab')||','||quote_literal('col')||','||quote_literal('btree'))' ;
+ * perform 'select _pgr_createIndex('||quote_literal('myschema')||','||quote_literal('mytable')||','||quote_literal('col')||','||quote_literal('gist')')' ;
+ Precondition:
+ sname.tname.colname is a valid column on table tname in schema sname
+ indext is the indexType btree or gist
+ Postcondition:
+ sname.tname.colname its indexed using the indextype
+
+
+ Author: Vicky Vergara <vicky_vergara at hotmail.com>>
+
+ HISTORY
+ Created: 2014/JUL/28
+************************************************************************/
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
diff --git a/sql/common/findClosestEdge.sql b/sql/common/findClosestEdge.sql
new file mode 100644
index 0000000..562cd02
--- /dev/null
+++ b/sql/common/findClosestEdge.sql
@@ -0,0 +1,100 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*
+ * pgr_findClosestEdge(edges_sql text, pnt geometry, tol float8)
+ *
+ * Given and table of edges with a spatial index on the_geom
+ * and a point geometry search for the closest edge within tol distance to the edges
+ * then compute the projection of the point onto the line segment and select source or target
+ * based on whether the projected point is closer to the respective end and return source or target.
+ * If no edge is within tol distance then return -1
+ IF az > pi()/2 AND az < pi() OR az > 3 * pi()/2 THEN - then to the right
+*/
+
+CREATE OR REPLACE FUNCTION pgr_findClosestEdge(
+ edges_sql text,
+ point_geom geometry,
+ tolerance float8,
+
+ OUT edge_id BIGINT,
+ OUT fraction FLOAT,
+ OUT side CHAR)
+ returns SETOF RECORD AS
+$body$
+DECLARE
+ safe_sql text;
+ sql text;
+ rec RECORD;
+BEGIN
+
+ IF (tolerance < 0 ) THEN
+ RAISE EXCEPTION 'Invalid value for tolerance';
+ END IF;
+
+ safe_sql = 'SELECT * from ('|| edges_sql ||' ) AS __a__';
+
+ BEGIN
+ EXECUTE safe_sql || ' LIMIT 1' into rec;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = edges_sql;
+ END;
+
+ BEGIN
+ EXECUTE 'SELECT id, the_geom from ('||safe_sql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, the_geom';
+ END;
+
+ sql ='
+ WITH
+ safesql AS (' || safe_sql || '),
+ close_ones AS
+ (SELECT id, the_geom AS line,
+ ST_Distance(the_geom,' || quote_literal(point_geom::TEXT) ||'::geometry ) AS distance,
+ ST_ClosestPoint(the_geom,' || quote_literal(point_geom::TEXT) || '::geometry) AS blade
+ FROM safesql
+ WHERE ST_DWithin(the_geom,' || quote_literal(point_geom::TEXT) ||'::geometry, ' || tolerance || ')),
+ closest_ones AS
+ (SELECT min(distance) min_dist FROM close_ones),
+ third_q AS
+ (SELECT DISTINCT(id) id, distance, line, blade FROM close_ones WHERE distance = (select min_dist from closest_ones) ORDER BY id LIMIT 1),
+ dump_values AS
+ (SELECT id,
+ (ST_length(ST_GeometryN(st_split(line, blade),1))/ST_length(line))::FLOAT AS fraction,
+ (line << ' || quote_literal(point_geom::TEXT) || '::geometry) as rightSide
+ FROM third_q)
+ SELECT id::BIGINT,
+ fraction::FLOAT,
+ (CASE WHEN rightSide THEN ''r'' ELSE ''l'' END)::char FROM dump_values';
+
+ RETURN query EXECUTE sql;
+
+END;
+$body$
+ language plpgsql volatile
+ cost 5;
+
diff --git a/sql/common/pgRouting-header.sql b/sql/common/pgRouting-header.sql
new file mode 100644
index 0000000..df60227
--- /dev/null
+++ b/sql/common/pgRouting-header.sql
@@ -0,0 +1,37 @@
+\echo Use "CREATE EXTENSION pgrouting" to load this file. \quit
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
diff --git a/sql/common/pgr_parameter_check.sql b/sql/common/pgr_parameter_check.sql
new file mode 100644
index 0000000..004e579
--- /dev/null
+++ b/sql/common/pgr_parameter_check.sql
@@ -0,0 +1,164 @@
+/*PGR-GNU*****************************************************************
+
+File: pgr_parameter_check.sql
+
+Copyright (c) 2014 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+/*
+-----------------------------------------------------------------------
+-- Function _pgr_parameter_check
+-- Check's the parameters type of the sql input
+-----------------------------------------------------------------------
+
+-- change the default to true when all the functions will use the bigint
+-- put TRUE when it uses BGINT
+-- Query styles:
+-- dijkstra (id, source, target, cost, [reverse_cost])
+-- johnson (source, target, cost, [reverse_cost])
+*/
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
diff --git a/sql/common/pgrouting-types.sql b/sql/common/pgrouting-types.sql
new file mode 100644
index 0000000..d51f727
--- /dev/null
+++ b/sql/common/pgrouting-types.sql
@@ -0,0 +1,49 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+-- pgRouting 2.0 types
+
+CREATE TYPE pgr_costResult AS
+(
+ seq integer,
+ id1 integer,
+ id2 integer,
+ cost float8
+);
+
+CREATE TYPE pgr_costResult3 AS
+(
+ seq integer,
+ id1 integer,
+ id2 integer,
+ id3 integer,
+ cost float8
+);
+
+CREATE TYPE pgr_geomResult AS
+(
+ seq integer,
+ id1 integer,
+ id2 integer,
+ geom geometry
+);
diff --git a/src/common/sql/pgrouting.control.in b/sql/common/pgrouting.control
similarity index 100%
rename from src/common/sql/pgrouting.control.in
rename to sql/common/pgrouting.control
diff --git a/sql/common/pgrouting_utilities.sql b/sql/common/pgrouting_utilities.sql
new file mode 100644
index 0000000..c37aceb
--- /dev/null
+++ b/sql/common/pgrouting_utilities.sql
@@ -0,0 +1,471 @@
+/*PGR-GNU*****************************************************************
+
+FILE: pgrouting_utilities.sql
+
+Copyright (c) 2015 Celia Vriginia Vergara Castillo
+Copyright (c) 2015 REgina Obe
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+
+/*
+.. function:: _pgr_getTableName(tab)
+
+ Examples:
+ * select * from _pgr_getTableName('tab');
+ * naming record;
+ execute 'select * from _pgr_getTableName('||quote_literal(tab)||')' INTO naming;
+ schema=naming.sname; table=naming.tname
+
+
+ Returns (schema,name) of table "tab" considers Caps and when not found considers lowercases
+ (schema,NULL) when table was not found
+ (NULL,NULL) when schema was not found.
+
+ Author: Vicky Vergara <vicky_vergara at hotmail.com>>
+
+ HISTORY
+ 2015/11/01 Changed to handle views and refactored
+ Created: 2013/08/19 for handling schemas
+
+*/
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+/*
+.. function:: _pgr_getColumnName(sname,tname,col,reportErrs default 1) returns text
+.. function:: _pgr_getColumnName(tab,col,reportErrs default 1) returns text
+
+ Returns:
+ cname registered column "col" in table "tab" or "sname.tname" considers Caps and when not found considers lowercases
+ NULL when "tab"/"sname"/"tname" is not found or when "col" is not in table "tab"/"sname.tname"
+ unless otherwise indicated raises notices on errors
+
+ Examples:
+ * select _pgr_getColumnName('tab','col');
+ * select _pgr_getColumnName('myschema','mytable','col');
+ execute 'select _pgr_getColumnName('||quote_literal('tab')||','||quote_literal('col')||')' INTO column;
+ execute 'select _pgr_getColumnName('||quote_literal(sname)||','||quote_literal(sname)||','||quote_literal('col')||')' INTO column;
+
+ Author: Vicky Vergara <vicky_vergara at hotmail.com>>
+
+ HISTORY
+ Created: 2013/08/19 for handling schemas
+ Modified: 2014/JUL/28 added overloadig
+*/
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+/*
+.. function:: _pgr_isColumnInTable(tab, col)
+
+ Examples:
+ * select _pgr_isColumnName('tab','col');
+ * flag boolean;
+ execute 'select _pgr_getColumnName('||quote_literal('tab')||','||quote_literal('col')||')' INTO flag;
+
+ Returns true if column "col" exists in table "tab"
+ false when "tab" doesn't exist or when "col" is not in table "tab"
+
+ Author: Stephen Woodbridge <woodbri at imaptools.com>
+
+ Modified by: Vicky Vergara <vicky_vergara at hotmail.com>>
+
+ HISTORY
+ Modified: 2013/08/19 for handling schemas
+*/
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+/*
+.. function:: _pgr_isColumnIndexed(tab, col)
+
+ Examples:
+ * select _pgr_isColumnIndexed('tab','col');
+ * flag boolean;
+ execute 'select _pgr_getColumnIndexed('||quote_literal('tab')||','||quote_literal('col')||')' INTO flag;
+
+ Author: Stephen Woodbridge <woodbri at imaptools.com>
+
+ Modified by: Vicky Vergara <vicky_vergara at hotmail.com>>
+
+ Returns true when column "col" in table "tab" is indexed.
+ false when table "tab" is not found or
+ when column "col" is nor found in table "tab" or
+ when column "col" is not indexed
+*/
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+/*
+.. function:: _pgr_quote_ident(text)
+
+ Author: Stephen Woodbridge <woodbri at imaptools.com>
+
+ Function to split a string on '.' characters and then quote the
+ components as postgres identifiers and then join them back together
+ with '.' characters. multile '.' will get collapsed into a single
+ '.' so 'schema...table' till get returned as 'schema."table"' and
+ 'Schema.table' becomes '"Schema'.'table"'
+
+*/
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+/*
+ * function for comparing version strings.
+ * Ex: select _pgr_version_less(postgis_lib_version(), '2.1');
+
+ Author: Stephen Woodbridge <woodbri at imaptools.com>
+ *
+ * needed because postgis 2.1 deprecates some function names and
+ * we need to detect the version at runtime
+*/
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
diff --git a/sql/common/pgrouting_version.sql b/sql/common/pgrouting_version.sql
new file mode 100644
index 0000000..1aef84c
--- /dev/null
+++ b/sql/common/pgrouting_version.sql
@@ -0,0 +1,34 @@
+/*
+-- -------------------------------------------------------------------
+-- pgrouting_version.sql
+-- AuthorL Stephen Woodbridge <woodbri at imaptools.com>
+-- Copyright 2013 Stephen Woodbridge
+-- This file is release unde an MIT-X license.
+-- -------------------------------------------------------------------
+*/
+
+/*
+.. function:: pgr_version()
+
+ Author: Stephen Woodbridge <woodbri at imaptools.com>
+
+ Returns the version of pgrouting,Git build,Git hash, Git branch and boost
+*/
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '${PGROUTING_VERSION}'::varchar AS version,
+ '${PGROUTING_FULL_VERSION}'::varchar AS tag,
+ '${PGROUTING_GIT_HASH}'::varchar AS hash,
+ '${PGROUTING_GIT_BRANCH}'::varchar AS branch,
+ '${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
diff --git a/sql/common/utilities_pgr.sql b/sql/common/utilities_pgr.sql
new file mode 100644
index 0000000..6acbfd0
--- /dev/null
+++ b/sql/common/utilities_pgr.sql
@@ -0,0 +1,288 @@
+/*PGR-GNU*****************************************************************
+
+ utilities_pgr.sql
+
+ Copyright (c) 2014 Celia Virginia Vergara Castillo
+ vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+/************************************************************************
+.. function:: _pgr_onError(errCond,reportErrs,functionname,msgerr,hinto,msgok)
+
+ If the error condition is is true, i.e., there is an error,
+ it will raise a message based on the reportErrs:
+ 0: debug_ raise debug_
+ 1: report raise notice
+ 2: abort throw a raise_exception
+ Examples:
+
+ * preforn _pgr_onError( idname=gname, 2, 'pgr_createToplogy',
+ 'Two columns share the same name');
+ * preforn _pgr_onError( idname=gname, 2, 'pgr_createToplogy',
+ 'Two columns share the same name', 'Idname and gname must be different');
+ * preforn _pgr_onError( idname=gname, 2, 'pgr_createToplogy',
+ 'Two columns share the same name', 'Idname and gname must be different',
+ 'Column names are OK');
+
+
+ Author: Vicky Vergara <vicky_vergara at hotmail.com>>
+
+ HISTORY
+ Created: 2014/JUl/28 handling the errors, and have a more visual output
+
+************************************************************************/
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+/************************************************************************
+.. function:: _pgr_msg(msgKind, fnName, msg)
+
+ It will raise a message based on the msgKind:
+ 0: debug_ raise debug_
+ 1: notice raise notice
+ anything else: report raise notice
+
+ Examples:
+
+ * preforn _pgr_msg( 1, 'pgr_createToplogy', 'Starting a long process... ');
+ * preforn _pgr_msg( 1, 'pgr_createToplogy');
+
+
+ Author: Vicky Vergara <vicky_vergara at hotmail.com>>
+
+ HISTORY
+ Created: 2014/JUl/28 handling the errors, and have a more visual output
+
+************************************************************************/
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+/************************************************************************
+.. function:: _pgr_getColumnType(sname,tname,col,reportErrs,fnName) returns text
+.. function:: _pgr_getColumnType(tab,col,reportErrs,fname) returns text
+
+ Returns:
+ type the types of the registered column "col" in table "tab" or "sname.tname"
+ NULL when "tab"/"sname"/"tname" is not found or when "col" is not in table "tab"/"sname.tname"
+ unless otherwise indicated raises debug_ on errors
+
+ Examples:
+ * select _pgr_getColumnType('tab','col');
+ * select _pgr_getColumnType('myschema','mytable','col');
+ execute 'select _pgr_getColumnType('||quote_literal('tab')||','||quote_literal('col')||')' INTO column;
+ execute 'select _pgr_getColumnType('||quote_literal(sname)||','||quote_literal(sname)||','||quote_literal('col')||')' INTO column;
+
+ Author: Vicky Vergara <vicky_vergara at hotmail.com>>
+
+ HISTORY
+ Created: 2014/JUL/28
+************************************************************************/
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+/************************************************************************
+.. function:: _pgr_get_statement( sql ) returns the original statement if its a prepared statement
+
+ Returns:
+ sname,vname registered schemaname, vertices table name
+
+
+ Examples:
+ select * from _pgr_dijkstra(_pgr_get_statament($1),$2,$3,$4);
+
+ Author: Vicky Vergara <vicky_vergara at hotmail.com>>
+
+ HISTORY
+ Created: 2014/JUL/27
+************************************************************************/
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+/************************************************************************
+.. function:: _pgr_checkVertTab(vertname,columnsArr,reportErrs) returns record of sname,vname
+
+ Returns:
+ sname,vname registered schemaname, vertices table name
+
+ if the table is not found will stop any further checking.
+ if a column is missing, then its added as integer --- (id also as integer but is bigserial when the vertices table is created with the pgr functions)
+
+ Examples:
+ * execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ * execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+
+ Author: Vicky Vergara <vicky_vergara at hotmail.com>>
+
+ HISTORY
+ Created: 2014/JUL/27
+************************************************************************/
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
diff --git a/sql/components/CMakeLists.txt b/sql/components/CMakeLists.txt
new file mode 100644
index 0000000..1fe7bf0
--- /dev/null
+++ b/sql/components/CMakeLists.txt
@@ -0,0 +1,17 @@
+
+SET(LOCAL_FILES
+ connectedComponents.sql
+ strongComponents.sql
+ biconnectedComponents.sql
+ articulationPoints.sql
+ bridges.sql
+ )
+
+# Do not modify below this line
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/components/articulationPoints.sql b/sql/components/articulationPoints.sql
new file mode 100644
index 0000000..ebf58df
--- /dev/null
+++ b/sql/components/articulationPoints.sql
@@ -0,0 +1,38 @@
+/*PGR-GNU*****************************************************************
+File: articulationPoints.sql
+
+Generated with Template by:
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/${PGROUTING_LIBRARY_NAME}', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
diff --git a/sql/components/biconnectedComponents.sql b/sql/components/biconnectedComponents.sql
new file mode 100644
index 0000000..3734bff
--- /dev/null
+++ b/sql/components/biconnectedComponents.sql
@@ -0,0 +1,40 @@
+/*PGR-GNU*****************************************************************
+File: biconnectedComponents.sql
+
+Generated with Template by:
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/${PGROUTING_LIBRARY_NAME}', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
diff --git a/sql/components/bridges.sql b/sql/components/bridges.sql
new file mode 100644
index 0000000..59c9398
--- /dev/null
+++ b/sql/components/bridges.sql
@@ -0,0 +1,38 @@
+/*PGR-GNU*****************************************************************
+File: bridges.sql
+
+Generated with Template by:
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/${PGROUTING_LIBRARY_NAME}', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
diff --git a/sql/components/connectedComponents.sql b/sql/components/connectedComponents.sql
new file mode 100644
index 0000000..db36ff2
--- /dev/null
+++ b/sql/components/connectedComponents.sql
@@ -0,0 +1,40 @@
+/*PGR-GNU*****************************************************************
+File: connectedComponents.sql
+
+Generated with Template by:
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/${PGROUTING_LIBRARY_NAME}', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
diff --git a/sql/components/strongComponents.sql b/sql/components/strongComponents.sql
new file mode 100644
index 0000000..79e00c1
--- /dev/null
+++ b/sql/components/strongComponents.sql
@@ -0,0 +1,40 @@
+/*PGR-GNU*****************************************************************
+File: strongComponents.sql
+
+Generated with Template by:
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/${PGROUTING_LIBRARY_NAME}', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
diff --git a/sql/contraction/CMakeLists.txt b/sql/contraction/CMakeLists.txt
new file mode 100644
index 0000000..a73fc52
--- /dev/null
+++ b/sql/contraction/CMakeLists.txt
@@ -0,0 +1,11 @@
+
+SET(LOCAL_FILES
+ contractGraph.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/contraction/contractGraph.sql b/sql/contraction/contractGraph.sql
new file mode 100644
index 0000000..331b6df
--- /dev/null
+++ b/sql/contraction/contractGraph.sql
@@ -0,0 +1,47 @@
+/*PGR-GNU*****************************************************************
+File: contractGraph.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2016 Rohith Reddy
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
diff --git a/sql/costMatrix/CMakeLists.txt b/sql/costMatrix/CMakeLists.txt
new file mode 100644
index 0000000..91a104a
--- /dev/null
+++ b/sql/costMatrix/CMakeLists.txt
@@ -0,0 +1,15 @@
+
+SET(LOCAL_FILES
+ withPointsCostMatrix.sql
+ dijkstraCostMatrix.sql
+ bdDijkstraCostMatrix.sql
+ astarCostMatrix.sql
+ bdAstarCostMatrix.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/costMatrix/astarCostMatrix.sql b/sql/costMatrix/astarCostMatrix.sql
new file mode 100644
index 0000000..4672d71
--- /dev/null
+++ b/sql/costMatrix/astarCostMatrix.sql
@@ -0,0 +1,51 @@
+/*PGR-GNU*****************************************************************
+File: astar.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
diff --git a/sql/costMatrix/bdAstarCostMatrix.sql b/sql/costMatrix/bdAstarCostMatrix.sql
new file mode 100644
index 0000000..e39b938
--- /dev/null
+++ b/sql/costMatrix/bdAstarCostMatrix.sql
@@ -0,0 +1,53 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
diff --git a/sql/costMatrix/bdDijkstraCostMatrix.sql b/sql/costMatrix/bdDijkstraCostMatrix.sql
new file mode 100644
index 0000000..6c6fce7
--- /dev/null
+++ b/sql/costMatrix/bdDijkstraCostMatrix.sql
@@ -0,0 +1,43 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
diff --git a/src/costMatrix/sql/dijkstraCostMatrix.sql b/sql/costMatrix/dijkstraCostMatrix.sql
similarity index 100%
rename from src/costMatrix/sql/dijkstraCostMatrix.sql
rename to sql/costMatrix/dijkstraCostMatrix.sql
diff --git a/sql/costMatrix/withPointsCostMatrix.sql b/sql/costMatrix/withPointsCostMatrix.sql
new file mode 100644
index 0000000..20302ec
--- /dev/null
+++ b/sql/costMatrix/withPointsCostMatrix.sql
@@ -0,0 +1,53 @@
+/*PGR-GNU*****************************************************************
+File: withPointsCost.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*
+MANY TO MANY
+*/
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
diff --git a/sql/deprecated/CMakeLists.txt b/sql/deprecated/CMakeLists.txt
new file mode 100644
index 0000000..9e85650
--- /dev/null
+++ b/sql/deprecated/CMakeLists.txt
@@ -0,0 +1,25 @@
+
+SET(LOCAL_FILES
+ noUnderUtilities.sql
+ apsp_johnson_v2.2.sql
+ apsp_warshall_v2.2.sql
+ astarV2.0.sql
+ bd_astar_v2.sql
+ bdDijkstra-v2.sql
+ kdijkstra-V2.2.sql
+ pgrouting_conversion_tools.sql
+ pgrouting_dmatrix_tools.sql
+ pgr_vidsToDMatrix.sql
+ dijkstra_v2.sql
+ routing_dd.sql
+ maximum_cardinality_matching.sql
+ max_flow-deprecated.sql
+ deprecated-comments.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/src/apsp_johnson/sql/apsp_johnson_v2.2.sql b/sql/deprecated/apsp_johnson_v2.2.sql
similarity index 100%
rename from src/apsp_johnson/sql/apsp_johnson_v2.2.sql
rename to sql/deprecated/apsp_johnson_v2.2.sql
diff --git a/src/apsp_warshall/sql/apsp_warshall_v2.2.sql b/sql/deprecated/apsp_warshall_v2.2.sql
similarity index 100%
rename from src/apsp_warshall/sql/apsp_warshall_v2.2.sql
rename to sql/deprecated/apsp_warshall_v2.2.sql
diff --git a/sql/deprecated/astarV2.0.sql b/sql/deprecated/astarV2.0.sql
new file mode 100644
index 0000000..67639c8
--- /dev/null
+++ b/sql/deprecated/astarV2.0.sql
@@ -0,0 +1,50 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
diff --git a/sql/deprecated/bdDijkstra-v2.sql b/sql/deprecated/bdDijkstra-v2.sql
new file mode 100644
index 0000000..5c4cacf
--- /dev/null
+++ b/sql/deprecated/bdDijkstra-v2.sql
@@ -0,0 +1,53 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
diff --git a/sql/deprecated/bd_astar_v2.sql b/sql/deprecated/bd_astar_v2.sql
new file mode 100644
index 0000000..59795bc
--- /dev/null
+++ b/sql/deprecated/bd_astar_v2.sql
@@ -0,0 +1,59 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
diff --git a/sql/deprecated/deprecated-comments.sql b/sql/deprecated/deprecated-comments.sql
new file mode 100644
index 0000000..917ba3f
--- /dev/null
+++ b/sql/deprecated/deprecated-comments.sql
@@ -0,0 +1,145 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
diff --git a/sql/deprecated/dijkstra_v2.sql b/sql/deprecated/dijkstra_v2.sql
new file mode 100644
index 0000000..f3e01b4
--- /dev/null
+++ b/sql/deprecated/dijkstra_v2.sql
@@ -0,0 +1,59 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
diff --git a/sql/deprecated/kdijkstra-V2.2.sql b/sql/deprecated/kdijkstra-V2.2.sql
new file mode 100644
index 0000000..d74e35a
--- /dev/null
+++ b/sql/deprecated/kdijkstra-V2.2.sql
@@ -0,0 +1,195 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
diff --git a/sql/deprecated/legacy-developers.sql b/sql/deprecated/legacy-developers.sql
new file mode 100644
index 0000000..dad1040
--- /dev/null
+++ b/sql/deprecated/legacy-developers.sql
@@ -0,0 +1,446 @@
+-------------------------------------------------------------------------------
+-- Legacy FUNCTIONs that were meant to be used by
+-- pgRouting developers
+-- These FUNCTIONs wer used on the plpgsql FUNCTIONs
+
+
+-- FILE intended to be used on 3.0
+-------------------------------------------------------------------------------
+
+------------------------------------------------------------------------------
+-- Deprecated on 2.3
+--
+-- pgr_getColumnName
+-- pgr_getTableName
+-- pgr_isColumnIndexed
+-- pgr_isColumnInTable
+-- pgr_quote_ident
+-- pgr_versionless
+-- pgr_startPoint
+-- pgr_endPoint
+-- pgr_pointToid RENAMED and deprecated and never announced no one has complained
+------------------------------------------------------------------------------
+
+
+-- deprecated on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ table_name text;
+BEGIN
+ IF pgr_isColumnInTable(tab, col) THEN RETURN NULL;
+ END IF;
+ SELECT pgr_getTableName($1) into sname, tname;
+ table_name := sname || '.' || tname;
+ EXECUTE 'SELECT ' || quote_ident(col) || ' FROM ' || table_name || ' LIMIT 1';
+ RETURN col;
+ EXCEPTION WHEN others THEN
+ BEGIN
+ EXECUTE 'SELECT ' || quote_ident(lower(col)) || ' FROM ' || table_name || ' LIMIT 1';
+ RETURN lower(col);
+ EXCEPTION WHEN others THEN
+ RETURN NULL;
+ END;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+-- deprecated on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+DECLARE
+ table_oid regclass;
+ table_name text;
+BEGIN
+ table_oid := $1::regclass;
+ -- $1 := replace($1, '"', '');
+ SELECT * FROM _pgr_getTableName($1, 0, 'pgr_getTableName') into sname,tname;
+ EXCEPTION WHEN others THEN
+ BEGIN
+ table_oid := lower($1)::regclass;
+ SELECT * FROM _pgr_getTableName(lower($1), 0, 'pgr_getTableName') into sname,tname;
+ EXCEPTION WHEN others THEN
+ sname = 'public';
+ tname = NULL;
+ END;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+-- deprecated on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE table_oid regclass;
+BEGIN
+ table_oid := $1::regclass;
+ $1 := replace(tab, '"', '');
+ RETURN _pgr_isColumnIndexed($1, $2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+-- deprecated on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+ sname text;
+ tname text;
+ table_name text;
+BEGIN
+ SELECT pgr_getTableName($1) into sname, tname;
+ table_name := sname || '.' || tname;
+ EXECUTE 'SELECT ' || quote_ident(col) || ' FROM ' || table_name || ' LIMIT 1';
+ RETURN true;
+ EXCEPTION WHEN others THEN
+ BEGIN
+ EXECUTE 'SELECT ' || quote_ident(lower(col)) || ' FROM ' || table_name || ' LIMIT 1';
+ RETURN true;
+ EXCEPTION WHEN others THEN
+ RETURN false;
+ END;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+-- deprecated on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_quote_ident(idname text)
+RETURNS text as
+$BODY$
+ SELECT quote_ident($1);
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+-- deprecated on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+ SELECT _pgr_versionless($1, $2);
+$BODY$
+LANGUAGE sql VOLATILE STRICT;
+
+
+
+
+-- deprecated on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_startPoint(g geometry)
+ RETURNS geometry as
+$BODY$
+ SELECT ST_startPoint($1);
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+-- deprecated on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_endPoint(g geometry)
+ RETURNS geometry as
+$BODY$
+ SELECT ST_endPoint($1);
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+/* RENAMED and deprecated and never announced no one has complained
+-- deprecated on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_pointToId(point geometry, tolerance double precision, vertname text, srid integer)
+RETURNS bigint AS
+$BODY$
+ SELECT _pgr_pointToId($1, $2, $3, $4);
+$BODY$
+LANGUAGE sql VOLATILE STRICT;
+*/
+
+------------------------------------------------------------------------------
+-- Deprecated on 2.3
+--
+-- pgr_flipedges
+-- pgr_texttopoints
+-- pgr_vidsToDMatrix
+-- pgr_vidsToDMatrix
+-- pgr_pointstodmatrix
+------------------------------------------------------------------------------
+
+-- Added on 2.1.0
+-- deprecated on 2.3.0
+CREATE OR REPLACE FUNCTION pgr_flipedges(ga geometry[])
+ RETURNS geometry[] as
+$BODY$
+DECLARE
+ nn integer;
+ i integer;
+ g geometry;
+
+BEGIN
+ nn := array_length(ga, 1);
+ IF nn = 1 THEN
+ RETURN ga;
+ END IF;
+
+ g := ST_StartPoint(ga[1]);
+
+ IF ST_StartPoint(ga[2]) = g or ST_EndPoint(ga[2]) = g THEN
+ ga[1] := ST_Reverse(ga[1]);
+ END IF;
+
+ g := ST_EndPoint(ga[1]);
+
+ FOR i in 2 .. nn LOOP
+ IF g = ST_EndPoint(ga[i]) THEN
+ ga[i] := ST_Reverse(ga[i]);
+ END IF;
+ g := ST_EndPoint(ga[i]);
+ END LOOP;
+
+ RETURN ga;
+end;
+$BODY$
+LANGUAGE plpgsql immutable;
+
+
+
+-- Added on 2.1.0
+-- deprecated on 2.3.0
+CREATE OR REPLACE FUNCTION pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ RETURNS geometry[] as
+$BODY$
+DECLARE
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+BEGIN
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ FOR t in SELECT unnest(a) LOOP
+ p := ST_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ END LOOP;
+
+ RETURN g;
+end;
+$BODY$
+LANGUAGE plpgsql immutable;
+
+
+
+-- Added on 2.1.0
+-- deprecated on 2.3.0
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+dmatrix_row float8[];
+dmatrix float8[];
+rr RECORD;
+ids INTEGER[];
+total BIGINT;
+BEGIN
+ ids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ dir = false;
+ END IF;
+
+ total := array_length(ids, 1);
+
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ FOR rr IN EXECUTE
+ 'SELECT start_vid, end_vid, agg_cost FROM pgr_dijkstraCostMatrix($1, $2, $3)'
+ USING
+ sql, ids, dir
+ LOOP
+ dmatrix[(SELECT idx FROM generate_subscripts(ids, 1) AS idx WHERE ids[idx] = rr.start_vid)]
+ [(SELECT idx FROM generate_subscripts(ids, 1) AS idx WHERE ids[idx] = rr.end_vid)] := rr.agg_cost;
+ END LOOP;
+
+ RETURN dmatrix;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+-- Added on 2.1.0
+-- deprecated on 2.3.0
+CREATE OR REPLACE FUNCTION pgr_vidstodmatrix(
+ IN vids integer[],
+ IN pnts geometry[],
+ IN edges text,
+ tol float8 DEFAULT(0.1),
+ OUT dmatrix double precision[],
+ OUT ids integer[])
+ RETURNS record as
+$BODY$
+DECLARE
+ dmatrix_row float8[];
+ nn integer;
+ rr record;
+ t float8[];
+
+BEGIN
+ ids := array(SELECT DISTINCT unnest(vids::integer[]) ORDER BY 1);
+
+ nn := array_length(ids, 1);
+
+ FOR i in 1 .. nn LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+
+ FOR i in 1 .. nn LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ FOR i in 1 .. nn LOOP
+ dmatrix := dmatrix || ARRAY[t];
+ END LOOP;
+
+ FOR rr IN EXECUTE
+ 'SELECT start_vid, end_vid, agg_cost FROM pgr_dijkstraCostMatrix($1, $2, false)'
+ USING
+ 'SELECT id, source, target, cost FROM ' || edges,
+ ids
+ LOOP
+ dmatrix[(SELECT idx FROM generate_subscripts(ids, 1) AS idx WHERE ids[idx] = rr.start_vid)]
+ [(SELECT idx FROM generate_subscripts(ids, 1) AS idx WHERE ids[idx] = rr.end_vid)] := rr.agg_cost;
+ END LOOP;
+
+ RETURN;
+end;
+$BODY$
+LANGUAGE plpgsql STABLE cost 200;
+
+
+
+-- Added on 2.1.0
+-- deprecated on 2.3.0
+CREATE OR REPLACE FUNCTION pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ RETURNS record as
+$BODY$
+DECLARE
+ r record;
+
+BEGIN
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ FOR r in with nodes AS (SELECT row_number() over()::integer AS id, p FROM (select unnest(pnts) AS p) AS foo)
+ SELECT i, array_agg(dist) AS arow FROM (
+ SELECT a.id AS i, b.id AS j,
+ case when mode=0
+ THEN ST_distance(a.p, b.p)
+ ELSE ST_distance_sphere(a.p, b.p)
+ END AS dist
+ FROM nodes a, nodes b
+ ORDER BY a.id, b.id
+ ) AS foo group by i ORDER BY i LOOP
+
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ END LOOP;
+end;
+$BODY$
+LANGUAGE plpgsql STABLE;
+
+-----------------------------------------------------------------------
+
+-- Added on 2.1.0
+-- deprecated on 2.4.0
+CREATE OR REPLACE FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ RETURNS integer[] as
+$BODY$
+DECLARE
+ v integer[];
+ g geometry;
+BEGIN
+ FOR g in SELECT unnest(pnts) LOOP
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ END LOOP;
+
+ RETURN v;
+end;
+$BODY$
+LANGUAGE plpgsql STABLE;
+
+
+
+-----------------------------------------------------------------------
+
+-- Added on 2.1.0
+-- deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ RETURNS integer as
+$BODY$
+DECLARE
+ rr record;
+ pct float;
+ debuglevel text;
+
+BEGIN
+ execute 'SELECT * FROM ' || quote_ident(edges) ||
+ ' where ST_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') ORDER BY ST_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ IF rr.the_geom IS NOT null THEN
+ IF geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ END IF;
+
+ IF _pgr_versionless(postgis_version(), '2.0') THEN
+ pct := ST_line_locate_point(rr.the_geom, pnt);
+ ELSE
+ pct := ST_lineLocatePoint(rr.the_geom, pnt);
+ END IF;
+
+ IF pct < 0.5 THEN
+ RETURN rr.source;
+ ELSE
+ RETURN rr.target;
+ END IF;
+ ELSE
+ RETURN -1;
+ END IF;
+end;
+$BODY$
+LANGUAGE plpgsql VOLATILE
+cost 5;
+
+
+
+------------------------------------------------------------------------------
diff --git a/sql/deprecated/legacy.sql b/sql/deprecated/legacy.sql
new file mode 100644
index 0000000..7790ab1
--- /dev/null
+++ b/sql/deprecated/legacy.sql
@@ -0,0 +1,438 @@
+-------------------------------------------------------------------------------
+-- Legacy FUNCTIONs that were meant to be used by
+-- Temporarily while the rewrite of 2.0
+-- These FUNCTIONs wer used on the plpgsql functions
+
+
+-- FILE intended to be used on 3.0
+-------------------------------------------------------------------------------
+
+-- I do not know yet if they will create a conflict when putting the legacy
+
+-- Deprecated signature on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+ SELECT seq-1 , node::integer, edge::integer, cost
+ FROM pgr_dijkstra($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- Deprecated signature on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source INTEGER, distance FLOAT8, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+ SELECT seq - 1, node::integer, edge::integer, agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- Deprecated signature on 2.1.0
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+RETURNS SETOF pgr_costresult3 AS
+$BODY$
+ SELECT ((row_number() over()) -1)::integer, (path_id - 1)::integer, node::integer, edge::integer, cost
+ FROM _pgr_ksp($1::text, $2, $3, $4, TRUE, FALSE) WHERE path_id <= k;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+------------------------------------------------------------------------------
+
+-- Deprecated on 2.2.0
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+ SELECT (row_number() over () - 1)::integer, start_vid::integer, end_vid::integer, agg_cost
+ FROM pgr_johnson($1, TRUE);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- Deprecated on 2.2.0
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+$BODY$
+ SELECT (row_number() over () -1)::integer, start_vid::integer, end_vid::integer, agg_cost
+ FROM pgr_floydWarshall($1, $2);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- Deprecated on 2.2.0
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+ SELECT (row_number() over () -1)::integer, end_vid::INTEGER, node::INTEGER, edge::INTEGER, cost
+ FROM pgr_dijkstra($1, $2, $3, $4);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- Deprecated on 2.2.0
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+ SELECT (row_number() over () -1)::integer, start_vid::integer, end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost($1, $2, $3, $4);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- Deprecated on 2.3.0
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+ SELECT seq - 1, node::INTEGER, edge::INTEGER, cost
+ FROM pgr_astar($1, ARRAY[$2], ARRAY[$3], $4);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- Deprecated on 2.4.0
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM pgr_bdDijkstra($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_PushRelabel($1, $2, $3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_boykovKolmogorov($1, $2, $3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_edmondsKarp($1, $2, $3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_PushRelabel($1, $2, $3);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_boykovKolmogorov($1, $2, $3);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_edmondsKarp($1, $2, $3);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_PushRelabel($1, $2, $3);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_boykovKolmogorov($1, $2, $3);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_edmondsKarp($1, $2, $3);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_PushRelabel($1, $2, $3);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_boykovKolmogorov($1, $2, $3);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_edmondsKarp($1, $2, $3);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+-- included on 2.3.0
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT * FROM pgr_maxCardinalityMatch($1, $2);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+-- Deprecated on 2.5.0
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+ SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
diff --git a/sql/deprecated/max_flow-deprecated.sql b/sql/deprecated/max_flow-deprecated.sql
new file mode 100644
index 0000000..1039d14
--- /dev/null
+++ b/sql/deprecated/max_flow-deprecated.sql
@@ -0,0 +1,292 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/***********************************
+ ONE TO ONE
+***********************************/
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+/***********************************
+ ONE TO MANY
+***********************************/
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+/***********************************
+ MANY TO ONE
+***********************************/
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+/***********************************
+ MANY TO MANY
+***********************************/
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
diff --git a/sql/deprecated/maximum_cardinality_matching.sql b/sql/deprecated/maximum_cardinality_matching.sql
new file mode 100644
index 0000000..202c0d0
--- /dev/null
+++ b/sql/deprecated/maximum_cardinality_matching.sql
@@ -0,0 +1,39 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
diff --git a/sql/deprecated/noUnderUtilities.sql b/sql/deprecated/noUnderUtilities.sql
new file mode 100644
index 0000000..de9ba79
--- /dev/null
+++ b/sql/deprecated/noUnderUtilities.sql
@@ -0,0 +1,111 @@
+/*PGR-GNU*****************************************************************
+
+FILE: noUnderUtilities.sql
+
+Copyright (c) 2015 Celia Vriginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
diff --git a/sql/deprecated/pgr_vidsToDMatrix.sql b/sql/deprecated/pgr_vidsToDMatrix.sql
new file mode 100644
index 0000000..121785e
--- /dev/null
+++ b/sql/deprecated/pgr_vidsToDMatrix.sql
@@ -0,0 +1,92 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
diff --git a/sql/deprecated/pgrouting_conversion_tools.sql b/sql/deprecated/pgrouting_conversion_tools.sql
new file mode 100644
index 0000000..a1091f4
--- /dev/null
+++ b/sql/deprecated/pgrouting_conversion_tools.sql
@@ -0,0 +1,186 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+/*
+ * pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ *
+ * Given and table of edges with a spatial index on the_geom
+ * and a point geometry search for the closest edge within tol distance to the edges
+ * then compute the projection of the point onto the line segment and select source or target
+ * based on whether the projected point is closer to the respective end and return source or target.
+ * If no edge is within tol distance then return -1
+*/
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+/*
+ * pgr_flipedges(ga geometry[])
+ *
+ * Given an array of linestrings that are supposedly connected end to end like the results
+ * of a route, check the edges and flip any end for end if they do not connect with the
+ * previous seegment and return the array with the segments flipped as appropriate.
+ *
+ * NOTE: no error checking is done for conditions like adjacent edges are not connected.
+*/
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+/*
+ * pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ *
+ * Given a text string of the format "x,y;x,y;x,y;..." and the srid to use,
+ * split the string and create and array point geometries
+*/
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+/*
+ * pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ *
+ * Given an array of point geometries and an edge table and a max search tol distance
+ * convert points into vertex ids using pgr_pointtoedgenode()
+ *
+ * NOTE: You need to check the results for any vids=-1 which indicates if failed to locate an edge
+*/
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
diff --git a/sql/deprecated/pgrouting_dmatrix_tools.sql b/sql/deprecated/pgrouting_dmatrix_tools.sql
new file mode 100644
index 0000000..4e365cb
--- /dev/null
+++ b/sql/deprecated/pgrouting_dmatrix_tools.sql
@@ -0,0 +1,144 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+/*
+ * pgr_pointstodmatrix(pnts geometry[], OUT dmatrix double precision[], OUT ids integer[])
+ *
+ * Create a distance symmetric distance matrix suitable for TSP using Euclidean distances
+ * based on the st_distance(). You might want to create a variant of this the uses st_distance_sphere()
+ * or st_distance_spheriod() or some other function.
+ *
+*/
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+/*
+ * pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1),
+ * OUT dmatrix double precision[], OUT ids integer[])
+ *
+ * This function that's an array vertex ids, the original array of points, the edge table name and a tol.
+ * It then computes kdijkstra() distances for each vertex to all the other vertices and creates a symmetric
+ * distances matrix suitable for TSP. The pnt array and the tol are used to establish a BBOX for limiteding
+ * selection of edges.the extents of the points is expanded by tol.
+ *
+ * NOTES:
+ * 1. we compute a symmetric matrix because TSP requires that so the distances are better the Euclidean but
+ * but are not perfect
+ * 2. kdijkstra() can fail to find a path between some of the vertex ids. We to not detect this other than
+ * the cost might get set to -1.0, so the dmatrix should be checked for this as it makes it invalid for TSP
+ *
+*/
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
diff --git a/sql/deprecated/routing_dd.sql b/sql/deprecated/routing_dd.sql
new file mode 100644
index 0000000..da48c4b
--- /dev/null
+++ b/sql/deprecated/routing_dd.sql
@@ -0,0 +1,59 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: project at 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*/
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
diff --git a/sql/dijkstra/CMakeLists.txt b/sql/dijkstra/CMakeLists.txt
new file mode 100644
index 0000000..98ccb27
--- /dev/null
+++ b/sql/dijkstra/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+SET(LOCAL_FILES
+ _dijkstra.sql
+ dijkstra.sql
+ dijkstraCost.sql
+ dijkstraVia.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/dijkstra/_dijkstra.sql b/sql/dijkstra/_dijkstra.sql
new file mode 100644
index 0000000..5277257
--- /dev/null
+++ b/sql/dijkstra/_dijkstra.sql
@@ -0,0 +1,45 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'${MODULE_PATHNAME}', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
diff --git a/sql/dijkstra/dijkstra.sql b/sql/dijkstra/dijkstra.sql
new file mode 100644
index 0000000..e3723dd
--- /dev/null
+++ b/sql/dijkstra/dijkstra.sql
@@ -0,0 +1,149 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
diff --git a/sql/dijkstra/dijkstraCost.sql b/sql/dijkstra/dijkstraCost.sql
new file mode 100644
index 0000000..ce630ad
--- /dev/null
+++ b/sql/dijkstra/dijkstraCost.sql
@@ -0,0 +1,111 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
diff --git a/sql/dijkstra/dijkstraVia.sql b/sql/dijkstra/dijkstraVia.sql
new file mode 100644
index 0000000..05379c1
--- /dev/null
+++ b/sql/dijkstra/dijkstraVia.sql
@@ -0,0 +1,51 @@
+/*PGR-GNU*****************************************************************
+File: dijkstraViaVertex.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
diff --git a/sql/dijkstraTRSP/CMakeLists.txt b/sql/dijkstraTRSP/CMakeLists.txt
new file mode 100644
index 0000000..b8d26b3
--- /dev/null
+++ b/sql/dijkstraTRSP/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(LOCAL_FILES
+ dijkstraTRSP.sql
+ )
+
+# Do not modify below this line
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/dijkstraTRSP/dijkstraTRSP.sql b/sql/dijkstraTRSP/dijkstraTRSP.sql
new file mode 100644
index 0000000..083bf2d
--- /dev/null
+++ b/sql/dijkstraTRSP/dijkstraTRSP.sql
@@ -0,0 +1,47 @@
+/*PGR-GNU*****************************************************************
+File: dijkstraTRSP.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraTRSP(
+ TEXT,
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ strict BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/${PGROUTING_LIBRARY_NAME}', 'dijkstraTRSP'
+LANGUAGE c IMMUTABLE STRICT;
diff --git a/sql/driving_distance/CMakeLists.txt b/sql/driving_distance/CMakeLists.txt
new file mode 100644
index 0000000..eecfff8
--- /dev/null
+++ b/sql/driving_distance/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ withPoints_dd.sql
+ dijkstraDD.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/driving_distance/dijkstraDD.sql b/sql/driving_distance/dijkstraDD.sql
new file mode 100644
index 0000000..20551c5
--- /dev/null
+++ b/sql/driving_distance/dijkstraDD.sql
@@ -0,0 +1,61 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: project at 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*/
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
diff --git a/sql/driving_distance/withPoints_dd.sql b/sql/driving_distance/withPoints_dd.sql
new file mode 100644
index 0000000..bf290f7
--- /dev/null
+++ b/sql/driving_distance/withPoints_dd.sql
@@ -0,0 +1,71 @@
+/*PGR-GNU*****************************************************************
+File: withPoints_dd.sql
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
diff --git a/sql/ksp/CMakeLists.txt b/sql/ksp/CMakeLists.txt
new file mode 100644
index 0000000..d611133
--- /dev/null
+++ b/sql/ksp/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ routing_ksp.sql
+ withPoints_ksp.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/ksp/routing_ksp.sql b/sql/ksp/routing_ksp.sql
new file mode 100644
index 0000000..20d39f4
--- /dev/null
+++ b/sql/ksp/routing_ksp.sql
@@ -0,0 +1,78 @@
+/*PGR-GNU*****************************************************************
+File: routing_ksp.sql
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
diff --git a/sql/ksp/withPoints_ksp.sql b/sql/ksp/withPoints_ksp.sql
new file mode 100644
index 0000000..f94f2fe
--- /dev/null
+++ b/sql/ksp/withPoints_ksp.sql
@@ -0,0 +1,44 @@
+/*PGR-GNU*****************************************************************
+File: withPoints_ksp.sql
+
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
diff --git a/sql/label_graph/CMakeLists.txt b/sql/label_graph/CMakeLists.txt
new file mode 100644
index 0000000..3e91a16
--- /dev/null
+++ b/sql/label_graph/CMakeLists.txt
@@ -0,0 +1,11 @@
+
+SET(LOCAL_FILES
+ label_graph.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/label_graph/label_graph.sql b/sql/label_graph/label_graph.sql
new file mode 100644
index 0000000..86a4fc3
--- /dev/null
+++ b/sql/label_graph/label_graph.sql
@@ -0,0 +1,194 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
diff --git a/sql/lineGraph/CMakeLists.txt b/sql/lineGraph/CMakeLists.txt
new file mode 100644
index 0000000..80b58e5
--- /dev/null
+++ b/sql/lineGraph/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(LOCAL_FILES
+ lineGraph.sql
+ )
+
+# Do not modify below this line
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/lineGraph/lineGraph.sql b/sql/lineGraph/lineGraph.sql
new file mode 100644
index 0000000..a087b11
--- /dev/null
+++ b/sql/lineGraph/lineGraph.sql
@@ -0,0 +1,41 @@
+/*PGR-GNU*****************************************************************
+File: lineGraph.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/${PGROUTING_LIBRARY_NAME}', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
diff --git a/sql/max_flow/CMakeLists.txt b/sql/max_flow/CMakeLists.txt
new file mode 100644
index 0000000..e36dfab
--- /dev/null
+++ b/sql/max_flow/CMakeLists.txt
@@ -0,0 +1,17 @@
+
+SET(LOCAL_FILES
+ _max_flow.sql
+ edmondsKarp.sql
+ boykovKolmogorov.sql
+ pushRelabel.sql
+ maxFlow.sql
+ maxCardinalityMatch.sql
+ edge_disjoint_paths.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/max_flow/_max_flow.sql b/sql/max_flow/_max_flow.sql
new file mode 100644
index 0000000..ec08676
--- /dev/null
+++ b/sql/max_flow/_max_flow.sql
@@ -0,0 +1,50 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
diff --git a/sql/max_flow/boykovKolmogorov.sql b/sql/max_flow/boykovKolmogorov.sql
new file mode 100644
index 0000000..690be5d
--- /dev/null
+++ b/sql/max_flow/boykovKolmogorov.sql
@@ -0,0 +1,108 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
diff --git a/sql/max_flow/edge_disjoint_paths.sql b/sql/max_flow/edge_disjoint_paths.sql
new file mode 100644
index 0000000..4390269
--- /dev/null
+++ b/sql/max_flow/edge_disjoint_paths.sql
@@ -0,0 +1,124 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+
+/***********************************
+ MANY TO MANY
+***********************************/
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+/***********************************
+ ONE TO ONE
+***********************************/
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+/***********************************
+ ONE TO MANY
+***********************************/
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+/***********************************
+ MANY TO ONE
+***********************************/
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
diff --git a/sql/max_flow/edmondsKarp.sql b/sql/max_flow/edmondsKarp.sql
new file mode 100644
index 0000000..a6473dc
--- /dev/null
+++ b/sql/max_flow/edmondsKarp.sql
@@ -0,0 +1,108 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
diff --git a/sql/max_flow/maxCardinalityMatch.sql b/sql/max_flow/maxCardinalityMatch.sql
new file mode 100644
index 0000000..2c79c4c
--- /dev/null
+++ b/sql/max_flow/maxCardinalityMatch.sql
@@ -0,0 +1,39 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
diff --git a/sql/max_flow/maxFlow.sql b/sql/max_flow/maxFlow.sql
new file mode 100644
index 0000000..c66e2ba
--- /dev/null
+++ b/sql/max_flow/maxFlow.sql
@@ -0,0 +1,87 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
+/***********************************
+ MANY TO MANY
+***********************************/
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+/***********************************
+ ONE TO ONE
+***********************************/
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+/***********************************
+ ONE TO MANY
+***********************************/
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+/***********************************
+ MANY TO ONE
+***********************************/
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
diff --git a/sql/max_flow/pushRelabel.sql b/sql/max_flow/pushRelabel.sql
new file mode 100644
index 0000000..c1985a4
--- /dev/null
+++ b/sql/max_flow/pushRelabel.sql
@@ -0,0 +1,108 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
diff --git a/sql/pickDeliver/CMakeLists.txt b/sql/pickDeliver/CMakeLists.txt
new file mode 100644
index 0000000..7d8968c
--- /dev/null
+++ b/sql/pickDeliver/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ pickDeliver.sql
+ pickDeliverEuclidean.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/pickDeliver/pickDeliver.sql b/sql/pickDeliver/pickDeliver.sql
new file mode 100644
index 0000000..1d556e2
--- /dev/null
+++ b/sql/pickDeliver/pickDeliver.sql
@@ -0,0 +1,57 @@
+/*PGR-GNU*****************************************************************
+File: pickDeliver.sql
+
+Generated with Template by:
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
diff --git a/sql/pickDeliver/pickDeliverEuclidean.sql b/sql/pickDeliver/pickDeliverEuclidean.sql
new file mode 100644
index 0000000..d9ffb3e
--- /dev/null
+++ b/sql/pickDeliver/pickDeliverEuclidean.sql
@@ -0,0 +1,54 @@
+/*PGR-GNU*****************************************************************
+File: pickDeliver.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '${MODULE_PATHNAME}', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
diff --git a/sql/scripts/CMakeLists.txt b/sql/scripts/CMakeLists.txt
new file mode 100644
index 0000000..b53b2ce
--- /dev/null
+++ b/sql/scripts/CMakeLists.txt
@@ -0,0 +1,3 @@
+
+configure_file(build-extension-update-files1.pl build-extension-update-files1.pl @ONLY)
+configure_file(build-extension-file.pl build-extension-file.pl @ONLY)
diff --git a/sql/scripts/build-extension-file.pl b/sql/scripts/build-extension-file.pl
new file mode 100755
index 0000000..f368131
--- /dev/null
+++ b/sql/scripts/build-extension-file.pl
@@ -0,0 +1,91 @@
+#!/usr/bin/perl -w
+eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
+ if 0; #$running_under_some_shell
+
+# Extension files almost do not change
+# Almost files in the src/*/sql are part of the extension
+# The files indicated on the CMakelists of the subdirectory:
+# Are going to be included (when not commented out)
+# The generated file is going to be used to compare VS the generated file on cmake
+
+use strict;
+use Data::Dumper;
+use File::Find();
+
+my $DEBUG="@PgRouting_DEBUG@";
+
+use vars qw/*name *dir *prune/;
+*name = *File::Find::name;
+*dir = *File::Find::dir;
+*prune = *File::Find::prune;
+
+
+sub Usage {
+ die "Usage:\nFrom the root of the repository:
+ build-extension-file.pl version \n";
+}
+
+
+my $version = "@PGROUTING_VERSION@";
+my $working_directory = "@CMAKE_CURRENT_BINARY_DIR@/..";
+my $PgRouting_SQL_FILES = "@PgRouting_SQL_FILES@";
+my @sql_file = split(/;/, $PgRouting_SQL_FILES);
+my $out_file_name = "$working_directory/@PgRouting_CURRENT_SQL_FILE@";
+
+print "Working_directory $working_directory\n" if $DEBUG;
+print "out_file_name $out_file_name\n" if $DEBUG;
+
+open(OUT, ">", "$out_file_name")
+ || die "@PgRouting_CURRENT_SQL_FILE@ ERROR: failed to create: '$out_file_name' : $!\n";
+
+foreach my $f (@sql_file) {
+ print "-- $f\n" if $DEBUG;
+ my $contents = get_contents($f);
+ $contents = eliminate_license($contents);
+ print OUT "$contents";
+}
+
+close (OUT);
+
+exit 0;
+
+
+
+sub get_contents {
+ my ($file) = @_;
+ local $/=undef;
+ die "ERROR: Failed to find: $file\n" unless -f $file;
+ open(IN, $file) || die "pgrouting--$version.sql ERROR: Failed to open $file\n";
+ my @contents = <IN>;
+ close(IN);
+ my $contents = join('', @contents);
+
+ return $contents;
+}
+
+sub eliminate_license {
+ my ($contents) = @_;
+
+ $contents =~ s{
+ /\*PGR-(GNU|MIT)
+ .*?
+ PGR-(GNU|MIT)\*/
+ }[]gsxi;
+
+ $contents =~ s{
+ /\*FOR
+ .*?
+ USER\*/
+ }[]gsxi;
+
+ $contents =~ s{
+ /\*
+ .*?
+ \*/
+ }[]gsxi;
+
+
+
+ return $contents;
+}
+
diff --git a/sql/scripts/build-extension-update-files1.pl b/sql/scripts/build-extension-update-files1.pl
new file mode 100755
index 0000000..80b628e
--- /dev/null
+++ b/sql/scripts/build-extension-update-files1.pl
@@ -0,0 +1,712 @@
+#!/usr/bin/perl -w
+eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
+ if 0; #$running_under_some_shell
+
+
+use strict;
+use Data::Dumper;
+use File::Find ();
+
+
+use vars qw/*name *dir *prune/;
+*name = *File::Find::name;
+*dir = *File::Find::dir;
+*prune = *File::Find::prune;
+
+my $version_2_0 = qr/(2.0.[\d+])/;
+my $version_2_1 = qr/(2.1.[\d+])/;
+my $version_2_2 = qr/(2.2.[\d+])/;
+my $version_2_3 = qr/(2.3.[\d+])/;
+my $version_2_4 = qr/(2.4.[\d+])/;
+my $version_2_5 = qr/(2.5.[\d+])/;
+my $version_2 = qr/(2.[\d+].[\d+])/;
+
+
+sub Usage {
+ die "Usage:\nFrom the cmake:
+ build-extension-update-files1 <old_version>";
+}
+
+my $old_version = shift @ARGV || die "Missing: old version to convert";
+my $DEBUG = "@PgRouting_DEBUG@";
+my $version = "@PGROUTING_VERSION@";
+my $signature_dir = '@CMAKE_CURRENT_BINARY_DIR@/../sigs';
+my $output_directory = '@CMAKE_CURRENT_BINARY_DIR@/..';
+my $curr_signature_file_name = "$signature_dir/pgrouting--$version.sig";
+my $old_signature_file_name = "$signature_dir/pgrouting--$old_version.sig";
+my $curr_sql_file_name = "$output_directory/pgrouting--$version.sql";
+
+
+
+######################################################
+#VERIFICATION SECTION
+######################################################
+
+# Verify Currently accepted old and new versions
+die "ERROR: 'build-extension-update-files1.pl' expected old version: 2.0.x ~~ 2.5.x\nHINT: Please check:\n file: sql/CMakeLists.txt\n Section: 'TARGET: update_files'"
+ unless $old_version =~ /$version_2_0|$version_2_1|$version_2_2|$version_2_3|$version_2_4|$version_2_5/;
+
+die "ERROR: 'build-extension-update-files1.pl' expected version: 2.5.x\nHINT: ERROR on PGROUTING_VERSION variable\nor File sql/scripts/build-extension-update-files1.pl needs to be reviewed"
+ unless $version =~ /$version_2_5/;
+
+die "ERROR: 'build-extension-update-files1.pl' can not upgrade from $old_version to $version\nHINT: Please check:\n file: sql/CMakeLists.txt\n Section: 'TARGET: update_files'" unless $version !~ $old_version;
+
+
+# Verify directories exist
+die "ERROR: Failed to find: input directory: '$signature_dir'\nHINT: 'sql/sigs' must exist in the repository" unless -d $signature_dir;
+die "ERROR: Failed to find: output directory: '$output_directory'\nHINT: unexpected error, this should not happen" unless -d $output_directory;
+
+
+# Verify current $version files exist.
+die "ERROR: Failed to find: old signature file: '$old_signature_file_name'\n" unless -f $old_signature_file_name;
+die "ERROR: Failed to find: current signature file: '$curr_signature_file_name'\n" unless -f $curr_signature_file_name;
+die "ERROR: Failed to find: current sql file: '$curr_sql_file_name'\n" unless -f $curr_sql_file_name;
+
+######################################################
+# process section
+######################################################
+#
+print "Building the updating files\n" if $DEBUG;
+
+my $curr_signature = read_and_parse_signature_file($curr_signature_file_name);
+my $old_signatures = read_and_parse_signature_file($old_signature_file_name);
+
+print "\ngenerating $old_version upgrade file\n" if $DEBUG;
+generate_upgrade_script($curr_signature, $old_signatures);
+
+exit 0;
+
+
+######################################################
+# subroutines
+######################################################
+
+# read_and_parse_signature_file
+# generate_upgrade_script
+#
+# Special case functions
+# underscored($old_version, $new_version);
+# deprecated_on_2_1($old_version, $new_version);
+# deprecated_on_2_2($old_version, $new_version);
+# pgr_version($old_version, $new_version);
+# pgr_trsp($old_version, $new_version);
+# pgr_bddijkstra($old_version, $new_version);
+# pgr_gsoc_vrppdtw($old_version, $new_version);
+# pgr_astar($old_version, $new_version);
+# pgr_ksp($old_version, $new_version);
+# pgr_drivingdistance($old_version, $new_version);
+# pgr_edgedisjointpaths($old_version, $new_version);
+
+
+# read and parse the .sig file and store the results in a hash
+sub read_and_parse_signature_file {
+ my $file = shift;
+
+ my %hash = ();
+
+ open(IN, $file) || die "ERROR: Failed to open '$file'\n";
+
+ # state:
+ # 0 - starting process
+ # 1 - processing types
+ # 2 - processing functions
+ # Other kinds of postgres objctes are not used in 2.x version of pgRouting
+ my $state = 0;
+ while (my $line = <IN>) {
+ if ($line =~ /^#VERSION pgrouting (\d+\.\d+\.\d+)\s*$/i) {
+ my $content_version = $1;
+
+ $hash{VERSION} = $content_version;
+
+ #check that the version is the same as the file
+ die "ERROR file $file has the version $1\n" unless $file =~ m/$content_version/
+ }
+ elsif ($line =~ /^#TYPES\s*/i) {
+ $state = 1;
+ next;
+ }
+ elsif ($line =~ /^#FUNCTIONS\s*/i) {
+ $state = 2;
+ next;
+ }
+ elsif ($line =~ /^#/) {
+ next;
+ }
+
+ # Remove spaces from the line
+ $line =~ s/\s*$//;
+
+ if ($state == 1) {
+ push @{$hash{types}}, $line;
+ }
+ elsif ($state == 2) {
+ push @{$hash{funcs}}, $line;
+ }
+ }
+ close(IN);
+
+ return \%hash;
+}
+
+
+
+# analyze the old signatures compared to the new signatures hash
+# and create an update script file for its version.
+sub generate_upgrade_script {
+ my ($new, $old) = @_;
+
+ my $err = 0;
+ my @types2remove = ();
+ my @commands = ();
+
+ # fetch the VERSION numbers
+ my $new_version = $new->{VERSION};
+ my $old_version = $old->{VERSION};
+
+ #------------------------------------
+ # analyze function signatures
+ #------------------------------------
+
+ my $new_signatures = $new->{funcs};
+ my $old_signatures = $old->{funcs};
+
+ # create an unique hash map of the new signatures
+ # to quickly determine if an old signature exists or not
+ # in the new signatures.
+ my %function_map = map { $_ => 1 } @{$new_signatures};
+
+
+ for my $old_function (sort @{$old_signatures}) {
+
+ # check if the old signature is in the new signature map
+ my $exists = $function_map{$old_function} || '0';
+ print "$old_version **WARN: DROP $old_function (does not exists on $new_version)\n"
+ if $DEBUG and not $exists and $old_function !~ /^_/;
+ print "$old_version INFO: DROP $old_function (does not exists on $new_version)\n"
+ if $DEBUG and not $exists and $old_function =~ /^_/;
+
+ # Nothing to do, the signature is valid on the current version
+ # Might not be the case because signature changes include
+ # - parameter names
+ # - different types of out parameters
+ # but the signature files do not catch that information (yet)
+ next if $function_map{$old_function};
+
+ # The function does NOT exist in the current version
+ # -- Remove from the extension
+ push @commands, "\n\nALTER EXTENSION pgrouting DROP FUNCTION $old_function;\n";
+ push @commands, "DROP FUNCTION IF EXISTS $old_function;\n";
+ }
+
+ #------------------------------------
+ # Special cases
+ #------------------------------------
+
+ push @commands, underscored($old_version, $new_version);
+ push @commands, deprecated_on_2_1($old_version, $new_version);
+ push @commands, deprecated_on_2_2($old_version, $new_version);
+ push @commands, pgr_version($old_version, $new_version);
+ push @commands, pgr_trsp($old_version, $new_version);
+ push @commands, pgr_bddijkstra($old_version, $new_version);
+ push @commands, pgr_gsoc_vrppdtw($old_version, $new_version);
+ push @commands, pgr_astar($old_version, $new_version);
+ push @commands, pgr_ksp($old_version, $new_version);
+ push @commands, pgr_drivingdistance($old_version, $new_version);
+ push @commands, pgr_edgedisjointpaths($old_version, $new_version);
+
+
+ # analyze types
+
+ my $ntype = $new->{types};
+ my $otype = $old->{types};
+
+ # create a hash like <name> => <column_list> for new types
+ my %ntype_h = ();
+ for my $x (@{$ntype}) {
+ #$x =~ m/(\w+)(\([^\)]+\))$/;
+ $ntype_h{lc($x)} = lc($x);
+ }
+
+ # check if old type exists with different column types
+ for my $x (@{$otype}) {
+ my $name = lc($x);
+ if (!exists $ntype_h{$name}) {
+ #types no longer used are dropped form the extension
+ push @commands, "ALTER EXTENSION pgrouting DROP TYPE $name;\n";
+ push @commands, "DROP TYPE $name;\n";
+ } else {
+ push @types2remove, $name;
+ }
+ }
+
+ # UGH! someone change the definition of the TYPE or reused an existing
+ # TYPE name which is VERY BAD because other poeple might be dependent
+ # on the old TYPE so we can DROP TYPE <type> CASCADE; or we might drop
+ # a user's function. So juse DIE and maybe someone can resolve this
+ die "ERROR: pgrouting TYPE changed! Cannot continue!\n" if $err;
+
+ write_script($old_version, $new_version, \@types2remove, join('', @commands));
+}
+
+
+sub deprecated_on_2_1 {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+ # This deprecated functions from so long ago should not being used by now
+ # Dropping
+
+ # file tested for 2.4 & 2.5
+ if ($old_version =~ /$version_2_0/
+ and $new_version !~ /$version_2_0/
+ and $new_version =~ /$version_2/) {
+ push @commands, "\n\n ------------------------------------------\n";
+ push @commands, "-- New functions: 2.0\n";
+ push @commands, "-- Signature change: 2.1\n";
+ push @commands, "-- Deprecated: 2.1\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, "-- pgr_dijkstra:\n";
+ push @commands, "-- $old_version: { sql, source_id, target_id, directed, has_reverse_cost}\n";
+ push @commands, "-- $new_version: {edges_sql, start_vid, end_vid, directed, has_rcost}\n";
+ push @commands, drop_special_case_function("pgr_dijkstra(text,integer,integer,boolean,boolean)", $old_version, $new_version);
+ }
+
+
+ if ($old_version =~ /$version_2_0|$version_2_1/
+ and $new_version !~ /$version_2_0|$version_2_1/
+ and $new_version =~ /$version_2/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.0\n";
+ push @commands, "-- Deprecated: 2.1\n";
+ push @commands, "-- Deprecated: 2.1 & 2.2\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, "-- pgr_ksp\n";
+ push @commands, "-- $old_version: { sql, source_id, target_id, no_paths,has_reverse_cost}\n" if $old_version =~ /$version_2_0/;
+ push @commands, "-- $old_version: { sql, start_vid, end_vid, k, has_rcost}\n" if $old_version =~ /$version_2_1/;
+ push @commands, "-- $new_version: {edges_sql, start_vid, end_vid, k, has_rcost}\n";
+ push @commands, drop_special_case_function("pgr_ksp(text,integer,integer,integer,boolean)", $old_version, $new_version);
+ }
+
+ return @commands;
+}
+
+
+
+sub deprecated_on_2_2 {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+ # This deprecated functions from so long ago should not being used by now
+ # Dropping
+
+ if ($old_version =~ /$version_2_0|$version_2_1/
+ and $new_version !~ /$version_2_0|$version_2_1/
+ and $new_version =~ /$version_2/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.0\n";
+ push @commands, "-- Signature change: 2.2\n";
+ push @commands, "-- Deprecated: 2.2\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, "-- pgr_apspjohnson\n";
+ push @commands, "-- $old_version: { sql}\n";
+ push @commands, "-- $new_version: {edges_sql}\n";
+ push @commands, drop_special_case_function("pgr_apspjohnson(text)", $old_version, $new_version);
+
+ push @commands, "-- pgr_apspwarshall\n";
+ push @commands, "-- $old_version: { sql, directed, has_reverse_cost}\n";
+ push @commands, "-- $new_version: {edges_sql, directed, has_rcost}\n";
+ push @commands, drop_special_case_function("pgr_apspwarshall(text,boolean,boolean)", $old_version, $new_version);
+
+ push @commands, "-- pgr_kdijkstrapath\n";
+ push @commands, "-- $old_version: {sql,source_vid, target_vid, directed, has_reverse_cost}\n";
+ push @commands, "-- $new_version: {sql, source, targets, directed, has_rcost} \n";
+ push @commands, drop_special_case_function("pgr_kdijkstrapath(text,integer,integer[],boolean,boolean)", $old_version, $new_version);
+
+ push @commands, "-- pgr_kdijkstracost\n";
+ push @commands, "-- $old_version: {sql,source_vid, target_vid, directed, has_reverse_cost}\n";
+ push @commands, "-- $new_version: {sql, source, targets, directed, has_rcost} \n";
+ push @commands, drop_special_case_function("pgr_kdijkstracost(text,integer,integer[],boolean,boolean)", $old_version, $new_version);
+ }
+
+
+ return @commands;
+}
+
+
+
+sub pgr_version {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+ # Out parameter changes:
+ # Dropping
+
+ if ($old_version =~ /$version_2_0|$version_2_1/
+ and $new_version !~ /$version_2_0|$version_2_1/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.0\n";
+ push @commands, "-- Signature change: 2.2\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, "-- pgr_version\n";
+ push @commands, "-- $old_version: {version,tag,build,hash,branch,boost}\n";
+ push @commands, "-- $new_version: {version,tag,hash,branch,boost}\n";
+ push @commands, drop_special_case_function("pgr_version()", $old_version, $new_version);
+ }
+
+ return @commands;
+}
+
+
+sub pgr_trsp {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+ # changes were so long ago and trsp is going to be deprecated eventually
+
+ if ($old_version =~ /$version_2_0|$version_2_1/
+ and $new_version !~ /$version_2_0|$version_2_1/
+ and $new_version =~ /$version_2/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.0\n";
+ push @commands, "-- Signature change: 2.2\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, "-- pgr_trsp\n";
+ push @commands, "-- $old_version: { sql, source_vid, target_vid, directed, has_reverse_cost, turn_restrict_sql}\n";
+ push @commands, "-- $new_version: {edges_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql}\n";
+ my $update_command = "
+UPDATE pg_proc SET
+proargnames = '{\"edges_sql\",\"start_vid\",\"end_vid\",\"directed\",\"has_rcost\",\"restrictions_sql\"}'
+WHERE proname = 'pgr_trsp'
+ AND proargnames = '{\"sql\",\"source_vid\",\"target_vid\",\"directed\",\"has_reverse_cost\",\"turn_restrict_sql\"}';
+";
+
+ push @commands, $update_command;
+ #push @commands, drop_special_case_function("pgr_trsp(text,integer,integer,boolean,boolean,text)", $old_version, $new_version);
+ }
+
+ if ($old_version =~ /$version_2_1/
+ and $new_version !~ /$version_2_1/
+ and $new_version =~ /$version_2/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.0\n";
+ push @commands, "-- Signature (types) change: 2.2\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, "-- pgr_trspviaedges\n";
+ push @commands, "-- $old_version: {sql, eids, pcts, directed, has_reverse_cost,turn_restrict_sql} \n";
+ push @commands, "-- $new_version: {sql, eids, pcts, directed, has_rcost, turn_restrict_sql}\n";
+ push @commands, drop_special_case_function("pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)", $old_version, $new_version);
+ }
+
+ return @commands;
+}
+
+
+sub pgr_bddijkstra {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+ # too recent, updating
+
+ if ($old_version =~ /$version_2_0|$version_2_1|$version_2_2|$version_2_3/
+ and $new_version !~ /$version_2_0|$version_2_1|$version_2_2|$version_2_3/
+ and $new_version =~ /$version_2/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.0\n";
+ push @commands, "-- Signature change: 2.4\n";
+ push @commands, "-- Deprecated: 2.4\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, "-- pgr_bddijkstra\n";
+ push @commands, "-- $old_version: { sql, source_vid, target_vid, directed, has_reverse_cost} \n";
+ push @commands, "-- $new_version: {edges_sql, start_vid, end_vid, directed, has_rcost}\n";
+ my $update_command = "
+UPDATE pg_proc SET
+proargnames = '{\"edges_sql\",\"start_vid\",\"end_vid\",\"directed\",\"has_rcost\"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{\"sql\",\"source_vid\",\"target_vid\",\"directed\",\"has_reverse_cost\"}';
+";
+
+ push @commands, $update_command;
+ #push @commands, drop_special_case_function("pgr_bddijkstra(text,integer,integer,boolean,boolean)", $old_version, $new_version);
+ }
+
+ return @commands;
+}
+
+
+
+sub pgr_ksp {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+ if ($old_version =~ /$version_2_1/ and $new_version !~ /$version_2_1/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.1\n";
+ push @commands, "-- Signature change: 2.2\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, "-- pgr_ksp\n";
+ push @commands, "-- $old_version: { sql, start_vid, end_vid, k, directed, heap_paths, seq, path_id, path_seq, node,edge, cost, agg_cost}\n";
+ push @commands, "-- $new_version: {edges_sql, start_vid, end_vid, k, directed, heap_paths, seq, path_id, path_seq, node,edge, cost, agg_cost}\n";
+ push @commands, drop_special_case_function("pgr_ksp(text,bigint,bigint,integer,boolean,boolean)", $old_version, $new_version);
+ }
+
+ return @commands;
+}
+
+
+sub underscored {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+ # underscored are dropped
+ # Users should not be using this functions
+
+ if ($old_version =~ /$version_2_1/ and $new_version !~ /$version_2_1/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.1\n";
+ push @commands, "-- Signature change: 2.2\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, drop_special_case_function("_pgr_ksp(text,bigint,bigint,integer,boolean,boolean)", $old_version, $new_version);
+ }
+
+ if ($old_version =~ /$version_2_1/ and $new_version =~ /$version_2_4/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.1\n";
+ push @commands, "-- Signature change: 2.4\n";
+ push @commands, "------------------------------------------\n";
+ push @commands, drop_special_case_function("_pgr_dijkstra(text,bigint,bigint,boolean,boolean)", $old_version, $new_version);
+ push @commands, drop_special_case_function("_pgr_dijkstra(text,bigint,anyarray,boolean,boolean)", $old_version, $new_version);
+ push @commands, drop_special_case_function("_pgr_dijkstra(text,anyarray,bigint,boolean,boolean)", $old_version, $new_version);
+ push @commands, drop_special_case_function("_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean)",$old_version, $new_version);
+ }
+
+
+ return @commands;
+}
+
+
+sub pgr_gsoc_vrppdtw {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+ # too long ago
+ # dropping
+
+ if ($old_version =~ /$version_2_1|$version_2_2/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New function: 2.1\n";
+ push @commands, "-- (types) change: 2.3\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, drop_special_case_function("pgr_gsoc_vrppdtw(text,integer,integer)", $old_version, $new_version);
+ }
+
+
+ return @commands;
+}
+
+sub pgr_astar {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+ if ($old_version =~ /$version_2_0|$version_2_1|$version_2_2/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions on 2.0\n";
+ push @commands, "-- Signature change on 2.3\n";
+ push @commands, "-- Deprecated on 2.4\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, drop_special_case_function("pgr_astar(text,integer,integer,boolean,boolean)", $old_version, $new_version);
+ }
+
+ return @commands;
+}
+
+
+
+sub pgr_drivingdistance {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+
+ if ($old_version =~ /$version_2_1/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.0\n";
+ push @commands, "-- Signature change: 2.1\n";
+ push @commands, "------------------------------------------\n";
+ push @commands, "-- $old_version: {sql,source,distance,directed,has_rcost}\n";
+ push @commands, "-- $new_version: {edges_sql,source,distance,directed,has_rcost}\n";
+
+ my $update_command = "
+UPDATE pg_proc SET
+proargnames = '{\"edges_sql\",\"source\",\"distance\",\"directed\",\"has_rcost\"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{\"sql\",\"source\",\"distance\",\"directed\",\"has_rcost\"}';
+";
+
+ push @commands, $update_command;
+
+ #push @commands, drop_special_case_function("pgr_drivingdistance(text,bigint,double precision,boolean,boolean)", $old_version, $new_version);
+ }
+
+
+ if ($old_version =~ /$version_2_1|$version_2_2|$version_2_3/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.1\n";
+ push @commands, "-- Signature change: 2.4\n";
+ push @commands, "------------------------------------------\n";
+ push @commands, "-- $old_version: { sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}\n" if $old_version =~ /$version_2_1/;
+ push @commands, "-- $old_version: {edges_sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}\n" if $old_version =~ /$version_2_2|$version_2_3/;
+ push @commands, "-- $new_version: {edges_sql,start_vid,distance,directed,seq,node,edge,cost,agg_cost}\n";
+
+ my $update_command = "
+UPDATE pg_proc SET
+proargnames = '{\"edges_sql\",\"start_vid\",\"distance\",\"directed\",\"seq\",\"node\",\"edge\",\"cost\",\"agg_cost\"}'
+WHERE proname = 'pgr_drivingdistance'";
+ push @commands, $update_command;
+
+ $update_command = "
+ AND proargnames = '{\"sql\",\"start_v\",\"distance\",\"directed\",\"seq\",\"node\",\"edge\",\"cost\",\"agg_cost\"}';
+" if $old_version =~ /$version_2_1/;
+
+ $update_command = "
+ AND proargnames = '{\"edges_sql\",\"start_v\",\"distance\",\"directed\",\"seq\",\"node\",\"edge\",\"cost\",\"agg_cost\"}';
+" if $old_version =~ /$version_2_2|$version_2_3/;
+
+ push @commands, $update_command;
+
+ #push @commands, drop_special_case_function("pgr_drivingdistance(text,bigint,double precision,boolean)", $old_version, $new_version);
+ }
+
+
+ if ($old_version =~ /$version_2_1|$version_2_2|$version_2_3/) {
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.1\n";
+ push @commands, "-- Signature change: 2.4\n";
+ push @commands, "------------------------------------------\n";
+ push @commands, "-- $old_version: {sql, start_v, distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}\n";
+ push @commands, "-- $new_version: {edges_sql,start_vids,distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}\n";
+
+ my $update_command = "
+UPDATE pg_proc SET
+proargnames = '{\"edges_sql\",\"start_vids\",\"distance\",\"directed\",\"equicost\",\"seq\",\"from_v\",\"node\",\"edge\",\"cost\",\"agg_cost\"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{\"sql\",\"start_v\",\"distance\",\"directed\",\"equicost\",\"seq\",\"from_v\",\"node\",\"edge\",\"cost\",\"agg_cost\"}';
+";
+
+ push @commands, $update_command;
+
+ #push @commands, drop_special_case_function("pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)", $old_version, $new_version);
+ }
+ return @commands;
+}
+
+
+
+
+sub pgr_edgedisjointpaths {
+ my ($old_version, $new_version) = @_;
+ my @commands = ();
+
+ if ($old_version =~ /$version_2_3|$version_2_4/
+ and $new_version !~ /$version_2_3|$version_2_4/) {
+
+ push @commands, "\n\n------------------------------------------\n";
+ push @commands, "-- New functions: 2.3\n";
+ push @commands, "-- Signature change: 2.5\n";
+ push @commands, "-- Inner query changed: 2.5\n";
+ push @commands, "------------------------------------------\n";
+
+ push @commands, drop_special_case_function("pgr_edgedisjointpaths(text,bigint,bigint,boolean)", $old_version, $new_version);
+ push @commands, drop_special_case_function("pgr_edgedisjointpaths(text,bigint,anyarray,boolean)", $old_version, $new_version);
+ push @commands, drop_special_case_function("pgr_edgedisjointpaths(text,anyarray,bigint,boolean)", $old_version, $new_version);
+ push @commands, drop_special_case_function("pgr_edgedisjointpaths(text,anyarray,anyarray,boolean)", $old_version, $new_version);
+ }
+
+ return @commands;
+}
+
+
+
+sub drop_special_case_function {
+ my ($function, $old_version, $new_version) = @_;
+ my @commands = ();
+
+ print "$old_version **WARN: DROP $function (something changed for $new_version)\n"
+ if $DEBUG;
+ push @commands, "\nALTER EXTENSION pgrouting DROP FUNCTION $function;\n";
+ push @commands, "DROP FUNCTION IF EXISTS $function;\n\n\n";
+ return @commands;
+}
+
+
+sub write_script {
+ my ($old_version, $new_version, $types, $commands) = @_;
+
+ my $contents = get_current_sql($types);
+
+ open(OUT, ">$output_directory/pgrouting--$old_version--$new_version.sql")
+ || die "ERROR: failed to create '$output_directory/pgrouting-pgrouting--$old_version--$new_version.sql' : $!\n";
+
+
+ # write out the header and the commands to clean up the old extension
+ print OUT <<EOF;
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from $old_version to $new_version
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\\echo Use "ALTER extension pgrouting update to '$new_version'" to load this file. \\quit
+
+
+-------------------------------------
+-- remove functions no longer in the $new_version extension
+-------------------------------------
+
+
+$commands
+
+$contents
+
+EOF
+
+ close(OUT);
+ print " -- Created lib/pgrouting--$old_version--$new_version.sql.in\n" if $DEBUG;
+}
+
+
+sub get_current_sql {
+ my ($types) = @_;
+
+ open(IN, $curr_sql_file_name) ||
+ die "ERROR: Failed to find '$curr_sql_file_name' : $!\n";
+ my @file = <IN>;
+ close(IN);
+ my $contents = join('', @file);
+
+ #remove existing types
+ for my $type (@{$types}) {
+ $contents =~ s{
+ create\s+type\s+$type
+ .*?
+ \);
+ }[]gsxi;
+ }
+
+
+ $contents =~ s/\\echo Use "CREATE EXTENSION pgrouting" to load this file. \\quit//;
+
+ return $contents
+}
+
+
diff --git a/sql/sigs/CMakeLists.txt b/sql/sigs/CMakeLists.txt
new file mode 100644
index 0000000..6018cf7
--- /dev/null
+++ b/sql/sigs/CMakeLists.txt
@@ -0,0 +1,24 @@
+SET(OLD_SIGNATURES
+ 2.0.0
+ 2.0.1
+ 2.1.0
+ 2.2.0
+ 2.2.1
+ 2.2.2
+ 2.2.3
+ 2.2.4
+ 2.3.0
+ 2.3.1
+ 2.3.2
+ 2.4.0
+ 2.4.1
+ 2.4.2
+ )
+
+foreach (f ${OLD_SIGNATURES})
+ configure_file(pgrouting--${f}.sig pgrouting--${f}.sig COPYONLY)
+ list(APPEND SIGNATURE_FILES pgrouting--${f}.sig)
+endforeach()
+configure_file(pgrouting--${PGROUTING_VERSION}.sig pgrouting--${PGROUTING_VERSION}.sig COPYONLY)
+
+set(OLD_SIGNATURES ${OLD_SIGNATURES} PARENT_SCOPE)
diff --git a/tools/sigs/pgrouting--2.0.0.sig b/sql/sigs/pgrouting--2.0.0.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.0.0.sig
rename to sql/sigs/pgrouting--2.0.0.sig
diff --git a/tools/sigs/pgrouting--2.0.1.sig b/sql/sigs/pgrouting--2.0.1.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.0.1.sig
rename to sql/sigs/pgrouting--2.0.1.sig
diff --git a/tools/sigs/pgrouting--2.1.0.sig b/sql/sigs/pgrouting--2.1.0.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.1.0.sig
rename to sql/sigs/pgrouting--2.1.0.sig
diff --git a/tools/sigs/pgrouting--2.2.0.sig b/sql/sigs/pgrouting--2.2.0.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.2.0.sig
rename to sql/sigs/pgrouting--2.2.0.sig
diff --git a/tools/sigs/pgrouting--2.2.1.sig b/sql/sigs/pgrouting--2.2.1.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.2.1.sig
rename to sql/sigs/pgrouting--2.2.1.sig
diff --git a/tools/sigs/pgrouting--2.2.2.sig b/sql/sigs/pgrouting--2.2.2.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.2.2.sig
rename to sql/sigs/pgrouting--2.2.2.sig
diff --git a/tools/sigs/pgrouting--2.2.3.sig b/sql/sigs/pgrouting--2.2.3.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.2.3.sig
rename to sql/sigs/pgrouting--2.2.3.sig
diff --git a/tools/sigs/pgrouting--2.2.4.sig b/sql/sigs/pgrouting--2.2.4.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.2.4.sig
rename to sql/sigs/pgrouting--2.2.4.sig
diff --git a/tools/sigs/pgrouting--2.3.0.sig b/sql/sigs/pgrouting--2.3.0.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.3.0.sig
rename to sql/sigs/pgrouting--2.3.0.sig
diff --git a/tools/sigs/pgrouting--2.3.1.sig b/sql/sigs/pgrouting--2.3.1.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.3.1.sig
rename to sql/sigs/pgrouting--2.3.1.sig
diff --git a/tools/sigs/pgrouting--2.3.2.sig b/sql/sigs/pgrouting--2.3.2.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.3.2.sig
rename to sql/sigs/pgrouting--2.3.2.sig
diff --git a/tools/sigs/pgrouting--2.4.0.sig b/sql/sigs/pgrouting--2.4.0.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.4.0.sig
rename to sql/sigs/pgrouting--2.4.0.sig
diff --git a/tools/sigs/pgrouting--2.4.1.sig b/sql/sigs/pgrouting--2.4.1.sig
similarity index 100%
rename from tools/sigs/pgrouting--2.4.1.sig
rename to sql/sigs/pgrouting--2.4.1.sig
diff --git a/tools/curr-sig/pgrouting--2.4.2.sig b/sql/sigs/pgrouting--2.4.2.sig
similarity index 100%
rename from tools/curr-sig/pgrouting--2.4.2.sig
rename to sql/sigs/pgrouting--2.4.2.sig
diff --git a/sql/sigs/pgrouting--2.5.0.sig b/sql/sigs/pgrouting--2.5.0.sig
new file mode 100644
index 0000000..54f05b9
--- /dev/null
+++ b/sql/sigs/pgrouting--2.5.0.sig
@@ -0,0 +1,185 @@
+#VERSION pgrouting 2.5.0
+#TYPES
+pgr_costresult
+pgr_costresult3
+pgr_geomresult
+#FUNCTIONS
+pgr_alphashape(text,double precision)
+pgr_analyzegraph(text,double precision,text,text,text,text,text)
+pgr_analyzeoneway(text,text[],text[],text[],text[],boolean,text,text,text)
+pgr_apspjohnson(text)
+pgr_apspwarshall(text,boolean,boolean)
+pgr_articulationpoints(text)
+pgr_astarcostmatrix(text,anyarray,boolean,integer,double precision,double precision)
+pgr_astarcost(text,anyarray,anyarray,boolean,integer,double precision,double precision)
+pgr_astarcost(text,anyarray,bigint,boolean,integer,double precision,double precision)
+pgr_astarcost(text,bigint,anyarray,boolean,integer,double precision,double precision)
+pgr_astarcost(text,bigint,bigint,boolean,integer,double precision,double precision)
+pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision)
+_pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean,boolean)
+pgr_astar(text,anyarray,bigint,boolean,integer,double precision,double precision)
+pgr_astar(text,bigint,anyarray,boolean,integer,double precision,double precision)
+pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision)
+pgr_astar(text,integer,integer,boolean,boolean)
+pgr_bdastarcostmatrix(text,anyarray,boolean,integer,numeric,numeric)
+pgr_bdastarcost(text,anyarray,anyarray,boolean,integer,numeric,numeric)
+pgr_bdastarcost(text,anyarray,bigint,boolean,integer,numeric,numeric)
+pgr_bdastarcost(text,bigint,anyarray,boolean,integer,numeric,numeric)
+pgr_bdastarcost(text,bigint,bigint,boolean,integer,numeric,numeric)
+_pgr_bdastar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean)
+pgr_bdastar(text,anyarray,anyarray,boolean,integer,numeric,numeric)
+pgr_bdastar(text,anyarray,bigint,boolean,integer,numeric,numeric)
+pgr_bdastar(text,bigint,anyarray,boolean,integer,numeric,numeric)
+pgr_bdastar(text,bigint,bigint)
+pgr_bdastar(text,bigint,bigint,boolean,integer,numeric,numeric)
+pgr_bdastar(text,integer,integer,boolean,boolean)
+pgr_bddijkstracostmatrix(text,anyarray,boolean)
+pgr_bddijkstracost(text,anyarray,anyarray,boolean)
+pgr_bddijkstracost(text,anyarray,bigint,boolean)
+pgr_bddijkstracost(text,bigint,anyarray,boolean)
+pgr_bddijkstracost(text,bigint,bigint,boolean)
+pgr_bddijkstra(text,anyarray,anyarray,boolean)
+_pgr_bddijkstra(text,anyarray,anyarray,boolean,boolean)
+pgr_bddijkstra(text,anyarray,bigint,boolean)
+pgr_bddijkstra(text,bigint,anyarray,boolean)
+pgr_bddijkstra(text,bigint,bigint)
+pgr_bddijkstra(text,bigint,bigint,boolean)
+pgr_bddijkstra(text,integer,integer,boolean,boolean)
+pgr_biconnectedcomponents(text)
+pgr_boykovkolmogorov(text,anyarray,anyarray)
+pgr_boykovkolmogorov(text,anyarray,bigint)
+pgr_boykovkolmogorov(text,bigint,anyarray)
+pgr_boykovkolmogorov(text,bigint,bigint)
+pgr_bridges(text)
+_pgr_checkverttab(text,text[],integer,text)
+pgr_connectedcomponents(text)
+pgr_contractgraph(text,bigint[],integer,bigint[],boolean)
+_pgr_createindex(text,text,text,integer,text)
+_pgr_createindex(text,text,text,text,integer,text)
+pgr_createtopology(text,double precision,text,text,text,text,text,boolean)
+pgr_createverticestable(text,text,text,text,text)
+pgr_dijkstracostmatrix(text,anyarray,boolean)
+pgr_dijkstracost(text,anyarray,anyarray,boolean)
+pgr_dijkstracost(text,anyarray,bigint,boolean)
+pgr_dijkstracost(text,bigint,anyarray,boolean)
+pgr_dijkstracost(text,bigint,bigint,boolean)
+pgr_dijkstra(text,anyarray,anyarray,boolean)
+_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean)
+pgr_dijkstra(text,anyarray,bigint,boolean)
+pgr_dijkstra(text,bigint,anyarray,boolean)
+pgr_dijkstra(text,bigint,bigint)
+pgr_dijkstra(text,bigint,bigint,boolean)
+pgr_dijkstra(text,integer,integer,boolean,boolean)
+pgr_dijkstravia(text,anyarray,boolean,boolean,boolean)
+pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)
+pgr_drivingdistance(text,bigint,double precision,boolean)
+pgr_drivingdistance(text,bigint,double precision,boolean,boolean)
+pgr_edgedisjointpaths(text,anyarray,anyarray,boolean)
+pgr_edgedisjointpaths(text,anyarray,bigint,boolean)
+pgr_edgedisjointpaths(text,bigint,anyarray,boolean)
+pgr_edgedisjointpaths(text,bigint,bigint,boolean)
+pgr_edmondskarp(text,anyarray,anyarray)
+pgr_edmondskarp(text,anyarray,bigint)
+pgr_edmondskarp(text,bigint,anyarray)
+pgr_edmondskarp(text,bigint,bigint)
+_pgr_endpoint(geometry)
+pgr_endpoint(geometry)
+pgr_euclediantsp(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean)
+pgr_flipedges(geometry[])
+pgr_floydwarshall(text,boolean)
+pgr_getcolumnname(text,text)
+_pgr_getcolumnname(text,text,integer,text)
+_pgr_getcolumnname(text,text,text,integer,text)
+_pgr_getcolumntype(text,text,integer,text)
+_pgr_getcolumntype(text,text,text,integer,text)
+_pgr_get_statement(text)
+pgr_gettablename(text)
+_pgr_gettablename(text,integer,text)
+_pgr_gsoc_vrppdtw(text,integer,double precision,double precision,integer)
+pgr_gsoc_vrppdtw(text,integer,integer)
+pgr_iscolumnindexed(text,text)
+_pgr_iscolumnindexed(text,text,integer,text)
+_pgr_iscolumnindexed(text,text,text,integer,text)
+_pgr_iscolumnintable(text,text)
+pgr_iscolumnintable(text,text)
+pgr_johnson(text,boolean)
+pgr_kdijkstracost(text,integer,integer[],boolean,boolean)
+pgr_kdijkstrapath(text,integer,integer[],boolean,boolean)
+_pgr_ksp(text,bigint,bigint,integer,boolean,boolean)
+pgr_ksp(text,bigint,bigint,integer,boolean,boolean)
+pgr_ksp(text,integer,integer,integer,boolean)
+pgr_labelgraph(text,text,text,text,text,text)
+pgr_linegraph(text,boolean)
+_pgr_makedistancematrix(text)
+pgr_maxcardinalitymatch(text,boolean)
+pgr_maxflowboykovkolmogorov(text,anyarray,anyarray)
+pgr_maxflowboykovkolmogorov(text,anyarray,bigint)
+pgr_maxflowboykovkolmogorov(text,bigint,anyarray)
+pgr_maxflowboykovkolmogorov(text,bigint,bigint)
+pgr_maxflowedmondskarp(text,anyarray,anyarray)
+pgr_maxflowedmondskarp(text,anyarray,bigint)
+pgr_maxflowedmondskarp(text,bigint,anyarray)
+pgr_maxflowedmondskarp(text,bigint,bigint)
+pgr_maxflowpushrelabel(text,anyarray,anyarray)
+pgr_maxflowpushrelabel(text,anyarray,bigint)
+pgr_maxflowpushrelabel(text,bigint,anyarray)
+pgr_maxflowpushrelabel(text,bigint,bigint)
+pgr_maxflow(text,anyarray,anyarray)
+_pgr_maxflow(text,anyarray,anyarray,integer,boolean)
+pgr_maxflow(text,anyarray,bigint)
+pgr_maxflow(text,bigint,anyarray)
+pgr_maxflow(text,bigint,bigint)
+pgr_maximumcardinalitymatching(text,boolean)
+_pgr_msg(integer,text,text)
+pgr_nodenetwork(text,double precision,text,text,text,text,boolean)
+_pgr_onerror(boolean,integer,text,text,text,text)
+_pgr_parameter_check(text,text,boolean)
+_pgr_pickdelivereuclidean(text,text,double precision,integer,integer)
+_pgr_pickdeliver(text,text,text,double precision,integer,integer)
+pgr_pointsaspolygon(character varying,double precision)
+pgr_pointstodmatrix(geometry[],integer)
+pgr_pointstovids(geometry[],text,double precision)
+pgr_pointtoedgenode(text,geometry,double precision)
+_pgr_pointtoid(geometry,double precision,text,integer)
+pgr_pushrelabel(text,anyarray,anyarray)
+pgr_pushrelabel(text,anyarray,bigint)
+pgr_pushrelabel(text,bigint,anyarray)
+pgr_pushrelabel(text,bigint,bigint)
+_pgr_quote_ident(text)
+pgr_quote_ident(text)
+_pgr_startpoint(geometry)
+pgr_startpoint(geometry)
+pgr_strongcomponents(text)
+pgr_texttopoints(text,integer)
+_pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text)
+pgr_trsp(text,integer,double precision,integer,double precision,boolean,boolean,text)
+_pgr_trsp(text,integer,integer,boolean,boolean,text)
+pgr_trsp(text,integer,integer,boolean,boolean,text)
+pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text)
+pgr_trspviavertices(text,anyarray,boolean,boolean,text)
+_pgr_trspviavertices(text,integer[],boolean,boolean,text)
+pgr_tsp(double precision[],integer,integer)
+pgr_tsp(text,bigint,bigint,double precision,integer,integer,integer,double precision,double precision,double precision,boolean)
+pgr_tsp(text,integer,integer)
+_pgr_unnest_matrix(double precision[])
+pgr_version()
+_pgr_versionless(text,text)
+pgr_versionless(text,text)
+pgr_vidstodmatrix(integer[],geometry[],text,double precision)
+pgr_vidstodmatrix(text,integer[],boolean,boolean,boolean)
+_pgr_vrponedepot(text,text,text,integer)
+pgr_vrponedepot(text,text,text,integer)
+pgr_withpointscostmatrix(text,text,anyarray,boolean,character)
+pgr_withpointscost(text,text,anyarray,anyarray,boolean,character)
+pgr_withpointscost(text,text,anyarray,bigint,boolean,character)
+pgr_withpointscost(text,text,bigint,anyarray,boolean,character)
+pgr_withpointscost(text,text,bigint,bigint,boolean,character)
+pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)
+pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)
+pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)
+pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean)
+_pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean,boolean)
+pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean)
+pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean)
+pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean)
+_pgr_withpointsvia(text,bigint[],double precision[],boolean)
diff --git a/sql/topology/CMakeLists.txt b/sql/topology/CMakeLists.txt
new file mode 100644
index 0000000..cb1f02d
--- /dev/null
+++ b/sql/topology/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+SET(LOCAL_FILES
+ pgrouting_topology.sql
+ pgrouting_analytics.sql
+ create_vertices_table.sql
+ nodeNetwork.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/topology/create_vertices_table.sql b/sql/topology/create_vertices_table.sql
new file mode 100644
index 0000000..a6f0e56
--- /dev/null
+++ b/sql/topology/create_vertices_table.sql
@@ -0,0 +1,254 @@
+/*PGR-GNU*****************************************************************
+File: create_vertices_table.sql
+
+Copyright (c) 2013 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+/*
+
+This function should not be used directly. Use assign_vertex_id instead
+Inserts a point into the vertices tablei "vname" with the srid "srid", and return an id
+of a new point or an existing point. Tolerance is the minimal distance
+between existing points and the new point to create a new point.
+
+Modified by: Vicky Vergara <vicky_vergara at hotmail,com>
+
+HISTORY
+Last changes: 2013-03-22
+2013-08-19: handling schemas
+*/
+
+
+
+/*
+.. function:: pgr_createVerticesTable(edge_table text, the_geom text, source text default 'source', target text default 'target')
+
+ Based on "source" and "target" columns creates the vetrices_pgr table for edge_table
+ Ignores rows where "source" or "target" have NULL values
+
+ Author: Vicky Vergara <vicky_vergara at hotmail,com>
+
+ HISTORY
+ Created 2013-08-19
+*/
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
diff --git a/sql/topology/nodeNetwork.sql b/sql/topology/nodeNetwork.sql
new file mode 100644
index 0000000..d5e6edd
--- /dev/null
+++ b/sql/topology/nodeNetwork.sql
@@ -0,0 +1,289 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Author: Nicolas Ribot, 2013
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+ */
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
diff --git a/src/topology/sql/pgrouting_analytics.sql b/sql/topology/pgrouting_analytics.sql
similarity index 100%
rename from src/topology/sql/pgrouting_analytics.sql
rename to sql/topology/pgrouting_analytics.sql
diff --git a/sql/topology/pgrouting_topology.sql b/sql/topology/pgrouting_topology.sql
new file mode 100644
index 0000000..0f47a87
--- /dev/null
+++ b/sql/topology/pgrouting_topology.sql
@@ -0,0 +1,289 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Author: Christian Gonzalez
+Author: Stephen Woodbridge <woodbri at imaptools.com>
+Author: Vicky Vergara <vicky_vergara at hotmail,com>
+Mail: project at 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*/
+
+/*
+.. function:: _pgr_createtopology(edge_table, tolerance,the_geom,id,source,target,rows_where)
+
+Based on the geometry:
+Fill the source and target column for all lines.
+All line end points within a distance less than tolerance, are assigned the same id
+
+Author: Christian Gonzalez <christian.gonzalez at sigis.com.ve>
+Author: Stephen Woodbridge <woodbri at imaptools.com>
+Modified by: Vicky Vergara <vicky_vergara at hotmail,com>
+
+HISTORY
+Last changes: 2013-03-22
+2013-08-19: handling schemas
+2014-july: fixes issue 211
+*/
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
diff --git a/sql/trsp/CMakeLists.txt b/sql/trsp/CMakeLists.txt
new file mode 100644
index 0000000..9d31e56
--- /dev/null
+++ b/sql/trsp/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ trsp_V2.2.sql
+ vias_trsp_V2.2.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/trsp/routing_trsp_vias.sql b/sql/trsp/routing_trsp_vias.sql
new file mode 100644
index 0000000..9169fc3
--- /dev/null
+++ b/sql/trsp/routing_trsp_vias.sql
@@ -0,0 +1,165 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2013 pgRouting developers
+Mail: project at 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*/
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+/*
+ * pgr_trsp(sql text, vids integer[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ *
+ * Compute TRSP with via points. We compute the path between vids[i] and vids[i+1] and chain the results together.
+ *
+ * NOTE: this is a prototype function, we can gain a lot of efficiencies by implementing this in C/C++
+ *
+*/
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(sql, vids[i], vids[i+1], directed, has_reverse_cost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function _pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+/*
+ * pgr_trsp(sql text, eids integer[], pcts float8[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ *
+ * Compute TRSP with edge_ids and pposition along edge. We compute the path between eids[i], pcts[i] and eids[i+1], pcts[i+1]
+ * and chain the results together.
+ *
+ * NOTE: this is a prototype function, we can gain a lot of efficiencies by implementing this in C/C++
+ *
+*/
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+
+begin
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_reverse_cost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
diff --git a/sql/trsp/trsp_V2.2.sql b/sql/trsp/trsp_V2.2.sql
new file mode 100644
index 0000000..406bbcf
--- /dev/null
+++ b/sql/trsp/trsp_V2.2.sql
@@ -0,0 +1,216 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+/*
+-----------------------------------------------------------------------
+-- Core function for time_dependent_shortest_path computation
+-- See README for description
+-----------------------------------------------------------------------
+--TODO - Do we need to add another sql text for the query on time-dependent-weights table?
+-- - For now just checking with static data, so the query is similar to shortest_paths.
+*/
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '${MODULE_PATHNAME}', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '${MODULE_PATHNAME}', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+/* pgr_trsp VERTEX
+
+ - if size of restrictions_sql is Zero or no restrictions_sql are given
+ then call to pgr_dijkstra is made
+
+ - because it reads the data wrong, when there is a reverse_cost column:
+ - put all data costs in one cost column and
+ - a call is made to trsp without only the positive values
+*/
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+/* pgr_trspVia Vertices
+ - if size of restrictions_sql is Zero or no restrictions_sql are given
+ then call to pgr_dijkstra is made
+
+ - because it reads the data wrong, when there is a reverse_cost column:
+ - put all data costs in one cost column and
+ - a call is made to trspViaVertices without only the positive values
+*/
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
diff --git a/sql/trsp/viaEdges_v2.2.sql b/sql/trsp/viaEdges_v2.2.sql
new file mode 100644
index 0000000..d246445
--- /dev/null
+++ b/sql/trsp/viaEdges_v2.2.sql
@@ -0,0 +1,87 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at 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*/
+
+/* trspViaEdges
+
+ - when contradiction (has rcost but does not want it):
+ - the call is made to trsp only with cost column
+
+ - When there are no restrictions:
+ a call to _pgr_withPointsVia
+ - Else
+ a call to _pgr_trspViaEdges
+ - which calls repetedly the original C/C++ code
+*/
+
+
+/*
+------------------------------
+-- pgr_trspViaEdges Wrapper
+------------------------------
+*/
+CREATE OR REPLACE FUNCTION pgr_trspViaEdges(
+ sql TEXT,
+ eids INTEGER[],
+ pcts float[],
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ turn_restrict_sql text DEFAULT NULL::TEXT)
+ RETURNS SETOF pgr_costresult3 AS
+$BODY$
+DECLARE
+ i INTEGER;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first BOOLEAN := true;
+ seq INTEGER := 0;
+ seq2 INTEGER :=0;
+ has_reverse BOOLEAN;
+ edges_sql TEXT;
+
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed)
+ RETURN;
+ END IF;
+
+
+ -- make the call to the original code
+ RETURN query SELECT * FROM _pgr_trspViaEdges(edges_sql, eids, pcts, directed, has_rcost, turn_restrict_sql);
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE
+cost 100
+rows 1000;
diff --git a/sql/trsp/viaVertices_v2.2.sql b/sql/trsp/viaVertices_v2.2.sql
new file mode 100644
index 0000000..6434c47
--- /dev/null
+++ b/sql/trsp/viaVertices_v2.2.sql
@@ -0,0 +1,82 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at 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*/
+
+/* trspViaVertices
+
+ - when contradiction (has rcost but does not want it):
+ - the call is made to trsp only with cost column
+
+ - When there are no restrictions:
+ a call to pgr_dijkstraVia
+ - Else
+ a call to _pgr_trspViaVertices
+ - which calls repetedly the original C/C++ code
+
+------------------------------
+-- pgr_trspViaVertices Wrapper
+------------------------------
+*/
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
diff --git a/sql/trsp/vias_trsp_V2.2.sql b/sql/trsp/vias_trsp_V2.2.sql
new file mode 100644
index 0000000..7b9eb44
--- /dev/null
+++ b/sql/trsp/vias_trsp_V2.2.sql
@@ -0,0 +1,191 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+/*
+ * pgr_trsp(sql text, vids integer[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ *
+ * Compute TRSP with via points. We compute the path between vids[i] and vids[i+1] and chain the results together.
+ *
+ * NOTE: this is a prototype function, we can gain a lot of efficiencies by implementing this in C/C++
+ *
+*/
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+/*
+ * pgr_trsp(sql text, eids integer[], pcts float8[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ *
+ * Compute TRSP with edge_ids and pposition along edge. We compute the path between eids[i], pcts[i] and eids[i+1], pcts[i+1]
+ * and chain the results together.
+ *
+ * NOTE: this is a prototype function, we can gain a lot of efficiencies by implementing this in C/C++
+ *
+*/
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
diff --git a/sql/tsp/CMakeLists.txt b/sql/tsp/CMakeLists.txt
new file mode 100644
index 0000000..9c8dc98
--- /dev/null
+++ b/sql/tsp/CMakeLists.txt
@@ -0,0 +1,15 @@
+
+SET(LOCAL_FILES
+ tsp_v2.0_matrix.sql
+ tsp_v2.0_coordinates.sql
+ routing_tsp_wrappers.sql
+ TSP.sql
+ eucledianTSP.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/tsp/TSP.sql b/sql/tsp/TSP.sql
new file mode 100644
index 0000000..605c5e1
--- /dev/null
+++ b/sql/tsp/TSP.sql
@@ -0,0 +1,50 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '${MODULE_PATHNAME}', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
diff --git a/sql/tsp/eucledianTSP.sql b/sql/tsp/eucledianTSP.sql
new file mode 100644
index 0000000..a06b475
--- /dev/null
+++ b/sql/tsp/eucledianTSP.sql
@@ -0,0 +1,51 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '${MODULE_PATHNAME}', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
diff --git a/sql/tsp/routing_tsp_wrappers.sql b/sql/tsp/routing_tsp_wrappers.sql
new file mode 100644
index 0000000..42b19d0
--- /dev/null
+++ b/sql/tsp/routing_tsp_wrappers.sql
@@ -0,0 +1,63 @@
+/*PGR-MIT*****************************************************************
+
+--
+-- Copyright (c) 2013 Stephen Woodbridge
+--
+-- This files is released under an MIT-X license.
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+MIT/X license
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+********************************************************************PGR-MIT*/
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
diff --git a/src/tsp/sql/tsp_v2.0_coordinates.sql b/sql/tsp/tsp_v2.0_coordinates.sql
similarity index 100%
rename from src/tsp/sql/tsp_v2.0_coordinates.sql
rename to sql/tsp/tsp_v2.0_coordinates.sql
diff --git a/sql/tsp/tsp_v2.0_matrix.sql b/sql/tsp/tsp_v2.0_matrix.sql
new file mode 100644
index 0000000..15dbccc
--- /dev/null
+++ b/sql/tsp/tsp_v2.0_matrix.sql
@@ -0,0 +1,95 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
diff --git a/sql/vrp_basic/CMakeLists.txt b/sql/vrp_basic/CMakeLists.txt
new file mode 100644
index 0000000..16bf118
--- /dev/null
+++ b/sql/vrp_basic/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(LOCAL_FILES
+ #routing_vrp.sql
+ _pgr_vrpOneDepot.sql
+ pgr_vrpOneDepot.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/vrp_basic/_pgr_vrpOneDepot.sql b/sql/vrp_basic/_pgr_vrpOneDepot.sql
new file mode 100644
index 0000000..358fe2f
--- /dev/null
+++ b/sql/vrp_basic/_pgr_vrpOneDepot.sql
@@ -0,0 +1,101 @@
+/*PGR-GNU*****************************************************************
+File: _pgr_vrpOneDepot.sql
+
+Generated with Template by:
+Copyright (c) 2017 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
diff --git a/sql/vrp_basic/pgr_vrpOneDepot.sql b/sql/vrp_basic/pgr_vrpOneDepot.sql
new file mode 100644
index 0000000..d787be3
--- /dev/null
+++ b/sql/vrp_basic/pgr_vrpOneDepot.sql
@@ -0,0 +1,56 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
diff --git a/sql/vrp_basic/routing_vrp.sql b/sql/vrp_basic/routing_vrp.sql
new file mode 100644
index 0000000..125ab12
--- /dev/null
+++ b/sql/vrp_basic/routing_vrp.sql
@@ -0,0 +1,45 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+returns setof record as
+'${MODULE_PATHNAME}', 'vrp'
+LANGUAGE c VOLATILE STRICT;
+
+
diff --git a/sql/vrppdtw/CMakeLists.txt b/sql/vrppdtw/CMakeLists.txt
new file mode 100644
index 0000000..33dee5c
--- /dev/null
+++ b/sql/vrppdtw/CMakeLists.txt
@@ -0,0 +1,12 @@
+
+SET(LOCAL_FILES
+ _gsoc_vrppdtw.sql
+ gsoc_vrppdtw.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/vrppdtw/_gsoc_vrppdtw.sql b/sql/vrppdtw/_gsoc_vrppdtw.sql
new file mode 100644
index 0000000..1156534
--- /dev/null
+++ b/sql/vrppdtw/_gsoc_vrppdtw.sql
@@ -0,0 +1,90 @@
+/*PGR-GNU*****************************************************************
+File: reginabook.sql
+
+Generated with Template by:
+Copyright (c) 2017 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
diff --git a/sql/vrppdtw/gsoc_vrppdtw.sql b/sql/vrppdtw/gsoc_vrppdtw.sql
new file mode 100644
index 0000000..2f1487c
--- /dev/null
+++ b/sql/vrppdtw/gsoc_vrppdtw.sql
@@ -0,0 +1,19 @@
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
diff --git a/sql/withPoints/CMakeLists.txt b/sql/withPoints/CMakeLists.txt
new file mode 100644
index 0000000..8f3adab
--- /dev/null
+++ b/sql/withPoints/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+SET(LOCAL_FILES
+ _withPoints.sql
+ withPoints.sql
+ withPointsCost.sql
+ withPointsVia.sql
+ )
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/sql/withPoints/_withPoints.sql b/sql/withPoints/_withPoints.sql
new file mode 100644
index 0000000..484d83e
--- /dev/null
+++ b/sql/withPoints/_withPoints.sql
@@ -0,0 +1,54 @@
+/*PGR-GNU*****************************************************************
+File: withPoints.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'${MODULE_PATHNAME}', 'withPoints'
+LANGUAGE c VOLATILE;
+
diff --git a/sql/withPoints/withPoints.sql b/sql/withPoints/withPoints.sql
new file mode 100644
index 0000000..59422ca
--- /dev/null
+++ b/sql/withPoints/withPoints.sql
@@ -0,0 +1,141 @@
+/*PGR-GNU*****************************************************************
+File: withPoints.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*
+ONE TO ONE
+*/
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+/*
+ONE TO MANY
+*/
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+/*
+MANY TO ONE
+*/
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+/*
+MANY TO MANY
+*/
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
diff --git a/sql/withPoints/withPointsCost.sql b/sql/withPoints/withPointsCost.sql
new file mode 100644
index 0000000..6220418
--- /dev/null
+++ b/sql/withPoints/withPointsCost.sql
@@ -0,0 +1,124 @@
+/*PGR-GNU*****************************************************************
+File: withPointsCost.sql
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/*
+ONE TO ONE
+*/
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+/*
+ONE TO MANY
+*/
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+/*
+MANY TO ONE
+*/
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+/*
+MANY TO MANY
+*/
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
diff --git a/sql/withPoints/withPointsVia.sql b/sql/withPoints/withPointsVia.sql
new file mode 100644
index 0000000..e5d723a
--- /dev/null
+++ b/sql/withPoints/withPointsVia.sql
@@ -0,0 +1,165 @@
+/*PGR-GNU*****************************************************************
+
+Template:
+Copyright (c) 2015 pgRouting developers
+
+Function developer:
+Copyright (c) 2015 Vicky Vergara
+vicky_vergara at hotmail.com
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
diff --git a/src/allpairs/doc/pgr_floydWarshall.rst b/src/allpairs/doc/pgr_floydWarshall.rst
deleted file mode 100644
index 2271446..0000000
--- a/src/allpairs/doc/pgr_floydWarshall.rst
+++ /dev/null
@@ -1,162 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_floydWarshall:
-
-pgr_floydWarshall
-===============================================================================
-
-Synopsis
--------------------------------------------------------------------------------
-
-``pgr_floydWarshall`` - Returns the sum of the costs of the shortest path for each
-pair of nodes in the graph using Floyd-Warshall algorithm.
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.0.0
-
-* Renamed on 2.2.0, previous name pgr_apspWarshall
-
-
-The Floyd-Warshall algorithm, also known as Floyd's algorithm,
-is a good choice to calculate the sum of the costs of the shortest path for each
-pair of nodes in the graph, for *dense graphs*. We make use of the Boost's
-implementation which runs in :math:`\Theta(V^3)` time,
-
-
-Characteristics
-----------------
-
-The main Characteristics are:
- - It does not return a path.
- - Returns the sum of the costs of the shortest path for each pair of nodes in the graph.
- - Process is done only on edges with positive costs.
- - Boost returns a :math:`V \times V` matrix, where the infinity values.
- Represent the distance between vertices for which there is no path.
-
- - We return only the non infinity values in form of a set of `(start_vid, end_vid, agg_cost)`.
-
- - Let be the case the values returned are stored in a table, so the unique index would be the pair:
- `(start_vid, end_vid)`.
-
- - For the undirected graph, the results are symmetric.
-
- - The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
-
- - When `start_vid` = `end_vid`, the `agg_cost` = 0.
-
- - **Recommended, use a bounding box of no more than 3500 edges.**
-
-Signature Summary
---------------------------------------------
-
-.. code-block:: none
-
- pgr_floydWarshall(edges_sql)
- pgr floydWarshall(edges_sql, directed)
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-Signatures
---------------------------------------------
-
-
-.. index::
- single: floydWarshall(Minimal Signature)
-
-Minimal Signature
-...................
-
-.. code-block:: none
-
- pgr_floydWarshall(edges_sql)
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-:Example 1: On a directed graph.
-
-.. literalinclude:: doc-floydWarshall.queries
- :start-after: -- q1
- :end-before: -- q2
-
-
-.. index::
- single: floydWarshall(Complete Signature)
-
-Complete Signature
-...................
-
-.. code-block:: none
-
- pgr_floydWarshall(edges_sql, directed)
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-
-:Example 2: On an undirected graph.
-
-.. literalinclude:: doc-floydWarshall.queries
- :start-after: -- q2
- :end-before: -- q3
-
-Description of the Signatures
-------------------------------
-
-.. include:: pgRouting-concepts.rst
- :start-after: no_id_edges_sql_start
- :end-before: no_id_edges_sql_end
-
-
-Description of the parameters of the signatures
-................................................
-
-Receives ``(edges_sql, directed)``
-
-============= ============= =================================================
-Parameter Type Description
-============= ============= =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**directed** ``BOOLEAN`` (optional) Default is true (is directed). When set to false the graph is considered as Undirected
-============= ============= =================================================
-
-
-Description of the return values
-..................................
-
-Returns set of ``(start_vid, end_vid, agg_cost)``
-
-============= ============= =================================================
-Column Type Description
-============= ============= =================================================
-**start_vid** ``BIGINT`` Identifier of the starting vertex.
-**end_vid** ``BIGINT`` Identifier of the ending vertex.
-**agg_cost** ``FLOAT`` Total cost from ``start_vid`` to ``end_vid``.
-============= ============= =================================================
-
-
-
-
-
-.. rubric:: History
-
-* Re-design of pgr_apspWarshall in Version 2.2.0
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`pgr_johnson`
-* `Boost floyd-Warshall <http://www.boost.org/libs/graph/doc/floyd_warshall_shortest.html>`_ algorithm
-* Queries uses the :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/allpairs/doc/pgr_johnson.rst b/src/allpairs/doc/pgr_johnson.rst
deleted file mode 100644
index 4a81289..0000000
--- a/src/allpairs/doc/pgr_johnson.rst
+++ /dev/null
@@ -1,161 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_johnson:
-
-pgr_johnson
-===============================================================================
-
-Synopsis
--------------------------------------------------------------------------------
-
-``pgr_johnson`` - Returns the sum of the costs of the shortest path for each
-pair of nodes in the graph using Floyd-Warshall algorithm.
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.0.0
-
-* Renamed on 2.2.0, previous name pgr_apspJohnson
-
-
-The Johnson algorithm, is a good choice to calculate the sum of the costs
-of the shortest path for each pair of nodes in the graph, for *sparse graphs*.
-It usees the Boost's implementation which runs in :math:`O(V E \log V)` time,
-
-
-Characteristics
-----------------
-
-The main Characteristics are:
- - It does not return a path.
- - Returns the sum of the costs of the shortest path for each pair of nodes in the graph.
- - Process is done only on edges with positive costs.
- - Boost returns a :math:`V \times V` matrix, where the infinity values.
- Represent the distance between vertices for which there is no path.
-
- - We return only the non infinity values in form of a set of `(start_vid, end_vid, agg_cost)`.
-
- - Let be the case the values returned are stored in a table, so the unique index would be the pair:
- `(start_vid, end_vid)`.
-
- - For the undirected graph, the results are symmetric.
-
- - The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
-
- - When `start_vid` = `end_vid`, the `agg_cost` = 0.
-
-
-
-Signature Summary
---------------------------------------------
-
-.. code-block:: none
-
- pgr_johnson(edges_sql)
- pgr johnson(edges_sql, directed)
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-Signatures
---------------------------------------------
-
-
-.. index::
- single: johnson(Minimal Signature)
-
-Minimal Signature
-...................
-
-.. code-block:: none
-
- pgr_johnson(edges_sql)
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-:Example 1: On a directed graph.
-
-.. literalinclude:: doc-johnson.queries
- :start-after: -- q1
- :end-before: -- q2
-
-
-.. index::
- single: johnson(Complete Signature)
-
-Complete Signature
-...................
-
-.. code-block:: none
-
- pgr_johnson(edges_sql, directed)
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-
-:Example 2: On an undirected graph.
-
-.. literalinclude:: doc-johnson.queries
- :start-after: -- q2
- :end-before: -- q3
-
-Description of the Signatures
-------------------------------
-
-.. include:: pgRouting-concepts.rst
- :start-after: no_id_edges_sql_start
- :end-before: no_id_edges_sql_end
-
-
-Description of the parameters of the signatures
-................................................
-
-Receives ``(edges_sql, directed)``
-
-============= ============= =================================================
-Parameter Type Description
-============= ============= =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**directed** ``BOOLEAN`` (optional) Default is true (is directed). When set to false the graph is considered as Undirected
-============= ============= =================================================
-
-
-Description of the return values
-..................................
-
-Returns set of ``(start_vid, end_vid, agg_cost)``
-
-============= ============= =================================================
-Column Type Description
-============= ============= =================================================
-**start_vid** ``BIGINT`` Identifier of the starting vertex.
-**end_vid** ``BIGINT`` Identifier of the ending vertex.
-**agg_cost** ``FLOAT`` Total cost from ``start_vid`` to ``end_vid``.
-============= ============= =================================================
-
-
-
-
-
-.. rubric:: History
-
-* Re-design of pgr_apspJohnson in Version 2.2.0
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`pgr_floydWarshall`
-* `Boost Johnson <http://www.boost.org/libs/graph/doc/johnson_all_pairs_shortest.html>`_ algorithm implementation.
-* Queries uses the :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/allpairs/sql/CMakeLists.txt b/src/allpairs/sql/CMakeLists.txt
deleted file mode 100644
index 1ef45d9..0000000
--- a/src/allpairs/sql/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/johnson.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/floydWarshall.sql
- )
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/allpairs/sql/floydWarshall.sql b/src/allpairs/sql/floydWarshall.sql
deleted file mode 100644
index 169ea46..0000000
--- a/src/allpairs/sql/floydWarshall.sql
+++ /dev/null
@@ -1,36 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: floydWarshall.sql
-
-Template:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function developer:
-Copyright (c) 2013 Vicky Vergara
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
- OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'floydWarshall'
- LANGUAGE c IMMUTABLE STRICT;
-
diff --git a/src/allpairs/sql/johnson.sql b/src/allpairs/sql/johnson.sql
deleted file mode 100644
index 819980e..0000000
--- a/src/allpairs/sql/johnson.sql
+++ /dev/null
@@ -1,36 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: johnson.sql
-
-Template:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function developer:
-Copyright (c) 2013 Vicky Vergara
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
- OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'johnson'
- LANGUAGE c IMMUTABLE STRICT;
-
diff --git a/src/allpairs/src/floydWarshall.c b/src/allpairs/src/floydWarshall.c
index bc80773..0267a7f 100644
--- a/src/allpairs/src/floydWarshall.c
+++ b/src/allpairs/src/floydWarshall.c
@@ -27,15 +27,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
+#include "c_common/debug_macro.h"
+#include "c_common/time_msg.h"
+#include "c_common/edges_input.h"
-#include "./floydWarshall_driver.h"
+#include "drivers/allpairs/floydWarshall_driver.h"
PGDLLEXPORT Datum floydWarshall(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(floydWarshall);
diff --git a/src/allpairs/src/floydWarshall_driver.cpp b/src/allpairs/src/floydWarshall_driver.cpp
index 542725d..d498c4b 100644
--- a/src/allpairs/src/floydWarshall_driver.cpp
+++ b/src/allpairs/src/floydWarshall_driver.cpp
@@ -27,16 +27,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./floydWarshall_driver.h"
+#include "drivers/allpairs/floydWarshall_driver.h"
#include <sstream>
#include <deque>
#include <vector>
-#include "./pgr_allpairs.hpp"
+#include "allpairs/pgr_allpairs.hpp"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
+#include "cpp_common/pgr_assert.h"
void
diff --git a/src/allpairs/src/floydWarshall_driver.h b/src/allpairs/src/floydWarshall_driver.h
deleted file mode 100644
index fe2a90d..0000000
--- a/src/allpairs/src/floydWarshall_driver.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: floydWarshall_driver.h
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_ALLPAIRS_SRC_FLOYDWARSHALL_DRIVER_H_
-#define SRC_ALLPAIRS_SRC_FLOYDWARSHALL_DRIVER_H_
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void
-do_pgr_floydWarshall(
- pgr_edge_t *data_edges,
- size_t total_tuples,
- bool directedFlag,
-
- // return values
- Matrix_cell_t **ret_matrix,
- size_t *return_tuple_count,
- char ** log_msg,
- char ** err_msg);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_ALLPAIRS_SRC_FLOYDWARSHALL_DRIVER_H_
diff --git a/src/allpairs/src/johnson.c b/src/allpairs/src/johnson.c
index f252b41..f7dfae2 100644
--- a/src/allpairs/src/johnson.c
+++ b/src/allpairs/src/johnson.c
@@ -27,14 +27,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
+#include "c_common/debug_macro.h"
+#include "c_common/time_msg.h"
+#include "c_common/edges_input.h"
-#include "./johnson_driver.h"
+#include "drivers/allpairs/johnson_driver.h"
PGDLLEXPORT Datum johnson(PG_FUNCTION_ARGS);
diff --git a/src/allpairs/src/johnson_driver.cpp b/src/allpairs/src/johnson_driver.cpp
index b2a014a..15d3352 100644
--- a/src/allpairs/src/johnson_driver.cpp
+++ b/src/allpairs/src/johnson_driver.cpp
@@ -27,15 +27,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./johnson_driver.h"
+#include "drivers/allpairs/johnson_driver.h"
#include <sstream>
#include <deque>
#include <vector>
-#include "./pgr_allpairs.hpp"
+#include "allpairs/pgr_allpairs.hpp"
-#include "./../../common/src/pgr_types.h"
// CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN,
void
diff --git a/src/allpairs/src/johnson_driver.h b/src/allpairs/src/johnson_driver.h
deleted file mode 100644
index 350d561..0000000
--- a/src/allpairs/src/johnson_driver.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: johnson_driver.h
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-#ifndef SRC_ALLPAIRS_SRC_JOHNSON_DRIVER_H_
-#define SRC_ALLPAIRS_SRC_JOHNSON_DRIVER_H_
-
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN,
-void
-do_pgr_johnson(
- pgr_edge_t *data_edges,
- size_t total_tuples,
- bool directed,
- Matrix_cell_t **return_tuples,
- size_t *return_count,
- char ** err_msg);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_ALLPAIRS_SRC_JOHNSON_DRIVER_H_
diff --git a/src/allpairs/src/pgr_allpairs.hpp b/src/allpairs/src/pgr_allpairs.hpp
deleted file mode 100644
index ce43547..0000000
--- a/src/allpairs/src/pgr_allpairs.hpp
+++ /dev/null
@@ -1,317 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pgr_allpairs.hpp
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-// http://www.cs.rpi.edu/~musser/archive/2005/gsd/restricted/FloydWarshall/FloydWarshall.pdf
-
-#ifndef SRC_ALLPAIRS_SRC_PGR_ALLPAIRS_HPP_
-#define SRC_ALLPAIRS_SRC_PGR_ALLPAIRS_HPP_
-#pragma once
-
-
-#include <boost/config.hpp>
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/property_map/property_map.hpp>
-#include <boost/graph/johnson_all_pairs_shortest.hpp>
-#include <boost/graph/floyd_warshall_shortest.hpp>
-
-
-#include <deque>
-#include <vector>
-#include <set>
-#include <limits>
-
-
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/basePath_SSEC.hpp"
-#include "./../../common/src/pgr_base_graph.hpp"
-
-// TODO(vicky) don't keep it here
-#include "../../common/src/pgr_alloc.hpp"
-
-template < class G > class Pgr_allpairs;
-
-// user's functions
-template < class G >
-void
-pgr_johnson(G &graph, std::vector< Matrix_cell_t> &rows) {
- Pgr_allpairs< G > fn_johnson;
- fn_johnson.johnson(graph, rows);
-}
-
-template < class G >
-void
-pgr_floydWarshall(G &graph, std::vector< Matrix_cell_t> &rows) {
- Pgr_allpairs< G > fn_floydWarshall;
- fn_floydWarshall.floydWarshall(graph, rows);
-}
-
-// for postgres
-template < class G >
-void
-pgr_johnson(
- G &graph,
- size_t &result_tuple_count,
- Matrix_cell_t **postgres_rows) {
- Pgr_allpairs< G > fn_johnson;
- fn_johnson.johnson(graph, result_tuple_count, postgres_rows);
-}
-
-
-template < class G >
-void
-pgr_floydWarshall(
- G &graph,
- size_t &result_tuple_count,
- Matrix_cell_t **postgres_rows) {
- Pgr_allpairs< G > fn_floydWarshall;
- fn_floydWarshall.floydWarshall(graph, result_tuple_count, postgres_rows);
-}
-
-
-// template class
-template < class G >
-class Pgr_allpairs {
- // default constructors and destructors
- /*
- Matrix_cell_t description:
- int64_t from_vid;
- int64_t to_vid;
- float8 cost;
- */
- public:
- void floydWarshall(
- G &graph,
- size_t &result_tuple_count,
- Matrix_cell_t **postgres_rows);
-
-
- void floydWarshall(
- G &graph,
- std::vector< Matrix_cell_t> &rows);
-
- void johnson(
- G &graph,
- size_t &result_tuple_count,
- Matrix_cell_t **postgres_rows);
-
-
- void johnson(
- G &graph,
- std::vector< Matrix_cell_t> &rows);
-
- private:
- void make_matrix(
- size_t v_size,
- std::vector< std::vector<double>> &matrix) const;
-
- void make_result(
- const G &graph,
- const std::vector< std::vector<double> > &matrix,
- size_t &result_tuple_count,
- Matrix_cell_t **postgres_rows) const;
-
- size_t count_rows(
- const G &graph,
- const std::vector< std::vector<double> > &matrix) const;
-
- void make_result(
- G &graph,
- std::vector< std::vector<double> > &matrix,
- std::vector< Matrix_cell_t> &rows);
-
- template <typename T>
- struct inf_plus {
- T operator()(const T& a, const T& b) const {
- T inf = (std::numeric_limits<T>::max)();
- if (a == inf || b == inf)
- return inf;
- return a + b;
- }
- };
-};
-
-/*
- * PUBLIC FUNCTIONS
- */
-
-template < class G >
-void Pgr_allpairs< G >::floydWarshall(
- G &graph,
- size_t &result_tuple_count,
- Matrix_cell_t **postgres_rows) {
- std::vector< std::vector<double>> matrix;
- make_matrix(graph.num_vertices(), matrix);
- inf_plus<double> combine;
- boost::floyd_warshall_all_pairs_shortest_paths(
- graph.graph,
- matrix,
- weight_map(get(&pgrouting::Basic_edge::cost, graph.graph)).
- distance_combine(combine).
- distance_inf((std::numeric_limits<double>::max)()).
- distance_zero(0));
-
- make_result(graph, matrix, result_tuple_count, postgres_rows);
-}
-
-
-template < class G >
-void Pgr_allpairs< G >::floydWarshall(
- G &graph,
- std::vector< Matrix_cell_t> &rows) {
- std::vector< std::vector<double>> matrix;
- make_matrix(graph.num_vertices(), matrix);
- inf_plus<double> combine;
- boost::floyd_warshall_all_pairs_shortest_paths(
- graph.graph,
- matrix,
- weight_map(get(&pgrouting::Basic_edge::cost, graph.graph)).
- distance_combine(combine).
- distance_inf((std::numeric_limits<double>::max)()).
- distance_zero(0));
-
- make_result(graph, matrix, rows);
-}
-
-template < class G >
-void Pgr_allpairs< G >::johnson(
- G &graph,
- size_t &result_tuple_count,
- Matrix_cell_t **postgres_rows) {
- std::vector< std::vector<double>> matrix;
- make_matrix(graph.num_vertices(), matrix);
- inf_plus<double> combine;
- boost::johnson_all_pairs_shortest_paths(
- graph.graph,
- matrix,
- weight_map(get(&pgrouting::Basic_edge::cost, graph.graph)).
- distance_combine(combine).
- distance_inf((std::numeric_limits<double>::max)()).
- distance_zero(0));
-
- make_result(graph, matrix, result_tuple_count, postgres_rows);
-}
-
-
-template < class G >
-void Pgr_allpairs< G >::johnson(
- G &graph,
- std::vector< Matrix_cell_t> &rows) {
- std::vector< std::vector<double>> matrix;
- make_matrix(graph.num_vertices(), matrix);
- inf_plus<double> combine;
- boost::johnson_all_pairs_shortest_paths(
- graph.graph,
- matrix,
- weight_map(get(&pgrouting::Basic_edge::cost, graph.graph)).
- distance_combine(combine).
- distance_inf((std::numeric_limits<double>::max)()).
- distance_zero(0));
-
- make_result(graph, matrix, rows);
-}
-
-
-
-
-/*
- * PRIVATE FUNCTIONS
- */
-
-template < class G >
-void
-Pgr_allpairs< G >::make_matrix(
- size_t v_size,
- std::vector< std::vector<double>> &matrix) const {
- // TODO(vicky) in one step
- matrix.resize(v_size);
- for (size_t i=0; i < v_size; i++)
- matrix[i].resize(v_size);
-}
-
-template < class G >
-size_t
-Pgr_allpairs< G >::count_rows(
- const G &graph,
- const std::vector< std::vector<double> > &matrix) const {
- size_t result_tuple_count = 0;
- for (size_t i = 0; i < graph.num_vertices(); i++) {
- for (size_t j = 0; j < graph.num_vertices(); j++) {
- if (i == j) continue;
- if (matrix[i][j] != (std::numeric_limits<double>::max)()) {
- result_tuple_count++;
- } // if
- } // for j
- } // for i
- return result_tuple_count;
-}
-
-// TODO(vicky) don't keep it here for postgres
-template < class G >
-void
-Pgr_allpairs< G >::make_result(
- const G &graph,
- const std::vector< std::vector<double> > &matrix,
- size_t &result_tuple_count,
- Matrix_cell_t **postgres_rows) const {
- result_tuple_count = count_rows(graph, matrix);
- *postgres_rows = pgr_alloc(result_tuple_count, (*postgres_rows));
-
-
- size_t seq = 0;
- for (typename G::V v_i = 0; v_i < graph.num_vertices(); v_i++) {
- for (typename G::V v_j = 0; v_j < graph.num_vertices(); v_j++) {
- if (v_i == v_j) continue;
- if (matrix[v_i][v_j] != (std::numeric_limits<double>::max)()) {
- (*postgres_rows)[seq].from_vid = graph[v_i].id;
- (*postgres_rows)[seq].to_vid = graph[v_j].id;
- (*postgres_rows)[seq].cost = matrix[v_i][v_j];
- seq++;
- } // if
- } // for j
- } // for i
-}
-
-
-template < class G >
-void
-Pgr_allpairs< G >::make_result(
- G &graph,
- std::vector< std::vector<double> > &matrix,
- std::vector< Matrix_cell_t> &rows) {
- size_t count = count_rows(graph, matrix);
- rows.resize(count);
- size_t seq = 0;
-
- for (typename G::V v_i = 0; v_i < graph.num_vertices(); v_i++) {
- for (typename G::V v_j = 0; v_j < graph.num_vertices(); v_j++) {
- if (matrix[v_i][v_j] != (std::numeric_limits<double>::max)()) {
- rows[seq] =
- {graph[v_i].id, graph[v_j].id, matrix[v_i][v_j]};
- seq++;
- } // if
- } // for j
- } // for i
-}
-
-#endif // SRC_ALLPAIRS_SRC_PGR_ALLPAIRS_HPP_
diff --git a/src/allpairs/test/doc-floydWarshall.result b/src/allpairs/test/doc-floydWarshall.result
index ea5e596..4d2f2b8 100644
--- a/src/allpairs/test/doc-floydWarshall.result
+++ b/src/allpairs/test/doc-floydWarshall.result
@@ -1,12 +1,33 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-1|2|1
-1|5|2
-2|5|1
+SELECT * FROM pgr_floydWarshall(
+ 'SELECT id, source, target, cost FROM edge_table where id < 5'
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 5 | 2
+ 2 | 5 | 1
+(3 rows)
+
-- q2
-1|2|1
-1|5|2
-2|1|1
-2|5|1
-5|1|2
-5|2|1
+SELECT * FROM pgr_floydWarshall(
+ 'SELECT id, source, target, cost FROM edge_table where id < 5',
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 5 | 2
+ 2 | 1 | 1
+ 2 | 5 | 1
+ 5 | 1 | 2
+ 5 | 2 | 1
+(6 rows)
+
-- q3
+ROLLBACK;
+ROLLBACK
diff --git a/src/allpairs/test/doc-johnson.result b/src/allpairs/test/doc-johnson.result
index ea5e596..5c9f684 100644
--- a/src/allpairs/test/doc-johnson.result
+++ b/src/allpairs/test/doc-johnson.result
@@ -1,12 +1,35 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-1|2|1
-1|5|2
-2|5|1
+SELECT * FROM pgr_johnson(
+ 'SELECT source, target, cost FROM edge_table WHERE id < 5
+ ORDER BY id'
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 5 | 2
+ 2 | 5 | 1
+(3 rows)
+
-- q2
-1|2|1
-1|5|2
-2|1|1
-2|5|1
-5|1|2
-5|2|1
+SELECT * FROM pgr_johnson(
+ 'SELECT source, target, cost FROM edge_table WHERE id < 5
+ ORDER BY id',
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 5 | 2
+ 2 | 1 | 1
+ 2 | 5 | 1
+ 5 | 1 | 2
+ 5 | 2 | 1
+(6 rows)
+
-- q3
+ROLLBACK;
+ROLLBACK
diff --git a/src/allpairs/test/pgtap/fw-types-check.sql b/src/allpairs/test/pgtap/fw-types-check.sql
deleted file mode 100644
index 4095bb6..0000000
--- a/src/allpairs/test/pgtap/fw-types-check.sql
+++ /dev/null
@@ -1,85 +0,0 @@
-
-\i setup.sql
-
-
-SELECT plan(10);
-
-PREPARE q1 AS
-SELECT * FROM pgr_floydWarshall(
- 'SELECT id::BIGINT, source::SMALLINT, target::BIGINT, cost::INTEGER, reverse_cost::SMALLINT FROM edge_table'
-);
-
-PREPARE q2 AS
-SELECT * FROM pgr_floydWarshall(
- 'SELECT source, target, cost, reverse_cost FROM edge_table'
-);
-
-PREPARE q3 AS
-SELECT * FROM pgr_floydWarshall(
- 'SELECT source, target, cost, reverse_cost FROM edge_table',
- false
-);
-
-PREPARE q4 AS
-SELECT * FROM pgr_floydWarshall(
- 'SELECT source, target, cost, reverse_cost FROM edge_table',
- true
-);
-
-
-SELECT lives_ok('q1', 'edges query accepts ANY-INTEGER & ANY NUMERICAL');
-SELECT lives_ok('q2', 'without id it works');
-SELECT lives_ok('q3', 'directed flag works ok with false');
-SELECT lives_ok('q4', 'directed flag works ok with true');
-
-
-PREPARE q10 AS
-SELECT * FROM pgr_floydWarshall(
- 'SELECT id::FLOAT, source, target, cost, reverse_cost FROM edge_table',
- true);
-
-PREPARE q11 AS
-SELECT * FROM pgr_floydWarshall(
- 'SELECT id::REAL, source, target, cost, reverse_cost FROM edge_table',
- true);
-
-SELECT throws_ok('q10', 'XX000', 'Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'Throws because id is FLOAT');
-SELECT throws_ok('q11', 'XX000', 'Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'Throws because id is REAL');
-
-PREPARE q12 AS
-SELECT * FROM pgr_floydWarshall(
- 'SELECT id, source::FLOAT, target, cost, reverse_cost FROM edge_table',
- true);
-
-PREPARE q13 AS
-SELECT * FROM pgr_floydWarshall(
- 'SELECT id, source::REAL, target, cost, reverse_cost FROM edge_table',
- true);
-
-SELECT throws_ok('q12', 'XX000', 'Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'Throws because source is FLOAT');
-SELECT throws_ok('q13', 'XX000', 'Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'Throws because source is REAL');
-
-PREPARE q14 AS
-SELECT * FROM pgr_floydWarshall(
- 'SELECT id, source, target::FLOAT, cost, reverse_cost FROM edge_table',
- true);
-
-PREPARE q15 AS
-SELECT * FROM pgr_floydWarshall(
- 'SELECT id, source, target::REAL, cost, reverse_cost FROM edge_table',
- true);
-
-SELECT throws_ok('q14', 'XX000', 'Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'Throws because source is FLOAT');
-SELECT throws_ok('q15', 'XX000', 'Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'Throws because source is REAL');
-
-
-
-
-SELECT finish();
-ROLLBACK;
diff --git a/src/allpairs/test/pgtap/j-types-check.sql b/src/allpairs/test/pgtap/j-types-check.sql
deleted file mode 100644
index 9966e84..0000000
--- a/src/allpairs/test/pgtap/j-types-check.sql
+++ /dev/null
@@ -1,85 +0,0 @@
-
-\i setup.sql
-
-
-SELECT plan(10);
-
-PREPARE q1 AS
-SELECT * FROM pgr_johnson(
- 'SELECT id::BIGINT, source::SMALLINT, target::BIGINT, cost::INTEGER, reverse_cost::SMALLINT FROM edge_table'
-);
-
-PREPARE q2 AS
-SELECT * FROM pgr_johnson(
- 'SELECT source, target, cost, reverse_cost FROM edge_table'
-);
-
-PREPARE q3 AS
-SELECT * FROM pgr_johnson(
- 'SELECT source, target, cost, reverse_cost FROM edge_table',
- false
-);
-
-PREPARE q4 AS
-SELECT * FROM pgr_johnson(
- 'SELECT source, target, cost, reverse_cost FROM edge_table',
- true
-);
-
-
-SELECT lives_ok('q1', 'edges query accepts ANY-INTEGER & ANY NUMERICAL');
-SELECT lives_ok('q2', 'without id it works');
-SELECT lives_ok('q3', 'directed flag works ok with false');
-SELECT lives_ok('q4', 'directed flag works ok with true');
-
-
-PREPARE q10 AS
-SELECT * FROM pgr_johnson(
- 'SELECT id::FLOAT, source, target, cost, reverse_cost FROM edge_table',
- true);
-
-PREPARE q11 AS
-SELECT * FROM pgr_johnson(
- 'SELECT id::REAL, source, target, cost, reverse_cost FROM edge_table',
- true);
-
-SELECT throws_ok('q10', 'XX000', 'Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'Throws because id is FLOAT');
-SELECT throws_ok('q11', 'XX000', 'Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'Throws because id is REAL');
-
-PREPARE q12 AS
-SELECT * FROM pgr_johnson(
- 'SELECT id, source::FLOAT, target, cost, reverse_cost FROM edge_table',
- true);
-
-PREPARE q13 AS
-SELECT * FROM pgr_johnson(
- 'SELECT id, source::REAL, target, cost, reverse_cost FROM edge_table',
- true);
-
-SELECT throws_ok('q12', 'XX000', 'Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'Throws because source is FLOAT');
-SELECT throws_ok('q13', 'XX000', 'Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'Throws because source is REAL');
-
-PREPARE q14 AS
-SELECT * FROM pgr_johnson(
- 'SELECT id, source, target::FLOAT, cost, reverse_cost FROM edge_table',
- true);
-
-PREPARE q15 AS
-SELECT * FROM pgr_johnson(
- 'SELECT id, source, target::REAL, cost, reverse_cost FROM edge_table',
- true);
-
-SELECT throws_ok('q14', 'XX000', 'Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'Throws because source is FLOAT');
-SELECT throws_ok('q15', 'XX000', 'Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'Throws because source is REAL');
-
-
-
-
-SELECT finish();
-ROLLBACK;
diff --git a/src/alpha_shape/doc/pgr_alphaShape.rst b/src/alpha_shape/doc/pgr_alphaShape.rst
deleted file mode 100644
index 5b3b66e..0000000
--- a/src/alpha_shape/doc/pgr_alphaShape.rst
+++ /dev/null
@@ -1,96 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_alphashape:
-
-pgr_alphaShape
-===============================================================================
-
-.. index::
- single: pgr_alphashape(text,float8)
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_alphaShape`` — Core function for alpha shape computation.
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Returns a table with (x, y) rows that describe the vertices of an alpha shape.
-
-.. code-block:: sql
-
- table() pgr_alphaShape(text sql [, float8 alpha]);
-
-
-Description
--------------------------------------------------------------------------------
-
-:sql: ``text`` a SQL query, which should return a set of rows with the following columns:
-
- .. code-block:: sql
-
- SELECT id, x, y FROM vertex_table
-
- :id: ``int4`` identifier of the vertex
- :x: ``float8`` x-coordinate
- :y: ``float8`` y-coordinate
-
-:alpha: (optional) ``float8`` alpha value. If specified alpha value equals 0 (default), then optimal alpha value is used.
- For more information, see `CGAL - 2D Alpha Shapes <http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_.
-
-Returns a vertex record for each row:
-
-:x: x-coordinate
-:y: y-coordinate
-
-If a result includes multiple outer/inner rings, return those with separator row (x=NULL and y=NULL).
-
-.. rubric:: History
-
-* Renamed in version 2.0.0
-* Added alpha argument with default 0 (use optimal value) in version 2.1.0
-* Supported to return multiple outer/inner ring coordinates with separator row (x=NULL and y=NULL) in version 2.1.0
-
-Examples
--------------------------------------------------------------------------------
-PgRouting's alpha shape implementation has no way to control the order of the output points, so the actual output might different for the same input data.
-The first query, has the output ordered, he second query shows an example usage:
-
-
-.. rubric:: Example: the (ordered) results
-
-.. literalinclude:: doc-pgr_alphashape.queries
- :start-after: -- q1
- :end-before: -- q2
-
-.. rubric:: Example: calculating the area
-
-Steps:
-
- - Calculates the alpha shape
- - the :code:`ORDER BY` clause is not used.
- - constructs a polygon
- - and computes the area
-
-.. literalinclude:: doc-pgr_alphashape.queries
- :start-after: -- q2
- :end-before: -- q3
-
-
-
-The queries use the :ref:`sampledata` network.
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`pgr_drivingDistance` - Driving Distance
-* :ref:`pgr_points_as_polygon` - Polygon around set of points
diff --git a/src/alpha_shape/doc/pgr_pointsAsPolygon.rst b/src/alpha_shape/doc/pgr_pointsAsPolygon.rst
deleted file mode 100644
index e39d84b..0000000
--- a/src/alpha_shape/doc/pgr_pointsAsPolygon.rst
+++ /dev/null
@@ -1,76 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_points_as_polygon:
-
-pgr_pointsAsPolygon
-===============================================================================
-
-.. index::
- single: pgr_pointsAsPolygon(text,float8)
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_pointsAsPolygon`` — Draws an alpha shape around given set of points.
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Returns the alpha shape as (multi)polygon geometry.
-
-.. code-block:: sql
-
- geometry pgr_pointsAsPolygon(text sql [, float8 alpha]);
-
-
-Description
--------------------------------------------------------------------------------
-
-:sql: ``text`` a SQL query, which should return a set of rows with the following columns:
-
- .. code-block:: sql
-
- SELECT id, x, y FROM vertex_result;
-
- :id: ``int4`` identifier of the vertex
- :x: ``float8`` x-coordinate
- :y: ``float8`` y-coordinate
-
-:alpha: (optional) ``float8`` alpha value. If specified alpha value equals 0 (default), then optimal alpha value is used.
- For more information, see `CGAL - 2D Alpha Shapes <http://doc.cgal.org/latest/Alpha_shapes_2/group__PkgAlphaShape2.html>`_.
-
-Returns a (multi)polygon geometry (with holes).
-
-
-.. rubric:: History
-
-* Renamed in version 2.0.0
-* Added alpha argument with default 0 (use optimal value) in version 2.1.0
-* Supported to return a (multi)polygon geometry (with holes) in version 2.1.0
-
-
-Examples
--------------------------------------------------------------------------------
-In the following query there is no way to control which point in the polygon is the first in the list, so you may get similar but different results than the following which are also correct.
-
-.. literalinclude:: doc-pgr_pointsAsPolygon.queries
- :start-after: --q1
- :end-before: --q2
-
-
-The query use the :ref:`sampledata` network.
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`pgr_drivingDistance` - Driving Distance
-* :ref:`pgr_alphashape` - Alpha shape computation
diff --git a/src/alpha_shape/sql/CMakeLists.txt b/src/alpha_shape/sql/CMakeLists.txt
deleted file mode 100644
index 05cbe17..0000000
--- a/src/alpha_shape/sql/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/alpha_shape.sql
- )
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/alpha_shape/sql/alpha_shape.sql b/src/alpha_shape/sql/alpha_shape.sql
deleted file mode 100644
index d89a0b3..0000000
--- a/src/alpha_shape/sql/alpha_shape.sql
+++ /dev/null
@@ -1,97 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Copyright (c) 2006-2007 Anton A. Patrushev, Orkney, Inc.
-Copyright (c) 2005 Sylvain Pasche,
-Mail: project at 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*/
-
-
------------------------------------------------------------------------
--- Core function for alpha shape computation.
--- The sql should return vertex ids and x,y values. Return ordered
--- vertex ids.
------------------------------------------------------------------------
-CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
- RETURNS SETOF record
- AS '$libdir/${PGROUTING_LIBRARY_NAME}', 'alphashape'
- LANGUAGE c IMMUTABLE STRICT;
-
-----------------------------------------------------------
--- Draws an alpha shape around given set of points.
--- ** This should be rewritten as an aggregate. **
-----------------------------------------------------------
-CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
- RETURNS geometry AS
- $$
- DECLARE
- r record;
- geoms geometry[];
- vertex_result record;
- i int;
- n int;
- spos int;
- q text;
- x float8[];
- y float8[];
-
- BEGIN
- geoms := array[]::geometry[];
- i := 1;
-
- FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
- LOOP
- x[i] = vertex_result.x;
- y[i] = vertex_result.y;
- i := i+1;
- END LOOP;
-
- n := i;
- IF n = 1 THEN
- RAISE NOTICE 'n = 1';
- RETURN NULL;
- END IF;
-
- spos := 1;
- q := 'SELECT ST_GeometryFromText(''POLYGON((';
- FOR i IN 1..n LOOP
- IF x[i] IS NULL AND y[i] IS NULL THEN
- q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
- EXECUTE q INTO r;
- geoms := geoms || array[r.geom];
- q := '';
- ELSE
- IF q = '' THEN
- spos := i;
- q := 'SELECT ST_GeometryFromText(''POLYGON((';
- END IF;
- IF i = spos THEN
- q := q || x[spos] || ' ' || y[spos];
- ELSE
- q := q || ', ' || x[i] || ' ' || y[i];
- END IF;
- END IF;
- END LOOP;
-
- RETURN ST_BuildArea(ST_Collect(geoms));
- END;
- $$
- LANGUAGE 'plpgsql' VOLATILE STRICT;
-
diff --git a/src/alpha_shape/src/alpha.c b/src/alpha_shape/src/alpha.c
index 940901f..34af757 100644
--- a/src/alpha_shape/src/alpha.c
+++ b/src/alpha_shape/src/alpha.c
@@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
#if PGSQL_VERSION == 100
#include <float.h>
#endif
@@ -30,7 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include "catalog/pg_type.h"
-#include "../../common/src/pgr_types.h"
+#include <stdint.h>
#include "alpha_driver.h"
@@ -44,7 +44,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
PGDLLEXPORT Datum alphashape(PG_FUNCTION_ARGS);
#undef DEBUG
-#include "../../common/src/debug_macro.h"
+#include "c_common/debug_macro.h"
// The number of tuples to fetch from the SPI cursor at each iteration
#define TUPLIMIT 1000
diff --git a/src/alpha_shape/src/alpha_driver.cpp b/src/alpha_shape/src/alpha_driver.cpp
index ba68459..0043d0c 100644
--- a/src/alpha_shape/src/alpha_driver.cpp
+++ b/src/alpha_shape/src/alpha_driver.cpp
@@ -59,7 +59,7 @@ corresponding to the Alpha shape.
#include <algorithm>
#include <set>
-#include "./../../common/src/pgr_alloc.hpp"
+#include "cpp_common/pgr_alloc.hpp"
typedef double coord_type;
diff --git a/src/alpha_shape/src/alpha_driver.h b/src/alpha_shape/src/alpha_driver.h
index 38f23a5..30b06c3 100644
--- a/src/alpha_shape/src/alpha_driver.h
+++ b/src/alpha_shape/src/alpha_driver.h
@@ -28,8 +28,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include <stddef.h>
-#include "../../common/src/pgr_types.h"
-
typedef struct vertex {
double x;
double y;
diff --git a/src/alpha_shape/test/doc-pgr_alphashape.result b/src/alpha_shape/test/doc-pgr_alphashape.result
index 66f7a5f..0b4282a 100644
--- a/src/alpha_shape/test/doc-pgr_alphashape.result
+++ b/src/alpha_shape/test/doc-pgr_alphashape.result
@@ -1,12 +1,39 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-0|2
-0.5|3.5
-2|0
-2|4
-3.5|4
-4|1
-4|2
-4|3
+SELECT * FROM pgr_alphaShape(
+ 'SELECT id::integer, ST_X(the_geom)::float AS x, ST_Y(the_geom)::float AS y
+ FROM edge_table_vertices_pgr') ORDER BY x, y;
+ x | y
+-----+-----
+ 0 | 2
+ 0.5 | 3.5
+ 2 | 0
+ 2 | 4
+ 3.5 | 4
+ 4 | 1
+ 4 | 2
+ 4 | 3
+(8 rows)
+
-- q2
-11.75
+SELECT round(ST_Area(ST_MakePolygon(ST_AddPoint(foo.openline, ST_StartPoint(foo.openline))))::numeric, 2) AS st_area
+FROM (
+ SELECT ST_MakeLine(points ORDER BY id) AS openline
+ FROM (
+ SELECT ST_MakePoint(x, y) AS points, row_number() over() AS id
+ FROM pgr_alphaShape(
+ 'SELECT id::integer, ST_X(the_geom)::float AS x, ST_Y(the_geom)::float AS y
+ FROM edge_table_vertices_pgr')
+ ) AS a
+ ) AS foo;
+ st_area
+---------
+ 11.75
+(1 row)
+
-- q3
+ROLLBACK;
+ROLLBACK
diff --git a/src/alpha_shape/test/doc-pgr_pointsAsPolygon.result b/src/alpha_shape/test/doc-pgr_pointsAsPolygon.result
index 47a1a81..c6c0a7b 100644
--- a/src/alpha_shape/test/doc-pgr_pointsAsPolygon.result
+++ b/src/alpha_shape/test/doc-pgr_pointsAsPolygon.result
@@ -1,3 +1,15 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-POLYGON((2 4,3.5 4,4 3,4 2,4 1,2 0,0 2,0.5 3.5,2 4))
+SELECT ST_AsText(pgr_pointsAsPolygon('SELECT id::integer, ST_X(the_geom)::float AS x, ST_Y(the_geom)::float AS y
+ FROM edge_table_vertices_pgr'));
+ st_astext
+------------------------------------------------------
+ POLYGON((2 4,3.5 4,4 3,4 2,4 1,2 0,0 2,0.5 3.5,2 4))
+(1 row)
+
--q2
+ROLLBACK;
+ROLLBACK
diff --git a/src/apsp_johnson/doc/doc-apspJohnson.queries b/src/apsp_johnson/doc/doc-apspJohnson.queries
deleted file mode 100644
index 1116eb4..0000000
--- a/src/apsp_johnson/doc/doc-apspJohnson.queries
+++ /dev/null
@@ -1,19 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM pgr_apspJohnson(
- 'SELECT source::INTEGER, target::INTEGER, cost FROM edge_table WHERE id < 5'
- );
-NOTICE: Deprecated function: Use pgr_johnson instead
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 1 | 2 | 1
- 1 | 1 | 5 | 2
- 2 | 2 | 5 | 1
-(3 rows)
-
---q2
-ROLLBACK;
-ROLLBACK
diff --git a/src/apsp_johnson/sql/CMakeLists.txt b/src/apsp_johnson/sql/CMakeLists.txt
deleted file mode 100644
index ce719b5..0000000
--- a/src/apsp_johnson/sql/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/apsp_johnson_v2.2.sql
- )
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/apsp_johnson/test/doc-apspJohnson.result b/src/apsp_johnson/test/doc-apspJohnson.result
deleted file mode 100644
index baed04f..0000000
--- a/src/apsp_johnson/test/doc-apspJohnson.result
+++ /dev/null
@@ -1,6 +0,0 @@
---q1
-NOTICE: Deprecated function: Use pgr_johnson instead
-0|1|2|1
-1|1|5|2
-2|2|5|1
---q2
diff --git a/src/apsp_johnson/test/doc-apspJohnson.test.sql b/src/apsp_johnson/test/doc-apspJohnson.test.sql
deleted file mode 100644
index 1d48764..0000000
--- a/src/apsp_johnson/test/doc-apspJohnson.test.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--- PGR_apspJohnson
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-\echo --q1
-SELECT * FROM pgr_apspJohnson(
- 'SELECT source::INTEGER, target::INTEGER, cost FROM edge_table WHERE id < 5'
- );
-\echo --q2
diff --git a/src/apsp_johnson/test/test.conf b/src/apsp_johnson/test/test.conf
deleted file mode 100644
index ae455cc..0000000
--- a/src/apsp_johnson/test/test.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/perl -w
-
-%main::tests = (
- 'any' => {
- 'comment' => 'APSP Johnson test for any versions.',
- 'data' => [],
- 'tests' => [qw(
- doc-apspJohnson
- )],
- 'documentation' => [qw(
- doc-apspJohnson
- )],
-
-
- },
-# 'vpg-vpgis' => {}, # for version specific tests
-# '8-1' => {}, # for pg 8.x and postgis 1.x
-# '9.2-2.1' => {}, # for pg 9.2 and postgis 2.1
-);
-
-1;
diff --git a/src/apsp_warshall/doc/doc-apspWarshall.queries b/src/apsp_warshall/doc/doc-apspWarshall.queries
deleted file mode 100644
index fd61fb6..0000000
--- a/src/apsp_warshall/doc/doc-apspWarshall.queries
+++ /dev/null
@@ -1,23 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM pgr_apspWarshall(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table WHERE id < 5',
- false, false
- );
-NOTICE: Deprecated function: Use pgr_floydWarshall instead
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 1 | 2 | 1
- 1 | 1 | 5 | 2
- 2 | 2 | 1 | 1
- 3 | 2 | 5 | 1
- 4 | 5 | 1 | 2
- 5 | 5 | 2 | 1
-(6 rows)
-
---q2
-ROLLBACK;
-ROLLBACK
diff --git a/src/apsp_warshall/sql/CMakeLists.txt b/src/apsp_warshall/sql/CMakeLists.txt
deleted file mode 100644
index c1f52f5..0000000
--- a/src/apsp_warshall/sql/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/apsp_warshall_v2.2.sql
- )
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/apsp_warshall/test/doc-apspWarshall.result b/src/apsp_warshall/test/doc-apspWarshall.result
deleted file mode 100644
index ef25591..0000000
--- a/src/apsp_warshall/test/doc-apspWarshall.result
+++ /dev/null
@@ -1,9 +0,0 @@
---q1
-NOTICE: Deprecated function: Use pgr_floydWarshall instead
-0|1|2|1
-1|1|5|2
-2|2|1|1
-3|2|5|1
-4|5|1|2
-5|5|2|1
---q2
diff --git a/src/apsp_warshall/test/doc-apspWarshall.test.sql b/src/apsp_warshall/test/doc-apspWarshall.test.sql
deleted file mode 100644
index 892e55f..0000000
--- a/src/apsp_warshall/test/doc-apspWarshall.test.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--- PGR_apspWarshall
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-\echo --q1
-SELECT * FROM pgr_apspWarshall(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table WHERE id < 5',
- false, false
- );
-
-\echo --q2
diff --git a/src/apsp_warshall/test/test.conf b/src/apsp_warshall/test/test.conf
deleted file mode 100644
index 4f3c351..0000000
--- a/src/apsp_warshall/test/test.conf
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/perl -w
-
-%main::tests = (
- 'any' => {
- 'comment' => 'APSP Warshall test for any versions.',
- 'data' => [],
- 'tests' => [qw(
- doc-apspWarshall
- )],
- 'documentation' => [qw(
- doc-apspWarshall
- )]
- },
-# 'vpg-vpgis' => {}, # for version specific tests
-# '8-1' => {}, # for pg 8.x and postgis 1.x
-# '9.2-2.1' => {}, # for pg 9.2 and postgis 2.1
-);
-
-1;
diff --git a/src/astar/doc/doc-astar-v2.queries b/src/astar/doc/doc-astar-v2.queries
deleted file mode 100644
index 31b594d..0000000
--- a/src/astar/doc/doc-astar-v2.queries
+++ /dev/null
@@ -1,37 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_astar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2
- FROM edge_table',
- 4, 1, false, false);
-NOTICE: Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 4 | 16 | 1
- 1 | 9 | 9 | 1
- 2 | 6 | 8 | 1
- 3 | 5 | 4 | 1
- 4 | 2 | 1 | 1
- 5 | 1 | -1 | 0
-(6 rows)
-
--- q2
-SELECT * FROM pgr_astar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2, reverse_cost
- FROM edge_table ',
- 4, 1, true, true);
-NOTICE: Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 4 | 3 | 1
- 1 | 3 | 2 | 1
- 2 | 2 | 1 | 1
- 3 | 1 | -1 | 0
-(4 rows)
-
--- q3
-ROLLBACK;
-ROLLBACK
diff --git a/src/astar/doc/doc-astar.queries b/src/astar/doc/doc-astar.queries
deleted file mode 100644
index b0032bc..0000000
--- a/src/astar/doc/doc-astar.queries
+++ /dev/null
@@ -1,118 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM pgr_astar(
- 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
- 2, 12);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | 8 | 1 | 1
- 3 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 9 | 15 | 1 | 3
- 5 | 5 | 12 | -1 | 0 | 4
-(5 rows)
-
---q2
-SELECT * FROM pgr_astar(
- 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
- 2, 12,
- directed := false, heuristic := 2);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | 10 | 1 | 1
- 3 | 3 | 10 | 12 | 1 | 2
- 4 | 4 | 11 | 13 | 1 | 3
- 5 | 5 | 12 | -1 | 0 | 4
-(5 rows)
-
---q3
-SELECT * FROM pgr_astar(
- 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
- 2, ARRAY[3, 12], heuristic := 2);
- seq | path_seq | end_vid | node | edge | cost | agg_cost
------+----------+---------+------+------+------+----------
- 1 | 1 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 3 | 9 | 16 | 1 | 3
- 5 | 5 | 3 | 4 | 3 | 1 | 4
- 6 | 6 | 3 | 3 | -1 | 0 | 5
- 7 | 1 | 12 | 2 | 4 | 1 | 0
- 8 | 2 | 12 | 5 | 8 | 1 | 1
- 9 | 3 | 12 | 6 | 9 | 1 | 2
- 10 | 4 | 12 | 9 | 15 | 1 | 3
- 11 | 5 | 12 | 12 | -1 | 0 | 4
-(11 rows)
-
---q4
-SELECT * FROM pgr_astar(
- 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
- ARRAY[7, 2], 12, heuristic := 0);
- seq | path_seq | start_vid | node | edge | cost | agg_cost
------+----------+-----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 5 | 10 | 1 | 1
- 3 | 3 | 2 | 10 | 12 | 1 | 2
- 4 | 4 | 2 | 11 | 13 | 1 | 3
- 5 | 5 | 2 | 12 | -1 | 0 | 4
- 6 | 1 | 7 | 7 | 6 | 1 | 0
- 7 | 2 | 7 | 8 | 7 | 1 | 1
- 8 | 3 | 7 | 5 | 10 | 1 | 2
- 9 | 4 | 7 | 10 | 12 | 1 | 3
- 10 | 5 | 7 | 11 | 13 | 1 | 4
- 11 | 6 | 7 | 12 | -1 | 0 | 5
-(11 rows)
-
---q5
-SELECT * FROM pgr_astar(
- 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
- ARRAY[7, 2], ARRAY[3, 12], heuristic := 2);
- seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
------+----------+-----------+---------+------+------+------+----------
- 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
- 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
- 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
- 7 | 1 | 2 | 12 | 2 | 4 | 1 | 0
- 8 | 2 | 2 | 12 | 5 | 8 | 1 | 1
- 9 | 3 | 2 | 12 | 6 | 9 | 1 | 2
- 10 | 4 | 2 | 12 | 9 | 15 | 1 | 3
- 11 | 5 | 2 | 12 | 12 | -1 | 0 | 4
- 12 | 1 | 7 | 3 | 7 | 6 | 1 | 0
- 13 | 2 | 7 | 3 | 8 | 7 | 1 | 1
- 14 | 3 | 7 | 3 | 5 | 8 | 1 | 2
- 15 | 4 | 7 | 3 | 6 | 9 | 1 | 3
- 16 | 5 | 7 | 3 | 9 | 16 | 1 | 4
- 17 | 6 | 7 | 3 | 4 | 3 | 1 | 5
- 18 | 7 | 7 | 3 | 3 | -1 | 0 | 6
- 19 | 1 | 7 | 12 | 7 | 6 | 1 | 0
- 20 | 2 | 7 | 12 | 8 | 7 | 1 | 1
- 21 | 3 | 7 | 12 | 5 | 8 | 1 | 2
- 22 | 4 | 7 | 12 | 6 | 9 | 1 | 3
- 23 | 5 | 7 | 12 | 9 | 15 | 1 | 4
- 24 | 6 | 7 | 12 | 12 | -1 | 0 | 5
-(24 rows)
-
---q6
-SELECT * FROM pgr_astar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
- 2, 12, true, true);
-NOTICE: Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 4 | 1
- 1 | 5 | 8 | 1
- 2 | 6 | 9 | 1
- 3 | 9 | 15 | 1
- 4 | 12 | -1 | 0
-(5 rows)
-
---q7
-ROLLBACK;
-ROLLBACK
diff --git a/src/astar/doc/pgr_aStar.rst b/src/astar/doc/pgr_aStar.rst
deleted file mode 100644
index 89bb5ee..0000000
--- a/src/astar/doc/pgr_aStar.rst
+++ /dev/null
@@ -1,296 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_aStar:
-
-pgr_aStar
-===============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_aStar`` — Returns the shortest path using A* algorithm.
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org//libs/graph/doc/astar_search.html
-
- Boost Graph Inside
-
-.. rubric:: Availability:
-
-* pgr_astar(one to one) 2.0.0, Signature changed 2.3.0
-* pgr_astar(other signatures) 2.4.0
-
-
-
-Characteristics
--------------------------------------------------------------------------------
-
-The main Characteristics are:
-
- - Process is done only on edges with positive costs.
- - Vertices of the graph are:
-
- - **positive** when it belongs to the edges_sql
-
- - Values are returned when there is a path.
-
- - When the starting vertex and ending vertex are the same, there is no path.
-
- - The agg_cost the non included values (v, v) is 0
-
- - When the starting vertex and ending vertex are the different and there is no path:
-
- - The agg_cost the non included values (u, v) is ∞
-
- - When (x,y) coordinates for the same vertex identifier differ:
-
- - A random selection of the vertex's (x,y) coordinates is used.
-
- - Running time: :math:`O((E + V) * \log V)`
-
-
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_aStar(edges_sql, start_vid, end_vid)
- pgr_aStar(edges_sql, start_vid, end_vid, directed, heuristic, factor, epsilon)
-
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-
-.. code-block:: none
-
- pgr_aStar(edges_sql, start_vid, end_vids, directed, heuristic, factor, epsilon) -- proposed
- pgr_aStar(edges_sql, starts_vid, end_vid, directed, heuristic, factor, epsilon) -- proposed
- pgr_aStar(edges_sql, starts_vid, end_vids, directed, heuristic, factor, epsilon) -- proposed
- RETURNS SET OF (seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)
- OR EMPTY SET
-
-
-Signatures
------------------
-
-
-.. index::
- single: aStar(Minimal Use) -- New Signature
-
-
-Minimal Signature
-...............................................................................
-
-.. code-block:: none
-
- pgr_aStar(edges_sql, start_vid, end_vid)
- RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
-
-:Example: Using the defaults
-
-.. literalinclude:: doc-astar.queries
- :start-after: --q1
- :end-before: --q2
-
-
-
-.. index::
- single: aStar(One to One) -- New Signature
-
-
-One to One
-...............................................................................
-.. code-block:: none
-
- pgr_aStar(edges_sql, start_vid, end_vid, directed, heuristic, factor, epsilon)
- RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
-
-:Example: Undirected using Heuristic 2
-
-.. literalinclude:: doc-astar.queries
- :start-after: --q2
- :end-before: --q3
-
-
-
-.. index::
- single: astar(One to Many) -- Proposed
-
-One to many
-.......................................
-
-.. code-block:: none
-
- pgr_aStar(edges_sql, start_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
- RETURNS SET OF (seq, path_seq, end_vid, node, edge, cost, agg_cost) or EMPTY SET
-
-This signature finds the shortest path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-Using this signature, will load once the graph and perform a one to one `pgr_astar`
-where the starting vertex is fixed, and stop when all ``end_vids`` are reached.
-
- - The result is equivalent to the union of the results of the one to one `pgr_astar`.
- - The extra ``end_vid`` in the result is used to distinguish to which path it belongs.
-
-:Example:
-
-.. literalinclude:: doc-astar.queries
- :start-after: --q3
- :end-before: --q4
-
-.. index::
- single: aStar(Many to One) -- Proposed
-
-Many to One
-.......................................
-
-.. code-block:: none
-
- pgr_aStar(edges_sql, starts_vid, end_vid, directed, heuristic, factor, epsilon) -- Proposed
- RETURNS SET OF (seq, path_seq, start_vid, node, edge, cost, agg_cost) or EMPTY SET
-
-This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-Using this signature, will load once the graph and perform several one to one `pgr_aStar`
-where the ending vertex is fixed.
-
- - The result is the union of the results of the one to one `pgr_aStar`.
- - The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
-
-:Example:
-
-.. literalinclude:: doc-astar.queries
- :start-after: --q4
- :end-before: --q5
-
-
-
-.. index::
- single: aStar(Many to Many) -- Proposed
-
-Many to Many
-.......................................
-
-.. code-block:: none
-
- pgr_aStar(edges_sql, starts_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
- RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost) or EMPTY SET
-
-This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra`
-for all ``start_vids``.
-
- - The result is the union of the results of the one to one `pgr_dijkstra`.
- - The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
-
-The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs.
-
-:Example:
-
-.. literalinclude:: doc-astar.queries
- :start-after: --q5
- :end-before: --q6
-
-
-
-
-
-
-Description of the Signatures
---------------------------------
-
-..
- description of the edges_sql queries
-
-.. include:: pgRouting-concepts.rst
- :start-after: xy_edges_sql_start
- :end-before: xy_edges_sql_end
-
-
-Description of the parameters of the signatures
-.................................................
-
-================ ====================== =================================================
-Parameter Type Description
-================ ====================== =================================================
-**edges_sql** ``TEXT`` Edges SQL query as described above.
-**start_vid** ``ANY-INTEGER`` Starting vertex identifier.
-**end_vid** ``ANY-INTEGER`` Ending vertex identifier.
-**directed** ``BOOLEAN`` - Optional.
-
- - When ``false`` the graph is considered as Undirected.
- - Default is ``true`` which considers the graph as Directed.
-
-**heuristic** ``INTEGER`` (optional). Heuristic number. Current valid values 0~5. Default ``5``
-
- - 0: h(v) = 0 (Use this value to compare with pgr_dijkstra)
- - 1: h(v) abs(max(dx, dy))
- - 2: h(v) abs(min(dx, dy))
- - 3: h(v) = dx * dx + dy * dy
- - 4: h(v) = sqrt(dx * dx + dy * dy)
- - 5: h(v) = abs(dx) + abs(dy)
-
-**factor** ``FLOAT`` (optional). For units manipulation. :math:`factor > 0`. Default ``1``. see :ref:`astar_factor`
-**epsilon** ``FLOAT`` (optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``.
-================ ====================== =================================================
-
-
-
-
-Description of the return values
-.................................................
-
-Returns set of ``(seq, path_seq, node, edge, cost, agg_cost)``
-
-============= =========== =================================================
-Column Type Description
-============= =========== =================================================
-**seq** ``INTEGER`` Row sequence.
-**path_seq** ``INTEGER`` Path sequence that indicates the relative position on the path.
-**node** ``BIGINT`` Identifier of the node:
- - A positive value indicates the node is a vertex of edges_sql.
- - A negative value indicates the node is a point of points_sql.
-
-**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence.
- - ``-1`` for the last row in the path sequence.
-
-**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the path sequence.
- - ``0`` for the last row in the path sequence.
-
-**agg_cost** ``FLOAT`` Aggregate cost from ``start_vid`` to ``node``.
- - ``0`` for the first row in the path sequence.
-
-============= =========== =================================================
-
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`astar`
-* :ref:`sampledata`
-* http://www.boost.org/libs/graph/doc/astar_search.html
-* http://en.wikipedia.org/wiki/A*_search_algorithm
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/astar/doc/pgr_aStarCost.rst b/src/astar/doc/pgr_aStarCost.rst
deleted file mode 100644
index 28c08cd..0000000
--- a/src/astar/doc/pgr_aStarCost.rst
+++ /dev/null
@@ -1,239 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_aStarCost:
-
-pgr_aStarCost -- proposed
-===============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_aStarCost`` — Returns the aggregate cost shortest path using :ref:`astar` algorithm.
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org//libs/graph/doc/astar_search.html
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.4.0
-
-Signature Summary
------------------
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-.. code-block:: none
-
- pgr_aStarCost(edges_sql, start_vid, end_vid) -- Proposed
- pgr_aStarCost(edges_sql, start_vid, end_vid, directed, heuristic, factor, epsilon) -- Proposed
- pgr_aStarCost(edges_sql, start_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
- pgr_aStarCost(edges_sql, starts_vid, end_vid, directed, heuristic, factor, epsilon) -- Proposed
- pgr_aStarCost(edges_sql, starts_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
-
- RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
-
-
-Signatures
------------------
-
-
-.. index::
- single: aStarCost(Minimal Signature) -- Proposed
-
-Minimal Signature
-...............................................................................
-
-.. code-block:: none
-
- pgr_aStarCost(edges_sql, start_vid, end_vid)
- RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
-
-:Example: Using the defaults
-
-.. literalinclude:: doc-aStarCost.queries
- :start-after: --q1
- :end-before: --q2
-
-
-
-.. index::
- single: aStarCost(One to One) -- Proposed
-
-One to One
-...............................................................................
-.. code-block:: none
-
- pgr_aStarCost(edges_sql, start_vid, end_vid, directed, heuristic, factor, epsilon)
- RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
-
-:Example: Setting a Heuristic
-
-.. literalinclude:: doc-aStarCost.queries
- :start-after: --q2
- :end-before: --q3
-
-
-
-.. index::
- single: aStarCost(One to Many) -- Proposed
-
-One to many
-.......................................
-
-.. code-block:: none
-
- pgr_aStarCost(edges_sql, start_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
- RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
-
-This signature finds a path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-Using this signature, will load once the graph and perform a one to one `pgr_astar`
-where the starting vertex is fixed, and stop when all ``end_vids`` are reached.
-
- - The result is equivalent to the union of the results of the one to one `pgr_astar`.
- - The extra ``end_vid`` column in the result is used to distinguish to which path it belongs.
-
-:Example:
-
-.. literalinclude:: doc-aStarCost.queries
- :start-after: --q3
- :end-before: --q4
-
-.. index::
- single: aStarCost(Many to One) -- Proposed
-
-Many to One
-.......................................
-
-.. code-block:: none
-
- pgr_aStarCost(edges_sql, starts_vid, end_vid, directed, heuristic, factor, epsilon) -- Proposed
- RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
-
-This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-Using this signature, will load once the graph and perform several one to one `pgr_aStar`
-where the ending vertex is fixed.
-
- - The result is the union of the results of the one to one `pgr_aStar`.
- - The extra ``start_vid`` column in the result is used to distinguish to which path it belongs.
-
-:Example:
-
-.. literalinclude:: doc-aStarCost.queries
- :start-after: --q4
- :end-before: --q5
-
-
-
-.. index::
- single: aStarCost(Many to Many) -- Proposed
-
-Many to Many
-.......................................
-
-.. code-block:: none
-
- pgr_aStarCost(edges_sql, starts_vid, end_vids, directed, heuristic, factor, epsilon) -- Proposed
- RETURNS SET OF (start_vid, end_vid, agg_cost) OR EMPTY SET
-
-This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra`
-for all ``start_vids``.
-
- - The result is the union of the results of the one to one `pgr_dijkstra`.
- - The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
-
-The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs.
-
-:Example:
-
-.. literalinclude:: doc-aStarCost.queries
- :start-after: --q5
- :end-before: --q6
-
-
-
-
-
-
-Description of the Signatures
---------------------------------
-
-..
- description of the edges_sql queries
-
-.. include:: pgRouting-concepts.rst
- :start-after: xy_edges_sql_start
- :end-before: xy_edges_sql_end
-
-
-Description of the parameters of the signatures
-.................................................
-
-================ ====================== =================================================
-Parameter Type Description
-================ ====================== =================================================
-**edges_sql** ``TEXT`` Edges SQL query as described above.
-**start_vid** ``ANY-INTEGER`` Starting vertex identifier.
-**end_vid** ``ANY-INTEGER`` Ending vertex identifier.
-**directed** ``BOOLEAN`` - Optional.
-
- - When ``false`` the graph is considered as Undirected.
- - Default is ``true`` which considers the graph as Directed.
-
-**heuristic** ``INTEGER`` (optional). Heuristic number. Current valid values 0~5. Default ``5``
-
- - 0: h(v) = 0 (Use this value to compare with pgr_dijkstra)
- - 1: h(v) abs(max(dx, dy))
- - 2: h(v) abs(min(dx, dy))
- - 3: h(v) = dx * dx + dy * dy
- - 4: h(v) = sqrt(dx * dx + dy * dy)
- - 5: h(v) = abs(dx) + abs(dy)
-
-**factor** ``FLOAT`` (optional). For units manipulation. :math:`factor > 0`. Default ``1``. See :ref:`astar_factor`
-**epsilon** ``FLOAT`` (optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``.
-================ ====================== =================================================
-
-
-
-
-Description of the return values
-.................................................
-
-Returns set of ``(start_vid, end_vid, agg_cost)``
-
-============= ============= =================================================
-Column Type Description
-============= ============= =================================================
-**start_vid** ``BIGINT`` Identifier of the starting vertex.
-**end_vid** ``BIGINT`` Identifier of the ending vertex.
-**agg_cost** ``FLOAT`` Aggregate cost of the shortest path from ``start_vid`` to ``end_vid``.
-============= ============= =================================================
-
-
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`astar`.
-* :ref:`sampledata` network.
-* http://www.boost.org/libs/graph/doc/astar_search.html
-* http://en.wikipedia.org/wiki/A*_search_algorithm
diff --git a/src/astar/sql/CMakeLists.txt b/src/astar/sql/CMakeLists.txt
deleted file mode 100644
index ba8b329..0000000
--- a/src/astar/sql/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/astarV2.0.sql
- #${CMAKE_CURRENT_SOURCE_DIR}/astarOneToOne.sql
-
- ${CMAKE_CURRENT_SOURCE_DIR}/_astar.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/astar.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/astarCost.sql
- )
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/astar/sql/_astar.sql b/src/astar/sql/_astar.sql
deleted file mode 100644
index 1888c8c..0000000
--- a/src/astar/sql/_astar.sql
+++ /dev/null
@@ -1,108 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astarV3.0.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-CREATE OR REPLACE FUNCTION _pgr_astar(
- edges_sql TEXT, -- XY edges sql
- start_vid BIGINT,
- end_vid BIGINT,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- only_cost BOOLEAN DEFAULT false,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'astarOneToOne'
-LANGUAGE c IMMUTABLE STRICT;
-
-
-CREATE OR REPLACE FUNCTION _pgr_astar(
- edges_sql TEXT, -- XY edges sql
- start_vid BIGINT,
- end_vids anyarray,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- only_cost BOOLEAN DEFAULT false,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'astarOneToMany'
-LANGUAGE c IMMUTABLE STRICT;
-
-CREATE OR REPLACE FUNCTION _pgr_astar(
- edges_sql TEXT, -- XY edges sql
- start_vids anyarray,
- end_vid BIGINT,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- only_cost BOOLEAN DEFAULT false,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'astarManyToOne'
-LANGUAGE c IMMUTABLE STRICT;
-
-CREATE OR REPLACE FUNCTION _pgr_astar(
- edges_sql TEXT, -- XY edges sql
- start_vids anyarray,
- end_vids anyarray,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- only_cost BOOLEAN DEFAULT false,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'astarManyToMany'
-LANGUAGE c IMMUTABLE STRICT;
diff --git a/src/astar/sql/astar.sql b/src/astar/sql/astar.sql
deleted file mode 100644
index 7c71375..0000000
--- a/src/astar/sql/astar.sql
+++ /dev/null
@@ -1,136 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astar.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-CREATE OR REPLACE FUNCTION pgr_astar(
- edges_sql TEXT, -- XY edges sql
- start_vid BIGINT,
- end_vid BIGINT,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_astar(_pgr_get_statement($1), $2, $3, $4, $5, $6, $7);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-CREATE OR REPLACE FUNCTION pgr_astar(
- edges_sql TEXT, -- XY edges sql
- start_vid BIGINT,
- end_vids ANYARRAY,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_astar(_pgr_get_statement($1), $2, $3, $4, $5, $6, $7);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-CREATE OR REPLACE FUNCTION pgr_astar(
- edges_sql TEXT, -- XY edges sql
- start_vids ANYARRAY,
- end_vid BIGINT,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_astar(_pgr_get_statement($1), $2, $3, $4, $5, $6, $7);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-CREATE OR REPLACE FUNCTION pgr_astar(
- edges_sql TEXT, -- XY edges sql
- start_vids ANYARRAY,
- end_vids ANYARRAY,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_astar(_pgr_get_statement($1), $2, $3, $4, $5, $6, $7);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
diff --git a/src/astar/sql/astarCost.sql b/src/astar/sql/astarCost.sql
deleted file mode 100644
index 719dfd1..0000000
--- a/src/astar/sql/astarCost.sql
+++ /dev/null
@@ -1,130 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astar.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
---
--- pgr_astarCost subfamily of functions
---
-
--- one to one
-CREATE OR REPLACE FUNCTION pgr_astarCost(
- edges_sql TEXT, -- XY edges sql
- BIGINT, -- start_id
- BIGINT, -- end_id
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT $2, $3, a.agg_cost
- FROM _pgr_astar(_pgr_get_statement($1), $2, $3, $4, $5, $6, $7, true) a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
--- one to many
-CREATE OR REPLACE FUNCTION pgr_astarCost(
- edges_sql TEXT, -- XY edges sql
- BIGINT,
- end_vids ANYARRAY,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT $2, a.end_vid, a.agg_cost
- FROM _pgr_astar(_pgr_get_statement($1), $2, $3, $4, $5, $6, $7, true) a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
--- many to one
-CREATE OR REPLACE FUNCTION pgr_astarCost(
- edges_sql TEXT, -- XY edges sql
- start_vids ANYARRAY,
- BIGINT,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT a.start_vid, $3, a.agg_cost
- FROM _pgr_astar(_pgr_get_statement($1), $2, $3, $4, $5, $6, $7, true) a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
--- many to many
-CREATE OR REPLACE FUNCTION pgr_astarCost(
- edges_sql TEXT, -- XY edges sql
- start_vids ANYARRAY,
- end_vids ANYARRAY,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
- FROM _pgr_astar(_pgr_get_statement($1), $2, $3, $4, $5, $6, $7, true) a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
diff --git a/src/astar/sql/astarOneToOne.sql b/src/astar/sql/astarOneToOne.sql
deleted file mode 100644
index ab9cd2e..0000000
--- a/src/astar/sql/astarOneToOne.sql
+++ /dev/null
@@ -1,75 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astarOneToOne.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-CREATE OR REPLACE FUNCTION _pgr_astar(
- edges_sql TEXT, -- XY edges sql
- start_vid BIGINT,
- end_vid BIGINT,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- only_cost BOOLEAN DEFAULT false,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'astarOneToOne'
-LANGUAGE c IMMUTABLE STRICT;
-
-CREATE OR REPLACE FUNCTION pgr_astar(
- edges_sql TEXT, -- XY edges sql
- start_vid BIGINT,
- end_vid BIGINT,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_astar(_pgr_get_statement($1), $2, $3, $4, $5, $6, $7);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
diff --git a/src/astar/sql/astarV2.0.sql b/src/astar/sql/astarV2.0.sql
deleted file mode 100644
index 3bdc6ae..0000000
--- a/src/astar/sql/astarV2.0.sql
+++ /dev/null
@@ -1,50 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-
--- V2 signature
-CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
-RETURNS SETOF pgr_costresult AS
-$BODY$
-DECLARE
-has_reverse BOOLEAN;
-sql TEXT;
-BEGIN
- RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
- has_reverse =_pgr_parameter_check('astar', edges_sql, false);
- sql = edges_sql;
- IF (has_reverse != has_rcost) THEN
- IF (has_reverse) THEN
- sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
- ELSE
- raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
- END IF;
- END IF;
-
- RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
- FROM pgr_astar(sql, source_id, target_id, directed);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
diff --git a/src/astar/src/CMakeLists.txt b/src/astar/src/CMakeLists.txt
index 61e9dc7..3efa0e7 100644
--- a/src/astar/src/CMakeLists.txt
+++ b/src/astar/src/CMakeLists.txt
@@ -1,8 +1,5 @@
ADD_LIBRARY(astar OBJECT
- many_to_many_astar.c
- many_to_one_astar.c
- one_to_many_astar.c
- one_to_one_astar.c
+ astar.c
- astar_many_to_many_driver.cpp
+ astar_driver.cpp
)
diff --git a/src/astar/src/astar.c b/src/astar/src/astar.c
new file mode 100644
index 0000000..26814a0
--- /dev/null
+++ b/src/astar/src/astar.c
@@ -0,0 +1,246 @@
+/*PGR-GNU*****************************************************************
+File: astarOneToOne.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "c_common/postgres_connection.h"
+#include "utils/array.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+
+#include "drivers/astar/astar_driver.h"
+
+PGDLLEXPORT Datum astarManyToMany(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(astarManyToMany);
+
+
+static
+void
+process(char* edges_sql,
+ ArrayType *starts,
+ ArrayType *ends,
+ bool directed,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost,
+ bool normal,
+ General_path_element_t **result_tuples,
+ size_t *result_count) {
+ check_parameters(heuristic, factor, epsilon);
+
+ pgr_SPI_connect();
+
+ int64_t* start_vidsArr = NULL;
+ size_t size_start_vidsArr = 0;
+
+ int64_t* end_vidsArr = NULL;
+ size_t size_end_vidsArr = 0;
+
+ Pgr_edge_xy_t *edges = NULL;
+ size_t total_edges = 0;
+
+ if (normal) {
+ pgr_get_edges_xy(edges_sql, &edges, &total_edges);
+ start_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_start_vidsArr, starts);
+ end_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_end_vidsArr, ends);
+ } else {
+ pgr_get_edges_xy_reversed(edges_sql, &edges, &total_edges);
+ end_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_end_vidsArr, starts);
+ start_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_start_vidsArr, ends);
+ }
+
+ if (total_edges == 0) {
+ PGR_DBG("No edges found");
+ (*result_count) = 0;
+ (*result_tuples) = NULL;
+ pgr_SPI_finish();
+ return;
+ }
+
+ PGR_DBG("Starting processing");
+ char *log_msg = NULL;
+ char *notice_msg = NULL;
+ char *err_msg = NULL;
+ clock_t start_t = clock();
+ do_pgr_astarManyToMany(
+ edges, total_edges,
+ start_vidsArr, size_start_vidsArr,
+ end_vidsArr, size_end_vidsArr,
+ directed,
+ heuristic,
+ factor,
+ epsilon,
+ only_cost,
+ normal,
+ result_tuples, result_count,
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ if (only_cost) {
+ time_msg("processing pgr_astarCost(many to many)", start_t, clock());
+ } else {
+ time_msg("processing pgr_astar(many to many)", start_t, clock());
+ }
+
+
+ if (err_msg && (*result_tuples)) {
+ pfree(*result_tuples);
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+ }
+
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+ if (edges) pfree(edges);
+ if (start_vidsArr) pfree(start_vidsArr);
+ if (end_vidsArr) pfree(end_vidsArr);
+
+ pgr_SPI_finish();
+}
+
+PGDLLEXPORT Datum
+astarManyToMany(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**********************************************************************/
+ General_path_element_t *result_tuples = NULL;
+ size_t result_count = 0;
+ /**********************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+ /*
+ edges_sql TEXT,
+ start_vids ARRAY[ANY_INTEGER], -- anyarray
+ end_vids ARRAY[ANY_INTEGER], -- anyarray
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 0,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ **********************************************************************/
+
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
+ PG_GETARG_BOOL(3),
+ PG_GETARG_INT32(4),
+ PG_GETARG_FLOAT8(5),
+ PG_GETARG_FLOAT8(6),
+ PG_GETARG_BOOL(7),
+ PG_GETARG_BOOL(8),
+ &result_tuples,
+ &result_count);
+
+
+#if PGSQL_VERSION > 95
+ funcctx->max_calls = result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->max_calls = (uint32_t) result_count;
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE)
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (General_path_element_t*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+
+ /*********************************************************************
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ **********************************************************************/
+
+
+ size_t numb = 8;
+ values = palloc(numb * sizeof(Datum));
+ nulls = palloc(numb * sizeof(bool));
+
+ size_t i;
+ for (i = 0; i < numb; ++i) {
+ nulls[i] = false;
+ }
+
+
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
+ values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].start_id);
+ values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].end_id);
+ values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
+ values[5] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
+ values[6] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
+ values[7] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
+
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ SRF_RETURN_DONE(funcctx);
+ }
+}
diff --git a/src/astar/src/astar_driver.cpp b/src/astar/src/astar_driver.cpp
new file mode 100644
index 0000000..2bee248
--- /dev/null
+++ b/src/astar/src/astar_driver.cpp
@@ -0,0 +1,203 @@
+/*PGR-GNU*****************************************************************
+File: astarOneToOne_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/astar/astar_driver.h"
+
+#include <sstream>
+#include <deque>
+#include <algorithm>
+#include <vector>
+
+#include "astar/pgr_astar.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+
+void
+check_parameters(
+ int heuristic,
+ double factor,
+ double epsilon) {
+ if (heuristic > 5 || heuristic < 0) {
+ ereport(ERROR,
+ (errmsg("Unknown heuristic"),
+ errhint("Valid values: 0~5")));
+ }
+ if (factor <= 0) {
+ ereport(ERROR,
+ (errmsg("Factor value out of range"),
+ errhint("Valid values: positive non zero")));
+ }
+ if (epsilon < 1) {
+ ereport(ERROR,
+ (errmsg("Epsilon value out of range"),
+ errhint("Valid values: 1 or greater than 1")));
+ }
+}
+
+template < class G >
+std::deque<Path>
+pgr_astar(
+ G &graph,
+ std::vector<int64_t> sources,
+ std::vector<int64_t> targets,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost,
+ bool normal) {
+ std::sort(sources.begin(), sources.end());
+ sources.erase(
+ std::unique(sources.begin(), sources.end()),
+ sources.end());
+
+ std::sort(targets.begin(), targets.end());
+ targets.erase(
+ std::unique(targets.begin(), targets.end()),
+ targets.end());
+
+ pgrouting::algorithms::Pgr_astar< G > fn_astar;
+ auto paths = fn_astar.astar(graph, sources, targets,
+ heuristic, factor, epsilon, only_cost);
+
+ if (!normal) {
+ for (auto &path : paths) {
+ path.reverse();
+ }
+ }
+ return paths;
+}
+
+
+/************************************************************
+ edges_sql TEXT,
+ vertex_table TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT directed BOOLEAN DEFAULT true,
+ ***********************************************************/
+void do_pgr_astarManyToMany(
+ Pgr_edge_xy_t *edges, size_t total_edges,
+ int64_t *start_vidsArr, size_t size_start_vidsArr,
+ int64_t *end_vidsArr, size_t size_end_vidsArr,
+ bool directed,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost,
+ bool normal,
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+ char** log_msg,
+ char** notice_msg,
+ char** err_msg) {
+ std::ostringstream log;
+ std::ostringstream notice;
+ std::ostringstream err;
+ try {
+ pgassert(!(*log_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert(*return_count == 0);
+ pgassert(total_edges != 0);
+
+
+ log << "Inserting target vertices into a c++ vector structure\n";
+ std::vector< int64_t > end_vids(
+ end_vidsArr,
+ end_vidsArr + size_end_vidsArr);
+ std::vector< int64_t > start_vids(
+ start_vidsArr,
+ start_vidsArr + size_start_vidsArr);
+
+ graphType gType = directed? DIRECTED: UNDIRECTED;
+
+ std::deque< Path >paths;
+ if (directed) {
+ log << "Working with directed Graph\n";
+ pgrouting::xyDirectedGraph digraph(
+ pgrouting::extract_vertices(edges, total_edges),
+ gType);
+ digraph.insert_edges(edges, total_edges);
+ paths = pgr_astar(digraph, start_vids, end_vids,
+ heuristic, factor, epsilon, only_cost, normal);
+ } else {
+ log << "Working with Undirected Graph\n";
+ pgrouting::xyUndirectedGraph undigraph(
+ pgrouting::extract_vertices(edges, total_edges),
+ gType);
+ undigraph.insert_edges(edges, total_edges);
+ paths = pgr_astar(undigraph, start_vids, end_vids,
+ heuristic, factor, epsilon, only_cost, normal);
+ }
+
+ size_t count(0);
+ count = count_tuples(paths);
+
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found\n";
+ *log_msg = pgr_msg(notice.str().c_str());
+ return;
+ }
+
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ log << "Converting a set of paths into the tuples\n";
+ (*return_count) = (collapse_paths(return_tuples, paths));
+
+ *log_msg = log.str().empty()?
+ *log_msg :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
+
diff --git a/src/astar/src/astar_many_to_many_driver.cpp b/src/astar/src/astar_many_to_many_driver.cpp
deleted file mode 100644
index 5150f72..0000000
--- a/src/astar/src/astar_many_to_many_driver.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astarOneToOne_driver.cpp
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./astar_many_to_many_driver.h"
-
-#include <sstream>
-#include <deque>
-#include <algorithm>
-#include <vector>
-
-#include "./pgr_astar.hpp"
-
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
-
-
-void
-check_parameters(
- int heuristic,
- double factor,
- double epsilon) {
- if (heuristic > 5 || heuristic < 0) {
- ereport(ERROR,
- (errmsg("Unknown heuristic"),
- errhint("Valid values: 0~5")));
- }
- if (factor <= 0) {
- ereport(ERROR,
- (errmsg("Factor value out of range"),
- errhint("Valid values: positive non zero")));
- }
- if (epsilon < 1) {
- ereport(ERROR,
- (errmsg("Epsilon value out of range"),
- errhint("Valid values: 1 or greater than 1")));
- }
-}
-
-template < class G >
-std::deque<Path>
-pgr_astar(
- G &graph,
- std::vector<int64_t> sources,
- std::vector<int64_t> targets,
- int heuristic,
- double factor,
- double epsilon,
- bool only_cost,
- bool normal) {
- std::sort(sources.begin(), sources.end());
- sources.erase(
- std::unique(sources.begin(), sources.end()),
- sources.end());
-
- std::sort(targets.begin(), targets.end());
- targets.erase(
- std::unique(targets.begin(), targets.end()),
- targets.end());
-
- pgrouting::algorithms::Pgr_astar< G > fn_astar;
- auto paths = fn_astar.astar(graph, sources, targets,
- heuristic, factor, epsilon, only_cost);
-
- if (!normal) {
- for (auto &path : paths) {
- path.reverse();
- }
- }
- return paths;
-}
-
-
-/************************************************************
- edges_sql TEXT,
- vertex_table TEXT,
- start_vid BIGINT,
- end_vid BIGINT directed BOOLEAN DEFAULT true,
- ***********************************************************/
-void do_pgr_astarManyToMany(
- Pgr_edge_xy_t *edges, size_t total_edges,
- int64_t *start_vidsArr, size_t size_start_vidsArr,
- int64_t *end_vidsArr, size_t size_end_vidsArr,
- bool directed,
- int heuristic,
- double factor,
- double epsilon,
- bool only_cost,
- bool normal,
- General_path_element_t **return_tuples,
- size_t *return_count,
- char** log_msg,
- char** notice_msg,
- char** err_msg) {
- std::ostringstream log;
- std::ostringstream notice;
- std::ostringstream err;
- try {
- pgassert(!(*log_msg));
- pgassert(!(*err_msg));
- pgassert(!(*return_tuples));
- pgassert(*return_count == 0);
- pgassert(total_edges != 0);
-
-
- log << "Inserting target vertices into a c++ vector structure\n";
- std::vector< int64_t > end_vids(
- end_vidsArr,
- end_vidsArr + size_end_vidsArr);
- std::vector< int64_t > start_vids(
- start_vidsArr,
- start_vidsArr + size_start_vidsArr);
-
- graphType gType = directed? DIRECTED: UNDIRECTED;
-
- std::deque< Path >paths;
- if (directed) {
- log << "Working with directed Graph\n";
- pgrouting::xyDirectedGraph digraph(
- pgrouting::extract_vertices(edges, total_edges),
- gType);
- digraph.insert_edges(edges, total_edges);
- paths = pgr_astar(digraph, start_vids, end_vids,
- heuristic, factor, epsilon, only_cost, normal);
- } else {
- log << "Working with Undirected Graph\n";
- pgrouting::xyUndirectedGraph undigraph(
- pgrouting::extract_vertices(edges, total_edges),
- gType);
- undigraph.insert_edges(edges, total_edges);
- paths = pgr_astar(undigraph, start_vids, end_vids,
- heuristic, factor, epsilon, only_cost, normal);
- }
-
- size_t count(0);
- count = count_tuples(paths);
-
-
- if (count == 0) {
- (*return_tuples) = NULL;
- (*return_count) = 0;
- log <<
- "No paths found\n";
- *log_msg = pgr_msg(log.str().c_str());
- return;
- }
-
- (*return_tuples) = pgr_alloc(count, (*return_tuples));
- log << "Converting a set of paths into the tuples\n";
- (*return_count) = (collapse_paths(return_tuples, paths));
-
- *log_msg = log.str().empty()?
- *log_msg :
- pgr_msg(log.str().c_str());
- *notice_msg = notice.str().empty()?
- *notice_msg :
- pgr_msg(notice.str().c_str());
- } catch (AssertFailedException &except) {
- (*return_tuples) = pgr_free(*return_tuples);
- (*return_count) = 0;
- err << except.what();
- *err_msg = pgr_msg(err.str().c_str());
- *log_msg = pgr_msg(log.str().c_str());
- } catch (std::exception &except) {
- (*return_tuples) = pgr_free(*return_tuples);
- (*return_count) = 0;
- err << except.what();
- *err_msg = pgr_msg(err.str().c_str());
- *log_msg = pgr_msg(log.str().c_str());
- } catch(...) {
- (*return_tuples) = pgr_free(*return_tuples);
- (*return_count) = 0;
- err << "Caught unknown exception!";
- *err_msg = pgr_msg(err.str().c_str());
- *log_msg = pgr_msg(log.str().c_str());
- }
-}
-
diff --git a/src/astar/src/astar_many_to_many_driver.h b/src/astar/src/astar_many_to_many_driver.h
deleted file mode 100644
index d028fb1..0000000
--- a/src/astar/src/astar_many_to_many_driver.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astarOneToMany_driver.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_ASTAR_SRC_ASTAR_MANY_TO_MANY_DRIVER_H_
-#define SRC_ASTAR_SRC_ASTAR_MANY_TO_MANY_DRIVER_H_
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- void check_parameters(
- int heuristic,
- double factor,
- double epsilon);
-
- /*********************************************************
- edges_sql TEXT,
- vertex_table TEXT,
- start_vid BIGINT,
- end_vid BIGINT directed BOOLEAN DEFAULT true,
- ********************************************************/
- void do_pgr_astarManyToMany(
- Pgr_edge_xy_t *data_edges,
- size_t total_edges,
- int64_t *start_vidsArr, size_t size_start_vidsArr,
- int64_t *end_vidsArr, size_t size_end_vidsArr,
- bool directed,
- int heuristic,
- double factor,
- double epsilon,
- bool only_cost,
- bool normal,
- General_path_element_t **return_tuples,
- size_t *return_count,
- char** log_msg,
- char** notice_msg,
- char** err_msg);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_ASTAR_SRC_ASTAR_MANY_TO_MANY_DRIVER_H_
diff --git a/src/astar/src/many_to_many_astar.c b/src/astar/src/many_to_many_astar.c
deleted file mode 100644
index 2449bd4..0000000
--- a/src/astar/src/many_to_many_astar.c
+++ /dev/null
@@ -1,238 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astarOneToOne.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-
-#include "./astar_many_to_many_driver.h"
-
-PGDLLEXPORT Datum astarManyToMany(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(astarManyToMany);
-
-
-static
-void
-process(char* edges_sql,
- ArrayType *starts,
- ArrayType *ends,
- bool directed,
- int heuristic,
- double factor,
- double epsilon,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- check_parameters(heuristic, factor, epsilon);
-
- pgr_SPI_connect();
-
- int64_t* start_vidsArr = NULL;
- size_t size_start_vidsArr = 0;
- start_vidsArr = (int64_t*)
- pgr_get_bigIntArray(&size_start_vidsArr, starts);
-
- int64_t* end_vidsArr = NULL;
- size_t size_end_vidsArr = 0;
- end_vidsArr = (int64_t*)
- pgr_get_bigIntArray(&size_end_vidsArr, ends);
-
-
- Pgr_edge_xy_t *edges = NULL;
- size_t total_edges = 0;
-
- pgr_get_edges_xy(edges_sql, &edges, &total_edges);
-
- if (total_edges == 0) {
- PGR_DBG("No edges found");
- (*result_count) = 0;
- (*result_tuples) = NULL;
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting processing");
- char *log_msg = NULL;
- char *notice_msg = NULL;
- char *err_msg = NULL;
- clock_t start_t = clock();
- do_pgr_astarManyToMany(
- edges, total_edges,
- start_vidsArr, size_start_vidsArr,
- end_vidsArr, size_end_vidsArr,
- directed,
- heuristic,
- factor,
- epsilon,
- only_cost,
- true,
- result_tuples, result_count,
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_astarCost(many to many)", start_t, clock());
- } else {
- time_msg("processing pgr_astar(many to many)", start_t, clock());
- }
-
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
- if (start_vidsArr) pfree(start_vidsArr);
- if (end_vidsArr) pfree(end_vidsArr);
-
- pgr_SPI_finish();
-}
-
-PGDLLEXPORT Datum
-astarManyToMany(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**********************************************************************/
- General_path_element_t *result_tuples = NULL;
- size_t result_count = 0;
- /**********************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- /*
- edges_sql TEXT,
- start_vids ARRAY[ANY_INTEGER], -- anyarray
- end_vids ARRAY[ANY_INTEGER], -- anyarray
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 0,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
-
- **********************************************************************/
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_ARRAYTYPE_P(1),
- PG_GETARG_ARRAYTYPE_P(2),
- PG_GETARG_BOOL(3),
- PG_GETARG_INT32(4),
- PG_GETARG_FLOAT8(5),
- PG_GETARG_FLOAT8(6),
- PG_GETARG_BOOL(7),
- &result_tuples,
- &result_count);
-
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->max_calls = (uint32_t) result_count;
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE)
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
-
- /*********************************************************************
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT
- **********************************************************************/
-
-
- size_t numb = 8;
- values = palloc(numb * sizeof(Datum));
- nulls = palloc(numb * sizeof(bool));
-
- size_t i;
- for (i = 0; i < numb; ++i) {
- nulls[i] = false;
- }
-
-
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].start_id);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].end_id);
- values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[5] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- values[6] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
- values[7] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
-
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
diff --git a/src/astar/src/many_to_one_astar.c b/src/astar/src/many_to_one_astar.c
deleted file mode 100644
index 08cfebf..0000000
--- a/src/astar/src/many_to_one_astar.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astarOneToOne.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-
-#include "./astar_many_to_many_driver.h"
-
-PGDLLEXPORT Datum astarManyToOne(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(astarManyToOne);
-
-
-static
-void
-process(char* edges_sql,
- ArrayType *starts,
- int64_t end_vid,
- bool directed,
- int heuristic,
- double factor,
- double epsilon,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- check_parameters(heuristic, factor, epsilon);
-
- pgr_SPI_connect();
-
- size_t size_start_vidsArr = 0;
- int64_t* start_vidsArr = pgr_get_bigIntArray(&size_start_vidsArr, starts);
-
- Pgr_edge_xy_t *edges = NULL;
- size_t total_edges = 0;
-
- pgr_get_edges_xy_reversed(edges_sql, &edges, &total_edges);
-
- if (total_edges == 0) {
- PGR_DBG("No edges found");
- (*result_count) = 0;
- (*result_tuples) = NULL;
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting processing");
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
- clock_t start_t = clock();
- do_pgr_astarManyToMany(
- edges, total_edges,
- &end_vid, 1,
- start_vidsArr, size_start_vidsArr,
- directed,
- heuristic,
- factor,
- epsilon,
- only_cost,
- false,
- result_tuples,
- result_count,
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_astarCost(one to many)", start_t, clock());
- } else {
- time_msg("processing pgr_astar(one to many)", start_t, clock());
- }
-
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
- if (start_vidsArr) pfree(start_vidsArr);
-
- pgr_SPI_finish();
-}
-
-PGDLLEXPORT Datum
-astarManyToOne(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- General_path_element_t *result_tuples = 0;
- size_t result_count = 0;
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************
- edges_sql TEXT,
- start_vid BIGINT,
- end_vids ARRAY[ANY_INTEGER], -- anyarray
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 0,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
-
- **********************************************************************/
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_ARRAYTYPE_P(1),
- PG_GETARG_INT64(2),
- PG_GETARG_BOOL(3),
- PG_GETARG_INT32(4),
- PG_GETARG_FLOAT8(5),
- PG_GETARG_FLOAT8(6),
- PG_GETARG_BOOL(7),
- &result_tuples,
- &result_count);
-
-
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE)
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
-
- /*********************************************************************
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT
- **********************************************************************/
-
-
- values = palloc(7 * sizeof(Datum));
- nulls = palloc(7 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 7; ++i) {
- nulls[i] = false;
- }
-
-
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].start_id);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- values[5] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
- values[6] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
-
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/astar/src/one_to_many_astar.c b/src/astar/src/one_to_many_astar.c
deleted file mode 100644
index fe298b4..0000000
--- a/src/astar/src/one_to_many_astar.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astarOneToOne.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./astar_many_to_many_driver.h"
-
-PGDLLEXPORT Datum astarOneToMany(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(astarOneToMany);
-
-static
-void
-process(char* edges_sql,
- int64_t start_vid,
- ArrayType *ends,
- bool directed,
- int heuristic,
- double factor,
- double epsilon,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- check_parameters(heuristic, factor, epsilon);
-
- size_t size_end_vidsArr = 0;
- int64_t* end_vidsArr = pgr_get_bigIntArray(&size_end_vidsArr, ends);
-
- pgr_SPI_connect();
-
- Pgr_edge_xy_t *edges = NULL;
- size_t total_edges = 0;
-
- pgr_get_edges_xy(edges_sql, &edges, &total_edges);
-
- if (total_edges == 0) {
- PGR_DBG("No edges found");
- (*result_count) = 0;
- (*result_tuples) = NULL;
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting processing");
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
- clock_t start_t = clock();
- do_pgr_astarManyToMany(
- edges, total_edges,
- &start_vid, 1,
- end_vidsArr, size_end_vidsArr,
- directed,
- heuristic,
- factor,
- epsilon,
- only_cost,
- true,
- result_tuples,
- result_count,
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_astarCost(one to many)", start_t, clock());
- } else {
- time_msg("processing pgr_astar(one to many)", start_t, clock());
- }
-
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
- if (end_vidsArr) pfree(end_vidsArr);
-
- pgr_SPI_finish();
-}
-
-PGDLLEXPORT Datum
-astarOneToMany(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- General_path_element_t *result_tuples = 0;
- size_t result_count = 0;
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /*****************************************************************
- edges_sql TEXT,
- start_vid BIGINT,
- end_vids ARRAY[ANY_INTEGER], -- anyarray
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 0,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
-
- ****************************************************************/
-
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT64(1),
- PG_GETARG_ARRAYTYPE_P(2),
- PG_GETARG_BOOL(3),
- PG_GETARG_INT32(4),
- PG_GETARG_FLOAT8(5),
- PG_GETARG_FLOAT8(6),
- PG_GETARG_BOOL(7),
- &result_tuples,
- &result_count);
-
-
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
-
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE)
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
-
- /*********************************************************************
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT
- *********************************************************************/
-
-
- values = palloc(7 * sizeof(Datum));
- nulls = palloc(7 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 7; ++i) {
- nulls[i] = false;
- }
-
-
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].end_id);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- values[5] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
- values[6] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
-
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/astar/src/one_to_one_astar.c b/src/astar/src/one_to_one_astar.c
deleted file mode 100644
index 213fb95..0000000
--- a/src/astar/src/one_to_one_astar.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astarOneToOne.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-
-#include "./astar_many_to_many_driver.h"
-
-PGDLLEXPORT Datum astarOneToOne(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(astarOneToOne);
-
-
-static
-void
-process(char* edges_sql,
- int64_t start_vid,
- int64_t end_vid,
- bool directed,
- int heuristic,
- double factor,
- double epsilon,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- check_parameters(heuristic, factor, epsilon);
-
- pgr_SPI_connect();
-
- PGR_DBG("Load data");
- Pgr_edge_xy_t *edges = NULL;
- size_t total_edges = 0;
-
- pgr_get_edges_xy(edges_sql, &edges, &total_edges);
- PGR_DBG("Total %ld edges in query:", total_edges);
-
- if (total_edges == 0) {
- PGR_DBG("No edges found");
- (*result_count) = 0;
- (*result_tuples) = NULL;
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting processing");
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
- clock_t start_t = clock();
- do_pgr_astarManyToMany(
- edges, total_edges,
- &start_vid, 1,
- &end_vid, 1,
- directed,
- heuristic,
- factor,
- epsilon,
- only_cost,
- true,
- result_tuples,
- result_count,
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_astarCost(one to one)", start_t, clock());
- } else {
- time_msg("processing pgr_astar(one to one)", start_t, clock());
- }
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_count) = 0;
- (*result_tuples) = NULL;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
-
- pgr_SPI_finish();
-}
-
-PGDLLEXPORT Datum
-astarOneToOne(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- General_path_element_t *result_tuples = 0;
- size_t result_count = 0;
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************
- edges_sql TEXT,
- start_vid BIGINT,
- end_vid BIGINT,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 0,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
-
- **********************************************************************/
-
- PGR_DBG("Calling process");
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT64(1),
- PG_GETARG_INT64(2),
- PG_GETARG_BOOL(3),
- PG_GETARG_INT32(4),
- PG_GETARG_FLOAT8(5),
- PG_GETARG_FLOAT8(6),
- PG_GETARG_BOOL(7),
- &result_tuples,
- &result_count);
-
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE)
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
-
- /**********************************************************************
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT
- *********************************************************************/
-
-
- values = palloc(6 * sizeof(Datum));
- nulls = palloc(6 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 6; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- values[4] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
- values[5] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
-
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/astar/src/pgr_astar.hpp b/src/astar/src/pgr_astar.hpp
deleted file mode 100644
index 0f0d5bd..0000000
--- a/src/astar/src/pgr_astar.hpp
+++ /dev/null
@@ -1,359 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: pgr_astar.hpp
-
-Copyright (c) 2015 Vicky Vergara
-Mail: vicky_vergara at hotmail.com
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_ASTAR_SRC_PGR_ASTAR_HPP_
-#define SRC_ASTAR_SRC_PGR_ASTAR_HPP_
-#pragma once
-
-#include <boost/config.hpp>
-#include <boost/graph/graph_traits.hpp>
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/graph/astar_search.hpp>
-
-#include <cmath>
-
-
-#include <deque>
-#include <limits>
-#include <algorithm>
-#include <vector>
-#include <set>
-
-#include "./../../common/src/basePath_SSEC.hpp"
-#include "./../../common/src/pgr_base_graph.hpp"
-
-namespace pgrouting {
-namespace algorithms {
-
-template < class G >
-class Pgr_astar {
- public:
- typedef typename G::V V;
- typedef typename G::B_G B_G;
-
-
- void clear() {
- predecessors.clear();
- distances.clear();
- }
-
- //! @name Astar
- //@{
- //! one to one
- //! astar 1 to 1
- Path astar(
- G &graph,
- int64_t start_vertex,
- int64_t end_vertex,
- int heuristic,
- double factor,
- double epsilon,
- bool only_cost) {
- clear();
-
- predecessors.resize(graph.num_vertices());
- distances.resize(graph.num_vertices());
-
- if (!graph.has_vertex(start_vertex)
- || !graph.has_vertex(end_vertex)) {
- return Path(start_vertex, end_vertex);
- }
-
- auto v_source(graph.get_V(start_vertex));
- auto v_target(graph.get_V(end_vertex));
-
- // perform the algorithm
- astar_1_to_1(graph, v_source, v_target, heuristic, factor, epsilon);
-
- return Path(graph,
- v_source, v_target,
- predecessors, distances,
- only_cost);
- }
-
- //! astar 1 to many
- std::deque<Path> astar(
- G &graph,
- int64_t start_vertex,
- std::vector<int64_t> end_vertex,
- int heuristic,
- double factor,
- double epsilon,
- bool only_cost) {
- clear();
-
- predecessors.resize(graph.num_vertices());
- distances.resize(graph.num_vertices());
-
- if (!graph.has_vertex(start_vertex)) return std::deque<Path>();
- auto v_source(graph.get_V(start_vertex));
-
- std::vector<V> v_targets;
- for (const auto &vertex : end_vertex) {
- if (graph.has_vertex(vertex)) {
- v_targets.push_back(graph.get_V(vertex));
- }
- }
-
- astar_1_to_many(graph,
- v_source,
- v_targets,
- heuristic,
- factor,
- epsilon);
-
- auto paths = get_paths(graph, v_source, v_targets, only_cost);
-
- std::stable_sort(paths.begin(), paths.end(),
- [](const Path &e1, const Path &e2)->bool {
- return e1.end_id() < e2.end_id();
- });
-
- return paths;
- }
-
- // preparation for many to many
- std::deque<Path> astar(
- G &graph,
- std::vector<int64_t> start_vertex,
- std::vector<int64_t> end_vertex,
- int heuristic,
- double factor,
- double epsilon,
- bool only_cost) {
- std::deque<Path> paths;
- for (const auto &start : start_vertex) {
- auto r_paths = astar(graph, start, end_vertex,
- heuristic, factor, epsilon, only_cost);
- paths.insert(paths.begin(), r_paths.begin(), r_paths.end());
- }
-
- std::sort(paths.begin(), paths.end(),
- [](const Path &e1, const Path &e2)->bool {
- return e1.end_id() < e2.end_id();
- });
- std::stable_sort(paths.begin(), paths.end(),
- [](const Path &e1, const Path &e2)->bool {
- return e1.start_id() < e2.start_id();
- });
- return paths;
- }
- //@}
-
-
-
- private:
- //! @name members;
- //@{
- struct found_goals{}; //!< exception for termination
- std::vector< V > predecessors;
- std::vector< double > distances;
- std::deque< V > nodesInDistance;
- //@}
-
- // euclidean distance heuristic for one goal
- class distance_heuristic : public boost::astar_heuristic< B_G, double > {
- public:
- distance_heuristic(B_G &g, V goal, int heuristic, double factor)
- : m_g(g),
- m_factor(factor),
- m_heuristic(heuristic) {
- m_goals.insert(goal);
- }
- distance_heuristic(
- B_G &g,
- std::vector< V > goals,
- int heuristic,
- double factor)
- : m_g(g),
- m_goals(goals.begin(), goals.end()),
- m_factor(factor),
- m_heuristic(heuristic) {}
-
- double operator()(V u) {
- if (m_heuristic == 0) return 0;
- if (m_goals.empty()) return 0;
- double best_h((std::numeric_limits<double>::max)());
- for (auto goal : m_goals) {
- double current((std::numeric_limits<double>::max)());
- double dx = m_g[goal].x() - m_g[u].x();
- double dy = m_g[goal].y() - m_g[u].y();
- switch (m_heuristic) {
- case 0:
- current = 0;
- case 1:
- current = std::fabs((std::max)(dx, dy)) * m_factor;
- case 2:
- current = std::fabs((std::min)(dx, dy)) * m_factor;
- case 3:
- current = (dx * dx + dy * dy) * m_factor * m_factor;
- case 4:
- current = std::sqrt(dx * dx + dy * dy) * m_factor;
- case 5:
- current = (std::fabs(dx) + std::fabs(dy)) * m_factor;
- default:
- current = 0;
- }
- if (current < best_h) {
- best_h = current;
- }
- }
- {
- auto s_it = m_goals.find(u);
- if (!(s_it == m_goals.end())) {
- // found one more goal
- m_goals.erase(s_it);
- }
- }
- return best_h;
- }
-
- private:
- B_G &m_g;
- std::set< V > m_goals;
- double m_factor;
- int m_heuristic;
- }; // class distance_heuristic
-
-
- //! visitor that terminates when we find the goal
- class astar_one_goal_visitor : public boost::default_astar_visitor {
- public:
- explicit astar_one_goal_visitor(V goal) : m_goal(goal) {}
- template <class B_G>
- void examine_vertex(V u, B_G &g) {
- if (u == m_goal)
- throw found_goals();
- // using g, otherwise is throws a warning
- num_edges(g);
- }
- private:
- V m_goal;
- }; // class astar_one_goal_visitor
-
- //! class for stopping when all targets are found
- class astar_many_goals_visitor : public boost::default_astar_visitor {
- public:
- explicit astar_many_goals_visitor(std::vector< V > goals)
- :m_goals(goals.begin(), goals.end()) {}
- template <class B_G>
- void examine_vertex(V u, B_G &g) {
- auto s_it = m_goals.find(u);
- if (s_it == m_goals.end()) return;
- // found one more goal
- m_goals.erase(s_it);
- if (m_goals.size() == 0) throw found_goals();
- num_edges(g);
- }
- private:
- std::set< V > m_goals;
- };
-
- /******************** IMPLEMENTTION ******************/
-
-
-
- //! Call to Astar 1 source to 1 target
- bool astar_1_to_1(
- G &graph,
- V source,
- V target,
- int heuristic,
- double factor,
- double epsilon) {
- bool found = false;
- try {
- // Call A* named parameter interface
- boost::astar_search(
- graph.graph, source,
- distance_heuristic(graph.graph, target,
- heuristic, factor * epsilon),
- boost::predecessor_map(&predecessors[0])
- .weight_map(get(&pgrouting::Basic_edge::cost, graph.graph))
- .distance_map(&distances[0])
- .visitor(astar_one_goal_visitor(target)));
- }
- catch(found_goals &) {
- found = true; // Target vertex found
- }
- return found;
- }
-
-
- //! Call to astar 1 source to many targets
- bool astar_1_to_many(
- G &graph,
- V source,
- const std::vector< V > &targets,
- int heuristic,
- double factor,
- double epsilon) {
- bool found = false;
- try {
- boost::astar_search(
- graph.graph, source,
- distance_heuristic(
- graph.graph, targets,
- heuristic, factor * epsilon),
- boost::predecessor_map(&predecessors[0])
- .weight_map(get(&pgrouting::Basic_edge::cost, graph.graph))
- .distance_map(&distances[0])
- .visitor(astar_many_goals_visitor(targets)));
- }
- catch(found_goals &) {
- found = true; // Target vertex found
- }
- return found;
- }
-
-
- /*
- * GET_PATHS
- */
-
-
- std::deque<Path> get_paths(
- const G &graph,
- V source,
- const std::vector<V> &targets,
- bool only_cost) const {
- std::deque<Path> paths;
- for (const auto &target : targets) {
- paths.push_back(
- Path(graph,
- source, target,
- predecessors, distances,
- only_cost));
- }
- return paths;
- }
-};
-
-
-} // namespace algorithms
-} // namespace pgrouting
-
-#endif // SRC_ASTAR_SRC_PGR_ASTAR_HPP_
diff --git a/src/astar/test/doc-aStarCost.result b/src/astar/test/doc-aStarCost.result
index 5010704..0b95a8e 100644
--- a/src/astar/test/doc-aStarCost.result
+++ b/src/astar/test/doc-aStarCost.result
@@ -1,16 +1,58 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-2|12|4
+SELECT * FROM pgr_aStarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ 2, 12);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 12 | 4
+(1 row)
+
--q2
-2|12|4
+SELECT * FROM pgr_aStarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ 2, 12,
+ directed := false, heuristic := 2);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 12 | 4
+(1 row)
+
--q3
-2|3|5
-2|12|4
+SELECT * FROM pgr_aStarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ 2, ARRAY[3, 12], heuristic := 2);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 12 | 4
+(2 rows)
+
--q4
-2|12|4
-7|12|5
+SELECT * FROM pgr_aStarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ ARRAY[7, 2], 12, heuristic := 0);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 12 | 4
+ 7 | 12 | 5
+(2 rows)
+
--q5
-2|3|5
-2|12|4
-7|3|6
-7|12|5
+SELECT * FROM pgr_aStarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ ARRAY[7, 2], ARRAY[3, 12], heuristic := 2);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 12 | 4
+ 7 | 3 | 6
+ 7 | 12 | 5
+(4 rows)
+
--q6
+ROLLBACK;
+ROLLBACK
diff --git a/src/astar/test/doc-astar-v2.result b/src/astar/test/doc-astar-v2.result
deleted file mode 100644
index 62ec16c..0000000
--- a/src/astar/test/doc-astar-v2.result
+++ /dev/null
@@ -1,15 +0,0 @@
--- q1
-NOTICE: Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)
-0|4|16|1
-1|9|9|1
-2|6|8|1
-3|5|4|1
-4|2|1|1
-5|1|-1|0
--- q2
-NOTICE: Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)
-0|4|3|1
-1|3|2|1
-2|2|1|1
-3|1|-1|0
--- q3
diff --git a/src/astar/test/doc-astar-v2.test.sql b/src/astar/test/doc-astar-v2.test.sql
deleted file mode 100644
index ad44338..0000000
--- a/src/astar/test/doc-astar-v2.test.sql
+++ /dev/null
@@ -1,11 +0,0 @@
-\echo -- q1
-SELECT * FROM pgr_astar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2
- FROM edge_table',
- 4, 1, false, false);
-\echo -- q2
-SELECT * FROM pgr_astar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2, reverse_cost
- FROM edge_table ',
- 4, 1, true, true);
-\echo -- q3
diff --git a/src/astar/test/doc-astar.result b/src/astar/test/doc-astar.result
index bdc2c79..ef7b622 100644
--- a/src/astar/test/doc-astar.result
+++ b/src/astar/test/doc-astar.result
@@ -1,69 +1,104 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-1|1|2|4|1|0
-2|2|5|8|1|1
-3|3|6|9|1|2
-4|4|9|15|1|3
-5|5|12|-1|0|4
+SELECT * FROM pgr_astar(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ 2, 12);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 10 | 1 | 1
+ 3 | 3 | 10 | 12 | 1 | 2
+ 4 | 4 | 11 | 13 | 1 | 3
+ 5 | 5 | 12 | -1 | 0 | 4
+(5 rows)
+
--q2
-1|1|2|4|1|0
-2|2|5|10|1|1
-3|3|10|12|1|2
-4|4|11|13|1|3
-5|5|12|-1|0|4
+SELECT * FROM pgr_astar(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ 2, 12,
+ directed := false, heuristic := 2);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | 3 | 1 | 1
+ 3 | 3 | 4 | 16 | 1 | 2
+ 4 | 4 | 9 | 15 | 1 | 3
+ 5 | 5 | 12 | -1 | 0 | 4
+(5 rows)
+
--q3
-1|1|3|2|4|1|0
-2|2|3|5|8|1|1
-3|3|3|6|9|1|2
-4|4|3|9|16|1|3
-5|5|3|4|3|1|4
-6|6|3|3|-1|0|5
-7|1|12|2|4|1|0
-8|2|12|5|8|1|1
-9|3|12|6|9|1|2
-10|4|12|9|15|1|3
-11|5|12|12|-1|0|4
+SELECT * FROM pgr_astar(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ 2, ARRAY[3, 12], heuristic := 2);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 12 | 2 | 4 | 1 | 0
+ 8 | 2 | 12 | 5 | 10 | 1 | 1
+ 9 | 3 | 12 | 10 | 12 | 1 | 2
+ 10 | 4 | 12 | 11 | 13 | 1 | 3
+ 11 | 5 | 12 | 12 | -1 | 0 | 4
+(11 rows)
+
--q4
-1|1|2|2|4|1|0
-2|2|2|5|10|1|1
-3|3|2|10|12|1|2
-4|4|2|11|13|1|3
-5|5|2|12|-1|0|4
-6|1|7|7|6|1|0
-7|2|7|8|7|1|1
-8|3|7|5|10|1|2
-9|4|7|10|12|1|3
-10|5|7|11|13|1|4
-11|6|7|12|-1|0|5
+SELECT * FROM pgr_astar(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ ARRAY[7, 2], 12, heuristic := 0);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | 10 | 1 | 1
+ 3 | 3 | 2 | 10 | 12 | 1 | 2
+ 4 | 4 | 2 | 11 | 13 | 1 | 3
+ 5 | 5 | 2 | 12 | -1 | 0 | 4
+ 6 | 1 | 7 | 7 | 6 | 1 | 0
+ 7 | 2 | 7 | 8 | 7 | 1 | 1
+ 8 | 3 | 7 | 5 | 10 | 1 | 2
+ 9 | 4 | 7 | 10 | 12 | 1 | 3
+ 10 | 5 | 7 | 11 | 13 | 1 | 4
+ 11 | 6 | 7 | 12 | -1 | 0 | 5
+(11 rows)
+
--q5
-1|1|2|3|2|4|1|0
-2|2|2|3|5|8|1|1
-3|3|2|3|6|9|1|2
-4|4|2|3|9|16|1|3
-5|5|2|3|4|3|1|4
-6|6|2|3|3|-1|0|5
-7|1|2|12|2|4|1|0
-8|2|2|12|5|8|1|1
-9|3|2|12|6|9|1|2
-10|4|2|12|9|15|1|3
-11|5|2|12|12|-1|0|4
-12|1|7|3|7|6|1|0
-13|2|7|3|8|7|1|1
-14|3|7|3|5|8|1|2
-15|4|7|3|6|9|1|3
-16|5|7|3|9|16|1|4
-17|6|7|3|4|3|1|5
-18|7|7|3|3|-1|0|6
-19|1|7|12|7|6|1|0
-20|2|7|12|8|7|1|1
-21|3|7|12|5|8|1|2
-22|4|7|12|6|9|1|3
-23|5|7|12|9|15|1|4
-24|6|7|12|12|-1|0|5
+SELECT * FROM pgr_astar(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ ARRAY[7, 2], ARRAY[3, 12], heuristic := 2);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 7 | 3 | 7 | 6 | 1 | 0
+ 8 | 2 | 7 | 3 | 8 | 7 | 1 | 1
+ 9 | 3 | 7 | 3 | 5 | 8 | 1 | 2
+ 10 | 4 | 7 | 3 | 6 | 9 | 1 | 3
+ 11 | 5 | 7 | 3 | 9 | 16 | 1 | 4
+ 12 | 6 | 7 | 3 | 4 | 3 | 1 | 5
+ 13 | 7 | 7 | 3 | 3 | -1 | 0 | 6
+ 14 | 1 | 2 | 12 | 2 | 4 | 1 | 0
+ 15 | 2 | 2 | 12 | 5 | 10 | 1 | 1
+ 16 | 3 | 2 | 12 | 10 | 12 | 1 | 2
+ 17 | 4 | 2 | 12 | 11 | 13 | 1 | 3
+ 18 | 5 | 2 | 12 | 12 | -1 | 0 | 4
+ 19 | 1 | 7 | 12 | 7 | 6 | 1 | 0
+ 20 | 2 | 7 | 12 | 8 | 7 | 1 | 1
+ 21 | 3 | 7 | 12 | 5 | 10 | 1 | 2
+ 22 | 4 | 7 | 12 | 10 | 12 | 1 | 3
+ 23 | 5 | 7 | 12 | 11 | 13 | 1 | 4
+ 24 | 6 | 7 | 12 | 12 | -1 | 0 | 5
+(24 rows)
+
--q6
-NOTICE: Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)
-0|2|4|1
-1|5|8|1
-2|6|9|1
-3|9|15|1
-4|12|-1|0
---q7
+ROLLBACK;
+ROLLBACK
diff --git a/src/astar/test/doc-astar.test.sql b/src/astar/test/doc-astar.test.sql
index 464a6c5..a66419e 100644
--- a/src/astar/test/doc-astar.test.sql
+++ b/src/astar/test/doc-astar.test.sql
@@ -20,7 +20,3 @@ SELECT * FROM pgr_astar(
'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
ARRAY[7, 2], ARRAY[3, 12], heuristic := 2);
\echo --q6
-SELECT * FROM pgr_astar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
- 2, 12, true, true);
-\echo --q7
diff --git a/src/astar/test/pgtap/astar_ManyToMany-compare-dijkstra.test.sql b/src/astar/test/pgtap/astar_ManyToMany-compare-dijkstra.test.sql
deleted file mode 100644
index 8b3e10c..0000000
--- a/src/astar/test/pgtap/astar_ManyToMany-compare-dijkstra.test.sql
+++ /dev/null
@@ -1,97 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-\i setup.sql
-
-SELECT plan(4);
-
-SET client_min_messages TO ERROR;
-
-UPDATE edge_table SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id;
-
-CREATE or REPLACE FUNCTION astarCompareDijkstra(cant INTEGER default 17)
-RETURNS SETOF TEXT AS
-$BODY$
-DECLARE
-inner_sql TEXT;
-dijkstra_sql TEXT;
-astar_sql TEXT;
-vids TEXT;
-data TEXT;
-BEGIN
- data := ' seq, start_vid, cost::text, agg_cost::text ';
- vids := ' ARRAY[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] ';
-
-
- -----------------------
- -- with reverse cost
- -----------------------
- -- DIRECTED
- inner_sql := 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table';
- dijkstra_sql := 'SELECT ' || data || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || vids
- || ',' || vids || ', true)';
-
- astar_sql := 'SELECT ' || data || ' FROM pgr_astar($$' || inner_sql || '$$, ' || vids
- || ',' || vids || ', true, heuristic := 0)';
- RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
-
- -- UNDIRECTED
- dijkstra_sql := 'SELECT ' || data || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || vids
- || ',' || vids || ', false)';
-
- astar_sql := 'SELECT ' || data || ' FROM pgr_astar($$' || inner_sql || '$$, ' || vids
- || ', ' || vids || ', false, heuristic := 0)';
- RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
-
- -----------------------
- -- NO reverse cost
- -----------------------
- -- DIRECTED
- inner_sql := 'SELECT id, source, target, cost, x1, y1, x2, y2 FROM edge_table';
- dijkstra_sql := 'SELECT ' || data || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || vids
- || ',' || vids || ', true)';
-
- astar_sql := 'SELECT ' || data || ' FROM pgr_astar($$' || inner_sql || '$$, ' || vids
- || ',' || vids || ', true, heuristic := 0)';
- RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
-
- -- UNDIRECTED
- dijkstra_sql := 'SELECT ' || data || ' FROM pgr_dijkstra($$' || inner_sql || '$$, ' || vids
- || ',' || vids || ', false)';
-
- astar_sql := 'SELECT ' || data || ' FROM pgr_astar($$' || inner_sql || '$$, ' || vids
- || ', ' || vids || ', false, heuristic := 0)';
- RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
-
-
- RETURN;
-END
-$BODY$
-language plpgsql;
-
-SELECT * from astarCompareDijkstra();
-
-
-SELECT * FROM finish();
-ROLLBACK;
-
diff --git a/src/astar/test/pgtap/astar_oneToOne-compare-dijkstra.test.sql b/src/astar/test/pgtap/astar_oneToOne-compare-dijkstra.test.sql
deleted file mode 100644
index 589acf9..0000000
--- a/src/astar/test/pgtap/astar_oneToOne-compare-dijkstra.test.sql
+++ /dev/null
@@ -1,112 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-\i setup.sql
-
-SELECT plan(1734);
-
-SET client_min_messages TO ERROR;
-
-UPDATE edge_table SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id;
-
-CREATE or REPLACE FUNCTION astarCompareDijkstra(cant INTEGER default 17)
-RETURNS SETOF TEXT AS
-$BODY$
-DECLARE
-inner_sql TEXT;
-dijkstra_sql TEXT;
-astar_sql TEXT;
-BEGIN
-
- FOR i IN 1.. cant LOOP
- FOR j IN 1.. cant LOOP
-
- -- DIRECTED
- inner_sql := 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table';
- dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', true)';
-
- astar_sql := 'SELECT * FROM pgr_astar($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', true)';
- RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
-
- dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', true)';
-
- astar_sql := 'SELECT * FROM pgr_astar($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', true)';
- RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
-
-
-
- inner_sql := 'SELECT id, source, target, cost, x1, y1, x2, y2 FROM edge_table';
- dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', true)';
-
- astar_sql := 'SELECT * FROM pgr_astar($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', true)';
- RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
-
-
-
- -- UNDIRECTED
- inner_sql := 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table';
- dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', false)';
-
- astar_sql := 'SELECT * FROM pgr_astar($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', false)';
- RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
-
- dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', false)';
-
- astar_sql := 'SELECT * FROM pgr_astar($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', false)';
- RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
-
-
-
- inner_sql := 'SELECT id, source, target, cost, x1, y1, x2, y2 FROM edge_table';
- dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', false)';
-
- astar_sql := 'SELECT * FROM pgr_astar($$' || inner_sql || '$$, ' || i || ', ' || j
- || ', false)';
- RETURN query SELECT set_eq(astar_sql, dijkstra_sql, astar_sql);
-
-
- END LOOP;
- END LOOP;
-
- RETURN;
-END
-$BODY$
-language plpgsql;
-
-SELECT * from astarCompareDijkstra();
-
-
-SELECT * FROM finish();
-ROLLBACK;
-
diff --git a/src/astar/test/test.conf b/src/astar/test/test.conf
index 5756152..86f9506 100644
--- a/src/astar/test/test.conf
+++ b/src/astar/test/test.conf
@@ -5,12 +5,10 @@
'comment' => 'astar test for any versions.',
'data' => [''],
'tests' => [qw(
- doc-astar-v2
doc-astar
doc-aStarCost
)],
'documentation' => [qw(
- doc-astar-v2
doc-astar
doc-aStarCost
)]
diff --git a/src/bdAstar/src/CMakeLists.txt b/src/bdAstar/src/CMakeLists.txt
new file mode 100644
index 0000000..7537079
--- /dev/null
+++ b/src/bdAstar/src/CMakeLists.txt
@@ -0,0 +1,4 @@
+ADD_LIBRARY(bdAstar OBJECT
+ bdAstar.c
+ bdAstar_driver.cpp
+ )
diff --git a/src/bdAstar/src/bdAstar.c b/src/bdAstar/src/bdAstar.c
new file mode 100644
index 0000000..74330a6
--- /dev/null
+++ b/src/bdAstar/src/bdAstar.c
@@ -0,0 +1,238 @@
+/*PGR-GNU*****************************************************************
+File: bdAstar.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "c_common/postgres_connection.h"
+#include "utils/array.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+
+
+#include "drivers/astar/astar_driver.h" // for check_parameters
+#include "drivers/bdAstar/bdAstar_driver.h"
+
+PGDLLEXPORT Datum bd_astar(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(bd_astar);
+
+
+static
+void
+process(char* edges_sql,
+ ArrayType *starts,
+ ArrayType *ends,
+ bool directed,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost,
+ General_path_element_t **result_tuples,
+ size_t *result_count) {
+ check_parameters(heuristic, factor, epsilon);
+
+ pgr_SPI_connect();
+
+ int64_t* start_vidsArr = NULL;
+ size_t size_start_vidsArr = 0;
+ start_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_start_vidsArr, starts);
+
+ int64_t* end_vidsArr = NULL;
+ size_t size_end_vidsArr = 0;
+ end_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_end_vidsArr, ends);
+
+ PGR_DBG("Load data");
+ Pgr_edge_xy_t *edges = NULL;
+ size_t total_edges = 0;
+
+ pgr_get_edges_xy(edges_sql, &edges, &total_edges);
+ PGR_DBG("Total %ld edges in query:", total_edges);
+
+ if (total_edges == 0) {
+ PGR_DBG("No edges found");
+ (*result_count) = 0;
+ (*result_tuples) = NULL;
+ pgr_SPI_finish();
+ return;
+ }
+
+ PGR_DBG("Starting processing");
+ char* log_msg = NULL;
+ char* notice_msg = NULL;
+ char* err_msg = NULL;
+ clock_t start_t = clock();
+ do_pgr_bdAstar(
+ edges, total_edges,
+ start_vidsArr, size_start_vidsArr,
+ end_vidsArr, size_end_vidsArr,
+
+ directed,
+ heuristic,
+ factor,
+ epsilon,
+ only_cost,
+
+ result_tuples,
+ result_count,
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ if (only_cost) {
+ time_msg("pgr_bdAstarCost()", start_t, clock());
+ } else {
+ time_msg("pgr_bdAstar()", start_t, clock());
+ }
+
+ if (err_msg && (*result_tuples)) {
+ pfree(*result_tuples);
+ (*result_count) = 0;
+ (*result_tuples) = NULL;
+ }
+
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+ if (edges) pfree(edges);
+
+ pgr_SPI_finish();
+}
+
+PGDLLEXPORT Datum
+bd_astar(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ General_path_element_t *result_tuples = 0;
+ size_t result_count = 0;
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 0,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ **********************************************************************/
+
+ PGR_DBG("Calling process");
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
+
+ PG_GETARG_BOOL(3),
+ PG_GETARG_INT32(4),
+ PG_GETARG_FLOAT8(5),
+ PG_GETARG_FLOAT8(6),
+ PG_GETARG_BOOL(7),
+ &result_tuples,
+ &result_count);
+
+
+#if PGSQL_VERSION > 95
+ funcctx->max_calls = result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE)
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (General_path_element_t*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+ size_t call_cntr = funcctx->call_cntr;
+
+
+ /**********************************************************************
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ *********************************************************************/
+
+ size_t numb = 8;
+ values = palloc(numb * sizeof(Datum));
+ nulls = palloc(numb * sizeof(bool));
+
+
+ size_t i;
+ for (i = 0; i < numb; ++i) {
+ nulls[i] = false;
+ }
+
+ values[0] = Int32GetDatum(call_cntr + 1);
+ values[1] = Int32GetDatum(result_tuples[call_cntr].seq);
+ values[2] = Int64GetDatum(result_tuples[call_cntr].start_id);
+ values[3] = Int64GetDatum(result_tuples[call_cntr].end_id);
+ values[4] = Int64GetDatum(result_tuples[call_cntr].node);
+ values[5] = Int64GetDatum(result_tuples[call_cntr].edge);
+ values[6] = Float8GetDatum(result_tuples[call_cntr].cost);
+ values[7] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
+
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ SRF_RETURN_DONE(funcctx);
+ }
+}
+
diff --git a/src/bdAstar/src/bdAstar_driver.cpp b/src/bdAstar/src/bdAstar_driver.cpp
new file mode 100644
index 0000000..e30431b
--- /dev/null
+++ b/src/bdAstar/src/bdAstar_driver.cpp
@@ -0,0 +1,232 @@
+/*PGR-GNU*****************************************************************
+File: bdAstar_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/bdAstar/bdAstar_driver.h"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+#include <algorithm>
+
+#include "bdAstar/pgr_bdAstar.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+
+
+
+
+/************************************************************
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ ***********************************************************/
+
+template < class G >
+static
+std::deque<Path>
+pgr_bdAstar(
+ G &graph,
+ std::vector < int64_t > sources,
+ std::vector < int64_t > targets,
+
+ int heuristic,
+ double factor,
+ double epsilon,
+ std::ostream &log,
+ bool only_cost) {
+ log << "entering static function\n";
+ std::sort(sources.begin(), sources.end());
+ sources.erase(
+ std::unique(sources.begin(), sources.end()),
+ sources.end());
+
+ std::sort(targets.begin(), targets.end());
+ targets.erase(
+ std::unique(targets.begin(), targets.end()),
+ targets.end());
+
+
+ pgrouting::bidirectional::Pgr_bdAstar<G> fn_bdAstar(graph);
+ std::deque<Path> paths;
+ for (const auto source : sources) {
+ for (const auto target : targets) {
+ fn_bdAstar.clear();
+
+ paths.push_back(fn_bdAstar.pgr_bdAstar(
+ graph.get_V(source), graph.get_V(target),
+ heuristic, factor, epsilon, only_cost));
+ }
+ }
+ log << fn_bdAstar.log();
+
+ return paths;
+}
+
+
+void
+do_pgr_bdAstar(
+ Pgr_edge_xy_t *edges,
+ size_t total_edges,
+ int64_t *start_vidsArr,
+ size_t size_start_vidsArr,
+ int64_t *end_vidsArr,
+ size_t size_end_vidsArr,
+
+
+ bool directed,
+ int heuristic,
+ double factor,
+ double epsilon,
+ bool only_cost,
+
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg) {
+ std::ostringstream log;
+ std::ostringstream err;
+ std::ostringstream notice;
+ try {
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert(*return_count == 0);
+ pgassert(total_edges != 0);
+
+
+ log << "Inserting vertices into a c++ vector structure";
+ std::vector<int64_t>
+ start_vertices(start_vidsArr, start_vidsArr + size_start_vidsArr);
+ std::vector< int64_t >
+ end_vertices(end_vidsArr, end_vidsArr + size_end_vidsArr);
+
+ graphType gType = directed? DIRECTED: UNDIRECTED;
+
+ std::deque<Path> paths;
+ log << "starting process\n";
+ if (directed) {
+ log << "Working with directed Graph\n";
+ pgrouting::xyDirectedGraph digraph(
+ pgrouting::extract_vertices(edges, total_edges),
+ gType);
+ digraph.insert_edges(edges, total_edges);
+
+ paths = pgr_bdAstar(digraph,
+ start_vertices,
+ end_vertices,
+ heuristic,
+ factor,
+ epsilon,
+ log,
+ only_cost);
+ } else {
+ log << "Working with Undirected Graph\n";
+ pgrouting::xyUndirectedGraph undigraph(
+ pgrouting::extract_vertices(edges, total_edges),
+ gType);
+ undigraph.insert_edges(edges, total_edges);
+
+ paths = pgr_bdAstar(
+ undigraph,
+ start_vertices,
+ end_vertices,
+ heuristic,
+ factor,
+ epsilon,
+ log,
+ only_cost);
+ }
+
+ size_t count(0);
+ count = count_tuples(paths);
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found";
+ *log_msg = pgr_msg(notice.str().c_str());
+ return;
+ }
+
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ log << "\nConverting a set of paths into the tuples";
+ (*return_count) = (collapse_paths(return_tuples, paths));
+
+
+#if 0
+ auto count = path.size();
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found between start_vid and end_vid vertices";
+ } else {
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ size_t sequence = 0;
+ path.generate_postgres_data(return_tuples, sequence);
+ (*return_count) = sequence;
+ }
+#endif
+
+ pgassert(*err_msg == NULL);
+ *log_msg = log.str().empty()?
+ nullptr :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ nullptr :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ if (*return_tuples) free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception& except) {
+ if (*return_tuples) free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ if (*return_tuples) free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
diff --git a/src/bdAstar/test/doc-pgr_bdAstar.result b/src/bdAstar/test/doc-pgr_bdAstar.result
new file mode 100644
index 0000000..3940236
--- /dev/null
+++ b/src/bdAstar/test/doc-pgr_bdAstar.result
@@ -0,0 +1,112 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+-- q2
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3,
+ true, heuristic := 2
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+-- q3
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, ARRAY[3, 11],
+ heuristic := 3, factor := 3.5
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 11 | 2 | 4 | 1 | 0
+ 8 | 2 | 11 | 5 | 8 | 1 | 1
+ 9 | 3 | 11 | 6 | 11 | 1 | 2
+ 10 | 4 | 11 | 11 | -1 | 0 | 3
+(10 rows)
+
+-- q4
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], 3,
+ false, heuristic := 4
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 2 | 1 | 0
+ 2 | 2 | 2 | 3 | -1 | 0 | 1
+ 3 | 1 | 7 | 7 | 6 | 1 | 0
+ 4 | 2 | 7 | 8 | 7 | 1 | 1
+ 5 | 3 | 7 | 5 | 4 | 1 | 2
+ 6 | 4 | 7 | 2 | 2 | 1 | 3
+ 7 | 5 | 7 | 3 | -1 | 0 | 4
+(7 rows)
+
+-- q5
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11],
+ factor := 0.5
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 2 | 11 | 2 | 4 | 1 | 0
+ 8 | 2 | 2 | 11 | 5 | 8 | 1 | 1
+ 9 | 3 | 2 | 11 | 6 | 11 | 1 | 2
+ 10 | 4 | 2 | 11 | 11 | -1 | 0 | 3
+ 11 | 1 | 7 | 3 | 7 | 6 | 1 | 0
+ 12 | 2 | 7 | 3 | 8 | 7 | 1 | 1
+ 13 | 3 | 7 | 3 | 5 | 8 | 1 | 2
+ 14 | 4 | 7 | 3 | 6 | 9 | 1 | 3
+ 15 | 5 | 7 | 3 | 9 | 16 | 1 | 4
+ 16 | 6 | 7 | 3 | 4 | 3 | 1 | 5
+ 17 | 7 | 7 | 3 | 3 | -1 | 0 | 6
+ 18 | 1 | 7 | 11 | 7 | 6 | 1 | 0
+ 19 | 2 | 7 | 11 | 8 | 7 | 1 | 1
+ 20 | 3 | 7 | 11 | 5 | 10 | 1 | 2
+ 21 | 4 | 7 | 11 | 10 | 12 | 1 | 3
+ 22 | 5 | 7 | 11 | 11 | -1 | 0 | 4
+(22 rows)
+
+-- q6
+ROLLBACK;
+ROLLBACK
diff --git a/src/bdAstar/test/doc-pgr_bdAstar.test.sql b/src/bdAstar/test/doc-pgr_bdAstar.test.sql
new file mode 100644
index 0000000..3aca178
--- /dev/null
+++ b/src/bdAstar/test/doc-pgr_bdAstar.test.sql
@@ -0,0 +1,38 @@
+
+\echo -- q1
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3
+);
+
+\echo -- q2
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3,
+ true, heuristic := 2
+);
+\echo -- q3
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, ARRAY[3, 11],
+ heuristic := 3, factor := 3.5
+);
+\echo -- q4
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], 3,
+ false, heuristic := 4
+);
+\echo -- q5
+SELECT * FROM pgr_bdAstar(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11],
+ factor := 0.5
+);
+\echo -- q6
+
diff --git a/src/bdAstar/test/doc-pgr_bdAstarCost.result b/src/bdAstar/test/doc-pgr_bdAstarCost.result
new file mode 100644
index 0000000..f22ab6d
--- /dev/null
+++ b/src/bdAstar/test/doc-pgr_bdAstarCost.result
@@ -0,0 +1,71 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+(1 row)
+
+-- q2
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3,
+ true, heuristic := 2
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+(1 row)
+
+-- q3
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, ARRAY[3, 11],
+ heuristic := 3, factor := 3.5
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 11 | 3
+(2 rows)
+
+-- q4
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], 3,
+ false, heuristic := 4
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 1
+ 7 | 3 | 4
+(2 rows)
+
+-- q5
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11],
+ factor := 0.5
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 11 | 3
+ 7 | 3 | 6
+ 7 | 11 | 4
+(4 rows)
+
+-- q6
+ROLLBACK;
+ROLLBACK
diff --git a/src/bdAstar/test/doc-pgr_bdAstarCost.test.sql b/src/bdAstar/test/doc-pgr_bdAstarCost.test.sql
new file mode 100644
index 0000000..1a49bfc
--- /dev/null
+++ b/src/bdAstar/test/doc-pgr_bdAstarCost.test.sql
@@ -0,0 +1,37 @@
+
+\echo -- q1
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3
+);
+
+\echo -- q2
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, 3,
+ true, heuristic := 2
+);
+\echo -- q3
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ 2, ARRAY[3, 11],
+ heuristic := 3, factor := 3.5
+);
+\echo -- q4
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], 3,
+ false, heuristic := 4
+);
+\echo -- q5
+SELECT * FROM pgr_bdAstarCost(
+ 'SELECT id, source, target, cost, reverse_cost, x1,y1,x2,y2
+ FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11],
+ factor := 0.5
+);
+\echo -- q6
diff --git a/src/bdAstar/test/test.conf b/src/bdAstar/test/test.conf
new file mode 100644
index 0000000..7502f3f
--- /dev/null
+++ b/src/bdAstar/test/test.conf
@@ -0,0 +1,18 @@
+#!/usr/bin/perl -w
+
+%main::tests = (
+ 'any' => {
+ 'comment' => 'pgr_pdAstar (new signature)',
+ 'data' => [],
+ 'tests' => [qw(
+ doc-pgr_bdAstar
+ doc-pgr_bdAstarCost
+ )],
+ 'documentation' => [qw(
+ doc-pgr_bdAstar
+ doc-pgr_bdAstarCost
+ )]
+ },
+);
+
+1;
diff --git a/src/bdDijkstra/doc/doc-pgr_bdDijkstra.queries b/src/bdDijkstra/doc/doc-pgr_bdDijkstra.queries
deleted file mode 100644
index e25a292..0000000
--- a/src/bdDijkstra/doc/doc-pgr_bdDijkstra.queries
+++ /dev/null
@@ -1,52 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_bdDijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | 8 | 1 | 1
- 3 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 9 | 16 | 1 | 3
- 5 | 5 | 4 | 3 | 1 | 4
- 6 | 6 | 3 | -1 | 0 | 5
-(6 rows)
-
--- q2
-SELECT * FROM pgr_bdDijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3,
- false
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 1 | 0
- 2 | 2 | 3 | -1 | 0 | 1
-(2 rows)
-
--- q3
-SET client_min_messages TO notice;
-SET
-SELECT * FROM pgr_bdDijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT FROM edge_table',
- 2, 3,
- false,
- false
-);
-NOTICE: Deprecated Signature of pgr_bdDijkstra
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 4 | 1
- 1 | 5 | 8 | 1
- 2 | 6 | 5 | 1
- 3 | 3 | -1 | 0
-(4 rows)
-
--- q4
-ROLLBACK;
-ROLLBACK
diff --git a/src/bdDijkstra/doc/pgr_bdDijkstra.rst b/src/bdDijkstra/doc/pgr_bdDijkstra.rst
deleted file mode 100644
index f924208..0000000
--- a/src/bdDijkstra/doc/pgr_bdDijkstra.rst
+++ /dev/null
@@ -1,113 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_bdDijkstra:
-
-pgr_bdDijkstra
-===============================================================================
-
-``pgr_bdDijkstra`` — Returns the shortest path(s) using Bidirectional Dijkstra algorithm.
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc
-
- Boost Graph Inside
-
-.. rubric:: Availability:
-
-* pgr_bdDijkstra(one to one) 2.0.0, Signature changed 2.4.0
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_dijkstra(edges_sql, start_vid, end_vid)
- pgr_bdDijkstra(edges_sql, start_vid, end_vid, directed)
- RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
- OR EMPTY SET
-
-
-
-Signatures
--------------------------------------------------------------------------------
-
-.. index::
- single: bdDijkstra(Minimal Use)
-
-Minimal signature
-.......................................
-
-.. code-block:: none
-
- pgr_bdDijkstra(edges_sql, start_vid, end_vid)
- RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
-
-The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``:
-
-:Example:
-
-.. literalinclude:: doc-pgr_bdDijkstra.queries
- :start-after: -- q1
- :end-before: -- q2
-
-
-.. index::
- single: bdDijkstra(One to One)
-
-pgr_bdDijkstra One to One
-.......................................
-
-.. code-block:: none
-
- pgr_bdDijkstra(edges_sql, start_vid, end_vid, directed)
- RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
-
-This signature finds the shortest path from one ``start_vid`` to one ``end_vid``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-:Example:
-
-.. literalinclude:: doc-pgr_bdDijkstra.queries
- :start-after: -- q2
- :end-before: -- q3
-
-
-
-Description of the Signatures
--------------------------------------------------------------------------------
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-.. include:: pgr_dijkstra.rst
- :start-after: pgr_dijkstra_parameters_start
- :end-before: pgr_dijkstra_parameters_end
-
-.. include:: pgRouting-concepts.rst
- :start-after: return_path_start
- :end-before: return_path_end
-
-
-
-
-See Also
--------------------------------------------------------------------------------
-
-* The queries use the :ref:`sampledata` network.
-* http://www.cs.princeton.edu/courses/archive/spr06/cos423/Handouts/EPP%20shortest%20path%20algorithms.pdf
-* https://en.wikipedia.org/wiki/Bidirectional_search
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/bdDijkstra/sql/CMakeLists.txt b/src/bdDijkstra/sql/CMakeLists.txt
deleted file mode 100644
index 45b9942..0000000
--- a/src/bdDijkstra/sql/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/bdDijkstra.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/bdDijkstra/sql/bdDijkstra.sql b/src/bdDijkstra/sql/bdDijkstra.sql
deleted file mode 100644
index 55d666c..0000000
--- a/src/bdDijkstra/sql/bdDijkstra.sql
+++ /dev/null
@@ -1,93 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2016 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2016 Celia Virginia Vergara Castillo
-mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
- edges_sql TEXT,
- start_vid BIGINT,
- end_vid BIGINT,
- directed BOOLEAN,
- only_cost BOOLEAN DEFAULT false,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'bdDijkstra'
-LANGUAGE c IMMUTABLE STRICT;
-
-
--- V3 signature
-CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
- edges_sql TEXT,
- start_vid BIGINT,
- end_vid BIGINT,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-$BODY$
-DECLARE
-statement_txt record;
-sql TEXT;
-BEGIN
- RETURN query
- SELECT * FROM _pgr_bdDijkstra(_pgr_get_statement($1), start_vid, end_vid, true, false);
- END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
--- V3
-CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
- edges_sql TEXT,
- start_vid BIGINT,
- end_vid BIGINT,
- directed BOOLEAN,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-$BODY$
-DECLARE
-BEGIN
- RETURN query SELECT *
- FROM _pgr_bdDijkstra(_pgr_get_statement($1), start_vid, end_vid, directed, false);
- END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
diff --git a/src/bdDijkstra/src/bdDijkstra.c b/src/bdDijkstra/src/bdDijkstra.c
index d0f1234..cad4ec3 100644
--- a/src/bdDijkstra/src/bdDijkstra.c
+++ b/src/bdDijkstra/src/bdDijkstra.c
@@ -28,15 +28,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
+#include "utils/array.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./bdDijkstra_driver.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+
+#include "drivers/bdDijkstra/bdDijkstra_driver.h"
PGDLLEXPORT Datum bdDijkstra(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(bdDijkstra);
@@ -48,23 +51,27 @@ static
void
process(
char* edges_sql,
- int64_t start_vid,
- int64_t end_vid,
+ ArrayType *starts,
+ ArrayType *ends,
bool directed,
bool only_cost,
General_path_element_t **result_tuples,
size_t *result_count) {
pgr_SPI_connect();
- PGR_DBG("Load data");
+ int64_t* start_vidsArr = NULL;
+ size_t size_start_vidsArr = 0;
+ start_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_start_vidsArr, starts);
+
+ int64_t* end_vidsArr = NULL;
+ size_t size_end_vidsArr = 0;
+ end_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_end_vidsArr, ends);
+
pgr_edge_t *edges = NULL;
size_t total_edges = 0;
- if (start_vid == end_vid) {
- pgr_SPI_finish();
- return;
- }
-
pgr_get_edges(edges_sql, &edges, &total_edges);
PGR_DBG("Total %ld edges in query:", total_edges);
@@ -80,12 +87,13 @@ process(
char *notice_msg = NULL;
char *err_msg = NULL;
do_pgr_bdDijkstra(
- edges,
- total_edges,
- start_vid,
- end_vid,
+ edges, total_edges,
+ start_vidsArr, size_start_vidsArr,
+ end_vidsArr, size_end_vidsArr,
+
directed,
only_cost,
+
result_tuples,
result_count,
&log_msg,
@@ -137,8 +145,8 @@ PGDLLEXPORT Datum bdDijkstra(PG_FUNCTION_ARGS) {
process(
text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT64(1),
- PG_GETARG_INT64(2),
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
PG_GETARG_BOOL(3),
PG_GETARG_BOOL(4),
&result_tuples,
@@ -175,6 +183,8 @@ PGDLLEXPORT Datum bdDijkstra(PG_FUNCTION_ARGS) {
Datum result;
Datum *values;
bool* nulls;
+ size_t call_cntr = funcctx->call_cntr;
+
/**********************************************************************/
/* MODIFY AS NEEDED */
@@ -187,22 +197,25 @@ PGDLLEXPORT Datum bdDijkstra(PG_FUNCTION_ARGS) {
OUT agg_cost FLOAT
***********************************************************************/
- values = palloc(6 * sizeof(Datum));
- nulls = palloc(6 * sizeof(bool));
+ size_t numb = 8;
+ values = palloc(numb * sizeof(Datum));
+ nulls = palloc(numb * sizeof(bool));
size_t i;
- for (i = 0; i < 6; ++i) {
+ for (i = 0; i < numb; ++i) {
nulls[i] = false;
}
- // postgres starts counting from 1
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- values[4] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
- values[5] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
+ values[0] = Int32GetDatum(call_cntr + 1);
+ values[1] = Int32GetDatum(result_tuples[call_cntr].seq);
+ values[2] = Int64GetDatum(result_tuples[call_cntr].start_id);
+ values[3] = Int64GetDatum(result_tuples[call_cntr].end_id);
+ values[4] = Int64GetDatum(result_tuples[call_cntr].node);
+ values[5] = Int64GetDatum(result_tuples[call_cntr].edge);
+ values[6] = Float8GetDatum(result_tuples[call_cntr].cost);
+ values[7] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
+
/**********************************************************************/
tuple = heap_form_tuple(tuple_desc, values, nulls);
diff --git a/src/bdDijkstra/src/bdDijkstra_driver.cpp b/src/bdDijkstra/src/bdDijkstra_driver.cpp
index 4e263b7..9864840 100644
--- a/src/bdDijkstra/src/bdDijkstra_driver.cpp
+++ b/src/bdDijkstra/src/bdDijkstra_driver.cpp
@@ -27,49 +27,59 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
+#include "drivers/bdDijkstra/bdDijkstra_driver.h"
#include <sstream>
#include <deque>
#include <vector>
+#include <algorithm>
-#include "./pgr_bdDijkstra.hpp"
-#include "./bdDijkstra_driver.h"
+#include "bdDijkstra/pgr_bdDijkstra.hpp"
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
-#include "./../../common/src/pgr_base_graph.hpp"
+#include "cpp_common/pgr_base_graph.hpp"
-/************************************************************
- edges_sql TEXT,
- start_vid BIGINT,
- end_vid BIGINT,
- directed BOOLEAN DEFAULT true,
- only_cost BOOLEAN DEFAULT false,
- ***********************************************************/
-
template < class G >
static
-Path
+std::deque<Path>
pgr_bdDijkstra(
G &graph,
- int64_t source,
- int64_t target,
+ std::vector < int64_t > sources,
+ std::vector < int64_t > targets,
+
std::ostream &log,
- bool only_cost = false) {
+ bool only_cost) {
log << "entering static function\n";
- Pgr_bdDijkstra<G> fn_bdDijkstra(graph);
+ std::sort(sources.begin(), sources.end());
+ sources.erase(
+ std::unique(sources.begin(), sources.end()),
+ sources.end());
+
+ std::sort(targets.begin(), targets.end());
+ targets.erase(
+ std::unique(targets.begin(), targets.end()),
+ targets.end());
+
+ pgrouting::bidirectional::Pgr_bdDijkstra<G> fn_bdDijkstra(graph);
+
+ std::deque<Path> paths;
+ for (const auto source : sources) {
+ for (const auto target : targets) {
+ fn_bdDijkstra.clear();
+ paths.push_back(fn_bdDijkstra.pgr_bdDijkstra(
+ graph.get_V(source), graph.get_V(target), only_cost));
+ }
+ }
- auto path = fn_bdDijkstra.pgr_bdDijkstra(
- graph.get_V(source), graph.get_V(target), only_cost);
log << fn_bdDijkstra.log();
- return path;
+ return paths;
}
@@ -77,52 +87,82 @@ void
do_pgr_bdDijkstra(
pgr_edge_t *data_edges,
size_t total_edges,
- int64_t start_vid,
- int64_t end_vid,
+ int64_t *start_vidsArr,
+ size_t size_start_vidsArr,
+ int64_t *end_vidsArr,
+ size_t size_end_vidsArr,
+
bool directed,
bool only_cost,
+
General_path_element_t **return_tuples,
size_t *return_count,
- char ** log_msg,
- char ** notice_msg,
- char ** err_msg) {
+ char **log_msg,
+ char **notice_msg,
+ char **err_msg) {
std::ostringstream log;
std::ostringstream err;
std::ostringstream notice;
try {
+ pgassert(total_edges != 0);
+ pgassert(size_start_vidsArr != 0);
+ pgassert(size_end_vidsArr != 0);
+
pgassert(!(*log_msg));
pgassert(!(*notice_msg));
pgassert(!(*err_msg));
pgassert(!(*return_tuples));
pgassert(*return_count == 0);
- pgassert(total_edges != 0);
+
+ log << "Inserting vertices into a c++ vector structure";
+ std::vector<int64_t>
+ start_vertices(start_vidsArr, start_vidsArr + size_start_vidsArr);
+ std::vector< int64_t >
+ end_vertices(end_vidsArr, end_vidsArr + size_end_vidsArr);
graphType gType = directed? DIRECTED: UNDIRECTED;
- Path path;
+ std::deque<Path> paths;
log << "starting process\n";
if (directed) {
log << "Working with directed Graph\n";
pgrouting::DirectedGraph digraph(gType);
digraph.insert_edges(data_edges, total_edges);
- path = pgr_bdDijkstra(digraph,
- start_vid,
- end_vid,
+ paths = pgr_bdDijkstra(digraph,
+ start_vertices,
+ end_vertices,
log,
only_cost);
} else {
log << "Working with Undirected Graph\n";
pgrouting::UndirectedGraph undigraph(gType);
undigraph.insert_edges(data_edges, total_edges);
- path = pgr_bdDijkstra(
+ paths = pgr_bdDijkstra(
undigraph,
- start_vid,
- end_vid,
+ start_vertices,
+ end_vertices,
log,
only_cost);
}
+ size_t count(0);
+ count = count_tuples(paths);
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found";
+ *log_msg = pgr_msg(notice.str().c_str());
+ return;
+ }
+
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ log << "\nConverting a set of paths into the tuples";
+ (*return_count) = (collapse_paths(return_tuples, paths));
+
+#if 0
auto count = path.size();
if (count == 0) {
@@ -136,7 +176,7 @@ do_pgr_bdDijkstra(
path.generate_postgres_data(return_tuples, sequence);
(*return_count) = sequence;
}
-
+#endif
pgassert(*err_msg == NULL);
*log_msg = log.str().empty()?
nullptr :
diff --git a/src/bdDijkstra/src/bdDijkstra_driver.h b/src/bdDijkstra/src/bdDijkstra_driver.h
deleted file mode 100644
index adca119..0000000
--- a/src/bdDijkstra/src/bdDijkstra_driver.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: bdDijkstra_driver.h
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_BDDIJKSTRA_SRC_BDDIJKSTRA_DRIVER_H_
-#define SRC_BDDIJKSTRA_SRC_BDDIJKSTRA_DRIVER_H_
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /*********************************************************
- edges_sql TEXT,
- start_vid BIGINT,
- end_vid BIGINT,
- directed BOOLEAN DEFAULT true,
- only_cost BOOLEAN DEFAULT false,
- ********************************************************/
-
-
- void
- do_pgr_bdDijkstra(
- pgr_edge_t *data_edges,
- size_t total_edges,
- int64_t start_vid,
- int64_t end_vid,
- bool directed,
- bool only_cost,
- General_path_element_t **return_tuples,
- size_t *return_count,
- char ** log_msg,
- char ** notice_msg,
- char ** err_msg);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_BDDIJKSTRA_SRC_BDDIJKSTRA_DRIVER_H_
diff --git a/src/bdDijkstra/src/pgr_bdDijkstra.hpp b/src/bdDijkstra/src/pgr_bdDijkstra.hpp
deleted file mode 100644
index f792deb..0000000
--- a/src/bdDijkstra/src/pgr_bdDijkstra.hpp
+++ /dev/null
@@ -1,281 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: pgr_bdDijkstra.hpp
-
-Copyright (c) 2016 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#ifndef SRC_BDDIJKSTRA_SRC_PGR_BDDIJKSTRA_HPP_
-#define SRC_BDDIJKSTRA_SRC_PGR_BDDIJKSTRA_HPP_
-#pragma once
-
-
-#include <boost/config.hpp>
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/graph/dijkstra_shortest_paths.hpp>
-
-#include <string>
-#include <queue>
-#include <utility>
-#include <vector>
-#include <limits>
-#include <functional>
-
-
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/basePath_SSEC.hpp"
-#include "./../../common/src/pgr_base_graph.hpp"
-
-
-
-
-template < typename G >
-class Pgr_bdDijkstra {
- typedef typename G::V V;
- typedef typename G::E E;
-
- typedef std::pair<double, V> Cost_Vertex_pair;
- typedef typename std::priority_queue<
- Cost_Vertex_pair,
- std::vector<Cost_Vertex_pair>,
- std::greater<Cost_Vertex_pair> > Priority_queue;
-
-
- public:
- explicit Pgr_bdDijkstra(G &pgraph):
- graph(pgraph),
- INF((std::numeric_limits<double>::max)()) {
- m_log << "constructor\n";
- };
-
- ~Pgr_bdDijkstra() = default;
-
-
- Path pgr_bdDijkstra(V start_vertex, V end_vertex, bool only_cost) {
- m_log << "pgr_bdDijkstra\n";
- v_source = start_vertex;
- v_target = end_vertex;
-
- if (v_source == v_target) {
- return Path(v_source, v_target);
- }
- return bidir_dijkstra(only_cost);
- }
-
- std::string log() const {return m_log.str();}
- void clean_log() {m_log.clear();}
- void clear() {
- while (!forward_queue.empty()) forward_queue.pop();
- while (!backward_queue.empty()) backward_queue.pop();
-
- backward_finished.clear();
- backward_edge.clear();
- backward_predecessor.clear();
- backward_cost.clear();
-
- forward_finished.clear();
- forward_edge.clear();
- forward_predecessor.clear();
- forward_cost.clear();
- }
-
-
- private:
- void initialize() {
- m_log << "initializing\n";
- clear();
- forward_predecessor.resize(graph.num_vertices());
- forward_finished.resize(graph.num_vertices(), false);
- forward_edge.resize(graph.num_vertices(), -1);
- forward_cost.resize(graph.num_vertices(), INF);
- std::iota(forward_predecessor.begin(), forward_predecessor.end(), 0);
-
- backward_predecessor.resize(graph.num_vertices());
- backward_finished.resize(graph.num_vertices(), false);
- backward_edge.resize(graph.num_vertices(), -1);
- backward_cost.resize(graph.num_vertices(), INF);
- std::iota(backward_predecessor.begin(), backward_predecessor.end(), 0);
-
- v_min_node = -1;
- best_cost = INF;
- }
-
- Path bidir_dijkstra(bool only_cost) {
- m_log << "bidir_dijkstra\n";
-
- Pgr_bdDijkstra< G >::initialize();
-
- forward_cost[v_source] = 0;
- forward_queue.push(std::make_pair(0.0, v_source));
-
- backward_cost[v_target] = 0;
- backward_queue.push(std::make_pair(0.0, v_target));
-
- while (!forward_queue.empty() && !backward_queue.empty()) {
- auto forward_node = forward_queue.top();
- auto backward_node = backward_queue.top();
- /*
- * done: there is no path with lower cost
- */
- if (forward_node.first == INF || backward_node.first == INF) {
- break;
- }
-
- /*
- * Explore from the cheapest side
- */
- if (backward_node.first < forward_node.first) {
- backward_queue.pop();
- if (!backward_finished[backward_node.second]) {
- explore_backward(backward_node);
- }
- if (found(backward_node.second)) {
- break;
- }
- } else {
- forward_queue.pop();
- if (!forward_finished[forward_node.second]) {
- explore_forward(forward_node);
- }
- if (found(forward_node.second)) {
- break;
- }
- }
- }
-
- if (best_cost == INF) return Path();
-
- Path forward_path(
- graph,
- v_source,
- v_min_node,
- forward_predecessor,
- forward_cost,
- only_cost,
- true);
- Path backward_path(
- graph,
- v_target,
- v_min_node,
- backward_predecessor,
- backward_cost,
- only_cost,
- false);
- m_log << forward_path;
- backward_path.reverse();
- m_log << backward_path;
- forward_path.append(backward_path);
- m_log << forward_path;
- return forward_path;
- }
-
-
-
- bool found(const V &node) {
- /*
- * Update common node
- */
- if (forward_finished[node] && backward_finished[node]) {
- if (best_cost >= forward_cost[node] + backward_cost[node]) {
- v_min_node = node;
- best_cost = forward_cost[node] + backward_cost[node];
- return false;
- } else {
- return true;
- }
- }
- return false;
- }
-
- void explore_forward(const Cost_Vertex_pair &node) {
- typename G::EO_i out, out_end;
-
- auto current_cost = node.first;
- auto current_node = node.second;
-
- for (boost::tie(out, out_end) = out_edges(current_node, graph.graph);
- out != out_end; ++out) {
- auto edge_cost = graph[*out].cost;
- auto next_node = graph.adjacent(current_node, *out);
-
- if (forward_finished[next_node]) continue;
-
- if (edge_cost + current_cost < forward_cost[next_node]) {
- forward_cost[next_node] = edge_cost + current_cost;
- forward_predecessor[next_node] = current_node;
- forward_edge[next_node] = graph[*out].id;
- forward_queue.push({forward_cost[next_node], next_node});
- }
- }
- forward_finished[current_node] = true;
- }
-
- void explore_backward(const Cost_Vertex_pair &node) {
- typename G::EI_i in, in_end;
-
- auto current_cost = node.first;
- auto current_node = node.second;
-
- for (boost::tie(in, in_end) = in_edges(current_node, graph.graph);
- in != in_end; ++in) {
- auto edge_cost = graph[*in].cost;
- auto next_node = graph.adjacent(current_node, *in);
-
- if (backward_finished[next_node]) continue;
-
- if (edge_cost + current_cost < backward_cost[next_node]) {
- backward_cost[next_node] = edge_cost + current_cost;
- backward_predecessor[next_node] = current_node;
- backward_edge[next_node] = graph[*in].id;
- backward_queue.push({backward_cost[next_node], next_node});
- }
- }
- backward_finished[current_node] = true;
- }
-
-
- private:
- G &graph;
- V v_source; //!< source descriptor
- V v_target; //!< target descriptor
- V v_min_node; //!< target descriptor
-
- double INF; //!< infinity
-
- mutable std::ostringstream m_log;
- Priority_queue forward_queue;
- Priority_queue backward_queue;
-
- double best_cost;
- bool cost_only;
-
- std::vector<bool> backward_finished;
- std::vector<int64_t> backward_edge;
- std::vector<V> backward_predecessor;
- std::vector<double> backward_cost;
-
- std::vector<bool> forward_finished;
- std::vector<int64_t> forward_edge;
- std::vector<V> forward_predecessor;
- std::vector<double> forward_cost;
-};
-
-#endif // SRC_BDDIJKSTRA_SRC_PGR_BDDIJKSTRA_HPP_
diff --git a/src/bdDijkstra/test/bdDijkstra-large.result b/src/bdDijkstra/test/bdDijkstra-large.result
index 73fd1f1..54c6ddd 100644
--- a/src/bdDijkstra/test/bdDijkstra-large.result
+++ b/src/bdDijkstra/test/bdDijkstra-large.result
@@ -1,332 +1,396 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-1|5700|20787|0.006774
-2|10932|20756|0.040876
-3|10931|20797|0.002564
-4|7661|20796|0.002581
-5|10943|20776|0.040800
-6|10941|20772|0.005720
-7|3415|20771|0.007463
-8|10940|20841|0.187594
-9|10952|20812|0.005045
-10|7034|20811|0.004532
-11|10951|20833|0.177477
-12|10944|20779|0.008539
-13|8910|20778|0.006447
-14|10929|20835|0.071114
-15|10948|20794|0.013276
-16|8908|12990|0.013157
-17|8325|13831|0.009169
-18|3753|13830|0.196045
-19|6774|13829|0.032840
-20|8304|13828|0.117213
-21|9205|13827|0.010639
-22|8994|13165|0.012931
-23|8977|13164|0.008029
-24|8976|13163|0.069895
-25|8993|13162|0.009638
-26|8351|13161|0.099016
-27|8992|13160|0.187353
-28|8991|13159|0.018649
-29|2962|13158|0.071931
-30|1285|13157|0.118340
-31|8989|13156|0.006317
-32|8988|13155|0.079185
-33|21|13154|0.057101
-34|6436|13153|0.083288
-35|637|13152|0.099744
-36|8987|13151|0.057786
-37|398|13150|0.120005
-38|8496|13149|0.069498
-39|8986|13148|0.014323
-40|8985|13167|0.070884
-41|8451|11869|0.006925
-42|476|11868|0.196533
-43|529|11867|0.005677
-44|8450|11871|0.118857
-45|8452|11878|0.083250
-46|8455|11880|0.048821
-47|8456|11883|0.064572
-48|1807|11882|0.101185
-49|8457|11894|0.046805
-50|8465|15481|0.180992
-51|8522|15480|0.016198
-52|9621|15479|0.209882
-53|2808|15478|0.019312
-54|8311|15477|0.113487
-55|8583|16981|0.045667
-56|10046|16982|0.022635
-57|8467|16983|0.022924
-58|9624|15487|0.034042
-59|8468|11899|0.018103
-60|3170|19357|0.047698
-61|9949|19358|0.059093
-62|10479|19359|0.051651
-63|9948|19360|0.051709
-64|8509|19374|0.106794
-65|9595|19375|0.102428
-66|8634|19376|0.107643
-67|10174|19377|0.096140
-68|10482|19378|0.009782
-69|9194|19379|0.102702
-70|4397|19380|0.108243
-71|3002|19381|0.098919
-72|10484|19382|0.006171
-73|5962|19383|0.005429
-74|10485|19384|0.047276
-75|10459|19385|0.052864
-76|7579|19386|0.052378
-77|10455|19387|0.052414
-78|5805|19388|0.081956
-79|10462|19389|0.016974
-80|8768|12598|0.059630
-81|8767|19290|0.117748
-82|10470|19289|0.065769
-83|10469|19288|0.066230
-84|10468|19287|0.111281
-85|9967|16642|0.029056
-86|9956|16621|0.014614
-87|9938|16626|0.007036
-88|9960|16649|0.081206
-89|9968|16650|0.012230
-90|9969|16647|0.012368
-91|5457|6266|0.055134
-92|5458|6267|0.053860
-93|5459|6268|0.109859
-94|5460|6269|0.104952
-95|5461|6270|0.053766
-96|5462|6271|0.046800
-97|5463|12897|0.170300
-98|8880|15060|0.049014
-99|7101|15059|0.047811
-100|9313|15058|0.044674
-101|6733|-1|0.000000
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2016 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+SELECT seq, node, edge, round(cost::numeric, 6) FROM
+ pgr_bdDijkstra('SELECT * FROM bdd_ways', 5700, 6733, true);
+ seq | node | edge | round
+-----+-------+-------+----------
+ 1 | 5700 | 20787 | 0.006774
+ 2 | 10932 | 20756 | 0.040876
+ 3 | 10931 | 20797 | 0.002564
+ 4 | 7661 | 20796 | 0.002581
+ 5 | 10943 | 20776 | 0.040800
+ 6 | 10941 | 20772 | 0.005720
+ 7 | 3415 | 20771 | 0.007463
+ 8 | 10940 | 20841 | 0.187594
+ 9 | 10952 | 20812 | 0.005045
+ 10 | 7034 | 20811 | 0.004532
+ 11 | 10951 | 20833 | 0.177477
+ 12 | 10944 | 20779 | 0.008539
+ 13 | 8910 | 20778 | 0.006447
+ 14 | 10929 | 20835 | 0.071114
+ 15 | 10948 | 20794 | 0.013276
+ 16 | 8908 | 12990 | 0.013157
+ 17 | 8325 | 13831 | 0.009169
+ 18 | 3753 | 13830 | 0.196045
+ 19 | 6774 | 13829 | 0.032840
+ 20 | 8304 | 13828 | 0.117213
+ 21 | 9205 | 13827 | 0.010639
+ 22 | 8994 | 13165 | 0.012931
+ 23 | 8977 | 13164 | 0.008029
+ 24 | 8976 | 13163 | 0.069895
+ 25 | 8993 | 13162 | 0.009638
+ 26 | 8351 | 13161 | 0.099016
+ 27 | 8992 | 13160 | 0.187353
+ 28 | 8991 | 13159 | 0.018649
+ 29 | 2962 | 13158 | 0.071931
+ 30 | 1285 | 13157 | 0.118340
+ 31 | 8989 | 13156 | 0.006317
+ 32 | 8988 | 13155 | 0.079185
+ 33 | 21 | 13154 | 0.057101
+ 34 | 6436 | 13153 | 0.083288
+ 35 | 637 | 13152 | 0.099744
+ 36 | 8987 | 13151 | 0.057786
+ 37 | 398 | 13150 | 0.120005
+ 38 | 8496 | 13149 | 0.069498
+ 39 | 8986 | 13148 | 0.014323
+ 40 | 8985 | 13167 | 0.070884
+ 41 | 8451 | 11869 | 0.006925
+ 42 | 476 | 11868 | 0.196533
+ 43 | 529 | 11867 | 0.005677
+ 44 | 8450 | 11871 | 0.118857
+ 45 | 8452 | 11878 | 0.083250
+ 46 | 8455 | 11880 | 0.048821
+ 47 | 8456 | 11883 | 0.064572
+ 48 | 1807 | 11882 | 0.101185
+ 49 | 8457 | 11894 | 0.046805
+ 50 | 8465 | 15481 | 0.180992
+ 51 | 8522 | 15480 | 0.016198
+ 52 | 9621 | 15479 | 0.209882
+ 53 | 2808 | 15478 | 0.019312
+ 54 | 8311 | 15477 | 0.113487
+ 55 | 8583 | 16981 | 0.045667
+ 56 | 10046 | 16982 | 0.022635
+ 57 | 8467 | 16983 | 0.022924
+ 58 | 9624 | 15487 | 0.034042
+ 59 | 8468 | 11899 | 0.018103
+ 60 | 3170 | 19357 | 0.047698
+ 61 | 9949 | 19358 | 0.059093
+ 62 | 10479 | 19359 | 0.051651
+ 63 | 9948 | 19360 | 0.051709
+ 64 | 8509 | 19374 | 0.106794
+ 65 | 9595 | 19375 | 0.102428
+ 66 | 8634 | 19376 | 0.107643
+ 67 | 10174 | 19377 | 0.096140
+ 68 | 10482 | 19378 | 0.009782
+ 69 | 9194 | 19379 | 0.102702
+ 70 | 4397 | 19380 | 0.108243
+ 71 | 3002 | 19381 | 0.098919
+ 72 | 10484 | 19382 | 0.006171
+ 73 | 5962 | 19383 | 0.005429
+ 74 | 10485 | 19384 | 0.047276
+ 75 | 10459 | 19385 | 0.052864
+ 76 | 7579 | 19386 | 0.052378
+ 77 | 10455 | 19387 | 0.052414
+ 78 | 5805 | 19388 | 0.081956
+ 79 | 10462 | 19389 | 0.016974
+ 80 | 8768 | 12598 | 0.059630
+ 81 | 8767 | 19290 | 0.117748
+ 82 | 10470 | 19289 | 0.065769
+ 83 | 10469 | 19288 | 0.066230
+ 84 | 10468 | 19287 | 0.111281
+ 85 | 9967 | 16642 | 0.029056
+ 86 | 9956 | 16621 | 0.014614
+ 87 | 9938 | 16626 | 0.007036
+ 88 | 9960 | 16649 | 0.081206
+ 89 | 9968 | 16650 | 0.012230
+ 90 | 9969 | 16647 | 0.012368
+ 91 | 5457 | 6266 | 0.055134
+ 92 | 5458 | 6267 | 0.053860
+ 93 | 5459 | 6268 | 0.109859
+ 94 | 5460 | 6269 | 0.104952
+ 95 | 5461 | 6270 | 0.053766
+ 96 | 5462 | 6271 | 0.046800
+ 97 | 5463 | 12897 | 0.170300
+ 98 | 8880 | 15060 | 0.049014
+ 99 | 7101 | 15059 | 0.047811
+ 100 | 9313 | 15058 | 0.044674
+ 101 | 6733 | -1 | 0.000000
+(101 rows)
+
--q2
-1|6585|17975|0.200230
-2|5367|17976|0.155428
-3|7125|17977|0.178581
-4|613|17978|0.175712
-5|10025|17979|0.173776
-6|5802|6758|0.013489
-7|5803|6759|0.065176
-8|5804|6760|0.008679
-9|5805|6761|0.145097
-10|5806|6762|0.146807
-11|5807|6763|0.097186
-12|5808|6764|0.050569
-13|5809|20663|0.169650
-14|4620|20662|0.023243
-15|5774|20661|0.120390
-16|6482|20660|0.002769
-17|5957|20659|0.087952
-18|8289|20658|0.048701
-19|10884|20657|0.009212
-20|10883|20656|0.080500
-21|9954|20655|0.075280
-22|4390|16876|0.147691
-23|9203|17805|0.063931
-24|7892|17804|0.015429
-25|8417|17803|0.069119
-26|10171|17802|0.075825
-27|9953|17801|0.045079
-28|8859|17800|0.029389
-29|8536|17799|0.072658
-30|10180|17798|0.076558
-31|9592|17797|0.027637
-32|9318|17796|0.114755
-33|10179|17795|0.007150
-34|10178|17794|0.087467
-35|8402|17793|0.062258
-36|6179|17792|0.109483
-37|8508|17791|0.036248
-38|3305|17790|0.069816
-39|8512|17789|0.064158
-40|998|17807|0.471312
-41|2698|2743|0.102019
-42|2563|9039|0.341756
-43|2043|9040|0.587619
-44|4280|9041|0.145996
-45|2317|9042|0.268754
-46|7135|9043|0.121251
-47|4276|9044|0.145396
-48|6167|9045|0.583394
-49|7136|9046|0.043099
-50|7137|19345|0.053510
-51|10475|19344|0.015153
-52|10142|19343|0.064475
-53|10140|17566|0.135370
-54|8539|17565|0.057338
-55|10138|17558|0.064893
-56|6943|17559|0.201703
-57|8140|17560|0.469613
-58|10139|20189|0.060217
-59|10705|20185|0.055053
-60|8247|-1|0.000000
+SELECT seq, node, edge, round(cost::numeric, 6) FROM
+ pgr_bdDijkstra('SELECT * FROM bdd_ways', 6585, 8247, true);
+ seq | node | edge | round
+-----+-------+-------+----------
+ 1 | 6585 | 17975 | 0.200230
+ 2 | 5367 | 17976 | 0.155428
+ 3 | 7125 | 17977 | 0.178581
+ 4 | 613 | 17978 | 0.175712
+ 5 | 10025 | 17979 | 0.173776
+ 6 | 5802 | 6758 | 0.013489
+ 7 | 5803 | 6759 | 0.065176
+ 8 | 5804 | 6760 | 0.008679
+ 9 | 5805 | 6761 | 0.145097
+ 10 | 5806 | 6762 | 0.146807
+ 11 | 5807 | 6763 | 0.097186
+ 12 | 5808 | 6764 | 0.050569
+ 13 | 5809 | 20663 | 0.169650
+ 14 | 4620 | 20662 | 0.023243
+ 15 | 5774 | 20661 | 0.120390
+ 16 | 6482 | 20660 | 0.002769
+ 17 | 5957 | 20659 | 0.087952
+ 18 | 8289 | 20658 | 0.048701
+ 19 | 10884 | 20657 | 0.009212
+ 20 | 10883 | 20656 | 0.080500
+ 21 | 9954 | 20655 | 0.075280
+ 22 | 4390 | 16876 | 0.147691
+ 23 | 9203 | 17805 | 0.063931
+ 24 | 7892 | 17804 | 0.015429
+ 25 | 8417 | 17803 | 0.069119
+ 26 | 10171 | 17802 | 0.075825
+ 27 | 9953 | 17801 | 0.045079
+ 28 | 8859 | 17800 | 0.029389
+ 29 | 8536 | 17799 | 0.072658
+ 30 | 10180 | 17798 | 0.076558
+ 31 | 9592 | 17797 | 0.027637
+ 32 | 9318 | 17796 | 0.114755
+ 33 | 10179 | 17795 | 0.007150
+ 34 | 10178 | 17794 | 0.087467
+ 35 | 8402 | 17793 | 0.062258
+ 36 | 6179 | 17792 | 0.109483
+ 37 | 8508 | 17791 | 0.036248
+ 38 | 3305 | 17790 | 0.069816
+ 39 | 8512 | 17789 | 0.064158
+ 40 | 998 | 17807 | 0.471312
+ 41 | 2698 | 2743 | 0.102019
+ 42 | 2563 | 9039 | 0.341756
+ 43 | 2043 | 9040 | 0.587619
+ 44 | 4280 | 9041 | 0.145996
+ 45 | 2317 | 9042 | 0.268754
+ 46 | 7135 | 9043 | 0.121251
+ 47 | 4276 | 9044 | 0.145396
+ 48 | 6167 | 9045 | 0.583394
+ 49 | 7136 | 9046 | 0.043099
+ 50 | 7137 | 19345 | 0.053510
+ 51 | 10475 | 19344 | 0.015153
+ 52 | 10142 | 19343 | 0.064475
+ 53 | 10140 | 17566 | 0.135370
+ 54 | 8539 | 17565 | 0.057338
+ 55 | 10138 | 17558 | 0.064893
+ 56 | 6943 | 17559 | 0.201703
+ 57 | 8140 | 17560 | 0.469613
+ 58 | 10139 | 20189 | 0.060217
+ 59 | 10705 | 20185 | 0.055053
+ 60 | 8247 | -1 | 0.000000
+(60 rows)
+
--q3
-1|9426|14822|0.060319
-2|3606|-1|0.000000
+SELECT seq, node, edge, round(cost::numeric, 6) FROM
+ pgr_bdDijkstra('SELECT * FROM bdd_ways', 9426, 3606, true);
+ seq | node | edge | round
+-----+------+-------+----------
+ 1 | 9426 | 14822 | 0.060319
+ 2 | 3606 | -1 | 0.000000
+(2 rows)
+
--q4
-1|3606|14822|0.060319
-2|9426|-1|0.000000
+SELECT seq, node, edge, round(cost::numeric, 6) FROM
+ pgr_bdDijkstra('SELECT * FROM bdd_ways', 3606, 9426, true);
+ seq | node | edge | round
+-----+------+-------+----------
+ 1 | 3606 | 14822 | 0.060319
+ 2 | 9426 | -1 | 0.000000
+(2 rows)
+
--q5
-1|6733|15058|0.044674
-2|9313|15059|0.047811
-3|7101|15060|0.049014
-4|8880|12897|0.170300
-5|5463|6271|0.046800
-6|5462|6270|0.053766
-7|5461|6269|0.104952
-8|5460|6268|0.109859
-9|5459|6267|0.053860
-10|5458|6266|0.055134
-11|5457|16647|0.012368
-12|9969|16650|0.012230
-13|9968|16649|0.081206
-14|9960|16626|0.007036
-15|9938|16621|0.014614
-16|9956|16642|0.029056
-17|9967|19287|0.111281
-18|10468|19288|0.066230
-19|10469|19289|0.065769
-20|10470|19290|0.117748
-21|8767|12598|0.059630
-22|8768|19389|0.016974
-23|10462|19388|0.081956
-24|5805|19387|0.052414
-25|10455|19386|0.052378
-26|7579|19385|0.052864
-27|10459|19384|0.047276
-28|10485|19383|0.005429
-29|5962|19382|0.006171
-30|10484|19381|0.098919
-31|3002|19380|0.108243
-32|4397|19379|0.102702
-33|9194|19378|0.009782
-34|10482|19377|0.096140
-35|10174|19376|0.107643
-36|8634|19375|0.102428
-37|9595|19374|0.106794
-38|8509|19360|0.051709
-39|9948|19359|0.051651
-40|10479|19358|0.059093
-41|9949|19357|0.047698
-42|3170|11899|0.018103
-43|8468|15487|0.034042
-44|9624|16983|0.022924
-45|8467|16982|0.022635
-46|10046|16981|0.045667
-47|8583|15477|0.113487
-48|8311|15478|0.019312
-49|2808|15479|0.209882
-50|9621|15480|0.016198
-51|8522|15481|0.180992
-52|8465|11894|0.046805
-53|8457|11882|0.101185
-54|1807|11883|0.064572
-55|8456|11880|0.048821
-56|8455|11878|0.083250
-57|8452|11871|0.118857
-58|8450|11867|0.005677
-59|529|11868|0.196533
-60|476|11869|0.006925
-61|8451|13167|0.070884
-62|8985|13148|0.014323
-63|8986|13149|0.069498
-64|8496|13150|0.120005
-65|398|13151|0.057786
-66|8987|13152|0.099744
-67|637|13153|0.083288
-68|6436|13154|0.057101
-69|21|13155|0.079185
-70|8988|13156|0.006317
-71|8989|13157|0.118340
-72|1285|13158|0.071931
-73|2962|13159|0.018649
-74|8991|13160|0.187353
-75|8992|13161|0.099016
-76|8351|13162|0.009638
-77|8993|13163|0.069895
-78|8976|13164|0.008029
-79|8977|13165|0.012931
-80|8994|13827|0.010639
-81|9205|13828|0.117213
-82|8304|13829|0.032840
-83|6774|13830|0.196045
-84|3753|13831|0.009169
-85|8325|12990|0.013157
-86|8908|20794|0.013276
-87|10948|20835|0.071114
-88|10929|20778|0.006447
-89|8910|20779|0.008539
-90|10944|20833|0.177477
-91|10951|20811|0.004532
-92|7034|20812|0.005045
-93|10952|20841|0.187594
-94|10940|20771|0.007463
-95|3415|20772|0.005720
-96|10941|20776|0.040800
-97|10943|20796|0.002581
-98|7661|20797|0.002564
-99|10931|20756|0.040876
-100|10932|20787|0.006774
-101|5700|-1|0.000000
+SELECT seq, node, edge, round(cost::numeric, 6) FROM
+ pgr_bdDijkstra('SELECT * FROM bdd_ways', 6733, 5700, true);
+ seq | node | edge | round
+-----+-------+-------+----------
+ 1 | 6733 | 15058 | 0.044674
+ 2 | 9313 | 15059 | 0.047811
+ 3 | 7101 | 15060 | 0.049014
+ 4 | 8880 | 12897 | 0.170300
+ 5 | 5463 | 6271 | 0.046800
+ 6 | 5462 | 6270 | 0.053766
+ 7 | 5461 | 6269 | 0.104952
+ 8 | 5460 | 6268 | 0.109859
+ 9 | 5459 | 6267 | 0.053860
+ 10 | 5458 | 6266 | 0.055134
+ 11 | 5457 | 16647 | 0.012368
+ 12 | 9969 | 16650 | 0.012230
+ 13 | 9968 | 16649 | 0.081206
+ 14 | 9960 | 16626 | 0.007036
+ 15 | 9938 | 16621 | 0.014614
+ 16 | 9956 | 16642 | 0.029056
+ 17 | 9967 | 19287 | 0.111281
+ 18 | 10468 | 19288 | 0.066230
+ 19 | 10469 | 19289 | 0.065769
+ 20 | 10470 | 19290 | 0.117748
+ 21 | 8767 | 12598 | 0.059630
+ 22 | 8768 | 19389 | 0.016974
+ 23 | 10462 | 19388 | 0.081956
+ 24 | 5805 | 19387 | 0.052414
+ 25 | 10455 | 19386 | 0.052378
+ 26 | 7579 | 19385 | 0.052864
+ 27 | 10459 | 19384 | 0.047276
+ 28 | 10485 | 19383 | 0.005429
+ 29 | 5962 | 19382 | 0.006171
+ 30 | 10484 | 19381 | 0.098919
+ 31 | 3002 | 19380 | 0.108243
+ 32 | 4397 | 19379 | 0.102702
+ 33 | 9194 | 19378 | 0.009782
+ 34 | 10482 | 19377 | 0.096140
+ 35 | 10174 | 19376 | 0.107643
+ 36 | 8634 | 19375 | 0.102428
+ 37 | 9595 | 19374 | 0.106794
+ 38 | 8509 | 19360 | 0.051709
+ 39 | 9948 | 19359 | 0.051651
+ 40 | 10479 | 19358 | 0.059093
+ 41 | 9949 | 19357 | 0.047698
+ 42 | 3170 | 11899 | 0.018103
+ 43 | 8468 | 15487 | 0.034042
+ 44 | 9624 | 16983 | 0.022924
+ 45 | 8467 | 16982 | 0.022635
+ 46 | 10046 | 16981 | 0.045667
+ 47 | 8583 | 15477 | 0.113487
+ 48 | 8311 | 15478 | 0.019312
+ 49 | 2808 | 15479 | 0.209882
+ 50 | 9621 | 15480 | 0.016198
+ 51 | 8522 | 15481 | 0.180992
+ 52 | 8465 | 11894 | 0.046805
+ 53 | 8457 | 11882 | 0.101185
+ 54 | 1807 | 11883 | 0.064572
+ 55 | 8456 | 11880 | 0.048821
+ 56 | 8455 | 11878 | 0.083250
+ 57 | 8452 | 11871 | 0.118857
+ 58 | 8450 | 11867 | 0.005677
+ 59 | 529 | 11868 | 0.196533
+ 60 | 476 | 11869 | 0.006925
+ 61 | 8451 | 13167 | 0.070884
+ 62 | 8985 | 13148 | 0.014323
+ 63 | 8986 | 13149 | 0.069498
+ 64 | 8496 | 13150 | 0.120005
+ 65 | 398 | 13151 | 0.057786
+ 66 | 8987 | 13152 | 0.099744
+ 67 | 637 | 13153 | 0.083288
+ 68 | 6436 | 13154 | 0.057101
+ 69 | 21 | 13155 | 0.079185
+ 70 | 8988 | 13156 | 0.006317
+ 71 | 8989 | 13157 | 0.118340
+ 72 | 1285 | 13158 | 0.071931
+ 73 | 2962 | 13159 | 0.018649
+ 74 | 8991 | 13160 | 0.187353
+ 75 | 8992 | 13161 | 0.099016
+ 76 | 8351 | 13162 | 0.009638
+ 77 | 8993 | 13163 | 0.069895
+ 78 | 8976 | 13164 | 0.008029
+ 79 | 8977 | 13165 | 0.012931
+ 80 | 8994 | 13827 | 0.010639
+ 81 | 9205 | 13828 | 0.117213
+ 82 | 8304 | 13829 | 0.032840
+ 83 | 6774 | 13830 | 0.196045
+ 84 | 3753 | 13831 | 0.009169
+ 85 | 8325 | 12990 | 0.013157
+ 86 | 8908 | 20794 | 0.013276
+ 87 | 10948 | 20835 | 0.071114
+ 88 | 10929 | 20778 | 0.006447
+ 89 | 8910 | 20779 | 0.008539
+ 90 | 10944 | 20833 | 0.177477
+ 91 | 10951 | 20811 | 0.004532
+ 92 | 7034 | 20812 | 0.005045
+ 93 | 10952 | 20841 | 0.187594
+ 94 | 10940 | 20771 | 0.007463
+ 95 | 3415 | 20772 | 0.005720
+ 96 | 10941 | 20776 | 0.040800
+ 97 | 10943 | 20796 | 0.002581
+ 98 | 7661 | 20797 | 0.002564
+ 99 | 10931 | 20756 | 0.040876
+ 100 | 10932 | 20787 | 0.006774
+ 101 | 5700 | -1 | 0.000000
+(101 rows)
+
--q6
-1|8247|20185|0.055053
-2|10705|20189|0.060217
-3|10139|17560|0.469613
-4|8140|17559|0.201703
-5|6943|17558|0.064893
-6|10138|17565|0.057338
-7|8539|17566|0.135370
-8|10140|19343|0.064475
-9|10142|19344|0.015153
-10|10475|19345|0.053510
-11|7137|9046|0.043099
-12|7136|9045|0.583394
-13|6167|9044|0.145396
-14|4276|9043|0.121251
-15|7135|9042|0.268754
-16|2317|9041|0.145996
-17|4280|9040|0.587619
-18|2043|9039|0.341756
-19|2563|2743|0.102019
-20|2698|17807|0.471312
-21|998|17789|0.064158
-22|8512|17790|0.069816
-23|3305|17791|0.036248
-24|8508|17792|0.109483
-25|6179|17793|0.062258
-26|8402|17794|0.087467
-27|10178|17795|0.007150
-28|10179|17796|0.114755
-29|9318|17797|0.027637
-30|9592|17798|0.076558
-31|10180|17799|0.072658
-32|8536|17800|0.029389
-33|8859|17801|0.045079
-34|9953|17802|0.075825
-35|10171|17803|0.069119
-36|8417|17804|0.015429
-37|7892|17805|0.063931
-38|9203|16876|0.147691
-39|4390|20655|0.075280
-40|9954|20656|0.080500
-41|10883|20657|0.009212
-42|10884|20658|0.048701
-43|8289|20659|0.087952
-44|5957|20660|0.002769
-45|6482|20661|0.120390
-46|5774|20662|0.023243
-47|4620|20663|0.169650
-48|5809|6764|0.050569
-49|5808|6763|0.097186
-50|5807|6762|0.146807
-51|5806|6761|0.145097
-52|5805|6760|0.008679
-53|5804|6759|0.065176
-54|5803|6758|0.013489
-55|5802|17979|0.173776
-56|10025|17978|0.175712
-57|613|17977|0.178581
-58|7125|17976|0.155428
-59|5367|17975|0.200230
-60|6585|-1|0.000000
+SELECT seq, node, edge, round(cost::numeric, 6) FROM
+ pgr_bdDijkstra('SELECT * FROM bdd_ways', 8247, 6585, true);
+ seq | node | edge | round
+-----+-------+-------+----------
+ 1 | 8247 | 20185 | 0.055053
+ 2 | 10705 | 20189 | 0.060217
+ 3 | 10139 | 17560 | 0.469613
+ 4 | 8140 | 17559 | 0.201703
+ 5 | 6943 | 17558 | 0.064893
+ 6 | 10138 | 17565 | 0.057338
+ 7 | 8539 | 17566 | 0.135370
+ 8 | 10140 | 19343 | 0.064475
+ 9 | 10142 | 19344 | 0.015153
+ 10 | 10475 | 19345 | 0.053510
+ 11 | 7137 | 9046 | 0.043099
+ 12 | 7136 | 9045 | 0.583394
+ 13 | 6167 | 9044 | 0.145396
+ 14 | 4276 | 9043 | 0.121251
+ 15 | 7135 | 9042 | 0.268754
+ 16 | 2317 | 9041 | 0.145996
+ 17 | 4280 | 9040 | 0.587619
+ 18 | 2043 | 9039 | 0.341756
+ 19 | 2563 | 2743 | 0.102019
+ 20 | 2698 | 17807 | 0.471312
+ 21 | 998 | 17789 | 0.064158
+ 22 | 8512 | 17790 | 0.069816
+ 23 | 3305 | 17791 | 0.036248
+ 24 | 8508 | 17792 | 0.109483
+ 25 | 6179 | 17793 | 0.062258
+ 26 | 8402 | 17794 | 0.087467
+ 27 | 10178 | 17795 | 0.007150
+ 28 | 10179 | 17796 | 0.114755
+ 29 | 9318 | 17797 | 0.027637
+ 30 | 9592 | 17798 | 0.076558
+ 31 | 10180 | 17799 | 0.072658
+ 32 | 8536 | 17800 | 0.029389
+ 33 | 8859 | 17801 | 0.045079
+ 34 | 9953 | 17802 | 0.075825
+ 35 | 10171 | 17803 | 0.069119
+ 36 | 8417 | 17804 | 0.015429
+ 37 | 7892 | 17805 | 0.063931
+ 38 | 9203 | 16876 | 0.147691
+ 39 | 4390 | 20655 | 0.075280
+ 40 | 9954 | 20656 | 0.080500
+ 41 | 10883 | 20657 | 0.009212
+ 42 | 10884 | 20658 | 0.048701
+ 43 | 8289 | 20659 | 0.087952
+ 44 | 5957 | 20660 | 0.002769
+ 45 | 6482 | 20661 | 0.120390
+ 46 | 5774 | 20662 | 0.023243
+ 47 | 4620 | 20663 | 0.169650
+ 48 | 5809 | 6764 | 0.050569
+ 49 | 5808 | 6763 | 0.097186
+ 50 | 5807 | 6762 | 0.146807
+ 51 | 5806 | 6761 | 0.145097
+ 52 | 5805 | 6760 | 0.008679
+ 53 | 5804 | 6759 | 0.065176
+ 54 | 5803 | 6758 | 0.013489
+ 55 | 5802 | 17979 | 0.173776
+ 56 | 10025 | 17978 | 0.175712
+ 57 | 613 | 17977 | 0.178581
+ 58 | 7125 | 17976 | 0.155428
+ 59 | 5367 | 17975 | 0.200230
+ 60 | 6585 | -1 | 0.000000
+(60 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/bdDijkstra/test/doc-pgr_bdDijkstra.result b/src/bdDijkstra/test/doc-pgr_bdDijkstra.result
index cfe9136..203ae8b 100644
--- a/src/bdDijkstra/test/doc-pgr_bdDijkstra.result
+++ b/src/bdDijkstra/test/doc-pgr_bdDijkstra.result
@@ -1,17 +1,119 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-1|1|2|4|1|0
-2|2|5|8|1|1
-3|3|6|9|1|2
-4|4|9|16|1|3
-5|5|4|3|1|4
-6|6|3|-1|0|5
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
-- q2
-1|1|2|2|1|0
-2|2|3|-1|0|1
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ false
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
-- q3
-NOTICE: Deprecated Signature of pgr_bdDijkstra
-0|2|4|1
-1|5|8|1
-2|6|5|1
-3|3|-1|0
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3, 11]);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 11 | 2 | 4 | 1 | 0
+ 8 | 2 | 11 | 5 | 8 | 1 | 1
+ 9 | 3 | 11 | 6 | 11 | 1 | 2
+ 10 | 4 | 11 | 11 | -1 | 0 | 3
+(10 rows)
+
-- q4
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], 3);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | -1 | 0 | 5
+ 7 | 1 | 7 | 7 | 6 | 1 | 0
+ 8 | 2 | 7 | 8 | 7 | 1 | 1
+ 9 | 3 | 7 | 5 | 8 | 1 | 2
+ 10 | 4 | 7 | 6 | 9 | 1 | 3
+ 11 | 5 | 7 | 9 | 16 | 1 | 4
+ 12 | 6 | 7 | 4 | 3 | 1 | 5
+ 13 | 7 | 7 | 3 | -1 | 0 | 6
+(13 rows)
+
+-- q5
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11]);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 2 | 11 | 2 | 4 | 1 | 0
+ 8 | 2 | 2 | 11 | 5 | 8 | 1 | 1
+ 9 | 3 | 2 | 11 | 6 | 11 | 1 | 2
+ 10 | 4 | 2 | 11 | 11 | -1 | 0 | 3
+ 11 | 1 | 7 | 3 | 7 | 6 | 1 | 0
+ 12 | 2 | 7 | 3 | 8 | 7 | 1 | 1
+ 13 | 3 | 7 | 3 | 5 | 8 | 1 | 2
+ 14 | 4 | 7 | 3 | 6 | 9 | 1 | 3
+ 15 | 5 | 7 | 3 | 9 | 16 | 1 | 4
+ 16 | 6 | 7 | 3 | 4 | 3 | 1 | 5
+ 17 | 7 | 7 | 3 | 3 | -1 | 0 | 6
+ 18 | 1 | 7 | 11 | 7 | 6 | 1 | 0
+ 19 | 2 | 7 | 11 | 8 | 7 | 1 | 1
+ 20 | 3 | 7 | 11 | 5 | 10 | 1 | 2
+ 21 | 4 | 7 | 11 | 10 | 12 | 1 | 3
+ 22 | 5 | 7 | 11 | 11 | -1 | 0 | 4
+(22 rows)
+
+-- q6
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT FROM edge_table',
+ 2, 3,
+ false,
+ false
+);
+NOTICE: Deprecated Signature of pgr_bdDijkstra
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 5 | 1
+ 3 | 3 | -1 | 0
+(4 rows)
+
+-- q7
+ROLLBACK;
+ROLLBACK
diff --git a/src/bdDijkstra/test/doc-pgr_bdDijkstra.test.sql b/src/bdDijkstra/test/doc-pgr_bdDijkstra.test.sql
index ef2e1af..11a987a 100644
--- a/src/bdDijkstra/test/doc-pgr_bdDijkstra.test.sql
+++ b/src/bdDijkstra/test/doc-pgr_bdDijkstra.test.sql
@@ -12,12 +12,22 @@ SELECT * FROM pgr_bdDijkstra(
false
);
\echo -- q3
-SET client_min_messages TO notice;
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3, 11]);
+\echo -- q4
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], 3);
+\echo -- q5
+SELECT * FROM pgr_bdDijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11]);
+\echo -- q6
SELECT * FROM pgr_bdDijkstra(
'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT FROM edge_table',
2, 3,
false, -- undirected
false -- no reverse_cost
);
-\echo -- q4
-
+\echo -- q7
diff --git a/src/bdDijkstra/test/doc-pgr_bdDijkstraCost.result b/src/bdDijkstra/test/doc-pgr_bdDijkstraCost.result
new file mode 100644
index 0000000..fa75c07
--- /dev/null
+++ b/src/bdDijkstra/test/doc-pgr_bdDijkstraCost.result
@@ -0,0 +1,60 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+(1 row)
+
+-- q2
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 1
+(1 row)
+
+-- q3
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3, 11]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 11 | 3
+(2 rows)
+
+-- q4
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], 3);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 7 | 3 | 6
+(2 rows)
+
+-- q5
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 11 | 3
+ 7 | 3 | 6
+ 7 | 11 | 4
+(4 rows)
+
+-- q6
+ROLLBACK;
+ROLLBACK
diff --git a/src/bdDijkstra/test/doc-pgr_bdDijkstraCost.test.sql b/src/bdDijkstra/test/doc-pgr_bdDijkstraCost.test.sql
new file mode 100644
index 0000000..d9f6919
--- /dev/null
+++ b/src/bdDijkstra/test/doc-pgr_bdDijkstraCost.test.sql
@@ -0,0 +1,26 @@
+
+\echo -- q1
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+);
+
+\echo -- q2
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ false
+);
+\echo -- q3
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3, 11]);
+\echo -- q4
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], 3);
+\echo -- q5
+SELECT * FROM pgr_bdDijkstraCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7], ARRAY[3, 11]);
+\echo -- q6
diff --git a/src/bdDijkstra/test/pgtap/bdDijkstra-innerQuery.sql b/src/bdDijkstra/test/pgtap/bdDijkstra-innerQuery.sql
deleted file mode 100644
index d4af4b4..0000000
--- a/src/bdDijkstra/test/pgtap/bdDijkstra-innerQuery.sql
+++ /dev/null
@@ -1,116 +0,0 @@
-\i setup.sql
-
-SELECT plan(47);
-SET client_min_messages TO ERROR;
-
-
-SELECT has_function('pgr_bddijkstra',
- ARRAY['text', 'bigint', 'bigint', 'boolean']);
-
-SELECT function_returns('pgr_bddijkstra',
- ARRAY['text', 'bigint', 'bigint', 'boolean'],
- 'setof record');
-
-CREATE OR REPLACE FUNCTION test_anyInteger(fn TEXT, params TEXT[], parameter TEXT)
-RETURNS SETOF TEXT AS
-$BODY$
-DECLARE
-start_sql TEXT;
-end_sql TEXT;
-query TEXT;
-p TEXT;
-BEGIN
- start_sql = 'select * from ' || fn || '($$ SELECT ';
- FOREACH p IN ARRAY params LOOP
- IF p = parameter THEN CONTINUE;
- END IF;
- start_sql = start_sql || p || ', ';
- END LOOP;
- end_sql = ' FROM edge_table $$, 2, 3, true)';
-
- query := start_sql || parameter || '::SMALLINT ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::INTEGER ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::BIGINT ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::REAL ' || end_sql;
- RETURN query SELECT throws_ok(query);
-
- query := start_sql || parameter || '::FLOAT8 ' || end_sql;
- RETURN query SELECT throws_ok(query);
-END;
-$BODY$ LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION test_anyNumerical(fn TEXT, params TEXT[], parameter TEXT)
-RETURNS SETOF TEXT AS
-$BODY$
-DECLARE
-start_sql TEXT;
-end_sql TEXT;
-query TEXT;
-p TEXT;
-BEGIN
- start_sql = 'select * from ' || fn || '($$ SELECT ';
- FOREACH p IN ARRAY params LOOP
- IF p = parameter THEN CONTINUE;
- END IF;
- start_sql = start_sql || p || ', ';
- END LOOP;
- end_sql = ' FROM edge_table $$, 2, 3, true)';
-
- query := start_sql || parameter || '::SMALLINT ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::INTEGER ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::BIGINT ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::REAL ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::FLOAT8 ' || end_sql;
- RETURN query SELECT lives_ok(query);
-END;
-$BODY$ LANGUAGE plpgsql;
-
---with reverse cost
-SELECT test_anyInteger('pgr_bddijkstra',
- ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
- 'id');
-SELECT test_anyInteger('pgr_bddijkstra',
- ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
- 'source');
-SELECT test_anyInteger('pgr_bddijkstra',
- ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
- 'target');
-SELECT test_anyNumerical('pgr_bddijkstra',
- ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
- 'cost');
-SELECT test_anyNumerical('pgr_bddijkstra',
- ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
- 'reverse_cost');
-
-
---without reverse cost
-SELECT test_anyInteger('pgr_bddijkstra',
- ARRAY['id', 'source', 'target', 'cost'],
- 'id');
-SELECT test_anyInteger('pgr_bddijkstra',
- ARRAY['id', 'source', 'target', 'cost'],
- 'source');
-SELECT test_anyInteger('pgr_bddijkstra',
- ARRAY['id', 'source', 'target', 'cost'],
- 'target');
-SELECT test_anyNumerical('pgr_bddijkstra',
- ARRAY['id', 'source', 'target', 'cost'],
- 'cost');
-
-
-SELECT finish();
-ROLLBACK;
diff --git a/src/bdDijkstra/test/test.conf b/src/bdDijkstra/test/test.conf
index eece83e..f9ade81 100644
--- a/src/bdDijkstra/test/test.conf
+++ b/src/bdDijkstra/test/test.conf
@@ -7,9 +7,11 @@
'tests' => [qw(
bdDijkstra-large
doc-pgr_bdDijkstra
+ doc-pgr_bdDijkstraCost
)],
'documentation' => [qw(
doc-pgr_bdDijkstra
+ doc-pgr_bdDijkstraCost
)]
},
);
diff --git a/src/bd_astar/doc/CMakeLists.txt b/src/bd_astar/doc/CMakeLists.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/src/bd_astar/doc/doc-bdAstar.queries b/src/bd_astar/doc/doc-bdAstar.queries
deleted file mode 100644
index 7c3f360..0000000
--- a/src/bd_astar/doc/doc-bdAstar.queries
+++ /dev/null
@@ -1,35 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM pgr_bdAStar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2
- FROM edge_table',
- 4, 10, false, false);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 4 | 3 | 0
- 1 | 3 | 5 | 1
- 2 | 6 | 11 | 1
- 3 | 11 | 12 | 0
- 4 | 10 | -1 | 0
-(5 rows)
-
---q2
-SELECT * FROM pgr_bdAStar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2, reverse_cost
- FROM edge_table ',
- 4, 10, true, true);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 4 | 3 | 1
- 1 | 3 | 5 | 1
- 2 | 6 | 8 | 1
- 3 | 5 | 10 | 1
- 4 | 10 | -1 | 0
-(5 rows)
-
---q3
-ROLLBACK;
-ROLLBACK
diff --git a/src/bd_astar/doc/pgr_bdAstar.rst b/src/bd_astar/doc/pgr_bdAstar.rst
deleted file mode 100644
index c4bdd05..0000000
--- a/src/bd_astar/doc/pgr_bdAstar.rst
+++ /dev/null
@@ -1,102 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _bd_astar:
-
-pgr_bdAstar - Bi-directional A* Shortest Path
-===============================================================================
-
-.. index::
- single: bdAstar(Complete Signaature)
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_bdAstar`` - Returns the shortest path using Bidirectional A* algorithm.
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-This is a bi-directional A* search algorithm. It searches from the source toward the distination and at the same time from the destination to the source and terminates whe these to searches meet in the middle. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a path.
-
-.. code-block:: sql
-
- pgr_costResult[] pgr_bdAstar(sql text, source integer, target integer,
- directed boolean, has_rcost boolean);
-
-
-Description
--------------------------------------------------------------------------------
-
-:sql: a SQL query, which should return a set of rows with the following columns:
-
- .. code-block:: sql
-
- SELECT id, source, target, cost, x1, y1, x2, y2 [,reverse_cost] FROM edge_table
-
-
- :id: ``int4`` identifier of the edge
- :source: ``int4`` identifier of the source vertex
- :target: ``int4`` identifier of the target vertex
- :cost: ``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph.
- :x1: ``x`` coordinate of the start point of the edge
- :y1: ``y`` coordinate of the start point of the edge
- :x2: ``x`` coordinate of the end point of the edge
- :y2: ``y`` coordinate of the end point of the edge
- :reverse_cost: (optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs).
-
-:source: ``int4`` id of the start point
-:target: ``int4`` id of the end point
-:directed: ``true`` if the graph is directed
-:has_rcost: if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction.
-
-Returns set of :ref:`type_cost_result`:
-
-:seq: row sequence
-:id1: node ID
-:id2: edge ID (``-1`` for the last row)
-:cost: cost to traverse from ``id1`` using ``id2``
-
-.. warning::
-
- You must reconnect to the database after ``CREATE EXTENSION pgrouting``. Otherwise the function will return ``Error computing path: std::bad_alloc``.
-
-
-.. rubric:: History
-
-* New in version 2.0.0
-
-
-Examples
--------------------------------------------------------------------------------
-
-* Without ``reverse_cost``
-
-.. literalinclude:: doc-bdAstar.queries
- :start-after: --q1
- :end-before: --q2
-
-* With ``reverse_cost``
-
-.. literalinclude:: doc-bdAstar.queries
- :start-after: --q2
- :end-before: --q3
-
-
-The queries use the :ref:`sampledata` network.
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`type_cost_result`
-* :ref:`pgr_bddijkstra`
-* http://en.wikipedia.org/wiki/Bidirectional_search
-* http://en.wikipedia.org/wiki/A*_search_algorithm
diff --git a/src/bd_astar/sql/CMakeLists.txt b/src/bd_astar/sql/CMakeLists.txt
deleted file mode 100644
index 979df91..0000000
--- a/src/bd_astar/sql/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Append in local scope
-list(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/routing_bd_astar.sql)
-
-# set in parent scope
-set(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
-
diff --git a/src/bd_astar/sql/routing_bd_astar.sql b/src/bd_astar/sql/routing_bd_astar.sql
deleted file mode 100644
index 362e060..0000000
--- a/src/bd_astar/sql/routing_bd_astar.sql
+++ /dev/null
@@ -1,41 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Bi Directional A* Shortest path algorithm for PostgreSQL
-
-Copyright (c) 2006 Anton A. Patrushev, Orkney, Inc.
-Mail: project at 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*/
------------------------------------------------------------------------
--- Core function for bi_directional_astar_shortest_path computation
--- See README for description
------------------------------------------------------------------------
---
---
-
-CREATE OR REPLACE FUNCTION pgr_bdAstar(
- sql text,
- source_vid integer,
- target_vid integer,
- directed boolean,
- has_reverse_cost boolean)
- RETURNS SETOF pgr_costResult
- AS '$libdir/${PGROUTING_LIBRARY_NAME}', 'bidir_astar_shortest_path'
- LANGUAGE 'c' IMMUTABLE STRICT;
-
diff --git a/src/bd_astar/src/BiDirAStar.cpp b/src/bd_astar/src/BiDirAStar.cpp
deleted file mode 100644
index af6f634..0000000
--- a/src/bd_astar/src/BiDirAStar.cpp
+++ /dev/null
@@ -1,473 +0,0 @@
-/*PGR-MIT*****************************************************************
-
-* $Id$
-*
-* Project: pgRouting bdsp and bdastar algorithms
-* Purpose:
-* Author: Razequl Islam <ziboncsedu at gmail.com>
-*
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-
-#include "./BiDirAStar.h"
-
-#include <math.h>
-
-#include "./../../common/src/pgr_alloc.hpp"
-
-BiDirAStar::BiDirAStar(void) {
-}
-
-BiDirAStar::~BiDirAStar(void) {
-}
-
-void BiDirAStar::init() {
- // max_edge_id = 0;
- // max_node_id = 0;
-}
-
-/*
- Initialization and allocation of memories.
- */
-
-void BiDirAStar::initall(int maxNode) {
- int i;
-
- // DBG("BiDirAStar::initall(%d) called\n", maxNode);
-
- m_pFParent = new PARENT_PATH[maxNode + 1];
- m_pRParent = new PARENT_PATH[maxNode + 1];
-
- m_pFCost = new double[maxNode + 1];
- m_pRCost = new double[maxNode + 1];
-
- for (i = 0; i <= maxNode; i++) {
- m_pFParent[i].par_Node = -2;
- m_pRParent[i].par_Node = -2;
- m_pFCost[i] = INF;
- m_pRCost[i] = INF;
- }
- m_MinCost = INF;
- m_MidNode = -1;
-
- // reserve space for nodes and edges
- m_vecNodeVector.reserve(maxNode + 1);
-
- // DBG("Leaving BiDirAStar::initall\n");
-}
-
-/*
- Delete the allocated memories to avoid memory leak.
- */
-
-void BiDirAStar::deleteall() {
- // DBG("Calling BiDirAStar::deleteall\n");
- delete m_pFParent;
- delete m_pRParent;
- delete m_pFCost;
- delete m_pRCost;
- // DBG("Leaving BiDirAStar::deleteall\n");
-}
-
-/*
- Get the current cost from source to the current node if direction is 1 else the cost to reach target from the current node.
- */
-
-double BiDirAStar::getcost(int node_id, int dir) {
- if (dir == 1) {
- return(m_pFCost[node_id]);
- } else {
- return(m_pRCost[node_id]);
- }
-}
-
-
-double BiDirAStar::dist(double x1, double y1, double x2, double y2) {
- double ret = fabs((x1 - x2) + fabs(y1 - y2));
- // double ret = sqrt(x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
- return(ret * 10);
-}
-
-/*
- Get the heuristic cost of the node depending on dir (1 for forward search and -1 for reverse search).
- */
-double BiDirAStar::gethcost(int node_id, int dir) {
- if (dir == -1) {
- return(dist(m_vecNodeVector[node_id].xpos, m_vecNodeVector[node_id].ypos, m_vecNodeVector[m_lStartNodeId].xpos, m_vecNodeVector[m_lStartNodeId].ypos));
- } else {
- return(dist(m_vecNodeVector[node_id].xpos, m_vecNodeVector[node_id].ypos, m_vecNodeVector[m_lEndNodeId].xpos, m_vecNodeVector[m_lEndNodeId].ypos));
- }
-}
-
-/*
- Set the forward or reverse cost list depending on dir (1 for forward search and -1 for reverse search).
- */
-
-
-void BiDirAStar::setcost(int node_id, int dir, double c) {
- if (dir == 1) {
- m_pFCost[node_id] = c;
- } else {
- m_pRCost[node_id] = c;
- }
-}
-
-void BiDirAStar::setparent(int node_id, int dir, int parnode, int paredge) {
- if (dir == 1) {
- m_pFParent[node_id].par_Node = parnode;
- m_pFParent[node_id].par_Edge = paredge;
- } else {
- m_pRParent[node_id].par_Node = parnode;
- m_pRParent[node_id].par_Edge = paredge;
- }
-}
-
-/*
- Reconstruct path for forward search. It is like normal dijkstra. The parent array contains the parent of the current node and there is a -1 in the source.
- So one need to recurse up to the source and then add the current node and edge to the list.
- */
-
-void BiDirAStar::fconstruct_path(int node_id) {
- if (m_pFParent[node_id].par_Node == -1)
- return;
- fconstruct_path(m_pFParent[node_id].par_Node);
- path_element_t pt;
- pt.vertex_id = m_pFParent[node_id].par_Node;
- pt.edge_id = m_pFParent[node_id].par_Edge;
- pt.cost = m_pFCost[node_id] - m_pFCost[m_pFParent[node_id].par_Node];
- m_vecPath.push_back(pt);
-}
-
-/*
- Reconstruct path for the reverse search. In this case the subsequent node is stored in the parent and the target contains a -1. So one need to add the node
- and edge to the list and then recurse through the parent up to hitting a -1.
- */
-
-void BiDirAStar::rconstruct_path(int node_id) {
- path_element_t pt;
- if (m_pRParent[node_id].par_Node == -1) {
- pt.vertex_id = node_id;
- pt.edge_id = -1;
- pt.cost = 0.0;
- return;
- }
- pt.vertex_id = node_id;
- pt.cost = m_pRCost[node_id] - m_pRCost[m_pRParent[node_id].par_Node];
- pt.edge_id = m_pRParent[node_id].par_Edge;
- m_vecPath.push_back(pt);
- rconstruct_path(m_pRParent[node_id].par_Node);
-}
-
-/*
- This is the main exploration module. The parameter dir indicates whether the exploration will be in forward or reverser direction. The reference to the corresponding
- que is also passed as parameter que. The current node and the current costs are also available as parameter.
- */
-
-// void BiDirAStar::explore(int cur_node, double cur_cost, int dir, std::priority_queue<PDI, std::vector<PDI>, std::greater<PDI> > &que)
-void BiDirAStar::explore(int cur_node, double cur_cost, int dir, MinHeap &que) {
- size_t i;
- // Number of connected edges
- auto con_edge = m_vecNodeVector[cur_node].Connected_Edges_Index.size();
- double edge_cost;
- for (i = 0; i < con_edge; i++) {
- auto edge_index = m_vecNodeVector[cur_node].Connected_Edges_Index[i];
- // Get the edge from the edge list.
- GraphEdgeInfo edge = m_vecEdgeVector[edge_index];
- // Get the connected node
- int new_node = m_vecNodeVector[cur_node].Connected_Nodes[i];
-#if 0 // mult is set but not used
- int mult;
-
- if (edge.Direction == 0)
- mult = 1;
- else
- mult = dir;
-#endif
- if (cur_node == edge.StartNode) {
- // Current node is the startnode of the edge. For forward search it should use forward cost, otherwise it should use the reverse cost,
- // i.e. if the reverse direction is valid then this node may be visited from the end node.
- if (dir > 0)
- edge_cost = edge.Cost;
- else
- edge_cost = edge.ReverseCost;
- // Check if the direction is valid for exploration
- if (edge.Direction == 0 || edge_cost >= 0.0) {
- // edge_cost = edge.Cost * mult;
- // Check if the current edge gives better result
- if (cur_cost + edge_cost < getcost(new_node, dir)) {
- // explore the node, and push it in the queue. the value in the queue will also contain the heuristic cost
- setcost(new_node, dir, cur_cost + edge_cost);
- setparent(new_node, dir, cur_node, edge.EdgeID);
- que.push(std::make_pair(cur_cost + edge_cost + gethcost(new_node, dir), new_node));
-
- // Update the minimum cost found so far.
- if (getcost(new_node, dir) + getcost(new_node, dir * -1) < m_MinCost) {
- m_MinCost = getcost(new_node, dir) + getcost(new_node, dir * -1);
- m_MidNode = new_node;
- }
- }
- }
- } else {
- // Current node is the endnode of the edge. For forward search it should use reverse cost, otherwise it should use the forward cost,
- // i.e. if the forward direction is valid then this node may be visited from the start node.
- if (dir > 0)
- edge_cost = edge.ReverseCost;
- else
- edge_cost = edge.Cost;
- // Check if the direction is valid for exploration
- if (edge.Direction == 0 || edge_cost >= 0.0) {
- // edge_cost = edge.ReverseCost * mult;
-
- // Check if the current edge gives better result
- if (cur_cost + edge_cost < getcost(new_node, dir)) {
- // explore the node, and push it in the queue. the value in the queue will also contain the heuristic cost
- setcost(new_node, dir, cur_cost + edge_cost);
- setparent(new_node, dir, cur_node, edge.EdgeID);
- que.push(std::make_pair(cur_cost + edge_cost + gethcost(new_node, dir), new_node));
- // Update the minimum cost found so far.
- if (getcost(new_node, dir) + getcost(new_node, dir * -1) < m_MinCost) {
- m_MinCost = getcost(new_node, dir) + getcost(new_node, dir * -1);
- m_MidNode = new_node;
- }
- }
- }
- }
- }
-}
-
-/*
- This is the entry function that the wrappers should call. Most of the parameters are trivial. maxNode refers to Maximum
- node id. As we run node based exploration cost, parent etc will be based on maximam node id.
- */
-
-int BiDirAStar:: bidir_astar(edge_astar_t *edges, size_t edge_count, int maxNode, int start_vertex, int end_vertex,
- path_element_t **path, size_t *path_count, char **err_msg) {
- max_node_id = maxNode;
- max_edge_id = -1;
-
- // Allocate memory for local storage like cost and parent holder
- initall(maxNode);
-
- // construct the graph from the edge list, i.e. populate node and edge data structures
- construct_graph(edges, edge_count, maxNode);
-
- m_lStartNodeId = start_vertex;
- m_lEndNodeId = end_vertex;
-
- // int nodeCount = m_vecNodeVector.size();
-
- MinHeap fque(maxNode + 2);
- MinHeap rque(maxNode + 2);
- // std::priority_queue<PDI, std::vector<PDI>, std::greater<PDI> > fque;
- // std::priority_queue<PDI, std::vector<PDI>, std::greater<PDI> > rque;
-
- m_vecPath.clear();
-
- // Initialize the forward search
- m_pFParent[start_vertex].par_Node = -1;
- m_pFParent[start_vertex].par_Edge = -1;
- m_pFCost[start_vertex] = 0.0;
- fque.push(std::make_pair(0.0, start_vertex));
-
- // Initialize the reverse search
- m_pRParent[end_vertex].par_Node = -1;
- m_pRParent[end_vertex].par_Edge = -1;
- m_pRCost[end_vertex] = 0.0;
- rque.push(std::make_pair(0.0, end_vertex));
-
- // int new_node;
- int cur_node;
- // int dir;
- /*
- The main loop. The algorithm is as follows:
- 1. IF the sum of the current minimum of both heap is greater than so far found path, we cannot get any better, so break the loop.
- 2. IF the reverse heap minimum is lower than the forward heap minimum, explore from reverse direction.
- 3. ELSE explore from the forward directtion.
- */
-
- while (!fque.empty() && !rque.empty()) {
- PDI fTop = fque.top();
- PDI rTop = rque.top();
- if (m_pFCost[fTop.second] + m_pRCost[rTop.second] > m_MinCost) // We are done, there is no path with lower cost
- break;
-
- if (rTop.first < fTop.first) {
- // Explore from reverse queue
- if (rTop.first > m_MinCost)
- break;
- cur_node = rTop.second;
- int dir = -1;
- rque.pop();
- explore(cur_node, m_pRCost[rTop.second], dir, rque);
- } else {
- // Explore from forward queue
- if (fTop.first > m_MinCost)
- break;
- cur_node = fTop.second;
- int dir = 1;
- fque.pop();
- explore(cur_node, m_pFCost[fTop.second], dir, fque);
- }
- }
-
- /*
- Path reconstruction part. m_MidNode is the joining point where two searches meet to make a shortest path. It is updated in explore.
- If it contains -1, then no path is found. Other wise we have a shortest path and that is reconstructed in the m_vecPath.
- */
-
- if (m_MidNode == -1) {
- *err_msg = (char *)"Path Not Found";
- deleteall();
- return -1;
- } else {
- // reconstruct path from forward search
- fconstruct_path(m_MidNode);
- // reconstruct path from backward search
- rconstruct_path(m_MidNode);
-
- // insert the last row in the path trace (having edge_id = -1 and cost = 0.0)
- path_element_t pelement;
- pelement.vertex_id = end_vertex;
- pelement.edge_id = -1;
- pelement.cost = 0.0;
- m_vecPath.push_back(pelement);
-
- // Transfer data path to path_element_t format and allocate memory and populate the pointer
- *path = pgr_alloc(m_vecPath.size(), *path);
- *path_count = m_vecPath.size();
-
- for (size_t i = 0; i < *path_count; i++) {
- (*path)[i].vertex_id = m_vecPath[i].vertex_id;
- (*path)[i].edge_id = m_vecPath[i].edge_id;
- (*path)[i].cost = m_vecPath[i].cost;
- }
- }
- deleteall();
- return 0;
-}
-
-/*
- Populate the member variables of the class using the edge list. Basically there is a node list and an edge list. Each node contains the list of adjacent nodes and
- corresponding edge indices from edge list that connect this node with the adjacent nodes.
- */
-
-bool BiDirAStar::construct_graph(edge_astar_t* edges, size_t edge_count, int maxNode) {
- int i;
-
- // DBG("Calling BiDirAStar::construct_graph(edges, ecnt:%d, maxNode:%d)\n", edge_count, maxNode);
-
- // Create a dummy node
- GraphNodeInfo nodeInfo;
- nodeInfo.Connected_Edges_Index.clear();
- nodeInfo.Connected_Nodes.clear();
-
- // Insert the dummy node into the node list. This acts as place holder. Also change the nodeId so that nodeId and node index in the vector are same.
- // There may be some nodes here that does not appear in the edge list. The size of the list is up to maxNode which is equal to maximum node id.
- // DBG(" Adding nodes to m_vecNodeVector\n");
- for (i = 0; i <= maxNode; i++) {
- nodeInfo.NodeID = i;
- m_vecNodeVector.push_back(nodeInfo);
- }
-
- // Process each edge from the edge list and update the member data structures accordingly.
- // DBG(" Reserving edges for graph(%d)\n", edge_count);
- m_vecEdgeVector.reserve(edge_count);
- // DBG(" Adding edges to graph\n");
- for (size_t i = 0; i < edge_count; i++) {
- addEdge(edges[i]);
- }
-
- // DBG("Leaving BiDirAStar::construct_graph\n");
- return true;
-}
-
-/*
- Process the edge and populate the member nodelist and edgelist. The nodelist already contains up to maxNode dummy entries with nodeId same as index. Now the
- connectivity information needs to be updated.
- */
-
-bool BiDirAStar::addEdge(edge_astar_t edgeIn) {
- // long lTest;
- // Check if the edge is already processed.
- Long2LongMap::iterator itMap = m_mapEdgeId2Index.find(edgeIn.id);
- if (itMap != m_mapEdgeId2Index.end())
- return false;
-
- // Create a GraphEdgeInfo using the information of the current edge
- GraphEdgeInfo newEdge;
- newEdge.EdgeID = edgeIn.id;
- newEdge.EdgeIndex = m_vecEdgeVector.size();
- newEdge.StartNode = edgeIn.source;
- newEdge.EndNode = edgeIn.target;
- newEdge.Cost = edgeIn.cost;
- newEdge.ReverseCost = edgeIn.reverse_cost;
-
- // Set the direction. If both cost and reverse cost has positive value the edge is bidirectional and direction field is 0. If cost is positive and reverse cost
- // negative then the edge is unidirectional with direction = 1 (goes from source to target) otherwise it is unidirectional with direction = -1 (goes from target
- // to source). Another way of creating unidirectional edge is assigning big values in cost or reverse_cost. In that case the direction is still zero and this case
- // is handled in the algorithm automatically.
- if (newEdge.Cost >= 0.0 && newEdge.ReverseCost >= 0) {
- newEdge.Direction = 0;
- } else if (newEdge.Cost >= 0.0) {
- newEdge.Direction = 1;
- } else {
- newEdge.Direction = -1;
- }
-
- if (edgeIn.id > max_edge_id) {
- max_edge_id = edgeIn.id;
- }
-
- // Update max_edge_id
- if (newEdge.StartNode > max_node_id) {
- return false; // max_node_id = newEdge.StartNode;
- }
- if (newEdge.EndNode > max_node_id) {
- return false; // max_node_id = newEdge.EdgeIndex;
- }
-
- m_vecNodeVector[newEdge.StartNode].xpos = edgeIn.s_x;
- m_vecNodeVector[newEdge.StartNode].ypos = edgeIn.s_y;
-
- m_vecNodeVector[newEdge.EndNode].xpos = edgeIn.t_x;
- m_vecNodeVector[newEdge.EndNode].ypos = edgeIn.t_y;
-
- // update connectivity information for the start node.
- m_vecNodeVector[newEdge.StartNode].Connected_Nodes.push_back(newEdge.EndNode);
- m_vecNodeVector[newEdge.StartNode].Connected_Edges_Index.push_back(newEdge.EdgeIndex);
-
- // update connectivity information for the end node.
- m_vecNodeVector[newEdge.EndNode].Connected_Nodes.push_back(newEdge.StartNode);
- m_vecNodeVector[newEdge.EndNode].Connected_Edges_Index.push_back(newEdge.EdgeIndex);
-
-
-
- // Adding edge to the list
- m_mapEdgeId2Index.insert(std::make_pair(newEdge.EdgeID, m_vecEdgeVector.size()));
- m_vecEdgeVector.push_back(newEdge);
-
- return true;
-}
diff --git a/src/bd_astar/src/BiDirAStar.h b/src/bd_astar/src/BiDirAStar.h
deleted file mode 100644
index 9e371ba..0000000
--- a/src/bd_astar/src/BiDirAStar.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*PGR-MIT*****************************************************************
-
-* $Id$
-*
-* Project: pgRouting bdsp and bdastar algorithms
-* Purpose:
-* Author: Razequl Islam <ziboncsedu at gmail.com>
-*
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-#ifndef SRC_BD_ASTAR_SRC_BIDIRASTAR_H_
-#define SRC_BD_ASTAR_SRC_BIDIRASTAR_H_
-#pragma once
-
-#include <vector>
-#include <map>
-#include <utility>
-
-#include "./MinHeap.h"
-#include "./bdastar_driver.h"
-
-#define INF 1e15
-
-
-
-typedef std::vector<size_t> LongVector;
-typedef std::vector<LongVector> VectorOfLongVector;
-typedef std::pair<double, int> PDI;
-
-typedef struct {
- int par_Node;
- int par_Edge;
-} PARENT_PATH;
-
-typedef struct {
- int NodeID;
- double xpos;
- double ypos;
- std::vector<int> Connected_Nodes;
- std::vector<size_t> Connected_Edges_Index;
-} GraphNodeInfo;
-
-struct GraphEdgeInfo {
- public:
- int EdgeID;
- size_t EdgeIndex;
- int Direction;
- double Cost;
- double ReverseCost;
- int StartNode;
- int EndNode;
-};
-
-typedef std::vector<GraphEdgeInfo> GraphEdgeVector;
-typedef std::map<size_t, LongVector> Long2LongVectorMap;
-typedef std::map<size_t, size_t> Long2LongMap;
-typedef std::vector<GraphNodeInfo> GraphNodeVector;
-
-
-class BiDirAStar {
- public:
- BiDirAStar(void);
- ~BiDirAStar(void);
-
- int bidir_astar(edge_astar_t *edges, size_t edge_count, int maxNode, int start_vertex, int end_vertex,
- path_element_t **path, size_t *path_count, char **err_msg);
-
- private:
- bool construct_graph(edge_astar_t *edges, size_t edge_count, int maxNode);
- void fconstruct_path(int node_id);
- void rconstruct_path(int node_id);
- bool addEdge(edge_astar_t edgeIn);
- bool connectEdge(GraphEdgeInfo& firstEdge, GraphEdgeInfo& secondEdge, bool bIsStartNodeSame);
- void init();
- void initall(int maxNode);
- void deleteall();
- // void explore(int cur_node, double cur_cost, int dir, std::priority_queue<PDI, std::vector<PDI>, std::greater<PDI> > &que);
- void explore(int cur_node, double cur_cost, int dir, MinHeap &que);
- double getcost(int node_id, int dir);
- void setcost(int node_id, int dir, double c);
- void setparent(int node_id, int dir, int parnode, int paredge);
- double gethcost(int node_id, int dir);
- double dist(double x1, double y1, double x2, double y2);
-
- private:
- GraphEdgeVector m_vecEdgeVector;
- Long2LongMap m_mapEdgeId2Index;
- Long2LongVectorMap m_mapNodeId2Edge;
- GraphNodeVector m_vecNodeVector;
- int max_node_id;
- int max_edge_id;
- int m_lStartNodeId;
- int m_lEndNodeId;
-
- double m_MinCost;
- int m_MidNode;
- std::vector <path_element_t> m_vecPath;
- PARENT_PATH *m_pFParent;
- PARENT_PATH *m_pRParent;
- double *m_pFCost;
- double *m_pRCost;
-};
-
-#endif // SRC_BD_ASTAR_SRC_BIDIRASTAR_H_
diff --git a/src/bd_astar/src/CMakeLists.txt b/src/bd_astar/src/CMakeLists.txt
deleted file mode 100644
index 0c700ab..0000000
--- a/src/bd_astar/src/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-add_library(bd_astar OBJECT
- bdastar.c
- MinHeap.cpp
- bdastar_driver.cpp
- BiDirAStar.cpp)
diff --git a/src/bd_astar/src/MinHeap.cpp b/src/bd_astar/src/MinHeap.cpp
deleted file mode 100644
index 992606a..0000000
--- a/src/bd_astar/src/MinHeap.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-/*PGR-MIT*****************************************************************
-
-* $Id$
-*
-* Project: pgRouting bdsp and bdastar algorithms
-* Purpose:
-* Author: Razequl Islam <ziboncsedu at gmail.com>
-*
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-
-#include "./MinHeap.h"
-#include <string.h>
-#include <utility>
-
-
-MinHeap::MinHeap(int maxNode) {
- init(maxNode);
-}
-
-MinHeap::~MinHeap(void) {
- reset();
-}
-
-bool MinHeap::reset(void) {
- if (m_HeapTree != NULL) {
- delete [] m_HeapTree;
- m_HeapTree = NULL;
- }
- if (m_Index != NULL) {
- delete [] m_Index;
- m_Index = NULL;
- }
- return true;
-}
-
-bool MinHeap::init(int maxNode) {
- m_HeapTree = new PDI[maxNode + 1];
- m_Index = new int[maxNode + 1];
- memset(m_Index, -1, sizeof(int) * (maxNode + 1));
- m_MaxNodeID = maxNode;
- m_CurrentSize = 0;
- return true;
-}
-
-void MinHeap::push(PDI node) {
- int nid = node.second;
- double ncost = node.first;
- if (m_Index[nid] != -1) {
- int pos = m_Index[nid];
- if (ncost < m_HeapTree[pos].first) {
- m_HeapTree[pos].first = ncost;
- shift_up(pos);
- } else {
- return;
- }
- } else {
- m_CurrentSize++;
- m_HeapTree[m_CurrentSize] = node;
- m_Index[nid] = m_CurrentSize;
- shift_up(m_CurrentSize);
- }
-}
-
-PDI MinHeap::top(void) {
- return(m_HeapTree[1]);
-}
-
-bool MinHeap::empty(void) {
- if (m_CurrentSize == 0)
- return true;
- return false;
-}
-
-void MinHeap::pop(void) {
- if (m_CurrentSize == 0)
- return;
- int nid = m_HeapTree[1].second;
- m_Index[nid] = -1;
- m_HeapTree[1] = m_HeapTree[m_CurrentSize];
- m_Index[m_HeapTree[1].second] = 1;
- m_CurrentSize--;
- shift_down(1);
-}
-
-void MinHeap::shift_up(int node) {
- while (node > 1) {
- int par_node = node / 2;
- if (m_HeapTree[par_node].first <= m_HeapTree[node].first) {
- return;
- }
- PDI temp = m_HeapTree[par_node];
- m_HeapTree[par_node] = m_HeapTree[node];
- m_HeapTree[node] = temp;
- m_Index[m_HeapTree[node].second] = node;
- m_Index[m_HeapTree[par_node].second] = par_node;
- node = par_node;
- }
- return;
-}
-
-void MinHeap::shift_down(int node) {
- while (node < m_CurrentSize) {
- int left_child = node * 2;
- int right_child = node * 2 + 1;
- if (left_child > m_CurrentSize) {
- return;
- }
- int smallest = node;
- if (m_HeapTree[left_child] < m_HeapTree[smallest]) {
- smallest = left_child;
- }
- if (right_child <= m_CurrentSize) {
- if (m_HeapTree[right_child] < m_HeapTree[smallest]) {
- smallest = right_child;
- }
- }
- if (node == smallest)
- return;
- PDI temp = m_HeapTree[node];
- m_HeapTree[node] = m_HeapTree[smallest];
- m_HeapTree[smallest] = temp;
- m_Index[m_HeapTree[node].second] = node;
- m_Index[m_HeapTree[smallest].second] = smallest;
- node = smallest;
- }
- return;
-}
diff --git a/src/bd_astar/src/MinHeap.h b/src/bd_astar/src/MinHeap.h
deleted file mode 100644
index 804bbdc..0000000
--- a/src/bd_astar/src/MinHeap.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*PGR-MIT*****************************************************************
-
-* $Id$
-*
-* Project: pgRouting bdsp and bdastar algorithms
-* Purpose:
-* Author: Razequl Islam <ziboncsedu at gmail.com>
-*
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-
-#ifndef SRC_BD_ASTAR_SRC_MINHEAP_H_
-#define SRC_BD_ASTAR_SRC_MINHEAP_H_
-#pragma once
-
-#include <utility>
-
-typedef std::pair<double, int> PDI;
-
-class MinHeap {
- public:
- explicit MinHeap(int maxNode);
- ~MinHeap(void);
-
- bool reset(void);
- bool init(int maxNode);
- void push(PDI node);
- PDI top();
- void pop();
- bool empty();
-
- private:
- void shift_up(int node);
- void shift_down(int node);
-
- private:
- PDI *m_HeapTree;
- int *m_Index;
- int m_MaxNodeID;
- int m_CurrentSize;
-};
-
-#endif // SRC_BD_ASTAR_SRC_MINHEAP_H_
diff --git a/src/bd_astar/src/bdastar.c b/src/bd_astar/src/bdastar.c
deleted file mode 100644
index 4d64e05..0000000
--- a/src/bd_astar/src/bdastar.c
+++ /dev/null
@@ -1,442 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Bi Directional A* Shortest path algorithm for PostgreSQL
-
-Copyright (c) 2006 Anton A. Patrushev, Orkney, Inc.
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "catalog/pg_type.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <search.h>
-
-#include "../../common/src/pgr_types.h"
-#include "./bdastar_driver.h"
-
-
-//-------------------------------------------------------------------------
-
-PGDLLEXPORT
-Datum bidir_astar_shortest_path(PG_FUNCTION_ARGS);
-
-#undef DEBUG
-#include "../../common/src/debug_macro.h"
-
-// The number of tuples to fetch from the SPI cursor at each iteration
-#define TUPLIMIT 1000
-
-typedef struct edge_astar_columns {
- int id;
- int source;
- int target;
- int cost;
- int reverse_cost;
- int s_x;
- int s_y;
- int t_x;
- int t_y;
-} edge_astar_columns_t;
-
-
-static int
-fetch_edge_astar_columns(SPITupleTable *tuptable,
- edge_astar_columns_t *edge_columns,
- bool has_reverse_cost) {
- if (tuptable) {}
- edge_columns->id = SPI_fnumber(SPI_tuptable->tupdesc, "id");
- edge_columns->source = SPI_fnumber(SPI_tuptable->tupdesc, "source");
- edge_columns->target = SPI_fnumber(SPI_tuptable->tupdesc, "target");
- edge_columns->cost = SPI_fnumber(SPI_tuptable->tupdesc, "cost");
-
- if (edge_columns->id == SPI_ERROR_NOATTRIBUTE ||
- edge_columns->source == SPI_ERROR_NOATTRIBUTE ||
- edge_columns->target == SPI_ERROR_NOATTRIBUTE ||
- edge_columns->cost == SPI_ERROR_NOATTRIBUTE) {
- elog(ERROR, "Error, query must return columns "
- "'id', 'source', 'target' and 'cost'");
- return -1;
- }
-
- if (SPI_gettypeid(SPI_tuptable->tupdesc,
- edge_columns->source) != INT4OID ||
- SPI_gettypeid(SPI_tuptable->tupdesc,
- edge_columns->target) != INT4OID ||
- SPI_gettypeid(SPI_tuptable->tupdesc, edge_columns->cost) != FLOAT8OID) {
- elog(ERROR, "Error, columns 'source', 'target' must be of type int4, "
- "'cost' must be of type float8");
- return -1;
- }
-
- PGR_DBG("columns: id %i source %i target %i cost %i",
- edge_columns->id, edge_columns->source,
- edge_columns->target, edge_columns->cost);
-
- if (has_reverse_cost) {
- edge_columns->reverse_cost = SPI_fnumber(SPI_tuptable->tupdesc,
- "reverse_cost");
-
- if (edge_columns->reverse_cost == SPI_ERROR_NOATTRIBUTE) {
- elog(ERROR, "Error, reverse_cost is used, but query did't return "
- "'reverse_cost' column");
- return -1;
- }
-
- if (SPI_gettypeid(SPI_tuptable->tupdesc,
- edge_columns->reverse_cost) != FLOAT8OID) {
- elog(ERROR, "Error, columns 'reverse_cost' must be of type float8");
- return -1;
- }
-
- PGR_DBG("columns: reverse_cost cost %i", edge_columns->reverse_cost);
- }
-
- edge_columns->s_x = SPI_fnumber(SPI_tuptable->tupdesc, "x1");
- edge_columns->s_y = SPI_fnumber(SPI_tuptable->tupdesc, "y1");
- edge_columns->t_x = SPI_fnumber(SPI_tuptable->tupdesc, "x2");
- edge_columns->t_y = SPI_fnumber(SPI_tuptable->tupdesc, "y2");
-
- if (edge_columns->s_x == SPI_ERROR_NOATTRIBUTE ||
- edge_columns->s_y == SPI_ERROR_NOATTRIBUTE ||
- edge_columns->t_x == SPI_ERROR_NOATTRIBUTE ||
- edge_columns->t_y == SPI_ERROR_NOATTRIBUTE) {
- elog(ERROR, "Error, query must return columns "
- "'x1', 'x2', 'y1' and 'y2'");
- return -1;
- }
-
- PGR_DBG("columns: x1 %i y1 %i x2 %i y2 %i",
- edge_columns->s_x, edge_columns->s_y,
- edge_columns->t_x, edge_columns->t_y);
-
- return 0;
-}
-
-static void
-fetch_edge_astar(HeapTuple *tuple, TupleDesc *tupdesc,
- edge_astar_columns_t *edge_columns,
- edge_astar_t *target_edge) {
- Datum binval;
- bool isnull;
-
- binval = SPI_getbinval(*tuple, *tupdesc, edge_columns->id, &isnull);
- if (isnull) elog(ERROR, "id contains a null value");
- target_edge->id = DatumGetInt32(binval);
-
- binval = SPI_getbinval(*tuple, *tupdesc, edge_columns->source, &isnull);
- if (isnull) elog(ERROR, "source contains a null value");
- target_edge->source = DatumGetInt32(binval);
-
- binval = SPI_getbinval(*tuple, *tupdesc, edge_columns->target, &isnull);
- if (isnull) elog(ERROR, "target contains a null value");
- target_edge->target = DatumGetInt32(binval);
-
- binval = SPI_getbinval(*tuple, *tupdesc, edge_columns->cost, &isnull);
- if (isnull) elog(ERROR, "cost contains a null value");
- target_edge->cost = DatumGetFloat8(binval);
-
- if (edge_columns->reverse_cost != -1) {
- binval = SPI_getbinval(*tuple, *tupdesc,
- edge_columns->reverse_cost, &isnull);
- if (isnull)
- elog(ERROR, "reverse_cost contains a null value");
- target_edge->reverse_cost = DatumGetFloat8(binval);
- }
-
- binval = SPI_getbinval(*tuple, *tupdesc, edge_columns->s_x, &isnull);
- if (isnull) elog(ERROR, "source x contains a null value");
- target_edge->s_x = DatumGetFloat8(binval);
-
- binval = SPI_getbinval(*tuple, *tupdesc, edge_columns->s_y, &isnull);
- if (isnull) elog(ERROR, "source y contains a null value");
- target_edge->s_y = DatumGetFloat8(binval);
-
- binval = SPI_getbinval(*tuple, *tupdesc, edge_columns->t_x, &isnull);
- if (isnull) elog(ERROR, "target x contains a null value");
- target_edge->t_x = DatumGetFloat8(binval);
-
- binval = SPI_getbinval(*tuple, *tupdesc, edge_columns->t_y, &isnull);
- if (isnull) elog(ERROR, "target y contains a null value");
- target_edge->t_y = DatumGetFloat8(binval);
-}
-
-
-static int compute_shortest_path_astar(char* sql, int source_vertex_id,
- int target_vertex_id, bool directed,
- bool has_reverse_cost,
- path_element_t **path, size_t *path_count) {
- void *SPIplan;
- Portal SPIportal;
- bool moredata = TRUE;
- size_t ntuples;
- edge_astar_t *edges = NULL;
- size_t total_tuples = 0;
-
- int v_max_id = 0;
- int v_min_id = INT_MAX;
-
-#ifndef _MSC_VER
- edge_astar_columns_t edge_columns = {.id = -1, .source = -1, .target = -1,
- .cost = -1, .reverse_cost = -1,
- .s_x = -1, .s_y = -1, .t_x = -1, .t_y = -1};
-#else // _MSC_VER
- edge_astar_columns_t edge_columns = {-1, -1, -1, -1, -1, -1, -1, -1, -1};
-#endif // _MSC_VER
- char *err_msg;
- int ret = -1;
- size_t z;
-
- int s_count = 0;
- int t_count = 0;
-
- struct vItem {
- int id;
- int key;
- };
-
- PGR_DBG("start shortest_path_astar\n");
-
- pgr_SPI_connect();
- SPIplan = pgr_SPI_prepare(sql);
- SPIportal = pgr_SPI_cursor_open(SPIplan);
-
- while (moredata == TRUE) {
- SPI_cursor_fetch(SPIportal, TRUE, TUPLIMIT);
-
- if (edge_columns.id == -1) {
- if (fetch_edge_astar_columns(SPI_tuptable, &edge_columns,
- has_reverse_cost) == -1) {
- pgr_SPI_finish();
- return -1;
- }
- }
-
- ntuples = SPI_processed;
- total_tuples += ntuples;
- if (!edges)
- edges = palloc(total_tuples * sizeof(edge_astar_t));
- else
- edges = repalloc(edges, total_tuples * sizeof(edge_astar_t));
-
- if (edges == NULL) {
- elog(ERROR, "Out of memory");
- pgr_SPI_finish();
- return -1;
- }
-
- if (ntuples > 0) {
- size_t t;
- SPITupleTable *tuptable = SPI_tuptable;
- TupleDesc tupdesc = SPI_tuptable->tupdesc;
-
- for (t = 0; t < ntuples; t++) {
- HeapTuple tuple = tuptable->vals[t];
- fetch_edge_astar(&tuple, &tupdesc, &edge_columns,
- &edges[total_tuples - ntuples + t]);
- }
- SPI_freetuptable(tuptable);
- } else {
- moredata = FALSE;
- }
- }
-
- // defining min and max vertex id
-
- PGR_DBG("Total %lu tuples", total_tuples);
-
- for (z = 0; z < total_tuples; z++) {
- if (edges[z].source < v_min_id) v_min_id = edges[z].source;
- if (edges[z].source > v_max_id) v_max_id = edges[z].source;
- if (edges[z].target < v_min_id) v_min_id = edges[z].target;
- if (edges[z].target > v_max_id) v_max_id = edges[z].target;
- PGR_DBG("%i <-> %i", v_min_id, v_max_id);
- }
-
- //::::::::::::::::::::::::::::::::::::
- //:: reducing vertex id (renumbering)
- //::::::::::::::::::::::::::::::::::::
- for (z=0; z < total_tuples; z++) {
- // check if edges[] contains source and target
- if (edges[z].source == source_vertex_id ||
- edges[z].target == source_vertex_id)
- ++s_count;
- if (edges[z].source == target_vertex_id ||
- edges[z].target == target_vertex_id)
- ++t_count;
-
- edges[z].source -= v_min_id;
- edges[z].target -= v_min_id;
- PGR_DBG("%i - %i", edges[z].source, edges[z].target);
- }
-
- PGR_DBG("Total %lu tuples", total_tuples);
-
- if (s_count == 0) {
- elog(ERROR, "Start vertex was not found.");
- return -1;
- }
-
- if (t_count == 0) {
- elog(ERROR, "Target vertex was not found.");
- return -1;
- }
-
- PGR_DBG("Total %lu tuples", total_tuples);
-
- PGR_DBG("Calling bidir_astar <%lu>\n", total_tuples);
-
- // calling C++ A* function
- ret = bdastar_wrapper(edges, total_tuples, v_max_id + 1, source_vertex_id-v_min_id,
- target_vertex_id-v_min_id,
- directed, has_reverse_cost,
- path, path_count, &err_msg);
-
- PGR_DBG("SIZE %lu\n", *path_count);
-
- PGR_DBG("ret = %i\n", ret);
-
- //::::::::::::::::::::::::::::::::
- //:: restoring original vertex id
- //::::::::::::::::::::::::::::::::
- for (z = 0; z < *path_count; z++) {
- // PGR_DBG("vetex %i\n",(*path)[z].vertex_id);
- (*path)[z].vertex_id += v_min_id;
- }
- if (ret < 0) {
- pfree(path);
- elog(ERROR, "Error computing path: %s", err_msg);
- }
- pgr_SPI_finish();
- return ret;
-}
-
-
-PG_FUNCTION_INFO_V1(bidir_astar_shortest_path);
-PGDLLEXPORT Datum
-bidir_astar_shortest_path(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
- path_element_t *path;
- path = NULL;
-
- /* stuff done only on the first call of the function */
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- size_t path_count = 0;
-#ifdef DEBUG
- int ret;
-#endif
-
- /* create a function context for cross-call persistence */
- funcctx = SRF_FIRSTCALL_INIT();
-
- /* switch to memory context appropriate for multiple function calls */
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
-#ifdef DEBUG
- ret =
-#endif
- compute_shortest_path_astar(text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT32(1),
- PG_GETARG_INT32(2),
- PG_GETARG_BOOL(3),
- PG_GETARG_BOOL(4),
- &path, &path_count);
-
-#ifdef DEBUG
- PGR_DBG("Ret is %i", ret);
- if (ret >= 0) {
- size_t i;
- for (i = 0; i < path_count; i++) {
- PGR_DBG("Step # %ld vertex_id %ld ", i, path[i].vertex_id);
- PGR_DBG(" edge_id %ld ", path[i].edge_id);
- PGR_DBG(" cost %f ", path[i].cost);
- }
- }
-#endif
-
- /* total number of tuples to be returned */
- PGR_DBG("Conting tuples number\n");
-#if PGSQL_VERSION > 95
- funcctx->max_calls = path_count;
-#else
- funcctx->max_calls = (uint32_t)path_count;
-#endif
- funcctx->user_fctx = path;
-
- PGR_DBG("Path count %lu", path_count);
-
- funcctx->tuple_desc =
- BlessTupleDesc(RelationNameGetTupleDesc("pgr_costResult"));
-
- MemoryContextSwitchTo(oldcontext);
- }
-
- /* stuff done on every call of the function */
- PGR_DBG("Strange stuff doing\n");
-
- funcctx = SRF_PERCALL_SETUP();
-
- tuple_desc = funcctx->tuple_desc;
- path = (path_element_t*) funcctx->user_fctx;
-
-
- if (funcctx->call_cntr < funcctx->max_calls) { /* do when there is more left to send */
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
-
- values = palloc(4 * sizeof(Datum));
- nulls = palloc(4 * sizeof(bool));
-
- values[0] = Int32GetDatum(funcctx->call_cntr);
- nulls[0] = false;
- values[1] = Int32GetDatum(path[funcctx->call_cntr].vertex_id);
- nulls[1] = false;
- values[2] = Int32GetDatum(path[funcctx->call_cntr].edge_id);
- nulls[2] = false;
- values[3] = Float8GetDatum(path[funcctx->call_cntr].cost);
- nulls[3] = false;
-
- PGR_DBG("Heap making\n");
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
-
- PGR_DBG("Datum making\n");
-
- /* make the tuple into a datum */
- result = HeapTupleGetDatum(tuple);
-
-
- PGR_DBG("Trying to free some memory\n");
-
- /* clean up (this is not really necessary) */
- pfree(values);
- pfree(nulls);
-
- SRF_RETURN_NEXT(funcctx, result);
- } else { /* do when there is no more left */
- SRF_RETURN_DONE(funcctx);
- }
-}
diff --git a/src/bd_astar/src/bdastar_driver.cpp b/src/bd_astar/src/bdastar_driver.cpp
deleted file mode 100644
index c8dcac3..0000000
--- a/src/bd_astar/src/bdastar_driver.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*PGR-MIT*****************************************************************
-
-* $Id$
-*
-* Project: pgRouting bdsp and bdastar algorithms
-* Purpose:
-* Author: Razequl Islam <ziboncsedu at gmail.com>
-*
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-
-
-
-#include "./bdastar_driver.h"
-#include <exception>
-#include "./BiDirAStar.h"
-
-int bdastar_wrapper(edge_astar_t *edges, size_t edge_count, int maxnode,
- int source_vertex_id, int target_vertex_id,
- bool directed, bool has_reverse_cost,
- path_element_t **path, size_t *path_count, char **err_msg) {
- int res;
-
- try {
- BiDirAStar bdastar;
- res = bdastar.bidir_astar(edges, edge_count, maxnode, source_vertex_id, target_vertex_id, path, path_count, err_msg);
- // TODO(someone) this are an unused parameters have to be used
- if (has_reverse_cost) {}
- if (directed) {}
- }
- catch(std::exception& e) {
- *err_msg = (char *) e.what();
- return -1;
- }
- catch(...) {
- *err_msg = (char *) "Caught unknown exception!";
- return -1;
- }
-
- if (res < 0)
- return res;
- else
- return EXIT_SUCCESS;
-}
-
diff --git a/src/bd_astar/src/bdastar_driver.h b/src/bd_astar/src/bdastar_driver.h
deleted file mode 100644
index 386f402..0000000
--- a/src/bd_astar/src/bdastar_driver.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*PGR-GNU*****************************************************************
- *
- * Bi Directional A* Shortest path algorithm for PostgreSQL
- *
- * Copyright (c) 2006 Anton A. Patrushev, Orkney, Inc.
-
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_BD_ASTAR_SRC_BDASTAR_DRIVER_H_
-#define SRC_BD_ASTAR_SRC_BDASTAR_DRIVER_H_
-#pragma once
-
-#include "stdlib.h"
-#include "../../common/src/pgr_types.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- int bdastar_wrapper(edge_astar_t *edges, size_t count, int maxnode,
- int source_vertex_id, int target_vertex_id,
- bool directed, bool has_reverse_cost,
- path_element_t **path, size_t *path_count, char **err_msg);
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_BD_ASTAR_SRC_BDASTAR_DRIVER_H_
diff --git a/src/bd_astar/test/bd_astar-any-00.data b/src/bd_astar/test/bd_astar-any-00.data
deleted file mode 100644
index 87f4df2..0000000
--- a/src/bd_astar/test/bd_astar-any-00.data
+++ /dev/null
@@ -1,17284 +0,0 @@
-
-drop table if exists bdaways cascade;
-create table bdaways (
- id integer not null primary key,
- source integer,
- target integer,
- cost float8,
- reverse_cost float8,
- x1 float8,
- y1 float8,
- x2 float8,
- y2 float8
-);
-
-copy bdaways (id, source, target, cost, reverse_cost, x1, y1, x2, y2) from stdin;
-18129 10271 10265 0.407629542119694 0.407629542119694 -105.0222175 39.7910979 -105.0222149 39.787432
-14822 9426 3606 0.0603186413824967 0.0603186413824967 -105.0236131 39.7548297 -105.0243187 39.7548283
-16176 5812 7719 0.198519002375015 0.198519002375015 -104.9868503 39.6911967 -104.9868624 39.6894114
-16177 7719 9841 1.21182332618964 1.21182332618964 -104.9868624 39.6894114 -104.9869458 39.6785134
-16178 137 1482 0.199034161669709 0.199034161669709 -104.990773 39.6930188 -104.9907544 39.6948087
-16179 1482 3758 0.20606858724026 0.20606858724026 -104.9907544 39.6948087 -104.9907434 39.6966619
-16217 7903 7844 0.0651768093591436 0.0651768093591436 -105.0105038 39.7592382 -105.0110496 39.7596475
-16218 7844 6725 0.105799860394335 0.105799860394335 -105.0110496 39.7596475 -105.0111475 39.760596
-15793 2298 2322 0.00529554982932783 0.00529554982932783 -105.0218722 39.7380446 -105.0218662 39.7379972
-14854 9432 9433 0.00987428384236239 0.00987428384236239 -105.0069697 39.7566591 -105.0068808 39.7566024
-19732 4490 10638 0.0159213769578026 0.0159213769578026 -105.0052486 39.7360678 -105.0050796 39.7360077
-19734 10639 10640 0.115517684408379 0.115517684408379 -104.9689526 39.7383918 -104.9684353 39.7374321
-19736 10643 5491 0.200611432022914 0.200611432022914 -104.9456446 39.7401427 -104.9456286 39.7383386
-19737 5491 9472 0.173586542348893 0.173586542348893 -104.9456286 39.7383386 -104.9456312 39.7367775
-16211 7730 9848 1.41098736584228 1.41098736584228 -104.9786837 39.6894012 -104.9787084 39.6767119
-19766 8868 3770 0.15451665559366 0.15451665559366 -104.9434398 39.7304973 -104.9434426 39.7291077
-19767 3770 10249 0.199225315153312 0.199225315153312 -104.9434426 39.7291077 -104.9434211 39.7273161
-19769 9471 4895 0.183643472400882 0.183643472400882 -104.9445503 39.7367663 -104.9445218 39.7351149
-19770 4895 9419 0.162738965694015 0.162738965694015 -104.9445218 39.7351149 -104.944537 39.7336514
-16694 9991 9992 0.00824975577533471 0.00824975577533471 -105.0009011 39.745286 -105.0008221 39.7453286
-16253 9862 7741 0.405750287416545 0.405750287416545 -104.9552615 39.6856875 -104.9552614 39.6893365
-16254 7741 5836 0.199719306282583 0.199719306282583 -104.9552614 39.6893365 -104.9552507 39.6911326
-16255 5836 9863 0.20307644815808 0.20307644815808 -104.9552507 39.6911326 -104.9552587 39.6929589
-445 449 450 0.199450473576153 0.199450473576153 -104.9423777 39.727311 -104.942375 39.7291047
-20724 9339 9399 0.00989025456720925 0.00989025456720925 -105.0251698 39.7619441 -105.0252855 39.7619451
-20725 9399 10912 0.0075300269970097 0.0075300269970097 -105.0252855 39.7619451 -105.0253734 39.7619406
-20727 10911 9342 0.00831469236711343 0.00831469236711343 -105.0250813 39.7632958 -105.02517 39.7633265
-18403 7778 10286 0.0505898966958872 0.0505898966958872 -105.0393109 39.7554232 -105.0387191 39.7554242
-273 283 284 0.0964719650645454 0.0964719650645454 -104.9824285 39.7794055 -104.9813127 39.7792736
-275 285 286 0.0574345831683482 0.0574345831683482 -105.0375561 39.7104672 -105.0376076 39.7109822
-276 286 287 0.00381671595135443 0.00381671595135443 -105.0376076 39.7109822 -105.037589 39.710951
-277 288 286 0.0749798421316384 0.0749798421316384 -105.0384831 39.7110152 -105.0376076 39.7109822
-267 277 278 0.026080790494895 0.026080790494895 -104.9875916 39.7783304 -104.9876105 39.7785645
-19535 10550 10547 0.0727126892007364 0.0727126892007364 -104.9890324 39.7101818 -104.9890392 39.7095279
-240 247 248 0.0772679392991742 0.0772679392991742 -104.9672584 39.6865375 -104.966468 39.6862015
-242 249 250 0.0969982430766615 0.0969982430766615 -104.998368 39.698242 -104.998399 39.69737
-19500 10527 10528 0.0180139213913488 0.0180139213913488 -104.9883695 39.7068128 -104.9883708 39.7066508
-16008 9778 9779 0.0944640625920965 0.0944640625920965 -104.9996367 39.6880494 -104.9993937 39.6888781
-15463 8882 1361 0.00984596954833585 0.00984596954833585 -105.0018196 39.7432597 -105.0019226 39.7432201
-11520 658 713 0.150268576052698 0.150268576052698 -105.0299141 39.7589753 -105.0281562 39.7589668
-270 280 281 0.0978981798906238 0.0978981798906238 -104.9858487 39.7794049 -104.9847034 39.7794255
-16247 7743 5838 0.199906773104335 0.199906773104335 -104.952944 39.68933 -104.9529386 39.6911278
-505 499 500 0.0224810261782308 0.0224810261782308 -105.0019139 39.7130364 -105.0016511 39.7130338
-19508 10448 10534 0.00643702567875165 0.00643702567875165 -104.9883503 39.7088103 -104.9882751 39.7088082
-16434 9896 3281 0.0340559329983669 0.0340559329983669 -104.9713614 39.7025858 -104.9710667 39.7027917
-19458 10492 10506 0.00750267115612711 0.00750267115612711 -104.991144 39.7108499 -104.9910563 39.7108489
-16700 9995 9996 0.0459960991438913 0.0459960991438913 -105.0002467 39.7468596 -104.9999838 39.7464987
-17222 5174 8210 0.200775724104805 0.200775724104805 -104.9774882 39.7165195 -104.9774991 39.7183251
-17224 4240 7299 0.0119914556826953 0.0119914556826953 -104.9774946 39.7019203 -104.9774985 39.7020281
-345 346 347 0.130802492327731 0.130802492327731 -105.0077031 39.726667 -105.0087846 39.7258352
-347 348 349 0.135557185972568 0.135557185972568 -105.0167349 39.7741306 -105.0166897 39.7753492
-348 349 350 0.136845365159024 0.136845365159024 -105.0166897 39.7753492 -105.0166327 39.7765791
-355 357 358 0.388256388951567 0.388256388951567 -105.0040637 39.6822107 -105.0034646 39.6856718
-356 358 359 0.410677079496879 0.410677079496879 -105.0034646 39.6856718 -105.0015512 39.6890589
-18458 10297 6395 0.0910083144293941 0.0910083144293941 -105.03052 39.7468559 -105.0300459 39.7475887
-18424 8333 10290 0.150248967925867 0.150248967925867 -105.0410618 39.76212 -105.0410717 39.7607688
-18426 8331 7848 0.20002866768649 0.20002866768649 -105.0387149 39.7621204 -105.0387174 39.7603215
-16185 9843 7721 1.49406009526399 1.49406009526399 -104.9846521 39.6759732 -104.9845556 39.6894094
-18230 2552 10281 0.408042509102773 0.408042509102773 -105.0421454 39.7874345 -105.0421588 39.7911041
-568 561 562 0.0238735645312088 0.0238735645312088 -104.984845 39.7400568 -104.9848447 39.7398421
-509 503 504 0.0378269387886271 0.0378269387886271 -104.9454639 39.7487815 -104.9458317 39.7485924
-510 504 505 0.131422581642966 0.131422581642966 -104.9458317 39.7485924 -104.9471759 39.748019
-511 505 506 0.13298824931129 0.13298824931129 -104.9471759 39.748019 -104.9486568 39.747653
-512 506 507 0.0469418788297666 0.0469418788297666 -104.9486568 39.747653 -104.9492017 39.7477049
-513 507 508 0.00800396830514923 0.00800396830514923 -104.9492017 39.7477049 -104.9492875 39.7477337
-514 508 509 0.189986229051577 0.189986229051577 -104.9492875 39.7477337 -104.9514881 39.747496
-521 516 517 0.0463139600038384 0.0463139600038384 -104.968998 39.788144 -104.968456 39.788149
-12956 1507 1599 0.174395269936236 0.174395269936236 -105.0003423 39.7408556 -105.0021858 39.7415267
-19854 9521 10661 0.207011877470032 0.207011877470032 -105.04459 39.7403388 -105.044594 39.7384771
-11687 773 774 0.0194846935551434 0.0194846935551434 -105.0019256 39.7530472 -105.0018298 39.7532062
-20577 10865 10866 0.00985918265048112 0.00985918265048112 -105.024575 39.7609374 -105.0244598 39.760933
-15197 3400 9212 0.0496967641825266 0.0496967641825266 -105.0346118 39.7499915 -105.0351931 39.7499892
-3594 3445 1174 0.142771364790872 0.142771364790872 -104.9462568 39.7619224 -104.9462747 39.7632063
-3595 1174 897 0.139794356108886 0.139794356108886 -104.9462747 39.7632063 -104.9462766 39.7644635
-19561 10564 10565 0.0196154846965349 0.0196154846965349 -104.9892825 39.7091533 -104.9895118 39.7091548
-16270 6159 9867 0.121531820960243 0.121531820960243 -104.9571463 39.7006474 -104.955726 39.700668
-11805 8417 8418 0.134805848745127 0.134805848745127 -104.9873865 39.7509603 -104.986246 39.7517975
-18434 8357 10291 0.154597709113849 0.154597709113849 -105.0387283 39.763957 -105.0387163 39.7625667
-15269 8698 8458 0.108561000163296 0.108561000163296 -104.9293068 39.7060799 -104.9284834 39.705337
-16600 3169 9952 0.143650464740249 0.143650464740249 -105.0010939 39.7483839 -104.9999037 39.7492958
-971 982 983 0.153004941982632 0.153004941982632 -104.9740839 39.7304453 -104.9740784 39.7290693
-19467 10511 10512 0.0226507231527583 0.0226507231527583 -104.9902675 39.7093534 -104.9902689 39.7091497
-19468 10512 10513 0.0195038602641882 0.0195038602641882 -104.9902689 39.7091497 -104.9902701 39.7089743
-16605 9954 9955 0.0548421550272179 0.0548421550272179 -104.9873941 39.7482417 -104.98691 39.7485653
-16733 5003 10004 0.0399314883998924 0.0399314883998924 -104.9542392 39.7014907 -104.9539532 39.7012069
-16677 9979 9980 0.023537846703909 0.023537846703909 -105.0090565 39.7415049 -105.0092872 39.7413894
-15811 9714 9715 0.0297752747528411 0.0297752747528411 -105.0287669 39.734998 -105.0286408 39.7352476
-12949 1304 1330 0.0581647037716416 0.0581647037716416 -105.0024118 39.7438801 -105.0020771 39.7434247
-11964 5499 7073 0.148280923478534 0.148280923478534 -104.978687 39.7590038 -104.9774602 39.7599466
-18453 9427 4296 0.104102993198957 0.104102993198957 -105.0410753 39.7548663 -105.0410672 39.7539301
-20603 10836 10820 0.0118777812250081 0.0118777812250081 -105.0188782 39.7585174 -105.0188943 39.7586235
-20604 10820 10827 0.0109415807816948 0.0109415807816948 -105.0188943 39.7586235 -105.0188943 39.7587219
-318 326 327 0.287313248528131 0.287313248528131 -104.9969556 39.7087095 -104.9987289 39.7109039
-919 933 934 0.0476774715690845 0.0476774715690845 -104.9758289 39.7320426 -104.9752714 39.7320373
-920 934 935 0.0499176342652801 0.0499176342652801 -104.9752714 39.7320373 -104.9746877 39.7320425
-921 935 936 0.0512339711733563 0.0512339711733563 -104.9746877 39.7320425 -104.9740886 39.7320473
-12002 6577 5507 0.29282736629382 0.29282736629382 -104.9845851 39.7598337 -104.9821628 39.7616959
-2397 2072 2388 0.0939943538292093 0.0939943538292093 -104.9530584 39.7738703 -104.9519586 39.7738777
-17363 7241 3255 0.194151227318962 0.194151227318962 -104.9786816 39.7057151 -104.9786655 39.7039691
-3612 954 3458 0.174654702147255 0.174654702147255 -104.9461808 39.7320927 -104.9461745 39.7336634
-3613 3458 3459 0.161855899930502 0.161855899930502 -104.9461745 39.7336634 -104.9461795 39.735119
-3614 3459 3460 0.184505780617563 0.184505780617563 -104.9461795 39.735119 -104.9461809 39.7367783
-3615 3460 3461 0.174076203888655 0.174076203888655 -104.9461809 39.7367783 -104.9461758 39.7383438
-12954 1477 1478 0.162422090556836 0.162422090556836 -105.002429 39.7428637 -105.0010729 39.7418408
-16746 6830 10008 0.0662012224002346 0.0662012224002346 -104.9512088 39.6979166 -104.9506165 39.6975335
-19537 10551 4704 0.0179029738053875 0.0179029738053875 -104.9890395 39.7095019 -104.9890412 39.7093409
-16747 10008 3664 0.0562861796352498 0.0562861796352498 -104.9506165 39.6975335 -104.9507 39.6970314
-12008 8513 4459 0.0575373844976813 0.0575373844976813 -104.9847187 39.7610718 -104.9842417 39.7614369
-12009 4459 5508 0.146438493557302 0.146438493557302 -104.9842417 39.7614369 -104.9830521 39.7623846
-11575 1594 1595 0.149695612752929 0.149695612752929 -105.0340269 39.7566757 -105.0340012 39.7553296
-18383 8920 8960 0.0494721849144557 0.0494721849144557 -105.0258859 39.7720013 -105.0258905 39.7724462
-19652 10605 10528 0.00763160148090486 0.00763160148090486 -104.9882816 39.7066519 -104.9883708 39.7066508
-1706 1727 204 0.0785826238386085 0.0785826238386085 -105.0194505 39.690822 -105.0203689 39.690822
-11578 1595 1767 0.0524448615311058 0.0524448615311058 -105.0340012 39.7553296 -105.0346147 39.7553296
-351 353 354 0.0783794642996216 0.0783794642996216 -104.9345948 39.720897 -104.9346635 39.7201941
-16749 53 10005 0.150239248303575 0.150239248303575 -104.9519712 39.7002191 -104.9531164 39.6991948
-20036 7837 816 0.140917505829302 0.140917505829302 -104.9739674 39.7519707 -104.9739648 39.753238
-20637 10876 10878 0.031770930566573 0.031770930566573 -105.0137702 39.7627689 -105.0137749 39.7624832
-16183 1702 133 0.201630131124766 0.201630131124766 -104.9881579 39.6911836 -104.9881082 39.6929965
-16753 6829 10009 0.0465845830870589 0.0465845830870589 -104.9506246 39.6983982 -104.9506326 39.6988171
-18737 2600 1858 0.180581857071932 0.180581857071932 -105.0403183 39.7229556 -105.0403103 39.7213316
-14686 1987 2318 0.198940266900504 0.198940266900504 -104.9711608 39.7219572 -104.9711696 39.7237463
-1928 1941 1942 0.123855031305308 0.123855031305308 -104.9873753 39.7384618 -104.9888238 39.7384602
-18741 8070 7651 0.262731372814963 0.262731372814963 -105.0389316 39.730617 -105.0389317 39.7282542
-14685 1546 1987 0.20778014181537 0.20778014181537 -104.9711694 39.7200886 -104.9711608 39.7219572
-12334 8656 8657 0.0212762444700433 0.0212762444700433 -105.0073545 39.7547272 -105.0074107 39.7549136
-18873 7825 7987 0.015602795644656 0.015602795644656 -104.9875714 39.7007878 -104.9874076 39.7007261
-12352 8668 8669 0.00723037090372959 0.00723037090372959 -105.0125278 39.7524187 -105.0124521 39.7523897
-18669 9460 1818 0.156714358591483 0.156714358591483 -105.0282321 39.7288662 -105.028093 39.7274609
-18185 5799 6059 0.199739960113703 0.199739960113703 -105.0328002 39.7874226 -105.0327949 39.7856263
-18862 9131 9178 0.0368320416365925 0.0368320416365925 -105.016012 39.7307001 -105.0164243 39.7306043
-16606 9955 7890 0.148662937956551 0.148662937956551 -104.98691 39.7485653 -104.9856992 39.7495249
-12197 424 2296 0.092590985158808 0.092590985158808 -105.0237982 39.7396264 -105.0235583 39.7404384
-328 329 330 0.0301965908229701 0.0301965908229701 -104.951939 39.7453698 -104.9522566 39.7454886
-329 330 331 0.00308879550687601 0.00308879550687601 -104.9522566 39.7454886 -104.9522901 39.745499
-15797 2324 2349 0.0197202421063636 0.0197202421063636 -105.0223618 39.737766 -105.0225811 39.7377111
-16293 2377 2409 0.0804076908745063 0.0804076908745063 -104.9707298 39.6964161 -104.9698358 39.6961931
-17370 3254 7297 0.216186214827155 0.216186214827155 -104.9787191 39.7039689 -104.9786923 39.7020248
-18195 8107 9376 0.183361036437535 0.183361036437535 -105.0363465 39.77838 -105.036341 39.776731
-17371 7297 40 0.193403542976089 0.193403542976089 -104.9786923 39.7020248 -104.9786815 39.7002855
-389 391 392 0.10291889633356 0.10291889633356 -104.931634 39.702187 -104.932837 39.702182
-18880 1927 7249 0.20098536077548 0.20098536077548 -104.9611322 39.7074867 -104.9611376 39.7056792
-12842 2658 461 0.235239531220745 0.235239531220745 -104.9890044 39.7762796 -104.9888564 39.7783921
-18457 7020 10297 0.095413640203737 0.095413640203737 -105.0315108 39.746461 -105.03052 39.7468559
-14684 1545 1546 0.195783826439231 0.195783826439231 -104.9711569 39.7183279 -104.9711694 39.7200886
-16302 2721 2722 0.0283898956128369 0.0283898956128369 -104.9693989 39.6953759 -104.96971 39.6952871
-18674 1569 1570 0.17732367890712 0.17732367890712 -105.0399837 39.7229516 -105.0399911 39.7245463
-19651 10604 10605 0.00569731320684084 0.00569731320684084 -104.988215 39.7066518 -104.9882816 39.7066519
-12365 8674 8675 0.00395306971093599 0.00395306971093599 -105.011632 39.7531718 -105.0116148 39.7532048
-18885 80 7308 0.203338584644882 0.203338584644882 -104.9634174 39.7002277 -104.9634496 39.7020562
-18462 9528 9293 0.135413968590027 0.135413968590027 -105.0387229 39.7499763 -105.0387175 39.7511941
-17073 8133 10070 0.277242310734424 0.277242310734424 -104.9615993 39.7482178 -104.9615992 39.7507111
-18887 3267 7247 0.200784680682105 0.200784680682105 -104.9634713 39.7038687 -104.963471 39.7056744
-16306 2851 2852 0.0109060813984903 0.0109060813984903 -104.9722098 39.6978689 -104.972242 39.697774
-18803 8953 10352 0.0713096059986916 0.0713096059986916 -104.9925416 39.768912 -104.9919121 39.7693329
-12360 8670 8671 0.0527368404826503 0.0527368404826503 -105.0123272 39.7529475 -105.0117521 39.7531191
-19915 8054 8774 0.178101620538173 0.178101620538173 -104.9981194 39.7305074 -104.9980954 39.7289058
-19027 10418 8995 0.822032321709027 0.822032321709027 -104.9421303 39.7909863 -104.9472908 39.7847471
-16313 2929 2636 0.0522503580010493 0.0522503580010493 -104.9698519 39.6952562 -104.970433 39.6951117
-18123 10266 7936 0.0422734852594549 0.0422734852594549 -105.0106756 39.7890735 -105.0106854 39.7894536
-11696 1005 1006 0.0249036708868205 0.0249036708868205 -105.0014074 39.7532864 -105.0016257 39.7531381
-19031 9820 9825 0.141867922710985 0.141867922710985 -104.9518785 39.7803129 -104.9535187 39.7801156
-17076 828 3568 0.137092229325187 0.137092229325187 -104.9616093 39.7532223 -104.9616097 39.7544552
-20641 10879 4802 0.0562973461233787 0.0562973461233787 -105.0134384 39.762482 -105.0127798 39.7624768
-19035 9497 9495 0.0285635113459611 0.0285635113459611 -104.949868 39.7793088 -104.9496974 39.7795297
-2071 2074 2075 0.135495947312548 0.135495947312548 -104.953735 39.7545002 -104.9536922 39.7557183
-15936 9757 6254 0.229061306545615 0.229061306545615 -104.9945244 39.7005048 -104.9939504 39.6984927
-3229 3143 3144 0.198651066611581 0.198651066611581 -104.9647761 39.721983 -104.9647846 39.7237695
-3231 3145 1186 0.167106782855451 0.167106782855451 -104.9648025 39.7256 -104.9648143 39.7271028
-20275 10725 6473 0.00777253007071417 0.00777253007071417 -105.0450582 39.7746915 -105.0450583 39.7747614
-20276 6473 10726 0.00774087009692378 0.00774087009692378 -105.0450583 39.7747614 -105.0450564 39.774831
-20277 10710 5573 0.00807679050419555 0.00807679050419555 -105.0441026 39.7735162 -105.0440081 39.7735153
-16287 1363 2160 0.150908240771596 0.150908240771596 -104.9708258 39.6964243 -104.9704959 39.6950911
-18901 10379 10378 0.00446883067059111 0.00446883067059111 -105.0125991 39.750475 -105.0125479 39.7504669
-18181 6056 4071 0.17853957848987 0.17853957848987 -105.030464 39.7856261 -105.0304275 39.7840207
-16288 2160 2273 0.031688963076218 0.031688963076218 -104.9704959 39.6950911 -104.970858 39.6950312
-15792 2131 2298 0.0834787229201596 0.0834787229201596 -105.0228299 39.7378988 -105.0218722 39.7380446
-17362 1905 7241 0.196305657515643 0.196305657515643 -104.9786923 39.7074805 -104.9786816 39.7057151
-20796 10943 7661 0.00258138052005919 0.00258138052005919 -105.0351465 39.7621945 -105.0351767 39.7621945
-20797 7661 10931 0.00256438171506516 0.00256438171506516 -105.0351767 39.7621945 -105.0352067 39.7621947
-17367 3197 6112 0.203543642625323 0.203543642625323 -104.9786527 39.7111042 -104.9786441 39.7092737
-19564 10566 10567 0.0877791462313442 0.0877791462313442 -104.9897479 39.7084105 -104.9897546 39.7076211
-17839 9059 10189 0.106477983280495 0.106477983280495 -104.9784966 39.7791336 -104.9772538 39.7792023
-17124 42 4240 0.19030237977338 0.19030237977338 -104.9775311 39.7002091 -104.9774946 39.7019203
-15941 9758 9759 0.0631588158295344 0.0631588158295344 -104.9982473 39.7053729 -104.9977092 39.704984
-17151 4781 4823 0.202239291799058 0.202239291799058 -104.9751707 39.7038491 -104.9751483 39.7056678
-14110 421 3623 0.253988429085779 0.253988429085779 -104.9424633 39.7443997 -104.9448677 39.7457412
-20309 10730 10731 0.0277808040232953 0.0277808040232953 -105.0250776 39.7585876 -105.0247591 39.7586373
-19606 10584 10500 0.00674103787689334 0.00674103787689334 -104.9910734 39.7091553 -104.9911522 39.7091559
-18677 2800 2801 0.105225983369234 0.105225983369234 -105.0367483 39.7254828 -105.0367403 39.7245365
-17096 3720 3721 0.196415457175175 0.196415457175175 -104.9604079 39.7368138 -104.9604142 39.7350474
-19914 6599 8054 0.176409123849899 0.176409123849899 -104.9981408 39.7320938 -104.9981194 39.7305074
-14113 3767 3768 0.109524379066099 0.109524379066099 -104.9431585 39.7464851 -104.9443957 39.7462296
-19575 10571 10572 0.0878577106463745 0.0878577106463745 -104.98929 39.7084071 -104.9892979 39.707617
-19578 7458 10573 0.00838425457343401 0.00838425457343401 -104.9885959 39.7075353 -104.9885953 39.7076107
-13363 6192 9050 0.200728781748151 0.200728781748151 -104.9818752 39.7795506 -104.9795353 39.7793923
-18684 3608 1316 0.176123680044276 0.176123680044276 -105.036708 39.7149602 -105.0366981 39.7133763
-16406 9888 9885 0.103994018141439 0.103994018141439 -104.9706065 39.7033361 -104.9695415 39.703787
-20348 10747 10734 0.124798183375822 0.124798183375822 -105.0235111 39.7585885 -105.0220514 39.7585674
-13367 487 9053 0.0916792010447841 0.0916792010447841 -104.9845022 39.7800173 -104.985575 39.7800251
-17112 3776 3932 0.0318567386044335 0.0318567386044335 -104.9578598 39.7475843 -104.9574881 39.7475642
-18472 7703 9005 0.191779872148763 0.191779872148763 -105.0398923 39.7567045 -105.0399025 39.7549798
-13566 4 3088 0.053682748576131 0.053682748576131 -105.0151369 39.7295685 -105.0149714 39.7291028
-14690 2868 3129 0.152693011202245 0.152693011202245 -104.9712042 39.7290823 -104.9712066 39.7304555
-19632 10519 10594 0.0691883113691504 0.0691883113691504 -104.9902831 39.708118 -104.9910918 39.7081283
-16442 9898 9900 0.0593229160576478 0.0593229160576478 -104.9681189 39.6930432 -104.9688122 39.6930484
-19557 10561 10562 0.0114115661676901 0.0114115661676901 -104.9884504 39.7091486 -104.9885838 39.7091493
-17140 3200 3089 0.200962427212495 0.200962427212495 -104.976351 39.7110879 -104.9763937 39.7128949
-19588 10578 7459 0.00830641959761081 0.00830641959761081 -104.9888246 39.7076128 -104.9888252 39.7075381
-19590 10509 10579 0.0688000441577074 0.0688000441577074 -104.9902632 39.7097378 -104.9910674 39.7097471
-4371 4093 4094 0.0474398468296831 0.0474398468296831 -105.016444 39.7839662 -105.0169973 39.7839311
-14821 4531 9426 0.131844452515128 0.131844452515128 -105.0220708 39.7548328 -105.0236131 39.7548297
-20313 10734 10735 0.135778003167023 0.135778003167023 -105.0220514 39.7585674 -105.0233062 39.7593161
-16512 8896 9922 0.103245634213484 0.103245634213484 -105.0048016 39.7429839 -105.0040915 39.7422329
-19627 10592 10501 0.0068017037739497 0.0068017037739497 -104.9910751 39.7089846 -104.9911546 39.7089857
-3432 3319 3320 0.201627360859163 0.201627360859163 -104.9570312 39.7819252 -104.9569981 39.7837383
-3631 1572 3475 0.135693159195378 0.135693159195378 -104.9464121 39.7776877 -104.9464207 39.778908
-3632 3475 3476 0.119283891700122 0.119283891700122 -104.9464207 39.778908 -104.9464336 39.7799807
-3634 3211 3477 0.201273972346718 0.201273972346718 -104.9640093 39.7111011 -104.9640079 39.709291
-3635 3477 1922 0.201175175309244 0.201175175309244 -104.9640079 39.709291 -104.9639994 39.7074818
-17122 4176 3542 0.20232729922556 0.20232729922556 -104.9775098 39.6966104 -104.977531 39.6984299
-16444 9901 9902 0.179094898504736 0.179094898504736 -104.9711673 39.6931206 -104.9732597 39.6931641
-20287 9383 6472 0.201518688053588 0.201518688053588 -105.0445781 39.7765737 -105.0445755 39.7747614
-20014 8858 10180 0.0735203760297937 0.0735203760297937 -104.988003 39.7531189 -104.9873951 39.7535866
-19233 10457 10420 0.0372086096742178 0.0372086096742178 -104.991294 39.7429942 -104.9910563 39.7427139
-4657 4299 3840 0.0473685540434106 0.0473685540434106 -105.0422855 39.7539305 -105.0428396 39.7539325
-14125 3659 3925 0.129261803351535 0.129261803351535 -104.9461809 39.7460646 -104.9455321 39.7450146
-3623 3469 3470 0.140706278566204 0.140706278566204 -104.9464912 39.7544409 -104.9464883 39.7557063
-18908 10386 10387 0.0302347602157808 0.0302347602157808 -105.0126981 39.7501431 -105.0127236 39.7498719
-15943 9760 8085 0.0293664602336856 0.0293664602336856 -104.9988776 39.705053 -104.9991901 39.7049437
-18142 10269 6300 0.0570177692907992 0.0570177692907992 -105.0151755 39.7886103 -105.0158404 39.7886539
-17020 10057 10058 0.15155359133236 0.15155359133236 -105.0168578 39.7546147 -105.0171608 39.7532718
-17158 5010 5011 0.0757362739800239 0.0757362739800239 -104.9728277 39.6904527 -104.9728223 39.6911338
-16649 9960 9968 0.0812055546813917 0.0812055546813917 -104.9855516 39.7391519 -104.9849991 39.7385579
-17022 10055 10058 0.0158274438461504 0.0158274438461504 -105.0169757 39.7532749 -105.0171608 39.7532718
-20617 10793 10829 0.0486626332146345 0.0486626332146345 -105.023633 39.7596708 -105.0230688 39.7597292
-17292 7745 7192 0.403926945097788 0.403926945097788 -104.944774 39.68931 -104.9447793 39.6929426
-17953 8781 10225 0.0170107340919314 0.0170107340919314 -104.9874899 39.7236088 -104.987291 39.7236088
-17142 4509 4616 0.202021015829292 0.202021015829292 -104.9763295 39.7146995 -104.9763402 39.7165163
-14706 5161 5162 0.0515278311632085 0.0515278311632085 -104.9746885 39.7400066 -104.9746897 39.7395432
-17293 7192 8754 0.202354446551741 0.202354446551741 -104.9447793 39.6929426 -104.944769 39.6947624
-16653 9971 9972 0.0159150831985239 0.0159150831985239 -104.9875004 39.7399598 -104.9876865 39.7399625
-17955 10229 10228 0.0205875980561605 0.0205875980561605 -104.9870009 39.7240152 -104.98712 39.7238543
-16775 9905 10011 0.0628512846047373 0.0628512846047373 -104.9731684 39.7001285 -104.9726726 39.6997114
-20430 10790 10791 0.0319464035455711 0.0319464035455711 -105.0228403 39.759346 -105.0231621 39.7594921
-17144 4683 4684 0.183413882011105 0.183413882011105 -104.9751813 39.691337 -104.9751601 39.6929864
-17482 367 368 0.0073956069596753 0.0073956069596753 -104.9589982 39.7796654 -104.9589875 39.7795994
-17483 368 4274 0.0740383655738795 0.0740383655738795 -104.9589875 39.7795994 -104.9589559 39.778934
-18131 6045 4102 0.143663826029319 0.143663826029319 -105.0222109 39.785625 -105.0222318 39.7843331
-17166 3547 48 0.197940166378652 0.197940166378652 -104.9739907 39.6984301 -104.9740013 39.7002102
-17957 10231 10232 0.0468160398694911 0.0468160398694911 -104.9876908 39.725221 -104.9882382 39.7252241
-19584 10563 10576 0.0699872416467849 0.0699872416467849 -104.9888131 39.7091506 -104.9888178 39.7085212
-19587 10577 10578 0.0879343964012276 0.0879343964012276 -104.9888187 39.7084036 -104.9888246 39.7076128
-16540 7834 812 0.139228180638449 0.139228180638449 -104.9763093 39.7519986 -104.9763308 39.7532506
-20323 10742 10732 0.00891011779971553 0.00891011779971553 -105.0237259 39.7589011 -105.0237565 39.7589777
-14118 3946 4047 0.0370997345222532 0.0370997345222532 -104.9449549 39.7480018 -104.9449621 39.7476682
-20325 10743 10744 0.00292597509729593 0.00292597509729593 -105.0236223 39.7590808 -105.0235881 39.7590797
-17681 9050 9814 0.396292789359983 0.396292789359983 -104.9795353 39.7793923 -104.974902 39.7795432
-17683 10165 9814 0.392184725428778 0.392184725428778 -104.9794908 39.7794867 -104.974902 39.7795432
-17303 3516 4258 0.201418622589808 0.201418622589808 -104.9634676 39.6983891 -104.9634703 39.6965777
-17690 6173 6191 0.0979652724466413 0.0979652724466413 -104.9843627 39.779576 -104.9832163 39.7795774
-17305 8744 8715 0.198903931890441 0.198903931890441 -104.9634565 39.6947677 -104.9634793 39.692979
-19815 6602 8057 0.177734109816075 0.177734109816075 -105.0021882 39.7320975 -105.0021856 39.7304991
-20432 10754 10792 0.00161805170064806 0.00161805170064806 -105.0232175 39.7595165 -105.0232345 39.7595229
-5752 4838 5081 0.0155515271366432 0.0155515271366432 -104.9964173 39.7083799 -104.9962546 39.7083175
-14703 5104 5105 0.188886837572701 0.188886837572701 -104.973501 39.7255812 -104.9735001 39.7272799
-19833 10653 10654 0.205572346227123 0.205572346227123 -105.0399056 39.7384617 -105.0398868 39.736613
-4807 4413 4414 0.0998668735468864 0.0998668735468864 -105.0298142 39.704914 -105.0298228 39.7058121
-3650 3488 3106 0.174737901377497 0.174737901377497 -104.9293331 39.7146644 -104.9293159 39.713093
-3651 3106 3491 0.194747174928978 0.194747174928978 -104.9293159 39.713093 -104.9293114 39.7113416
-17379 5746 5747 0.00818765310677506 0.00818765310677506 -104.9676388 39.6930381 -104.9676964 39.6930969
-20468 10818 10755 0.173765546097308 0.173765546097308 -105.0193121 39.758524 -105.0213448 39.7585398
-17164 1802 4242 0.207580745712203 0.207580745712203 -104.9740336 39.6947447 -104.9740228 39.6966115
-6015 5267 5268 0.103281094663511 0.103281094663511 -104.9487209 39.7680993 -104.9475125 39.7680963
-18137 10263 10272 0.406284221439373 0.406284221439373 -105.0198897 39.7874342 -105.019885 39.791088
-17291 10085 7745 0.543012306463268 0.543012306463268 -104.9447951 39.6844266 -104.944774 39.68931
-14709 5330 4870 0.190973371939833 0.190973371939833 -104.9746992 39.7368668 -104.9746798 39.7351494
-18138 4093 6038 0.184675507720467 0.184675507720467 -105.016444 39.7839662 -105.0164173 39.7856269
-16651 9969 9970 0.100708681464822 0.100708681464822 -104.9848573 39.7385435 -104.9836795 39.7385414
-14710 4870 2220 0.162414391352976 0.162414391352976 -104.9746798 39.7351494 -104.9746915 39.7336888
-18505 6386 17 0.132879414135856 0.132879414135856 -105.0363788 39.7475676 -105.0363574 39.7463727
-14727 6220 6303 0.0511187399227223 0.0511187399227223 -104.9752801 39.7395432 -104.9758778 39.7395535
-17176 5390 5408 0.208329703574267 0.208329703574267 -104.9692808 39.6910982 -104.9693344 39.6929713
-20791 8358 10898 0.00761490800516594 0.00761490800516594 -105.039401 39.7639563 -105.0393945 39.7640246
-17146 1801 4241 0.206257539278646 0.206257539278646 -104.9751816 39.6947545 -104.9751708 39.6966094
-14731 6303 5467 0.125799145673022 0.125799145673022 -104.9758778 39.7395535 -104.97589 39.7384222
-18536 5557 10309 0.366989977501724 0.366989977501724 -105.0440105 39.7607636 -105.0483038 39.7607426
-14723 6016 5469 0.171433952660857 0.171433952660857 -104.9735459 39.7368668 -104.9735608 39.7384085
-18516 2412 10295 0.0120882825664803 0.0120882825664803 -105.041094 39.7530159 -105.041069 39.7531229
-17153 1911 4839 0.199025256937054 0.199025256937054 -104.9751493 39.7074845 -104.9751709 39.7092743
-17154 4839 3202 0.202009935716231 0.202009935716231 -104.9751709 39.7092743 -104.9751601 39.711091
-18288 6762 6873 0.146634632629247 0.146634632629247 -105.0276181 39.7698189 -105.025904 39.7697621
-20338 10735 10738 0.035049164748108 0.035049164748108 -105.0233062 39.7593161 -105.0235235 39.7590488
-18690 5770 5771 0.102556159708994 0.102556159708994 -105.0415039 39.7197378 -105.0414984 39.7188155
-20424 10785 10786 0.0731561229415083 0.0731561229415083 -105.0187626 39.7585641 -105.0188457 39.7592189
-5740 1710 5071 0.202613094112382 0.202613094112382 -105.0378737 39.6912834 -105.037844 39.6894614
-14744 2216 4866 0.159742631617364 0.159742631617364 -104.9770059 39.7337051 -104.9770059 39.7351417
-18148 6033 4087 0.198416361234407 0.198416361234407 -105.0117918 39.7856148 -105.0117891 39.7838304
-17476 4654 473 0.0704097319033273 0.0704097319033273 -105.0189639 39.7475939 -105.0185991 39.7470262
-18150 4100 6044 0.175955927487578 0.175955927487578 -105.0210503 39.7840434 -105.0210575 39.7856258
-6851 5860 5861 0.109631940187014 0.109631940187014 -105.0311875 39.7149636 -105.0324691 39.7149773
-14841 7164 7777 0.0983349446501409 0.0983349446501409 -105.0381551 39.754855 -105.0393054 39.7548506
-18242 6768 3993 0.201258062688176 0.201258062688176 -105.0275913 39.7725071 -105.029945 39.772565
-18273 6645 6666 0.202152498738845 0.202152498738845 -105.0398253 39.77838 -105.0398227 39.780198
-20386 10770 10771 0.0535943445752728 0.0535943445752728 -105.0244499 39.7607064 -105.0250699 39.7607782
-6983 5958 5959 0.149650557500517 0.149650557500517 -104.9891839 39.7447837 -104.9904219 39.7438323
-18306 3982 7041 0.200503190670894 0.200503190670894 -105.0299336 39.7678829 -105.0322795 39.7678767
-20438 10796 10797 0.0670860233753639 0.0670860233753639 -105.0226193 39.761283 -105.0218716 39.7614664
-20500 10838 10824 0.0121125751150814 0.0121125751150814 -105.0210227 39.7583868 -105.0208891 39.7583505
-14725 977 5162 0.0458445478179373 0.0458445478179373 -104.9741536 39.7395367 -104.9746897 39.7395432
-6627 5707 1851 0.181903999460801 0.181903999460801 -105.0361257 39.7196961 -105.036129 39.721332
-3671 3508 3509 0.00436333612190551 0.00436333612190551 -104.9681486 39.6983823 -104.9680976 39.6983824
-3672 3509 3510 0.046781667512879 0.046781667512879 -104.9680976 39.6983824 -104.9675508 39.6983827
-7657 3346 6356 0.257422789129267 0.257422789129267 -104.9571645 39.7728928 -104.9541524 39.7728932
-14872 3240 5733 0.139141273161543 0.139141273161543 -105.0054318 39.7718056 -105.005421 39.7730569
-18469 9138 10300 0.19595637710121 0.19595637710121 -105.0432544 39.7511117 -105.0450359 39.7522206
-18266 1691 6545 0.203809181046432 0.203809181046432 -105.039903 39.7676176 -105.039903 39.7694505
-18272 6629 6645 0.186774688365716 0.186774688365716 -105.0398199 39.7767003 -105.0398253 39.77838
-8163 6669 2301 0.106319016804013 0.106319016804013 -105.0065809 39.6967302 -105.0067097 39.6957792
-14130 9280 9279 0.186364690747119 0.186364690747119 -104.9512562 39.7473041 -104.9490944 39.7475193
-14771 2209 923 0.186974313150198 0.186974313150198 -104.9816406 39.7337091 -104.9816421 39.7320276
-18247 9377 8108 0.184107753412847 0.184107753412847 -105.0374998 39.776721 -105.0375106 39.7783767
-18704 7871 4059 0.176577842625336 0.176577842625336 -105.0426986 39.7197333 -105.0426948 39.7181453
-15923 9752 9072 0.0836347230210634 0.0836347230210634 -105.0166514 39.7287142 -105.0172266 39.7293225
-18541 7538 8363 0.0639425794382817 0.0639425794382817 -105.0449269 39.7643759 -105.0444735 39.7639185
-14134 509 9280 0.0291273215905741 0.0291273215905741 -104.9514881 39.747496 -104.9512562 39.7473041
-15926 498 9102 0.0623752088587868 0.0623752088587868 -105.0153507 39.7256437 -105.0160728 39.7255648
-11651 8350 4542 0.134464503460642 0.134464503460642 -105.0236355 39.7578502 -105.0220625 39.7578568
-18291 6752 3975 0.201306126180051 0.201306126180051 -105.0275758 39.7651202 -105.029931 39.765114
-14752 5933 6903 0.0776419963986988 0.0776419963986988 -104.9781588 39.7304487 -104.9781698 39.7297505
-15930 9755 8063 0.0157417186886108 0.0157417186886108 -105.0172761 39.7312819 -105.01746 39.7312756
-8622 3936 5625 0.097083190357132 0.097083190357132 -105.0005802 39.7765663 -105.0017162 39.7765726
-14891 9021 8103 0.0999072642817978 0.0999072642817978 -105.0324149 39.7040028 -105.0324492 39.7031047
-11386 8241 8242 0.105664996309114 0.105664996309114 -104.9455738 39.7799622 -104.9443373 39.7799663
-11647 7709 8347 0.0834163322393992 0.0834163322393992 -105.019873 39.7560486 -105.0198419 39.7552988
-12254 8618 8619 0.0216515691565663 0.0216515691565663 -105.0084208 39.7577001 -105.0083242 39.7578801
-20225 8757 10713 0.181625832679021 0.181625832679021 -104.9413115 39.694755 -104.9413101 39.6963884
-11373 437 8225 0.0125774855889878 0.0125774855889878 -105.0053491 39.7612975 -105.0052234 39.7612387
-20018 6572 4453 0.146908325275574 0.146908325275574 -104.981987 39.757826 -104.980759 39.7587503
-20512 10063 10060 0.007549583111055 0.007549583111055 -105.0192332 39.7576336 -105.0193133 39.7576622
-12048 8527 8528 0.0740401240439702 0.0740401240439702 -105.0054168 39.751192 -105.0061613 39.7515322
-14785 7957 5458 0.175576789379919 0.175576789379919 -104.9842157 39.7368542 -104.9842156 39.7384332
-12271 8518 8628 0.0787132719056346 0.0787132719056346 -105.0071312 39.7555112 -105.0077112 39.7549614
-11383 8239 8240 0.0842941433278933 0.0842941433278933 -104.9502774 39.7799784 -104.949291 39.7799729
-11370 7971 7972 0.0117965527041302 0.0117965527041302 -105.0053146 39.761583 -105.0052958 39.7614779
-11414 7984 7985 0.287379755335746 0.287379755335746 -105.0218262 39.7840053 -105.025085 39.7846442
-11432 415 8254 0.452015989776023 0.452015989776023 -105.0212787 39.7837465 -105.0159925 39.7835953
-20350 10730 2968 0.0120941619304981 0.0120941619304981 -105.0250776 39.7585876 -105.0250854 39.758479
-8748 5336 6979 0.175571360985687 0.175571360985687 -105.0408719 39.7054957 -105.0408435 39.7039169
-3691 3527 3528 0.0472108481996503 0.0472108481996503 -104.956949 39.698399 -104.9563972 39.6983957
-3692 3528 2737 0.0483230367668469 0.0483230367668469 -104.9563972 39.6983957 -104.9558324 39.6983924
-3697 3532 3533 0.0559788343200402 0.0559788343200402 -104.9827863 39.6984066 -104.982132 39.6984066
-15221 3833 8055 0.052921136155694 0.052921136155694 -105.0428186 39.7485544 -105.0428529 39.7480792
-12311 8645 8476 0.144977480276504 0.144977480276504 -105.0040083 39.7506996 -105.0028542 39.7497443
-12312 8476 8646 0.198472144343311 0.198472144343311 -105.0028542 39.7497443 -105.0012593 39.7484473
-12314 8643 8559 0.0228329493898265 0.0228329493898265 -105.0079172 39.7541523 -105.0076796 39.7542461
-20367 10748 10749 0.0037547184046713 0.0037547184046713 -105.0235917 39.7589758 -105.0236241 39.7589986
-9843 7548 7549 0.124919366653633 0.124919366653633 -105.0451568 39.7282934 -105.0451467 39.7294168
-12301 4845 8524 0.0473127526043962 0.0473127526043962 -105.0049838 39.7515411 -105.0053655 39.751233
-18331 7594 6751 0.14027973854483 0.14027973854483 -105.0259281 39.764212 -105.0275693 39.7642092
-11791 8037 2687 0.147733787935878 0.147733787935878 -104.9796416 39.7541805 -104.9808835 39.7532566
-15865 8762 8763 0.0396940145175954 0.0396940145175954 -105.0451798 39.7355292 -105.0447184 39.7355684
-20529 10029 10846 0.0100359682174695 0.0100359682174695 -105.015835 39.7583097 -105.0157176 39.7583088
-17959 6241 5194 0.169083036600962 0.169083036600962 -104.9883794 39.7256429 -104.9883782 39.7241223
-18370 6889 5250 0.0518724586298984 0.0518724586298984 -105.0259388 39.7651274 -105.0259394 39.7646609
-15225 8180 5297 0.041720314716376 0.041720314716376 -105.0389047 39.7441394 -105.039323 39.7439462
-9071 2781 7147 0.103689348353689 0.103689348353689 -104.9721138 39.7669682 -104.9721123 39.7679007
-3710 3546 1524 0.0515313284334221 0.0515313284334221 -104.9751709 39.6984277 -104.9745686 39.6984311
-20305 10728 8110 0.168482747904973 0.168482747904973 -105.0445532 39.7768578 -105.0445502 39.778373
-3711 1524 3547 0.0494425170647519 0.0494425170647519 -104.9745686 39.6984311 -104.9739907 39.6984301
-14739 6538 6607 0.183986331427456 0.183986331427456 -104.976974 39.7256103 -104.9769867 39.7272649
-11372 290 437 0.0112130207438012 0.0112130207438012 -105.0053845 39.7613946 -105.0053491 39.7612975
-18381 8535 8919 0.0499954488007408 0.0499954488007408 -105.0258888 39.7711084 -105.0258833 39.771558
-12246 8615 4817 0.146110905108578 0.146110905108578 -104.9995731 39.7508881 -104.9983798 39.7518288
-11425 8251 8078 0.7456254172446 0.7456254172446 -105.0348524 39.7834646 -105.043577 39.7835803
-12247 4817 5788 0.143910603528138 0.143910603528138 -104.9983798 39.7518288 -104.9971819 39.7527381
-12818 299 8256 0.476082599329394 0.476082599329394 -105.0099714 39.7835424 -105.0155373 39.7837344
-20410 8976 9207 0.0123297683183119 0.0123297683183119 -105.0250886 39.760233 -105.0250726 39.7601228
-12263 8621 8622 0.00671006625102598 0.00671006625102598 -105.0070186 39.7566114 -105.0070785 39.7566504
-11559 8319 7714 0.15000222129108 0.15000222129108 -105.0316875 39.7580245 -105.0316842 39.7566755
-15229 8334 8335 0.02937581800825 0.02937581800825 -104.9244842 39.6961248 -104.9241409 39.696129
-18377 6069 2549 0.201785565265125 0.201785565265125 -105.039828 39.7856193 -105.0398307 39.787434
-11447 387 8258 0.356209179582772 0.356209179582772 -105.0028212 39.783461 -104.9988487 39.78249
-11812 1881 8316 0.0255940628377938 0.0255940628377938 -105.0074729 39.746365 -105.007603 39.7465723
-14781 921 2207 0.190721648601815 0.190721648601815 -104.9828787 39.7320413 -104.9828811 39.7337565
-20233 10711 10715 0.00692211182471866 0.00692211182471866 -104.9413123 39.6937735 -104.9412314 39.693774
-20363 9209 8991 0.0223079019168015 0.0223079019168015 -105.0216966 39.7585487 -105.0214364 39.7585333
-18388 8990 9001 0.0110856339057274 0.0110856339057274 -105.0252879 39.7604305 -105.0253805 39.7605003
-20651 10033 10881 0.0461798387778834 0.0461798387778834 -105.014357 39.7669687 -105.0148973 39.7669673
-13366 9052 487 0.0981014313599177 0.0981014313599177 -104.9833542 39.7800156 -104.9845022 39.7800173
-12303 8639 8640 0.0320591977276875 0.0320591977276875 -105.0081633 39.7540481 -105.0078019 39.7541251
-20243 10716 10713 0.0141769281388351 0.0141769281388351 -104.9411444 39.6963884 -104.9413101 39.6963884
-14749 4864 2214 0.160302668775638 0.160302668775638 -104.9781817 39.7351466 -104.9781559 39.7337051
-13468 309 9094 0.0506545738820493 0.0506545738820493 -105.0183133 39.7254091 -105.0189056 39.7254091
-18336 1689 7624 0.203108569942922 0.203108569942922 -105.0387013 39.7676285 -105.0387364 39.7694549
-12937 1303 1970 0.0130832107015757 0.0130832107015757 -105.0017368 39.7441763 -105.0018024 39.7442826
-20525 10839 1286 0.00844906120646156 0.00844906120646156 -105.0206127 39.7582168 -105.020542 39.7581637
-10918 8035 5970 0.0219813767800627 0.0219813767800627 -104.9781265 39.7531137 -104.9783626 39.753192
-14913 7600 2016 0.104505986927597 0.104505986927597 -104.936219 39.7208978 -104.9349971 39.720897
-20351 2968 10750 0.0147633294839236 0.0147633294839236 -105.0250854 39.758479 -105.0250798 39.7583463
-15880 8763 8762 0.0396940145175954 0.0396940145175954 -105.0447184 39.7355684 -105.0451798 39.7355292
-20353 9401 9336 0.00949287140929792 0.00949287140929792 -105.025278 39.7585714 -105.0251673 39.7585782
-12244 8613 8614 0.00356038865266788 0.00356038865266788 -104.9996308 39.7508515 -104.9995987 39.7508719
-11216 8164 8165 0.0796169077304663 0.0796169077304663 -104.9269465 39.7030424 -104.9269411 39.7037584
-14132 9279 507 0.0225847659450503 0.0225847659450503 -104.9490944 39.7475193 -104.9492017 39.7477049
-15875 8940 8978 0.0300860996423522 0.0300860996423522 -105.0405047 39.7348341 -105.0408265 39.7349435
-11429 8253 319 0.299890155674121 0.299890155674121 -105.0342653 39.7832999 -105.0307715 39.7835551
-20371 2707 10756 0.00655605333712087 0.00655605333712087 -105.0229167 39.7612913 -105.0229933 39.7612883
-14677 3794 9330 0.199283554137764 0.199283554137764 -104.9700349 39.7290815 -104.9700355 39.7272893
-18476 4295 2411 0.100910451832155 0.100910451832155 -105.0399031 39.7539235 -105.0398977 39.753016
-18478 5542 9039 0.101169435731023 0.101169435731023 -105.0399084 39.7521049 -105.0398975 39.7511951
-11770 3014 8406 0.0500338703103734 0.0500338703103734 -104.9810635 39.7524708 -104.9814866 39.7527817
-11823 8421 8424 0.377719915283211 0.377719915283211 -105.0127281 39.7431253 -105.0160769 39.7409098
-10669 7915 6847 0.0947158385157811 0.0947158385157811 -105.0275397 39.7111407 -105.0275397 39.7102889
-3731 3565 3566 0.0486546976993217 0.0486546976993217 -104.9653106 39.7544428 -104.9647415 39.7544367
-3732 3566 3567 0.109486664803565 0.109486664803565 -104.9647415 39.7544367 -104.9634611 39.75446
-3733 3567 1037 0.105564006595596 0.105564006595596 -104.9634611 39.75446 -104.9622266 39.7544367
-11897 8466 8467 0.103343928827087 0.103343928827087 -105.0020778 39.7486652 -105.0015391 39.7478332
-11947 397 8496 0.0965081758273934 0.0965081758273934 -105.0131625 39.7564763 -105.013905 39.7558225
-18380 8494 8535 0.0492964457876769 0.0492964457876769 -105.0258959 39.7706651 -105.0258888 39.7711084
-20364 8991 10755 0.00786332111355482 0.00786332111355482 -105.0214364 39.7585333 -105.0213448 39.7585398
-12162 8315 8569 0.02262255215678 0.02262255215678 -105.0053848 39.7476354 -105.00526 39.747456
-12218 8594 2290 0.0213925904868369 0.0213925904868369 -105.0035802 39.740886 -105.0033485 39.7409586
-14931 3354 2767 0.0942765011393086 0.0942765011393086 -104.9338255 39.7274243 -104.9327231 39.7274245
-18498 9212 9220 0.133514882064815 0.133514882064815 -105.0351931 39.7499892 -105.0352038 39.7511899
-20706 9190 10885 0.00984120017613085 0.00984120017613085 -105.0253671 39.7620045 -105.0253682 39.762093
-12373 8677 8678 0.0486250060422128 0.0486250060422128 -104.99064 39.7765283 -104.9912089 39.7765361
-14967 7610 7264 0.0940136459475559 0.0940136459475559 -104.9383462 39.7510533 -104.9372465 39.7510554
-15895 9441 5377 0.102059140746775 0.102059140746775 -105.0429186 39.7342294 -105.044041 39.7339173
-13974 9251 9129 0.169864606266652 0.169864606266652 -105.0147648 39.729613 -105.0154242 39.731054
-20368 10749 10733 0.00357512667889407 0.00357512667889407 -105.0236241 39.7589986 -105.0236546 39.7589766
-14674 2227 943 0.182649781226047 0.182649781226047 -104.9700793 39.733704 -104.9700547 39.7320615
-14178 3784 8864 0.153337805989006 0.153337805989006 -104.9546474 39.7291228 -104.9546471 39.7305018
-19290 10470 8767 0.117748080941626 0.117748080941626 -104.988856 39.7394681 -104.9902331 39.7394681
-12575 8759 8760 0.0168627139608601 0.0168627139608601 -104.9407346 39.6947488 -104.9405376 39.6947443
-14983 8789 8796 0.105952161931752 0.105952161931752 -104.9835757 39.7432682 -104.9823365 39.7432723
-14984 8796 8878 0.106413855851218 0.106413855851218 -104.9823365 39.7432723 -104.9810919 39.7432682
-20419 10774 3587 0.00984290685312232 0.00984290685312232 -105.0243795 39.760698 -105.0243209 39.7607742
-15867 8770 8771 0.0147638851882813 0.0147638851882813 -105.0445575 39.7355437 -105.0444126 39.7356159
-11263 8195 8196 0.0967030898556648 0.0967030898556648 -104.9363825 39.6984629 -104.9352522 39.6984625
-16192 5817 7723 0.19660431304726 0.19660431304726 -104.983413 39.6911761 -104.9834185 39.689408
-20360 8992 10754 0.00404589397436802 0.00404589397436802 -105.0232439 39.7594863 -105.0232175 39.7595165
-19297 10471 1942 0.0559273520312209 0.0559273520312209 -104.9888451 39.7389629 -104.9888238 39.7384602
-15868 8833 5588 0.0188635032964949 0.0188635032964949 -105.0441417 39.7353828 -105.0439294 39.7354289
-19299 9959 564 0.00433589917958362 0.00433589917958362 -104.9854926 39.739222 -104.9854426 39.7392155
-20814 10936 7168 0.0050166121287054 0.0050166121287054 -105.0380601 39.7621908 -105.0381187 39.7621933
-20823 10780 9337 0.0124085195369407 0.0124085195369407 -105.0250471 39.7600231 -105.0251662 39.7600869
-19301 1942 10467 0.0736734316331574 0.0736734316331574 -104.9888238 39.7384602 -104.9888355 39.7377977
-12854 4133 6696 0.093947304456844 0.093947304456844 -104.9505787 39.7305216 -104.9494801 39.7305216
-15004 6269 9466 0.0522837092305697 0.0522837092305697 -104.960998 39.7432181 -104.9603865 39.7432158
-19305 10464 10461 0.0144782338635936 0.0144782338635936 -104.9888814 39.740512 -104.9888698 39.7406419
-19307 10467 611 0.103622552493386 0.103622552493386 -104.9888355 39.7377977 -104.9888354 39.7368658
-11685 8366 1032 0.0209886592874132 0.0209886592874132 -105.0020448 39.7527599 -105.0019469 39.752933
-20820 10919 8330 0.00776069150921458 0.00776069150921458 -105.0382104 39.7621908 -105.0382057 39.7621211
-11643 8347 4658 0.0580128250256257 0.0580128250256257 -105.0198419 39.7552988 -105.0191633 39.7552936
-12924 8890 8891 0.0884309215437497 0.0884309215437497 -105.0029709 39.7443191 -105.0038584 39.7439107
-15230 8360 8248 0.0379210675749848 0.0379210675749848 -104.9248705 39.6964922 -104.9245969 39.6962239
-13013 8916 2892 0.160989403082392 0.160989403082392 -104.9907275 39.7728705 -104.9912536 39.7714803
-12051 8531 8529 0.0116601753914343 0.0116601753914343 -105.0041475 39.7504135 -105.0041786 39.7503114
-20828 9205 8443 0.0104227726118747 0.0104227726118747 -105.0253893 39.7603981 -105.0254023 39.7603049
-18615 7410 5865 0.176922387553379 0.176922387553379 -105.0355064 39.7165547 -105.0355038 39.7149636
-14852 8621 9432 0.00675320800603643 0.00675320800603643 -105.0070186 39.7566114 -105.0069697 39.7566591
-18616 5865 9447 0.157075160700523 0.157075160700523 -105.0355038 39.7149636 -105.0354966 39.713551
-18618 1314 9447 0.0196279343381406 0.0196279343381406 -105.0354933 39.7133745 -105.0354966 39.713551
-11994 8505 8048 0.149802391835517 0.149802391835517 -104.9861441 39.7573027 -104.9849005 39.7582519
-18621 2586 5181 0.176412393215512 0.176412393215512 -105.0356522 39.7229391 -105.0356433 39.7245256
-18622 5181 5649 0.1069372720504 0.1069372720504 -105.0356433 39.7245256 -105.035649 39.7254873
-19473 7476 10517 0.0101658403815209 0.0101658403815209 -104.9902755 39.708471 -104.9902782 39.7083796
-19474 10517 10518 0.00993077177126307 0.00993077177126307 -104.9902782 39.7083796 -104.9902799 39.7082903
-18480 9040 9120 0.135103567036488 0.135103567036488 -105.0398922 39.7499655 -105.0398842 39.7487505
-20833 10944 10951 0.17747662532422 0.17747662532422 -105.0301334 39.7621946 -105.0322095 39.7622183
-19475 10518 10519 0.0191608413173093 0.0191608413173093 -104.9902799 39.7082903 -104.9902831 39.708118
-19512 10537 10447 0.00647615513057594 0.00647615513057594 -104.9882735 39.7089787 -104.9883492 39.7089795
-2 2 3 0.283463280100036 0.283463280100036 -105.0158228 39.7323669 -105.0152478 39.7298563
-3 3 4 0.0333775918694363 0.0333775918694363 -105.0152478 39.7298563 -105.0151369 39.7295685
-18628 1310 9484 0.175555113641419 0.175555113641419 -105.033071 39.7133691 -105.0330762 39.7149479
-12242 8611 8612 0.0998376585619669 0.0998376585619669 -105.0016014 39.7493354 -105.0007767 39.7499711
-5 5 6 0.348594358341424 0.348594358341424 -104.9373334 39.780183 -104.941411 39.7800918
-15909 9104 9105 0.0387441124726526 0.0387441124726526 -105.0421714 39.7165106 -105.0426052 39.7164103
-15903 6134 8603 0.0260893170771595 0.0260893170771595 -105.0288059 39.7222213 -105.0285111 39.7222816
-15878 8833 8770 0.0398025148628561 0.0398025148628561 -105.0441417 39.7353828 -105.0445575 39.7355437
-13625 7013 2274 0.0942922296438968 0.0942922296438968 -104.9316269 39.729236 -104.9305243 39.7292319
-15024 4136 2663 0.0946854927112821 0.0946854927112821 -104.9505787 39.7367922 -104.9516859 39.7368054
-13651 9159 1177 0.0568269678125187 0.0568269678125187 -104.9961123 39.7031752 -104.9966621 39.703462
-6 6 7 0.250747670173169 0.250747670173169 -104.941411 39.7800918 -104.9443453 39.7800941
-20837 10949 10945 0.0947762411619158 0.0947762411619158 -105.0269444 39.7610308 -105.0279522 39.7613862
-15887 8842 9619 0.0119243513569086 0.0119243513569086 -105.0381819 39.7339575 -105.0382355 39.7340565
-19481 10511 10486 0.0687637700371023 0.0687637700371023 -104.9902675 39.7093534 -104.9910713 39.7093611
-13777 9191 292 0.0113408171424215 0.0113408171424215 -105.0041591 39.7607716 -105.0040727 39.760849
-19493 10463 10523 0.0181472136448415 0.0181472136448415 -104.9883506 39.7087649 -104.9883516 39.7086017
-13799 9195 5081 0.0314508853846434 0.0314508853846434 -104.9963084 39.7080377 -104.9962546 39.7083175
-19487 10426 10427 0.0081618196829418 0.0081618196829418 -104.9883452 39.7095935 -104.9883457 39.7095201
-18570 10325 10322 0.0277653060168724 0.0277653060168724 -105.0344788 39.7803826 -105.0341731 39.7804672
-15042 6787 4718 0.0916704601824836 0.0916704601824836 -104.9684521 39.7368249 -104.9695224 39.7368723
-15043 4718 9414 0.0490846601218478 0.0490846601218478 -104.9695224 39.7368723 -104.9700963 39.736882
-19494 10523 7469 0.0159566577035026 0.0159566577035026 -104.9883516 39.7086017 -104.9883525 39.7084582
-13814 4934 9200 0.0155640797101011 0.0155640797101011 -104.9993415 39.7423284 -104.9994716 39.7422305
-13008 8914 2891 0.0117402105605065 0.0117402105605065 -104.9904906 39.7730255 -104.9905111 39.7729211
-17570 10143 10144 0.0307556488479174 0.0307556488479174 -105.0097169 39.7209239 -105.0093573 39.7209238
-20841 10952 10940 0.18759449218266 0.18759449218266 -105.0323215 39.7622208 -105.0345162 39.7622208
-15726 7317 9449 0.0375532628709029 0.0375532628709029 -104.9558194 39.7180363 -104.9558247 39.7176986
-15904 8603 9697 0.00690416936559141 0.00690416936559141 -105.0285111 39.7222816 -105.0284331 39.7222976
-13877 4478 2804 0.135897648680331 0.135897648680331 -104.9451778 39.765712 -104.9452104 39.7669339
-18633 4044 4045 0.00275409212275412 0.00275409212275412 -105.0330924 39.7181593 -105.0331246 39.7181593
-15057 9477 6733 0.054468335249091 0.054468335249091 -104.9775705 39.7368798 -104.9782075 39.7368798
-15058 6733 9313 0.0446744870999848 0.0446744870999848 -104.9782075 39.7368798 -104.9787299 39.7368736
-13910 9228 3317 0.0850892170141282 0.0850892170141282 -104.9592628 39.7812194 -104.9602584 39.7812326
-12689 2057 8805 0.133235184271089 0.133235184271089 -104.9534081 39.7194172 -104.9534009 39.718219
-18656 6223 7657 0.27620827404325 0.27620827404325 -105.0445138 39.725796 -105.0445162 39.72828
-15858 9732 9739 0.0147062242308904 0.0147062242308904 -105.0415588 39.7301641 -105.0415695 39.7300321
-20843 10954 10751 0.181296524715589 0.181296524715589 -105.0254122 39.760199 -105.0253759 39.7585688
-16082 366 255 0.573997033805984 0.573997033805984 -104.9601224 39.7799975 -104.9534054 39.7800114
-16084 9817 9818 0.0154245817929875 0.0154245817929875 -104.9497096 39.7811391 -104.9498899 39.7811457
-16127 4555 9122 0.0381695434595099 0.0381695434595099 -105.0221186 39.7238843 -105.0222205 39.7242185
-14675 943 5941 0.178224321703034 0.178224321703034 -104.9700547 39.7320615 -104.9700474 39.7304587
-15285 8799 3187 0.00972670306222712 0.00972670306222712 -104.9464054 39.7113917 -104.946376 39.7114762
-15873 8879 8889 0.108518344615814 0.108518344615814 -105.0382757 39.7341411 -105.0393045 39.7347125
-15405 9585 9582 0.0323190665796029 0.0323190665796029 -105.0108295 39.7535903 -105.0104647 39.7536666
-16246 9859 7743 0.402195232762633 0.402195232762633 -104.9529627 39.685713 -104.952944 39.68933
-13026 1537 4265 0.200987668621859 0.200987668621859 -104.9869861 39.7765493 -104.9869736 39.7783568
-3749 3578 3579 0.097584814173116 0.097584814173116 -104.9452895 39.7544277 -104.944148 39.7544343
-3750 3579 848 0.0994883860112991 0.0994883860112991 -104.944148 39.7544343 -104.9429842 39.7544341
-3752 3580 3581 0.0190511917089631 0.0190511917089631 -104.9407092 39.754494 -104.9405163 39.7545798
-19488 10427 4703 0.0206936304458077 0.0206936304458077 -104.9883457 39.7095201 -104.9883469 39.709334
-20829 8443 10954 0.0118059106132393 0.0118059106132393 -105.0254023 39.7603049 -105.0254122 39.760199
-16351 7009 2285 0.0978474396198024 0.0978474396198024 -104.9317039 39.7618388 -104.9305592 39.7618327
-16382 9879 9771 0.00992783408407401 0.00992783408407401 -104.9716243 39.7032379 -104.9717383 39.7032546
-16432 9894 9895 0.0235353492080929 0.0235353492080929 -104.9716111 39.6985449 -104.9718554 39.6986422
-14329 9328 602 0.0664699646577648 0.0664699646577648 -104.9959868 39.7692435 -104.9952229 39.7691313
-20848 10950 10953 0.0184888911494772 0.0184888911494772 -105.0289678 39.7620075 -105.0291765 39.7620512
-13445 9078 9079 0.200451693111106 0.200451693111106 -104.9941364 39.7021826 -104.9930943 39.7037972
-16391 3033 9847 0.0236566168850551 0.0236566168850551 -104.9700513 39.702674 -104.9699755 39.7028786
-15437 9602 9603 0.109740104543279 0.109740104543279 -105.0014283 39.740268 -105.0027104 39.7402226
-18475 9005 4295 0.117455212214086 0.117455212214086 -105.0399025 39.7549798 -105.0399031 39.7539235
-19609 10585 10503 0.00693839845805758 0.00693839845805758 -104.9910787 39.7086267 -104.9911598 39.7086277
-16644 564 565 0.0167681949380125 0.0167681949380125 -104.9854426 39.7392155 -104.9854426 39.7390647
-18641 5875 7416 0.178910174745805 0.178910174745805 -105.0450642 39.7149556 -105.0450953 39.7165644
-16758 7565 10010 0.0537198584701325 0.0537198584701325 -104.9506273 39.6992608 -104.950646 39.6997437
-13557 9032 9033 0.185435393968361 0.185435393968361 -105.0131311 39.7236048 -105.0111765 39.722883
-19028 8995 7690 0.0430021373921601 0.0430021373921601 -104.9472908 39.7847471 -104.9475732 39.784427
-17062 10068 2247 0.0643618782275657 0.0643618782275657 -104.9616428 39.7328861 -104.9616491 39.7334649
-16833 593 9915 0.00807834974542274 0.00807834974542274 -104.9689126 39.70386 -104.9689488 39.7037929
-18614 4049 7410 0.176200842798068 0.176200842798068 -105.0355145 39.7181393 -105.0355064 39.7165547
-16902 74 7306 0.205595181095446 0.205595181095446 -104.9657864 39.7002174 -104.9657546 39.7020662
-17068 10069 675 0.181147813198563 0.181147813198563 -104.9616202 39.7399794 -104.961623 39.7416085
-17009 4847 10051 0.0109841519151342 0.0109841519151342 -105.0034718 39.7526101 -105.003564 39.7526789
-13581 9133 9134 0.0795179133195768 0.0795179133195768 -104.9958777 39.7048581 -104.9951647 39.7043993
-17207 9891 234 0.00951110757861507 0.00951110757861507 -104.9688482 39.696672 -104.9688514 39.6965865
-19644 10601 10602 0.00459389199037625 0.00459389199037625 -104.9879279 39.7066512 -104.9878742 39.7066509
-14887 7456 5693 0.103533596199028 0.103533596199028 -105.0324406 39.7076676 -105.0324406 39.7067365
-15073 9480 8706 0.0156808972883418 0.0156808972883418 -104.9406528 39.7656775 -104.9404758 39.7656404
-18617 9447 1314 0.0196279343381406 0.0196279343381406 -105.0354966 39.713551 -105.0354933 39.7133745
-19477 10520 10521 0.0112440070511006 0.0112440070511006 -104.9902917 39.7076531 -104.9902943 39.707552
-19479 1872 10522 0.0183337010143588 0.0183337010143588 -104.9900015 39.7093504 -104.9902158 39.7093529
-18629 9484 5862 0.00360275623818702 0.00360275623818702 -105.0330762 39.7149479 -105.0330764 39.7149803
-17406 3210 6122 0.199774981063921 0.199774981063921 -104.9645976 39.7110977 -104.9645867 39.7093011
-15450 9609 9610 0.118608570416781 0.118608570416781 -105.0003045 39.7431574 -105.000479 39.7442156
-14988 9309 9464 0.101172548296122 0.101172548296122 -104.9787417 39.7432641 -104.9775584 39.7432677
-15965 1443 7623 0.202446963416806 0.202446963416806 -105.0038795 39.7112064 -105.0062462 39.7112115
-13793 4819 8514 0.148483674564771 0.148483674564771 -105.0080831 39.7592475 -105.0068857 39.7602149
-3766 2339 3595 0.17591583054365 0.17591583054365 -104.9293022 39.7193963 -104.929286 39.7209783
-3767 3595 3596 0.243702533330372 0.243702533330372 -104.929286 39.7209783 -104.9293972 39.7231683
-15851 5596 9735 0.0497175089074512 0.0497175089074512 -105.0438933 39.7301146 -105.0444693 39.7300539
-15124 6515 226 0.0653425651240956 0.0653425651240956 -104.9407009 39.7803199 -104.940692 39.7797323
-15449 9608 9609 0.0645563810419252 0.0645563810419252 -104.9999385 39.7426496 -105.0003045 39.7431574
-13914 4840 9230 0.275162192340763 0.275162192340763 -104.9965817 39.7075224 -104.9961257 39.7050728
-13922 9137 9233 0.0899935621999505 0.0899935621999505 -104.9868714 39.7007074 -104.9861692 39.7001048
-3788 1148 1821 0.103455086525091 0.103455086525091 -104.9293749 39.7637905 -104.9293577 39.7647208
-18632 7408 4044 0.178025429971464 0.178025429971464 -105.0330817 39.7165583 -105.0330924 39.7181593
-15247 9542 8177 0.0166658349694615 0.0166658349694615 -104.936117 39.7051637 -104.9362135 39.7050335
-15460 9613 9614 0.039786363249444 0.039786363249444 -105.0004503 39.7442368 -105.0001215 39.74449
-15461 8882 9615 0.0277165465497567 0.0277165465497567 -105.0018196 39.7432597 -105.0015275 39.7433678
-15546 9646 9647 0.0122997635777285 0.0122997635777285 -104.9868344 39.726681 -104.98691 39.7265869
-15889 8978 1101 0.0278428503732722 0.0278428503732722 -105.0408265 39.7349435 -105.040518 39.7350236
-236 30 31 0.0623462807475453 0.0623462807475453 -104.9707346 39.6882416 -104.9701337 39.6879245
-239 246 247 0.10870569104286 0.10870569104286 -104.9683485 39.6870395 -104.9672584 39.6865375
-19602 10483 10583 0.0688347644552014 0.0688347644552014 -104.9902592 39.7100937 -104.9910639 39.7100946
-19497 7457 10525 0.0182919034833847 0.0182919034833847 -104.9883639 39.7075324 -104.9883652 39.7073679
-15292 9561 9562 0.0285639174620334 0.0285639174620334 -104.941269 39.7069549 -104.9409364 39.7069322
-16011 9781 9782 0.0666625832869129 0.0666625832869129 -104.9994018 39.6890498 -104.9992186 39.6896325
-204 216 217 0.0495486567174314 0.0495486567174314 -105.0105654 39.7229262 -105.0109346 39.7232696
-16105 9825 9826 0.769429574289864 0.769429574289864 -104.9535187 39.7801156 -104.9625227 39.7801333
-19504 10531 10532 0.00490376342058079 0.00490376342058079 -104.9883756 39.7060143 -104.9883759 39.7059702
-19505 10532 10533 0.0113536336982688 0.0113536336982688 -104.9883759 39.7059702 -104.9883745 39.7058681
-15983 4420 7372 0.10794760335784 0.10794760335784 -105.0299687 39.7111671 -105.0312304 39.7111869
-16336 6683 8026 0.0934572989494279 0.0934572989494279 -104.9499154 39.7618255 -104.9488251 39.7617626
-15146 8245 9501 0.259647287125597 0.259647287125597 -104.9495723 39.7819108 -104.9477699 39.7837907
-16378 2678 4127 0.105747053096561 0.105747053096561 -104.9524232 39.761844 -104.9511861 39.7618358
-15168 9509 3381 0.0515085102071127 0.0515085102071127 -105.0340019 39.7403161 -105.0346043 39.7403194
-14670 9413 5473 0.178785252044424 0.178785252044424 -104.9701307 39.740015 -104.9701135 39.7384072
-15438 9603 2287 0.0101078833454114 0.0101078833454114 -105.0027104 39.7402226 -105.0028286 39.7402211
-16618 7974 3673 0.0581937370992888 0.0581937370992888 -104.9775516 39.7469781 -104.9775423 39.7475014
-16393 9876 3281 0.0515999951055545 0.0515999951055545 -104.9705085 39.7029675 -104.9710667 39.7027917
-11613 742 743 0.188831137780044 0.188831137780044 -105.0322639 39.7634453 -105.0300547 39.7634496
-16792 6964 10013 0.15953431348719 0.15953431348719 -105.0105704 39.7464447 -105.0114923 39.7476921
-16830 9911 10017 0.00322492509560211 0.00322492509560211 -104.972319 39.7074031 -104.9722814 39.707401
-17016 10055 10056 0.150978646033743 0.150978646033743 -105.0169757 39.7532749 -105.0167598 39.7546225
-17201 10074 6392 0.100421160552702 0.100421160552702 -105.0207767 39.7466992 -105.0207714 39.7476023
-19702 10621 10622 0.0560876276790842 0.0560876276790842 -105.0051625 39.7337963 -105.0045066 39.7337938
-17391 10095 8785 0.114852910416621 0.114852910416621 -104.9842414 39.72728 -104.9836046 39.7263706
-18648 4053 10111 0.195636353938149 0.195636353938149 -105.0379043 39.7181459 -105.0379043 39.7199053
-17545 8264 8929 0.192238762103777 0.192238762103777 -104.9897645 39.7839357 -104.9903693 39.7822705
-19596 10507 10581 0.0688892384795374 0.0688892384795374 -104.9902528 39.7106611 -104.9910581 39.7106676
-18652 8072 7653 0.262512305989993 0.262512305989993 -105.040042 39.7306132 -105.0400098 39.7282525
-18119 4085 6030 0.181292795599691 0.181292795599691 -105.0106908 39.7838273 -105.0106854 39.7854577
-17647 8242 223 0.0953499590487046 0.0953499590487046 -104.9443373 39.7799663 -104.9432215 39.7799643
-17960 5194 10233 0.0515871143302905 0.0515871143302905 -104.9883782 39.7241223 -104.9883637 39.7236585
-17964 10236 10232 0.0350820368831285 0.0350820368831285 -104.9882388 39.7255396 -104.9882382 39.7252241
-17785 8986 8497 0.0646311177616063 0.0646311177616063 -105.0131588 39.7555744 -105.0139116 39.7556283
-17753 10173 8485 0.0489434224402369 0.0489434224402369 -104.9947299 39.745901 -104.995128 39.7455847
-11535 1543 1544 0.137939265537406 0.137939265537406 -105.0270328 39.7572752 -105.0270414 39.7560347
-17819 8676 10186 0.0370735665978641 0.0370735665978641 -105.000985 39.7632181 -105.0007327 39.7634893
-17777 6508 6993 0.160336610713707 0.160336610713707 -104.9298124 39.7801232 -104.9316377 39.7804571
-3801 3083 3195 0.200442064419022 0.200442064419022 -104.9803943 39.7129167 -104.9803836 39.7111141
-3802 3195 3622 0.204398520601987 0.204398520601987 -104.9803836 39.7111141 -104.980383 39.7092759
-3803 3622 1902 0.199020966616341 0.199020966616341 -104.980383 39.7092759 -104.9804345 39.7074865
-3804 1902 3624 0.19721596773449 0.19721596773449 -104.9804345 39.7074865 -104.9804286 39.7057129
-17851 10193 10194 0.0260169590696429 0.0260169590696429 -104.9775879 39.7757765 -104.9773559 39.775625
-12958 1630 1631 0.127437048321071 0.127437048321071 -105.0040598 39.7420982 -105.0033016 39.7411115
-18661 10206 7647 0.17872352996795 0.17872352996795 -105.0345139 39.726102 -105.0345838 39.7277084
-19942 10671 4953 0.0511372085610231 0.0511372085610231 -104.9957933 39.726791 -104.9951981 39.7268351
-12964 1770 1771 0.0893785434926153 0.0893785434926153 -105.0062914 39.746863 -105.0057764 39.7461635
-18602 7656 6222 0.275287629645573 0.275287629645573 -105.0432633 39.7282706 -105.04325 39.7257949
-18232 2550 6070 0.201831098039417 0.201831098039417 -105.0409813 39.787434 -105.0409894 39.7856189
-18761 10339 10340 0.0412859123428405 0.0412859123428405 -105.0047672 39.7397925 -105.0043791 39.7395716
-4425 950 4134 0.165887036500793 0.165887036500793 -104.9505701 39.7320992 -104.950553 39.733591
-4426 4134 4135 0.171020798065652 0.171020798065652 -104.950553 39.733591 -104.9505787 39.7351289
-4427 4135 4136 0.184950521487565 0.184950521487565 -104.9505787 39.7351289 -104.9505787 39.7367922
-18817 10355 8431 0.088262856016995 0.088262856016995 -105.015729 39.7431732 -105.0163799 39.7437893
-4447 4149 4150 0.111495530172709 0.111495530172709 -104.9607278 39.7209872 -104.9594242 39.720981
-4448 4150 4151 0.101644653962629 0.101644653962629 -104.9594242 39.720981 -104.9582358 39.7209729
-19603 10583 10496 0.00675773327585877 0.00675773327585877 -104.9910639 39.7100946 -104.9911429 39.7100947
-19855 10661 10662 0.203042057763788 0.203042057763788 -105.044594 39.7384771 -105.0445966 39.7366511
-20643 10879 10877 0.0314570447479651 0.0314570447479651 -105.0134384 39.762482 -105.0134384 39.7627649
-19158 8423 8388 0.0601966609853944 0.0601966609853944 -105.013871 39.7414246 -105.0138882 39.7419658
-19615 10587 10502 0.00686995556939521 0.00686995556939521 -104.9910769 39.7088041 -104.9911572 39.7088051
-12339 8656 2501 0.0156699758852849 0.0156699758852849 -105.0073545 39.7547272 -105.0073403 39.7545867
-19328 9895 10473 0.0277673159561869 0.0277673159561869 -104.9718554 39.6986422 -104.971721 39.6984149
-19490 10441 10447 0.0184697170100914 0.0184697170100914 -104.9883481 39.7091456 -104.9883492 39.7089795
-19492 10448 10463 0.00504831489789659 0.00504831489789659 -104.9883503 39.7088103 -104.9883506 39.7087649
-19428 10489 7287 0.156514421452779 0.156514421452779 -104.9833961 39.7033795 -104.9833604 39.7019722
-19286 563 9967 0.0537140867907163 0.0537140867907163 -104.9854438 39.7392378 -104.986072 39.7392385
-19621 10589 10590 0.0274773310120508 0.0274773310120508 -104.988288 39.70828 -104.9879668 39.708282
-19441 10492 10493 0.0201930874558464 0.0201930874558464 -104.991144 39.7108499 -104.9911447 39.7106683
-19789 9476 4873 0.191586478139089 0.191586478139089 -104.9724291 39.7368742 -104.9724077 39.7351513
-19805 2619 10411 0.177645225629424 0.177645225629424 -104.9969572 39.7225317 -104.9969604 39.7209341
-18409 10287 10288 0.0734556316276251 0.0734556316276251 -105.0292196 39.7613906 -105.0292173 39.7620512
-20191 462 10707 0.132640175005266 0.132640175005266 -104.9880253 39.7800584 -104.9886248 39.7811587
-14823 3606 9335 0.071748078170483 0.071748078170483 -105.0243187 39.7548283 -105.025158 39.7548266
-14824 9335 9402 0.00997675672475066 0.00997675672475066 -105.025158 39.7548266 -105.0252747 39.7548256
-14825 9402 8301 0.0653806855821323 0.0653806855821323 -105.0252747 39.7548256 -105.0260395 39.7548296
-14830 4022 8322 0.0483334251113916 0.0483334251113916 -105.0299425 39.7548206 -105.0305079 39.754821
-14832 5668 7026 0.0386007852757077 0.0386007852757077 -105.0310864 39.7548296 -105.0315379 39.7548347
-4468 4163 4164 0.0480674059146442 0.0480674059146442 -104.975216 39.7201302 -104.974654 39.7201321
-4469 4164 991 0.0502312521862823 0.0502312521862823 -104.974654 39.7201321 -104.9740667 39.720134
-14857 8907 9435 0.0508107102861791 0.0508107102861791 -105.0079847 39.7554777 -105.0075169 39.7557596
-14859 9436 9437 0.0520105887104481 0.0520105887104481 -105.0090881 39.7546132 -105.0094073 39.7550114
-15729 9448 9449 0.154385795199696 0.154385795199696 -104.9554224 39.7163451 -104.9558247 39.7176986
-18619 9447 9452 0.260663192513491 0.260663192513491 -105.0354966 39.713551 -105.0354984 39.7112068
-14936 5495 8700 0.014007087915999 0.014007087915999 -104.9407458 39.7383041 -104.9405826 39.7382932
-20590 2705 10795 0.0154885940353102 0.0154885940353102 -105.022918 39.7610959 -105.0227368 39.7610963
-14972 2754 7005 0.0961416158900631 0.0961416158900631 -104.9328183 39.7510492 -104.931694 39.751069
-15045 5118 4946 0.0490898990370342 0.0490898990370342 -104.9706897 39.7368921 -104.9712638 39.7368921
-15046 4946 7151 0.0490351349560296 0.0490351349560296 -104.9712638 39.7368921 -104.9718371 39.7368817
-15963 6397 4362 0.0791794536243071 0.0791794536243071 -105.0006291 39.7111959 -105.0015545 39.7112124
-15989 9452 4506 0.0512507321563124 0.0512507321563124 -105.0354984 39.7112068 -105.036097 39.7112265
-16056 308 4648 0.208884022844132 0.208884022844132 -105.0162105 39.7255543 -105.0186498 39.72565
-15158 9504 7749 0.203686953618576 0.203686953618576 -104.9383033 39.6874943 -104.9383055 39.6893261
-16076 8934 9417 0.0908088237702457 0.0908088237702457 -104.9901787 39.7746982 -104.9903058 39.7738874
-16106 9826 214 0.019707054216564 0.019707054216564 -104.9625227 39.7801333 -104.9627533 39.7801312
-19536 10547 10551 0.00289118198627037 0.00289118198627037 -104.9890392 39.7095279 -104.9890395 39.7095019
-16257 8751 9267 0.200818549492747 0.200818549492747 -104.9552399 39.6947809 -104.9552346 39.6965869
-16332 5124 7146 0.105923351259383 0.105923351259383 -104.9708846 39.7620022 -104.9721238 39.7620063
-3817 3633 3634 0.395318196729382 0.395318196729382 -104.9408419 39.7060696 -104.9444999 39.7082421
-16359 2326 5997 0.152345269926906 0.152345269926906 -104.9240294 39.7620162 -104.9258117 39.7620121
-5101 4522 4624 0.135948680255943 0.135948680255943 -105.0189635 39.7632145 -105.0189554 39.7644371
-18688 2602 1859 0.181461056809498 0.181461056809498 -105.0415146 39.7229572 -105.0415045 39.7213253
-16455 9910 8957 0.00642990572974513 0.00642990572974513 -104.9724845 39.7074076 -104.9724094 39.7074052
-16456 8957 9911 0.00773671564019088 0.00773671564019088 -104.9724094 39.7074052 -104.972319 39.7074031
-16715 132 1701 0.201952446468105 0.201952446468105 -104.9874659 39.6930068 -104.9875011 39.6911908
-17236 31 134 0.108163538194537 0.108163538194537 -104.9701337 39.6879245 -104.969078 39.6873895
-17237 134 246 0.0735610173824186 0.0735610173824186 -104.969078 39.6873895 -104.9683485 39.6870395
-17521 3940 6651 0.0163911525787958 0.0163911525787958 -105.000152 39.7400197 -104.9999603 39.7400202
-18097 10256 2169 0.0491222602233141 0.0491222602233141 -105.0141119 39.7874307 -105.0146868 39.7874303
-18207 8329 7847 0.200166859157176 0.200166859157176 -105.0363384 39.7621278 -105.036368 39.7603278
-18394 5586 2554 0.157693803770027 0.157693803770027 -105.0439435 39.7860953 -105.0433255 39.7874316
-18972 7756 3621 0.0947044796448553 0.0947044796448553 -104.9814659 39.7146886 -104.9803587 39.7146886
-19237 10458 10457 0.00406582159548868 0.00406582159548868 -104.9913293 39.7430187 -104.991294 39.7429942
-19229 10453 10454 0.0676096530689986 0.0676096530689986 -104.9908874 39.7414826 -104.9914445 39.7410511
-3858 3667 3668 0.0415319443079903 0.0415319443079903 -104.9746946 39.7474748 -104.9751801 39.7474876
-3859 3668 3669 0.0482985746708946 0.0482985746708946 -104.9751801 39.7474876 -104.9757447 39.7475025
-19322 2203 916 0.200210598103272 0.200210598103272 -104.9873753 39.7338548 -104.9874133 39.7320545
-15203 7160 9528 0.0514241954874698 0.0514241954874698 -105.0381214 39.7499794 -105.0387229 39.7499763
-19690 10616 10397 0.0495068144600769 0.0495068144600769 -105.0112484 39.7498792 -105.011825 39.749838
-19692 10617 10398 0.0503641661598134 0.0503641661598134 -105.0116614 39.749343 -105.0118932 39.7497594
-19879 5198 10672 0.124230342536198 0.124230342536198 -104.9957805 39.7241162 -104.9957912 39.722999
-19967 10686 9720 0.110372440140764 0.110372440140764 -105.0340046 39.7384634 -105.0334112 39.7375819
-19969 9505 1931 0.205435822074821 0.205435822074821 -105.0305094 39.7403332 -105.030496 39.7384857
-19971 9711 1933 0.17400772229687 0.17400772229687 -105.0322666 39.7399826 -105.0316836 39.7384833
-19972 1933 10306 0.208946577187585 0.208946577187585 -105.0316836 39.7384833 -105.0316869 39.7366042
-3875 3685 3686 0.109844105363612 0.109844105363612 -104.9647396 39.7469477 -104.9634548 39.7469475
-17510 10120 10119 0.158859506306984 0.158859506306984 -105.0136579 39.737681 -105.0129247 39.7389937
-676 669 670 0.102292085856109 0.102292085856109 -104.9684201 39.7416394 -104.9672238 39.7416291
-3893 3696 3697 0.200080946502272 0.200080946502272 -104.961742 39.6947762 -104.9617212 39.6929769
-3894 3697 3698 0.204567969900071 0.204567969900071 -104.9617212 39.6929769 -104.9617334 39.6911372
-3896 3699 3700 0.197370997762066 0.197370997762066 -104.9617151 39.6892951 -104.9617155 39.6875201
-20255 5749 10704 0.00800649085379587 0.00800649085379587 -105.0445791 39.7729494 -105.0445781 39.7730214
-20320 10739 10740 0.00883881362478868 0.00883881362478868 -105.0234882 39.7589777 -105.0235185 39.7589017
-15207 1113 9529 0.0508930389416975 0.0508930389416975 -105.0404745 39.7499577 -105.0410698 39.7499582
-15251 9544 9536 0.0327374869648338 0.0327374869648338 -104.9360582 39.7058553 -104.9358729 39.7061129
-15379 8806 2642 0.105298522418053 0.105298522418053 -104.953405 39.7180338 -104.9521739 39.7180386
-18635 7865 1846 0.175356787311383 0.175356787311383 -105.0331005 39.7197556 -105.0330898 39.7213326
-15485 9612 9616 0.0684703360070514 0.0684703360070514 -105.0005861 39.7432358 -105.0011333 39.7436854
-15516 9635 3736 0.0550573183727317 0.0550573183727317 -105.0021668 39.7384727 -105.0028107 39.7384712
-19480 10522 10511 0.00442285695753415 0.00442285695753415 -104.9902158 39.7093529 -104.9902675 39.7093534
-15574 9660 9464 0.175338544663329 0.175338544663329 -104.9775409 39.7416909 -104.9775584 39.7432677
-15598 7585 2003 0.0946559616738872 0.0946559616738872 -104.9360971 39.758301 -104.9349898 39.7583076
-15618 9679 9680 0.101799223111765 0.101799223111765 -104.918758 39.7583757 -104.9175671 39.7583757
-15640 9666 9667 0.00676039634627663 0.00676039634627663 -104.9412242 39.7582683 -104.941147 39.7582815
-15683 8023 7680 0.104281288426574 0.104281288426574 -104.9485858 39.7178178 -104.9473666 39.7178126
-15704 7666 2329 0.100028756753634 0.100028756753634 -104.9245961 39.7178332 -104.9234266 39.7178332
-15755 3356 2760 0.0982705119459115 0.0982705119459115 -104.9339641 39.7162382 -104.9328153 39.7162508
-1110 1126 1127 0.154576986104079 0.154576986104079 -105.0405383 39.7639496 -105.0404877 39.7653392
-2347 2338 2265 0.095819812257735 0.095819812257735 -104.9316115 39.7193956 -104.9304912 39.7194002
-12348 8664 8665 0.0099818469883938 0.0099818469883938 -105.0123703 39.7528644 -105.0124819 39.7528908
-20799 10928 6772 0.00617692305613739 0.00617692305613739 -105.0267992 39.7609759 -105.0268634 39.7610014
-1176 1191 1192 0.0992884317332444 0.0992884317332444 -104.9578631 39.7271192 -104.9567021 39.7271202
-20800 6772 10949 0.00765667567444528 0.00765667567444528 -105.0268634 39.7610014 -105.0269444 39.7610308
-441 439 440 0.131394781189403 0.131394781189403 -104.9691656 39.702165 -104.969326 39.7033402
-2798 2750 2752 0.210544806502819 0.210544806502819 -104.9326406 39.738234 -104.9326896 39.7401271
-20666 10888 10889 0.0790962373353106 0.0790962373353106 -105.0396012 39.7648471 -105.0403834 39.764467
-19518 6854 10540 0.00704975834948009 0.00704975834948009 -104.9885677 39.7102439 -104.9885677 39.7101805
-17074 10070 7842 0.137917824166884 0.137917824166884 -104.9615992 39.7507111 -104.9616094 39.7519514
-320 63 64 0.0374489603047296 0.0374489603047296 -105.0203119 39.7717265 -105.01999 39.771498
-62 68 69 0.0422209546479027 0.0422209546479027 -104.9680761 39.7002293 -104.9675826 39.7002312
-12003 5507 7080 0.146738996592278 0.146738996592278 -104.9821628 39.7616959 -104.9809567 39.762635
-109 116 117 0.143188450690636 0.143188450690636 -105.023457 39.730286 -105.0251312 39.7303064
-18456 10296 7020 0.00773615182989558 0.00773615182989558 -105.0316008 39.7464538 -105.0315108 39.746461
-134 142 143 0.102085903671524 0.102085903671524 -104.9980358 39.6930742 -104.9992288 39.6930874
-18414 7445 8376 0.0994737732965907 0.0994737732965907 -105.0369668 39.7543695 -105.0358032 39.7543633
-153 162 163 0.0752431334530451 0.0752431334530451 -105.0166181 39.6931468 -105.0174975 39.6931459
-18417 10289 8332 0.15046170994065 0.15046170994065 -105.0398915 39.7607667 -105.0398789 39.7621198
-323 206 207 0.0117249781899754 0.0117249781899754 -104.9566644 39.7445134 -104.9565607 39.7445824
-222 233 234 0.0133914034588106 0.0133914034588106 -104.968695 39.6965912 -104.9688514 39.6965865
-269 279 280 0.111130387977042 0.111130387977042 -104.987002 39.7789431 -104.9858487 39.7794049
-304 312 313 0.0760674046765663 0.0760674046765663 -104.971535 39.780386 -104.970735 39.780686
-378 380 381 0.042583144928967 0.042583144928967 -105.03278 39.74748 -105.0323033 39.747591
-334 335 336 0.0838277836552233 0.0838277836552233 -104.9400719 39.7824771 -104.9390909 39.7824749
-18422 6881 8361 0.201914074104345 0.201914074104345 -105.0410645 39.7657635 -105.0410832 39.7639477
-367 368 369 0.0822344709508681 0.0822344709508681 -104.9589875 39.7795994 -104.9593952 39.7789295
-541 535 536 0.186883681615866 0.186883681615866 -105.0155504 39.7561618 -105.0151149 39.7545148
-11516 528 591 0.200155681159152 0.200155681159152 -105.0322618 39.7598749 -105.0346033 39.7598894
-15254 9538 9539 0.0173547475022314 0.0173547475022314 -104.9352077 39.7057044 -104.9351084 39.7058405
-659 649 650 0.011039314445329 0.011039314445329 -104.9873881 39.7417114 -104.9872612 39.7417297
-11464 701 5 0.465980985000995 0.465980985000995 -104.9318804 39.7801737 -104.9373334 39.780183
-16702 9996 9629 0.03889405892702 0.03889405892702 -104.9999838 39.7464987 -105.0003179 39.7462613
-12966 1824 1825 0.0102076592436785 0.0102076592436785 -105.0068707 39.7455494 -105.0069351 39.7456267
-18427 7848 2983 0.204332357907837 0.204332357907837 -105.0387174 39.7603215 -105.038723 39.7584839
-16420 3283 3331 0.0144926793767328 0.0144926793767328 -104.9691419 39.7020399 -104.9693109 39.7020309
-794 799 800 0.10010177351148 0.10010177351148 -104.9293286 39.7528556 -104.9281577 39.7528638
-11695 896 1005 0.0164907467236235 0.0164907467236235 -105.0012741 39.7533936 -105.0014074 39.7532864
-18433 6878 8357 0.204690873329425 0.204690873329425 -105.0387418 39.7657978 -105.0387283 39.763957
-863 876 877 0.10476487069157 0.10476487069157 -104.968419 39.7645054 -104.9671933 39.7645034
-883 898 899 0.104753841122432 0.104753841122432 -104.9450302 39.764473 -104.9438047 39.7644833
-884 899 864 0.0807039229442354 0.0807039229442354 -104.9438047 39.7644833 -104.9428605 39.7644833
-927 941 942 0.0494985310502231 0.0494985310502231 -104.9712147 39.7320508 -104.9706365 39.7320717
-16705 9999 9629 0.0289087737479417 0.0289087737479417 -105.0005573 39.7460777 -105.0003179 39.7462613
-17026 3489 3490 0.0719959563000755 0.0719959563000755 -105.0251569 39.7553551 -105.0243147 39.7553581
-18682 3408 3539 0.176214327588196 0.176214327588196 -105.0367215 39.7181427 -105.0367081 39.716558
-18442 8299 10294 0.012207810422513 0.012207810422513 -105.0260753 39.7595725 -105.026081 39.7596822
-1076 1092 1093 0.17117547982738 0.17117547982738 -105.0405917 39.7314737 -105.040582 39.7330131
-15790 2105 2106 0.167962867985551 0.167962867985551 -105.0249129 39.7371906 -105.0232102 39.7379438
-1100 1116 1117 0.101443140583253 0.101443140583253 -105.0404808 39.7530145 -105.0404813 39.7539268
-1122 1138 1139 0.131688298285365 0.131688298285365 -105.040403 39.7820828 -105.0404053 39.7832671
-2171 2170 2171 0.00661609813602913 0.00661609813602913 -105.0146867 39.7884025 -105.0146867 39.788462
-19434 10489 10109 0.051734430819511 0.051734430819511 -104.9833961 39.7033795 -104.9827914 39.7033844
-16849 9890 3358 0.0252874452199061 0.0252874452199061 -104.9695728 39.7019278 -104.9695281 39.7021526
-16171 7732 6631 0.170999473020786 0.170999473020786 -104.9763378 39.6893855 -104.9763643 39.6909232
-1145 1163 1164 0.10638131618854 0.10638131618854 -104.9609775 39.7632277 -104.959733 39.7632393
-2233 2234 2235 0.107325767093377 0.107325767093377 -104.937292 39.7328682 -104.936037 39.7328568
-16734 10004 5726 0.044310348629928 0.044310348629928 -104.9539532 39.7012069 -104.9536931 39.7008623
-19574 7473 10571 0.0063271995041771 0.0063271995041771 -104.9892894 39.708464 -104.98929 39.7084071
-1286 1311 1312 0.0523154141859772 0.0523154141859772 -105.0336852 39.7133658 -105.0342968 39.7133689
-18191 5793 6053 0.200818759010255 0.200818759010255 -105.0281574 39.7874261 -105.0281511 39.7856201
-12198 2296 2417 0.0275462737865406 0.0275462737865406 -105.0235583 39.7404384 -105.0238493 39.7405447
-1335 1360 142 0.202746839209369 0.202746839209369 -104.9980058 39.6948974 -104.9980358 39.6930742
-1357 1386 1387 0.204107383179499 0.204107383179499 -105.0038695 39.7121354 -105.0062556 39.7121476
-1384 1411 1412 0.132938489820146 0.132938489820146 -105.0079981 39.7813836 -105.0095538 39.781386
-1385 1412 1413 0.131234196689436 0.131234196689436 -105.0095538 39.781386 -105.0110892 39.7813605
-16835 10018 10019 0.00449297276091322 0.00449297276091322 -104.9700592 39.7032461 -104.9700539 39.7032059
-1459 1481 1482 0.0508965659313026 0.0508965659313026 -104.9901596 39.6948019 -104.9907544 39.6948087
-533 397 398 0.176353791704941 0.176353791704941 -105.0131625 39.7564763 -105.0152017 39.756236
-1483 1503 1504 0.10868886965133 0.10868886965133 -105.0297284 39.6949225 -105.0309987 39.6949159
-17373 3540 4236 0.201662628453229 0.201662628453229 -104.9786521 39.6984298 -104.9786279 39.6966163
-1505 47 1524 0.198761508803526 0.198761508803526 -104.974563 39.7002186 -104.9745686 39.6984311
-16510 9930 8899 0.028599893322584 0.028599893322584 -105.0053557 39.7432318 -105.0050563 39.7433465
-19459 10506 10507 0.0718336837694179 0.0718336837694179 -104.9910563 39.7108489 -104.9902528 39.7106611
-16953 10037 10038 0.0209544596641532 0.0209544596641532 -105.0167413 39.7559349 -105.0168024 39.7557524
-1573 1601 1602 0.162785877407261 0.162785877407261 -105.013927 39.6982179 -105.0138578 39.6967549
-1622 1650 1651 0.0538894092860146 0.0538894092860146 -105.0156911 39.6895077 -105.0156831 39.6890231
-1645 1672 1673 0.130835848827306 0.130835848827306 -105.0096516 39.7680424 -105.0111824 39.7680416
-1667 1692 1693 0.050088176287895 0.050088176287895 -105.0410724 39.7676025 -105.0416583 39.7675928
-1694 1718 1719 0.0873988319892153 0.0873988319892153 -105.0097345 39.6908484 -105.0107559 39.690855
-1719 1738 1456 0.0837159374419676 0.0837159374419676 -105.0067562 39.6912909 -105.0077346 39.6912909
-1750 1769 1772 0.200154711336709 0.200154711336709 -104.9769412 39.7092561 -104.9769267 39.7074561
-1772 1790 1791 0.0243124544354895 0.0243124544354895 -104.9810045 39.694799 -104.9807204 39.6948034
-12976 2866 2867 0.0166252705046511 0.0166252705046511 -104.9893706 39.7368276 -104.9894148 39.7369732
-1804 1817 1818 0.0911976784518576 0.0911976784518576 -105.02745 39.7281152 -105.028093 39.7274609
-11690 836 837 0.0102634119335747 0.0102634119335747 -105.00135 39.7536153 -105.0012532 39.7536699
-1854 1868 1869 0.0969507802969199 0.0969507802969199 -104.9899631 39.7147612 -104.9899974 39.7138897
-18890 6123 3212 0.200920158955186 0.200920158955186 -104.963455 39.709291 -104.9634444 39.7110979
-13010 2892 2956 0.114118910643116 0.114118910643116 -104.9912536 39.7714803 -104.9919912 39.7706248
-1900 1913 1087 0.0825040978126541 0.0825040978126541 -104.9733715 39.707477 -104.9724071 39.7074855
-11531 1232 1233 0.136649469135664 0.136649469135664 -105.028183 39.7572752 -105.0281917 39.7560463
-3101 3032 3035 0.0672642720958143 0.0672642720958143 -104.9476453 39.759056 -104.9468584 39.7590562
-16771 7290 7418 0.177711115784665 0.177711115784665 -104.9546694 39.7017867 -104.9529866 39.7027237
-2076 2079 2080 0.00320241388686281 0.00320241388686281 -104.9536567 39.7606977 -104.9536567 39.7607265
-20267 7552 10721 0.0076233085405271 0.0076233085405271 -105.0451456 39.7730203 -105.0450564 39.7730205
-2099 2101 2102 0.0617614998037007 0.0617614998037007 -104.9269881 39.7795759 -104.9269671 39.7801311
-2178 2178 2179 0.133414657501795 0.133414657501795 -105.01465 39.7765593 -105.0146727 39.777759
-20703 10902 10893 0.0137674602252582 0.0137674602252582 -105.0400838 39.7654891 -105.0400814 39.7656129
-18186 6059 4074 0.199239203137735 0.199239203137735 -105.0327949 39.7856263 -105.0327922 39.7838345
-2271 2271 2274 0.132133232701666 0.132133232701666 -104.9305276 39.7280436 -104.9305243 39.7292319
-2297 2295 2044 0.383761223862801 0.383761223862801 -104.9885127 39.7658379 -104.9843229 39.7670786
-2323 2315 2316 0.330214470935474 0.330214470935474 -104.9499657 39.7059775 -104.9472534 39.7038645
-12347 8663 8664 0.0257805479932851 0.0257805479932851 -105.0123961 39.7526334 -105.0123703 39.7528644
-2391 2374 2380 0.0606466728888714 0.0606466728888714 -104.954137 39.710527 -104.9540512 39.7099856
-17368 6112 1906 0.199361824625973 0.199361824625973 -104.9786441 39.7092737 -104.9786392 39.7074808
-2461 2451 2452 0.13645541326163 0.13645541326163 -105.0064532 39.7705389 -105.0080496 39.7705191
-2505 2485 2486 0.101289554682704 0.101289554682704 -105.0158508 39.7789597 -105.0170359 39.7789761
-2559 1939 371 0.224011572183979 0.224011572183979 -105.0273088 39.7386104 -105.0298176 39.7380301
-19236 5960 10458 0.00935537130778975 0.00935537130778975 -104.9914093 39.7430761 -104.9913293 39.7430187
-20487 10833 10834 0.0146368261080025 0.0146368261080025 -105.0248283 39.7608934 -105.0246593 39.7608722
-17152 4823 1911 0.202007841348173 0.202007841348173 -104.9751483 39.7056678 -104.9751493 39.7074845
-15939 9756 1179 0.0444859500137061 0.0444859500137061 -104.9962839 39.7001148 -104.9967738 39.7002489
-3746 3576 3577 0.10159835449875 0.10159835449875 -104.9488635 39.7544629 -104.9476756 39.7544343
-3791 2772 3612 0.203936793927218 0.203936793927218 -104.9293492 39.7674126 -104.929332 39.7692466
-3792 3612 3613 0.107839344756473 0.107839344756473 -104.929332 39.7692466 -104.9293234 39.7702164
-2787 2741 2742 0.198829139661659 0.198829139661659 -104.9558357 39.6911246 -104.9558447 39.6893365
-15945 9761 9759 0.0391671909462338 0.0391671909462338 -104.997609 39.7046403 -104.9977092 39.704984
-2831 2780 2781 0.0528298940705434 0.0528298940705434 -104.9727319 39.7669657 -104.9721138 39.7669682
-19569 10568 10569 0.0878244193957737 0.0878244193957737 -104.9895159 39.7084088 -104.9895239 39.707619
-2880 2824 2825 0.0974259616864288 0.0974259616864288 -105.0158414 39.7801872 -105.0169815 39.7801864
-2902 2845 2846 0.808353421265405 0.808353421265405 -104.9305098 39.6893437 -104.9307139 39.6820757
-17512 10121 10120 0.0252089130538733 0.0252089130538733 -105.0137025 39.7374569 -105.0136579 39.737681
-18124 7936 10267 0.178836603986638 0.178836603986638 -105.0106854 39.7894536 -105.010676 39.7910619
-17213 3773 3774 0.00322537908461904 0.00322537908461904 -104.9774877 39.7022422 -104.9774885 39.7022712
-4010 3797 3798 0.0496772635509661 0.0496772635509661 -104.9723623 39.729076 -104.9729432 39.7290745
-20618 10829 10811 0.00710063413803192 0.00710063413803192 -105.0230688 39.7597292 -105.022998 39.7596958
-4056 3836 542 0.0542189434563804 0.0542189434563804 -105.042838 39.751186 -105.0428359 39.7516736
-16431 9893 9894 0.0272038809490012 0.0272038809490012 -104.9715317 39.698308 -104.9716111 39.6985449
-4079 3854 3855 0.107248137237127 0.107248137237127 -105.0427103 39.7245555 -105.0427146 39.72552
-4105 3874 1534 0.0983074346464974 0.0983074346464974 -104.944148 39.7565195 -104.944148 39.7574036
-4130 3892 3893 0.176077888960898 0.176077888960898 -104.9634634 39.7416479 -104.9634575 39.7432314
-3140 2139 3065 0.10712340392365 0.10712340392365 -104.9269888 39.7601749 -104.9257357 39.7601617
-14117 3945 3946 0.0482205385893945 0.0482205385893945 -104.9450651 39.7484271 -104.9449549 39.7480018
-19586 7471 10577 0.00638268050836497 0.00638268050836497 -104.9888183 39.708461 -104.9888187 39.7084036
-18680 1852 3185 0.180570803347185 0.180570803347185 -105.0367134 39.7213291 -105.0367216 39.7197052
-4350 4077 4078 0.0772510249569655 0.0772510249569655 -104.9901174 39.7840727 -104.9910214 39.7840807
-4372 4094 4095 0.0479505811649138 0.0479505811649138 -105.0169973 39.7839311 -105.0175565 39.7838951
-19591 10579 10498 0.00651919101450697 0.00651919101450697 -104.9910674 39.7097471 -104.9911436 39.7097481
-3306 3214 3215 0.0471079000187924 0.0471079000187924 -104.9622425 39.711098 -104.9616918 39.7111011
-3328 3230 3231 0.132391302135547 0.132391302135547 -105.0330468 39.7719096 -105.0345947 39.7719562
-19626 10513 10592 0.0688709903222838 0.0688709903222838 -104.9902701 39.7089743 -104.9910751 39.7089846
-3398 3295 3296 0.0155356242142858 0.0155356242142858 -104.9407838 39.7038199 -104.9406022 39.7038199
-19230 10454 10455 0.0118389292817843 0.0118389292817843 -104.9914445 39.7410511 -104.9915438 39.7409769
-20315 10736 10737 0.159656650881409 0.159656650881409 -105.0233746 39.7593437 -105.0250397 39.7599942
-18079 6355 10255 0.0661057533214939 0.0661057533214939 -105.0105212 39.7255767 -105.0097514 39.7256305
-3483 3361 3362 0.201966263198038 0.201966263198038 -104.9339125 39.7546702 -104.9338998 39.7564865
-4636 4280 4281 0.102934268159845 0.102934268159845 -104.97885 39.7703237 -104.9797003 39.7709793
-16647 9969 5457 0.0123677166569097 0.0123677166569097 -104.9848573 39.7385435 -104.9848604 39.7384323
-16903 7306 3263 0.199172661453728 0.199172661453728 -104.9657546 39.7020662 -104.9657587 39.7038574
-19484 6853 10408 0.00698312522129821 0.00698312522129821 -104.9883411 39.7102427 -104.9883415 39.7101799
-19234 10420 10457 0.0372086096742178 0.0372086096742178 -104.9910563 39.7427139 -104.991294 39.7429942
-19820 10648 3951 0.0619393226511354 0.0619393226511354 -105.0009089 39.7300077 -105.0001846 39.7300077
-20630 10847 10760 0.0141138073557462 0.0141138073557462 -105.0229893 39.7608356 -105.0229928 39.7607087
-4772 4383 4384 0.143358020264065 0.143358020264065 -104.9788891 39.7554321 -104.9800877 39.7545304
-4773 4384 2688 0.1475761156103 0.1475761156103 -104.9800877 39.7545304 -104.9813184 39.7535997
-19822 10648 9252 0.121899654224586 0.121899654224586 -105.0009089 39.7300077 -105.0008928 39.7289115
-17019 10054 10057 0.00913318334502991 0.00913318334502991 -105.0167692 39.7546606 -105.0168578 39.7546147
-19885 7405 10416 0.200852838610439 0.200852838610439 -104.9957689 39.7166071 -104.9957778 39.7148008
-18259 7775 9395 0.0553851197391209 0.0553851197391209 -105.0259595 39.7688086 -105.0253115 39.7688045
-4859 3019 4445 0.0478223869342914 0.0478223869342914 -104.9768843 39.7557372 -104.9772635 39.7560534
-20466 10753 10817 0.0682187434932547 0.0682187434932547 -105.0250779 39.761939 -105.0250744 39.7613255
-19877 10671 6237 0.122419389056498 0.122419389056498 -104.9957933 39.726791 -104.9957805 39.7256901
-19878 6237 5198 0.175009695046305 0.175009695046305 -104.9957805 39.7256901 -104.9957805 39.7241162
-18518 10303 10304 0.0239997630410034 0.0239997630410034 -105.0374978 39.7440972 -105.0372296 39.7441609
-4902 3446 4478 0.091694374773876 0.091694374773876 -104.9462506 39.7657138 -104.9451778 39.765712
-19966 9509 10686 0.206010969949978 0.206010969949978 -105.0340019 39.7403161 -105.0340046 39.7384634
-19567 10565 7474 0.0766585847384353 0.0766585847384353 -104.9895118 39.7091548 -104.9895159 39.7084654
-14126 3925 419 0.00806156942685905 0.00806156942685905 -104.9455321 39.7450146 -104.94552 39.7449427
-3723 3558 2895 0.0536764980359733 0.0536764980359733 -104.9739683 39.7546244 -104.9733531 39.7545278
-3795 3615 3616 0.170284963942666 0.170284963942666 -104.9804114 39.6945392 -104.9804184 39.6930078
-20220 9234 6625 0.292333005384616 0.292333005384616 -104.9818516 39.6960736 -104.9797753 39.6939857
-14111 3623 3659 0.11789221451213 0.11789221451213 -104.9448677 39.7457412 -104.9461809 39.7460646
-3861 3670 3671 0.0217628748782358 0.0217628748782358 -104.976114 39.7474946 -104.9763685 39.7474986
-17030 3607 3490 0.0408681491476405 0.0408681491476405 -105.0243214 39.7549906 -105.0243147 39.7553581
-15948 9763 9764 0.10655007034609 0.10655007034609 -104.9987026 39.7066196 -104.9984431 39.7056824
-17086 504 3946 0.0996587778769702 0.0996587778769702 -104.9458317 39.7485924 -104.9449549 39.7480018
-20151 8263 8850 0.190160460059289 0.190160460059289 -104.9903301 39.7785853 -104.9897894 39.7769264
-17097 3721 2249 0.175979650666522 0.175979650666522 -104.9604142 39.7350474 -104.9604253 39.7334648
-3955 2834 3751 0.211238280484951 0.211238280484951 -105.0263725 39.7802711 -105.0263639 39.7821708
-4024 3809 3810 0.0544429181408591 0.0544429181408591 -104.9835982 39.729065 -104.9842348 39.7290698
-20310 10731 10732 0.0936889543382987 0.0936889543382987 -105.0247591 39.7586373 -105.0237565 39.7589777
-4047 2945 3827 0.152861408667566 0.152861408667566 -104.9251435 39.7065053 -104.9269304 39.7065091
-20433 10792 10793 0.0378257433013547 0.0378257433013547 -105.0232345 39.7595229 -105.023633 39.7596708
-4179 3929 3930 0.138165941069034 0.138165941069034 -105.0010599 39.7656602 -105.0005956 39.7668504
-18286 6824 3986 0.13302202745972 0.13302202745972 -105.0315024 39.7699322 -105.0299471 39.7698868
-20336 10747 10740 0.0348319951594156 0.0348319951594156 -105.0235111 39.7585885 -105.0235185 39.7589017
-5524 4925 4926 0.124694107926995 0.124694107926995 -104.9945592 39.735263 -104.9952734 39.7362407
-4269 4013 4014 0.135510024687662 0.135510024687662 -105.0299387 39.7439361 -105.0299558 39.7451547
-20344 10743 10749 0.0091415179335324 0.0091415179335324 -105.0236223 39.7590808 -105.0236241 39.7589986
-17114 3959 582 0.020964645373322 0.020964645373322 -104.957513 39.7479253 -104.9577579 39.7479349
-14696 4947 5018 0.17692836025714 0.17692836025714 -104.9712638 39.7384111 -104.9712466 39.7400022
-4361 4085 4086 0.0439979039927832 0.0439979039927832 -105.0106908 39.7838273 -105.0112057 39.7838279
-20443 10800 10797 0.0184411605361648 0.0184411605361648 -105.0218874 39.7616318 -105.0218716 39.7614664
-4436 1838 4143 0.106284873443858 0.106284873443858 -104.9874805 39.7209443 -104.9862384 39.7209146
-4437 4143 4144 0.0526768909687255 0.0526768909687255 -104.9862384 39.7209146 -104.9856225 39.7209124
-4456 4154 4155 0.103915690256788 0.103915690256788 -104.9497951 39.7209768 -104.9485801 39.7209768
-4457 4155 4156 0.103695542240372 0.103695542240372 -104.9485801 39.7209768 -104.9473677 39.7209707
-4476 4169 727 0.0512571810638195 0.0512571810638195 -104.9706014 39.7200889 -104.9700021 39.7200889
-4477 727 4170 0.0478531500173987 0.0478531500173987 -104.9700021 39.7200889 -104.9694426 39.7200889
-5818 5133 5134 0.102145042918239 0.102145042918239 -104.9395046 39.7345681 -104.9384246 39.7341756
-5912 5193 5194 0.024083404138801 0.024083404138801 -104.9880966 39.7241225 -104.9883782 39.7241223
-20491 10835 10836 0.00603667118796414 0.00603667118796414 -105.0188076 39.7585187 -105.0188782 39.7585174
-15862 9742 9737 0.126226895338302 0.126226895338302 -105.0409204 39.7309501 -105.0423956 39.7309893
-5931 5209 5210 0.693210396806986 0.693210396806986 -105.0451039 39.7239541 -105.0532075 39.7240888
-16531 9230 9133 0.0319382574203035 0.0319382574203035 -104.9961257 39.7050728 -104.9958777 39.7048581
-4627 1616 4276 0.105592921129571 0.105592921129571 -104.973572 39.7730583 -104.9744288 39.7737425
-20628 10756 10873 0.0143552752086545 0.0143552752086545 -105.0229933 39.7612883 -105.0229935 39.7611592
-20696 10910 4524 0.00942218117840877 0.00942218117840877 -105.0250813 39.7631194 -105.0250845 39.7632041
-18136 6043 10263 0.201163508503498 0.201163508503498 -105.0198962 39.7856251 -105.0198897 39.7874342
-4695 4331 808 0.139418137507802 0.139418137507802 -104.9769247 39.7519986 -104.9769333 39.7532524
-4698 4332 4333 0.161361651356291 0.161361651356291 -104.9771769 39.7840807 -104.9771941 39.7855318
-6050 4013 5293 0.134925136075026 0.134925136075026 -105.0299387 39.7439361 -105.0315166 39.7439551
-18073 6354 6355 0.0448917156923931 0.0448917156923931 -105.0110405 39.7255178 -105.0105212 39.7255767
-4744 4362 4363 0.107836470275357 0.107836470275357 -105.0015545 39.7112124 -105.0015367 39.7102427
-4765 4378 4379 0.183602249353544 0.183602249353544 -105.0263037 39.6939714 -105.0284495 39.6939582
-20634 10876 10877 0.0283642470117633 0.0283642470117633 -105.0137702 39.7627689 -105.0134384 39.7627649
-18170 5801 6061 0.198751914750946 0.198751914750946 -105.0339455 39.7874133 -105.0339562 39.7856259
-4835 4430 4431 0.145138896688942 0.145138896688942 -104.9874697 39.7174659 -104.9891666 39.7174681
-4862 4446 4447 0.0474277072247471 0.0474277072247471 -104.9781251 39.7567372 -104.9785209 39.7570361
-18509 9355 10301 0.00184585558113331 0.00184585558113331 -105.0410672 39.7487502 -105.0410673 39.7487336
-6260 174 1704 0.202197382513594 0.202197382513594 -105.0250478 39.6931151 -105.0250424 39.6912967
-4958 4516 4517 0.0491656169358357 0.0491656169358357 -105.012785 39.7632228 -105.0133602 39.7632209
-4983 4534 4535 0.0998419246339525 0.0998419246339525 -105.0227761 39.719354 -105.0227761 39.7202519
-19921 10413 7869 0.176021720356684 0.176021720356684 -104.9980711 39.720935 -104.9980684 39.719352
-5064 4589 4590 0.0154062452430768 0.0154062452430768 -104.9408036 39.744932 -104.9406235 39.7449365
-5086 4607 4608 0.119245405144689 0.119245405144689 -104.9747635 39.7448376 -104.9761582 39.7448434
-5111 4630 4631 0.139104857432868 0.139104857432868 -105.0189411 39.7753479 -105.0189415 39.7765989
-20788 5700 10925 0.00572872738726038 0.00572872738726038 -105.035764 39.7622008 -105.035831 39.7621995
-3915 2811 3713 0.0582509515897595 0.0582509515897595 -104.9921559 39.7183774 -104.9928366 39.7183943
-3917 3714 3715 0.0974014881112134 0.0974014881112134 -104.9940184 39.7183972 -104.995157 39.7184133
-20790 10947 8358 0.00657767070033128 0.00657767070033128 -105.0393977 39.7638972 -105.039401 39.7639563
-5221 4709 4710 0.122314419308335 0.122314419308335 -104.970235 39.782186 -104.970235 39.783286
-5243 875 4463 0.138237545752752 0.138237545752752 -104.9696488 39.7645085 -104.9696481 39.7657517
-18318 7366 7442 0.0771284931905011 0.0771284931905011 -105.0267891 39.7634203 -105.0275322 39.7638138
-5315 4770 4771 0.0488277782804066 0.0488277782804066 -104.97698 39.7224773 -104.9764091 39.7224805
-5336 2332 4786 0.0940516760159238 0.0940516760159238 -104.9238853 39.7231807 -104.9227856 39.7231786
-5388 4825 97 0.199068637854245 0.199068637854245 -104.9446221 39.7019764 -104.9442146 39.7002138
-17092 4597 9466 0.17373336205738 0.17373336205738 -104.9603758 39.7447782 -104.9603865 39.7432158
-5437 4857 4858 0.0515825872815672 0.0515825872815672 -104.9822782 39.7351518 -104.981675 39.7351569
-5483 4893 4894 0.046048954675788 0.046048954675788 -104.9456205 39.7351177 -104.945082 39.7351139
-5531 4931 4932 0.018084718359645 0.018084718359645 -104.9988399 39.7414088 -104.9989204 39.7415592
-6850 4421 5860 0.102045619820979 0.102045619820979 -105.0299945 39.7149702 -105.0311875 39.7149636
-6892 5894 5697 0.0947186956045014 0.0947186956045014 -105.0109744 39.7074034 -105.010983 39.7065516
-5585 1550 4269 0.196429076934968 0.196429076934968 -104.9801772 39.7765679 -104.980164 39.7783344
-3934 3732 3733 0.121703755972038 0.121703755972038 -105.0028207 39.7326047 -105.0028152 39.7336992
-3936 3734 3735 0.176733819603511 0.176733819603511 -105.0028252 39.7352849 -105.0028198 39.7368743
-5609 4988 4989 0.201206746854351 0.201206746854351 -104.9850453 39.7165375 -104.9850107 39.7147282
-6912 5908 1999 0.0940717232862836 0.0940717232862836 -104.9361363 39.7492673 -104.9350364 39.749243
-5705 932 2217 0.184097423724296 0.184097423724296 -104.9764282 39.7320463 -104.9764407 39.7337019
-5753 5081 5082 0.054538974474369 0.054538974474369 -104.9962546 39.7083175 -104.9957853 39.7079855
-5760 5088 1840 0.180073513278395 0.180073513278395 -104.9908341 39.719328 -104.9908489 39.7209474
-5785 2782 5108 0.132016677253578 0.132016677253578 -104.9708506 39.7669659 -104.9708358 39.7681531
-18555 7706 2990 0.19846083928125 0.19846083928125 -105.0434221 39.7567041 -105.0434248 39.7584889
-18352 3981 7040 0.199881951179414 0.199881951179414 -105.0299345 39.7669593 -105.0322731 39.7669531
-5885 5176 130 0.21663995111842 0.21663995111842 -105.0117034 39.6967417 -105.010718 39.694947
-14774 5924 3807 0.151382817559166 0.151382817559166 -104.9817146 39.7304273 -104.9817238 39.7290659
-17792 8508 6179 0.109482524773714 0.109482524773714 -104.9873985 39.757951 -104.9873985 39.7569664
-5955 5228 5229 0.0697529045378229 0.0697529045378229 -104.9565077 39.7110219 -104.9556923 39.7110153
-5977 1247 4556 0.132973381558885 0.132973381558885 -105.0205098 39.764433 -105.0220655 39.7644258
-20546 10755 2961 0.0206004250178228 0.0206004250178228 -105.0213448 39.7585398 -105.021139 39.7584434
-6055 3817 5296 0.100909929183789 0.100909929183789 -105.0369844 39.7439438 -105.0381646 39.7439521
-6076 172 1729 0.256606586411632 0.256606586411632 -105.022228 39.6931165 -105.02224 39.6908088
-6122 5349 4219 0.225702767955147 0.225702767955147 -104.9274952 39.692974 -104.928034 39.690987
-6172 5388 1958 0.131227861001577 0.131227861001577 -104.926934 39.709287 -104.9269593 39.708107
-20555 10853 10028 0.0104514157116194 0.0104514157116194 -105.015713 39.7584957 -105.015835 39.7585019
-6194 3028 5401 0.132618210317087 0.132618210317087 -104.9659386 39.7594982 -104.9659547 39.7606908
-18508 10301 9355 0.00184585558113331 0.00184585558113331 -105.0410673 39.7487336 -105.0410672 39.7487502
-6264 1941 5456 0.107892445399082 0.107892445399082 -104.9873753 39.7384618 -104.9861136 39.7384486
-6308 2067 5487 0.0160838439354733 0.0160838439354733 -104.9529898 39.7383752 -104.952802 39.738367
-6329 5502 5503 0.0544715490547718 0.0544715490547718 -104.9799824 39.7600071 -104.9804313 39.7603548
-20506 10834 10840 0.00711722931583218 0.00711722931583218 -105.0246593 39.7608722 -105.0245771 39.760862
-7656 5012 3346 0.092992178848436 0.092992178848436 -104.9582526 39.7728926 -104.9571645 39.7728928
-20397 10758 10759 0.00383951895664098 0.00383951895664098 -105.0243956 39.7608382 -105.0243509 39.7608348
-19830 10649 10650 0.203375176962632 0.203375176962632 -105.0422444 39.7384617 -105.0422095 39.7366329
-18258 6760 7775 0.140758515508444 0.140758515508444 -105.0276064 39.7688141 -105.0259595 39.7688086
-6495 3928 5619 0.089155871041537 0.089155871041537 -105.0017582 39.7648586 -105.0018152 39.7656592
-6517 963 5279 0.100667730658223 0.100667730658223 -104.9838018 39.7183372 -104.9826249 39.7183267
-7856 6469 6470 0.161667024351427 0.161667024351427 -104.9948277 39.7755094 -104.9967193 39.7755268
-14751 929 5933 0.176747364710656 0.176747364710656 -104.9781467 39.7320382 -104.9781588 39.7304487
-6673 3933 5622 0.0990284128542063 0.0990284128542063 -105.0006222 39.7730028 -105.0017809 39.7730094
-14716 5687 933 0.176256990051995 0.176256990051995 -104.9758385 39.7304575 -104.9758289 39.7320426
-20475 10824 10825 0.0252031422821514 0.0252031422821514 -105.0208891 39.7583505 -105.0205943 39.7583468
-6694 5571 5749 0.0485856779635153 0.0485856779635153 -105.0440106 39.7729501 -105.0445791 39.7729494
-6695 5749 5750 0.0408085368300434 0.0408085368300434 -105.0445791 39.7729494 -105.0450566 39.7729489
-3964 1865 3758 0.048211663801055 0.048211663801055 -104.9901799 39.6966614 -104.9907434 39.6966619
-3965 3758 3759 0.0426076537269238 0.0426076537269238 -104.9907434 39.6966619 -104.9912414 39.6966624
-11217 443 444 0.0957304857475106 0.0957304857475106 -104.932837 39.701282 -104.933949 39.701378
-6741 5790 5791 0.0533877005590012 0.0533877005590012 -105.0252043 39.7874266 -105.0258291 39.7874305
-6764 5808 5809 0.0505689128275476 0.0505689128275476 -104.9878972 39.7431235 -104.9873953 39.7433641
-6788 5828 5829 0.0547714293876055 0.0547714293876055 -104.9629082 39.6911444 -104.9622681 39.6911405
-18151 6044 10264 0.200762745716695 0.200762745716695 -105.0210575 39.7856258 -105.0210534 39.7874313
-6809 365 4683 0.0475091694046952 0.0475091694046952 -104.9756534 39.6915619 -104.9751813 39.691337
-6832 5852 1635 0.119748990570207 0.119748990570207 -105.014337 39.714787 -105.015737 39.714787
-18333 7291 3229 0.082496713136994 0.082496713136994 -105.0324737 39.7711548 -105.0324789 39.7718967
-6884 4667 1334 0.0975135676636165 0.0975135676636165 -105.011015 39.7139241 -105.0110016 39.7130472
-6901 5900 2304 0.084800082911027 0.084800082911027 -105.0127248 39.6967417 -105.0127167 39.6959791
-6971 5951 5952 0.0992113626066069 0.0992113626066069 -104.9292349 39.7310503 -104.9280748 39.7310598
-14748 6733 4864 0.192735673325504 0.192735673325504 -104.9782075 39.7368798 -104.9781817 39.7351466
-18279 6738 6739 0.202843884763896 0.202843884763896 -105.0386585 39.7802009 -105.0386693 39.7783767
-7077 898 4479 0.137748361044457 0.137748361044457 -104.9450302 39.764473 -104.945032 39.7657118
-18284 6793 6794 0.0655358337845971 0.0655358337845971 -105.0330596 39.769961 -105.0322928 39.76996
-7099 5645 4359 0.0906469204279695 0.0906469204279695 -104.9452967 39.7557043 -104.9453012 39.7565195
-7124 6037 6038 0.0494419955897028 0.0494419955897028 -105.0158387 39.7856226 -105.0164173 39.7856269
-7168 6071 6072 0.0522594599242274 0.0522594599242274 -105.0415553 39.7856202 -105.0421669 39.7856198
-11649 8349 7711 0.138715670988872 0.138715670988872 -105.0244311 39.7572827 -105.0244311 39.7560352
-11989 8046 6574 0.143315424684023 0.143315424684023 -104.9840288 39.7575763 -104.9828432 39.7584876
-11652 4542 1283 0.131430485325992 0.131430485325992 -105.0220625 39.7578568 -105.0205326 39.7577392
-17217 1908 6114 0.200603968094547 0.200603968094547 -104.9774775 39.7074592 -104.9775313 39.7092628
-20549 10805 10854 0.0404087571222208 0.0404087571222208 -105.0159721 39.7585081 -105.0159697 39.7588715
-11385 8240 8241 0.317652248043028 0.317652248043028 -104.949291 39.7799729 -104.9455738 39.7799622
-15924 9072 9753 0.0703936306326387 0.0703936306326387 -105.0172266 39.7293225 -105.0172454 39.7299554
-18551 9428 7705 0.2040983825575 0.2040983825575 -105.0422446 39.7548692 -105.0422469 39.7567047
-20556 10028 10805 0.0117396717425925 0.0117396717425925 -105.015835 39.7585019 -105.0159721 39.7585081
-20452 10807 10808 0.0757678652544946 0.0757678652544946 -105.0219538 39.7619476 -105.0228402 39.7619433
-7529 6285 2831 0.200979085137746 0.200979085137746 -105.0228094 39.7784186 -105.0227922 39.780226
-15928 9754 5382 0.011733427647939 0.011733427647939 -105.0172883 39.7338911 -105.0174251 39.7338829
-7553 4092 6302 0.0803403744103832 0.0803403744103832 -105.0158347 39.7839964 -105.015828 39.7832739
-7580 6315 3820 0.130703255177956 0.130703255177956 -105.0085636 39.7055461 -105.009791 39.7062461
-7677 1716 6365 0.197561364927668 0.197561364927668 -105.0442424 39.6912702 -105.0442509 39.6894935
-7751 5773 6410 0.160605281527339 0.160605281527339 -104.96707 39.7894676 -104.9686008 39.7903058
-18359 7774 7775 0.0541753575171131 0.0541753575171131 -105.0259637 39.7692958 -105.0259595 39.7688086
-7777 6426 2486 0.134234515445665 0.134234515445665 -105.0170359 39.7777689 -105.0170359 39.7789761
-12252 122 8617 0.0393889261650165 0.0393889261650165 -105.0080327 39.7574052 -105.0083585 39.7576557
-7883 6494 6495 0.00940457999056201 0.00940457999056201 -104.9672196 39.746075 -104.9671096 39.746075
-7884 6495 5423 0.0969372989858353 0.0969372989858353 -104.9671096 39.746075 -104.9659758 39.7460698
-3980 3771 3772 0.0481390459121498 0.0481390459121498 -104.9439848 39.7291098 -104.9445477 39.7291131
-3981 3772 3777 0.0470016129182315 0.0470016129182315 -104.9445477 39.7291131 -104.9450973 39.7291163
-7927 1795 6524 0.13760350708633 0.13760350708633 -104.9792579 39.6947744 -104.9782122 39.6938342
-8001 6561 6562 0.0546858550544455 0.0546858550544455 -104.9862601 39.7241317 -104.9856207 39.7241273
-11445 8257 385 0.474417191747682 0.474417191747682 -105.0155286 39.7835973 -105.009982 39.7834091
-8048 6593 6594 0.0289242599655845 0.0289242599655845 -105.0369834 39.7329675 -105.0373216 39.7329718
-18526 9154 9352 0.0531084744773735 0.0531084744773735 -105.0338562 39.7492256 -105.0336669 39.7487707
-8069 6605 6606 1.2681000346061 1.2681000346061 -104.9246358 39.778404 -104.9098059 39.7780011
-8092 4244 6622 0.082630423756929 0.082630423756929 -104.9827699 39.6966096 -104.9821284 39.6960541
-8093 6622 6623 0.0749027437652235 0.0749027437652235 -104.9821284 39.6960541 -104.9815624 39.6955402
-3996 3787 3788 0.0979026300528609 0.0979026300528609 -104.9590433 39.7291134 -104.9601881 39.7291071
-3997 3788 3789 0.0995935295086316 0.0995935295086316 -104.9601881 39.7291071 -104.9613527 39.7291055
-9386 7325 7326 0.0119980817003928 0.0119980817003928 -104.9541227 39.7800179 -104.954122 39.7801258
-20477 10789 10826 0.0103983863250137 0.0103983863250137 -105.0223762 39.7591046 -105.0223089 39.7591825
-20507 10840 10823 0.00612377712997262 0.00612377712997262 -105.0245771 39.760862 -105.0245064 39.7608531
-8262 841 6717 0.175943907281508 0.175943907281508 -104.9425503 39.7162314 -104.9425532 39.7146491
-9533 7395 7396 0.139422525474238 0.139422525474238 -105.0331 39.7535942 -105.0330742 39.7548479
-20405 10779 8354 0.0261167106000956 0.0261167106000956 -105.02337 39.7605759 -105.0236698 39.7606212
-8335 6764 6765 0.0503863905918892 0.0503863905918892 -105.0276005 39.7707095 -105.0275931 39.7711626
-8336 6765 6766 0.0491492877930629 0.0491492877930629 -105.0275931 39.7711626 -105.0275892 39.7716046
-4013 983 3800 0.100500044528257 0.100500044528257 -104.9740784 39.7290693 -104.9752536 39.7290708
-4014 3800 3801 0.0985249152645202 0.0985249152645202 -104.9752536 39.7290708 -104.9764057 39.7290681
-15231 8248 8334 0.0146425177596963 0.0146425177596963 -104.9245969 39.6962239 -104.9244842 39.6961248
-8409 3830 6807 0.0888447463890759 0.0888447463890759 -104.9241221 39.7061949 -104.9241221 39.7053959
-18321 6063 2543 0.201974991797574 0.201974991797574 -105.0363465 39.7856148 -105.0363411 39.7874312
-8457 6832 1495 0.201208565152389 0.201208565152389 -105.0402255 39.6967584 -105.0402341 39.6949489
-19836 2624 5204 0.178927982846839 0.178927982846839 -105.0008976 39.7225155 -105.000925 39.7241245
-18379 8493 8494 0.0504160144523199 0.0504160144523199 -105.0258941 39.7702117 -105.0258959 39.7706651
-8503 6860 6861 0.0162922756173271 0.0162922756173271 -104.9499587 39.714645 -104.9497683 39.7146491
-8527 3425 6874 0.0494311548712974 0.0494311548712974 -105.034629 39.7657398 -105.0351985 39.7658172
-8599 1237 4811 0.0968243021950299 0.0968243021950299 -105.0123583 39.7765593 -105.0134913 39.7765593
-8699 1327 6954 0.11293333226081 0.11293333226081 -105.0452398 39.7129907 -105.045038 39.711987
-8743 6978 6843 0.0844431261667327 0.0844431261667327 -105.040895 39.7112397 -105.0408778 39.7104804
-8770 6990 6991 0.0486520030390688 0.0486520030390688 -104.931754 39.771293 -104.9317465 39.7717305
-8791 7006 4358 0.202474203830337 0.202474203830337 -104.9316943 39.7546764 -104.9317184 39.7564972
-8792 4358 7007 0.00688683462760985 0.00688683462760985 -104.9317184 39.7564972 -104.9317157 39.7565591
-8840 7032 6092 0.0997655880788332 0.0997655880788332 -105.032262 39.7603311 -105.0322556 39.7612283
-12243 8612 8613 0.138493887289201 0.138493887289201 -105.0007767 39.7499711 -104.9996308 39.7508515
-8862 2493 2840 0.128352303826166 0.128352303826166 -105.0314566 39.7791188 -105.0314566 39.7802731
-8889 7059 4436 0.0844445583973766 0.0844445583973766 -104.9500388 39.7020179 -104.9500303 39.7012585
-15879 8770 8763 0.0140298928163018 0.0140298928163018 -105.0445575 39.7355437 -105.0447184 39.7355684
-12248 5788 8274 0.146502988080446 0.146502988080446 -104.9971819 39.7527381 -104.9959856 39.7536815
-20224 10712 8757 0.0605456526720602 0.0605456526720602 -104.941312 39.6942105 -104.9413115 39.694755
-15789 9625 2105 0.0133775626084498 0.0133775626084498 -105.0249286 39.7370709 -105.0249129 39.7371906
-9093 4150 2344 0.174578433496429 0.174578433496429 -104.9594242 39.720981 -104.9594135 39.719411
-12934 8900 8688 0.0533584685274483 0.0533584685274483 -105.0027294 39.7457477 -105.0030556 39.7453386
-18558 10316 10317 0.318647498327865 0.318647498327865 -105.0343233 39.7828561 -105.03063 39.7832519
-9165 7197 7198 0.272798906116362 0.272798906116362 -104.9405457 39.6929325 -104.9373575 39.6929534
-9189 7209 3616 0.0495666126691076 0.0495666126691076 -104.9809977 39.6930099 -104.9804184 39.6930078
-10453 3743 5856 0.10095556193443 0.10095556193443 -104.9874858 39.7156689 -104.9875046 39.7147611
-20231 10714 10715 0.0286157939247338 0.0286157939247338 -104.9409313 39.6936604 -104.9412314 39.693774
-20392 10774 10770 0.00608971066273246 0.00608971066273246 -105.0243795 39.760698 -105.0244499 39.7607064
-9337 4780 1523 0.0520500965787765 0.0520500965787765 -104.9751815 39.7020519 -104.9745731 39.702049
-20017 8044 6572 0.144143863155146 0.144143863155146 -104.9831794 39.7569094 -104.981987 39.757826
-20561 10856 10798 0.00573758430075899 0.00573758430075899 -105.0218184 39.7619476 -105.0218855 39.7619462
-10672 7485 7454 0.0961864249467466 0.0961864249467466 -105.0275311 39.708526 -105.0275397 39.707661
-15863 9737 9743 0.0881669372882309 0.0881669372882309 -105.0423956 39.7309893 -105.0434068 39.731144
-9436 7346 4173 0.192934476657366 0.192934476657366 -104.9667331 39.7183519 -104.966736 39.720087
-10721 7452 5690 0.129238470693044 0.129238470693044 -105.0420537 39.7080307 -105.0420279 39.7068686
-20510 638 10782 0.00926383363589588 0.00926383363589588 -105.0180723 39.7583468 -105.0179661 39.7583302
-18479 9039 9040 0.136726032574097 0.136726032574097 -105.0398975 39.7511951 -105.0398922 39.7499655
-9591 7412 5066 0.050234753132255 0.050234753132255 -105.0379016 39.716558 -105.0384889 39.7165547
-9612 2128 5998 0.154063403679123 0.154063403679123 -104.9275725 39.7628734 -104.9257702 39.7628567
-16186 7721 5815 0.197248711738883 0.197248711738883 -104.9845556 39.6894094 -104.9845543 39.6911833
-9637 1423 7186 0.128478917444104 0.128478917444104 -105.0369066 39.7820848 -105.0369189 39.7832402
-11449 8259 8260 0.319737139262779 0.319737139262779 -104.9757153 39.7797326 -104.9794547 39.7798315
-9690 1895 7457 0.0666302144465139 0.0666302144465139 -104.9875851 39.7075228 -104.9883639 39.7075324
-9691 7457 7458 0.0198488245240688 0.0198488245240688 -104.9883639 39.7075324 -104.9885959 39.7075353
-19476 10519 10520 0.0516997558936505 0.0516997558936505 -104.9902831 39.708118 -104.9902917 39.7076531
-9736 7494 5544 0.102560827713484 0.102560827713484 -105.0416791 39.7511831 -105.0416664 39.7521054
-16038 9802 9796 0.0179822727083053 0.0179822727083053 -105.0123441 39.6891881 -105.0121361 39.6892112
-11790 6564 8037 0.143771757250665 0.143771757250665 -104.9784697 39.7551079 -104.9796416 39.7541805
-9810 7528 7529 0.208257062216787 0.208257062216787 -104.9281699 39.7546826 -104.9282316 39.7565549
-9836 7542 7543 0.0265476903097887 0.0265476903097887 -105.0449552 39.7669613 -105.0449615 39.7672
-18631 9484 7408 0.179068927816078 0.179068927816078 -105.0330762 39.7149479 -105.0330817 39.7165583
-15241 9537 9539 0.0227628365288052 0.0227628365288052 -104.935374 39.7058529 -104.9351084 39.7058405
-20526 1286 10810 0.0112823826001832 0.0112823826001832 -105.020542 39.7581637 -105.0204422 39.7580973
-9968 7619 7620 0.0778364486506147 0.0778364486506147 -104.939234 39.787086 -104.939234 39.787786
-9969 7620 7621 0.111522724623373 0.111522724623373 -104.939234 39.787786 -104.939134 39.788786
-9988 7625 1491 0.204666735578584 0.204666735578584 -105.0061725 39.696731 -105.0061812 39.6948904
-10072 7660 2775 0.203041970554709 0.203041970554709 -104.9246105 39.7656064 -104.9245856 39.7674323
-10073 2775 6897 0.203220599619524 0.203220599619524 -104.9245856 39.7674323 -104.9246113 39.7692598
-10091 7671 690 0.200329217944331 0.200329217944331 -104.9246387 39.7401205 -104.9246436 39.7419221
-10115 2354 4156 0.173430880829093 0.173430880829093 -104.947365 39.719411 -104.9473677 39.7209707
-10138 3577 5644 0.141664156461633 0.141664156461633 -104.9476756 39.7544343 -104.9476672 39.7557083
-10164 7702 7703 0.0486413772868685 0.0486413772868685 -105.0393233 39.756708 -105.0398923 39.7567045
-10187 7030 7715 0.0498024158316235 0.0498024158316235 -105.0322599 39.7566691 -105.0328425 39.7566691
-12249 8274 8295 0.153451254229228 0.153451254229228 -104.9959856 39.7536815 -104.9947185 39.754659
-11642 1281 8347 0.0589263897659084 0.0589263897659084 -105.0205312 39.7553029 -105.0198419 39.7552988
-10281 7757 2638 0.20261361621015 0.20261361621015 -105.0151648 39.7202486 -105.015182 39.7220707
-12251 8616 122 0.0306511482720316 0.0306511482720316 -105.0077835 39.757207 -105.0080327 39.7574052
-10351 5524 6462 0.155650660428743 0.155650660428743 -105.0392946 39.7738629 -105.0392949 39.7752627
-11777 5360 8407 0.147060404896327 0.147060404896327 -104.9803323 39.7509836 -104.9815533 39.750052
-20362 10734 9209 0.0303997458302742 0.0303997458302742 -105.0220514 39.7585674 -105.0216966 39.7585487
-10404 4224 7568 0.0462000499013743 0.0462000499013743 -104.9869346 39.7873956 -104.9863939 39.7873956
-10427 5696 6320 0.173275054190131 0.173275054190131 -105.0371184 39.7071789 -105.0371184 39.7056206
-16041 9802 9797 0.0106947269448384 0.0106947269448384 -105.0123441 39.6891881 -105.0122561 39.6891198
-10504 1036 7842 0.0544400914304572 0.0544400914304572 -104.9622462 39.751954 -104.9616094 39.7519514
-12047 8526 8527 0.0840721683590618 0.0840721683590618 -105.0049596 39.7505226 -105.0054168 39.751192
-10550 4923 5368 0.0856922507743825 0.0856922507743825 -104.9929606 39.7331034 -104.9929409 39.7338739
-16085 9818 9819 0.0412898984205639 0.0412898984205639 -104.9498899 39.7811457 -104.950362 39.7810666
-10600 7873 7874 0.202540822887829 0.202540822887829 -104.9558976 39.7801127 -104.9558736 39.7819341
-10623 7886 1192 0.167316235534945 0.167316235534945 -104.9566946 39.7256155 -104.9567021 39.7271202
-20558 10845 2957 0.00878460299692283 0.00878460299692283 -105.0187438 39.7583413 -105.0187431 39.7584203
-10644 7563 7901 0.105394463133352 0.105394463133352 -104.9922506 39.7545528 -104.9931346 39.7552135
-12237 1599 8609 0.00546433627657245 0.00546433627657245 -105.0021858 39.7415267 -105.0022412 39.7415022
-20564 10825 1287 0.00477901915260098 0.00477901915260098 -105.0205943 39.7583468 -105.0205384 39.7583461
-10749 6942 7958 0.162394709841225 0.162394709841225 -104.9677319 39.7819277 -104.967835 39.783386
-10796 7983 947 0.174677658409185 0.174677658409185 -104.9540572 39.7305236 -104.9540658 39.7320945
-10817 6492 4607 0.147058520431446 0.147058520431446 -104.9747749 39.7461601 -104.9747635 39.7448376
-12476 5450 5427 0.050269770055972 0.050269770055972 -104.9704932 39.6929632 -104.9699057 39.6929673
-10839 6220 8004 0.052907543789053 0.052907543789053 -104.9752801 39.7395432 -104.9752839 39.740019
-15731 7157 8801 0.0199400844261404 0.0199400844261404 -104.9592821 39.716079 -104.9590492 39.7160869
-16956 10040 9425 0.0116537581995054 0.0116537581995054 -105.0167064 39.7549204 -105.0167051 39.7548156
-10942 4686 4956 0.099446723287275 0.099446723287275 -104.9940692 39.730515 -104.9952321 39.7305115
-16188 7203 1784 0.197361998677517 0.197361998677517 -104.9845476 39.6930151 -104.9845583 39.69479
-10964 6721 4791 0.136892276030183 0.136892276030183 -105.0112289 39.7310568 -105.0128297 39.7310587
-10986 5402 3133 0.105232928623448 0.105232928623448 -104.9659547 39.7607434 -104.9647236 39.7607393
-20369 10733 10746 0.00402873670536954 0.00402873670536954 -105.0236546 39.7589766 -105.0236226 39.75895
-12735 8822 7751 0.202267643963295 0.202267643963295 -104.9371703 39.6875009 -104.9371553 39.6893199
-16205 7728 5823 0.195806305910918 0.195806305910918 -104.9798585 39.6893971 -104.9798455 39.691158
-15885 9619 8879 0.0100154912435563 0.0100154912435563 -105.0382355 39.7340565 -105.0382757 39.7341411
-16189 1784 4247 0.203808666270494 0.203808666270494 -104.9845583 39.69479 -104.984534 39.6966228
-11109 8035 807 0.0159273560245565 0.0159273560245565 -104.9781265 39.7531137 -104.9781222 39.7532569
-11132 8133 6270 0.051417429454822 0.051417429454822 -104.9615993 39.7482178 -104.960998 39.748227
-11156 2087 2654 0.0953557861022671 0.0953557861022671 -104.9530315 39.7837193 -104.9519157 39.7837325
-11157 2654 4115 0.0506170186006763 0.0506170186006763 -104.9519157 39.7837325 -104.9513234 39.7837391
-11208 8161 8162 0.355822290917686 0.355822290917686 -104.9406062 39.7114203 -104.936452 39.711255
-11220 8169 106 0.241259609778708 0.241259609778708 -104.928834 39.700221 -104.931654 39.700221
-11240 8178 8182 0.0195790567337129 0.0195790567337129 -104.9340806 39.7042496 -104.9340007 39.7044146
-20821 8330 10923 0.00839528658401215 0.00839528658401215 -105.0382057 39.7621211 -105.0382061 39.7620456
-17791 3305 8508 0.0362477709828647 0.0362477709828647 -104.9874361 39.7582757 -104.9873985 39.757951
-11322 8214 5950 0.203024250253409 0.203024250253409 -104.9304515 39.7292344 -104.9304356 39.7310602
-13061 8944 8945 0.0479106655937031 0.0479106655937031 -104.9951643 39.7677183 -104.9946559 39.7678998
-11349 1754 4801 0.0245317247967943 0.0245317247967943 -105.0124896 39.7620198 -105.0127766 39.7620198
-11390 8244 8245 0.0389791405679458 0.0389791405679458 -104.9498727 39.781647 -104.9495723 39.7819108
-17817 9286 10185 0.00969626713044654 0.00969626713044654 -105.0165836 39.7450617 -105.0166938 39.7450411
-11462 8270 701 0.039999373678842 0.039999373678842 -104.9314164 39.7801263 -104.9318804 39.7801737
-11492 8281 8282 0.00503511807894305 0.00503511807894305 -104.9929142 39.7513421 -104.9928753 39.7513081
-11538 8302 8303 0.0107298944611382 0.0107298944611382 -105.0266827 39.760929 -105.0265595 39.7609475
-11571 7713 8322 0.206137749537799 0.206137749537799 -105.0304918 39.7566748 -105.0305079 39.754821
-11573 1766 7715 0.157141019260281 0.157141019260281 -105.0334284 39.7553296 -105.0328425 39.7566691
-13237 9010 4325 0.222509982407309 0.222509982407309 -105.0324492 39.7058187 -105.0350499 39.7058517
-11632 1278 4529 0.134276517370514 0.134276517370514 -105.0205102 39.7524035 -105.0220809 39.7524035
-11724 8374 8375 0.133513247237079 0.133513247237079 -105.0357895 39.7499869 -105.0357821 39.7511876
-11797 8414 4446 0.0913151320718964 0.0913151320718964 -104.9779515 39.7575475 -104.9781251 39.7567372
-11798 4446 6565 0.148651456771305 0.148651456771305 -104.9781251 39.7567372 -104.9793644 39.7557994
-11799 6565 8038 0.145022863674794 0.145022863674794 -104.9793644 39.7557994 -104.9805458 39.7548634
-13411 4426 9064 0.0342337858603608 0.0342337858603608 -104.998467 39.7666069 -104.9980982 39.766727
-11882 8457 1807 0.101184879886606 0.101184879886606 -105.0067213 39.7517064 -105.0073479 39.7524784
-13518 7635 7602 0.0983630321096794 0.0983630321096794 -105.025114 39.7275076 -105.025114 39.7283922
-11995 8048 6576 0.143165005086162 0.143165005086162 -104.9849005 39.7582519 -104.9837118 39.7591589
-12062 8532 3932 0.283100338690813 0.283100338690813 -104.9548313 39.7460446 -104.9574881 39.7475642
-12064 8532 3745 0.0315839509500456 0.0315839509500456 -104.9548313 39.7460446 -104.9546644 39.7457912
-12065 3745 8533 0.0402006397458181 0.0402006397458181 -104.9546644 39.7457912 -104.9542138 39.7458945
-16198 1788 6622 0.140253824514813 0.140253824514813 -104.9821522 39.6947929 -104.9821284 39.6960541
-12143 2334 7677 0.0942814693046897 0.0942814693046897 -104.9238826 39.7256356 -104.924985 39.7256294
-13771 2561 9189 0.0689861433647756 0.0689861433647756 -104.9942282 39.6920823 -104.9938171 39.6915486
-18571 10322 10326 0.0103554459054315 0.0103554459054315 -105.0341731 39.7804672 -105.0340524 39.7804589
-15556 9654 9655 0.107168580692288 0.107168580692288 -104.9768244 39.7184001 -104.9773908 39.7192598
-12220 8596 8597 0.100597506592905 0.100597506592905 -105.007127 39.7436106 -105.0075587 39.7444522
-12284 8235 7279 0.114584410389232 0.114584410389232 -105.002653 39.7588064 -105.0017875 39.7595933
-12290 8634 8488 0.146216431524827 0.146216431524827 -104.9972254 39.7453524 -104.9959984 39.7462684
-15445 9605 9606 0.0107985098434616 0.0107985098434616 -105.000722 39.7440195 -105.0007281 39.7441165
-12402 8686 2352 0.174110261708509 0.174110261708509 -104.9497874 39.7178534 -104.9497951 39.7194192
-12403 2352 4154 0.17319721774215 0.17319721774215 -104.9497951 39.7194192 -104.9497951 39.7209768
-12445 8705 902 0.277961591263562 0.277961591263562 -104.9404928 39.7619574 -104.9404687 39.7644571
-16201 7209 5822 0.204832695484964 0.204832695484964 -104.9809977 39.6930099 -104.9810031 39.6911678
-14071 3116 6673 0.099476803467174 0.099476803467174 -104.9350959 39.7113475 -104.9362583 39.7113747
-12563 729 7060 0.0981255480039199 0.0981255480039199 -104.9511904 39.6947719 -104.9500436 39.6947813
-12670 8793 5460 0.173942223750684 0.173942223750684 -104.9823009 39.7368732 -104.9823009 39.7384375
-12698 8808 8810 0.00713796130621387 0.00713796130621387 -104.9500032 39.7176723 -104.9500622 39.7177177
-12701 2643 8805 0.104981962462916 0.104981962462916 -104.9521735 39.7182139 -104.9534009 39.718219
-12721 3633 3295 0.250204598549556 0.250204598549556 -104.9408419 39.7060696 -104.9407838 39.7038199
-16683 9985 9930 0.0816514509832002 0.0816514509832002 -105.0060701 39.7427445 -105.0053557 39.7432318
-12762 3506 8170 0.201022944642928 0.201022944642928 -104.9406406 39.6983765 -104.9405886 39.7001839
-15870 8842 8843 0.0221571458561984 0.0221571458561984 -105.0381819 39.7339575 -105.0382728 39.7337709
-15950 9765 9766 0.0194093177763062 0.0194093177763062 -104.9988186 39.7053295 -104.9990439 39.7053089
-12930 3167 8897 0.107237063498964 0.107237063498964 -105.00401 39.7438456 -105.0051222 39.7433998
-14520 3985 7053 0.133213475028965 0.133213475028965 -105.0299452 39.769416 -105.0315035 39.7694414
-15337 9564 9565 0.0333323202761363 0.0333323202761363 -104.9659399 39.7170729 -104.965948 39.7173726
-15952 9765 9758 0.0491105082028732 0.0491105082028732 -104.9988186 39.7053295 -104.9982473 39.7053729
-13016 8918 8921 0.143291466888449 0.143291466888449 -104.9947937 39.769857 -104.9945399 39.7685832
-13097 8917 8959 0.032086215385934 0.032086215385934 -104.9949225 39.7698636 -104.9949911 39.7695799
-13121 640 8968 0.045462010282231 0.045462010282231 -104.9875489 39.7695895 -104.9879458 39.7698617
-13175 4472 2794 0.133415072213096 0.133415072213096 -104.9559081 39.7657294 -104.9559387 39.766929
-13447 9080 4647 0.227691913723815 0.227691913723815 -105.0212418 39.7253265 -105.0186451 39.7248745
-19029 7690 8144 0.0861073402797158 0.0861073402797158 -104.9475732 39.784427 -104.9481599 39.7837974
-13280 4312 7812 0.197562058294396 0.197562058294396 -105.0344662 39.7021142 -105.0367751 39.7021472
-20373 10757 10758 0.0390214492856105 0.0390214492856105 -105.0243898 39.7611891 -105.0243956 39.7608382
-13466 9093 9091 0.0528525628364664 0.0528525628364664 -105.0183719 39.7253071 -105.0189899 39.7253071
-15458 1970 8766 0.0532545399938913 0.0532545399938913 -105.0018024 39.7442826 -105.0021048 39.7447013
-13600 2311 6580 0.108271978342533 0.108271978342533 -105.0112958 39.7314875 -105.0113223 39.732461
-13622 3355 9148 0.0901126087179192 0.0901126087179192 -104.9338318 39.7292375 -104.9327781 39.7292306
-15127 8268 225 0.129419996314042 0.129419996314042 -104.9407004 39.7790485 -104.9407032 39.7778846
-15855 9737 9738 0.0422997339419691 0.0422997339419691 -105.0423956 39.7309893 -105.0423031 39.7306156
-15953 9758 9764 0.0382745737843307 0.0382745737843307 -104.9982473 39.7053729 -104.9984431 39.7056824
-13641 9152 327 0.371274069669657 0.371274069669657 -104.9968785 39.7078836 -104.9987289 39.7109039
-13690 6833 6976 0.085342873664165 0.085342873664165 -105.0400351 39.6894654 -105.0410323 39.6894803
-15860 9707 9741 0.0544957036472965 0.0544957036472965 -105.039492 39.7313626 -105.038896 39.7315361
-13709 6929 3818 0.116035215256342 0.116035215256342 -105.0093602 39.6967483 -105.0107164 39.6967417
-15411 7964 9590 0.052042549974644 0.052042549974644 -105.0005794 39.7440362 -105.0001457 39.7443646
-18495 15 6384 0.132622389900901 0.132622389900901 -105.0351824 39.7463725 -105.0351851 39.7475652
-18578 10319 10327 0.0490398009212077 0.0490398009212077 -105.0275696 39.7818193 -105.0271244 39.7820976
-13818 8483 6705 0.147706661087796 0.147706661087796 -104.9942509 39.7449031 -104.9930306 39.7458434
-13972 9250 9251 0.0609360549506678 0.0609360549506678 -105.0144838 39.7291094 -105.0147648 39.729613
-20378 10761 10762 0.0703070927126279 0.0703070927126279 -105.0250806 39.7603661 -105.0243849 39.7600288
-14062 6351 2574 0.0264285559063396 0.0264285559063396 -104.9499571 39.7092328 -104.949965 39.7089952
-4057 542 3837 0.0481841661951123 0.0481841661951123 -105.0428359 39.7516736 -105.0428292 39.7521069
-20619 10811 10850 0.0311826470096292 0.0311826470096292 -105.022998 39.7596958 -105.0226484 39.7596157
-14143 9286 9287 0.00349243594701226 0.00349243594701226 -105.0165836 39.7450617 -105.0165756 39.7450309
-15782 2533 9708 0.0671466764878958 0.0671466764878958 -105.0240058 39.7380698 -105.0237619 39.7374958
-18700 1376 9773 0.0602159412724284 0.0602159412724284 -105.0390952 39.7117746 -105.0390872 39.7112331
-19501 10528 10529 0.0145223093781074 0.0145223093781074 -104.9883708 39.7066508 -104.9883718 39.7065202
-16094 9821 9496 0.0522797219291825 0.0522797219291825 -104.9498895 39.7799931 -104.9498734 39.7795231
-16682 9984 9985 0.111071610148866 0.111071610148866 -105.0071843 39.7422309 -105.0060701 39.7427445
-16220 9022 9008 0.10706671130041 0.10706671130041 -105.0274035 39.6987105 -105.0261751 39.6985266
-16222 9850 7740 0.404338691233817 0.404338691233817 -104.9564159 39.6856969 -104.9564079 39.6893332
-16223 7740 5835 0.200008410058821 0.200008410058821 -104.9564079 39.6893332 -104.9563972 39.6911319
-14438 6143 4017 0.133566629484228 0.133566629484228 -105.0283819 39.7487852 -105.0299442 39.7487903
-14458 9168 3834 0.0502958887489777 0.0502958887489777 -105.0422474 39.7487571 -105.0428357 39.748759
-16499 8709 8890 0.00781309402153006 0.00781309402153006 -105.0028925 39.7443552 -105.0029709 39.7443191
-14504 9364 2172 0.0261972288759813 0.0261972288759813 -105.0143742 39.7692739 -105.0146807 39.7692764
-16631 9312 9964 0.536418418139307 0.536418418139307 -104.9787525 39.7399405 -104.9850261 39.7399281
-16632 9964 9965 0.081644512591407 0.081644512591407 -104.9850261 39.7399281 -104.9859809 39.7399196
-15472 8892 1971 0.0354218020701201 0.0354218020701201 -105.0008068 39.745167 -105.0012102 39.7450944
-14617 9402 9350 0.13375643872535 0.13375643872535 -105.0252747 39.7548256 -105.0252762 39.7536227
-14954 7265 7584 0.0944614970989242 0.0944614970989242 -104.937233 39.7546682 -104.936128 39.7546682
-4076 3852 3853 0.00162344592902021 0.00162344592902021 -105.0428243 39.7765465 -105.0428243 39.7765611
-15099 7228 2370 0.054925658104601 0.054925658104601 -104.9964723 39.7592924 -104.9971148 39.759299
-16381 9878 9879 0.0338421848775343 0.0338421848775343 -104.971336 39.7034463 -104.9716243 39.7032379
-16508 9928 9929 0.0170279633676167 0.0170279633676167 -105.0062945 39.7430132 -105.0061216 39.7430892
-16525 5158 7669 0.0405110122092171 0.0405110122092171 -104.9248331 39.7295029 -104.9245319 39.7297841
-16594 9950 9951 0.140650325269802 0.140650325269802 -104.9990547 39.7486029 -104.9979162 39.749516
-17419 10101 10102 0.0281887857345848 0.0281887857345848 -104.9831564 39.6890637 -104.9832476 39.6893073
-16852 9866 6519 0.0479747206312546 0.0479747206312546 -104.9586795 39.6929681 -104.9581188 39.6929673
-16968 10038 10045 0.00348952632939911 0.00348952632939911 -105.0168024 39.7557524 -105.0168432 39.7557514
-17638 10159 9498 0.0561256700305383 0.0561256700305383 -104.9503671 39.7793277 -104.949868 39.7789996
-17642 8238 524 0.198799957504709 0.198799957504709 -104.9470651 39.7802508 -104.9493835 39.780399
-17105 331 10064 0.12693044123038 0.12693044123038 -104.9522901 39.745499 -104.9521145 39.7466325
-17422 10082 10083 0.0318734478115971 0.0318734478115971 -104.9834085 39.6888408 -104.9836553 39.6886261
-17268 4260 3518 0.200851927356296 0.200851927356296 -104.9623073 39.6965813 -104.9623127 39.6983876
-17398 7305 3261 0.198983160217956 0.198983160217956 -104.9669227 39.7020659 -104.9668678 39.7038549
-17400 3509 4251 0.199228485757107 0.199228485757107 -104.9680976 39.6983824 -104.968103 39.6965907
-17911 4835 9197 0.134589353492833 0.134589353492833 -105.0001358 39.7148074 -104.9985624 39.7147937
-17544 8941 8264 0.168906883412351 0.168906883412351 -104.9897554 39.7854547 -104.9897645 39.7839357
-18155 10135 10136 0.408197365852498 0.408197365852498 -105.023387 39.7874357 -105.0233776 39.7911067
-17572 10145 10146 0.0800519816931861 0.0800519816931861 -105.0183186 39.7308259 -105.0192547 39.73083
-17628 2882 8136 0.162489310093733 0.162489310093733 -104.9592584 39.7852492 -104.9592611 39.7837879
-18601 10335 7656 0.178628836370645 0.178628836370645 -105.0432472 39.729877 -105.0432633 39.7282706
-17816 9287 10184 0.0350560568035198 0.0350560568035198 -105.0165756 39.7450309 -105.0162526 39.7452251
-17966 6242 10236 0.0113656789072773 0.0113656789072773 -104.9882366 39.7256418 -104.9882388 39.7255396
-17886 9955 4390 0.0561034767074801 0.0561034767074801 -104.98691 39.7485653 -104.9873785 39.7489186
-17918 5173 6867 0.199959252458115 0.199959252458115 -104.9856359 39.7165436 -104.9856575 39.7147454
-17919 6867 5276 0.0971272913038605 0.0971272913038605 -104.9856575 39.7147454 -104.9856735 39.713872
-19066 5495 9469 0.177422724680083 0.177422724680083 -104.9407458 39.7383041 -104.9407436 39.7367085
-19037 9496 9494 0.0281063525870562 0.0281063525870562 -104.9498734 39.7795231 -104.9496925 39.779312
-18774 9642 7121 0.176777734913143 0.176777734913143 -105.0008766 39.7368756 -105.000878 39.7352858
-19101 10429 10049 0.0400790686743565 0.0400790686743565 -105.0000136 39.7493831 -105.0003395 39.7496422
-19617 10477 10588 0.0688805182452796 0.0688805182452796 -104.9902547 39.7104857 -104.9910599 39.7104919
-19314 6700 5030 0.15289416238876 0.15289416238876 -104.9873849 39.7414911 -104.987378 39.7401161
-19425 36 3535 0.208182345564595 0.208182345564595 -104.9809867 39.7002821 -104.9809732 39.6984099
-19426 3535 4231 0.197905943796208 0.197905943796208 -104.9809732 39.6984099 -104.9809651 39.6966301
-19462 10478 10483 0.0205384885375563 0.0205384885375563 -104.9902571 39.7102784 -104.9902592 39.7100937
-19725 4489 10627 0.00886289645656064 0.00886289645656064 -105.0052547 39.734614 -105.0051511 39.7346116
-19764 5140 5153 0.0242552277861381 0.0242552277861381 -104.9325581 39.7331296 -104.9324587 39.7333339
-20136 2752 6988 0.0528412012093399 0.0528412012093399 -104.9326896 39.7401271 -104.9320716 39.7401271
-19927 4579 8367 0.130318576605927 0.130318576605927 -105.0358145 39.741514 -105.035848 39.7426857
-20000 10690 8645 0.0319530891427096 0.0319530891427096 -105.0042718 39.7504958 -105.0040083 39.7506996
-4106 1534 3875 0.0874992877759652 0.0874992877759652 -104.944148 39.7574036 -104.944148 39.7581905
-20047 9078 9193 0.27590001979893 0.27590001979893 -104.9941364 39.7021826 -104.9954572 39.7044462
-397 400 401 0.186988741368815 0.186988741368815 -105.00936 39.7403456 -105.0115284 39.740564
-398 401 402 0.0834459188949902 0.0834459188949902 -105.0115284 39.740564 -105.0124556 39.7407982
-400 403 313 0.0512719310633618 0.0512719310633618 -104.970135 39.780686 -104.970735 39.780686
-402 404 405 0.135745743044228 0.135745743044228 -105.0090936 39.725822 -105.0106325 39.7261211
-404 406 407 0.304825723005793 0.304825723005793 -105.0107416 39.7261622 -105.0123607 39.72372
-406 408 409 0.43926972528011 0.43926972528011 -105.0014039 39.7148758 -104.9995495 39.7111919
-408 410 411 0.386425449179561 0.386425449179561 -105.0296018 39.7254255 -105.0251128 39.7250295
-410 412 413 0.296429557961552 0.296429557961552 -105.0287256 39.7838921 -105.0252567 39.7839187
-411 413 414 0.0146716283322865 0.0146716283322865 -105.0252567 39.7839187 -105.025085 39.7839187
-412 414 415 0.325808855480319 0.325808855480319 -105.025085 39.7839187 -105.0212787 39.7837465
-414 416 328 0.121195048255912 0.121195048255912 -104.9487461 39.7445647 -104.9500765 39.7441885
-416 329 416 0.287289513548727 0.287289513548727 -104.951939 39.7453698 -104.9487461 39.7445647
-417 416 417 0.245312696429149 0.245312696429149 -104.9487461 39.7445647 -104.9458794 39.7444723
-20053 1955 8185 0.122183214039011 0.122183214039011 -104.9375707 39.7122386 -104.936636 39.7114077
-20198 8571 5783 0.145694845246542 0.145694845246542 -104.9953197 39.7494633 -104.9941411 39.7504097
-14833 7026 8320 0.0139341057083995 0.0139341057083995 -105.0315379 39.7548347 -105.0317009 39.7548347
-14834 8320 7029 0.0476978989477955 0.0476978989477955 -105.0317009 39.7548347 -105.0322588 39.7548413
-15442 9600 8606 0.035907314389173 0.035907314389173 -105.0002179 39.7415263 -105.0005878 39.7413734
-19656 10607 10531 0.00409092160847847 0.00409092160847847 -104.9883278 39.7060132 -104.9883756 39.7060143
-20737 10917 10886 0.0142612706482701 0.0142612706482701 -105.0397934 39.7652927 -105.0396293 39.7653159
-14870 9363 2450 0.140513945011527 0.140513945011527 -105.0053953 39.7692764 -105.0054661 39.7705389
-11514 269 270 0.151462432210479 0.151462432210479 -105.0281511 39.7598548 -105.029923 39.7598619
-12364 8672 8674 0.0109017354569362 0.0109017354569362 -105.011589 39.7530795 -105.011632 39.7531718
-12 12 13 0.134681710739383 0.134681710739383 -105.0299361 39.7463759 -105.0315114 39.7463778
-14892 8103 9009 0.099173697837006 0.099173697837006 -105.0324492 39.7031047 -105.0324149 39.7022132
-14893 9009 8146 0.0976735888216106 0.0976735888216106 -105.0324149 39.7022132 -105.0324321 39.7013349
-33 36 37 0.0487053100188426 0.0487053100188426 -104.9809867 39.7002821 -104.9804174 39.7002821
-14912 7271 7600 0.0956539249415721 0.0956539249415721 -104.9373374 39.7208988 -104.936219 39.7208978
-18874 7987 218 0.124810113553517 0.124810113553517 -104.9874076 39.7007261 -104.9862918 39.700003
-18876 3520 84 0.204554290109371 0.204554290109371 -104.961154 39.6983849 -104.9611564 39.7002245
-15454 8884 9611 0.0785818613777641 0.0785818613777641 -105.0010815 39.7421312 -105.0002927 39.7424939
-322 154 206 0.0287029588335131 0.0287029588335131 -104.9570001 39.7445158 -104.9566644 39.7445134
-18627 9483 1310 0.220178764490314 0.220178764490314 -105.0332559 39.7113941 -105.033071 39.7133691
-18894 10375 10376 0.00936614397970835 0.00936614397970835 -105.0119408 39.7500586 -105.0120158 39.75012
-15122 8269 9491 0.0542877044701678 0.0542877044701678 -104.9404976 39.7792513 -104.9405035 39.7797395
-18715 7650 8069 0.263314494448216 0.263314494448216 -105.0378319 39.7282456 -105.0378507 39.7306136
-15971 8998 4214 0.0961806119218467 0.0961806119218467 -105.0168967 39.7111539 -105.0180211 39.7111539
-551 544 545 0.0205710614294522 0.0205710614294522 -105.034963 39.736586 -105.034963 39.736401
-15166 7386 9508 0.0293624650986513 0.0293624650986513 -105.0330679 39.7403194 -105.0334112 39.7403128
-18679 2589 1852 0.179197761430995 0.179197761430995 -105.0367321 39.7229406 -105.0367134 39.7213291
-602 593 594 0.0187536593392831 0.0187536593392831 -104.9689126 39.70386 -104.9686935 39.7038655
-16091 9818 526 0.0930965533879819 0.0930965533879819 -104.9498899 39.7811457 -104.9499002 39.7803085
-13959 448 9111 0.0841767201213853 0.0841767201213853 -105.0126579 39.7258229 -105.0136091 39.7256283
-16119 427 4010 0.113680084788302 0.113680084788302 -105.028564 39.7403785 -105.0298922 39.7403326
-17947 10226 10227 0.0385043082181171 0.0385043082181171 -104.9872048 39.7236101 -104.9869878 39.7233067
-16175 7201 5812 0.201274753121947 0.201274753121947 -104.9868436 39.6930068 -104.9868503 39.6911967
-699 693 694 0.0993204992661042 0.0993204992661042 -104.9535885 39.7419889 -104.9524269 39.7419829
-16265 9865 7738 0.345896015945794 0.345896015945794 -104.958709 39.6862164 -104.9586954 39.6893271
-16341 9873 8704 0.014474001055321 0.014474001055321 -104.9406644 39.7617801 -104.9404955 39.7617894
-11688 774 775 0.0224766779818413 0.0224766779818413 -105.0018298 39.7532062 -105.0016626 39.7533622
-16464 1081 9912 0.0130855777393443 0.0130855777393443 -104.972547 39.7069966 -104.9726409 39.7070895
-18428 2983 10286 0.340223280394145 0.340223280394145 -105.038723 39.7584839 -105.0387191 39.7554242
-16719 485 10003 0.0666623735199971 0.0666623735199971 -104.9862761 39.7027725 -104.9862718 39.703372
-18212 2988 7850 0.201655156198778 0.201655156198778 -105.0422605 39.7584955 -105.0422473 39.760309
-18213 7850 6382 0.201197176818258 0.201197176818258 -105.0422473 39.760309 -105.042255 39.7621184
-17132 1799 4238 0.205173852791716 0.205173852791716 -104.9763617 39.694761 -104.9763404 39.6966061
-268 278 279 0.0669047721045728 0.0669047721045728 -104.9876105 39.7785645 -104.987002 39.7789431
-18436 10287 10292 0.102997198003519 0.102997198003519 -105.0292196 39.7613906 -105.0280151 39.7614164
-17134 3543 44 0.198313047920784 0.198313047920784 -104.9763295 39.6984254 -104.9763617 39.7002087
-15194 7392 9524 0.0521516926212219 0.0521516926212219 -105.0330703 39.7500019 -105.0336803 39.7499978
-19559 10563 10553 0.0196751082256841 0.0196751082256841 -104.9888131 39.7091506 -104.9890431 39.7091518
-19864 10666 10667 0.12344950946071 0.12344950946071 -105.03696 39.7374437 -105.0363945 39.7384652
-1022 827 1037 0.134288205933024 0.134288205933024 -104.9622082 39.7532291 -104.9622266 39.7544367
-19991 10682 10649 0.0504069045792634 0.0504069045792634 -105.0416549 39.7384584 -105.0422444 39.7384617
-327 328 329 0.206425005842362 0.206425005842362 -104.9500765 39.7441885 -104.951939 39.7453698
-15245 9540 9541 0.00803794786000152 0.00803794786000152 -104.9356634 39.7056506 -104.93572 39.7055929
-14681 446 727 0.207769052846247 0.207769052846247 -104.9699934 39.7219574 -104.9700021 39.7200889
-18636 1846 2580 0.177268272488638 0.177268272488638 -105.0330898 39.7213326 -105.0330978 39.7229268
-15883 9594 8842 0.0247081602797847 0.0247081602797847 -105.0379029 39.7340153 -105.0381819 39.7339575
-18445 1124 10289 0.0496295455281554 0.0496295455281554 -105.0404721 39.7607638 -105.0398915 39.7607667
-15483 9622 9623 0.0434553081653394 0.0434553081653394 -105.0002589 39.7457416 -105.0006156 39.7454632
-15784 9596 2105 0.0159980383240888 0.0159980383240888 -105.0247945 39.7370792 -105.0249129 39.7371906
-18450 7849 2986 0.202541671618508 0.202541671618508 -105.0410779 39.7603102 -105.0410754 39.7584887
-15540 1221 8429 0.105180771417586 0.105180771417586 -105.0123509 39.7369148 -105.0135809 39.7369043
-17095 3719 3720 0.174398206796096 0.174398206796096 -104.9604099 39.7383822 -104.9604079 39.7368138
-12950 1330 1331 0.0133918888831226 0.0133918888831226 -105.0020771 39.7434247 -105.0019226 39.7434049
-19570 10569 7462 0.00803939319633032 0.00803939319633032 -104.9895239 39.707619 -104.9895239 39.7075467
-1312 1338 1339 0.0991205046552405 0.0991205046552405 -105.016828 39.7130093 -105.0179868 39.7130093
-15958 9768 9769 0.0623405517746533 0.0623405517746533 -105.0005192 39.711198 -105.0002214 39.7106863
-325 268 153 0.064083026712354 0.064083026712354 -104.9564977 39.7449464 -104.9572293 39.7448211
-386 388 389 0.0751873239589982 0.0751873239589982 -104.9994213 39.713266 -105.0001337 39.7136621
-1392 1419 1420 0.399589215327938 0.399589215327938 -105.0017224 39.7819937 -105.0063986 39.7819993
-16282 9096 9098 0.0807475840805468 0.0807475840805468 -105.0171656 39.7251183 -105.0162316 39.725012
-391 393 394 0.185819928048464 0.185819928048464 -105.0075703 39.7588771 -105.0057374 39.7597756
-15753 6671 2023 0.100119371100459 0.100119371100459 -104.9362703 39.7162376 -104.9350998 39.7162443
-18126 6042 10262 0.201564202628959 0.201564202628959 -105.0187387 39.7856192 -105.0187307 39.7874319
-17137 4425 1909 0.200241543203617 0.200241543203617 -104.9763417 39.7056707 -104.9763514 39.7074715
-16013 9783 9784 0.0337977814282775 0.0337977814282775 -104.9993276 39.6890403 -104.9989876 39.689195
-12006 8049 6578 0.147083508160087 0.147083508160087 -104.9866649 39.7595656 -104.9854669 39.7605151
-2343 2334 2335 0.271393460830069 0.271393460830069 -104.9238826 39.7256356 -104.9238831 39.7280763
-19952 4670 7857 0.100774147000306 0.100774147000306 -104.9940093 39.7230042 -104.992831 39.7230021
-20659 8289 5957 0.0879515292456205 0.0879515292456205 -104.9873968 39.7469971 -104.9873834 39.7462062
-12349 8665 8666 0.0489645255680358 0.0489645255680358 -105.0124819 39.7528908 -105.0129797 39.752673
-1536 1559 1560 0.0937807122385258 0.0937807122385258 -104.9582585 39.7776672 -104.9571611 39.7776691
-2410 2115 2401 0.446933916798798 0.446933916798798 -104.9270004 39.7731311 -104.9317412 39.7748279
-19581 7470 10575 0.00667183269883622 0.00667183269883622 -104.988589 39.7084596 -104.9885885 39.7085196
-1557 1582 1583 0.0811305260417956 0.0811305260417956 -105.0442642 39.6882131 -105.0452106 39.6881689
-469 472 473 0.100239678379349 0.100239678379349 -105.0184425 39.7479196 -105.0185991 39.7470262
-569 562 563 0.0844940522055572 0.0844940522055572 -104.9848447 39.7398421 -104.9854438 39.7392378
-12010 5508 7081 0.146350144860015 0.146350144860015 -104.9830521 39.7623846 -104.9818287 39.7633054
-2663 2621 2622 0.0420400210402162 0.0420400210402162 -104.9980629 39.7225275 -104.9985544 39.7225221
-16696 9597 7094 0.00600769898364912 0.00600769898364912 -105.0002485 39.7423649 -105.00026 39.7424182
-18883 7310 84 0.202570183098447 0.202570183098447 -104.9611376 39.7020462 -104.9611564 39.7002245
-16736 7419 10004 0.204798388413466 0.204798388413466 -104.9519684 39.7022366 -104.9539532 39.7012069
-1623 1651 1652 0.0452674748546477 0.0452674748546477 -105.0156831 39.6890231 -105.0156826 39.688616
-12948 1303 1304 0.066448544071591 0.066448544071591 -105.0017368 39.7441763 -105.0024118 39.7438801
-20711 10885 10914 0.126940460926274 0.126940460926274 -105.0253682 39.762093 -105.0253716 39.7632346
-20712 10914 5881 0.00554916008288024 0.00554916008288024 -105.0253716 39.7632346 -105.0253707 39.7632845
-16509 9929 9930 0.0673766892433469 0.0673766892433469 -105.0061216 39.7430892 -105.0053557 39.7432318
-1643 1670 1671 0.136647738333876 0.136647738333876 -105.0064415 39.7680441 -105.0080403 39.7680432
-19534 6856 10550 0.00719456093421717 0.00719456093421717 -104.9890317 39.7102465 -104.9890324 39.7101818
-19538 4704 10552 0.0168576392161317 0.0168576392161317 -104.9890412 39.7093409 -104.9890427 39.7091893
-19539 10552 10553 0.00416995013524246 0.00416995013524246 -104.9890427 39.7091893 -104.9890431 39.7091518
-11689 775 836 0.0388095868373909 0.0388095868373909 -105.0016626 39.7533622 -105.00135 39.7536153
-20 21 22 0.0174708821601448 0.0174708821601448 -105.0184092 39.7572776 -105.0186135 39.7572732
-16449 9906 9907 0.130469688472308 0.130469688472308 -104.9731572 39.7002179 -104.9730961 39.7013903
-41 44 45 0.0507831501846365 0.0507831501846365 -104.9763617 39.7002087 -104.9757682 39.7002165
-17298 7736 5829 0.204153885319898 0.204153885319898 -104.9622681 39.6893045 -104.9622681 39.6911405
-64 70 71 0.046163806906163 0.046163806906163 -104.9674891 39.7002337 -104.9669496 39.700226
-18467 10299 10298 0.126605139952982 0.126605139952982 -105.0434286 39.7498153 -105.0431907 39.7509391
-18685 1316 1372 0.177012768030012 0.177012768030012 -105.0366981 39.7133763 -105.0366894 39.7117844
-1826 1842 1843 0.155652098486701 0.155652098486701 -105.0186351 39.7211578 -105.020455 39.721152
-19783 3732 10633 0.0548138207459151 0.0548138207459151 -105.0028207 39.7326047 -105.0021797 39.732604
-1846 1861 1862 0.0495211888216282 0.0495211888216282 -105.0427108 39.7213283 -105.0432898 39.7213253
-177 186 187 0.102075274690852 0.102075274690852 -105.0425601 39.6931327 -105.0437531 39.6931327
-202 214 215 0.233063347854791 0.233063347854791 -104.9627533 39.7801312 -104.9654677 39.7803353
-271 281 282 0.0968799942510371 0.0968799942510371 -104.9847034 39.7794255 -104.98357 39.7794055
-335 336 337 0.26926308578439 0.26926308578439 -104.9390909 39.7824749 -104.9373307 39.7804664
-14122 3945 503 0.0521094341958735 0.0521094341958735 -104.9450651 39.7484271 -104.9454639 39.7487815
-1949 1964 1965 0.100541047482359 0.100541047482359 -104.9246161 39.743742 -104.925792 39.7437354
-503 497 498 0.332501427216364 0.332501427216364 -105.0147909 39.7286028 -105.0153507 39.7256437
-508 502 503 0.0804669922754196 0.0804669922754196 -104.9447772 39.7492764 -104.9454639 39.7487815
-19271 10424 10425 0.0133101789702176 0.0133101789702176 -104.9949557 39.7460704 -104.9948429 39.7459879
-19460 10507 10477 0.0195042673008727 0.0195042673008727 -104.9902528 39.7106611 -104.9902547 39.7104857
-12962 1631 1599 0.105987129966341 0.105987129966341 -105.0033016 39.7411115 -105.0021858 39.7415267
-11814 2150 2151 0.12777055976042 0.12777055976042 -105.0101838 39.745904 -105.0100859 39.7447574
-18730 7649 8066 0.263509830967107 0.263509830967107 -105.0367537 39.7282406 -105.0367563 39.7306104
-18671 2605 1538 0.176823430683456 0.176823430683456 -105.0421532 39.7229647 -105.042161 39.7245549
-20037 816 3558 0.154160936652516 0.154160936652516 -104.9739648 39.753238 -104.9739683 39.7546244
-20700 10894 10895 0.0022719801727208 0.0022719801727208 -105.0400807 39.765692 -105.0400542 39.7656936
-17029 3606 3607 0.0180484124991241 0.0180484124991241 -105.0243187 39.7548283 -105.0243214 39.7549906
-850 863 864 0.0616242283467915 0.0616242283467915 -104.9428605 39.7639291 -104.9428605 39.7644833
-18683 3539 3608 0.177667253998454 0.177667253998454 -105.0367081 39.716558 -105.036708 39.7149602
-20825 9400 10954 0.0122123114573311 0.0122123114573311 -105.0252875 39.7601454 -105.0254122 39.760199
-872 885 886 0.105399149486358 0.105399149486358 -104.9585659 39.7644817 -104.9573328 39.7644759
-19920 2621 10413 0.177079309456246 0.177079309456246 -104.9980629 39.7225275 -104.9980711 39.720935
-892 906 907 0.104783494637697 0.104783494637697 -104.9356148 39.7644767 -104.934389 39.7644899
-12344 8660 8661 0.0179171962919351 0.0179171962919351 -105.012233 39.7522705 -105.0123532 39.7524025
-17141 3089 4509 0.200737491088575 0.200737491088575 -104.9763937 39.7128949 -104.9763295 39.7146995
-16291 2376 2377 0.00482087191216397 0.00482087191216397 -104.9707858 39.6964209 -104.9707298 39.6964161
-963 974 975 0.202802632214452 0.202802632214452 -104.9840335 39.7873956 -104.9840507 39.7892194
-17135 44 4412 0.404761668333185 0.404761668333185 -104.9763617 39.7002087 -104.9763723 39.7038488
-17088 10071 9940 0.138093381903903 0.138093381903903 -104.9603859 39.7507127 -104.960382 39.7494708
-16845 10022 10018 0.0055152683612349 0.0055152683612349 -104.9700592 39.7032957 -104.9700592 39.7032461
-17952 10226 10230 0.0192923880160408 0.0192923880160408 -104.9872048 39.7236101 -104.9872054 39.7237836
-20322 10741 10742 0.00907488670500163 0.00907488670500163 -105.0236254 39.7588748 -105.0237259 39.7589011
-1113 1129 1130 0.204124873969403 0.204124873969403 -105.0404692 39.7676124 -105.0404986 39.769448
-16607 7890 9325 0.145145340110648 0.145145340110648 -104.9856992 39.7495249 -104.9845026 39.7504509
-15260 9550 9551 0.0630135708366092 0.0630135708366092 -104.9336788 39.7049326 -104.9343788 39.705109
-19433 10110 10489 0.0489242953920304 0.0489242953920304 -104.9839674 39.7033596 -104.9833961 39.7033795
-16954 10038 10039 0.0207511303582817 0.0207511303582817 -105.0168024 39.7557524 -105.0167989 39.7555658
-12357 8669 8668 0.00723037090372959 0.00723037090372959 -105.0124521 39.7523897 -105.0125278 39.7524187
-1183 1198 1199 0.0305943034250603 0.0305943034250603 -104.9520847 39.7271285 -104.951727 39.7271329
-19442 10493 10494 0.0196148764551294 0.0196148764551294 -104.9911447 39.7106683 -104.9911454 39.7104919
-19443 10494 10495 0.0228284210093234 0.0228284210093234 -104.9911454 39.7104919 -104.9911462 39.7102866
-2633 2594 2595 0.0115937480855902 0.0115937480855902 -105.0383715 39.7229322 -105.038507 39.7229353
-1205 1220 1221 0.0900481853791487 0.0900481853791487 -105.0123588 39.736105 -105.0123509 39.7369148
-18180 5796 6056 0.200195877654712 0.200195877654712 -105.0304694 39.7874265 -105.030464 39.7856261
-11707 1245 1246 0.0231530055304531 0.0231530055304531 -105.001931 39.7490887 -105.0017374 39.7492343
-19444 10495 10496 0.0213401735101805 0.0213401735101805 -104.9911462 39.7102866 -104.9911429 39.7100947
-19445 10496 10497 0.0182367704590367 0.0182367704590367 -104.9911429 39.7100947 -104.9911409 39.7099307
-2703 2659 2660 0.155649282617483 0.155649282617483 -104.9517329 39.7291286 -104.9517031 39.7305282
-19446 10497 10498 0.0203055071588043 0.0203055071588043 -104.9911409 39.7099307 -104.9911436 39.7097481
-2724 107 2679 0.0450807290855188 0.0450807290855188 -104.930428 39.700221 -104.930452 39.700626
-1266 1286 1287 0.0202842890457172 0.0202842890457172 -105.020542 39.7581637 -105.0205384 39.7583461
-18451 2986 7704 0.199650644692106 0.199650644692106 -105.0410754 39.7584887 -105.0410725 39.7566932
-16289 1363 2376 0.00344312944616261 0.00344312944616261 -104.9708258 39.6964243 -104.9707858 39.6964209
-19447 10498 10499 0.0196160459333464 0.0196160459333464 -104.9911436 39.7097481 -104.9911462 39.7095717
-14693 2225 4875 0.162113763012991 0.162113763012991 -104.9712038 39.7337071 -104.9712147 39.735165
-1308 1334 1335 0.129255645714035 0.129255645714035 -105.0110016 39.7130472 -105.012511 39.712992
-14695 4946 4947 0.168905093573288 0.168905093573288 -104.9712638 39.7368921 -104.9712638 39.7384111
-1332 1357 1358 0.136424467862451 0.136424467862451 -104.992658 39.7824897 -104.9942545 39.7824831
-19448 10499 10487 0.023296750596408 0.023296750596408 -104.9911462 39.7095717 -104.9911492 39.7093622
-2841 2789 2790 0.0523852002781698 0.0523852002781698 -104.9615875 39.7669517 -104.9609746 39.7669537
-15843 7795 9723 0.020416694003674 0.020416694003674 -105.0393113 39.734237 -105.0393086 39.7344206
-18886 7308 3267 0.201549354300641 0.201549354300641 -104.9634496 39.7020562 -104.9634713 39.7038687
-19449 10487 10500 0.022940948763835 0.022940948763835 -104.9911492 39.7093622 -104.9911522 39.7091559
-17307 5827 7735 0.20365816745981 0.20365816745981 -104.963474 39.6911476 -104.9634901 39.6893161
-2499 2480 2481 0.265342544498994 0.265342544498994 -105.0064445 39.779418 -105.0095495 39.7794028
-19450 10500 10501 0.0189264900266028 0.0189264900266028 -104.9911522 39.7091559 -104.9911546 39.7089857
-18889 1923 6123 0.200475462008098 0.200475462008098 -104.9634658 39.7074881 -104.963455 39.709291
-1428 1451 1452 0.107578729884622 0.107578729884622 -105.0038258 39.7039943 -105.003594 39.7030434
-18647 7412 4053 0.176566575042864 0.176566575042864 -105.0379016 39.716558 -105.0379043 39.7181459
-1452 1471 1472 0.147622384612895 0.147622384612895 -105.0231842 39.6908088 -105.0231842 39.6894812
-19451 10501 10502 0.0200830353316625 0.0200830353316625 -104.9911546 39.7089857 -104.9911572 39.7088051
-2953 2897 2898 0.0472912053919854 0.0472912053919854 -104.9733528 39.7553064 -104.9733526 39.7557317
-16310 2439 2721 0.0812562615874829 0.0812562615874829 -104.9697532 39.6960539 -104.9693989 39.6953759
-12320 1302 1603 0.00893905362813633 0.00893905362813633 -105.0032204 39.7501518 -105.0031242 39.7501833
-19452 10502 10503 0.0197272337869401 0.0197272337869401 -104.9911572 39.7088051 -104.9911598 39.7086277
-19453 10503 7482 0.0181814350817939 0.0181814350817939 -104.9911598 39.7086277 -104.9911621 39.7084642
-19038 9494 229 0.0588468541295868 0.0588468541295868 -104.9496925 39.779312 -104.9490058 39.7793516
-1498 1517 1518 0.199413272863754 0.199413272863754 -104.9745809 39.7128876 -104.9745407 39.7110945
-15846 9732 1098 0.0848710138660927 0.0848710138660927 -105.0415588 39.7301641 -105.0405664 39.7301724
-19454 7482 10504 0.0196839111368948 0.0196839111368948 -104.9911621 39.7084642 -104.9911657 39.7082872
-19455 10504 10505 0.017559948119168 0.017559948119168 -104.9911657 39.7082872 -104.991169 39.7081293
-13365 9051 9052 0.103390283727961 0.103390283727961 -104.9821447 39.7799919 -104.9833542 39.7800156
-2998 1652 2935 0.112349122861115 0.112349122861115 -105.0156826 39.688616 -105.0169377 39.6883193
-17375 1796 4235 0.206436210016501 0.206436210016501 -104.9786977 39.6947606 -104.9786601 39.6966169
-13963 9247 9102 0.0619095710643366 0.0619095710643366 -105.0153507 39.7256041 -105.0160728 39.7255648
-1534 1557 1558 0.0743776380849984 0.0743776380849984 -104.9602842 39.7776637 -104.959414 39.7776762
-19916 8774 7640 0.176934657107496 0.176934657107496 -104.9980954 39.7289058 -104.9981033 39.7273146
-19917 7640 6233 0.179269287981755 0.179269287981755 -104.9981033 39.7273146 -104.9980791 39.7257025
-1556 1581 1582 0.0903340712116846 0.0903340712116846 -105.0432085 39.6882131 -105.0442642 39.6882131
-18461 9354 9528 0.135770728089025 0.135770728089025 -105.0387149 39.7487553 -105.0387229 39.7499763
-19456 10505 7464 0.0643341844968674 0.0643341844968674 -104.991169 39.7081293 -104.9911808 39.7075508
-19919 5202 2621 0.177194532329155 0.177194532329155 -104.9980791 39.724121 -104.9980629 39.7225275
-1603 1634 1635 0.0667169559865797 0.0667169559865797 -105.015737 39.715387 -105.015737 39.714787
-15911 9239 9240 0.00759910247117962 0.00759910247117962 -105.0423752 39.716622 -105.042453 39.716655
-3133 2004 3061 0.0946875314878615 0.0946875314878615 -104.9350741 39.7601485 -104.9339669 39.7601749
-1648 1675 1676 0.0232219414191173 0.0232219414191173 -105.0143702 39.7680596 -105.0146419 39.76806
-1649 1676 1677 0.104810655650978 0.104810655650978 -105.0146419 39.76806 -105.0158682 39.7680616
-18412 7776 7163 0.0985154391997448 0.0985154391997448 -105.0393033 39.7543708 -105.0381509 39.7543757
-3153 3077 3078 0.0921654003892753 0.0921654003892753 -104.9850625 39.7129392 -104.9839851 39.7129498
-1666 1129 1692 0.0515669276869657 0.0515669276869657 -105.0404692 39.7676124 -105.0410724 39.7676025
-256 264 265 0.00881331069899833 0.00881331069899833 -104.9479356 39.6896766 -104.9480386 39.6896766
-19580 10574 7470 0.0064160385090956 0.0064160385090956 -104.9885894 39.7084019 -104.988589 39.7084596
-1690 1714 1715 0.111918529606987 0.111918529606987 -105.0420365 39.6912966 -105.0433411 39.691224
-12366 8674 8671 0.0118216471510326 0.0118216471510326 -105.011632 39.7531718 -105.0117521 39.7531191
-18801 10352 9812 0.039652100920871 0.039652100920871 -104.9919121 39.7693329 -104.9915921 39.7695911
-379 381 382 0.0684082960066799 0.0684082960066799 -105.0323033 39.747591 -105.0315032 39.7475841
-16308 2827 2851 0.00473328951361683 0.00473328951361683 -104.9721964 39.6979102 -104.9722098 39.6978689
-20640 10878 10879 0.0287629224507079 0.0287629224507079 -105.0137749 39.7624832 -105.0134384 39.762482
-20278 5573 10727 0.00799925463089475 0.00799925463089475 -105.0440081 39.7735153 -105.0439145 39.7735153
-18122 2538 10266 0.180269607102109 0.180269607102109 -105.01068 39.7874523 -105.0106756 39.7890735
-1907 1919 1920 0.101419584890654 0.101419584890654 -104.966335 39.707486 -104.9651495 39.7074752
-16419 3282 3283 0.0297579469637327 0.0297579469637327 -104.9687946 39.7020548 -104.9691419 39.7020399
-11533 1234 1235 0.136499599599558 0.136499599599558 -105.0293502 39.757272 -105.0293331 39.7560445
-18135 4099 6043 0.191045620861521 0.191045620861521 -105.0199054 39.783907 -105.0198962 39.7856251
-16763 4439 9868 0.0469300202486105 0.0469300202486105 -104.9546886 39.6984458 -104.9551011 39.698724
-257 265 257 0.0618021904449226 0.0618021904449226 -104.9480386 39.6896766 -104.9487596 39.6897096
-3413 3306 3307 0.147259003832799 0.147259003832799 -104.9862237 39.7592221 -104.985009 39.7601612
-1997 2009 2010 0.0436503011483876 0.0436503011483876 -104.9345766 39.7253138 -104.9349064 39.7256134
-381 383 384 0.174765079599045 0.174765079599045 -104.9934396 39.7273502 -104.9934388 39.7289219
-3437 3324 3325 0.13969071524798 0.13969071524798 -104.9573671 39.7557244 -104.95735 39.7569806
-2020 2029 2030 0.0536884532048604 0.0536884532048604 -104.9801901 39.7638953 -104.9806366 39.7642349
-14708 5223 5330 0.173633760067415 0.173633760067415 -104.9747109 39.7384283 -104.9746992 39.7368668
-17179 5410 5449 0.194891408787823 0.194891408787823 -104.9704709 39.6893522 -104.9704727 39.6911049
-2041 2049 2050 0.203224924896292 0.203224924896292 -104.9675091 39.7056815 -104.9674629 39.7038542
-15894 9255 9441 0.0812248966226341 0.0812248966226341 -105.0419691 39.7342088 -105.0429186 39.7342294
-2068 2071 2072 0.108635365611271 0.108635365611271 -104.953042 39.7728934 -104.9530584 39.7738703
-383 385 386 0.313694212518365 0.313694212518365 -105.009982 39.7834091 -105.0063891 39.78283
-15938 9757 9756 0.156652526688463 0.156652526688463 -104.9945244 39.7005048 -104.9962839 39.7001148
-2092 1220 2094 0.120498651922126 0.120498651922126 -105.0123588 39.736105 -105.013768 39.7361049
-16738 725 51 0.242028173240196 0.242028173240196 -104.9512072 39.7016443 -104.953347 39.7002205
-19560 10553 10564 0.0204794292027182 0.0204794292027182 -104.9890431 39.7091518 -104.9892825 39.7091533
-2166 2165 2166 0.0846335919696035 0.0846335919696035 -105.0140457 39.7285578 -105.0140055 39.7293183
-19638 10597 10526 0.00694709641094844 0.00694709641094844 -104.9882854 39.7071884 -104.9883666 39.7071894
-3597 3446 2803 0.137873345883867 0.137873345883867 -104.9462506 39.7657138 -104.9462404 39.7669537
-16317 2510 3005 0.00592207877923616 0.00592207877923616 -104.9709885 39.6970925 -104.9710275 39.6970485
-17174 5326 5327 0.109586213492937 0.109586213492937 -104.9693021 39.6883439 -104.9693125 39.6893294
-16740 4437 10005 0.047793833799427 0.047793833799427 -104.9534368 39.6995469 -104.9531164 39.6991948
-3644 3483 3484 0.202897902969007 0.202897902969007 -104.9640501 39.6929756 -104.9640755 39.691151
-2231 2232 2233 0.0942717670146639 0.0942717670146639 -104.9395024 39.7328547 -104.9384001 39.7328678
-2232 2233 2234 0.0947564865992517 0.0947564865992517 -104.9384001 39.7328678 -104.937292 39.7328682
-16741 10005 4510 0.0465117651564764 0.0465117651564764 -104.9531164 39.6991948 -104.9527144 39.6989132
-2248 2251 2252 0.0515208780131149 0.0515208780131149 -104.9592063 39.733462 -104.9586038 39.733462
-16742 4510 10006 0.0392105126712721 0.0392105126712721 -104.9527144 39.6989132 -104.9523627 39.6986871
-3687 3523 3524 0.057537938641533 0.057537938641533 -104.9593466 39.6983911 -104.9586741 39.6983954
-2276 2276 2277 0.201064010739015 0.201064010739015 -104.930959 39.7455899 -104.9309504 39.7473981
-18183 6051 5769 0.201340675613812 0.201340675613812 -105.0269948 39.7856221 -105.0269959 39.7874328
-18863 9178 2185 0.000908525082812035 0.000908525082812035 -105.0164243 39.7306043 -105.0164339 39.7306008
-14108 502 3544 0.223192299132 0.223192299132 -104.9447772 39.7492764 -104.9457557 39.7511373
-16417 3130 3281 0.0400386431725339 0.0400386431725339 -104.970947 39.7024436 -104.9710667 39.7027917
-16286 1362 1363 0.0694355006798695 0.0694355006798695 -104.9710484 39.6970248 -104.9708258 39.6964243
-3729 3563 3564 0.1023601599905 0.1023601599905 -104.9671659 39.7544703 -104.9659688 39.7544499
-13961 9112 9247 0.133632751867418 0.133632751867418 -105.0137882 39.7256148 -105.0153507 39.7256041
-2325 1348 1614 0.104366499106977 0.104366499106977 -104.9759324 39.769905 -104.9767564 39.7705977
-18909 10388 10381 0.014813120492833 0.014813120492833 -105.0124728 39.7502617 -105.0125841 39.7503638
-18903 10381 10380 0.00882005349877488 0.00882005349877488 -105.0125841 39.7503638 -105.0126123 39.7504401
-18454 4296 10295 0.0897566766881454 0.0897566766881454 -105.0410672 39.7539301 -105.041069 39.7531229
-14692 941 2225 0.184174515609916 0.184174515609916 -104.9712147 39.7320508 -104.9712038 39.7337071
-19558 10562 10563 0.0196153093677919 0.0196153093677919 -104.9885838 39.7091493 -104.9888131 39.7091506
-16743 10006 7566 0.0419162617939555 0.0419162617939555 -104.9523627 39.6986871 -104.9519988 39.6984347
-19568 7474 10568 0.0062936328481519 0.0062936328481519 -104.9895159 39.7084654 -104.9895159 39.7084088
-18905 10382 10383 0.00831887899673018 0.00831887899673018 -105.0125197 39.7501462 -105.0124996 39.7502194
-17147 4241 3546 0.202185735299221 0.202185735299221 -104.9751708 39.6966094 -104.9751709 39.6984277
-14720 937 2221 0.184339220920538 0.184339220920538 -104.9735126 39.732045 -104.9735163 39.7337028
-18637 2580 7383 0.244324669292135 0.244324669292135 -105.0330978 39.7229268 -105.0336341 39.725085
-2484 2467 2468 0.0154146632189528 0.0154146632189528 -104.9339464 39.7474085 -104.9337661 39.7474085
-17183 5608 5658 0.149882473899379 0.149882473899379 -104.9716303 39.6911179 -104.9716542 39.6897701
-3908 3707 3708 0.138080579549583 0.138080579549583 -105.0030264 39.7742905 -105.002935 39.7755303
-2555 2532 2533 0.191131540477931 0.191131540477931 -105.0217751 39.73818 -105.0240058 39.7380698
-2556 2533 254 0.098486007419044 0.098486007419044 -105.0240058 39.7380698 -105.0251543 39.7380028
-19573 10570 7473 0.00674972719310255 0.00674972719310255 -104.9892888 39.7085247 -104.9892894 39.708464
-2577 1090 2550 0.0509764502640852 0.0509764502640852 -105.0403847 39.7874333 -105.0409813 39.787434
-17311 5685 5705 0.205154639659543 0.205154639659543 -104.9611673 39.6929737 -104.9611673 39.6911287
-20594 10852 10864 0.00559477666444464 0.00559477666444464 -105.0249031 39.7609028 -105.0249015 39.7609531
-2602 2568 2565 0.0838899757725962 0.0838899757725962 -104.9535373 39.7090785 -104.9525578 39.7090414
-13584 9079 9135 0.0736016285399027 0.0736016285399027 -104.9930943 39.7037972 -104.9922711 39.7036048
-3952 3748 3749 0.123087650580437 0.123087650580437 -105.0264583 39.7729227 -105.026537 39.774028
-2626 2587 2588 0.00484286584971978 0.00484286584971978 -105.0361228 39.7229454 -105.0361794 39.7229441
-2627 2588 2589 0.0472712028951763 0.0472712028951763 -105.0361794 39.7229441 -105.0367321 39.7229406
-18404 10286 7165 0.0480937532986949 0.0480937532986949 -105.0387191 39.7554242 -105.0381565 39.7554232
-18406 9349 8340 0.136218529796162 0.136218529796162 -105.0259368 39.7560399 -105.0259235 39.7572649
-13586 9135 9136 0.116423294527986 0.116423294527986 -104.9922711 39.7036048 -104.9910031 39.7032246
-14719 5893 937 0.0748599535472642 0.0748599535472642 -104.9735211 39.7313718 -104.9735126 39.732045
-2721 2676 2677 0.00391406141859358 0.00391406141859358 -104.9524392 39.7606894 -104.9524392 39.7607246
-18735 4002 7603 0.202077020511888 0.202077020511888 -105.0300499 39.727056 -105.0294393 39.7288116
-17677 6029 10165 0.522362145407342 0.522362145407342 -104.9855966 39.7797106 -104.9794908 39.7794867
-17480 344 5940 0.0510780896194201 0.0510780896194201 -105.0150427 39.753956 -105.0154315 39.7536072
-2823 2771 2261 0.100546651913918 0.100546651913918 -104.9317009 39.7674455 -104.930525 39.7674191
-18144 10275 10261 0.405650212701817 0.405650212701817 -105.0175785 39.7910801 -105.0175788 39.787432
-12350 8663 8667 0.00958750951684791 0.00958750951684791 -105.0123961 39.7526334 -105.0124751 39.7525722
-4125 3888 3889 0.19728512260693 0.19728512260693 -104.9634642 39.7350462 -104.9634771 39.7368204
-2839 2788 1047 0.105687024742303 0.105687024742303 -104.9634422 39.7669465 -104.9622057 39.7669537
-2840 1047 2789 0.0528381886609336 0.0528381886609336 -104.9622057 39.7669537 -104.9615875 39.7669517
-12351 8667 8668 0.0176529909929813 0.0176529909929813 -105.0124751 39.7525722 -105.0125278 39.7524187
-19572 10564 10570 0.0698992084212194 0.0698992084212194 -104.9892825 39.7091533 -104.9892888 39.7085247
-16413 9458 9887 0.0468003057153474 0.0468003057153474 -104.9711616 39.7030276 -104.9708237 39.7033586
-2910 785 2854 0.0936375066158938 0.0936375066158938 -105.0042571 39.7018586 -105.0038253 39.7010848
-12361 8671 8672 0.0146217858658369 0.0146217858658369 -105.0117521 39.7531191 -105.011589 39.7530795
-2955 2899 2900 0.139071498957734 0.139071498957734 -104.9733522 39.7569824 -104.9733518 39.7582331
-20621 10800 10799 0.0197706815366264 0.0197706815366264 -105.0218874 39.7616318 -105.0218863 39.7618096
-16441 5747 9898 0.0366397439833697 0.0366397439833697 -104.9676964 39.6930969 -104.9681189 39.6930432
-3003 2938 2939 0.343360355018568 0.343360355018568 -104.9247744 39.7038309 -104.92577 39.7008395
-20697 4524 10911 0.0102002426471616 0.0102002426471616 -105.0250845 39.7632041 -105.0250813 39.7632958
-20441 10798 10799 0.0151893809033584 0.0151893809033584 -105.0218855 39.7619462 -105.0218863 39.7618096
-3052 2983 2984 0.049669116788992 0.049669116788992 -105.038723 39.7584839 -105.039304 39.7584901
-17130 4371 4372 0.0862019013563638 0.0862019013563638 -104.976372 39.6922088 -104.9763628 39.692984
-3072 3004 3006 0.148595619798792 0.148595619798792 -104.9912932 39.744504 -104.9900832 39.7454633
-20009 9620 10046 0.0380951574175552 0.0380951574175552 -105.0020353 39.747495 -105.001796 39.747784
-4390 4106 695 0.201687631399372 0.201687631399372 -104.9512775 39.7401701 -104.9512663 39.7419839
-18702 2606 1861 0.182749323037212 0.182749323037212 -105.042706 39.7229718 -105.0427108 39.7213283
-3122 2901 3051 0.104668558602022 0.104668558602022 -104.9733513 39.7594897 -104.9721269 39.7594785
-20265 5574 10723 0.0117861788911356 0.0117861788911356 -105.0440065 39.7739591 -105.0438686 39.7739577
-20266 10724 7552 0.00870010659628447 0.00870010659628447 -105.0452474 39.7730203 -105.0451456 39.7730203
-19624 10591 10497 0.00644185269782912 0.00644185269782912 -104.9910656 39.7099299 -104.9911409 39.7099307
-19579 10573 10574 0.0879788736402366 0.0879788736402366 -104.9885953 39.7076107 -104.9885894 39.7084019
-18895 10376 10377 0.0641298068195797 0.0641298068195797 -105.0120158 39.75012 -105.0124804 39.7505728
-20011 10694 10695 0.0242395353024572 0.0242395353024572 -105.0045347 39.7529806 -105.0047359 39.752827
-17687 6171 6172 0.0391351463481426 0.0391351463481426 -104.9860994 39.7796015 -104.9856415 39.7795956
-3160 3084 3085 0.0490903700114876 0.0490903700114876 -104.9792501 39.712914 -104.9786762 39.712912
-19594 10580 10495 0.00720293691626167 0.00720293691626167 -104.991062 39.7102859 -104.9911462 39.7102866
-3180 3100 3101 0.129889039932712 0.129889039932712 -104.9377781 39.7130688 -104.9362596 39.7130732
-17168 5241 5262 0.201125324676422 0.201125324676422 -104.9740116 39.7038551 -104.9739919 39.7056638
-17121 1798 4176 0.205688375484509 0.205688375484509 -104.9775097 39.6947606 -104.9775098 39.6966104
-3202 3118 3119 0.112364882779035 0.112364882779035 -104.9350589 39.6929564 -104.9350503 39.6919459
-14726 5162 6220 0.0504817306174529 0.0504817306174529 -104.9746897 39.7395432 -104.9752801 39.7395432
-3225 3140 3141 0.161478257380345 0.161478257380345 -104.964537 39.7804755 -104.9645304 39.7819277
-13781 438 3176 0.297045355127737 0.297045355127737 -105.0062729 39.7603999 -105.0085577 39.7583871
-19813 5371 10633 0.121358837066421 0.121358837066421 -105.0021749 39.7336954 -105.0021797 39.732604
-3298 3207 2047 0.106039987596014 0.106039987596014 -104.9687078 39.7111105 -104.9674682 39.7111011
-17169 5262 1912 0.201876443466571 0.201876443466571 -104.9739919 39.7056638 -104.9739477 39.707479
-4605 3695 4261 0.0511463408235916 0.0511463408235916 -104.9617464 39.6965839 -104.9611486 39.6965834
-3320 3225 3226 0.12416264535459 0.12416264535459 -105.0174873 39.7717281 -105.0189401 39.7717271
-19269 10421 10423 0.00254934916501421 0.00254934916501421 -104.9951815 39.7462368 -104.9951604 39.7462206
-18686 1372 4116 0.0631464225691973 0.0631464225691973 -105.0366894 39.7117844 -105.0367025 39.7112166
-20456 10811 10791 0.0266421174352104 0.0266421174352104 -105.022998 39.7596958 -105.0231621 39.7594921
-20624 10873 10804 0.10579809531994 0.10579809531994 -105.0229935 39.7611592 -105.0242305 39.7611919
-18140 10260 10273 0.404128367861769 0.404128367861769 -105.0164142 39.7874331 -105.0164012 39.7910675
-4673 4035 4316 0.0606123696093501 0.0606123696093501 -105.0344405 39.6976368 -105.03444 39.6970917
-3387 3285 3286 0.00355897702027561 0.00355897702027561 -104.9500244 39.7038338 -104.9499828 39.7038341
-3388 3286 3287 0.0772193168955733 0.0772193168955733 -104.9499828 39.7038341 -104.9490802 39.7038404
-18146 10276 10258 0.404206655907194 0.404206655907194 -105.0117797 39.791059 -105.0117945 39.7874239
-4696 808 3552 0.152717552993661 0.152717552993661 -104.9769333 39.7532524 -104.9769434 39.7546258
-3410 3303 3304 0.147141483236073 0.147141483236073 -104.9898413 39.756424 -104.9886307 39.7573647
-20283 10722 10688 0.0815558763222832 0.0815558763222832 -105.044096 39.7739592 -105.0440849 39.7746926
-20448 10804 10757 0.0136201124223367 0.0136201124223367 -105.0242305 39.7611919 -105.0243898 39.7611891
-20785 10292 10946 0.00447271282341959 0.00447271282341959 -105.0280151 39.7614164 -105.0280565 39.761441
-19630 10593 10504 0.00657829834277663 0.00657829834277663 -104.9910888 39.7082874 -104.9911657 39.7082872
-3431 3318 3319 0.157091916454475 0.157091916454475 -104.957059 39.7805126 -104.9570312 39.7819252
-20450 10805 10806 0.0327940652155406 0.0327940652155406 -105.0159721 39.7585081 -105.0163557 39.7585125
-4743 1385 4362 0.103327121803573 0.103327121803573 -105.0016028 39.7121409 -105.0015545 39.7112124
-18254 6754 8093 0.140439193425512 0.140439193425512 -105.0275819 39.7660439 -105.0259388 39.766049
-18250 9369 6873 0.0520299718080319 0.0520299718080319 -105.0258904 39.7692943 -105.025904 39.7697621
-20787 10932 5700 0.00677435562999442 0.00677435562999442 -105.0356849 39.762197 -105.035764 39.7622008
-3475 3354 3355 0.201619360833214 0.201619360833214 -104.9338255 39.7274243 -104.9338318 39.7292375
-14728 6303 5053 0.0505955795491821 0.0505955795491821 -104.9758778 39.7395535 -104.9764695 39.7395488
-3501 59 3374 0.0977645612190622 0.0977645612190622 -104.9247401 39.6995385 -104.9240963 39.6988121
-4808 4414 4415 0.102078381821333 0.102078381821333 -105.0298228 39.7058121 -105.0297971 39.7067299
-3525 3393 3394 0.0602077843108352 0.0602077843108352 -105.0351232 39.7277059 -105.0351404 39.7282472
-18251 6873 8493 0.0500003986375519 0.0500003986375519 -105.025904 39.7697621 -105.0258941 39.7702117
-3545 656 1887 0.0518725917476049 0.0518725917476049 -105.0346018 39.7589808 -105.0346033 39.7594473
-14732 5467 6342 0.17284299485541 0.17284299485541 -104.97589 39.7384222 -104.9758813 39.7368678
-3566 1664 1683 0.0314909646044893 0.0314909646044893 -105.034629 39.767391 -105.0346312 39.7676742
-17138 1909 4488 0.199449310001805 0.199449310001805 -104.9763514 39.7074715 -104.9762867 39.7092645
-18256 7043 3984 0.199449230757582 0.199449230757582 -105.0322741 39.7687942 -105.0299405 39.7688003
-4925 3762 2559 0.0885452473584724 0.0885452473584724 -105.0051409 39.7854596 -105.0051367 39.7862559
-18261 6496 2547 0.410253746717568 0.410253746717568 -105.0386639 39.7911236 -105.0386666 39.7874341
-3637 3478 3266 0.200452444377038 0.200452444377038 -104.9639908 39.7056725 -104.9639994 39.7038698
-3638 3266 3479 0.201663130575812 0.201663130575812 -104.9639994 39.7038698 -104.9639986 39.7020562
-20636 4518 10876 0.0502632727704227 0.0502632727704227 -105.0137768 39.7632209 -105.0137702 39.7627689
-3656 1794 3493 0.171297280470528 0.171297280470528 -104.9284394 39.6945392 -104.9285338 39.6930004
-18171 6061 4076 0.198476287736927 0.198476287736927 -105.0339562 39.7856259 -105.0339181 39.7838412
-20376 10759 10760 0.116931333825994 0.116931333825994 -105.0243509 39.7608348 -105.0229928 39.7607087
-3702 3537 3538 0.048566556365416 0.048566556365416 -104.9798091 39.6984199 -104.9792415 39.6984264
-20385 10293 10769 0.0538892457987372 0.0538892457987372 -105.0260789 39.759245 -105.0254485 39.7592401
-18174 6420 6455 0.4094647827628 0.4094647827628 -105.0245269 39.7874302 -105.024535 39.7911126
-5048 4577 4578 0.133343896044873 0.133343896044873 -105.0315052 39.7415025 -105.0330646 39.7415188
-3745 3575 3576 0.0911473636959273 0.0911473636959273 -104.9499292 39.7544371 -104.9488635 39.7544629
-3747 3577 3469 0.101252045857741 0.101252045857741 -104.9476756 39.7544343 -104.9464912 39.7544409
-20384 10767 10768 0.0160296914364663 0.0160296914364663 -105.0239411 39.7605037 -105.0241099 39.7605665
-17309 4261 5684 0.20074031502923 0.20074031502923 -104.9611486 39.6965834 -104.9611511 39.6947781
-18311 7054 7244 0.0289643230302344 0.0289643230302344 -105.0315008 39.7711217 -105.0311621 39.7711127
-20470 10819 10820 0.0323669425461701 0.0323669425461701 -105.0192728 39.7586316 -105.0188943 39.7586235
-14736 4161 4770 0.262098569801346 0.262098569801346 -104.9769715 39.7201202 -104.97698 39.7224773
-5118 4637 4638 0.0862888373921514 0.0862888373921514 -105.0198922 39.7331309 -105.0201418 39.7338828
-18265 6532 1691 0.20439620202731 0.20439620202731 -105.0398808 39.7657795 -105.039903 39.7676176
-20472 10821 10822 0.0473810496096361 0.0473810496096361 -105.0191892 39.758896 -105.0191858 39.7593221
-5168 2615 4670 0.0537518017226415 0.0537518017226415 -104.9940077 39.7225208 -104.9940093 39.7230042
-18530 9153 9524 0.0561612407510351 0.0561612407510351 -105.0338511 39.7495101 -105.0336803 39.7499978
-17081 882 4467 0.138148999917071 0.138148999917071 -104.9615915 39.7644962 -104.9615875 39.7657386
-20012 10207 7896 0.145636470907972 0.145636470907972 -104.9904003 39.7512676 -104.9891984 39.7521958
-20423 10784 10785 0.00445123207828982 0.00445123207828982 -105.0187393 39.7585283 -105.0187626 39.7585641
-19137 10436 10430 0.0315234230528839 0.0315234230528839 -105.0130548 39.7409589 -105.0132616 39.7411936
-17145 4684 1801 0.196612355705575 0.196612355705575 -104.9751601 39.6929864 -104.9751816 39.6947545
-3889 3694 83 0.201794860941248 0.201794860941248 -104.9616812 39.702043 -104.961704 39.7002283
-18574 10316 10323 0.0808271649311999 0.0808271649311999 -105.0343233 39.7828561 -105.0341543 39.7821409
-17148 3546 46 0.198774198414449 0.198774198414449 -104.9751709 39.6984277 -104.9751601 39.7002153
-3912 3710 3711 0.148294717491307 0.148294717491307 -104.9874523 39.7183509 -104.9891861 39.7183575
-20615 10786 10857 0.0479734082124594 0.0479734082124594 -105.0188457 39.7592189 -105.0184643 39.7595354
-18267 6545 2438 0.164157220604829 0.164157220604829 -105.039903 39.7694505 -105.0399004 39.7709268
-17099 332 3745 0.0956275481171213 0.0956275481171213 -104.9554298 39.7451641 -104.9546644 39.7457912
-14740 6607 3802 0.199799384709315 0.199799384709315 -104.9769867 39.7272649 -104.9769713 39.7290617
-18269 5736 5525 0.155855016610815 0.155855016610815 -105.0398843 39.7724635 -105.0398709 39.7738651
-5281 4748 4749 0.0137701294893219 0.0137701294893219 -104.9856194 39.7225378 -104.9854584 39.7225389
-3961 3755 3756 0.201785607236284 0.201785607236284 -105.0264145 39.7856195 -105.0264176 39.7874342
-3963 3757 1865 0.238183107088451 0.238183107088451 -104.9873962 39.696636 -104.9901799 39.6966614
-18538 10309 10310 0.222695826046938 0.222695826046938 -105.0483038 39.7607426 -105.0509091 39.7607413
-4053 3833 3834 0.0227974048946719 0.0227974048946719 -105.0428186 39.7485544 -105.0428357 39.748759
-18576 10324 10320 0.158325840757882 0.158325840757882 -105.0327262 39.781661 -105.0313943 39.7806712
-5401 3070 4833 0.174791291148441 0.174791291148441 -104.9437655 39.7130666 -104.9437517 39.7114947
-20827 9001 9205 0.0113889892669974 0.0113889892669974 -105.0253805 39.7605003 -105.0253893 39.7603981
-16010 9780 9781 0.00910284197008254 0.00910284197008254 -104.9993976 39.688968 -104.9994018 39.6890498
-18606 8065 6592 0.262343816062173 0.262343816062173 -105.0356674 39.7306063 -105.0356782 39.7329656
-18608 2631 5208 0.201029440504885 0.201029440504885 -105.0445241 39.7221383 -105.0445268 39.7239462
-20328 10745 10742 0.0339039031846942 0.0339039031846942 -105.0237282 39.7585962 -105.0237259 39.7589011
-4098 1552 3870 0.130787042699874 0.130787042699874 -104.944264 39.777781 -104.9440689 39.7789476
-16079 9815 9284 0.0214365694827313 0.0214365694827313 -104.9728236 39.7796294 -104.9725733 39.7796422
-18703 1861 7871 0.177358977412927 0.177358977412927 -105.0427108 39.7213283 -105.0426986 39.7197333
-5445 4865 4866 0.0483753395839426 0.0483753395839426 -104.9775716 39.7351373 -104.9770059 39.7351417
-4124 2246 3888 0.176179418850458 0.176179418850458 -104.9634985 39.733462 -104.9634642 39.7350462
-18692 1856 5978 0.157563244482301 0.157563244482301 -105.0391086 39.721333 -105.0391098 39.719916
-5513 4918 1222 0.0334183748575429 0.0334183748575429 -105.0119518 39.7375725 -105.0123423 39.7375848
-4193 3941 3942 0.10150841538758 0.10150841538758 -105.000152 39.7393746 -105.0001356 39.7384618
-18280 6739 6757 0.185196443942793 0.185196443942793 -105.0386693 39.7783767 -105.0386612 39.7767112
-18287 3986 6762 0.199195011240905 0.199195011240905 -105.0299471 39.7698868 -105.0276181 39.7698189
-4211 3961 3962 0.203354581445588 0.203354581445588 -105.0001766 39.7184091 -105.0001681 39.7165803
-18282 6460 6792 0.289344591592559 0.289344591592559 -105.0386826 39.775685 -105.038701 39.7730829
-18709 7654 7506 0.191266971634704 0.191266971634704 -105.0411042 39.7282537 -105.0410987 39.7299738
-4258 4004 4005 0.0557864946968893 0.0557864946968893 -105.0300506 39.7288149 -105.0300506 39.7293166
-18293 6900 6901 0.125065642459057 0.125065642459057 -105.0409865 39.7832584 -105.0409738 39.7821337
-4279 4022 4023 0.136471513645059 0.136471513645059 -105.0299425 39.7548206 -105.0299339 39.7560479
-18285 6794 6824 0.0676234540262284 0.0676234540262284 -105.0322928 39.76996 -105.0315024 39.7699322
-20412 10780 10737 0.00327519593576582 0.00327519593576582 -105.0250471 39.7600231 -105.0250397 39.7599942
-5639 1165 885 0.138504687840451 0.138504687840451 -104.9585626 39.7632361 -104.9585659 39.7644817
-18705 4059 9745 0.17218742858343 0.17218742858343 -105.0426948 39.7181453 -105.0428433 39.716601
-5680 5036 5037 0.13925145495263 0.13925145495263 -104.9757455 39.7507464 -104.9757231 39.7519986
-4340 4070 4006 0.0527657969561626 0.0527657969561626 -105.0293098 39.784231 -105.0299104 39.7841207
-4341 4006 4071 0.045563339939639 0.045563339939639 -105.0299104 39.7841207 -105.0304275 39.7840207
-18706 9745 3863 0.0360430655172132 0.0360430655172132 -105.0428433 39.716601 -105.0432639 39.7165811
-4363 4087 1214 0.050228703045046 0.050228703045046 -105.0117891 39.7838304 -105.0123769 39.7838268
-18708 6218 7654 0.273874816557472 0.273874816557472 -105.0410732 39.7257908 -105.0411042 39.7282537
-14701 5065 986 0.133961657579708 0.133961657579708 -104.9746455 39.7240692 -104.9740817 39.7251932
-4385 4078 4080 0.499220390775423 0.499220390775423 -104.9910214 39.7840807 -104.9968637 39.7840925
-17161 5086 5087 0.0305453434226413 0.0305453434226413 -104.9740443 39.690895 -104.9740434 39.6911697
-4410 4124 3048 0.142041157035339 0.142041157035339 -104.9512246 39.7581873 -104.9511947 39.7594645
-18547 10315 7542 0.326789019301198 0.326789019301198 -105.0487786 39.766951 -105.0449552 39.7669613
-5780 4917 5106 0.0912724900005868 0.0912724900005868 -104.9558286 39.7101945 -104.9558382 39.7110153
-4431 4139 2389 0.109327413388579 0.109327413388579 -104.9508399 39.7728937 -104.950844 39.7738769
-5754 5082 5083 0.0244848814587712 0.0244848814587712 -104.9957853 39.7079855 -104.9957531 39.7077667
-18548 7542 5567 0.0788647232749776 0.0788647232749776 -105.0449552 39.7669613 -105.0440325 39.7669654
-5829 5144 5145 0.0718528722690416 0.0718528722690416 -104.9280639 39.7313625 -104.9273197 39.7310625
-4478 4170 4171 0.114300734663783 0.114300734663783 -104.9694426 39.7200889 -104.9681062 39.7200857
-14104 421 3767 0.239382300921688 0.239382300921688 -104.9424633 39.7443997 -104.9431585 39.7464851
-5849 1966 5160 0.213373795201997 0.213373795201997 -104.9270076 39.7437306 -104.9270451 39.7456493
-4498 1369 4184 0.105991036166523 0.105991036166523 -104.9923595 39.7121202 -104.9923849 39.7111672
-17123 3542 42 0.197838013671145 0.197838013671145 -104.977531 39.6984299 -104.9775311 39.7002091
-18295 1428 6901 0.00619376962359973 0.00619376962359973 -105.0409732 39.782078 -105.0409738 39.7821337
-18296 6901 6968 0.214788257098635 0.214788257098635 -105.0409738 39.7821337 -105.0409894 39.7802021
-5920 5198 5199 0.0509206897939403 0.0509206897939403 -104.9957805 39.7241162 -104.9963759 39.7241168
-4576 4176 1777 0.0501165848501884 0.0501165848501884 -104.9775098 39.6966104 -104.9769241 39.6966037
-20629 10873 10847 0.0359844691550279 0.0359844691550279 -105.0229935 39.7611592 -105.0229893 39.7608356
-18356 7764 7765 0.203486837058476 0.203486837058476 -105.035177 39.7783841 -105.0351796 39.7802141
-18353 7040 3427 0.201724758100166 0.201724758100166 -105.0322731 39.7669531 -105.0346332 39.7669387
-6017 3447 5269 0.0916999906376171 0.0916999906376171 -104.9462338 39.7680932 -104.9451609 39.7680906
-4669 4312 4313 0.0844811623232087 0.0844811623232087 -105.0344662 39.7021142 -105.0344405 39.7013547
-18355 7763 7764 0.18255985476615 0.18255985476615 -105.0351781 39.7767423 -105.035177 39.7783841
-20388 10772 10773 0.00806462172146812 0.00806462172146812 -105.0237551 39.7606258 -105.0238489 39.7606336
-4690 1574 4327 0.172428634063548 0.172428634063548 -105.0360845 39.6869978 -105.0362476 39.6854522
-14761 7128 660 0.183084210873309 0.183084210873309 -104.9793265 39.7400224 -104.9793171 39.7416689
-18307 7041 3428 0.200871545358079 0.200871545358079 -105.0322795 39.7678767 -105.0346296 39.7678582
-4768 2038 4380 0.146902820961905 0.146902820961905 -104.9740667 39.759206 -104.9752846 39.7582739
-18357 7765 7253 0.0959812077322034 0.0959812077322034 -105.0351796 39.7802141 -105.0351261 39.7810763
-17178 5409 5410 0.041431272963648 0.041431272963648 -104.9704716 39.6889796 -104.9704709 39.6893522
-4841 4434 4435 0.0243817622036277 0.0243817622036277 -104.957527 39.709294 -104.957697 39.709118
-19636 10595 10596 0.0236895488952709 0.0236895488952709 -104.9882841 39.7073658 -104.9881372 39.7071852
-20494 10814 10837 0.00453902687683386 0.00453902687683386 -105.0192222 39.758524 -105.0192753 39.758524
-12316 8640 8559 0.0170391288088959 0.0170391288088959 -105.0078019 39.7541251 -105.0076796 39.7542461
-4864 4448 4449 0.051463626660104 0.051463626660104 -104.9785732 39.7570722 -104.9789969 39.757401
-14105 3767 490 0.17231974049998 0.17231974049998 -104.9431585 39.7464851 -104.9415277 39.7473958
-18310 7244 7054 0.0289643230302344 0.0289643230302344 -105.0311621 39.7711127 -105.0315008 39.7711217
-4906 3886 865 0.080856531304005 0.080856531304005 -104.9437961 39.7657098 -104.9428501 39.7657082
-14762 660 7162 0.177556995744578 0.177556995744578 -104.9793171 39.7416689 -104.9793413 39.7432656
-14106 490 492 0.200841500024827 0.200841500024827 -104.9415277 39.7473958 -104.9415359 39.749202
-6278 5468 5223 0.0507325637005759 0.0507325637005759 -104.9753042 39.7384242 -104.9747109 39.7384283
-20498 2955 10783 0.00926966063781334 0.00926966063781334 -105.0159686 39.7584009 -105.0159618 39.7583177
-18511 9529 10302 0.134870017545438 0.134870017545438 -105.0410698 39.7499582 -105.0410619 39.7511711
-18559 10317 10318 0.0818849597364774 0.0818849597364774 -105.03063 39.7832519 -105.0297002 39.7834301
-5006 4551 4552 0.0605833275140723 0.0605833275140723 -105.0217216 39.7338931 -105.0217376 39.7344378
-20497 10805 2955 0.011923850145444 0.011923850145444 -105.0159721 39.7585081 -105.0159686 39.7584009
-6365 1258 377 0.0777271141684953 0.0777271141684953 -105.0204854 39.7741292 -105.0213949 39.7741289
-5032 3218 4567 0.203476554448063 0.203476554448063 -104.9605331 39.7111143 -104.9605404 39.7092844
-18309 3989 7244 0.103816807067418 0.103816807067418 -105.0299481 39.7710804 -105.0311621 39.7711127
-6389 5536 5537 0.0941709460297732 0.0941709460297732 -104.9948277 39.7742296 -104.9959296 39.7742339
-5052 4580 4581 0.0994044886957745 0.0994044886957745 -105.0369879 39.7415159 -105.0381505 39.741515
-19827 9253 7642 0.176656738058614 0.176656738058614 -105.0022016 39.7289106 -105.0022097 39.7273219
-18315 7190 1430 0.126827993445383 0.126827993445383 -105.0421451 39.7832183 -105.0421723 39.7820779
-18691 2597 1856 0.178902858758576 0.178902858758576 -105.0391167 39.7229419 -105.0391086 39.721333
-6529 1038 5638 0.106710156184621 0.106710156184621 -104.9622461 39.7557325 -104.9609978 39.7557305
-5211 4703 4704 0.0593965930317325 0.0593965930317325 -104.9883469 39.709334 -104.9890412 39.7093409
-18320 7455 6063 0.193748278871749 0.193748278871749 -105.0363356 39.7838724 -105.0363465 39.7856148
-5307 4763 4764 0.0623737801227747 0.0623737801227747 -104.9601753 39.7225386 -104.959446 39.7225375
-20402 10771 10761 0.045832556045337 0.045832556045337 -105.0250699 39.7607782 -105.0250806 39.7603661
-6659 5732 716 0.0227471694550216 0.0227471694550216 -105.0039126 39.7730596 -105.0041786 39.7730524
-5331 3596 4783 0.0944705655668644 0.0944705655668644 -104.9293972 39.7231683 -104.9282926 39.7231695
-14107 492 502 0.277229511676695 0.277229511676695 -104.9415359 39.749202 -104.9447772 39.7492764
-6732 5783 5784 0.103949862025848 0.103949862025848 -104.9941411 39.7504097 -104.9949995 39.7510718
-14767 7420 4860 0.190666070334235 0.190666070334235 -104.9804389 39.7368731 -104.9804415 39.7351584
-20406 8354 10772 0.00730920335045724 0.00730920335045724 -105.0236698 39.7606212 -105.0237551 39.7606258
-6754 5799 5800 0.0473962648551068 0.0473962648551068 -105.0328002 39.7874226 -105.0333549 39.7874228
-14769 7430 4858 0.18998910813567 0.18998910813567 -104.9816663 39.7368655 -104.981675 39.7351569
-5443 4863 4864 0.0452091651037792 0.0452091651037792 -104.9787104 39.7351477 -104.9781817 39.7351466
-19834 10654 9725 0.196434640947063 0.196434640947063 -105.0398868 39.736613 -105.0393021 39.7349046
-6799 2741 5836 0.0500630331544159 0.0500630331544159 -104.9558357 39.6911246 -104.9552507 39.6911326
-20523 2708 10752 0.00659207654644855 0.00659207654644855 -105.0229124 39.7619341 -105.0229895 39.7619327
-18323 7479 7480 0.203575671880267 0.203575671880267 -105.0433631 39.7802085 -105.043363 39.7783777
-18329 6073 7593 0.194237102947714 0.194237102947714 -105.0433238 39.7856121 -105.0433336 39.7838653
-5506 4912 2121 0.0993922299820147 0.0993922299820147 -104.9280548 39.7346813 -104.9268925 39.7346889
-19837 5204 5602 0.169326060361496 0.169326060361496 -105.000925 39.7241245 -105.0016002 39.725556
-6868 3299 5873 0.0385426751655708 0.0385426751655708 -105.0432684 39.7149673 -105.043719 39.7149652
-5529 4929 4930 0.0186787878300106 0.0186787878300106 -104.9980335 39.7400187 -104.9981378 39.7401663
-5530 4930 4931 0.150638241291928 0.150638241291928 -104.9981378 39.7401663 -104.9988399 39.7414088
-20519 10815 10845 0.0426977620157165 0.0426977620157165 -105.0192433 39.7583417 -105.0187438 39.7583413
-6909 5905 5906 0.0925705753401188 0.0925705753401188 -104.9394475 39.7492413 -104.9383649 39.7492571
-5581 4968 4969 0.19364655602673 0.19364655602673 -104.9800866 39.7801495 -104.9800922 39.781891
-20802 10942 606 0.00932539286509621 0.00932539286509621 -105.0279694 39.7630233 -105.0278867 39.763078
-20522 10808 2708 0.0062556157491122 0.0062556157491122 -105.0228402 39.7619433 -105.0229124 39.7619341
-5631 3571 5004 0.140817256140417 0.140817256140417 -104.9585602 39.75446 -104.9585604 39.7557264
-18338 2435 7632 0.201752260263955 0.201752260263955 -105.0387198 39.7712682 -105.038723 39.7730826
-20016 2696 8044 0.148197142125826 0.148197142125826 -104.984388 39.7559539 -104.9831794 39.7569094
-5653 2345 4151 0.175358365382788 0.175358365382788 -104.9585534 39.7194149 -104.9582358 39.7209729
-18327 1432 7191 0.123062885737589 0.123062885737589 -105.0433255 39.7820793 -105.0433363 39.783186
-6998 2684 5970 0.144359466732262 0.144359466732262 -104.9795298 39.7522538 -104.9783626 39.753192
-5670 679 5028 0.00422540721209624 0.00422540721209624 -104.9591758 39.7416126 -104.9591758 39.7416506
-5671 5028 5029 0.199984733552555 0.199984733552555 -104.9591758 39.7416506 -104.9591698 39.7434491
-20382 10765 10766 0.0345648031474255 0.0345648031474255 -105.023905 39.7606411 -105.0243045 39.7606892
-18350 7716 6756 0.141149359906032 0.141149359906032 -105.0259442 39.7669727 -105.0275956 39.7669634
-5748 5078 5079 0.20268033504505 0.20268033504505 -105.0378651 39.6985745 -105.0378823 39.6967518
-18163 10259 6036 0.2014076606309 0.2014076606309 -105.0152653 39.7874334 -105.0152693 39.7856221
-14704 5105 3799 0.199599075644316 0.199599075644316 -104.9735001 39.7272799 -104.9734712 39.7290748
-18162 2170 10259 0.118558518008842 0.118558518008842 -105.0146867 39.7884025 -105.0152653 39.7874334
-20019 4453 5501 0.145746885757253 0.145746885757253 -104.980759 39.7587503 -104.9796104 39.759719
-5830 5145 2118 0.0459910302398271 0.0459910302398271 -104.9273197 39.7310625 -104.9268844 39.7308196
-20020 5501 7075 0.147873409818305 0.147873409818305 -104.9796104 39.759719 -104.9783828 39.760656
-14776 5927 3806 0.151596310173331 0.151596310173331 -104.9804991 39.7304325 -104.9805124 39.7290692
-5853 4622 5163 0.10255879316328 0.10255879316328 -104.9274625 39.7446677 -104.9274829 39.7455899
-18343 7662 5247 0.110734380038432 0.110734380038432 -105.0351663 39.7639675 -105.0351958 39.7649631
-20022 8291 7898 0.145585163841291 0.145585163841291 -104.9912817 39.7519386 -104.9900722 39.7528603
-7192 6084 6085 0.188916282974339 0.188916282974339 -105.0300536 39.7630057 -105.0322636 39.7629835
-18345 6874 1684 0.205522453761373 0.205522453761373 -105.0351985 39.7658172 -105.0352055 39.7676655
-20542 2953 10853 0.0105529318413212 0.0105529318413212 -105.0157188 39.7584009 -105.015713 39.7584957
-18348 2429 7700 0.202520445331427 0.202520445331427 -105.0352091 39.7713194 -105.0352012 39.7731407
-20024 8856 9319 0.148299248554164 0.148299248554164 -104.988892 39.7538026 -104.9876534 39.7547364
-7238 4839 1519 0.0519761467059316 0.0519761467059316 -104.9751709 39.7092743 -104.9745633 39.7092771
-14772 923 5925 0.177924520685585 0.177924520685585 -104.9816421 39.7320276 -104.9816081 39.7304277
-20544 10831 10809 0.07258379165013 0.07258379165013 -105.0193747 39.7583443 -105.0193936 39.7576917
-5934 4646 3645 0.198637387669602 0.198637387669602 -105.0186425 39.7238822 -105.0209651 39.7238828
-20537 10850 10851 0.00393462806086889 0.00393462806086889 -105.0226484 39.7596157 -105.0226242 39.7596458
-7284 6141 11 0.135513694564746 0.135513694564746 -105.0283644 39.7451504 -105.0283851 39.746369
-5958 5230 5231 0.202816769336327 0.202816769336327 -104.9546568 39.6947809 -104.9546783 39.692957
-20538 10764 10852 0.00745697116010785 0.00745697116010785 -105.0249892 39.7609136 -105.0249031 39.7609028
-7311 5071 6157 0.164940273242935 0.164940273242935 -105.037844 39.6894614 -105.0390628 39.6883122
-5976 4624 1247 0.13286062727511 0.13286062727511 -105.0189554 39.7644371 -105.0205098 39.764433
-5978 4556 2725 0.132159028738313 0.132159028738313 -105.0220655 39.7644258 -105.0236117 39.7644248
-20539 10852 10833 0.00647861100893927 0.00647861100893927 -105.0249031 39.7609028 -105.0248283 39.7608934
-7339 6169 6170 0.0619567458929491 0.0619567458929491 -104.9601619 39.7241291 -104.9594375 39.7241351
-5998 5256 5257 0.103904946256075 0.103904946256075 -104.9671812 39.7681442 -104.9659655 39.7681412
-19289 10469 10470 0.0657689911002152 0.0657689911002152 -104.9881479 39.7392371 -104.988856 39.7394681
-20550 10854 10842 0.00418096419493106 0.00418096419493106 -105.0159697 39.7588715 -105.0159695 39.7589091
-6016 5268 3447 0.109289564409357 0.109289564409357 -104.9475125 39.7680963 -104.9462338 39.7680932
-20541 10846 2953 0.0102415664506872 0.0102415664506872 -105.0157176 39.7583088 -105.0157188 39.7584009
-6042 2870 5284 0.0497761483323909 0.0497761483323909 -104.9829275 39.7855836 -104.982919 39.785136
-20446 10802 10794 0.010877497210246 0.010877497210246 -105.0218433 39.761098 -105.0218405 39.7610002
-6066 1342 5306 0.205811743638723 0.205811743638723 -105.0226989 39.7129828 -105.0226912 39.7111319
-20547 2961 10838 0.0117661269256179 0.0117661269256179 -105.021139 39.7584434 -105.0210227 39.7583868
-7483 6261 1188 0.16816674729097 0.16816674729097 -104.9613184 39.7256069 -104.9613359 39.7271192
-6138 3644 4554 0.0976185559336041 0.0976185559336041 -105.0209565 39.7228992 -105.0220979 39.7228967
-18364 7802 1660 0.0598129332818693 0.0598129332818693 -105.0259573 39.7679612 -105.0259529 39.7674233
-7554 6302 1356 0.0804502555219789 0.0804502555219789 -105.015828 39.7832739 -105.015824 39.7825504
-6209 5412 1185 0.167137462035015 0.167137462035015 -104.9658624 39.7255988 -104.9658583 39.7271019
-6210 1185 5413 0.0233182677092941 0.0233182677092941 -104.9658583 39.7271019 -104.9658604 39.7273116
-14730 6318 6303 0.0522173167652759 0.0522173167652759 -104.9758794 39.7400231 -104.9758778 39.7395535
-20234 10715 10714 0.0286157939247338 0.0286157939247338 -104.9412314 39.693774 -104.9409313 39.6936604
-20565 1287 10855 0.00858462136960439 0.00858462136960439 -105.0205384 39.7583461 -105.020438 39.7583443
-6251 5443 779 0.0160681132894306 0.0160681132894306 -105.0250652 39.7022173 -105.0250638 39.7020728
-14783 4856 7862 0.182896538603858 0.182896538603858 -104.9828985 39.7352253 -104.982911 39.7368701
-6272 5463 5464 0.0498340640254978 0.0498340640254978 -104.9798976 39.7384177 -104.9793148 39.7384144
-20235 10714 8820 0.0168131405425372 0.0168131405425372 -104.9409313 39.6936604 -104.9407348 39.6936614
-6293 5477 3890 0.10549800375505 0.10549800375505 -104.964716 39.7383814 -104.9634822 39.7383772
-16545 7835 9934 0.137971408959184 0.137971408959184 -104.975145 39.7519832 -104.9751503 39.7507424
-6362 351 5522 0.0335008525021526 0.0335008525021526 -105.0171199 39.7741304 -105.0175119 39.7741304
-16018 9787 9788 0.0995758326234823 0.0995758326234823 -105.0053015 39.6892589 -105.0062451 39.6887348
-6387 5535 2028 0.107888528337289 0.107888528337289 -104.9923558 39.7742164 -104.9936175 39.7741835
-20242 10717 10716 0.029516495512001 0.029516495512001 -104.9410012 39.6961469 -104.9411444 39.6963884
-7774 5212 6424 0.109568567873903 0.109568567873903 -105.0174804 39.7238894 -105.0175106 39.7248745
-16546 9934 9935 0.139302196645357 0.139302196645357 -104.9751503 39.7507424 -104.9751681 39.7494897
-20562 10798 10807 0.0058401189840652 0.0058401189840652 -105.0218855 39.7619462 -105.0219538 39.7619476
-15113 3050 7229 0.0133472139691031 0.0133472139691031 -104.9963681 39.7597212 -104.996479 39.7596367
-20245 8372 6959 0.0489264341729089 0.0489264341729089 -105.0357622 39.7454303 -105.0353181 39.7451528
-11422 8078 8079 0.0484137060021889 0.0484137060021889 -105.043577 39.7835803 -105.0441387 39.7836373
-6473 5599 5600 0.108658521887425 0.108658521887425 -105.0015794 39.7184418 -105.0015966 39.7194189
-15115 7996 7997 0.209391166364433 0.209391166364433 -104.9977757 39.7584584 -104.9977757 39.7603415
-18367 7754 8093 0.0507390772270922 0.0507390772270922 -105.0259422 39.7665053 -105.0259388 39.766049
-20352 10751 9401 0.00837355044160468 0.00837355044160468 -105.0253759 39.7585688 -105.025278 39.7585714
-6492 5616 5617 0.0720767157725574 0.0720767157725574 -105.0015651 39.7393715 -105.0015669 39.7400197
-14721 2221 4871 0.160443069505019 0.160443069505019 -104.9735163 39.7337028 -104.9735383 39.7351456
-18368 8093 6894 0.0518148786998363 0.0518148786998363 -105.0259388 39.766049 -105.0259502 39.7655831
-16020 9789 9788 0.073636854952175 0.073636854952175 -105.0063551 39.6893916 -105.0062451 39.6887348
-7896 6503 6504 0.201046575537805 0.201046575537805 -104.9503891 39.7819179 -104.9503707 39.7837259
-16547 9935 3668 0.222625726498778 0.222625726498778 -104.9751681 39.7494897 -104.9751801 39.7474876
-11416 8000 8034 0.303468507056762 0.303468507056762 -105.0252653 39.7846442 -105.0287237 39.7840235
-6579 5669 5670 0.150406237761818 0.150406237761818 -105.0311012 39.7566748 -105.0310884 39.7580274
-20845 10954 10937 0.131662909083966 0.131662909083966 -105.0254122 39.760199 -105.0266441 39.7609098
-6604 5693 4324 0.222481680681729 0.222481680681729 -105.0324406 39.7067365 -105.0350413 39.7067233
-18371 5250 7594 0.0499247461563453 0.0499247461563453 -105.0259394 39.7646609 -105.0259281 39.764212
-15222 8101 8102 0.077833708774634 0.077833708774634 -105.0417114 39.7441064 -105.0426126 39.7442054
-18372 7594 5883 0.083286408265142 0.083286408265142 -105.0259281 39.764212 -105.025945 39.7634631
-6714 5766 2843 0.181402526618843 0.181402526618843 -104.9316752 39.6938788 -104.9295552 39.693859
-14742 5935 931 0.176525948040391 0.176525948040391 -104.9769887 39.7304575 -104.9770026 39.732045
-20409 8971 8976 0.00824136098890487 0.00824136098890487 -105.0250832 39.760307 -105.0250886 39.760233
-17573 10146 4643 0.00925827675066928 0.00925827675066928 -105.0192547 39.73083 -105.0192742 39.7307481
-8175 6672 3101 0.17546713620256 0.17546713620256 -104.9362682 39.7146512 -104.9362596 39.7130732
-11210 300 106 0.00724031766776508 0.00724031766776508 -104.931659 39.700286 -104.931654 39.700221
-8223 6696 951 0.177624298281023 0.177624298281023 -104.9494801 39.7305216 -104.9494887 39.732119
-6856 4317 5865 0.0513037576080921 0.0513037576080921 -105.034904 39.7149636 -105.0355038 39.7149636
-18335 7611 1689 0.102723820359578 0.102723820359578 -105.0387087 39.7667047 -105.0387013 39.7676285
-20356 10752 10753 0.178510491347886 0.178510491347886 -105.0229895 39.7619327 -105.0250779 39.761939
-6873 5878 5879 0.686284794666677 0.686284794666677 -105.045238 39.6917061 -105.0531962 39.6924757
-11609 3416 7035 0.200128365503357 0.200128365503357 -105.0346041 39.7625399 -105.0322628 39.7625513
-11610 7035 8338 0.189938999172283 0.189938999172283 -105.0322628 39.7625513 -105.0300407 39.7625615
-6895 5896 4960 0.0956843495121368 0.0956843495121368 -105.0109828 39.7056561 -105.0109882 39.7047956
-11335 8218 251 0.176906123725318 0.176906123725318 -104.9994384 39.7289153 -104.9994212 39.7305062
-17668 10162 10161 0.0392525789715303 0.0392525789715303 -104.9861062 39.7795141 -104.9856475 39.7795327
-8321 6751 5251 0.0499574491010493 0.0499574491010493 -105.0275693 39.7642092 -105.0275802 39.7646584
-17670 8260 9051 0.230562637224967 0.230562637224967 -104.9794547 39.7798315 -104.9821447 39.7799919
-8340 6769 5533 0.120999789974565 0.120999789974565 -105.0275913 39.7729556 -105.027737 39.774038
-11366 7971 1892 0.0488719799669425 0.0488719799669425 -105.0053146 39.761583 -105.0052777 39.7620216
-6977 4442 5511 0.147695461409276 0.147695461409276 -104.9759203 39.7550431 -104.974688 39.7559741
-14750 2214 929 0.185352492811126 0.185352492811126 -104.9781559 39.7337051 -104.9781467 39.7320382
-7030 4913 5988 0.198333075719104 0.198333075719104 -104.9257471 39.7346951 -104.9257168 39.7364786
-18693 5978 6025 0.00688297127309608 0.00688297127309608 -105.0391098 39.719916 -105.0391099 39.7198541
-11612 3418 742 0.19996057055502 0.19996057055502 -105.0346033 39.763439 -105.0322639 39.7634453
-20437 10795 10796 0.0230619881865373 0.0230619881865373 -105.0227368 39.7610963 -105.0226193 39.761283
-11948 8496 8497 0.0216014239716138 0.0216014239716138 -105.013905 39.7558225 -105.0139116 39.7556283
-7132 1290 6044 0.0502638300231986 0.0502638300231986 -105.0204693 39.7856314 -105.0210575 39.7856258
-11686 1032 773 0.0128283485920152 0.0128283485920152 -105.0019469 39.752933 -105.0019256 39.7530472
-8554 4804 6890 0.135875328970406 0.135875328970406 -105.0127751 39.765645 -105.0143648 39.7656412
-11767 2687 8406 0.0738017906986337 0.0738017906986337 -104.9808835 39.7532566 -104.9814866 39.7527817
-8601 2178 596 0.0528183519637533 0.0528183519637533 -105.01465 39.7765593 -105.015268 39.7765659
-7225 6106 6107 0.101643082422806 0.101643082422806 -104.9863727 39.7093097 -104.9851845 39.7093159
-11821 8422 8423 0.175711465733647 0.175711465733647 -105.0135792 39.7398604 -105.013871 39.7414246
-8624 109 720 0.104166949267626 0.104166949267626 -105.002935 39.7765792 -105.0041538 39.776566
-18552 7705 2988 0.199131268231619 0.199131268231619 -105.0422469 39.7567047 -105.0422605 39.7584955
-14770 4858 2209 0.16101488662795 0.16101488662795 -104.981675 39.7351569 -104.9816406 39.7337091
-7328 6165 6166 0.0995968460919669 0.0995968460919669 -104.9688892 39.7713666 -104.9697218 39.7719933
-12286 8526 8525 0.0214801658544325 0.0214801658544325 -105.0049596 39.7505226 -105.0047107 39.7504962
-7376 337 6196 0.0756391181616623 0.0756391181616623 -104.9373307 39.7804664 -104.9364456 39.7804736
-12217 8592 8593 0.114913209514243 0.114913209514243 -105.0036056 39.7454327 -105.0029536 39.744529
-12317 8559 2500 0.0435792910401613 0.0435792910401613 -105.0076796 39.7542461 -105.0073403 39.7545386
-8839 528 7032 0.050727128416239 0.050727128416239 -105.0322618 39.7598749 -105.032262 39.7603311
-7478 6259 1180 0.207751884347626 0.207751884347626 -104.999187 39.6994545 -104.9967587 39.6994606
-18554 9429 7706 0.20403157089995 0.20403157089995 -105.0434221 39.7548692 -105.0434221 39.7567041
-15821 8564 8565 0.0641361466923926 0.0641361466923926 -105.0273775 39.7358643 -105.0275518 39.7353033
-8860 7045 7046 0.134234542647931 0.134234542647931 -105.0314642 39.7767176 -105.0314652 39.7779248
-7498 4598 3688 0.240872387579393 0.240872387579393 -104.9610007 39.7447808 -104.9609894 39.746947
-7499 3688 6270 0.142331405185985 0.142331405185985 -104.9609894 39.746947 -104.960998 39.748227
-20649 10880 1676 0.0578550543011222 0.0578550543011222 -105.0146396 39.7675397 -105.0146419 39.76806
-12236 8586 1599 0.0967599085697604 0.0967599085697604 -105.0012044 39.74196 -105.0021858 39.7415267
-7572 5861 1309 0.178473387298321 0.178473387298321 -105.0324691 39.7149773 -105.0324406 39.7133724
-18324 7480 7524 0.15130858595047 0.15130858595047 -105.043363 39.7783777 -105.0433477 39.777017
-7598 6323 6324 0.205483069278936 0.205483069278936 -104.9663246 39.7020694 -104.9663063 39.7002215
-17836 9362 1627 0.0523901213643909 0.0523901213643909 -104.9999965 39.7692821 -104.9994072 39.7691524
-14759 7101 5464 0.170276074046912 0.170276074046912 -104.9792889 39.7368832 -104.9793148 39.7384144
-14760 5464 7128 0.178804240685068 0.178804240685068 -104.9793148 39.7384144 -104.9793265 39.7400224
-7640 6024 3875 0.0993805589791004 0.0993805589791004 -104.9453106 39.7581922 -104.944148 39.7581905
-16021 9788 9790 0.320911397883896 0.320911397883896 -105.0062451 39.6887348 -105.0063095 39.6858492
-9035 7131 7132 0.0496921831493493 0.0496921831493493 -105.0375424 39.7347779 -105.0381234 39.7347872
-18491 9168 9169 0.133423914370859 0.133423914370859 -105.0422474 39.7487571 -105.0422538 39.749957
-17837 1627 5679 0.10292857902181 0.10292857902181 -104.9994072 39.7691524 -104.9982029 39.7691518
-9059 2896 5632 0.0842038197459281 0.0842038197459281 -104.9733529 39.7551547 -104.9727182 39.7557338
-20806 7427 10935 0.00559704943884798 0.00559704943884798 -105.0369381 39.7621971 -105.0370035 39.7621946
-12938 1970 8709 0.0935507240006809 0.0935507240006809 -105.0018024 39.7442826 -105.0028925 39.7443552
-11439 511 8252 0.25940626826434 0.25940626826434 -105.0312479 39.7836347 -105.0342719 39.7834294
-7695 5168 6377 0.177825109084943 0.177825109084943 -104.9449622 39.716238 -104.9449725 39.7146388
-20708 7442 10913 0.0784445493600802 0.0784445493600802 -105.0275322 39.7638138 -105.0277761 39.7631337
-9099 6388 7159 0.131345505242465 0.131345505242465 -105.0381277 39.7475739 -105.0381363 39.7487551
-11441 8256 8255 0.0395721958074786 0.0395721958074786 -105.0155373 39.7837344 -105.0160004 39.7837363
-19809 5615 9635 0.105426130739244 0.105426130739244 -105.0015645 39.7393 -105.0021668 39.7384727
-9145 5720 7186 0.100417695742859 0.100417695742859 -105.0357487 39.7831573 -105.0369189 39.7832402
-11443 8254 8257 0.03964069530807 0.03964069530807 -105.0159925 39.7835953 -105.0155286 39.7835973
-7788 6432 6433 0.0533345329573706 0.0533345329573706 -105.0177887 39.7548225 -105.0178088 39.7553019
-12939 8709 8766 0.0775671350558112 0.0775671350558112 -105.0028925 39.7443552 -105.0021048 39.7447013
-9187 7207 7208 0.0500116374722849 0.0500116374722849 -104.9821537 39.693012 -104.9815692 39.6930097
-7811 838 6446 0.0830965282034823 0.0830965282034823 -104.9427798 39.7746589 -104.9423252 39.7753195
-7816 6449 2813 0.0739587262737054 0.0739587262737054 -104.9904536 39.7751772 -104.9913173 39.7752191
-12260 8617 8618 0.00726192949201925 0.00726192949201925 -105.0083585 39.7576557 -105.0084208 39.7577001
-20803 606 10913 0.0113017508087441 0.0113017508087441 -105.0278867 39.763078 -105.0277761 39.7631337
-9235 7240 7241 0.0498075431237363 0.0498075431237363 -104.9792633 39.7057342 -104.9786816 39.7057151
-7861 6474 6475 0.692905896897531 0.692905896897531 -105.0451381 39.7747614 -105.053246 39.7747583
-12942 8804 1331 0.0594619846778877 0.0594619846778877 -105.0013561 39.7437151 -105.0019226 39.7434049
-12264 8622 8616 0.0863852743591186 0.0863852743591186 -105.0070785 39.7566504 -105.0077835 39.757207
-7908 6511 6512 0.107336468131195 0.107336468131195 -104.940586 39.787473 -104.9405864 39.7865077
-20811 10951 7034 0.00453220039269765 0.00453220039269765 -105.0322095 39.7622183 -105.0322625 39.7622195
-13006 8912 8913 0.031616887141609 0.031616887141609 -104.9956858 39.7676849 -104.9953476 39.7678001
-7929 4175 6525 0.0337195393803404 0.0337195393803404 -104.9775465 39.6932215 -104.9772938 39.6929888
-20394 10762 10775 0.00651572160316994 0.00651572160316994 -105.0243849 39.7600288 -105.0243213 39.7599965
-20400 3591 10771 0.0086403574168429 0.0086403574168429 -105.025071 39.7608559 -105.0250699 39.7607782
-8000 6560 6561 0.05117078549911 0.05117078549911 -104.9868584 39.7241275 -104.9862601 39.7241317
-18914 10389 10392 0.00619620469246147 0.00619620469246147 -105.0126265 39.7501937 -105.0126753 39.7502349
-8024 6580 6581 0.135411748293681 0.135411748293681 -105.0113223 39.732461 -105.0128679 39.7321961
-8047 5711 6593 0.0649690182450408 0.0649690182450408 -105.0362237 39.7329601 -105.0369834 39.7329675
-20509 10841 638 0.00591881170263726 0.00591881170263726 -105.0181411 39.7583408 -105.0180723 39.7583468
-12270 8627 8518 0.0752716608672627 0.0752716608672627 -105.0066278 39.7560666 -105.0071312 39.7555112
-15918 9104 9746 0.00764030702792677 0.00764030702792677 -105.0421714 39.7165106 -105.0421231 39.7165684
-8143 6654 1583 0.150966803397046 0.150966803397046 -105.0452294 39.6895265 -105.0452106 39.6881689
-18477 2411 5542 0.101313827089111 0.101313827089111 -105.0398977 39.753016 -105.0399084 39.7521049
-15876 8978 9002 0.0205305754568531 0.0205305754568531 -105.0408265 39.7349435 -105.0410599 39.7349868
-8295 6735 6736 0.0734967400485445 0.0734967400485445 -105.0196661 39.7603379 -105.0202265 39.7608392
-12273 8629 8517 0.0368940227401467 0.0368940227401467 -105.0068222 39.7549438 -105.0069509 39.7552605
-8322 5251 6752 0.0513511942917184 0.0513511942917184 -105.0275802 39.7646584 -105.0275758 39.7651202
-17214 3774 8403 0.176505403414048 0.176505403414048 -104.9774885 39.7022712 -104.9775319 39.7038582
-11789 4445 6564 0.147259159007996 0.147259159007996 -104.9772635 39.7560534 -104.9784697 39.7551079
-8396 516 6411 0.245438474982929 0.245438474982929 -104.968998 39.788144 -104.9688032 39.7903462
-19810 9635 9643 0.17762409301406 0.17762409301406 -105.0021668 39.7384727 -105.0021748 39.7368753
-19811 9643 7122 0.176833292049994 0.176833292049994 -105.0021748 39.7368753 -105.0021749 39.735285
-9834 7540 7541 0.0505839701248518 0.0505839701248518 -105.0449514 39.7661904 -105.044947 39.7666453
-8443 1465 5441 0.103147915206822 0.103147915206822 -105.0238576 39.7038839 -105.0250601 39.7039517
-13470 9094 9095 0.186249123099868 0.186249123099868 -105.0189056 39.7254091 -105.0210758 39.7255489
-9909 7585 3060 0.206196737198557 0.206196737198557 -104.9360971 39.758301 -104.9361384 39.7601551
-8516 6868 4142 0.0958725861464383 0.0958725861464383 -104.9838262 39.7147216 -104.9827054 39.7147303
-18481 9120 6391 0.130087180946324 0.130087180946324 -105.0398842 39.7487505 -105.0398871 39.7475806
-8559 1248 4557 0.13273864991069 0.13273864991069 -105.0205165 39.7656381 -105.0220695 39.765634
-18488 9153 9154 0.0316379611455697 0.0316379611455697 -105.0338511 39.7495101 -105.0338562 39.7492256
-10040 7380 7647 0.073513516250253 0.073513516250253 -105.0337242 39.7277125 -105.0345838 39.7277084
-8638 6926 6927 0.0519431626477688 0.0519431626477688 -104.9982022 39.7580108 -104.9980305 39.7584589
-8640 6928 2302 0.107037203280329 0.107037203280329 -105.0086993 39.6967351 -105.0087181 39.6957726
-18492 9169 9170 0.136492159060533 0.136492159060533 -105.0422538 39.749957 -105.04225 39.7511845
-8683 1000 4222 0.0557449369548998 0.0557449369548998 -104.9875739 39.7819524 -104.9869216 39.781959
-15905 8603 8604 0.0748338508215397 0.0748338508215397 -105.0285111 39.7222816 -105.0283446 39.7216209
-13757 8439 9181 0.0861617636196398 0.0861617636196398 -105.0164414 39.7435744 -105.0158598 39.7429416
-10162 2158 7701 0.118289099292956 0.118289099292956 -105.0144627 39.756468 -105.0158374 39.7565896
-8752 6982 6983 0.20266520881126 0.20266520881126 -105.040852 39.7021868 -105.0408606 39.7003642
-12326 8650 8651 0.106050821827968 0.106050821827968 -105.005782 39.7481919 -105.0047136 39.7486765
-18298 6995 6996 0.187375849458261 0.187375849458261 -105.0409786 39.77838 -105.0409867 39.7766949
-14103 418 421 0.212232135618177 0.212232135618177 -104.9449438 39.7443271 -104.9424633 39.7443997
-11436 8255 7984 0.498708139076575 0.498708139076575 -105.0160004 39.7837363 -105.0218262 39.7840053
-18497 9201 9212 0.134547599555241 0.134547599555241 -105.0352011 39.7487792 -105.0351931 39.7499892
-19881 2617 10410 0.177201589274352 0.177201589274352 -104.9957832 39.7225228 -104.9957751 39.7209292
-8821 13 7020 0.00925156011318802 0.00925156011318802 -105.0315114 39.7463778 -105.0315108 39.746461
-14676 5941 3794 0.153141383772443 0.153141383772443 -104.9700474 39.7304587 -104.9700349 39.7290815
-8846 6085 742 0.0513498235273795 0.0513498235273795 -105.0322636 39.7629835 -105.0322639 39.7634453
-19287 9967 10468 0.111280897910296 0.111280897910296 -104.986072 39.7392385 -104.9873734 39.7392289
-8898 267 7062 0.0377688740912094 0.0377688740912094 -104.9500299 39.6896634 -104.9500436 39.6893239
-20847 10946 10950 0.100177888201708 0.100177888201708 -105.0280565 39.761441 -105.0289678 39.7620075
-18612 1850 9261 0.181237135841786 0.181237135841786 -105.0355172 39.72133 -105.0355223 39.7197001
-18361 7374 7802 0.0447005696877022 0.0447005696877022 -105.0259557 39.7683632 -105.0259573 39.7679612
-8973 7099 900 0.0469763030340631 0.0469763030340631 -104.9417431 39.7640544 -104.9417276 39.7644767
-14047 4836 389 0.0490717904305928 0.0490717904305928 -104.9997732 39.7140054 -105.0001337 39.7136621
-12310 8644 8645 0.447909393812679 0.447909393812679 -105.0077069 39.7535527 -105.0040083 39.7506996
-8996 7110 7111 0.00729890302499032 0.00729890302499032 -105.027555 39.7347529 -105.0276403 39.7347505
-8997 7111 7112 0.0821157489631964 0.0821157489631964 -105.0276403 39.7347505 -105.0286006 39.7347486
-19296 10470 10471 0.0561834077462884 0.0561834077462884 -104.988856 39.7394681 -104.9888451 39.7389629
-9018 7120 3944 0.0625799505809278 0.0625799505809278 -104.9994256 39.7352803 -105.0001574 39.7352867
-20228 8758 8818 0.0478043651923457 0.0478043651923457 -104.9412322 39.6947542 -104.9407334 39.6945605
-14140 9284 9285 0.260183964007922 0.260183964007922 -104.9725733 39.7796422 -104.9695286 39.7796372
-10472 1612 7829 0.00870018444151776 0.00870018444151776 -104.9918236 39.7578438 -104.9917479 39.7578961
-9067 7146 1144 0.138617590256283 0.138617590256283 -104.9721238 39.7620063 -104.9721151 39.7632529
-9068 1144 873 0.140306927162159 0.140306927162159 -104.9721151 39.7632529 -104.9721084 39.7645147
-16081 9816 366 0.168828958006928 0.168828958006928 -104.962098 39.7800102 -104.9601224 39.7799975
-19882 10410 7867 0.175655958248639 0.175655958248639 -104.9957751 39.7209292 -104.9957671 39.7193495
-9135 5185 5653 0.105406920017136 0.105406920017136 -105.0383678 39.7245391 -105.0383801 39.725487
-19292 10469 10471 0.0669585268555214 0.0669585268555214 -104.9881479 39.7392371 -104.9888451 39.7389629
-14789 9417 9415 0.0546470920616291 0.0546470920616291 -104.9903058 39.7738874 -104.9903152 39.773396
-14678 9330 9301 0.189092694124095 0.189092694124095 -104.9700355 39.7272893 -104.9700183 39.7255888
-16087 9493 9819 0.0602377998698223 0.0602377998698223 -104.9498899 39.7814689 -104.950362 39.7810666
-9262 5135 5150 0.0243532262877801 0.0243532262877801 -104.9373097 39.7338382 -104.9373129 39.7340572
-14663 9300 6543 0.20364721866244 0.20364721866244 -104.9723445 39.725579 -104.9723281 39.7237476
-9311 4256 7276 0.202152573812647 0.202152573812647 -104.9652055 39.6965834 -104.9652088 39.6947654
-20396 10777 10758 0.00300729649615889 0.00300729649615889 -105.0244301 39.7608435 -105.0243956 39.7608382
-16088 9819 9820 0.154328326827327 0.154328326827327 -104.950362 39.7810666 -104.9518785 39.7803129
-9435 7345 7346 0.0190810494123846 0.0190810494123846 -104.9667331 39.7181803 -104.9667331 39.7183519
-18624 6136 9460 0.0524172265643075 0.0524172265643075 -105.0288404 39.7288083 -105.0282321 39.7288662
-20568 10857 10787 0.0362929048752591 0.0362929048752591 -105.0184643 39.7595354 -105.0188651 39.7596431
-18625 9460 2258 0.0501132934741927 0.0501132934741927 -105.0282321 39.7288662 -105.0276461 39.7288658
-15897 9441 9042 0.0240046794304529 0.0240046794304529 -105.0429186 39.7342294 -105.0428737 39.7340163
-16387 9458 9459 0.0276860712412084 0.0276860712412084 -104.9711616 39.7030276 -104.9714714 39.7030996
-11214 8163 391 0.128403364715461 0.128403364715461 -104.9314767 39.7033354 -104.931634 39.702187
-9803 6610 7523 0.196894261944695 0.196894261944695 -104.9280463 39.7365084 -104.9280376 39.7382791
-15456 9612 9605 0.0879146885908635 0.0879146885908635 -105.0005861 39.7432358 -105.000722 39.7440195
-18630 5862 9484 0.00360275623818702 0.00360275623818702 -105.0330764 39.7149803 -105.0330762 39.7149479
-11351 4798 8227 0.0561921807720747 0.0561921807720747 -105.0131467 39.7620198 -105.0138041 39.7620198
-9936 4537 7602 0.2557209782077 0.2557209782077 -105.0221238 39.7283783 -105.025114 39.7283922
-11457 8266 8267 0.4367852597313 0.4367852597313 -104.9731431 39.7798728 -104.9782529 39.7799692
-11491 6185 8281 0.106123839405449 0.106123839405449 -104.993798 39.7520123 -104.9929142 39.7513421
-11244 8185 8162 0.0231522248365289 0.0231522248365289 -104.936636 39.7114077 -104.936452 39.711255
-18634 4045 7865 0.17751242949901 0.17751242949901 -105.0331246 39.7181593 -105.0331005 39.7197556
-18698 5868 1320 0.176912291429695 0.176912291429695 -105.0390984 39.7149619 -105.0391059 39.7133709
-10141 6347 3032 0.0935494731718596 0.0935494731718596 -104.9476508 39.7582147 -104.9476453 39.759056
-11771 8406 4385 0.0534654755495647 0.0534654755495647 -104.9814866 39.7527817 -104.9819456 39.7531083
-19883 7867 3716 0.104069204828323 0.104069204828323 -104.9957671 39.7193495 -104.9957744 39.7184136
-11834 8430 8431 0.087830432319228 0.087830432319228 -105.0156397 39.7432416 -105.0163799 39.7437893
-10212 7733 7734 0.0513578872611552 0.0513578872611552 -104.9757679 39.6893761 -104.9751677 39.6893788
-19884 3716 7405 0.200874185823139 0.200874185823139 -104.9957744 39.7184136 -104.9957689 39.7166071
-11852 8443 8444 0.0120541689820552 0.0120541689820552 -105.0254023 39.7603049 -105.0252881 39.7602413
-10235 2742 7741 0.0499109655825577 0.0499109655825577 -104.9558447 39.6893365 -104.9552614 39.6893365
-19913 10244 6599 0.17675930412674 0.17675930412674 -104.9981677 39.7336833 -104.9981408 39.7320938
-15270 8458 8459 0.0175633548114394 0.0175633548114394 -104.9284834 39.705337 -104.9284002 39.7051926
-10253 1700 7749 0.00587012913148048 0.00587012913148048 -104.9383741 39.6893266 -104.9383055 39.6893261
-20002 10691 10692 0.0226226455892357 0.0226226455892357 -105.0053729 39.7533322 -105.0051878 39.7534776
-11911 8472 8473 0.00378078844043477 0.00378078844043477 -105.0000361 39.7512121 -105.0000669 39.7511877
-10274 3194 6110 0.20159656533977 0.20159656533977 -104.9815359 39.7111143 -104.9815389 39.7093013
-11953 8041 6568 0.145503350739709 0.145503350739709 -104.981415 39.7555288 -104.9802246 39.7564641
-10298 6399 3614 0.133348580117153 0.133348580117153 -104.9308332 39.7717367 -104.9293312 39.771412
-11992 5503 7077 0.147510556806948 0.147510556806948 -104.9804313 39.7603548 -104.9792067 39.7612895
-19496 10524 7457 0.0831219334199701 0.0831219334199701 -104.9883547 39.7082799 -104.9883639 39.7075324
-10398 7619 7807 0.0285985320629965 0.0285985320629965 -104.939234 39.787086 -104.9388993 39.787086
-15922 1816 9751 0.110608853519784 0.110608853519784 -105.0268596 39.7287066 -105.0270382 39.7277214
-11917 8476 1302 0.0550753650708828 0.0550753650708828 -105.0028542 39.7497443 -105.0032204 39.7501518
-20647 10880 10034 0.0300539000602635 0.0300539000602635 -105.0146396 39.7675397 -105.0143619 39.7673739
-10474 6225 7658 0.277054905467397 0.277054905467397 -105.0462701 39.7258018 -105.0462812 39.7282934
-11996 6576 4457 0.148175074796056 0.148175074796056 -104.9837118 39.7591589 -104.9824777 39.7600947
-12215 8590 8591 0.0896761056675667 0.0896761056675667 -105.0062495 39.7427207 -105.0069168 39.7433429
-12240 1246 8611 0.0161729384224601 0.0161729384224601 -105.0017374 39.7492343 -105.0016014 39.7493354
-10602 7875 741 0.0900908109241702 0.0900908109241702 -104.9564659 39.7755986 -104.9564618 39.7764088
-16451 9903 9904 0.00638068663878895 0.00638068663878895 -104.9732302 39.6979873 -104.9731712 39.6980224
-12161 8568 8315 0.127606752812743 0.127606752812743 -105.0063682 39.7484987 -105.0053848 39.7476354
-16022 9791 9792 0.180221045869865 0.180221045869865 -105.0045854 39.6893105 -105.0031651 39.6881137
-12376 7853 4674 0.113693675785271 0.113693675785271 -104.9923076 39.7766218 -104.993638 39.7766218
-12377 4674 8679 0.101029871301971 0.101029871301971 -104.993638 39.7766218 -104.9948199 39.7766009
-19472 10516 7476 0.0110661304777454 0.0110661304777454 -104.9902729 39.7085705 -104.9902755 39.708471
-16024 363 9793 0.0338194849383131 0.0338194849383131 -105.0049362 39.6874613 -105.0047404 39.6877255
-12518 5916 3788 0.153505057727295 0.153505057727295 -104.960135 39.730487 -104.9601881 39.7291071
-10815 3667 7993 0.06101955432425 0.06101955432425 -104.9746946 39.7474748 -104.9747549 39.746928
-17063 2247 4880 0.17655557289719 0.17655557289719 -104.9616491 39.7334649 -104.9616527 39.7350527
-18644 1374 1318 0.176938793518256 0.176938793518256 -105.0378774 39.7117812 -105.0378936 39.7133724
-20668 1127 10890 0.00915451265400173 0.00915451265400173 -105.0404877 39.7653392 -105.0403806 39.7653384
-15804 1934 9711 0.166526724215667 0.166526724215667 -105.0322592 39.738485 -105.0322666 39.7399826
-15805 9711 9506 0.0388070303408929 0.0388070303408929 -105.0322666 39.7399826 -105.0322667 39.7403316
-15809 9713 7112 0.0121509406944637 0.0121509406944637 -105.0286059 39.7348578 -105.0286006 39.7347486
-17109 4052 8135 0.162752784015343 0.162752784015343 -104.9579299 39.7478129 -104.9597582 39.7482207
-12609 7223 8772 0.0487324288024552 0.0487324288024552 -104.9964257 39.7289087 -104.9969955 39.7289027
-10935 6177 3306 0.106502895543558 0.106502895543558 -104.9853166 39.7585655 -104.9862237 39.7592221
-10936 3306 8049 0.0536769065211004 0.0536769065211004 -104.9862237 39.7592221 -104.9866649 39.7595656
-16203 7727 9845 1.20908168114497 1.20908168114497 -104.9810119 39.6894094 -104.9810466 39.6785359
-10955 8058 8059 0.079137340429329 0.079137340429329 -105.0040758 39.7305164 -105.0050012 39.7305205
-16612 9327 9942 0.147120185144049 0.147120185144049 -104.9836296 39.7497738 -104.9824158 39.7507117
-17066 5478 9963 0.164315977100666 0.164315977100666 -104.9616347 39.7383964 -104.9616093 39.739874
-17067 9963 10069 0.0117569437064922 0.0117569437064922 -104.9616093 39.739874 -104.9616202 39.7399794
-12661 6331 6548 0.107973460603441 0.107973460603441 -104.9824024 39.7231556 -104.9823535 39.7241259
-12679 3638 8797 0.0132415259966435 0.0132415259966435 -104.9499674 39.712765 -104.9499588 39.7128839
-16962 10044 10040 0.011239967337662 0.011239967337662 -105.0165756 39.7549307 -105.0167064 39.7549204
-12708 6861 5165 0.179825321478717 0.179825321478717 -104.9497683 39.7146491 -104.9497617 39.7162663
-11020 1485 143 0.200555984903635 0.200555984903635 -104.9991903 39.6948908 -104.9992288 39.6930874
-11021 143 8087 0.297571119969413 0.297571119969413 -104.9992288 39.6930874 -104.9992149 39.6904113
-17011 9424 10052 0.0266755832635793 0.0266755832635793 -105.0159208 39.7548693 -105.0157808 39.7546549
-12731 8820 7196 0.0815503609966838 0.0815503609966838 -104.9407348 39.6936614 -104.940735 39.692928
-17038 10062 9210 0.00792923279445615 0.00792923279445615 -105.0192815 39.7574299 -105.0192694 39.7575006
-11062 3436 7764 0.0490279707439403 0.0490279707439403 -105.0346033 39.7783879 -105.035177 39.7783841
-16025 9793 9792 0.141538634561804 0.141538634561804 -105.0047404 39.6877255 -105.0031651 39.6881137
-12773 8830 4166 0.0867031847297172 0.0867031847297172 -104.9732562 39.7194083 -104.972908 39.7201406
-16209 6627 5825 0.203615270524375 0.203615270524375 -104.9787159 39.6929842 -104.9786761 39.6911533
-16207 7210 6624 0.114867174949551 0.114867174949551 -104.9798457 39.6930109 -104.9798363 39.6940439
-16210 5825 7730 0.194825716270604 0.194825716270604 -104.9786761 39.6911533 -104.9786837 39.6894012
-13015 8917 8918 0.0110325419879542 0.0110325419879542 -104.9949225 39.7698636 -104.9947937 39.769857
-13019 8923 8924 0.0459300988872919 0.0459300988872919 -104.9942478 39.7699708 -104.9947852 39.7699691
-11247 8187 5274 0.160867422208887 0.160867422208887 -104.9332506 39.7096719 -104.93153 39.709088
-19514 10535 10538 0.0037920381346196 0.0037920381346196 -104.9882297 39.7088075 -104.9881977 39.7087839
-13024 6190 280 0.0860979970314494 0.0860979970314494 -104.9857782 39.7801773 -104.9858487 39.7794049
-11276 8174 8198 0.367460344283523 0.367460344283523 -104.9406492 39.7073573 -104.9363539 39.7073938
-18156 4088 6034 0.199039273787356 0.199039273787356 -105.0129501 39.7838266 -105.0129545 39.7856166
-13094 1749 8958 0.0802223716795591 0.0802223716795591 -104.9721944 39.7142027 -104.9728651 39.714707
-11325 5154 2237 0.0295446835402977 0.0295446835402977 -104.930434 39.732587 -104.9303867 39.7328502
-18719 4048 7409 0.17730031135953 0.17730031135953 -105.0343046 39.7181492 -105.0343048 39.7165547
-13118 8967 1742 0.0145216501585431 0.0145216501585431 -104.9850034 39.7676171 -104.9851236 39.7677094
-18386 8971 8972 0.00871865668631088 0.00871865668631088 -105.0250832 39.760307 -105.025167 39.7603517
-13072 8913 8952 0.0749880743663527 0.0749880743663527 -104.9953476 39.7678001 -104.9945443 39.7680713
-17640 230 8241 0.144923812025645 0.144923812025645 -104.9472475 39.7797519 -104.9455738 39.7799622
-13560 9033 578 0.049912950240993 0.049912950240993 -105.0111825 39.7228848 -105.0107342 39.7225974
-11377 8237 4850 0.0778446846789704 0.0778446846789704 -104.9963555 39.757081 -104.9969821 39.757589
-18720 7409 5864 0.175843787012913 0.175843787012913 -105.0343048 39.7165547 -105.0343073 39.7149733
-11410 2864 7808 0.201887571458386 0.201887571458386 -104.9858115 39.7855801 -104.9857845 39.7873956
-11526 8300 809 0.0681077085457417 0.0681077085457417 -105.0260499 39.7560402 -105.026046 39.7554277
-18653 7653 10176 0.157020875630107 0.157020875630107 -105.0400098 39.7282525 -105.0399856 39.7268405
-13241 7916 4418 0.196768399976565 0.196768399976565 -105.0275054 39.7094042 -105.0298056 39.7094174
-11566 7031 7379 0.100426092571383 0.100426092571383 -105.0322607 39.7580218 -105.0334355 39.7580283
-11568 7379 1594 0.158671241159827 0.158671241159827 -105.0334355 39.7580283 -105.0340269 39.7566757
-17820 10186 10187 0.0184687744290435 0.0184687744290435 -105.0007327 39.7634893 -105.0006185 39.7636303
-13263 4963 6826 0.0748897830948627 0.0748897830948627 -105.0432124 39.7049338 -105.0432124 39.7042603
-11599 7782 8332 0.0501574795892601 0.0501574795892601 -105.0392921 39.7621196 -105.0398789 39.7621198
-11600 8332 1125 0.0495676895406725 0.0495676895406725 -105.0398789 39.7621198 -105.0404588 39.7621199
-11644 4658 8348 0.011012895464713 0.011012895464713 -105.0191633 39.7552936 -105.0190347 39.7552995
-18918 10397 10398 0.0105062475981655 0.0105062475981655 -105.011825 39.749838 -105.0118932 39.7497594
-17913 6562 4748 0.176744370871331 0.176744370871331 -104.9856207 39.7241273 -104.9856194 39.7225378
-11715 8369 8370 0.101679025311835 0.101679025311835 -105.0381422 39.7427432 -105.0393314 39.7427374
-11747 8387 8388 0.0596706311453888 0.0596706311453888 -105.0139458 39.741431 -105.0138882 39.7419658
-11775 8121 2683 0.119321215072029 0.119321215072029 -104.9781346 39.7526951 -104.9790985 39.751919
-13389 8267 9048 0.0706232625221708 0.0706232625221708 -104.9782529 39.7799692 -104.9790788 39.7799923
-11997 4457 5505 0.144543593212435 0.144543593212435 -104.9824777 39.7600947 -104.9812949 39.7610237
-19642 10599 10600 0.00461558236551731 0.00461558236551731 -104.9879173 39.7068487 -104.9879279 39.706808
-12058 153 3776 0.311946607437041 0.311946607437041 -104.9572293 39.7448211 -104.9578598 39.7475843
-13750 6895 9177 0.1538081352177 0.1538081352177 -104.9317267 39.7692334 -104.931781 39.770616
-12164 4818 7560 0.10615031357403 0.10615031357403 -104.9979466 39.7514927 -104.9970625 39.7508224
-15934 6257 9756 0.181030993335028 0.181030993335028 -104.9961632 39.6984894 -104.9962839 39.7001148
-18568 10324 10321 0.144976741381278 0.144976741381278 -105.0327262 39.781661 -105.0330975 39.7803888
-20260 6471 10699 0.00720326005355295 0.00720326005355295 -105.0440839 39.7747614 -105.0440797 39.7748261
-12382 440 8680 0.0360714923590191 0.0360714923590191 -104.969326 39.7033402 -104.9691913 39.7036476
-13919 482 483 0.00751372921095178 0.00751372921095178 -104.9858803 39.7012654 -104.9859077 39.7013296
-20414 3586 10773 0.00983155874827391 0.00983155874827391 -105.0238257 39.7607202 -105.0238489 39.7606336
-12480 8712 8713 0.0991407463070431 0.0991407463070431 -104.9675147 39.6929637 -104.966356 39.6929637
-15455 9611 9612 0.086225314993736 0.086225314993736 -105.0002927 39.7424939 -105.0005861 39.7432358
-20417 8993 10775 0.0123681069665026 0.0123681069665026 -105.0243946 39.7599006 -105.0243213 39.7599965
-19623 10508 10591 0.0688242418092362 0.0688242418092362 -104.9902611 39.7099214 -104.9910656 39.7099299
-14087 6816 2943 0.102402811156445 0.102402811156445 -104.9246085 39.7113484 -104.9258054 39.711367
-12571 8755 8756 0.0991408859101036 0.0991408859101036 -104.9430353 39.6947545 -104.9418766 39.6947611
-18658 9831 7643 0.17655772025733 0.17655772025733 -105.0306678 39.7293074 -105.030657 39.7277196
-16026 9792 9793 0.141538634561804 0.141538634561804 -105.0031651 39.6881137 -105.0047404 39.6877255
-14200 5104 8831 0.0500819471783367 0.0500819471783367 -104.973501 39.7255812 -104.9729154 39.7255792
-16028 9794 9795 0.0352990859554557 0.0352990859554557 -105.0152372 39.6892461 -105.0155912 39.6894091
-12690 8805 8806 0.0205962859747724 0.0205962859747724 -104.9534009 39.718219 -104.953405 39.7180338
-14297 1952 9317 0.0799385706307454 0.0799385706307454 -104.9402458 39.7146371 -104.9406062 39.7153004
-12747 5350 4220 0.0793424677909429 0.0793424677909429 -104.928405 39.689348 -104.9274781 39.6893679
-16029 9796 9797 0.0144472492683917 0.0144472492683917 -105.0121361 39.6892112 -105.0122561 39.6891198
-20288 6472 10687 0.0642398609947935 0.0642398609947935 -105.0445755 39.7747614 -105.0445822 39.7741837
-14311 8859 8501 0.0340924315859818 0.0340924315859818 -104.9873914 39.7526692 -104.9871043 39.7524564
-14330 602 8973 0.0577848630730138 0.0577848630730138 -104.9952229 39.7691313 -104.9948538 39.7695667
-16030 9797 9798 0.0484390320890552 0.0484390320890552 -105.0122561 39.6891198 -105.012394 39.6886973
-16031 9798 9799 0.00754569346896809 0.00754569346896809 -105.012394 39.6886973 -105.0124128 39.688631
-14334 2420 8925 0.0583291679544673 0.0583291679544673 -104.9948281 39.7704903 -104.9949053 39.7699691
-12784 8834 5470 0.171286135301765 0.171286135301765 -104.9730073 39.7368668 -104.9730156 39.7384072
-12785 5470 8835 0.178924287864237 0.178924287864237 -104.9730156 39.7384072 -104.9730207 39.7400163
-16033 9799 9800 0.00706845342179734 0.00706845342179734 -105.0124128 39.688631 -105.0124316 39.6885691
-14357 513 9331 0.0549879463430077 0.0549879463430077 -105.0345487 39.7837339 -105.0351853 39.7838062
-12804 3763 2560 0.0898130023336766 0.0898130023336766 -105.0064169 39.7854508 -105.0064215 39.7862585
-12820 8849 8848 0.188203677867594 0.188203677867594 -104.9966205 39.782197 -104.9987337 39.782674
-16035 9800 6871 0.0378217549395311 0.0378217549395311 -105.0124316 39.6885691 -105.0125152 39.6882351
-20159 6155 10163 0.0614761289722609 0.0614761289722609 -104.9848557 39.7798784 -104.9855751 39.7798803
-12915 967 5281 0.138474892352542 0.138474892352542 -104.9838014 39.7234262 -104.982597 39.7225939
-16687 9988 8314 0.0384286340006129 0.0384286340006129 -105.0043843 39.7477818 -105.0042918 39.74812
-12991 8908 306 0.0182421240862306 0.0182421240862306 -105.0289792 39.7622112 -105.029097 39.762348
-13032 8926 8928 0.185901221322606 0.185901221322606 -104.989367 39.779071 -104.9872354 39.7794049
-16689 1824 9989 0.0121513664645164 0.0121513664645164 -105.0068707 39.7455494 -105.00675 39.7456071
-13107 8963 8964 0.0484369444463125 0.0484369444463125 -104.9950178 39.7638741 -104.9950202 39.7634385
-19516 10539 10536 0.00249155177103479 0.00249155177103479 -104.9878821 39.7087971 -104.9879104 39.7088024
-19470 10514 10515 0.0196261730033966 0.0196261730033966 -104.9902714 39.7087938 -104.9902726 39.7086173
-13156 8988 8989 0.00631722030409862 0.00631722030409862 -105.0192467 39.7575819 -105.0193135 39.7576062
-19649 10600 10601 0.0174353644977756 0.0174353644977756 -104.9879279 39.706808 -104.9879279 39.7066512
-18928 10405 10396 0.00112670264684339 0.00112670264684339 -105.0109524 39.7503673 -105.0109587 39.7503762
-18410 10288 8327 0.00700530123739539 0.00700530123739539 -105.0292173 39.7620512 -105.0292171 39.7621142
-14672 9414 4877 0.190941051800692 0.190941051800692 -104.9700963 39.736882 -104.9700645 39.735165
-14673 4877 2227 0.162460717202061 0.162460717202061 -104.9700645 39.735165 -104.9700793 39.733704
-13231 4409 9009 0.223227137223831 0.223227137223831 -105.0298056 39.7022132 -105.0324149 39.7022132
-237 31 134 0.108163538194537 0.108163538194537 -104.9701337 39.6879245 -104.969078 39.6873895
-14831 8322 5668 0.0494625040984646 0.0494625040984646 -105.0305079 39.754821 -105.0310864 39.7548296
-18415 8376 3409 0.101754880454598 0.101754880454598 -105.0358032 39.7543633 -105.0346129 39.7543674
-15848 9733 9731 0.0169747446876837 0.0169747446876837 -105.0423259 39.7305643 -105.0422615 39.7304199
-13335 3971 7017 0.0998321056196178 0.0998321056196178 -105.0298103 39.7311516 -105.0309776 39.7311384
-18626 2258 9475 0.0453120140623152 0.0453120140623152 -105.0276461 39.7288658 -105.0271164 39.7288559
-13471 9095 9092 0.294331677800491 0.294331677800491 -105.0210758 39.7255489 -105.0245174 39.7255447
-13512 7797 9114 0.0647363210214912 0.0647363210214912 -105.013565 39.7254886 -105.0128101 39.7255315
-15901 9499 9500 0.157325995690783 0.157325995690783 -105.023521 39.7294033 -105.0253342 39.729164
-13697 9167 7423 0.127782150083045 0.127782150083045 -104.9929494 39.6966756 -104.9944429 39.6966822
-20289 10687 10697 0.00276887237539732 0.00276887237539732 -105.0445822 39.7741837 -105.0445825 39.7741588
-13718 8097 9171 0.00881240787098174 0.00881240787098174 -105.019205 39.6967483 -105.019308 39.6967483
-13751 9178 9130 0.0262505906254233 0.0262505906254233 -105.0164243 39.7306043 -105.0161204 39.730571
-15391 9259 9571 0.107861175514815 0.107861175514815 -104.9593096 39.7144759 -104.9605702 39.7144511
-15783 2106 9596 0.166115711722291 0.166115711722291 -105.0232102 39.7379438 -105.0247945 39.7370792
-13852 1774 4412 0.0465225826542141 0.0465225826542141 -104.9769161 39.7038457 -104.9763723 39.7038488
-20380 10763 10764 0.00723047037301379 0.00723047037301379 -105.0250727 39.760924 -105.0249892 39.7609136
-15452 9609 9598 0.128875611115748 0.128875611115748 -105.0003045 39.7431574 -104.9998109 39.7420623
-14144 9287 4651 0.182099578171645 0.182099578171645 -105.0165756 39.7450309 -105.0171429 39.7434524
-15807 9712 7111 0.0179279183487844 0.0179279183487844 -105.0276269 39.7349114 -105.0276403 39.7347505
-14230 8860 4113 0.0915086936553939 0.0915086936553939 -104.9520697 39.7256077 -104.9509997 39.7256047
-15819 9705 8564 0.0112418070831931 0.0112418070831931 -105.0273775 39.7359654 -105.0273775 39.7358643
-14250 8157 7606 0.0899264482990573 0.0899264482990573 -104.9393188 39.7253022 -104.9382673 39.7253035
-19499 10526 10527 0.0418767441965843 0.0418767441965843 -104.9883666 39.7071894 -104.9883695 39.7068128
-16078 9814 9815 0.177867255933272 0.177867255933272 -104.974902 39.7795432 -104.9728236 39.7796294
-14354 5520 6454 0.134959237439496 0.134959237439496 -105.0112082 39.7741318 -105.0112167 39.7753455
-16224 5835 9851 0.203722282298932 0.203722282298932 -104.9563972 39.6911319 -104.9563865 39.692964
-14425 1233 6137 0.0491477874140339 0.0491477874140339 -105.0281917 39.7560463 -105.0287666 39.7560413
-16468 9914 9902 0.117059110726511 0.117059110726511 -104.9726489 39.6941061 -104.9732597 39.6931641
-16500 8890 8891 0.0884309215437497 0.0884309215437497 -105.0029709 39.7443191 -105.0038584 39.7439107
-16591 9948 8492 0.14561270804365 0.14561270804365 -104.9993873 39.7470087 -104.998183 39.7479347
-16470 9915 3282 0.193717589764618 0.193717589764618 -104.9689488 39.7037929 -104.9687946 39.7020548
-14541 6915 9375 0.0102720812466755 0.0102720812466755 -105.0251451 39.7766366 -105.0252653 39.7766366
-16501 8891 3167 0.0148460110144783 0.0148460110144783 -105.0038584 39.7439107 -105.00401 39.7438456
-16593 9949 9950 0.145366288858291 0.145366288858291 -105.0003016 39.7477141 -104.9990547 39.7486029
-14609 8990 8994 0.00979628795431279 0.00979628795431279 -105.0252879 39.7604305 -105.0252881 39.7603424
-14794 3335 7882 0.0961603685796077 0.0961603685796077 -104.9574452 39.7336966 -104.9563208 39.7337098
-17101 332 10014 0.240821045601335 0.240821045601335 -104.9554298 39.7451641 -104.952676 39.7456193
-14816 9424 9425 0.0673114946358147 0.0673114946358147 -105.0159208 39.7548693 -105.0167051 39.7548156
-17065 9474 5478 0.175247470145414 0.175247470145414 -104.9616204 39.7368204 -104.9616347 39.7383964
-15103 3050 9489 0.102745543982247 0.102745543982247 -104.9963681 39.7597212 -104.9963423 39.760645
-16898 8714 8743 0.201991786328297 0.201991786328297 -104.9657828 39.6929687 -104.9658013 39.6947852
-16402 9880 9878 0.04752967411177 0.04752967411177 -104.9718617 39.7035846 -104.971336 39.7034463
-16959 10041 10042 0.0119234352124219 0.0119234352124219 -105.0159755 39.75567 -105.0160419 39.7555757
-16556 9939 2889 0.0528287697048915 0.0528287697048915 -104.9739728 39.7494793 -104.9733549 39.749474
-18646 5867 7412 0.177003576876814 0.177003576876814 -105.0378886 39.7149662 -105.0379016 39.716558
-16623 9957 9958 0.00927766896119108 0.00927766896119108 -104.9856428 39.7393293 -104.9855355 39.7393169
-17017 10056 10054 0.00431206144532878 0.00431206144532878 -105.0167598 39.7546225 -105.0167692 39.7546606
-16635 9967 9937 0.0755376260933099 0.0755376260933099 -104.986072 39.7392385 -104.9859915 39.738562
-16636 9937 9968 0.0848568890148885 0.0848568890148885 -104.9859915 39.738562 -104.9849991 39.7385579
-17507 8389 10114 0.0670519033214907 0.0670519033214907 -105.0124419 39.7396939 -105.0124916 39.7402957
-17069 675 9465 0.179146976203574 0.179146976203574 -104.961623 39.7416085 -104.9615988 39.7432195
-17040 8988 10063 0.00586346085648923 0.00586346085648923 -105.0192467 39.7575819 -105.0192332 39.7576336
-18726 6207 7644 0.18227085937915 0.18227085937915 -105.0318828 39.7260783 -105.0318854 39.7277175
-18724 4060 7415 0.175525264809921 0.175525264809921 -105.0439098 39.7181494 -105.0438828 39.716571
-16759 10010 55 0.0502605990705626 0.0502605990705626 -104.950646 39.6997437 -104.9506434 39.7001957
-17565 10138 8539 0.0573375717149566 0.0573375717149566 -104.9667127 39.7813542 -104.9669081 39.7808609
-17283 8717 8746 0.200951019692623 0.200951019692623 -104.9599663 39.6929697 -104.9599905 39.6947768
-17285 76 3515 0.20373476556842 0.20373476556842 -104.9646375 39.7002188 -104.9646237 39.6983866
-17286 3515 4257 0.200873634983474 0.200873634983474 -104.9646237 39.6983866 -104.9646237 39.6965801
-17288 10023 5839 0.200541247802215 0.200541247802215 -104.9517951 39.692944 -104.9518032 39.6911405
-18744 6227 5190 0.106449102002429 0.106449102002429 -105.0433385 39.72552 -105.0433305 39.7245627
-17655 10140 480 0.0210901662616695 0.0210901662616695 -104.967225 39.7796681 -104.9669782 39.7796681
-17657 8540 9827 0.194565529373187 0.194565529373187 -104.969601 39.7801972 -104.9718556 39.7799532
-17427 10105 10106 0.0219929458534896 0.0219929458534896 -104.9828833 39.6888958 -104.9831403 39.6888986
-17857 10200 10197 0.0144828525731025 0.0144828525731025 -104.9731394 39.7883607 -104.9732548 39.7884561
-18236 7037 3424 0.201298115256081 0.201298115256081 -105.0322649 39.7652109 -105.0346199 39.7651924
-17786 8497 9214 0.0149001836759509 0.0149001836759509 -105.0139116 39.7556283 -105.0140859 39.7556275
-18667 5188 2601 0.176856921267491 0.176856921267491 -105.0410909 39.7245488 -105.0410827 39.7229583
-15257 8538 9547 0.0461864635130014 0.0461864635130014 -104.9283761 39.7065112 -104.927837 39.7065339
-15834 9727 4582 0.339362052888466 0.339362052888466 -105.039304 39.7384682 -105.0393281 39.7415201
-18239 6764 3988 0.20124356936137 0.20124356936137 -105.0276005 39.7707095 -105.0299532 39.7707836
-17648 223 227 0.245258634538467 0.245258634538467 -104.9432215 39.7799643 -104.9403515 39.7799498
-19708 10627 10621 0.090662464616454 0.090662464616454 -105.0051511 39.7346116 -105.0051625 39.7337963
-17961 10234 10235 0.0087318555012696 0.0087318555012696 -104.988102 39.7243341 -104.9880993 39.7242556
-19710 10623 10628 0.0762458230270849 0.0762458230270849 -105.0031654 39.7337887 -105.0039101 39.7341658
-17727 3328 7879 0.104097845117031 0.104097845117031 -104.9573341 39.760728 -104.9561163 39.7607348
-18725 7415 10336 0.0555461867275064 0.0555461867275064 -105.0438828 39.716571 -105.0438909 39.7160715
-17748 10172 8285 0.147249823900369 0.147249823900369 -104.9890951 39.7502672 -104.9903025 39.7493228
-19600 10582 10478 0.00442384590255706 0.00442384590255706 -104.9902054 39.7102774 -104.9902571 39.7102784
-16294 2409 2439 0.0170153678743566 0.0170153678743566 -104.9698358 39.6961931 -104.9697532 39.6960539
-18663 2592 5184 0.178895247307371 0.178895247307371 -105.0378588 39.7229259 -105.0378224 39.7245345
-15835 4582 8370 0.135357878279395 0.135357878279395 -105.0393281 39.7415201 -105.0393314 39.7427374
-17987 10240 7225 0.133765909115813 0.133765909115813 -104.9949413 39.7336839 -104.9965056 39.7336859
-18776 10123 3737 0.13151506607382 0.13151506607382 -105.0041704 39.7400311 -105.0028068 39.7394839
-19243 10420 8480 0.0202782525837911 0.0202782525837911 -104.9910563 39.7427139 -104.9912213 39.7425829
-18831 10359 10360 0.0341232753962164 0.0341232753962164 -105.0141666 39.7374377 -105.0142282 39.7371345
-19553 6857 10560 0.00726201622420357 0.00726201622420357 -104.9892637 39.7102478 -104.9892651 39.7101825
-19940 9641 6649 0.164927985335569 0.164927985335569 -104.9994122 39.7368744 -104.9992032 39.7383489
-18941 4644 1269 0.146851000824624 0.146851000824624 -105.018682 39.7183967 -105.0203986 39.7184231
-19118 10431 8430 0.136066207456442 0.136066207456442 -105.0144289 39.7424475 -105.0156397 39.7432416
-19278 10421 6707 0.0993066662474356 0.0993066662474356 -104.9951815 39.7462368 -104.9943683 39.7468745
-15836 8370 5297 0.134414346058358 0.134414346058358 -105.0393314 39.7427374 -105.039323 39.7439462
-19047 901 9486 0.27949052314451 0.27949052314451 -104.9406492 39.7644637 -104.9406618 39.7619502
-19612 10586 10499 0.00658715235564877 0.00658715235564877 -104.9910692 39.709571 -104.9911462 39.7095717
-15838 9728 7437 0.0439886907558265 0.0439886907558265 -105.0374547 39.7337049 -105.0369779 39.7338534
-19065 10422 5495 0.202007910819525 0.202007910819525 -104.9407436 39.7401208 -104.9407458 39.7383041
-15840 9729 9702 0.0777181684296862 0.0777181684296862 -105.038439 39.7323043 -105.0382565 39.732989
-15841 9702 9730 0.0351380099433058 0.0351380099433058 -105.0382565 39.732989 -105.038423 39.7332779
-19273 10425 10173 0.013664079145809 0.013664079145809 -104.9948429 39.7459879 -104.9947299 39.745901
-19160 10429 10050 0.0518274489533285 0.0518274489533285 -105.0000136 39.7493831 -105.0006176 39.749423
-20574 10861 10862 0.011368530817607 0.011368530817607 -105.0248964 39.7611186 -105.0250294 39.7611184
-19554 10560 10548 0.0725121719316359 0.0725121719316359 -104.9892651 39.7101825 -104.9892812 39.7095305
-19461 10477 10478 0.0230516224965269 0.0230516224965269 -104.9902547 39.7104857 -104.9902571 39.7102784
-19438 10491 6859 0.0113764020129076 0.0113764020129076 -104.9897225 39.7103526 -104.9897244 39.7102503
-19277 8487 10421 0.0474605500221532 0.0474605500221532 -104.9955701 39.745932 -104.9951815 39.7462368
-19226 8479 10451 0.0120282782230604 0.0120282782230604 -104.9903554 39.7419081 -104.9904508 39.7418286
-19482 10486 10487 0.00666482250083992 0.00666482250083992 -104.9910713 39.7093611 -104.9911492 39.7093622
-19412 1903 7239 0.197394669243537 0.197394669243537 -104.9798636 39.7074913 -104.9798548 39.7057161
-19323 916 5917 0.178370202088171 0.178370202088171 -104.9874133 39.7320545 -104.987439 39.7304505
-19329 10473 9894 0.0172442514416892 0.0172442514416892 -104.971721 39.6984149 -104.9716111 39.6985449
-19662 10608 10609 0.151226661870126 0.151226661870126 -105.0228937 39.7697604 -105.0211243 39.7697539
-19357 3170 9949 0.0476976092634506 0.0476976092634506 -105.0006969 39.7480168 -105.0003016 39.7477141
-19703 10622 10623 0.11468932159706 0.11468932159706 -105.0045066 39.7337938 -105.0031654 39.7337887
-19379 9194 4397 0.102701543160846 0.102701543160846 -104.9954622 39.743992 -104.9946157 39.7433367
-19846 10657 10658 0.207612047714745 0.207612047714745 -105.0387332 39.7384666 -105.0387333 39.7365995
-19735 10641 10642 0.0869223005082275 0.0869223005082275 -104.968958 39.7392065 -104.9689526 39.7384248
-423 422 423 0.0170753331475834 0.0170753331475834 -104.958788 39.708906 -104.95889 39.708774
-18892 3649 3275 0.147518961348099 0.147518961348099 -104.9575638 39.7025228 -104.9575461 39.7038494
-20076 6318 8004 0.0509194903724274 0.0509194903724274 -104.9758794 39.7400231 -104.9752839 39.740019
-20104 8546 2065 0.048454988097841 0.048454988097841 -104.9541798 39.7401771 -104.9536131 39.740176
-20204 9321 10178 0.0841675532676054 0.0841675532676054 -104.9880818 39.7550779 -104.9873945 39.7556199
-20205 10178 8401 0.0611444527276629 0.0611444527276629 -104.9873945 39.7556199 -104.9868716 39.7559951
-259 266 267 0.0502803318432383 0.0502803318432383 -104.9494463 39.6897162 -104.9500299 39.6896634
-14829 6148 4022 0.133340280271954 0.133340280271954 -105.0283827 39.754823 -105.0299425 39.7548206
-20293 10704 10700 0.011586826540776 0.011586826540776 -105.0445781 39.7730214 -105.0445771 39.7731256
-14835 7029 7396 0.0697085759052968 0.0697085759052968 -105.0322588 39.7548413 -105.0330742 39.7548479
-20259 10688 6471 0.00765068827927408 0.00765068827927408 -105.0440849 39.7746926 -105.0440839 39.7747614
-17971 10234 10239 0.0311817416438077 0.0311817416438077 -104.988102 39.7243341 -104.9877374 39.7243341
-20294 10700 10709 0.0186270421112036 0.0186270421112036 -105.0445771 39.7731256 -105.0445556 39.7732923
-14868 8305 8308 0.0233992723150567 0.0233992723150567 -105.0036573 39.7541187 -105.0038599 39.7542602
-421 420 421 0.0887343803029098 0.0887343803029098 -104.9418594 39.7437507 -104.9424633 39.7443997
-424 254 424 0.214565868461505 0.214565868461505 -105.0251543 39.7380028 -105.0237982 39.7396264
-425 424 425 0.179345861037356 0.179345861037356 -105.0237982 39.7396264 -105.0219946 39.7404498
-18900 10380 10379 0.00404144992313864 0.00404144992313864 -105.0126123 39.7504401 -105.0125991 39.750475
-312 320 321 0.234451594909332 0.234451594909332 -105.0174336 39.7493151 -105.0159659 39.7510962
-14897 6102 8202 0.215105101107824 0.215105101107824 -104.9408208 39.7092854 -104.9408446 39.707351
-19648 10603 10600 0.0301818413703728 0.0301818413703728 -104.9882807 39.7068108 -104.9879279 39.706808
-176 185 186 0.0998871295042773 0.0998871295042773 -105.0413928 39.6931195 -105.0425601 39.6931327
-20301 9381 10729 0.0209062182463086 0.0209062182463086 -105.0435596 39.7766165 -105.0435566 39.7764285
-196 205 208 0.198149371104724 0.198149371104724 -105.0203775 39.6894945 -105.0203767 39.6877125
-16280 9869 4511 0.0441265369006206 0.0441265369006206 -104.9543259 39.6981771 -104.9541278 39.6978107
-15850 9734 5596 0.0497405541513423 0.0497405541513423 -105.0433666 39.7303044 -105.0438933 39.7301146
-19563 7475 10566 0.00626126200522767 0.00626126200522767 -104.9897492 39.7084668 -104.9897479 39.7084105
-248 255 256 0.148914456277168 0.148914456277168 -104.9534054 39.7800114 -104.9516897 39.7797769
-14938 8158 7604 0.0947062136756459 0.0947062136756459 -104.9394819 39.7382793 -104.9383746 39.7382991
-305 313 314 0.0701186694040595 0.0701186694040595 -104.970735 39.780686 -104.970235 39.781186
-14691 3129 941 0.177390618833456 0.177390618833456 -104.9712066 39.7304555 -104.9712147 39.7320508
-371 263 372 0.159425481094297 0.159425481094297 -104.9473177 39.68967 -104.9473692 39.6911032
-372 262 373 0.154271040601459 0.154271040601459 -104.9458929 39.6897096 -104.9459358 39.6910966
-373 374 375 0.0498842542371797 0.0498842542371797 -105.0251537 39.7734966 -105.02457 39.7734966
-20302 6466 9378 0.155873782837014 0.155873782837014 -105.042271 39.7752905 -105.0422654 39.7766923
-315 323 324 0.151711567725454 0.151711567725454 -105.0156986 39.7518215 -105.0152472 39.753141
-554 548 549 0.0392699857827163 0.0392699857827163 -104.999646 39.701424 -104.999187 39.7014274
-14993 7973 7142 0.0462138706300854 0.0462138706300854 -104.9726808 39.7432422 -104.9721403 39.7432453
-17218 6114 3199 0.202944002497817 0.202944002497817 -104.9775313 39.7092628 -104.9775204 39.7110879
-317 325 326 0.0648164274191724 0.0648164274191724 -104.9964344 39.7091326 -104.9969556 39.7087095
-17027 3490 3584 0.0598495371899439 0.0598495371899439 -105.0243147 39.7553581 -105.0236148 39.7553716
-652 642 643 0.0146721427737165 0.0146721427737165 -104.9407521 39.7413879 -104.9405805 39.7413879
-18423 8361 8333 0.20323919891824 0.20323919891824 -105.0410832 39.7639477 -105.0410618 39.76212
-15011 9469 459 0.0480419410466021 0.0480419410466021 -104.9407436 39.7367085 -104.9413035 39.7367444
-15012 459 7107 0.043866666346984 0.043866666346984 -104.9413035 39.7367444 -104.9418165 39.7367415
-11803 8415 8416 0.145780714117446 0.145780714117446 -104.9841796 39.7520575 -104.9853609 39.751112
-18731 8066 10337 0.199884513966678 0.199884513966678 -105.0367563 39.7306104 -105.0367616 39.732408
-17082 4467 2789 0.134890565512634 0.134890565512634 -104.9615875 39.7657386 -104.9615875 39.7669517
-788 793 794 0.093857943582342 0.093857943582342 -104.9361307 39.7528412 -104.9350328 39.7528375
-15029 7883 3337 0.0968744267307773 0.0968744267307773 -104.9562673 39.7368072 -104.9574002 39.7368138
-18907 10384 10385 0.0177708173335528 0.0177708173335528 -105.0122864 39.7504906 -105.0124942 39.7504865
-11693 868 895 0.0109449511220029 0.0109449511220029 -105.0011145 39.7535929 -105.0011439 39.7534971
-16597 8570 5785 0.145695604703312 0.145695604703312 -104.9966174 39.7504686 -104.9954256 39.7514052
-17133 4238 3543 0.202299079539728 0.202299079539728 -104.9763404 39.6966061 -104.9763295 39.6984254
-18439 7914 2971 0.147770970542825 0.147770970542825 -105.027595 39.7578708 -105.0260575 39.7584783
-16408 9882 9889 0.0253610023428754 0.0253610023428754 -104.9710939 39.7032035 -104.9713896 39.7031873
-16601 9952 7558 0.0955122170701592 0.0955122170701592 -104.9999037 39.7492958 -104.9988113 39.7494758
-15050 6016 979 0.0500664854607423 0.0500664854607423 -104.9735459 39.7368668 -104.9741314 39.7368706
-16409 9889 9879 0.0208518700779087 0.0208518700779087 -104.9713896 39.7031873 -104.9716243 39.7032379
-995 753 1009 0.150380388134057 0.150380388134057 -104.9875955 39.7752036 -104.9875916 39.776556
-15070 9479 610 0.10571035032404 0.10571035032404 -104.9861222 39.7368448 -104.9873582 39.7368646
-16411 9459 9889 0.012002862934972 0.012002862934972 -104.9714714 39.7030996 -104.9713896 39.7031873
-1016 1028 1029 0.0655213058855568 0.0655213058855568 -104.9622408 39.7488417 -104.9622186 39.7494307
-15964 4362 1443 0.198880292667991 0.198880292667991 -105.0015545 39.7112124 -105.0038795 39.7112064
-16695 9599 9597 0.0527492023482324 0.0527492023482324 -105.0000258 39.7419225 -105.0002485 39.7423649
-19585 10576 7471 0.00669407122815783 0.00669407122815783 -104.9888178 39.7085212 -104.9888183 39.708461
-1119 1135 1136 0.187278154980764 0.187278154980764 -105.0404138 39.7766958 -105.0404001 39.77838
-15144 9498 6689 0.0114561417292809 0.0114561417292809 -104.949868 39.7789996 -104.9497884 39.7789167
-15795 2323 2324 0.0158381890637799 0.0158381890637799 -105.0223537 39.7376237 -105.0223618 39.737766
-20623 2706 10873 0.00650373799697247 0.00650373799697247 -105.0229176 39.7611551 -105.0229935 39.7611592
-1164 558 1182 0.0726820398635713 0.0726820398635713 -104.996796 39.697349 -104.996786 39.6966954
-15984 7372 5328 0.126515384088506 0.126515384088506 -105.0312304 39.7111869 -105.0327094 39.7111941
-16002 9775 6870 0.0380746194857137 0.0380746194857137 -105.0106552 39.688359 -105.0108215 39.6880414
-11807 8419 8395 0.147975384561768 0.147975384561768 -104.9850687 39.7527297 -104.9838316 39.7536605
-16009 9779 9780 0.0100019925159617 0.0100019925159617 -104.9993937 39.6888781 -104.9993976 39.688968
-331 207 332 0.116329690490202 0.116329690490202 -104.9565607 39.7445824 -104.9554298 39.7451641
-20314 10735 10736 0.00660332250129021 0.00660332250129021 -105.0233062 39.7593161 -105.0233746 39.7593437
-1412 1265 1438 0.0988256135069692 0.0988256135069692 -105.0204691 39.7820002 -105.0216256 39.7820039
-15147 9501 1753 0.946728932771196 0.946728932771196 -104.9477699 39.7837907 -104.9414956 39.7908082
-542 536 537 0.223575651807191 0.223575651807191 -105.0151149 39.7545148 -105.0159762 39.7526163
-1437 1457 1458 0.00733898986406934 0.00733898986406934 -105.0078201 39.6894653 -105.0078206 39.6893993
-15845 9731 9732 0.0664836940914448 0.0664836940914448 -105.0422615 39.7304199 -105.0415588 39.7301641
-15172 9512 9513 0.0495248806719176 0.0495248806719176 -105.0364026 39.7403227 -105.0369818 39.740326
-15173 9513 9514 0.0500036838355924 0.0500036838355924 -105.0369818 39.740326 -105.0375666 39.7403293
-16841 10021 9876 0.0316463232135525 0.0316463232135525 -104.9706319 39.7032358 -104.9705085 39.7029675
-12011 7081 2030 0.145136996076302 0.145136996076302 -104.9818287 39.7633054 -104.9806366 39.7642349
-12961 1633 1631 0.0197483532588124 0.0197483532588124 -105.0035017 39.7410228 -105.0033016 39.7411115
-16037 9801 9802 0.187730927470077 0.187730927470077 -105.0145291 39.6890356 -105.0123441 39.6891881
-1680 1705 1706 0.200641448140145 0.200641448140145 -105.0297026 39.69129 -105.0320475 39.6912817
-15255 9539 9533 0.0958097111651336 0.0958097111651336 -104.9351084 39.7058405 -104.9349851 39.7066969
-16278 9869 3639 0.110423900704732 0.110423900704732 -104.9543259 39.6981771 -104.953288 39.6987674
-1701 1648 1723 0.062496099688971 0.062496099688971 -105.0157083 39.6917929 -105.0164379 39.6918193
-16118 8309 427 0.26882010834223 0.26882010834223 -105.0254224 39.7404725 -105.028564 39.7403785
-250 257 258 0.156601202821138 0.156601202821138 -104.9487596 39.6897096 -104.9488454 39.6911164
-1726 1744 1745 1.09817431556355 1.09817431556355 -104.9722383 39.6883787 -104.9722634 39.6785026
-16141 9831 7016 0.0255913598249866 0.0255913598249866 -105.0306678 39.7293074 -105.030967 39.729303
-16142 7016 7028 0.027160195994677 0.027160195994677 -105.030967 39.729303 -105.0312846 39.729303
-251 259 260 0.154968238345174 0.154968238345174 -104.9465795 39.6897096 -104.9465967 39.6911032
-1778 1796 1797 0.0510193327806952 0.0510193327806952 -104.9786977 39.6947606 -104.9781014 39.6947603
-15256 9533 9546 0.0701631467931239 0.0701631467931239 -104.9349851 39.7066969 -104.9348965 39.7073242
-4282 4025 4026 0.0836518662560613 0.0836518662560613 -105.0299339 39.7572686 -105.029918 39.7580208
-4283 4026 2975 0.0536630317560949 0.0536630317560949 -105.029918 39.7580208 -105.0299157 39.7585034
-252 261 262 0.0449524282619667 0.0449524282619667 -104.9453693 39.6896766 -104.9458929 39.6897096
-17948 10228 8780 0.031808150523084 0.031808150523084 -104.98712 39.7238543 -104.9874919 39.7238512
-1803 1816 1817 0.0829077522721667 0.0829077522721667 -105.0268596 39.7287066 -105.02745 39.7281152
-4294 2858 4032 0.190837980669502 0.190837980669502 -105.0043357 39.6975452 -105.0065466 39.6973179
-4296 4033 4034 0.0984313521955559 0.0984313521955559 -105.0318398 39.697683 -105.03299 39.6977028
-4297 4034 4035 0.124316100856361 0.124316100856361 -105.03299 39.6977028 -105.0344405 39.6976368
-4299 1488 135 0.200939910778157 0.200939910778157 -104.988737 39.694787 -104.9886673 39.6929807
-4300 135 1703 0.200530915425065 0.200530915425065 -104.9886673 39.6929807 -104.9887113 39.6911776
-253 262 259 0.0587496721634218 0.0587496721634218 -104.9458929 39.6897096 -104.9465795 39.6897096
-1830 1846 1847 0.0521892409260155 0.0521892409260155 -105.0330898 39.7213326 -105.0337 39.7213301
-4310 4043 1394 0.105949182025439 0.105949182025439 -105.031239 39.7181657 -105.0324777 39.7181596
-4311 1394 4044 0.0525758001653233 0.0525758001653233 -105.0324777 39.7181596 -105.0330924 39.7181593
-4312 4044 4045 0.00275409212275412 0.00275409212275412 -105.0330924 39.7181593 -105.0331246 39.7181593
-4313 4045 4046 0.048684142933598 0.048684142933598 -105.0331246 39.7181593 -105.0336938 39.7181591
-4314 4046 4048 0.0522538202962548 0.0522538202962548 -105.0336938 39.7181591 -105.0343046 39.7181492
-11581 1889 1890 0.200726535096683 0.200726535096683 -105.0322578 39.7616855 -105.0299096 39.7616676
-254 259 263 0.0633181950748288 0.0633181950748288 -104.9465795 39.6897096 -104.9473177 39.68967
-1901 1087 1914 0.0231926567105046 0.0231926567105046 -104.9724071 39.7074855 -104.972136 39.707488
-4323 4055 4056 0.0506868932206778 0.0506868932206778 -105.0391007 39.7181492 -105.0396933 39.7181525
-4324 4056 4057 0.0525415825536361 0.0525415825536361 -105.0396933 39.7181525 -105.0403076 39.7181525
-4325 4057 1106 0.049505238452812 0.049505238452812 -105.0403076 39.7181525 -105.0408864 39.7181525
-4326 1106 4058 0.103487473030962 0.103487473030962 -105.0408864 39.7181525 -105.0420963 39.7181446
-255 263 264 0.0528764032574804 0.0528764032574804 -104.9473177 39.68967 -104.9479356 39.6896766
-1921 1933 1934 0.0492173865000396 0.0492173865000396 -105.0316836 39.7384833 -105.0322592 39.738485
-1929 1942 1943 0.119118027307007 0.119118027307007 -104.9888238 39.7384602 -104.9902169 39.7384586
-4337 4067 4068 0.0478289627129219 0.0478289627129219 -105.0276017 39.7844198 -105.0281513 39.7843383
-4338 4068 4069 0.0505441496304245 0.0505441496304245 -105.0281513 39.7843383 -105.0287428 39.7843351
-4339 4069 4070 0.0498130318292156 0.0498130318292156 -105.0287428 39.7843351 -105.0293098 39.784231
-4342 4071 4072 0.0561534117303384 0.0561534117303384 -105.0304275 39.7840207 -105.0310648 39.7838975
-4343 4072 4073 0.0484769480819301 0.0484769480819301 -105.0310648 39.7838975 -105.0316273 39.7838408
-18384 8960 8961 0.0519015690499355 0.0519015690499355 -105.0258905 39.7724462 -105.0258806 39.7729129
-544 538 539 0.0154777376492066 0.0154777376492066 -105.0462947 39.7530417 -105.0461157 39.7530208
-2042 2050 2051 0.199194779708592 0.199194779708592 -104.9674629 39.7038542 -104.9674661 39.7020628
-12337 8654 8655 0.0104809427005404 0.0104809427005404 -105.0075431 39.754727 -105.0074206 39.7547231
-4355 3965 4081 0.411489005127648 0.411489005127648 -105.0003399 39.7837825 -105.005155 39.7838353
-4356 4081 4082 0.106344190536588 0.106344190536588 -105.005155 39.7838353 -105.0063995 39.7838419
-4358 4083 1074 0.0829286899836406 0.0829286899836406 -105.0082472 39.7838436 -105.0092177 39.7838422
-4359 1074 2497 0.0840300949352524 0.0840300949352524 -105.0092177 39.7838422 -105.0102009 39.7838273
-16773 3182 3277 0.192234323904948 0.192234323904948 -104.9552273 39.7021149 -104.9552326 39.7038437
-2067 2069 2070 0.202510221820354 0.202510221820354 -104.9534962 39.7873923 -104.9534692 39.7892134
-19432 8707 10110 0.0968673163006813 0.0968673163006813 -104.9850997 39.7033596 -104.9839674 39.7033596
-4370 4092 4093 0.0521723369054183 0.0521723369054183 -105.0158347 39.7839964 -105.016444 39.7839662
-4373 4095 4096 0.0511584997280867 0.0511584997280867 -105.0175565 39.7838951 -105.0181552 39.7838945
-4374 4096 4097 0.0510055304226098 0.0510055304226098 -105.0181552 39.7838945 -105.0187521 39.7838972
-14753 6934 5930 0.0358835820845479 0.0358835820845479 -104.9793301 39.7301101 -104.979327 39.7304328
-545 539 540 0.260599478311813 0.260599478311813 -105.0461157 39.7530208 -105.0433843 39.7519802
-2113 2114 2115 0.0866449228578761 0.0866449228578761 -104.9269938 39.7723519 -104.9270004 39.7731311
-12341 2501 8642 0.0589286767766051 0.0589286767766051 -105.0073403 39.7545867 -105.0079921 39.7544142
-4383 4104 2729 0.0487767884709024 0.0487767884709024 -105.0233734 39.7846136 -105.0239366 39.7846851
-4387 748 1566 0.142516569011717 0.142516569011717 -104.9508345 39.7763985 -104.9507995 39.7776799
-16443 9900 9901 0.201666693845683 0.201666693845683 -104.9688122 39.6930484 -104.9711673 39.6931206
-546 540 541 0.0326517480806501 0.0326517480806501 -105.0433843 39.7519802 -105.0430648 39.7518193
-547 541 542 0.0254047336234174 0.0254047336234174 -105.0430648 39.7518193 -105.0428359 39.7516736
-2158 2156 2157 0.218243127550759 0.218243127550759 -105.0139707 39.7293204 -105.0141188 39.7312798
-2160 2158 2159 0.0821511858388999 0.0821511858388999 -105.0144627 39.756468 -105.0144598 39.7572068
-16173 4250 9840 0.39197341800201 0.39197341800201 -104.9867926 39.6966289 -104.9868416 39.693104
-19464 10508 10509 0.0204161788330557 0.0204161788330557 -104.9902611 39.7099214 -104.9902632 39.7097378
-18178 5791 6050 0.202074681821779 0.202074681821779 -105.0258291 39.7874305 -105.0258319 39.7856132
-20702 10891 10902 0.0170035110425561 0.0170035110425561 -105.0400867 39.7653362 -105.0400838 39.7654891
-16216 8620 7903 0.142599898878985 0.142599898878985 -105.0093075 39.7583444 -105.0105038 39.7592382
-11816 2201 2202 0.15535054028393 0.15535054028393 -105.0146775 39.7403403 -105.0128922 39.7400809
-17089 9940 8134 0.138649146182337 0.138649146182337 -104.960382 39.7494708 -104.9603847 39.7482239
-17090 8134 3689 0.141996254884573 0.141996254884573 -104.9603847 39.7482239 -104.9603811 39.7469469
-2222 2222 2223 0.0488100805647676 0.0488100805647676 -104.9729758 39.7337087 -104.972405 39.7337096
-2223 2223 2224 0.0512642786009998 0.0512642786009998 -104.972405 39.7337096 -104.9718055 39.7337106
-14639 2243 2244 0.0354564943031107 0.0354564943031107 -105.0051802 39.7575225 -105.0050086 39.7572322
-17091 3689 4597 0.241148863142693 0.241148863142693 -104.9603811 39.7469469 -104.9603758 39.7447782
-2264 2264 2265 0.176035436319457 0.176035436319457 -104.9304797 39.7178171 -104.9304912 39.7194002
-14641 2244 2272 0.0187003459565438 0.0187003459565438 -105.0050086 39.7572322 -105.0048152 39.7571536
-16312 2722 2929 0.0126176772334624 0.0126176772334624 -104.96971 39.6952871 -104.9698519 39.6952562
-14127 419 417 0.0606641044076811 0.0606641044076811 -104.94552 39.7449427 -104.9458794 39.7444723
-2285 2284 2285 0.184338950183701 0.184338950183701 -104.9305594 39.7601749 -104.9305592 39.7618327
-17024 10059 6431 0.0170040072643452 0.0170040072643452 -105.0176702 39.753311 -105.0178463 39.7532399
-20326 10744 10738 0.00650370546328925 0.00650370546328925 -105.0235881 39.7590797 -105.0235235 39.7590488
-2307 2304 1995 0.0793159537973265 0.0793159537973265 -105.0127167 39.6959791 -105.0136437 39.6959725
-16363 7010 2769 0.112453696268037 0.112453696268037 -104.9318494 39.7619997 -104.933165 39.7620038
-16364 2769 3365 0.103853901930967 0.103853901930967 -104.933165 39.7620038 -104.93438 39.7620028
-20334 2967 10745 0.0137335338280324 0.0137335338280324 -105.0237301 39.7584727 -105.0237282 39.7585962
-2375 2363 964 0.101155075878388 0.101155075878388 -104.9849833 39.7193599 -104.9838008 39.7193434
-16463 9886 1081 0.198408324686945 0.198408324686945 -104.9705756 39.7060566 -104.972547 39.7069966
-16466 9913 9912 0.00925208668760351 0.00925208668760351 -104.9725631 39.7070317 -104.9726409 39.7070895
-17365 10091 3085 0.200980490545583 0.200980490545583 -104.9786569 39.7147194 -104.9786762 39.712912
-17304 4258 8744 0.201266280518922 0.201266280518922 -104.9634703 39.6965777 -104.9634565 39.6947677
-2443 2434 2435 0.0498096064689081 0.0498096064689081 -105.038137 39.7712705 -105.0387198 39.7712682
-18192 6053 4068 0.142529657997643 0.142529657997643 -105.0281511 39.7856201 -105.0281513 39.7843383
-16717 5546 10002 2.41636756690016 2.41636756690016 -104.9874887 39.6894093 -104.9875808 39.6676785
-14694 4875 4946 0.19209064576365 0.19209064576365 -104.9712147 39.735165 -104.9712638 39.7368921
-2465 1228 2455 0.0986019921641189 0.0986019921641189 -105.0123662 39.7704857 -105.0135199 39.7704859
-17232 243 244 0.123936016070967 0.123936016070967 -104.9728142 39.6892191 -104.9715783 39.6886379
-17233 244 245 0.0423914167747626 0.0423914167747626 -104.9715783 39.6886379 -104.9711551 39.6884397
-17234 245 30 0.0421885133223055 0.0421885133223055 -104.9711551 39.6884397 -104.9707346 39.6882416
-17235 30 31 0.0623462807475453 0.0623462807475453 -104.9707346 39.6882416 -104.9701337 39.6879245
-20321 10740 10741 0.00961494122957245 0.00961494122957245 -105.0235185 39.7589017 -105.0236254 39.7588748
-20520 10845 10841 0.0515194041185215 0.0515194041185215 -105.0187438 39.7583413 -105.0181411 39.7583408
-19715 10630 10631 0.0208944523636977 0.0208944523636977 -105.0042609 39.7342602 -105.0042586 39.7344481
-14699 4164 4773 0.260608636385053 0.260608636385053 -104.974654 39.7201321 -104.9746628 39.7224758
-2587 2559 2560 0.109781786773584 0.109781786773584 -105.0051367 39.7862559 -105.0064215 39.7862585
-18391 7038 3425 0.202488499072253 0.202488499072253 -105.0322651 39.7656196 -105.034629 39.7657398
-18395 2554 3861 0.207477450927098 0.207477450927098 -105.0433255 39.7874316 -105.0427456 39.7892435
-20741 10913 7366 0.0901821833329384 0.0901821833329384 -105.0277761 39.7631337 -105.0267891 39.7634203
-2613 2576 2373 0.0436228403965834 0.0436228403965834 -104.9558107 39.7098997 -104.9553043 39.709946
-19620 10524 10589 0.00570573305761744 0.00570573305761744 -104.9883547 39.7082799 -104.988288 39.70828
-18401 1425 7176 0.174145888646233 0.174145888646233 -105.0386719 39.7820847 -105.0380731 39.7805877
-20347 10745 10747 0.0185775892434006 0.0185775892434006 -105.0237282 39.7585962 -105.0235111 39.7585885
-2677 2638 2639 0.294941945704345 0.294941945704345 -105.015182 39.7220707 -105.0186305 39.7220872
-19655 10606 10607 0.00514986150833142 0.00514986150833142 -104.9882676 39.7060132 -104.9883278 39.7060132
-18881 7249 3271 0.203031342103983 0.203031342103983 -104.9611376 39.7056792 -104.9611322 39.7038533
-20742 7366 10907 0.0328095866921768 0.0328095866921768 -105.0267891 39.7634203 -105.026532 39.7636394
-2729 2684 2685 0.0539600310135124 0.0539600310135124 -104.9795298 39.7522538 -104.9799803 39.7525937
-17508 10114 10116 0.025112430125901 0.025112430125901 -105.0124916 39.7402957 -105.0127369 39.7404199
-17946 10225 10226 0.00737359034109891 0.00737359034109891 -104.987291 39.7236088 -104.9872048 39.7236101
-14688 2393 2798 0.189312144234638 0.189312144234638 -104.971187 39.7255843 -104.971199 39.7272868
-18130 10265 6045 0.200929523136355 0.200929523136355 -105.0222149 39.787432 -105.0222109 39.785625
-2876 2499 2821 0.136005417598284 0.136005417598284 -105.0095409 39.7801481 -105.0111319 39.7801807
-12974 2797 2822 0.0772628603550689 0.0772628603550689 -105.0069887 39.7454751 -105.0076937 39.7450404
-19658 9394 8493 0.0491161384071996 0.0491161384071996 -105.0253203 39.7701872 -105.0258941 39.7702117
-19659 8493 6763 0.145715875084599 0.145715875084599 -105.0258941 39.7702117 -105.0275974 39.7702694
-14698 5033 4164 0.121872885708228 0.121872885708228 -104.9746644 39.7190361 -104.974654 39.7201321
-17172 3092 5304 0.202230215982892 0.202230215982892 -104.9739802 39.7128965 -104.9739798 39.7147152
-3021 2953 2954 0.00990774005844554 0.00990774005844554 -105.0157188 39.7584009 -105.0158347 39.7584
-19694 10618 8145 0.956513774549446 0.956513774549446 -104.9416501 39.7908808 -104.9480016 39.7837973
-19803 5200 10646 0.12476083696761 0.12476083696761 -104.9969602 39.7241241 -104.9969581 39.7230021
-14722 4871 6016 0.191389811056615 0.191389811056615 -104.9735383 39.7351456 -104.9735459 39.7368668
-20794 8908 10948 0.0132755925041989 0.0132755925041989 -105.0289792 39.7622112 -105.0291285 39.7622441
-19880 10672 2617 0.0529554442967168 0.0529554442967168 -104.9957912 39.722999 -104.9957832 39.7225228
-19918 6233 5202 0.175854776488408 0.175854776488408 -104.9980791 39.7257025 -104.9980791 39.724121
-18502 9278 9526 0.133752339971597 0.133752339971597 -105.0363599 39.7511906 -105.036376 39.7499878
-3064 2995 2996 0.132712872312529 0.132712872312529 -104.9953975 39.759713 -104.9954583 39.7585204
-19901 10663 10676 0.0513919786820835 0.0513919786820835 -105.0428156 39.736637 -105.0434166 39.7366408
-19973 10306 619 0.00429215823862154 0.00429215823862154 -105.0316869 39.7366042 -105.0316871 39.7365656
-17075 7842 828 0.141317632530522 0.141317632530522 -104.9616094 39.7519514 -104.9616093 39.7532223
-17970 10238 10234 0.0188321983270746 0.0188321983270746 -104.9883222 39.7243341 -104.988102 39.7243341
-18897 10377 10378 0.0131134839493858 0.0131134839493858 -105.0124804 39.7505728 -105.0125479 39.7504669
-17180 5449 5450 0.206640976814444 0.206640976814444 -104.9704727 39.6911049 -104.9704932 39.6929632
-17113 3932 3959 0.0402088808240704 0.0402088808240704 -104.9574881 39.7475642 -104.957513 39.7479253
-19990 10684 10682 0.0498254818797545 0.0498254818797545 -105.0410722 39.7384617 -105.0416549 39.7384584
-18513 9294 10302 0.00151227516682341 0.00151227516682341 -105.0410618 39.7511847 -105.0410619 39.7511711
-3252 2365 3163 0.175456016528149 0.175456016528149 -104.98145 39.7193208 -104.9814586 39.7208987
-19267 10446 8486 0.0130023858176566 0.0130023858176566 -104.9952471 39.7458453 -104.9953533 39.7457616
-15217 9530 539 0.0270882933911684 0.0270882933911684 -105.0461917 39.7527843 -105.0461157 39.7530208
-18503 9526 9353 0.135313261796309 0.135313261796309 -105.036376 39.7499878 -105.0363784 39.7487709
-18902 10378 10381 0.0118745691698922 0.0118745691698922 -105.0125479 39.7504669 -105.0125841 39.7503638
-20282 10710 10722 0.0492625817369533 0.0492625817369533 -105.0441026 39.7735162 -105.044096 39.7739592
-19437 10490 10491 0.0516785382045006 0.0516785382045006 -104.9897131 39.7108173 -104.9897225 39.7103526
-16422 3358 3034 0.0480216533576434 0.0480216533576434 -104.9695281 39.7021526 -104.9699305 39.7024537
-17185 5659 5660 0.024871407903781 0.024871407903781 -104.9687309 39.6883933 -104.9684404 39.6883858
-18512 10302 9294 0.00151227516682341 0.00151227516682341 -105.0410619 39.7511711 -105.0410618 39.7511847
-18681 3185 3408 0.173742073092489 0.173742073092489 -105.0367216 39.7197052 -105.0367215 39.7181427
-15235 9533 9534 0.025845258726166 0.025845258726166 -104.9349851 39.7066969 -104.9352855 39.7067217
-15243 9534 9535 0.0751513734309232 0.0751513734309232 -104.9352855 39.7067217 -104.9359493 39.706279
-14715 5686 5687 0.105315223547906 0.105315223547906 -104.97583 39.7295104 -104.9758385 39.7304575
-19826 10647 9253 0.122215184303521 0.122215184303521 -105.0021963 39.7300097 -105.0022016 39.7289106
-20299 10728 5578 0.0498927645754841 0.0498927645754841 -105.0445532 39.7768578 -105.0439694 39.7768534
-15281 9557 9556 0.01686832436596 0.01686832436596 -104.9466791 39.7112633 -104.9468185 39.711156
-15283 9557 9558 0.0154433036380546 0.0154433036380546 -104.9466791 39.7112633 -104.9465426 39.7113542
-17312 5705 5706 0.401673875470838 0.401673875470838 -104.9611673 39.6911287 -104.9611029 39.6875167
-3564 3426 3427 0.0516847701108369 0.0516847701108369 -105.0346376 39.7664739 -105.0346332 39.7669387
-15400 9579 3315 0.0326402169295471 0.0326402169295471 -105.0157258 39.7437753 -105.0155552 39.7435127
-15402 9580 9581 0.331383974435327 0.331383974435327 -105.0162851 39.7457849 -105.0162939 39.7487651
-15403 9582 9583 0.0120173707764648 0.0120173707764648 -105.0104647 39.7536666 -105.0103359 39.7536233
-18689 1859 5770 0.176521953507317 0.176521953507317 -105.0415045 39.7213253 -105.0415039 39.7197378
-3659 3496 3497 0.100604510338319 0.100604510338319 -104.9500131 39.6983858 -104.9488372 39.6983858
-15426 8637 4935 0.0862034738049073 0.0862034738049073 -104.9993008 39.7450562 -104.9999815 39.7444843
-15429 9597 8608 0.0815311130388188 0.0815311130388188 -105.0002485 39.7423649 -105.0009845 39.7418987
-14717 933 5818 0.11375652775637 0.11375652775637 -104.9758289 39.7320426 -104.9752659 39.7329695
-3704 3540 3541 0.0487079158287504 0.0487079158287504 -104.9786521 39.6984298 -104.9780828 39.698433
-20304 9382 10728 0.0315682813160642 0.0315682813160642 -105.0445538 39.7765739 -105.0445532 39.7768578
-15490 9618 8464 0.061043367869745 0.061043367869745 -105.0008107 39.746683 -105.0014282 39.7464074
-15492 9627 9626 0.0311123551122936 0.0311123551122936 -105.0003825 39.746907 -105.0006793 39.7467451
-17382 5814 2314 0.0781390219671105 0.0781390219671105 -105.0151443 39.7320016 -105.0146392 39.731416
-20431 10791 10754 0.00545772790966665 0.00545772790966665 -105.0231621 39.7594921 -105.0232175 39.7595165
-3935 3733 3734 0.176323868665952 0.176323868665952 -105.0028152 39.7336992 -105.0028252 39.7352849
-20425 10786 10787 0.0471980291688183 0.0471980291688183 -105.0188457 39.7592189 -105.0188651 39.7596431
-16275 9868 3657 0.128315234485653 0.128315234485653 -104.9551011 39.698724 -104.9539423 39.6994566
-17111 3775 3776 0.0186255054019669 0.0186255054019669 -104.957947 39.7477378 -104.9578598 39.7475843
-20436 10794 10795 0.0773551964908624 0.0773551964908624 -105.0218405 39.7610002 -105.0227368 39.7610963
-4030 3814 3815 0.205898323776278 0.205898323776278 -105.039412 39.7472161 -105.0374612 39.7461303
-14114 3768 3623 0.0676593021490157 0.0676593021490157 -104.9443957 39.7462296 -104.9448677 39.7457412
-20311 10732 10733 0.00871128803713245 0.00871128803713245 -105.0237565 39.7589777 -105.0236546 39.7589766
-17485 321 4992 0.0357053960194593 0.0357053960194593 -105.0159659 39.7510962 -105.0161841 39.75137
-4135 1293 3896 0.0646203690871901 0.0646203690871901 -104.9634588 39.7488413 -104.9634682 39.7494224
-16181 9842 5547 0.812121023854291 0.812121023854291 -104.9882243 39.682101 -104.9881577 39.6894044
-15562 9299 9657 0.183361943567776 0.183361943567776 -104.9775506 39.725614 -104.9775593 39.727263
-15563 9657 3803 0.198879262059456 0.198879262059456 -104.9775593 39.727263 -104.977579 39.7290515
-18244 9371 2433 0.198605382792158 0.198605382792158 -105.0375615 39.7694949 -105.0375589 39.771281
-20442 10799 10800 0.0197706815366264 0.0197706815366264 -105.0218863 39.7618096 -105.0218874 39.7616318
-4153 2788 3908 0.132166336514103 0.132166336514103 -104.9634422 39.7669465 -104.9634409 39.7681351
-19582 10575 10562 0.0700205995742609 0.0700205995742609 -104.9885885 39.7085196 -104.9885838 39.7091493
-16266 7738 5831 0.20157737543677 0.20157737543677 -104.9586954 39.6893271 -104.9586821 39.6911399
-17685 6154 6155 0.459645187119716 0.459645187119716 -104.9794838 39.7796685 -104.9848557 39.7798784
-4242 3991 3227 0.0177155969329486 0.0177155969329486 -105.0299548 39.7716681 -105.0299581 39.7718274
-4243 3227 3992 0.0329982706824684 0.0329982706824684 -105.0299581 39.7718274 -105.0299454 39.772124
-19465 10509 10510 0.0192818852758557 0.0192818852758557 -104.9902632 39.7097378 -104.9902651 39.7095644
-20445 10801 10802 0.0205768304881295 0.0205768304881295 -105.021849 39.761283 -105.0218433 39.761098
-4285 658 1885 0.048605694225596 0.048605694225596 -105.0299141 39.7589753 -105.0299322 39.7594122
-14724 5469 977 0.135303141818757 0.135303141818757 -104.9735608 39.7384085 -104.9741536 39.7395367
-4308 4042 3999 0.107188720026654 0.107188720026654 -105.0287585 39.7181591 -105.0300116 39.7181459
-15626 9687 9688 0.091295408872665 0.091295408872665 -104.9105005 39.7584038 -104.9094325 39.758409
-18437 10292 8442 0.00675422790693776 0.00675422790693776 -105.0280151 39.7614164 -105.0279677 39.761465
-20447 10794 10803 0.118731077964576 0.118731077964576 -105.0218405 39.7610002 -105.0217149 39.7599368
-4347 4075 4076 0.0470687599943484 0.0470687599943484 -105.0333673 39.7838362 -105.0339181 39.7838412
-4349 1002 4077 0.216843974938131 0.216843974938131 -104.9875798 39.7840554 -104.9901174 39.7840727
-20454 10809 10810 0.100342747602662 0.100342747602662 -105.0193936 39.7576917 -105.0204422 39.7580973
-4420 4130 4131 0.121697779505431 0.121697779505431 -104.9511844 39.7681053 -104.9511702 39.7691997
-19593 10478 10580 0.068856662719705 0.068856662719705 -104.9902571 39.7102784 -104.991062 39.7102859
-20625 10804 10874 0.0625386897444795 0.0625386897444795 -105.0242305 39.7611919 -105.0235366 39.7610136
-18253 3979 6754 0.201867515357413 0.201867515357413 -105.0299437 39.7660501 -105.0275819 39.7660439
-4514 4194 4195 0.10298973821829 0.10298973821829 -105.0077638 39.7343613 -105.0077585 39.7352875
-15674 9685 9686 0.0593326737516342 0.0593326737516342 -104.9123877 39.7583821 -104.9116936 39.758384
-20460 10813 10814 0.0263810628539784 0.0263810628539784 -105.0189136 39.7585213 -105.0192222 39.758524
-4540 1339 4214 0.206331927913881 0.206331927913881 -105.0179868 39.7130093 -105.0180211 39.7111539
-15694 7269 2024 0.188168800569156 0.188168800569156 -104.937334 39.717787 -104.935134 39.717787
-19466 10510 10511 0.0234630277187848 0.0234630277187848 -104.9902651 39.7095644 -104.9902675 39.7093534
-20626 10788 10875 0.12707186988651 0.12707186988651 -105.0218514 39.7587986 -105.0215131 39.7599114
-14733 6342 4868 0.191023303912105 0.191023303912105 -104.9758813 39.7368678 -104.9758386 39.7351502
-18638 7383 5180 0.100367385774354 0.100367385774354 -105.0336341 39.725085 -105.0345542 39.7245247
-15713 1050 3913 0.111080496528689 0.111080496528689 -104.9620183 39.718346 -104.963317 39.7183519
-18173 6048 6420 0.20192046475531 0.20192046475531 -105.0245363 39.7856143 -105.0245269 39.7874302
-4662 1707 4301 0.203353286347824 0.203353286347824 -105.0343547 39.691257 -105.0343542 39.6894282
-15737 3771 8867 0.1545281811215 0.1545281811215 -104.9439848 39.7291098 -104.9439798 39.7304995
-18694 6025 5978 0.00688297127309608 0.00688297127309608 -105.0391099 39.7198541 -105.0391098 39.719916
-18468 10298 9138 0.0199498887128462 0.0199498887128462 -105.0431907 39.7509391 -105.0432544 39.7511117
-17131 4372 1799 0.197593407061799 0.197593407061799 -104.9763628 39.692984 -104.9763617 39.694761
-15759 3487 5346 0.100946337054167 0.100946337054167 -104.9293078 39.7162471 -104.9281276 39.716246
-20632 8227 6090 0.135158757751447 0.135158757751447 -105.0138041 39.7620198 -105.0138111 39.7608043
-18263 6067 6514 0.193791754137247 0.193791754137247 -105.038672 39.7856168 -105.0386639 39.783874
-4805 4410 4411 0.102107994490615 0.102107994490615 -105.0297971 39.7030981 -105.0298314 39.704016
-19823 9252 7641 0.177252004679102 0.177252004679102 -105.0008928 39.7289115 -105.0009116 39.7273175
-15778 9119 9707 0.0214606208419429 0.0214606208419429 -105.039492 39.7311696 -105.039492 39.7313626
-15780 9707 9703 0.181325566879256 0.181325566879256 -105.039492 39.7313626 -105.039492 39.7329933
-14737 4770 6526 0.178169149120729 0.178169149120729 -104.97698 39.7224773 -104.9769714 39.7240796
-4824 534 475 0.0459278377034575 0.0459278377034575 -105.0126456 39.7551939 -105.0122615 39.7554827
-15830 7134 9724 0.00382519149625338 0.00382519149625338 -105.0393032 39.7348018 -105.0393035 39.7348362
-434 433 364 0.11596793090747 0.11596793090747 -104.9692608 39.6879972 -104.9703166 39.6886511
-17139 4488 3200 0.20282742100359 0.20282742100359 -104.9762867 39.7092645 -104.976351 39.7110879
-20710 7365 10885 0.00202939174918317 0.00202939174918317 -105.0253917 39.7620904 -105.0253682 39.762093
-20738 10886 10887 0.038658244493302 0.038658244493302 -105.0396293 39.7653159 -105.0397062 39.7656585
-4921 4492 4493 0.0619945774719425 0.0619945774719425 -105.0052379 39.7395355 -105.0052303 39.740093
-18268 2438 5736 0.170878783790289 0.170878783790289 -105.0399004 39.7709268 -105.0398843 39.7724635
-4947 3640 4511 0.128546240241841 0.128546240241841 -104.9529616 39.6985396 -104.9541278 39.6978107
-2413 2403 2404 0.136554071110129 0.136554071110129 -105.017566 39.7530336 -105.0191633 39.7530233
-11806 8418 8419 0.144478674207108 0.144478674207108 -104.986246 39.7517975 -104.9850687 39.7527297
-470 473 474 0.189801845816516 0.189801845816516 -105.0185991 39.7470262 -105.0180056 39.7453814
-14741 3802 5935 0.15521301123556 0.15521301123556 -104.9769713 39.7290617 -104.9769887 39.7304575
-4998 4544 4545 0.135440573029242 0.135440573029242 -105.0220369 39.7741287 -105.0220798 39.7753463
-2670 2628 2629 0.199951181775354 0.199951181775354 -105.0227761 39.7220608 -105.025114 39.7220614
-18532 10307 7540 0.709454997862857 0.709454997862857 -105.0532518 39.7661573 -105.0449514 39.7661904
-5075 4599 1025 0.0544629152641776 0.0544629152641776 -104.9615991 39.7447832 -104.9622361 39.7447859
-17143 4616 4617 0.200408905820063 0.200408905820063 -104.9763402 39.7165163 -104.9763514 39.7183186
-20669 10890 10891 0.0251214927041886 0.0251214927041886 -105.0403806 39.7653384 -105.0400867 39.7653362
-14743 931 2216 0.184594913416957 0.184594913416957 -104.9770026 39.732045 -104.9770059 39.7337051
-5094 4615 4618 0.110635552941058 0.110635552941058 -104.9835591 39.744874 -104.9848531 39.7448793
-19633 10594 10505 0.00660487490366482 0.00660487490366482 -104.9910918 39.7081283 -104.991169 39.7081293
-20709 10913 7365 0.234512277592806 0.234512277592806 -105.0277761 39.7631337 -105.0253917 39.7620904
-20713 5881 10915 0.0114767201911695 0.0114767201911695 -105.0253707 39.7632845 -105.0253686 39.7633877
-18275 6667 1427 0.0124761175920816 0.0124761175920816 -105.0398176 39.7819709 -105.0398172 39.7820831
-18575 10323 10324 0.133190640971179 0.133190640971179 -105.0341543 39.7821409 -105.0327262 39.781661
-19540 10553 10554 0.069921649249612 0.069921649249612 -104.9890431 39.7091518 -104.9890497 39.708523
-19541 10554 7472 0.00672748885261455 0.00672748885261455 -104.9890497 39.708523 -104.9890503 39.7084625
-19542 7472 10555 0.00636055689076091 0.00636055689076091 -104.9890503 39.7084625 -104.9890509 39.7084053
-20479 10827 10828 0.0321786032396296 0.0321786032396296 -105.0188943 39.7587219 -105.0192706 39.7587299
-5172 3232 4672 0.135963226577445 0.135963226577445 -104.993638 39.7717733 -104.9936519 39.772996
-17294 8754 10015 0.202671913712405 0.202671913712405 -104.944769 39.6947624 -104.9447901 39.696585
-23 24 25 0.131395177842502 0.131395177842502 -105.0205339 39.7572526 -105.0220707 39.7572761
-24 25 26 0.132981987743145 0.132981987743145 -105.0220707 39.7572761 -105.0236259 39.7572468
-18535 5555 10308 0.537923452261619 0.537923452261619 -105.0440136 39.7598585 -105.0503066 39.7598409
-5196 4693 4694 0.101324047402986 0.101324047402986 -105.038526 39.7094438 -105.0397105 39.7094438
-17084 505 4047 0.193244409170512 0.193244409170512 -104.9471759 39.748019 -104.9449621 39.7476682
-20013 7896 8858 0.144841565186615 0.144841565186615 -104.9891984 39.7521958 -104.988003 39.7531189
-18281 6757 6460 0.11412288805936 0.11412288805936 -105.0386612 39.7767112 -105.0386826 39.775685
-5239 4723 4724 0.173697663092072 0.173697663092072 -104.9696767 39.7416775 -104.9696749 39.7432396
-57 61 62 0.0954500024095661 0.0954500024095661 -104.931714 39.700208 -104.932829 39.700178
-18609 5208 6228 0.175202487961463 0.175202487961463 -105.0445268 39.7239462 -105.0445535 39.7255217
-18543 10313 5554 0.549870500653692 0.549870500653692 -105.050446 39.7589461 -105.0440133 39.7589595
-5310 4766 3155 0.0172249530452766 0.0172249530452766 -104.9813252 39.7224891 -104.9811238 39.7224897
-78 84 85 0.0505639086324271 0.0505639086324271 -104.9611564 39.7002245 -104.9605654 39.7002204
-19778 10632 5380 0.0979518829901303 0.0979518829901303 -105.0008955 39.7325996 -105.0008982 39.7334805
-20481 10792 10829 0.0269599370404467 0.0269599370404467 -105.0232345 39.7595229 -105.0230688 39.7597292
-5457 4876 4877 0.0499120224253174 0.0499120224253174 -104.9706482 39.735165 -104.9700645 39.735165
-96 101 102 0.0321305027576107 0.0321305027576107 -104.9418857 39.7001887 -104.9415109 39.7002071
-97 102 103 0.0620448910426151 0.0620448910426151 -104.9415109 39.7002071 -104.940786 39.7001905
-18782 10348 10344 0.0162360672802701 0.0162360672802701 -105.0006804 39.7393818 -105.0008699 39.7393725
-5478 4135 4890 0.0934025271750886 0.0934025271750886 -104.9505787 39.7351289 -104.9494864 39.7351307
-121 128 129 0.177008602394702 0.177008602394702 -105.0065998 39.7352916 -105.0065273 39.7368825
-244 251 252 0.175978023607631 0.175978023607631 -104.9994212 39.7305062 -104.9994279 39.7320888
-18294 6901 1428 0.00619376962359973 0.00619376962359973 -105.0409738 39.7821337 -105.0409732 39.782078
-5500 4907 4908 0.100175479072509 0.100175479072509 -104.935013 39.7346788 -104.9338415 39.7346803
-140 148 149 0.0975727004199176 0.0975727004199176 -105.0050494 39.6930773 -105.0061897 39.6930874
-393 395 396 0.169106051700542 0.169106051700542 -104.9367017 39.7800737 -104.9347437 39.7798532
-18784 10348 10349 0.00525970147109288 0.00525970147109288 -105.0006804 39.7393818 -105.0006189 39.7393808
-5522 4924 4677 0.103650586835971 0.103650586835971 -104.9935332 39.7338673 -104.9941264 39.7346802
-18546 7539 10314 0.65633531431652 0.65633531431652 -105.0449396 39.7652893 -105.0526184 39.7652564
-18297 6968 6995 0.202610377838011 0.202610377838011 -105.0409894 39.7802021 -105.0409786 39.77838
-5676 3669 5032 0.215322761034264 0.215322761034264 -104.9757447 39.7475025 -104.9757617 39.7494389
-173 182 183 0.0984047094047537 0.0984047094047537 -105.0379081 39.6931063 -105.0390582 39.6931063
-174 183 184 0.100655002347226 0.100655002347226 -105.0390582 39.6931063 -105.0402341 39.6931327
-16515 5454 5455 0.104997960992542 0.104997960992542 -104.9857094 39.7569105 -104.984841 39.7562427
-20485 10832 10763 0.0351600114003883 0.0351600114003883 -105.025074 39.7612402 -105.0250727 39.760924
-5779 2576 4917 0.032816005995912 0.032816005995912 -104.9558107 39.7098997 -104.9558286 39.7101945
-192 202 203 0.199740801936021 0.199740801936021 -105.0203557 39.6985481 -105.0203643 39.6967518
-193 203 169 0.402428218597258 0.402428218597258 -105.0203643 39.6967518 -105.0203814 39.6931327
-14755 5931 927 0.177893389603082 0.177893389603082 -104.9792436 39.7304339 -104.9792571 39.7320337
-5803 5121 5122 0.103540820168727 0.103540820168727 -104.970912 39.7597791 -104.9708892 39.7607101
-225 49 236 0.00807621055546913 0.00807621055546913 -104.9733927 39.700201 -104.9732983 39.700201
-18672 1538 1539 0.106836085520251 0.106836085520251 -105.042161 39.7245549 -105.042161 39.7255157
-14756 927 2212 0.186014347432929 0.186014347432929 -104.9792571 39.7320337 -104.9792376 39.7337065
-5852 1967 4622 0.105142035615429 0.105142035615429 -104.9275397 39.743724 -104.9274625 39.7446677
-282 292 293 0.038589084717098 0.038589084717098 -105.0040727 39.760849 -105.0037495 39.7610913
-283 293 294 0.0763501630731075 0.0763501630731075 -105.0037495 39.7610913 -105.0030853 39.7615504
-285 295 296 0.17581051150028 0.17581051150028 -104.9946201 39.7273342 -104.9946233 39.7289153
-14758 4862 7101 0.190667289560019 0.190667289560019 -104.9792634 39.7351686 -104.9792889 39.7368832
-5875 4334 5174 0.0464101693595893 0.0464101693595893 -104.9780308 39.7165201 -104.9774882 39.7165195
-350 351 352 0.0901523030384508 0.0901523030384508 -105.0171199 39.7741304 -105.017099 39.774941
-353 355 356 0.108591561133878 0.108591561133878 -104.9475022 39.7793961 -104.9486062 39.7789125
-369 370 371 0.00989155289209397 0.00989155289209397 -105.0298446 39.7379436 -105.0298176 39.7380301
-18304 7116 6758 0.139614208847036 0.139614208847036 -105.0259576 39.7678922 -105.0275911 39.7678891
-517 511 512 0.231881303387922 0.231881303387922 -105.0312479 39.7836347 -105.03396 39.7837055
-518 512 513 0.0504031171767775 0.0504031171767775 -105.03396 39.7837055 -105.0345487 39.7837339
-12256 8620 8618 0.1042966231246 0.1042966231246 -105.0093075 39.7583444 -105.0084208 39.7577001
-6051 5293 5294 0.1322760806231 0.1322760806231 -105.0315166 39.7439551 -105.0330637 39.7439508
-18305 6758 3982 0.20021257935936 0.20021257935936 -105.0275911 39.7678891 -105.0299336 39.7678829
-574 248 567 0.654270176053915 0.654270176053915 -104.966468 39.6862015 -104.9595276 39.6837329
-575 264 568 0.0404038185731676 0.0404038185731676 -104.9479356 39.6896766 -104.9479442 39.6893133
-19637 10596 10597 0.0126826750829723 0.0126826750829723 -104.9881372 39.7071852 -104.9882854 39.7071884
-20403 10761 10778 0.00417068578422797 0.00417068578422797 -105.0250806 39.7603661 -105.0250816 39.7603286
-6437 2444 5569 0.02055703905507 0.02055703905507 -105.0440363 39.7709406 -105.0440431 39.7711254
-614 605 606 0.0427456634033912 0.0427456634033912 -105.0276669 39.7627327 -105.0278867 39.763078
-11697 1006 1032 0.0356944242966225 0.0356944242966225 -105.0016257 39.7531381 -105.0019469 39.752933
-18485 7779 9146 0.0491523501803915 0.0491523501803915 -105.0393085 39.7589141 -105.0398835 39.7589172
-19922 7869 3723 0.102610678307364 0.102610678307364 -104.9980684 39.719352 -104.9980684 39.7184292
-20528 10783 10029 0.0108754318867703 0.0108754318867703 -105.0159618 39.7583177 -105.015835 39.7583097
-6839 2922 5305 0.104995892978265 0.104995892978265 -105.021523 39.7147919 -105.0227504 39.7148051
-634 544 624 0.0671323040254876 0.0671323040254876 -105.034963 39.736586 -105.0357481 39.7365857
-635 624 625 0.00434381837571047 0.00434381837571047 -105.0357481 39.7365857 -105.0357989 39.7365856
-20428 10788 10789 0.0563042197472527 0.0563042197472527 -105.0218514 39.7587986 -105.0223762 39.7591046
-18340 7633 7634 0.201343863199868 0.201343863199868 -105.0351904 39.7603234 -105.0351771 39.7621341
-20531 2704 10847 0.00595682994262844 0.00595682994262844 -105.0229197 39.7608329 -105.0229893 39.7608356
-18337 7624 2435 0.20163475178063 0.20163475178063 -105.0387364 39.7694549 -105.0387198 39.7712682
-655 645 646 0.15124021105117 0.15124021105117 -104.9372542 39.7414009 -104.9354861 39.7413613
-11518 656 657 0.200075413530476 0.200075413530476 -105.0346018 39.7589808 -105.0322612 39.758985
-18341 7634 7661 0.00671626059696149 0.00671626059696149 -105.0351771 39.7621341 -105.0351767 39.7621945
-18342 7661 7662 0.197150609042501 0.197150609042501 -105.0351767 39.7621945 -105.0351663 39.7639675
-6951 5687 5936 0.0500693590985736 0.0500693590985736 -104.9758385 39.7304575 -104.975253 39.7304575
-6952 5936 5453 0.049749026364738 0.049749026364738 -104.975253 39.7304575 -104.9746713 39.7304514
-18121 10257 2538 0.176222237628552 0.176222237628552 -105.010685 39.7858675 -105.01068 39.7874523
-18344 5247 6874 0.0949718672307841 0.0949718672307841 -105.0351958 39.7649631 -105.0351985 39.7658172
-20408 10778 8971 0.00240570116723256 0.00240570116723256 -105.0250816 39.7603286 -105.0250832 39.760307
-7025 5987 5146 0.0839973170950687 0.0839973170950687 -104.9257006 39.7292726 -104.9257328 39.7300276
-687 680 681 0.00253308666004397 0.00253308666004397 -104.9569831 39.7416105 -104.9569536 39.7416084
-688 681 682 0.0177686502456197 0.0177686502456197 -104.9569536 39.7416084 -104.9567458 39.7416064
-20536 10790 10850 0.034182335159618 0.034182335159618 -105.0228403 39.759346 -105.0226484 39.7596157
-18351 6756 3981 0.199906908242653 0.199906908242653 -105.0275956 39.7669634 -105.0299345 39.7669593
-7046 5996 5997 0.0183612294578931 0.0183612294578931 -104.9257688 39.7618503 -104.9258117 39.7620121
-7047 5997 5998 0.0939822022965603 0.0939822022965603 -104.9258117 39.7620121 -104.9257702 39.7628567
-16701 9996 9997 0.0529811614609842 0.0529811614609842 -104.9999838 39.7464987 -104.9999731 39.7460223
-20223 10711 10712 0.0485921897229188 0.0485921897229188 -104.9413123 39.6937735 -104.941312 39.6942105
-7066 4209 6007 0.100592936440223 0.100592936440223 -105.0180383 39.7004566 -105.0192141 39.7004566
-719 715 716 0.14011322934495 0.14011322934495 -105.0041615 39.7717924 -105.0041786 39.7730524
-18164 6036 4091 0.184872985391224 0.184872985391224 -105.0152693 39.7856221 -105.0152654 39.7839595
-18360 7775 7374 0.049527285222362 0.049527285222362 -105.0259595 39.7688086 -105.0259557 39.7683632
-7242 1086 6117 0.0183572728116315 0.0183572728116315 -104.9723899 39.7092881 -104.9721753 39.7092881
-20444 10797 10801 0.0204844414155983 0.0204844414155983 -105.0218716 39.7614664 -105.021849 39.761283
-14778 5928 925 0.176931188736704 0.176931188736704 -104.9803886 39.7304366 -104.9804094 39.7320277
-7325 6163 6164 0.404282808510336 0.404282808510336 -104.9569776 39.6893298 -104.9569833 39.685694
-757 756 757 0.0403523543057396 0.0403523543057396 -104.9853038 39.7752036 -104.9848317 39.775197
-758 758 759 0.10406364243601 0.10406364243601 -104.9258629 39.7765766 -104.9246452 39.7765808
-20552 10810 10855 0.0274674933149076 0.0274674933149076 -105.0204422 39.7580973 -105.020438 39.7583443
-7375 340 337 0.0516827997381363 0.0516827997381363 -104.9379355 39.7804643 -104.9373307 39.7804664
-778 783 784 0.143355100800641 0.143355100800641 -105.001524 39.702453 -105.0031735 39.702226
-18365 1660 7716 0.0501099513590678 0.0501099513590678 -105.0259529 39.7674233 -105.0259442 39.7669727
-7418 5550 6228 0.0493634763375772 0.0493634763375772 -105.0439763 39.72552 -105.0445535 39.7255217
-798 803 806 1.01502432527974 1.01502432527974 -104.9246129 39.752877 -104.9127396 39.7528988
-20237 10712 8819 0.0494540965066323 0.0494540965066323 -104.941312 39.6942105 -104.940734 39.6942095
-7441 1600 1601 0.0713701116113288 0.0713701116113288 -105.0133862 39.6987066 -105.013927 39.6982179
-814 825 826 0.10637782371988 0.10637782371988 -104.9647057 39.7532062 -104.9634614 39.7531961
-815 826 827 0.107195537700229 0.107195537700229 -104.9634614 39.7531961 -104.9622082 39.7532291
-20239 10716 10717 0.029516495512001 0.029516495512001 -104.9411444 39.6963884 -104.9410012 39.6961469
-7466 2930 5311 0.101596891275597 0.101596891275597 -105.021523 39.6985217 -105.0227074 39.6985877
-836 849 850 0.0925483728292225 0.0925483728292225 -104.9429772 39.7557004 -104.9429726 39.7565327
-837 850 851 0.184151560988971 0.184151560988971 -104.9429726 39.7565327 -104.9429635 39.7581888
-20241 8817 10717 0.0237033604501814 0.0237033604501814 -104.9407242 39.6961507 -104.9410012 39.6961469
-7541 6292 65 0.186329349943054 0.186329349943054 -104.933901 39.698515 -104.934135 39.700181
-857 870 871 0.202831473953724 0.202831473953724 -104.9428589 39.7710708 -104.9428522 39.7728949
-14121 4084 3945 0.0818484712615532 0.0818484712615532 -104.9441124 39.7484997 -104.9450651 39.7484271
-18787 10347 10345 0.045081440573134 0.045081440573134 -105.0006789 39.7395014 -105.0006728 39.7399068
-7826 2505 6454 0.100016861256994 0.100016861256994 -105.0100464 39.7753527 -105.0112167 39.7753455
-876 889 890 0.105571186658179 0.105571186658179 -104.9536454 39.7644642 -104.9524103 39.764457
-877 890 891 0.105688383652669 0.105688383652669 -104.9524103 39.764457 -104.9511738 39.7644539
-11418 8067 8068 0.0483239948134963 0.0483239948134963 -105.0441378 39.7835013 -105.043576 39.7834515
-7848 6464 6465 0.0519215197465546 0.0519215197465546 -105.041027 39.7752745 -105.0416343 39.775288
-894 908 909 0.110040792413973 0.110040792413973 -104.9331257 39.7644965 -104.9318383 39.7645031
-896 910 911 0.148938852784508 0.148938852784508 -104.9998754 39.7567199 -104.998644 39.7576675
-11420 8068 8077 0.744996900508782 0.744996900508782 -105.043576 39.7834515 -105.0348588 39.7833346
-7872 6484 6485 0.109350713693358 0.109350713693358 -104.9848486 39.7462103 -104.9835697 39.7461971
-914 928 929 0.0454506765778274 0.0454506765778274 -104.9786778 39.7320223 -104.9781467 39.7320382
-15223 8102 5299 0.0276921695746079 0.0276921695746079 -105.0426126 39.7442054 -105.042522 39.7439663
-16761 10006 10010 0.188081556068426 0.188081556068426 -104.9523627 39.6986871 -104.950646 39.6997437
-20354 9336 10730 0.00773852906846938 0.00773852906846938 -105.0251673 39.7585782 -105.0250776 39.7585876
-7965 6543 6544 0.0483732045653669 0.0483732045653669 -104.9723281 39.7237476 -104.9717626 39.7237562
-954 966 967 0.0990431305437434 0.0990431305437434 -104.9838084 39.7225355 -104.9838014 39.7234262
-19650 10601 10604 0.0245600833310456 0.0245600833310456 -104.9879279 39.7066512 -104.988215 39.7066518
-18271 6463 6629 0.159535181156963 0.159535181156963 -105.0398602 39.7752659 -105.0398199 39.7767003
-20358 10736 9208 0.00987870578899212 0.00987870578899212 -105.0233746 39.7593437 -105.0233093 39.759417
-11333 3953 8218 0.0887906096153549 0.0887906096153549 -105.0001937 39.7283674 -104.9994384 39.7289153
-976 987 988 0.0367128135573791 0.0367128135573791 -104.9740753 39.7240686 -104.9740667 39.7237385
-18911 10389 10390 0.0499832893351177 0.0499832893351177 -105.0126283 39.7501885 -105.0126243 39.749739
-8132 6646 6647 0.176189320777164 0.176189320777164 -104.9986572 39.7336891 -104.998664 39.7352736
-20359 9208 8992 0.00952006614931064 0.00952006614931064 -105.0233093 39.759417 -105.0232439 39.7594863
-18533 7540 5565 0.0799101067174197 0.0799101067174197 -105.0449514 39.7661904 -105.0440165 39.7661967
-15227 8248 1474 0.0211145699437457 0.0211145699437457 -104.9245969 39.6962239 -104.9247632 39.6960836
-11427 8252 8251 0.0497577863871374 0.0497577863871374 -105.0342719 39.7834294 -105.0348524 39.7834646
-8228 5488 6699 0.203871251538877 0.203871251538877 -104.9494922 39.738334 -104.9494732 39.7401674
-1013 1025 1026 0.240326237485559 0.240326237485559 -104.9622361 39.7447859 -104.9622426 39.7469472
-1014 1026 1027 0.140197604091005 0.140197604091005 -104.9622426 39.7469472 -104.9622318 39.748208
-11524 8299 6771 0.0679188084680006 0.0679188084680006 -105.0260753 39.7595725 -105.0268698 39.7595648
-8280 6724 1837 0.0673898837011532 0.0673898837011532 -105.0120852 39.72025 -105.0120749 39.720856
-16769 3180 3279 0.131366088579917 0.131366088579917 -104.9540885 39.7026636 -104.9540847 39.703845
-11560 7714 8320 0.204692599225755 0.204692599225755 -105.0316842 39.7566755 -105.0317009 39.7548347
-18785 10349 3941 0.0399279993421446 0.0399279993421446 -105.0006189 39.7393808 -105.000152 39.7393746
-1055 1071 1072 0.193562714729093 0.193562714729093 -105.0090259 39.7765399 -105.009231 39.7782735
-18374 2425 6794 0.0832162654729584 0.0832162654729584 -105.0324788 39.7706946 -105.0322928 39.76996
-8378 6787 5475 0.176557126416642 0.176557126416642 -104.9684521 39.7368249 -104.9684271 39.7384126
-1079 1095 1096 0.106445830238736 0.106445830238736 -105.0405345 39.724543 -105.0405516 39.7255002
-1081 1097 1098 0.0486277340974482 0.0486277340974482 -105.040561 39.7306097 -105.0405664 39.7301724
-18378 2549 8381 0.409599255943821 0.409599255943821 -105.0398307 39.787434 -105.0398172 39.7911176
-8425 4370 2496 0.102227972652095 0.102227972652095 -105.0014826 39.7040009 -105.0026756 39.7039481
-1101 1117 1118 0.104134759343337 0.104134759343337 -105.0404813 39.7539268 -105.0404858 39.7548633
-19670 9361 9367 0.104968988119014 0.104968988119014 -105.0246491 39.770221 -105.0246438 39.769277
-11768 8406 8391 0.072368398733761 0.072368398733761 -104.9814866 39.7527817 -104.982081 39.7523183
-11405 6191 577 0.346853696348124 0.346853696348124 -104.9832163 39.7795774 -104.979193 39.7791651
-11711 2125 2126 0.0693722119224359 0.0693722119224359 -105.0057953 39.756766 -105.0056493 39.7573797
-1121 1137 1138 0.209246619241212 0.209246619241212 -105.0404024 39.780201 -105.040403 39.7820828
-11896 1345 8466 0.0539854948645785 0.0539854948645785 -105.0025087 39.7490201 -105.0020778 39.7486652
-8519 3823 6870 0.0122276886226055 0.0122276886226055 -105.0106786 39.6880414 -105.0108215 39.6880414
-1142 1161 1045 0.106182749069371 0.106182749069371 -104.9634876 39.7632183 -104.9622462 39.763254
-1143 1045 1162 0.0572035723632033 0.0572035723632033 -104.9622462 39.763254 -104.9615772 39.7632401
-11949 8497 8498 0.0157235898061176 0.0157235898061176 -105.0139116 39.7556283 -105.0137949 39.755519
-8563 6893 6894 0.0563604312984052 0.0563604312984052 -105.0252908 39.7655845 -105.0259502 39.7655831
-1161 1180 1181 0.108807320753836 0.108807320753836 -104.9967587 39.6994606 -104.9967963 39.6984825
-1162 1181 555 0.0264412731929892 0.0264412731929892 -104.9967963 39.6984825 -104.9967877 39.6982448
-11990 6574 4455 0.147936408791814 0.147936408791814 -104.9828432 39.7584876 -104.9816151 39.759425
-8587 6905 6906 0.00825706398143248 0.00825706398143248 -104.9475756 39.7692051 -104.947479 39.769204
-1181 1196 1197 0.0308045840002764 0.0308045840002764 -104.9532393 39.7271307 -104.9528791 39.7271293
-16676 9978 9979 0.0911222888155273 0.0911222888155273 -105.0081875 39.7419793 -105.0090565 39.7415049
-12046 8525 8526 0.0214801658544325 0.0214801658544325 -105.0047107 39.7504962 -105.0049596 39.7505226
-8609 4639 1260 0.0990232299326886 0.0990232299326886 -105.0193449 39.7766055 -105.0205036 39.7766121
-20366 10746 10748 0.00389959559054649 0.00389959559054649 -105.0236226 39.75895 -105.0235917 39.7589758
-8754 6984 6985 0.142274771709776 0.142274771709776 -105.008704 39.7588217 -105.0098936 39.7597166
-15273 8632 8698 0.0321488809830426 0.0321488809830426 -104.9291888 39.7063544 -104.9293068 39.7060799
-12327 8651 8462 0.0863896937468126 0.0863896937468126 -105.0047136 39.7486765 -105.003842 39.7490696
-8825 7022 7023 0.132397309217195 0.132397309217195 -105.0315597 39.7499887 -105.0315207 39.751179
-15906 8604 1831 0.0312706435771371 0.0312706435771371 -105.0283446 39.7216209 -105.0282669 39.7213461
-8982 704 420 0.200616718436647 0.200616718436647 -104.9419371 39.7419475 -104.9418594 39.7437507
-1261 1282 24 0.134590345997008 0.134590345997008 -105.0205344 39.7560422 -105.0205339 39.7572526
-18452 7704 9427 0.203142152499049 0.203142152499049 -105.0410725 39.7566932 -105.0410753 39.7548663
-12940 8766 1971 0.0880952038111177 0.0880952038111177 -105.0021048 39.7447013 -105.0012102 39.7450944
-12050 8529 8530 0.0322062217802774 0.0322062217802774 -105.0041786 39.7503114 -105.0045096 39.7501731
-1281 1306 1307 0.102064457561207 0.102064457561207 -105.0288014 39.7133724 -105.0299945 39.7133592
-12052 8529 8412 0.0524928623134227 0.0524928623134227 -105.0041786 39.7503114 -105.0036942 39.7500213
-20805 10934 7427 0.00626540347624637 0.00626540347624637 -105.0368648 39.7621971 -105.0369381 39.7621971
-9106 7163 7164 0.0532969377049032 0.0532969377049032 -105.0381509 39.7543757 -105.0381551 39.754855
-1301 1326 1327 0.0908036524111016 0.0908036524111016 -105.0442903 39.7133559 -105.0452398 39.7129907
-1302 1327 1328 0.187321516717609 0.187321516717609 -105.0452398 39.7129907 -105.0473907 39.7133074
-20389 10773 10765 0.00486729953892219 0.00486729953892219 -105.0238489 39.7606336 -105.023905 39.7606411
-20812 7034 10952 0.00504516380305115 0.00504516380305115 -105.0322625 39.7622195 -105.0323215 39.7622208
-12945 8883 8884 0.0693524767029838 0.0693524767029838 -105.0014849 39.7426723 -105.0010815 39.7421312
-9177 1813 7200 0.0899820045120437 0.0899820045120437 -104.923341 39.6929674 -104.9222894 39.6929759
-12258 8619 8617 0.025123815719297 0.025123815719297 -105.0083242 39.7578801 -105.0083585 39.7576557
-9178 132 7201 0.0532452299195118 0.0532452299195118 -104.9874659 39.6930068 -104.9868436 39.6930068
-13064 8946 8947 0.0850173355126965 0.0850173355126965 -104.9938162 39.7672158 -104.9948109 39.7672181
-9301 7274 6989 0.145898107890786 0.145898107890786 -104.9337866 39.742569 -104.9320802 39.742569
-1340 1368 1369 0.19896343011117 0.19896343011117 -104.9900335 39.7121268 -104.9923595 39.7121202
-20815 7168 10919 0.00784309361436635 0.00784309361436635 -105.0381187 39.7621933 -105.0382104 39.7621908
-9323 7286 7287 0.0531798537803958 0.0531798537803958 -104.983982 39.7019687 -104.9833604 39.7019722
-18312 7244 7291 0.112193704343122 0.112193704343122 -105.0311621 39.7711127 -105.0324737 39.7711548
-20817 10953 10288 0.00348743524444471 0.00348743524444471 -105.0291765 39.7620512 -105.0292173 39.7620512
-20818 10288 10921 0.00283999263123215 0.00283999263123215 -105.0292173 39.7620512 -105.0292505 39.7620502
-9345 7305 6323 0.0511693918815177 0.0511693918815177 -104.9669227 39.7020659 -104.9663246 39.7020694
-20831 10939 10947 0.189387199061175 0.189387199061175 -105.0393977 39.762194 -105.0393977 39.7638972
-20504 10061 10815 0.00579629159172248 0.00579629159172248 -105.0193111 39.7583425 -105.0192433 39.7583417
-12268 8625 8626 0.00924470302738606 0.00924470302738606 -105.0063297 39.755277 -105.0062526 39.7553353
-18317 7365 7366 0.190091232151663 0.190091232151663 -105.0253917 39.7620904 -105.0267891 39.7634203
-18915 10393 10394 0.0257178211457629 0.0257178211457629 -105.0122186 39.7502302 -105.0124855 39.7503369
-9548 5843 7400 0.197969196756037 0.197969196756037 -104.9687193 39.6910999 -104.9687412 39.6893196
-1402 1428 1429 0.0514192906451236 0.0514192906451236 -105.0409732 39.782078 -105.0415749 39.7820729
-19551 10559 10558 0.0350073244923259 0.0350073244923259 -104.9881037 39.7097761 -104.9880982 39.7100909
-20372 10756 10757 0.119877702556756 0.119877702556756 -105.0229933 39.7612883 -105.0243898 39.7611891
-18474 9006 9005 0.01365486811001 0.01365486811001 -105.0399032 39.754857 -105.0399025 39.7549798
-9618 6255 7423 0.201105238361345 0.201105238361345 -104.9944654 39.6984907 -104.9944429 39.6966822
-1423 1446 1447 0.102065186535373 0.102065186535373 -105.0038944 39.7084713 -105.0038773 39.7075535
-12355 8667 8662 0.00824054620763183 0.00824054620763183 -105.0124751 39.7525722 -105.0123789 39.7525675
-13473 9096 9097 0.0791788196488147 0.0791788196488147 -105.0171656 39.7251183 -105.0162433 39.7250562
-13558 9033 9033 0.000550802138422688 0.000550802138422688 -105.0111765 39.722883 -105.0111825 39.7228848
-9720 5436 7485 0.210597915191446 0.210597915191446 -105.0250692 39.7085234 -105.0275311 39.708526
-1445 1465 778 0.201931327083159 0.201931327083159 -105.0238576 39.7038839 -105.023849 39.7020679
-16745 10007 6830 0.0463356709963923 0.0463356709963923 -104.9516233 39.6981848 -104.9512088 39.6979166
-18484 9139 9145 0.0170083591694009 0.0170083591694009 -105.0431263 39.7511062 -105.0429278 39.7510959
-18486 9146 1121 0.0502889247784144 0.0502889247784144 -105.0398835 39.7589172 -105.0404718 39.7589145
-13588 9137 9132 0.0916872062208973 0.0916872062208973 -104.9868714 39.7007074 -104.9861015 39.7001338
-18564 10320 10321 0.148893183386122 0.148893183386122 -105.0313943 39.7806712 -105.0330975 39.7803888
-1470 1490 1454 0.0984270848036789 0.0984270848036789 -105.0026792 39.6948706 -105.0038293 39.6948507
-11793 8412 1301 0.0102820603565046 0.0102820603565046 -105.0036942 39.7500213 -105.0035821 39.7499878
-13649 9157 9158 0.11057157733623 0.11057157733623 -104.9952014 39.7022895 -104.9960034 39.7030693
-9923 7595 5945 0.197471792675123 0.197471792675123 -104.9362843 39.7292429 -104.9363272 39.7310185
-1492 1512 1513 0.240760864140441 0.240760864140441 -104.931734 39.696087 -104.92892 39.6960846
-1493 1513 1514 0.0903356876724302 0.0903356876724302 -104.92892 39.6960846 -104.9278643 39.6960978
-18489 9154 9164 0.0526957444463644 0.0526957444463644 -105.0338562 39.7492256 -105.034029 39.7487707
-9949 7606 7607 0.0349507847949759 0.0349507847949759 -104.9382673 39.7253035 -104.9382968 39.725617
-1512 1531 1532 0.421840818868262 0.421840818868262 -104.9909332 39.7613911 -104.9909417 39.7651848
-1514 1533 1534 0.0990053945754622 0.0990053945754622 -104.9453062 39.7574036 -104.944148 39.7574036
-18920 10391 10399 0.0111591670236662 0.0111591670236662 -105.0127316 39.7492235 -105.0126923 39.7491278
-10025 6642 3954 0.137704462550789 0.137704462550789 -104.9985895 39.7273172 -105.0001997 39.7273124
-1533 1556 1557 0.0904418216599082 0.0904418216599082 -104.9613425 39.77767 -104.9602842 39.7776637
-1535 1558 1559 0.0987505899129773 0.0987505899129773 -104.959414 39.7776762 -104.9582585 39.7776672
-19486 10409 10426 0.0202821728904968 0.0202821728904968 -104.9883441 39.7097759 -104.9883452 39.7095935
-10050 7651 7652 0.0462326431468639 0.0462326431468639 -105.0389317 39.7282542 -105.0394723 39.7282575
-1552 1577 1578 0.0904564264247089 0.0904564264247089 -105.0390628 39.6875658 -105.0401129 39.6876594
-1554 1579 1580 0.0903173650147356 0.0903173650147356 -105.0411657 39.6879819 -105.0421871 39.6881867
-18611 2585 1850 0.178619647699559 0.178619647699559 -105.035536 39.7229363 -105.0355172 39.72133
-19139 479 10436 0.0608772998887891 0.0608772998887891 -105.0124432 39.7406786 -105.0130548 39.7409589
-10147 7693 7694 0.00731957097451548 0.00731957097451548 -104.9475739 39.7873593 -104.947581 39.7874249
-1571 1598 1600 0.0527554061663716 0.0527554061663716 -105.0137725 39.6990764 -105.0133862 39.6987066
-18460 6389 9354 0.131365686337894 0.131365686337894 -105.0387149 39.7475739 -105.0387149 39.7487553
-13942 9095 9242 0.111189675764469 0.111189675764469 -105.0210758 39.7255489 -105.0223459 39.7257626
-10218 6638 5410 0.0525082825873588 0.0525082825873588 -104.9710843 39.6893658 -104.9704709 39.6893522
-11529 809 810 0.133518358438394 0.133518358438394 -105.026046 39.7554277 -105.0276079 39.7554276
-16258 9267 3529 0.187765741537081 0.187765741537081 -104.9552346 39.6965869 -104.9552447 39.6982755
-10288 7759 7760 0.0990614933501691 0.0990614933501691 -104.9475555 39.7710608 -104.9463967 39.7710806
-1610 1640 1641 0.0829769157452624 0.0829769157452624 -105.0156865 39.706479 -105.0156951 39.7057328
-1611 1641 1642 0.0110107206173314 0.0110107206173314 -105.0156951 39.7057328 -105.0156924 39.7056338
-14142 478 9286 0.110440686979957 0.110440686979957 -105.0170811 39.7459783 -105.0165836 39.7450617
-10359 6835 4056 0.176947127899101 0.176947127899101 -105.0397191 39.7165613 -105.0396933 39.7181525
-10360 4056 7791 0.153314942388554 0.153314942388554 -105.0396933 39.7181525 -105.0397234 39.7195311
-16039 9796 9803 0.17034831343451 0.17034831343451 -105.0121361 39.6892112 -105.0101617 39.6894076
-20229 8818 8827 0.0165504595782256 0.0165504595782256 -104.9407334 39.6945605 -104.94054 39.6945576
-15466 9616 9605 0.0511543414269977 0.0511543414269977 -105.0011333 39.7436854 -105.000722 39.7440195
-10664 7914 2973 0.0665734173113744 0.0665734173113744 -105.027595 39.7578708 -105.0275907 39.7584695
-1646 1673 1674 0.136622102626379 0.136622102626379 -105.0111824 39.7680416 -105.0127809 39.7680407
-1647 1674 1675 0.135851990536989 0.135851990536989 -105.0127809 39.7680407 -105.0143702 39.7680596
-15467 9605 7963 0.0172079120084978 0.0172079120084978 -105.000722 39.7440195 -105.0005879 39.7441349
-1668 1693 1694 0.101380870701686 0.101380870701686 -105.0416583 39.7675928 -105.0428441 39.7675702
-11218 3630 8166 0.0456744230751041 0.0456744230751041 -104.9286229 39.7018847 -104.9290225 39.7016123
-15788 9639 9625 0.0212057259943503 0.0212057259943503 -105.0250842 39.7369224 -105.0249286 39.7370709
-11369 8219 7971 0.0335395055556045 0.0335395055556045 -105.0056833 39.7616862 -105.0053146 39.761583
-16195 7725 5820 0.195527635044049 0.195527635044049 -104.9821706 39.6894094 -104.9821591 39.6911678
-16196 5820 7207 0.20506620423787 0.20506620423787 -104.9821591 39.6911678 -104.9821537 39.693012
-11659 7036 3421 0.201375612760589 0.201375612760589 -105.0322644 39.7643359 -105.0346204 39.7643363
-11773 2681 5358 0.147201059924865 0.147201059924865 -104.9782507 39.7512619 -104.979461 39.7503203
-17216 8420 1908 0.199697066538748 0.199697066538748 -104.9774882 39.7056633 -104.9774775 39.7074592
-16157 9835 9836 0.024879986991164 0.024879986991164 -105.0143087 39.7379669 -105.0142819 39.7377441
-18699 1320 1376 0.177502821070015 0.177502821070015 -105.0391059 39.7133709 -105.0390952 39.7117746
-12115 8553 8554 0.175311002200187 0.175311002200187 -104.9647683 39.7416548 -104.9647611 39.7432314
-19503 10530 10531 0.0385295444601748 0.0385295444601748 -104.9883733 39.7063608 -104.9883756 39.7060143
-16538 9932 9933 0.139509514048293 0.139509514048293 -104.9763549 39.7494877 -104.9763678 39.7507423
-1717 1736 1737 0.0422973816408655 0.0422973816408655 -105.0057005 39.6912645 -105.0061947 39.6912734
-17220 3087 9830 0.198791677003679 0.198791677003679 -104.9775097 39.7129054 -104.9774882 39.7146931
-12205 8587 7095 0.0103763001462627 0.0103763001462627 -105.0011631 39.7420804 -105.0010418 39.7420775
-1748 1765 1768 0.20159496635188 0.20159496635188 -104.9769241 39.7129008 -104.976901 39.7110879
-12332 8654 8655 0.0104809427005404 0.0104809427005404 -105.0075431 39.754727 -105.0074206 39.7547231
-19506 10533 7232 0.00927443019901883 0.00927443019901883 -104.9883745 39.7058681 -104.9883759 39.7057847
-12444 8704 8705 0.0186821732215156 0.0186821732215156 -104.9404955 39.7617894 -104.9404928 39.7619574
-1767 1785 1786 0.049264963521636 0.049264963521636 -104.9839616 39.6947869 -104.9833861 39.6948011
-16454 9909 9910 0.124306713488191 0.124306713488191 -104.9730512 39.7063782 -104.9724845 39.7074076
-12491 8717 8718 0.055230353030641 0.055230353030641 -104.9599663 39.6929697 -104.9593208 39.692969
-12493 8719 8720 0.118556931073074 0.118556931073074 -104.9792566 39.6946845 -104.979262 39.6936183
-16535 4328 8117 0.102336137979151 0.102336137979151 -104.976953 39.748636 -104.97815 39.7486401
-1810 1826 1827 0.198453556780362 0.198453556780362 -104.9791466 39.7165069 -104.9791916 39.7147225
-18642 7416 4062 0.177070510498962 0.177070510498962 -105.0450953 39.7165644 -105.0451087 39.7181568
-12605 384 4685 0.0512286127934627 0.0512286127934627 -104.9934388 39.7289219 -104.9940378 39.7289164
-1838 1854 1855 0.0513002538457751 0.0513002538457751 -105.0379177 39.7213314 -105.0385175 39.7213346
-1839 1855 1856 0.0505552484656801 0.0505552484656801 -105.0385175 39.7213346 -105.0391086 39.721333
-16789 8649 10013 0.223567773525098 0.223567773525098 -105.0092259 39.7486951 -105.0114923 39.7476921
-12632 2360 3710 0.110712951608372 0.110712951608372 -104.9874759 39.7193464 -104.9874523 39.7183509
-1858 1870 1871 0.100377935012122 0.100377935012122 -104.9899993 39.7111545 -104.9899914 39.7102518
-17014 10053 10054 0.0101091220768254 0.0101091220768254 -105.0167611 39.7547513 -105.0167692 39.7546606
-12810 8258 8846 0.197578956532281 0.197578956532281 -104.9988487 39.78249 -104.9966683 39.7818987
-12812 8846 6028 0.064250785290107 0.064250785290107 -104.9966683 39.7818987 -104.9959579 39.7817094
-12814 8847 8848 0.169735694825716 0.169735694825716 -104.9968592 39.782169 -104.9987337 39.782674
-12816 8848 297 0.081779930762806 0.081779930762806 -104.9987337 39.782674 -104.999633 39.7829256
-16613 9942 2685 0.29520243699611 0.29520243699611 -104.9824158 39.7507117 -104.9799803 39.7525937
-12926 8892 8893 0.0723033727126927 0.0723033727126927 -105.0008068 39.745167 -105.001108 39.7457746
-13020 8924 8925 0.0102645296363106 0.0102645296363106 -104.9947852 39.7699691 -104.9949053 39.7699691
-13048 8934 8935 0.109609070074496 0.109609070074496 -104.9901787 39.7746982 -104.9904048 39.7737279
-14679 9301 445 0.205255827063182 0.205255827063182 -104.9700183 39.7255888 -104.9700104 39.7237429
-17965 10232 10237 0.0287772787854116 0.0287772787854116 -104.9882382 39.7252241 -104.9882377 39.7249653
-18916 10395 10396 0.0665707610088623 0.0665707610088623 -105.0103557 39.7499974 -105.0109587 39.7503762
-17673 8930 8847 0.0672232407607821 0.0672232407607821 -104.9961216 39.7819588 -104.9968592 39.782169
-19611 10510 10586 0.0687878070750461 0.0687878070750461 -104.9902651 39.7095644 -104.9910692 39.709571
-1895 1909 1910 0.0533681732492523 0.0533681732492523 -104.9763514 39.7074715 -104.9757282 39.7074937
-18738 1858 7870 0.177701929540755 0.177701929540755 -105.0403103 39.7213316 -105.0403023 39.7197335
-18722 1312 9772 0.242272496904356 0.242272496904356 -105.0342968 39.7133689 -105.0342887 39.7111901
-13294 4282 4326 0.048552671008238 0.048552671008238 -105.0344834 39.703983 -105.0350499 39.7039565
-1916 1928 1929 0.105818779358726 0.105818779358726 -104.9605576 39.7074884 -104.9593208 39.7074709
-18739 7870 4057 0.175799763463846 0.175799763463846 -105.0403023 39.7197335 -105.0403076 39.7181525
-18654 6221 7655 0.275174189153955 0.275174189153955 -105.0421663 39.7257919 -105.0421691 39.7282666
-1942 1956 1957 0.0270768788779568 0.0270768788779568 -104.9295943 39.7085824 -104.9292853 39.7085296
-13392 311 9059 0.0124055357740245 0.0124055357740245 -104.9786416 39.779139 -104.9784966 39.7791336
-18659 7643 6205 0.176055293755678 0.176055293755678 -105.030657 39.7277196 -105.0306528 39.7261363
-13405 8942 9061 0.112337222040467 0.112337222040467 -104.9969401 39.7675503 -104.9981155 39.7670982
-19275 10446 10424 0.0353155595120025 0.0353155595120025 -104.9952471 39.7458453 -104.9949557 39.7460704
-1960 1977 1978 0.0139641936224905 0.0139641936224905 -104.9406062 39.7437573 -104.9407693 39.7437639
-13485 9102 308 0.0118340647108347 0.0118340647108347 -105.0160728 39.7255648 -105.0162105 39.7255543
-20374 10758 3588 0.00620515380678302 0.00620515380678302 -105.0243956 39.7608382 -105.0243965 39.7607824
-18262 2547 6067 0.202075066970098 0.202075066970098 -105.0386666 39.7874341 -105.038672 39.7856168
-13520 9073 117 0.110830423506594 0.110830423506594 -105.0251226 39.7293097 -105.0251312 39.7303064
-13529 5647 9088 0.177768687230353 0.177768687230353 -105.0347769 39.7254226 -105.0327002 39.7254916
-19599 1871 10582 0.0185256932684462 0.0185256932684462 -104.9899914 39.7102518 -104.9902054 39.7102774
-13548 447 2999 0.0894668373271695 0.0894668373271695 -105.0132294 39.7256673 -105.0136746 39.7263954
-13553 9126 579 0.319404247396224 0.319404247396224 -105.0106484 39.7227756 -105.0080855 39.7206863
-18657 7657 10331 0.158775443026926 0.158775443026926 -105.0445162 39.72828 -105.0445132 39.7297079
-13716 6715 4211 0.0895901111539728 0.0895901111539728 -105.0169992 39.6967549 -105.0180463 39.6967483
-2012 2021 2022 0.202353267688237 0.202353267688237 -104.9349346 39.7274171 -104.9349282 39.7292369
-18846 10364 10366 0.0360011605118072 0.0360011605118072 -105.0140112 39.7371325 -105.0139219 39.7374489
-13805 9197 6639 0.199762828560815 0.199762828560815 -104.9985624 39.7147937 -104.9985703 39.7165902
-18572 10317 10318 0.0818849597364774 0.0818849597364774 -105.03063 39.7832519 -105.0297002 39.7834301
-2037 2046 2047 0.202843850092204 0.202843850092204 -104.9674789 39.7129253 -104.9674682 39.7111011
-2038 2047 2048 0.202089258953368 0.202089258953368 -104.9674682 39.7111011 -104.9674823 39.7092837
-19239 8480 10459 0.145581432505511 0.145581432505511 -104.9912213 39.7425829 -104.9924125 39.7416474
-13871 2282 3603 0.0995034643784278 0.0995034643784278 -104.9305543 39.7565508 -104.9293903 39.7565549
-2058 746 1564 0.142548749521321 0.142548749521321 -104.9530366 39.7763944 -104.9530639 39.7776762
-12345 8661 8662 0.0184782413605156 0.0184782413605156 -105.0123532 39.7524025 -105.0123789 39.7525675
-13933 9117 9237 0.0487812750222334 0.0487812750222334 -105.0252112 39.7363992 -105.0252103 39.7368379
-13946 9243 9109 0.0432001724914345 0.0432001724914345 -105.005875 39.7256239 -105.0053716 39.7256561
-20415 10773 10767 0.0164543942872072 0.0164543942872072 -105.0238489 39.7606336 -105.0239411 39.7605037
-15289 7065 9559 0.00979064512162057 0.00979064512162057 -104.9499634 39.7145233 -104.9500777 39.714528
-15406 9582 9586 0.261696459707034 0.261696459707034 -105.0104647 39.7536666 -105.009826 39.7559683
-14374 512 3439 0.0820413167433817 0.0820413167433817 -105.03396 39.7837055 -105.0345546 39.7842848
-15291 9560 9561 0.0474312472960203 0.0474312472960203 -104.9418174 39.706892 -104.941269 39.7069549
-20033 3666 9939 0.222490979962601 0.222490979962601 -104.9739808 39.7474784 -104.9739728 39.7494793
-14436 9351 6743 0.133828356760244 0.133828356760244 -105.0252652 39.7487792 -105.0268304 39.7487612
-2083 2084 2085 0.132628008561016 0.132628008561016 -104.9536401 39.7669187 -104.9536649 39.7681113
-20269 10721 10704 0.0408769490843711 0.0408769490843711 -105.0450564 39.7730205 -105.0445781 39.7730214
-20257 7553 10687 0.047722995184739 0.047722995184739 -105.0451406 39.774187 -105.0445822 39.7741837
-14596 9395 7373 0.0500503806511319 0.0500503806511319 -105.0253115 39.7688045 -105.0253069 39.7683544
-2107 1822 2109 0.0984259671843471 0.0984259671843471 -104.9269459 39.7647142 -104.9269682 39.7655992
-18860 10369 10362 0.0840816587742034 0.0840816587742034 -105.0144214 39.7366716 -105.0146327 39.7359331
-20253 10719 5572 0.00788824170654016 0.00788824170654016 -105.0441026 39.7730223 -105.0440103 39.7730225
-16690 9989 9990 0.0859897279747206 0.0859897279747206 -105.00675 39.7456071 -105.005945 39.7460707
-2125 1981 1966 0.0405441466490896 0.0405441466490896 -104.926882 39.743379 -104.9270076 39.7437306
-16692 8314 8651 0.0716207548906764 0.0716207548906764 -105.0042918 39.74812 -105.0047136 39.7486765
-16847 3130 9896 0.0388183147420438 0.0388183147420438 -104.970947 39.7024436 -104.9713614 39.7025858
-12343 8658 8659 0.0326641917954917 0.0326641917954917 -105.0059172 39.7565338 -105.0062583 39.7566662
-16277 4438 9869 0.0429816129844846 0.0429816129844846 -104.9546419 39.6984776 -104.9543259 39.6981771
-2254 2256 2257 0.179026041725141 0.179026041725141 -105.0275483 39.7181459 -105.0275587 39.7197559
-18714 6214 7650 0.274890248386652 0.274890248386652 -105.037867 39.7257736 -105.0378319 39.7282456
-2282 2281 2282 0.208433952181449 0.208433952181449 -104.9305302 39.7546764 -104.9305543 39.7565508
-18413 7163 7445 0.101226183618457 0.101226183618457 -105.0381509 39.7543757 -105.0369668 39.7543695
-2309 1585 1646 0.0852956059582778 0.0852956059582778 -105.0145707 39.6959461 -105.0155663 39.6959857
-17366 3085 3197 0.201028238760753 0.201028238760753 -104.9786762 39.712912 -104.9786527 39.7111042
-16424 3406 3407 0.0260120249027955 0.0260120249027955 -104.9701665 39.6972637 -104.9699417 39.6974212
-487 487 488 0.0915902876023465 0.0915902876023465 -104.9845022 39.7800173 -104.9855724 39.7800624
-2504 2153 2485 0.135805715389887 0.135805715389887 -105.0142616 39.7789608 -105.0158508 39.7789597
-15259 9549 9550 0.0733424963845631 0.0733424963845631 -104.9329305 39.7046107 -104.9336788 39.7049326
-17078 8074 9872 0.138360291064547 0.138360291064547 -104.9615934 39.7607445 -104.9615975 39.7619888
-604 595 596 0.135530584935403 0.135530584935403 -105.0153765 39.7753499 -105.015268 39.7765659
-2561 2534 2535 0.131236307359374 0.131236307359374 -105.0217592 39.7380884 -105.0202276 39.7381648
-11701 1064 1065 0.0735266946881119 0.0735266946881119 -105.0022669 39.7501498 -105.0016675 39.750624
-11702 1065 1066 0.144526540080904 0.144526540080904 -105.0016675 39.750624 -105.000472 39.751543
-2641 1094 1110 0.0327560682713917 0.0327560682713917 -105.0405328 39.7229583 -105.0409158 39.7229588
-12965 1823 1824 0.115786401746133 0.115786401746133 -105.0061735 39.7446567 -105.0068707 39.7455494
-2716 2671 2672 0.137037719250731 0.137037719250731 -104.9524691 39.7544839 -104.9524477 39.7557162
-16268 9866 8748 0.200740333998757 0.200740333998757 -104.9586795 39.6929681 -104.9586768 39.6947734
-2739 2694 2695 0.0520216844496084 0.0520216844496084 -104.9834919 39.7552636 -104.9839243 39.7555928
-18678 2801 2589 0.177457369167133 0.177457369167133 -105.0367403 39.7245365 -105.0367321 39.7229406
-11691 837 867 0.00774513207370433 0.00774513207370433 -105.0012532 39.7536699 -105.0011626 39.7536701
-11692 867 868 0.00951825440201693 0.00951825440201693 -105.0011626 39.7536701 -105.0011145 39.7535929
-2894 2838 2839 0.0194790124967281 0.0194790124967281 -105.0298986 39.7802977 -105.0301265 39.7802941
-16704 9998 9999 0.0072772776659045 0.0072772776659045 -105.0006022 39.7460221 -105.0005573 39.7460777
-16598 5785 8280 0.146209128325821 0.146209128325821 -104.9954256 39.7514052 -104.994215 39.752334
-2965 1143 2908 0.0621246078682317 0.0621246078682317 -104.97335 39.7632488 -104.9733498 39.7638075
-16603 7894 9953 0.113998968091224 0.113998968091224 -104.9883251 39.7515332 -104.9873896 39.7522638
-3043 2974 2975 0.149630303255577 0.149630303255577 -105.0281658 39.7584695 -105.0299157 39.7585034
-18440 2971 10293 0.0852727734364054 0.0852727734364054 -105.0260575 39.7584783 -105.0260789 39.759245
-3066 2997 2998 0.0208518874255557 0.0208518874255557 -104.9971271 39.7400109 -104.9969577 39.7401458
-18441 10293 8299 0.0364176386342536 0.0364176386342536 -105.0260789 39.759245 -105.0260753 39.7595725
-3086 3018 3019 0.14545556926134 0.14545556926134 -104.9780672 39.7547969 -104.9768843 39.7557372
-18443 7498 10290 0.0505394400731725 0.0505394400731725 -105.0416627 39.7607554 -105.0410717 39.7607688
-3112 3044 3045 0.100624292928738 0.100624292928738 -104.95856 39.7594391 -104.9573829 39.7594492
-18471 2985 7703 0.198649870528673 0.198649870528673 -105.039895 39.758491 -105.0398923 39.7567045
-16707 9623 9998 0.0621574034637008 0.0621574034637008 -105.0006156 39.7454632 -105.0006022 39.7460221
-3136 3062 2284 0.0981125078289405 0.0981125078289405 -104.9317072 39.760176 -104.9305594 39.7601749
-19669 10610 9361 0.0491952199145155 0.0491952199145155 -105.0246432 39.7697786 -105.0246491 39.770221
-3158 3082 3083 0.0983700193882712 0.0983700193882712 -104.9815443 39.7129225 -104.9803943 39.7129167
-11703 1066 1158 0.148869854474817 0.148869854474817 -105.000472 39.751543 -104.9992501 39.7524969
-3181 3101 3102 0.0962927982103224 0.0962927982103224 -104.9362596 39.7130732 -104.935134 39.713087
-18133 4095 6040 0.192431028537818 0.192431028537818 -105.0175565 39.7838951 -105.0175773 39.7856256
-18446 10289 7781 0.0503825451517732 0.0503825451517732 -105.0398915 39.7607667 -105.0393022 39.7607575
-3230 3144 3145 0.203548069983679 0.203548069983679 -104.9647846 39.7237695 -104.9648025 39.7256
-18448 9292 9527 0.134072690600401 0.134072690600401 -105.0375481 39.7511898 -105.0375346 39.7499841
-11705 1159 1244 0.147081474347396 0.147081474347396 -104.9980616 39.7534124 -104.9968584 39.7543579
-3281 3193 3194 0.106476946636896 0.106476946636896 -104.9827804 39.7111342 -104.9815359 39.7111143
-16416 3034 3130 0.0869691229324941 0.0869691229324941 -104.9699305 39.7024537 -104.970947 39.7024436
-3302 3210 3211 0.0503243467464606 0.0503243467464606 -104.9645976 39.7110977 -104.9640093 39.7111011
-18899 10379 10380 0.00404144992313864 0.00404144992313864 -105.0125991 39.750475 -105.0126123 39.7504401
-11709 1301 1302 0.0358989065327031 0.0358989065327031 -105.0035821 39.7499878 -105.0032204 39.7501518
-3325 3227 3228 0.131949141660574 0.131949141660574 -105.0299581 39.7718274 -105.0315008 39.7718744
-12952 1330 1361 0.0263074187615997 0.0263074187615997 -105.0020771 39.7434247 -105.0019226 39.7432201
-3400 3297 3298 0.0238019064284447 0.0238019064284447 -104.9269572 39.7038988 -104.9266917 39.7038348
-3489 1140 907 0.140863651036277 0.140863651036277 -104.9343976 39.7632231 -104.934389 39.7644899
-16744 7566 10007 0.0424762897679241 0.0424762897679241 -104.9519988 39.6984347 -104.9516233 39.6981848
-18732 9833 7646 0.178089933314901 0.178089933314901 -105.0331086 39.7293141 -105.0331112 39.7277125
-3516 3387 3388 0.0211650011658898 0.0211650011658898 -105.0351109 39.725318 -105.0349134 39.7254327
-12955 1478 1507 0.126108135430878 0.126108135430878 -105.0010729 39.7418408 -105.0003423 39.7408556
-3561 3424 3425 0.0612760168169184 0.0612760168169184 -105.0346199 39.7651924 -105.0346312 39.7657434
-16837 10019 9847 0.0370069651425935 0.0370069651425935 -104.9700539 39.7032059 -104.9699755 39.7028786
-3583 3438 1421 0.115878563365398 0.115878563365398 -105.0345914 39.7810741 -105.0345828 39.7821162
-12960 1632 1633 0.128348569926215 0.128348569926215 -105.0042744 39.7420124 -105.0035017 39.7410228
-3684 3520 3521 0.0506146313810284 0.0506146313810284 -104.961154 39.6983849 -104.9605624 39.6983858
-18464 10298 9139 0.0193791784570559 0.0193791784570559 -105.0431907 39.7509391 -105.0431263 39.7511062
-3734 1037 3568 0.052776292073227 0.052776292073227 -104.9622266 39.7544367 -104.9616097 39.7544552
-19333 2826 10473 0.01148052310696 0.01148052310696 -104.9718283 39.6983529 -104.971721 39.6984149
-18465 9139 541 0.0794672162259436 0.0794672162259436 -105.0431263 39.7511062 -105.0430648 39.7518193
-3755 3585 3586 0.0186262558199583 0.0186262558199583 -105.0236106 39.7606934 -105.0238257 39.7607202
-17071 4599 3687 0.240616539690475 0.240616539690475 -104.9615991 39.7447832 -104.9615881 39.7469471
-3805 3624 3250 0.195616461429944 0.195616461429944 -104.9804286 39.7057129 -104.9804174 39.7039537
-11577 1766 1595 0.0489656343684566 0.0489656343684566 -105.0334284 39.7553296 -105.0340012 39.7553296
-3825 3641 3642 0.0193156490955763 0.0193156490955763 -104.9590835 39.7152814 -104.9593067 39.715255
-17299 5829 8716 0.20447937601548 0.20447937601548 -104.9622681 39.6911405 -104.9622811 39.6929794
-3847 3658 3639 0.0475522464454704 0.0475522464454704 -104.9536997 39.6990547 -104.953288 39.6987674
-18869 10144 10372 0.0637708443692985 0.0637708443692985 -105.0093573 39.7209238 -105.0086117 39.7209279
-16541 812 3553 0.152482276035164 0.152482276035164 -104.9763308 39.7532506 -104.9763361 39.7546219
-20222 7195 10711 0.0935594253631277 0.0935594253631277 -104.9413129 39.6929321 -104.9413123 39.6937735
-19431 10003 8707 0.100281643377189 0.100281643377189 -104.9862718 39.703372 -104.9850997 39.7033596
-3891 3519 3695 0.200167523328644 0.200167523328644 -104.961729 39.698384 -104.9617464 39.6965839
-16751 6829 10008 0.0961527504424716 0.0961527504424716 -104.9506246 39.6983982 -104.9506165 39.6975335
-3916 3713 3714 0.1010804805974 0.1010804805974 -104.9928366 39.7183943 -104.9940184 39.7183972
-15272 8538 8632 0.0716756500086966 0.0716756500086966 -104.9283761 39.7065112 -104.9291888 39.7063544
-3938 3736 3737 0.112607595972795 0.112607595972795 -105.0028107 39.7384712 -105.0028068 39.7394839
-18125 4097 6042 0.191481087124581 0.191481087124581 -105.0187521 39.7838972 -105.0187387 39.7856192
-19576 10572 7461 0.00811745051204977 0.00811745051204977 -104.9892979 39.707617 -104.9892986 39.707544
-12969 1970 1971 0.103498330022734 0.103498330022734 -105.0018024 39.7442826 -105.0012102 39.7450944
-4039 3819 3820 0.147623529549067 0.147623529549067 -105.0098339 39.7075733 -105.009791 39.7062461
-18745 5190 2608 0.176866790100876 0.176866790100876 -105.0433305 39.7245627 -105.0433279 39.7229721
-4127 3890 3891 0.179468370845182 0.179468370845182 -104.9634822 39.7383772 -104.9634356 39.7399908
-12335 8652 8653 0.0109021010822668 0.0109021010822668 -105.0077772 39.7547483 -105.0076516 39.7547313
-4149 3906 1161 0.136761513456038 0.136761513456038 -104.9634455 39.7619888 -104.9634876 39.7632183
-17950 6559 10229 0.0124761805379247 0.0124761805379247 -104.9869835 39.7241266 -104.9870009 39.7240152
-4173 1891 706 0.0588353275400914 0.0588353275400914 -105.0046254 39.7620612 -105.0041014 39.7624043
-14115 3623 3925 0.0987645160792797 0.0987645160792797 -104.9448677 39.7457412 -104.9455321 39.7450146
-16843 10020 10021 0.00337377443816097 0.00337377443816097 -104.9706252 39.7032657 -104.9706319 39.7032358
-4194 3942 3943 0.176445012103913 0.176445012103913 -105.0001356 39.7384618 -105.0001422 39.736875
-18245 2433 9358 0.201879495148218 0.201879495148218 -105.0375589 39.771281 -105.0375421 39.7730965
-18189 6055 5795 0.200795798534704 0.200795798534704 -105.0293078 39.7856235 -105.0293078 39.7874293
-4450 3345 4152 0.10312101394972 0.10312101394972 -104.957017 39.7209795 -104.9558113 39.720983
-18872 9232 7825 0.160805002055775 0.160805002055775 -104.9889072 39.7018052 -104.9875714 39.7007878
-4529 4204 4205 0.278098742346476 0.278098742346476 -105.0080809 39.7765386 -105.0078446 39.779033
-18399 2541 10285 0.412599954612644 0.412599954612644 -105.0351796 39.7874285 -105.035177 39.7911391
-4637 4281 913 0.111497113872301 0.111497113872301 -104.9797003 39.7709793 -104.9806193 39.771691
-16900 4255 3513 0.200996147699506 0.200996147699506 -104.9658026 39.6965779 -104.9657993 39.6983855
-15919 9746 7414 0.0221971015175522 0.0221971015175522 -105.0421231 39.7165684 -105.0418648 39.7165877
-4682 4322 4323 0.0558862625971893 0.0558862625971893 -105.0350241 39.707661 -105.0350585 39.7071591
-16298 2636 2637 0.0033759355903552 0.0033759355903552 -104.970433 39.6951117 -104.9704693 39.6950998
-18879 6125 1927 0.199518260048308 0.199518260048308 -104.9611403 39.709281 -104.9611322 39.7074867
-4761 1489 145 0.199750566224671 0.199750566224671 -105.0015377 39.694864 -105.0015377 39.6930676
-18696 4055 6400 0.176933507030136 0.176933507030136 -105.0391007 39.7181492 -105.0391033 39.716558
-16300 2637 2160 0.00247295077408309 0.00247295077408309 -104.9704693 39.6950998 -104.9704959 39.6950911
-4832 1268 4428 0.206285087175769 0.206285087175769 -105.0203557 39.7175319 -105.0227675 39.7175319
-18888 7247 1923 0.201674729042946 0.201674729042946 -104.963471 39.7056744 -104.9634658 39.7074881
-4997 4543 4544 0.132688906239847 0.132688906239847 -105.022037 39.7729354 -105.0220369 39.7741287
-16650 9968 9969 0.0122299544992289 0.0122299544992289 -104.9849991 39.7385579 -104.9848573 39.7385435
-13009 2891 2892 0.172319187220424 0.172319187220424 -104.9905111 39.7729211 -104.9912536 39.7714803
-5024 4562 4563 0.200718931282707 0.200718931282707 -105.0216379 39.7856202 -105.0216452 39.7874253
-16315 3005 1362 0.00318470714397005 0.00318470714397005 -104.9710275 39.6970485 -104.9710484 39.6970248
-5188 4685 4686 0.177776490265982 0.177776490265982 -104.9940378 39.7289164 -104.9940692 39.730515
-17297 10086 7736 0.198049290500642 0.198049290500642 -104.9622687 39.6875234 -104.9622681 39.6893045
-20272 10721 10703 0.0411977345042915 0.0411977345042915 -105.0450564 39.7730205 -105.0450568 39.773391
-5368 3223 4808 0.133968729582188 0.133968729582188 -105.0135136 39.7717296 -105.0135073 39.7729344
-18898 10378 10379 0.00446883067059111 0.00446883067059111 -105.0125479 39.7504669 -105.0125991 39.750475
-5393 4828 4829 0.40282604477454 0.40282604477454 -104.9441889 39.692936 -104.9441934 39.6893133
-20273 10703 10725 0.144609051598102 0.144609051598102 -105.0450568 39.773391 -105.0450582 39.7746915
-5414 4842 1486 0.202708226253938 0.202708226253938 -105.0002975 39.6967069 -105.0003404 39.6948842
-5490 458 4898 0.0468723555946229 0.0468723555946229 -104.9412914 39.7350999 -104.9407436 39.7350848
-19112 8424 10118 0.19768851226159 0.19768851226159 -105.0160769 39.7409098 -105.0183374 39.7405364
-5515 1212 4920 0.232222389672051 0.232222389672051 -104.9874175 39.7272691 -104.9894816 39.7286261
-19281 10466 8768 0.124416605605605 0.124416605605605 -104.988856 39.7399993 -104.9903111 39.740001
-5542 2537 4941 0.438197641658083 0.438197641658083 -104.994984 39.7872452 -104.994975 39.791186
-20340 10739 10748 0.00884971981393432 0.00884971981393432 -105.0234882 39.7589777 -105.0235917 39.7589758
-19231 10455 10456 0.1184623603546 0.1184623603546 -104.9915438 39.7409769 -104.9923896 39.7401331
-5626 3284 1058 0.0983991410952824 0.0983991410952824 -104.9523742 39.7038339 -104.9523656 39.702949
-18347 7686 2429 0.200029751476084 0.200029751476084 -105.0352172 39.7695205 -105.0352091 39.7713194
-17080 1162 882 0.139677295386473 0.139677295386473 -104.9615772 39.7632401 -104.9615915 39.7644962
-6004 5259 5260 0.066486526131314 0.066486526131314 -104.9597331 39.7681261 -104.9589552 39.7681242
-14136 9281 509 0.032133360210872 0.032133360210872 -104.9517626 39.7476934 -104.9514881 39.747496
-17116 4052 3775 0.00847774353709404 0.00847774353709404 -104.9579299 39.7478129 -104.957947 39.7477378
-6616 5699 5700 0.00800603928165774 0.00800603928165774 -105.0357639 39.7621288 -105.035764 39.7622008
-19812 7122 5371 0.176755455393693 0.176755455393693 -105.0021749 39.735285 -105.0021749 39.7336954
-6777 5820 5821 0.0499181980722273 0.0499181980722273 -104.9821591 39.6911678 -104.9815757 39.6911678
-4400 4114 4115 0.202509931844666 0.202509931844666 -104.9513332 39.7819179 -104.9513234 39.7837391
-11451 8258 8261 0.200629988067775 0.200629988067775 -104.9988487 39.78249 -104.9966971 39.7817678
-19818 10647 5606 0.0519771701713562 0.0519771701713562 -105.0021963 39.7300097 -105.0015885 39.7300077
-6974 2119 5953 0.0979282440578051 0.0979282440578051 -104.9268735 39.7310598 -104.9257284 39.7310507
-4402 4117 2874 0.134125988252719 0.134125988252719 -104.9508084 39.7837325 -104.9508183 39.7849387
-4403 2874 4118 0.140174877049639 0.140174877049639 -104.9508183 39.7849387 -104.9508084 39.7861993
-17149 46 4780 0.204228808601968 0.204228808601968 -104.9751601 39.7002153 -104.9751815 39.7020519
-7674 1498 187 0.203419998803368 0.203419998803368 -105.0437531 39.6949621 -105.0437531 39.6931327
-7719 6393 6394 0.135380647167761 0.135380647167761 -105.0252309 39.747573 -105.0268144 39.7475701
-20324 10732 10743 0.016217938211146 0.016217938211146 -105.0237565 39.7589777 -105.0236223 39.7590808
-7749 6408 6409 0.240033624288878 0.240033624288878 -104.9634692 39.7854929 -104.9640263 39.7876087
-20330 10744 10736 0.0345659354386547 0.0345659354386547 -105.0235881 39.7590797 -105.0233746 39.7593437
-7835 4630 1259 0.131787660470127 0.131787660470127 -105.0189411 39.7753479 -105.0204832 39.7753471
-5519 4922 2815 0.0131824278657025 0.0131824278657025 -104.9919185 39.7316877 -104.9919925 39.7317917
-7914 3652 89 0.238216692287668 0.238216692287668 -104.9565993 39.7020271 -104.9580983 39.7002217
-17155 3202 3091 0.199774901839453 0.199774901839453 -104.9751601 39.711091 -104.9751708 39.7128876
-7937 6530 6531 0.246221323543984 0.246221323543984 -104.9709294 39.6879413 -104.9734286 39.6890388
-20342 2965 10747 0.0130500853290149 0.0130500853290149 -105.0235213 39.7584714 -105.0235111 39.7585885
-7957 3453 6015 0.103911955569673 0.103911955569673 -104.9461741 39.7241209 -104.9449591 39.7241168
-17306 8715 5827 0.20364289358169 0.20364289358169 -104.9634793 39.692979 -104.963474 39.6911476
-7981 6550 6526 0.0499792827976588 0.0499792827976588 -104.9775557 39.7240716 -104.9769714 39.7240796
-18128 10269 10270 0.123006178444702 0.123006178444702 -105.0151755 39.7886103 -105.0151844 39.7897165
-8007 6565 6566 0.0461778743400118 0.0461778743400118 -104.9793644 39.7557994 -104.9797454 39.7560938
-12262 8500 8621 0.00391508697358849 0.00391508697358849 -105.0069837 39.7565886 -105.0070186 39.7566114
-20346 10731 10745 0.0882403942542692 0.0882403942542692 -105.0247591 39.7586373 -105.0237282 39.7585962
-8080 6611 6612 0.10285099566632 0.10285099566632 -104.9291809 39.7364935 -104.9303837 39.7364879
-20503 10831 10061 0.00544027190297384 0.00544027190297384 -105.0193747 39.7583443 -105.0193111 39.7583425
-17159 5011 5064 0.204989668883762 0.204989668883762 -104.9728223 39.6911338 -104.9728324 39.6929773
-14700 4773 5065 0.177184173799166 0.177184173799166 -104.9746628 39.7224758 -104.9746455 39.7240692
-8102 6628 6630 0.0733305516170216 0.0733305516170216 -104.9775188 39.6919873 -104.9769745 39.6914779
-14712 935 5453 0.176927806170623 0.176927806170623 -104.9746877 39.7320425 -104.9746713 39.7304514
-8148 6658 1326 0.126702346827637 0.126702346827637 -105.0443368 39.7144948 -105.0442903 39.7133559
-14707 5162 5223 0.123984475685155 0.123984475685155 -104.9746897 39.7395432 -104.9747109 39.7384283
-8332 6761 6762 0.0544299595372282 0.0544299595372282 -105.0276173 39.7693294 -105.0276181 39.7698189
-17167 48 5241 0.405295346029575 0.405295346029575 -104.9740013 39.7002102 -104.9740116 39.7038551
-8384 6791 4603 0.174075741649446 0.174075741649446 -104.9684196 39.7432459 -104.9684176 39.7448114
-20516 6731 10843 0.0163123315737135 0.0163123315737135 -105.0159724 39.7589742 -105.015972 39.7591209
-17171 5280 3092 0.401948502237413 0.401948502237413 -104.9739693 39.7092817 -104.9739802 39.7128965
-8434 6821 1593 0.0969711334947841 0.0969711334947841 -105.0121846 39.7039499 -105.0133176 39.7039764
-14711 2220 935 0.183060496140458 0.183060496140458 -104.9746915 39.7336888 -104.9746877 39.7320425
-8536 6880 1128 0.0335501177019022 0.0335501177019022 -105.0400799 39.7657742 -105.0404722 39.7657639
-19635 10525 10595 0.00694156278564008 0.00694156278564008 -104.9883652 39.7073679 -104.9882841 39.7073658
-18504 9353 6386 0.133800859600802 0.133800859600802 -105.0363784 39.7487709 -105.0363788 39.7475676
-8556 6891 6418 0.133199850282798 0.133199850282798 -105.0158561 39.7656402 -105.0174145 39.7656433
-8557 6418 4625 0.132396793169127 0.132396793169127 -105.0174145 39.7656433 -105.0189635 39.7656391
-17175 5327 5390 0.196700288812187 0.196700288812187 -104.9693125 39.6893294 -104.9692808 39.6910982
-18507 8379 10301 0.115242670596916 0.115242670596916 -105.0410701 39.7476972 -105.0410673 39.7487336
-8578 6280 6899 0.103595480205117 0.103595480205117 -104.9609549 39.7692782 -104.9597428 39.769281
-4404 4118 4119 0.131974592337134 0.131974592337134 -104.9508084 39.7861993 -104.950835 39.787386
-18510 10301 9529 0.136169474903607 0.136169474903607 -105.0410673 39.7487336 -105.0410698 39.7499582
-4406 4120 4121 0.394524879292727 0.394524879292727 -104.951135 39.787386 -104.9510929 39.7909339
-19640 10596 10598 0.0045286617175965 0.0045286617175965 -104.9881372 39.7071852 -104.9881774 39.7071587
-8728 3385 6959 0.0627894298641218 0.0627894298641218 -105.0345837 39.7451514 -105.0353181 39.7451528
-18496 6384 9201 0.134997571408585 0.134997571408585 -105.0351851 39.7475652 -105.0352011 39.7487792
-18514 10302 5543 0.103400383164669 0.103400383164669 -105.0410619 39.7511711 -105.0410644 39.752101
-8779 6999 7000 0.178967474513147 0.178967474513147 -104.9318001 39.7894487 -104.931649 39.791054
-18515 5543 2412 0.101763704229338 0.101763704229338 -105.0410644 39.752101 -105.041094 39.7530159
-8803 5141 2236 0.0248346840292332 0.0248346840292332 -104.931599 39.732778 -104.9314966 39.732987
-19831 10650 10651 0.138361801446117 0.138361801446117 -105.0422095 39.7366329 -105.0422009 39.7353886
-8887 3285 1059 0.0976623415502941 0.0976623415502941 -104.9500244 39.7038338 -104.9500415 39.7029556
-17182 5607 5608 0.205054564403698 0.205054564403698 -104.9716302 39.692962 -104.9716303 39.6911179
-8909 3021 7068 0.0519035642154067 0.0519035642154067 -104.974418 39.7576075 -104.9748473 39.7579376
-4407 3574 4122 0.137780007377075 0.137780007377075 -104.951246 39.7544757 -104.9511924 39.7557141
-14713 5453 5664 0.115365301333729 0.115365301333729 -104.9746713 39.7304514 -104.9752576 39.729517
-9019 3944 7121 0.0616182757003265 0.0616182757003265 -105.0001574 39.7352867 -105.000878 39.7352858
-18655 7655 10305 0.198541985736116 0.198541985736116 -105.0421691 39.7282666 -105.0421244 39.7300518
-9043 7135 4276 0.121250513345306 0.121250513345306 -104.9754213 39.7729633 -104.9744288 39.7737425
-18147 10258 6033 0.201162874084808 0.201162874084808 -105.0117945 39.7874239 -105.0117918 39.7856148
-9226 7232 7233 0.0701236279353194 0.0701236279353194 -104.9883759 39.7057847 -104.9875581 39.7057416
-18152 10264 10277 0.407566866193853 0.407566866193853 -105.0210534 39.7874313 -105.021032 39.7910966
-9304 6121 1920 0.204110733126185 0.204110733126185 -104.9651409 39.7093108 -104.9651495 39.7074752
-18153 4104 6047 0.112519690969595 0.112519690969595 -105.0233734 39.7846136 -105.0233803 39.7856255
-11446 385 387 0.611916175000286 0.611916175000286 -105.009982 39.7834091 -105.0028212 39.783461
-17478 5886 323 0.0446797516163588 0.0446797516163588 -105.015177 39.7517962 -105.0156986 39.7518215
-9352 6077 7309 0.0481617931874556 0.0481617931874556 -104.9628485 39.7020562 -104.9622856 39.7020498
-20395 10775 10776 0.00739420688081638 0.00739420688081638 -105.0243213 39.7599965 -105.0242462 39.7599635
-18154 6047 10135 0.201285870335585 0.201285870335585 -105.0233803 39.7856255 -105.023387 39.7874357
-20429 10789 10790 0.0478990795077935 0.0478990795077935 -105.0223762 39.7591046 -105.0228403 39.759346
-9375 7320 1193 0.16722266002845 0.16722266002845 -104.955535 39.7256145 -104.9555538 39.7271183
-18274 6666 6667 0.19713796716552 0.19713796716552 -105.0398227 39.780198 -105.0398176 39.7819709
-9396 4346 6344 0.137277828740194 0.137277828740194 -104.9549522 39.7569718 -104.9549352 39.7582063
-7038 2477 5911 0.20568880939919 0.20568880939919 -104.9258057 39.7474177 -104.9257802 39.7492674
-9526 7390 6591 0.199950723674749 0.199950723674749 -105.0332849 39.7311446 -105.0332843 39.7329428
-9527 6591 7113 0.204992725577621 0.204992725577621 -105.0332843 39.7329428 -105.033238 39.734786
-4408 4122 4123 0.139283771950412 0.139283771950412 -104.9511924 39.7557141 -104.9512139 39.7569666
-20440 8230 10798 0.00724995456680097 0.00724995456680097 -105.0218852 39.7620114 -105.0218855 39.7619462
-9657 7441 7443 0.137227628583058 0.137227628583058 -105.0369584 39.7487546 -105.036967 39.7499887
-17487 4652 4653 0.0539741907357585 0.0539741907357585 -105.018965 39.7469089 -105.0189634 39.7473943
-9708 7472 7473 0.0204539718039878 0.0204539718039878 -104.9890503 39.7084625 -104.9892894 39.708464
-18246 9358 9377 0.403042223701425 0.403042223701425 -105.0375421 39.7730965 -105.0374998 39.776721
-9812 7530 3064 0.202502418308833 0.202502418308833 -104.9282076 39.7583604 -104.9282248 39.7601815
-17689 6172 6173 0.109301053367223 0.109301053367223 -104.9856415 39.7795956 -104.9843627 39.779576
-9839 7545 7546 0.200378656030458 0.200378656030458 -105.0451654 39.7312441 -105.0451482 39.7330461
-17691 6191 6192 0.114641917935369 0.114641917935369 -104.9832163 39.7795774 -104.9818752 39.7795506
-9862 7563 7564 0.144864127295822 0.144864127295822 -104.9922506 39.7545528 -104.9910557 39.7554766
-18248 8108 10283 0.203688042743378 0.203688042743378 -105.0375106 39.7783767 -105.0375025 39.7802085
-9912 7587 7588 0.0177693522294632 0.0177693522294632 -104.9356138 39.7618347 -104.9356152 39.7619945
-12245 8614 8615 0.00283454394049719 0.00283454394049719 -104.9995987 39.7508719 -104.9995731 39.7508881
-20023 7898 8856 0.145457290364043 0.145457290364043 -104.9900722 39.7528603 -104.988892 39.7538026
-20462 10063 10815 0.0787418608501839 0.0787418608501839 -105.0192332 39.7576336 -105.0192433 39.7583417
-10159 5268 6906 0.123203894056526 0.123203894056526 -104.9475125 39.7680963 -104.947479 39.769204
-20464 10816 10812 0.0195704583026571 0.0195704583026571 -105.0185279 39.7585307 -105.018527 39.7587067
-11511 8294 8295 0.0520431495126935 0.0520431495126935 -104.9942907 39.754326 -104.9947185 39.754659
-18214 6382 6383 0.202997553277811 0.202997553277811 -105.042255 39.7621184 -105.0422527 39.763944
-10231 6520 7739 0.0500835268559568 0.0500835268559568 -104.9581278 39.6893365 -104.9575425 39.6893331
-18257 3984 6760 0.19949668413334 0.19949668413334 -105.0299405 39.7688003 -105.0276064 39.7688141
-10280 7447 7757 0.470575008371913 0.470575008371913 -105.0151992 39.7160167 -105.0151648 39.7202486
-11783 8122 8036 0.0779413781888185 0.0779413781888185 -104.9781363 39.7540082 -104.9787817 39.7535131
-14738 6526 6538 0.170206219459847 0.170206219459847 -104.9769714 39.7240796 -104.976974 39.7256103
-10497 4733 6800 0.110360790137427 0.110360790137427 -104.9696568 39.7519733 -104.968366 39.7519878
-20473 10823 10777 0.00660874071248581 0.00660874071248581 -105.0245064 39.7608531 -105.0244301 39.7608435
-10520 7847 7425 0.0489570822105033 0.0489570822105033 -105.036368 39.7603278 -105.0369407 39.7603225
-18522 4015 10297 0.0710067813209419 0.0710067813209419 -105.0299362 39.7464017 -105.03052 39.7468559
-10541 7855 7856 0.177133627375528 0.177133627375528 -104.9928366 39.7193449 -104.9928343 39.7209379
-10542 7856 2614 0.178768427477815 0.178768427477815 -104.9928343 39.7209379 -104.9928302 39.7225456
-18524 1880 9146 0.0581549975210073 0.0581549975210073 -105.0398844 39.7594402 -105.0398835 39.7589172
-10589 7869 6640 0.0423030177562977 0.0423030177562977 -104.9980684 39.719352 -104.998563 39.7193532
-18270 5525 6463 0.15576453739372 0.15576453739372 -105.0398709 39.7738651 -105.0398602 39.7752659
-10616 7882 4885 0.155749664880603 0.155749664880603 -104.9563208 39.7337098 -104.9562778 39.7351101
-18528 9272 9525 0.133068770502091 0.133068770502091 -105.0340317 39.7511922 -105.0340236 39.7499955
-10639 7897 7898 0.052238135352395 0.052238135352395 -104.9896341 39.7525328 -104.9900722 39.7528603
-10663 7913 7914 0.0662287183378057 0.0662287183378057 -105.0275993 39.7572752 -105.027595 39.7578708
-18276 1427 6667 0.0124761175920816 0.0124761175920816 -105.0398172 39.7820831 -105.0398176 39.7819709
-14745 4866 6690 0.193273433165028 0.193273433165028 -104.9770059 39.7351417 -104.977023 39.7368798
-12385 1624 3930 0.0974730336125312 0.0974730336125312 -104.9994552 39.7668568 -105.0005956 39.7668504
-18277 6667 6720 0.144754021853131 0.144754021853131 -105.0398176 39.7819709 -105.0398219 39.7832727
-10816 7993 6492 0.0854037034050773 0.0854037034050773 -104.9747549 39.746928 -104.9747749 39.7461601
-14747 6732 6733 0.0789150394398201 0.0789150394398201 -104.9782075 39.7375895 -104.9782075 39.7368798
-12453 3191 6107 0.202925463206431 0.202925463206431 -104.9851665 39.7111408 -104.9851845 39.7093159
-16202 5822 7727 0.19552660887524 0.19552660887524 -104.9810031 39.6911678 -104.9810119 39.6894094
-18539 5559 10311 0.589298128069539 0.589298128069539 -105.0440122 39.7616564 -105.0509064 39.7616379
-10890 3025 8025 0.123630898552104 0.123630898552104 -104.9488309 39.7600818 -104.9487313 39.761191
-15899 9255 7490 0.0311439652684609 0.0311439652684609 -105.0419691 39.7342088 -105.0416893 39.7340295
-18550 4298 9428 0.104368579037722 0.104368579037722 -105.04225 39.7539306 -105.0422446 39.7548692
-11283 8190 8201 0.0778576783996018 0.0778576783996018 -104.937302 39.696603 -104.936392 39.696601
-4409 4123 4124 0.135738728632571 0.135738728632571 -104.9512139 39.7569666 -104.9512246 39.7581873
-13171 7691 8995 0.0242708657605628 0.0242708657605628 -104.9475747 39.784754 -104.9472908 39.7847471
-11527 809 8301 0.0665080068102908 0.0665080068102908 -105.026046 39.7554277 -105.0260395 39.7548296
-15908 9084 9085 0.0343875506043555 0.0343875506043555 -105.0294148 39.7240512 -105.029624 39.7237871
-14757 2212 4862 0.162593070375603 0.162593070375603 -104.9792376 39.7337065 -104.9792634 39.7351686
-11742 8382 8383 0.00390317600089655 0.00390317600089655 -104.972113 39.7494781 -104.9721125 39.7495132
-18302 5737 2440 0.171112285574699 0.171112285574699 -105.0410242 39.7724702 -105.0410403 39.7709314
-11766 8404 8405 0.0591205771532174 0.0591205771532174 -104.9894933 39.7580303 -104.9899962 39.7583953
-11998 5505 7079 0.147126356992669 0.147126356992669 -104.9812949 39.7610237 -104.9800778 39.7619593
-12060 332 268 0.0944572536860071 0.0944572536860071 -104.9554298 39.7451641 -104.9564977 39.7449464
-4411 3048 4125 0.136438064344983 0.136438064344983 -104.9511947 39.7594645 -104.9511863 39.7606915
-20391 10766 10774 0.00648510043864555 0.00648510043864555 -105.0243045 39.7606892 -105.0243795 39.760698
-4412 4125 4126 0.00355827872013668 0.00355827872013668 -104.9511863 39.7606915 -104.9511861 39.7607235
-19845 9516 10657 0.207937764412144 0.207937764412144 -105.0387468 39.7403366 -105.0387332 39.7384666
-16200 1790 7209 0.198939694041251 0.198939694041251 -104.9810045 39.694799 -104.9809977 39.6930099
-20399 10763 3591 0.00757376863172981 0.00757376863172981 -105.0250727 39.760924 -105.025071 39.7608559
-12520 8729 1189 0.0214820993457698 0.0214820993457698 -104.9601841 39.7273144 -104.9601763 39.7271213
-20644 10877 4517 0.0511435578342218 0.0511435578342218 -105.0134384 39.7627649 -105.0133602 39.7632209
-12620 8775 4920 0.0124622300083447 0.0124622300083447 -104.9895915 39.7285525 -104.9894816 39.7286261
-20646 10035 10880 0.0235473019855852 0.0235473019855852 -105.0143641 39.767541 -105.0146396 39.7675397
-12646 5921 920 0.178961176893159 0.178961176893159 -104.9835955 39.730436 -104.9835814 39.7320454
-12691 8806 8807 0.0113998193117656 0.0113998193117656 -104.953405 39.7180338 -104.9534077 39.7179313
-12822 8261 493 0.226877195561116 0.226877195561116 -104.9966971 39.7817678 -104.994193 39.7810897
-13034 8927 585 0.0555278029535648 0.0555278029535648 -104.9887446 39.7818256 -104.9889526 39.7822987
-14668 6327 4166 0.169217141640748 0.169217141640748 -104.9729137 39.7186188 -104.972908 39.7201406
-14856 9434 8907 0.112945329265115 0.112945329265115 -105.0089007 39.7547457 -105.0079847 39.7554777
-20835 10948 10929 0.0711141044607233 0.0711141044607233 -105.0291285 39.7622441 -105.0299581 39.7621958
-13572 2184 9130 0.046228028674551 0.046228028674551 -105.0163101 39.7301817 -105.0161204 39.730571
-4413 4126 4127 0.123682116907034 0.123682116907034 -104.9511861 39.7607235 -104.9511861 39.7618358
-4414 4127 4128 0.0151340374611755 0.0151340374611755 -104.9511861 39.7618358 -104.9511874 39.7619719
-14780 5922 921 0.178257163080484 0.178257163080484 -104.9828734 39.7304382 -104.9828787 39.7320413
-13824 9203 7891 0.0449920400202888 0.0449920400202888 -104.9873873 39.7502468 -104.9870145 39.7505324
-13970 9249 9250 0.0321739674064664 0.0321739674064664 -105.0143117 39.7288521 -105.0144838 39.7291094
-20559 2957 10784 0.0120134443189883 0.0120134443189883 -105.0187431 39.7584203 -105.0187393 39.7585283
-14029 9262 6653 0.100609617198747 0.100609617198747 -105.0437097 39.6967153 -105.0448856 39.6967219
-15915 9746 9747 0.0832769023011374 0.0832769023011374 -105.0421231 39.7165684 -105.0417682 39.7172658
-11415 7985 8000 0.0154063290418794 0.0154063290418794 -105.025085 39.7846442 -105.0252653 39.7846442
-14233 8687 6694 0.0247755996269239 0.0247755996269239 -104.9497898 39.7256083 -104.9495001 39.7256083
-20569 10787 10858 0.0193290169195346 0.0193290169195346 -105.0188651 39.7596431 -105.0190584 39.7597333
-14464 6149 3994 0.0989127437299345 0.0989127437299345 -105.0287889 39.7729931 -105.029945 39.7730349
-14635 9387 9388 0.0403809617749613 0.0403809617749613 -105.0032834 39.7589279 -105.0032916 39.759291
-11212 391 392 0.10291889633356 0.10291889633356 -104.931634 39.702187 -104.932837 39.702182
-14604 9397 9398 0.123826706008273 0.123826706008273 -105.0252842 39.7632064 -105.0252853 39.7620928
-14637 9406 2243 0.00956376056529555 0.00956376056529555 -105.0052833 39.7574891 -105.0051802 39.7575225
-15410 9588 9589 0.0190893984820006 0.0190893984820006 -105.0043197 39.7412126 -105.0041373 39.7413116
-15440 9601 1507 0.00768187987530518 0.00768187987530518 -105.0002535 39.7408661 -105.0003423 39.7408556
-16383 9771 9880 0.0381827012246672 0.0381827012246672 -104.9717383 39.7032546 -104.9718617 39.7035846
-16620 9937 9938 0.0704692374785171 0.0704692374785171 -104.9859915 39.738562 -104.9856294 39.7391313
-11802 8392 8415 0.148179257170155 0.148179257170155 -104.9829471 39.7529945 -104.9841796 39.7520575
-16809 4996 728 0.102190274976312 0.102190274976312 -104.9523584 39.6965806 -104.951164 39.6965829
-11640 8346 4530 0.131615785848543 0.131615785848543 -105.0236119 39.7542144 -105.0220723 39.7542199
-16853 6519 9854 0.0497714413737895 0.0497714413737895 -104.9581188 39.6929673 -104.9575371 39.6929673
-4415 4128 1171 0.138086753058786 0.138086753058786 -104.9511874 39.7619719 -104.9511738 39.7632137
-17269 3518 82 0.205066129886621 0.205066129886621 -104.9623127 39.6983876 -104.9623177 39.7002318
-11951 8499 8500 0.0607548345173342 0.0607548345173342 -105.0064874 39.7561975 -105.0069837 39.7565886
-17324 6799 7351 0.103019517606604 0.103019517606604 -104.968374 39.7507196 -104.967169 39.7507119
-11991 4455 5503 0.144667643977852 0.144667643977852 -104.9816151 39.759425 -104.9804313 39.7603548
-17388 5920 3810 0.153093198888871 0.153093198888871 -104.9842358 39.7304466 -104.9842348 39.7290698
-17389 3810 10095 0.199017480070308 0.199017480070308 -104.9842348 39.7290698 -104.9842414 39.72728
-17407 6122 1921 0.202694690919031 0.202694690919031 -104.9645867 39.7093011 -104.9646085 39.7074783
-17408 1921 7246 0.200797963530598 0.200797963530598 -104.9646085 39.7074783 -104.9645976 39.7056725
-12044 8523 8524 0.0621486337289915 0.0621486337289915 -105.0057364 39.7517137 -105.0053655 39.751233
-17448 3247 10109 0.0544983800214201 0.0544983800214201 -104.9827863 39.7038745 -104.9827914 39.7033844
-4416 1171 891 0.137903948024362 0.137903948024362 -104.9511738 39.7632137 -104.9511738 39.7644539
-12113 8552 672 0.00266902064060136 0.00266902064060136 -104.9647683 39.7415931 -104.9647688 39.7416171
-17549 10132 10133 2.25328864155446 2.25328864155446 -104.9893554 39.7854595 -104.9832781 39.8051785
-17666 8928 10162 0.0972564668123919 0.0972564668123919 -104.9872354 39.7794049 -104.9861062 39.7795141
-12288 8528 8526 0.152174217990106 0.152174217990106 -105.0061613 39.7515322 -105.0049596 39.7505226
-17729 7332 2080 0.104548139781884 0.104548139781884 -104.9548798 39.7607265 -104.9536567 39.7607265
-12329 8641 8652 0.00987690479251785 0.00987690479251785 -105.0078924 39.7547551 -105.0077772 39.7547483
-12331 8653 8654 0.00928748638267964 0.00928748638267964 -105.0076516 39.7547313 -105.0075431 39.754727
-17751 8575 6706 0.145927899456713 0.145927899456713 -104.9927205 39.7474627 -104.99393 39.7465367
-12936 8688 8689 0.0364958929125483 0.0364958929125483 -105.0030556 39.7453386 -105.0031672 39.7450218
-17774 7679 5984 0.100495969018847 0.100495969018847 -104.9246153 39.7801377 -104.9257912 39.7801245
-17787 9214 536 0.151808926625465 0.151808926625465 -105.0140859 39.7556275 -105.0151149 39.7545148
-17822 10188 10186 0.041401555151972 0.041401555151972 -105.000993 39.7638033 -105.0007327 39.7634893
-17852 10195 5678 0.0176253194989635 0.0176253194989635 -104.9980666 39.7674272 -104.9982133 39.7675386
-17170 1912 5280 0.200459610115248 0.200459610115248 -104.9739477 39.707479 -104.9739693 39.7092817
-4417 891 4129 0.140986849802137 0.140986849802137 -104.9511738 39.7644539 -104.9511842 39.7657218
-12947 1304 1303 0.066448544071591 0.066448544071591 -105.0024118 39.7438801 -105.0017368 39.7441763
-18995 3958 5601 0.119729821294068 0.119729821294068 -105.0002015 39.7209321 -105.0016014 39.7209311
-18382 8919 8920 0.0492932118239397 0.0492932118239397 -105.0258833 39.771558 -105.0258859 39.7720013
-19080 4746 4159 0.17797879706873 0.17797879706873 -104.9407779 39.7225362 -104.9407748 39.7209356
-13065 8947 8948 0.014693528299895 0.014693528299895 -104.9948109 39.7672181 -104.9949826 39.7672115
-19135 3168 8470 0.0222426676149063 0.0222426676149063 -105.0012883 39.7488943 -105.0014824 39.7487611
-20824 9337 9400 0.0122401419030242 0.0122401419030242 -105.0251662 39.7600869 -105.0252875 39.7601454
-19172 6804 7956 0.0915174498096421 0.0915174498096421 -104.9688098 39.7807867 -104.9677476 39.7808918
-19618 10588 10494 0.00731369728944242 0.00731369728944242 -104.9910599 39.7104919 -104.9911454 39.7104919
-19331 9893 10473 0.0200896227314349 0.0200896227314349 -104.9715317 39.698308 -104.971721 39.6984149
-15874 8889 8940 0.103516223202584 0.103516223202584 -105.0393045 39.7347125 -105.0405047 39.7348341
-19358 9949 10479 0.0590930811213136 0.0590930811213136 -105.0003016 39.7477141 -104.9998192 39.7473335
-19413 7239 3251 0.195270640148282 0.195270640148282 -104.9798548 39.7057161 -104.9798629 39.70396
-19962 10674 10685 0.14613727594919 0.14613727594919 -105.0410696 39.7366244 -105.0410556 39.7353102
-18473 9005 9006 0.01365486811001 0.01365486811001 -105.0399025 39.7549798 -105.0399032 39.754857
-20041 9172 140 0.204724385208342 0.204724385208342 -104.9923108 39.6911873 -104.9924893 39.6930233
-18917 10396 10397 0.0952180129620757 0.0952180129620757 -105.0109587 39.7503762 -105.011825 39.749838
-20063 2998 4930 0.100928455718765 0.100928455718765 -104.9969577 39.7401458 -104.9981378 39.7401663
-20587 10865 10840 0.00838601883021894 0.00838601883021894 -105.024575 39.7609374 -105.0245771 39.760862
-4418 4129 2776 0.133433939347385 0.133433939347385 -104.9511842 39.7657218 -104.9511832 39.7669218
-14836 7396 7377 0.030817448743492 0.030817448743492 -105.0330742 39.7548479 -105.0334347 39.7548479
-14837 7377 3410 0.100816825455254 0.100816825455254 -105.0334347 39.7548479 -105.034614 39.754856
-15447 9607 9608 0.0162401698909022 0.0162401698909022 -104.9997573 39.7426934 -104.9999385 39.7426496
-309 317 318 0.0119735018205437 0.0119735018205437 -105.0345742 39.7830397 -105.0344342 39.7830352
-13531 5648 3387 0.0436500601039895 0.0436500601039895 -105.0355748 39.7254817 -105.0351109 39.725318
-14946 8215 8212 0.101284367879663 0.101284367879663 -104.9303979 39.7382593 -104.9292134 39.7382659
-13555 408 9127 0.613912488305853 0.613912488305853 -105.0014039 39.7148758 -104.9983536 39.7098782
-14981 9463 7091 0.107883940343108 0.107883940343108 -104.9861093 39.7432784 -104.9848475 39.7432813
-14982 7091 8789 0.108748219147477 0.108748219147477 -104.9848475 39.7432813 -104.9835757 39.7432682
-13650 9158 9159 0.0150152429008076 0.0150152429008076 -104.9960034 39.7030693 -104.9961123 39.7031752
-15063 8874 7430 0.0504536590179092 0.0504536590179092 -104.9810766 39.7368811 -104.9816663 39.7368655
-17072 3687 8133 0.141298637785039 0.141298637785039 -104.9615881 39.7469471 -104.9615993 39.7482178
-18493 9170 5545 0.102571946583037 0.102571946583037 -105.04225 39.7511845 -105.0422627 39.7521069
-15171 9511 9512 0.0502858420296349 0.0502858420296349 -105.0358145 39.7403194 -105.0364026 39.7403227
-15174 9514 9515 0.0498070291463972 0.0498070291463972 -105.0375666 39.7403293 -105.0381491 39.7403326
-18566 10322 10323 0.186113882409967 0.186113882409967 -105.0341731 39.7804672 -105.0341543 39.7821409
-16100 9824 9817 0.0308009946802063 0.0308009946802063 -104.9497096 39.7808621 -104.9497096 39.7811391
-16101 9817 8245 0.0866075022072335 0.0866075022072335 -104.9497096 39.7811391 -104.9495723 39.7819108
-15444 8607 9604 0.0180426861021608 0.0180426861021608 -105.0006617 39.7414743 -105.0004869 39.7415652
-16161 3728 722 0.106535324504203 0.106535324504203 -105.0028395 39.7289078 -105.004084 39.7289511
-16174 9840 7201 0.0108095014749508 0.0108095014749508 -104.9868416 39.693104 -104.9868436 39.6930068
-16239 9856 7742 0.4032601166124 0.4032601166124 -104.9541161 39.6857099 -104.954108 39.6893365
-16240 7742 5837 0.199863858168715 0.199863858168715 -104.954108 39.6893365 -104.9540973 39.6911339
-15881 8762 9238 0.022425928034548 0.022425928034548 -105.0451798 39.7355292 -105.0454319 39.7354736
-16327 3906 3134 0.109247651866168 0.109247651866168 -104.9634455 39.7619888 -104.9647236 39.7619908
-16328 3134 5403 0.105230091275359 0.105230091275359 -104.9647236 39.7619908 -104.9659547 39.7619898
-17203 10075 10076 0.206234100938924 0.206234100938924 -104.9688448 39.6965282 -104.9687509 39.6946749
-17253 5918 917 0.179236073493399 0.179236073493399 -104.9861275 39.730436 -104.9861344 39.7320479
-18223 1695 6884 0.201956855870188 0.201956855870188 -105.0434467 39.7675662 -105.0434307 39.76575
-15286 3187 9268 0.0103389762120735 0.0103389762120735 -104.946376 39.7114762 -104.946452 39.7115485
-19421 34 3533 0.2073108703911 0.2073108703911 -104.982156 39.7002709 -104.982132 39.6984066
-19436 6852 10490 0.151686039209942 0.151686039209942 -104.9881056 39.7102414 -104.9897131 39.7108173
-19663 10609 9366 0.0532084205099813 0.0532084205099813 -105.0211243 39.7697539 -105.0211194 39.7692754
-19847 10658 7133 0.20071321213787 0.20071321213787 -105.0387333 39.7365995 -105.0387146 39.7347945
-19953 7857 10414 0.0579007631193554 0.0579007631193554 -104.992831 39.7230021 -104.992154 39.7230042
-19293 10471 8765 0.117981892754207 0.117981892754207 -104.9888451 39.7389629 -104.9902249 39.7389566
-19987 9727 10653 0.0514452608394938 0.0514452608394938 -105.039304 39.7384682 -105.0399056 39.7384617
-19988 10653 1103 0.0505009558673589 0.0505009558673589 -105.0399056 39.7384617 -105.0404962 39.738465
-15432 9598 7965 0.00918826645895189 0.00918826645895189 -104.9998109 39.7420623 -104.999898 39.7420139
-15465 9615 9616 0.0488173542586425 0.0488173542586425 -105.0015275 39.7433678 -105.0011333 39.7436854
-15505 2286 4494 0.207036482148074 0.207036482148074 -105.0028141 39.740161 -105.0052335 39.7402363
-18430 7784 10291 0.0493825781706533 0.0493825781706533 -105.039294 39.7625616 -105.0387163 39.7625667
-15468 7963 9610 0.0129310975383002 0.0129310975383002 -105.0005879 39.7441349 -105.000479 39.7442156
-15643 9669 8703 0.0154036792176203 0.0154036792176203 -104.9406749 39.7582947 -104.9404947 39.7582947
-15293 9561 9563 0.0354006218838869 0.0354006218838869 -104.941269 39.7069549 -104.9409901 39.7071901
-15662 5995 7675 0.101107003151938 0.101107003151938 -104.9257668 39.7583774 -104.924584 39.7583757
-15469 9610 9613 0.00340267268464027 0.00340267268464027 -105.000479 39.7442156 -105.0004503 39.7442368
-15685 3450 6014 0.102083800598865 0.102083800598865 -104.9461569 39.7178084 -104.9449634 39.7178023
-18613 9261 4049 0.17355432372221 0.17355432372221 -105.0355223 39.7197001 -105.0355145 39.7181393
-15707 8686 8810 0.0279306326987703 0.0279306326987703 -104.9497874 39.7178534 -104.9500622 39.7177177
-15471 9606 8892 0.117003908235376 0.117003908235376 -105.0007281 39.7441165 -105.0008068 39.745167
-15762 2940 6814 0.0992967316903301 0.0992967316903301 -104.9257898 39.7162499 -104.9246289 39.7162454
-15764 6595 9701 0.0232598991470647 0.0232598991470647 -105.0377569 39.7329864 -105.0380289 39.7329878
-14656 9410 9411 0.19733052173904 0.19733052173904 -105.015841 39.75954 -105.0180024 39.7601634
-20261 10720 5750 0.00799491979378441 0.00799491979378441 -105.0450567 39.772877 -105.0450566 39.7729489
-2336 1153 2328 0.201597448584961 0.201597448584961 -104.9240347 39.7637955 -104.9240271 39.7656085
-17300 8716 8745 0.199099643459498 0.199099643459498 -104.9622811 39.6929794 -104.9622978 39.6947699
-19471 10515 10516 0.00520398584376517 0.00520398584376517 -104.9902726 39.7086173 -104.9902729 39.7085705
-20611 10819 10828 0.0109320789190355 0.0109320789190355 -105.0192728 39.7586316 -105.0192706 39.7587299
-20612 10828 10821 0.0197366861798755 0.0197366861798755 -105.0192706 39.7587299 -105.0191892 39.758896
-20613 10821 10870 0.0252155503065758 0.0252155503065758 -105.0191892 39.758896 -105.0188943 39.7588905
-478 480 212 0.0356029775534751 0.0356029775534751 -104.9669782 39.7796681 -104.9665616 39.779672
-15859 9740 9707 0.0569780852958723 0.0569780852958723 -105.0401452 39.7312615 -105.039492 39.7313626
-515 509 510 0.286655598001641 0.286655598001641 -104.9514881 39.747496 -104.9547886 39.7479501
-520 514 515 0.226862534758366 0.226862534758366 -105.0251054 39.7238769 -105.0224999 39.7242598
-15253 9545 9538 0.0260796874031177 0.0260796874031177 -104.9353544 39.7054988 -104.9352077 39.7057044
-624 614 615 0.101063162513791 0.101063162513791 -104.9929396 39.7368669 -104.9941215 39.7368616
-19463 10483 10508 0.019159575222575 0.019159575222575 -104.9902592 39.7100937 -104.9902611 39.7099214
-17219 3199 3087 0.202098851695834 0.202098851695834 -104.9775204 39.7110879 -104.9775097 39.7129054
-702 696 697 0.1055651557861 0.1055651557861 -104.9500677 39.7419774 -104.9488331 39.7419679
-15544 9645 9646 0.00692347068679982 0.00692347068679982 -104.9867889 39.7267325 -104.9868344 39.726681
-776 778 779 0.103928492069641 0.103928492069641 -105.023849 39.7020679 -105.0250638 39.7020728
-15955 6396 500 0.195346208359328 0.195346208359328 -105.0022548 39.7147281 -105.0016511 39.7130338
-913 927 928 0.0495542499145439 0.0495542499145439 -104.9792571 39.7320337 -104.9786778 39.7320223
-915 929 930 0.0493548663548942 0.0493548663548942 -104.9781467 39.7320382 -104.9775696 39.7320445
-15957 9767 9768 0.0474477023795114 0.0474477023795114 -105.0006962 39.7116024 -105.0005192 39.711198
-932 947 948 0.100759864187185 0.100759864187185 -104.9540658 39.7320945 -104.9528876 39.7321058
-15960 9770 7450 0.0160716244910599 0.0160716244910599 -104.999001 39.7075478 -104.9991888 39.7075519
-955 967 968 0.0165679791310418 0.0165679791310418 -104.9838014 39.7234262 -104.9837585 39.7235715
-957 969 970 0.197449816642368 0.197449816642368 -104.9835112 39.7801693 -104.9835185 39.781945
-15913 9240 9745 0.0339191222144473 0.0339191222144473 -105.042453 39.716655 -105.0428433 39.716601
-980 991 992 0.138684932577873 0.138684932577873 -104.9740667 39.720134 -104.974036 39.718887
-15891 9002 7513 0.0667178592447727 0.0667178592447727 -105.0410599 39.7349868 -105.0416463 39.7353826
-1003 1016 1017 0.039629871856248 0.039629871856248 -104.9622539 39.7331056 -104.9622539 39.733462
-1004 1017 1018 0.176155002789907 0.176155002789907 -104.9622539 39.733462 -104.9622539 39.7350462
-19469 10513 10514 0.0200709923319022 0.0200709923319022 -104.9902701 39.7089743 -104.9902714 39.7087938
-16388 9459 9771 0.0286077698371324 0.0286077698371324 -104.9714714 39.7030996 -104.9717383 39.7032546
-1087 1103 1104 0.338644304966299 0.338644304966299 -105.0404962 39.738465 -105.0404924 39.7415105
-17156 3091 4971 0.202252452796884 0.202252452796884 -104.9751708 39.7128876 -104.9751706 39.7147065
-16103 255 8239 0.267325536990832 0.267325536990832 -104.9534054 39.7800114 -104.9502774 39.7799784
-1170 1186 1187 0.0990780990020656 0.0990780990020656 -104.9648143 39.7271028 -104.9636558 39.7271103
-16337 8026 3444 0.219522804846043 0.219522804846043 -104.9488251 39.7617626 -104.9462569 39.7617553
-1298 1323 1324 0.104021267127805 0.104021267127805 -105.0408805 39.7133731 -105.0420966 39.7133724
-1299 1324 1325 0.0988550932780109 0.0988550932780109 -105.0420966 39.7133724 -105.0432523 39.7133745
-16392 9847 9876 0.0466572032639634 0.0466572032639634 -104.9699755 39.7028786 -104.9705085 39.7029675
-1322 1347 1348 0.145300158256776 0.145300158256776 -104.9771684 39.7690078 -104.9759324 39.769905
-387 389 390 0.101909828504342 0.101909828504342 -105.0001337 39.7136621 -105.0008375 39.7144016
-19511 10536 10537 0.0367294544686212 0.0367294544686212 -104.9879104 39.7088024 -104.9882735 39.7089787
-1469 1489 1490 0.0976691429125615 0.0976691429125615 -105.0015377 39.694864 -105.0026792 39.6948706
-12005 8512 8049 0.105397118565585 0.105397118565585 -104.9875407 39.7588984 -104.9866649 39.7595656
-18733 7646 6209 0.175022021354251 0.175022021354251 -105.0331112 39.7277125 -105.0331036 39.7261385
-16766 5003 7290 0.0493746723595829 0.0493746723595829 -104.9542392 39.7014907 -104.9546694 39.7017867
-1495 1515 1473 0.1629816039782 0.1629816039782 -104.9267914 39.6961177 -104.9248865 39.6961248
-1497 1516 1517 0.202642438735294 0.202642438735294 -104.9746066 39.7147099 -104.9745809 39.7128876
-16788 10012 8649 0.310114997807766 0.310114997807766 -105.0057345 39.7494516 -105.0092259 39.7486951
-1549 1574 1575 0.0819858846366358 0.0819858846366358 -105.0360845 39.6869978 -105.0369943 39.687229
-1550 1575 1576 0.0787364050378914 0.0787364050378914 -105.0369943 39.687229 -105.0378698 39.6874469
-12359 8664 8670 0.00994780391809775 0.00994780391809775 -105.0123703 39.7528644 -105.0123272 39.7529475
-16806 9858 3171 0.0510524682713306 0.0510524682713306 -104.9540893 39.6965849 -104.9534926 39.6965864
-1570 1597 1598 0.101896558922667 0.101896558922667 -105.0140815 39.6999614 -105.0137725 39.6990764
-2686 2646 2647 0.164307180037452 0.164307180037452 -104.9522198 39.7241312 -104.952204 39.7256088
-17103 9923 330 0.250512453112542 0.250512453112542 -104.9542113 39.7438103 -104.9522566 39.7454886
-1650 1677 1678 0.13227170643909 0.13227170643909 -105.0158682 39.7680616 -105.0174158 39.7680606
-11530 810 811 0.199368445906152 0.199368445906152 -105.0276079 39.7554276 -105.0299401 39.7554211
-16952 10036 10037 0.00823596195269871 0.00823596195269871 -105.0167198 39.7560071 -105.0167413 39.7559349
-1704 1725 1726 0.0532102629650272 0.0532102629650272 -105.0179828 39.6910268 -105.0185407 39.6908154
-17039 9210 8988 0.00924605732532601 0.00924605732532601 -105.0192694 39.7575006 -105.0192467 39.7575819
-1762 1487 1782 0.108567137541803 0.108567137541803 -104.9874337 39.6948003 -104.986165 39.6947828
-14689 2798 2868 0.199650986040528 0.199650986040528 -104.971199 39.7272868 -104.9712042 39.7290823
-17136 4412 4425 0.202602949014775 0.202602949014775 -104.9763723 39.7038488 -104.9763417 39.7056707
-17489 472 4654 0.0574342005254488 0.0574342005254488 -105.0184425 39.7479196 -105.0189639 39.7475939
-1935 1949 1223 0.041131087786823 0.041131087786823 -105.012837 39.738513 -105.012356 39.7385086
-1937 1950 1951 0.0773266220673917 0.0773266220673917 -105.005245 39.7384018 -105.006149 39.738421
-16304 2826 2827 0.0584380832256012 0.0584380832256012 -104.9718283 39.6983529 -104.9721964 39.6979102
-17962 10235 5193 0.0148018460000789 0.0148018460000789 -104.9880993 39.7242556 -104.9880966 39.7241225
-2187 2187 2188 0.0698088769426891 0.0698088769426891 -105.0159723 39.7369102 -105.0159468 39.7375377
-17834 10187 10188 0.0373456729353608 0.0373456729353608 -105.0006185 39.7636303 -105.000993 39.7638033
-17023 10058 10059 0.043764797810192 0.043764797810192 -105.0171608 39.7532718 -105.0176702 39.753311
-2261 2261 2262 0.20174624930555 0.20174624930555 -104.930525 39.7674191 -104.9305079 39.7692334
-20285 10701 10709 0.0172154433985116 0.0172154433985116 -105.0447555 39.7732732 -105.0445556 39.7732923
-16421 3331 3358 0.0229870189622456 0.0229870189622456 -104.9693109 39.7020309 -104.9695281 39.7021526
-20297 5579 7524 0.0531120067375217 0.0531120067375217 -105.0439692 39.777017 -105.0433477 39.777017
-12353 8669 8661 0.00857375962495721 0.00857375962495721 -105.0124521 39.7523897 -105.0123532 39.7524025
-16657 3462 3464 0.173665424327281 0.173665424327281 -104.9862758 39.7399191 -104.9872522 39.7385496
-19565 10567 7463 0.00795043725476521 0.00795043725476521 -104.9897546 39.7076211 -104.9897546 39.7075496
-17162 5087 5107 0.202243070877092 0.202243070877092 -104.9740434 39.6911697 -104.9740336 39.6929885
-19034 10159 9497 0.0427022948506461 0.0427022948506461 -104.9503671 39.7793277 -104.949868 39.7793088
-20744 9001 10918 0.332184959452437 0.332184959452437 -105.0253805 39.7605003 -105.0286822 39.762076
-20748 10921 10922 0.0509227801768603 0.0509227801768603 -105.0292505 39.7620502 -105.0298462 39.7620563
-20749 10923 10924 0.18669804780169 0.18669804780169 -105.0382061 39.7620456 -105.0382156 39.7603666
-20750 10925 10926 0.0392592111051346 0.0392592111051346 -105.035831 39.7621995 -105.0362903 39.7621997
-20752 10927 10928 0.00711510327217607 0.00711510327217607 -105.0267252 39.7609466 -105.0267992 39.7609759
-20754 10929 10930 0.0834966641757845 0.0834966641757845 -105.0299581 39.7621958 -105.0299611 39.7629467
-20756 10931 10932 0.0408755067283247 0.0408755067283247 -105.0352067 39.7621947 -105.0356849 39.762197
-20758 10933 10934 0.0399346912680156 0.0399346912680156 -105.0363976 39.7621959 -105.0368648 39.7621971
-20760 10935 10936 0.0903151185359097 0.0903151185359097 -105.0370035 39.7621946 -105.0380601 39.7621908
-20762 10937 8302 0.00392992290489043 0.00392992290489043 -105.0266441 39.7609098 -105.0266827 39.760929
-20763 8302 10927 0.00412640673301695 0.00412640673301695 -105.0266827 39.760929 -105.0267252 39.7609466
-20765 10918 3754 0.00609979968071289 0.00609979968071289 -105.0286822 39.762076 -105.028727 39.7621187
-20766 3754 10938 0.00661123306657495 0.00661123306657495 -105.028727 39.7621187 -105.028778 39.7621634
-20768 10920 7783 0.00949225948867298 0.00949225948867298 -105.0391814 39.7621915 -105.0392924 39.7621941
-20769 7783 10939 0.00900064827794335 0.00900064827794335 -105.0392924 39.7621941 -105.0393977 39.762194
-20771 10940 3415 0.00746326017722055 0.00746326017722055 -105.0345162 39.7622208 -105.0346035 39.762222
-20772 3415 10941 0.00571991053425525 0.00571991053425525 -105.0346035 39.762222 -105.0346704 39.7622208
-20774 10938 10942 0.117980886182769 0.117980886182769 -105.028778 39.7621634 -105.0279694 39.7630233
-20776 10941 10943 0.040800141538403 0.040800141538403 -105.0346704 39.7622208 -105.0351465 39.7621945
-20778 10929 8910 0.00644678344686978 0.00644678344686978 -105.0299581 39.7621958 -105.0300335 39.7621944
-20779 8910 10944 0.00853909895805364 0.00853909895805364 -105.0300335 39.7621944 -105.0301334 39.7621946
-20781 10926 10280 0.00413065470277064 0.00413065470277064 -105.0362903 39.7621997 -105.0363386 39.7622009
-20782 10280 10933 0.00507364819278473 0.00507364819278473 -105.0363386 39.7622009 -105.0363976 39.7621959
-16513 9922 1630 0.0152212141119797 0.0152212141119797 -105.0040915 39.7422329 -105.0040598 39.7420982
-16537 3671 9932 0.221180884679333 0.221180884679333 -104.9763685 39.7474986 -104.9763549 39.7494877
-16539 9933 7834 0.139783679739911 0.139783679739911 -104.9763678 39.7507423 -104.9763093 39.7519986
-16790 10013 7828 0.227723092786938 0.227723092786938 -105.0114923 39.7476921 -105.0134825 39.746331
-18645 1318 5867 0.177222990129465 0.177222990129465 -105.0378936 39.7133724 -105.0378886 39.7149662
-16960 10042 10043 0.0112267703364208 0.0112267703364208 -105.0160419 39.7555757 -105.0160494 39.7554749
-17266 3520 4261 0.200318193124263 0.200318193124263 -104.961154 39.6983849 -104.9611486 39.6965834
-18444 10290 1124 0.0512555936349529 0.0512555936349529 -105.0410717 39.7607688 -105.0404721 39.7607638
-17645 7 9825 0.783906819132393 0.783906819132393 -104.9443453 39.7800941 -104.9535187 39.7801156
-18721 5864 1312 0.178403401011926 0.178403401011926 -105.0343073 39.7149733 -105.0342968 39.7133689
-18408 6096 10287 0.0607868213781131 0.0607868213781131 -105.0292309 39.760844 -105.0292196 39.7613906
-17821 10187 10188 0.0373456729353608 0.0373456729353608 -105.0006185 39.7636303 -105.000993 39.7638033
-17849 2817 1418 0.198773063708036 0.198773063708036 -104.9993302 39.7801544 -104.9993559 39.7819419
-17914 4748 4144 0.180736428235498 0.180736428235498 -104.9856194 39.7225378 -104.9856225 39.7209124
-17915 4144 2362 0.17239723292509 0.17239723292509 -104.9856225 39.7209124 -104.9856171 39.719362
-18664 5184 5652 0.105551381348891 0.105551381348891 -105.0378224 39.7245345 -105.0378346 39.7254837
-18600 10333 10334 0.176228489643034 0.176228489643034 -105.0255419 39.7245857 -105.027524 39.725019
-18763 10341 10340 0.0478284118767837 0.0478284118767837 -105.0049362 39.7395329 -105.0043791 39.7395716
-18822 10356 10117 0.120644655146847 0.120644655146847 -105.0153708 39.7415577 -105.0153883 39.7404728
-12967 1825 1881 0.094094502294363 0.094094502294363 -105.0069351 39.7456267 -105.0074729 39.746365
-19280 10465 10466 0.126391742395325 0.126391742395325 -104.9873778 39.7399976 -104.988856 39.7399993
-19156 8422 10431 0.296704595839795 0.296704595839795 -105.0135792 39.7398604 -105.0144289 39.7424475
-19440 7907 10492 0.0345487307061229 0.0345487307061229 -104.9911419 39.7111606 -104.991144 39.7108499
-20295 10709 10710 0.0460287189373458 0.0460287189373458 -105.0445556 39.7732923 -105.0441026 39.7735162
-3578 3435 3436 0.0484142710611121 0.0484142710611121 -105.0346033 39.7779525 -105.0346033 39.7783879
-3579 3436 2495 0.0837858518069818 0.0837858518069818 -105.0346033 39.7783879 -105.0346 39.7791414
-3580 2495 3437 0.120116992356444 0.120116992356444 -105.0346 39.7791414 -105.0346118 39.7802216
-3581 3437 2842 0.00242442592962248 0.00242442592962248 -105.0346118 39.7802216 -105.0346113 39.7802434
-14124 506 3659 0.275685944218073 0.275685944218073 -104.9486568 39.747653 -104.9461809 39.7460646
-16901 3513 74 0.203700975919817 0.203700975919817 -104.9657993 39.6983855 -104.9657864 39.7002174
-18139 6038 10260 0.200840451178757 0.200840451178757 -105.0164173 39.7856269 -105.0164142 39.7874331
-19824 7641 5603 0.172193293465978 0.172193293465978 -105.0009116 39.7273175 -105.0016041 39.7258634
-19832 10652 10653 0.149094174776889 0.149094174776889 -105.0399184 39.7398025 -105.0399056 39.7384617
-16543 3555 814 0.153171011691858 0.153171011691858 -104.9751506 39.7546225 -104.9751505 39.753245
-20427 10755 10788 0.051994279761698 0.051994279761698 -105.0213448 39.7585398 -105.0218514 39.7587986
-11503 6094 2973 0.264851184287827 0.264851184287827 -105.027568 39.7608513 -105.0275907 39.7584695
-11438 8034 511 0.21998121248842 0.21998121248842 -105.0287237 39.7840235 -105.0312479 39.7836347
-16767 7290 3183 0.0591297362625136 0.0591297362625136 -104.9546694 39.7017867 -104.955269 39.7020512
-20517 10806 10844 0.0093521291785604 0.0093521291785604 -105.0163557 39.7585125 -105.0164651 39.7585116
-18290 6889 6752 0.139920838374264 0.139920838374264 -105.0259388 39.7651274 -105.0275758 39.7651202
-11434 8077 8253 0.0508611139110148 0.0508611139110148 -105.0348588 39.7833346 -105.0342653 39.7832999
-20513 10060 10809 0.00760770059759869 0.00760770059759869 -105.0193133 39.7576622 -105.0193936 39.7576917
-18366 7716 7754 0.0519727898310098 0.0519727898310098 -105.0259442 39.7669727 -105.0259422 39.7665053
-11784 8036 2685 0.144743408596787 0.144743408596787 -104.9787817 39.7535131 -104.9799803 39.7525937
-11570 8321 7713 0.150502362587478 0.150502362587478 -105.0304907 39.7580283 -105.0304918 39.7566748
-18376 8353 6069 0.193914067776721 0.193914067776721 -105.0398199 39.7838754 -105.039828 39.7856193
-12066 8533 8534 0.0445577347958965 0.0445577347958965 -104.9542138 39.7458945 -104.9544306 39.7462589
-16678 9979 9981 0.0909471727810372 0.0909471727810372 -105.0090565 39.7415049 -105.0080856 39.741839
-20808 10948 8326 0.017351380837649 0.017351380837649 -105.0291285 39.7622441 -105.029018 39.7621132
-13031 590 8926 0.147745966959296 0.147745966959296 -104.9910794 39.7792543 -104.989367 39.779071
-18483 9138 9139 0.0109683239632665 0.0109683239632665 -105.0432544 39.7511117 -105.0431263 39.7511062
-16502 3167 9925 0.137835608828632 0.137835608828632 -105.00401 39.7438456 -105.004838 39.7449092
-16961 10043 10044 0.075399787572802 0.075399787572802 -105.0160494 39.7554749 -105.0165756 39.7549307
-17393 67 3508 0.205321571793414 0.205321571793414 -104.9681458 39.7002288 -104.9681486 39.6983823
-17395 68 7304 0.202979892499458 0.202979892499458 -104.9680761 39.7002293 -104.9680922 39.7020547
-17650 303 395 0.11664951410225 0.11664951410225 -104.9380643 39.7800108 -104.9367017 39.7800737
-18596 10330 1845 0.0286669821878414 0.0286669821878414 -105.0312337 39.7211002 -105.031231 39.721358
-18996 5601 9265 0.00587624613864547 0.00587624613864547 -105.0016014 39.7209311 -105.0016701 39.7209304
-19117 402 10431 0.249198506812358 0.249198506812358 -105.0124556 39.7407982 -105.0144289 39.7424475
-19489 4703 10441 0.0209493756701814 0.0209493756701814 -104.9883469 39.709334 -104.9883481 39.7091456
-19929 9514 10680 0.206733607617385 0.206733607617385 -105.0375666 39.7403293 -105.0375666 39.7384701
-20583 10849 9338 0.00790665036605531 0.00790665036605531 -105.0250742 39.7612881 -105.0251667 39.7612881
-20193 10707 9813 0.31051590829715 0.31051590829715 -104.9886248 39.7811587 -104.9922437 39.7814112
-19738 9472 4893 0.184563607099297 0.184563607099297 -104.9456312 39.7367775 -104.9456205 39.7351177
-19739 4893 9418 0.161581410791365 0.161581410791365 -104.9456205 39.7351177 -104.9456339 39.7336646
-19740 9418 955 0.17512104217346 0.17512104217346 -104.9456339 39.7336646 -104.9456366 39.7320897
-19741 955 8865 0.17730267158364 0.17730267158364 -104.9456366 39.7320897 -104.9456473 39.7304952
-19745 4908 6614 0.202025102521769 0.202025102521769 -104.9338415 39.7346803 -104.9338724 39.736497
-19746 6614 9456 0.193906231686937 0.193906231686937 -104.9338724 39.736497 -104.9338436 39.7382407
-19747 9456 10644 0.207835763228408 0.207835763228408 -104.9338436 39.7382407 -104.933817 39.7401097
-19748 10644 647 0.139231068042996 0.139231068042996 -104.933817 39.7401097 -104.9337694 39.7413613
-19807 7868 3718 0.103509284327612 0.103509284327612 -104.9969607 39.7193475 -104.9969447 39.7184167
-19756 9305 1209 0.168197350020426 0.168197350020426 -104.942383 39.7256045 -104.9423696 39.7271171
-19906 9507 10678 0.206369047895258 0.206369047895258 -105.0328316 39.7403209 -105.0328432 39.738465
-17115 582 4052 0.0200066549889732 0.0200066549889732 -104.9577579 39.7479349 -104.9579299 39.7478129
-20290 10700 10701 0.0224013855081139 0.0224013855081139 -105.0445771 39.7731256 -105.0447555 39.7732732
-15856 9738 9733 0.00602831355714784 0.00602831355714784 -105.0423031 39.7306156 -105.0423259 39.7305643
-16390 9811 3033 0.00758642111179705 0.00758642111179705 -104.9701397 39.7026686 -104.9700513 39.702674
-17208 234 10075 0.0065072113132931 0.0065072113132931 -104.9688514 39.6965865 -104.9688448 39.6965282
-18209 3991 6766 0.202297976338321 0.202297976338321 -105.0299548 39.7716681 -105.0275892 39.7716046
-314 322 323 0.0362830323344 0.0362830323344 -105.0158044 39.7515055 -105.0156986 39.7518215
-17944 10224 7938 0.0484797623817722 0.0484797623817722 -104.9867731 39.7252057 -104.9868244 39.7256399
-11519 657 658 0.200633396770054 0.200633396770054 -105.0322612 39.758985 -105.0299141 39.7589753
-18400 7187 1425 0.131517435591527 0.131517435591527 -105.0386558 39.7832674 -105.0386719 39.7820847
-16448 9905 9906 0.00998689980616885 0.00998689980616885 -104.9731684 39.7001285 -104.9731572 39.7002179
-1705 1726 1727 0.0778502303245676 0.0778502303245676 -105.0185407 39.6908154 -105.0194505 39.690822
-19817 3729 10647 0.0543545423636727 0.0543545423636727 -105.0028319 39.7300118 -105.0021963 39.7300097
-20793 10938 8908 0.0180004191395181 0.0180004191395181 -105.028778 39.7621634 -105.0289792 39.7622112
-19241 8221 10460 0.0833729876311698 0.0833729876311698 -104.9936301 39.74071 -104.9942613 39.7401385
-18639 5180 2582 0.17723417320802 0.17723417320802 -105.0345542 39.7245247 -105.0345489 39.7229308
-20291 10701 10703 0.028889965052559 0.028889965052559 -105.0447555 39.7732732 -105.0450568 39.773391
-19963 4945 7404 0.157747728004848 0.157747728004848 -104.9951594 39.7179476 -104.9945842 39.7165997
-5109 4628 4629 0.132844583260552 0.132844583260552 -105.0189404 39.7729351 -105.0189408 39.7741298
-13926 8916 8922 0.136369708465648 0.136369708465648 -104.9907275 39.7728705 -104.9912716 39.7717176
-19964 7404 10415 0.200029723937468 0.200029723937468 -104.9945842 39.7165997 -104.9945762 39.7148008
-12274 8517 8518 0.0318537260898596 0.0318537260898596 -105.0069509 39.7552605 -105.0071312 39.7555112
-302 310 311 0.0714603355500818 0.0714603355500818 -104.9792332 39.7786848 -104.9786416 39.779139
-307 315 316 0.0430385391585726 0.0430385391585726 -105.0132442 39.7253524 -105.0137199 39.7254787
-333 333 334 0.130005791781119 0.130005791781119 -104.9270337 39.7763519 -104.9284284 39.775885
-501 338 339 0.0809671757461818 0.0809671757461818 -104.9880444 39.7401037 -104.9873725 39.7395906
-337 340 336 0.244398847800565 0.244398847800565 -104.9379355 39.7804643 -104.9390909 39.7824749
-339 341 342 0.368758396632831 0.368758396632831 -105.0154562 39.7336245 -105.0138715 39.7367088
-341 343 344 0.267836247641829 0.267836247641829 -105.0125925 39.7554572 -105.0150427 39.753956
-1553 1578 1579 0.0969614959298273 0.0969614959298273 -105.0401129 39.6876594 -105.0411657 39.6879819
-360 362 363 0.19757055700413 0.19757055700413 -105.0051577 39.6892299 -105.0049362 39.6874613
-361 363 358 0.235481235248911 0.235481235248911 -105.0049362 39.6874613 -105.0034646 39.6856718
-365 366 367 0.102920688901431 0.102920688901431 -104.9601224 39.7799975 -104.9589982 39.7796654
-374 376 377 0.135433574317766 0.135433574317766 -105.0213674 39.7753467 -105.0213949 39.7741289
-376 378 379 0.134391053348824 0.134391053348824 -105.019844 39.7729352 -105.019823 39.7717267
-485 478 486 0.209563350313202 0.209563350313202 -105.0170811 39.7459783 -105.0180607 39.7477059
-489 489 490 0.0633762863456435 0.0633762863456435 -104.9407865 39.7473869 -104.9415277 39.7473958
-491 491 492 0.0663732872105415 0.0663732872105415 -104.9407607 39.7492347 -104.9415359 39.749202
-493 493 494 0.169203096380544 0.169203096380544 -104.994193 39.7810897 -104.992407 39.7804327
-495 5 495 0.258130691528307 0.258130691528307 -104.9373334 39.780183 -104.9399882 39.7812905
-496 495 496 0.152370734557831 0.152370734557831 -104.9399882 39.7812905 -104.9404434 39.7826154
-523 518 519 0.337507977198885 0.337507977198885 -104.9409175 39.7837817 -104.9416292 39.7807961
-525 520 521 0.106662672722042 0.106662672722042 -105.0028259 39.7312673 -105.0040731 39.7312549
-527 522 523 0.0555974633225448 0.0555974633225448 -104.947535 39.703187 -104.947535 39.702687
-529 524 525 0.0282350762510443 0.0282350762510443 -104.9493835 39.780399 -104.9497096 39.7804399
-530 525 526 0.0218806529722405 0.0218806529722405 -104.9497096 39.7804399 -104.9499002 39.7803085
-532 527 397 0.320431501428441 0.320431501428441 -105.009688 39.7575578 -105.0131625 39.7564763
-11515 270 528 0.19992365959325 0.19992365959325 -105.029923 39.7598619 -105.0322618 39.7598749
-535 529 530 0.455513641378482 0.455513641378482 -105.0102365 39.7542807 -105.0085506 39.7581668
-537 531 532 0.375956762810707 0.375956762810707 -105.0148477 39.7535401 -105.010541 39.7542249
-11371 7972 290 0.0119699038475456 0.0119699038475456 -105.0052958 39.7614779 -105.0053845 39.7613946
-14734 4868 2218 0.161837248854237 0.161837248854237 -104.9758386 39.7351502 -104.9758646 39.7336949
-6872 5877 5878 0.0844725820315708 0.0844725820315708 -105.0442509 39.6917193 -105.045238 39.6917061
-16249 9860 8753 0.202765718025687 0.202765718025687 -104.9529332 39.6929471 -104.9529431 39.6947706
-16250 8753 9861 0.201364638358659 0.201364638358659 -104.9529431 39.6947706 -104.9529333 39.6965815
-16251 9861 3662 0.165177264018871 0.165177264018871 -104.9529333 39.6965815 -104.9517941 39.6977808
-20720 9398 9340 0.00984702702877527 0.00984702702877527 -105.0252853 39.7620928 -105.0251701 39.7620923
-16256 9863 8751 0.202603541868936 0.202603541868936 -104.9552587 39.6929589 -104.9552399 39.6947809
-16260 3650 88 0.266027674120579 0.266027674120579 -104.957148 39.7023062 -104.9586741 39.7002217
-16261 88 3524 0.203075294530693 0.203075294530693 -104.9586741 39.7002217 -104.9586741 39.6983954
-16262 3524 9864 0.20046430405241 0.20046430405241 -104.9586741 39.6983954 -104.9586848 39.6965926
-16263 9864 6517 0.135079896017257 0.135079896017257 -104.9586848 39.6965926 -104.9581176 39.6954589
-19523 6855 10544 0.00712022213135496 0.00712022213135496 -104.9888037 39.7102452 -104.9888064 39.7101812
-19524 10544 10545 0.0729342151704198 0.0729342151704198 -104.9888064 39.7101812 -104.9888118 39.7095253
-19526 10427 10546 0.0076995400840501 0.0076995400840501 -104.9883457 39.7095201 -104.9884357 39.7095211
-19527 10546 10545 0.0321755552809886 0.0321755552809886 -104.9884357 39.7095211 -104.9888118 39.7095253
-19528 10545 10547 0.0194542890583841 0.0194542890583841 -104.9888118 39.7095253 -104.9890392 39.7095279
-19529 10547 10548 0.0207030648178635 0.0207030648178635 -104.9890392 39.7095279 -104.9892812 39.7095305
-19530 10548 10543 0.0190435691175833 0.0190435691175833 -104.9892812 39.7095305 -104.9895038 39.709533
-19531 10543 10549 0.0747704686946873 0.0747704686946873 -104.9895038 39.709533 -104.9897237 39.7101838
-19532 10549 6859 0.00739470505760699 0.00739470505760699 -104.9897237 39.7101838 -104.9897244 39.7102503
-19543 10555 10556 0.0878912692065361 0.0878912692065361 -104.9890509 39.7084053 -104.9890591 39.7076149
-19544 10556 7460 0.0082175900444136 0.0082175900444136 -104.9890591 39.7076149 -104.9890599 39.707541
-11808 8395 2692 0.146729521611774 0.146729521611774 -104.9838316 39.7536605 -104.9826233 39.7545977
-19546 6852 10557 0.00689466829919516 0.00689466829919516 -104.9881056 39.7102414 -104.9880964 39.7101798
-19547 10557 10558 0.00988642805887056 0.00988642805887056 -104.9880964 39.7101798 -104.9880982 39.7100909
-19548 10558 10559 0.0350073244923259 0.0350073244923259 -104.9880982 39.7100909 -104.9881037 39.7097761
-19550 10409 10559 0.0205641181514586 0.0205641181514586 -104.9883441 39.7097759 -104.9881037 39.7097761
-343 345 346 0.0953881878570937 0.0953881878570937 -105.0067949 39.727165 -105.0077031 39.726667
-357 359 360 0.0408490640041322 0.0408490640041322 -105.0015512 39.6890589 -105.0016107 39.6894234
-359 361 362 0.026041104546106 0.026041104546106 -105.0051297 39.6894631 -105.0051577 39.6892299
-19800 8772 7638 0.176309543452907 0.176309543452907 -104.9969955 39.7289027 -104.9969636 39.7273173
-19802 6235 5200 0.174765267300994 0.174765267300994 -104.9969633 39.7256958 -104.9969602 39.7241241
-14862 8517 9439 0.0489472304938478 0.0489472304938478 -105.0069509 39.7552605 -105.0065078 39.7555393
-14864 9387 9440 0.0279990514780242 0.0279990514780242 -105.0032834 39.7589279 -105.0029559 39.7589235
-206 104 218 0.105140809305177 0.105140809305177 -104.9874778 39.7002508 -104.9862918 39.700003
-207 218 219 0.425726992195474 0.425726992195474 -104.9862918 39.700003 -104.9829912 39.6971378
-208 219 220 0.341194420964085 0.341194420964085 -104.9829912 39.6971378 -104.9801989 39.6949471
-564 250 558 0.137167107757782 0.137167107757782 -104.998399 39.69737 -104.996796 39.697349
-566 559 560 0.116737480647973 0.116737480647973 -104.9838121 39.7666622 -104.9837994 39.767712
-570 563 564 0.00248176882120935 0.00248176882120935 -104.9854438 39.7392378 -104.9854426 39.7392155
-571 564 565 0.0167681949380125 0.0167681949380125 -104.9854426 39.7392155 -104.9854426 39.7390647
-573 566 248 0.898480310845601 0.898480310845601 -104.9751917 39.6906986 -104.966468 39.6862015
-577 569 570 0.20355346310439 0.20355346310439 -104.985642 39.6966206 -104.9856433 39.69479
-578 570 571 0.196730394721169 0.196730394721169 -104.9856433 39.69479 -104.9857141 39.6930216
-579 571 572 0.203615183123948 0.203615183123948 -104.9857141 39.6930216 -104.9856956 39.6911905
-580 572 573 0.198181200751108 0.198181200751108 -104.9856956 39.6911905 -104.9857184 39.6894083
-14119 4047 3768 0.167133877022618 0.167133877022618 -104.9449621 39.7476682 -104.9443957 39.7462296
-16964 10030 10041 0.01368783886441 0.01368783886441 -105.0158154 39.755672 -105.0159755 39.75567
-17397 72 7305 0.205159206156883 0.205159206156883 -104.9669067 39.7002209 -104.9669227 39.7020659
-18238 8494 6764 0.145768349374275 0.145768349374275 -105.0258959 39.7706651 -105.0276005 39.7707095
-19608 10515 10585 0.0689638415978994 0.0689638415978994 -104.9902726 39.7086173 -104.9910787 39.7086267
-18764 10340 10339 0.0412859123428405 0.0412859123428405 -105.0043791 39.7395716 -105.0047672 39.7397925
-18823 10117 10113 0.0135016334010227 0.0135016334010227 -105.0153883 39.7404728 -105.0153589 39.7403535
-19106 10358 10371 0.165108727109845 0.165108727109845 -105.0144967 39.7392041 -105.0142451 39.7377319
-19491 10447 10448 0.0188144168916081 0.0188144168916081 -104.9883492 39.7089795 -104.9883503 39.7088103
-20034 9939 10087 0.139116164222915 0.139116164222915 -104.9739728 39.7494793 -104.9739701 39.7507304
-20585 10868 10860 0.0191301130167572 0.0191301130167572 -105.0245651 39.7612868 -105.02457 39.7611148
-16225 9851 8750 0.201618763717288 0.201618763717288 -104.9563865 39.692964 -104.9563891 39.6947772
-16226 8750 9852 0.201631838787549 0.201631838787549 -104.9563891 39.6947772 -104.9563784 39.6965905
-16227 9852 3528 0.200735525849656 0.200735525849656 -104.9563784 39.6965905 -104.9563972 39.6983957
-16228 3528 92 0.203732802229698 0.203732802229698 -104.9563972 39.6983957 -104.9565605 39.7002236
-16230 9853 7739 0.398547510805713 0.398547510805713 -104.9575595 39.6857489 -104.9575425 39.6893331
-16231 7739 5833 0.201507956367007 0.201507956367007 -104.9575425 39.6893331 -104.9575478 39.6911453
-16232 5833 9854 0.202599224942483 0.202599224942483 -104.9575478 39.6911453 -104.9575371 39.6929673
-16233 9854 8749 0.200829688485991 0.200829688485991 -104.9575371 39.6929673 -104.9575317 39.6947734
-16234 8749 9855 0.20199683583572 0.20199683583572 -104.9575317 39.6947734 -104.9575344 39.69659
-16235 9855 3526 0.201154889365918 0.201154889365918 -104.9575344 39.69659 -104.9575478 39.698399
-16236 3526 90 0.202910490655376 0.202910490655376 -104.9575478 39.698399 -104.9575583 39.7002238
-16237 90 3653 0.220628466219896 0.220628466219896 -104.9575583 39.7002238 -104.956048 39.7018321
-16241 5837 9857 0.2019855844315 0.2019855844315 -104.9540973 39.6911339 -104.9540974 39.6929504
-16242 9857 8752 0.20368896268505 0.20368896268505 -104.9540974 39.6929504 -104.9540866 39.6947822
-16243 8752 9858 0.200451227373991 0.200451227373991 -104.9540866 39.6947822 -104.9540893 39.6965849
-16244 9858 3660 0.230907711206458 0.230907711206458 -104.9540893 39.6965849 -104.9525869 39.69831
-16248 5838 9860 0.202297457689378 0.202297457689378 -104.9529386 39.6911278 -104.9529332 39.6929471
-19645 10602 7824 0.0258612340137364 0.0258612340137364 -104.9878742 39.7066509 -104.9875719 39.7066529
-363 364 365 0.559719374351914 0.559719374351914 -104.9703166 39.6886511 -104.9756534 39.6915619
-19907 10678 9721 0.0996291174385701 0.0996291174385701 -105.0328432 39.738465 -105.0334117 39.7376829
-506 500 501 0.0135415609654236 0.0135415609654236 -105.0016511 39.7130338 -105.0014928 39.7130323
-561 555 249 0.135203722470136 0.135203722470136 -104.9967877 39.6982448 -104.998368 39.698242
-11580 1888 1889 0.200666363671928 0.200666363671928 -105.0346054 39.7616798 -105.0322578 39.7616855
-15798 2349 2131 0.0298025813439396 0.0298025813439396 -105.0225811 39.7377111 -105.0228299 39.7378988
-539 533 534 0.0326127113197712 0.0326127113197712 -105.0123604 39.7549991 -105.0126456 39.7551939
-19790 4873 2223 0.160309891999679 0.160309891999679 -104.9724077 39.7351513 -104.972405 39.7337096
-19791 2223 939 0.184480311036498 0.184480311036498 -104.972405 39.7337096 -104.972385 39.7320506
-19793 6601 8056 0.176023947078255 0.176023947078255 -105.0008954 39.7320882 -105.0009061 39.7305052
-18090 1076 4197 0.0860162512015724 0.0860162512015724 -105.009052 39.7857306 -105.0081572 39.7853762
-19867 5588 10668 0.0462472353637014 0.0462472353637014 -105.0439294 39.7354289 -105.0433886 39.7354236
-19868 10668 3867 0.0484404910203503 0.0484404910203503 -105.0433886 39.7354236 -105.0428222 39.7354157
-16756 10007 10009 0.110124788745591 0.110124788745591 -104.9516233 39.6981848 -104.9506326 39.6988171
-20270 10704 10719 0.0406376536123098 0.0406376536123098 -105.0445781 39.7730214 -105.0441026 39.7730223
-20705 10912 9190 0.00712573261129369 0.00712573261129369 -105.0253734 39.7619406 -105.0253671 39.7620045
-18194 10279 8107 0.203288621260674 0.203288621260674 -105.0363572 39.7802082 -105.0363465 39.77838
-20434 10793 8352 0.0594105399024928 0.0594105399024928 -105.023633 39.7596708 -105.024257 39.7599061
-458 461 462 0.198429530791892 0.198429530791892 -104.9888564 39.7783921 -104.9880253 39.7800584
-460 463 464 0.0462542784573108 0.0462542784573108 -104.9733885 39.7038655 -104.9728479 39.7038584
-462 465 466 0.144675049024067 0.144675049024067 -104.939057 39.6947168 -104.9373661 39.6947234
-17120 4175 1798 0.171169073462998 0.171169073462998 -104.9775465 39.6932215 -104.9775097 39.6947606
-464 265 467 0.159364568867095 0.159364568867095 -104.9480386 39.6896766 -104.9480386 39.6911098
-18157 6034 6309 0.201831068920315 0.201831068920315 -105.0129545 39.7856166 -105.0129465 39.7874317
-4816 4421 3998 0.17545447475176 0.17545447475176 -105.0299945 39.7149702 -105.0299945 39.7165481
-4922 4493 4494 0.0159365819430951 0.0159365819430951 -105.0052303 39.740093 -105.0052335 39.7402363
-5210 4702 4703 0.066548442936564 0.066548442936564 -104.987569 39.7093263 -104.9883469 39.709334
-7813 6447 2400 0.0150551554736642 0.0150551554736642 -104.9404516 39.7737178 -104.9404255 39.7738517
-16544 814 7835 0.140306546265127 0.140306546265127 -104.9751505 39.753245 -104.975145 39.7519832
-12308 8643 8644 0.0690537561530006 0.0690537561530006 -105.0079172 39.7541523 -105.0077069 39.7535527
-17649 227 303 0.195568266331611 0.195568266331611 -104.9403515 39.7799498 -104.9380643 39.7800108
-7918 6517 6518 0.0762261509888863 0.0762261509888863 -104.9581176 39.6954589 -104.9581241 39.6947734
-17937 10218 10222 0.0404413602972235 0.0404413602972235 -104.9865379 39.7248787 -104.9867449 39.7252057
-17938 10222 10219 0.0368645715567014 0.0368645715567014 -104.9867449 39.7252057 -104.986739 39.7248742
-8128 6642 6643 0.177723704306915 0.177723704306915 -104.9985895 39.7273172 -104.998623 39.7289153
-17941 10223 10220 0.00249551892827132 0.00249551892827132 -104.9868558 39.7248491 -104.9868576 39.7248715
-17943 10222 10224 0.00241172243246435 0.00241172243246435 -104.9867449 39.7252057 -104.9867731 39.7252057
-8312 6745 6746 0.136482587401898 0.136482587401898 -105.0268172 39.7511856 -105.0268257 39.752413
-18754 7413 5870 0.17727401445854 0.17727401445854 -105.0403103 39.7165576 -105.0402918 39.7149634
-18755 5870 1322 0.17769011554913 0.17769011554913 -105.0402918 39.7149634 -105.0402863 39.7133654
-19718 10634 10631 0.0223829659698328 0.0223829659698328 -105.0040521 39.7345718 -105.0042586 39.7344481
-19728 5372 10636 0.0113147577104563 0.0113147577104563 -105.0036801 39.7337035 -105.0036962 39.7338045
-11655 8352 8354 0.0940321887930874 0.0940321887930874 -105.024257 39.7599061 -105.0236698 39.7606212
-12943 1331 8882 0.0183910567310257 0.0183910567310257 -105.0019226 39.7434049 -105.0018196 39.7432597
-13038 8921 8931 0.0826069320981336 0.0826069320981336 -104.9945399 39.7685832 -104.9953405 39.768167
-15877 9002 8833 0.267177283911404 0.267177283911404 -105.0410599 39.7349868 -105.0441417 39.7353828
-13924 219 9234 0.1533276461132 0.1533276461132 -104.9829912 39.6971378 -104.9818516 39.6960736
-14664 6543 4752 0.198706695176553 0.198706695176553 -104.9723281 39.7237476 -104.9723195 39.7219606
-14064 5103 7930 0.0939071679637344 0.0939071679637344 -104.9499914 39.7083084 -104.949883 39.707468
-15409 9587 9588 0.102439715732603 0.102439715732603 -105.0050252 39.740468 -105.0043197 39.7412126
-17271 7309 3269 0.20118551117184 0.20118551117184 -104.9622856 39.7020498 -104.962291 39.7038591
-19597 10581 10493 0.00740818165509206 0.00740818165509206 -104.9910581 39.7106676 -104.9911447 39.7106683
-17856 10198 10199 0.0985751913110846 0.0985751913110846 -104.9752368 39.7863791 -104.9742929 39.7858694
-17916 2362 5630 0.113519118424065 0.113519118424065 -104.9856171 39.719362 -104.9856145 39.7183411
-17920 5276 3075 0.102745112375949 0.102745112375949 -104.9856735 39.713872 -104.9856788 39.712948
-19227 10451 10452 0.0446144989444803 0.0446144989444803 -104.9904508 39.7418286 -104.9908137 39.7415403
-20035 10087 7837 0.13791526067504 0.13791526067504 -104.9739701 39.7507304 -104.9739674 39.7519707
-418 417 418 0.0816052997413777 0.0816052997413777 -104.9458794 39.7444723 -104.9449438 39.7443271
-20262 5750 10721 0.00796157509542264 0.00796157509542264 -105.0450566 39.7729489 -105.0450564 39.7730205
-3789 1821 3611 0.0958389453890581 0.0958389453890581 -104.9293577 39.7647208 -104.9293567 39.7655827
-3790 3611 2772 0.203476606019223 0.203476606019223 -104.9293567 39.7655827 -104.9293492 39.7674126
-3793 3613 3614 0.132946325644283 0.132946325644283 -104.9293234 39.7702164 -104.9293312 39.771412
-3796 3616 3617 0.204716112848492 0.204716112848492 -104.9804184 39.6930078 -104.9804371 39.6911668
-3797 3617 3618 0.195623928497501 0.195623928497501 -104.9804371 39.6911668 -104.98046 39.6894076
-427 426 427 0.387676950856037 0.387676950856037 -105.0252144 39.7427283 -105.028564 39.7403785
-429 428 429 0.0146752084107322 0.0146752084107322 -104.9949826 39.7671257 -104.9948109 39.7671257
-430 429 430 0.036859949213086 0.036859949213086 -104.9948109 39.7671257 -104.9943797 39.7671201
-431 430 431 0.0704161362424121 0.0704161362424121 -104.9943797 39.7671201 -104.9935559 39.7671283
-432 431 432 0.590519007108071 0.590519007108071 -104.9935559 39.7671283 -104.9902144 39.7717766
-4284 2975 658 0.052473064124837 0.052473064124837 -105.0299157 39.7585034 -105.0299141 39.7589753
-4286 1885 270 0.0500105419976734 0.0500105419976734 -105.0299322 39.7594122 -105.029923 39.7598619
-4287 270 4027 0.0498040073250557 0.0498040073250557 -105.029923 39.7598619 -105.0299108 39.7603097
-4288 4027 4028 0.0589001114271481 0.0589001114271481 -105.0299108 39.7603097 -105.0299124 39.7608394
-4289 4028 4029 0.0431017175700998 0.0431017175700998 -105.0299124 39.7608394 -105.0299179 39.761227
-4360 2497 4085 0.0418616206629569 0.0418616206629569 -105.0102009 39.7838273 -105.0106908 39.7838273
-4362 4086 4087 0.0498519055829618 0.0498519055829618 -105.0112057 39.7838279 -105.0117891 39.7838304
-4375 4097 4098 0.0489802870312836 0.0489802870312836 -105.0187521 39.7838972 -105.0193253 39.7838997
-4376 4098 4099 0.0495757400917575 0.0495757400917575 -105.0193253 39.7838997 -105.0199054 39.783907
-4377 4099 1289 0.0496665540814756 0.0496665540814756 -105.0199054 39.783907 -105.0204845 39.7839453
-4388 1566 4105 0.137573017409453 0.137573017409453 -104.9507995 39.7776799 -104.9507895 39.7789171
-4391 695 4107 0.201385149795677 0.201385149795677 -104.9512663 39.7419839 -104.9512653 39.743795
-4393 4108 4109 0.0199664273987825 0.0199664273987825 -104.9512465 39.7179366 -104.9511309 39.7180926
-14838 3410 8377 0.101986580237 0.101986580237 -105.034614 39.754856 -105.035807 39.7548626
-14839 8377 7446 0.0983251649921582 0.0983251649921582 -105.035807 39.7548626 -105.0369572 39.7548626
-14840 7446 7164 0.102406305295689 0.102406305295689 -105.0369572 39.7548626 -105.0381551 39.754855
-14842 7777 9006 0.0511080596626327 0.0511080596626327 -105.0393054 39.7548506 -105.0399032 39.754857
-14843 9006 1118 0.0498086503332092 0.0498086503332092 -105.0399032 39.754857 -105.0404858 39.7548633
-14844 1118 9427 0.0503946729534928 0.0503946729534928 -105.0404858 39.7548633 -105.0410753 39.7548663
-14845 9427 7495 0.0500441160343634 0.0500441160343634 -105.0410753 39.7548663 -105.0416607 39.7548692
-14846 7495 9428 0.0499148481472719 0.0499148481472719 -105.0416607 39.7548692 -105.0422446 39.7548692
-16340 8082 9873 0.204288977647072 0.204288977647072 -104.9430328 39.7615337 -104.9406644 39.7617801
-16284 2160 2852 0.333640243849923 0.333640243849923 -104.9704959 39.6950911 -104.972242 39.697774
-16319 7334 9870 0.105486497466828 0.105486497466828 -104.9548825 39.7619805 -104.9561166 39.7619811
-16320 9870 3330 0.104529154175209 0.104529154175209 -104.9561166 39.7619811 -104.9573395 39.7619816
-16321 3330 5008 0.105000246042652 0.105000246042652 -104.9573395 39.7619816 -104.9585679 39.7619857
-16322 5008 9871 0.101110660676404 0.101110660676404 -104.9585679 39.7619857 -104.9597508 39.7619888
-16323 9871 6279 0.105691817248501 0.105691817248501 -104.9597508 39.7619888 -104.9609873 39.7619907
-16324 6279 9872 0.052158145666091 0.052158145666091 -104.9609873 39.7619907 -104.9615975 39.7619888
-16325 9872 1044 0.0524997416021315 0.0524997416021315 -104.9615975 39.7619888 -104.9622117 39.7619898
-16326 1044 3906 0.105460879039182 0.105460879039182 -104.9622117 39.7619898 -104.9634455 39.7619888
-16329 5403 7356 0.10569318364656 0.10569318364656 -104.9659547 39.7619898 -104.9671912 39.761995
-16330 7356 6784 0.104889107310835 0.104889107310835 -104.9671912 39.761995 -104.9684183 39.7619991
-16331 6784 5124 0.210810768544514 0.210810768544514 -104.9684183 39.7619991 -104.9708846 39.7620022
-20721 9340 10905 0.00789820611305507 0.00789820611305507 -105.0251701 39.7620923 -105.0250777 39.7620918
-20723 10753 9339 0.007875732855517 0.007875732855517 -105.0250779 39.761939 -105.0251698 39.7619441
-20728 9342 9396 0.0106743790650573 0.0106743790650573 -105.02517 39.7633265 -105.0252844 39.763365
-20729 9396 10915 0.00762676803615786 0.00762676803615786 -105.0252844 39.763365 -105.0253686 39.7633877
-20731 10886 10916 0.00379288018005415 0.00379288018005415 -105.0396293 39.7653159 -105.0396012 39.7652895
-20732 10916 10888 0.0491926355480291 0.0491926355480291 -105.0396012 39.7652895 -105.0396012 39.7648471
-20733 10888 10897 0.0175392611655491 0.0175392611655491 -105.0396012 39.7648471 -105.039396 39.7648479
-20735 5884 5882 0.0407543500383345 0.0407543500383345 -105.026131 39.7635199 -105.0256867 39.7633869
-20739 10916 10896 0.0428179717864665 0.0428179717864665 -105.0396012 39.7652895 -105.0393975 39.7656413
-19515 10538 10539 0.0270370607457707 0.0270370607457707 -104.9881977 39.7087839 -104.9878821 39.7087971
-19519 10540 10541 0.0721562499053708 0.0721562499053708 -104.9885677 39.7101805 -104.9885837 39.7095317
-19520 6858 10542 0.00731747119062453 0.00731747119062453 -104.9894917 39.710249 -104.9894904 39.7101832
-19521 10542 10543 0.072308027249243 0.072308027249243 -104.9894904 39.7101832 -104.9895038 39.709533
-19641 10598 10599 0.0410277962156296 0.0410277962156296 -104.9881774 39.7071587 -104.9879173 39.7068487
-19647 10527 10603 0.00759964014854772 0.00759964014854772 -104.9883695 39.7068128 -104.9882807 39.7068108
-8 8 9 0.136291899256532 0.136291899256532 -105.0236282 39.746344 -105.0252223 39.7463521
-9 9 10 0.137589063327607 0.137589063327607 -105.0252223 39.7463521 -105.0268316 39.7463558
-10 10 11 0.132825874246234 0.132825874246234 -105.0268316 39.7463558 -105.0283851 39.746369
-18420 9372 1692 0.204432374496239 0.204432374496239 -105.0410671 39.769441 -105.0410724 39.7676025
-18421 1692 6881 0.204488584881531 0.204488584881531 -105.0410724 39.7676025 -105.0410645 39.7657635
-279 289 290 0.0346246156131069 0.0346246156131069 -105.0056941 39.7615954 -105.0053845 39.7613946
-280 290 291 0.0090342150661118 0.0090342150661118 -105.0053845 39.7613946 -105.0052999 39.7613459
-287 297 298 0.583705095697001 0.583705095697001 -104.999633 39.7829256 -105.0063925 39.7836829
-288 298 299 0.306214311798175 0.306214311798175 -105.0063925 39.7836829 -105.0099714 39.7835424
-290 300 106 0.00724031766776508 0.00724031766776508 -104.931659 39.700286 -104.931654 39.700221
-16839 9888 10020 0.0079899169832474 0.0079899169832474 -104.9706065 39.7033361 -104.9706252 39.7032657
-292 301 302 0.137922345506014 0.137922345506014 -104.9405292 39.7778793 -104.939982 39.7790462
-293 302 303 0.195856797695859 0.195856797695859 -104.939982 39.7790462 -104.9380643 39.7800108
-295 304 305 0.071509984134022 0.071509984134022 -105.0045998 39.7618374 -105.0052248 39.7614099
-296 305 291 0.00958395052624692 0.00958395052624692 -105.0052248 39.7614099 -105.0052999 39.7613459
-298 306 307 0.132706668323714 0.132706668323714 -105.029097 39.762348 -105.0279141 39.763121
-300 308 309 0.180558406302622 0.180558406302622 -105.0162105 39.7255543 -105.0183133 39.7254091
-13564 3088 497 0.0577004807279618 0.0577004807279618 -105.0149714 39.7291028 -105.0147909 39.7286028
-549 543 426 0.352446625998258 0.352446625998258 -105.0222025 39.7405643 -105.0252144 39.7427283
-552 546 547 0.162031197296959 0.162031197296959 -104.9250834 39.7051054 -104.926976 39.7050482
-555 549 550 0.0907371722674166 0.0907371722674166 -104.999187 39.7014274 -104.998222 39.701766
-16080 9284 9816 0.896094060874208 0.896094060874208 -104.9725733 39.7796422 -104.962098 39.7800102
-922 936 937 0.0492564901299232 0.0492564901299232 -104.9740886 39.7320473 -104.9735126 39.732045
-923 937 938 0.0472982580528762 0.0472982580528762 -104.9735126 39.732045 -104.9729595 39.7320427
-924 938 939 0.0491354084196454 0.0491354084196454 -104.9729595 39.7320427 -104.972385 39.7320506
-925 939 940 0.0508720309451131 0.0508720309451131 -104.972385 39.7320506 -104.9717901 39.7320505
-926 940 941 0.0492045261244582 0.0492045261244582 -104.9717901 39.7320505 -104.9712147 39.7320508
-928 942 943 0.0497647165539241 0.0497647165539241 -104.9706365 39.7320717 -104.9700547 39.7320615
-929 943 944 0.0490705088651407 0.0490705088651407 -104.9700547 39.7320615 -104.969481 39.732052
-930 944 945 0.0603455693296164 0.0603455693296164 -104.969481 39.732052 -104.9687757 39.7320341
-931 946 947 0.0401316151990327 0.0401316151990327 -104.954535 39.732087 -104.9540658 39.7320945
-933 948 949 0.0998226264147839 0.0998226264147839 -104.9528876 39.7321058 -104.9517203 39.7320992
-934 949 950 0.0983576522120727 0.0983576522120727 -104.9517203 39.7320992 -104.9505701 39.7320992
-15935 9756 9757 0.156652526688463 0.156652526688463 -104.9962839 39.7001148 -104.9945244 39.7005048
-2725 2680 2681 0.0108684198063562 0.0108684198063562 -104.9781521 39.7512002 -104.9782507 39.7512619
-2726 2681 2682 0.048953084737917 0.048953084737917 -104.9782507 39.7512619 -104.9786543 39.7515742
-2727 2682 2683 0.0539629704453868 0.0539629704453868 -104.9786543 39.7515742 -104.9790985 39.751919
-2728 2683 2684 0.0523967582185389 0.0523967582185389 -104.9790985 39.751919 -104.9795298 39.7522538
-2730 2685 2686 0.0561874543205358 0.0561874543205358 -104.9799803 39.7525937 -104.9804627 39.7529369
-2731 2686 2687 0.0505746825733151 0.0505746825733151 -104.9804627 39.7529369 -104.9808835 39.7532566
-2732 2687 2688 0.0532702991765301 0.0532702991765301 -104.9808835 39.7532566 -104.9813184 39.7535997
-2733 2688 2689 0.0520434204860384 0.0520434204860384 -104.9813184 39.7535997 -104.9817462 39.7539327
-2734 2689 2690 0.0469426670134342 0.0469426670134342 -104.9817462 39.7539327 -104.9821311 39.7542338
-2735 2690 2691 0.0055983554055492 0.0055983554055492 -104.9821311 39.7542338 -104.9821794 39.7542678
-2736 2691 2692 0.0527791994653692 0.0527791994653692 -104.9821794 39.7542678 -104.9826233 39.7545977
-2737 2692 2693 0.0530982869497539 0.0530982869497539 -104.9826233 39.7545977 -104.9830605 39.7549369
-2738 2693 2694 0.0517656440902012 0.0517656440902012 -104.9830605 39.7549369 -104.9834919 39.7552636
-2740 2695 2696 0.0564222695417846 0.0564222695417846 -104.9839243 39.7555928 -104.984388 39.7559539
-2741 2696 2697 0.0491123681137852 0.0491123681137852 -104.984388 39.7559539 -104.9847927 39.7562674
-2743 2698 2563 0.102019026624601 0.102019026624601 -104.9872963 39.7637011 -104.9865077 39.7643898
-2745 2699 2700 0.132875620799413 0.132875620799413 -105.023737 39.7729356 -105.0236369 39.7741281
-2746 2700 2701 0.135383174760531 0.135383174760531 -105.0236369 39.7741281 -105.0236677 39.7753454
-2747 2701 2702 0.142428760025563 0.142428760025563 -105.0236677 39.7753454 -105.0236021 39.7766253
-2749 2703 2704 0.0110418183352839 0.0110418183352839 -105.0229204 39.7607336 -105.0229197 39.7608329
-3232 1186 3146 0.0222724242580952 0.0222724242580952 -104.9648143 39.7271028 -104.9648136 39.7273031
-3233 3146 3147 0.199414112058729 0.199414112058729 -104.9648136 39.7273031 -104.9648461 39.7290963
-3235 3148 3149 0.202164772668483 0.202164772668483 -104.9651624 39.7219764 -104.9651708 39.7201583
-3236 3149 3150 0.200873635711822 0.200873635711822 -104.9651708 39.7201583 -104.9651706 39.7183518
-3238 1549 3151 0.20099284178908 0.20099284178908 -104.9813041 39.7765427 -104.9812831 39.7783502
-3239 3151 284 0.102708547785912 0.102708547785912 -104.9812831 39.7783502 -104.9813127 39.7792736
-3241 3152 3153 0.190699299195112 0.190699299195112 -104.981211 39.7801495 -104.981211 39.7818645
-3242 3153 3154 0.20682256355895 0.20682256355895 -104.981211 39.7818645 -104.981211 39.7837245
-3244 3155 3156 0.180582058742099 0.180582058742099 -104.9811238 39.7224897 -104.9811324 39.7241137
-3245 3156 3157 0.169576673169674 0.169576673169674 -104.9811324 39.7241137 -104.9811181 39.7256387
-3246 3157 3158 0.182296097160239 0.182296097160239 -104.9811181 39.7256387 -104.9811306 39.7272781
-3247 3158 3159 0.198872141197801 0.198872141197801 -104.9811306 39.7272781 -104.9811297 39.7290666
-3248 3159 3160 0.150969541792736 0.150969541792736 -104.9811297 39.7290666 -104.9811325 39.7304243
-3250 3161 3162 0.20389937284006 0.20389937284006 -104.9814586 39.7164952 -104.9814669 39.7183289
-14826 8301 6748 0.0667725814392886 0.0667725814392886 -105.0260395 39.7548296 -105.0268206 39.7548296
-14827 6748 7911 0.0672145953526644 0.0672145953526644 -105.0268206 39.7548296 -105.0276068 39.7548215
-14828 7911 6148 0.0663282745787247 0.0663282745787247 -105.0276068 39.7548215 -105.0283827 39.754823
-258 257 266 0.0587628088830451 0.0587628088830451 -104.9487596 39.6897096 -104.9494463 39.6897162
-19749 647 7274 0.134298165118703 0.134298165118703 -104.9337694 39.7413613 -104.9337866 39.742569
-19750 7274 1989 0.0916188684792704 0.0916188684792704 -104.9337866 39.742569 -104.933775 39.7433929
-19751 1989 1973 0.0380843237979454 0.0380843237979454 -104.933775 39.7433929 -104.9337742 39.7437354
-19752 1973 4593 0.133556226393108 0.133556226393108 -104.9337742 39.7437354 -104.9337742 39.7449365
-19753 4593 6480 0.132288869732613 0.132288869732613 -104.9337742 39.7449365 -104.9337711 39.7461262
-19754 6480 2468 0.142585895231316 0.142585895231316 -104.9337711 39.7461262 -104.9337661 39.7474085
-19758 9421 959 0.172665861332853 0.172665861332853 -104.9434425 39.7336457 -104.9434319 39.7320929
-19759 959 10645 0.13147788241291 0.13147788241291 -104.9434319 39.7320929 -104.9434259 39.7309105
-19760 1208 9304 0.168127340065809 0.168127340065809 -104.9434426 39.7271196 -104.9434479 39.7256076
-20582 10869 10849 0.0156424449925145 0.0156424449925145 -105.0248912 39.7612876 -105.0250742 39.7612881
-19762 9148 5948 0.203948884455816 0.203948884455816 -104.9327781 39.7292306 -104.9327968 39.7310647
-19763 5948 5140 0.230511938313211 0.230511938313211 -104.9327968 39.7310647 -104.9325581 39.7331296
-19771 9419 957 0.173152824232778 0.173152824232778 -104.944537 39.7336514 -104.944539 39.7320942
-19772 957 8866 0.177567389214567 0.177567389214567 -104.944539 39.7320942 -104.9445422 39.7304973
-19773 8866 3772 0.153916736097948 0.153916736097948 -104.9445422 39.7304973 -104.9445477 39.7291131
-19774 3772 10250 0.199306990270457 0.199306990270457 -104.9445477 39.7291131 -104.9445396 39.7273207
-19776 5481 9962 0.172319939483889 0.172319939483889 -104.9592702 39.7383938 -104.9592628 39.7399435
-19784 10633 5611 0.0523352586472612 0.0523352586472612 -105.0021797 39.732604 -105.0015677 39.7326006
-19785 5611 10632 0.0574818788883128 0.0574818788883128 -105.0015677 39.7326006 -105.0008955 39.7325996
-19786 10632 3948 0.0628606527024246 0.0628606527024246 -105.0008955 39.7325996 -105.0001604 39.7325985
-19788 5471 9476 0.170862748175182 0.170862748175182 -104.9724345 39.7384108 -104.9724291 39.7368742
-19795 10242 7118 0.176747024157438 0.176747024157438 -104.9976043 39.7336771 -104.9975929 39.7352666
-19797 10241 6597 0.176287163937986 0.176287163937986 -104.9971028 39.7336811 -104.9970197 39.732097
-19798 6597 8052 0.177501084527478 0.177501084527478 -104.9970197 39.732097 -104.9970142 39.7305007
-19799 8052 8772 0.17769668863416 0.17769668863416 -104.9970142 39.7305007 -104.9969955 39.7289027
-20115 7697 7687 0.0337511699796145 0.0337511699796145 -104.9476781 39.7401632 -104.9472834 39.7401592
-19903 5589 10662 0.0571161687994488 0.0571161687994488 -105.0439287 39.736644 -105.0445966 39.7366511
-19904 10662 7532 0.0504117571952022 0.0504117571952022 -105.0445966 39.7366511 -105.0451861 39.7366574
-19905 7532 10677 0.0997820208770486 0.0997820208770486 -105.0451861 39.7366574 -105.0463515 39.7367034
-19909 2313 6581 0.0799825399923036 0.0799825399923036 -105.0128687 39.7314768 -105.0128679 39.7321961
-19911 9640 7119 0.178268282456568 0.178268282456568 -104.998165 39.7368735 -104.9981597 39.7352703
-19912 7119 10244 0.176467674531692 0.176467674531692 -104.9981597 39.7352703 -104.9981677 39.7336833
-19924 625 10679 0.208701850480872 0.208701850480872 -105.0357989 39.7365856 -105.0358012 39.7384625
-3596 897 3446 0.139044776802754 0.139044776802754 -104.9462766 39.7644635 -104.9462506 39.7657138
-3598 2803 3447 0.126707874592684 0.126707874592684 -104.9462404 39.7669537 -104.9462338 39.7680932
-3599 3447 3448 0.123301295397385 0.123301295397385 -104.9462338 39.7680932 -104.9462506 39.769202
-3601 3449 3450 0.173676950071542 0.173676950071542 -104.9461482 39.7162465 -104.9461569 39.7178084
-3602 3450 2355 0.178205364659248 0.178205364659248 -104.9461569 39.7178084 -104.9461715 39.719411
-3603 2355 3451 0.173197360497638 0.173197360497638 -104.9461715 39.719411 -104.9461741 39.7209686
-19562 10565 7475 0.0791516149409225 0.0791516149409225 -104.9895118 39.7091548 -104.9897492 39.7084668
-3604 3451 3452 0.173541943088937 0.173541943088937 -104.9461741 39.7209686 -104.9461731 39.7225293
-17079 9872 1162 0.139149030623918 0.139149030623918 -104.9615975 39.7619888 -104.9615772 39.7632401
-3605 3452 3453 0.1769778659128 0.1769778659128 -104.9461731 39.7225293 -104.9461741 39.7241209
-3606 3453 3454 0.165627970000561 0.165627970000561 -104.9461741 39.7241209 -104.946186 39.7256104
-3607 3454 1205 0.168543363105219 0.168543363105219 -104.946186 39.7256104 -104.9462015 39.7271261
-3608 1205 3455 0.0221544930319224 0.0221544930319224 -104.9462015 39.7271261 -104.9461963 39.7273253
-3609 3455 3456 0.199430319568372 0.199430319568372 -104.9461963 39.7273253 -104.9461853 39.7291188
-3610 3456 3457 0.153671457388635 0.153671457388635 -104.9461853 39.7291188 -104.946187 39.7305008
-3611 3457 954 0.177011997745418 0.177011997745418 -104.946187 39.7305008 -104.9461808 39.7320927
-3616 3461 3023 0.066721008314693 0.066721008314693 -104.9461758 39.7383438 -104.9461672 39.7389438
-3617 3023 609 0.0626815132610695 0.0626815132610695 -104.9461672 39.7389438 -104.9461712 39.7395075
-3618 609 3465 0.0706324711687883 0.0706324711687883 -104.9461712 39.7395075 -104.9461659 39.7401427
-3620 3466 3467 0.0872559719077514 0.0872559719077514 -104.9459057 39.7609696 -104.9459001 39.7617543
-3621 3467 3468 0.0185752884131515 0.0185752884131515 -104.9459001 39.7617543 -104.9458947 39.7619213
-3624 3470 3471 0.137381540377109 0.137381540377109 -104.9464883 39.7557063 -104.9464855 39.7569418
-3625 3471 3472 0.139227388345715 0.139227388345715 -104.9464855 39.7569418 -104.9464826 39.7581939
-3627 3473 2394 0.0888475437763938 0.0888475437763938 -104.9464666 39.7730919 -104.9464482 39.7738908
-3628 2394 3474 0.138668820339117 0.138668820339117 -104.9464482 39.7738908 -104.9464139 39.7751376
-3630 752 1572 0.142095074047717 0.142095074047717 -104.9464409 39.77641 -104.9464121 39.7776877
-3636 1922 3478 0.201186325897418 0.201186325897418 -104.9639994 39.7074818 -104.9639908 39.7056725
-3639 3479 78 0.204132972246117 0.204132972246117 -104.9639986 39.7020562 -104.9640072 39.7002204
-3640 78 3480 0.203867249894849 0.203867249894849 -104.9640072 39.7002204 -104.9640443 39.6983872
-3641 3480 3481 0.201309535256297 0.201309535256297 -104.9640443 39.6983872 -104.9640554 39.6965768
-3642 3481 3482 0.20059690465602 0.20059690465602 -104.9640554 39.6965768 -104.9640471 39.6947728
-3643 3482 3483 0.19983968701354 0.19983968701354 -104.9640471 39.6947728 -104.9640501 39.6929756
-3645 3484 3485 0.206291326448342 0.206291326448342 -104.9640755 39.691151 -104.9637153 39.6893166
-17801 8859 9953 0.0450786858997054 0.0450786858997054 -104.9873914 39.7526692 -104.9873896 39.7522638
-3647 1956 3486 0.372627158727207 0.372627158727207 -104.9295943 39.7085824 -104.9294222 39.7052339
-3649 3487 3488 0.176001514646942 0.176001514646942 -104.9293078 39.7162471 -104.9293331 39.7146644
-3652 3491 3492 0.0183360753269697 0.0183360753269697 -104.9293114 39.7113416 -104.929311 39.7111767
-3653 3492 1957 0.294352299971408 0.294352299971408 -104.929311 39.7111767 -104.9292853 39.7085296
-3655 1514 1794 0.180158106731211 0.180158106731211 -104.9278643 39.6960978 -104.9284394 39.6945392
-3657 3493 3494 0.410250831833552 0.410250831833552 -104.9285338 39.6930004 -104.9293234 39.6893613
-3658 3494 3495 0.80930180387284 0.80930180387284 -104.9293234 39.6893613 -104.929634 39.682087
-3660 3497 3498 0.0969369694749486 0.0969369694749486 -104.9488372 39.6983858 -104.9477042 39.6983792
-3661 3498 3499 0.0991356893770485 0.0991356893770485 -104.9477042 39.6983792 -104.9465455 39.6983726
-3662 3499 3500 0.0998795294298673 0.0998795294298673 -104.9465455 39.6983726 -104.9453782 39.6983858
-3663 3500 3501 0.0512305304785401 0.0512305304785401 -104.9453782 39.6983858 -104.9447794 39.6983858
-3664 3501 3502 0.04790242821524 0.04790242821524 -104.9447794 39.6983858 -104.9442195 39.6983858
-3665 3502 3503 0.0976724268185372 0.0976724268185372 -104.9442195 39.6983858 -104.943078 39.698399
-3666 3503 3504 0.099556042023676 0.099556042023676 -104.943078 39.698399 -104.9419144 39.6983911
-3667 3504 3505 0.0928685437479174 0.0928685437479174 -104.9419144 39.6983911 -104.940829 39.698381
-3668 3505 3506 0.0161263903021828 0.0161263903021828 -104.940829 39.698381 -104.9406406 39.6983765
-3670 3507 3508 0.0452502277318962 0.0452502277318962 -104.9686775 39.698382 -104.9681486 39.6983823
-3673 3510 3511 0.00276384344441178 0.00276384344441178 -104.9675508 39.6983827 -104.9675186 39.6983807
-3674 3511 3512 0.10075109326777 0.10075109326777 -104.9675186 39.6983807 -104.966341 39.698385
-3675 3512 3513 0.0463453549611142 0.0463453549611142 -104.966341 39.698385 -104.9657993 39.6983855
-3676 3513 3514 0.0488777906121745 0.0488777906121745 -104.9657993 39.6983855 -104.965228 39.698386
-3677 3514 3515 0.0517011274556552 0.0517011274556552 -104.965228 39.698386 -104.9646237 39.6983866
-3678 3515 3480 0.0495708012211316 0.0495708012211316 -104.9646237 39.6983866 -104.9640443 39.6983872
-3679 3480 3516 0.0493402083699287 0.0493402083699287 -104.9640443 39.6983872 -104.9634676 39.6983891
-3680 3516 3517 0.0507690156276584 0.0507690156276584 -104.9634676 39.6983891 -104.9628742 39.6983911
-3681 3517 3518 0.0480408906902884 0.0480408906902884 -104.9628742 39.6983911 -104.9623127 39.6983876
-3682 3518 3519 0.0499402493817724 0.0499402493817724 -104.9623127 39.6983876 -104.961729 39.698384
-3683 3519 3520 0.0491944164243011 0.0491944164243011 -104.961729 39.698384 -104.961154 39.6983849
-3685 3521 3522 0.048707440700188 0.048707440700188 -104.9605624 39.6983858 -104.9599931 39.6983883
-3686 3522 3523 0.0553123927733894 0.0553123927733894 -104.9599931 39.6983883 -104.9593466 39.6983911
-3688 3524 3525 0.0491959341758901 0.0491959341758901 -104.9586741 39.6983954 -104.9580991 39.698399
-3689 3525 3526 0.0471666433723512 0.0471666433723512 -104.9580991 39.698399 -104.9575478 39.698399
-3690 3526 3527 0.0512305206815533 0.0512305206815533 -104.9575478 39.698399 -104.956949 39.698399
-3693 2737 3529 0.051933950168584 0.051933950168584 -104.9558324 39.6983924 -104.9552447 39.6982755
-3694 3529 3530 0.02212553176718 0.02212553176718 -104.9552447 39.6982755 -104.9550292 39.6981655
-3695 3530 3531 0.0926927616463166 0.0926927616463166 -104.9550292 39.6981655 -104.954611 39.6973965
-3698 3533 3534 0.0505032949697016 0.0505032949697016 -104.982132 39.6984066 -104.9815417 39.6984066
-3699 3534 3535 0.0486395723695605 0.0486395723695605 -104.9815417 39.6984066 -104.9809732 39.6984099
-3700 3535 3536 0.0490245580059416 0.0490245580059416 -104.9809732 39.6984099 -104.9804002 39.6984132
-3701 3536 3537 0.0505772192147856 0.0505772192147856 -104.9804002 39.6984132 -104.9798091 39.6984199
-3703 3538 3540 0.0504276967004131 0.0504276967004131 -104.9792415 39.6984264 -104.9786521 39.6984298
-3705 3541 3542 0.0472106572615262 0.0472106572615262 -104.9780828 39.698433 -104.977531 39.6984299
-3706 3542 1776 0.0526607102662498 0.0526607102662498 -104.977531 39.6984299 -104.9769155 39.6984264
-3707 1776 3543 0.0501355164587406 0.0501355164587406 -104.9769155 39.6984264 -104.9763295 39.6984254
-3708 3543 3545 0.0479683302933595 0.0479683302933595 -104.9763295 39.6984254 -104.9757691 39.698412
-3709 3545 3546 0.0512089379810606 0.0512089379810606 -104.9757691 39.698412 -104.9751709 39.6984277
-3712 3547 3548 0.0501783172118128 0.0501783172118128 -104.9739907 39.6984301 -104.9734042 39.698429
-3714 3549 3550 0.0951894457465396 0.0951894457465396 -104.932762 39.698444 -104.931651 39.698398
-3716 3374 3551 0.137804864391147 0.137804864391147 -104.9240963 39.6988121 -104.9226973 39.6994263
-3717 3552 3553 0.0519171995444708 0.0519171995444708 -104.9769434 39.7546258 -104.9763361 39.7546219
-3718 3553 3554 0.0504125238991067 0.0504125238991067 -104.9763361 39.7546219 -104.9757464 39.7546182
-3719 3554 3555 0.0509345511135035 0.0509345511135035 -104.9757464 39.7546182 -104.9751506 39.7546225
-3720 3555 3556 0.0352813695033733 0.0352813695033733 -104.9751506 39.7546225 -104.9747379 39.7546254
-3721 3556 3557 0.0165592866582096 0.0165592866582096 -104.9747379 39.7546254 -104.9745442 39.7546268
-3722 3557 3558 0.0492318634139881 0.0492318634139881 -104.9745442 39.7546268 -104.9739683 39.7546244
-3724 2895 3559 0.10435477566087 0.10435477566087 -104.9733531 39.7545278 -104.9721334 39.7544893
-3725 3559 3560 0.106943183049813 0.106943183049813 -104.9721334 39.7544893 -104.9708824 39.7544863
-3726 3560 3561 0.104660660979737 0.104660660979737 -104.9708824 39.7544863 -104.9696581 39.7544835
-3727 3561 3562 0.110121719044693 0.110121719044693 -104.9696581 39.7544835 -104.9683703 39.7544592
-3728 3562 3563 0.102966459525542 0.102966459525542 -104.9683703 39.7544592 -104.9671659 39.7544703
-3730 3564 3565 0.0562722873891167 0.0562722873891167 -104.9659688 39.7544499 -104.9653106 39.7544428
-3735 3568 3569 0.0531044201649232 0.0531044201649232 -104.9616097 39.7544552 -104.9609889 39.7544725
-3736 3569 3570 0.106391147104451 0.106391147104451 -104.9609889 39.7544725 -104.9597446 39.7544534
-3737 3570 3571 0.101252017782574 0.101252017782574 -104.9597446 39.7544534 -104.9585602 39.75446
-3738 3571 3323 0.106405710576167 0.106405710576167 -104.9585602 39.75446 -104.9573156 39.7544732
-3739 3323 3572 0.102008288172629 0.102008288172629 -104.9573156 39.7544732 -104.9561226 39.7544534
-3740 3572 3573 0.10165616841443 0.10165616841443 -104.9561226 39.7544534 -104.954935 39.7545002
-3741 3573 2074 0.102582871487582 0.102582871487582 -104.954935 39.7545002 -104.953735 39.7545002
-3742 2074 2671 0.108231570849142 0.108231570849142 -104.953735 39.7545002 -104.9524691 39.7544839
-3743 2671 3574 0.10456159833902 0.10456159833902 -104.9524691 39.7544839 -104.951246 39.7544757
-5002 115 4548 0.0219059413647985 0.0219059413647985 -105.0217118 39.7303058 -105.0217136 39.7305028
-3744 3574 3575 0.112649473969198 0.112649473969198 -104.951246 39.7544757 -104.9499292 39.7544371
-3748 3469 3578 0.102738780677217 0.102738780677217 -104.9464912 39.7544409 -104.9452895 39.7544277
-3751 848 3580 0.194594151891157 0.194594151891157 -104.9429842 39.7544341 -104.9407092 39.754494
-3780 799 3582 0.202016106794537 0.202016106794537 -104.9293286 39.7528556 -104.92935 39.7546723
-3753 3581 3583 0.0933177632696428 0.0933177632696428 -104.9405163 39.7545798 -104.9394304 39.7546656
-3756 3586 3587 0.0427524561216555 0.0427524561216555 -105.0238257 39.7607202 -105.0243209 39.7607742
-20307 3851 3852 0.0199150113624835 0.0199150113624835 -105.0428243 39.7763674 -105.0428243 39.7765465
-3757 3587 3588 0.00652614157776479 0.00652614157776479 -105.0243209 39.7607742 -105.0243965 39.7607824
-3758 3588 3589 0.0165416326790114 0.0165416326790114 -105.0243965 39.7607824 -105.0245881 39.7608033
-3759 3589 3590 0.0292914453635219 0.0292914453635219 -105.0245881 39.7608033 -105.0249274 39.7608402
-3760 3590 3591 0.012398142936734 0.012398142936734 -105.0249274 39.7608402 -105.025071 39.7608559
-3761 3591 3592 0.00808918004643223 0.00808918004643223 -105.025071 39.7608559 -105.0251647 39.7608661
-3762 3592 3593 0.0105968786869326 0.0105968786869326 -105.0251647 39.7608661 -105.0252868 39.7608826
-3764 3487 3594 0.175200690864457 0.175200690864457 -104.9293078 39.7162471 -104.9293175 39.7178227
-17310 5684 5685 0.200644913348264 0.200644913348264 -104.9611511 39.6947781 -104.9611673 39.6929737
-3765 3594 2339 0.174981229925885 0.174981229925885 -104.9293175 39.7178227 -104.9293022 39.7193963
-3768 3596 3597 0.239259126523314 0.239259126523314 -104.9293972 39.7231683 -104.9294053 39.72532
-3770 1985 1969 0.0388238770836811 0.0388238770836811 -104.9301272 39.7433797 -104.930135 39.7437288
-3771 1969 3598 0.103685036459381 0.103685036459381 -104.930135 39.7437288 -104.9301576 39.7446611
-3772 3598 3599 0.103278210249803 0.103278210249803 -104.9301576 39.7446611 -104.9301608 39.7455899
-3774 3600 685 0.204822140654993 0.204822140654993 -104.9297917 39.7401253 -104.9297839 39.7419673
-3775 685 1984 0.157051714392723 0.157051714392723 -104.9297839 39.7419673 -104.9297839 39.7433797
-3777 2473 3601 0.204732098938096 0.204732098938096 -104.9293385 39.7474063 -104.9293385 39.7492475
-3778 3601 3602 0.203258463693205 0.203258463693205 -104.9293385 39.7492475 -104.9293214 39.7510754
-3779 3602 799 0.197950165384785 0.197950165384785 -104.9293214 39.7510754 -104.9293286 39.7528556
-3781 3582 3603 0.209363914186111 0.209363914186111 -104.92935 39.7546723 -104.9293903 39.7565549
-3782 3603 3604 0.202974468009462 0.202974468009462 -104.9293903 39.7565549 -104.9293663 39.7583802
-3783 3604 3063 0.201030651985273 0.201030651985273 -104.9293663 39.7583802 -104.9293577 39.7601881
-3784 3063 3605 0.183452467298283 0.183452467298283 -104.9293577 39.7601881 -104.9293844 39.7618378
-3785 3605 3609 0.0173247613422977 0.0173247613422977 -104.9293844 39.7618378 -104.9293603 39.7619925
-3786 3609 3610 0.100167424900963 0.100167424900963 -104.9293603 39.7619925 -104.9293406 39.7628932
-3787 3610 1148 0.0998182719974527 0.0998182719974527 -104.9293406 39.7628932 -104.9293749 39.7637905
-3798 3618 3619 1.41244277904247 1.41244277904247 -104.98046 39.6894076 -104.9804715 39.6767052
-3799 3620 3621 0.200419085699923 0.200419085699923 -104.9803501 39.716491 -104.9803587 39.7146886
-3800 3621 3083 0.197049820413636 0.197049820413636 -104.9803587 39.7146886 -104.9803943 39.7129167
-3806 3250 3625 0.214852973763206 0.214852973763206 -104.9804174 39.7039537 -104.9804286 39.7020215
-3807 3625 37 0.19341482884534 0.19341482884534 -104.9804286 39.7020215 -104.9804174 39.7002821
-3808 37 3536 0.207817408343139 0.207817408343139 -104.9804174 39.7002821 -104.9804002 39.6984132
-3809 3536 3626 0.197537787183869 0.197537787183869 -104.9804002 39.6984132 -104.9804002 39.6966367
-3810 3626 3627 0.0725803332096263 0.0725803332096263 -104.9804002 39.6966367 -104.9805353 39.6959923
-3812 3628 3629 0.0377891893344826 0.0377891893344826 -104.9558725 39.7153466 -104.9554348 39.7153004
-3814 3630 108 0.222508950073657 0.222508950073657 -104.9286229 39.7018847 -104.9272013 39.700209
-3815 108 3631 0.48374336677931 0.48374336677931 -104.9272013 39.700209 -104.9237198 39.6967811
-3816 3631 3632 1.29923590650812 1.29923590650812 -104.9237198 39.6967811 -104.9115603 39.6897825
-17118 3959 510 0.232935824119298 0.232935824119298 -104.957513 39.7479253 -104.9547886 39.7479501
-4428 4136 4137 0.173313517100692 0.173313517100692 -104.9505787 39.7367922 -104.9506214 39.7383505
-4429 4137 4138 0.202530185785573 0.202530185785573 -104.9506214 39.7383505 -104.9506563 39.7401717
-18158 6309 10170 0.40356001102466 0.40356001102466 -105.0129465 39.7874317 -105.0129519 39.791061
-4432 2389 4140 0.139183902890425 0.139183902890425 -104.950844 39.7738769 -104.9508372 39.7751286
-4434 4141 4142 0.197054107936505 0.197054107936505 -104.982643 39.7165018 -104.9827054 39.7147303
-4438 4144 4145 0.0537117632250494 0.0537117632250494 -104.9856225 39.7209124 -104.9849945 39.7209102
-4439 4145 965 0.101471161400112 0.101471161400112 -104.9849945 39.7209102 -104.9838084 39.7209313
-4440 965 4146 0.104100628512796 0.104100628512796 -104.9838084 39.7209313 -104.9825915 39.7209119
-4441 4146 3163 0.0969051144320847 0.0969051144320847 -104.9825915 39.7209119 -104.9814586 39.7208987
-4442 3163 4147 0.101372524256092 0.101372524256092 -104.9814586 39.7208987 -104.9802738 39.7209242
-4443 4147 4148 0.0308326213261154 0.0308326213261154 -104.9802738 39.7209242 -104.9799133 39.7209242
-4445 3914 1051 0.113795014444698 0.113795014444698 -104.9633401 39.7209669 -104.9620097 39.7209801
-4446 1051 4149 0.10964029932362 0.10964029932362 -104.9620097 39.7209801 -104.9607278 39.7209872
-4449 4151 3345 0.104243278330047 0.104243278330047 -104.9582358 39.7209729 -104.957017 39.7209795
-4451 4152 4153 0.102419695022811 0.102419695022811 -104.9558113 39.720983 -104.9546138 39.7209795
-4452 4153 2058 0.103354746635848 0.103354746635848 -104.9546138 39.7209795 -104.9534054 39.7209872
-4453 2058 2644 0.104156201229462 0.104156201229462 -104.9534054 39.7209872 -104.9521876 39.720983
-4454 2644 4110 0.102077109293643 0.102077109293643 -104.9521876 39.720983 -104.9509941 39.7209851
-5804 5122 5123 0.00520045876973269 0.00520045876973269 -104.9708892 39.7607101 -104.9708859 39.7607568
-4455 4110 4154 0.102551400025576 0.102551400025576 -104.9509941 39.7209851 -104.9497951 39.7209768
-4458 4156 3451 0.102085683319337 0.102085683319337 -104.9473677 39.7209707 -104.9461741 39.7209686
-4459 3451 4157 0.103915702611829 0.103915702611829 -104.9461741 39.7209686 -104.9449591 39.7209686
-4460 4157 3881 0.104147627332173 0.104147627332173 -104.9449591 39.7209686 -104.9437414 39.7209645
-4461 3881 844 0.102547271473588 0.102547271473588 -104.9437414 39.7209645 -104.9425424 39.7209645
-4462 844 4158 0.103915708789956 0.103915708789956 -104.9425424 39.7209645 -104.9413274 39.7209645
-4463 4158 4159 0.0473715373473714 0.0473715373473714 -104.9413274 39.7209645 -104.9407748 39.7209356
-4465 4160 4161 0.0487952389865543 0.0487952389865543 -104.977542 39.720117 -104.9769715 39.7201202
-4466 4161 4162 0.0503092120983125 0.0503092120983125 -104.9769715 39.7201202 -104.9763833 39.7201236
-4467 4162 4163 0.0998399649224705 0.0998399649224705 -104.9763833 39.7201236 -104.975216 39.7201302
-4470 991 4165 0.0616573964011522 0.0616573964011522 -104.9740667 39.720134 -104.9733458 39.720134
-4471 4165 4166 0.0374515064164708 0.0374515064164708 -104.9733458 39.720134 -104.972908 39.7201406
-4472 4166 4167 0.0500586202169859 0.0500586202169859 -104.972908 39.7201406 -104.9723279 39.7200808
-4473 4167 4168 0.0490747432154895 0.0490747432154895 -104.9723279 39.7200808 -104.9717542 39.7200883
-4474 4168 1546 0.0500170304502106 0.0500170304502106 -104.9717542 39.7200883 -104.9711694 39.7200886
-4475 1546 4169 0.0485801531295538 0.0485801531295538 -104.9711694 39.7200886 -104.9706014 39.7200889
-5773 5098 5099 0.136491222225544 0.136491222225544 -104.9779272 39.6923695 -104.9781101 39.6911501
-4479 4171 4172 0.0171013114970861 0.0171013114970861 -104.9681062 39.7200857 -104.9679063 39.7200823
-4480 4172 4173 0.100095278405447 0.100095278405447 -104.9679063 39.7200823 -104.966736 39.720087
-4481 4173 4174 0.0193707742575379 0.0193707742575379 -104.966736 39.720087 -104.9665271 39.7201543
-4482 4174 3125 0.0983746933912928 0.0983746933912928 -104.9665271 39.7201543 -104.9653769 39.7201543
-4483 3125 3149 0.017633000291927 0.017633000291927 -104.9653769 39.7201543 -104.9651708 39.7201583
-4485 3759 1483 0.205504619788951 0.205504619788951 -104.9912414 39.6966624 -104.9913183 39.6948152
-4486 1483 139 0.199306955290764 0.199306955290764 -104.9913183 39.6948152 -104.991354 39.693023
-3818 3634 3635 0.193271661183235 0.193271661183235 -104.9444999 39.7082421 -104.9460363 39.7095165
-3844 50 2744 0.0297683374213274 0.0297683374213274 -104.9541194 39.7002037 -104.9541587 39.6999377
-3819 3635 3636 0.259071020170312 0.259071020170312 -104.9460363 39.7095165 -104.9481992 39.7111474
-3820 3636 3637 0.220352934884474 0.220352934884474 -104.9481992 39.7111474 -104.9498644 39.7126594
-3821 3637 3638 0.0146799692899151 0.0146799692899151 -104.9498644 39.7126594 -104.9499674 39.712765
-3822 3638 3629 0.546064092681382 0.546064092681382 -104.9499674 39.712765 -104.9554348 39.7153004
-3823 3629 3628 0.0377891893344826 0.0377891893344826 -104.9554348 39.7153004 -104.9558725 39.7153466
-3848 3639 3640 0.0377019004254023 0.0377019004254023 -104.953288 39.6987674 -104.9529616 39.6985396
-3824 3628 3641 0.274746435577415 0.274746435577415 -104.9558725 39.7153466 -104.9590835 39.7152814
-3827 3643 3630 0.145379834812045 0.145379834812045 -104.9299023 39.7027452 -104.9286229 39.7018847
-3829 3644 3645 0.10937380292523 0.10937380292523 -105.0209565 39.7228992 -105.0209651 39.7238828
-3831 3646 3647 0.118367900276814 0.118367900276814 -105.0208928 39.7275233 -105.0208982 39.7264588
-3833 3648 3649 0.0133410304783532 0.0133410304783532 -104.9576929 39.7025901 -104.9575638 39.7025228
-3834 3649 3650 0.0429585103622675 0.0429585103622675 -104.9575638 39.7025228 -104.957148 39.7023062
-3835 3650 3651 0.0204151163658954 0.0204151163658954 -104.957148 39.7023062 -104.9569509 39.7022027
-3836 3651 3652 0.035861428044368 0.035861428044368 -104.9569509 39.7022027 -104.9565993 39.7020271
-3837 3652 3653 0.0519097060940613 0.0519097060940613 -104.9565993 39.7020271 -104.956048 39.7018321
-3838 3653 2733 0.0215181506261361 0.0215181506261361 -104.956048 39.7018321 -104.9558149 39.7017594
-3839 2733 3184 0.0284884125498342 0.0284884125498342 -104.9558149 39.7017594 -104.9555361 39.7016193
-3840 3184 3654 0.0523000942930375 0.0523000942930375 -104.9555361 39.7016193 -104.9550095 39.7013804
-3841 3654 3655 0.0449577371290542 0.0449577371290542 -104.9550095 39.7013804 -104.9546075 39.70112
-3842 3655 3656 0.0854917295991763 0.0854917295991763 -104.9546075 39.70112 -104.9541489 39.7004369
-3843 3656 50 0.0260531877334927 0.0260531877334927 -104.9541489 39.7004369 -104.9541194 39.7002037
-3845 2744 3657 0.0566089274642789 0.0566089274642789 -104.9541587 39.6999377 -104.9539423 39.6994566
-3846 3657 3658 0.0492739020617726 0.0492739020617726 -104.9539423 39.6994566 -104.9536997 39.6990547
-3849 3640 3660 0.0409815373213546 0.0409815373213546 -104.9529616 39.6985396 -104.9525869 39.69831
-3850 3660 3661 0.0430567519340905 0.0430567519340905 -104.9525869 39.69831 -104.9521932 39.6980688
-3851 3661 3662 0.0468129367556475 0.0468129367556475 -104.9521932 39.6980688 -104.9517941 39.6977808
-3852 3662 3663 0.0487340718514498 0.0487340718514498 -104.9517941 39.6977808 -104.9513786 39.697481
-3853 3663 3664 0.0766168893066023 0.0766168893066023 -104.9513786 39.697481 -104.9507 39.6970314
-3854 3664 3665 0.0775543535398568 0.0775543535398568 -104.9507 39.6970314 -104.9500131 39.6965763
-3856 2887 3666 0.0966953683989245 0.0966953683989245 -104.9729638 39.7478589 -104.9739808 39.7474784
-3857 3666 3667 0.0610272459393337 0.0610272459393337 -104.9739808 39.7474784 -104.9746946 39.7474748
-3860 3669 3670 0.0315853053568594 0.0315853053568594 -104.9757447 39.7475025 -104.976114 39.7474946
-3862 3671 3672 0.0504610774094253 0.0504610774094253 -104.9763685 39.7474986 -104.9769586 39.747508
-3863 3672 3673 0.0499084817958282 0.0499084817958282 -104.9769586 39.747508 -104.9775423 39.7475014
-3864 3673 3674 0.0598581313257637 0.0598581313257637 -104.9775423 39.7475014 -104.9782423 39.7475122
-3865 3674 3675 0.0415918035714469 0.0415918035714469 -104.9782423 39.7475122 -104.9787278 39.747536
-3866 3675 3676 0.0971838117715375 0.0971838117715375 -104.9787278 39.747536 -104.9798645 39.7475421
-3867 3676 3677 0.0757910145140814 0.0757910145140814 -104.9798645 39.7475421 -104.980751 39.7475439
-3868 3677 3678 0.0241351496511796 0.0241351496511796 -104.980751 39.7475439 -104.9810333 39.7475445
-3869 3678 3679 0.10921148844503 0.10921148844503 -104.9810333 39.7475445 -104.9823107 39.7475487
-3870 3679 3680 0.0604791133362521 0.0604791133362521 -104.9823107 39.7475487 -104.9830181 39.7475507
-3871 3680 3681 0.0497662614550786 0.0497662614550786 -104.9830181 39.7475507 -104.9836002 39.7475507
-3872 3681 3682 0.0284371260175335 0.0284371260175335 -104.9836002 39.7475507 -104.9839328 39.7475479
-3873 3682 3683 0.0775136719631998 0.0775136719631998 -104.9839328 39.7475479 -104.9848394 39.7475404
-3874 3683 3684 0.0986272672973807 0.0986272672973807 -104.9848394 39.7475404 -104.9859927 39.7475198
-3876 3686 1026 0.103637164673652 0.103637164673652 -104.9634548 39.7469475 -104.9622426 39.7469472
-5148 4657 4658 0.0518173498658282 0.0518173498658282 -105.0191606 39.7548276 -105.0191633 39.7552936
-3877 1026 3687 0.0559565437232701 0.0559565437232701 -104.9622426 39.7469472 -104.9615881 39.7469471
-3878 3687 3688 0.0511859173489266 0.0511859173489266 -104.9615881 39.7469471 -104.9609894 39.746947
-3879 3688 3689 0.0520066703615513 0.0520066703615513 -104.9609894 39.746947 -104.9603811 39.7469469
-3880 3689 3690 0.049253728288425 0.049253728288425 -104.9603811 39.7469469 -104.959805 39.7469468
-3882 2886 3691 0.113429848834015 0.113429848834015 -104.9722001 39.7469535 -104.970874 39.7469218
-3884 3215 3692 0.202752541360657 0.202752541360657 -104.9616918 39.7111011 -104.9617163 39.7092778
-3885 3692 1926 0.199353224720545 0.199353224720545 -104.9617163 39.7092778 -104.961729 39.707485
-3886 1926 3693 0.200351682125873 0.200351682125873 -104.961729 39.707485 -104.9617036 39.7056833
-3887 3693 3270 0.203854022504707 0.203854022504707 -104.9617036 39.7056833 -104.9616991 39.70385
-3888 3270 3694 0.200935067748901 0.200935067748901 -104.9616991 39.70385 -104.9616812 39.702043
-3890 83 3519 0.205087956532059 0.205087956532059 -104.961704 39.7002283 -104.961729 39.698384
-3892 3695 3696 0.201007421421966 0.201007421421966 -104.9617464 39.6965839 -104.961742 39.6947762
-3897 3217 3701 0.1352188342505 0.1352188342505 -104.9611082 39.7111011 -104.96184 39.712179
-3898 131 1718 0.251512260994622 0.251512260994622 -105.0097289 39.6931103 -105.0097345 39.6908484
-15946 9759 9762 0.240661719520644 0.240661719520644 -104.9977092 39.704984 -104.9986577 39.7070216
-3900 3702 3703 0.0933150678138448 0.0933150678138448 -105.0029777 39.7635862 -105.002975 39.7644254
-3901 3703 3704 0.137025546490973 0.137025546490973 -105.002975 39.7644254 -105.0029738 39.7656577
-3902 3704 3705 0.132801372713675 0.132801372713675 -105.0029738 39.7656577 -105.002967 39.766852
-3903 3705 1668 0.132757296812598 0.132757296812598 -105.002967 39.766852 -105.0029592 39.7680459
-3904 1668 3706 0.138337667643286 0.138337667643286 -105.0029592 39.7680459 -105.0029577 39.76929
-3905 3706 2449 0.137198901653783 0.137198901653783 -105.0029577 39.76929 -105.0029835 39.7705237
-3906 2449 3239 0.137027047572602 0.137027047572602 -105.0029835 39.7705237 -105.0029911 39.771756
-3909 3708 3709 0.0594114493059888 0.0594114493059888 -105.002935 39.7755303 -105.002935 39.7760646
-3910 3709 109 0.057220909251565 0.057220909251565 -105.002935 39.7760646 -105.002935 39.7765792
-3913 3711 3712 0.139485170169946 0.139485170169946 -104.9891861 39.7183575 -104.9908169 39.7183641
-3914 3712 2811 0.114534953425458 0.114534953425458 -104.9908169 39.7183641 -104.9921559 39.7183774
-3918 3715 3716 0.0528065388297546 0.0528065388297546 -104.995157 39.7184133 -104.9957744 39.7184136
-3919 3716 3717 0.0498986148500866 0.0498986148500866 -104.9957744 39.7184136 -104.9963578 39.7184146
-3920 3717 3718 0.0501983896755627 0.0501983896755627 -104.9963578 39.7184146 -104.9969447 39.7184167
-3921 3718 3722 0.0513311819624353 0.0513311819624353 -104.9969447 39.7184167 -104.9975448 39.7184227
-3922 3722 3723 0.0447895916462849 0.0447895916462849 -104.9975448 39.7184227 -104.9980684 39.7184292
-3923 3723 3724 0.0431436061631746 0.0431436061631746 -104.9980684 39.7184292 -104.9985724 39.7184133
-3924 3724 3725 0.0306469500311329 0.0306469500311329 -104.9985724 39.7184133 -104.9989294 39.7183897
-3926 3726 3727 0.194057523355391 0.194057523355391 -105.0028483 39.7255761 -105.0028456 39.7273213
-3927 3727 723 0.155998303022368 0.155998303022368 -105.0028456 39.7273213 -105.0028344 39.7287242
-3928 723 3728 0.0204200466887832 0.0204200466887832 -105.0028344 39.7287242 -105.0028395 39.7289078
-3929 3728 3729 0.122760919468851 0.122760919468851 -105.0028395 39.7289078 -105.0028319 39.7300118
-3930 3729 3730 0.0554195837686694 0.0554195837686694 -105.0028319 39.7300118 -105.0028312 39.7305102
-3931 3730 520 0.0841868989778494 0.0841868989778494 -105.0028312 39.7305102 -105.0028259 39.7312673
-3932 520 3731 0.0926590200371809 0.0926590200371809 -105.0028259 39.7312673 -105.0028232 39.7321006
-3933 3731 3732 0.0560537701957185 0.0560537701957185 -105.0028232 39.7321006 -105.0028207 39.7326047
-3937 3735 3736 0.177568883213635 0.177568883213635 -105.0028198 39.7368743 -105.0028107 39.7384712
-3939 3737 3738 0.0596027628340358 0.0596027628340358 -105.0028068 39.7394839 -105.0028007 39.7400199
-3940 3738 2286 0.015731383207611 0.015731383207611 -105.0028007 39.7400199 -105.0028141 39.740161
-3942 191 3739 0.20409229769904 0.20409229769904 -105.02039 39.7157163 -105.0227761 39.7157163
-3943 3739 3740 0.196754914184827 0.196754914184827 -105.0227761 39.7157163 -105.0250764 39.7157096
-3945 3741 3742 0.0963531048469524 0.0963531048469524 -105.0170254 39.7158747 -105.0181498 39.7158219
-3947 3743 1867 0.211893481628119 0.211893481628119 -104.9874858 39.7156689 -104.9899631 39.7156724
-3948 1867 3744 0.190309691295086 0.190309691295086 -104.9899631 39.7156724 -104.9921878 39.7156987
-3949 3744 3369 0.156379911113779 0.156379911113779 -104.9921878 39.7156987 -104.994016 39.7156855
-3951 3746 3747 0.0084501441528746 0.0084501441528746 -105.006247 39.715647 -105.006163 39.715687
-3953 3749 3750 0.291896586304336 0.291896586304336 -105.026537 39.774028 -105.0264259 39.7766517
-3957 3752 3753 0.00678737857974005 0.00678737857974005 -105.0288682 39.7620406 -105.0288005 39.7620725
-3958 3753 3754 0.00811546596932882 0.00811546596932882 -105.0288005 39.7620725 -105.028727 39.7621187
-3959 3754 605 0.11345488105994 0.11345488105994 -105.028727 39.7621187 -105.0276669 39.7627327
-3966 3759 3760 0.0543424988109601 0.0543424988109601 -104.9912414 39.6966624 -104.9918765 39.696669
-3967 3760 3761 0.0124828328696103 0.0124828328696103 -104.9918765 39.696669 -104.9920224 39.696669
-3969 3762 3763 0.109035140401267 0.109035140401267 -105.0051409 39.7854596 -105.0064169 39.7854508
-3970 3763 3764 0.13451246019454 0.13451246019454 -105.0064169 39.7854508 -105.0079576 39.7856991
-3971 3764 1077 0.0751290727356026 0.0751290727356026 -105.0079576 39.7856991 -105.0087381 39.7860102
-3972 1077 2521 0.125841042831383 0.125841042831383 -105.0087381 39.7860102 -105.0101778 39.7862486
-3974 3765 3766 0.0155018141702848 0.0155018141702848 -104.9406029 39.7291831 -104.9407704 39.7291298
-3975 3766 3769 0.0925922303926536 0.0925922303926536 -104.9407704 39.7291298 -104.9418526 39.7291037
-3976 3769 450 0.0446743427321934 0.0446743427321934 -104.9418526 39.7291037 -104.942375 39.7291047
-3977 450 855 0.0454696499518695 0.0454696499518695 -104.942375 39.7291047 -104.9429067 39.7291057
-3978 855 3770 0.0458292249661059 0.0458292249661059 -104.9429067 39.7291057 -104.9434426 39.7291077
-5269 4111 4741 0.0999126780220414 0.0999126780220414 -104.9509907 39.7225605 -104.9498232 39.7225289
-3979 3770 3771 0.0463680305523856 0.0463680305523856 -104.9434426 39.7291077 -104.9439848 39.7291098
-3982 3777 3778 0.0472655889206378 0.0472655889206378 -104.9450973 39.7291163 -104.94565 39.7291176
-3983 3778 3456 0.0457775618734605 0.0457775618734605 -104.94565 39.7291176 -104.9461853 39.7291188
-3984 3456 3779 0.0949352444381587 0.0949352444381587 -104.9461853 39.7291188 -104.9472954 39.7291251
-3985 3779 3780 0.0949175907228116 0.0949175907228116 -104.9472954 39.7291251 -104.9484053 39.7291307
-3986 3780 3781 0.0934360991992659 0.0934360991992659 -104.9484053 39.7291307 -104.9494979 39.7291309
-3987 3781 3782 0.0927263272279538 0.0927263272279538 -104.9494979 39.7291309 -104.9505822 39.7291315
-3988 3782 2659 0.0984051754942233 0.0984051754942233 -104.9505822 39.7291315 -104.9517329 39.7291286
-3989 2659 2053 0.0987467204032972 0.0987467204032972 -104.9517329 39.7291286 -104.9528876 39.7291288
-3990 2053 3783 0.0990728400130522 0.0990728400130522 -104.9528876 39.7291288 -104.9540461 39.7291245
-3991 3783 3784 0.0514218472521816 0.0514218472521816 -104.9540461 39.7291245 -104.9546474 39.7291228
-3992 3784 3785 0.0779176889813446 0.0779176889813446 -104.9546474 39.7291228 -104.9555585 39.7291167
-3993 3785 3786 0.0982592928032825 0.0982592928032825 -104.9555585 39.7291167 -104.9567075 39.7291164
-3994 3786 3344 0.100047583059044 0.100047583059044 -104.9567075 39.7291164 -104.9578774 39.7291204
-3995 3344 3787 0.0997075658602957 0.0997075658602957 -104.9578774 39.7291204 -104.9590433 39.7291134
-3998 3789 1013 0.0991145515008367 0.0991145515008367 -104.9613527 39.7291055 -104.9625117 39.7291044
-3999 1013 3790 0.0988154439008836 0.0988154439008836 -104.9625117 39.7291044 -104.9636672 39.7291023
-4000 3790 3147 0.100818484811759 0.100818484811759 -104.9636672 39.7291023 -104.9648461 39.7290963
-4001 3147 3128 0.0882379333310365 0.0882379333310365 -104.9648461 39.7290963 -104.9658779 39.7290921
-4002 3128 3791 0.10924064572907 0.10924064572907 -104.9658779 39.7290921 -104.9671553 39.7290881
-4003 3791 3792 0.0990892368110052 0.0990892368110052 -104.9671553 39.7290881 -104.968314 39.7290856
-4004 3792 3793 0.0983279071551189 0.0983279071551189 -104.968314 39.7290856 -104.9694638 39.729084
-4005 3793 3794 0.0488397000978433 0.0488397000978433 -104.9694638 39.729084 -104.9700349 39.7290815
-4006 3794 3795 0.0500279563406491 0.0500279563406491 -104.9700349 39.7290815 -104.9706199 39.7290832
-4007 3795 2868 0.0499678370514067 0.0499678370514067 -104.9706199 39.7290832 -104.9712042 39.7290823
-4008 2868 3796 0.048583428681526 0.048583428681526 -104.9712042 39.7290823 -104.9717723 39.7290794
-4009 3796 3797 0.0504566053315115 0.0504566053315115 -104.9717723 39.7290794 -104.9723623 39.729076
-4011 3798 3799 0.0451531325504455 0.0451531325504455 -104.9729432 39.7290745 -104.9734712 39.7290748
-4012 3799 983 0.0519296915637561 0.0519296915637561 -104.9734712 39.7290748 -104.9740784 39.7290693
-4015 3801 3802 0.0483738114958222 0.0483738114958222 -104.9764057 39.7290681 -104.9769713 39.7290617
-4016 3802 3803 0.0519812355103751 0.0519812355103751 -104.9769713 39.7290617 -104.977579 39.7290515
-4017 3803 3804 0.101642680761132 0.101642680761132 -104.977579 39.7290515 -104.9787675 39.7290609
-4018 3804 3805 0.100202026962745 0.100202026962745 -104.9787675 39.7290609 -104.9799392 39.7290657
-4019 3805 3806 0.0490200510242293 0.0490200510242293 -104.9799392 39.7290657 -104.9805124 39.7290692
-4020 3806 3159 0.0527906095396228 0.0527906095396228 -104.9805124 39.7290692 -104.9811297 39.7290666
-4021 3159 3807 0.0508058777981011 0.0508058777981011 -104.9811297 39.7290666 -104.9817238 39.7290659
-4022 3807 3808 0.0547154240766913 0.0547154240766913 -104.9817238 39.7290659 -104.9823636 39.7290623
-4023 3808 3809 0.105580069148102 0.105580069148102 -104.9823636 39.7290623 -104.9835982 39.729065
-4025 3810 3811 0.0543737037127348 0.0543737037127348 -104.9842348 39.7290698 -104.9848706 39.7290738
-16058 9242 237 0.236847878323095 0.236847878323095 -105.0223459 39.7257626 -105.0251054 39.7259431
-4026 3811 3812 0.108778018122892 0.108778018122892 -104.9848706 39.7290738 -104.9861426 39.7290747
-4027 3812 1620 0.10920973774803 0.10920973774803 -104.9861426 39.7290747 -104.9874196 39.7290833
-4029 3813 3814 0.083969278056869 0.083969278056869 -105.0403593 39.7474155 -105.039412 39.7472161
-4031 3815 3816 0.139162136479248 0.139162136479248 -105.0374612 39.7461303 -105.0366061 39.7450654
-4032 3816 3817 0.128842029582485 0.128842029582485 -105.0366061 39.7450654 -105.0369844 39.7439438
-4034 3818 2303 0.104861015321702 0.104861015321702 -105.0107164 39.6967417 -105.0106836 39.695799
-4035 2303 130 0.0947837852263858 0.0947837852263858 -105.0106836 39.695799 -105.010718 39.694947
-4036 130 155 0.2039982188818 0.2039982188818 -105.010718 39.694947 -105.0107186 39.6931124
-4037 155 1719 0.251031715971117 0.251031715971117 -105.0107186 39.6931124 -105.0107559 39.690855
-4040 3820 3821 0.253858034970465 0.253858034970465 -105.009791 39.7062461 -105.0097899 39.7039631
-4041 3821 765 0.158798770965753 0.158798770965753 -105.0097899 39.7039631 -105.0097824 39.702535
-4042 765 3822 0.38766252452626 0.38766252452626 -105.0097824 39.702535 -105.0105281 39.6990962
-4044 3823 3824 0.6423341602363 0.6423341602363 -105.0106786 39.6880414 -105.0099887 39.6822892
-4045 3825 3826 0.0763938085811643 0.0763938085811643 -105.0104126 39.6901747 -105.0104297 39.6894878
-5338 4787 4788 0.201919584850824 0.201919584850824 -105.0135283 39.7856151 -105.013522 39.787431
-4049 3828 3829 0.0709013283805701 0.0709013283805701 -104.9277565 39.7065566 -104.9269277 39.7065525
-4051 3830 3831 0.161299122027925 0.161299122027925 -104.9241221 39.7061949 -104.9222367 39.7061777
-4052 3832 3833 0.0520709463921909 0.0520709463921909 -105.042608 39.748115 -105.0428186 39.7485544
-4054 3834 3835 0.133913000116738 0.133913000116738 -105.0428357 39.748759 -105.0428416 39.7499633
-4055 3835 3836 0.135958385150602 0.135958385150602 -105.0428416 39.7499633 -105.042838 39.751186
-4059 3838 3839 0.195689058153451 0.195689058153451 -105.042617 39.731277 -105.0427707 39.7330329
-4061 3840 3841 0.104161008191779 0.104161008191779 -105.0428396 39.7539325 -105.042828 39.7548692
-4062 3841 3842 0.204332097790775 0.204332097790775 -105.042828 39.7548692 -105.0428239 39.7567068
-4063 3842 2989 0.198305038809848 0.198305038809848 -105.0428239 39.7567068 -105.0428245 39.7584902
-4064 2989 3843 0.202007841321225 0.202007841321225 -105.0428245 39.7584902 -105.0428235 39.7603069
-4065 3843 3844 0.201085745402869 0.201085745402869 -105.0428235 39.7603069 -105.0428303 39.7621153
-4066 3844 3845 0.203153756914823 0.203153756914823 -105.0428303 39.7621153 -105.0428244 39.7639423
-4067 3845 3846 0.201463782012409 0.201463782012409 -105.0428244 39.7639423 -105.0428311 39.7657541
-4068 3846 1694 0.201944163047273 0.201944163047273 -105.0428311 39.7657541 -105.0428441 39.7675702
-4069 1694 3847 0.201007884572681 0.201007884572681 -105.0428441 39.7675702 -105.0428508 39.7693779
-4070 3847 2442 0.173966646957408 0.173966646957408 -105.0428508 39.7693779 -105.042861 39.7709424
-4071 2442 3848 0.171462594138623 0.171462594138623 -105.042861 39.7709424 -105.0428601 39.7724844
-5362 4804 4805 0.138916058502817 0.138916058502817 -105.0127751 39.765645 -105.0127781 39.7668943
-4072 3848 3849 0.15641185610528 0.15641185610528 -105.0428601 39.7724844 -105.0428259 39.7738908
-4073 3849 3850 0.155873108146064 0.155873108146064 -105.0428259 39.7738908 -105.0428243 39.7752926
-4074 3850 3851 0.11951230715733 0.11951230715733 -105.0428243 39.7752926 -105.0428243 39.7763674
-4075 3851 3852 0.0199150113624835 0.0199150113624835 -105.0428243 39.7763674 -105.0428243 39.7765465
-4078 2606 3854 0.176099789319583 0.176099789319583 -105.042706 39.7229718 -105.0427103 39.7245555
-4081 3856 3857 0.204451648584923 0.204451648584923 -105.042767 39.7301122 -105.042745 39.7282736
-4082 3857 3858 0.27633741171005 0.27633741171005 -105.042745 39.7282736 -105.0427081 39.7257886
-4084 3859 3860 0.194935828897222 0.194935828897222 -105.0427473 39.7838664 -105.0427469 39.7856195
-4085 3860 2553 0.201807589121279 0.201807589121279 -105.0427469 39.7856195 -105.0427222 39.7874343
-4086 2553 3861 0.201183796555208 0.201183796555208 -105.0427222 39.7874343 -105.0427456 39.7892435
-4087 3861 3862 0.206144933368939 0.206144933368939 -105.0427456 39.7892435 -105.0427395 39.7910974
-4088 3863 3864 0.174004040356707 0.174004040356707 -105.0432639 39.7165811 -105.0432811 39.7181459
-4089 3864 3865 0.176177241775495 0.176177241775495 -105.0432811 39.7181459 -105.0432811 39.7197303
-4090 3865 3866 0.0719661295510201 0.0719661295510201 -105.0432811 39.7197303 -105.043285 39.7203775
-4091 3866 1862 0.105391351050826 0.105391351050826 -105.043285 39.7203775 -105.0432898 39.7213253
-4092 1862 2607 0.183084733810089 0.183084733810089 -105.0432898 39.7213253 -105.0433005 39.7229718
-4094 3867 3868 0.135844661693153 0.135844661693153 -105.0428222 39.7354157 -105.0427949 39.7366372
-4096 1431 3869 0.122681533981215 0.122681533981215 -105.0427404 39.7820827 -105.042738 39.783186
-4099 3870 3871 0.0814181379314414 0.0814181379314414 -104.9440689 39.7789476 -104.9440637 39.7796798
-4101 3038 3872 0.194090812408951 0.194090812408951 -104.9440088 39.7590496 -104.9440107 39.7607951
-4103 3579 3873 0.140995166985651 0.140995166985651 -104.944148 39.7544343 -104.944148 39.7557023
-4104 3873 3874 0.0908684940539539 0.0908684940539539 -104.944148 39.7557023 -104.944148 39.7565195
-4108 2397 3876 0.142303739641396 0.142303739641396 -104.9440793 39.7738645 -104.9440965 39.7751442
-4110 3877 702 0.203534713775632 0.203534713775632 -104.9442025 39.7401262 -104.9442165 39.7419566
-4111 702 3878 0.201204188260029 0.201204188260029 -104.9442165 39.7419566 -104.9441954 39.743766
-4113 3879 3880 0.176189861258557 0.176189861258557 -104.9437605 39.7162182 -104.943752 39.7178027
-4114 3880 2357 0.178601291381029 0.178601291381029 -104.943752 39.7178027 -104.9437521 39.7194089
-4115 2357 3881 0.172977248757485 0.172977248757485 -104.9437521 39.7194089 -104.9437414 39.7209645
-4116 3881 3882 0.173963704924205 0.173963704924205 -104.9437414 39.7209645 -104.9437636 39.7225289
-4117 3882 3883 0.177248873598787 0.177248873598787 -104.9437636 39.7225289 -104.9437494 39.7241229
-4118 3883 3884 0.165174683174039 0.165174683174039 -104.9437494 39.7241229 -104.9437333 39.7256083
-4120 3885 899 0.068233075024198 0.068233075024198 -104.9438132 39.7638697 -104.9438047 39.7644833
-4121 899 3886 0.136382558439915 0.136382558439915 -104.9438047 39.7644833 -104.9437961 39.7657098
-4123 3887 2246 0.064586200340924 0.064586200340924 -104.9634899 39.7328812 -104.9634985 39.733462
-4126 3889 3890 0.173108811078515 0.173108811078515 -104.9634771 39.7368204 -104.9634822 39.7383772
-4128 3891 673 0.180805922237936 0.180805922237936 -104.9634356 39.7399908 -104.963462 39.7416167
-4129 673 3892 0.00347134617206091 0.00347134617206091 -104.963462 39.7416167 -104.9634634 39.7416479
-4131 3893 3894 0.173412160606882 0.173412160606882 -104.9634575 39.7432314 -104.9634443 39.7447909
-4132 3894 3686 0.239804659108201 0.239804659108201 -104.9634443 39.7447909 -104.9634548 39.7469475
-4133 3686 3895 0.139339505088047 0.139339505088047 -104.9634548 39.7469475 -104.9634614 39.7482006
-4134 3895 1293 0.0712429362693845 0.0712429362693845 -104.9634614 39.7482006 -104.9634588 39.7488413
-4136 3896 3897 0.00461464942878269 0.00461464942878269 -104.9634682 39.7494224 -104.9634629 39.7494637
-4137 3897 3898 0.00296969221564957 0.00296969221564957 -104.9634629 39.7494637 -104.9634621 39.7494904
-4138 3898 3899 0.135099018741423 0.135099018741423 -104.9634621 39.7494904 -104.9634285 39.7507051
-4139 3899 3900 0.133736401013675 0.133736401013675 -104.9634285 39.7507051 -104.9634376 39.7519078
-4140 3900 826 0.1432668721319 0.1432668721319 -104.9634376 39.7519078 -104.9634614 39.7531961
-4141 826 3567 0.140539270126583 0.140539270126583 -104.9634614 39.7531961 -104.9634611 39.75446
-4142 3567 3901 0.141736858580205 0.141736858580205 -104.9634611 39.75446 -104.9634785 39.7557346
-4143 3901 3902 0.138513379846183 0.138513379846183 -104.9634785 39.7557346 -104.9634441 39.75698
-4144 3902 3903 0.137738276341516 0.137738276341516 -104.9634441 39.75698 -104.9634376 39.7582187
-4145 3903 3041 0.133834213982 0.133834213982 -104.9634376 39.7582187 -104.9634377 39.7594223
-4146 3041 3904 0.143195912483998 0.143195912483998 -104.9634377 39.7594223 -104.9634577 39.76071
-4147 3904 3905 0.00371612313723013 0.00371612313723013 -104.9634577 39.76071 -104.9634562 39.7607434
-4148 3905 3906 0.138485181869722 0.138485181869722 -104.9634562 39.7607434 -104.9634455 39.7619888
-4150 1161 880 0.143460648556329 0.143460648556329 -104.9634876 39.7632183 -104.9634376 39.7645079
-4151 880 3907 0.137181190587279 0.137181190587279 -104.9634376 39.7645079 -104.9634382 39.7657416
-4152 3907 2788 0.133979203320047 0.133979203320047 -104.9634382 39.7657416 -104.9634422 39.7669465
-4154 3908 3909 0.11929025073176 0.11929025073176 -104.9634409 39.7681351 -104.9634376 39.7692079
-4155 3909 3910 0.092551367353814 0.092551367353814 -104.9634376 39.7692079 -104.9634764 39.7700397
-4157 734 1555 0.128698646905998 0.128698646905998 -104.9634771 39.7765229 -104.9634695 39.7776803
-4158 1555 3911 0.10223670466325 0.10223670466325 -104.9634695 39.7776803 -104.9634588 39.7785997
-4159 3911 3912 0.0209102658501846 0.0209102658501846 -104.9634588 39.7785997 -104.9632656 39.7787151
-4160 3913 3914 0.290781445277807 0.290781445277807 -104.963317 39.7183519 -104.9633401 39.7209669
-4161 3914 3915 0.112536676265492 0.112536676265492 -104.9633401 39.7209669 -104.963325 39.7219789
-4162 3915 3916 0.199777886092506 0.199777886092506 -104.963325 39.7219789 -104.9634696 39.7237721
-4163 3916 3917 0.0912727874005277 0.0912727874005277 -104.9634696 39.7237721 -104.963416 39.7245919
-4164 3917 3918 0.112620851967747 0.112620851967747 -104.963416 39.7245919 -104.963425 39.7256047
-4166 3919 1187 0.167283340526576 0.167283340526576 -104.963647 39.7256059 -104.9636558 39.7271103
-4167 1187 3920 0.0212753866211399 0.0212753866211399 -104.9636558 39.7271103 -104.9636605 39.7273016
-4168 3920 3790 0.200229524215252 0.200229524215252 -104.9636605 39.7273016 -104.9636672 39.7291023
-4169 3790 3921 0.153151160013799 0.153151160013799 -104.9636672 39.7291023 -104.9636772 39.7304796
-4170 3921 3922 0.0549370836226997 0.0549370836226997 -104.9636772 39.7304796 -104.9636873 39.7309736
-4171 3923 3924 0.0360721076371334 0.0360721076371334 -104.9635686 39.7725675 -104.9635579 39.7728918
-4174 706 3926 0.117999308023824 0.117999308023824 -105.0041014 39.7624043 -105.0032486 39.7632388
-4175 3926 3702 0.0450373928319521 0.0450373928319521 -105.0032486 39.7632388 -105.0029777 39.7635862
-4176 3702 3927 0.114850773809758 0.114850773809758 -105.0029777 39.7635862 -105.0021843 39.7644198
-4177 3927 3928 0.0608860897951607 0.0608860897951607 -105.0021843 39.7644198 -105.0017582 39.7648586
-4178 3928 3929 0.107271550927247 0.107271550927247 -105.0017582 39.7648586 -105.0010599 39.7656602
-4180 3930 1666 0.1330788885459 0.1330788885459 -105.0005956 39.7668504 -105.0005902 39.7680472
-4181 1666 3931 0.137468360449037 0.137468360449037 -105.0005902 39.7680472 -105.0005716 39.7692834
-4182 3931 2447 0.134834989989903 0.134834989989903 -105.0005716 39.7692834 -105.0005707 39.770496
-4183 2447 3237 0.140199730422516 0.140199730422516 -105.0005707 39.770496 -105.0006308 39.771756
-4184 3237 3933 0.138639782785987 0.138639782785987 -105.0006308 39.771756 -105.0006222 39.7730028
-4185 3933 3934 0.138811739329711 0.138811739329711 -105.0006222 39.7730028 -105.0005888 39.7742509
-4186 3934 3935 0.134204059449961 0.134204059449961 -105.0005888 39.7742509 -105.0005661 39.7754577
-4187 3935 3936 0.123276584845079 0.123276584845079 -105.0005661 39.7754577 -105.0005802 39.7765663
-4189 3937 3938 0.126045478045544 0.126045478045544 -104.9998498 39.7419149 -105.0001475 39.7408047
-4190 3938 3939 0.0651492893105391 0.0651492893105391 -105.0001475 39.7408047 -105.0001493 39.7402188
-4191 3939 3940 0.0221401135391512 0.0221401135391512 -105.0001493 39.7402188 -105.000152 39.7400197
-4192 3940 3941 0.0717318471783874 0.0717318471783874 -105.000152 39.7400197 -105.000152 39.7393746
-4195 3943 3944 0.176615684469352 0.176615684469352 -105.0001422 39.736875 -105.0001574 39.7352867
-4196 3944 3947 0.176604135108539 0.176604135108539 -105.0001574 39.7352867 -105.0001429 39.7336985
-4197 3947 3948 0.122323573259462 0.122323573259462 -105.0001429 39.7336985 -105.0001604 39.7325985
-4198 3948 3949 0.0559214984515419 0.0559214984515419 -105.0001604 39.7325985 -105.0001653 39.7320956
-5481 4892 3459 0.0941890822437752 0.0941890822437752 -104.947281 39.73512 -104.9461795 39.735119
-4199 3949 3950 0.176269184745743 0.176269184745743 -105.0001653 39.7320956 -105.0001773 39.7305104
-4200 3950 3951 0.05590117541301 0.05590117541301 -105.0001773 39.7305104 -105.0001846 39.7300077
-4201 3951 3952 0.122088386939327 0.122088386939327 -105.0001846 39.7300077 -105.0002004 39.7289098
-4202 3952 3953 0.0603148497739477 0.0603148497739477 -105.0002004 39.7289098 -105.0001937 39.7283674
-4203 3953 3954 0.117311769773874 0.117311769773874 -105.0001937 39.7283674 -105.0001997 39.7273124
-4204 3954 3955 0.0719490460324168 0.0719490460324168 -105.0001997 39.7273124 -105.0001889 39.7266654
-4205 3955 3956 0.106538056002006 0.106538056002006 -105.0001889 39.7266654 -105.0001441 39.7257079
-4206 3956 3957 0.177243078500478 0.177243078500478 -105.0001441 39.7257079 -105.0001757 39.7241141
-4207 3957 2623 0.176288453506598 0.176288453506598 -105.0001757 39.7241141 -105.0001766 39.7225287
-4208 2623 3958 0.177546592271005 0.177546592271005 -105.0001766 39.7225287 -105.0002015 39.7209321
-4209 3958 3960 0.168966442415293 0.168966442415293 -105.0002015 39.7209321 -105.0001852 39.7194126
-4210 3960 3961 0.111586533238696 0.111586533238696 -105.0001852 39.7194126 -105.0001766 39.7184091
-4213 3963 3964 0.265623714493738 0.265623714493738 -105.0016187 39.7886302 -105.0017217 39.7910177
-4214 3965 3966 0.511616430940774 0.511616430940774 -105.0003399 39.7837825 -105.0005888 39.7883796
-4216 1726 3967 0.0896760315303362 0.0896760315303362 -105.0185407 39.6908154 -105.0184978 39.6900096
-4217 3967 3968 0.0558858522230369 0.0558858522230369 -105.0184978 39.6900096 -105.0184635 39.6895077
-4218 3968 3969 0.109150490871186 0.109150490871186 -105.0184635 39.6895077 -105.0184567 39.6885261
-4219 3970 3971 0.202576252334461 0.202576252334461 -105.0298017 39.7293298 -105.0298103 39.7311516
-4220 3971 3972 0.199655908563659 0.199655908563659 -105.0298103 39.7311516 -105.0298275 39.7329471
-4221 3972 3973 0.201550568367269 0.201550568367269 -105.0298275 39.7329471 -105.0298507 39.7347596
-4223 3974 3975 0.0432784618651284 0.0432784618651284 -105.0299675 39.7647258 -105.029931 39.765114
-4224 3975 3976 0.0119312921672435 0.0119312921672435 -105.029931 39.765114 -105.0299305 39.7652213
-4225 3976 3977 0.0412856988441699 0.0412856988441699 -105.0299305 39.7652213 -105.029946 39.7655924
-4226 3977 3978 0.00523979822286268 0.00523979822286268 -105.029946 39.7655924 -105.0299479 39.7656395
-4227 3978 3979 0.0456580481243959 0.0456580481243959 -105.0299479 39.7656395 -105.0299437 39.7660501
-4228 3979 3980 0.0491163050630244 0.0491163050630244 -105.0299437 39.7660501 -105.0299392 39.7664918
-4229 3980 3981 0.0519851803283443 0.0519851803283443 -105.0299392 39.7664918 -105.0299345 39.7669593
-4230 3981 1662 0.0500503143032265 0.0500503143032265 -105.0299345 39.7669593 -105.02993 39.7674094
-4231 1662 3982 0.0526516968240738 0.0526516968240738 -105.02993 39.7674094 -105.0299336 39.7678829
-4232 3982 3983 0.0511950181994891 0.0511950181994891 -105.0299336 39.7678829 -105.0299371 39.7683433
-4233 3983 3984 0.0508169123465841 0.0508169123465841 -105.0299371 39.7683433 -105.0299405 39.7688003
-16267 5831 9866 0.203286686616951 0.203286686616951 -104.9586821 39.6911399 -104.9586795 39.6929681
-4234 3984 3985 0.0684638947838088 0.0684638947838088 -105.0299405 39.7688003 -105.0299452 39.769416
-4235 3985 3986 0.0523508233196537 0.0523508233196537 -105.0299452 39.769416 -105.0299471 39.7698868
-4236 3986 3987 0.0497154897229056 0.0497154897229056 -105.0299471 39.7698868 -105.0299489 39.7703339
-4237 3987 2423 0.0326188031399601 0.0326188031399601 -105.0299489 39.7703339 -105.0299558 39.7706272
-4238 2423 3988 0.017392306107988 0.017392306107988 -105.0299558 39.7706272 -105.0299532 39.7707836
-4239 3988 3989 0.0330055324383025 0.0330055324383025 -105.0299532 39.7707836 -105.0299481 39.7710804
-4240 3989 3990 0.0159023099545875 0.0159023099545875 -105.0299481 39.7710804 -105.0299456 39.7712234
-4241 3990 3991 0.049454634736183 0.049454634736183 -105.0299456 39.7712234 -105.0299548 39.7716681
-4244 3992 3993 0.049036974566433 0.049036974566433 -105.0299454 39.772124 -105.029945 39.772565
-4245 3993 3994 0.0522504960301449 0.0522504960301449 -105.029945 39.772565 -105.029945 39.7730349
-4246 3994 3995 0.113779671004445 0.113779671004445 -105.029945 39.7730349 -105.0298909 39.7740573
-4247 3995 3996 0.292866933952659 0.292866933952659 -105.0298909 39.7740573 -105.0298791 39.7766911
-4248 3996 3997 0.135719788812757 0.135719788812757 -105.0298791 39.7766911 -105.0298945 39.7779116
-4249 3997 2492 0.131298969381918 0.131298969381918 -105.0298945 39.7779116 -105.0298945 39.7790924
-4250 2492 2838 0.134023703042734 0.134023703042734 -105.0298945 39.7790924 -105.0298986 39.7802977
-4252 3998 3999 0.177673273882055 0.177673273882055 -105.0299945 39.7165481 -105.0300116 39.7181459
-4253 3999 4000 0.178724202369687 0.178724202369687 -105.0300116 39.7181459 -105.0300062 39.7197532
-4254 4000 4001 0.0914256352612055 0.0914256352612055 -105.0300062 39.7197532 -105.0300116 39.7205754
-4255 1820 4002 0.0854127756728086 0.0854127756728086 -105.0299828 39.7262896 -105.0300499 39.727056
-4256 4002 4003 0.0734940058422204 0.0734940058422204 -105.0300499 39.727056 -105.0300602 39.7277169
-4257 4003 4004 0.122094789640982 0.122094789640982 -105.0300602 39.7277169 -105.0300506 39.7288149
-4260 4006 4007 0.167588698662527 0.167588698662527 -105.0299104 39.7841207 -105.0298927 39.7856278
-4261 4007 4008 0.199884724997956 0.199884724997956 -105.0298927 39.7856278 -105.0298864 39.7874254
-4262 4008 4009 0.0119868161378673 0.0119868161378673 -105.0298864 39.7874254 -105.0298863 39.7875332
-4263 371 1930 0.0503613323391642 0.0503613323391642 -105.0298176 39.7380301 -105.0298394 39.7384827
-4264 1930 1940 0.0838300296248713 0.0838300296248713 -105.0298394 39.7384827 -105.0298414 39.7392366
-4265 1940 4010 0.121947021037263 0.121947021037263 -105.0298414 39.7392366 -105.0298922 39.7403326
-4266 4010 4011 0.132309346356631 0.132309346356631 -105.0298922 39.7403326 -105.0299552 39.7415215
-4267 4011 4012 0.135165905730987 0.135165905730987 -105.0299552 39.7415215 -105.0299375 39.742737
-4268 4012 4013 0.133333876014397 0.133333876014397 -105.0299375 39.742737 -105.0299387 39.7439361
-4270 4014 12 0.13580168948729 0.13580168948729 -105.0299558 39.7451547 -105.0299361 39.7463759
-4271 12 4015 0.00286884184731271 0.00286884184731271 -105.0299361 39.7463759 -105.0299362 39.7464017
-4272 4015 4016 0.132033234839576 0.132033234839576 -105.0299362 39.7464017 -105.0299399 39.7475891
-4273 4016 4017 0.133567851795101 0.133567851795101 -105.0299399 39.7475891 -105.0299442 39.7487903
-4274 4017 4018 0.134726706981619 0.134726706981619 -105.0299442 39.7487903 -105.0299546 39.7500019
-4275 4018 4019 0.130892412762661 0.130892412762661 -105.0299546 39.7500019 -105.0299414 39.751179
-4276 4019 4020 0.134212591203429 0.134212591203429 -105.0299414 39.751179 -105.029938 39.752386
-4277 4020 4021 0.133433911973159 0.133433911973159 -105.029938 39.752386 -105.029938 39.753586
-4278 4021 4022 0.137281795417315 0.137281795417315 -105.029938 39.753586 -105.0299425 39.7548206
-4280 4023 4024 0.0689781307016059 0.0689781307016059 -105.0299339 39.7560479 -105.0299253 39.7566682
-4281 4024 4025 0.0667654814327236 0.0667654814327236 -105.0299253 39.7566682 -105.0299339 39.7572686
-5576 4965 4966 0.209377126181678 0.209377126181678 -105.0250665 39.7049175 -105.027514 39.7049206
-4290 4029 1890 0.0489976212541555 0.0489976212541555 -105.0299179 39.761227 -105.0299096 39.7616676
-4291 1890 4030 0.050071397214541 0.050071397214541 -105.0299096 39.7616676 -105.0299117 39.7621179
-4293 4031 2858 0.24990384929118 0.24990384929118 -105.0014483 39.6972057 -105.0043357 39.6975452
-4301 1703 4036 0.19686036595886 0.19686036595886 -104.9887113 39.6911776 -104.9887542 39.6894075
-4302 4036 4037 2.41616418836648 2.41616418836648 -104.9887542 39.6894075 -104.9888339 39.6676785
-4303 4038 4039 0.0356847858191414 0.0356847858191414 -105.0175833 39.7177827 -105.0178323 39.7180402
-4305 4040 4041 0.105425319125276 0.105425319125276 -105.0250969 39.7181465 -105.0263295 39.7181459
-4306 4041 2256 0.104244973047941 0.104244973047941 -105.0263295 39.7181459 -105.0275483 39.7181459
-4307 2256 4042 0.103519804078257 0.103519804078257 -105.0275483 39.7181459 -105.0287585 39.7181591
-4309 3999 4043 0.105003607246795 0.105003607246795 -105.0300116 39.7181459 -105.031239 39.7181657
-17679 10164 8262 0.207810693253635 0.207810693253635 -104.9860095 39.7800376 -104.9882873 39.7806922
-4315 4048 3390 0.0527412463264476 0.0527412463264476 -105.0343046 39.7181492 -105.0349211 39.7181393
-4316 3390 4049 0.0507539981345734 0.0507539981345734 -105.0349211 39.7181393 -105.0355145 39.7181393
-4317 4049 4050 0.0520284075919789 0.0520284075919789 -105.0355145 39.7181393 -105.0361228 39.7181393
-4318 4050 3408 0.0512087059000605 0.0512087059000605 -105.0361228 39.7181393 -105.0367215 39.7181427
-4319 3408 4051 0.0486341315555791 0.0486341315555791 -105.0367215 39.7181427 -105.0372901 39.7181459
-4320 4051 4053 0.052533034496925 0.052533034496925 -105.0372901 39.7181459 -105.0379043 39.7181459
-4321 4053 4054 0.0524475036704537 0.0524475036704537 -105.0379043 39.7181459 -105.0385175 39.7181459
-4322 4054 4055 0.0498829272923159 0.0498829272923159 -105.0385175 39.7181459 -105.0391007 39.7181492
-4327 4058 4059 0.051190260382352 0.051190260382352 -105.0420963 39.7181446 -105.0426948 39.7181453
-4328 4059 3864 0.0501467689985101 0.0501467689985101 -105.0426948 39.7181453 -105.0432811 39.7181459
-4329 3864 4060 0.0537746384669306 0.0537746384669306 -105.0432811 39.7181459 -105.0439098 39.7181494
-4330 4060 4061 0.0463502740457097 0.0463502740457097 -105.0439098 39.7181494 -105.0444517 39.7181523
-4331 4061 4062 0.0561959746447094 0.0561959746447094 -105.0444517 39.7181523 -105.0451087 39.7181568
-4357 4082 4083 0.157884781724872 0.157884781724872 -105.0063995 39.7838419 -105.0082472 39.7838436
-4332 4062 4063 0.69866413721226 0.69866413721226 -105.0451087 39.7181568 -105.0532725 39.7183717
-4333 1273 4064 0.135036752261437 0.135036752261437 -105.0204988 39.7487979 -105.0220781 39.7487781
-4334 4064 4065 0.129590074598046 0.129590074598046 -105.0220781 39.7487781 -105.0235939 39.7487791
-4335 4065 4066 0.132616575444838 0.132616575444838 -105.0235939 39.7487791 -105.0251451 39.7487806
-4344 4073 1390 0.0502435222683857 0.0502435222683857 -105.0316273 39.7838408 -105.0322152 39.7838328
-4345 1390 4074 0.0493046140403362 0.0493046140403362 -105.0322152 39.7838328 -105.0327922 39.7838345
-4346 4074 4075 0.0491422603337744 0.0491422603337744 -105.0327922 39.7838345 -105.0333673 39.7838362
-4351 4078 4079 0.241190031557862 0.241190031557862 -104.9910214 39.7840807 -104.9938425 39.7841519
-4352 4079 4080 0.258242852029617 0.258242852029617 -104.9938425 39.7841519 -104.9968637 39.7840925
-4353 4080 1629 0.215143938153131 0.215143938153131 -104.9968637 39.7840925 -104.9993614 39.7838485
-4354 1629 3965 0.0839336295727996 0.0839336295727996 -104.9993614 39.7838485 -105.0003399 39.7837825
-4364 1214 4088 0.0489795542886091 0.0489795542886091 -105.0123769 39.7838268 -105.0129501 39.7838266
-4365 4088 4089 0.0498843047924572 0.0498843047924572 -105.0129501 39.7838266 -105.0135338 39.7838344
-4366 4089 4090 0.0487540785114809 0.0487540785114809 -105.0135338 39.7838344 -105.0141021 39.7838734
-4367 4090 2167 0.0506698655714413 0.0506698655714413 -105.0141021 39.7838734 -105.014692 39.7839198
-4368 2167 4091 0.0491950203791528 0.0491950203791528 -105.014692 39.7839198 -105.0152654 39.7839595
-4369 4091 4092 0.0488189222411035 0.0488189222411035 -105.0152654 39.7839595 -105.0158347 39.7839964
-4378 1289 4100 0.0495624053047352 0.0495624053047352 -105.0204845 39.7839453 -105.0210503 39.7840434
-4379 4100 4101 0.0531970268279652 0.0531970268279652 -105.0210503 39.7840434 -105.0216462 39.7841819
-4380 4101 4102 0.0527877658733148 0.0527877658733148 -105.0216462 39.7841819 -105.0222318 39.7843331
-4381 4102 4103 0.0491029186922276 0.0491029186922276 -105.0222318 39.7843331 -105.0227805 39.7844643
-4382 4103 4104 0.053313065445571 0.053313065445571 -105.0227805 39.7844643 -105.0233734 39.7846136
-18127 10262 10268 0.40641745688608 0.40641745688608 -105.0187307 39.7874319 -105.0187307 39.7910869
-4394 4109 2351 0.147790101003017 0.147790101003017 -104.9511309 39.7180926 -104.9509887 39.7194172
-4395 2351 4110 0.174343137234229 0.174343137234229 -104.9509887 39.7194172 -104.9509941 39.7209851
-4396 4110 4111 0.175176728788125 0.175176728788125 -104.9509941 39.7209851 -104.9509907 39.7225605
-4397 4111 4112 0.174887842567366 0.174887842567366 -104.9509907 39.7225605 -104.950986 39.7241333
-4398 4112 4113 0.163616410243985 0.163616410243985 -104.950986 39.7241333 -104.9509997 39.7256047
-14847 9428 3841 0.049872105512027 0.049872105512027 -105.0422446 39.7548692 -105.042828 39.7548692
-14848 3841 9429 0.0507867978829422 0.0507867978829422 -105.042828 39.7548692 -105.0434221 39.7548692
-14849 9429 5551 0.0504705023896622 0.0504705023896622 -105.0434221 39.7548692 -105.0440125 39.7548692
-14850 5551 9430 0.0160626819091423 0.0160626819091423 -105.0440125 39.7548692 -105.0442004 39.7548692
-324 207 268 0.0408317858918375 0.0408317858918375 -104.9565607 39.7445824 -104.9564977 39.7449464
-14851 9430 9431 0.771810690268124 0.771810690268124 -105.0442004 39.7548692 -105.0532289 39.7548401
-14860 2500 9438 0.0367185859571526 0.0367185859571526 -105.0073403 39.7545386 -105.0069699 39.7547058
-14866 8307 6350 0.0205009601935279 0.0205009601935279 -105.0043265 39.7546417 -105.0044986 39.7547701
-14871 2450 3240 0.14088111565627 0.14088111565627 -105.0054661 39.7705389 -105.0054318 39.7718056
-14873 5733 5517 0.138655367104914 0.138655367104914 -105.005421 39.7730569 -105.0054468 39.7743037
-14874 5517 9442 0.136397019838813 0.136397019838813 -105.0054468 39.7743037 -105.0054327 39.7755303
-14875 9442 6920 0.112250527906817 0.112250527906817 -105.0054327 39.7755303 -105.005407 39.7765396
-14877 6505 9443 0.246198454475103 0.246198454475103 -104.9400719 39.7833944 -104.9371907 39.7833908
-14878 9443 9444 0.0254384620147021 0.0254384620147021 -104.9371907 39.7833908 -104.936893 39.7833912
-14879 9444 6994 0.4499142851013 0.4499142851013 -104.936893 39.7833912 -104.9316278 39.7834077
-14880 6994 9445 0.29050322706034 0.29050322706034 -104.9316278 39.7834077 -104.9282294 39.7834798
-14881 9445 2104 0.111341186723118 0.111341186723118 -104.9282294 39.7834798 -104.9269661 39.7837251
-14882 2104 9446 1.81122771510753 1.81122771510753 -104.9269661 39.7837251 -104.90577 39.783825
-14883 5328 6848 0.0996617587695029 0.0996617587695029 -105.0327094 39.7111941 -105.0324406 39.710322
-14884 6848 9012 0.0991299503198925 0.0991299503198925 -105.0324406 39.710322 -105.0324235 39.7094306
-14886 7486 7456 0.0976540916227753 0.0976540916227753 -105.0324321 39.7085458 -105.0324406 39.7076676
-14888 5693 9010 0.102057355365657 0.102057355365657 -105.0324406 39.7067365 -105.0324492 39.7058187
-14889 9010 4967 0.099866873546368 0.099866873546368 -105.0324492 39.7058187 -105.0324406 39.7049206
-14890 4967 9021 0.10207838306375 0.10207838306375 -105.0324406 39.7049206 -105.0324149 39.7040028
-14894 8146 9004 0.111615935651551 0.111615935651551 -105.0324321 39.7013349 -105.0324492 39.7003312
-14896 8691 6102 0.204110733056615 0.204110733056615 -104.9408122 39.711121 -104.9408208 39.7092854
-14898 8202 8814 0.0690569326601991 0.0690569326601991 -104.9408446 39.707351 -104.940835 39.70673
-14900 8175 8161 0.034748414576393 0.034748414576393 -104.9406062 39.7111078 -104.9406062 39.7114203
-14901 8161 9450 0.0195282497941032 0.0195282497941032 -104.9406062 39.7114203 -104.9405977 39.7115958
-14902 9450 9315 0.339258874320837 0.339258874320837 -104.9405977 39.7115958 -104.9406148 39.7146468
-14904 8694 8155 0.0907837492404858 0.0907837492404858 -104.9405987 39.7193935 -104.9395373 39.7193869
-14905 8155 7617 0.0954335805182596 0.0954335805182596 -104.9395373 39.7193869 -104.9384215 39.7193869
-14906 7617 7270 0.0932816974435063 0.0932816974435063 -104.9384215 39.7193869 -104.9373314 39.7193605
-14908 4159 8695 0.0152616593160753 0.0152616593160753 -104.9407748 39.7209356 -104.9405977 39.7209188
-14909 8695 8156 0.0918092963851245 0.0918092963851245 -104.9405977 39.7209188 -104.9395248 39.7208924
-14910 8156 7618 0.0923894575376538 0.0923894575376538 -104.9395248 39.7208924 -104.9384446 39.7208988
-14911 7618 7271 0.0946959525813305 0.0946959525813305 -104.9384446 39.7208988 -104.9373374 39.7208988
-14914 2016 353 0.0344076794786212 0.0344076794786212 -104.9349971 39.720897 -104.9345948 39.720897
-14915 353 9451 0.0583270070041971 0.0583270070041971 -104.9345948 39.720897 -104.933915 39.7209388
-14916 9451 2762 0.099099248852826 0.099099248852826 -104.933915 39.7209388 -104.9327571 39.7209716
-14917 2762 7003 0.098484917717332 0.098484917717332 -104.9327571 39.7209716 -104.9316056 39.7209698
-14918 7003 2266 0.0978645165955224 0.0978645165955224 -104.9316056 39.7209698 -104.9304614 39.7209617
-14919 2266 3595 0.100545762919748 0.100545762919748 -104.9304614 39.7209617 -104.929286 39.7209783
-14920 3595 7518 0.100532638471033 0.100532638471033 -104.929286 39.7209783 -104.9281106 39.7209862
-14921 7518 2095 0.100840428744565 0.100840428744565 -104.9281106 39.7209862 -104.9269316 39.7209784
-14922 2095 5977 0.100495257348787 0.100495257348787 -104.9269316 39.7209784 -104.9257568 39.7209954
-14923 5977 7667 0.098120652849283 0.098120652849283 -104.9257568 39.7209954 -104.9246096 39.7209877
-14924 7667 2331 0.102096265330692 0.102096265330692 -104.9246096 39.7209877 -104.9234159 39.7209939
-14925 2331 9453 0.0789173504157379 0.0789173504157379 -104.9234159 39.7209939 -104.9224932 39.720998
-14926 8149 7608 0.0961605881004872 0.0961605881004872 -104.9394514 39.727421 -104.9383271 39.7274078
-14927 7608 7261 0.102411721946463 0.102411721946463 -104.9383271 39.7274078 -104.93713 39.7274324
-14928 7261 7598 0.095880146438169 0.095880146438169 -104.93713 39.7274324 -104.9360089 39.7274241
-14929 7598 2021 0.09187670783236 0.09187670783236 -104.9360089 39.7274241 -104.9349346 39.7274171
-14930 2021 3354 0.0948528618506519 0.0948528618506519 -104.9349346 39.7274171 -104.9338255 39.7274243
-14932 2767 7012 0.0931566808998339 0.0931566808998339 -104.9327231 39.7274245 -104.9316338 39.7274218
-14934 9454 9455 0.0975625637539845 0.0975625637539845 -104.9405378 39.7758344 -104.9405397 39.7767118
-14937 8700 8158 0.0941289748217691 0.0941289748217691 -104.9405826 39.7382932 -104.9394819 39.7382793
-14939 7604 7255 0.0976568291897231 0.0976568291897231 -104.9383746 39.7382991 -104.937234 39.738254
-14940 7255 7591 0.0955299991432501 0.0955299991432501 -104.937234 39.738254 -104.9361168 39.7382474
-14941 7591 9173 0.0963387600574313 0.0963387600574313 -104.9361168 39.7382474 -104.9349904 39.7382277
-14942 9173 9456 0.0980688321229376 0.0980688321229376 -104.9349904 39.7382277 -104.9338436 39.7382407
-14943 9456 2750 0.102866303298183 0.102866303298183 -104.9338436 39.7382407 -104.9326406 39.738234
-14944 2750 7014 0.0961030844605866 0.0961030844605866 -104.9326406 39.738234 -104.9315168 39.7382474
-14945 7014 8215 0.0956816865795296 0.0956816865795296 -104.9315168 39.7382474 -104.9303979 39.7382593
-14947 8212 7523 0.100548507087909 0.100548507087909 -104.9292134 39.7382659 -104.9280376 39.7382791
-14948 7523 2123 0.0946806328213609 0.0946806328213609 -104.9280376 39.7382791 -104.9269303 39.7382791
-14949 2123 5989 0.102767406722396 0.102767406722396 -104.9269303 39.7382791 -104.9257287 39.7382989
-14950 5989 7670 0.0976490581696009 0.0976490581696009 -104.9257287 39.7382989 -104.9245872 39.7382725
-15962 9768 6397 0.0094036846623539 0.0094036846623539 -105.0005192 39.711198 -105.0006291 39.7111959
-14968 7264 7583 0.0956208531243363 0.0956208531243363 -104.9372465 39.7510554 -104.936128 39.7510533
-14969 7583 2000 0.0924757762963627 0.0924757762963627 -104.936128 39.7510533 -104.9350463 39.751049
-14970 2000 3360 0.0937229366395869 0.0937229366395869 -104.9350463 39.751049 -104.93395 39.7510471
-14971 3360 2754 0.0967493265415074 0.0967493265415074 -104.93395 39.7510471 -104.9328183 39.7510492
-14973 7005 2280 0.0993735606220099 0.0993735606220099 -104.931694 39.751069 -104.9305316 39.7510688
-14974 2280 3602 0.103462577447113 0.103462577447113 -104.9305316 39.7510688 -104.9293214 39.7510754
-14975 3602 7527 0.0995273521026476 0.0995273521026476 -104.9293214 39.7510754 -104.9281577 39.7510492
-14976 7527 2135 0.0983330050282197 0.0983330050282197 -104.9281577 39.7510492 -104.9270076 39.7510624
-14977 2135 5992 0.103459989161242 0.103459989161242 -104.9270076 39.7510624 -104.9257974 39.7510624
-14978 5992 7672 0.100271460506145 0.100271460506145 -104.9257974 39.7510624 -104.9246245 39.7510604
-14979 7672 9462 3.03786386467958 3.03786386467958 -104.9246245 39.7510604 -104.889248 39.7536411
-14980 5809 9463 0.110364660453643 0.110364660453643 -104.9873953 39.7433641 -104.9861093 39.7432784
-14989 9464 5043 0.119299198506528 0.119299198506528 -104.9775584 39.7432677 -104.9761631 39.7432623
-14990 5043 7994 0.118519999914902 0.118519999914902 -104.9761631 39.7432623 -104.9747769 39.7432597
-14991 7994 9236 0.117759209590851 0.117759209590851 -104.9747769 39.7432597 -104.9733996 39.7432566
-14992 9236 7973 0.0614780310106107 0.0614780310106107 -104.9733996 39.7432566 -104.9726808 39.7432422
-14994 7142 5131 0.10575888699282 0.10575888699282 -104.9721403 39.7432453 -104.9709034 39.7432539
-14995 5131 4724 0.10504840556341 0.10504840556341 -104.9709034 39.7432539 -104.9696749 39.7432396
-14996 4724 6791 0.107330054626072 0.107330054626072 -104.9696749 39.7432396 -104.9684196 39.7432459
-14997 6791 7363 0.103200510788566 0.103200510788566 -104.9684196 39.7432459 -104.9672126 39.7432396
-14998 7363 5422 0.104113985923971 0.104113985923971 -104.9672126 39.7432396 -104.9659949 39.7432355
-14999 5422 8554 0.105490524385859 0.105490524385859 -104.9659949 39.7432355 -104.9647611 39.7432314
-15000 8554 3893 0.111457422157238 0.111457422157238 -104.9647611 39.7432314 -104.9634575 39.7432314
-15001 3893 1024 0.103888468957379 0.103888468957379 -104.9634575 39.7432314 -104.9622425 39.7432211
-15002 1024 9465 0.0550364598534795 0.0550364598534795 -104.9622425 39.7432211 -104.9615988 39.7432195
-15003 9465 6269 0.0513684711391166 0.0513684711391166 -104.9615988 39.7432195 -104.960998 39.7432181
-15006 9467 9468 0.0801572222360596 0.0801572222360596 -104.9851948 39.7400592 -104.9861285 39.7401238
-15007 9468 5030 0.106840142374901 0.106840142374901 -104.9861285 39.7401238 -104.987378 39.7401161
-18579 3437 7765 0.0485278339531173 0.0485278339531173 -105.0346118 39.7802216 -105.0351796 39.7802141
-15009 6619 8699 0.0954507670467869 0.0954507670467869 -104.9394962 39.7364792 -104.9405829 39.7366755
-15010 8699 9469 0.014222614535116 0.014222614535116 -104.9405829 39.7366755 -104.9407436 39.7367085
-15013 7107 455 0.0456695914542558 0.0456695914542558 -104.9418165 39.7367415 -104.9423505 39.7367494
-15015 860 9470 0.0919474974486486 0.0919474974486486 -104.9428903 39.736756 -104.9439656 39.7367599
-15016 9470 9471 0.0500014374448159 0.0500014374448159 -104.9439656 39.7367599 -104.9445503 39.7367663
-15017 9471 6021 0.0453621576916579 0.0453621576916579 -104.9445503 39.7367663 -104.9450808 39.7367678
-15018 6021 9472 0.0470758089061738 0.0470758089061738 -104.9450808 39.7367678 -104.9456312 39.7367775
-15019 9472 3460 0.0470036762545936 0.0470036762545936 -104.9456312 39.7367775 -104.9461809 39.7367783
-15020 3460 7685 0.0954954207572325 0.0954954207572325 -104.9461809 39.7367783 -104.9472977 39.7367808
-15021 7685 8021 0.0933841388460347 0.0933841388460347 -104.9472977 39.7367808 -104.9483898 39.736785
-15022 8021 6698 0.0960778131259482 0.0960778131259482 -104.9483898 39.736785 -104.9495133 39.7367726
-15023 6698 4136 0.0911259816816344 0.0911259816816344 -104.9495133 39.7367726 -104.9505787 39.7367922
-15025 2663 8548 0.0930424439627818 0.0930424439627818 -104.9516859 39.7368054 -104.952774 39.7368006
-15026 8548 8547 0.100542623889621 0.100542623889621 -104.952774 39.7368006 -104.9539498 39.736794
-15027 8547 7338 0.099089032401214 0.099089032401214 -104.9539498 39.736794 -104.9551086 39.7368006
-15028 7338 7883 0.0990804723784167 0.0990804723784167 -104.9551086 39.7368006 -104.9562673 39.7368072
-15030 3337 5025 0.101286501750056 0.101286501750056 -104.9574002 39.7368138 -104.9585847 39.7368072
-15031 5025 9473 0.0504081121726349 0.0504081121726349 -104.9585847 39.7368072 -104.9591742 39.7368105
-15032 9473 8728 0.0508783896228212 0.0508783896228212 -104.9591742 39.7368105 -104.9597692 39.7368138
-15033 8728 3720 0.054613750451979 0.054613750451979 -104.9597692 39.7368138 -104.9604079 39.7368138
-16212 9849 7734 1.41107486941703 1.41107486941703 -104.9751748 39.6766887 -104.9751677 39.6893788
-15034 3720 6265 0.0510651820396187 0.0510651820396187 -104.9604079 39.7368138 -104.9610051 39.7368138
-15035 6265 9474 0.0526179865653065 0.0526179865653065 -104.9610051 39.7368138 -104.9616204 39.7368204
-15036 9474 1019 0.0530796783692756 0.0530796783692756 -104.9616204 39.7368204 -104.9622411 39.736827
-15037 1019 3889 0.105690016076173 0.105690016076173 -104.9622411 39.736827 -104.9634771 39.7368204
-15038 3889 8550 0.11082035773048 0.11082035773048 -104.9634771 39.7368204 -104.9647731 39.736827
-15039 8550 5418 0.102756492849076 0.102756492849076 -104.9647731 39.736827 -104.9659747 39.7368138
-15040 5418 7359 0.109377907466232 0.109377907466232 -104.9659747 39.7368138 -104.9672536 39.7368336
-15041 7359 6787 0.102485488457906 0.102485488457906 -104.9672536 39.7368336 -104.9684521 39.7368249
-15044 9414 5118 0.0507526262754685 0.0507526262754685 -104.9700963 39.736882 -104.9706897 39.7368921
-15047 7151 9476 0.0506273642355044 0.0506273642355044 -104.9718371 39.7368817 -104.9724291 39.7368742
-15048 9476 8834 0.0494473424354765 0.0494473424354765 -104.9724291 39.7368742 -104.9730073 39.7368668
-15049 8834 6016 0.046054397015081 0.046054397015081 -104.9730073 39.7368668 -104.9735459 39.7368668
-15051 979 5330 0.0485530564436786 0.0485530564436786 -104.9741314 39.7368706 -104.9746992 39.7368668
-15052 5330 8003 0.0503217691422663 0.0503217691422663 -104.9746992 39.7368668 -104.9752877 39.7368647
-15053 8003 6342 0.0507584862620106 0.0507584862620106 -104.9752877 39.7368647 -104.9758813 39.7368678
-15054 6342 5051 0.0488177307212986 0.0488177307212986 -104.9758813 39.7368678 -104.976452 39.7368799
-15055 5051 6690 0.0488248354973201 0.0488248354973201 -104.976452 39.7368799 -104.977023 39.7368798
-15056 6690 9477 0.0468154058850837 0.0468154058850837 -104.977023 39.7368798 -104.9775705 39.7368798
-15059 9313 7101 0.0478106623792446 0.0478106623792446 -104.9787299 39.7368736 -104.9792889 39.7368832
-15060 7101 8880 0.0490142389962295 0.0490142389962295 -104.9792889 39.7368832 -104.9798621 39.7368864
-15061 8880 7420 0.0493429457759385 0.0493429457759385 -104.9798621 39.7368864 -104.9804389 39.7368731
-15062 7420 8874 0.0545354482418663 0.0545354482418663 -104.9804389 39.7368731 -104.9810766 39.7368811
-15064 7430 8793 0.0542698797022772 0.0542698797022772 -104.9816663 39.7368655 -104.9823009 39.7368732
-15065 8793 7862 0.0521693260437922 0.0521693260437922 -104.9823009 39.7368732 -104.982911 39.7368701
-395 399 5 0.209508946543956 0.209508946543956 -104.9349127 39.7804818 -104.9373334 39.780183
-15066 7862 8787 0.05844527692302 0.05844527692302 -104.982911 39.7368701 -104.9835945 39.7368673
-15067 8787 7957 0.0531372993824669 0.0531372993824669 -104.9835945 39.7368673 -104.9842157 39.7368542
-15068 7957 9478 0.0541270300244316 0.0541270300244316 -104.9842157 39.7368542 -104.9848486 39.7368452
-15069 9478 9479 0.108902531529915 0.108902531529915 -104.9848486 39.7368452 -104.9861222 39.7368448
-15072 4481 9480 0.0910756678915429 0.0910756678915429 -104.9417177 39.7657064 -104.9406528 39.7656775
-15074 8706 9481 0.10111000413597 0.10111000413597 -104.9404758 39.7656404 -104.9392929 39.7656311
-15075 9481 9175 0.105113918003998 0.105113918003998 -104.9392929 39.7656311 -104.9380631 39.7656342
-15076 9175 7259 0.105567381342615 0.105567381342615 -104.9380631 39.7656342 -104.936828 39.7656384
-15077 7259 7589 0.103856965848258 0.103856965848258 -104.936828 39.7656384 -104.9356129 39.7656394
-15079 3366 2770 0.104765166628809 0.104765166628809 -104.9343764 39.7656425 -104.9331507 39.7656487
-15080 2770 9176 0.11373488606323 0.11373488606323 -104.9331507 39.7656487 -104.9318203 39.7656281
-15081 9176 2260 0.11073804654165 0.11073804654165 -104.9318203 39.7656281 -104.9305261 39.7655817
-15082 2260 3611 0.0999509846289259 0.0999509846289259 -104.9305261 39.7655817 -104.9293567 39.7655827
-15083 3611 7516 0.100649754002954 0.100649754002954 -104.9293567 39.7655827 -104.9281792 39.765593
-15084 7516 2109 0.103508831759163 0.103508831759163 -104.9281792 39.765593 -104.9269682 39.7655992
-15085 2109 5999 0.10202033489304 0.10202033489304 -104.9269682 39.7655992 -104.9257746 39.7656033
-15086 5999 7660 0.0994984857017093 0.0994984857017093 -104.9257746 39.7656033 -104.9246105 39.7656064
-15087 7660 2328 0.04986487628669 0.04986487628669 -104.9246105 39.7656064 -104.9240271 39.7656085
-15118 9482 9225 0.0953635356752473 0.0953635356752473 -104.9407267 39.776725 -104.9407352 39.7758674
-15120 9455 301 0.129823177853557 0.129823177853557 -104.9405397 39.7767118 -104.9405292 39.7778793
-15116 9490 8276 0.218414071885788 0.218414071885788 -104.9975705 39.7571365 -104.9977757 39.7551786
-15121 301 8269 0.152583336977896 0.152583336977896 -104.9405292 39.7778793 -104.9404976 39.7792513
-15126 226 8268 0.0760384791094216 0.0760384791094216 -104.940692 39.7797323 -104.9407004 39.7790485
-15128 225 9482 0.128957275100235 0.128957275100235 -104.9407032 39.7778846 -104.9407267 39.776725
-15130 9491 460 0.0667391949721685 0.0667391949721685 -104.9405035 39.7797395 -104.9405035 39.7803397
-15132 460 575 0.113707068563865 0.113707068563865 -104.9405035 39.7803397 -104.9404777 39.7813621
-15133 575 6199 0.0290617477448439 0.0290617477448439 -104.9404777 39.7813621 -104.9404705 39.7816234
-15135 9492 8244 0.032549465488295 0.032549465488295 -104.9497268 39.7819174 -104.9498727 39.781647
-15136 8244 9493 0.0198582826309584 0.0198582826309584 -104.9498727 39.781647 -104.9498899 39.7814689
-15138 6689 228 0.0134361080204136 0.0134361080204136 -104.9497884 39.7789167 -104.949699 39.7790161
-15139 228 9494 0.0329072670561094 0.0329072670561094 -104.949699 39.7790161 -104.9496925 39.779312
-15140 9494 9495 0.0242107567854742 0.0242107567854742 -104.9496925 39.779312 -104.9496974 39.7795297
-15142 9496 9497 0.0238335404645399 0.0238335404645399 -104.9498734 39.7795231 -104.949868 39.7793088
-15143 9497 9498 0.0343814713189183 0.0343814713189183 -104.949868 39.7793088 -104.949868 39.7789996
-15966 7623 6935 0.205023089639109 0.205023089639109 -105.0062462 39.7112115 -105.008643 39.711203
-15967 6935 5889 0.201769701232267 0.201769701232267 -105.008643 39.711203 -105.0110016 39.7111799
-15968 5889 7449 0.284161489263658 0.284161489263658 -105.0110016 39.7111799 -105.014321 39.711079
-15969 7449 1636 0.117888722564013 0.117888722564013 -105.014321 39.711079 -105.0156951 39.7111605
-15970 1636 8998 0.102786876242831 0.102786876242831 -105.0156951 39.7111605 -105.0168967 39.7111539
-15972 4214 8094 0.0961834163674376 0.0961834163674376 -105.0180211 39.7111539 -105.0191455 39.7111473
-15973 8094 194 0.104992906429488 0.104992906429488 -105.0191455 39.7111473 -105.0203728 39.7111341
-15974 194 2923 0.0991259111035959 0.0991259111035959 -105.0203728 39.7111341 -105.0215316 39.7111407
-15975 2923 5306 0.0991964539292107 0.0991964539292107 -105.0215316 39.7111407 -105.0226912 39.7111319
-15976 5306 1461 0.0983899476582488 0.0983899476582488 -105.0226912 39.7111319 -105.0238413 39.7111451
-15977 1461 5434 0.104614166406686 0.104614166406686 -105.0238413 39.7111451 -105.0250638 39.7111718
-15978 5434 5973 0.107640436770916 0.107640436770916 -105.0250638 39.7111718 -105.0263219 39.7111517
-15979 5973 9014 0.00660364948230504 0.00660364948230504 -105.0263219 39.7111517 -105.0263991 39.7111517
-15980 9014 7915 0.0975740293794765 0.0975740293794765 -105.0263991 39.7111517 -105.0275397 39.7111407
-15981 7915 6437 0.105749746230322 0.105749746230322 -105.0275397 39.7111407 -105.0287757 39.7111605
-16016 9786 9159 0.00790012825467591 0.00790012825467591 -104.9960586 39.703233 -104.9961123 39.7031752
-15982 6437 4420 0.102051245715481 0.102051245715481 -105.0287757 39.7111605 -105.0299687 39.7111671
-15985 5328 7056 0.0812625038007973 0.0812625038007973 -105.0327094 39.7111941 -105.0336594 39.7111935
-15986 7056 9772 0.0538313043287529 0.0538313043287529 -105.0336594 39.7111935 -105.0342887 39.7111901
-15987 9772 4318 0.0518980074233638 0.0518980074233638 -105.0342887 39.7111901 -105.0348954 39.7111869
-15988 4318 9452 0.0516277273460522 0.0516277273460522 -105.0348954 39.7111869 -105.0354984 39.7112068
-15990 4506 4116 0.0518058126204102 0.0518058126204102 -105.036097 39.7112265 -105.0367025 39.7112166
-15991 4116 7809 0.0517374039809394 0.0517374039809394 -105.0367025 39.7112166 -105.0373072 39.7112067
-15992 7809 5068 0.0991665346425536 0.0991665346425536 -105.0373072 39.7112067 -105.038466 39.7112331
-15993 5068 9773 0.0531370753578357 0.0531370753578357 -105.038466 39.7112331 -105.0390872 39.7112331
-15994 9773 6836 0.0533167080983746 0.0533167080983746 -105.0390872 39.7112331 -105.0397105 39.7112331
-15995 6836 6978 0.101324072393449 0.101324072393449 -105.0397105 39.7112331 -105.040895 39.7112397
-15996 6978 7941 0.102826343168107 0.102826343168107 -105.040895 39.7112397 -105.0420966 39.7112662
-15997 7941 9015 0.0975512129036908 0.0975512129036908 -105.0420966 39.7112662 -105.043237 39.711272
-15998 9015 6780 0.448938989090037 0.448938989090037 -105.043237 39.711272 -105.0484853 39.7112864
-15999 6780 9774 0.408854845876832 0.408854845876832 -105.0484853 39.7112864 -105.0532648 39.7113225
-16000 9076 9768 0.0663101767153915 0.0663101767153915 -104.999744 39.711198 -105.0005192 39.711198
-16004 9776 1455 0.0526013194004238 0.0526013194004238 -105.004167 39.6923239 -105.0039409 39.6927638
-16006 9777 1736 0.0786842572590025 0.0786842572590025 -105.0060257 39.6906026 -105.0057005 39.6912645
-16092 526 9805 0.0239836164906123 0.0239836164906123 -104.9499002 39.7803085 -104.9498921 39.7800929
-16044 9806 9807 0.10708389115039 0.10708389115039 -105.0037663 39.6918863 -105.0050077 39.6920085
-16046 9808 9779 0.598201231733375 0.598201231733375 -104.9924203 39.68926 -104.9993937 39.6888781
-16048 9809 8448 0.00611949423172489 0.00611949423172489 -104.9828551 39.6889832 -104.9827836 39.688982
-16050 497 315 0.38487204905166 0.38487204905166 -105.0147909 39.7286028 -105.0132442 39.7253524
-16051 315 9125 0.309277404563432 0.309277404563432 -105.0132442 39.7253524 -105.0111017 39.7231117
-16053 9092 238 0.378305028269765 0.378305028269765 -105.0245174 39.7255447 -105.0289409 39.7255444
-14687 2318 2393 0.204381692629994 0.204381692629994 -104.9711696 39.7237463 -104.971187 39.7255843
-16054 238 599 0.20185675523074 0.20185675523074 -105.0289409 39.7255444 -105.0313012 39.7255444
-16055 599 9810 1.85367980178975 1.85367980178975 -105.0313012 39.7255444 -105.0529735 39.7258084
-16057 4648 9242 0.316343707887743 0.316343707887743 -105.0186498 39.72565 -105.0223459 39.7257626
-16530 9931 9230 0.37930803087461 0.37930803087461 -104.9975856 39.7082938 -104.9961257 39.7050728
-16060 8979 9416 0.148643981954463 0.148643981954463 -104.9905824 39.7719014 -104.99143 39.7707341
-16062 9129 442 0.133338694466943 0.133338694466943 -105.0154242 39.731054 -105.01561 39.7322446
-16063 442 341 0.15400049730887 0.15400049730887 -105.01561 39.7322446 -105.0154562 39.7336245
-16064 341 8432 0.0419891636299648 0.0419891636299648 -105.0154562 39.7336245 -105.0153422 39.7339918
-16066 8912 8951 0.033170976893888 0.033170976893888 -104.9956858 39.7676849 -104.9953492 39.7678334
-16068 9812 8911 0.0471463735469582 0.0471463735469582 -104.9915921 39.7695911 -104.9912548 39.7699266
-16070 8259 6154 0.322113932922047 0.322113932922047 -104.9757153 39.7797326 -104.9794838 39.7796685
-16072 8262 9813 0.347409770060633 0.347409770060633 -104.9882873 39.7806922 -104.9922437 39.7814112
-16073 9813 8849 0.384076686987265 0.384076686987265 -104.9922437 39.7814112 -104.9966205 39.782197
-16075 8850 8934 0.249988221702048 0.249988221702048 -104.9897894 39.7769264 -104.9901787 39.7746982
-15149 1055 2652 0.0975577285651678 0.0975577285651678 -104.9529111 39.7804333 -104.951864 39.7807829
-15178 9518 9519 0.0502534780761684 0.0502534780761684 -105.0416701 39.740356 -105.0422578 39.7403509
-15150 2652 6953 0.198623612037648 0.198623612037648 -104.951864 39.7807829 -104.9500616 39.7819108
-15152 9492 9502 0.376572648781266 0.376572648781266 -104.9497268 39.7819174 -104.9534622 39.7801206
-15156 3293 102 0.41551161582069 0.41551161582069 -104.9427803 39.703814 -104.9415109 39.7002071
-15160 4010 9505 0.052772682936521 0.052772682936521 -105.0298922 39.7403326 -105.0305094 39.7403332
-15161 9505 7047 0.0525680538450832 0.0525680538450832 -105.0305094 39.7403332 -105.0311242 39.7403355
-15162 7047 7019 0.0303888581356532 0.0303888581356532 -105.0311242 39.7403355 -105.0314796 39.7403377
-15163 7019 9506 0.0673030688563473 0.0673030688563473 -105.0314796 39.7403377 -105.0322667 39.7403316
-15164 9506 9507 0.0483154741652978 0.0483154741652978 -105.0322667 39.7403316 -105.0328316 39.7403209
-15165 9507 7386 0.0202051235057141 0.0202051235057141 -105.0328316 39.7403209 -105.0330679 39.7403194
-16629 9962 9963 0.200783522780218 0.200783522780218 -104.9592628 39.7399435 -104.9616093 39.739874
-15167 9508 9509 0.0505081496090435 0.0505081496090435 -105.0334112 39.7403128 -105.0340019 39.7403161
-15169 3381 9510 0.054679375210741 0.054679375210741 -105.0346043 39.7403194 -105.0352438 39.7403194
-15170 9510 9511 0.0487967465713328 0.0487967465713328 -105.0352438 39.7403194 -105.0358145 39.7403194
-15175 9515 9516 0.0511072604930319 0.0511072604930319 -105.0381491 39.7403326 -105.0387468 39.7403366
-15176 9516 9517 0.199298430530572 0.199298430530572 -105.0387468 39.7403366 -105.0410776 39.740352
-15177 9517 9518 0.0506626460359665 0.0506626460359665 -105.0410776 39.740352 -105.0416701 39.740356
-15179 9519 9520 0.0992839733792875 0.0992839733792875 -105.0422578 39.7403509 -105.0434189 39.740341
-2659 2617 2618 0.0492730897550554 0.0492730897550554 -104.9957832 39.7225228 -104.9963593 39.7225267
-15180 9520 5591 0.0515928611698618 0.0515928611698618 -105.0434189 39.740341 -105.0440223 39.7403422
-15181 5591 9521 0.0485416940170638 0.0485416940170638 -105.0440223 39.7403422 -105.04459 39.7403388
-15182 9521 7534 0.0495967074681937 0.0495967074681937 -105.04459 39.7403388 -105.04517 39.7403326
-15183 7534 9522 0.687013260502188 0.687013260502188 -105.04517 39.7403326 -105.0532048 39.7403683
-15184 4010 253 0.115254186613677 0.115254186613677 -105.0298922 39.7403326 -105.0285448 39.740303
-15185 253 9523 0.265666797076755 0.265666797076755 -105.0285448 39.740303 -105.0254385 39.740357
-16090 9493 9818 0.0359382002911722 0.0359382002911722 -104.9498899 39.7814689 -104.9498899 39.7811457
-16093 9805 9821 0.0110994776170347 0.0110994776170347 -104.9498921 39.7800929 -104.9498895 39.7799931
-16096 9495 9822 0.0517988653877033 0.0517988653877033 -104.9496974 39.7795297 -104.9497205 39.7799952
-16097 9822 9823 0.0110663007110829 0.0110663007110829 -104.9497205 39.7799952 -104.9497178 39.7800947
-16098 9823 525 0.0383908840803154 0.0383908840803154 -104.9497178 39.7800947 -104.9497096 39.7804399
-16099 525 9824 0.0469464980296333 0.0469464980296333 -104.9497096 39.7804399 -104.9497096 39.7808621
-16107 214 9827 0.778079889437356 0.778079889437356 -104.9627533 39.7801312 -104.9718556 39.7799532
-16108 9827 8266 0.110384878461573 0.110384878461573 -104.9718556 39.7799532 -104.9731431 39.7798728
-16109 8266 8259 0.22035773346297 0.22035773346297 -104.9731431 39.7798728 -104.9757153 39.7797326
-16111 426 5290 0.135279903383581 0.135279903383581 -105.0252144 39.7427283 -105.0252168 39.7439449
-16112 5290 6969 0.13394711160262 0.13394711160262 -105.0252168 39.7439449 -105.0252247 39.7451495
-16113 6969 9 0.133723176212026 0.133723176212026 -105.0252247 39.7451495 -105.0252223 39.7463521
-12362 8672 8673 0.0280927507040958 0.0280927507040958 -105.011589 39.7530795 -105.0113745 39.7528881
-16114 9 6393 0.135759876984547 0.135759876984547 -105.0252223 39.7463521 -105.0252309 39.747573
-16116 543 2417 0.140823258017981 0.140823258017981 -105.0222025 39.7405643 -105.0238493 39.7405447
-16117 2417 8309 0.134744289641959 0.134744289641959 -105.0238493 39.7405447 -105.0254224 39.7404725
-16121 9523 8323 0.0490645159279825 0.0490645159279825 -105.0254385 39.740357 -105.0248659 39.7403859
-16122 8323 2296 0.111956296963114 0.111956296963114 -105.0248659 39.7403859 -105.0235583 39.7404384
-16123 2296 425 0.133707313641353 0.133707313641353 -105.0235583 39.7404384 -105.0219946 39.7404498
-16125 8580 9121 0.223068039429751 0.223068039429751 -105.0251093 39.7234923 -105.022529 39.7237852
-16129 4649 7955 0.0999111170250792 0.0999111170250792 -105.0186468 39.7257296 -105.0198149 39.7257444
-16130 7955 9828 0.0800171872297717 0.0800171872297717 -105.0198149 39.7257444 -105.0207505 39.725751
-16131 9829 8581 0.047687571765354 0.047687571765354 -105.0256672 39.7245362 -105.0251096 39.7245361
-16133 9073 1815 0.113861635058861 0.113861635058861 -105.0251226 39.7293097 -105.0264272 39.7291051
-16134 1815 9030 0.0294613091189667 0.0294613091189667 -105.0264272 39.7291051 -105.0266512 39.7293064
-16135 9030 9035 0.0740720067279475 0.0740720067279475 -105.0266512 39.7293064 -105.0275173 39.7293147
-16136 9035 2259 0.0101253625653209 0.0101253625653209 -105.0275173 39.7293147 -105.0276357 39.7293142
-16137 2259 6127 0.0869883467865613 0.0869883467865613 -105.0276357 39.7293142 -105.0286529 39.7293168
-16138 6127 3970 0.0982525233162176 0.0982525233162176 -105.0286529 39.7293168 -105.0298017 39.7293298
-16139 3970 4005 0.0213357195383616 0.0213357195383616 -105.0298017 39.7293298 -105.0300506 39.7293166
-16170 9839 7732 1.81004213705151 1.81004213705151 -104.9763369 39.6731074 -104.9763378 39.6893855
-16140 4005 9831 0.0527909920856998 0.0527909920856998 -105.0300506 39.7293166 -105.0306678 39.7293074
-16143 7028 9832 0.0518403992809488 0.0518403992809488 -105.0312846 39.729303 -105.0318908 39.729303
-16144 9832 1405 0.0193610465151665 0.0193610465151665 -105.0318908 39.729303 -105.0321172 39.729303
-16145 1405 9086 0.0330290864914803 0.0330290864914803 -105.0321172 39.729303 -105.0325034 39.7293066
-16146 9086 9833 0.0517615954401031 0.0517615954401031 -105.0325034 39.7293066 -105.0331086 39.7293141
-16147 9833 7389 0.013992344500971 0.013992344500971 -105.0331086 39.7293141 -105.0332722 39.7293161
-16148 7389 7381 0.039974198258354 0.039974198258354 -105.0332722 39.7293161 -105.0337396 39.7293113
-16149 7381 5215 0.0612246627137571 0.0612246627137571 -105.0337396 39.7293113 -105.0344555 39.7293058
-16150 5215 3395 0.05711231452959 0.05711231452959 -105.0344555 39.7293058 -105.0351232 39.7293166
-16152 7953 9834 0.0172080507351113 0.0172080507351113 -105.0198924 39.7392785 -105.019887 39.7394332
-16154 9834 274 0.0658337540289098 0.0658337540289098 -105.019887 39.7394332 -105.0198763 39.7400252
-16156 2189 9835 0.248404343096233 0.248404343096233 -105.0159036 39.7398341 -105.0143087 39.7379669
-16214 8735 9837 1.99433693652165 1.99433693652165 -104.9740308 39.6892204 -104.9740442 39.6712849
-16215 8737 9838 0.871081020569746 0.871081020569746 -104.9716711 39.6881426 -104.9716482 39.6803088
-4419 2776 4130 0.131599235651272 0.131599235651272 -104.9511832 39.7669218 -104.9511844 39.7681053
-16159 9143 9028 0.680206597840058 0.680206597840058 -105.0032713 39.7288521 -105.0112026 39.7293142
-16163 722 8058 0.174054831255352 0.174054831255352 -105.004084 39.7289511 -105.0040758 39.7305164
-16164 8058 521 0.0821177779256467 0.0821177779256467 -105.0040758 39.7305164 -105.0040731 39.7312549
-16165 521 6603 0.0924366308750619 0.0924366308750619 -105.0040731 39.7312549 -105.0040758 39.7320862
-16166 6603 5373 0.180047417371753 0.180047417371753 -105.0040758 39.7320862 -105.0040704 39.7337054
-16168 1948 2528 0.0688038536836977 0.0688038536836977 -105.0095234 39.7384742 -105.010328 39.7384824
-16333 7146 2907 0.104983935013538 0.104983935013538 -104.9721238 39.7620063 -104.9733504 39.7620548
-16334 2907 7925 0.0494998939900097 0.0494998939900097 -104.9733504 39.7620548 -104.9739262 39.7620073
-16338 3444 3467 0.0304982971000002 0.0304982971000002 -104.9462569 39.7617553 -104.9459001 39.7617543
-16339 3467 8082 0.246312262462312 0.246312262462312 -104.9459001 39.7617543 -104.9430328 39.7615337
-16342 8704 8153 0.0931754474511838 0.0931754474511838 -104.9404955 39.7617894 -104.9394065 39.7618265
-16343 8153 7614 0.0941189496630448 0.0941189496630448 -104.9394065 39.7618265 -104.9383054 39.7618296
-16344 7614 7267 0.0948021938707784 0.0948021938707784 -104.9383054 39.7618296 -104.9371963 39.7618306
-16345 7267 7586 0.0921634745405222 0.0921634745405222 -104.9371963 39.7618306 -104.9361181 39.7618368
-16346 7586 7587 0.0431064926802277 0.0431064926802277 -104.9361181 39.7618368 -104.9356138 39.7618347
-16347 7587 2005 0.0500940428381568 0.0500940428381568 -104.9356138 39.7618347 -104.9350278 39.7618409
-16348 2005 3364 0.0956080752868491 0.0956080752868491 -104.9350278 39.7618409 -104.9339093 39.7618471
-16349 3364 2759 0.0936601356465838 0.0936601356465838 -104.9339093 39.7618471 -104.9328136 39.7618543
-16350 2759 7009 0.0948690491965415 0.0948690491965415 -104.9328136 39.7618543 -104.9317039 39.7618388
-16352 2285 3605 0.100419536914451 0.100419536914451 -104.9305592 39.7618327 -104.9293844 39.7618378
-16353 3605 7531 0.0985834303955712 0.0985834303955712 -104.9293844 39.7618378 -104.9282311 39.761845
-16354 7531 2140 0.105692387990087 0.105692387990087 -104.9282311 39.761845 -104.9269946 39.7618481
-16355 2140 5996 0.104777507715381 0.104777507715381 -104.9269946 39.7618481 -104.9257688 39.7618503
-16356 5996 7676 0.0990116406010299 0.0990116406010299 -104.9257688 39.7618503 -104.9246105 39.7618584
-16357 7676 9874 1.60848579675559 1.60848579675559 -104.9246105 39.7618584 -104.9057927 39.7618262
-17199 2711 10073 0.10997712384001 0.10997712384001 -105.0233999 39.7473921 -105.0225148 39.7466744
-16358 9875 2326 1.55889022258017 1.55889022258017 -104.9057918 39.7619791 -104.9240294 39.7620162
-16360 5997 2127 0.151773007567564 0.151773007567564 -104.9258117 39.7620121 -104.9275873 39.7620069
-16361 2127 3609 0.151558147644208 0.151558147644208 -104.9275873 39.7620069 -104.9293603 39.7619925
-16362 3609 7010 0.212760869396779 0.212760869396779 -104.9293603 39.7619925 -104.9318494 39.7619997
-16365 3365 2006 0.0553745270182344 0.0553745270182344 -104.93438 39.7620028 -104.9350278 39.7619977
-16366 2006 7588 0.0502101113635407 0.0502101113635407 -104.9350278 39.7619977 -104.9356152 39.7619945
-16367 7588 7258 0.104315488387994 0.104315488387994 -104.9356152 39.7619945 -104.9368356 39.7619935
-16368 7258 7615 0.106145187491952 0.106145187491952 -104.9368356 39.7619935 -104.9380774 39.7619904
-16369 7615 9877 0.104437372352784 0.104437372352784 -104.9380774 39.7619904 -104.9392992 39.7619966
-16429 9892 3407 0.0665957848901693 0.0665957848901693 -104.9695204 39.6969176 -104.9699417 39.6974212
-16430 3407 9893 0.16801404607557 0.16801404607557 -104.9699417 39.6974212 -104.9715317 39.698308
-16433 9895 9896 0.440540235104303 0.440540235104303 -104.9718554 39.6986422 -104.9713614 39.7025858
-16436 9897 9898 0.0704932318773383 0.0704932318773383 -104.968823 39.6933724 -104.9681189 39.6930432
-16438 95 3655 0.111235679997702 0.111235679997702 -104.9551461 39.7002095 -104.9546075 39.70112
-16440 9899 5747 0.0711149911978779 0.0711149911978779 -104.9676535 39.6937356 -104.9676964 39.6930969
-16445 9902 9903 0.536321309295718 0.536321309295718 -104.9732597 39.6931641 -104.9732302 39.6979873
-16453 9908 9909 0.550826257700494 0.550826257700494 -104.9731739 39.7014254 -104.9730512 39.7063782
-16458 9907 9908 0.00771583659604379 0.00771583659604379 -104.9730961 39.7013903 -104.9731739 39.7014254
-16460 9909 9912 0.0865311626257968 0.0865311626257968 -104.9730512 39.7063782 -104.9726409 39.7070895
-16461 9912 9910 0.0378168798460609 0.0378168798460609 -104.9726409 39.7070895 -104.9724845 39.7074076
-16471 3282 9916 0.18653100874984 0.18653100874984 -104.9687946 39.7020548 -104.9687858 39.7003773
-16473 9917 8680 0.0249041944601551 0.0249041944601551 -104.9694498 39.7035446 -104.9691913 39.7036476
-19510 10535 10536 0.0273195782326388 0.0273195782326388 -104.9882297 39.7088075 -104.9879104 39.7088024
-16475 8507 9918 0.021850852998121 0.021850852998121 -104.9777748 39.7546175 -104.9779759 39.7547388
-16476 9918 3018 0.0101317448895217 0.0101317448895217 -104.9779759 39.7547388 -104.9780672 39.7547969
-16478 9919 9920 0.0829003664734834 0.0829003664734834 -104.9871822 39.7475219 -104.9862126 39.7475301
-16479 9921 3681 0.0300651916457247 0.0300651916457247 -104.9835546 39.7478188 -104.9836002 39.7475507
-16668 9926 9974 0.105582813458159 0.105582813458159 -105.005919 39.7444156 -105.0070019 39.7439592
-16669 9588 1633 0.0730557533632891 0.0730557533632891 -105.0043197 39.7412126 -105.0035017 39.7410228
-16671 9928 9975 0.0177169257267767 0.0177169257267767 -105.0062945 39.7430132 -105.0061758 39.7428826
-117 124 125 0.0336263849765442 0.0336263849765442 -105.0043775 39.7602205 -105.0040777 39.7604163
-16672 9975 9929 0.0234356081852519 0.0234356081852519 -105.0061758 39.7428826 -105.0061216 39.7430892
-16674 9976 9977 0.0468170562405583 0.0468170562405583 -105.0075867 39.7422556 -105.0080641 39.7420494
-16710 104 7825 0.0602462277844684 0.0602462277844684 -104.9874778 39.7002508 -104.9875714 39.7007878
-16712 104 3757 0.402008044434906 0.402008044434906 -104.9874778 39.7002508 -104.9873962 39.696636
-16713 3757 1487 0.204145741130723 0.204145741130723 -104.9873962 39.696636 -104.9874337 39.6948003
-16714 1487 132 0.199447130341484 0.199447130341484 -104.9874337 39.6948003 -104.9874659 39.6930068
-16716 1701 5546 0.198096603236586 0.198096603236586 -104.9875011 39.6911908 -104.9874887 39.6894093
-16777 69 3510 0.205561826495526 0.205561826495526 -104.9675826 39.7002312 -104.9675508 39.6983827
-4421 1201 4132 0.0220332988005433 0.0220332988005433 -104.9505615 39.7271353 -104.9505673 39.7273334
-16718 7283 485 0.11761309283436 0.11761309283436 -104.9871988 39.7019884 -104.9862761 39.7027725
-16720 10003 3244 0.0554692551325786 0.0554692551325786 -104.9862718 39.703372 -104.9862629 39.7038708
-16721 3244 7234 0.20486059291662 0.20486059291662 -104.9862629 39.7038708 -104.9862815 39.7057131
-16722 7234 1896 0.200393401337734 0.200393401337734 -104.9862815 39.7057131 -104.9863459 39.7075146
-16723 1896 6106 0.199619177779868 0.199619177779868 -104.9863459 39.7075146 -104.9863727 39.7093097
-16724 6106 3190 0.204209613390108 0.204209613390108 -104.9863727 39.7093097 -104.98637 39.7111462
-16725 3190 3074 0.20155062603718 0.20155062603718 -104.98637 39.7111462 -104.9862922 39.7129578
-17204 10076 9899 0.140445516840247 0.140445516840247 -104.9687509 39.6946749 -104.9676535 39.6937356
-17206 10077 9891 0.365702001724341 0.365702001724341 -104.968787 39.6999605 -104.9688482 39.696672
-17210 9916 551 0.0168353379628002 0.0168353379628002 -104.9687858 39.7003773 -104.9687844 39.7002259
-17211 551 10077 0.029511971826839 0.029511971826839 -104.9687844 39.7002259 -104.968787 39.6999605
-17221 9830 5174 0.203086414023487 0.203086414023487 -104.9774882 39.7146931 -104.9774882 39.7165195
-17225 7299 3774 0.0270450210392685 0.0270450210392685 -104.9774985 39.7020281 -104.9774885 39.7022712
-17227 10078 240 0.11490035547177 0.11490035547177 -104.9763987 39.6910611 -104.9752801 39.6904894
-17229 240 241 0.0697724132050665 0.0697724132050665 -104.9752801 39.6904894 -104.9745995 39.6901438
-17230 241 242 0.0623380559401012 0.0623380559401012 -104.9745995 39.6901438 -104.9739987 39.6898267
-17231 242 243 0.121807717540091 0.121807717540091 -104.9739987 39.6898267 -104.9728142 39.6892191
-17238 246 247 0.10870569104286 0.10870569104286 -104.9683485 39.6870395 -104.9672584 39.6865375
-17239 247 248 0.0772679392991742 0.0772679392991742 -104.9672584 39.6865375 -104.966468 39.6862015
-17241 235 3406 0.0743704107751119 0.0743704107751119 -104.9695743 39.6967741 -104.9701665 39.6972637
-17242 3406 10079 0.167074762801468 0.167074762801468 -104.9701665 39.6972637 -104.9716804 39.6982128
-17244 331 10014 0.0356018290483491 0.0356018290483491 -104.9522901 39.745499 -104.952676 39.7456193
-17245 10014 8533 0.134990804356131 0.134990804356131 -104.952676 39.7456193 -104.9542138 39.7458945
-17247 510 8534 0.190527366373376 0.190527366373376 -104.9547886 39.7479501 -104.9544306 39.7462589
-17249 9649 6335 0.0185334131201332 0.0185334131201332 -104.98616 39.7263757 -104.9861535 39.7265423
-17250 6335 10080 0.0823637888630556 0.0823637888630556 -104.9861535 39.7265423 -104.9861473 39.727283
-17251 10080 3812 0.199228355515768 0.199228355515768 -104.9861473 39.727283 -104.9861426 39.7290747
-17252 3812 5918 0.151375161417453 0.151375161417453 -104.9861426 39.7290747 -104.9861275 39.730436
-17254 917 2204 0.201707005619294 0.201707005619294 -104.9861344 39.7320479 -104.9861103 39.7338618
-17255 2204 4853 0.158074944552835 0.158074944552835 -104.9861103 39.7338618 -104.9861135 39.7352834
-17506 10119 8389 0.0881257330115891 0.0881257330115891 -105.0129247 39.7389937 -105.0124419 39.7396939
-17514 10115 4493 0.0857000040414071 0.0857000040414071 -105.0062313 39.7401322 -105.0052303 39.740093
-17515 4493 10122 0.00789608138487867 0.00789608138487867 -105.0052303 39.740093 -105.0051382 39.7400878
-17516 10122 10123 0.0829902602540724 0.0829902602540724 -105.0051382 39.7400878 -105.0041704 39.7400311
-17517 10123 3738 0.117121022748715 0.117121022748715 -105.0041704 39.7400311 -105.0028007 39.7400199
-16415 3033 3034 0.026586968802262 0.026586968802262 -104.9700513 39.702674 -104.9699305 39.7024537
-17518 3738 5617 0.105494461178937 0.105494461178937 -105.0028007 39.7400199 -105.0015669 39.7400197
-17519 5617 10124 0.0771328841888806 0.0771328841888806 -105.0015669 39.7400197 -105.0006648 39.7400196
-18717 1848 7866 0.175365518810985 0.175365518810985 -105.0343209 39.721329 -105.0343209 39.7197519
-17520 10124 3940 0.0438462962781839 0.0438462962781839 -105.0006648 39.7400196 -105.000152 39.7400197
-18649 10111 1854 0.1585792263447 0.1585792263447 -105.0379043 39.7199053 -105.0379177 39.7213314
-17522 6651 7970 0.100526894140491 0.100526894140491 -104.9999603 39.7400202 -104.9987846 39.7400184
-17523 7970 10125 0.0156643759566378 0.0156643759566378 -104.9987846 39.7400184 -104.9986014 39.7400179
-17525 342 10126 0.0436005942347808 0.0436005942347808 -105.0138715 39.7367088 -105.0137696 39.737093
-17527 10126 10121 0.0408685827486489 0.0408685827486489 -105.0137696 39.737093 -105.0137025 39.7374569
-17529 8016 10127 0.0296331396909763 0.0296331396909763 -104.9993111 39.7412509 -104.9989934 39.7413574
-17533 9200 10128 0.0316360066553629 0.0316360066553629 -104.9994716 39.7422305 -104.9997264 39.7420242
-17535 10128 3937 0.0160944313012695 0.0160944313012695 -104.9997264 39.7420242 -104.9998498 39.7419149
-17537 10125 10129 0.0323384241188202 0.0323384241188202 -104.9986014 39.7400179 -104.9982232 39.7400157
-17540 8937 10130 0.0382349269331771 0.0382349269331771 -104.9891177 39.7851166 -104.9891097 39.7854604
-18160 6035 10256 0.201529974874074 0.201529974874074 -105.0141159 39.7856183 -105.0141119 39.7874307
-18081 3725 3961 0.10669546577579 0.10669546577579 -104.9989294 39.7183897 -105.0001766 39.7184091
-18082 3961 5599 0.120037242247265 0.120037242247265 -105.0001766 39.7184091 -105.0015794 39.7184418
-18083 5599 10212 0.0720417181829305 0.0720417181829305 -105.0015794 39.7184418 -105.0024206 39.7184748
-18085 6582 8060 0.177813026382298 0.177813026382298 -104.9881664 39.732053 -104.9881587 39.7304539
-18087 79 3516 0.204359090736991 0.204359090736991 -104.9634844 39.7002269 -104.9634676 39.6983891
-18089 10257 1076 0.140362637117951 0.140362637117951 -105.010685 39.7858675 -105.009052 39.7857306
-18092 8839 10258 0.0505579939719693 0.0505579939719693 -105.0112028 39.7874224 -105.0117945 39.7874239
-18093 10258 1216 0.0474392361763922 0.0474392361763922 -105.0117945 39.7874239 -105.0123497 39.7874253
-18094 1216 6309 0.0509984491369365 0.0509984491369365 -105.0123497 39.7874253 -105.0129465 39.7874317
-18095 6309 4788 0.0491735679878017 0.0491735679878017 -105.0129465 39.7874317 -105.013522 39.787431
-18418 8332 8359 0.203675131612914 0.203675131612914 -105.0398789 39.7621198 -105.0399031 39.7639514
-18096 4788 10256 0.0504039235105897 0.0504039235105897 -105.013522 39.787431 -105.0141119 39.7874307
-18098 2169 10259 0.0494310424509836 0.0494310424509836 -105.0146868 39.7874303 -105.0152653 39.7874334
-18099 10259 6301 0.0486534339401342 0.0486534339401342 -105.0152653 39.7874334 -105.0158347 39.7874364
-18100 6301 10260 0.0495166429402865 0.0495166429402865 -105.0158347 39.7874364 -105.0164142 39.7874331
-18101 10260 6428 0.0494555977491468 0.0494555977491468 -105.0164142 39.7874331 -105.016993 39.7874341
-18102 6428 10261 0.0500541316962619 0.0500541316962619 -105.016993 39.7874341 -105.0175788 39.787432
-18103 10261 8837 0.049703265213276 0.049703265213276 -105.0175788 39.787432 -105.0181605 39.7874319
-18104 8837 10262 0.0487206483354329 0.0487206483354329 -105.0181605 39.7874319 -105.0187307 39.7874319
-18105 10262 4661 0.0502842889238415 0.0502842889238415 -105.0187307 39.7874319 -105.0193192 39.7874319
-18210 6766 8919 0.14588598272053 0.14588598272053 -105.0275892 39.7716046 -105.0258833 39.771558
-18215 6383 6883 0.201049789723751 0.201049789723751 -105.0422527 39.763944 -105.04223 39.765752
-18217 9380 6467 0.149037633666744 0.149037633666744 -105.0434002 39.7766311 -105.0434114 39.7752908
-18218 6467 5528 0.155039270882985 0.155039270882985 -105.0434114 39.7752908 -105.0434142 39.7738965
-18219 5528 5739 0.157509840329179 0.157509840329179 -105.0434142 39.7738965 -105.043424 39.77248
-18220 5739 2443 0.171457541049395 0.171457541049395 -105.043424 39.77248 -105.0434409 39.7709381
-18221 2443 9373 0.174175733096206 0.174175733096206 -105.0434409 39.7709381 -105.0434409 39.7693717
-18222 9373 1695 0.20076305206058 0.20076305206058 -105.0434409 39.7693717 -105.0434467 39.7675662
-18224 6884 8362 0.203398590237467 0.203398590237467 -105.0434307 39.76575 -105.0434239 39.7639208
-18225 8362 8336 0.20070690829837 0.20070690829837 -105.0434239 39.7639208 -105.043422 39.7621158
-18226 8336 7851 0.201718717149991 0.201718717149991 -105.043422 39.7621158 -105.0434222 39.7603017
-18228 9334 6072 0.194542227529238 0.194542227529238 -105.042148 39.7838703 -105.0421669 39.7856198
-18229 6072 2552 0.201793795787929 0.201793795787929 -105.0421669 39.7856198 -105.0421454 39.7874345
-18231 10282 2550 0.408975962052575 0.408975962052575 -105.0409706 39.791112 -105.0409813 39.787434
-18233 6070 9333 0.193859431649891 0.193859431649891 -105.0409894 39.7856189 -105.0409786 39.7838755
-18235 3976 7037 0.199530180994258 0.199530180994258 -105.0299305 39.7652213 -105.0322649 39.7652109
-200 212 213 0.0847562945477418 0.0847562945477418 -104.9665616 39.779672 -104.9655888 39.7798206
-18390 3978 7038 0.19806787554915 0.19806787554915 -105.0299479 39.7656395 -105.0322651 39.7656196
-18392 3425 3425 0.000442266584977921 0.000442266584977921 -105.034629 39.7657398 -105.0346312 39.7657434
-18397 9331 6062 0.201652000193759 0.201652000193759 -105.0351853 39.7838062 -105.0351851 39.7856197
-18398 6062 2541 0.201129932352607 0.201129932352607 -105.0351851 39.7856197 -105.0351796 39.7874285
-18581 5716 10279 0.0494611669239994 0.0494611669239994 -105.0357784 39.7802062 -105.0363572 39.7802082
-18582 10279 7436 0.0477007849303031 0.0477007849303031 -105.0363572 39.7802082 -105.0369154 39.7802101
-18583 7436 10283 0.0501702475316452 0.0501702475316452 -105.0369154 39.7802101 -105.0375025 39.7802085
-17420 10101 10103 0.0112555006692224 0.0112555006692224 -104.9831564 39.6890637 -104.9831832 39.6889646
-18584 10283 7175 0.0483500943699416 0.0483500943699416 -105.0375025 39.7802085 -105.0380683 39.7802069
-18585 7175 6738 0.0504392554289189 0.0504392554289189 -105.0380683 39.7802069 -105.0386585 39.7802009
-18586 6738 7790 0.0494479351051842 0.0494479351051842 -105.0386585 39.7802009 -105.0392371 39.780195
-18587 7790 6666 0.0500428725179926 0.0500428725179926 -105.0392371 39.780195 -105.0398227 39.780198
-19485 10408 10409 0.0449233009136641 0.0449233009136641 -104.9883415 39.7101799 -104.9883441 39.7097759
-18958 4669 4949 0.0991091352300086 0.0991091352300086 -104.994016 39.720921 -104.9951748 39.720921
-18959 4949 10410 0.051350182738824 0.051350182738824 -104.9951748 39.720921 -104.9957751 39.7209292
-18961 7220 10411 0.0512063955237151 0.0512063955237151 -104.9963617 39.7209372 -104.9969604 39.7209341
-18962 10411 5674 0.0503168586815151 0.0503168586815151 -104.9969604 39.7209341 -104.9975487 39.7209311
-18964 5851 1441 0.115857091100705 0.115857091100705 -105.0025228 39.7148211 -105.0038773 39.7148211
-18965 1441 10412 0.122824478936007 0.122824478936007 -105.0038773 39.7148211 -105.0053132 39.7148113
-18966 10412 7622 0.0791461153811418 0.0791461153811418 -105.0053132 39.7148113 -105.0062385 39.7148085
-18967 7622 6933 0.202629079077677 0.202629079077677 -105.0062385 39.7148085 -105.0086074 39.7148217
-18968 6933 5888 0.202049147826104 0.202049147826104 -105.0086074 39.7148217 -105.0109694 39.7148443
-18969 5888 10407 0.149951393120126 0.149951393120126 -105.0109694 39.7148443 -105.0127225 39.7148426
-18971 4142 7756 0.106122091000002 0.106122091000002 -104.9827054 39.7147303 -104.9814659 39.7146886
-18973 3621 1827 0.0998991515255571 0.0998991515255571 -104.9803587 39.7146886 -104.9791916 39.7147225
-18974 1827 10091 0.0457369036734835 0.0457369036734835 -104.9791916 39.7147225 -104.9786569 39.7147194
-18975 10091 10090 0.0485102588443954 0.0485102588443954 -104.9786569 39.7147194 -104.9780898 39.7147143
-18976 10090 5102 0.00428121670773934 0.00428121670773934 -104.9780898 39.7147143 -104.9780399 39.7147113
-18977 5102 9830 0.0472330884345854 0.0472330884345854 -104.9780399 39.7147113 -104.9774882 39.7146931
-18978 9830 1764 0.0499536922707767 0.0499536922707767 -104.9774882 39.7146931 -104.9769042 39.7146962
-19245 5031 10461 0.0349404698955745 0.0349404698955745 -104.9884893 39.7405273 -104.9888698 39.7406419
-19246 10461 10462 0.146091635323691 0.146091635323691 -104.9888698 39.7406419 -104.9904372 39.7401189
-19247 10462 5803 0.103032761304249 0.103032761304249 -104.9904372 39.7401189 -104.9916422 39.7401229
-19249 10129 4929 0.0162234814669486 0.0162234814669486 -104.9982232 39.7400157 -104.9980335 39.7400187
-19250 4929 2997 0.0775054077358341 0.0775054077358341 -104.9980335 39.7400187 -104.9971271 39.7400109
-19251 2997 7215 0.0556994645707447 0.0556994645707447 -104.9971271 39.7400109 -104.9964757 39.7400063
-19252 7215 4943 0.101417024663026 0.101417024663026 -104.9964757 39.7400063 -104.9952896 39.7400105
-19253 4943 4680 0.100527034724402 0.100527034724402 -104.9952896 39.7400105 -104.9941139 39.7400082
-19254 4680 7861 0.10148450975115 0.10148450975115 -104.9941139 39.7400082 -104.992927 39.7400066
-19255 7861 5802 0.109659923162335 0.109659923162335 -104.992927 39.7400066 -104.9916445 39.7400016
-19256 5802 8768 0.114010676979814 0.114010676979814 -104.9916445 39.7400016 -104.9903111 39.740001
-19257 8768 10464 0.134804410176221 0.134804410176221 -104.9903111 39.740001 -104.9888814 39.740512
-19258 10464 338 0.0847524339031626 0.0847524339031626 -104.9888814 39.740512 -104.9880444 39.7401037
-19259 338 10465 0.0582049460436449 0.0582049460436449 -104.9880444 39.7401037 -104.9873778 39.7399976
-19261 9467 561 0.02991036647086 0.02991036647086 -104.9851948 39.7400592 -104.984845 39.7400568
-15187 8324 9523 0.0327715210342319 0.0327715210342319 -105.0252084 39.7401213 -105.0254385 39.740357
-15189 9403 6744 0.131603339182178 0.131603339182178 -105.0252739 39.7499939 -105.0268132 39.7499821
-15190 6744 6144 0.131367316381262 0.131367316381262 -105.0268132 39.7499821 -105.0283496 39.7500019
-15191 6144 4018 0.137213550559119 0.137213550559119 -105.0283496 39.7500019 -105.0299546 39.7500019
-15192 4018 7022 0.137229962505115 0.137229962505115 -105.0299546 39.7500019 -105.0315597 39.7499887
-15193 7022 7392 0.129151524081427 0.129151524081427 -105.0315597 39.7499887 -105.0330703 39.7500019
-15195 9524 9525 0.0293502828068984 0.0293502828068984 -105.0336803 39.7499978 -105.0340236 39.7499955
-15196 9525 3400 0.0502879609443278 0.0502879609443278 -105.0340236 39.7499955 -105.0346118 39.7499915
-15198 9212 8374 0.0509876682022625 0.0509876682022625 -105.0351931 39.7499892 -105.0357895 39.7499869
-15199 8374 9526 0.0501407630476736 0.0501407630476736 -105.0357895 39.7499869 -105.036376 39.7499878
-15201 7443 9527 0.0485275735168955 0.0485275735168955 -105.036967 39.7499887 -105.0375346 39.7499841
-15202 9527 7160 0.0501690368011668 0.0501690368011668 -105.0375346 39.7499841 -105.0381214 39.7499794
-15204 9528 7772 0.0491757515961192 0.0491757515961192 -105.0387229 39.7499763 -105.0392981 39.7499733
-19414 3251 7295 0.215557365491205 0.215557365491205 -104.9798629 39.70396 -104.9798441 39.7020215
-19415 7295 38 0.193056632398898 0.193056632398898 -104.9798441 39.7020215 -104.9798443 39.7002853
-19416 38 3537 0.207444876530122 0.207444876530122 -104.9798443 39.7002853 -104.9798091 39.6984199
-19417 3537 4232 0.199406339345135 0.199406339345135 -104.9798091 39.6984199 -104.979804 39.6966266
-19419 3248 7289 0.216790622749105 0.216790622749105 -104.9821867 39.7039406 -104.9821695 39.701991
-19420 7289 34 0.19126988034169 0.19126988034169 -104.9821695 39.701991 -104.982156 39.7002709
-19660 6763 3987 0.201101495268523 0.201101495268523 -105.0275974 39.7702694 -105.0299489 39.7703339
-19664 9366 9360 0.104402218346712 0.104402218346712 -105.0211194 39.7692754 -105.0211255 39.7702143
-19665 9360 10609 0.0511942469588291 0.0511942469588291 -105.0211255 39.7702143 -105.0211243 39.7697539
-19666 10609 10608 0.151226661870126 0.151226661870126 -105.0211243 39.7697539 -105.0228937 39.7697604
-19668 10608 10610 0.149537813443153 0.149537813443153 -105.0228937 39.7697604 -105.0246432 39.7697786
-19674 1809 10611 0.33816836736717 0.33816836736717 -105.0077397 39.7522023 -105.0097356 39.7495766
-19676 10376 10403 0.0245741855053009 0.0245741855053009 -105.0120158 39.75012 -105.0122636 39.750008
-19678 10612 1810 0.127204321184034 0.127204321184034 -105.0098938 39.7498133 -105.0094107 39.7508953
-19681 10613 10400 0.0511661482023126 0.0511661482023126 -105.0138421 39.7489553 -105.0134743 39.7485923
-16697 7094 9611 0.00886963723885407 0.00886963723885407 -105.00026 39.7424182 -105.0002927 39.7424939
-19683 10614 10404 0.0688061700167682 0.0688061700167682 -105.0100065 39.7499782 -105.0107841 39.7498186
-19873 9513 4580 0.132311871209248 0.132311871209248 -105.0369818 39.740326 -105.0369879 39.7415159
-19684 10404 10611 0.093589959625359 0.093589959625359 -105.0107841 39.7498186 -105.0097356 39.7495766
-17421 10103 10082 0.0236886540751766 0.0236886540751766 -104.9831832 39.6889646 -104.9834085 39.6888408
-19685 10611 10612 0.0295914472405657 0.0295914472405657 -105.0097356 39.7495766 -105.0098938 39.7498133
-19686 10612 10614 0.0207133170517971 0.0207133170517971 -105.0098938 39.7498133 -105.0100065 39.7499782
-19688 10615 10399 0.0680853608411523 0.0680853608411523 -105.0130481 39.74858 -105.0126923 39.7491278
-19742 8865 3778 0.153182304960692 0.153182304960692 -104.9456473 39.7304952 -104.94565 39.7291176
-19743 3778 10251 0.199472712546792 0.199472712546792 -104.94565 39.7291176 -104.9456527 39.7273237
-20418 10775 10774 0.0781617215430941 0.0781617215430941 -105.0243213 39.7599965 -105.0243795 39.760698
-19804 10646 2619 0.0523061501297365 0.0523061501297365 -104.9969581 39.7230021 -104.9969572 39.7225317
-19839 10655 10656 0.208642261382715 0.208642261382715 -105.0381325 39.7365924 -105.0381528 39.7384687
-19840 10656 9515 0.207256465232075 0.207256465232075 -105.0381528 39.7384687 -105.0381491 39.7403326
-19841 9515 4581 0.131476935756536 0.131476935756536 -105.0381491 39.7403326 -105.0381505 39.741515
-19842 4581 8369 0.136571452698726 0.136571452698726 -105.0381505 39.741515 -105.0381422 39.7427432
-19843 8369 5296 0.134437189399661 0.134437189399661 -105.0381422 39.7427432 -105.0381646 39.7439521
-19849 9510 10659 0.196832023994668 0.196832023994668 -105.0352438 39.7403194 -105.035226 39.7385493
-19850 10659 10660 0.00933491084100046 0.00933491084100046 -105.035226 39.7385493 -105.0352222 39.7384654
-19857 10663 10664 0.203268481110854 0.203268481110854 -105.0428156 39.736637 -105.0428308 39.738465
-19858 10664 4584 0.340902950197611 0.340902950197611 -105.0428308 39.738465 -105.0428428 39.7415308
-19859 4584 6443 0.133958738324445 0.133958738324445 -105.0428428 39.7415308 -105.0428338 39.7427355
-19860 6443 5300 0.13749324562242 0.13749324562242 -105.0428338 39.7427355 -105.042839 39.743972
-19862 10665 7406 0.149893826243372 0.149893826243372 -104.9969526 39.7179403 -104.9969848 39.7165925
-19865 10667 9512 0.206545737430627 0.206545737430627 -105.0363945 39.7384652 -105.0364026 39.7403227
-608 599 600 0.326867712180581 0.326867712180581 -105.0313012 39.7255444 -105.0351121 39.7257688
-19870 10669 10666 0.0946602410525992 0.0946602410525992 -105.03696 39.7365924 -105.03696 39.7374437
-19871 10666 10670 0.114297265097593 0.114297265097593 -105.03696 39.7374437 -105.03696 39.7384716
-19872 10670 9513 0.206208296842551 0.206208296842551 -105.03696 39.7384716 -105.0369818 39.740326
-20654 6734 10882 0.0587106683934502 0.0587106683934502 -105.0187898 39.7597001 -105.0184964 39.7601775
-19874 4580 8368 0.136014360939856 0.136014360939856 -105.0369879 39.7415159 -105.0369827 39.7427391
-19875 8368 3817 0.133956606983629 0.133956606983629 -105.0369827 39.7427391 -105.0369844 39.7439438
-19887 627 10669 0.00369254651812945 0.00369254651812945 -105.0369171 39.7365886 -105.03696 39.7365924
-19888 10669 10673 0.0509541857454109 0.0509541857454109 -105.03696 39.7365924 -105.0375559 39.7365924
-19889 10673 7185 0.0463624089792375 0.0463624089792375 -105.0375559 39.7365924 -105.0380981 39.7365924
-19890 7185 10655 0.00294147338451417 0.00294147338451417 -105.0380981 39.7365924 -105.0381325 39.7365924
-19891 10655 10658 0.0513792379314705 0.0513792379314705 -105.0381325 39.7365924 -105.0387333 39.7365995
-19892 10658 9726 0.0479329871824602 0.0479329871824602 -105.0387333 39.7365995 -105.0392938 39.7366062
-19893 9726 10654 0.050711837363241 0.050711837363241 -105.0392938 39.7366062 -105.0398868 39.736613
-19894 10654 1102 0.049608905570541 0.049608905570541 -105.0398868 39.736613 -105.0404669 39.7366198
-19895 1102 10674 0.051538155846358 0.051538155846358 -105.0404669 39.7366198 -105.0410696 39.7366244
-19896 10674 7514 0.0472454257465845 0.0472454257465845 -105.0410696 39.7366244 -105.0416221 39.7366286
-19897 7514 10675 0.00204366911425749 0.00204366911425749 -105.0416221 39.7366286 -105.041646 39.7366287
-19898 10675 10650 0.0481859646371305 0.0481859646371305 -105.041646 39.7366287 -105.0422095 39.7366329
-19899 10650 3868 0.0500586048613679 0.0500586048613679 -105.0422095 39.7366329 -105.0427949 39.7366372
-16182 5547 1702 0.197838014226301 0.197838014226301 -104.9881577 39.6894044 -104.9881579 39.6911836
-19900 3868 10663 0.00177015306197821 0.00177015306197821 -105.0427949 39.7366372 -105.0428156 39.736637
-19902 10676 5589 0.0437900336804139 0.0437900336804139 -105.0434166 39.7366408 -105.0439287 39.736644
-19975 9710 10678 0.0499234178433857 0.0499234178433857 -105.0322594 39.7384585 -105.0328432 39.738465
-19976 10678 9722 0.0489092169162438 0.0489092169162438 -105.0328432 39.738465 -105.0334152 39.738465
-19977 9722 10686 0.0503973293919778 0.0503973293919778 -105.0334152 39.738465 -105.0340046 39.7384634
-19978 10686 3380 0.0518081278246911 0.0518081278246911 -105.0340046 39.7384634 -105.0346105 39.7384619
-19979 3380 10660 0.0523052391085021 0.0523052391085021 -105.0346105 39.7384619 -105.0352222 39.7384654
-19980 10660 10679 0.0495088072044065 0.0495088072044065 -105.0352222 39.7384654 -105.0358012 39.7384625
-19981 10679 10667 0.0507313759263116 0.0507313759263116 -105.0358012 39.7384625 -105.0363945 39.7384652
-19982 10667 10670 0.0483586645716411 0.0483586645716411 -105.0363945 39.7384652 -105.03696 39.7384716
-19983 10670 10680 0.0518679752837857 0.0518679752837857 -105.03696 39.7384716 -105.0375666 39.7384701
-19984 10680 10656 0.050123635320888 0.050123635320888 -105.0375666 39.7384701 -105.0381528 39.7384687
-19985 10656 10657 0.0496280116055878 0.0496280116055878 -105.0381528 39.7384687 -105.0387332 39.7384666
-19986 10657 9727 0.0488069327339047 0.0488069327339047 -105.0387332 39.7384666 -105.039304 39.7384682
-19989 1103 10684 0.0492526075164636 0.0492526075164636 -105.0404962 39.738465 -105.0410722 39.7384617
-656 646 647 0.146781335789774 0.146781335789774 -104.9354861 39.7413613 -104.9337694 39.7413613
-20153 9416 8943 0.363005134814212 0.363005134814212 -104.99143 39.7707341 -104.9945316 39.7685038
-20155 9241 426 0.0770893533882784 0.0770893533882784 -105.0252006 39.7420351 -105.0252144 39.7427283
-20157 461 6171 0.271278721099677 0.271278721099677 -104.9888564 39.7783921 -104.9860994 39.7796015
-20161 1795 8719 0.00999704268874585 0.00999704268874585 -104.9792579 39.6947744 -104.9792566 39.6946845
-20163 4233 1795 0.205432809418909 0.205432809418909 -104.9792547 39.6966219 -104.9792579 39.6947744
-20165 3252 7296 0.216277689734072 0.216277689734072 -104.9792822 39.7039665 -104.9792677 39.7020215
-20166 7296 39 0.192678596239665 0.192678596239665 -104.9792677 39.7020215 -104.9792689 39.7002887
-20167 39 3538 0.207091579860447 0.207091579860447 -104.9792689 39.7002887 -104.9792415 39.6984264
-20168 3538 4234 0.200695550258567 0.200695550258567 -104.9792415 39.6984264 -104.979217 39.6966216
-20170 6489 3675 0.150803028705812 0.150803028705812 -104.9787322 39.7461798 -104.9787278 39.747536
-20172 9313 4863 0.191918567433925 0.191918567433925 -104.9787299 39.7368736 -104.9787104 39.7351477
-20173 4863 2213 0.160028953629168 0.160028953629168 -104.9787104 39.7351477 -104.9786913 39.7337086
-20174 2213 928 0.187511558441934 0.187511558441934 -104.9786913 39.7337086 -104.9786778 39.7320223
-17423 10083 10104 0.109040593432451 0.109040593432451 -104.9836553 39.6886261 -104.9838931 39.6876627
-20175 928 5932 0.175834480120689 0.175834480120689 -104.9786778 39.7320223 -104.9787119 39.7304412
-20176 5932 3804 0.153555987473657 0.153555987473657 -104.9787119 39.7304412 -104.9787675 39.7290609
-20178 3804 10247 0.200040701273324 0.200040701273324 -104.9787675 39.7290609 -104.978775 39.7272619
-20181 6549 4768 0.17858020416066 0.17858020416066 -104.9787573 39.7240931 -104.9787498 39.7224871
-20185 10705 8247 0.0550533285282311 0.0550533285282311 -104.9639599 39.787996 -104.963496 39.7883396
-15205 7772 9040 0.0507978153373748 0.0507978153373748 -105.0392981 39.7499733 -105.0398922 39.7499655
-15206 9040 1113 0.0497891730866418 0.0497891730866418 -105.0398922 39.7499655 -105.0404745 39.7499577
-15208 9529 7493 0.0494909698776819 0.0494909698776819 -105.0410698 39.7499582 -105.0416487 39.7499586
-15209 7493 9169 0.051731129981418 0.051731129981418 -105.0416487 39.7499586 -105.0422538 39.749957
-15210 9169 3835 0.0502567043103765 0.0502567043103765 -105.0422538 39.749957 -105.0428416 39.7499633
-15212 5624 3708 0.103423232464888 0.103423232464888 -105.0017248 39.7755303 -105.002935 39.7755303
-15213 3708 718 0.104893137935114 0.104893137935114 -105.002935 39.7755303 -105.0041624 39.7755303
-15214 718 9442 0.108559355644902 0.108559355644902 -105.0041624 39.7755303 -105.0054327 39.7755303
-15215 9442 8519 0.0865482797270432 0.0865482797270432 -105.0054327 39.7755303 -105.0064452 39.7755134
-15218 539 540 0.260599478311813 0.260599478311813 -105.0461157 39.7530208 -105.0433843 39.7519802
-15220 9430 9531 0.0962600395709663 0.0962600395709663 -105.0442004 39.7548692 -105.0443549 39.7540117
-15232 8334 8360 0.0525484415568663 0.0525484415568663 -104.9244842 39.6961248 -104.9248705 39.6964922
-15234 9532 9533 0.00803607126282377 0.00803607126282377 -104.9348912 39.7066948 -104.9349851 39.7066969
-16285 2852 1362 0.131790180095648 0.131790180095648 -104.972242 39.697774 -104.9710484 39.6970248
-15236 9534 9535 0.0751513734309232 0.0751513734309232 -104.9352855 39.7067217 -104.9359493 39.706279
-15237 9535 9536 0.0195917533971332 0.0195917533971332 -104.9359493 39.706279 -104.9358729 39.7061129
-15238 9536 9537 0.0515491230280822 0.0515491230280822 -104.9358729 39.7061129 -104.935374 39.7058529
-18878 3216 6125 0.202386413121619 0.202386413121619 -104.9611349 39.7111011 -104.9611403 39.709281
-15239 9537 9538 0.0217956250277941 0.0217956250277941 -104.935374 39.7058529 -104.9352077 39.7057044
-15248 8177 9543 0.0137987617761691 0.0137987617761691 -104.9362135 39.7050335 -104.9363074 39.7049326
-15249 9541 9542 0.0585754347953461 0.0585754347953461 -104.93572 39.7055929 -104.936117 39.7051637
-15262 9552 9550 0.00461416645458039 0.00461416645458039 -104.9337027 39.7048954 -104.9336788 39.7049326
-15263 9550 8208 0.00942903742084459 0.00942903742084459 -104.9336788 39.7049326 -104.9336074 39.7049972
-15264 8208 8203 0.268586250441468 0.268586250441468 -104.9336074 39.7049972 -104.9333927 39.707407
-15265 8203 8187 0.252138571661244 0.252138571661244 -104.9333927 39.707407 -104.9332506 39.7096719
-15267 8182 9552 0.0592295781497915 0.0592295781497915 -104.9340007 39.7044146 -104.9337027 39.7048954
-15275 9553 392 0.159342904018314 0.159342904018314 -104.932842 39.703615 -104.932837 39.702182
-15276 392 443 0.100075433980265 0.100075433980265 -104.932837 39.702182 -104.932837 39.701282
-15277 443 8209 0.110751336507506 0.110751336507506 -104.932837 39.701282 -104.932831 39.700286
-15278 3258 9554 0.029060284587417 0.029060284587417 -104.9296823 39.7037068 -104.9294517 39.7035149
-15279 9555 9556 0.0194857519875014 0.0194857519875014 -104.9469862 39.7110374 -104.9468185 39.711156
-15280 9556 9557 0.01686832436596 0.01686832436596 -104.9468185 39.711156 -104.9466791 39.7112633
-15284 9558 8799 0.0124547414515574 0.0124547414515574 -104.9465426 39.7113542 -104.9464054 39.7113917
-15287 9268 8812 0.43752637477907 0.43752637477907 -104.946452 39.7115485 -104.9497656 39.714546
-15372 9568 7345 0.407049578137861 0.407049578137861 -104.9714922 39.7181793 -104.9667331 39.7181803
-15373 7345 7369 0.0183549065123627 0.0183549065123627 -104.9667331 39.7181803 -104.9665185 39.7181803
-15374 7369 7156 0.617874851338927 0.617874851338927 -104.9665185 39.7181803 -104.9592945 39.7181873
-15375 7156 8802 0.0193374199518318 0.0193374199518318 -104.9592945 39.7181873 -104.9590692 39.7181728
-15376 8802 7317 0.278372348360029 0.278372348360029 -104.9590692 39.7181728 -104.9558194 39.7180363
-15377 7317 7975 0.104085714382657 0.104085714382657 -104.9558194 39.7180363 -104.9546025 39.7180291
-15378 7975 8806 0.102424669696849 0.102424669696849 -104.9546025 39.7180291 -104.953405 39.7180338
-20689 10900 10890 0.00428101320774671 0.00428101320774671 -105.0403805 39.7652999 -105.0403806 39.7653384
-15380 2642 4108 0.0801282359532547 0.0801282359532547 -104.9521739 39.7180386 -104.9512465 39.7179366
-15882 9238 9569 0.375213941828735 0.375213941828735 -105.0454319 39.7354736 -105.0498174 39.7355873
-4422 4132 3782 0.199943657895071 0.199943657895071 -104.9505673 39.7273334 -104.9505822 39.7291315
-15381 4108 7064 0.0951259934580263 0.0951259934580263 -104.9512465 39.7179366 -104.95025 39.7175567
-15383 993 9570 0.0346111476896159 0.0346111476896159 -104.9740165 39.7187595 -104.973941 39.7184537
-15385 9570 2914 0.0185752046128979 0.0185752046128979 -104.973941 39.7184537 -104.9738264 39.7183118
-15393 9572 9573 0.0529385333780706 0.0529385333780706 -104.9582883 39.716017 -104.9589072 39.716013
-15394 9574 9575 0.235820407161737 0.235820407161737 -104.9560321 39.7160129 -104.9533095 39.7156787
-15395 8031 9576 0.0470934184180165 0.0470934184180165 -104.9461768 39.7127943 -104.9467273 39.7128005
-15396 9577 9578 0.0233972200853265 0.0233972200853265 -104.9499594 39.7134958 -104.9499628 39.7137062
-15398 8797 9577 0.0680401949692739 0.0680401949692739 -104.9499588 39.7128839 -104.9499594 39.7134958
-15404 9583 9584 0.0189997554494897 0.0189997554494897 -105.0103359 39.7536233 -105.0101428 39.7537079
-15413 8399 9591 0.147004287358107 0.147004287358107 -104.9860118 39.7553389 -104.9872304 39.7544061
-15414 9591 9592 0.0201167087704522 0.0201167087704522 -104.9872304 39.7544061 -104.9873927 39.7542751
-15415 9592 8857 0.127975925737851 0.127975925737851 -104.9873927 39.7542751 -104.9884337 39.753448
-15416 8857 7897 0.144523217943683 0.144523217943683 -104.9884337 39.753448 -104.9896341 39.7525328
-15864 9238 9744 0.017876559138977 0.017876559138977 -105.0454319 39.7354736 -105.0455901 39.7355787
-765 765 766 0.102953430637808 0.102953430637808 -105.0097824 39.702535 -105.0109855 39.7025566
-15417 7897 8290 0.14604137147811 0.14604137147811 -104.9896341 39.7525328 -104.9908493 39.7516097
-15418 8290 8283 0.146330295926468 0.146330295926468 -104.9908493 39.7516097 -104.9920377 39.7506626
-15419 8283 9593 0.142033870447888 0.142033870447888 -104.9920377 39.7506626 -104.9932078 39.7497558
-15420 9593 5781 0.00569268198805717 0.00569268198805717 -104.9932078 39.7497558 -104.9932554 39.74972
-15421 5781 8573 0.144843439528192 0.144843439528192 -104.9932554 39.74972 -104.9944322 39.7487829
-15422 8573 6709 0.145981160506706 0.145981160506706 -104.9944322 39.7487829 -104.9956475 39.7478607
-15423 6709 8489 0.147059173742998 0.147059173742998 -104.9956475 39.7478607 -104.9968701 39.7469304
-20690 10890 10906 0.00389182243300479 0.00389182243300479 -105.0403806 39.7653384 -105.0403806 39.7653734
-15424 8489 9595 0.146421765893647 0.146421765893647 -104.9968701 39.7469304 -104.9980797 39.7459982
-15425 9595 8637 0.147888642293711 0.147888642293711 -104.9980797 39.7459982 -104.9993008 39.7450562
-15427 4935 9590 0.0193454164735318 0.0193454164735318 -104.9999815 39.7444843 -105.0001457 39.7443646
-15430 8608 1478 0.0099286705971119 0.0099286705971119 -105.0009845 39.7418987 -105.0010729 39.7418408
-15433 7965 9599 0.0149228575371813 0.0149228575371813 -104.999898 39.7420139 -105.0000258 39.7419225
-15434 9599 9600 0.0470176213777162 0.0470176213777162 -105.0000258 39.7419225 -105.0002179 39.7415263
-16271 9867 94 0.0502509464237392 0.0502509464237392 -104.955726 39.700668 -104.9557126 39.7002162
-16273 9867 3654 0.100162413874862 0.100162413874862 -104.955726 39.700668 -104.9550095 39.7013804
-15435 9600 9601 0.0734739685688771 0.0734739685688771 -105.0002179 39.7415263 -105.0002535 39.7408661
-15436 9601 9602 0.120469898327734 0.120469898327734 -105.0002535 39.7408661 -105.0014283 39.740268
-15474 9617 9618 0.0309123358720865 0.0309123358720865 -105.0006163 39.7464486 -105.0008107 39.746683
-15475 9618 9620 0.138252717835719 0.138252717835719 -105.0008107 39.746683 -105.0020353 39.747495
-15476 9620 8583 0.0318418680569216 0.0318418680569216 -105.0020353 39.747495 -105.0023143 39.7476847
-15477 8583 8311 0.113486958547973 0.113486958547973 -105.0023143 39.7476847 -105.0031123 39.7485003
-15478 8311 2808 0.019311822890669 0.019311822890669 -105.0031123 39.7485003 -105.0032328 39.7486472
-15479 2808 9621 0.209882261055166 0.209882261055166 -105.0032328 39.7486472 -105.0046936 39.7501642
-15480 9621 8522 0.0161981079077479 0.0161981079077479 -105.0046936 39.7501642 -105.0048268 39.7502678
-15481 8522 8465 0.180991531047255 0.180991531047255 -105.0048268 39.7502678 -105.0063608 39.7513896
-15487 9624 8468 0.0340418553637742 0.0340418553637742 -105.0012783 39.7478811 -105.0008907 39.7479512
-15786 9625 9596 0.0115036173464072 0.0115036173464072 -105.0249286 39.7370709 -105.0247945 39.7370792
-15489 9626 9618 0.0131866115872677 0.0131866115872677 -105.0006793 39.7467451 -105.0008107 39.746683
-15494 4937 9617 0.0698272217766147 0.0698272217766147 -105.0002133 39.7459024 -105.0006163 39.7464486
-15496 9628 9607 0.229575641341845 0.229575641341845 -104.9987907 39.7407672 -104.9997573 39.7426934
-15497 9607 9629 0.399617180847297 0.399617180847297 -104.9997573 39.7426934 -105.0003179 39.7462613
-15498 9629 8646 0.256050430773093 0.256050430773093 -105.0003179 39.7462613 -105.0012593 39.7484473
-15500 9630 7969 0.0158758080194332 0.0158758080194332 -104.9987212 39.7401977 -104.9989064 39.7402079
-20692 10907 5885 0.00586950671491746 0.00586950671491746 -105.026532 39.7636394 -105.0264783 39.7636723
-20693 5885 10908 0.00728749668565428 0.00728749668565428 -105.0264783 39.7636723 -105.0264211 39.7637209
-15501 7969 6652 0.0898251140375734 0.0898251140375734 -104.9989064 39.7402079 -104.9999567 39.7402253
-15502 6652 3939 0.0164838165497055 0.0164838165497055 -104.9999567 39.7402253 -105.0001493 39.7402188
-15504 5618 2286 0.10606737169151 0.10606737169151 -105.0015736 39.7401631 -105.0028141 39.740161
-15506 4494 9631 0.0855716406365801 0.0855716406365801 -105.0052335 39.7402363 -105.0062339 39.740258
-15508 9632 9630 0.0305358161263308 0.0305358161263308 -104.998365 39.7401779 -104.9987212 39.7401977
-15510 9633 4938 0.00998098524134014 0.00998098524134014 -104.997523 39.7384588 -104.9976397 39.7384568
-15511 4938 6650 0.146459053749354 0.146459053749354 -104.9976397 39.7384568 -104.9993525 39.7384677
-15512 6650 3942 0.0669626682021978 0.0669626682021978 -104.9993525 39.7384677 -105.0001356 39.7384618
-15513 3942 9634 0.0625685122990456 0.0625685122990456 -105.0001356 39.7384618 -105.0008673 39.7384682
-15514 9634 5614 0.0589940973382129 0.0589940973382129 -105.0008673 39.7384682 -105.0015572 39.7384742
-15515 5614 9635 0.0521244888471325 0.0521244888471325 -105.0015572 39.7384742 -105.0021668 39.7384727
-15518 9636 9633 0.0394950652718853 0.0394950652718853 -104.9970611 39.7384591 -104.997523 39.7384588
-15520 9637 4687 0.0148908622684888 0.0148908622684888 -104.9939487 39.7336881 -104.9941176 39.7336555
-15522 5369 9637 0.0293813837370069 0.0293813837370069 -104.9936509 39.7338199 -104.9939487 39.7336881
-15524 9638 4939 0.016179725599566 0.016179725599566 -104.9962859 39.7368624 -104.9964751 39.7368603
-15525 4939 7226 0.0545709952111213 0.0545709952111213 -104.9964751 39.7368603 -104.9971131 39.7368726
-15526 7226 9640 0.0899454990944897 0.0899454990944897 -104.9971131 39.7368726 -104.998165 39.7368735
-15527 9640 6648 0.0447546990135401 0.0447546990135401 -104.998165 39.7368735 -104.9986884 39.7368739
-15528 6648 9641 0.0618904241631349 0.0618904241631349 -104.9986884 39.7368739 -104.9994122 39.7368744
-15529 9641 3943 0.062420581454241 0.062420581454241 -104.9994122 39.7368744 -105.0001422 39.736875
-15530 3943 9642 0.0627968141202241 0.0627968141202241 -105.0001422 39.736875 -105.0008766 39.7368756
-15531 9642 5613 0.0612320254822175 0.0612320254822175 -105.0008766 39.7368756 -105.0015927 39.7368762
-15532 5613 9643 0.0497740720528068 0.0497740720528068 -105.0015927 39.7368762 -105.0021748 39.7368753
-15533 9643 3735 0.0551525120669933 0.0551525120669933 -105.0021748 39.7368753 -105.0028198 39.7368743
-15534 3735 4491 0.207391837271035 0.207391837271035 -105.0028198 39.7368743 -105.0052452 39.7368819
-15535 4491 129 0.109629298465467 0.109629298465467 -105.0052452 39.7368819 -105.0065273 39.7368825
-15536 129 7948 0.0410521986313786 0.0410521986313786 -105.0065273 39.7368825 -105.0070074 39.7368827
-15537 7948 2527 0.287151637527745 0.287151637527745 -105.0070074 39.7368827 -105.0103656 39.7368844
-15538 2527 9644 0.066959748271427 0.066959748271427 -105.0103656 39.7368844 -105.0111486 39.7368933
-15539 9644 1221 0.102833533420687 0.102833533420687 -105.0111486 39.7368933 -105.0123509 39.7369148
-16595 9951 6712 0.00734129639736197 0.00734129639736197 -104.9979162 39.749516 -104.9978555 39.7495627
-15542 618 9638 0.0309196803723069 0.0309196803723069 -104.9959243 39.7368632 -104.9962859 39.7368624
-15548 9647 9648 0.0291957554146951 0.0291957554146951 -104.98691 39.7265869 -104.9872502 39.7266088
-15549 7572 9649 0.0425327114545183 0.0425327114545183 -104.9861902 39.7259939 -104.98616 39.7263757
-15551 9650 9651 0.00414955523410263 0.00414955523410263 -104.9818746 39.7225925 -104.9818965 39.7225592
-15553 9651 9652 0.0110054302366685 0.0110054302366685 -104.9818965 39.7225592 -104.9819635 39.7224747
-15555 9652 9653 0.018743029705938 0.018743029705938 -104.9819635 39.7224747 -104.981824 39.7223447
-15558 9656 4160 0.0156451635843959 0.0156451635843959 -104.9775416 39.7199763 -104.977542 39.720117
-15559 4160 4769 0.262100180691146 0.262100180691146 -104.977542 39.720117 -104.9775557 39.7224741
-15560 4769 6550 0.17763389531497 0.17763389531497 -104.9775557 39.7224741 -104.9775557 39.7240716
-15561 6550 9299 0.171507609467602 0.171507609467602 -104.9775557 39.7240716 -104.9775506 39.725614
-15564 3803 5934 0.15587305192408 0.15587305192408 -104.977579 39.7290515 -104.9775786 39.7304533
-15565 5934 930 0.176935041153743 0.176935041153743 -104.9775786 39.7304533 -104.9775696 39.7320445
-15566 930 2215 0.185037322727603 0.185037322727603 -104.9775696 39.7320445 -104.9775909 39.7337085
-15567 2215 4865 0.15888388268895 0.15888388268895 -104.9775909 39.7337085 -104.9775716 39.7351373
-15568 4865 9477 0.193757182508649 0.193757182508649 -104.9775716 39.7351373 -104.9775705 39.7368798
-15569 9477 5466 0.16958064463752 0.16958064463752 -104.9775705 39.7368798 -104.9776145 39.7384045
-15570 5466 9658 0.179556785798918 0.179556785798918 -104.9776145 39.7384045 -104.9775745 39.740019
-15571 9658 9659 0.177338892845698 0.177338892845698 -104.9775745 39.740019 -104.977538 39.7416136
-15572 9659 662 0.00516539932395329 0.00516539932395329 -104.977538 39.7416136 -104.9775409 39.74166
-18431 10291 7169 0.0508784288394603 0.0508784288394603 -105.0387163 39.7625667 -105.0381211 39.7625719
-15573 662 9660 0.00343592323317494 0.00343592323317494 -104.9775409 39.74166 -104.9775409 39.7416909
-15575 9464 4609 0.17585408606 0.17585408606 -104.9775584 39.7432677 -104.977536 39.7448491
-15576 4609 6490 0.148161596916065 0.148161596916065 -104.977536 39.7448491 -104.9775509 39.7461815
-15577 6490 7974 0.0885778987826885 0.0885778987826885 -104.9775509 39.7461815 -104.9775516 39.7469781
-15579 4336 9656 0.0458791064556152 0.0458791064556152 -104.9775406 39.7195637 -104.9775416 39.7199763
-15581 7573 3556 0.0299599314208067 0.0299599314208067 -104.9744777 39.7548059 -104.9747379 39.7546254
-15583 851 7096 0.0990470064031014 0.0990470064031014 -104.9429635 39.7581888 -104.9418048 39.7581888
-15584 7096 9661 0.0107677923604542 0.0107677923604542 -104.9418048 39.7581888 -104.9416791 39.7581825
-15585 9661 9662 0.0081027242638239 0.0081027242638239 -104.9416791 39.7581825 -104.9415847 39.7581891
-15586 9662 9663 0.00747970901198794 0.00747970901198794 -104.9415847 39.7581891 -104.9414989 39.7582023
-15587 9663 9664 0.00836437719840195 0.00836437719840195 -104.9414989 39.7582023 -104.9414045 39.7582221
-15588 9664 9665 0.00928103292942469 0.00928103292942469 -104.9414045 39.7582221 -104.9413015 39.7582485
-15589 9665 9666 0.00696482735297281 0.00696482735297281 -104.9413015 39.7582485 -104.9412242 39.7582683
-15590 9666 9667 0.00676039634627663 0.00676039634627663 -104.9412242 39.7582683 -104.941147 39.7582815
-15591 9667 9668 0.00737940382126904 0.00737940382126904 -104.941147 39.7582815 -104.9410611 39.7582881
-15592 9668 9669 0.0330209265296029 0.0330209265296029 -104.9410611 39.7582881 -104.9406749 39.7582947
-15593 9669 8703 0.0154036792176203 0.0154036792176203 -104.9406749 39.7582947 -104.9404947 39.7582947
-15594 8703 8152 0.0935877668611654 0.0935877668611654 -104.9404947 39.7582947 -104.9393999 39.7582878
-15595 8152 7613 0.0937841622026169 0.0937841622026169 -104.9393999 39.7582878 -104.9383029 39.758301
-15596 7613 7266 0.0918493440897444 0.0918493440897444 -104.9383029 39.758301 -104.9372284 39.758301
-15597 7266 7585 0.0967046653962524 0.0967046653962524 -104.9372284 39.758301 -104.9360971 39.758301
-15599 2003 3363 0.0896469251714999 0.0896469251714999 -104.9349898 39.7583076 -104.9339411 39.7583142
-15600 3363 2757 0.0953909752557553 0.0953909752557553 -104.9339411 39.7583142 -104.9328253 39.7583274
-15601 2757 9670 0.0852737689905025 0.0852737689905025 -104.9328253 39.7583274 -104.9318279 39.758313
-15602 9670 9671 0.00427910266137011 0.00427910266137011 -104.9318279 39.758313 -104.9317783 39.7583182
-15603 9671 7008 0.00522846022655691 0.00522846022655691 -104.9317783 39.7583182 -104.9317193 39.7583306
-15604 7008 9672 0.00318311155269209 0.00318311155269209 -104.9317193 39.7583306 -104.9316858 39.7583431
-15605 9672 9673 0.00446550904917084 0.00446550904917084 -104.9316858 39.7583431 -104.9316375 39.7583584
-15606 9673 9674 0.0041674932546887 0.0041674932546887 -104.9316375 39.7583584 -104.9315892 39.7583635
-15607 9674 2283 0.0902343315694916 0.0902343315694916 -104.9315892 39.7583635 -104.9305336 39.7583604
-15608 2283 3604 0.0998061678618656 0.0998061678618656 -104.9305336 39.7583604 -104.9293663 39.7583802
-15609 3604 7530 0.0990712121378624 0.0990712121378624 -104.9293663 39.7583802 -104.9282076 39.7583604
-15610 7530 2138 0.109343720002506 0.109343720002506 -104.9282076 39.7583604 -104.9269287 39.7583802
-15611 2138 5995 0.0993207600682094 0.0993207600682094 -104.9269287 39.7583802 -104.9257668 39.7583774
-15612 5995 7675 0.101107003151938 0.101107003151938 -104.9257668 39.7583774 -104.924584 39.7583757
-15613 7675 9675 0.0981911301047578 0.0981911301047578 -104.924584 39.7583757 -104.9234354 39.7583868
-15614 9675 9676 0.100210056589884 0.100210056589884 -104.9234354 39.7583868 -104.9222632 39.7583745
-15615 9676 9677 0.100165741773797 0.100165741773797 -104.9222632 39.7583745 -104.9210915 39.7583633
-15616 9677 9678 0.100142214318315 0.100142214318315 -104.9210915 39.7583633 -104.91992 39.7583679
-15617 9678 9679 0.0993326168253197 0.0993326168253197 -104.91992 39.7583679 -104.918758 39.7583757
-899 913 914 0.147143450226327 0.147143450226327 -104.9806193 39.771691 -104.9793447 39.7725806
-20715 10914 9397 0.00810191720556871 0.00810191720556871 -105.0253716 39.7632346 -105.0252842 39.7632064
-15619 9680 9681 0.102717909771226 0.102717909771226 -104.9175671 39.7583757 -104.9163655 39.7583839
-15620 9681 9682 0.100023276858498 0.100023276858498 -104.9163655 39.7583839 -104.9151955 39.7583708
-15621 9682 9683 0.100843312370816 0.100843312370816 -104.9151955 39.7583708 -104.9140158 39.7583757
-15622 9683 9684 0.101658088937986 0.101658088937986 -104.9140158 39.7583757 -104.9128266 39.758384
-15623 9684 9685 0.0375181649725389 0.0375181649725389 -104.9128266 39.758384 -104.9123877 39.7583821
-15624 9685 9686 0.0593326737516342 0.0593326737516342 -104.9123877 39.7583821 -104.9116936 39.758384
-15625 9686 9687 0.102011015676098 0.102011015676098 -104.9116936 39.758384 -104.9105005 39.7584038
-15627 9688 9689 0.110065273053945 0.110065273053945 -104.9094325 39.758409 -104.908145 39.7583966
-15628 9689 9690 0.109733851792721 0.109733851792721 -104.908145 39.7583966 -104.9068613 39.7583906
-15629 9690 9691 0.0939207749458389 0.0939207749458389 -104.9068613 39.7583906 -104.9057627 39.7584038
-15630 9691 9692 0.102876500148466 0.102876500148466 -104.9057627 39.7584038 -104.9045594 39.7584208
-15631 9692 9693 0.0940860472810003 0.0940860472810003 -104.9045594 39.7584208 -104.9034588 39.7584114
-15633 851 7096 0.0990470064031014 0.0990470064031014 -104.9429635 39.7581888 -104.9418048 39.7581888
-15634 7096 9661 0.0107677923604542 0.0107677923604542 -104.9418048 39.7581888 -104.9416791 39.7581825
-15635 9661 9662 0.0081027242638239 0.0081027242638239 -104.9416791 39.7581825 -104.9415847 39.7581891
-15636 9662 9663 0.00747970901198794 0.00747970901198794 -104.9415847 39.7581891 -104.9414989 39.7582023
-15637 9663 9664 0.00836437719840195 0.00836437719840195 -104.9414989 39.7582023 -104.9414045 39.7582221
-15638 9664 9665 0.00928103292942469 0.00928103292942469 -104.9414045 39.7582221 -104.9413015 39.7582485
-15639 9665 9666 0.00696482735297281 0.00696482735297281 -104.9413015 39.7582485 -104.9412242 39.7582683
-15641 9667 9668 0.00737940382126904 0.00737940382126904 -104.941147 39.7582815 -104.9410611 39.7582881
-15642 9668 9669 0.0330209265296029 0.0330209265296029 -104.9410611 39.7582881 -104.9406749 39.7582947
-15644 8703 8152 0.0935877668611654 0.0935877668611654 -104.9404947 39.7582947 -104.9393999 39.7582878
-20716 9397 9341 0.0111932287865196 0.0111932287865196 -105.0252842 39.7632064 -105.0251701 39.763157
-15645 8152 7613 0.0937841622026169 0.0937841622026169 -104.9393999 39.7582878 -104.9383029 39.758301
-15646 7613 7266 0.0918493440897444 0.0918493440897444 -104.9383029 39.758301 -104.9372284 39.758301
-15647 7266 7585 0.0967046653962524 0.0967046653962524 -104.9372284 39.758301 -104.9360971 39.758301
-15648 7585 2003 0.0946559616738872 0.0946559616738872 -104.9360971 39.758301 -104.9349898 39.7583076
-15649 2003 3363 0.0896469251714999 0.0896469251714999 -104.9349898 39.7583076 -104.9339411 39.7583142
-15650 3363 2757 0.0953909752557553 0.0953909752557553 -104.9339411 39.7583142 -104.9328253 39.7583274
-15651 2757 9670 0.0852737689905025 0.0852737689905025 -104.9328253 39.7583274 -104.9318279 39.758313
-15652 9670 9671 0.00427910266137011 0.00427910266137011 -104.9318279 39.758313 -104.9317783 39.7583182
-15653 9671 7008 0.00522846022655691 0.00522846022655691 -104.9317783 39.7583182 -104.9317193 39.7583306
-15654 7008 9672 0.00318311155269209 0.00318311155269209 -104.9317193 39.7583306 -104.9316858 39.7583431
-15655 9672 9673 0.00446550904917084 0.00446550904917084 -104.9316858 39.7583431 -104.9316375 39.7583584
-15656 9673 9674 0.0041674932546887 0.0041674932546887 -104.9316375 39.7583584 -104.9315892 39.7583635
-15657 9674 2283 0.0902343315694916 0.0902343315694916 -104.9315892 39.7583635 -104.9305336 39.7583604
-15658 2283 3604 0.0998061678618656 0.0998061678618656 -104.9305336 39.7583604 -104.9293663 39.7583802
-15659 3604 7530 0.0990712121378624 0.0990712121378624 -104.9293663 39.7583802 -104.9282076 39.7583604
-940 955 956 0.0467857248690536 0.0467857248690536 -104.9456366 39.7320897 -104.9450895 39.7320866
-15660 7530 2138 0.109343720002506 0.109343720002506 -104.9282076 39.7583604 -104.9269287 39.7583802
-15661 2138 5995 0.0993207600682094 0.0993207600682094 -104.9269287 39.7583802 -104.9257668 39.7583774
-15663 7675 9675 0.0981911301047578 0.0981911301047578 -104.924584 39.7583757 -104.9234354 39.7583868
-15664 9675 9676 0.100210056589884 0.100210056589884 -104.9234354 39.7583868 -104.9222632 39.7583745
-15665 9676 9677 0.100165741773797 0.100165741773797 -104.9222632 39.7583745 -104.9210915 39.7583633
-15666 9677 9678 0.100142214318315 0.100142214318315 -104.9210915 39.7583633 -104.91992 39.7583679
-20717 9341 10910 0.0086655068036058 0.0086655068036058 -105.0251701 39.763157 -105.0250813 39.7631194
-15667 9678 9679 0.0993326168253197 0.0993326168253197 -104.91992 39.7583679 -104.918758 39.7583757
-15668 9679 9680 0.101799223111765 0.101799223111765 -104.918758 39.7583757 -104.9175671 39.7583757
-15669 9680 9681 0.102717909771226 0.102717909771226 -104.9175671 39.7583757 -104.9163655 39.7583839
-15670 9681 9682 0.100023276858498 0.100023276858498 -104.9163655 39.7583839 -104.9151955 39.7583708
-15671 9682 9683 0.100843312370816 0.100843312370816 -104.9151955 39.7583708 -104.9140158 39.7583757
-15672 9683 9684 0.101658088937986 0.101658088937986 -104.9140158 39.7583757 -104.9128266 39.758384
-15673 9684 9685 0.0375181649725389 0.0375181649725389 -104.9128266 39.758384 -104.9123877 39.7583821
-15675 9686 9687 0.102011015676098 0.102011015676098 -104.9116936 39.758384 -104.9105005 39.7584038
-15676 9687 9688 0.091295408872665 0.091295408872665 -104.9105005 39.7584038 -104.9094325 39.758409
-15677 9688 9689 0.110065273053945 0.110065273053945 -104.9094325 39.758409 -104.908145 39.7583966
-15678 9689 9690 0.109733851792721 0.109733851792721 -104.908145 39.7583966 -104.9068613 39.7583906
-15679 9690 9691 0.0939207749458389 0.0939207749458389 -104.9068613 39.7583906 -104.9057627 39.7584038
-15680 9691 9692 0.102876500148466 0.102876500148466 -104.9057627 39.7584038 -104.9045594 39.7584208
-15681 9692 9693 0.0940860472810003 0.0940860472810003 -104.9045594 39.7584208 -104.9034588 39.7584114
-15684 7680 3450 0.103468199661171 0.103468199661171 -104.9473666 39.7178126 -104.9461569 39.7178084
-15686 6014 3880 0.103612570358144 0.103612570358144 -104.9449634 39.7178023 -104.943752 39.7178027
-15687 3880 842 0.103458609408344 0.103458609408344 -104.943752 39.7178027 -104.9425424 39.717803
-15688 842 7097 0.103202015659942 0.103202015659942 -104.9425424 39.717803 -104.9413358 39.7178027
-15689 7097 9694 0.047717886337947 0.047717886337947 -104.9413358 39.7178027 -104.9407779 39.7178027
-15690 9694 8693 0.0153273459011852 0.0153273459011852 -104.9407779 39.7178027 -104.9405987 39.7178021
-15691 8693 8154 0.0909950973067502 0.0909950973067502 -104.9405987 39.7178021 -104.939535 39.717787
-15692 8154 7616 0.0940844002869557 0.0940844002869557 -104.939535 39.717787 -104.938435 39.717787
-20719 10885 9398 0.0070860203578635 0.0070860203578635 -105.0253682 39.762093 -105.0252853 39.7620928
-15693 7616 7269 0.0941699315585107 0.0941699315585107 -104.938435 39.717787 -104.937334 39.717787
-15695 2024 3357 0.101537173300766 0.101537173300766 -104.935134 39.717787 -104.9339472 39.7178087
-15696 3357 2761 0.09936727049288 0.09936727049288 -104.9339472 39.7178087 -104.9327855 39.7177992
-15697 2761 7002 0.0992423706702366 0.0992423706702366 -104.9327855 39.7177992 -104.9316252 39.7178019
-15698 7002 2264 0.0979906184711561 0.0979906184711561 -104.9316252 39.7178019 -104.9304797 39.7178171
-15699 2264 3594 0.0994063483699449 0.0994063483699449 -104.9304797 39.7178171 -104.9293175 39.7178227
-15700 3594 7517 0.101662572945496 0.101662572945496 -104.9293175 39.7178227 -104.9281289 39.7178243
-15701 7517 2099 0.100157096238172 0.100157096238172 -104.9281289 39.7178243 -104.9269579 39.717825
-15702 2099 5976 0.101294873446063 0.101294873446063 -104.9269579 39.717825 -104.9257736 39.717827
-15703 5976 7666 0.100715370574341 0.100715370574341 -104.9257736 39.717827 -104.9245961 39.7178332
-15705 2329 9695 0.166702045988164 0.166702045988164 -104.9234266 39.7178332 -104.9214776 39.71784
-15706 8023 8686 0.102850512121315 0.102850512121315 -104.9485858 39.7178178 -104.9497874 39.7178534
-15708 8810 7064 0.0240522165973304 0.0240522165973304 -104.9500622 39.7177177 -104.95025 39.7175567
-15710 8803 7155 0.0191394427517654 0.0191394427517654 -104.9590745 39.7183523 -104.9592982 39.7183567
-15711 7155 6281 0.12107437233707 0.12107437233707 -104.9592982 39.7183567 -104.9607137 39.718346
-15712 6281 1050 0.111583194341316 0.111583194341316 -104.9607137 39.718346 -104.9620183 39.718346
-15714 3913 3150 0.158539469564201 0.158539469564201 -104.963317 39.7183519 -104.9651706 39.7183518
-15715 3150 3124 0.0198304894474349 0.0198304894474349 -104.9651706 39.7183518 -104.9654024 39.718348
-15716 3124 7370 0.0954616596060542 0.0954616596060542 -104.9654024 39.718348 -104.9665185 39.7183519
-15717 7370 7346 0.018354860843617 0.018354860843617 -104.9665185 39.7183519 -104.9667331 39.7183519
-15718 7346 6806 0.0981383819816197 0.0981383819816197 -104.9667331 39.7183519 -104.9678805 39.718355
-15719 6806 6802 0.0198184437093697 0.0198184437093697 -104.9678805 39.718355 -104.9681122 39.7183532
-15720 6802 4711 0.111589534373845 0.111589534373845 -104.9681122 39.7183532 -104.9694168 39.7183425
-15721 4711 782 0.0471200606837116 0.0471200606837116 -104.9694168 39.7183425 -104.9699677 39.7183394
-15722 782 5113 0.0527296074626885 0.0527296074626885 -104.9699677 39.7183394 -104.9705842 39.7183394
-15723 5113 1545 0.0490000601275782 0.0490000601275782 -104.9705842 39.7183394 -104.9711569 39.7183279
-15724 1545 6325 0.0500984428583215 0.0500984428583215 -104.9711569 39.7183279 -104.9717416 39.7183547
-15728 9449 9696 0.165726699390797 0.165726699390797 -104.9558247 39.7176986 -104.9554143 39.716242
-15732 8801 5164 0.779026857141219 0.779026857141219 -104.9590492 39.7160869 -104.9499442 39.7162631
-15734 9303 1207 0.168708605950551 0.168708605950551 -104.9439908 39.7256083 -104.9439778 39.7271255
-15735 1207 9698 0.0215813490172367 0.0215813490172367 -104.9439778 39.7271255 -104.9439853 39.7273195
-15736 9698 3771 0.199072281764282 0.199072281764282 -104.9439853 39.7273195 -104.9439848 39.7291098
-15738 8867 958 0.177734005515433 0.177734005515433 -104.9439798 39.7304995 -104.9439811 39.7320979
-15739 958 9420 0.172099550054797 0.172099550054797 -104.9439811 39.7320979 -104.9439933 39.7336456
-15740 9420 4896 0.162799282631442 0.162799282631442 -104.9439933 39.7336456 -104.9439627 39.7351095
-15741 4896 9470 0.183516274472291 0.183516274472291 -104.9439627 39.7351095 -104.9439656 39.7367599
-15742 9470 5493 0.174731799993968 0.174731799993968 -104.9439656 39.7367599 -104.9439677 39.7383313
-15743 5493 9699 0.19822011575815 0.19822011575815 -104.9439677 39.7383313 -104.9439825 39.7401139
-15745 6718 4833 0.101679501011927 0.101679501011927 -104.9425631 39.711506 -104.9437517 39.7114947
-15746 4833 6378 0.103648655421083 0.103648655421083 -104.9437517 39.7114947 -104.9449634 39.7114907
-15747 6378 3188 0.103521991883946 0.103521991883946 -104.9449634 39.7114907 -104.9461736 39.7114973
-15749 8692 1060 0.0921643567251203 0.0921643567251203 -104.9406148 39.716237 -104.9395373 39.7162311
-15750 1060 1697 0.0932426366322247 0.0932426366322247 -104.9395373 39.7162311 -104.9384472 39.7162245
-15751 1697 7268 0.0954492333486145 0.0954492333486145 -104.9384472 39.7162245 -104.9373314 39.7162377
-15752 7268 6671 0.0907592732101769 0.0907592732101769 -104.9373314 39.7162377 -104.9362703 39.7162376
-15754 2023 3356 0.0971424118361729 0.0971424118361729 -104.9350998 39.7162443 -104.9339641 39.7162382
-15756 2760 7001 0.10039029368168 0.10039029368168 -104.9328153 39.7162508 -104.9316416 39.7162506
-15757 7001 2263 0.0995790205304853 0.0995790205304853 -104.9316416 39.7162506 -104.9304775 39.7162632
-15758 2263 3487 0.100064167822274 0.100064167822274 -104.9304775 39.7162632 -104.9293078 39.7162471
-15760 5346 2098 0.0987082712844417 0.0987082712844417 -104.9281276 39.716246 -104.9269736 39.7162529
-15761 2098 2940 0.101254724790906 0.101254724790906 -104.9269736 39.7162529 -104.9257898 39.7162499
-15763 6814 9700 0.201962621208867 0.201962621208867 -104.9246289 39.7162454 -104.9222677 39.7162528
-15766 9701 9702 0.01946308379228 0.01946308379228 -105.0380289 39.7329878 -105.0382565 39.732989
-15767 9702 7793 0.0917115184551997 0.0917115184551997 -105.0382565 39.732989 -105.0393289 39.7329999
-15768 7793 9703 0.0139663687397926 0.0139663687397926 -105.0393289 39.7329999 -105.039492 39.7329933
-15769 9703 9044 0.0844498524584079 0.0844498524584079 -105.039492 39.7329933 -105.0404793 39.7330112
-15770 9044 1093 0.00878466321187049 0.00878466321187049 -105.0404793 39.7330112 -105.040582 39.7330131
-15771 1093 7489 0.0946907062423257 0.0946907062423257 -105.040582 39.7330131 -105.0416893 39.7330197
-15772 7489 3839 0.0924847260791552 0.0924847260791552 -105.0416893 39.7330197 -105.0427707 39.7330329
-15773 3839 9041 0.00820472152594153 0.00820472152594153 -105.0427707 39.7330329 -105.0428651 39.7330461
-15774 9041 5598 0.0888252595207534 0.0888252595207534 -105.0428651 39.7330461 -105.0439037 39.7330329
-15775 5598 9038 0.0124773684874939 0.0124773684874939 -105.0439037 39.7330329 -105.0440496 39.7330344
-15776 9038 7546 0.0939528798953845 0.0939528798953845 -105.0440496 39.7330344 -105.0451482 39.7330461
-15817 9704 9705 0.0108623818240175 0.0108623818240175 -105.0273936 39.7360623 -105.0273775 39.7359654
-15777 7546 9706 0.691905770916309 0.691905770916309 -105.0451482 39.7330461 -105.0532391 39.733108
-15800 1403 9709 0.0705866891174833 0.0705866891174833 -105.0321575 39.73505 -105.0321558 39.7356848
-15801 9709 620 0.0978636674417251 0.0978636674417251 -105.0321558 39.7356848 -105.0322182 39.7365636
-15802 620 9710 0.210732715068668 0.210732715068668 -105.0322182 39.7365636 -105.0322594 39.7384585
-15803 9710 1934 0.00294671517895333 0.00294671517895333 -105.0322594 39.7384585 -105.0322592 39.738485
-15812 9716 2323 0.0248152326425255 0.0248152326425255 -105.0223349 39.737401 -105.0223537 39.7376237
-15814 9717 9718 0.0914794540174667 0.0914794540174667 -105.0311809 39.7378898 -105.0303789 39.7373453
-15815 9718 9719 0.0447183943765151 0.0447183943765151 -105.0303789 39.7373453 -105.0302877 39.7369493
-19498 10525 10526 0.0198486557174526 0.0198486557174526 -104.9883652 39.7073679 -104.9883666 39.7071894
-15816 9719 9704 0.266399501314719 0.266399501314719 -105.0302877 39.7369493 -105.0273936 39.7360623
-15823 622 9720 0.114642644128587 0.114642644128587 -105.0334066 39.7365509 -105.0334112 39.7375819
-15824 9720 9721 0.0112307689682394 0.0112307689682394 -105.0334112 39.7375819 -105.0334117 39.7376829
-15825 9721 9722 0.0869660670624723 0.0869660670624723 -105.0334117 39.7376829 -105.0334152 39.738465
-15826 9722 9508 0.205466270114504 0.205466270114504 -105.0334152 39.738465 -105.0334112 39.7403128
-15828 9723 8889 0.0324596924967659 0.0324596924967659 -105.0393086 39.7344206 -105.0393045 39.7347125
-15829 8889 7134 0.00993032916751998 0.00993032916751998 -105.0393045 39.7347125 -105.0393032 39.7348018
-15831 9724 9725 0.00760667507368999 0.00760667507368999 -105.0393035 39.7348362 -105.0393021 39.7349046
-15832 9725 9726 0.189210618262835 0.189210618262835 -105.0393021 39.7349046 -105.0392938 39.7366062
-15833 9726 9727 0.207046790394153 0.207046790394153 -105.0392938 39.7366062 -105.039304 39.7384682
-19270 10423 10424 0.0241914475611954 0.0241914475611954 -104.9951604 39.7462206 -104.9949557 39.7460704
-435 364 434 0.342302602243315 0.342302602243315 -104.9703166 39.6886511 -104.973423 39.6905908
-437 435 436 0.251313063977777 0.251313063977777 -104.9400813 39.7837417 -104.939734 39.785986
-438 291 437 0.00683009618704691 0.00683009618704691 -105.0052999 39.7613459 -105.0053491 39.7612975
-439 437 438 0.127267952892383 0.127267952892383 -105.0053491 39.7612975 -105.0062729 39.7603999
-18188 4070 6055 0.154839029661679 0.154839029661679 -105.0293098 39.784231 -105.0293078 39.7856235
-2329 914 2297 0.0421335193471221 0.0421335193471221 -104.9793447 39.7725806 -104.9797146 39.7728311
-2331 2320 2321 0.0970544429847538 0.0970544429847538 -104.9733543 39.7679348 -104.9741575 39.7685518
-2332 2321 2325 0.106348268281835 0.106348268281835 -104.9741575 39.7685518 -104.9750376 39.7692279
-2334 2326 2327 0.097322097365987 0.097322097365987 -104.9240294 39.7620162 -104.9240401 39.7628914
-2335 2327 1153 0.100532392748858 0.100532392748858 -104.9240401 39.7628914 -104.9240347 39.7637955
-2338 2329 2330 0.176644411418714 0.176644411418714 -104.9234266 39.7178332 -104.9234239 39.7194218
-2339 2330 2331 0.174810883246149 0.174810883246149 -104.9234239 39.7194218 -104.9234159 39.7209939
-2340 2331 2332 0.246452825481674 0.246452825481674 -104.9234159 39.7209939 -104.9238853 39.7231807
-12346 8662 8663 0.00747381550039305 0.00747381550039305 -105.0123789 39.7525675 -105.0123961 39.7526334
-15258 8632 9548 0.0273148076656665 0.0273148076656665 -104.9291888 39.7063544 -104.929508 39.7063606
-2341 2332 2333 0.239714451404855 0.239714451404855 -104.9238853 39.7231807 -104.9238906 39.7253365
-2342 2333 2334 0.0332654390408316 0.0332654390408316 -104.9238906 39.7253365 -104.9238826 39.7256356
-2344 2335 2336 0.129842641397919 0.129842641397919 -104.9238831 39.7280763 -104.9238797 39.729244
-2346 2337 2338 0.0990445311811364 0.0990445311811364 -104.9327695 39.7193905 -104.9316115 39.7193956
-2348 2265 2339 0.101695232363891 0.101695232363891 -104.9304912 39.7194002 -104.9293022 39.7193963
-2349 2339 2340 0.100657111492997 0.100657111492997 -104.9293022 39.7193963 -104.9281254 39.7194064
-2350 2340 2100 0.0993531902440497 0.0993531902440497 -104.9281254 39.7194064 -104.9269638 39.7194002
-20593 3590 10852 0.00726410078461852 0.00726410078461852 -105.0249274 39.7608402 -105.0249031 39.7609028
-20595 10864 10861 0.0184079229928756 0.0184079229928756 -105.0249015 39.7609531 -105.0248964 39.7611186
-20596 10861 10869 0.0187971985012912 0.0187971985012912 -105.0248964 39.7611186 -105.0248912 39.7612876
-20598 10844 10816 0.176342451403751 0.176342451403751 -105.0164651 39.7585116 -105.0185279 39.7585307
-20599 10816 10784 0.0180725957817606 0.0180725957817606 -105.0185279 39.7585307 -105.0187393 39.7585283
-18882 3271 7310 0.200940882978518 0.200940882978518 -104.9611322 39.7038533 -104.9611376 39.7020462
-20600 10784 10835 0.00593511915863137 0.00593511915863137 -105.0187393 39.7585283 -105.0188076 39.7585187
-20602 2958 10836 0.0107685222165634 0.0107685222165634 -105.0188637 39.7584212 -105.0188782 39.7585174
-20605 10827 10870 0.0187474646325031 0.0187474646325031 -105.0188943 39.7587219 -105.0188943 39.7588905
-20606 10870 10871 0.0569206829492766 0.0569206829492766 -105.0188943 39.7588905 -105.0188943 39.7594024
-20746 10919 10920 0.0829974075948199 0.0829974075948199 -105.0382104 39.7621908 -105.0391814 39.7621915
-20607 10872 10858 0.118628394955246 0.118628394955246 -105.0193556 39.7586912 -105.0190584 39.7597333
-20609 2959 10837 0.0110654933350888 0.0110654933350888 -105.0192775 39.7584245 -105.0192753 39.758524
-20610 10837 10819 0.0119664824389379 0.0119664824389379 -105.0192753 39.758524 -105.0192728 39.7586316
-11704 1158 1159 0.143826308402294 0.143826308402294 -104.9992501 39.7524969 -104.9980616 39.7534124
-16709 10000 10001 0.0457062376473756 0.0457062376473756 -105.0005739 39.745251 -105.0002374 39.7455704
-20652 9411 7929 0.0718148143148174 0.0718148143148174 -105.0180024 39.7601634 -105.0179546 39.7608082
-20655 4390 9954 0.0752796609482001 0.0752796609482001 -104.9873785 39.7489186 -104.9873941 39.7482417
-20656 9954 10883 0.0805000116188462 0.0805000116188462 -104.9873941 39.7482417 -104.9873826 39.7475178
-20657 10883 10884 0.00921180121982239 0.00921180121982239 -104.9873826 39.7475178 -104.9873861 39.747435
-20658 10884 8289 0.0487008508548274 0.0487008508548274 -104.9873861 39.747435 -104.9873968 39.7469971
-20660 5957 6482 0.0027689648671592 0.0027689648671592 -104.9873834 39.7462062 -104.9873838 39.7461813
-20661 6482 5774 0.120389794748458 0.120389794748458 -104.9873838 39.7461813 -104.9874021 39.7450987
-20662 5774 4620 0.0232425190443662 0.0232425190443662 -104.9874021 39.7450987 -104.9873927 39.7448898
-20663 4620 5809 0.169650245221728 0.169650245221728 -104.9873927 39.7448898 -104.9873953 39.7433641
-20664 5809 10472 0.013534248318244 0.013534248318244 -104.9873953 39.7433641 -104.9873927 39.7432424
-2394 2385 2386 0.330871173224232 0.330871173224232 -104.9496422 39.7136072 -104.9468949 39.7115125
-2396 2387 2072 0.091718253525282 0.091718253525282 -104.9541313 39.7738901 -104.9530584 39.7738703
-2398 2388 2389 0.0952556218940292 0.0952556218940292 -104.9519586 39.7738777 -104.950844 39.7738769
-2399 2389 2390 0.088517954558777 0.088517954558777 -104.950844 39.7738769 -104.9498085 39.773859
-2400 2390 2391 0.100075566647637 0.100075566647637 -104.9498085 39.773859 -104.9486382 39.7738901
-2401 2391 2392 0.0940014926636224 0.0940014926636224 -104.9486382 39.7738901 -104.9475383 39.7738843
-2402 2392 2394 0.0931645591460492 0.0931645591460492 -104.9475383 39.7738843 -104.9464482 39.7738908
-2403 2394 2395 0.0490422843236324 0.0490422843236324 -104.9464482 39.7738908 -104.9458744 39.7738967
-2404 2396 2397 0.101232025457682 0.101232025457682 -104.9452638 39.7738711 -104.9440793 39.7738645
-2405 2397 835 0.0985806787691326 0.0985806787691326 -104.9440793 39.7738645 -104.942926 39.7738477
-2406 835 2398 0.196049611343252 0.196049611343252 -104.942926 39.7738477 -104.940632 39.7738515
-2407 2398 2399 0.0153233199302382 0.0153233199302382 -104.940632 39.7738515 -104.9404527 39.7738518
-2408 2399 2400 0.00232458495354821 0.00232458495354821 -104.9404527 39.7738518 -104.9404255 39.7738517
-2412 2402 2403 0.0775441054784182 0.0775441054784182 -105.016659 39.7530243 -105.017566 39.7530336
-2415 2405 2406 0.101142772155656 0.101142772155656 -105.0346118 39.7530072 -105.0357948 39.7530206
-498 441 442 0.0937180388509973 0.0937180388509973 -105.01516 39.7314761 -105.01561 39.7322446
-500 443 444 0.0957304857475106 0.0957304857475106 -104.932837 39.701282 -104.933949 39.701378
-14680 445 446 0.198543865097556 0.198543865097556 -104.9700104 39.7237429 -104.9699934 39.7219574
-443 447 448 0.0518475604896436 0.0518475604896436 -105.0132294 39.7256673 -105.0126579 39.7258229
-446 450 451 0.1546192530483 0.1546192530483 -104.942375 39.7291047 -104.9423643 39.7304952
-310 318 319 0.318271935051083 0.318271935051083 -105.0344342 39.7830352 -105.0307715 39.7835551
-447 451 452 0.176746748854474 0.176746748854474 -104.9423643 39.7304952 -104.9423751 39.7320847
-448 452 453 0.173946054533759 0.173946054533759 -104.9423751 39.7320847 -104.9423616 39.733649
-449 453 454 0.161145911336434 0.161145911336434 -104.9423616 39.733649 -104.9423517 39.7350982
-450 454 455 0.183605091547984 0.183605091547984 -104.9423517 39.7350982 -104.9423505 39.7367494
-452 456 457 0.174314536622101 0.174314536622101 -104.9413102 39.732075 -104.9412942 39.7336426
-453 457 458 0.162044543484691 0.162044543484691 -104.9412942 39.7336426 -104.9412914 39.7350999
-454 458 459 0.182862983981988 0.182862983981988 -104.9412914 39.7350999 -104.9413035 39.7367444
-456 460 6 0.0823027301557762 0.0823027301557762 -104.9405035 39.7803397 -104.941411 39.7800918
-1198 1212 1213 0.0683736094322978 0.0683736094322978 -104.9874175 39.7272691 -104.986618 39.727272
-465 266 468 0.155710664946604 0.155710664946604 -104.9494463 39.6897162 -104.949472 39.6911164
-466 469 470 0.0207613766308904 0.0207613766308904 -104.9681294 39.7190458 -104.9678891 39.7190194
-468 471 472 0.378751941435673 0.378751941435673 -105.017379 39.7512262 -105.0184425 39.7479196
-472 475 476 0.0306017516715067 0.0306017516715067 -105.0122615 39.7554827 -105.0121896 39.7552131
-474 477 478 0.142331986757376 0.142331986757376 -105.0173303 39.7447127 -105.0170811 39.7459783
-476 401 479 0.0792493107270532 0.0792493107270532 -105.0115284 39.740564 -105.0124432 39.7406786
-480 481 482 0.61054856130416 0.61054856130416 -104.9818608 39.6967284 -104.9858803 39.7012654
-481 482 483 0.00751372921095178 0.00751372921095178 -104.9858803 39.7012654 -104.9859077 39.7013296
-482 483 484 0.0775332394520986 0.0775332394520986 -104.9859077 39.7013296 -104.9862665 39.7019699
-483 484 485 0.089248827005011 0.089248827005011 -104.9862665 39.7019699 -104.9862761 39.7027725
-17372 40 3540 0.206359755216492 0.206359755216492 -104.9786815 39.7002855 -104.9786521 39.6984298
-19502 10529 10530 0.0177249357864871 0.0177249357864871 -104.9883718 39.7065202 -104.9883733 39.7063608
-2653 2611 2612 0.141657164390576 0.141657164390576 -104.9891783 39.722537 -104.9908346 39.7225312
-2654 2612 2613 0.112637909268372 0.112637909268372 -104.9908346 39.7225312 -104.9921516 39.722527
-2655 2613 2614 0.0580743648208686 0.0580743648208686 -104.9921516 39.722527 -104.9928302 39.7225456
-17439 9901 10107 0.0190863480039502 0.0190863480039502 -104.9711673 39.6931206 -104.9711512 39.6932918
-2656 2614 2615 0.100743891980042 0.100743891980042 -104.9928302 39.7225456 -104.9940077 39.7225208
-2657 2615 2616 0.100475490032633 0.100475490032633 -104.9940077 39.7225208 -104.9951825 39.7225188
-2658 2616 2617 0.0513770343819779 0.0513770343819779 -104.9951825 39.7225188 -104.9957832 39.7225228
-2660 2618 2619 0.0511386540650187 0.0511386540650187 -104.9963593 39.7225267 -104.9969572 39.7225317
-2661 2619 2620 0.0507766966271612 0.0507766966271612 -104.9969572 39.7225317 -104.9975509 39.7225332
-2662 2620 2621 0.0437935865590098 0.0437935865590098 -104.9975509 39.7225332 -104.9980629 39.7225275
-2664 2622 2623 0.138741239129278 0.138741239129278 -104.9985544 39.7225221 -105.0001766 39.7225287
-2665 2623 2624 0.0616812798954739 0.0616812798954739 -105.0001766 39.7225287 -105.0008976 39.7225155
-2666 2624 2625 0.041735581046466 0.041735581046466 -105.0008976 39.7225155 -105.0013439 39.7226673
-2668 2626 2627 0.080053274568439 0.080053274568439 -105.0211539 39.7220542 -105.0220898 39.7220653
-2669 2627 2628 0.0586986059075718 0.0586986059075718 -105.0220898 39.7220653 -105.0227761 39.7220608
-2672 2630 2631 0.0511347279443915 0.0511347279443915 -105.0439263 39.7221305 -105.0445241 39.7221383
-2673 2631 2632 0.0473711830288774 0.0473711830288774 -105.0445241 39.7221383 -105.0450779 39.7221456
-2701 1199 2633 0.0222472727939579 0.0222472727939579 -104.951727 39.7271329 -104.9517199 39.7273329
-2800 2469 2753 0.205232670024875 0.205232670024875 -104.932822 39.7474019 -104.9328253 39.7492476
-2801 2753 2754 0.200329673691245 0.200329673691245 -104.9328253 39.7492476 -104.9328183 39.7510492
-2802 2754 796 0.200317660350865 0.200317660350865 -104.9328183 39.7510492 -104.9328183 39.7528507
-2803 796 2755 0.202508246596186 0.202508246596186 -104.9328183 39.7528507 -104.9328167 39.7546719
-2804 2755 2756 0.202966691897007 0.202966691897007 -104.9328167 39.7546719 -104.9328047 39.7564972
-2805 2756 2757 0.203516573136303 0.203516573136303 -104.9328047 39.7564972 -104.9328253 39.7583274
-2806 2757 2758 0.206901705972361 0.206901705972361 -104.9328253 39.7583274 -104.9328167 39.7601881
-2807 2758 2759 0.18527317626533 0.18527317626533 -104.9328167 39.7601881 -104.9328136 39.7618543
-2809 2760 2761 0.172193089993048 0.172193089993048 -104.9328153 39.7162508 -104.9327855 39.7177992
-2810 2761 2337 0.176949778602699 0.176949778602699 -104.9327855 39.7177992 -104.9327695 39.7193905
-2811 2337 2762 0.175813497300624 0.175813497300624 -104.9327695 39.7193905 -104.9327571 39.7209716
-2812 2762 2763 0.241500363205236 0.241500363205236 -104.9327571 39.7209716 -104.9327223 39.7231433
-2813 2763 2764 0.135070479950714 0.135070479950714 -104.9327223 39.7231433 -104.9327137 39.724358
-2814 2764 2765 0.106502558770285 0.106502558770285 -104.9327137 39.724358 -104.9327124 39.7253158
-2815 2765 2766 0.0334927078919062 0.0334927078919062 -104.9327124 39.7253158 -104.9327097 39.725617
-2816 2766 2767 0.200988096936329 0.200988096936329 -104.9327097 39.725617 -104.9327231 39.7274245
-2817 2767 2768 0.200799068465386 0.200799068465386 -104.9327231 39.7274245 -104.9327365 39.7292303
-2819 2769 1141 0.136317655493671 0.136317655493671 -104.933165 39.7620038 -104.9331531 39.7632297
-2820 1141 908 0.140881200888928 0.140881200888928 -104.9331531 39.7632297 -104.9331257 39.7644965
-1246 190 1268 0.101376125490378 0.101376125490378 -105.0203986 39.7166208 -105.0203557 39.7175319
-20670 10891 10892 0.0391113232197559 0.0391113232197559 -105.0400867 39.7653362 -105.0396698 39.7654812
-20671 10892 10893 0.0381065586329798 0.0381065586329798 -105.0396698 39.7654812 -105.0400814 39.7656129
-20672 10893 10894 0.00879572218910387 0.00879572218910387 -105.0400814 39.7656129 -105.0400807 39.765692
-20673 10894 6880 0.00914047873035344 0.00914047873035344 -105.0400807 39.765692 -105.0400799 39.7657742
-20675 10895 10896 0.0564298376836357 0.0564298376836357 -105.0400542 39.7656936 -105.0393975 39.7656413
-20676 10896 10897 0.0882221479591311 0.0882221479591311 -105.0393975 39.7656413 -105.039396 39.7648479
-20677 10897 10898 0.0915468728847566 0.0915468728847566 -105.039396 39.7648479 -105.0393945 39.7640246
-20678 10898 10889 0.0977975944203811 0.0977975944203811 -105.0393945 39.7640246 -105.0403834 39.764467
-12368 8665 8670 0.0146509072378509 0.0146509072378509 -105.0124819 39.7528908 -105.0123272 39.7529475
-20679 10889 10899 0.0863988642991602 0.0863988642991602 -105.0403834 39.764467 -105.0403803 39.765244
-20680 10899 10900 0.00621581990565306 0.00621581990565306 -105.0403803 39.765244 -105.0403805 39.7652999
-20682 10899 10901 0.0272487435286037 0.0272487435286037 -105.0403803 39.765244 -105.0400615 39.7652432
-20683 10902 10892 0.0353963477419812 0.0353963477419812 -105.0400838 39.7654891 -105.0396698 39.7654812
-20685 10903 10904 0.0311951245060147 0.0311951245060147 -105.0402411 39.7653473 -105.0402346 39.7656278
-20686 10905 8231 0.00978569112678673 0.00978569112678673 -105.0250777 39.7620918 -105.0250765 39.7620038
-20687 8231 10753 0.00720642488718956 0.00720642488718956 -105.0250765 39.7620038 -105.0250779 39.761939
-11 11 12 0.132606225003913 0.132606225003913 -105.0283851 39.746369 -105.0299361 39.7463759
-13 13 14 0.261405445974353 0.261405445974353 -105.0315114 39.7463778 -105.0345689 39.7463686
-14 14 15 0.0524534751729061 0.0524534751729061 -105.0345689 39.7463686 -105.0351824 39.7463725
-15 15 16 0.0498286567506269 0.0498286567506269 -105.0351824 39.7463725 -105.0357652 39.7463762
-16 16 17 0.0506321145105979 0.0506321145105979 -105.0357652 39.7463762 -105.0363574 39.7463727
-17 17 18 0.0480115772672805 0.0480115772672805 -105.0363574 39.7463727 -105.0369187 39.746386
-19 19 20 0.586520216245135 0.586520216245135 -105.044038 39.757286 -105.0508993 39.7572779
-21 22 23 0.0471109050306669 0.0471109050306669 -105.0186135 39.7572732 -105.0191645 39.7572644
-22 23 24 0.117066818844753 0.117066818844753 -105.0191645 39.7572644 -105.0205339 39.7572526
-25 26 27 0.131659873107185 0.131659873107185 -105.0236259 39.7572468 -105.0251661 39.7572464
-27 28 29 0.0945023300061256 0.0945023300061256 -104.9850866 39.7002557 -104.983982 39.7002584
-28 29 32 0.0547795902237084 0.0547795902237084 -104.983982 39.7002584 -104.9833417 39.7002584
-29 32 33 0.0472851468321661 0.0472851468321661 -104.9833417 39.7002584 -104.982789 39.7002584
-30 33 34 0.0541728824006047 0.0541728824006047 -104.982789 39.7002584 -104.982156 39.7002709
-1 1 2 0.182682884421833 0.182682884421833 -105.0155597 39.7339973 -105.0158228 39.7323669
-31 34 35 0.0481653228438301 0.0481653228438301 -104.982156 39.7002709 -104.9815932 39.7002821
-32 35 36 0.0518878807765827 0.0518878807765827 -104.9815932 39.7002821 -104.9809867 39.7002821
-34 37 38 0.0490317013211587 0.0490317013211587 -104.9804174 39.7002821 -104.9798443 39.7002853
-35 38 39 0.0492286314169291 0.0492286314169291 -104.9798443 39.7002853 -104.9792689 39.7002887
-36 39 40 0.0502550749626562 0.0502550749626562 -104.9792689 39.7002887 -104.9786815 39.7002855
-37 40 41 0.0504947813294015 0.0504947813294015 -104.9786815 39.7002855 -104.9780913 39.7002821
-19671 9367 10610 0.0557753987785757 0.0557753987785757 -105.0246438 39.769277 -105.0246432 39.7697786
-38 41 42 0.0486093395250147 0.0486093395250147 -104.9780913 39.7002821 -104.9775311 39.7002091
-39 42 43 0.0502383575999221 0.0502383575999221 -104.9775311 39.7002091 -104.9769439 39.7002055
-40 43 44 0.0498102685006676 0.0498102685006676 -104.9769439 39.7002055 -104.9763617 39.7002087
-42 45 46 0.0520249865615885 0.0520249865615885 -104.9757682 39.7002165 -104.9751601 39.7002153
-43 46 47 0.0510850489044332 0.0510850489044332 -104.9751601 39.7002153 -104.974563 39.7002186
-44 47 48 0.0480642310133195 0.0480642310133195 -104.974563 39.7002186 -104.9740013 39.7002102
-45 48 49 0.0520776483582305 0.0520776483582305 -104.9740013 39.7002102 -104.9733927 39.700201
-47 50 51 0.0661075861419648 0.0661075861419648 -104.9541194 39.7002037 -104.953347 39.7002205
-48 51 52 0.0568810950926816 0.0568810950926816 -104.953347 39.7002205 -104.9526824 39.7002349
-49 52 53 0.0608706853363099 0.0608706853363099 -104.9526824 39.7002349 -104.9519712 39.7002191
-50 53 54 0.0662114802606989 0.0662114802606989 -104.9519712 39.7002191 -104.9511976 39.7002019
-51 54 55 0.0474185291403829 0.0474185291403829 -104.9511976 39.7002019 -104.9506434 39.7001957
-52 55 56 0.0539297292184645 0.0539297292184645 -104.9506434 39.7001957 -104.9500131 39.7001887
-53 56 57 0.108686747732496 0.108686747732496 -104.9500131 39.7001887 -104.9487429 39.7002061
-54 57 58 0.187258749990905 0.187258749990905 -104.9487429 39.7002061 -104.9465541 39.7002085
-56 59 60 1.21682866156064 1.21682866156064 -104.9247401 39.6995385 -104.9105465 39.700242
-58 62 65 0.111732852527499 0.111732852527499 -104.932829 39.700178 -104.934135 39.700181
-60 66 67 0.0462182288009238 0.0462182288009238 -104.968686 39.7002245 -104.9681458 39.7002288
-61 67 68 0.0059633062869109 0.0059633062869109 -104.9681458 39.7002288 -104.9680761 39.7002293
-63 69 70 0.0080040379689871 0.0080040379689871 -104.9675826 39.7002312 -104.9674891 39.7002337
-65 71 72 0.00371377887510826 0.00371377887510826 -104.9669496 39.700226 -104.9669067 39.7002209
-66 72 73 0.0481593874311522 0.0481593874311522 -104.9669067 39.7002209 -104.9663438 39.7002174
-67 73 74 0.0476872742951146 0.0476872742951146 -104.9663438 39.7002174 -104.9657864 39.7002174
-68 74 75 0.050981067010882 0.050981067010882 -104.9657864 39.7002174 -104.9651905 39.7002174
-69 75 76 0.047311096476864 0.047311096476864 -104.9651905 39.7002174 -104.9646375 39.7002188
-70 76 77 0.00343925081784597 0.00343925081784597 -104.9646375 39.7002188 -104.9645973 39.7002189
-71 77 78 0.0504851331557092 0.0504851331557092 -104.9645973 39.7002189 -104.9640072 39.7002204
-72 78 79 0.0447329738384301 0.0447329738384301 -104.9640072 39.7002204 -104.9634844 39.7002269
-73 79 80 0.00573274424924571 0.00573274424924571 -104.9634844 39.7002269 -104.9634174 39.7002277
-74 80 81 0.048934333458383 0.048934333458383 -104.9634174 39.7002277 -104.9628455 39.7002349
-75 81 82 0.0451562090400863 0.0451562090400863 -104.9628455 39.7002349 -104.9623177 39.7002318
-76 82 83 0.0525053441886158 0.0525053441886158 -104.9623177 39.7002318 -104.961704 39.7002283
-77 83 84 0.0468507536792171 0.0468507536792171 -104.961704 39.7002283 -104.9611564 39.7002245
-79 85 86 0.0489620579654281 0.0489620579654281 -104.9605654 39.7002204 -104.9599931 39.700221
-80 86 87 0.056293962476598 0.056293962476598 -104.9599931 39.700221 -104.9593351 39.7002217
-81 87 88 0.0565505675369976 0.0565505675369976 -104.9593351 39.7002217 -104.9586741 39.7002217
-82 88 89 0.049261447484153 0.049261447484153 -104.9586741 39.7002217 -104.9580983 39.7002217
-83 89 90 0.0461992376398338 0.0461992376398338 -104.9580983 39.7002217 -104.9575583 39.7002238
-84 90 91 0.0452410545911285 0.0452410545911285 -104.9575583 39.7002238 -104.9570295 39.7002259
-85 91 92 0.040125194779582 0.040125194779582 -104.9570295 39.7002259 -104.9565605 39.7002236
-86 92 93 0.0417705541366205 0.0417705541366205 -104.9565605 39.7002236 -104.9560723 39.7002187
-87 93 94 0.0307746903425865 0.0307746903425865 -104.9560723 39.7002187 -104.9557126 39.7002162
-88 94 95 0.0484715360122363 0.0484715360122363 -104.9557126 39.7002162 -104.9551461 39.7002095
-90 58 96 0.0988139178735054 0.0988139178735054 -104.9465541 39.7002085 -104.9453991 39.7002071
-91 96 97 0.101340345409915 0.101340345409915 -104.9453991 39.7002071 -104.9442146 39.7002138
-92 97 98 0.0883916436599661 0.0883916436599661 -104.9442146 39.7002138 -104.9431816 39.700199
-93 98 99 0.0102766637725455 0.0102766637725455 -104.9431816 39.700199 -104.9430615 39.7001973
-94 99 100 0.0815080239205417 0.0815080239205417 -104.9430615 39.7001973 -104.9421088 39.7002019
-95 100 101 0.0191432455952872 0.0191432455952872 -104.9421088 39.7002019 -104.9418857 39.7001887
-99 104 105 0.149790406602899 0.149790406602899 -104.9874778 39.7002508 -104.9890384 39.7008615
-100 106 107 0.104888043119077 0.104888043119077 -104.931654 39.700221 -104.930428 39.700221
-101 107 108 0.276057285299863 0.276057285299863 -104.930428 39.700221 -104.9272013 39.700209
-103 109 110 0.318041485575751 0.318041485575751 -105.002935 39.7765792 -105.0016991 39.7792771
-105 111 112 0.0487653491195207 0.0487653491195207 -104.929111 39.709605 -104.929063 39.710042
-106 113 114 0.160343090933149 0.160343090933149 -105.0174031 39.7302926 -105.0192781 39.7302978
-107 114 115 0.208121584183608 0.208121584183608 -105.0192781 39.7302978 -105.0217118 39.7303058
-111 118 119 0.137350395143796 0.137350395143796 -105.0112228 39.7301878 -105.0128289 39.7301964
-113 120 121 0.356240759753107 0.356240759753107 -105.011137 39.753586 -105.0092699 39.7564502
-114 121 122 0.149871853701347 0.149871853701347 -105.0092699 39.7564502 -105.0080327 39.7574052
-115 122 123 0.148228608040365 0.148228608040365 -105.0080327 39.7574052 -105.0068372 39.7583708
-116 123 124 0.294126045752515 0.294126045752515 -105.0068372 39.7583708 -105.0043775 39.7602205
-118 125 126 0.131313615022207 0.131313615022207 -105.0040777 39.7604163 -105.0030317 39.7612812
-119 126 127 0.263795049720844 0.263795049720844 -105.0030317 39.7612812 -105.001255 39.763221
-123 130 131 0.221071288024568 0.221071288024568 -105.010718 39.694947 -105.0097289 39.6931103
-125 132 133 0.0549684068983719 0.0549684068983719 -104.9874659 39.6930068 -104.9881082 39.6929965
-126 133 135 0.0478699749630446 0.0478699749630446 -104.9881082 39.6929965 -104.9886673 39.6929807
-127 135 136 0.130706329520293 0.130706329520293 -104.9886673 39.6929807 -104.9901944 39.6930114
-128 136 137 0.0495130025200929 0.0495130025200929 -104.9901944 39.6930114 -104.990773 39.6930188
-129 137 138 0.0194653537975714 0.0194653537975714 -104.990773 39.6930188 -104.9910005 39.6930189
-130 138 139 0.0302495949579548 0.0302495949579548 -104.9910005 39.6930189 -104.991354 39.693023
-131 139 140 0.097138516429268 0.097138516429268 -104.991354 39.693023 -104.9924893 39.6930233
-133 141 142 0.0984160429772276 0.0984160429772276 -104.9968856 39.6930808 -104.9980358 39.6930742
-1414 1439 1440 0.0969799596597411 0.0969799596597411 -105.0228009 39.7820131 -105.0239358 39.7820092
-135 143 144 0.094779584184767 0.094779584184767 -104.9992288 39.6930874 -105.000336 39.6931138
-136 144 145 0.102947980955417 0.102947980955417 -105.000336 39.6931138 -105.0015377 39.6930676
-137 145 146 0.0998791210708115 0.0998791210708115 -105.0015377 39.6930676 -105.002705 39.6930742
-138 146 147 0.10354963170018 0.10354963170018 -105.002705 39.6930742 -105.0039152 39.6930676
-139 147 148 0.0970503169891706 0.0970503169891706 -105.0039152 39.6930676 -105.0050494 39.6930773
-141 149 150 0.0462633170535789 0.0462633170535789 -105.0061897 39.6930874 -105.0067304 39.6930874
-142 150 151 0.0859494466376985 0.0859494466376985 -105.0067304 39.6930874 -105.0077346 39.6931072
-143 151 152 0.084056042435147 0.084056042435147 -105.0077346 39.6931072 -105.008717 39.6931063
-144 152 131 0.0865811985903579 0.0865811985903579 -105.008717 39.6931063 -105.0097289 39.6931103
-145 131 155 0.0846809008371401 0.0846809008371401 -105.0097289 39.6931103 -105.0107186 39.6931124
-146 155 156 0.0860732350550831 0.0860732350550831 -105.0107186 39.6931124 -105.0117244 39.6930979
-147 156 157 0.0810260254286054 0.0810260254286054 -105.0117244 39.6930979 -105.0126712 39.6931124
-148 157 158 0.0821650587696609 0.0821650587696609 -105.0126712 39.6931124 -105.0136315 39.6931124
-149 158 159 0.0810216994355951 0.0810216994355951 -105.0136315 39.6931124 -105.0145783 39.6931248
-150 159 160 0.0856058417834562 0.0856058417834562 -105.0145783 39.6931248 -105.0155788 39.6931289
-151 160 161 0.0815928873404902 0.0815928873404902 -105.0155788 39.6931289 -105.0165323 39.6931402
-152 161 162 0.00737779613210769 0.00737779613210769 -105.0165323 39.6931402 -105.0166181 39.6931468
-154 163 164 0.00763240627009494 0.00763240627009494 -105.0174975 39.6931459 -105.0175867 39.6931453
-155 164 165 0.0713522613021865 0.0713522613021865 -105.0175867 39.6931453 -105.0184206 39.6931402
-156 165 166 0.00987473687183569 0.00987473687183569 -105.0184206 39.6931402 -105.018536 39.693139
-157 166 167 0.0668981585963986 0.0668981585963986 -105.018536 39.693139 -105.0193178 39.693131
-158 167 168 0.0113627652096004 0.0113627652096004 -105.0193178 39.693131 -105.0194505 39.693127
-159 168 169 0.0796520415458163 0.0796520415458163 -105.0194505 39.693127 -105.0203814 39.6931327
-160 169 170 0.0789939822174276 0.0789939822174276 -105.0203814 39.6931327 -105.0213045 39.6931204
-161 170 171 0.0216393201096419 0.0216393201096419 -105.0213045 39.6931204 -105.0215573 39.6931261
-162 171 172 0.05739626274334 0.05739626274334 -105.0215573 39.6931261 -105.022228 39.6931165
-163 172 173 0.0799414498698892 0.0799414498698892 -105.022228 39.6931165 -105.0231623 39.6931129
-164 173 174 0.161327077814812 0.161327077814812 -105.0231623 39.6931129 -105.0250478 39.6931151
-165 174 175 0.292992058630926 0.292992058630926 -105.0250478 39.6931151 -105.0284721 39.6931041
-166 175 176 0.108231632340063 0.108231632340063 -105.0284721 39.6931041 -105.029737 39.6931129
-167 176 177 0.106370208061557 0.106370208061557 -105.029737 39.6931129 -105.03098 39.6930959
-168 177 178 0.0920329418240447 0.0920329418240447 -105.03098 39.6930959 -105.0320556 39.6931021
-169 178 179 0.199657740223053 0.199657740223053 -105.0320556 39.6931021 -105.034389 39.6930864
-170 179 180 0.100614906430247 0.100614906430247 -105.034389 39.6930864 -105.0355649 39.693093
-1461 1483 1484 0.0976853528091841 0.0976853528091841 -104.9913183 39.6948152 -104.99246 39.6948099
-171 180 181 0.0991515808605787 0.0991515808605787 -105.0355649 39.693093 -105.0367236 39.6931063
-172 181 182 0.101348037813126 0.101348037813126 -105.0367236 39.6931063 -105.0379081 39.6931063
-175 184 185 0.0991513776470571 0.0991513776470571 -105.0402341 39.6931327 -105.0413928 39.6931195
-178 187 188 0.0984378662868895 0.0984378662868895 -105.0437531 39.6931327 -105.0449033 39.6931129
-179 188 189 0.709590130188447 0.709590130188447 -105.0449033 39.6931129 -105.0531962 39.6931758
-180 190 191 0.100578501060841 0.100578501060841 -105.0203986 39.7166208 -105.02039 39.7157163
-181 191 192 0.0991218871214513 0.0991218871214513 -105.02039 39.7157163 -105.0203814 39.7148249
-182 192 193 0.20342936542853 0.20342936542853 -105.0203814 39.7148249 -105.0203213 39.712996
-183 193 194 0.207080695389682 0.207080695389682 -105.0203213 39.712996 -105.0203728 39.7111341
-184 194 195 0.202642969626672 0.202642969626672 -105.0203728 39.7111341 -105.0203814 39.7093117
-185 195 196 0.201913108682536 0.201913108682536 -105.0203814 39.7093117 -105.0203986 39.7074959
-186 196 197 0.201920207523846 0.201920207523846 -105.0203986 39.7074959 -105.02039 39.70568
-187 197 198 0.201206377797867 0.201206377797867 -105.02039 39.70568 -105.0203557 39.7038707
-188 198 199 0.199728327239083 0.199728327239083 -105.0203557 39.7038707 -105.0203557 39.7020745
-189 199 200 0.179903776297828 0.179903776297828 -105.0203557 39.7020745 -105.0203471 39.7004566
-190 200 201 0.00513723410606708 0.00513723410606708 -105.0203471 39.7004566 -105.0203473 39.7004104
-191 201 202 0.207079558909688 0.207079558909688 -105.0203473 39.7004104 -105.0203557 39.6985481
-194 169 204 0.256940343045097 0.256940343045097 -105.0203814 39.6931327 -105.0203689 39.690822
-195 204 205 0.14761309930181 0.14761309930181 -105.0203689 39.690822 -105.0203775 39.6894945
-384 386 387 0.312847187378026 0.312847187378026 -105.0063891 39.78283 -105.0028212 39.783461
-197 208 209 0.0482198776992404 0.0482198776992404 -105.0203767 39.6877125 -105.0203575 39.6872791
-198 209 210 1.36238336075367 1.36238336075367 -105.0203575 39.6872791 -105.0203756 39.6750269
-199 211 212 0.0762056360151952 0.0762056360151952 -104.9672465 39.7792331 -104.9665616 39.779672
-210 221 222 0.10839564681744 0.10839564681744 -104.9863694 39.7019694 -104.9874359 39.7014431
-212 223 224 0.197685755221764 0.197685755221764 -104.9432215 39.7799643 -104.9412461 39.7790391
-213 224 225 0.136500664002185 0.136500664002185 -104.9412461 39.7790391 -104.9407032 39.7778846
-215 226 227 0.0378358956085511 0.0378358956085511 -104.940692 39.7797323 -104.9403515 39.7799498
-217 228 229 0.0700057652168164 0.0700057652168164 -104.949699 39.7790161 -104.9490058 39.7793516
-218 229 230 0.156709235598665 0.156709235598665 -104.9490058 39.7793516 -104.9472475 39.7797519
-220 231 232 0.0710636642555904 0.0710636642555904 -104.9941166 39.693522 -104.9943741 39.6929144
-223 234 235 0.0652725377045483 0.0652725377045483 -104.9688514 39.6965865 -104.9695743 39.6967741
-227 237 238 0.33099974682308 0.33099974682308 -105.0251054 39.7259431 -105.0289409 39.7255444
-19951 4950 4670 0.10032168356836 0.10032168356836 -104.9951823 39.723 -104.9940093 39.7230042
-229 239 240 0.145321847286165 0.145321847286165 -104.9766938 39.6912137 -104.9752801 39.6904894
-230 240 241 0.0697724132050665 0.0697724132050665 -104.9752801 39.6904894 -104.9745995 39.6901438
-231 241 242 0.0623380559401012 0.0623380559401012 -104.9745995 39.6901438 -104.9739987 39.6898267
-232 242 243 0.121807717540091 0.121807717540091 -104.9739987 39.6898267 -104.9728142 39.6892191
-233 243 244 0.123936016070967 0.123936016070967 -104.9728142 39.6892191 -104.9715783 39.6886379
-234 244 245 0.0423914167747626 0.0423914167747626 -104.9715783 39.6886379 -104.9711551 39.6884397
-235 245 30 0.0421885133223055 0.0421885133223055 -104.9711551 39.6884397 -104.9707346 39.6882416
-238 134 246 0.0735610173824186 0.0735610173824186 -104.969078 39.6873895 -104.9683485 39.6870395
-246 253 254 0.386604280856974 0.386604280856974 -105.0285448 39.740303 -105.0251543 39.7380028
-261 271 272 0.0791195509987444 0.0791195509987444 -105.0214373 39.7400355 -105.020512 39.7400417
-262 272 273 0.0178978198366689 0.0178978198366689 -105.020512 39.7400417 -105.0203028 39.7400362
-263 273 274 0.0364878269996901 0.0364878269996901 -105.0203028 39.7400362 -105.0198763 39.7400252
-264 274 275 0.130636800507014 0.130636800507014 -105.0198763 39.7400252 -105.0183528 39.7401138
-265 275 276 0.0381201943550558 0.0381201943550558 -105.0183528 39.7401138 -105.0179907 39.7399138
-272 282 283 0.097546663905458 0.097546663905458 -104.98357 39.7794055 -104.9824285 39.7794055
-556 66 551 0.00841985913797999 0.00841985913797999 -104.968686 39.7002245 -104.9687844 39.7002259
-557 551 552 0.04510313602044 0.04510313602044 -104.9687844 39.7002259 -104.9693115 39.7002336
-559 553 554 0.116858726253731 0.116858726253731 -105.0084451 39.7357701 -105.0077561 39.7366777
-562 249 556 0.0347143242166075 0.0347143242166075 -104.998368 39.698242 -104.998773 39.698261
-563 557 250 0.0320475892789012 0.0320475892789012 -104.998773 39.697354 -104.998399 39.69737
-581 573 574 3.62449911588374 3.62449911588374 -104.9857184 39.6894083 -104.9858252 39.6568125
-582 495 575 0.042579905853808 0.042579905853808 -104.9399882 39.7812905 -104.9404777 39.7813621
-583 575 576 0.0263063929759334 0.0263063929759334 -104.9404777 39.7813621 -104.940659 39.7811709
-585 577 311 0.0472092453507094 0.0472092453507094 -104.979193 39.7791651 -104.9786416 39.779139
-587 578 579 0.310605662522472 0.310605662522472 -105.0107342 39.7225974 -105.0080855 39.7206863
-589 580 206 0.0784574482758401 0.0784574482758401 -104.9566854 39.743808 -104.9566644 39.7445134
-591 581 582 0.323379230044806 0.323379230044806 -104.9583963 39.7508014 -104.9577579 39.7479349
-593 583 584 0.18304036244052 0.18304036244052 -104.957601 39.708926 -104.957575 39.70728
-595 585 586 0.0719402278196197 0.0719402278196197 -104.9889526 39.7822987 -104.9889771 39.7829454
-597 587 588 0.0168822192889414 0.0168822192889414 -105.0297456 39.724543 -105.029943 39.724543
-599 589 590 0.0668977161070656 0.0668977161070656 -104.9917474 39.779568 -104.9910794 39.7792543
-601 592 593 0.00991684169352972 0.00991684169352972 -104.9690283 39.7038655 -104.9689126 39.70386
-606 597 598 0.0427315746706827 0.0427315746706827 -104.9464074 39.7019764 -104.9468452 39.7017914
-610 601 602 0.0635315500234909 0.0635315500234909 -104.9947852 39.7686695 -104.9952229 39.7691313
-611 602 603 0.0528935910157463 0.0528935910157463 -104.9952229 39.7691313 -104.9958065 39.7692896
-16699 9993 9994 0.012991856325609 0.012991856325609 -105.0002198 39.7467956 -105.0002735 39.7466863
-612 603 604 0.0535739683641864 0.0535739683641864 -104.9958065 39.7692896 -104.9964331 39.7692764
-615 606 307 0.0053241575287587 0.0053241575287587 -105.0278867 39.763078 -105.0279141 39.763121
-616 307 607 0.210415758379136 0.210415758379136 -105.0279141 39.763121 -105.0300516 39.7640597
-618 608 609 0.0943257357645838 0.0943257357645838 -104.9472743 39.739517 -104.9461712 39.7395075
-620 610 611 0.12631191015444 0.12631191015444 -104.9873582 39.7368646 -104.9888354 39.7368658
-621 611 612 0.121362330065702 0.121362330065702 -104.9888354 39.7368658 -104.9902547 39.7368606
-11699 1033 1034 0.0933842207119007 0.0933842207119007 -104.9992823 39.7531544 -105.0000465 39.7525543
-622 612 613 0.120087101438352 0.120087101438352 -104.9902547 39.7368606 -104.9916591 39.7368586
-623 613 614 0.109496386514743 0.109496386514743 -104.9916591 39.7368586 -104.9929396 39.7368669
-625 615 616 0.099485158811405 0.099485158811405 -104.9941215 39.7368616 -104.9952849 39.7368711
-626 616 617 0.0380723765849069 0.0380723765849069 -104.9952849 39.7368711 -104.9957301 39.7368659
-627 617 618 0.0166082915806853 0.0166082915806853 -104.9957301 39.7368659 -104.9959243 39.7368632
-629 619 620 0.0454138336035488 0.0454138336035488 -105.0316871 39.7365656 -105.0322182 39.7365636
-630 620 621 0.0942731398582661 0.0942731398582661 -105.0322182 39.7365636 -105.0333206 39.7365518
-631 621 622 0.00735436876666859 0.00735436876666859 -105.0333206 39.7365518 -105.0334066 39.7365509
-632 622 623 0.102647301082546 0.102647301082546 -105.0334066 39.7365509 -105.0346068 39.7365694
-633 623 544 0.0305138174261522 0.0305138174261522 -105.0346068 39.7365694 -105.034963 39.736586
-636 625 626 0.0461061908767262 0.0461061908767262 -105.0357989 39.7365856 -105.0363381 39.7365871
-637 626 627 0.0495093856599813 0.0495093856599813 -105.0363381 39.7365871 -105.0369171 39.7365886
-639 628 629 0.00822721040716169 0.00822721040716169 -104.9733503 39.7623867 -104.9734189 39.7624386
-640 629 630 0.102896638771385 0.102896638771385 -104.9734189 39.7624386 -104.9743045 39.7630654
-641 630 631 0.106879933016847 0.106879933016847 -104.9743045 39.7630654 -104.9751714 39.7637581
-642 631 632 0.103715813554019 0.103715813554019 -104.9751714 39.7637581 -104.976027 39.7644195
-643 632 633 0.10692744992309 0.10692744992309 -104.976027 39.7644195 -104.9769309 39.7650843
-644 633 634 0.103895780437174 0.103895780437174 -104.9769309 39.7650843 -104.9777895 39.7657457
-645 634 635 0.10514306949893 0.10514306949893 -104.9777895 39.7657457 -104.9786451 39.7664251
-647 636 637 0.00886536795801057 0.00886536795801057 -105.0169344 39.7566577 -105.016925 39.7567371
-648 637 638 0.204097990393348 0.204097990393348 -105.016925 39.7567371 -105.0180723 39.7583468
-649 638 639 0.00993994545767469 0.00993994545767469 -105.0180723 39.7583468 -105.0181467 39.7584155
-651 640 641 0.322116221139114 0.322116221139114 -104.9875489 39.7695895 -104.9847379 39.7715192
-653 643 644 0.14058289547664 0.14058289547664 -104.9405805 39.7413879 -104.9389365 39.7413679
-654 644 645 0.143886814663415 0.143886814663415 -104.9389365 39.7413679 -104.9372542 39.7414009
-657 647 648 0.1449055455771 0.1449055455771 -104.9337694 39.7413613 -104.9320748 39.7413793
-660 650 651 0.0986374455510098 0.0986374455510098 -104.9872612 39.7417297 -104.9861093 39.7416811
-661 651 652 0.109870142544629 0.109870142544629 -104.9861093 39.7416811 -104.9848243 39.741678
-662 652 653 0.107278100090415 0.107278100090415 -104.9848243 39.741678 -104.9835697 39.7416896
-663 653 654 0.105274765421146 0.105274765421146 -104.9835697 39.7416896 -104.9823388 39.7416667
-664 654 655 0.107321673078917 0.107321673078917 -104.9823388 39.7416667 -104.9810836 39.7416667
-665 655 659 0.103426909396494 0.103426909396494 -104.9810836 39.7416667 -104.979874 39.741675
-666 659 660 0.0476206970204551 0.0476206970204551 -104.979874 39.741675 -104.9793171 39.7416689
-667 660 661 0.0487580750629072 0.0487580750629072 -104.9793171 39.7416689 -104.9787469 39.7416626
-668 661 662 0.103115405190933 0.103115405190933 -104.9787469 39.7416626 -104.9775409 39.74166
-669 662 663 0.118337011744519 0.118337011744519 -104.9775409 39.74166 -104.9761569 39.7416528
-670 663 664 0.118107974454135 0.118107974454135 -104.9761569 39.7416528 -104.9747756 39.7416621
-671 664 665 0.223948343500364 0.223948343500364 -104.9747756 39.7416621 -104.9721564 39.7416528
-672 665 666 0.106040631048838 0.106040631048838 -104.9721564 39.7416528 -104.9709162 39.7416478
-673 666 667 0.0256000736542961 0.0256000736542961 -104.9709162 39.7416478 -104.9706168 39.7416459
-674 667 668 0.0803036973488277 0.0803036973488277 -104.9706168 39.7416459 -104.9696776 39.7416433
-675 668 669 0.107519240980512 0.107519240980512 -104.9696776 39.7416433 -104.9684201 39.7416394
-1662 1688 1689 0.0492594246995293 0.0492594246995293 -105.038125 39.7676337 -105.0387013 39.7676285
-677 670 671 0.106757477563009 0.106757477563009 -104.9672238 39.7416291 -104.9659752 39.7416301
-678 671 672 0.103159385358598 0.103159385358598 -104.9659752 39.7416301 -104.9647688 39.7416171
-679 672 673 0.111733647900791 0.111733647900791 -104.9647688 39.7416171 -104.963462 39.7416167
-680 673 674 0.10480806031483 0.10480806031483 -104.963462 39.7416167 -104.9622362 39.7416157
-681 674 675 0.0524357665703955 0.0524357665703955 -104.9622362 39.7416157 -104.961623 39.7416085
-682 675 676 0.0522607419390769 0.0522607419390769 -104.961623 39.7416085 -104.9610118 39.7416043
-683 676 677 0.0516311575112871 0.0516311575112871 -104.9610118 39.7416043 -104.960408 39.7416109
-684 677 678 0.0529566114294976 0.0529566114294976 -104.960408 39.7416109 -104.9597887 39.7416177
-685 678 679 0.0524070698016137 0.0524070698016137 -104.9597887 39.7416177 -104.9591758 39.7416126
-686 679 680 0.187479766906081 0.187479766906081 -104.9591758 39.7416126 -104.9569831 39.7416105
-690 683 684 0.0954023275162926 0.0954023275162926 -104.9320748 39.7419667 -104.930959 39.7419667
-691 684 685 0.100472575096637 0.100472575096637 -104.930959 39.7419667 -104.9297839 39.7419673
-692 685 686 0.0954830683114717 0.0954830683114717 -104.9297839 39.7419673 -104.9286673 39.7419535
-693 686 687 0.0981912656165647 0.0981912656165647 -104.9286673 39.7419535 -104.9275189 39.7419485
-694 687 688 0.0529127579061837 0.0529127579061837 -104.9275189 39.7419485 -104.926901 39.7419221
-695 688 689 0.097652475318391 0.097652475318391 -104.926901 39.7419221 -104.9257594 39.7418957
-696 689 690 0.0954475604442949 0.0954475604442949 -104.9257594 39.7418957 -104.9246436 39.7419221
-697 690 691 1.04422795392214 1.04422795392214 -104.9246436 39.7419221 -104.9124306 39.7419176
-698 692 693 0.101491505067343 0.101491505067343 -104.9547755 39.7419939 -104.9535885 39.7419889
-700 694 695 0.0992328230839297 0.0992328230839297 -104.9524269 39.7419829 -104.9512663 39.7419839
-701 695 696 0.102484361376735 0.102484361376735 -104.9512663 39.7419839 -104.9500677 39.7419774
-703 697 698 0.0986965284486813 0.0986965284486813 -104.9488331 39.7419679 -104.9476788 39.7419741
-704 698 699 0.0994466333494717 0.0994466333494717 -104.9476788 39.7419741 -104.9465157 39.7419728
-705 699 700 0.0997814367951755 0.0997814367951755 -104.9465157 39.7419728 -104.9453488 39.7419601
-706 700 702 0.0968138925983087 0.0968138925983087 -104.9453488 39.7419601 -104.9442165 39.7419566
-707 702 703 0.100377700728806 0.100377700728806 -104.9442165 39.7419566 -104.9430426 39.7419454
-708 703 704 0.0945219805489684 0.0945219805489684 -104.9430426 39.7419454 -104.9419371 39.7419475
-709 704 705 0.101319162842739 0.101319162842739 -104.9419371 39.7419475 -104.9407521 39.7419489
-711 706 707 0.0929527445510612 0.0929527445510612 -105.0041014 39.7624043 -105.0041326 39.7632399
-712 707 708 0.132514897770158 0.132514897770158 -105.0041326 39.7632399 -105.0041445 39.7644316
-713 708 709 0.136169309583257 0.136169309583257 -105.0041445 39.7644316 -105.0041442 39.7656562
-714 709 710 0.133600704636896 0.133600704636896 -105.0041442 39.7656562 -105.0041443 39.7668577
-715 710 711 0.131877184107974 0.131877184107974 -105.0041443 39.7668577 -105.0041445 39.7680437
-716 711 712 0.137129048962243 0.137129048962243 -105.0041445 39.7680437 -105.0041679 39.7692768
-717 712 714 0.139625593223683 0.139625593223683 -105.0041679 39.7692768 -105.0041958 39.7705323
-718 714 715 0.140147388874583 0.140147388874583 -105.0041958 39.7705323 -105.0041615 39.7717924
-720 716 717 0.139181895573122 0.139181895573122 -105.0041786 39.7730524 -105.0042194 39.7743037
-721 717 718 0.136478657719685 0.136478657719685 -105.0042194 39.7743037 -105.0041624 39.7755303
-722 718 719 0.0608836584293049 0.0608836584293049 -105.0041624 39.7755303 -105.004171 39.7760778
-723 719 720 0.0543052596791692 0.0543052596791692 -105.004171 39.7760778 -105.0041538 39.776566
-724 720 721 0.402215107963206 0.402215107963206 -105.0041538 39.776566 -105.0041443 39.7801832
-726 722 723 0.109800761131151 0.109800761131151 -105.004084 39.7289511 -105.0028344 39.7287242
-728 724 725 0.0404933936313706 0.0404933936313706 -104.9512162 39.7020084 -104.9512072 39.7016443
-729 725 726 0.0429068637575149 0.0429068637575149 -104.9512072 39.7016443 -104.9511976 39.7012585
-730 726 54 0.117488559492451 0.117488559492451 -104.9511976 39.7012585 -104.9511976 39.7002019
-732 728 729 0.201386679597364 0.201386679597364 -104.951164 39.6965829 -104.9511904 39.6947719
-733 729 730 0.204011830144653 0.204011830144653 -104.9511904 39.6947719 -104.9512022 39.6929372
-734 730 731 0.199761692314281 0.199761692314281 -104.9512022 39.6929372 -104.9512028 39.6911407
-17425 10099 10083 0.0366406616748247 0.0366406616748247 -104.9835426 39.688944 -104.9836553 39.6886261
-735 731 732 0.201563131430502 0.201563131430502 -104.9512028 39.6911407 -104.951205 39.689328
-736 732 733 0.402282143818784 0.402282143818784 -104.951205 39.689328 -104.9512417 39.6857103
-737 734 735 0.0902645098486118 0.0902645098486118 -104.9634771 39.7765229 -104.9624209 39.7765159
-738 735 736 0.0928507623233121 0.0928507623233121 -104.9624209 39.7765159 -104.9613344 39.7765177
-739 736 737 0.0900332912586976 0.0900332912586976 -104.9613344 39.7765177 -104.960283 39.7764662
-740 737 738 0.0739532182409675 0.0739532182409675 -104.960283 39.7764662 -104.9594193 39.7764249
-741 738 739 0.100409435325613 0.100409435325613 -104.9594193 39.7764249 -104.9582445 39.7764105
-742 739 740 0.0918337393875257 0.0918337393875257 -104.9582445 39.7764105 -104.9571699 39.7764108
-743 740 741 0.0605135925040139 0.0605135925040139 -104.9571699 39.7764108 -104.9564618 39.7764088
-744 741 744 0.09764928319827 0.09764928319827 -104.9564618 39.7764088 -104.9553192 39.7764005
-745 744 745 0.100176801141236 0.100176801141236 -104.9553192 39.7764005 -104.954147 39.7763944
-746 745 746 0.0948931710062943 0.0948931710062943 -104.954147 39.7763944 -104.9530366 39.7763944
-747 746 747 0.0932950961705344 0.0932950961705344 -104.9530366 39.7763944 -104.9519449 39.7763944
-748 747 748 0.0948942633213168 0.0948942633213168 -104.9519449 39.7763944 -104.9508345 39.7763985
-749 748 749 0.0880271421463829 0.0880271421463829 -104.9508345 39.7763985 -104.9498045 39.7763902
-750 749 750 0.101773658707536 0.101773658707536 -104.9498045 39.7763902 -104.9486136 39.7763944
-751 750 751 0.094781491782375 0.094781491782375 -104.9486136 39.7763944 -104.9475049 39.7764171
-752 751 752 0.0909312964030863 0.0909312964030863 -104.9475049 39.7764171 -104.9464409 39.77641
-754 753 754 0.0476837940219257 0.0476837940219257 -104.9875955 39.7752036 -104.9870376 39.7752102
-755 754 755 0.0476837940207114 0.0476837940207114 -104.9870376 39.7752102 -104.9864797 39.7752036
-756 755 756 0.100492444483886 0.100492444483886 -104.9864797 39.7752036 -104.9853038 39.7752036
-760 760 761 0.278292588595779 0.278292588595779 -105.0070586 39.7765312 -105.0069691 39.779033
-18241 8960 6768 0.145513824807152 0.145513824807152 -105.0258905 39.7724462 -105.0275913 39.7725071
-762 762 763 0.102174293003021 0.102174293003021 -105.0062581 39.7024674 -105.0074463 39.7025603
-763 763 764 0.0992571756698332 0.0992571756698332 -105.0074463 39.7025603 -105.0086065 39.7025548
-764 764 765 0.100622536912342 0.100622536912342 -105.0086065 39.7025548 -105.0097824 39.702535
-766 766 767 0.101850111631528 0.101850111631528 -105.0109855 39.7025566 -105.012176 39.70255
-767 767 768 0.0961954013729948 0.0961954013729948 -105.012176 39.70255 -105.0133004 39.7025566
-768 768 769 0.207085640087389 0.207085640087389 -105.0133004 39.7025566 -105.0156693 39.7029396
-769 769 770 0.1068825400281 0.1068825400281 -105.0156693 39.7029396 -105.0168881 39.7027283
-770 770 771 0.105967528573409 0.105967528573409 -105.0168881 39.7027283 -105.0180297 39.7023585
-771 771 772 0.107278769323728 0.107278769323728 -105.0180297 39.7023585 -105.0192227 39.7020613
-772 772 199 0.0969401274978018 0.0969401274978018 -105.0192227 39.7020613 -105.0203557 39.7020745
-773 199 776 0.101328977128045 0.101328977128045 -105.0203557 39.7020745 -105.0215401 39.7020679
-774 776 777 0.0984004881984158 0.0984004881984158 -105.0215401 39.7020679 -105.0226903 39.7020679
-775 777 778 0.0991276696889056 0.0991276696889056 -105.0226903 39.7020679 -105.023849 39.7020679
-779 784 785 0.101305408476756 0.101305408476756 -105.0031735 39.702226 -105.0042571 39.7018586
-780 785 786 0.0976265458519536 0.0976265458519536 -105.0042571 39.7018586 -105.0053032 39.7015078
-781 786 787 0.0966903245975086 0.0966903245975086 -105.0053032 39.7015078 -105.0063481 39.7011764
-783 788 789 0.0146697046803596 0.0146697046803596 -104.9407607 39.7528377 -104.9405891 39.7528377
-784 789 790 0.0984239882007814 0.0984239882007814 -104.9405891 39.7528377 -104.9394378 39.7528432
-785 790 791 0.0942419953953979 0.0942419953953979 -104.9394378 39.7528432 -104.9383354 39.7528412
-786 791 792 0.0942417343682122 0.0942417343682122 -104.9383354 39.7528412 -104.937233 39.7528412
-787 792 793 0.0942331855902031 0.0942331855902031 -104.937233 39.7528412 -104.9361307 39.7528412
-789 794 795 0.0937138545964453 0.0937138545964453 -104.9350328 39.7528375 -104.9339366 39.7528432
-790 795 796 0.0956046195795482 0.0956046195795482 -104.9339366 39.7528432 -104.9328183 39.7528507
-791 796 797 0.0946549122760597 0.0946549122760597 -104.9328183 39.7528507 -104.9317111 39.7528441
-792 797 798 0.100527766007763 0.100527766007763 -104.9317111 39.7528441 -104.9305352 39.7528375
-793 798 799 0.10316918665 0.10316918665 -104.9305352 39.7528375 -104.9293286 39.7528556
-795 800 801 0.103459881633314 0.103459881633314 -104.9281577 39.7528638 -104.9269475 39.7528704
-796 801 802 0.0997925526863961 0.0997925526863961 -104.9269475 39.7528704 -104.9257802 39.7528638
-797 802 803 0.0998006432146063 0.0998006432146063 -104.9257802 39.7528638 -104.9246129 39.752877
-854 804 805 0.1238606801811 0.1238606801811 -104.9428502 39.768085 -104.9428549 39.7691989
-799 807 808 0.10163704947704 0.10163704947704 -104.9781222 39.7532569 -104.9769333 39.7532524
-800 808 812 0.0515064726572222 0.0515064726572222 -104.9769333 39.7532524 -104.9763308 39.7532506
-801 812 813 0.0494547954602067 0.0494547954602067 -104.9763308 39.7532506 -104.9757523 39.7532488
-802 813 814 0.051447981297694 0.051447981297694 -104.9757523 39.7532488 -104.9751505 39.753245
-803 814 815 0.0525679212147471 0.0525679212147471 -104.9751505 39.753245 -104.9745356 39.7532411
-804 815 816 0.0487973630951461 0.0487973630951461 -104.9745356 39.7532411 -104.9739648 39.753238
-805 816 817 0.0522598325196538 0.0522598325196538 -104.9739648 39.753238 -104.9733535 39.7532345
-806 817 818 0.103406751654374 0.103406751654374 -104.9733535 39.7532345 -104.9721439 39.7532392
-807 818 819 0.10785615815132 0.10785615815132 -104.9721439 39.7532392 -104.9708825 39.7532194
-808 819 820 0.10473605712406 0.10473605712406 -104.9708825 39.7532194 -104.9696574 39.7532291
-809 820 821 0.112264494558786 0.112264494558786 -104.9696574 39.7532291 -104.9683443 39.7532149
-810 821 822 0.0974128787334051 0.0974128787334051 -104.9683443 39.7532149 -104.9672048 39.753216
-811 822 823 0.107993299539667 0.107993299539667 -104.9672048 39.753216 -104.9659416 39.753226
-812 823 824 0.0548178827467902 0.0548178827467902 -104.9659416 39.753226 -104.9653005 39.7532157
-17428 10106 10103 0.0082057240713584 0.0082057240713584 -104.9831403 39.6888986 -104.9831832 39.6889646
-1819 1835 1836 0.0691383900190408 0.0691383900190408 -105.0109162 39.7209352 -105.0117245 39.7209266
-813 824 825 0.0508588332180354 0.0508588332180354 -104.9653005 39.7532157 -104.9647057 39.7532062
-816 827 828 0.0512039318870449 0.0512039318870449 -104.9622082 39.7532291 -104.9616093 39.7532223
-817 828 829 0.0518718595198435 0.0518718595198435 -104.9616093 39.7532223 -104.9610026 39.7532148
-818 829 830 0.106833526059922 0.106833526059922 -104.9610026 39.7532148 -104.9597529 39.7532154
-820 831 832 0.385745696022263 0.385745696022263 -104.9429184 39.780325 -104.9428851 39.783794
-821 832 833 0.404856481972801 0.404856481972801 -104.9428851 39.783794 -104.942994 39.787434
-823 834 835 0.105948732119107 0.105948732119107 -104.942934 39.7728949 -104.942926 39.7738477
-824 835 838 0.0910625591495108 0.0910625591495108 -104.942926 39.7738477 -104.9427798 39.7746589
-826 839 840 0.0919963536570051 0.0919963536570051 -104.942936 39.7789146 -104.942905 39.7797416
-828 841 842 0.174755253051921 0.174755253051921 -104.9425503 39.7162314 -104.9425424 39.717803
-829 842 843 0.178568082023164 0.178568082023164 -104.9425424 39.717803 -104.9425451 39.7194089
-830 843 844 0.17297498203528 0.17297498203528 -104.9425451 39.7194089 -104.9425424 39.7209645
-831 844 845 0.173265495891133 0.173265495891133 -104.9425424 39.7209645 -104.942551 39.7225227
-832 845 846 0.177949551875208 0.177949551875208 -104.942551 39.7225227 -104.9425236 39.7241229
-833 846 847 0.164704515205255 0.164704515205255 -104.9425236 39.7241229 -104.9425344 39.7256041
-835 848 849 0.140807407128784 0.140807407128784 -104.9429842 39.7544341 -104.9429772 39.7557004
-839 852 853 0.167627273627897 0.167627273627897 -104.9429072 39.7256062 -104.9429137 39.7271137
-840 853 854 0.0221861617364752 0.0221861617364752 -104.9429137 39.7271137 -104.9428989 39.7273129
-841 854 855 0.199351380476648 0.199351380476648 -104.9428989 39.7273129 -104.9429067 39.7291057
-842 855 856 0.154506611729302 0.154506611729302 -104.9429067 39.7291057 -104.942914 39.7304952
-843 856 857 0.177121299660486 0.177121299660486 -104.942914 39.7304952 -104.942882 39.7320879
-844 857 858 0.173233506037634 0.173233506037634 -104.942882 39.7320879 -104.9429078 39.7336457
-845 858 859 0.161447290254498 0.161447290254498 -104.9429078 39.7336457 -104.9428825 39.7350975
-846 859 860 0.184417991926907 0.184417991926907 -104.9428825 39.7350975 -104.9428903 39.736756
-847 860 861 0.174097913655798 0.174097913655798 -104.9428903 39.736756 -104.9428912 39.7383217
-848 861 862 0.200651350067359 0.200651350067359 -104.9428912 39.7383217 -104.9428936 39.7401262
-851 864 865 0.136205566327931 0.136205566327931 -104.9428605 39.7644833 -104.9428501 39.7657082
-852 865 866 0.134098020570816 0.134098020570816 -104.9428501 39.7657082 -104.9428673 39.7669141
-853 866 804 0.130206342500308 0.130206342500308 -104.9428673 39.7669141 -104.9428502 39.768085
-855 805 869 0.151636521465058 0.151636521465058 -104.9428549 39.7691989 -104.9428549 39.7705626
-856 869 870 0.0565102957854785 0.0565102957854785 -104.9428549 39.7705626 -104.9428589 39.7710708
-859 872 873 0.106081890543097 0.106081890543097 -104.9733495 39.7645106 -104.9721084 39.7645147
-860 873 874 0.104885275538693 0.104885275538693 -104.9721084 39.7645147 -104.9708813 39.7645106
-861 874 875 0.105346104071406 0.105346104071406 -104.9708813 39.7645106 -104.9696488 39.7645085
-862 875 876 0.105115636520032 0.105115636520032 -104.9696488 39.7645085 -104.968419 39.7645054
-16596 6712 8570 0.146117658845452 0.146117658845452 -104.9978555 39.7495627 -104.9966174 39.7504686
-864 877 878 0.106492224339564 0.106492224339564 -104.9671933 39.7645034 -104.9659474 39.7644992
-865 878 879 0.105226257982301 0.105226257982301 -104.9659474 39.7644992 -104.9647163 39.7644982
-866 879 880 0.109300044149485 0.109300044149485 -104.9647163 39.7644982 -104.9634376 39.7645079
-867 880 881 0.105305755069531 0.105305755069531 -104.9634376 39.7645079 -104.9622057 39.7644941
-868 881 882 0.0524982326673818 0.0524982326673818 -104.9622057 39.7644941 -104.9615915 39.7644962
-869 882 883 0.0527289587191423 0.0527289587191423 -104.9615915 39.7644962 -104.9609746 39.7644982
-870 883 884 0.104777165086199 0.104777165086199 -104.9609746 39.7644982 -104.9597488 39.76449
-871 884 885 0.101110616467656 0.101110616467656 -104.9597488 39.76449 -104.9585659 39.7644817
-873 886 887 0.105175290472485 0.105175290472485 -104.9573328 39.7644759 -104.9561023 39.7644735
-874 887 888 0.105460060240618 0.105460060240618 -104.9561023 39.7644735 -104.9548685 39.7644663
-875 888 889 0.104542724277831 0.104542724277831 -104.9548685 39.7644663 -104.9536454 39.7644642
-878 891 892 0.107871242081588 0.107871242081588 -104.9511738 39.7644539 -104.9499118 39.7644621
-879 892 893 0.100327397599291 0.100327397599291 -104.9499118 39.7644621 -104.9487381 39.764473
-880 893 894 0.10715921423401 0.10715921423401 -104.9487381 39.764473 -104.9474844 39.7644683
-11694 895 896 0.0160104862378167 0.0160104862378167 -105.0011439 39.7534971 -105.0012741 39.7533936
-881 894 897 0.103236099875311 0.103236099875311 -104.9474844 39.7644683 -104.9462766 39.7644635
-882 897 898 0.106539225146671 0.106539225146671 -104.9462766 39.7644635 -104.9450302 39.764473
-16754 10009 7565 0.0493392725986542 0.0493392725986542 -104.9506326 39.6988171 -104.9506273 39.6992608
-20639 10032 10878 0.0503841615701827 0.0503841615701827 -105.0143643 39.7624894 -105.0137749 39.7624832
-885 864 900 0.0968355268957622 0.0968355268957622 -104.9428605 39.7644833 -104.9417276 39.7644767
-886 900 901 0.0921857962021889 0.0921857962021889 -104.9417276 39.7644767 -104.9406492 39.7644637
-887 901 902 0.0154453872411826 0.0154453872411826 -104.9406492 39.7644637 -104.9404687 39.7644571
-888 902 903 0.099023611112339 0.099023611112339 -104.9404687 39.7644571 -104.9393102 39.7644637
-889 903 904 0.106658816969038 0.106658816969038 -104.9393102 39.7644637 -104.9380626 39.7644833
-890 904 905 0.102850064051981 0.102850064051981 -104.9380626 39.7644833 -104.9368593 39.7644833
-891 905 906 0.106374102165022 0.106374102165022 -104.9368593 39.7644833 -104.9356148 39.7644767
-893 907 908 0.107980942566683 0.107980942566683 -104.934389 39.7644899 -104.9331257 39.7644965
-897 911 912 0.0137000260099873 0.0137000260099873 -104.998644 39.7576675 -104.9985313 39.7577551
-900 914 915 0.266296417735211 0.266296417735211 -104.9793447 39.7725806 -104.9771733 39.7742982
-902 916 917 0.109365780913081 0.109365780913081 -104.9874133 39.7320545 -104.9861344 39.7320479
-903 917 918 0.110688879788924 0.110688879788924 -104.9861344 39.7320479 -104.98484 39.7320466
-904 918 919 0.0528048087506356 0.0528048087506356 -104.98484 39.7320466 -104.9842225 39.7320454
-905 919 920 0.0548227612983216 0.0548227612983216 -104.9842225 39.7320454 -104.9835814 39.7320454
-1909 1921 1922 0.0521063364540888 0.0521063364540888 -104.9646085 39.7074783 -104.9639994 39.7074818
-12333 8655 8656 0.00566894958463717 0.00566894958463717 -105.0074206 39.7547231 -105.0073545 39.7547272
-906 920 921 0.0600921295133805 0.0600921295133805 -104.9835814 39.7320454 -104.9828787 39.7320413
-907 921 922 0.0524145297386554 0.0524145297386554 -104.9828787 39.7320413 -104.9822659 39.7320313
-908 922 923 0.0533449751273277 0.0533449751273277 -104.9822659 39.7320313 -104.9816421 39.7320276
-909 923 924 0.0522830317618348 0.0522830317618348 -104.9816421 39.7320276 -104.9810307 39.7320279
-910 924 925 0.0531296104749593 0.0531296104749593 -104.9810307 39.7320279 -104.9804094 39.7320277
-911 925 926 0.0494870453453698 0.0494870453453698 -104.9804094 39.7320277 -104.9798307 39.7320293
-912 926 927 0.0490530439973252 0.0490530439973252 -104.9798307 39.7320293 -104.9792571 39.7320337
-916 930 931 0.0484862367563559 0.0484862367563559 -104.9775696 39.7320445 -104.9770026 39.732045
-917 931 932 0.0491192175023229 0.0491192175023229 -104.9770026 39.732045 -104.9764282 39.7320463
-918 932 933 0.0512499454427793 0.0512499454427793 -104.9764282 39.7320463 -104.9758289 39.7320426
-935 950 951 0.0925005138771614 0.0925005138771614 -104.9505701 39.7320992 -104.9494887 39.732119
-936 951 952 0.09155937925052 0.09155937925052 -104.9494887 39.732119 -104.9484181 39.7321077
-937 952 953 0.096647434304121 0.096647434304121 -104.9484181 39.7321077 -104.947288 39.7320961
-938 953 954 0.0946813321937467 0.0946813321937467 -104.947288 39.7320961 -104.9461808 39.7320927
-939 954 955 0.0465376592907314 0.0465376592907314 -104.9461808 39.7320927 -104.9456366 39.7320897
-941 956 957 0.0470827842175089 0.0470827842175089 -104.9450895 39.7320866 -104.944539 39.7320942
-942 957 958 0.0477097696809632 0.0477097696809632 -104.944539 39.7320942 -104.9439811 39.7320979
-943 958 959 0.0469673192776546 0.0469673192776546 -104.9439811 39.7320979 -104.9434319 39.7320929
-944 959 857 0.0470271779665272 0.0470271779665272 -104.9434319 39.7320929 -104.942882 39.7320879
-945 857 452 0.0433482724753884 0.0433482724753884 -104.942882 39.7320879 -104.9423751 39.7320847
-946 452 960 0.0461959621064724 0.0461959621064724 -104.9423751 39.7320847 -104.9418349 39.7320813
-947 960 456 0.0448744265859584 0.0448744265859584 -104.9418349 39.7320813 -104.9413102 39.732075
-948 456 961 0.0477309298676521 0.0477309298676521 -104.9413102 39.732075 -104.9407521 39.7320683
-950 962 963 0.203057783136815 0.203057783136815 -104.983818 39.7165111 -104.9838018 39.7183372
-951 963 964 0.111884367881333 0.111884367881333 -104.9838018 39.7183372 -104.9838008 39.7193434
-952 964 965 0.176567620505235 0.176567620505235 -104.9838008 39.7193434 -104.9838084 39.7209313
-953 965 966 0.178378901323504 0.178378901323504 -104.9838084 39.7209313 -104.9838084 39.7225355
-958 970 971 0.205957142551392 0.205957142551392 -104.9835185 39.781945 -104.9835456 39.7837971
-960 972 973 0.204078625402165 0.204078625402165 -104.9835456 39.7765347 -104.9835576 39.77837
-961 973 282 0.115147222371539 0.115147222371539 -104.9835576 39.77837 -104.98357 39.7794055
-964 976 977 0.0518319225146996 0.0518319225146996 -104.9741611 39.7400028 -104.9741536 39.7395367
-965 977 978 0.124228855322375 0.124228855322375 -104.9741536 39.7395367 -104.9741456 39.7384195
-966 978 979 0.172234101769625 0.172234101769625 -104.9741456 39.7384195 -104.9741314 39.7368706
-967 979 980 0.191895457064314 0.191895457064314 -104.9741314 39.7368706 -104.9741011 39.735145
-968 980 981 0.160844607226305 0.160844607226305 -104.9741011 39.735145 -104.9741082 39.7336985
-969 981 936 0.183612712644296 0.183612712644296 -104.9741082 39.7336985 -104.9740886 39.7320473
-18742 7651 6216 0.274731695307389 0.274731695307389 -105.0389317 39.7282542 -105.0389183 39.7257835
-970 936 982 0.178134725901618 0.178134725901618 -104.9740886 39.7320473 -104.9740839 39.7304453
-972 983 984 0.199061323006722 0.199061323006722 -104.9740784 39.7290693 -104.9740814 39.7272791
-973 984 985 0.188587247900735 0.188587247900735 -104.9740814 39.7272791 -104.9740756 39.7255831
-974 985 986 0.0433580404548831 0.0433580404548831 -104.9740756 39.7255831 -104.9740817 39.7251932
-975 986 987 0.125051012370851 0.125051012370851 -104.9740817 39.7251932 -104.9740753 39.7240686
-977 988 989 0.141681092806979 0.141681092806979 -104.9740667 39.7237385 -104.9740839 39.7224644
-978 989 990 0.0574887447164737 0.0574887447164737 -104.9740839 39.7224644 -104.97408 39.7219474
-979 990 991 0.201644088462744 0.201644088462744 -104.97408 39.7219474 -104.9740667 39.720134
-981 992 993 0.0142751187411164 0.0142751187411164 -104.974036 39.718887 -104.9740165 39.7187595
-983 994 995 0.198087310718341 0.198087310718341 -104.9745719 39.7165069 -104.9745878 39.7182883
-984 995 996 0.021294324874815 0.021294324874815 -104.9745878 39.7182883 -104.9745895 39.7184798
-986 997 998 0.477759831198138 0.477759831198138 -104.9873902 39.763763 -104.9876372 39.7594706
-988 999 1000 0.107359092710075 0.107359092710075 -104.9876054 39.7809872 -104.9875739 39.7819524
-989 1000 1001 0.213427542201395 0.213427542201395 -104.9875739 39.7819524 -104.9875739 39.7838718
-990 1001 1002 0.0204216124756694 0.0204216124756694 -104.9875739 39.7838718 -104.9875798 39.7840554
-991 1002 1003 0.169295945736254 0.169295945736254 -104.9875798 39.7840554 -104.987571 39.7855779
-992 1003 1004 0.202119044170343 0.202119044170343 -104.987571 39.7855779 -104.9875698 39.7873956
-993 1004 1007 0.405136142942317 0.405136142942317 -104.9875698 39.7873956 -104.987539 39.791039
-994 1008 753 0.128100004965855 0.128100004965855 -104.9879427 39.7740829 -104.9875955 39.7752036
-996 1009 277 0.197304277838347 0.197304277838347 -104.9875916 39.776556 -104.9875916 39.7783304
-998 1010 1011 0.168461631075683 0.168461631075683 -104.9624581 39.7255985 -104.9625093 39.727113
-999 1011 1012 0.0217275963794507 0.0217275963794507 -104.9625093 39.727113 -104.9625101 39.7273084
-1000 1012 1013 0.199706135128057 0.199706135128057 -104.9625101 39.7273084 -104.9625117 39.7291044
-1001 1013 1014 0.154996233446664 0.154996233446664 -104.9625117 39.7291044 -104.96252 39.7304983
-1002 1014 1015 0.0484476295387052 0.0484476295387052 -104.96252 39.7304983 -104.96252 39.730934
-1005 1018 1019 0.198018950245581 0.198018950245581 -104.9622539 39.7350462 -104.9622411 39.736827
-1006 1019 1020 0.173297369328456 0.173297369328456 -104.9622411 39.736827 -104.962243 39.7383855
-1007 1020 1021 0.177035115256862 0.177035115256862 -104.962243 39.7383855 -104.962234 39.7399776
-1008 1021 1022 0.17859043694682 0.17859043694682 -104.962234 39.7399776 -104.9622376 39.7415837
-1009 1022 674 0.00356025053355106 0.00356025053355106 -104.9622376 39.7415837 -104.9622362 39.7416157
-1010 674 1023 0.00366943257948706 0.00366943257948706 -104.9622362 39.7416157 -104.9622362 39.7416487
-1011 1023 1024 0.17484373239475 0.17484373239475 -104.9622362 39.7416487 -104.9622425 39.7432211
-1012 1024 1025 0.173998681621435 0.173998681621435 -104.9622425 39.7432211 -104.9622361 39.7447859
-1015 1027 1028 0.0704684258530158 0.0704684258530158 -104.9622318 39.748208 -104.9622408 39.7488417
-1017 1029 1030 0.0048505404615695 0.0048505404615695 -104.9622186 39.7494307 -104.9622168 39.7494743
-1018 1030 1031 0.00340295138148338 0.00340295138148338 -104.9622168 39.7494743 -104.9622174 39.7495049
-1019 1031 1035 0.134848566335067 0.134848566335067 -104.9622174 39.7495049 -104.9622398 39.7507175
-1020 1035 1036 0.137493615415566 0.137493615415566 -104.9622398 39.7507175 -104.9622462 39.751954
-16764 9868 2745 0.0490633016235184 0.0490633016235184 -104.9551011 39.698724 -104.9556601 39.6988225
-1021 1036 827 0.141821861187588 0.141821861187588 -104.9622462 39.751954 -104.9622082 39.7532291
-1023 1037 1038 0.144096028267239 0.144096028267239 -104.9622266 39.7544367 -104.9622461 39.7557325
-1024 1038 1039 0.13873602575008 0.13873602575008 -104.9622461 39.7557325 -104.9622183 39.75698
-1025 1039 1040 0.137557829611355 0.137557829611355 -104.9622183 39.75698 -104.9622463 39.7582169
-1026 1040 1041 0.134490266221638 0.134490266221638 -104.9622463 39.7582169 -104.962246 39.7594264
-1027 1041 1042 0.141541481862683 0.141541481862683 -104.962246 39.7594264 -104.9622157 39.7606991
-1028 1042 1043 0.00492593525103261 0.00492593525103261 -104.9622157 39.7606991 -104.9622157 39.7607434
-1029 1043 1044 0.138593778312369 0.138593778312369 -104.9622157 39.7607434 -104.9622117 39.7619898
-1030 1044 1045 0.140603553737706 0.140603553737706 -104.9622117 39.7619898 -104.9622462 39.763254
-1031 1045 881 0.137936273445967 0.137936273445967 -104.9622462 39.763254 -104.9622057 39.7644941
-1032 881 1046 0.138493298016227 0.138493298016227 -104.9622057 39.7644941 -104.9622049 39.7657396
-1033 1046 1047 0.135001777755027 0.135001777755027 -104.9622049 39.7657396 -104.9622057 39.7669537
-1034 1047 1048 0.131055322767976 0.131055322767976 -104.9622057 39.7669537 -104.9621706 39.768132
-1035 1048 1049 0.124939018757432 0.124939018757432 -104.9621706 39.768132 -104.9622462 39.7692541
-1037 1050 1051 0.292899479856136 0.292899479856136 -104.9620183 39.718346 -104.9620097 39.7209801
-1038 1051 1052 0.166422260927488 0.166422260927488 -104.9620097 39.7209801 -104.9620287 39.7224767
-1040 735 1053 0.129020329518136 0.129020329518136 -104.9624209 39.7765159 -104.9624154 39.7776762
-1042 1054 1055 0.104556386299221 0.104556386299221 -104.9541213 39.7802948 -104.9529111 39.7804333
-1044 1056 1057 0.0821976961903273 0.0821976961903273 -105.0423884 39.7011038 -105.043349 39.701089
-1046 1058 1059 0.198827335717405 0.198827335717405 -104.9523656 39.702949 -104.9500415 39.7029556
-1048 1060 1061 0.168836903384636 0.168836903384636 -104.9395373 39.7162311 -104.9395162 39.7147128
-1050 1062 1063 0.404705159588638 0.404705159588638 -104.9394384 39.6893266 -104.939435 39.685687
-1051 1067 1068 0.132512985213334 0.132512985213334 -105.0088199 39.7729339 -105.0088114 39.7741256
-1052 1068 1069 0.13497040303733 0.13497040303733 -105.0088114 39.7741256 -105.0088028 39.7753394
-1053 1069 1070 0.132768776601327 0.132768776601327 -105.0088028 39.7753394 -105.0087942 39.7765334
-1056 1072 1073 0.0939030414376985 0.0939030414376985 -105.009231 39.7782735 -105.0096773 39.7790452
-1058 1074 1075 0.180616569310233 0.180616569310233 -105.0092177 39.7838422 -105.0092438 39.7854664
-1059 1075 1076 0.0336398662027363 0.0336398662027363 -105.0092438 39.7854664 -105.009052 39.7857306
-1060 1076 1077 0.0410609349522483 0.0410609349522483 -105.009052 39.7857306 -105.0087381 39.7860102
-1061 1077 1078 0.0827433862317427 0.0827433862317427 -105.0087381 39.7860102 -105.0081209 39.7865836
-1062 1078 1079 0.0826887112506465 0.0826887112506465 -105.0081209 39.7865836 -105.0074815 39.7871418
-1064 1080 464 0.0761353371210495 0.0761353371210495 -104.972278 39.7033325 -104.9728479 39.7038584
-1065 464 1081 0.349900041786437 0.349900041786437 -104.9728479 39.7038584 -104.972547 39.7069966
-1066 1081 1082 0.00956876487693368 0.00956876487693368 -104.972547 39.7069966 -104.9724743 39.707062
-1068 1083 1084 0.207455473901342 0.207455473901342 -104.9730883 39.714707 -104.972397 39.7129187
-1069 1084 1085 0.20253048003379 0.20253048003379 -104.972397 39.7129187 -104.9723985 39.7110973
-1070 1085 1086 0.20117520633799 0.20117520633799 -104.9723985 39.7110973 -104.9723899 39.7092881
-1071 1086 1087 0.200445374909098 0.200445374909098 -104.9723899 39.7092881 -104.9724071 39.7074855
-1073 1088 1089 0.193552555847569 0.193552555847569 -105.0404004 39.7838769 -105.0403816 39.7856175
-1074 1089 1090 0.201907921550129 0.201907921550129 -105.0403816 39.7856175 -105.0403847 39.7874333
-1075 1090 1091 0.409168814751628 0.409168814751628 -105.0403847 39.7874333 -105.040408 39.791113
-1078 1094 1095 0.176210660233647 0.176210660233647 -105.0405328 39.7229583 -105.0405345 39.724543
-1082 1098 1099 0.214073333831546 0.214073333831546 -105.0405664 39.7301724 -105.0405735 39.7282472
-1083 1099 1100 0.273059176292595 0.273059176292595 -105.0405735 39.7282472 -105.0405477 39.7257916
-1085 1101 1102 0.177543118890406 0.177543118890406 -105.040518 39.7350236 -105.0404669 39.7366198
-1086 1102 1103 0.205192174072119 0.205192174072119 -105.0404669 39.7366198 -105.0404962 39.738465
-1089 1105 1106 0.177750162727048 0.177750162727048 -105.0409021 39.716554 -105.0408864 39.7181525
-1090 1106 1107 0.0539560094135977 0.0539560094135977 -105.0408864 39.7181525 -105.0408943 39.7186377
-1091 1107 1108 0.122234944576301 0.122234944576301 -105.0408943 39.7186377 -105.0409121 39.7197369
-1092 1108 1109 0.177333676437683 0.177333676437683 -105.0409121 39.7197369 -105.0409127 39.7213317
-1093 1109 1110 0.180925459405873 0.180925459405873 -105.0409127 39.7213317 -105.0409158 39.7229588
-1095 1111 1112 0.128811671442731 0.128811671442731 -105.0404537 39.7475871 -105.0404838 39.7487453
-1096 1112 1113 0.134815073580703 0.134815073580703 -105.0404838 39.7487453 -105.0404745 39.7499577
-1097 1113 1114 0.136688571742098 0.136688571742098 -105.0404745 39.7499577 -105.040538 39.751186
-1098 1114 1115 0.101403665812315 0.101403665812315 -105.040538 39.751186 -105.0404736 39.7520966
-1099 1115 1116 0.102067679100378 0.102067679100378 -105.0404736 39.7520966 -105.0404808 39.7530145
-1102 1118 1119 0.204345080233058 0.204345080233058 -105.0404858 39.7548633 -105.0404748 39.756701
-1103 1119 1120 0.199139333361331 0.199139333361331 -105.0404748 39.756701 -105.0404705 39.7584919
-1104 1120 1121 0.0469911073941159 0.0469911073941159 -105.0404705 39.7584919 -105.0404718 39.7589145
-1105 1121 1122 0.0592169845475301 0.0592169845475301 -105.0404718 39.7589145 -105.0404814 39.759447
-1106 1122 1123 0.0953718885827498 0.0953718885827498 -105.0404814 39.759447 -105.0404814 39.7603047
-1107 1123 1124 0.0510557799357253 0.0510557799357253 -105.0404814 39.7603047 -105.0404721 39.7607638
-1108 1124 1125 0.150795725410384 0.150795725410384 -105.0404721 39.7607638 -105.0404588 39.7621199
-1109 1125 1126 0.203566805558282 0.203566805558282 -105.0404588 39.7621199 -105.0405383 39.7639496
-1111 1127 1128 0.0472430646130033 0.0472430646130033 -105.0404877 39.7653392 -105.0404722 39.7657639
-1112 1128 1129 0.205543981836037 0.205543981836037 -105.0404722 39.7657639 -105.0404692 39.7676124
-1114 1130 1131 0.164841461931526 0.164841461931526 -105.0404986 39.769448 -105.0404564 39.7709301
-1115 1131 1132 0.171242319742711 0.171242319742711 -105.0404564 39.7709301 -105.0404464 39.7724701
-1116 1132 1133 0.15535130673221 0.15535130673221 -105.0404464 39.7724701 -105.0404403 39.7738672
-1117 1133 1134 0.155906924058663 0.155906924058663 -105.0404403 39.7738672 -105.040445 39.7752693
-1118 1134 1135 0.158641971110509 0.158641971110509 -105.040445 39.7752693 -105.0404138 39.7766958
-1120 1136 1137 0.202486056810199 0.202486056810199 -105.0404001 39.77838 -105.0404024 39.780201
-1124 1140 1141 0.106376038726262 0.106376038726262 -104.9343976 39.7632231 -104.9331531 39.7632297
-1125 1141 1142 0.11299023410348 0.11299023410348 -104.9331531 39.7632297 -104.9318313 39.7632429
-1127 1143 1144 0.105553895231553 0.105553895231553 -104.97335 39.7632488 -104.9721151 39.7632529
-1128 1144 1145 0.104117784384988 0.104117784384988 -104.9721151 39.7632529 -104.970897 39.7632567
-1129 1145 1146 0.103483298103444 0.103483298103444 -104.970897 39.7632567 -104.9696868 39.7632831
-1131 1147 1148 0.20922373460901 0.20922373460901 -104.9318227 39.7637905 -104.9293749 39.7637905
-1132 1148 1149 0.150393643985841 0.150393643985841 -104.9293749 39.7637905 -104.9276154 39.7637839
-1133 1149 1150 0.0550246362758013 0.0550246362758013 -104.9276154 39.7637839 -104.9269717 39.7637905
-1134 1150 1151 0.102697719375893 0.102697719375893 -104.9269717 39.7637905 -104.9257702 39.7637877
-1135 1151 1152 0.0983530643806034 0.0983530643806034 -104.9257702 39.7637877 -104.9246199 39.7638103
-1136 1152 1153 0.0500465548413358 0.0500465548413358 -104.9246199 39.7638103 -104.9240347 39.7637955
-1137 1153 1154 0.957298194837815 0.957298194837815 -104.9240347 39.7637955 -104.9128351 39.7638537
-1138 1155 1156 0.108691319059022 0.108691319059022 -104.9684118 39.7632474 -104.9671402 39.7632525
-1139 1156 1157 0.102249102579738 0.102249102579738 -104.9671402 39.7632525 -104.965944 39.7632443
-1140 1157 1160 0.108168549451273 0.108168549451273 -104.965944 39.7632443 -104.9646785 39.763243
-1141 1160 1161 0.101829092464478 0.101829092464478 -104.9646785 39.763243 -104.9634876 39.7632183
-1144 1162 1163 0.0512778300683452 0.0512778300683452 -104.9615772 39.7632401 -104.9609775 39.7632277
-1146 1164 1165 0.100040433804019 0.100040433804019 -104.959733 39.7632393 -104.9585626 39.7632361
-1147 1165 1166 0.107579273983848 0.107579273983848 -104.9585626 39.7632361 -104.957304 39.7632393
-1148 1166 1167 0.103452121653836 0.103452121653836 -104.957304 39.7632393 -104.9560938 39.7632261
-1149 1167 1168 0.102717798897395 0.102717798897395 -104.9560938 39.7632261 -104.9548921 39.7632327
-1150 1168 1169 0.106376023896376 0.106376023896376 -104.9548921 39.7632327 -104.9536476 39.7632393
-1151 1169 1170 0.105583034841699 0.105583034841699 -104.9536476 39.7632393 -104.9524125 39.7632244
-1152 1170 1171 0.105884448878202 0.105884448878202 -104.9524125 39.7632244 -104.9511738 39.7632137
-1153 1171 1172 0.107984392656028 0.107984392656028 -104.9511738 39.7632137 -104.9499105 39.763222
-1154 1172 1173 0.100211807661524 0.100211807661524 -104.9499105 39.763222 -104.9487381 39.7632261
-1156 1174 1175 0.0651406407561477 0.0651406407561477 -104.9462747 39.7632063 -104.9455127 39.7631967
-1157 1176 1177 0.0916420940843904 0.0916420940843904 -104.9973407 39.7040997 -104.9966621 39.703462
-1158 1177 1178 0.317057086238115 0.317057086238115 -104.9966621 39.703462 -104.9967808 39.7006121
-1159 1178 1179 0.0403904373250439 0.0403904373250439 -104.9967808 39.7006121 -104.9967738 39.7002489
-1160 1179 1180 0.087664479851631 0.087664479851631 -104.9967738 39.7002489 -104.9967587 39.6994606
-1163 555 558 0.0996109464859662 0.0996109464859662 -104.9967877 39.6982448 -104.996796 39.697349
-1165 1182 1183 0.200712633020301 0.200712633020301 -104.996786 39.6966954 -104.9968385 39.6948908
-1166 1183 141 0.201303158931495 0.201303158931495 -104.9968385 39.6948908 -104.9968856 39.6930808
-1167 141 1184 0.160264959796536 0.160264959796536 -104.9968856 39.6930808 -104.9968546 39.6916397
-1169 1185 1186 0.0892826433471673 0.0892826433471673 -104.9658583 39.7271019 -104.9648143 39.7271028
-16608 9325 9944 0.146983175121654 0.146983175121654 -104.9845026 39.7504509 -104.9832891 39.7513873
-1171 1187 1011 0.0980488049438762 0.0980488049438762 -104.9636558 39.7271103 -104.9625093 39.727113
-1172 1011 1188 0.100351187096818 0.100351187096818 -104.9625093 39.727113 -104.9613359 39.7271192
-1173 1188 1189 0.0991689160182861 0.0991689160182861 -104.9613359 39.7271192 -104.9601763 39.7271213
-1174 1189 1190 0.0985624561842153 0.0985624561842153 -104.9601763 39.7271213 -104.9590238 39.7271173
-1175 1190 1191 0.0992629404802966 0.0992629404802966 -104.9590238 39.7271173 -104.9578631 39.7271192
-1177 1192 1193 0.0982024972051538 0.0982024972051538 -104.9567021 39.7271202 -104.9555538 39.7271183
-1178 1193 1194 0.0979660824445765 0.0979660824445765 -104.9555538 39.7271183 -104.9544083 39.7271255
-1179 1194 1195 0.0324477724054976 0.0324477724054976 -104.9544083 39.7271255 -104.9540289 39.7271284
-1180 1195 1196 0.0675268282620706 0.0675268282620706 -104.9540289 39.7271284 -104.9532393 39.7271307
-1182 1197 1198 0.0679368973278076 0.0679368973278076 -104.9528791 39.7271293 -104.9520847 39.7271285
-1184 1199 1200 0.0686815112230977 0.0686815112230977 -104.951727 39.7271329 -104.9509239 39.7271356
-1185 1200 1201 0.0309923494566171 0.0309923494566171 -104.9509239 39.7271356 -104.9505615 39.7271353
-1186 1201 1202 0.0899174664521967 0.0899174664521967 -104.9505615 39.7271353 -104.9495101 39.7271408
-1187 1202 1203 0.0945518763756908 0.0945518763756908 -104.9495101 39.7271408 -104.9484045 39.7271363
-1188 1203 1204 0.0933113340782308 0.0933113340782308 -104.9484045 39.7271363 -104.9473134 39.7271328
-1189 1204 1205 0.09509225728821 0.09509225728821 -104.9473134 39.7271328 -104.9462015 39.7271261
-1190 1205 1206 0.0947055520559319 0.0947055520559319 -104.9462015 39.7271261 -104.9450941 39.7271221
-1191 1206 1207 0.0954663818870976 0.0954663818870976 -104.9450941 39.7271221 -104.9439778 39.7271255
-1192 1207 1208 0.0457748420522195 0.0457748420522195 -104.9439778 39.7271255 -104.9434426 39.7271196
-1193 1208 853 0.0452361278424885 0.0452361278424885 -104.9434426 39.7271196 -104.9429137 39.7271137
-1194 853 1209 0.0465328064656566 0.0465328064656566 -104.9429137 39.7271137 -104.9423696 39.7271171
-1195 1209 1210 0.0443349306457526 0.0443349306457526 -104.9423696 39.7271171 -104.9418512 39.7271204
-1196 1210 1211 0.0926255737985973 0.0926255737985973 -104.9418512 39.7271204 -104.940806 39.726902
-1200 1214 1215 0.199187167786165 0.199187167786165 -105.0123769 39.7838268 -105.0123627 39.7856181
-1201 1215 1216 0.200954541481784 0.200954541481784 -105.0123627 39.7856181 -105.0123497 39.7874253
-1202 1216 1217 0.405030982441888 0.405030982441888 -105.0123497 39.7874253 -105.0123693 39.7910678
-1203 1218 1219 0.0492032479248998 0.0492032479248998 -105.0123634 39.7348021 -105.0123463 39.7352444
-1204 1219 1220 0.0957003230509211 0.0957003230509211 -105.0123463 39.7352444 -105.0123588 39.736105
-1206 1221 1222 0.0745042299709739 0.0745042299709739 -105.0123509 39.7369148 -105.0123423 39.7375848
-1207 1222 1223 0.102728552500243 0.102728552500243 -105.0123423 39.7375848 -105.012356 39.7385086
-1208 1223 1224 0.112933078893132 0.112933078893132 -105.012356 39.7385086 -105.0123175 39.7395238
-1210 1225 1226 0.132646861758746 0.132646861758746 -105.0118006 39.7583774 -105.01181 39.7571845
-1212 1227 1228 0.133737749967366 0.133737749967366 -105.0123547 39.769283 -105.0123662 39.7704857
-1213 1228 1229 0.138340301298334 0.138340301298334 -105.0123662 39.7704857 -105.0123561 39.7717298
-1214 1229 1230 0.133937469551528 0.133937469551528 -105.0123561 39.7717298 -105.0123669 39.7729343
-1215 1230 1231 0.133215122537399 0.133215122537399 -105.0123669 39.7729343 -105.0123362 39.7741321
-1216 1231 1236 0.135593895539884 0.135593895539884 -105.0123362 39.7741321 -105.012326 39.7753515
-1217 1236 1237 0.134329596288595 0.134329596288595 -105.012326 39.7753515 -105.0123583 39.7765593
-1218 1237 1238 0.133838756927755 0.133838756927755 -105.0123583 39.7765593 -105.0123072 39.7777623
-1220 1239 1240 0.201119608536246 0.201119608536246 -105.0121506 39.7275003 -105.0121592 39.729309
-1222 1241 1242 0.0687159203588902 0.0687159203588902 -105.0205242 39.7613979 -105.0205115 39.7620158
-1223 1242 1243 0.133400908392016 0.133400908392016 -105.0205115 39.7620158 -105.0205151 39.7632155
-1224 1243 1247 0.135380581131659 0.135380581131659 -105.0205151 39.7632155 -105.0205098 39.764433
-1225 1247 1248 0.134002229768192 0.134002229768192 -105.0205098 39.764433 -105.0205165 39.7656381
-1226 1248 1249 0.133545106900313 0.133545106900313 -105.0205165 39.7656381 -105.0205165 39.7668391
-1227 1249 1250 0.135368900396577 0.135368900396577 -105.0205165 39.7668391 -105.0205192 39.7680565
-1228 1250 1251 0.135024432224222 0.135024432224222 -105.0205192 39.7680565 -105.0205232 39.7692708
-1229 1251 1252 0.104469760585228 0.104469760585228 -105.0205232 39.7692708 -105.020531 39.7702103
-1230 1252 1253 0.0306570001135196 0.0306570001135196 -105.020531 39.7702103 -105.0205211 39.7704859
-1231 1253 1254 0.0720522950545032 0.0720522950545032 -105.0205211 39.7704859 -105.0205077 39.7711338
-1232 1254 1255 0.0658986376594475 0.0658986376594475 -105.0205077 39.7711338 -105.0204909 39.7717263
-1233 1255 1256 0.0399746208950617 0.0399746208950617 -105.0204909 39.7717263 -105.0204902 39.7720858
-1234 1256 1257 0.0944491578366609 0.0944491578366609 -105.0204902 39.7720858 -105.020488 39.7729352
-1235 1257 1258 0.132766928353997 0.132766928353997 -105.020488 39.7729352 -105.0204854 39.7741292
-1236 1258 1259 0.135424431672451 0.135424431672451 -105.0204854 39.7741292 -105.0204832 39.7753471
-1237 1259 1260 0.140672385455392 0.140672385455392 -105.0204832 39.7753471 -105.0205036 39.7766121
-1238 1260 1261 0.134975501941172 0.134975501941172 -105.0205036 39.7766121 -105.0204874 39.7778259
-1239 1261 1262 0.0645486549169547 0.0645486549169547 -105.0204874 39.7778259 -105.0204874 39.7784064
-1240 1262 1263 0.0682069680036474 0.0682069680036474 -105.0204874 39.7784064 -105.0204874 39.7790198
-1241 1263 1264 0.132661334326961 0.132661334326961 -105.0204874 39.7790198 -105.0204729 39.7802128
-1242 1264 1265 0.198750077150319 0.198750077150319 -105.0204729 39.7802128 -105.0204691 39.7820002
-1243 1265 1266 0.153240793837705 0.153240793837705 -105.0204691 39.7820002 -105.0204447 39.7833782
-1245 273 1267 0.0675767060379672 0.0675767060379672 -105.0203028 39.7400362 -105.0202947 39.7406439
-1247 1268 1269 0.0991648269688332 0.0991648269688332 -105.0203557 39.7175319 -105.0203986 39.7184231
-1248 1269 1270 0.105715575753422 0.105715575753422 -105.0203986 39.7184231 -105.0204072 39.7193738
-1249 1270 1271 0.096909170039208 0.096909170039208 -105.0204072 39.7193738 -105.0204158 39.7202453
-1251 1272 1273 0.132822339876578 0.132822339876578 -105.0204988 39.7476034 -105.0204988 39.7487979
-1252 1273 1274 0.108602805332053 0.108602805332053 -105.0204988 39.7487979 -105.0204817 39.7497745
-1253 1274 1275 0.0271637528935803 0.0271637528935803 -105.0204817 39.7497745 -105.0204903 39.7500187
-1254 1275 1276 0.112230208152067 0.112230208152067 -105.0204903 39.7500187 -105.0205429 39.7510272
-1255 1276 1277 0.0176649567962355 0.0176649567962355 -105.0205429 39.7510272 -105.020537 39.751186
-1256 1277 1278 0.135399208639876 0.135399208639876 -105.020537 39.751186 -105.0205102 39.7524035
-1257 1278 1279 0.134958357098824 0.134958357098824 -105.0205102 39.7524035 -105.0205165 39.7536172
-1258 1279 1280 0.13471438954866 0.13471438954866 -105.0205165 39.7536172 -105.0205245 39.7548287
-1259 1280 1281 0.0527317447874755 0.0527317447874755 -105.0205245 39.7548287 -105.0205312 39.7553029
-1260 1281 1282 0.0822068643990868 0.0822068643990868 -105.0205312 39.7553029 -105.0205344 39.7560422
-1262 24 1283 0.0541075654220215 0.0541075654220215 -105.0205339 39.7572526 -105.0205326 39.7577392
-1263 1283 1284 0.0277584904979192 0.0277584904979192 -105.0205326 39.7577392 -105.0205218 39.7579887
-1264 1284 1285 0.0119510600074318 0.0119510600074318 -105.0205218 39.7579887 -105.0205433 39.7580949
-1265 1285 1286 0.00765101800505865 0.00765101800505865 -105.0205433 39.7580949 -105.020542 39.7581637
-1267 1287 1288 0.0102422085479252 0.0102422085479252 -105.0205384 39.7583461 -105.0205366 39.7584382
-1269 1289 1290 0.18749026453307 0.18749026453307 -105.0204845 39.7839453 -105.0204693 39.7856314
-1270 1290 1291 0.200784792674354 0.200784792674354 -105.0204693 39.7856314 -105.0204718 39.7874371
-1271 1291 1292 0.406662337861329 0.406662337861329 -105.0204718 39.7874371 -105.0204665 39.7910943
-1272 1293 1028 0.104130177494266 0.104130177494266 -104.9634588 39.7488413 -104.9622408 39.7488417
-1274 1294 1295 0.209580478517529 0.209580478517529 -104.9875234 39.7129763 -104.9899734 39.7129983
-1275 1295 1296 0.202179673681852 0.202179673681852 -104.9899734 39.7129983 -104.992337 39.712987
-1276 1296 1297 0.102644670381459 0.102644670381459 -104.992337 39.712987 -104.993537 39.712987
-1277 1297 1298 0.08553722531747 0.08553722531747 -104.993537 39.712987 -104.994537 39.712987
-1278 1299 1300 0.10911250090994 0.10911250090994 -105.0250625 39.7133847 -105.0263381 39.713379
-1279 1300 1305 0.103516561820708 0.103516561820708 -105.0263381 39.713379 -105.0275483 39.713379
-1280 1305 1306 0.107188605435255 0.107188605435255 -105.0275483 39.713379 -105.0288014 39.7133724
-1282 1307 1308 0.104254785791266 0.104254785791266 -105.0299945 39.7133592 -105.0312133 39.7133658
-1283 1308 1309 0.104981820314566 0.104981820314566 -105.0312133 39.7133658 -105.0324406 39.7133724
-1284 1309 1310 0.0539236153779667 0.0539236153779667 -105.0324406 39.7133724 -105.033071 39.7133691
-1285 1310 1311 0.0525379554780919 0.0525379554780919 -105.033071 39.7133691 -105.0336852 39.7133658
-1287 1312 1313 0.0516652738700608 0.0516652738700608 -105.0342968 39.7133689 -105.0349008 39.7133719
-1288 1313 1314 0.0506813468547144 0.0506813468547144 -105.0349008 39.7133719 -105.0354933 39.7133745
-1289 1314 1315 0.0508976456987324 0.0508976456987324 -105.0354933 39.7133745 -105.0360883 39.7133797
-1290 1315 1316 0.0521616744394787 0.0521616744394787 -105.0360883 39.7133797 -105.0366981 39.7133763
-1291 1316 1317 0.0506396099336441 0.0506396099336441 -105.0366981 39.7133763 -105.0372901 39.7133724
-1292 1317 1318 0.0516214270666003 0.0516214270666003 -105.0372901 39.7133724 -105.0378936 39.7133724
-1293 1318 1319 0.0518951446578895 0.0518951446578895 -105.0378936 39.7133724 -105.0385003 39.7133724
-1294 1319 1320 0.0518013233234396 0.0518013233234396 -105.0385003 39.7133724 -105.0391059 39.7133709
-1295 1320 1321 0.0498510970504219 0.0498510970504219 -105.0391059 39.7133709 -105.0396887 39.7133694
-1296 1321 1322 0.0511186989957182 0.0511186989957182 -105.0396887 39.7133694 -105.0402863 39.7133654
-1297 1322 1323 0.0508331487974254 0.0508331487974254 -105.0402863 39.7133654 -105.0408805 39.7133731
-1300 1325 1326 0.08881123864976 0.08881123864976 -105.0432523 39.7133745 -105.0442903 39.7133559
-1304 499 1329 0.167484239247501 0.167484239247501 -105.0019139 39.7130364 -105.0038719 39.7130446
-1305 1329 1332 0.203905657642638 0.203905657642638 -105.0038719 39.7130446 -105.0062556 39.7130258
-1306 1332 1333 0.204847680679676 0.204847680679676 -105.0062556 39.7130258 -105.0086503 39.7130456
-1307 1333 1334 0.201123583387407 0.201123583387407 -105.0086503 39.7130456 -105.0110016 39.7130472
-1309 1335 1336 0.157474175144751 0.157474175144751 -105.012511 39.712992 -105.014352 39.712994
-1310 1336 1337 0.117575441930224 0.117575441930224 -105.014352 39.712994 -105.015726 39.713024
-1311 1337 1338 0.0942761529447682 0.0942761529447682 -105.015726 39.713024 -105.016828 39.7130093
-1313 1339 1340 0.0991229934735866 0.0991229934735866 -105.0179868 39.7130093 -105.0191455 39.712996
-1314 1340 193 0.100574656408132 0.100574656408132 -105.0191455 39.712996 -105.0203213 39.712996
-1315 193 1341 0.102057084030905 0.102057084030905 -105.0203213 39.712996 -105.0215144 39.7130026
-1316 1341 1342 0.101342753238197 0.101342753238197 -105.0215144 39.7130026 -105.0226989 39.7129828
-1317 1342 1343 0.0983873083767276 0.0983873083767276 -105.0226989 39.7129828 -105.023849 39.712996
-1318 1343 1344 0.103799446896886 0.103799446896886 -105.023849 39.712996 -105.0250625 39.7129968
-1320 1345 1346 0.0125938712274396 0.0125938712274396 -105.0025087 39.7490201 -105.0024538 39.7491252
-1323 1348 1349 0.273909093656176 0.273909093656176 -104.9759324 39.769905 -104.9740676 39.7719084
-1325 1350 1351 0.136546503712986 0.136546503712986 -105.0063979 39.7825483 -105.007995 39.7825082
-1326 1351 1352 0.134960662965356 0.134960662965356 -105.007995 39.7825082 -105.0095743 39.7825214
-1327 1352 1353 0.12926179848792 0.12926179848792 -105.0095743 39.7825214 -105.0110864 39.7825542
-1328 1353 1354 0.137757238088674 0.137757238088674 -105.0110864 39.7825542 -105.0126985 39.7825478
-1329 1354 1355 0.134312853283448 0.134312853283448 -105.0126985 39.7825478 -105.0142702 39.7825623
-1330 1355 1356 0.132780195397846 0.132780195397846 -105.0142702 39.7825623 -105.015824 39.7825504
-1334 1359 1360 0.200708631878513 0.200708631878513 -104.9979619 39.6967021 -104.9980058 39.6948974
-1336 142 1364 0.213116678885437 0.213116678885437 -104.9980358 39.6930742 -104.9980305 39.6911576
-1338 1365 1366 0.152775417186349 0.152775417186349 -105.0337367 39.6912702 -105.0337624 39.6898964
-1339 1367 1368 0.213588518747439 0.213588518747439 -104.9875368 39.7120974 -104.9900335 39.7121268
-1341 1369 1370 0.0932290478454428 0.0932290478454428 -104.9923595 39.7121202 -104.993449 39.7121432
-1342 1371 1372 0.0501807359890933 0.0501807359890933 -105.0361028 39.7117899 -105.0366894 39.7117844
-1343 1372 1373 0.0506488838331464 0.0506488838331464 -105.0366894 39.7117844 -105.0372815 39.7117878
-1344 1373 1374 0.0509778039678037 0.0509778039678037 -105.0372815 39.7117878 -105.0378774 39.7117812
-1345 1374 1375 0.0510804446988023 0.0510804446988023 -105.0378774 39.7117812 -105.0384745 39.7117746
-1346 1375 1376 0.0530938888935116 0.0530938888935116 -105.0384745 39.7117746 -105.0390952 39.7117746
-1347 1376 1377 0.0533676128248485 0.0533676128248485 -105.0390952 39.7117746 -105.0397191 39.7117746
-1348 1377 1378 0.0492215264037076 0.0492215264037076 -105.0397191 39.7117746 -105.0402944 39.711784
-1349 1378 1379 0.0493909004241748 0.0493909004241748 -105.0402944 39.711784 -105.0408718 39.7117866
-1350 1379 1380 0.102775081126436 0.102775081126436 -105.0408718 39.7117866 -105.0420733 39.7117889
-1351 1380 1381 0.100172308119327 0.100172308119327 -105.0420733 39.7117889 -105.0432442 39.7117733
-1353 1382 1383 0.0341877559991377 0.0341877559991377 -104.9972593 39.7123952 -104.9976275 39.7122756
-1354 1383 1384 0.104577694208817 0.104577694208817 -104.9976275 39.7122756 -104.998769 39.7119388
-1356 1385 1386 0.193890579001187 0.193890579001187 -105.0016028 39.7121409 -105.0038695 39.7121354
-2459 714 2450 0.108569713532818 0.108569713532818 -105.0041958 39.7705323 -105.0054661 39.7705389
-1358 1387 1388 0.203368582544414 0.203368582544414 -105.0062556 39.7121476 -105.0086331 39.7121543
-1359 1388 1389 0.203745939128333 0.203745939128333 -105.0086331 39.7121543 -105.011015 39.7121455
-1361 1390 1391 0.199208620541168 0.199208620541168 -105.0322152 39.7838328 -105.0322278 39.7856243
-1362 1391 1392 0.199941300123434 0.199941300123434 -105.0322278 39.7856243 -105.0322013 39.7874223
-1364 1393 1394 0.177657657089983 0.177657657089983 -105.0324691 39.7165619 -105.0324777 39.7181596
-1365 1394 1395 0.177656134299769 0.177656134299769 -105.0324777 39.7181596 -105.0324777 39.7197573
-1366 1395 1396 0.0721099099294465 0.0721099099294465 -105.0324777 39.7197573 -105.0324777 39.7204058
-1367 1396 1397 0.103333445330309 0.103333445330309 -105.0324777 39.7204058 -105.0324777 39.7213351
-1368 1397 1398 0.177111308895875 0.177111308895875 -105.0324777 39.7213351 -105.0324765 39.7229279
-1369 1398 1399 0.177390305757292 0.177390305757292 -105.0324765 39.7229279 -105.0324836 39.7245232
-1370 1399 1400 0.0617135848764214 0.0617135848764214 -105.0324836 39.7245232 -105.0324862 39.7250782
-1371 1400 1401 0.0203196347458361 0.0203196347458361 -105.0324862 39.7250782 -105.0324911 39.7252609
-1373 1402 1403 0.0235752242204257 0.0235752242204257 -105.032154 39.734838 -105.0321575 39.73505
-1375 1404 1402 0.00627534757508794 0.00627534757508794 -105.0321449 39.734782 -105.032154 39.734838
-1377 1405 1406 0.205561430653916 0.205561430653916 -105.0321172 39.729303 -105.0321363 39.7311516
-1378 1406 1407 0.198211407371417 0.198211407371417 -105.0321363 39.7311516 -105.032155 39.7329341
-1379 1407 1404 0.205478920022626 0.205478920022626 -105.032155 39.7329341 -105.0321449 39.734782
-1381 1408 1409 0.100293396704139 0.100293396704139 -105.032238 39.773186 -105.032333 39.774085
-2482 2015 1998 0.0374209544699414 0.0374209544699414 -104.9354827 39.7474085 -104.935045 39.7474085
-1382 1409 1410 0.293581023203639 0.293581023203639 -105.032333 39.774085 -105.0322367 39.7767242
-1386 1413 1414 0.135399373352711 0.135399373352711 -105.0110892 39.7813605 -105.0126737 39.7813618
-1387 1414 1415 0.134222064866511 0.134222064866511 -105.0126737 39.7813618 -105.0142444 39.7813552
-1388 1415 1416 0.135554703950228 0.135554703950228 -105.0142444 39.7813552 -105.0158307 39.7813611
-1390 1417 1418 0.0459508709120374 0.0459508709120374 -104.9988224 39.7819937 -104.9993559 39.7819419
-1391 1418 1419 0.202303287973101 0.202303287973101 -104.9993559 39.7819419 -105.0017224 39.7819937
-1394 1421 1422 0.101428183167069 0.101428183167069 -105.0345828 39.7821162 -105.0357695 39.7820968
-1395 1422 1423 0.0971760324958247 0.0971760324958247 -105.0357695 39.7820968 -105.0369066 39.7820848
-1396 1423 1424 0.100465380366459 0.100465380366459 -105.0369066 39.7820848 -105.0380823 39.7820859
-1397 1424 1425 0.0503823697773718 0.0503823697773718 -105.0380823 39.7820859 -105.0386719 39.7820847
-1398 1425 1426 0.0484682644313395 0.0484682644313395 -105.0386719 39.7820847 -105.0392391 39.7820835
-1399 1426 1427 0.0493995225121813 0.0493995225121813 -105.0392391 39.7820835 -105.0398172 39.7820831
-1400 1427 1138 0.0500574902796296 0.0500574902796296 -105.0398172 39.7820831 -105.040403 39.7820828
-1401 1138 1428 0.0487273610513856 0.0487273610513856 -105.040403 39.7820828 -105.0409732 39.782078
-1403 1429 1430 0.0510517494638005 0.0510517494638005 -105.0415749 39.7820729 -105.0421723 39.7820779
-1404 1430 1431 0.0485479238043371 0.0485479238043371 -105.0421723 39.7820779 -105.0427404 39.7820827
-1405 1431 1432 0.0499990939034271 0.0499990939034271 -105.0427404 39.7820827 -105.0433255 39.7820793
-1406 1432 1433 0.0540496336498359 0.0540496336498359 -105.0433255 39.7820793 -105.043958 39.7820756
-1408 1434 1435 0.101502735016485 0.101502735016485 -105.015828 39.7819929 -105.0170158 39.7820003
-1409 1435 1436 0.0975542961638382 0.0975542961638382 -105.0170158 39.7820003 -105.0181574 39.7819937
-1410 1436 1437 0.099750341261668 0.099750341261668 -105.0181574 39.7819937 -105.0193247 39.7820003
-1411 1437 1265 0.0977907961309881 0.0977907961309881 -105.0193247 39.7820003 -105.0204691 39.7820002
-1413 1438 1439 0.100436447451859 0.100436447451859 -105.0216256 39.7820039 -105.0228009 39.7820131
-1416 1441 1442 0.100952147732681 0.100952147732681 -105.0038773 39.7148211 -105.0038934 39.7139133
-1417 1442 1329 0.0966125375658313 0.0966125375658313 -105.0038934 39.7139133 -105.0038719 39.7130446
-1418 1329 1386 0.101098635736807 0.101098635736807 -105.0038719 39.7130446 -105.0038695 39.7121354
-1419 1386 1443 0.103303628365074 0.103303628365074 -105.0038695 39.7121354 -105.0038795 39.7112064
-1420 1443 1444 0.105351454494942 0.105351454494942 -105.0038795 39.7112064 -105.0039077 39.7102592
-1421 1444 1445 0.104823988220675 0.104823988220675 -105.0039077 39.7102592 -105.0039116 39.7093165
-1422 1445 1446 0.0939934684249721 0.0939934684249721 -105.0039116 39.7093165 -105.0038944 39.7084713
-1424 1447 1448 0.0986593061594928 0.0986593061594928 -105.0038773 39.7075535 -105.0037914 39.7066687
-1425 1448 1449 0.102799709683289 0.102799709683289 -105.0037914 39.7066687 -105.0037914 39.7057442
-1426 1449 1450 0.0947158385157811 0.0947158385157811 -105.0037914 39.7057442 -105.0037914 39.7048924
-1427 1450 1451 0.0999075147918272 0.0999075147918272 -105.0037914 39.7048924 -105.0038258 39.7039943
-1429 1452 784 0.0977509062908684 0.0977509062908684 -105.003594 39.7030434 -105.0031735 39.702226
-1431 1453 1454 0.0719801500300486 0.0719801500300486 -105.0038208 39.695498 -105.0038293 39.6948507
-1432 1454 147 0.198407848383786 0.198407848383786 -105.0038293 39.6948507 -105.0039152 39.6930676
-1433 147 1455 0.0338525123105229 0.0338525123105229 -105.0039152 39.6930676 -105.0039409 39.6927638
-1435 151 1456 0.201963345264684 0.201963345264684 -105.0077346 39.6931072 -105.0077346 39.6912909
-1438 1458 1459 0.393387760227334 0.393387760227334 -105.0078206 39.6893993 -105.007872 39.6858617
-1439 1460 1343 0.203476082408649 0.203476082408649 -105.0238542 39.7148259 -105.023849 39.712996
-1440 1343 1461 0.205811743637529 0.205811743637529 -105.023849 39.712996 -105.0238413 39.7111451
-1441 1461 1462 0.203884797606556 0.203884797606556 -105.0238413 39.7111451 -105.0238747 39.7093117
-1442 1462 1463 0.199707411933497 0.199707411933497 -105.0238747 39.7093117 -105.0238662 39.7075157
-1443 1463 1464 0.202654089186264 0.202654089186264 -105.0238662 39.7075157 -105.0238576 39.7056932
-1444 1464 1465 0.201184980777767 0.201184980777767 -105.0238576 39.7056932 -105.0238576 39.7038839
-1446 778 1466 0.187246918966658 0.187246918966658 -105.023849 39.7020679 -105.0238662 39.700384
-1447 1466 1467 0.197539000166948 0.197539000166948 -105.0238662 39.700384 -105.0238404 39.6986076
-1448 1467 1468 0.208212504536917 0.208212504536917 -105.0238404 39.6986076 -105.0238399 39.6967351
-1450 1469 1470 0.186875447219802 0.186875447219802 -105.0235652 39.6967351 -105.0235572 39.6950545
-1451 173 1471 0.256211082856798 0.256211082856798 -105.0231623 39.6931129 -105.0231842 39.6908088
-1454 1473 1474 0.0115011236026218 0.0115011236026218 -104.9248865 39.6961248 -104.9247632 39.6960836
-1455 1474 1475 0.0782239536830869 0.0782239536830869 -104.9247632 39.6960836 -104.9241194 39.6955841
-1456 1475 1476 0.086773238144748 0.086773238144748 -104.9241194 39.6955841 -104.9233668 39.695061
-1457 1476 1479 0.0924870142175924 0.0924870142175924 -104.9233668 39.695061 -104.9226286 39.6944534
-1458 1479 1480 0.37958729242533 0.37958729242533 -104.9226286 39.6944534 -104.9194549 39.6920681
-1460 1482 1483 0.0482525610515095 0.0482525610515095 -104.9907544 39.6948087 -104.9913183 39.6948152
-1463 1183 1360 0.0998764831880159 0.0998764831880159 -104.9968385 39.6948908 -104.9980058 39.6948974
-1464 1360 1485 0.101348070124559 0.101348070124559 -104.9980058 39.6948974 -104.9991903 39.6948908
-1465 1485 1486 0.0984049068298888 0.0984049068298888 -104.9991903 39.6948908 -105.0003404 39.6948842
-1467 1487 1488 0.111519868825334 0.111519868825334 -104.9874337 39.6948003 -104.988737 39.694787
-1471 1454 1491 0.201276239535877 0.201276239535877 -105.0038293 39.6948507 -105.0061812 39.6948904
-1473 1492 1493 0.102671300709598 0.102671300709598 -105.036538 39.695087 -105.037738 39.695087
-1474 1493 1494 0.114201675013651 0.114201675013651 -105.037738 39.695087 -105.0390582 39.6949357
-1475 1494 1495 0.100620235623392 0.100620235623392 -105.0390582 39.6949357 -105.0402341 39.6949489
-1476 1495 1496 0.0991406161889474 0.0991406161889474 -105.0402341 39.6949489 -105.0413928 39.6949423
-1477 1496 1497 0.0998844924107287 0.0998844924107287 -105.0413928 39.6949423 -105.0425601 39.6949555
-1478 1497 1498 0.102075212599034 0.102075212599034 -105.0425601 39.6949555 -105.0437531 39.6949621
-1479 1498 1499 0.0984215743592215 0.0984215743592215 -105.0437531 39.6949621 -105.0449033 39.6949489
-1480 1499 1500 0.710275264674714 0.710275264674714 -105.0449033 39.6949489 -105.0532048 39.6949656
-1481 1501 1502 0.109574036549915 0.109574036549915 -105.0250491 39.694923 -105.0263295 39.6949026
-1482 1502 1503 0.290817056726042 0.290817056726042 -105.0263295 39.6949026 -105.0297284 39.6949225
-1484 1504 1505 0.0925327391334129 0.0925327391334129 -105.0309987 39.6949159 -105.0320802 39.6949159
-1485 1505 1506 0.0984021297067109 0.0984021297067109 -105.0320802 39.6949159 -105.0332303 39.6949159
-1486 1506 1508 0.0976913946915281 0.0976913946915281 -105.0332303 39.6949159 -105.0343718 39.694896
-1489 1509 1510 0.0972031962531711 0.0972031962531711 -104.9520771 39.704954 -104.9532101 39.7050201
-1490 1510 1511 0.029446204772298 0.029446204772298 -104.9532101 39.7050201 -104.9534977 39.7051656
-1494 1514 1515 0.0918220075397064 0.0918220075397064 -104.9278643 39.6960978 -104.9267914 39.6961177
-1499 1518 1519 0.202094906389576 0.202094906389576 -104.9745407 39.7110945 -104.9745633 39.7092771
-1500 1519 1520 0.199707443263373 0.199707443263373 -104.9745633 39.7092771 -104.9745719 39.7074811
-1501 1520 1521 0.202063984146535 0.202063984146535 -104.9745719 39.7074811 -104.9745465 39.705664
-1502 1521 1522 0.20219834838932 0.20219834838932 -104.9745465 39.705664 -104.9745729 39.7038457
-1503 1522 1523 0.199783925434931 0.199783925434931 -104.9745729 39.7038457 -104.9745731 39.702049
-1504 1523 47 0.203533027899534 0.203533027899534 -104.9745731 39.702049 -104.974563 39.7002186
-2599 2565 2566 0.0719878134592224 0.0719878134592224 -104.9525578 39.7090414 -104.9525835 39.7096885
-1506 1524 1525 0.202471618520659 0.202471618520659 -104.9745686 39.6984311 -104.9745895 39.6966103
-1507 1525 1526 0.207090708341307 0.207090708341307 -104.9745895 39.6966103 -104.974598 39.6947479
-1508 1526 1527 0.19569314849173 0.19569314849173 -104.974598 39.6947479 -104.974606 39.692988
-1509 1527 1528 0.200397251106195 0.200397251106195 -104.974606 39.692988 -104.9746158 39.6911858
-1511 1529 1530 2.00893755060013 2.00893755060013 -104.9745995 39.6893814 -104.9746235 39.6713146
-1516 1535 1536 0.100586492660266 0.100586492660266 -104.95706 39.7213954 -104.9582358 39.7214152
-1518 1009 1537 0.0517503943444181 0.0517503943444181 -104.9875916 39.776556 -104.9869861 39.7765493
-1519 1537 1540 0.0418405299236717 0.0418405299236717 -104.9869861 39.7765493 -104.9864968 39.7765361
-1520 1540 1541 0.0515572086033239 0.0515572086033239 -104.9864968 39.7765361 -104.9858935 39.7765349
-1521 1541 1542 0.0506297333875711 0.0506297333875711 -104.9858935 39.7765349 -104.9853013 39.7765217
-1522 1542 1547 0.050402272284143 0.050402272284143 -104.9853013 39.7765217 -104.9847116 39.7765295
-1523 1547 972 0.0996461444866795 0.0996461444866795 -104.9847116 39.7765295 -104.9835456 39.7765347
-1524 972 1548 0.0962022319753865 0.0962022319753865 -104.9835456 39.7765347 -104.9824199 39.7765295
-1525 1548 1549 0.0953657467513535 0.0953657467513535 -104.9824199 39.7765295 -104.9813041 39.7765427
-1526 1549 1550 0.0963437695650725 0.0963437695650725 -104.9813041 39.7765427 -104.9801772 39.7765679
-1528 1551 1552 0.142721374587541 0.142721374587541 -104.945934 39.777795 -104.944264 39.777781
-1529 1552 1553 0.0277011537567162 0.0277011537567162 -104.944264 39.777781 -104.943941 39.77776
-1530 1554 1555 0.0435488620803952 0.0435488620803952 -104.9639791 39.7776803 -104.9634695 39.7776803
-1531 1555 1053 0.0900813280777187 0.0900813280777187 -104.9634695 39.7776803 -104.9624154 39.7776762
-1532 1053 1556 0.091689363858679 0.091689363858679 -104.9624154 39.7776762 -104.9613425 39.77767
-1537 1560 1561 0.060529314582724 0.060529314582724 -104.9571611 39.7776691 -104.9564528 39.7776703
-1538 1561 1562 0.0982757577888809 0.0982757577888809 -104.9564528 39.7776703 -104.9553028 39.7776723
-16447 9904 9905 0.234187757526107 0.234187757526107 -104.9731712 39.6980224 -104.9731684 39.7001285
-1539 1562 1563 0.0964555264462913 0.0964555264462913 -104.9553028 39.7776723 -104.9541741 39.7776743
-1540 1563 1564 0.0948745488688521 0.0948745488688521 -104.9541741 39.7776743 -104.9530639 39.7776762
-1541 1564 1565 0.0967033454927318 0.0967033454927318 -104.9530639 39.7776762 -104.9519323 39.7776782
-1542 1565 1566 0.0968058200777679 0.0968058200777679 -104.9519323 39.7776782 -104.9507995 39.7776799
-1543 1566 1567 0.0857541821683109 0.0857541821683109 -104.9507995 39.7776799 -104.9497965 39.7776561
-1544 1567 1568 0.099340207555012 0.099340207555012 -104.9497965 39.7776561 -104.9486346 39.7776838
-1545 1568 1571 0.0938405349536985 0.0938405349536985 -104.9486346 39.7776838 -104.9475365 39.7776858
-1546 1571 1572 0.0960880186310076 0.0960880186310076 -104.9475365 39.7776858 -104.9464121 39.7776877
-1548 1573 1574 0.0687509395523497 0.0687509395523497 -105.0353206 39.6868062 -105.0360845 39.6869978
-1551 1576 1577 0.102936179368501 0.102936179368501 -105.0378698 39.6874469 -105.0390628 39.6875658
-1555 1580 1581 0.0874483930882581 0.0874483930882581 -105.0421871 39.6881867 -105.0432085 39.6882131
-1558 1583 1584 0.322225767594647 0.322225767594647 -105.0452106 39.6881689 -105.0489763 39.6881801
-1559 1585 158 0.325178498041831 0.325178498041831 -105.0145707 39.6959461 -105.0136315 39.6931124
-1560 158 1586 0.248813969770461 0.248813969770461 -105.0136315 39.6931124 -105.0136484 39.6908748
-1562 1587 1588 0.682458212363131 0.682458212363131 -105.0138115 39.6884179 -105.0128935 39.6823212
-1563 1589 1590 0.093984831401002 0.093984831401002 -105.0133261 39.7073704 -105.0133347 39.7065252
-1564 1590 1591 0.0969174980637894 0.0969174980637894 -105.0133347 39.7065252 -105.0133347 39.7056536
-1565 1591 1592 0.0961947351154639 0.0961947351154639 -105.0133347 39.7056536 -105.0133176 39.7047886
-1566 1592 1593 0.0903125194205546 0.0903125194205546 -105.0133176 39.7047886 -105.0133176 39.7039764
-1567 1593 768 0.157881413911052 0.157881413911052 -105.0133176 39.7039764 -105.0133004 39.7025566
-1568 768 1596 0.172691061788589 0.172691061788589 -105.0133004 39.7025566 -105.0135751 39.701018
-1569 1596 1597 0.125221889854682 0.125221889854682 -105.0135751 39.701018 -105.0140815 39.6999614
-11466 780 781 0.0395520182900152 0.0395520182900152 -104.9318858 39.7800449 -104.9314271 39.7799974
-14682 727 782 0.194557772372847 0.194557772372847 -104.9700021 39.7200889 -104.9699677 39.7183394
-1575 1603 1604 0.122808892568626 0.122808892568626 -105.0031242 39.7501833 -105.002095 39.7509538
-1576 1604 1605 0.14134447308364 0.14134447308364 -105.002095 39.7509538 -105.0009256 39.7518524
-1577 1605 1606 0.00315234288642188 0.00315234288642188 -105.0009256 39.7518524 -105.000898 39.7518712
-1578 1606 1607 0.00237760055681402 0.00237760055681402 -105.000898 39.7518712 -105.00088 39.7518875
-1579 1607 1034 0.102833271602923 0.102833271602923 -105.00088 39.7518875 -105.0000465 39.7525543
-1580 1034 1608 0.043468513404088 0.043468513404088 -105.0000465 39.7525543 -104.9996914 39.7528341
-1581 1608 1033 0.049915824892393 0.049915824892393 -104.9996914 39.7528341 -104.9992823 39.7531544
-1582 1033 1609 0.0942592902205972 0.0942592902205972 -104.9992823 39.7531544 -104.9985176 39.7537651
-1583 1609 1610 0.146590259158182 0.146590259158182 -104.9985176 39.7537651 -104.9973103 39.7547013
-1585 1611 1612 0.124755429872932 0.124755429872932 -104.9928744 39.7570652 -104.9918236 39.7578438
-1587 1613 1614 0.146275547777326 0.146275547777326 -104.9779666 39.7696675 -104.9767564 39.7705977
-1588 1614 1615 0.26514479082652 0.26514479082652 -104.9767564 39.7705977 -104.9745571 39.7722795
-1589 1615 1616 0.120777633356172 0.120777633356172 -104.9745571 39.7722795 -104.973572 39.7730583
-1590 1616 1617 0.146979440780155 0.146979440780155 -104.973572 39.7730583 -104.9723691 39.774003
-1591 1617 1618 0.586436662116935 0.586436662116935 -104.9723691 39.774003 -104.9670562 39.7773409
-10219 5410 5429 0.0496147818599398 0.0496147818599398 -104.9704709 39.6893522 -104.9698913 39.6893394
-1592 1618 1619 0.120318550023187 0.120318550023187 -104.9670562 39.7773409 -104.9660606 39.778106
-1593 1620 1621 0.123170513487948 0.123170513487948 -104.9874196 39.7290833 -104.9888599 39.7290834
-1594 1621 1622 0.0891128334653611 0.0891128334653611 -104.9888599 39.7290834 -104.9899006 39.7290427
-1595 1622 1623 0.0126945079405001 0.0126945079405001 -104.9899006 39.7290427 -104.990046 39.7290197
-1597 1624 1625 0.0361628363016983 0.0361628363016983 -104.9994552 39.7668568 -104.9994016 39.7671794
-1598 1625 1626 0.0965078268867085 0.0965078268867085 -104.9994016 39.7671794 -104.9994084 39.7680473
-1599 1626 1627 0.122881556236448 0.122881556236448 -104.9994084 39.7680473 -104.9994072 39.7691524
-1601 1628 1629 0.0514694071076013 0.0514694071076013 -104.9994043 39.7833868 -104.9993614 39.7838485
-1604 1635 1337 0.196038913624896 0.196038913624896 -105.015737 39.714787 -105.015726 39.713024
-1605 1337 1636 0.207228602655476 0.207228602655476 -105.015726 39.713024 -105.0156951 39.7111605
-1606 1636 1637 0.20264296962565 0.20264296962565 -105.0156951 39.7111605 -105.0156865 39.7093381
-1607 1637 1638 0.203387402917304 0.203387402917304 -105.0156865 39.7093381 -105.0157122 39.7075091
-1608 1638 1639 0.0190931929940632 0.0190931929940632 -105.0157122 39.7075091 -105.0156968 39.7073378
-1609 1639 1640 0.0954982678568342 0.0954982678568342 -105.0156968 39.7073378 -105.0156865 39.706479
-1612 1642 1643 0.0969376424953903 0.0969376424953903 -105.0156924 39.7056338 -105.0156693 39.7047622
-1613 1643 1644 0.0932591849763066 0.0932591849763066 -105.0156693 39.7047622 -105.0156693 39.7039235
-1614 1644 769 0.109404688325734 0.109404688325734 -105.0156693 39.7039235 -105.0156693 39.7029396
-1616 1645 1646 0.0870106428010285 0.0870106428010285 -105.015583 39.6967681 -105.0155663 39.6959857
-1617 1646 1647 0.21369947718983 0.21369947718983 -105.0155663 39.6959857 -105.0155835 39.6940639
-1618 1647 160 0.103968034130831 0.103968034130831 -105.0155835 39.6940639 -105.0155788 39.6931289
-1619 160 1648 0.148969074067601 0.148969074067601 -105.0155788 39.6931289 -105.0157083 39.6917929
-1620 1648 1649 0.102090714125769 0.102090714125769 -105.0157083 39.6917929 -105.0156997 39.6908748
-1621 1649 1650 0.152016365267068 0.152016365267068 -105.0156997 39.6908748 -105.0156911 39.6895077
-1624 1652 1653 3.12548314855053 3.12548314855053 -105.0156826 39.688616 -105.0158 39.660508
-1625 1654 1655 0.099787477314555 0.099787477314555 -105.015638 39.699987 -105.0156436 39.6990896
-1626 1655 1656 0.0573939833292015 0.0573939833292015 -105.0156436 39.6990896 -105.0156865 39.6985745
-1627 1656 1657 0.0412244638452508 0.0412244638452508 -105.0156865 39.6985745 -105.0156522 39.6982047
-1628 1657 1658 0.159748945001355 0.159748945001355 -105.0156522 39.6982047 -105.0156688 39.6967681
-1630 1659 1660 0.0562485254553907 0.0562485254553907 -105.0252948 39.7674204 -105.0259529 39.7674233
-1631 1660 1661 0.140693983223782 0.140693983223782 -105.0259529 39.7674233 -105.027599 39.7674306
-1632 1661 1662 0.199243791884909 0.199243791884909 -105.027599 39.7674306 -105.02993 39.7674094
-1633 1662 1663 0.200873345889282 0.200873345889282 -105.02993 39.7674094 -105.0322802 39.7674005
-1634 1663 1664 0.200754056548572 0.200754056548572 -105.0322802 39.7674005 -105.034629 39.767391
-1636 1665 1626 0.102716653811918 0.102716653811918 -104.9982066 39.7680487 -104.9994084 39.7680473
-1637 1626 1666 0.1010071593638 0.1010071593638 -104.9994084 39.7680473 -105.0005902 39.7680472
-1638 1666 1667 0.101237955319616 0.101237955319616 -105.0005902 39.7680472 -105.0017747 39.7680465
-1639 1667 1668 0.101237948338119 0.101237948338119 -105.0017747 39.7680465 -105.0029592 39.7680459
-1640 1668 711 0.101306598900241 0.101306598900241 -105.0029592 39.7680459 -105.0041445 39.7680437
-1641 711 1669 0.10042603616611 0.10042603616611 -105.0041445 39.7680437 -105.0053195 39.7680447
-1642 1669 1670 0.0958961450641524 0.0958961450641524 -105.0053195 39.7680447 -105.0064415 39.7680441
-1644 1671 1672 0.137716093557474 0.137716093557474 -105.0080403 39.7680432 -105.0096516 39.7680424
-2762 2714 2715 0.0991860693431078 0.0991860693431078 -105.0228875 39.7720427 -105.0228852 39.7729347
-1651 1678 1679 0.133306617824866 0.133306617824866 -105.0174158 39.7680606 -105.0189755 39.7680565
-1652 1679 1250 0.131938339831678 0.131938339831678 -105.0189755 39.7680565 -105.0205192 39.7680565
-1653 1250 1680 0.132959450261057 0.132959450261057 -105.0205192 39.7680565 -105.0220748 39.7680472
-1654 1680 1681 0.132733669106231 0.132733669106231 -105.0220748 39.7680472 -105.0236278 39.7680441
-1655 1681 1682 0.132964768190064 0.132964768190064 -105.0236278 39.7680441 -105.0251835 39.7680482
-1657 1683 1684 0.0490945965896849 0.0490945965896849 -105.0346312 39.7676742 -105.0352055 39.7676655
-1658 1684 1685 0.0490108159838641 0.0490108159838641 -105.0352055 39.7676655 -105.0357789 39.7676609
-1659 1685 1686 0.0499458328019049 0.0499458328019049 -105.0357789 39.7676609 -105.0363632 39.7676539
-1660 1686 1687 0.0506073899683783 0.0506073899683783 -105.0363632 39.7676539 -105.0369553 39.7676511
-1661 1687 1688 0.0999922931051382 0.0999922931051382 -105.0369553 39.7676511 -105.038125 39.7676337
-1663 1689 1690 0.0532341368396536 0.0532341368396536 -105.0387013 39.7676285 -105.0393241 39.7676228
-1664 1690 1691 0.0494816378016481 0.0494816378016481 -105.0393241 39.7676228 -105.039903 39.7676176
-1665 1691 1129 0.0483962553320354 0.0483962553320354 -105.039903 39.7676176 -105.0404692 39.7676124
-2786 2740 2741 0.204165004811902 0.204165004811902 -104.9558357 39.6929607 -104.9558357 39.6911246
-1669 1694 1695 0.0515058444916569 0.0515058444916569 -105.0428441 39.7675702 -105.0434467 39.7675662
-1670 1695 1696 0.049583388064832 0.049583388064832 -105.0434467 39.7675662 -105.0440268 39.7675617
-1672 1697 1698 0.164817053327799 0.164817053327799 -104.9384472 39.7162245 -104.9384005 39.7147427
-1674 1699 1700 0.200184975462711 0.200184975462711 -104.9383805 39.6911269 -104.9383741 39.6893266
-1676 1701 1702 0.0562043024646792 0.0562043024646792 -104.9875011 39.6911908 -104.9881579 39.6911836
-1677 1702 1703 0.0473559609478773 0.0473559609478773 -104.9881579 39.6911836 -104.9887113 39.6911776
-1679 1704 1705 0.398746605392666 0.398746605392666 -105.0250424 39.6912967 -105.0297026 39.69129
-1681 1706 1365 0.144540603588288 0.144540603588288 -105.0320475 39.6912817 -105.0337367 39.6912702
-1682 1365 1707 0.0528990154558718 0.0528990154558718 -105.0337367 39.6912702 -105.0343547 39.691257
-1683 1707 1708 0.10134484884037 0.10134484884037 -105.0343547 39.691257 -105.0355391 39.6912636
-1684 1708 1709 0.0991459088544214 0.0991459088544214 -105.0355391 39.6912636 -105.0366978 39.691257
-1685 1709 1710 0.100657696530189 0.100657696530189 -105.0366978 39.691257 -105.0378737 39.6912834
-1686 1710 1711 0.102825031241611 0.102825031241611 -105.0378737 39.6912834 -105.0390754 39.69129
-1687 1711 1712 0.0822822408497534 0.0822822408497534 -105.0390754 39.69129 -105.0400367 39.6913098
-1688 1712 1713 0.0873989484445677 0.0873989484445677 -105.0400367 39.6913098 -105.041058 39.6912966
-1689 1713 1714 0.083724486939572 0.083724486939572 -105.041058 39.6912966 -105.0420365 39.6912966
-1691 1715 1716 0.0772899080720762 0.0772899080720762 -105.0433411 39.691224 -105.0442424 39.6912702
-1693 1717 1718 0.0829924152482612 0.0829924152482612 -105.0087646 39.690855 -105.0097345 39.6908484
-12973 1824 2797 0.01303984476973 0.01303984476973 -105.0068707 39.7455494 -105.0069887 39.7454751
-1695 1719 1720 0.0851881782403355 0.0851881782403355 -105.0107559 39.690855 -105.0117515 39.690855
-1696 1720 1721 0.0815306594337643 0.0815306594337643 -105.0117515 39.690855 -105.0127042 39.6908682
-1697 1721 1586 0.0807934684584117 0.0807934684584117 -105.0127042 39.6908682 -105.0136484 39.6908748
-1698 1586 1722 0.0815207303880199 0.0815207303880199 -105.0136484 39.6908748 -105.0146011 39.6908814
-1699 1722 1649 0.0940041718050458 0.0940041718050458 -105.0146011 39.6908814 -105.0156997 39.6908748
-1702 1723 1724 0.079056501466603 0.079056501466603 -105.0164379 39.6918193 -105.0171932 39.6914098
-1703 1724 1725 0.0798640413181071 0.0798640413181071 -105.0171932 39.6914098 -105.0179828 39.6910268
-1707 204 1728 0.0808035328564148 0.0808035328564148 -105.0203689 39.690822 -105.0213131 39.6908088
-1708 1728 1729 0.0793099389847985 0.0793099389847985 -105.0213131 39.6908088 -105.02224 39.6908088
-1709 1729 1471 0.0807902086419881 0.0807902086419881 -105.02224 39.6908088 -105.0231842 39.6908088
-1710 1471 1730 0.159227595521595 0.159227595521595 -105.0231842 39.6908088 -105.0250451 39.6908065
-1712 1731 1732 0.00918106235729301 0.00918106235729301 -105.0015625 39.6912528 -105.0016698 39.6912526
-1713 1732 1733 0.0904244628649386 0.0904244628649386 -105.0016698 39.6912526 -105.0027266 39.6912507
-1714 1733 1734 0.1024374483727 0.1024374483727 -105.0027266 39.6912507 -105.0039238 39.6912513
-1715 1734 1735 0.102816532682191 0.102816532682191 -105.0039238 39.6912513 -105.0051254 39.6912447
-1716 1735 1736 0.0492571813589573 0.0492571813589573 -105.0051254 39.6912447 -105.0057005 39.6912645
-1718 1737 1738 0.0480836518232765 0.0480836518232765 -105.0061947 39.6912734 -105.0067562 39.6912909
-1720 1456 1739 0.0851993535054976 0.0851993535054976 -105.0077346 39.6912909 -105.0087303 39.6912975
-1722 1740 1741 0.0851913863702705 0.0851913863702705 -104.9900263 39.6908136 -104.9910219 39.6908202
-1724 1742 1743 1.05721580006997 1.05721580006997 -104.9851236 39.7677094 -104.9787558 39.7758607
-1727 1746 1747 0.203318990561603 0.203318990561603 -104.9722045 39.6929651 -104.9722389 39.6911368
-1728 1747 1748 0.105159616756228 0.105159616756228 -104.9722389 39.6911368 -104.9722475 39.6901911
-1730 1749 1750 0.0560818664301058 0.0560818664301058 -104.9721944 39.7142027 -104.9722042 39.714707
-1732 1751 1752 0.478248386364013 0.478248386364013 -104.9472549 39.7837973 -104.944277 39.787439
-1733 1752 1753 0.443656760721259 0.443656760721259 -104.944277 39.787439 -104.9414956 39.7908082
-1735 1754 1755 0.1348267792147 0.1348267792147 -105.0124896 39.7620198 -105.0124792 39.7608073
-1736 1755 1756 0.129877519863856 0.129877519863856 -105.0124792 39.7608073 -105.0124873 39.7596393
-1738 1757 1758 0.139572444331893 0.139572444331893 -105.0085894 39.7075535 -105.0078426 39.7064375
-1740 1759 151 0.222068972422621 0.222068972422621 -105.0067133 39.6949432 -105.0077346 39.6931072
-1742 1760 1761 0.217075886587119 0.217075886587119 -105.0074982 39.7009717 -105.0081893 39.6990933
-1744 95 1762 0.0857577538793466 0.0857577538793466 -104.9551461 39.7002095 -104.9546893 39.699523
-1746 1763 1764 0.202675621070888 0.202675621070888 -104.9768983 39.7165189 -104.9769042 39.7146962
-1747 1764 1765 0.199646627713467 0.199646627713467 -104.9769042 39.7146962 -104.9769241 39.7129008
-1749 1768 1769 0.203715891739879 0.203715891739879 -104.976901 39.7110879 -104.9769412 39.7092561
-18799 8969 430 0.0787540687567586 0.0787540687567586 -104.9948199 39.7664979 -104.9943797 39.7671201
-1751 1772 1773 0.1980611092504 0.1980611092504 -104.9769267 39.7074561 -104.9769014 39.705675
-1752 1773 1774 0.203412766578772 0.203412766578772 -104.9769014 39.705675 -104.9769161 39.7038457
-1753 1774 1775 0.202109933054243 0.202109933054243 -104.9769161 39.7038457 -104.9769267 39.7020281
-1754 1775 43 0.202669215310678 0.202669215310678 -104.9769267 39.7020281 -104.9769439 39.7002055
-1755 43 1776 0.197841814631247 0.197841814631247 -104.9769439 39.7002055 -104.9769155 39.6984264
-1756 1776 1777 0.202676328377112 0.202676328377112 -104.9769155 39.6984264 -104.9769241 39.6966037
-1757 1777 1778 0.204936151058667 0.204936151058667 -104.9769241 39.6966037 -104.9769531 39.6947608
-1758 1778 1779 0.1977714314521 0.1977714314521 -104.9769531 39.6947608 -104.9769504 39.6929822
-1759 1779 1780 0.0315877327413917 0.0315877327413917 -104.9769504 39.6929822 -104.9769419 39.6926982
-1760 1780 1781 0.0188253963586558 0.0188253963586558 -104.9769419 39.6926982 -104.9769412 39.6925289
-1763 1782 570 0.0446437216270623 0.0446437216270623 -104.986165 39.6947828 -104.9856433 39.69479
-1764 570 1783 0.0483070548371257 0.0483070548371257 -104.9856433 39.69479 -104.9850787 39.69479
-1765 1783 1784 0.0445253123220399 0.0445253123220399 -104.9850787 39.69479 -104.9845583 39.69479
-1766 1784 1785 0.0510546887722961 0.0510546887722961 -104.9845583 39.69479 -104.9839616 39.6947869
-1768 1786 1787 0.0533839966500878 0.0533839966500878 -104.9833861 39.6948011 -104.9827622 39.6947958
-1769 1787 1788 0.0521924619717138 0.0521924619717138 -104.9827622 39.6947958 -104.9821522 39.6947929
-1770 1788 1789 0.0490694542852552 0.0490694542852552 -104.9821522 39.6947929 -104.9815787 39.6947902
-1771 1789 1790 0.0491381693257593 0.0491381693257593 -104.9815787 39.6947902 -104.9810045 39.694799
-1774 1792 1793 0.188232081449375 0.188232081449375 -104.931734 39.694587 -104.929534 39.694587
-1775 1793 1794 0.0938047512624172 0.0938047512624172 -104.929534 39.694587 -104.9284394 39.6945392
-1777 1795 1796 0.0479551643273822 0.0479551643273822 -104.9792579 39.6947744 -104.9786977 39.6947606
-1779 1797 1798 0.0506257576844139 0.0506257576844139 -104.9781014 39.6947603 -104.9775097 39.6947606
-1780 1798 1778 0.0476226019606038 0.0476226019606038 -104.9775097 39.6947606 -104.9769531 39.6947608
-1781 1778 1799 0.0506000833049729 0.0506000833049729 -104.9769531 39.6947608 -104.9763617 39.694761
-1782 1799 1800 0.0489339836382716 0.0489339836382716 -104.9763617 39.694761 -104.97579 39.6947486
-1783 1800 1801 0.0520587364066008 0.0520587364066008 -104.97579 39.6947486 -104.9751816 39.6947545
-1784 1801 1526 0.0499381116869285 0.0499381116869285 -104.9751816 39.6947545 -104.974598 39.6947479
-1785 1526 1802 0.0482912843745838 0.0482912843745838 -104.974598 39.6947479 -104.9740336 39.6947447
-1786 1802 1803 0.052312654556816 0.052312654556816 -104.9740336 39.6947447 -104.9734222 39.6947413
-1788 466 1804 0.00820558552351573 0.00820558552351573 -104.9373661 39.6947234 -104.9373232 39.6947894
-1789 1804 1805 0.0939988504660162 0.0939988504660162 -104.9373232 39.6947894 -104.9362246 39.6947828
-1790 1805 1806 0.0853375028247139 0.0853375028247139 -104.9362246 39.6947828 -104.935235 39.694687
-1792 1807 1808 0.0203438851658787 0.0203438851658787 -105.0073479 39.7524784 -105.0075333 39.7523637
-1793 1808 1809 0.0251680266073563 0.0251680266073563 -105.0075333 39.7523637 -105.0077397 39.7522023
-1794 1809 1810 0.203784780502352 0.203784780502352 -105.0077397 39.7522023 -105.0094107 39.7508953
-1795 1810 1811 0.245267310527272 0.245267310527272 -105.0094107 39.7508953 -105.0082177 39.7529013
-1797 1812 1513 0.252426666173968 0.252426666173968 -104.9317181 39.6953648 -104.92892 39.6960846
-1799 1479 1813 0.176119796231885 0.176119796231885 -104.9226286 39.6944534 -104.923341 39.6929674
-1800 1813 1814 0.410709550491308 0.410709550491308 -104.923341 39.6929674 -104.9243796 39.6893613
-1802 1815 1816 0.0577133885110317 0.0577133885110317 -105.0264272 39.7291051 -105.0268596 39.7287066
-1805 1818 1819 0.0740878722178254 0.0740878722178254 -105.028093 39.7274609 -105.0286551 39.7269539
-1806 1819 1820 0.135457901381645 0.135457901381645 -105.0286551 39.7269539 -105.0299828 39.7262896
-1808 1821 1822 0.206145194610924 0.206145194610924 -104.9293577 39.7647208 -104.9269459 39.7647142
-1812 1828 1829 0.106425576539939 0.106425576539939 -105.0251054 39.7213616 -105.0263496 39.7213466
-1813 1829 1830 0.105266693821804 0.105266693821804 -105.0263496 39.7213466 -105.0275804 39.7213446
-1814 1830 1831 0.0587144262982408 0.0587144262982408 -105.0275804 39.7213446 -105.0282669 39.7213461
-1815 1831 1832 0.0458724352500271 0.0458724352500271 -105.0282669 39.7213461 -105.0288032 39.7213404
-1817 1833 1834 0.199229532947629 0.199229532947629 -105.0227761 39.7211827 -105.0251054 39.7211636
-1820 1836 1837 0.0309799563804686 0.0309799563804686 -105.0117245 39.7209266 -105.0120749 39.720856
-1822 1838 1839 0.146418601014837 0.146418601014837 -104.9874805 39.7209443 -104.9891924 39.7209342
-1823 1839 1840 0.141683677614281 0.141683677614281 -104.9891924 39.7209342 -104.9908489 39.7209474
-1824 1840 1841 0.111588649653809 0.111588649653809 -104.9908489 39.7209474 -104.9921535 39.7209342
-1827 1844 1845 0.101354924922083 0.101354924922083 -105.030046 39.7213676 -105.031231 39.721358
-1828 1845 1397 0.106656735273228 0.106656735273228 -105.031231 39.721358 -105.0324777 39.7213351
-1829 1397 1846 0.052351737797171 0.052351737797171 -105.0324777 39.7213351 -105.0330898 39.7213326
-1831 1847 1848 0.0531037804059208 0.0531037804059208 -105.0337 39.7213301 -105.0343209 39.721329
-1832 1848 1849 0.0506063775898189 0.0506063775898189 -105.0343209 39.721329 -105.0349126 39.721328
-1833 1849 1850 0.0517100300362486 0.0517100300362486 -105.0349126 39.721328 -105.0355172 39.72133
-1834 1850 1851 0.0523258164287328 0.0523258164287328 -105.0355172 39.72133 -105.036129 39.721332
-1835 1851 1852 0.0499829479152778 0.0499829479152778 -105.036129 39.721332 -105.0367134 39.7213291
-1836 1852 1853 0.051505297770613 0.051505297770613 -105.0367134 39.7213291 -105.0373156 39.7213262
-1837 1853 1854 0.051498980863322 0.051498980863322 -105.0373156 39.7213262 -105.0379177 39.7213314
-1840 1856 1857 0.051410475877809 0.051410475877809 -105.0391086 39.721333 -105.0397097 39.7213315
-1841 1857 1858 0.0513674435994921 0.0513674435994921 -105.0397097 39.7213315 -105.0403103 39.7213316
-1842 1858 1109 0.0515213919005775 0.0515213919005775 -105.0403103 39.7213316 -105.0409127 39.7213317
-1843 1109 1859 0.0506198107739765 0.0506198107739765 -105.0409127 39.7213317 -105.0415045 39.7213253
-1844 1859 1860 0.0511967416282439 0.0511967416282439 -105.0415045 39.7213253 -105.0421031 39.721327
-1845 1860 1861 0.0519748871795966 0.0519748871795966 -105.0421031 39.721327 -105.0427108 39.7213283
-1847 1862 1863 0.0554265580601903 0.0554265580601903 -105.0432898 39.7213253 -105.0439342 39.7212724
-1848 1863 1864 0.397067534239407 0.397067534239407 -105.0439342 39.7212724 -105.0485768 39.7212752
-1849 1865 1481 0.206774260684103 0.206774260684103 -104.9901799 39.6966614 -104.9901596 39.6948019
-1850 1481 136 0.199116779757445 0.199116779757445 -104.9901596 39.6948019 -104.9901944 39.6930114
-1852 1866 1867 0.100566373592942 0.100566373592942 -104.9899563 39.7165768 -104.9899631 39.7156724
-1853 1867 1868 0.101320817159016 0.101320817159016 -104.9899631 39.7156724 -104.9899631 39.7147612
-1855 1869 1295 0.0991404141660552 0.0991404141660552 -104.9899974 39.7138897 -104.9899734 39.7129983
-1856 1295 1368 0.0970426412791379 0.0970426412791379 -104.9899734 39.7129983 -104.9900335 39.7121268
-1857 1368 1870 0.108154398880898 0.108154398880898 -104.9900335 39.7121268 -104.9899993 39.7111545
-1859 1871 1872 0.100234830388367 0.100234830388367 -104.9899914 39.7102518 -104.9900015 39.7093504
-1860 1872 1873 0.0980754533399867 0.0980754533399867 -104.9900015 39.7093504 -104.9900079 39.7084684
-1861 1873 1874 0.101854943741879 0.101854943741879 -104.9900079 39.7084684 -104.98999 39.7075525
-1862 1874 1875 0.0125795021137856 0.0125795021137856 -104.98999 39.7075525 -104.9899702 39.7074404
-1863 1875 1876 0.0797821176517698 0.0797821176517698 -104.9899702 39.7074404 -104.9899856 39.706723
-1864 1876 1877 0.103719210283603 0.103719210283603 -104.9899856 39.706723 -104.9899153 39.7057918
-1866 1740 1878 0.161887620550325 0.161887620550325 -104.9900263 39.6908136 -104.9904039 39.689387
-1868 1879 1880 0.0487542093720633 0.0487542093720633 -105.0393141 39.7594338 -105.0398844 39.7594402
-1869 1880 1122 0.0510369170722426 0.0510369170722426 -105.0398844 39.7594402 -105.0404814 39.759447
-1871 1882 1883 0.588595740779303 0.588595740779303 -105.044015 39.7594009 -105.0509008 39.7594001
-1872 1884 1885 0.152111272923972 0.152111272923972 -105.0281527 39.7594148 -105.0299322 39.7594122
-1873 1885 1886 0.199118819593963 0.199118819593963 -105.0299322 39.7594122 -105.0322615 39.7593933
-1874 1886 1887 0.200266209543398 0.200266209543398 -105.0322615 39.7593933 -105.0346033 39.7594473
-1876 1891 1892 0.0559298383062073 0.0559298383062073 -105.0046254 39.7620612 -105.0052777 39.7620216
-2989 776 2928 0.18503947742992 0.18503947742992 -105.0215401 39.7020679 -105.0215401 39.7004038
-1878 1893 1894 0.32823055853467 0.32823055853467 -104.9497942 39.7070048 -104.9460234 39.7064591
-1880 1895 1896 0.106010053095039 0.106010053095039 -104.9875851 39.7075228 -104.9863459 39.7075146
-1881 1896 1897 0.0966039225045284 0.0966039225045284 -104.9863459 39.7075146 -104.985217 39.7074918
-1882 1897 1898 0.101329648076306 0.101329648076306 -104.985217 39.7074918 -104.9840325 39.7074985
-1883 1898 1899 0.105723867542497 0.105723867542497 -104.9840325 39.7074985 -104.9827966 39.7074985
-1884 1899 1900 0.100059117952088 0.100059117952088 -104.9827966 39.7074985 -104.981627 39.707488
-1885 1900 1901 0.0102909725043749 0.0102909725043749 -104.981627 39.707488 -104.9815067 39.7074878
-1886 1901 1902 0.0917204387150709 0.0917204387150709 -104.9815067 39.7074878 -104.9804345 39.7074865
-1887 1902 1903 0.0488400104067164 0.0488400104067164 -104.9804345 39.7074865 -104.9798636 39.7074913
-1888 1903 1904 0.0516943831129701 0.0516943831129701 -104.9798636 39.7074913 -104.9792593 39.7074903
-1889 1904 1905 0.0485157141379251 0.0485157141379251 -104.9792593 39.7074903 -104.9786923 39.7074805
-1890 1905 1906 0.00454251169325352 0.00454251169325352 -104.9786923 39.7074805 -104.9786392 39.7074808
-1891 1906 1907 0.0474170350841876 0.0474170350841876 -104.9786392 39.7074808 -104.9780854 39.7074627
-1892 1907 1908 0.0520037008543052 0.0520037008543052 -104.9780854 39.7074627 -104.9774775 39.7074592
-1893 1908 1772 0.0471189408868131 0.0471189408868131 -104.9774775 39.7074592 -104.9769267 39.7074561
-1894 1772 1909 0.0492432884260358 0.0492432884260358 -104.9769267 39.7074561 -104.9763514 39.7074715
-1896 1910 1911 0.0495320112775386 0.0495320112775386 -104.9757282 39.7074937 -104.9751493 39.7074845
-1897 1911 1520 0.0493945814205325 0.0493945814205325 -104.9751493 39.7074845 -104.9745719 39.7074811
-1898 1520 1912 0.0533971088216985 0.0533971088216985 -104.9745719 39.7074811 -104.9739477 39.707479
-1899 1912 1913 0.0492909868241652 0.0492909868241652 -104.9739477 39.707479 -104.9733715 39.707477
-1902 1914 1915 0.0940987095228026 0.0940987095228026 -104.972136 39.707488 -104.971036 39.70749
-1903 1915 1916 0.102901306177953 0.102901306177953 -104.971036 39.70749 -104.9698332 39.7075022
-1904 1916 1917 0.099610911557729 0.099610911557729 -104.9698332 39.7075022 -104.9686689 39.7074883
-1905 1917 1918 0.102910577647033 0.102910577647033 -104.9686689 39.7074883 -104.9674661 39.7074709
-1906 1918 1919 0.0967734482498666 0.0967734482498666 -104.9674661 39.7074709 -104.966335 39.707486
-1908 1920 1921 0.0462806189179572 0.0462806189179572 -104.9651495 39.7074752 -104.9646085 39.7074783
-1910 1922 1923 0.0456516788886206 0.0456516788886206 -104.9639994 39.7074818 -104.9634658 39.7074881
-1911 1923 1924 0.0505452419126903 0.0505452419126903 -104.9634658 39.7074881 -104.962875 39.707495
-1912 1924 1925 0.0504057374799388 0.0504057374799388 -104.962875 39.707495 -104.9622858 39.7074899
-1913 1925 1926 0.0476340401482501 0.0476340401482501 -104.9622858 39.7074899 -104.961729 39.707485
-1914 1926 1927 0.051053036843087 0.051053036843087 -104.961729 39.707485 -104.9611322 39.7074867
-1915 1927 1928 0.049153971321488 0.049153971321488 -104.9611322 39.7074867 -104.9605576 39.7074884
-1918 1930 1931 0.0561439680866497 0.0561439680866497 -105.0298394 39.7384827 -105.030496 39.7384857
-1919 1931 1932 0.053826281457259 0.053826281457259 -105.030496 39.7384857 -105.0311255 39.7384836
-3034 2965 2966 0.00876223324596343 0.00876223324596343 -105.0235213 39.7584714 -105.0236238 39.7584722
-1920 1932 1933 0.0477206876272752 0.0477206876272752 -105.0311255 39.7384836 -105.0316836 39.7384833
-1923 1935 1936 0.066876205689997 0.066876205689997 -105.0218644 39.7389424 -105.0226443 39.738897
-1924 1937 1938 0.0446617758397252 0.0446617758397252 -105.0260468 39.738001 -105.0265344 39.738145
-1925 1938 1939 0.0840391912235338 0.0840391912235338 -105.0265344 39.738145 -105.0273088 39.7386104
-1926 1939 1940 0.227469383602409 0.227469383602409 -105.0273088 39.7386104 -105.0298414 39.7392366
-1931 1944 1945 0.0952703264542464 0.0952703264542464 -105.0148152 39.7384942 -105.0159294 39.7384943
-1932 1945 1946 0.0974265293580338 0.0974265293580338 -105.0159294 39.7384943 -105.0170684 39.7384706
-1933 1947 1948 0.151605873109213 0.151605873109213 -105.0077504 39.7384638 -105.0095234 39.7384742
-1938 1952 1953 0.109258836266427 0.109258836266427 -104.9402458 39.7146371 -104.9394047 39.7138976
-1939 1953 1954 0.122481399421688 0.122481399421688 -104.9394047 39.7138976 -104.9384863 39.7130525
-1940 1954 1955 0.119684093740802 0.119684093740802 -104.9384863 39.7130525 -104.9375707 39.7122386
-1943 1957 1958 0.204446635842756 0.204446635842756 -104.9292853 39.7085296 -104.9269593 39.708107
-1944 1958 1959 0.0997279110592744 0.0997279110592744 -104.9269593 39.708107 -104.9258263 39.7078957
-1945 1959 1960 1.05168738215655 1.05168738215655 -104.9258263 39.7078957 -104.9147112 39.7038545
-1946 1960 1961 1.71048983577162 1.71048983577162 -104.9147112 39.7038545 -104.8973332 39.6962481
-1947 1962 1963 2.33567129984142 2.33567129984142 -104.884649 39.743794 -104.9119671 39.7437801
-1948 1963 1964 1.08148581800227 1.08148581800227 -104.9119671 39.7437801 -104.9246161 39.743742
-1950 1965 1966 0.103934061554546 0.103934061554546 -104.925792 39.7437354 -104.9270076 39.7437306
-1951 1966 1967 0.0454999873171455 0.0454999873171455 -104.9270076 39.7437306 -104.9275397 39.743724
-1952 1967 1968 0.0964089929828049 0.0964089929828049 -104.9275397 39.743724 -104.9286673 39.7437222
-1953 1968 1969 0.125489170754965 0.125489170754965 -104.9286673 39.7437222 -104.930135 39.7437288
-1954 1969 1972 0.165851140560008 0.165851140560008 -104.930135 39.7437288 -104.9320748 39.7437288
-1955 1972 1973 0.145299005046435 0.145299005046435 -104.9320748 39.7437288 -104.9337742 39.7437354
-1956 1973 1974 0.145772913358701 0.145772913358701 -104.9337742 39.7437354 -104.9354791 39.743724
-1957 1974 1975 0.149974913959851 0.149974913959851 -104.9354791 39.743724 -104.9372332 39.7437288
-1958 1975 1976 0.145057930633755 0.145057930633755 -104.9372332 39.7437288 -104.9389295 39.7437042
-1959 1976 1977 0.143477867614704 0.143477867614704 -104.9389295 39.7437042 -104.9406062 39.7437573
-1961 1978 420 0.0932140793920545 0.0932140793920545 -104.9407693 39.7437639 -104.9418594 39.7437507
-1963 1963 1979 1.08603450886527 1.08603450886527 -104.9119671 39.7437801 -104.924659 39.7433856
-1964 1979 1980 0.0983329965983175 0.0983329965983175 -104.924659 39.7433856 -104.9258091 39.7433856
-1965 1980 1981 0.0917353737473226 0.0917353737473226 -104.9258091 39.7433856 -104.926882 39.743379
-1966 1981 1982 0.055771341470748 0.055771341470748 -104.926882 39.743379 -104.9275343 39.743379
-1967 1982 1983 0.0968737393586206 0.0968737393586206 -104.9275343 39.743379 -104.9286673 39.7433856
-1968 1983 1984 0.0954710209286709 0.0954710209286709 -104.9286673 39.7433856 -104.9297839 39.7433797
-1969 1984 1985 0.0293519873253464 0.0293519873253464 -104.9297839 39.7433797 -104.9301272 39.7433797
-1970 1985 1986 0.0704554284720801 0.0704554284720801 -104.9301272 39.7433797 -104.9309512 39.7433863
-1971 1986 1988 0.095403189447009 0.095403189447009 -104.9309512 39.7433863 -104.932067 39.7433797
-1972 1988 1989 0.146040552740524 0.146040552740524 -104.932067 39.7433797 -104.933775 39.7433929
-1973 1989 1990 0.147511070915923 0.147511070915923 -104.933775 39.7433929 -104.9355002 39.7433797
-1974 1990 1991 0.147511070914708 0.147511070914708 -104.9355002 39.7433797 -104.9372254 39.7433929
-1975 1991 1992 0.145306416846094 0.145306416846094 -104.9372254 39.7433929 -104.9389249 39.7433929
-1976 1992 1993 0.143786568306041 0.143786568306041 -104.9389249 39.7433929 -104.9405891 39.7435791
-1977 1993 1994 0.0151225768059817 0.0151225768059817 -104.9405891 39.7435791 -104.9407521 39.7436319
-1978 1994 420 0.0955903616259906 0.0955903616259906 -104.9407521 39.7436319 -104.9418594 39.7437507
-1980 1995 157 0.328733376766768 0.328733376766768 -105.0136437 39.6959725 -105.0126712 39.6931124
-1981 157 1721 0.24955962831592 0.24955962831592 -105.0126712 39.6931124 -105.0127042 39.6908682
-1983 1996 1997 0.475009767293493 0.475009767293493 -105.0128845 39.6882924 -105.0119747 39.6840783
-1984 1998 1999 0.203988417966153 0.203988417966153 -104.935045 39.7474085 -104.9350364 39.749243
-1985 1999 2000 0.200819821039785 0.200819821039785 -104.9350364 39.749243 -104.9350463 39.751049
-1986 2000 794 0.198875475027904 0.198875475027904 -104.9350463 39.751049 -104.9350328 39.7528375
-1987 794 2001 0.203566311480143 0.203566311480143 -104.9350328 39.7528375 -104.9350229 39.7546682
-1988 2001 2002 0.201451879254481 0.201451879254481 -104.9350229 39.7546682 -104.9350242 39.7564799
-1989 2002 2003 0.203252240244887 0.203252240244887 -104.9350242 39.7564799 -104.9349898 39.7583076
-1990 2003 2004 0.204825535738971 0.204825535738971 -104.9349898 39.7583076 -104.9350741 39.7601485
-1991 2004 2005 0.188227904196053 0.188227904196053 -104.9350741 39.7601485 -104.9350278 39.7618409
-1992 2005 2006 0.0174353644977756 0.0174353644977756 -104.9350278 39.7618409 -104.9350278 39.7619977
-1994 353 2007 0.251582112428801 0.251582112428801 -104.9345948 39.720897 -104.9345373 39.7231591
-1995 2007 2008 0.132634173204781 0.132634173204781 -104.9345373 39.7231591 -104.9345317 39.7243519
-1996 2008 2009 0.107027307843563 0.107027307843563 -104.9345317 39.7243519 -104.9345766 39.7253138
-1999 2011 646 0.139457974349072 0.139457974349072 -104.9355134 39.7401073 -104.9354861 39.7413613
-2000 646 2012 0.135033465549491 0.135033465549491 -104.9354861 39.7413613 -104.9355048 39.7425756
-2001 2012 1990 0.089412705524254 0.089412705524254 -104.9355048 39.7425756 -104.9355002 39.7433797
-2002 1990 1974 0.0383268944933106 0.0383268944933106 -104.9355002 39.7433797 -104.9354791 39.743724
-2003 1974 2013 0.133766034901227 0.133766034901227 -104.9354791 39.743724 -104.9354979 39.7449269
-2004 2013 2014 0.133581539638141 0.133581539638141 -104.9354979 39.7449269 -104.9355085 39.7461282
-2005 2014 2015 0.142379951799733 0.142379951799733 -104.9355085 39.7461282 -104.9354827 39.7474085
-2007 2016 2017 0.251899237124673 0.251899237124673 -104.9349971 39.720897 -104.9348905 39.7231609
-2008 2017 2018 0.133367826813466 0.133367826813466 -104.9348905 39.7231609 -104.9348857 39.7243603
-2009 2018 2019 0.10602884511386 0.10602884511386 -104.9348857 39.7243603 -104.9348743 39.7253138
-2010 2019 2020 0.0337181930055553 0.0337181930055553 -104.9348743 39.7253138 -104.9349199 39.725615
-2011 2020 2021 0.200388320757191 0.200388320757191 -104.9349199 39.725615 -104.9349346 39.7274171
-2014 2023 2024 0.171565352607288 0.171565352607288 -104.9350998 39.7162443 -104.935134 39.717787
-2016 2025 2026 0.0477258088803687 0.0477258088803687 -104.9916778 39.7726992 -104.9920812 39.772996
-2017 2026 2027 0.0809138557734271 0.0809138557734271 -104.9920812 39.772996 -104.9927506 39.7735106
-2018 2027 2028 0.105296432652635 0.105296432652635 -104.9927506 39.7735106 -104.9936175 39.7741835
-2021 2030 2031 0.0518714690593594 0.0518714690593594 -104.9806366 39.7642349 -104.981068 39.764563
-2023 2032 2033 0.10377665457529 0.10377665457529 -104.9767057 39.7612194 -104.9775611 39.7618817
-2024 2033 2034 0.105027724692891 0.105027724692891 -104.9775611 39.7618817 -104.9784268 39.762552
-2025 2034 2035 0.0547353150471903 0.0547353150471903 -104.9784268 39.762552 -104.978878 39.7629013
-2026 2035 2036 0.0513505470015755 0.0513505470015755 -104.978878 39.7629013 -104.9793013 39.763229
-2027 2036 2037 0.0518915831567366 0.0518915831567366 -104.9793013 39.763229 -104.979729 39.7635602
-2028 2038 2039 0.101144662033058 0.101144662033058 -104.9740667 39.759206 -104.9749143 39.7598407
-2029 2039 2040 0.00469012569566242 0.00469012569566242 -104.9749143 39.7598407 -104.9749522 39.7598712
-2030 2040 2041 0.105219334964384 0.105219334964384 -104.9749522 39.7598712 -104.9758158 39.7605455
-2032 2042 2043 0.0933903014689556 0.0933903014689556 -104.9829001 39.7659839 -104.983686 39.7665674
-2033 2043 559 0.0150758315973471 0.0150758315973471 -104.983686 39.7665674 -104.9838121 39.7666622
-2034 559 2044 0.0636386622186814 0.0636386622186814 -104.9838121 39.7666622 -104.9843229 39.7670786
-2035 2044 2045 0.0177005397698663 0.0177005397698663 -104.9843229 39.7670786 -104.984465 39.7671944
-2039 2048 1918 0.201578926546004 0.201578926546004 -104.9674823 39.7092837 -104.9674661 39.7074709
-2040 1918 2049 0.199006200917286 0.199006200917286 -104.9674661 39.7074709 -104.9675091 39.7056815
-2043 2051 70 0.203396158473628 0.203396158473628 -104.9674661 39.7020628 -104.9674891 39.7002337
-2045 1197 2052 0.0220081346494975 0.0220081346494975 -104.9528791 39.7271293 -104.9528751 39.7273272
-2046 2052 2053 0.200331631924477 0.200331631924477 -104.9528751 39.7273272 -104.9528876 39.7291288
-2047 2053 2054 0.154360922478377 0.154360922478377 -104.9528876 39.7291288 -104.9528899 39.730517
-2048 2054 948 0.176666608936966 0.176666608936966 -104.9528899 39.730517 -104.9528876 39.7321058
-2049 948 2055 0.165719712872644 0.165719712872644 -104.9528876 39.7321058 -104.9529569 39.7335952
-2050 2055 2056 0.169383792792816 0.169383792792816 -104.9529569 39.7335952 -104.9529894 39.7351183
-2052 2057 2058 0.174576187564815 0.174576187564815 -104.9534081 39.7194172 -104.9534054 39.7209872
-2053 2058 2059 0.172745648066703 0.172745648066703 -104.9534054 39.7209872 -104.9534197 39.7225407
-2054 2059 2060 0.176912657229173 0.176912657229173 -104.9534197 39.7225407 -104.9534111 39.7241317
-2055 2060 2061 0.164650081589568 0.164650081589568 -104.9534111 39.7241317 -104.9534241 39.7256124
-2057 2062 746 0.0627806188777907 0.0627806188777907 -104.9530057 39.7758303 -104.9530366 39.7763944
-2059 1564 2063 0.138541795103745 0.138541795103745 -104.9530639 39.7776762 -104.953021 39.7789217
-2060 2063 2064 0.12093608528602 0.12093608528602 -104.953021 39.7789217 -104.953025 39.7800093
-2062 2065 693 0.201596255528806 0.201596255528806 -104.9536131 39.740176 -104.9535885 39.7419889
-2063 693 2066 0.202309385780635 0.202309385780635 -104.9535885 39.7419889 -104.9535799 39.7438083
-2065 2067 2068 0.201208296937256 0.201208296937256 -104.9529898 39.7383752 -104.9529821 39.7401847
-2069 2072 2073 0.141581011374908 0.141581011374908 -104.9530584 39.7738703 -104.9530756 39.7751435
-2072 2075 2076 0.13960716604907 0.13960716604907 -104.9536922 39.7557183 -104.9536836 39.7569738
-2073 2076 2077 0.137352432815083 0.137352432815083 -104.9536836 39.7569738 -104.9536594 39.7582089
-2074 2077 2078 0.139172335676639 0.139172335676639 -104.9536594 39.7582089 -104.953654 39.7594605
-2075 2078 2079 0.137570556837278 0.137570556837278 -104.953654 39.7594605 -104.9536567 39.7606977
-2077 2080 2081 0.124260733003778 0.124260733003778 -104.9536567 39.7607265 -104.953653 39.761844
-2078 2081 2082 0.0143334567754311 0.0143334567754311 -104.953653 39.761844 -104.9536517 39.7619729
-2079 2082 1169 0.140817691182502 0.140817691182502 -104.9536517 39.7619729 -104.9536476 39.7632393
-2080 1169 889 0.136202795453782 0.136202795453782 -104.9536476 39.7632393 -104.9536454 39.7644642
-2081 889 2083 0.140272589797925 0.140272589797925 -104.9536454 39.7644642 -104.9536427 39.7657257
-2082 2083 2084 0.132655733622477 0.132655733622477 -104.9536427 39.7657257 -104.9536401 39.7669187
-2084 2085 2086 0.130758013034065 0.130758013034065 -104.9536649 39.7681113 -104.953735 39.769286
-2085 1055 2087 0.365531347335866 0.365531347335866 -104.9529111 39.7804333 -104.9530315 39.7837193
-2086 2087 2088 0.13568199350655 0.13568199350655 -104.9530315 39.7837193 -104.95304 39.7849395
-2087 2088 2089 0.14074386927803 0.14074386927803 -104.95304 39.7849395 -104.9530155 39.7862051
-2088 2089 2090 0.132744503428598 0.132744503428598 -104.9530155 39.7862051 -104.9530155 39.7873989
-2090 2091 2092 0.0599168224199403 0.0599168224199403 -105.0431866 39.707344 -105.043887 39.707348
-2091 2093 1220 0.0866154902836551 0.0866154902836551 -105.011346 39.7361182 -105.0123588 39.736105
-2093 2095 2096 0.243872573445978 0.243872573445978 -104.9269316 39.7209784 -104.9271953 39.7231622
-2094 2096 2097 0.241082179338788 0.241082179338788 -104.9271953 39.7231622 -104.9271898 39.7253303
-2096 2098 2099 0.174814701889178 0.174814701889178 -104.9269736 39.7162529 -104.9269579 39.717825
-2097 2099 2100 0.175154975379932 0.175154975379932 -104.9269579 39.717825 -104.9269638 39.7194002
-2100 2102 2103 0.114419579517541 0.114419579517541 -104.9269671 39.7801311 -104.9269671 39.7811601
-2101 2103 2104 0.285214999643623 0.285214999643623 -104.9269671 39.7811601 -104.9269661 39.7837251
-2102 2104 2107 0.394315301182406 0.394315301182406 -104.9269661 39.7837251 -104.9273336 39.78726
-2104 333 2108 0.278529398579064 0.278529398579064 -104.9270337 39.7763519 -104.9269854 39.7788565
-2106 1150 1822 0.102734424254821 0.102734424254821 -104.9269717 39.7637905 -104.9269459 39.7647142
-2108 2109 2110 0.202389435684367 0.202389435684367 -104.9269682 39.7655992 -104.927006 39.7674191
-2109 2110 2111 0.203214045748693 0.203214045748693 -104.927006 39.7674191 -104.9269888 39.7692466
-2110 2111 2112 0.241815761631872 0.241815761631872 -104.9269888 39.7692466 -104.9269856 39.7714213
-2111 2112 2113 0.100823640639482 0.100823640639482 -104.9269856 39.7714213 -104.926995 39.772328
-2112 2113 2114 0.00265953685516916 0.00265953685516916 -104.926995 39.772328 -104.9269938 39.7723519
-2114 2115 2116 0.238307263458502 0.238307263458502 -104.9270004 39.7731311 -104.9269816 39.7752742
-2116 2117 2118 0.172019623051487 0.172019623051487 -104.9268915 39.7292726 -104.9268844 39.7308196
-2117 2118 2119 0.0267252812490126 0.0267252812490126 -104.9268844 39.7308196 -104.9268735 39.7310598
-2118 2119 2120 0.200138632498134 0.200138632498134 -104.9268735 39.7310598 -104.9268969 39.7328596
-2119 2120 2121 0.20340922729078 0.20340922729078 -104.9268969 39.7328596 -104.9268925 39.7346889
-2120 2121 2122 0.197749465935997 0.197749465935997 -104.9268925 39.7346889 -104.9268972 39.7364673
-2121 2122 2123 0.20148284791492 0.20148284791492 -104.9268972 39.7364673 -104.9269303 39.7382791
-2122 2123 2124 0.206967663578278 0.206967663578278 -104.9269303 39.7382791 -104.9269046 39.7401403
-2123 2124 688 0.198127359399408 0.198127359399408 -104.9269046 39.7401403 -104.926901 39.7419221
-2124 688 1981 0.162008033573987 0.162008033573987 -104.926901 39.7419221 -104.926882 39.743379
-2127 2127 2128 0.0963587083366664 0.0963587083366664 -104.9275873 39.7620069 -104.9275725 39.7628734
-2128 2128 1149 0.101309363144821 0.101309363144821 -104.9275725 39.7628734 -104.9276154 39.7637839
-2130 2129 2130 0.268413747321973 0.268413747321973 -104.9271924 39.7256294 -104.9271876 39.7280433
-15791 2106 2131 0.0329007751166605 0.0329007751166605 -105.0232102 39.7379438 -105.0228299 39.7378988
-2131 2130 2132 0.135315648859656 0.135315648859656 -104.9271876 39.7280433 -104.9271973 39.7292602
-2133 2133 2134 0.206936888424913 0.206936888424913 -104.9269818 39.7474065 -104.9269439 39.7492673
-2134 2134 2135 0.199680286737687 0.199680286737687 -104.9269439 39.7492673 -104.9270076 39.7510624
-2135 2135 801 0.201106069676904 0.201106069676904 -104.9270076 39.7510624 -104.9269475 39.7528704
-2136 801 2136 0.201743876713814 0.201743876713814 -104.9269475 39.7528704 -104.9269602 39.7546847
-2137 2136 2137 0.208870260631958 0.208870260631958 -104.9269602 39.7546847 -104.9269972 39.7565629
-2138 2137 2138 0.202159360168084 0.202159360168084 -104.9269972 39.7565629 -104.9269287 39.7583802
-2139 2138 2139 0.199627649413879 0.199627649413879 -104.9269287 39.7583802 -104.9269888 39.7601749
-2140 2139 2140 0.186052011799078 0.186052011799078 -104.9269888 39.7601749 -104.9269946 39.7618481
-2142 2141 2142 0.0396569310433899 0.0396569310433899 -105.0086114 39.7398829 -105.008237 39.7400934
-2168 2167 2168 0.189234637777307 0.189234637777307 -105.014692 39.7839198 -105.0147047 39.7856216
-2143 2142 2143 0.0683760552809121 0.0683760552809121 -105.008237 39.7400934 -105.0077357 39.7405725
-2144 2143 2144 0.00806043179372478 0.00806043179372478 -105.0077357 39.7405725 -105.00765 39.7406027
-2145 2144 2145 0.00436074705638217 0.00436074705638217 -105.00765 39.7406027 -105.0076051 39.7406213
-2146 2145 2146 0.00359181344508779 0.00359181344508779 -105.0076051 39.7406213 -105.0075693 39.7406382
-2147 2146 2147 0.00395340009925433 0.00395340009925433 -105.0075693 39.7406382 -105.0075292 39.7406559
-2148 2147 2148 0.136610372293043 0.136610372293043 -105.0075292 39.7406559 -105.0061384 39.7412606
-2149 2148 2149 0.180604844053974 0.180604844053974 -105.0061384 39.7412606 -105.0043355 39.7421069
-2152 2152 2153 0.132023781927159 0.132023781927159 -105.0142702 39.7777735 -105.0142616 39.7789608
-2153 2153 2154 0.135708940609739 0.135708940609739 -105.0142616 39.7789608 -105.0142359 39.7801811
-2154 2154 1415 0.130555983926377 0.130555983926377 -105.0142359 39.7801811 -105.0142444 39.7813552
-2155 1415 1355 0.134241500709378 0.134241500709378 -105.0142444 39.7813552 -105.0142702 39.7825623
-2156 1355 2155 0.0746101236889861 0.0746101236889861 -105.0142702 39.7825623 -105.0142907 39.7832331
-2161 2159 2161 0.133841125283574 0.133841125283574 -105.0144598 39.7572068 -105.0144855 39.7584103
-2162 2161 2162 0.1372260849468 0.1372260849468 -105.0144855 39.7584103 -105.0144815 39.7596444
-2163 2162 2163 0.128741940100472 0.128741940100472 -105.0144815 39.7596444 -105.0144855 39.7608022
-2164 2163 2164 0.135391700615332 0.135391700615332 -105.0144855 39.7608022 -105.0144802 39.7620198
-2169 2168 2169 0.201124079513876 0.201124079513876 -105.0147047 39.7856216 -105.0146868 39.7874303
-2170 2169 2170 0.108103708021473 0.108103708021473 -105.0146868 39.7874303 -105.0146867 39.7884025
-2172 2172 2173 0.13444261016809 0.13444261016809 -105.0146807 39.7692764 -105.0146978 39.7704854
-2173 2173 2174 0.13827137965728 0.13827137965728 -105.0146978 39.7704854 -105.0146935 39.7717289
-2174 2174 2175 0.134068324786893 0.134068324786893 -105.0146935 39.7717289 -105.0146888 39.7729346
-2175 2175 2176 0.133067365005956 0.133067365005956 -105.0146888 39.7729346 -105.014685 39.7741313
-2176 2176 2177 0.135535927176987 0.135535927176987 -105.014685 39.7741313 -105.014681 39.7753502
-2177 2177 2178 0.134471884610529 0.134471884610529 -105.014681 39.7753502 -105.01465 39.7765593
-2180 2180 2181 0.201420608111328 0.201420608111328 -105.0141827 39.72025 -105.0141719 39.7220614
-2182 2182 2183 0.0166632573599522 0.0166632573599522 -105.0158823 39.7291678 -105.0159426 39.7293103
-2183 2183 2184 0.101864448677803 0.101864448677803 -105.0159426 39.7293103 -105.0163101 39.7301817
-2184 2184 2185 0.047789206759145 0.047789206759145 -105.0163101 39.7301817 -105.0164339 39.7306008
-2185 2185 2186 0.0423227378750124 0.0423227378750124 -105.0164339 39.7306008 -105.0164597 39.7309809
-4423 3782 4133 0.154572357311794 0.154572357311794 -104.9505822 39.7291315 -104.9505787 39.7305216
-2186 2186 2187 0.66062410841751 0.66062410841751 -105.0164597 39.7309809 -105.0159723 39.7369102
-2188 2188 1945 0.10637947146537 0.10637947146537 -105.0159468 39.7375377 -105.0159294 39.7384943
-2189 1945 2189 0.148995294788127 0.148995294788127 -105.0159294 39.7384943 -105.0159036 39.7398341
-2211 2212 2213 0.0467155303221573 0.0467155303221573 -104.9792376 39.7337065 -104.9786913 39.7337086
-2190 2189 2190 0.327169136665339 0.327169136665339 -105.0159036 39.7398341 -105.0139689 39.7423726
-2192 2191 2192 0.0188299118027414 0.0188299118027414 -104.9936227 39.759356 -104.9937863 39.7592426
-2193 2192 2193 0.210910851782462 0.210910851782462 -104.9937863 39.7592426 -104.9954278 39.7578265
-2195 2194 2195 0.365278744815015 0.365278744815015 -104.999248 39.7553456 -105.0025939 39.7533024
-2196 2195 2196 0.0130424738912125 0.0130424738912125 -105.0025939 39.7533024 -105.0026791 39.7532051
-2197 2196 2197 0.0449464311286017 0.0449464311286017 -105.0026791 39.7532051 -105.0028674 39.7528277
-2198 2197 2198 0.0030293307914236 0.0030293307914236 -105.0028674 39.7528277 -105.0028654 39.7528005
-2199 2198 2199 0.128682754082238 0.128682754082238 -105.0028654 39.7528005 -105.0029976 39.7516477
-2200 2199 2200 0.110573702095649 0.110573702095649 -105.0029976 39.7516477 -105.0039004 39.7509356
-2202 2203 2204 0.10817464433389 0.10817464433389 -104.9873753 39.7338548 -104.9861103 39.7338618
-2203 2204 2205 0.107622599984834 0.107622599984834 -104.9861103 39.7338618 -104.9848518 39.7338511
-2204 2205 2206 0.108403921870099 0.108403921870099 -104.9848518 39.7338511 -104.9835843 39.7338332
-2205 2206 2207 0.060733439657354 0.060733439657354 -104.9835843 39.7338332 -104.9828811 39.7337565
-2206 2207 2208 0.0534350684854931 0.0534350684854931 -104.9828811 39.7337565 -104.9822597 39.7337058
-2207 2208 2209 0.0529414575701877 0.0529414575701877 -104.9822597 39.7337058 -104.9816406 39.7337091
-2208 2209 2210 0.0527447832774698 0.0527447832774698 -104.9816406 39.7337091 -104.9810238 39.7337124
-2209 2210 2211 0.102434337721347 0.102434337721347 -104.9810238 39.7337124 -104.9798259 39.7337112
-2210 2211 2212 0.0503091444283059 0.0503091444283059 -104.9798259 39.7337112 -104.9792376 39.7337065
-2212 2213 2214 0.0457845256573543 0.0457845256573543 -104.9786913 39.7337086 -104.9781559 39.7337051
-2213 2214 2215 0.0483154919494593 0.0483154919494593 -104.9781559 39.7337051 -104.9775909 39.7337085
-2214 2215 2216 0.0500256719211907 0.0500256719211907 -104.9775909 39.7337085 -104.9770059 39.7337051
-2215 2216 2217 0.0483324272045254 0.0483324272045254 -104.9770059 39.7337051 -104.9764407 39.7337019
-2216 2217 2218 0.0492693454756351 0.0492693454756351 -104.9764407 39.7337019 -104.9758646 39.7336949
-2217 2218 2219 0.0514417765088717 0.0514417765088717 -104.9758646 39.7336949 -104.9752631 39.7336875
-2218 2219 2220 0.0488786158333744 0.0488786158333744 -104.9752631 39.7336875 -104.9746915 39.7336888
-2219 2220 981 0.0498905437062621 0.0498905437062621 -104.9746915 39.7336888 -104.9741082 39.7336985
-2220 981 2221 0.0506165357374516 0.0506165357374516 -104.9741082 39.7336985 -104.9735163 39.7337028
-2221 2221 2222 0.046223636949906 0.046223636949906 -104.9735163 39.7337028 -104.9729758 39.7337087
-2224 2224 2225 0.051453756147013 0.051453756147013 -104.9718055 39.7337106 -104.9712038 39.7337071
-2225 2225 2226 0.0468957891600155 0.0468957891600155 -104.9712038 39.7337071 -104.9706554 39.733704
-2226 2226 2227 0.0492631927304953 0.0492631927304953 -104.9706554 39.733704 -104.9700793 39.733704
-2227 2227 2228 0.0520252151650071 0.0520252151650071 -104.9700793 39.733704 -104.9694709 39.733704
-2228 2228 2229 0.0550486617142997 0.0550486617142997 -104.9694709 39.733704 -104.9688272 39.7337106
-2229 2230 2231 0.0139385553943917 0.0139385553943917 -104.9407521 39.732834 -104.9405891 39.732834
-2230 2231 2232 0.0929550410270359 0.0929550410270359 -104.9405891 39.732834 -104.9395024 39.7328547
-2234 2236 2237 0.0961215858652653 0.0961215858652653 -104.9314966 39.732987 -104.9303867 39.7328502
-2235 2237 2238 0.0993231725885536 0.0993231725885536 -104.9303867 39.7328502 -104.9292252 39.7328524
-19654 10604 10606 0.0711515052063537 0.0711515052063537 -104.988215 39.7066518 -104.9882676 39.7060132
-2236 2238 2239 0.0986901078011995 0.0986901078011995 -104.9292252 39.7328524 -104.9280711 39.7328517
-2237 2239 2120 0.100412717366674 0.100412717366674 -104.9280711 39.7328517 -104.9268969 39.7328596
-2238 2120 2240 0.0994425769829808 0.0994425769829808 -104.9268969 39.7328596 -104.925734 39.7328596
-2239 2240 2241 0.0986741447066025 0.0986741447066025 -104.925734 39.7328596 -104.9245804 39.7328803
-2240 2241 2242 0.196986803845301 0.196986803845301 -104.9245804 39.7328803 -104.9222768 39.732882
-2241 2245 2246 0.0853554831080311 0.0853554831080311 -104.9644966 39.7334712 -104.9634985 39.733462
-2242 2246 1017 0.10642802452306 0.10642802452306 -104.9634985 39.733462 -104.9622539 39.733462
-2243 1017 2247 0.0517185594306615 0.0517185594306615 -104.9622539 39.733462 -104.9616491 39.7334649
-2244 2247 2248 0.0530774886579764 0.0530774886579764 -104.9616491 39.7334649 -104.9610284 39.7334665
-16655 3462 3463 0.083025520087948 0.083025520087948 -104.9862758 39.7399191 -104.9872468 39.7399233
-2245 2248 2249 0.0515725288155829 0.0515725288155829 -104.9610284 39.7334665 -104.9604253 39.7334648
-2246 2249 2250 0.0550106406637853 0.0550106406637853 -104.9604253 39.7334648 -104.959782 39.733462
-2247 2250 2251 0.0492291609495858 0.0492291609495858 -104.959782 39.733462 -104.9592063 39.733462
-2250 2253 2254 0.068064098421736 0.068064098421736 -105.0323128 39.7487906 -105.0323072 39.7481785
-2251 2254 381 0.0653278702953464 0.0653278702953464 -105.0323072 39.7481785 -105.0323033 39.747591
-2253 2255 2256 0.176933367276823 0.176933367276823 -105.0275483 39.7165547 -105.0275483 39.7181459
-2255 2257 1830 0.176665129086282 0.176665129086282 -105.0275587 39.7197559 -105.0275804 39.7213446
-2257 1817 2258 0.0851310356517557 0.0851310356517557 -105.02745 39.7281152 -105.0276461 39.7288658
-2258 2258 2259 0.0498677366751348 0.0498677366751348 -105.0276461 39.7288658 -105.0276357 39.7293142
-2260 2260 2261 0.20430957984894 0.20430957984894 -104.9305261 39.7655817 -104.930525 39.7674191
-2263 2263 2264 0.172785898975569 0.172785898975569 -104.9304775 39.7162632 -104.9304797 39.7178171
-2265 2265 2266 0.17364958356586 0.17364958356586 -104.9304912 39.7194002 -104.9304614 39.7209617
-2266 2266 2267 0.245119251352525 0.245119251352525 -104.9304614 39.7209617 -104.9305167 39.7231657
-2267 2267 2268 0.132589695523512 0.132589695523512 -104.9305167 39.7231657 -104.9305223 39.7243581
-2268 2268 2269 0.106738596174206 0.106738596174206 -104.9305223 39.7243581 -104.9305023 39.7253179
-2269 2269 2270 0.0337285830402062 0.0337285830402062 -104.9305023 39.7253179 -104.9305077 39.7256212
-20279 7555 7554 0.0146999916602211 0.0146999916602211 -105.0451391 39.7751943 -105.0451388 39.7750621
-2270 2270 2271 0.269363966522552 0.269363966522552 -104.9305077 39.7256212 -104.9305276 39.7280436
-2273 2275 684 0.204569111503518 0.204569111503518 -104.9309301 39.7401271 -104.930959 39.7419667
-2274 684 1986 0.157853726642528 0.157853726642528 -104.930959 39.7419667 -104.9309512 39.7433863
-2278 2278 2279 0.207434558661452 0.207434558661452 -104.9304788 39.7474019 -104.9304837 39.7492674
-2279 2279 2280 0.20034839537718 0.20034839537718 -104.9304837 39.7492674 -104.9305316 39.7510688
-2280 2280 798 0.19667070755531 0.19667070755531 -104.9305316 39.7510688 -104.9305352 39.7528375
-2281 798 2281 0.204476797355414 0.204476797355414 -104.9305352 39.7528375 -104.9305302 39.7546764
-2283 2282 2283 0.201226119347201 0.201226119347201 -104.9305543 39.7565508 -104.9305336 39.7583604
-2284 2283 2284 0.201775247020165 0.201775247020165 -104.9305336 39.7583604 -104.9305594 39.7601749
-2287 2286 2287 0.00679684653457476 0.00679684653457476 -105.0028141 39.740161 -105.0028286 39.7402211
-2288 2287 2288 0.00351717235619697 0.00351717235619697 -105.0028286 39.7402211 -105.0028395 39.7402516
-2289 2288 2289 0.00475072672267961 0.00475072672267961 -105.0028395 39.7402516 -105.0028564 39.7402923
-2290 2289 2290 0.085203263947135 0.085203263947135 -105.0028564 39.7402923 -105.0033485 39.7409586
-2292 2291 2292 0.21658567369152 0.21658567369152 -105.0192055 39.7355863 -105.0217377 39.7356319
-2293 2292 2293 0.294285406846423 0.294285406846423 -105.0217377 39.7356319 -105.025179 39.7356649
-2295 1532 2294 0.0895735364116296 0.0895735364116296 -104.9909417 39.7651848 -104.9899657 39.7654782
-2296 2294 2295 0.130472447344756 0.130472447344756 -104.9899657 39.7654782 -104.9885127 39.7658379
-2298 2044 560 0.0834414685220809 0.0834414685220809 -104.9843229 39.7670786 -104.9837994 39.767712
-2299 560 913 0.519257886958262 0.519257886958262 -104.9837994 39.767712 -104.9806193 39.771691
-2300 913 2297 0.14849143076931 0.14849143076931 -104.9806193 39.771691 -104.9797146 39.7728311
-2301 2297 2299 0.276635413291223 0.276635413291223 -104.9797146 39.7728311 -104.9780262 39.7749537
-2356 2345 2346 0.126022029068994 0.126022029068994 -104.9585534 39.7194149 -104.95708 39.7194068
-2302 2299 2300 0.882147486934507 0.882147486934507 -104.9780262 39.7749537 -104.9691692 39.7790284
-2304 2301 2302 0.171837385748798 0.171837385748798 -105.0067097 39.6957792 -105.0087181 39.6957726
-2305 2302 2303 0.168190952055295 0.168190952055295 -105.0087181 39.6957726 -105.0106836 39.695799
-2308 1995 1585 0.0793668846267203 0.0793668846267203 -105.0136437 39.6959725 -105.0145707 39.6959461
-2310 1646 2305 0.0800618116658591 0.0800618116658591 -105.0155663 39.6959857 -105.0165019 39.6959725
-2311 2305 2306 0.0800532572745142 0.0800532572745142 -105.0165019 39.6959725 -105.0174374 39.6959857
-2312 2306 2307 0.0808374839403145 0.0808374839403145 -105.0174374 39.6959857 -105.0183816 39.6959593
-2313 2307 2308 0.0793040216351705 0.0793040216351705 -105.0183816 39.6959593 -105.0193085 39.6959593
-2315 2309 2310 0.0976846110372701 0.0976846110372701 -105.0379252 39.6958338 -105.0390668 39.6958206
-2317 2311 2312 0.131380688058575 0.131380688058575 -105.0112958 39.7314875 -105.0128321 39.7314771
-2318 2312 2313 0.00313000089825153 0.00313000089825153 -105.0128321 39.7314771 -105.0128687 39.7314768
-2319 2313 2157 0.109122831884578 0.109122831884578 -105.0128687 39.7314768 -105.0141188 39.7312798
-2320 2157 2314 0.0470081550211631 0.0470081550211631 -105.0141188 39.7312798 -105.0146392 39.731416
-2321 2314 441 0.0450344666647882 0.0450344666647882 -105.0146392 39.731416 -105.01516 39.7314761
-2326 1614 2317 0.105832922283753 0.105832922283753 -104.9767564 39.7705977 -104.977649 39.7712574
-2327 2317 2319 0.101211119794553 0.101211119794553 -104.977649 39.7712574 -104.9784558 39.7719237
-2328 2319 914 0.105388128978222 0.105388128978222 -104.9784558 39.7719237 -104.9793447 39.7725806
-2351 2100 2341 0.101951720072048 0.101951720072048 -104.9269638 39.7194002 -104.9257718 39.7194039
-2352 2341 2342 0.101030261985598 0.101030261985598 -104.9257718 39.7194039 -104.9245907 39.7194177
-2353 2342 2330 0.0997965680595524 0.0997965680595524 -104.9245907 39.7194177 -104.9234239 39.7194218
-2354 2330 2343 0.101856778567858 0.101856778567858 -104.9234239 39.7194218 -104.922233 39.7194218
-2355 2344 2345 0.0735649917770033 0.0735649917770033 -104.9594135 39.719411 -104.9585534 39.7194149
-2357 2346 2347 0.106673075682264 0.106673075682264 -104.95708 39.7194068 -104.9558328 39.7194027
-2358 2347 2348 0.104262034499471 0.104262034499471 -104.9558328 39.7194027 -104.9546138 39.7194083
-2359 2348 2057 0.103127373430199 0.103127373430199 -104.9546138 39.7194083 -104.9534081 39.7194172
-2360 2057 2350 0.104860273903505 0.104860273903505 -104.9534081 39.7194172 -104.9521821 39.7194221
-2361 2350 2351 0.102072059078566 0.102072059078566 -104.9521821 39.7194221 -104.9509887 39.7194172
-2362 2351 2352 0.10208795508847 0.10208795508847 -104.9509887 39.7194172 -104.9497951 39.7194192
-2363 2352 2353 0.103003886322398 0.103003886322398 -104.9497951 39.7194192 -104.9485908 39.7194151
-2364 2353 2354 0.104842753763622 0.104842753763622 -104.9485908 39.7194151 -104.947365 39.719411
-2365 2354 2355 0.102079170592138 0.102079170592138 -104.947365 39.719411 -104.9461715 39.719411
-2366 2355 2356 0.104157794922069 0.104157794922069 -104.9461715 39.719411 -104.9449537 39.7194089
-2367 2356 2357 0.102771960719463 0.102771960719463 -104.9449537 39.7194089 -104.9437521 39.7194089
-2368 2357 843 0.10323381873133 0.10323381873133 -104.9437521 39.7194089 -104.9425451 39.7194089
-2369 843 2358 0.104166303367793 0.104166303367793 -104.9425451 39.7194089 -104.9413272 39.719407
-2370 2358 2359 0.04678514768012 0.04678514768012 -104.9413272 39.719407 -104.9407802 39.7194048
-2372 2360 2361 0.106536201799638 0.106536201799638 -104.9874759 39.7193464 -104.9862305 39.719364
-2373 2361 2362 0.0524641553188961 0.0524641553188961 -104.9862305 39.719364 -104.9856171 39.719362
-2374 2362 2363 0.0542089866141956 0.0542089866141956 -104.9856171 39.719362 -104.9849833 39.7193599
-2376 964 2364 0.101990510698998 0.101990510698998 -104.9838008 39.7193434 -104.9826087 39.7193208
-2377 2364 2365 0.0991028819964669 0.0991028819964669 -104.9826087 39.7193208 -104.98145 39.7193208
-2378 2365 2366 0.101583146356588 0.101583146356588 -104.98145 39.7193208 -104.9802624 39.7193326
-2379 2366 2367 0.0976663347579885 0.0976663347579885 -104.9802624 39.7193326 -104.9791205 39.719335
-2380 2367 2368 0.137463391512845 0.137463391512845 -104.9791205 39.719335 -104.9775163 39.7194106
-2382 2369 2370 0.0935927888835794 0.0935927888835794 -104.9971141 39.7584573 -104.9971148 39.759299
-2383 2370 2371 0.22137940675351 0.22137940675351 -104.9971148 39.759299 -104.9971055 39.7612899
-2384 93 2372 0.144113051799641 0.144113051799641 -104.9560723 39.7002187 -104.9555234 39.6989934
-2386 2373 2374 0.118928753039855 0.118928753039855 -104.9553043 39.709946 -104.954137 39.710527
-18871 9233 10374 0.171083495652578 0.171083495652578 -104.9861692 39.7001048 -104.9849567 39.6988813
-2387 2374 2375 0.0543464584708682 0.0543464584708682 -104.954137 39.710527 -104.9535019 39.7105138
-2389 2378 2379 0.0407086995566738 0.0407086995566738 -104.9510557 39.7104412 -104.9506866 39.7102101
-2392 2381 2382 0.0375038196347678 0.0375038196347678 -104.9519054 39.7105204 -104.9518797 39.7101837
-2393 2383 2384 0.0259773773232023 0.0259773773232023 -104.9506695 39.7101903 -104.9508926 39.7100318
-2416 2406 2407 0.0997923351013975 0.0997923351013975 -105.0357948 39.7530206 -105.0369621 39.753014
-2417 2407 2408 0.102411248163046 0.102411248163046 -105.0369621 39.753014 -105.03816 39.7530043
-2418 2408 2410 0.102005785733823 0.102005785733823 -105.03816 39.7530043 -105.0393531 39.7530175
-2419 2410 2411 0.0465568279250156 0.0465568279250156 -105.0393531 39.7530175 -105.0398977 39.753016
-2420 2411 1116 0.0498480806250605 0.0498480806250605 -105.0398977 39.753016 -105.0404808 39.7530145
-2421 1116 2412 0.0524212085974951 0.0524212085974951 -105.0404808 39.7530145 -105.041094 39.7530159
-2422 2412 2413 0.00643722349691115 0.00643722349691115 -105.041094 39.7530159 -105.0411693 39.753016
-2423 2413 2414 0.0569639986120168 0.0569639986120168 -105.0411693 39.753016 -105.0416538 39.7526643
-2424 2414 2415 0.054429107165009 0.054429107165009 -105.0416538 39.7526643 -105.0422764 39.7527667
-2426 1254 2416 0.203595366987771 0.203595366987771 -105.0205077 39.7711338 -105.0228899 39.7711377
-2427 2416 2418 0.194946286421225 0.194946286421225 -105.0228899 39.7711377 -105.0251709 39.7711415
-2429 2419 2420 0.10553685574305 0.10553685574305 -104.9960628 39.7705047 -104.9948281 39.7704903
-2430 2420 2421 0.100987191369147 0.100987191369147 -104.9948281 39.7704903 -104.9936465 39.7704869
-2431 2421 2422 0.140456845404627 0.140456845404627 -104.9936465 39.7704869 -104.9920897 39.7708916
-2432 2423 2424 0.132127040761259 0.132127040761259 -105.0299558 39.7706272 -105.0315008 39.7706692
-2433 2424 2425 0.0836330996531634 0.0836330996531634 -105.0315008 39.7706692 -105.0324788 39.7706946
-2434 2425 2426 0.048846065804279 0.048846065804279 -105.0324788 39.7706946 -105.03305 39.7707095
-2435 2426 2427 0.133578105271454 0.133578105271454 -105.03305 39.7707095 -105.0346118 39.7707555
-2437 2428 2429 0.0517867804859422 0.0517867804859422 -105.0346033 39.7713295 -105.0352091 39.7713194
-2438 2429 2430 0.0498462274807045 0.0498462274807045 -105.0352091 39.7713194 -105.0357922 39.7713097
-2439 2430 2431 0.0505796838521555 0.0505796838521555 -105.0357922 39.7713097 -105.0363839 39.7713006
-2440 2431 2432 0.04930585188023 0.04930585188023 -105.0363839 39.7713006 -105.0369607 39.7712918
-2441 2432 2433 0.0511391992663707 0.0511391992663707 -105.0369607 39.7712918 -105.0375589 39.771281
-2442 2433 2434 0.049421053488602 0.049421053488602 -105.0375589 39.771281 -105.038137 39.7712705
-2444 2435 2436 0.0499548965774192 0.0499548965774192 -105.0387198 39.7712682 -105.0393043 39.7712659
-2446 2437 2438 0.0498278119665032 0.0498278119665032 -105.0393174 39.7709233 -105.0399004 39.7709268
-2447 2438 1131 0.0475201423687532 0.0475201423687532 -105.0399004 39.7709268 -105.0404564 39.7709301
-2448 1131 2440 0.0499034161165238 0.0499034161165238 -105.0404564 39.7709301 -105.0410403 39.7709314
-2449 2440 2441 0.0519460604074748 0.0519460604074748 -105.0410403 39.7709314 -105.0416481 39.7709328
-2450 2441 2442 0.103666385736129 0.103666385736129 -105.0416481 39.7709328 -105.042861 39.7709424
-2451 2442 2443 0.0495636449318867 0.0495636449318867 -105.042861 39.7709424 -105.0434409 39.7709381
-2452 2443 2444 0.0508868110117968 0.0508868110117968 -105.0434409 39.7709381 -105.0440363 39.7709406
-2454 2445 2446 0.0992414144632343 0.0992414144632343 -104.9982447 39.770496 -104.9994058 39.7705066
-2455 2446 2447 0.0995661619141735 0.0995661619141735 -104.9994058 39.7705066 -105.0005707 39.770496
-2456 2447 2448 0.102918667647187 0.102918667647187 -105.0005707 39.770496 -105.0017747 39.7705132
-2457 2448 2449 0.103317708000917 0.103317708000917 -105.0017747 39.7705132 -105.0029835 39.7705237
-2458 2449 714 0.103614639817309 0.103614639817309 -105.0029835 39.7705237 -105.0041958 39.7705323
-2460 2450 2451 0.0843633084104915 0.0843633084104915 -105.0054661 39.7705389 -105.0064532 39.7705389
-2462 2452 2453 0.133209824518529 0.133209824518529 -105.0080496 39.7705191 -105.0096081 39.7705035
-2463 2453 2454 0.136026824487267 0.136026824487267 -105.0096081 39.7705035 -105.0111996 39.7705167
-2464 2454 1228 0.0997640460624544 0.0997640460624544 -105.0111996 39.7705167 -105.0123662 39.7704857
-2466 2455 2173 0.100670279604477 0.100670279604477 -105.0135199 39.7704859 -105.0146978 39.7704854
-2467 2173 2456 0.101681998391895 0.101681998391895 -105.0146978 39.7704854 -105.015887 39.7705129
-2468 2456 2457 0.135717601546705 0.135717601546705 -105.015887 39.7705129 -105.0174746 39.7704864
-2469 2457 2458 0.125216072912334 0.125216072912334 -105.0174746 39.7704864 -105.0189397 39.770486
-2470 2458 1253 0.13515574813911 0.13515574813911 -105.0189397 39.770486 -105.0205211 39.7704859
-2472 1811 2459 0.0528114155967436 0.0528114155967436 -105.0082177 39.7529013 -105.0078361 39.7532748
-2474 489 2460 0.0154146680516237 0.0154146680516237 -104.9407865 39.7473869 -104.9406062 39.7473869
-2475 2460 2461 0.0956622199995578 0.0956622199995578 -104.9406062 39.7473869 -104.9394874 39.7473999
-2476 2461 2462 0.050324686032827 0.050324686032827 -104.9394874 39.7473999 -104.9388988 39.7473953
-2477 2462 2463 0.0440541436649478 0.0440541436649478 -104.9388988 39.7473953 -104.9383838 39.7474085
-2478 2463 2464 0.09025955144498 0.09025955144498 -104.9383838 39.7474085 -104.9373281 39.7474151
-2479 2464 2465 0.00954118829962817 0.00954118829962817 -104.9373281 39.7474151 -104.9372165 39.7474151
-2480 2465 2466 0.0924623221003645 0.0924623221003645 -104.9372165 39.7474151 -104.936135 39.7474151
-2481 2466 2015 0.0557729059183765 0.0557729059183765 -104.936135 39.7474151 -104.9354827 39.7474085
-2483 1998 2467 0.0939242873690555 0.0939242873690555 -104.935045 39.7474085 -104.9339464 39.7474085
-2485 2468 2469 0.0807187230923558 0.0807187230923558 -104.9337661 39.7474085 -104.932822 39.7474019
-2486 2469 2470 0.0660886283093114 0.0660886283093114 -104.932822 39.7474019 -104.932049 39.7473981
-2487 2470 2471 0.0307524582434291 0.0307524582434291 -104.932049 39.7473981 -104.9316893 39.7473987
-2488 2471 2277 0.0631719504961159 0.0631719504961159 -104.9316893 39.7473987 -104.9309504 39.7473981
-2489 2277 2278 0.040321437937915 0.040321437937915 -104.9309504 39.7473981 -104.9304788 39.7474019
-2490 2278 2472 0.0579924273198359 0.0579924273198359 -104.9304788 39.7474019 -104.9298007 39.7473887
-2491 2472 2473 0.039564008523498 0.039564008523498 -104.9298007 39.7473887 -104.9293385 39.7474063
-2492 2473 2474 0.0566191459993118 0.0566191459993118 -104.9293385 39.7474063 -104.9286764 39.7473953
-2493 2474 2475 0.0461657995077916 0.0461657995077916 -104.9286764 39.7473953 -104.9281369 39.7474129
-2494 2475 2476 0.0573841993244499 0.0573841993244499 -104.9281369 39.7474129 -104.9274657 39.7474113
-2495 2476 2133 0.0413742441677564 0.0413742441677564 -104.9274657 39.7474113 -104.9269818 39.7474065
-2496 2133 2477 0.100557820130683 0.100557820130683 -104.9269818 39.7474065 -104.9258057 39.7474177
-2497 2477 2478 0.100232094382669 0.100232094382669 -104.9258057 39.7474177 -104.924634 39.747387
-2523 1412 1352 0.126262872161581 0.126262872161581 -105.0095538 39.781386 -105.0095743 39.7825214
-2498 2478 2479 3.80416722159948 3.80416722159948 -104.924634 39.747387 -104.880138 39.747428
-17380 5747 2721 0.292296181002999 0.292296181002999 -104.9676964 39.6930969 -104.9693989 39.6953759
-2500 2481 2482 0.133762433378551 0.133762433378551 -105.0095495 39.7794028 -105.0111147 39.7793892
-2502 2483 2484 0.132763004680832 0.132763004680832 -105.0111233 39.7789604 -105.0126768 39.7789736
-2503 2484 2153 0.135437121880425 0.135437121880425 -105.0126768 39.7789736 -105.0142616 39.7789608
-2506 2486 2487 0.0976687527368442 0.0976687527368442 -105.0170359 39.7789761 -105.0181786 39.7789934
-2507 2487 2488 0.100497620432408 0.100497620432408 -105.0181786 39.7789934 -105.0193545 39.7790066
-2508 2488 1263 0.0968234302487817 0.0968234302487817 -105.0193545 39.7790066 -105.0204874 39.7790198
-2510 2489 2490 0.129998303918767 0.129998303918767 -105.0252567 39.7790442 -105.0267778 39.7790603
-2511 2490 2491 0.131427328920895 0.131427328920895 -105.0267778 39.7790603 -105.0283152 39.7790924
-2512 2491 2492 0.134959393077107 0.134959393077107 -105.0283152 39.7790924 -105.0298945 39.7790924
-2513 2492 2493 0.13352181172892 0.13352181172892 -105.0298945 39.7790924 -105.0314566 39.7791188
-2514 2493 2494 0.134977098269894 0.134977098269894 -105.0314566 39.7791188 -105.0330359 39.7791385
-2515 2494 2495 0.133660770711518 0.133660770711518 -105.0330359 39.7791385 -105.0346 39.7791414
-2517 2496 1452 0.127643758305543 0.127643758305543 -105.0026756 39.7039481 -105.003594 39.7030434
-2519 2497 2498 0.181370133617083 0.181370133617083 -105.0102009 39.7838273 -105.0101988 39.7854584
-2521 2481 2499 0.0828768372746742 0.0828768372746742 -105.0095495 39.7794028 -105.0095409 39.7801481
-2522 2499 1412 0.137652613646732 0.137652613646732 -105.0095409 39.7801481 -105.0095538 39.781386
-2524 1352 2502 0.0676943813373141 0.0676943813373141 -105.0095743 39.7825214 -105.0095013 39.7831276
-2526 2503 2504 0.133817315449894 0.133817315449894 -105.010138 39.772934 -105.0100035 39.774133
-2527 2504 2505 0.135673996947998 0.135673996947998 -105.0100035 39.774133 -105.0100464 39.7753527
-2528 2505 2506 0.131966049224978 0.131966049224978 -105.0100464 39.7753527 -105.0099863 39.7765386
-2529 2506 2507 0.147529903316466 0.147529903316466 -105.0099863 39.7765386 -105.0105528 39.7777919
-2530 2507 2508 0.139391603159038 0.139391603159038 -105.0105528 39.7777919 -105.0105184 39.7790452
-16296 2509 2510 0.0284493842376544 0.0284493842376544 -104.9707856 39.6972952 -104.9709885 39.6970925
-2532 2511 2512 0.0269759988952267 0.0269759988952267 -105.0096048 39.7617977 -105.0096039 39.7620403
-2533 2512 2513 0.0303785309203703 0.0303785309203703 -105.0096039 39.7620403 -105.0096031 39.7623135
-2534 2513 2514 0.100988065805353 0.100988065805353 -105.0096031 39.7623135 -105.0096079 39.7632217
-2535 2514 2515 0.134258813820628 0.134258813820628 -105.0096079 39.7632217 -105.0095992 39.7644291
-2536 2515 2516 0.1356600895436 0.1356600895436 -105.0095992 39.7644291 -105.0096084 39.7656491
-2537 2516 2517 0.13329676442141 0.13329676442141 -105.0096084 39.7656491 -105.0096344 39.7668477
-2538 2517 1672 0.132852712666159 0.132852712666159 -105.0096344 39.7668477 -105.0096516 39.7680424
-2539 1672 2518 0.137264898504848 0.137264898504848 -105.0096516 39.7680424 -105.0096081 39.7692764
-2540 2518 2453 0.136447294484888 0.136447294484888 -105.0096081 39.7692764 -105.0096081 39.7705035
-2541 2453 2519 0.136891385699314 0.136891385699314 -105.0096081 39.7705035 -105.0097234 39.7717314
-2542 2519 2520 0.134024921907499 0.134024921907499 -105.0097234 39.7717314 -105.0096182 39.772934
-2544 2521 2522 0.0902887501429021 0.0902887501429021 -105.0101778 39.7862486 -105.0101932 39.7870605
-2545 2522 2523 0.0432770654501463 0.0432770654501463 -105.0101932 39.7870605 -105.0101932 39.7874497
-2546 2523 2524 0.0452800647802491 0.0452800647802491 -105.0101932 39.7874497 -105.0101975 39.7878569
-2547 2524 2525 0.0887962039212883 0.0887962039212883 -105.0101975 39.7878569 -105.0101844 39.7886554
-2549 2526 2527 0.14861247431244 0.14861247431244 -105.0103699 39.7355479 -105.0103656 39.7368844
-2550 2527 2528 0.177718576341635 0.177718576341635 -105.0103656 39.7368844 -105.010328 39.7384824
-2552 2529 2530 0.0550007858390758 0.0550007858390758 -105.0298418 39.737929 -105.0304849 39.7379392
-2553 2530 2531 0.0537231597686698 0.0537231597686698 -105.0304849 39.7379392 -105.0311131 39.7379476
-2557 254 1937 0.0763145446596447 0.0763145446596447 -105.0251543 39.7380028 -105.0260468 39.738001
-2562 2536 2537 0.0969383510155091 0.0969383510155091 -104.9938854 39.7870276 -104.994984 39.7872452
-2564 2523 2538 0.041595541767366 0.041595541767366 -105.0101932 39.7874497 -105.01068 39.7874523
-2565 2538 2539 0.0446801019224323 0.0446801019224323 -105.01068 39.7874523 -105.0112029 39.787455
-2567 2540 2541 0.0535606711091096 0.0535606711091096 -105.0345536 39.7874035 -105.0351796 39.7874285
-2568 2541 2542 0.0510376050613383 0.0510376050613383 -105.0351796 39.7874285 -105.0357769 39.7874319
-2569 2542 2543 0.048208042370787 0.048208042370787 -105.0357769 39.7874319 -105.0363411 39.7874312
-2570 2543 2544 0.0495068215823226 0.0495068215823226 -105.0363411 39.7874312 -105.0369205 39.7874304
-2571 2544 2545 0.0497291777137453 0.0497291777137453 -105.0369205 39.7874304 -105.0375025 39.7874319
-2572 2545 2546 0.0482680412228731 0.0482680412228731 -105.0375025 39.7874319 -105.0380674 39.7874333
-2573 2546 2547 0.0511986246623993 0.0511986246623993 -105.0380674 39.7874333 -105.0386666 39.7874341
-2574 2547 2548 0.0481311400848056 0.0481311400848056 -105.0386666 39.7874341 -105.0392299 39.7874348
-2575 2548 2549 0.05133533567668 0.05133533567668 -105.0392299 39.7874348 -105.0398307 39.787434
-2576 2549 1090 0.0473365047010202 0.0473365047010202 -105.0398307 39.787434 -105.0403847 39.7874333
-2578 2550 2551 0.0490112208554607 0.0490112208554607 -105.0409813 39.787434 -105.0415549 39.7874347
-2579 2551 2552 0.0504551815276218 0.0504551815276218 -105.0415549 39.7874347 -105.0421454 39.7874345
-2580 2552 2553 0.0492845875119232 0.0492845875119232 -105.0421454 39.7874345 -105.0427222 39.7874343
-2581 2553 2554 0.0515497460521136 0.0515497460521136 -105.0427222 39.7874343 -105.0433255 39.7874316
-2582 2554 2555 0.0526862102053863 0.0526862102053863 -105.0433255 39.7874316 -105.0439421 39.7874288
-2583 2555 2556 0.0982237295878 0.0982237295878 -105.0439421 39.7874288 -105.0450916 39.78742
-2584 2556 2557 0.264254691363992 0.264254691363992 -105.0450916 39.78742 -105.0481811 39.787528
-2585 1004 2558 0.099742520234474 0.099742520234474 -104.9875698 39.7873956 -104.9887371 39.787389
-2588 2560 1078 0.149639182772472 0.149639182772472 -105.0064215 39.7862585 -105.0081209 39.7865836
-2589 1078 2522 0.184839011544187 0.184839011544187 -105.0081209 39.7865836 -105.0101932 39.7870605
-2591 1484 2561 0.33893453481304 0.33893453481304 -104.99246 39.6948099 -104.9942282 39.6920823
-2592 2561 2562 0.36930331062994 0.36930331062994 -104.9942282 39.6920823 -104.9965885 39.6893017
-2594 2563 2295 0.235151876914131 0.235151876914131 -104.9865077 39.7643898 -104.9885127 39.7658379
-2596 2141 2564 0.0808696846181639 0.0808696846181639 -105.0086114 39.7398829 -105.0095126 39.7396622
-2628 2589 2590 0.046646895086832 0.046646895086832 -105.0367321 39.7229406 -105.0372775 39.7229371
-2597 2564 1224 0.24032404212478 0.24032404212478 -105.0095126 39.7396622 -105.0123175 39.7395238
-2600 2373 2567 0.1712601795962 0.1712601795962 -104.9553043 39.709946 -104.9536478 39.709081
-2601 2567 2568 0.00945648555666562 0.00945648555666562 -104.9536478 39.709081 -104.9535373 39.7090785
-2603 2565 2569 0.0807956808253844 0.0807956808253844 -104.9525578 39.7090414 -104.9516163 39.7090994
-2604 2569 2570 0.076951583144574 0.076951583144574 -104.9516163 39.7090994 -104.950721 39.7091668
-2605 2570 2571 0.0476131935554626 0.0476131935554626 -104.950721 39.7091668 -104.9505579 39.7095762
-2607 2572 2568 0.0312593605711727 0.0312593605711727 -104.9535019 39.7093583 -104.9535373 39.7090785
-2609 2569 2573 0.0486149705677772 0.0486149705677772 -104.9516163 39.7090994 -104.9516136 39.7095366
-2610 2570 2574 0.0674260333743846 0.0674260333743846 -104.950721 39.7091668 -104.949965 39.7089952
-2612 2567 2575 0.0505261001159507 0.0505261001159507 -104.9536478 39.709081 -104.953694 39.708628
-2615 2577 2578 0.10424034664628 0.10424034664628 -105.0288186 39.7229124 -105.0300374 39.722919
-2616 2578 2579 0.103512640883379 0.103512640883379 -105.0300374 39.722919 -105.0312476 39.7229322
-2617 2579 1398 0.105102630546257 0.105102630546257 -105.0312476 39.7229322 -105.0324765 39.7229279
-2618 1398 2580 0.0531367598624707 0.0531367598624707 -105.0324765 39.7229279 -105.0330978 39.7229268
-2619 2580 2581 0.0517085263170068 0.0517085263170068 -105.0330978 39.7229268 -105.0337024 39.7229256
-2620 2581 2582 0.0723991341895349 0.0723991341895349 -105.0337024 39.7229256 -105.0345489 39.7229308
-2621 2582 2583 0.0331676268132885 0.0331676268132885 -105.0345489 39.7229308 -105.0349367 39.7229332
-2622 2583 2584 0.0138525911142565 0.0138525911142565 -105.0349367 39.7229332 -105.0350986 39.7229295
-2623 2584 2585 0.037416228202987 0.037416228202987 -105.0350986 39.7229295 -105.035536 39.7229363
-2624 2585 2586 0.00994286750486891 0.00994286750486891 -105.035536 39.7229363 -105.0356522 39.7229391
-2625 2586 2587 0.040254104254433 0.040254104254433 -105.0356522 39.7229391 -105.0361228 39.7229454
-2629 2590 2591 0.00335375549834044 0.00335375549834044 -105.0372775 39.7229371 -105.0373167 39.7229363
-2630 2591 2592 0.0463774647105825 0.0463774647105825 -105.0373167 39.7229363 -105.0378588 39.7229259
-2631 2592 2593 0.00549997045042586 0.00549997045042586 -105.0378588 39.7229259 -105.0379231 39.7229267
-2632 2593 2594 0.0383542392436341 0.0383542392436341 -105.0379231 39.7229267 -105.0383715 39.7229322
-2634 2595 2596 0.0344869484873441 0.0344869484873441 -105.038507 39.7229353 -105.0389102 39.7229396
-2635 2596 2597 0.0176627396467139 0.0176627396467139 -105.0389102 39.7229396 -105.0391167 39.7229419
-2636 2597 2598 0.0280292044334563 0.0280292044334563 -105.0391167 39.7229419 -105.0394444 39.7229454
-2637 2598 2599 0.0242403080070769 0.0242403080070769 -105.0394444 39.7229454 -105.0397277 39.722952
-2638 2599 1569 0.0218944112855232 0.0218944112855232 -105.0397277 39.722952 -105.0399837 39.7229516
-2639 1569 2600 0.0286200762867591 0.0286200762867591 -105.0399837 39.7229516 -105.0403183 39.7229556
-2640 2600 1094 0.018347539243156 0.018347539243156 -105.0403183 39.7229556 -105.0405328 39.7229583
-2642 1110 2601 0.0142742072830798 0.0142742072830798 -105.0409158 39.7229588 -105.0410827 39.7229583
-2643 2601 2602 0.0369383896439539 0.0369383896439539 -105.0410827 39.7229583 -105.0415146 39.7229572
-2644 2602 2603 0.00917687822572764 0.00917687822572764 -105.0415146 39.7229572 -105.0416219 39.7229569
-2645 2603 2604 0.0430608643022986 0.0430608643022986 -105.0416219 39.7229569 -105.0421253 39.7229642
-2646 2604 2605 0.00238679099543715 0.00238679099543715 -105.0421253 39.7229642 -105.0421532 39.7229647
-2647 2605 2606 0.0472847267591164 0.0472847267591164 -105.0421532 39.7229647 -105.042706 39.7229718
-2648 2606 2607 0.0508445190476207 0.0508445190476207 -105.042706 39.7229718 -105.0433005 39.7229718
-2649 2607 2608 0.00234361810734104 0.00234361810734104 -105.0433005 39.7229718 -105.0433279 39.7229721
-2650 2608 2609 0.0517900277245267 0.0517900277245267 -105.0433279 39.7229721 -105.0439334 39.7229784
-2652 2610 2611 0.145180979465517 0.145180979465517 -104.9874808 39.7225308 -104.9891783 39.722537
-2674 2632 2634 0.599531015097949 0.599531015097949 -105.0450779 39.7221456 -105.0520873 39.7222126
-2675 2635 2181 0.0871692653780363 0.0871692653780363 -105.0131527 39.7220573 -105.0141719 39.7220614
-2676 2181 2638 0.0863959675292808 0.0863959675292808 -105.0141719 39.7220614 -105.015182 39.7220707
-2679 2640 2641 0.121944822987822 0.121944822987822 -104.9524652 39.7427196 -104.9524082 39.7438154
-2681 2642 2643 0.0194925006650245 0.0194925006650245 -104.9521739 39.7180386 -104.9521735 39.7182139
-2682 2643 2350 0.134347723988409 0.134347723988409 -104.9521735 39.7182139 -104.9521821 39.7194221
-2683 2350 2644 0.173564798460366 0.173564798460366 -104.9521821 39.7194221 -104.9521876 39.720983
-2684 2644 2645 0.174686152075606 0.174686152075606 -104.9521876 39.720983 -104.9522095 39.7225539
-2685 2645 2646 0.175389969986131 0.175389969986131 -104.9522095 39.7225539 -104.9522198 39.7241312
-2688 2648 747 0.0612580153194998 0.0612580153194998 -104.9519414 39.7758435 -104.9519449 39.7763944
-2689 747 1565 0.142756107755667 0.142756107755667 -104.9519449 39.7763944 -104.9519323 39.7776782
-2690 1565 2649 0.138016127389502 0.138016127389502 -104.9519323 39.7776782 -104.9519262 39.7789194
-2691 2649 2650 0.12023627946696 0.12023627946696 -104.9519262 39.7789194 -104.9519199 39.7800007
-2693 2651 694 0.200802439501944 0.200802439501944 -104.952446 39.7401771 -104.9524269 39.7419829
-2695 2652 2653 0.127019992895419 0.127019992895419 -104.951864 39.7807829 -104.9518556 39.7819252
-2696 2653 2654 0.201028199806741 0.201028199806741 -104.9518556 39.7819252 -104.9519157 39.7837325
-2697 2654 2655 0.134212276460076 0.134212276460076 -104.9519157 39.7837325 -104.9519157 39.7849395
-2698 2655 2656 0.140083368586782 0.140083368586782 -104.9519157 39.7849395 -104.9519157 39.7861993
-2699 2656 2657 0.13046105136647 0.13046105136647 -104.9519157 39.7861993 -104.9518997 39.7873725
-2702 2633 2659 0.199675824720705 0.199675824720705 -104.9517199 39.7273329 -104.9517329 39.7291286
-2704 2660 949 0.174693421852154 0.174693421852154 -104.9517031 39.7305282 -104.9517203 39.7320992
-2705 949 2661 0.165148304595761 0.165148304595761 -104.9517203 39.7320992 -104.9517288 39.7335844
-2706 2661 2662 0.173966950291824 0.173966950291824 -104.9517288 39.7335844 -104.9516945 39.7351487
-2707 2662 2663 0.184218102738583 0.184218102738583 -104.9516945 39.7351487 -104.9516859 39.7368054
-2708 2663 2664 0.172496811774092 0.172496811774092 -104.9516859 39.7368054 -104.9516835 39.7383567
-2710 2665 2666 0.394651095737645 0.394651095737645 -104.9523031 39.7873791 -104.9522001 39.7909274
-2711 2667 2668 0.201414903082426 0.201414903082426 -104.9517882 39.7383629 -104.9518287 39.740174
-17301 8745 4260 0.201420130125937 0.201420130125937 -104.9622978 39.6947699 -104.9623073 39.6965813
-2713 2669 2388 0.109456559825348 0.109456559825348 -104.9519288 39.7728936 -104.9519586 39.7738777
-2714 2388 2670 0.140828374595316 0.140828374595316 -104.9519586 39.7738777 -104.9519586 39.7751442
-2717 2672 2673 0.139177577172101 0.139177577172101 -104.9524477 39.7557162 -104.9524149 39.7569676
-2718 2673 2674 0.137352749762486 0.137352749762486 -104.9524149 39.7569676 -104.9524283 39.7582028
-2719 2674 2675 0.139830667816654 0.139830667816654 -104.9524283 39.7582028 -104.9524391 39.7594603
-2720 2675 2676 0.136669684605715 0.136669684605715 -104.9524391 39.7594603 -104.9524392 39.7606894
-2722 2677 2678 0.12447911414286 0.12447911414286 -104.9524392 39.7607246 -104.9524232 39.761844
-2750 2704 2705 0.0292446267270126 0.0292446267270126 -105.0229197 39.7608329 -105.022918 39.7610959
-2751 2705 2706 0.00658282845173238 0.00658282845173238 -105.022918 39.7610959 -105.0229176 39.7611551
-2752 2706 2707 0.0151449443945988 0.0151449443945988 -105.0229176 39.7611551 -105.0229167 39.7612913
-2753 2707 2708 0.0714770438658631 0.0714770438658631 -105.0229167 39.7612913 -105.0229124 39.7619341
-2754 2708 2709 0.00822853556213401 0.00822853556213401 -105.0229124 39.7619341 -105.0229119 39.7620081
-2756 2710 8 0.130042568169854 0.130042568169854 -105.0236301 39.7451745 -105.0236282 39.746344
-2757 8 2711 0.118166571537094 0.118166571537094 -105.0236282 39.746344 -105.0233999 39.7473921
-2759 2712 2713 0.102388493919056 0.102388493919056 -105.0228947 39.7692896 -105.0228923 39.7702104
-2760 2713 2416 0.103111259495513 0.103111259495513 -105.0228923 39.7702104 -105.0228899 39.7711377
-2761 2416 2714 0.100631617654013 0.100631617654013 -105.0228899 39.7711377 -105.0228875 39.7720427
-2764 2716 2717 0.200655449563851 0.200655449563851 -105.0239484 39.7766282 -105.0239636 39.7784327
-2765 2717 2718 0.200753725915124 0.200753725915124 -105.0239636 39.7784327 -105.0239521 39.7802381
-2766 2718 1440 0.196942260224429 0.196942260224429 -105.0239521 39.7802381 -105.0239358 39.7820092
-2767 1440 2719 0.00947384243402213 0.00947384243402213 -105.0239358 39.7820092 -105.0239361 39.7820944
-2768 2719 2720 0.190389032049707 0.190389032049707 -105.0239361 39.7820944 -105.0239436 39.7838066
-2770 2723 2724 0.133138466543617 0.133138466543617 -105.0235985 39.7620059 -105.0236117 39.7632032
-2771 2724 2725 0.135835722389097 0.135835722389097 -105.0236117 39.7632032 -105.0236117 39.7644248
-2772 2725 2726 0.133534041022806 0.133534041022806 -105.0236117 39.7644248 -105.0236131 39.7656257
-2773 2726 2727 0.134234713813183 0.134234713813183 -105.0236131 39.7656257 -105.0236104 39.7668329
-2774 2727 1681 0.134687505819062 0.134687505819062 -105.0236104 39.7668329 -105.0236278 39.7680441
-2775 1681 2728 0.137316317225174 0.137316317225174 -105.0236278 39.7680441 -105.0236198 39.769279
-2777 2729 2730 0.104120921025978 0.104120921025978 -105.0239366 39.7846851 -105.0239665 39.7856212
-2778 2730 2731 0.201486044854047 0.201486044854047 -105.0239665 39.7856212 -105.0239597 39.7874332
-2779 2731 2732 0.409054627036075 0.409054627036075 -105.0239597 39.7874332 -105.0239453 39.7911119
-2780 2733 2734 0.231399786377778 0.231399786377778 -104.9558149 39.7017594 -104.9558008 39.7038404
-2781 2734 2735 0.0901704059113055 0.0901704059113055 -104.9558008 39.7038404 -104.9558537 39.7046503
-2782 2735 2736 0.0825094909725568 0.0825094909725568 -104.9558537 39.7046503 -104.9563257 39.7052974
-2783 2737 2738 0.200363396709187 0.200363396709187 -104.9558324 39.6983924 -104.9558241 39.6965905
-2784 2738 2739 0.20121833925615 0.20121833925615 -104.9558241 39.6965905 -104.9558241 39.6947809
-2785 2739 2740 0.202399438971847 0.202399438971847 -104.9558241 39.6947809 -104.9558357 39.6929607
-2788 2742 2743 0.404396545451488 0.404396545451488 -104.9558447 39.6893365 -104.9558624 39.6856997
-2789 2744 1762 0.0647074290459755 0.0647074290459755 -104.9541587 39.6999377 -104.9546893 39.699523
-2790 1762 2372 0.0925216625359094 0.0925216625359094 -104.9546893 39.699523 -104.9555234 39.6989934
-2791 2372 2745 0.0223137340397398 0.0223137340397398 -104.9555234 39.6989934 -104.9556601 39.6988225
-2792 2745 2737 0.050045237249892 0.050045237249892 -104.9556601 39.6988225 -104.9558324 39.6983924
-2794 2746 2747 0.14840065064165 0.14840065064165 -105.001474 39.6998539 -105.0031992 39.6997152
-2796 2748 2749 0.200822547172327 0.200822547172327 -104.9326658 39.7346911 -104.9326365 39.736497
-2797 2749 2750 0.193145905748916 0.193145905748916 -104.9326365 39.736497 -104.9326406 39.738234
-2821 908 2770 0.128136612557408 0.128136612557408 -104.9331257 39.7644965 -104.9331507 39.7656487
-2824 2261 2772 0.10049786598023 0.10049786598023 -104.930525 39.7674191 -104.9293492 39.7674126
-2825 2772 2773 0.106378037300959 0.106378037300959 -104.9293492 39.7674126 -104.9281046 39.7674191
-2826 2773 2110 0.093897002068377 0.093897002068377 -104.9281046 39.7674191 -104.927006 39.7674191
-2827 2110 2774 0.107389868338328 0.107389868338328 -104.927006 39.7674191 -104.9257496 39.7674291
-2828 2774 2775 0.0994873393877801 0.0994873393877801 -104.9257496 39.7674291 -104.9245856 39.7674323
-2850 2776 2777 0.10879749556538 0.10879749556538 -104.9511832 39.7669218 -104.9499105 39.7669403
-2855 2804 866 0.20027757395038 0.20027757395038 -104.9452104 39.7669339 -104.9428673 39.7669141
-2829 2775 2778 1.00147658782101 1.00147658782101 -104.9245856 39.7674323 -104.9128683 39.7674541
-2830 2779 2780 0.0530172029480301 0.0530172029480301 -104.9733522 39.7669655 -104.9727319 39.7669657
-2832 2781 2782 0.107966324930259 0.107966324930259 -104.9721138 39.7669682 -104.9708506 39.7669659
-2833 2782 2783 0.103296913871679 0.103296913871679 -104.9708506 39.7669659 -104.9696421 39.7669558
-2834 2783 2784 0.105735267915707 0.105735267915707 -104.9696421 39.7669558 -104.968405 39.766956
-2835 2784 2785 0.104367827383757 0.104367827383757 -104.968405 39.766956 -104.9671839 39.7669548
-2836 2785 2786 0.106026097865505 0.106026097865505 -104.9671839 39.7669548 -104.9659434 39.7669568
-2837 2786 2787 0.104661406473263 0.104661406473263 -104.9659434 39.7669568 -104.9647189 39.7669496
-2838 2787 2788 0.109120444986171 0.109120444986171 -104.9647189 39.7669496 -104.9634422 39.7669465
-2842 2790 2791 0.105111335997404 0.105111335997404 -104.9609746 39.7669537 -104.9597448 39.7669537
-2843 2791 2792 0.100650542913524 0.100650542913524 -104.9597448 39.7669537 -104.9585673 39.7669414
-2844 2792 2793 0.105228706955749 0.105228706955749 -104.9585673 39.7669414 -104.9573362 39.7669311
-2845 2793 2794 0.119444969275907 0.119444969275907 -104.9573362 39.7669311 -104.9559387 39.766929
-2846 2794 2795 0.0942235633572651 0.0942235633572651 -104.9559387 39.766929 -104.9548363 39.7669249
-2847 2795 2084 0.102241906689643 0.102241906689643 -104.9548363 39.7669249 -104.9536401 39.7669187
-2848 2084 2796 0.105000278025472 0.105000278025472 -104.9536401 39.7669187 -104.9524116 39.7669187
-2849 2796 2776 0.104992294488636 0.104992294488636 -104.9524116 39.7669187 -104.9511832 39.7669218
-2851 2777 2799 0.102990536508203 0.102990536508203 -104.9499105 39.7669403 -104.9487061 39.7669692
-2852 2799 2802 0.104419262818378 0.104419262818378 -104.9487061 39.7669692 -104.9474844 39.7669713
-3832 3274 3648 0.198107670536066 0.198107670536066 -104.9593216 39.7038566 -104.9576929 39.7025901
-2853 2802 2803 0.106343009363166 0.106343009363166 -104.9474844 39.7669713 -104.9462404 39.7669537
-2854 2803 2804 0.0880619154851023 0.0880619154851023 -104.9462404 39.7669537 -104.9452104 39.7669339
-2856 866 2805 0.0997722055250997 0.0997722055250997 -104.9428673 39.7669141 -104.9417 39.7669075
-2857 2805 2806 0.0898296288997372 0.0898296288997372 -104.9417 39.7669075 -104.9406492 39.7668916
-2858 2806 2807 0.0154103032800591 0.0154103032800591 -104.9406492 39.7668916 -104.9404689 39.7668916
-2860 1345 2808 0.0745089191630195 0.0745089191630195 -105.0025087 39.7490201 -105.0032328 39.7486472
-2862 2809 2810 0.0999390470653334 0.0999390470653334 -104.9921793 39.7165966 -104.9921278 39.7174945
-2863 2810 2811 0.098203415750831 0.098203415750831 -104.9921278 39.7174945 -104.9921559 39.7183774
-2864 2811 2812 0.105704456533214 0.105704456533214 -104.9921559 39.7183774 -104.9921473 39.719328
-2865 2812 1841 0.178602078382633 0.178602078382633 -104.9921473 39.719328 -104.9921535 39.7209342
-2867 2813 2814 0.147059691176011 0.147059691176011 -104.9913173 39.7752191 -104.9912923 39.7765415
-2869 2815 2816 0.0358929050784097 0.0358929050784097 -104.9919925 39.7317917 -104.9916596 39.7319883
-2871 2817 2818 0.202436914455554 0.202436914455554 -104.9993302 39.7801544 -105.0016991 39.7801675
-2872 2818 721 0.208959052889522 0.208959052889522 -105.0016991 39.7801675 -105.0041443 39.7801832
-2873 721 2819 0.195578398743409 0.195578398743409 -105.0041443 39.7801832 -105.0064329 39.7801666
-2874 2819 2820 0.132104447079437 0.132104447079437 -105.0064329 39.7801666 -105.0079788 39.7801613
-2875 2820 2499 0.133495572380704 0.133495572380704 -105.0079788 39.7801613 -105.0095409 39.7801481
-2877 2821 2823 0.131028201505055 0.131028201505055 -105.0111319 39.7801807 -105.0126652 39.7801745
-2878 2823 2154 0.134224367729179 0.134224367729179 -105.0126652 39.7801745 -105.0142359 39.7801811
-2879 2154 2824 0.137197819412826 0.137197819412826 -105.0142359 39.7801811 -105.0158414 39.7801872
-2881 2825 2828 0.100509300133652 0.100509300133652 -105.0169815 39.7801864 -105.0181574 39.7801666
-2882 2828 2829 0.098379052864586 0.098379052864586 -105.0181574 39.7801666 -105.0193075 39.7802062
-2883 2829 1264 0.0995905743898471 0.0995905743898471 -105.0193075 39.7802062 -105.0204729 39.7802128
-2884 1264 2830 0.0991885382845514 0.0991885382845514 -105.0204729 39.7802128 -105.0216335 39.780226
-2885 2830 2831 0.0990153060665791 0.0990153060665791 -105.0216335 39.780226 -105.0227922 39.780226
-2886 2831 2718 0.0991269733313679 0.0991269733313679 -105.0227922 39.780226 -105.0239521 39.7802381
-2887 2718 2832 0.100500652429342 0.100500652429342 -105.0239521 39.7802381 -105.0251279 39.7802579
-2888 2832 2833 0.0102715407543069 0.0102715407543069 -105.0251279 39.7802579 -105.0252481 39.7802579
-2889 2833 2834 0.0960953974534679 0.0960953974534679 -105.0252481 39.7802579 -105.0263725 39.7802711
-2890 2834 2835 0.0326867749280955 0.0326867749280955 -105.0263725 39.7802711 -105.0267549 39.7802781
-2891 2835 2836 0.134256786764763 0.134256786764763 -105.0267549 39.7802781 -105.028326 39.7802812
-2892 2836 2837 0.113988792124523 0.113988792124523 -105.028326 39.7802812 -105.0296598 39.7802952
-2893 2837 2838 0.0204082374430359 0.0204082374430359 -105.0296598 39.7802952 -105.0298986 39.7802977
-2895 2839 2840 0.113685974247049 0.113685974247049 -105.0301265 39.7802941 -105.0314566 39.7802731
-2896 2840 2841 0.132754406259035 0.132754406259035 -105.0314566 39.7802731 -105.0330101 39.7802665
-2897 2841 2842 0.136852657742897 0.136852657742897 -105.0330101 39.7802665 -105.0346113 39.7802434
-2899 1793 2843 0.0809702263007341 0.0809702263007341 -104.929534 39.694587 -104.9295552 39.693859
-2900 2843 2844 0.0969425296921621 0.0969425296921621 -104.9295552 39.693859 -104.9295466 39.6929872
-2901 2844 2845 0.413436446480526 0.413436446480526 -104.9295466 39.6929872 -104.9305098 39.6893437
-2903 2263 2847 0.179984264422638 0.179984264422638 -104.9304775 39.7162632 -104.9304918 39.7146446
-2904 2847 2848 0.174004040987329 0.174004040987329 -104.9304918 39.7146446 -104.930509 39.7130798
-2905 2848 2849 0.194108624427032 0.194108624427032 -104.930509 39.7130798 -104.9304782 39.7113343
-2907 2850 1276 0.172413086756907 0.172413086756907 -105.0186375 39.7505191 -105.0205429 39.7510272
-2909 2853 785 0.245123885631009 0.245123885631009 -105.0050712 39.7039722 -105.0042571 39.7018586
-2911 2854 2855 0.0854841952170884 0.0854841952170884 -105.0038253 39.7010848 -105.0034418 39.7003749
-2912 2855 2747 0.0762350203886263 0.0762350203886263 -105.0034418 39.7003749 -105.0031992 39.6997152
-2913 2747 2856 0.0859704175448271 0.0859704175448271 -105.0031992 39.6997152 -105.0031649 39.6989425
-2914 2856 2857 0.100779098585589 0.100779098585589 -105.0031649 39.6989425 -105.0035425 39.698084
-2915 2857 2858 0.0905252463288938 0.0905252463288938 -105.0035425 39.698084 -105.0043357 39.6975452
-2917 2859 2860 0.0227727209766704 0.0227727209766704 -105.0050773 39.6967285 -105.0050773 39.6965237
-2918 361 1735 0.198105222979832 0.198105222979832 -105.0051297 39.6894631 -105.0051254 39.6912447
-2919 1735 2861 0.0382126884100893 0.0382126884100893 -105.0051254 39.6912447 -105.0051426 39.6915881
-2920 148 2862 0.0438716250050412 0.0438716250050412 -105.0050494 39.6930773 -105.0050709 39.6926831
-2921 1003 2863 0.0520715649387988 0.0520715649387988 -104.987571 39.7855779 -104.9869616 39.7855787
-2922 2863 2864 0.0982728809134093 0.0982728809134093 -104.9869616 39.7855787 -104.9858115 39.7855801
-2923 2864 2865 0.0994946507259965 0.0994946507259965 -104.9858115 39.7855801 -104.9846471 39.7855801
-3895 3698 3699 0.204838159377623 0.204838159377623 -104.9617334 39.6911372 -104.9617151 39.6892951
-2924 2865 2869 0.090463384362138 0.090463384362138 -104.9846471 39.7855801 -104.9835884 39.7855828
-2925 2869 2870 0.0564720828613131 0.0564720828613131 -104.9835884 39.7855828 -104.9829275 39.7855836
-2926 2870 2871 0.0608640771597173 0.0608640771597173 -104.9829275 39.7855836 -104.9822152 39.7855845
-2927 2872 2873 0.044011799999607 0.044011799999607 -104.9546451 39.7849527 -104.9541301 39.7849461
-2928 2873 2088 0.0931496819660856 0.0931496819660856 -104.9541301 39.7849461 -104.95304 39.7849395
-2929 2088 2655 0.0960691148224413 0.0960691148224413 -104.95304 39.7849395 -104.9519157 39.7849395
-2930 2655 2874 0.0937706080748846 0.0937706080748846 -104.9519157 39.7849395 -104.9508183 39.7849387
-2931 2874 2875 0.0828791997484075 0.0828791997484075 -104.9508183 39.7849387 -104.9498484 39.7849453
-2932 2875 2876 0.093218621711434 0.093218621711434 -104.9498484 39.7849453 -104.9487583 39.7849124
-2933 2876 2877 0.0704167162147941 0.0704167162147941 -104.9487583 39.7849124 -104.9479343 39.7849217
-2935 2878 2879 0.0887403720940643 0.0887403720940643 -104.9645156 39.7852099 -104.9634771 39.7852033
-2936 2879 2880 0.0909098673154509 0.0909098673154509 -104.9634771 39.7852033 -104.962414 39.7852355
-2937 2880 2881 0.0882058988614067 0.0882058988614067 -104.962414 39.7852355 -104.961384 39.7851828
-2938 2881 2882 0.181777411929199 0.181777411929199 -104.961384 39.7851828 -104.9592584 39.7852492
-2940 2883 2884 0.115661337881372 0.115661337881372 -104.9733956 39.7437918 -104.9733802 39.7448319
-2941 2884 2885 0.14826485880128 0.14826485880128 -104.9733802 39.7448319 -104.9724659 39.7459649
-2942 2885 2886 0.112251623213379 0.112251623213379 -104.9724659 39.7459649 -104.9722001 39.7469535
-2943 2886 2887 0.119994591224275 0.119994591224275 -104.9722001 39.7469535 -104.9729638 39.7478589
-2944 2887 2888 0.178622958928809 0.178622958928809 -104.9729638 39.7478589 -104.9733549 39.7494369
-2945 2888 2889 0.00412533177852682 0.00412533177852682 -104.9733549 39.7494369 -104.9733549 39.749474
-2946 2889 2890 0.00481474032387871 0.00481474032387871 -104.9733549 39.749474 -104.9733549 39.7495173
-2947 2890 2893 0.135290874001292 0.135290874001292 -104.9733549 39.7495173 -104.9733544 39.750734
-2948 2893 2894 0.137892832771659 0.137892832771659 -104.9733544 39.750734 -104.973354 39.7519741
-2949 2894 817 0.140150092060959 0.140150092060959 -104.973354 39.7519741 -104.9733535 39.7532345
-2950 817 2895 0.143808402694827 0.143808402694827 -104.9733535 39.7532345 -104.9733531 39.7545278
-2951 2895 2896 0.0697081016101773 0.0697081016101773 -104.9733531 39.7545278 -104.9733529 39.7551547
-2952 2896 2897 0.0168682725384664 0.0168682725384664 -104.9733529 39.7551547 -104.9733528 39.7553064
-2954 2898 2899 0.139071498957887 0.139071498957887 -104.9733526 39.7557317 -104.9733522 39.7569824
-2956 2900 2901 0.139727551358826 0.139727551358826 -104.9733518 39.7582331 -104.9733513 39.7594897
-2957 2901 2902 0.00293554606295758 0.00293554606295758 -104.9733513 39.7594897 -104.9733513 39.7595161
-2958 2902 2903 0.102721876435386 0.102721876435386 -104.9733513 39.7595161 -104.973351 39.7604399
-2959 2903 2904 0.0305452475451112 0.0305452475451112 -104.973351 39.7604399 -104.9733509 39.7607146
-2960 2904 2905 0.00503713742922791 0.00503713742922791 -104.9733509 39.7607146 -104.9733508 39.7607599
-2961 2905 2906 0.0458567885450819 0.0458567885450819 -104.9733508 39.7607599 -104.9733507 39.7611723
-2962 2906 2907 0.0981295261146626 0.0981295261146626 -104.9733507 39.7611723 -104.9733504 39.7620548
-2963 2907 628 0.0369055971430695 0.0369055971430695 -104.9733504 39.7620548 -104.9733503 39.7623867
-2964 628 1143 0.0958611496898419 0.0958611496898419 -104.9733503 39.7623867 -104.97335 39.7632488
-2966 2908 2909 0.0463126901024473 0.0463126901024473 -104.9733498 39.7638075 -104.9733496 39.764224
-2967 2909 872 0.0318684671228471 0.0318684671228471 -104.9733496 39.764224 -104.9733495 39.7645106
-2968 872 2910 0.0711758745978235 0.0711758745978235 -104.9733495 39.7645106 -104.9733493 39.7651507
-2969 2910 2911 0.067495322638235 0.067495322638235 -104.9733493 39.7651507 -104.9733491 39.7657577
-2970 2911 2912 0.033747661319103 0.033747661319103 -104.9733491 39.7657577 -104.973349 39.7660612
-2971 2912 2913 0.0475024757380027 0.0475024757380027 -104.973349 39.7660612 -104.9733488 39.7664884
-2973 2914 2915 0.202578999998173 0.202578999998173 -104.9738264 39.7183118 -104.9733801 39.7165226
-2975 2916 2917 0.184685764171195 0.184685764171195 -104.9731398 39.7165226 -104.9732076 39.7181827
-2976 2917 2918 0.00737265767013589 0.00737265767013589 -104.9732076 39.7181827 -104.9732171 39.7182486
-2978 2919 2920 0.110148820147866 0.110148820147866 -104.9593201 39.7073167 -104.9580338 39.7072718
-2979 2920 584 0.039258317875865 0.039258317875865 -104.9580338 39.7072718 -104.957575 39.70728
-2980 584 2921 0.228363185041033 0.228363185041033 -104.957575 39.70728 -104.954906 39.707321
-2982 2922 1341 0.198962442111046 0.198962442111046 -105.021523 39.7147919 -105.0215144 39.7130026
-2983 1341 2923 0.207039061514662 0.207039061514662 -105.0215144 39.7130026 -105.0215316 39.7111407
-2984 2923 2924 0.201175175238786 0.201175175238786 -105.0215316 39.7111407 -105.0215401 39.7093315
-2985 2924 2925 0.203376851393596 0.203376851393596 -105.0215401 39.7093315 -105.0215487 39.7075025
-2986 2925 2926 0.201920207523594 0.201920207523594 -105.0215487 39.7075025 -105.0215401 39.7056866
-2987 2926 2927 0.200452413161122 0.200452413161122 -105.0215401 39.7056866 -105.0215316 39.7038839
-2988 2927 776 0.201931296094781 0.201931296094781 -105.0215316 39.7038839 -105.0215401 39.7020679
-2990 2928 2930 0.209285084837907 0.209285084837907 -105.0215401 39.7004038 -105.021523 39.6985217
-2991 2930 2931 0.197960209647655 0.197960209647655 -105.021523 39.6985217 -105.0215654 39.6967417
-2992 2931 171 0.402036974102358 0.402036974102358 -105.0215654 39.6967417 -105.0215573 39.6931261
-2994 2932 2933 0.200508042098485 0.200508042098485 -105.0213817 39.6895011 -105.0213903 39.6876979
-2995 170 1728 0.257039245710078 0.257039245710078 -105.0213045 39.6931204 -105.0213131 39.6908088
-2996 1728 2934 0.145411467525923 0.145411467525923 -105.0213131 39.6908088 -105.0213045 39.6895011
-2999 2935 2936 0.0880513532781809 0.0880513532781809 -105.0169377 39.6883193 -105.0178175 39.6879086
-3025 2957 2958 0.01030947748559 0.01030947748559 -105.0187431 39.7584203 -105.0188637 39.7584212
-3000 2936 209 0.228338005511316 0.228338005511316 -105.0178175 39.6879086 -105.0203575 39.6872791
-3002 2937 2938 0.107611509993879 0.107611509993879 -104.9251387 39.7047572 -104.9247744 39.7038309
-3005 2940 2941 0.175855452328419 0.175855452328419 -104.9257898 39.7162499 -104.9257841 39.7146684
-3006 2941 2942 0.174909636552997 0.174909636552997 -104.9257841 39.7146684 -104.925785 39.7130954
-3007 2942 2943 0.192197232795451 0.192197232795451 -104.925785 39.7130954 -104.9258054 39.711367
-3009 2944 546 0.0293283601170504 0.0293283601170504 -104.9250716 39.7048418 -104.9250834 39.7051054
-3010 546 2945 0.155746660532693 0.155746660532693 -104.9250834 39.7051054 -104.9251435 39.7065053
-3012 1475 2946 0.311303155924368 0.311303155924368 -104.9241194 39.6955841 -104.9254353 39.692974
-3013 2946 2947 0.184883982264712 0.184883982264712 -104.9254353 39.692974 -104.9259674 39.6913625
-3014 2947 2948 0.224685205653341 0.224685205653341 -104.9259674 39.6913625 -104.9264824 39.6893811
-3016 2949 2950 0.0888669853746646 0.0888669853746646 -104.9258215 39.6893679 -104.9258215 39.6885687
-3017 2950 2951 0.114577615588497 0.114577615588497 -104.9258215 39.6885687 -104.9258129 39.6875383
-3018 1225 2952 0.114132076273042 0.114132076273042 -105.0118006 39.7583774 -105.013135 39.7584124
-3019 2952 2161 0.115442153745618 0.115442153745618 -105.013135 39.7584124 -105.0144855 39.7584103
-3020 2161 2953 0.105428749590907 0.105428749590907 -105.0144855 39.7584103 -105.0157188 39.7584009
-3022 2954 2955 0.0114463280554541 0.0114463280554541 -105.0158347 39.7584 -105.0159686 39.7584009
-3023 2955 639 0.18619297340356 0.18619297340356 -105.0159686 39.7584009 -105.0181467 39.7584155
-3024 639 2957 0.0509835810434449 0.0509835810434449 -105.0181467 39.7584155 -105.0187431 39.7584203
-3026 2958 2959 0.0353738821651235 0.0353738821651235 -105.0188637 39.7584212 -105.0192775 39.7584245
-3027 2959 2960 0.00284670794487764 0.00284670794487764 -105.0192775 39.7584245 -105.0193108 39.7584248
-3028 2960 1288 0.104793015683124 0.104793015683124 -105.0193108 39.7584248 -105.0205366 39.7584382
-3029 1288 2961 0.051496901479137 0.051496901479137 -105.0205366 39.7584382 -105.021139 39.7584434
-3030 2961 2962 0.00960868888037157 0.00960868888037157 -105.021139 39.7584434 -105.0212514 39.7584444
-3031 2962 2963 0.0208687174266634 0.0208687174266634 -105.0212514 39.7584444 -105.0214955 39.7584475
-3032 2963 2964 0.0498882614596582 0.0498882614596582 -105.0214955 39.7584475 -105.0220789 39.7584598
-3033 2964 2965 0.123304259264834 0.123304259264834 -105.0220789 39.7584598 -105.0235213 39.7584714
-3035 2966 2967 0.00908677871596767 0.00908677871596767 -105.0236238 39.7584722 -105.0237301 39.7584727
-3036 2967 2968 0.115854235202851 0.115854235202851 -105.0237301 39.7584727 -105.0250854 39.758479
-3037 2968 2969 0.00700956571064615 0.00700956571064615 -105.0250854 39.758479 -105.0251674 39.7584794
-3038 2969 2970 0.00940368205913038 0.00940368205913038 -105.0251674 39.7584794 -105.0252774 39.7584805
-3039 2970 2971 0.0666840110355875 0.0666840110355875 -105.0252774 39.7584805 -105.0260575 39.7584783
-3040 2971 2972 0.0679662165544488 0.0679662165544488 -105.0260575 39.7584783 -105.0268526 39.7584761
-3041 2972 2973 0.0630976433471776 0.0630976433471776 -105.0268526 39.7584761 -105.0275907 39.7584695
-3042 2973 2974 0.0491600079555241 0.0491600079555241 -105.0275907 39.7584695 -105.0281658 39.7584695
-3044 2975 2976 0.0997731403964804 0.0997731403964804 -105.0299157 39.7585034 -105.0310829 39.7585034
-3045 2976 2977 0.100715566829797 0.100715566829797 -105.0310829 39.7585034 -105.032261 39.7585166
-3046 2977 2978 0.0996876914159973 0.0996876914159973 -105.032261 39.7585166 -105.0334272 39.7585157
-3047 2978 2979 0.10126058971698 0.10126058971698 -105.0334272 39.7585157 -105.0346118 39.758517
-3048 2979 2980 0.103346225532192 0.103346225532192 -105.0346118 39.758517 -105.0358208 39.7585166
-3049 2980 2981 0.0983114005972926 0.0983114005972926 -105.0358208 39.7585166 -105.0369709 39.7585166
-3050 2981 2982 0.09874223460454 0.09874223460454 -105.0369709 39.7585166 -105.0381258 39.7584985
-3051 2982 2983 0.0510749251490339 0.0510749251490339 -105.0381258 39.7584985 -105.038723 39.7584839
-3053 2984 2985 0.0505192363533637 0.0505192363533637 -105.039304 39.7584901 -105.039895 39.758491
-3054 2985 1120 0.0491942863881514 0.0491942863881514 -105.039895 39.758491 -105.0404705 39.7584919
-3055 1120 2986 0.0517085444587275 0.0517085444587275 -105.0404705 39.7584919 -105.0410754 39.7584887
-3056 2986 2987 0.0504766444323722 0.0504766444323722 -105.0410754 39.7584887 -105.0416657 39.7585006
-3057 2987 2988 0.0508471211122413 0.0508471211122413 -105.0416657 39.7585006 -105.0422605 39.7584955
-3058 2988 2989 0.0482147566017866 0.0482147566017866 -105.0422605 39.7584955 -105.0428245 39.7584902
-3059 2989 2990 0.0513143127772338 0.0513143127772338 -105.0428245 39.7584902 -105.0434248 39.7584889
-3060 2990 2991 0.0501432318630803 0.0501432318630803 -105.0434248 39.7584889 -105.0440114 39.7584876
-3061 2991 2992 0.788648410502006 0.788648410502006 -105.0440114 39.7584876 -105.0532374 39.7584692
-3062 2993 2994 0.01555628530979 0.01555628530979 -104.9953923 39.7608178 -104.995393 39.7606779
-3063 2994 2995 0.10729267423115 0.10729267423115 -104.995393 39.7606779 -104.9953975 39.759713
-13562 2999 2165 0.242533262128423 0.242533262128423 -105.0136746 39.7263954 -105.0140457 39.7285578
-3067 2998 3000 0.0998948824480635 0.0998948824480635 -104.9969577 39.7401458 -104.9961353 39.7407839
-3068 3000 3001 0.145910673725247 0.145910673725247 -104.9961353 39.7407839 -104.99492 39.7417051
-3069 3001 3002 0.147264770664277 0.147264770664277 -104.99492 39.7417051 -104.9937158 39.742652
-3070 3002 3003 0.145706831644125 0.145706831644125 -104.9937158 39.742652 -104.9925155 39.7435822
-3071 3003 3004 0.146381189481243 0.146381189481243 -104.9925155 39.7435822 -104.9912932 39.744504
-3073 3006 3007 0.143637545441942 0.143637545441942 -104.9900832 39.7454633 -104.9889069 39.7463856
-3074 3007 3008 0.14139337588105 0.14139337588105 -104.9889069 39.7463856 -104.9876315 39.7471951
-3075 3008 3009 0.0340034784472366 0.0340034784472366 -104.9876315 39.7471951 -104.9873284 39.7473931
-3076 3009 3010 0.117637494210671 0.117637494210671 -104.9873284 39.7473931 -104.9864574 39.7482121
-3077 3010 3011 0.1483412167568 0.1483412167568 -104.9864574 39.7482121 -104.9852889 39.7491983
-3078 3011 3012 0.146200597856632 0.146200597856632 -104.9852889 39.7491983 -104.9840976 39.7501416
-3079 3012 3013 0.146656153847153 0.146656153847153 -104.9840976 39.7501416 -104.9828772 39.7510685
-3080 3013 3014 0.219897120549826 0.219897120549826 -104.9828772 39.7510685 -104.9810635 39.7524708
-3081 3014 2686 0.0729664723843293 0.0729664723843293 -104.9810635 39.7524708 -104.9804627 39.7529369
-3082 2686 3015 0.146055074464899 0.146055074464899 -104.9804627 39.7529369 -104.9792691 39.7538767
-3083 3015 3016 0.115984680072215 0.115984680072215 -104.9792691 39.7538767 -104.9783073 39.7546124
-3084 3016 3017 0.0102106792826024 0.0102106792826024 -104.9783073 39.7546124 -104.9782228 39.7546773
-3085 3017 3018 0.0188093561808277 0.0188093561808277 -104.9782228 39.7546773 -104.9780672 39.7547969
-3087 3019 3020 0.14624208166964 0.14624208166964 -104.9768843 39.7557372 -104.9756854 39.7566754
-3088 3020 3021 0.149932974568378 0.149932974568378 -104.9756854 39.7566754 -104.974418 39.7576075
-3089 3021 2900 0.114654486829615 0.114654486829615 -104.974418 39.7576075 -104.9733518 39.7582331
-3091 3022 3023 0.0936947193853168 0.0936947193853168 -104.9472629 39.738954 -104.9461672 39.7389438
-3093 3024 3025 0.0922829109447797 0.0922829109447797 -104.9499105 39.7600818 -104.9488309 39.7600818
-3095 3026 3027 0.10419715248802 0.10419715248802 -104.9684276 39.7595114 -104.9672089 39.7594916
-3096 3027 3028 0.108587123231645 0.108587123231645 -104.9672089 39.7594916 -104.9659386 39.7594982
-3097 3028 3029 0.103455866634876 0.103455866634876 -104.9659386 39.7594982 -104.9647283 39.7594982
-3099 3030 3031 0.0828114972096423 0.0828114972096423 -104.9487906 39.7590818 -104.9478224 39.759056
-3100 3031 3032 0.0151385207198175 0.0151385207198175 -104.9478224 39.759056 -104.9476453 39.759056
-3102 3035 3036 0.131928682141755 0.131928682141755 -104.9468584 39.7590562 -104.9453153 39.7590334
-3103 3036 3037 0.0286281442546585 0.0286281442546585 -104.9453153 39.7590334 -104.9449805 39.75904
-3104 3037 3038 0.0830678583996061 0.0830678583996061 -104.9449805 39.75904 -104.9440088 39.7590496
-3105 3038 3039 0.0820487800074757 0.0820487800074757 -104.9440088 39.7590496 -104.9430494 39.7590268
-3107 3040 3041 0.0592379768525999 0.0592379768525999 -104.9641307 39.7594199 -104.9634377 39.7594223
-3108 3041 1041 0.101867076922678 0.101867076922678 -104.9634377 39.7594223 -104.962246 39.7594264
-3109 1041 3042 0.108431988254042 0.108431988254042 -104.962246 39.7594264 -104.9609775 39.7594308
-3110 3042 3043 0.103209130509255 0.103209130509255 -104.9609775 39.7594308 -104.9597701 39.759435
-3111 3043 3044 0.103439867243447 0.103439867243447 -104.9597701 39.759435 -104.95856 39.7594391
-3113 3045 3046 0.1080426022678 0.1080426022678 -104.9573829 39.7594492 -104.956119 39.7594399
-3114 3046 3047 0.106399445317148 0.106399445317148 -104.956119 39.7594399 -104.9548745 39.7594585
-3115 3047 2078 0.104328053424176 0.104328053424176 -104.9548745 39.7594585 -104.953654 39.7594605
-3116 2078 2675 0.103849131822114 0.103849131822114 -104.953654 39.7594605 -104.9524391 39.7594603
-3117 2675 3048 0.106371798877004 0.106371798877004 -104.9524391 39.7594603 -104.9511947 39.7594645
-3118 3048 3049 0.1089909908922 0.1089909908922 -104.9511947 39.7594645 -104.9499198 39.7594797
-3120 2995 3050 0.0829711714500804 0.0829711714500804 -104.9953975 39.759713 -104.9963681 39.7597212
-3123 3051 3052 0.0304368475861105 0.0304368475861105 -104.9721269 39.7594785 -104.971771 39.759487
-19556 10441 10561 0.00875730102663828 0.00875730102663828 -104.9883481 39.7091456 -104.9884504 39.7091486
-3124 3053 3054 0.10469695146486 0.10469695146486 -104.9708822 39.7594411 -104.9696608 39.7595114
-3125 3054 3026 0.105413327506124 0.105413327506124 -104.9696608 39.7595114 -104.9684276 39.7595114
-3127 3055 3056 0.0146859459125862 0.0146859459125862 -104.9406663 39.7601421 -104.9404947 39.7601356
-3128 3056 3057 0.0899179636493607 0.0899179636493607 -104.9404947 39.7601356 -104.9394429 39.7601485
-3129 3057 3058 0.0968918459632465 0.0968918459632465 -104.9394429 39.7601485 -104.9383099 39.7601749
-3130 3058 3059 0.0931803123592361 0.0931803123592361 -104.9383099 39.7601749 -104.9372198 39.7601749
-3131 3059 3060 0.0924628769882567 0.0924628769882567 -104.9372198 39.7601749 -104.9361384 39.7601551
-3132 3060 2004 0.0909779529022995 0.0909779529022995 -104.9361384 39.7601551 -104.9350741 39.7601485
-3134 3061 2758 0.0983285272926963 0.0983285272926963 -104.9339669 39.7601749 -104.9328167 39.7601881
-3135 2758 3062 0.094848132376921 0.094848132376921 -104.9328167 39.7601881 -104.9317072 39.760176
-3137 2284 3063 0.10273020958756 0.10273020958756 -104.9305594 39.7601749 -104.9293577 39.7601881
-3138 3063 3064 0.09684156688728 0.09684156688728 -104.9293577 39.7601881 -104.9282248 39.7601815
-3139 3064 2139 0.105654196010103 0.105654196010103 -104.9282248 39.7601815 -104.9269888 39.7601749
-3141 3065 3066 0.101995188106893 0.101995188106893 -104.9257357 39.7601617 -104.9245426 39.7601749
-4424 4133 950 0.17542265784203 0.17542265784203 -104.9505787 39.7305216 -104.9505701 39.7320992
-3142 3066 3067 1.00083609181461 1.00083609181461 -104.9245426 39.7601749 -104.912834 39.7601834
-3143 3068 3069 0.10392860568863 0.10392860568863 -104.9461768 39.7130666 -104.9449618 39.7130707
-3144 3069 3070 0.10232907709913 0.10232907709913 -104.9449618 39.7130707 -104.9437655 39.7130666
-3145 3070 3071 0.103927869583062 0.103927869583062 -104.9437655 39.7130666 -104.9425505 39.7130687
-3146 3071 3072 0.102097379803977 0.102097379803977 -104.9425505 39.7130687 -104.9413569 39.7130666
-3147 3072 3073 0.0487909895079958 0.0487909895079958 -104.9413569 39.7130666 -104.9407865 39.7130688
-3149 1294 3074 0.105333551259412 0.105333551259412 -104.9875234 39.7129763 -104.9862922 39.7129578
-3150 3074 3075 0.0524798747272766 0.0524798747272766 -104.9862922 39.7129578 -104.9856788 39.712948
-3151 3075 3076 0.0475858963921332 0.0475858963921332 -104.9856788 39.712948 -104.9851226 39.7129392
-3152 3076 3077 0.00514079080382434 0.00514079080382434 -104.9851226 39.7129392 -104.9850625 39.7129392
-3154 3078 3079 0.0117186508515134 0.0117186508515134 -104.9839851 39.7129498 -104.9838483 39.7129555
-3155 3079 3080 0.0860074021370197 0.0860074021370197 -104.9838483 39.7129555 -104.9828429 39.7129448
-3156 3080 3081 0.0112654570741388 0.0112654570741388 -104.9828429 39.7129448 -104.9827112 39.7129442
-3157 3081 3082 0.0998426271509478 0.0998426271509478 -104.9827112 39.7129442 -104.9815443 39.7129225
-3159 3083 3084 0.0978722553449722 0.0978722553449722 -104.9803943 39.7129167 -104.9792501 39.712914
-3161 3085 3086 0.0498003240048994 0.0498003240048994 -104.9786762 39.712912 -104.978094 39.71291
-3162 3086 3087 0.0499820755044021 0.0499820755044021 -104.978094 39.71291 -104.9775097 39.7129054
-3163 3087 1765 0.0500932715547668 0.0500932715547668 -104.9775097 39.7129054 -104.9769241 39.7129008
-3164 1765 3089 0.0453737460403596 0.0453737460403596 -104.9769241 39.7129008 -104.9763937 39.7128949
-3165 3089 3090 0.0566344564433548 0.0566344564433548 -104.9763937 39.7128949 -104.9757316 39.7128962
-3166 3090 3091 0.0479788729039099 0.0479788729039099 -104.9757316 39.7128962 -104.9751708 39.7128876
-3167 3091 1517 0.0504584819239423 0.0504584819239423 -104.9751708 39.7128876 -104.9745809 39.7128876
-3168 1517 3092 0.0513918113913408 0.0513918113913408 -104.9745809 39.7128876 -104.9739802 39.7128965
-3169 3092 3093 0.0524695902697227 0.0524695902697227 -104.9739802 39.7128965 -104.9733669 39.7129055
-3170 3093 1084 0.0829756278031258 0.0829756278031258 -104.9733669 39.7129055 -104.972397 39.7129187
-3171 1084 3094 0.018362425266723 0.018362425266723 -104.972397 39.7129187 -104.9721825 39.7129121
-3172 3094 3095 0.100037197959638 0.100037197959638 -104.9721825 39.7129121 -104.971013 39.7129167
-3173 3095 3096 0.0986501993185581 0.0986501993185581 -104.971013 39.7129167 -104.9698598 39.7129284
-3174 3096 3097 0.100130714805898 0.100130714805898 -104.9698598 39.7129284 -104.9686892 39.7129319
-3175 3097 2046 0.103528392648025 0.103528392648025 -104.9686892 39.7129319 -104.9674789 39.7129253
-3176 2046 3098 0.0976518708062817 0.0976518708062817 -104.9674789 39.7129253 -104.9663374 39.7129121
-3177 3098 3099 0.0995509890492463 0.0995509890492463 -104.9663374 39.7129121 -104.9652044 39.7127074
-3179 1954 3100 0.060604506910361 0.060604506910361 -104.9384863 39.7130525 -104.9377781 39.7130688
-3182 3102 3103 0.0990114382918269 0.0990114382918269 -104.935134 39.713087 -104.9339765 39.713093
-3183 3103 3104 0.100593787088956 0.100593787088956 -104.9339765 39.713093 -104.9328006 39.7130798
-3184 3104 3105 0.0983789631442794 0.0983789631442794 -104.9328006 39.7130798 -104.9316505 39.7130864
-3185 3105 2848 0.0976433646550276 0.0976433646550276 -104.9316505 39.7130864 -104.930509 39.7130798
-3186 2848 3106 0.102064870879311 0.102064870879311 -104.930509 39.7130798 -104.9293159 39.713093
-3187 3106 3107 0.10100271733246 0.10100271733246 -104.9293159 39.713093 -104.9281351 39.7130901
-3188 3107 3108 0.0995828832367363 0.0995828832367363 -104.9281351 39.7130901 -104.9269709 39.7130932
-3189 3108 2942 0.101438732689929 0.101438732689929 -104.9269709 39.7130932 -104.925785 39.7130954
-3190 2942 3109 0.100378814460195 0.100378814460195 -104.925785 39.7130954 -104.9246115 39.7130913
-3191 3109 3110 1.25206634961555 1.25206634961555 -104.9246115 39.7130913 -104.9101331 39.7147489
-3192 3111 3112 0.015422388825789 0.015422388825789 -104.9593153 39.7129376 -104.959135 39.7129374
-3193 3112 3113 0.11412427509118 0.11412427509118 -104.959135 39.7129374 -104.9578008 39.7129346
-3194 3113 3114 0.468645573431598 0.468645573431598 -104.9578008 39.7129346 -104.9523224 39.712881
-3196 2023 3115 0.177146580591063 0.177146580591063 -104.9350998 39.7162443 -104.9351095 39.7146512
-3197 3115 3102 0.173943728587952 0.173943728587952 -104.9351095 39.7146512 -104.935134 39.713087
-3198 3102 3116 0.193451028525805 0.193451028525805 -104.935134 39.713087 -104.9350959 39.7113475
-3200 3117 1806 0.211443534426126 0.211443534426126 -104.935335 39.696587 -104.935235 39.694687
-3201 1806 3118 0.193022911848757 0.193022911848757 -104.935235 39.694687 -104.9350589 39.6929564
-3203 3119 3120 0.0940041909856305 0.0940041909856305 -104.9350503 39.6919459 -104.9350503 39.6911005
-3204 3120 3121 0.197561396619787 0.197561396619787 -104.9350503 39.6911005 -104.9350417 39.6893238
-3206 3122 3123 0.200799900699528 0.200799900699528 -104.9348207 39.6893133 -104.9348357 39.6875075
-3207 3124 3125 0.200863237154928 0.200863237154928 -104.9654024 39.718348 -104.9653769 39.7201543
-3208 3125 3126 0.201874389323119 0.201874389323119 -104.9653769 39.7201543 -104.9653769 39.7219698
-3210 3127 3128 0.0750470474178356 0.0750470474178356 -104.9663652 39.7296534 -104.9658779 39.7290921
-3211 3128 3131 0.0761135403806392 0.0761135403806392 -104.9658779 39.7290921 -104.9654579 39.7296956
-3213 3029 3132 0.132611387982682 0.132611387982682 -104.9647283 39.7594982 -104.9647249 39.7606908
-3214 3132 3133 0.00539409864485362 0.00539409864485362 -104.9647249 39.7606908 -104.9647236 39.7607393
-3215 3133 3134 0.139160450695908 0.139160450695908 -104.9647236 39.7607393 -104.9647236 39.7619908
-3216 3134 1160 0.139291641031025 0.139291641031025 -104.9647236 39.7619908 -104.9646785 39.763243
-3217 1160 879 0.139609262878975 0.139609262878975 -104.9646785 39.763243 -104.9647163 39.7644982
-3218 879 3135 0.138493325710101 0.138493325710101 -104.9647163 39.7644982 -104.9647176 39.7657437
-3219 3135 2787 0.134090008076189 0.134090008076189 -104.9647176 39.7657437 -104.9647189 39.7669496
-3220 2787 3136 0.1321642245327 0.1321642245327 -104.9647189 39.7669496 -104.9647008 39.7681381
-3221 3136 3137 0.21408080552497 0.21408080552497 -104.9647008 39.7681381 -104.9647229 39.7700633
-3222 3137 3138 0.144895915790921 0.144895915790921 -104.9647229 39.7700633 -104.9646947 39.7713662
-3223 3138 3139 0.169628584853264 0.169628584853264 -104.9646947 39.7713662 -104.9647005 39.7728917
-3226 3141 3142 0.202888440515448 0.202888440515448 -104.9645304 39.7819277 -104.9645414 39.7837523
-3227 3142 2878 0.162092717607055 0.162092717607055 -104.9645414 39.7837523 -104.9645156 39.7852099
-3251 3162 2365 0.110303719018863 0.110303719018863 -104.9814669 39.7183289 -104.98145 39.7193208
-3254 3164 3165 0.240177393696762 0.240177393696762 -105.0017005 39.7407804 -105.0030875 39.7426587
-3255 3165 3166 0.102768151984011 0.102768151984011 -105.0030875 39.7426587 -105.0037031 39.7434525
-3256 3166 3167 0.0509818546092244 0.0509818546092244 -105.0037031 39.7434525 -105.00401 39.7438456
-3258 3168 3169 0.0591373244934598 0.0591373244934598 -105.0012883 39.7488943 -105.0010939 39.7483839
-3259 3169 3170 0.0530870196657507 0.0530870196657507 -105.0010939 39.7483839 -105.0006969 39.7480168
-3261 3171 3172 0.201914360897617 0.201914360897617 -104.9534926 39.6965864 -104.9535117 39.6947706
-3262 3172 3173 0.203130900823478 0.203130900823478 -104.9535117 39.6947706 -104.953511 39.6929438
-3263 3173 3174 0.201562825315852 0.201562825315852 -104.953511 39.6929438 -104.9535355 39.6911312
-3264 3174 3175 0.19958273918251 0.19958273918251 -104.9535355 39.6911312 -104.9535015 39.6893365
-3265 3175 3177 0.402921101557674 0.402921101557674 -104.9535015 39.6893365 -104.9535278 39.685713
-3266 3178 3179 0.0905536808669309 0.0905536808669309 -104.9535191 39.7038314 -104.9535963 39.7030192
-3267 3179 3180 0.0577627490058349 0.0577627490058349 -104.9535963 39.7030192 -104.9540885 39.7026636
-3268 3180 3181 0.0505235668696686 0.0505235668696686 -104.9540885 39.7026636 -104.9546249 39.7024735
-3269 3181 3182 0.065160532538722 0.065160532538722 -104.9546249 39.7024735 -104.9552273 39.7021149
-3270 3182 3183 0.00793078546182679 0.00793078546182679 -104.9552273 39.7021149 -104.955269 39.7020512
-3271 3183 3184 0.0531842364372946 0.0531842364372946 -104.955269 39.7020512 -104.9555361 39.7016193
-3273 2386 3186 0.0378622155960126 0.0378622155960126 -104.9468949 39.7115125 -104.9464561 39.7114678
-3274 3186 3187 0.0069150542380481 0.0069150542380481 -104.9464561 39.7114678 -104.946376 39.7114762
-3275 3187 3188 0.0174713630038869 0.0174713630038869 -104.946376 39.7114762 -104.9461736 39.7114973
-3277 3189 3190 0.10095397068423 0.10095397068423 -104.9875502 39.7111482 -104.98637 39.7111462
-3278 3190 3191 0.102948552858793 0.102948552858793 -104.98637 39.7111462 -104.9851665 39.7111408
-3279 3191 3192 0.099117357243018 0.099117357243018 -104.9851665 39.7111408 -104.9840078 39.7111342
-3280 3192 3193 0.10499121023248 0.10499121023248 -104.9840078 39.7111342 -104.9827804 39.7111342
-3282 3194 3195 0.0985672231580753 0.0985672231580753 -104.9815359 39.7111143 -104.9803836 39.7111141
-3283 3195 3196 0.0975023503923766 0.0975023503923766 -104.9803836 39.7111141 -104.9792438 39.7111058
-16511 8899 8896 0.0458243741253751 0.0458243741253751 -105.0050563 39.7433465 -105.0048016 39.7429839
-3284 3196 3197 0.0505627463090716 0.0505627463090716 -104.9792438 39.7111058 -104.9786527 39.7111042
-3285 3197 3198 0.0500221717072617 0.0500221717072617 -104.9786527 39.7111042 -104.9780683 39.7110879
-3286 3198 3199 0.046867135973938 0.046867135973938 -104.9780683 39.7110879 -104.9775204 39.7110879
-3287 3199 1768 0.0529832159562647 0.0529832159562647 -104.9775204 39.7110879 -104.976901 39.7110879
-3288 1768 3200 0.0470467690925653 0.0470467690925653 -104.976901 39.7110879 -104.976351 39.7110879
-3289 3200 3201 0.0524586560775799 0.0524586560775799 -104.976351 39.7110879 -104.9757389 39.711117
-3290 3201 3202 0.0495946350720587 0.0495946350720587 -104.9757389 39.711117 -104.9751601 39.711091
-3291 3202 1518 0.052984641558086 0.052984641558086 -104.9751601 39.711091 -104.9745407 39.7110945
-3292 1518 3203 0.100125608990258 0.100125608990258 -104.9745407 39.7110945 -104.9733702 39.7110995
-3293 3203 1085 0.0831191573838339 0.0831191573838339 -104.9733702 39.7110995 -104.9723985 39.7110973
-3294 1085 3204 0.01719627237498 0.01719627237498 -104.9723985 39.7110973 -104.9721975 39.7110945
-3295 3204 3205 0.100278521536605 0.100278521536605 -104.9721975 39.7110945 -104.9710252 39.7110973
-3296 3205 3206 0.100159169300764 0.100159169300764 -104.9710252 39.7110973 -104.9698543 39.7111011
-3297 3206 3207 0.0980766730481921 0.0980766730481921 -104.9698543 39.7111011 -104.9687078 39.7111105
-3299 2047 3208 0.0998503328239714 0.0998503328239714 -104.9674682 39.7111011 -104.9663009 39.7111011
-3300 3208 3209 0.0991174142787685 0.0991174142787685 -104.9663009 39.7111011 -104.9651422 39.7110945
-3301 3209 3210 0.0465862087261248 0.0465862087261248 -104.9651422 39.7110945 -104.9645976 39.7110977
-3303 3211 3212 0.0483226107842397 0.0483226107842397 -104.9640093 39.7111011 -104.9634444 39.7110979
-3304 3212 3213 0.0508033572812722 0.0508033572812722 -104.9634444 39.7110979 -104.9628505 39.7110945
-3305 3213 3214 0.0520095145740976 0.0520095145740976 -104.9628505 39.7110945 -104.9622425 39.711098
-3307 3215 3216 0.047636983079693 0.047636983079693 -104.9616918 39.7111011 -104.9611349 39.7111011
-3308 3216 3217 0.00228390635402469 0.00228390635402469 -104.9611349 39.7111011 -104.9611082 39.7111011
-3309 3217 3218 0.0492156902021281 0.0492156902021281 -104.9611082 39.7111011 -104.9605331 39.7111143
-3310 3218 3219 0.105720878983862 0.105720878983862 -104.9605331 39.7111143 -104.9592972 39.7111077
-3312 3220 3221 0.135734479783406 0.135734479783406 -105.0064274 39.771733 -105.0080156 39.7717323
-3313 3221 2519 0.14595602798476 0.14595602798476 -105.0080156 39.7717323 -105.0097234 39.7717314
-3314 2519 3222 0.126165217374209 0.126165217374209 -105.0097234 39.7717314 -105.0111996 39.7717239
-3315 3222 1229 0.098841689459618 0.098841689459618 -105.0111996 39.7717239 -105.0123561 39.7717298
-3316 1229 3223 0.098924974953348 0.098924974953348 -105.0123561 39.7717298 -105.0135136 39.7717296
-3317 3223 2174 0.100839404349716 0.100839404349716 -105.0135136 39.7717296 -105.0146935 39.7717289
-3318 2174 3224 0.101432888438354 0.101432888438354 -105.0146935 39.7717289 -105.0158803 39.771721
-3319 3224 3225 0.137343472225008 0.137343472225008 -105.0158803 39.771721 -105.0174873 39.7717281
-3321 3226 379 0.0754564811292303 0.0754564811292303 -105.0189401 39.7717271 -105.019823 39.7717267
-3322 379 63 0.0417835231628563 0.0417835231628563 -105.019823 39.7717267 -105.0203119 39.7717265
-3323 63 1255 0.0152981335887719 0.0152981335887719 -105.0203119 39.7717265 -105.0204909 39.7717263
-3326 3228 3229 0.0836292502069327 0.0836292502069327 -105.0315008 39.7718744 -105.0324789 39.7718967
-3327 3229 3230 0.0485562677029858 0.0485562677029858 -105.0324789 39.7718967 -105.0330468 39.7719096
-3330 3232 3233 0.105369806952797 0.105369806952797 -104.993638 39.7717733 -104.9948707 39.7717558
-3331 3233 3234 0.0244901910381055 0.0244901910381055 -104.9948707 39.7717558 -104.9951572 39.7717601
-3332 3235 3236 0.101967463967826 0.101967463967826 -104.9982618 39.771756 -104.9994549 39.771756
-3333 3236 3237 0.10049747789636 0.10049747789636 -104.9994549 39.771756 -105.0006308 39.771756
-3334 3237 3238 0.0983034665163014 0.0983034665163014 -105.0006308 39.771756 -105.0017809 39.7717428
-3335 3238 3239 0.103439327677052 0.103439327677052 -105.0017809 39.7717428 -105.0029911 39.771756
-3336 3239 715 0.100109252929192 0.100109252929192 -105.0029911 39.771756 -105.0041615 39.7717924
-3337 715 3240 0.10857516210103 0.10857516210103 -105.0041615 39.7717924 -105.0054318 39.7718056
-3338 3240 3241 0.0836693243428755 0.0836693243428755 -105.0054318 39.7718056 -105.0064102 39.7718319
-3340 1256 2714 0.204938708369458 0.204938708369458 -105.0204902 39.7720858 -105.0228875 39.7720427
-3341 2714 3242 0.194775016549959 0.194775016549959 -105.0228875 39.7720427 -105.0251665 39.7720519
-3343 3243 3244 0.104619278832535 0.104619278832535 -104.9874858 39.7038766 -104.9862629 39.7038708
-3344 3244 3245 0.0999091629456622 0.0999091629456622 -104.9862629 39.7038708 -104.9850951 39.7038613
-3345 3245 3246 0.0969207243261653 0.0969207243261653 -104.9850951 39.7038613 -104.9839622 39.7038547
-3346 3246 3247 0.100620613481727 0.100620613481727 -104.9839622 39.7038547 -104.9827863 39.7038745
-3347 3247 3248 0.051818780315465 0.051818780315465 -104.9827863 39.7038745 -104.9821867 39.7039406
-3348 3248 3249 0.0493068623564548 0.0493068623564548 -104.9821867 39.7039406 -104.9816104 39.7039471
-3349 3249 3250 0.102061915203609 0.102061915203609 -104.9816104 39.7039471 -104.9804174 39.7039537
-3350 3250 3251 0.0474417721331526 0.0474417721331526 -104.9804174 39.7039537 -104.9798629 39.70396
-3351 3251 3252 0.0496832213808208 0.0496832213808208 -104.9798629 39.70396 -104.9792822 39.7039665
-3352 3252 3253 0.00274646412019378 0.00274646412019378 -104.9792822 39.7039665 -104.9792501 39.7039669
-3353 3253 3254 0.0454267490135207 0.0454267490135207 -104.9792501 39.7039669 -104.9787191 39.7039689
-3354 3254 3255 0.00458544852460102 0.00458544852460102 -104.9787191 39.7039689 -104.9786655 39.7039691
-3355 3255 3256 0.0483268582508211 0.0483268582508211 -104.9786655 39.7039691 -104.9781006 39.7039712
-3357 3257 3258 0.0459440862493274 0.0459440862493274 -104.9302161 39.7037522 -104.9296823 39.7037068
-3358 3258 3259 0.236332489020417 0.236332489020417 -104.9296823 39.7037068 -104.9269572 39.7040556
-3360 3260 2735 0.173472989255867 0.173472989255867 -104.9578793 39.7047229 -104.9558537 39.7046503
-3362 594 2050 0.105283533842597 0.105283533842597 -104.9686935 39.7038655 -104.9674629 39.7038542
-3363 2050 3261 0.0509100007310826 0.0509100007310826 -104.9674629 39.7038542 -104.9668678 39.7038549
-3364 3261 3262 0.0467523465641757 0.0467523465641757 -104.9668678 39.7038549 -104.9663213 39.7038542
-3365 3262 3263 0.0481309278210478 0.0481309278210478 -104.9663213 39.7038542 -104.9657587 39.7038574
-3366 3263 3264 0.051732585346973 0.051732585346973 -104.9657587 39.7038574 -104.965154 39.7038608
-3367 3264 3265 0.0457622961694799 0.0457622961694799 -104.965154 39.7038608 -104.9646191 39.703865
-3368 3265 3266 0.0530171123380122 0.0530171123380122 -104.9646191 39.703865 -104.9639994 39.7038698
-3369 3266 3267 0.0451783444295864 0.0451783444295864 -104.9639994 39.7038698 -104.9634713 39.7038687
-3370 3267 3268 0.0542978455447466 0.0542978455447466 -104.9634713 39.7038687 -104.9628366 39.7038674
-3371 3268 3269 0.0466844058034087 0.0466844058034087 -104.9628366 39.7038674 -104.962291 39.7038591
-3372 3269 3270 0.050646295110284 0.050646295110284 -104.962291 39.7038591 -104.9616991 39.70385
-3373 3270 3271 0.0484988623690369 0.0484988623690369 -104.9616991 39.70385 -104.9611322 39.7038533
-3374 3271 3272 0.0498932625841468 0.0498932625841468 -104.9611322 39.7038533 -104.960549 39.7038566
-3375 3272 3273 0.0470944745658083 0.0470944745658083 -104.960549 39.7038566 -104.9599985 39.7038566
-3376 3273 3274 0.0579078107783869 0.0579078107783869 -104.9599985 39.7038566 -104.9593216 39.7038566
-3377 3274 3275 0.151893561253266 0.151893561253266 -104.9593216 39.7038566 -104.9575461 39.7038494
-3378 3275 3276 0.0516549077274405 0.0516549077274405 -104.9575461 39.7038494 -104.9569423 39.703847
-3379 3276 2734 0.0976564411094966 0.0976564411094966 -104.9569423 39.703847 -104.9558008 39.7038404
-3380 2734 3277 0.0486100790727351 0.0486100790727351 -104.9558008 39.7038404 -104.9552326 39.7038437
-3381 3277 3278 0.0497906140365211 0.0497906140365211 -104.9552326 39.7038437 -104.9546506 39.703847
-3382 3278 3279 0.0484124404037645 0.0484124404037645 -104.9546506 39.703847 -104.9540847 39.703845
-3383 3279 3280 0.00653599515433254 0.00653599515433254 -104.9540847 39.703845 -104.9540083 39.7038447
-3384 3280 3178 0.0418764820732136 0.0418764820732136 -104.9540083 39.7038447 -104.9535191 39.7038314
-3385 3178 3284 0.0979449587868123 0.0979449587868123 -104.9535191 39.7038314 -104.9523742 39.7038339
-3386 3284 3285 0.201022039935831 0.201022039935831 -104.9523742 39.7038339 -104.9500244 39.7038338
-3389 3287 2316 0.156303067302058 0.156303067302058 -104.9490802 39.7038404 -104.9472534 39.7038645
-20281 10719 10710 0.0549191742699874 0.0549191742699874 -105.0441026 39.7730223 -105.0441026 39.7735162
-3390 2316 3288 0.10952595107857 0.10952595107857 -104.9472534 39.7038645 -104.9459732 39.7038536
-3391 3288 3289 0.0403941356128906 0.0403941356128906 -104.9459732 39.7038536 -104.9455011 39.7038602
-3392 3289 3290 0.0912238346425634 0.0912238346425634 -104.9455011 39.7038602 -104.9444349 39.7038735
-3393 3290 3291 0.0816082032445177 0.0816082032445177 -104.9444349 39.7038735 -104.9434841 39.703814
-3394 3291 3292 0.0169509581328033 0.0169509581328033 -104.9434841 39.703814 -104.9432867 39.7038272
-3395 3292 3293 0.0433466637454668 0.0433466637454668 -104.9432867 39.7038272 -104.9427803 39.703814
-3396 3293 3294 0.0186582685984772 0.0186582685984772 -104.9427803 39.703814 -104.9425622 39.7038146
-3397 3294 3295 0.152140762364393 0.152140762364393 -104.9425622 39.7038146 -104.9407838 39.7038199
-3403 3299 1325 0.177116632986756 0.177116632986756 -105.0432684 39.7149673 -105.0432523 39.7133745
-3404 1325 1381 0.178046664647513 0.178046664647513 -105.0432523 39.7133745 -105.0432442 39.7117733
-3406 1057 3300 0.119136901138604 0.119136901138604 -105.043349 39.701089 -105.0433583 39.7021604
-3408 3301 1581 0.141640668502809 0.141640668502809 -105.0432038 39.6894869 -105.0432085 39.6882131
-3409 1581 3302 0.308989164663259 0.308989164663259 -105.0432085 39.6882131 -105.0432162 39.6854343
-3411 3304 3305 0.143837220516125 0.143837220516125 -104.9886307 39.7573647 -104.9874361 39.7582757
-3412 3305 3306 0.147698693465714 0.147698693465714 -104.9874361 39.7582757 -104.9862237 39.7592221
-3414 3307 3308 0.146426311775338 0.146426311775338 -104.985009 39.7601612 -104.983803 39.7610964
-3415 3308 3309 0.146463761248984 0.146463761248984 -104.983803 39.7610964 -104.9825927 39.7620288
-3416 3309 3310 0.146549783304075 0.146549783304075 -104.9825927 39.7620288 -104.9813837 39.7629633
-3417 3310 2029 0.145425360285073 0.145425360285073 -104.9813837 39.7629633 -104.9801901 39.7638953
-3418 2029 3311 0.146713513284486 0.146713513284486 -104.9801901 39.7638953 -104.9789777 39.7648293
-3419 3311 634 0.143866210964815 0.143866210964815 -104.9789777 39.7648293 -104.9777895 39.7657457
-3420 634 3312 0.147112545494359 0.147112545494359 -104.9777895 39.7657457 -104.9765745 39.7666828
-3421 3312 3313 0.145900102395242 0.145900102395242 -104.9765745 39.7666828 -104.9753728 39.7676147
-3422 3313 2321 0.147128656269274 0.147128656269274 -104.9753728 39.7676147 -104.9741575 39.7685518
-3424 3314 3315 0.0970240945457023 0.0970240945457023 -105.0159395 39.7426917 -105.0155552 39.7435127
-3425 3315 2190 0.185651929243496 0.185651929243496 -105.0155552 39.7435127 -105.0139689 39.7423726
-3427 737 1557 0.13315596414531 0.13315596414531 -104.960283 39.7764662 -104.9602842 39.7776637
-3429 3316 3317 0.0821429797668101 0.0821429797668101 -104.960267 39.7804939 -104.9602584 39.7812326
-3434 3321 3322 0.579886710164932 0.579886710164932 -104.957135 39.788086 -104.9570057 39.7933001
-3436 3323 3324 0.139196729808835 0.139196729808835 -104.9573156 39.7544732 -104.9573671 39.7557244
-3438 3325 3326 0.13668278082176 0.13668278082176 -104.95735 39.7569806 -104.9573414 39.7582098
-3439 3326 3045 0.137860640994287 0.137860640994287 -104.9573414 39.7582098 -104.9573829 39.7594492
-3440 3045 3327 0.13778919161955 0.13778919161955 -104.9573829 39.7594492 -104.9573341 39.7606878
-3441 3327 3328 0.00447003605120276 0.00447003605120276 -104.9573341 39.7606878 -104.9573341 39.760728
-3442 3328 3329 0.0233867925544547 0.0233867925544547 -104.9573341 39.760728 -104.9573301 39.7609383
-3443 3329 3330 0.116012449407873 0.116012449407873 -104.9573301 39.7609383 -104.9573395 39.7619816
-3444 3330 1166 0.139882774592672 0.139882774592672 -104.9573395 39.7619816 -104.957304 39.7632393
-3445 1166 886 0.137525679366119 0.137525679366119 -104.957304 39.7632393 -104.9573328 39.7644759
-3446 886 3332 0.139657446365043 0.139657446365043 -104.9573328 39.7644759 -104.95735 39.7657318
-3447 3332 2793 0.133361291612613 0.133361291612613 -104.95735 39.7657318 -104.9573362 39.7669311
-3448 2793 3333 0.132228102569741 0.132228102569741 -104.9573362 39.7669311 -104.9573212 39.7681202
-3450 3334 3335 0.0903059057199572 0.0903059057199572 -104.9574709 39.7328847 -104.9574452 39.7336966
-3451 3335 3336 0.154418186694308 0.154418186694308 -104.9574452 39.7336966 -104.9574365 39.7350853
-3452 3336 3337 0.192225493046604 0.192225493046604 -104.9574365 39.7350853 -104.9574002 39.7368138
-3453 3337 3338 0.174660133594583 0.174660133594583 -104.9574002 39.7368138 -104.9574371 39.7383843
-3454 3338 3339 0.202477883587996 0.202477883587996 -104.9574371 39.7383843 -104.9573922 39.7402049
-3455 3339 3340 0.0759856229646665 0.0759856229646665 -104.9573922 39.7402049 -104.9569483 39.7407969
-3456 3340 3341 0.00965813264254578 0.00965813264254578 -104.9569483 39.7407969 -104.9568365 39.7408093
-3458 3342 1191 0.166878049186437 0.166878049186437 -104.9578337 39.7256186 -104.9578631 39.7271192
-3459 1191 3343 0.0216063183857929 0.0216063183857929 -104.9578631 39.7271192 -104.9578657 39.7273135
-3460 3343 3344 0.200920604325059 0.200920604325059 -104.9578657 39.7273135 -104.9578774 39.7291204
-3462 2346 3345 0.174959253236807 0.174959253236807 -104.95708 39.7194068 -104.957017 39.7209795
-3463 3345 1535 0.0463919707335885 0.0463919707335885 -104.957017 39.7209795 -104.95706 39.7213954
-3465 3346 3347 0.27909963341584 0.27909963341584 -104.9571645 39.7728928 -104.9571698 39.7754028
-3466 3347 740 0.112084486383373 0.112084486383373 -104.9571698 39.7754028 -104.9571699 39.7764108
-3467 740 1560 0.139918597194563 0.139918597194563 -104.9571699 39.7764108 -104.9571611 39.7776691
-3468 1560 3348 0.140278682022104 0.140278682022104 -104.9571611 39.7776691 -104.9571942 39.7789304
-3469 3348 3349 0.121438604958881 0.121438604958881 -104.9571942 39.7789304 -104.9571502 39.780022
-3471 3350 3351 0.173966017570494 0.173966017570494 -104.9570341 39.7225614 -104.9570255 39.7241259
-3472 3351 3352 0.16543284170321 0.16543284170321 -104.9570255 39.7241259 -104.9570447 39.7256136
-3474 3353 3354 0.201189633952299 0.201189633952299 -104.9338095 39.725615 -104.9338255 39.7274243
-3477 3356 3357 0.174637614655306 0.174637614655306 -104.9339641 39.7162382 -104.9339472 39.7178087
-3479 2467 3359 0.203720276949683 0.203720276949683 -104.9339464 39.7474085 -104.9339447 39.7492406
-3480 3359 3360 0.200874146006411 0.200874146006411 -104.9339447 39.7492406 -104.93395 39.7510471
-3481 3360 795 0.199720493083652 0.199720493083652 -104.93395 39.7510471 -104.9339366 39.7528432
-3482 795 3361 0.203163577363555 0.203163577363555 -104.9339366 39.7528432 -104.9339125 39.7546702
-3484 3362 3363 0.203261629260278 0.203261629260278 -104.9338998 39.7564865 -104.9339411 39.7583142
-3485 3363 3061 0.206912153397241 0.206912153397241 -104.9339411 39.7583142 -104.9339669 39.7601749
-3486 3061 3364 0.186005329793712 0.186005329793712 -104.9339669 39.7601749 -104.9339093 39.7618471
-3488 3365 1140 0.135699508009882 0.135699508009882 -104.93438 39.7620028 -104.9343976 39.7632231
-3490 907 3366 0.12816779719188 0.12816779719188 -104.934389 39.7644899 -104.9343764 39.7656425
-3492 3367 1297 0.200952363448705 0.200952363448705 -104.993544 39.7147942 -104.993537 39.712987
-3494 3368 3369 0.101405416836813 0.101405416836813 -104.9939645 39.7165966 -104.994016 39.7156855
-3495 3369 3370 0.0983850243457341 0.0983850243457341 -104.994016 39.7156855 -104.9939989 39.7148008
-3497 3371 3372 0.0654246270475212 0.0654246270475212 -104.9267742 39.7019885 -104.9262421 39.7015659
-3498 3372 2939 0.0903071880553539 0.0903071880553539 -104.9262421 39.7015659 -104.92577 39.7008395
-3499 2939 3373 0.0855248234583031 0.0855248234583031 -104.92577 39.7008395 -104.9252722 39.7001725
-3500 3373 59 0.083918142781954 0.083918142781954 -104.9252722 39.7001725 -104.9247401 39.6995385
-3502 3374 3375 0.253631602277532 0.253631602277532 -104.9240963 39.6988121 -104.9216081 39.6975721
-3503 3376 3377 0.201161683466984 0.201161683466984 -105.0346426 39.7329669 -105.0345825 39.7347754
-3505 3378 623 0.0117822953093903 0.0117822953093903 -105.0345825 39.7364651 -105.0346068 39.7365694
-3506 623 3379 0.132533255410588 0.132533255410588 -105.0346068 39.7365694 -105.0346077 39.7377613
-3507 3379 3380 0.0779035335014782 0.0779035335014782 -105.0346077 39.7377613 -105.0346105 39.7384619
-3508 3380 3381 0.206545256567466 0.206545256567466 -105.0346105 39.7384619 -105.0346043 39.7403194
-20694 10906 10909 0.0421787313564029 0.0421787313564029 -105.0403806 39.7653734 -105.0401144 39.7656928
-3509 3381 3382 0.13283549460514 0.13283549460514 -105.0346043 39.7403194 -105.0345957 39.741514
-3510 3382 3383 0.135569425081515 0.135569425081515 -105.0345957 39.741514 -105.0346003 39.7427332
-3511 3383 3384 0.136156970349478 0.136156970349478 -105.0346003 39.7427332 -105.0345657 39.7439574
-3512 3384 3385 0.132775661568888 0.132775661568888 -105.0345657 39.7439574 -105.0345837 39.7451514
-3514 2584 3386 0.177011208890761 0.177011208890761 -105.0350986 39.7229295 -105.0350981 39.7245214
-3515 3386 3387 0.0885846426355864 0.0885846426355864 -105.0350981 39.7245214 -105.0351109 39.725318
-3518 3389 3390 0.176205550995696 0.176205550995696 -105.034904 39.7165547 -105.0349211 39.7181393
-3519 3390 3391 0.169210992899206 0.169210992899206 -105.0349211 39.7181393 -105.0349049 39.719661
-3520 3391 3392 0.0099077669914251 0.0099077669914251 -105.0349049 39.719661 -105.034904 39.7197501
-3521 3392 1849 0.175456016508954 0.175456016508954 -105.034904 39.7197501 -105.0349126 39.721328
-3522 1849 2583 0.178501996899051 0.178501996899051 -105.0349126 39.721328 -105.0349367 39.7229332
-3524 600 3393 0.2153977841733 0.2153977841733 -105.0351121 39.7257688 -105.0351232 39.7277059
-3526 3394 3395 0.118920951518272 0.118920951518272 -105.0351404 39.7282472 -105.0351232 39.7293166
-3527 3395 3396 0.142989811640976 0.142989811640976 -105.0351232 39.7293166 -105.0351361 39.7306025
-3528 3396 3397 0.262177718796624 0.262177718796624 -105.0351361 39.7306025 -105.0351232 39.7329603
-3530 14 3398 0.133564321671034 0.133564321671034 -105.0345689 39.7463686 -105.0345861 39.7475697
-3531 3398 3399 0.133563180552006 0.133563180552006 -105.0345861 39.7475697 -105.0346118 39.7487707
-3532 3399 3400 0.135746766447532 0.135746766447532 -105.0346118 39.7487707 -105.0346118 39.7499915
-3533 3400 3401 0.133513247236878 0.133513247236878 -105.0346118 39.7499915 -105.0346192 39.7511922
-3534 3401 3402 0.0998328095575455 0.0998328095575455 -105.0346192 39.7511922 -105.0346118 39.75209
-3535 3402 3403 0.0352154332682272 0.0352154332682272 -105.0346118 39.75209 -105.0346118 39.7524067
-3536 3403 2405 0.0667725534497617 0.0667725534497617 -105.0346118 39.7524067 -105.0346118 39.7530072
-3537 2405 3404 0.0682403264820305 0.0682403264820305 -105.0346118 39.7530072 -105.0346118 39.7536209
-3538 3404 3405 0.033013773721009 0.033013773721009 -105.0346118 39.7536209 -105.0346118 39.7539178
-3539 3405 3409 0.0499933274562477 0.0499933274562477 -105.0346118 39.7539178 -105.0346129 39.7543674
-3540 3409 3410 0.0543299225353451 0.0543299225353451 -105.0346129 39.7543674 -105.034614 39.754856
-3541 3410 1767 0.0526619512572465 0.0526619512572465 -105.034614 39.754856 -105.0346147 39.7553296
-3542 1767 3411 0.150417295173728 0.150417295173728 -105.0346147 39.7553296 -105.034602 39.7566823
-3543 3411 2979 0.204011051874628 0.204011051874628 -105.034602 39.7566823 -105.0346118 39.758517
-3544 2979 656 0.0515792906446319 0.0515792906446319 -105.0346118 39.758517 -105.0346018 39.7589808
-3546 1887 591 0.0491592770696459 0.0491592770696459 -105.0346033 39.7594473 -105.0346033 39.7598894
-3547 591 3412 0.0481379602388448 0.0481379602388448 -105.0346033 39.7598894 -105.034608 39.7603223
-3548 3412 3413 0.102266489872996 0.102266489872996 -105.034608 39.7603223 -105.0346118 39.761242
-3549 3413 1888 0.0486842125387167 0.0486842125387167 -105.0346118 39.761242 -105.0346054 39.7616798
-3550 1888 3414 0.0510943840977224 0.0510943840977224 -105.0346054 39.7616798 -105.0346033 39.7621393
-3551 3414 3415 0.00919583632372114 0.00919583632372114 -105.0346033 39.7621393 -105.0346035 39.762222
-3552 3415 3416 0.0353489043837471 0.0353489043837471 -105.0346035 39.762222 -105.0346041 39.7625399
-17077 3568 8074 0.699339640197117 0.699339640197117 -104.9616097 39.7544552 -104.9615934 39.7607445
-3553 3416 3417 0.050093361124945 0.050093361124945 -105.0346041 39.7625399 -105.0346033 39.7629904
-3554 3417 3418 0.0498820440925909 0.0498820440925909 -105.0346033 39.7629904 -105.0346033 39.763439
-3555 3418 3419 0.0498984530952944 0.0498984530952944 -105.0346033 39.763439 -105.0346118 39.7638877
-3556 3419 3420 0.00880663819045291 0.00880663819045291 -105.0346118 39.7638877 -105.0346118 39.7639669
-3557 3420 3421 0.0410819827191675 0.0410819827191675 -105.0346118 39.7639669 -105.0346204 39.7643363
-3558 3421 3422 0.0491592770696459 0.0491592770696459 -105.0346204 39.7643363 -105.0346204 39.7647784
-3559 3422 3423 0.0205377029518591 0.0205377029518591 -105.0346204 39.7647784 -105.0346204 39.7649631
-3560 3423 3424 0.02549703249469 0.02549703249469 -105.0346204 39.7649631 -105.0346199 39.7651924
-3562 3425 3425 0.000442266584977921 0.000442266584977921 -105.0346312 39.7657434 -105.034629 39.7657398
-3563 3425 3426 0.0816315051221547 0.0816315051221547 -105.034629 39.7657398 -105.0346376 39.7664739
-3565 3427 1664 0.0502947464100412 0.0502947464100412 -105.0346332 39.7669387 -105.034629 39.767391
-3567 1683 3428 0.020460323508623 0.020460323508623 -105.0346312 39.7676742 -105.0346296 39.7678582
-3568 3428 3429 0.0515955226949506 0.0515955226949506 -105.0346296 39.7678582 -105.0346257 39.7683222
-3569 3429 3430 0.133978887334031 0.133978887334031 -105.0346257 39.7683222 -105.0346278 39.7695271
-3570 3430 2427 0.13659869274501 0.13659869274501 -105.0346278 39.7695271 -105.0346118 39.7707555
-3571 2427 2428 0.063830021941611 0.063830021941611 -105.0346118 39.7707555 -105.0346033 39.7713295
-3572 2428 3231 0.0696897365044123 0.0696897365044123 -105.0346033 39.7713295 -105.0345947 39.7719562
-3573 3231 3431 0.132766742414187 0.132766742414187 -105.0345947 39.7719562 -105.0345947 39.7731502
-3574 3431 3432 0.106360486773292 0.106360486773292 -105.0345947 39.7731502 -105.0346033 39.7741067
-3575 3432 3433 0.0970117847237812 0.0970117847237812 -105.0346033 39.7741067 -105.0345914 39.7749791
-3576 3433 3434 0.1971376871667 0.1971376871667 -105.0345914 39.7749791 -105.0345947 39.776752
-19819 5606 10648 0.0581167522759965 0.0581167522759965 -105.0015885 39.7300077 -105.0009089 39.7300077
-3577 3434 3435 0.133491532527273 0.133491532527273 -105.0345947 39.776752 -105.0346033 39.7779525
-3582 2842 3438 0.0923852774741301 0.0923852774741301 -105.0346113 39.7802434 -105.0345914 39.7810741
-3584 1421 317 0.102691144252484 0.102691144252484 -105.0345828 39.7821162 -105.0345742 39.7830397
-3585 317 513 0.0772222660891488 0.0772222660891488 -105.0345742 39.7830397 -105.0345487 39.7837339
-3586 513 3439 0.0612593596381532 0.0612593596381532 -105.0345487 39.7837339 -105.0345546 39.7842848
-3587 3439 3440 0.148872782400453 0.148872782400453 -105.0345546 39.7842848 -105.0345689 39.7856236
-3588 3440 2540 0.197920167618774 0.197920167618774 -105.0345689 39.7856236 -105.0345536 39.7874035
-3589 2540 3441 0.415850973508269 0.415850973508269 -105.0345536 39.7874035 -105.034619 39.791143
-3590 3442 699 0.201963508155417 0.201963508155417 -104.9465187 39.7401565 -104.9465157 39.7419728
-3591 699 3443 0.200352700158165 0.200352700158165 -104.9465157 39.7419728 -104.9465253 39.7437746
-3593 3444 3445 0.0185806742090463 0.0185806742090463 -104.9462569 39.7617553 -104.9462568 39.7619224
-20212 5504 7078 0.147322900830237 0.147322900830237 -104.9808533 39.7606816 -104.9796366 39.76162
-20213 7078 2034 0.146401533431931 0.146401533431931 -104.9796366 39.76162 -104.9784268 39.762552
-20214 2034 5323 0.145002332578884 0.145002332578884 -104.9784268 39.762552 -104.9772313 39.7634772
-20215 5323 632 0.146882687938452 0.146882687938452 -104.9772313 39.7634772 -104.976027 39.7644195
-4488 138 4177 0.203369481928684 0.203369481928684 -104.9910005 39.6930189 -104.9910305 39.6911901
-4489 4177 1741 0.0411375852444616 0.0411375852444616 -104.9910305 39.6911901 -104.9910219 39.6908202
-4490 1741 4178 0.159371364409943 0.159371364409943 -104.9910219 39.6908202 -104.9910391 39.689387
-4492 4179 4180 0.471114595558298 0.471114595558298 -104.9951206 39.7057312 -104.9922008 39.7021389
-4493 4180 4181 0.219268705400549 0.219268705400549 -104.9922008 39.7021389 -104.9925156 39.7001819
-4495 4182 4183 0.0994268923770179 0.0994268923770179 -104.9923595 39.714781 -104.992337 39.713887
-4496 4183 1296 0.100075433980265 0.100075433980265 -104.992337 39.713887 -104.992337 39.712987
-4497 1296 1369 0.0964029757899856 0.0964029757899856 -104.992337 39.712987 -104.9923595 39.7121202
-5794 5116 3795 0.199284062960758 0.199284062960758 -104.9706146 39.727291 -104.9706199 39.7290832
-18557 318 10316 0.0220547227626022 0.0220547227626022 -105.0344342 39.7830352 -105.0343233 39.7828561
-4499 4184 4185 0.301634217878433 0.301634217878433 -104.9923849 39.7111672 -104.9924234 39.7084547
-4501 2809 3744 0.0998445716696615 0.0998445716696615 -104.9921793 39.7165966 -104.9921878 39.7156987
-4502 3744 4186 0.10131230641957 0.10131230641957 -104.9921878 39.7156987 -104.9921793 39.7147876
-4504 4187 4188 0.132156563746112 0.132156563746112 -105.008021 39.7620353 -105.0080281 39.7632238
-4505 4188 4189 0.132402395077485 0.132402395077485 -105.0080281 39.7632238 -105.0080378 39.7644145
-4506 4189 4190 0.137552756241722 0.137552756241722 -105.0080378 39.7644145 -105.0080808 39.7656511
-4507 4190 4191 0.13379771872617 0.13379771872617 -105.0080808 39.7656511 -105.0080637 39.7668543
-4508 4191 1671 0.132214775902914 0.132214775902914 -105.0080637 39.7668543 -105.0080403 39.7680432
-4509 1671 4192 0.137147368544834 0.137147368544834 -105.0080403 39.7680432 -105.0080117 39.7692764
-4510 4192 2452 0.138219895716206 0.138219895716206 -105.0080117 39.7692764 -105.0080496 39.7705191
-4511 2452 3221 0.134932977312539 0.134932977312539 -105.0080496 39.7705191 -105.0080156 39.7717323
-4512 3221 4193 0.133628518122145 0.133628518122145 -105.0080156 39.7717323 -105.0080475 39.7729338
-4515 4195 554 0.154583323244677 0.154583323244677 -105.0077585 39.7352875 -105.0077561 39.7366777
-4516 554 4196 0.0224725093154139 0.0224725093154139 -105.0077561 39.7366777 -105.0077558 39.7368798
-4517 4083 4197 0.170590775930264 0.170590775930264 -105.0082472 39.7838436 -105.0081572 39.7853762
-4518 4197 3764 0.0397497113610314 0.0397497113610314 -105.0081572 39.7853762 -105.0079576 39.7856991
-4520 2820 1411 0.135923564862653 0.135923564862653 -105.0079788 39.7801613 -105.0079981 39.7813836
-4521 1411 1351 0.125050095081124 0.125050095081124 -105.0079981 39.7813836 -105.007995 39.7825082
-4523 4198 4199 0.454148647656551 0.454148647656551 -105.007437 39.721279 -105.0075072 39.7253629
-4525 4200 4201 0.133477223659273 0.133477223659273 -105.007629 39.7729337 -105.0075947 39.7741338
-4526 4201 4202 0.132617384077965 0.132617384077965 -105.0075947 39.7741338 -105.0076269 39.7753262
-4527 4202 4203 0.134214836424706 0.134214836424706 -105.0076269 39.7753262 -105.0076366 39.7765332
-4531 4206 1274 0.135021280032386 0.135021280032386 -105.0189551 39.7494633 -105.0204817 39.7497745
-4533 4207 4208 0.280988389053987 0.280988389053987 -105.0146092 39.7516734 -105.0166519 39.7496937
-4534 4209 4210 0.209285084830873 0.209285084830873 -105.0180383 39.7004566 -105.0180554 39.6985745
-4535 4210 4211 0.203065667561202 0.203065667561202 -105.0180554 39.6985745 -105.0180463 39.6967483
-4537 4212 3742 0.11682398880887 0.11682398880887 -105.018373 39.7168584 -105.0181498 39.7158219
-4538 3742 4213 0.111567725645095 0.111567725645095 -105.0181498 39.7158219 -105.018014 39.714824
-4539 4213 1339 0.201798845648163 0.201798845648163 -105.018014 39.714824 -105.0179868 39.7130093
-4541 4214 4215 0.203408625976642 0.203408625976642 -105.0180211 39.7111539 -105.018064 39.7093249
-4542 4215 4216 0.204114710404745 0.204114710404745 -105.018064 39.7093249 -105.0180812 39.7074893
-4543 4216 4217 0.199718562750948 0.199718562750948 -105.0180812 39.7074893 -105.0180726 39.7056932
-4544 4217 4218 0.198271148516705 0.198271148516705 -105.0180726 39.7056932 -105.0180383 39.7039103
-4545 4218 771 0.17255385564489 0.17255385564489 -105.0180383 39.7039103 -105.0180297 39.7023585
-4547 2307 165 0.313487377331004 0.313487377331004 -105.0183816 39.6959593 -105.0184206 39.6931402
-4549 4219 4220 0.186213228977795 0.186213228977795 -104.928034 39.690987 -104.9274781 39.6893679
-4551 754 1537 0.148966155582635 0.148966155582635 -104.9870376 39.7752102 -104.9869861 39.7765493
-4553 4221 4222 0.161148121345995 0.161148121345995 -104.9868954 39.7805099 -104.9869216 39.781959
-4554 4222 4223 0.216135114601666 0.216135114601666 -104.9869216 39.781959 -104.986953 39.7839026
-4555 4223 2863 0.186375265274556 0.186375265274556 -104.986953 39.7839026 -104.9869616 39.7855787
-4556 2863 4224 0.202043234198664 0.202043234198664 -104.9869616 39.7855787 -104.9869346 39.7873956
-4558 2306 163 0.315813218507964 0.315813218507964 -105.0174374 39.6959857 -105.0174975 39.6931459
-4560 2936 4225 0.221837398274975 0.221837398274975 -105.0178175 39.6879086 -105.01767 39.6859168
-4561 4226 4227 0.032037204481033 0.032037204481033 -104.9365695 39.6966812 -104.936211 39.696598
-4562 4227 3117 0.0749583948430369 0.0749583948430369 -104.936211 39.696598 -104.935335 39.696587
-4563 3117 4228 0.116878015161696 0.116878015161696 -104.935335 39.696587 -104.933969 39.696598
-4564 4228 4229 0.198835732908948 0.198835732908948 -104.933969 39.696598 -104.931645 39.696598
-4565 4229 3631 0.67836534857008 0.67836534857008 -104.931645 39.696598 -104.9237198 39.6967811
-4567 4230 4231 0.0278521738101303 0.0278521738101303 -104.9812906 39.6966263 -104.9809651 39.6966301
-4568 4231 3626 0.0483370034898742 0.0483370034898742 -104.9809651 39.6966301 -104.9804002 39.6966367
-4569 3626 4232 0.0510217447847317 0.0510217447847317 -104.9804002 39.6966367 -104.979804 39.6966266
-4570 4232 4233 0.0469996469262497 0.0469996469262497 -104.979804 39.6966266 -104.9792547 39.6966219
-4571 4233 4234 0.00322569080192639 0.00322569080192639 -104.9792547 39.6966219 -104.979217 39.6966216
-4572 4234 4235 0.0476498478152495 0.0476498478152495 -104.979217 39.6966216 -104.9786601 39.6966169
-4573 4235 4236 0.00275575991011001 0.00275575991011001 -104.9786601 39.6966169 -104.9786279 39.6966163
-4574 4236 4237 0.0466374525425622 0.0466374525425622 -104.9786279 39.6966163 -104.9780828 39.6966169
-4575 4237 4176 0.0490297893404984 0.0490297893404984 -104.9780828 39.6966169 -104.9775098 39.6966104
-4577 1777 4238 0.0499406466420926 0.0499406466420926 -104.9769241 39.6966037 -104.9763404 39.6966061
-4578 4238 4239 0.0481565861804565 0.0481565861804565 -104.9763404 39.6966061 -104.9757777 39.6965959
-4579 4239 4241 0.0519465642125291 0.0519465642125291 -104.9757777 39.6965959 -104.9751708 39.6966094
-4580 4241 1525 0.0497346926389818 0.0497346926389818 -104.9751708 39.6966094 -104.9745895 39.6966103
-4581 1525 4242 0.0484856348902157 0.0484856348902157 -104.9745895 39.6966103 -104.9740228 39.6966115
-4582 4242 4243 0.0507187078501555 0.0507187078501555 -104.9740228 39.6966115 -104.97343 39.6966128
-4584 4244 4245 0.0527177379947323 0.0527177379947323 -104.9827699 39.6966096 -104.983386 39.6966166
-4585 4245 4246 0.0464286276535365 0.0464286276535365 -104.983386 39.6966166 -104.9839286 39.6966228
-4586 4246 4247 0.0517965186978674 0.0517965186978674 -104.9839286 39.6966228 -104.984534 39.6966228
-4587 4247 4248 0.0444043495278385 0.0444043495278385 -104.984534 39.6966228 -104.985053 39.6966228
-4588 4248 569 0.0503939700372948 0.0503939700372948 -104.985053 39.6966228 -104.985642 39.6966206
-4589 569 4249 0.0487604458581461 0.0487604458581461 -104.985642 39.6966206 -104.9862119 39.6966237
-4590 4249 4250 0.049686610105401 0.049686610105401 -104.9862119 39.6966237 -104.9867926 39.6966289
-4591 4250 3757 0.0516485422129312 0.0516485422129312 -104.9867926 39.6966289 -104.9873962 39.696636
-4593 233 4251 0.0506501019029544 0.0506501019029544 -104.968695 39.6965912 -104.968103 39.6965907
-4594 4251 4252 0.049085285550805 0.049085285550805 -104.968103 39.6965907 -104.9675293 39.6965934
-4595 4252 4253 0.0509968613887819 0.0509968613887819 -104.9675293 39.6965934 -104.9669334 39.696583
-4596 4253 4254 0.0502265448038836 0.0502265448038836 -104.9669334 39.696583 -104.9663465 39.6965728
-4597 4254 4255 0.0465382189133341 0.0465382189133341 -104.9663465 39.6965728 -104.9658026 39.6965779
-4598 4255 4256 0.0510900830663337 0.0510900830663337 -104.9658026 39.6965779 -104.9652055 39.6965834
-4599 4256 4257 0.0497787434592631 0.0497787434592631 -104.9652055 39.6965834 -104.9646237 39.6965801
-4600 4257 3481 0.048623750791878 0.048623750791878 -104.9646237 39.6965801 -104.9640554 39.6965768
-4601 3481 4258 0.0500598342416855 0.0500598342416855 -104.9640554 39.6965768 -104.9634703 39.6965777
-4602 4258 4259 0.0490673464291656 0.0490673464291656 -104.9634703 39.6965777 -104.9628968 39.6965785
-4603 4259 4260 0.0504371465498466 0.0504371465498466 -104.9628968 39.6965785 -104.9623073 39.6965813
-4604 4260 3695 0.0479901081376225 0.0479901081376225 -104.9623073 39.6965813 -104.9617464 39.6965839
-4606 4261 4262 0.0501538740654185 0.0501538740654185 -104.9611486 39.6965834 -104.9605624 39.6965829
-4607 4262 4263 0.0491706548036751 0.0491706548036751 -104.9605624 39.6965829 -104.9599877 39.6965853
-4608 4263 4264 0.0565833994828839 0.0565833994828839 -104.9599877 39.6965853 -104.9593265 39.6965961
-4610 277 4265 0.0528934097089145 0.0528934097089145 -104.9875916 39.7783304 -104.9869736 39.7783568
-4611 4265 4266 0.0968160140004115 0.0968160140004115 -104.9869736 39.7783568 -104.9858407 39.7783502
-20627 10752 10756 0.0716547469239426 0.0716547469239426 -105.0229895 39.7619327 -105.0229933 39.7612883
-4612 4266 4267 0.0968245593658874 0.0968245593658874 -104.9858407 39.7783502 -104.9847077 39.7783568
-4613 4267 973 0.0982940228399724 0.0982940228399724 -104.9847077 39.7783568 -104.9835576 39.77837
-4614 973 4268 0.0961120665100732 0.0961120665100732 -104.9835576 39.77837 -104.9824332 39.7783502
-4615 4268 3151 0.0982830823377853 0.0982830823377853 -104.9824332 39.7783502 -104.9812831 39.7783502
-4616 3151 4269 0.0956500899819903 0.0956500899819903 -104.9812831 39.7783502 -104.980164 39.7783344
-4617 4269 4270 0.0774758788411222 0.0774758788411222 -104.980164 39.7783344 -104.9792574 39.7783303
-4619 4271 3870 0.115440404669678 0.115440404669678 -104.945419 39.778983 -104.9440689 39.7789476
-4620 3870 839 0.0968819352907846 0.0968819352907846 -104.9440689 39.7789476 -104.942936 39.7789146
-4621 839 4272 0.0909531666656291 0.0909531666656291 -104.942936 39.7789146 -104.9418717 39.778908
-4623 3911 4273 0.0389706485750465 0.0389706485750465 -104.9634588 39.7785997 -104.9630028 39.7785955
-4624 369 4274 0.037543890411303 0.037543890411303 -104.9593952 39.7789295 -104.9589559 39.778934
-4625 4274 4275 0.0617087098520115 0.0617087098520115 -104.9589559 39.778934 -104.9582338 39.7789377
-4629 2912 4277 0.0342245606725147 0.0342245606725147 -104.973349 39.7660612 -104.9736331 39.7662781
-4630 4277 4278 0.104948893572031 0.104948893572031 -104.9736331 39.7662781 -104.9745038 39.7669436
-4631 4278 3313 0.105285822276279 0.105285822276279 -104.9745038 39.7669436 -104.9753728 39.7676147
-4632 3313 4279 0.10593807567588 0.10593807567588 -104.9753728 39.7676147 -104.9762513 39.7682868
-4634 1347 1613 0.100174688565551 0.100174688565551 -104.9771684 39.7690078 -104.9779666 39.7696675
-4635 1613 4280 0.104997472753206 0.104997472753206 -104.9779666 39.7696675 -104.97885 39.7703237
-4665 4282 4283 0.0977314379471645 0.0977314379471645 -105.0344834 39.703983 -105.0344405 39.7031047
-4639 4284 4285 0.190476396365953 0.190476396365953 -104.9683885 39.7728911 -104.9705937 39.7726427
-4640 4285 4286 0.254383171783508 0.254383171783508 -104.9705937 39.7726427 -104.972693 39.7710209
-4642 4287 1279 0.116253581720056 0.116253581720056 -105.0191566 39.7536182 -105.0205165 39.7536172
-4643 1279 4288 0.133001385838575 0.133001385838575 -105.0205165 39.7536172 -105.0220723 39.7536126
-4644 4288 4289 0.132041969489344 0.132041969489344 -105.0220723 39.7536126 -105.0236168 39.7535999
-4645 4289 4290 0.131385678442372 0.131385678442372 -105.0236168 39.7535999 -105.0251537 39.7536044
-4647 3405 4291 0.101549832168715 0.101549832168715 -105.0346118 39.7539178 -105.0357997 39.753915
-4648 4291 4292 0.100523519517599 0.100523519517599 -105.0357997 39.753915 -105.0369756 39.753915
-4649 4292 4293 0.100138462817161 0.100138462817161 -105.0369756 39.753915 -105.0381466 39.7538916
-5953 5195 5227 0.170006104257124 0.170006104257124 -104.9891824 39.7241217 -104.9891795 39.7256506
-4650 4293 4294 0.099847555472709 0.099847555472709 -105.0381466 39.7538916 -105.039314 39.7539202
-4651 4294 4295 0.0503614009997415 0.0503614009997415 -105.039314 39.7539202 -105.0399031 39.7539235
-4652 4295 1117 0.0494296215921 0.0494296215921 -105.0399031 39.7539235 -105.0404813 39.7539268
-4653 1117 4296 0.050087846881447 0.050087846881447 -105.0404813 39.7539268 -105.0410672 39.7539301
-4654 4296 4297 0.0495578429804187 0.0495578429804187 -105.0410672 39.7539301 -105.0416469 39.7539334
-4655 4297 4298 0.0515578068709943 0.0515578068709943 -105.0416469 39.7539334 -105.04225 39.7539306
-20458 10785 10812 0.0256322806680483 0.0256322806680483 -105.0187626 39.7585641 -105.018527 39.7587067
-4656 4298 4299 0.00303478875120781 0.00303478875120781 -105.04225 39.7539306 -105.0422855 39.7539305
-4659 4300 1508 0.0639307257992365 0.0639307257992365 -105.0343976 39.6954706 -105.0343718 39.694896
-4660 1508 179 0.201223720751325 0.201223720751325 -105.0343718 39.694896 -105.034389 39.6930864
-4661 179 1707 0.203441168484602 0.203441168484602 -105.034389 39.6930864 -105.0343547 39.691257
-4663 4301 4302 0.143365965722663 0.143365965722663 -105.0343542 39.6894282 -105.0344062 39.6881395
-4686 4303 4304 0.0764005624211503 0.0764005624211503 -105.0350499 39.705614 -105.0350241 39.7049272
-4664 4302 4305 2.47136733106287 2.47136733106287 -105.0344062 39.6881395 -105.034943 39.6659178
-17126 4306 4307 0.198891077653185 0.198891077653185 -104.9751709 39.7165103 -104.975203 39.7182988
-17128 4308 4309 0.137004722426324 0.137004722426324 -104.974055 39.717746 -104.9740333 39.716514
-4666 4283 4310 0.00807297378678342 0.00807297378678342 -105.0344405 39.7031047 -105.0344398 39.7030321
-4667 4310 4311 0.088125570928718 0.088125570928718 -105.0344398 39.7030321 -105.0344491 39.7022396
-4668 4311 4312 0.0140203745468903 0.0140203745468903 -105.0344491 39.7022396 -105.0344662 39.7021142
-19629 10518 10593 0.0691965251351115 0.0691965251351115 -104.9902799 39.7082903 -104.9910888 39.7082874
-4670 4313 4314 0.114544256923558 0.114544256923558 -105.0344405 39.7013547 -105.0344491 39.7003246
-4671 4314 4315 0.197539157423005 0.197539157423005 -105.0344491 39.7003246 -105.0344405 39.6985481
-4672 4315 4035 0.10133193665102 0.10133193665102 -105.0344405 39.6985481 -105.0344405 39.6976368
-4675 3389 4317 0.176922247784819 0.176922247784819 -105.034904 39.7165547 -105.034904 39.7149636
-4676 4317 1313 0.17698917639034 0.17698917639034 -105.034904 39.7149636 -105.0349008 39.7133719
-4677 1313 4318 0.2429613537943 0.2429613537943 -105.0349008 39.7133719 -105.0348954 39.7111869
-4678 4318 4319 0.0830631503019858 0.0830631503019858 -105.0348954 39.7111869 -105.0350327 39.7104474
-4679 4319 4320 0.0977203133854136 0.0977203133854136 -105.0350327 39.7104474 -105.0350756 39.7095692
-4680 4320 4321 0.113818121601187 0.113818121601187 -105.0350756 39.7095692 -105.0350499 39.7085458
-4681 4321 4322 0.0984100223094627 0.0984100223094627 -105.0350499 39.7085458 -105.0350241 39.707661
-4683 4323 4324 0.0484810817232728 0.0484810817232728 -105.0350585 39.7071591 -105.0350413 39.7067233
-4684 4324 4325 0.0969202903062125 0.0969202903062125 -105.0350413 39.7067233 -105.0350499 39.7058517
-4685 4325 4303 0.026431034063363 0.026431034063363 -105.0350499 39.7058517 -105.0350499 39.705614
-4687 4304 4326 0.107959479077584 0.107959479077584 -105.0350241 39.7049272 -105.0350499 39.7039565
-4689 4302 1574 0.191677995814021 0.191677995814021 -105.0344062 39.6881395 -105.0360845 39.6869978
-4691 3672 4328 0.125428790986072 0.125428790986072 -104.9769586 39.747508 -104.976953 39.748636
-4692 4328 4329 0.0951720176425212 0.0951720176425212 -104.976953 39.748636 -104.9769503 39.7494919
-4693 4329 4330 0.139038263486678 0.139038263486678 -104.9769503 39.7494919 -104.9769525 39.7507423
-4694 4330 4331 0.139714401472726 0.139714401472726 -104.9769525 39.7507423 -104.9769247 39.7519986
-4700 4334 4335 0.200429884058467 0.200429884058467 -104.9780308 39.7165201 -104.9780566 39.7183225
-4702 2368 4336 0.0171503416673458 0.0171503416673458 -104.9775163 39.7194106 -104.9775406 39.7195637
-4704 2899 4337 0.105099867009157 0.105099867009157 -104.9733522 39.7569824 -104.9721228 39.7569937
-4705 4337 4338 0.106056680315678 0.106056680315678 -104.9721228 39.7569937 -104.9708823 39.75701
-4706 4338 4339 0.104589847143113 0.104589847143113 -104.9708823 39.75701 -104.9696595 39.7569777
-4707 4339 4340 0.370832351150224 0.370832351150224 -104.9696595 39.7569777 -104.9653214 39.7569797
-4708 4340 4341 0.0529480373416704 0.0529480373416704 -104.9653214 39.7569797 -104.9647021 39.7569883
-4709 4341 3902 0.107541125657943 0.107541125657943 -104.9647021 39.7569883 -104.9634441 39.75698
-4710 3902 1039 0.104784630542914 0.104784630542914 -104.9634441 39.75698 -104.9622183 39.75698
-4711 1039 4342 0.104777071004161 0.104777071004161 -104.9622183 39.75698 -104.9609926 39.7569841
-4712 4342 4343 0.105248493254523 0.105248493254523 -104.9609926 39.7569841 -104.9597614 39.7569779
-4713 4343 4344 0.101108879740712 0.101108879740712 -104.9597614 39.7569779 -104.9585786 39.7569779
-4714 4344 3325 0.105024412220906 0.105024412220906 -104.9585786 39.7569779 -104.95735 39.7569806
-4715 3325 4345 0.102246237774905 0.102246237774905 -104.95735 39.7569806 -104.9561539 39.7569779
-4716 4345 4346 0.102726745739932 0.102726745739932 -104.9561539 39.7569779 -104.9549522 39.7569718
-4717 4346 2076 0.108443527267173 0.108443527267173 -104.9549522 39.7569718 -104.9536836 39.7569738
-4718 2076 2673 0.108454042008862 0.108454042008862 -104.9536836 39.7569738 -104.9524149 39.7569676
-6026 4668 5275 0.106680903376796 0.106680903376796 -104.9875126 39.713878 -104.9862654 39.7138801
-20495 10837 10818 0.00314569094185422 0.00314569094185422 -105.0192753 39.758524 -105.0193121 39.758524
-4719 2673 4123 0.102664740305431 0.102664740305431 -104.9524149 39.7569676 -104.9512139 39.7569666
-4720 4123 4347 0.110043125382133 0.110043125382133 -104.9512139 39.7569666 -104.9499266 39.7569714
-4721 4347 4348 0.0925868711229396 0.0925868711229396 -104.9499266 39.7569714 -104.9488435 39.7569684
-4722 4348 4349 0.101256639304288 0.101256639304288 -104.9488435 39.7569684 -104.9476591 39.756955
-4723 4349 3471 0.100333218908324 0.100333218908324 -104.9476591 39.756955 -104.9464855 39.7569418
-4724 3471 4350 0.101033713236321 0.101033713236321 -104.9464855 39.7569418 -104.9453036 39.7569471
-4726 850 4351 0.101364060095961 0.101364060095961 -104.9429726 39.7565327 -104.9417876 39.7564997
-4727 4351 4352 0.0951618291875102 0.0951618291875102 -104.9417876 39.7564997 -104.9406749 39.7564735
-4728 4352 4353 0.0166431794757682 0.0166431794757682 -104.9406749 39.7564735 -104.9404804 39.7564802
-4729 4353 4354 0.0900251519018866 0.0900251519018866 -104.9404804 39.7564802 -104.9394273 39.7564865
-4730 4354 4355 0.0948464364966571 0.0948464364966571 -104.9394273 39.7564865 -104.9383178 39.75648
-4731 4355 4356 0.0929916889983271 0.0929916889983271 -104.9383178 39.75648 -104.93723 39.7564733
-4732 4356 4357 0.0946584559856625 0.0946584559856625 -104.93723 39.7564733 -104.9361228 39.7564865
-4733 4357 2002 0.0939147825318954 0.0939147825318954 -104.9361228 39.7564865 -104.9350242 39.7564799
-4734 2002 3362 0.0961201849767339 0.0961201849767339 -104.9350242 39.7564799 -104.9338998 39.7564865
-4735 3362 2756 0.0936202724465644 0.0936202724465644 -104.9338998 39.7564865 -104.9328047 39.7564972
-4736 2756 4358 0.0928604520153806 0.0928604520153806 -104.9328047 39.7564972 -104.9317184 39.7564972
-4738 4359 3874 0.0985792493705747 0.0985792493705747 -104.9453012 39.7565195 -104.944148 39.7565195
-4740 4360 4361 0.589746493190754 0.589746493190754 -105.0055932 39.7209068 -105.0015929 39.7165869
-4742 501 1385 0.0995647502781281 0.0995647502781281 -105.0014928 39.7130323 -105.0016028 39.7121409
-4745 4363 4364 0.205829363021429 0.205829363021429 -105.0015367 39.7102427 -105.0014826 39.7083921
-4746 4364 4365 0.0921122756854079 0.0921122756854079 -105.0014826 39.7083921 -105.0015264 39.7075644
-4747 4365 4366 0.00988128080256074 0.00988128080256074 -105.0015264 39.7075644 -105.001522 39.7074756
-4748 4366 4367 0.0897681081567516 0.0897681081567516 -105.001522 39.7074756 -105.0015253 39.7066683
-4749 4367 4368 0.098598628932225 0.098598628932225 -105.0015253 39.7066683 -105.0015178 39.7057816
-4750 4368 4369 0.0959412440063823 0.0959412440063823 -105.0015178 39.7057816 -105.0015255 39.7049188
-4751 4369 4370 0.102131783313602 0.102131783313602 -105.0015255 39.7049188 -105.0014826 39.7040009
-4752 4370 783 0.172155062898013 0.172155062898013 -105.0014826 39.7040009 -105.001524 39.702453
-4753 783 4373 0.095162556755669 0.095162556755669 -105.001524 39.702453 -105.0015169 39.7015972
-4754 4373 4374 0.0961947364240104 0.0961947364240104 -105.0015169 39.7015972 -105.0014998 39.7007322
-4755 4374 2746 0.0976874440589729 0.0976874440589729 -105.0014998 39.7007322 -105.001474 39.6998539
-4756 2746 4375 0.105035684135392 0.105035684135392 -105.001474 39.6998539 -105.0014998 39.6989095
-4757 4375 4376 0.0939930714928361 0.0939930714928361 -105.0014998 39.6989095 -105.0014998 39.6980642
-4758 4376 4031 0.0955624767971731 0.0955624767971731 -105.0014998 39.6980642 -105.0014483 39.6972057
-4759 4031 4377 0.0560443290529964 0.0560443290529964 -105.0014483 39.6972057 -105.0015083 39.6967038
-4760 4377 1489 0.204591889958277 0.204591889958277 -105.0015083 39.6967038 -105.0015377 39.694864
-4762 145 1731 0.201807709171719 0.201807709171719 -105.0015377 39.6930676 -105.0015625 39.6912528
-4763 1731 360 0.203461803126836 0.203461803126836 -105.0015625 39.6912528 -105.0016107 39.6894234
-4767 2902 2038 0.0702037411311871 0.0702037411311871 -104.9733513 39.7595161 -104.9740667 39.759206
-4769 4380 4381 0.147155318321419 0.147155318321419 -104.9752846 39.7582739 -104.9764694 39.7573138
-4770 4381 4382 0.144957308053315 0.144957308053315 -104.9764694 39.7573138 -104.9776844 39.7564044
-4771 4382 4383 0.149312485085308 0.149312485085308 -104.9776844 39.7564044 -104.9788891 39.7554321
-4774 2688 4385 0.0765539017627299 0.0765539017627299 -104.9813184 39.7535997 -104.9819456 39.7531083
-4775 4385 4386 0.0705753548513159 0.0705753548513159 -104.9819456 39.7531083 -104.9825253 39.7526564
-4776 4386 4387 0.146933743759007 0.146933743759007 -104.9825253 39.7526564 -104.9837317 39.7517152
-4777 4387 4388 0.145923980731529 0.145923980731529 -104.9837317 39.7517152 -104.9849232 39.7507755
-4778 4388 4389 0.144339759907671 0.144339759907671 -104.9849232 39.7507755 -104.9861204 39.7498602
-4779 4389 4390 0.150103166473839 0.150103166473839 -104.9861204 39.7498602 -104.9873785 39.7489186
-4780 4390 4391 0.137983810664432 0.137983810664432 -104.9873785 39.7489186 -104.9885184 39.7480401
-4781 4391 4392 0.0104056356944031 0.0104056356944031 -104.9885184 39.7480401 -104.9886052 39.7479745
-4782 4392 4393 0.140241416108271 0.140241416108271 -104.9886052 39.7479745 -104.9897603 39.747079
-4783 4393 4394 0.1481833156111 0.1481833156111 -104.9897603 39.747079 -104.9909615 39.7461183
-4784 4394 4395 0.146837535132845 0.146837535132845 -104.9909615 39.7461183 -104.9921721 39.7451816
-4785 4395 4396 0.147176845167591 0.147176845167591 -104.9921721 39.7451816 -104.993398 39.7442524
-4786 4396 4397 0.145625871999305 0.145625871999305 -104.993398 39.7442524 -104.9946157 39.7433367
-4788 1072 4398 0.0934237929296376 0.0934237929296376 -105.009231 39.7782735 -105.0087458 39.7790264
-4790 4399 4400 0.1229191337931 0.1229191337931 -104.9607224 39.7225056 -104.961317 39.723512
-4791 4400 4401 0.117696624021516 0.117696624021516 -104.961317 39.723512 -104.9626217 39.7238487
-4792 4401 3916 0.0730141443209756 0.0730141443209756 -104.9626217 39.7238487 -104.9634696 39.7237721
-4794 4402 4403 3.26030129970045 3.26030129970045 -105.0326599 39.6602355 -105.0296941 39.6894671
-4795 4403 1705 0.202698536609182 0.202698536609182 -105.0296941 39.6894671 -105.0297026 39.69129
-4796 1705 176 0.202718600973581 0.202718600973581 -105.0297026 39.69129 -105.029737 39.6931129
-4797 176 1503 0.201219684641614 0.201219684641614 -105.029737 39.6931129 -105.0297284 39.6949225
-4798 1503 4404 0.202286968554481 0.202286968554481 -105.0297284 39.6949225 -105.0297364 39.6967417
-4799 4404 4405 0.200141278145387 0.200141278145387 -105.0297364 39.6967417 -105.0297627 39.6985415
-4800 4405 4406 0.0308542467827185 0.0308542467827185 -105.0297627 39.6985415 -105.0297541 39.6988189
-4801 4406 4407 0.168200323230532 0.168200323230532 -105.0297541 39.6988189 -105.0297971 39.7003312
-4802 4407 4408 0.11307645922142 0.11307645922142 -105.0297971 39.7003312 -105.0298056 39.7013481
-4803 4408 4409 0.0961947310408444 0.0961947310408444 -105.0298056 39.7013481 -105.0298056 39.7022132
-4804 4409 4410 0.0983990775592717 0.0983990775592717 -105.0298056 39.7022132 -105.0297971 39.7030981
-4806 4411 4413 0.099863884884034 0.099863884884034 -105.0298314 39.704016 -105.0298142 39.704914
-4809 4415 4416 0.102810116828889 0.102810116828889 -105.0297971 39.7067299 -105.0298142 39.7076544
-4810 4416 4417 0.0991628298509216 0.0991628298509216 -105.0298142 39.7076544 -105.0298486 39.7085458
-4811 4417 4418 0.0969872745595907 0.0969872745595907 -105.0298486 39.7085458 -105.0298056 39.7094174
-4812 4418 4419 0.0998556913489604 0.0998556913489604 -105.0298056 39.7094174 -105.0297971 39.7103154
-4813 4419 4420 0.0958355207238061 0.0958355207238061 -105.0297971 39.7103154 -105.0299687 39.7111671
-4814 4420 1307 0.243760388907656 0.243760388907656 -105.0299687 39.7111671 -105.0299945 39.7133592
-4815 1307 4421 0.179135026824832 0.179135026824832 -105.0299945 39.7133592 -105.0299945 39.7149702
-4818 4422 477 0.0591204183570981 0.0591204183570981 -105.0169124 39.7442891 -105.0173303 39.7447127
-4819 477 486 0.338636165035717 0.338636165035717 -105.0173303 39.7447127 -105.0180607 39.7477059
-4820 486 320 0.186794052108965 0.186794052108965 -105.0180607 39.7477059 -105.0174336 39.7493151
-4821 320 324 0.464671835959624 0.464671835959624 -105.0174336 39.7493151 -105.0152472 39.753141
-4822 324 531 0.0559979023034973 0.0559979023034973 -105.0152472 39.753141 -105.0148477 39.7535401
-4823 531 534 0.263162604733165 0.263162604733165 -105.0148477 39.7535401 -105.0126456 39.7551939
-4825 475 530 0.435551136576821 0.435551136576821 -105.0122615 39.7554827 -105.0085506 39.7581668
-4826 530 393 0.115152140819887 0.115152140819887 -105.0085506 39.7581668 -105.0075703 39.7588771
-4827 393 4423 0.203655322253385 0.203655322253385 -105.0075703 39.7588771 -105.0057667 39.7600738
-4828 4423 4424 0.538171924126244 0.538171924126244 -105.0057667 39.7600738 -105.0016238 39.7637183
-4829 4424 4426 0.419488421877639 0.419488421877639 -105.0016238 39.7637183 -104.998467 39.7666069
-4830 4426 4427 0.0323139283448777 0.0323139283448777 -104.998467 39.7666069 -104.9981322 39.7667419
-4833 4428 4429 0.198930926845217 0.198930926845217 -105.0227675 39.7175319 -105.0250933 39.717539
-4837 4432 4433 0.200460087837485 0.200460087837485 -105.0086074 39.7174296 -105.0109506 39.7174666
-4839 2920 3260 0.28373274915572 0.28373274915572 -104.9580338 39.7072718 -104.9578793 39.7047229
-4842 4436 726 0.0998645775500999 0.0998645775500999 -104.9500303 39.7012585 -104.9511976 39.7012585
-4843 726 52 0.170560718436498 0.170560718436498 -104.9511976 39.7012585 -104.9526824 39.7002349
-4844 52 4437 0.100090869280248 0.100090869280248 -104.9526824 39.7002349 -104.9534368 39.6995469
-4845 4437 3658 0.0591716781283333 0.0591716781283333 -104.9534368 39.6995469 -104.9536997 39.6990547
-4846 3658 4438 0.103033016475492 0.103033016475492 -104.9536997 39.6990547 -104.9546419 39.6984776
-4847 4438 4439 0.00533542340358722 0.00533542340358722 -104.9546419 39.6984776 -104.9546886 39.6984458
-4848 4439 3530 0.0426683766285225 0.0426683766285225 -104.9546886 39.6984458 -104.9550292 39.6981655
-4850 4440 1490 0.0653862418347059 0.0653862418347059 -105.0026535 39.6954583 -105.0026792 39.6948706
-4851 1490 146 0.199762763358791 0.199762763358791 -105.0026792 39.6948706 -105.002705 39.6930742
-4853 1733 4441 0.200262923415945 0.200262923415945 -105.0027266 39.6912507 -105.0027522 39.6894498
-4855 3554 4442 0.0495302719350299 0.0495302719350299 -104.9757464 39.7546182 -104.9759203 39.7550431
-4856 4442 4443 0.0498850541236187 0.0498850541236187 -104.9759203 39.7550431 -104.9763376 39.7553567
-4857 4443 4444 0.0512856921549244 0.0512856921549244 -104.9763376 39.7553567 -104.9767844 39.7556645
-4858 4444 3019 0.0117591853989501 0.0117591853989501 -104.9767844 39.7556645 -104.9768843 39.7557372
-4860 4445 4382 0.0530835076360593 0.0530835076360593 -104.9772635 39.7560534 -104.9776844 39.7564044
-4861 4382 4446 0.0528074946120117 0.0528074946120117 -104.9776844 39.7564044 -104.9781251 39.7567372
-4863 4447 4448 0.00600839331926655 0.00600839331926655 -104.9785209 39.7570361 -104.9785732 39.7570722
-4865 4449 4450 0.0531891993832321 0.0531891993832321 -104.9789969 39.757401 -104.9794422 39.7577351
-4866 4450 4451 0.0546720224408421 0.0546720224408421 -104.9794422 39.7577351 -104.9798733 39.7580983
-4867 4451 4452 0.0492877204975977 0.0492877204975977 -104.9798733 39.7580983 -104.9802783 39.7584138
-4868 4452 4453 0.0555740263590881 0.0555740263590881 -104.9802783 39.7584138 -104.980759 39.7587503
-4869 4453 4454 0.0508522899950145 0.0508522899950145 -104.980759 39.7587503 -104.981171 39.7590802
-4870 4454 4455 0.0539540438907939 0.0539540438907939 -104.981171 39.7590802 -104.9816151 39.759425
-4871 4455 4456 0.05278127500741 0.05278127500741 -104.9816151 39.759425 -104.9820633 39.7597515
-4872 4456 4457 0.0520682148022883 0.0520682148022883 -104.9820633 39.7597515 -104.9824777 39.7600947
-4873 4457 4458 0.0535945839553328 0.0535945839553328 -104.9824777 39.7600947 -104.9829353 39.7604242
-4874 4458 3308 0.105299206866662 0.105299206866662 -104.9829353 39.7604242 -104.983803 39.7610964
-4875 3308 4459 0.0532887340145185 0.0532887340145185 -104.983803 39.7610964 -104.9842417 39.7614369
-4876 4459 4460 0.0519293867850164 0.0519293867850164 -104.9842417 39.7614369 -104.9846721 39.7617665
-4878 2911 4461 0.104626210772024 0.104626210772024 -104.9733491 39.7657577 -104.972125 39.7657557
-4879 4461 4462 0.107626289516013 0.107626289516013 -104.972125 39.7657557 -104.9708658 39.7657536
-4880 4462 4463 0.104079175744358 0.104079175744358 -104.9708658 39.7657536 -104.9696481 39.7657517
-4881 4463 4464 0.104771521557699 0.104771521557699 -104.9696481 39.7657517 -104.9684223 39.7657497
-4882 4464 4465 0.105968126634263 0.105968126634263 -104.9684223 39.7657497 -104.9671825 39.7657477
-6192 5399 5400 0.276164012064383 0.276164012064383 -104.9659557 39.7557387 -104.9659604 39.7582223
-4883 4465 4466 0.105797186557688 0.105797186557688 -104.9671825 39.7657477 -104.9659447 39.7657457
-4884 4466 3135 0.104882643737148 0.104882643737148 -104.9659447 39.7657457 -104.9647176 39.7657437
-4885 3135 3907 0.109352834062615 0.109352834062615 -104.9647176 39.7657437 -104.9634382 39.7657416
-4886 3907 1046 0.105412573797977 0.105412573797977 -104.9634382 39.7657416 -104.9622049 39.7657396
-4887 1046 4467 0.052770391738213 0.052770391738213 -104.9622049 39.7657396 -104.9615875 39.7657386
-4888 4467 4468 0.0520438840305316 0.0520438840305316 -104.9615875 39.7657386 -104.9609786 39.7657376
-4889 4468 4469 0.10568608900916 0.10568608900916 -104.9609786 39.7657376 -104.9597421 39.7657356
-4890 4469 4470 0.101335564568208 0.101335564568208 -104.9597421 39.7657356 -104.9585565 39.7657337
-4891 4470 3332 0.103121923835041 0.103121923835041 -104.9585565 39.7657337 -104.95735 39.7657318
-4892 3332 4471 0.106386988921342 0.106386988921342 -104.95735 39.7657318 -104.9561053 39.7657297
-4893 4471 4472 0.0168550696022494 0.0168550696022494 -104.9561053 39.7657297 -104.9559081 39.7657294
-4894 4472 4473 0.0917114246562582 0.0917114246562582 -104.9559081 39.7657294 -104.9548351 39.7657277
-4895 4473 2083 0.101916806851718 0.101916806851718 -104.9548351 39.7657277 -104.9536427 39.7657257
-4896 2083 4474 0.104993787286419 0.104993787286419 -104.9536427 39.7657257 -104.9524143 39.7657237
-4897 4474 4129 0.105139069056382 0.105139069056382 -104.9524143 39.7657237 -104.9511842 39.7657218
-4898 4129 4475 0.108754567624091 0.108754567624091 -104.9511842 39.7657218 -104.9499118 39.7657197
-4899 4475 4476 0.10144670106953 0.10144670106953 -104.9499118 39.7657197 -104.9487249 39.7657178
-4900 4476 4477 0.106139118962841 0.106139118962841 -104.9487249 39.7657178 -104.9474831 39.7657158
-4901 4477 3446 0.105344236005182 0.105344236005182 -104.9474831 39.7657158 -104.9462506 39.7657138
-4903 4478 4479 0.0124618097268169 0.0124618097268169 -104.9451778 39.765712 -104.945032 39.7657118
-4904 4479 4480 0.085822453683645 0.085822453683645 -104.945032 39.7657118 -104.9440279 39.7657101
-4905 4480 3886 0.0198123941785865 0.0198123941785865 -104.9440279 39.7657101 -104.9437961 39.7657098
-4907 865 4481 0.0967884909448593 0.0967884909448593 -104.9428501 39.7657082 -104.9417177 39.7657064
-4909 345 4482 0.111183183932549 0.111183183932549 -105.0067949 39.727165 -105.007537 39.727986
-4910 4483 1892 0.0285476317873184 0.0285476317873184 -105.0055781 39.7619094 -105.0052777 39.7620216
-4912 4360 4484 0.465117334225162 0.465117334225162 -105.0055932 39.7209068 -105.0055963 39.7250897
-4913 4484 4485 0.0326010116755978 0.0326010116755978 -105.0055963 39.7250897 -105.0056478 39.7253802
-4915 4486 4487 0.175931100170174 0.175931100170174 -105.0052345 39.7321295 -105.005256 39.7337116
-4916 4487 4489 0.100342363380826 0.100342363380826 -105.005256 39.7337116 -105.0052547 39.734614
-4917 4489 4490 0.161656025882071 0.161656025882071 -105.0052547 39.734614 -105.0052486 39.7360678
-4918 4490 4491 0.0905242566324277 0.0905242566324277 -105.0052486 39.7360678 -105.0052452 39.7368819
-4919 4491 1950 0.169005169872083 0.169005169872083 -105.0052452 39.7368819 -105.005245 39.7384018
-4920 1950 4492 0.126063150124326 0.126063150124326 -105.005245 39.7384018 -105.0052379 39.7395355
-4924 4081 3762 0.180617937803326 0.180617937803326 -105.005155 39.7838353 -105.0051409 39.7854596
-4926 2559 4495 0.0875396307338273 0.0875396307338273 -105.0051367 39.7862559 -105.0051056 39.7870428
-4927 4495 4496 0.0902282586364627 0.0902282586364627 -105.0051056 39.7870428 -105.0051314 39.787854
-4928 4496 4497 0.0878475091612825 0.0878475091612825 -105.0051314 39.787854 -105.0051406 39.788644
-4929 4497 4498 0.266301743580547 0.266301743580547 -105.0051406 39.788644 -105.005132 39.7910389
-4930 180 1708 0.203431976552675 0.203431976552675 -105.0355649 39.693093 -105.0355391 39.6912636
-4931 1708 4499 0.201230804203475 0.201230804203475 -105.0355391 39.6912636 -105.0355305 39.6894539
-4932 4499 1575 0.27729796539772 0.27729796539772 -105.0355305 39.6894539 -105.0369943 39.687229
-4933 1575 4500 0.182259795470885 0.182259795470885 -105.0369943 39.687229 -105.0371589 39.6855948
-4934 4501 4502 0.199005560216138 0.199005560216138 -105.0355649 39.7003312 -105.0355649 39.6985415
-4935 4502 4503 0.153202263597584 0.153202263597584 -105.0355649 39.6985415 -105.0355129 39.6971643
-4937 4504 4505 0.176923776962641 0.176923776962641 -105.0361142 39.7165547 -105.0361056 39.7149636
-4938 4505 1315 0.176127860687443 0.176127860687443 -105.0361056 39.7149636 -105.0360883 39.7133797
-4939 1315 1371 0.176782045374234 0.176782045374234 -105.0360883 39.7133797 -105.0361028 39.7117899
-4940 1371 4506 0.0626491861453163 0.0626491861453163 -105.0361028 39.7117899 -105.036097 39.7112265
-4941 4506 4507 0.0851767549198192 0.0851767549198192 -105.036097 39.7112265 -105.0360799 39.7104606
-4943 3035 4508 0.210570172682267 0.210570172682267 -104.9468584 39.7590562 -104.9468841 39.7609498
-4945 54 4510 0.19332295953062 0.19332295953062 -104.9511976 39.7002019 -104.9527144 39.6989132
-4946 4510 3640 0.0466160975278989 0.0466160975278989 -104.9527144 39.6989132 -104.9529616 39.6985396
-4948 4511 3531 0.0618894465423491 0.0618894465423491 -104.9541278 39.6978107 -104.954611 39.6973965
-4949 3531 4512 0.0905408166059636 0.0905408166059636 -104.954611 39.6973965 -104.9546673 39.6965834
-4951 3926 707 0.0755598922064861 0.0755598922064861 -105.0032486 39.7632388 -105.0041326 39.7632399
-4952 707 4513 0.0978688769552162 0.0978688769552162 -105.0041326 39.7632399 -105.0052776 39.7632414
-4953 4513 4514 0.0992771410926943 0.0992771410926943 -105.0052776 39.7632414 -105.0064389 39.7632258
-4954 4514 4188 0.135836888761709 0.135836888761709 -105.0064389 39.7632258 -105.0080281 39.7632238
-4955 4188 2514 0.135033448601963 0.135033448601963 -105.0080281 39.7632238 -105.0096079 39.7632217
-4956 2514 4515 0.13515296788921 0.13515296788921 -105.0096079 39.7632217 -105.0111891 39.7632228
-4957 4515 4516 0.136409392488761 0.136409392488761 -105.0111891 39.7632228 -105.012785 39.7632228
-4959 4517 4518 0.0356088442137805 0.0356088442137805 -105.0133602 39.7632209 -105.0137768 39.7632209
-4960 4518 4519 0.0503802448307333 0.0503802448307333 -105.0137768 39.7632209 -105.0143662 39.7632176
-4961 4519 4520 0.127581150438839 0.127581150438839 -105.0143662 39.7632176 -105.0158588 39.7632228
-4962 4520 4521 0.132742519290442 0.132742519290442 -105.0158588 39.7632228 -105.0174118 39.7632228
-4963 4521 4522 0.13263462094456 0.13263462094456 -105.0174118 39.7632228 -105.0189635 39.7632145
-4964 4522 1243 0.132622916068163 0.132622916068163 -105.0189635 39.7632145 -105.0205151 39.7632155
-4965 1243 4523 0.132744954601011 0.132744954601011 -105.0205151 39.7632155 -105.0220681 39.7632083
-4966 4523 2724 0.131940306625131 0.131940306625131 -105.0220681 39.7632083 -105.0236117 39.7632032
-4967 2724 4524 0.125887507119952 0.125887507119952 -105.0236117 39.7632032 -105.0250845 39.7632041
-4968 4524 4525 0.0073166618478819 0.0073166618478819 -105.0250845 39.7632041 -105.0251701 39.7632042
-4970 4526 4527 0.188224997765616 0.188224997765616 -105.030062 39.7638851 -105.0322641 39.7638939
-4971 4527 3419 0.20066865963842 0.20066865963842 -105.0322641 39.7638939 -105.0346118 39.7638877
-4973 4528 4529 0.132643815391647 0.132643815391647 -105.022041 39.751211 -105.0220809 39.7524035
-4974 4529 4288 0.134447795927953 0.134447795927953 -105.0220809 39.7524035 -105.0220723 39.7536126
-4975 4288 4530 0.0675286789518799 0.0675286789518799 -105.0220723 39.7536126 -105.0220723 39.7542199
-4976 4530 4531 0.0681514911729941 0.0681514911729941 -105.0220723 39.7542199 -105.0220708 39.7548328
-4978 1833 2628 0.0976402650867344 0.0976402650867344 -105.0227761 39.7211827 -105.0227761 39.7220608
-4980 4532 4428 0.101312368020336 0.101312368020336 -105.0227589 39.7166208 -105.0227675 39.7175319
-4981 4428 4533 0.0998335149833254 0.0998335149833254 -105.0227675 39.7175319 -105.0227761 39.7184297
-4982 4533 4534 0.1027774706977 0.1027774706977 -105.0227761 39.7184297 -105.0227761 39.719354
-4984 4535 1833 0.103500237720645 0.103500237720645 -105.0227761 39.7202519 -105.0227761 39.7211827
-4986 4536 4537 0.0953225774659935 0.0953225774659935 -105.0221025 39.7275212 -105.0221238 39.7283783
-4988 4538 4539 0.19878482816443 0.19878482816443 -105.0216452 39.7766253 -105.0216547 39.778413
-4989 4539 2830 0.201604542004037 0.201604542004037 -105.0216547 39.778413 -105.0216335 39.780226
-4990 2830 1438 0.197694612690532 0.197694612690532 -105.0216335 39.780226 -105.0216256 39.7820039
-4991 1438 4540 0.179002123409013 0.179002123409013 -105.0216256 39.7820039 -105.0216205 39.7836137
-4993 4541 25 0.138059623303707 0.138059623303707 -105.022071 39.7560345 -105.0220707 39.7572761
-4994 25 4542 0.0645746983944002 0.0645746983944002 -105.0220707 39.7572761 -105.0220625 39.7578568
-4995 4542 2964 0.0670651945252806 0.0670651945252806 -105.0220625 39.7578568 -105.0220789 39.7584598
-4999 4545 4546 0.142258977482996 0.142258977482996 -105.0220798 39.7753463 -105.02204 39.7766253
-5001 4547 115 0.110830423505847 0.110830423505847 -105.0217032 39.7293091 -105.0217118 39.7303058
-5003 4548 4549 0.0776585367690646 0.0776585367690646 -105.0217136 39.7305028 -105.0217136 39.7312012
-5004 4549 4550 0.199094650034446 0.199094650034446 -105.0217136 39.7312012 -105.0217163 39.7329917
-5005 4550 4551 0.100232131513911 0.100232131513911 -105.0217163 39.7329917 -105.0217216 39.7338931
-5007 4552 2292 0.132777862181536 0.132777862181536 -105.0217376 39.7344378 -105.0217377 39.7356319
-5008 2292 4553 0.0918166647273585 0.0918166647273585 -105.0217377 39.7356319 -105.021729 39.7364576
-5009 4553 2534 0.18135507208955 0.18135507208955 -105.021729 39.7364576 -105.0217592 39.7380884
-5011 2627 4554 0.0924500575644084 0.0924500575644084 -105.0220898 39.7220653 -105.0220979 39.7228967
-5012 4554 4555 0.10983037862614 0.10983037862614 -105.0220979 39.7228967 -105.0221186 39.7238843
-5014 4523 4556 0.135380005592348 0.135380005592348 -105.0220681 39.7632083 -105.0220655 39.7644258
-5015 4556 4557 0.134346145402708 0.134346145402708 -105.0220655 39.7644258 -105.0220695 39.765634
-5016 4557 4558 0.133189336887005 0.133189336887005 -105.0220695 39.765634 -105.0220681 39.7668318
-5017 4558 1680 0.13514752705788 0.13514752705788 -105.0220681 39.7668318 -105.0220748 39.7680472
-5018 1680 4559 0.137419251565084 0.137419251565084 -105.0220748 39.7680472 -105.0220879 39.769283
-5020 4560 4064 0.13135456684589 0.13135456684589 -105.0220781 39.7475968 -105.0220781 39.7487781
-5021 4064 4561 0.134278993416053 0.134278993416053 -105.0220781 39.7487781 -105.0220781 39.7499857
-5023 4101 4562 0.159933235501875 0.159933235501875 -105.0216462 39.7841819 -105.0216379 39.7856202
-5025 4563 4564 0.407964486856081 0.407964486856081 -105.0216452 39.7874253 -105.0216326 39.7910942
-5026 4565 2188 0.10962848253063 0.10962848253063 -105.0146647 39.7375398 -105.0159468 39.7375377
-17150 4780 4781 0.199841658014134 0.199841658014134 -104.9751815 39.7020519 -104.9751707 39.7038491
-5028 4566 687 0.202530686471354 0.202530686471354 -104.9275226 39.7401271 -104.9275189 39.7419485
-5029 687 1982 0.159069792202276 0.159069792202276 -104.9275189 39.7419485 -104.9275343 39.743379
-5030 1982 1967 0.0383650278893233 0.0383650278893233 -104.9275343 39.743379 -104.9275397 39.743724
-5033 4567 1928 0.199711508236703 0.199711508236703 -104.9605404 39.7092844 -104.9605576 39.7074884
-5034 1928 4568 0.201653602761609 0.201653602761609 -104.9605576 39.7074884 -104.9605482 39.7056749
-5035 4568 3272 0.202185746700204 0.202185746700204 -104.9605482 39.7056749 -104.960549 39.7038566
-5036 3272 4569 0.20093413075273 0.20093413075273 -104.960549 39.7038566 -104.9605654 39.7020496
-5037 4569 85 0.20339775981857 0.20339775981857 -104.9605654 39.7020496 -104.9605654 39.7002204
-5038 85 3521 0.203998373883698 0.203998373883698 -104.9605654 39.7002204 -104.9605624 39.6983858
-5039 3521 4262 0.200473333246826 0.200473333246826 -104.9605624 39.6983858 -104.9605624 39.6965829
-5040 4262 4570 0.200485802986416 0.200485802986416 -104.9605624 39.6965829 -104.960571 39.6947799
-5041 4570 4571 0.201223720769428 0.201223720769428 -104.960571 39.6947799 -104.9605882 39.6929703
-5042 4571 4572 0.205786578364508 0.205786578364508 -104.9605882 39.6929703 -104.9605654 39.6911197
-5043 4572 4573 0.200686081138238 0.200686081138238 -104.9605654 39.6911197 -104.9605564 39.6893149
-5044 4573 4574 0.200311699167283 0.200311699167283 -104.9605564 39.6893149 -104.9605396 39.6875135
-5045 4575 4576 0.13275170286213 0.13275170286213 -105.0268099 39.7414867 -105.0283618 39.741523
-5046 4576 4011 0.136238719327193 0.136238719327193 -105.0283618 39.741523 -105.0299552 39.7415215
-5049 4578 3382 0.130912952312419 0.130912952312419 -105.0330646 39.7415188 -105.0345957 39.741514
-5050 3382 4579 0.10420964387947 0.10420964387947 -105.0345957 39.741514 -105.0358145 39.741514
-5051 4579 4580 0.100328081358343 0.100328081358343 -105.0358145 39.741514 -105.0369879 39.7415159
-5053 4581 4582 0.100688559836452 0.100688559836452 -105.0381505 39.741515 -105.0393281 39.7415201
-5054 4582 1104 0.099555514740453 0.099555514740453 -105.0393281 39.7415201 -105.0404924 39.7415105
-5055 1104 4583 0.100465419279427 0.100465419279427 -105.0404924 39.7415105 -105.0416673 39.7415228
-5056 4583 4584 0.100511332021349 0.100511332021349 -105.0416673 39.7415228 -105.0428428 39.7415308
-5057 4584 4585 0.0999153218838928 0.0999153218838928 -105.0428428 39.7415308 -105.0440113 39.7415206
-5059 3498 4586 0.198271673699608 0.198271673699608 -104.9477042 39.6983792 -104.9477042 39.6965961
-5060 4586 4587 0.203313884946152 0.203313884946152 -104.9477042 39.6965961 -104.9476874 39.6947677
-5062 4588 3598 0.162446986671654 0.162446986671654 -104.9320576 39.744666 -104.9301576 39.7446611
-5065 4590 4591 0.145581982651648 0.145581982651648 -104.9406235 39.7449365 -104.9389209 39.7449185
-20699 10909 10894 0.00288177410229764 0.00288177410229764 -105.0401144 39.7656928 -105.0400807 39.765692
-5066 4591 4592 0.145302049591696 0.145302049591696 -104.9389209 39.7449185 -104.9372215 39.7449317
-5067 4592 2013 0.147364635735888 0.147364635735888 -104.9372215 39.7449317 -104.9354979 39.7449269
-5068 2013 4593 0.147376079792043 0.147376079792043 -104.9354979 39.7449269 -104.9337742 39.7449365
-5069 4593 4594 0.146031742389181 0.146031742389181 -104.9337742 39.7449365 -104.9320662 39.7449299
-5071 4595 4596 0.179128666689522 0.179128666689522 -104.9581328 39.7438013 -104.9598011 39.7447758
-5072 4596 4597 0.0491363059718978 0.0491363059718978 -104.9598011 39.7447758 -104.9603758 39.7447782
-5073 4597 4598 0.0534283507033442 0.0534283507033442 -104.9603758 39.7447782 -104.9610007 39.7447808
-5074 4598 4599 0.051162571237203 0.051162571237203 -104.9610007 39.7447808 -104.9615991 39.7447832
-5076 1025 3894 0.103299911807114 0.103299911807114 -104.9622361 39.7447859 -104.9634443 39.7447909
-5077 3894 4600 0.113012549862716 0.113012549862716 -104.9634443 39.7447909 -104.9647661 39.7447963
-5078 4600 4601 0.103445240313361 0.103445240313361 -104.9647661 39.7447963 -104.965976 39.7448013
-5079 4601 4602 0.110216736617757 0.110216736617757 -104.965976 39.7448013 -104.9672651 39.7448066
-5080 4602 4603 0.098537605440947 0.098537605440947 -104.9672651 39.7448066 -104.9684176 39.7448114
-5081 4603 4604 0.10689939615188 0.10689939615188 -104.9684176 39.7448114 -104.9696679 39.7448166
-5082 4604 4605 0.104556664577465 0.104556664577465 -104.9696679 39.7448166 -104.9708908 39.7448216
-5083 4605 4606 0.106796784548208 0.106796784548208 -104.9708908 39.7448216 -104.9721399 39.7448268
-5084 4606 2884 0.106044347623682 0.106044347623682 -104.9721399 39.7448268 -104.9733802 39.7448319
-5085 2884 4607 0.118270695339941 0.118270695339941 -104.9733802 39.7448319 -104.9747635 39.7448376
-6370 5524 5525 0.0492521789985846 0.0492521789985846 -105.0392946 39.7738629 -105.0398709 39.7738651
-5087 4608 4609 0.117800444995037 0.117800444995037 -104.9761582 39.7448434 -104.977536 39.7448491
-5088 4609 4610 0.102641376464428 0.102641376464428 -104.977536 39.7448491 -104.9787365 39.7448539
-5089 4610 4611 0.0494099001663831 0.0494099001663831 -104.9787365 39.7448539 -104.9793144 39.7448564
-5090 4611 4612 0.0461096147761951 0.0461096147761951 -104.9793144 39.7448564 -104.9798537 39.7448587
-5091 4612 4613 0.102709817700352 0.102709817700352 -104.9798537 39.7448587 -104.981055 39.7448636
-5092 4613 4614 0.107788478157863 0.107788478157863 -104.981055 39.7448636 -104.9823157 39.7448688
-5093 4614 4615 0.106309381819152 0.106309381819152 -104.9823157 39.7448688 -104.9835591 39.744874
-5095 4618 4619 0.107514865026302 0.107514865026302 -104.9848531 39.7448793 -104.9861106 39.7448845
-5096 4619 4620 0.109618128547838 0.109618128547838 -104.9861106 39.7448845 -104.9873927 39.7448898
-5098 4621 4622 0.0890723635550207 0.0890723635550207 -104.9285042 39.7446792 -104.9274625 39.7446677
-5100 4623 4522 0.133190665745901 0.133190665745901 -105.0189564 39.7620167 -105.0189635 39.7632145
-5102 4624 4625 0.133658094916269 0.133658094916269 -105.0189554 39.7644371 -105.0189635 39.7656391
-5103 4625 4626 0.133656501053085 0.133656501053085 -105.0189635 39.7656391 -105.0189608 39.7668411
-5104 4626 1679 0.135152153872346 0.135152153872346 -105.0189608 39.7668411 -105.0189755 39.7680565
-5105 1679 4627 0.135024432224219 0.135024432224219 -105.0189755 39.7680565 -105.0189715 39.7692708
-5106 4627 2458 0.13515140493347 0.13515140493347 -105.0189715 39.7692708 -105.0189397 39.770486
-5107 2458 3226 0.138004027692966 0.138004027692966 -105.0189397 39.770486 -105.0189401 39.7717271
-5108 3226 4628 0.134323473833378 0.134323473833378 -105.0189401 39.7717271 -105.0189404 39.7729351
-5110 4629 4630 0.135446542572512 0.135446542572512 -105.0189408 39.7741298 -105.0189411 39.7753479
-19829 9519 10649 0.210072579992032 0.210072579992032 -105.0422578 39.7403509 -105.0422444 39.7384617
-5113 4632 4633 0.0947313767183171 0.0947313767183171 -105.0192808 39.733891 -105.0192915 39.7347429
-5115 4634 4635 0.0557913419625853 0.0557913419625853 -105.0192656 39.7311969 -105.0192742 39.7316986
-5116 4635 4636 0.0662366225916723 0.0662366225916723 -105.0192742 39.7316986 -105.0191455 39.732286
-5117 4636 4637 0.113593419326123 0.113593419326123 -105.0191455 39.732286 -105.0198922 39.7331309
-5120 4639 4640 0.132773960128622 0.132773960128622 -105.0193449 39.7766055 -105.0193287 39.7777995
-5121 4640 2488 0.134241502580257 0.134241502580257 -105.0193287 39.7777995 -105.0193545 39.7790066
-5122 2488 2829 0.133449886794901 0.133449886794901 -105.0193545 39.7790066 -105.0193075 39.7802062
-5123 2829 1437 0.199500232175966 0.199500232175966 -105.0193075 39.7802062 -105.0193247 39.7820003
-5124 1437 4641 0.151025004831673 0.151025004831673 -105.0193247 39.7820003 -105.0193032 39.7833584
-5126 4642 114 0.107737280643715 0.107737280643715 -105.0192742 39.7293289 -105.0192781 39.7302978
-5127 114 4643 0.05007218616811 0.05007218616811 -105.0192781 39.7302978 -105.0192742 39.7307481
-5129 4644 4645 0.207043620739087 0.207043620739087 -105.018682 39.7183967 -105.0186476 39.7202585
-5130 4645 1842 0.100003312332805 0.100003312332805 -105.0186476 39.7202585 -105.0186351 39.7211578
-5131 1842 2639 0.103345313678593 0.103345313678593 -105.0186351 39.7211578 -105.0186305 39.7220872
-5132 2639 4646 0.199597531872746 0.199597531872746 -105.0186305 39.7220872 -105.0186425 39.7238822
-5133 4646 4647 0.110338949764664 0.110338949764664 -105.0186425 39.7238822 -105.0186451 39.7248745
-5134 4647 4648 0.0862326024249021 0.0862326024249021 -105.0186451 39.7248745 -105.0186498 39.72565
-5135 4648 4649 0.00885483385456902 0.00885483385456902 -105.0186498 39.72565 -105.0186468 39.7257296
-5136 4649 4650 0.198772614686204 0.198772614686204 -105.0186468 39.7257296 -105.018672 39.7275171
-5138 275 4651 0.385379364010995 0.385379364010995 -105.0183528 39.7401138 -105.0171429 39.7434524
-5139 4651 4652 0.41471692527459 0.41471692527459 -105.0171429 39.7434524 -105.018965 39.7469089
-5140 4652 4653 0.0539741907357585 0.0539741907357585 -105.018965 39.7469089 -105.0189634 39.7473943
-5141 4653 4654 0.022194548523775 0.022194548523775 -105.0189634 39.7473943 -105.0189639 39.7475939
-5142 4654 4206 0.207869157343365 0.207869157343365 -105.0189639 39.7475939 -105.0189551 39.7494633
-5144 4655 4656 0.134281006104493 0.134281006104493 -105.0191439 39.7512186 -105.0191525 39.7524262
-5145 4656 2404 0.0664009097985413 0.0664009097985413 -105.0191525 39.7524262 -105.0191633 39.7530233
-5146 2404 4287 0.0661523414774278 0.0661523414774278 -105.0191633 39.7530233 -105.0191566 39.7536182
-5147 4287 4657 0.134479579019433 0.134479579019433 -105.0191566 39.7536182 -105.0191606 39.7548276
-5149 4658 4659 0.0841530151799317 0.0841530151799317 -105.0191633 39.7552936 -105.0191593 39.7560504
-5150 4659 23 0.134991372812694 0.134991372812694 -105.0191593 39.7560504 -105.0191645 39.7572644
-5152 4098 4660 0.191146561014702 0.191146561014702 -105.0193253 39.7838997 -105.0193139 39.7856187
-5153 4660 4661 0.201619149588839 0.201619149588839 -105.0193139 39.7856187 -105.0193192 39.7874319
-5154 4661 4662 0.406108499193961 0.406108499193961 -105.0193192 39.7874319 -105.0193029 39.7910841
-5155 1948 2564 0.13210280054913 0.13210280054913 -105.0095234 39.7384742 -105.0095126 39.7396622
-5157 4663 388 0.102051980712047 0.102051980712047 -104.9982624 39.7134841 -104.9994213 39.713266
-5159 1442 4664 0.0822712120832148 0.0822712120832148 -105.0038934 39.7139133 -105.0048549 39.7139327
-5160 4664 4665 0.119816357959701 0.119816357959701 -105.0048549 39.7139327 -105.0062556 39.7139435
-5161 4665 4666 0.204097543225869 0.204097543225869 -105.0062556 39.7139435 -105.0086417 39.7139435
-5162 4666 4667 0.203014171650501 0.203014171650501 -105.0086417 39.7139435 -105.011015 39.7139241
-5164 4668 1869 0.212544115775742 0.212544115775742 -104.9875126 39.713878 -104.9899974 39.7138897
-5165 1869 4183 0.200120502606903 0.200120502606903 -104.9899974 39.7138897 -104.992337 39.713887
-5167 4669 2615 0.177891060007606 0.177891060007606 -104.994016 39.720921 -104.9940077 39.7225208
-5169 4670 4671 0.124038366426802 0.124038366426802 -104.9940093 39.7230042 -104.9940131 39.7241197
-5171 2421 3232 0.143042998317255 0.143042998317255 -104.9936465 39.7704869 -104.993638 39.7717733
-5173 4672 2028 0.132076698976753 0.132076698976753 -104.9936519 39.772996 -104.9936175 39.7741835
-5174 2028 4673 0.145972981302679 0.145972981302679 -104.9936175 39.7741835 -104.9936347 39.7754962
-5175 4673 4674 0.125161327150552 0.125161327150552 -104.9936347 39.7754962 -104.993638 39.7766218
-5177 3368 4675 0.102054188376367 0.102054188376367 -104.9939645 39.7165966 -104.9939817 39.7175143
-5178 4675 3714 0.0982241705421038 0.0982241705421038 -104.9939817 39.7175143 -104.9940184 39.7183972
-5179 3714 4676 0.103510692140635 0.103510692140635 -104.9940184 39.7183972 -104.9940356 39.719328
-5181 4677 4678 0.0648734285683964 0.0648734285683964 -104.9941264 39.7346802 -104.99412 39.7352636
-5182 4678 615 0.177689539069832 0.177689539069832 -104.99412 39.7352636 -104.9941215 39.7368616
-5183 615 4679 0.176110549937417 0.176110549937417 -104.9941215 39.7368616 -104.9941204 39.7384454
-5184 4679 4680 0.173776320124656 0.173776320124656 -104.9941204 39.7384454 -104.9941139 39.7400082
-5186 4681 4682 0.184513059882878 0.184513059882878 -104.9939973 39.7256815 -104.9940278 39.7273407
-5187 4682 4685 0.175211932943401 0.175211932943401 -104.9940278 39.7273407 -104.9940378 39.7289164
-5189 4686 4687 0.349232193394911 0.349232193394911 -104.9940692 39.730515 -104.9941176 39.7336555
-5191 1357 4688 0.13277378561117 0.13277378561117 -104.992658 39.7824897 -104.9926323 39.7836836
-5193 4689 4690 0.459634230640815 0.459634230640815 -105.043221 39.7097211 -105.048594 39.7097607
-5194 4691 4692 0.0991279407871357 0.0991279407871357 -105.0362258 39.7094372 -105.0373845 39.7094504
-5195 4692 4693 0.0976485109623955 0.0976485109623955 -105.0373845 39.7094504 -105.038526 39.7094438
-5197 4694 4695 0.0991197857977998 0.0991197857977998 -105.0397105 39.7094438 -105.0408692 39.7094504
-5198 4695 4696 0.10132403770971 0.10132403770971 -105.0408692 39.7094504 -105.0420537 39.7094504
-5199 4696 4697 0.0991849406088648 0.0991849406088648 -105.0420537 39.7094504 -105.0432124 39.7094834
-5201 1637 4698 0.104258284661182 0.104258284661182 -105.0156865 39.7093381 -105.0169053 39.7093381
-5202 4698 4215 0.0991281021081487 0.0991281021081487 -105.0169053 39.7093381 -105.018064 39.7093249
-5203 4215 4699 0.0976569662788289 0.0976569662788289 -105.018064 39.7093249 -105.0192055 39.7093117
-5204 4699 195 0.10058858208642 0.10058858208642 -105.0192055 39.7093117 -105.0203814 39.7093117
-5205 195 2924 0.0991416985641161 0.0991416985641161 -105.0203814 39.7093117 -105.0215401 39.7093315
-5206 2924 4700 0.0991366648288655 0.0991366648288655 -105.0215401 39.7093315 -105.0226989 39.7093183
-5207 4700 1462 0.100582700478246 0.100582700478246 -105.0226989 39.7093183 -105.0238747 39.7093117
-5208 1462 4701 0.102418321557774 0.102418321557774 -105.0238747 39.7093117 -105.0250719 39.709323
-5212 4704 1872 0.0821525251365273 0.0821525251365273 -104.9890412 39.7093409 -104.9900015 39.7093504
-17295 10015 3501 0.20024191652091 0.20024191652091 -104.9447901 39.696585 -104.9447794 39.6983858
-5214 1445 4705 0.199727367553687 0.199727367553687 -105.0039116 39.7093165 -105.0062462 39.7093429
-5215 4705 4706 0.203375496003776 0.203375496003776 -105.0062462 39.7093429 -105.0086237 39.7093429
-5216 4706 4707 0.201909493723453 0.201909493723453 -105.0086237 39.7093429 -105.010984 39.7093561
-5218 4708 403 0.0454257390325356 0.0454257390325356 -104.9701293 39.7802775 -104.970135 39.780686
-5219 403 314 0.0562503326449317 0.0562503326449317 -104.970135 39.780686 -104.970235 39.781186
-5220 314 4709 0.11119492664509 0.11119492664509 -104.970235 39.781186 -104.970235 39.782186
-5222 4711 4170 0.194203357035268 0.194203357035268 -104.9694168 39.7183425 -104.9694426 39.7200889
-5223 4170 4712 0.208127290131148 0.208127290131148 -104.9694426 39.7200889 -104.969428 39.7219606
-5224 4712 4713 0.198927723766577 0.198927723766577 -104.969428 39.7219606 -104.969428 39.7237496
-5225 4713 4714 0.204935128047674 0.204935128047674 -104.969428 39.7237496 -104.9694407 39.7255926
-5226 4714 4715 0.188520271439654 0.188520271439654 -104.9694407 39.7255926 -104.9694452 39.727288
-5227 4715 3793 0.199712422815397 0.199712422815397 -104.9694452 39.727288 -104.9694638 39.729084
-5228 3793 4716 0.152617432717184 0.152617432717184 -104.9694638 39.729084 -104.9694538 39.7304565
-5229 4716 944 0.17742675257367 0.17742675257367 -104.9694538 39.7304565 -104.969481 39.732052
-5230 944 2228 0.183696049186415 0.183696049186415 -104.969481 39.732052 -104.9694709 39.733704
-5231 2228 4717 0.162619098965448 0.162619098965448 -104.9694709 39.733704 -104.9695136 39.7351661
-5232 4717 4718 0.189722276081874 0.189722276081874 -104.9695136 39.7351661 -104.9695224 39.7368723
-5233 4718 4719 0.171945095410338 0.171945095410338 -104.9695224 39.7368723 -104.9695494 39.7384185
-5234 4719 4720 0.177429725627003 0.177429725627003 -104.9695494 39.7384185 -104.9696136 39.7400134
-5235 4720 4721 0.102690706769844 0.102690706769844 -104.9696136 39.7400134 -104.9696847 39.7409353
-5236 4721 4722 0.0746285232074726 0.0746285232074726 -104.9696847 39.7409353 -104.969674 39.7416064
-5237 4722 668 0.00411462210691817 0.00411462210691817 -104.969674 39.7416064 -104.9696776 39.7416433
-5238 668 4723 0.00380364497345728 0.00380364497345728 -104.9696776 39.7416433 -104.9696767 39.7416775
-5240 4724 4604 0.175355420651263 0.175355420651263 -104.9696749 39.7432396 -104.9696679 39.7448166
-5242 1146 875 0.136296969384937 0.136296969384937 -104.9696868 39.7632831 -104.9696488 39.7645085
-5244 4463 2783 0.133890793284356 0.133890793284356 -104.9696481 39.7657517 -104.9696421 39.7669558
-5245 2783 4725 0.132805963492264 0.132805963492264 -104.9696421 39.7669558 -104.9696275 39.7681501
-5246 4725 4726 0.129702593554695 0.129702593554695 -104.9696275 39.7681501 -104.9698076 39.7693083
-5247 4726 4727 0.147549019452937 0.147549019452937 -104.9698076 39.7693083 -104.9683879 39.7700633
-5249 4728 4729 0.134556994040934 0.134556994040934 -104.9696547 39.7482082 -104.9696554 39.7494183
-5250 4729 4730 0.00403637583696172 0.00403637583696172 -104.9696554 39.7494183 -104.9696554 39.7494546
-5251 4730 4731 0.00537071495727797 0.00537071495727797 -104.9696554 39.7494546 -104.9696554 39.7495029
-5252 4731 4732 0.135502150823282 0.135502150823282 -104.9696554 39.7495029 -104.9696561 39.7507215
-5253 4732 4733 0.139193822038205 0.139193822038205 -104.9696561 39.7507215 -104.9696568 39.7519733
-5254 4733 820 0.139638598300339 0.139638598300339 -104.9696568 39.7519733 -104.9696574 39.7532291
-5255 820 3561 0.13948292881931 0.13948292881931 -104.9696574 39.7532291 -104.9696581 39.7544835
-5256 3561 4734 0.140172337301063 0.140172337301063 -104.9696581 39.7544835 -104.9696588 39.7557441
-5257 4734 4339 0.137170074560425 0.137170074560425 -104.9696588 39.7557441 -104.9696595 39.7569777
-5258 4339 4735 0.138982548276464 0.138982548276464 -104.9696595 39.7569777 -104.9696601 39.7582276
-5259 4735 3054 0.142752059367152 0.142752059367152 -104.9696601 39.7582276 -104.9696608 39.7595114
-5260 3054 4736 0.133100340642693 0.133100340642693 -104.9696608 39.7595114 -104.9696615 39.7607084
-5261 4736 4737 0.00492593525024253 0.00492593525024253 -104.9696615 39.7607084 -104.9696615 39.7607527
-5263 4738 3350 0.0528651873534889 0.0528651873534889 -104.9576522 39.7225573 -104.9570341 39.7225614
-5264 3350 4739 0.10426363885095 0.10426363885095 -104.9570341 39.7225614 -104.9558154 39.7225375
-5265 4739 4740 0.102034414473958 0.102034414473958 -104.9558154 39.7225375 -104.9546224 39.7225441
-14766 5462 7420 0.173120091654239 0.173120091654239 -104.9804447 39.73843 -104.9804389 39.7368731
-5266 4740 2059 0.102862063735102 0.102862063735102 -104.9546224 39.7225441 -104.9534197 39.7225407
-5267 2059 2645 0.103513208640623 0.103513208640623 -104.9534197 39.7225407 -104.9522095 39.7225539
-5268 2645 4111 0.104240888550753 0.104240888550753 -104.9522095 39.7225539 -104.9509907 39.7225605
-5270 4741 4742 0.102769926646245 0.102769926646245 -104.9498232 39.7225289 -104.9486216 39.7225355
-5271 4742 4743 0.104240916363933 0.104240916363933 -104.9486216 39.7225355 -104.9474028 39.7225421
-5272 4743 3452 0.105180194746781 0.105180194746781 -104.9474028 39.7225421 -104.9461731 39.7225293
-5273 3452 4744 0.10036641032569 0.10036641032569 -104.9461731 39.7225293 -104.9449996 39.7225355
-5274 4744 3882 0.105711927066125 0.105711927066125 -104.9449996 39.7225355 -104.9437636 39.7225289
-5275 3882 845 0.10371038656759 0.10371038656759 -104.9437636 39.7225289 -104.942551 39.7225227
-5276 845 4745 0.104689829390385 0.104689829390385 -104.942551 39.7225227 -104.9413272 39.7225428
-5277 4745 4746 0.0469848225431211 0.0469848225431211 -104.9413272 39.7225428 -104.9407779 39.7225362
-5279 2610 4747 0.106209148179485 0.106209148179485 -104.9874808 39.7225308 -104.986239 39.7225388
-5280 4747 4748 0.0529916423937814 0.0529916423937814 -104.986239 39.7225388 -104.9856194 39.7225378
-5282 4749 4750 0.0385383772070312 0.0385383772070312 -104.9854584 39.7225389 -104.9850078 39.7225409
-5283 4750 966 0.102580898845139 0.102580898845139 -104.9850078 39.7225409 -104.9838084 39.7225355
-5285 990 4751 0.0998368598850094 0.0998368598850094 -104.97408 39.7219474 -104.9729128 39.7219606
-5286 4751 4752 0.0507426333200071 0.0507426333200071 -104.9729128 39.7219606 -104.9723195 39.7219606
-5287 4752 4753 0.0483650078238011 0.0483650078238011 -104.9723195 39.7219606 -104.971754 39.7219606
-5288 4753 1987 0.0507354905741477 0.0507354905741477 -104.971754 39.7219606 -104.9711608 39.7219572
-5289 1987 4754 0.0483663202205498 0.0483663202205498 -104.9711608 39.7219572 -104.9705953 39.721954
-5290 4754 446 0.051479549664384 0.051479549664384 -104.9705953 39.721954 -104.9699934 39.7219574
-5291 446 4712 0.0483577654581108 0.0483577654581108 -104.9699934 39.7219574 -104.969428 39.7219606
-5292 4712 4755 0.101297109225192 0.101297109225192 -104.969428 39.7219606 -104.9682436 39.7219606
-5293 4755 4756 0.0117741801721385 0.0117741801721385 -104.9682436 39.7219606 -104.9681062 39.721954
-5294 4756 4757 0.0826634733388868 0.0826634733388868 -104.9681062 39.721954 -104.9671402 39.7219786
-5295 4757 4758 0.0342509974874732 0.0342509974874732 -104.9671402 39.7219786 -104.96674 39.72199
-5296 4758 4759 0.0175268141449879 0.0175268141449879 -104.96674 39.72199 -104.9665355 39.7220002
-5297 4759 4760 0.0234785463070149 0.0234785463070149 -104.9665355 39.7220002 -104.966261 39.7219977
-5298 4760 4761 0.0484972333709921 0.0484972333709921 -104.966261 39.7219977 -104.9656944 39.7219804
-5299 4761 3126 0.0271800985558075 0.0271800985558075 -104.9656944 39.7219804 -104.9653769 39.7219698
-5300 3126 3148 0.0183600177870361 0.0183600177870361 -104.9653769 39.7219698 -104.9651624 39.7219764
-5301 3148 3143 0.0330468719768483 0.0330468719768483 -104.9651624 39.7219764 -104.9647761 39.721983
-5302 3143 4762 0.0646645186035183 0.0646645186035183 -104.9647761 39.721983 -104.9640208 39.7219566
-5303 4762 3915 0.0595606911380279 0.0595606911380279 -104.9640208 39.7219566 -104.963325 39.7219789
-5304 3915 1052 0.123917065152439 0.123917065152439 -104.963325 39.7219789 -104.9620287 39.7224767
-5305 1052 4399 0.111768087862579 0.111768087862579 -104.9620287 39.7224767 -104.9607224 39.7225056
-5306 4399 4763 0.0469346079446244 0.0469346079446244 -104.9607224 39.7225056 -104.9601753 39.7225386
-5308 4764 4765 0.103730937833073 0.103730937833073 -104.959446 39.7225375 -104.9582333 39.722553
-5311 3155 4767 0.101587564129846 0.101587564129846 -104.9811238 39.7224897 -104.979936 39.722487
-5312 4767 4768 0.101450282305199 0.101450282305199 -104.979936 39.722487 -104.9787498 39.7224871
-5313 4768 4769 0.102136172096814 0.102136172096814 -104.9787498 39.7224871 -104.9775557 39.7224741
-5314 4769 4770 0.0492382919352757 0.0492382919352757 -104.9775557 39.7224741 -104.97698 39.7224773
-5316 4771 4772 0.100332506519832 0.100332506519832 -104.9764091 39.7224805 -104.975236 39.722487
-5317 4772 4773 0.0490390048099826 0.0490390048099826 -104.975236 39.722487 -104.9746628 39.7224758
-5318 4773 989 0.0495269165196006 0.0495269165196006 -104.9746628 39.7224758 -104.9740839 39.7224644
-5320 4774 4775 0.110656269548842 0.110656269548842 -104.9406125 39.7231655 -104.9393188 39.7231502
-5321 4775 4776 0.0922568863786424 0.0922568863786424 -104.9393188 39.7231502 -104.9382401 39.7231549
-5322 4776 4777 0.0968744294941002 0.0968744294941002 -104.9382401 39.7231549 -104.9371074 39.7231516
-5323 4777 4778 0.0933681364009737 0.0933681364009737 -104.9371074 39.7231516 -104.9360157 39.7231479
-5324 4778 2017 0.096243154582377 0.096243154582377 -104.9360157 39.7231479 -104.9348905 39.7231609
-5325 2017 2007 0.0302079551181684 0.0302079551181684 -104.9348905 39.7231609 -104.9345373 39.7231591
-5326 2007 4779 0.0612998845077431 0.0612998845077431 -104.9345373 39.7231591 -104.9338206 39.7231525
-5327 4779 2763 0.0939372654248904 0.0939372654248904 -104.9338206 39.7231525 -104.9327223 39.7231433
-5328 2763 4782 0.0939831368366747 0.0939831368366747 -104.9327223 39.7231433 -104.9316237 39.7231631
-5329 4782 2267 0.0946761779636641 0.0946761779636641 -104.9316237 39.7231631 -104.9305167 39.7231657
-5330 2267 3596 0.0957452269737562 0.0957452269737562 -104.9305167 39.7231657 -104.9293972 39.7231683
-5332 4783 2096 0.0938496563543502 0.0938496563543502 -104.9282926 39.7231695 -104.9271953 39.7231622
-5333 2096 4784 0.0942585077375453 0.0942585077375453 -104.9271953 39.7231622 -104.9260932 39.7231675
-5334 4784 4785 0.0947863905236846 0.0947863905236846 -104.9260932 39.7231675 -104.924985 39.7231786
-5335 4785 2332 0.0940516760171392 0.0940516760171392 -104.924985 39.7231786 -104.9238853 39.7231807
-6607 5694 5695 0.0154325675938591 0.0154325675938591 -105.0360627 39.7071657 -105.0362429 39.7071723
-5337 4089 4787 0.198005363606862 0.198005363606862 -105.0135338 39.7838344 -105.0135283 39.7856151
-5339 4788 4789 0.404049086255387 0.404049086255387 -105.013522 39.787431 -105.013525 39.7910647
-5340 4790 119 0.0976422064224313 0.0976422064224313 -105.0128361 39.7293183 -105.0128289 39.7301964
-5341 119 4791 0.0958834096516534 0.0958834096516534 -105.0128289 39.7301964 -105.0128297 39.7310587
-5342 4791 2312 0.0465244099907656 0.0465244099907656 -105.0128297 39.7310587 -105.0128321 39.7314771
-5344 4792 2484 0.133450471266853 0.133450471266853 -105.0126909 39.7777735 -105.0126768 39.7789736
-5345 2484 2823 0.13353766665554 0.13353766665554 -105.0126768 39.7789736 -105.0126652 39.7801745
-5346 2823 1414 0.132023734494372 0.132023734494372 -105.0126652 39.7801745 -105.0126737 39.7813618
-5347 1414 1354 0.131894209152808 0.131894209152808 -105.0126737 39.7813618 -105.0126985 39.7825478
-5348 1354 4793 0.0769784662870068 0.0769784662870068 -105.0126985 39.7825478 -105.0126685 39.7832397
-5350 4794 4795 0.0387509077758481 0.0387509077758481 -105.0131497 39.7568505 -105.0131391 39.7571989
-5351 4795 2952 0.134935498636386 0.134935498636386 -105.0131391 39.7571989 -105.013135 39.7584124
-5352 2952 4796 0.136197421914805 0.136197421914805 -105.013135 39.7584124 -105.0131498 39.7596372
-5353 4796 4797 0.129998438382796 0.129998438382796 -105.0131498 39.7596372 -105.0131458 39.7608063
-5354 4797 4798 0.134935065412598 0.134935065412598 -105.0131458 39.7608063 -105.0131467 39.7620198
-5356 2635 4799 0.200962590925039 0.200962590925039 -105.0131527 39.7220573 -105.0131527 39.72025
-5357 4799 4800 0.183883066303689 0.183883066303689 -105.0131527 39.72025 -105.0131518 39.7185963
-5358 4801 4802 0.0508168176081005 0.0508168176081005 -105.0127766 39.7620198 -105.0127798 39.7624768
-5359 4802 4516 0.0829526060571819 0.0829526060571819 -105.0127798 39.7624768 -105.012785 39.7632228
-6631 5709 5710 0.263510763458761 0.263510763458761 -105.0362218 39.7282406 -105.0362304 39.7306104
-5360 4516 4803 0.133849874797103 0.133849874797103 -105.012785 39.7632228 -105.0127721 39.7644265
-5361 4803 4804 0.135491260752817 0.135491260752817 -105.0127721 39.7644265 -105.0127751 39.765645
-5363 4805 1674 0.127474088546245 0.127474088546245 -105.0127781 39.7668943 -105.0127809 39.7680407
-5364 1674 4806 0.138137679733803 0.138137679733803 -105.0127809 39.7680407 -105.0127838 39.769283
-5366 4807 2455 0.134491411129426 0.134491411129426 -105.0135134 39.7692764 -105.0135199 39.7704859
-5367 2455 3223 0.138294178425788 0.138294178425788 -105.0135199 39.7704859 -105.0135136 39.7717296
-5369 4808 4809 0.133134706345954 0.133134706345954 -105.0135073 39.7729344 -105.0135012 39.7741317
-5370 4809 4810 0.135569856870466 0.135569856870466 -105.0135012 39.7741317 -105.0134951 39.7753509
-5371 4810 4811 0.134368341783309 0.134368341783309 -105.0134951 39.7753509 -105.0134913 39.7765593
-5372 4811 4812 0.133035455825063 0.133035455825063 -105.0134913 39.7765593 -105.0134831 39.7777557
-5374 4813 4814 0.201931453578911 0.201931453578911 -105.0131892 39.7275003 -105.0131982 39.7293163
-5376 123 4815 0.0586808902574419 0.0586808902574419 -105.0068372 39.7583708 -105.0073436 39.7587271
-5377 1608 1158 0.0531893778682351 0.0531893778682351 -104.9996914 39.7528341 -104.9992501 39.7524969
-5378 1158 4816 0.0522853387259307 0.0522853387259307 -104.9992501 39.7524969 -104.9988196 39.7521629
-5379 4816 4817 0.0528559175260399 0.0528559175260399 -104.9988196 39.7521629 -104.9983798 39.7518288
-5380 4817 4818 0.0526139267336242 0.0526139267336242 -104.9983798 39.7518288 -104.9979466 39.7514927
-5382 4819 4820 0.146802081972091 0.146802081972091 -105.0080831 39.7592475 -105.0093022 39.7601774
-5383 4820 4821 0.146390170205012 0.146390170205012 -105.0093022 39.7601774 -105.0105051 39.7611145
-5384 4821 4822 0.0767990953688077 0.0767990953688077 -105.0105051 39.7611145 -105.0111481 39.7615969
-5386 3289 4824 0.0733337823028737 0.0733337823028737 -104.9455011 39.7038602 -104.9453876 39.7032065
-5387 4824 4825 0.151650147757225 0.151650147757225 -104.9453876 39.7032065 -104.9446221 39.7019764
-5389 97 3502 0.20326475820455 0.20326475820455 -104.9442146 39.7002138 -104.9442195 39.6983858
-5390 3502 4826 0.200021830134173 0.200021830134173 -104.9442195 39.6983858 -104.944235 39.696587
-5391 4826 4827 0.204558997826367 0.204558997826367 -104.944235 39.696587 -104.9441769 39.6947479
-5392 4827 4828 0.201476703732084 0.201476703732084 -104.9441769 39.6947479 -104.9441889 39.692936
-5394 4829 4830 0.558813274805265 0.558813274805265 -104.9441934 39.6893133 -104.9442154 39.6842878
-5395 3635 1894 0.33996915967689 0.33996915967689 -104.9460363 39.7095165 -104.9460234 39.7064591
-5396 1894 4831 0.234959433855918 0.234959433855918 -104.9460234 39.7064591 -104.9460063 39.7043461
-5397 4831 3288 0.0548366602436518 0.0548366602436518 -104.9460063 39.7043461 -104.9459732 39.7038536
-5399 3879 4832 0.175154251791819 0.175154251791819 -104.9437605 39.7162182 -104.9437601 39.714643
-5400 4832 3070 0.175288290924905 0.175288290924905 -104.9437601 39.714643 -104.9437655 39.7130666
-5402 4833 4834 0.239573627081124 0.239573627081124 -104.9437517 39.7114947 -104.9437682 39.7093402
-5404 3962 4835 0.197156843459588 0.197156843459588 -105.0001681 39.7165803 -105.0001358 39.7148074
-5405 4835 4836 0.094417767822886 0.094417767822886 -105.0001358 39.7148074 -104.9997732 39.7140054
-5406 4836 388 0.087554257922167 0.087554257922167 -104.9997732 39.7140054 -104.9994213 39.713266
-5407 388 1384 0.157773442883539 0.157773442883539 -104.9994213 39.713266 -104.998769 39.7119388
-5408 1384 4837 0.0895725883825947 0.0895725883825947 -104.998769 39.7119388 -104.9983742 39.7111927
-5409 4837 325 0.282856295391869 0.282856295391869 -104.9983742 39.7111927 -104.9964344 39.7091326
-6684 2175 5744 0.101148378971839 0.101148378971839 -105.0146888 39.7729346 -105.0158722 39.7729208
-5410 325 4838 0.0837092029011689 0.0837092029011689 -104.9964344 39.7091326 -104.9964173 39.7083799
-5411 4838 4840 0.0963811879451104 0.0963811879451104 -104.9964173 39.7083799 -104.9965817 39.7075224
-5412 4840 4841 0.421707851811283 0.421707851811283 -104.9965817 39.7075224 -104.995653 39.7037978
-5415 1486 144 0.196859858102641 0.196859858102641 -105.0003404 39.6948842 -105.000336 39.6931138
-5417 2194 4843 0.069400098080988 0.069400098080988 -104.999248 39.7553456 -104.9986941 39.7558019
-5418 4843 4844 0.128982538897387 0.128982538897387 -104.9986941 39.7558019 -104.9974984 39.7565094
-5420 4845 4846 0.127385402005959 0.127385402005959 -105.0049838 39.7515411 -105.0038505 39.7522849
-5421 4846 4847 0.0485354577138893 0.0485354577138893 -105.0038505 39.7522849 -105.0034718 39.7526101
-5422 4847 2197 0.0570536883887032 0.0570536883887032 -105.0034718 39.7526101 -105.0028674 39.7528277
-5423 2197 2198 0.0030293307914236 0.0030293307914236 -105.0028674 39.7528277 -105.0028654 39.7528005
-5425 2191 4848 0.228805525488878 0.228805525488878 -104.9936227 39.759356 -104.9915939 39.7606983
-5427 4281 2319 0.149466526420244 0.149466526420244 -104.9797003 39.7709793 -104.9784558 39.7719237
-5428 2319 4849 0.264070561759483 0.264070561759483 -104.9784558 39.7719237 -104.9763149 39.7736361
-5430 4850 4851 0.124106376215018 0.124106376215018 -104.9969821 39.757589 -104.996067 39.7584555
-5432 4852 4853 0.107373531206162 0.107373531206162 -104.987369 39.7352666 -104.9861135 39.7352834
-5433 4853 4854 0.108589473424165 0.108589473424165 -104.9861135 39.7352834 -104.9848436 39.7352795
-5434 4854 4855 0.105767467639199 0.105767467639199 -104.9848436 39.7352795 -104.9836067 39.7352829
-5435 4855 4856 0.0608956612626877 0.0608956612626877 -104.9836067 39.7352829 -104.9828985 39.7352253
-5436 4856 4857 0.0536676140413411 0.0536676140413411 -104.9828985 39.7352253 -104.9822782 39.7351518
-5438 4858 4859 0.053767328384899 0.053767328384899 -104.981675 39.7351569 -104.9810463 39.7351489
-5439 4859 4860 0.0517270733374725 0.0517270733374725 -104.9810463 39.7351489 -104.9804415 39.7351584
-5440 4860 4861 0.0506527251945452 0.0506527251945452 -104.9804415 39.7351584 -104.9798492 39.735165
-5441 4861 4862 0.0500931909858678 0.0500931909858678 -104.9798492 39.735165 -104.9792634 39.7351686
-5442 4862 4863 0.0473439516711298 0.0473439516711298 -104.9792634 39.7351686 -104.9787104 39.7351477
-5444 4864 4865 0.0521797446029276 0.0521797446029276 -104.9781817 39.7351466 -104.9775716 39.7351373
-17093 9466 677 0.17846620541914 0.17846620541914 -104.9603865 39.7432158 -104.960408 39.7416109
-17094 677 3719 0.359015096413943 0.359015096413943 -104.960408 39.7416109 -104.9604099 39.7383822
-5446 4866 4867 0.0492134016241179 0.0492134016241179 -104.9770059 39.7351417 -104.9764304 39.7351462
-5447 4867 4868 0.0506066180898924 0.0506066180898924 -104.9764304 39.7351462 -104.9758386 39.7351502
-5448 4868 4869 0.0483319487475015 0.0483319487475015 -104.9758386 39.7351502 -104.9752734 39.735154
-5449 4869 4870 0.0507611555520018 0.0507611555520018 -104.9752734 39.735154 -104.9746798 39.7351494
-5450 4870 980 0.0494869052239766 0.0494869052239766 -104.9746798 39.7351494 -104.9741011 39.735145
-5451 980 4871 0.0481249293188332 0.0481249293188332 -104.9741011 39.735145 -104.9735383 39.7351456
-5452 4871 4872 0.0462779203242365 0.0462779203242365 -104.9735383 39.7351456 -104.9729971 39.7351462
-20332 10741 10746 0.00836528320993219 0.00836528320993219 -105.0236254 39.7588748 -105.0236226 39.75895
-5453 4872 4873 0.0504026300689218 0.0504026300689218 -104.9729971 39.7351462 -104.9724077 39.7351513
-5454 4873 4874 0.0485554829183078 0.0485554829183078 -104.9724077 39.7351513 -104.9718399 39.7351562
-5455 4874 4875 0.0534696334958417 0.0534696334958417 -104.9718399 39.7351562 -104.9712147 39.735165
-6731 5782 5783 0.00425137254991275 0.00425137254991275 -104.9941044 39.7503839 -104.9941411 39.7504097
-5456 4875 4876 0.0484412552758981 0.0484412552758981 -104.9712147 39.735165 -104.9706482 39.735165
-5458 4877 4717 0.0471074620934606 0.0471074620934606 -104.9700645 39.735165 -104.9695136 39.7351661
-5459 4717 4878 0.132709338239974 0.132709338239974 -104.9695136 39.7351661 -104.9679617 39.7351782
-5461 4879 3888 0.0983476297531957 0.0983476297531957 -104.9646143 39.7350528 -104.9634642 39.7350462
-5462 3888 1018 0.103492590132028 0.103492590132028 -104.9634642 39.7350462 -104.9622539 39.7350462
-5463 1018 4880 0.0514136092144711 0.0514136092144711 -104.9622539 39.7350462 -104.9616527 39.7350527
-5464 4880 4881 0.0525893579522226 0.0525893579522226 -104.9616527 39.7350527 -104.9610377 39.7350501
-5465 4881 3721 0.0533162444253223 0.0533162444253223 -104.9610377 39.7350501 -104.9604142 39.7350474
-5466 3721 4882 0.0519823122660099 0.0519823122660099 -104.9604142 39.7350474 -104.9598063 39.7350501
-5467 4882 4883 0.0522344210852062 0.0522344210852062 -104.9598063 39.7350501 -104.9591955 39.7350566
-5468 4883 4884 0.0505876398657049 0.0505876398657049 -104.9591955 39.7350566 -104.9586039 39.7350563
-5469 4884 3336 0.0998762512001326 0.0998762512001326 -104.9586039 39.7350563 -104.9574365 39.7350853
-5470 3336 4885 0.0991185753255084 0.0991185753255084 -104.9574365 39.7350853 -104.9562778 39.7351101
-5471 4885 4886 0.0963539908668941 0.0963539908668941 -104.9562778 39.7351101 -104.9551513 39.7351307
-5472 4886 4887 0.0885379825241657 0.0885379825241657 -104.9551513 39.7351307 -104.9541159 39.7351266
-5473 4887 4888 0.0119373214867398 0.0119373214867398 -104.9541159 39.7351266 -104.9539764 39.7351225
-5474 4888 2056 0.0843994384439808 0.0843994384439808 -104.9539764 39.7351225 -104.9529894 39.7351183
-5475 2056 4889 0.0133131298111966 0.0133131298111966 -104.9529894 39.7351183 -104.9528338 39.7351142
-5476 4889 2662 0.0974967707832978 0.0974967707832978 -104.9528338 39.7351142 -104.9516945 39.7351487
-5477 2662 4135 0.0954371783119999 0.0954371783119999 -104.9516945 39.7351487 -104.9505787 39.7351289
-5479 4890 4891 0.0937877451974264 0.0937877451974264 -104.9494864 39.7351307 -104.9483898 39.7351143
-5480 4891 4892 0.0948153596322219 0.0948153596322219 -104.9483898 39.7351143 -104.947281 39.73512
-5482 3459 4893 0.0478001833146321 0.0478001833146321 -104.9461795 39.735119 -104.9456205 39.7351177
-5484 4894 4895 0.0479027082737571 0.0479027082737571 -104.945082 39.7351139 -104.9445218 39.7351149
-5485 4895 4896 0.0478122905377956 0.0478122905377956 -104.9445218 39.7351149 -104.9439627 39.7351095
-5486 4896 859 0.0923773172496592 0.0923773172496592 -104.9439627 39.7351095 -104.9428825 39.7350975
-5487 859 454 0.0453886692992681 0.0453886692992681 -104.9428825 39.7350975 -104.9423517 39.7350982
-5488 454 4897 0.0453208554339034 0.0453208554339034 -104.9423517 39.7350982 -104.9418217 39.735096
-5489 4897 458 0.0453479211780813 0.0453479211780813 -104.9418217 39.735096 -104.9412914 39.7350999
-5492 4899 4900 0.0139467367099566 0.0139467367099566 -104.9407436 39.7346624 -104.9405805 39.7346624
-5493 4900 4901 0.0360421538971705 0.0360421538971705 -104.9405805 39.7346624 -104.9401595 39.7346781
-5494 4901 4902 0.0578381423218813 0.0578381423218813 -104.9401595 39.7346781 -104.9394839 39.7347032
-5495 4902 4903 0.00552719826630604 0.00552719826630604 -104.9394839 39.7347032 -104.9394193 39.7347015
-5496 4903 4904 0.0875768226675012 0.0875768226675012 -104.9394193 39.7347015 -104.9383957 39.7346753
-5497 4904 4905 0.0943606682528015 0.0943606682528015 -104.9383957 39.7346753 -104.9372922 39.7346747
-5498 4905 4906 0.0967192189659533 0.0967192189659533 -104.9372922 39.7346747 -104.9361612 39.7346852
-5499 4906 4907 0.098185525305783 0.098185525305783 -104.9361612 39.7346852 -104.935013 39.7346788
-5501 4908 2748 0.100541646868693 0.100541646868693 -104.9338415 39.7346803 -104.9326658 39.7346911
-5502 2748 4909 0.0966275722613029 0.0966275722613029 -104.9326658 39.7346911 -104.9315358 39.7346873
-5503 4909 4910 0.0992689355907326 0.0992689355907326 -104.9315358 39.7346873 -104.9303749 39.7346868
-5504 4910 4911 0.101479918551735 0.101479918551735 -104.9303749 39.7346868 -104.9291882 39.7346779
-6779 5822 3617 0.0484295076881561 0.0484295076881561 -104.9810031 39.6911678 -104.9804371 39.6911668
-5505 4911 4912 0.0969181343296834 0.0969181343296834 -104.9291882 39.7346779 -104.9280548 39.7346813
-5507 2121 4913 0.0979459294550903 0.0979459294550903 -104.9268925 39.7346889 -104.9257471 39.7346951
-5508 4913 4914 0.0979869433285632 0.0979869433285632 -104.9257471 39.7346951 -104.9246012 39.7346918
-5509 4914 4915 0.197888030311115 0.197888030311115 -104.9246012 39.7346918 -104.922287 39.7346902
-5510 3113 4916 0.205521796352519 0.205521796352519 -104.9578008 39.7129346 -104.9580269 39.7110945
-5511 4916 4917 0.213014583006008 0.213014583006008 -104.9580269 39.7110945 -104.9558286 39.7101945
-5514 1222 4919 0.098914174918745 0.098914174918745 -105.0123423 39.7375848 -105.0134991 39.7375845
-5516 4920 1622 0.0585646429204787 0.0585646429204787 -104.9894816 39.7286261 -104.9899006 39.7290427
-5517 1622 4921 0.122620409777708 0.122620409777708 -104.9899006 39.7290427 -104.9906535 39.7299812
-5518 4921 4922 0.218423462474676 0.218423462474676 -104.9906535 39.7299812 -104.9919185 39.7316877
-5520 2815 4923 0.167710746898946 0.167710746898946 -104.9919925 39.7317917 -104.9929606 39.7331034
-5521 4923 4924 0.0980438120983448 0.0980438120983448 -104.9929606 39.7331034 -104.9935332 39.7338673
-5523 4677 4925 0.0746274432259007 0.0746274432259007 -104.9941264 39.7346802 -104.9945592 39.735263
-5525 4926 617 0.0797365701263369 0.0797365701263369 -104.9952734 39.7362407 -104.9957301 39.7368659
-5526 617 4927 0.125187481931903 0.125187481931903 -104.9957301 39.7368659 -104.9964542 39.7378444
-5527 4927 4928 0.0778528067673226 0.0778528067673226 -104.9964542 39.7378444 -104.9968967 39.7384563
-5528 4928 4929 0.199074396611122 0.199074396611122 -104.9968967 39.7384563 -104.9980335 39.7400187
-5532 4932 4933 0.00438034032424269 0.00438034032424269 -104.9989204 39.7415592 -104.9989403 39.7415955
-5533 4933 4934 0.0884200199820011 0.0884200199820011 -104.9989403 39.7415955 -104.9993415 39.7423284
-5534 4934 4935 0.245891005874257 0.245891005874257 -104.9993415 39.7423284 -104.9999815 39.7444843
-5535 4935 4936 0.142250751986944 0.142250751986944 -104.9999815 39.7444843 -105.0001355 39.7457581
-5536 4936 4937 0.0173695104401488 0.0173695104401488 -105.0001355 39.7457581 -105.0002133 39.7459024
-5538 4938 4939 0.203545296385478 0.203545296385478 -104.9976397 39.7384568 -104.9964751 39.7368603
-5540 1358 4940 0.12982829991663 0.12982829991663 -104.9942545 39.7824831 -104.9942716 39.7836506
-5543 4079 2536 0.319784261068233 0.319784261068233 -104.9938425 39.7841519 -104.9938854 39.7870276
-5545 4926 616 0.0701041786984163 0.0701041786984163 -104.9952734 39.7362407 -104.9952849 39.7368711
-5546 616 4942 0.177022653633518 0.177022653633518 -104.9952849 39.7368711 -104.9952889 39.7384631
-5547 4942 4943 0.172063039899941 0.172063039899941 -104.9952889 39.7384631 -104.9952896 39.7400105
-5549 4944 4945 0.149558307265757 0.149558307265757 -104.9951662 39.7166026 -104.9951594 39.7179476
-5550 4945 3715 0.0517838841978355 0.0517838841978355 -104.9951594 39.7179476 -104.995157 39.7184133
-5551 3715 4948 0.104024626392335 0.104024626392335 -104.995157 39.7184133 -104.9951641 39.7193488
-5552 4948 4949 0.174823058982553 0.174823058982553 -104.9951641 39.7193488 -104.9951748 39.720921
-5553 4949 2616 0.177668474307762 0.177668474307762 -104.9951748 39.720921 -104.9951825 39.7225188
-5554 2616 4950 0.0535070014349516 0.0535070014349516 -104.9951825 39.7225188 -104.9951823 39.723
-5555 4950 4951 0.124049062817869 0.124049062817869 -104.9951823 39.723 -104.995182 39.7241156
-5556 4951 4952 0.174777210980769 0.174777210980769 -104.995182 39.7241156 -104.995189 39.7256874
-5557 4952 4953 0.127620790205472 0.127620790205472 -104.995189 39.7256874 -104.9951981 39.7268351
-5558 4953 4954 0.0551759306609038 0.0551759306609038 -104.9951981 39.7268351 -104.995202 39.7273313
-5559 4954 4955 0.176133032867453 0.176133032867453 -104.995202 39.7273313 -104.9951984 39.7289153
-5560 4955 4956 0.177512737206305 0.177512737206305 -104.9951984 39.7289153 -104.9952321 39.7305115
-5562 4406 4957 0.277669971565855 0.277669971565855 -105.0297541 39.6988189 -105.0329814 39.6985547
-5564 4958 4959 0.199658223163124 0.199658223163124 -105.0250687 39.6992129 -105.0274024 39.6992151
-5566 1598 1655 0.160087686125488 0.160087686125488 -105.0137725 39.6990764 -105.0156436 39.6990896
-5568 4960 1592 0.199275601482479 0.199275601482479 -105.0109882 39.7047956 -105.0133176 39.7047886
-5569 1592 1643 0.201203252625689 0.201203252625689 -105.0133176 39.7047886 -105.0156693 39.7047622
-5571 4961 4369 0.0888591183295397 0.0888591183295397 -105.0004878 39.7048835 -105.0015255 39.7049188
-5572 4369 1450 0.193863730230332 0.193863730230332 -105.0015255 39.7049188 -105.0037914 39.7048924
-5573 1450 4962 0.20633144077854 0.20633144077854 -105.0037914 39.7048924 -105.0062033 39.7048924
-5575 4963 4964 0.865026893272847 0.865026893272847 -105.0432124 39.7049338 -105.0532477 39.7039798
-5577 4966 4413 0.196777109156883 0.196777109156883 -105.027514 39.7049206 -105.0298142 39.704914
-5578 4413 4967 0.224682445917882 0.224682445917882 -105.0298142 39.704914 -105.0324406 39.7049206
-5579 4967 4304 0.221012468473467 0.221012468473467 -105.0324406 39.7049206 -105.0350241 39.7049272
-5582 4969 4970 0.107069922554974 0.107069922554974 -104.9800922 39.781891 -104.9800953 39.7828539
-5583 4970 4972 0.0948495530272937 0.0948495530272937 -104.9800953 39.7828539 -104.980098 39.7837069
-5586 4269 4973 0.080198786030782 0.080198786030782 -104.980164 39.7783344 -104.9800837 39.779053
-5587 4974 4767 0.0973607348320062 0.0973607348320062 -104.9799651 39.7216117 -104.979936 39.722487
-5588 4767 4975 0.179413565332346 0.179413565332346 -104.979936 39.722487 -104.9799308 39.7241005
-5589 4975 4976 0.169917329199621 0.169917329199621 -104.9799308 39.7241005 -104.9799349 39.7256286
-5590 4976 4977 0.181948721536683 0.181948721536683 -104.9799349 39.7256286 -104.9799397 39.7272649
-5591 4977 3805 0.200239828466703 0.200239828466703 -104.9799397 39.7272649 -104.9799392 39.7290657
-5592 3805 4978 0.152216995314545 0.152216995314545 -104.9799392 39.7290657 -104.9799295 39.7304346
-5594 3620 4979 0.203157103314032 0.203157103314032 -104.9803501 39.716491 -104.9802827 39.7183173
-5595 4979 2366 0.112909559408727 0.112909559408727 -104.9802827 39.7183173 -104.9802624 39.7193326
-5596 2366 4147 0.176980531073324 0.176980531073324 -104.9802624 39.7193326 -104.9802738 39.7209242
-5597 4147 4980 0.0231632311908037 0.0231632311908037 -104.9802738 39.7209242 -104.9802767 39.7211325
-5599 4981 4982 0.122490029160582 0.122490029160582 -104.9800351 39.7844962 -104.9800523 39.7855977
-5600 4982 4983 0.198021379234554 0.198021379234554 -104.9800523 39.7855977 -104.9800351 39.7873785
-5602 4831 3290 0.14433688220634 0.14433688220634 -104.9460063 39.7043461 -104.9444349 39.7038735
-5604 4248 1783 0.203809923376497 0.203809923376497 -104.985053 39.6966228 -104.9850787 39.69479
-5605 1783 4984 0.197266471488896 0.197266471488896 -104.9850787 39.69479 -104.9851312 39.6930164
-5606 4984 4985 0.203487572214077 0.203487572214077 -104.9851312 39.6930164 -104.9851243 39.6911864
-5607 4985 4986 0.197825547248631 0.197825547248631 -104.9851243 39.6911864 -104.9851579 39.6894075
-5608 4986 4987 2.41542068401941 2.41542068401941 -104.9851579 39.6894075 -104.9851604 39.6676851
-5610 4989 4990 0.0962172324904451 0.0962172324904451 -104.9850107 39.7147282 -104.985045 39.7138633
-5611 4990 3077 0.102766134165042 0.102766134165042 -104.985045 39.7138633 -104.9850625 39.7129392
-5613 4991 322 0.0217232354992756 0.0217232354992756 -105.0155876 39.7516074 -105.0158044 39.7515055
-5614 322 4992 0.0357866971477297 0.0357866971477297 -105.0158044 39.7515055 -105.0161841 39.75137
-5615 4992 4993 0.0111993418256192 0.0111993418256192 -105.0161841 39.75137 -105.0163127 39.7513508
-5618 4994 3114 0.0796924849623814 0.0796924849623814 -104.9518573 39.713502 -104.9523224 39.712881
-5619 3114 4995 0.20745656668227 0.20745656668227 -104.9523224 39.712881 -104.9523191 39.7110153
-5621 4996 4997 0.202175143533063 0.202175143533063 -104.9523584 39.6965806 -104.952353 39.6947624
-5622 4997 4998 0.201486340865611 0.201486340865611 -104.952353 39.6947624 -104.9523609 39.6929504
-5623 4998 4999 0.201289887939002 0.201289887939002 -104.9523609 39.6929504 -104.9523772 39.6911402
-5624 4999 5000 0.201274447612783 0.201274447612783 -104.9523772 39.6911402 -104.9523825 39.6893301
-5625 5000 5001 0.402211090441065 0.402211090441065 -104.9523825 39.6893301 -104.952412 39.685713
-5627 1058 5002 0.0523412516567849 0.0523412516567849 -104.9523656 39.702949 -104.9525063 39.7024909
-5628 5002 5003 0.185331167798599 0.185331167798599 -104.9525063 39.7024909 -104.9542392 39.7014907
-5629 5003 3655 0.0518833582791727 0.0518833582791727 -104.9542392 39.7014907 -104.9546075 39.70112
-5632 5004 4344 0.139169147250759 0.139169147250759 -104.9585604 39.7557264 -104.9585786 39.7569779
-5633 4344 5005 0.13717907888566 0.13717907888566 -104.9585786 39.7569779 -104.9585602 39.7582115
-5634 5005 3044 0.136502893019444 0.136502893019444 -104.9585602 39.7582115 -104.95856 39.7594391
-5635 3044 5006 0.140687498507325 0.140687498507325 -104.95856 39.7594391 -104.9585719 39.7607043
-5636 5006 5007 0.0045870406114538 0.0045870406114538 -104.9585719 39.7607043 -104.9585692 39.7607455
-5637 5007 5008 0.137903992793689 0.137903992793689 -104.9585692 39.7607455 -104.9585679 39.7619857
-5638 5008 1165 0.1390388743026 0.1390388743026 -104.9585679 39.7619857 -104.9585626 39.7632361
-5640 885 4470 0.139218366547603 0.139218366547603 -104.9585659 39.7644817 -104.9585565 39.7657337
-5641 4470 2792 0.134293285442621 0.134293285442621 -104.9585565 39.7657337 -104.9585673 39.7669414
-5642 2792 5009 0.131431211174063 0.131431211174063 -104.9585673 39.7669414 -104.9585862 39.7681233
-5644 5012 739 0.391173244940122 0.391173244940122 -104.9582526 39.7728926 -104.9582445 39.7764105
-5645 739 1559 0.139743785900176 0.139743785900176 -104.9582445 39.7764105 -104.9582585 39.7776672
-5646 1559 4275 0.141288921951359 0.141288921951359 -104.9582585 39.7776672 -104.9582338 39.7789377
-5647 4275 5013 0.120791048813674 0.120791048813674 -104.9582338 39.7789377 -104.9582338 39.780024
-5648 5013 5014 0.0105624832499152 0.0105624832499152 -104.9582338 39.780024 -104.9582392 39.7801189
-5649 5014 5015 0.0438951959332696 0.0438951959332696 -104.9582392 39.7801189 -104.9582016 39.7805126
-5650 5015 5016 0.160752036464104 0.160752036464104 -104.9582016 39.7805126 -104.9581399 39.7819575
-5652 5017 2345 0.117820938280592 0.117820938280592 -104.9590772 39.7184349 -104.9585534 39.7194149
-5654 4151 1536 0.0491815160552347 0.0491815160552347 -104.9582358 39.7209729 -104.9582358 39.7214152
-5655 1536 4765 0.126517768209698 0.126517768209698 -104.9582358 39.7214152 -104.9582333 39.722553
-5656 4765 5019 0.175921623374803 0.175921623374803 -104.9582333 39.722553 -104.9582358 39.7241351
-5657 5019 5020 0.0764689744574068 0.0764689744574068 -104.9582358 39.7241351 -104.9582512 39.7248227
-5658 5020 5021 0.102480731304504 0.102480731304504 -104.9582512 39.7248227 -104.958869 39.7256124
-5659 5021 1190 0.167860102396295 0.167860102396295 -104.958869 39.7256124 -104.9590238 39.7271173
-5660 1190 5022 0.022286088803945 0.022286088803945 -104.9590238 39.7271173 -104.9590198 39.7273177
-5661 5022 3787 0.1996828431131 0.1996828431131 -104.9590198 39.7273177 -104.9590433 39.7291134
-5662 3787 5023 0.154628071522294 0.154628071522294 -104.9590433 39.7291134 -104.9592069 39.7304983
-5687 5040 1763 0.201152967219908 0.201152967219908 -104.9768897 39.7183279 -104.9768983 39.7165189
-5663 5023 2252 0.333559522830682 0.333559522830682 -104.9592069 39.7304983 -104.9586038 39.733462
-5664 2252 5024 0.0290309763494638 0.0290309763494638 -104.9586038 39.733462 -104.9585953 39.733723
-5665 5024 4884 0.148258019557603 0.148258019557603 -104.9585953 39.733723 -104.9586039 39.7350563
-5666 4884 5025 0.194698119191853 0.194698119191853 -104.9586039 39.7350563 -104.9585847 39.7368072
-5667 5025 5026 0.176313474196241 0.176313474196241 -104.9585847 39.7368072 -104.9586987 39.7383904
-5668 5026 5027 0.192373972114261 0.192373972114261 -104.9586987 39.7383904 -104.9587811 39.7401193
-5669 5027 679 0.169442185038323 0.169442185038323 -104.9587811 39.7401193 -104.9591758 39.7416126
-5672 5029 4596 0.157086480064782 0.157086480064782 -104.9591698 39.7434491 -104.9598011 39.7447758
-5674 5030 5031 0.105448542276863 0.105448542276863 -104.987378 39.7401161 -104.9884893 39.7405273
-5677 5032 5034 0.00520403492524916 0.00520403492524916 -104.9757617 39.7494389 -104.9757621 39.7494857
-5678 5034 5035 0.00442576451440448 0.00442576451440448 -104.9757621 39.7494857 -104.9757616 39.7495255
-5679 5035 5036 0.135764863246336 0.135764863246336 -104.9757616 39.7495255 -104.9757455 39.7507464
-5681 5037 813 0.139038307562208 0.139038307562208 -104.9757231 39.7519986 -104.9757523 39.7532488
-5682 813 3554 0.152271167865336 0.152271167865336 -104.9757523 39.7532488 -104.9757464 39.7546182
-5684 5038 5039 0.16037248823512 0.16037248823512 -104.9760611 39.7840873 -104.976207 39.7855252
-5686 2368 5040 0.131780679502724 0.131780679502724 -104.9775163 39.7194106 -104.9768897 39.7183279
-5689 5041 5042 0.178235693488978 0.178235693488978 -104.9761583 39.7400231 -104.9761502 39.741626
-5690 5042 663 0.00303458618342364 0.00303458618342364 -104.9761502 39.741626 -104.9761569 39.7416528
-5691 663 5043 0.17896901951739 0.17896901951739 -104.9761569 39.7416528 -104.9761631 39.7432623
-5692 5043 4608 0.175810797673871 0.175810797673871 -104.9761631 39.7432623 -104.9761582 39.7448434
-5693 4608 5044 0.116588664300191 0.116588664300191 -104.9761582 39.7448434 -104.9761532 39.7458919
-5694 5044 5045 0.0312349930548565 0.0312349930548565 -104.9761532 39.7458919 -104.9761515 39.7461728
-5695 5045 3670 0.147012417470316 0.147012417470316 -104.9761515 39.7461728 -104.976114 39.7474946
-5697 5046 4162 0.0660609059196111 0.0660609059196111 -104.9763833 39.7195295 -104.9763833 39.7201236
-5698 4162 4771 0.262084611870375 0.262084611870375 -104.9763833 39.7201236 -104.9764091 39.7224805
-5699 4771 5047 0.17859412824458 0.17859412824458 -104.9764091 39.7224805 -104.9763952 39.7240866
-5700 5047 5048 0.1691727396202 0.1691727396202 -104.9763952 39.7240866 -104.9764012 39.725608
-5701 5048 5049 0.184472749838431 0.184472749838431 -104.9764012 39.725608 -104.9764055 39.727267
-5702 5049 3801 0.20027318311003 0.20027318311003 -104.9764055 39.727267 -104.9764057 39.7290681
-5703 3801 5050 0.154503416019497 0.154503416019497 -104.9764057 39.7290681 -104.976386 39.7304575
-5704 5050 932 0.176703352691921 0.176703352691921 -104.976386 39.7304575 -104.9764282 39.7320463
-5706 2217 4867 0.160601247675141 0.160601247675141 -104.9764407 39.7337019 -104.9764304 39.7351462
-5707 4867 5051 0.19278749199245 0.19278749199245 -104.9764304 39.7351462 -104.976452 39.7368799
-5708 5051 5052 0.171738832244774 0.171738832244774 -104.976452 39.7368799 -104.976473 39.7384243
-5709 5052 5053 0.125039053144726 0.125039053144726 -104.976473 39.7384243 -104.9764695 39.7395488
-5710 5053 5054 0.0536646579213684 0.0536646579213684 -104.9764695 39.7395488 -104.9764641 39.7400314
-5712 2413 5055 0.0539797182371141 0.0539797182371141 -105.0411693 39.753016 -105.04162 39.753356
-5713 5055 5056 0.0555511846145791 0.0555511846145791 -105.04162 39.753356 -105.0422607 39.7532726
-5714 5056 5057 0.0564985233788716 0.0564985233788716 -105.0422607 39.7532726 -105.0429216 39.7532726
-5715 5058 5059 0.0116997793337229 0.0116997793337229 -104.9592906 39.7801271 -104.9592971 39.780022
-5716 5059 369 0.121769364056454 0.121769364056454 -104.9592971 39.780022 -104.9593952 39.7789295
-5717 369 1558 0.13936986171661 0.13936986171661 -104.9593952 39.7789295 -104.959414 39.7776762
-5718 1558 738 0.139138948896028 0.139138948896028 -104.959414 39.7776762 -104.9594193 39.7764249
-5719 738 5060 0.392796141218442 0.392796141218442 -104.9594193 39.7764249 -104.9594167 39.7728924
-5721 5061 5062 0.12142771399357 0.12142771399357 -104.9586363 39.7111011 -104.958436 39.71002
-5722 5062 5063 0.0553958184996893 0.0553958184996893 -104.958436 39.71002 -104.957987 39.709661
-5723 5063 4434 0.0566894209705876 0.0566894209705876 -104.957987 39.709661 -104.957527 39.709294
-5724 4434 2921 0.313688166061769 0.313688166061769 -104.957527 39.709294 -104.954906 39.707321
-5726 5062 422 0.127478280907992 0.127478280907992 -104.958436 39.71002 -104.958788 39.708906
-5727 422 5063 0.108364291033736 0.108364291033736 -104.958788 39.708906 -104.957987 39.709661
-5729 5066 5067 0.177224259300569 0.177224259300569 -105.0384889 39.7165547 -105.0384982 39.7149609
-5730 5067 1319 0.176633232309172 0.176633232309172 -105.0384982 39.7149609 -105.0385003 39.7133724
-5731 1319 1375 0.177680959479223 0.177680959479223 -105.0385003 39.7133724 -105.0384745 39.7117746
-5732 1375 5068 0.0602164425054291 0.0602164425054291 -105.0384745 39.7117746 -105.038466 39.7112331
-5733 5068 288 0.02427348670764 0.02427348670764 -105.038466 39.7112331 -105.0384831 39.7110152
-5734 288 5069 0.0611513015273674 0.0611513015273674 -105.0384831 39.7110152 -105.0385432 39.7104672
-5735 5069 4693 0.113806398942027 0.113806398942027 -105.0385432 39.7104672 -105.038526 39.7094438
-5736 4693 5070 0.156397394554719 0.156397394554719 -105.038526 39.7094438 -105.0385346 39.7080373
-5738 1493 182 0.220724132280051 0.220724132280051 -105.037738 39.695087 -105.0379081 39.6931063
-5739 182 1710 0.202718600976859 0.202718600976859 -105.0379081 39.6931063 -105.0378737 39.6912834
-5742 5072 5073 0.0235981208081862 0.0235981208081862 -105.0381596 39.707404 -105.0381339 39.7071927
-5743 5073 5074 0.173346209176791 0.173346209176791 -105.0381339 39.7071927 -105.0381484 39.7056338
-5744 5074 5075 0.183560584904857 0.183560584904857 -105.0381484 39.7056338 -105.0381484 39.703983
-5746 5076 5077 0.201201481229781 0.201201481229781 -105.037951 39.7021472 -105.0379338 39.7003378
-5747 5077 5078 0.196158089713223 0.196158089713223 -105.0379338 39.7003378 -105.0378651 39.6985745
-5750 5080 304 0.450334409862505 0.450334409862505 -105.001279 39.7649816 -105.0045998 39.7618374
-5755 5083 4179 0.23271473726582 0.23271473726582 -104.9957531 39.7077667 -104.9951206 39.7057312
-5757 5084 5085 0.100586570089845 0.100586570089845 -104.9908575 39.7165834 -104.9908403 39.7174879
-5758 5085 3712 0.0974495496468689 0.0974495496468689 -104.9908403 39.7174879 -104.9908169 39.7183641
-5759 3712 5088 0.107190885250137 0.107190885250137 -104.9908169 39.7183641 -104.9908341 39.719328
-5761 1840 2612 0.176114771519943 0.176114771519943 -104.9908489 39.7209474 -104.9908346 39.7225312
-5762 2612 5089 0.0532850041931226 0.0532850041931226 -104.9908346 39.7225312 -104.990837 39.7230104
-5763 5089 5090 0.123805391077944 0.123805391077944 -104.990837 39.7230104 -104.9908427 39.7241238
-5764 5090 5091 0.0921824286504112 0.0921824286504112 -104.9908427 39.7241238 -104.9908359 39.7249528
-5765 5091 5092 0.0849604613604367 0.0849604613604367 -104.9908359 39.7249528 -104.9904446 39.7256551
-5767 5093 4077 0.0433656831085181 0.0433656831085181 -104.9901518 39.7836836 -104.9901174 39.7840727
-5768 4077 5094 0.807132686207363 0.807132686207363 -104.9901174 39.7840727 -104.989017 39.791282
-5769 5092 5095 0.184721084541763 0.184721084541763 -104.9904446 39.7256551 -104.9902684 39.7273108
-5770 5095 5096 0.112121546650621 0.112121546650621 -104.9902684 39.7273108 -104.9899868 39.7282956
-5771 5096 5097 0.012405493892182 0.012405493892182 -104.9899868 39.7282956 -104.9898761 39.7283677
-12067 8534 8532 0.0417307390941294 0.0417307390941294 -104.9544306 39.7462589 -104.9548313 39.7460446
-5774 5099 5100 0.195348601056539 0.195348601056539 -104.9781101 39.6911501 -104.9781016 39.6893933
-5775 5100 5101 1.61385249170336 1.61385249170336 -104.9781016 39.6893933 -104.978136 39.6748796
-5776 4334 5102 0.201130889411283 0.201130889411283 -104.9780308 39.7165201 -104.9780399 39.7147113
-5778 5103 2576 0.52830768269949 0.52830768269949 -104.9499914 39.7083084 -104.9558107 39.7098997
-5782 1145 874 0.139433776255124 0.139433776255124 -104.970897 39.7632567 -104.9708813 39.7645106
-5783 874 4462 0.13822164303959 0.13822164303959 -104.9708813 39.7645106 -104.9708658 39.7657536
-5784 4462 2782 0.134807869792579 0.134807869792579 -104.9708658 39.7657536 -104.9708506 39.7669659
-5786 5108 5109 0.136531475414142 0.136531475414142 -104.9708358 39.7681531 -104.9708204 39.7693809
-5787 5110 5111 0.166792389966844 0.166792389966844 -104.971535 39.780686 -104.971535 39.782186
-5788 5111 5112 0.0444779706577198 0.0444779706577198 -104.971535 39.782186 -104.971535 39.782586
-5789 5113 4169 0.194541086455447 0.194541086455447 -104.9705842 39.7183394 -104.9706014 39.7200889
-5790 4169 4754 0.20739031390672 0.20739031390672 -104.9706014 39.7200889 -104.9705953 39.721954
-5791 4754 5114 0.19819923300798 0.19819923300798 -104.9705953 39.721954 -104.9705782 39.7237364
-5792 5114 5115 0.205574207946515 0.205574207946515 -104.9705782 39.7237364 -104.9705996 39.7255851
-5793 5115 5116 0.18969176296687 0.18969176296687 -104.9705996 39.7255851 -104.9706146 39.727291
-5795 3795 5117 0.153449380032665 0.153449380032665 -104.9706199 39.7290832 -104.9706239 39.7304632
-5796 5117 942 0.178860285004076 0.178860285004076 -104.9706239 39.7304632 -104.9706365 39.7320717
-5797 942 2226 0.181510674241125 0.181510674241125 -104.9706365 39.7320717 -104.9706554 39.733704
-5798 2226 4876 0.162456954471732 0.162456954471732 -104.9706554 39.733704 -104.9706482 39.735165
-5799 4876 5118 0.192077540660028 0.192077540660028 -104.9706482 39.735165 -104.9706897 39.7368921
-5800 5118 5119 0.169639680241679 0.169639680241679 -104.9706897 39.7368921 -104.9706954 39.7384177
-5801 5119 5120 0.176431836448169 0.176431836448169 -104.9706954 39.7384177 -104.9707273 39.7400042
-5805 5123 5124 0.138482206224941 0.138482206224941 -104.9708859 39.7607568 -104.9708846 39.7620022
-5807 5125 5126 0.196467690434778 0.196467690434778 -104.970211 39.7696514 -104.9683965 39.7707362
-5809 5127 5128 0.177236972666439 0.177236972666439 -104.9709293 39.7400169 -104.9709165 39.7416108
-5810 5128 666 0.00411429224620583 0.00411429224620583 -104.9709165 39.7416108 -104.9709162 39.7416478
-5811 666 5129 0.00398081510277296 0.00398081510277296 -104.9709162 39.7416478 -104.970916 39.7416836
-5812 5129 5130 0.0219503048251099 0.0219503048251099 -104.970916 39.7416836 -104.9709144 39.741881
-5813 5130 5131 0.152662411900591 0.152662411900591 -104.9709144 39.741881 -104.9709034 39.7432539
-5814 5131 4605 0.174323615227633 0.174323615227633 -104.9709034 39.7432539 -104.9708908 39.7448216
-5815 4605 3691 0.233536002014651 0.233536002014651 -104.9708908 39.7448216 -104.970874 39.7469218
-5816 3691 5132 0.0578224768050087 0.0578224768050087 -104.970874 39.7469218 -104.9708698 39.7474418
-5817 4901 5133 0.0573209620432963 0.0573209620432963 -104.9401595 39.7346781 -104.9395046 39.7345681
-5819 5134 5135 0.102452742724465 0.102452742724465 -104.9384246 39.7341756 -104.9373097 39.7338382
-5820 5135 5136 0.101180875593513 0.101180875593513 -104.9373097 39.7338382 -104.9361524 39.7336487
-5821 5136 5137 0.0993172550227887 0.0993172550227887 -104.9361524 39.7336487 -104.935004 39.7335152
-5822 5137 5138 0.0973174615516026 0.0973174615516026 -104.935004 39.7335152 -104.933879 39.733383
-5823 5138 5139 0.0592813821516456 0.0592813821516456 -104.933879 39.733383 -104.9331993 39.7332781
-5824 5139 5140 0.0572628386692297 0.0572628386692297 -104.9331993 39.7332781 -104.9325581 39.7331296
-5825 5140 5141 0.0908568563064313 0.0908568563064313 -104.9325581 39.7331296 -104.931599 39.732778
-5826 5141 5142 0.108696465338082 0.108696465338082 -104.931599 39.732778 -104.930434 39.732387
-5827 5142 5143 0.117446225438567 0.117446225438567 -104.930434 39.732387 -104.9292349 39.731872
-5828 5143 5144 0.115052510861077 0.115052510861077 -104.9292349 39.731872 -104.9280639 39.7313625
-5831 2118 5146 0.132113404680538 0.132113404680538 -104.9268844 39.7308196 -104.9257328 39.7300276
-5832 5146 5147 0.0733188328504862 0.0733188328504862 -104.9257328 39.7300276 -104.925132 39.7295572
-5833 5147 5148 0.0348417204507369 0.0348417204507369 -104.925132 39.7295572 -104.9250676 39.7292478
-5860 3449 5168 0.101446764740706 0.101446764740706 -104.9461482 39.7162465 -104.9449622 39.716238
-5835 4903 5149 0.0928559279225574 0.0928559279225574 -104.9394193 39.7347015 -104.9384043 39.7344047
-5836 5149 5150 0.101009488468598 0.101009488468598 -104.9384043 39.7344047 -104.9373129 39.7340572
-5837 5150 5151 0.101494340144734 0.101494340144734 -104.9373129 39.7340572 -104.9361564 39.7338519
-12222 8597 8598 0.00932829170104997 0.00932829170104997 -105.0075587 39.7444522 -105.0076164 39.7445234
-12223 8598 8599 0.0244824521093208 0.0244824521093208 -105.0076164 39.7445234 -105.0077602 39.7447138
-5838 5151 5152 0.100261540674961 0.100261540674961 -104.9361564 39.7338519 -104.9349958 39.7337238
-5839 5152 5153 0.221241395423211 0.221241395423211 -104.9349958 39.7337238 -104.9324587 39.7333339
-5840 5153 2236 0.0908651857276488 0.0908651857276488 -104.9324587 39.7333339 -104.9314966 39.732987
-5841 2236 5154 0.10116756602451 0.10116756602451 -104.9314966 39.732987 -104.930434 39.732587
-5842 5154 5155 0.114191873365342 0.114191873365342 -104.930434 39.732587 -104.9292584 39.7320999
-5843 5155 5156 0.113038208940698 0.113038208940698 -104.9292584 39.7320999 -104.9280694 39.7316557
-5844 5156 2119 0.121856512679973 0.121856512679973 -104.9280694 39.7316557 -104.9268735 39.7310598
-5845 2119 5157 0.125333022212683 0.125333022212683 -104.9268735 39.7310598 -104.9257489 39.730337
-5846 5157 5158 0.121389833666029 0.121389833666029 -104.9257489 39.730337 -104.9248331 39.7295029
-5847 5158 5159 0.0390946612702668 0.0390946612702668 -104.9248331 39.7295029 -104.9245238 39.729244
-5850 5160 2133 0.195466658548015 0.195466658548015 -104.9270451 39.7456493 -104.9269818 39.7474065
-5854 5163 2476 0.202535777887142 0.202535777887142 -104.9274829 39.7455899 -104.9274657 39.7474113
-5856 5164 5165 0.0156138568041909 0.0156138568041909 -104.9499442 39.7162631 -104.9497617 39.7162663
-5857 5165 5166 0.100589160353206 0.100589160353206 -104.9497617 39.7162663 -104.9485858 39.7162531
-5858 5166 5167 0.104247833927165 0.104247833927165 -104.9485858 39.7162531 -104.947367 39.7162531
-5859 5167 3449 0.104250422099089 0.104250422099089 -104.947367 39.7162531 -104.9461482 39.7162465
-5861 5168 3879 0.102808830950679 0.102808830950679 -104.9449622 39.716238 -104.9437605 39.7162182
-5862 3879 841 0.103522696858037 0.103522696858037 -104.9437605 39.7162182 -104.9425503 39.7162314
-5863 841 5169 0.102719682704035 0.102719682704035 -104.9425503 39.7162314 -104.9413494 39.7162383
-5864 5169 5170 0.0474110701835865 0.0474110701835865 -104.9413494 39.7162383 -104.9407951 39.7162379
-5866 5171 5172 0.106685417852495 0.106685417852495 -104.9874858 39.7165623 -104.9862386 39.7165499
-5867 5172 5173 0.0515553847760644 0.0515553847760644 -104.9862386 39.7165499 -104.9856359 39.7165436
-5868 5173 4988 0.0505202363313306 0.0505202363313306 -104.9856359 39.7165436 -104.9850453 39.7165375
-17163 5107 1802 0.195280530173469 0.195280530173469 -104.9740336 39.6929885 -104.9740336 39.6947447
-5869 4988 962 0.105015490507221 0.105015490507221 -104.9850453 39.7165375 -104.983818 39.7165111
-5870 962 4141 0.100506431839732 0.100506431839732 -104.983818 39.7165111 -104.982643 39.7165018
-5871 4141 3161 0.101307790482977 0.101307790482977 -104.982643 39.7165018 -104.9814586 39.7164952
-5872 3161 3620 0.0948143449717999 0.0948143449717999 -104.9814586 39.7164952 -104.9803501 39.716491
-5873 3620 1826 0.102953991217456 0.102953991217456 -104.9803501 39.716491 -104.9791466 39.7165069
-5874 1826 4334 0.0954488426398559 0.0954488426398559 -104.9791466 39.7165069 -104.9780308 39.7165201
-5876 5174 1763 0.050455869495655 0.050455869495655 -104.9774882 39.7165195 -104.9768983 39.7165189
-5877 1763 4616 0.0477367574799653 0.0477367574799653 -104.9768983 39.7165189 -104.9763402 39.7165163
-5878 4616 5175 0.0514444022852647 0.0514444022852647 -104.9763402 39.7165163 -104.9757389 39.7165269
-5879 5175 4306 0.0486177089369888 0.0486177089369888 -104.9757389 39.7165269 -104.9751709 39.7165103
-5880 4306 994 0.0512355770161431 0.0512355770161431 -104.9751709 39.7165103 -104.9745719 39.7165069
-5881 994 4309 0.0460747606120818 0.0460747606120818 -104.9745719 39.7165069 -104.9740333 39.716514
-5882 4309 2915 0.0558782384698847 0.0558782384698847 -104.9740333 39.716514 -104.9733801 39.7165226
-5883 2915 2916 0.0205535416898751 0.0205535416898751 -104.9733801 39.7165226 -104.9731398 39.7165226
-5909 5190 5191 0.0526195895778432 0.0526195895778432 -105.0433305 39.7245627 -105.0439457 39.7245698
-5887 587 588 0.0168822192889414 0.0168822192889414 -105.0297456 39.724543 -105.029943 39.724543
-5888 588 5177 0.110837670707715 0.110837670707715 -105.029943 39.724543 -105.031239 39.724543
-5889 5177 1399 0.106464576541899 0.106464576541899 -105.031239 39.724543 -105.0324836 39.7245232
-5890 1399 5178 0.00837287829367045 0.00837287829367045 -105.0324836 39.7245232 -105.0325815 39.7245237
-5891 5178 5179 0.0973274399582508 0.0973274399582508 -105.0325815 39.7245237 -105.0337195 39.7245298
-5892 5179 5180 0.0713882284598403 0.0713882284598403 -105.0337195 39.7245298 -105.0345542 39.7245247
-5893 5180 3386 0.0465173628433736 0.0465173628433736 -105.0345542 39.7245247 -105.0350981 39.7245214
-5894 3386 5181 0.0466294338105993 0.0466294338105993 -105.0350981 39.7245214 -105.0356433 39.7245256
-5895 5181 5182 0.0461505269276214 0.0461505269276214 -105.0356433 39.7245256 -105.0361829 39.7245298
-5896 5182 2801 0.0476762891770853 0.0476762891770853 -105.0361829 39.7245298 -105.0367403 39.7245365
-5897 2801 5183 0.0462906353191723 0.0462906353191723 -105.0367403 39.7245365 -105.0372815 39.724543
-5898 5183 5184 0.0462689908237556 0.0462689908237556 -105.0372815 39.724543 -105.0378224 39.7245345
-5899 5184 5185 0.0466469950505128 0.0466469950505128 -105.0378224 39.7245345 -105.0383678 39.7245391
-5900 5185 5186 0.0471146492559741 0.0471146492559741 -105.0383678 39.7245391 -105.0389187 39.7245383
-5901 5186 5187 0.045278465180898 0.045278465180898 -105.0389187 39.7245383 -105.0394481 39.7245427
-5902 5187 1570 0.0464406557272166 0.0464406557272166 -105.0394481 39.7245427 -105.0399911 39.7245463
-5903 1570 1095 0.0464745881593838 0.0464745881593838 -105.0399911 39.7245463 -105.0405345 39.724543
-5904 1095 5188 0.0475893065083787 0.0475893065083787 -105.0405345 39.724543 -105.0410909 39.7245488
-7153 6059 6060 0.0479619125752321 0.0479619125752321 -105.0327949 39.7856263 -105.0333562 39.7856282
-5905 5188 5189 0.0454253204645735 0.0454253204645735 -105.0410909 39.7245488 -105.041622 39.7245543
-5906 5189 1538 0.0460968804258839 0.0460968804258839 -105.041622 39.7245543 -105.042161 39.7245549
-5907 1538 3854 0.04697776477365 0.04697776477365 -105.042161 39.7245549 -105.0427103 39.7245555
-5908 3854 5190 0.0530473283120516 0.0530473283120516 -105.0427103 39.7245555 -105.0433305 39.7245627
-5911 5192 5193 0.0515193353777817 0.0515193353777817 -104.9874942 39.724123 -104.9880966 39.7241225
-5913 5194 5195 0.0687779636933597 0.0687779636933597 -104.9883782 39.7241223 -104.9891824 39.7241217
-5914 5195 5090 0.141994718426853 0.141994718426853 -104.9891824 39.7241217 -104.9908427 39.7241238
-5915 5090 5196 0.112634336237225 0.112634336237225 -104.9908427 39.7241238 -104.9921597 39.7241238
-5916 5196 5197 0.0575743623042855 0.0575743623042855 -104.9921597 39.7241238 -104.9928329 39.7241238
-5917 5197 4671 0.100935765794822 0.100935765794822 -104.9928329 39.7241238 -104.9940131 39.7241197
-5918 4671 4951 0.0999693670841652 0.0999693670841652 -104.9940131 39.7241197 -104.995182 39.7241156
-5919 4951 5198 0.0511858126232579 0.0511858126232579 -104.995182 39.7241156 -104.9957805 39.7241162
-5921 5199 5200 0.0499779255146796 0.0499779255146796 -104.9963759 39.7241168 -104.9969602 39.7241241
-5922 5200 5201 0.0499920394458099 0.0499920394458099 -104.9969602 39.7241241 -104.9975447 39.7241295
-5923 5201 5202 0.0457134833999458 0.0457134833999458 -104.9975447 39.7241295 -104.9980791 39.724121
-5924 5202 5203 0.0421294446780762 0.0421294446780762 -104.9980791 39.724121 -104.9985716 39.7241131
-5925 5203 3957 0.137188173752203 0.137188173752203 -104.9985716 39.7241131 -105.0001757 39.7241141
-5926 3957 5204 0.0640931318030062 0.0640931318030062 -105.0001757 39.7241141 -105.000925 39.7241245
-5927 5204 5205 0.0544857674041209 0.0544857674041209 -105.000925 39.7241245 -105.001561 39.7241531
-5928 5205 5206 0.0521757463337926 0.0521757463337926 -105.001561 39.7241531 -105.002171 39.7241605
-5929 5207 5208 0.0487730947754618 0.0487730947754618 -105.0439566 39.7239385 -105.0445268 39.7239462
-5930 5208 5209 0.0493635031974476 0.0493635031974476 -105.0445268 39.7239462 -105.0451039 39.7239541
-5932 5211 5212 0.207489392195287 0.207489392195287 -105.015182 39.723292 -105.0174804 39.7238894
-5933 5212 4646 0.099390326989904 0.099390326989904 -105.0174804 39.7238894 -105.0186425 39.7238822
-5935 3645 4555 0.0986517427687235 0.0986517427687235 -105.0209651 39.7238828 -105.0221186 39.7238843
-5937 5213 5214 0.322259629928437 0.322259629928437 -104.9870231 39.769169 -104.9896839 39.7671156
-5938 5215 5216 0.143730822686287 0.143730822686287 -105.0344555 39.7293058 -105.0344587 39.7305984
-5939 5216 5217 0.0599126619694891 0.0599126619694891 -105.0344587 39.7305984 -105.034455 39.7311372
-5940 5217 5218 0.202016907937226 0.202016907937226 -105.034455 39.7311372 -105.0344966 39.7329537
-5942 5219 5220 0.186576382334646 0.186576382334646 -104.9888684 39.7256475 -104.9888573 39.7273254
-5944 5221 5222 0.13343391197395 0.13343391197395 -104.988836 39.784386 -104.988836 39.785586
-5945 5222 2558 0.200662474351154 0.200662474351154 -104.988836 39.785586 -104.9887371 39.787389
-5946 2558 5224 0.208372800213582 0.208372800213582 -104.9887371 39.787389 -104.9886598 39.789262
-5947 5225 4431 0.102067442103011 0.102067442103011 -104.9891924 39.7165504 -104.9891666 39.7174681
-5948 4431 3711 0.0989108306469789 0.0989108306469789 -104.9891666 39.7174681 -104.9891861 39.7183575
-5949 3711 5226 0.107183313746265 0.107183313746265 -104.9891861 39.7183575 -104.9891947 39.7193214
-5950 5226 1839 0.179335285582576 0.179335285582576 -104.9891947 39.7193214 -104.9891924 39.7209342
-17165 4242 3547 0.202237742052361 0.202237742052361 -104.9740228 39.6966115 -104.9739907 39.6984301
-5951 1839 2611 0.178227308228011 0.178227308228011 -104.9891924 39.7209342 -104.9891783 39.722537
-5952 2611 5195 0.176210949140518 0.176210949140518 -104.9891783 39.722537 -104.9891824 39.7241217
-20492 10836 10813 0.00305693422510609 0.00305693422510609 -105.0188782 39.7585174 -105.0189136 39.7585213
-7198 6089 1755 0.0565523921918465 0.0565523921918465 -105.0118176 39.7608059 -105.0124792 39.7608073
-18301 5526 5737 0.156444459924747 0.156444459924747 -105.0410378 39.7738771 -105.0410242 39.7724702
-5957 4512 5230 0.200430868604248 0.200430868604248 -104.9546673 39.6965834 -104.9546568 39.6947809
-5959 5231 5232 0.20240814685365 0.20240814685365 -104.9546783 39.692957 -104.9546794 39.6911367
-5960 5232 5233 0.200177276698155 0.200177276698155 -104.9546794 39.6911367 -104.9546945 39.6893365
-5961 5233 5234 0.403649470879027 0.403649470879027 -104.9546945 39.6893365 -104.9547037 39.6857064
-5962 3278 3181 0.152742056397443 0.152742056397443 -104.9546506 39.703847 -104.9546249 39.7024735
-5964 3927 3703 0.0675866941557576 0.0675866941557576 -105.0021843 39.7644198 -105.002975 39.7644254
-5965 3703 708 0.0999635221991015 0.0999635221991015 -105.002975 39.7644254 -105.0041445 39.7644316
-5966 708 5235 0.0981118109963614 0.0981118109963614 -105.0041445 39.7644316 -105.0052923 39.7644409
-5967 5235 5236 0.0989915986442654 0.0989915986442654 -105.0052923 39.7644409 -105.00645 39.7644159
-5968 5236 4189 0.135714784882046 0.135714784882046 -105.00645 39.7644159 -105.0080378 39.7644145
-5969 4189 2515 0.133468058331593 0.133468058331593 -105.0080378 39.7644145 -105.0095992 39.7644291
-5970 2515 5237 0.135326951582466 0.135326951582466 -105.0095992 39.7644291 -105.0111823 39.7644116
-5971 5237 4803 0.135895734874124 0.135895734874124 -105.0111823 39.7644116 -105.0127721 39.7644265
-5972 4803 5238 0.136371570616542 0.136371570616542 -105.0127721 39.7644265 -105.0143675 39.7644392
-5973 5238 5239 0.126834347813211 0.126834347813211 -105.0143675 39.7644392 -105.0158514 39.7644364
-5974 5239 5240 0.133492367602304 0.133492367602304 -105.0158514 39.7644364 -105.0174132 39.7644371
-5975 5240 4624 0.131817065741689 0.131817065741689 -105.0174132 39.7644371 -105.0189554 39.7644371
-7224 4702 6106 0.102350270818551 0.102350270818551 -104.987569 39.7093263 -104.9863727 39.7093097
-5979 2725 5242 0.133090700331069 0.133090700331069 -105.0236117 39.7644248 -105.0251688 39.7644237
-5981 5243 5244 0.0777207800874593 0.0777207800874593 -105.0440231 39.7648201 -105.0449324 39.7648219
-5982 5244 5245 0.710188326706697 0.710188326706697 -105.0449324 39.7648219 -105.0532413 39.7648055
-5983 3974 5246 0.196425810260379 0.196425810260379 -105.0299675 39.7647258 -105.0322646 39.764778
-5984 5246 3422 0.201357225192724 0.201357225192724 -105.0322646 39.764778 -105.0346204 39.7647784
-5986 3423 5247 0.0491810142725505 0.0491810142725505 -105.0346204 39.7649631 -105.0351958 39.7649631
-5987 5247 5248 0.0477450735797267 0.0477450735797267 -105.0351958 39.7649631 -105.0357544 39.764963
-5989 5249 5250 0.055676102895211 0.055676102895211 -105.0252881 39.7646691 -105.0259394 39.7646609
-5990 5250 5251 0.140244564447974 0.140244564447974 -105.0259394 39.7646609 -105.0275802 39.7646584
-5991 5251 5252 0.170294636723478 0.170294636723478 -105.0275802 39.7646584 -105.0295723 39.7646329
-5993 5253 5254 0.106323677730181 0.106323677730181 -104.9733576 39.7681592 -104.9721136 39.7681562
-5994 5254 5108 0.109212547805518 0.109212547805518 -104.9721136 39.7681562 -104.9708358 39.7681531
-5995 5108 4725 0.103272467122344 0.103272467122344 -104.9708358 39.7681531 -104.9696275 39.7681501
-5996 4725 5255 0.103742512264204 0.103742512264204 -104.9696275 39.7681501 -104.9684137 39.7681472
-5997 5255 5256 0.105340810076794 0.105340810076794 -104.9684137 39.7681472 -104.9671812 39.7681442
-5999 5257 3136 0.108092936006134 0.108092936006134 -104.9659655 39.7681412 -104.9647008 39.7681381
-6000 3136 3908 0.107682657630117 0.107682657630117 -104.9647008 39.7681381 -104.9634409 39.7681351
-7243 6117 6118 0.0967566510311658 0.0967566510311658 -104.9721753 39.7092881 -104.9710442 39.7092903
-6001 3908 1048 0.108571568461532 0.108571568461532 -104.9634409 39.7681351 -104.9621706 39.768132
-6002 1048 5258 0.101973343920372 0.101973343920372 -104.9621706 39.768132 -104.9609775 39.7681291
-6003 5258 5259 0.106357911571636 0.106357911571636 -104.9609775 39.7681291 -104.9597331 39.7681261
-6005 5260 5009 0.0315381518095178 0.0315381518095178 -104.9589552 39.7681242 -104.9585862 39.7681233
-6006 5009 3333 0.108118604625977 0.108118604625977 -104.9585862 39.7681233 -104.9573212 39.7681202
-6007 3333 5261 0.119315074925742 0.119315074925742 -104.9573212 39.7681202 -104.9559252 39.7681168
-6008 5261 5263 0.0963665691070474 0.0963665691070474 -104.9559252 39.7681168 -104.9547977 39.7681141
-6009 5263 5264 0.0432816561908272 0.0432816561908272 -104.9547977 39.7681141 -104.9542913 39.7681128
-6010 5264 2085 0.0535379351296007 0.0535379351296007 -104.9542913 39.7681128 -104.9536649 39.7681113
-6011 2085 5265 0.105640004427027 0.105640004427027 -104.9536649 39.7681113 -104.9524289 39.7681083
-6012 5265 4130 0.106366490545515 0.106366490545515 -104.9524289 39.7681083 -104.9511844 39.7681053
-6013 4130 5266 0.109451940113279 0.109451940113279 -104.9511844 39.7681053 -104.9499038 39.7681022
-6014 5266 5267 0.101101610243622 0.101101610243622 -104.9499038 39.7681022 -104.9487209 39.7680993
-6018 5269 5270 0.0982982274574071 0.0982982274574071 -104.9451609 39.7680906 -104.9440108 39.7680878
-6019 5270 804 0.0991956500472809 0.0991956500472809 -104.9440108 39.7680878 -104.9428502 39.768085
-6020 804 5271 0.0978879869631794 0.0978879869631794 -104.9428502 39.768085 -104.9417049 39.7680822
-6021 5271 5272 0.0909649766992318 0.0909649766992318 -104.9417049 39.7680822 -104.9406406 39.7680796
-6022 5272 5273 0.0146836193769648 0.0146836193769648 -104.9406406 39.7680796 -104.9404688 39.7680792
-6024 5274 1956 0.174868207801427 0.174868207801427 -104.93153 39.709088 -104.9295943 39.7085824
-6027 5275 5276 0.0506368419660478 0.0506368419660478 -104.9862654 39.7138801 -104.9856735 39.713872
-6028 5276 4990 0.0537681631666927 0.0537681631666927 -104.9856735 39.713872 -104.985045 39.7138633
-6029 4990 5277 0.102832227368728 0.102832227368728 -104.985045 39.7138633 -104.9838429 39.7138757
-6030 5277 5278 0.0856095541145101 0.0856095541145101 -104.9838429 39.7138757 -104.9828424 39.7138551
-6032 1548 4268 0.202455793335308 0.202455793335308 -104.9824199 39.7765295 -104.9824332 39.7783502
-6033 4268 283 0.117344693446838 0.117344693446838 -104.9824332 39.7783502 -104.9824285 39.7794055
-6035 4141 5279 0.202925527060843 0.202925527060843 -104.982643 39.7165018 -104.9826249 39.7183267
-6036 5279 2364 0.110547560275979 0.110547560275979 -104.9826249 39.7183267 -104.9826087 39.7193208
-6037 2364 4146 0.176928363643229 0.176928363643229 -104.9826087 39.7193208 -104.9825915 39.7209119
-6038 4146 5281 0.187030458155785 0.187030458155785 -104.9825915 39.7209119 -104.982597 39.7225939
-6039 5281 5282 0.011246856594195 0.011246856594195 -104.982597 39.7225939 -104.9825741 39.7226935
-6041 5283 2870 0.194705331985994 0.194705331985994 -104.9834597 39.7872862 -104.9829275 39.7855836
-6043 5285 5286 0.301111320410511 0.301111320410511 -104.983146 39.78834 -104.982876 39.79104
-6044 5287 5288 0.185724938270304 0.185724938270304 -104.9823268 39.7801891 -104.9823077 39.7818593
-6045 5288 5289 0.213285003773079 0.213285003773079 -104.9823077 39.7818593 -104.9823354 39.7837773
-6047 5290 5291 0.13629389839255 0.13629389839255 -105.0252168 39.7439449 -105.0268109 39.7439427
-6048 5291 5292 0.13355771854799 0.13355771854799 -105.0268109 39.7439427 -105.028373 39.7439427
-6049 5292 4013 0.133867532403999 0.133867532403999 -105.028373 39.7439427 -105.0299387 39.7439361
-6052 5294 3384 0.128421314744864 0.128421314744864 -105.0330637 39.7439508 -105.0345657 39.7439574
-6053 3384 5295 0.104229219478348 0.104229219478348 -105.0345657 39.7439574 -105.0357845 39.7439376
-6054 5295 3817 0.102592362577248 0.102592362577248 -105.0357845 39.7439376 -105.0369844 39.7439438
-6056 5296 5297 0.0990440053907464 0.0990440053907464 -105.0381646 39.7439521 -105.039323 39.7439462
-6057 5297 5298 0.00501097787172802 0.00501097787172802 -105.039323 39.7439462 -105.0393814 39.74395
-6058 5298 5299 0.26852367463784 0.26852367463784 -105.0393814 39.74395 -105.042522 39.7439663
-6059 5299 5300 0.02711052781377 0.02711052781377 -105.042522 39.7439663 -105.042839 39.743972
-6060 5300 5301 0.101042477184366 0.101042477184366 -105.042839 39.743972 -105.0440208 39.7439717
-6061 5301 5302 0.0980158544732548 0.0980158544732548 -105.0440208 39.7439717 -105.0451672 39.7439725
-6062 5302 5303 0.68853335666363 0.68853335666363 -105.0451672 39.7439725 -105.0532203 39.7439912
-6063 4532 3739 0.10058657036035 0.10058657036035 -105.0227589 39.7166208 -105.0227761 39.7157163
-6064 3739 5305 0.101344660556636 0.101344660556636 -105.0227761 39.7157163 -105.0227504 39.7148051
-6065 5305 1342 0.202678391855073 0.202678391855073 -105.0227504 39.7148051 -105.0226989 39.7129828
-6067 5306 4700 0.20166419460726 0.20166419460726 -105.0226912 39.7111319 -105.0226989 39.7093183
-6068 4700 5307 0.201175175307418 0.201175175307418 -105.0226989 39.7093183 -105.0227074 39.7075091
-6069 5307 5308 0.201920176537304 0.201920176537304 -105.0227074 39.7075091 -105.0226989 39.7056932
-6070 5308 5309 0.201920207593883 0.201920207593883 -105.0226989 39.7056932 -105.0226903 39.7038773
-6071 5309 777 0.201196100270561 0.201196100270561 -105.0226903 39.7038773 -105.0226903 39.7020679
-6072 777 5310 0.185040940142678 0.185040940142678 -105.0226903 39.7020679 -105.0226989 39.7004038
-6073 5310 5311 0.201942415647541 0.201942415647541 -105.0226989 39.7004038 -105.0227074 39.6985877
-6074 5311 5312 0.206000886771111 0.206000886771111 -105.0227074 39.6985877 -105.0227155 39.6967351
-7322 6161 6162 0.200977808302969 0.200977808302969 -104.9569665 39.6947747 -104.9569515 39.6929673
-6077 1729 5313 0.145417053241999 0.145417053241999 -105.02224 39.6908088 -105.0222572 39.6895011
-6079 5314 5315 0.262924523321611 0.262924523321611 -105.0227207 39.6894812 -105.0227035 39.6871167
-6080 5316 3497 0.142809169887552 0.142809169887552 -104.9500303 39.699284 -104.9488372 39.6983858
-6082 2903 5317 0.0402215187360589 0.0402215187360589 -104.973351 39.7604399 -104.9736634 39.7607104
-6083 5317 5318 0.00632191300841853 0.00632191300841853 -104.9736634 39.7607104 -104.9737157 39.7607506
-6084 5318 5319 0.00945274881783772 0.00945274881783772 -104.9737157 39.7607506 -104.9737854 39.7608166
-6085 5319 5320 0.102488283152376 0.102488283152376 -104.9737854 39.7608166 -104.9746129 39.7614836
-6086 5320 5321 0.105737259840933 0.105737259840933 -104.9746129 39.7614836 -104.9754804 39.7621615
-6087 5321 5322 0.104280118546109 0.104280118546109 -104.9754804 39.7621615 -104.9763558 39.7628147
-6088 5322 5323 0.105008595801197 0.105008595801197 -104.9763558 39.7628147 -104.9772313 39.7634772
-6089 5323 5324 0.107079302112312 0.107079302112312 -104.9772313 39.7634772 -104.9781151 39.7641597
-6090 5324 3311 0.104784168499708 0.104784168499708 -104.9781151 39.7641597 -104.9789777 39.7648293
-6091 3311 5325 0.104972132929345 0.104972132929345 -104.9789777 39.7648293 -104.9798548 39.7654901
-6093 5328 5329 0.148443179384572 0.148443179384572 -105.0327094 39.7111941 -105.0340312 39.7103291
-6094 5329 4320 0.122968314186663 0.122968314186663 -105.0340312 39.7103291 -105.0350756 39.7095692
-6095 4320 5331 0.133138685881437 0.133138685881437 -105.0350756 39.7095692 -105.0362199 39.7087576
-6096 5331 5332 0.129500346452113 0.129500346452113 -105.0362199 39.7087576 -105.0373528 39.7079851
-6097 5332 5072 0.094543402764425 0.094543402764425 -105.0373528 39.7079851 -105.0381596 39.707404
-6098 5072 5333 0.0140267468815188 0.0140267468815188 -105.0381596 39.707404 -105.0382798 39.7073182
-7348 5506 4458 0.146478928082641 0.146478928082641 -104.9817097 39.7613449 -104.9829353 39.7604242
-6099 5333 5334 0.0971985352126134 0.0971985352126134 -105.0382798 39.7073182 -105.0391209 39.7067305
-6100 5334 5335 0.0675695345311337 0.0675695345311337 -105.0391209 39.7067305 -105.0397046 39.7063211
-6101 5335 5336 0.135628949553031 0.135628949553031 -105.0397046 39.7063211 -105.0408719 39.7054957
-6102 5336 5337 0.134096180080561 0.134096180080561 -105.0408719 39.7054957 -105.0420306 39.7046835
-6103 5337 5338 0.121603742223712 0.121603742223712 -105.0420306 39.7046835 -105.0430777 39.7039439
-6104 5338 5339 0.288999775625269 0.288999775625269 -105.0430777 39.7039439 -105.0455771 39.7021954
-6105 5339 5340 0.295278488962845 0.295278488962845 -105.0455771 39.7021954 -105.0481332 39.700411
-6106 5340 5341 0.386769671992271 0.386769671992271 -105.0481332 39.700411 -105.0514806 39.6980732
-6107 5341 5342 0.199175415622423 0.199175415622423 -105.0514806 39.6980732 -105.0532275 39.6968892
-18500 9718 6670 0.0335166183519053 0.0335166183519053 -105.0303789 39.7373453 -105.029987 39.7373512
-6108 272 2532 0.233490999842372 0.233490999842372 -105.020512 39.7400417 -105.0217751 39.73818
-6109 2532 2534 0.010275790210419 0.010275790210419 -105.0217751 39.73818 -105.0217592 39.7380884
-6111 5343 5344 0.134883731263317 0.134883731263317 -105.0181862 39.7765857 -105.0182175 39.7777985
-6112 5344 2487 0.132908396505932 0.132908396505932 -105.0182175 39.7777985 -105.0181786 39.7789934
-6113 2487 2828 0.130466466605355 0.130466466605355 -105.0181786 39.7789934 -105.0181574 39.7801666
-6114 2828 1436 0.203164250472258 0.203164250472258 -105.0181574 39.7801666 -105.0181574 39.7819937
-6115 1436 5345 0.151025004833817 0.151025004833817 -105.0181574 39.7819937 -105.0181359 39.7833518
-6117 5346 5347 0.17552323432827 0.17552323432827 -104.9281276 39.716246 -104.9281375 39.7146675
-6118 5347 3107 0.175398997422213 0.175398997422213 -104.9281375 39.7146675 -104.9281351 39.7130901
-6119 3107 5348 0.192385063711178 0.192385063711178 -104.9281351 39.7130901 -104.9281539 39.71136
-6121 1515 5349 0.354712199012844 0.354712199012844 -104.9267914 39.6961177 -104.9274952 39.692974
-6123 4219 5350 0.184992548254205 0.184992548254205 -104.928034 39.690987 -104.928405 39.689348
-6124 5350 5351 0.809194581386362 0.809194581386362 -104.928405 39.689348 -104.9286924 39.6820741
-6125 3828 5352 0.158319505042179 0.158319505042179 -104.9277565 39.7065566 -104.9277592 39.7051328
-6127 3683 5353 0.00756991430853718 0.00756991430853718 -104.9848394 39.7475404 -104.9849272 39.7475492
-6128 5353 5354 0.0600900021718448 0.0600900021718448 -104.9849272 39.7475492 -104.9856252 39.7476126
-6129 5354 5355 0.0486030977669072 0.0486030977669072 -104.9856252 39.7476126 -104.986046 39.7479065
-6130 5355 5356 0.00770962942235081 0.00770962942235081 -104.986046 39.7479065 -104.9861098 39.7479555
-6132 5357 5358 0.0529187112553076 0.0529187112553076 -104.9790225 39.7499844 -104.979461 39.7503203
-6133 5358 5359 0.0513821813874635 0.0513821813874635 -104.979461 39.7503203 -104.9798903 39.7506437
-6134 5359 5360 0.0534444522847469 0.0534444522847469 -104.9798903 39.7506437 -104.9803323 39.7509836
-6135 5360 5361 0.0503260757639254 0.0503260757639254 -104.9803323 39.7509836 -104.9807486 39.7513036
-6137 5362 5363 0.199678713236371 0.199678713236371 -105.0450749 39.7228662 -105.0474095 39.722886
-6139 4554 5364 0.257952059435159 0.257952059435159 -105.0220979 39.7228967 -105.025114 39.7228932
-6141 2203 5365 0.125513593247199 0.125513593247199 -104.9873753 39.7338548 -104.988843 39.7338416
-6142 5365 5366 0.121103405669087 0.121103405669087 -104.988843 39.7338416 -104.9902592 39.7338482
-6143 5366 5367 0.118905793541669 0.118905793541669 -104.9902592 39.7338482 -104.9916497 39.7338548
-6144 5367 5368 0.110432655754222 0.110432655754222 -104.9916497 39.7338548 -104.9929409 39.7338739
-7394 6208 6209 0.0520019237828089 0.0520019237828089 -105.0324968 39.7261084 -105.0331036 39.7261385
-6145 5368 4924 0.050653673780936 0.050653673780936 -104.9929409 39.7338739 -104.9935332 39.7338673
-6146 4924 5369 0.0113612305905717 0.0113612305905717 -104.9935332 39.7338673 -104.9936509 39.7338199
-6148 5370 5371 0.0511886893302135 0.0511886893302135 -105.0015763 39.7336919 -105.0021749 39.7336954
-6149 5371 3733 0.0547546687048594 0.0547546687048594 -105.0021749 39.7336954 -105.0028152 39.7336992
-6150 3733 5372 0.0739604711312813 0.0739604711312813 -105.0028152 39.7336992 -105.0036801 39.7337035
-6151 5372 5373 0.0333758188249575 0.0333758188249575 -105.0036801 39.7337035 -105.0040704 39.7337054
-6152 5373 5374 0.0326832624474652 0.0326832624474652 -105.0040704 39.7337054 -105.0044526 39.7337074
-6153 5374 4487 0.0687015455014252 0.0687015455014252 -105.0044526 39.7337074 -105.005256 39.7337116
-6155 5375 5376 0.083676019608772 0.083676019608772 -105.0141162 39.7338913 -105.0150947 39.7338979
-6157 5377 5378 0.539527941615599 0.539527941615599 -105.044041 39.7339173 -105.0503496 39.7339965
-6158 5379 5380 0.024339909926927 0.024339909926927 -105.0008725 39.7336985 -105.0008982 39.7334805
-6159 5380 5381 0.0572545808576417 0.0572545808576417 -105.0008982 39.7334805 -105.0015677 39.7334741
-6161 5382 5383 0.0919429478923695 0.0919429478923695 -105.0174251 39.7338829 -105.0185003 39.7338787
-6162 5383 4632 0.0667555867186957 0.0667555867186957 -105.0185003 39.7338787 -105.0192808 39.733891
-6163 4632 4638 0.073630878201174 0.073630878201174 -105.0192808 39.733891 -105.0201418 39.7338828
-6164 4638 4551 0.135095610306562 0.135095610306562 -105.0201418 39.7338828 -105.0217216 39.7338931
-6165 4551 5384 0.293762175707744 0.293762175707744 -105.0217216 39.7338931 -105.0251569 39.7338774
-6167 2098 5385 0.176238767515036 0.176238767515036 -104.9269736 39.7162529 -104.9269567 39.714668
-6168 5385 3108 0.175113982885218 0.175113982885218 -104.9269567 39.714668 -104.9269709 39.7130932
-6169 3108 5386 0.213105615274275 0.213105615274275 -104.9269709 39.7130932 -104.9269765 39.7111767
-6170 5386 5387 0.16568697132589 0.16568697132589 -104.9269765 39.7111767 -104.926934 39.709687
-6171 5387 5388 0.0444779706577198 0.0444779706577198 -104.926934 39.709687 -104.926934 39.709287
-6173 1958 3829 0.172873649500925 0.172873649500925 -104.9269593 39.708107 -104.9269277 39.7065525
-6174 3829 3827 0.0048313839727239 0.0048313839727239 -104.9269277 39.7065525 -104.9269304 39.7065091
-6175 3827 5389 0.152170039924714 0.152170039924714 -104.9269304 39.7065091 -104.9269733 39.705141
-6176 5389 547 0.0103214739502372 0.0103214739502372 -104.9269733 39.705141 -104.926976 39.7050482
-6177 547 3259 0.110383801281946 0.110383801281946 -104.926976 39.7050482 -104.9269572 39.7040556
-6178 3259 3297 0.0174353644977756 0.0174353644977756 -104.9269572 39.7040556 -104.9269572 39.7038988
-6180 4220 5391 0.40468883776866 0.40468883776866 -104.9274781 39.6893679 -104.9274523 39.6857285
-6181 1473 5392 0.374922653008132 0.374922653008132 -104.9248865 39.6961248 -104.926491 39.6929872
-6182 5392 2947 0.18613051410303 0.18613051410303 -104.926491 39.6929872 -104.9259674 39.6913625
-6184 5393 5394 0.133683449538656 0.133683449538656 -104.9659493 39.748214 -104.9659359 39.7494162
-6185 5394 5395 0.00436494876438714 0.00436494876438714 -104.9659359 39.7494162 -104.9659386 39.7494554
-6186 5395 5396 0.00413948116283948 0.00413948116283948 -104.9659386 39.7494554 -104.9659346 39.7494925
-6187 5396 5397 0.135591162545584 0.135591162545584 -104.9659346 39.7494925 -104.965933 39.7507119
-6188 5397 5398 0.140883972058497 0.140883972058497 -104.965933 39.7507119 -104.965933 39.7519789
-6189 5398 823 0.138673141914839 0.138673141914839 -104.965933 39.7519789 -104.9659416 39.753226
-6190 823 3564 0.136111333534187 0.136111333534187 -104.9659416 39.753226 -104.9659688 39.7544499
-6191 3564 5399 0.14331239683406 0.14331239683406 -104.9659688 39.7544499 -104.9659557 39.7557387
-6193 5400 3028 0.141885844467344 0.141885844467344 -104.9659604 39.7582223 -104.9659386 39.7594982
-7436 5227 5219 0.0266079784612615 0.0266079784612615 -104.9891795 39.7256506 -104.9888684 39.7256475
-6195 5401 5402 0.00584885314190653 0.00584885314190653 -104.9659547 39.7606908 -104.9659547 39.7607434
-6196 5402 5403 0.138593356569714 0.138593356569714 -104.9659547 39.7607434 -104.9659547 39.7619898
-6197 5403 1157 0.139497033685325 0.139497033685325 -104.9659547 39.7619898 -104.965944 39.7632443
-6198 1157 878 0.139538816070218 0.139538816070218 -104.965944 39.7632443 -104.9659474 39.7644992
-6199 878 4466 0.138604668182001 0.138604668182001 -104.9659474 39.7644992 -104.9659447 39.7657457
-6200 4466 2786 0.1346682214983 0.1346682214983 -104.9659447 39.7657457 -104.9659434 39.7669568
-6201 2786 5257 0.131712815882714 0.131712815882714 -104.9659434 39.7669568 -104.9659655 39.7681412
-6202 5257 5404 0.212033227364557 0.212033227364557 -104.9659655 39.7681412 -104.9659333 39.7700479
-6203 5404 5405 0.140381205630714 0.140381205630714 -104.9659333 39.7700479 -104.9658988 39.7713101
-6204 5405 5406 0.175882952103236 0.175882952103236 -104.9658988 39.7713101 -104.9659423 39.7728915
-6206 4761 5407 0.0777628340765697 0.0777628340765697 -104.9656944 39.7219804 -104.9658146 39.7226736
-6207 5407 5411 0.121860688460736 0.121860688460736 -104.9658146 39.7226736 -104.9658231 39.7237695
-6208 5411 5412 0.203436645645446 0.203436645645446 -104.9658231 39.7237695 -104.9658624 39.7255988
-6211 5413 3128 0.197988223180436 0.197988223180436 -104.9658604 39.7273116 -104.9658779 39.7290921
-6213 5414 5415 0.127346625489507 0.127346625489507 -104.9656118 39.7807932 -104.9655971 39.7819384
-6214 5415 5416 0.202431697844534 0.202431697844534 -104.9655971 39.7819384 -104.9656057 39.7837589
-6216 5417 5418 0.0360920642856509 0.0360920642856509 -104.9659605 39.7364894 -104.9659747 39.7368138
-18249 10283 10284 0.0379598203284706 0.0379598203284706 -105.0375025 39.7802085 -105.0376009 39.7805414
-6217 5418 5419 0.175688258529037 0.175688258529037 -104.9659747 39.7368138 -104.9659981 39.7383937
-6218 5419 5420 0.176513424391556 0.176513424391556 -104.9659981 39.7383937 -104.9659869 39.7399811
-6219 5420 671 0.183363162969023 0.183363162969023 -104.9659869 39.7399811 -104.9659752 39.7416301
-6220 671 5421 0.00332688246962709 0.00332688246962709 -104.9659752 39.7416301 -104.9659766 39.74166
-6221 5421 5422 0.175194594065608 0.175194594065608 -104.9659766 39.74166 -104.9659949 39.7432355
-6222 5422 4601 0.174116514777802 0.174116514777802 -104.9659949 39.7432355 -104.965976 39.7448013
-6223 4601 5423 0.141050765485302 0.141050765485302 -104.965976 39.7448013 -104.9659758 39.7460698
-6225 2950 5424 0.133468479991587 0.133468479991587 -104.9258215 39.6885687 -104.9265768 39.6875185
-6226 5425 3096 0.198372842511786 0.198372842511786 -104.9698675 39.7147124 -104.9698598 39.7129284
-6227 3096 3206 0.203187034114148 0.203187034114148 -104.9698598 39.7129284 -104.9698543 39.7111011
-6228 3206 5426 0.199398136177365 0.199398136177365 -104.9698543 39.7111011 -104.9698407 39.7093079
-6229 5426 1916 0.200785704053696 0.200785704053696 -104.9698407 39.7093079 -104.9698332 39.7075022
-6231 5427 5428 0.208049356186156 0.208049356186156 -104.9699057 39.6929673 -104.9698913 39.6910963
-6232 5428 5429 0.195358366621449 0.195358366621449 -104.9698913 39.6910963 -104.9698913 39.6893394
-6233 5429 5430 0.0822508872394256 0.0822508872394256 -104.9698913 39.6893394 -104.9698913 39.6885997
-6234 5431 3740 0.099853044127537 0.099853044127537 -105.0250764 39.7166076 -105.0250764 39.7157096
-6235 3740 5432 0.079904711368683 0.079904711368683 -105.0250764 39.7157096 -105.0250773 39.714991
-6236 5432 5433 0.0177357578673254 0.0177357578673254 -105.0250773 39.714991 -105.0250764 39.7148315
-6237 5433 1299 0.160881213225809 0.160881213225809 -105.0250764 39.7148315 -105.0250625 39.7133847
-6238 1299 1344 0.0431325120453993 0.0431325120453993 -105.0250625 39.7133847 -105.0250625 39.7129968
-6239 1344 5434 0.202930771593003 0.202930771593003 -105.0250625 39.7129968 -105.0250638 39.7111718
-6240 5434 5435 0.195937805328833 0.195937805328833 -105.0250638 39.7111718 -105.0250719 39.7094097
-6241 5435 4701 0.00964060014055181 0.00964060014055181 -105.0250719 39.7094097 -105.0250719 39.709323
-6242 4701 5436 0.088911763330732 0.088911763330732 -105.0250719 39.709323 -105.0250692 39.7085234
-6243 5436 5437 0.105079205678488 0.105079205678488 -105.0250692 39.7085234 -105.0250692 39.7075784
-6244 5437 5438 0.0943047001329777 0.0943047001329777 -105.0250692 39.7075784 -105.0250719 39.7067303
-6245 5438 5439 0.100620360394738 0.100620360394738 -105.0250719 39.7067303 -105.0250705 39.7058254
-6246 5439 5440 0.0146794154501444 0.0146794154501444 -105.0250705 39.7058254 -105.0250679 39.7056934
-6247 5440 4965 0.086276226710605 0.086276226710605 -105.0250679 39.7056934 -105.0250665 39.7049175
-6248 4965 5441 0.10739345579216 0.10739345579216 -105.0250665 39.7049175 -105.0250601 39.7039517
-6249 5441 5442 0.0951717377148208 0.0951717377148208 -105.0250601 39.7039517 -105.0250601 39.7030958
-6250 5442 5443 0.0976857174224503 0.0976857174224503 -105.0250601 39.7030958 -105.0250652 39.7022173
-6252 779 5444 0.0823735255229089 0.0823735255229089 -105.0250638 39.7020728 -105.0250665 39.701332
-6253 5444 5445 0.102122427250782 0.102122427250782 -105.0250665 39.701332 -105.0250612 39.7004136
-6254 5445 4958 0.133513290288167 0.133513290288167 -105.0250612 39.7004136 -105.0250687 39.6992129
-6255 4958 5446 0.0684224753039321 0.0684224753039321 -105.0250687 39.6992129 -105.0250598 39.6985976
-6256 5446 5447 0.00769468892365438 0.00769468892365438 -105.0250598 39.6985976 -105.0250598 39.6985284
-6257 5447 5448 0.199639504943165 0.199639504943165 -105.0250598 39.6985284 -105.0250571 39.696733
-6258 5448 1501 0.201263981115328 0.201263981115328 -105.0250571 39.696733 -105.0250491 39.694923
-6259 1501 174 0.201029338652354 0.201029338652354 -105.0250491 39.694923 -105.0250478 39.6931151
-6261 1704 1730 0.0545082426213867 0.0545082426213867 -105.0250424 39.6912967 -105.0250451 39.6908065
-6262 1730 5451 0.146076957823045 0.146076957823045 -105.0250451 39.6908065 -105.0250424 39.6894928
-6263 5451 5452 1.20615427321132 1.20615427321132 -105.0250424 39.6894928 -105.0250276 39.6786456
-6265 5456 5457 0.107171013555617 0.107171013555617 -104.9861136 39.7384486 -104.9848604 39.7384323
-6266 5457 5458 0.0551341429674013 0.0551341429674013 -104.9848604 39.7384323 -104.9842156 39.7384332
-6267 5458 5459 0.053860211885536 0.053860211885536 -104.9842156 39.7384332 -104.9835857 39.7384319
-6268 5459 5460 0.109859438734606 0.109859438734606 -104.9835857 39.7384319 -104.9823009 39.7384375
-6269 5460 5461 0.104952215686531 0.104952215686531 -104.9823009 39.7384375 -104.9810735 39.7384309
-6270 5461 5462 0.0537660564474852 0.0537660564474852 -104.9810735 39.7384309 -104.9804447 39.73843
-6271 5462 5463 0.0468001440268365 0.0468001440268365 -104.9804447 39.73843 -104.9798976 39.7384177
-6273 5464 5465 0.0487076064705391 0.0487076064705391 -104.9793148 39.7384144 -104.9787452 39.7384091
-6274 5465 5466 0.096682643717806 0.096682643717806 -104.9787452 39.7384091 -104.9776145 39.7384045
-6275 5466 5052 0.0976295695745084 0.0976295695745084 -104.9776145 39.7384045 -104.976473 39.7384243
-6276 5052 5467 0.0498503558842522 0.0498503558842522 -104.976473 39.7384243 -104.97589 39.7384222
-6277 5467 5468 0.0500897185974344 0.0500897185974344 -104.97589 39.7384222 -104.9753042 39.7384242
-6279 5223 978 0.0483462615206691 0.0483462615206691 -104.9747109 39.7384283 -104.9741456 39.7384195
-6280 978 5469 0.0500186833718628 0.0500186833718628 -104.9741456 39.7384195 -104.9735608 39.7384085
-6281 5469 5470 0.0466179289686935 0.0466179289686935 -104.9735608 39.7384085 -104.9730156 39.7384072
-6282 5470 5471 0.0496889709391185 0.0496889709391185 -104.9730156 39.7384072 -104.9724345 39.7384108
-6283 5471 5472 0.0500395303728477 0.0500395303728477 -104.9724345 39.7384108 -104.9718493 39.7384144
-6284 5472 4947 0.0500649255411997 0.0500649255411997 -104.9718493 39.7384144 -104.9712638 39.7384111
-6285 4947 5119 0.0486069729184005 0.0486069729184005 -104.9712638 39.7384111 -104.9706954 39.7384177
-6286 5119 5473 0.0497694572157541 0.0497694572157541 -104.9706954 39.7384177 -104.9701135 39.7384072
-6287 5473 4719 0.0482501223288259 0.0482501223288259 -104.9701135 39.7384072 -104.9695494 39.7384185
-6288 4719 5474 0.0825694493004343 0.0825694493004343 -104.9695494 39.7384185 -104.9685838 39.7384102
-6289 5474 5475 0.013401399089124 0.013401399089124 -104.9685838 39.7384102 -104.9684271 39.7384126
-6290 5475 5476 0.103889728134339 0.103889728134339 -104.9684271 39.7384126 -104.9672122 39.7384004
-6291 5476 5419 0.103815153646491 0.103815153646491 -104.9672122 39.7384004 -104.9659981 39.7383937
-6292 5419 5477 0.109635415021011 0.109635415021011 -104.9659981 39.7383937 -104.964716 39.7383814
-6294 3890 1020 0.105962717150938 0.105962717150938 -104.9634822 39.7383772 -104.962243 39.7383855
-6295 1020 5478 0.052027246508575 0.052027246508575 -104.962243 39.7383855 -104.9616347 39.7383964
-6296 5478 5479 0.0524872333525023 0.0524872333525023 -104.9616347 39.7383964 -104.9610209 39.7383907
-6297 5479 3719 0.052252544610622 0.052252544610622 -104.9610209 39.7383907 -104.9604099 39.7383822
-6298 3719 5480 0.0538013756911254 0.0538013756911254 -104.9604099 39.7383822 -104.9597808 39.7383914
-6299 5480 5481 0.0436600330786078 0.0436600330786078 -104.9597808 39.7383914 -104.9592702 39.7383938
-6300 5481 5482 0.00837974421686285 0.00837974421686285 -104.9592702 39.7383938 -104.9591722 39.7383943
-14763 7162 4611 0.176903840452458 0.176903840452458 -104.9793413 39.7432656 -104.9793144 39.7448564
-6301 5482 5026 0.040489278057912 0.040489278057912 -104.9591722 39.7383943 -104.9586987 39.7383904
-6302 5026 3338 0.107876149200874 0.107876149200874 -104.9586987 39.7383904 -104.9574371 39.7383843
-6303 3338 5483 0.0990429074228521 0.0990429074228521 -104.9574371 39.7383843 -104.9562788 39.7383792
-6304 5483 5484 0.0966066822218646 0.0966066822218646 -104.9562788 39.7383792 -104.955149 39.7383732
-6305 5484 5485 0.085086759759281 0.085086759759281 -104.955149 39.7383732 -104.9541539 39.7383732
-6306 5485 5486 0.0169728889677259 0.0169728889677259 -104.9541539 39.7383732 -104.9539554 39.7383732
-6307 5486 2067 0.0825646387998858 0.0825646387998858 -104.9539554 39.7383732 -104.9529898 39.7383752
-6309 5487 2667 0.0866869262626222 0.0866869262626222 -104.952802 39.738367 -104.9517882 39.7383629
-6310 2667 2664 0.00897895817052901 0.00897895817052901 -104.9517882 39.7383629 -104.9516835 39.7383567
-6311 2664 4137 0.0908182867369719 0.0908182867369719 -104.9516835 39.7383567 -104.9506214 39.7383505
-6312 4137 5488 0.0965705527653259 0.0965705527653259 -104.9506214 39.7383505 -104.9494922 39.738334
-6313 5488 5489 0.0942751679467969 0.0942751679467969 -104.9494922 39.738334 -104.9483898 39.7383484
-6314 5489 5490 0.0959916716400224 0.0959916716400224 -104.9483898 39.7383484 -104.9472672 39.7383417
-6315 5490 3461 0.0933212956911074 0.0933212956911074 -104.9472672 39.7383417 -104.9461758 39.7383438
-6316 3461 5491 0.0467923341231575 0.0467923341231575 -104.9461758 39.7383438 -104.9456286 39.7383386
-6317 5491 5492 0.0479894648111637 0.0479894648111637 -104.9456286 39.7383386 -104.9450674 39.7383333
-6318 5492 5493 0.094030978726141 0.094030978726141 -104.9450674 39.7383333 -104.9439677 39.7383313
-6319 5493 861 0.0920531787302436 0.0920531787302436 -104.9439677 39.7383313 -104.9428912 39.7383217
-6320 861 5494 0.092346282981082 0.092346282981082 -104.9428912 39.7383217 -104.9418112 39.7383212
-6321 5494 5495 0.091117734759624 0.091117734759624 -104.9418112 39.7383212 -104.9407458 39.7383041
-20501 10824 10839 0.0279151158292869 0.0279151158292869 -105.0208891 39.7583505 -105.0206127 39.7582168
-6323 5496 5497 0.0512308809047994 0.0512308809047994 -104.9773755 39.757988 -104.9777977 39.758315
-6324 5497 5498 0.0547050066584288 0.0547050066584288 -104.9777977 39.758315 -104.9782485 39.7586642
-6325 5498 5499 0.0532065647068504 0.0532065647068504 -104.9782485 39.7586642 -104.978687 39.7590038
-6326 5499 5500 0.0520026026999989 0.0520026026999989 -104.978687 39.7590038 -104.9791156 39.7593357
-6327 5500 5501 0.0600453089722235 0.0600453089722235 -104.9791156 39.7593357 -104.9796104 39.759719
-6328 5501 5502 0.0451373924487277 0.0451373924487277 -104.9796104 39.759719 -104.9799824 39.7600071
-7588 6319 6320 0.0874047970677394 0.0874047970677394 -105.036097 39.7056008 -105.0371184 39.7056206
-6330 5503 5504 0.0512021800904844 0.0512021800904844 -104.9804313 39.7603548 -104.9808533 39.7606816
-6331 5504 5505 0.0535897595927606 0.0535897595927606 -104.9808533 39.7606816 -104.9812949 39.7610237
-6332 5505 5506 0.0503264318858696 0.0503264318858696 -104.9812949 39.7610237 -104.9817097 39.7613449
-6333 5506 5507 0.0549843628648472 0.0549843628648472 -104.9817097 39.7613449 -104.9821628 39.7616959
-6334 5507 3309 0.0521587927419047 0.0521587927419047 -104.9821628 39.7616959 -104.9825927 39.7620288
-6335 3309 5508 0.0557422576502987 0.0557422576502987 -104.9825927 39.7620288 -104.9830521 39.7623846
-6336 5508 5509 0.0498065817995712 0.0498065817995712 -104.9830521 39.7623846 -104.9834626 39.7627025
-6338 5510 5511 0.10273263586878 0.10273263586878 -104.9738469 39.7553142 -104.974688 39.7559741
-6339 5511 5512 0.103095987250104 0.103095987250104 -104.974688 39.7559741 -104.975568 39.7566081
-6340 5512 3020 0.0125186689867189 0.0125186689867189 -104.975568 39.7566081 -104.9756854 39.7566754
-6341 3020 5513 0.0466432236195876 0.0466432236195876 -104.9756854 39.7566754 -104.97606 39.7569804
-6342 5513 4381 0.0509815437370977 0.0509815437370977 -104.97606 39.7569804 -104.9764694 39.7573138
-6344 5514 5515 0.103259680904514 0.103259680904514 -104.998222 39.7742728 -104.9994301 39.7742575
-6345 5515 3934 0.0990266173550878 0.0990266173550878 -104.9994301 39.7742575 -105.0005888 39.7742509
-6346 3934 5516 0.10122291130851 0.10122291130851 -105.0005888 39.7742509 -105.0017732 39.7742575
-6347 5516 3707 0.107162793104657 0.107162793104657 -105.0017732 39.7742575 -105.0030264 39.7742905
-6348 3707 717 0.101965718351369 0.101965718351369 -105.0030264 39.7742905 -105.0042194 39.7743037
-6349 717 5517 0.10489500722876 0.10489500722876 -105.0042194 39.7743037 -105.0054468 39.7743037
-6350 5517 5518 0.0880249775504832 0.0880249775504832 -105.0054468 39.7743037 -105.0064768 39.7743037
-6352 5519 4201 0.0955388621117037 0.0955388621117037 -105.0064768 39.7741388 -105.0075947 39.7741338
-6353 4201 1068 0.10398483351111 0.10398483351111 -105.0075947 39.7741338 -105.0088114 39.7741256
-6354 1068 2504 0.101881809876575 0.101881809876575 -105.0088114 39.7741256 -105.0100035 39.774133
-6355 2504 5520 0.10295538196753 0.10295538196753 -105.0100035 39.774133 -105.0112082 39.7741318
-6356 5520 1231 0.0964004159007037 0.0964004159007037 -105.0112082 39.7741318 -105.0123362 39.7741321
-6357 1231 4809 0.0995624903271375 0.0995624903271375 -105.0123362 39.7741321 -105.0135012 39.7741317
-6358 4809 2176 0.101169164261142 0.101169164261142 -105.0135012 39.7741317 -105.014685 39.7741313
-6359 2176 5521 0.102032335854251 0.102032335854251 -105.014685 39.7741313 -105.0158789 39.7741319
-6360 5521 348 0.0731550647240869 0.0731550647240869 -105.0158789 39.7741319 -105.0167349 39.7741306
-6361 348 351 0.0329026304601732 0.0329026304601732 -105.0167349 39.7741306 -105.0171199 39.7741304
-6363 5522 4629 0.122115753805888 0.122115753805888 -105.0175119 39.7741304 -105.0189408 39.7741298
-6364 4629 1258 0.132003632804436 0.132003632804436 -105.0189408 39.7741298 -105.0204854 39.7741292
-6366 377 4544 0.0548661978897115 0.0548661978897115 -105.0213949 39.7741289 -105.0220369 39.7741287
-6367 4544 2700 0.136738193723685 0.136738193723685 -105.0220369 39.7741287 -105.0236369 39.7741281
-6368 2700 5523 0.130559333935347 0.130559333935347 -105.0236369 39.7741281 -105.0251646 39.7741276
-6371 5525 1133 0.0486624445582808 0.0486624445582808 -105.0398709 39.7738651 -105.0404403 39.7738672
-6372 1133 5526 0.0510752177714687 0.0510752177714687 -105.0404403 39.7738672 -105.0410378 39.7738771
-6373 5526 5527 0.0534768474459495 0.0534768474459495 -105.0410378 39.7738771 -105.0416634 39.7738873
-6374 5527 3849 0.0993499397911337 0.0993499397911337 -105.0416634 39.7738873 -105.0428259 39.7738908
-20247 6972 10718 0.0278784612667637 0.0278784612667637 -105.0336248 39.7451433 -105.033621 39.745394
-6375 3849 5528 0.0502810849564127 0.0502810849564127 -105.0428259 39.7738908 -105.0434142 39.7738965
-6376 5528 5529 0.0506206995449551 0.0506206995449551 -105.0434142 39.7738965 -105.0440065 39.7738927
-6378 3432 5530 0.0954898525843842 0.0954898525843842 -105.0346033 39.7741067 -105.033486 39.774099
-6379 5530 1409 0.0985492973952367 0.0985492973952367 -105.033486 39.774099 -105.032333 39.774085
-6380 1409 5531 0.102140021124127 0.102140021124127 -105.032333 39.774085 -105.031138 39.77407
-6381 5531 3995 0.106588318724824 0.106588318724824 -105.031138 39.77407 -105.0298909 39.7740573
-6382 3995 5532 0.089989655098645 0.089989655098645 -105.0298909 39.7740573 -105.028838 39.774047
-6383 5532 5533 0.0940983975381981 0.0940983975381981 -105.028838 39.774047 -105.027737 39.774038
-6384 5533 3749 0.102559803256087 0.102559803256087 -105.027737 39.774038 -105.026537 39.774028
-6385 3749 5534 0.132377311804748 0.132377311804748 -105.026537 39.774028 -105.0252738 39.774717
-6388 2028 5536 0.103552176267271 0.103552176267271 -104.9936175 39.7741835 -104.9948277 39.7742296
-6391 3402 5538 0.101285303038309 0.101285303038309 -105.0346118 39.75209 -105.0357963 39.7521098
-6392 5538 5539 0.0982612440798091 0.0982612440798091 -105.0357963 39.7521098 -105.0369449 39.7521429
-6393 5539 5540 0.104203916508807 0.104203916508807 -105.0369449 39.7521429 -105.0381637 39.7521297
-6394 5540 5541 0.0994909347746214 0.0994909347746214 -105.0381637 39.7521297 -105.0393273 39.7521135
-6395 5541 5542 0.0496866830167122 0.0496866830167122 -105.0393273 39.7521135 -105.0399084 39.7521049
-6396 5542 1115 0.0483270289965061 0.0483270289965061 -105.0399084 39.7521049 -105.0404736 39.7520966
-6397 1115 5543 0.0505090974663915 0.0505090974663915 -105.0404736 39.7520966 -105.0410644 39.752101
-6398 5543 5544 0.051466523607823 0.051466523607823 -105.0410644 39.752101 -105.0416664 39.7521054
-6399 5544 5545 0.0509771831188889 0.0509771831188889 -105.0416664 39.7521054 -105.0422627 39.7521069
-18369 6894 6889 0.0506808956189271 0.0506808956189271 -105.0259502 39.7655831 -105.0259388 39.7651274
-6400 5545 3837 0.0484293465449961 0.0484293465449961 -105.0422627 39.7521069 -105.0428292 39.7521069
-6402 5546 5547 0.0572465530818606 0.0572465530818606 -104.9874887 39.6894093 -104.9881577 39.6894044
-6403 5547 4036 0.051041556606541 0.051041556606541 -104.9881577 39.6894044 -104.9887542 39.6894075
-6404 4036 5548 0.0609619584955507 0.0609619584955507 -104.9887542 39.6894075 -104.9894666 39.6894141
-6405 1878 4178 0.0543518295000293 0.0543518295000293 -104.9904039 39.689387 -104.9910391 39.689387
-6406 4178 5549 0.0885356562805968 0.0885356562805968 -104.9910391 39.689387 -104.9920738 39.6893875
-6408 1863 2630 0.0954187587481574 0.0954187587481574 -105.0439342 39.7212724 -105.0439263 39.7221305
-6409 2630 2609 0.0942841337329746 0.0942841337329746 -105.0439263 39.7221305 -105.0439334 39.7229784
-6410 2609 5207 0.106776685868403 0.106776685868403 -105.0439334 39.7229784 -105.0439566 39.7239385
-6411 5207 5191 0.0702035466323056 0.0702035466323056 -105.0439566 39.7239385 -105.0439457 39.7245698
-6412 5191 5550 0.105689823753241 0.105689823753241 -105.0439457 39.7245698 -105.0439763 39.72552
-6414 5551 5552 0.13548002915508 0.13548002915508 -105.0440125 39.7548692 -105.0440147 39.7560876
-6415 5552 5553 0.0682592832885596 0.0682592832885596 -105.0440147 39.7560876 -105.0440268 39.7567014
-6416 5553 19 0.0650116042038798 0.0650116042038798 -105.0440268 39.7567014 -105.044038 39.757286
-6417 19 2991 0.133631170313494 0.133631170313494 -105.044038 39.757286 -105.0440114 39.7584876
-6418 2991 5554 0.0524731372315077 0.0524731372315077 -105.0440114 39.7584876 -105.0440133 39.7589595
-6419 5554 1882 0.0490816557393864 0.0490816557393864 -105.0440133 39.7589595 -105.044015 39.7594009
-6420 1882 5555 0.0508829391590993 0.0508829391590993 -105.044015 39.7594009 -105.0440136 39.7598585
-6421 5555 5556 0.0494818870663145 0.0494818870663145 -105.0440136 39.7598585 -105.0440122 39.7603035
-6422 5556 5557 0.0511609921162368 0.0511609921162368 -105.0440122 39.7603035 -105.0440105 39.7607636
-6423 5557 5558 0.0498069369814246 0.0498069369814246 -105.0440105 39.7607636 -105.0440044 39.7612115
-6424 5558 5559 0.0494751154031395 0.0494751154031395 -105.0440044 39.7612115 -105.0440122 39.7616564
-6425 5559 5560 0.0510095826256232 0.0510095826256232 -105.0440122 39.7616564 -105.0440201 39.7621151
-18695 5978 4055 0.196460738141722 0.196460738141722 -105.0391098 39.719916 -105.0391007 39.7181492
-6426 5560 5561 0.100658038986824 0.100658038986824 -105.0440201 39.7621151 -105.0440091 39.7630203
-6427 5561 5562 0.100189919501299 0.100189919501299 -105.0440091 39.7630203 -105.0439996 39.7639213
-6428 5562 5243 0.0999621826427635 0.0999621826427635 -105.0439996 39.7639213 -105.0440231 39.7648201
-6429 5243 5563 0.0514845629022423 0.0514845629022423 -105.0440231 39.7648201 -105.0440188 39.7652831
-6430 5563 5564 0.0509507800422364 0.0509507800422364 -105.0440188 39.7652831 -105.0440146 39.7657413
-6431 5564 5565 0.0506384299937204 0.0506384299937204 -105.0440146 39.7657413 -105.0440165 39.7661967
-6432 5565 5566 0.0502094012018427 0.0502094012018427 -105.0440165 39.7661967 -105.0440247 39.7666482
-6433 5566 5567 0.0352773306402212 0.0352773306402212 -105.0440247 39.7666482 -105.0440325 39.7669654
-6434 5567 1696 0.0663073245001768 0.0663073245001768 -105.0440325 39.7669654 -105.0440268 39.7675617
-6435 1696 5568 0.200475700974595 0.200475700974595 -105.0440268 39.7675617 -105.0440382 39.7693646
-6436 5568 2444 0.175243279627828 0.175243279627828 -105.0440382 39.7693646 -105.0440363 39.7709406
-6438 5569 5570 0.150878938410471 0.150878938410471 -105.0440431 39.7711254 -105.0440138 39.7724821
-6439 5570 5571 0.0520399442807291 0.0520399442807291 -105.0440138 39.7724821 -105.0440106 39.7729501
-6440 5571 5572 0.00805055351559969 0.00805055351559969 -105.0440106 39.7729501 -105.0440103 39.7730225
-6441 5572 5573 0.0547971824088202 0.0547971824088202 -105.0440103 39.7730225 -105.0440081 39.7735153
-6442 5573 5529 0.0419651880906561 0.0419651880906561 -105.0440081 39.7735153 -105.0440065 39.7738927
-6443 5529 5574 0.00738334312936163 0.00738334312936163 -105.0440065 39.7738927 -105.0440065 39.7739591
-6444 5574 5575 0.0892116998808573 0.0892116998808573 -105.0440065 39.7739591 -105.044007 39.7747614
-6445 5575 5576 0.0587189734757016 0.0587189734757016 -105.044007 39.7747614 -105.0439812 39.7752891
-6446 5576 5577 0.143444822058071 0.143444822058071 -105.0439812 39.7752891 -105.0439697 39.7765791
-6447 5577 5578 0.0305007791534936 0.0305007791534936 -105.0439697 39.7765791 -105.0439694 39.7768534
-6448 5578 5579 0.0181914980281834 0.0181914980281834 -105.0439694 39.7768534 -105.0439692 39.777017
-6449 5579 5580 0.150469022298562 0.150469022298562 -105.0439692 39.777017 -105.0439678 39.7783702
-6450 5580 5581 0.204922214354376 0.204922214354376 -105.0439678 39.7783702 -105.04396 39.7802131
-6451 5581 5582 0.0983186744589269 0.0983186744589269 -105.04396 39.7802131 -105.0439618 39.7810973
-6452 5582 1433 0.108782481382419 0.108782481382419 -105.0439618 39.7810973 -105.043958 39.7820756
-6453 1433 5583 0.123482673613688 0.123482673613688 -105.043958 39.7820756 -105.043938 39.783186
-6454 5583 5584 0.0754033254163114 0.0754033254163114 -105.043938 39.783186 -105.0439445 39.7838641
-6455 5584 5585 0.194791277181441 0.194791277181441 -105.0439445 39.7838641 -105.043944 39.7856159
-6456 5585 5586 0.0533068649535537 0.0533068649535537 -105.043944 39.7856159 -105.0439435 39.7860953
-6457 5586 2555 0.14827848293408 0.14827848293408 -105.0439435 39.7860953 -105.0439421 39.7874288
-6458 2555 5587 0.408042656170713 0.408042656170713 -105.0439421 39.7874288 -105.0439281 39.7910984
-6459 5588 5589 0.135112968623698 0.135112968623698 -105.0439294 39.7354289 -105.0439287 39.736644
-6460 5589 5590 0.203702085134274 0.203702085134274 -105.0439287 39.736644 -105.0440007 39.7384751
-6461 5590 5591 0.207620262278034 0.207620262278034 -105.0440007 39.7384751 -105.0440223 39.7403422
-6462 5591 4585 0.131035476997682 0.131035476997682 -105.0440223 39.7403422 -105.0440113 39.7415206
-6463 4585 5592 0.072769358589151 0.072769358589151 -105.0440113 39.7415206 -105.0440283 39.7421749
-6464 5592 5593 0.0625746572307696 0.0625746572307696 -105.0440283 39.7421749 -105.0440188 39.7427376
-6465 5593 5301 0.137225765514935 0.137225765514935 -105.0440188 39.7427376 -105.0440208 39.7439717
-6467 5594 5595 0.274145349571988 0.274145349571988 -105.0438496 39.7258018 -105.0438951 39.728267
-6468 5595 5596 0.205443804135366 0.205443804135366 -105.0438951 39.728267 -105.0438933 39.7301146
-6469 5596 5597 0.121926623756206 0.121926623756206 -105.0438933 39.7301146 -105.0438865 39.7312111
-6470 5597 5598 0.202580256912195 0.202580256912195 -105.0438865 39.7312111 -105.0439037 39.7330329
-6472 4361 5599 0.206258701511779 0.206258701511779 -105.0015929 39.7165869 -105.0015794 39.7184418
-6474 5600 5601 0.168149469233138 0.168149469233138 -105.0015966 39.7194189 -105.0016014 39.7209311
-6476 2625 5205 0.166253482314503 0.166253482314503 -105.0013439 39.7226673 -105.001561 39.7241531
-6502 5622 5516 0.138783948073856 0.138783948073856 -105.0017809 39.7730094 -105.0017732 39.7742575
-6477 5205 5602 0.15603138237828 0.15603138237828 -105.001561 39.7241531 -105.0016002 39.725556
-6478 5602 5603 0.0341829476854199 0.0341829476854199 -105.0016002 39.725556 -105.0016041 39.7258634
-6479 5603 5604 0.162233690102157 0.162233690102157 -105.0016041 39.7258634 -105.0016005 39.7273224
-6480 5604 5605 0.176890418224524 0.176890418224524 -105.0016005 39.7273224 -105.0015919 39.7289132
-6481 5605 5606 0.121703194532156 0.121703194532156 -105.0015919 39.7289132 -105.0015885 39.7300077
-6482 5606 5609 0.0547747917576354 0.0547747917576354 -105.0015885 39.7300077 -105.0015869 39.7305003
-6483 5609 5610 0.177274555583034 0.177274555583034 -105.0015869 39.7305003 -105.0015677 39.7320945
-6484 5610 5611 0.0562757523743122 0.0562757523743122 -105.0015677 39.7320945 -105.0015677 39.7326006
-6485 5611 5381 0.0971287684245127 0.0971287684245127 -105.0015677 39.7326006 -105.0015677 39.7334741
-6486 5381 5370 0.0242294178668139 0.0242294178668139 -105.0015677 39.7334741 -105.0015763 39.7336919
-6487 5370 5612 0.177146422666141 0.177146422666141 -105.0015763 39.7336919 -105.001567 39.735285
-6488 5612 5613 0.176947014024794 0.176947014024794 -105.001567 39.735285 -105.0015927 39.7368762
-6489 5613 5614 0.177715418603807 0.177715418603807 -105.0015927 39.7368762 -105.0015572 39.7384742
-6490 5614 5615 0.0918268918834614 0.0918268918834614 -105.0015572 39.7384742 -105.0015645 39.7393
-6491 5615 5616 0.00795060277662081 0.00795060277662081 -105.0015645 39.7393 -105.0015651 39.7393715
-6493 5617 5618 0.0159556400855116 0.0159556400855116 -105.0015669 39.7400197 -105.0015736 39.7401631
-6496 5619 5620 0.132547309025511 0.132547309025511 -105.0018152 39.7656592 -105.0017926 39.7668511
-6497 5620 1667 0.132931219459218 0.132931219459218 -105.0017926 39.7668511 -105.0017747 39.7680465
-6498 1667 5621 0.138273532739947 0.138273532739947 -105.0017747 39.7680465 -105.0017647 39.76929
-6499 5621 2448 0.13601631946961 0.13601631946961 -105.0017647 39.76929 -105.0017747 39.7705132
-6500 2448 3238 0.136726308588665 0.136726308588665 -105.0017747 39.7705132 -105.0017809 39.7717428
-6501 3238 5622 0.14083949408811 0.14083949408811 -105.0017809 39.7717428 -105.0017809 39.7730094
-6503 5516 5623 0.135704638458681 0.135704638458681 -105.0017732 39.7742575 -105.0017268 39.7754774
-6504 5623 5624 0.00588469429500613 0.00588469429500613 -105.0017268 39.7754774 -105.0017248 39.7755303
-6505 5624 5625 0.115900802279231 0.115900802279231 -105.0017248 39.7755303 -105.0017162 39.7765726
-6506 5625 5626 0.19877742240622 0.19877742240622 -105.0017162 39.7765726 -105.0016991 39.7783602
-6507 5626 110 0.101954628240396 0.101954628240396 -105.0016991 39.7783602 -105.0016991 39.7792771
-6508 110 2818 0.0990079626838536 0.0990079626838536 -105.0016991 39.7792771 -105.0016991 39.7801675
-6509 2818 1419 0.203073935940985 0.203073935940985 -105.0016991 39.7801675 -105.0017224 39.7819937
-6510 1419 5627 0.11954884298017 0.11954884298017 -105.0017224 39.7819937 -105.0017122 39.7830688
-6511 2917 5628 0.0366435746314918 0.0366435746314918 -104.9732076 39.7181827 -104.9727792 39.7181791
-6513 3710 5629 0.104723848956837 0.104723848956837 -104.9874523 39.7183509 -104.9862279 39.718349
-6514 5629 5630 0.0524718119166661 0.0524718119166661 -104.9862279 39.718349 -104.9856145 39.7183411
-6515 5630 5631 0.0523604583661445 0.0523604583661445 -104.9856145 39.7183411 -104.9850024 39.7183333
-6516 5631 963 0.102688945741692 0.102688945741692 -104.9850024 39.7183333 -104.9838018 39.7183372
-6519 2898 5632 0.0542316769914945 0.0542316769914945 -104.9733526 39.7557317 -104.9727182 39.7557338
-6520 5632 5633 0.0508977749431617 0.0508977749431617 -104.9727182 39.7557338 -104.9721228 39.7557358
-6521 5633 5634 0.106035617894042 0.106035617894042 -104.9721228 39.7557358 -104.9708824 39.75574
-6522 5634 4734 0.104599442261749 0.104599442261749 -104.9708824 39.75574 -104.9696588 39.7557441
-6524 5635 5399 0.0949731678048623 0.0949731678048623 -104.9670667 39.7557406 -104.9659557 39.7557387
-6525 5399 5636 0.053273863098243 0.053273863098243 -104.9659557 39.7557387 -104.9653325 39.7557377
-6526 5636 5637 0.0532054766684841 0.0532054766684841 -104.9653325 39.7557377 -104.9647101 39.7557367
-6527 5637 3901 0.105282590951624 0.105282590951624 -104.9647101 39.7557367 -104.9634785 39.7557346
-6528 3901 1038 0.105350981348288 0.105350981348288 -104.9634785 39.7557346 -104.9622461 39.7557325
-6530 5638 5639 0.103436146317209 0.103436146317209 -104.9609978 39.7557305 -104.9597878 39.7557284
-6531 5639 5004 0.104923546637106 0.104923546637106 -104.9597878 39.7557284 -104.9585604 39.7557264
-6532 5004 3324 0.10200854500581 0.10200854500581 -104.9585604 39.7557264 -104.9573671 39.7557244
-20515 10842 6731 0.00724303302685487 0.00724303302685487 -105.0159695 39.7589091 -105.0159724 39.7589742
-6533 3324 5640 0.105949384946318 0.105949384946318 -104.9573671 39.7557244 -104.9561277 39.7557223
-6534 5640 5641 0.102726616753478 0.102726616753478 -104.9561277 39.7557223 -104.954926 39.7557203
-6535 5641 2075 0.105470656717315 0.105470656717315 -104.954926 39.7557203 -104.9536922 39.7557183
-6536 2075 2672 0.106385362776241 0.106385362776241 -104.9536922 39.7557183 -104.9524477 39.7557162
-6537 2672 4122 0.107308593371936 0.107308593371936 -104.9524477 39.7557162 -104.9511924 39.7557141
-6538 4122 5642 0.107983920400391 0.107983920400391 -104.9511924 39.7557141 -104.9499292 39.755712
-6539 5642 5643 0.0919555733248638 0.0919555733248638 -104.9499292 39.755712 -104.9488535 39.7557103
-7832 6456 349 0.0697483782641925 0.0697483782641925 -105.0158736 39.775342 -105.0166897 39.7753492
-6540 5643 5644 0.101410180701687 0.101410180701687 -104.9488535 39.7557103 -104.9476672 39.7557083
-6541 5644 3470 0.100777601888944 0.100777601888944 -104.9476672 39.7557083 -104.9464883 39.7557063
-6542 3470 5645 0.101863251928372 0.101863251928372 -104.9464883 39.7557063 -104.9452967 39.7557043
-6543 5645 3873 0.0981959903542781 0.0981959903542781 -104.9452967 39.7557043 -104.944148 39.7557023
-6544 3873 849 0.100085165894781 0.100085165894781 -104.944148 39.7557023 -104.9429772 39.7557004
-6546 1400 5646 0.00898751016812899 0.00898751016812899 -105.0324862 39.7250782 -105.0325885 39.7250967
-6547 5646 5647 0.190632434837625 0.190632434837625 -105.0325885 39.7250967 -105.0347769 39.7254226
-6548 5647 3388 0.011727623160982 0.011727623160982 -105.0347769 39.7254226 -105.0349134 39.7254327
-6549 3388 5648 0.0568259028608414 0.0568259028608414 -105.0349134 39.7254327 -105.0355748 39.7254817
-6550 5648 5649 0.00637619061562419 0.00637619061562419 -105.0355748 39.7254817 -105.035649 39.7254873
-6551 5649 5650 0.0463019954871414 0.0463019954871414 -105.035649 39.7254873 -105.0361904 39.7254853
-6552 5650 2800 0.0477133812275841 0.0477133812275841 -105.0361904 39.7254853 -105.0367483 39.7254828
-6553 2800 5651 0.0470719166287448 0.0470719166287448 -105.0367483 39.7254828 -105.0372987 39.7254804
-6554 5651 5652 0.0458325636837201 0.0458325636837201 -105.0372987 39.7254804 -105.0378346 39.7254837
-6555 5652 5653 0.046653544202397 0.046653544202397 -105.0378346 39.7254837 -105.0383801 39.725487
-6556 5653 5654 0.0464726377537293 0.0464726377537293 -105.0383801 39.725487 -105.0389235 39.725486
-6557 5654 5655 0.0469344544346564 0.0469344544346564 -105.0389235 39.725486 -105.0394723 39.725485
-6558 5655 2751 0.046215112991852 0.046215112991852 -105.0394723 39.725485 -105.0400126 39.7254926
-6559 2751 1096 0.0461039483088431 0.0461039483088431 -105.0400126 39.7254926 -105.0405516 39.7255002
-6560 1096 5656 0.0452023576254509 0.0452023576254509 -105.0405516 39.7255002 -105.0410801 39.7255057
-6561 5656 5657 0.0460150379661812 0.0460150379661812 -105.0410801 39.7255057 -105.0416181 39.7255114
-6562 5657 1539 0.0464321875423527 0.0464321875423527 -105.0416181 39.7255114 -105.042161 39.7255157
-6563 1539 3855 0.0473472190950861 0.0473472190950861 -105.042161 39.7255157 -105.0427146 39.72552
-6565 4485 345 0.22138299033862 0.22138299033862 -105.0056478 39.7253802 -105.0067949 39.727165
-6566 345 5661 0.163308085042962 0.163308085042962 -105.0067949 39.727165 -105.008697 39.727035
-6567 5661 5662 0.065819748510902 0.065819748510902 -105.008697 39.727035 -105.008885 39.726461
-6568 5661 5663 0.0801840013229962 0.0801840013229962 -105.008697 39.727035 -105.00953 39.727366
-6569 3287 5665 0.0688755620206119 0.0688755620206119 -104.9490802 39.7038404 -104.9486082 39.7033386
-6570 5665 5666 0.0427865432685629 0.0427865432685629 -104.9486082 39.7033386 -104.9482219 39.7030942
-6571 5666 523 0.0741847082758752 0.0741847082758752 -104.9482219 39.7030942 -104.947535 39.702687
-6572 523 5667 0.0513515905827488 0.0513515905827488 -104.947535 39.702687 -104.947235 39.702287
-6573 5667 597 0.0787762757947461 0.0787762757947461 -104.947235 39.702287 -104.9464074 39.7019764
-6574 597 4825 0.152733980621547 0.152733980621547 -104.9464074 39.7019764 -104.9446221 39.7019764
-6576 2530 1931 0.0607754389242505 0.0607754389242505 -105.0304849 39.7379392 -105.030496 39.7384857
-6578 5668 5669 0.20518077925237 0.20518077925237 -105.0310864 39.7548296 -105.0311012 39.7566748
-6580 5670 2976 0.052930873102536 0.052930873102536 -105.0310884 39.7580274 -105.0310829 39.7585034
-6582 5671 5672 0.0669604143503768 0.0669604143503768 -104.9976172 39.7173382 -104.997538 39.7179373
-6583 5672 3722 0.0539771509338677 0.0539771509338677 -104.997538 39.7179373 -104.9975448 39.7184227
-6584 3722 5673 0.103203771462203 0.103203771462203 -104.9975448 39.7184227 -104.9975345 39.7193508
-6585 5673 5674 0.175725539559539 0.175725539559539 -104.9975345 39.7193508 -104.9975487 39.7209311
-6587 5675 5676 0.204879915807757 0.204879915807757 -104.998391 39.7584595 -104.9984194 39.7603019
-6588 5677 5678 0.00677682168687122 0.00677682168687122 -104.998198 39.7674788 -104.9982133 39.7675386
-6589 5678 1665 0.0567234226799308 0.0567234226799308 -104.9982133 39.7675386 -104.9982066 39.7680487
-6590 1665 5679 0.122659531226911 0.122659531226911 -104.9982066 39.7680487 -104.9982029 39.7691518
-6592 5680 5681 0.862768870925976 0.862768870925976 -105.0432124 39.7065384 -105.0532533 39.7058097
-6593 5682 5683 0.164927546324728 0.164927546324728 -104.9991817 39.7066718 -105.0011096 39.70666
-6594 5683 4367 0.0355730578333277 0.0355730578333277 -105.0011096 39.70666 -105.0015253 39.7066683
-6595 4367 1448 0.193853665061985 0.193853665061985 -105.0015253 39.7066683 -105.0037914 39.7066687
-6596 1448 5688 0.205590441563944 0.205590441563944 -105.0037914 39.7066687 -105.0061947 39.7066687
-6598 5689 5690 0.100594816308247 0.100594816308247 -105.040852 39.7068752 -105.0420279 39.7068686
-6599 5690 5691 0.0991234853564762 0.0991234853564762 -105.0420279 39.7068686 -105.0431866 39.7068752
-6601 5438 5692 0.211107914724763 0.211107914724763 -105.0250719 39.7067303 -105.0275397 39.7067299
-6602 5692 4415 0.193109246091061 0.193109246091061 -105.0275397 39.7067299 -105.0297971 39.7067299
-6603 4415 5693 0.226139344299967 0.226139344299967 -105.0297971 39.7067299 -105.0324406 39.7067365
-6606 4323 5694 0.0859068688818743 0.0859068688818743 -105.0350585 39.7071591 -105.0360627 39.7071657
-6608 5695 5696 0.0748977449692987 0.0748977449692987 -105.0362429 39.7071723 -105.0371184 39.7071789
-6609 5696 5073 0.0868839085552243 0.0868839085552243 -105.0371184 39.7071789 -105.0381339 39.7071927
-6610 5073 5333 0.0187220275557185 0.0187220275557185 -105.0381339 39.7071927 -105.0382798 39.7073182
-6612 5697 1590 0.201198112839976 0.201198112839976 -105.010983 39.7065516 -105.0133347 39.7065252
-18141 10274 10269 0.134684266769083 0.134684266769083 -105.0136006 39.7885593 -105.0151755 39.7886103
-6613 1590 1640 0.20125093456728 0.20125093456728 -105.0133347 39.7065252 -105.0156865 39.706479
-6615 5698 5699 0.200385663675414 0.200385663675414 -105.0357723 39.7603267 -105.0357639 39.7621288
-6617 5700 5701 0.196514919519562 0.196514919519562 -105.035764 39.7622008 -105.0357666 39.7639681
-6618 5701 5248 0.110632746994 0.110632746994 -105.0357666 39.7639681 -105.0357544 39.764963
-6619 5248 5702 0.0945616875172071 0.0945616875172071 -105.0357544 39.764963 -105.0357792 39.7658132
-6620 5702 1685 0.205454867561864 0.205454867561864 -105.0357792 39.7658132 -105.0357789 39.7676609
-6621 1685 5703 0.206063854698429 0.206063854698429 -105.0357789 39.7676609 -105.0358122 39.7695139
-6622 5703 2430 0.199691165132387 0.199691165132387 -105.0358122 39.7695139 -105.0357922 39.7713097
-6623 2430 5704 0.202603259150386 0.202603259150386 -105.0357922 39.7713097 -105.0357738 39.7731317
-6625 4504 4050 0.176201016140026 0.176201016140026 -105.0361142 39.7165547 -105.0361228 39.7181393
-6626 4050 5707 0.173108439499024 0.173108439499024 -105.0361228 39.7181393 -105.0361257 39.7196961
-6628 1851 2587 0.179402678295732 0.179402678295732 -105.036129 39.721332 -105.0361228 39.7229454
-6630 5708 5709 0.275624196707738 0.275624196707738 -105.0361678 39.7257622 -105.0362218 39.7282406
-6632 5710 5711 0.261275347332411 0.261275347332411 -105.0362304 39.7306104 -105.0362237 39.7329601
-6634 5712 5713 0.0444779706577198 0.0444779706577198 -105.0357542 39.7810788 -105.0357542 39.7814788
-6635 5714 5715 0.183336097782058 0.183336097782058 -105.0357506 39.7767314 -105.0357824 39.77838
-6636 5715 5716 0.203064462732684 0.203064462732684 -105.0357824 39.77838 -105.0357784 39.7802062
-6638 5717 5718 0.153081250432522 0.153081250432522 -105.0358099 39.7329669 -105.0356487 39.734338
-6639 5718 5719 0.011675447758709 0.011675447758709 -105.0356487 39.734338 -105.0355549 39.7344143
-6641 1422 5720 0.117935613657917 0.117935613657917 -105.0357695 39.7820968 -105.0357487 39.7831573
-6643 5721 5722 0.194099197890973 0.194099197890973 -105.0357498 39.7838704 -105.035771 39.7856159
-6644 5722 2542 0.201930616083342 0.201930616083342 -105.035771 39.7856159 -105.0357769 39.7874319
-6645 2542 5723 0.411877202316789 0.411877202316789 -105.0357769 39.7874319 -105.035774 39.791136
-6646 5724 624 0.116891424974631 0.116891424974631 -105.0357584 39.7355345 -105.0357481 39.7365857
-6648 5725 5726 0.225973303098124 0.225973303098124 -104.9515323 39.7020311 -104.9536931 39.7008623
-6649 5726 3656 0.0613034024300807 0.0613034024300807 -104.9536931 39.7008623 -104.9541489 39.7004369
-6651 5727 5728 0.116763945302488 0.116763945302488 -105.0444167 39.7021543 -105.0443995 39.7011043
-6652 3634 5729 0.249262670016259 0.249262670016259 -104.9444999 39.7082421 -104.9447703 39.7060101
-6653 5729 5730 0.0886979206005476 0.0886979206005476 -104.9447703 39.7060101 -104.9441523 39.7053696
-6654 5730 5731 0.061003880318824 0.061003880318824 -104.9441523 39.7053696 -104.9434927 39.7051611
-6655 5731 3294 0.169569384240282 0.169569384240282 -104.9434927 39.7051611 -104.9425622 39.7038146
-6657 5730 5729 0.0886979206005476 0.0886979206005476 -104.9441523 39.7053696 -104.9447703 39.7060101
-18322 2543 7478 0.411854888798545 0.411854888798545 -105.0363411 39.7874312 -105.0363411 39.7911351
-6660 716 5733 0.106180030125168 0.106180030125168 -105.0041786 39.7730524 -105.005421 39.7730569
-6661 5733 5734 0.0889628078792179 0.0889628078792179 -105.005421 39.7730569 -105.0064617 39.7730392
-6663 5735 5736 0.0499420076759338 0.0499420076759338 -105.0393 39.7724567 -105.0398843 39.7724635
-6664 5736 1132 0.0480445960055664 0.0480445960055664 -105.0398843 39.7724635 -105.0404464 39.7724701
-6665 1132 5737 0.0493807651843696 0.0493807651843696 -105.0404464 39.7724701 -105.0410242 39.7724702
-6666 5737 5738 0.0542607296398929 0.0542607296398929 -105.0410242 39.7724702 -105.0416591 39.7724704
-6667 5738 3848 0.102653360815707 0.102653360815707 -105.0416591 39.7724704 -105.0428601 39.7724844
-6668 3848 5739 0.0481952973910705 0.0481952973910705 -105.0428601 39.7724844 -105.043424 39.77248
-6669 5739 5570 0.0504068578554883 0.0504068578554883 -105.043424 39.77248 -105.0440138 39.7724821
-6671 5740 5741 0.102055279401325 0.102055279401325 -104.9982189 39.7729896 -104.9994129 39.7730041
-6672 5741 3933 0.103350213888063 0.103350213888063 -104.9994129 39.7730041 -105.0006222 39.7730028
-6675 5742 4200 0.0968208569301817 0.0968208569301817 -105.0064961 39.7729336 -105.007629 39.7729337
-6676 4200 4193 0.0357662020116287 0.0357662020116287 -105.007629 39.7729337 -105.0080475 39.7729338
-6677 4193 1067 0.0660115016724451 0.0660115016724451 -105.0080475 39.7729338 -105.0088199 39.7729339
-6678 1067 2520 0.0682249892032966 0.0682249892032966 -105.0088199 39.7729339 -105.0096182 39.772934
-6679 2520 2503 0.0444235862340648 0.0444235862340648 -105.0096182 39.772934 -105.010138 39.772934
-6680 2503 5743 0.0929237526477458 0.0929237526477458 -105.010138 39.772934 -105.0112253 39.7729342
-6681 5743 1230 0.097564382820973 0.097564382820973 -105.0112253 39.7729342 -105.0123669 39.7729343
-6682 1230 4808 0.0974618272678182 0.0974618272678182 -105.0123669 39.7729343 -105.0135073 39.7729344
-6683 4808 2175 0.100974351727253 0.100974351727253 -105.0135073 39.7729344 -105.0146888 39.7729346
-6685 5744 5745 0.139227813146129 0.139227813146129 -105.0158722 39.7729208 -105.0175012 39.7729349
-20421 10782 10783 0.171335167034037 0.171335167034037 -105.0179661 39.7583302 -105.0159618 39.7583177
-6686 5745 4628 0.122998125096167 0.122998125096167 -105.0175012 39.7729349 -105.0189404 39.7729351
-6687 4628 378 0.0772242252157125 0.0772242252157125 -105.0189404 39.7729351 -105.019844 39.7729352
-6688 378 1257 0.0550380704812319 0.0550380704812319 -105.019844 39.7729352 -105.020488 39.7729352
-6689 1257 4543 0.132381944494249 0.132381944494249 -105.020488 39.7729352 -105.022037 39.7729354
-6690 4543 2715 0.0724896248395526 0.0724896248395526 -105.022037 39.7729354 -105.0228852 39.7729347
-7972 6547 5411 0.11011441218455 0.11011441218455 -104.9671106 39.7237629 -104.9658231 39.7237695
-6691 2715 2699 0.0727973179644107 0.0727973179644107 -105.0228852 39.7729347 -105.023737 39.7729356
-6692 2699 5748 0.121810190364873 0.121810190364873 -105.023737 39.7729356 -105.0251623 39.7729358
-6696 5750 5751 0.00763183841002978 0.00763183841002978 -105.0450566 39.7729489 -105.0451459 39.7729488
-6697 5751 5752 0.692257458082336 0.692257458082336 -105.0451459 39.7729488 -105.053246 39.7729508
-6698 2026 4672 0.134236367930218 0.134236367930218 -104.9920812 39.772996 -104.9936519 39.772996
-6699 4672 5753 0.102239429594337 0.102239429594337 -104.9936519 39.772996 -104.9948482 39.7729937
-6700 5753 5754 0.100506379378587 0.100506379378587 -104.9948482 39.7729937 -104.9960241 39.7730069
-6702 5755 5756 0.2002287044093 0.2002287044093 -104.9551441 39.7819442 -104.9551441 39.7837449
-6704 5757 5758 0.173042563926175 0.173042563926175 -104.9547567 39.7803553 -104.9547235 39.7819113
-6706 5759 744 0.063721377479395 0.063721377479395 -104.9553084 39.7758275 -104.9553192 39.7764005
-6707 744 1562 0.141424652289019 0.141424652289019 -104.9553192 39.7764005 -104.9553028 39.7776723
-6708 1562 5760 0.139452228533295 0.139452228533295 -104.9553028 39.7776723 -104.9553129 39.7789264
-6709 5760 5761 0.121153404070921 0.121153404070921 -104.9553129 39.7789264 -104.9552887 39.7800158
-6710 5761 5762 0.0103214683330101 0.0103214683330101 -104.9552887 39.7800158 -104.9552914 39.7801086
-6711 5762 5763 0.04652452941841 0.04652452941841 -104.9552914 39.7801086 -104.9552887 39.780527
-6712 5764 5765 0.155984788161682 0.155984788161682 -105.0047699 39.6984076 -105.0065723 39.6981963
-6716 5767 5768 0.200784793626825 0.200784793626825 -104.9758538 39.7800585 -104.974836 39.781686
-6743 3756 5769 0.0494129956173261 0.0494129956173261 -105.0264176 39.7874342 -105.0269959 39.7874328
-7994 6557 2764 0.0940480727939324 0.0940480727939324 -104.9338133 39.7243478 -104.9327137 39.724358
-6717 5768 5772 0.846413211947238 0.846413211947238 -104.974836 39.781686 -104.969071 39.787876
-6718 5772 517 0.0606861281340196 0.0606861281340196 -104.969071 39.787876 -104.968456 39.788149
-6719 517 5773 0.188473310975888 0.188473310975888 -104.968456 39.788149 -104.96707 39.7894676
-6721 5774 5775 0.0796153059223016 0.0796153059223016 -104.9874021 39.7450987 -104.9879817 39.7456591
-6722 5775 5776 0.00646390558051832 0.00646390558051832 -104.9879817 39.7456591 -104.9880305 39.7457035
-6723 5776 3007 0.1066159594542 0.1066159594542 -104.9880305 39.7457035 -104.9889069 39.7463856
-6724 3007 5777 0.100407769542541 0.100407769542541 -104.9889069 39.7463856 -104.989708 39.7470459
-6725 5777 4393 0.00579135202620092 0.00579135202620092 -104.989708 39.7470459 -104.9897603 39.747079
-6726 4393 5778 0.102044175747327 0.102044175747327 -104.9897603 39.747079 -104.990623 39.7477132
-6727 5778 5779 0.107668499777307 0.107668499777307 -104.990623 39.7477132 -104.9915202 39.7483927
-6728 5779 5780 0.108043382155599 0.108043382155599 -104.9915202 39.7483927 -104.9924092 39.7490833
-6729 5780 5781 0.101222003009649 0.101222003009649 -104.9924092 39.7490833 -104.9932554 39.74972
-6730 5781 5782 0.103527244594317 0.103527244594317 -104.9932554 39.74972 -104.9941044 39.7503839
-6733 5784 5785 0.0519740547318723 0.0519740547318723 -104.9949995 39.7510718 -104.9954256 39.7514052
-6734 5785 5786 0.0540518378903488 0.0540518378903488 -104.9954256 39.7514052 -104.995889 39.7517359
-6735 5786 5787 0.105403398355375 0.105403398355375 -104.995889 39.7517359 -104.99675 39.7524144
-6736 5787 5788 0.0515636589786252 0.0515636589786252 -104.99675 39.7524144 -104.9971819 39.7527381
-6737 5788 5789 0.0542361941294726 0.0542361941294726 -104.9971819 39.7527381 -104.9976271 39.7530856
-6738 5789 1159 0.0519632563805573 0.0519632563805573 -104.9976271 39.7530856 -104.9980616 39.7534124
-6739 1159 1609 0.055296326623055 0.055296326623055 -104.9980616 39.7534124 -104.9985176 39.7537651
-6742 5791 3756 0.0502859716725157 0.0502859716725157 -105.0258291 39.7874305 -105.0264176 39.7874342
-6744 5769 5792 0.0505152652453619 0.0505152652453619 -105.0269959 39.7874328 -105.0275871 39.7874313
-6745 5792 5793 0.0487326254633791 0.0487326254633791 -105.0275871 39.7874313 -105.0281574 39.7874261
-6746 5793 5794 0.0492772484970981 0.0492772484970981 -105.0281574 39.7874261 -105.0287341 39.7874292
-6747 5794 5795 0.0490197084274457 0.0490197084274457 -105.0287341 39.7874292 -105.0293078 39.7874293
-6748 5795 4008 0.0494402902066907 0.0494402902066907 -105.0293078 39.7874293 -105.0298864 39.7874254
-6749 4008 5796 0.0498144967732103 0.0498144967732103 -105.0298864 39.7874254 -105.0304694 39.7874265
-6750 5796 5797 0.0492676243070722 0.0492676243070722 -105.0304694 39.7874265 -105.031046 39.7874275
-6751 5797 5798 0.0496699296957128 0.0496699296957128 -105.031046 39.7874275 -105.0316273 39.7874301
-6752 5798 1392 0.0490530110641543 0.0490530110641543 -105.0316273 39.7874301 -105.0322013 39.7874223
-6753 1392 5799 0.0511729331725758 0.0511729331725758 -105.0322013 39.7874223 -105.0328002 39.7874226
-6755 5800 5801 0.0504747882864981 0.0504747882864981 -105.0333549 39.7874228 -105.0339455 39.7874133
-6756 5801 2540 0.0519704512694329 0.0519704512694329 -105.0339455 39.7874133 -105.0345536 39.7874035
-6758 5802 5803 0.0134893781959873 0.0134893781959873 -104.9916445 39.7400016 -104.9916422 39.7401229
-6759 5803 5804 0.0651761990637723 0.0651761990637723 -104.9916422 39.7401229 -104.99118 39.740589
-6760 5804 5805 0.00867856878189995 0.00867856878189995 -104.99118 39.740589 -104.9911089 39.7406447
-6761 5805 5806 0.145096674327765 0.145096674327765 -104.9911089 39.7406447 -104.989913 39.7415705
-6762 5806 5807 0.146807263740651 0.146807263740651 -104.989913 39.7415705 -104.9886895 39.7424968
-6763 5807 5808 0.0971857772299024 0.0971857772299024 -104.9886895 39.7424968 -104.9878972 39.7431235
-8041 6591 5218 0.10367384999594 0.10367384999594 -105.0332843 39.7329428 -105.0344966 39.7329537
-6766 5810 5811 0.146768415759705 0.146768415759705 -104.9814347 39.7480847 -104.9802084 39.7490084
-6768 1701 5812 0.0556890737408001 0.0556890737408001 -104.9875011 39.6911908 -104.9868503 39.6911967
-6769 5812 5813 0.0500299056894462 0.0500299056894462 -104.9868503 39.6911967 -104.9862656 39.6911947
-6770 5813 572 0.048773855210923 0.048773855210923 -104.9862656 39.6911947 -104.9856956 39.6911905
-6771 572 4985 0.0488849816155661 0.0488849816155661 -104.9856956 39.6911905 -104.9851243 39.6911864
-6772 4985 5815 0.0487728428614096 0.0487728428614096 -104.9851243 39.6911864 -104.9845543 39.6911833
-6773 5815 5816 0.0486567223604475 0.0486567223604475 -104.9845543 39.6911833 -104.9839857 39.6911771
-6774 5816 5817 0.0490027802416811 0.0490027802416811 -104.9839857 39.6911771 -104.983413 39.6911761
-6775 5817 5819 0.0533578755133891 0.0533578755133891 -104.983413 39.6911761 -104.9827894 39.6911761
-6776 5819 5820 0.0539390556466382 0.0539390556466382 -104.9827894 39.6911761 -104.9821591 39.6911678
-6778 5821 5822 0.0489941039004867 0.0489941039004867 -104.9815757 39.6911678 -104.9810031 39.6911678
-6780 3617 5823 0.0506292858836976 0.0506292858836976 -104.9804371 39.6911668 -104.9798455 39.691158
-6781 5823 5824 0.0500724300001191 0.0500724300001191 -104.9798455 39.691158 -104.9792603 39.6911567
-6782 5824 5825 0.0499880884355422 0.0499880884355422 -104.9792603 39.6911567 -104.9786761 39.6911533
-6783 5825 5099 0.0484306981291016 0.0484306981291016 -104.9786761 39.6911533 -104.9781101 39.6911501
-6784 5099 5826 0.0978349213689401 0.0978349213689401 -104.9781101 39.6911501 -104.9769668 39.691138
-8066 6604 2108 0.411848469661871 0.411848469661871 -104.9316605 39.7797563 -104.9269854 39.7788565
-6786 3484 5827 0.0514683137992155 0.0514683137992155 -104.9640755 39.691151 -104.963474 39.6911476
-6787 5827 5828 0.0484135897290906 0.0484135897290906 -104.963474 39.6911476 -104.9629082 39.6911444
-6789 5829 3698 0.0457527085543311 0.0457527085543311 -104.9622681 39.6911405 -104.9617334 39.6911372
-6790 3698 5705 0.0484471809833024 0.0484471809833024 -104.9617334 39.6911372 -104.9611673 39.6911287
-6791 5705 4572 0.0515108919391295 0.0515108919391295 -104.9611673 39.6911287 -104.9605654 39.6911197
-6792 4572 5830 0.105767692426024 0.105767692426024 -104.9605654 39.6911197 -104.9593294 39.6911329
-6793 5830 5831 0.0553912495449553 0.0553912495449553 -104.9593294 39.6911329 -104.9586821 39.6911399
-6794 5831 5832 0.0496407969110197 0.0496407969110197 -104.9586821 39.6911399 -104.958102 39.6911462
-6795 5832 5833 0.0474198419855964 0.0474198419855964 -104.958102 39.6911462 -104.9575478 39.6911453
-6796 5833 5834 0.0495588851512039 0.0495588851512039 -104.9575478 39.6911453 -104.9569687 39.691137
-6797 5834 5835 0.0489032950107884 0.0489032950107884 -104.9569687 39.691137 -104.9563972 39.6911319
-6798 5835 2741 0.0480512246257303 0.0480512246257303 -104.9563972 39.6911319 -104.9558357 39.6911246
-6800 5836 5232 0.0488850197079726 0.0488850197079726 -104.9552507 39.6911326 -104.9546794 39.6911367
-6801 5232 5837 0.0498079610709467 0.0498079610709467 -104.9546794 39.6911367 -104.9540973 39.6911339
-6802 5837 3174 0.0480709718129458 0.0480709718129458 -104.9540973 39.6911339 -104.9535355 39.6911312
-6803 3174 5838 0.0510747433773575 0.0510747433773575 -104.9535355 39.6911312 -104.9529386 39.6911278
-6804 5838 4999 0.0480555922075882 0.0480555922075882 -104.9529386 39.6911278 -104.9523772 39.6911402
-8084 6614 6615 0.0939591856631224 0.0939591856631224 -104.9338724 39.736497 -104.9349711 39.7364838
-6805 4999 5839 0.0491139247433474 0.0491139247433474 -104.9523772 39.6911402 -104.9518032 39.6911405
-6806 5839 731 0.0513728158017048 0.0513728158017048 -104.9518032 39.6911405 -104.9512028 39.6911407
-18529 9525 9153 0.0559524577768326 0.0559524577768326 -105.0340236 39.7499955 -105.0338511 39.7495101
-6807 731 5840 0.100363141472313 0.100363141472313 -104.9512028 39.6911407 -104.9500299 39.6911495
-6810 4683 1528 0.0512242368793757 0.0512242368793757 -104.9751813 39.691337 -104.9746158 39.6911858
-6811 1528 5087 0.0490096920376181 0.0490096920376181 -104.9746158 39.6911858 -104.9740434 39.6911697
-6812 5087 5841 0.0531197353238214 0.0531197353238214 -104.9740434 39.6911697 -104.973423 39.6911522
-6813 5841 5011 0.0514391840217863 0.0514391840217863 -104.973423 39.6911522 -104.9728223 39.6911338
-6814 5011 1747 0.0499193361712115 0.0499193361712115 -104.9728223 39.6911338 -104.9722389 39.6911368
-6815 1747 5608 0.0521168381912245 0.0521168381912245 -104.9722389 39.6911368 -104.9716303 39.6911179
-6816 5608 5842 0.0474458476070982 0.0474458476070982 -104.9716303 39.6911179 -104.9710758 39.6911161
-6817 5842 5449 0.0516188826793533 0.0516188826793533 -104.9710758 39.6911161 -104.9704727 39.6911049
-6818 5449 5428 0.0497563082276933 0.0497563082276933 -104.9704727 39.6911049 -104.9698913 39.6910963
-6819 5428 5390 0.0522374705433985 0.0522374705433985 -104.9698913 39.6910963 -104.9692808 39.6910982
-6820 5390 5843 0.0480447601658553 0.0480447601658553 -104.9692808 39.6910982 -104.9687193 39.6910999
-6822 5844 5845 0.0146913941785162 0.0146913941785162 -104.9407088 39.6911295 -104.9405371 39.6911295
-6823 5845 1699 0.184528247922268 0.184528247922268 -104.9405371 39.6911295 -104.9383805 39.6911269
-6824 1699 5846 0.0932680068963059 0.0932680068963059 -104.9383805 39.6911269 -104.9372905 39.6911203
-6825 5846 5847 0.0932852372069282 0.0932852372069282 -104.9372905 39.6911203 -104.9362004 39.6911071
-6826 5847 3120 0.098410300465854 0.098410300465854 -104.9362004 39.6911071 -104.9350503 39.6911005
-6827 3120 5848 0.0905968964383526 0.0905968964383526 -104.9350503 39.6911005 -104.9339926 39.6911379
-6828 5848 5849 0.19461602791519 0.19461602791519 -104.9339926 39.6911379 -104.9317181 39.6911379
-8104 239 6631 0.0428753899381976 0.0428753899381976 -104.9766938 39.6912137 -104.9763643 39.6909232
-6830 5850 5851 0.0206820775273506 0.0206820775273506 -105.0022921 39.7147654 -105.0025228 39.7148211
-6833 1635 5853 0.0933590693142476 0.0933590693142476 -105.015737 39.714787 -105.016828 39.7148117
-6834 5853 5854 0.015431953306933 0.015431953306933 -105.016828 39.7148117 -105.0170084 39.7148136
-6835 5854 4213 0.0860217230993429 0.0860217230993429 -105.0170084 39.7148136 -105.018014 39.714824
-6836 4213 5855 0.0995731813164872 0.0995731813164872 -105.018014 39.714824 -105.019178 39.714811
-6837 5855 192 0.102944368273924 0.102944368273924 -105.019178 39.714811 -105.0203814 39.7148249
-6838 192 2922 0.0977156398673512 0.0977156398673512 -105.0203814 39.7148249 -105.021523 39.7147919
-6840 5305 1460 0.094441811393562 0.094441811393562 -105.0227504 39.7148051 -105.0238542 39.7148259
-6841 1460 5433 0.104542660065313 0.104542660065313 -105.0238542 39.7148259 -105.0250764 39.7148315
-6843 5856 1868 0.210287860037949 0.210287860037949 -104.9875046 39.7147611 -104.9899631 39.7147612
-6844 1868 4186 0.189585415099738 0.189585415099738 -104.9899631 39.7147612 -104.9921793 39.7147876
-6846 5432 5857 0.104903215241116 0.104903215241116 -105.0250773 39.714991 -105.0263037 39.7149834
-6847 5857 5858 0.105720950651237 0.105720950651237 -105.0263037 39.7149834 -105.0275397 39.7149834
-6848 5858 5859 0.105743888331652 0.105743888331652 -105.0275397 39.7149834 -105.0287757 39.7149636
-6849 5859 4421 0.104252361029944 0.104252361029944 -105.0287757 39.7149636 -105.0299945 39.7149702
-6852 5861 5862 0.0519463280728807 0.0519463280728807 -105.0324691 39.7149773 -105.0330764 39.7149803
-6853 5862 5863 0.0520746976816124 0.0520746976816124 -105.0330764 39.7149803 -105.0336852 39.7149834
-6854 5863 5864 0.053223022054701 0.053223022054701 -105.0336852 39.7149834 -105.0343073 39.7149733
-6855 5864 4317 0.0510499917933612 0.0510499917933612 -105.0343073 39.7149733 -105.034904 39.7149636
-8127 6232 6642 0.179146147134138 0.179146147134138 -104.9985893 39.7257061 -104.9985895 39.7273172
-6857 5865 4505 0.0514748271562017 0.0514748271562017 -105.0355038 39.7149636 -105.0361056 39.7149636
-6858 4505 3608 0.0515275362522861 0.0515275362522861 -105.0361056 39.7149636 -105.036708 39.7149602
-6859 3608 5866 0.050240952107019 0.050240952107019 -105.036708 39.7149602 -105.0372953 39.7149674
-6860 5866 5867 0.0507479546434346 0.0507479546434346 -105.0372953 39.7149674 -105.0378886 39.7149662
-6861 5867 5067 0.0521453287858806 0.0521453287858806 -105.0378886 39.7149662 -105.0384982 39.7149609
-6862 5067 5868 0.051338093574988 0.051338093574988 -105.0384982 39.7149609 -105.0390984 39.7149619
-6863 5868 5869 0.0516032507649761 0.0516032507649761 -105.0390984 39.7149619 -105.0397017 39.7149609
-6864 5869 5870 0.0504748368648883 0.0504748368648883 -105.0397017 39.7149609 -105.0402918 39.7149634
-6865 5870 5871 0.0517263613465763 0.0517263613465763 -105.0402918 39.7149634 -105.0408965 39.7149688
-6866 5871 5872 0.102624635673 0.102624635673 -105.0408965 39.7149688 -105.0420963 39.7149694
-6867 5872 3299 0.100255573957512 0.100255573957512 -105.0420963 39.7149694 -105.0432684 39.7149673
-6869 5873 5874 0.0663164411935832 0.0663164411935832 -105.043719 39.7149652 -105.0444942 39.7149755
-6870 5874 5875 0.0488050085545576 0.0488050085545576 -105.0444942 39.7149755 -105.0450642 39.7149556
-6871 5875 5876 0.702184603750594 0.702184603750594 -105.0450642 39.7149556 -105.0532734 39.7149935
-6874 4525 5880 0.0113022768719971 0.0113022768719971 -105.0251701 39.7632042 -105.0252841 39.7632557
-6875 5880 5881 0.00806516295239482 0.00806516295239482 -105.0252841 39.7632557 -105.0253707 39.7632845
-6876 5881 5882 0.0293119532501538 0.0293119532501538 -105.0253707 39.7632845 -105.0256867 39.7633869
-6877 5882 5883 0.0236481545130312 0.0236481545130312 -105.0256867 39.7633869 -105.025945 39.7634631
-6878 5883 5884 0.0171068759325808 0.0171068759325808 -105.025945 39.7634631 -105.026131 39.7635199
-6879 5884 5885 0.034181660212992 0.034181660212992 -105.026131 39.7635199 -105.0264783 39.7636723
-6880 5885 5887 0.100387180512852 0.100387180512852 -105.0264783 39.7636723 -105.0276119 39.7639084
-6882 4433 5888 0.29159089003557 0.29159089003557 -105.0109506 39.7174666 -105.0109694 39.7148443
-6883 5888 4667 0.102395884967111 0.102395884967111 -105.0109694 39.7148443 -105.011015 39.7139241
-6885 1334 1389 0.100271016747699 0.100271016747699 -105.0110016 39.7130472 -105.011015 39.7121455
-6886 1389 5889 0.10737593920352 0.10737593920352 -105.011015 39.7121455 -105.0110016 39.7111799
-6887 5889 5890 0.105882607972477 0.105882607972477 -105.0110016 39.7111799 -105.0109926 39.7102277
-6888 5890 4707 0.0969202900217867 0.0969202900217867 -105.0109926 39.7102277 -105.010984 39.7093561
-6889 4707 5891 0.0993764614715991 0.0993764614715991 -105.010984 39.7093561 -105.0109775 39.7084624
-6890 5891 5892 0.0973957865151901 0.0973957865151901 -105.0109775 39.7084624 -105.0109755 39.7075865
-6891 5892 5894 0.0203600085186263 0.0203600085186263 -105.0109755 39.7075865 -105.0109744 39.7074034
-6893 5697 5895 0.0355610028885881 0.0355610028885881 -105.010983 39.7065516 -105.0109801 39.7062318
-6894 5895 5896 0.0640153359599377 0.0640153359599377 -105.0109801 39.7062318 -105.0109828 39.7056561
-6896 4960 5897 0.0913255616395888 0.0913255616395888 -105.0109882 39.7047956 -105.0109828 39.7039743
-6897 5897 766 0.157641216727225 0.157641216727225 -105.0109828 39.7039743 -105.0109855 39.7025566
-6898 766 5898 0.395381245817633 0.395381245817633 -105.0109855 39.7025566 -105.0121335 39.6991123
-6899 5898 5899 0.0981801741162947 0.0981801741162947 -105.0121335 39.6991123 -105.0126138 39.6983104
-6900 5899 5900 0.174689811260162 0.174689811260162 -105.0126138 39.6983104 -105.0127248 39.6967417
-6902 2304 156 0.331433636002878 0.331433636002878 -105.0127167 39.6959791 -105.0117244 39.6930979
-6903 156 1720 0.249409879986366 0.249409879986366 -105.0117244 39.6930979 -105.0117515 39.690855
-6904 1720 5901 0.152027484629828 0.152027484629828 -105.0117515 39.690855 -105.0117601 39.6894878
-6906 5902 5903 1.05455714042968 1.05455714042968 -105.0117344 39.688114 -105.011022 39.678646
-6907 491 5904 0.0146888160266615 0.0146888160266615 -104.9407607 39.7492347 -104.9405891 39.7492413
-6908 5904 5905 0.0975979556077691 0.0975979556077691 -104.9405891 39.7492413 -104.9394475 39.7492413
-6910 5906 5907 0.0945117172125904 0.0945117172125904 -104.9383649 39.7492571 -104.9372594 39.7492562
-6911 5907 5908 0.096024253167286 0.096024253167286 -104.9372594 39.7492562 -104.9361363 39.7492673
-6913 1999 3359 0.0933322730569792 0.0933322730569792 -104.9350364 39.749243 -104.9339447 39.7492406
-6914 3359 2753 0.0957031890234733 0.0957031890234733 -104.9339447 39.7492406 -104.9328253 39.7492476
-6915 2753 5909 0.0964098595755736 0.0964098595755736 -104.9328253 39.7492476 -104.9316976 39.7492496
-6916 5909 2279 0.103797892128295 0.103797892128295 -104.9316976 39.7492496 -104.9304837 39.7492674
-6917 2279 3601 0.0979307072208472 0.0979307072208472 -104.9304837 39.7492674 -104.9293385 39.7492475
-6918 3601 5910 0.101687049589159 0.101687049589159 -104.9293385 39.7492475 -104.9281491 39.749241
-6919 5910 2134 0.103076736979193 0.103076736979193 -104.9281491 39.749241 -104.9269439 39.7492673
-6920 2134 5911 0.0994872973933105 0.0994872973933105 -104.9269439 39.7492673 -104.9257802 39.7492674
-6921 5911 5912 0.098205073412404 0.098205073412404 -104.9257802 39.7492674 -104.9246315 39.749269
-6944 5930 5931 0.00713304879374381 0.00713304879374381 -104.979327 39.7304328 -104.9792436 39.7304339
-6922 5912 5913 1.00880972234204 1.00880972234204 -104.9246315 39.749269 -104.9128315 39.7492855
-6923 5914 3921 0.0830806742363044 0.0830806742363044 -104.9646486 39.7304917 -104.9636772 39.7304796
-6924 3921 1014 0.0989804018365723 0.0989804018365723 -104.9636772 39.7304796 -104.96252 39.7304983
-6925 1014 5915 0.0998222515540108 0.0998222515540108 -104.96252 39.7304983 -104.9613527 39.7304983
-6926 5915 5916 0.104139822117371 0.104139822117371 -104.9613527 39.7304983 -104.960135 39.730487
-6927 5916 5023 0.0793768943130485 0.0793768943130485 -104.960135 39.730487 -104.9592069 39.7304983
-6929 5917 5918 0.112165266092601 0.112165266092601 -104.987439 39.7304505 -104.9861275 39.730436
-6930 5918 5919 0.108065845165718 0.108065845165718 -104.9861275 39.730436 -104.9848641 39.7304571
-6931 5919 5920 0.0537421133423824 0.0537421133423824 -104.9848641 39.7304571 -104.9842358 39.7304466
-6932 5920 5921 0.0547683090118863 0.0547683090118863 -104.9842358 39.7304466 -104.9835955 39.730436
-6933 5921 5922 0.0617512871216813 0.0617512871216813 -104.9835955 39.730436 -104.9828734 39.7304382
-6934 5922 5923 0.0505486132029595 0.0505486132029595 -104.9828734 39.7304382 -104.9822823 39.7304399
-6935 5923 5924 0.0485674117985671 0.0485674117985671 -104.9822823 39.7304399 -104.9817146 39.7304273
-6936 5924 5925 0.00910751947845144 0.00910751947845144 -104.9817146 39.7304273 -104.9816081 39.7304277
-6937 5925 3160 0.040672974998317 0.040672974998317 -104.9816081 39.7304277 -104.9811325 39.7304243
-6938 3160 5926 0.0119123696733134 0.0119123696733134 -104.9811325 39.7304243 -104.9809932 39.730424
-6939 5926 5927 0.0422638247579918 0.0422638247579918 -104.9809932 39.730424 -104.9804991 39.7304325
-6940 5927 5928 0.00946046354749371 0.00946046354749371 -104.9804991 39.7304325 -104.9803886 39.7304366
-6941 5928 4978 0.0392608349230605 0.0392608349230605 -104.9803886 39.7304366 -104.9799295 39.7304346
-6942 4978 5929 0.00830374951839601 0.00830374951839601 -104.9799295 39.7304346 -104.9798324 39.7304351
-6943 5929 5930 0.04322033436118 0.04322033436118 -104.9798324 39.7304351 -104.979327 39.7304328
-12307 8642 8643 0.0298175315684779 0.0298175315684779 -105.0079921 39.7544142 -105.0079172 39.7541523
-6945 5931 5932 0.0454758802600548 0.0454758802600548 -104.9792436 39.7304339 -104.9787119 39.7304412
-6946 5932 5933 0.0473060152011751 0.0473060152011751 -104.9787119 39.7304412 -104.9781588 39.7304487
-6947 5933 5934 0.0496187677804403 0.0496187677804403 -104.9781588 39.7304487 -104.9775786 39.7304533
-6948 5934 5935 0.0504477908402203 0.0504477908402203 -104.9775786 39.7304533 -104.9769887 39.7304575
-6949 5935 5050 0.0515402266931002 0.0515402266931002 -104.9769887 39.7304575 -104.976386 39.7304575
-6950 5050 5687 0.0468197679026621 0.0468197679026621 -104.976386 39.7304575 -104.9758385 39.7304575
-6953 5453 982 0.0502364246424336 0.0502364246424336 -104.9746713 39.7304514 -104.9740839 39.7304453
-6954 982 5937 0.0968891441459385 0.0968891441459385 -104.9740839 39.7304453 -104.9729509 39.7304453
-6955 5937 5938 0.0503259455718068 0.0503259455718068 -104.9729509 39.7304453 -104.9723624 39.7304448
-6956 5938 5939 0.0502893520356679 0.0502893520356679 -104.9723624 39.7304448 -104.9717744 39.7304519
-6957 5939 3129 0.0485573864514234 0.0485573864514234 -104.9717744 39.7304519 -104.9712066 39.7304555
-6958 3129 5117 0.0498372694791184 0.0498372694791184 -104.9712066 39.7304555 -104.9706239 39.7304632
-6959 5117 5941 0.0493022558846739 0.0493022558846739 -104.9706239 39.7304632 -104.9700474 39.7304587
-6960 5941 4716 0.0507626244890517 0.0507626244890517 -104.9700474 39.7304587 -104.9694538 39.7304565
-6961 4716 5942 0.142284142826663 0.142284142826663 -104.9694538 39.7304565 -104.96779 39.7304653
-6963 5943 5944 0.01393899602166 0.01393899602166 -104.9407521 39.7310056 -104.9405891 39.731006
-6964 5944 5945 0.364458473389243 0.364458473389243 -104.9405891 39.731006 -104.9363272 39.7310185
-6965 5945 5946 0.0993153072226578 0.0993153072226578 -104.9363272 39.7310185 -104.9351663 39.7310442
-6966 5946 5947 0.101492282005104 0.101492282005104 -104.9351663 39.7310442 -104.9339798 39.731066
-6967 5947 5948 0.101164116161519 0.101164116161519 -104.9339798 39.731066 -104.9327968 39.7310647
-6968 5948 5949 0.102917574680079 0.102917574680079 -104.9327968 39.7310647 -104.9315933 39.7310618
-6969 5949 5950 0.099000654458151 0.099000654458151 -104.9315933 39.7310618 -104.9304356 39.7310602
-6970 5950 5951 0.102683540906436 0.102683540906436 -104.9304356 39.7310602 -104.9292349 39.7310503
-6972 5952 5145 0.0645729302199529 0.0645729302199529 -104.9280748 39.7310598 -104.9273197 39.7310625
-6973 5145 2119 0.0381578888853594 0.0381578888853594 -104.9273197 39.7310625 -104.9268735 39.7310598
-6975 5953 5954 0.100685153983508 0.100685153983508 -104.9257284 39.7310507 -104.924551 39.7310505
-6976 5954 5955 0.195476970380349 0.195476970380349 -104.924551 39.7310505 -104.9222652 39.7310656
-6978 5511 5956 0.144816938742182 0.144816938742182 -104.974688 39.7559741 -104.9735293 39.7569242
-6979 5956 2899 0.0164641943336492 0.0164641943336492 -104.9735293 39.7569242 -104.9733522 39.7569824
-6981 5957 5776 0.0786471324555583 0.0786471324555583 -104.9873834 39.7462062 -104.9880305 39.7457035
-6982 5776 5958 0.142074016754489 0.142074016754489 -104.9880305 39.7457035 -104.9891839 39.7447837
-6984 5959 5960 0.119153206354199 0.119153206354199 -104.9904219 39.7438323 -104.9914093 39.7430761
-6985 5960 5961 0.0270871445537288 0.0270871445537288 -104.9914093 39.7430761 -104.9916357 39.7429057
-6986 5961 5962 0.145839788109516 0.145839788109516 -104.9916357 39.7429057 -104.9928478 39.7419829
-6987 5962 5963 0.00712354730707594 0.00712354730707594 -104.9928478 39.7419829 -104.9929071 39.7419379
-6988 5963 5964 0.140131025523345 0.140131025523345 -104.9929071 39.7419379 -104.9940638 39.7410451
-6989 5964 5965 0.140225597174846 0.140225597174846 -104.9940638 39.7410451 -104.9952082 39.7401418
-6990 5965 4943 0.0161740048379517 0.0161740048379517 -104.9952082 39.7401418 -104.9952896 39.7400105
-6992 5354 5966 0.0365984296224293 0.0365984296224293 -104.9856252 39.7476126 -104.9852928 39.74782
-8275 6722 2311 0.00867549185460531 0.00867549185460531 -105.0112278 39.7314296 -105.0112958 39.7314875
-6993 5966 5967 0.107476511645453 0.107476511645453 -104.9852928 39.74782 -104.9844118 39.7485095
-6994 5967 5968 0.147256677185358 0.147256677185358 -104.9844118 39.7485095 -104.9831894 39.7494425
-6995 5968 5969 0.146721278462678 0.146721278462678 -104.9831894 39.7494425 -104.98198 39.7503787
-6996 5969 5361 0.147170892096024 0.147170892096024 -104.98198 39.7503787 -104.9807486 39.7513036
-6997 5361 2684 0.148391053722383 0.148391053722383 -104.9807486 39.7513036 -104.9795298 39.7522538
-6999 5970 807 0.0217813759552713 0.0217813759552713 -104.9783626 39.753192 -104.9781222 39.7532569
-7001 5971 4332 0.0931508534748433 0.0931508534748433 -104.978267 39.7840741 -104.9771769 39.7840807
-7002 4332 5038 0.0953468172233397 0.0953468172233397 -104.9771769 39.7840807 -104.9760611 39.7840873
-7004 5972 5857 0.176936009900748 0.176936009900748 -105.0263295 39.7165745 -105.0263037 39.7149834
-7005 5857 1300 0.178425403895618 0.178425403895618 -105.0263037 39.7149834 -105.0263381 39.713379
-7006 1300 5973 0.247668336727678 0.247668336727678 -105.0263381 39.713379 -105.0263219 39.7111517
-7008 5974 5975 0.19695744936537 0.19695744936537 -105.0263476 39.6984996 -105.0263805 39.6967285
-7010 1502 4378 0.103568243200344 0.103568243200344 -105.0263295 39.6949026 -105.0263037 39.6939714
-7012 5976 2341 0.175343347413509 0.175343347413509 -104.9257736 39.717827 -104.9257718 39.7194039
-7013 2341 5977 0.176971375987128 0.176971375987128 -104.9257718 39.7194039 -104.9257568 39.7209954
-7014 5977 4784 0.243234077821538 0.243234077821538 -104.9257568 39.7209954 -104.9260932 39.7231675
-7015 4784 5979 0.240492752461347 0.240492752461347 -104.9260932 39.7231675 -104.9260981 39.7253303
-7016 5979 5980 0.0330257004550899 0.0330257004550899 -104.9260981 39.7253303 -104.9261008 39.7256273
-7017 5980 5981 0.271622774119548 0.271622774119548 -104.9261008 39.7256273 -104.9260461 39.7280697
-7018 5981 5982 0.132843712894559 0.132843712894559 -104.9260461 39.7280697 -104.9260654 39.7292643
-7020 5983 5984 0.0865708728240205 0.0865708728240205 -104.9258169 39.7793462 -104.9257912 39.7801245
-7021 5984 5985 0.115162845747273 0.115162845747273 -104.9257912 39.7801245 -104.9258084 39.7811601
-7023 758 5986 0.228351368086018 0.228351368086018 -104.9258629 39.7765766 -104.9258093 39.7786298
-7026 5146 5157 0.0344312485594002 0.0344312485594002 -104.9257328 39.7300276 -104.9257489 39.730337
-7027 5157 5953 0.0793791794144798 0.0793791794144798 -104.9257489 39.730337 -104.9257284 39.7310507
-7028 5953 2240 0.201141072863101 0.201141072863101 -104.9257284 39.7310507 -104.925734 39.7328596
-7029 2240 4913 0.204101361959596 0.204101361959596 -104.925734 39.7328596 -104.9257471 39.7346951
-7031 5988 5989 0.202410682591791 0.202410682591791 -104.9257168 39.7364786 -104.9257287 39.7382989
-7032 5989 5990 0.204104998697393 0.204104998697393 -104.9257287 39.7382989 -104.9257974 39.7401337
-7033 5990 689 0.195952399265096 0.195952399265096 -104.9257974 39.7401337 -104.9257594 39.7418957
-7034 689 1980 0.165723809852799 0.165723809852799 -104.9257594 39.7418957 -104.9258091 39.7433856
-7035 1980 1965 0.0389234534803582 0.0389234534803582 -104.9258091 39.7433856 -104.925792 39.7437354
-7036 1965 5991 0.211595737081182 0.211595737081182 -104.925792 39.7437354 -104.9258205 39.7456382
-7037 5991 2477 0.19787541766453 0.19787541766453 -104.9258205 39.7456382 -104.9258057 39.7474177
-7039 5911 5992 0.199600309761125 0.199600309761125 -104.9257802 39.7492674 -104.9257974 39.7510624
-7040 5992 802 0.200311937766574 0.200311937766574 -104.9257974 39.7510624 -104.9257802 39.7528638
-7041 802 5993 0.204076160777324 0.204076160777324 -104.9257802 39.7528638 -104.9257827 39.7546991
-7042 5993 5994 0.207502868601311 0.207502868601311 -104.9257827 39.7546991 -104.925772 39.7565652
-7043 5994 5995 0.201507936335064 0.201507936335064 -104.925772 39.7565652 -104.9257668 39.7583774
-18161 10256 2170 0.118696748630409 0.118696748630409 -105.0141119 39.7874307 -105.0146867 39.7884025
-7044 5995 3065 0.198422916856477 0.198422916856477 -104.9257668 39.7583774 -104.9257357 39.7601617
-7045 3065 5996 0.187785068593932 0.187785068593932 -104.9257357 39.7601617 -104.9257688 39.7618503
-7048 5998 1151 0.103522476706234 0.103522476706234 -104.9257702 39.7628567 -104.9257702 39.7637877
-7049 1151 5999 0.201885859106491 0.201885859106491 -104.9257702 39.7637877 -104.9257746 39.7656033
-7050 5999 2774 0.203030941446461 0.203030941446461 -104.9257746 39.7656033 -104.9257496 39.7674291
-7051 2774 6000 0.200151361396455 0.200151361396455 -104.9257496 39.7674291 -104.9257444 39.7692291
-7053 4375 2856 0.142504312909228 0.142504312909228 -105.0014998 39.6989095 -105.0031649 39.6989425
-7054 2856 6001 0.0983652484533134 0.0983652484533134 -105.0031649 39.6989425 -105.0043064 39.6990482
-7055 6001 6002 0.0964239306891795 0.0964239306891795 -105.0043064 39.6990482 -105.0054308 39.6991076
-7056 6002 6003 0.098310599923513 0.098310599923513 -105.0054308 39.6991076 -105.0065799 39.6991077
-7057 6003 1761 0.137700629072643 0.137700629072643 -105.0065799 39.6991077 -105.0081893 39.6990933
-7058 1761 6004 0.100513600298964 0.100513600298964 -105.0081893 39.6990933 -105.0093641 39.6991016
-7059 6004 3822 0.0995871831820294 0.0995871831820294 -105.0093641 39.6991016 -105.0105281 39.6990962
-7060 3822 5898 0.137360760654976 0.137360760654976 -105.0105281 39.6990962 -105.0121335 39.6991123
-7061 5898 6005 0.132447355715672 0.132447355715672 -105.0121335 39.6991123 -105.0128712 39.7001595
-7063 1597 1654 0.133194225128182 0.133194225128182 -105.0140815 39.6999614 -105.015638 39.699987
-7064 1654 6006 0.125247640008909 0.125247640008909 -105.015638 39.699987 -105.0169911 39.700417
-7065 6006 4209 0.0896990215886268 0.0896990215886268 -105.0169911 39.700417 -105.0180383 39.7004566
-7067 6007 200 0.0969312782671765 0.0969312782671765 -105.0192141 39.7004566 -105.0203471 39.7004566
-7069 6008 6009 0.237519218216988 0.237519218216988 -104.930634 39.692987 -104.9317136 39.6910191
-7071 6010 700 0.202130694041649 0.202130694041649 -104.9453987 39.7401427 -104.9453488 39.7419601
-7072 700 6011 0.200920157017241 0.200920157017241 -104.9453488 39.7419601 -104.9453382 39.743767
-7074 1752 6012 0.41064210801689 0.41064210801689 -104.944277 39.787439 -104.9452877 39.7838286
-7076 6013 898 0.069285729612221 0.069285729612221 -104.945032 39.7638499 -104.9450302 39.764473
-7079 5168 6014 0.173942254032852 0.173942254032852 -104.9449622 39.716238 -104.9449634 39.7178023
-7080 6014 2356 0.178647695597581 0.178647695597581 -104.9449634 39.7178023 -104.9449537 39.7194089
-7081 2356 4157 0.173431342052579 0.173431342052579 -104.9449537 39.7194089 -104.9449591 39.7209686
-7082 4157 4744 0.174265758482508 0.174265758482508 -104.9449591 39.7209686 -104.9449996 39.7225355
-7083 4744 6015 0.17586665041424 0.17586665041424 -104.9449996 39.7225355 -104.9449591 39.7241168
-7084 6015 6017 0.166030537226764 0.166030537226764 -104.9449591 39.7241168 -104.9450503 39.7256083
-7085 6017 1206 0.168368552768231 0.168368552768231 -104.9450503 39.7256083 -104.9450941 39.7271221
-7086 1206 6018 0.0222310506019077 0.0222310506019077 -104.9450941 39.7271221 -104.9450985 39.727322
-7087 6018 3777 0.199517083270274 0.199517083270274 -104.9450985 39.727322 -104.9450973 39.7291163
-7088 3777 6019 0.15332994885881 0.15332994885881 -104.9450973 39.7291163 -104.9450856 39.7304952
-7089 6019 956 0.176955920540622 0.176955920540622 -104.9450856 39.7304952 -104.9450895 39.7320866
-7090 956 6020 0.174665514088028 0.174665514088028 -104.9450895 39.7320866 -104.9450945 39.7336574
-7091 6020 4894 0.161958937862416 0.161958937862416 -104.9450945 39.7336574 -104.945082 39.7351139
-7092 4894 6021 0.18390531780345 0.18390531780345 -104.945082 39.7351139 -104.9450808 39.7367678
-7093 6021 5492 0.174079428498661 0.174079428498661 -104.9450808 39.7367678 -104.9450674 39.7383333
-7094 5492 6022 0.20029370655809 0.20029370655809 -104.9450674 39.7383333 -104.9450447 39.7401345
-7096 3037 6023 0.213499262828813 0.213499262828813 -104.9449805 39.75904 -104.9449634 39.76096
-7098 3578 5645 0.141952777714747 0.141952777714747 -104.9452895 39.7544277 -104.9452967 39.7557043
-8369 876 4464 0.138360134725968 0.138360134725968 -104.968419 39.7645054 -104.9684223 39.7657497
-7100 4359 4350 0.0475473932483631 0.0475473932483631 -104.9453012 39.7565195 -104.9453036 39.7569471
-7101 4350 1533 0.0507609705805194 0.0507609705805194 -104.9453036 39.7569471 -104.9453062 39.7574036
-7102 1533 6024 0.087689125787215 0.087689125787215 -104.9453062 39.7574036 -104.9453106 39.7581922
-7103 6024 3036 0.0935380351023268 0.0935380351023268 -104.9453106 39.7581922 -104.9453153 39.7590334
-7105 2396 6026 0.14381066174273 0.14381066174273 -104.9452638 39.7738711 -104.9453067 39.775164
-7107 1270 4534 0.202622361744701 0.202622361744701 -105.0204072 39.7193738 -105.0227761 39.719354
-7108 4534 6027 0.199229442979025 0.199229442979025 -105.0227761 39.719354 -105.0251054 39.7193679
-7110 6028 6029 0.912875631293974 0.912875631293974 -104.9959579 39.7817094 -104.9855966 39.7797106
-7112 1075 2498 0.0816070075181441 0.0816070075181441 -105.0092438 39.7854664 -105.0101988 39.7854584
-7113 2498 6030 0.0415787253165096 0.0415787253165096 -105.0101988 39.7854584 -105.0106854 39.7854577
-7114 6030 6031 0.0433303737265817 0.0433303737265817 -105.0106854 39.7854577 -105.0111925 39.7854571
-7116 6032 6033 0.0508682336735258 0.0508682336735258 -105.0111965 39.7856112 -105.0117918 39.7856148
-7117 6033 1215 0.0487831269807967 0.0487831269807967 -105.0117918 39.7856148 -105.0123627 39.7856181
-7118 1215 6034 0.0505678656124617 0.0505678656124617 -105.0123627 39.7856181 -105.0129545 39.7856166
-7119 6034 4787 0.0490298276079548 0.0490298276079548 -105.0129545 39.7856166 -105.0135283 39.7856151
-7120 4787 6035 0.0502099740409632 0.0502099740409632 -105.0135283 39.7856151 -105.0141159 39.7856183
-7121 6035 2168 0.0503125854793333 0.0503125854793333 -105.0141159 39.7856183 -105.0147047 39.7856216
-7122 2168 6036 0.0482434584483166 0.0482434584483166 -105.0147047 39.7856216 -105.0152693 39.7856221
-17215 8403 8420 0.200752773596098 0.200752773596098 -104.9775319 39.7038582 -104.9774882 39.7056633
-7123 6036 6037 0.0486536038515005 0.0486536038515005 -105.0152693 39.7856221 -105.0158387 39.7856226
-7125 6038 6039 0.0499795151912972 0.0499795151912972 -105.0164173 39.7856269 -105.0170022 39.7856234
-7126 6039 6040 0.0491412278477837 0.0491412278477837 -105.0170022 39.7856234 -105.0175773 39.7856256
-7127 6040 6041 0.0497771068440158 0.0497771068440158 -105.0175773 39.7856256 -105.0181598 39.7856198
-7128 6041 6042 0.0494653664650395 0.0494653664650395 -105.0181598 39.7856198 -105.0187387 39.7856192
-7129 6042 4660 0.0491491990718702 0.0491491990718702 -105.0187387 39.7856192 -105.0193139 39.7856187
-7130 4660 6043 0.0497609288638681 0.0497609288638681 -105.0193139 39.7856187 -105.0198962 39.7856251
-7131 6043 1290 0.0489747324983769 0.0489747324983769 -105.0198962 39.7856251 -105.0204693 39.7856314
-7133 6044 4562 0.0495973986652376 0.0495973986652376 -105.0210575 39.7856258 -105.0216379 39.7856202
-7134 4562 6045 0.0489640905184848 0.0489640905184848 -105.0216379 39.7856202 -105.0222109 39.785625
-7135 6045 6046 0.0491691479666822 0.0491691479666822 -105.0222109 39.785625 -105.0227863 39.7856298
-7136 6046 6047 0.0507578186257211 0.0507578186257211 -105.0227863 39.7856298 -105.0233803 39.7856255
-7137 6047 2730 0.0500913644840885 0.0500913644840885 -105.0233803 39.7856255 -105.0239665 39.7856212
-7138 2730 6048 0.0486937991070737 0.0486937991070737 -105.0239665 39.7856212 -105.0245363 39.7856143
-7139 6048 6049 0.0563508416708434 0.0563508416708434 -105.0245363 39.7856143 -105.0251957 39.7856063
-7140 6049 6050 0.0543668616299433 0.0543668616299433 -105.0251957 39.7856063 -105.0258319 39.7856132
-7141 6050 3755 0.049786406684993 0.049786406684993 -105.0258319 39.7856132 -105.0264145 39.7856195
-7142 3755 6051 0.0495857892809515 0.0495857892809515 -105.0264145 39.7856195 -105.0269948 39.7856221
-7143 6051 6052 0.0496881410470813 0.0496881410470813 -105.0269948 39.7856221 -105.0275763 39.7856198
-7144 6052 6053 0.0491149994031363 0.0491149994031363 -105.0275763 39.7856198 -105.0281511 39.7856201
-18545 5563 7539 0.0787059485791879 0.0787059485791879 -105.0440188 39.7652831 -105.0449396 39.7652893
-7145 6053 6054 0.0498540025598143 0.0498540025598143 -105.0281511 39.7856201 -105.0287345 39.7856259
-7146 6054 6055 0.0489875409651698 0.0489875409651698 -105.0287345 39.7856259 -105.0293078 39.7856235
-7147 6055 4007 0.0499802866726516 0.0499802866726516 -105.0293078 39.7856235 -105.0298927 39.7856278
-7148 4007 6056 0.0488162842829032 0.0488162842829032 -105.0298927 39.7856278 -105.030464 39.7856261
-7149 6056 6057 0.0489359547659716 0.0489359547659716 -105.030464 39.7856261 -105.0310367 39.7856243
-7150 6057 6058 0.0509862761511403 0.0509862761511403 -105.0310367 39.7856243 -105.0316334 39.7856243
-7151 6058 1391 0.0507897478531174 0.0507897478531174 -105.0316334 39.7856243 -105.0322278 39.7856243
-7152 1391 6059 0.0484575520219378 0.0484575520219378 -105.0322278 39.7856243 -105.0327949 39.7856263
-7154 6060 6061 0.051268887373703 0.051268887373703 -105.0333562 39.7856282 -105.0339562 39.7856259
-7155 6061 3440 0.0523540538479921 0.0523540538479921 -105.0339562 39.7856259 -105.0345689 39.7856236
-7156 3440 6062 0.0526542821957606 0.0526542821957606 -105.0345689 39.7856236 -105.0351851 39.7856197
-7157 6062 5722 0.0500652354639954 0.0500652354639954 -105.0351851 39.7856197 -105.035771 39.7856159
-7158 5722 6063 0.0491749564449066 0.0491749564449066 -105.035771 39.7856159 -105.0363465 39.7856148
-7159 6063 6064 0.0490553316653512 0.0490553316653512 -105.0363465 39.7856148 -105.0369206 39.7856137
-7160 6064 6065 0.0504053225202572 0.0504053225202572 -105.0369206 39.7856137 -105.0375105 39.7856129
-7161 6065 6066 0.0491577785316978 0.0491577785316978 -105.0375105 39.7856129 -105.0380858 39.7856122
-7162 6066 6067 0.0500917004504544 0.0500917004504544 -105.0380858 39.7856122 -105.038672 39.7856168
-7163 6067 6068 0.0487330457346556 0.0487330457346556 -105.038672 39.7856168 -105.0392423 39.7856213
-7164 6068 6069 0.0500468552276867 0.0500468552276867 -105.0392423 39.7856213 -105.039828 39.7856193
-7165 6069 1089 0.0473039342434908 0.0473039342434908 -105.039828 39.7856193 -105.0403816 39.7856175
-7166 1089 6070 0.0519349767204956 0.0519349767204956 -105.0403816 39.7856175 -105.0409894 39.7856189
-7167 6070 6071 0.0483547253107021 0.0483547253107021 -105.0409894 39.7856189 -105.0415553 39.7856202
-7169 6072 3860 0.0495593243927177 0.0495593243927177 -105.0421669 39.7856198 -105.0427469 39.7856195
-7170 3860 6073 0.0493012970703545 0.0493012970703545 -105.0427469 39.7856195 -105.0433238 39.7856121
-7171 6073 5585 0.0529959751032204 0.0529959751032204 -105.0433238 39.7856121 -105.043944 39.7856159
-7173 1003 5222 0.108094382628624 0.108094382628624 -104.987571 39.7855779 -104.988836 39.785586
-7175 6074 3213 0.169273308004073 0.169273308004073 -104.962329 39.712563 -104.9628505 39.7110945
-7176 3213 6075 0.200540081035548 0.200540081035548 -104.9628505 39.7110945 -104.9628492 39.709291
-7177 6075 1924 0.199718283006537 0.199718283006537 -104.9628492 39.709291 -104.962875 39.707495
-7178 1924 6076 0.202212418704144 0.202212418704144 -104.962875 39.707495 -104.9628366 39.7056767
-7179 6076 3268 0.201184980777767 0.201184980777767 -104.9628366 39.7056767 -104.9628366 39.7038674
-7180 3268 6077 0.201398824177077 0.201398824177077 -104.9628366 39.7038674 -104.9628485 39.7020562
-7181 6077 81 0.202519482529809 0.202519482529809 -104.9628485 39.7020562 -104.9628455 39.7002349
-7182 81 3517 0.205035908609294 0.205035908609294 -104.9628455 39.7002349 -104.9628742 39.6983911
-7183 3517 4259 0.201561198640626 0.201561198640626 -104.9628742 39.6983911 -104.9628968 39.6965785
-7184 4259 6078 0.201877222241407 0.201877222241407 -104.9628968 39.6965785 -104.9629093 39.694763
-7185 6078 6079 0.198020897047098 0.198020897047098 -104.9629093 39.694763 -104.9629257 39.6929822
-7186 6079 5828 0.204359521871182 0.204359521871182 -104.9629257 39.6929822 -104.9629082 39.6911444
-7187 5828 6080 0.203452288011347 0.203452288011347 -104.9629082 39.6911444 -104.9628739 39.6893149
-7188 6080 6081 0.199577893436046 0.199577893436046 -104.9628739 39.6893149 -104.962857 39.6875201
-7189 6082 4198 0.0554105901874734 0.0554105901874734 -105.007037 39.720887 -105.007437 39.721279
-8462 1578 6834 0.296770354889592 0.296770354889592 -105.0401129 39.6876594 -105.0401263 39.6849905
-7190 4198 6083 0.479532197769768 0.479532197769768 -105.007437 39.721279 -105.0092748 39.7253533
-7193 6085 3417 0.199987779646285 0.199987779646285 -105.0322636 39.7629835 -105.0346033 39.7629904
-7195 5561 6086 0.0785728419075768 0.0785728419075768 -105.0440091 39.7630203 -105.0449283 39.7630131
-7196 6086 6087 0.711200705359908 0.711200705359908 -105.0449283 39.7630131 -105.0532488 39.7629903
-7197 6088 6089 0.0569381576865727 0.0569381576865727 -105.0111515 39.7608094 -105.0118176 39.7608059
-7199 1755 4797 0.0569796757564415 0.0569796757564415 -105.0124792 39.7608073 -105.0131458 39.7608063
-7200 4797 6090 0.0568688820659326 0.0568688820659326 -105.0131458 39.7608063 -105.0138111 39.7608043
-7201 6090 2163 0.0576467707798926 0.0576467707798926 -105.0138111 39.7608043 -105.0144855 39.7608022
-7202 2163 6091 0.115287318699314 0.115287318699314 -105.0144855 39.7608022 -105.0158342 39.7607944
-7204 4029 6092 0.199820514844545 0.199820514844545 -105.0299179 39.761227 -105.0322556 39.7612283
-7205 6092 3413 0.201407533266255 0.201407533266255 -105.0322556 39.7612283 -105.0346118 39.761242
-7207 6093 6094 0.0604203300865654 0.0604203300865654 -105.0268612 39.760858 -105.027568 39.7608513
-7208 6094 6095 0.0494745769978518 0.0494745769978518 -105.027568 39.7608513 -105.0281468 39.7608514
-7209 6095 6096 0.0926701881064251 0.0926701881064251 -105.0281468 39.7608514 -105.0292309 39.760844
-7210 6096 4028 0.05825540400242 0.05825540400242 -105.0292309 39.760844 -105.0299124 39.7608394
-7212 5558 6097 0.589453817263917 0.589453817263917 -105.0440044 39.7612115 -105.0509004 39.761199
-7213 111 6098 0.0840698350347185 0.0840698350347185 -104.929111 39.709605 -104.928134 39.709687
-7214 6098 5387 0.102649580636379 0.102649580636379 -104.928134 39.709687 -104.926934 39.709687
-7216 6099 4834 0.0618019179836103 0.0618019179836103 -104.9444906 39.7093483 -104.9437682 39.7093402
-7217 4834 6100 0.103506880889302 0.103506880889302 -104.9437682 39.7093402 -104.9425586 39.7093158
-7218 6100 6101 0.102436270515026 0.102436270515026 -104.9425586 39.7093158 -104.9413615 39.709292
-7219 6101 6102 0.0462582791506537 0.0462582791506537 -104.9413615 39.709292 -104.9408208 39.7092854
-7221 5388 6103 0.0951666989097628 0.0951666989097628 -104.926934 39.709287 -104.9258215 39.7092917
-7222 6103 6104 0.103533109860882 0.103533109860882 -104.9258215 39.7092917 -104.9246113 39.7092785
-17793 6179 8402 0.062258154453335 0.062258154453335 -104.9873985 39.7569664 -104.9873999 39.7564065
-7223 6104 6105 1.01266363478673 1.01266363478673 -104.9246113 39.7092785 -104.9127732 39.7093215
-7226 6107 6108 0.0985711721031886 0.0985711721031886 -104.9851845 39.7093159 -104.9840322 39.7093206
-7227 6108 6109 0.106459269312792 0.106459269312792 -104.9840322 39.7093206 -104.9827877 39.709314
-7228 6109 6110 0.106833918076069 0.106833918076069 -104.9827877 39.709314 -104.9815389 39.7093013
-7229 6110 3622 0.0989181087898918 0.0989181087898918 -104.9815389 39.7093013 -104.980383 39.7092759
-7230 3622 6111 0.098886772683552 0.098886772683552 -104.980383 39.7092759 -104.979227 39.7092785
-7231 6111 6112 0.0498651872917774 0.0498651872917774 -104.979227 39.7092785 -104.9786441 39.7092737
-7232 6112 6113 0.0465544361472323 0.0465544361472323 -104.9786441 39.7092737 -104.9780999 39.7092693
-7233 6113 6114 0.048644459525012 0.048644459525012 -104.9780999 39.7092693 -104.9775313 39.7092628
-7234 6114 1769 0.0504837415599517 0.0504837415599517 -104.9775313 39.7092628 -104.9769412 39.7092561
-7235 1769 4488 0.0559949291466801 0.0559949291466801 -104.9769412 39.7092561 -104.9762867 39.7092645
-7236 4488 6115 0.0469382916231929 0.0469382916231929 -104.9762867 39.7092645 -104.9757389 39.7092889
-7237 6115 4839 0.0486148679353184 0.0486148679353184 -104.9757389 39.7092889 -104.9751709 39.7092743
-7239 1519 5280 0.0508144170388461 0.0508144170388461 -104.9745633 39.7092771 -104.9739693 39.7092817
-7240 5280 6116 0.0496680994860777 0.0496680994860777 -104.9739693 39.7092817 -104.9733887 39.7092862
-7241 6116 1086 0.0854394240121282 0.0854394240121282 -104.9733887 39.7092862 -104.9723899 39.7092881
-7244 6118 5426 0.102968153598516 0.102968153598516 -104.9710442 39.7092903 -104.9698407 39.7093079
-7245 5426 6119 0.101169119900675 0.101169119900675 -104.9698407 39.7093079 -104.9686581 39.7092969
-7246 6119 2048 0.10059076820208 0.10059076820208 -104.9686581 39.7092969 -104.9674823 39.7092837
-7247 2048 6120 0.0997250287478783 0.0997250287478783 -104.9674823 39.7092837 -104.9663168 39.7093042
-7248 6120 6121 0.100591265363907 0.100591265363907 -104.9663168 39.7093042 -104.9651409 39.7093108
-7249 6121 6122 0.0474195280765072 0.0474195280765072 -104.9651409 39.7093108 -104.9645867 39.7093011
-7250 6122 3477 0.0495243305794908 0.0495243305794908 -104.9645867 39.7093011 -104.9640079 39.709291
-7251 3477 6123 0.0472960657562571 0.0472960657562571 -104.9640079 39.709291 -104.963455 39.709291
-7252 6123 6075 0.0518212274102399 0.0518212274102399 -104.963455 39.709291 -104.9628492 39.709291
-7253 6075 6124 0.0477720158174774 0.0477720158174774 -104.9628492 39.709291 -104.9622908 39.7092845
-7254 6124 3692 0.0491494225474026 0.0491494225474026 -104.9622908 39.7092845 -104.9617163 39.7092778
-7255 3692 6125 0.0492733746042409 0.0492733746042409 -104.9617163 39.7092778 -104.9611403 39.709281
-7256 6125 4567 0.0513179295413005 0.0513179295413005 -104.9611403 39.709281 -104.9605404 39.7092844
-7257 4567 6126 0.104996585237884 0.104996585237884 -104.9605404 39.7092844 -104.959313 39.709291
-7259 6127 6128 0.202552708883543 0.202552708883543 -105.0286529 39.7293168 -105.0286516 39.7311384
-7260 6128 6129 0.200575382409089 0.200575382409089 -105.0286516 39.7311384 -105.0286784 39.7329421
-7261 6129 6130 0.200851528697639 0.200851528697639 -105.0286784 39.7329421 -105.0286757 39.7347484
-7263 6131 4042 0.178407205955933 0.178407205955933 -105.0287757 39.7165547 -105.0287585 39.7181591
-7264 4042 6132 0.176658257473219 0.176658257473219 -105.0287585 39.7181591 -105.0287845 39.7197477
-7265 6132 6133 0.173893747367395 0.173893747367395 -105.0287845 39.7197477 -105.0288029 39.7213115
-7266 6133 1832 0.00321363581065808 0.00321363581065808 -105.0288029 39.7213115 -105.0288032 39.7213404
-7267 1832 6134 0.0979518830790181 0.0979518830790181 -105.0288032 39.7213404 -105.0288059 39.7222213
-7268 6134 2577 0.0768544895315019 0.0768544895315019 -105.0288059 39.7222213 -105.0288186 39.7229124
-7270 2974 713 0.0553033256449361 0.0553033256449361 -105.0281658 39.7584695 -105.0281562 39.7589668
-7271 713 1884 0.049816225531446 0.049816225531446 -105.0281562 39.7589668 -105.0281527 39.7594148
-7272 1884 269 0.0489259588819734 0.0489259588819734 -105.0281527 39.7594148 -105.0281511 39.7598548
-7273 269 6135 0.049929244786193 0.049929244786193 -105.0281511 39.7598548 -105.0281572 39.7603038
-7274 6135 6095 0.0608968307992014 0.0608968307992014 -105.0281572 39.7603038 -105.0281468 39.7608514
-7276 1819 6136 0.206807888451467 0.206807888451467 -105.0286551 39.7269539 -105.0288404 39.7288083
-7278 6137 6138 0.137211297869344 0.137211297869344 -105.0287666 39.7560413 -105.0287838 39.7572752
-7280 6139 4576 0.0888580713995718 0.0888580713995718 -105.0283324 39.7407242 -105.0283618 39.741523
-7281 4576 6140 0.134023429450374 0.134023429450374 -105.0283618 39.741523 -105.0283644 39.7427283
-7282 6140 5292 0.135037120828343 0.135037120828343 -105.0283644 39.7427283 -105.028373 39.7439427
-7283 5292 6141 0.134292125855752 0.134292125855752 -105.028373 39.7439427 -105.0283644 39.7451504
-7285 11 6142 0.134290112908847 0.134290112908847 -105.0283851 39.746369 -105.0283851 39.7475767
-7286 6142 6143 0.134379347336523 0.134379347336523 -105.0283851 39.7475767 -105.0283819 39.7487852
-7287 6143 6144 0.135319045428869 0.135319045428869 -105.0283819 39.7487852 -105.0283496 39.7500019
-7288 6144 6145 0.133823509557072 0.133823509557072 -105.0283496 39.7500019 -105.0283535 39.7512054
-7289 6145 6146 0.133595456488811 0.133595456488811 -105.0283535 39.7512054 -105.0283964 39.7524064
-7290 6146 6147 0.132813208199385 0.132813208199385 -105.0283964 39.7524064 -105.0283879 39.7536008
-7291 6147 6148 0.135903166352965 0.135903166352965 -105.0283879 39.7536008 -105.0283827 39.754823
-7293 6149 5532 0.117263436099258 0.117263436099258 -105.0287889 39.7729931 -105.028838 39.774047
-7294 5532 6150 0.292646155170772 0.292646155170772 -105.028838 39.774047 -105.028752 39.776678
-7296 4069 6054 0.143532163506992 0.143532163506992 -105.0287428 39.7843351 -105.0287345 39.7856259
-7297 6054 5794 0.200517814130868 0.200517814130868 -105.0287345 39.7856259 -105.0287341 39.7874292
-7299 6151 6152 0.134234537479531 0.134234537479531 -105.0283314 39.7766715 -105.0283323 39.7778787
-7300 6152 2491 0.134965193585355 0.134965193585355 -105.0283323 39.7778787 -105.0283152 39.7790924
-7301 2491 2836 0.132191750515313 0.132191750515313 -105.0283152 39.7790924 -105.028326 39.7802812
-7303 2760 6153 0.17786816992516 0.17786816992516 -104.9328153 39.7162508 -104.9328092 39.7146512
-7304 6153 3104 0.174733256162163 0.174733256162163 -104.9328092 39.7146512 -104.9328006 39.7130798
-7305 3104 6156 0.194828104098244 0.194828104098244 -104.9328006 39.7130798 -104.932787 39.7113277
-7307 62 3549 0.192897189560382 0.192897189560382 -104.932829 39.700178 -104.932762 39.698444
-7309 191 5855 0.144500472019434 0.144500472019434 -105.02039 39.7157163 -105.019178 39.714811
-7313 1335 6158 0.164940728280041 0.164940728280041 -105.012511 39.712992 -105.01431 39.712458
-7315 3709 719 0.105637457999026 0.105637457999026 -105.002935 39.7760646 -105.004171 39.7760778
-7317 3184 6159 0.175088076753778 0.175088076753778 -104.9555361 39.7016193 -104.9571463 39.7006474
-7318 6159 91 0.0479220492178455 0.0479220492178455 -104.9571463 39.7006474 -104.9570295 39.7002259
-7319 91 3527 0.203258724621779 0.203258724621779 -104.9570295 39.7002259 -104.956949 39.698399
-7320 3527 6160 0.201096029386997 0.201096029386997 -104.956949 39.698399 -104.9569485 39.6965905
-7321 6160 6161 0.201913621123293 0.201913621123293 -104.9569485 39.6965905 -104.9569665 39.6947747
-7323 6162 5834 0.203525395170747 0.203525395170747 -104.9569515 39.6929673 -104.9569687 39.691137
-7324 5834 6163 0.200952914390398 0.200952914390398 -104.9569687 39.691137 -104.9569776 39.6893298
-7326 3276 3651 0.182839298131176 0.182839298131176 -104.9569423 39.703847 -104.9569509 39.7022027
-7329 6166 4285 0.103763551261197 0.103763551261197 -104.9697218 39.7719933 -104.9705937 39.7726427
-7331 1617 6167 0.103830241851319 0.103830241851319 -104.9723691 39.774003 -104.9732245 39.7746661
-7333 6168 2159 0.117895446926253 0.117895446926253 -105.0158387 39.7571855 -105.0144598 39.7572068
-7334 2159 4795 0.11289998607803 0.11289998607803 -105.0144598 39.7572068 -105.0131391 39.7571989
-7335 4795 1226 0.113625921506999 0.113625921506999 -105.0131391 39.7571989 -105.01181 39.7571845
-7337 4401 4400 0.117696624021516 0.117696624021516 -104.9626217 39.7238487 -104.961317 39.723512
-7341 2320 4278 0.147648925220672 0.147648925220672 -104.9733543 39.7679348 -104.9745038 39.7669436
-7342 4278 6174 0.145039413918761 0.145039413918761 -104.9745038 39.7669436 -104.9757035 39.7660211
-7343 6174 633 0.147839808469135 0.147839808469135 -104.9757035 39.7660211 -104.9769309 39.7650843
-7344 633 5324 0.144274087604939 0.144274087604939 -104.9769309 39.7650843 -104.9781151 39.7641597
-7345 5324 2036 0.144878759704946 0.144878759704946 -104.9781151 39.7641597 -104.9793013 39.763229
-7346 2036 6175 0.146765627629388 0.146765627629388 -104.9793013 39.763229 -104.9805241 39.7623024
-7347 6175 5506 0.146988764364424 0.146988764364424 -104.9805241 39.7623024 -104.9817097 39.7613449
-7349 4458 6176 0.146285529633972 0.146285529633972 -104.9829353 39.7604242 -104.9841486 39.7594964
-7350 6176 6177 0.143815084290611 0.143815084290611 -104.9841486 39.7594964 -104.9853166 39.7585655
-7351 6177 6178 0.149072223288683 0.149072223288683 -104.9853166 39.7585655 -104.9865554 39.7576219
-7352 6178 6179 0.102502676747671 0.102502676747671 -104.9865554 39.7576219 -104.9873985 39.7569664
-7353 6179 6180 0.0433701075577025 0.0433701075577025 -104.9873985 39.7569664 -104.9877579 39.7566911
-7354 6180 6181 0.146972104646326 0.146972104646326 -104.9877579 39.7566911 -104.9889487 39.7557377
-7355 6181 6182 0.147344314502621 0.147344314502621 -104.9889487 39.7557377 -104.990176 39.7548073
-7356 6182 6183 0.145754933885852 0.145754933885852 -104.990176 39.7548073 -104.9913748 39.7538752
-7357 6183 6184 0.147948446924155 0.147948446924155 -104.9913748 39.7538752 -104.9925969 39.7529331
-7358 6184 6185 0.145005273136899 0.145005273136899 -104.9925969 39.7529331 -104.993798 39.7520123
-7359 6185 6186 0.141478743986661 0.141478743986661 -104.993798 39.7520123 -104.9949606 39.7511068
-7360 6186 5784 0.0051191432185562 0.0051191432185562 -104.9949606 39.7511068 -104.9949995 39.7510718
-7361 5784 6187 0.145606807182671 0.145606807182671 -104.9949995 39.7510718 -104.9961984 39.7501417
-7362 6187 6188 0.145777030768037 0.145777030768037 -104.9961984 39.7501417 -104.9973988 39.7492106
-7363 6188 6189 0.147177496711371 0.147177496711371 -104.9973988 39.7492106 -104.9986323 39.7482873
-7365 999 4221 0.0806091686632927 0.0806091686632927 -104.9876054 39.7809872 -104.9868954 39.7805099
-7366 4221 6190 0.102381971527348 0.102381971527348 -104.9868954 39.7805099 -104.9857782 39.7801773
-7367 6190 6193 0.0984965085324321 0.0984965085324321 -104.9857782 39.7801773 -104.9846257 39.7801641
-7368 6193 969 0.0952400858484175 0.0952400858484175 -104.9846257 39.7801641 -104.9835112 39.7801693
-7369 969 6194 0.0506536388127553 0.0506536388127553 -104.9835112 39.7801693 -104.982919 39.7801891
-7370 6194 5287 0.0506057613654141 0.0506057613654141 -104.982919 39.7801891 -104.9823268 39.7801891
-7371 5287 3152 0.0954510374534177 0.0954510374534177 -104.9823268 39.7801891 -104.981211 39.7801495
-7372 3152 4968 0.0960843478924756 0.0960843478924756 -104.981211 39.7801495 -104.9800866 39.7801495
-7373 4968 6195 0.0415654887010154 0.0415654887010154 -104.9800866 39.7801495 -104.9796002 39.7801517
-15921 9749 9750 0.0318908811678005 0.0318908811678005 -105.0271669 39.7276925 -105.0269255 39.7274739
-7401 6213 6214 0.0495719593537107 0.0495719593537107 -105.0372874 39.7257681 -105.037867 39.7257736
-7374 335 340 0.288826145863276 0.288826145863276 -104.9400719 39.7824771 -104.9379355 39.7804643
-7378 519 6197 0.0784497798176465 0.0784497798176465 -104.9416292 39.7807961 -104.9410596 39.7813494
-7379 6197 6198 0.0395399248279629 0.0395399248279629 -104.9410596 39.7813494 -104.9406408 39.7815006
-7380 6198 6199 0.019955626672929 0.019955626672929 -104.9406408 39.7815006 -104.9404705 39.7816234
-7382 6200 6201 0.0919482301684137 0.0919482301684137 -104.9634695 39.7803971 -104.9623939 39.7803745
-7383 6201 6202 0.111020276961071 0.111020276961071 -104.9623939 39.7803745 -104.961346 39.7809647
-7385 4485 6203 0.0919528384362936 0.0919528384362936 -105.0056478 39.7253802 -105.0067229 39.7253691
-7386 6203 4199 0.0670783480641165 0.0670783480641165 -105.0067229 39.7253691 -105.0075072 39.7253629
-7387 4199 6204 0.129739883939344 0.129739883939344 -105.0075072 39.7253629 -105.0090242 39.7253711
-7388 6204 6083 0.021522983414344 0.021522983414344 -105.0090242 39.7253711 -105.0092748 39.7253533
-7390 1820 6205 0.059780784078693 0.059780784078693 -105.0299828 39.7262896 -105.0306528 39.7261363
-7391 6205 6206 0.0520794903588436 0.0520794903588436 -105.0306528 39.7261363 -105.0312569 39.7260772
-7392 6206 6207 0.0535277276856965 0.0535277276856965 -105.0312569 39.7260772 -105.0318828 39.7260783
-7393 6207 6208 0.052616435606338 0.052616435606338 -105.0318828 39.7260783 -105.0324968 39.7261084
-7395 6209 6210 0.054197774205049 0.054197774205049 -105.0331036 39.7261385 -105.0337279 39.7260547
-7396 6210 600 0.122572832169608 0.122572832169608 -105.0337279 39.7260547 -105.0351121 39.7257688
-7397 600 6211 0.0472521628905724 0.0472521628905724 -105.0351121 39.7257688 -105.0356646 39.7257653
-7398 6211 5708 0.0430357389006543 0.0430357389006543 -105.0356646 39.7257653 -105.0361678 39.7257622
-7399 5708 6212 0.0495085394583916 0.0495085394583916 -105.0361678 39.7257622 -105.0367467 39.7257609
-7400 6212 6213 0.0462483397604104 0.0462483397604104 -105.0367467 39.7257609 -105.0372874 39.7257681
-7402 6214 6215 0.0428153220943109 0.0428153220943109 -105.037867 39.7257736 -105.0383676 39.7257784
-7403 6215 6216 0.0471000262746752 0.0471000262746752 -105.0383676 39.7257784 -105.0389183 39.7257835
-7404 6216 6217 0.0473822229177533 0.0473822229177533 -105.0389183 39.7257835 -105.0394723 39.7257886
-7405 6217 1100 0.091970261814681 0.091970261814681 -105.0394723 39.7257886 -105.0405477 39.7257916
-7406 1100 6218 0.0449415553049736 0.0449415553049736 -105.0405477 39.7257916 -105.0410732 39.7257908
-7407 6218 6219 0.0480654852744355 0.0480654852744355 -105.0410732 39.7257908 -105.0416352 39.7257952
-7408 6219 6221 0.0454218674668918 0.0454218674668918 -105.0416352 39.7257952 -105.0421663 39.7257919
-7409 6221 3858 0.0463369187822574 0.0463369187822574 -105.0421663 39.7257919 -105.0427081 39.7257886
-7410 3858 6222 0.0463493111972249 0.0463493111972249 -105.0427081 39.7257886 -105.04325 39.7257949
-7411 6222 5594 0.0512843332286284 0.0512843332286284 -105.04325 39.7257949 -105.0438496 39.7258018
-7412 5594 6223 0.0568069326737853 0.0568069326737853 -105.0438496 39.7258018 -105.0445138 39.725796
-7413 6223 6224 0.0525700432289869 0.0525700432289869 -105.0445138 39.725796 -105.0451285 39.7257952
-7414 6224 6225 0.0976339163821139 0.0976339163821139 -105.0451285 39.7257952 -105.0462701 39.7258018
-7439 6242 6243 0.0662881511283164 0.0662881511283164 -104.9882366 39.7256418 -104.9874615 39.7256397
-7415 6225 6226 0.598121759063317 0.598121759063317 -105.0462701 39.7258018 -105.0531438 39.7267947
-7416 3855 6227 0.0533569775705536 0.0533569775705536 -105.0427146 39.72552 -105.0433385 39.72552
-7417 6227 5550 0.054545728952838 0.054545728952838 -105.0433385 39.72552 -105.0439763 39.72552
-7419 6228 6229 0.0491582246006862 0.0491582246006862 -105.0445535 39.7255217 -105.0451283 39.7255234
-7420 6229 6230 0.632851875022697 0.632851875022697 -105.0451283 39.7255234 -105.0525271 39.7254255
-7421 4649 6231 0.0998318489902405 0.0998318489902405 -105.0186468 39.7257296 -105.0174795 39.7257362
-7423 3956 6232 0.132968901609209 0.132968901609209 -105.0001441 39.7257079 -104.9985893 39.7257061
-7424 6232 6233 0.0436348818689085 0.0436348818689085 -104.9985893 39.7257061 -104.9980791 39.7257025
-7425 6233 6234 0.0454822742996404 0.0454822742996404 -104.9980791 39.7257025 -104.9975473 39.7256987
-7426 6234 6235 0.049945575036802 0.049945575036802 -104.9975473 39.7256987 -104.9969633 39.7256958
-7427 6235 6236 0.0503304157761669 0.0503304157761669 -104.9969633 39.7256958 -104.9963748 39.7256929
-7428 6236 6237 0.0508263629674458 0.0508263629674458 -104.9963748 39.7256929 -104.9957805 39.7256901
-7429 6237 4952 0.0505868421691217 0.0505868421691217 -104.9957805 39.7256901 -104.995189 39.7256874
-7430 4952 4681 0.10191805721873 0.10191805721873 -104.995189 39.7256874 -104.9939973 39.7256815
-7431 4681 6238 0.099594470461032 0.099594470461032 -104.9939973 39.7256815 -104.9928328 39.7256728
-7432 6238 6239 0.057251122773958 0.057251122773958 -104.9928328 39.7256728 -104.9921634 39.7256675
-7433 6239 6240 0.108863184827896 0.108863184827896 -104.9921634 39.7256675 -104.9908905 39.7256604
-7434 6240 5092 0.0381385955203522 0.0381385955203522 -104.9908905 39.7256604 -104.9904446 39.7256551
-7435 5092 5227 0.108194428858344 0.108194428858344 -104.9904446 39.7256551 -104.9891795 39.7256506
-7437 5219 6241 0.0418231546106276 0.0418231546106276 -104.9888684 39.7256475 -104.9883794 39.7256429
-7438 6241 6242 0.0122130870650471 0.0122130870650471 -104.9883794 39.7256429 -104.9882366 39.7256418
-7442 1601 1657 0.147607723017958 0.147607723017958 -105.013927 39.6982179 -105.0156522 39.6982047
-7444 5765 6244 0.238854062350574 0.238854062350574 -105.0065723 39.6981963 -105.0093641 39.6981976
-7445 6244 5899 0.278312459096762 0.278312459096762 -105.0093641 39.6981976 -105.0126138 39.6983104
-7446 5899 1600 0.0794217837629518 0.0794217837629518 -105.0126138 39.6983104 -105.0133862 39.6987066
-7448 4405 4957 0.275380198668453 0.275380198668453 -105.0297627 39.6985415 -105.0329814 39.6985547
-7450 4315 4502 0.0962009886521744 0.0962009886521744 -105.0344405 39.6985481 -105.0355649 39.6985415
-7451 4502 6245 0.0998685092157526 0.0998685092157526 -105.0355649 39.6985415 -105.0367322 39.6985415
-7452 6245 5078 0.0969948238046964 0.0969948238046964 -105.0367322 39.6985415 -105.0378651 39.6985745
-7453 5078 6246 0.102086344844989 0.102086344844989 -105.0378651 39.6985745 -105.0390582 39.6985613
-7454 6246 6247 0.102069890156656 0.102069890156656 -105.0390582 39.6985613 -105.0402512 39.6985547
-7455 6247 6248 0.0998684901150858 0.0998684901150858 -105.0402512 39.6985547 -105.0414185 39.6985547
-7456 6248 6249 0.099157147424293 0.099157147424293 -105.0414185 39.6985547 -105.0425772 39.6985745
-7457 6249 6250 0.0998927126402804 0.0998927126402804 -105.0425772 39.6985745 -105.0437445 39.6985943
-7459 4376 2857 0.174778525570848 0.174778525570848 -105.0014998 39.6980642 -105.0035425 39.698084
-7461 1656 6251 0.113089099397014 0.113089099397014 -105.0156865 39.6985745 -105.0170083 39.6985811
-7462 6251 4210 0.0895877408394824 0.0895877408394824 -105.0170083 39.6985811 -105.0180554 39.6985745
-7463 4210 6252 0.0984078699260149 0.0984078699260149 -105.0180554 39.6985745 -105.0192055 39.6985613
-7464 6252 202 0.0984164433029134 0.0984164433029134 -105.0192055 39.6985613 -105.0203557 39.6985481
-7465 202 2930 0.0999116533304243 0.0999116533304243 -105.0203557 39.6985481 -105.021523 39.6985217
-7467 5311 1467 0.0969591422712861 0.0969591422712861 -105.0227074 39.6985877 -105.0238404 39.6986076
-7468 1467 5446 0.104331765041419 0.104331765041419 -105.0238404 39.6986076 -105.0250598 39.6985976
-7470 6253 6254 0.108544830855141 0.108544830855141 -104.9926817 39.6984968 -104.9939504 39.6984927
-7471 6254 6255 0.0440614876081187 0.0440614876081187 -104.9939504 39.6984927 -104.9944654 39.6984907
-7472 6255 6256 0.10258169252724 0.10258169252724 -104.9944654 39.6984907 -104.9956644 39.6984948
-7473 6256 6257 0.0426791560290334 0.0426791560290334 -104.9956644 39.6984948 -104.9961632 39.6984894
-7474 6257 1181 0.0541704333597994 0.0541704333597994 -104.9961632 39.6984894 -104.9967963 39.6984825
-7476 6258 5341 0.664349456749629 0.664349456749629 -105.0437445 39.6975575 -105.0514806 39.6980732
-7480 1556 736 0.1281317837441 0.1281317837441 -104.9613425 39.77767 -104.9613344 39.7765177
-7482 6260 6261 0.0586102720745076 0.0586102720745076 -104.9613314 39.7250799 -104.9613184 39.7256069
-7484 1188 6262 0.0214828666370953 0.0214828666370953 -104.9613359 39.7271192 -104.9613357 39.7273124
-7485 6262 3789 0.199388923153335 0.199388923153335 -104.9613357 39.7273124 -104.9613527 39.7291055
-7486 3789 5915 0.154872293830304 0.154872293830304 -104.9613527 39.7291055 -104.9613527 39.7304983
-7487 5915 6263 0.0506492890867135 0.0506492890867135 -104.9613527 39.7304983 -104.9613527 39.7309538
-7488 6264 2248 0.0665325760000431 0.0665325760000431 -104.9610192 39.7328682 -104.9610284 39.7334665
-7489 2248 4881 0.176090081583566 0.176090081583566 -104.9610284 39.7334665 -104.9610377 39.7350501
-7490 4881 6265 0.19613430259676 0.19613430259676 -104.9610377 39.7350501 -104.9610051 39.7368138
-7491 6265 5479 0.175348484443179 0.175348484443179 -104.9610051 39.7368138 -104.9610209 39.7383907
-7492 5479 6266 0.176845636908204 0.176845636908204 -104.9610209 39.7383907 -104.9610132 39.7399811
-7493 6266 6267 0.178089834743743 0.178089834743743 -104.9610132 39.7399811 -104.9610118 39.7415827
-7494 6267 676 0.00240181041514711 0.00240181041514711 -104.9610118 39.7415827 -104.9610118 39.7416043
-7495 676 6268 0.00459391026290071 0.00459391026290071 -104.9610118 39.7416043 -104.9610132 39.7416456
-7496 6268 6269 0.174858851790528 0.174858851790528 -104.9610132 39.7416456 -104.960998 39.7432181
-7497 6269 4598 0.173764465207871 0.173764465207871 -104.960998 39.7432181 -104.9610007 39.7447808
-7500 6270 6271 0.133612621428605 0.133612621428605 -104.960998 39.748227 -104.9609926 39.7494286
-7501 6271 6272 0.00412533177852682 0.00412533177852682 -104.9609926 39.7494286 -104.9609926 39.7494657
-7502 6272 6273 0.00367565176707242 0.00367565176707242 -104.9609926 39.7494657 -104.9609901 39.7494987
-7503 6273 6274 0.134146296121319 0.134146296121319 -104.9609901 39.7494987 -104.9609953 39.7507051
-20534 10849 10832 0.00532626442143788 0.00532626442143788 -105.0250742 39.7612881 -105.025074 39.7612402
-7504 6274 6275 0.138338671785307 0.138338671785307 -104.9609953 39.7507051 -104.961025 39.751949
-7505 6275 829 0.140763564032817 0.140763564032817 -104.961025 39.751949 -104.9610026 39.7532148
-7506 829 3569 0.13985476308825 0.13985476308825 -104.9610026 39.7532148 -104.9609889 39.7544725
-7507 3569 5638 0.139885286720423 0.139885286720423 -104.9609889 39.7544725 -104.9609978 39.7557305
-7508 5638 4342 0.139394668795268 0.139394668795268 -104.9609978 39.7557305 -104.9609926 39.7569841
-7509 4342 6276 0.136887040523289 0.136887040523289 -104.9609926 39.7569841 -104.9609775 39.7582151
-7510 6276 3042 0.135179672321338 0.135179672321338 -104.9609775 39.7582151 -104.9609775 39.7594308
-7511 3042 6277 0.141328751765533 0.141328751765533 -104.9609775 39.7594308 -104.9609775 39.7607018
-7512 6277 6278 0.0048613905607292 0.0048613905607292 -104.9609775 39.7607018 -104.9609792 39.7607455
-7513 6278 6279 0.138461653724603 0.138461653724603 -104.9609792 39.7607455 -104.9609873 39.7619907
-7514 6279 1163 0.137550674895164 0.137550674895164 -104.9609873 39.7619907 -104.9609775 39.7632277
-7515 1163 883 0.14127337175944 0.14127337175944 -104.9609775 39.7632277 -104.9609746 39.7644982
-7516 883 4468 0.137815416161984 0.137815416161984 -104.9609746 39.7644982 -104.9609786 39.7657376
-7517 4468 2790 0.135224582480649 0.135224582480649 -104.9609786 39.7657376 -104.9609746 39.7669537
-7518 2790 5258 0.130698751805084 0.130698751805084 -104.9609746 39.7669537 -104.9609775 39.7681291
-7519 5258 6280 0.127788689349157 0.127788689349157 -104.9609775 39.7681291 -104.9609549 39.7692782
-7521 6281 4149 0.293690516229792 0.293690516229792 -104.9607137 39.718346 -104.9607278 39.7209872
-7522 4149 4399 0.168839008279682 0.168839008279682 -104.9607278 39.7209872 -104.9607224 39.7225056
-7524 6202 6282 0.107543949920042 0.107543949920042 -104.961346 39.7809647 -104.9613313 39.7819318
-7525 6282 6283 0.203165579542053 0.203165579542053 -104.9613313 39.7819318 -104.9613399 39.7837589
-7526 6283 2881 0.158375292404745 0.158375292404745 -104.9613399 39.7837589 -104.961384 39.7851828
-7528 6284 6285 0.199406415880408 0.199406415880408 -105.0228039 39.7766253 -105.0228094 39.7784186
-7530 2831 1439 0.198717844078091 0.198717844078091 -105.0227922 39.780226 -105.0228009 39.7820131
-7531 1439 6286 0.198972452931936 0.198972452931936 -105.0228009 39.7820131 -105.0227972 39.7838025
-7533 4103 6046 0.129598634612641 0.129598634612641 -105.0227805 39.7844643 -105.0227863 39.7856298
-7534 6046 6287 0.200664408696912 0.200664408696912 -105.0227863 39.7856298 -105.0227969 39.7874344
-7535 6287 6288 0.407763176533057 0.407763176533057 -105.0227969 39.7874344 -105.0227915 39.7911015
-7536 3356 6289 0.17574244534878 0.17574244534878 -104.9339641 39.7162382 -104.9339422 39.7146578
-7537 6289 3103 0.174022554549137 0.174022554549137 -104.9339422 39.7146578 -104.9339765 39.713093
-7538 3103 6290 0.195576263268451 0.195576263268451 -104.9339765 39.713093 -104.9339457 39.7113343
-7539 6290 6291 0.0184164625226683 0.0184164625226683 -104.9339457 39.7113343 -104.9339286 39.7111692
-7543 5848 6293 0.0908806324614032 0.0908806324614032 -104.9339926 39.6911379 -104.9339516 39.6903212
-7544 6293 6294 0.111642131539399 0.111642131539399 -104.9339516 39.6903212 -104.9339602 39.6893172
-7546 6295 6296 0.199763041133193 0.199763041133193 -104.9337199 39.6893172 -104.9337113 39.6875207
-7547 6297 4228 0.205146518268072 0.205146518268072 -104.933893 39.698442 -104.933969 39.696598
-7548 4228 6298 0.220075142380819 0.220075142380819 -104.933969 39.696598 -104.934287 39.694634
-7549 6299 6300 0.269225278413762 0.269225278413762 -105.0158374 39.7910751 -105.0158404 39.7886539
-7550 6300 6301 0.135380699238895 0.135380699238895 -105.0158404 39.7886539 -105.0158347 39.7874364
-7551 6301 6037 0.201685647547083 0.201685647547083 -105.0158347 39.7874364 -105.0158387 39.7856226
-7552 6037 4092 0.180825512734332 0.180825512734332 -105.0158387 39.7856226 -105.0158347 39.7839964
-8788 5909 7005 0.202308283638507 0.202308283638507 -104.9316976 39.7492496 -104.931694 39.751069
-7555 1356 1434 0.0619921139139986 0.0619921139139986 -105.015824 39.7825504 -105.015828 39.7819929
-7556 1434 1416 0.0702533335118034 0.0702533335118034 -105.015828 39.7819929 -105.0158307 39.7813611
-7557 1416 2824 0.130534926760632 0.130534926760632 -105.0158307 39.7813611 -105.0158414 39.7801872
-7558 2824 2485 0.13649413612348 0.13649413612348 -105.0158414 39.7801872 -105.0158508 39.7789597
-7559 2485 6304 0.132600390611243 0.132600390611243 -105.0158508 39.7789597 -105.0158468 39.7777672
-7560 6304 6305 0.13375224687231 0.13375224687231 -105.0158468 39.7777672 -105.0158628 39.7765644
-7562 6293 6306 0.193932773048905 0.193932773048905 -104.9339516 39.6903212 -104.9316857 39.6902815
-7564 6307 4033 0.1068931298406 0.1068931298406 -105.0318135 39.6967219 -105.0318398 39.697683
-7566 6308 1505 0.201208565153675 0.201208565153675 -105.0320716 39.6967254 -105.0320802 39.6949159
-7567 1505 178 0.201696340498873 0.201696340498873 -105.0320802 39.6949159 -105.0320556 39.6931021
-7568 178 1706 0.202420430939935 0.202420430939935 -105.0320556 39.6931021 -105.0320475 39.6912817
-7569 1706 6310 0.205872571954156 0.205872571954156 -105.0320475 39.6912817 -105.0320287 39.6894303
-7571 1393 5861 0.176199480761084 0.176199480761084 -105.0324691 39.7165619 -105.0324691 39.7149773
-7573 1309 5328 0.243304763536767 0.243304763536767 -105.0324406 39.7133724 -105.0327094 39.7111941
-17643 524 9824 0.0585508481458027 0.0585508481458027 -104.9493835 39.780399 -104.9497096 39.7808621
-7575 6311 6312 0.480549704702292 0.480549704702292 -105.0324954 39.6894303 -105.0325311 39.6851087
-7576 4368 1449 0.194542255499986 0.194542255499986 -105.0015178 39.7057816 -105.0037914 39.7057442
-7577 1449 6313 0.208609985343506 0.208609985343506 -105.0037914 39.7057442 -105.006229 39.705797
-7578 6313 6314 0.103555170544593 0.103555170544593 -105.006229 39.705797 -105.0074307 39.7056848
-7579 6314 6315 0.0981349608621905 0.0981349608621905 -105.0074307 39.7056848 -105.0085636 39.7055461
-7581 3820 5895 0.101734690953305 0.101734690953305 -105.009791 39.7062461 -105.0109801 39.7062318
-7583 6316 6317 0.456743307850688 0.456743307850688 -105.0432381 39.7057328 -105.0485768 39.7057857
-7584 5896 1591 0.201196573887444 0.201196573887444 -105.0109828 39.7056561 -105.0133347 39.7056536
-7585 1591 1642 0.201704599280981 0.201704599280981 -105.0133347 39.7056536 -105.0156924 39.7056338
-7587 4303 6319 0.0895876341901528 0.0895876341901528 -105.0350499 39.705614 -105.036097 39.7056008
-7589 6320 5074 0.0881249654942257 0.0881249654942257 -105.0371184 39.7056206 -105.0381484 39.7056338
-7590 5074 6321 0.0822356991688935 0.0822356991688935 -105.0381484 39.7056338 -105.0391097 39.7056338
-7592 3098 3208 0.20139821402018 0.20139821402018 -104.9663374 39.7129121 -104.9663009 39.7111011
-7593 3208 6120 0.199810792778826 0.199810792778826 -104.9663009 39.7111011 -104.9663168 39.7093042
-7594 6120 1919 0.202180610053987 0.202180610053987 -104.9663168 39.7093042 -104.966335 39.707486
-7595 1919 6322 0.202387552164505 0.202387552164505 -104.966335 39.707486 -104.9663254 39.7056659
-7596 6322 3262 0.201452153939087 0.201452153939087 -104.9663254 39.7056659 -104.9663213 39.7038542
-7597 3262 6323 0.198460905873661 0.198460905873661 -104.9663213 39.7038542 -104.9663246 39.7020694
-7599 6325 6326 0.0490995020648654 0.0490995020648654 -104.9717416 39.7183547 -104.9722942 39.7184743
-7600 6326 6327 0.055368676730927 0.055368676730927 -104.9722942 39.7184743 -104.9729137 39.7186188
-7601 6327 6328 0.0309445801475025 0.0309445801475025 -104.9729137 39.7186188 -104.9732624 39.718693
-7602 6328 992 0.0695937269558986 0.0695937269558986 -104.9732624 39.718693 -104.974036 39.718887
-7603 992 5033 0.0562459052664965 0.0562459052664965 -104.974036 39.718887 -104.9746644 39.7190361
-8836 2977 657 0.0520837064464313 0.0520837064464313 -105.032261 39.7585166 -105.0322612 39.758985
-7604 5033 6329 0.0516777216994855 0.0516777216994855 -104.9746644 39.7190361 -104.9752418 39.719173
-7605 6329 5046 0.105372499364086 0.105372499364086 -104.9752418 39.719173 -104.9763833 39.7195295
-7606 5046 4160 0.118696493530277 0.118696493530277 -104.9763833 39.7195295 -104.977542 39.720117
-7607 4160 6330 0.136699581092316 0.136699581092316 -104.977542 39.720117 -104.9787889 39.7208861
-7608 6330 4974 0.128955324206818 0.128955324206818 -104.9787889 39.7208861 -104.9799651 39.7216117
-7609 4974 4766 0.151821196012923 0.151821196012923 -104.9799651 39.7216117 -104.9813252 39.7224891
-7610 4766 6331 0.118237006648706 0.118237006648706 -104.9813252 39.7224891 -104.9824024 39.7231556
-7611 6331 6332 0.150079343538278 0.150079343538278 -104.9824024 39.7231556 -104.9836195 39.7241279
-7612 6332 6333 0.165501031184984 0.165501031184984 -104.9836195 39.7241279 -104.9848045 39.7253046
-7613 6333 6334 0.0461738747625761 0.0461738747625761 -104.9848045 39.7253046 -104.9851351 39.7256329
-7614 6334 6335 0.133457305058149 0.133457305058149 -104.9851351 39.7256329 -104.9861535 39.7265423
-7615 6335 1212 0.134967826650912 0.134967826650912 -104.9861535 39.7265423 -104.9874175 39.7272691
-7617 2900 6336 0.106167707809224 0.106167707809224 -104.9733518 39.7582331 -104.9721098 39.7582313
-7618 6336 6337 0.104928236912142 0.104928236912142 -104.9721098 39.7582313 -104.9708823 39.7582295
-7619 6337 4735 0.104475212628964 0.104475212628964 -104.9708823 39.7582295 -104.9696601 39.7582276
-7620 4735 6338 0.102406513567036 0.102406513567036 -104.9696601 39.7582276 -104.9684621 39.758226
-7621 6338 6339 0.111236760215522 0.111236760215522 -104.9684621 39.758226 -104.9671608 39.7582241
-7622 6339 5400 0.102611714232847 0.102611714232847 -104.9671608 39.7582241 -104.9659604 39.7582223
-7623 5400 6340 0.108937307551118 0.108937307551118 -104.9659604 39.7582223 -104.964686 39.7582205
-7624 6340 3903 0.106714805368354 0.106714805368354 -104.964686 39.7582205 -104.9634376 39.7582187
-7625 3903 1040 0.101833845648583 0.101833845648583 -104.9634376 39.7582187 -104.9622463 39.7582169
-7626 1040 6276 0.108458622663871 0.108458622663871 -104.9622463 39.7582169 -104.9609775 39.7582151
-7627 6276 6341 0.106851583282394 0.106851583282394 -104.9609775 39.7582151 -104.9597275 39.7582133
-7628 6341 5005 0.0997823108241272 0.0997823108241272 -104.9597275 39.7582133 -104.9585602 39.7582115
-7629 5005 3326 0.104184561842385 0.104184561842385 -104.9585602 39.7582115 -104.9573414 39.7582098
-7630 3326 6343 0.103107525114489 0.103107525114489 -104.9573414 39.7582098 -104.9561352 39.758208
-7631 6343 6344 0.102577524667858 0.102577524667858 -104.9561352 39.758208 -104.9549352 39.7582063
-7632 6344 2077 0.109057202290834 0.109057202290834 -104.9549352 39.7582063 -104.9536594 39.7582089
-7633 2077 2674 0.105238001385814 0.105238001385814 -104.9536594 39.7582089 -104.9524283 39.7582028
-7634 2674 4124 0.102908082653388 0.102908082653388 -104.9524283 39.7582028 -104.9512246 39.7581873
-7635 4124 6345 0.111237019236159 0.111237019236159 -104.9512246 39.7581873 -104.9499239 39.7582178
-7636 6345 6346 0.0932071004983952 0.0932071004983952 -104.9499239 39.7582178 -104.9488336 39.7582075
-7637 6346 6347 0.101110239024215 0.101110239024215 -104.9488336 39.7582075 -104.9476508 39.7582147
-7638 6347 3472 0.0998858354760893 0.0998858354760893 -104.9476508 39.7582147 -104.9464826 39.7581939
-7639 3472 6024 0.100184077827119 0.100184077827119 -104.9464826 39.7581939 -104.9453106 39.7581922
-7641 3875 6348 0.0931831682605449 0.0931831682605449 -104.944148 39.7581905 -104.9430579 39.7581889
-7642 6348 851 0.00806942804368034 0.00806942804368034 -104.9430579 39.7581889 -104.9429635 39.7581888
-7644 6349 6350 0.122741608307903 0.122741608307903 -105.0059317 39.7547022 -105.0044986 39.7547701
-7646 6351 6352 0.0367221312616467 0.0367221312616467 -104.9499571 39.7092328 -104.9495279 39.7092395
-7648 6353 6352 0.031587926861642 0.031587926861642 -104.9495193 39.7089555 -104.9495279 39.7092395
-7649 6352 6353 0.031587926861642 0.031587926861642 -104.9495279 39.7092395 -104.9495193 39.7089555
-7651 4284 5406 0.209059343043956 0.209059343043956 -104.9683885 39.7728911 -104.9659423 39.7728915
-7652 5406 3139 0.106127827196287 0.106127827196287 -104.9659423 39.7728915 -104.9647005 39.7728917
-7653 3139 3924 0.0976499059560775 0.0976499059560775 -104.9647005 39.7728917 -104.9635579 39.7728918
-7654 3924 5060 0.353918950652385 0.353918950652385 -104.9635579 39.7728918 -104.9594167 39.7728924
-7655 5060 5012 0.0994873589954365 0.0994873589954365 -104.9594167 39.7728924 -104.9582526 39.7728926
-7658 6356 2071 0.094898000530225 0.094898000530225 -104.9541524 39.7728932 -104.953042 39.7728934
-7659 2071 2669 0.0951372963506741 0.0951372963506741 -104.953042 39.7728934 -104.9519288 39.7728936
-7660 2669 4139 0.0930605458860926 0.0930605458860926 -104.9519288 39.7728936 -104.9508399 39.7728937
-7661 4139 6357 0.0866508308410144 0.0866508308410144 -104.9508399 39.7728937 -104.949826 39.7728939
-7662 6357 6358 0.100153967379628 0.100153967379628 -104.949826 39.7728939 -104.9486541 39.7728941
-7663 6358 6359 0.094521960675225 0.094521960675225 -104.9486541 39.7728941 -104.9475481 39.7728942
-7664 6359 834 0.394334341459341 0.394334341459341 -104.9475481 39.7728942 -104.942934 39.7728949
-7665 834 871 0.00699086459728944 0.00699086459728944 -104.942934 39.7728949 -104.9428522 39.7728949
-7666 871 6360 0.0985643561678323 0.0985643561678323 -104.9428522 39.7728949 -104.9416989 39.7728951
-7667 6360 6361 0.0919153430634884 0.0919153430634884 -104.9416989 39.7728951 -104.9406234 39.7728953
-7668 6361 6362 0.0142210252134503 0.0142210252134503 -104.9406234 39.7728953 -104.940457 39.7728953
-7670 6363 6250 0.198277134301598 0.198277134301598 -105.0437617 39.7003774 -105.0437445 39.6985943
-7671 6250 6258 0.115286899945233 0.115286899945233 -105.0437445 39.6985943 -105.0437445 39.6975575
-7672 6258 6364 0.0878557774552784 0.0878557774552784 -105.0437445 39.6975575 -105.0437011 39.6967681
-7673 6364 1498 0.200867314778576 0.200867314778576 -105.0437011 39.6967681 -105.0437531 39.6949621
-7675 187 5877 0.162832287710312 0.162832287710312 -105.0437531 39.6931327 -105.0442509 39.6917193
-7676 5877 1716 0.0499429374304698 0.0499429374304698 -105.0442509 39.6917193 -105.0442424 39.6912702
-7678 6365 1582 0.142378532382676 0.142378532382676 -105.0442509 39.6894935 -105.0442642 39.6882131
-7679 1582 6366 1.28806099537571 1.28806099537571 -105.0442642 39.6882131 -105.0417039 39.6767981
-7680 6367 2271 0.093525872105216 0.093525872105216 -104.9316211 39.7280567 -104.9305276 39.7280436
-7681 2271 6368 0.0953526699152847 0.0953526699152847 -104.9305276 39.7280436 -104.9294128 39.7280596
-7682 6368 6369 0.0956103425754401 0.0956103425754401 -104.9294128 39.7280596 -104.9282948 39.7280565
-7683 6369 2130 0.0946975078442247 0.0946975078442247 -104.9282948 39.7280565 -104.9271876 39.7280433
-7684 2130 5981 0.0976635368625979 0.0976635368625979 -104.9271876 39.7280433 -104.9260461 39.7280697
-7685 5981 6370 0.0910203235542429 0.0910203235542429 -104.9260461 39.7280697 -104.9249818 39.7280631
-7686 6370 2335 0.0939706612325521 0.0939706612325521 -104.9249818 39.7280631 -104.9238831 39.7280763
-7687 2335 6371 1.7470149025737 1.7470149025737 -104.9238831 39.7280763 -104.9034546 39.7280769
-7688 96 3500 0.202527213410831 0.202527213410831 -104.9453991 39.7002071 -104.9453782 39.6983858
-7689 3500 6372 0.200485391157046 0.200485391157046 -104.9453782 39.6983858 -104.9453525 39.6965829
-7690 6372 6373 0.200744473183588 0.200744473183588 -104.9453525 39.6965829 -104.9454196 39.6947783
-7691 6373 6374 0.203425216522523 0.203425216522523 -104.9454196 39.6947783 -104.9453733 39.6929492
-7692 6374 261 0.363896677888795 0.363896677888795 -104.9453733 39.6929492 -104.9453693 39.6896766
-7693 261 6375 0.041137585532266 0.041137585532266 -104.9453693 39.6896766 -104.9453607 39.6893067
-7694 6375 6376 0.527231991542063 0.527231991542063 -104.9453607 39.6893067 -104.9453741 39.6845652
-8934 2865 7087 0.201874708309178 0.201874708309178 -104.9846471 39.7855801 -104.9846429 39.7873956
-7696 6377 3069 0.174367166483664 0.174367166483664 -104.9449725 39.7146388 -104.9449618 39.7130707
-7697 3069 6378 0.175688037406208 0.175688037406208 -104.9449618 39.7130707 -104.9449634 39.7114907
-7698 6378 6379 0.195293035214527 0.195293035214527 -104.9449634 39.7114907 -104.9449548 39.7097344
-7700 5015 6380 0.0917013339896307 0.0917013339896307 -104.9582016 39.7805126 -104.9592745 39.7805291
-7702 380 6381 0.0601450697094338 0.0601450697094338 -105.03278 39.74748 -105.0334738 39.7475695
-7703 6381 3398 0.0950953426294514 0.0950953426294514 -105.0334738 39.7475695 -105.0345861 39.7475697
-7704 3398 6384 0.0512135480319707 0.0512135480319707 -105.0345861 39.7475697 -105.0351851 39.7475652
-7705 6384 6385 0.0512477474787707 0.0512477474787707 -105.0351851 39.7475652 -105.0357845 39.7475607
-7706 6385 6386 0.0508150751685789 0.0508150751685789 -105.0357845 39.7475607 -105.0363788 39.7475676
-7707 6386 6387 0.0467877396177586 0.0467877396177586 -105.0363788 39.7475676 -105.036926 39.7475739
-7708 6387 6388 0.102738526459791 0.102738526459791 -105.036926 39.7475739 -105.0381277 39.7475739
-7709 6388 6389 0.0502022657375815 0.0502022657375815 -105.0381277 39.7475739 -105.0387149 39.7475739
-7710 6389 6390 0.0495952560526731 0.0495952560526731 -105.0387149 39.7475739 -105.039295 39.7475739
-7711 6390 6391 0.0506266673865361 0.0506266673865361 -105.039295 39.7475739 -105.0398871 39.7475806
-7712 6391 1111 0.0484464674507555 0.0484464674507555 -105.0398871 39.7475806 -105.0404537 39.7475871
-7714 4654 1272 0.131229439030854 0.131229439030854 -105.0189639 39.7475939 -105.0204988 39.7476034
-7715 1272 6392 0.0233060632854453 0.0233060632854453 -105.0204988 39.7476034 -105.0207714 39.7476023
-7716 6392 4560 0.111717062627726 0.111717062627726 -105.0207714 39.7476023 -105.0220781 39.7475968
-7717 4560 2711 0.115276038939543 0.115276038939543 -105.0220781 39.7475968 -105.0233999 39.7473921
-7718 2711 6393 0.157827401374253 0.157827401374253 -105.0233999 39.7473921 -105.0252309 39.747573
-7720 6394 6142 0.134287937529063 0.134287937529063 -105.0268144 39.7475701 -105.0283851 39.7475767
-7721 6142 4016 0.132933704994743 0.132933704994743 -105.0283851 39.7475767 -105.0299399 39.7475891
-7722 4016 6395 0.00906250528140326 0.00906250528140326 -105.0299399 39.7475891 -105.0300459 39.7475887
-7723 6395 382 0.124591902443133 0.124591902443133 -105.0300459 39.7475887 -105.0315032 39.7475841
-7725 5850 6396 0.00523272011597534 0.00523272011597534 -105.0022921 39.7147654 -105.0022548 39.7147281
-7726 6396 501 0.199511293598505 0.199511293598505 -105.0022548 39.7147281 -105.0014928 39.7130323
-7727 501 6397 0.217152349025227 0.217152349025227 -105.0014928 39.7130323 -105.0006291 39.7111959
-7728 6397 6398 0.36755359975324 0.36755359975324 -105.0006291 39.7111959 -104.9991941 39.7080802
-7730 3613 6399 0.21266860576331 0.21266860576331 -104.9293234 39.7702164 -104.9308332 39.7717367
-7732 6401 6402 0.038551456513769 0.038551456513769 -104.9719701 39.7702406 -104.9722075 39.7705354
-7733 6402 6403 0.01171446339475 0.01171446339475 -104.9722075 39.7705354 -104.9723255 39.770589
-7735 2909 6404 0.0724414530545414 0.0724414530545414 -104.9733496 39.764224 -104.973944 39.7646884
-7736 6404 6405 0.105070094163828 0.105070094163828 -104.973944 39.7646884 -104.9748213 39.7653503
-7737 6405 6174 0.106062498124406 0.106062498124406 -104.9748213 39.7653503 -104.9757035 39.7660211
-7738 6174 3312 0.104669820520163 0.104669820520163 -104.9757035 39.7660211 -104.9765745 39.7666828
-7739 3312 6406 0.105292804834109 0.105292804834109 -104.9765745 39.7666828 -104.9774556 39.7673446
-7741 5545 2415 0.0733757601851338 0.0733757601851338 -105.0422627 39.7521069 -105.0422764 39.7527667
-7743 5056 4299 0.0731858562049149 0.0731858562049149 -105.0422607 39.7532726 -105.0422855 39.7539305
-7745 5093 6407 0.0155546054802435 0.0155546054802435 -104.9901518 39.7836836 -104.990332 39.7836638
-7747 3914 4762 0.124500033165113 0.124500033165113 -104.9633401 39.7209669 -104.9640208 39.7219566
-7750 6409 5773 0.332202382721644 0.332202382721644 -104.9640263 39.7876087 -104.96707 39.7894676
-7752 6410 6411 0.0178672618817003 0.0178672618817003 -104.9686008 39.7903058 -104.9688032 39.7903462
-7754 6409 6412 0.0520862922994697 0.0520862922994697 -104.9640263 39.7876087 -104.963535 39.787886
-7756 6231 6413 0.198055274582402 0.198055274582402 -105.0174795 39.7257362 -105.0175186 39.7275171
-7758 6414 6415 0.189433856898839 0.189433856898839 -105.0169053 39.7202585 -105.0168624 39.7185552
-7759 6416 4038 0.0834324728266378 0.0834324728266378 -105.0172314 39.7170829 -105.0175833 39.7177827
-7761 6417 4521 0.134579982196382 0.134579982196382 -105.0174065 39.7620125 -105.0174118 39.7632228
-7762 4521 5240 0.13502405245006 0.13502405245006 -105.0174118 39.7632228 -105.0174132 39.7644371
-7763 5240 6418 0.13412336654487 0.13412336654487 -105.0174132 39.7644371 -105.0174145 39.7656433
-7764 6418 6419 0.133878890575632 0.133878890575632 -105.0174145 39.7656433 -105.0174118 39.7668473
-7765 6419 1678 0.134913237668999 0.134913237668999 -105.0174118 39.7668473 -105.0174158 39.7680606
-7766 1678 6421 0.134568146094945 0.134568146094945 -105.0174158 39.7680606 -105.0174145 39.7692708
-7767 6421 2457 0.135266114631303 0.135266114631303 -105.0174145 39.7692708 -105.0174746 39.7704864
-7768 2457 3225 0.138075006668938 0.138075006668938 -105.0174746 39.7704864 -105.0174873 39.7717281
-7769 3225 5745 0.134195295626898 0.134195295626898 -105.0174873 39.7717281 -105.0175012 39.7729349
-7770 5745 5522 0.132936679979251 0.132936679979251 -105.0175012 39.7729349 -105.0175119 39.7741304
-7771 5522 6422 0.135417328130375 0.135417328130375 -105.0175119 39.7741304 -105.0175243 39.7753482
-7772 6422 6423 0.137879539043021 0.137879539043021 -105.0175243 39.7753482 -105.0174223 39.7765857
-7776 6425 6426 0.131565838315989 0.131565838315989 -105.0170361 39.7765857 -105.0170359 39.7777689
-9014 7117 7118 0.0653478278832396 0.0653478278832396 -104.9968556 39.7354212 -104.9975929 39.7352666
-7778 2486 2825 0.134659485620958 0.134659485620958 -105.0170359 39.7789761 -105.0169815 39.7801864
-7779 2825 1435 0.20171777298344 0.20171777298344 -105.0169815 39.7801864 -105.0170158 39.7820003
-7780 1435 6427 0.150355567395556 0.150355567395556 -105.0170158 39.7820003 -105.01696 39.7833518
-7782 4094 6039 0.18817564016619 0.18817564016619 -105.0169973 39.7839311 -105.0170022 39.7856234
-7783 6039 6428 0.201342188276825 0.201342188276825 -105.0170022 39.7856234 -105.016993 39.7874341
-7784 6428 6429 0.404705192201308 0.404705192201308 -105.016993 39.7874341 -105.0169891 39.7910737
-7785 6430 2403 0.202864038761159 0.202864038761159 -105.0175669 39.7512092 -105.017566 39.7530336
-7786 2403 6431 0.0331723473682169 0.0331723473682169 -105.017566 39.7530336 -105.0178463 39.7532399
-7787 6431 6432 0.176045966759895 0.176045966759895 -105.0178463 39.7532399 -105.0177887 39.7548225
-7789 6433 6434 0.0826623084672878 0.0826623084672878 -105.0178088 39.7553019 -105.0178088 39.7560453
-7790 6434 6435 0.102944521823956 0.102944521823956 -105.0178088 39.7560453 -105.0178061 39.7569711
-7791 6435 6436 0.00978588535341196 0.00978588535341196 -105.0178061 39.7569711 -105.0178047 39.7570591
-7793 6131 5859 0.176922247784819 0.176922247784819 -105.0287757 39.7165547 -105.0287757 39.7149636
-7794 5859 1306 0.176947022701008 0.176947022701008 -105.0287757 39.7149636 -105.0288014 39.7133724
-7795 1306 6437 0.245961882429388 0.245961882429388 -105.0288014 39.7133724 -105.0287757 39.7111605
-7797 4379 175 0.0949912703955897 0.0949912703955897 -105.0284495 39.6939582 -105.0284721 39.6931041
-7799 6438 6439 0.118265132463411 0.118265132463411 -105.0288833 39.6876517 -105.0288576 39.6887151
-7800 426 6440 0.136068759302944 0.136068759302944 -105.0252144 39.7427283 -105.0268058 39.7427195
-7801 6440 6140 0.13326442219696 0.13326442219696 -105.0268058 39.7427195 -105.0283644 39.7427283
-7802 6140 4012 0.134504046499466 0.134504046499466 -105.0283644 39.7427283 -105.0299375 39.742737
-7803 4012 6441 0.132430300578831 0.132430300578831 -105.0299375 39.742737 -105.0314863 39.7427496
-7804 6441 6442 0.13523718007968 0.13523718007968 -105.0314863 39.7427496 -105.0330679 39.7427349
-7805 6442 3383 0.131020837855346 0.131020837855346 -105.0330679 39.7427349 -105.0346003 39.7427332
-7807 6443 5593 0.101318153214668 0.101318153214668 -105.0428338 39.7427355 -105.0440188 39.7427376
-7809 5592 6444 0.0976166388579658 0.0976166388579658 -105.0440283 39.7421749 -105.04517 39.7421763
-7810 6444 6445 0.491425863708822 0.491425863708822 -105.04517 39.7421763 -105.0509176 39.7421724
-7814 2400 6448 0.282522157819803 0.282522157819803 -104.9404255 39.7738517 -104.9389896 39.7761403
-7817 2813 6450 0.086833012009872 0.086833012009872 -104.9913173 39.7752191 -104.9923333 39.7752102
-7819 6451 6452 0.0978256934477298 0.0978256934477298 -104.9982284 39.7754911 -104.9993731 39.7754907
-7820 6452 3935 0.102019422492613 0.102019422492613 -104.9993731 39.7754907 -105.0005661 39.7754577
-7821 3935 5623 0.0992172562512715 0.0992172562512715 -105.0005661 39.7754577 -105.0017268 39.7754774
-7823 6453 4202 0.100516365940058 0.100516365940058 -105.006451 39.775346 -105.0076269 39.7753262
-7824 4202 1069 0.100502974298411 0.100502974298411 -105.0076269 39.7753262 -105.0088028 39.7753394
-7825 1069 2505 0.106288157429336 0.106288157429336 -105.0088028 39.7753394 -105.0100464 39.7753527
-7827 6454 1236 0.0948029547901802 0.0948029547901802 -105.0112167 39.7753455 -105.012326 39.7753515
-7828 1236 4810 0.0999111243280575 0.0999111243280575 -105.012326 39.7753515 -105.0134951 39.7753509
-7829 4810 2177 0.101346858256007 0.101346858256007 -105.0134951 39.7753509 -105.014681 39.7753502
-7830 2177 595 0.0594373309242362 0.0594373309242362 -105.014681 39.7753502 -105.0153765 39.7753499
-7831 595 6456 0.0424911721972826 0.0424911721972826 -105.0153765 39.7753499 -105.0158736 39.775342
-7833 349 6422 0.0713248739505624 0.0713248739505624 -105.0166897 39.7753492 -105.0175243 39.7753482
-7834 6422 4630 0.121079515215535 0.121079515215535 -105.0175243 39.7753482 -105.0189411 39.7753479
-7836 1259 376 0.0755636106904258 0.0755636106904258 -105.0204832 39.7753471 -105.0213674 39.7753467
-7837 376 4545 0.0608816123146845 0.0608816123146845 -105.0213674 39.7753467 -105.0220798 39.7753463
-7838 4545 2701 0.135701731606855 0.135701731606855 -105.0220798 39.7753463 -105.0236677 39.7753454
-7839 2701 6457 0.126994454068005 0.126994454068005 -105.0236677 39.7753454 -105.0251537 39.7753502
-7841 6458 6459 0.0454788769710747 0.0454788769710747 -105.0375697 39.7756981 -105.0381018 39.7756915
-7842 6459 6460 0.0496400956308302 0.0496400956308302 -105.0381018 39.7756915 -105.0386826 39.775685
-7843 6460 6461 0.0515972381206 0.0515972381206 -105.0386826 39.775685 -105.0392863 39.7756783
-7845 6462 6463 0.0483118204156802 0.0483118204156802 -105.0392949 39.7752627 -105.0398602 39.7752659
-7846 6463 1134 0.0499784066419261 0.0499784066419261 -105.0398602 39.7752659 -105.040445 39.7752693
-7847 1134 6464 0.0497410465605515 0.0497410465605515 -105.040445 39.7752693 -105.041027 39.7752745
-7849 6465 6466 0.0544130408961272 0.0544130408961272 -105.0416343 39.775288 -105.042271 39.7752905
-7850 6466 3850 0.0472855484942146 0.0472855484942146 -105.042271 39.7752905 -105.0428243 39.7752926
-7851 3850 6467 0.0501739162143614 0.0501739162143614 -105.0428243 39.7752926 -105.0434114 39.7752908
-7852 6467 5576 0.0486954285842123 0.0486954285842123 -105.0434114 39.7752908 -105.0439812 39.7752891
-7854 6468 4673 0.110758148850492 0.110758148850492 -104.9923387 39.7755028 -104.9936347 39.7754962
-7855 4673 6469 0.101963932591745 0.101963932591745 -104.9936347 39.7754962 -104.9948277 39.7755094
-7857 5575 6471 0.0065719182159958 0.0065719182159958 -105.044007 39.7747614 -105.0440839 39.7747614
-7858 6471 6472 0.0420124186537075 0.0420124186537075 -105.0440839 39.7747614 -105.0445755 39.7747614
-7859 6472 6473 0.0412603655949121 0.0412603655949121 -105.0445755 39.7747614 -105.0450583 39.7747614
-7860 6473 6474 0.00681975388326533 0.00681975388326533 -105.0450583 39.7747614 -105.0451381 39.7747614
-7862 6476 3433 0.101986471383689 0.101986471383689 -105.0333983 39.7749593 -105.0345914 39.7749791
-7864 6477 6478 0.14533158628719 0.14533158628719 -104.9406153 39.7461001 -104.9389155 39.7461112
-7865 6478 6479 0.146043976986052 0.146043976986052 -104.9389155 39.7461112 -104.9372075 39.746131
-7866 6479 2014 0.145258231311968 0.145258231311968 -104.9372075 39.746131 -104.9355085 39.7461282
-7867 2014 6480 0.148541120069898 0.148541120069898 -104.9355085 39.7461282 -104.9337711 39.7461262
-7868 6480 6481 0.146497737165933 0.146497737165933 -104.9337711 39.7461262 -104.9320576 39.7461244
-7870 6482 6483 0.108282286689265 0.108282286689265 -104.9873838 39.7461813 -104.9861174 39.7461946
-7871 6483 6484 0.108491401341724 0.108491401341724 -104.9861174 39.7461946 -104.9848486 39.7462103
-7873 6485 6486 0.107588206878742 0.107588206878742 -104.9835697 39.7461971 -104.9823113 39.7461969
-7874 6486 6487 0.108152480667507 0.108152480667507 -104.9823113 39.7461969 -104.9810463 39.7461971
-7875 6487 6488 0.101444382501879 0.101444382501879 -104.9810463 39.7461971 -104.9798598 39.7461897
-7876 6488 6489 0.0964116258051976 0.0964116258051976 -104.9798598 39.7461897 -104.9787322 39.7461798
-7877 6489 6490 0.100996661509111 0.100996661509111 -104.9787322 39.7461798 -104.9775509 39.7461815
-7878 6490 6491 0.0875395650093709 0.0875395650093709 -104.9775509 39.7461815 -104.976527 39.74618
-7879 6491 5045 0.0321137501610987 0.0321137501610987 -104.976527 39.74618 -104.9761515 39.7461728
-7880 5045 6492 0.117702359393688 0.117702359393688 -104.9761515 39.7461728 -104.9747749 39.7461601
-7882 6493 6494 0.102121868544675 0.102121868544675 -104.968414 39.7460843 -104.9672196 39.746075
-7885 5423 6497 0.104998299985498 0.104998299985498 -104.9659758 39.7460698 -104.9647477 39.7460671
-7887 6498 2276 0.0954001386196214 0.0954001386196214 -104.9320748 39.7455833 -104.930959 39.7455899
-7888 2276 3599 0.06824353272523 0.06824353272523 -104.930959 39.7455899 -104.9301608 39.7455899
-7889 3599 6499 0.0293198911712676 0.0293198911712676 -104.9301608 39.7455899 -104.9298179 39.7455937
-7890 6499 6500 0.100538255640661 0.100538255640661 -104.9298179 39.7455937 -104.928642 39.7456002
-7891 6500 5163 0.0991059325809468 0.0991059325809468 -104.928642 39.7456002 -104.9274829 39.7455899
-7892 5163 5160 0.0380087655441681 0.0380087655441681 -104.9274829 39.7455899 -104.9270451 39.7456493
-7893 5160 5991 0.104706554354607 0.104706554354607 -104.9270451 39.7456493 -104.9258205 39.7456382
-7894 5991 6501 0.100402260808534 0.100402260808534 -104.9258205 39.7456382 -104.9246462 39.7456457
-7895 6501 6502 1.04365943145138 1.04365943145138 -104.9246462 39.7456457 -104.9124392 39.7456596
-7898 435 6505 0.0386263503887606 0.0386263503887606 -104.9400813 39.7837417 -104.9400719 39.7833944
-7899 6505 335 0.101999106210783 0.101999106210783 -104.9400719 39.7833944 -104.9400719 39.7824771
-18520 9719 10306 0.125645609854682 0.125645609854682 -105.0302877 39.7369493 -105.0316869 39.7366042
-7901 6506 6507 1.29783680025226 1.29783680025226 -104.9094652 39.7786813 -104.924642 39.7791151
-7902 6507 5983 0.103637474886707 0.103637474886707 -104.924642 39.7791151 -104.9258169 39.7793462
-7903 5983 2101 0.103292266259067 0.103292266259067 -104.9258169 39.7793462 -104.9269881 39.7795759
-9126 1424 7178 0.131577423131136 0.131577423131136 -105.0380823 39.7820859 -105.0380864 39.7832692
-7904 2101 6508 0.248902894245049 0.248902894245049 -104.9269881 39.7795759 -104.9298124 39.7801232
-7906 6509 6510 0.360508984578831 0.360508984578831 -104.9400658 39.7910048 -104.9405839 39.7877872
-7907 6510 6511 0.0349379067210739 0.0349379067210739 -104.9405839 39.7877872 -104.940586 39.787473
-7909 6512 6513 0.304262851034051 0.304262851034051 -104.9405864 39.7865077 -104.9405902 39.7837714
-7910 6513 6198 0.252538456966519 0.252538456966519 -104.9405902 39.7837714 -104.9406408 39.7815006
-7911 6198 576 0.0366939406022336 0.0366939406022336 -104.9406408 39.7815006 -104.940659 39.7811709
-7912 576 6515 0.0946945974761285 0.0946945974761285 -104.940659 39.7811709 -104.9407009 39.7803199
-7915 89 3525 0.202675004351493 0.202675004351493 -104.9580983 39.7002217 -104.9580991 39.698399
-7916 3525 6516 0.201208326437589 0.201208326437589 -104.9580991 39.698399 -104.9581069 39.6965895
-7917 6516 6517 0.125720317267139 0.125720317267139 -104.9581069 39.6965895 -104.9581176 39.6954589
-7919 6518 6519 0.200829668984099 0.200829668984099 -104.9581241 39.6947734 -104.9581188 39.6929673
-7920 6519 5832 0.202502182884777 0.202502182884777 -104.9581188 39.6929673 -104.958102 39.6911462
-7921 5832 6520 0.201241567556278 0.201241567556278 -104.958102 39.6911462 -104.9581278 39.6893365
-7922 6520 6521 0.396923547399649 0.396923547399649 -104.9581278 39.6893365 -104.957636 39.685787
-7923 6522 6523 0.133027344486413 0.133027344486413 -104.982762 39.6978313 -104.9817185 39.6969444
-7924 6523 4230 0.0509058477475031 0.0509058477475031 -104.9817185 39.6969444 -104.9812906 39.6966263
-7925 4230 3627 0.095634183764131 0.095634183764131 -104.9812906 39.6966263 -104.9805353 39.6959923
-7926 3627 1795 0.17402508350424 0.17402508350424 -104.9805353 39.6959923 -104.9792579 39.6947744
-7928 6524 4175 0.0888021060703878 0.0888021060703878 -104.9782122 39.6938342 -104.9775465 39.6932215
-17651 395 780 0.411550362143881 0.411550362143881 -104.9367017 39.7800737 -104.9318858 39.7800449
-7930 6525 1780 0.0441669339202922 0.0441669339202922 -104.9772938 39.6929888 -104.9769419 39.6926982
-7931 1780 4371 0.0730695211007641 0.0730695211007641 -104.9769419 39.6926982 -104.976372 39.6922088
-7932 4371 6527 0.0615136660388587 0.0615136660388587 -104.976372 39.6922088 -104.9759135 39.6917827
-7933 6527 365 0.0331373286455635 0.0331373286455635 -104.9759135 39.6917827 -104.9756534 39.6915619
-7935 6528 6529 0.918393000112345 0.918393000112345 -104.9593753 39.6828563 -104.9687115 39.6869299
-7936 6529 6530 0.220602612202271 0.220602612202271 -104.9687115 39.6869299 -104.9709294 39.6879413
-7938 6531 6533 0.0857049610334614 0.0857049610334614 -104.9734286 39.6890388 -104.9743231 39.6893856
-7940 5175 3090 0.40371590303619 0.40371590303619 -104.9757389 39.7165269 -104.9757316 39.7128962
-7941 3090 3201 0.197838998920199 0.197838998920199 -104.9757316 39.7128962 -104.9757389 39.711117
-7943 6407 4688 0.196571833896643 0.196571833896643 -104.990332 39.7836638 -104.9926323 39.7836836
-7944 4688 4940 0.140125445900248 0.140125445900248 -104.9926323 39.7836836 -104.9942716 39.7836506
-7946 6170 5019 0.102773469761832 0.102773469761832 -104.9594375 39.7241351 -104.9582358 39.7241351
-7947 5019 3351 0.103514032973499 0.103514032973499 -104.9582358 39.7241351 -104.9570255 39.7241259
-7948 3351 6534 0.103149871890818 0.103149871890818 -104.9570255 39.7241259 -104.9558194 39.7241271
-7949 6534 6535 0.102775789327764 0.102775789327764 -104.9558194 39.7241271 -104.9546177 39.7241333
-9173 5349 5392 0.0859339245649361 0.0859339245649361 -104.9274952 39.692974 -104.926491 39.6929872
-7950 6535 2060 0.103192691678964 0.103192691678964 -104.9546177 39.7241333 -104.9534111 39.7241317
-7951 2060 2646 0.101884046964041 0.101884046964041 -104.9534111 39.7241317 -104.9522198 39.7241312
-7952 2646 4112 0.105519033634909 0.105519033634909 -104.9522198 39.7241312 -104.950986 39.7241333
-7953 4112 6536 0.103005071327601 0.103005071327601 -104.950986 39.7241333 -104.9497817 39.7241209
-7954 6536 6537 0.102995851811127 0.102995851811127 -104.9497817 39.7241209 -104.9485774 39.7241209
-7955 6537 6539 0.1029998815793 0.1029998815793 -104.9485774 39.7241209 -104.9473731 39.7241291
-7956 6539 3453 0.102546625331303 0.102546625331303 -104.9473731 39.7241291 -104.9461741 39.7241209
-7958 6015 3883 0.103459903316916 0.103459903316916 -104.9449591 39.7241168 -104.9437494 39.7241229
-7959 3883 846 0.104834602248929 0.104834602248929 -104.9437494 39.7241229 -104.9425236 39.7241229
-7960 846 6540 0.101388253991195 0.101388253991195 -104.9425236 39.7241229 -104.9413381 39.7241209
-7961 6540 6541 0.0479102302548626 0.0479102302548626 -104.9413381 39.7241209 -104.9407779 39.7241206
-7963 988 6542 0.0976255225844962 0.0976255225844962 -104.9740667 39.7237385 -104.9729252 39.7237385
-7964 6542 6543 0.0510763365802728 0.0510763365802728 -104.9729252 39.7237385 -104.9723281 39.7237476
-7966 6544 2318 0.0507276043625414 0.0507276043625414 -104.9717626 39.7237562 -104.9711696 39.7237463
-7967 2318 5114 0.0505908057304328 0.0505908057304328 -104.9711696 39.7237463 -104.9705782 39.7237364
-7968 5114 445 0.0485658434846568 0.0485658434846568 -104.9705782 39.7237364 -104.9700104 39.7237429
-7969 445 4713 0.0498146803357513 0.0498146803357513 -104.9700104 39.7237429 -104.969428 39.7237496
-7970 4713 6546 0.0983637452954902 0.0983637452954902 -104.969428 39.7237496 -104.9682779 39.7237562
-7971 6546 6547 0.0998347883215936 0.0998347883215936 -104.9682779 39.7237562 -104.9671106 39.7237629
-7973 5411 3144 0.088816521791746 0.088816521791746 -104.9658231 39.7237695 -104.9647846 39.7237695
-7974 3144 3916 0.112464236744585 0.112464236744585 -104.9647846 39.7237695 -104.9634696 39.7237721
-7976 6332 6548 0.108272865647673 0.108272865647673 -104.9836195 39.7241279 -104.9823535 39.7241259
-7977 6548 3156 0.104441457482765 0.104441457482765 -104.9823535 39.7241259 -104.9811324 39.7241137
-7978 3156 4975 0.102775440582403 0.102775440582403 -104.9811324 39.7241137 -104.9799308 39.7241005
-7979 4975 6549 0.100365138716245 0.100365138716245 -104.9799308 39.7241005 -104.9787573 39.7240931
-7980 6549 6550 0.102792800397101 0.102792800397101 -104.9787573 39.7240931 -104.9775557 39.7240716
-7982 6526 5047 0.0492847670519182 0.0492847670519182 -104.9769714 39.7240796 -104.9763952 39.7240866
-7983 5047 6551 0.0975745067522553 0.0975745067522553 -104.9763952 39.7240866 -104.9752545 39.7240698
-17653 9285 10141 0.0935043743671756 0.0935043743671756 -104.9695286 39.7796372 -104.9684346 39.7796533
-7984 6551 5065 0.0520838428726065 0.0520838428726065 -104.9752545 39.7240698 -104.9746455 39.7240692
-7985 5065 987 0.0487655351272014 0.0487655351272014 -104.9746455 39.7240692 -104.9740753 39.7240686
-7987 6552 6553 0.11141163822183 0.11141163822183 -104.9406129 39.7243416 -104.9393102 39.724345
-7988 6553 6554 0.0931288050453943 0.0931288050453943 -104.9393102 39.724345 -104.9382214 39.724358
-7989 6554 6555 0.0954267012259227 0.0954267012259227 -104.9382214 39.724358 -104.9371056 39.724358
-7990 6555 6556 0.0932230978560399 0.0932230978560399 -104.9371056 39.724358 -104.9360156 39.7243514
-7991 6556 2018 0.096637647678534 0.096637647678534 -104.9360156 39.7243514 -104.9348857 39.7243603
-7992 2018 2008 0.0302895913994428 0.0302895913994428 -104.9348857 39.7243603 -104.9345317 39.7243519
-7993 2008 6557 0.0614415106208342 0.0614415106208342 -104.9345317 39.7243519 -104.9338133 39.7243478
-7995 2764 6558 0.0940583318372542 0.0940583318372542 -104.9327137 39.724358 -104.9316139 39.7243581
-7996 6558 2268 0.0933570415002435 0.0933570415002435 -104.9316139 39.7243581 -104.9305223 39.7243581
-7998 5192 6559 0.0436786412585742 0.0436786412585742 -104.9874942 39.724123 -104.9869835 39.7241266
-7999 6559 6560 0.0106994466158069 0.0106994466158069 -104.9869835 39.7241266 -104.9868584 39.7241275
-8002 6562 6563 0.0505000952437127 0.0505000952437127 -104.9856207 39.7241273 -104.9850303 39.7241197
-8004 3018 6564 0.0487830282291943 0.0487830282291943 -104.9780672 39.7547969 -104.9784697 39.7551079
-8005 6564 4383 0.0508423763728808 0.0508423763728808 -104.9784697 39.7551079 -104.9788891 39.7554321
-8006 4383 6565 0.0576100244421376 0.0576100244421376 -104.9788891 39.7554321 -104.9793644 39.7557994
-8008 6566 6567 0.00412306976586438 0.00412306976586438 -104.9797454 39.7560938 -104.9797794 39.7561201
-8009 6567 6568 0.0539582974681531 0.0539582974681531 -104.9797794 39.7561201 -104.9802246 39.7564641
-8010 6568 6569 0.0519961096093482 0.0519961096093482 -104.9802246 39.7564641 -104.9806536 39.7567956
-8011 6569 6570 0.0542246799430147 0.0542246799430147 -104.9806536 39.7567956 -104.981101 39.7571413
-8012 6570 6571 0.0518803862854092 0.0518803862854092 -104.981101 39.7571413 -104.981529 39.7574721
-17654 10141 10140 0.10337885268614 0.10337885268614 -104.9684346 39.7796533 -104.967225 39.7796681
-8013 6571 6572 0.0555098728995741 0.0555098728995741 -104.981529 39.7574721 -104.981987 39.757826
-8014 6572 6573 0.0518861583127315 0.0518861583127315 -104.981987 39.757826 -104.9824151 39.7581568
-8015 6573 6574 0.0518860343451018 0.0518860343451018 -104.9824151 39.7581568 -104.9828432 39.7584876
-8016 6574 6575 0.0508332520538339 0.0508332520538339 -104.9828432 39.7584876 -104.9832626 39.7588117
-8017 6575 6576 0.0544506518702307 0.0544506518702307 -104.9832626 39.7588117 -104.9837118 39.7591589
-8018 6576 6176 0.0529383120108553 0.0529383120108553 -104.9837118 39.7591589 -104.9841486 39.7594964
-8019 6176 6577 0.0529043310628525 0.0529043310628525 -104.9841486 39.7594964 -104.9845851 39.7598337
-8020 6577 3307 0.0513720664630444 0.0513720664630444 -104.9845851 39.7598337 -104.985009 39.7601612
-8021 3307 6578 0.0555027664653656 0.0555027664653656 -104.985009 39.7601612 -104.9854669 39.7605151
-8022 6578 6579 0.0497858933197237 0.0497858933197237 -104.9854669 39.7605151 -104.9858777 39.7608325
-8026 916 6582 0.0644004913493865 0.0644004913493865 -104.9874133 39.7320545 -104.9881664 39.732053
-8027 6582 6583 0.0568408799781512 0.0568408799781512 -104.9881664 39.732053 -104.9888311 39.7320532
-8028 6583 6584 0.122686442934717 0.122686442934717 -104.9888311 39.7320532 -104.9902658 39.7320547
-8029 6584 6585 0.119086225858405 0.119086225858405 -104.9902658 39.7320547 -104.9916584 39.7320541
-8031 4637 6586 0.0681807162053014 0.0681807162053014 -105.0198922 39.7331309 -105.0206647 39.7329791
-8032 6586 4550 0.0899357767109733 0.0899357767109733 -105.0206647 39.7329791 -105.0217163 39.7329917
-8033 4550 6587 0.293817867332518 0.293817867332518 -105.0217163 39.7329917 -105.0251522 39.7329752
-8034 6587 6588 0.104136881172081 0.104136881172081 -105.0251522 39.7329752 -105.0263693 39.7329435
-8035 6588 6589 0.0983651040648428 0.0983651040648428 -105.0263693 39.7329435 -105.0275196 39.7329448
-8036 6589 6129 0.0990923096855932 0.0990923096855932 -105.0275196 39.7329448 -105.0286784 39.7329421
-8037 6129 3972 0.0982639550962464 0.0982639550962464 -105.0286784 39.7329421 -105.0298275 39.7329471
-8038 3972 6590 0.099057650475641 0.099057650475641 -105.0298275 39.7329471 -105.0309859 39.7329468
-17935 10221 8779 0.0167456719913715 0.0167456719913715 -104.9872787 39.7248713 -104.9874745 39.7248723
-8039 6590 1407 0.099982611141039 0.099982611141039 -105.0309859 39.7329468 -105.032155 39.7329341
-8040 1407 6591 0.096574089288832 0.096574089288832 -105.032155 39.7329341 -105.0332843 39.7329428
-8042 5218 3376 0.0125708011673062 0.0125708011673062 -105.0344966 39.7329537 -105.0346426 39.7329669
-8043 3376 3397 0.0411038350876113 0.0411038350876113 -105.0346426 39.7329669 -105.0351232 39.7329603
-8044 3397 6592 0.0474630685655207 0.0474630685655207 -105.0351232 39.7329603 -105.0356782 39.7329656
-8045 6592 5717 0.0112629167716475 0.0112629167716475 -105.0356782 39.7329656 -105.0358099 39.7329669
-8046 5717 5711 0.0353931291626462 0.0353931291626462 -105.0358099 39.7329669 -105.0362237 39.7329601
-8049 6594 6595 0.0372589458613009 0.0372589458613009 -105.0373216 39.7329718 -105.0377569 39.7329864
-8051 6596 6597 0.0491446235593822 0.0491446235593822 -104.996445 39.7320969 -104.9970197 39.732097
-8052 6597 6598 0.0512739101828601 0.0512739101828601 -104.9970197 39.732097 -104.9976193 39.7320971
-8053 6598 6599 0.0445968134228137 0.0445968134228137 -104.9976193 39.7320971 -104.9981408 39.7320938
-8054 6599 6600 0.0456401369039379 0.0456401369039379 -104.9981408 39.7320938 -104.9986745 39.7320904
-8055 6600 252 0.0644261415780049 0.0644261415780049 -104.9986745 39.7320904 -104.9994279 39.7320888
-8056 252 3949 0.0630622102110069 0.0630622102110069 -104.9994279 39.7320888 -105.0001653 39.7320956
-8057 3949 6601 0.0624388506180743 0.0624388506180743 -105.0001653 39.7320956 -105.0008954 39.7320882
-8058 6601 5610 0.057495014751868 0.057495014751868 -105.0008954 39.7320882 -105.0015677 39.7320945
-8059 5610 6602 0.0530621910173341 0.0530621910173341 -105.0015677 39.7320945 -105.0021882 39.7320975
-8060 6602 3731 0.0543021802328704 0.0543021802328704 -105.0021882 39.7320975 -105.0028232 39.7321006
-8061 3731 6603 0.107126213030051 0.107126213030051 -105.0028232 39.7321006 -105.0040758 39.7320862
-8062 6603 4486 0.0992014153017681 0.0992014153017681 -105.0040758 39.7320862 -105.0052345 39.7321295
-8064 302 396 0.456543205648827 0.456543205648827 -104.939982 39.7790462 -104.9347437 39.7798532
-8065 396 6604 0.263692963912388 0.263692963912388 -104.9347437 39.7798532 -104.9316605 39.7797563
-8067 2108 5986 0.103617400145952 0.103617400145952 -104.9269854 39.7788565 -104.9258093 39.7786298
-8068 5986 6605 0.103377873268697 0.103377873268697 -104.9258093 39.7786298 -104.9246358 39.778404
-9343 7304 2051 0.0535709121596095 0.0535709121596095 -104.9680922 39.7020547 -104.9674661 39.7020628
-8070 4763 6169 0.176859243925992 0.176859243925992 -104.9601753 39.7225386 -104.9601619 39.7241291
-8123 6640 6641 0.17629957299909 0.17629957299909 -104.998563 39.7193532 -104.9985621 39.7209387
-8071 6169 6260 0.145538243855646 0.145538243855646 -104.9601619 39.7241291 -104.9613314 39.7250799
-8072 6260 3917 0.186355414418251 0.186355414418251 -104.9613314 39.7250799 -104.963416 39.7245919
-8075 6608 6609 0.216668843775513 0.216668843775513 -104.9221011 39.7367646 -104.9246118 39.7365015
-8076 6609 5988 0.0945207273969085 0.0945207273969085 -104.9246118 39.7365015 -104.9257168 39.7364786
-8077 5988 2122 0.100941576479339 0.100941576479339 -104.9257168 39.7364786 -104.9268972 39.7364673
-8078 2122 6610 0.0983635555045419 0.0983635555045419 -104.9268972 39.7364673 -104.9280463 39.7365084
-8079 6610 6611 0.0970315915473971 0.0970315915473971 -104.9280463 39.7365084 -104.9291809 39.7364935
-8081 6612 6613 0.0935811526066721 0.0935811526066721 -104.9303837 39.7364879 -104.9314781 39.7364838
-8082 6613 2749 0.0990634268639465 0.0990634268639465 -104.9314781 39.7364838 -104.9326365 39.736497
-8083 2749 6614 0.105679418235948 0.105679418235948 -104.9326365 39.736497 -104.9338724 39.736497
-8085 6615 6616 0.101635566171867 0.101635566171867 -104.9349711 39.7364838 -104.9361597 39.7364871
-8086 6616 6617 0.0962607674133666 0.0962607674133666 -104.9361597 39.7364871 -104.9372854 39.7364789
-8087 6617 6618 0.0951534169408166 0.0951534169408166 -104.9372854 39.7364789 -104.9383982 39.7364784
-8088 6618 6619 0.0938879229278784 0.0938879229278784 -104.9383982 39.7364784 -104.9394962 39.7364792
-17940 6560 10223 0.0802385671723254 0.0802385671723254 -104.9868584 39.7241275 -104.9868558 39.7248491
-8090 6620 6621 0.160330485968093 0.160330485968093 -104.9325634 39.6893199 -104.9316943 39.6880425
-8094 6623 1791 0.109097036983099 0.109097036983099 -104.9815624 39.6955402 -104.9807204 39.6948034
-8095 1791 3615 0.039522374569603 0.039522374569603 -104.9807204 39.6948034 -104.9804114 39.6945392
-8096 3615 6624 0.0738542372087066 0.0738542372087066 -104.9804114 39.6945392 -104.9798363 39.6940439
-8097 6624 6625 0.00831390386589708 0.00831390386589708 -104.9798363 39.6940439 -104.9797753 39.6939857
-8098 6625 6626 0.070757439886615 0.070757439886615 -104.9797753 39.6939857 -104.9792691 39.6934825
-8099 6626 6627 0.0728730586061825 0.0728730586061825 -104.9792691 39.6934825 -104.9787159 39.6929842
-8100 6627 5098 0.0960515227378026 0.0960515227378026 -104.9787159 39.6929842 -104.9779272 39.6923695
-8101 5098 6628 0.0550201636939116 0.0550201636939116 -104.9779272 39.6923695 -104.9775188 39.6919873
-8103 6630 239 0.0379460853943731 0.0379460853943731 -104.9769745 39.6914779 -104.9766938 39.6912137
-13573 9130 3 0.109013561390269 0.109013561390269 -105.0161204 39.730571 -105.0152478 39.7298563
-8105 6631 6632 0.0782857815609104 0.0782857815609104 -104.9763643 39.6909232 -104.9757688 39.6903887
-8106 6632 6533 0.166563544591406 0.166563544591406 -104.9757688 39.6903887 -104.9743231 39.6893856
-8108 4496 6633 0.110872689467253 0.110872689467253 -105.0051314 39.787854 -105.006429 39.7878524
-8109 6633 2525 0.333067333185797 0.333067333185797 -105.006429 39.7878524 -105.0101844 39.7886554
-8111 6530 6634 0.0105197308884475 0.0105197308884475 -104.9709294 39.6879413 -104.9709852 39.687857
-9336 7300 4780 0.0501146245066156 0.0501146245066156 -104.9757669 39.7020355 -104.9751815 39.7020519
-8112 6634 6635 2.4458667171276 2.4458667171276 -104.9709852 39.687857 -104.9711364 39.6658611
-8113 6636 3095 0.197330202512711 0.197330202512711 -104.9710271 39.7146913 -104.971013 39.7129167
-8114 3095 3205 0.202310741049047 0.202310741049047 -104.971013 39.7129167 -104.9710252 39.7110973
-8115 3205 6118 0.200935805580311 0.200935805580311 -104.9710252 39.7110973 -104.9710442 39.7092903
-8116 6118 1915 0.200185455389542 0.200185455389542 -104.9710442 39.7092903 -104.971036 39.70749
-8118 6637 5842 0.204932644380513 0.204932644380513 -104.9710805 39.6929591 -104.9710758 39.6911161
-8119 5842 6638 0.194625839062785 0.194625839062785 -104.9710758 39.6911161 -104.9710843 39.6893658
-8121 6639 3724 0.202719550339155 0.202719550339155 -104.9985703 39.7165902 -104.9985724 39.7184133
-8122 3724 6640 0.104515203903702 0.104515203903702 -104.9985724 39.7184133 -104.998563 39.7193532
-8124 6641 2622 0.176067278462879 0.176067278462879 -104.9985621 39.7209387 -104.9985544 39.7225221
-8125 2622 5203 0.176917243967006 0.176917243967006 -104.9985544 39.7225221 -104.9985716 39.7241131
-8126 5203 6232 0.177139986115085 0.177139986115085 -104.9985716 39.7241131 -104.9985893 39.7257061
-8129 6643 6644 0.177268373064057 0.177268373064057 -104.998623 39.7289153 -104.9986313 39.7305095
-8130 6644 6600 0.175826872766799 0.175826872766799 -104.9986313 39.7305095 -104.9986745 39.7320904
-8131 6600 6646 0.177773484713149 0.177773484713149 -104.9986745 39.7320904 -104.9986572 39.7336891
-8133 6647 6648 0.177957472274986 0.177957472274986 -104.998664 39.7352736 -104.9986884 39.7368739
-8134 6648 6649 0.169816854222751 0.169816854222751 -104.9986884 39.7368739 -104.9992032 39.7383489
-8135 6649 6650 0.0183704581232897 0.0183704581232897 -104.9992032 39.7383489 -104.9993525 39.7384677
-8136 6650 6651 0.180283145370232 0.180283145370232 -104.9993525 39.7384677 -104.9999603 39.7400202
-8137 6651 6652 0.0228081566299403 0.0228081566299403 -104.9999603 39.7400202 -104.9999567 39.7402253
-8139 6653 1499 0.197154421185115 0.197154421185115 -105.0448856 39.6967219 -105.0449033 39.6949489
-8140 1499 188 0.204153885319108 0.204153885319108 -105.0449033 39.6949489 -105.0449033 39.6931129
-8141 188 5878 0.159028819712238 0.159028819712238 -105.0449033 39.6931129 -105.045238 39.6917061
-8142 5878 6654 0.24236157922448 0.24236157922448 -105.045238 39.6917061 -105.0452294 39.6895265
-8144 1583 6655 0.303396334779096 0.303396334779096 -105.0452106 39.6881689 -105.0452196 39.6854404
-8145 6656 5874 0.176427569810156 0.176427569810156 -105.0444508 39.7165618 -105.0444942 39.7149755
-8146 5874 6657 0.00810609260917888 0.00810609260917888 -105.0444942 39.7149755 -105.0444802 39.7149034
-8147 6657 6658 0.0470608013663409 0.0470608013663409 -105.0444802 39.7149034 -105.0443368 39.7144948
-8150 6659 6660 0.255748331282284 0.255748331282284 -105.045239 39.700587 -105.045239 39.698287
-8151 6661 6662 0.00688301382680834 0.00688301382680834 -105.0068679 39.6894571 -105.0068682 39.6893952
-8152 6662 6663 0.392909871907801 0.392909871907801 -105.0068682 39.6893952 -105.0068849 39.6858617
-8153 6664 1758 0.130752459577202 0.130752459577202 -105.0073877 39.7075601 -105.0078426 39.7064375
-8154 1758 6314 0.0908112834588078 0.0908112834588078 -105.0078426 39.7064375 -105.0074307 39.7056848
-8155 6314 6665 0.191679756807403 0.191679756807403 -105.0074307 39.7056848 -105.0073877 39.7039613
-8156 6665 763 0.155864734453911 0.155864734453911 -105.0073877 39.7039613 -105.0074463 39.7025603
-8157 763 6668 0.0989081569703109 0.0989081569703109 -105.0074463 39.7025603 -105.007449 39.7016708
-8158 6668 1760 0.0778502447443476 0.0778502447443476 -105.007449 39.7016708 -105.0074982 39.7009717
-8159 1760 6003 0.221657363761595 0.221657363761595 -105.0074982 39.7009717 -105.0065799 39.6991077
-8160 6003 5765 0.101345142024656 0.101345142024656 -105.0065799 39.6991077 -105.0065723 39.6981963
-8161 5765 4032 0.0976983696193598 0.0976983696193598 -105.0065723 39.6981963 -105.0065466 39.6973179
-8162 4032 6669 0.0654151166199609 0.0654151166199609 -105.0065466 39.6973179 -105.0065809 39.6967302
-8164 2301 1759 0.0929594689620956 0.0929594689620956 -105.0067097 39.6957792 -105.0067133 39.6949432
-8165 1759 150 0.2063607315498 0.2063607315498 -105.0067133 39.6949432 -105.0067304 39.6930874
-8166 150 1738 0.199773882802826 0.199773882802826 -105.0067304 39.6930874 -105.0067562 39.6912909
-8168 1953 3100 0.166887359049361 0.166887359049361 -104.9394047 39.7138976 -104.9377781 39.7130688
-8170 370 2529 0.0016410050164606 0.0016410050164606 -105.0298446 39.7379436 -105.0298418 39.737929
-8171 2529 6670 0.0654370448512421 0.0654370448512421 -105.0298418 39.737929 -105.029987 39.7373512
-8200 6684 1172 0.140728922414785 0.140728922414785 -104.9499154 39.7619564 -104.9499105 39.763222
-8172 6670 1937 0.344573874886115 0.344573874886115 -105.029987 39.7373512 -105.0260468 39.738001
-8174 6671 6672 0.176399723080376 0.176399723080376 -104.9362703 39.7162376 -104.9362682 39.7146512
-8176 3101 6673 0.188864615641403 0.188864615641403 -104.9362596 39.7130732 -104.9362583 39.7113747
-8178 4227 1805 0.201844384843532 0.201844384843532 -104.936211 39.696598 -104.9362246 39.6947828
-8179 1805 6674 0.203096969054999 0.203096969054999 -104.9362246 39.6947828 -104.9362004 39.6929564
-8180 6674 5847 0.205632777843381 0.205632777843381 -104.9362004 39.6929564 -104.9362004 39.6911071
-8181 5847 6675 0.197984723567939 0.197984723567939 -104.9362004 39.6911071 -104.9362112 39.6893266
-8183 6676 4226 0.190839047917349 0.190839047917349 -104.936428 39.698394 -104.9365695 39.6966812
-8185 4212 1268 0.185384243862507 0.185384243862507 -105.018373 39.7168584 -105.0203557 39.7175319
-8187 6677 2875 0.129732620530101 0.129732620530101 -104.9498557 39.7837786 -104.9498484 39.7849453
-8188 2875 6678 0.138723736947104 0.138723736947104 -104.9498484 39.7849453 -104.9498214 39.7861927
-8189 6678 6679 0.13144235424121 0.13144235424121 -104.9498214 39.7861927 -104.9498986 39.7873733
-8190 6679 6680 0.782596772143326 0.782596772143326 -104.9498986 39.7873733 -104.948752 39.794356
-8191 3575 5642 0.141762411979774 0.141762411979774 -104.9499292 39.7544371 -104.9499292 39.755712
-8192 5642 4347 0.140039066988463 0.140039066988463 -104.9499292 39.755712 -104.9499266 39.7569714
-8193 4347 6345 0.13859354874742 0.13859354874742 -104.9499266 39.7569714 -104.9499239 39.7582178
-8194 6345 3049 0.140317315615912 0.140317315615912 -104.9499239 39.7582178 -104.9499198 39.7594797
-8195 3049 3024 0.0669551847418331 0.0669551847418331 -104.9499198 39.7594797 -104.9499105 39.7600818
-8196 3024 6681 0.0663747225163875 0.0663747225163875 -104.9499105 39.7600818 -104.9499172 39.7606787
-8197 6681 6682 0.00550527045183645 0.00550527045183645 -104.9499172 39.7606787 -104.9499185 39.7607282
-8198 6682 6683 0.122014480736259 0.122014480736259 -104.9499185 39.7607282 -104.9499154 39.7618255
-8199 6683 6684 0.0145554158979999 0.0145554158979999 -104.9499154 39.7618255 -104.9499154 39.7619564
-8201 1172 892 0.137892873302074 0.137892873302074 -104.9499105 39.763222 -104.9499118 39.7644621
-8202 892 4475 0.139838739747675 0.139838739747675 -104.9499118 39.7644621 -104.9499118 39.7657197
-8203 4475 2777 0.135724572944392 0.135724572944392 -104.9499118 39.7657197 -104.9499105 39.7669403
-8204 2777 5266 0.129198654341627 0.129198654341627 -104.9499105 39.7669403 -104.9499038 39.7681022
-8205 5266 6685 0.122514628608539 0.122514628608539 -104.9499038 39.7681022 -104.9499024 39.769204
-8206 6685 6686 0.20769100942942 0.20769100942942 -104.9499024 39.769204 -104.9498944 39.7710718
-8207 6686 6357 0.202692590161251 0.202692590161251 -104.9498944 39.7710718 -104.949826 39.7728939
-8208 6357 2390 0.107324644883127 0.107324644883127 -104.949826 39.7728939 -104.9498085 39.773859
-8209 2390 6687 0.139594845742255 0.139594845742255 -104.9498085 39.773859 -104.9498032 39.7751144
-8210 6687 6688 0.0752686220951058 0.0752686220951058 -104.9498032 39.7751144 -104.9497992 39.7757913
-8211 6688 749 0.0665961818211898 0.0665961818211898 -104.9497992 39.7757913 -104.9498045 39.7763902
-8212 749 1567 0.140763317861176 0.140763317861176 -104.9498045 39.7763902 -104.9497965 39.7776561
-8213 1567 6689 0.140174033607804 0.140174033607804 -104.9497965 39.7776561 -104.9497884 39.7789167
-8215 6691 696 0.200953877059722 0.200953877059722 -104.9500562 39.7401702 -104.9500677 39.7419774
-8216 696 6692 0.202493921890496 0.202493921890496 -104.9500677 39.7419774 -104.9500467 39.7437984
-8218 508 6693 0.0440506867837982 0.0440506867837982 -104.9492875 39.7477337 -104.9494162 39.7481173
-8219 6694 1202 0.170408371052522 0.170408371052522 -104.9495001 39.7256083 -104.9495101 39.7271408
-8220 1202 6695 0.022095029398504 0.022095029398504 -104.9495101 39.7271408 -104.9495082 39.7273395
-8221 6695 3781 0.199196539116323 0.199196539116323 -104.9495082 39.7273395 -104.9494979 39.7291309
-8222 3781 6696 0.154646276165852 0.154646276165852 -104.9494979 39.7291309 -104.9494801 39.7305216
-8224 951 6697 0.162889491053556 0.162889491053556 -104.9494887 39.732119 -104.949511 39.7335838
-8225 6697 4890 0.17202029430472 0.17202029430472 -104.949511 39.7335838 -104.9494864 39.7351307
-8226 4890 6698 0.182585439334225 0.182585439334225 -104.9494864 39.7351307 -104.9495133 39.7367726
-8227 6698 5488 0.173629132461636 0.173629132461636 -104.9495133 39.7367726 -104.9494922 39.738334
-8230 6700 6701 0.054263196932367 0.054263196932367 -104.9873849 39.7414911 -104.9878331 39.7418366
-8231 6701 5807 0.103685962200744 0.103685962200744 -104.9878331 39.7418366 -104.9886895 39.7424968
-8232 5807 6702 0.106632774624389 0.106632774624389 -104.9886895 39.7424968 -104.9895702 39.7431758
-8233 6702 6703 0.0962060876195832 0.0962060876195832 -104.9895702 39.7431758 -104.9903648 39.7437884
-8234 6703 5959 0.00690380150934747 0.00690380150934747 -104.9903648 39.7437884 -104.9904219 39.7438323
-8235 5959 6704 0.00415729025946559 0.00415729025946559 -104.9904219 39.7438323 -104.9904562 39.7438588
-8236 6704 3004 0.101332185729619 0.101332185729619 -104.9904562 39.7438588 -104.9912932 39.744504
-8237 3004 4395 0.106412326585027 0.106412326585027 -104.9912932 39.744504 -104.9921721 39.7451816
-8238 4395 6705 0.103936208820228 0.103936208820228 -104.9921721 39.7451816 -104.9930306 39.7458434
-8239 6705 6706 0.108885043469445 0.108885043469445 -104.9930306 39.7458434 -104.99393 39.7465367
-8240 6706 6707 0.0530572853327784 0.0530572853327784 -104.99393 39.7465367 -104.9943683 39.7468745
-8241 6707 6708 0.0508918154467618 0.0508918154467618 -104.9943683 39.7468745 -104.9947886 39.7471986
-8242 6708 6709 0.103982459974641 0.103982459974641 -104.9947886 39.7471986 -104.9956475 39.7478607
-8243 6709 6710 0.100220871190445 0.100220871190445 -104.9956475 39.7478607 -104.9964754 39.7484988
-8244 6710 6711 0.00631643031082491 0.00631643031082491 -104.9964754 39.7484988 -104.9965276 39.748539
-8245 6711 6188 0.105471969629518 0.105471969629518 -104.9965276 39.748539 -104.9973988 39.7492106
-8246 6188 6712 0.0552929480053166 0.0552929480053166 -104.9973988 39.7492106 -104.9978555 39.7495627
-8247 6712 6713 0.051155648874288 0.051155648874288 -104.9978555 39.7495627 -104.9982781 39.7498884
-8249 4495 6714 0.112097289917407 0.112097289917407 -105.0051056 39.7870428 -105.0064173 39.7870612
-8250 6714 1079 0.0913714399600763 0.0913714399600763 -105.0064173 39.7870612 -105.0074815 39.7871418
-8251 1079 2524 0.245312559433029 0.245312559433029 -105.0074815 39.7871418 -105.0101975 39.7878569
-8253 6006 6251 0.204148069385731 0.204148069385731 -105.0169911 39.700417 -105.0170083 39.6985811
-8254 6251 6715 0.203065667560916 0.203065667560916 -105.0170083 39.6985811 -105.0169992 39.6967549
-8256 2935 6716 0.266313303297407 0.266313303297407 -105.0169377 39.6883193 -105.0167173 39.6859303
-8257 6416 3741 0.135496222887927 0.135496222887927 -105.0172314 39.7170829 -105.0170254 39.7158747
-8258 3741 5854 0.117997896305679 0.117997896305679 -105.0170254 39.7158747 -105.0170084 39.7148136
-8260 2305 161 0.314948131318509 0.314948131318509 -105.0165019 39.6959725 -105.0165323 39.6931402
-8263 6717 3071 0.175732613824838 0.175732613824838 -104.9425532 39.7146491 -104.9425505 39.7130687
-8264 3071 6718 0.173767654321711 0.173767654321711 -104.9425505 39.7130687 -104.9425631 39.711506
-8265 6718 6100 0.243539432543733 0.243539432543733 -104.9425631 39.711506 -104.9425586 39.7093158
-8267 3290 98 0.422419964097428 0.422419964097428 -104.9444349 39.7038735 -104.9431816 39.700199
-8269 4373 2854 0.205542196291208 0.205542196291208 -105.0015169 39.7015972 -105.0038253 39.7010848
-8271 6719 1596 0.0969388330111528 0.0969388330111528 -105.0125794 39.7006019 -105.0135751 39.701018
-8273 118 6721 0.0966297992771619 0.0966297992771619 -105.0112228 39.7301878 -105.0112289 39.7310568
-8274 6721 6722 0.0414535753801991 0.0414535753801991 -105.0112289 39.7310568 -105.0112278 39.7314296
-8276 2311 6580 0.108271978342533 0.108271978342533 -105.0112958 39.7314875 -105.0113223 39.732461
-8277 6580 6723 0.0197325066377101 0.0197325066377101 -105.0113223 39.732461 -105.0113508 39.7326371
-8301 4041 6740 0.178573713835442 0.178573713835442 -105.0263295 39.7181459 -105.0263463 39.7197518
-8302 6740 1829 0.177333893618754 0.177333893618754 -105.0263463 39.7197518 -105.0263496 39.7213466
-8279 4433 6724 0.324356944785499 0.324356944785499 -105.0109506 39.7174666 -105.0120852 39.72025
-8282 6725 6088 0.0237314605310015 0.0237314605310015 -105.0111475 39.760596 -105.0111515 39.7608094
-8283 6088 4822 0.0875664870066569 0.0875664870066569 -105.0111515 39.7608094 -105.0111481 39.7615969
-8284 4822 6726 0.0475371228844605 0.0475371228844605 -105.0111481 39.7615969 -105.0111753 39.7620239
-8285 6726 4515 0.133316815943664 0.133316815943664 -105.0111753 39.7620239 -105.0111891 39.7632228
-8286 4515 5237 0.132189806591607 0.132189806591607 -105.0111891 39.7632228 -105.0111823 39.7644116
-9507 2581 5179 0.178384896285487 0.178384896285487 -105.0337024 39.7229256 -105.0337195 39.7245298
-8287 5237 6727 0.137381332135233 0.137381332135233 -105.0111823 39.7644116 -105.0111822 39.7656471
-8288 6727 6728 0.132866818946611 0.132866818946611 -105.0111822 39.7656471 -105.0111824 39.766842
-8289 6728 1673 0.133389434002772 0.133389434002772 -105.0111824 39.766842 -105.0111824 39.7680416
-8290 1673 6729 0.137304160443328 0.137304160443328 -105.0111824 39.7680416 -105.0111874 39.7692764
-8292 6730 6731 0.0127908749904874 0.0127908749904874 -105.015836 39.7589269 -105.0159724 39.7589742
-8324 6753 6754 0.0516246355995179 0.0516246355995179 -105.0275713 39.7655797 -105.0275819 39.7660439
-8293 6731 6734 0.253997048781863 0.253997048781863 -105.0159724 39.7589742 -105.0187898 39.7597001
-8294 6734 6735 0.103152527560213 0.103152527560213 -105.0187898 39.7597001 -105.0196661 39.7603379
-8296 6736 6737 0.0131672047429292 0.0131672047429292 -105.0202265 39.7608392 -105.0203579 39.760901
-8298 4636 5383 0.185495216645111 0.185495216645111 -105.0191455 39.732286 -105.0185003 39.7338787
-8300 5972 4041 0.174731707729605 0.174731707729605 -105.0263295 39.7165745 -105.0263295 39.7181459
-8303 1829 6741 0.102538685907791 0.102538685907791 -105.0263496 39.7213466 -105.0263624 39.7222687
-8304 4575 6440 0.137081553799117 0.137081553799117 -105.0268099 39.7414867 -105.0268058 39.7427195
-8305 6440 5291 0.136014333235461 0.136014333235461 -105.0268058 39.7427195 -105.0268109 39.7439427
-8306 5291 6742 0.135023999424587 0.135023999424587 -105.0268109 39.7439427 -105.0268109 39.745157
-8307 6742 10 0.133312225882616 0.133312225882616 -105.0268109 39.745157 -105.0268316 39.7463558
-8308 10 6394 0.135032006709 0.135032006709 -105.0268316 39.7463558 -105.0268144 39.7475701
-8309 6394 6743 0.132451340826744 0.132451340826744 -105.0268144 39.7475701 -105.0268304 39.7487612
-8310 6743 6744 0.135765849385072 0.135765849385072 -105.0268304 39.7487612 -105.0268132 39.7499821
-8311 6744 6745 0.133823531129847 0.133823531129847 -105.0268132 39.7499821 -105.0268172 39.7511856
-8313 6746 6747 0.134513077577228 0.134513077577228 -105.0268257 39.752413 -105.0268211 39.7536227
-8314 6747 6748 0.134201163774105 0.134201163774105 -105.0268211 39.7536227 -105.0268206 39.7548296
-8316 6749 1938 0.0948580215175547 0.0948580215175547 -105.0267907 39.738975 -105.0265344 39.738145
-8318 307 5887 0.0912856383131267 0.0912856383131267 -105.0279141 39.763121 -105.0276119 39.7639084
-8319 5887 6750 0.00721526462075332 0.00721526462075332 -105.0276119 39.7639084 -105.0275762 39.7639672
-8320 6750 6751 0.0269156344716724 0.0269156344716724 -105.0275762 39.7639672 -105.0275693 39.7642092
-8323 6752 6753 0.0510955164610192 0.0510955164610192 -105.0275758 39.7651202 -105.0275713 39.7655797
-8325 6754 6755 0.0510906826304937 0.0510906826304937 -105.0275819 39.7660439 -105.0275923 39.7665033
-8326 6755 6756 0.0511615632316368 0.0511615632316368 -105.0275923 39.7665033 -105.0275956 39.7669634
-8327 6756 1661 0.0519510824904343 0.0519510824904343 -105.0275956 39.7669634 -105.027599 39.7674306
-8328 1661 6758 0.0509873448397052 0.0509873448397052 -105.027599 39.7674306 -105.0275911 39.7678891
-8329 6758 6759 0.0522106080921687 0.0522106080921687 -105.0275911 39.7678891 -105.027583 39.7683586
-8330 6759 6760 0.0506887592311432 0.0506887592311432 -105.027583 39.7683586 -105.0276064 39.7688141
-18752 5186 5654 0.105380231545906 0.105380231545906 -105.0389187 39.7245383 -105.0389235 39.725486
-8331 6760 6761 0.0573063184317804 0.0573063184317804 -105.0276064 39.7688141 -105.0276173 39.7693294
-8333 6762 6763 0.0501245455122697 0.0501245455122697 -105.0276181 39.7698189 -105.0275974 39.7702694
-8334 6763 6764 0.0489376044154541 0.0489376044154541 -105.0275974 39.7702694 -105.0276005 39.7707095
-8337 6766 6767 0.0490039328328154 0.0490039328328154 -105.0275892 39.7716046 -105.0275913 39.7720453
-8338 6767 6768 0.0513498171240697 0.0513498171240697 -105.0275913 39.7720453 -105.0275913 39.7725071
-8339 6768 6769 0.0498709246005866 0.0498709246005866 -105.0275913 39.7725071 -105.0275913 39.7729556
-8341 5533 6770 0.292387787290413 0.292387787290413 -105.027737 39.774038 -105.0275847 39.7766649
-8343 2972 6771 0.121066844508317 0.121066844508317 -105.0268526 39.7584761 -105.0268698 39.7595648
-8344 6771 6093 0.143799158144466 0.143799158144466 -105.0268698 39.7595648 -105.0268612 39.760858
-8345 6093 6772 0.01594646132934 0.01594646132934 -105.0268612 39.760858 -105.0268634 39.7610014
-8346 6772 6773 0.00797333604469033 0.00797333604469033 -105.0268634 39.7610014 -105.0268646 39.7610731
-8347 6773 6774 0.00589372782719237 0.00589372782719237 -105.0268646 39.7610731 -105.0268654 39.7611261
-8349 6775 6776 0.135681018337986 0.135681018337986 -105.0267779 39.7766583 -105.0267719 39.7778785
-8350 6776 2490 0.131411131535027 0.131411131535027 -105.0267719 39.7778785 -105.0267778 39.7790603
-8351 2490 2835 0.135427320939223 0.135427320939223 -105.0267778 39.7790603 -105.0267549 39.7802781
-8353 4067 6052 0.133451561970317 0.133451561970317 -105.0276017 39.7844198 -105.0275763 39.7856198
-8354 6052 5792 0.201431723471221 0.201431723471221 -105.0275763 39.7856198 -105.0275871 39.7874313
-8356 6777 6778 0.137939265537406 0.137939265537406 -105.0265007 39.7560347 -105.0265093 39.7572752
-8358 6658 6779 0.0952206682824548 0.0952206682824548 -105.0443368 39.7144948 -105.0454279 39.7143249
-8359 6779 1328 0.20245506080321 0.20245506080321 -105.0454279 39.7143249 -105.0473907 39.7133074
-9582 1393 7408 0.0523989189771459 0.0523989189771459 -105.0324691 39.7165619 -105.0330817 39.7165583
-8360 1328 6780 0.24344994454685 0.24344994454685 -105.0473907 39.7133074 -105.0484853 39.7112864
-8362 6781 6338 0.132299767169153 0.132299767169153 -104.9684019 39.7570371 -104.9684621 39.758226
-18540 10312 7538 0.710682259466036 0.710682259466036 -105.0532415 39.7643533 -105.0449269 39.7643759
-8363 6338 3026 0.142960379522958 0.142960379522958 -104.9684621 39.758226 -104.9684276 39.7595114
-8364 3026 6782 0.131957413991529 0.131957413991529 -104.9684276 39.7595114 -104.9684183 39.7606981
-8365 6782 6783 0.00572653872195823 0.00572653872195823 -104.9684183 39.7606981 -104.9684183 39.7607496
-8366 6783 6784 0.13893806084239 0.13893806084239 -104.9684183 39.7607496 -104.9684183 39.7619991
-8367 6784 1155 0.138805738856212 0.138805738856212 -104.9684183 39.7619991 -104.9684118 39.7632474
-8368 1155 876 0.139884571461894 0.139884571461894 -104.9684118 39.7632474 -104.968419 39.7645054
-8370 4464 2784 0.134142589801556 0.134142589801556 -104.9684223 39.7657497 -104.968405 39.766956
-8371 2784 5255 0.132457483790055 0.132457483790055 -104.968405 39.766956 -104.9684137 39.7681472
-8372 5255 4727 0.21307200925813 0.21307200925813 -104.9684137 39.7681472 -104.9683879 39.7700633
-8373 4727 5126 0.0748266761428759 0.0748266761428759 -104.9683879 39.7700633 -104.9683965 39.7707362
-8374 5126 6785 0.0660204248306932 0.0660204248306932 -104.9683965 39.7707362 -104.968405 39.7713299
-8375 6785 4284 0.173603246809035 0.173603246809035 -104.968405 39.7713299 -104.9683885 39.7728911
-8377 6786 6787 0.142696164770821 0.142696164770821 -104.9677841 39.7356489 -104.9684521 39.7368249
-8379 5475 6788 0.1766899367412 0.1766899367412 -104.9684271 39.7384126 -104.9684027 39.7400015
-8380 6788 6789 0.178262795240798 0.178262795240798 -104.9684027 39.7400015 -104.9684201 39.7416046
-8381 6789 669 0.0038695834466259 0.0038695834466259 -104.9684201 39.7416046 -104.9684201 39.7416394
-8382 669 6790 0.00298242718157566 0.00298242718157566 -104.9684201 39.7416394 -104.9684215 39.7416662
-8383 6790 6791 0.175654700740653 0.175654700740653 -104.9684215 39.7416662 -104.9684196 39.7432459
-8385 4603 6493 0.141540356779896 0.141540356779896 -104.9684176 39.7448114 -104.968414 39.7460843
-8386 6493 6795 0.235592097571248 0.235592097571248 -104.968414 39.7460843 -104.9683834 39.7482029
-8387 6795 6796 0.135380255100289 0.135380255100289 -104.9683834 39.7482029 -104.9683794 39.7494204
-8388 6796 6797 0.00458123097756658 0.00458123097756658 -104.9683794 39.7494204 -104.9683794 39.7494616
-8389 6797 6798 0.00459235047115107 0.00459235047115107 -104.9683794 39.7494616 -104.9683794 39.7495029
-8390 6798 6799 0.135291654892361 0.135291654892361 -104.9683794 39.7495029 -104.968374 39.7507196
-8391 6799 6800 0.141019064418211 0.141019064418211 -104.968374 39.7507196 -104.968366 39.7519878
-8392 6800 821 0.136459904501488 0.136459904501488 -104.968366 39.7519878 -104.9683443 39.7532149
-8393 821 3562 0.138377698701616 0.138377698701616 -104.9683443 39.7532149 -104.9683703 39.7544592
-8395 5772 516 0.0304460136124682 0.0304460136124682 -104.969071 39.787876 -104.968998 39.788144
-8397 6411 6801 0.0202183008206165 0.0202183008206165 -104.9688032 39.7903462 -104.968859 39.7905229
-8398 6802 469 0.0770276556079661 0.0770276556079661 -104.9681122 39.7183532 -104.9681294 39.7190458
-8399 469 4171 0.115648628347006 0.115648628347006 -104.9681294 39.7190458 -104.9681062 39.7200857
-8400 4171 6803 0.135804309767261 0.135804309767261 -104.9681062 39.7200857 -104.9680977 39.721307
-8401 6803 4756 0.071946790437269 0.071946790437269 -104.9680977 39.721307 -104.9681062 39.721954
-8403 6804 6805 0.127899734301329 0.127899734301329 -104.9688098 39.7807867 -104.968799 39.7819369
-8405 6803 4172 0.13716080109606 0.13716080109606 -104.9680977 39.721307 -104.9679063 39.7200823
-8406 4172 470 0.118198242572908 0.118198242572908 -104.9679063 39.7200823 -104.9678891 39.7190194
-8407 470 6806 0.0738815709398357 0.0738815709398357 -104.9678891 39.7190194 -104.9678805 39.718355
-8410 6807 6808 0.0966312020179035 0.0966312020179035 -104.9241221 39.7053959 -104.9237959 39.7045639
-8411 6808 6809 0.078738376832051 0.078738376832051 -104.9237959 39.7045639 -104.9237358 39.7038573
-8412 6809 3373 0.430297684252256 0.430297684252256 -104.9237358 39.7038573 -104.9252722 39.7001725
-8414 6810 6811 0.203442237788957 0.203442237788957 -104.9246456 39.6893613 -104.9246456 39.6875317
-8415 1476 6812 0.245653934383614 0.245653934383614 -104.9233668 39.695061 -104.9243796 39.6929938
-8416 6812 6813 0.412460631108446 0.412460631108446 -104.9243796 39.6929938 -104.9254353 39.6893745
-8418 6814 6815 0.174359151043162 0.174359151043162 -104.9246289 39.7162454 -104.9246127 39.7146774
-8419 6815 3109 0.176366303019304 0.176366303019304 -104.9246127 39.7146774 -104.9246115 39.7130913
-8420 3109 6816 0.193801807541949 0.193801807541949 -104.9246115 39.7130913 -104.9246085 39.7113484
-8421 6816 6817 0.0198367109802725 0.0198367109802725 -104.9246085 39.7113484 -104.9246161 39.7111701
-8422 6817 6104 0.210336723998741 0.210336723998741 -104.9246161 39.7111701 -104.9246113 39.7092785
-8424 6818 4370 0.0431318765981996 0.0431318765981996 -105.001122 39.704272 -105.0014826 39.7040009
-8426 2496 1451 0.0985317859583251 0.0985317859583251 -105.0026756 39.7039481 -105.0038258 39.7039943
-8427 1451 2853 0.10657030011201 0.10657030011201 -105.0038258 39.7039943 -105.0050712 39.7039722
-8428 2853 6819 0.0983314928072937 0.0983314928072937 -105.0050712 39.7039722 -105.0062204 39.7039547
-8429 6819 6665 0.0998633676523793 0.0998633676523793 -105.0062204 39.7039547 -105.0073877 39.7039613
-8430 6665 6820 0.100599054724802 0.100599054724802 -105.0073877 39.7039613 -105.0085636 39.7039679
-8431 6820 3821 0.10490937410086 0.10490937410086 -105.0085636 39.7039679 -105.0097899 39.7039631
-8432 3821 5897 0.102058293498771 0.102058293498771 -105.0097899 39.7039631 -105.0109828 39.7039743
-9656 6387 7441 0.131317068143471 0.131317068143471 -105.036926 39.7475739 -105.0369584 39.7487546
-8433 5897 6821 0.102847878519627 0.102847878519627 -105.0109828 39.7039743 -105.0121846 39.7039499
-8435 1593 1644 0.201270216910902 0.201270216910902 -105.0133176 39.7039764 -105.0156693 39.7039235
-8436 1644 6822 0.105737900324602 0.105737900324602 -105.0156693 39.7039235 -105.0169053 39.7039235
-8437 6822 4218 0.0969375306307301 0.0969375306307301 -105.0169053 39.7039235 -105.0180383 39.7039103
-8438 4218 6823 0.101326281592707 0.101326281592707 -105.0180383 39.7039103 -105.0192227 39.7039037
-8439 6823 198 0.0969958932624718 0.0969958932624718 -105.0192227 39.7039037 -105.0203557 39.7038707
-8440 198 2927 0.100607212393453 0.100607212393453 -105.0203557 39.7038707 -105.0215316 39.7038839
-8441 2927 5309 0.0991277824360909 0.0991277824360909 -105.0215316 39.7038839 -105.0226903 39.7038773
-8442 5309 1465 0.0998634796625755 0.0998634796625755 -105.0226903 39.7038773 -105.0238576 39.7038839
-8445 1176 6825 0.181656671362534 0.181656671362534 -104.9973407 39.7040997 -104.9991903 39.7049022
-8447 6826 6827 0.865493060175873 0.865493060175873 -105.0432124 39.7042603 -105.0532477 39.7032733
-8448 3119 6828 0.283790323154486 0.283790323154486 -104.9350503 39.6919459 -104.931734 39.691987
-8450 3496 6829 0.0523352446605108 0.0523352446605108 -104.9500131 39.6983858 -104.9506246 39.6983982
-8451 6829 6830 0.0732524388814314 0.0732524388814314 -104.9506246 39.6983982 -104.9512088 39.6979166
-8452 6830 3663 0.0505681915693724 0.0505681915693724 -104.9512088 39.6979166 -104.9513786 39.697481
-8453 3663 4996 0.130580462322132 0.130580462322132 -104.9513786 39.697481 -104.9523584 39.6965806
-8455 6831 6247 0.199011000686174 0.199011000686174 -105.0402684 39.7003444 -105.0402512 39.6985547
-8456 6247 6832 0.199751548882436 0.199751548882436 -105.0402512 39.6985547 -105.0402255 39.6967584
-8458 1495 184 0.20195222577189 0.20195222577189 -105.0402341 39.6949489 -105.0402341 39.6931327
-8459 184 1712 0.203399715506048 0.203399715506048 -105.0402341 39.6931327 -105.0400367 39.6913098
-8460 1712 6833 0.205087968397347 0.205087968397347 -105.0400367 39.6913098 -105.0400351 39.6894654
-8461 6833 1578 0.200928350075194 0.200928350075194 -105.0400351 39.6894654 -105.0401129 39.6876594
-8463 6835 5869 0.177962583931279 0.177962583931279 -105.0397191 39.7165613 -105.0397017 39.7149609
-8464 5869 1321 0.176970219219333 0.176970219219333 -105.0397017 39.7149609 -105.0396887 39.7133694
-8465 1321 1377 0.177352733194459 0.177352733194459 -105.0396887 39.7133694 -105.0397191 39.7117746
-8466 1377 6836 0.0602165463968322 0.0602165463968322 -105.0397191 39.7117746 -105.0397105 39.7112331
-8467 6836 6837 0.0823104914192672 0.0823104914192672 -105.0397105 39.7112331 -105.0397534 39.7104936
-8468 6837 4694 0.116790101887087 0.116790101887087 -105.0397534 39.7104936 -105.0397105 39.7094438
-18756 1322 1378 0.175845021978343 0.175845021978343 -105.0402863 39.7133654 -105.0402944 39.711784
-8469 4694 6838 0.160065096905242 0.160065096905242 -105.0397105 39.7094438 -105.0397105 39.7080043
-8470 6838 5335 0.187163981040998 0.187163981040998 -105.0397105 39.7080043 -105.0397046 39.7063211
-8471 5335 6839 0.265241255095212 0.265241255095212 -105.0397046 39.7063211 -105.0396161 39.7039367
-8473 4319 4507 0.0895898957022207 0.0895898957022207 -105.0350327 39.7104474 -105.0360799 39.7104606
-8474 4507 6840 0.0124803827841914 0.0124803827841914 -105.0360799 39.7104606 -105.0362258 39.7104609
-8475 6840 6841 0.091716588631721 0.091716588631721 -105.0362258 39.7104609 -105.037298 39.7104627
-8476 6841 6842 0.00740292454463184 0.00740292454463184 -105.037298 39.7104627 -105.0373845 39.7104606
-8477 6842 285 0.0146970591982782 0.0146970591982782 -105.0373845 39.7104606 -105.0375561 39.7104672
-8478 285 5069 0.0844368792913957 0.0844368792913957 -105.0375561 39.7104672 -105.0385432 39.7104672
-13551 9125 9126 0.0538488930045225 0.0538488930045225 -105.0111017 39.7231117 -105.0106484 39.7227756
-8479 5069 6837 0.103562524850142 0.103562524850142 -105.0385432 39.7104672 -105.0397534 39.7104936
-8480 6837 6843 0.0961927404969427 0.0961927404969427 -105.0397534 39.7104936 -105.0408778 39.7104804
-8481 6843 6844 0.0998943541512786 0.0998943541512786 -105.0408778 39.7104804 -105.0420451 39.7105068
-8482 6844 6845 0.102052212683234 0.102052212683234 -105.0420451 39.7105068 -105.0432381 39.7105134
-8483 6845 6846 0.456427940885819 0.456427940885819 -105.0432381 39.7105134 -105.0485738 39.7105415
-8484 6847 4419 0.193121729151288 0.193121729151288 -105.0275397 39.7102889 -105.0297971 39.7103154
-8485 4419 6848 0.226127592349504 0.226127592349504 -105.0297971 39.7103154 -105.0324406 39.710322
-8486 6848 5329 0.136063050211474 0.136063050211474 -105.0324406 39.710322 -105.0340312 39.7103291
-8488 4363 1444 0.202825103543368 0.202825103543368 -105.0015367 39.7102427 -105.0039077 39.7102592
-8489 1444 6849 0.200067420030691 0.200067420030691 -105.0039077 39.7102592 -105.0062462 39.7102277
-8490 6849 6850 0.207042581432814 0.207042581432814 -105.0062462 39.7102277 -105.0086666 39.7102277
-8491 6850 5890 0.198967544378973 0.198967544378973 -105.0086666 39.7102277 -105.0109926 39.7102277
-8493 6851 6852 0.0470486102019036 0.0470486102019036 -104.9875556 39.7102383 -104.9881056 39.7102414
-8494 6852 6853 0.0201453367541323 0.0201453367541323 -104.9881056 39.7102414 -104.9883411 39.7102427
-8495 6853 6854 0.0193839654418635 0.0193839654418635 -104.9883411 39.7102427 -104.9885677 39.7102439
-8496 6854 6855 0.0201881052382051 0.0201881052382051 -104.9885677 39.7102439 -104.9888037 39.7102452
-8497 6855 6856 0.0195037980214848 0.0195037980214848 -104.9888037 39.7102452 -104.9890317 39.7102465
-8498 6856 6857 0.0198459509091597 0.0198459509091597 -104.9890317 39.7102465 -104.9892637 39.7102478
-8499 6857 6858 0.0195037180586887 0.0195037180586887 -104.9892637 39.7102478 -104.9894917 39.710249
-8500 6858 6859 0.0199058270401761 0.0199058270401761 -104.9894917 39.710249 -104.9897244 39.7102503
-8501 6859 1871 0.0228399539785669 0.0228399539785669 -104.9897244 39.7102503 -104.9899914 39.7102518
-8504 6861 6862 0.100580939051626 0.100580939051626 -104.9497683 39.7146491 -104.9485924 39.7146476
-8505 6862 6863 0.206622253376394 0.206622253376394 -104.9485924 39.7146476 -104.9461768 39.7146368
-8506 6863 6377 0.103010255262607 0.103010255262607 -104.9461768 39.7146368 -104.9449725 39.7146388
-8507 6377 4832 0.10370389707419 0.10370389707419 -104.9449725 39.7146388 -104.9437601 39.714643
-8508 4832 6717 0.103234622646169 0.103234622646169 -104.9437601 39.714643 -104.9425532 39.7146491
-8509 6717 6864 0.103703073117676 0.103703073117676 -104.9425532 39.7146491 -104.9413408 39.7146471
-8510 6864 6865 0.0481477570236711 0.0481477570236711 -104.9413408 39.7146471 -104.9407779 39.7146468
-8512 5856 6866 0.107372117361429 0.107372117361429 -104.9875046 39.7147611 -104.9862493 39.7147611
-8513 6866 6867 0.050649728561771 0.050649728561771 -104.9862493 39.7147611 -104.9856575 39.7147454
-8514 6867 4989 0.0553571225017631 0.0553571225017631 -104.9856575 39.7147454 -104.9850107 39.7147282
-8515 4989 6868 0.101318948663251 0.101318948663251 -104.9850107 39.7147282 -104.9838262 39.7147216
-8518 6869 3823 0.172685696470764 0.172685696470764 -105.0087904 39.6885896 -105.0106786 39.6880414
-8520 6870 5902 0.0785311515160625 0.0785311515160625 -105.0108215 39.6880414 -105.0117344 39.688114
-8521 5902 6871 0.0681549663304684 0.0681549663304684 -105.0117344 39.688114 -105.0125152 39.6882351
-8522 6871 1996 0.0322361485277902 0.0322361485277902 -105.0125152 39.6882351 -105.0128845 39.6882924
-8523 1996 1587 0.080539505433719 0.080539505433719 -105.0128845 39.6882924 -105.0138115 39.6884179
-8524 1587 6872 0.0787299872144713 0.0787299872144713 -105.0138115 39.6884179 -105.0147213 39.6885235
-8525 6872 1652 0.0828966049530784 0.0828966049530784 -105.0147213 39.6885235 -105.0156826 39.688616
-9751 2441 5738 0.170975903813153 0.170975903813153 -105.0416481 39.7709328 -105.0416591 39.7724704
-8528 6874 5702 0.0496353984033346 0.0496353984033346 -105.0351985 39.7658172 -105.0357792 39.7658132
-8529 5702 6875 0.0484896470155752 0.0484896470155752 -105.0357792 39.7658132 -105.0363465 39.7658167
-8530 6875 6876 0.0523105680266916 0.0523105680266916 -105.0363465 39.7658167 -105.0369584 39.7658073
-8531 6876 6877 0.100875098780012 0.100875098780012 -105.0369584 39.7658073 -105.0381386 39.7658121
-8532 6877 6878 0.0515810406741165 0.0515810406741165 -105.0381386 39.7658121 -105.0387418 39.7657978
-8533 6878 6879 0.0480493192441991 0.0480493192441991 -105.0387418 39.7657978 -105.0393037 39.7657845
-8534 6879 6532 0.0493288645061034 0.0493288645061034 -105.0393037 39.7657845 -105.0398808 39.7657795
-8535 6532 6880 0.0170276228852009 0.0170276228852009 -105.0398808 39.7657795 -105.0400799 39.7657742
-8537 1128 6881 0.0506249344560303 0.0506249344560303 -105.0404722 39.7657639 -105.0410645 39.7657635
-8538 6881 6882 0.0501120958003525 0.0501120958003525 -105.0410645 39.7657635 -105.0416508 39.7657632
-8539 6882 6883 0.0495209017571618 0.0495209017571618 -105.0416508 39.7657632 -105.04223 39.765752
-8540 6883 3846 0.0513776048731037 0.0513776048731037 -105.04223 39.765752 -105.0428311 39.7657541
-8541 3846 6884 0.0512508950828751 0.0512508950828751 -105.0428311 39.7657541 -105.0434307 39.76575
-8542 6884 5564 0.0499163404494349 0.0499163404494349 -105.0434307 39.76575 -105.0440146 39.7657413
-8543 5564 6885 0.0796596960320095 0.0796596960320095 -105.0440146 39.7657413 -105.0449466 39.7657411
-8544 6885 6886 0.709637932237075 0.709637932237075 -105.0449466 39.7657411 -105.0532491 39.7657101
-8545 3929 5619 0.0645570027229576 0.0645570027229576 -105.0010599 39.7656602 -105.0018152 39.7656592
-8546 5619 3704 0.0990278562894358 0.0990278562894358 -105.0018152 39.7656592 -105.0029738 39.7656577
-9775 2551 7512 0.408787216175776 0.408787216175776 -105.0415549 39.7874347 -105.041567 39.791111
-8547 3704 709 0.100036425190807 0.100036425190807 -105.0029738 39.7656577 -105.0041442 39.7656562
-8548 709 6887 0.100506522060904 0.100506522060904 -105.0041442 39.7656562 -105.0053201 39.7656547
-8549 6887 6888 0.0973098804153082 0.0973098804153082 -105.0053201 39.7656547 -105.0064586 39.7656532
-8550 6888 4190 0.138652686970481 0.138652686970481 -105.0064586 39.7656532 -105.0080808 39.7656511
-8551 4190 2516 0.130567043389136 0.130567043389136 -105.0080808 39.7656511 -105.0096084 39.7656491
-8552 2516 6727 0.134515842897036 0.134515842897036 -105.0096084 39.7656491 -105.0111822 39.7656471
-8553 6727 4804 0.136148376446663 0.136148376446663 -105.0111822 39.7656471 -105.0127751 39.765645
-8555 6890 6891 0.127464290413413 0.127464290413413 -105.0143648 39.7656412 -105.0158561 39.7656402
-8558 4625 1248 0.132737908659339 0.132737908659339 -105.0189635 39.7656391 -105.0205165 39.7656381
-8560 4557 2726 0.131937670977173 0.131937670977173 -105.0220695 39.765634 -105.0236131 39.7656257
-8561 2726 6892 0.133086814424956 0.133086814424956 -105.0236131 39.7656257 -105.0251701 39.7656134
-8562 6892 6893 0.0108053798662109 0.0108053798662109 -105.0251701 39.7656134 -105.0252908 39.7655845
-8564 6894 6753 0.13855912942418 0.13855912942418 -105.0259502 39.7655831 -105.0275713 39.7655797
-8565 6753 3977 0.202975190536315 0.202975190536315 -105.0275713 39.7655797 -105.029946 39.7655924
-8567 4726 5125 0.0514216994322944 0.0514216994322944 -104.9698076 39.7693083 -104.970211 39.7696514
-8569 6895 2262 0.104167713702112 0.104167713702112 -104.9317267 39.7692334 -104.9305079 39.7692334
-8570 2262 3612 0.100511868469799 0.100511868469799 -104.9305079 39.7692334 -104.929332 39.7692466
-8571 3612 6896 0.101962634245626 0.101962634245626 -104.929332 39.7692466 -104.928139 39.7692466
-8572 6896 2111 0.0983046285910296 0.0983046285910296 -104.928139 39.7692466 -104.9269888 39.7692466
-8573 2111 6000 0.10637347320659 0.10637347320659 -104.9269888 39.7692466 -104.9257444 39.7692291
-8574 6000 6897 0.0969032855683131 0.0969032855683131 -104.9257444 39.7692291 -104.9246113 39.7692598
-8575 6897 6898 1.19574032306189 1.19574032306189 -104.9246113 39.7692598 -104.9106207 39.7692636
-8576 3909 1049 0.101955415333633 0.101955415333633 -104.9634376 39.7692079 -104.9622462 39.7692541
-8577 1049 6280 0.110396580345644 0.110396580345644 -104.9622462 39.7692541 -104.9609549 39.7692782
-8580 4727 6902 0.104166457963925 0.104166457963925 -104.9683879 39.7700633 -104.9671691 39.7700633
-8581 6902 5404 0.105633279342784 0.105633279342784 -104.9671691 39.7700633 -104.9659333 39.7700479
-8582 5404 3137 0.103462723581867 0.103462723581867 -104.9659333 39.7700479 -104.9647229 39.7700633
-8583 3137 3910 0.106566211179802 0.106566211179802 -104.9647229 39.7700633 -104.9634764 39.7700397
-8585 6685 6904 0.1009798833353 0.1009798833353 -104.9499024 39.769204 -104.9487209 39.769203
-8586 6904 6905 0.0978861772455395 0.0978861772455395 -104.9487209 39.769203 -104.9475756 39.7692051
-8588 6906 6907 0.0919209174538617 0.0919209174538617 -104.947479 39.769204 -104.9464035 39.7692009
-8589 6907 3448 0.0130685497791993 0.0130685497791993 -104.9464035 39.7692009 -104.9462506 39.769202
-8590 3448 6908 0.0816132292801626 0.0816132292801626 -104.9462506 39.769202 -104.9452957 39.7691999
-8591 6908 6909 0.0115722967665996 0.0115722967665996 -104.9452957 39.7691999 -104.9451603 39.7691999
-8592 6909 6910 0.0993816484498638 0.0993816484498638 -104.9451603 39.7691999 -104.9439975 39.7691989
-8593 6910 805 0.0976551438474913 0.0976551438474913 -104.9439975 39.7691989 -104.9428549 39.7691989
-8594 805 6911 0.0993747261569693 0.0993747261569693 -104.9428549 39.7691989 -104.9416922 39.7691937
-8595 6911 6912 0.089888887106785 0.089888887106785 -104.9416922 39.7691937 -104.9406406 39.7691809
-8596 6912 6913 0.0146747703329366 0.0146747703329366 -104.9406406 39.7691809 -104.9404689 39.7691809
-8598 6914 1237 0.101225406841245 0.101225406841245 -105.0111738 39.7765593 -105.0123583 39.7765593
-8600 4811 2178 0.0990205816012607 0.0990205816012607 -105.0134913 39.7765593 -105.01465 39.7765593
-8602 596 6305 0.0508308915230223 0.0508308915230223 -105.015268 39.7765659 -105.0158628 39.7765644
-8603 6305 350 0.0658146671565848 0.0658146671565848 -105.0158628 39.7765644 -105.0166327 39.7765791
-8604 350 6425 0.0344816945169531 0.0344816945169531 -105.0166327 39.7765791 -105.0170361 39.7765857
-8605 6425 6423 0.0330039992635189 0.0330039992635189 -105.0170361 39.7765857 -105.0174223 39.7765857
-8606 6423 5343 0.065281602891384 0.065281602891384 -105.0174223 39.7765857 -105.0181862 39.7765857
-8607 5343 4631 0.0645633414559121 0.0645633414559121 -105.0181862 39.7765857 -105.0189415 39.7765989
-8608 4631 4639 0.0344816846016407 0.0344816846016407 -105.0189415 39.7765989 -105.0193449 39.7766055
-8610 1260 4538 0.0975702004070908 0.0975702004070908 -105.0205036 39.7766121 -105.0216452 39.7766253
-8611 4538 4546 0.0337389213160247 0.0337389213160247 -105.0216452 39.7766253 -105.02204 39.7766253
-8612 4546 6284 0.0652815653305245 0.0652815653305245 -105.02204 39.7766253 -105.0228039 39.7766253
-8613 6284 2702 0.0682127836725729 0.0682127836725729 -105.0228039 39.7766253 -105.0236021 39.7766253
-8614 2702 2716 0.0295959518245788 0.0295959518245788 -105.0236021 39.7766253 -105.0239484 39.7766282
-8615 2716 6915 0.102272155307925 0.102272155307925 -105.0239484 39.7766282 -105.0251451 39.7766366
-8617 277 6916 0.0242091643473284 0.0242091643473284 -104.9875916 39.7783304 -104.9878486 39.7782388
-8618 6916 6917 0.127799932481727 0.127799932481727 -104.9878486 39.7782388 -104.9879258 39.777091
-8620 6918 6919 0.100490474583826 0.100490474583826 -104.9981886 39.7765528 -104.9993645 39.7765528
-8621 6919 3936 0.103902551113693 0.103902551113693 -104.9993645 39.7765528 -105.0005802 39.7765663
-8623 5625 109 0.104159188317199 0.104159188317199 -105.0017162 39.7765726 -105.002935 39.7765792
-9852 7555 7556 0.127428116197139 0.127428116197139 -105.0451391 39.7751943 -105.0452485 39.7763372
-8625 720 6920 0.107136629659166 0.107136629659166 -105.0041538 39.776566 -105.005407 39.7765396
-8626 6920 6921 0.0878190742496679 0.0878190742496679 -105.005407 39.7765396 -105.0064346 39.7765342
-8627 6921 760 0.053327069779034 0.053327069779034 -105.0064346 39.7765342 -105.0070586 39.7765312
-8628 760 4203 0.0493954421158038 0.0493954421158038 -105.0070586 39.7765312 -105.0076366 39.7765332
-19719 10631 10629 0.0181769844157554 0.0181769844157554 -105.0042586 39.7344481 -105.0042425 39.7342851
-8629 4203 4204 0.0379739020862165 0.0379739020862165 -105.0076366 39.7765332 -105.0080809 39.7765386
-8630 4204 1070 0.0609601987006813 0.0609601987006813 -105.0080809 39.7765386 -105.0087942 39.7765334
-8631 1070 1071 0.0198138913639204 0.0198138913639204 -105.0087942 39.7765334 -105.0090259 39.7765399
-8632 1071 2506 0.0820743434648716 0.0820743434648716 -105.0090259 39.7765399 -105.0099863 39.7765386
-8634 6922 6923 0.0332474984310345 0.0332474984310345 -105.0181826 39.7608206 -105.018184 39.7611196
-8635 6923 6924 0.0309457475923951 0.0309457475923951 -105.018184 39.7611196 -105.0181853 39.7613979
-8636 6924 6925 0.06835161173269 0.06835161173269 -105.0181853 39.7613979 -105.0181866 39.7620126
-8641 2302 152 0.296479047850973 0.296479047850973 -105.0087181 39.6957726 -105.008717 39.6931063
-8642 152 1739 0.201132602649999 0.201132602649999 -105.008717 39.6931063 -105.0087303 39.6912975
-8643 1739 1717 0.0492912051446921 0.0492912051446921 -105.0087303 39.6912975 -105.0087646 39.690855
-8645 6315 6820 0.175487833230143 0.175487833230143 -105.0085636 39.7055461 -105.0085636 39.7039679
-8646 6820 764 0.157172405718933 0.157172405718933 -105.0085636 39.7039679 -105.0086065 39.7025548
-8647 764 6004 0.389410143877071 0.389410143877071 -105.0086065 39.7025548 -105.0093641 39.6991016
-8648 6004 6244 0.10052021368651 0.10052021368651 -105.0093641 39.6991016 -105.0093641 39.6981976
-11455 8264 8265 0.215908830963319 0.215908830963319 -104.9897645 39.7839357 -104.9903119 39.7820401
-8649 6244 6929 0.161155152616492 0.161155152616492 -105.0093641 39.6981976 -105.0093602 39.6967483
-8651 6930 6931 0.00809135923630026 0.00809135923630026 -105.0087589 39.6894757 -105.0087696 39.6894034
-8652 6931 6869 0.0905079323611068 0.0905079323611068 -105.0087696 39.6894034 -105.0087904 39.6885896
-8653 6869 6932 0.702159216296169 0.702159216296169 -105.0087904 39.6885896 -105.0089185 39.6822757
-8654 4432 6933 0.289985249196455 0.289985249196455 -105.0086074 39.7174296 -105.0086074 39.7148217
-8655 6933 4666 0.0976954476351155 0.0976954476351155 -105.0086074 39.7148217 -105.0086417 39.7139435
-8656 4666 1333 0.0998446345260267 0.0998446345260267 -105.0086417 39.7139435 -105.0086503 39.7130456
-8657 1333 1388 0.0991189577824547 0.0991189577824547 -105.0086503 39.7130456 -105.0086331 39.7121543
-8658 1388 6935 0.105783123390058 0.105783123390058 -105.0086331 39.7121543 -105.008643 39.711203
-8659 6935 6850 0.108467199591529 0.108467199591529 -105.008643 39.711203 -105.0086666 39.7102277
-8660 6850 4706 0.0984536865396038 0.0984536865396038 -105.0086666 39.7102277 -105.0086237 39.7093429
-8661 4706 6936 0.0998638834924626 0.0998638834924626 -105.0086237 39.7093429 -105.0086065 39.7084449
-8662 6936 1757 0.0991299509071506 0.0991299509071506 -105.0086065 39.7084449 -105.0085894 39.7075535
-8664 2103 5985 0.0990139620475444 0.0990139620475444 -104.9269671 39.7811601 -104.9258084 39.7811601
-8665 5985 6937 0.103423317739921 0.103423317739921 -104.9258084 39.7811601 -104.9245981 39.7811601
-8666 6937 6938 0.197320023520399 0.197320023520399 -104.9245981 39.7811601 -104.9222891 39.7811779
-8667 6939 6940 0.0449145362146055 0.0449145362146055 -104.9592691 39.7819637 -104.9587435 39.7819608
-8668 6940 5016 0.051579913616047 0.051579913616047 -104.9587435 39.7819608 -104.9581399 39.7819575
-8670 6941 5111 0.0702390251054822 0.0702390251054822 -104.972039 39.782685 -104.971535 39.782186
-8671 5111 4709 0.111086762480312 0.111086762480312 -104.971535 39.782186 -104.970235 39.782186
-8672 4709 6805 0.12579570489738 0.12579570489738 -104.970235 39.782186 -104.968799 39.7819369
-8673 6805 6942 0.0911912161186586 0.0911912161186586 -104.968799 39.7819369 -104.9677319 39.7819277
-8674 6942 6943 0.0891583873267196 0.0891583873267196 -104.9677319 39.7819277 -104.9666886 39.7819375
-8675 6943 5415 0.0932705447088281 0.0932705447088281 -104.9666886 39.7819375 -104.9655971 39.7819384
-8676 5415 3141 0.0911590609752313 0.0911590609752313 -104.9655971 39.7819384 -104.9645304 39.7819277
-8677 3141 6944 0.0907415627456138 0.0907415627456138 -104.9645304 39.7819277 -104.9634685 39.7819252
-8678 6944 6945 0.0904253930261683 0.0904253930261683 -104.9634685 39.7819252 -104.9624103 39.7819277
-8679 6945 6282 0.0922034833120112 0.0922034833120112 -104.9624103 39.7819277 -104.9613313 39.7819318
-8680 6282 6946 0.0889556226914396 0.0889556226914396 -104.9613313 39.7819318 -104.9602903 39.7819343
-8681 6946 6947 0.115025423362082 0.115025423362082 -104.9602903 39.7819343 -104.9592799 39.7826178
-19720 10629 10630 0.00318458504180934 0.00318458504180934 -105.0042425 39.7342851 -105.0042609 39.7342602
-8684 4222 6948 0.095205143123347 0.095205143123347 -104.9869216 39.781959 -104.9858077 39.7819768
-8685 6948 6949 0.0983217542586648 0.0983217542586648 -104.9858077 39.7819768 -104.9846576 39.7819504
-8686 6949 970 0.0973398284250994 0.0973398284250994 -104.9846576 39.7819504 -104.9835185 39.781945
-8732 6248 6975 0.200150775141685 0.200150775141685 -105.0414185 39.6985547 -105.0413837 39.6967549
-8687 970 6950 0.0518030391212137 0.0518030391212137 -104.9835185 39.781945 -104.9829139 39.7819109
-8688 6950 5288 0.0521176321182923 0.0521176321182923 -104.9829139 39.7819109 -104.9823077 39.7818593
-8689 5288 3153 0.0937167269922867 0.0937167269922867 -104.9823077 39.7818593 -104.981211 39.7818645
-8690 3153 4969 0.095648805014101 0.095648805014101 -104.981211 39.7818645 -104.9800922 39.781891
-8691 4969 6951 0.121296465267735 0.121296465267735 -104.9800922 39.781891 -104.9786733 39.78186
-8717 1073 2508 0.0718764157350201 0.0718764157350201 -105.0096773 39.7790452 -105.0105184 39.7790452
-8692 6951 6952 0.17298014935093 0.17298014935093 -104.9786733 39.78186 -104.9777379 39.7804804
-8694 2653 4114 0.0446473392844233 0.0446473392844233 -104.9518556 39.7819252 -104.9513332 39.7819179
-8695 4114 6503 0.0806749392848293 0.0806749392848293 -104.9513332 39.7819179 -104.9503891 39.7819179
-11460 8268 8269 0.0284404063889237 0.0284404063889237 -104.9407004 39.7790485 -104.9404976 39.7792513
-8696 6503 6953 0.0279965631557129 0.0279965631557129 -104.9503891 39.7819179 -104.9500616 39.7819108
-8698 6779 1327 0.149226176774822 0.149226176774822 -105.0454279 39.7143249 -105.0452398 39.7129907
-8700 4207 6955 0.0359776758472589 0.0359776758472589 -105.0146092 39.7516734 -105.0147293 39.7519835
-8701 6955 6956 0.0798254305300323 0.0798254305300323 -105.0147293 39.7519835 -105.015237 39.752586
-8702 4494 6957 0.0178038045740406 0.0178038045740406 -105.0052335 39.7402363 -105.0052308 39.7403964
-8703 6957 6958 0.00431775087438634 0.00431775087438634 -105.0052308 39.7403964 -105.0052288 39.7404352
-8704 6958 2148 0.120300859607691 0.120300859607691 -105.0052288 39.7404352 -105.0061384 39.7412606
-8705 2148 6960 0.151431823224066 0.151431823224066 -105.0061384 39.7412606 -105.0073809 39.7422311
-8706 6960 6961 0.22023318510828 0.22023318510828 -105.0073809 39.7422311 -105.0086651 39.743948
-8707 6961 6962 0.137151335408755 0.137151335408755 -105.0086651 39.743948 -105.0094763 39.7450121
-8708 6962 6963 0.0242055632480646 0.0242055632480646 -105.0094763 39.7450121 -105.0095744 39.7452163
-8709 6963 2150 0.0925314192010664 0.0925314192010664 -105.0095744 39.7452163 -105.0101838 39.745904
-8710 2150 6964 0.068609567754435 0.068609567754435 -105.0101838 39.745904 -105.0105704 39.7464447
-8712 6808 6965 0.180937589294771 0.180937589294771 -104.9237959 39.7045639 -104.9216912 39.7047247
-8713 6966 761 0.0469463147130834 0.0469463147130834 -105.0064198 39.7790396 -105.0069691 39.779033
-8714 761 4205 0.0748160898012537 0.0748160898012537 -105.0069691 39.779033 -105.0078446 39.779033
-8715 4205 4398 0.0770157906569643 0.0770157906569643 -105.0078446 39.779033 -105.0087458 39.7790264
-8716 4398 1073 0.0796290264805075 0.0796290264805075 -105.0087458 39.7790264 -105.0096773 39.7790452
-8746 6967 5689 0.127751851222379 0.127751851222379 -105.040852 39.7080241 -105.040852 39.7068752
-8719 271 2710 0.601401594481822 0.601401594481822 -105.0214373 39.7400355 -105.0236301 39.7451745
-11825 321 7799 0.115552151499094 0.115552151499094 -105.0159659 39.7510962 -105.0150392 39.7518527
-8720 2710 6969 0.136362355996719 0.136362355996719 -105.0236301 39.7451745 -105.0252247 39.7451495
-8721 6969 6742 0.135618421861975 0.135618421861975 -105.0252247 39.7451495 -105.0268109 39.745157
-8722 6742 6141 0.132822121773709 0.132822121773709 -105.0268109 39.745157 -105.0283644 39.7451504
-8723 6141 4014 0.136061285283967 0.136061285283967 -105.0283644 39.7451504 -105.0299558 39.7451547
-8724 4014 6970 0.13345730315891 0.13345730315891 -105.0299558 39.7451547 -105.0315167 39.7451646
-8725 6970 6971 0.133022272157071 0.133022272157071 -105.0315167 39.7451646 -105.0330722 39.7451387
-8726 6971 6972 0.0472485991851602 0.0472485991851602 -105.0330722 39.7451387 -105.0336248 39.7451433
-8727 6972 3385 0.0819883397602158 0.0819883397602158 -105.0336248 39.7451433 -105.0345837 39.7451514
-8729 6959 6973 0.0390638293285452 0.0390638293285452 -105.0353181 39.7451528 -105.035775 39.7451536
-19721 10630 10622 0.0559555137804764 0.0559555137804764 -105.0042609 39.7342602 -105.0045066 39.7337938
-8731 6974 6248 0.201212600703242 0.201212600703242 -105.0414357 39.7003642 -105.0414185 39.6985547
-8733 6975 1496 0.201553427836696 0.201553427836696 -105.0413837 39.6967549 -105.0413928 39.6949423
-8734 1496 185 0.202686112287629 0.202686112287629 -105.0413928 39.6949423 -105.0413928 39.6931195
-8735 185 1713 0.204711477509581 0.204711477509581 -105.0413928 39.6931195 -105.041058 39.6912966
-8736 1713 6976 0.201975316682274 0.201975316682274 -105.041058 39.6912966 -105.0410323 39.6894803
-8737 6976 1579 0.167005027356132 0.167005027356132 -105.0410323 39.6894803 -105.0411657 39.6879819
-8738 1579 6977 0.309934492691155 0.309934492691155 -105.0411657 39.6879819 -105.0411743 39.6851946
-8739 1105 5871 0.176266848523138 0.176266848523138 -105.0409021 39.716554 -105.0408965 39.7149688
-8740 5871 1323 0.177439022365804 0.177439022365804 -105.0408965 39.7149688 -105.0408805 39.7133731
-8741 1323 1379 0.176412320749863 0.176412320749863 -105.0408805 39.7133731 -105.0408718 39.7117866
-8742 1379 6978 0.0608448771470547 0.0608448771470547 -105.0408718 39.7117866 -105.040895 39.7112397
-8744 6843 4695 0.114533137035158 0.114533137035158 -105.0408778 39.7104804 -105.0408692 39.7094504
-11961 2694 6570 0.292174399102456 0.292174399102456 -104.9834919 39.7552636 -104.981101 39.7571413
-8745 4695 6967 0.15860414860374 0.15860414860374 -105.0408692 39.7094504 -105.040852 39.7080241
-8747 5689 5336 0.153402847395547 0.153402847395547 -105.040852 39.7068752 -105.0408719 39.7054957
-8749 6979 6980 0.0492417429246164 0.0492417429246164 -105.0408435 39.7039169 -105.0408692 39.7034745
-8750 6980 6981 0.0330798745582329 0.0330798745582329 -105.0408692 39.7034745 -105.040852 39.7031773
-8751 6981 6982 0.110138574841473 0.110138574841473 -105.040852 39.7031773 -105.040852 39.7021868
-8756 6986 6701 0.0557097589480938 0.0557097589480938 -104.9873935 39.7422064 -104.9878331 39.7418366
-8757 6701 6987 0.145037158424782 0.145037158424782 -104.9878331 39.7418366 -104.9890246 39.7409082
-8759 6988 648 0.139238555969963 0.139238555969963 -104.9320716 39.7401271 -104.9320748 39.7413793
-8760 648 683 0.0653158999110773 0.0653158999110773 -104.9320748 39.7413793 -104.9320748 39.7419667
-8761 683 6989 0.0669742957793313 0.0669742957793313 -104.9320748 39.7419667 -104.9320802 39.742569
-8762 6989 1988 0.0901527916408211 0.0901527916408211 -104.9320802 39.742569 -104.932067 39.7433797
-8763 1988 1972 0.0388238770836602 0.0388238770836602 -104.932067 39.7433797 -104.9320748 39.7437288
-8764 1972 4588 0.104222260658419 0.104222260658419 -104.9320748 39.7437288 -104.9320576 39.744666
-8765 4588 4594 0.0293535516568484 0.0293535516568484 -104.9320576 39.744666 -104.9320662 39.7449299
-8766 4594 6498 0.0726584855189905 0.0726584855189905 -104.9320662 39.7449299 -104.9320748 39.7455833
-8767 6498 6481 0.0601855426433911 0.0601855426433911 -104.9320748 39.7455833 -104.9320576 39.7461244
-8768 6481 2470 0.141630886586724 0.141630886586724 -104.9320576 39.7461244 -104.932049 39.7473981
-10003 6678 7628 0.0924131784678609 0.0924131784678609 -104.9498214 39.7861927 -104.9487399 39.7861861
-8771 6991 2401 0.344415463633539 0.344415463633539 -104.9317465 39.7717305 -104.9317412 39.7748279
-8772 2401 6992 0.121260728440928 0.121260728440928 -104.9317412 39.7748279 -104.9317318 39.7759184
-8773 6992 6604 0.426798504146684 0.426798504146684 -104.9317318 39.7759184 -104.9316605 39.7797563
-8774 6604 6993 0.0779497578426637 0.0779497578426637 -104.9316605 39.7797563 -104.9316377 39.7804571
-8775 6993 6994 0.328092841207435 0.328092841207435 -104.9316377 39.7804571 -104.9316278 39.7834077
-8776 6994 6997 0.409387625139532 0.409387625139532 -104.9316278 39.7834077 -104.931834 39.787086
-8777 6997 6998 0.0280465218891248 0.0280465218891248 -104.931834 39.787086 -104.931634 39.787286
-8778 6998 6999 0.240899685742567 0.240899685742567 -104.931634 39.787286 -104.9318001 39.7894487
-8780 7001 7002 0.172502393042501 0.172502393042501 -104.9316416 39.7162506 -104.9316252 39.7178019
-8781 7002 2338 0.177215228547836 0.177215228547836 -104.9316252 39.7178019 -104.9316115 39.7193956
-8782 2338 7003 0.175043780881437 0.175043780881437 -104.9316115 39.7193956 -104.9316056 39.7209698
-8783 7003 4782 0.243888745485023 0.243888745485023 -104.9316056 39.7209698 -104.9316237 39.7231631
-8784 4782 6558 0.132880580598771 0.132880580598771 -104.9316237 39.7231631 -104.9316139 39.7243581
-8785 6558 7004 0.106726338328234 0.106726338328234 -104.9316139 39.7243581 -104.9316074 39.7253179
-8787 2471 5909 0.20581191299575 0.20581191299575 -104.9316893 39.7473987 -104.9316976 39.7492496
-8789 7005 797 0.197387527656916 0.197387527656916 -104.931694 39.751069 -104.9317111 39.7528441
-10028 5604 7642 0.0520984767564003 0.0520984767564003 -105.0016005 39.7273224 -105.0022097 39.7273219
-8790 797 7006 0.203747525811746 0.203747525811746 -104.9317111 39.7528441 -104.9316943 39.7546764
-8793 7007 7008 0.196982052931457 0.196982052931457 -104.9317157 39.7565591 -104.9317193 39.7583306
-8794 7008 3062 0.205201724322207 0.205201724322207 -104.9317193 39.7583306 -104.9317072 39.760176
-8795 3062 7009 0.184895139192435 0.184895139192435 -104.9317072 39.760176 -104.9317039 39.7618388
-8796 7009 7010 0.0217892666308482 0.0217892666308482 -104.9317039 39.7618388 -104.9318494 39.7619997
-8798 7011 7012 0.200694925007541 0.200694925007541 -104.93161 39.725617 -104.9316338 39.7274218
-8799 7012 6367 0.0706060127631708 0.0706060127631708 -104.9316338 39.7274218 -104.9316211 39.7280567
-8800 6367 7013 0.13113311504647 0.13113311504647 -104.9316211 39.7280567 -104.9316269 39.729236
-8801 7013 5949 0.203040029193448 0.203040029193448 -104.9316269 39.729236 -104.9315933 39.7310618
-11962 6570 4451 0.149457420972406 0.149457420972406 -104.981101 39.7571413 -104.9798733 39.7580983
-8802 5949 5141 0.190833355605879 0.190833355605879 -104.9315933 39.7310618 -104.931599 39.732778
-8804 2236 4909 0.189094446681925 0.189094446681925 -104.9314966 39.732987 -104.9315358 39.7346873
-8805 4909 6613 0.199822606976101 0.199822606976101 -104.9315358 39.7346873 -104.9314781 39.7364838
-8806 6613 7014 0.196131290300381 0.196131290300381 -104.9314781 39.7364838 -104.9315168 39.7382474
-8807 7014 7015 0.207545863379423 0.207545863379423 -104.9315168 39.7382474 -104.9315223 39.7401139
-10052 7653 1099 0.0482102658012733 0.0482102658012733 -105.0400098 39.7282525 -105.0405735 39.7282472
-8809 4072 6057 0.192026411520301 0.192026411520301 -105.0310648 39.7838975 -105.0310367 39.7856243
-20532 10847 10848 0.0340308021704454 0.0340308021704454 -105.0229893 39.7608356 -105.0233869 39.7608513
-8810 6057 5797 0.200508266391225 0.200508266391225 -105.0310367 39.7856243 -105.031046 39.7874275
-8812 7016 7017 0.20408918142509 0.20408918142509 -105.030967 39.729303 -105.0309776 39.7311384
-8813 7017 6590 0.201086157953578 0.201086157953578 -105.0309776 39.7311384 -105.0309859 39.7329468
-8814 6590 7018 0.202602619918689 0.202602619918689 -105.0309859 39.7329468 -105.0310033 39.7347688
-8816 7019 4577 0.129538344988774 0.129538344988774 -105.0314796 39.7403377 -105.0315052 39.7415025
-8817 4577 6441 0.138680608354748 0.138680608354748 -105.0315052 39.7415025 -105.0314863 39.7427496
-8818 6441 5293 0.134070515766336 0.134070515766336 -105.0314863 39.7427496 -105.0315166 39.7439551
-8819 5293 6970 0.13449026404854 0.13449026404854 -105.0315166 39.7439551 -105.0315167 39.7451646
-8820 6970 13 0.134902446032247 0.134902446032247 -105.0315167 39.7451646 -105.0315114 39.7463778
-8822 7020 382 0.124884712447894 0.124884712447894 -105.0315108 39.746461 -105.0315032 39.7475841
-8823 382 7021 0.135229787557418 0.135229787557418 -105.0315032 39.7475841 -105.0315281 39.7488001
-8824 7021 7022 0.132193897477211 0.132193897477211 -105.0315281 39.7488001 -105.0315597 39.7499887
-8826 7023 7024 0.137222417835135 0.137222417835135 -105.0315207 39.751179 -105.0315379 39.752413
-8827 7024 7025 0.130431649234377 0.130431649234377 -105.0315379 39.752413 -105.031538 39.753586
-8828 7025 7026 0.138849105164774 0.138849105164774 -105.031538 39.753586 -105.0315379 39.7548347
-8830 6206 7027 0.182945185531037 0.182945185531037 -105.0312569 39.7260772 -105.031276 39.7277224
-8831 7027 7028 0.175756239821697 0.175756239821697 -105.031276 39.7277224 -105.0312846 39.729303
-20483 10830 10831 0.0908860058291454 0.0908860058291454 -105.0204376 39.7583647 -105.0193747 39.7583443
-8833 7029 7030 0.203242108673725 0.203242108673725 -105.0322588 39.7548413 -105.0322599 39.7566691
-8834 7030 7031 0.150413392817758 0.150413392817758 -105.0322599 39.7566691 -105.0322607 39.7580218
-8835 7031 2977 0.0550192556799276 0.0550192556799276 -105.0322607 39.7580218 -105.032261 39.7585166
-8837 657 1886 0.0454008957908892 0.0454008957908892 -105.0322612 39.758985 -105.0322615 39.7593933
-8838 1886 528 0.053551482812009 0.053551482812009 -105.0322615 39.7593933 -105.0322618 39.7598749
-8841 6092 1889 0.0508386682559075 0.0508386682559075 -105.0322556 39.7612283 -105.0322578 39.7616855
-8842 1889 7033 0.0498613554304776 0.0498613554304776 -105.0322578 39.7616855 -105.0322624 39.7621339
-8843 7033 7034 0.00951828955857414 0.00951828955857414 -105.0322624 39.7621339 -105.0322625 39.7622195
-8844 7034 7035 0.036894485571684 0.036894485571684 -105.0322625 39.7622195 -105.0322628 39.7625513
-8845 7035 6085 0.0480584959434146 0.0480584959434146 -105.0322628 39.7625513 -105.0322636 39.7629835
-8847 742 4527 0.0498820470218468 0.0498820470218468 -105.0322639 39.7634453 -105.0322641 39.7638939
-8848 4527 7036 0.0491481642660053 0.0491481642660053 -105.0322641 39.7638939 -105.0322644 39.7643359
-8849 7036 5246 0.0491592800418928 0.0491592800418928 -105.0322644 39.7643359 -105.0322646 39.764778
-8850 5246 7037 0.0481362905740046 0.0481362905740046 -105.0322646 39.764778 -105.0322649 39.7652109
-8851 7037 7038 0.0454453697348376 0.0454453697348376 -105.0322649 39.7652109 -105.0322651 39.7656196
-8852 7038 7039 0.0963504134151864 0.0963504134151864 -105.0322651 39.7656196 -105.0322656 39.7664861
-8853 7039 7040 0.0519319872070824 0.0519319872070824 -105.0322656 39.7664861 -105.0322731 39.7669531
-8854 7040 1663 0.0497523111621545 0.0497523111621545 -105.0322731 39.7669531 -105.0322802 39.7674005
-8855 1663 7041 0.0529510578680093 0.0529510578680093 -105.0322802 39.7674005 -105.0322795 39.7678767
-8856 7041 7042 0.0505381295725577 0.0505381295725577 -105.0322795 39.7678767 -105.0322788 39.7683312
-8857 7042 7043 0.0514848181594461 0.0514848181594461 -105.0322788 39.7683312 -105.0322741 39.7687942
-8858 7043 7044 0.0741692266458179 0.0741692266458179 -105.0322741 39.7687942 -105.0322674 39.7694612
-8861 7046 2493 0.132768776448504 0.132768776448504 -105.0314652 39.7779248 -105.0314566 39.7791188
-20533 10817 10849 0.0041587253937853 0.0041587253937853 -105.0250744 39.7613255 -105.0250742 39.7612881
-8864 2531 1932 0.0596099109005186 0.0596099109005186 -105.0311131 39.7379476 -105.0311255 39.7384836
-8865 1932 7047 0.205921914653592 0.205921914653592 -105.0311255 39.7384836 -105.0311242 39.7403355
-8867 7048 4043 0.179136537042624 0.179136537042624 -105.0312304 39.7165547 -105.031239 39.7181657
-8868 4043 7049 0.176989263158491 0.176989263158491 -105.031239 39.7181657 -105.0312428 39.7197574
-8869 7049 7050 0.100459005094488 0.100459005094488 -105.0312428 39.7197574 -105.0312551 39.7206608
-8871 7051 5531 0.109415807818528 0.109415807818528 -105.031138 39.773086 -105.031138 39.77407
-8872 5531 7052 0.29371056329192 0.29371056329192 -105.031138 39.77407 -105.031078 39.776711
-8874 7053 6824 0.0545745509742182 0.0545745509742182 -105.0315035 39.7694414 -105.0315024 39.7699322
-8875 6824 2424 0.081950775026488 0.081950775026488 -105.0315024 39.7699322 -105.0315008 39.7706692
-8876 2424 7054 0.050315704306832 0.050315704306832 -105.0315008 39.7706692 -105.0315008 39.7711217
-8877 7054 3228 0.0836964212853156 0.0836964212853156 -105.0315008 39.7711217 -105.0315008 39.7718744
-8879 4957 4034 0.0947298154946536 0.0947298154946536 -105.0329814 39.6985547 -105.03299 39.6977028
-8881 7055 5863 0.174726781940175 0.174726781940175 -105.0337024 39.7165547 -105.0336852 39.7149834
-8882 5863 1311 0.179868913340571 0.179868913340571 -105.0336852 39.7149834 -105.0336852 39.7133658
-8883 1311 7056 0.241558820409428 0.241558820409428 -105.0336852 39.7133658 -105.0336594 39.7111935
-8885 7057 1506 0.131503726493835 0.131503726493835 -105.0329041 39.6960716 -105.0332303 39.6949159
-8886 1506 7058 0.131454642278669 0.131454642278669 -105.0332303 39.6949159 -105.0332303 39.6937337
-8888 1059 7059 0.104267738567829 0.104267738567829 -104.9500415 39.7029556 -104.9500388 39.7020179
-10122 3779 7683 0.15407703010384 0.15407703010384 -104.9472954 39.7291251 -104.9472804 39.7305107
-8890 4436 56 0.118965433489173 0.118965433489173 -104.9500303 39.7012585 -104.9500131 39.7001887
-8891 56 5316 0.100608812091724 0.100608812091724 -104.9500131 39.7001887 -104.9500303 39.699284
-8892 5316 3496 0.0998861232245216 0.0998861232245216 -104.9500303 39.699284 -104.9500131 39.6983858
-8893 3496 3665 0.201207219763356 0.201207219763356 -104.9500131 39.6983858 -104.9500131 39.6965763
-8894 3665 7060 0.199611951396181 0.199611951396181 -104.9500131 39.6965763 -104.9500436 39.6947813
-8895 7060 7061 0.203598851492666 0.203598851492666 -104.9500436 39.6947813 -104.9500177 39.6929504
-8896 7061 5840 0.200253664127546 0.200253664127546 -104.9500177 39.6929504 -104.9500299 39.6911495
-8897 5840 267 0.165246780486595 0.165246780486595 -104.9500299 39.6911495 -104.9500299 39.6896634
-8899 7062 7063 0.478103640034168 0.478103640034168 -104.9500436 39.6893239 -104.950296 39.6850286
-8900 7064 5164 0.146200467670157 0.146200467670157 -104.95025 39.7175567 -104.9499442 39.7162631
-8901 5164 6860 0.179928785347538 0.179928785347538 -104.9499442 39.7162631 -104.9499587 39.714645
-8902 6860 7065 0.0135383927129561 0.0135383927129561 -104.9499587 39.714645 -104.9499634 39.7145233
-8903 7065 2385 0.105505653234926 0.105505653234926 -104.9499634 39.7145233 -104.9496422 39.7136072
-8905 3637 7066 0.183542084850882 0.183542084850882 -104.9498644 39.7126594 -104.9498283 39.711009
-8907 5956 7067 0.0986953923423101 0.0986953923423101 -104.9735293 39.7569242 -104.9743469 39.7575509
-8908 7067 3021 0.00874922983807779 0.00874922983807779 -104.9743469 39.7575509 -104.974418 39.7576075
-20416 10767 10781 0.00791916641108638 0.00791916641108638 -105.0239411 39.7605037 -105.0240012 39.7604495
-8910 7068 4380 0.0528744797047038 0.0528744797047038 -104.9748473 39.7579376 -104.9752846 39.7582739
-8911 4380 7069 0.100067477522489 0.100067477522489 -104.9752846 39.7582739 -104.9761123 39.7589103
-8912 7069 7070 0.00503051016222424 0.00503051016222424 -104.9761123 39.7589103 -104.9761539 39.7589423
-8913 7070 7071 0.0533378396892988 0.0533378396892988 -104.9761539 39.7589423 -104.9765951 39.7592815
-8914 7071 7072 0.0517118729985249 0.0517118729985249 -104.9765951 39.7592815 -104.9770228 39.7596104
-8915 7072 7073 0.0528720185185965 0.0528720185185965 -104.9770228 39.7596104 -104.9774602 39.7599466
-8916 7073 7074 0.0524160104100909 0.0524160104100909 -104.9774602 39.7599466 -104.9778937 39.76028
-8917 7074 7075 0.0591259627190951 0.0591259627190951 -104.9778937 39.76028 -104.9783828 39.760656
-8918 7075 7076 0.0472141967853771 0.0472141967853771 -104.9783828 39.760656 -104.9787733 39.7609563
-8919 7076 7077 0.0523938554164358 0.0523938554164358 -104.9787733 39.7609563 -104.9792067 39.7612895
-8920 7077 7078 0.0519698920804767 0.0519698920804767 -104.9792067 39.7612895 -104.9796366 39.76162
-18299 6996 6464 0.157978818539649 0.157978818539649 -105.0409867 39.7766949 -105.041027 39.7752745
-18300 6464 5526 0.155386531700968 0.155386531700968 -105.041027 39.7752745 -105.0410378 39.7738771
-8921 7078 7079 0.0533446665935528 0.0533446665935528 -104.9796366 39.76162 -104.9800778 39.7619593
-8922 7079 6175 0.0539515629761608 0.0539515629761608 -104.9800778 39.7619593 -104.9805241 39.7623024
-8923 6175 7080 0.0522978151475426 0.0522978151475426 -104.9805241 39.7623024 -104.9809567 39.762635
-19723 10628 10634 0.0467495933951474 0.0467495933951474 -105.0039101 39.7341658 -105.0040521 39.7345718
-8924 7080 3310 0.051621129553778 0.051621129553778 -104.9809567 39.762635 -104.9813837 39.7629633
-8925 3310 7081 0.0537939712546602 0.0537939712546602 -104.9813837 39.7629633 -104.9818287 39.7633054
-8926 7081 7082 0.0517442194955157 0.0517442194955157 -104.9818287 39.7633054 -104.9822567 39.7636345
-8957 6821 767 0.155663516472162 0.155663516472162 -105.0121846 39.7039499 -105.012176 39.70255
-8928 6333 7083 0.0368397497726965 0.0368397497726965 -104.9848045 39.7253046 -104.9848713 39.7256319
-8930 7084 756 0.02205451477657 0.02205451477657 -104.985321 39.7750057 -104.9853038 39.7752036
-8931 756 1542 0.146566188527195 0.146566188527195 -104.9853038 39.7752036 -104.9853013 39.7765217
-8933 7085 7086 0.470303961651379 0.470303961651379 -104.9852266 39.7873956 -104.985181 39.791625
-8936 6193 6949 0.198646201862192 0.198646201862192 -104.9846257 39.7801641 -104.9846576 39.7819504
-8937 6949 7088 0.203154460121287 0.203154460121287 -104.9846576 39.7819504 -104.9846662 39.7837774
-8938 7088 7089 0.0315254339634626 0.0315254339634626 -104.9846662 39.7837774 -104.98467 39.7840609
-11963 4451 5499 0.142902063925945 0.142902063925945 -104.9798733 39.7580983 -104.978687 39.7590038
-8939 1547 4267 0.203186762796229 0.203186762796229 -104.9847116 39.7765295 -104.9847077 39.7783568
-8940 4267 281 0.118834586231474 0.118834586231474 -104.9847077 39.7783568 -104.9847034 39.7794255
-8942 4988 5631 0.199717559309749 0.199717559309749 -104.9850453 39.7165375 -104.9850024 39.7183333
-8943 5631 2363 0.114164400355602 0.114164400355602 -104.9850024 39.7183333 -104.9849833 39.7193599
-8944 2363 4145 0.172388156251151 0.172388156251151 -104.9849833 39.7193599 -104.9849945 39.7209102
-8945 4145 4750 0.181329134759237 0.181329134759237 -104.9849945 39.7209102 -104.9850078 39.7225409
-8946 4750 7090 0.0742131518569267 0.0742131518569267 -104.9850078 39.7225409 -104.9850136 39.7232083
-8947 7090 6563 0.101353119972535 0.101353119972535 -104.9850136 39.7232083 -104.9850303 39.7241197
-8949 561 652 0.180277903435168 0.180277903435168 -104.984845 39.7400568 -104.9848243 39.741678
-8950 652 7091 0.1782898608686 0.1782898608686 -104.9848243 39.741678 -104.9848475 39.7432813
-8951 7091 4618 0.177690137841113 0.177690137841113 -104.9848475 39.7432813 -104.9848531 39.7448793
-8952 4618 6484 0.148000947434632 0.148000947434632 -104.9848531 39.7448793 -104.9848486 39.7462103
-8953 6484 3683 0.147902463423831 0.147902463423831 -104.9848486 39.7462103 -104.9848394 39.7475404
-8955 7092 562 0.138318567115304 0.138318567115304 -104.9848557 39.7385982 -104.9848447 39.7398421
-14765 7355 5462 0.177046926118077 0.177046926118077 -104.9804554 39.7400222 -104.9804447 39.73843
-8958 767 6719 0.219350766482543 0.219350766482543 -105.012176 39.70255 -105.0125794 39.7006019
-8959 6719 6005 0.0551645975375965 0.0551645975375965 -105.0125794 39.7006019 -105.0128712 39.7001595
-8961 7093 7094 0.0134618314671123 0.0134618314671123 -105.000125 39.7424805 -105.00026 39.7424182
-8962 7094 7095 0.0768336523164077 0.0768336523164077 -105.00026 39.7424182 -105.0010418 39.7420775
-8964 4351 7096 0.187825105408858 0.187825105408858 -104.9417876 39.7564997 -104.9418048 39.7581888
-8966 5169 7097 0.173957232527163 0.173957232527163 -104.9413494 39.7162383 -104.9413358 39.7178027
-8967 7097 2358 0.178391537286392 0.178391537286392 -104.9413358 39.7178027 -104.9413272 39.719407
-8968 2358 4158 0.173186099094122 0.173186099094122 -104.9413272 39.719407 -104.9413274 39.7209645
-8969 4158 4745 0.175498953556533 0.175498953556533 -104.9413274 39.7209645 -104.9413272 39.7225428
-8970 4745 6540 0.175479189908249 0.175479189908249 -104.9413272 39.7225428 -104.9413381 39.7241209
-8971 6540 7098 0.165132887334241 0.165132887334241 -104.9413381 39.7241209 -104.9413186 39.7256059
-8974 900 4481 0.13673901951185 0.13673901951185 -104.9417276 39.7644767 -104.9417177 39.7657064
-8975 4481 2805 0.133564794339907 0.133564794339907 -104.9417177 39.7657064 -104.9417 39.7669075
-8976 2805 5271 0.130621351715569 0.130621351715569 -104.9417 39.7669075 -104.9417049 39.7680822
-8977 5271 6911 0.123597927289001 0.123597927289001 -104.9417049 39.7680822 -104.9416922 39.7691937
-8978 6911 7100 0.15221685519733 0.15221685519733 -104.9416922 39.7691937 -104.9417016 39.7705626
-8979 7100 6360 0.259362269049004 0.259362269049004 -104.9417016 39.7705626 -104.9416989 39.7728951
-8981 7102 704 0.204412961923 0.204412961923 -104.9418797 39.7401097 -104.9419371 39.7419475
-19726 10627 10635 0.0226092820114286 0.0226092820114286 -105.0051511 39.7346116 -105.0048867 39.7346105
-8984 7103 1210 0.168411442672594 0.168411442672594 -104.9418336 39.7256059 -104.9418512 39.7271204
-8985 1210 7104 0.0210253069731913 0.0210253069731913 -104.9418512 39.7271204 -104.9418336 39.727309
-8986 7104 3769 0.199568149574658 0.199568149574658 -104.9418336 39.727309 -104.9418526 39.7291037
-8987 3769 7105 0.154728508227155 0.154728508227155 -104.9418526 39.7291037 -104.9418583 39.7304952
-8988 7105 960 0.176377624617973 0.176377624617973 -104.9418583 39.7304952 -104.9418349 39.7320813
-8989 960 7106 0.174688777733473 0.174688777733473 -104.9418349 39.7320813 -104.9418263 39.7336523
-8990 7106 4897 0.160532597504136 0.160532597504136 -104.9418263 39.7336523 -104.9418217 39.735096
-8991 4897 7107 0.182971792068578 0.182971792068578 -104.9418217 39.735096 -104.9418165 39.7367415
-8992 7107 5494 0.175655210225522 0.175655210225522 -104.9418165 39.7367415 -104.9418112 39.7383212
-8994 7108 7109 0.103100291492917 0.103100291492917 -105.0251569 39.7347553 -105.0263626 39.7347585
-8995 7109 7110 0.101964294660044 0.101964294660044 -105.0263626 39.7347585 -105.027555 39.7347529
-8998 7112 6130 0.00642185713601216 0.00642185713601216 -105.0286006 39.7347486 -105.0286757 39.7347484
-8999 6130 3973 0.100482235790598 0.100482235790598 -105.0286757 39.7347484 -105.0298507 39.7347596
-9000 3973 7018 0.0985643830580019 0.0985643830580019 -105.0298507 39.7347596 -105.0310033 39.7347688
-9001 7018 1404 0.0976294798550341 0.0976294798550341 -105.0310033 39.7347688 -105.0321449 39.734782
-9002 1404 7113 0.0934722476940573 0.0934722476940573 -105.0321449 39.734782 -105.033238 39.734786
-9003 7113 3377 0.114974498647875 0.114974498647875 -105.033238 39.734786 -105.0345825 39.7347754
-9004 3377 5719 0.0923374297912636 0.0923374297912636 -105.0345825 39.7347754 -105.0355549 39.7344143
-9006 4633 4552 0.211900461491767 0.211900461491767 -105.0192915 39.7347429 -105.0217376 39.7344378
-9008 7114 1219 0.0873426128412716 0.0873426128412716 -105.0113249 39.7352378 -105.0123463 39.7352444
-9009 1219 7115 0.154859667381265 0.154859667381265 -105.0123463 39.7352444 -105.0141573 39.7352378
-9011 128 4195 0.0990809801322014 0.0990809801322014 -105.0065998 39.7352916 -105.0077585 39.7352875
-9012 4195 2526 0.225168737431611 0.225168737431611 -105.0077585 39.7352875 -105.0103699 39.7355479
-9015 7118 7119 0.0484685816363468 0.0484685816363468 -104.9975929 39.7352666 -104.9981597 39.7352703
-9016 7119 6647 0.0431240450937402 0.0431240450937402 -104.9981597 39.7352703 -104.998664 39.7352736
-9017 6647 7120 0.0651283567093235 0.0651283567093235 -104.998664 39.7352736 -104.9994256 39.7352803
-9020 7121 5612 0.0589161599786899 0.0589161599786899 -105.000878 39.7352858 -105.001567 39.735285
-9021 5612 7122 0.0519812671049742 0.0519812671049742 -105.001567 39.735285 -105.0021749 39.735285
-9022 7122 3734 0.0556068739901258 0.0556068739901258 -105.0021749 39.735285 -105.0028252 39.7352849
-9024 4852 7123 0.126059374848785 0.126059374848785 -104.987369 39.7352666 -104.9888432 39.7352618
-9025 7123 7124 0.118149722641793 0.118149722641793 -104.9888432 39.7352618 -104.9902249 39.7352572
-9026 7124 7125 0.121835161075312 0.121835161075312 -104.9902249 39.7352572 -104.9916497 39.7352526
-9027 7125 7126 0.110094663779518 0.110094663779518 -104.9916497 39.7352526 -104.9929372 39.7352483
-9028 7126 4678 0.101155068622002 0.101155068622002 -104.9929372 39.7352483 -104.99412 39.7352636
-9029 4678 4925 0.0375558738681089 0.0375558738681089 -104.99412 39.7352636 -104.9945592 39.735263
-9031 7127 5718 0.122304701667431 0.122304701667431 -105.0369772 39.7339305 -105.0356487 39.734338
-9033 7129 7130 0.00755996146089403 0.00755996146089403 -105.0369832 39.7347877 -105.0370687 39.7347704
-11437 7984 8034 0.589388539362218 0.589388539362218 -105.0218262 39.7840053 -105.0287237 39.7840235
-9034 7130 7131 0.0405147672355999 0.0405147672355999 -105.0370687 39.7347704 -105.0375424 39.7347779
-15917 9748 9104 0.13371062185673 0.13371062185673 -105.0432496 39.7156399 -105.0421714 39.7165106
-9036 7132 7133 0.0505601360898234 0.0505601360898234 -105.0381234 39.7347872 -105.0387146 39.7347945
-9037 7133 7134 0.050337833066874 0.050337833066874 -105.0387146 39.7347945 -105.0393032 39.7348018
-9039 2563 2043 0.341755774769512 0.341755774769512 -104.9865077 39.7643898 -104.983686 39.7665674
-9040 2043 4280 0.587618591665046 0.587618591665046 -104.983686 39.7665674 -104.97885 39.7703237
-9041 4280 2317 0.145996435168453 0.145996435168453 -104.97885 39.7703237 -104.977649 39.7712574
-9042 2317 7135 0.26875426467805 0.26875426467805 -104.977649 39.7712574 -104.9754213 39.7729633
-9044 4276 6167 0.145395831525207 0.145395831525207 -104.9744288 39.7737425 -104.9732245 39.7746661
-9045 6167 7136 0.583394412429138 0.583394412429138 -104.9732245 39.7746661 -104.9684185 39.7783922
-9046 7136 7137 0.0430989040252276 0.0430989040252276 -104.9684185 39.7783922 -104.9680592 39.7786642
-9048 7138 7139 0.17847978963111 0.17847978963111 -104.9721501 39.7400093 -104.9721564 39.7416144
-9049 7139 665 0.00426988518248375 0.00426988518248375 -104.9721564 39.7416144 -104.9721564 39.7416528
-9050 665 7140 0.0039363004033923 0.0039363004033923 -104.9721564 39.7416528 -104.9721564 39.7416882
-9051 7140 7141 0.126828000444838 0.126828000444838 -104.9721564 39.7416882 -104.9721376 39.7428287
-9052 7141 7142 0.0463243816448395 0.0463243816448395 -104.9721376 39.7428287 -104.9721403 39.7432453
-9053 7142 4606 0.175854779813893 0.175854779813893 -104.9721403 39.7432453 -104.9721399 39.7448268
-13036 8929 8930 0.492762775909981 0.492762775909981 -104.9903693 39.7822705 -104.9961216 39.7819588
-9054 4606 2885 0.129583918723674 0.129583918723674 -104.9721399 39.7448268 -104.9724659 39.7459649
-9056 818 3559 0.139007675873083 0.139007675873083 -104.9721439 39.7532392 -104.9721334 39.7544893
-9057 3559 5633 0.138607438022671 0.138607438022671 -104.9721334 39.7544893 -104.9721228 39.7557358
-9060 5632 7143 0.0971697431213832 0.0971697431213832 -104.9727182 39.7557338 -104.9721228 39.7564782
-9061 7143 4337 0.0573209846859246 0.0573209846859246 -104.9721228 39.7564782 -104.9721228 39.7569937
-9062 4337 6336 0.137619327969477 0.137619327969477 -104.9721228 39.7569937 -104.9721098 39.7582313
-9063 6336 3051 0.138690015537613 0.138690015537613 -104.9721098 39.7582313 -104.9721269 39.7594785
-9064 3051 7144 0.13740372400277 0.13740372400277 -104.9721269 39.7594785 -104.9721245 39.7607142
-9065 7144 7145 0.00531536492655497 0.00531536492655497 -104.9721245 39.7607142 -104.9721251 39.760762
-9066 7145 7146 0.138359891845979 0.138359891845979 -104.9721251 39.760762 -104.9721238 39.7620063
-9069 873 4461 0.138000198054367 0.138000198054367 -104.9721084 39.7645147 -104.972125 39.7657557
-9070 4461 2781 0.134827246932882 0.134827246932882 -104.972125 39.7657557 -104.9721138 39.7669682
-9073 6941 5768 0.263560531238909 0.263560531238909 -104.972039 39.782685 -104.974836 39.781686
-9074 5768 7148 0.00867578094755507 0.00867578094755507 -104.974836 39.781686 -104.974928 39.781719
-9075 6325 4168 0.192770537182593 0.192770537182593 -104.9717416 39.7183547 -104.9717542 39.7200883
-9076 4168 4753 0.208190261859574 0.208190261859574 -104.9717542 39.7200883 -104.971754 39.7219606
-9077 4753 6544 0.199662965025148 0.199662965025148 -104.971754 39.7219606 -104.9717626 39.7237562
-9078 6544 7149 0.203286576405629 0.203286576405629 -104.9717626 39.7237562 -104.9717634 39.7255844
-9079 7149 7150 0.188877376950956 0.188877376950956 -104.9717634 39.7255844 -104.9717727 39.727283
-9080 7150 3796 0.199750569153682 0.199750569153682 -104.9717727 39.727283 -104.9717723 39.7290794
-9081 3796 5939 0.152615142478991 0.152615142478991 -104.9717723 39.7290794 -104.9717744 39.7304519
-9082 5939 940 0.17776127985835 0.17776127985835 -104.9717744 39.7304519 -104.9717901 39.7320505
-9083 940 2224 0.184599395002716 0.184599395002716 -104.9717901 39.7320505 -104.9718055 39.7337106
-9084 2224 4874 0.160770298676863 0.160770298676863 -104.9718055 39.7337106 -104.9718399 39.7351562
-9085 4874 7151 0.191866995309803 0.191866995309803 -104.9718399 39.7351562 -104.9718371 39.7368817
-9086 7151 5472 0.170431656658562 0.170431656658562 -104.9718371 39.7368817 -104.9718493 39.7384144
-9087 5472 7152 0.177051030738846 0.177051030738846 -104.9718493 39.7384144 -104.971867 39.7400066
-9089 7153 7154 0.0893451644905786 0.0893451644905786 -104.9594535 39.725616 -104.9594545 39.7248125
-9090 7154 6170 0.0753374734775839 0.0753374734775839 -104.9594545 39.7248125 -104.9594375 39.7241351
-9091 6170 4764 0.177646502224828 0.177646502224828 -104.9594375 39.7241351 -104.959446 39.7225375
-9092 4764 4150 0.173084945690311 0.173084945690311 -104.959446 39.7225375 -104.9594242 39.720981
-9094 2344 7155 0.117646857783728 0.117646857783728 -104.9594135 39.719411 -104.9592982 39.7183567
-9095 7155 7156 0.0188390787773898 0.0188390787773898 -104.9592982 39.7183567 -104.9592945 39.7181873
-9096 7156 7157 0.234434662963778 0.234434662963778 -104.9592945 39.7181873 -104.9592821 39.716079
-9097 7157 7158 0.0252454738977112 0.0252454738977112 -104.9592821 39.716079 -104.9592875 39.715852
-9100 7159 7160 0.136141908223257 0.136141908223257 -105.0381363 39.7487551 -105.0381214 39.7499794
-9101 7160 7161 0.134175303690261 0.134175303690261 -105.0381214 39.7499794 -105.038138 39.751186
-9102 7161 5540 0.104957650418394 0.104957650418394 -105.038138 39.751186 -105.0381637 39.7521297
-9103 5540 2408 0.0972515972300324 0.0972515972300324 -105.0381637 39.7521297 -105.03816 39.7530043
-9104 2408 4293 0.0986699082335262 0.0986699082335262 -105.03816 39.7530043 -105.0381466 39.7538916
-9105 4293 7163 0.053830719074408 0.053830719074408 -105.0381466 39.7538916 -105.0381509 39.7543757
-9107 7164 7165 0.0631810706690825 0.0631810706690825 -105.0381551 39.754855 -105.0381565 39.7554232
-9108 7165 2982 0.341967827784909 0.341967827784909 -105.0381565 39.7554232 -105.0381258 39.7584985
-9109 2982 7166 0.203801982791161 0.203801982791161 -105.0381258 39.7584985 -105.038164 39.7603311
-9110 7166 7167 0.199088364823678 0.199088364823678 -105.038164 39.7603311 -105.0381183 39.7621212
-9111 7167 7168 0.00801722711592813 0.00801722711592813 -105.0381183 39.7621212 -105.0381187 39.7621933
-9112 7168 7169 0.0420988990456398 0.0420988990456398 -105.0381187 39.7621933 -105.0381211 39.7625719
-9113 7169 7170 0.153973329045923 0.153973329045923 -105.0381211 39.7625719 -105.0381296 39.7639566
-9114 7170 6877 0.206323620437175 0.206323620437175 -105.0381296 39.7639566 -105.0381386 39.7658121
-9115 6877 1688 0.202556013709455 0.202556013709455 -105.0381386 39.7658121 -105.038125 39.7676337
-10335 2984 7779 0.0471482180711068 0.0471482180711068 -105.039304 39.7584901 -105.0393085 39.7589141
-9116 1688 7171 0.203959165094635 0.203959165094635 -105.038125 39.7676337 -105.0381554 39.7694678
-9117 7171 2434 0.200457262733771 0.200457262733771 -105.0381554 39.7694678 -105.038137 39.7712705
-9118 2434 7172 0.202529539970889 0.202529539970889 -105.038137 39.7712705 -105.0381026 39.7730917
-9119 7172 6459 0.289084578375032 0.289084578375032 -105.0381026 39.7730917 -105.0381018 39.7756915
-19730 5374 10637 0.0120223368882016 0.0120223368882016 -105.0044526 39.7337074 -105.0044418 39.7338152
-9120 6459 7173 0.114101346723939 0.114101346723939 -105.0381018 39.7756915 -105.0380903 39.7767176
-9121 7173 7174 0.184116579370581 0.184116579370581 -105.0380903 39.7767176 -105.0380913 39.7783734
-9122 7174 7175 0.203885371802177 0.203885371802177 -105.0380913 39.7783734 -105.0380683 39.7802069
-9123 7175 7176 0.042345014713444 0.042345014713444 -105.0380683 39.7802069 -105.0380731 39.7805877
-9124 7176 7177 0.0543545796747623 0.0543545796747623 -105.0380731 39.7805877 -105.0380792 39.7810765
-9125 7177 1424 0.112240471555906 0.112240471555906 -105.0380792 39.7810765 -105.0380823 39.7820859
-9128 7179 6066 0.193267920890686 0.193267920890686 -105.0380848 39.7838741 -105.0380858 39.7856122
-9129 6066 2546 0.202503184194707 0.202503184194707 -105.0380858 39.7856122 -105.0380674 39.7874333
-9130 2546 7180 0.41050413821522 0.41050413821522 -105.0380674 39.7874333 -105.038093 39.791125
-9131 6215 7181 0.274932291342238 0.274932291342238 -105.0383676 39.7257784 -105.0383822 39.7282509
-9132 7181 7182 0.263103709588239 0.263103709588239 -105.0383822 39.7282509 -105.0384019 39.730617
-9133 7182 7183 0.130644941399459 0.130644941399459 -105.0384019 39.730617 -105.0383934 39.7317919
-9134 2594 5185 0.17867940782894 0.17867940782894 -105.0383715 39.7229322 -105.0383678 39.7245391
-9137 5066 4054 0.176950276628118 0.176950276628118 -105.0384889 39.7165547 -105.0385175 39.7181459
-9138 4054 7184 0.19508037930475 0.19508037930475 -105.0385175 39.7181459 -105.0385175 39.7199003
-19295 10466 10470 0.0590667450333129 0.0590667450333129 -104.988856 39.7399993 -104.988856 39.7394681
-9139 7184 1855 0.159486883286254 0.159486883286254 -105.0385175 39.7199003 -105.0385175 39.7213346
-9140 1855 2595 0.177991984486361 0.177991984486361 -105.0385175 39.7213346 -105.038507 39.7229353
-9142 7132 7185 0.200740739267956 0.200740739267956 -105.0381234 39.7347872 -105.0380981 39.7365924
-9144 317 5720 0.10120960072344 0.10120960072344 -105.0345742 39.7830397 -105.0357487 39.7831573
-9146 7186 7178 0.0998150102985703 0.0998150102985703 -105.0369189 39.7832402 -105.0380864 39.7832692
-9147 7178 7187 0.0486556483534758 0.0486556483534758 -105.0380864 39.7832692 -105.0386558 39.7832674
-9148 7187 7188 0.0504244958733159 0.0504244958733159 -105.0386558 39.7832674 -105.0392459 39.7832655
-9149 7188 6720 0.0492257170939005 0.0492257170939005 -105.0392459 39.7832655 -105.0398219 39.7832727
-9150 6720 1139 0.0498554245278369 0.0498554245278369 -105.0398219 39.7832727 -105.0404053 39.7832671
-9151 1139 6900 0.0496729718772752 0.0496729718772752 -105.0404053 39.7832671 -105.0409865 39.7832584
-9152 6900 7189 0.0498269762893686 0.0498269762893686 -105.0409865 39.7832584 -105.0415695 39.7832496
-9153 7189 7190 0.0493080365100491 0.0493080365100491 -105.0415695 39.7832496 -105.0421451 39.7832183
-9154 7190 3869 0.0507905077365378 0.0507905077365378 -105.0421451 39.7832183 -105.042738 39.783186
-9155 3869 7191 0.0511248031667964 0.0511248031667964 -105.042738 39.783186 -105.0433363 39.783186
-9156 7191 5583 0.0514153335527058 0.0514153335527058 -105.0433363 39.783186 -105.043938 39.783186
-9158 6374 7192 0.0508291685906189 0.0508291685906189 -104.9453733 39.6929492 -104.9447793 39.6929426
-9159 7192 4828 0.0505211822659055 0.0505211822659055 -104.9447793 39.6929426 -104.9441889 39.692936
-9160 4828 7193 0.0991435070786191 0.0991435070786191 -104.9441889 39.692936 -104.9430302 39.6929294
-9161 7193 7194 0.0991520630524694 0.0991520630524694 -104.9430302 39.6929294 -104.9418714 39.692936
-9162 7194 7195 0.0477883926406413 0.0477883926406413 -104.9418714 39.692936 -104.9413129 39.6929321
-9163 7195 7196 0.0494484339552123 0.0494484339552123 -104.9413129 39.6929321 -104.940735 39.692928
-9164 7196 7197 0.0162046310747774 0.0162046310747774 -104.940735 39.692928 -104.9405457 39.6929325
-9166 7198 6674 0.0990044216409842 0.0990044216409842 -104.9373575 39.6929534 -104.9362004 39.6929564
-9167 6674 3118 0.097669089391913 0.097669089391913 -104.9362004 39.6929564 -104.9350589 39.6929564
-9168 3118 7199 0.284505571449601 0.284505571449601 -104.9350589 39.6929564 -104.931734 39.692987
-9169 7199 6008 0.094118222257641 0.094118222257641 -104.931734 39.692987 -104.930634 39.692987
-9170 6008 2844 0.0930401433253343 0.0930401433253343 -104.930634 39.692987 -104.9295466 39.6929872
-9171 2844 3493 0.0866696350082772 0.0866696350082772 -104.9295466 39.6929872 -104.9285338 39.6930004
-9172 3493 5349 0.0889131869713594 0.0889131869713594 -104.9285338 39.6930004 -104.9274952 39.692974
-9174 5392 2946 0.0903397575627338 0.0903397575627338 -104.926491 39.6929872 -104.9254353 39.692974
-9175 2946 6812 0.0903546565690543 0.0903546565690543 -104.9254353 39.692974 -104.9243796 39.6929938
-9176 6812 1813 0.0889131954631002 0.0889131954631002 -104.9243796 39.6929938 -104.923341 39.6929674
-9179 7201 7202 0.0514316470718889 0.0514316470718889 -104.9868436 39.6930068 -104.9862426 39.6930154
-9180 7202 571 0.0452247620537137 0.0452247620537137 -104.9862426 39.6930154 -104.9857141 39.6930216
-9181 571 4984 0.0498774301127379 0.0498774301127379 -104.9857141 39.6930216 -104.9851312 39.6930164
-9182 4984 7203 0.0499341834444621 0.0499341834444621 -104.9851312 39.6930164 -104.9845476 39.6930151
-9183 7203 7204 0.048540539361363 0.048540539361363 -104.9845476 39.6930151 -104.9839803 39.693012
-9184 7204 7205 0.049454954432791 0.049454954432791 -104.9839803 39.693012 -104.9834023 39.693013
-9185 7205 7206 0.0536988191890685 0.0536988191890685 -104.9834023 39.693013 -104.9827747 39.693012
-9186 7206 7207 0.0531339953218732 0.0531339953218732 -104.9827747 39.693012 -104.9821537 39.693012
-9188 7208 7209 0.0488986834694409 0.0488986834694409 -104.9815692 39.6930097 -104.9809977 39.6930099
-10408 7087 974 0.0520701135747565 0.0520701135747565 -104.9846429 39.7873956 -104.9840335 39.7873956
-9190 3616 7210 0.0490025655343953 0.0490025655343953 -104.9804184 39.6930078 -104.9798457 39.6930109
-9191 7210 7211 0.0492346778344629 0.0492346778344629 -104.9798457 39.6930109 -104.9792704 39.6930016
-9192 7211 6627 0.0474835705848566 0.0474835705848566 -104.9792704 39.6930016 -104.9787159 39.6929842
-9193 6627 7212 0.0259857221754392 0.0259857221754392 -104.9787159 39.6929842 -104.9784122 39.6929827
-9195 7213 2937 0.0797219985274474 0.0797219985274474 -104.9260704 39.7047422 -104.9251387 39.7047572
-9197 4927 7214 0.0675624031978383 0.0675624031978383 -104.9964542 39.7378444 -104.9964568 39.738452
-9198 7214 7215 0.172837829649445 0.172837829649445 -104.9964568 39.738452 -104.9964757 39.7400063
-9199 7215 7216 0.0152456900319388 0.0152456900319388 -104.9964757 39.7400063 -104.9964776 39.7401434
-9201 7217 7218 0.150068688599712 0.150068688599712 -104.9963567 39.7165938 -104.9963575 39.7179434
-9202 7218 3717 0.0523950557178934 0.0523950557178934 -104.9963575 39.7179434 -104.9963578 39.7184146
-9203 3717 7219 0.104026300075926 0.104026300075926 -104.9963578 39.7184146 -104.9963677 39.7193501
-9204 7219 7220 0.176478214187187 0.176478214187187 -104.9963677 39.7193501 -104.9963617 39.7209372
-9205 7220 2618 0.176744455093666 0.176744455093666 -104.9963617 39.7209372 -104.9963593 39.7225267
-9206 2618 7221 0.0524078444870275 0.0524078444870275 -104.9963593 39.7225267 -104.9963642 39.722998
-9207 7221 5199 0.124408908082812 0.124408908082812 -104.9963642 39.722998 -104.9963759 39.7241168
-9208 5199 6236 0.175254349133775 0.175254349133775 -104.9963759 39.7241168 -104.9963748 39.7256929
-9209 6236 7222 0.181371367707484 0.181371367707484 -104.9963748 39.7256929 -104.9963829 39.727324
-9210 7222 7223 0.17624861030264 0.17624861030264 -104.9963829 39.727324 -104.9964257 39.7289087
-10431 7818 3372 0.256942906695214 0.256942906695214 -104.9257985 39.7038513 -104.9262421 39.7015659
-9211 7223 7224 0.177882160330428 0.177882160330428 -104.9964257 39.7289087 -104.9964124 39.7305084
-9212 7224 6596 0.176655139096338 0.176655139096338 -104.9964124 39.7305084 -104.996445 39.7320969
-9213 6596 7225 0.176764713771947 0.176764713771947 -104.996445 39.7320969 -104.9965056 39.7336859
-9214 7225 7117 0.195263815592674 0.195263815592674 -104.9965056 39.7336859 -104.9968556 39.7354212
-9215 7117 7226 0.162883394969853 0.162883394969853 -104.9968556 39.7354212 -104.9971131 39.7368726
-9217 7227 7228 0.0929813395053153 0.0929813395053153 -104.9964704 39.7584562 -104.9964723 39.7592924
-9218 7228 7229 0.0382886967355643 0.0382886967355643 -104.9964723 39.7592924 -104.996479 39.7596367
-9220 5754 5537 0.136674994706822 0.136674994706822 -104.9960241 39.7730069 -104.9959296 39.7742339
-9222 7230 2419 0.0601608416165443 0.0601608416165443 -104.9960543 39.7699637 -104.9960628 39.7705047
-9224 7231 1877 0.0370441528846065 0.0370441528846065 -104.9903483 39.7057878 -104.9899153 39.7057918
-9225 1877 7232 0.131692111532173 0.131692111532173 -104.9899153 39.7057918 -104.9883759 39.7057847
-9227 7233 7234 0.109254283787097 0.109254283787097 -104.9875581 39.7057416 -104.9862815 39.7057131
-9228 7234 7235 0.0988980977520615 0.0988980977520615 -104.9862815 39.7057131 -104.9851255 39.7057028
-9229 7235 7236 0.100150595242985 0.100150595242985 -104.9851255 39.7057028 -104.9839553 39.705676
-9230 7236 7237 0.0982491727225652 0.0982491727225652 -104.9839553 39.705676 -104.9828076 39.7057088
-9231 7237 7238 0.102801611377818 0.102801611377818 -104.9828076 39.7057088 -104.981606 39.7057212
-9232 7238 3624 0.10072637054969 0.10072637054969 -104.981606 39.7057212 -104.9804286 39.7057129
-9233 3624 7239 0.0490877236423196 0.0490877236423196 -104.9804286 39.7057129 -104.9798548 39.7057161
-9234 7239 7240 0.0506406047895119 0.0506406047895119 -104.9798548 39.7057161 -104.9792633 39.7057342
-9236 7241 7242 0.053434962453162 0.053434962453162 -104.9786816 39.7057151 -104.978057 39.7057102
-9238 7243 2049 0.0999533143701506 0.0999533143701506 -104.9686775 39.7056856 -104.9675091 39.7056815
-9239 2049 6322 0.101276003642563 0.101276003642563 -104.9675091 39.7056815 -104.9663254 39.7056659
-9240 6322 7245 0.101332248433824 0.101332248433824 -104.9663254 39.7056659 -104.9651409 39.7056725
-9241 7245 7246 0.0464773018813961 0.0464773018813961 -104.9651409 39.7056725 -104.9645976 39.7056725
-9242 7246 3478 0.0519094915924 0.0519094915924 -104.9645976 39.7056725 -104.9639908 39.7056725
-9243 3478 7247 0.0444674652348498 0.0444674652348498 -104.9639908 39.7056725 -104.963471 39.7056744
-9244 7247 6076 0.0542711695249793 0.0542711695249793 -104.963471 39.7056744 -104.9628366 39.7056767
-9245 6076 7248 0.0457685619049607 0.0457685619049607 -104.9628366 39.7056767 -104.9623016 39.7056798
-9246 7248 3693 0.0511581578497335 0.0511581578497335 -104.9623016 39.7056798 -104.9617036 39.7056833
-9247 3693 7249 0.0484213428818718 0.0484213428818718 -104.9617036 39.7056833 -104.9611376 39.7056792
-9248 7249 4568 0.050423249762551 0.050423249762551 -104.9611376 39.7056792 -104.9605482 39.7056749
-9249 4568 7250 0.105671525256593 0.105671525256593 -104.9605482 39.7056749 -104.959313 39.7056659
-9251 3486 5352 0.142707971743977 0.142707971743977 -104.9294222 39.7052339 -104.9277592 39.7051328
-9252 5352 5389 0.0672375375003041 0.0672375375003041 -104.9277592 39.7051328 -104.9269733 39.705141
-9254 6807 7251 0.174038770872886 0.174038770872886 -104.9241221 39.7053959 -104.9220909 39.7054841
-9255 5582 7252 0.0700127444942287 0.0700127444942287 -105.0439618 39.7810973 -105.0431425 39.7811012
-9256 3438 7253 0.0456922323357007 0.0456922323357007 -105.0345914 39.7810741 -105.0351261 39.7810763
-9257 7253 5712 0.0536735809918437 0.0536735809918437 -105.0351261 39.7810763 -105.0357542 39.7810788
-9258 5712 7254 0.0996465050991051 0.0996465050991051 -105.0357542 39.7810788 -105.0369203 39.7810777
-9259 7254 7177 0.0990312619116669 0.0990312619116669 -105.0369203 39.7810777 -105.0380792 39.7810765
-9261 2234 5135 0.107869698056021 0.107869698056021 -104.937292 39.7328682 -104.9373097 39.7338382
-9263 5150 4905 0.0686856789021931 0.0686856789021931 -104.9373129 39.7340572 -104.9372922 39.7346747
-9264 4905 6617 0.200618729294218 0.200618729294218 -104.9372922 39.7346747 -104.9372854 39.7364789
-9265 6617 7255 0.197431040074393 0.197431040074393 -104.9372854 39.7364789 -104.937234 39.738254
-9266 7255 7256 0.208183749937444 0.208183749937444 -104.937234 39.738254 -104.9372502 39.7401262
-9267 7256 645 0.141740585620374 0.141740585620374 -104.9372502 39.7401262 -104.9372542 39.7414009
-9268 645 7257 0.130628958724451 0.130628958724451 -104.9372542 39.7414009 -104.937237 39.7425756
-9269 7257 1991 0.0908850253123808 0.0908850253123808 -104.937237 39.7425756 -104.9372254 39.7433929
-9270 1991 1975 0.0373563291181619 0.0373563291181619 -104.9372254 39.7433929 -104.9372332 39.7437288
-9271 1975 4592 0.133760117820733 0.133760117820733 -104.9372332 39.7437288 -104.9372215 39.7449317
-9272 4592 6479 0.133361447138617 0.133361447138617 -104.9372215 39.7449317 -104.9372075 39.746131
-9273 6479 2465 0.142787478559072 0.142787478559072 -104.9372075 39.746131 -104.9372165 39.7474151
-9275 7258 905 0.276860539558146 0.276860539558146 -104.9368356 39.7619935 -104.9368593 39.7644833
-9276 905 7259 0.128469118479352 0.128469118479352 -104.9368593 39.7644833 -104.936828 39.7656384
-9278 7260 7261 0.202325557275685 0.202325557275685 -104.9371488 39.7256129 -104.93713 39.7274324
-9279 7261 7262 0.200099452464053 0.200099452464053 -104.93713 39.7274324 -104.9370272 39.7292302
-9281 6555 7263 0.106048977208119 0.106048977208119 -104.9371056 39.724358 -104.9371139 39.7253117
-9283 2464 5907 0.204805215249635 0.204805215249635 -104.9373281 39.7474151 -104.9372594 39.7492562
-9284 5907 7264 0.200064951669816 0.200064951669816 -104.9372594 39.7492562 -104.9372465 39.7510554
-9285 7264 792 0.198575253788857 0.198575253788857 -104.9372465 39.7510554 -104.937233 39.7528412
-9286 792 7265 0.203153130979463 0.203153130979463 -104.937233 39.7528412 -104.937233 39.7546682
-20553 10855 10830 0.00226863418878014 0.00226863418878014 -105.020438 39.7583443 -105.0204376 39.7583647
-9287 7265 4356 0.200718125919129 0.200718125919129 -104.937233 39.7546682 -104.93723 39.7564733
-9288 4356 7266 0.203231013450801 0.203231013450801 -104.93723 39.7564733 -104.9372284 39.758301
-9289 7266 3059 0.208369469805255 0.208369469805255 -104.9372284 39.758301 -104.9372198 39.7601749
-9290 3059 7267 0.184116398047724 0.184116398047724 -104.9372198 39.7601749 -104.9371963 39.7618306
-9292 7268 7269 0.172274443384772 0.172274443384772 -104.9373314 39.7162377 -104.937334 39.717787
-9293 7269 7270 0.174965358395498 0.174965358395498 -104.937334 39.717787 -104.9373314 39.7193605
-9294 7270 7271 0.171051925436011 0.171051925436011 -104.9373314 39.7193605 -104.9373374 39.7208988
-9295 7271 4777 0.251271094456806 0.251271094456806 -104.9373374 39.7208988 -104.9371074 39.7231516
-9297 7272 7273 0.142786274588455 0.142786274588455 -104.9405891 39.7425825 -104.9389193 39.7425624
-9298 7273 7257 0.143845033730321 0.143845033730321 -104.9389193 39.7425624 -104.937237 39.7425756
-9299 7257 2012 0.148104007431453 0.148104007431453 -104.937237 39.7425756 -104.9355048 39.7425756
-9300 2012 7274 0.146908840218292 0.146908840218292 -104.9355048 39.7425756 -104.9337866 39.742569
-9303 3209 6121 0.198338421830571 0.198338421830571 -104.9651422 39.7110945 -104.9651409 39.7093108
-9305 1920 7245 0.200452444306493 0.200452444306493 -104.9651495 39.7074752 -104.9651409 39.7056725
-9306 7245 3264 0.201454965709232 0.201454965709232 -104.9651409 39.7056725 -104.965154 39.7038608
-9307 3264 7275 0.199928677430985 0.199928677430985 -104.965154 39.7038608 -104.9651573 39.7020628
-9308 7275 75 0.205218774272454 0.205218774272454 -104.9651573 39.7020628 -104.9651905 39.7002174
-9309 75 3514 0.203667659516003 0.203667659516003 -104.9651905 39.7002174 -104.965228 39.698386
-9310 3514 4256 0.200449218475779 0.200449218475779 -104.965228 39.698386 -104.9652055 39.6965834
-9312 7276 7277 0.199018039984475 0.199018039984475 -104.9652088 39.6947654 -104.9652174 39.6929756
-9314 3099 7278 0.127218718588174 0.127218718588174 -104.9652044 39.7127074 -104.9651186 39.7115652
-9315 7279 7280 0.0142903725965103 0.0142903725965103 -105.0017875 39.7595933 -105.0017017 39.7597036
-9316 7280 7281 0.105207552208829 0.105207552208829 -105.0017017 39.7597036 -105.0005447 39.7600263
-9317 7282 7283 0.0344899807253543 0.0344899807253543 -104.9875556 39.7021328 -104.9871988 39.7019884
-9318 7283 221 0.0709873405596775 0.0709873405596775 -104.9871988 39.7019884 -104.9863694 39.7019694
-9319 221 484 0.00880336166381634 0.00880336166381634 -104.9863694 39.7019694 -104.9862665 39.7019699
-9320 484 7284 0.0467023879280561 0.0467023879280561 -104.9862665 39.7019699 -104.9857206 39.701971
-9321 7284 7285 0.0520434565562666 0.0520434565562666 -104.9857206 39.701971 -104.9851123 39.7019661
-9322 7285 7286 0.0966986010135768 0.0966986010135768 -104.9851123 39.7019661 -104.983982 39.7019687
-9324 7287 7288 0.0474221057340072 0.0474221057340072 -104.9833604 39.7019722 -104.9828061 39.7019753
-9325 7288 7289 0.0544896557893494 0.0544896557893494 -104.9828061 39.7019753 -104.9821695 39.701991
-18313 7291 7292 0.0491935106031602 0.0491935106031602 -105.0324737 39.7711548 -105.0330488 39.7711732
-12266 8623 8624 0.00987394368395642 0.00987394368395642 -105.0065475 39.7556498 -105.006432 39.7556507
-9326 7289 7293 0.050792182381771 0.050792182381771 -104.9821695 39.701991 -104.9815761 39.7020057
-9327 7293 7294 0.0490541601102182 0.0490541601102182 -104.9815761 39.7020057 -104.9810028 39.7020136
-9328 7294 3625 0.0491311379128154 0.0491311379128154 -104.9810028 39.7020136 -104.9804286 39.7020215
-9329 3625 7295 0.0500044548990436 0.0500044548990436 -104.9804286 39.7020215 -104.9798441 39.7020215
-9330 7295 7296 0.0493114932484129 0.0493114932484129 -104.9798441 39.7020215 -104.9792677 39.7020215
-9331 7296 7297 0.0492273088766844 0.0492273088766844 -104.9792677 39.7020215 -104.9786923 39.7020248
-9332 7297 7298 0.0497149327544833 0.0497149327544833 -104.9786923 39.7020248 -104.9781112 39.7020281
-9333 7298 7299 0.052416983039433 0.052416983039433 -104.9781112 39.7020281 -104.9774985 39.7020281
-9334 7299 1775 0.0489179547921138 0.0489179547921138 -104.9774985 39.7020281 -104.9769267 39.7020281
-9335 1775 7300 0.0992252392752366 0.0992252392752366 -104.9769267 39.7020281 -104.9757669 39.7020355
-9338 1523 7301 0.0991304181855472 0.0991304181855472 -104.9745731 39.702049 -104.9734144 39.7020424
-9340 4180 7302 0.159005264658095 0.159005264658095 -104.9922008 39.7021389 -104.9940584 39.7020918
-9342 7303 7304 0.0508070845581107 0.0508070845581107 -104.968686 39.7020471 -104.9680922 39.7020547
-9344 2051 7305 0.0464895652372381 0.0464895652372381 -104.9674661 39.7020628 -104.9669227 39.7020659
-9346 6323 7306 0.0487652334573382 0.0487652334573382 -104.9663246 39.7020694 -104.9657546 39.7020662
-9347 7306 7275 0.0511008721086019 0.0511008721086019 -104.9657546 39.7020662 -104.9651573 39.7020628
-9348 7275 7307 0.0472167292045061 0.0472167292045061 -104.9651573 39.7020628 -104.9646054 39.7020597
-9349 7307 3479 0.0519136696037329 0.0519136696037329 -104.9646054 39.7020597 -104.9639986 39.7020562
-9350 3479 7308 0.0469673771341736 0.0469673771341736 -104.9639986 39.7020562 -104.9634496 39.7020562
-9351 7308 6077 0.0514245726695928 0.0514245726695928 -104.9634496 39.7020562 -104.9628485 39.7020562
-9353 7309 3694 0.0517124258100223 0.0517124258100223 -104.9622856 39.7020498 -104.9616812 39.702043
-9354 3694 7310 0.0465067719763774 0.0465067719763774 -104.9616812 39.702043 -104.9611376 39.7020462
-9355 7310 4569 0.0489536209610463 0.0489536209610463 -104.9611376 39.7020462 -104.9605654 39.7020496
-9356 4569 7311 0.0489635595580148 0.0489635595580148 -104.9605654 39.7020496 -104.9599932 39.7020401
-9357 7311 7312 0.0558091568866214 0.0558091568866214 -104.9599932 39.7020401 -104.959341 39.7020293
-9359 5166 6862 0.178524347295205 0.178524347295205 -104.9485858 39.7162531 -104.9485924 39.7146476
-10575 7382 7866 0.0530283440074436 0.0530283440074436 -105.0337009 39.7197539 -105.0343209 39.7197519
-9361 5665 7313 0.0484754519993524 0.0484754519993524 -104.9486082 39.7033386 -104.9485996 39.7029027
-9362 7313 7314 0.161386441141289 0.161386441141289 -104.9485996 39.7029027 -104.9489488 39.7014764
-9363 7314 57 0.142345062746265 0.142345062746265 -104.9489488 39.7014764 -104.9487429 39.7002061
-9365 3497 7315 0.199650199137315 0.199650199137315 -104.9488372 39.6983858 -104.9488718 39.6965905
-9366 7315 7316 0.20195222577189 0.20195222577189 -104.9488718 39.6965905 -104.9488718 39.6947743
-9368 7317 7318 0.0198371749129227 0.0198371749129227 -104.9558194 39.7180363 -104.9558194 39.7182147
-9369 7318 2347 0.132104544578518 0.132104544578518 -104.9558194 39.7182147 -104.9558328 39.7194027
-9370 2347 4152 0.17573096379452 0.17573096379452 -104.9558328 39.7194027 -104.9558113 39.720983
-9371 4152 4739 0.172852869151079 0.172852869151079 -104.9558113 39.720983 -104.9558154 39.7225375
-9372 4739 6534 0.176755786446123 0.176755786446123 -104.9558154 39.7225375 -104.9558194 39.7241271
-9373 6534 7319 0.165399065875657 0.165399065875657 -104.9558194 39.7241271 -104.9558381 39.7256145
-9376 1193 7321 0.0221951663944447 0.0221951663944447 -104.9555538 39.7271183 -104.9555518 39.7273179
-9377 7321 3785 0.200018254719297 0.200018254719297 -104.9555518 39.7273179 -104.9555585 39.7291167
-9379 6356 2387 0.110864888603468 0.110864888603468 -104.9541524 39.7728932 -104.9541313 39.7738901
-9380 2387 7322 0.139379472361554 0.139379472361554 -104.9541313 39.7738901 -104.9541485 39.7751435
-9381 7322 7323 0.046481070265731 0.046481070265731 -104.9541485 39.7751435 -104.954144 39.7755615
-9382 7323 745 0.0926146092564692 0.0926146092564692 -104.954144 39.7755615 -104.954147 39.7763944
-9383 745 1563 0.142337228385207 0.142337228385207 -104.954147 39.7763944 -104.9541741 39.7776743
-9384 1563 7324 0.139015648234869 0.139015648234869 -104.9541741 39.7776743 -104.9541282 39.778924
-9385 7324 7325 0.121637038292373 0.121637038292373 -104.9541282 39.778924 -104.9541227 39.7800179
-9387 7326 1054 0.0187920378071022 0.0187920378071022 -104.954122 39.7801258 -104.9541213 39.7802948
-9388 1054 7327 0.1804815052178 0.1804815052178 -104.9541213 39.7802948 -104.9541142 39.7819179
-9389 7327 7328 0.200952784069958 0.200952784069958 -104.9541142 39.7819179 -104.9541227 39.7837251
-9390 7328 2873 0.135770477885413 0.135770477885413 -104.9541227 39.7837251 -104.9541301 39.7849461
-9391 2873 7329 0.140734857106897 0.140734857106897 -104.9541301 39.7849461 -104.9541142 39.7862117
-9392 7329 7330 0.130551116437319 0.130551116437319 -104.9541142 39.7862117 -104.954097 39.7873857
-9394 3573 5641 0.135671111475822 0.135671111475822 -104.954935 39.7545002 -104.954926 39.7557203
-9395 5641 4346 0.139178472263861 0.139178472263861 -104.954926 39.7557203 -104.9549522 39.7569718
-9397 6344 3047 0.139334930188281 0.139334930188281 -104.9549352 39.7582063 -104.9548745 39.7594585
-9398 3047 7331 0.13779347001033 0.13779347001033 -104.9548745 39.7594585 -104.9548797 39.7606977
-9399 7331 7332 0.00320242529462838 0.00320242529462838 -104.9548797 39.7606977 -104.9548798 39.7607265
-9400 7332 7333 0.124149220639337 0.124149220639337 -104.9548798 39.7607265 -104.9548815 39.761843
-9401 7333 7334 0.0152895413448354 0.0152895413448354 -104.9548815 39.761843 -104.9548825 39.7619805
-9402 7334 1168 0.139240705026111 0.139240705026111 -104.9548825 39.7619805 -104.9548921 39.7632327
-9403 1168 888 0.137184892852111 0.137184892852111 -104.9548921 39.7632327 -104.9548685 39.7644663
-9404 888 4473 0.140290329638987 0.140290329638987 -104.9548685 39.7644663 -104.9548351 39.7657277
-9405 4473 2795 0.133122605689938 0.133122605689938 -104.9548351 39.7657277 -104.9548363 39.7669249
-18387 8972 8990 0.0135489498420418 0.0135489498420418 -105.025167 39.7603517 -105.0252879 39.7604305
-9406 2795 5263 0.132274155849312 0.132274155849312 -104.9548363 39.7669249 -104.9547977 39.7681141
-9408 5264 7335 0.142105114812744 0.142105114812744 -104.9542913 39.7681128 -104.954435 39.769386
-9409 7336 7337 0.0976207961374284 0.0976207961374284 -104.9551363 39.7328385 -104.9551277 39.7337164
-9410 7337 4886 0.157275932372423 0.157275932372423 -104.9551277 39.7337164 -104.9551513 39.7351307
-9411 4886 7338 0.185720302610988 0.185720302610988 -104.9551513 39.7351307 -104.9551086 39.7368006
-9412 7338 5484 0.174899259954025 0.174899259954025 -104.9551086 39.7368006 -104.955149 39.7383732
-9413 5484 7339 0.200596009359583 0.200596009359583 -104.955149 39.7383732 -104.9551239 39.7401771
-9415 7001 7340 0.179314344082203 0.179314344082203 -104.9316416 39.7162506 -104.9316333 39.714638
-9416 7340 3105 0.172536320867715 0.172536320867715 -104.9316333 39.714638 -104.9316505 39.7130864
-9417 3105 7341 0.196295851159965 0.196295851159965 -104.9316505 39.7130864 -104.9316369 39.7113211
-9418 7341 7342 0.0146987319128723 0.0146987319128723 -104.9316369 39.7113211 -104.9316306 39.711189
-9419 7342 5274 0.233778976885029 0.233778976885029 -104.9316306 39.711189 -104.93153 39.709088
-9421 61 3550 0.201334976523304 0.201334976523304 -104.931714 39.700208 -104.931651 39.698398
-9423 4229 1512 0.0573285646726125 0.0573285646726125 -104.931645 39.696598 -104.931734 39.696087
-9424 1512 1812 0.080316497766985 0.080316497766985 -104.931734 39.696087 -104.9317181 39.6953648
-9425 1812 1792 0.0864981124104349 0.0864981124104349 -104.9317181 39.6953648 -104.931734 39.694587
-9426 1792 5766 0.0789087886834876 0.0789087886834876 -104.931734 39.694587 -104.9316752 39.6938788
-9427 5766 7199 0.0992911764787047 0.0992911764787047 -104.9316752 39.6938788 -104.931734 39.692987
-9428 7199 6828 0.11119492664509 0.11119492664509 -104.931734 39.692987 -104.931734 39.691987
-9429 6828 5849 0.0944254133826228 0.0944254133826228 -104.931734 39.691987 -104.9317181 39.6911379
-9430 5849 6009 0.0132155676036954 0.0132155676036954 -104.9317181 39.6911379 -104.9317136 39.6910191
-9431 6009 6306 0.0820521132716854 0.0820521132716854 -104.9317136 39.6910191 -104.9316857 39.6902815
-9432 6306 7343 0.105450198242036 0.105450198242036 -104.9316857 39.6902815 -104.9316965 39.6893332
-9433 7343 6621 0.143519415278471 0.143519415278471 -104.9316965 39.6893332 -104.9316943 39.6880425
-9434 6621 7344 1.27038946039582 1.27038946039582 -104.9316943 39.6880425 -104.9316364 39.6766177
-9437 4173 4758 0.21160422195521 0.21160422195521 -104.966736 39.720087 -104.96674 39.72199
-9439 7347 7348 0.135937832662874 0.135937832662874 -104.9671878 39.748204 -104.9671965 39.7494265
-9440 7348 7349 0.00392915540186096 0.00392915540186096 -104.9671965 39.7494265 -104.9671912 39.7494616
-9441 7349 7350 0.00435925191977174 0.00435925191977174 -104.9671912 39.7494616 -104.9671905 39.7495008
-9442 7350 7351 0.134680718743296 0.134680718743296 -104.9671905 39.7495008 -104.967169 39.7507119
-9443 7351 7352 0.142353643667365 0.142353643667365 -104.967169 39.7507119 -104.9671604 39.7519921
-9444 7352 822 0.136144392169031 0.136144392169031 -104.9671604 39.7519921 -104.9672048 39.753216
-9445 822 3563 0.139511434934294 0.139511434934294 -104.9672048 39.753216 -104.9671659 39.7544703
-9447 4757 6547 0.198421257470946 0.198421257470946 -104.9671402 39.7219786 -104.9671106 39.7237629
-9448 6547 7353 0.203512578195826 0.203512578195826 -104.9671106 39.7237629 -104.9671248 39.7255931
-9449 7353 7354 0.189733642798723 0.189733642798723 -104.9671248 39.7255931 -104.9671343 39.7272994
-9450 7354 3791 0.198902472958717 0.198902472958717 -104.9671343 39.7272994 -104.9671553 39.7290881
-9452 7356 1156 0.139895555737197 0.139895555737197 -104.9671912 39.761995 -104.9671402 39.7632525
-9453 1156 877 0.139167763247538 0.139167763247538 -104.9671402 39.7632525 -104.9671933 39.7645034
-9454 877 4465 0.138362926550376 0.138362926550376 -104.9671933 39.7645034 -104.9671825 39.7657477
-9455 4465 2785 0.134223449290719 0.134223449290719 -104.9671825 39.7657477 -104.9671839 39.7669548
-9456 2785 5256 0.132255447080442 0.132255447080442 -104.9671839 39.7669548 -104.9671812 39.7681442
-10701 7933 7934 0.0165824928197296 0.0165824928197296 -104.9950255 39.7656809 -104.9948315 39.7656825
-9457 5256 6902 0.213396689593523 0.213396689593523 -104.9671812 39.7681442 -104.9671691 39.7700633
-9458 6902 7357 0.137952680025601 0.137952680025601 -104.9671691 39.7700633 -104.967212 39.7713035
-9460 7358 7359 0.0873817304884455 0.0873817304884455 -104.9672193 39.7360482 -104.9672536 39.7368336
-9461 7359 5476 0.17425617170475 0.17425617170475 -104.9672536 39.7368336 -104.9672122 39.7384004
-9462 5476 7360 0.176755476074969 0.176755476074969 -104.9672122 39.7384004 -104.9672112 39.73999
-9463 7360 7361 0.179271064370159 0.179271064370159 -104.9672112 39.73999 -104.9672225 39.7416022
-9464 7361 670 0.00299320804688776 0.00299320804688776 -104.9672225 39.7416022 -104.9672238 39.7416291
-9465 670 7362 0.00367138449467953 0.00367138449467953 -104.9672238 39.7416291 -104.9672252 39.7416621
-9466 7362 7363 0.175413304982356 0.175413304982356 -104.9672252 39.7416621 -104.9672126 39.7432396
-9467 7363 4602 0.174300257248449 0.174300257248449 -104.9672126 39.7432396 -104.9672651 39.7448066
-9468 4602 6494 0.14109328269368 0.14109328269368 -104.9672651 39.7448066 -104.9672196 39.746075
-9470 6339 3027 0.140999530277673 0.140999530277673 -104.9671608 39.7582241 -104.9672089 39.7594916
-9471 3027 7364 0.134294188280294 0.134294188280294 -104.9672089 39.7594916 -104.9671778 39.7606991
-9472 7364 7367 0.00539295394286677 0.00539295394286677 -104.9671778 39.7606991 -104.9671778 39.7607476
-9473 7367 7368 0.0958510973743428 0.0958510973743428 -104.9671778 39.7607476 -104.9671831 39.7616096
-9474 7369 7370 0.0190810494123846 0.0190810494123846 -104.9665185 39.7181803 -104.9665185 39.7183519
-9475 7370 4174 0.200419085556528 0.200419085556528 -104.9665185 39.7183519 -104.9665271 39.7201543
-9476 4174 4759 0.205255972403598 0.205255972403598 -104.9665271 39.7201543 -104.9665355 39.7220002
-9478 7371 1504 0.200818042076817 0.200818042076817 -105.0309982 39.6967219 -105.0309987 39.6949159
-9479 1504 177 0.202381091183512 0.202381091183512 -105.0309987 39.6949159 -105.03098 39.6930959
-9481 7048 5860 0.176960295698989 0.176960295698989 -105.0312304 39.7165547 -105.0311875 39.7149636
-9482 5860 1308 0.177680958846967 0.177680958846967 -105.0311875 39.7149636 -105.0312133 39.7133658
-9483 1308 7372 0.242287040915104 0.242287040915104 -105.0312133 39.7133658 -105.0312304 39.7111869
-9485 7373 7374 0.0554606112260645 0.0554606112260645 -105.0253069 39.7683544 -105.0259557 39.7683632
-9486 7374 6759 0.139083865409791 0.139083865409791 -105.0259557 39.7683632 -105.027583 39.7683586
-9487 6759 3983 0.201208667852087 0.201208667852087 -105.027583 39.7683586 -105.0299371 39.7683433
-9488 3983 7042 0.200146227687253 0.200146227687253 -105.0299371 39.7683433 -105.0322788 39.7683312
-9489 7042 3429 0.200588668938452 0.200588668938452 -105.0322788 39.7683312 -105.0346257 39.7683222
-9491 7375 7376 0.134975501915893 0.134975501915893 -105.0330349 39.7767308 -105.0330187 39.7779446
-9492 7376 2494 0.132763759551609 0.132763759551609 -105.0330187 39.7779446 -105.0330359 39.7791385
-9493 2494 2841 0.125447252672452 0.125447252672452 -105.0330359 39.7791385 -105.0330101 39.7802665
-9495 7377 1766 0.0535653036014808 0.0535653036014808 -105.0334347 39.7548479 -105.0334284 39.7553296
-9496 1766 7378 0.148946577862237 0.148946577862237 -105.0334284 39.7553296 -105.0334347 39.7566691
-9497 7378 7379 0.151136159766357 0.151136159766357 -105.0334347 39.7566691 -105.0334355 39.7580283
-9498 7379 2978 0.0542010510807056 0.0542010510807056 -105.0334355 39.7580283 -105.0334272 39.7585157
-9500 6210 7380 0.184339220967731 0.184339220967731 -105.0337279 39.7260547 -105.0337242 39.7277125
-9501 7380 7381 0.177783326711723 0.177783326711723 -105.0337242 39.7277125 -105.0337396 39.7293113
-9503 7055 4046 0.178402656739544 0.178402656739544 -105.0337024 39.7165547 -105.0336938 39.7181591
-9504 4046 7382 0.177334708763743 0.177334708763743 -105.0336938 39.7181591 -105.0337009 39.7197539
-9505 7382 1847 0.175265460280809 0.175265460280809 -105.0337009 39.7197539 -105.0337 39.7213301
-9506 1847 2581 0.177411624203835 0.177411624203835 -105.0337 39.7213301 -105.0337024 39.7229256
-9508 5179 7383 0.0621659509396009 0.0621659509396009 -105.0337195 39.7245298 -105.0336341 39.725085
-9510 7384 5530 0.101603812835917 0.101603812835917 -105.033438 39.773186 -105.033486 39.774099
-9511 5530 6476 0.0959541548395336 0.0959541548395336 -105.033486 39.774099 -105.0333983 39.7749593
-9512 6476 7385 0.197309689587966 0.197309689587966 -105.0333983 39.7749593 -105.0333812 39.7767337
-9514 7386 4578 0.133367493492184 0.133367493492184 -105.0330679 39.7403194 -105.0330646 39.7415188
-9515 4578 6442 0.135224444657643 0.135224444657643 -105.0330646 39.7415188 -105.0330679 39.7427349
-9516 6442 5294 0.135202388191056 0.135202388191056 -105.0330679 39.7427349 -105.0330637 39.7439508
-9517 5294 6971 0.132090452543352 0.132090452543352 -105.0330637 39.7439508 -105.0330722 39.7451387
-9519 7387 6793 0.0526421759963202 0.0526421759963202 -105.0330656 39.7694876 -105.0330596 39.769961
-9520 6793 2426 0.0832334466071371 0.0832334466071371 -105.0330596 39.769961 -105.03305 39.7707095
-9521 2426 7292 0.0515611894823623 0.0515611894823623 -105.03305 39.7707095 -105.0330488 39.7711732
-9522 7292 3230 0.0818841223845197 0.0818841223845197 -105.0330488 39.7711732 -105.0330468 39.7719096
-9523 3230 7388 0.142866769580008 0.142866769580008 -105.0330468 39.7719096 -105.033238 39.773186
-9525 7389 7390 0.203322823967769 0.203322823967769 -105.0332722 39.7293161 -105.0332849 39.7311446
-9529 7391 7392 0.135325738854945 0.135325738854945 -105.033138 39.748786 -105.0330703 39.7500019
-9530 7392 7393 0.132395815694125 0.132395815694125 -105.0330703 39.7500019 -105.0331086 39.7511922
-9531 7393 7394 0.135014881681412 0.135014881681412 -105.0331086 39.7511922 -105.0331 39.7524064
-9532 7394 7395 0.132077333868835 0.132077333868835 -105.0331 39.7524064 -105.0331 39.7535942
-9535 7397 621 0.0257970801977961 0.0257970801977961 -105.0333294 39.7363199 -105.0333206 39.7365518
-9537 4075 6060 0.199263565882924 0.199263565882924 -105.0333673 39.7838362 -105.0333562 39.7856282
-9538 6060 5800 0.199550446273018 0.199550446273018 -105.0333562 39.7856282 -105.0333549 39.7874228
-9540 7398 3097 0.199450454556748 0.199450454556748 -104.9686917 39.7147256 -104.9686892 39.7129319
-9541 3097 3207 0.202536688546866 0.202536688546866 -104.9686892 39.7129319 -104.9687078 39.7111105
-9542 3207 6119 0.201707926741417 0.201707926741417 -104.9687078 39.7111105 -104.9686581 39.7092969
-9543 6119 1917 0.201109266380341 0.201109266380341 -104.9686581 39.7092969 -104.9686689 39.7074883
-9544 1917 7243 0.20045244430598 0.20045244430598 -104.9686689 39.7074883 -104.9686775 39.7056856
-9545 7243 594 0.202390514467061 0.202390514467061 -104.9686775 39.7056856 -104.9686935 39.7038655
-9547 7399 5843 0.208569621956493 0.208569621956493 -104.9687279 39.6929756 -104.9687193 39.6910999
-9549 7400 5659 0.10300363118025 0.10300363118025 -104.9687412 39.6893196 -104.9687309 39.6883933
-9550 5659 7401 0.0544972381418925 0.0544972381418925 -104.9687309 39.6883933 -104.9687279 39.6879032
-9552 6194 6950 0.191455920710939 0.191455920710939 -104.982919 39.7801891 -104.9829139 39.7819109
-9553 6950 7402 0.209004541630565 0.209004541630565 -104.9829139 39.7819109 -104.9829018 39.7837905
-9555 4943 7403 0.0144437903083984 0.0144437903083984 -104.9952896 39.7400105 -104.995301 39.7401401
-9556 7403 3000 0.101061674656442 0.101061674656442 -104.995301 39.7401401 -104.9961353 39.7407839
-9558 6639 3962 0.136668682711291 0.136668682711291 -104.9985703 39.7165902 -105.0001681 39.7165803
-9559 3962 4361 0.121869293781819 0.121869293781819 -105.0001681 39.7165803 -105.0015929 39.7165869
-20411 9207 10780 0.0112983850763668 0.0112983850763668 -105.0250726 39.7601228 -105.0250471 39.7600231
-9561 5171 5225 0.145976272368254 0.145976272368254 -104.9874858 39.7165623 -104.9891924 39.7165504
-9562 5225 1866 0.0654044096593951 0.0654044096593951 -104.9891924 39.7165504 -104.9899563 39.7165768
-9563 1866 5084 0.0770856255669816 0.0770856255669816 -104.9899563 39.7165768 -104.9908575 39.7165834
-9564 5084 2809 0.113066726070966 0.113066726070966 -104.9908575 39.7165834 -104.9921793 39.7165966
-9565 2809 3368 0.152693063908693 0.152693063908693 -104.9921793 39.7165966 -104.9939645 39.7165966
-9566 3368 7404 0.0530057643448654 0.0530057643448654 -104.9939645 39.7165966 -104.9945842 39.7165997
-9567 7404 4944 0.0497811011847154 0.0497811011847154 -104.9945842 39.7165997 -104.9951662 39.7166026
-9568 4944 7405 0.0515530101953733 0.0515530101953733 -104.9951662 39.7166026 -104.9957689 39.7166071
-9569 7405 7217 0.0502978935844785 0.0502978935844785 -104.9957689 39.7166071 -104.9963567 39.7165938
-9570 7217 7406 0.0537233169488665 0.0537233169488665 -104.9963567 39.7165938 -104.9969848 39.7165925
-9571 7406 7407 0.0412354910733997 0.0412354910733997 -104.9969848 39.7165925 -104.9974669 39.7165915
-9572 6416 4212 0.100784166153009 0.100784166153009 -105.0172314 39.7170829 -105.018373 39.7168584
-9573 4212 190 0.175257609965618 0.175257609965618 -105.018373 39.7168584 -105.0203986 39.7166208
-9574 190 4532 0.201882877149858 0.201882877149858 -105.0203986 39.7166208 -105.0227589 39.7166208
-9575 4532 5431 0.198227529862783 0.198227529862783 -105.0227589 39.7166208 -105.0250764 39.7166076
-9576 5431 5972 0.107244272330712 0.107244272330712 -105.0250764 39.7166076 -105.0263295 39.7165745
-9577 5972 2255 0.104270609577454 0.104270609577454 -105.0263295 39.7165745 -105.0275483 39.7165547
-9578 2255 6131 0.104982960169425 0.104982960169425 -105.0275483 39.7165547 -105.0287757 39.7165547
-9579 6131 3998 0.104249966263654 0.104249966263654 -105.0287757 39.7165547 -105.0299945 39.7165481
-9580 3998 7048 0.105712541492873 0.105712541492873 -105.0299945 39.7165481 -105.0312304 39.7165547
-9581 7048 1393 0.105952500116488 0.105952500116488 -105.0312304 39.7165547 -105.0324691 39.7165619
-9583 7408 7055 0.0530917174300864 0.0530917174300864 -105.0330817 39.7165583 -105.0337024 39.7165547
-9584 7055 7409 0.0515249594325266 0.0515249594325266 -105.0337024 39.7165547 -105.0343048 39.7165547
-9585 7409 3389 0.0512512544679775 0.0512512544679775 -105.0343048 39.7165547 -105.034904 39.7165547
-9586 3389 7410 0.0515249594325266 0.0515249594325266 -105.034904 39.7165547 -105.0355064 39.7165547
-9587 7410 4504 0.051986836558228 0.051986836558228 -105.0355064 39.7165547 -105.0361142 39.7165547
-9588 4504 3539 0.0507992547126353 0.0507992547126353 -105.0361142 39.7165547 -105.0367081 39.716558
-9589 3539 7411 0.0505170014633714 0.0505170014633714 -105.0367081 39.716558 -105.0372987 39.7165613
-9590 7411 7412 0.0515690276546841 0.0515690276546841 -105.0372987 39.7165613 -105.0379016 39.716558
-9592 5066 6400 0.0525526328752235 0.0525526328752235 -105.0384889 39.7165547 -105.0391033 39.716558
-9593 6400 6835 0.0526723733629873 0.0526723733629873 -105.0391033 39.716558 -105.0397191 39.7165613
-9594 6835 7413 0.0505686622438464 0.0505686622438464 -105.0397191 39.7165613 -105.0403103 39.7165576
-9595 7413 1105 0.0506198937481409 0.0506198937481409 -105.0403103 39.7165576 -105.0409021 39.716554
-9596 1105 7414 0.0824276303743622 0.0824276303743622 -105.0409021 39.716554 -105.0418648 39.7165877
-9598 3863 7415 0.0529481461592885 0.0529481461592885 -105.0432639 39.7165811 -105.0438828 39.716571
-9599 7415 6656 0.0485933921065039 0.0485933921065039 -105.0438828 39.716571 -105.0444508 39.7165618
-9600 6656 7416 0.0551266417503484 0.0551266417503484 -105.0444508 39.7165618 -105.0450953 39.7165644
-9601 7416 7417 0.698080046436177 0.698080046436177 -105.0450953 39.7165644 -105.0532563 39.7166375
-9602 3179 7418 0.0616464790427922 0.0616464790427922 -104.9535963 39.7030192 -104.9529866 39.7027237
-9603 7418 5002 0.0485639637102659 0.0485639637102659 -104.9529866 39.7027237 -104.9525063 39.7024909
-9604 5002 7419 0.0540110826611525 0.0540110826611525 -104.9525063 39.7024909 -104.9519684 39.7022366
-9605 7419 5725 0.0437502401390831 0.0437502401390831 -104.9519684 39.7022366 -104.9515323 39.7020311
-9606 5725 724 0.0271601591292424 0.0271601591292424 -104.9515323 39.7020311 -104.9512162 39.7020084
-9607 724 7059 0.100733087825974 0.100733087825974 -104.9512162 39.7020084 -104.9500388 39.7020179
-9608 7059 7314 0.111000885564944 0.111000885564944 -104.9500388 39.7020179 -104.9489488 39.7014764
-9610 7421 3610 0.212938945536276 0.212938945536276 -104.9318313 39.7628536 -104.9293406 39.7628932
-9611 3610 2128 0.151144951480704 0.151144951480704 -104.9293406 39.7628932 -104.9275725 39.7628734
-10843 154 8006 0.0789597424143419 0.0789597424143419 -104.9570001 39.7445158 -104.9569442 39.743807
-9613 5998 2327 0.147931201391184 0.147931201391184 -104.9257702 39.7628567 -104.9240401 39.7628914
-9614 2327 7422 0.151462381546094 0.151462381546094 -104.9240401 39.7628914 -104.9222681 39.7628932
-9615 2016 354 0.0832039426217647 0.0832039426217647 -104.9349971 39.720897 -104.9346635 39.7201941
-9616 354 2024 0.270665538753682 0.270665538753682 -104.9346635 39.7201941 -104.935134 39.717787
-9620 4944 7424 0.200356357596052 0.200356357596052 -104.9951662 39.7166026 -104.9951833 39.7148008
-9622 2981 7425 0.200823510551274 0.200823510551274 -105.0369709 39.7585166 -105.0369407 39.7603225
-9623 7425 7426 0.200629159279387 0.200629159279387 -105.0369407 39.7603225 -105.0369378 39.7621268
-9624 7426 7427 0.00781704540286186 0.00781704540286186 -105.0369378 39.7621268 -105.0369381 39.7621971
-9625 7427 7428 0.196215671376464 0.196215671376464 -105.0369381 39.7621971 -105.0369458 39.7639617
-9626 7428 6876 0.205224182417126 0.205224182417126 -105.0369458 39.7639617 -105.0369584 39.7658073
-9627 6876 1687 0.205021376956907 0.205021376956907 -105.0369584 39.7658073 -105.0369553 39.7676511
-9628 1687 7429 0.205696359665547 0.205696359665547 -105.0369553 39.7676511 -105.0369881 39.7695008
-9629 7429 2432 0.199163881347575 0.199163881347575 -105.0369881 39.7695008 -105.0369607 39.7712918
-9630 2432 7431 0.20247617593456 0.20247617593456 -105.0369607 39.7712918 -105.0369521 39.7731127
-9632 6213 7432 0.274944028390563 0.274944028390563 -105.0372874 39.7257681 -105.0373205 39.7282406
-9633 7432 7433 0.263513794727665 0.263513794727665 -105.0373205 39.7282406 -105.0373376 39.7306104
-9634 7433 6594 0.262579264502597 0.262579264502597 -105.0373376 39.7306104 -105.0373216 39.7329718
-9636 7254 1423 0.111990529719831 0.111990529719831 -105.0369203 39.7810777 -105.0369066 39.7820848
-10866 1577 8015 0.266859669077532 0.266859669077532 -105.0390628 39.6875658 -105.0390481 39.6851659
-9639 7434 7435 0.184117705049588 0.184117705049588 -105.0369402 39.7767242 -105.0369326 39.77838
-9640 7435 7436 0.203503143312405 0.203503143312405 -105.0369326 39.77838 -105.0369154 39.7802101
-9642 6593 7437 0.098508708246921 0.098508708246921 -105.0369834 39.7329675 -105.0369779 39.7338534
-9643 7437 7127 0.0085733378066782 0.0085733378066782 -105.0369779 39.7338534 -105.0369772 39.7339305
-9645 7411 4051 0.176201016140517 0.176201016140517 -105.0372987 39.7165613 -105.0372901 39.7181459
-9646 4051 7438 0.186623330561976 0.186623330561976 -105.0372901 39.7181459 -105.0373273 39.719824
-9647 7438 1853 0.167040016171723 0.167040016171723 -105.0373273 39.719824 -105.0373156 39.7213262
-9648 1853 2591 0.179034976108436 0.179034976108436 -105.0373156 39.7213262 -105.0373167 39.7229363
-9650 7439 6064 0.193434831975152 0.193434831975152 -105.0369233 39.7838741 -105.0369206 39.7856137
-9651 6064 2544 0.202007823415783 0.202007823415783 -105.0369206 39.7856137 -105.0369205 39.7874304
-9652 2544 7440 0.411378882387366 0.411378882387366 -105.0369205 39.7874304 -105.036936 39.79113
-9653 7129 627 0.200330694412442 0.200330694412442 -105.0369832 39.7347877 -105.0369171 39.7365886
-9655 18 6387 0.132089927812284 0.132089927812284 -105.0369187 39.746386 -105.036926 39.7475739
-9658 7443 7444 0.13397887621517 0.13397887621517 -105.036967 39.7499887 -105.036965 39.7511936
-9659 7444 5539 0.105571329036095 0.105571329036095 -105.036965 39.7511936 -105.0369449 39.7521429
-9660 5539 2407 0.0968730605007166 0.0968730605007166 -105.0369449 39.7521429 -105.0369621 39.753014
-9661 2407 4292 0.100193275722424 0.100193275722424 -105.0369621 39.753014 -105.0369756 39.753915
-9662 4292 7445 0.0505436928211805 0.0505436928211805 -105.0369756 39.753915 -105.0369668 39.7543695
-9663 7445 7446 0.0548363595380854 0.0548363595380854 -105.0369668 39.7543695 -105.0369572 39.7548626
-9665 7447 7448 0.169947053382904 0.169947053382904 -105.0151992 39.7160167 -105.0139289 39.7148415
-9667 5852 1336 0.19937663187299 0.19937663187299 -105.014337 39.714787 -105.014352 39.712994
-9668 1336 6158 0.0597086585632686 0.0597086585632686 -105.014352 39.712994 -105.01431 39.712458
-9669 6158 7449 0.153340690716036 0.153340690716036 -105.01431 39.712458 -105.014321 39.711079
-9671 7450 4365 0.199972383812324 0.199972383812324 -104.9991888 39.7075519 -105.0015264 39.7075644
-9672 4365 1447 0.201108937861992 0.201108937861992 -105.0015264 39.7075644 -105.0038773 39.7075535
-9673 1447 7451 0.20199467881708 0.20199467881708 -105.0038773 39.7075535 -105.0062376 39.7076063
-9674 7451 6664 0.0985180993542889 0.0985180993542889 -105.0062376 39.7076063 -105.0073877 39.7075601
-9675 6664 1757 0.102800794441344 0.102800794441344 -105.0073877 39.7075601 -105.0085894 39.7075535
-9676 1757 3819 0.106482209599855 0.106482209599855 -105.0085894 39.7075535 -105.0098339 39.7075733
-9677 3819 5892 0.0976679798408968 0.0976679798408968 -105.0098339 39.7075733 -105.0109755 39.7075865
-9679 5332 5070 0.101261676099905 0.101261676099905 -105.0373528 39.7079851 -105.0385346 39.7080373
-9680 5070 6838 0.100657370443561 0.100657370443561 -105.0385346 39.7080373 -105.0397105 39.7080043
-9681 6838 6967 0.0976725983678986 0.0976725983678986 -105.0397105 39.7080043 -105.040852 39.7080241
-9682 6967 7452 0.102800093286128 0.102800093286128 -105.040852 39.7080241 -105.0420537 39.7080307
-9683 7452 7453 0.0998547767838799 0.0998547767838799 -105.0420537 39.7080307 -105.043221 39.7080307
-9685 5437 7454 0.211535646678045 0.211535646678045 -105.0250692 39.7075784 -105.0275397 39.707661
-9686 7454 4416 0.194570832918176 0.194570832918176 -105.0275397 39.707661 -105.0298142 39.7076544
-9687 4416 7456 0.224677107455919 0.224677107455919 -105.0298142 39.7076544 -105.0324406 39.7076676
-9688 7456 4322 0.22100369073056 0.22100369073056 -105.0324406 39.7076676 -105.0350241 39.707661
-9692 7458 7459 0.0196177061643605 0.0196177061643605 -104.9885959 39.7075353 -104.9888252 39.7075381
-9693 7459 7460 0.0200797614980701 0.0200797614980701 -104.9888252 39.7075381 -104.9890599 39.707541
-9694 7460 7461 0.0204220717617775 0.0204220717617775 -104.9890599 39.707541 -104.9892986 39.707544
-9695 7461 7462 0.0192753952773127 0.0192753952773127 -104.9892986 39.707544 -104.9895239 39.7075467
-9696 7462 7463 0.0197376280100197 0.0197376280100197 -104.9895239 39.7075467 -104.9897546 39.7075496
-9697 7463 1874 0.0201396312288959 0.0201396312288959 -104.9897546 39.7075496 -104.98999 39.7075525
-9698 1874 7464 0.101865928676763 0.101865928676763 -104.98999 39.7075525 -104.9911808 39.7075508
-9699 7464 7465 0.0516398712444199 0.0516398712444199 -104.9911808 39.7075508 -104.9917844 39.7075576
-9700 5894 1589 0.201207684972719 0.201207684972719 -105.0109744 39.7074034 -105.0133261 39.7073704
-9701 1589 1639 0.202832052664544 0.202832052664544 -105.0133261 39.7073704 -105.0156968 39.7073378
-9703 7466 7467 0.461510399426298 0.461510399426298 -105.0431952 39.7089155 -105.0485899 39.7089671
-9704 7468 7469 0.0656477480578156 0.0656477480578156 -104.9875851 39.7084534 -104.9883525 39.7084582
-9705 7469 7470 0.0202314805703126 0.0202314805703126 -104.9883525 39.7084582 -104.988589 39.7084596
-9706 7470 7471 0.0196155905306545 0.0196155905306545 -104.988589 39.7084596 -104.9888183 39.708461
-9707 7471 7472 0.0198466389215673 0.0198466389215673 -104.9888183 39.708461 -104.9890503 39.7084625
-9709 7473 7474 0.0193760769839274 0.0193760769839274 -104.9892894 39.708464 -104.9895159 39.7084654
-10941 7859 4686 0.105458193161767 0.105458193161767 -104.992836 39.7305121 -104.9940692 39.730515
-16187 5815 7203 0.20368767335866 0.20368767335866 -104.9845543 39.6911833 -104.9845476 39.6930151
-9710 7474 7475 0.0199577496151493 0.0199577496151493 -104.9895159 39.7084654 -104.9897492 39.7084668
-9711 7475 1873 0.0221306450398483 0.0221306450398483 -104.9897492 39.7084668 -104.9900079 39.7084684
-9712 1873 7476 0.0228930859552116 0.0228930859552116 -104.9900079 39.7084684 -104.9902755 39.708471
-9713 7476 7477 0.00597945379667752 0.00597945379667752 -104.9902755 39.708471 -104.9903454 39.7084711
-9714 7477 7481 0.0633102446327588 0.0633102446327588 -104.9903454 39.7084711 -104.9910855 39.7084711
-9715 7481 7482 0.00659734634558833 0.00659734634558833 -104.9910855 39.7084711 -104.9911621 39.7084642
-9716 7482 7483 0.0122662226221965 0.0122662226221965 -104.9911621 39.7084642 -104.9913038 39.7084473
-9717 7483 7484 0.0357233876730641 0.0357233876730641 -104.9913038 39.7084473 -104.9917214 39.7084493
-9718 7484 4185 0.0600540815299224 0.0600540815299224 -104.9917214 39.7084493 -104.9924234 39.7084547
-9721 7485 4417 0.198257535408126 0.198257535408126 -105.0275311 39.708526 -105.0298486 39.7085458
-9722 4417 7486 0.220999648574169 0.220999648574169 -105.0298486 39.7085458 -105.0324321 39.7085458
-9723 7486 4321 0.223933764288424 0.223933764288424 -105.0324321 39.7085458 -105.0350499 39.7085458
-9725 4364 1446 0.20650017701017 0.20650017701017 -105.0014826 39.7083921 -105.0038944 39.7084713
-9726 1446 7487 0.199709617072806 0.199709617072806 -105.0038944 39.7084713 -105.006229 39.7084779
-9727 7487 6936 0.203411194568703 0.203411194568703 -105.006229 39.7084779 -105.0086065 39.7084449
-9728 6936 5891 0.202831423382765 0.202831423382765 -105.0086065 39.7084449 -105.0109775 39.7084624
-9730 7488 7489 0.219847500079542 0.219847500079542 -105.0416419 39.7310429 -105.0416893 39.7330197
-9731 7489 7490 0.112284636925509 0.112284636925509 -105.0416893 39.7330197 -105.0416893 39.7340295
-9733 7491 7492 0.104975617952237 0.104975617952237 -105.0416725 39.7478114 -105.0416382 39.7487551
-9734 7492 7493 0.133826104897821 0.133826104897821 -105.0416382 39.7487551 -105.0416487 39.7499586
-9735 7493 7494 0.136182988757468 0.136182988757468 -105.0416487 39.7499586 -105.0416791 39.7511831
-9737 5544 2414 0.0621561786197408 0.0621561786197408 -105.0416664 39.7521054 -105.0416538 39.7526643
-9739 5055 4297 0.0642451197659933 0.0642451197659933 -105.04162 39.753356 -105.0416469 39.7539334
-9740 4297 7495 0.104062899405527 0.104062899405527 -105.0416469 39.7539334 -105.0416607 39.7548692
-9741 7495 7496 0.203687229874764 0.203687229874764 -105.0416607 39.7548692 -105.0416562 39.756701
-9742 7496 2987 0.200108037782066 0.200108037782066 -105.0416562 39.756701 -105.0416657 39.7585006
-9743 2987 7497 0.201819339453719 0.201819339453719 -105.0416657 39.7585006 -105.0416712 39.7603156
-9744 7497 7498 0.0489089257680099 0.0489089257680099 -105.0416712 39.7603156 -105.0416627 39.7607554
-9745 7498 7499 0.151764240821653 0.151764240821653 -105.0416627 39.7607554 -105.0416365 39.7621201
-9746 7499 7500 0.203024715164671 0.203024715164671 -105.0416365 39.7621201 -105.0416198 39.7639459
-9747 7500 6882 0.202091910987955 0.202091910987955 -105.0416198 39.7639459 -105.0416508 39.7657632
-9748 6882 1693 0.203443247701908 0.203443247701908 -105.0416508 39.7657632 -105.0416583 39.7675928
-9749 1693 7501 0.204709999833149 0.204709999833149 -105.0416583 39.7675928 -105.0416611 39.7694338
-9750 7501 2441 0.166684898047837 0.166684898047837 -105.0416611 39.7694338 -105.0416481 39.7709328
-9752 5738 5527 0.157552520143968 0.157552520143968 -105.0416591 39.7724704 -105.0416634 39.7738873
-9753 5527 6465 0.155770587020073 0.155770587020073 -105.0416634 39.7738873 -105.0416343 39.775288
-9754 6465 7502 0.156429247159158 0.156429247159158 -105.0416343 39.775288 -105.0415725 39.776694
-9755 7502 7503 0.187478248770476 0.187478248770476 -105.0415725 39.776694 -105.0415589 39.77838
-9756 7503 7504 0.202724737429487 0.202724737429487 -105.0415589 39.77838 -105.041576 39.7802031
-10985 7367 5402 0.104549154022735 0.104549154022735 -104.9671778 39.7607476 -104.9659547 39.7607434
-9757 7504 1429 0.207912295088567 0.207912295088567 -105.041576 39.7802031 -105.0415749 39.7820729
-9758 1429 7189 0.130843883831593 0.130843883831593 -105.0415749 39.7820729 -105.0415695 39.7832496
-9760 6219 7505 0.274122910361615 0.274122910361615 -105.0416352 39.7257952 -105.0416549 39.7282604
-9761 7505 7506 0.19636903427064 0.19636903427064 -105.0416549 39.7282604 -105.0410987 39.7299738
-9763 2603 5189 0.177622776028071 0.177622776028071 -105.0416219 39.7229569 -105.041622 39.7245543
-9764 5189 5657 0.106425186945832 0.106425186945832 -105.041622 39.7245543 -105.0416181 39.7255114
-9766 7507 7508 0.0438255563694837 0.0438255563694837 -105.0420882 39.7176598 -105.0420948 39.7180539
-9767 7508 4058 0.0100861958439265 0.0100861958439265 -105.0420948 39.7180539 -105.0420963 39.7181446
-9768 4058 7509 0.0353348287032789 0.0353348287032789 -105.0420963 39.7181446 -105.0421052 39.7184623
-9769 7509 7510 0.141940367411715 0.141940367411715 -105.0421052 39.7184623 -105.0421039 39.7197388
-9770 7510 1860 0.1765997957518 0.1765997957518 -105.0421039 39.7197388 -105.0421031 39.721327
-9771 1860 2604 0.182058234750596 0.182058234750596 -105.0421031 39.721327 -105.0421253 39.7229642
-9773 7511 6071 0.194146348690461 0.194146348690461 -105.0415559 39.7838742 -105.0415553 39.7856202
-9774 6071 2551 0.201763197291639 0.201763197291639 -105.0415553 39.7856202 -105.0415549 39.7874347
-9776 7513 7514 0.138564330925234 0.138564330925234 -105.0416463 39.7353826 -105.0416221 39.7366286
-9778 7515 686 0.203088920175274 0.203088920175274 -104.9286555 39.7401271 -104.9286673 39.7419535
-9779 686 1983 0.159242254447937 0.159242254447937 -104.9286673 39.7419535 -104.9286673 39.7433856
-9780 1983 1968 0.0374282123082397 0.0374282123082397 -104.9286673 39.7433856 -104.9286673 39.7437222
-9781 1968 4621 0.107323343903913 0.107323343903913 -104.9286673 39.7437222 -104.9285042 39.7446792
-9782 4621 6500 0.103085986769995 0.103085986769995 -104.9285042 39.7446792 -104.928642 39.7456002
-9783 6500 2474 0.199627678773596 0.199627678773596 -104.928642 39.7456002 -104.9286764 39.7473953
-9785 7516 2773 0.203153140061273 0.203153140061273 -104.9281792 39.765593 -104.9281046 39.7674191
-9786 2773 6896 0.203229996829736 0.203229996829736 -104.9281046 39.7674191 -104.928139 39.7692466
-9788 5346 7517 0.175498987947166 0.175498987947166 -104.9281276 39.716246 -104.9281289 39.7178243
-9789 7517 2340 0.175921748142843 0.175921748142843 -104.9281289 39.7178243 -104.9281254 39.7194064
-9790 2340 7518 0.175670305695009 0.175670305695009 -104.9281254 39.7194064 -104.9281106 39.7209862
-9791 7518 4783 0.243270382660677 0.243270382660677 -104.9281106 39.7209862 -104.9282926 39.7231695
-9792 4783 7519 0.239583168661009 0.239583168661009 -104.9282926 39.7231695 -104.9283056 39.7253241
-9793 7519 7520 0.0339478111046773 0.0339478111046773 -104.9283056 39.7253241 -104.9283056 39.7256294
-9794 7520 6369 0.269882786903903 0.269882786903903 -104.9283056 39.7256294 -104.9282948 39.7280565
-9795 6369 7521 0.132466649716692 0.132466649716692 -104.9282948 39.7280565 -104.928297 39.7292478
-9797 7522 5952 0.201032381768493 0.201032381768493 -104.9280878 39.7292519 -104.9280748 39.7310598
-9798 5952 5144 0.0336716082597733 0.0336716082597733 -104.9280748 39.7310598 -104.9280639 39.7313625
-9799 5144 5156 0.0326057448432317 0.0326057448432317 -104.9280639 39.7313625 -104.9280694 39.7316557
-9800 5156 2239 0.132989211721542 0.132989211721542 -104.9280694 39.7316557 -104.9280711 39.7328517
-9801 2239 4912 0.203447012505169 0.203447012505169 -104.9280711 39.7328517 -104.9280548 39.7346813
-9802 4912 6610 0.203165550596053 0.203165550596053 -104.9280548 39.7346813 -104.9280463 39.7365084
-18325 7524 7525 0.0423335034846442 0.0423335034846442 -105.0433477 39.777017 -105.0433434 39.7766363
-9804 7523 7526 0.205397811211562 0.205397811211562 -104.9280376 39.7382791 -104.9280609 39.7401262
-9806 2475 5910 0.203278121280476 0.203278121280476 -104.9281369 39.7474129 -104.9281491 39.749241
-9807 5910 7527 0.201064010596531 0.201064010596531 -104.9281491 39.749241 -104.9281577 39.7510492
-9808 7527 800 0.20177431388955 0.20177431388955 -104.9281577 39.7510492 -104.9281577 39.7528638
-9809 800 7528 0.202244021720306 0.202244021720306 -104.9281577 39.7528638 -104.9281699 39.7546826
-9811 7529 7530 0.20077292216439 0.20077292216439 -104.9282316 39.7565549 -104.9282076 39.7583604
-9813 3064 7531 0.184973544349351 0.184973544349351 -104.9282248 39.7601815 -104.9282311 39.761845
-9815 2632 5362 0.0801274749327823 0.0801274749327823 -105.0450779 39.7221456 -105.0450749 39.7228662
-9816 5362 5209 0.120994383618796 0.120994383618796 -105.0450749 39.7228662 -105.0451039 39.7239541
-9817 5209 6229 0.174510675248847 0.174510675248847 -105.0451039 39.7239541 -105.0451283 39.7255234
-9819 7532 7533 0.202574921872807 0.202574921872807 -105.0451861 39.7366574 -105.0451856 39.7384792
-9820 7533 7534 0.206092993605617 0.206092993605617 -105.0451856 39.7384792 -105.04517 39.7403326
-9821 7534 6444 0.205010086254005 0.205010086254005 -105.04517 39.7403326 -105.04517 39.7421763
-9822 6444 5302 0.199728470714505 0.199728470714505 -105.04517 39.7421763 -105.0451672 39.7439725
-9824 6656 4061 0.176855547581016 0.176855547581016 -105.0444508 39.7165618 -105.0444517 39.7181523
-9825 4061 7535 0.242794235361762 0.242794235361762 -105.0444517 39.7181523 -105.0445183 39.7203352
-9827 7536 6086 0.100844609398613 0.100844609398613 -105.0449356 39.7621062 -105.0449283 39.7630131
-9828 6086 7537 0.100375721785614 0.100375721785614 -105.0449283 39.7630131 -105.044927 39.7639158
-9829 7537 7538 0.0511607864629355 0.0511607864629355 -105.044927 39.7639158 -105.0449269 39.7643759
-9830 7538 5244 0.0495951653375039 0.0495951653375039 -105.0449269 39.7643759 -105.0449324 39.7648219
-9831 5244 7539 0.0519761520574234 0.0519761520574234 -105.0449324 39.7648219 -105.0449396 39.7652893
-9832 7539 6885 0.0502414304638419 0.0502414304638419 -105.0449396 39.7652893 -105.0449466 39.7657411
-9833 6885 7540 0.0499615650233233 0.0499615650233233 -105.0449466 39.7657411 -105.0449514 39.7661904
-9835 7541 7542 0.0351445858107267 0.0351445858107267 -105.044947 39.7666453 -105.0449552 39.7669613
-9838 7544 7545 0.105704455648811 0.105704455648811 -105.045174 39.7302935 -105.0451654 39.7312441
-9841 2556 7547 0.195916474446361 0.195916474446361 -105.0450916 39.78742 -105.0451023 39.7891819
-9842 6224 7548 0.277797708537317 0.277797708537317 -105.0451285 39.7257952 -105.0451568 39.7282934
-9845 7550 7551 0.196848690524097 0.196848690524097 -105.0451506 39.7693556 -105.0451465 39.7711259
-9846 7551 5751 0.202697238266629 0.202697238266629 -105.0451465 39.7711259 -105.0451459 39.7729488
-9847 5751 7552 0.00795047859513932 0.00795047859513932 -105.0451459 39.7729488 -105.0451456 39.7730203
-9848 7552 7553 0.129731824653906 0.129731824653906 -105.0451456 39.7730203 -105.0451406 39.774187
-9849 7553 6474 0.0638707232076661 0.0638707232076661 -105.0451406 39.774187 -105.0451381 39.7747614
-9850 6474 7554 0.0334363679568542 0.0334363679568542 -105.0451381 39.7747614 -105.0451388 39.7750621
-20015 10180 2696 0.367929886679579 0.367929886679579 -104.9873951 39.7535866 -104.984388 39.7559539
-9851 7554 7555 0.0146999916602211 0.0146999916602211 -105.0451388 39.7750621 -105.0451391 39.7751943
-9853 3170 7557 0.145194224111084 0.145194224111084 -105.0006969 39.7480168 -104.9994986 39.7489421
-9854 7557 7558 0.0835128735178232 0.0835128735178232 -104.9994986 39.7489421 -104.9988113 39.7494758
-9855 7558 7559 0.0585562750239905 0.0585562750239905 -104.9988113 39.7494758 -104.9983278 39.7498488
-9856 7559 6713 0.00611903533894709 0.00611903533894709 -104.9983278 39.7498488 -104.9982781 39.7498884
-9857 6713 7560 0.146921779963022 0.146921779963022 -104.9982781 39.7498884 -104.9970625 39.7508224
-9858 7560 5786 0.142766734982168 0.142766734982168 -104.9970625 39.7508224 -104.995889 39.7517359
-9859 5786 7561 0.147333855208616 0.147333855208616 -104.995889 39.7517359 -104.9946844 39.7526835
-11082 6285 2717 0.0986458045481302 0.0986458045481302 -105.0228094 39.7784186 -105.0239636 39.7784327
-9860 7561 7562 0.151251680669446 0.151251680669446 -104.9946844 39.7526835 -104.9934281 39.7536413
-9861 7562 7563 0.142846459249546 0.142846459249546 -104.9934281 39.7536413 -104.9922506 39.7545528
-9863 7564 3303 0.147900845771263 0.147900845771263 -104.9910557 39.7554766 -104.9898413 39.756424
-9865 5316 7565 0.0511409811054889 0.0511409811054889 -104.9500303 39.699284 -104.9506273 39.6992608
-9866 7565 7566 0.1490174605609 0.1490174605609 -104.9506273 39.6992608 -104.9519988 39.6984347
-9867 7566 3661 0.0439544289403808 0.0439544289403808 -104.9519988 39.6984347 -104.9521932 39.6980688
-9868 3661 3171 0.198821466322938 0.198821466322938 -104.9521932 39.6980688 -104.9534926 39.6965864
-9870 1541 4266 0.201902575581856 0.201902575581856 -104.9858935 39.7765349 -104.9858407 39.7783502
-9871 4266 280 0.117279281695443 0.117279281695443 -104.9858407 39.7783502 -104.9858487 39.7794049
-9873 1540 755 0.148174446133403 0.148174446133403 -104.9864968 39.7765361 -104.9864797 39.7752036
-9874 755 7567 0.109511008516479 0.109511008516479 -104.9864797 39.7752036 -104.986415 39.77422
-9875 7568 7569 0.504435059432168 0.504435059432168 -104.9863939 39.7873956 -104.986356 39.791932
-9876 5172 5629 0.20005288591208 0.20005288591208 -104.9862386 39.7165499 -104.9862279 39.718349
-9877 5629 2361 0.11286306962317 0.11286306962317 -104.9862279 39.718349 -104.9862305 39.719364
-9878 2361 4143 0.172420177163863 0.172420177163863 -104.9862305 39.719364 -104.9862384 39.7209146
-9879 4143 4747 0.180602807146659 0.180602807146659 -104.9862384 39.7209146 -104.986239 39.7225388
-9880 4747 6561 0.177131591078149 0.177131591078149 -104.986239 39.7225388 -104.9862601 39.7241317
-9881 6561 7570 0.0829182513004679 0.0829182513004679 -104.9862601 39.7241317 -104.986258 39.7248774
-9882 7570 7571 0.0849604902234264 0.0849604902234264 -104.986258 39.7248774 -104.9862197 39.7256409
-9883 7571 7572 0.039332803551206 0.039332803551206 -104.9862197 39.7256409 -104.9861902 39.7259939
-9885 3557 7573 0.0207104909362794 0.0207104909362794 -104.9745442 39.7546268 -104.9744777 39.7548059
-9886 7573 5510 0.0781175186423301 0.0781175186423301 -104.9744777 39.7548059 -104.9738469 39.7553142
-9887 5510 2897 0.0422469044547541 0.0422469044547541 -104.9738469 39.7553142 -104.9733528 39.7553064
-9889 3682 7574 0.193399178760091 0.193399178760091 -104.9839328 39.7475479 -104.982314 39.7487628
-9890 7574 7575 0.146546921459533 0.146546921459533 -104.982314 39.7487628 -104.9811177 39.7497067
-9891 7575 5359 0.14787210152478 0.14787210152478 -104.9811177 39.7497067 -104.9798903 39.7506437
-9892 5359 2682 0.147887137976142 0.147887137976142 -104.9798903 39.7506437 -104.9786543 39.7515742
-9893 2682 7576 0.0606198046830208 0.0606198046830208 -104.9786543 39.7515742 -104.9781607 39.7519656
-9895 4620 7577 0.120158924963582 0.120158924963582 -104.9873927 39.7448898 -104.9883537 39.7441013
-9896 7577 6702 0.146317084486212 0.146317084486212 -104.9883537 39.7441013 -104.9895702 39.7431758
-9897 6702 7578 0.146734472806395 0.146734472806395 -104.9895702 39.7431758 -104.9907772 39.7422377
-9898 7578 7579 0.145050961623328 0.145050961623328 -104.9907772 39.7422377 -104.9919734 39.7413127
-9899 7579 7580 0.00770297520415462 0.00770297520415462 -104.9919734 39.7413127 -104.9920391 39.7412653
-9900 7580 7581 0.13912090851738 0.13912090851738 -104.9920391 39.7412653 -104.993184 39.7403763
-9901 7581 7582 0.0411773493232422 0.0411773493232422 -104.993184 39.7403763 -104.9935535 39.7401388
-9903 2466 5908 0.205955273119341 0.205955273119341 -104.936135 39.7474151 -104.9361363 39.7492673
-9904 5908 7583 0.198595406640257 0.198595406640257 -104.9361363 39.7492673 -104.936128 39.7510533
-9905 7583 793 0.198805543342419 0.198805543342419 -104.936128 39.7510533 -104.9361307 39.7528412
-9906 793 7584 0.20315326209993 0.20315326209993 -104.9361307 39.7528412 -104.936128 39.7546682
-9907 7584 4357 0.202186223769753 0.202186223769753 -104.936128 39.7546682 -104.9361228 39.7564865
-9908 4357 7585 0.201775154423619 0.201775154423619 -104.9361228 39.7564865 -104.9360971 39.758301
-9910 3060 7586 0.187004558668975 0.187004558668975 -104.9361384 39.7601551 -104.9361181 39.7618368
-9913 7588 906 0.27600804903505 0.27600804903505 -104.9356152 39.7619945 -104.9356148 39.7644767
-9914 906 7589 0.12928644320394 0.12928644320394 -104.9356148 39.7644767 -104.9356129 39.7656394
-9916 6671 7590 0.0565797137930955 0.0565797137930955 -104.9362703 39.7162376 -104.9360407 39.7167148
-9917 5136 5151 0.022597397933528 0.022597397933528 -104.9361524 39.7336487 -104.9361564 39.7338519
-9918 5151 4906 0.0926596414619678 0.0926596414619678 -104.9361564 39.7338519 -104.9361612 39.7346852
-9919 4906 6616 0.200362179375123 0.200362179375123 -104.9361612 39.7346852 -104.9361597 39.7364871
-9920 6616 7591 0.195770799250889 0.195770799250889 -104.9361597 39.7364871 -104.9361168 39.7382474
-9921 7591 7592 0.206820957598552 0.206820957598552 -104.9361168 39.7382474 -104.93614 39.7401073
-9925 6556 7596 0.107470441058094 0.107470441058094 -104.9360156 39.7243514 -104.9360196 39.7253179
-9926 7596 7597 0.0323668981715237 0.0323668981715237 -104.9360196 39.7253179 -104.9360062 39.7256088
-9927 7597 7598 0.201852282407455 0.201852282407455 -104.9360062 39.7256088 -104.9360089 39.7274241
-9928 7598 7599 0.202247125760461 0.202247125760461 -104.9360089 39.7274241 -104.9360268 39.7292429
-9930 7600 4778 0.250803140264124 0.250803140264124 -104.936219 39.7208978 -104.9360157 39.7231479
-9932 1647 159 0.135282147606574 0.135282147606574 -105.0155835 39.6940639 -105.0145783 39.6931248
-9933 159 1722 0.249462326524164 0.249462326524164 -105.0145783 39.6931248 -105.0146011 39.6908814
-9935 6872 7601 0.692595810332122 0.692595810332122 -105.0147213 39.6885235 -105.0138082 39.6823346
-9938 6136 7603 0.0512178060127243 0.0512178060127243 -105.0288404 39.7288083 -105.0294393 39.7288116
-9939 7603 4004 0.0522781951051087 0.0522781951051087 -105.0294393 39.7288116 -105.0300506 39.7288149
-9941 2233 5134 0.145435815612977 0.145435815612977 -104.9384001 39.7328678 -104.9384246 39.7341756
-9942 5134 5149 0.0255338309274142 0.0255338309274142 -104.9384246 39.7341756 -104.9384043 39.7344047
-9943 5149 4904 0.0300983323579011 0.0300983323579011 -104.9384043 39.7344047 -104.9383957 39.7346753
-9944 4904 6618 0.200495686198041 0.200495686198041 -104.9383957 39.7346753 -104.9383982 39.7364784
-9945 6618 7604 0.20246265981009 0.20246265981009 -104.9383982 39.7364784 -104.9383746 39.7382991
-9946 7604 7605 0.201805887092512 0.201805887092512 -104.9383746 39.7382991 -104.9383973 39.7401139
-9948 6554 7606 0.105208061763435 0.105208061763435 -104.9382214 39.724358 -104.9382673 39.7253035
-9950 7607 7608 0.199144734139014 0.199144734139014 -104.9382968 39.725617 -104.9383271 39.7274078
-9951 7608 7609 0.20258734096308 0.20258734096308 -104.9383271 39.7274078 -104.9383356 39.7292297
-9953 2463 5906 0.205561292129907 0.205561292129907 -104.9383838 39.7474085 -104.9383649 39.7492571
-9954 5906 7610 0.199734725303301 0.199734725303301 -104.9383649 39.7492571 -104.9383462 39.7510533
-9955 7610 791 0.198807553256576 0.198807553256576 -104.9383462 39.7510533 -104.9383354 39.7528412
-9956 791 7612 0.203565382214395 0.203565382214395 -104.9383354 39.7528412 -104.9383286 39.7546719
-9957 7612 4355 0.201053666601032 0.201053666601032 -104.9383286 39.7546719 -104.9383178 39.75648
-9958 4355 7613 0.202489967264216 0.202489967264216 -104.9383178 39.75648 -104.9383029 39.758301
-9959 7613 3058 0.208369032173912 0.208369032173912 -104.9383029 39.758301 -104.9383099 39.7601749
-9960 3058 7614 0.183994647182619 0.183994647182619 -104.9383099 39.7601749 -104.9383054 39.7618296
-9961 7614 7615 0.026448194348771 0.026448194348771 -104.9383054 39.7618296 -104.9380774 39.7619904
-9963 1697 7616 0.173745206459615 0.173745206459615 -104.9384472 39.7162245 -104.938435 39.717787
-9964 7616 7617 0.177904510236026 0.177904510236026 -104.938435 39.717787 -104.9384215 39.7193869
-9965 7617 7618 0.1681272184952 0.1681272184952 -104.9384215 39.7193869 -104.9384446 39.7208988
-9966 7618 4776 0.251475825917774 0.251475825917774 -104.9384446 39.7208988 -104.9382401 39.7231549
-9970 3746 7622 0.0932397806145687 0.0932397806145687 -105.006247 39.715647 -105.0062385 39.7148085
-9971 7622 4665 0.0961947321638159 0.0961947321638159 -105.0062385 39.7148085 -105.0062556 39.7139435
-9972 4665 1332 0.102043584181961 0.102043584181961 -105.0062556 39.7139435 -105.0062556 39.7130258
-9973 1332 1387 0.0976513845787387 0.0976513845787387 -105.0062556 39.7130258 -105.0062556 39.7121476
-9974 1387 7623 0.104092676384345 0.104092676384345 -105.0062556 39.7121476 -105.0062462 39.7112115
-9975 7623 6849 0.109393568832939 0.109393568832939 -105.0062462 39.7112115 -105.0062462 39.7102277
-9976 6849 4705 0.0983852710944781 0.0983852710944781 -105.0062462 39.7102277 -105.0062462 39.7093429
-9977 4705 7487 0.0961948643858329 0.0961948643858329 -105.0062462 39.7093429 -105.006229 39.7084779
-9978 7487 7451 0.0969202901634112 0.0969202901634112 -105.006229 39.7084779 -105.0062376 39.7076063
-9979 7451 5688 0.104320933330224 0.104320933330224 -105.0062376 39.7076063 -105.0061947 39.7066687
-9980 5688 6313 0.0969730195141145 0.0969730195141145 -105.0061947 39.7066687 -105.006229 39.705797
-9981 6313 4962 0.100610954866441 0.100610954866441 -105.006229 39.705797 -105.0062033 39.7048924
-9982 4962 6819 0.104277744196946 0.104277744196946 -105.0062033 39.7048924 -105.0062204 39.7039547
-9983 6819 762 0.165411660097114 0.165411660097114 -105.0062204 39.7039547 -105.0062581 39.7024674
-9984 762 786 0.134384238449809 0.134384238449809 -105.0062581 39.7024674 -105.0053032 39.7015078
-9985 786 6001 0.286482254105535 0.286482254105535 -105.0053032 39.7015078 -105.0043064 39.6990482
-9986 6001 5764 0.0815255628306487 0.0815255628306487 -105.0043064 39.6990482 -105.0047699 39.6984076
-11219 8167 8168 0.194203872480123 0.194203872480123 -104.9348261 39.707407 -104.935108 39.705674
-9989 1491 149 0.200485771831907 0.200485771831907 -105.0061812 39.6948904 -105.0061897 39.6930874
-9990 149 1737 0.201708050623858 0.201708050623858 -105.0061897 39.6930874 -105.0061947 39.6912734
-9992 7313 5666 0.0386975210921627 0.0386975210921627 -104.9485996 39.7029027 -104.9482219 39.7030942
-9993 5666 522 0.0596630213761568 0.0596630213761568 -104.9482219 39.7030942 -104.947535 39.703187
-9994 522 4824 0.183721500047411 0.183721500047411 -104.947535 39.703187 -104.9453876 39.7032065
-9996 2254 7626 0.0984544191189144 0.0984544191189144 -105.0323072 39.7481785 -105.0334588 39.7481791
-9998 7627 7329 0.0447853238574392 0.0447853238574392 -104.9546377 39.7861919 -104.9541142 39.7862117
-9999 7329 2089 0.0938827847318007 0.0938827847318007 -104.9541142 39.7862117 -104.9530155 39.7862051
-10000 2089 2656 0.0939761287497805 0.0939761287497805 -104.9530155 39.7862051 -104.9519157 39.7861993
-10001 2656 4118 0.0946147674881846 0.0946147674881846 -104.9519157 39.7861993 -104.9508084 39.7861993
-10002 4118 6678 0.0843387660785722 0.0843387660785722 -104.9508084 39.7861993 -104.9498214 39.7861927
-10004 7628 7629 0.0982828610797249 0.0982828610797249 -104.9487399 39.7861861 -104.9475898 39.7861729
-10006 5220 5095 0.120687418213095 0.120687418213095 -104.9888573 39.7273254 -104.9902684 39.7273108
-10008 7630 6413 0.109655980715331 0.109655980715331 -105.016237 39.727486 -105.0175186 39.7275171
-10009 6413 4650 0.0986378512210248 0.0986378512210248 -105.0175186 39.7275171 -105.018672 39.7275171
-10010 4650 7631 0.100237060358401 0.100237060358401 -105.018672 39.7275171 -105.0198441 39.7275171
-10011 7631 3646 0.0896866361421679 0.0896866361421679 -105.0198441 39.7275171 -105.0208928 39.7275233
-10012 3646 4536 0.103452838278423 0.103452838278423 -105.0208928 39.7275233 -105.0221025 39.7275212
-10013 4536 7635 0.257545536230436 0.257545536230436 -105.0221025 39.7275212 -105.025114 39.7275076
-10015 7636 7637 0.0362863399636557 0.0362863399636557 -104.992437 39.727286 -104.9928501 39.7273605
-10016 7637 383 0.0504266976907422 0.0504266976907422 -104.9928501 39.7273605 -104.9934396 39.7273502
-10017 383 4682 0.05031361216385 0.05031361216385 -104.9934396 39.7273502 -104.9940278 39.7273407
-10018 4682 295 0.0506583134955018 0.0506583134955018 -104.9940278 39.7273407 -104.9946201 39.7273342
-10019 295 4954 0.0497648033018035 0.0497648033018035 -104.9946201 39.7273342 -104.995202 39.7273313
-10021 7222 7638 0.0496667318298412 0.0496667318298412 -104.9963829 39.727324 -104.9969636 39.7273173
-10022 7638 7639 0.0515292350274089 0.0515292350274089 -104.9969636 39.7273173 -104.9975661 39.7273117
-10023 7639 7640 0.0459421846016502 0.0459421846016502 -104.9975661 39.7273117 -104.9981033 39.7273146
-10024 7640 6642 0.0415805639651593 0.0415805639651593 -104.9981033 39.7273146 -104.9985895 39.7273172
-10026 3954 7641 0.0608839417644586 0.0608839417644586 -105.0001997 39.7273124 -105.0009116 39.7273175
-10027 7641 5604 0.0589168683204242 0.0589168683204242 -105.0009116 39.7273175 -105.0016005 39.7273224
-18697 6400 5868 0.177478717288294 0.177478717288294 -105.0391033 39.716558 -105.0390984 39.7149619
-10029 7642 3727 0.0543818576839699 0.0543818576839699 -105.0022097 39.7273219 -105.0028456 39.7273213
-10031 1239 4813 0.0888202681133088 0.0888202681133088 -105.0121506 39.7275003 -105.0131892 39.7275003
-10032 4813 2165 0.138535770033239 0.138535770033239 -105.0131892 39.7275003 -105.0140457 39.7285578
-10034 4003 7643 0.0510385957556285 0.0510385957556285 -105.0300602 39.7277169 -105.030657 39.7277196
-10035 7643 7027 0.0529371470208169 0.0529371470208169 -105.030657 39.7277196 -105.031276 39.7277224
-10036 7027 7644 0.0521180983869426 0.0521180983869426 -105.031276 39.7277224 -105.0318854 39.7277175
-10037 7644 7645 0.0537600930137936 0.0537600930137936 -105.0318854 39.7277175 -105.032514 39.7277125
-10038 7645 7646 0.0510719245712091 0.0510719245712091 -105.032514 39.7277125 -105.0331112 39.7277125
-10039 7646 7380 0.0524231241843369 0.0524231241843369 -105.0331112 39.7277125 -105.0337242 39.7277125
-10041 7647 3393 0.0461297697153075 0.0461297697153075 -105.0345838 39.7277084 -105.0351232 39.7277059
-10043 3394 7648 0.0445992136926928 0.0445992136926928 -105.0351404 39.7282472 -105.0356619 39.728244
-10044 7648 5709 0.0478831918410465 0.0478831918410465 -105.0356619 39.728244 -105.0362218 39.7282406
-10045 5709 7649 0.04548718787965 0.04548718787965 -105.0362218 39.7282406 -105.0367537 39.7282406
-10046 7649 7432 0.0484717768195407 0.0484717768195407 -105.0367537 39.7282406 -105.0373205 39.7282406
-10047 7432 7650 0.0437375947901795 0.0437375947901795 -105.0373205 39.7282406 -105.0378319 39.7282456
-10048 7650 7181 0.0470644094329018 0.0470644094329018 -105.0378319 39.7282456 -105.0383822 39.7282509
-10049 7181 7651 0.0469937345825467 0.0469937345825467 -105.0383822 39.7282509 -105.0389317 39.7282542
-10051 7652 7653 0.0459694430265719 0.0459694430265719 -105.0394723 39.7282575 -105.0400098 39.7282525
-10053 1099 7654 0.0453903142377476 0.0453903142377476 -105.0405735 39.7282472 -105.0411042 39.7282537
-10054 7654 7505 0.0471008131744324 0.0471008131744324 -105.0411042 39.7282537 -105.0416549 39.7282604
-10055 7505 7655 0.0439789031058606 0.0439789031058606 -105.0416549 39.7282604 -105.0421691 39.7282666
-10056 7655 3857 0.0492561227403211 0.0492561227403211 -105.0421691 39.7282666 -105.042745 39.7282736
-10057 3857 7656 0.0443253739114241 0.0443253739114241 -105.042745 39.7282736 -105.0432633 39.7282706
-10058 7656 5595 0.054031927582118 0.054031927582118 -105.0432633 39.7282706 -105.0438951 39.728267
-10059 5595 7657 0.0531350620266369 0.0531350620266369 -105.0438951 39.728267 -105.0445162 39.72828
-10060 7657 7548 0.0548032505549166 0.0548032505549166 -105.0445162 39.72828 -105.0451568 39.7282934
-10061 7548 7658 0.0961567115661112 0.0961567115661112 -105.0451568 39.7282934 -105.0462812 39.7282934
-10063 5169 6864 0.176934896372569 0.176934896372569 -104.9413494 39.7162383 -104.9413408 39.7146471
-10064 6864 3072 0.175748977102837 0.175748977102837 -104.9413408 39.7146471 -104.9413569 39.7130666
-10065 3072 7659 0.163990749862373 0.163990749862373 -104.9413569 39.7130666 -104.9413615 39.7115918
-10067 3292 100 0.415519355639239 0.415519355639239 -104.9432867 39.7038272 -104.9421088 39.7002019
-10069 5731 3291 0.149792492427265 0.149792492427265 -104.9434927 39.7051611 -104.9434841 39.703814
-10071 1152 7660 0.199718823841446 0.199718823841446 -104.9246199 39.7638103 -104.9246105 39.7656064
-10074 6897 7663 0.241129252553979 0.241129252553979 -104.9246113 39.7692598 -104.9245971 39.7714283
-13575 2 9131 0.186044551751923 0.186044551751923 -105.0158228 39.7323669 -105.016012 39.7307001
-10075 7663 7664 0.101783451026811 0.101783451026811 -104.9245971 39.7714283 -104.9246108 39.7723436
-10076 7664 7665 0.289306992458348 0.289306992458348 -104.9246108 39.7723436 -104.9246092 39.7749454
-10078 6814 7666 0.176577592408465 0.176577592408465 -104.9246289 39.7162454 -104.9245961 39.7178332
-12084 8539 8540 0.241661980997098 0.241661980997098 -104.9669081 39.7808609 -104.969601 39.7801972
-10079 7666 2342 0.176188966635474 0.176188966635474 -104.9245961 39.7178332 -104.9245907 39.7194177
-10080 2342 7667 0.17458351857957 0.17458351857957 -104.9245907 39.7194177 -104.9246096 39.7209877
-10081 7667 4785 0.245723521469374 0.245723521469374 -104.9246096 39.7209877 -104.924985 39.7231786
-10082 4785 7668 0.239480958817199 0.239480958817199 -104.924985 39.7231786 -104.9249904 39.7253323
-10084 5159 7669 0.0600603744377636 0.0600603744377636 -104.9245238 39.729244 -104.9245319 39.7297841
-10085 7669 5954 0.140826727437097 0.140826727437097 -104.9245319 39.7297841 -104.924551 39.7310505
-10086 5954 2241 0.203480008894553 0.203480008894553 -104.924551 39.7310505 -104.9245804 39.7328803
-10087 2241 4914 0.201437462212311 0.201437462212311 -104.9245804 39.7328803 -104.9246012 39.7346918
-10088 4914 6609 0.201231500080185 0.201231500080185 -104.9246012 39.7346918 -104.9246118 39.7365015
-10089 6609 7670 0.19693744890168 0.19693744890168 -104.9246118 39.7365015 -104.9245872 39.7382725
-11324 5142 5154 0.0222389853288599 0.0222389853288599 -104.930434 39.732387 -104.930434 39.732587
-16191 7205 5817 0.204256012568379 0.204256012568379 -104.9834023 39.693013 -104.983413 39.6911761
-10090 7670 7671 0.205535401167156 0.205535401167156 -104.9245872 39.7382725 -104.9246387 39.7401205
-10092 690 1979 0.162739101905996 0.162739101905996 -104.9246436 39.7419221 -104.924659 39.7433856
-10093 1979 1964 0.0397992509913644 0.0397992509913644 -104.924659 39.7433856 -104.9246161 39.743742
-10094 1964 6501 0.211697424646872 0.211697424646872 -104.9246161 39.743742 -104.9246462 39.7456457
-10095 6501 2478 0.193626535181341 0.193626535181341 -104.9246462 39.7456457 -104.924634 39.747387
-10096 2478 5912 0.20926896109112 0.20926896109112 -104.924634 39.747387 -104.9246315 39.749269
-10097 5912 7672 0.199195490528656 0.199195490528656 -104.9246315 39.749269 -104.9246245 39.7510604
-10098 7672 803 0.201999137953248 0.201999137953248 -104.9246245 39.7510604 -104.9246129 39.752877
-10099 803 7673 0.202608278725201 0.202608278725201 -104.9246129 39.752877 -104.9246133 39.7546991
-10100 7673 7674 0.205563081575912 0.205563081575912 -104.9246133 39.7546991 -104.9245919 39.7565477
-10101 7674 7675 0.203265447696938 0.203265447696938 -104.9245919 39.7565477 -104.924584 39.7583757
-10102 7675 3066 0.200093208772811 0.200093208772811 -104.924584 39.7583757 -104.9245426 39.7601749
-10103 3066 7676 0.18728661128175 0.18728661128175 -104.9245426 39.7601749 -104.9246105 39.7618584
-10105 7677 6370 0.270615231348292 0.270615231348292 -104.924985 39.7256294 -104.9249818 39.7280631
-10106 6370 7678 0.131279919418432 0.131279919418432 -104.9249818 39.7280631 -104.9249925 39.7292437
-10108 6507 7679 0.113730821063582 0.113730821063582 -104.924642 39.7791151 -104.9246153 39.7801377
-10109 7679 6937 0.113695193803527 0.113695193803527 -104.9246153 39.7801377 -104.9245981 39.7811601
-10111 759 6605 0.202732181741343 0.202732181741343 -104.9246452 39.7765808 -104.9246358 39.778404
-10113 5167 7680 0.173408491477124 0.173408491477124 -104.947367 39.7162531 -104.9473666 39.7178126
-10114 7680 2354 0.177734023432563 0.177734023432563 -104.9473666 39.7178126 -104.947365 39.719411
-11350 4801 4798 0.0316348130565604 0.0316348130565604 -105.0127766 39.7620198 -105.0131467 39.7620198
-10116 4156 4743 0.17475749351339 0.17475749351339 -104.9473677 39.7209707 -104.9474028 39.7225421
-10117 4743 6539 0.176484628682033 0.176484628682033 -104.9474028 39.7225421 -104.9473731 39.7241291
-10118 6539 7681 0.164515462701881 0.164515462701881 -104.9473731 39.7241291 -104.9473329 39.7256083
-10119 7681 1204 0.1695248683934 0.1695248683934 -104.9473329 39.7256083 -104.9473134 39.7271328
-10120 1204 7682 0.0218451192643306 0.0218451192643306 -104.9473134 39.7271328 -104.9473072 39.7273292
-10121 7682 3779 0.199697518421981 0.199697518421981 -104.9473072 39.7273292 -104.9472954 39.7291251
-10123 7683 953 0.176289634687175 0.176289634687175 -104.9472804 39.7305107 -104.947288 39.7320961
-10124 953 7684 0.174800312403385 0.174800312403385 -104.947288 39.7320961 -104.9472785 39.7336681
-10125 7684 4892 0.161444055531775 0.161444055531775 -104.9472785 39.7336681 -104.947281 39.73512
-10126 4892 7685 0.184678055138444 0.184678055138444 -104.947281 39.73512 -104.9472977 39.7367808
-10127 7685 5490 0.173583753319791 0.173583753319791 -104.9472977 39.7367808 -104.9472672 39.7383417
-10128 5490 3022 0.0680856463383254 0.0680856463383254 -104.9472672 39.7383417 -104.9472629 39.738954
-18346 1684 7686 0.206269012853702 0.206269012853702 -105.0352055 39.7676655 -105.0352172 39.7695205
-10129 3022 608 0.0626103319165951 0.0626103319165951 -104.9472629 39.738954 -104.9472743 39.739517
-10130 608 7687 0.0714136208255542 0.0714136208255542 -104.9472743 39.739517 -104.9472834 39.7401592
-10132 751 1571 0.141098847639908 0.141098847639908 -104.9475049 39.7764171 -104.9475365 39.7776858
-10133 1571 7688 0.136160171060933 0.136160171060933 -104.9475365 39.7776858 -104.9475279 39.7789103
-10134 7688 355 0.0540631216358879 0.0540631216358879 -104.9475279 39.7789103 -104.9475022 39.7793961
-11381 7 8238 0.233069627316498 0.233069627316498 -104.9443453 39.7800941 -104.9470651 39.7802508
-10136 3031 7689 0.212052347410258 0.212052347410258 -104.9478224 39.759056 -104.9478369 39.760963
-10139 5644 4349 0.138628444284297 0.138628444284297 -104.9476672 39.7557083 -104.9476591 39.756955
-10140 4349 6347 0.140074045976997 0.140074045976997 -104.9476591 39.756955 -104.9476508 39.7582147
-10143 7690 7691 0.036360966917709 0.036360966917709 -104.9475732 39.784427 -104.9475747 39.784754
-13576 9131 2186 0.0494030185182178 0.0494030185182178 -105.016012 39.7307001 -105.0164597 39.7309809
-10144 7691 7692 0.019090691679145 0.019090691679145 -104.9475747 39.784754 -104.9475818 39.7849256
-10145 7692 7629 0.138695116564921 0.138695116564921 -104.9475818 39.7849256 -104.9475898 39.7861729
-10146 7629 7693 0.131928656438508 0.131928656438508 -104.9475898 39.7861729 -104.9475739 39.7873593
-10148 7694 7695 0.805329256404935 0.805329256404935 -104.947581 39.7874249 -104.9475812 39.7946674
-10149 6359 2392 0.110097282540218 0.110097282540218 -104.9475481 39.7728942 -104.9475383 39.7738843
-10150 2392 7696 0.139362539585628 0.139362539585628 -104.9475383 39.7738843 -104.9475469 39.7751376
-10152 7697 698 0.20136290155584 0.20136290155584 -104.9476781 39.7401632 -104.9476788 39.7419741
-10153 698 7698 0.201586501703314 0.201586501703314 -104.9476788 39.7419741 -104.947687 39.743787
-10155 7699 894 0.281945866493957 0.281945866493957 -104.9474853 39.7619327 -104.9474844 39.7644683
-10156 894 4477 0.138715715492195 0.138715715492195 -104.9474844 39.7644683 -104.9474831 39.7657158
-10157 4477 2802 0.13960527461951 0.13960527461951 -104.9474831 39.7657158 -104.9474844 39.7669713
-10158 2802 5268 0.12511734550188 0.12511734550188 -104.9474844 39.7669713 -104.9475125 39.7680963
-10161 4794 2158 0.120027593160305 0.120027593160305 -105.0131497 39.7568505 -105.0144627 39.756468
-11430 319 412 0.178792036530689 0.178792036530689 -105.0307715 39.7835551 -105.0287256 39.7838921
-11459 224 8268 0.046644646559722 0.046644646559722 -104.9412461 39.7790391 -104.9407004 39.7790485
-10165 7703 1119 0.0497953640754775 0.0497953640754775 -105.0398923 39.7567045 -105.0404748 39.756701
-10166 1119 7704 0.0511005498462644 0.0511005498462644 -105.0404748 39.756701 -105.0410725 39.7566932
-10167 7704 7496 0.0499039643779027 0.0499039643779027 -105.0410725 39.7566932 -105.0416562 39.756701
-10168 7496 7705 0.050496479725261 0.050496479725261 -105.0416562 39.756701 -105.0422469 39.7567047
-10169 7705 3842 0.0493242373326315 0.0493242373326315 -105.0422469 39.7567047 -105.0428239 39.7567068
-10170 3842 7706 0.0511368055077475 0.0511368055077475 -105.0428239 39.7567068 -105.0434221 39.7567041
-10171 7706 5553 0.0516924374908146 0.0516924374908146 -105.0434221 39.7567041 -105.0440268 39.7567014
-10173 5552 7707 0.497797594406761 0.497797594406761 -105.0440147 39.7560876 -105.049838 39.756086
-10174 7708 6434 0.169523036166009 0.169523036166009 -105.0158257 39.7560437 -105.0178088 39.7560453
-10175 6434 4659 0.115447272077866 0.115447272077866 -105.0178088 39.7560453 -105.0191593 39.7560504
-10176 4659 7709 0.0610101187906253 0.0610101187906253 -105.0191593 39.7560504 -105.019873 39.7560486
-10177 7709 1282 0.0565434694494923 0.0565434694494923 -105.019873 39.7560486 -105.0205344 39.7560422
-10178 1282 4541 0.131357223988847 0.131357223988847 -105.0205344 39.7560422 -105.022071 39.7560345
-10179 4541 7710 0.132140893738002 0.132140893738002 -105.022071 39.7560345 -105.0236168 39.7560347
-10180 7710 7711 0.0696094980092003 0.0696094980092003 -105.0236168 39.7560347 -105.0244311 39.7560352
-10181 7711 7712 0.0619159407722012 0.0619159407722012 -105.0244311 39.7560352 -105.0251554 39.7560349
-10183 4024 7713 0.0484316979076645 0.0484316979076645 -105.0299253 39.7566682 -105.0304918 39.7566748
-10184 7713 5669 0.0520933568419111 0.0520933568419111 -105.0304918 39.7566748 -105.0311012 39.7566748
-10185 5669 7714 0.0498366654518003 0.0498366654518003 -105.0311012 39.7566748 -105.0316842 39.7566755
-10186 7714 7030 0.0492177257934086 0.0492177257934086 -105.0316842 39.7566755 -105.0322599 39.7566691
-19495 7469 10524 0.0198269485983196 0.0198269485983196 -104.9883525 39.7084582 -104.9883547 39.7082799
-10188 7715 7378 0.0506230529615687 0.0506230529615687 -105.0328425 39.7566691 -105.0334347 39.7566691
-10189 7378 1594 0.0506283698630863 0.0506283698630863 -105.0334347 39.7566691 -105.0340269 39.7566757
-10190 1594 3411 0.0491667634825631 0.0491667634825631 -105.0340269 39.7566757 -105.034602 39.7566823
-10191 3411 7717 0.105657808428602 0.105657808428602 -105.034602 39.7566823 -105.035838 39.756686
-10192 7717 7718 0.0940313147486449 0.0940313147486449 -105.035838 39.756686 -105.036938 39.756686
-10193 5546 7719 0.0535907784173066 0.0535907784173066 -104.9874887 39.6894093 -104.9868624 39.6894114
-10194 7719 7720 0.0530201286004126 0.0530201286004126 -104.9868624 39.6894114 -104.9862428 39.6894062
-10195 7720 573 0.0448716576991108 0.0448716576991108 -104.9862428 39.6894062 -104.9857184 39.6894083
-10196 573 4986 0.0479600812575622 0.0479600812575622 -104.9857184 39.6894083 -104.9851579 39.6894075
-10197 4986 7721 0.0515371092658245 0.0515371092658245 -104.9851579 39.6894075 -104.9845556 39.6894094
-10198 7721 7722 0.0482855644451139 0.0482855644451139 -104.9845556 39.6894094 -104.9839913 39.6894112
-10199 7722 7723 0.0490137565654263 0.0490137565654263 -104.9839913 39.6894112 -104.9834185 39.689408
-10200 7723 7724 0.0538141529532141 0.0538141529532141 -104.9834185 39.689408 -104.9827896 39.6894045
-10201 7724 7725 0.0529684395598169 0.0529684395598169 -104.9827896 39.6894045 -104.9821706 39.6894094
-10202 7725 7726 0.0518724854854175 0.0518724854854175 -104.9821706 39.6894094 -104.9815644 39.6894136
-10203 7726 7727 0.04727777135042 0.04727777135042 -104.9815644 39.6894136 -104.9810119 39.6894094
-10204 7727 3618 0.0472245509762166 0.0472245509762166 -104.9810119 39.6894094 -104.98046 39.6894076
-10205 3618 7728 0.0514814686878799 0.0514814686878799 -104.98046 39.6894076 -104.9798585 39.6893971
-10206 7728 7729 0.0518724978816832 0.0518724978816832 -104.9798585 39.6893971 -104.9792523 39.6893929
-10207 7729 7730 0.0486618474944759 0.0486618474944759 -104.9792523 39.6893929 -104.9786837 39.6894012
-10208 7730 5100 0.0498159875736575 0.0498159875736575 -104.9786837 39.6894012 -104.9781016 39.6893933
-10209 5100 7731 0.0971611599806991 0.0971611599806991 -104.9781016 39.6893933 -104.9769661 39.6893959
-10210 7731 7732 0.0537738540349519 0.0537738540349519 -104.9769661 39.6893959 -104.9763378 39.6893855
-10211 7732 7733 0.048775543246574 0.048775543246574 -104.9763378 39.6893855 -104.9757679 39.6893761
-10213 7734 1529 0.0486197396153865 0.0486197396153865 -104.9751677 39.6893788 -104.9745995 39.6893814
-10214 1529 6533 0.0236551874497837 0.0236551874497837 -104.9745995 39.6893814 -104.9743231 39.6893856
-10216 1748 5658 0.0690555262759062 0.0690555262759062 -104.9722475 39.6901911 -104.9716542 39.6897701
-10217 5658 6638 0.0663249571304488 0.0663249571304488 -104.9716542 39.6897701 -104.9710843 39.6893658
-10220 5429 5327 0.0495383987324496 0.0495383987324496 -104.9698913 39.6893394 -104.9693125 39.6893294
-10221 5327 7400 0.0488963197685218 0.0488963197685218 -104.9693125 39.6893294 -104.9687412 39.6893196
-10223 3485 7735 0.019269671719438 0.019269671719438 -104.9637153 39.6893166 -104.9634901 39.6893161
-10224 7735 6080 0.0527262897841316 0.0527262897841316 -104.9634901 39.6893161 -104.9628739 39.6893149
-10225 6080 7736 0.0518491308674393 0.0518491308674393 -104.9628739 39.6893149 -104.9622681 39.6893045
-10226 7736 3699 0.0473298672855462 0.0473298672855462 -104.9622681 39.6893045 -104.9617151 39.6892951
-10227 3699 4573 0.0991704429707509 0.0991704429707509 -104.9617151 39.6892951 -104.9605564 39.6893149
-10228 4573 7737 0.1025259519958 0.1025259519958 -104.9605564 39.6893149 -104.9593582 39.6893161
-10229 7737 7738 0.0567267064163172 0.0567267064163172 -104.9593582 39.6893161 -104.9586954 39.6893271
-10230 7738 6520 0.0485788201580239 0.0485788201580239 -104.9586954 39.6893271 -104.9581278 39.6893365
-11562 4026 8321 0.0489622731658017 0.0489622731658017 -105.029918 39.7580208 -105.0304907 39.7580283
-10232 7739 6163 0.0483379374847878 0.0483379374847878 -104.9575425 39.6893331 -104.9569776 39.6893298
-10233 6163 7740 0.0487487301271992 0.0487487301271992 -104.9569776 39.6893298 -104.9564079 39.6893332
-10234 7740 2742 0.0481924761788732 0.0481924761788732 -104.9564079 39.6893332 -104.9558447 39.6893365
-10236 7741 5233 0.0485076742472366 0.0485076742472366 -104.9552614 39.6893365 -104.9546945 39.6893365
-10237 5233 7742 0.0501847785254714 0.0501847785254714 -104.9546945 39.6893365 -104.954108 39.6893365
-10238 7742 3175 0.0518961094220257 0.0518961094220257 -104.954108 39.6893365 -104.9535015 39.6893365
-10239 3175 7743 0.0477088260821206 0.0477088260821206 -104.9535015 39.6893365 -104.952944 39.68933
-10240 7743 5000 0.0480456206813873 0.0480456206813873 -104.952944 39.68933 -104.9523825 39.6893301
-10241 5000 7744 0.0507496702288809 0.0507496702288809 -104.9523825 39.6893301 -104.9517894 39.689329
-10242 7744 732 0.0500052182058767 0.0500052182058767 -104.9517894 39.689329 -104.951205 39.689328
-10243 732 7062 0.0993780460470829 0.0993780460470829 -104.951205 39.689328 -104.9500436 39.6893239
-10244 7062 568 0.179642317491375 0.179642317491375 -104.9500436 39.6893239 -104.9479442 39.6893133
-10245 568 6375 0.221062471524952 0.221062471524952 -104.9479442 39.6893133 -104.9453607 39.6893067
-10246 6375 7745 0.0502032533440095 0.0502032533440095 -104.9453607 39.6893067 -104.944774 39.68931
-10247 7745 4829 0.0496813089217868 0.0496813089217868 -104.944774 39.68931 -104.9441934 39.6893133
-10248 4829 7746 0.10134770204508 0.10134770204508 -104.9441934 39.6893133 -104.943009 39.6893199
-10249 7746 7747 0.19682163321823 0.19682163321823 -104.943009 39.6893199 -104.9407088 39.6893132
-10250 7747 7748 0.0148866727143693 0.0148866727143693 -104.9407088 39.6893132 -104.9405349 39.6893172
-10251 7748 1062 0.0938295581784946 0.0938295581784946 -104.9405349 39.6893172 -104.9394384 39.6893266
-10252 1062 1700 0.0910684866897701 0.0910684866897701 -104.9394384 39.6893266 -104.9383741 39.6893266
-10254 7749 7750 0.088136254722807 0.088136254722807 -104.9383055 39.6893261 -104.9372755 39.6893199
-10255 7750 7751 0.0102851011578735 0.0102851011578735 -104.9372755 39.6893199 -104.9371553 39.6893199
-10256 7751 6675 0.0807868256992296 0.0807868256992296 -104.9371553 39.6893199 -104.9362112 39.6893266
-10258 5566 7541 0.078830239472867 0.078830239472867 -105.0440247 39.7666482 -105.044947 39.7666453
-10259 7541 7752 0.71007082854504 0.71007082854504 -105.044947 39.7666453 -105.0532546 39.7666043
-10260 7753 7754 0.0555561071332203 0.0555561071332203 -105.0252922 39.7665061 -105.0259422 39.7665053
-10261 7754 6755 0.141035585683202 0.141035585683202 -105.0259422 39.7665053 -105.0275923 39.7665033
-10262 6755 3980 0.200595577576722 0.200595577576722 -105.0275923 39.7665033 -105.0299392 39.7664918
-10263 3980 7039 0.198840384599884 0.198840384599884 -105.0299392 39.7664918 -105.0322656 39.7664861
-10264 7039 3426 0.202741409948142 0.202741409948142 -105.0322656 39.7664861 -105.0346376 39.7664739
-10266 6623 1789 0.083407855110509 0.083407855110509 -104.9815624 39.6955402 -104.9815787 39.6947902
-10267 1789 7208 0.197984235440067 0.197984235440067 -104.9815787 39.6947902 -104.9815692 39.6930097
-10268 7208 5821 0.204810690510051 0.204810690510051 -104.9815692 39.6930097 -104.9815757 39.6911678
-10269 5821 7726 0.195060536702397 0.195060536702397 -104.9815757 39.6911678 -104.9815644 39.6894136
-10270 7726 7755 1.41312394826698 1.41312394826698 -104.9815644 39.6894136 -104.9816388 39.6767052
-10271 3161 7756 0.200885724863022 0.200885724863022 -104.9814586 39.7164952 -104.9814659 39.7146886
-10272 7756 3082 0.196495825635974 0.196495825635974 -104.9814659 39.7146886 -104.9815443 39.7129225
-10273 3082 3194 0.201063950220373 0.201063950220373 -104.9815443 39.7129225 -104.9815359 39.7111143
-10275 6110 1901 0.201670811128578 0.201670811128578 -104.9815389 39.7093013 -104.9815067 39.7074878
-10277 441 5814 0.0584483555155252 0.0584483555155252 -105.01516 39.7314761 -105.0151443 39.7320016
-10278 5814 5376 0.210901593054405 0.210901593054405 -105.0151443 39.7320016 -105.0150947 39.7338979
-10282 2638 5211 0.135802363910714 0.135802363910714 -105.015182 39.7220707 -105.015182 39.723292
-10284 5376 7115 0.169184130655589 0.169184130655589 -105.0150947 39.7338979 -105.0141573 39.7352378
-10286 6686 7758 0.0966310054355491 0.0966310054355491 -104.9498944 39.7710718 -104.9487638 39.7710638
-10287 7758 7759 0.103268100856542 0.103268100856542 -104.9487638 39.7710638 -104.9475555 39.7710608
-10289 7760 7761 0.0931830345887697 0.0931830345887697 -104.9463967 39.7710806 -104.9453067 39.7710608
-10290 7761 870 0.209204581827195 0.209204581827195 -104.9453067 39.7710608 -104.9428589 39.7710708
-10292 6165 6785 0.0415827902651337 0.0415827902651337 -104.9688892 39.7713666 -104.968405 39.7713299
-10293 6785 7357 0.102001818508737 0.102001818508737 -104.968405 39.7713299 -104.967212 39.7713035
-10294 7357 5405 0.112234858942921 0.112234858942921 -104.967212 39.7713035 -104.9658988 39.7713101
-10295 5405 3138 0.103097089620426 0.103097089620426 -104.9658988 39.7713101 -104.9646947 39.7713662
-10296 3138 7762 0.00572680722694595 0.00572680722694595 -104.9646947 39.7713662 -104.964756 39.771387
-10297 6991 6399 0.078057620939779 0.078057620939779 -104.9317465 39.7717305 -104.9308332 39.7717367
-10299 3614 2112 0.200468732564122 0.200468732564122 -104.9293312 39.771412 -104.9269856 39.7714213
-10300 2112 7766 0.09707938317328 0.09707938317328 -104.9269856 39.7714213 -104.9258497 39.7714216
-10301 7766 7663 0.107055697326901 0.107055697326901 -104.9258497 39.7714216 -104.9245971 39.7714283
-10303 869 7100 0.0985676933380822 0.0985676933380822 -104.9428549 39.7705626 -104.9417016 39.7705626
-11668 7785 8358 0.00862504224759753 0.00862504224759753 -105.0393001 39.7639573 -105.039401 39.7639563
-10305 2502 7767 0.133821378293258 0.133821378293258 -105.0095013 39.7831276 -105.0110634 39.7832133
-10306 7767 4793 0.137187308277769 0.137187308277769 -105.0110634 39.7832133 -105.0126685 39.7832397
-10307 4793 2155 0.138619015999951 0.138619015999951 -105.0126685 39.7832397 -105.0142907 39.7832331
-10308 2155 6302 0.131440648996103 0.131440648996103 -105.0142907 39.7832331 -105.015828 39.7832739
-10309 6302 6427 0.0971164197766542 0.0971164197766542 -105.015828 39.7832739 -105.01696 39.7833518
-10310 6427 5345 0.100480546860285 0.100480546860285 -105.01696 39.7833518 -105.0181359 39.7833518
-10311 5345 4641 0.0997483726431183 0.0997483726431183 -105.0181359 39.7833518 -105.0193032 39.7833584
-10312 4641 1266 0.0975658909823655 0.0975658909823655 -105.0193032 39.7833584 -105.0204447 39.7833782
-10313 1266 4540 0.103828265337942 0.103828265337942 -105.0204447 39.7833782 -105.0216205 39.7836137
-10314 4540 6286 0.102716645609349 0.102716645609349 -105.0216205 39.7836137 -105.0227972 39.7838025
-10315 6286 2720 0.0979601908800836 0.0979601908800836 -105.0227972 39.7838025 -105.0239436 39.7838066
-10317 2598 5187 0.177611938217315 0.177611938217315 -105.0394444 39.7229454 -105.0394481 39.7245427
-10318 5187 5655 0.104799417596727 0.104799417596727 -105.0394481 39.7245427 -105.0394723 39.725485
-10319 5655 7768 0.00220165954800827 0.00220165954800827 -105.0394723 39.725485 -105.0394723 39.7255048
-10321 7769 6068 0.194290902090962 0.194290902090962 -105.0392429 39.783874 -105.0392423 39.7856213
-10322 6068 2548 0.201654782967819 0.201654782967819 -105.0392423 39.7856213 -105.0392299 39.7874348
-10323 2548 7770 0.410001897212591 0.410001897212591 -105.0392299 39.7874348 -105.039251 39.791122
-10324 6390 7771 0.13140278725488 0.13140278725488 -105.039295 39.7475739 -105.0393066 39.7487556
-10325 7771 7772 0.135404012160521 0.135404012160521 -105.0393066 39.7487556 -105.0392981 39.7499733
-10326 7772 7773 0.135386059531021 0.135386059531021 -105.0392981 39.7499733 -105.0393133 39.7511908
-10327 7773 5541 0.102606539353157 0.102606539353157 -105.0393133 39.7511908 -105.0393273 39.7521135
-10328 5541 2410 0.100544408114452 0.100544408114452 -105.0393273 39.7521135 -105.0393531 39.7530175
-10329 2410 4294 0.100431298726032 0.100431298726032 -105.0393531 39.7530175 -105.039314 39.7539202
-10330 4294 7776 0.0501127826077893 0.0501127826077893 -105.039314 39.7539202 -105.0393033 39.7543708
-10331 7776 7777 0.0533516278326779 0.0533516278326779 -105.0393033 39.7543708 -105.0393054 39.7548506
-10332 7777 7778 0.0636719509277386 0.0636719509277386 -105.0393054 39.7548506 -105.0393109 39.7554232
-10333 7778 7702 0.142867174122929 0.142867174122929 -105.0393109 39.7554232 -105.0393233 39.756708
-10334 7702 2984 0.198167346423749 0.198167346423749 -105.0393233 39.756708 -105.039304 39.7584901
-10336 7779 1879 0.0577899859499687 0.0577899859499687 -105.0393085 39.7589141 -105.0393141 39.7594338
-10337 1879 7780 0.0975763172911078 0.0975763172911078 -105.0393141 39.7594338 -105.0393055 39.7603113
-10338 7780 7781 0.049615978114649 0.049615978114649 -105.0393055 39.7603113 -105.0393022 39.7607575
-10339 7781 7782 0.151461070035101 0.151461070035101 -105.0393022 39.7607575 -105.0392921 39.7621196
-10340 7782 7783 0.00828406172358757 0.00828406172358757 -105.0392921 39.7621196 -105.0392924 39.7621941
-10341 7783 7784 0.0408643643931965 0.0408643643931965 -105.0392924 39.7621941 -105.039294 39.7625616
-10342 7784 7785 0.155195634964959 0.155195634964959 -105.039294 39.7625616 -105.0393001 39.7639573
-10343 7785 6879 0.203175602967298 0.203175602967298 -105.0393001 39.7639573 -105.0393037 39.7657845
-10344 6879 1690 0.204417069906845 0.204417069906845 -105.0393037 39.7657845 -105.0393241 39.7676228
-10345 1690 7786 0.203521868851454 0.203521868851454 -105.0393241 39.7676228 -105.0393141 39.7694531
-10346 7786 2437 0.163479024443522 0.163479024443522 -105.0393141 39.7694531 -105.0393174 39.7709233
-10347 2437 2436 0.0381118302971424 0.0381118302971424 -105.0393174 39.7709233 -105.0393043 39.7712659
-10348 2436 5735 0.132411428624817 0.132411428624817 -105.0393043 39.7712659 -105.0393 39.7724567
-10349 5735 7787 0.0686968769014223 0.0686968769014223 -105.0393 39.7724567 -105.0393035 39.7730745
-10350 7787 5524 0.0876693797427073 0.0876693797427073 -105.0393035 39.7730745 -105.0392946 39.7738629
-10352 6462 6461 0.046218455398192 0.046218455398192 -105.0392949 39.7752627 -105.0392863 39.7756783
-10353 6461 7788 0.114101346725552 0.114101346725552 -105.0392863 39.7756783 -105.0392748 39.7767044
-10354 7788 7789 0.186352786707342 0.186352786707342 -105.0392748 39.7767044 -105.0392328 39.77838
-10355 7789 7790 0.201819126377908 0.201819126377908 -105.0392328 39.77838 -105.0392371 39.780195
-10356 7790 1426 0.209991688515331 0.209991688515331 -105.0392371 39.780195 -105.0392391 39.7820835
-10357 1426 7188 0.131433687737374 0.131433687737374 -105.0392391 39.7820835 -105.0392459 39.7832655
-10361 7791 7792 0.0221530824058495 0.0221530824058495 -105.0397234 39.7195311 -105.0397277 39.7197303
-10362 7792 1857 0.178051972210932 0.178051972210932 -105.0397277 39.7197303 -105.0397097 39.7213315
-10363 1857 2599 0.180197954723075 0.180197954723075 -105.0397097 39.7213315 -105.0397277 39.722952
-10365 7793 7794 0.133052671328159 0.133052671328159 -105.0393289 39.7329999 -105.0393119 39.7341964
-10366 7794 7795 0.00451480555637825 0.00451480555637825 -105.0393119 39.7341964 -105.0393113 39.734237
-10368 7796 316 0.0810108111113459 0.0810108111113459 -105.014664 39.7254193 -105.0137199 39.7254787
-10369 316 7797 0.0132929754360195 0.0132929754360195 -105.0137199 39.7254787 -105.013565 39.7254886
-10371 7798 1715 0.146657336243231 0.146657336243231 -105.0425 39.6923732 -105.0433411 39.691224
-10373 4991 5886 0.0409007612541298 0.0409007612541298 -105.0155876 39.7516074 -105.015177 39.7517962
-10374 5886 7799 0.0133509392362763 0.0133509392362763 -105.015177 39.7517962 -105.0150392 39.7518527
-10375 7799 6955 0.0302227835880131 0.0302227835880131 -105.0150392 39.7518527 -105.0147293 39.7519835
-10376 6955 120 0.355050454211798 0.355050454211798 -105.0147293 39.7519835 -105.011137 39.753586
-10378 6998 7800 0.287485052767515 0.287485052767515 -104.931634 39.787286 -104.9282697 39.7872538
-10379 7800 2107 0.0799880901292185 0.0799880901292185 -104.9282697 39.7872538 -104.9273336 39.78726
-10381 7801 7330 0.0459693673262965 0.0459693673262965 -104.954635 39.787386 -104.954097 39.7873857
-10382 7330 2069 0.0513405380116942 0.0513405380116942 -104.954097 39.7873857 -104.9534962 39.7873923
-10383 2069 2090 0.0410799126461524 0.0410799126461524 -104.9534962 39.7873923 -104.9530155 39.7873989
-10384 2090 2665 0.0609107459124439 0.0609107459124439 -104.9530155 39.7873989 -104.9523031 39.7873791
-10385 2665 2657 0.0344762888596363 0.0344762888596363 -104.9523031 39.7873791 -104.9518997 39.7873725
-10386 2657 4120 0.0653569613260274 0.0653569613260274 -104.9518997 39.7873725 -104.951135 39.787386
-10387 4120 4119 0.025633469399215 0.025633469399215 -104.951135 39.787386 -104.950835 39.787386
-10388 4119 6679 0.0800230712461371 0.0800230712461371 -104.950835 39.787386 -104.9498986 39.7873733
-10389 6679 7803 0.0968450624184265 0.0968450624184265 -104.9498986 39.7873733 -104.9487657 39.7873469
-10390 7803 7693 0.101842612257672 0.101842612257672 -104.9487657 39.7873469 -104.9475739 39.7873593
-10392 4983 7804 0.15108225604362 0.15108225604362 -104.9800351 39.7873785 -104.978267 39.7873917
-10393 7804 7805 0.125613899900368 0.125613899900368 -104.978267 39.7873917 -104.9768041 39.7875035
-10394 7805 7806 0.243703765368195 0.243703765368195 -104.9768041 39.7875035 -104.9740703 39.7881284
-10395 6511 833 0.205796808568101 0.205796808568101 -104.940586 39.787473 -104.942994 39.787434
-10396 833 1752 0.10962713348726 0.10962713348726 -104.942994 39.787434 -104.944277 39.787439
-10399 7807 6997 0.603696470077293 0.603696470077293 -104.9388993 39.787086 -104.931834 39.787086
-10401 6510 7620 0.115341473380206 0.115341473380206 -104.9405839 39.7877872 -104.939234 39.787786
-10403 1004 4224 0.0542745916357659 0.0542745916357659 -104.9875698 39.7873956 -104.9869346 39.7873956
-10405 7568 7808 0.0520701135747565 0.0520701135747565 -104.9863939 39.7873956 -104.9857845 39.7873956
-10406 7808 7085 0.0476697019408349 0.0476697019408349 -104.9857845 39.7873956 -104.9852266 39.7873956
-10407 7085 7087 0.0498741800030606 0.0498741800030606 -104.9852266 39.7873956 -104.9846429 39.7873956
-10410 7411 5866 0.177233832171644 0.177233832171644 -105.0372987 39.7165613 -105.0372953 39.7149674
-10411 5866 1317 0.177356465730534 0.177356465730534 -105.0372953 39.7149674 -105.0372901 39.7133724
-10412 1317 1373 0.176201016352257 0.176201016352257 -105.0372901 39.7133724 -105.0372815 39.7117878
-20226 10713 10016 0.0211937599266337 0.0211937599266337 -104.9413101 39.6963884 -104.9413099 39.696579
-10413 1373 7809 0.0646527574308656 0.0646527574308656 -105.0372815 39.7117878 -105.0373072 39.7112067
-10414 7809 6841 0.0827327683846137 0.0827327683846137 -105.0373072 39.7112067 -105.037298 39.7104627
-18362 7802 7116 0.00767249278335644 0.00767249278335644 -105.0259573 39.7679612 -105.0259576 39.7678922
-18363 7116 7802 0.00767249278335644 0.00767249278335644 -105.0259576 39.7678922 -105.0259573 39.7679612
-10416 7810 7811 0.101331501186014 0.101331501186014 -105.0367751 39.7039631 -105.0367923 39.7030519
-10417 7811 7812 0.10060881119881 0.10060881119881 -105.0367923 39.7030519 -105.0367751 39.7021472
-10418 7812 7813 0.20266387330204 0.20266387330204 -105.0367751 39.7021472 -105.0367751 39.7003246
-10419 7813 6245 0.198305641519059 0.198305641519059 -105.0367751 39.7003246 -105.0367322 39.6985415
-10420 6245 7814 0.197228200241648 0.197228200241648 -105.0367322 39.6985415 -105.0366887 39.6967681
-10422 1492 181 0.220815542326235 0.220815542326235 -105.036538 39.695087 -105.0367236 39.6931063
-10423 181 1709 0.205644626708499 0.205644626708499 -105.0367236 39.6931063 -105.0366978 39.691257
-10424 1709 7815 0.201521495468828 0.201521495468828 -105.0366978 39.691257 -105.0366851 39.6894447
-10425 7815 1576 0.244181862134779 0.244181862134779 -105.0366851 39.6894447 -105.0378698 39.6874469
-11867 8450 529 0.00567706315765741 0.00567706315765741 -105.0101803 39.7542535 -105.0102365 39.7542807
-10426 1576 7816 0.227813240625087 0.227813240625087 -105.0378698 39.6874469 -105.0381015 39.6854059
-10428 6320 7817 0.183577601350202 0.183577601350202 -105.0371184 39.7056206 -105.0371012 39.7039697
-10430 7213 7818 0.101757750903819 0.101757750903819 -104.9260704 39.7047422 -104.9257985 39.7038513
-10433 962 6868 0.198984557339899 0.198984557339899 -104.983818 39.7165111 -104.9838262 39.7147216
-10434 6868 5277 0.0940706344008526 0.0940706344008526 -104.9838262 39.7147216 -104.9838429 39.7138757
-10435 5277 3079 0.10232261403939 0.10232261403939 -104.9838429 39.7138757 -104.9838483 39.7129555
-10437 7204 5816 0.204032094058756 0.204032094058756 -104.9839803 39.693012 -104.9839857 39.6911771
-10438 5816 7722 0.196359705603447 0.196359705603447 -104.9839857 39.6911771 -104.9839913 39.6894112
-10439 7722 7819 1.20817529596719 1.20817529596719 -104.9839913 39.6894112 -104.9840729 39.678546
-10440 4246 1785 0.204162289925295 0.204162289925295 -104.9839286 39.6966228 -104.9839616 39.6947869
-10441 1785 7820 0.0718319226119568 0.0718319226119568 -104.9839616 39.6947869 -104.9839616 39.6941409
-10442 6026 3876 0.103447229282558 0.103447229282558 -104.9453067 39.775164 -104.9440965 39.7751442
-10443 3876 7821 0.100516631601798 0.100516631601798 -104.9440965 39.7751442 -104.9429206 39.775164
-10444 7322 2073 0.0916901418746821 0.0916901418746821 -104.9541485 39.7751435 -104.9530756 39.7751435
-10445 2073 2670 0.0954589635577965 0.0954589635577965 -104.9530756 39.7751435 -104.9519586 39.7751442
-10446 2670 4140 0.0958506641044589 0.0958506641044589 -104.9519586 39.7751442 -104.9508372 39.7751286
-10447 4140 6687 0.0883798780131798 0.0883798780131798 -104.9508372 39.7751286 -104.9498032 39.7751144
-10448 6687 7822 0.0995993099363261 0.0995993099363261 -104.9498032 39.7751144 -104.9486378 39.7751225
-10449 7822 7696 0.0932435604543702 0.0932435604543702 -104.9486378 39.7751225 -104.9475469 39.7751376
-10450 7696 3474 0.0968263022183935 0.0968263022183935 -104.9475469 39.7751376 -104.9464139 39.7751376
-10451 3474 7823 0.0468407500328621 0.0468407500328621 -104.9464139 39.7751376 -104.9458658 39.7751369
-10452 5171 3743 0.0993415474645253 0.0993415474645253 -104.9874858 39.7165623 -104.9874858 39.7156689
-10454 5856 4668 0.0981986239232037 0.0981986239232037 -104.9875046 39.7147611 -104.9875126 39.713878
-10455 4668 1294 0.100268721006653 0.100268721006653 -104.9875126 39.713878 -104.9875234 39.7129763
-10456 1294 1367 0.0977359423737142 0.0977359423737142 -104.9875234 39.7129763 -104.9875368 39.7120974
-10457 1367 3189 0.105552448113217 0.105552448113217 -104.9875368 39.7120974 -104.9875502 39.7111482
-10458 3189 6851 0.101177318178783 0.101177318178783 -104.9875502 39.7111482 -104.9875556 39.7102383
-10459 6851 4702 0.101416251034793 0.101416251034793 -104.9875556 39.7102383 -104.987569 39.7093263
-10460 4702 7468 0.0970718218675625 0.0970718218675625 -104.987569 39.7093263 -104.9875851 39.7084534
-10461 7468 1895 0.103477998735846 0.103477998735846 -104.9875851 39.7084534 -104.9875851 39.7075228
-10462 1895 7824 0.0967350574153813 0.0967350574153813 -104.9875851 39.7075228 -104.9875719 39.7066529
-10463 7824 7233 0.101338813079015 0.101338813079015 -104.9875719 39.7066529 -104.9875581 39.7057416
-10464 7233 3243 0.207470752756408 0.207470752756408 -104.9875581 39.7057416 -104.9874858 39.7038766
-10465 3243 7282 0.19399363779074 0.19399363779074 -104.9874858 39.7038766 -104.9875556 39.7021328
-10466 7282 7825 0.149563284680896 0.149563284680896 -104.9875556 39.7021328 -104.9875714 39.7007878
-10468 2141 7826 0.157978675104427 0.157978675104427 -105.0086114 39.7398829 -105.0095334 39.7411141
-10469 7826 7827 0.306989543465552 0.306989543465552 -105.0095334 39.7411141 -105.0113366 39.7435015
-10470 7827 7828 0.364212228682904 0.364212228682904 -105.0113366 39.7435015 -105.0134825 39.746331
-16042 9797 9804 0.0714393127860209 0.0714393127860209 -105.0122561 39.6891198 -105.0117013 39.6886397
-10475 7658 7549 0.158167365995463 0.158167365995463 -105.0462812 39.7282934 -105.0451467 39.7294168
-10477 5846 7750 0.200199460183562 0.200199460183562 -104.9372905 39.6911203 -104.9372755 39.6893199
-10479 466 7198 0.196816395654282 0.196816395654282 -104.9373661 39.6947234 -104.9373575 39.6929534
-10481 7268 7830 0.172430116159174 0.172430116159174 -104.9373314 39.7162377 -104.937334 39.714687
-10483 7217 7831 0.199372618146519 0.199372618146519 -104.9963567 39.7165938 -104.9963592 39.7148008
-10485 6256 7832 0.202992310919435 0.202992310919435 -104.9956644 39.6984948 -104.9956462 39.6966693
-10487 7833 4331 0.102741254079324 0.102741254079324 -104.9781265 39.7520022 -104.9769247 39.7519986
-10488 4331 7834 0.0526098265130649 0.0526098265130649 -104.9769247 39.7519986 -104.9763093 39.7519986
-10489 7834 5037 0.0501135526518646 0.0501135526518646 -104.9763093 39.7519986 -104.9757231 39.7519986
-10490 5037 7835 0.0494507564303858 0.0494507564303858 -104.9757231 39.7519986 -104.975145 39.7519832
-10491 7835 7836 0.0506565934234891 0.0506565934234891 -104.975145 39.7519832 -104.9745528 39.7519675
-10492 7836 7837 0.0500464479643974 0.0500464479643974 -104.9745528 39.7519675 -104.9739674 39.7519707
-10493 7837 2894 0.0524402316173641 0.0524402316173641 -104.9739674 39.7519707 -104.973354 39.7519741
-10494 2894 7838 0.107557027285785 0.107557027285785 -104.973354 39.7519741 -104.9720959 39.7519819
-10495 7838 7839 0.103734242634521 0.103734242634521 -104.9720959 39.7519819 -104.9708825 39.7519878
-10496 7839 4733 0.104796091296626 0.104796091296626 -104.9708825 39.7519878 -104.9696568 39.7519733
-10498 6800 7352 0.103066456507469 0.103066456507469 -104.968366 39.7519878 -104.9671604 39.7519921
-10499 7352 5398 0.104939276238433 0.104939276238433 -104.9671604 39.7519921 -104.965933 39.7519789
-10500 5398 7840 0.054043807018549 0.054043807018549 -104.965933 39.7519789 -104.9653014 39.7519582
-10501 7840 7841 0.0495084984704332 0.0495084984704332 -104.9653014 39.7519582 -104.9647228 39.7519393
-10502 7841 3900 0.109926182600774 0.109926182600774 -104.9647228 39.7519393 -104.9634376 39.7519078
-10503 3900 1036 0.101980966587827 0.101980966587827 -104.9634376 39.7519078 -104.9622462 39.751954
-10505 7842 6275 0.0499604206116259 0.0499604206116259 -104.9616094 39.7519514 -104.961025 39.751949
-10506 6275 7843 0.109041406945306 0.109041406945306 -104.961025 39.751949 -104.9597495 39.7519514
-10508 7844 7845 0.0640842858387461 0.0640842858387461 -105.0110496 39.7596475 -105.0117993 39.7596454
-10509 7845 1756 0.058813700126345 0.058813700126345 -105.0117993 39.7596454 -105.0124873 39.7596393
-10510 1756 4796 0.0566305502204531 0.0566305502204531 -105.0124873 39.7596393 -105.0131498 39.7596372
-10511 4796 2162 0.113835660361901 0.113835660361901 -105.0131498 39.7596372 -105.0144815 39.7596444
-10512 2162 7846 0.116364205137553 0.116364205137553 -105.0144815 39.7596444 -105.0158428 39.7596397
-10514 6135 4027 0.149896567221218 0.149896567221218 -105.0281572 39.7603038 -105.0299108 39.7603097
-10515 4027 7032 0.200991141471739 0.200991141471739 -105.0299108 39.7603097 -105.032262 39.7603311
-10516 7032 3412 0.200534935685617 0.200534935685617 -105.032262 39.7603311 -105.034608 39.7603223
-10517 3412 7633 0.0497828282990497 0.0497828282990497 -105.034608 39.7603223 -105.0351904 39.7603234
-10518 7633 5698 0.0497412906945155 0.0497412906945155 -105.0351904 39.7603234 -105.0357723 39.7603267
-10519 5698 7847 0.050919685731899 0.050919685731899 -105.0357723 39.7603267 -105.036368 39.7603278
-10521 7425 7166 0.104570214872527 0.104570214872527 -105.0369407 39.7603225 -105.038164 39.7603311
-10522 7166 7848 0.0473158420873474 0.0473158420873474 -105.038164 39.7603311 -105.0387174 39.7603215
-10523 7848 7780 0.0502827033263459 0.0502827033263459 -105.0387174 39.7603215 -105.0393055 39.7603113
-10524 7780 1123 0.100516868229367 0.100516868229367 -105.0393055 39.7603113 -105.0404814 39.7603047
-10525 1123 7849 0.0509916038841254 0.0509916038841254 -105.0404814 39.7603047 -105.0410779 39.7603102
-10526 7849 7497 0.0507179555279218 0.0507179555279218 -105.0410779 39.7603102 -105.0416712 39.7603156
-10527 7497 7850 0.0492496392928742 0.0492496392928742 -105.0416712 39.7603156 -105.0422473 39.760309
-10528 7850 3843 0.0492532755342339 0.0492532755342339 -105.0422473 39.760309 -105.0428235 39.7603069
-10529 3843 7851 0.0511792577413519 0.0511792577413519 -105.0428235 39.7603069 -105.0434222 39.7603017
-10530 7851 5556 0.0504327266312592 0.0504327266312592 -105.0434222 39.7603017 -105.0440122 39.7603035
-10561 7757 6414 0.14886592682355 0.14886592682355 -105.0151648 39.7202486 -105.0169053 39.7202585
-10531 5556 7852 0.789293029376444 0.789293029376444 -105.0440122 39.7603035 -105.053246 39.7602903
-10532 1618 7136 0.164980324326418 0.164980324326418 -104.9670562 39.7773409 -104.9684185 39.7783922
-10534 2027 5535 0.0854267701089729 0.0854267701089729 -104.9927506 39.7735106 -104.9923558 39.7742164
-10535 5535 6450 0.110522246345964 0.110522246345964 -104.9923558 39.7742164 -104.9923333 39.7752102
-10536 6450 6468 0.0325389081934527 0.0325389081934527 -104.9923333 39.7752102 -104.9923387 39.7755028
-10537 6468 7853 0.124455504811187 0.124455504811187 -104.9923387 39.7755028 -104.9923076 39.7766218
-10538 7853 7854 0.192779349126015 0.192779349126015 -104.9923076 39.7766218 -104.9923137 39.7783555
-10540 3713 7855 0.105701897268654 0.105701897268654 -104.9928366 39.7183943 -104.9928366 39.7193449
-10543 2614 7857 0.0507605301255621 0.0507605301255621 -104.9928302 39.7225456 -104.992831 39.7230021
-10544 7857 5197 0.124727455067454 0.124727455067454 -104.992831 39.7230021 -104.9928329 39.7241238
-10545 5197 6238 0.172240941584424 0.172240941584424 -104.9928329 39.7241238 -104.9928328 39.7256728
-10546 6238 7637 0.187669509666877 0.187669509666877 -104.9928328 39.7256728 -104.9928501 39.7273605
-10547 7637 7858 0.175500793784226 0.175500793784226 -104.9928501 39.7273605 -104.9928407 39.7289388
-10548 7858 7859 0.174943439798306 0.174943439798306 -104.9928407 39.7289388 -104.992836 39.7305121
-10551 5368 7126 0.152826634682226 0.152826634682226 -104.9929409 39.7338739 -104.9929372 39.7352483
-10552 7126 614 0.179980225267387 0.179980225267387 -104.9929372 39.7352483 -104.9929396 39.7368669
-10553 614 7860 0.174053494498076 0.174053494498076 -104.9929396 39.7368669 -104.9929377 39.7384322
-10554 7860 7861 0.175067683150656 0.175067683150656 -104.9929377 39.7384322 -104.992927 39.7400066
-10556 3960 5600 0.12071802041193 0.12071802041193 -105.0001852 39.7194126 -105.0015966 39.7194189
-10558 6724 4799 0.0913013732116182 0.0913013732116182 -105.0120852 39.72025 -105.0131527 39.72025
-10559 4799 2180 0.0880940650188129 0.0880940650188129 -105.0131527 39.72025 -105.0141827 39.72025
-10560 2180 7757 0.0839974084607818 0.0839974084607818 -105.0141827 39.72025 -105.0151648 39.7202486
-10562 6414 4645 0.149015796662155 0.149015796662155 -105.0169053 39.7202585 -105.0186476 39.7202585
-10563 4645 1271 0.151238114292438 0.151238114292438 -105.0186476 39.7202585 -105.0204158 39.7202453
-10564 1271 4535 0.201873592117884 0.201873592117884 -105.0204158 39.7202453 -105.0227761 39.7202519
-10565 4535 7863 0.199199232202906 0.199199232202906 -105.0227761 39.7202519 -105.0251051 39.7202633
-10567 7864 6740 0.106132792016662 0.106132792016662 -105.0251054 39.7197508 -105.0263463 39.7197518
-10568 6740 2257 0.103696160263475 0.103696160263475 -105.0263463 39.7197518 -105.0275587 39.7197559
-10569 2257 6132 0.104845212424081 0.104845212424081 -105.0275587 39.7197559 -105.0287845 39.7197477
-10570 6132 4000 0.104492371103569 0.104492371103569 -105.0287845 39.7197477 -105.0300062 39.7197532
-10571 4000 7049 0.105765984719426 0.105765984719426 -105.0300062 39.7197532 -105.0312428 39.7197574
-10572 7049 1395 0.105619552065538 0.105619552065538 -105.0312428 39.7197574 -105.0324777 39.7197573
-10573 1395 7865 0.0532676910827188 0.0532676910827188 -105.0324777 39.7197573 -105.0331005 39.7197556
-12077 2695 8043 0.149120560873017 0.149120560873017 -104.9839243 39.7555928 -104.9827245 39.7565663
-10574 7865 7382 0.0513518590570076 0.0513518590570076 -105.0331005 39.7197556 -105.0337009 39.7197539
-10576 7866 3392 0.0498722666723731 0.0498722666723731 -105.0343209 39.7197519 -105.034904 39.7197501
-10578 2360 5226 0.147034135602084 0.147034135602084 -104.9874759 39.7193464 -104.9891947 39.7193214
-10579 5226 5088 0.140218763176125 0.140218763176125 -104.9891947 39.7193214 -104.9908341 39.719328
-10580 5088 2812 0.112317158065107 0.112317158065107 -104.9908341 39.719328 -104.9921473 39.719328
-10581 2812 7855 0.0589853238635922 0.0589853238635922 -104.9921473 39.719328 -104.9928366 39.7193449
-10582 7855 4676 0.102566908777836 0.102566908777836 -104.9928366 39.7193449 -104.9940356 39.719328
-10583 4676 4948 0.0965475772401715 0.0965475772401715 -104.9940356 39.719328 -104.9951641 39.7193488
-10584 4948 7867 0.0515742481536382 0.0515742481536382 -104.9951641 39.7193488 -104.9957671 39.7193495
-10585 7867 7219 0.0513689618533378 0.0513689618533378 -104.9957671 39.7193495 -104.9963677 39.7193501
-10586 7219 7868 0.0507197202929207 0.0507197202929207 -104.9963677 39.7193501 -104.9969607 39.7193475
-10587 7868 5673 0.0490781046009859 0.0490781046009859 -104.9969607 39.7193475 -104.9975345 39.7193508
-10588 5673 7869 0.0456643057832586 0.0456643057832586 -104.9975345 39.7193508 -104.9980684 39.719352
-10591 7792 7870 0.049146171652799 0.049146171652799 -105.0397277 39.7197303 -105.0403023 39.7197335
-10592 7870 1108 0.0521568671722949 0.0521568671722949 -105.0403023 39.7197335 -105.0409121 39.7197369
-10593 1108 5770 0.0506160748755952 0.0506160748755952 -105.0409121 39.7197369 -105.0415039 39.7197378
-10594 5770 7510 0.0513174323114612 0.0513174323114612 -105.0415039 39.7197378 -105.0421039 39.7197388
-10595 7510 7871 0.0508676871173128 0.0508676871173128 -105.0421039 39.7197388 -105.0426986 39.7197333
-10596 7871 3865 0.0498216783929082 0.0498216783929082 -105.0426986 39.7197333 -105.0432811 39.7197303
-10598 3866 7535 0.105586605139886 0.105586605139886 -105.043285 39.7203775 -105.0445183 39.7203352
-10599 7535 7872 0.748786770151958 0.748786770151958 -105.0445183 39.7203352 -105.0532725 39.7204183
-10603 741 1561 0.140274508504629 0.140274508504629 -104.9564618 39.7764088 -104.9564528 39.7776703
-10604 1561 7876 0.139940443617856 0.139940443617856 -104.9564528 39.7776703 -104.9564449 39.7789288
-10605 7876 7877 0.121382404560649 0.121382404560649 -104.9564449 39.7789288 -104.9564367 39.7800204
-10607 3572 5640 0.141095915979936 0.141095915979936 -104.9561226 39.7544534 -104.9561277 39.7557223
-10608 5640 4345 0.139634312621283 0.139634312621283 -104.9561277 39.7557223 -104.9561539 39.7569779
-10609 4345 6343 0.13679021957376 0.13679021957376 -104.9561539 39.7569779 -104.9561352 39.758208
-10610 6343 3046 0.13698802953883 0.13698802953883 -104.9561352 39.758208 -104.956119 39.7594399
-10611 3046 7878 0.138953332142948 0.138953332142948 -104.956119 39.7594399 -104.9560949 39.7606894
-10612 7878 7879 0.00536944182123181 0.00536944182123181 -104.9560949 39.7606894 -104.9561163 39.7607348
-10613 7879 7880 0.11582084881522 0.11582084881522 -104.9561163 39.7607348 -104.9561137 39.7617764
-10615 7881 7882 0.0939943673024045 0.0939943673024045 -104.9562865 39.7328649 -104.9563208 39.7337098
-10617 4885 7883 0.18871104587798 0.18871104587798 -104.9562778 39.7351101 -104.9562673 39.7368072
-10618 7883 5483 0.174801190512252 0.174801190512252 -104.9562673 39.7368072 -104.9562788 39.7383792
-10619 5483 7884 0.200940942998637 0.200940942998637 -104.9562788 39.7383792 -104.9562845 39.7401863
-10620 7884 7885 0.0780811261571653 0.0780811261571653 -104.9562845 39.7401863 -104.9567283 39.7408
-10621 7885 3341 0.00930901113126469 0.00930901113126469 -104.9567283 39.7408 -104.9568365 39.7408093
-10624 1192 7887 0.0222318154701858 0.0222318154701858 -104.9567021 39.7271202 -104.956707 39.7273201
-10625 7887 3786 0.199739451308706 0.199739451308706 -104.956707 39.7273201 -104.9567075 39.7291164
-10627 7888 5967 0.106945706764055 0.106945706764055 -104.983517 39.7478374 -104.9844118 39.7485095
-10628 5967 7889 0.0517538867982505 0.0517538867982505 -104.9844118 39.7485095 -104.9848354 39.748842
-10629 7889 3011 0.055433069584998 0.055433069584998 -104.9848354 39.748842 -104.9852889 39.7491983
-10630 3011 7890 0.0504905501442438 0.0504905501442438 -104.9852889 39.7491983 -104.9856992 39.7495249
-10631 7890 4389 0.0518336432467722 0.0518336432467722 -104.9856992 39.7495249 -104.9861204 39.7498602
-10632 4389 7891 0.106909075712535 0.106909075712535 -104.9861204 39.7498602 -104.9870145 39.7505324
-10633 7891 7892 0.0447272763477039 0.0447272763477039 -104.9870145 39.7505324 -104.987378 39.7508217
-10634 7892 7893 0.0604871538278066 0.0604871538278066 -104.987378 39.7508217 -104.9878898 39.7511973
-10635 7893 7894 0.0527248029948841 0.0527248029948841 -104.9878898 39.7511973 -104.9883251 39.7515332
-10636 7894 7895 0.0510420835040534 0.0510420835040534 -104.9883251 39.7515332 -104.9887543 39.7518523
-10637 7895 7896 0.0538542282588573 0.0538542282588573 -104.9887543 39.7518523 -104.9891984 39.7521958
-10638 7896 7897 0.0528352422268061 0.0528352422268061 -104.9891984 39.7521958 -104.9896341 39.7525328
-10640 7898 7899 0.0483963113823249 0.0483963113823249 -104.9900722 39.7528603 -104.9904781 39.7531637
-10641 7899 7900 0.00514045868709644 0.00514045868709644 -104.9904781 39.7531637 -104.9905138 39.7532009
-10642 7900 6183 0.105068526303449 0.105068526303449 -104.9905138 39.7532009 -104.9913748 39.7538752
-10643 6183 7563 0.106218150970674 0.106218150970674 -104.9913748 39.7538752 -104.9922506 39.7545528
-10646 7902 7903 0.144865462765669 0.144865462765669 -105.0116934 39.7583103 -105.0105038 39.7592382
-10647 7903 7904 0.00237466940700901 0.00237466940700901 -105.0105038 39.7592382 -105.0104854 39.7592542
-10648 7904 6985 0.0721296292058115 0.0721296292058115 -105.0104854 39.7592542 -105.0098936 39.7597166
-10649 6985 4820 0.0719786596117478 0.0719786596117478 -105.0098936 39.7597166 -105.0093022 39.7601774
-10650 4820 7905 0.147529402397198 0.147529402397198 -105.0093022 39.7601774 -105.0080885 39.7611207
-10651 7905 7906 0.144081069806214 0.144081069806214 -105.0080885 39.7611207 -105.0068985 39.7620384
-10653 3189 1870 0.209495964340019 0.209495964340019 -104.9875502 39.7111482 -104.9899993 39.7111545
-10654 1870 7907 0.0977397792259224 0.0977397792259224 -104.9899993 39.7111545 -104.9911419 39.7111606
-10655 7907 4184 0.106328113718199 0.106328113718199 -104.9911419 39.7111606 -104.9923849 39.7111672
-10656 4184 7908 0.403661295666813 0.403661295666813 -104.9923849 39.7111672 -104.9971039 39.7111729
-10657 7908 4837 0.108683081676812 0.108683081676812 -104.9971039 39.7111729 -104.9983742 39.7111927
-10659 7909 7910 0.270199990406442 0.270199990406442 -105.0273938 39.6894539 -105.027347 39.6870242
-10660 7911 810 0.0673953106393502 0.0673953106393502 -105.0276068 39.7548215 -105.0276079 39.7554276
-10661 810 7912 0.0687323400006804 0.0687323400006804 -105.0276079 39.7554276 -105.0276151 39.7560457
-10662 7912 7913 0.136720833756656 0.136720833756656 -105.0276151 39.7560457 -105.0275993 39.7572752
-10666 2255 5858 0.174722136683236 0.174722136683236 -105.0275483 39.7165547 -105.0275397 39.7149834
-10667 5858 1305 0.178402656879188 0.178402656879188 -105.0275397 39.7149834 -105.0275483 39.713379
-10668 1305 7915 0.248888691440438 0.248888691440438 -105.0275483 39.713379 -105.0275397 39.7111407
-12170 8573 8574 0.0987973765101899 0.0987973765101899 -104.9944322 39.7487829 -104.9936089 39.7481594
-10670 6847 7916 0.0984178968171368 0.0984178968171368 -105.0275397 39.7102889 -105.0275054 39.7094042
-10671 7916 7485 0.0976761282305841 0.0976761282305841 -105.0275054 39.7094042 -105.0275311 39.708526
-10673 7454 5692 0.103533596199028 0.103533596199028 -105.0275397 39.707661 -105.0275397 39.7067299
-10674 5692 7917 0.101331500328489 0.101331500328489 -105.0275397 39.7067299 -105.0275225 39.7058187
-10675 7917 4966 0.0998668108920524 0.0998668108920524 -105.0275225 39.7058187 -105.027514 39.7049206
-10676 4966 7918 0.102812100555259 0.102812100555259 -105.027514 39.7049206 -105.0275397 39.7039962
-10677 7918 7919 0.0983963905872725 0.0983963905872725 -105.0275397 39.7039962 -105.0275397 39.7031113
-10678 7919 7920 0.0991546561543948 0.0991546561543948 -105.0275397 39.7031113 -105.027514 39.7022198
-10679 7920 7921 0.0991411977449166 0.0991411977449166 -105.027514 39.7022198 -105.0274968 39.7013283
-10680 7921 7922 0.106421383510006 0.106421383510006 -105.0274968 39.7013283 -105.0275358 39.7003717
-10682 7923 7924 0.106391305814005 0.106391305814005 -104.9406835 39.7550153 -104.9406835 39.7559721
-10684 7925 629 0.0646550267727614 0.0646550267727614 -104.9739262 39.7620073 -104.9734189 39.7624386
-10685 629 7926 0.00919464810452742 0.00919464810452742 -104.9734189 39.7624386 -104.9733442 39.7624981
-10686 7927 7928 0.0412650483746168 0.0412650483746168 -105.0158342 39.7601412 -105.0162425 39.7603392
-10687 7928 7929 0.155361420508855 0.155361420508855 -105.0162425 39.7603392 -105.0179546 39.7608082
-10688 7929 6922 0.0195376725753923 0.0195376725753923 -105.0179546 39.7608082 -105.0181826 39.7608206
-10689 6922 6736 0.174720460074468 0.174720460074468 -105.0181826 39.7608206 -105.0202265 39.7608392
-10691 7930 7931 0.0129516773904198 0.0129516773904198 -104.949883 39.707468 -104.9500344 39.7074688
-10692 7931 1511 0.391618540945239 0.391618540945239 -104.9500344 39.7074688 -104.9534977 39.7051656
-10693 1511 7932 0.0409032080648905 0.0409032080648905 -104.9534977 39.7051656 -104.9536135 39.7048087
-10694 7932 3280 0.112386881702983 0.112386881702983 -104.9536135 39.7048087 -104.9540083 39.7038447
-10696 4635 6586 0.185505221951206 0.185505221951206 -105.0192742 39.7316986 -105.0206647 39.7329791
-10698 6668 787 0.109054104365323 0.109054104365323 -105.007449 39.7016708 -105.0063481 39.7011764
-10699 787 6002 0.243058044096108 0.243058044096108 -105.0063481 39.7011764 -105.0054308 39.6991076
-10702 7934 1008 1.1041513689359 1.1041513689359 -104.9948315 39.7656825 -104.9879427 39.7740829
-10704 4497 7935 0.109080059964542 0.109080059964542 -105.0051406 39.788644 -105.0064172 39.7886514
-10705 7935 7936 0.375437621590472 0.375437621590472 -105.0064172 39.7886514 -105.0106854 39.7894536
-10706 7936 7937 0.0440200903162904 0.0440200903162904 -105.0106854 39.7894536 -105.0112006 39.7894548
-10708 3966 3963 0.0923048136404676 0.0923048136404676 -105.0005888 39.7883796 -105.0016187 39.7886302
-10710 6243 7938 0.0544857736456965 0.0544857736456965 -104.9874615 39.7256397 -104.9868244 39.7256399
-10711 7938 7571 0.0517149905092859 0.0517149905092859 -104.9868244 39.7256399 -104.9862197 39.7256409
-10712 7571 7939 0.0378829783952266 0.0378829783952266 -104.9862197 39.7256409 -104.9857768 39.7256351
-10714 7940 5872 0.0757028634173436 0.0757028634173436 -105.0421016 39.7156502 -105.0420963 39.7149694
-10715 5872 1324 0.177578299705823 0.177578299705823 -105.0420963 39.7149694 -105.0420966 39.7133724
-10716 1324 1380 0.1760884455939 0.1760884455939 -105.0420966 39.7133724 -105.0420733 39.7117889
-10717 1380 7941 0.0581557503278793 0.0581557503278793 -105.0420733 39.7117889 -105.0420966 39.7112662
-10718 7941 6844 0.0845562612846107 0.0845562612846107 -105.0420966 39.7112662 -105.0420451 39.7105068
-10719 6844 4696 0.11746862405599 0.11746862405599 -105.0420451 39.7105068 -105.0420537 39.7094504
-10720 4696 7452 0.157863437357233 0.157863437357233 -105.0420537 39.7094504 -105.0420537 39.7080307
-10722 5690 5337 0.242972143995655 0.242972143995655 -105.0420279 39.7068686 -105.0420306 39.7046835
-10724 7942 7943 0.14470003055266 0.14470003055266 -105.0424313 39.7034679 -105.0423884 39.702167
-10725 7943 1056 0.118222446008981 0.118222446008981 -105.0423884 39.702167 -105.0423884 39.7011038
-10726 1056 7944 0.0800381081986229 0.0800381081986229 -105.0423884 39.7011038 -105.0423884 39.700384
-10727 7944 6249 0.201854530416454 0.201854530416454 -105.0423884 39.700384 -105.0425772 39.6985745
-10728 6249 7945 0.201602089629263 0.201602089629263 -105.0425772 39.6985745 -105.0425595 39.6967615
-10729 7945 1497 0.20081804408168 0.20081804408168 -105.0425595 39.6967615 -105.0425601 39.6949555
-10730 1497 186 0.202686112287629 0.202686112287629 -105.0425601 39.6949555 -105.0425601 39.6931327
-10731 186 7798 0.0846089584800808 0.0846089584800808 -105.0425601 39.6931327 -105.0425 39.6923732
-10732 7798 1714 0.126110593452085 0.126110593452085 -105.0425 39.6923732 -105.0420365 39.6912966
-10734 7946 1580 0.141640668503246 0.141640668503246 -105.0421824 39.6894605 -105.0421871 39.6881867
-10735 1580 7947 0.292520501534348 0.292520501534348 -105.0421871 39.6881867 -105.0421863 39.685556
-10736 7948 2142 0.372172819192242 0.372172819192242 -105.0070074 39.7368827 -105.008237 39.7400934
-10738 7949 7950 0.022809009376778 0.022809009376778 -104.9733887 39.7145485 -104.9732428 39.7147202
-10739 7950 2916 0.200611278039498 0.200611278039498 -104.9732428 39.7147202 -104.9731398 39.7165226
-10741 2915 7951 0.200419085698686 0.200419085698686 -104.9733801 39.7165226 -104.9733887 39.7147202
-10743 7952 7953 0.0110105423016681 0.0110105423016681 -105.019895 39.7391795 -105.0198924 39.7392785
-10745 7954 7631 0.201162741792968 0.201162741792968 -105.0198441 39.7293262 -105.0198441 39.7275171
-16610 5355 7889 0.146740030035641 0.146740030035641 -104.986046 39.7479065 -104.9848354 39.748842
-10746 7631 7955 0.197131063915064 0.197131063915064 -105.0198441 39.7275171 -105.0198149 39.7257444
-10748 7956 6942 0.115194637181012 0.115194637181012 -104.9677476 39.7808918 -104.9677319 39.7819277
-12305 8628 8641 0.0276795827309073 0.0276795827309073 -105.0077112 39.7549614 -105.0078924 39.7547551
-10750 4939 4687 0.409424899618544 0.409424899618544 -104.9964751 39.7368603 -104.9941176 39.7336555
-10751 4687 7959 0.501489716289273 0.501489716289273 -104.9941176 39.7336555 -104.9912259 39.7297319
-10752 7959 7960 0.103838798829226 0.103838798829226 -104.9912259 39.7297319 -104.9906006 39.7289314
-10753 7960 5096 0.0880537297967434 0.0880537297967434 -104.9906006 39.7289314 -104.9899868 39.7282956
-10754 5096 7961 0.0549628705336601 0.0549628705336601 -104.9899868 39.7282956 -104.9896006 39.7279005
-10756 7962 7963 0.129400960231747 0.129400960231747 -105.0007006 39.7452954 -105.0005879 39.7441349
-10757 7963 7964 0.0109989745271633 0.0109989745271633 -105.0005879 39.7441349 -105.0005794 39.7440362
-10758 7964 7093 0.177295071329975 0.177295071329975 -105.0005794 39.7440362 -105.000125 39.7424805
-10759 7093 7965 0.0553949557893182 0.0553949557893182 -105.000125 39.7424805 -104.999898 39.7420139
-10760 7965 3937 0.0117544286846151 0.0117544286846151 -104.999898 39.7420139 -104.9998498 39.7419149
-10761 3937 7966 0.0655333417817751 0.0655333417817751 -104.9998498 39.7419149 -104.9995537 39.7413713
-10762 7966 7967 0.00514903654400709 0.00514903654400709 -104.9995537 39.7413713 -104.9995304 39.7413286
-10763 7967 7968 0.0154207763703831 0.0154207763703831 -104.9995304 39.7413286 -104.9994613 39.7412005
-10764 7968 7969 0.120137734300265 0.120137734300265 -104.9994613 39.7412005 -104.9989064 39.7402079
-10765 7969 7970 0.0235045509998941 0.0235045509998941 -104.9989064 39.7402079 -104.9987846 39.7400184
-10766 7970 4938 0.199335986652222 0.199335986652222 -104.9987846 39.7400184 -104.9976397 39.7384568
-10768 6788 4721 0.150986476371322 0.150986476371322 -104.9684027 39.7400015 -104.9696847 39.7409353
-10769 4721 667 0.112227110724083 0.112227110724083 -104.9696847 39.7409353 -104.9706168 39.7416459
-10770 667 5130 0.0364809731603039 0.0364809731603039 -104.9706168 39.7416459 -104.9709144 39.741881
-10771 5130 7141 0.148468037583607 0.148468037583607 -104.9709144 39.741881 -104.9721376 39.7428287
-10772 7141 7973 0.0653535267620459 0.0653535267620459 -104.9721376 39.7428287 -104.9726808 39.7432422
-10773 7973 2883 0.0864280151657955 0.0864280151657955 -104.9726808 39.7432422 -104.9733956 39.7437918
-10774 2883 4607 0.164926871665991 0.164926871665991 -104.9733956 39.7437918 -104.9747635 39.7448376
-10775 4607 5044 0.166914948534143 0.166914948534143 -104.9747635 39.7448376 -104.9761532 39.7458919
-10776 5044 6491 0.0452504465788914 0.0452504465788914 -104.9761532 39.7458919 -104.976527 39.74618
-10777 6491 7974 0.124696259323388 0.124696259323388 -104.976527 39.74618 -104.9775516 39.7469781
-10778 7974 3674 0.0837503652675649 0.0837503652675649 -104.9775516 39.7469781 -104.9782423 39.7475122
-10780 7975 7976 0.0210158411356976 0.0210158411356976 -104.9546025 39.7180291 -104.9546025 39.7182181
-10781 7976 2348 0.132347730703915 0.132347730703915 -104.9546025 39.7182181 -104.9546138 39.7194083
-10782 2348 4153 0.174709468744017 0.174709468744017 -104.9546138 39.7194083 -104.9546138 39.7209795
-10783 4153 4740 0.173977137035244 0.173977137035244 -104.9546138 39.7209795 -104.9546224 39.7225441
-10784 4740 6535 0.176711434597363 0.176711434597363 -104.9546224 39.7225441 -104.9546177 39.7241333
-10785 6535 7977 0.164237503877208 0.164237503877208 -104.9546177 39.7241333 -104.9546285 39.7256103
-10787 7978 692 0.202230219594829 0.202230219594829 -104.9547761 39.7401752 -104.9547755 39.7419939
-10788 692 7979 0.202124611474851 0.202124611474851 -104.9547755 39.7419939 -104.9547451 39.7438115
-10790 7980 1194 0.168544434179807 0.168544434179807 -104.9543549 39.7256103 -104.9544083 39.7271255
-10791 1194 7981 0.0214611132807924 0.0214611132807924 -104.9544083 39.7271255 -104.95441 39.7273185
-10793 1195 7982 0.0213718360054606 0.0213718360054606 -104.9540289 39.7271284 -104.9540279 39.7273206
-10794 7982 3783 0.200590566648469 0.200590566648469 -104.9540279 39.7273206 -104.9540461 39.7291245
-10795 3783 7983 0.155575717720948 0.155575717720948 -104.9540461 39.7291245 -104.9540572 39.7305236
-10797 947 7986 0.165669448326255 0.165669448326255 -104.9540658 39.7320945 -104.9540634 39.7335844
-10798 7986 4887 0.171543568824384 0.171543568824384 -104.9540634 39.7335844 -104.9541159 39.7351266
-10800 104 7987 0.0531910934067007 0.0531910934067007 -104.9874778 39.7002508 -104.9874076 39.7007261
-10801 7987 7283 0.14149347529597 0.14149347529597 -104.9874076 39.7007261 -104.9871988 39.7019884
-10803 4249 1782 0.204738067086155 0.204738067086155 -104.9862119 39.6966237 -104.986165 39.6947828
-10804 1782 7202 0.196638037803866 0.196638037803866 -104.986165 39.6947828 -104.9862426 39.6930154
-10805 7202 5813 0.202462167506831 0.202462167506831 -104.9862426 39.6930154 -104.9862656 39.6911947
-10806 5813 7720 0.198881694965003 0.198881694965003 -104.9862656 39.6911947 -104.9862428 39.6894062
-10831 5664 5936 0.10457956834692 0.10457956834692 -104.9752576 39.729517 -104.975253 39.7304575
-10807 7720 7988 2.41654683926542 2.41654683926542 -104.9862428 39.6894062 -104.986288 39.6676737
-10808 3557 815 0.15408456375045 0.15408456375045 -104.9745442 39.7546268 -104.9745356 39.7532411
-10809 815 7836 0.141625491803193 0.141625491803193 -104.9745356 39.7532411 -104.9745528 39.7519675
-10810 7836 7989 0.137956171688053 0.137956171688053 -104.9745528 39.7519675 -104.9745699 39.7507269
-10811 7989 7990 0.133814544271225 0.133814544271225 -104.9745699 39.7507269 -104.9745602 39.7495235
-10812 7990 7991 0.00435891657982006 0.00435891657982006 -104.9745602 39.7495235 -104.9745599 39.7494843
-10813 7991 7992 0.00504883599617259 0.00504883599617259 -104.9745599 39.7494843 -104.9745608 39.7494389
-10814 7992 3667 0.218697319390466 0.218697319390466 -104.9745608 39.7494389 -104.9746946 39.7474748
-10818 4607 7994 0.175458215250442 0.175458215250442 -104.9747635 39.7448376 -104.9747769 39.7432597
-10819 7994 7995 0.17352002006779 0.17352002006779 -104.9747769 39.7432597 -104.9747729 39.7416992
-10820 7995 664 0.00413178605963205 0.00413178605963205 -104.9747729 39.7416992 -104.9747756 39.7416621
-10821 664 7998 0.00436495014442939 0.00436495014442939 -104.9747756 39.7416621 -104.9747729 39.7416229
-10822 7998 7999 0.17836184127639 0.17836184127639 -104.9747729 39.7416229 -104.9748011 39.740019
-10824 6329 4163 0.106458655644295 0.106458655644295 -104.9752418 39.719173 -104.975216 39.7201302
-10825 4163 4772 0.262069785544738 0.262069785544738 -104.975216 39.7201302 -104.975236 39.722487
-10826 4772 6551 0.176006441608747 0.176006441608747 -104.975236 39.722487 -104.9752545 39.7240698
-10827 6551 8001 0.169733521019883 0.169733521019883 -104.9752545 39.7240698 -104.9752384 39.7255962
-10828 8001 8002 0.186888519126424 0.186888519126424 -104.9752384 39.7255962 -104.9752512 39.7272769
-10829 8002 3800 0.199472684499289 0.199472684499289 -104.9752512 39.7272769 -104.9752536 39.7290708
-10830 3800 5664 0.0496163554354094 0.0496163554354094 -104.9752536 39.7290708 -104.9752576 39.729517
-10832 5936 934 0.175672791884477 0.175672791884477 -104.975253 39.7304575 -104.9752714 39.7320373
-10833 934 5818 0.103656977616086 0.103656977616086 -104.9752714 39.7320373 -104.9752659 39.7329695
-10834 5818 2219 0.0798383163598858 0.0798383163598858 -104.9752659 39.7329695 -104.9752631 39.7336875
-10835 2219 4869 0.163069738486709 0.163069738486709 -104.9752631 39.7336875 -104.9752734 39.735154
-10836 4869 8003 0.190225091069506 0.190225091069506 -104.9752734 39.735154 -104.9752877 39.7368647
-10837 8003 5468 0.173414227417019 0.173414227417019 -104.9752877 39.7368647 -104.9753042 39.7384242
-10838 5468 6220 0.124444185392524 0.124444185392524 -104.9753042 39.7384242 -104.9752801 39.7395432
-10841 5175 8005 0.198062000656316 0.198062000656316 -104.9757389 39.7165269 -104.9757482 39.7183081
-10844 8006 681 0.244474486801046 0.244474486801046 -104.9569442 39.743807 -104.9569536 39.7416084
-10845 681 3340 0.0902358208620103 0.0902358208620103 -104.9569536 39.7416084 -104.9569483 39.7407969
-10847 7885 682 0.0896800723137281 0.0896800723137281 -104.9567283 39.7408 -104.9567458 39.7416064
-10848 682 580 0.244861214317874 0.244861214317874 -104.9567458 39.7416064 -104.9566854 39.743808
-10850 5334 6321 0.121951239816061 0.121951239816061 -105.0391209 39.7067305 -105.0391097 39.7056338
-10851 6321 8007 0.186507250461399 0.186507250461399 -105.0391097 39.7056338 -105.0391097 39.7039565
-10852 8007 8008 0.042606728375189 0.042606728375189 -105.0391097 39.7039565 -105.0391344 39.7035738
-10853 8008 8009 0.0463471911266823 0.0463471911266823 -105.0391344 39.7035738 -105.0391612 39.7031575
-10854 8009 8010 0.0102891732268637 0.0102891732268637 -105.0391612 39.7031575 -105.039158 39.703065
-10855 8010 8011 0.0998884840922572 0.0998884840922572 -105.039158 39.703065 -105.0391269 39.702167
-10856 8011 8012 0.201197445523876 0.201197445523876 -105.0391269 39.702167 -105.0391183 39.7003576
-10857 8012 6246 0.199805617134822 0.199805617134822 -105.0391183 39.7003576 -105.0390582 39.6985613
-10858 6246 8013 0.200864024373594 0.200864024373594 -105.0390582 39.6985613 -105.0390491 39.6967549
-10859 8013 2310 0.103900456751802 0.103900456751802 -105.0390491 39.6967549 -105.0390668 39.6958206
-10860 2310 1494 0.0983991417332815 0.0983991417332815 -105.0390668 39.6958206 -105.0390582 39.6949357
-10861 1494 183 0.203419998804159 0.203419998804159 -105.0390582 39.6949357 -105.0390582 39.6931063
-10862 183 1711 0.201968707186781 0.201968707186781 -105.0390582 39.6931063 -105.0390754 39.69129
-16611 7889 9327 0.146157951939095 0.146157951939095 -104.9848354 39.748842 -104.9836296 39.7497738
-10863 1711 8014 0.204806773712675 0.204806773712675 -105.0390754 39.69129 -105.0390543 39.6894482
-10864 8014 6157 0.126319530562447 0.126319530562447 -105.0390543 39.6894482 -105.0390628 39.6883122
-10865 6157 1577 0.0829958932471693 0.0829958932471693 -105.0390628 39.6883122 -105.0390628 39.6875658
-10867 7968 8016 0.0140119714836204 0.0140119714836204 -104.9994613 39.7412005 -104.9993111 39.7412509
-10869 2294 1531 0.46192746891159 0.46192746891159 -104.9899657 39.7654782 -104.9909332 39.7613911
-10871 8017 1203 0.169906498983342 0.169906498983342 -104.948399 39.7256083 -104.9484045 39.7271363
-10872 1203 8018 0.0221945337202718 0.0221945337202718 -104.9484045 39.7271363 -104.9484041 39.7273359
-10873 8018 3780 0.199572680726093 0.199572680726093 -104.9484041 39.7273359 -104.9484053 39.7291307
-10874 3780 8019 0.153206883868779 0.153206883868779 -104.9484053 39.7291307 -104.9483814 39.7305084
-10875 8019 952 0.177861736820837 0.177861736820837 -104.9483814 39.7305084 -104.9484181 39.7321077
-10876 952 8020 0.175149595226483 0.175149595226483 -104.9484181 39.7321077 -104.9484005 39.7336828
-10877 8020 4891 0.159178167143814 0.159178167143814 -104.9484005 39.7336828 -104.9483898 39.7351143
-10878 4891 8021 0.18577336394487 0.18577336394487 -104.9483898 39.7351143 -104.9483898 39.736785
-10879 8021 5489 0.173842148316324 0.173842148316324 -104.9483898 39.736785 -104.9483898 39.7383484
-10880 5489 8022 0.202303315910377 0.202303315910377 -104.9483898 39.7383484 -104.9484296 39.7401675
-10882 5166 8023 0.173986701720281 0.173986701720281 -104.9485858 39.7162531 -104.9485858 39.7178178
-10883 8023 2353 0.177612171175383 0.177612171175383 -104.9485858 39.7178178 -104.9485908 39.7194151
-10884 2353 4155 0.173655528353614 0.173655528353614 -104.9485908 39.7194151 -104.9485801 39.7209768
-10885 4155 4742 0.173355871166643 0.173355871166643 -104.9485801 39.7209768 -104.9486216 39.7225355
-10886 4742 6537 0.176328961502794 0.176328961502794 -104.9486216 39.7225355 -104.9485774 39.7241209
-10887 6537 8024 0.165303556900913 0.165303556900913 -104.9485774 39.7241209 -104.9485847 39.7256075
-10889 3030 3025 0.111248274146309 0.111248274146309 -104.9487906 39.7590818 -104.9488309 39.7600818
-10891 8025 8026 0.0640627296443105 0.0640627296443105 -104.9487313 39.761191 -104.9488251 39.7617626
-10893 3576 5643 0.138707185733922 0.138707185733922 -104.9488635 39.7544629 -104.9488535 39.7557103
-10894 5643 4348 0.139896948951005 0.139896948951005 -104.9488535 39.7557103 -104.9488435 39.7569684
-10895 4348 6346 0.137784232527167 0.137784232527167 -104.9488435 39.7569684 -104.9488336 39.7582075
-10897 8027 697 0.20001854589906 0.20001854589906 -104.9488409 39.7401691 -104.9488331 39.7419679
-10898 697 8028 0.202096920971429 0.202096920971429 -104.9488331 39.7419679 -104.9488359 39.7437854
-10900 8029 2876 0.123948984730939 0.123948984730939 -104.9487583 39.7837977 -104.9487583 39.7849124
-10901 2876 7628 0.141637704476922 0.141637704476922 -104.9487583 39.7849124 -104.9487399 39.7861861
-10902 7628 7803 0.129093895003183 0.129093895003183 -104.9487399 39.7861861 -104.9487657 39.7873469
-10903 7803 8030 0.203887723487366 0.203887723487366 -104.9487657 39.7873469 -104.9487914 39.7891804
-10904 750 1568 0.143385969503008 0.143385969503008 -104.9486136 39.7763944 -104.9486346 39.7776838
-10905 1568 356 0.136646760403047 0.136646760403047 -104.9486346 39.7776838 -104.9486062 39.7789125
-10907 3449 6863 0.17900718937772 0.17900718937772 -104.9461482 39.7162465 -104.9461768 39.7146368
-10908 6863 3068 0.174598273817653 0.174598273817653 -104.9461768 39.7146368 -104.9461768 39.7130666
-10909 3068 8031 0.0302783785251902 0.0302783785251902 -104.9461768 39.7130666 -104.9461768 39.7127943
-10910 8031 3188 0.14422007961407 0.14422007961407 -104.9461768 39.7127943 -104.9461736 39.7114973
-10912 3499 8032 0.199010937916898 0.199010937916898 -104.9465455 39.6983726 -104.9465284 39.6965829
-10913 8032 8033 0.200333001057217 0.200333001057217 -104.9465284 39.6965829 -104.9465436 39.6947813
-10915 5667 598 0.0644126037668526 0.0644126037668526 -104.947235 39.702287 -104.9468452 39.7017914
-10916 598 58 0.177763601732474 0.177763601732474 -104.9468452 39.7017914 -104.9465541 39.7002085
-10919 5970 8036 0.0505810885650185 0.0505810885650185 -104.9783626 39.753192 -104.9787817 39.7535131
-10920 8036 3015 0.0580577132309736 0.0580577132309736 -104.9787817 39.7535131 -104.9792691 39.7538767
-10921 3015 8037 0.0464238660315039 0.0464238660315039 -104.9792691 39.7538767 -104.9796416 39.7541805
-10922 8037 4384 0.0544799142925035 0.0544799142925035 -104.9796416 39.7541805 -104.9800877 39.7545304
-10923 4384 8038 0.0538947325800234 0.0538947325800234 -104.9800877 39.7545304 -104.9805458 39.7548634
-10924 8038 8039 0.0466438161180549 0.0466438161180549 -104.9805458 39.7548634 -104.9809281 39.7551627
-10925 8039 8040 0.00584498801301113 0.00584498801301113 -104.9809281 39.7551627 -104.9809778 39.7551988
-10926 8040 8041 0.0523763426314988 0.0523763426314988 -104.9809778 39.7551988 -104.981415 39.7555288
-10927 8041 8042 0.0530979313391782 0.0530979313391782 -104.981415 39.7555288 -104.9818522 39.755868
-10928 8042 8043 0.107654120371494 0.107654120371494 -104.9818522 39.755868 -104.9827245 39.7565663
-10929 8043 8044 0.0544759880197041 0.0544759880197041 -104.9827245 39.7565663 -104.9831794 39.7569094
-10930 8044 8045 0.0487657640583263 0.0487657640583263 -104.9831794 39.7569094 -104.9835828 39.7572195
-10931 8045 8046 0.0550233762997563 0.0550233762997563 -104.9835828 39.7572195 -104.9840288 39.7575763
-10932 8046 8047 0.0497918467778446 0.0497918467778446 -104.9840288 39.7575763 -104.9844325 39.7578991
-10933 8047 8048 0.0560301584180681 0.0560301584180681 -104.9844325 39.7578991 -104.9849005 39.7582519
-10934 8048 6177 0.0498105660603093 0.0498105660603093 -104.9849005 39.7582519 -104.9853166 39.7585655
-10937 8049 8050 0.0514663482815545 0.0514663482815545 -104.9866649 39.7595656 -104.9870901 39.7598933
-10939 5597 7545 0.109426166768049 0.109426166768049 -105.0438865 39.7312111 -105.0451654 39.7312441
-10940 7545 8051 0.69043474044403 0.69043474044403 -105.0451654 39.7312441 -105.0532391 39.7312862
-10943 4956 7224 0.100934524697699 0.100934524697699 -104.9952321 39.7305115 -104.9964124 39.7305084
-10944 7224 8052 0.0514703494422073 0.0514703494422073 -104.9964124 39.7305084 -104.9970142 39.7305007
-10945 8052 8053 0.0516967622411713 0.0516967622411713 -104.9970142 39.7305007 -104.9976187 39.7305054
-10946 8053 8054 0.0428181869535947 0.0428181869535947 -104.9976187 39.7305054 -104.9981194 39.7305074
-10947 8054 6644 0.0437760044869343 0.0437760044869343 -104.9981194 39.7305074 -104.9986313 39.7305095
-10948 6644 251 0.0675496864417695 0.0675496864417695 -104.9986313 39.7305095 -104.9994212 39.7305062
-10949 251 3950 0.064659952202738 0.064659952202738 -104.9994212 39.7305062 -105.0001773 39.7305104
-10950 3950 8056 0.0623263752149148 0.0623263752149148 -105.0001773 39.7305104 -105.0009061 39.7305052
-10951 8056 5609 0.0582215030638228 0.0582215030638228 -105.0009061 39.7305052 -105.0015869 39.7305003
-10952 5609 8057 0.0511983070002347 0.0511983070002347 -105.0015869 39.7305003 -105.0021856 39.7304991
-10953 8057 3730 0.0552226014136858 0.0552226014136858 -105.0021856 39.7304991 -105.0028312 39.7305102
-10954 3730 8058 0.106434809873425 0.106434809873425 -105.0028312 39.7305102 -105.0040758 39.7305164
-10956 5917 8060 0.0615467128621124 0.0615467128621124 -104.987439 39.7304505 -104.9881587 39.7304539
-10957 8060 8061 0.0595626505884908 0.0595626505884908 -104.9881587 39.7304539 -104.9888552 39.7304571
-10958 8061 8062 0.120093210467761 0.120093210467761 -104.9888552 39.7304571 -104.9902595 39.7304656
-10960 8063 4634 0.154652934390646 0.154652934390646 -105.01746 39.7312756 -105.0192656 39.7311969
-10961 4634 4549 0.20934037971115 0.20934037971115 -105.0192656 39.7311969 -105.0217136 39.7312012
-10962 4549 8064 0.293727880710195 0.293727880710195 -105.0217136 39.7312012 -105.0251484 39.731191
-10966 5216 3396 0.0579299126969349 0.0579299126969349 -105.0344587 39.7305984 -105.0351361 39.7306025
-10967 3396 8065 0.0454362838279539 0.0454362838279539 -105.0351361 39.7306025 -105.0356674 39.7306063
-10968 8065 5710 0.0481473121637486 0.0481473121637486 -105.0356674 39.7306063 -105.0362304 39.7306104
-10969 5710 8066 0.0449725321072065 0.0449725321072065 -105.0362304 39.7306104 -105.0367563 39.7306104
-10970 8066 7433 0.0497100835030792 0.0497100835030792 -105.0367563 39.7306104 -105.0373376 39.7306104
-10971 7433 8069 0.0438793771122388 0.0438793771122388 -105.0373376 39.7306104 -105.0378507 39.7306136
-10972 8069 7182 0.0471375837035957 0.0471375837035957 -105.0378507 39.7306136 -105.0384019 39.730617
-20567 10854 10857 0.225655121951984 0.225655121951984 -105.0159697 39.7588715 -105.0184643 39.7595354
-10973 7182 8070 0.0452974861696144 0.0452974861696144 -105.0384019 39.730617 -105.0389316 39.730617
-10974 8070 8071 0.0479228077199932 0.0479228077199932 -105.0389316 39.730617 -105.039492 39.730617
-10975 8071 8072 0.0470353472529161 0.0470353472529161 -105.039492 39.730617 -105.040042 39.7306132
-10976 8072 1097 0.0443841816938638 0.0443841816938638 -105.040042 39.7306132 -105.040561 39.7306097
-10978 8073 5318 0.014674630653103 0.014674630653103 -104.9738736 39.7606988 -104.9737157 39.7607506
-10979 5318 2905 0.0312080465120251 0.0312080465120251 -104.9737157 39.7607506 -104.9733508 39.7607599
-10980 2905 7145 0.104770590384922 0.104770590384922 -104.9733508 39.7607599 -104.9721251 39.760762
-10981 7145 5123 0.105925863098076 0.105925863098076 -104.9721251 39.760762 -104.9708859 39.7607568
-10982 5123 4737 0.104660211196924 0.104660211196924 -104.9708859 39.7607568 -104.9696615 39.7607527
-10983 4737 6783 0.106266768581811 0.106266768581811 -104.9696615 39.7607527 -104.9684183 39.7607496
-10984 6783 7367 0.10603565613408 0.10603565613408 -104.9684183 39.7607496 -104.9671778 39.7607476
-12610 8772 8773 0.0502119000696978 0.0502119000696978 -104.9969955 39.7289027 -104.9975826 39.7288966
-10987 3133 3905 0.108335751010408 0.108335751010408 -104.9647236 39.7607393 -104.9634562 39.7607434
-10988 3905 1043 0.106035430930181 0.106035430930181 -104.9634562 39.7607434 -104.9622157 39.7607434
-10989 1043 8074 0.0531930855223622 0.0531930855223622 -104.9622157 39.7607434 -104.9615934 39.7607445
-10990 8074 6278 0.0525006902367685 0.0525006902367685 -104.9615934 39.7607445 -104.9609792 39.7607455
-10991 6278 8075 0.105351603899057 0.105351603899057 -104.9609792 39.7607455 -104.9597467 39.7607455
-10992 8075 5007 0.100650315286722 0.100650315286722 -104.9597467 39.7607455 -104.9585692 39.7607455
-10993 5007 8076 0.0416106781167173 0.0416106781167173 -104.9585692 39.7607455 -104.9580824 39.7607455
-10995 8025 7689 0.0805451553909581 0.0805451553909581 -104.9487313 39.761191 -104.9478369 39.760963
-10996 7689 4508 0.0814563900003029 0.0814563900003029 -104.9478369 39.760963 -104.9468841 39.7609498
-10997 4508 3466 0.0836603655346893 0.0836603655346893 -104.9468841 39.7609498 -104.9459057 39.7609696
-10998 3466 6023 0.0805527124085535 0.0805527124085535 -104.9459057 39.7609696 -104.9449634 39.76096
-10999 6023 3872 0.0834734840918988 0.0834734840918988 -104.9449634 39.76096 -104.9440107 39.7607951
-11000 3872 8080 0.0833038712417768 0.0833038712417768 -104.9440107 39.7607951 -104.9430389 39.7607387
-11002 3967 8081 0.0785869791186196 0.0785869791186196 -105.0184978 39.6900096 -105.0194162 39.690003
-11004 6348 3039 0.0931730621198353 0.0931730621198353 -104.9430579 39.7581889 -104.9430494 39.7590268
-11005 3039 8080 0.190356710856614 0.190356710856614 -104.9430494 39.7590268 -104.9430389 39.7607387
-11006 8080 8082 0.0884015044030203 0.0884015044030203 -104.9430389 39.7607387 -104.9430328 39.7615337
-11008 6424 4647 0.0970252568524678 0.0970252568524678 -105.0175106 39.7248745 -105.0186451 39.7248745
-11009 4647 8083 0.151040975226462 0.151040975226462 -105.0186451 39.7248745 -105.0204107 39.7248423
-16204 9846 7728 0.404619504399153 0.404619504399153 -104.9798779 39.6857583 -104.9798585 39.6893971
-11010 4970 8084 0.141573509395187 0.141573509395187 -104.9800953 39.7828539 -104.9784386 39.7828407
-11012 6398 7450 0.0587460292912133 0.0587460292912133 -104.9991941 39.7080802 -104.9991888 39.7075519
-11013 7450 5682 0.0978645396723703 0.0978645396723703 -104.9991888 39.7075519 -104.9991817 39.7066718
-11014 5682 8085 0.19215729634673 0.19215729634673 -104.9991817 39.7066718 -104.9991901 39.7049437
-11015 8085 6825 0.00461462117405417 0.00461462117405417 -104.9991901 39.7049437 -104.9991903 39.7049022
-11016 6825 549 0.386380234242036 0.386380234242036 -104.9991903 39.7049022 -104.999187 39.7014274
-11017 549 6259 0.219376470776871 0.219376470776871 -104.999187 39.7014274 -104.999187 39.6994545
-11018 6259 8086 0.305359073933419 0.305359073933419 -104.999187 39.6994545 -104.9991292 39.6967087
-11019 8086 1485 0.202208842336051 0.202208842336051 -104.9991292 39.6967087 -104.9991903 39.6948908
-11023 8088 8089 0.0138986527527033 0.0138986527527033 -105.0018979 39.7429979 -105.0019804 39.7431056
-11024 8089 8090 0.00683010177656819 0.00683010177656819 -105.0019804 39.7431056 -105.002021 39.7431585
-11025 8090 8091 0.110435202693889 0.110435202693889 -105.002021 39.7431585 -105.0026536 39.7440244
-11026 7961 8092 0.198854876063874 0.198854876063874 -104.9896006 39.7279005 -104.9877223 39.7268463
-11028 5855 1340 0.201837936768745 0.201837936768745 -105.019178 39.714811 -105.0191455 39.712996
-11029 1340 8094 0.205566060887405 0.205566060887405 -105.0191455 39.712996 -105.0191455 39.7111473
-11030 8094 4699 0.204173926089909 0.204173926089909 -105.0191455 39.7111473 -105.0192055 39.7093117
-11031 4699 8095 0.200461574437924 0.200461574437924 -105.0192055 39.7093117 -105.0192399 39.7075091
-11032 8095 8096 0.201918867294297 0.201918867294297 -105.0192399 39.7075091 -105.0192399 39.7056932
-11033 8096 6823 0.198988761465987 0.198988761465987 -105.0192399 39.7056932 -105.0192227 39.7039037
-11034 6823 772 0.204865532850049 0.204865532850049 -105.0192227 39.7039037 -105.0192227 39.7020613
-11036 6007 6252 0.210749028817316 0.210749028817316 -105.0192141 39.7004566 -105.0192055 39.6985613
-11037 6252 8097 0.20159640654511 0.20159640654511 -105.0192055 39.6985613 -105.019205 39.6967483
-11039 6091 8098 0.0302498178580294 0.0302498178580294 -105.0158342 39.7607944 -105.0160862 39.7609854
-11040 8098 8099 0.0194131905433523 0.0194131905433523 -105.0160862 39.7609854 -105.016277 39.7610801
-11041 8099 6924 0.166900367789548 0.166900367789548 -105.016277 39.7610801 -105.0181853 39.7613979
-11042 6924 8100 0.161859559583179 0.161859559583179 -105.0181853 39.7613979 -105.0200789 39.7613979
-11043 8100 1241 0.0380629815604356 0.0380629815604356 -105.0200789 39.7613979 -105.0205242 39.7613979
-11045 6980 7942 0.133638145181839 0.133638145181839 -105.0408692 39.7034745 -105.0424313 39.7034679
-11046 7942 5338 0.0765467348148991 0.0765467348148991 -105.0424313 39.7034679 -105.0430777 39.7039439
-11048 5442 7919 0.212135491175046 0.212135491175046 -105.0250601 39.7030958 -105.0275397 39.7031113
-11049 7919 4410 0.19312496970157 0.19312496970157 -105.0275397 39.7031113 -105.0297971 39.7030981
-11050 4410 8103 0.226886968788061 0.226886968788061 -105.0297971 39.7030981 -105.0324492 39.7031047
-11051 8103 4283 0.17035467585884 0.17035467585884 -105.0324492 39.7031047 -105.0344405 39.7031047
-11053 8104 7854 0.0946426330892721 0.0946426330892721 -104.9912065 39.7783357 -104.9923137 39.7783555
-11054 7854 8105 0.0433309511619061 0.0433309511619061 -104.9923137 39.7783555 -104.9928201 39.7783357
-11055 8106 6776 0.129541839197132 0.129541839197132 -105.0252567 39.7778437 -105.0267719 39.7778785
-11056 6776 6152 0.13334664352248 0.13334664352248 -105.0267719 39.7778785 -105.0283323 39.7778787
-11057 6152 3997 0.133550546612879 0.133550546612879 -105.0283323 39.7778787 -105.0298945 39.7779116
-11058 3997 7046 0.134234793318191 0.134234793318191 -105.0298945 39.7779116 -105.0314652 39.7779248
-11059 7046 7376 0.132775137258175 0.132775137258175 -105.0314652 39.7779248 -105.0330187 39.7779446
-11060 7376 3435 0.135417405491425 0.135417405491425 -105.0330187 39.7779446 -105.0346033 39.7779525
-11063 7764 5715 0.0517371191288579 0.0517371191288579 -105.035177 39.7783841 -105.0357824 39.77838
-11064 5715 8107 0.0482057757930101 0.0482057757930101 -105.0357824 39.77838 -105.0363465 39.77838
-11065 8107 7435 0.0500858095958938 0.0500858095958938 -105.0363465 39.77838 -105.0369326 39.77838
-11066 7435 8108 0.0493949795014098 0.0493949795014098 -105.0369326 39.77838 -105.0375106 39.7783767
-11067 8108 7174 0.049625706970036 0.049625706970036 -105.0375106 39.7783767 -105.0380913 39.7783734
-11068 7174 6739 0.0493949818685724 0.0493949818685724 -105.0380913 39.7783734 -105.0386693 39.7783767
-11069 6739 7789 0.0481559013551591 0.0481559013551591 -105.0386693 39.7783767 -105.0392328 39.77838
-11070 7789 6645 0.0506327285203027 0.0506327285203027 -105.0392328 39.77838 -105.0398253 39.77838
-11071 6645 1136 0.0491201558695857 0.0491201558695857 -105.0398253 39.77838 -105.0404001 39.77838
-11072 1136 6995 0.0494363433732341 0.0494363433732341 -105.0404001 39.77838 -105.0409786 39.77838
-11073 6995 7503 0.049590164320003 0.049590164320003 -105.0409786 39.77838 -105.0415589 39.77838
-11074 7503 8109 0.100703299932673 0.100703299932673 -105.0415589 39.77838 -105.0427373 39.7783855
-11075 8109 7480 0.0534769030186113 0.0534769030186113 -105.0427373 39.7783855 -105.043363 39.7783777
-11076 7480 5580 0.0516905707687601 0.0516905707687601 -105.043363 39.7783777 -105.0439678 39.7783702
-11077 5580 8110 0.0497706020063474 0.0497706020063474 -105.0439678 39.7783702 -105.0445502 39.778373
-11078 8110 8111 0.0487450776836639 0.0487450776836639 -105.0445502 39.778373 -105.0451206 39.7783757
-11079 8111 8112 0.694365013204936 0.694365013204936 -105.0451206 39.7783757 -105.053246 39.7783797
-11080 1262 4539 0.0997555409236608 0.0997555409236608 -105.0204874 39.7784064 -105.0216547 39.778413
-11081 4539 6285 0.098678051142926 0.098678051142926 -105.0216547 39.778413 -105.0228094 39.7784186
-11083 2717 8113 0.100251109237605 0.100251109237605 -105.0239636 39.7784327 -105.0251365 39.7784506
-11085 8114 8115 0.096187670432143 0.096187670432143 -104.9982189 39.7783526 -104.9993433 39.7783922
-11086 8115 5626 0.201348891867615 0.201348891867615 -104.9993433 39.7783922 -105.0016991 39.7783602
-11088 2507 8116 0.0493483893872719 0.0493483893872719 -105.0105528 39.7777919 -105.0111288 39.7777603
-11089 8116 1238 0.100702597753866 0.100702597753866 -105.0111288 39.7777603 -105.0123072 39.7777623
-11090 1238 4792 0.032813432065695 0.032813432065695 -105.0123072 39.7777623 -105.0126909 39.7777735
-11091 4792 4812 0.0677278405661894 0.0677278405661894 -105.0126909 39.7777735 -105.0134831 39.7777557
-11092 4812 2152 0.0672921980026174 0.0672921980026174 -105.0134831 39.7777557 -105.0142702 39.7777735
-11093 2152 2179 0.0344341477791983 0.0344341477791983 -105.0142702 39.7777735 -105.0146727 39.777759
-11094 2179 6304 0.100339028034619 0.100339028034619 -105.0146727 39.777759 -105.0158468 39.7777672
-11095 6304 6426 0.101616906343387 0.101616906343387 -105.0158468 39.7777672 -105.0170359 39.7777689
-11096 6426 5344 0.101029409154815 0.101029409154815 -105.0170359 39.7777689 -105.0182175 39.7777985
-11097 5344 4640 0.0949596649493475 0.0949596649493475 -105.0182175 39.7777985 -105.0193287 39.7777995
-11098 4640 1261 0.0990622828589398 0.0990622828589398 -105.0193287 39.7777995 -105.0204874 39.7778259
-11100 3674 8117 0.125664760723522 0.125664760723522 -104.9782423 39.7475122 -104.97815 39.7486401
-11101 8117 8118 0.0959168081132613 0.0959168081132613 -104.97815 39.7486401 -104.9781487 39.7495027
-11102 8118 8119 0.126940211454871 0.126940211454871 -104.9781487 39.7495027 -104.978147 39.7506443
-11103 8119 8120 0.01117909521949 0.01117909521949 -104.978147 39.7506443 -104.9781435 39.7507448
-11104 8120 2680 0.0506435066002237 0.0506435066002237 -104.9781435 39.7507448 -104.9781521 39.7512002
-11105 2680 7576 0.0851117723335375 0.0851117723335375 -104.9781521 39.7512002 -104.9781607 39.7519656
-11106 7576 7833 0.0050110745435388 0.0050110745435388 -104.9781607 39.7519656 -104.9781265 39.7520022
-16206 5823 7210 0.206033080289906 0.206033080289906 -104.9798455 39.691158 -104.9798457 39.6930109
-11107 7833 8121 0.0770500763169566 0.0770500763169566 -104.9781265 39.7520022 -104.9781346 39.7526951
-11108 8121 8035 0.0465513466723509 0.0465513466723509 -104.9781346 39.7526951 -104.9781265 39.7531137
-11110 807 8122 0.0835494437055617 0.0835494437055617 -104.9781222 39.7532569 -104.9781363 39.7540082
-11111 8122 8123 0.0673397864842803 0.0673397864842803 -104.9781363 39.7540082 -104.9781379 39.7546138
-11112 8123 3017 0.0101257363562013 0.0101257363562013 -104.9781379 39.7546138 -104.9782228 39.7546773
-11114 8124 8125 0.0101518907891953 0.0101518907891953 -104.9790658 39.7205397 -104.9791138 39.7204562
-11115 8125 2367 0.124673068713839 0.124673068713839 -104.9791138 39.7204562 -104.9791205 39.719335
-11116 2367 8126 0.113318754907998 0.113318754907998 -104.9791205 39.719335 -104.9791209 39.7183159
-11117 8126 1826 0.2011636326138 0.2011636326138 -104.9791209 39.7183159 -104.9791466 39.7165069
-11119 8127 8128 0.150025905824831 0.150025905824831 -105.01151 39.7418472 -105.0124026 39.7430088
-11121 2887 8129 0.081938792894379 0.081938792894379 -104.9729638 39.7478589 -104.9721336 39.7482271
-11122 8129 8130 0.106964546123147 0.106964546123147 -104.9721336 39.7482271 -104.9708826 39.7482126
-11123 8130 4728 0.104978647949955 0.104978647949955 -104.9708826 39.7482126 -104.9696547 39.7482082
-11124 4728 6795 0.108689532522494 0.108689532522494 -104.9696547 39.7482082 -104.9683834 39.7482029
-11125 6795 7347 0.102216150252819 0.102216150252819 -104.9683834 39.7482029 -104.9671878 39.748204
-11126 7347 5393 0.105889579896167 0.105889579896167 -104.9671878 39.748204 -104.9659493 39.748214
-11127 5393 8131 0.054562518485416 0.054562518485416 -104.9659493 39.748214 -104.9653111 39.7482118
-11128 8131 8132 0.0481675689920574 0.0481675689920574 -104.9653111 39.7482118 -104.9647477 39.7482098
-11129 8132 3895 0.109975096473535 0.109975096473535 -104.9647477 39.7482098 -104.9634614 39.7482006
-11130 3895 1027 0.10512607647723 0.10512607647723 -104.9634614 39.7482006 -104.9622318 39.748208
-11131 1027 8133 0.0540856357592879 0.0540856357592879 -104.9622318 39.748208 -104.9615993 39.7482178
-12777 8831 8832 0.188959131880304 0.188959131880304 -104.9729154 39.7255792 -104.9729324 39.7272785
-11133 6270 8134 0.0524343047299347 0.0524343047299347 -104.960998 39.748227 -104.9603847 39.7482239
-11134 8134 8135 0.0535628703960502 0.0535628703960502 -104.9603847 39.7482239 -104.9597582 39.7482207
-11136 8136 8137 0.085310565822113 0.085310565822113 -104.9592611 39.7837879 -104.9602584 39.7837523
-11137 8137 6283 0.0924164471878071 0.0924164471878071 -104.9602584 39.7837523 -104.9613399 39.7837589
-11138 6283 8138 0.0880043396162394 0.0880043396162394 -104.9613399 39.7837589 -104.9623698 39.7837589
-11139 8138 8139 0.093883258506383 0.093883258506383 -104.9623698 39.7837589 -104.9634685 39.7837589
-11140 8139 3142 0.0916816056478044 0.0916816056478044 -104.9634685 39.7837589 -104.9645414 39.7837523
-11141 3142 5416 0.0909467644852468 0.0909467644852468 -104.9645414 39.7837523 -104.9656057 39.7837589
-11142 5416 8140 0.0909305385237858 0.0909305385237858 -104.9656057 39.7837589 -104.9666698 39.7837514
-11144 3154 4972 0.0951253779669951 0.0951253779669951 -104.981211 39.7837245 -104.980098 39.7837069
-11145 4972 8141 0.159341748119657 0.159341748119657 -104.980098 39.7837069 -104.9783643 39.7831792
-11147 8142 7088 0.0975513520982515 0.0975513520982515 -104.9858077 39.7837643 -104.9846662 39.7837774
-11148 7088 971 0.0957796137604222 0.0957796137604222 -104.9846662 39.7837774 -104.9835456 39.7837971
-11149 971 7402 0.0550171923708008 0.0550171923708008 -104.9835456 39.7837971 -104.9829018 39.7837905
-11150 7402 5289 0.0484207753056408 0.0484207753056408 -104.9829018 39.7837905 -104.9823354 39.7837773
-11152 3320 8143 0.077853024278325 0.077853024278325 -104.9569981 39.7837383 -104.956087 39.7837391
-11153 8143 5756 0.0805728425443714 0.0805728425443714 -104.956087 39.7837391 -104.9551441 39.7837449
-11154 5756 7328 0.0873058149168626 0.0873058149168626 -104.9551441 39.7837449 -104.9541227 39.7837251
-11155 7328 2087 0.0932446680916279 0.0932446680916279 -104.9541227 39.7837251 -104.9530315 39.7837193
-12803 4082 3763 0.178907695562899 0.178907695562899 -105.0063995 39.7838419 -105.0064169 39.7854508
-11158 4115 4117 0.0440125760632801 0.0440125760632801 -104.9513234 39.7837391 -104.9508084 39.7837325
-11159 4117 6504 0.0374084190760855 0.0374084190760855 -104.9508084 39.7837325 -104.9503707 39.7837259
-11160 6504 6677 0.044394894025319 0.044394894025319 -104.9503707 39.7837259 -104.9498557 39.7837786
-11161 6677 8029 0.0937961823239111 0.0937961823239111 -104.9498557 39.7837786 -104.9487583 39.7837977
-11162 8029 8144 0.0511329046048641 0.0511329046048641 -104.9487583 39.7837977 -104.9481599 39.7837974
-11163 8144 8145 0.0135266374241744 0.0135266374241744 -104.9481599 39.7837974 -104.9480016 39.7837973
-11165 4223 1001 0.0531658581374023 0.0531658581374023 -104.986953 39.7839026 -104.9875739 39.7838718
-11167 4374 2855 0.170827518580558 0.170827518580558 -105.0014998 39.7007322 -105.0034418 39.7003749
-11169 8146 4313 0.17183605887504 0.17183605887504 -105.0324321 39.7013349 -105.0344405 39.7013547
-11171 5444 7921 0.207916650376417 0.207916650376417 -105.0250665 39.701332 -105.0274968 39.7013283
-11172 7921 4408 0.197533961318481 0.197533961318481 -105.0274968 39.7013283 -105.0298056 39.7013481
-11174 8147 644 0.13870723980062 0.13870723980062 -104.9389466 39.7401205 -104.9389365 39.7413679
-11175 644 7273 0.132830481063153 0.132830481063153 -104.9389365 39.7413679 -104.9389193 39.7425624
-11176 7273 1992 0.0923486278054484 0.0923486278054484 -104.9389193 39.7425624 -104.9389249 39.7433929
-11177 1992 1976 0.0346172149199892 0.0346172149199892 -104.9389249 39.7433929 -104.9389295 39.7437042
-11178 1976 4591 0.135026001443702 0.135026001443702 -104.9389295 39.7437042 -104.9389209 39.7449185
-11179 4591 6478 0.132622992610531 0.132622992610531 -104.9389209 39.7449185 -104.9389155 39.7461112
-12836 8855 8856 0.0453127355156614 0.0453127355156614 -104.9892657 39.7540916 -104.988892 39.7538026
-11180 6478 2462 0.14279254357733 0.14279254357733 -104.9389155 39.7461112 -104.9388988 39.7473953
-11182 8148 8149 0.201096301426274 0.201096301426274 -104.9394475 39.7256125 -104.9394514 39.727421
-11183 8149 8150 0.201154462707023 0.201154462707023 -104.9394514 39.727421 -104.9394389 39.72923
-11185 2461 5905 0.204782750962282 0.204782750962282 -104.9394874 39.7473999 -104.9394475 39.7492413
-11186 5905 8151 0.200573430726899 0.200573430726899 -104.9394475 39.7492413 -104.9394486 39.7510451
-11187 8151 790 0.199941729347635 0.199941729347635 -104.9394486 39.7510451 -104.9394378 39.7528432
-11188 790 3583 0.202642621733606 0.202642621733606 -104.9394378 39.7528432 -104.9394304 39.7546656
-11189 3583 4354 0.202475015345548 0.202475015345548 -104.9394304 39.7546656 -104.9394273 39.7564865
-11190 4354 8152 0.200309115545572 0.200309115545572 -104.9394273 39.7564865 -104.9393999 39.7582878
-11191 8152 3057 0.206933046688651 0.206933046688651 -104.9393999 39.7582878 -104.9394429 39.7601485
-11192 3057 8153 0.186611026973769 0.186611026973769 -104.9394429 39.7601485 -104.9394065 39.7618265
-11194 1060 8154 0.173008298211734 0.173008298211734 -104.9395373 39.7162311 -104.939535 39.717787
-11195 8154 8155 0.177900871903465 0.177900871903465 -104.939535 39.717787 -104.9395373 39.7193869
-11196 8155 8156 0.167407375878646 0.167407375878646 -104.9395373 39.7193869 -104.9395248 39.7208924
-11197 8156 4775 0.251673348312152 0.251673348312152 -104.9395248 39.7208924 -104.9393188 39.7231502
-11198 4775 6553 0.132857734263153 0.132857734263153 -104.9393188 39.7231502 -104.9393102 39.724345
-11199 6553 8157 0.106438324963657 0.106438324963657 -104.9393102 39.724345 -104.9393188 39.7253022
-11201 2232 5133 0.19052148019247 0.19052148019247 -104.9395024 39.7328547 -104.9395046 39.7345681
-11202 5133 4902 0.0151263568070176 0.0151263568070176 -104.9395046 39.7345681 -104.9394839 39.7347032
-11203 4902 6619 0.197484990473566 0.197484990473566 -104.9394839 39.7347032 -104.9394962 39.7364792
-11205 8158 8159 0.20585122765193 0.20585122765193 -104.9394819 39.7382793 -104.939514 39.7401304
-11207 8160 8161 0.016887203978 0.016887203978 -104.9408036 39.7114181 -104.9406062 39.7114203
-11221 106 61 0.00533283632570931 0.00533283632570931 -104.931654 39.700221 -104.931714 39.700208
-11222 61 65 0.207145778882675 0.207145778882675 -104.931714 39.700208 -104.934135 39.700181
-11224 103 8170 0.0169041191858478 0.0169041191858478 -104.940786 39.7001905 -104.9405886 39.7001839
-11225 8170 8171 0.361108877807587 0.361108877807587 -104.9405886 39.7001839 -104.936368 39.700221
-11226 8171 8172 0.190446564346409 0.190446564346409 -104.936368 39.700221 -104.934142 39.700234
-11228 8173 8174 0.0754029121625499 0.0754029121625499 -104.940655 39.7066792 -104.9406492 39.7073573
-11229 8174 8175 0.417052793540933 0.417052793540933 -104.9406492 39.7073573 -104.9406062 39.7111078
-11231 8176 8177 0.0299391686417842 0.0299391686417842 -104.9365311 39.7051466 -104.9362135 39.7050335
-11232 8177 8178 0.202215537578589 0.202215537578589 -104.9362135 39.7050335 -104.9340806 39.7042496
-11233 8178 8179 0.11808571362223 0.11808571362223 -104.9340806 39.7042496 -104.9328366 39.7037894
-11234 8179 8163 0.126818785158071 0.126818785158071 -104.9328366 39.7037894 -104.9314767 39.7033354
-11236 4228 8181 0.209470643186114 0.209470643186114 -104.933969 39.696598 -104.933897 39.698481
-11269 4227 8200 0.197818013323833 0.197818013323833 -104.936211 39.696598 -104.936222 39.694819
-11237 8181 65 0.190124873120192 0.190124873120192 -104.933897 39.698481 -104.934135 39.700181
-11238 65 8172 0.00592368117466438 0.00592368117466438 -104.934135 39.700181 -104.934142 39.700234
-11239 8172 8178 0.446545243407564 0.446545243407564 -104.934142 39.700234 -104.9340806 39.7042496
-12886 8876 655 0.00596005420121878 0.00596005420121878 -104.9810837 39.7416131 -104.9810836 39.7416667
-11242 8183 8184 0.228538005170478 0.228538005170478 -104.9405972 39.7047205 -104.9381461 39.7039031
-11245 8162 8186 0.154667884886688 0.154667884886688 -104.936452 39.711255 -104.9351303 39.7103058
-11246 8186 8187 0.175562487769928 0.175562487769928 -104.9351303 39.7103058 -104.9332506 39.7096719
-11249 3633 8188 0.0150923041998694 0.0150923041998694 -104.9408419 39.7060696 -104.9406663 39.7060565
-11250 8188 8189 0.270579217097142 0.270579217097142 -104.9406663 39.7060565 -104.9375812 39.7055199
-11251 8189 8176 0.0989590805052705 0.0989590805052705 -104.9375812 39.7055199 -104.9365311 39.7051466
-11253 8163 3643 0.149826975112258 0.149826975112258 -104.9314767 39.7033354 -104.9299023 39.7027452
-11255 8190 1804 0.201671276037755 0.201671276037755 -104.937302 39.696603 -104.9373232 39.6947894
-11257 8191 8192 0.0154162495075233 0.0154162495075233 -104.940786 39.7020593 -104.9406058 39.7020593
-11258 8192 8193 0.181517364616001 0.181517364616001 -104.9406058 39.7020593 -104.9384841 39.7020481
-11259 8193 8194 0.180264399151985 0.180264399151985 -104.9384841 39.7020481 -104.936377 39.702045
-11261 8181 3550 0.192378625445026 0.192378625445026 -104.933897 39.698481 -104.931651 39.698398
-11264 8186 8197 0.16597516800592 0.16597516800592 -104.9351303 39.7103058 -104.936366 39.709155
-11265 8197 8198 0.19583924016197 0.19583924016197 -104.936366 39.709155 -104.9363539 39.7073938
-11267 8199 8197 0.123986592502342 0.123986592502342 -104.936354 39.71027 -104.936366 39.709155
-11271 8194 8171 0.202821007714315 0.202821007714315 -104.936377 39.702045 -104.936368 39.700221
-11272 8171 8195 0.195495736534207 0.195495736534207 -104.936368 39.700221 -104.9363825 39.6984629
-11273 8195 8201 0.207035429354564 0.207035429354564 -104.9363825 39.6984629 -104.936392 39.696601
-11275 8202 8174 0.0167300114490718 0.0167300114490718 -104.9408446 39.707351 -104.9406492 39.7073573
-11277 8198 8167 0.130702597640292 0.130702597640292 -104.9363539 39.7073938 -104.9348261 39.707407
-11278 8167 8203 0.122618976220882 0.122618976220882 -104.9348261 39.707407 -104.9333927 39.707407
-11279 8203 8204 0.327046093817032 0.327046093817032 -104.9333927 39.707407 -104.92957 39.707451
-11280 4228 4229 0.198835732908948 0.198835732908948 -104.933969 39.696598 -104.931645 39.696598
-11281 4229 8205 0.301334691508365 0.301334691508365 -104.931645 39.696598 -104.928123 39.696591
-11282 8206 8190 0.113799565910968 0.113799565910968 -104.9386317 39.6965781 -104.937302 39.696603
-11284 8201 4227 0.0154895076655846 0.0154895076655846 -104.936392 39.696601 -104.936211 39.696598
-11286 8207 8200 0.0930040479254132 0.0930040479254132 -104.937309 39.694816 -104.936222 39.694819
-11288 8193 8184 0.208283527691618 0.208283527691618 -104.9384841 39.7020481 -104.9381461 39.7039031
-11316 5155 2238 0.0837223321108041 0.0837223321108041 -104.9292584 39.7320999 -104.9292252 39.7328524
-11289 8184 8189 0.18616179415052 0.18616179415052 -104.9381461 39.7039031 -104.9375812 39.7055199
-11291 3257 8208 0.321455747501831 0.321455747501831 -104.9302161 39.7037522 -104.9336074 39.7049972
-11293 443 8209 0.110751336507506 0.110751336507506 -104.932837 39.701282 -104.932831 39.700286
-11294 392 8179 0.178734728363983 0.178734728363983 -104.932837 39.702182 -104.9328366 39.7037894
-11296 8162 6291 0.216060929512084 0.216060929512084 -104.936452 39.711255 -104.9339286 39.7111692
-11297 6291 7342 0.196043159951137 0.196043159951137 -104.9339286 39.7111692 -104.9316369 39.711189
-11645 8348 6433 0.104796073662296 0.104796073662296 -105.0190347 39.7552995 -105.0178088 39.7553019
-11299 7342 5274 0.233799434282417 0.233799434282417 -104.9316369 39.711189 -104.93153 39.709088
-11300 61 3550 0.201334976523304 0.201334976523304 -104.931714 39.700208 -104.931651 39.698398
-11301 3550 4229 0.200151526253302 0.200151526253302 -104.931651 39.698398 -104.931645 39.696598
-11303 5279 3162 0.0990447395902117 0.0990447395902117 -104.9826249 39.7183267 -104.9814669 39.7183289
-11304 3162 4979 0.101293558978732 0.101293558978732 -104.9814669 39.7183289 -104.9802827 39.7183173
-11305 4979 8126 0.0993695918525221 0.0993695918525221 -104.9802827 39.7183173 -104.9791209 39.7183159
-11306 8126 4335 0.0910331896522206 0.0910331896522206 -104.9791209 39.7183159 -104.9780566 39.7183225
-11307 4335 8210 0.0476841899874069 0.0476841899874069 -104.9780566 39.7183225 -104.9774991 39.7183251
-11308 8210 5040 0.0521232799197054 0.0521232799197054 -104.9774991 39.7183251 -104.9768897 39.7183279
-11309 5040 8005 0.0976580173278249 0.0976580173278249 -104.9768897 39.7183279 -104.9757482 39.7183081
-11310 8005 4307 0.0466427658725356 0.0466427658725356 -104.9757482 39.7183081 -104.975203 39.7182988
-11311 4307 995 0.052631404385892 0.052631404385892 -104.975203 39.7182988 -104.9745878 39.7182883
-11313 8211 5951 0.199050744316133 0.199050744316133 -104.9292411 39.7292602 -104.9292349 39.7310503
-11314 5951 5143 0.0913688712241713 0.0913688712241713 -104.9292349 39.7310503 -104.9292349 39.731872
-11315 5143 5155 0.025420878561629 0.025420878561629 -104.9292349 39.731872 -104.9292584 39.7320999
-11317 2238 4911 0.203010994943857 0.203010994943857 -104.9292252 39.7328524 -104.9291882 39.7346779
-11318 4911 6611 0.201886473833407 0.201886473833407 -104.9291882 39.7346779 -104.9291809 39.7364935
-11319 6611 8212 0.197101479655197 0.197101479655197 -104.9291809 39.7364935 -104.9292134 39.7382659
-11320 8212 8213 0.206955997470903 0.206955997470903 -104.9292134 39.7382659 -104.9292134 39.7401271
-11323 5950 5142 0.147533492116586 0.147533492116586 -104.9304356 39.7310602 -104.930434 39.732387
-11326 2237 4910 0.20422309503448 0.20422309503448 -104.9303867 39.7328502 -104.9303749 39.7346868
-11327 4910 6612 0.200274596012582 0.200274596012582 -104.9303749 39.7346868 -104.9303837 39.7364879
-11328 6612 8215 0.196974435405611 0.196974435405611 -104.9303837 39.7364879 -104.9303979 39.7382593
-11329 8215 8216 0.208072957327714 0.208072957327714 -104.9303979 39.7382593 -104.9303676 39.7401304
-11331 7959 8217 0.0106613346433968 0.0106613346433968 -104.9912259 39.7297319 -104.9911152 39.729776
-11337 289 8219 0.0101386145536838 0.0101386145536838 -105.0056941 39.7615954 -105.0056833 39.7616862
-11338 8219 4483 0.0263974796072716 0.0263974796072716 -105.0056833 39.7616862 -105.0055781 39.7619094
-11340 8220 289 0.116841869555958 0.116841869555958 -105.006312 39.7606581 -105.0056941 39.7615954
-11483 8221 8222 0.0466544327533727 0.0466544327533727 -104.9936301 39.74071 -104.9940163 39.7410064
-11342 8223 7906 0.0355112223964134 0.0355112223964134 -105.0064841 39.7620611 -105.0068985 39.7620384
-11343 7906 4187 0.0959478466054884 0.0959478466054884 -105.0068985 39.7620384 -105.008021 39.7620353
-11344 4187 8224 0.108554994700497 0.108554994700497 -105.008021 39.7620353 -105.009291 39.7620353
-11345 8224 2512 0.0267513344361619 0.0267513344361619 -105.009291 39.7620353 -105.0096039 39.7620403
-11346 2512 6726 0.134329958691173 0.134329958691173 -105.0096039 39.7620403 -105.0111753 39.7620239
-11347 6726 8226 0.0541066682112551 0.0541066682112551 -105.0111753 39.7620239 -105.0118083 39.7620229
-11348 8226 1754 0.0582360854290831 0.0582360854290831 -105.0118083 39.7620229 -105.0124896 39.7620198
-11352 8227 8228 0.0477813036978224 0.0477813036978224 -105.0138041 39.7620198 -105.0143631 39.7620198
-11353 8228 2164 0.0100092856224142 0.0100092856224142 -105.0143631 39.7620198 -105.0144802 39.7620198
-11354 2164 8229 0.117341992338054 0.117341992338054 -105.0144802 39.7620198 -105.015853 39.7620198
-11355 8229 6417 0.132790064578642 0.132790064578642 -105.015853 39.7620198 -105.0174065 39.7620125
-11356 6417 6925 0.066680142142332 0.066680142142332 -105.0174065 39.7620125 -105.0181866 39.7620126
-11357 6925 4623 0.0658013116163711 0.0658013116163711 -105.0181866 39.7620126 -105.0189564 39.7620167
-11358 4623 1242 0.132924383309181 0.132924383309181 -105.0189564 39.7620167 -105.0205115 39.7620158
-11359 1242 8230 0.117419950970456 0.117419950970456 -105.0205115 39.7620158 -105.0218852 39.7620114
-11360 8230 2709 0.0877593926636965 0.0877593926636965 -105.0218852 39.7620114 -105.0229119 39.7620081
-11361 2709 2723 0.0586886121966142 0.0586886121966142 -105.0229119 39.7620081 -105.0235985 39.7620059
-11362 2723 8231 0.126334352112189 0.126334352112189 -105.0235985 39.7620059 -105.0250765 39.7620038
-11363 8231 8232 0.00800071585537006 0.00800071585537006 -105.0250765 39.7620038 -105.0251701 39.7620042
-11364 8232 8233 0.00985605768408299 0.00985605768408299 -105.0251701 39.7620042 -105.0252854 39.7620032
-11368 8223 8219 0.0801446034429079 0.0801446034429079 -105.0064841 39.7620611 -105.0056833 39.7616862
-11374 8234 8235 0.161648892640997 0.161648892640997 -105.001293 39.7577963 -105.002653 39.7588064
-11375 8235 8236 0.12616333160407 0.12616333160407 -105.002653 39.7588064 -105.0034855 39.7597433
-11379 4843 910 0.143586236704503 0.143586236704503 -104.9986941 39.7558019 -104.9998754 39.7567199
-16194 9844 7725 1.4119245996206 1.4119245996206 -104.9822489 39.6767118 -104.9821706 39.6894094
-11388 2064 8243 0.0180732464676321 0.0180732464676321 -104.953025 39.7800093 -104.952864 39.7801147
-11389 8243 8244 0.307196973753055 0.307196973753055 -104.952864 39.7801147 -104.9498727 39.781647
-11392 8246 3316 0.0456634204130967 0.0456634204130967 -104.9607953 39.7804322 -104.960267 39.7804939
-11394 6201 6945 0.172713645832468 0.172713645832468 -104.9623939 39.7803745 -104.9624103 39.7819277
-11395 6945 8138 0.203649557134895 0.203649557134895 -104.9624103 39.7819277 -104.9623698 39.7837589
-11396 8138 2880 0.164233861501064 0.164233861501064 -104.9623698 39.7837589 -104.962414 39.7852355
-11398 6200 6944 0.169916988893137 0.169916988893137 -104.9634695 39.7803971 -104.9634685 39.7819252
-11399 6944 8139 0.203898136987997 0.203898136987997 -104.9634685 39.7819252 -104.9634685 39.7837589
-11400 8139 2879 0.160611633174386 0.160611633174386 -104.9634685 39.7837589 -104.9634771 39.7852033
-11401 2879 6408 0.0322091251783491 0.0322091251783491 -104.9634771 39.7852033 -104.9634692 39.7854929
-11402 6408 6412 0.266159968303504 0.266159968303504 -104.9634692 39.7854929 -104.963535 39.787886
-11403 6412 8247 0.0505479778201866 0.0505479778201866 -104.963535 39.787886 -104.963496 39.7883396
-11407 6190 6948 0.200111149085838 0.200111149085838 -104.9857782 39.7801773 -104.9858077 39.7819768
-11408 6948 8142 0.198760931377031 0.198760931377031 -104.9858077 39.7819768 -104.9858077 39.7837643
-11409 8142 2864 0.201908008890848 0.201908008890848 -104.9858077 39.7837643 -104.9858115 39.7855801
-11412 8249 8067 0.737441419701283 0.737441419701283 -105.0527654 39.7836619 -105.0441378 39.7835013
-11424 8079 8250 0.738983904805809 0.738983904805809 -105.0441387 39.7836373 -105.0527851 39.7837728
-11431 412 415 0.636538521199656 0.636538521199656 -105.0287256 39.7838921 -105.0212787 39.7837465
-18912 10390 10391 0.0580503615423655 0.0580503615423655 -105.0126243 39.749739 -105.0127316 39.7492235
-11453 8262 8263 0.292162593230546 0.292162593230546 -104.9882873 39.7806922 -104.9903301 39.7785853
-11468 781 8271 0.782578824666181 0.782578824666181 -104.9314271 39.7799974 -104.9225249 39.7783463
-11597 8330 8331 0.0435245851176098 0.0435245851176098 -105.0382057 39.7621211 -105.0387149 39.7621204
-11469 8272 8270 0.782084992370784 0.782084992370784 -104.9225195 39.7784772 -104.9314164 39.7801263
-11471 1610 1244 0.0543175525667992 0.0543175525667992 -104.9973103 39.7547013 -104.9968584 39.7543579
-11472 1244 8273 0.0533400242428221 0.0533400242428221 -104.9968584 39.7543579 -104.9964185 39.7540177
-11473 8273 8274 0.0526029519682926 0.0526029519682926 -104.9964185 39.7540177 -104.9959856 39.7536815
-11474 8274 8275 0.0534350213865012 0.0534350213865012 -104.9959856 39.7536815 -104.9955427 39.7533424
-11476 8276 1610 0.0663295545530221 0.0663295545530221 -104.9977757 39.7551786 -104.9973103 39.7547013
-11478 1610 8277 0.135789656985465 0.135789656985465 -104.9973103 39.7547013 -104.9961783 39.755558
-11480 7861 8278 0.0143942343868779 0.0143942343868779 -104.992927 39.7400066 -104.9929317 39.740136
-11481 8278 7581 0.0343415060903181 0.0343415060903181 -104.9929317 39.740136 -104.993184 39.7403763
-11482 7581 8221 0.0532138886249367 0.0532138886249367 -104.993184 39.7403763 -104.9936301 39.74071
-11484 8222 5964 0.00591714471910066 0.00591714471910066 -104.9940163 39.7410064 -104.9940638 39.7410451
-11485 5964 8279 0.00703516905841087 0.00703516905841087 -104.9940638 39.7410451 -104.9941219 39.7410899
-11486 8279 3001 0.0966235655424771 0.0966235655424771 -104.9941219 39.7410899 -104.99492 39.7417051
-11488 8275 7561 0.103690392766705 0.103690392766705 -104.9955427 39.7533424 -104.9946844 39.7526835
-11489 7561 8280 0.0558620890554655 0.0558620890554655 -104.9946844 39.7526835 -104.994215 39.752334
-11490 8280 6185 0.0505017539528047 0.0505017539528047 -104.994215 39.752334 -104.993798 39.7520123
-11493 8282 8283 0.101387037651418 0.101387037651418 -104.9928753 39.7513081 -104.9920377 39.7506626
-11494 8283 8284 0.102270654549379 0.102270654549379 -104.9920377 39.7506626 -104.9912016 39.7500048
-11495 8284 8285 0.10797805598011 0.10797805598011 -104.9912016 39.7500048 -104.9903025 39.7493228
-11496 8285 8286 0.106400672091098 0.106400672091098 -104.9903025 39.7493228 -104.9894331 39.7486381
-11497 8286 4392 0.102247824152268 0.102247824152268 -104.9894331 39.7486381 -104.9886052 39.7479745
-11498 4392 8287 0.0166274126542335 0.0166274126542335 -104.9886052 39.7479745 -104.9884675 39.7478689
-11499 8287 8288 0.0799445865529155 0.0799445865529155 -104.9884675 39.7478689 -104.9878071 39.7473599
-11500 8288 3008 0.023689428581565 0.023689428581565 -104.9878071 39.7473599 -104.9876315 39.7471951
-11501 3008 8289 0.0297886059757376 0.0297886059757376 -104.9876315 39.7471951 -104.9873968 39.7469971
-11505 8290 8291 0.051999610902965 0.051999610902965 -104.9908493 39.7516097 -104.9912817 39.7519386
-11506 8291 8292 0.0471972516257623 0.0471972516257623 -104.9912817 39.7519386 -104.9916742 39.7522371
-11507 8292 8293 0.00657484491051097 0.00657484491051097 -104.9916742 39.7522371 -104.9917306 39.7522773
-11508 8293 6184 0.103933630763566 0.103933630763566 -104.9917306 39.7522773 -104.9925969 39.7529331
-11509 6184 7562 0.106067817024884 0.106067817024884 -104.9925969 39.7529331 -104.9934281 39.7536413
-11510 7562 8294 0.105991654619724 0.105991654619724 -104.9934281 39.7536413 -104.9942907 39.754326
-11512 8295 8296 0.0523765388441753 0.0523765388441753 -104.9947185 39.754659 -104.9951571 39.7549879
-11522 8297 8298 0.429589849820924 0.429589849820924 -105.0048527 39.7552746 -105.0028555 39.7588198
-11537 6093 8302 0.0171793049902436 0.0171793049902436 -105.0268612 39.760858 -105.0266827 39.760929
-11539 8303 8304 0.00530856583912826 0.00530856583912826 -105.0265595 39.7609475 -105.026526 39.7609877
-11541 2195 8305 0.128463648918522 0.128463648918522 -105.0025939 39.7533024 -105.0036573 39.7541187
-11543 8306 8307 0.0111673306658244 0.0111673306658244 -105.0042327 39.7545718 -105.0043265 39.7546417
-11545 8308 8306 0.0470759818626725 0.0470759818626725 -105.0038599 39.7542602 -105.0042327 39.7545718
-11547 8309 8310 0.0336302381688336 0.0336302381688336 -105.0254224 39.7404725 -105.0251999 39.7407219
-11549 8311 8312 0.0219555493879181 0.0219555493879181 -105.0031123 39.7485003 -105.0033568 39.7484399
-11550 8312 8313 0.036241706253738 0.036241706253738 -105.0033568 39.7484399 -105.00375 39.7483181
-11598 8331 7782 0.0493369824555625 0.0493369824555625 -105.0387149 39.7621204 -105.0392921 39.7621196
-11551 8313 8314 0.0512913124797426 0.0512913124797426 -105.00375 39.7483181 -105.0042918 39.74812
-11552 8314 8315 0.107868186928524 0.107868186928524 -105.0042918 39.74812 -105.0053848 39.7476354
-11553 8315 8316 0.223470506469832 0.223470506469832 -105.0053848 39.7476354 -105.007603 39.7465723
-11554 8316 8317 0.211788929267968 0.211788929267968 -105.007603 39.7465723 -105.0094519 39.7453047
-11555 8317 6963 0.0143636308232266 0.0143636308232266 -105.0094519 39.7453047 -105.0095744 39.7452163
-16197 7207 1788 0.198027086450295 0.198027086450295 -104.9821537 39.693012 -104.9821522 39.6947929
-11556 6963 2151 0.0672032541987901 0.0672032541987901 -105.0095744 39.7452163 -105.0100859 39.7447574
-11557 2151 8318 0.127422890827039 0.127422890827039 -105.0100859 39.7447574 -105.0111676 39.7439691
-11563 8321 5670 0.0510922996821663 0.0510922996821663 -105.0304907 39.7580283 -105.0310884 39.7580274
-11564 5670 8319 0.0512128921942442 0.0512128921942442 -105.0310884 39.7580274 -105.0316875 39.7580245
-11565 8319 7031 0.0489988317743493 0.0489988317743493 -105.0316875 39.7580245 -105.0322607 39.7580218
-13192 2925 5307 0.0991225747078309 0.0991225747078309 -105.0215487 39.7075025 -105.0227074 39.7075091
-17794 8402 10178 0.0874671474005437 0.0874671474005437 -104.9873999 39.7564065 -104.9873945 39.7556199
-11583 8323 8324 0.0415122975666244 0.0415122975666244 -105.0248659 39.7403859 -105.0252084 39.7401213
-11585 8325 8326 0.0105737020216599 0.0105737020216599 -105.0288943 39.7621125 -105.029018 39.7621132
-11586 8326 8327 0.0170186899048993 0.0170186899048993 -105.029018 39.7621132 -105.0292171 39.7621142
-11587 8327 4030 0.059373245074661 0.059373245074661 -105.0292171 39.7621142 -105.0299117 39.7621179
-11588 4030 8328 0.00887102858910589 0.00887102858910589 -105.0299117 39.7621179 -105.0300154 39.7621147
-11589 8328 7033 0.192077028988682 0.192077028988682 -105.0300154 39.7621147 -105.0322624 39.7621339
-11590 7033 3414 0.20009224997208 0.20009224997208 -105.0322624 39.7621339 -105.0346033 39.7621393
-11591 3414 7634 0.0490496792565584 0.0490496792565584 -105.0346033 39.7621393 -105.0351771 39.7621341
-11592 7634 5699 0.0501609282125079 0.0501609282125079 -105.0351771 39.7621341 -105.0357639 39.7621288
-11593 5699 8329 0.0491062363102631 0.0491062363102631 -105.0357639 39.7621288 -105.0363384 39.7621278
-11594 8329 7426 0.0512345906571307 0.0512345906571307 -105.0363384 39.7621278 -105.0369378 39.7621268
-11595 7426 7167 0.100906650593457 0.100906650593457 -105.0369378 39.7621268 -105.0381183 39.7621212
-11596 7167 8330 0.0074706340310152 0.0074706340310152 -105.0381183 39.7621212 -105.0382057 39.7621211
-11601 1125 8333 0.0515421912286004 0.0515421912286004 -105.0404588 39.7621199 -105.0410618 39.76212
-11602 8333 7499 0.0491232128122514 0.0491232128122514 -105.0410618 39.76212 -105.0416365 39.7621201
-11603 7499 6382 0.0528674106807856 0.0528674106807856 -105.0416365 39.7621201 -105.042255 39.7621184
-11604 6382 3844 0.0491757077428548 0.0491757077428548 -105.042255 39.7621184 -105.0428303 39.7621153
-11605 3844 8336 0.0505763419832581 0.0505763419832581 -105.0428303 39.7621153 -105.043422 39.7621158
-11606 8336 5560 0.0511234189065501 0.0511234189065501 -105.043422 39.7621158 -105.0440201 39.7621151
-11607 5560 7536 0.078259792036463 0.078259792036463 -105.0440201 39.7621151 -105.0449356 39.7621062
-17795 10178 10179 0.00714983889336217 0.00714983889336217 -104.9873945 39.7556199 -104.9873946 39.7555556
-11608 7536 8337 0.710353127144862 0.710353127144862 -105.0449356 39.7621062 -105.0532461 39.7620897
-11615 8339 8340 0.0545607270452329 0.0545607270452329 -105.0252854 39.7572536 -105.0259235 39.7572649
-11616 8340 6778 0.0500886204125654 0.0500886204125654 -105.0259235 39.7572649 -105.0265093 39.7572752
-11617 6778 1543 0.044749974690185 0.044749974690185 -105.0265093 39.7572752 -105.0270328 39.7572752
-11618 1543 7913 0.0484257128218018 0.0484257128218018 -105.0270328 39.7572752 -105.0275993 39.7572752
-11619 7913 1232 0.0498960080732329 0.0498960080732329 -105.0275993 39.7572752 -105.028183 39.7572752
-11620 1232 6138 0.0513577550981739 0.0513577550981739 -105.028183 39.7572752 -105.0287838 39.7572752
-11621 6138 1234 0.0484184731965446 0.0484184731965446 -105.0287838 39.7572752 -105.0293502 39.757272
-11622 1234 4025 0.049897443897038 0.049897443897038 -105.0293502 39.757272 -105.0299339 39.7572686
-11624 8341 6746 0.131938356933677 0.131938356933677 -105.0252824 39.7524035 -105.0268257 39.752413
-11625 6746 6146 0.134278510793599 0.134278510793599 -105.0268257 39.752413 -105.0283964 39.7524064
-11626 6146 4020 0.131808341418281 0.131808341418281 -105.0283964 39.7524064 -105.029938 39.752386
-11627 4020 7024 0.13680573147125 0.13680573147125 -105.029938 39.752386 -105.0315379 39.752413
-11628 7024 7394 0.133543322276702 0.133543322276702 -105.0315379 39.752413 -105.0331 39.7524064
-11629 7394 3403 0.129241253411212 0.129241253411212 -105.0331 39.7524064 -105.0346118 39.7524067
-11631 4656 1278 0.11609492718799 0.11609492718799 -105.0191525 39.7524262 -105.0205102 39.7524035
-11633 4529 8342 0.13081541679387 0.13081541679387 -105.0220809 39.7524035 -105.0236111 39.7524085
-11634 8342 8343 0.131875462531589 0.131875462531589 -105.0236111 39.7524085 -105.0251537 39.7524035
-11636 1275 4561 0.135792686790169 0.135792686790169 -105.0204903 39.7500187 -105.0220781 39.7499857
-11637 4561 8344 0.129597362082905 0.129597362082905 -105.0220781 39.7499857 -105.0235939 39.7499999
-11638 8344 8345 0.132615292246902 0.132615292246902 -105.0235939 39.7499999 -105.0251451 39.7499949
-11654 8351 8352 0.00642310935412446 0.00642310935412446 -105.024297 39.7598572 -105.024257 39.7599061
-11656 8354 3585 0.00948998635035479 0.00948998635035479 -105.0236698 39.7606212 -105.0236106 39.7606934
-11658 8355 7036 0.189514043057238 0.189514043057238 -105.0300476 39.7643693 -105.0322644 39.7643359
-11661 3420 7662 0.0473953664812579 0.0473953664812579 -105.0346118 39.7639669 -105.0351663 39.7639675
-11662 7662 5701 0.051310070537927 0.051310070537927 -105.0351663 39.7639675 -105.0357666 39.7639681
-11663 5701 8356 0.0493288418218244 0.0493288418218244 -105.0357666 39.7639681 -105.0363437 39.7639643
-11664 8356 7428 0.0514646959507586 0.0514646959507586 -105.0363437 39.7639643 -105.0369458 39.7639617
-11665 7428 7170 0.101185693406291 0.101185693406291 -105.0369458 39.7639617 -105.0381296 39.7639566
-11666 7170 8357 0.0511732963069457 0.0511732963069457 -105.0381296 39.7639566 -105.0387283 39.763957
-11667 8357 7785 0.0488740378204359 0.0488740378204359 -105.0387283 39.763957 -105.0393001 39.7639573
-11669 8358 8359 0.0429199500385996 0.0429199500385996 -105.039401 39.7639563 -105.0399031 39.7639514
-11670 8359 1126 0.0542934514543922 0.0542934514543922 -105.0399031 39.7639514 -105.0405383 39.7639496
-11671 1126 8361 0.0465752610792189 0.0465752610792189 -105.0405383 39.7639496 -105.0410832 39.7639477
-11672 8361 7500 0.0458657856618734 0.0458657856618734 -105.0410832 39.7639477 -105.0416198 39.7639459
-11673 7500 6383 0.0540969092476656 0.0540969092476656 -105.0416198 39.7639459 -105.0422527 39.763944
-11674 6383 3845 0.0488658545954006 0.0488658545954006 -105.0422527 39.763944 -105.0428244 39.7639423
-11675 3845 8362 0.0512974137325796 0.0512974137325796 -105.0428244 39.7639423 -105.0434239 39.7639208
-11676 8362 5562 0.0492074321979192 0.0492074321979192 -105.0434239 39.7639208 -105.0439996 39.7639213
-11677 5562 8363 0.0405073414501016 0.0405073414501016 -105.0439996 39.7639213 -105.0444735 39.7639185
-11678 8363 7537 0.0387636388049137 0.0387636388049137 -105.0444735 39.7639185 -105.044927 39.7639158
-11679 7537 8364 0.709659016245144 0.709659016245144 -105.044927 39.7639158 -105.0532296 39.7639
-11680 533 532 0.177767664549368 0.177767664549368 -105.0123604 39.7549991 -105.010541 39.7542249
-11681 532 8365 0.019932032746647 0.019932032746647 -105.010541 39.7542249 -105.0103456 39.7541271
-11683 8366 2195 0.0764354088651933 0.0764354088651933 -105.0020448 39.7527599 -105.0025939 39.7533024
-11712 3383 8367 0.106809468593159 0.106809468593159 -105.0346003 39.7427332 -105.035848 39.7426857
-11713 8367 8368 0.0971987897456675 0.0971987897456675 -105.035848 39.7426857 -105.0369827 39.7427391
-11714 8368 8369 0.0991386674985246 0.0991386674985246 -105.0369827 39.7427391 -105.0381422 39.7427432
-11717 5295 6973 0.135215470337054 0.135215470337054 -105.0357845 39.7439376 -105.035775 39.7451536
-11718 6973 8371 0.00923487504976077 0.00923487504976077 -105.035775 39.7451536 -105.0357615 39.745236
-11719 8371 8372 0.0216052571390285 0.0216052571390285 -105.0357615 39.745236 -105.0357622 39.7454303
-11720 8372 16 0.105179593848414 0.105179593848414 -105.0357622 39.7454303 -105.0357652 39.7463762
-11721 16 6385 0.131720726068438 0.131720726068438 -105.0357652 39.7463762 -105.0357845 39.7475607
-11722 6385 8373 0.136425162652677 0.136425162652677 -105.0357845 39.7475607 -105.0357825 39.7487876
-11723 8373 8374 0.133357418298716 0.133357418298716 -105.0357825 39.7487876 -105.0357895 39.7499869
-11725 8375 5538 0.102551146645578 0.102551146645578 -105.0357821 39.7511876 -105.0357963 39.7521098
-11726 5538 2406 0.101276420369131 0.101276420369131 -105.0357963 39.7521098 -105.0357948 39.7530206
-11727 2406 4291 0.0994536245434588 0.0994536245434588 -105.0357948 39.7530206 -105.0357997 39.753915
-11728 4291 8376 0.0498495835403536 0.0498495835403536 -105.0357997 39.753915 -105.0358032 39.7543633
-11729 8376 8377 0.0555205772000376 0.0555205772000376 -105.0358032 39.7543633 -105.035807 39.7548626
-11730 8377 7717 0.202770146499174 0.202770146499174 -105.035807 39.7548626 -105.035838 39.756686
-11731 7717 2980 0.203558742671124 0.203558742671124 -105.035838 39.756686 -105.0358208 39.7585166
-11733 6381 7626 0.0677965571067337 0.0677965571067337 -105.0334738 39.7475695 -105.0334588 39.7481791
-11734 7626 8378 0.0657902652889389 0.0657902652889389 -105.0334588 39.7481791 -105.0334703 39.7487707
-11736 3813 8379 0.0683672879873519 0.0683672879873519 -105.0403593 39.7474155 -105.0410701 39.7476972
-11737 8379 7491 0.0530440410997852 0.0530440410997852 -105.0410701 39.7476972 -105.0416725 39.7478114
-11738 7491 3832 0.0868122883126915 0.0868122883126915 -105.0416725 39.7478114 -105.042608 39.748115
-11740 8129 8380 0.134532326319759 0.134532326319759 -104.9721336 39.7482271 -104.9721157 39.7494369
-11741 8380 8382 0.00458704251135175 0.00458704251135175 -104.9721157 39.7494369 -104.972113 39.7494781
-11743 8383 8384 0.136207849444979 0.136207849444979 -104.9721125 39.7495132 -104.9721264 39.7507381
-11744 8384 7838 0.138328826392976 0.138328826392976 -104.9721264 39.7507381 -104.9720959 39.7519819
-11746 8385 8386 0.0871147692827014 0.0871147692827014 -105.0124198 39.7414644 -105.0115357 39.7418538
-11749 8389 8390 0.0947169874364547 0.0947169874364547 -105.0124419 39.7396939 -105.0116345 39.7402771
-19614 10514 10587 0.0689139357560502 0.0689139357560502 -104.9902714 39.7087938 -104.9910769 39.7088041
-11751 8391 4386 0.0534420102551264 0.0534420102551264 -104.982081 39.7523183 -104.9825253 39.7526564
-11752 4386 8392 0.0520924012173649 0.0520924012173649 -104.9825253 39.7526564 -104.9829471 39.7529945
-11753 8392 8393 0.0473152332925311 0.0473152332925311 -104.9829471 39.7529945 -104.9833461 39.7532894
-11754 8393 8394 0.00593400942031918 0.00593400942031918 -104.9833461 39.7532894 -104.9833985 39.7533244
-11755 8394 8395 0.0526072167549377 0.0526072167549377 -104.9833985 39.7533244 -104.9838316 39.7536605
-11756 8395 8396 0.0535245842073366 0.0535245842073366 -104.9838316 39.7536605 -104.9842635 39.754009
-11757 8396 8397 0.0520127953812383 0.0520127953812383 -104.9842635 39.754009 -104.98469 39.7543426
-11758 8397 8398 0.0525440381176666 0.0525440381176666 -104.98469 39.7543426 -104.9851174 39.7546822
-11759 8398 8399 0.105725944401461 0.105725944401461 -104.9851174 39.7546822 -104.9860118 39.7553389
-11760 8399 8400 0.0963534079842441 0.0963534079842441 -104.9860118 39.7553389 -104.9868117 39.7559494
-11761 8400 8401 0.00721402202643277 0.00721402202643277 -104.9868117 39.7559494 -104.9868716 39.7559951
-11762 8401 8402 0.0642819932248178 0.0642819932248178 -104.9868716 39.7559951 -104.9873999 39.7564065
-11763 8402 6180 0.0440229088580127 0.0440229088580127 -104.9873999 39.7564065 -104.9877579 39.7566911
-11764 6180 3304 0.105719811244021 0.105719811244021 -104.9877579 39.7566911 -104.9886307 39.7573647
-11765 3304 8404 0.104473728049028 0.104473728049028 -104.9886307 39.7573647 -104.9894933 39.7580303
-11776 2683 5360 0.148134497863423 0.148134497863423 -104.9790985 39.751919 -104.9803323 39.7509836
-11779 8408 8409 0.0170504242210171 0.0170504242210171 -105.0080042 39.7473225 -105.0082031 39.7473337
-11780 8409 8410 0.0301331300599118 0.0301331300599118 -105.0082031 39.7473337 -105.0080216 39.7471014
-11781 8410 8408 0.024630163522097 0.024630163522097 -105.0080216 39.7471014 -105.0080042 39.7473225
-11786 8411 7068 0.119279864672347 0.119279864672347 -104.9738611 39.7586965 -104.9748473 39.7579376
-11787 7068 5513 0.148575970390717 0.148575970390717 -104.9748473 39.7579376 -104.97606 39.7569804
-11788 5513 4445 0.14563348668729 0.14563348668729 -104.97606 39.7569804 -104.9772635 39.7560534
-11795 8413 543 0.028789081158834 0.028789081158834 -105.0218658 39.7405653 -105.0222025 39.7405643
-11800 8038 2689 0.14574049201504 0.14574049201504 -104.9805458 39.7548634 -104.9817462 39.7539327
-11801 2689 8392 0.146364813323007 0.146364813323007 -104.9817462 39.7539327 -104.9829471 39.7529945
-11810 8316 8410 0.0688632882143238 0.0688632882143238 -105.007603 39.7465723 -105.0080216 39.7471014
-11818 8318 8421 0.163109524565458 0.163109524565458 -105.0111676 39.7439691 -105.0127281 39.7431253
-11820 2202 8422 0.0636527332062032 0.0636527332062032 -105.0128922 39.7400809 -105.0135792 39.7398604
-11827 8425 8426 0.235001983383898 0.235001983383898 -104.9895725 39.7854572 -104.9895595 39.7833438
-11829 8427 2187 0.0976945121262096 0.0976945121262096 -105.0148298 39.7369044 -105.0159723 39.7369102
-11830 2187 8428 0.113051166751879 0.113051166751879 -105.0159723 39.7369102 -105.0172942 39.7368917
-11832 8429 8427 0.106790392513668 0.106790392513668 -105.0135809 39.7369043 -105.0148298 39.7369044
-11836 8432 8433 0.316135432263608 0.316135432263608 -105.0153422 39.7339918 -105.0141326 39.7366784
-11838 8434 8435 0.0739062863270344 0.0739062863270344 -105.0143556 39.741604 -105.0147581 39.7421922
-16014 9785 9166 0.0737839272607517 0.0737839272607517 -104.9929555 39.6960192 -104.9928292 39.6966756
-11840 8436 8437 0.305296163280187 0.305296163280187 -105.014551 39.7415365 -105.0140684 39.7388161
-11842 8438 8439 0.0899401823641934 0.0899401823641934 -105.0171026 39.7442035 -105.0164414 39.7435744
-11843 8439 8440 0.0855827793815302 0.0855827793815302 -105.0164414 39.7435744 -105.0158022 39.7429821
-11845 8441 533 0.0890672230330435 0.0890672230330435 -105.0132989 39.755347 -105.0123604 39.7549991
-11847 8325 3752 0.00830034500152871 0.00830034500152871 -105.0288943 39.7621125 -105.0288682 39.7620406
-11848 3752 8442 0.100105658665385 0.100105658665385 -105.0288682 39.7620406 -105.0279677 39.761465
-11849 8442 6773 0.103872958239997 0.103872958239997 -105.0279677 39.761465 -105.0268646 39.7610731
-11850 6773 8303 0.0295834023794743 0.0295834023794743 -105.0268646 39.7610731 -105.0265595 39.7609475
-11851 8303 8443 0.122024126507826 0.122024126507826 -105.0265595 39.7609475 -105.0254023 39.7603049
-11854 8365 8445 0.12649848699983 0.12649848699983 -105.0103456 39.7541271 -105.0090988 39.7535144
-11856 8445 8446 0.0774789975708123 0.0774789975708123 -105.0090988 39.7535144 -105.0083779 39.7530921
-11858 6522 8447 0.124835406842481 0.124835406842481 -104.982762 39.6978313 -104.9827785 39.6967087
-11860 8447 4244 0.0110439553261759 0.0110439553261759 -104.9827785 39.6967087 -104.9827699 39.6966096
-11861 4244 1787 0.20168643392703 0.20168643392703 -104.9827699 39.6966096 -104.9827622 39.6947958
-11862 1787 7206 0.198352393557477 0.198352393557477 -104.9827622 39.6947958 -104.9827747 39.693012
-11863 7206 5819 0.204146640542909 0.204146640542909 -104.9827747 39.693012 -104.9827894 39.6911761
-11864 5819 7724 0.196992932786583 0.196992932786583 -104.9827894 39.6911761 -104.9827896 39.6894045
-11865 7724 8448 0.0469826616672844 0.0469826616672844 -104.9827896 39.6894045 -104.9827836 39.688982
-11866 8448 8449 1.1597652413984 1.1597652413984 -104.9827836 39.688982 -104.9829313 39.6785526
-15932 1178 9158 0.281206093212011 0.281206093212011 -104.9967808 39.7006121 -104.9960034 39.7030693
-11868 529 476 0.196533269115043 0.196533269115043 -105.0102365 39.7542807 -105.0121896 39.7552131
-11869 476 8451 0.00692492598385206 0.00692492598385206 -105.0121896 39.7552131 -105.0122583 39.7552461
-11871 8452 8450 0.118857471050118 0.118857471050118 -105.009013 39.7536728 -105.0101803 39.7542535
-11873 8446 8453 0.0472361723035857 0.0472361723035857 -105.0083779 39.7530921 -105.0079745 39.7528018
-11875 8453 1808 0.0616092600190724 0.0616092600190724 -105.0079745 39.7528018 -105.0075333 39.7523637
-11876 1808 8454 0.103675532542851 0.103675532542851 -105.0075333 39.7523637 -105.0069016 39.7515678
-11878 8455 8452 0.0832501988122618 0.0832501988122618 -105.0082148 39.7532439 -105.009013 39.7536728
-11880 8456 8455 0.0488208935536257 0.0488208935536257 -105.0077942 39.7529469 -105.0082148 39.7532439
-11883 1807 8456 0.0645719953824934 0.0645719953824934 -105.0073479 39.7524784 -105.0077942 39.7529469
-11885 8454 8460 0.0468848260297017 0.0468848260297017 -105.0069016 39.7515678 -105.0065497 39.7512444
-11887 8460 8461 0.191542303309411 0.191542303309411 -105.0065497 39.7512444 -105.0049189 39.7500632
-11888 8461 8462 0.143814933384229 0.143814933384229 -105.0049189 39.7500632 -105.003842 39.7490696
-11926 8479 7578 0.0514183930388008 0.0514183930388008 -104.9903554 39.7419081 -104.9907772 39.7422377
-11889 8462 8312 0.0813843178601785 0.0813843178601785 -105.003842 39.7490696 -105.0033568 39.7484399
-11890 8312 8463 0.108687135880293 0.108687135880293 -105.0033568 39.7484399 -105.0026615 39.7476216
-11891 8463 8464 0.171307568098715 0.171307568098715 -105.0026615 39.7476216 -105.0014282 39.7464074
-11892 8464 7962 0.138415151415673 0.138415151415673 -105.0014282 39.7464074 -105.0007006 39.7452954
-11894 8465 8457 0.0468050869550622 0.0468050869550622 -105.0063608 39.7513896 -105.0067213 39.7517064
-11899 8468 3170 0.018103312819976 0.018103312819976 -105.0008907 39.7479512 -105.0006969 39.7480168
-11901 8469 8466 0.0123424922846296 0.0123424922846296 -105.0019357 39.7486848 -105.0020778 39.7486652
-11902 8466 8311 0.0903233113904637 0.0903233113904637 -105.0020778 39.7486652 -105.0031123 39.7485003
-11904 8470 8469 0.0396717564170432 0.0396717564170432 -105.0014824 39.7487611 -105.0019357 39.7486848
-11906 8296 8273 0.152532135373756 0.152532135373756 -104.9951571 39.7549879 -104.9964185 39.7540177
-11907 8273 5789 0.146346014371488 0.146346014371488 -104.9964185 39.7540177 -104.9976271 39.7530856
-11908 5789 4816 0.144635236179438 0.144635236179438 -104.9976271 39.7530856 -104.9988196 39.7521629
-11909 4816 8471 0.144945711618013 0.144945711618013 -104.9988196 39.7521629 -105.0000116 39.7512359
-11910 8471 8472 0.00337499193971306 0.00337499193971306 -105.0000116 39.7512359 -105.0000361 39.7512121
-13477 9099 9096 0.0859011649600223 0.0859011649600223 -105.0181659 39.7251883 -105.0171656 39.7251183
-11912 8473 8474 0.141151348464777 0.141151348464777 -105.0000669 39.7511877 -105.0012293 39.7502862
-11913 8474 8475 0.13279343346844 0.13279343346844 -105.0012293 39.7502862 -105.0022888 39.7494129
-11915 1346 8475 0.0349627710606267 0.0349627710606267 -105.0024538 39.7491252 -105.0022888 39.7494129
-11919 8313 8477 0.0691895872331652 0.0691895872331652 -105.00375 39.7483181 -105.003633 39.7477024
-11921 4846 8478 0.326789742990523 0.326789742990523 -105.0038505 39.7522849 -105.0065368 39.7543758
-11923 5031 6987 0.0623597305249406 0.0623597305249406 -104.9884893 39.7405273 -104.9890246 39.7409082
-11924 6987 5806 0.105799056021075 0.105799056021075 -104.9890246 39.7409082 -104.989913 39.7415705
-11925 5806 8479 0.0532916983351864 0.0532916983351864 -104.989913 39.7415705 -104.9903554 39.7419081
-11927 7578 8480 0.0539921866859616 0.0539921866859616 -104.9907772 39.7422377 -104.9912213 39.7425829
-11928 8480 8481 0.0438686505947476 0.0438686505947476 -104.9912213 39.7425829 -104.9915821 39.7428634
-11929 8481 5961 0.00656699811047763 0.00656699811047763 -104.9915821 39.7428634 -104.9916357 39.7429057
-11930 5961 8482 0.00665108194893408 0.00665108194893408 -104.9916357 39.7429057 -104.9916907 39.742948
-11931 8482 3003 0.0997303043018087 0.0997303043018087 -104.9916907 39.742948 -104.9925155 39.7435822
-11932 3003 4396 0.10605079021574 0.10605079021574 -104.9925155 39.7435822 -104.993398 39.7442524
-11933 4396 8483 0.102726296828384 0.102726296828384 -104.993398 39.7442524 -104.9942509 39.7449031
-11934 8483 8484 0.00648258609012086 0.00648258609012086 -104.9942509 39.7449031 -104.9943021 39.7449461
-11935 8484 8485 0.100141708737386 0.100141708737386 -104.9943021 39.7449461 -104.995128 39.7455847
-11936 8485 8486 0.0275311475026058 0.0275311475026058 -104.995128 39.7455847 -104.9953533 39.7457616
-11937 8486 8487 0.0265062604992808 0.0265062604992808 -104.9953533 39.7457616 -104.9955701 39.745932
-11938 8487 8488 0.0523458198440316 0.0523458198440316 -104.9955701 39.745932 -104.9959984 39.7462684
-11939 8488 8489 0.104751027795859 0.104751027795859 -104.9959984 39.7462684 -104.9968701 39.7469304
-11940 8489 8490 0.0990693987095691 0.0990693987095691 -104.9968701 39.7469304 -104.9976922 39.7475583
-11941 8490 8491 0.00745857832944624 0.00745857832944624 -104.9976922 39.7475583 -104.9977552 39.7476047
-11942 8491 8492 0.0518088588950486 0.0518088588950486 -104.9977552 39.7476047 -104.998183 39.7479347
-11943 8492 6189 0.054888246037165 0.054888246037165 -104.998183 39.7479347 -104.9986323 39.7482873
-11945 6632 7733 0.112596009055585 0.112596009055585 -104.9757688 39.6903887 -104.9757679 39.6893761
-12071 8507 3552 0.071078699522552 0.071078699522552 -104.9777748 39.7546175 -104.9769434 39.7546258
-11946 7733 8495 2.00712592676004 2.00712592676004 -104.9757679 39.6893761 -104.9758002 39.6713256
-11954 6568 4449 0.147875161573861 0.147875161573861 -104.9802246 39.7564641 -104.9789969 39.757401
-11955 4449 5497 0.144351276811523 0.144351276811523 -104.9789969 39.757401 -104.9777977 39.758315
-11956 5497 7071 0.14871904829256 0.14871904829256 -104.9777977 39.758315 -104.9765951 39.7592815
-11958 8501 8502 0.146058647776188 0.146058647776188 -104.9871043 39.7524564 -104.985916 39.7534002
-11959 8502 8397 0.148207146508282 0.148207146508282 -104.985916 39.7534002 -104.98469 39.7543426
-11960 8397 2694 0.144837053832231 0.144837053832231 -104.98469 39.7543426 -104.9834919 39.7552636
-11966 4737 8503 0.0843423130679838 0.0843423130679838 -104.9696615 39.7607527 -104.9696782 39.7615111
-11967 8399 5455 0.141833750205801 0.141833750205801 -104.9860118 39.7553389 -104.984841 39.7562427
-11968 5455 2697 0.00495891013188563 0.00495891013188563 -104.984841 39.7562427 -104.9847927 39.7562674
-11969 2697 8045 0.148003641728593 0.148003641728593 -104.9847927 39.7562674 -104.9835828 39.7572195
-11970 8045 6573 0.144311748140391 0.144311748140391 -104.9835828 39.7572195 -104.9824151 39.7581568
-11971 6573 4454 0.147824934616054 0.147824934616054 -104.9824151 39.7581568 -104.981171 39.7590802
-11972 4454 5502 0.144725467857806 0.144725467857806 -104.981171 39.7590802 -104.9799824 39.7600071
-11973 5502 7076 0.14772137009526 0.14772137009526 -104.9799824 39.7600071 -104.9787733 39.7609563
-11974 7076 2033 0.146029155751578 0.146029155751578 -104.9787733 39.7609563 -104.9775611 39.7618817
-11975 2033 5322 0.146208700799923 0.146208700799923 -104.9775611 39.7618817 -104.9763558 39.7628147
-11976 5322 631 0.145784380568713 0.145784380568713 -104.9763558 39.7628147 -104.9751714 39.7637581
-11977 631 6404 0.147332884437086 0.147332884437086 -104.9751714 39.7637581 -104.973944 39.7646884
-11978 6404 2910 0.0722929712454625 0.0722929712454625 -104.973944 39.7646884 -104.9733493 39.7651507
-11980 8504 8505 0.0580359403583064 0.0580359403583064 -104.9856564 39.7569396 -104.9861441 39.7573027
-11981 8505 6178 0.0499592014591395 0.0499592014591395 -104.9861441 39.7573027 -104.9865554 39.7576219
-11982 6178 8506 0.0514685264155668 0.0514685264155668 -104.9865554 39.7576219 -104.986978 39.7579516
-11983 8506 8508 0.0359450086839816 0.0359450086839816 -104.986978 39.7579516 -104.9873985 39.757951
-11985 8509 8491 0.145477011516465 0.145477011516465 -104.9989592 39.7466802 -104.9977552 39.7476047
-11986 8491 6711 0.147675146026861 0.147675146026861 -104.9977552 39.7476047 -104.9965276 39.748539
-11987 6711 8510 0.0119577509852376 0.0119577509852376 -104.9965276 39.748539 -104.9964255 39.7486125
-11999 7079 2035 0.146591134901683 0.146591134901683 -104.9800778 39.7619593 -104.978878 39.7629013
-12000 2035 8511 0.144080341921709 0.144080341921709 -104.978878 39.7629013 -104.9776691 39.7638043
-12001 8506 6577 0.292638121021149 0.292638121021149 -104.986978 39.7579516 -104.9845851 39.7598337
-12013 8514 7905 0.14392744613234 0.14392744613234 -105.0068857 39.7602149 -105.0080885 39.7611207
-12014 7905 8224 0.144594704272466 0.144594704272466 -105.0080885 39.7611207 -105.009291 39.7620353
-12015 8224 2513 0.0408485952047996 0.0408485952047996 -105.009291 39.7620353 -105.0096031 39.7623135
-12017 8223 4514 0.129566346086565 0.129566346086565 -105.0064841 39.7620611 -105.0064389 39.7632258
-12018 4514 5236 0.132336483238921 0.132336483238921 -105.0064389 39.7632258 -105.00645 39.7644159
-12019 5236 6888 0.137583446360535 0.137583446360535 -105.00645 39.7644159 -105.0064586 39.7656532
-12020 6888 8515 0.134749292102011 0.134749292102011 -105.0064586 39.7656532 -105.0064696 39.766865
-18562 2839 2837 0.0398814314105002 0.0398814314105002 -105.0301265 39.7802941 -105.0296598 39.7802952
-12021 8515 1670 0.131131933535458 0.131131933535458 -105.0064696 39.766865 -105.0064415 39.7680441
-12022 1670 8516 0.137025514768393 0.137025514768393 -105.0064415 39.7680441 -105.006441 39.7692764
-12023 8516 2451 0.140387467109701 0.140387467109701 -105.006441 39.7692764 -105.0064532 39.7705389
-12024 2451 3220 0.132796169496021 0.132796169496021 -105.0064532 39.7705389 -105.0064274 39.771733
-12025 3220 3241 0.0110949892633217 0.0110949892633217 -105.0064274 39.771733 -105.0064102 39.7718319
-12026 3241 5742 0.122723226676881 0.122723226676881 -105.0064102 39.7718319 -105.0064961 39.7729336
-12027 5742 5734 0.0121046279679281 0.0121046279679281 -105.0064961 39.7729336 -105.0064617 39.7730392
-12028 5734 5519 0.122276751203955 0.122276751203955 -105.0064617 39.7730392 -105.0064768 39.7741388
-12029 5519 5518 0.0183360434030607 0.0183360434030607 -105.0064768 39.7741388 -105.0064768 39.7743037
-12030 5518 6453 0.115919443239594 0.115919443239594 -105.0064768 39.7743037 -105.006451 39.775346
-12031 6453 8519 0.0186206290164017 0.0186206290164017 -105.006451 39.775346 -105.0064452 39.7755134
-12032 8519 6921 0.113511395757215 0.113511395757215 -105.0064452 39.7755134 -105.0064346 39.7765342
-12033 6921 6966 0.278590640144845 0.278590640144845 -105.0064346 39.7765342 -105.0064198 39.7790396
-12034 6966 2480 0.0421290693071181 0.0421290693071181 -105.0064198 39.7790396 -105.0064445 39.779418
-12035 2480 2819 0.0832464241503531 0.0832464241503531 -105.0064445 39.779418 -105.0064329 39.7801666
-12036 2819 1420 0.203808019181798 0.203808019181798 -105.0064329 39.7801666 -105.0063986 39.7819993
-12037 1420 1350 0.0610460440330561 0.0610460440330561 -105.0063986 39.7819993 -105.0063979 39.7825483
-12038 1350 386 0.0313326355302306 0.0313326355302306 -105.0063979 39.7825483 -105.0063891 39.78283
-12039 386 8520 0.00828931624769023 0.00828931624769023 -105.0063891 39.78283 -105.006397 39.7829043
-12041 8521 8522 0.0528158272532374 0.0528158272532374 -105.0043742 39.7505911 -105.0048268 39.7502678
-12042 8522 8461 0.0240744692191342 0.0240744692191342 -105.0048268 39.7502678 -105.0049189 39.7500632
-12045 8524 8525 0.099226587437181 0.099226587437181 -105.0053655 39.751233 -105.0047107 39.7504962
-12056 6652 7968 0.116416731661103 0.116416731661103 -104.9999567 39.7402253 -104.9994613 39.7412005
-13645 9155 9152 0.125537210877253 0.125537210877253 -104.9962707 39.706856 -104.9968785 39.7078836
-12069 3016 8123 0.0144820950034519 0.0144820950034519 -104.9783073 39.7546124 -104.9781379 39.7546138
-12070 8123 8507 0.0310425416681892 0.0310425416681892 -104.9781379 39.7546138 -104.9777748 39.7546175
-12072 3552 4443 0.0963694960086714 0.0963694960086714 -104.9769434 39.7546258 -104.9763376 39.7553567
-12074 8536 8537 0.125429093404429 0.125429093404429 -104.987378 39.7529333 -104.9863465 39.7537355
-12075 8537 8398 0.148732331324902 0.148732331324902 -104.9863465 39.7537355 -104.9851174 39.7546822
-12076 8398 2695 0.143717697009194 0.143717697009194 -104.9851174 39.7546822 -104.9839243 39.7555928
-12078 8043 6571 0.143486226041694 0.143486226041694 -104.9827245 39.7565663 -104.981529 39.7574721
-15271 8458 8538 0.130887342573391 0.130887342573391 -104.9284834 39.705337 -104.9283761 39.7065112
-12079 6571 4452 0.149648787475973 0.149648787475973 -104.981529 39.7574721 -104.9802783 39.7584138
-12080 4452 5500 0.142780903948531 0.142780903948531 -104.9802783 39.7584138 -104.9791156 39.7593357
-12081 5500 7074 0.148102852377504 0.148102852377504 -104.9791156 39.7593357 -104.9778937 39.76028
-12082 7074 2032 0.145681586591459 0.145681586591459 -104.9778937 39.76028 -104.9767057 39.7612194
-12086 2886 7993 0.218441304114497 0.218441304114497 -104.9722001 39.7469535 -104.9747549 39.746928
-12088 8130 8541 0.134523622254369 0.134523622254369 -104.9708826 39.7482126 -104.9708826 39.7494224
-12089 8541 8542 0.00481474032387871 0.00481474032387871 -104.9708826 39.7494224 -104.9708826 39.7494657
-12090 8542 8543 0.00504824966940074 0.00504824966940074 -104.9708826 39.7494657 -104.9708826 39.7495111
-12091 8543 8544 0.135980275793844 0.135980275793844 -104.9708826 39.7495111 -104.9708826 39.750734
-12092 8544 7839 0.139416199289129 0.139416199289129 -104.9708826 39.750734 -104.9708825 39.7519878
-12093 7839 819 0.136947671655105 0.136947671655105 -104.9708825 39.7519878 -104.9708825 39.7532194
-12094 819 3560 0.140872852825874 0.140872852825874 -104.9708825 39.7532194 -104.9708824 39.7544863
-12095 3560 5634 0.139405079534224 0.139405079534224 -104.9708824 39.7544863 -104.9708824 39.75574
-12096 5634 4338 0.141217557097108 0.141217557097108 -104.9708824 39.75574 -104.9708823 39.75701
-12097 4338 6337 0.135602213042785 0.135602213042785 -104.9708823 39.75701 -104.9708823 39.7582295
-12098 6337 3053 0.134723773393479 0.134723773393479 -104.9708823 39.7582295 -104.9708822 39.7594411
-12100 3691 8545 0.139072808044494 0.139072808044494 -104.970874 39.7469218 -104.9696681 39.7460824
-12101 5485 8546 0.200596752868582 0.200596752868582 -104.9541539 39.7383732 -104.9541798 39.7401771
-12103 4888 8547 0.185876236918155 0.185876236918155 -104.9539764 39.7351225 -104.9539498 39.736794
-12104 8547 5486 0.175599681021845 0.175599681021845 -104.9539498 39.736794 -104.9539554 39.7383732
-12106 4889 8548 0.187588829795577 0.187588829795577 -104.9528338 39.7351142 -104.952774 39.7368006
-12107 8548 5487 0.174192187356096 0.174192187356096 -104.952774 39.7368006 -104.952802 39.738367
-12109 8549 8550 0.0264199145705686 0.0264199145705686 -104.9647731 39.7365894 -104.9647731 39.736827
-12110 8550 5477 0.172910339815493 0.172910339815493 -104.9647731 39.736827 -104.964716 39.7383814
-12111 5477 8551 0.17777655236626 0.17777655236626 -104.964716 39.7383814 -104.9647671 39.7399797
-12112 8551 8552 0.179401923989104 0.179401923989104 -104.9647671 39.7399797 -104.9647683 39.7415931
-12114 672 8553 0.00419226671708486 0.00419226671708486 -104.9647688 39.7416171 -104.9647683 39.7416548
-12116 8554 4600 0.174009465824247 0.174009465824247 -104.9647611 39.7432314 -104.9647661 39.7447963
-12117 4600 6497 0.141315269300352 0.141315269300352 -104.9647661 39.7447963 -104.9647477 39.7460671
-12118 6497 3685 0.0979207012351752 0.0979207012351752 -104.9647477 39.7460671 -104.9647396 39.7469477
-12119 3685 8132 0.140340825489325 0.140340825489325 -104.9647396 39.7469477 -104.9647477 39.7482098
-12120 8132 8555 0.134412189177842 0.134412189177842 -104.9647477 39.7482098 -104.9647128 39.7494183
-12121 8555 8556 0.00412533177852682 0.00412533177852682 -104.9647128 39.7494183 -104.9647128 39.7494554
-12122 8556 8557 0.00459814794721775 0.00459814794721775 -104.9647128 39.7494554 -104.9647155 39.7494967
-12123 8557 8558 0.132902025218854 0.132902025218854 -104.9647155 39.7494967 -104.9647073 39.7506919
-12124 8558 7841 0.138710880861165 0.138710880861165 -104.9647073 39.7506919 -104.9647228 39.7519393
-12125 7841 825 0.140880437202465 0.140880437202465 -104.9647228 39.7519393 -104.9647057 39.7532062
-12126 825 3566 0.136859579672601 0.136859579672601 -104.9647057 39.7532062 -104.9647415 39.7544367
-12127 3566 5637 0.14457832436944 0.14457832436944 -104.9647415 39.7544367 -104.9647101 39.7557367
-12128 5637 4341 0.139173250387063 0.139173250387063 -104.9647101 39.7557367 -104.9647021 39.7569883
-12129 4341 6340 0.137021300435373 0.137021300435373 -104.9647021 39.7569883 -104.964686 39.7582205
-12130 6340 8560 0.107881318168938 0.107881318168938 -104.964686 39.7582205 -104.9646861 39.7591907
-12131 2245 4879 0.176153654685445 0.176153654685445 -104.9644966 39.7334712 -104.9646143 39.7350528
-12132 4879 7358 0.24873496630677 0.24873496630677 -104.9646143 39.7350528 -104.9672193 39.7360482
-12133 7358 6786 0.0656034947664249 0.0656034947664249 -104.9672193 39.7360482 -104.9677841 39.7356489
-12134 6786 4878 0.0544981388589161 0.0544981388589161 -104.9677841 39.7356489 -104.9679617 39.7351782
-12135 4878 5942 0.524256212186461 0.524256212186461 -104.9679617 39.7351782 -104.96779 39.7304653
-12136 5942 8561 0.0631406553785623 0.0631406553785623 -104.96779 39.7304653 -104.9673609 39.7300032
-12137 8561 3127 0.0936118840285326 0.0936118840285326 -104.9673609 39.7300032 -104.9663652 39.7296534
-12138 3127 3131 0.0777309112767711 0.0777309112767711 -104.9663652 39.7296534 -104.9654579 39.7296956
-12139 3131 5914 0.112365280295693 0.112365280295693 -104.9654579 39.7296956 -104.9646486 39.7304917
-12140 5914 2245 0.331560162235425 0.331560162235425 -104.9646486 39.7304917 -104.9644966 39.7334712
-12142 8562 2334 2.72525423343991 2.72525423343991 -104.8920171 39.7258127 -104.9238826 39.7256356
-12144 7677 5980 0.0954252288299854 0.0954252288299854 -104.924985 39.7256294 -104.9261008 39.7256273
-12145 5980 2129 0.0933556137052187 0.0933556137052187 -104.9261008 39.7256273 -104.9271924 39.7256294
-12146 2129 7520 0.0952025856529876 0.0952025856529876 -104.9271924 39.7256294 -104.9283056 39.7256294
-12147 7520 8563 0.0935887718802941 0.0935887718802941 -104.9283056 39.7256294 -104.9293999 39.7256232
-12148 8563 2270 0.0947410402071955 0.0947410402071955 -104.9293999 39.7256232 -104.9305077 39.7256212
-12149 2270 7011 0.0942715716828769 0.0942715716828769 -104.9305077 39.7256212 -104.93161 39.725617
-12150 7011 2766 0.0940480616870089 0.0940480616870089 -104.93161 39.725617 -104.9327097 39.725617
-12151 2766 3353 0.0940568781185638 0.0940568781185638 -104.9327097 39.725617 -104.9338095 39.725615
-12152 3353 2010 0.0938087738322925 0.0938087738322925 -104.9338095 39.725615 -104.9349064 39.7256134
-12153 2010 2020 0.00116816859457691 0.00116816859457691 -104.9349064 39.7256134 -104.9349199 39.725615
-12154 2020 7597 0.0929046375775443 0.0929046375775443 -104.9349199 39.725615 -104.9360062 39.7256088
-12155 7597 7260 0.0977180089067193 0.0977180089067193 -104.9360062 39.7256088 -104.9371488 39.7256129
-12156 7260 7607 0.0981798145414121 0.0981798145414121 -104.9371488 39.7256129 -104.9382968 39.725617
-12157 7607 8148 0.0984109366674247 0.0984109366674247 -104.9382968 39.725617 -104.9394475 39.7256125
-12158 8148 8566 0.099556755200234 0.099556755200234 -104.9394475 39.7256125 -104.9406116 39.7256083
-12159 8566 8567 0.0161715318927219 0.0161715318927219 -104.9406116 39.7256083 -104.940796 39.7255761
-12165 7560 8570 0.0547324150634264 0.0547324150634264 -104.9970625 39.7508224 -104.9966174 39.7504686
-12166 8570 6187 0.0510334947129921 0.0510334947129921 -104.9966174 39.7504686 -104.9961984 39.7501417
-12167 6187 8571 0.106459447476842 0.106459447476842 -104.9961984 39.7501417 -104.9953197 39.7494633
-12168 8571 8572 0.00500250155273319 0.00500250155273319 -104.9953197 39.7494633 -104.9952739 39.7494353
-12169 8572 8573 0.102179560181125 0.102179560181125 -104.9952739 39.7494353 -104.9944322 39.7487829
-12171 8574 8575 0.108491319350075 0.108491319350075 -104.9936089 39.7481594 -104.9927205 39.7474627
-12172 8575 8576 0.100542104447219 0.100542104447219 -104.9927205 39.7474627 -104.9918796 39.7468306
-12173 8576 8577 0.00648974428476286 0.00648974428476286 -104.9918796 39.7468306 -104.9918273 39.7467883
-12174 8577 4394 0.10502201579173 0.10502201579173 -104.9918273 39.7467883 -104.9909615 39.7461183
-12175 4394 3006 0.104610459063575 0.104610459063575 -104.9909615 39.7461183 -104.9900832 39.7454633
-12176 3006 5958 0.107806604319072 0.107806604319072 -104.9900832 39.7454633 -104.9891839 39.7447837
-12177 5958 8578 0.00423483079275732 0.00423483079275732 -104.9891839 39.7447837 -104.9891482 39.7447573
-12178 8578 7577 0.0996748095395635 0.0996748095395635 -104.9891482 39.7447573 -104.9883537 39.7441013
-12179 7577 5809 0.11590556985698 0.11590556985698 -104.9883537 39.7441013 -104.9873953 39.7433641
-12181 5431 4429 0.103577041627779 0.103577041627779 -105.0250764 39.7166076 -105.0250933 39.717539
-12182 4429 4040 0.0675516196999984 0.0675516196999984 -105.0250933 39.717539 -105.0250969 39.7181465
-12183 4040 8579 0.0337698992215471 0.0337698992215471 -105.0250969 39.7181465 -105.0250969 39.7184502
-12184 8579 6027 0.102046173899402 0.102046173899402 -105.0250969 39.7184502 -105.0251054 39.7193679
-12185 6027 7864 0.042576537412 0.042576537412 -105.0251054 39.7193679 -105.0251054 39.7197508
-12186 7864 7863 0.0569874056816302 0.0569874056816302 -105.0251054 39.7197508 -105.0251051 39.7202633
-12187 7863 1834 0.10010879574602 0.10010879574602 -105.0251051 39.7202633 -105.0251054 39.7211636
-12188 1834 1828 0.0220165954761323 0.0220165954761323 -105.0251054 39.7211636 -105.0251054 39.7213616
-12189 1828 2629 0.0778176858176647 0.0778176858176647 -105.0251054 39.7213616 -105.025114 39.7220614
-12190 2629 5364 0.0924919399829741 0.0924919399829741 -105.025114 39.7220614 -105.025114 39.7228932
-12191 5364 8580 0.0666180932686517 0.0666180932686517 -105.025114 39.7228932 -105.0251093 39.7234923
-12192 8580 514 0.0427668694783733 0.0427668694783733 -105.0251093 39.7234923 -105.0251054 39.7238769
-12193 514 8581 0.0733005757458476 0.0733005757458476 -105.0251054 39.7238769 -105.0251096 39.7245361
-12194 8581 411 0.0548642593724076 0.0548642593724076 -105.0251096 39.7245361 -105.0251128 39.7250295
-12195 411 8582 0.0193916055385274 0.0193916055385274 -105.0251128 39.7250295 -105.0251054 39.7252038
-12200 8463 8583 0.030501567860775 0.030501567860775 -105.0026615 39.7476216 -105.0023143 39.7476847
-12202 8584 8585 0.0144536004398608 0.0144536004398608 -105.0010239 39.7420661 -105.0010329 39.7419363
-12203 8585 8586 0.0148984012969261 0.0148984012969261 -105.0010329 39.7419363 -105.0012044 39.74196
-12204 8586 8587 0.0138457363467684 0.0138457363467684 -105.0012044 39.74196 -105.0011631 39.7420804
-12206 7095 8584 0.00198726095451303 0.00198726095451303 -105.0010418 39.7420775 -105.0010239 39.7420661
-12208 8587 8588 0.0738864008587524 0.0738864008587524 -105.0011631 39.7420804 -105.0015962 39.7426554
-12209 8588 8088 0.0459979828668163 0.0459979828668163 -105.0015962 39.7426554 -105.0018979 39.7429979
-12211 8588 8088 0.0459979828668163 0.0459979828668163 -105.0015962 39.7426554 -105.0018979 39.7429979
-12213 7962 8589 0.0119871256203592 0.0119871256203592 -105.0007006 39.7452954 -105.000578 39.7453477
-12219 2290 8595 0.0472264457525012 0.0472264457525012 -105.0033485 39.7409586 -105.002885 39.7411896
-12224 8600 6960 0.0627185145557708 0.0627185145557708 -105.0080176 39.741951 -105.0073809 39.7422311
-12225 6960 8590 0.111002569075664 0.111002569075664 -105.0073809 39.7422311 -105.0062495 39.7427207
-12226 8590 8601 0.0399166681864525 0.0399166681864525 -105.0062495 39.7427207 -105.0058461 39.7429014
-12227 8601 8602 0.0122006420704012 0.0122006420704012 -105.0058461 39.7429014 -105.0057227 39.7429565
-12229 8602 8601 0.0122006420704012 0.0122006420704012 -105.0057227 39.7429565 -105.0058461 39.7429014
-12231 8605 8606 0.0364944571667735 0.0364944571667735 -105.0003759 39.7410885 -105.0005878 39.7413734
-12232 8606 8607 0.0128764646733806 0.0128764646733806 -105.0005878 39.7413734 -105.0006617 39.7414743
-12233 8607 8608 0.0546695374625623 0.0546695374625623 -105.0006617 39.7414743 -105.0009845 39.7418987
-12234 8608 8585 0.00588263593176519 0.00588263593176519 -105.0009845 39.7418987 -105.0010329 39.7419363
-12238 6350 8610 0.0529261007223787 0.0529261007223787 -105.0044986 39.7547701 -105.0048452 39.7551645
-12276 2459 8630 0.034376801437 0.034376801437 -105.0078361 39.7532748 -105.0075545 39.7534955
-12278 8630 8631 0.0429012342669158 0.0429012342669158 -105.0075545 39.7534955 -105.0072049 39.7537723
-12279 8631 8478 0.0881202047420162 0.0881202047420162 -105.0072049 39.7537723 -105.0065368 39.7543758
-12280 8478 6349 0.0631900183412494 0.0631900183412494 -105.0065368 39.7543758 -105.0059317 39.7547022
-12281 6349 8610 0.106156240617891 0.106156240617891 -105.0059317 39.7547022 -105.0048452 39.7551645
-12282 8610 8633 0.00782193502715287 0.00782193502715287 -105.0048452 39.7551645 -105.0047762 39.7552107
-12283 8633 8235 0.439089917447406 0.439089917447406 -105.0047762 39.7552107 -105.002653 39.7588064
-13838 2963 1284 0.0976236721102847 0.0976236721102847 -105.0214955 39.7584475 -105.0205218 39.7579887
-12291 8488 6708 0.146276219075305 0.146276219075305 -104.9959984 39.7462684 -104.9947886 39.7471986
-12292 6708 8574 0.146922373978856 0.146922373978856 -104.9947886 39.7471986 -104.9936089 39.7481594
-12293 8574 5780 0.145168342719135 0.145168342719135 -104.9936089 39.7481594 -104.9924092 39.7490833
-12294 5780 8284 0.145457218481639 0.145457218481639 -104.9924092 39.7490833 -104.9912016 39.7500048
-12295 8284 8635 0.147985754967018 0.147985754967018 -104.9912016 39.7500048 -104.9899626 39.7509342
-12296 8635 7895 0.145231730226047 0.145231730226047 -104.9899626 39.7509342 -104.9887543 39.7518523
-12297 7895 8636 0.145188764989583 0.145188764989583 -104.9887543 39.7518523 -104.987575 39.7527919
-12298 8636 8536 0.0230398310291247 0.0230398310291247 -104.987575 39.7527919 -104.987378 39.7529333
-12300 8637 8638 0.051750923168378 0.051750923168378 -104.9993008 39.7450562 -104.9997271 39.7453866
-12306 8641 8642 0.0388526899017529 0.0388526899017529 -105.0078924 39.7547551 -105.0079921 39.7544142
-12322 8647 8648 0.0689932486013888 0.0689932486013888 -105.0057725 39.7569369 -105.0052757 39.7574259
-12324 8409 8649 0.174821115803257 0.174821115803257 -105.0082031 39.7473337 -105.0092259 39.7486951
-12330 8652 8653 0.0109021010822668 0.0109021010822668 -105.0077772 39.7547483 -105.0076516 39.7547313
-12370 127 8676 0.0230804767650593 0.0230804767650593 -105.001255 39.763221 -105.000985 39.7632181
-13861 1773 4425 0.0478826481852338 0.0478826481852338 -104.9769014 39.705675 -104.9763417 39.7056707
-12371 8676 127 0.0230804767650593 0.0230804767650593 -105.000985 39.7632181 -105.001255 39.763221
-12374 8678 2814 0.00715247655230442 0.00715247655230442 -104.9912089 39.7765361 -104.9912923 39.7765415
-12375 2814 7853 0.0872240502720576 0.0872240502720576 -104.9912923 39.7765415 -104.9923076 39.7766218
-12379 552 3283 0.201374804580202 0.201374804580202 -104.9693115 39.7002336 -104.9691419 39.7020399
-12380 3283 439 0.0140574737901418 0.0140574737901418 -104.9691419 39.7020399 -104.9691656 39.702165
-12381 439 440 0.131394781189403 0.131394781189403 -104.9691656 39.702165 -104.969326 39.7033402
-12383 8680 592 0.0279554969032489 0.0279554969032489 -104.9691913 39.7036476 -104.9690283 39.7038655
-12386 3930 5620 0.102308093785748 0.102308093785748 -105.0005956 39.7668504 -105.0017926 39.7668511
-12387 5620 3705 0.100376481944534 0.100376481944534 -105.0017926 39.7668511 -105.002967 39.766852
-12388 3705 710 0.100626287480694 0.100626287480694 -105.002967 39.766852 -105.0041443 39.7668577
-12389 710 8681 0.0994362797990831 0.0994362797990831 -105.0041443 39.7668577 -105.0053077 39.766857
-12390 8681 8515 0.0993120225558452 0.0993120225558452 -105.0053077 39.766857 -105.0064696 39.766865
-12391 8515 4191 0.136253535658325 0.136253535658325 -105.0064696 39.766865 -105.0080637 39.7668543
-12392 4191 2517 0.134250356653895 0.134250356653895 -105.0080637 39.7668543 -105.0096344 39.7668477
-12393 2517 6728 0.132309702657946 0.132309702657946 -105.0096344 39.7668477 -105.0111824 39.766842
-12394 6728 4805 0.136509007433592 0.136509007433592 -105.0111824 39.766842 -105.0127781 39.7668943
-12395 4805 8682 0.134957701338679 0.134957701338679 -105.0127781 39.7668943 -105.0143554 39.766838
-12397 8683 433 0.845576760689761 0.845576760689761 -104.9602564 39.6848648 -104.9692608 39.6879972
-12398 433 481 1.45081348243216 1.45081348243216 -104.9692608 39.6879972 -104.9818608 39.6967284
-12399 481 8684 0.52437215594792 0.52437215594792 -104.9818608 39.6967284 -104.9859386 39.700249
-12401 8685 8686 0.010167997865452 0.010167997865452 -104.9497565 39.7177651 -104.9497874 39.7178534
-12404 4154 4741 0.172602377991032 0.172602377991032 -104.9497951 39.7209768 -104.9498232 39.7225289
-12405 4741 6536 0.177057900654184 0.177057900654184 -104.9498232 39.7225289 -104.9497817 39.7241209
-12406 6536 8687 0.165392784618956 0.165392784618956 -104.9497817 39.7241209 -104.9497898 39.7256083
-12408 5170 6865 0.176928364472993 0.176928364472993 -104.9407951 39.7162379 -104.9407779 39.7146468
-12409 6865 3073 0.175467136201966 0.175467136201966 -104.9407779 39.7146468 -104.9407865 39.7130688
-12410 3073 8690 0.1637299437242 0.1637299437242 -104.9407865 39.7130688 -104.9408036 39.7115964
-12411 8690 8160 0.0198260554201283 0.0198260554201283 -104.9408036 39.7115964 -104.9408036 39.7114181
-12412 8160 8691 0.0330442022067904 0.0330442022067904 -104.9408036 39.7114181 -104.9408122 39.711121
-12414 8692 8693 0.174036627821078 0.174036627821078 -104.9406148 39.716237 -104.9405987 39.7178021
-12415 8693 8694 0.176955606262412 0.176955606262412 -104.9405987 39.7178021 -104.9405987 39.7193935
-12416 8694 8695 0.169605643175659 0.169605643175659 -104.9405987 39.7193935 -104.9405977 39.7209188
-12417 8695 4774 0.249824848381595 0.249824848381595 -104.9405977 39.7209188 -104.9406125 39.7231655
-12418 4774 6552 0.130776357701309 0.130776357701309 -104.9406125 39.7231655 -104.9406129 39.7243416
-12419 6552 8696 0.13038749521243 0.13038749521243 -104.9406129 39.7243416 -104.9406095 39.7255142
-12420 8696 8566 0.0104649837792038 0.0104649837792038 -104.9406095 39.7255142 -104.9406116 39.7256083
-12421 8566 8697 0.196337242565984 0.196337242565984 -104.9406116 39.7256083 -104.9406072 39.727374
-13908 6946 8137 0.20217075396909 0.20217075396909 -104.9602903 39.7819343 -104.9602584 39.7837523
-12422 8697 3765 0.201163077899324 0.201163077899324 -104.9406072 39.727374 -104.9406029 39.7291831
-12423 3765 5944 0.202700667134599 0.202700667134599 -104.9406029 39.7291831 -104.9405891 39.731006
-12424 5944 2231 0.203264325905827 0.203264325905827 -104.9405891 39.731006 -104.9405891 39.732834
-12425 2231 4900 0.203310133896795 0.203310133896795 -104.9405891 39.732834 -104.9405805 39.7346624
-12426 4900 8699 0.223846600901437 0.223846600901437 -104.9405805 39.7346624 -104.9405829 39.7366755
-12427 8699 8700 0.179880034662439 0.179880034662439 -104.9405829 39.7366755 -104.9405826 39.7382932
-12428 8700 8701 0.204289810782798 0.204289810782798 -104.9405826 39.7382932 -104.9405708 39.7401304
-12429 8701 643 0.139830079927305 0.139830079927305 -104.9405708 39.7401304 -104.9405805 39.7413879
-12430 643 7272 0.132835494541237 0.132835494541237 -104.9405805 39.7413879 -104.9405891 39.7425825
-12431 7272 1993 0.110816863894031 0.110816863894031 -104.9405891 39.7425825 -104.9405891 39.7435791
-12432 1993 1977 0.01986880052865 0.01986880052865 -104.9405891 39.7435791 -104.9406062 39.7437573
-12433 1977 4590 0.131129399902762 0.131129399902762 -104.9406062 39.7437573 -104.9406235 39.7449365
-12434 4590 6477 0.129388315999052 0.129388315999052 -104.9406235 39.7449365 -104.9406153 39.7461001
-12435 6477 2460 0.143087746743813 0.143087746743813 -104.9406153 39.7461001 -104.9406062 39.7473869
-12436 2460 5904 0.206205054401277 0.206205054401277 -104.9406062 39.7473869 -104.9405891 39.7492413
-12437 5904 8702 0.200106396563715 0.200106396563715 -104.9405891 39.7492413 -104.9405885 39.7510409
-12438 8702 789 0.199795050779324 0.199795050779324 -104.9405885 39.7510409 -104.9405891 39.7528377
-12439 789 3581 0.193812626433148 0.193812626433148 -104.9405891 39.7528377 -104.9405163 39.7545798
-12440 3581 4353 0.211337121932246 0.211337121932246 -104.9405163 39.7545798 -104.9404804 39.7564802
-12441 4353 8703 0.201766897339093 0.201766897339093 -104.9404804 39.7564802 -104.9404947 39.7582947
-12442 8703 3056 0.204698740459713 0.204698740459713 -104.9404947 39.7582947 -104.9404947 39.7601356
-12443 3056 8704 0.1838941823989 0.1838941823989 -104.9404947 39.7601356 -104.9404955 39.7617894
-12446 902 8706 0.131578356152921 0.131578356152921 -104.9404687 39.7644571 -104.9404758 39.7656404
-12447 8706 2807 0.139128342169529 0.139128342169529 -104.9404758 39.7656404 -104.9404689 39.7668916
-12448 2807 5273 0.132055095159837 0.132055095159837 -104.9404689 39.7668916 -104.9404688 39.7680792
-12449 5273 6913 0.122503450982406 0.122503450982406 -104.9404688 39.7680792 -104.9404689 39.7691809
-12450 6913 6362 0.41302368771275 0.41302368771275 -104.9404689 39.7691809 -104.940457 39.7728953
-12452 3076 3191 0.200008210348418 0.200008210348418 -104.9851226 39.7129392 -104.9851665 39.7111408
-12454 6107 1897 0.202849718138185 0.202849718138185 -104.9851845 39.7093159 -104.985217 39.7074918
-12455 1897 7235 0.199081659570441 0.199081659570441 -104.985217 39.7074918 -104.9851255 39.7057028
-12456 7235 3245 0.204781971579143 0.204781971579143 -104.9851255 39.7057028 -104.9850951 39.7038613
-12457 3245 8707 0.0557878826660101 0.0557878826660101 -104.9850951 39.7038613 -104.9850997 39.7033596
-12458 8707 7285 0.154953879613548 0.154953879613548 -104.9850997 39.7033596 -104.9851123 39.7019661
-12459 7285 28 0.190200511167853 0.190200511167853 -104.9851123 39.7019661 -104.9850866 39.7002557
-12461 7212 8708 0.0837159569795295 0.0837159569795295 -104.9784122 39.6929827 -104.9774338 39.692988
-12463 8708 6525 0.0119790128871836 0.0119790128871836 -104.9774338 39.692988 -104.9772938 39.6929888
-12464 6525 1779 0.0293911622529401 0.0293911622529401 -104.9772938 39.6929888 -104.9769504 39.6929822
-12465 1779 4372 0.0502766443311638 0.0502766443311638 -104.9769504 39.6929822 -104.9763628 39.692984
-12466 4372 8710 0.0490277911002061 0.0490277911002061 -104.9763628 39.692984 -104.97579 39.6929721
-12467 8710 4684 0.0539189737855212 0.0539189737855212 -104.97579 39.6929721 -104.9751601 39.6929864
-12468 4684 1527 0.0474102490920647 0.0474102490920647 -104.9751601 39.6929864 -104.974606 39.692988
-12469 1527 5107 0.0489757310519715 0.0489757310519715 -104.974606 39.692988 -104.9740336 39.6929885
-19288 10468 10469 0.0662296445612727 0.0662296445612727 -104.9873734 39.7392289 -104.9881479 39.7392371
-12470 5107 8711 0.0509607682871969 0.0509607682871969 -104.9740336 39.6929885 -104.973438 39.692989
-12471 8711 5064 0.0518326919728752 0.0518326919728752 -104.973438 39.692989 -104.9728324 39.6929773
-12472 5064 1746 0.0537415293364607 0.0537415293364607 -104.9728324 39.6929773 -104.9722045 39.6929651
-12473 1746 5607 0.04913949394522 0.04913949394522 -104.9722045 39.6929651 -104.9716302 39.692962
-12474 5607 6637 0.0470345659561698 0.0470345659561698 -104.9716302 39.692962 -104.9710805 39.6929591
-12475 6637 5450 0.0502526613335692 0.0502526613335692 -104.9710805 39.6929591 -104.9704932 39.6929632
-12477 5427 5408 0.0488836182047643 0.0488836182047643 -104.9699057 39.6929673 -104.9693344 39.6929713
-12478 5408 7399 0.051895578159039 0.051895578159039 -104.9693344 39.6929713 -104.9687279 39.6929756
-12479 7399 8712 0.1038123024378 0.1038123024378 -104.9687279 39.6929756 -104.9675147 39.6929637
-12481 8713 8714 0.0490473159959526 0.0490473159959526 -104.966356 39.6929637 -104.9657828 39.6929687
-12482 8714 7277 0.0483828604327117 0.0483828604327117 -104.9657828 39.6929687 -104.9652174 39.6929756
-12483 7277 3483 0.0998765627131917 0.0998765627131917 -104.9652174 39.6929756 -104.9640501 39.6929756
-12484 3483 8715 0.048840271287456 0.048840271287456 -104.9640501 39.6929756 -104.9634793 39.692979
-12485 8715 6079 0.0473684752554207 0.0473684752554207 -104.9634793 39.692979 -104.9629257 39.6929822
-12486 6079 8716 0.055154161978582 0.055154161978582 -104.9629257 39.6929822 -104.9622811 39.6929794
-12487 8716 3697 0.0479069878085689 0.0479069878085689 -104.9622811 39.6929794 -104.9617212 39.6929769
-12488 3697 5685 0.0473941467783467 0.0473941467783467 -104.9617212 39.6929769 -104.9611673 39.6929737
-12489 5685 4571 0.0495504189878239 0.0495504189878239 -104.9611673 39.6929737 -104.9605882 39.6929703
-12490 4571 8717 0.0532110753130406 0.0532110753130406 -104.9605882 39.6929703 -104.9599663 39.6929697
-12495 8720 6626 0.0151124856958777 0.0151124856958777 -104.979262 39.6936183 -104.9792691 39.6934825
-12496 6626 7211 0.0534737559078532 0.0534737559078532 -104.9792691 39.6934825 -104.9792704 39.6930016
-12497 7211 5824 0.205145340397742 0.205145340397742 -104.9792704 39.6930016 -104.9792603 39.6911567
-12498 5824 7729 0.196126806182622 0.196126806182622 -104.9792603 39.6911567 -104.9792523 39.6893929
-12499 7729 8721 1.41081273670029 1.41081273670029 -104.9792523 39.6893929 -104.9792956 39.6767052
-12500 8722 6630 0.00966193494482075 0.00966193494482075 -104.976967 39.6915646 -104.9769745 39.6914779
-12501 6630 5826 0.0378008975972725 0.0378008975972725 -104.9769745 39.6914779 -104.9769668 39.691138
-12502 5826 7731 0.193712690967488 0.193712690967488 -104.9769668 39.691138 -104.9769661 39.6893959
-12503 7731 8723 1.80961969384046 1.80961969384046 -104.9769661 39.6893959 -104.9769591 39.6731216
-12504 1781 8722 0.107247989428491 0.107247989428491 -104.9769412 39.6925289 -104.976967 39.6915646
-12506 7401 6529 0.108235119976502 0.108235119976502 -104.9687279 39.6879032 -104.9687115 39.6869299
-12508 4596 8724 0.16807497837827 0.16807497837827 -104.9598011 39.7447758 -104.9597878 39.7432643
-12509 8724 8725 0.178846116420602 0.178846116420602 -104.9597878 39.7432643 -104.9597847 39.7416559
-12510 8725 678 0.00426139259412424 0.00426139259412424 -104.9597847 39.7416559 -104.9597887 39.7416177
-12511 678 8726 0.00479379013962442 0.00479379013962442 -104.9597887 39.7416177 -104.9597874 39.7415746
-12512 8726 8727 0.179790579190484 0.179790579190484 -104.9597874 39.7415746 -104.9597547 39.7399579
-12513 8727 5480 0.174201148052584 0.174201148052584 -104.9597547 39.7399579 -104.9597808 39.7383914
-12514 5480 8728 0.175423920421782 0.175423920421782 -104.9597808 39.7383914 -104.9597692 39.7368138
-12515 8728 4882 0.196140148835561 0.196140148835561 -104.9597692 39.7368138 -104.9598063 39.7350501
-12516 4882 2250 0.176600887954475 0.176600887954475 -104.9598063 39.7350501 -104.959782 39.733462
-12517 2250 5916 0.3321793201224 0.3321793201224 -104.959782 39.733462 -104.960135 39.730487
-12519 3788 8729 0.199339438501115 0.199339438501115 -104.9601881 39.7291071 -104.9601841 39.7273144
-12521 1189 8730 0.167786544262905 0.167786544262905 -104.9601763 39.7271213 -104.9601619 39.7256124
-12522 8730 7154 0.107569635985836 0.107569635985836 -104.9601619 39.7256124 -104.9594545 39.7248125
-12524 8731 8732 0.130443287352145 0.130443287352145 -104.9734316 39.6904059 -104.9734273 39.6892328
-12526 8732 6531 0.0215721025681021 0.0215721025681021 -104.9734273 39.6892328 -104.9734286 39.6890388
-12527 6531 8733 0.0174468386055745 0.0174468386055745 -104.9734286 39.6890388 -104.9734273 39.6888819
-12551 8748 6518 0.0472889047630053 0.0472889047630053 -104.9586768 39.6947734 -104.9581241 39.6947734
-12552 6518 8749 0.0506856290604236 0.0506856290604236 -104.9581241 39.6947734 -104.9575317 39.6947734
-12548 4570 8746 0.0496686599585209 0.0496686599585209 -104.960571 39.6947799 -104.9599905 39.6947768
-12549 8746 8747 0.0568130428191116 0.0568130428191116 -104.9599905 39.6947768 -104.9593265 39.6947733
-12528 8733 8734 4.18362578562758 4.18362578562758 -104.9734273 39.6888819 -104.9735656 39.6512578
-12529 6533 8735 0.0310320915845362 0.0310320915845362 -104.9743231 39.6893856 -104.9740308 39.6892204
-12530 8735 8733 0.0639013406897381 0.0639013406897381 -104.9740308 39.6892204 -104.9734273 39.6888819
-12531 8733 8736 0.0575832242503326 0.0575832242503326 -104.9734273 39.6888819 -104.9728386 39.688631
-12532 8736 1744 0.0585281295770588 0.0585281295770588 -104.9728386 39.688631 -104.9722383 39.6883787
-12533 1744 8737 0.0551795735412136 0.0551795735412136 -104.9722383 39.6883787 -104.9716711 39.6881426
-12534 8737 6634 0.0667321861738512 0.0667321861738512 -104.9716711 39.6881426 -104.9709852 39.687857
-12535 6634 8738 1.14684827666039 1.14684827666039 -104.9709852 39.687857 -104.9593753 39.6827044
-12536 8739 8740 0.050189520794265 0.050189520794265 -104.968695 39.6947883 -104.9681084 39.6947872
-12537 8740 8741 0.0520205890853532 0.0520205890853532 -104.9681084 39.6947872 -104.9675005 39.6947786
-12538 8741 8742 0.0975475062746334 0.0975475062746334 -104.9675005 39.6947786 -104.9663604 39.6947751
-12539 8742 8743 0.0478496643069703 0.0478496643069703 -104.9663604 39.6947751 -104.9658013 39.6947852
-12540 8743 7276 0.0507419704012955 0.0507419704012955 -104.9658013 39.6947852 -104.9652088 39.6947654
-12541 7276 3482 0.0993982386954757 0.0993982386954757 -104.9652088 39.6947654 -104.9640471 39.6947728
-12542 3482 8744 0.05053480573854 0.05053480573854 -104.9640471 39.6947728 -104.9634565 39.6947677
-12543 8744 6078 0.0468212480872111 0.0468212480872111 -104.9634565 39.6947677 -104.9629093 39.694763
-12544 6078 8745 0.052325451958986 0.052325451958986 -104.9629093 39.694763 -104.9622978 39.6947699
-12545 8745 3696 0.0475592999209775 0.0475592999209775 -104.9622978 39.6947699 -104.961742 39.6947762
-12546 3696 5684 0.0505577280347845 0.0505577280347845 -104.961742 39.6947762 -104.9611511 39.6947781
-12547 5684 4570 0.0496336429817659 0.0496336429817659 -104.9611511 39.6947781 -104.960571 39.6947799
-12550 8747 8748 0.0555882070947718 0.0555882070947718 -104.9593265 39.6947733 -104.9586768 39.6947734
-12553 8749 6161 0.0483586179330098 0.0483586179330098 -104.9575317 39.6947734 -104.9569665 39.6947747
-12554 6161 8750 0.0494030122591725 0.0494030122591725 -104.9569665 39.6947747 -104.9563891 39.6947772
-12555 8750 2739 0.0483430371417139 0.0483430371417139 -104.9563891 39.6947772 -104.9558241 39.6947809
-12556 2739 8751 0.0499840332207257 0.0499840332207257 -104.9558241 39.6947809 -104.9552399 39.6947809
-12557 8751 5230 0.0498899174438866 0.0498899174438866 -104.9552399 39.6947809 -104.9546568 39.6947809
-12558 5230 8752 0.0487864097624457 0.0487864097624457 -104.9546568 39.6947809 -104.9540866 39.6947822
-12559 8752 3172 0.0492052393668883 0.0492052393668883 -104.9540866 39.6947822 -104.9535117 39.6947706
-12560 3172 8753 0.048649307652154 0.048649307652154 -104.9535117 39.6947706 -104.9529431 39.6947706
-12561 8753 4997 0.0504970791491002 0.0504970791491002 -104.9529431 39.6947706 -104.952353 39.6947624
-12562 4997 729 0.0994774482962559 0.0994774482962559 -104.952353 39.6947624 -104.9511904 39.6947719
-12564 7060 7316 0.100261995636978 0.100261995636978 -104.9500436 39.6947813 -104.9488718 39.6947743
-12565 7316 4587 0.101339695102535 0.101339695102535 -104.9488718 39.6947743 -104.9476874 39.6947677
-12566 4587 8033 0.0978749879893347 0.0978749879893347 -104.9476874 39.6947677 -104.9465436 39.6947813
-12567 8033 6373 0.096169791555938 0.096169791555938 -104.9465436 39.6947813 -104.9454196 39.6947783
-12568 6373 8754 0.0556932821262755 0.0556932821262755 -104.9454196 39.6947783 -104.944769 39.6947624
-12569 8754 4827 0.0506856253200211 0.0506856253200211 -104.944769 39.6947624 -104.9441769 39.6947479
-12570 4827 8755 0.0976778629222165 0.0976778629222165 -104.9441769 39.6947479 -104.9430353 39.6947545
-12572 8756 8757 0.0483546146560771 0.0483546146560771 -104.9418766 39.6947611 -104.9413115 39.694755
-12573 8757 8758 0.00678547758181753 0.00678547758181753 -104.9413115 39.694755 -104.9412322 39.6947542
-12574 8758 8759 0.0425788070077018 0.0425788070077018 -104.9412322 39.6947542 -104.9407346 39.6947488
-12577 2375 8761 0.0800348658330501 0.0800348658330501 -104.9535019 39.7105138 -104.9525663 39.7105072
-12579 8761 2381 0.0565526295759939 0.0565526295759939 -104.9525663 39.7105072 -104.9519054 39.7105204
-12580 2381 2378 0.0732152007668199 0.0732152007668199 -104.9519054 39.7105204 -104.9510557 39.7104412
-12581 2378 2379 0.0407086995566738 0.0407086995566738 -104.9510557 39.7104412 -104.9506866 39.7102101
-12582 2379 2383 0.00264328007897714 0.00264328007897714 -104.9506866 39.7102101 -104.9506695 39.7101903
-12583 2383 2571 0.0689488793496812 0.0689488793496812 -104.9506695 39.7101903 -104.9505579 39.7095762
-12585 8761 2375 0.0800348658330501 0.0800348658330501 -104.9525663 39.7105072 -104.9535019 39.7105138
-12587 1510 7932 0.0417550445525859 0.0417550445525859 -104.9532101 39.7050201 -104.9536135 39.7048087
-12589 8764 4921 0.0107315298188712 0.0107315298188712 -104.9907602 39.7299304 -104.9906535 39.7299812
-12590 4921 8062 0.0635329705608418 0.0635329705608418 -104.9906535 39.7299812 -104.9902595 39.7304656
-12591 8062 6584 0.176700679215808 0.176700679215808 -104.9902595 39.7304656 -104.9902658 39.7320547
-12592 6584 5366 0.199428899537142 0.199428899537142 -104.9902658 39.7320547 -104.9902592 39.7338482
-12593 5366 7124 0.156701102941306 0.156701102941306 -104.9902592 39.7338482 -104.9902249 39.7352572
-12594 7124 612 0.178308153840751 0.178308153840751 -104.9902249 39.7352572 -104.9902547 39.7368606
-12595 612 1943 0.177718886558766 0.177718886558766 -104.9902547 39.7368606 -104.9902169 39.7384586
-12596 1943 8765 0.0553792982616949 0.0553792982616949 -104.9902169 39.7384586 -104.9902249 39.7389566
-12597 8765 8767 0.0568805264393287 0.0568805264393287 -104.9902249 39.7389566 -104.9902331 39.7394681
-12625 8778 8779 0.0386703080825578 0.0386703080825578 -104.9874654 39.72522 -104.9874745 39.7248723
-12598 8767 8768 0.0596299154046411 0.0596299154046411 -104.9902331 39.7394681 -104.9903111 39.740001
-12600 8217 8764 0.0348766827140038 0.0348766827140038 -104.9911152 39.729776 -104.9907602 39.7299304
-12602 8769 7960 0.0121246465842421 0.0121246465842421 -104.9904615 39.7289525 -104.9906006 39.7289314
-12636 8782 8776 0.0415201856091735 0.0415201856091735 -104.9874245 39.7271431 -104.9874245 39.7267697
-12603 7960 7858 0.191569398536593 0.191569398536593 -104.9906006 39.7289314 -104.9928407 39.7289388
-12604 7858 384 0.0511824976047815 0.0511824976047815 -104.9928407 39.7289388 -104.9934388 39.7289219
-12606 4685 296 0.0500706281631231 0.0500706281631231 -104.9940378 39.7289164 -104.9946233 39.7289153
-12607 296 4955 0.0491810974692235 0.0491810974692235 -104.9946233 39.7289153 -104.9951984 39.7289153
-12608 4955 7223 0.104958162725722 0.104958162725722 -104.9951984 39.7289153 -104.9964257 39.7289087
-12611 8773 8774 0.043865298365945 0.043865298365945 -104.9975826 39.7288966 -104.9980954 39.7289058
-12612 8774 6643 0.0451313849693394 0.0451313849693394 -104.9980954 39.7289058 -104.998623 39.7289153
-12613 6643 8218 0.0697309457073312 0.0697309457073312 -104.998623 39.7289153 -104.9994384 39.7289153
-12614 8218 3952 0.0651671851260823 0.0651671851260823 -104.9994384 39.7289153 -105.0002004 39.7289098
-12616 1623 8769 0.0363096662742893 0.0363096662742893 -104.990046 39.7290197 -104.9904615 39.7289525
-12618 5097 8775 0.0318529970242771 0.0318529970242771 -104.9898761 39.7283677 -104.9895915 39.7285525
-12622 8776 8777 0.018725243223035 0.018725243223035 -104.9874245 39.7267697 -104.9874242 39.7266013
-12623 8777 6243 0.106972614023441 0.106972614023441 -104.9874242 39.7266013 -104.9874615 39.7256397
-12624 6243 8778 0.0466697025677041 0.0466697025677041 -104.9874615 39.7256397 -104.9874654 39.72522
-12626 8779 5192 0.0833353912042221 0.0833353912042221 -104.9874745 39.7248723 -104.9874942 39.724123
-12627 5192 8780 0.0302234211776424 0.0302234211776424 -104.9874942 39.724123 -104.9874919 39.7238512
-12628 8780 8781 0.0269541929474085 0.0269541929474085 -104.9874919 39.7238512 -104.9874899 39.7236088
-12629 8781 2610 0.119870657472311 0.119870657472311 -104.9874899 39.7236088 -104.9874808 39.7225308
-12630 2610 1838 0.176410752987704 0.176410752987704 -104.9874808 39.7225308 -104.9874805 39.7209443
-12631 1838 2360 0.17767880886817 0.17767880886817 -104.9874805 39.7209443 -104.9874759 39.7193464
-12633 3710 4430 0.0984187629622127 0.0984187629622127 -104.9874523 39.7183509 -104.9874697 39.7174659
-12634 4430 5171 0.100485171973402 0.100485171973402 -104.9874697 39.7174659 -104.9874858 39.7165623
-12638 968 8783 0.0450647850917565 0.0450647850917565 -104.9837585 39.7235715 -104.983647 39.7239676
-12640 8783 6332 0.0179790401179982 0.0179790401179982 -104.983647 39.7239676 -104.9836195 39.7241279
-12641 6332 8784 0.166916939377104 0.166916939377104 -104.9836195 39.7241279 -104.9836094 39.725629
-12642 8784 8785 0.0824631793427953 0.0824631793427953 -104.9836094 39.725629 -104.9836046 39.7263706
-12643 8785 8786 0.100743867095121 0.100743867095121 -104.9836046 39.7263706 -104.9835987 39.7272766
-12644 8786 3809 0.198861011407653 0.198861011407653 -104.9835987 39.7272766 -104.9835982 39.729065
-12645 3809 5921 0.152448419282946 0.152448419282946 -104.9835982 39.729065 -104.9835955 39.730436
-12647 920 2206 0.198794444530698 0.198794444530698 -104.9835814 39.7320454 -104.9835843 39.7338332
-12648 2206 4855 0.161210664735901 0.161210664735901 -104.9835843 39.7338332 -104.9836067 39.7352829
-12649 4855 8787 0.176180330331867 0.176180330331867 -104.9836067 39.7352829 -104.9835945 39.7368673
-12650 8787 5459 0.173977209442215 0.173977209442215 -104.9835945 39.7368673 -104.9835857 39.7384319
-12651 5459 8788 0.179581076943561 0.179581076943561 -104.9835857 39.7384319 -104.9835778 39.7400469
-12652 8788 653 0.182661218967331 0.182661218967331 -104.9835778 39.7400469 -104.9835697 39.7416896
-12653 653 8789 0.175533060842227 0.175533060842227 -104.9835697 39.7416896 -104.9835757 39.7432682
-12654 8789 4615 0.178562453757686 0.178562453757686 -104.9835757 39.7432682 -104.9835591 39.744874
-12655 4615 6485 0.147124798702961 0.147124798702961 -104.9835591 39.744874 -104.9835697 39.7461971
-12656 6485 3681 0.150536039008347 0.150536039008347 -104.9835697 39.7461971 -104.9836002 39.7475507
-12658 5282 8790 0.0413354062568629 0.0413354062568629 -104.9825741 39.7226935 -104.9824367 39.7230499
-12660 8790 6331 0.0121138578035044 0.0121138578035044 -104.9824367 39.7230499 -104.9824024 39.7231556
-12662 6548 8791 0.16625102712937 0.16625102712937 -104.9823535 39.7241259 -104.9823661 39.725621
-12663 8791 8792 0.184061439099574 0.184061439099574 -104.9823661 39.725621 -104.9823612 39.7272763
-12664 8792 3808 0.198594245045878 0.198594245045878 -104.9823612 39.7272763 -104.9823636 39.7290623
-12665 3808 5923 0.153339826215406 0.153339826215406 -104.9823636 39.7290623 -104.9822823 39.7304399
-12666 5923 922 0.17696116360303 0.17696116360303 -104.9822823 39.7304399 -104.9822659 39.7320313
-12667 922 2208 0.186196659484346 0.186196659484346 -104.9822659 39.7320313 -104.9822597 39.7337058
-12668 2208 4857 0.160795645903838 0.160795645903838 -104.9822597 39.7337058 -104.9822782 39.7351518
-12669 4857 8793 0.191420788288479 0.191420788288479 -104.9822782 39.7351518 -104.9823009 39.7368732
-12671 5460 8794 0.176401987583553 0.176401987583553 -104.9823009 39.7384375 -104.9823264 39.7400238
-12672 8794 8795 0.177191749793072 0.177191749793072 -104.9823264 39.7400238 -104.9823377 39.7416173
-12673 8795 654 0.00549383449703672 0.00549383449703672 -104.9823377 39.7416173 -104.9823388 39.7416667
-12674 654 8796 0.178534682523657 0.178534682523657 -104.9823388 39.7416667 -104.9823365 39.7432723
-12675 8796 4614 0.177531607780329 0.177531607780329 -104.9823365 39.7432723 -104.9823157 39.7448688
-12676 4614 6486 0.147678461213278 0.147678461213278 -104.9823157 39.7448688 -104.9823113 39.7461969
-12677 6486 3679 0.150313310591357 0.150313310591357 -104.9823113 39.7461969 -104.9823107 39.7475487
-12681 8798 8799 0.123466110327723 0.123466110327723 -104.9457531 39.7104012 -104.9464054 39.7113917
-12682 8799 3186 0.00950854696516887 0.00950854696516887 -104.9464054 39.7113917 -104.9464561 39.7114678
-12683 3186 8800 0.0308360436433676 0.0308360436433676 -104.9464561 39.7114678 -104.9467659 39.7116096
-12685 8801 8802 0.231947805663281 0.231947805663281 -104.9590492 39.7160869 -104.9590692 39.7181728
-12686 8802 8803 0.0199646364044365 0.0199646364044365 -104.9590692 39.7181728 -104.9590745 39.7183523
-12687 8803 5017 0.0091876036672495 0.0091876036672495 -104.9590745 39.7183523 -104.9590772 39.7184349
-12692 7064 8808 0.0247148912105672 0.0247148912105672 -104.95025 39.7175567 -104.9500032 39.7176723
-12693 8808 8685 0.0234885972598816 0.0234885972598816 -104.9500032 39.7176723 -104.9497565 39.7177651
-20809 8326 10950 0.0125120772932362 0.0125120772932362 -105.029018 39.7621132 -105.0289678 39.7620075
-16680 9982 9983 0.0455494891280306 0.0455494891280306 -105.00793 39.7419174 -105.0074579 39.7421072
-15872 7130 8879 0.124695897236049 0.124695897236049 -105.0370687 39.7347704 -105.0382757 39.7341411
-12694 8685 8023 0.100302779247875 0.100302779247875 -104.9497565 39.7177651 -104.9485858 39.7178178
-12696 8809 8685 0.057365793634115 0.057365793634115 -104.9497699 39.7172493 -104.9497565 39.7177651
-12699 8810 4109 0.100464246278784 0.100464246278784 -104.9500622 39.7177177 -104.9511309 39.7180926
-12700 4109 2643 0.0901887127804005 0.0901887127804005 -104.9511309 39.7180926 -104.9521735 39.7182139
-12702 8805 7976 0.102773783270916 0.102773783270916 -104.9534009 39.718219 -104.9546025 39.7182181
-12703 7976 7318 0.104083044705694 0.104083044705694 -104.9546025 39.7182181 -104.9558194 39.7182147
-12704 7318 8803 0.278830952538266 0.278830952538266 -104.9558194 39.7182147 -104.9590745 39.7183523
-12706 8811 8812 0.108086464170563 0.108086464170563 -104.9494453 39.7136057 -104.9497656 39.714546
-12707 8812 6861 0.0114665228848291 0.0114665228848291 -104.9497656 39.714546 -104.9497683 39.7146491
-12709 5165 8809 0.109306863073043 0.109306863073043 -104.9497617 39.7162663 -104.9497699 39.7172493
-12710 8809 8808 0.0510932247106912 0.0510932247106912 -104.9497699 39.7172493 -104.9500032 39.7176723
-12712 8798 6379 0.100799788599422 0.100799788599422 -104.9457531 39.7104012 -104.9449548 39.7097344
-12713 6379 6099 0.0584802680423258 0.0584802680423258 -104.9449548 39.7097344 -104.9444906 39.7093483
-12714 6099 8202 0.382882462386682 0.382882462386682 -104.9444906 39.7093483 -104.9408446 39.707351
-12716 8813 8173 0.0533183303572635 0.0533183303572635 -104.9406573 39.7061997 -104.940655 39.7066792
-12718 8814 8815 0.0594781662619651 0.0594781662619651 -104.940835 39.70673 -104.940835 39.7061951
-12720 8815 3633 0.0139674412080793 0.0139674412080793 -104.940835 39.7061951 -104.9408419 39.7060696
-14286 6672 3115 0.0991095918198707 0.0991095918198707 -104.9362682 39.7146512 -104.9351095 39.7146512
-15288 8812 7065 0.0171061341992079 0.0171061341992079 -104.9497656 39.714546 -104.9499634 39.7145233
-12722 3295 8191 0.195769878320479 0.195769878320479 -104.9407838 39.7038199 -104.940786 39.7020593
-12723 8191 103 0.207801078913796 0.207801078913796 -104.940786 39.7020593 -104.940786 39.7001905
-12724 103 3505 0.201240848446412 0.201240848446412 -104.940786 39.7001905 -104.940829 39.698381
-12725 3505 8816 0.20140010471513 0.20140010471513 -104.940829 39.698381 -104.940726 39.6965715
-12726 8816 8817 0.0467910785706761 0.0467910785706761 -104.940726 39.6965715 -104.9407242 39.6961507
-12727 8817 8759 0.155886707244551 0.155886707244551 -104.9407242 39.6961507 -104.9407346 39.6947488
-12728 8759 8818 0.0209382564173288 0.0209382564173288 -104.9407346 39.6947488 -104.9407334 39.6945605
-12729 8818 8819 0.0390294530141924 0.0390294530141924 -104.9407334 39.6945605 -104.940734 39.6942095
-12730 8819 8820 0.0609459777309488 0.0609459777309488 -104.940734 39.6942095 -104.9407348 39.6936614
-12732 7196 5844 0.199996639851393 0.199996639851393 -104.940735 39.692928 -104.9407088 39.6911295
-12733 5844 7747 0.201963345264684 0.201963345264684 -104.9407088 39.6911295 -104.9407088 39.6893132
-12734 7747 8821 0.660668042362938 0.660668042362938 -104.9407088 39.6893132 -104.9406408 39.6833719
-12737 6675 8823 0.018377691001392 0.018377691001392 -104.9362112 39.6893266 -104.9359966 39.6893199
-12738 8823 3121 0.0817086617793047 0.0817086617793047 -104.9359966 39.6893199 -104.9350417 39.6893238
-12739 3121 3122 0.0189462201356829 0.0189462201356829 -104.9350417 39.6893238 -104.9348207 39.6893133
-12740 3122 6294 0.0736313115214917 0.0736313115214917 -104.9348207 39.6893133 -104.9339602 39.6893172
-12741 6294 6295 0.0205616464638412 0.0205616464638412 -104.9339602 39.6893172 -104.9337199 39.6893172
-12742 6295 6620 0.098958190214706 0.098958190214706 -104.9337199 39.6893172 -104.9325634 39.6893199
-14308 9323 2191 0.217246414275379 0.217246414275379 -104.9918391 39.7579642 -104.9936227 39.759356
-12743 6620 7343 0.0741923893812443 0.0741923893812443 -104.9325634 39.6893199 -104.9316965 39.6893332
-12744 7343 2845 0.101548527960204 0.101548527960204 -104.9316965 39.6893332 -104.9305098 39.6893437
-12745 2845 3494 0.101534987318255 0.101534987318255 -104.9305098 39.6893437 -104.9293234 39.6893613
-12746 3494 5350 0.0785982086314387 0.0785982086314387 -104.9293234 39.6893613 -104.928405 39.689348
-12748 4220 2948 0.0852112039835386 0.0852112039835386 -104.9274781 39.6893679 -104.9264824 39.6893811
-12749 2948 2949 0.056569943078372 0.056569943078372 -104.9264824 39.6893811 -104.9258215 39.6893679
-12750 2949 6813 0.0330539311277449 0.0330539311277449 -104.9258215 39.6893679 -104.9254353 39.6893745
-12751 6813 6810 0.0675878090482117 0.0675878090482117 -104.9254353 39.6893745 -104.9246456 39.6893613
-12752 6810 1814 0.0227606927419569 0.0227606927419569 -104.9246456 39.6893613 -104.9243796 39.6893613
-12753 1814 8824 0.984700828985706 0.984700828985706 -104.9243796 39.6893613 -104.9128716 39.689347
-12754 8823 8825 0.40169861106651 0.40169861106651 -104.9359966 39.6893199 -104.936139 39.685709
-12779 3798 5937 0.1524274277381 0.1524274277381 -104.9729432 39.7290745 -104.9729509 39.7304453
-12755 8826 7748 0.668566967249301 0.668566967249301 -104.9403877 39.6833057 -104.9405349 39.6893172
-12756 7748 5845 0.201518653480334 0.201518653480334 -104.9405349 39.6893172 -104.9405371 39.6911295
-12757 5845 7197 0.200485803128442 0.200485803128442 -104.9405371 39.6911295 -104.9405457 39.6929325
-12758 7197 8827 0.180703533412633 0.180703533412633 -104.9405457 39.6929325 -104.94054 39.6945576
-12759 8827 8760 0.0207611083367854 0.0207611083367854 -104.94054 39.6945576 -104.9405376 39.6947443
-12760 8760 8828 0.203176551906279 0.203176551906279 -104.9405376 39.6947443 -104.9405457 39.6965715
-12761 8828 3506 0.200871002946695 0.200871002946695 -104.9405457 39.6965715 -104.9406406 39.6983765
-12763 8170 8192 0.20854015704238 0.20854015704238 -104.9405886 39.7001839 -104.9406058 39.7020593
-12764 8192 3296 0.195770030101267 0.195770030101267 -104.9406058 39.7020593 -104.9406022 39.7038199
-12765 3296 8183 0.100143064441761 0.100143064441761 -104.9406022 39.7038199 -104.9405972 39.7047205
-12766 8183 8188 0.148673984504934 0.148673984504934 -104.9405972 39.7047205 -104.9406663 39.7060565
-12767 8188 8813 0.0159417159428289 0.0159417159428289 -104.9406663 39.7060565 -104.9406573 39.7061997
-12769 2918 8829 0.0404869067666165 0.0404869067666165 -104.9732171 39.7182486 -104.9732505 39.7186118
-12771 8829 6328 0.00908621391699812 0.00908621391699812 -104.9732505 39.7186118 -104.9732624 39.718693
-12772 6328 8830 0.0795394987314785 0.0795394987314785 -104.9732624 39.718693 -104.9732562 39.7194083
-12774 4166 4751 0.202375182887314 0.202375182887314 -104.972908 39.7201406 -104.9729128 39.7219606
-12775 4751 6542 0.197696304569089 0.197696304569089 -104.9729128 39.7219606 -104.9729252 39.7237385
-12776 6542 8831 0.204678217467742 0.204678217467742 -104.9729252 39.7237385 -104.9729154 39.7255792
-12778 8832 3798 0.199708223967288 0.199708223967288 -104.9729324 39.7272785 -104.9729432 39.7290745
-12780 5937 938 0.177624298285183 0.177624298285183 -104.9729509 39.7304453 -104.9729595 39.7320427
-12781 938 2222 0.185255991502605 0.185255991502605 -104.9729595 39.7320427 -104.9729758 39.7337087
-12782 2222 4872 0.159853083829866 0.159853083829866 -104.9729758 39.7337087 -104.9729971 39.7351462
-12783 4872 8834 0.191323978817286 0.191323978817286 -104.9729971 39.7351462 -104.9730073 39.7368668
-12787 28 8836 0.0411233276076822 0.0411233276076822 -104.9850866 39.7002557 -104.9855672 39.7002491
-15407 8527 8524 0.00632598868026626 0.00632598868026626 -105.0054168 39.751192 -105.0053655 39.751233
-16685 9986 9987 0.0852803879953952 0.0852803879953952 -105.007297 39.7423918 -105.0064333 39.7427754
-12788 8830 4165 0.0810572303723974 0.0810572303723974 -104.9732562 39.7194083 -104.9733458 39.720134
-12790 4096 6041 0.191845009601904 0.191845009601904 -105.0181552 39.7838945 -105.0181598 39.7856198
-12791 6041 8837 0.201496335450174 0.201496335450174 -105.0181598 39.7856198 -105.0181605 39.7874319
-12792 8837 8838 0.406062586796109 0.406062586796109 -105.0181605 39.7874319 -105.0181502 39.7910837
-12793 4086 6031 0.181162285735164 0.181162285735164 -105.0112057 39.7838279 -105.0111925 39.7854571
-12794 6031 6032 0.0171385466290399 0.0171385466290399 -105.0111925 39.7854571 -105.0111965 39.7856112
-12795 6032 8839 0.201396970557967 0.201396970557967 -105.0111965 39.7856112 -105.0112028 39.7874224
-12796 8839 2539 0.0036249646793062 0.0036249646793062 -105.0112028 39.7874224 -105.0112029 39.787455
-12797 2539 7937 0.222367701142404 0.222367701142404 -105.0112029 39.787455 -105.0112006 39.7894548
-12798 7937 8840 0.179081080346528 0.179081080346528 -105.0112006 39.7894548 -105.0111916 39.7910653
-12799 8520 8841 0.0687184646666591 0.0687184646666591 -105.006397 39.7829043 -105.006397 39.7835223
-12801 8841 298 0.017862044588972 0.017862044588972 -105.006397 39.7835223 -105.0063925 39.7836829
-12802 298 4082 0.0176901086131869 0.0176901086131869 -105.0063925 39.7836829 -105.0063995 39.7838419
-12805 2560 6714 0.0892568890732451 0.0892568890732451 -105.0064215 39.7862585 -105.0064173 39.7870612
-12806 6714 6633 0.0879831056932755 0.0879831056932755 -105.0064173 39.7870612 -105.006429 39.7878524
-12807 6633 8844 0.0442062339102578 0.0442062339102578 -105.006429 39.7878524 -105.0064203 39.7882499
-12808 8844 7935 0.0446455487862746 0.0446455487862746 -105.0064203 39.7882499 -105.0064172 39.7886514
-12809 7935 8845 0.265612509858697 0.265612509858697 -105.0064172 39.7886514 -105.0064079 39.7910401
-12817 297 299 0.88607517832177 0.88607517832177 -104.999633 39.7829256 -105.0099714 39.7835424
-12823 493 589 0.268896577305787 0.268896577305787 -104.994193 39.7810897 -104.9917474 39.779568
-12824 589 8850 0.33804717039653 0.33804717039653 -104.9917474 39.779568 -104.9897894 39.7769264
-12826 8589 8851 0.042366080089372 0.042366080089372 -105.000578 39.7453477 -105.0002455 39.7456302
-12828 8851 4936 0.0170501490589131 0.0170501490589131 -105.0002455 39.7456302 -105.0001355 39.7457581
-12829 4936 8509 0.143621366769105 0.143621366769105 -105.0001355 39.7457581 -104.9989592 39.7466802
-12831 8852 8853 0.0917176896741063 0.0917176896741063 -104.9926518 39.7567579 -104.9919124 39.7561602
-12832 8853 7564 0.105551904949528 0.105551904949528 -104.9919124 39.7561602 -104.9910557 39.7554766
-12833 7564 6182 0.105801475446669 0.105801475446669 -104.9910557 39.7554766 -104.990176 39.7548073
-12834 6182 8854 0.10583574357693 0.10583574357693 -104.990176 39.7548073 -104.9893092 39.7541277
-12835 8854 8855 0.00547189672663909 0.00547189672663909 -104.9893092 39.7541277 -104.9892657 39.7540916
-18650 1854 2593 0.177389867684494 0.177389867684494 -105.0379177 39.7213314 -105.0379231 39.7229267
-12837 8856 8857 0.0555847646631402 0.0555847646631402 -104.988892 39.7538026 -104.9884337 39.753448
-12838 8857 8858 0.0519115005666898 0.0519115005666898 -104.9884337 39.753448 -104.988003 39.7531189
-12839 8858 8636 0.0515833043565609 0.0515833043565609 -104.988003 39.7531189 -104.987575 39.7527919
-12840 8636 8859 0.0207966249820583 0.0207966249820583 -104.987575 39.7527919 -104.9873914 39.7526692
-12844 8860 1198 0.169110109980516 0.169110109980516 -104.9520697 39.7256077 -104.9520847 39.7271285
-12845 1198 8861 0.0226617213022113 0.0226617213022113 -104.9520847 39.7271285 -104.9520836 39.7273323
-12847 8862 1200 0.170240075619945 0.170240075619945 -104.9509005 39.7256047 -104.9509239 39.7271356
-12848 1200 8863 0.0219879091267488 0.0219879091267488 -104.9509239 39.7271356 -104.9509292 39.7273333
-12850 8864 7983 0.0505037947042799 0.0505037947042799 -104.9546471 39.7305018 -104.9540572 39.7305236
-12851 7983 2054 0.099824917404873 0.099824917404873 -104.9540572 39.7305236 -104.9528899 39.730517
-12852 2054 2660 0.101497408945607 0.101497408945607 -104.9528899 39.730517 -104.9517031 39.7305282
-12853 2660 4133 0.0961563998269834 0.0961563998269834 -104.9517031 39.7305282 -104.9505787 39.7305216
-12855 6696 8019 0.0939673290333738 0.0939673290333738 -104.9494801 39.7305216 -104.9483814 39.7305084
-12856 8019 7683 0.0941529054095407 0.0941529054095407 -104.9483814 39.7305084 -104.9472804 39.7305107
-12857 7683 3457 0.0935091254143676 0.0935091254143676 -104.9472804 39.7305107 -104.946187 39.7305008
-12858 3457 8865 0.0461569199164165 0.0461569199164165 -104.946187 39.7305008 -104.9456473 39.7304952
-12859 8865 6019 0.0480340625550536 0.0480340625550536 -104.9456473 39.7304952 -104.9450856 39.7304952
-12860 6019 8866 0.0464697146879775 0.0464697146879775 -104.9450856 39.7304952 -104.9445422 39.7304973
-12861 8866 8867 0.048094543326443 0.048094543326443 -104.9445422 39.7304973 -104.9439798 39.7304995
-12862 8867 8868 0.0461790217746061 0.0461790217746061 -104.9439798 39.7304995 -104.9434398 39.7304973
-12863 8868 856 0.0449646613539359 0.0449646613539359 -104.9434398 39.7304973 -104.942914 39.7304952
-12864 856 451 0.0470078764226648 0.0470078764226648 -104.942914 39.7304952 -104.9423643 39.7304952
-12865 451 7105 0.0432708485882178 0.0432708485882178 -104.9423643 39.7304952 -104.9418583 39.7304952
-12866 7105 8869 0.0939007256947679 0.0939007256947679 -104.9418583 39.7304952 -104.9407607 39.7304709
-12868 8870 1196 0.168829878028139 0.168829878028139 -104.9532283 39.7256124 -104.9532393 39.7271307
-12869 1196 8871 0.021661446985008 0.021661446985008 -104.9532393 39.7271307 -104.9532413 39.7273255
-12871 4760 5407 0.0842978699895538 0.0842978699895538 -104.966261 39.7219977 -104.9658146 39.7226736
-12873 4755 6546 0.199683159238461 0.199683159238461 -104.9682436 39.7219606 -104.9682779 39.7237562
-12874 6546 8872 0.20436535055464 0.20436535055464 -104.9682779 39.7237562 -104.9682812 39.7255941
-12875 8872 8873 0.188956325706579 0.188956325706579 -104.9682812 39.7255941 -104.9682932 39.7272934
-12876 8873 3792 0.199291485976659 0.199291485976659 -104.9682932 39.7272934 -104.968314 39.7290856
-17796 10179 9318 0.114755253361823 0.114755253361823 -104.9873946 39.7555556 -104.9873865 39.7545236
-12877 3792 8561 0.13059037096191 0.13059037096191 -104.968314 39.7290856 -104.9673609 39.7300032
-12879 5926 924 0.178374370928188 0.178374370928188 -104.9809932 39.730424 -104.9810307 39.7320279
-12880 924 2210 0.187308783265319 0.187308783265319 -104.9810307 39.7320279 -104.9810238 39.7337124
-12881 2210 4859 0.159743099068053 0.159743099068053 -104.9810238 39.7337124 -104.9810463 39.7351489
-12882 4859 8874 0.192629276936053 0.192629276936053 -104.9810463 39.7351489 -104.9810766 39.7368811
-12883 8874 5461 0.172330101173688 0.172330101173688 -104.9810766 39.7368811 -104.9810735 39.7384309
-12884 5461 8875 0.177416584260724 0.177416584260724 -104.9810735 39.7384309 -104.9810892 39.7400264
-12885 8875 8876 0.176433616828762 0.176433616828762 -104.9810892 39.7400264 -104.9810837 39.7416131
-12887 655 8877 0.00413648661723727 0.00413648661723727 -104.9810836 39.7416667 -104.9810838 39.7417039
-12888 8877 8878 0.173943602457692 0.173943602457692 -104.9810838 39.7417039 -104.9810919 39.7432682
-12889 8878 4613 0.177428437243737 0.177428437243737 -104.9810919 39.7432682 -104.981055 39.7448636
-12890 4613 6487 0.148280300321704 0.148280300321704 -104.981055 39.7448636 -104.9810463 39.7461971
-12891 6487 3678 0.149828166583799 0.149828166583799 -104.9810463 39.7461971 -104.9810333 39.7475445
-12893 5929 926 0.177267011666895 0.177267011666895 -104.9798324 39.7304351 -104.9798307 39.7320293
-12894 926 2211 0.187019197552967 0.187019197552967 -104.9798307 39.7320293 -104.9798259 39.7337112
-12895 2211 4861 0.161667462022208 0.161667462022208 -104.9798259 39.7337112 -104.9798492 39.735165
-12896 4861 8880 0.191414125057248 0.191414125057248 -104.9798492 39.735165 -104.9798621 39.7368864
-12897 8880 5463 0.170299846109482 0.170299846109482 -104.9798621 39.7368864 -104.9798976 39.7384177
-12898 5463 8881 0.177990586801656 0.177990586801656 -104.9798976 39.7384177 -104.9798911 39.7400184
-12899 8881 8885 0.177780189019753 0.177780189019753 -104.9798911 39.7400184 -104.9798819 39.7416172
-12900 8885 659 0.00646246375156384 0.00646246375156384 -104.9798819 39.7416172 -104.979874 39.741675
-12901 659 8886 0.177011471342036 0.177011471342036 -104.979874 39.741675 -104.9798704 39.7432669
-12902 8886 4612 0.177005843155015 0.177005843155015 -104.9798704 39.7432669 -104.9798537 39.7448587
-12903 4612 6488 0.148001366258512 0.148001366258512 -104.9798537 39.7448587 -104.9798598 39.7461897
-12904 6488 3676 0.150380555650091 0.150380555650091 -104.9798598 39.7461897 -104.9798645 39.7475421
-12906 1621 8061 0.152748999526467 0.152748999526467 -104.9888599 39.7290834 -104.9888552 39.7304571
-12907 8061 6583 0.177490187745079 0.177490187745079 -104.9888552 39.7304571 -104.9888311 39.7320532
-12908 6583 5365 0.198863610387104 0.198863610387104 -104.9888311 39.7320532 -104.988843 39.7338416
-12909 5365 7123 0.157919035747255 0.157919035747255 -104.988843 39.7338416 -104.9888432 39.7352618
-12911 8092 8887 0.220134314041521 0.220134314041521 -104.9877223 39.7268463 -104.9858598 39.7254798
-12913 8887 8888 0.191841135190913 0.191841135190913 -104.9858598 39.7254798 -104.984536 39.724087
-12914 8888 967 0.0966749413586244 0.0966749413586244 -104.984536 39.724087 -104.9838014 39.7234262
-12916 5281 4980 0.256490434532314 0.256490434532314 -104.982597 39.7225939 -104.9802767 39.7211325
-12917 4980 4148 0.0387618071437701 0.0387618071437701 -104.9802767 39.7211325 -104.9799133 39.7209242
-12918 4148 8125 0.0859291558348279 0.0859291558348279 -104.9799133 39.7209242 -104.9791138 39.7204562
-12919 8125 2368 0.179404398665568 0.179404398665568 -104.9791138 39.7204562 -104.9775163 39.7194106
-12920 2368 996 0.270881468937897 0.270881468937897 -104.9775163 39.7194106 -104.9745895 39.7184798
-12921 996 2914 0.0678890736084051 0.0678890736084051 -104.9745895 39.7184798 -104.9738264 39.7183118
-12922 2914 2917 0.0548386478267142 0.0548386478267142 -104.9738264 39.7183118 -104.9732076 39.7181827
-12927 8894 8895 0.135035418511701 0.135035418511701 -105.0072481 39.7422069 -105.00609 39.7413812
-12929 8896 3167 0.11730986547504 0.11730986547504 -105.0048016 39.7429839 -105.00401 39.7438456
-12932 8898 8899 0.10458723954588 0.10458723954588 -105.0038366 39.7434181 -105.0050563 39.7433465
-12971 8901 8709 0.120698197647431 0.120698197647431 -105.0035419 39.745319 -105.0028925 39.7443552
-12978 8902 8903 0.00973401952734473 0.00973401952734473 -105.0104246 39.7573245 -105.0105064 39.7573854
-12979 8903 7902 0.144472845078957 0.144472845078957 -105.0105064 39.7573854 -105.0116934 39.7583103
-12980 7902 1225 0.0118169371778595 0.0118169371778595 -105.0116934 39.7583103 -105.0118006 39.7583774
-12982 8904 8902 0.0775029978833242 0.0775029978833242 -105.0097742 39.7568389 -105.0104246 39.7573245
-12984 8905 8906 0.061203121949655 0.061203121949655 -105.007434 39.7550594 -105.0079422 39.7554471
-12986 8906 8907 0.00497763084611722 0.00497763084611722 -105.0079422 39.7554471 -105.0079847 39.7554777
-12987 8907 121 0.154154812192847 0.154154812192847 -105.0079847 39.7554777 -105.0092699 39.7564502
-12988 121 8904 0.0610449885391548 0.0610449885391548 -105.0092699 39.7564502 -105.0097742 39.7568389
-12990 8325 8908 0.013157216132198 0.013157216132198 -105.0288943 39.7621125 -105.0289792 39.7622112
-12992 306 8909 0.108316294946991 0.108316294946991 -105.029097 39.762348 -105.0299448 39.763072
-12994 8328 8910 0.00899626589788406 0.00899626589788406 -105.0300154 39.7621147 -105.0300335 39.7621944
-12995 8910 8338 0.040824296618527 0.040824296618527 -105.0300335 39.7621944 -105.0300407 39.7625615
-12996 8338 6084 0.0494050923488005 0.0494050923488005 -105.0300407 39.7625615 -105.0300536 39.7630057
-12997 6084 8909 0.0118673496888767 0.0118673496888767 -105.0300536 39.7630057 -105.0299448 39.763072
-12998 8909 743 0.0430251864291126 0.0430251864291126 -105.0299448 39.763072 -105.0300547 39.7634496
-12999 743 4526 0.0484294102772242 0.0484294102772242 -105.0300547 39.7634496 -105.030062 39.7638851
-13000 4526 607 0.0194349740430761 0.0194349740430761 -105.030062 39.7638851 -105.0300516 39.7640597
-13001 607 8355 0.0344276469779443 0.0344276469779443 -105.0300516 39.7640597 -105.0300476 39.7643693
-13002 8355 3974 0.0402278696203799 0.0402278696203799 -105.0300476 39.7643693 -105.0299675 39.7647258
-13004 8911 2658 0.732133935065161 0.732133935065161 -104.9912548 39.7699266 -104.9890044 39.7762796
-13012 8915 8916 0.408272009335824 0.408272009335824 -104.9895806 39.7764348 -104.9907275 39.7728705
-13090 1914 6117 0.200190217467506 0.200190217467506 -104.972136 39.707488 -104.9721753 39.7092881
-13018 8922 8923 0.320042964228513 0.320042964228513 -104.9912716 39.7717176 -104.9942478 39.7699708
-13022 8265 8926 0.339879399665874 0.339879399665874 -104.9903119 39.7820401 -104.989367 39.779071
-13027 4265 279 0.0652387434169228 0.0652387434169228 -104.9869736 39.7783568 -104.987002 39.7789431
-13029 494 8927 0.349190481522976 0.349190481522976 -104.992407 39.7804327 -104.9887446 39.7818256
-13040 8104 8678 0.200106495095782 0.200106495095782 -104.9912065 39.7783357 -104.9912089 39.7765361
-13042 8932 8933 0.108557788789167 0.108557788789167 -104.9900544 39.7765237 -104.9887841 39.7765237
-13044 8677 8932 0.0500470435519063 0.0500470435519063 -104.99064 39.7765283 -104.9900544 39.7765237
-13046 8933 6917 0.0967430583925215 0.0967430583925215 -104.9887841 39.7765237 -104.9879258 39.777091
-13050 8936 8937 0.198244621757318 0.198244621757318 -104.9889754 39.7833371 -104.9891177 39.7851166
-13084 8956 8756 0.203550658006643 0.203550658006643 -104.9419095 39.6965915 -104.9418766 39.6947611
-13052 8938 8939 0.428260593428089 0.428260593428089 -104.988834 39.791086 -104.9895413 39.7872731
-13053 8939 8425 0.201936465504692 0.201936465504692 -104.9895413 39.7872731 -104.9895725 39.7854572
-13055 8939 8941 0.203022755730075 0.203022755730075 -104.9895413 39.7872731 -104.9897554 39.7854547
-13057 8931 8942 0.152950212219782 0.152950212219782 -104.9953405 39.768167 -104.9969401 39.7675503
-13059 8943 8931 0.0786273196751871 0.0786273196751871 -104.9945316 39.7685038 -104.9953405 39.768167
-19033 256 10159 0.12356745711476 0.12356745711476 -104.9516897 39.7797769 -104.9503671 39.7793277
-13063 8945 8946 0.104572805049419 0.104572805049419 -104.9946559 39.7678998 -104.9938162 39.7672158
-13067 8949 432 0.545131832456565 0.545131832456565 -104.9945174 39.7681578 -104.9902144 39.7717766
-13068 432 8950 0.686001065667251 0.686001065667251 -104.9902144 39.7717766 -104.9892186 39.7778983
-13070 8951 8949 0.0797207044078447 0.0797207044078447 -104.9953492 39.7678334 -104.9945174 39.7681578
-13074 8952 8953 0.195031053860659 0.195031053860659 -104.9945443 39.7680713 -104.9925416 39.768912
-13076 99 3503 0.199966819322067 0.199966819322067 -104.9430615 39.7001973 -104.943078 39.698399
-13077 3503 8954 0.201518791118212 0.201518791118212 -104.943078 39.698399 -104.943035 39.696587
-13078 8954 8755 0.203764704692679 0.203764704692679 -104.943035 39.696587 -104.9430353 39.6947545
-13079 8755 7193 0.202942329745549 0.202942329745549 -104.9430353 39.6947545 -104.9430302 39.6929294
-13080 7193 7746 0.401362186865274 0.401362186865274 -104.9430302 39.6929294 -104.943009 39.6893199
-13081 7746 8955 0.585986287872625 0.585986287872625 -104.943009 39.6893199 -104.9430138 39.68405
-13082 101 3504 0.19989908085758 0.19989908085758 -104.9418857 39.7001887 -104.9419144 39.6983911
-13083 3504 8956 0.200106829133291 0.200106829133291 -104.9419144 39.6983911 -104.9419095 39.6965915
-13085 8756 7194 0.202942348322105 0.202942348322105 -104.9418766 39.6947611 -104.9418714 39.692936
-13087 1087 8957 0.00893112007684357 0.00893112007684357 -104.9724071 39.7074855 -104.9724094 39.7074052
-13088 8957 1082 0.038563824899443 0.038563824899443 -104.9724094 39.7074052 -104.9724743 39.707062
-13091 6117 3204 0.200871492111254 0.200871492111254 -104.9721753 39.7092881 -104.9721975 39.7110945
-13092 3204 3094 0.202111971416858 0.202111971416858 -104.9721975 39.7110945 -104.9721825 39.7129121
-13093 3094 1749 0.143511782143127 0.143511782143127 -104.9721825 39.7129121 -104.9721944 39.7142027
-13096 8925 8917 0.011822810789309 0.011822810789309 -104.9949053 39.7699691 -104.9949225 39.7698636
-13098 8959 602 0.0536722144567161 0.0536722144567161 -104.9949911 39.7695799 -104.9952229 39.7691313
-13099 602 8962 0.0387695912622113 0.0387695912622113 -104.9952229 39.7691313 -104.9951474 39.7687875
-13100 8962 8948 0.175808350127672 0.175808350127672 -104.9951474 39.7687875 -104.9949826 39.7672115
-13101 8948 428 0.00954052470619231 0.00954052470619231 -104.9949826 39.7672115 -104.9949826 39.7671257
-13102 428 7933 0.160696268160677 0.160696268160677 -104.9949826 39.7671257 -104.9950255 39.7656809
-13104 8918 8924 0.012486102804665 0.012486102804665 -104.9947937 39.769857 -104.9947852 39.7699691
-13105 8924 2420 0.0580706601904793 0.0580706601904793 -104.9947852 39.7699691 -104.9948281 39.7704903
-13108 8964 8965 0.125224497044451 0.125224497044451 -104.9950202 39.7634385 -104.9949826 39.7623127
-13110 8965 2192 0.356365737888712 0.356365737888712 -104.9949826 39.7623127 -104.9937863 39.7592426
-13135 4848 1531 0.0955193854848385 0.0955193854848385 -104.9915939 39.7606983 -104.9909332 39.7613911
-13111 2192 1611 0.254354724276405 0.254354724276405 -104.9937863 39.7592426 -104.9928744 39.7570652
-13112 1611 8852 0.0391111849621532 0.0391111849621532 -104.9928744 39.7570652 -104.9926518 39.7567579
-13114 8966 7934 0.183569029359489 0.183569029359489 -104.9948109 39.7640317 -104.9948315 39.7656825
-13116 2045 8967 0.0657780447895409 0.0657780447895409 -104.984465 39.7671944 -104.9850034 39.7676171
-13119 1742 5213 0.229560371023495 0.229560371023495 -104.9851236 39.7677094 -104.9870231 39.769169
-13120 5213 640 0.0648517231107158 0.0648517231107158 -104.9870231 39.769169 -104.9875489 39.7695895
-14585 9392 2833 0.210508246764738 0.210508246764738 -105.0252309 39.782151 -105.0252481 39.7802579
-13122 7933 8963 0.200908071446329 0.200908071446329 -104.9950255 39.7656809 -104.9950178 39.7638741
-13124 7934 8969 0.0906737639231845 0.0906737639231845 -104.9948315 39.7656825 -104.9948199 39.7664979
-13125 8969 429 0.0698124130115735 0.0698124130115735 -104.9948199 39.7664979 -104.9948109 39.7671257
-13126 429 8947 0.0102744112219317 0.0102744112219317 -104.9948109 39.7671257 -104.9948109 39.7672181
-13127 8947 8970 0.0586653743681201 0.0586653743681201 -104.9948109 39.7672181 -104.9947845 39.7677453
-13128 8970 601 0.102766368620144 0.102766368620144 -104.9947845 39.7677453 -104.9947852 39.7686695
-13157 8989 1285 0.118339572755071 0.118339572755071 -105.0193135 39.7576062 -105.0205433 39.7580949
-13129 601 8973 0.0999362244261846 0.0999362244261846 -104.9947852 39.7686695 -104.9948538 39.7695667
-13130 8973 8918 0.0326860113699392 0.0326860113699392 -104.9948538 39.7695667 -104.9947937 39.769857
-13132 2193 8237 0.11471912407663 0.11471912407663 -104.9954278 39.7578265 -104.9963555 39.757081
-13133 8237 8974 0.0761048371438857 0.0761048371438857 -104.9963555 39.757081 -104.9970707 39.7566734
-13443 9077 4179 0.169049790102584 0.169049790102584 -104.9941038 39.7044276 -104.9951206 39.7057312
-13137 8974 4844 0.0408566656014099 0.0408566656014099 -104.9970707 39.7566734 -104.9974984 39.7565094
-13139 8975 8915 0.161267451240187 0.161267451240187 -104.9895886 39.7778851 -104.9895806 39.7764348
-13164 8976 8977 0.00802909585520281 0.00802909585520281 -105.0250886 39.760233 -105.0251674 39.7602723
-13140 8915 8979 0.511309857046827 0.511309857046827 -104.9895806 39.7764348 -104.9905824 39.7719014
-13142 8950 8980 0.295444981113679 0.295444981113679 -104.9892186 39.7778983 -104.9891666 39.780555
-13144 8981 8982 0.155762064195337 0.155762064195337 -104.9891558 39.7819521 -104.9891588 39.7833529
-14605 9398 8233 0.0099630690934953 0.0099630690934953 -105.0252853 39.7620928 -105.0252854 39.7620032
-13146 8983 8984 0.153794064127447 0.153794064127447 -104.9895187 39.7819231 -104.9895148 39.78054
-13148 8985 8986 0.0143228031361841 0.0143228031361841 -105.013005 39.7555233 -105.0131588 39.7555744
-13149 8986 8496 0.0694983470285585 0.0694983470285585 -105.0131588 39.7555744 -105.013905 39.7558225
-13150 8496 398 0.120004619664384 0.120004619664384 -105.013905 39.7558225 -105.0152017 39.756236
-13151 398 8987 0.0577858842103034 0.0577858842103034 -105.0152017 39.756236 -105.01584 39.7564071
-13152 8987 637 0.099744132155093 0.099744132155093 -105.01584 39.7564071 -105.016925 39.7567371
-13153 637 6436 0.0832880379381437 0.0832880379381437 -105.016925 39.7567371 -105.0178047 39.7570591
-13154 6436 21 0.0571009168797096 0.0571009168797096 -105.0178047 39.7570591 -105.0184092 39.7572776
-13155 21 8988 0.0791847444931621 0.0791847444931621 -105.0184092 39.7572776 -105.0192467 39.7575819
-13158 1285 2962 0.0719310735484076 0.0719310735484076 -105.0205433 39.7580949 -105.0212514 39.7584444
-13159 2962 8991 0.0186493582069224 0.0186493582069224 -105.0212514 39.7584444 -105.0214364 39.7585333
-13160 8991 8992 0.187353348628226 0.187353348628226 -105.0214364 39.7585333 -105.0232439 39.7594863
-13161 8992 8351 0.0990161897507714 0.0990161897507714 -105.0232439 39.7594863 -105.024297 39.7598572
-13162 8351 8993 0.00963797122366648 0.00963797122366648 -105.024297 39.7598572 -105.0243946 39.7599006
-13163 8993 8976 0.0698946708143702 0.0698946708143702 -105.0243946 39.7599006 -105.0250886 39.760233
-13165 8977 8994 0.012930744273385 0.012930744273385 -105.0251674 39.7602723 -105.0252881 39.7603424
-13167 8451 8985 0.0708838190049254 0.0708838190049254 -105.0122583 39.7552461 -105.013005 39.7555233
-13169 2877 7692 0.030123526159425 0.030123526159425 -104.9479343 39.7849217 -104.9475818 39.7849256
-13173 8996 8143 0.201053290850133 0.201053290850133 -104.9560968 39.781931 -104.956087 39.7837391
-13174 8143 8997 0.150730663136006 0.150730663136006 -104.956087 39.7837391 -104.956286 39.785086
-13176 2794 5261 0.132082373792006 0.132082373792006 -104.9559387 39.766929 -104.9559252 39.7681168
-13178 5853 1338 0.200417735783644 0.200417735783644 -105.016828 39.7148117 -105.016828 39.7130093
-13179 1338 8998 0.206394741682614 0.206394741682614 -105.016828 39.7130093 -105.0168967 39.7111539
-13181 8998 4698 0.201909087963534 0.201909087963534 -105.0168967 39.7111539 -105.0169053 39.7093381
-13182 4698 8999 0.201909088033291 0.201909088033291 -105.0169053 39.7093381 -105.0169139 39.7075223
-13183 8999 9000 0.201186325895839 0.201186325895839 -105.0169139 39.7075223 -105.0169053 39.705713
-13184 9000 6822 0.198983321230549 0.198983321230549 -105.0169053 39.705713 -105.0169053 39.7039235
-13185 6822 770 0.132908321867952 0.132908321867952 -105.0169053 39.7039235 -105.0168881 39.7027283
-13187 1638 8999 0.102808714105755 0.102808714105755 -105.0157122 39.7075091 -105.0169139 39.7075223
-13188 8999 4216 0.0999229348013983 0.0999229348013983 -105.0169139 39.7075223 -105.0180812 39.7074893
-13189 4216 8095 0.0991443160837587 0.0991443160837587 -105.0180812 39.7074893 -105.0192399 39.7075091
-13190 8095 196 0.0991307294664674 0.0991307294664674 -105.0192399 39.7075091 -105.0203986 39.7074959
-13191 196 2925 0.0983869258474561 0.0983869258474561 -105.0203986 39.7074959 -105.0215487 39.7075025
-13193 5307 1463 0.0991311193927209 0.0991311193927209 -105.0227074 39.7075091 -105.0238662 39.7075157
-13194 1463 5437 0.103145293575034 0.103145293575034 -105.0238662 39.7075157 -105.0250692 39.7075784
-13196 1641 9000 0.10355145810147 0.10355145810147 -105.0156951 39.7057328 -105.0169053 39.705713
-13197 9000 4217 0.0998824134603326 0.0998824134603326 -105.0169053 39.705713 -105.0180726 39.7056932
-13198 4217 8096 0.0998581597847897 0.0998581597847897 -105.0180726 39.7056932 -105.0192399 39.7056932
-13199 8096 197 0.0983977211710877 0.0983977211710877 -105.0192399 39.7056932 -105.02039 39.70568
-13200 197 2926 0.0983895151379973 0.0983895151379973 -105.02039 39.70568 -105.0215401 39.7056866
-13201 2926 5308 0.0991337377550934 0.0991337377550934 -105.0215401 39.7056866 -105.0226989 39.7056932
-13202 5308 1464 0.0991224618714554 0.0991224618714554 -105.0226989 39.7056932 -105.0238576 39.7056932
-13203 1464 5440 0.103536651588581 0.103536651588581 -105.0238576 39.7056932 -105.0250679 39.7056934
-13205 201 2928 0.102050045456718 0.102050045456718 -105.0203473 39.7004104 -105.0215401 39.7004038
-13206 2928 5310 0.0991386153517731 0.0991386153517731 -105.0215401 39.7004038 -105.0226989 39.7004038
-13207 5310 1466 0.099890094841465 0.099890094841465 -105.0226989 39.7004038 -105.0238662 39.700384
-13208 1466 5445 0.102288602469368 0.102288602469368 -105.0238662 39.700384 -105.0250612 39.7004136
-13209 5445 9003 0.20221504164542 0.20221504164542 -105.0250612 39.7004136 -105.0274242 39.7003717
-13210 9003 7922 0.00954769987851559 0.00954769987851559 -105.0274242 39.7003717 -105.0275358 39.7003717
-13211 7922 4407 0.193513161405962 0.193513161405962 -105.0275358 39.7003717 -105.0297971 39.7003312
-13212 4407 9004 0.22689488985342 0.22689488985342 -105.0297971 39.7003312 -105.0324492 39.7003312
-13213 9004 4314 0.17109885981524 0.17109885981524 -105.0324492 39.7003312 -105.0344491 39.7003246
-13214 4314 4501 0.0954627697803603 0.0954627697803603 -105.0344491 39.7003246 -105.0355649 39.7003312
-13215 4501 7813 0.103538745444113 0.103538745444113 -105.0355649 39.7003312 -105.0367751 39.7003246
-13216 7813 5077 0.099141030065187 0.099141030065187 -105.0367751 39.7003246 -105.0379338 39.7003378
-13217 5077 8012 0.101361319209047 0.101361319209047 -105.0379338 39.7003378 -105.0391183 39.7003576
-13218 8012 6831 0.0984053279969797 0.0984053279969797 -105.0391183 39.7003576 -105.0402684 39.7003444
-13219 6831 6983 0.0507122349978986 0.0507122349978986 -105.0402684 39.7003444 -105.0408606 39.7003642
-13220 6983 6974 0.0492014587539049 0.0492014587539049 -105.0408606 39.7003642 -105.0414357 39.7003642
-13221 6974 7944 0.0815359432635548 0.0815359432635548 -105.0414357 39.7003642 -105.0423884 39.700384
-13222 7944 6363 0.117492028011777 0.117492028011777 -105.0423884 39.700384 -105.0437617 39.7003774
-13223 6363 6659 0.128518000967454 0.128518000967454 -105.0437617 39.7003774 -105.045239 39.700587
-13224 6659 5340 0.248378842685992 0.248378842685992 -105.045239 39.700587 -105.0481332 39.700411
-13225 5340 9007 0.436836188101395 0.436836188101395 -105.0481332 39.700411 -105.0532391 39.7004403
-13226 5447 9008 0.0954198714626642 0.0954198714626642 -105.0250598 39.6985284 -105.0261751 39.6985266
-13227 9008 5974 0.0150605452925665 0.0150605452925665 -105.0261751 39.6985266 -105.0263476 39.6984996
-13229 5443 7920 0.209496436784339 0.209496436784339 -105.0250652 39.7022173 -105.027514 39.7022198
-13230 7920 4409 0.196049081122935 0.196049081122935 -105.027514 39.7022198 -105.0298056 39.7022132
-13232 9009 4311 0.174051720567411 0.174051720567411 -105.0324149 39.7022132 -105.0344491 39.7022396
-13234 5439 7917 0.209760382857472 0.209760382857472 -105.0250705 39.7058254 -105.0275225 39.7058187
-13235 7917 4414 0.1967831025196 0.1967831025196 -105.0275225 39.7058187 -105.0298228 39.7058121
-13236 4414 9010 0.224679521512281 0.224679521512281 -105.0298228 39.7058121 -105.0324492 39.7058187
-13239 5435 9011 0.112718312199178 0.112718312199178 -105.0250719 39.7094097 -105.0263896 39.7094108
-13240 9011 7916 0.0954502097686848 0.0954502097686848 -105.0263896 39.7094108 -105.0275054 39.7094042
-13242 4418 9012 0.223944278058007 0.223944278058007 -105.0298056 39.7094174 -105.0324235 39.7094306
-13243 9012 9013 0.163728342208645 0.163728342208645 -105.0324235 39.7094306 -105.0343375 39.709424
-13244 9014 9011 0.193580953488763 0.193580953488763 -105.0263991 39.7111517 -105.0263896 39.7094108
-13272 5331 5695 0.176288296878523 0.176288296878523 -105.0362199 39.7087576 -105.0362429 39.7071723
-13246 1844 2578 0.172509377214494 0.172509377214494 -105.030046 39.7213676 -105.0300374 39.722919
-13248 6839 8008 0.0576758204139334 0.0576758204139334 -105.0396161 39.7039367 -105.0391344 39.7035738
-13250 8009 6981 0.144663680916955 0.144663680916955 -105.0391612 39.7031575 -105.040852 39.7031773
-13252 9015 6845 0.0843525238323184 0.0843525238323184 -105.043237 39.711272 -105.0432381 39.7105134
-13253 6845 4689 0.0881118827688874 0.0881118827688874 -105.0432381 39.7105134 -105.043221 39.7097211
-13254 4689 4697 0.0264412698588759 0.0264412698588759 -105.043221 39.7097211 -105.0432124 39.7094834
-13255 4697 7466 0.0631647371963507 0.0631647371963507 -105.0432124 39.7094834 -105.0431952 39.7089155
-13256 7466 9016 0.0866600751763154 0.0866600751763154 -105.0431952 39.7089155 -105.043221 39.7081364
-13257 9016 7453 0.0117533037462049 0.0117533037462049 -105.043221 39.7081364 -105.043221 39.7080307
-13258 7453 2091 0.0764142388554106 0.0764142388554106 -105.043221 39.7080307 -105.0431866 39.707344
-13259 2091 5691 0.0521281816109867 0.0521281816109867 -105.0431866 39.707344 -105.0431866 39.7068752
-13260 5691 5680 0.0375154291161679 0.0375154291161679 -105.0431866 39.7068752 -105.0432124 39.7065384
-13261 5680 6316 0.0896056080016293 0.0896056080016293 -105.0432124 39.7065384 -105.0432381 39.7057328
-13262 6316 4963 0.0888719448734625 0.0888719448734625 -105.0432381 39.7057328 -105.0432124 39.7049338
-13264 6826 5338 0.0370211552910964 0.0370211552910964 -105.0432124 39.7042603 -105.0430777 39.7039439
-13266 9016 9017 0.044781886028432 0.044781886028432 -105.043221 39.7081364 -105.0437445 39.7081364
-13267 6842 4692 0.112329114895897 0.112329114895897 -105.0373845 39.7104606 -105.0373845 39.7094504
-13268 4692 5332 0.162956489748023 0.162956489748023 -105.0373845 39.7094504 -105.0373528 39.7079851
-13270 6840 4691 0.113830246405759 0.113830246405759 -105.0362258 39.7104609 -105.0362258 39.7094372
-13271 4691 5331 0.0755697574983074 0.0755697574983074 -105.0362258 39.7094372 -105.0362199 39.7087576
-13274 5694 6319 0.174033677833605 0.174033677833605 -105.0360627 39.7071657 -105.036097 39.7056008
-13275 6319 9018 0.182109806928741 0.182109806928741 -105.036097 39.7056008 -105.0360799 39.7039631
-13277 4310 7811 0.201267372547373 0.201267372547373 -105.0344398 39.7030321 -105.0367923 39.7030519
-13278 7811 8010 0.202389778156291 0.202389778156291 -105.0367923 39.7030519 -105.039158 39.703065
-13281 7812 5076 0.100599027218817 0.100599027218817 -105.0367751 39.7021472 -105.037951 39.7021472
-13282 5076 8011 0.100623102109681 0.100623102109681 -105.037951 39.7021472 -105.0391269 39.702167
-13283 8011 6982 0.147599810375252 0.147599810375252 -105.0391269 39.702167 -105.040852 39.7021868
-13284 6982 7943 0.131458423393202 0.131458423393202 -105.040852 39.7021868 -105.0423884 39.702167
-13285 7943 3300 0.0829788157522616 0.0829788157522616 -105.0423884 39.702167 -105.0433583 39.7021604
-13286 3300 5727 0.0905493512456201 0.0905493512456201 -105.0433583 39.7021604 -105.0444167 39.7021543
-13287 5727 5339 0.0993780908642813 0.0993780908642813 -105.0444167 39.7021543 -105.0455771 39.7021954
-13289 9019 9020 0.473924441922911 0.473924441922911 -105.0334154 39.6894303 -105.0334238 39.6851682
-13290 5441 7918 0.212183518066811 0.212183518066811 -105.0250601 39.7039517 -105.0275397 39.7039962
-13291 7918 4411 0.196063540031297 0.196063540031297 -105.0275397 39.7039962 -105.0298314 39.704016
-13292 4411 9021 0.221019052884505 0.221019052884505 -105.0298314 39.704016 -105.0324149 39.7040028
-13293 9021 4282 0.176970513595043 0.176970513595043 -105.0324149 39.7040028 -105.0344834 39.703983
-13295 4326 9018 0.0881179267079727 0.0881179267079727 -105.0350499 39.7039565 -105.0360799 39.7039631
-13296 9018 7810 0.0594732573783121 0.0594732573783121 -105.0360799 39.7039631 -105.0367751 39.7039631
-13297 7810 7817 0.0279069878470498 0.0279069878470498 -105.0367751 39.7039631 -105.0371012 39.7039697
-13298 7817 5075 0.0895984878523876 0.0895984878523876 -105.0371012 39.7039697 -105.0381484 39.703983
-13299 5075 8007 0.082290456587143 0.082290456587143 -105.0381484 39.703983 -105.0391097 39.7039565
-13300 8007 6839 0.0433776365307967 0.0433776365307967 -105.0391097 39.7039565 -105.0396161 39.7039367
-13301 6839 6979 0.105025257907842 0.105025257907842 -105.0396161 39.7039367 -105.0408435 39.7039169
-14885 9012 7486 0.0983880214663299 0.0983880214663299 -105.0324235 39.7094306 -105.0324321 39.7085458
-13303 9003 4959 0.128621575011946 0.128621575011946 -105.0274242 39.7003717 -105.0274024 39.6992151
-13304 4959 9022 0.0561090389096707 0.0561090389096707 -105.0274024 39.6992151 -105.0274035 39.6987105
-13305 9022 9023 0.219664135455113 0.219664135455113 -105.0274035 39.6987105 -105.0274276 39.6967351
-13307 9024 1734 0.0339090081692689 0.0339090081692689 -105.0038894 39.6915551 -105.0039238 39.6912513
-13308 1734 9025 0.199586826055962 0.199586826055962 -105.0039238 39.6912513 -105.0039367 39.6894564
-13310 162 1723 0.148414326457229 0.148414326457229 -105.0166181 39.6931468 -105.0164379 39.6918193
-13312 164 1724 0.19589389224901 0.19589389224901 -105.0175867 39.6931453 -105.0171932 39.6914098
-13313 1724 9026 0.21539258017212 0.21539258017212 -105.0171932 39.6914098 -105.0166353 39.6895209
-13315 166 1725 0.23958811593923 0.23958811593923 -105.018536 39.693139 -105.0179828 39.6910268
-13316 1725 9027 0.172261015966003 0.172261015966003 -105.0179828 39.6910268 -105.017588 39.6895077
-13318 168 1727 0.256304305915683 0.256304305915683 -105.0194505 39.693127 -105.0194505 39.690822
-13319 1727 8081 0.0911159242290505 0.0911159242290505 -105.0194505 39.690822 -105.0194162 39.690003
-13321 9028 9029 0.0459665066705729 0.0459665066705729 -105.0112026 39.7293142 -105.0117401 39.7293113
-13323 9030 9031 0.204682511562437 0.204682511562437 -105.0266512 39.7293064 -105.0263427 39.7311318
-13324 9031 6588 0.201464690183835 0.201464690183835 -105.0263427 39.7311318 -105.0263693 39.7329435
-13325 6588 7109 0.201819605073549 0.201819605073549 -105.0263693 39.7329435 -105.0263626 39.7347585
-13326 7109 9034 0.0380490136329461 0.0380490136329461 -105.0263626 39.7347585 -105.0263528 39.7351006
-13327 9035 9036 0.202787954952135 0.202787954952135 -105.0275173 39.7293147 -105.0275272 39.7311384
-13328 9036 6589 0.200863566889439 0.200863566889439 -105.0275272 39.7311384 -105.0275196 39.7329448
-13329 6589 7110 0.201074334121883 0.201074334121883 -105.0275196 39.7329448 -105.027555 39.7347529
-13331 9037 9031 0.102130234291417 0.102130234291417 -105.0251484 39.7311316 -105.0263427 39.7311318
-13332 9031 9036 0.101294841162053 0.101294841162053 -105.0263427 39.7311318 -105.0275272 39.7311384
-13333 9036 6128 0.0961527434944637 0.0961527434944637 -105.0275272 39.7311384 -105.0286516 39.7311384
-13334 6128 3971 0.0990967592348727 0.0990967592348727 -105.0286516 39.7311384 -105.0298103 39.7311516
-13336 7017 1406 0.0990967592360877 0.0990967592360877 -105.0309776 39.7311384 -105.0321363 39.7311516
-13337 1406 7390 0.0982252697684911 0.0982252697684911 -105.0321363 39.7311516 -105.0332849 39.7311446
-13338 7390 5217 0.100064145492252 0.100064145492252 -105.0332849 39.7311446 -105.034455 39.7311372
-13340 5377 9038 0.0981767550682586 0.0981767550682586 -105.044041 39.7339173 -105.0440496 39.7330344
-13342 9041 9042 0.107883824327089 0.107883824327089 -105.0428651 39.7330461 -105.0428737 39.7340163
-13344 9043 9044 0.111762023714712 0.111762023714712 -105.040479 39.7340163 -105.0404793 39.7330112
-13346 7805 9045 0.163613143703316 0.163613143703316 -104.9768041 39.7875035 -104.9767649 39.7889746
-13347 4982 9046 0.151151791011959 0.151151791011959 -104.9800523 39.7855977 -104.9782841 39.7855581
-13348 9046 4333 0.0931833318260777 0.0931833318260777 -104.9782841 39.7855581 -104.9771941 39.7855318
-13349 4333 5039 0.084348128639754 0.084348128639754 -104.9771941 39.7855318 -104.976207 39.7855252
-13351 2869 9047 0.0643526028257267 0.0643526028257267 -104.9835884 39.7855828 -104.9835799 39.7850041
-13352 2869 5283 0.189728403936972 0.189728403936972 -104.9835884 39.7855828 -104.9834597 39.7872862
-13354 9048 6951 0.21054969022045 0.21054969022045 -104.9790788 39.7799923 -104.9786733 39.78186
-13355 6951 8084 0.110877740512572 0.110877740512572 -104.9786733 39.78186 -104.9784386 39.7828407
-13356 8084 8141 0.0381711926062465 0.0381711926062465 -104.9784386 39.7828407 -104.9783643 39.7831792
-13357 8141 5971 0.0998550766587588 0.0998550766587588 -104.9783643 39.7831792 -104.978267 39.7840741
-13358 5971 9046 0.165019740176851 0.165019740176851 -104.978267 39.7840741 -104.9782841 39.7855581
-13359 9046 7804 0.203892252907028 0.203892252907028 -104.9782841 39.7855581 -104.978267 39.7873917
-13360 7804 9049 0.488623985679594 0.488623985679594 -104.978267 39.7873917 -104.978271 39.791786
-13361 577 9048 0.0924966938169246 0.0924966938169246 -104.979193 39.7791651 -104.9790788 39.7799923
-13369 9054 1743 0.0233197702600261 0.0233197702600261 -104.9786512 39.775667 -104.9787558 39.7758607
-13370 1743 4270 0.277932467642318 0.277932467642318 -104.9787558 39.7758607 -104.9792574 39.7783303
-13371 4270 310 0.0394728122356983 0.0394728122356983 -104.9792574 39.7783303 -104.9792332 39.7786848
-13372 310 577 0.0535172942987349 0.0535172942987349 -104.9792332 39.7786848 -104.979193 39.7791651
-13374 9055 9056 0.0694449359265994 0.0694449359265994 -104.9728754 39.7708776 -104.9734488 39.7704351
-13375 9056 2325 0.190938968451781 0.190938968451781 -104.9734488 39.7704351 -104.9750376 39.7692279
-13376 2325 4279 0.147346976573119 0.147346976573119 -104.9750376 39.7692279 -104.9762513 39.7682868
-13378 4286 9055 0.0222915391297905 0.0222915391297905 -104.972693 39.7710209 -104.9728754 39.7708776
-13380 1349 1615 0.0587612563553368 0.0587612563553368 -104.9740676 39.7719084 -104.9745571 39.7722795
-13381 1615 7135 0.106001129731548 0.106001129731548 -104.9745571 39.7722795 -104.9754213 39.7729633
-13383 5260 9057 0.107843300513683 0.107843300513683 -104.9589552 39.7681242 -104.958998 39.7690935
-13384 6952 9058 0.0875153511963366 0.0875153511963366 -104.9777379 39.7804804 -104.9767938 39.7801754
-13386 9058 5767 0.0813716345984657 0.0813716345984657 -104.9767938 39.7801754 -104.9758538 39.7800585
-13387 5767 312 0.370850163813996 0.370850163813996 -104.9758538 39.7800585 -104.971535 39.780386
-13390 9048 9052 0.36535949731556 0.36535949731556 -104.9790788 39.7799923 -104.9833542 39.7800156
-13394 9060 8966 0.196473660543131 0.196473660543131 -104.9947546 39.7622653 -104.9948109 39.7640317
-13396 9061 5080 0.358471972755657 0.358471972755657 -104.9981155 39.7670982 -105.001279 39.7649816
-13397 5080 9062 0.674602285535072 0.674602285535072 -105.001279 39.7649816 -105.0060948 39.7601751
-13398 9062 3176 0.289568864041751 0.289568864041751 -105.0060948 39.7601751 -105.0085577 39.7583871
-13399 3176 527 0.133561854308294 0.133561854308294 -105.0085577 39.7583871 -105.009688 39.7575578
-18560 10318 10319 0.255397297870644 0.255397297870644 -105.0297002 39.7834301 -105.0275696 39.7818193
-13400 527 343 0.340886700679976 0.340886700679976 -105.009688 39.7575578 -105.0125925 39.7554572
-13401 343 537 0.428322489908352 0.428322489908352 -105.0125925 39.7554572 -105.0159762 39.7526163
-13402 537 474 0.822980283733396 0.822980283733396 -105.0159762 39.7526163 -105.0180056 39.7453814
-13403 474 8438 0.152037422281902 0.152037422281902 -105.0180056 39.7453814 -105.0171026 39.7442035
-13407 4427 9063 0.114941491865609 0.114941491865609 -104.9981322 39.7667419 -104.9969297 39.7672047
-13409 9063 8912 0.118971180199303 0.118971180199303 -104.9969297 39.7672047 -104.9956858 39.7676849
-13413 8236 125 0.0903470808346396 0.0903470808346396 -105.0034855 39.7597433 -105.0040777 39.7604163
-13415 9065 9066 0.0810250214751567 0.0810250214751567 -105.0037267 39.7605614 -105.0029207 39.7601779
-13417 9066 7279 0.116655009841785 0.116655009841785 -105.0029207 39.7601779 -105.0017875 39.7595933
-13419 276 9067 0.0692041764264314 0.0692041764264314 -105.0179907 39.7399138 -105.0172314 39.7396983
-13500 9108 9109 0.0476133357747153 0.0476133357747153 -105.0059283 39.7256613 -105.0053716 39.7256561
-13421 9067 2189 0.114532021981465 0.114532021981465 -105.0172314 39.7396983 -105.0159036 39.7398341
-13423 9068 4553 0.327000385366346 0.327000385366346 -105.017924 39.736752 -105.021729 39.7364576
-13425 8428 9069 0.0507531626876375 0.0507531626876375 -105.0172942 39.7368917 -105.0178645 39.7367652
-13426 9069 9068 0.00529520129182755 0.00529520129182755 -105.0178645 39.7367652 -105.017924 39.736752
-13428 9070 9071 0.0606488327577038 0.0606488327577038 -105.0164101 39.7293208 -105.0171193 39.7293222
-13430 9071 9072 0.009176031077042 0.009176031077042 -105.0171193 39.7293222 -105.0172266 39.7293225
-13431 9072 4642 0.175105976981708 0.175105976981708 -105.0172266 39.7293225 -105.0192742 39.7293289
-13432 4642 7954 0.0487370399178714 0.0487370399178714 -105.0192742 39.7293289 -105.0198441 39.7293262
-13433 7954 4547 0.158995972178669 0.158995972178669 -105.0198441 39.7293262 -105.0217032 39.7293091
-13434 4547 9073 0.292416775735491 0.292416775735491 -105.0217032 39.7293091 -105.0251226 39.7293097
-13436 9074 9075 0.0675438073285673 0.0675438073285673 -104.9985883 39.7111864 -104.9993779 39.7111909
-13438 9075 409 0.0146789910973018 0.0146789910973018 -104.9993779 39.7111909 -104.9995495 39.7111919
-13439 409 9076 0.0166512433271008 0.0166512433271008 -104.9995495 39.7111919 -104.999744 39.711198
-13441 4838 326 0.0588523383992881 0.0588523383992881 -104.9964173 39.7083799 -104.9969556 39.7087095
-13449 9081 9082 0.443932946896766 0.443932946896766 -105.0008195 39.7257692 -105.0060104 39.7257674
-13451 1401 9083 0.0611691476045831 0.0611691476045831 -105.0324911 39.7252609 -105.0324948 39.725811
-13453 9083 6208 0.0330698135159164 0.0330698135159164 -105.0324948 39.725811 -105.0324968 39.7261084
-13454 6208 7645 0.178373846931983 0.178373846931983 -105.0324968 39.7261084 -105.032514 39.7277125
-13455 7645 9086 0.177258150455768 0.177258150455768 -105.032514 39.7277125 -105.0325034 39.7293066
-13498 9107 3956 0.0601050509878674 0.0601050509878674 -105.0008408 39.7256368 -105.0001441 39.7257079
-13457 9087 9088 1.73315945419765 1.73315945419765 -105.0529649 39.72565 -105.0327002 39.7254916
-13458 9088 410 0.265082533171925 0.265082533171925 -105.0327002 39.7254916 -105.0296018 39.7254255
-13459 410 9080 0.715047499183354 0.715047499183354 -105.0296018 39.7254255 -105.0212418 39.7253265
-13460 9080 9089 0.194455760903183 0.194455760903183 -105.0212418 39.7253265 -105.0189759 39.7251813
-13462 9089 9090 0.0550554662137945 0.0550554662137945 -105.0189759 39.7251813 -105.0183322 39.7251879
-13464 9091 9092 0.473459458640042 0.473459458640042 -105.0189899 39.7253071 -105.0245174 39.7255447
-13475 9098 9032 0.307889980671666 0.307889980671666 -105.0162316 39.725012 -105.0131311 39.7236048
-13479 9090 9099 0.0142223937707519 0.0142223937707519 -105.0183322 39.7251879 -105.0181659 39.7251883
-13481 9100 9093 0.193628424072927 0.193628424072927 -105.0161161 39.7254559 -105.0183719 39.7253071
-13483 9101 9100 0.0626625130905001 0.0626625130905001 -105.0153857 39.7255006 -105.0161161 39.7254559
-13487 9103 346 0.140681499904037 0.140681499904037 -105.0065187 39.725789 -105.0077031 39.726667
-13522 9037 8064 0.00660497864323473 0.00660497864323473 -105.0251484 39.7311316 -105.0251484 39.731191
-13489 3955 9081 0.113309674251049 0.113309674251049 -105.0001889 39.7266654 -105.0008195 39.7257692
-13491 6240 5091 0.078819968233945 0.078819968233945 -104.9908905 39.7256604 -104.9908359 39.7249528
-13493 9082 9103 0.0435368095566408 0.0435368095566408 -105.0060104 39.7257674 -105.0065187 39.725789
-13494 9103 347 0.193850840943334 0.193850840943334 -105.0065187 39.725789 -105.0087846 39.7258352
-13495 347 404 0.026466812116417 0.026466812116417 -105.0087846 39.7258352 -105.0090936 39.725822
-13496 404 9106 0.11755875033606 0.11755875033606 -105.0090936 39.725822 -105.0104669 39.7257758
-13501 9109 9107 0.387486870322022 0.387486870322022 -105.0053716 39.7256561 -105.0008408 39.7256368
-13503 6204 9110 0.181291651373991 0.181291651373991 -105.0090242 39.7253711 -105.0069105 39.725495
-13505 9111 9112 0.0153902940291749 0.0153902940291749 -105.0136091 39.7256283 -105.0137882 39.7256148
-13506 9112 9101 0.137209683962048 0.137209683962048 -105.0137882 39.7256148 -105.0153857 39.7255006
-13508 9113 9111 0.075192531928865 0.075192531928865 -105.0127328 39.7256834 -105.0136091 39.7256283
-15014 455 860 0.0461629164957839 0.0461629164957839 -104.9423505 39.7367494 -104.9428903 39.736756
-13510 9114 9115 0.148585418330877 0.148585418330877 -105.0128101 39.7255315 -105.0110763 39.7256175
-13514 8582 9116 0.0682625654668292 0.0682625654668292 -105.0251054 39.7252038 -105.0251054 39.7258177
-13516 9116 237 0.0139438438014188 0.0139438438014188 -105.0251054 39.7258177 -105.0251054 39.7259431
-13517 237 7635 0.17396601741799 0.17396601741799 -105.0251054 39.7259431 -105.025114 39.7275076
-13519 7602 9073 0.102023996019348 0.102023996019348 -105.025114 39.7283922 -105.0251226 39.7293097
-13521 117 9037 0.091769841511351 0.091769841511351 -105.0251312 39.7303064 -105.0251484 39.7311316
-13523 8064 6587 0.198394254239174 0.198394254239174 -105.0251484 39.731191 -105.0251522 39.7329752
-13524 6587 5384 0.100320867880051 0.100320867880051 -105.0251522 39.7329752 -105.0251569 39.7338774
-13525 5384 7108 0.0976180261019357 0.0976180261019357 -105.0251569 39.7338774 -105.0251569 39.7347553
-13526 7108 2293 0.101160557994969 0.101160557994969 -105.0251569 39.7347553 -105.025179 39.7356649
-13527 2293 9117 0.0816968455207608 0.0816968455207608 -105.025179 39.7356649 -105.0252112 39.7363992
-13583 9134 9079 0.189350301331036 0.189350301331036 -104.9951647 39.7043993 -104.9930943 39.7037972
-13533 9118 6217 0.00293554606374767 0.00293554606374767 -105.0394723 39.7257622 -105.0394723 39.7257886
-13534 6217 7652 0.27452915439238 0.27452915439238 -105.0394723 39.7257886 -105.0394723 39.7282575
-13535 7652 8071 0.262369838158816 0.262369838158816 -105.0394723 39.7282575 -105.039492 39.730617
-13536 8071 9119 0.0614463164636613 0.0614463164636613 -105.039492 39.730617 -105.039492 39.7311696
-13538 9118 7768 0.0286215741177868 0.0286215741177868 -105.0394723 39.7257622 -105.0394723 39.7255048
-13540 9121 9122 0.0549317968438626 0.0549317968438626 -105.022529 39.7237852 -105.0222205 39.7242185
-13541 9122 9080 0.148946547669597 0.148946547669597 -105.0222205 39.7242185 -105.0212418 39.7253265
-13543 9121 4555 0.0367880997749164 0.0367880997749164 -105.022529 39.7237852 -105.0221186 39.7238843
-13545 216 9123 0.047880969118268 0.047880969118268 -105.0105654 39.7229262 -105.0109606 39.7232312
-13547 9123 447 0.333206339887537 0.333206339887537 -105.0109606 39.7232312 -105.0132294 39.7256673
-13549 2999 9124 0.314861669735557 0.314861669735557 -105.0136746 39.7263954 -105.0147476 39.7291041
-13554 579 408 0.862576839598051 0.862576839598051 -105.0080855 39.7206863 -105.0014039 39.7148758
-13568 9128 9129 0.16941277010836 0.16941277010836 -105.0149225 39.7295801 -105.0154242 39.731054
-13570 9124 9128 0.0550015048734635 0.0550015048734635 -105.0147476 39.7291041 -105.0149225 39.7295801
-13578 9132 220 0.766585324287615 0.766585324287615 -104.9861015 39.7001338 -104.9801989 39.6949471
-13615 7609 7262 0.111890561964914 0.111890561964914 -104.9383356 39.7292297 -104.9370272 39.7292302
-13579 220 566 0.637748069235424 0.637748069235424 -104.9801989 39.6949471 -104.9751917 39.6906986
-13587 9136 9137 0.450871833260349 0.450871833260349 -104.9910031 39.7032246 -104.9868714 39.7007074
-13590 8684 222 0.184496371824925 0.184496371824925 -104.9859386 39.700249 -104.9874359 39.7014431
-13591 222 9140 0.487607813488587 0.487607813488587 -104.9874359 39.7014431 -104.9922255 39.7038202
-13593 9140 9077 0.174302500151122 0.174302500151122 -104.9922255 39.7038202 -104.9941038 39.7044276
-13594 9077 9141 0.280690469581891 0.280690469581891 -104.9941038 39.7044276 -104.9960053 39.7064848
-13596 9142 118 0.0916021886608042 0.0916021886608042 -105.0111993 39.7293642 -105.0112228 39.7301878
-13597 118 6721 0.0966297992771619 0.0966297992771619 -105.0112228 39.7301878 -105.0112289 39.7310568
-13598 6721 6722 0.0414535753801991 0.0414535753801991 -105.0112289 39.7310568 -105.0112278 39.7314296
-13599 6722 2311 0.00867549185460531 0.00867549185460531 -105.0112278 39.7314296 -105.0112958 39.7314875
-13601 6580 6723 0.0197325066377101 0.0197325066377101 -105.0113223 39.732461 -105.0113508 39.7326371
-13603 9029 1240 0.0358410792262526 0.0358410792262526 -105.0117401 39.7293113 -105.0121592 39.729309
-13604 1240 4790 0.0578956777475445 0.0578956777475445 -105.0121592 39.729309 -105.0128361 39.7293183
-13605 4790 4814 0.0309664941935945 0.0309664941935945 -105.0128361 39.7293183 -105.0131982 39.7293163
-13606 4814 2156 0.0660634330770184 0.0660634330770184 -105.0131982 39.7293163 -105.0139707 39.7293204
-13607 2156 2166 0.00298513757197415 0.00298513757197415 -105.0139707 39.7293204 -105.0140055 39.7293183
-13608 2166 2183 0.165657322423627 0.165657322423627 -105.0140055 39.7293183 -105.0159426 39.7293103
-13609 2183 9070 0.039996230308656 0.039996230308656 -105.0159426 39.7293103 -105.0164101 39.7293208
-13611 3728 9143 0.0374422730466023 0.0374422730466023 -105.0028395 39.7289078 -105.0032713 39.7288521
-13613 3765 8150 0.099678431004031 0.099678431004031 -104.9406029 39.7291831 -104.9394389 39.72923
-13614 8150 7609 0.0943510009713305 0.0943510009713305 -104.9394389 39.72923 -104.9383356 39.7292297
-13616 7262 7595 0.0635463262031531 0.0635463262031531 -104.9370272 39.7292302 -104.9362843 39.7292429
-13617 7595 7599 0.0220206440979588 0.0220206440979588 -104.9362843 39.7292429 -104.9360268 39.7292429
-13618 7599 9144 0.0741982381570415 0.0741982381570415 -104.9360268 39.7292429 -104.9351592 39.7292363
-15078 7589 3366 0.105686563985576 0.105686563985576 -104.9356129 39.7656394 -104.9343764 39.7656425
-13619 9144 2022 0.0197545563564228 0.0197545563564228 -104.9351592 39.7292363 -104.9349282 39.7292369
-13620 2022 9147 0.0829434723735258 0.0829434723735258 -104.9349282 39.7292369 -104.9339583 39.7292394
-13621 9147 3355 0.0108199721778022 0.0108199721778022 -104.9339583 39.7292394 -104.9338318 39.7292375
-13623 9148 2768 0.0035576669192827 0.0035576669192827 -104.9327781 39.7292306 -104.9327365 39.7292303
-13624 2768 7013 0.0948918648713715 0.0948918648713715 -104.9327365 39.7292303 -104.9316269 39.729236
-13626 2274 8214 0.00623184642483798 0.00623184642483798 -104.9305243 39.7292319 -104.9304515 39.7292344
-13627 8214 9149 0.0892902468185094 0.0892902468185094 -104.9304515 39.7292344 -104.9294074 39.7292396
-13628 9149 8211 0.0144047767787734 0.0144047767787734 -104.9294074 39.7292396 -104.9292411 39.7292602
-13629 8211 7521 0.0807484203861095 0.0807484203861095 -104.9292411 39.7292602 -104.928297 39.7292478
-13630 7521 7522 0.0178959760293508 0.0178959760293508 -104.928297 39.7292478 -104.9280878 39.7292519
-13631 7522 2132 0.0761585237127413 0.0761585237127413 -104.9280878 39.7292519 -104.9271973 39.7292602
-13632 2132 2117 0.0261874332320613 0.0261874332320613 -104.9271973 39.7292602 -104.9268915 39.7292726
-13633 2117 5982 0.0706516490311829 0.0706516490311829 -104.9268915 39.7292726 -104.9260654 39.7292643
-13634 5982 5987 0.0312102623276897 0.0312102623276897 -104.9260654 39.7292643 -104.9257006 39.7292726
-13635 5987 5148 0.0542024830967572 0.0542024830967572 -104.9257006 39.7292726 -104.9250676 39.7292478
-13636 5148 7678 0.00643849229968441 0.00643849229968441 -104.9250676 39.7292478 -104.9249925 39.7292437
-13637 7678 9150 0.0270552275766841 0.0270552275766841 -104.9249925 39.7292437 -104.9246762 39.7292385
-13638 9150 5159 0.0130471422397109 0.0130471422397109 -104.9246762 39.7292385 -104.9245238 39.729244
-13639 5159 2336 0.0550815403379387 0.0550815403379387 -104.9245238 39.729244 -104.9238797 39.729244
-17797 9318 9592 0.0276370219250994 0.0276370219250994 -104.9873865 39.7545236 -104.9873927 39.7542751
-15154 9503 7694 0.0985863309924877 0.0985863309924877 -104.9464272 39.7874239 -104.947581 39.7874249
-13640 2336 9151 2.70099171821299 2.70099171821299 -104.9238797 39.729244 -104.8923175 39.7283409
-15853 9736 5597 0.026161521554181 0.026161521554181 -105.0435838 39.731177 -105.0438865 39.7312111
-13642 327 390 0.428713460971309 0.428713460971309 -104.9987289 39.7109039 -105.0008375 39.7144016
-13643 390 216 1.2612581668138 1.2612581668138 -105.0008375 39.7144016 -105.0105654 39.7229262
-13647 4841 9156 0.020245918680072 0.020245918680072 -104.995653 39.7037978 -104.9956359 39.7036162
-13653 9127 4841 0.714489743272739 0.714489743272739 -104.9983536 39.7098782 -104.995653 39.7037978
-13655 9160 9161 0.0611231237623731 0.0611231237623731 -104.9994442 39.6890552 -105.0001383 39.6891851
-13657 9161 9162 0.0094906074947222 0.0094906074947222 -105.0001383 39.6891851 -105.000246 39.6892055
-13658 9162 360 0.119259910634054 0.119259910634054 -105.000246 39.6892055 -105.0016107 39.6894234
-13659 360 4441 0.0977181725107 0.0977181725107 -105.0016107 39.6894234 -105.0027522 39.6894498
-13660 4441 9025 0.101356058092401 0.101356058092401 -105.0027522 39.6894498 -105.0039367 39.6894564
-13661 9025 361 0.102083424277621 0.102083424277621 -105.0039367 39.6894564 -105.0051297 39.6894631
-13662 361 6661 0.148732998262686 0.148732998262686 -105.0051297 39.6894631 -105.0068679 39.6894571
-13663 6661 1457 0.0814814185857237 0.0814814185857237 -105.0068679 39.6894571 -105.0078201 39.6894653
-13664 1457 6930 0.0803380398809936 0.0803380398809936 -105.0078201 39.6894653 -105.0087589 39.6894757
-13665 6930 9163 0.0870015008277124 0.0870015008277124 -105.0087589 39.6894757 -105.0097755 39.6894901
-13666 9163 3826 0.0559780942251715 0.0559780942251715 -105.0097755 39.6894901 -105.0104297 39.6894878
-13667 3826 5901 0.113837481725673 0.113837481725673 -105.0104297 39.6894878 -105.0117601 39.6894878
-13668 5901 1650 0.336368580358266 0.336368580358266 -105.0117601 39.6894878 -105.0156911 39.6895077
-13669 1650 9026 0.0808050552206421 0.0808050552206421 -105.0156911 39.6895077 -105.0166353 39.6895209
-13670 9026 9027 0.0815322500516298 0.0815322500516298 -105.0166353 39.6895209 -105.017588 39.6895077
-13671 9027 3968 0.0749133242052919 0.0749133242052919 -105.017588 39.6895077 -105.0184635 39.6895077
-13672 3968 205 0.163780553378706 0.163780553378706 -105.0184635 39.6895077 -105.0203775 39.6894945
-13673 205 2934 0.0793233966793332 0.0793233966793332 -105.0203775 39.6894945 -105.0213045 39.6895011
-13674 2934 2932 0.00660572151012338 0.00660572151012338 -105.0213045 39.6895011 -105.0213817 39.6895011
-13675 2932 5313 0.0749133313668845 0.0749133313668845 -105.0213817 39.6895011 -105.0222572 39.6895011
-13676 5313 5314 0.039721686292112 0.039721686292112 -105.0222572 39.6895011 -105.0227207 39.6894812
-13677 5314 1472 0.0396600103919334 0.0396600103919334 -105.0227207 39.6894812 -105.0231842 39.6894812
-13678 1472 5451 0.159004638765101 0.159004638765101 -105.0231842 39.6894812 -105.0250424 39.6894928
-13679 5451 7909 0.201247264593271 0.201247264593271 -105.0250424 39.6894928 -105.0273938 39.6894539
-13680 7909 4403 0.196833842084677 0.196833842084677 -105.0273938 39.6894539 -105.0296941 39.6894671
-13681 4403 6310 0.199805236650359 0.199805236650359 -105.0296941 39.6894671 -105.0320287 39.6894303
-13682 6310 6311 0.0399338522027804 0.0399338522027804 -105.0320287 39.6894303 -105.0324954 39.6894303
-13683 6311 9019 0.0787211142615482 0.0787211142615482 -105.0324954 39.6894303 -105.0334154 39.6894303
-18919 10398 10391 0.0932116121589892 0.0932116121589892 -105.0118932 39.7497594 -105.0127316 39.7492235
-13684 9019 4301 0.0803301037321015 0.0803301037321015 -105.0334154 39.6894303 -105.0343542 39.6894282
-13685 4301 4499 0.100692334161908 0.100692334161908 -105.0343542 39.6894282 -105.0355305 39.6894539
-13686 4499 7815 0.0988002674680887 0.0988002674680887 -105.0355305 39.6894539 -105.0366851 39.6894447
-13687 7815 5071 0.0991802868019195 0.0991802868019195 -105.0366851 39.6894447 -105.037844 39.6894614
-13688 5071 8014 0.103571412588639 0.103571412588639 -105.037844 39.6894614 -105.0390543 39.6894482
-13689 8014 6833 0.0839453108807348 0.0839453108807348 -105.0390543 39.6894482 -105.0400351 39.6894654
-14657 9411 6735 0.143528351506247 0.143528351506247 -105.0180024 39.7601634 -105.0196661 39.7603379
-13691 6976 7946 0.0984345173677437 0.0984345173677437 -105.0410323 39.6894803 -105.0421824 39.6894605
-13692 7946 3301 0.0874467814940938 0.0874467814940938 -105.0421824 39.6894605 -105.0432038 39.6894869
-13693 3301 6365 0.0895995351805866 0.0895995351805866 -105.0432038 39.6894869 -105.0442509 39.6894935
-13694 6365 6654 0.083807023997277 0.083807023997277 -105.0442509 39.6894935 -105.0452294 39.6895265
-13695 6654 9165 0.68755983150845 0.68755983150845 -105.0452294 39.6895265 -105.0532648 39.6895209
-13696 9166 9167 0.0102840052604526 0.0102840052604526 -104.9928292 39.6966756 -104.9929494 39.6966756
-13698 7423 7832 0.102961269389569 0.102961269389569 -104.9944429 39.6966822 -104.9956462 39.6966693
-13699 7832 1182 0.0975615453999259 0.0975615453999259 -104.9956462 39.6966693 -104.996786 39.6966954
-13700 1182 1359 0.100609727856237 0.100609727856237 -104.996786 39.6966954 -104.9979619 39.6967021
-13701 1359 8086 0.0998738624212929 0.0998738624212929 -104.9979619 39.6967021 -104.9991292 39.6967087
-13702 8086 4842 0.0999569203615348 0.0999569203615348 -104.9991292 39.6967087 -105.0002975 39.6967069
-13703 4842 4377 0.103593486995353 0.103593486995353 -105.0002975 39.6967069 -105.0015083 39.6967038
-13704 4377 2859 0.305366704359361 0.305366704359361 -105.0015083 39.6967038 -105.0050773 39.6967285
-13705 2859 7625 0.0937028559888649 0.0937028559888649 -105.0050773 39.6967285 -105.0061725 39.696731
-13706 7625 6669 0.0349417471907859 0.0349417471907859 -105.0061725 39.696731 -105.0065809 39.6967302
-13707 6669 6928 0.181245567189969 0.181245567189969 -105.0065809 39.6967302 -105.0086993 39.6967351
-13708 6928 6929 0.056563910069816 0.056563910069816 -105.0086993 39.6967351 -105.0093602 39.6967483
-15200 9526 7443 0.0505254725980933 0.0505254725980933 -105.036376 39.7499878 -105.036967 39.7499887
-13710 3818 5176 0.0844451203946057 0.0844451203946057 -105.0107164 39.6967417 -105.0117034 39.6967417
-13711 5176 5900 0.0873882937906588 0.0873882937906588 -105.0117034 39.6967417 -105.0127248 39.6967417
-13712 5900 1602 0.0969475981594534 0.0969475981594534 -105.0127248 39.6967417 -105.0138578 39.6967549
-13713 1602 1645 0.147610823352004 0.147610823352004 -105.0138578 39.6967549 -105.015583 39.6967681
-13714 1645 1658 0.00734081920779586 0.00734081920779586 -105.015583 39.6967681 -105.0156688 39.6967681
-13715 1658 6715 0.113834950309784 0.113834950309784 -105.0156688 39.6967681 -105.0169992 39.6967549
-13717 4211 8097 0.0991353106844716 0.0991353106844716 -105.0180463 39.6967483 -105.019205 39.6967483
-13719 9171 203 0.0903750729081993 0.0903750729081993 -105.019308 39.6967483 -105.0203643 39.6967518
-13720 203 2931 0.102769081645998 0.102769081645998 -105.0203643 39.6967518 -105.0215654 39.6967417
-13721 2931 5312 0.098402268229521 0.098402268229521 -105.0215654 39.6967417 -105.0227155 39.6967351
-13722 5312 1469 0.0726981009727233 0.0726981009727233 -105.0227155 39.6967351 -105.0235652 39.6967351
-13723 1469 1468 0.023502610730772 0.023502610730772 -105.0235652 39.6967351 -105.0238399 39.6967351
-13724 1468 5448 0.104140699419407 0.104140699419407 -105.0238399 39.6967351 -105.0250571 39.696733
-13726 3761 9166 0.069031653563667 0.069031653563667 -104.9920224 39.696669 -104.9928292 39.6966756
-13728 4177 9172 0.109548350633249 0.109548350633249 -104.9910305 39.6911901 -104.9923108 39.6911873
-13730 9144 5946 0.201030224778112 0.201030224778112 -104.9351592 39.7292363 -104.9351663 39.7310442
-13731 5946 5137 0.27511296352744 0.27511296352744 -104.9351663 39.7310442 -104.935004 39.7335152
-13732 5137 5152 0.0232058578864935 0.0232058578864935 -104.935004 39.7335152 -104.9349958 39.7337238
-13733 5152 4907 0.10620133994029 0.10620133994029 -104.9349958 39.7337238 -104.935013 39.7346788
-15464 1361 9615 0.0375616902705351 0.0375616902705351 -105.0019226 39.7432201 -105.0015275 39.7433678
-13734 4907 6615 0.200738818803378 0.200738818803378 -104.935013 39.7346788 -104.9349711 39.7364838
-13735 6615 9173 0.1939198547813 0.1939198547813 -104.9349711 39.7364838 -104.9349904 39.7382277
-13736 9173 9174 0.208269220932895 0.208269220932895 -104.9349904 39.7382277 -104.9349984 39.7401007
-13738 9147 5947 0.203116974549126 0.203116974549126 -104.9339583 39.7292394 -104.9339798 39.731066
-13740 7615 904 0.277200719177449 0.277200719177449 -104.9380774 39.7619904 -104.9380626 39.7644833
-13741 904 9175 0.127974248210887 0.127974248210887 -104.9380626 39.7644833 -104.9380631 39.7656342
-13743 7010 7421 0.0949619514323781 0.0949619514323781 -104.9318494 39.7619997 -104.9318313 39.7628536
-13744 7421 1142 0.0432881849429407 0.0432881849429407 -104.9318313 39.7628536 -104.9318313 39.7632429
-13745 1142 1147 0.0608947786947552 0.0608947786947552 -104.9318313 39.7632429 -104.9318227 39.7637905
-13746 1147 909 0.0792487229277921 0.0792487229277921 -104.9318227 39.7637905 -104.9318383 39.7645031
-13788 1669 9192 0.136278654988626 0.136278654988626 -105.0053195 39.7680447 -105.0053009 39.7692702
-13747 909 9176 0.125103752996271 0.125103752996271 -104.9318383 39.7645031 -104.9318203 39.7656281
-13748 9176 2771 0.202343174331141 0.202343174331141 -104.9318203 39.7656281 -104.9317009 39.7674455
-13749 2771 6895 0.198817638053719 0.198817638053719 -104.9317009 39.7674455 -104.9317267 39.7692334
-13753 9179 1 0.207517415173182 0.207517415173182 -105.0147208 39.7357485 -105.0155597 39.7339973
-13755 8437 9180 0.124967984057199 0.124967984057199 -105.0140684 39.7388161 -105.0141257 39.7376931
-13759 9182 4484 0.465234327006532 0.465234327006532 -105.0055365 39.720906 -105.0055963 39.7250897
-13760 4484 4485 0.0326010116755978 0.0326010116755978 -105.0055963 39.7250897 -105.0056478 39.7253802
-13762 9183 9184 0.0646101092104256 0.0646101092104256 -105.0021716 39.719416 -105.002927 39.7194123
-13764 9185 9186 0.026977202251753 0.026977202251753 -104.9985457 39.7503278 -104.9983225 39.7501563
-13765 9186 9187 0.0154692834867904 0.0154692834867904 -104.9983225 39.7501563 -104.9982996 39.7500183
-13766 9187 6713 0.0145607005435147 0.0145607005435147 -104.9982996 39.7500183 -104.9982781 39.7498884
-13768 232 9188 0.0841812454433435 0.0841812454433435 -104.9943741 39.6929144 -104.9942711 39.6921615
-13770 9188 2561 0.00954099557633664 0.00954099557633664 -104.9942711 39.6921615 -104.9942282 39.6920823
-13773 8233 9190 0.00698491885871168 0.00698491885871168 -105.0252854 39.7620032 -105.0253671 39.7620045
-13774 9190 605 0.212601143616712 0.212601143616712 -105.0253671 39.7620045 -105.0276669 39.7627327
-13776 394 9191 0.174546619141482 0.174546619141482 -105.0057374 39.7597756 -105.0041591 39.7607716
-13779 294 4424 0.271505686802405 0.271505686802405 -105.0030853 39.7615504 -105.0016238 39.7637183
-13783 1892 4513 0.135635571790495 0.135635571790495 -105.0052777 39.7620216 -105.0052776 39.7632414
-13784 4513 5235 0.13338423256793 0.13338423256793 -105.0052776 39.7632414 -105.0052923 39.7644409
-13785 5235 6887 0.13498931648718 0.13498931648718 -105.0052923 39.7644409 -105.0053201 39.7656547
-13786 6887 8681 0.133693861256586 0.133693861256586 -105.0053201 39.7656547 -105.0053077 39.766857
-13787 8681 1669 0.132070065253788 0.132070065253788 -105.0053077 39.766857 -105.0053195 39.7680447
-13790 8903 8620 0.147899148341854 0.147899148341854 -105.0105064 39.7573854 -105.0093075 39.7583444
-13791 8620 6984 0.0740139001970076 0.0740139001970076 -105.0093075 39.7583444 -105.008704 39.7588217
-13792 6984 4819 0.0711240597778575 0.0711240597778575 -105.008704 39.7588217 -105.0080831 39.7592475
-13794 8514 8220 0.0695233221555377 0.0695233221555377 -105.0068857 39.7602149 -105.006312 39.7606581
-13796 9193 9141 0.231480473302438 0.231480473302438 -104.9954572 39.7044462 -104.9960053 39.7064848
-13817 9194 8483 0.144876329810161 0.144876329810161 -104.9954622 39.743992 -104.9942509 39.7449031
-13798 9193 9195 0.405940766693276 0.405940766693276 -104.9954572 39.7044462 -104.9963084 39.7080377
-13800 5081 9196 0.0826803218524669 0.0826803218524669 -104.9962546 39.7083175 -104.9961881 39.7090593
-13801 9196 7908 0.24773379383735 0.24773379383735 -104.9961881 39.7090593 -104.9971039 39.7111729
-13802 7908 1383 0.130538600450066 0.130538600450066 -104.9971039 39.7111729 -104.9976275 39.7122756
-13803 1383 4663 0.14493811446872 0.14493811446872 -104.9976275 39.7122756 -104.9982624 39.7134841
-13822 8286 9202 0.148093750497898 0.148093750497898 -104.9894331 39.7486381 -104.9882201 39.7495889
-13804 4663 9197 0.14786450905396 0.14786450905396 -104.9982624 39.7134841 -104.9985624 39.7147937
-13807 231 1184 0.314149545717651 0.314149545717651 -104.9941166 39.693522 -104.9968546 39.6916397
-13808 1184 1364 0.114004540105804 0.114004540105804 -104.9968546 39.6916397 -104.9980305 39.6911576
-13810 1364 8087 0.130984174828509 0.130984174828509 -104.9980305 39.6911576 -104.9992149 39.6904113
-14659 939 5938 0.17856727191407 0.17856727191407 -104.972385 39.7320506 -104.9723624 39.7304448
-14660 5938 3797 0.152203615831491 0.152203615831491 -104.9723624 39.7304448 -104.9723623 39.729076
-13811 8087 9162 0.16050280483824 0.16050280483824 -104.9992149 39.6904113 -105.000246 39.6892055
-13812 9162 9198 0.0132941963216631 0.0132941963216631 -105.000246 39.6892055 -105.000274 39.6890879
-18577 10320 10319 0.350878667314418 0.350878667314418 -105.0313943 39.7806712 -105.0275696 39.7818193
-20839 10930 10948 0.105680421147412 0.105680421147412 -105.0299611 39.7629467 -105.0291285 39.7622441
-13813 9198 9199 3.17004296851045 3.17004296851045 -105.000274 39.6890879 -105.0045553 39.6607701
-17798 9592 10180 0.0765579819092659 0.0765579819092659 -104.9873927 39.7542751 -104.9873951 39.7535866
-13839 1284 9210 0.120028974895433 0.120028974895433 -105.0205218 39.7579887 -105.0192694 39.7575006
-13816 4931 9194 0.407318560179548 0.407318560179548 -104.9988399 39.7414088 -104.9954622 39.743992
-13819 6705 8577 0.147047679886064 0.147047679886064 -104.9930306 39.7458434 -104.9918273 39.7467883
-13820 8577 5778 0.145526475675905 0.145526475675905 -104.9918273 39.7467883 -104.990623 39.7477132
-13821 5778 8286 0.144657100371242 0.144657100371242 -104.990623 39.7477132 -104.9894331 39.7486381
-13823 9202 9203 0.102081942931647 0.102081942931647 -104.9882201 39.7495889 -104.9873873 39.7502468
-13825 7891 9204 0.145701377036231 0.145701377036231 -104.9870145 39.7505324 -104.9858044 39.7514551
-13827 8994 9205 0.0106390736530004 0.0106390736530004 -105.0252881 39.7603424 -105.0253893 39.7603981
-13828 9205 8304 0.117212668938715 0.117212668938715 -105.0253893 39.7603981 -105.026526 39.7609877
-13829 8304 6774 0.0328401658585753 0.0328401658585753 -105.026526 39.7609877 -105.0268654 39.7611261
-13830 6774 3753 0.196045019335809 0.196045019335809 -105.0268654 39.7611261 -105.0288005 39.7620725
-13831 3753 8325 0.00916875381027056 0.00916875381027056 -105.0288005 39.7620725 -105.0288943 39.7621125
-13833 8444 9206 0.0130864665707206 0.0130864665707206 -105.0252881 39.7602413 -105.0251661 39.7601702
-13834 9206 9207 0.00957370688012094 0.00957370688012094 -105.0251661 39.7601702 -105.0250726 39.7601228
-13835 9207 9208 0.169933774193856 0.169933774193856 -105.0250726 39.7601228 -105.0233093 39.759417
-13836 9208 9209 0.168302394118973 0.168302394118973 -105.0233093 39.759417 -105.0216966 39.7585487
-15503 3939 5618 0.12194000294889 0.12194000294889 -105.0001493 39.7402188 -105.0015736 39.7401631
-13837 9209 2963 0.0205458196072096 0.0205458196072096 -105.0216966 39.7585487 -105.0214955 39.7584475
-13840 9210 9211 0.00588390321087397 0.00588390321087397 -105.0192694 39.7575006 -105.0192076 39.7574773
-13841 9211 22 0.0556252544592051 0.0556252544592051 -105.0192076 39.7574773 -105.0186135 39.7572732
-13842 22 6435 0.0767592442346679 0.0767592442346679 -105.0186135 39.7572732 -105.0178061 39.7569711
-13843 6435 636 0.0822615503744666 0.0822615503744666 -105.0178061 39.7569711 -105.0169344 39.7566577
-13844 636 9213 0.103246384420422 0.103246384420422 -105.0169344 39.7566577 -105.0158342 39.7562746
-13845 9213 535 0.0273108213340879 0.0273108213340879 -105.0158342 39.7562746 -105.0155504 39.7561618
-13846 535 9214 0.138573391347307 0.138573391347307 -105.0155504 39.7561618 -105.0140859 39.7556275
-13847 9214 8498 0.0276472257994952 0.0276472257994952 -105.0140859 39.7556275 -105.0137949 39.755519
-13848 8498 8441 0.0465142466162739 0.0465142466162739 -105.0137949 39.755519 -105.0132989 39.755347
-13850 9215 8403 0.0487070540067587 0.0487070540067587 -104.9781012 39.703864 -104.9775319 39.7038582
-13851 8403 1774 0.0526991311069308 0.0526991311069308 -104.9775319 39.7038582 -104.9769161 39.7038457
-13853 4412 9216 0.0527074152255093 0.0527074152255093 -104.9763723 39.7038488 -104.9757563 39.7038398
-13854 9216 4781 0.0501079093501001 0.0501079093501001 -104.9757563 39.7038398 -104.9751707 39.7038491
-14661 3797 9412 0.199399735185058 0.199399735185058 -104.9723623 39.729076 -104.9723458 39.7272828
-13855 4781 1522 0.0511423250179406 0.0511423250179406 -104.9751707 39.7038491 -104.9745729 39.7038457
-13856 1522 5241 0.0480297777865987 0.0480297777865987 -104.9745729 39.7038457 -104.9740116 39.7038551
-13857 5241 463 0.0533178386766155 0.0533178386766155 -104.9740116 39.7038551 -104.9733885 39.7038655
-13859 9217 8420 0.0487543044755043 0.0487543044755043 -104.9780581 39.7056667 -104.9774882 39.7056633
-13860 8420 1773 0.0502154238610622 0.0502154238610622 -104.9774882 39.7056633 -104.9769014 39.705675
-13862 4425 9218 0.050643583977918 0.050643583977918 -104.9763417 39.7056707 -104.9757497 39.7056695
-13863 9218 4823 0.0514478917449482 0.0514478917449482 -104.9757497 39.7056695 -104.9751483 39.7056678
-13864 4823 1521 0.0514834990326773 0.0514834990326773 -104.9751483 39.7056678 -104.9745465 39.705664
-13865 1521 5262 0.0474439861374267 0.0474439861374267 -104.9745465 39.705664 -104.9739919 39.7056638
-13866 5262 9219 0.0530746980864797 0.0530746980864797 -104.9739919 39.7056638 -104.9733715 39.7056677
-13868 6499 2472 0.199600310338802 0.199600310338802 -104.9298179 39.7455937 -104.9298007 39.7473887
-13870 7007 2282 0.0992844503488553 0.0992844503488553 -104.9317157 39.7565591 -104.9305543 39.7565508
-13872 3603 7529 0.0990493561706104 0.0990493561706104 -104.9293903 39.7565549 -104.9282316 39.7565549
-13873 7529 2137 0.105524175995486 0.105524175995486 -104.9282316 39.7565549 -104.9269972 39.7565629
-13874 2137 5994 0.104734285723653 0.104734285723653 -104.9269972 39.7565629 -104.925772 39.7565652
-13875 5994 7674 0.100897460064117 0.100897460064117 -104.925772 39.7565652 -104.9245919 39.7565477
-13996 5841 434 0.0624248318177171 0.0624248318177171 -104.973423 39.6911522 -104.973423 39.6905908
-13876 7674 9221 1.00510923817581 1.00510923817581 -104.9245919 39.7565477 -104.912834 39.7565808
-13878 2804 5269 0.128688734978596 0.128688734978596 -104.9452104 39.7669339 -104.9451609 39.7680906
-13879 5269 6909 0.123348542786119 0.123348542786119 -104.9451609 39.7680906 -104.9451603 39.7691999
-13881 4480 5270 0.264392216770053 0.264392216770053 -104.9440279 39.7657101 -104.9440108 39.7680878
-13882 5270 6910 0.123553912188766 0.123553912188766 -104.9440108 39.7680878 -104.9439975 39.7691989
-13884 7761 6908 0.206924774668396 0.206924774668396 -104.9453067 39.7710608 -104.9452957 39.7691999
-13886 6907 7760 0.209013911598568 0.209013911598568 -104.9464035 39.7692009 -104.9463967 39.7710806
-13887 7760 9222 0.202410018751594 0.202410018751594 -104.9463967 39.7710806 -104.9464409 39.7729006
-13888 6905 7759 0.206351576128965 0.206351576128965 -104.9475756 39.7692051 -104.9475555 39.7710608
-13889 7759 6359 0.203865759483167 0.203865759483167 -104.9475555 39.7710608 -104.9475481 39.7728942
-13891 9223 6448 0.190233422734384 0.190233422734384 -104.9412107 39.7760266 -104.9389896 39.7761403
-13892 6448 6992 0.620734926195411 0.620734926195411 -104.9389896 39.7761403 -104.9317318 39.7759184
-13893 6992 2116 0.412221337604484 0.412221337604484 -104.9317318 39.7759184 -104.9269816 39.7752742
-13894 2116 7665 0.206015761732372 0.206015761732372 -104.9269816 39.7752742 -104.9246092 39.7749454
-13935 9237 254 0.129619446290563 0.129619446290563 -105.0252103 39.7368379 -105.0251543 39.7380028
-13895 7665 9224 1.85930539190202 1.85930539190202 -104.9246092 39.7749454 -104.9032561 39.7717429
-13896 9225 2398 0.224331288063009 0.224331288063009 -104.9407352 39.7758674 -104.940632 39.7738515
-13897 2398 6361 0.106327129111224 0.106327129111224 -104.940632 39.7738515 -104.9406234 39.7728953
-17281 7311 3273 0.201986093156211 0.201986093156211 -104.9599932 39.7020401 -104.9599985 39.7038566
-13899 6446 9223 0.123505309386589 0.123505309386589 -104.9423252 39.7753195 -104.9412107 39.7760266
-13901 8984 8975 0.295278766625452 0.295278766625452 -104.9895148 39.78054 -104.9895886 39.7778851
-13903 8980 8981 0.155353173279186 0.155353173279186 -104.9891666 39.780555 -104.9891558 39.7819521
-13905 9226 8104 0.184150710275748 0.184150710275748 -104.9902648 39.7768461 -104.9912065 39.7783357
-13907 9227 6946 0.038429344582371 0.038429344582371 -104.9603013 39.7815888 -104.9602903 39.7819343
-13912 6380 9229 0.104471273298691 0.104471273298691 -104.9592745 39.7805291 -104.9604654 39.7803167
-14662 9412 9300 0.189453948637121 0.189453948637121 -104.9723458 39.7272828 -104.9723445 39.725579
-13916 566 9231 1.43965285379934 1.43965285379934 -104.9751917 39.6906986 -104.9602821 39.6846997
-13917 9136 9232 0.238873404598648 0.238873404598648 -104.9910031 39.7032246 -104.9889072 39.7018052
-13920 483 7284 0.0730945677376631 0.0730945677376631 -104.9859077 39.7013296 -104.9857206 39.701971
-13928 278 6916 0.0415405366115252 0.0415405366115252 -104.9876105 39.7785645 -104.9878486 39.7782388
-13930 9235 9236 0.360270886139133 0.360270886139133 -104.9733535 39.7400168 -104.9733996 39.7432566
-13931 9236 2883 0.0595125074168401 0.0595125074168401 -104.9733996 39.7432566 -104.9733956 39.7437918
-13936 254 8324 0.235611866233999 0.235611866233999 -105.0251543 39.7380028 -105.0252084 39.7401213
-13938 8324 8310 0.066787627422688 0.066787627422688 -105.0252084 39.7401213 -105.0251999 39.7407219
-13940 8310 9241 0.146021189936251 0.146021189936251 -105.0251999 39.7407219 -105.0252006 39.7420351
-13944 9099 7796 0.300588795121337 0.300588795121337 -105.0181659 39.7251883 -105.014664 39.7254193
-13948 9244 9113 0.144188675545464 0.144188675545464 -105.0110505 39.7257692 -105.0127328 39.7256834
-13950 9106 9244 0.0499156662848634 0.0499156662848634 -105.0104669 39.7257758 -105.0110505 39.7257692
-13952 9245 9246 0.123118530171941 0.123118530171941 -105.0114282 39.7264425 -105.0126992 39.7269625
-13954 405 406 0.0103894659763889 0.0103894659763889 -105.0106325 39.7261211 -105.0107416 39.7261622
-13955 406 9245 0.0664778537431541 0.0664778537431541 -105.0107416 39.7261622 -105.0114282 39.7264425
-13957 407 9033 0.137547423766831 0.137547423766831 -105.0123607 39.72372 -105.0111765 39.722883
-17289 5839 7744 0.201433070586795 0.201433070586795 -104.9518032 39.6911405 -104.9517894 39.689329
-13965 9097 9248 0.39480102328572 0.39480102328572 -105.0162433 39.7250562 -105.0138229 39.7280796
-13966 9248 9249 0.0955291664142426 0.0955291664142426 -105.0138229 39.7280796 -105.0143117 39.7288521
-13968 9246 9248 0.157049002786803 0.157049002786803 -105.0126992 39.7269625 -105.0138229 39.7280796
-13976 3952 9252 0.0592126025244243 0.0592126025244243 -105.0002004 39.7289098 -105.0008928 39.7289115
-13977 9252 5605 0.0597855652504274 0.0597855652504274 -105.0008928 39.7289115 -105.0015919 39.7289132
-13978 5605 9253 0.0521408060475983 0.0521408060475983 -105.0015919 39.7289132 -105.0022016 39.7289106
-13979 9253 3728 0.0545524879363147 0.0545524879363147 -105.0022016 39.7289106 -105.0028395 39.7289078
-13981 7951 7949 0.019092168905179 0.019092168905179 -104.9733887 39.7147202 -104.9733887 39.7145485
-13983 7949 3093 0.182702780383174 0.182702780383174 -104.9733887 39.7145485 -104.9733669 39.7129055
-15893 9254 9255 0.183718623774573 0.183718623774573 -105.0398207 39.7341944 -105.0419691 39.7342088
-13984 3093 3203 0.200818235908537 0.200818235908537 -104.9733669 39.7129055 -104.9733702 39.7110995
-13985 3203 6116 0.201635970571119 0.201635970571119 -104.9733702 39.7110995 -104.9733887 39.7092862
-13986 6116 1913 0.201179241726354 0.201179241726354 -104.9733887 39.7092862 -104.9733715 39.707477
-13987 1913 9219 0.201184980777767 0.201184980777767 -104.9733715 39.707477 -104.9733715 39.7056677
-13988 9219 463 0.200400773809621 0.200400773809621 -104.9733715 39.7056677 -104.9733885 39.7038655
-13989 463 7301 0.202731579470961 0.202731579470961 -104.9733885 39.7038655 -104.9734144 39.7020424
-13990 7301 49 0.204762753950758 0.204762753950758 -104.9734144 39.7020424 -104.9733927 39.700201
-13991 49 3548 0.19703986640102 0.19703986640102 -104.9733927 39.700201 -104.9734042 39.698429
-13992 3548 4243 0.201964288701916 0.201964288701916 -104.9734042 39.698429 -104.97343 39.6966128
-13993 4243 1803 0.208102375283595 0.208102375283595 -104.97343 39.6966128 -104.9734222 39.6947413
-13994 1803 8711 0.194851559567089 0.194851559567089 -104.9734222 39.6947413 -104.973438 39.692989
-13995 8711 5841 0.20424687376631 0.20424687376631 -104.973438 39.692989 -104.973423 39.6911522
-17660 586 8936 0.0435552950105704 0.0435552950105704 -104.9889771 39.7829454 -104.9889754 39.7833371
-13997 434 8731 0.0205731062854678 0.0205731062854678 -104.973423 39.6905908 -104.9734316 39.6904059
-13999 3219 3112 0.203925882799295 0.203925882799295 -104.9592972 39.7111077 -104.959135 39.7129374
-14000 3112 3641 0.260678130684959 0.260678130684959 -104.959135 39.7129374 -104.9590835 39.7152814
-14001 3641 9256 0.0279085029397156 0.0279085029397156 -104.9590835 39.7152814 -104.9590749 39.7155323
-14003 9257 8801 0.0249979934697134 0.0249979934697134 -104.9590619 39.7158623 -104.9590492 39.7160869
-14665 4752 4167 0.209025457745472 0.209025457745472 -104.9723195 39.7219606 -104.9723279 39.7200808
-14005 9256 9257 0.0367111693692818 0.0367111693692818 -104.9590749 39.7155323 -104.9590619 39.7158623
-14007 9258 3642 0.0274131048639432 0.0274131048639432 -104.9592928 39.7155013 -104.9593067 39.715255
-14008 3642 9259 0.086632322467807 0.086632322467807 -104.9593067 39.715255 -104.9593096 39.7144759
-14009 9259 3111 0.171051850512145 0.171051850512145 -104.9593096 39.7144759 -104.9593153 39.7129376
-14010 3111 3219 0.203481486479522 0.203481486479522 -104.9593153 39.7129376 -104.9592972 39.7111077
-14012 7158 9258 0.038998695665846 0.038998695665846 -104.9592875 39.715852 -104.9592928 39.7155013
-14014 3219 6126 0.202012344464496 0.202012344464496 -104.9592972 39.7111077 -104.959313 39.709291
-14015 6126 1929 0.202386985868189 0.202386985868189 -104.959313 39.709291 -104.9593208 39.7074709
-14016 1929 2919 0.0171463622508283 0.0171463622508283 -104.9593208 39.7074709 -104.9593201 39.7073167
-14017 2919 7250 0.183561589747783 0.183561589747783 -104.9593201 39.7073167 -104.959313 39.7056659
-14018 7250 3274 0.20118632596822 0.20118632596822 -104.959313 39.7056659 -104.9593216 39.7038566
-14019 3274 7312 0.203193267560765 0.203193267560765 -104.9593216 39.7038566 -104.959341 39.7020293
-14021 9260 9157 0.0588873613464273 0.0588873613464273 -104.9954471 39.7027842 -104.9952014 39.7022895
-14022 9157 6253 0.473629275671798 0.473629275671798 -104.9952014 39.7022895 -104.9926817 39.6984968
-14023 6253 9167 0.20379925953003 0.20379925953003 -104.9926817 39.6984968 -104.9929494 39.6966756
-14024 9167 231 0.364607283214556 0.364607283214556 -104.9929494 39.6966756 -104.9941166 39.693522
-14026 9171 2308 0.0877328075526686 0.0877328075526686 -105.019308 39.6967483 -105.0193085 39.6959593
-14027 2308 167 0.314493617652356 0.314493617652356 -105.0193085 39.6959593 -105.0193178 39.693131
-14030 6653 9263 0.598539344332022 0.598539344332022 -105.0448856 39.6967219 -105.0518813 39.6967452
-14031 5448 5975 0.113227741973857 0.113227741973857 -105.0250571 39.696733 -105.0263805 39.6967285
-14032 5975 9023 0.0895901368528646 0.0895901368528646 -105.0263805 39.6967285 -105.0274276 39.6967351
-14033 9023 4404 0.197536219691709 0.197536219691709 -105.0274276 39.6967351 -105.0297364 39.6967417
-14034 4404 7371 0.107978748074207 0.107978748074207 -105.0297364 39.6967417 -105.0309982 39.6967219
-14035 7371 6307 0.0697549406367758 0.0697549406367758 -105.0309982 39.6967219 -105.0318135 39.6967219
-14036 6307 6308 0.0220857912106748 0.0220857912106748 -105.0318135 39.6967219 -105.0320716 39.6967254
-14037 6308 4316 0.20668661359579 0.20668661359579 -105.0320716 39.6967254 -105.03444 39.6970917
-14038 4316 4503 0.0921482766473363 0.0921482766473363 -105.03444 39.6970917 -105.0355129 39.6971643
-14039 4503 7814 0.109821870874264 0.109821870874264 -105.0355129 39.6971643 -105.0366887 39.6967681
-14040 7814 5079 0.102137328159445 0.102137328159445 -105.0366887 39.6967681 -105.0378823 39.6967518
-14041 5079 8013 0.0998289131041121 0.0998289131041121 -105.0378823 39.6967518 -105.0390491 39.6967549
-14042 8013 6832 0.10065041616734 0.10065041616734 -105.0390491 39.6967549 -105.0402255 39.6967584
-14043 6832 6975 0.0990932842629603 0.0990932842629603 -105.0402255 39.6967584 -105.0413837 39.6967549
-14044 6975 7945 0.100601003970672 0.100601003970672 -105.0413837 39.6967549 -105.0425595 39.6967615
-14045 7945 6364 0.097675013601381 0.097675013601381 -105.0425595 39.6967615 -105.0437011 39.6967681
-14049 9264 9265 0.128352927336665 0.128352927336665 -105.0016904 39.7220846 -105.0016701 39.7209304
-14051 3219 5061 0.0565378582983479 0.0565378582983479 -104.9592972 39.7111077 -104.9586363 39.7111011
-14052 5061 4916 0.0521329784642155 0.0521329784642155 -104.9586363 39.7111011 -104.9580269 39.7110945
-17662 488 10160 0.037999512945138 0.037999512945138 -104.9855724 39.7800624 -104.986015 39.7800954
-14053 4916 5228 0.130202288917824 0.130202288917824 -104.9580269 39.7110945 -104.9565077 39.7110219
-14054 5228 5106 0.0572735085516971 0.0572735085516971 -104.9565077 39.7110219 -104.9558382 39.7110153
-14055 5106 5229 0.0124802378810982 0.0124802378810982 -104.9558382 39.7110153 -104.9556923 39.7110153
-14056 5229 4995 0.288542415463076 0.288542415463076 -104.9556923 39.7110153 -104.9523191 39.7110153
-14057 4995 9266 0.20116472075537 0.20116472075537 -104.9523191 39.7110153 -104.9499674 39.7110094
-14666 4167 6326 0.178657902009272 0.178657902009272 -104.9723279 39.7200808 -104.9722942 39.7184743
-14058 9266 7066 0.0118986523075564 0.0118986523075564 -104.9499674 39.7110094 -104.9498283 39.711009
-14059 7066 3636 0.140199736242294 0.140199736242294 -104.9498283 39.711009 -104.9481992 39.7111474
-14061 9266 6351 0.197550871457279 0.197550871457279 -104.9499674 39.7110094 -104.9499571 39.7092328
-14063 2574 5103 0.0764020591743967 0.0764020591743967 -104.949965 39.7089952 -104.9499914 39.7083084
-14065 7930 1893 0.0520626532677435 0.0520626532677435 -104.949883 39.707468 -104.9497942 39.7070048
-14066 1893 2315 0.115168818798466 0.115168818798466 -104.9497942 39.7070048 -104.9499657 39.7059775
-14068 7341 6156 0.0983814711715662 0.0983814711715662 -104.9316369 39.7113211 -104.932787 39.7113277
-14069 6156 6290 0.0991170792397538 0.0991170792397538 -104.932787 39.7113277 -104.9339457 39.7113343
-14070 6290 3116 0.0983982120263374 0.0983982120263374 -104.9339457 39.7113343 -104.9350959 39.7113475
-14072 6673 8185 0.0325158694936318 0.0325158694936318 -104.9362583 39.7113747 -104.936636 39.7114077
-14074 3188 9268 0.0244851420549388 0.0244851420549388 -104.9461736 39.7114973 -104.946452 39.7115485
-14075 9268 8800 0.0276968906605859 0.0276968906605859 -104.946452 39.7115485 -104.9467659 39.7116096
-14077 6718 9269 0.103071842817105 0.103071842817105 -104.9425631 39.711506 -104.9413612 39.7114399
-14078 9269 8160 0.0477581921413061 0.0477581921413061 -104.9413612 39.7114399 -104.9408036 39.7114181
-14080 7342 3492 0.198422050793999 0.198422050793999 -104.9316306 39.711189 -104.929311 39.7111767
-14081 3492 9270 0.0991145839577047 0.0991145839577047 -104.929311 39.7111767 -104.9281523 39.7111767
-17664 10161 6173 0.109897620785603 0.109897620785603 -104.9856475 39.7795327 -104.9843627 39.779576
-14082 9270 5386 0.100577308895159 0.100577308895159 -104.9281523 39.7111767 -104.9269765 39.7111767
-14083 5386 9271 0.100588544879537 0.100588544879537 -104.9269765 39.7111767 -104.9258006 39.7111701
-14084 9271 6817 0.101321511979085 0.101321511979085 -104.9258006 39.7111701 -104.9246161 39.7111701
-14160 7023 7393 0.135757251453186 0.135757251453186 -105.0315207 39.751179 -105.0331086 39.7511922
-14161 7393 9272 0.0789156635630832 0.0789156635630832 -105.0331086 39.7511922 -105.0340317 39.7511922
-14166 9278 7444 0.0517309727495982 0.0517309727495982 -105.0363599 39.7511906 -105.036965 39.7511936
-14129 9279 9280 0.186364690747119 0.186364690747119 -104.9490944 39.7475193 -104.9512562 39.7473041
-14085 6817 9273 5.01601743028969 5.01601743028969 -104.9246161 39.7111701 -104.8659769 39.710981
-14086 9274 6816 4.59997811614881 4.59997811614881 -104.8708565 39.7101192 -104.9246085 39.7113484
-14088 2943 5348 0.200890409378397 0.200890409378397 -104.9258054 39.711367 -104.9281539 39.71136
-14089 5348 3491 0.0990328236882064 0.0990328236882064 -104.9281539 39.71136 -104.9293114 39.7113416
-14090 3491 2849 0.0998105211493863 0.0998105211493863 -104.9293114 39.7113416 -104.9304782 39.7113343
-14091 2849 7341 0.0991252344530307 0.0991252344530307 -104.9304782 39.7113343 -104.9316369 39.7113211
-14093 9271 6103 0.208876201356377 0.208876201356377 -104.9258006 39.7111701 -104.9258215 39.7092917
-14095 9270 6098 0.16565447863601 0.16565447863601 -104.9281523 39.7111767 -104.928134 39.709687
-14096 6098 9275 0.0444779706577198 0.0444779706577198 -104.928134 39.709687 -104.928134 39.709287
-14097 9269 6101 0.238835584318973 0.238835584318973 -104.9413612 39.7114399 -104.9413615 39.709292
-17799 10180 8536 0.0726583525558809 0.0726583525558809 -104.9873951 39.7535866 -104.987378 39.7529333
-14099 8294 9276 0.192103991232145 0.192103991232145 -104.9942907 39.754326 -104.9957422 39.7556449
-14101 4423 9277 0.533016938094048 0.533016938094048 -105.0057667 39.7600738 -105.0019955 39.7638914
-14138 9282 9283 0.384483999025896 0.384483999025896 -104.9667713 39.7808486 -104.9624039 39.7800174
-14146 4993 9288 0.0718457938229626 0.0718457938229626 -105.0163127 39.7513508 -105.0171434 39.7512529
-14148 9288 471 0.0203590276008878 0.0203590276008878 -105.0171434 39.7512529 -105.017379 39.7512262
-14149 471 6430 0.0161743745423695 0.0161743745423695 -105.017379 39.7512262 -105.0175669 39.7512092
-14150 6430 4655 0.1348214737413 0.1348214737413 -105.0175669 39.7512092 -105.0191439 39.7512186
-14151 4655 1277 0.119151021074222 0.119151021074222 -105.0191439 39.7512186 -105.020537 39.751186
-14152 1277 4528 0.128606742393323 0.128606742393323 -105.020537 39.751186 -105.022041 39.751211
-14153 4528 9289 0.132757697104501 0.132757697104501 -105.022041 39.751211 -105.0235939 39.7512075
-14154 9289 9290 0.133347126872573 0.133347126872573 -105.0235939 39.7512075 -105.0251537 39.7512091
-14155 9290 9291 0.0102673262572307 0.0102673262572307 -105.0251537 39.7512091 -105.0252738 39.7512091
-14156 9291 6745 0.131970868855064 0.131970868855064 -105.0252738 39.7512091 -105.0268172 39.7511856
-14157 6745 6145 0.131356474267846 0.131356474267846 -105.0268172 39.7511856 -105.0283535 39.7512054
-14158 6145 4019 0.135781040149455 0.135781040149455 -105.0283535 39.7512054 -105.0299414 39.751179
-14159 4019 7023 0.135014116939136 0.135014116939136 -105.0299414 39.751179 -105.0315207 39.751179
-14162 9272 3401 0.0502252760733361 0.0502252760733361 -105.0340317 39.7511922 -105.0346192 39.7511922
-14163 3401 9220 0.0499780107614713 0.0499780107614713 -105.0346192 39.7511922 -105.0352038 39.7511899
-17968 8778 10231 0.0192769916187002 0.0192769916187002 -104.9874654 39.72522 -104.9876908 39.725221
-14164 9220 8375 0.0494394335916504 0.0494394335916504 -105.0352038 39.7511899 -105.0357821 39.7511876
-14165 8375 9278 0.0493971533103994 0.0493971533103994 -105.0357821 39.7511876 -105.0363599 39.7511906
-14167 7444 9292 0.0498509119548639 0.0498509119548639 -105.036965 39.7511936 -105.0375481 39.7511898
-14168 9292 7161 0.0504322249542888 0.0504322249542888 -105.0375481 39.7511898 -105.038138 39.751186
-14169 7161 9293 0.049549545616498 0.049549545616498 -105.038138 39.751186 -105.0387175 39.7511941
-14671 5473 9414 0.169600878974653 0.169600878974653 -104.9701135 39.7384072 -104.9700963 39.736882
-14170 9293 7773 0.0509361632349417 0.0509361632349417 -105.0387175 39.7511941 -105.0393133 39.7511908
-14171 7773 9039 0.0499454477956979 0.0499454477956979 -105.0393133 39.7511908 -105.0398975 39.7511951
-14172 9039 1114 0.0547655871790504 0.0547655871790504 -105.0398975 39.7511951 -105.040538 39.751186
-14173 1114 9294 0.0447798115689078 0.0447798115689078 -105.040538 39.751186 -105.0410618 39.7511847
-14174 9294 7494 0.0527731793085291 0.0527731793085291 -105.0410618 39.7511847 -105.0416791 39.7511831
-14175 7494 9170 0.0488063990880333 0.0488063990880333 -105.0416791 39.7511831 -105.04225 39.7511845
-14176 9170 3836 0.0502683027746479 0.0502683027746479 -105.04225 39.7511845 -105.042838 39.751186
-14180 7818 2938 0.0876396467302253 0.0876396467302253 -104.9257985 39.7038513 -104.9247744 39.7038309
-14181 2938 6809 0.0888992165922937 0.0888992165922937 -104.9247744 39.7038309 -104.9237358 39.7038573
-14182 6809 1960 0.772041478396669 0.772041478396669 -104.9237358 39.7038573 -104.9147112 39.7038545
-17800 8536 8859 0.0293889142934455 0.0293889142934455 -104.987378 39.7529333 -104.9873914 39.7526692
-14183 1960 9295 0.960771522024492 0.960771522024492 -104.9147112 39.7038545 -104.9034805 39.70387
-14184 7571 9296 0.161476693063143 0.161476693063143 -104.9862197 39.7256409 -104.9850256 39.724516
-14185 9296 8888 0.0634729683022204 0.0634729683022204 -104.9850256 39.724516 -104.984536 39.724087
-14187 9297 6334 0.0129309336441387 0.0129309336441387 -104.9852863 39.7256333 -104.9851351 39.7256329
-14188 6334 7083 0.0225608570291498 0.0225608570291498 -104.9851351 39.7256329 -104.9848713 39.7256319
-14189 7083 8784 0.107920119748436 0.107920119748436 -104.9848713 39.7256319 -104.9836094 39.725629
-14190 8784 8791 0.106332666658533 0.106332666658533 -104.9836094 39.725629 -104.9823661 39.725621
-14191 8791 3157 0.106749034536814 0.106749034536814 -104.9823661 39.725621 -104.9811181 39.7256387
-14192 3157 4976 0.101195319793441 0.101195319793441 -104.9811181 39.7256387 -104.9799349 39.7256286
-14193 4976 9298 0.0996902493641346 0.0996902493641346 -104.9799349 39.7256286 -104.9787693 39.7256185
-14194 9298 9299 0.104226329823663 0.104226329823663 -104.9787693 39.7256185 -104.9775506 39.725614
-14195 9299 6538 0.0493134523648135 0.0493134523648135 -104.9775506 39.725614 -104.976974 39.7256103
-14196 6538 5048 0.0489874238643872 0.0489874238643872 -104.976974 39.7256103 -104.9764012 39.725608
-14197 5048 8001 0.0994531494791736 0.0994531494791736 -104.9764012 39.725608 -104.9752384 39.7255962
-14198 8001 985 0.0994551795792203 0.0994551795792203 -104.9752384 39.7255962 -104.9740756 39.7255831
-14199 985 5104 0.0491411684949994 0.0491411684949994 -104.9740756 39.7255831 -104.973501 39.7255812
-14201 8831 9300 0.0488242916251385 0.0488242916251385 -104.9729154 39.7255792 -104.9723445 39.725579
-14202 9300 7149 0.0497002324101769 0.0497002324101769 -104.9723445 39.725579 -104.9717634 39.7255844
-14203 7149 2393 0.0492946529104208 0.0492946529104208 -104.9717634 39.7255844 -104.971187 39.7255843
-14204 2393 5115 0.0502354677891233 0.0502354677891233 -104.971187 39.7255843 -104.9705996 39.7255851
-14205 5115 9301 0.0497154080261439 0.0497154080261439 -104.9705996 39.7255851 -104.9700183 39.7255888
-14206 9301 4714 0.049399080188397 0.049399080188397 -104.9700183 39.7255888 -104.9694407 39.7255926
-14207 4714 8872 0.0991624253785381 0.0991624253785381 -104.9694407 39.7255926 -104.9682812 39.7255941
-14208 8872 7353 0.0988972303255353 0.0988972303255353 -104.9682812 39.7255941 -104.9671248 39.7255931
-14209 7353 5412 0.107964313206197 0.107964313206197 -104.9671248 39.7255931 -104.9658624 39.7255988
-14210 5412 3145 0.0906444248702148 0.0906444248702148 -104.9658624 39.7255988 -104.9648025 39.7256
-14211 3145 3919 0.0988223626592478 0.0988223626592478 -104.9648025 39.7256 -104.963647 39.7256059
-18204 6875 8356 0.205977621151269 0.205977621151269 -105.0363465 39.7658167 -105.0363437 39.7639643
-14212 3919 3918 0.0189862588635382 0.0189862588635382 -104.963647 39.7256059 -104.963425 39.7256047
-14213 3918 1010 0.0826936905404967 0.0826936905404967 -104.963425 39.7256047 -104.9624581 39.7255985
-14214 1010 6261 0.0974734196824701 0.0974734196824701 -104.9624581 39.7255985 -104.9613184 39.7256069
-14215 6261 8730 0.0989075877241795 0.0989075877241795 -104.9613184 39.7256069 -104.9601619 39.7256124
-14216 8730 7153 0.0605847994240266 0.0605847994240266 -104.9601619 39.7256124 -104.9594535 39.725616
-14217 7153 5021 0.0499889577891061 0.0499889577891061 -104.9594535 39.725616 -104.958869 39.7256124
-14218 5021 9302 0.0549823108734392 0.0549823108734392 -104.958869 39.7256124 -104.9582261 39.7256145
-14219 9302 3342 0.0335617577180335 0.0335617577180335 -104.9582261 39.7256145 -104.9578337 39.7256186
-14220 3342 3352 0.0674788037125104 0.0674788037125104 -104.9578337 39.7256186 -104.9570447 39.7256136
-14221 3352 7886 0.0299418452790484 0.0299418452790484 -104.9570447 39.7256136 -104.9566946 39.7256155
-14222 7886 7319 0.0732493043433617 0.0732493043433617 -104.9566946 39.7256155 -104.9558381 39.7256145
-14223 7319 7320 0.0259215863697348 0.0259215863697348 -104.9558381 39.7256145 -104.955535 39.7256145
-14224 7320 7977 0.0775267077551995 0.0775267077551995 -104.955535 39.7256145 -104.9546285 39.7256103
-14225 7977 7980 0.0233987016260196 0.0233987016260196 -104.9546285 39.7256103 -104.9543549 39.7256103
-14226 7980 2061 0.0796038188827741 0.0796038188827741 -104.9543549 39.7256103 -104.9534241 39.7256124
-14227 2061 8870 0.0167451229489977 0.0167451229489977 -104.9534241 39.7256124 -104.9532283 39.7256124
-14228 8870 2647 0.0876006586657796 0.0876006586657796 -104.9532283 39.7256124 -104.952204 39.7256088
-14229 2647 8860 0.0114861984991212 0.0114861984991212 -104.952204 39.7256088 -104.9520697 39.7256077
-14231 4113 8862 0.00848374045935965 0.00848374045935965 -104.9509997 39.7256047 -104.9509005 39.7256047
-14232 8862 8687 0.0949896568056219 0.0949896568056219 -104.9509005 39.7256047 -104.9497898 39.7256083
-14234 6694 8024 0.0782864986898227 0.0782864986898227 -104.9495001 39.7256083 -104.9485847 39.7256075
-14235 8024 8017 0.0158816052839578 0.0158816052839578 -104.9485847 39.7256075 -104.948399 39.7256083
-18205 8356 10280 0.196081618210442 0.196081618210442 -105.0363437 39.7639643 -105.0363386 39.7622009
-14236 8017 7681 0.0911745487086236 0.0911745487086236 -104.948399 39.7256083 -104.9473329 39.7256083
-14237 7681 3454 0.0980849682512979 0.0980849682512979 -104.9473329 39.7256083 -104.946186 39.7256104
-14238 3454 6017 0.0971271293907499 0.0971271293907499 -104.946186 39.7256104 -104.9450503 39.7256083
-14239 6017 9303 0.0906101063303862 0.0906101063303862 -104.9450503 39.7256083 -104.9439908 39.7256083
-14240 9303 3884 0.022021804982538 0.022021804982538 -104.9439908 39.7256083 -104.9437333 39.7256083
-14241 3884 9304 0.0244079810975188 0.0244079810975188 -104.9437333 39.7256083 -104.9434479 39.7256076
-14242 9304 852 0.0462417773626911 0.0462417773626911 -104.9434479 39.7256076 -104.9429072 39.7256062
-14243 852 847 0.0318832988859635 0.0318832988859635 -104.9429072 39.7256062 -104.9425344 39.7256041
-14244 847 9305 0.0129480432587025 0.0129480432587025 -104.9425344 39.7256041 -104.942383 39.7256045
-14245 9305 7103 0.0469858120705144 0.0469858120705144 -104.942383 39.7256045 -104.9418336 39.7256059
-14246 7103 7098 0.0440436114993002 0.0440436114993002 -104.9418336 39.7256059 -104.9413186 39.7256059
-14247 7098 8567 0.0448162532507988 0.0448162532507988 -104.9413186 39.7256059 -104.940796 39.7255761
-14248 8567 8696 0.0173715559267549 0.0173715559267549 -104.940796 39.7255761 -104.9406095 39.7255142
-14249 8696 8157 0.112872102261494 0.112872102261494 -104.9406095 39.7255142 -104.9393188 39.7253022
-14251 7606 7263 0.0986452262534628 0.0986452262534628 -104.9382673 39.7253035 -104.9371139 39.7253117
-14252 7263 7596 0.0935891946661749 0.0935891946661749 -104.9371139 39.7253117 -104.9360196 39.7253179
-14253 7596 2019 0.0979493336941006 0.0979493336941006 -104.9360196 39.7253179 -104.9348743 39.7253138
-14254 2019 2009 0.0254598809515577 0.0254598809515577 -104.9348743 39.7253138 -104.9345766 39.7253138
-14255 2009 9306 0.0651506123907477 0.0651506123907477 -104.9345766 39.7253138 -104.9338148 39.7253138
-14256 9306 2765 0.0942796454050606 0.0942796454050606 -104.9338148 39.7253138 -104.9327124 39.7253158
-14257 2765 7004 0.0945020258355606 0.0945020258355606 -104.9327124 39.7253158 -104.9316074 39.7253179
-14258 7004 2269 0.094510288095609 0.094510288095609 -104.9316074 39.7253179 -104.9305023 39.7253179
-14259 2269 3597 0.0938178496086605 0.0938178496086605 -104.9305023 39.7253179 -104.9294053 39.72532
-14260 3597 7519 0.0940495689740582 0.0940495689740582 -104.9294053 39.72532 -104.9283056 39.7253241
-14261 7519 2097 0.0954278502201834 0.0954278502201834 -104.9283056 39.7253241 -104.9271898 39.7253303
-14262 2097 5979 0.093364277402532 0.093364277402532 -104.9271898 39.7253303 -104.9260981 39.7253303
-14263 5979 7668 0.0947328877466294 0.0947328877466294 -104.9260981 39.7253303 -104.9249904 39.7253323
-14264 7668 2333 0.0940581587738673 0.0940581587738673 -104.9249904 39.7253323 -104.9238906 39.7253365
-14290 7340 2847 0.0976411590956878 0.0976411590956878 -104.9316333 39.714638 -104.9304918 39.7146446
-14291 2847 3488 0.099134038329873 0.099134038329873 -104.9304918 39.7146446 -104.9293331 39.7146644
-14265 2333 9307 2.72967592410639 2.72967592410639 -104.9238906 39.7253365 -104.8919735 39.7255098
-14266 7939 9297 0.0419487931711618 0.0419487931711618 -104.9857768 39.7256351 -104.9852863 39.7256333
-14268 9308 8124 0.0322650869587369 0.0322650869587369 -104.9788375 39.7207707 -104.9790658 39.7205397
-14270 6489 4610 0.147433811602258 0.147433811602258 -104.9787322 39.7461798 -104.9787365 39.7448539
-14271 4610 9309 0.176778253451623 0.176778253451623 -104.9787365 39.7448539 -104.9787417 39.7432641
-14272 9309 9310 0.173976128689665 0.173976128689665 -104.9787417 39.7432641 -104.9787468 39.7416995
-14273 9310 661 0.00410310170227956 0.00410310170227956 -104.9787468 39.7416995 -104.9787469 39.7416626
-14274 661 9311 0.181937703339546 0.181937703339546 -104.9787469 39.7416626 -104.9787522 39.7400264
-14275 9311 9312 0.00955167864142152 0.00955167864142152 -104.9787522 39.7400264 -104.9787525 39.7399405
-14276 9312 5465 0.170285054650927 0.170285054650927 -104.9787525 39.7399405 -104.9787452 39.7384091
-14277 5465 9313 0.170744821866598 0.170744821866598 -104.9787452 39.7384091 -104.9787299 39.7368736
-14279 1959 9314 0.0338130460518869 0.0338130460518869 -104.9258263 39.7078957 -104.9258091 39.7081995
-14280 6865 9315 0.0139507857568572 0.0139507857568572 -104.9407779 39.7146468 -104.9406148 39.7146468
-14304 3303 9322 0.10510832723533 0.10510832723533 -104.9898413 39.756424 -104.9907084 39.7570942
-14282 1952 1061 0.0629715521271105 0.0629715521271105 -104.9402458 39.7146371 -104.9395162 39.7147128
-14283 1061 1698 0.0954893713474356 0.0954893713474356 -104.9395162 39.7147128 -104.9384005 39.7147427
-14284 1698 7830 0.0914331784434328 0.0914331784434328 -104.9384005 39.7147427 -104.937334 39.714687
-14285 7830 6672 0.0912502234487567 0.0912502234487567 -104.937334 39.714687 -104.9362682 39.7146512
-14287 3115 6289 0.0998478865183477 0.0998478865183477 -104.9351095 39.7146512 -104.9339422 39.7146578
-14288 6289 6153 0.0969141122634902 0.0969141122634902 -104.9339422 39.7146578 -104.9328092 39.7146512
-14289 6153 7340 0.100591515239683 0.100591515239683 -104.9328092 39.7146512 -104.9316333 39.714638
-14292 3488 5347 0.102266398355838 0.102266398355838 -104.9293331 39.7146644 -104.9281375 39.7146675
-14293 5347 5385 0.100999909961237 0.100999909961237 -104.9281375 39.7146675 -104.9269567 39.714668
-14294 5385 2941 0.100298515709498 0.100298515709498 -104.9269567 39.714668 -104.9257841 39.7146684
-14295 2941 6815 0.100200854484763 0.100200854484763 -104.9257841 39.7146684 -104.9246127 39.7146774
-14296 6815 9316 0.597950743493465 0.597950743493465 -104.9246127 39.7146774 -104.9176221 39.7147069
-14299 9318 9319 0.0328706223087289 0.0328706223087289 -104.9873865 39.7545236 -104.9876534 39.7547364
-14300 9319 9320 0.0460951861554719 0.0460951861554719 -104.9876534 39.7547364 -104.9880277 39.7550348
-14332 8959 603 0.0768028618845699 0.0768028618845699 -104.9949911 39.7695799 -104.9958065 39.7692896
-14301 9320 9321 0.0066600520489618 0.0066600520489618 -104.9880277 39.7550348 -104.9880818 39.7550779
-14302 9321 6181 0.104280480431139 0.104280480431139 -104.9880818 39.7550779 -104.9889487 39.7557377
-14303 6181 3303 0.107915728386056 0.107915728386056 -104.9889487 39.7557377 -104.9898413 39.756424
-14305 9322 7829 0.125883411444605 0.125883411444605 -104.9907084 39.7570942 -104.9917479 39.7578961
-14306 7829 9323 0.0108681676592021 0.0108681676592021 -104.9917479 39.7578961 -104.9918391 39.7579642
-14339 5536 6469 0.142307267119589 0.142307267119589 -104.9948277 39.7742296 -104.9948277 39.7755094
-14309 2191 9060 0.337657954437192 0.337657954437192 -104.9936227 39.759356 -104.9947546 39.7622653
-14312 8501 9324 0.0507516559976904 0.0507516559976904 -104.9871043 39.7524564 -104.9866859 39.7521326
-14313 9324 8418 0.0529402152835436 0.0529402152835436 -104.9866859 39.7521326 -104.986246 39.7517975
-14314 8418 9204 0.0536170041098827 0.0536170041098827 -104.986246 39.7517975 -104.9858044 39.7514551
-16428 9891 9892 0.0636662665142278 0.0636662665142278 -104.9688482 39.696672 -104.9695204 39.6969176
-14316 9204 8416 0.0537868101405785 0.0537868101405785 -104.9858044 39.7514551 -104.9853609 39.751112
-14317 8416 4388 0.0529171329453403 0.0529171329453403 -104.9853609 39.751112 -104.9849232 39.7507755
-14318 4388 9325 0.0509479826022637 0.0509479826022637 -104.9849232 39.7507755 -104.9845026 39.7504509
-14319 9325 3012 0.0488022545854277 0.0488022545854277 -104.9845026 39.7504509 -104.9840976 39.7501416
-14320 3012 9326 0.0106897373905654 0.0106897373905654 -104.9840976 39.7501416 -104.9840104 39.7500727
-14321 9326 9327 0.0465239604768105 0.0465239604768105 -104.9840104 39.7500727 -104.9836296 39.7497738
-14322 9327 5968 0.0526629141875595 0.0526629141875595 -104.9836296 39.7497738 -104.9831894 39.7494425
-14323 5968 7574 0.106363762970419 0.106363762970419 -104.9831894 39.7494425 -104.982314 39.7487628
-14324 7574 3677 0.190331060201359 0.190331060201359 -104.982314 39.7487628 -104.980751 39.7475439
-14326 604 9328 0.0383191315904674 0.0383191315904674 -104.9964331 39.7692764 -104.9959868 39.7692435
-14327 9328 8962 0.0878512488922689 0.0878512488922689 -104.9959868 39.7692435 -104.9951474 39.7687875
-14336 2420 3233 0.140764271648617 0.140764271648617 -104.9948281 39.7704903 -104.9948707 39.7717558
-14337 3233 5753 0.137661630591373 0.137661630591373 -104.9948707 39.7717558 -104.9948482 39.7729937
-14338 5753 5536 0.137436976875483 0.137436976875483 -104.9948482 39.7729937 -104.9948277 39.7742296
-14340 6469 8679 0.121371092902246 0.121371092902246 -104.9948277 39.7755094 -104.9948199 39.7766009
-14341 8679 9329 0.0309595800848719 0.0309595800848719 -104.9948199 39.7766009 -104.9948053 39.7768791
-20573 10860 10861 0.0279030600601915 0.0279030600601915 -105.02457 39.7611148 -105.0248964 39.7611186
-14342 6914 8116 0.133600464645887 0.133600464645887 -105.0111738 39.7765593 -105.0111288 39.7777603
-14343 8116 2483 0.133445859176034 0.133445859176034 -105.0111288 39.7777603 -105.0111233 39.7789604
-14344 2483 2482 0.047686047945258 0.047686047945258 -105.0111233 39.7789604 -105.0111147 39.7793892
-14345 2482 2821 0.0880230568241511 0.0880230568241511 -105.0111147 39.7793892 -105.0111319 39.7801807
-14346 2821 1413 0.131238509050086 0.131238509050086 -105.0111319 39.7801807 -105.0110892 39.7813605
-14347 1413 1353 0.132733599584258 0.132733599584258 -105.0110892 39.7813605 -105.0110864 39.7825542
-14348 1353 7767 0.0733149237137966 0.0733149237137966 -105.0110864 39.7825542 -105.0110634 39.7832133
-14350 6729 2454 0.137919009046371 0.137919009046371 -105.0111874 39.7692764 -105.0111996 39.7705167
-14351 2454 3222 0.134234515444875 0.134234515444875 -105.0111996 39.7705167 -105.0111996 39.7717239
-14352 3222 5743 0.134597141931663 0.134597141931663 -105.0111996 39.7717239 -105.0112253 39.7729342
-14353 5743 5520 0.133175062767026 0.133175062767026 -105.0112253 39.7729342 -105.0112082 39.7741318
-14355 6454 6914 0.135018185869381 0.135018185869381 -105.0112167 39.7753455 -105.0111738 39.7765593
-14358 9331 5721 0.0487615183925519 0.0487615183925519 -105.0351853 39.7838062 -105.0357498 39.7838704
-14359 5721 7455 0.0500566721474228 0.0500566721474228 -105.0357498 39.7838704 -105.0363356 39.7838724
-14360 7455 7439 0.0502188861539984 0.0502188861539984 -105.0363356 39.7838724 -105.0369233 39.7838741
-14361 7439 9332 0.0497229240568787 0.0497229240568787 -105.0369233 39.7838741 -105.0375052 39.7838741
-14362 9332 7179 0.0495263907597367 0.0495263907597367 -105.0375052 39.7838741 -105.0380848 39.7838741
-14363 7179 6514 0.0494836674166392 0.0494836674166392 -105.0380848 39.7838741 -105.0386639 39.783874
-14364 6514 7769 0.0494751212766029 0.0494751212766029 -105.0386639 39.783874 -105.0392429 39.783874
-14365 7769 8353 0.0493044680149371 0.0493044680149371 -105.0392429 39.783874 -105.0398199 39.7838754
-14366 8353 1088 0.0496035740367965 0.0496035740367965 -105.0398199 39.7838754 -105.0404004 39.7838769
-14367 1088 9333 0.0494070055394434 0.0494070055394434 -105.0404004 39.7838769 -105.0409786 39.7838755
-18206 10280 8329 0.00812836711491393 0.00812836711491393 -105.0363386 39.7622009 -105.0363384 39.7621278
-14368 9333 7511 0.0493300687211978 0.0493300687211978 -105.0409786 39.7838755 -105.0415559 39.7838742
-14369 7511 9334 0.0505963663421883 0.0505963663421883 -105.0415559 39.7838742 -105.042148 39.7838703
-14370 9334 3859 0.0512115816031079 0.0512115816031079 -105.042148 39.7838703 -105.0427473 39.7838664
-14371 3859 7593 0.0500990561172611 0.0500990561172611 -105.0427473 39.7838664 -105.0433336 39.7838653
-14372 7593 5584 0.0522011302499861 0.0522011302499861 -105.0433336 39.7838653 -105.0439445 39.7838641
-14376 6393 4066 0.134479200667361 0.134479200667361 -105.0252309 39.747573 -105.0251451 39.7487806
-17290 7744 10084 0.402391291558362 0.402391291558362 -104.9517894 39.689329 -104.9518229 39.6857103
-14377 4066 8345 0.135023999423797 0.135023999423797 -105.0251451 39.7487806 -105.0251451 39.7499949
-14378 8345 9290 0.135014881750995 0.135014881750995 -105.0251451 39.7499949 -105.0251537 39.7512091
-14380 9290 8343 0.132811220384574 0.132811220384574 -105.0251537 39.7512091 -105.0251537 39.7524035
-14381 8343 4290 0.133533987407519 0.133533987407519 -105.0251537 39.7524035 -105.0251537 39.7536044
-14382 4290 9335 0.135902936474728 0.135902936474728 -105.0251537 39.7536044 -105.025158 39.7548266
-14383 9335 3489 0.0587665939642116 0.0587665939642116 -105.025158 39.7548266 -105.0251569 39.7553551
-14384 3489 7712 0.0755904198902593 0.0755904198902593 -105.0251569 39.7553551 -105.0251554 39.7560349
-14385 7712 27 0.134715758792357 0.134715758792357 -105.0251554 39.7560349 -105.0251661 39.7572464
-14386 27 2969 0.137103389587981 0.137103389587981 -105.0251661 39.7572464 -105.0251674 39.7584794
-14387 2969 9336 0.0109860620784292 0.0109860620784292 -105.0251674 39.7584794 -105.0251673 39.7585782
-14388 9336 9337 0.167759812178903 0.167759812178903 -105.0251673 39.7585782 -105.0251662 39.7600869
-14389 9337 9206 0.00926254133366712 0.00926254133366712 -105.0251662 39.7600869 -105.0251661 39.7601702
-14390 9206 8977 0.0113535458246787 0.0113535458246787 -105.0251661 39.7601702 -105.0251674 39.7602723
-14391 8977 8972 0.0088289433819593 0.0088289433819593 -105.0251674 39.7602723 -105.025167 39.7603517
-14392 8972 3592 0.0571990081351957 0.0571990081351957 -105.025167 39.7603517 -105.0251647 39.7608661
-14393 3592 9338 0.0469245704560806 0.0469245704560806 -105.0251647 39.7608661 -105.0251667 39.7612881
-14394 9338 9339 0.0729443531618577 0.0729443531618577 -105.0251667 39.7612881 -105.0251698 39.7619441
-14395 9339 8232 0.00668286428887123 0.00668286428887123 -105.0251698 39.7619441 -105.0251701 39.7620042
-14396 8232 9340 0.00979627303730314 0.00979627303730314 -105.0251701 39.7620042 -105.0251701 39.7620923
-14397 9340 9341 0.118389238398527 0.118389238398527 -105.0251701 39.7620923 -105.0251701 39.763157
-14398 9341 4525 0.00524840053732967 0.00524840053732967 -105.0251701 39.763157 -105.0251701 39.7632042
-14399 4525 9342 0.013599142214923 0.013599142214923 -105.0251701 39.7632042 -105.02517 39.7633265
-17917 5630 5173 0.1998812615077 0.1998812615077 -104.9856145 39.7183411 -104.9856359 39.7165436
-14400 9342 5242 0.122003116630053 0.122003116630053 -105.02517 39.7633265 -105.0251688 39.7644237
-14401 5242 6892 0.132288650893496 0.132288650893496 -105.0251688 39.7644237 -105.0251701 39.7656134
-14402 6892 9343 0.135024052446379 0.135024052446379 -105.0251701 39.7656134 -105.0251715 39.7668277
-14403 9343 1682 0.135717283468362 0.135717283468362 -105.0251715 39.7668277 -105.0251835 39.7680482
-14404 1682 9344 0.13652220484586 0.13652220484586 -105.0251835 39.7680482 -105.025201 39.7692759
-14405 9344 9345 0.105458278319657 0.105458278319657 -105.025201 39.7692759 -105.0251956 39.7702243
-14406 9345 2418 0.102009831688775 0.102009831688775 -105.0251956 39.7702243 -105.0251709 39.7711415
-14407 2418 3242 0.101232559655988 0.101232559655988 -105.0251709 39.7711415 -105.0251665 39.7720519
-14408 3242 5748 0.0982858511104491 0.0982858511104491 -105.0251665 39.7720519 -105.0251623 39.7729358
-14409 5748 374 0.0623624460797668 0.0623624460797668 -105.0251623 39.7729358 -105.0251537 39.7734966
-14410 374 5523 0.0701701821949803 0.0701701821949803 -105.0251537 39.7734966 -105.0251646 39.7741276
-14411 5523 6457 0.135950108709595 0.135950108709595 -105.0251646 39.7741276 -105.0251537 39.7753502
-14412 6457 6915 0.143043041710545 0.143043041710545 -105.0251537 39.7753502 -105.0251451 39.7766366
-14413 6915 8113 0.201708935806819 0.201708935806819 -105.0251451 39.7766366 -105.0251365 39.7784506
-14414 8113 2832 0.20096393469179 0.20096393469179 -105.0251365 39.7784506 -105.0251279 39.7802579
-14415 2832 9346 0.204633312594591 0.204633312594591 -105.0251279 39.7802579 -105.0251194 39.7820982
-14416 9346 414 0.202451705011007 0.202451705011007 -105.0251194 39.7820982 -105.025085 39.7839187
-14417 414 9347 0.0102632917291373 0.0102632917291373 -105.025085 39.7839187 -105.025085 39.784011
-14419 9348 9349 0.0562572963351917 0.0562572963351917 -105.0252787 39.756038 -105.0259368 39.7560399
-14420 9349 8300 0.00966827703924115 0.00966827703924115 -105.0259368 39.7560399 -105.0260499 39.7560402
-14421 8300 6777 0.0385409578619094 0.0385409578619094 -105.0260499 39.7560402 -105.0265007 39.7560347
-14422 6777 1544 0.0462211024255861 0.0462211024255861 -105.0265007 39.7560347 -105.0270414 39.7560347
-14423 1544 7912 0.0490573153021717 0.0490573153021717 -105.0270414 39.7560347 -105.0276151 39.7560457
-14424 7912 1233 0.049290008691593 0.049290008691593 -105.0276151 39.7560457 -105.0281917 39.7560463
-14426 6137 1235 0.0484278864865507 0.0484278864865507 -105.0287666 39.7560413 -105.0293331 39.7560445
-14427 1235 4023 0.0513600630217092 0.0513600630217092 -105.0293331 39.7560445 -105.0299339 39.7560479
-14429 9350 6747 0.132068580931606 0.132068580931606 -105.0252762 39.7536227 -105.0268211 39.7536227
-14430 6747 6147 0.133962898476652 0.133962898476652 -105.0268211 39.7536227 -105.0283879 39.7536008
-14431 6147 4021 0.132523387247295 0.132523387247295 -105.0283879 39.7536008 -105.029938 39.753586
-14432 4021 7025 0.136778977327424 0.136778977327424 -105.029938 39.753586 -105.031538 39.753586
-14433 7025 7395 0.133533581691074 0.133533581691074 -105.031538 39.753586 -105.0331 39.7535942
-14434 7395 3404 0.129273092410981 0.129273092410981 -105.0331 39.7535942 -105.0346118 39.7536209
-14437 6743 6143 0.132668974575322 0.132668974575322 -105.0268304 39.7487612 -105.0283819 39.7487852
-14439 4017 7021 0.135416440349126 0.135416440349126 -105.0299442 39.7487903 -105.0315281 39.7488001
-15949 9764 9765 0.0507119344408952 0.0507119344408952 -104.9984431 39.7056824 -104.9988186 39.7053295
-14440 7021 2253 0.0670945211351968 0.0670945211351968 -105.0315281 39.7488001 -105.0323128 39.7487906
-14441 2253 7391 0.0705505249778064 0.0705505249778064 -105.0323128 39.7487906 -105.033138 39.748786
-14442 7391 8378 0.0284601613193826 0.0284601613193826 -105.033138 39.748786 -105.0334703 39.7487707
-14443 8378 9352 0.0168078916798857 0.0168078916798857 -105.0334703 39.7487707 -105.0336669 39.7487707
-14444 9352 9164 0.0309569561418734 0.0309569561418734 -105.0336669 39.7487707 -105.034029 39.7487707
-14445 9164 3399 0.0498252251835071 0.0498252251835071 -105.034029 39.7487707 -105.0346118 39.7487707
-14446 3399 9201 0.0503897904067021 0.0503897904067021 -105.0346118 39.7487707 -105.0352011 39.7487792
-14447 9201 8373 0.0497143012199282 0.0497143012199282 -105.0352011 39.7487792 -105.0357825 39.7487876
-14448 8373 9353 0.0509790068650631 0.0509790068650631 -105.0357825 39.7487876 -105.0363784 39.7487709
-14449 9353 7441 0.0496189650212473 0.0496189650212473 -105.0363784 39.7487709 -105.0369584 39.7487546
-14450 7441 7159 0.100702050774509 0.100702050774509 -105.0369584 39.7487546 -105.0381363 39.7487551
-14451 7159 9354 0.0494661713985568 0.0494661713985568 -105.0381363 39.7487551 -105.0387149 39.7487553
-14452 9354 7771 0.0505861336269105 0.0505861336269105 -105.0387149 39.7487553 -105.0393066 39.7487556
-14453 7771 9120 0.0493839312690347 0.0493839312690347 -105.0393066 39.7487556 -105.0398842 39.7487505
-14454 9120 1112 0.0512647827333792 0.0512647827333792 -105.0398842 39.7487505 -105.0404838 39.7487453
-14455 1112 9355 0.0498795134320378 0.0498795134320378 -105.0404838 39.7487453 -105.0410672 39.7487502
-14456 9355 7492 0.0488194630548967 0.0488194630548967 -105.0410672 39.7487502 -105.0416382 39.7487551
-14457 7492 9168 0.0520827219058429 0.0520827219058429 -105.0416382 39.7487551 -105.0422474 39.7487571
-14460 9356 8961 0.0504011792295747 0.0504011792295747 -105.025291 39.7729029 -105.0258806 39.7729129
-14461 8961 3748 0.0493839208030821 0.0493839208030821 -105.0258806 39.7729129 -105.0264583 39.7729227
-14462 3748 6769 0.0968984775923487 0.0968984775923487 -105.0264583 39.7729227 -105.0275913 39.7729556
-14463 6769 6149 0.102435146849327 0.102435146849327 -105.0275913 39.7729556 -105.0287889 39.7729931
-14465 3994 7051 0.102115193238577 0.102115193238577 -105.029945 39.7730349 -105.031138 39.773086
-14466 7051 1408 0.0946641824527164 0.0946641824527164 -105.031138 39.773086 -105.032238 39.773186
-14467 1408 7388 0.085462530975882 0.085462530975882 -105.032238 39.773186 -105.033238 39.773186
-14468 7388 7384 0.0170925061959903 0.0170925061959903 -105.033238 39.773186 -105.033438 39.773186
-18773 9634 9642 0.177090825598433 0.177090825598433 -105.0008673 39.7384682 -105.0008766 39.7368756
-14469 7384 3431 0.0989346539047275 0.0989346539047275 -105.033438 39.773186 -105.0345947 39.7731502
-14470 3431 7700 0.0518438186201772 0.0518438186201772 -105.0345947 39.7731502 -105.0352012 39.7731407
-14471 7700 5704 0.048946112444104 0.048946112444104 -105.0352012 39.7731407 -105.0357738 39.7731317
-14472 5704 9357 0.0519385112225497 0.0519385112225497 -105.0357738 39.7731317 -105.0363814 39.7731219
-14473 9357 7431 0.0487842422429383 0.0487842422429383 -105.0363814 39.7731219 -105.0369521 39.7731127
-14474 7431 9358 0.0504551193593522 0.0504551193593522 -105.0369521 39.7731127 -105.0375421 39.7730965
-14475 9358 7172 0.0479047859915454 0.0479047859915454 -105.0375421 39.7730965 -105.0381026 39.7730917
-14476 7172 6792 0.0511502123352556 0.0511502123352556 -105.0381026 39.7730917 -105.038701 39.7730829
-14477 6792 7632 0.00188047440472113 0.00188047440472113 -105.038701 39.7730829 -105.038723 39.7730826
-14478 7632 7787 0.0496192518214323 0.0496192518214323 -105.038723 39.7730826 -105.0393035 39.7730745
-14480 9359 8535 0.0508077855400009 0.0508077855400009 -105.0252953 39.7710821 -105.0258888 39.7711084
-14481 8535 6765 0.145782759028854 0.145782759028854 -105.0258888 39.7711084 -105.0275931 39.7711626
-14482 6765 3990 0.201170058672575 0.201170058672575 -105.0275931 39.7711626 -105.0299456 39.7712234
-14484 1252 9360 0.0508116162596578 0.0508116162596578 -105.020531 39.7702103 -105.0211255 39.7702143
-14485 9360 2713 0.151002345273532 0.151002345273532 -105.0211255 39.7702143 -105.0228923 39.7702104
-14486 2713 9361 0.150151679268698 0.150151679268698 -105.0228923 39.7702104 -105.0246491 39.770221
-14487 9361 9345 0.0467087251829664 0.0467087251829664 -105.0246491 39.770221 -105.0251956 39.7702243
-14489 604 9362 0.304555126012675 0.304555126012675 -104.9964331 39.7692764 -104.9999965 39.7692821
-19303 10466 10464 0.0570509910756543 0.0570509910756543 -104.988856 39.7399993 -104.9888814 39.740512
-14490 9362 3931 0.0491525010465484 0.0491525010465484 -104.9999965 39.7692821 -105.0005716 39.7692834
-14491 3931 5621 0.101973762448865 0.101973762448865 -105.0005716 39.7692834 -105.0017647 39.76929
-14492 5621 3706 0.101962569966911 0.101962569966911 -105.0017647 39.76929 -105.0029577 39.76929
-14493 3706 712 0.103443032392629 0.103443032392629 -105.0029577 39.76929 -105.0041679 39.7692768
-14494 712 9192 0.0968373320357312 0.0968373320357312 -105.0041679 39.7692768 -105.0053009 39.7692702
-14495 9192 9363 0.0080975223718546 0.0080975223718546 -105.0053009 39.7692702 -105.0053953 39.7692764
-14496 9363 8516 0.0893732443225825 0.0893732443225825 -105.0053953 39.7692764 -105.006441 39.7692764
-14497 8516 4192 0.13424362136155 0.13424362136155 -105.006441 39.7692764 -105.0080117 39.7692764
-14498 4192 2518 0.136440133151325 0.136440133151325 -105.0080117 39.7692764 -105.0096081 39.7692764
-14499 2518 6729 0.134978640871206 0.134978640871206 -105.0096081 39.7692764 -105.0111874 39.7692764
-14500 6729 1227 0.0997687727623418 0.0997687727623418 -105.0111874 39.7692764 -105.0123547 39.769283
-14501 1227 4806 0.0366740513167213 0.0366740513167213 -105.0123547 39.769283 -105.0127838 39.769283
-14502 4806 4807 0.0623613194343192 0.0623613194343192 -105.0127838 39.769283 -105.0135134 39.7692764
-14503 4807 9364 0.0735708513932139 0.0735708513932139 -105.0135134 39.7692764 -105.0143742 39.7692739
-14505 2172 9365 0.10218559205586 0.10218559205586 -105.0146807 39.7692764 -105.0158763 39.7692728
-14506 9365 6421 0.131466128237451 0.131466128237451 -105.0158763 39.7692728 -105.0174145 39.7692708
-14507 6421 4627 0.133072729014262 0.133072729014262 -105.0174145 39.7692708 -105.0189715 39.7692708
-14508 4627 1251 0.132619751836754 0.132619751836754 -105.0189715 39.7692708 -105.0205232 39.7692708
-14509 1251 9366 0.0509582244384895 0.0509582244384895 -105.0205232 39.7692708 -105.0211194 39.7692754
-14510 9366 4559 0.0827794726054668 0.0827794726054668 -105.0211194 39.7692754 -105.0220879 39.769283
-14511 4559 2712 0.0689589814233185 0.0689589814233185 -105.0220879 39.769283 -105.0228947 39.7692896
-14512 2712 2728 0.0619836012735683 0.0619836012735683 -105.0228947 39.7692896 -105.0236198 39.769279
-14513 2728 9367 0.087518882590742 0.087518882590742 -105.0236198 39.769279 -105.0246438 39.769277
-14514 9367 9344 0.0476225838725891 0.0476225838725891 -105.0246438 39.769277 -105.025201 39.7692759
-14515 9344 9368 0.00985438954363147 0.00985438954363147 -105.025201 39.7692759 -105.0253163 39.7692759
-14516 9368 9369 0.0491094576501381 0.0491094576501381 -105.0253163 39.7692759 -105.0258904 39.7692943
-18778 10124 10345 0.0125614259192805 0.0125614259192805 -105.0006648 39.7400196 -105.0006728 39.7399068
-14517 9369 7774 0.00626697755243391 0.00626697755243391 -105.0258904 39.7692943 -105.0259637 39.7692958
-14518 7774 6761 0.141378168804538 0.141378168804538 -105.0259637 39.7692958 -105.0276173 39.7693294
-14519 6761 3985 0.199192140414955 0.199192140414955 -105.0276173 39.7693294 -105.0299452 39.769416
-14521 7053 7044 0.0653254811284965 0.0653254811284965 -105.0315035 39.7694414 -105.0322674 39.7694612
-14522 7044 7387 0.0682830004024069 0.0682830004024069 -105.0322674 39.7694612 -105.0330656 39.7694876
-14523 7387 3430 0.133588924605445 0.133588924605445 -105.0330656 39.7694876 -105.0346278 39.7695271
-14524 3430 7686 0.0503796411863715 0.0503796411863715 -105.0346278 39.7695271 -105.0352172 39.7695205
-14525 7686 5703 0.0508582113883613 0.0508582113883613 -105.0352172 39.7695205 -105.0358122 39.7695139
-14526 5703 9370 0.0488667197641872 0.0488667197641872 -105.0358122 39.7695139 -105.0363839 39.7695075
-14527 9370 7429 0.0516445969542144 0.0516445969542144 -105.0363839 39.7695075 -105.0369881 39.7695008
-14528 7429 9371 0.0490112318671292 0.0490112318671292 -105.0369881 39.7695008 -105.0375615 39.7694949
-14529 9371 7171 0.0508482971319457 0.0508482971319457 -105.0375615 39.7694949 -105.0381554 39.7694678
-14530 7171 7624 0.0496771306838175 0.0496771306838175 -105.0381554 39.7694678 -105.0387364 39.7694549
-14531 7624 7786 0.0493747865229187 0.0493747865229187 -105.0387364 39.7694549 -105.0393141 39.7694531
-14532 7786 6545 0.0503324450079726 0.0503324450079726 -105.0393141 39.7694531 -105.039903 39.7694505
-14533 6545 1130 0.0509050056370777 0.0509050056370777 -105.039903 39.7694505 -105.0404986 39.769448
-14534 1130 9372 0.0485943238040251 0.0485943238040251 -105.0404986 39.769448 -105.0410671 39.769441
-14535 9372 7501 0.0507738202300539 0.0507738202300539 -105.0410671 39.769441 -105.0416611 39.7694338
-14536 7501 3847 0.101870167526128 0.101870167526128 -105.0416611 39.7694338 -105.0428508 39.7693779
-14537 3847 9373 0.0504389434046066 0.0504389434046066 -105.0428508 39.7693779 -105.0434409 39.7693717
-14538 9373 5568 0.0510557052627446 0.0510557052627446 -105.0434409 39.7693717 -105.0440382 39.7693646
-14539 5568 7550 0.0950790701641584 0.0950790701641584 -105.0440382 39.7693646 -105.0451506 39.7693556
-18779 10345 10346 0.00436025817920743 0.00436025817920743 -105.0006728 39.7399068 -105.0006741 39.7398676
-14540 7550 9374 0.691166878065482 0.691166878065482 -105.0451506 39.7693556 -105.0532374 39.7693224
-14542 9375 3750 0.0991970412293978 0.0991970412293978 -105.0252653 39.7766366 -105.0264259 39.7766517
-14543 3750 6775 0.030090245676364 0.030090245676364 -105.0264259 39.7766517 -105.0267779 39.7766583
-14544 6775 6770 0.06895159402243 0.06895159402243 -105.0267779 39.7766583 -105.0275847 39.7766649
-14545 6770 6151 0.0638158634824408 0.0638158634824408 -105.0275847 39.7766649 -105.0283314 39.7766715
-14546 6151 6150 0.0359509846886602 0.0359509846886602 -105.0283314 39.7766715 -105.028752 39.776678
-14547 6150 3996 0.0963309366011696 0.0963309366011696 -105.028752 39.776678 -105.0298791 39.7766911
-14548 3996 7052 0.102479688313932 0.102479688313932 -105.0298791 39.7766911 -105.031078 39.776711
-14549 7052 7045 0.0330120960596164 0.0330120960596164 -105.031078 39.776711 -105.0314642 39.7767176
-14550 7045 1410 0.0660204937565387 0.0660204937565387 -105.0314642 39.7767176 -105.0322367 39.7767242
-14551 1410 7375 0.0682166301368544 0.0682166301368544 -105.0322367 39.7767242 -105.0330349 39.7767308
-14552 7375 7385 0.0295959064634691 0.0295959064634691 -105.0330349 39.7767308 -105.0333812 39.7767337
-14553 7385 3434 0.103723384358152 0.103723384358152 -105.0333812 39.7767337 -105.0345947 39.776752
-14554 3434 7763 0.0498679267683769 0.0498679267683769 -105.0345947 39.776752 -105.0351781 39.7767423
-14555 7763 5714 0.0489397855227354 0.0489397855227354 -105.0351781 39.7767423 -105.0357506 39.7767314
-14556 5714 9376 0.0504544990745908 0.0504544990745908 -105.0357506 39.7767314 -105.036341 39.776731
-14557 9376 7434 0.0512120959316622 0.0512120959316622 -105.036341 39.776731 -105.0369402 39.7767242
-14558 7434 9377 0.0478236988076173 0.0478236988076173 -105.0369402 39.7767242 -105.0374998 39.776721
-14559 9377 7173 0.0504644501870281 0.0504644501870281 -105.0374998 39.776721 -105.0380903 39.7767176
-14560 7173 6757 0.0487932478126772 0.0487932478126772 -105.0380903 39.7767176 -105.0386612 39.7767112
-14561 6757 7788 0.0524425771479912 0.0524425771479912 -105.0386612 39.7767112 -105.0392748 39.7767044
-14562 7788 6629 0.0465854765801166 0.0465854765801166 -105.0392748 39.7767044 -105.0398199 39.7767003
-14563 6629 1135 0.050756073904441 0.050756073904441 -105.0398199 39.7767003 -105.0404138 39.7766958
-14564 1135 6996 0.0489590899927541 0.0489590899927541 -105.0404138 39.7766958 -105.0409867 39.7766949
-14565 6996 7502 0.0500614988346772 0.0500614988346772 -105.0409867 39.7766949 -105.0415725 39.776694
-14566 7502 9378 0.0592142721743878 0.0592142721743878 -105.0415725 39.776694 -105.0422654 39.7766923
-14567 9378 9379 0.0408406813526211 0.0408406813526211 -105.0422654 39.7766923 -105.0427433 39.7766911
-14568 9379 7525 0.051644217383113 0.051644217383113 -105.0427433 39.7766911 -105.0433434 39.7766363
-14569 7525 9380 0.00488834581127681 0.00488834581127681 -105.0433434 39.7766363 -105.0434002 39.7766311
-14570 9380 9381 0.0137184453378057 0.0137184453378057 -105.0434002 39.7766311 -105.0435596 39.7766165
-14571 9381 5577 0.0352923239739852 0.0352923239739852 -105.0435596 39.7766165 -105.0439697 39.7765791
-14572 5577 9382 0.0499195542635391 0.0499195542635391 -105.0439697 39.7765791 -105.0445538 39.7765739
-14573 9382 9383 0.00207675636441744 0.00207675636441744 -105.0445538 39.7765739 -105.0445781 39.7765737
-14574 9383 9384 0.047500863548095 0.047500863548095 -105.0445781 39.7765737 -105.0451339 39.7765688
-14575 9384 9385 0.692939297157353 0.692939297157353 -105.0451339 39.7765688 -105.0532424 39.7765622
-14576 9347 9386 0.0638147684012153 0.0638147684012153 -105.025085 39.784011 -105.025085 39.7845849
-14578 9386 7985 0.00659385915044033 0.00659385915044033 -105.025085 39.7845849 -105.025085 39.7846442
-14579 7985 9389 0.0876122732807676 0.0876122732807676 -105.025085 39.7846442 -105.0251871 39.7854282
-14581 9390 9391 0.0645406329993705 0.0645406329993705 -105.0252653 39.7845914 -105.0252579 39.784011
-14583 9391 413 0.0102638039419597 0.0102638039419597 -105.0252579 39.784011 -105.0252567 39.7839187
-14584 413 9392 0.19657163498794 0.19657163498794 -105.0252567 39.7839187 -105.0252309 39.782151
-14586 2833 2489 0.134959283423391 0.134959283423391 -105.0252481 39.7802579 -105.0252567 39.7790442
-14587 2489 8106 0.133489509437131 0.133489509437131 -105.0252567 39.7790442 -105.0252567 39.7778437
-14588 8106 9375 0.13422540798818 0.13422540798818 -105.0252567 39.7778437 -105.0252653 39.7766366
-14589 9375 5534 0.213451017222507 0.213451017222507 -105.0252653 39.7766366 -105.0252738 39.774717
-14590 5534 9356 0.201724072155003 0.201724072155003 -105.0252738 39.774717 -105.025291 39.7729029
-14591 9356 9393 0.10196574773319 0.10196574773319 -105.025291 39.7729029 -105.025291 39.7719859
-14592 9393 9359 0.100498646625457 0.100498646625457 -105.025291 39.7719859 -105.0252953 39.7710821
-14593 9359 9394 0.0995312761976722 0.0995312761976722 -105.0252953 39.7710821 -105.0253203 39.7701872
-14594 9394 9368 0.101332513335273 0.101332513335273 -105.0253203 39.7701872 -105.0253163 39.7692759
-14595 9368 9395 0.0524188937894899 0.0524188937894899 -105.0253163 39.7692759 -105.0253115 39.7688045
-14597 7373 1659 0.103861210410172 0.103861210410172 -105.0253069 39.7683544 -105.0252948 39.7674204
-14598 1659 7753 0.101665764300136 0.101665764300136 -105.0252948 39.7674204 -105.0252922 39.7665061
-14599 7753 6893 0.102477314257262 0.102477314257262 -105.0252922 39.7665061 -105.0252908 39.7655845
-14600 6893 5249 0.10178809746081 0.10178809746081 -105.0252908 39.7655845 -105.0252881 39.7646691
-14601 5249 9396 0.145009648698155 0.145009648698155 -105.0252881 39.7646691 -105.0252844 39.763365
-14602 9396 5880 0.0121536325330439 0.0121536325330439 -105.0252844 39.763365 -105.0252841 39.7632557
-14603 5880 9397 0.00548191654733534 0.00548191654733534 -105.0252841 39.7632557 -105.0252842 39.7632064
-14606 8233 9399 0.00646043089308406 0.00646043089308406 -105.0252854 39.7620032 -105.0252855 39.7619451
-14607 9399 3593 0.11814466181621 0.11814466181621 -105.0252855 39.7619451 -105.0252868 39.7608826
-14608 3593 8990 0.0502713142680652 0.0502713142680652 -105.0252868 39.7608826 -105.0252879 39.7604305
-14610 8994 8444 0.0112418070839832 0.0112418070839832 -105.0252881 39.7603424 -105.0252881 39.7602413
-14611 8444 9400 0.0106637167987107 0.0106637167987107 -105.0252881 39.7602413 -105.0252875 39.7601454
-14612 9400 9401 0.175022698409133 0.175022698409133 -105.0252875 39.7601454 -105.025278 39.7585714
-14613 9401 2970 0.0101077489563562 0.0101077489563562 -105.025278 39.7585714 -105.0252774 39.7584805
-15358 9566 9564 0.0244609132808449 0.0244609132808449 -104.9656611 39.7170239 -104.9659399 39.7170729
-15359 9564 9567 0.0131773798008107 0.0131773798008107 -104.9659399 39.7170729 -104.9660929 39.717059
-18780 10346 10347 0.0407216504299826 0.0407216504299826 -105.0006741 39.7398676 -105.0006789 39.7395014
-14614 2970 8339 0.136426769448966 0.136426769448966 -105.0252774 39.7584805 -105.0252854 39.7572536
-14615 8339 9348 0.135169766224191 0.135169766224191 -105.0252854 39.7572536 -105.0252787 39.756038
-17064 4880 9474 0.196578675384766 0.196578675384766 -104.9616527 39.7350527 -104.9616204 39.7368204
-14616 9348 9402 0.134813162708373 0.134813162708373 -105.0252787 39.756038 -105.0252747 39.7548256
-14618 9350 8341 0.135569890655856 0.135569890655856 -105.0252762 39.7536227 -105.0252824 39.7524035
-14619 8341 9291 0.132813255317002 0.132813255317002 -105.0252824 39.7524035 -105.0252738 39.7512091
-14620 9291 9403 0.135124075128598 0.135124075128598 -105.0252738 39.7512091 -105.0252739 39.7499939
-14621 9403 9351 0.135070525267418 0.135070525267418 -105.0252739 39.7499939 -105.0252652 39.7487792
-14622 9351 6393 0.134155373542404 0.134155373542404 -105.0252652 39.7487792 -105.0252309 39.747573
-14624 9393 8920 0.0508713694865286 0.0508713694865286 -105.025291 39.7719859 -105.0258859 39.7720013
-14625 8920 6767 0.14583235659915 0.14583235659915 -105.0258859 39.7720013 -105.0275913 39.7720453
-14626 6767 3992 0.20138079206452 0.20138079206452 -105.0275913 39.7720453 -105.0299454 39.772124
-14628 9389 6049 0.0198174454501223 0.0198174454501223 -105.0251871 39.7854282 -105.0251957 39.7856063
-14629 6049 5790 0.202409458864074 0.202409458864074 -105.0251957 39.7856063 -105.0252043 39.7874266
-14630 5790 9404 0.390889741592557 0.390889741592557 -105.0252043 39.7874266 -105.0251785 39.7909419
-14631 9389 8000 0.0874325326194809 0.0874325326194809 -105.0251871 39.7854282 -105.0252653 39.7846442
-14632 8000 9390 0.00587109212749533 0.00587109212749533 -105.0252653 39.7846442 -105.0252653 39.7845914
-14634 9405 9387 0.104292734331338 0.104292734331338 -105.0042679 39.7583739 -105.0032834 39.7589279
-14643 6926 912 0.0399977157837286 0.0399977157837286 -104.9982022 39.7580108 -104.9985313 39.7577551
-14645 3853 9379 0.0160272455480019 0.0160272455480019 -105.0428243 39.7765611 -105.0427433 39.7766911
-14646 9379 8109 0.188409381404142 0.188409381404142 -105.0427433 39.7766911 -105.0427373 39.7783855
-14647 8109 9407 0.202174997774683 0.202174997774683 -105.0427373 39.7783855 -105.0427327 39.7802037
-18781 10347 10348 0.0132995316754344 0.0132995316754344 -105.0006789 39.7395014 -105.0006804 39.7393818
-14649 5569 7551 0.0943021955909244 0.0943021955909244 -105.0440431 39.7711254 -105.0451465 39.7711259
-14650 7551 9408 0.692224615113747 0.692224615113747 -105.0451465 39.7711259 -105.053246 39.77113
-14651 7543 9409 0.0534301345278006 0.0534301345278006 -105.0449615 39.7672 -105.045011 39.767679
-14652 6725 4821 0.0796194906426482 0.0796194906426482 -105.0111475 39.760596 -105.0105051 39.7611145
-14653 4821 2511 0.108135424106199 0.108135424106199 -105.0105051 39.7611145 -105.0096048 39.7617977
-14654 2511 8224 0.0376491716837282 0.0376491716837282 -105.0096048 39.7617977 -105.009291 39.7620353
-14787 9415 9416 0.31094582672675 0.31094582672675 -104.9903152 39.773396 -104.99143 39.7707341
-14791 2891 8923 0.457832400708685 0.457832400708685 -104.9905111 39.7729211 -104.9942478 39.7699708
-14793 5024 3335 0.0983906046596767 0.0983906046596767 -104.9585953 39.733723 -104.9574452 39.7336966
-14795 7882 7337 0.102026433082927 0.102026433082927 -104.9563208 39.7337098 -104.9551277 39.7337164
-14796 7337 7986 0.092185977990205 0.092185977990205 -104.9551277 39.7337164 -104.9540634 39.7335844
-14797 7986 2055 0.0946262859427162 0.0946262859427162 -104.9540634 39.7335844 -104.9529569 39.7335952
-14798 2055 2661 0.105023750774947 0.105023750774947 -104.9529569 39.7335952 -104.9517288 39.7335844
-14799 2661 4134 0.100547305543173 0.100547305543173 -104.9517288 39.7335844 -104.950553 39.733591
-14800 4134 6697 0.0891067622100312 0.0891067622100312 -104.950553 39.733591 -104.949511 39.7335838
-14801 6697 8020 0.0955965901798936 0.0955965901798936 -104.949511 39.7335838 -104.9484005 39.7336828
-14802 8020 7684 0.0959578997394599 0.0959578997394599 -104.9484005 39.7336828 -104.9472785 39.7336681
-14803 7684 3458 0.0944062286409825 0.0944062286409825 -104.9472785 39.7336681 -104.9461745 39.7336634
-14804 3458 9418 0.046227752797198 0.046227752797198 -104.9461745 39.7336634 -104.9456339 39.7336646
-14805 9418 6020 0.0461318959590008 0.0461318959590008 -104.9456339 39.7336646 -104.9450945 39.7336574
-14806 6020 9419 0.0476773807861996 0.0476773807861996 -104.9450945 39.7336574 -104.944537 39.7336514
-19851 10660 10659 0.00933491084100046 0.00933491084100046 -105.0352222 39.7384654 -105.035226 39.7385493
-14807 9419 9420 0.0464971294902911 0.0464971294902911 -104.944537 39.7336514 -104.9439933 39.7336456
-14808 9420 9421 0.0470997921907546 0.0470997921907546 -104.9439933 39.7336456 -104.9434425 39.7336457
-14809 9421 858 0.0457230540386264 0.0457230540386264 -104.9434425 39.7336457 -104.9429078 39.7336457
-14810 858 453 0.0467078777528092 0.0467078777528092 -104.9429078 39.7336457 -104.9423616 39.733649
-14811 453 7106 0.0457758284617094 0.0457758284617094 -104.9423616 39.733649 -104.9418263 39.7336523
-14812 7106 457 0.0455135048722811 0.0455135048722811 -104.9418263 39.7336523 -104.9412942 39.7336426
-14813 457 9422 0.0463689143813771 0.0463689143813771 -104.9412942 39.7336426 -104.9407521 39.7336327
-14815 9423 9424 0.00582356405087118 0.00582356405087118 -105.0158749 39.754908 -105.0159208 39.7548693
-14817 9425 6432 0.0926350815349589 0.0926350815349589 -105.0167051 39.7548156 -105.0177887 39.7548225
-14818 6432 4657 0.117278685803448 0.117278685803448 -105.0177887 39.7548225 -105.0191606 39.7548276
-14819 4657 1280 0.116593491044555 0.116593491044555 -105.0191606 39.7548276 -105.0205245 39.7548287
-14820 1280 4531 0.132186730302242 0.132186730302242 -105.0205245 39.7548287 -105.0220708 39.7548328
-14951 7670 9457 3.41600373692151 3.41600373692151 -104.9245872 39.7382725 -104.8846398 39.7386634
-14952 3583 7612 0.0941905477613176 0.0941905477613176 -104.9394304 39.7546656 -104.9383286 39.7546719
-14953 7612 7265 0.0936588343585109 0.0936588343585109 -104.9383286 39.7546719 -104.937233 39.7546682
-14955 7584 2001 0.0944700456489753 0.0944700456489753 -104.936128 39.7546682 -104.9350229 39.7546682
-14956 2001 3361 0.0949233780276755 0.0949233780276755 -104.9350229 39.7546682 -104.9339125 39.7546702
-14957 3361 2755 0.0936752171867012 0.0936752171867012 -104.9339125 39.7546702 -104.9328167 39.7546719
-14958 2755 7006 0.0959502415519421 0.0959502415519421 -104.9328167 39.7546719 -104.9316943 39.7546764
-14959 7006 2281 0.099513679348955 0.099513679348955 -104.9316943 39.7546764 -104.9305302 39.7546764
-14960 2281 3582 0.100891029071921 0.100891029071921 -104.9305302 39.7546764 -104.92935 39.7546723
-14961 3582 7528 0.100887947066067 0.100887947066067 -104.92935 39.7546723 -104.9281699 39.7546826
-14962 7528 2136 0.103412071247308 0.103412071247308 -104.9281699 39.7546826 -104.9269602 39.7546847
-14963 2136 5993 0.100671897064821 0.100671897064821 -104.9269602 39.7546847 -104.9257827 39.7546991
-14964 5993 7673 0.0999667195935639 0.0999667195935639 -104.9257827 39.7546991 -104.9246133 39.7546991
-14986 8886 7162 0.0452381047162121 0.0452381047162121 -104.9798704 39.7432669 -104.9793413 39.7432656
-14985 8878 8886 0.104437941202429 0.104437941202429 -104.9810919 39.7432682 -104.9798704 39.7432669
-14987 7162 9309 0.0512658726512666 0.0512658726512666 -104.9793413 39.7432656 -104.9787417 39.7432641
-15109 7996 6927 0.0217805821755954 0.0217805821755954 -104.9977757 39.7584584 -104.9980305 39.7584589
-15110 6927 5675 0.030815905152866 0.030815905152866 -104.9980305 39.7584589 -104.998391 39.7584595
-14965 7673 9461 2.89733038736532 2.89733038736532 -104.9246133 39.7546991 -104.8907207 39.7546542
-14966 8151 7610 0.094248596661074 0.094248596661074 -104.9394486 39.7510451 -104.9383462 39.7510533
-15088 2328 9485 2.88346551451846 2.88346551451846 -104.9240271 39.7656085 -104.890296 39.7651798
-15089 9486 3468 0.447301506508283 0.447301506508283 -104.9406618 39.7619502 -104.9458947 39.7619213
-15090 3468 3445 0.0309512876225537 0.0309512876225537 -104.9458947 39.7619213 -104.9462568 39.7619224
-15091 3445 7699 0.105014135175069 0.105014135175069 -104.9462568 39.7619224 -104.9474853 39.7619327
-15092 7699 9487 0.105691765273947 0.105691765273947 -104.9474853 39.7619327 -104.9487218 39.7619316
-15093 9487 6684 0.102061996358298 0.102061996358298 -104.9487218 39.7619316 -104.9499154 39.7619564
-15094 6684 4128 0.108739719526669 0.108739719526669 -104.9499154 39.7619564 -104.9511874 39.7619719
-15095 4128 9488 0.104836941153267 0.104836941153267 -104.9511874 39.7619719 -104.9524139 39.7619708
-15096 9488 2082 0.105803010632854 0.105803010632854 -104.9524139 39.7619708 -104.9536517 39.7619729
-15097 2082 7334 0.1052078044876 0.1052078044876 -104.9536517 39.7619729 -104.9548825 39.7619805
-15101 9489 2994 0.0812267643509346 0.0812267643509346 -104.9963423 39.760645 -104.995393 39.7606779
-15105 2996 4851 0.0525302115232072 0.0525302115232072 -104.9954583 39.7585204 -104.996067 39.7584555
-15106 4851 7227 0.0344830493164063 0.0344830493164063 -104.996067 39.7584555 -104.9964704 39.7584562
-15107 7227 2369 0.0550241369558443 0.0550241369558443 -104.9964704 39.7584562 -104.9971141 39.7584573
-15108 2369 7996 0.056554238974086 0.056554238974086 -104.9971141 39.7584573 -104.9977757 39.7584584
-16370 9877 8705 0.102117755919592 0.102117755919592 -104.9392992 39.7619966 -104.9404928 39.7619574
-16371 8705 9486 0.014467692878557 0.014467692878557 -104.9404928 39.7619574 -104.9406618 39.7619502
-16373 8076 3329 0.0677844820507112 0.0677844820507112 -104.9580824 39.7607455 -104.9573301 39.7609383
-16374 3329 7880 0.139626392785753 0.139626392785753 -104.9573301 39.7609383 -104.9561137 39.7617764
-16375 7880 7333 0.105584363104376 0.105584363104376 -104.9561137 39.7617764 -104.9548815 39.761843
-16376 7333 2081 0.10500807653965 0.10500807653965 -104.9548815 39.761843 -104.953653 39.761844
-16377 2081 2678 0.105119136499329 0.105119136499329 -104.953653 39.761844 -104.9524232 39.761844
-16491 6692 8028 0.103532298857838 0.103532298857838 -104.9500467 39.7437984 -104.9488359 39.7437854
-16379 4127 6683 0.108621189217377 0.108621189217377 -104.9511861 39.7618358 -104.9499154 39.7618255
-16385 9881 9882 0.0163548118473388 0.0163548118473388 -104.9710436 39.7033454 -104.9710939 39.7032035
-16386 9882 9458 0.0203986664758761 0.0203986664758761 -104.9710939 39.7032035 -104.9711616 39.7030276
-16394 3281 9883 0.00468216635493236 0.00468216635493236 -104.9710667 39.7027917 -104.9711214 39.7027903
-16396 9884 9458 0.0218243339760988 0.0218243339760988 -104.971175 39.7028316 -104.9711616 39.7030276
-16398 9883 9884 0.00648970201006769 0.00648970201006769 -104.9711214 39.7027903 -104.971175 39.7028316
-16400 9885 9886 0.267423928903385 0.267423928903385 -104.9695415 39.703787 -104.9705756 39.7060566
-16401 9886 9880 0.296075289776302 0.296075289776302 -104.9705756 39.7060566 -104.9718617 39.7035846
-16403 9878 9881 0.0274154521009071 0.0274154521009071 -104.971336 39.7034463 -104.9710436 39.7033454
-16404 9881 9887 0.0188694353495207 0.0188694353495207 -104.9710436 39.7033454 -104.9708237 39.7033586
-16405 9887 9888 0.0187489585891175 0.0187489585891175 -104.9708237 39.7033586 -104.9706065 39.7033361
-19509 10534 10535 0.00388440521802765 0.00388440521802765 -104.9882751 39.7088082 -104.9882297 39.7088075
-16425 3407 9890 0.502103946549802 0.502103946549802 -104.9699417 39.6974212 -104.9695728 39.7019278
-16426 9890 3331 0.0251683632208894 0.0251683632208894 -104.9695728 39.7019278 -104.9693109 39.7020309
-16481 7888 3680 0.0532502584498927 0.0532502584498927 -104.983517 39.7478374 -104.9830181 39.7475507
-16483 4595 8006 0.101626087251738 0.101626087251738 -104.9581328 39.7438013 -104.9569442 39.743807
-16484 8006 580 0.022127419381672 0.022127419381672 -104.9569442 39.743807 -104.9566854 39.743808
-16485 580 7979 0.165894151722243 0.165894151722243 -104.9566854 39.743808 -104.9547451 39.7438115
-16486 7979 9923 0.0456395565118553 0.0456395565118553 -104.9547451 39.7438115 -104.9542113 39.7438103
-16487 9923 2066 0.0539845223115493 0.0539845223115493 -104.9542113 39.7438103 -104.9535799 39.7438083
-16488 2066 2641 0.100182277305196 0.100182277305196 -104.9535799 39.7438083 -104.9524082 39.7438154
-16489 2641 4107 0.0977431302735631 0.0977431302735631 -104.9524082 39.7438154 -104.9512653 39.743795
-16490 4107 6692 0.10418977795868 0.10418977795868 -104.9512653 39.743795 -104.9500467 39.7437984
-16492 8028 7698 0.0982299872130606 0.0982299872130606 -104.9488359 39.7437854 -104.947687 39.743787
-16493 7698 3443 0.0993337912559461 0.0993337912559461 -104.947687 39.743787 -104.9465253 39.7437746
-16494 3443 6011 0.101499429536563 0.101499429536563 -104.9465253 39.7437746 -104.9453382 39.743767
-16495 6011 3878 0.0977083732706848 0.0977083732706848 -104.9453382 39.743767 -104.9441954 39.743766
-16496 3878 9924 0.0991972529095445 0.0991972529095445 -104.9441954 39.743766 -104.9430352 39.7437705
-16497 9924 420 0.100553893040038 0.100553893040038 -104.9430352 39.7437705 -104.9418594 39.7437507
-16504 8592 9925 0.120377099914021 0.120377099914021 -105.0036056 39.7454327 -105.004838 39.7449092
-16505 9925 9926 0.107491921110891 0.107491921110891 -105.004838 39.7449092 -105.005919 39.7444156
-16506 9926 9927 0.123107053114174 0.123107053114174 -105.005919 39.7444156 -105.0051948 39.7434587
-16517 8288 3009 0.0410924117477314 0.0410924117477314 -104.9878071 39.7473599 -104.9873284 39.7473931
-16519 9451 4779 0.246284579163 0.246284579163 -104.933915 39.7209388 -104.9338206 39.7231525
-16520 4779 6557 0.132912762129515 0.132912762129515 -104.9338206 39.7231525 -104.9338133 39.7243478
-16521 6557 9306 0.107414375743234 0.107414375743234 -104.9338133 39.7243478 -104.9338148 39.7253138
-16523 5147 9150 0.0526798805531595 0.0526798805531595 -104.925132 39.7295572 -104.9246762 39.7292385
-16527 862 703 0.202686588734239 0.202686588734239 -104.9428936 39.7401262 -104.9430426 39.7419454
-16528 703 9924 0.202942846886287 0.202942846886287 -104.9430426 39.7419454 -104.9430352 39.7437705
-16533 9141 9155 0.0471076181125112 0.0471076181125112 -104.9960053 39.7064848 -104.9962707 39.706856
-16549 9936 8118 0.163748197039451 0.163748197039451 -104.9796276 39.7485669 -104.9781487 39.7495027
-16550 8118 4329 0.102460572786022 0.102460572786022 -104.9781487 39.7495027 -104.9769503 39.7494919
-16551 4329 9932 0.0509040459853039 0.0509040459853039 -104.9769503 39.7494919 -104.9763549 39.7494877
-16552 9932 5034 0.0506801147751554 0.0506801147751554 -104.9763549 39.7494877 -104.9757621 39.7494857
-16553 5034 9935 0.0507841642169636 0.0507841642169636 -104.9757621 39.7494857 -104.9751681 39.7494897
-16554 9935 7991 0.0519996695117493 0.0519996695117493 -104.9751681 39.7494897 -104.9745599 39.7494843
-16555 7991 9939 0.0501954054420559 0.0501954054420559 -104.9745599 39.7494843 -104.9739728 39.7494793
-16557 2889 8382 0.106173445564903 0.106173445564903 -104.9733549 39.749474 -104.972113 39.7494781
-16558 8382 8542 0.105198351895408 0.105198351895408 -104.972113 39.7494781 -104.9708826 39.7494657
-16559 8542 4730 0.104923019039301 0.104923019039301 -104.9708826 39.7494657 -104.9696554 39.7494546
-16560 4730 6797 0.109090547930583 0.109090547930583 -104.9696554 39.7494546 -104.9683794 39.7494616
-16561 6797 7349 0.101581569748298 0.101581569748298 -104.9683794 39.7494616 -104.9671912 39.7494616
-16562 7349 5395 0.107089477151985 0.107089477151985 -104.9671912 39.7494616 -104.9659386 39.7494554
-16563 5395 8556 0.104796077599276 0.104796077599276 -104.9659386 39.7494554 -104.9647128 39.7494554
-17270 82 7309 0.202171029293651 0.202171029293651 -104.9623177 39.7002318 -104.9622856 39.7020498
-16564 8556 3897 0.106860413590027 0.106860413590027 -104.9647128 39.7494554 -104.9634629 39.7494637
-16565 3897 1030 0.106538064092827 0.106538064092827 -104.9634629 39.7494637 -104.9622168 39.7494743
-16566 1030 6272 0.104663636918357 0.104663636918357 -104.9622168 39.7494743 -104.9609926 39.7494657
-16567 6272 9940 0.0522044777389819 0.0522044777389819 -104.9609926 39.7494657 -104.960382 39.7494708
-16568 9940 9941 0.0539741744852114 0.0539741744852114 -104.960382 39.7494708 -104.9597507 39.749476
-16570 5969 9942 0.0525274850765404 0.0525274850765404 -104.98198 39.7503787 -104.9824158 39.7507117
-16571 9942 9943 0.0464624768491459 0.0464624768491459 -104.9824158 39.7507117 -104.9827994 39.7510077
-16572 9943 3013 0.00948387351005329 0.00948387351005329 -104.9827994 39.7510077 -104.9828772 39.7510685
-16573 3013 9944 0.0499659888588949 0.0499659888588949 -104.9828772 39.7510685 -104.9832891 39.7513873
-16574 9944 4387 0.0525459349585223 0.0525459349585223 -104.9832891 39.7513873 -104.9837317 39.7517152
-16575 4387 8415 0.053989635677053 0.053989635677053 -104.9837317 39.7517152 -104.9841796 39.7520575
-16576 8415 9945 0.0518942546071768 0.0518942546071768 -104.9841796 39.7520575 -104.9846155 39.7523823
-16577 9945 8419 0.054710567315966 0.054710567315966 -104.9846155 39.7523823 -104.9850687 39.7527297
-16578 8419 9946 0.0495941326709913 0.0495941326709913 -104.9850687 39.7527297 -104.9854693 39.7530523
-16579 9946 8502 0.0543577768356107 0.0543577768356107 -104.9854693 39.7530523 -104.985916 39.7534002
-16580 8502 8537 0.0523876514778538 0.0523876514778538 -104.985916 39.7534002 -104.9863465 39.7537355
-16581 8537 9591 0.106159293603162 0.106159293603162 -104.9863465 39.7537355 -104.9872304 39.7544061
-16582 9591 9318 0.0186755424929809 0.0186755424929809 -104.9872304 39.7544061 -104.9873865 39.7545236
-16584 3674 9947 0.0925100597395306 0.0925100597395306 -104.9782423 39.7475122 -104.9790113 39.7480975
-16585 9947 9936 0.0741653442201567 0.0741653442201567 -104.9790113 39.7480975 -104.9796276 39.7485669
-16586 9936 5811 0.0698256524972049 0.0698256524972049 -104.9796276 39.7485669 -104.9802084 39.7490084
-16587 5811 7575 0.109874082628797 0.109874082628797 -104.9802084 39.7490084 -104.9811177 39.7497067
-16588 7575 8407 0.0534887493842637 0.0534887493842637 -104.9811177 39.7497067 -104.9815533 39.750052
-16589 8407 5969 0.0514820185730379 0.0514820185730379 -104.9815533 39.750052 -104.98198 39.7503787
-16615 5811 5357 0.148515460139762 0.148515460139762 -104.9802084 39.7490084 -104.9790225 39.7499844
-16616 5357 8119 0.104815937410374 0.104815937410374 -104.9790225 39.7499844 -104.978147 39.7506443
-16621 9938 9956 0.0146143299800706 0.0146143299800706 -104.9856294 39.7391313 -104.9857322 39.7392363
-16622 9956 9957 0.0128596804561102 0.0128596804561102 -104.9857322 39.7392363 -104.9856428 39.7393293
-16624 9958 9959 0.0111717692412778 0.0111717692412778 -104.9855355 39.7393169 -104.9854926 39.739222
-16625 9959 9960 0.00928483420505699 0.00928483420505699 -104.9854926 39.739222 -104.9855516 39.7391519
-16626 9960 9938 0.0070355984277229 0.0070355984277229 -104.9855516 39.7391519 -104.9856294 39.7391313
-16628 9961 9962 0.526903283655783 0.526903283655783 -104.9531023 39.7400594 -104.9592628 39.7399435
-16630 9963 9312 1.46582798607179 1.46582798607179 -104.9616093 39.739874 -104.9787525 39.7399405
-16633 9965 9966 0.00412165910041822 0.00412165910041822 -104.9859809 39.7399196 -104.9860291 39.7399191
-16634 9966 9967 0.0757681110838303 0.0757681110838303 -104.9860291 39.7399191 -104.986072 39.7392385
-16638 9965 9957 0.0717225435233069 0.0717225435233069 -104.9859809 39.7399196 -104.9856428 39.7393293
-16640 9964 9958 0.0807216833328343 0.0807216833328343 -104.9850261 39.7399281 -104.9855355 39.7393169
-16642 9967 9956 0.0290555152245672 0.0290555152245672 -104.986072 39.7392385 -104.9857322 39.7392363
-16645 565 7092 0.0721739648747923 0.0721739648747923 -104.9854426 39.7390647 -104.9848557 39.7385982
-16646 7092 9969 0.0060839008927764 0.0060839008927764 -104.9848557 39.7385982 -104.9848573 39.7385435
-16658 651 9973 0.109528403212781 0.109528403212781 -104.9861093 39.7416811 -104.9873866 39.7416062
-16660 3165 8089 0.106908291090671 0.106908291090671 -105.0030875 39.7426587 -105.0019804 39.7431056
-16662 9927 8897 0.00902355166325831 0.00902355166325831 -105.0051948 39.7434587 -105.0051222 39.7433998
-16663 8897 8899 0.00817755039331079 0.00817755039331079 -105.0051222 39.7433998 -105.0050563 39.7433465
-16665 8896 8898 0.0955954321276197 0.0955954321276197 -105.0048016 39.7429839 -105.0038366 39.7434181
-16666 8898 3166 0.0120380596695599 0.0120380596695599 -105.0038366 39.7434181 -105.0037031 39.7434525
-16726 3074 5275 0.102580698126288 0.102580698126288 -104.9862922 39.7129578 -104.9862654 39.7138801
-16727 5275 6866 0.0979724094285353 0.0979724094285353 -104.9862654 39.7138801 -104.9862493 39.7147611
-17386 5920 919 0.177782086780631 0.177782086780631 -104.9842358 39.7304466 -104.9842225 39.7320454
-16728 6866 5172 0.198907590330119 0.198907590330119 -104.9862493 39.7147611 -104.9862386 39.7165499
-16730 8563 6368 0.270917565484422 0.270917565484422 -104.9293999 39.7256232 -104.9294128 39.7280596
-16731 6368 9149 0.131210826087923 0.131210826087923 -104.9294128 39.7280596 -104.9294074 39.7292396
-16779 73 3512 0.203753724402901 0.203753724402901 -104.9663438 39.7002174 -104.966341 39.698385
-16780 3512 4254 0.201507995491671 0.201507995491671 -104.966341 39.698385 -104.9663465 39.6965728
-16781 4254 8742 0.199898657335298 0.199898657335298 -104.9663465 39.6965728 -104.9663604 39.6947751
-16782 8742 8713 0.201418841949 0.201418841949 -104.9663604 39.6947751 -104.966356 39.6929637
-16784 3511 4252 0.198740800817733 0.198740800817733 -104.9675186 39.6983807 -104.9675293 39.6965934
-16785 4252 8741 0.201811596521788 0.201811596521788 -104.9675293 39.6965934 -104.9675005 39.6947786
-16786 8741 8712 0.201811329628688 0.201811329628688 -104.9675005 39.6947786 -104.9675147 39.6929637
-16794 4264 8747 0.202686112287629 0.202686112287629 -104.9593265 39.6965961 -104.9593265 39.6947733
-16795 8747 8718 0.200629598901607 0.200629598901607 -104.9593265 39.6947733 -104.9593208 39.692969
-16797 4264 9864 0.0549036584382557 0.0549036584382557 -104.9593265 39.6965961 -104.9586848 39.6965926
-16798 9864 6516 0.0494449113838383 0.0494449113838383 -104.9586848 39.6965926 -104.9581069 39.6965895
-16799 6516 9855 0.048981731510525 0.048981731510525 -104.9581069 39.6965895 -104.9575344 39.69659
-16800 9855 6160 0.0501282016561891 0.0501282016561891 -104.9575344 39.69659 -104.9569485 39.6965905
-16801 6160 9852 0.0487763612951203 0.0487763612951203 -104.9569485 39.6965905 -104.9563784 39.6965905
-16802 9852 2738 0.0474245519497852 0.0474245519497852 -104.9563784 39.6965905 -104.9558241 39.6965905
-16803 2738 9267 0.050437767682916 0.050437767682916 -104.9558241 39.6965905 -104.9552346 39.6965869
-16804 9267 4512 0.0485383641713966 0.0485383641713966 -104.9552346 39.6965869 -104.9546673 39.6965834
-16805 4512 9858 0.0494525517955229 0.0494525517955229 -104.9546673 39.6965834 -104.9540893 39.6965849
-16807 3171 9861 0.047855446066228 0.047855446066228 -104.9534926 39.6965864 -104.9529333 39.6965815
-16808 9861 4996 0.0491871460939442 0.0491871460939442 -104.9529333 39.6965815 -104.9523584 39.6965806
-16810 728 3665 0.0984709387661759 0.0984709387661759 -104.951164 39.6965829 -104.9500131 39.6965763
-16811 3665 7315 0.0976596112157836 0.0976596112157836 -104.9500131 39.6965763 -104.9488718 39.6965905
-16812 7315 4586 0.099898936211385 0.099898936211385 -104.9488718 39.6965905 -104.9477042 39.6965961
-16813 4586 8032 0.100609280081376 0.100609280081376 -104.9477042 39.6965961 -104.9465284 39.6965829
-16814 8032 6372 0.100607138332673 0.100607138332673 -104.9465284 39.6965829 -104.9453525 39.6965829
-16815 6372 10015 0.0481181392934118 0.0481181392934118 -104.9453525 39.6965829 -104.9447901 39.696585
-16816 10015 4826 0.0474935217651045 0.0474935217651045 -104.9447901 39.696585 -104.944235 39.696587
-16817 4826 8954 0.102669069502609 0.102669069502609 -104.944235 39.696587 -104.943035 39.696587
-16818 8954 8956 0.0962963283421786 0.0962963283421786 -104.943035 39.696587 -104.9419095 39.6965915
-16819 8956 10016 0.0513191391251647 0.0513191391251647 -104.9419095 39.6965915 -104.9413099 39.696579
-16820 10016 8816 0.0499640269903021 0.0499640269903021 -104.9413099 39.696579 -104.940726 39.6965715
-16821 8816 8828 0.0154260311566384 0.0154260311566384 -104.940726 39.6965715 -104.9405457 39.6965715
-16822 8828 8206 0.163758839265649 0.163758839265649 -104.9405457 39.6965715 -104.9386317 39.6965781
-16824 7312 87 0.200996583193063 0.200996583193063 -104.959341 39.7020293 -104.9593351 39.7002217
-16825 87 3523 0.203555810471145 0.203555810471145 -104.9593351 39.7002217 -104.9593466 39.6983911
-16826 3523 4264 0.199602301480838 0.199602301480838 -104.9593466 39.6983911 -104.9593265 39.6965961
-16828 7312 3648 0.154169800390109 0.154169800390109 -104.959341 39.7020293 -104.9576929 39.7025901
-16832 10017 593 0.487939330962151 0.487939330962151 -104.9722814 39.707401 -104.9689126 39.70386
-16851 8718 9866 0.0548710295017979 0.0548710295017979 -104.9593208 39.692969 -104.9586795 39.6929681
-16854 9854 6162 0.0501051333475743 0.0501051333475743 -104.9575371 39.6929673 -104.9569515 39.6929673
-16855 6162 9851 0.0483439490024107 0.0483439490024107 -104.9569515 39.6929673 -104.9563865 39.692964
-16856 9851 2740 0.0471290060929331 0.0471290060929331 -104.9563865 39.692964 -104.9558357 39.6929607
-16857 2740 9863 0.0493697108471136 0.0493697108471136 -104.9558357 39.6929607 -104.9552587 39.6929589
-16858 9863 5231 0.0496606668462506 0.0496606668462506 -104.9552587 39.6929589 -104.9546783 39.692957
-16859 5231 9857 0.0497084193128251 0.0497084193128251 -104.9546783 39.692957 -104.9540974 39.6929504
-16860 9857 3173 0.0501789646371779 0.0501789646371779 -104.9540974 39.6929504 -104.953511 39.6929438
-16861 3173 9860 0.0494391268160734 0.0494391268160734 -104.953511 39.6929438 -104.9529332 39.6929471
-16862 9860 4998 0.0489685461673918 0.0489685461673918 -104.9529332 39.6929471 -104.9523609 39.6929504
-16863 4998 10023 0.0484162493280967 0.0484162493280967 -104.9523609 39.6929504 -104.9517951 39.692944
-16864 10023 730 0.0507353905968115 0.0507353905968115 -104.9517951 39.692944 -104.9512022 39.6929372
-16865 730 7061 0.101358904320696 0.101358904320696 -104.9512022 39.6929372 -104.9500177 39.6929504
-16867 8718 5830 0.204166330856198 0.204166330856198 -104.9593208 39.692969 -104.9593294 39.6911329
-16868 5830 7737 0.202033972193846 0.202033972193846 -104.9593294 39.6911329 -104.9593582 39.6893161
-16869 7737 10024 0.307945705057077 0.307945705057077 -104.9593582 39.6893161 -104.9594131 39.686547
-16870 594 7303 0.202197872623945 0.202197872623945 -104.9686935 39.7038655 -104.968686 39.7020471
-16871 7303 66 0.20266387330283 0.20266387330283 -104.968686 39.7020471 -104.968686 39.7002245
-16872 66 3507 0.204877942956717 0.204877942956717 -104.968686 39.7002245 -104.9686775 39.698382
-16873 3507 233 0.199133503403233 0.199133503403233 -104.9686775 39.698382 -104.968695 39.6965912
-16874 233 8739 0.200473333247617 0.200473333247617 -104.968695 39.6965912 -104.968695 39.6947883
-16876 9203 4390 0.147691017735613 0.147691017735613 -104.9873873 39.7502468 -104.9873785 39.7489186
-16878 1943 10025 0.122583563426404 0.122583563426404 -104.9902169 39.7384586 -104.9916503 39.7384388
-16879 10025 7860 0.110082433757866 0.110082433757866 -104.9916503 39.7384388 -104.9929377 39.7384322
-16880 7860 4679 0.101138191051348 0.101138191051348 -104.9929377 39.7384322 -104.9941204 39.7384454
-16881 4679 4942 0.0999327202014087 0.0999327202014087 -104.9941204 39.7384454 -104.9952889 39.7384631
-16882 4942 7214 0.0998696563081419 0.0998696563081419 -104.9952889 39.7384631 -104.9964568 39.738452
-16883 7214 4928 0.0376169687692631 0.0376169687692631 -104.9964568 39.738452 -104.9968967 39.7384563
-16884 4928 9636 0.014060573587084 0.014060573587084 -104.9968967 39.7384563 -104.9970611 39.7384591
-16886 9870 1167 0.138451400347842 0.138451400347842 -104.9561166 39.7619811 -104.9560938 39.7632261
-16887 1167 887 0.138706454254422 0.138706454254422 -104.9560938 39.7632261 -104.9561023 39.7644735
-16888 887 4471 0.139683302205089 0.139683302205089 -104.9561023 39.7644735 -104.9561053 39.7657297
-16890 9488 1170 0.13939401140641 0.13939401140641 -104.9524139 39.7619708 -104.9524125 39.7632244
-16891 1170 890 0.137058995578611 0.137058995578611 -104.9524125 39.7632244 -104.9524103 39.764457
-16892 890 4474 0.140851028519895 0.140851028519895 -104.9524103 39.764457 -104.9524143 39.7657237
-16893 4474 2796 0.132878137732711 0.132878137732711 -104.9524143 39.7657237 -104.9524116 39.7669187
-16894 2796 5265 0.13228574865076 0.13228574865076 -104.9524116 39.7669187 -104.9524289 39.7681083
-16895 5265 10026 0.123565762779561 0.123565762779561 -104.9524289 39.7681083 -104.9524147 39.7692195
-16896 5633 7143 0.082551113540924 0.082551113540924 -104.9721228 39.7557358 -104.9721228 39.7564782
-16899 8743 4255 0.199339176026767 0.199339176026767 -104.9658013 39.6947852 -104.9658026 39.6965779
-16905 6305 6456 0.135927811837651 0.135927811837651 -105.0158628 39.7765644 -105.0158736 39.775342
-16906 6456 5521 0.134557743068365 0.134557743068365 -105.0158736 39.775342 -105.0158789 39.7741319
-16907 5521 5744 0.134669392965434 0.134669392965434 -105.0158789 39.7741319 -105.0158722 39.7729208
-16908 5744 3224 0.133413468985769 0.133413468985769 -105.0158722 39.7729208 -105.0158803 39.771721
-16909 3224 2456 0.134335811293817 0.134335811293817 -105.0158803 39.771721 -105.015887 39.7705129
-16910 2456 9365 0.137895860915298 0.137895860915298 -105.015887 39.7705129 -105.0158763 39.7692728
-16911 9365 1677 0.134681074434199 0.134681074434199 -105.0158763 39.7692728 -105.0158682 39.7680616
-16912 1677 10027 0.135027096454707 0.135027096454707 -105.0158682 39.7680616 -105.0158575 39.7668473
-16913 10027 6891 0.134223449290887 0.134223449290887 -105.0158575 39.7668473 -105.0158561 39.7656402
-16914 6891 5239 0.133857055503606 0.133857055503606 -105.0158561 39.7656402 -105.0158514 39.7644364
-16915 5239 4520 0.134947645289316 0.134947645289316 -105.0158514 39.7644364 -105.0158588 39.7632228
-16916 4520 8229 0.133768415422039 0.133768415422039 -105.0158588 39.7632228 -105.015853 39.7620198
-16917 8229 6091 0.136267738734572 0.136267738734572 -105.015853 39.7620198 -105.0158342 39.7607944
-16918 6091 7927 0.0726325260844626 0.0726325260844626 -105.0158342 39.7607944 -105.0158342 39.7601412
-16919 7927 7846 0.0557691009082279 0.0557691009082279 -105.0158342 39.7601412 -105.0158428 39.7596397
-16920 7846 9410 0.0110872018563396 0.0110872018563396 -105.0158428 39.7596397 -105.015841 39.75954
-16921 9410 6730 0.0681749492551086 0.0681749492551086 -105.015841 39.75954 -105.015836 39.7589269
-16922 6730 10028 0.0472579211328822 0.0472579211328822 -105.015836 39.7589269 -105.015835 39.7585019
-16923 10028 2954 0.0113307920442751 0.0113307920442751 -105.015835 39.7585019 -105.0158347 39.7584
-16924 2954 10029 0.0100409346238736 0.0100409346238736 -105.0158347 39.7584 -105.015835 39.7583097
-16925 10029 6168 0.125005736653953 0.125005736653953 -105.015835 39.7583097 -105.0158387 39.7571855
-16926 6168 7701 0.0662611499745025 0.0662611499745025 -105.0158387 39.7571855 -105.0158374 39.7565896
-16927 7701 8987 0.0202942911891754 0.0202942911891754 -105.0158374 39.7565896 -105.01584 39.7564071
-16928 8987 9213 0.01474166778393 0.01474166778393 -105.01584 39.7564071 -105.0158342 39.7562746
-16929 9213 7708 0.0256851882115953 0.0256851882115953 -105.0158342 39.7562746 -105.0158257 39.7560437
-16930 7708 10030 0.0413405317485577 0.0413405317485577 -105.0158257 39.7560437 -105.0158154 39.755672
-16931 10030 10031 0.036234422910969 0.036234422910969 -105.0158154 39.755672 -105.015807 39.7553462
-16932 10031 9423 0.0490701245377313 0.0490701245377313 -105.015807 39.7553462 -105.0158749 39.754908
-16934 10027 6419 0.132846643372958 0.132846643372958 -105.0158575 39.7668473 -105.0174118 39.7668473
-16935 6419 4626 0.132395451164353 0.132395451164353 -105.0174118 39.7668473 -105.0189608 39.7668411
-16936 4626 1249 0.132966501814055 0.132966501814055 -105.0189608 39.7668411 -105.0205165 39.7668391
-16937 1249 4558 0.132618380312988 0.132618380312988 -105.0205165 39.7668391 -105.0220681 39.7668318
-16938 4558 2727 0.131821083937229 0.131821083937229 -105.0220681 39.7668318 -105.0236104 39.7668329
-16939 2727 9343 0.133429127887654 0.133429127887654 -105.0236104 39.7668329 -105.0251715 39.7668277
-16941 8228 10032 0.0522172382940556 0.0522172382940556 -105.0143631 39.7620198 -105.0143643 39.7624894
-16942 10032 4519 0.0809723084454978 0.0809723084454978 -105.0143643 39.7624894 -105.0143662 39.7632176
-16943 4519 5238 0.135835767836828 0.135835767836828 -105.0143662 39.7632176 -105.0143675 39.7644392
-16944 5238 6890 0.133656501060031 0.133656501060031 -105.0143675 39.7644392 -105.0143648 39.7656412
-16945 6890 8682 0.133080513446367 0.133080513446367 -105.0143648 39.7656412 -105.0143554 39.766838
-16946 8682 10033 0.014533820296874 0.014533820296874 -105.0143554 39.766838 -105.014357 39.7669687
-16947 10033 10034 0.045058130648326 0.045058130648326 -105.014357 39.7669687 -105.0143619 39.7673739
-16948 10034 10035 0.0185816236497386 0.0185816236497386 -105.0143619 39.7673739 -105.0143641 39.767541
-16949 10035 1675 0.0576680457580287 0.0576680457580287 -105.0143641 39.767541 -105.0143702 39.7680596
-16950 1675 9364 0.135024432224183 0.135024432224183 -105.0143702 39.7680596 -105.0143742 39.7692739
-16955 10039 10040 0.0721995210382621 0.0721995210382621 -105.0167989 39.7555658 -105.0167064 39.7549204
-16958 10037 10041 0.0717852961267022 0.0717852961267022 -105.0167413 39.7559349 -105.0159755 39.75567
-16966 10043 10031 0.025182886777608 0.025182886777608 -105.0160494 39.7554749 -105.015807 39.7553462
-16969 10045 10039 0.0209823477511839 0.0209823477511839 -105.0168432 39.7557514 -105.0167989 39.7555658
-16971 8478 9438 0.0521271400869927 0.0521271400869927 -105.0065368 39.7543758 -105.0069699 39.7547058
-16972 9438 8905 0.0558565070780073 0.0558565070780073 -105.0069699 39.7547058 -105.007434 39.7550594
-16974 8478 4846 0.326789742990523 0.326789742990523 -105.0065368 39.7543758 -105.0038505 39.7522849
-17070 9465 4599 0.173875508685798 0.173875508685798 -104.9615988 39.7432195 -104.9615991 39.7447832
-16976 8474 1065 0.0530498075975429 0.0530498075975429 -105.0012293 39.7502862 -105.0016675 39.750624
-16977 1065 1604 0.0517738709202157 0.0517738709202157 -105.0016675 39.750624 -105.002095 39.7509538
-16978 1604 2199 0.109121538786623 0.109121538786623 -105.002095 39.7509538 -105.0029976 39.7516477
-16979 2199 4846 0.101668961251418 0.101668961251418 -105.0029976 39.7516477 -105.0038505 39.7522849
-16981 8583 10046 0.0456665785984412 0.0456665785984412 -105.0023143 39.7476847 -105.001796 39.747784
-16982 10046 8467 0.0226345136731024 0.0226345136731024 -105.001796 39.747784 -105.0015391 39.7478332
-16983 8467 9624 0.0229241644266869 0.0229241644266869 -105.0015391 39.7478332 -105.0012783 39.7478811
-16985 2321 10047 0.097235186001144 0.097235186001144 -104.9741575 39.7685518 -104.9733504 39.7691681
-16987 4279 6406 0.146870704035985 0.146870704035985 -104.9762513 39.7682868 -104.9774556 39.7673446
-16988 6406 635 0.144187230253749 0.144187230253749 -104.9774556 39.7673446 -104.9786451 39.7664251
-16989 635 5325 0.14662773102424 0.14662773102424 -104.9786451 39.7664251 -104.9798548 39.7654901
-16990 5325 2031 0.146219173461136 0.146219173461136 -104.9798548 39.7654901 -104.981068 39.764563
-19672 10610 10608 0.149537813443153 0.149537813443153 -105.0246432 39.7697786 -105.0228937 39.7697604
-16991 2031 7082 0.144853503450252 0.144853503450252 -104.981068 39.764563 -104.9822567 39.7636345
-16992 7082 5509 0.146165117461088 0.146165117461088 -104.9822567 39.7636345 -104.9834626 39.7627025
-16993 5509 4460 0.146698487596664 0.146698487596664 -104.9834626 39.7627025 -104.9846721 39.7617665
-16994 4460 6579 0.146306787683811 0.146306787683811 -104.9846721 39.7617665 -104.9858777 39.7608325
-16995 6579 8050 0.147127627497255 0.147127627497255 -104.9858777 39.7608325 -104.9870901 39.7598933
-16996 8050 998 0.0663040704360148 0.0663040704360148 -104.9870901 39.7598933 -104.9876372 39.7594706
-16997 998 8404 0.225438240771773 0.225438240771773 -104.9876372 39.7594706 -104.9894933 39.7580303
-16998 8404 9322 0.147049060577026 0.147049060577026 -104.9894933 39.7580303 -104.9907084 39.7570942
-16999 9322 8853 0.146215405021224 0.146215405021224 -104.9907084 39.7570942 -104.9919124 39.7561602
-17000 8853 7901 0.148314641191611 0.148314641191611 -104.9919124 39.7561602 -104.9931346 39.7552135
-17001 7901 8294 0.139664345335099 0.139664345335099 -104.9931346 39.7552135 -104.9942907 39.754326
-17002 8294 8275 0.153027219017765 0.153027219017765 -104.9942907 39.754326 -104.9955427 39.7533424
-17003 8275 5787 0.145945595293254 0.145945595293254 -104.9955427 39.7533424 -104.99675 39.7524144
-17004 5787 4818 0.144804477618788 0.144804477618788 -104.99675 39.7524144 -104.9979466 39.7514927
-17005 4818 10048 0.148574277364319 0.148574277364319 -104.9979466 39.7514927 -104.9991687 39.7505427
-17006 10048 10049 0.141579838501947 0.141579838501947 -104.9991687 39.7505427 -105.0003395 39.7496422
-17007 10049 10050 0.0340492732837983 0.0340492732837983 -105.0003395 39.7496422 -105.0006176 39.749423
-17012 10052 2402 0.196242393649725 0.196242393649725 -105.0157808 39.7546549 -105.016659 39.7530243
-17032 8989 10060 0.00622693936167768 0.00622693936167768 -105.0193135 39.7576062 -105.0193133 39.7576622
-17033 10060 10061 0.0756461423573197 0.0756461423573197 -105.0193133 39.7576622 -105.0193111 39.7583425
-17034 10061 2960 0.00915137839377932 0.00915137839377932 -105.0193111 39.7583425 -105.0193108 39.7584248
-17036 9211 23 0.0239583762029722 0.0239583762029722 -105.0192076 39.7574773 -105.0191645 39.7572644
-17042 1225 7845 0.140995210775646 0.140995210775646 -105.0118006 39.7583774 -105.0117993 39.7596454
-17043 7845 6089 0.129051193087075 0.129051193087075 -105.0117993 39.7596454 -105.0118176 39.7608059
-17044 6089 8226 0.135326560563343 0.135326560563343 -105.0118176 39.7608059 -105.0118083 39.7620229
-17107 6692 328 0.0434519039634918 0.0434519039634918 -104.9500467 39.7437984 -104.9500765 39.7441885
-17046 1226 8903 0.113651762618459 0.113651762618459 -105.01181 39.7571845 -105.0105064 39.7573854
-17048 10065 6628 1.29415946940766 1.29415946940766 -104.977472 39.6803487 -104.9775188 39.6919873
-17050 10066 4340 0.062140618563636 0.062140618563636 -104.9653754 39.757537 -104.9653214 39.7569797
-17051 4340 5636 0.138107358521106 0.138107358521106 -104.9653214 39.7569797 -104.9653325 39.7557377
-17052 5636 3565 0.143998480732308 0.143998480732308 -104.9653325 39.7557377 -104.9653106 39.7544428
-17053 3565 824 0.136450026224328 0.136450026224328 -104.9653106 39.7544428 -104.9653005 39.7532157
-17054 824 7840 0.139827641423356 0.139827641423356 -104.9653005 39.7532157 -104.9653014 39.7519582
-17055 7840 10067 0.139718785770158 0.139718785770158 -104.9653014 39.7519582 -104.9653109 39.7507017
-17056 10067 8131 0.276864248380317 0.276864248380317 -104.9653109 39.7507017 -104.9653111 39.7482118
-17058 2251 4883 0.177313835055438 0.177313835055438 -104.9592063 39.733462 -104.9591955 39.7350566
-17059 4883 9473 0.195033286388948 0.195033286388948 -104.9591955 39.7350566 -104.9591742 39.7368105
-17060 9473 5482 0.176110607852179 0.176110607852179 -104.9591742 39.7368105 -104.9591722 39.7383943
-17187 10072 4065 0.107057267328692 0.107057267328692 -105.0235501 39.7478169 -105.0235939 39.7487791
-17188 4065 8344 0.135746766447532 0.135746766447532 -105.0235939 39.7487791 -105.0235939 39.7499999
-17189 8344 9289 0.134278993416053 0.134278993416053 -105.0235939 39.7499999 -105.0235939 39.7512075
-17190 9289 8342 0.133553201715071 0.133553201715071 -105.0235939 39.7512075 -105.0236111 39.7524085
-17191 8342 4289 0.132478531756059 0.132478531756059 -105.0236111 39.7524085 -105.0236168 39.7535999
-17192 4289 8346 0.0683305663670944 0.0683305663670944 -105.0236168 39.7535999 -105.0236119 39.7542144
-17193 8346 9426 0.0684183152680821 0.0684183152680821 -105.0236119 39.7542144 -105.0236131 39.7548297
-17194 9426 3584 0.0602567059919197 0.0602567059919197 -105.0236131 39.7548297 -105.0236148 39.7553716
-17195 3584 7710 0.0737335540738928 0.0737335540738928 -105.0236148 39.7553716 -105.0236168 39.7560347
-17196 7710 26 0.134781615428443 0.134781615428443 -105.0236168 39.7560347 -105.0236259 39.7572468
-17197 26 2966 0.136258381357618 0.136258381357618 -105.0236259 39.7572468 -105.0236238 39.7584722
-17256 4853 9479 0.17362135223772 0.17362135223772 -104.9861135 39.7352834 -104.9861222 39.7368448
-17257 9479 5456 0.178335939458279 0.178335939458279 -104.9861222 39.7368448 -104.9861136 39.7384486
-17258 5456 10081 0.171904914212928 0.171904914212928 -104.9861136 39.7384486 -104.9861338 39.7399945
-17259 10081 9468 0.0143846440391869 0.0143846440391869 -104.9861338 39.7399945 -104.9861285 39.7401238
-17260 9468 651 0.173171640777506 0.173171640777506 -104.9861285 39.7401238 -104.9861093 39.7416811
-17261 651 9463 0.177611656329381 0.177611656329381 -104.9861093 39.7416811 -104.9861093 39.7432784
-17262 9463 4619 0.178590206270819 0.178590206270819 -104.9861093 39.7432784 -104.9861106 39.7448845
-17263 4619 6483 0.145677633501431 0.145677633501431 -104.9861106 39.7448845 -104.9861174 39.7461946
-17264 6483 5356 0.195804224423801 0.195804224423801 -104.9861174 39.7461946 -104.9861098 39.7479555
-17272 3269 7248 0.202454633754466 0.202454633754466 -104.962291 39.7038591 -104.9623016 39.7056798
-17273 7248 1925 0.201278474909205 0.201278474909205 -104.9623016 39.7056798 -104.9622858 39.7074899
-17274 1925 6124 0.199550873736161 0.199550873736161 -104.9622858 39.7074899 -104.9622908 39.7092845
-17275 6124 3214 0.201694321030812 0.201694321030812 -104.9622908 39.7092845 -104.9622425 39.711098
-17277 8746 4263 0.201096167532594 0.201096167532594 -104.9599905 39.6947768 -104.9599877 39.6965853
-17278 4263 3522 0.200484985070532 0.200484985070532 -104.9599877 39.6965853 -104.9599931 39.6983883
-17279 3522 86 0.203786942061633 0.203786942061633 -104.9599931 39.6983883 -104.9599931 39.700221
-17280 86 7311 0.202274691239897 0.202274691239897 -104.9599931 39.700221 -104.9599932 39.7020401
-17313 8120 4330 0.101819432050732 0.101819432050732 -104.9781435 39.7507448 -104.9769525 39.7507423
-17314 4330 9933 0.0499862309964707 0.0499862309964707 -104.9769525 39.7507423 -104.9763678 39.7507423
-17315 9933 5036 0.0532026214375408 0.0532026214375408 -104.9763678 39.7507423 -104.9757455 39.7507464
-17316 5036 9934 0.0508858224299175 0.0508858224299175 -104.9757455 39.7507464 -104.9751503 39.7507424
-17317 9934 7989 0.0496485523816978 0.0496485523816978 -104.9751503 39.7507424 -104.9745699 39.7507269
-17318 7989 10087 0.0512786229284607 0.0512786229284607 -104.9745699 39.7507269 -104.9739701 39.7507304
-17319 10087 2893 0.052637962933787 0.052637962933787 -104.9739701 39.7507304 -104.9733544 39.750734
-17320 2893 8384 0.104983198266762 0.104983198266762 -104.9733544 39.750734 -104.9721264 39.7507381
-17321 8384 8544 0.106333933974543 0.106333933974543 -104.9721264 39.7507381 -104.9708826 39.750734
-17322 8544 4732 0.104863197448763 0.104863197448763 -104.9708826 39.750734 -104.9696561 39.7507215
-17323 4732 6799 0.109607467159477 0.109607467159477 -104.9696561 39.7507215 -104.968374 39.7507196
-17325 7351 5397 0.105666168592591 0.105666168592591 -104.967169 39.7507119 -104.965933 39.7507119
-17326 5397 10067 0.0531956914071383 0.0531956914071383 -104.965933 39.7507119 -104.9653109 39.7507017
-17327 10067 8558 0.0516135381916136 0.0516135381916136 -104.9653109 39.7507017 -104.9647073 39.7506919
-17328 8558 3899 0.109335032698536 0.109335032698536 -104.9647073 39.7506919 -104.9634285 39.7507051
-17329 3899 1035 0.101631825737619 0.101631825737619 -104.9634285 39.7507051 -104.9622398 39.7507175
-17330 1035 10070 0.0547697896222192 0.0547697896222192 -104.9622398 39.7507175 -104.9615992 39.7507111
-17331 10070 6274 0.051631982755097 0.051631982755097 -104.9615992 39.7507111 -104.9609953 39.7507051
-17332 6274 10071 0.0521047224845183 0.0521047224845183 -104.9609953 39.7507051 -104.9603859 39.7507127
-17333 10071 10088 0.0548081026494783 0.0548081026494783 -104.9603859 39.7507127 -104.9597448 39.750714
-17334 10088 581 0.115692672611639 0.115692672611639 -104.9597448 39.750714 -104.9583963 39.7508014
-17335 581 3544 1.0812915383048 1.0812915383048 -104.9583963 39.7508014 -104.9457557 39.7511373
-17336 3544 10089 0.426746641833072 0.426746641833072 -104.9457557 39.7511373 -104.9407655 39.7510409
-17337 10089 8702 0.015131733429425 0.015131733429425 -104.9407655 39.7510409 -104.9405885 39.7510409
-17338 8702 8151 0.097451189179214 0.097451189179214 -104.9405885 39.7510409 -104.9394486 39.7510451
-17340 1827 3084 0.201158270757163 0.201158270757163 -104.9791916 39.7147225 -104.9792501 39.712914
-17341 3084 3196 0.201063388532037 0.201063388532037 -104.9792501 39.712914 -104.9792438 39.7111058
-17342 3196 6111 0.203191571447184 0.203191571447184 -104.9792438 39.7111058 -104.979227 39.7092785
-17343 6111 1904 0.198857964292004 0.198857964292004 -104.979227 39.7092785 -104.9792593 39.7074903
-17344 1904 7240 0.195269710490606 0.195269710490606 -104.9792593 39.7074903 -104.9792633 39.7057342
-17345 7240 3253 0.196518038239943 0.196518038239943 -104.9792633 39.7057342 -104.9792501 39.7039669
-17347 10090 3086 0.200629327787617 0.200629327787617 -104.9780898 39.7147143 -104.978094 39.71291
-17348 3086 3198 0.202620201680719 0.202620201680719 -104.978094 39.71291 -104.9780683 39.7110879
-17349 3198 6113 0.202237159025195 0.202237159025195 -104.9780683 39.7110879 -104.9780999 39.7092693
-17350 6113 1907 0.200888583811516 0.200888583811516 -104.9780999 39.7092693 -104.9780854 39.7074627
-17351 1907 7242 0.194884252844044 0.194884252844044 -104.9780854 39.7074627 -104.978057 39.7057102
-17352 7242 9217 0.00483789456398776 0.00483789456398776 -104.978057 39.7057102 -104.9780581 39.7056667
-17353 9217 3256 0.188566052149982 0.188566052149982 -104.9780581 39.7056667 -104.9781006 39.7039712
-17354 3256 9215 0.0119202066492219 0.0119202066492219 -104.9781006 39.7039712 -104.9781012 39.703864
-17355 9215 7298 0.204144558375252 0.204144558375252 -104.9781012 39.703864 -104.9781112 39.7020281
-17356 7298 41 0.19415380637197 0.19415380637197 -104.9781112 39.7020281 -104.9780913 39.7002821
-17357 41 3541 0.205611824864656 0.205611824864656 -104.9780913 39.7002821 -104.9780828 39.698433
-17358 3541 4237 0.201941106279095 0.201941106279095 -104.9780828 39.698433 -104.9780828 39.6966169
-17359 4237 1797 0.206450634390855 0.206450634390855 -104.9780828 39.6966169 -104.9781014 39.6947603
-17360 1797 6524 0.103413068253841 0.103413068253841 -104.9781014 39.6947603 -104.9782122 39.6938342
-17377 9185 10092 0.0314361336881962 0.0314361336881962 -104.9985457 39.7503278 -104.9989127 39.7503454
-17384 10093 10094 0.234828178944131 0.234828178944131 -105.0176374 39.7404051 -105.0150249 39.7397537
-17401 4251 8740 0.200540582414647 0.200540582414647 -104.968103 39.6965907 -104.9681084 39.6947872
-17403 10096 4253 0.402448073126268 0.402448073126268 -104.9669389 39.6929637 -104.9669334 39.696583
-17404 4253 71 0.405085488859101 0.405085488859101 -104.9669334 39.696583 -104.9669496 39.700226
-17409 7246 3265 0.200993245572831 0.200993245572831 -104.9645976 39.7056725 -104.9646191 39.703865
-17410 3265 7307 0.200743622516842 0.200743622516842 -104.9646191 39.703865 -104.9646054 39.7020597
-17411 7307 77 0.204688793990349 0.204688793990349 -104.9646054 39.7020597 -104.9645973 39.7002189
-17413 10097 10082 0.0500367848211035 0.0500367848211035 -104.9829203 39.6885931 -104.9834085 39.6888408
-17415 10098 10099 0.0500389645311151 0.0500389645311151 -104.9838645 39.6893197 -104.9835426 39.688944
-17416 10099 10082 0.0162280043989145 0.0162280043989145 -104.9835426 39.688944 -104.9834085 39.6888408
-17418 10100 10101 0.0207018118679025 0.0207018118679025 -104.982915 39.6890761 -104.9831564 39.6890637
-17430 10092 10048 0.0309885486655971 0.0309885486655971 -104.9989127 39.7503454 -104.9991687 39.7505427
-17431 10048 8614 0.0518778938210734 0.0518778938210734 -104.9991687 39.7505427 -104.9995987 39.7508719
-17432 8614 8472 0.0531907688732488 0.0531907688732488 -104.9995987 39.7508719 -105.0000361 39.7512121
-17433 8472 1066 0.0523689032311119 0.0523689032311119 -105.0000361 39.7512121 -105.000472 39.751543
-17434 1066 1606 0.051557001219416 0.051557001219416 -105.000472 39.751543 -105.000898 39.7518712
-17435 1606 8366 0.139200065042292 0.139200065042292 -105.000898 39.7518712 -105.0020448 39.7527599
-17437 6713 10092 0.0743345743256074 0.0743345743256074 -104.9982781 39.7498884 -104.9989127 39.7503454
-17441 3193 3081 0.201349842824614 0.201349842824614 -104.9827804 39.7111342 -104.9827112 39.7129442
-17442 3081 10108 0.178416289777232 0.178416289777232 -104.9827112 39.7129442 -104.9827539 39.7145484
-17444 3193 6109 0.202397968765167 0.202397968765167 -104.9827804 39.7111342 -104.9827877 39.709314
-17445 6109 1899 0.201875824929032 0.201875824929032 -104.9827877 39.709314 -104.9827966 39.7074985
-17446 1899 7237 0.199007784951822 0.199007784951822 -104.9827966 39.7074985 -104.9828076 39.7057088
-17447 7237 3247 0.203972993087409 0.203972993087409 -104.9828076 39.7057088 -104.9827863 39.7038745
-17449 10109 7288 0.156689817874906 0.156689817874906 -104.9827914 39.7033844 -104.9828061 39.7019753
-17450 7288 33 0.190916174685026 0.190916174685026 -104.9828061 39.7019753 -104.982789 39.7002584
-17451 33 3532 0.205910894729705 0.205910894729705 -104.982789 39.7002584 -104.9827863 39.6984066
-17452 3532 6522 0.0640042155752525 0.0640042155752525 -104.9827863 39.6984066 -104.982762 39.6978313
-17454 3078 3192 0.201894846275699 0.201894846275699 -104.9839851 39.7129498 -104.9840078 39.7111342
-17455 3192 6108 0.201673919779454 0.201673919779454 -104.9840078 39.7111342 -104.9840322 39.7093206
-17456 6108 1898 0.20260827746412 0.20260827746412 -104.9840322 39.7093206 -104.9840325 39.7074985
-17457 1898 7236 0.20276033286578 0.20276033286578 -104.9840325 39.7074985 -104.9839553 39.705676
-17458 7236 3246 0.202520180127379 0.202520180127379 -104.9839553 39.705676 -104.9839622 39.7038547
-17459 3246 10110 0.0550544054800148 0.0550544054800148 -104.9839622 39.7038547 -104.9839674 39.7033596
-17460 10110 7286 0.154666066923182 0.154666066923182 -104.9839674 39.7033596 -104.983982 39.7019687
-17461 7286 29 0.190176683040096 0.190176683040096 -104.983982 39.7019687 -104.983982 39.7002584
-17463 1900 7238 0.196467409698081 0.196467409698081 -104.981627 39.707488 -104.981606 39.7057212
-17464 7238 3249 0.197271278467775 0.197271278467775 -104.981606 39.7057212 -104.9816104 39.7039471
-17465 3249 7293 0.215893772854934 0.215893772854934 -104.9816104 39.7039471 -104.9815761 39.7020057
-17466 7293 35 0.191661158901488 0.191661158901488 -104.9815761 39.7020057 -104.9815932 39.7002821
-17467 35 3534 0.208592623812739 0.208592623812739 -104.9815932 39.7002821 -104.9815417 39.6984066
-17468 3534 6523 0.163291338158479 0.163291338158479 -104.9815417 39.6984066 -104.9817185 39.6969444
-17470 10108 5278 0.0774622106782589 0.0774622106782589 -104.9827539 39.7145484 -104.9828424 39.7138551
-17471 5278 3080 0.101220750760019 0.101220750760019 -104.9828424 39.7138551 -104.9828429 39.7129448
-17472 3080 3193 0.201400503113628 0.201400503113628 -104.9828429 39.7129448 -104.9827804 39.7111342
-17474 5940 471 0.312751802930415 0.312751802930415 -105.0154315 39.7536072 -105.017379 39.7512262
-18580 7765 5716 0.0511772806374418 0.0511772806374418 -105.0351796 39.7802141 -105.0357784 39.7802062
-17491 10112 10093 0.359402757134602 0.359402757134602 -105.0218404 39.7404488 -105.0176374 39.7404051
-17492 10093 10113 0.194903624807864 0.194903624807864 -105.0176374 39.7404051 -105.0153589 39.7403535
-17493 10113 2201 0.0582804268216835 0.0582804268216835 -105.0153589 39.7403535 -105.0146775 39.7403403
-17494 2201 10114 0.186967502007765 0.186967502007765 -105.0146775 39.7403403 -105.0124916 39.7402957
-17495 10114 8390 0.0733141120559894 0.0733141120559894 -105.0124916 39.7402957 -105.0116345 39.7402771
-17496 8390 10115 0.462273198293161 0.462273198293161 -105.0116345 39.7402771 -105.0062313 39.7401322
-17498 9631 400 0.267469433354519 0.267469433354519 -105.0062339 39.740258 -105.00936 39.7403456
-17531 10127 4931 0.0143150280274793 0.0143150280274793 -104.9989934 39.7413574 -104.9988399 39.7414088
-17499 400 10116 0.288854082427149 0.288854082427149 -105.00936 39.7403456 -105.0127369 39.7404199
-17500 10116 10117 0.226779392941661 0.226779392941661 -105.0127369 39.7404199 -105.0153883 39.7404728
-17539 8982 8937 0.19614593492264 0.19614593492264 -104.9891588 39.7833529 -104.9891177 39.7851166
-17501 10117 10118 0.252256323985904 0.252256323985904 -105.0153883 39.7404728 -105.0183374 39.7405364
-17502 10118 8413 0.301706026949727 0.301706026949727 -105.0183374 39.7405364 -105.0218658 39.7405653
-17504 10094 9835 0.207906613588927 0.207906613588927 -105.0150249 39.7397537 -105.0143087 39.7379669
-17542 10131 10132 0.234004969584105 0.234004969584105 -104.9893756 39.7833551 -104.9893554 39.7854595
-17547 8426 8983 0.15801309875704 0.15801309875704 -104.9895595 39.7833438 -104.9895187 39.7819231
-17550 10130 10134 0.614829488291655 0.614829488291655 -104.9891097 39.7854604 -104.9884513 39.7909665
-17551 7135 4849 0.106906878995063 0.106906878995063 -104.9754213 39.7729633 -104.9763149 39.7736361
-17552 4849 915 0.103932392061615 0.103932392061615 -104.9763149 39.7736361 -104.9771733 39.7742982
-17553 915 2299 0.103080430089244 0.103080430089244 -104.9771733 39.7742982 -104.9780262 39.7749537
-17554 2299 10137 0.014910815675823 0.014910815675823 -104.9780262 39.7749537 -104.9781496 39.7750485
-17556 10137 9054 0.0810396295718394 0.0810396295718394 -104.9781496 39.7750485 -104.9786512 39.775667
-17558 10138 6943 0.064892686762443 0.064892686762443 -104.9667127 39.7813542 -104.9666886 39.7819375
-17559 6943 8140 0.201702874937987 0.201702874937987 -104.9666886 39.7819375 -104.9666698 39.7837514
-17560 8140 10139 0.469612869716675 0.469612869716675 -104.9666698 39.7837514 -104.9644686 39.7876212
-17562 7137 211 0.0939410437080962 0.0939410437080962 -104.9680592 39.7786642 -104.9672465 39.7792331
-17563 211 480 0.0535285680999835 0.0535285680999835 -104.9672465 39.7792331 -104.9669782 39.7796681
-17598 6899 5259 0.128421696790864 0.128421696790864 -104.9597428 39.769281 -104.9597331 39.7681261
-17566 8539 10140 0.135369629803794 0.135369629803794 -104.9669081 39.7808609 -104.967225 39.7796681
-17568 10141 10142 0.0931846548427409 0.0931846548427409 -104.9684346 39.7796533 -104.967563 39.7791497
-17575 10147 10148 0.0907607828573939 0.0907607828573939 -104.9445492 39.7800907 -104.9456113 39.7800893
-17576 10148 9823 0.350917184183612 0.350917184183612 -104.9456113 39.7800893 -104.9497178 39.7800947
-17577 9823 9805 0.0148959688810153 0.0148959688810153 -104.9497178 39.7800947 -104.9498921 39.7800929
-17578 9805 10149 0.0247571116201832 0.0247571116201832 -104.9498921 39.7800929 -104.9501818 39.780095
-17579 10149 8243 0.229215025506836 0.229215025506836 -104.9501818 39.780095 -104.952864 39.7801147
-17580 8243 9502 0.0511227471188157 0.0511227471188157 -104.952864 39.7801147 -104.9534622 39.7801206
-17581 9502 7326 0.0563854594047154 0.0563854594047154 -104.9534622 39.7801206 -104.954122 39.7801258
-17582 7326 5762 0.0999481200631645 0.0999481200631645 -104.954122 39.7801258 -104.9552914 39.7801086
-17583 5762 7873 0.0518041802099649 0.0518041802099649 -104.9552914 39.7801086 -104.9558976 39.7801127
-17584 7873 10150 0.102000136506063 0.102000136506063 -104.9558976 39.7801127 -104.9570912 39.7801189
-17585 10150 5014 0.098101103191891 0.098101103191891 -104.9570912 39.7801189 -104.9582392 39.7801189
-17586 5014 5058 0.089850875454823 0.089850875454823 -104.9582392 39.7801189 -104.9592906 39.7801271
-18718 7866 4048 0.178217561946718 0.178217561946718 -105.0343209 39.7197519 -105.0343046 39.7181492
-17587 5058 10151 0.211959888507267 0.211959888507267 -104.9592906 39.7801271 -104.961771 39.7801275
-17589 215 9282 0.125167866609679 0.125167866609679 -104.9654677 39.7803353 -104.9667713 39.7808486
-17591 213 9816 0.299047510838406 0.299047510838406 -104.9655888 39.7798206 -104.962098 39.7800102
-17593 9229 9826 0.176982927136907 0.176982927136907 -104.9604654 39.7803167 -104.9625227 39.7801333
-17595 6940 10152 0.0583015149781026 0.0583015149781026 -104.9587435 39.7819608 -104.9592664 39.7822976
-18120 6030 10257 0.0455676937571294 0.0455676937571294 -105.0106854 39.7854577 -105.010685 39.7858675
-17597 5060 6899 0.402535335538281 0.402535335538281 -104.9594167 39.7728924 -104.9597428 39.769281
-17599 5259 2791 0.130368767280199 0.130368767280199 -104.9597331 39.7681261 -104.9597448 39.7669537
-17600 2791 4469 0.135446736738612 0.135446736738612 -104.9597448 39.7669537 -104.9597421 39.7657356
-17601 4469 884 0.138505584507757 0.138505584507757 -104.9597421 39.7657356 -104.9597488 39.76449
-17602 884 1164 0.139078051750381 0.139078051750381 -104.9597488 39.76449 -104.959733 39.7632393
-17603 1164 9871 0.139057579408235 0.139057579408235 -104.959733 39.7632393 -104.9597508 39.7619888
-17604 9871 8075 0.138249096495162 0.138249096495162 -104.9597508 39.7619888 -104.9597467 39.7607455
-17605 8075 10153 0.00462704346608534 0.00462704346608534 -104.9597467 39.7607455 -104.959748 39.7607039
-17606 10153 3043 0.14110788802663 0.14110788802663 -104.959748 39.7607039 -104.9597701 39.759435
-17607 3043 6341 0.135895639019006 0.135895639019006 -104.9597701 39.759435 -104.9597275 39.7582133
-17608 6341 4343 0.137400774019599 0.137400774019599 -104.9597275 39.7582133 -104.9597614 39.7569779
-17609 4343 5639 0.138956387861239 0.138956387861239 -104.9597614 39.7569779 -104.9597878 39.7557284
-17610 5639 3570 0.141821620771527 0.141821620771527 -104.9597878 39.7557284 -104.9597446 39.7544534
-17611 3570 830 0.137661147763222 0.137661147763222 -104.9597446 39.7544534 -104.9597529 39.7532154
-17612 830 7843 0.140550687821679 0.140550687821679 -104.9597529 39.7532154 -104.9597495 39.7519514
-17613 7843 10088 0.137593188904098 0.137593188904098 -104.9597495 39.7519514 -104.9597448 39.750714
-17614 10088 9941 0.137660243266343 0.137660243266343 -104.9597448 39.750714 -104.9597507 39.749476
-17615 9941 8135 0.139584464123887 0.139584464123887 -104.9597507 39.749476 -104.9597582 39.7482207
-17616 8135 3690 0.141707714550209 0.141707714550209 -104.9597582 39.7482207 -104.959805 39.7469468
-17617 3690 4596 0.241404416022683 0.241404416022683 -104.959805 39.7469468 -104.9598011 39.7447758
-17619 5016 3319 0.0948083090873271 0.0948083090873271 -104.9581399 39.7819575 -104.9570312 39.7819252
-17620 3319 8996 0.0798486506362173 0.0798486506362173 -104.9570312 39.7819252 -104.9560968 39.781931
-17621 8996 7874 0.0190759275307072 0.0190759275307072 -104.9560968 39.781931 -104.9558736 39.7819341
-17622 7874 5755 0.0623471034770475 0.0623471034770475 -104.9558736 39.7819341 -104.9551441 39.7819442
-17623 5755 5758 0.0361266791563275 0.0361266791563275 -104.9551441 39.7819442 -104.9547235 39.7819113
-17624 5758 7327 0.0520708883616353 0.0520708883616353 -104.9547235 39.7819113 -104.9541142 39.7819179
-17626 5016 10154 0.164101634929309 0.164101634929309 -104.9581399 39.7819575 -104.9581426 39.7834333
-17627 10155 2882 0.710681950052773 0.710681950052773 -104.9592396 39.7916405 -104.9592584 39.7852492
-17629 8136 6947 0.130119100803365 0.130119100803365 -104.9592611 39.7837879 -104.9592799 39.7826178
-17630 6947 10156 0.0163542378359644 0.0163542378359644 -104.9592799 39.7826178 -104.9592737 39.7824708
-17631 10156 10157 0.00955659663824098 0.00955659663824098 -104.9592737 39.7824708 -104.9592701 39.7823849
-17632 10157 10158 0.00677541465471327 0.00677541465471327 -104.9592701 39.7823849 -104.9592675 39.782324
-17633 10158 10152 0.00293705056146173 0.00293705056146173 -104.9592675 39.782324 -104.9592664 39.7822976
-17634 10152 6939 0.0371287028604903 0.0371287028604903 -104.9592664 39.7822976 -104.9592691 39.7819637
-17636 3318 10150 0.0438638328395073 0.0438638328395073 -104.957059 39.7805126 -104.9570912 39.7801189
-17714 9945 8394 0.147641485758692 0.147641485758692 -104.9846155 39.7523823 -104.9833985 39.7533244
-17659 10160 586 0.405583280940818 0.405583280940818 -104.986015 39.7800954 -104.9889771 39.7829454
-17672 10163 8930 0.930392444069162 0.930392444069162 -104.9855751 39.7798803 -104.9961216 39.7819588
-17675 9053 10164 0.0371557833436508 0.0371557833436508 -104.985575 39.7800251 -104.9860095 39.7800376
-17693 2913 2780 0.0748123840669465 0.0748123840669465 -104.9733488 39.7664884 -104.9727319 39.7669657
-17694 2780 7147 0.116677483921202 0.116677483921202 -104.9727319 39.7669657 -104.9721123 39.7679007
-17696 9056 10047 0.141134759881648 0.141134759881648 -104.9734488 39.7704351 -104.9733504 39.7691681
-17698 7147 5254 0.0284105210258417 0.0284105210258417 -104.9721123 39.7679007 -104.9721136 39.7681562
-17699 5254 10166 0.132906284217118 0.132906284217118 -104.9721136 39.7681562 -104.9720707 39.769351
-17701 6403 10167 0.108541157226703 0.108541157226703 -104.9723255 39.770589 -104.9732322 39.7712725
-17703 6403 6401 0.049228330409525 0.049228330409525 -104.9723255 39.770589 -104.9719701 39.7702406
-17705 10168 10169 0.0501555453420122 0.0501555453420122 -104.9728475 39.7695543 -104.9734325 39.76959
-17707 10047 10169 0.0474349977604191 0.0474349977604191 -104.9733504 39.7691681 -104.9734325 39.76959
-17708 10169 9056 0.0939811582148226 0.0939811582148226 -104.9734325 39.76959 -104.9734488 39.7704351
-17710 9947 3675 0.0669754214474556 0.0669754214474556 -104.9790113 39.7480975 -104.9787278 39.747536
-17712 9204 9945 0.144775125391256 0.144775125391256 -104.9858044 39.7514551 -104.9846155 39.7523823
-17715 8394 2691 0.147869553829969 0.147869553829969 -104.9833985 39.7533244 -104.9821794 39.7542678
-17716 2691 8040 0.145836065451416 0.145836065451416 -104.9821794 39.7542678 -104.9809778 39.7551988
-17717 8040 6567 0.144877875233717 0.144877875233717 -104.9809778 39.7551988 -104.9797794 39.7561201
-17718 6567 4448 0.14778294563884 0.14778294563884 -104.9797794 39.7561201 -104.9785732 39.7570722
-17719 4448 8414 0.0749502518363333 0.0749502518363333 -104.9785732 39.7570722 -104.9779515 39.7575475
-17720 8414 5496 0.069451420913351 0.069451420913351 -104.9779515 39.7575475 -104.9773755 39.757988
-17721 5496 7070 0.148876703091943 0.148876703091943 -104.9773755 39.757988 -104.9761539 39.7589423
-17722 7070 2040 0.14567151330703 0.14567151330703 -104.9761539 39.7589423 -104.9749522 39.7598712
-17723 2040 8073 0.130264739930752 0.130264739930752 -104.9749522 39.7598712 -104.9738736 39.7606988
-17725 8076 3328 0.0639927694114461 0.0639927694114461 -104.9580824 39.7607455 -104.9573341 39.760728
-17728 7879 7332 0.105697567981392 0.105697567981392 -104.9561163 39.7607348 -104.9548798 39.7607265
-17730 2080 2677 0.104069678874741 0.104069678874741 -104.9536567 39.7607265 -104.9524392 39.7607246
-17731 2677 4126 0.107112553379611 0.107112553379611 -104.9524392 39.7607246 -104.9511861 39.7607235
-17732 4126 6682 0.108353172096875 0.108353172096875 -104.9511861 39.7607235 -104.9499185 39.7607282
-17734 7925 5320 0.0826824039230849 0.0826824039230849 -104.9739262 39.7620073 -104.9746129 39.7614836
-17735 5320 2041 0.146468953410165 0.146468953410165 -104.9746129 39.7614836 -104.9758158 39.7605455
-17736 2041 7072 0.146479190259677 0.146479190259677 -104.9758158 39.7605455 -104.9770228 39.7596104
-17737 7072 5498 0.148482454254276 0.148482454254276 -104.9770228 39.7596104 -104.9782485 39.7586642
-17738 5498 4450 0.145207190897223 0.145207190897223 -104.9782485 39.7586642 -104.9794422 39.7577351
-17739 4450 6569 0.147094399400618 0.147094399400618 -104.9794422 39.7577351 -104.9806536 39.7567956
-17740 6569 8042 0.145385409804858 0.145385409804858 -104.9806536 39.7567956 -104.9818522 39.755868
-17741 8042 2693 0.146247210391541 0.146247210391541 -104.9818522 39.755868 -104.9830605 39.7549369
-17742 2693 8396 0.145676314519276 0.145676314519276 -104.9830605 39.7549369 -104.9842635 39.754009
-17743 8396 9946 0.148129197746433 0.148129197746433 -104.9842635 39.754009 -104.9854693 39.7530523
-17744 9946 9324 0.145860656071838 0.145860656071838 -104.9854693 39.7530523 -104.9866859 39.7521326
-17745 9324 10171 0.0856023563285992 0.0856023563285992 -104.9866859 39.7521326 -104.9873856 39.7515819
-17746 10171 7893 0.060719319188507 0.060719319188507 -104.9873856 39.7515819 -104.9878898 39.7511973
-17747 7893 10172 0.145992330998255 0.145992330998255 -104.9878898 39.7511973 -104.9890951 39.7502672
-17749 8285 5779 0.146744468691812 0.146744468691812 -104.9903025 39.7493228 -104.9915202 39.7483927
-17750 5779 8575 0.145685998707777 0.145685998707777 -104.9915202 39.7483927 -104.9927205 39.7474627
-17752 6706 10173 0.0983542102154105 0.0983542102154105 -104.99393 39.7465367 -104.9947299 39.745901
-17754 8485 10174 0.145917669946454 0.145917669946454 -104.995128 39.7455847 -104.9963422 39.7446625
-17755 10174 4934 0.364858401137942 0.364858401137942 -104.9963422 39.7446625 -104.9993415 39.7423284
-17757 8073 5319 0.0151134525874084 0.0151134525874084 -104.9738736 39.7606988 -104.9737854 39.7608166
-17758 5319 2906 0.0542680076543073 0.0542680076543073 -104.9737854 39.7608166 -104.9733507 39.7611723
-17760 9487 1173 0.143948575233632 0.143948575233632 -104.9487218 39.7619316 -104.9487381 39.7632261
-17761 1173 893 0.138648954033686 0.138648954033686 -104.9487381 39.7632261 -104.9487381 39.764473
-17762 893 4476 0.138420042799995 0.138420042799995 -104.9487381 39.764473 -104.9487249 39.7657178
-17763 4476 2799 0.139158608638433 0.139158608638433 -104.9487249 39.7657178 -104.9487061 39.7669692
-17764 2799 5267 0.125667753140422 0.125667753140422 -104.9487061 39.7669692 -104.9487209 39.7680993
-17765 5267 6904 0.122725840536987 0.122725840536987 -104.9487209 39.7680993 -104.9487209 39.769203
-17766 6904 7758 0.206944002479267 0.206944002479267 -104.9487209 39.769203 -104.9487638 39.7710638
-17767 7758 6358 0.203735904589123 0.203735904589123 -104.9487638 39.7710638 -104.9486541 39.7728941
-17768 6358 2391 0.110758482838084 0.110758482838084 -104.9486541 39.7728941 -104.9486382 39.7738901
-17769 2391 7822 0.137036631860385 0.137036631860385 -104.9486382 39.7738901 -104.9486378 39.7751225
-17771 9877 903 0.274330614761652 0.274330614761652 -104.9392992 39.7619966 -104.9393102 39.7644637
-17772 903 9481 0.129817379023696 0.129817379023696 -104.9393102 39.7644637 -104.9392929 39.7656311
-17775 5984 2102 0.100487934544075 0.100487934544075 -104.9257912 39.7801245 -104.9269671 39.7801311
-17776 2102 6508 0.243143603771944 0.243143603771944 -104.9269671 39.7801311 -104.9298124 39.7801232
-17778 6993 399 0.279873647693424 0.279873647693424 -104.9316377 39.7804571 -104.9349127 39.7804818
-17779 399 10175 0.059173942672277 0.059173942672277 -104.9349127 39.7804818 -104.9356047 39.7805014
-17780 10175 6196 0.0719242777998184 0.0719242777998184 -104.9356047 39.7805014 -104.9364456 39.7804736
-17782 6196 10175 0.0719242777998184 0.0719242777998184 -104.9364456 39.7804736 -104.9356047 39.7805014
-17784 10175 10177 0.187235722056553 0.187235722056553 -104.9356047 39.7805014 -104.9359775 39.7821607
-17789 998 8512 0.0641582208600105 0.0641582208600105 -104.9876372 39.7594706 -104.9875407 39.7588984
-17790 8512 3305 0.0698159988608895 0.0698159988608895 -104.9875407 39.7588984 -104.9874361 39.7582757
-17802 9953 10171 0.0758245915635617 0.0758245915635617 -104.9873896 39.7522638 -104.9873856 39.7515819
-17803 10171 8417 0.0691188092256886 0.0691188092256886 -104.9873856 39.7515819 -104.9873865 39.7509603
-17804 8417 7892 0.0154287387029138 0.0154287387029138 -104.9873865 39.7509603 -104.987378 39.7508217
-17805 7892 9203 0.0639309073349984 0.0639309073349984 -104.987378 39.7508217 -104.9873873 39.7502468
-17844 5741 5515 0.1393794725611 0.1393794725611 -104.9994129 39.7730041 -104.9994301 39.7742575
-17807 998 2698 0.471311768879255 0.471311768879255 -104.9876372 39.7594706 -104.9872963 39.7637011
-17809 2563 997 0.102700798846865 0.102700798846865 -104.9865077 39.7643898 -104.9873902 39.763763
-17811 9490 10181 0.787839518624737 0.787839518624737 -104.9975705 39.7571365 -105.0023462 39.7631964
-17813 10182 10183 0.017972037737444 0.017972037737444 -104.9959538 39.755728 -104.9958016 39.7558395
-17814 8277 10182 0.0269375538426571 0.0269375538426571 -104.9961783 39.755558 -104.9959538 39.755728
-17824 10189 9815 0.381548994115635 0.381548994115635 -104.9772538 39.7792023 -104.9728236 39.7796294
-17826 10190 2445 0.108497544218855 0.108497544218855 -104.9982065 39.7695207 -104.9982447 39.770496
-17827 2445 3235 0.140113229632804 0.140113229632804 -104.9982447 39.770496 -104.9982618 39.771756
-17828 3235 5740 0.13721905173768 0.13721905173768 -104.9982618 39.771756 -104.9982189 39.7729896
-17829 5740 5514 0.142685575827079 0.142685575827079 -104.9982189 39.7729896 -104.998222 39.7742728
-17830 5514 6451 0.135469883258712 0.135469883258712 -104.998222 39.7742728 -104.9982284 39.7754911
-17831 6451 6918 0.118104639956123 0.118104639956123 -104.9982284 39.7754911 -104.9981886 39.7765528
-17832 6918 8114 0.200145379388081 0.200145379388081 -104.9981886 39.7765528 -104.9982189 39.7783526
-17841 10191 2446 0.12170288352426 0.12170288352426 -104.9994069 39.7694121 -104.9994058 39.7705066
-17842 2446 3236 0.138990302772576 0.138990302772576 -104.9994058 39.7705066 -104.9994549 39.771756
-17843 3236 5741 0.138828799197264 0.138828799197264 -104.9994549 39.771756 -104.9994129 39.7730041
-17845 5515 6452 0.137212079229824 0.137212079229824 -104.9994301 39.7742575 -104.9993731 39.7754907
-17846 6452 6919 0.118102418388258 0.118102418388258 -104.9993731 39.7754907 -104.9993645 39.7765528
-17847 6919 8115 0.204539971673672 0.204539971673672 -104.9993645 39.7765528 -104.9993433 39.7783922
-17848 8115 2817 0.195950897476267 0.195950897476267 -104.9993433 39.7783922 -104.9993302 39.7801544
-17850 1418 10192 0.0403415193863986 0.0403415193863986 -104.9993559 39.7819419 -104.9993559 39.7823047
-17854 10196 10197 0.298773764193864 0.298773764193864 -104.9706144 39.7902177 -104.9732548 39.7884561
-17858 10197 10201 0.0878537760845695 0.0878537760845695 -104.9732548 39.7884561 -104.9732119 39.7892455
-17859 10202 292 0.12590153135235 0.12590153135235 -105.0028295 39.7602418 -105.0040727 39.760849
-17860 292 10203 0.0920635687067585 0.0920635687067585 -105.0040727 39.760849 -105.0049871 39.7612865
-17862 8296 912 0.421752257927472 0.421752257927472 -104.9951571 39.7549879 -104.9985313 39.7577551
-17863 912 7280 0.346969669094077 0.346969669094077 -104.9985313 39.7577551 -105.0017017 39.7597036
-17865 7279 911 0.343598202777143 0.343598202777143 -105.0017875 39.7595933 -104.998644 39.7576675
-17866 911 8296 0.421457000722742 0.421457000722742 -104.998644 39.7576675 -104.9951571 39.7549879
-17899 10211 10209 0.112127267328736 0.112127267328736 -104.9981065 39.7669418 -104.9969347 39.7673952
-17868 10204 293 0.122668884457017 0.122668884457017 -105.0027544 39.7602964 -105.0037495 39.7610913
-17870 7280 10204 0.11154380602626 0.11154380602626 -105.0017017 39.7597036 -105.0027544 39.7602964
-17872 7280 10202 0.113468069847095 0.113468069847095 -105.0017017 39.7597036 -105.0028295 39.7602418
-17874 10203 305 0.0245172766294025 0.0245172766294025 -105.0049871 39.7612865 -105.0052248 39.7614099
-17876 10205 9191 0.0917966102805814 0.0917966102805814 -105.0050575 39.7612239 -105.0041591 39.7607716
-17877 9191 9065 0.0437309955207218 0.0437309955207218 -105.0041591 39.7607716 -105.0037267 39.7605614
-17879 305 7972 0.0096955565592884 0.0096955565592884 -105.0052248 39.7614099 -105.0052958 39.7614779
-17880 7972 289 0.0364664216753188 0.0364664216753188 -105.0052958 39.7614779 -105.0056941 39.7615954
-17882 291 10205 0.0247656280633611 0.0247656280633611 -105.0052999 39.7613459 -105.0050575 39.7612239
-17884 5356 3010 0.0411976507153233 0.0411976507153233 -104.9861098 39.7479555 -104.9864574 39.7482121
-17885 3010 9955 0.055133452370554 0.055133452370554 -104.9864574 39.7482121 -104.98691 39.7485653
-17887 4390 9202 0.103596100254428 0.103596100254428 -104.9873785 39.7489186 -104.9882201 39.7495889
-17888 9202 10172 0.106228487315193 0.106228487315193 -104.9882201 39.7495889 -104.9890951 39.7502672
-17889 10172 8635 0.104885206719794 0.104885206719794 -104.9890951 39.7502672 -104.9899626 39.7509342
-17890 8635 10207 0.0526738998782486 0.0526738998782486 -104.9899626 39.7509342 -104.9904003 39.7512676
-17891 10207 8290 0.0540408904782361 0.0540408904782361 -104.9904003 39.7512676 -104.9908493 39.7516097
-17893 10181 10208 0.34674805442663 0.34674805442663 -105.0023462 39.7631964 -105.0001687 39.7658275
-17895 9277 9062 0.54179107306149 0.54179107306149 -105.0019955 39.7638914 -105.0060948 39.7601751
-17897 10209 10210 0.15255018083046 0.15255018083046 -104.9969347 39.7673952 -104.9953391 39.76801
-17901 9277 10208 0.265946775924501 0.265946775924501 -105.0019955 39.7638914 -105.0001687 39.7658275
-17902 10208 10211 0.215451375996435 0.215451375996435 -105.0001687 39.7658275 -104.9981065 39.7669418
-17904 4431 5085 0.143171262303537 0.143171262303537 -104.9891666 39.7174681 -104.9908403 39.7174879
-17905 5085 2810 0.11012443165944 0.11012443165944 -104.9908403 39.7174879 -104.9921278 39.7174945
-17906 2810 4675 0.158582360684903 0.158582360684903 -104.9921278 39.7174945 -104.9939817 39.7175143
-17908 10212 9184 0.112885017008347 0.112885017008347 -105.0024206 39.7184748 -105.002927 39.7194123
-17909 9184 10213 0.167377068446941 0.167377068446941 -105.002927 39.7194123 -105.0029442 39.7209175
-18960 10410 7220 0.0501782415904674 0.0501782415904674 -104.9957751 39.7209292 -104.9963617 39.7209372
-17922 6563 8888 0.042430320182906 0.042430320182906 -104.9850303 39.7241197 -104.984536 39.724087
-18662 7647 10214 0.0701815380438801 0.0701815380438801 -105.0345838 39.7277084 -105.03453 39.7283382
-17924 6563 9296 0.044068382651895 0.044068382651895 -104.9850303 39.7241197 -104.9850256 39.724516
-17926 10215 7090 0.0147548324313622 0.0147548324313622 -104.9851861 39.7232104 -104.9850136 39.7232083
-17928 10216 4749 0.0152354550229313 0.0152354550229313 -104.9854611 39.7226759 -104.9854584 39.7225389
-17930 7570 10217 0.020843135953545 0.020843135953545 -104.986258 39.7248774 -104.9865017 39.7248795
-17931 10217 10218 0.00309719141124637 0.00309719141124637 -104.9865017 39.7248795 -104.9865379 39.7248787
-17932 10218 10219 0.0172058483004327 0.0172058483004327 -104.9865379 39.7248787 -104.986739 39.7248742
-17933 10219 10220 0.0101474090092483 0.0101474090092483 -104.986739 39.7248742 -104.9868576 39.7248715
-17934 10220 10221 0.0360135260366549 0.0360135260366549 -104.9868576 39.7248715 -104.9872787 39.7248713
-17972 4922 2816 0.0400924263132539 0.0400924263132539 -104.9919185 39.7316877 -104.9916596 39.7319883
-17974 2816 6585 0.00731734573972315 0.00731734573972315 -104.9916596 39.7319883 -104.9916584 39.7320541
-17975 6585 5367 0.200230086509337 0.200230086509337 -104.9916584 39.7320541 -104.9916497 39.7338548
-17976 5367 7125 0.155428268463703 0.155428268463703 -104.9916497 39.7338548 -104.9916497 39.7352526
-17977 7125 613 0.178580861083004 0.178580861083004 -104.9916497 39.7352526 -104.9916591 39.7368586
-17978 613 10025 0.175711834233665 0.175711834233665 -104.9916591 39.7368586 -104.9916503 39.7384388
-17979 10025 5802 0.173776139007193 0.173776139007193 -104.9916503 39.7384388 -104.9916445 39.7400016
-17981 10240 4687 0.0705066389488715 0.0705066389488715 -104.9949413 39.7336839 -104.9941176 39.7336555
-17983 4687 4687 0.000550727458732684 0.000550727458732684 -104.9941236 39.7336537 -104.9941176 39.7336555
-17984 4687 4687 0.000550727458732684 0.000550727458732684 -104.9941176 39.7336555 -104.9941236 39.7336537
-18009 8002 984 0.100041012213977 0.100041012213977 -104.9752512 39.7272769 -104.9740814 39.7272791
-17985 4687 10240 0.0700034048729296 0.0700034048729296 -104.9941236 39.7336537 -104.9949413 39.7336839
-18666 5656 5188 0.106406434125344 0.106406434125344 -105.0410801 39.7255057 -105.0410909 39.7245488
-17988 7225 10241 0.0510702903225008 0.0510702903225008 -104.9965056 39.7336859 -104.9971028 39.7336811
-17989 10241 10242 0.042886354540747 0.042886354540747 -104.9971028 39.7336811 -104.9976043 39.7336771
-17990 10242 10243 0.00251406456949564 0.00251406456949564 -104.9976043 39.7336771 -104.9976337 39.733677
-17991 10243 10244 0.0456685462506317 0.0456685462506317 -104.9976337 39.733677 -104.9981677 39.7336833
-17992 10244 6646 0.0418628731234282 0.0418628731234282 -104.9981677 39.7336833 -104.9986572 39.7336891
-17993 6646 10245 0.0664019508555837 0.0664019508555837 -104.9986572 39.7336891 -104.9994337 39.733694
-17994 10245 3947 0.060646848519195 0.060646848519195 -104.9994337 39.733694 -105.0001429 39.7336985
-17995 3947 5379 0.0623892176423501 0.0623892176423501 -105.0001429 39.7336985 -105.0008725 39.7336985
-17997 1213 10080 0.0402726084737909 0.0402726084737909 -104.986618 39.727272 -104.9861473 39.727283
-17998 10080 10246 0.108362052771117 0.108362052771117 -104.9861473 39.727283 -104.9848802 39.7272853
-17999 10246 10095 0.0546330327153493 0.0546330327153493 -104.9848802 39.7272853 -104.9842414 39.72728
-18000 10095 8786 0.0549646837479 0.0549646837479 -104.9842414 39.72728 -104.9835987 39.7272766
-18001 8786 8792 0.105830391023483 0.105830391023483 -104.9835987 39.7272766 -104.9823612 39.7272763
-18002 8792 3158 0.105240490373796 0.105240490373796 -104.9823612 39.7272763 -104.9811306 39.7272781
-18159 4090 6035 0.19402761072914 0.19402761072914 -105.0141021 39.7838734 -105.0141159 39.7856183
-18003 3158 4977 0.10185576028858 0.10185576028858 -104.9811306 39.7272781 -104.9799397 39.7272649
-18004 4977 10247 0.0996051433548501 0.0996051433548501 -104.9799397 39.7272649 -104.978775 39.7272619
-18005 10247 9657 0.103966153648075 0.103966153648075 -104.978775 39.7272619 -104.9775593 39.727263
-18006 9657 6607 0.0489689324196462 0.0489689324196462 -104.9775593 39.727263 -104.9769867 39.7272649
-18007 6607 5049 0.0497044916016373 0.0497044916016373 -104.9769867 39.7272649 -104.9764055 39.727267
-18008 5049 8002 0.0987213073079673 0.0987213073079673 -104.9764055 39.727267 -104.9752512 39.7272769
-18010 984 5105 0.0497125648622764 0.0497125648622764 -104.9740814 39.7272791 -104.9735001 39.7272799
-18011 5105 8832 0.0485496698653307 0.0485496698653307 -104.9735001 39.7272799 -104.9729324 39.7272785
-18012 8832 9412 0.0501680163419149 0.0501680163419149 -104.9729324 39.7272785 -104.9723458 39.7272828
-18013 9412 7150 0.0490112280018507 0.0490112280018507 -104.9723458 39.7272828 -104.9717727 39.727283
-18014 7150 2798 0.0490643527188194 0.0490643527188194 -104.9717727 39.727283 -104.971199 39.7272868
-18015 2798 5116 0.0499797709026575 0.0499797709026575 -104.971199 39.7272868 -104.9706146 39.727291
-18016 5116 9330 0.049524695482998 0.049524695482998 -104.9706146 39.727291 -104.9700355 39.7272893
-18017 9330 4715 0.0504823610322626 0.0504823610322626 -104.9700355 39.7272893 -104.9694452 39.727288
-18018 4715 8873 0.0985202776506121 0.0985202776506121 -104.9694452 39.727288 -104.9682932 39.7272934
-18019 8873 7354 0.0991107696717597 0.0991107696717597 -104.9682932 39.7272934 -104.9671343 39.7272994
-18020 7354 5413 0.108951695628557 0.108951695628557 -104.9671343 39.7272994 -104.9658604 39.7273116
-18022 8149 8697 0.098981334337126 0.098981334337126 -104.9394514 39.727421 -104.9406072 39.727374
-18023 8697 10248 0.0156545770448285 0.0156545770448285 -104.9406072 39.727374 -104.940779 39.7273254
-18025 10248 7104 0.0902072497093339 0.0902072497093339 -104.940779 39.7273254 -104.9418336 39.727309
-18026 7104 449 0.046531670732617 0.046531670732617 -104.9418336 39.727309 -104.9423777 39.727311
-18027 449 854 0.0445732430501775 0.0445732430501775 -104.9423777 39.727311 -104.9428989 39.7273129
-18028 854 10249 0.0446596776858281 0.0446596776858281 -104.9428989 39.7273129 -104.9434211 39.7273161
-18029 10249 9698 0.0482515561513205 0.0482515561513205 -104.9434211 39.7273161 -104.9439853 39.7273195
-18030 9698 10250 0.0474036186605965 0.0474036186605965 -104.9439853 39.7273195 -104.9445396 39.7273207
-18031 10250 6018 0.047797038051314 0.047797038051314 -104.9445396 39.7273207 -104.9450985 39.727322
-18032 6018 10251 0.0473952539943275 0.0473952539943275 -104.9450985 39.727322 -104.9456527 39.7273237
-18033 10251 3455 0.0464887102201997 0.0464887102201997 -104.9456527 39.7273237 -104.9461963 39.7273253
-18034 3455 7682 0.0950045363584629 0.0950045363584629 -104.9461963 39.7273253 -104.9473072 39.7273292
-19711 10628 10629 0.0313669947000456 0.0313669947000456 -105.0039101 39.7341658 -105.0042425 39.7342851
-18035 7682 8018 0.0938092255843609 0.0938092255843609 -104.9473072 39.7273292 -104.9484041 39.7273359
-18036 8018 6695 0.0944228486315978 0.0944228486315978 -104.9484041 39.7273359 -104.9495082 39.7273395
-18037 6695 4132 0.0905761672491303 0.0905761672491303 -104.9495082 39.7273395 -104.9505673 39.7273334
-18727 7644 9832 0.176300161007389 0.176300161007389 -105.0318854 39.7277175 -105.0318908 39.729303
-18729 6212 7649 0.275730709453964 0.275730709453964 -105.0367467 39.7257609 -105.0367537 39.7282406
-18038 4132 8863 0.0309494848264702 0.0309494848264702 -104.9505673 39.7273334 -104.9509292 39.7273333
-18039 8863 2633 0.0676202306028496 0.0676202306028496 -104.9509292 39.7273333 -104.9517199 39.7273329
-18040 2633 8861 0.0311034897002001 0.0311034897002001 -104.9517199 39.7273329 -104.9520836 39.7273323
-18041 8861 2052 0.0676910103216562 0.0676910103216562 -104.9520836 39.7273323 -104.9528751 39.7273272
-18042 2052 8871 0.0313177900642343 0.0313177900642343 -104.9528751 39.7273272 -104.9532413 39.7273255
-18043 8871 7982 0.067271802615166 0.067271802615166 -104.9532413 39.7273255 -104.9540279 39.7273206
-18044 7982 7981 0.0326778162339826 0.0326778162339826 -104.9540279 39.7273206 -104.95441 39.7273185
-18045 7981 7321 0.0976461329299173 0.0976461329299173 -104.95441 39.7273185 -104.9555518 39.7273179
-18046 7321 7887 0.0987923725207189 0.0987923725207189 -104.9555518 39.7273179 -104.956707 39.7273201
-18047 7887 3343 0.0990941084892765 0.0990941084892765 -104.956707 39.7273201 -104.9578657 39.7273135
-18048 3343 5022 0.0986991080291596 0.0986991080291596 -104.9578657 39.7273135 -104.9590198 39.7273177
-18049 5022 8729 0.0995709770506032 0.0995709770506032 -104.9590198 39.7273177 -104.9601841 39.7273144
-18050 8729 6262 0.0984844587143486 0.0984844587143486 -104.9601841 39.7273144 -104.9613357 39.7273124
-18051 6262 1012 0.100435040495632 0.100435040495632 -104.9613357 39.7273124 -104.9625101 39.7273084
-18052 1012 3920 0.0983845018704443 0.0983845018704443 -104.9625101 39.7273084 -104.9636605 39.7273016
-18053 3920 3146 0.0986126436689597 0.0986126436689597 -104.9636605 39.7273016 -104.9648136 39.7273031
-18054 3146 5413 0.0895267655685447 0.0895267655685447 -104.9648136 39.7273031 -104.9658604 39.7273116
-18056 7083 10246 0.183851267240735 0.183851267240735 -104.9848713 39.7256319 -104.9848802 39.7272853
-19713 10624 10625 0.048946191319968 0.048946191319968 -105.0029777 39.7364814 -105.0033774 39.7367965
-18057 10246 3811 0.198873820859187 0.198873820859187 -104.9848802 39.7272853 -104.9848706 39.7290738
-18058 3811 5919 0.153816946395634 0.153816946395634 -104.9848706 39.7290738 -104.9848641 39.7304571
-18059 5919 918 0.176756350909337 0.176756350909337 -104.9848641 39.7304571 -104.98484 39.7320466
-18060 918 2205 0.200653782293274 0.200653782293274 -104.98484 39.7320466 -104.9848518 39.7338511
-18061 2205 4854 0.158832380963048 0.158832380963048 -104.9848518 39.7338511 -104.9848436 39.7352795
-18062 4854 9478 0.174098421618631 0.174098421618631 -104.9848436 39.7352795 -104.9848486 39.7368452
-18063 9478 5457 0.176480352381434 0.176480352381434 -104.9848486 39.7368452 -104.9848604 39.7384323
-18065 10252 9243 0.056682383190515 0.056682383190515 -105.0065259 39.7255278 -105.005875 39.7256239
-18067 9110 10252 0.0330932350677699 0.0330932350677699 -105.0069105 39.725495 -105.0065259 39.7255278
-18069 10253 6203 0.215345161639468 0.215345161639468 -105.0092129 39.7256572 -105.0067229 39.7253691
-18071 9115 10254 0.0491155354462148 0.0491155354462148 -105.0110763 39.7256175 -105.010502 39.7256195
-18075 10254 10255 0.0642041289943666 0.0642041289943666 -105.010502 39.7256195 -105.0097514 39.7256305
-18076 10255 10253 0.0461489416178021 0.0461489416178021 -105.0097514 39.7256305 -105.0092129 39.7256572
-18077 10253 9108 0.280904320228077 0.280904320228077 -105.0092129 39.7256572 -105.0059283 39.7256613
-18106 4661 10263 0.0487469518611321 0.0487469518611321 -105.0193192 39.7874319 -105.0198897 39.7874342
-18107 10263 1291 0.0497384845482417 0.0497384845482417 -105.0198897 39.7874342 -105.0204718 39.7874371
-18108 1291 10264 0.0496989025904687 0.0496989025904687 -105.0204718 39.7874371 -105.0210534 39.7874313
-18109 10264 4563 0.0505706606603651 0.0505706606603651 -105.0210534 39.7874313 -105.0216452 39.7874253
-18110 4563 10265 0.0486836289638941 0.0486836289638941 -105.0216452 39.7874253 -105.0222149 39.787432
-18111 10265 6287 0.0497296125808977 0.0497296125808977 -105.0222149 39.787432 -105.0227969 39.7874344
-18112 6287 10135 0.0504212055729903 0.0504212055729903 -105.0227969 39.7874344 -105.023387 39.7874357
-18113 10135 2731 0.0489350482169507 0.0489350482169507 -105.023387 39.7874357 -105.0239597 39.7874332
-18114 2731 6420 0.048465461986869 0.048465461986869 -105.0239597 39.7874332 -105.0245269 39.7874302
-18115 6420 5790 0.0578817224647719 0.0578817224647719 -105.0245269 39.7874302 -105.0252043 39.7874266
-18117 8844 10266 0.374943168729483 0.374943168729483 -105.0064203 39.7882499 -105.0106756 39.7890735
-18166 2719 9346 0.101115603929332 0.101115603929332 -105.0239361 39.7820944 -105.0251194 39.7820982
-18167 9346 9392 0.0111914858812043 0.0111914858812043 -105.0251194 39.7820982 -105.0252309 39.782151
-18168 9392 3751 0.0968414516342271 0.0968414516342271 -105.0252309 39.782151 -105.0263639 39.7821708
-18169 3751 10278 0.0782538471461698 0.0782538471461698 -105.0263639 39.7821708 -105.0272582 39.7823223
-18175 4073 6058 0.198316836648763 0.198316836648763 -105.0316273 39.7838408 -105.0316334 39.7856243
-18176 6058 5798 0.200796475018558 0.200796475018558 -105.0316334 39.7856243 -105.0316273 39.7874301
-18197 6750 5252 0.185979531851002 0.185979531851002 -105.0275762 39.7639672 -105.0295723 39.7646329
-18198 5252 3974 0.035323188020151 0.035323188020151 -105.0295723 39.7646329 -105.0299675 39.7647258
-18200 9357 2431 0.202519432604137 0.202519432604137 -105.0363814 39.7731219 -105.0363839 39.7713006
-18201 2431 9370 0.199383622965617 0.199383622965617 -105.0363839 39.7713006 -105.0363839 39.7695075
-18202 9370 1686 0.206118508992277 0.206118508992277 -105.0363839 39.7695075 -105.0363632 39.7676539
-18203 1686 6875 0.204292305654176 0.204292305654176 -105.0363632 39.7676539 -105.0363465 39.7658167
-18588 6666 1137 0.0495387040987843 0.0495387040987843 -105.0398227 39.780198 -105.0404024 39.780201
-18589 1137 6968 0.0501615414722825 0.0501615414722825 -105.0404024 39.780201 -105.0409894 39.7802021
-18590 6968 7504 0.0501273333828588 0.0501273333828588 -105.0409894 39.7802021 -105.041576 39.7802031
-18591 7504 9407 0.0988444534637431 0.0988444534637431 -105.041576 39.7802031 -105.0427327 39.7802037
-18592 9407 7479 0.0538727285881741 0.0538727285881741 -105.0427327 39.7802037 -105.0433631 39.7802085
-18593 7479 5581 0.0510099428615072 0.0510099428615072 -105.0433631 39.7802085 -105.04396 39.7802131
-18594 5581 10328 0.0992130715738959 0.0992130715738959 -105.04396 39.7802131 -105.045121 39.7802175
-18595 10328 10329 0.693578278671619 0.693578278671619 -105.045121 39.7802175 -105.0532374 39.7802069
-18597 1845 2579 0.175048810960168 0.175048810960168 -105.031231 39.721358 -105.0312476 39.7229322
-18598 2579 5177 0.17911429796522 0.17911429796522 -105.0312476 39.7229322 -105.031239 39.724543
-18599 5177 10332 0.0225943601934419 0.0225943601934419 -105.031239 39.724543 -105.0312506 39.724746
-18604 6211 7648 0.275618961394926 0.275618961394926 -105.0356646 39.7257653 -105.0356619 39.728244
-18605 7648 8065 0.262676196305861 0.262676196305861 -105.0356619 39.728244 -105.0356674 39.7306063
-18711 2590 5183 0.178568260386205 0.178568260386205 -105.0372775 39.7229371 -105.0372815 39.724543
-18712 5183 5651 0.104244503206479 0.104244503206479 -105.0372815 39.724543 -105.0372987 39.7254804
-18747 6210 10338 0.0125158344567017 0.0125158344567017 -105.0337279 39.7260547 -105.0338594 39.7261041
-18748 10338 10206 0.0559739547988456 0.0559739547988456 -105.0338594 39.7261041 -105.0345139 39.726102
-18749 10206 10338 0.0559739547988456 0.0559739547988456 -105.0345139 39.726102 -105.0338594 39.7261041
-18751 2596 5186 0.177768815603995 0.177768815603995 -105.0389102 39.7229396 -105.0389187 39.7245383
-18758 2588 5182 0.176322049262719 0.176322049262719 -105.0361794 39.7229441 -105.0361829 39.7245298
-18759 5182 5650 0.106248688527315 0.106248688527315 -105.0361829 39.7245298 -105.0361904 39.7254853
-18765 10339 10341 0.0322810460432902 0.0322810460432902 -105.0047672 39.7397925 -105.0049362 39.7395329
-18767 4492 10342 0.0173161946805903 0.0173161946805903 -105.0052379 39.7395355 -105.0050354 39.7395334
-18768 10342 10341 0.00848220864637094 0.00848220864637094 -105.0050354 39.7395334 -105.0049362 39.7395329
-18770 5616 10343 0.00845077111169589 0.00845077111169589 -105.0015651 39.7393715 -105.0014663 39.7393735
-18771 10343 10344 0.0509950035054565 0.0509950035054565 -105.0014663 39.7393735 -105.0008699 39.7393725
-18772 10344 9634 0.100553817919852 0.100553817919852 -105.0008699 39.7393725 -105.0008673 39.7384682
-18950 6234 7639 0.179364622734642 0.179364622734642 -104.9975473 39.7256987 -104.9975661 39.7273117
-18789 10350 10131 1.72659496196287 1.72659496196287 -104.9945291 39.7683411 -104.9893756 39.7833551
-18791 10210 10350 0.0784105528331039 0.0784105528331039 -104.9953391 39.76801 -104.9945291 39.7683411
-18793 9064 10351 0.108141289805084 0.108141289805084 -104.9980982 39.766727 -104.9969332 39.7671064
-18795 10351 8944 0.165792281012932 0.165792281012932 -104.9969332 39.7671064 -104.9951643 39.7677183
-18797 8946 8970 0.101566925839608 0.101566925839608 -104.9938162 39.7672158 -104.9947845 39.7677453
-18805 431 8911 0.368100622266312 0.368100622266312 -104.9935559 39.7671283 -104.9912548 39.7699266
-18807 8935 10353 0.0653020622045421 0.0653020622045421 -104.9904048 39.7737279 -104.990472 39.7731429
-18865 217 6354 0.250152442533131 0.250152442533131 -105.0109346 39.7232696 -105.0110405 39.7255178
-18867 10372 10373 0.00433033984408308 0.00433033984408308 -105.0086117 39.7209279 -105.0085612 39.7209251
-18809 2956 8964 0.839971785186466 0.839971785186466 -104.9919912 39.7706248 -104.9950202 39.7634385
-18811 10353 8914 0.0131507104865587 0.0131507104865587 -104.990472 39.7731429 -104.9904906 39.7730255
-18813 10354 8436 0.0634565167907247 0.0634565167907247 -105.0148848 39.7420462 -105.014551 39.7415365
-18815 8440 10354 0.130317184994069 0.130317184994069 -105.0158022 39.7429821 -105.0148848 39.7420462
-18818 8431 4422 0.07184295360215 0.07184295360215 -105.0163799 39.7437893 -105.0169124 39.7442891
-18820 8435 10355 0.137076541565926 0.137076541565926 -105.0147581 39.7421922 -105.015729 39.7431732
-18825 9181 10356 0.159461421615407 0.159461421615407 -105.0158598 39.7429416 -105.0153708 39.7415577
-18827 10357 10358 0.20146281055654 0.20146281055654 -105.0148187 39.7409989 -105.0144967 39.7392041
-18829 9180 10359 0.028613707454695 0.028613707454695 -105.0141257 39.7376931 -105.0141666 39.7374377
-18833 10360 10361 0.0535066603860974 0.0535066603860974 -105.0142282 39.7371345 -105.0143588 39.7366639
-18835 10361 10362 0.0845690343766548 0.0845690343766548 -105.0143588 39.7366639 -105.0146327 39.7359331
-18836 10362 9179 0.0218653086870073 0.0218653086870073 -105.0146327 39.7359331 -105.0147208 39.7357485
-19605 10512 10584 0.0688213399515618 0.0688213399515618 -104.9902689 39.7091497 -104.9910734 39.7091553
-20576 10864 10865 0.0279630258161778 0.0279630258161778 -105.0249015 39.7609531 -105.024575 39.7609374
-18838 10363 8434 0.438288246661524 0.438288246661524 -105.013913 39.7376771 -105.0143556 39.741604
-18840 8433 10364 0.0515496120111284 0.0515496120111284 -105.0141326 39.7366784 -105.0140112 39.7371325
-18842 10365 10363 0.0256601639624377 0.0256601639624377 -105.0139511 39.7374482 -105.013913 39.7376771
-18844 10364 10365 0.0354783965202197 0.0354783965202197 -105.0140112 39.7371325 -105.0139511 39.7374482
-18848 10367 8387 0.416611762681733 0.416611762681733 -105.0138601 39.7376849 -105.0139458 39.741431
-18850 10366 10367 0.0267687636085769 0.0267687636085769 -105.0139219 39.7374489 -105.0138601 39.7376849
-18852 10368 10369 0.0527715034881913 0.0527715034881913 -105.0143032 39.7371374 -105.0144214 39.7366716
-18854 10370 10368 0.0348446889076446 0.0348446889076446 -105.01426 39.737449 -105.0143032 39.7371374
-18856 10371 10370 0.031482834490968 0.031482834490968 -105.0142451 39.7377319 -105.01426 39.737449
-18858 9836 10370 0.0328670117804623 0.0328670117804623 -105.0142819 39.7377441 -105.01426 39.737449
-18921 10399 10400 0.0895277934361984 0.0895277934361984 -105.0126923 39.7491278 -105.0134743 39.7485923
-18922 10400 10401 0.16717380860502 0.16717380860502 -105.0134743 39.7485923 -105.0137455 39.7471034
-18923 10402 10383 0.0291115464827756 0.0291115464827756 -105.012332 39.7504473 -105.0124996 39.7502194
-18924 10383 10403 0.0309778660865677 0.0309778660865677 -105.0124996 39.7502194 -105.0122636 39.750008
-18925 10403 10390 0.0429604527526701 0.0429604527526701 -105.0122636 39.750008 -105.0126243 39.749739
-18927 10404 10405 0.0626862314087788 0.0626862314087788 -105.0107841 39.7498186 -105.0109524 39.7503673
-18930 10406 10405 0.108269005965165 0.108269005965165 -105.0097302 39.7501122 -105.0109524 39.7503673
-18932 1241 6737 0.0570520014832054 0.0570520014832054 -105.0205242 39.7613979 -105.0203579 39.760901
-18934 8100 6923 0.164900679548878 0.164900679548878 -105.0200789 39.7613979 -105.018184 39.7611196
-18936 6923 8099 0.163064822440362 0.163064822440362 -105.018184 39.7611196 -105.016277 39.7610801
-18938 7928 8098 0.0730856765280865 0.0730856765280865 -105.0162425 39.7603392 -105.0160862 39.7609854
-18940 4039 4644 0.0827836448037734 0.0827836448037734 -105.0178323 39.7180402 -105.018682 39.7183967
-18943 10407 7448 0.103189406011465 0.103189406011465 -105.0127225 39.7148426 -105.0139289 39.7148415
-19852 10659 3379 0.102335766847439 0.102335766847439 -105.035226 39.7385493 -105.0346077 39.7377613
-18945 4142 10108 0.0206474020512083 0.0206474020512083 -104.9827054 39.7147303 -104.9827539 39.7145484
-18947 5674 2620 0.178145491343884 0.178145491343884 -104.9975487 39.7209311 -104.9975509 39.7225332
-18948 2620 5201 0.177501253416424 0.177501253416424 -104.9975509 39.7225332 -104.9975447 39.7241295
-18949 5201 6234 0.174487220572856 0.174487220572856 -104.9975447 39.7241295 -104.9975473 39.7256987
-18951 7639 8773 0.176238488140281 0.176238488140281 -104.9975661 39.7273117 -104.9975826 39.7288966
-18952 8773 8053 0.178917033730472 0.178917033730472 -104.9975826 39.7288966 -104.9976187 39.7305054
-18953 8053 6598 0.176988972177145 0.176988972177145 -104.9976187 39.7305054 -104.9976193 39.7320971
-18954 6598 10243 0.175681180141988 0.175681180141988 -104.9976193 39.7320971 -104.9976337 39.733677
-18956 1841 7856 0.0582284853716934 0.0582284853716934 -104.9921535 39.7209342 -104.9928343 39.7209379
-18957 7856 4669 0.101085168807405 0.101085168807405 -104.9928343 39.7209379 -104.994016 39.720921
-18979 1764 4509 0.0491583937075752 0.0491583937075752 -104.9769042 39.7146962 -104.9763295 39.7146995
-18980 4509 4971 0.0991296803100638 0.0991296803100638 -104.9763295 39.7146995 -104.9751706 39.7147065
-18981 4971 1516 0.0482432726972035 0.0482432726972035 -104.9751706 39.7147065 -104.9746066 39.7147099
-18982 1516 5304 0.0536166306041211 0.0536166306041211 -104.9746066 39.7147099 -104.9739798 39.7147152
-18983 5304 7951 0.0505628420768163 0.0505628420768163 -104.9739798 39.7147152 -104.9733887 39.7147202
-18984 7951 7950 0.0124795676036534 0.0124795676036534 -104.9733887 39.7147202 -104.9732428 39.7147202
-18985 7950 1083 0.0132964314605761 0.0132964314605761 -104.9732428 39.7147202 -104.9730883 39.714707
-18986 1083 8958 0.019091432638578 0.019091432638578 -104.9730883 39.714707 -104.9728651 39.714707
-18987 8958 1750 0.0565301426139895 0.0565301426139895 -104.9728651 39.714707 -104.9722042 39.714707
-18988 1750 6636 0.100698502633469 0.100698502633469 -104.9722042 39.714707 -104.9710271 39.7146913
-18989 6636 5425 0.0992142460676437 0.0992142460676437 -104.9710271 39.7146913 -104.9698675 39.7147124
-18990 5425 7398 0.100582854167636 0.100582854167636 -104.9698675 39.7147124 -104.9686917 39.7147256
-18992 5674 10413 0.0446816032988726 0.0446816032988726 -104.9975487 39.7209311 -104.9980711 39.720935
-18993 10413 6641 0.0419959523464037 0.0419959523464037 -104.9980711 39.720935 -104.9985621 39.7209387
-18994 6641 3958 0.140215488391596 0.140215488391596 -104.9985621 39.7209387 -105.0002015 39.7209321
-18997 9265 10213 0.108979878639585 0.108979878639585 -105.0016701 39.7209304 -105.0029442 39.7209175
-19957 10683 10676 0.203409384148671 0.203409384148671 -105.0434219 39.7384701 -105.0434166 39.7366408
-18998 10213 9182 0.221716360786737 0.221716360786737 -105.0029442 39.7209175 -105.0055365 39.720906
-18999 9182 4360 0.00485021965067944 0.00485021965067944 -105.0055365 39.720906 -105.0055932 39.7209068
-19000 4360 6082 0.123504109096694 0.123504109096694 -105.0055932 39.7209068 -105.007037 39.720887
-19240 10459 8221 0.147319836582293 0.147319836582293 -104.9924125 39.7416474 -104.9936301 39.74071
-19002 1269 4533 0.203350040591983 0.203350040591983 -105.0203986 39.7184231 -105.0227761 39.7184297
-19003 4533 8579 0.198512187124204 0.198512187124204 -105.0227761 39.7184297 -105.0250969 39.7184502
-19005 1841 2613 0.177111353706323 0.177111353706323 -104.9921535 39.7209342 -104.9921516 39.722527
-19006 2613 10414 0.0530626159965885 0.0530626159965885 -104.9921516 39.722527 -104.992154 39.7230042
-19007 10414 5196 0.124494794308613 0.124494794308613 -104.992154 39.7230042 -104.9921597 39.7241238
-19008 5196 6239 0.171651899926933 0.171651899926933 -104.9921597 39.7241238 -104.9921634 39.7256675
-19010 4186 4182 0.0154308679587021 0.0154308679587021 -104.9921793 39.7147876 -104.9923595 39.714781
-19011 4182 3367 0.101326829934178 0.101326829934178 -104.9923595 39.714781 -104.993544 39.7147942
-19012 3367 3370 0.0389167828857067 0.0389167828857067 -104.993544 39.7147942 -104.9939989 39.7148008
-19013 3370 10415 0.0493793417329401 0.0493793417329401 -104.9939989 39.7148008 -104.9945762 39.7148008
-19014 10415 7424 0.0519282840216647 0.0519282840216647 -104.9945762 39.7148008 -104.9951833 39.7148008
-19015 7424 10416 0.0508505433229276 0.0508505433229276 -104.9951833 39.7148008 -104.9957778 39.7148008
-19016 10416 7831 0.0497300351350067 0.0497300351350067 -104.9957778 39.7148008 -104.9963592 39.7148008
-19017 7831 9197 0.188452322853961 0.188452322853961 -104.9963592 39.7148008 -104.9985624 39.7147937
-19019 5549 10417 0.0198343104325793 0.0198343104325793 -104.9920738 39.6893875 -104.9923056 39.6893875
-19020 10417 2562 0.366597076665755 0.366597076665755 -104.9923056 39.6893875 -104.9965885 39.6893017
-19021 2562 9783 0.236171353579108 0.236171353579108 -104.9965885 39.6893017 -104.9993276 39.6890403
-19022 9783 9781 0.00643634199106272 0.00643634199106272 -104.9993276 39.6890403 -104.9994018 39.6890498
-19958 10676 10668 0.135367639799285 0.135367639799285 -105.0434166 39.7366408 -105.0433886 39.7354236
-19023 9781 9160 0.00367738923970995 0.00367738923970995 -104.9994018 39.6890498 -104.9994442 39.6890552
-19025 9156 9260 0.0939135311905937 0.0939135311905937 -104.9956359 39.7036162 -104.9954471 39.7027842
-19040 10419 435 0.0296899237003876 0.0296899237003876 -104.9404266 39.7837714 -104.9400813 39.7837417
-19042 6361 6912 0.413025051484806 0.413025051484806 -104.9406234 39.7728953 -104.9406406 39.7691809
-19043 6912 5272 0.122458972713872 0.122458972713872 -104.9406406 39.7691809 -104.9406406 39.7680796
-19044 5272 2806 0.132101617817113 0.132101617817113 -104.9406406 39.7680796 -104.9406492 39.7668916
-19045 2806 9480 0.135002111088791 0.135002111088791 -104.9406492 39.7668916 -104.9406528 39.7656775
-19046 9480 901 0.134968752710231 0.134968752710231 -104.9406528 39.7656775 -104.9406492 39.7644637
-19048 9486 9873 0.018915562611857 0.018915562611857 -104.9406618 39.7619502 -104.9406644 39.7617801
-19049 9873 3055 0.182137362251337 0.182137362251337 -104.9406644 39.7617801 -104.9406663 39.7601421
-19050 3055 9669 0.205422822851571 0.205422822851571 -104.9406663 39.7601421 -104.9406749 39.7582947
-19051 9669 4352 0.202508200405289 0.202508200405289 -104.9406749 39.7582947 -104.9406749 39.7564735
-19052 4352 7924 0.0557579828978423 0.0557579828978423 -104.9406749 39.7564735 -104.9406835 39.7559721
-19053 7924 7923 0.106391305814005 0.106391305814005 -104.9406835 39.7559721 -104.9406835 39.7550153
-19054 7923 3580 0.0580075342624614 0.0580075342624614 -104.9406835 39.7550153 -104.9407092 39.754494
-19055 3580 788 0.184224770380015 0.184224770380015 -104.9407092 39.754494 -104.9407607 39.7528377
-19056 788 10089 0.199795465587569 0.199795465587569 -104.9407607 39.7528377 -104.9407655 39.7510409
-19057 10089 491 0.20084069572648 0.20084069572648 -104.9407655 39.7510409 -104.9407607 39.7492347
-19058 491 489 0.205477824650125 0.205477824650125 -104.9407607 39.7492347 -104.9407865 39.7473869
-19059 489 4589 0.272976340428597 0.272976340428597 -104.9407865 39.7473869 -104.9408036 39.744932
-19060 4589 1978 0.12991989572877 0.12991989572877 -104.9408036 39.744932 -104.9407693 39.7437639
-19061 1978 1994 0.0147512164813181 0.0147512164813181 -104.9407693 39.7437639 -104.9407521 39.7436319
-19062 1994 705 0.187141061542779 0.187141061542779 -104.9407521 39.7436319 -104.9407521 39.7419489
-19063 705 642 0.0623803538473296 0.0623803538473296 -104.9407521 39.7419489 -104.9407521 39.7413879
-19064 642 10422 0.140896965982946 0.140896965982946 -104.9407521 39.7413879 -104.9407436 39.7401208
-19067 9469 4898 0.180547202392339 0.180547202392339 -104.9407436 39.7367085 -104.9407436 39.7350848
-19068 4898 4899 0.0469687370152221 0.0469687370152221 -104.9407436 39.7350848 -104.9407436 39.7346624
-19069 4899 9422 0.11449972298661 0.11449972298661 -104.9407436 39.7346624 -104.9407521 39.7336327
-19070 9422 2230 0.0888113879114828 0.0888113879114828 -104.9407521 39.7336327 -104.9407521 39.732834
-19071 2230 961 0.0851419553312056 0.0851419553312056 -104.9407521 39.732834 -104.9407521 39.7320683
-19072 961 5943 0.118166848545009 0.118166848545009 -104.9407521 39.7320683 -104.9407521 39.7310056
-19073 5943 8869 0.0594604755013997 0.0594604755013997 -104.9407521 39.7310056 -104.9407607 39.7304709
-19074 8869 3766 0.149125823202066 0.149125823202066 -104.9407607 39.7304709 -104.9407704 39.7291298
-19075 3766 10248 0.200641473563849 0.200641473563849 -104.9407704 39.7291298 -104.940779 39.7273254
-19076 10248 1211 0.0471365210908597 0.0471365210908597 -104.940779 39.7273254 -104.940806 39.726902
-19077 1211 8567 0.147435833594552 0.147435833594552 -104.940806 39.726902 -104.940796 39.7255761
-19078 8567 6541 0.161851618274563 0.161851618274563 -104.940796 39.7255761 -104.9407779 39.7241206
-19079 6541 4746 0.176177241775495 0.176177241775495 -104.9407779 39.7241206 -104.9407779 39.7225362
-19081 4159 2359 0.17021782028236 0.17021782028236 -104.9407748 39.7209356 -104.9407802 39.7194048
-19082 2359 9694 0.178145500592375 0.178145500592375 -104.9407802 39.7194048 -104.9407779 39.7178027
-19083 9694 5170 0.174004040417809 0.174004040417809 -104.9407779 39.7178027 -104.9407951 39.7162379
-19085 6362 6447 0.0914589915157797 0.0914589915157797 -104.940457 39.7728953 -104.9404516 39.7737178
-19086 6447 2399 0.0149004167256546 0.0149004167256546 -104.9404516 39.7737178 -104.9404527 39.7738518
-19087 2399 9454 0.2205749898237 0.2205749898237 -104.9404527 39.7738518 -104.9405378 39.7758344
-19089 519 831 0.121986604363099 0.121986604363099 -104.9416292 39.7807961 -104.9429184 39.780325
-19090 831 10147 0.141772461765667 0.141772461765667 -104.9429184 39.780325 -104.9445492 39.7800907
-19091 10147 10428 0.0119979325853114 0.0119979325853114 -104.9445492 39.7800907 -104.9445492 39.7799828
-19093 8145 9501 0.0198122134799104 0.0198122134799104 -104.9480016 39.7837973 -104.9477699 39.7837907
-19094 9501 1751 0.0440125388452957 0.0440125388452957 -104.9477699 39.7837907 -104.9472549 39.7837973
-19095 1751 6012 0.168131959250809 0.168131959250809 -104.9472549 39.7837973 -104.9452877 39.7838286
-19096 6012 832 0.205336624614562 0.205336624614562 -104.9452877 39.7838286 -104.9428851 39.783794
-19097 832 518 0.168135736431663 0.168135736431663 -104.9428851 39.783794 -104.9409175 39.7837817
-19098 518 6513 0.0279910233322091 0.0279910233322091 -104.9409175 39.7837817 -104.9405902 39.7837714
-19099 6513 10419 0.0139795197071191 0.0139795197071191 -104.9405902 39.7837714 -104.9404266 39.7837714
-19102 10049 8612 0.0522928783615643 0.0522928783615643 -105.0003395 39.7496422 -105.0007767 39.7499711
-19103 8612 8474 0.0521996072275175 0.0521996072275175 -105.0007767 39.7499711 -105.0012293 39.7502862
-19142 5220 8777 0.146640601075408 0.146640601075408 -104.9888573 39.7273254 -104.9874242 39.7266013
-19105 10430 10358 0.245136281681027 0.245136281681027 -105.0132616 39.7411936 -105.0144967 39.7392041
-19108 5628 9568 0.110078124608504 0.110078124608504 -104.9727792 39.7181791 -104.9714922 39.7181793
-19110 8421 10357 0.296407311680596 0.296407311680596 -105.0127281 39.7431253 -105.0148187 39.7409989
-19114 2386 9558 0.0348995825647377 0.0348995825647377 -104.9468949 39.7115125 -104.9465426 39.7113542
-19115 9558 8798 0.125658984531748 0.125658984531748 -104.9465426 39.7113542 -104.9457531 39.7104012
-19120 8185 9450 0.339524971346509 0.339524971346509 -104.936636 39.7114077 -104.9405977 39.7115958
-19121 9450 8690 0.0176125961717604 0.0176125961717604 -104.9405977 39.7115958 -104.9408036 39.7115964
-19122 8690 7659 0.0477249226862614 0.0477249226862614 -104.9408036 39.7115964 -104.9413615 39.7115918
-19123 7659 6718 0.103225505465316 0.103225505465316 -104.9413615 39.7115918 -104.9425631 39.711506
-19125 2190 8128 0.151455687504874 0.151455687504874 -105.0139689 39.7423726 -105.0124026 39.7430088
-19126 8128 7827 0.106341251390527 0.106341251390527 -105.0124026 39.7430088 -105.0113366 39.7435015
-19127 7827 10432 0.221434541654845 0.221434541654845 -105.0113366 39.7435015 -105.0087952 39.7438851
-19128 10432 6961 0.0131395719721806 0.0131395719721806 -105.0087952 39.7438851 -105.0086651 39.743948
-19129 6961 10433 0.0134328380462519 0.0134328380462519 -105.0086651 39.743948 -105.0085243 39.7440016
-19130 10433 10434 0.0869062764565781 0.0869062764565781 -105.0085243 39.7440016 -105.007666 39.7444203
-19131 10434 8597 0.00983583049657532 0.00983583049657532 -105.007666 39.7444203 -105.0075587 39.7444522
-19132 8597 10435 0.0222534876112211 0.0222534876112211 -105.0075587 39.7444522 -105.0073243 39.7445392
-19134 10050 3168 0.0821216282435351 0.0821216282435351 -105.0006176 39.749423 -105.0012883 39.7488943
-19141 7961 5220 0.0901667996290929 0.0901667996290929 -104.9896006 39.7279005 -104.9888573 39.7273254
-19144 8388 10437 0.320984694668417 0.320984694668417 -105.0138882 39.7419658 -105.0110862 39.743887
-19146 10437 6962 0.186002986440568 0.186002986440568 -105.0110862 39.743887 -105.0094763 39.7450121
-19147 6962 10438 0.0184374963317956 0.0184374963317956 -105.0094763 39.7450121 -105.0092941 39.7451008
-19148 10438 1881 0.209774050468257 0.209774050468257 -105.0092941 39.7451008 -105.0074729 39.746365
-19149 1881 8569 0.224745848084877 0.224745848084877 -105.0074729 39.746365 -105.00526 39.747456
-19150 8569 9988 0.0831717180377924 0.0831717180377924 -105.00526 39.747456 -105.0043843 39.7477818
-19151 9988 8477 0.0648356679758423 0.0648356679758423 -105.0043843 39.7477818 -105.003633 39.7477024
-19152 8477 8463 0.0835421546655635 0.0835421546655635 -105.003633 39.7477024 -105.0026615 39.7476216
-19960 9517 10684 0.210192276965542 0.210192276965542 -105.0410776 39.740352 -105.0410722 39.7384617
-19154 8800 8811 0.31904932389546 0.31904932389546 -104.9467659 39.7116096 -104.9494453 39.7136057
-19162 10428 3871 0.0534454265709194 0.0534454265709194 -104.9445492 39.7799828 -104.9440637 39.7796798
-19163 3871 840 0.0992542187222657 0.0992542187222657 -104.9440637 39.7796798 -104.942905 39.7797416
-19164 840 4272 0.128018795895479 0.128018795895479 -104.942905 39.7797416 -104.9418717 39.778908
-19166 9283 10439 0.0445989165425857 0.0445989165425857 -104.9624039 39.7800174 -104.961882 39.7800192
-19168 10440 9282 0.395349042842448 0.395349042842448 -104.9622414 39.7801259 -104.9667713 39.7808486
-19170 7136 2300 0.0954980884416659 0.0954980884416659 -104.9684185 39.7783922 -104.9691692 39.7790284
-19171 2300 6804 0.197911548357853 0.197911548357853 -104.9691692 39.7790284 -104.9688098 39.7807867
-19173 7956 8539 0.0718200140953678 0.0718200140953678 -104.9677476 39.7808918 -104.9669081 39.7808609
-19174 8539 9282 0.0117697082839477 0.0117697082839477 -104.9669081 39.7808609 -104.9667713 39.7808486
-19176 10442 1349 0.0573473302810492 0.0573473302810492 -104.9735925 39.7715442 -104.9740676 39.7719084
-19178 10443 8521 0.0309849382045455 0.0309849382045455 -105.0041255 39.7507938 -105.0043742 39.7505911
-19180 10151 10440 0.0401979143660666 0.0401979143660666 -104.961771 39.7801275 -104.9622414 39.7801259
-19182 10439 5059 0.220890379574485 0.220890379574485 -104.961882 39.7800192 -104.9592971 39.780022
-19183 5059 5013 0.0908635547178716 0.0908635547178716 -104.9592971 39.780022 -104.9582338 39.780024
-19184 5013 3349 0.0925982666666752 0.0925982666666752 -104.9582338 39.780024 -104.9571502 39.780022
-19185 3349 7877 0.0609717199349519 0.0609717199349519 -104.9571502 39.780022 -104.9564367 39.7800204
-19186 7877 5761 0.0981025803398981 0.0981025803398981 -104.9564367 39.7800204 -104.9552887 39.7800158
-19187 5761 7325 0.0996396951750833 0.0996396951750833 -104.9552887 39.7800158 -104.9541227 39.7800179
-19961 10684 10674 0.204298559687633 0.204298559687633 -105.0410722 39.7384617 -105.0410696 39.7366244
-19188 7325 2064 0.0938077886809335 0.0938077886809335 -104.9541227 39.7800179 -104.953025 39.7800093
-20575 10863 10864 0.0111548544892698 0.0111548544892698 -105.0250317 39.7609599 -105.0249015 39.7609531
-19189 2064 2650 0.094440127839499 0.094440127839499 -104.953025 39.7800093 -104.9519199 39.7800007
-19801 7638 6235 0.180302575380181 0.180302575380181 -104.9969636 39.7273173 -104.9969633 39.7256958
-19190 2650 10444 0.141197448312795 0.141197448312795 -104.9519199 39.7800007 -104.9502676 39.7799945
-19191 10444 9821 0.0323105619062287 0.0323105619062287 -104.9502676 39.7799945 -104.9498895 39.7799931
-19192 9821 9822 0.0144436267959073 0.0144436267959073 -104.9498895 39.7799931 -104.9497205 39.7799952
-19193 9822 3476 0.28088366035949 0.28088366035949 -104.9497205 39.7799952 -104.9464336 39.7799807
-19194 3476 10445 0.0704996285836985 0.0704996285836985 -104.9464336 39.7799807 -104.9456086 39.7799808
-19195 10445 10428 0.0905303391563005 0.0905303391563005 -104.9456086 39.7799808 -104.9445492 39.7799828
-19197 10167 10442 0.0431387292722099 0.0431387292722099 -104.9732322 39.7712725 -104.9735925 39.7715442
-19199 8408 8568 0.191490020507546 0.191490020507546 -105.0080042 39.7473225 -105.0063682 39.7484987
-19200 8568 10012 0.119004756390235 0.119004756390235 -105.0063682 39.7484987 -105.0057345 39.7494516
-19335 8631 10474 0.189944426919074 0.189944426919074 -105.0072049 39.7537723 -105.0056485 39.7525532
-19201 10012 8461 0.097400081996938 0.097400081996938 -105.0057345 39.7494516 -105.0049189 39.7500632
-19203 4275 3348 0.0888431357806069 0.0888431357806069 -104.9582338 39.7789377 -104.9571942 39.7789304
-19204 3348 7876 0.0640319779657538 0.0640319779657538 -104.9571942 39.7789304 -104.9564449 39.7789288
-19205 7876 5760 0.0967358830871852 0.0967358830871852 -104.9564449 39.7789288 -104.9553129 39.7789264
-19206 5760 7324 0.101239369924108 0.101239369924108 -104.9553129 39.7789264 -104.9541282 39.778924
-19207 7324 2063 0.0946165731852714 0.0946165731852714 -104.9541282 39.778924 -104.953021 39.7789217
-19208 2063 2649 0.0935569331707932 0.0935569331707932 -104.953021 39.7789217 -104.9519262 39.7789194
-19209 2649 4105 0.0971375052394303 0.0971375052394303 -104.9519262 39.7789194 -104.9507895 39.7789171
-19210 4105 6689 0.0855494277301445 0.0855494277301445 -104.9507895 39.7789171 -104.9497884 39.7789167
-19211 6689 356 0.101026474697068 0.101026474697068 -104.9497884 39.7789167 -104.9486062 39.7789125
-19212 356 7688 0.0921469063041614 0.0921469063041614 -104.9486062 39.7789125 -104.9475279 39.7789103
-19213 7688 3475 0.0946165920204556 0.0946165920204556 -104.9475279 39.7789103 -104.9464207 39.778908
-19215 6939 9228 0.0827641347919428 0.0827641347919428 -104.9592691 39.7819637 -104.9592628 39.7812194
-19216 9228 6380 0.0767643689707359 0.0767643689707359 -104.9592628 39.7812194 -104.9592745 39.7805291
-19217 6380 5058 0.0447215279971903 0.0447215279971903 -104.9592745 39.7805291 -104.9592906 39.7801271
-19219 5015 3318 0.0976390934138488 0.0976390934138488 -104.9582016 39.7805126 -104.957059 39.7805126
-19221 7829 10449 0.170073568021036 0.170073568021036 -104.9917479 39.7578961 -104.9903397 39.7589766
-19222 9276 9490 0.227893235973284 0.227893235973284 -104.9957422 39.7556449 -104.9975705 39.7571365
-19224 5808 10450 0.0444182254226453 0.0444182254226453 -104.9878972 39.7431235 -104.9873945 39.7430227
-19228 10452 10453 0.00899294746602318 0.00899294746602318 -104.9908137 39.7415403 -104.9908874 39.7414826
-19262 561 8788 0.108355823884287 0.108355823884287 -104.984845 39.7400568 -104.9835778 39.7400469
-19264 10465 10081 0.106367191723871 0.106367191723871 -104.9873778 39.7399976 -104.9861338 39.7399945
-19265 10081 9467 0.08060964495203 0.08060964495203 -104.9861338 39.7399945 -104.9851948 39.7400592
-19376 8634 10174 0.107642527980188 0.107642527980188 -104.9972254 39.7453524 -104.9963422 39.7446625
-19283 1943 10467 0.139113140483037 0.139113140483037 -104.9902169 39.7384586 -104.9888355 39.7377977
-19284 10467 1941 0.145058671955531 0.145058671955531 -104.9888355 39.7377977 -104.9873753 39.7384618
-19309 10472 10450 0.0244300101434338 0.0244300101434338 -104.9873927 39.7432424 -104.9873945 39.7430227
-19310 10450 6986 0.0907684588887198 0.0907684588887198 -104.9873945 39.7430227 -104.9873935 39.7422064
-19311 6986 649 0.0550434251335652 0.0550434251335652 -104.9873935 39.7422064 -104.9873881 39.7417114
-19312 649 9973 0.0116984093357102 0.0116984093357102 -104.9873881 39.7417114 -104.9873866 39.7416062
-19313 9973 6700 0.0127993614182147 0.0127993614182147 -104.9873866 39.7416062 -104.9873849 39.7414911
-20578 10796 10801 0.065843170036926 0.065843170036926 -105.0226193 39.761283 -105.021849 39.761283
-19315 5030 10465 0.0131766099040461 0.0131766099040461 -104.987378 39.7401161 -104.9873778 39.7399976
-19316 10465 339 0.0452586039857602 0.0452586039857602 -104.9873778 39.7399976 -104.9873725 39.7395906
-19317 339 10468 0.0402192785877108 0.0402192785877108 -104.9873725 39.7395906 -104.9873734 39.7392289
-19318 10468 1941 0.0852977829408983 0.0852977829408983 -104.9873734 39.7392289 -104.9873753 39.7384618
-19319 1941 610 0.177606555639393 0.177606555639393 -104.9873753 39.7384618 -104.9873582 39.7368646
-19320 610 4852 0.177691892562915 0.177691892562915 -104.9873582 39.7368646 -104.987369 39.7352666
-19321 4852 2203 0.156985921773534 0.156985921773534 -104.987369 39.7352666 -104.9873753 39.7338548
-19324 5917 1620 0.152034755665853 0.152034755665853 -104.987439 39.7304505 -104.9874196 39.7290833
-19325 1620 1212 0.201729915857126 0.201729915857126 -104.9874196 39.7290833 -104.9874175 39.7272691
-19326 1212 8782 0.0140233440789759 0.0140233440789759 -104.9874175 39.7272691 -104.9874245 39.7271431
-19336 4837 9074 0.0183273901669081 0.0183273901669081 -104.9983742 39.7111927 -104.9985883 39.7111864
-19338 9315 9317 0.0726807266351068 0.0726807266351068 -104.9406148 39.7146468 -104.9406062 39.7153004
-19339 9317 8692 0.104147766047402 0.104147766047402 -104.9406062 39.7153004 -104.9406148 39.716237
-19341 9315 1952 0.0315809029571794 0.0315809029571794 -104.9406148 39.7146468 -104.9402458 39.7146371
-19343 10140 10142 0.0644750868788433 0.0644750868788433 -104.967225 39.7796681 -104.967563 39.7791497
-19344 10142 10475 0.0151531719907858 0.0151531719907858 -104.967563 39.7791497 -104.9676782 39.7790461
-19345 10475 7137 0.053510410167183 0.053510410167183 -104.9676782 39.7790461 -104.9680592 39.7786642
-19347 480 9282 0.132450958735296 0.132450958735296 -104.9669782 39.7796681 -104.9667713 39.7808486
-19348 9282 10138 0.0564427245863012 0.0564427245863012 -104.9667713 39.7808486 -104.9667127 39.7813542
-19350 8464 10476 0.175984833399768 0.175984833399768 -105.0014282 39.7464074 -105.0032157 39.7456226
-19352 10047 5253 0.112186249238367 0.112186249238367 -104.9733504 39.7691681 -104.9733576 39.7681592
-19353 5253 2320 0.0249537355545513 0.0249537355545513 -104.9733576 39.7681592 -104.9733543 39.7679348
-19355 10166 6401 0.0992919669903468 0.0992919669903468 -104.9720707 39.769351 -104.9719701 39.7702406
-19359 10479 9948 0.0516511853374245 0.0516511853374245 -104.9998192 39.7473335 -104.9993873 39.7470087
-19360 9948 8509 0.0517093587612889 0.0517093587612889 -104.9993873 39.7470087 -104.9989592 39.7466802
-19362 6189 10479 0.146782090008868 0.146782090008868 -104.9986323 39.7482873 -104.9998192 39.7473335
-19387 10455 5805 0.0524139320350963 0.0524139320350963 -104.9915438 39.7409769 -104.9911089 39.7406447
-19364 10047 10168 0.0607581388382602 0.0607581388382602 -104.9733504 39.7691681 -104.9728475 39.7695543
-19365 10168 10480 0.0679196955639713 0.0679196955639713 -104.9728475 39.7695543 -104.972292 39.7699911
-19366 10480 6401 0.0390713513194924 0.0390713513194924 -104.972292 39.7699911 -104.9719701 39.7702406
-19367 6401 10481 0.052200136280437 0.052200136280437 -104.9719701 39.7702406 -104.9715413 39.7705749
-19368 10481 6166 0.221487121294822 0.221487121294822 -104.9715413 39.7705749 -104.9697218 39.7719933
-19369 6166 4284 0.1514940030025 0.1514940030025 -104.9697218 39.7719933 -104.9683885 39.7728911
-19371 2320 2779 0.107781391844326 0.107781391844326 -104.9733543 39.7679348 -104.9733522 39.7669655
-20580 10867 10868 0.0137448223074376 0.0137448223074376 -105.0244043 39.7612864 -105.0245651 39.7612868
-20581 10868 10869 0.0278742902489333 0.0278742902489333 -105.0245651 39.7612868 -105.0248912 39.7612876
-19372 2779 2913 0.05305189541044 0.05305189541044 -104.9733522 39.7669655 -104.9733488 39.7664884
-19374 8509 9595 0.106794270102757 0.106794270102757 -104.9989592 39.7466802 -104.9980797 39.7459982
-19375 9595 8634 0.102427753876907 0.102427753876907 -104.9980797 39.7459982 -104.9972254 39.7453524
-19377 10174 10482 0.096139738297761 0.096139738297761 -104.9963422 39.7446625 -104.9955435 39.7440539
-19378 10482 9194 0.00978224253563326 0.00978224253563326 -104.9955435 39.7440539 -104.9954622 39.743992
-19380 4397 3002 0.108243017625134 0.108243017625134 -104.9946157 39.7433367 -104.9937158 39.742652
-19381 3002 10484 0.0989194559777293 0.0989194559777293 -104.9937158 39.742652 -104.9929004 39.7420209
-19382 10484 5962 0.00617092845740214 0.00617092845740214 -104.9929004 39.7420209 -104.9928478 39.7419829
-19383 5962 10485 0.00542857584263607 0.00542857584263607 -104.9928478 39.7419829 -104.9928052 39.7419467
-19384 10485 10459 0.0472755549262459 0.0472755549262459 -104.9928052 39.7419467 -104.9924125 39.7416474
-19385 10459 7579 0.0528643874539915 0.0528643874539915 -104.9924125 39.7416474 -104.9919734 39.7413127
-19429 7287 32 0.190572580502828 0.190572580502828 -104.9833604 39.7019722 -104.9833417 39.7002584
-19386 7579 10455 0.0523778989124976 0.0523778989124976 -104.9919734 39.7413127 -104.9915438 39.7409769
-19423 10488 7294 0.0690612889349745 0.0690612889349745 -104.9810224 39.7026345 -104.9810028 39.7020136
-19424 7294 36 0.192538942320683 0.192538942320683 -104.9810028 39.7020136 -104.9809867 39.7002821
-19388 5805 10462 0.081956103355699 0.081956103355699 -104.9911089 39.7406447 -104.9904372 39.7401189
-19389 10462 8768 0.0169741195442503 0.0169741195442503 -104.9904372 39.7401189 -104.9903111 39.740001
-19391 6189 9950 0.0503550239981861 0.0503550239981861 -104.9986323 39.7482873 -104.9990547 39.7486029
-19392 9950 7557 0.0535053183585621 0.0535053183585621 -104.9990547 39.7486029 -104.9994986 39.7489421
-19393 7557 9952 0.0524048074288428 0.0524048074288428 -104.9994986 39.7489421 -104.9999037 39.7492958
-19394 9952 10429 0.0135095901515659 0.0135095901515659 -104.9999037 39.7492958 -105.0000136 39.7493831
-19396 10479 9627 0.0675900234291702 0.0675900234291702 -104.9998192 39.7473335 -105.0003825 39.746907
-19400 3201 6115 0.203275445399412 0.203275445399412 -104.9757389 39.711117 -104.9757389 39.7092889
-19401 6115 1910 0.199619230795837 0.199619230795837 -104.9757389 39.7092889 -104.9757282 39.7074937
-19402 1910 9218 0.202850123370343 0.202850123370343 -104.9757282 39.7074937 -104.9757497 39.7056695
-19403 9218 9216 0.20345414072247 0.20345414072247 -104.9757497 39.7056695 -104.9757563 39.7038398
-19404 9216 7300 0.200631055524996 0.200631055524996 -104.9757563 39.7038398 -104.9757669 39.7020355
-19405 7300 45 0.202263602143448 0.202263602143448 -104.9757669 39.7020355 -104.9757682 39.7002165
-19406 45 3545 0.200651259904661 0.200651259904661 -104.9757682 39.7002165 -104.9757691 39.698412
-19407 3545 4239 0.201942446714699 0.201942446714699 -104.9757691 39.698412 -104.9757777 39.6965959
-19408 4239 1800 0.2054130837632 0.2054130837632 -104.9757777 39.6965959 -104.97579 39.6947486
-19409 1800 8710 0.197537787183869 0.197537787183869 -104.97579 39.6947486 -104.97579 39.6929721
-19410 8710 6527 0.132676718293593 0.132676718293593 -104.97579 39.6929721 -104.9759135 39.6917827
-19695 8145 9492 0.255789380087541 0.255789380087541 -104.9480016 39.7837973 -104.9497268 39.7819174
-19697 10419 10619 0.294868097569216 0.294868097569216 -104.9404266 39.7837714 -104.940416 39.7864232
-19806 10411 7868 0.176421872480467 0.176421872480467 -104.9969604 39.7209341 -104.9969607 39.7193475
-19698 10619 10620 0.511264415982815 0.511264415982815 -104.940416 39.7864232 -104.939871 39.791002
-19699 6199 496 0.110329672635447 0.110329672635447 -104.9404705 39.7816234 -104.9404434 39.7826154
-19700 496 10419 0.128549351195957 0.128549351195957 -104.9404434 39.7826154 -104.9404266 39.7837714
-19704 10623 10624 0.299844457035978 0.299844457035978 -105.0031654 39.7337887 -105.0029777 39.7364814
-19705 10624 10625 0.048946191319968 0.048946191319968 -105.0029777 39.7364814 -105.0033774 39.7367965
-19706 10625 10626 0.0564187161790662 0.0564187161790662 -105.0033774 39.7367965 -105.0040372 39.7367991
-19707 10626 10627 0.261222980592435 0.261222980592435 -105.0040372 39.7367991 -105.0051511 39.7346116
-19717 10626 10634 0.247667737296111 0.247667737296111 -105.0040372 39.7367991 -105.0040521 39.7345718
-19925 10679 9511 0.20648099094332 0.20648099094332 -105.0358012 39.7384625 -105.0358145 39.7403194
-19926 9511 4579 0.132833459370163 0.132833459370163 -105.0358145 39.7403194 -105.0358145 39.741514
-19930 10680 10673 0.208792718350027 0.208792718350027 -105.0375666 39.7384701 -105.0375559 39.7365924
-19931 10673 7131 0.201766496696079 0.201766496696079 -105.0375559 39.7365924 -105.0375424 39.7347779
-19933 626 10681 0.1702021482017 0.1702021482017 -105.0363381 39.7365871 -105.0363564 39.7350565
-19934 5672 10665 0.0500710082270115 0.0500710082270115 -104.997538 39.7179373 -104.9969526 39.7179403
-19935 10665 7218 0.0509007134728753 0.0509007134728753 -104.9969526 39.7179403 -104.9963575 39.7179434
-19937 252 10245 0.178490785331426 0.178490785331426 -104.9994279 39.7320888 -104.9994337 39.733694
-19938 10245 7120 0.17638987203806 0.17638987203806 -104.9994337 39.733694 -104.9994256 39.7352803
-19939 7120 9641 0.177259535907282 0.177259535907282 -104.9994256 39.7352803 -104.9994122 39.7368744
-19944 10675 10682 0.203454780542957 0.203454780542957 -105.041646 39.7366287 -105.0416549 39.7384584
-19945 10682 9518 0.211007495388792 0.211007495388792 -105.0416549 39.7384584 -105.0416701 39.740356
-19946 9518 4583 0.129742461291969 0.129742461291969 -105.0416701 39.740356 -105.0416673 39.7415228
-19948 10646 7221 0.050795229275335 0.050795229275335 -104.9969581 39.7230021 -104.9963642 39.722998
-19949 7221 10672 0.0490058421037179 0.0490058421037179 -104.9963642 39.722998 -104.9957912 39.722999
-19950 10672 4950 0.0520761745786515 0.0520761745786515 -104.9957912 39.722999 -104.9951823 39.723
-19954 10414 5089 0.112638269786332 0.112638269786332 -104.992154 39.7230042 -104.990837 39.7230104
-19956 9520 10683 0.208034746403896 0.208034746403896 -105.0434189 39.740341 -105.0434219 39.7384701
-19992 10649 10664 0.050141841785608 0.050141841785608 -105.0422444 39.7384617 -105.0428308 39.738465
-19993 10664 10683 0.0505455538112256 0.0505455538112256 -105.0428308 39.738465 -105.0434219 39.7384701
-19994 10683 5590 0.0494937724947863 0.0494937724947863 -105.0434219 39.7384701 -105.0440007 39.7384751
-19995 5590 10661 0.0507309659863408 0.0507309659863408 -105.0440007 39.7384751 -105.044594 39.7384771
-19996 10661 7533 0.0505856564507496 0.0505856564507496 -105.044594 39.7384771 -105.0451856 39.7384792
-19997 7533 10689 0.686347942133366 0.686347942133366 -105.0451856 39.7384792 -105.0532125 39.7384977
-19998 8645 2200 0.0278160442123186 0.0278160442123186 -105.0040083 39.7506996 -105.0039004 39.7509356
-20003 2200 10693 0.020138493184414 0.020138493184414 -105.0039004 39.7509356 -105.0040848 39.7508229
-20004 10693 10443 0.00475150856262823 0.00475150856262823 -105.0040848 39.7508229 -105.0041255 39.7507938
-20006 8461 9621 0.0222962026291256 0.0222962026291256 -105.0049189 39.7500632 -105.0046936 39.7501642
-20007 9621 10690 0.0515741214544805 0.0515741214544805 -105.0046936 39.7501642 -105.0042718 39.7504958
-20026 9466 8724 0.0514719719174867 0.0514719719174867 -104.9603865 39.7432158 -104.9597878 39.7432643
-20027 8724 5029 0.0566937822140094 0.0566937822140094 -104.9597878 39.7432643 -104.9591698 39.7434491
-20028 5029 4595 0.0969267875718062 0.0969267875718062 -104.9591698 39.7434491 -104.9581328 39.7438013
-20030 5321 630 0.142142547339574 0.142142547339574 -104.9754804 39.7621615 -104.9743045 39.7630654
-20031 630 2908 0.116052443784823 0.116052443784823 -104.9743045 39.7630654 -104.9733498 39.7638075
-20039 10696 5549 0.959761090863438 0.959761090863438 -104.9925954 39.6807655 -104.9920738 39.6893875
-20040 5549 9172 0.201153438061066 0.201153438061066 -104.9920738 39.6893875 -104.9923108 39.6911873
-20042 140 1484 0.198676673012775 0.198676673012775 -104.9924893 39.6930233 -104.99246 39.6948099
-20043 1484 3760 0.212665318664513 0.212665318664513 -104.99246 39.6948099 -104.9918765 39.696669
-20044 3760 4181 0.394425022611864 0.394425022611864 -104.9918765 39.696669 -104.9925156 39.7001819
-20045 4181 7302 0.250045496408828 0.250045496408828 -104.9925156 39.7001819 -104.9940584 39.7020918
-20046 7302 9078 0.0121023798774685 0.0121023798774685 -104.9940584 39.7020918 -104.9941364 39.7021826
-419 418 419 0.0843359701726921 0.0843359701726921 -104.9449438 39.7443271 -104.94552 39.7449427
-20049 9127 9931 0.188027723664679 0.188027723664679 -104.9983536 39.7098782 -104.9975856 39.7082938
-20051 9189 10417 0.27289630775387 0.27289630775387 -104.9938171 39.6915486 -104.9923056 39.6893875
-20052 10417 10698 0.903351534370563 0.903351534370563 -104.9923056 39.6893875 -104.9926383 39.6812675
-20055 5803 10456 0.063915425232113 0.063915425232113 -104.9916422 39.7401229 -104.9923896 39.7401331
-20056 10456 8278 0.0463525975312068 0.0463525975312068 -104.9923896 39.7401331 -104.9929317 39.740136
-20057 8278 7582 0.0531670184257572 0.0531670184257572 -104.9929317 39.740136 -104.9935535 39.7401388
-20586 10860 10865 0.0197306093936785 0.0197306093936785 -105.02457 39.7611148 -105.024575 39.7609374
-20058 7582 10460 0.0605194201118807 0.0605194201118807 -104.9935535 39.7401388 -104.9942613 39.7401385
-20059 10460 5965 0.08096413889014 0.08096413889014 -104.9942613 39.7401385 -104.9952082 39.7401418
-20060 5965 7403 0.00793698029885246 0.00793698029885246 -104.9952082 39.7401418 -104.995301 39.7401401
-20061 7403 7216 0.100604138655543 0.100604138655543 -104.995301 39.7401401 -104.9964776 39.7401434
-20062 7216 2998 0.041051117053356 0.041051117053356 -104.9964776 39.7401434 -104.9969577 39.7401458
-20064 4930 9632 0.0194691711485179 0.0194691711485179 -104.9981378 39.7401663 -104.998365 39.7401779
-20066 8788 8794 0.107030125953622 0.107030125953622 -104.9835778 39.7400469 -104.9823264 39.7400238
-20067 8794 8875 0.105785558321332 0.105785558321332 -104.9823264 39.7400238 -104.9810892 39.7400264
-20068 8875 7355 0.0541942506273543 0.0541942506273543 -104.9810892 39.7400264 -104.9804554 39.7400222
-20069 7355 8881 0.0482515848497253 0.0482515848497253 -104.9804554 39.7400222 -104.9798911 39.7400184
-20070 8881 7128 0.0482774346717123 0.0482774346717123 -104.9798911 39.7400184 -104.9793265 39.7400224
-20071 7128 9311 0.0491067830497851 0.0491067830497851 -104.9793265 39.7400224 -104.9787522 39.7400264
-20072 9311 9658 0.100701059147573 0.100701059147573 -104.9787522 39.7400264 -104.9775745 39.740019
-20073 9658 5054 0.0949533068688616 0.0949533068688616 -104.9775745 39.740019 -104.9764641 39.7400314
-20074 5054 5041 0.0261633102483298 0.0261633102483298 -104.9764641 39.7400314 -104.9761583 39.7400231
-20075 5041 6318 0.0238469793810048 0.0238469793810048 -104.9761583 39.7400231 -104.9758794 39.7400231
-20077 8004 7999 0.0412811844037432 0.0412811844037432 -104.9752839 39.740019 -104.9748011 39.740019
-20078 7999 5161 0.00972594837361757 0.00972594837361757 -104.9748011 39.740019 -104.9746885 39.7400066
-20079 5161 976 0.0450966381773304 0.0450966381773304 -104.9746885 39.7400066 -104.9741611 39.7400028
-20080 976 9235 0.0690703393173828 0.0690703393173828 -104.9741611 39.7400028 -104.9733535 39.7400168
-20081 9235 8835 0.0284556853366966 0.0284556853366966 -104.9733535 39.7400168 -104.9730207 39.7400163
-20082 8835 7138 0.0744435936983682 0.0744435936983682 -104.9730207 39.7400163 -104.9721501 39.7400093
-20083 7138 7152 0.0242079619729824 0.0242079619729824 -104.9721501 39.7400093 -104.971867 39.7400066
-20084 7152 5018 0.0530487604133438 0.0530487604133438 -104.971867 39.7400066 -104.9712466 39.7400022
-20085 5018 5127 0.027179522018167 0.027179522018167 -104.9712466 39.7400022 -104.9709293 39.7400169
-20086 5127 5120 0.017329383802427 0.017329383802427 -104.9709293 39.7400169 -104.9707273 39.7400042
-20087 5120 9413 0.051025645765313 0.051025645765313 -104.9707273 39.7400042 -104.9701307 39.740015
-20088 9413 4720 0.0442143222009164 0.0442143222009164 -104.9701307 39.740015 -104.9696136 39.7400134
-20089 4720 6788 0.103544897956421 0.103544897956421 -104.9696136 39.7400134 -104.9684027 39.7400015
-20090 6788 7360 0.101885712989061 0.101885712989061 -104.9684027 39.7400015 -104.9672112 39.73999
-20091 7360 5420 0.104686903511504 0.104686903511504 -104.9672112 39.73999 -104.9659869 39.7399811
-20092 5420 8551 0.104297582912284 0.104297582912284 -104.9659869 39.7399811 -104.9647671 39.7399797
-20093 8551 3891 0.113854917229397 0.113854917229397 -104.9647671 39.7399797 -104.9634356 39.7399908
-20094 3891 1021 0.10275177677768 0.10275177677768 -104.9634356 39.7399908 -104.962234 39.7399776
-20095 1021 10069 0.0524825810706004 0.0524825810706004 -104.962234 39.7399776 -104.9616202 39.7399794
-20096 10069 6266 0.0519011168646154 0.0519011168646154 -104.9616202 39.7399794 -104.9610132 39.7399811
-20097 6266 8727 0.107637396904871 0.107637396904871 -104.9610132 39.7399811 -104.9597547 39.7399579
-20098 8727 5027 0.0851589615138914 0.0851589615138914 -104.9597547 39.7399579 -104.9587811 39.7401193
-20099 5027 3339 0.11913667157964 0.11913667157964 -104.9587811 39.7401193 -104.9573922 39.7402049
-20100 3339 7884 0.0947347804724537 0.0947347804724537 -104.9573922 39.7402049 -104.9562845 39.7401863
-20101 7884 7339 0.0992406279882494 0.0992406279882494 -104.9562845 39.7401863 -104.9551239 39.7401771
-20588 10840 3589 0.00659451799404467 0.00659451799404467 -105.0245771 39.760862 -105.0245881 39.7608033
-20102 7339 7978 0.0297388680985265 0.0297388680985265 -104.9551239 39.7401771 -104.9547761 39.7401752
-20103 7978 8546 0.0509861753484279 0.0509861753484279 -104.9547761 39.7401752 -104.9541798 39.7401771
-20105 2065 2068 0.0539613780445048 0.0539613780445048 -104.9536131 39.740176 -104.9529821 39.7401847
-20106 2068 2651 0.0458462130492323 0.0458462130492323 -104.9529821 39.7401847 -104.952446 39.7401771
-20107 2651 2668 0.0527824371940605 0.0527824371940605 -104.952446 39.7401771 -104.9518287 39.740174
-20108 2668 4106 0.0471315276476818 0.0471315276476818 -104.9518287 39.740174 -104.9512775 39.7401701
-20109 4106 4138 0.0531150768123695 0.0531150768123695 -104.9512775 39.7401701 -104.9506563 39.7401717
-20110 4138 6691 0.0513109258939151 0.0513109258939151 -104.9506563 39.7401717 -104.9500562 39.7401702
-20111 6691 6699 0.049849518680298 0.049849518680298 -104.9500562 39.7401702 -104.9494732 39.7401674
-20112 6699 8027 0.0540642003294053 0.0540642003294053 -104.9494732 39.7401674 -104.9488409 39.7401691
-20113 8027 8022 0.0351680439773276 0.0351680439773276 -104.9488409 39.7401691 -104.9484296 39.7401675
-20114 8022 7697 0.0642576699742132 0.0642576699742132 -104.9484296 39.7401675 -104.9476781 39.7401632
-20116 7687 3442 0.0653852338257918 0.0653852338257918 -104.9472834 39.7401592 -104.9465187 39.7401565
-20117 3442 3465 0.0302046503739114 0.0302046503739114 -104.9465187 39.7401565 -104.9461659 39.7401427
-20118 3465 10643 0.044572996690839 0.044572996690839 -104.9461659 39.7401427 -104.9456446 39.7401427
-20119 10643 6010 0.0210253210935206 0.0210253210935206 -104.9456446 39.7401427 -104.9453987 39.7401427
-20120 6010 6022 0.0302819861909932 0.0302819861909932 -104.9453987 39.7401427 -104.9450447 39.7401345
-20121 6022 3877 0.0720170103408001 0.0720170103408001 -104.9450447 39.7401345 -104.9442025 39.7401262
-20122 3877 9699 0.0188604413742797 0.0188604413742797 -104.9442025 39.7401262 -104.9439825 39.7401139
-20123 9699 862 0.0931148831029757 0.0931148831029757 -104.9439825 39.7401139 -104.9428936 39.7401262
-20124 862 7102 0.0867114852734781 0.0867114852734781 -104.9428936 39.7401262 -104.9418797 39.7401097
-20125 7102 10422 0.0971484542236891 0.0971484542236891 -104.9418797 39.7401097 -104.9407436 39.7401208
-20126 10422 8701 0.0148135271633134 0.0148135271633134 -104.9407436 39.7401208 -104.9405708 39.7401304
-20127 8701 8159 0.0903601598115808 0.0903601598115808 -104.9405708 39.7401304 -104.939514 39.7401304
-20128 8159 8147 0.0485272097981868 0.0485272097981868 -104.939514 39.7401304 -104.9389466 39.7401205
-20129 8147 7605 0.046972846594418 0.046972846594418 -104.9389466 39.7401205 -104.9383973 39.7401139
-20130 7605 7256 0.0980906813073136 0.0980906813073136 -104.9383973 39.7401139 -104.9372502 39.7401262
-20131 7256 7592 0.0949493294075893 0.0949493294075893 -104.9372502 39.7401262 -104.93614 39.7401073
-20132 7592 2011 0.0535765472330524 0.0535765472330524 -104.93614 39.7401073 -104.9355134 39.7401073
-20133 2011 9174 0.0440404642371946 0.0440404642371946 -104.9355134 39.7401073 -104.9349984 39.7401007
-20134 9174 10644 0.101018897202585 0.101018897202585 -104.9349984 39.7401007 -104.933817 39.7401097
-20135 10644 2752 0.0964161425505398 0.0964161425505398 -104.933817 39.7401097 -104.9326896 39.7401271
-12318 2500 2501 0.00534847597168918 0.00534847597168918 -105.0073403 39.7545386 -105.0073403 39.7545867
-20137 6988 7015 0.0469900401605619 0.0469900401605619 -104.9320716 39.7401271 -104.9315223 39.7401139
-20138 7015 2275 0.0506564830109395 0.0506564830109395 -104.9315223 39.7401139 -104.9309301 39.7401271
-20139 2275 8216 0.0480971521401402 0.0480971521401402 -104.9309301 39.7401271 -104.9303676 39.7401304
-20140 8216 3600 0.0492447661071067 0.0492447661071067 -104.9303676 39.7401304 -104.9297917 39.7401253
-20141 3600 8213 0.0494471155350359 0.0494471155350359 -104.9297917 39.7401253 -104.9292134 39.7401271
-20142 8213 7515 0.0477024371424333 0.0477024371424333 -104.9292134 39.7401271 -104.9286555 39.7401271
-20143 7515 7526 0.0508405166895622 0.0508405166895622 -104.9286555 39.7401271 -104.9280609 39.7401262
-20144 7526 4566 0.0460266764289813 0.0460266764289813 -104.9280609 39.7401262 -104.9275226 39.7401271
-20145 4566 2124 0.0528615774272691 0.0528615774272691 -104.9275226 39.7401271 -104.9269046 39.7401403
-20146 2124 5990 0.094672374588883 0.094672374588883 -104.9269046 39.7401403 -104.9257974 39.7401337
-20147 5990 7671 0.0990838490707958 0.0990838490707958 -104.9257974 39.7401337 -104.9246387 39.7401205
-20179 10247 9298 0.182738392624498 0.182738392624498 -104.978775 39.7272619 -104.9787693 39.7256185
-20180 9298 6549 0.169619845811395 0.169619845811395 -104.9787693 39.7256185 -104.9787573 39.7240931
-20182 4768 6330 0.178054483343927 0.178054483343927 -104.9787498 39.7224871 -104.9787889 39.7208861
-20183 6330 9308 0.0134883336553362 0.0134883336553362 -104.9787889 39.7208861 -104.9788375 39.7207707
-20148 7671 10702 3.41813541281698 3.41813541281698 -104.9246387 39.7401205 -104.8846622 39.7401611
-20149 425 10112 0.0131850564749253 0.0131850564749253 -105.0219946 39.7404498 -105.0218404 39.7404488
-20186 8247 10155 0.516700602330837 0.516700602330837 -104.963496 39.7883396 -104.9592396 39.7916405
-20187 10155 3322 0.265485774934506 0.265485774934506 -104.9592396 39.7916405 -104.9570057 39.7933001
-20188 3322 10706 0.131436234594263 0.131436234594263 -104.9570057 39.7933001 -104.956777 39.794469
-20189 10139 10705 0.06021736831636 0.06021736831636 -104.9644686 39.7876212 -104.9639599 39.787996
-20195 8510 10708 0.0176825351734809 0.0176825351734809 -104.9964255 39.7486125 -104.9962843 39.7487287
-20197 10708 8571 0.116072750239478 0.116072750239478 -104.9962843 39.7487287 -104.9953197 39.7494633
-20199 5783 8281 0.147480988666932 0.147480988666932 -104.9941411 39.7504097 -104.9929142 39.7513421
-20200 8281 8293 0.145093730312322 0.145093730312322 -104.9929142 39.7513421 -104.9917306 39.7522773
-20201 8293 7900 0.146177040292133 0.146177040292133 -104.9917306 39.7522773 -104.9905138 39.7532009
-20202 7900 8854 0.145687210047232 0.145687210047232 -104.9905138 39.7532009 -104.9893092 39.7541277
-20203 8854 9321 0.148905174298523 0.148905174298523 -104.9893092 39.7541277 -104.9880818 39.7550779
-20206 8401 5454 0.142235461954992 0.142235461954992 -104.9868716 39.7559951 -104.9857094 39.7569105
-20207 5454 8504 0.00556744232684514 0.00556744232684514 -104.9857094 39.7569105 -104.9856564 39.7569396
-20208 8504 8047 0.149428079475645 0.149428079475645 -104.9856564 39.7569396 -104.9844325 39.7578991
-20209 8047 6575 0.142472133135735 0.142472133135735 -104.9844325 39.7578991 -104.9832626 39.7588117
-20210 6575 4456 0.146389787991077 0.146389787991077 -104.9832626 39.7588117 -104.9820633 39.7597515
-20211 4456 5504 0.146266130363807 0.146266130363807 -104.9820633 39.7597515 -104.9808533 39.7606816
-20264 10722 5574 0.00764881869126048 0.00764881869126048 -105.044096 39.7739592 -105.0440065 39.7739591
-20317 10737 10730 0.156440332314784 0.156440332314784 -105.0250397 39.7599942 -105.0250776 39.7585876
-20319 10738 10739 0.00846222116823016 0.00846222116823016 -105.0235235 39.7590488 -105.0234882 39.7589777
-20570 10858 10856 0.341000703608857 0.341000703608857 -105.0190584 39.7597333 -105.0218184 39.7619476
-20572 10859 10860 0.0100014874858022 0.0100014874858022 -105.024453 39.7611158 -105.02457 39.7611148
-20784 10945 10292 0.00633905697400916 0.00633905697400916 -105.0279522 39.7613862 -105.0280151 39.7614164
-321 153 154 0.039197729386179 0.039197729386179 -104.9572293 39.7448211 -104.9570001 39.7445158
-18675 1570 2751 0.10523982327052 0.10523982327052 -105.0399911 39.7245463 -105.0400126 39.7254926
-20591 10795 10802 0.0763744143850755 0.0763744143850755 -105.0227368 39.7610963 -105.0218433 39.761098
-20216 632 6405 0.146056665643101 0.146056665643101 -104.976027 39.7644195 -104.9748213 39.7653503
-20217 6405 4277 0.144766275996567 0.144766275996567 -104.9748213 39.7653503 -104.9736331 39.7662781
-20218 4277 2913 0.0337236702585465 0.0337236702585465 -104.9736331 39.7662781 -104.9733488 39.7664884
-20250 9384 8111 0.200921327710714 0.200921327710714 -105.0451339 39.7765688 -105.0451206 39.7783757
-20251 8111 10328 0.204798818746646 0.204798818746646 -105.0451206 39.7783757 -105.045121 39.7802175
-\.
diff --git a/src/bd_astar/test/bd_astar-any-01.result b/src/bd_astar/test/bd_astar-any-01.result
deleted file mode 100644
index f3dfc90..0000000
--- a/src/bd_astar/test/bd_astar-any-01.result
+++ /dev/null
@@ -1,101 +0,0 @@
-0|5700|20787|0.006774
-1|10932|20756|0.040876
-2|10931|20797|0.002564
-3|7661|20796|0.002581
-4|10943|20776|0.040800
-5|10941|20772|0.005720
-6|3415|20771|0.007463
-7|10940|20841|0.187594
-8|10952|20812|0.005045
-9|7034|20811|0.004532
-10|10951|20833|0.177477
-11|10944|20779|0.008539
-12|8910|20778|0.006447
-13|10929|20835|0.071114
-14|10948|20794|0.013276
-15|8908|12990|0.013157
-16|8325|13831|0.009169
-17|3753|13830|0.196045
-18|6774|13829|0.032840
-19|8304|13828|0.117213
-20|9205|13827|0.010639
-21|8994|13165|0.012931
-22|8977|13164|0.008029
-23|8976|13163|0.069895
-24|8993|13162|0.009638
-25|8351|13161|0.099016
-26|8992|13160|0.187353
-27|8991|13159|0.018649
-28|2962|13158|0.071931
-29|1285|13157|0.118340
-30|8989|13156|0.006317
-31|8988|13155|0.079185
-32|21|13154|0.057101
-33|6436|13153|0.083288
-34|637|13152|0.099744
-35|8987|13151|0.057786
-36|398|13150|0.120005
-37|8496|13149|0.069498
-38|8986|13148|0.014323
-39|8985|13167|0.070884
-40|8451|11869|0.006925
-41|476|11868|0.196533
-42|529|11867|0.005677
-43|8450|11871|0.118857
-44|8452|11878|0.083250
-45|8455|11880|0.048821
-46|8456|11883|0.064572
-47|1807|11882|0.101185
-48|8457|11894|0.046805
-49|8465|15481|0.180992
-50|8522|15480|0.016198
-51|9621|15479|0.209882
-52|2808|15478|0.019312
-53|8311|15477|0.113487
-54|8583|16981|0.045667
-55|10046|16982|0.022635
-56|8467|16983|0.022924
-57|9624|15487|0.034042
-58|8468|11899|0.018103
-59|3170|19357|0.047698
-60|9949|19358|0.059093
-61|10479|19359|0.051651
-62|9948|19360|0.051709
-63|8509|19374|0.106794
-64|9595|19375|0.102428
-65|8634|19376|0.107643
-66|10174|19377|0.096140
-67|10482|19378|0.009782
-68|9194|19379|0.102702
-69|4397|19380|0.108243
-70|3002|19381|0.098919
-71|10484|19382|0.006171
-72|5962|19383|0.005429
-73|10485|19384|0.047276
-74|10459|19385|0.052864
-75|7579|19386|0.052378
-76|10455|19387|0.052414
-77|5805|19388|0.081956
-78|10462|19389|0.016974
-79|8768|12598|0.059630
-80|8767|19290|0.117748
-81|10470|19289|0.065769
-82|10469|19288|0.066230
-83|10468|19287|0.111281
-84|9967|16642|0.029056
-85|9956|16621|0.014614
-86|9938|16626|0.007036
-87|9960|16649|0.081206
-88|9968|16650|0.012230
-89|9969|16647|0.012368
-90|5457|6266|0.055134
-91|5458|6267|0.053860
-92|5459|6268|0.109859
-93|5460|6269|0.104952
-94|5461|6270|0.053766
-95|5462|6271|0.046800
-96|5463|12897|0.170300
-97|8880|15060|0.049014
-98|7101|15059|0.047811
-99|9313|15058|0.044674
-100|6733|-1|0.000000
diff --git a/src/bd_astar/test/bd_astar-any-01.test.sql b/src/bd_astar/test/bd_astar-any-01.test.sql
deleted file mode 100644
index 6d9a455..0000000
--- a/src/bd_astar/test/bd_astar-any-01.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bdastar('select * from bdaways'::text, 5700, 6733, true, true) as r ) as foo;
diff --git a/src/bd_astar/test/bd_astar-any-02.result b/src/bd_astar/test/bd_astar-any-02.result
deleted file mode 100644
index 16cfcae..0000000
--- a/src/bd_astar/test/bd_astar-any-02.result
+++ /dev/null
@@ -1,60 +0,0 @@
-0|6585|17975|0.200230
-1|5367|17976|0.155428
-2|7125|17977|0.178581
-3|613|17978|0.175712
-4|10025|17979|0.173776
-5|5802|6758|0.013489
-6|5803|6759|0.065176
-7|5804|6760|0.008679
-8|5805|6761|0.145097
-9|5806|6762|0.146807
-10|5807|6763|0.097186
-11|5808|6764|0.050569
-12|5809|20663|0.169650
-13|4620|20662|0.023243
-14|5774|20661|0.120390
-15|6482|20660|0.002769
-16|5957|20659|0.087952
-17|8289|20658|0.048701
-18|10884|20657|0.009212
-19|10883|20656|0.080500
-20|9954|20655|0.075280
-21|4390|16876|0.147691
-22|9203|17805|0.063931
-23|7892|17804|0.015429
-24|8417|17803|0.069119
-25|10171|17802|0.075825
-26|9953|17801|0.045079
-27|8859|17800|0.029389
-28|8536|17799|0.072658
-29|10180|17798|0.076558
-30|9592|17797|0.027637
-31|9318|17796|0.114755
-32|10179|17795|0.007150
-33|10178|17794|0.087467
-34|8402|17793|0.062258
-35|6179|17792|0.109483
-36|8508|17791|0.036248
-37|3305|17790|0.069816
-38|8512|17789|0.064158
-39|998|17807|0.471312
-40|2698|2743|0.102019
-41|2563|9039|0.341756
-42|2043|9040|0.587619
-43|4280|9041|0.145996
-44|2317|9042|0.268754
-45|7135|9043|0.121251
-46|4276|9044|0.145396
-47|6167|9045|0.583394
-48|7136|9046|0.043099
-49|7137|19345|0.053510
-50|10475|19344|0.015153
-51|10142|19343|0.064475
-52|10140|17566|0.135370
-53|8539|17565|0.057338
-54|10138|17558|0.064893
-55|6943|17559|0.201703
-56|8140|17560|0.469613
-57|10139|20189|0.060217
-58|10705|20185|0.055053
-59|8247|-1|0.000000
diff --git a/src/bd_astar/test/bd_astar-any-02.test.sql b/src/bd_astar/test/bd_astar-any-02.test.sql
deleted file mode 100644
index ef88680..0000000
--- a/src/bd_astar/test/bd_astar-any-02.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bdastar('select * from bdaways'::text, 6585, 8247, true, true) as r ) as foo;
diff --git a/src/bd_astar/test/bd_astar-any-03.result b/src/bd_astar/test/bd_astar-any-03.result
deleted file mode 100644
index e8ee6ec..0000000
--- a/src/bd_astar/test/bd_astar-any-03.result
+++ /dev/null
@@ -1,2 +0,0 @@
-0|9426|14822|0.060319
-1|3606|-1|0.000000
diff --git a/src/bd_astar/test/bd_astar-any-03.test.sql b/src/bd_astar/test/bd_astar-any-03.test.sql
deleted file mode 100644
index f90a660..0000000
--- a/src/bd_astar/test/bd_astar-any-03.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bdastar('select * from bdaways'::text, 9426, 3606, true, true) as r ) as foo;
diff --git a/src/bd_astar/test/bd_astar-any-04.result b/src/bd_astar/test/bd_astar-any-04.result
deleted file mode 100644
index a0cf228..0000000
--- a/src/bd_astar/test/bd_astar-any-04.result
+++ /dev/null
@@ -1,2 +0,0 @@
-0|3606|14822|0.060319
-1|9426|-1|0.000000
diff --git a/src/bd_astar/test/bd_astar-any-04.test.sql b/src/bd_astar/test/bd_astar-any-04.test.sql
deleted file mode 100644
index 275babd..0000000
--- a/src/bd_astar/test/bd_astar-any-04.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bdastar('select * from bdaways'::text, 3606, 9426, true, true) as r ) as foo;
diff --git a/src/bd_astar/test/bd_astar-any-05.result b/src/bd_astar/test/bd_astar-any-05.result
deleted file mode 100644
index 63d314b..0000000
--- a/src/bd_astar/test/bd_astar-any-05.result
+++ /dev/null
@@ -1,101 +0,0 @@
-0|6733|15058|0.044674
-1|9313|15059|0.047811
-2|7101|15060|0.049014
-3|8880|12897|0.170300
-4|5463|6271|0.046800
-5|5462|6270|0.053766
-6|5461|6269|0.104952
-7|5460|6268|0.109859
-8|5459|6267|0.053860
-9|5458|6266|0.055134
-10|5457|16647|0.012368
-11|9969|16650|0.012230
-12|9968|16649|0.081206
-13|9960|16626|0.007036
-14|9938|16621|0.014614
-15|9956|16642|0.029056
-16|9967|19287|0.111281
-17|10468|19288|0.066230
-18|10469|19289|0.065769
-19|10470|19290|0.117748
-20|8767|12598|0.059630
-21|8768|19389|0.016974
-22|10462|19388|0.081956
-23|5805|19387|0.052414
-24|10455|19386|0.052378
-25|7579|19385|0.052864
-26|10459|19384|0.047276
-27|10485|19383|0.005429
-28|5962|19382|0.006171
-29|10484|19381|0.098919
-30|3002|19380|0.108243
-31|4397|19379|0.102702
-32|9194|19378|0.009782
-33|10482|19377|0.096140
-34|10174|19376|0.107643
-35|8634|19375|0.102428
-36|9595|19374|0.106794
-37|8509|19360|0.051709
-38|9948|19359|0.051651
-39|10479|19358|0.059093
-40|9949|19357|0.047698
-41|3170|11899|0.018103
-42|8468|15487|0.034042
-43|9624|16983|0.022924
-44|8467|16982|0.022635
-45|10046|16981|0.045667
-46|8583|15477|0.113487
-47|8311|15478|0.019312
-48|2808|15479|0.209882
-49|9621|15480|0.016198
-50|8522|15481|0.180992
-51|8465|11894|0.046805
-52|8457|11882|0.101185
-53|1807|11883|0.064572
-54|8456|11880|0.048821
-55|8455|11878|0.083250
-56|8452|11871|0.118857
-57|8450|11867|0.005677
-58|529|11868|0.196533
-59|476|11869|0.006925
-60|8451|13167|0.070884
-61|8985|13148|0.014323
-62|8986|13149|0.069498
-63|8496|13150|0.120005
-64|398|13151|0.057786
-65|8987|13152|0.099744
-66|637|13153|0.083288
-67|6436|13154|0.057101
-68|21|13155|0.079185
-69|8988|13156|0.006317
-70|8989|13157|0.118340
-71|1285|13158|0.071931
-72|2962|13159|0.018649
-73|8991|13160|0.187353
-74|8992|13161|0.099016
-75|8351|13162|0.009638
-76|8993|13163|0.069895
-77|8976|13164|0.008029
-78|8977|13165|0.012931
-79|8994|13827|0.010639
-80|9205|13828|0.117213
-81|8304|13829|0.032840
-82|6774|13830|0.196045
-83|3753|13831|0.009169
-84|8325|12990|0.013157
-85|8908|20794|0.013276
-86|10948|20835|0.071114
-87|10929|20778|0.006447
-88|8910|20779|0.008539
-89|10944|20833|0.177477
-90|10951|20811|0.004532
-91|7034|20812|0.005045
-92|10952|20841|0.187594
-93|10940|20771|0.007463
-94|3415|20772|0.005720
-95|10941|20776|0.040800
-96|10943|20796|0.002581
-97|7661|20797|0.002564
-98|10931|20756|0.040876
-99|10932|20787|0.006774
-100|5700|-1|0.000000
diff --git a/src/bd_astar/test/bd_astar-any-05.test.sql b/src/bd_astar/test/bd_astar-any-05.test.sql
deleted file mode 100644
index d20162d..0000000
--- a/src/bd_astar/test/bd_astar-any-05.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bdastar('select * from bdaways'::text, 6733, 5700, true, true) as r ) as foo;
diff --git a/src/bd_astar/test/bd_astar-any-06.result b/src/bd_astar/test/bd_astar-any-06.result
deleted file mode 100644
index 6585a35..0000000
--- a/src/bd_astar/test/bd_astar-any-06.result
+++ /dev/null
@@ -1,60 +0,0 @@
-0|8247|20185|0.055053
-1|10705|20189|0.060217
-2|10139|17560|0.469613
-3|8140|17559|0.201703
-4|6943|17558|0.064893
-5|10138|17565|0.057338
-6|8539|17566|0.135370
-7|10140|19343|0.064475
-8|10142|19344|0.015153
-9|10475|19345|0.053510
-10|7137|9046|0.043099
-11|7136|9045|0.583394
-12|6167|9044|0.145396
-13|4276|9043|0.121251
-14|7135|9042|0.268754
-15|2317|9041|0.145996
-16|4280|9040|0.587619
-17|2043|9039|0.341756
-18|2563|2743|0.102019
-19|2698|17807|0.471312
-20|998|17789|0.064158
-21|8512|17790|0.069816
-22|3305|17791|0.036248
-23|8508|17792|0.109483
-24|6179|17793|0.062258
-25|8402|17794|0.087467
-26|10178|17795|0.007150
-27|10179|17796|0.114755
-28|9318|17797|0.027637
-29|9592|17798|0.076558
-30|10180|17799|0.072658
-31|8536|17800|0.029389
-32|8859|17801|0.045079
-33|9953|17802|0.075825
-34|10171|17803|0.069119
-35|8417|17804|0.015429
-36|7892|17805|0.063931
-37|9203|16876|0.147691
-38|4390|20655|0.075280
-39|9954|20656|0.080500
-40|10883|20657|0.009212
-41|10884|20658|0.048701
-42|8289|20659|0.087952
-43|5957|20660|0.002769
-44|6482|20661|0.120390
-45|5774|20662|0.023243
-46|4620|20663|0.169650
-47|5809|6764|0.050569
-48|5808|6763|0.097186
-49|5807|6762|0.146807
-50|5806|6761|0.145097
-51|5805|6760|0.008679
-52|5804|6759|0.065176
-53|5803|6758|0.013489
-54|5802|17979|0.173776
-55|10025|17978|0.175712
-56|613|17977|0.178581
-57|7125|17976|0.155428
-58|5367|17975|0.200230
-59|6585|-1|0.000000
diff --git a/src/bd_astar/test/bd_astar-any-06.test.sql b/src/bd_astar/test/bd_astar-any-06.test.sql
deleted file mode 100644
index 07867be..0000000
--- a/src/bd_astar/test/bd_astar-any-06.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bdastar('select * from bdaways'::text, 8247, 6585, true, true) as r ) as foo;
diff --git a/src/bd_astar/test/doc-bdAstar.result b/src/bd_astar/test/doc-bdAstar.result
deleted file mode 100644
index 5f8531b..0000000
--- a/src/bd_astar/test/doc-bdAstar.result
+++ /dev/null
@@ -1,13 +0,0 @@
---q1
-0|4|3|0
-1|3|5|1
-2|6|11|1
-3|11|12|0
-4|10|-1|0
---q2
-0|4|3|1
-1|3|5|1
-2|6|8|1
-3|5|10|1
-4|10|-1|0
---q3
diff --git a/src/bd_astar/test/doc-bdAstar.test.sql b/src/bd_astar/test/doc-bdAstar.test.sql
deleted file mode 100644
index 639cf40..0000000
--- a/src/bd_astar/test/doc-bdAstar.test.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--- PGR_pgr_bdAStar
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-\echo --q1
-SELECT * FROM pgr_bdAStar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2
- FROM edge_table',
- 4, 10, false, false);
-\echo --q2
-SELECT * FROM pgr_bdAStar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, x1, y1, x2, y2, reverse_cost
- FROM edge_table ',
- 4, 10, true, true);
-\echo --q3
diff --git a/src/bd_astar/test/pgtap/bdAstar-types-check.sql b/src/bd_astar/test/pgtap/bdAstar-types-check.sql
deleted file mode 100644
index 9c7212b..0000000
--- a/src/bd_astar/test/pgtap/bdAstar-types-check.sql
+++ /dev/null
@@ -1,198 +0,0 @@
-
-\i setup.sql
--- TESTING DOCUMNETATIONS INFORMATION
-
-SELECT plan(33);
-
--- RECEIVES 5 PARAMETERS
-
-SELECT has_function('pgr_bdastar',ARRAY['text', 'integer', 'integer', 'boolean', 'boolean']);
-SELECT function_returns('pgr_bdastar', 'setof pgr_costresult','Returns set of costResult[]');
-
-
--- CHECKING THE INNER QUERY
-
-
-
-PREPARE q1 AS
-SELECT * FROM pgr_bdastar(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table',
- 2, 3, true, true);
-SELECT lives_ok('q1', 'edges query accepts INTEGER & FLOAT');
-
-
-
-SELECT todo_start('issue #140 must accept ANY-INTEGER and ANY-NUMERICAL');
--- some test pass because the code is not checking
-
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::BIGINT, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'id accepts BIGINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::SMALLINT, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'id accepts SMALLINT');
-
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::BIGINT, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'source accepts BIGINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::SMALLINT, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'source accepts SMALLINT');
-
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::BIGINT, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'target accepts BIGINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::SMALLINT, cost::FLOAT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'target accepts SMALLINT');
-
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::BIGINT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'cost accepts BIGINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::INTEGER, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'cost accepts INTEGER');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::SMALLINT, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'cost accepts SMALLINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::REAL, reverse_cost::FLOAT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'cost accepts REAL');
-
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::BIGINT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'reverse_cost accepts BIGINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::INTEGER, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'reverse_cost accepts INTEGER');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::SMALLINT, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'reverse_cost accepts SMALLINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::REAL, x1::FLOAT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'reverse_cost accepts REAL');
-
--- x1
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::BIGINT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'x1 accepts BIGINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::INTEGER, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'x1 accepts INTEGER');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::SMALLINT, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'x1 accepts SMALLINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x1::REAL, y1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'x1 accepts REAL');
-
--- x2
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x2::BIGINT, y1::FLOAT, x1::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'x2 accepts BIGINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x2::INTEGER, y1::FLOAT, x1::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'x2 accepts INTEGER');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x2::SMALLINT, y1::FLOAT, x1::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'x2 accepts SMALLINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, x2::REAL, y1::FLOAT, x1::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'x2 accepts REAL');
-
-
--- y1
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y1::BIGINT, x1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'y1 accepts BIGINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y1::INTEGER, x1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'y1 accepts INTEGER');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y1::SMALLINT, x1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'y1 accepts SMALLINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y1::REAL, x1::FLOAT, x2::FLOAT, y2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'y1 accepts REAL');
-
--- y2
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y2::BIGINT, y1::FLOAT, x1::FLOAT, x2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'y2 accepts BIGINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y2::INTEGER, y1::FLOAT, x1::FLOAT, x2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'y2 accepts INTEGER');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y2::SMALLINT, y1::FLOAT, x1::FLOAT, x2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'y2 accepts SMALLINT');
-SELECT lives_ok(
- 'SELECT * FROM pgr_bdastar(
- ''SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost::FLOAT, reverse_cost::FLOAT, y2::REAL, y1::FLOAT, x1::FLOAT, x2::FLOAT FROM edge_table'',
- 2, 3, true, true)',
- 'y2 accepts REAL');
-
-SELECT todo_end();
-
-
-
-
-SELECT finish();
-ROLLBACK;
diff --git a/src/bd_astar/test/test.conf b/src/bd_astar/test/test.conf
deleted file mode 100644
index 5e26425..0000000
--- a/src/bd_astar/test/test.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/perl -w
-
-%main::tests = (
- 'any' => {
- 'comment' => 'Bi-directional AStar test for any versions.',
- 'data' => ['bd_astar-any-00.data'],
- 'tests' => [qw(
- bd_astar-any-01
- bd_astar-any-02
- bd_astar-any-03
- bd_astar-any-04
- bd_astar-any-05
- bd_astar-any-06
- )],
- 'documentation' => [qw(
- doc-bdAstar
- )],
- },
-# 'vpg-vpgis' => {}, # for version specific tests
-# '8-1' => {}, # for pg 8.x and postgis 1.x
-# '9.2-2.1' => {}, # for pg 9.2 and postgis 2.1
-);
-
-1;
diff --git a/src/bd_astar/tester/BDATester.cpp b/src/bd_astar/tester/BDATester.cpp
deleted file mode 100644
index 7fa45d9..0000000
--- a/src/bd_astar/tester/BDATester.cpp
+++ /dev/null
@@ -1,312 +0,0 @@
-/*PGR-MIT*****************************************************************
-
-* $Id$
-*
-* Project: pgRouting bdsp and bdastar algorithms
-* Purpose:
-* Author: Razequl Islam <ziboncsedu at gmail.com>
-*
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-
-#include "BiDirAStar.h"
-#include "utils.h"
-#include<math.h>
-#include<time.h>
-#include<stdio.h>
-#include<string.h>
-
-#define EPS 1e-8
-
-
-std::vector<edge_astar_t> vecEdges;
-edge_astar_t *edges;
-int edge_count, maxNode;
-char buff[1024];
-path_element_t *path;
-char *err_msg;
-int path_count;
-int kase;
-
-/*
- This method load the edge information from a csv file and put them in the edge_t array that can be passed to the algorithm to find route
-*/
-
-void loadGraph(std::string edgeFile)
-{
- // Open file for reading
- freopen(edgeFile.c_str(), "rt", stdin);
-
- edge_count = 0;
- vecEdges.clear();
- maxNode = -1;
-
- // Read line by line edge info
- while(gets(buff))
- {
- if(strlen(buff) == 0)
- break;
- edge_count++;
-
- StringTokenizer token;
- // tokenize using comma
- token.parse(buff, ",");
- std::vector<std::string> vecToken;
- vecToken.clear();
- token.getTokens(vecToken);
-
- // There should be exactly 9 values: edge_id, start_node_id, end_node_id,
- // start_node_longitude, start_node_latitude, end_node_longitude, end_node_latitude, cost, reverse_cost
- if(vecToken.size() < 5)
- fprintf(stderr, "Error in %d edge\n", edge_count);
-
- // Populate Edge_t structure
- edge_astar_t tempEdge;
- tempEdge.id = atoi(vecToken[0].c_str());
- tempEdge.source = atoi(vecToken[1].c_str());
- tempEdge.target = atoi(vecToken[2].c_str());
- tempEdge.cost = atof(vecToken[3].c_str());
- tempEdge.reverse_cost = atof(vecToken[4].c_str());
- tempEdge.s_x = atof(vecToken[5].c_str());
- tempEdge.s_y = atof(vecToken[6].c_str());
- tempEdge.t_x = atof(vecToken[7].c_str());
- tempEdge.t_y = atof(vecToken[8].c_str());
-
- // Update max_node_id
- if(tempEdge.source > maxNode)
- maxNode = tempEdge.source;
- if(tempEdge.target > maxNode)
- maxNode = tempEdge.target;
-
- vecEdges.push_back(tempEdge);
- }
-
- edges = new edge_astar_t[edge_count];
- int i;
-
- for(i = 0; i < edge_count; i++)
- {
- edges[i] = vecEdges[i];
- }
- fclose(stdin);
-}
-/*
- Write the route in the path file
-*/
-void write_result(std::string fileName, int res)
-{
- int i;
- freopen(fileName.c_str(), "wt", stdout);
- if(res < 0)
- printf("%s\n", err_msg);
- else
- {
- for(i = 0; i < path_count; i++)
- {
- printf("%d\t|%d\t|%.6lf\n", path[i].vertex_id, path[i].edge_id, path[i].cost);
- }
- }
- fclose(stdout);
-}
-
-/*
- Match output with answer file and write result in the result file
-*/
-
-void match(std::string fileName1, std::string fileName2, std::string outFile, double ttime)
-{
- // Open the first file
- freopen(fileName1.c_str(), "rt", stdin);
-
- // Initialization
- std::vector<int> nodeList1;
- nodeList1.clear();
- double totCost1, totCost2;
- int nid, eid;
- double cost;
- totCost1 = 0.0;
-
- // Read paths push node_id, edge_id inthe vector and update total cost
- while(gets(buff))
- {
- if(sscanf(buff, "%d |%d |%lf", &nid, &eid, &cost) != 3)
- {
- totCost1 = -1;
- break;
- }
- nodeList1.push_back(nid);
- nodeList1.push_back(eid);
- totCost1 += cost;
- }
- fclose(stdin);
- bool flag = true;
- // Open the second file
- freopen(fileName2.c_str(), "rt", stdin);
- totCost2 = 0.0;
- int pos = 0;
-
- // Read paths compare with previously constructed vector of node-id, edge_id and updte total cost
- while(gets(buff))
- {
- if(sscanf(buff, "%d |%d |%lf", &nid, &eid, &cost) != 3)
- {
- totCost2 = -1;
- break;
- }
- if(pos >= nodeList1.size() || nodeList1[pos] != nid)
- {
- flag = false;
- }
- pos++;
- if(pos >= nodeList1.size() || nodeList1[pos] != eid)
- {
- flag = false;
- }
- pos++;
- totCost2 += cost;
- }
- fclose(stdin);
-
- // Open output file to write
- freopen(outFile.c_str(), "a+", stdout);
- printf("Case %d: ", kase);
-
- // Both costs matches
- if(fabs(totCost1 - totCost2) < EPS)
- {
- // Path also matches
- if(flag == true)
- {
- printf("Perfect Match!!!\n");
- }
- else // path mismatch
- {
- printf("Cost same, but path differs!!!\n");
- }
- }
- else // Cost mispatch
- {
- printf("Cost differs, %s costs %lf and %s costs %lf\n", fileName1.c_str(), totCost1, fileName2.c_str(), totCost2);
- }
- printf("Query time: %lf sec\n\n", ttime);
- fclose(stdout);
-}
-
-int main()
-{
- int i;
- double cl;
- kase = 1;
-
- // The final output will be written in the outFile and the initial input will be read from inFile
- std::string outFile = "output.txt";
- std::string inFile = "input.txt";
-
- // Create the output file
- FILE *fpout = fopen(outFile.c_str(), "wt");
- fclose(fpout);
-
- // Open the input file
- FILE *fpin = fopen(inFile.c_str(), "rt");
-
- // Reading each of the cases, There may be two types of cases, with 4 parameters, with 5 parameters
- // There may also be comments that starts with #
- while(fgets(buff, 1000, fpin))
- {
- // No data
- if(strlen(buff) == 0)
- continue;
- // Comment
- if(buff[0] == '#')
- continue;
- StringTokenizer token;
-
- // tokeniize using space
- token.parse(buff, " \n\r");
- std::vector<std::string> vecToken;
- token.getTokens(vecToken);
-
- int totParam = vecToken.size();
-
- // Not enough parameters
- if(totParam < 4)
- continue;
-
- // First token is the graph file name
- std::string graphFile = vecToken[0];
-
- // 2nd and 3rd tokens are start and end node id respectively
- int startNode = atoi(vecToken[1].c_str());
- int endNode = atoi(vecToken[2].c_str());
-
- // 4th Token is the result file for this query
- std::string pathFile = vecToken[3];
- int ind = pathFile.length() - 1;
- while(pathFile[ind] < 32)
- {
- pathFile[ind] = '\0';
- ind--;
- }
-
- // Load edge information from graph file
- loadGraph(graphFile);
-
- // Use bidirectional AStar to get the route
- BiDirAStar gdef;
- cl = clock();
- int res = gdef.bidir_astar(edges, edge_count, maxNode, startNode, endNode, &path, &path_count, &err_msg);
- cl = clock() - cl;
-
- // Write the route in the result file
- write_result(pathFile, res);
-
- // There is an answer file
- if(totParam > 4)
- {
- std::string ansFile = vecToken[4];
- ind = ansFile.length() - 1;
- while(ansFile[ind] < 32)
- {
- ansFile[ind] = '\0';
- ind--;
- }
- // Match and write result in the final output file
- match(pathFile, ansFile, outFile, cl / CLOCKS_PER_SEC);
- }
- else
- {
- // Provide information that the route is generated in path file.
- fpout = fopen(outFile.c_str(), "a+");
- fprintf(fpout, "Case %d: Path Written to file %s", kase, pathFile.c_str());
- fprintf(fpout, "Query Time: %lf sec\n\n", cl / CLOCKS_PER_SEC);
- fclose(fpout);
- }
- kase++;
- free(path);
- delete [] edges;
- }
- return 0;
-}
diff --git a/src/bd_astar/tester/BiDirAStar.cpp b/src/bd_astar/tester/BiDirAStar.cpp
deleted file mode 100644
index 0599933..0000000
--- a/src/bd_astar/tester/BiDirAStar.cpp
+++ /dev/null
@@ -1,511 +0,0 @@
-/*PGR-MIT*****************************************************************
-
-* $Id$
-*
-* Project: pgRouting bdsp and bdastar algorithms
-* Purpose:
-* Author: Razequl Islam <ziboncsedu at gmail.com>
-*
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-
-#include "BiDirAStar.h"
-
-BiDirAStar::BiDirAStar(void)
-{
-}
-
-BiDirAStar::~BiDirAStar(void)
-{
-}
-
-void BiDirAStar::init()
-{
- //max_edge_id = 0;
- //max_node_id = 0;
-
-}
-
-/*
- Initialization and allocation of memories.
-*/
-
-void BiDirAStar::initall(int maxNode)
-{
- int i;
- m_pFParent = new PARENT_PATH[maxNode + 1];
- m_pRParent = new PARENT_PATH[maxNode + 1];
-
- m_pFCost = new double[maxNode + 1];
- m_pRCost = new double[maxNode + 1];
-
- for(i = 0; i <= maxNode; i++)
- {
- m_pFParent[i].par_Node = -2;
- m_pRParent[i].par_Node = -2;
- m_pFCost[i] = INF;
- m_pRCost[i] = INF;
-
- }
- m_MinCost = INF;
- m_MidNode = -1;
-}
-
-/*
- Delete the allocated memories to avoid memory leak.
-*/
-
-void BiDirAStar::deleteall()
-{
- delete [] m_pFParent;
- delete [] m_pRParent;
- delete [] m_pFCost;
- delete [] m_pRCost;
-}
-
-/*
- Get the current cost from source to the current node if direction is 1 else the cost to reach target from the current node.
-*/
-
-double BiDirAStar::getcost(int node_id, int dir)
-{
- if(dir == 1)
- {
- return(m_pFCost[node_id]);
- }
- else
- {
- return(m_pRCost[node_id]);
- }
-}
-
-
-double BiDirAStar::dist(double x1, double y1, double x2, double y2)
-{
- double ret = fabs((x1 - x2) + fabs(y1 - y2));
- //double ret = sqrt(x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
- return(ret * 10);
-}
-
-/*
- Get the heuristic cost of the node depending on dir (1 for forward search and -1 for reverse search).
-*/
-double BiDirAStar::gethcost(int node_id, int dir)
-{
- if(dir == -1)
- {
- return(dist(m_vecNodeVector[node_id].xpos, m_vecNodeVector[node_id].ypos, m_vecNodeVector[m_lStartNodeId].xpos, m_vecNodeVector[m_lStartNodeId].ypos));
- }
- else
- {
- return(dist(m_vecNodeVector[node_id].xpos, m_vecNodeVector[node_id].ypos, m_vecNodeVector[m_lEndNodeId].xpos, m_vecNodeVector[m_lEndNodeId].ypos));
- }
-}
-
-/*
- Set the forward or reverse cost list depending on dir (1 for forward search and -1 for reverse search).
-*/
-
-
-void BiDirAStar::setcost(int node_id, int dir, double c)
-{
- if(dir == 1)
- {
- m_pFCost[node_id] = c;
- }
- else
- {
- m_pRCost[node_id] = c;
- }
-}
-
-void BiDirAStar::setparent(int node_id, int dir, int parnode, int paredge)
-{
- if(dir == 1)
- {
- m_pFParent[node_id].par_Node = parnode;
- m_pFParent[node_id].par_Edge = paredge;
- }
- else
- {
- m_pRParent[node_id].par_Node = parnode;
- m_pRParent[node_id].par_Edge = paredge;
- }
-}
-
-/*
- Reconstruct path for forward search. It is like normal dijkstra. The parent array contains the parent of the current node and there is a -1 in the source.
- So one need to recurse up to the source and then add the current node and edge to the list.
-*/
-
-void BiDirAStar::fconstruct_path(int node_id)
-{
- if(m_pFParent[node_id].par_Node == -1)
- return;
- fconstruct_path(m_pFParent[node_id].par_Node);
- path_element_t pt;
- pt.vertex_id = m_pFParent[node_id].par_Node;
- pt.edge_id = m_pFParent[node_id].par_Edge;
- pt.cost = m_pFCost[node_id] - m_pFCost[m_pFParent[node_id].par_Node];
- m_vecPath.push_back(pt);
-}
-
-/*
- Reconstruct path for the reverse search. In this case the subsequent node is stored in the parent and the target contains a -1. So one need to add the node
- and edge to the list and then recurse through the parent up to hitting a -1.
-*/
-
-void BiDirAStar::rconstruct_path(int node_id)
-{
- path_element_t pt;
- if(m_pRParent[node_id].par_Node == -1)
- {
- pt.vertex_id = node_id;
- pt.edge_id = -1;
- pt.cost = 0.0;
- return;
- }
- pt.vertex_id = node_id;
- pt.cost = m_pRCost[node_id] - m_pRCost[m_pRParent[node_id].par_Node];
- pt.edge_id = m_pRParent[node_id].par_Edge;
- m_vecPath.push_back(pt);
- rconstruct_path(m_pRParent[node_id].par_Node);
-}
-
-/*
- This is the main exploration module. The parameter dir indicates whether the exploration will be in forward or reverser direction. The reference to the corresponding
- que is also passed as parameter que. The current node and the current costs are also available as parameter.
-*/
-
-//void BiDirAStar::explore(int cur_node, double cur_cost, int dir, std::priority_queue<PDI, std::vector<PDI>, std::greater<PDI> > &que)
-void BiDirAStar::explore(int cur_node, double cur_cost, int dir, MinHeap &que)
-{
- int i;
- // Number of connected edges
- int con_edge = m_vecNodeVector[cur_node].Connected_Edges_Index.size();
- double edge_cost;
- for(i = 0; i < con_edge; i++)
- {
- int edge_index = m_vecNodeVector[cur_node].Connected_Edges_Index[i];
- // Get the edge from the edge list.
- GraphEdgeInfo edge = m_vecEdgeVector[edge_index];
- // Get the connected node
- int new_node = m_vecNodeVector[cur_node].Connected_Nodes[i];
- int mult;
-
- if(edge.Direction == 0)
- mult = 1;
- else
- mult = dir;
- if(cur_node == edge.StartNode)
- {
- // Current node is the startnode of the edge. For forward search it should use forward cost, otherwise it should use the reverse cost,
- // i.e. if the reverse direction is valid then this node may be visited from the end node.
- if(dir > 0)
- edge_cost = edge.Cost;
- else
- edge_cost = edge.ReverseCost;
- // Check if the direction is valid for exploration
- if(edge.Direction == 0 || edge_cost >= 0.0)
- {
- //edge_cost = edge.Cost * mult;
- // Check if the current edge gives better result
- if(cur_cost + edge_cost < getcost(new_node, dir))
- {
- // explore the node, and push it in the queue. the value in the queue will also contain the heuristic cost
- setcost(new_node, dir, cur_cost + edge_cost);
- setparent(new_node, dir, cur_node, edge.EdgeID);
- que.push(std::make_pair(cur_cost + edge_cost + gethcost(new_node, dir), new_node));
-
- // Update the minimum cost found so far.
- if(getcost(new_node, dir) + getcost(new_node, dir * -1) < m_MinCost)
- {
- m_MinCost = getcost(new_node, dir) + getcost(new_node, dir * -1);
- m_MidNode = new_node;
- }
- }
- }
- }
- else
- {
- // Current node is the endnode of the edge. For forward search it should use reverse cost, otherwise it should use the forward cost,
- // i.e. if the forward direction is valid then this node may be visited from the start node.
- if(dir > 0)
- edge_cost = edge.ReverseCost;
- else
- edge_cost = edge.Cost;
- // Check if the direction is valid for exploration
- if(edge.Direction == 0 || edge_cost >= 0.0)
- {
- //edge_cost = edge.ReverseCost * mult;
-
- // Check if the current edge gives better result
- if(cur_cost + edge_cost < getcost(new_node, dir))
- {
- // explore the node, and push it in the queue. the value in the queue will also contain the heuristic cost
- setcost(new_node, dir, cur_cost + edge_cost);
- setparent(new_node, dir, cur_node, edge.EdgeID);
- que.push(std::make_pair(cur_cost + edge_cost + gethcost(new_node, dir), new_node));
- // Update the minimum cost found so far.
- if(getcost(new_node, dir) + getcost(new_node, dir * -1) < m_MinCost)
- {
- m_MinCost = getcost(new_node, dir) + getcost(new_node, dir * -1);
- m_MidNode = new_node;
- }
- }
- }
- }
- }
-}
-
-/*
- This is the entry function that the wrappers should call. Most of the parameters are trivial. maxNode refers to Maximum
- node id. As we run node based exploration cost, parent etc will be based on maximam node id.
-*/
-
-int BiDirAStar:: bidir_astar(edge_astar_t *edges, unsigned int edge_count, int maxNode, int start_vertex, int end_vertex,
- path_element_t **path, int *path_count, char **err_msg)
-{
- max_node_id = maxNode;
- max_edge_id = -1;
-
- // construct the graph from the edge list, i.e. populate node and edge data structures
- construct_graph(edges, edge_count, maxNode);
-
- m_lStartNodeId = start_vertex;
- m_lEndNodeId = end_vertex;
-
- int nodeCount = m_vecNodeVector.size();
-
- MinHeap fque(maxNode + 2);
- MinHeap rque(maxNode + 2);
- //std::priority_queue<PDI, std::vector<PDI>, std::greater<PDI> > fque;
- //std::priority_queue<PDI, std::vector<PDI>, std::greater<PDI> > rque;
-
- m_vecPath.clear();
-
- int i;
- // Allocate memory for local storage like cost and parent holder
- initall(maxNode);
-
- // Initialize the forward search
- m_pFParent[start_vertex].par_Node = -1;
- m_pFParent[start_vertex].par_Edge = -1;
- m_pFCost[start_vertex] = 0.0;
- fque.push(std::make_pair(0.0, start_vertex));
-
- // Initialize the reverse search
- m_pRParent[end_vertex].par_Node = -1;
- m_pRParent[end_vertex].par_Edge = -1;
- m_pRCost[end_vertex] = 0.0;
- rque.push(std::make_pair(0.0, end_vertex));
-
-
- int new_node;
- int cur_node;
- int dir;
-/*
- The main loop. The algorithm is as follows:
- 1. IF the sum of the current minimum of both heap is greater than so far found path, we cannot get any better, so break the loop.
- 2. IF the reverse heap minimum is lower than the forward heap minimum, explore from reverse direction.
- 3. ELSE explore from the forward directtion.
-*/
-
- while(!fque.empty() && !rque.empty())
- {
- PDI fTop = fque.top();
- PDI rTop = rque.top();
- if(m_pFCost[fTop.second] + m_pRCost[rTop.second] > m_MinCost) //We are done, there is no path with lower cost
- break;
-
- if(rTop.first < fTop.first) // Explore from reverse queue
- {
- if(rTop.first > m_MinCost)
- break;
- cur_node = rTop.second;
- int dir = -1;
- rque.pop();
- explore(cur_node, m_pRCost[rTop.second], dir, rque);
- }
- else // Explore from forward queue
- {
- if(fTop.first > m_MinCost)
- break;
- cur_node = fTop.second;
- int dir = 1;
- fque.pop();
- explore(cur_node, m_pFCost[fTop.second], dir, fque);
- }
- }
-
-/*
- Path reconstruction part. m_MidNode is the joining point where two searches meet to make a shortest path. It is updated in explore.
- If it contains -1, then no path is found. Other wise we have a shortest path and that is reconstructed in the m_vecPath.
-*/
-
- if(m_MidNode == -1)
- {
- *err_msg = (char *)"Path Not Found";
- deleteall();
- return -1;
- }
- else
- {
- // reconstruct path from forward search
- fconstruct_path(m_MidNode);
- // reconstruct path from backward search
- rconstruct_path(m_MidNode);
-
- // insert the last row in the path trace (having edge_id = -1 and cost = 0.0)
- path_element_t pelement;
- pelement.vertex_id = end_vertex;
- pelement.edge_id = -1;
- pelement.cost = 0.0;
- m_vecPath.push_back(pelement);
-
- // Transfer data path to path_element_t format and allocate memory and populate the pointer
- *path = (path_element_t *) malloc(sizeof(path_element_t) * (m_vecPath.size() + 1));
- *path_count = m_vecPath.size();
-
- for(i = 0; i < *path_count; i++)
- {
- (*path)[i].vertex_id = m_vecPath[i].vertex_id;
- (*path)[i].edge_id = m_vecPath[i].edge_id;
- (*path)[i].cost = m_vecPath[i].cost;
- }
-
- }
- deleteall();
- return 0;
-}
-
-/*
- Populate the member variables of the class using the edge list. Basically there is a node list and an edge list. Each node contains the list of adjacent nodes and
- corresponding edge indices from edge list that connect this node with the adjacent nodes.
-*/
-
-bool BiDirAStar::construct_graph(edge_astar_t* edges, int edge_count, int maxNode)
-{
- int i;
- // Create a dummy node
- GraphNodeInfo nodeInfo;
- nodeInfo.Connected_Edges_Index.clear();
- nodeInfo.Connected_Nodes.clear();
-
- // Insert the dummy node into the node list. This acts as place holder. Also change the nodeId so that nodeId and node index in the vector are same.
- // There may be some nodes here that does not appear in the edge list. The size of the list is up to maxNode which is equal to maximum node id.
- for(i = 0; i <= maxNode; i++)
- {
- nodeInfo.NodeID = i;
- m_vecNodeVector.push_back(nodeInfo);
- }
-
- // Process each edge from the edge list and update the member data structures accordingly.
- for(i = 0; i < edge_count; i++)
- {
- addEdge(edges[i]);
- }
-
- return true;
-}
-
-/*
- Process the edge and populate the member nodelist and edgelist. The nodelist already contains up to maxNode dummy entries with nodeId same as index. Now the
- connectivity information needs to be updated.
-*/
-
-bool BiDirAStar::addEdge(edge_astar_t edgeIn)
-{
- long lTest;
- // Check if the edge is already processed.
- Long2LongMap::iterator itMap = m_mapEdgeId2Index.find(edgeIn.id);
- if(itMap != m_mapEdgeId2Index.end())
- return false;
-
- // Create a GraphEdgeInfo using the information of the current edge
- GraphEdgeInfo newEdge;
- newEdge.EdgeID = edgeIn.id;
- newEdge.EdgeIndex = m_vecEdgeVector.size();
- newEdge.StartNode = edgeIn.source;
- newEdge.EndNode = edgeIn.target;
- newEdge.Cost = edgeIn.cost;
- newEdge.ReverseCost = edgeIn.reverse_cost;
-
- // Set the direction. If both cost and reverse cost has positive value the edge is bidirectional and direction field is 0. If cost is positive and reverse cost
- // negative then the edge is unidirectional with direction = 1 (goes from source to target) otherwise it is unidirectional with direction = -1 (goes from target
- // to source). Another way of creating unidirectional edge is assigning big values in cost or reverse_cost. In that case the direction is still zero and this case
- // is handled in the algorithm automatically.
- if(newEdge.Cost >= 0.0 && newEdge.ReverseCost >= 0)
- {
- newEdge.Direction = 0;
- }
- else if(newEdge.Cost >= 0.0)
- {
- newEdge.Direction = 1;
- }
- else
- {
- newEdge.Direction = -1;
- }
-
- if(edgeIn.id > max_edge_id)
- {
- max_edge_id = edgeIn.id;
- }
-
- // Update max_edge_id
- if(newEdge.StartNode > max_node_id)
- {
- return false;//max_node_id = newEdge.StartNode;
- }
- if(newEdge.EndNode > max_node_id)
- {
- return false;//max_node_id = newEdge.EdgeIndex;
- }
-
- m_vecNodeVector[newEdge.StartNode].xpos = edgeIn.s_x;
- m_vecNodeVector[newEdge.StartNode].ypos = edgeIn.s_y;
-
- m_vecNodeVector[newEdge.EndNode].xpos = edgeIn.t_x;
- m_vecNodeVector[newEdge.EndNode].ypos = edgeIn.t_y;
-
- // update connectivity information for the start node.
- m_vecNodeVector[newEdge.StartNode].Connected_Nodes.push_back(newEdge.EndNode);
- m_vecNodeVector[newEdge.StartNode].Connected_Edges_Index.push_back(newEdge.EdgeIndex);
-
- // update connectivity information for the end node.
- m_vecNodeVector[newEdge.EndNode].Connected_Nodes.push_back(newEdge.StartNode);
- m_vecNodeVector[newEdge.EndNode].Connected_Edges_Index.push_back(newEdge.EdgeIndex);
-
-
-
- //Adding edge to the list
- m_mapEdgeId2Index.insert(std::make_pair(newEdge.EdgeID, m_vecEdgeVector.size()));
- m_vecEdgeVector.push_back(newEdge);
-
- //
- return true;
-}
diff --git a/src/bd_astar/tester/BiDirAStar.h b/src/bd_astar/tester/BiDirAStar.h
deleted file mode 100644
index 8060cd0..0000000
--- a/src/bd_astar/tester/BiDirAStar.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/*PGR-MIT*****************************************************************
-
-* $Id$
-*
-* Project: pgRouting bdsp and bdastar algorithms
-* Purpose:
-* Author: Razequl Islam <ziboncsedu at gmail.com>
-*
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-
-#ifndef BIDIRASTAR_H
-#define BIDIRASTAR_H
-
-#include <vector>
-#include <map>
-#include <queue>
-#include <string>
-#include <stdlib.h>
-#include <iostream>
-#include <math.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "MinHeap.h"
-//#include "bdastar.h"
-
-#define INF 1e15
-
-
-
-typedef std::vector<long> LongVector;
-typedef std::vector<LongVector> VectorOfLongVector;
-//typedef std::pair<int, bool> PIB;
-typedef std::pair<double, int> PDI;
-//typedef std::pair<double, std::vector<int> > PDVI;
-
-typedef struct edge
-{
- int id;
- int source;
- int target;
- double s_x;
- double s_y;
- double t_x;
- double t_y;
- double cost;
- double reverse_cost;
-} edge_astar_t;
-
-typedef struct path_element
-{
- int vertex_id;
- int edge_id;
- double cost;
-}path_element_t;
-
-
-typedef struct{
- int par_Node;
- int par_Edge;
-}PARENT_PATH;
-
-typedef struct{
- int NodeID;
- double xpos;
- double ypos;
- std::vector<int> Connected_Nodes;
- std::vector<int> Connected_Edges_Index;
-}GraphNodeInfo;
-
-struct GraphEdgeInfo
-{
-public:
- int EdgeID;
- int EdgeIndex;
- int Direction;
- double Cost;
- double ReverseCost;
- int StartNode;
- int EndNode;
-};
-
-typedef std::vector<GraphEdgeInfo> GraphEdgeVector;
-typedef std::map<long,LongVector> Long2LongVectorMap;
-typedef std::map<long,long> Long2LongMap;
-typedef std::vector<GraphNodeInfo> GraphNodeVector;
-
-
-class BiDirAStar
-{
-public:
- BiDirAStar(void);
- ~BiDirAStar(void);
-
- int bidir_astar(edge_astar_t *edges, unsigned int edge_count, int maxNode, int start_vertex, int end_vertex,
- path_element_t **path, int *path_count, char **err_msg);
-
-
-private:
- bool construct_graph(edge_astar_t *edges, int edge_count, int maxNode);
- void fconstruct_path(int node_id);
- void rconstruct_path(int node_id);
- bool addEdge(edge_astar_t edgeIn);
- bool connectEdge(GraphEdgeInfo& firstEdge, GraphEdgeInfo& secondEdge, bool bIsStartNodeSame);
- void init();
- void initall(int maxNode);
- void deleteall();
- //void explore(int cur_node, double cur_cost, int dir, std::priority_queue<PDI, std::vector<PDI>, std::greater<PDI> > &que);
- void explore(int cur_node, double cur_cost, int dir, MinHeap &que);
- double getcost(int node_id, int dir);
- void setcost(int node_id, int dir, double c);
- void setparent(int node_id, int dir, int parnode, int paredge);
- double gethcost(int node_id, int dir);
- double dist(double x1, double y1, double x2, double y2);
-
-private:
- GraphEdgeVector m_vecEdgeVector;
- Long2LongMap m_mapEdgeId2Index;
- Long2LongVectorMap m_mapNodeId2Edge;
- GraphNodeVector m_vecNodeVector;
- int max_node_id;
- int max_edge_id;
- int m_lStartNodeId;
- int m_lEndNodeId;
-
- double m_MinCost;
- int m_MidNode;
- std::vector <path_element_t> m_vecPath;
- PARENT_PATH *m_pFParent;
- PARENT_PATH *m_pRParent;
- double *m_pFCost;
- double *m_pRCost;
-};
-
-#endif
diff --git a/src/bd_astar/tester/Makefile b/src/bd_astar/tester/Makefile
deleted file mode 100644
index 3f49f2b..0000000
--- a/src/bd_astar/tester/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-all: BDATester
-
-BDATester: BDATester.cpp BiDirAStar.cpp MinHeap.cpp BiDirAStar.h MinHeap.h utils.h
- g++ BDATester.cpp BiDirAStar.cpp MinHeap.cpp -o BDATester
-
-clean:
- rm -f BDATester bdd?.txt output.txt
diff --git a/src/bd_astar/tester/MinHeap.cpp b/src/bd_astar/tester/MinHeap.cpp
deleted file mode 100644
index 1288654..0000000
--- a/src/bd_astar/tester/MinHeap.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-/*PGR-MIT*****************************************************************
-
-* $Id$
-*
-* Project: pgRouting bdsp and bdastar algorithms
-* Purpose:
-* Author: Razequl Islam <ziboncsedu at gmail.com>
-*
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-
-#include "MinHeap.h"
-
-MinHeap::MinHeap(int maxNode)
-{
- init(maxNode);
-}
-
-MinHeap::~MinHeap(void)
-{
- reset();
-}
-
-bool MinHeap::reset(void)
-{
- if(m_HeapTree != NULL)
- {
- delete [] m_HeapTree;
- m_HeapTree = NULL;
- }
- if(m_Index != NULL)
- {
- delete [] m_Index;
- m_Index = NULL;
- }
- return true;
-}
-
-bool MinHeap::init(int maxNode)
-{
- m_HeapTree = new PDI[maxNode + 1];
- m_Index = new int[maxNode + 1];
- memset(m_Index, -1, sizeof(int) * (maxNode + 1));
- m_MaxNodeID = maxNode;
- m_CurrentSize = 0;
- return true;
-}
-
-void MinHeap::push(PDI node)
-{
- int nid = node.second;
- double ncost = node.first;
- if(m_Index[nid] != -1)
- {
- int pos = m_Index[nid];
- if(ncost < m_HeapTree[pos].first)
- {
- m_HeapTree[pos].first = ncost;
- shift_up(pos);
- }
- else
- {
- return;
- }
- }
- else
- {
- m_CurrentSize++;
- m_HeapTree[m_CurrentSize] = node;
- m_Index[nid] = m_CurrentSize;
- shift_up(m_CurrentSize);
- }
-}
-
-PDI MinHeap::top(void)
-{
- return(m_HeapTree[1]);
-}
-
-bool MinHeap::empty(void)
-{
- if(m_CurrentSize == 0)
- return true;
- return false;
-}
-
-void MinHeap::pop(void)
-{
- if(m_CurrentSize == 0)
- return;
- int nid = m_HeapTree[1].second;
- m_Index[nid] = -1;
- m_HeapTree[1] = m_HeapTree[m_CurrentSize];
- m_Index[m_HeapTree[1].second] = 1;
- m_CurrentSize--;
- shift_down(1);
-}
-
-void MinHeap::shift_up(int node)
-{
- while(node > 1)
- {
- int par_node = node / 2;
- if(m_HeapTree[par_node].first <= m_HeapTree[node].first)
- {
- return;
- }
- PDI temp = m_HeapTree[par_node];
- m_HeapTree[par_node] = m_HeapTree[node];
- m_HeapTree[node] = temp;
- m_Index[m_HeapTree[node].second] = node;
- m_Index[m_HeapTree[par_node].second] = par_node;
- node = par_node;
- }
- return;
-}
-
-void MinHeap::shift_down(int node)
-{
- while(node < m_CurrentSize)
- {
- int left_child = node * 2;
- int right_child = node * 2 + 1;
- if(left_child > m_CurrentSize)
- {
- return;
- }
- int smallest = node;
- if(m_HeapTree[left_child] < m_HeapTree[smallest])
- {
- smallest = left_child;
- }
- if(right_child <= m_CurrentSize)
- {
- if(m_HeapTree[right_child] < m_HeapTree[smallest])
- {
- smallest = right_child;
- }
- }
- if(node == smallest)
- return;
- PDI temp = m_HeapTree[node];
- m_HeapTree[node] = m_HeapTree[smallest];
- m_HeapTree[smallest] = temp;
- m_Index[m_HeapTree[node].second] = node;
- m_Index[m_HeapTree[smallest].second] = smallest;
- node = smallest;
- }
- return;
-}
diff --git a/src/bd_astar/tester/MinHeap.h b/src/bd_astar/tester/MinHeap.h
deleted file mode 100644
index 2760a3a..0000000
--- a/src/bd_astar/tester/MinHeap.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*PGR-MIT*****************************************************************
-
-* $Id$
-*
-* Project: pgRouting bdsp and bdastar algorithms
-* Purpose:
-* Author: Razequl Islam <ziboncsedu at gmail.com>
-*
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-
-#ifndef MINHEAP_H
-#define MINHEAP_H
-
-#include <string>
-#include <stdlib.h>
-#include <iostream>
-#include <map>
-#include <math.h>
-#include <string.h>
-
-typedef std::pair<double, int> PDI;
-
-class MinHeap
-{
-public:
- MinHeap(int maxNode);
- ~MinHeap(void);
-
- bool reset(void);
- bool init(int maxNode);
- void push(PDI node);
- PDI top();
- void pop();
- bool empty();
-
-private:
- void shift_up(int node);
- void shift_down(int node);
-
-private:
- PDI *m_HeapTree;
- int *m_Index;
- int m_MaxNodeID;
- int m_CurrentSize;
-
-};
-
-#endif
diff --git a/src/bd_astar/tester/ans1.txt b/src/bd_astar/tester/ans1.txt
deleted file mode 100644
index 0434fd7..0000000
--- a/src/bd_astar/tester/ans1.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-5700 |20787 |0.006774
-10932 |20756 |0.040876
-10931 |20797 |0.002564
-7661 |20796 |0.002581
-10943 |20776 |0.040800
-10941 |20772 |0.005720
-3415 |20771 |0.007463
-10940 |20841 |0.187594
-10952 |20812 |0.005045
-7034 |20811 |0.004532
-10951 |20833 |0.177477
-10944 |20779 |0.008539
-8910 |20778 |0.006447
-10929 |20835 |0.071114
-10948 |20794 |0.013276
-8908 |12990 |0.013157
-8325 |13831 |0.009169
-3753 |13830 |0.196045
-6774 |13829 |0.032840
-8304 |13828 |0.117213
-9205 |13827 |0.010639
-8994 |13165 |0.012931
-8977 |13164 |0.008029
-8976 |13163 |0.069895
-8993 |13162 |0.009638
-8351 |13161 |0.099016
-8992 |13160 |0.187353
-8991 |13159 |0.018649
-2962 |13158 |0.071931
-1285 |13157 |0.118340
-8989 |13156 |0.006317
-8988 |13155 |0.079185
-21 |13154 |0.057101
-6436 |13153 |0.083288
-637 |13152 |0.099744
-8987 |13151 |0.057786
-398 |13150 |0.120005
-8496 |13149 |0.069498
-8986 |13148 |0.014323
-8985 |13167 |0.070884
-8451 |11869 |0.006925
-476 |11868 |0.196533
-529 |11867 |0.005677
-8450 |11871 |0.118857
-8452 |11878 |0.083250
-8455 |11880 |0.048821
-8456 |11883 |0.064572
-1807 |11882 |0.101185
-8457 |11894 |0.046805
-8465 |15481 |0.180992
-8522 |15480 |0.016198
-9621 |15479 |0.209882
-2808 |15478 |0.019312
-8311 |15477 |0.113487
-8583 |16981 |0.045667
-10046 |16982 |0.022635
-8467 |16983 |0.022924
-9624 |15487 |0.034042
-8468 |11899 |0.018103
-3170 |19357 |0.047698
-9949 |19358 |0.059093
-10479 |19359 |0.051651
-9948 |19360 |0.051709
-8509 |19374 |0.106794
-9595 |19375 |0.102428
-8634 |19376 |0.107643
-10174 |19377 |0.096140
-10482 |19378 |0.009782
-9194 |19379 |0.102702
-4397 |19380 |0.108243
-3002 |19381 |0.098919
-10484 |19382 |0.006171
-5962 |19383 |0.005429
-10485 |19384 |0.047276
-10459 |19385 |0.052864
-7579 |19386 |0.052378
-10455 |19387 |0.052414
-5805 |19388 |0.081956
-10462 |19389 |0.016974
-8768 |12598 |0.059630
-8767 |19290 |0.117748
-10470 |19289 |0.065769
-10469 |19288 |0.066230
-10468 |19287 |0.111281
-9967 |16642 |0.029056
-9956 |16621 |0.014614
-9938 |16626 |0.007036
-9960 |16649 |0.081206
-9968 |16650 |0.012230
-9969 |16647 |0.012368
-5457 |6266 |0.055134
-5458 |6267 |0.053860
-5459 |6268 |0.109859
-5460 |6269 |0.104952
-5461 |6270 |0.053766
-5462 |6271 |0.046800
-5463 |12897 |0.170300
-8880 |15060 |0.049014
-7101 |15059 |0.047811
-9313 |15058 |0.044674
-6733 |-1 |0.000000
diff --git a/src/bd_astar/tester/ans2.txt b/src/bd_astar/tester/ans2.txt
deleted file mode 100644
index 60579c7..0000000
--- a/src/bd_astar/tester/ans2.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-6585 |17975 |0.200230
-5367 |17976 |0.155428
-7125 |17977 |0.178581
-613 |17978 |0.175712
-10025 |17979 |0.173776
-5802 |6758 |0.013489
-5803 |6759 |0.065176
-5804 |6760 |0.008679
-5805 |6761 |0.145097
-5806 |6762 |0.146807
-5807 |6763 |0.097186
-5808 |6764 |0.050569
-5809 |20663 |0.169650
-4620 |20662 |0.023243
-5774 |20661 |0.120390
-6482 |20660 |0.002769
-5957 |20659 |0.087952
-8289 |20658 |0.048701
-10884 |20657 |0.009212
-10883 |20656 |0.080500
-9954 |20655 |0.075280
-4390 |16876 |0.147691
-9203 |17805 |0.063931
-7892 |17804 |0.015429
-8417 |17803 |0.069119
-10171 |17802 |0.075825
-9953 |17801 |0.045079
-8859 |17800 |0.029389
-8536 |17799 |0.072658
-10180 |17798 |0.076558
-9592 |17797 |0.027637
-9318 |17796 |0.114755
-10179 |17795 |0.007150
-10178 |17794 |0.087467
-8402 |17793 |0.062258
-6179 |17792 |0.109483
-8508 |17791 |0.036248
-3305 |17790 |0.069816
-8512 |17789 |0.064158
-998 |17807 |0.471312
-2698 |2743 |0.102019
-2563 |9039 |0.341756
-2043 |9040 |0.587619
-4280 |9041 |0.145996
-2317 |9042 |0.268754
-7135 |9043 |0.121251
-4276 |9044 |0.145396
-6167 |9045 |0.583394
-7136 |9046 |0.043099
-7137 |19345 |0.053510
-10475 |19344 |0.015153
-10142 |19343 |0.064475
-10140 |17566 |0.135370
-8539 |17565 |0.057338
-10138 |17558 |0.064893
-6943 |17559 |0.201703
-8140 |17560 |0.469613
-10139 |20189 |0.060217
-10705 |20185 |0.055053
-8247 |-1 |0.000000
diff --git a/src/bd_astar/tester/ans3.txt b/src/bd_astar/tester/ans3.txt
deleted file mode 100644
index c7bfec2..0000000
--- a/src/bd_astar/tester/ans3.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-9426 |14822 |0.060319
-3606 |-1 |0.000000
diff --git a/src/bd_astar/tester/ans4.txt b/src/bd_astar/tester/ans4.txt
deleted file mode 100644
index 94026f5..0000000
--- a/src/bd_astar/tester/ans4.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-3606 |14822 |0.060319
-9426 |-1 |0.000000
diff --git a/src/bd_astar/tester/ans5.txt b/src/bd_astar/tester/ans5.txt
deleted file mode 100644
index a5cdc1d..0000000
--- a/src/bd_astar/tester/ans5.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-6733 |15058 |0.044674
-9313 |15059 |0.047811
-7101 |15060 |0.049014
-8880 |12897 |0.170300
-5463 |6271 |0.046800
-5462 |6270 |0.053766
-5461 |6269 |0.104952
-5460 |6268 |0.109859
-5459 |6267 |0.053860
-5458 |6266 |0.055134
-5457 |16647 |0.012368
-9969 |16650 |0.012230
-9968 |16649 |0.081206
-9960 |16626 |0.007036
-9938 |16621 |0.014614
-9956 |16642 |0.029056
-9967 |19287 |0.111281
-10468 |19288 |0.066230
-10469 |19289 |0.065769
-10470 |19290 |0.117748
-8767 |12598 |0.059630
-8768 |19389 |0.016974
-10462 |19388 |0.081956
-5805 |19387 |0.052414
-10455 |19386 |0.052378
-7579 |19385 |0.052864
-10459 |19384 |0.047276
-10485 |19383 |0.005429
-5962 |19382 |0.006171
-10484 |19381 |0.098919
-3002 |19380 |0.108243
-4397 |19379 |0.102702
-9194 |19378 |0.009782
-10482 |19377 |0.096140
-10174 |19376 |0.107643
-8634 |19375 |0.102428
-9595 |19374 |0.106794
-8509 |19360 |0.051709
-9948 |19359 |0.051651
-10479 |19358 |0.059093
-9949 |19357 |0.047698
-3170 |11899 |0.018103
-8468 |15487 |0.034042
-9624 |16983 |0.022924
-8467 |16982 |0.022635
-10046 |16981 |0.045667
-8583 |15477 |0.113487
-8311 |15478 |0.019312
-2808 |15479 |0.209882
-9621 |15480 |0.016198
-8522 |15481 |0.180992
-8465 |11894 |0.046805
-8457 |11882 |0.101185
-1807 |11883 |0.064572
-8456 |11880 |0.048821
-8455 |11878 |0.083250
-8452 |11871 |0.118857
-8450 |11867 |0.005677
-529 |11868 |0.196533
-476 |11869 |0.006925
-8451 |13167 |0.070884
-8985 |13148 |0.014323
-8986 |13149 |0.069498
-8496 |13150 |0.120005
-398 |13151 |0.057786
-8987 |13152 |0.099744
-637 |13153 |0.083288
-6436 |13154 |0.057101
-21 |13155 |0.079185
-8988 |13156 |0.006317
-8989 |13157 |0.118340
-1285 |13158 |0.071931
-2962 |13159 |0.018649
-8991 |13160 |0.187353
-8992 |13161 |0.099016
-8351 |13162 |0.009638
-8993 |13163 |0.069895
-8976 |13164 |0.008029
-8977 |13165 |0.012931
-8994 |13827 |0.010639
-9205 |13828 |0.117213
-8304 |13829 |0.032840
-6774 |13830 |0.196045
-3753 |13831 |0.009169
-8325 |12990 |0.013157
-8908 |20794 |0.013276
-10948 |20835 |0.071114
-10929 |20778 |0.006447
-8910 |20779 |0.008539
-10944 |20833 |0.177477
-10951 |20811 |0.004532
-7034 |20812 |0.005045
-10952 |20841 |0.187594
-10940 |20771 |0.007463
-3415 |20772 |0.005720
-10941 |20776 |0.040800
-10943 |20796 |0.002581
-7661 |20797 |0.002564
-10931 |20756 |0.040876
-10932 |20787 |0.006774
-5700 |-1 |0.000000
diff --git a/src/bd_astar/tester/ans6.txt b/src/bd_astar/tester/ans6.txt
deleted file mode 100644
index 046e7bc..0000000
--- a/src/bd_astar/tester/ans6.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-8247 |20185 |0.055053
-10705 |20189 |0.060217
-10139 |17560 |0.469613
-8140 |17559 |0.201703
-6943 |17558 |0.064893
-10138 |17565 |0.057338
-8539 |17566 |0.135370
-10140 |19343 |0.064475
-10142 |19344 |0.015153
-10475 |19345 |0.053510
-7137 |9046 |0.043099
-7136 |9045 |0.583394
-6167 |9044 |0.145396
-4276 |9043 |0.121251
-7135 |9042 |0.268754
-2317 |9041 |0.145996
-4280 |9040 |0.587619
-2043 |9039 |0.341756
-2563 |2743 |0.102019
-2698 |17807 |0.471312
-998 |17789 |0.064158
-8512 |17790 |0.069816
-3305 |17791 |0.036248
-8508 |17792 |0.109483
-6179 |17793 |0.062258
-8402 |17794 |0.087467
-10178 |17795 |0.007150
-10179 |17796 |0.114755
-9318 |17797 |0.027637
-9592 |17798 |0.076558
-10180 |17799 |0.072658
-8536 |17800 |0.029389
-8859 |17801 |0.045079
-9953 |17802 |0.075825
-10171 |17803 |0.069119
-8417 |17804 |0.015429
-7892 |17805 |0.063931
-9203 |16876 |0.147691
-4390 |20655 |0.075280
-9954 |20656 |0.080500
-10883 |20657 |0.009212
-10884 |20658 |0.048701
-8289 |20659 |0.087952
-5957 |20660 |0.002769
-6482 |20661 |0.120390
-5774 |20662 |0.023243
-4620 |20663 |0.169650
-5809 |6764 |0.050569
-5808 |6763 |0.097186
-5807 |6762 |0.146807
-5806 |6761 |0.145097
-5805 |6760 |0.008679
-5804 |6759 |0.065176
-5803 |6758 |0.013489
-5802 |17979 |0.173776
-10025 |17978 |0.175712
-613 |17977 |0.178581
-7125 |17976 |0.155428
-5367 |17975 |0.200230
-6585 |-1 |0.000000
diff --git a/src/bd_astar/tester/input.txt b/src/bd_astar/tester/input.txt
deleted file mode 100644
index 35fb2f3..0000000
--- a/src/bd_astar/tester/input.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-ways.txt 5700 6733 bdd1.txt ans1.txt
-ways.txt 6585 8247 bdd2.txt ans2.txt
-ways.txt 9426 3606 bdd3.txt ans3.txt
-ways.txt 3606 9426 bdd4.txt ans4.txt
-ways.txt 6733 5700 bdd5.txt ans5.txt
-ways.txt 8247 6585 bdd6.txt ans6.txt
-
diff --git a/src/bd_astar/tester/utils.h b/src/bd_astar/tester/utils.h
deleted file mode 100644
index 3cc70d5..0000000
--- a/src/bd_astar/tester/utils.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef UTILS_H
-#define UTILS_H
-
-#include <string>
-#include <map>
-#include <vector>
-#include <queue>
-#include <iostream>
-
-
-
-
-typedef std::vector<long> LongVector;
-typedef std::vector<int> IntVector;
-typedef std::vector<double> DoubleVector;
-typedef std::vector<std::string> StringVector;
-
-
-class StringOperation
-{
-
-public:
-
- static std::string TRIMWHITESPACE(std::string strInput)
- {
- std::string strOut = strInput;
- std::string strWht = " \f\n\r\t\v";
-
- strOut.erase(0,strOut.find_first_not_of(strWht));
- strOut.erase(strOut.find_last_not_of(strWht) + 1);
- return strOut;
- };
-};
-
-class StringTokenizer
-{
-public:
- StringTokenizer()
- {
- reset();
- }
-
- void reset()
- {
- vecTokens.clear();
- strInput = "";
- }
-
- bool parse(std::string strInput, std::string chDelim)
- {
- size_t iStartPos = 0;
- while(true)
- {
- size_t iPos = strInput.find(chDelim[0],iStartPos);
- if(iPos != std::string::npos)
- {
- std::string strToken;
- strToken = strInput.substr(iStartPos,iPos - iStartPos);
- vecTokens.push_back(strToken);
- iStartPos = iPos + 1;
- }
- else if(iPos == std::string::npos && strInput.length() > 0 )
- {
- std::string strToken;
- strToken = strInput.substr(iStartPos, strInput.length() - iStartPos);
- if(strToken.length() > 0)
- vecTokens.push_back(strToken);
- break;
- }
- else
- break;
-
- }
- return true;
- }
-
- size_t getTokenCount()
- {
- return vecTokens.size();
- }
-
- bool getToken(std::string& strToken, size_t iTokenIndex)
- {
- long lTokenCount = vecTokens.size();
- if(iTokenIndex < 0 || iTokenIndex < lTokenCount)
- {
- strToken = vecTokens[iTokenIndex];
- return true;
- }
- return false;
- }
-
- bool getTokens(StringVector& vecTokensRef)
- {
- vecTokensRef = vecTokens;
- return true;
- }
-
-private:
- std::string strInput;
- StringVector vecTokens;
-
-};
-
-#endif
diff --git a/src/bd_astar/tester/ways.txt b/src/bd_astar/tester/ways.txt
deleted file mode 100644
index 2070583..0000000
--- a/src/bd_astar/tester/ways.txt
+++ /dev/null
@@ -1,17268 +0,0 @@
-18129,10271,10265,0.407629542119694,0.407629542119694,-105.0222175,39.7910979,-105.0222149,39.787432
-14822,9426,3606,0.0603186413824967,0.0603186413824967,-105.0236131,39.7548297,-105.0243187,39.7548283
-16176,5812,7719,0.198519002375015,0.198519002375015,-104.9868503,39.6911967,-104.9868624,39.6894114
-16177,7719,9841,1.21182332618964,1.21182332618964,-104.9868624,39.6894114,-104.9869458,39.6785134
-16178,137,1482,0.199034161669709,0.199034161669709,-104.990773,39.6930188,-104.9907544,39.6948087
-16179,1482,3758,0.20606858724026,0.20606858724026,-104.9907544,39.6948087,-104.9907434,39.6966619
-16217,7903,7844,0.0651768093591436,0.0651768093591436,-105.0105038,39.7592382,-105.0110496,39.7596475
-16218,7844,6725,0.105799860394335,0.105799860394335,-105.0110496,39.7596475,-105.0111475,39.760596
-15793,2298,2322,0.00529554982932783,0.00529554982932783,-105.0218722,39.7380446,-105.0218662,39.7379972
-14854,9432,9433,0.00987428384236239,0.00987428384236239,-105.0069697,39.7566591,-105.0068808,39.7566024
-19732,4490,10638,0.0159213769578026,0.0159213769578026,-105.0052486,39.7360678,-105.0050796,39.7360077
-19734,10639,10640,0.115517684408379,0.115517684408379,-104.9689526,39.7383918,-104.9684353,39.7374321
-19736,10643,5491,0.200611432022914,0.200611432022914,-104.9456446,39.7401427,-104.9456286,39.7383386
-19737,5491,9472,0.173586542348893,0.173586542348893,-104.9456286,39.7383386,-104.9456312,39.7367775
-16211,7730,9848,1.41098736584228,1.41098736584228,-104.9786837,39.6894012,-104.9787084,39.6767119
-19766,8868,3770,0.15451665559366,0.15451665559366,-104.9434398,39.7304973,-104.9434426,39.7291077
-19767,3770,10249,0.199225315153312,0.199225315153312,-104.9434426,39.7291077,-104.9434211,39.7273161
-19769,9471,4895,0.183643472400882,0.183643472400882,-104.9445503,39.7367663,-104.9445218,39.7351149
-19770,4895,9419,0.162738965694015,0.162738965694015,-104.9445218,39.7351149,-104.944537,39.7336514
-16694,9991,9992,0.00824975577533471,0.00824975577533471,-105.0009011,39.745286,-105.0008221,39.7453286
-16253,9862,7741,0.405750287416545,0.405750287416545,-104.9552615,39.6856875,-104.9552614,39.6893365
-16254,7741,5836,0.199719306282583,0.199719306282583,-104.9552614,39.6893365,-104.9552507,39.6911326
-16255,5836,9863,0.20307644815808,0.20307644815808,-104.9552507,39.6911326,-104.9552587,39.6929589
-445,449,450,0.199450473576153,0.199450473576153,-104.9423777,39.727311,-104.942375,39.7291047
-20724,9339,9399,0.00989025456720925,0.00989025456720925,-105.0251698,39.7619441,-105.0252855,39.7619451
-20725,9399,10912,0.0075300269970097,0.0075300269970097,-105.0252855,39.7619451,-105.0253734,39.7619406
-20727,10911,9342,0.00831469236711343,0.00831469236711343,-105.0250813,39.7632958,-105.02517,39.7633265
-18403,7778,10286,0.0505898966958872,0.0505898966958872,-105.0393109,39.7554232,-105.0387191,39.7554242
-273,283,284,0.0964719650645454,0.0964719650645454,-104.9824285,39.7794055,-104.9813127,39.7792736
-275,285,286,0.0574345831683482,0.0574345831683482,-105.0375561,39.7104672,-105.0376076,39.7109822
-276,286,287,0.00381671595135443,0.00381671595135443,-105.0376076,39.7109822,-105.037589,39.710951
-277,288,286,0.0749798421316384,0.0749798421316384,-105.0384831,39.7110152,-105.0376076,39.7109822
-267,277,278,0.026080790494895,0.026080790494895,-104.9875916,39.7783304,-104.9876105,39.7785645
-19535,10550,10547,0.0727126892007364,0.0727126892007364,-104.9890324,39.7101818,-104.9890392,39.7095279
-240,247,248,0.0772679392991742,0.0772679392991742,-104.9672584,39.6865375,-104.966468,39.6862015
-242,249,250,0.0969982430766615,0.0969982430766615,-104.998368,39.698242,-104.998399,39.69737
-19500,10527,10528,0.0180139213913488,0.0180139213913488,-104.9883695,39.7068128,-104.9883708,39.7066508
-16008,9778,9779,0.0944640625920965,0.0944640625920965,-104.9996367,39.6880494,-104.9993937,39.6888781
-15463,8882,1361,0.00984596954833585,0.00984596954833585,-105.0018196,39.7432597,-105.0019226,39.7432201
-11520,658,713,0.150268576052698,0.150268576052698,-105.0299141,39.7589753,-105.0281562,39.7589668
-270,280,281,0.0978981798906238,0.0978981798906238,-104.9858487,39.7794049,-104.9847034,39.7794255
-16247,7743,5838,0.199906773104335,0.199906773104335,-104.952944,39.68933,-104.9529386,39.6911278
-505,499,500,0.0224810261782308,0.0224810261782308,-105.0019139,39.7130364,-105.0016511,39.7130338
-19508,10448,10534,0.00643702567875165,0.00643702567875165,-104.9883503,39.7088103,-104.9882751,39.7088082
-16434,9896,3281,0.0340559329983669,0.0340559329983669,-104.9713614,39.7025858,-104.9710667,39.7027917
-19458,10492,10506,0.00750267115612711,0.00750267115612711,-104.991144,39.7108499,-104.9910563,39.7108489
-16700,9995,9996,0.0459960991438913,0.0459960991438913,-105.0002467,39.7468596,-104.9999838,39.7464987
-17222,5174,8210,0.200775724104805,0.200775724104805,-104.9774882,39.7165195,-104.9774991,39.7183251
-17224,4240,7299,0.0119914556826953,0.0119914556826953,-104.9774946,39.7019203,-104.9774985,39.7020281
-345,346,347,0.130802492327731,0.130802492327731,-105.0077031,39.726667,-105.0087846,39.7258352
-347,348,349,0.135557185972568,0.135557185972568,-105.0167349,39.7741306,-105.0166897,39.7753492
-348,349,350,0.136845365159024,0.136845365159024,-105.0166897,39.7753492,-105.0166327,39.7765791
-355,357,358,0.388256388951567,0.388256388951567,-105.0040637,39.6822107,-105.0034646,39.6856718
-356,358,359,0.410677079496879,0.410677079496879,-105.0034646,39.6856718,-105.0015512,39.6890589
-18458,10297,6395,0.0910083144293941,0.0910083144293941,-105.03052,39.7468559,-105.0300459,39.7475887
-18424,8333,10290,0.150248967925867,0.150248967925867,-105.0410618,39.76212,-105.0410717,39.7607688
-18426,8331,7848,0.20002866768649,0.20002866768649,-105.0387149,39.7621204,-105.0387174,39.7603215
-16185,9843,7721,1.49406009526399,1.49406009526399,-104.9846521,39.6759732,-104.9845556,39.6894094
-18230,2552,10281,0.408042509102773,0.408042509102773,-105.0421454,39.7874345,-105.0421588,39.7911041
-568,561,562,0.0238735645312088,0.0238735645312088,-104.984845,39.7400568,-104.9848447,39.7398421
-509,503,504,0.0378269387886271,0.0378269387886271,-104.9454639,39.7487815,-104.9458317,39.7485924
-510,504,505,0.131422581642966,0.131422581642966,-104.9458317,39.7485924,-104.9471759,39.748019
-511,505,506,0.13298824931129,0.13298824931129,-104.9471759,39.748019,-104.9486568,39.747653
-512,506,507,0.0469418788297666,0.0469418788297666,-104.9486568,39.747653,-104.9492017,39.7477049
-513,507,508,0.00800396830514923,0.00800396830514923,-104.9492017,39.7477049,-104.9492875,39.7477337
-514,508,509,0.189986229051577,0.189986229051577,-104.9492875,39.7477337,-104.9514881,39.747496
-521,516,517,0.0463139600038384,0.0463139600038384,-104.968998,39.788144,-104.968456,39.788149
-12956,1507,1599,0.174395269936236,0.174395269936236,-105.0003423,39.7408556,-105.0021858,39.7415267
-19854,9521,10661,0.207011877470032,0.207011877470032,-105.04459,39.7403388,-105.044594,39.7384771
-11687,773,774,0.0194846935551434,0.0194846935551434,-105.0019256,39.7530472,-105.0018298,39.7532062
-20577,10865,10866,0.00985918265048112,0.00985918265048112,-105.024575,39.7609374,-105.0244598,39.760933
-15197,3400,9212,0.0496967641825266,0.0496967641825266,-105.0346118,39.7499915,-105.0351931,39.7499892
-3594,3445,1174,0.142771364790872,0.142771364790872,-104.9462568,39.7619224,-104.9462747,39.7632063
-3595,1174,897,0.139794356108886,0.139794356108886,-104.9462747,39.7632063,-104.9462766,39.7644635
-19561,10564,10565,0.0196154846965349,0.0196154846965349,-104.9892825,39.7091533,-104.9895118,39.7091548
-16270,6159,9867,0.121531820960243,0.121531820960243,-104.9571463,39.7006474,-104.955726,39.700668
-11805,8417,8418,0.134805848745127,0.134805848745127,-104.9873865,39.7509603,-104.986246,39.7517975
-18434,8357,10291,0.154597709113849,0.154597709113849,-105.0387283,39.763957,-105.0387163,39.7625667
-15269,8698,8458,0.108561000163296,0.108561000163296,-104.9293068,39.7060799,-104.9284834,39.705337
-16600,3169,9952,0.143650464740249,0.143650464740249,-105.0010939,39.7483839,-104.9999037,39.7492958
-971,982,983,0.153004941982632,0.153004941982632,-104.9740839,39.7304453,-104.9740784,39.7290693
-19467,10511,10512,0.0226507231527583,0.0226507231527583,-104.9902675,39.7093534,-104.9902689,39.7091497
-19468,10512,10513,0.0195038602641882,0.0195038602641882,-104.9902689,39.7091497,-104.9902701,39.7089743
-16605,9954,9955,0.0548421550272179,0.0548421550272179,-104.9873941,39.7482417,-104.98691,39.7485653
-16733,5003,10004,0.0399314883998924,0.0399314883998924,-104.9542392,39.7014907,-104.9539532,39.7012069
-16677,9979,9980,0.023537846703909,0.023537846703909,-105.0090565,39.7415049,-105.0092872,39.7413894
-15811,9714,9715,0.0297752747528411,0.0297752747528411,-105.0287669,39.734998,-105.0286408,39.7352476
-12949,1304,1330,0.0581647037716416,0.0581647037716416,-105.0024118,39.7438801,-105.0020771,39.7434247
-11964,5499,7073,0.148280923478534,0.148280923478534,-104.978687,39.7590038,-104.9774602,39.7599466
-18453,9427,4296,0.104102993198957,0.104102993198957,-105.0410753,39.7548663,-105.0410672,39.7539301
-20603,10836,10820,0.0118777812250081,0.0118777812250081,-105.0188782,39.7585174,-105.0188943,39.7586235
-20604,10820,10827,0.0109415807816948,0.0109415807816948,-105.0188943,39.7586235,-105.0188943,39.7587219
-318,326,327,0.287313248528131,0.287313248528131,-104.9969556,39.7087095,-104.9987289,39.7109039
-919,933,934,0.0476774715690845,0.0476774715690845,-104.9758289,39.7320426,-104.9752714,39.7320373
-920,934,935,0.0499176342652801,0.0499176342652801,-104.9752714,39.7320373,-104.9746877,39.7320425
-921,935,936,0.0512339711733563,0.0512339711733563,-104.9746877,39.7320425,-104.9740886,39.7320473
-12002,6577,5507,0.29282736629382,0.29282736629382,-104.9845851,39.7598337,-104.9821628,39.7616959
-2397,2072,2388,0.0939943538292093,0.0939943538292093,-104.9530584,39.7738703,-104.9519586,39.7738777
-17363,7241,3255,0.194151227318962,0.194151227318962,-104.9786816,39.7057151,-104.9786655,39.7039691
-3612,954,3458,0.174654702147255,0.174654702147255,-104.9461808,39.7320927,-104.9461745,39.7336634
-3613,3458,3459,0.161855899930502,0.161855899930502,-104.9461745,39.7336634,-104.9461795,39.735119
-3614,3459,3460,0.184505780617563,0.184505780617563,-104.9461795,39.735119,-104.9461809,39.7367783
-3615,3460,3461,0.174076203888655,0.174076203888655,-104.9461809,39.7367783,-104.9461758,39.7383438
-12954,1477,1478,0.162422090556836,0.162422090556836,-105.002429,39.7428637,-105.0010729,39.7418408
-16746,6830,10008,0.0662012224002346,0.0662012224002346,-104.9512088,39.6979166,-104.9506165,39.6975335
-19537,10551,4704,0.0179029738053875,0.0179029738053875,-104.9890395,39.7095019,-104.9890412,39.7093409
-16747,10008,3664,0.0562861796352498,0.0562861796352498,-104.9506165,39.6975335,-104.9507,39.6970314
-12008,8513,4459,0.0575373844976813,0.0575373844976813,-104.9847187,39.7610718,-104.9842417,39.7614369
-12009,4459,5508,0.146438493557302,0.146438493557302,-104.9842417,39.7614369,-104.9830521,39.7623846
-11575,1594,1595,0.149695612752929,0.149695612752929,-105.0340269,39.7566757,-105.0340012,39.7553296
-18383,8920,8960,0.0494721849144557,0.0494721849144557,-105.0258859,39.7720013,-105.0258905,39.7724462
-19652,10605,10528,0.00763160148090486,0.00763160148090486,-104.9882816,39.7066519,-104.9883708,39.7066508
-1706,1727,204,0.0785826238386085,0.0785826238386085,-105.0194505,39.690822,-105.0203689,39.690822
-11578,1595,1767,0.0524448615311058,0.0524448615311058,-105.0340012,39.7553296,-105.0346147,39.7553296
-351,353,354,0.0783794642996216,0.0783794642996216,-104.9345948,39.720897,-104.9346635,39.7201941
-16749,53,10005,0.150239248303575,0.150239248303575,-104.9519712,39.7002191,-104.9531164,39.6991948
-20036,7837,816,0.140917505829302,0.140917505829302,-104.9739674,39.7519707,-104.9739648,39.753238
-20637,10876,10878,0.031770930566573,0.031770930566573,-105.0137702,39.7627689,-105.0137749,39.7624832
-16183,1702,133,0.201630131124766,0.201630131124766,-104.9881579,39.6911836,-104.9881082,39.6929965
-16753,6829,10009,0.0465845830870589,0.0465845830870589,-104.9506246,39.6983982,-104.9506326,39.6988171
-18737,2600,1858,0.180581857071932,0.180581857071932,-105.0403183,39.7229556,-105.0403103,39.7213316
-14686,1987,2318,0.198940266900504,0.198940266900504,-104.9711608,39.7219572,-104.9711696,39.7237463
-1928,1941,1942,0.123855031305308,0.123855031305308,-104.9873753,39.7384618,-104.9888238,39.7384602
-18741,8070,7651,0.262731372814963,0.262731372814963,-105.0389316,39.730617,-105.0389317,39.7282542
-14685,1546,1987,0.20778014181537,0.20778014181537,-104.9711694,39.7200886,-104.9711608,39.7219572
-12334,8656,8657,0.0212762444700433,0.0212762444700433,-105.0073545,39.7547272,-105.0074107,39.7549136
-18873,7825,7987,0.015602795644656,0.015602795644656,-104.9875714,39.7007878,-104.9874076,39.7007261
-12352,8668,8669,0.00723037090372959,0.00723037090372959,-105.0125278,39.7524187,-105.0124521,39.7523897
-18669,9460,1818,0.156714358591483,0.156714358591483,-105.0282321,39.7288662,-105.028093,39.7274609
-18185,5799,6059,0.199739960113703,0.199739960113703,-105.0328002,39.7874226,-105.0327949,39.7856263
-18862,9131,9178,0.0368320416365925,0.0368320416365925,-105.016012,39.7307001,-105.0164243,39.7306043
-16606,9955,7890,0.148662937956551,0.148662937956551,-104.98691,39.7485653,-104.9856992,39.7495249
-12197,424,2296,0.092590985158808,0.092590985158808,-105.0237982,39.7396264,-105.0235583,39.7404384
-328,329,330,0.0301965908229701,0.0301965908229701,-104.951939,39.7453698,-104.9522566,39.7454886
-329,330,331,0.00308879550687601,0.00308879550687601,-104.9522566,39.7454886,-104.9522901,39.745499
-15797,2324,2349,0.0197202421063636,0.0197202421063636,-105.0223618,39.737766,-105.0225811,39.7377111
-16293,2377,2409,0.0804076908745063,0.0804076908745063,-104.9707298,39.6964161,-104.9698358,39.6961931
-17370,3254,7297,0.216186214827155,0.216186214827155,-104.9787191,39.7039689,-104.9786923,39.7020248
-18195,8107,9376,0.183361036437535,0.183361036437535,-105.0363465,39.77838,-105.036341,39.776731
-17371,7297,40,0.193403542976089,0.193403542976089,-104.9786923,39.7020248,-104.9786815,39.7002855
-389,391,392,0.10291889633356,0.10291889633356,-104.931634,39.702187,-104.932837,39.702182
-18880,1927,7249,0.20098536077548,0.20098536077548,-104.9611322,39.7074867,-104.9611376,39.7056792
-12842,2658,461,0.235239531220745,0.235239531220745,-104.9890044,39.7762796,-104.9888564,39.7783921
-18457,7020,10297,0.095413640203737,0.095413640203737,-105.0315108,39.746461,-105.03052,39.7468559
-14684,1545,1546,0.195783826439231,0.195783826439231,-104.9711569,39.7183279,-104.9711694,39.7200886
-16302,2721,2722,0.0283898956128369,0.0283898956128369,-104.9693989,39.6953759,-104.96971,39.6952871
-18674,1569,1570,0.17732367890712,0.17732367890712,-105.0399837,39.7229516,-105.0399911,39.7245463
-19651,10604,10605,0.00569731320684084,0.00569731320684084,-104.988215,39.7066518,-104.9882816,39.7066519
-12365,8674,8675,0.00395306971093599,0.00395306971093599,-105.011632,39.7531718,-105.0116148,39.7532048
-18885,80,7308,0.203338584644882,0.203338584644882,-104.9634174,39.7002277,-104.9634496,39.7020562
-18462,9528,9293,0.135413968590027,0.135413968590027,-105.0387229,39.7499763,-105.0387175,39.7511941
-17073,8133,10070,0.277242310734424,0.277242310734424,-104.9615993,39.7482178,-104.9615992,39.7507111
-18887,3267,7247,0.200784680682105,0.200784680682105,-104.9634713,39.7038687,-104.963471,39.7056744
-16306,2851,2852,0.0109060813984903,0.0109060813984903,-104.9722098,39.6978689,-104.972242,39.697774
-18803,8953,10352,0.0713096059986916,0.0713096059986916,-104.9925416,39.768912,-104.9919121,39.7693329
-12360,8670,8671,0.0527368404826503,0.0527368404826503,-105.0123272,39.7529475,-105.0117521,39.7531191
-19915,8054,8774,0.178101620538173,0.178101620538173,-104.9981194,39.7305074,-104.9980954,39.7289058
-19027,10418,8995,0.822032321709027,0.822032321709027,-104.9421303,39.7909863,-104.9472908,39.7847471
-16313,2929,2636,0.0522503580010493,0.0522503580010493,-104.9698519,39.6952562,-104.970433,39.6951117
-18123,10266,7936,0.0422734852594549,0.0422734852594549,-105.0106756,39.7890735,-105.0106854,39.7894536
-11696,1005,1006,0.0249036708868205,0.0249036708868205,-105.0014074,39.7532864,-105.0016257,39.7531381
-19031,9820,9825,0.141867922710985,0.141867922710985,-104.9518785,39.7803129,-104.9535187,39.7801156
-17076,828,3568,0.137092229325187,0.137092229325187,-104.9616093,39.7532223,-104.9616097,39.7544552
-20641,10879,4802,0.0562973461233787,0.0562973461233787,-105.0134384,39.762482,-105.0127798,39.7624768
-19035,9497,9495,0.0285635113459611,0.0285635113459611,-104.949868,39.7793088,-104.9496974,39.7795297
-2071,2074,2075,0.135495947312548,0.135495947312548,-104.953735,39.7545002,-104.9536922,39.7557183
-15936,9757,6254,0.229061306545615,0.229061306545615,-104.9945244,39.7005048,-104.9939504,39.6984927
-3229,3143,3144,0.198651066611581,0.198651066611581,-104.9647761,39.721983,-104.9647846,39.7237695
-3231,3145,1186,0.167106782855451,0.167106782855451,-104.9648025,39.7256,-104.9648143,39.7271028
-20275,10725,6473,0.00777253007071417,0.00777253007071417,-105.0450582,39.7746915,-105.0450583,39.7747614
-20276,6473,10726,0.00774087009692378,0.00774087009692378,-105.0450583,39.7747614,-105.0450564,39.774831
-20277,10710,5573,0.00807679050419555,0.00807679050419555,-105.0441026,39.7735162,-105.0440081,39.7735153
-16287,1363,2160,0.150908240771596,0.150908240771596,-104.9708258,39.6964243,-104.9704959,39.6950911
-18901,10379,10378,0.00446883067059111,0.00446883067059111,-105.0125991,39.750475,-105.0125479,39.7504669
-18181,6056,4071,0.17853957848987,0.17853957848987,-105.030464,39.7856261,-105.0304275,39.7840207
-16288,2160,2273,0.031688963076218,0.031688963076218,-104.9704959,39.6950911,-104.970858,39.6950312
-15792,2131,2298,0.0834787229201596,0.0834787229201596,-105.0228299,39.7378988,-105.0218722,39.7380446
-17362,1905,7241,0.196305657515643,0.196305657515643,-104.9786923,39.7074805,-104.9786816,39.7057151
-20796,10943,7661,0.00258138052005919,0.00258138052005919,-105.0351465,39.7621945,-105.0351767,39.7621945
-20797,7661,10931,0.00256438171506516,0.00256438171506516,-105.0351767,39.7621945,-105.0352067,39.7621947
-17367,3197,6112,0.203543642625323,0.203543642625323,-104.9786527,39.7111042,-104.9786441,39.7092737
-19564,10566,10567,0.0877791462313442,0.0877791462313442,-104.9897479,39.7084105,-104.9897546,39.7076211
-17839,9059,10189,0.106477983280495,0.106477983280495,-104.9784966,39.7791336,-104.9772538,39.7792023
-17124,42,4240,0.19030237977338,0.19030237977338,-104.9775311,39.7002091,-104.9774946,39.7019203
-15941,9758,9759,0.0631588158295344,0.0631588158295344,-104.9982473,39.7053729,-104.9977092,39.704984
-17151,4781,4823,0.202239291799058,0.202239291799058,-104.9751707,39.7038491,-104.9751483,39.7056678
-14110,421,3623,0.253988429085779,0.253988429085779,-104.9424633,39.7443997,-104.9448677,39.7457412
-20309,10730,10731,0.0277808040232953,0.0277808040232953,-105.0250776,39.7585876,-105.0247591,39.7586373
-19606,10584,10500,0.00674103787689334,0.00674103787689334,-104.9910734,39.7091553,-104.9911522,39.7091559
-18677,2800,2801,0.105225983369234,0.105225983369234,-105.0367483,39.7254828,-105.0367403,39.7245365
-17096,3720,3721,0.196415457175175,0.196415457175175,-104.9604079,39.7368138,-104.9604142,39.7350474
-19914,6599,8054,0.176409123849899,0.176409123849899,-104.9981408,39.7320938,-104.9981194,39.7305074
-14113,3767,3768,0.109524379066099,0.109524379066099,-104.9431585,39.7464851,-104.9443957,39.7462296
-19575,10571,10572,0.0878577106463745,0.0878577106463745,-104.98929,39.7084071,-104.9892979,39.707617
-19578,7458,10573,0.00838425457343401,0.00838425457343401,-104.9885959,39.7075353,-104.9885953,39.7076107
-13363,6192,9050,0.200728781748151,0.200728781748151,-104.9818752,39.7795506,-104.9795353,39.7793923
-18684,3608,1316,0.176123680044276,0.176123680044276,-105.036708,39.7149602,-105.0366981,39.7133763
-16406,9888,9885,0.103994018141439,0.103994018141439,-104.9706065,39.7033361,-104.9695415,39.703787
-20348,10747,10734,0.124798183375822,0.124798183375822,-105.0235111,39.7585885,-105.0220514,39.7585674
-13367,487,9053,0.0916792010447841,0.0916792010447841,-104.9845022,39.7800173,-104.985575,39.7800251
-17112,3776,3932,0.0318567386044335,0.0318567386044335,-104.9578598,39.7475843,-104.9574881,39.7475642
-18472,7703,9005,0.191779872148763,0.191779872148763,-105.0398923,39.7567045,-105.0399025,39.7549798
-13566,4,3088,0.053682748576131,0.053682748576131,-105.0151369,39.7295685,-105.0149714,39.7291028
-14690,2868,3129,0.152693011202245,0.152693011202245,-104.9712042,39.7290823,-104.9712066,39.7304555
-19632,10519,10594,0.0691883113691504,0.0691883113691504,-104.9902831,39.708118,-104.9910918,39.7081283
-16442,9898,9900,0.0593229160576478,0.0593229160576478,-104.9681189,39.6930432,-104.9688122,39.6930484
-19557,10561,10562,0.0114115661676901,0.0114115661676901,-104.9884504,39.7091486,-104.9885838,39.7091493
-17140,3200,3089,0.200962427212495,0.200962427212495,-104.976351,39.7110879,-104.9763937,39.7128949
-19588,10578,7459,0.00830641959761081,0.00830641959761081,-104.9888246,39.7076128,-104.9888252,39.7075381
-19590,10509,10579,0.0688000441577074,0.0688000441577074,-104.9902632,39.7097378,-104.9910674,39.7097471
-4371,4093,4094,0.0474398468296831,0.0474398468296831,-105.016444,39.7839662,-105.0169973,39.7839311
-14821,4531,9426,0.131844452515128,0.131844452515128,-105.0220708,39.7548328,-105.0236131,39.7548297
-20313,10734,10735,0.135778003167023,0.135778003167023,-105.0220514,39.7585674,-105.0233062,39.7593161
-16512,8896,9922,0.103245634213484,0.103245634213484,-105.0048016,39.7429839,-105.0040915,39.7422329
-19627,10592,10501,0.0068017037739497,0.0068017037739497,-104.9910751,39.7089846,-104.9911546,39.7089857
-3432,3319,3320,0.201627360859163,0.201627360859163,-104.9570312,39.7819252,-104.9569981,39.7837383
-3631,1572,3475,0.135693159195378,0.135693159195378,-104.9464121,39.7776877,-104.9464207,39.778908
-3632,3475,3476,0.119283891700122,0.119283891700122,-104.9464207,39.778908,-104.9464336,39.7799807
-3634,3211,3477,0.201273972346718,0.201273972346718,-104.9640093,39.7111011,-104.9640079,39.709291
-3635,3477,1922,0.201175175309244,0.201175175309244,-104.9640079,39.709291,-104.9639994,39.7074818
-17122,4176,3542,0.20232729922556,0.20232729922556,-104.9775098,39.6966104,-104.977531,39.6984299
-16444,9901,9902,0.179094898504736,0.179094898504736,-104.9711673,39.6931206,-104.9732597,39.6931641
-20287,9383,6472,0.201518688053588,0.201518688053588,-105.0445781,39.7765737,-105.0445755,39.7747614
-20014,8858,10180,0.0735203760297937,0.0735203760297937,-104.988003,39.7531189,-104.9873951,39.7535866
-19233,10457,10420,0.0372086096742178,0.0372086096742178,-104.991294,39.7429942,-104.9910563,39.7427139
-4657,4299,3840,0.0473685540434106,0.0473685540434106,-105.0422855,39.7539305,-105.0428396,39.7539325
-14125,3659,3925,0.129261803351535,0.129261803351535,-104.9461809,39.7460646,-104.9455321,39.7450146
-3623,3469,3470,0.140706278566204,0.140706278566204,-104.9464912,39.7544409,-104.9464883,39.7557063
-18908,10386,10387,0.0302347602157808,0.0302347602157808,-105.0126981,39.7501431,-105.0127236,39.7498719
-15943,9760,8085,0.0293664602336856,0.0293664602336856,-104.9988776,39.705053,-104.9991901,39.7049437
-18142,10269,6300,0.0570177692907992,0.0570177692907992,-105.0151755,39.7886103,-105.0158404,39.7886539
-17020,10057,10058,0.15155359133236,0.15155359133236,-105.0168578,39.7546147,-105.0171608,39.7532718
-17158,5010,5011,0.0757362739800239,0.0757362739800239,-104.9728277,39.6904527,-104.9728223,39.6911338
-16649,9960,9968,0.0812055546813917,0.0812055546813917,-104.9855516,39.7391519,-104.9849991,39.7385579
-17022,10055,10058,0.0158274438461504,0.0158274438461504,-105.0169757,39.7532749,-105.0171608,39.7532718
-20617,10793,10829,0.0486626332146345,0.0486626332146345,-105.023633,39.7596708,-105.0230688,39.7597292
-17292,7745,7192,0.403926945097788,0.403926945097788,-104.944774,39.68931,-104.9447793,39.6929426
-17953,8781,10225,0.0170107340919314,0.0170107340919314,-104.9874899,39.7236088,-104.987291,39.7236088
-17142,4509,4616,0.202021015829292,0.202021015829292,-104.9763295,39.7146995,-104.9763402,39.7165163
-14706,5161,5162,0.0515278311632085,0.0515278311632085,-104.9746885,39.7400066,-104.9746897,39.7395432
-17293,7192,8754,0.202354446551741,0.202354446551741,-104.9447793,39.6929426,-104.944769,39.6947624
-16653,9971,9972,0.0159150831985239,0.0159150831985239,-104.9875004,39.7399598,-104.9876865,39.7399625
-17955,10229,10228,0.0205875980561605,0.0205875980561605,-104.9870009,39.7240152,-104.98712,39.7238543
-16775,9905,10011,0.0628512846047373,0.0628512846047373,-104.9731684,39.7001285,-104.9726726,39.6997114
-20430,10790,10791,0.0319464035455711,0.0319464035455711,-105.0228403,39.759346,-105.0231621,39.7594921
-17144,4683,4684,0.183413882011105,0.183413882011105,-104.9751813,39.691337,-104.9751601,39.6929864
-17482,367,368,0.0073956069596753,0.0073956069596753,-104.9589982,39.7796654,-104.9589875,39.7795994
-17483,368,4274,0.0740383655738795,0.0740383655738795,-104.9589875,39.7795994,-104.9589559,39.778934
-18131,6045,4102,0.143663826029319,0.143663826029319,-105.0222109,39.785625,-105.0222318,39.7843331
-17166,3547,48,0.197940166378652,0.197940166378652,-104.9739907,39.6984301,-104.9740013,39.7002102
-17957,10231,10232,0.0468160398694911,0.0468160398694911,-104.9876908,39.725221,-104.9882382,39.7252241
-19584,10563,10576,0.0699872416467849,0.0699872416467849,-104.9888131,39.7091506,-104.9888178,39.7085212
-19587,10577,10578,0.0879343964012276,0.0879343964012276,-104.9888187,39.7084036,-104.9888246,39.7076128
-16540,7834,812,0.139228180638449,0.139228180638449,-104.9763093,39.7519986,-104.9763308,39.7532506
-20323,10742,10732,0.00891011779971553,0.00891011779971553,-105.0237259,39.7589011,-105.0237565,39.7589777
-14118,3946,4047,0.0370997345222532,0.0370997345222532,-104.9449549,39.7480018,-104.9449621,39.7476682
-20325,10743,10744,0.00292597509729593,0.00292597509729593,-105.0236223,39.7590808,-105.0235881,39.7590797
-17681,9050,9814,0.396292789359983,0.396292789359983,-104.9795353,39.7793923,-104.974902,39.7795432
-17683,10165,9814,0.392184725428778,0.392184725428778,-104.9794908,39.7794867,-104.974902,39.7795432
-17303,3516,4258,0.201418622589808,0.201418622589808,-104.9634676,39.6983891,-104.9634703,39.6965777
-17690,6173,6191,0.0979652724466413,0.0979652724466413,-104.9843627,39.779576,-104.9832163,39.7795774
-17305,8744,8715,0.198903931890441,0.198903931890441,-104.9634565,39.6947677,-104.9634793,39.692979
-19815,6602,8057,0.177734109816075,0.177734109816075,-105.0021882,39.7320975,-105.0021856,39.7304991
-20432,10754,10792,0.00161805170064806,0.00161805170064806,-105.0232175,39.7595165,-105.0232345,39.7595229
-5752,4838,5081,0.0155515271366432,0.0155515271366432,-104.9964173,39.7083799,-104.9962546,39.7083175
-14703,5104,5105,0.188886837572701,0.188886837572701,-104.973501,39.7255812,-104.9735001,39.7272799
-19833,10653,10654,0.205572346227123,0.205572346227123,-105.0399056,39.7384617,-105.0398868,39.736613
-4807,4413,4414,0.0998668735468864,0.0998668735468864,-105.0298142,39.704914,-105.0298228,39.7058121
-3650,3488,3106,0.174737901377497,0.174737901377497,-104.9293331,39.7146644,-104.9293159,39.713093
-3651,3106,3491,0.194747174928978,0.194747174928978,-104.9293159,39.713093,-104.9293114,39.7113416
-17379,5746,5747,0.00818765310677506,0.00818765310677506,-104.9676388,39.6930381,-104.9676964,39.6930969
-20468,10818,10755,0.173765546097308,0.173765546097308,-105.0193121,39.758524,-105.0213448,39.7585398
-17164,1802,4242,0.207580745712203,0.207580745712203,-104.9740336,39.6947447,-104.9740228,39.6966115
-6015,5267,5268,0.103281094663511,0.103281094663511,-104.9487209,39.7680993,-104.9475125,39.7680963
-18137,10263,10272,0.406284221439373,0.406284221439373,-105.0198897,39.7874342,-105.019885,39.791088
-17291,10085,7745,0.543012306463268,0.543012306463268,-104.9447951,39.6844266,-104.944774,39.68931
-14709,5330,4870,0.190973371939833,0.190973371939833,-104.9746992,39.7368668,-104.9746798,39.7351494
-18138,4093,6038,0.184675507720467,0.184675507720467,-105.016444,39.7839662,-105.0164173,39.7856269
-16651,9969,9970,0.100708681464822,0.100708681464822,-104.9848573,39.7385435,-104.9836795,39.7385414
-14710,4870,2220,0.162414391352976,0.162414391352976,-104.9746798,39.7351494,-104.9746915,39.7336888
-18505,6386,17,0.132879414135856,0.132879414135856,-105.0363788,39.7475676,-105.0363574,39.7463727
-14727,6220,6303,0.0511187399227223,0.0511187399227223,-104.9752801,39.7395432,-104.9758778,39.7395535
-17176,5390,5408,0.208329703574267,0.208329703574267,-104.9692808,39.6910982,-104.9693344,39.6929713
-20791,8358,10898,0.00761490800516594,0.00761490800516594,-105.039401,39.7639563,-105.0393945,39.7640246
-17146,1801,4241,0.206257539278646,0.206257539278646,-104.9751816,39.6947545,-104.9751708,39.6966094
-14731,6303,5467,0.125799145673022,0.125799145673022,-104.9758778,39.7395535,-104.97589,39.7384222
-18536,5557,10309,0.366989977501724,0.366989977501724,-105.0440105,39.7607636,-105.0483038,39.7607426
-14723,6016,5469,0.171433952660857,0.171433952660857,-104.9735459,39.7368668,-104.9735608,39.7384085
-18516,2412,10295,0.0120882825664803,0.0120882825664803,-105.041094,39.7530159,-105.041069,39.7531229
-17153,1911,4839,0.199025256937054,0.199025256937054,-104.9751493,39.7074845,-104.9751709,39.7092743
-17154,4839,3202,0.202009935716231,0.202009935716231,-104.9751709,39.7092743,-104.9751601,39.711091
-18288,6762,6873,0.146634632629247,0.146634632629247,-105.0276181,39.7698189,-105.025904,39.7697621
-20338,10735,10738,0.035049164748108,0.035049164748108,-105.0233062,39.7593161,-105.0235235,39.7590488
-18690,5770,5771,0.102556159708994,0.102556159708994,-105.0415039,39.7197378,-105.0414984,39.7188155
-20424,10785,10786,0.0731561229415083,0.0731561229415083,-105.0187626,39.7585641,-105.0188457,39.7592189
-5740,1710,5071,0.202613094112382,0.202613094112382,-105.0378737,39.6912834,-105.037844,39.6894614
-14744,2216,4866,0.159742631617364,0.159742631617364,-104.9770059,39.7337051,-104.9770059,39.7351417
-18148,6033,4087,0.198416361234407,0.198416361234407,-105.0117918,39.7856148,-105.0117891,39.7838304
-17476,4654,473,0.0704097319033273,0.0704097319033273,-105.0189639,39.7475939,-105.0185991,39.7470262
-18150,4100,6044,0.175955927487578,0.175955927487578,-105.0210503,39.7840434,-105.0210575,39.7856258
-6851,5860,5861,0.109631940187014,0.109631940187014,-105.0311875,39.7149636,-105.0324691,39.7149773
-14841,7164,7777,0.0983349446501409,0.0983349446501409,-105.0381551,39.754855,-105.0393054,39.7548506
-18242,6768,3993,0.201258062688176,0.201258062688176,-105.0275913,39.7725071,-105.029945,39.772565
-18273,6645,6666,0.202152498738845,0.202152498738845,-105.0398253,39.77838,-105.0398227,39.780198
-20386,10770,10771,0.0535943445752728,0.0535943445752728,-105.0244499,39.7607064,-105.0250699,39.7607782
-6983,5958,5959,0.149650557500517,0.149650557500517,-104.9891839,39.7447837,-104.9904219,39.7438323
-18306,3982,7041,0.200503190670894,0.200503190670894,-105.0299336,39.7678829,-105.0322795,39.7678767
-20438,10796,10797,0.0670860233753639,0.0670860233753639,-105.0226193,39.761283,-105.0218716,39.7614664
-20500,10838,10824,0.0121125751150814,0.0121125751150814,-105.0210227,39.7583868,-105.0208891,39.7583505
-14725,977,5162,0.0458445478179373,0.0458445478179373,-104.9741536,39.7395367,-104.9746897,39.7395432
-6627,5707,1851,0.181903999460801,0.181903999460801,-105.0361257,39.7196961,-105.036129,39.721332
-3671,3508,3509,0.00436333612190551,0.00436333612190551,-104.9681486,39.6983823,-104.9680976,39.6983824
-3672,3509,3510,0.046781667512879,0.046781667512879,-104.9680976,39.6983824,-104.9675508,39.6983827
-7657,3346,6356,0.257422789129267,0.257422789129267,-104.9571645,39.7728928,-104.9541524,39.7728932
-14872,3240,5733,0.139141273161543,0.139141273161543,-105.0054318,39.7718056,-105.005421,39.7730569
-18469,9138,10300,0.19595637710121,0.19595637710121,-105.0432544,39.7511117,-105.0450359,39.7522206
-18266,1691,6545,0.203809181046432,0.203809181046432,-105.039903,39.7676176,-105.039903,39.7694505
-18272,6629,6645,0.186774688365716,0.186774688365716,-105.0398199,39.7767003,-105.0398253,39.77838
-8163,6669,2301,0.106319016804013,0.106319016804013,-105.0065809,39.6967302,-105.0067097,39.6957792
-14130,9280,9279,0.186364690747119,0.186364690747119,-104.9512562,39.7473041,-104.9490944,39.7475193
-14771,2209,923,0.186974313150198,0.186974313150198,-104.9816406,39.7337091,-104.9816421,39.7320276
-18247,9377,8108,0.184107753412847,0.184107753412847,-105.0374998,39.776721,-105.0375106,39.7783767
-18704,7871,4059,0.176577842625336,0.176577842625336,-105.0426986,39.7197333,-105.0426948,39.7181453
-15923,9752,9072,0.0836347230210634,0.0836347230210634,-105.0166514,39.7287142,-105.0172266,39.7293225
-18541,7538,8363,0.0639425794382817,0.0639425794382817,-105.0449269,39.7643759,-105.0444735,39.7639185
-14134,509,9280,0.0291273215905741,0.0291273215905741,-104.9514881,39.747496,-104.9512562,39.7473041
-15926,498,9102,0.0623752088587868,0.0623752088587868,-105.0153507,39.7256437,-105.0160728,39.7255648
-11651,8350,4542,0.134464503460642,0.134464503460642,-105.0236355,39.7578502,-105.0220625,39.7578568
-18291,6752,3975,0.201306126180051,0.201306126180051,-105.0275758,39.7651202,-105.029931,39.765114
-14752,5933,6903,0.0776419963986988,0.0776419963986988,-104.9781588,39.7304487,-104.9781698,39.7297505
-15930,9755,8063,0.0157417186886108,0.0157417186886108,-105.0172761,39.7312819,-105.01746,39.7312756
-8622,3936,5625,0.097083190357132,0.097083190357132,-105.0005802,39.7765663,-105.0017162,39.7765726
-14891,9021,8103,0.0999072642817978,0.0999072642817978,-105.0324149,39.7040028,-105.0324492,39.7031047
-11386,8241,8242,0.105664996309114,0.105664996309114,-104.9455738,39.7799622,-104.9443373,39.7799663
-11647,7709,8347,0.0834163322393992,0.0834163322393992,-105.019873,39.7560486,-105.0198419,39.7552988
-12254,8618,8619,0.0216515691565663,0.0216515691565663,-105.0084208,39.7577001,-105.0083242,39.7578801
-20225,8757,10713,0.181625832679021,0.181625832679021,-104.9413115,39.694755,-104.9413101,39.6963884
-11373,437,8225,0.0125774855889878,0.0125774855889878,-105.0053491,39.7612975,-105.0052234,39.7612387
-20018,6572,4453,0.146908325275574,0.146908325275574,-104.981987,39.757826,-104.980759,39.7587503
-20512,10063,10060,0.007549583111055,0.007549583111055,-105.0192332,39.7576336,-105.0193133,39.7576622
-12048,8527,8528,0.0740401240439702,0.0740401240439702,-105.0054168,39.751192,-105.0061613,39.7515322
-14785,7957,5458,0.175576789379919,0.175576789379919,-104.9842157,39.7368542,-104.9842156,39.7384332
-12271,8518,8628,0.0787132719056346,0.0787132719056346,-105.0071312,39.7555112,-105.0077112,39.7549614
-11383,8239,8240,0.0842941433278933,0.0842941433278933,-104.9502774,39.7799784,-104.949291,39.7799729
-11370,7971,7972,0.0117965527041302,0.0117965527041302,-105.0053146,39.761583,-105.0052958,39.7614779
-11414,7984,7985,0.287379755335746,0.287379755335746,-105.0218262,39.7840053,-105.025085,39.7846442
-11432,415,8254,0.452015989776023,0.452015989776023,-105.0212787,39.7837465,-105.0159925,39.7835953
-20350,10730,2968,0.0120941619304981,0.0120941619304981,-105.0250776,39.7585876,-105.0250854,39.758479
-8748,5336,6979,0.175571360985687,0.175571360985687,-105.0408719,39.7054957,-105.0408435,39.7039169
-3691,3527,3528,0.0472108481996503,0.0472108481996503,-104.956949,39.698399,-104.9563972,39.6983957
-3692,3528,2737,0.0483230367668469,0.0483230367668469,-104.9563972,39.6983957,-104.9558324,39.6983924
-3697,3532,3533,0.0559788343200402,0.0559788343200402,-104.9827863,39.6984066,-104.982132,39.6984066
-15221,3833,8055,0.052921136155694,0.052921136155694,-105.0428186,39.7485544,-105.0428529,39.7480792
-12311,8645,8476,0.144977480276504,0.144977480276504,-105.0040083,39.7506996,-105.0028542,39.7497443
-12312,8476,8646,0.198472144343311,0.198472144343311,-105.0028542,39.7497443,-105.0012593,39.7484473
-12314,8643,8559,0.0228329493898265,0.0228329493898265,-105.0079172,39.7541523,-105.0076796,39.7542461
-20367,10748,10749,0.0037547184046713,0.0037547184046713,-105.0235917,39.7589758,-105.0236241,39.7589986
-9843,7548,7549,0.124919366653633,0.124919366653633,-105.0451568,39.7282934,-105.0451467,39.7294168
-12301,4845,8524,0.0473127526043962,0.0473127526043962,-105.0049838,39.7515411,-105.0053655,39.751233
-18331,7594,6751,0.14027973854483,0.14027973854483,-105.0259281,39.764212,-105.0275693,39.7642092
-11791,8037,2687,0.147733787935878,0.147733787935878,-104.9796416,39.7541805,-104.9808835,39.7532566
-15865,8762,8763,0.0396940145175954,0.0396940145175954,-105.0451798,39.7355292,-105.0447184,39.7355684
-20529,10029,10846,0.0100359682174695,0.0100359682174695,-105.015835,39.7583097,-105.0157176,39.7583088
-17959,6241,5194,0.169083036600962,0.169083036600962,-104.9883794,39.7256429,-104.9883782,39.7241223
-18370,6889,5250,0.0518724586298984,0.0518724586298984,-105.0259388,39.7651274,-105.0259394,39.7646609
-15225,8180,5297,0.041720314716376,0.041720314716376,-105.0389047,39.7441394,-105.039323,39.7439462
-9071,2781,7147,0.103689348353689,0.103689348353689,-104.9721138,39.7669682,-104.9721123,39.7679007
-3710,3546,1524,0.0515313284334221,0.0515313284334221,-104.9751709,39.6984277,-104.9745686,39.6984311
-20305,10728,8110,0.168482747904973,0.168482747904973,-105.0445532,39.7768578,-105.0445502,39.778373
-3711,1524,3547,0.0494425170647519,0.0494425170647519,-104.9745686,39.6984311,-104.9739907,39.6984301
-14739,6538,6607,0.183986331427456,0.183986331427456,-104.976974,39.7256103,-104.9769867,39.7272649
-11372,290,437,0.0112130207438012,0.0112130207438012,-105.0053845,39.7613946,-105.0053491,39.7612975
-18381,8535,8919,0.0499954488007408,0.0499954488007408,-105.0258888,39.7711084,-105.0258833,39.771558
-12246,8615,4817,0.146110905108578,0.146110905108578,-104.9995731,39.7508881,-104.9983798,39.7518288
-11425,8251,8078,0.7456254172446,0.7456254172446,-105.0348524,39.7834646,-105.043577,39.7835803
-12247,4817,5788,0.143910603528138,0.143910603528138,-104.9983798,39.7518288,-104.9971819,39.7527381
-12818,299,8256,0.476082599329394,0.476082599329394,-105.0099714,39.7835424,-105.0155373,39.7837344
-20410,8976,9207,0.0123297683183119,0.0123297683183119,-105.0250886,39.760233,-105.0250726,39.7601228
-12263,8621,8622,0.00671006625102598,0.00671006625102598,-105.0070186,39.7566114,-105.0070785,39.7566504
-11559,8319,7714,0.15000222129108,0.15000222129108,-105.0316875,39.7580245,-105.0316842,39.7566755
-15229,8334,8335,0.02937581800825,0.02937581800825,-104.9244842,39.6961248,-104.9241409,39.696129
-18377,6069,2549,0.201785565265125,0.201785565265125,-105.039828,39.7856193,-105.0398307,39.787434
-11447,387,8258,0.356209179582772,0.356209179582772,-105.0028212,39.783461,-104.9988487,39.78249
-11812,1881,8316,0.0255940628377938,0.0255940628377938,-105.0074729,39.746365,-105.007603,39.7465723
-14781,921,2207,0.190721648601815,0.190721648601815,-104.9828787,39.7320413,-104.9828811,39.7337565
-20233,10711,10715,0.00692211182471866,0.00692211182471866,-104.9413123,39.6937735,-104.9412314,39.693774
-20363,9209,8991,0.0223079019168015,0.0223079019168015,-105.0216966,39.7585487,-105.0214364,39.7585333
-18388,8990,9001,0.0110856339057274,0.0110856339057274,-105.0252879,39.7604305,-105.0253805,39.7605003
-20651,10033,10881,0.0461798387778834,0.0461798387778834,-105.014357,39.7669687,-105.0148973,39.7669673
-13366,9052,487,0.0981014313599177,0.0981014313599177,-104.9833542,39.7800156,-104.9845022,39.7800173
-12303,8639,8640,0.0320591977276875,0.0320591977276875,-105.0081633,39.7540481,-105.0078019,39.7541251
-20243,10716,10713,0.0141769281388351,0.0141769281388351,-104.9411444,39.6963884,-104.9413101,39.6963884
-14749,4864,2214,0.160302668775638,0.160302668775638,-104.9781817,39.7351466,-104.9781559,39.7337051
-13468,309,9094,0.0506545738820493,0.0506545738820493,-105.0183133,39.7254091,-105.0189056,39.7254091
-18336,1689,7624,0.203108569942922,0.203108569942922,-105.0387013,39.7676285,-105.0387364,39.7694549
-12937,1303,1970,0.0130832107015757,0.0130832107015757,-105.0017368,39.7441763,-105.0018024,39.7442826
-20525,10839,1286,0.00844906120646156,0.00844906120646156,-105.0206127,39.7582168,-105.020542,39.7581637
-10918,8035,5970,0.0219813767800627,0.0219813767800627,-104.9781265,39.7531137,-104.9783626,39.753192
-14913,7600,2016,0.104505986927597,0.104505986927597,-104.936219,39.7208978,-104.9349971,39.720897
-20351,2968,10750,0.0147633294839236,0.0147633294839236,-105.0250854,39.758479,-105.0250798,39.7583463
-15880,8763,8762,0.0396940145175954,0.0396940145175954,-105.0447184,39.7355684,-105.0451798,39.7355292
-20353,9401,9336,0.00949287140929792,0.00949287140929792,-105.025278,39.7585714,-105.0251673,39.7585782
-12244,8613,8614,0.00356038865266788,0.00356038865266788,-104.9996308,39.7508515,-104.9995987,39.7508719
-11216,8164,8165,0.0796169077304663,0.0796169077304663,-104.9269465,39.7030424,-104.9269411,39.7037584
-14132,9279,507,0.0225847659450503,0.0225847659450503,-104.9490944,39.7475193,-104.9492017,39.7477049
-15875,8940,8978,0.0300860996423522,0.0300860996423522,-105.0405047,39.7348341,-105.0408265,39.7349435
-11429,8253,319,0.299890155674121,0.299890155674121,-105.0342653,39.7832999,-105.0307715,39.7835551
-20371,2707,10756,0.00655605333712087,0.00655605333712087,-105.0229167,39.7612913,-105.0229933,39.7612883
-14677,3794,9330,0.199283554137764,0.199283554137764,-104.9700349,39.7290815,-104.9700355,39.7272893
-18476,4295,2411,0.100910451832155,0.100910451832155,-105.0399031,39.7539235,-105.0398977,39.753016
-18478,5542,9039,0.101169435731023,0.101169435731023,-105.0399084,39.7521049,-105.0398975,39.7511951
-11770,3014,8406,0.0500338703103734,0.0500338703103734,-104.9810635,39.7524708,-104.9814866,39.7527817
-11823,8421,8424,0.377719915283211,0.377719915283211,-105.0127281,39.7431253,-105.0160769,39.7409098
-10669,7915,6847,0.0947158385157811,0.0947158385157811,-105.0275397,39.7111407,-105.0275397,39.7102889
-3731,3565,3566,0.0486546976993217,0.0486546976993217,-104.9653106,39.7544428,-104.9647415,39.7544367
-3732,3566,3567,0.109486664803565,0.109486664803565,-104.9647415,39.7544367,-104.9634611,39.75446
-3733,3567,1037,0.105564006595596,0.105564006595596,-104.9634611,39.75446,-104.9622266,39.7544367
-11897,8466,8467,0.103343928827087,0.103343928827087,-105.0020778,39.7486652,-105.0015391,39.7478332
-11947,397,8496,0.0965081758273934,0.0965081758273934,-105.0131625,39.7564763,-105.013905,39.7558225
-18380,8494,8535,0.0492964457876769,0.0492964457876769,-105.0258959,39.7706651,-105.0258888,39.7711084
-20364,8991,10755,0.00786332111355482,0.00786332111355482,-105.0214364,39.7585333,-105.0213448,39.7585398
-12162,8315,8569,0.02262255215678,0.02262255215678,-105.0053848,39.7476354,-105.00526,39.747456
-12218,8594,2290,0.0213925904868369,0.0213925904868369,-105.0035802,39.740886,-105.0033485,39.7409586
-14931,3354,2767,0.0942765011393086,0.0942765011393086,-104.9338255,39.7274243,-104.9327231,39.7274245
-18498,9212,9220,0.133514882064815,0.133514882064815,-105.0351931,39.7499892,-105.0352038,39.7511899
-20706,9190,10885,0.00984120017613085,0.00984120017613085,-105.0253671,39.7620045,-105.0253682,39.762093
-12373,8677,8678,0.0486250060422128,0.0486250060422128,-104.99064,39.7765283,-104.9912089,39.7765361
-14967,7610,7264,0.0940136459475559,0.0940136459475559,-104.9383462,39.7510533,-104.9372465,39.7510554
-15895,9441,5377,0.102059140746775,0.102059140746775,-105.0429186,39.7342294,-105.044041,39.7339173
-13974,9251,9129,0.169864606266652,0.169864606266652,-105.0147648,39.729613,-105.0154242,39.731054
-20368,10749,10733,0.00357512667889407,0.00357512667889407,-105.0236241,39.7589986,-105.0236546,39.7589766
-14674,2227,943,0.182649781226047,0.182649781226047,-104.9700793,39.733704,-104.9700547,39.7320615
-14178,3784,8864,0.153337805989006,0.153337805989006,-104.9546474,39.7291228,-104.9546471,39.7305018
-19290,10470,8767,0.117748080941626,0.117748080941626,-104.988856,39.7394681,-104.9902331,39.7394681
-12575,8759,8760,0.0168627139608601,0.0168627139608601,-104.9407346,39.6947488,-104.9405376,39.6947443
-14983,8789,8796,0.105952161931752,0.105952161931752,-104.9835757,39.7432682,-104.9823365,39.7432723
-14984,8796,8878,0.106413855851218,0.106413855851218,-104.9823365,39.7432723,-104.9810919,39.7432682
-20419,10774,3587,0.00984290685312232,0.00984290685312232,-105.0243795,39.760698,-105.0243209,39.7607742
-15867,8770,8771,0.0147638851882813,0.0147638851882813,-105.0445575,39.7355437,-105.0444126,39.7356159
-11263,8195,8196,0.0967030898556648,0.0967030898556648,-104.9363825,39.6984629,-104.9352522,39.6984625
-16192,5817,7723,0.19660431304726,0.19660431304726,-104.983413,39.6911761,-104.9834185,39.689408
-20360,8992,10754,0.00404589397436802,0.00404589397436802,-105.0232439,39.7594863,-105.0232175,39.7595165
-19297,10471,1942,0.0559273520312209,0.0559273520312209,-104.9888451,39.7389629,-104.9888238,39.7384602
-15868,8833,5588,0.0188635032964949,0.0188635032964949,-105.0441417,39.7353828,-105.0439294,39.7354289
-19299,9959,564,0.00433589917958362,0.00433589917958362,-104.9854926,39.739222,-104.9854426,39.7392155
-20814,10936,7168,0.0050166121287054,0.0050166121287054,-105.0380601,39.7621908,-105.0381187,39.7621933
-20823,10780,9337,0.0124085195369407,0.0124085195369407,-105.0250471,39.7600231,-105.0251662,39.7600869
-19301,1942,10467,0.0736734316331574,0.0736734316331574,-104.9888238,39.7384602,-104.9888355,39.7377977
-12854,4133,6696,0.093947304456844,0.093947304456844,-104.9505787,39.7305216,-104.9494801,39.7305216
-15004,6269,9466,0.0522837092305697,0.0522837092305697,-104.960998,39.7432181,-104.9603865,39.7432158
-19305,10464,10461,0.0144782338635936,0.0144782338635936,-104.9888814,39.740512,-104.9888698,39.7406419
-19307,10467,611,0.103622552493386,0.103622552493386,-104.9888355,39.7377977,-104.9888354,39.7368658
-11685,8366,1032,0.0209886592874132,0.0209886592874132,-105.0020448,39.7527599,-105.0019469,39.752933
-20820,10919,8330,0.00776069150921458,0.00776069150921458,-105.0382104,39.7621908,-105.0382057,39.7621211
-11643,8347,4658,0.0580128250256257,0.0580128250256257,-105.0198419,39.7552988,-105.0191633,39.7552936
-12924,8890,8891,0.0884309215437497,0.0884309215437497,-105.0029709,39.7443191,-105.0038584,39.7439107
-15230,8360,8248,0.0379210675749848,0.0379210675749848,-104.9248705,39.6964922,-104.9245969,39.6962239
-13013,8916,2892,0.160989403082392,0.160989403082392,-104.9907275,39.7728705,-104.9912536,39.7714803
-12051,8531,8529,0.0116601753914343,0.0116601753914343,-105.0041475,39.7504135,-105.0041786,39.7503114
-20828,9205,8443,0.0104227726118747,0.0104227726118747,-105.0253893,39.7603981,-105.0254023,39.7603049
-18615,7410,5865,0.176922387553379,0.176922387553379,-105.0355064,39.7165547,-105.0355038,39.7149636
-14852,8621,9432,0.00675320800603643,0.00675320800603643,-105.0070186,39.7566114,-105.0069697,39.7566591
-18616,5865,9447,0.157075160700523,0.157075160700523,-105.0355038,39.7149636,-105.0354966,39.713551
-18618,1314,9447,0.0196279343381406,0.0196279343381406,-105.0354933,39.7133745,-105.0354966,39.713551
-11994,8505,8048,0.149802391835517,0.149802391835517,-104.9861441,39.7573027,-104.9849005,39.7582519
-18621,2586,5181,0.176412393215512,0.176412393215512,-105.0356522,39.7229391,-105.0356433,39.7245256
-18622,5181,5649,0.1069372720504,0.1069372720504,-105.0356433,39.7245256,-105.035649,39.7254873
-19473,7476,10517,0.0101658403815209,0.0101658403815209,-104.9902755,39.708471,-104.9902782,39.7083796
-19474,10517,10518,0.00993077177126307,0.00993077177126307,-104.9902782,39.7083796,-104.9902799,39.7082903
-18480,9040,9120,0.135103567036488,0.135103567036488,-105.0398922,39.7499655,-105.0398842,39.7487505
-20833,10944,10951,0.17747662532422,0.17747662532422,-105.0301334,39.7621946,-105.0322095,39.7622183
-19475,10518,10519,0.0191608413173093,0.0191608413173093,-104.9902799,39.7082903,-104.9902831,39.708118
-19512,10537,10447,0.00647615513057594,0.00647615513057594,-104.9882735,39.7089787,-104.9883492,39.7089795
-2,2,3,0.283463280100036,0.283463280100036,-105.0158228,39.7323669,-105.0152478,39.7298563
-3,3,4,0.0333775918694363,0.0333775918694363,-105.0152478,39.7298563,-105.0151369,39.7295685
-18628,1310,9484,0.175555113641419,0.175555113641419,-105.033071,39.7133691,-105.0330762,39.7149479
-12242,8611,8612,0.0998376585619669,0.0998376585619669,-105.0016014,39.7493354,-105.0007767,39.7499711
-5,5,6,0.348594358341424,0.348594358341424,-104.9373334,39.780183,-104.941411,39.7800918
-15909,9104,9105,0.0387441124726526,0.0387441124726526,-105.0421714,39.7165106,-105.0426052,39.7164103
-15903,6134,8603,0.0260893170771595,0.0260893170771595,-105.0288059,39.7222213,-105.0285111,39.7222816
-15878,8833,8770,0.0398025148628561,0.0398025148628561,-105.0441417,39.7353828,-105.0445575,39.7355437
-13625,7013,2274,0.0942922296438968,0.0942922296438968,-104.9316269,39.729236,-104.9305243,39.7292319
-15024,4136,2663,0.0946854927112821,0.0946854927112821,-104.9505787,39.7367922,-104.9516859,39.7368054
-13651,9159,1177,0.0568269678125187,0.0568269678125187,-104.9961123,39.7031752,-104.9966621,39.703462
-6,6,7,0.250747670173169,0.250747670173169,-104.941411,39.7800918,-104.9443453,39.7800941
-20837,10949,10945,0.0947762411619158,0.0947762411619158,-105.0269444,39.7610308,-105.0279522,39.7613862
-15887,8842,9619,0.0119243513569086,0.0119243513569086,-105.0381819,39.7339575,-105.0382355,39.7340565
-19481,10511,10486,0.0687637700371023,0.0687637700371023,-104.9902675,39.7093534,-104.9910713,39.7093611
-13777,9191,292,0.0113408171424215,0.0113408171424215,-105.0041591,39.7607716,-105.0040727,39.760849
-19493,10463,10523,0.0181472136448415,0.0181472136448415,-104.9883506,39.7087649,-104.9883516,39.7086017
-13799,9195,5081,0.0314508853846434,0.0314508853846434,-104.9963084,39.7080377,-104.9962546,39.7083175
-19487,10426,10427,0.0081618196829418,0.0081618196829418,-104.9883452,39.7095935,-104.9883457,39.7095201
-18570,10325,10322,0.0277653060168724,0.0277653060168724,-105.0344788,39.7803826,-105.0341731,39.7804672
-15042,6787,4718,0.0916704601824836,0.0916704601824836,-104.9684521,39.7368249,-104.9695224,39.7368723
-15043,4718,9414,0.0490846601218478,0.0490846601218478,-104.9695224,39.7368723,-104.9700963,39.736882
-19494,10523,7469,0.0159566577035026,0.0159566577035026,-104.9883516,39.7086017,-104.9883525,39.7084582
-13814,4934,9200,0.0155640797101011,0.0155640797101011,-104.9993415,39.7423284,-104.9994716,39.7422305
-13008,8914,2891,0.0117402105605065,0.0117402105605065,-104.9904906,39.7730255,-104.9905111,39.7729211
-17570,10143,10144,0.0307556488479174,0.0307556488479174,-105.0097169,39.7209239,-105.0093573,39.7209238
-20841,10952,10940,0.18759449218266,0.18759449218266,-105.0323215,39.7622208,-105.0345162,39.7622208
-15726,7317,9449,0.0375532628709029,0.0375532628709029,-104.9558194,39.7180363,-104.9558247,39.7176986
-15904,8603,9697,0.00690416936559141,0.00690416936559141,-105.0285111,39.7222816,-105.0284331,39.7222976
-13877,4478,2804,0.135897648680331,0.135897648680331,-104.9451778,39.765712,-104.9452104,39.7669339
-18633,4044,4045,0.00275409212275412,0.00275409212275412,-105.0330924,39.7181593,-105.0331246,39.7181593
-15057,9477,6733,0.054468335249091,0.054468335249091,-104.9775705,39.7368798,-104.9782075,39.7368798
-15058,6733,9313,0.0446744870999848,0.0446744870999848,-104.9782075,39.7368798,-104.9787299,39.7368736
-13910,9228,3317,0.0850892170141282,0.0850892170141282,-104.9592628,39.7812194,-104.9602584,39.7812326
-12689,2057,8805,0.133235184271089,0.133235184271089,-104.9534081,39.7194172,-104.9534009,39.718219
-18656,6223,7657,0.27620827404325,0.27620827404325,-105.0445138,39.725796,-105.0445162,39.72828
-15858,9732,9739,0.0147062242308904,0.0147062242308904,-105.0415588,39.7301641,-105.0415695,39.7300321
-20843,10954,10751,0.181296524715589,0.181296524715589,-105.0254122,39.760199,-105.0253759,39.7585688
-16082,366,255,0.573997033805984,0.573997033805984,-104.9601224,39.7799975,-104.9534054,39.7800114
-16084,9817,9818,0.0154245817929875,0.0154245817929875,-104.9497096,39.7811391,-104.9498899,39.7811457
-16127,4555,9122,0.0381695434595099,0.0381695434595099,-105.0221186,39.7238843,-105.0222205,39.7242185
-14675,943,5941,0.178224321703034,0.178224321703034,-104.9700547,39.7320615,-104.9700474,39.7304587
-15285,8799,3187,0.00972670306222712,0.00972670306222712,-104.9464054,39.7113917,-104.946376,39.7114762
-15873,8879,8889,0.108518344615814,0.108518344615814,-105.0382757,39.7341411,-105.0393045,39.7347125
-15405,9585,9582,0.0323190665796029,0.0323190665796029,-105.0108295,39.7535903,-105.0104647,39.7536666
-16246,9859,7743,0.402195232762633,0.402195232762633,-104.9529627,39.685713,-104.952944,39.68933
-13026,1537,4265,0.200987668621859,0.200987668621859,-104.9869861,39.7765493,-104.9869736,39.7783568
-3749,3578,3579,0.097584814173116,0.097584814173116,-104.9452895,39.7544277,-104.944148,39.7544343
-3750,3579,848,0.0994883860112991,0.0994883860112991,-104.944148,39.7544343,-104.9429842,39.7544341
-3752,3580,3581,0.0190511917089631,0.0190511917089631,-104.9407092,39.754494,-104.9405163,39.7545798
-19488,10427,4703,0.0206936304458077,0.0206936304458077,-104.9883457,39.7095201,-104.9883469,39.709334
-20829,8443,10954,0.0118059106132393,0.0118059106132393,-105.0254023,39.7603049,-105.0254122,39.760199
-16351,7009,2285,0.0978474396198024,0.0978474396198024,-104.9317039,39.7618388,-104.9305592,39.7618327
-16382,9879,9771,0.00992783408407401,0.00992783408407401,-104.9716243,39.7032379,-104.9717383,39.7032546
-16432,9894,9895,0.0235353492080929,0.0235353492080929,-104.9716111,39.6985449,-104.9718554,39.6986422
-14329,9328,602,0.0664699646577648,0.0664699646577648,-104.9959868,39.7692435,-104.9952229,39.7691313
-20848,10950,10953,0.0184888911494772,0.0184888911494772,-105.0289678,39.7620075,-105.0291765,39.7620512
-13445,9078,9079,0.200451693111106,0.200451693111106,-104.9941364,39.7021826,-104.9930943,39.7037972
-16391,3033,9847,0.0236566168850551,0.0236566168850551,-104.9700513,39.702674,-104.9699755,39.7028786
-15437,9602,9603,0.109740104543279,0.109740104543279,-105.0014283,39.740268,-105.0027104,39.7402226
-18475,9005,4295,0.117455212214086,0.117455212214086,-105.0399025,39.7549798,-105.0399031,39.7539235
-19609,10585,10503,0.00693839845805758,0.00693839845805758,-104.9910787,39.7086267,-104.9911598,39.7086277
-16644,564,565,0.0167681949380125,0.0167681949380125,-104.9854426,39.7392155,-104.9854426,39.7390647
-18641,5875,7416,0.178910174745805,0.178910174745805,-105.0450642,39.7149556,-105.0450953,39.7165644
-16758,7565,10010,0.0537198584701325,0.0537198584701325,-104.9506273,39.6992608,-104.950646,39.6997437
-13557,9032,9033,0.185435393968361,0.185435393968361,-105.0131311,39.7236048,-105.0111765,39.722883
-19028,8995,7690,0.0430021373921601,0.0430021373921601,-104.9472908,39.7847471,-104.9475732,39.784427
-17062,10068,2247,0.0643618782275657,0.0643618782275657,-104.9616428,39.7328861,-104.9616491,39.7334649
-16833,593,9915,0.00807834974542274,0.00807834974542274,-104.9689126,39.70386,-104.9689488,39.7037929
-18614,4049,7410,0.176200842798068,0.176200842798068,-105.0355145,39.7181393,-105.0355064,39.7165547
-16902,74,7306,0.205595181095446,0.205595181095446,-104.9657864,39.7002174,-104.9657546,39.7020662
-17068,10069,675,0.181147813198563,0.181147813198563,-104.9616202,39.7399794,-104.961623,39.7416085
-17009,4847,10051,0.0109841519151342,0.0109841519151342,-105.0034718,39.7526101,-105.003564,39.7526789
-13581,9133,9134,0.0795179133195768,0.0795179133195768,-104.9958777,39.7048581,-104.9951647,39.7043993
-17207,9891,234,0.00951110757861507,0.00951110757861507,-104.9688482,39.696672,-104.9688514,39.6965865
-19644,10601,10602,0.00459389199037625,0.00459389199037625,-104.9879279,39.7066512,-104.9878742,39.7066509
-14887,7456,5693,0.103533596199028,0.103533596199028,-105.0324406,39.7076676,-105.0324406,39.7067365
-15073,9480,8706,0.0156808972883418,0.0156808972883418,-104.9406528,39.7656775,-104.9404758,39.7656404
-18617,9447,1314,0.0196279343381406,0.0196279343381406,-105.0354966,39.713551,-105.0354933,39.7133745
-19477,10520,10521,0.0112440070511006,0.0112440070511006,-104.9902917,39.7076531,-104.9902943,39.707552
-19479,1872,10522,0.0183337010143588,0.0183337010143588,-104.9900015,39.7093504,-104.9902158,39.7093529
-18629,9484,5862,0.00360275623818702,0.00360275623818702,-105.0330762,39.7149479,-105.0330764,39.7149803
-17406,3210,6122,0.199774981063921,0.199774981063921,-104.9645976,39.7110977,-104.9645867,39.7093011
-15450,9609,9610,0.118608570416781,0.118608570416781,-105.0003045,39.7431574,-105.000479,39.7442156
-14988,9309,9464,0.101172548296122,0.101172548296122,-104.9787417,39.7432641,-104.9775584,39.7432677
-15965,1443,7623,0.202446963416806,0.202446963416806,-105.0038795,39.7112064,-105.0062462,39.7112115
-13793,4819,8514,0.148483674564771,0.148483674564771,-105.0080831,39.7592475,-105.0068857,39.7602149
-3766,2339,3595,0.17591583054365,0.17591583054365,-104.9293022,39.7193963,-104.929286,39.7209783
-3767,3595,3596,0.243702533330372,0.243702533330372,-104.929286,39.7209783,-104.9293972,39.7231683
-15851,5596,9735,0.0497175089074512,0.0497175089074512,-105.0438933,39.7301146,-105.0444693,39.7300539
-15124,6515,226,0.0653425651240956,0.0653425651240956,-104.9407009,39.7803199,-104.940692,39.7797323
-15449,9608,9609,0.0645563810419252,0.0645563810419252,-104.9999385,39.7426496,-105.0003045,39.7431574
-13914,4840,9230,0.275162192340763,0.275162192340763,-104.9965817,39.7075224,-104.9961257,39.7050728
-13922,9137,9233,0.0899935621999505,0.0899935621999505,-104.9868714,39.7007074,-104.9861692,39.7001048
-3788,1148,1821,0.103455086525091,0.103455086525091,-104.9293749,39.7637905,-104.9293577,39.7647208
-18632,7408,4044,0.178025429971464,0.178025429971464,-105.0330817,39.7165583,-105.0330924,39.7181593
-15247,9542,8177,0.0166658349694615,0.0166658349694615,-104.936117,39.7051637,-104.9362135,39.7050335
-15460,9613,9614,0.039786363249444,0.039786363249444,-105.0004503,39.7442368,-105.0001215,39.74449
-15461,8882,9615,0.0277165465497567,0.0277165465497567,-105.0018196,39.7432597,-105.0015275,39.7433678
-15546,9646,9647,0.0122997635777285,0.0122997635777285,-104.9868344,39.726681,-104.98691,39.7265869
-15889,8978,1101,0.0278428503732722,0.0278428503732722,-105.0408265,39.7349435,-105.040518,39.7350236
-236,30,31,0.0623462807475453,0.0623462807475453,-104.9707346,39.6882416,-104.9701337,39.6879245
-239,246,247,0.10870569104286,0.10870569104286,-104.9683485,39.6870395,-104.9672584,39.6865375
-19602,10483,10583,0.0688347644552014,0.0688347644552014,-104.9902592,39.7100937,-104.9910639,39.7100946
-19497,7457,10525,0.0182919034833847,0.0182919034833847,-104.9883639,39.7075324,-104.9883652,39.7073679
-15292,9561,9562,0.0285639174620334,0.0285639174620334,-104.941269,39.7069549,-104.9409364,39.7069322
-16011,9781,9782,0.0666625832869129,0.0666625832869129,-104.9994018,39.6890498,-104.9992186,39.6896325
-204,216,217,0.0495486567174314,0.0495486567174314,-105.0105654,39.7229262,-105.0109346,39.7232696
-16105,9825,9826,0.769429574289864,0.769429574289864,-104.9535187,39.7801156,-104.9625227,39.7801333
-19504,10531,10532,0.00490376342058079,0.00490376342058079,-104.9883756,39.7060143,-104.9883759,39.7059702
-19505,10532,10533,0.0113536336982688,0.0113536336982688,-104.9883759,39.7059702,-104.9883745,39.7058681
-15983,4420,7372,0.10794760335784,0.10794760335784,-105.0299687,39.7111671,-105.0312304,39.7111869
-16336,6683,8026,0.0934572989494279,0.0934572989494279,-104.9499154,39.7618255,-104.9488251,39.7617626
-15146,8245,9501,0.259647287125597,0.259647287125597,-104.9495723,39.7819108,-104.9477699,39.7837907
-16378,2678,4127,0.105747053096561,0.105747053096561,-104.9524232,39.761844,-104.9511861,39.7618358
-15168,9509,3381,0.0515085102071127,0.0515085102071127,-105.0340019,39.7403161,-105.0346043,39.7403194
-14670,9413,5473,0.178785252044424,0.178785252044424,-104.9701307,39.740015,-104.9701135,39.7384072
-15438,9603,2287,0.0101078833454114,0.0101078833454114,-105.0027104,39.7402226,-105.0028286,39.7402211
-16618,7974,3673,0.0581937370992888,0.0581937370992888,-104.9775516,39.7469781,-104.9775423,39.7475014
-16393,9876,3281,0.0515999951055545,0.0515999951055545,-104.9705085,39.7029675,-104.9710667,39.7027917
-11613,742,743,0.188831137780044,0.188831137780044,-105.0322639,39.7634453,-105.0300547,39.7634496
-16792,6964,10013,0.15953431348719,0.15953431348719,-105.0105704,39.7464447,-105.0114923,39.7476921
-16830,9911,10017,0.00322492509560211,0.00322492509560211,-104.972319,39.7074031,-104.9722814,39.707401
-17016,10055,10056,0.150978646033743,0.150978646033743,-105.0169757,39.7532749,-105.0167598,39.7546225
-17201,10074,6392,0.100421160552702,0.100421160552702,-105.0207767,39.7466992,-105.0207714,39.7476023
-19702,10621,10622,0.0560876276790842,0.0560876276790842,-105.0051625,39.7337963,-105.0045066,39.7337938
-17391,10095,8785,0.114852910416621,0.114852910416621,-104.9842414,39.72728,-104.9836046,39.7263706
-18648,4053,10111,0.195636353938149,0.195636353938149,-105.0379043,39.7181459,-105.0379043,39.7199053
-17545,8264,8929,0.192238762103777,0.192238762103777,-104.9897645,39.7839357,-104.9903693,39.7822705
-19596,10507,10581,0.0688892384795374,0.0688892384795374,-104.9902528,39.7106611,-104.9910581,39.7106676
-18652,8072,7653,0.262512305989993,0.262512305989993,-105.040042,39.7306132,-105.0400098,39.7282525
-18119,4085,6030,0.181292795599691,0.181292795599691,-105.0106908,39.7838273,-105.0106854,39.7854577
-17647,8242,223,0.0953499590487046,0.0953499590487046,-104.9443373,39.7799663,-104.9432215,39.7799643
-17960,5194,10233,0.0515871143302905,0.0515871143302905,-104.9883782,39.7241223,-104.9883637,39.7236585
-17964,10236,10232,0.0350820368831285,0.0350820368831285,-104.9882388,39.7255396,-104.9882382,39.7252241
-17785,8986,8497,0.0646311177616063,0.0646311177616063,-105.0131588,39.7555744,-105.0139116,39.7556283
-17753,10173,8485,0.0489434224402369,0.0489434224402369,-104.9947299,39.745901,-104.995128,39.7455847
-11535,1543,1544,0.137939265537406,0.137939265537406,-105.0270328,39.7572752,-105.0270414,39.7560347
-17819,8676,10186,0.0370735665978641,0.0370735665978641,-105.000985,39.7632181,-105.0007327,39.7634893
-17777,6508,6993,0.160336610713707,0.160336610713707,-104.9298124,39.7801232,-104.9316377,39.7804571
-3801,3083,3195,0.200442064419022,0.200442064419022,-104.9803943,39.7129167,-104.9803836,39.7111141
-3802,3195,3622,0.204398520601987,0.204398520601987,-104.9803836,39.7111141,-104.980383,39.7092759
-3803,3622,1902,0.199020966616341,0.199020966616341,-104.980383,39.7092759,-104.9804345,39.7074865
-3804,1902,3624,0.19721596773449,0.19721596773449,-104.9804345,39.7074865,-104.9804286,39.7057129
-17851,10193,10194,0.0260169590696429,0.0260169590696429,-104.9775879,39.7757765,-104.9773559,39.775625
-12958,1630,1631,0.127437048321071,0.127437048321071,-105.0040598,39.7420982,-105.0033016,39.7411115
-18661,10206,7647,0.17872352996795,0.17872352996795,-105.0345139,39.726102,-105.0345838,39.7277084
-19942,10671,4953,0.0511372085610231,0.0511372085610231,-104.9957933,39.726791,-104.9951981,39.7268351
-12964,1770,1771,0.0893785434926153,0.0893785434926153,-105.0062914,39.746863,-105.0057764,39.7461635
-18602,7656,6222,0.275287629645573,0.275287629645573,-105.0432633,39.7282706,-105.04325,39.7257949
-18232,2550,6070,0.201831098039417,0.201831098039417,-105.0409813,39.787434,-105.0409894,39.7856189
-18761,10339,10340,0.0412859123428405,0.0412859123428405,-105.0047672,39.7397925,-105.0043791,39.7395716
-4425,950,4134,0.165887036500793,0.165887036500793,-104.9505701,39.7320992,-104.950553,39.733591
-4426,4134,4135,0.171020798065652,0.171020798065652,-104.950553,39.733591,-104.9505787,39.7351289
-4427,4135,4136,0.184950521487565,0.184950521487565,-104.9505787,39.7351289,-104.9505787,39.7367922
-18817,10355,8431,0.088262856016995,0.088262856016995,-105.015729,39.7431732,-105.0163799,39.7437893
-4447,4149,4150,0.111495530172709,0.111495530172709,-104.9607278,39.7209872,-104.9594242,39.720981
-4448,4150,4151,0.101644653962629,0.101644653962629,-104.9594242,39.720981,-104.9582358,39.7209729
-19603,10583,10496,0.00675773327585877,0.00675773327585877,-104.9910639,39.7100946,-104.9911429,39.7100947
-19855,10661,10662,0.203042057763788,0.203042057763788,-105.044594,39.7384771,-105.0445966,39.7366511
-20643,10879,10877,0.0314570447479651,0.0314570447479651,-105.0134384,39.762482,-105.0134384,39.7627649
-19158,8423,8388,0.0601966609853944,0.0601966609853944,-105.013871,39.7414246,-105.0138882,39.7419658
-19615,10587,10502,0.00686995556939521,0.00686995556939521,-104.9910769,39.7088041,-104.9911572,39.7088051
-12339,8656,2501,0.0156699758852849,0.0156699758852849,-105.0073545,39.7547272,-105.0073403,39.7545867
-19328,9895,10473,0.0277673159561869,0.0277673159561869,-104.9718554,39.6986422,-104.971721,39.6984149
-19490,10441,10447,0.0184697170100914,0.0184697170100914,-104.9883481,39.7091456,-104.9883492,39.7089795
-19492,10448,10463,0.00504831489789659,0.00504831489789659,-104.9883503,39.7088103,-104.9883506,39.7087649
-19428,10489,7287,0.156514421452779,0.156514421452779,-104.9833961,39.7033795,-104.9833604,39.7019722
-19286,563,9967,0.0537140867907163,0.0537140867907163,-104.9854438,39.7392378,-104.986072,39.7392385
-19621,10589,10590,0.0274773310120508,0.0274773310120508,-104.988288,39.70828,-104.9879668,39.708282
-19441,10492,10493,0.0201930874558464,0.0201930874558464,-104.991144,39.7108499,-104.9911447,39.7106683
-19789,9476,4873,0.191586478139089,0.191586478139089,-104.9724291,39.7368742,-104.9724077,39.7351513
-19805,2619,10411,0.177645225629424,0.177645225629424,-104.9969572,39.7225317,-104.9969604,39.7209341
-18409,10287,10288,0.0734556316276251,0.0734556316276251,-105.0292196,39.7613906,-105.0292173,39.7620512
-20191,462,10707,0.132640175005266,0.132640175005266,-104.9880253,39.7800584,-104.9886248,39.7811587
-14823,3606,9335,0.071748078170483,0.071748078170483,-105.0243187,39.7548283,-105.025158,39.7548266
-14824,9335,9402,0.00997675672475066,0.00997675672475066,-105.025158,39.7548266,-105.0252747,39.7548256
-14825,9402,8301,0.0653806855821323,0.0653806855821323,-105.0252747,39.7548256,-105.0260395,39.7548296
-14830,4022,8322,0.0483334251113916,0.0483334251113916,-105.0299425,39.7548206,-105.0305079,39.754821
-14832,5668,7026,0.0386007852757077,0.0386007852757077,-105.0310864,39.7548296,-105.0315379,39.7548347
-4468,4163,4164,0.0480674059146442,0.0480674059146442,-104.975216,39.7201302,-104.974654,39.7201321
-4469,4164,991,0.0502312521862823,0.0502312521862823,-104.974654,39.7201321,-104.9740667,39.720134
-14857,8907,9435,0.0508107102861791,0.0508107102861791,-105.0079847,39.7554777,-105.0075169,39.7557596
-14859,9436,9437,0.0520105887104481,0.0520105887104481,-105.0090881,39.7546132,-105.0094073,39.7550114
-15729,9448,9449,0.154385795199696,0.154385795199696,-104.9554224,39.7163451,-104.9558247,39.7176986
-18619,9447,9452,0.260663192513491,0.260663192513491,-105.0354966,39.713551,-105.0354984,39.7112068
-14936,5495,8700,0.014007087915999,0.014007087915999,-104.9407458,39.7383041,-104.9405826,39.7382932
-20590,2705,10795,0.0154885940353102,0.0154885940353102,-105.022918,39.7610959,-105.0227368,39.7610963
-14972,2754,7005,0.0961416158900631,0.0961416158900631,-104.9328183,39.7510492,-104.931694,39.751069
-15045,5118,4946,0.0490898990370342,0.0490898990370342,-104.9706897,39.7368921,-104.9712638,39.7368921
-15046,4946,7151,0.0490351349560296,0.0490351349560296,-104.9712638,39.7368921,-104.9718371,39.7368817
-15963,6397,4362,0.0791794536243071,0.0791794536243071,-105.0006291,39.7111959,-105.0015545,39.7112124
-15989,9452,4506,0.0512507321563124,0.0512507321563124,-105.0354984,39.7112068,-105.036097,39.7112265
-16056,308,4648,0.208884022844132,0.208884022844132,-105.0162105,39.7255543,-105.0186498,39.72565
-15158,9504,7749,0.203686953618576,0.203686953618576,-104.9383033,39.6874943,-104.9383055,39.6893261
-16076,8934,9417,0.0908088237702457,0.0908088237702457,-104.9901787,39.7746982,-104.9903058,39.7738874
-16106,9826,214,0.019707054216564,0.019707054216564,-104.9625227,39.7801333,-104.9627533,39.7801312
-19536,10547,10551,0.00289118198627037,0.00289118198627037,-104.9890392,39.7095279,-104.9890395,39.7095019
-16257,8751,9267,0.200818549492747,0.200818549492747,-104.9552399,39.6947809,-104.9552346,39.6965869
-16332,5124,7146,0.105923351259383,0.105923351259383,-104.9708846,39.7620022,-104.9721238,39.7620063
-3817,3633,3634,0.395318196729382,0.395318196729382,-104.9408419,39.7060696,-104.9444999,39.7082421
-16359,2326,5997,0.152345269926906,0.152345269926906,-104.9240294,39.7620162,-104.9258117,39.7620121
-5101,4522,4624,0.135948680255943,0.135948680255943,-105.0189635,39.7632145,-105.0189554,39.7644371
-18688,2602,1859,0.181461056809498,0.181461056809498,-105.0415146,39.7229572,-105.0415045,39.7213253
-16455,9910,8957,0.00642990572974513,0.00642990572974513,-104.9724845,39.7074076,-104.9724094,39.7074052
-16456,8957,9911,0.00773671564019088,0.00773671564019088,-104.9724094,39.7074052,-104.972319,39.7074031
-16715,132,1701,0.201952446468105,0.201952446468105,-104.9874659,39.6930068,-104.9875011,39.6911908
-17236,31,134,0.108163538194537,0.108163538194537,-104.9701337,39.6879245,-104.969078,39.6873895
-17237,134,246,0.0735610173824186,0.0735610173824186,-104.969078,39.6873895,-104.9683485,39.6870395
-17521,3940,6651,0.0163911525787958,0.0163911525787958,-105.000152,39.7400197,-104.9999603,39.7400202
-18097,10256,2169,0.0491222602233141,0.0491222602233141,-105.0141119,39.7874307,-105.0146868,39.7874303
-18207,8329,7847,0.200166859157176,0.200166859157176,-105.0363384,39.7621278,-105.036368,39.7603278
-18394,5586,2554,0.157693803770027,0.157693803770027,-105.0439435,39.7860953,-105.0433255,39.7874316
-18972,7756,3621,0.0947044796448553,0.0947044796448553,-104.9814659,39.7146886,-104.9803587,39.7146886
-19237,10458,10457,0.00406582159548868,0.00406582159548868,-104.9913293,39.7430187,-104.991294,39.7429942
-19229,10453,10454,0.0676096530689986,0.0676096530689986,-104.9908874,39.7414826,-104.9914445,39.7410511
-3858,3667,3668,0.0415319443079903,0.0415319443079903,-104.9746946,39.7474748,-104.9751801,39.7474876
-3859,3668,3669,0.0482985746708946,0.0482985746708946,-104.9751801,39.7474876,-104.9757447,39.7475025
-19322,2203,916,0.200210598103272,0.200210598103272,-104.9873753,39.7338548,-104.9874133,39.7320545
-15203,7160,9528,0.0514241954874698,0.0514241954874698,-105.0381214,39.7499794,-105.0387229,39.7499763
-19690,10616,10397,0.0495068144600769,0.0495068144600769,-105.0112484,39.7498792,-105.011825,39.749838
-19692,10617,10398,0.0503641661598134,0.0503641661598134,-105.0116614,39.749343,-105.0118932,39.7497594
-19879,5198,10672,0.124230342536198,0.124230342536198,-104.9957805,39.7241162,-104.9957912,39.722999
-19967,10686,9720,0.110372440140764,0.110372440140764,-105.0340046,39.7384634,-105.0334112,39.7375819
-19969,9505,1931,0.205435822074821,0.205435822074821,-105.0305094,39.7403332,-105.030496,39.7384857
-19971,9711,1933,0.17400772229687,0.17400772229687,-105.0322666,39.7399826,-105.0316836,39.7384833
-19972,1933,10306,0.208946577187585,0.208946577187585,-105.0316836,39.7384833,-105.0316869,39.7366042
-3875,3685,3686,0.109844105363612,0.109844105363612,-104.9647396,39.7469477,-104.9634548,39.7469475
-17510,10120,10119,0.158859506306984,0.158859506306984,-105.0136579,39.737681,-105.0129247,39.7389937
-676,669,670,0.102292085856109,0.102292085856109,-104.9684201,39.7416394,-104.9672238,39.7416291
-3893,3696,3697,0.200080946502272,0.200080946502272,-104.961742,39.6947762,-104.9617212,39.6929769
-3894,3697,3698,0.204567969900071,0.204567969900071,-104.9617212,39.6929769,-104.9617334,39.6911372
-3896,3699,3700,0.197370997762066,0.197370997762066,-104.9617151,39.6892951,-104.9617155,39.6875201
-20255,5749,10704,0.00800649085379587,0.00800649085379587,-105.0445791,39.7729494,-105.0445781,39.7730214
-20320,10739,10740,0.00883881362478868,0.00883881362478868,-105.0234882,39.7589777,-105.0235185,39.7589017
-15207,1113,9529,0.0508930389416975,0.0508930389416975,-105.0404745,39.7499577,-105.0410698,39.7499582
-15251,9544,9536,0.0327374869648338,0.0327374869648338,-104.9360582,39.7058553,-104.9358729,39.7061129
-15379,8806,2642,0.105298522418053,0.105298522418053,-104.953405,39.7180338,-104.9521739,39.7180386
-18635,7865,1846,0.175356787311383,0.175356787311383,-105.0331005,39.7197556,-105.0330898,39.7213326
-15485,9612,9616,0.0684703360070514,0.0684703360070514,-105.0005861,39.7432358,-105.0011333,39.7436854
-15516,9635,3736,0.0550573183727317,0.0550573183727317,-105.0021668,39.7384727,-105.0028107,39.7384712
-19480,10522,10511,0.00442285695753415,0.00442285695753415,-104.9902158,39.7093529,-104.9902675,39.7093534
-15574,9660,9464,0.175338544663329,0.175338544663329,-104.9775409,39.7416909,-104.9775584,39.7432677
-15598,7585,2003,0.0946559616738872,0.0946559616738872,-104.9360971,39.758301,-104.9349898,39.7583076
-15618,9679,9680,0.101799223111765,0.101799223111765,-104.918758,39.7583757,-104.9175671,39.7583757
-15640,9666,9667,0.00676039634627663,0.00676039634627663,-104.9412242,39.7582683,-104.941147,39.7582815
-15683,8023,7680,0.104281288426574,0.104281288426574,-104.9485858,39.7178178,-104.9473666,39.7178126
-15704,7666,2329,0.100028756753634,0.100028756753634,-104.9245961,39.7178332,-104.9234266,39.7178332
-15755,3356,2760,0.0982705119459115,0.0982705119459115,-104.9339641,39.7162382,-104.9328153,39.7162508
-1110,1126,1127,0.154576986104079,0.154576986104079,-105.0405383,39.7639496,-105.0404877,39.7653392
-2347,2338,2265,0.095819812257735,0.095819812257735,-104.9316115,39.7193956,-104.9304912,39.7194002
-12348,8664,8665,0.0099818469883938,0.0099818469883938,-105.0123703,39.7528644,-105.0124819,39.7528908
-20799,10928,6772,0.00617692305613739,0.00617692305613739,-105.0267992,39.7609759,-105.0268634,39.7610014
-1176,1191,1192,0.0992884317332444,0.0992884317332444,-104.9578631,39.7271192,-104.9567021,39.7271202
-20800,6772,10949,0.00765667567444528,0.00765667567444528,-105.0268634,39.7610014,-105.0269444,39.7610308
-441,439,440,0.131394781189403,0.131394781189403,-104.9691656,39.702165,-104.969326,39.7033402
-2798,2750,2752,0.210544806502819,0.210544806502819,-104.9326406,39.738234,-104.9326896,39.7401271
-20666,10888,10889,0.0790962373353106,0.0790962373353106,-105.0396012,39.7648471,-105.0403834,39.764467
-19518,6854,10540,0.00704975834948009,0.00704975834948009,-104.9885677,39.7102439,-104.9885677,39.7101805
-17074,10070,7842,0.137917824166884,0.137917824166884,-104.9615992,39.7507111,-104.9616094,39.7519514
-320,63,64,0.0374489603047296,0.0374489603047296,-105.0203119,39.7717265,-105.01999,39.771498
-62,68,69,0.0422209546479027,0.0422209546479027,-104.9680761,39.7002293,-104.9675826,39.7002312
-12003,5507,7080,0.146738996592278,0.146738996592278,-104.9821628,39.7616959,-104.9809567,39.762635
-109,116,117,0.143188450690636,0.143188450690636,-105.023457,39.730286,-105.0251312,39.7303064
-18456,10296,7020,0.00773615182989558,0.00773615182989558,-105.0316008,39.7464538,-105.0315108,39.746461
-134,142,143,0.102085903671524,0.102085903671524,-104.9980358,39.6930742,-104.9992288,39.6930874
-18414,7445,8376,0.0994737732965907,0.0994737732965907,-105.0369668,39.7543695,-105.0358032,39.7543633
-153,162,163,0.0752431334530451,0.0752431334530451,-105.0166181,39.6931468,-105.0174975,39.6931459
-18417,10289,8332,0.15046170994065,0.15046170994065,-105.0398915,39.7607667,-105.0398789,39.7621198
-323,206,207,0.0117249781899754,0.0117249781899754,-104.9566644,39.7445134,-104.9565607,39.7445824
-222,233,234,0.0133914034588106,0.0133914034588106,-104.968695,39.6965912,-104.9688514,39.6965865
-269,279,280,0.111130387977042,0.111130387977042,-104.987002,39.7789431,-104.9858487,39.7794049
-304,312,313,0.0760674046765663,0.0760674046765663,-104.971535,39.780386,-104.970735,39.780686
-378,380,381,0.042583144928967,0.042583144928967,-105.03278,39.74748,-105.0323033,39.747591
-334,335,336,0.0838277836552233,0.0838277836552233,-104.9400719,39.7824771,-104.9390909,39.7824749
-18422,6881,8361,0.201914074104345,0.201914074104345,-105.0410645,39.7657635,-105.0410832,39.7639477
-367,368,369,0.0822344709508681,0.0822344709508681,-104.9589875,39.7795994,-104.9593952,39.7789295
-541,535,536,0.186883681615866,0.186883681615866,-105.0155504,39.7561618,-105.0151149,39.7545148
-11516,528,591,0.200155681159152,0.200155681159152,-105.0322618,39.7598749,-105.0346033,39.7598894
-15254,9538,9539,0.0173547475022314,0.0173547475022314,-104.9352077,39.7057044,-104.9351084,39.7058405
-659,649,650,0.011039314445329,0.011039314445329,-104.9873881,39.7417114,-104.9872612,39.7417297
-11464,701,5,0.465980985000995,0.465980985000995,-104.9318804,39.7801737,-104.9373334,39.780183
-16702,9996,9629,0.03889405892702,0.03889405892702,-104.9999838,39.7464987,-105.0003179,39.7462613
-12966,1824,1825,0.0102076592436785,0.0102076592436785,-105.0068707,39.7455494,-105.0069351,39.7456267
-18427,7848,2983,0.204332357907837,0.204332357907837,-105.0387174,39.7603215,-105.038723,39.7584839
-16420,3283,3331,0.0144926793767328,0.0144926793767328,-104.9691419,39.7020399,-104.9693109,39.7020309
-794,799,800,0.10010177351148,0.10010177351148,-104.9293286,39.7528556,-104.9281577,39.7528638
-11695,896,1005,0.0164907467236235,0.0164907467236235,-105.0012741,39.7533936,-105.0014074,39.7532864
-18433,6878,8357,0.204690873329425,0.204690873329425,-105.0387418,39.7657978,-105.0387283,39.763957
-863,876,877,0.10476487069157,0.10476487069157,-104.968419,39.7645054,-104.9671933,39.7645034
-883,898,899,0.104753841122432,0.104753841122432,-104.9450302,39.764473,-104.9438047,39.7644833
-884,899,864,0.0807039229442354,0.0807039229442354,-104.9438047,39.7644833,-104.9428605,39.7644833
-927,941,942,0.0494985310502231,0.0494985310502231,-104.9712147,39.7320508,-104.9706365,39.7320717
-16705,9999,9629,0.0289087737479417,0.0289087737479417,-105.0005573,39.7460777,-105.0003179,39.7462613
-17026,3489,3490,0.0719959563000755,0.0719959563000755,-105.0251569,39.7553551,-105.0243147,39.7553581
-18682,3408,3539,0.176214327588196,0.176214327588196,-105.0367215,39.7181427,-105.0367081,39.716558
-18442,8299,10294,0.012207810422513,0.012207810422513,-105.0260753,39.7595725,-105.026081,39.7596822
-1076,1092,1093,0.17117547982738,0.17117547982738,-105.0405917,39.7314737,-105.040582,39.7330131
-15790,2105,2106,0.167962867985551,0.167962867985551,-105.0249129,39.7371906,-105.0232102,39.7379438
-1100,1116,1117,0.101443140583253,0.101443140583253,-105.0404808,39.7530145,-105.0404813,39.7539268
-1122,1138,1139,0.131688298285365,0.131688298285365,-105.040403,39.7820828,-105.0404053,39.7832671
-2171,2170,2171,0.00661609813602913,0.00661609813602913,-105.0146867,39.7884025,-105.0146867,39.788462
-19434,10489,10109,0.051734430819511,0.051734430819511,-104.9833961,39.7033795,-104.9827914,39.7033844
-16849,9890,3358,0.0252874452199061,0.0252874452199061,-104.9695728,39.7019278,-104.9695281,39.7021526
-16171,7732,6631,0.170999473020786,0.170999473020786,-104.9763378,39.6893855,-104.9763643,39.6909232
-1145,1163,1164,0.10638131618854,0.10638131618854,-104.9609775,39.7632277,-104.959733,39.7632393
-2233,2234,2235,0.107325767093377,0.107325767093377,-104.937292,39.7328682,-104.936037,39.7328568
-16734,10004,5726,0.044310348629928,0.044310348629928,-104.9539532,39.7012069,-104.9536931,39.7008623
-19574,7473,10571,0.0063271995041771,0.0063271995041771,-104.9892894,39.708464,-104.98929,39.7084071
-1286,1311,1312,0.0523154141859772,0.0523154141859772,-105.0336852,39.7133658,-105.0342968,39.7133689
-18191,5793,6053,0.200818759010255,0.200818759010255,-105.0281574,39.7874261,-105.0281511,39.7856201
-12198,2296,2417,0.0275462737865406,0.0275462737865406,-105.0235583,39.7404384,-105.0238493,39.7405447
-1335,1360,142,0.202746839209369,0.202746839209369,-104.9980058,39.6948974,-104.9980358,39.6930742
-1357,1386,1387,0.204107383179499,0.204107383179499,-105.0038695,39.7121354,-105.0062556,39.7121476
-1384,1411,1412,0.132938489820146,0.132938489820146,-105.0079981,39.7813836,-105.0095538,39.781386
-1385,1412,1413,0.131234196689436,0.131234196689436,-105.0095538,39.781386,-105.0110892,39.7813605
-16835,10018,10019,0.00449297276091322,0.00449297276091322,-104.9700592,39.7032461,-104.9700539,39.7032059
-1459,1481,1482,0.0508965659313026,0.0508965659313026,-104.9901596,39.6948019,-104.9907544,39.6948087
-533,397,398,0.176353791704941,0.176353791704941,-105.0131625,39.7564763,-105.0152017,39.756236
-1483,1503,1504,0.10868886965133,0.10868886965133,-105.0297284,39.6949225,-105.0309987,39.6949159
-17373,3540,4236,0.201662628453229,0.201662628453229,-104.9786521,39.6984298,-104.9786279,39.6966163
-1505,47,1524,0.198761508803526,0.198761508803526,-104.974563,39.7002186,-104.9745686,39.6984311
-16510,9930,8899,0.028599893322584,0.028599893322584,-105.0053557,39.7432318,-105.0050563,39.7433465
-19459,10506,10507,0.0718336837694179,0.0718336837694179,-104.9910563,39.7108489,-104.9902528,39.7106611
-16953,10037,10038,0.0209544596641532,0.0209544596641532,-105.0167413,39.7559349,-105.0168024,39.7557524
-1573,1601,1602,0.162785877407261,0.162785877407261,-105.013927,39.6982179,-105.0138578,39.6967549
-1622,1650,1651,0.0538894092860146,0.0538894092860146,-105.0156911,39.6895077,-105.0156831,39.6890231
-1645,1672,1673,0.130835848827306,0.130835848827306,-105.0096516,39.7680424,-105.0111824,39.7680416
-1667,1692,1693,0.050088176287895,0.050088176287895,-105.0410724,39.7676025,-105.0416583,39.7675928
-1694,1718,1719,0.0873988319892153,0.0873988319892153,-105.0097345,39.6908484,-105.0107559,39.690855
-1719,1738,1456,0.0837159374419676,0.0837159374419676,-105.0067562,39.6912909,-105.0077346,39.6912909
-1750,1769,1772,0.200154711336709,0.200154711336709,-104.9769412,39.7092561,-104.9769267,39.7074561
-1772,1790,1791,0.0243124544354895,0.0243124544354895,-104.9810045,39.694799,-104.9807204,39.6948034
-12976,2866,2867,0.0166252705046511,0.0166252705046511,-104.9893706,39.7368276,-104.9894148,39.7369732
-1804,1817,1818,0.0911976784518576,0.0911976784518576,-105.02745,39.7281152,-105.028093,39.7274609
-11690,836,837,0.0102634119335747,0.0102634119335747,-105.00135,39.7536153,-105.0012532,39.7536699
-1854,1868,1869,0.0969507802969199,0.0969507802969199,-104.9899631,39.7147612,-104.9899974,39.7138897
-18890,6123,3212,0.200920158955186,0.200920158955186,-104.963455,39.709291,-104.9634444,39.7110979
-13010,2892,2956,0.114118910643116,0.114118910643116,-104.9912536,39.7714803,-104.9919912,39.7706248
-1900,1913,1087,0.0825040978126541,0.0825040978126541,-104.9733715,39.707477,-104.9724071,39.7074855
-11531,1232,1233,0.136649469135664,0.136649469135664,-105.028183,39.7572752,-105.0281917,39.7560463
-3101,3032,3035,0.0672642720958143,0.0672642720958143,-104.9476453,39.759056,-104.9468584,39.7590562
-16771,7290,7418,0.177711115784665,0.177711115784665,-104.9546694,39.7017867,-104.9529866,39.7027237
-2076,2079,2080,0.00320241388686281,0.00320241388686281,-104.9536567,39.7606977,-104.9536567,39.7607265
-20267,7552,10721,0.0076233085405271,0.0076233085405271,-105.0451456,39.7730203,-105.0450564,39.7730205
-2099,2101,2102,0.0617614998037007,0.0617614998037007,-104.9269881,39.7795759,-104.9269671,39.7801311
-2178,2178,2179,0.133414657501795,0.133414657501795,-105.01465,39.7765593,-105.0146727,39.777759
-20703,10902,10893,0.0137674602252582,0.0137674602252582,-105.0400838,39.7654891,-105.0400814,39.7656129
-18186,6059,4074,0.199239203137735,0.199239203137735,-105.0327949,39.7856263,-105.0327922,39.7838345
-2271,2271,2274,0.132133232701666,0.132133232701666,-104.9305276,39.7280436,-104.9305243,39.7292319
-2297,2295,2044,0.383761223862801,0.383761223862801,-104.9885127,39.7658379,-104.9843229,39.7670786
-2323,2315,2316,0.330214470935474,0.330214470935474,-104.9499657,39.7059775,-104.9472534,39.7038645
-12347,8663,8664,0.0257805479932851,0.0257805479932851,-105.0123961,39.7526334,-105.0123703,39.7528644
-2391,2374,2380,0.0606466728888714,0.0606466728888714,-104.954137,39.710527,-104.9540512,39.7099856
-17368,6112,1906,0.199361824625973,0.199361824625973,-104.9786441,39.7092737,-104.9786392,39.7074808
-2461,2451,2452,0.13645541326163,0.13645541326163,-105.0064532,39.7705389,-105.0080496,39.7705191
-2505,2485,2486,0.101289554682704,0.101289554682704,-105.0158508,39.7789597,-105.0170359,39.7789761
-2559,1939,371,0.224011572183979,0.224011572183979,-105.0273088,39.7386104,-105.0298176,39.7380301
-19236,5960,10458,0.00935537130778975,0.00935537130778975,-104.9914093,39.7430761,-104.9913293,39.7430187
-20487,10833,10834,0.0146368261080025,0.0146368261080025,-105.0248283,39.7608934,-105.0246593,39.7608722
-17152,4823,1911,0.202007841348173,0.202007841348173,-104.9751483,39.7056678,-104.9751493,39.7074845
-15939,9756,1179,0.0444859500137061,0.0444859500137061,-104.9962839,39.7001148,-104.9967738,39.7002489
-3746,3576,3577,0.10159835449875,0.10159835449875,-104.9488635,39.7544629,-104.9476756,39.7544343
-3791,2772,3612,0.203936793927218,0.203936793927218,-104.9293492,39.7674126,-104.929332,39.7692466
-3792,3612,3613,0.107839344756473,0.107839344756473,-104.929332,39.7692466,-104.9293234,39.7702164
-2787,2741,2742,0.198829139661659,0.198829139661659,-104.9558357,39.6911246,-104.9558447,39.6893365
-15945,9761,9759,0.0391671909462338,0.0391671909462338,-104.997609,39.7046403,-104.9977092,39.704984
-2831,2780,2781,0.0528298940705434,0.0528298940705434,-104.9727319,39.7669657,-104.9721138,39.7669682
-19569,10568,10569,0.0878244193957737,0.0878244193957737,-104.9895159,39.7084088,-104.9895239,39.707619
-2880,2824,2825,0.0974259616864288,0.0974259616864288,-105.0158414,39.7801872,-105.0169815,39.7801864
-2902,2845,2846,0.808353421265405,0.808353421265405,-104.9305098,39.6893437,-104.9307139,39.6820757
-17512,10121,10120,0.0252089130538733,0.0252089130538733,-105.0137025,39.7374569,-105.0136579,39.737681
-18124,7936,10267,0.178836603986638,0.178836603986638,-105.0106854,39.7894536,-105.010676,39.7910619
-17213,3773,3774,0.00322537908461904,0.00322537908461904,-104.9774877,39.7022422,-104.9774885,39.7022712
-4010,3797,3798,0.0496772635509661,0.0496772635509661,-104.9723623,39.729076,-104.9729432,39.7290745
-20618,10829,10811,0.00710063413803192,0.00710063413803192,-105.0230688,39.7597292,-105.022998,39.7596958
-4056,3836,542,0.0542189434563804,0.0542189434563804,-105.042838,39.751186,-105.0428359,39.7516736
-16431,9893,9894,0.0272038809490012,0.0272038809490012,-104.9715317,39.698308,-104.9716111,39.6985449
-4079,3854,3855,0.107248137237127,0.107248137237127,-105.0427103,39.7245555,-105.0427146,39.72552
-4105,3874,1534,0.0983074346464974,0.0983074346464974,-104.944148,39.7565195,-104.944148,39.7574036
-4130,3892,3893,0.176077888960898,0.176077888960898,-104.9634634,39.7416479,-104.9634575,39.7432314
-3140,2139,3065,0.10712340392365,0.10712340392365,-104.9269888,39.7601749,-104.9257357,39.7601617
-14117,3945,3946,0.0482205385893945,0.0482205385893945,-104.9450651,39.7484271,-104.9449549,39.7480018
-19586,7471,10577,0.00638268050836497,0.00638268050836497,-104.9888183,39.708461,-104.9888187,39.7084036
-18680,1852,3185,0.180570803347185,0.180570803347185,-105.0367134,39.7213291,-105.0367216,39.7197052
-4350,4077,4078,0.0772510249569655,0.0772510249569655,-104.9901174,39.7840727,-104.9910214,39.7840807
-4372,4094,4095,0.0479505811649138,0.0479505811649138,-105.0169973,39.7839311,-105.0175565,39.7838951
-19591,10579,10498,0.00651919101450697,0.00651919101450697,-104.9910674,39.7097471,-104.9911436,39.7097481
-3306,3214,3215,0.0471079000187924,0.0471079000187924,-104.9622425,39.711098,-104.9616918,39.7111011
-3328,3230,3231,0.132391302135547,0.132391302135547,-105.0330468,39.7719096,-105.0345947,39.7719562
-19626,10513,10592,0.0688709903222838,0.0688709903222838,-104.9902701,39.7089743,-104.9910751,39.7089846
-3398,3295,3296,0.0155356242142858,0.0155356242142858,-104.9407838,39.7038199,-104.9406022,39.7038199
-19230,10454,10455,0.0118389292817843,0.0118389292817843,-104.9914445,39.7410511,-104.9915438,39.7409769
-20315,10736,10737,0.159656650881409,0.159656650881409,-105.0233746,39.7593437,-105.0250397,39.7599942
-18079,6355,10255,0.0661057533214939,0.0661057533214939,-105.0105212,39.7255767,-105.0097514,39.7256305
-3483,3361,3362,0.201966263198038,0.201966263198038,-104.9339125,39.7546702,-104.9338998,39.7564865
-4636,4280,4281,0.102934268159845,0.102934268159845,-104.97885,39.7703237,-104.9797003,39.7709793
-16647,9969,5457,0.0123677166569097,0.0123677166569097,-104.9848573,39.7385435,-104.9848604,39.7384323
-16903,7306,3263,0.199172661453728,0.199172661453728,-104.9657546,39.7020662,-104.9657587,39.7038574
-19484,6853,10408,0.00698312522129821,0.00698312522129821,-104.9883411,39.7102427,-104.9883415,39.7101799
-19234,10420,10457,0.0372086096742178,0.0372086096742178,-104.9910563,39.7427139,-104.991294,39.7429942
-19820,10648,3951,0.0619393226511354,0.0619393226511354,-105.0009089,39.7300077,-105.0001846,39.7300077
-20630,10847,10760,0.0141138073557462,0.0141138073557462,-105.0229893,39.7608356,-105.0229928,39.7607087
-4772,4383,4384,0.143358020264065,0.143358020264065,-104.9788891,39.7554321,-104.9800877,39.7545304
-4773,4384,2688,0.1475761156103,0.1475761156103,-104.9800877,39.7545304,-104.9813184,39.7535997
-19822,10648,9252,0.121899654224586,0.121899654224586,-105.0009089,39.7300077,-105.0008928,39.7289115
-17019,10054,10057,0.00913318334502991,0.00913318334502991,-105.0167692,39.7546606,-105.0168578,39.7546147
-19885,7405,10416,0.200852838610439,0.200852838610439,-104.9957689,39.7166071,-104.9957778,39.7148008
-18259,7775,9395,0.0553851197391209,0.0553851197391209,-105.0259595,39.7688086,-105.0253115,39.7688045
-4859,3019,4445,0.0478223869342914,0.0478223869342914,-104.9768843,39.7557372,-104.9772635,39.7560534
-20466,10753,10817,0.0682187434932547,0.0682187434932547,-105.0250779,39.761939,-105.0250744,39.7613255
-19877,10671,6237,0.122419389056498,0.122419389056498,-104.9957933,39.726791,-104.9957805,39.7256901
-19878,6237,5198,0.175009695046305,0.175009695046305,-104.9957805,39.7256901,-104.9957805,39.7241162
-18518,10303,10304,0.0239997630410034,0.0239997630410034,-105.0374978,39.7440972,-105.0372296,39.7441609
-4902,3446,4478,0.091694374773876,0.091694374773876,-104.9462506,39.7657138,-104.9451778,39.765712
-19966,9509,10686,0.206010969949978,0.206010969949978,-105.0340019,39.7403161,-105.0340046,39.7384634
-19567,10565,7474,0.0766585847384353,0.0766585847384353,-104.9895118,39.7091548,-104.9895159,39.7084654
-14126,3925,419,0.00806156942685905,0.00806156942685905,-104.9455321,39.7450146,-104.94552,39.7449427
-3723,3558,2895,0.0536764980359733,0.0536764980359733,-104.9739683,39.7546244,-104.9733531,39.7545278
-3795,3615,3616,0.170284963942666,0.170284963942666,-104.9804114,39.6945392,-104.9804184,39.6930078
-20220,9234,6625,0.292333005384616,0.292333005384616,-104.9818516,39.6960736,-104.9797753,39.6939857
-14111,3623,3659,0.11789221451213,0.11789221451213,-104.9448677,39.7457412,-104.9461809,39.7460646
-3861,3670,3671,0.0217628748782358,0.0217628748782358,-104.976114,39.7474946,-104.9763685,39.7474986
-17030,3607,3490,0.0408681491476405,0.0408681491476405,-105.0243214,39.7549906,-105.0243147,39.7553581
-15948,9763,9764,0.10655007034609,0.10655007034609,-104.9987026,39.7066196,-104.9984431,39.7056824
-17086,504,3946,0.0996587778769702,0.0996587778769702,-104.9458317,39.7485924,-104.9449549,39.7480018
-20151,8263,8850,0.190160460059289,0.190160460059289,-104.9903301,39.7785853,-104.9897894,39.7769264
-17097,3721,2249,0.175979650666522,0.175979650666522,-104.9604142,39.7350474,-104.9604253,39.7334648
-3955,2834,3751,0.211238280484951,0.211238280484951,-105.0263725,39.7802711,-105.0263639,39.7821708
-4024,3809,3810,0.0544429181408591,0.0544429181408591,-104.9835982,39.729065,-104.9842348,39.7290698
-20310,10731,10732,0.0936889543382987,0.0936889543382987,-105.0247591,39.7586373,-105.0237565,39.7589777
-4047,2945,3827,0.152861408667566,0.152861408667566,-104.9251435,39.7065053,-104.9269304,39.7065091
-20433,10792,10793,0.0378257433013547,0.0378257433013547,-105.0232345,39.7595229,-105.023633,39.7596708
-4179,3929,3930,0.138165941069034,0.138165941069034,-105.0010599,39.7656602,-105.0005956,39.7668504
-18286,6824,3986,0.13302202745972,0.13302202745972,-105.0315024,39.7699322,-105.0299471,39.7698868
-20336,10747,10740,0.0348319951594156,0.0348319951594156,-105.0235111,39.7585885,-105.0235185,39.7589017
-5524,4925,4926,0.124694107926995,0.124694107926995,-104.9945592,39.735263,-104.9952734,39.7362407
-4269,4013,4014,0.135510024687662,0.135510024687662,-105.0299387,39.7439361,-105.0299558,39.7451547
-20344,10743,10749,0.0091415179335324,0.0091415179335324,-105.0236223,39.7590808,-105.0236241,39.7589986
-17114,3959,582,0.020964645373322,0.020964645373322,-104.957513,39.7479253,-104.9577579,39.7479349
-14696,4947,5018,0.17692836025714,0.17692836025714,-104.9712638,39.7384111,-104.9712466,39.7400022
-4361,4085,4086,0.0439979039927832,0.0439979039927832,-105.0106908,39.7838273,-105.0112057,39.7838279
-20443,10800,10797,0.0184411605361648,0.0184411605361648,-105.0218874,39.7616318,-105.0218716,39.7614664
-4436,1838,4143,0.106284873443858,0.106284873443858,-104.9874805,39.7209443,-104.9862384,39.7209146
-4437,4143,4144,0.0526768909687255,0.0526768909687255,-104.9862384,39.7209146,-104.9856225,39.7209124
-4456,4154,4155,0.103915690256788,0.103915690256788,-104.9497951,39.7209768,-104.9485801,39.7209768
-4457,4155,4156,0.103695542240372,0.103695542240372,-104.9485801,39.7209768,-104.9473677,39.7209707
-4476,4169,727,0.0512571810638195,0.0512571810638195,-104.9706014,39.7200889,-104.9700021,39.7200889
-4477,727,4170,0.0478531500173987,0.0478531500173987,-104.9700021,39.7200889,-104.9694426,39.7200889
-5818,5133,5134,0.102145042918239,0.102145042918239,-104.9395046,39.7345681,-104.9384246,39.7341756
-5912,5193,5194,0.024083404138801,0.024083404138801,-104.9880966,39.7241225,-104.9883782,39.7241223
-20491,10835,10836,0.00603667118796414,0.00603667118796414,-105.0188076,39.7585187,-105.0188782,39.7585174
-15862,9742,9737,0.126226895338302,0.126226895338302,-105.0409204,39.7309501,-105.0423956,39.7309893
-5931,5209,5210,0.693210396806986,0.693210396806986,-105.0451039,39.7239541,-105.0532075,39.7240888
-16531,9230,9133,0.0319382574203035,0.0319382574203035,-104.9961257,39.7050728,-104.9958777,39.7048581
-4627,1616,4276,0.105592921129571,0.105592921129571,-104.973572,39.7730583,-104.9744288,39.7737425
-20628,10756,10873,0.0143552752086545,0.0143552752086545,-105.0229933,39.7612883,-105.0229935,39.7611592
-20696,10910,4524,0.00942218117840877,0.00942218117840877,-105.0250813,39.7631194,-105.0250845,39.7632041
-18136,6043,10263,0.201163508503498,0.201163508503498,-105.0198962,39.7856251,-105.0198897,39.7874342
-4695,4331,808,0.139418137507802,0.139418137507802,-104.9769247,39.7519986,-104.9769333,39.7532524
-4698,4332,4333,0.161361651356291,0.161361651356291,-104.9771769,39.7840807,-104.9771941,39.7855318
-6050,4013,5293,0.134925136075026,0.134925136075026,-105.0299387,39.7439361,-105.0315166,39.7439551
-18073,6354,6355,0.0448917156923931,0.0448917156923931,-105.0110405,39.7255178,-105.0105212,39.7255767
-4744,4362,4363,0.107836470275357,0.107836470275357,-105.0015545,39.7112124,-105.0015367,39.7102427
-4765,4378,4379,0.183602249353544,0.183602249353544,-105.0263037,39.6939714,-105.0284495,39.6939582
-20634,10876,10877,0.0283642470117633,0.0283642470117633,-105.0137702,39.7627689,-105.0134384,39.7627649
-18170,5801,6061,0.198751914750946,0.198751914750946,-105.0339455,39.7874133,-105.0339562,39.7856259
-4835,4430,4431,0.145138896688942,0.145138896688942,-104.9874697,39.7174659,-104.9891666,39.7174681
-4862,4446,4447,0.0474277072247471,0.0474277072247471,-104.9781251,39.7567372,-104.9785209,39.7570361
-18509,9355,10301,0.00184585558113331,0.00184585558113331,-105.0410672,39.7487502,-105.0410673,39.7487336
-6260,174,1704,0.202197382513594,0.202197382513594,-105.0250478,39.6931151,-105.0250424,39.6912967
-4958,4516,4517,0.0491656169358357,0.0491656169358357,-105.012785,39.7632228,-105.0133602,39.7632209
-4983,4534,4535,0.0998419246339525,0.0998419246339525,-105.0227761,39.719354,-105.0227761,39.7202519
-19921,10413,7869,0.176021720356684,0.176021720356684,-104.9980711,39.720935,-104.9980684,39.719352
-5064,4589,4590,0.0154062452430768,0.0154062452430768,-104.9408036,39.744932,-104.9406235,39.7449365
-5086,4607,4608,0.119245405144689,0.119245405144689,-104.9747635,39.7448376,-104.9761582,39.7448434
-5111,4630,4631,0.139104857432868,0.139104857432868,-105.0189411,39.7753479,-105.0189415,39.7765989
-20788,5700,10925,0.00572872738726038,0.00572872738726038,-105.035764,39.7622008,-105.035831,39.7621995
-3915,2811,3713,0.0582509515897595,0.0582509515897595,-104.9921559,39.7183774,-104.9928366,39.7183943
-3917,3714,3715,0.0974014881112134,0.0974014881112134,-104.9940184,39.7183972,-104.995157,39.7184133
-20790,10947,8358,0.00657767070033128,0.00657767070033128,-105.0393977,39.7638972,-105.039401,39.7639563
-5221,4709,4710,0.122314419308335,0.122314419308335,-104.970235,39.782186,-104.970235,39.783286
-5243,875,4463,0.138237545752752,0.138237545752752,-104.9696488,39.7645085,-104.9696481,39.7657517
-18318,7366,7442,0.0771284931905011,0.0771284931905011,-105.0267891,39.7634203,-105.0275322,39.7638138
-5315,4770,4771,0.0488277782804066,0.0488277782804066,-104.97698,39.7224773,-104.9764091,39.7224805
-5336,2332,4786,0.0940516760159238,0.0940516760159238,-104.9238853,39.7231807,-104.9227856,39.7231786
-5388,4825,97,0.199068637854245,0.199068637854245,-104.9446221,39.7019764,-104.9442146,39.7002138
-17092,4597,9466,0.17373336205738,0.17373336205738,-104.9603758,39.7447782,-104.9603865,39.7432158
-5437,4857,4858,0.0515825872815672,0.0515825872815672,-104.9822782,39.7351518,-104.981675,39.7351569
-5483,4893,4894,0.046048954675788,0.046048954675788,-104.9456205,39.7351177,-104.945082,39.7351139
-5531,4931,4932,0.018084718359645,0.018084718359645,-104.9988399,39.7414088,-104.9989204,39.7415592
-6850,4421,5860,0.102045619820979,0.102045619820979,-105.0299945,39.7149702,-105.0311875,39.7149636
-6892,5894,5697,0.0947186956045014,0.0947186956045014,-105.0109744,39.7074034,-105.010983,39.7065516
-5585,1550,4269,0.196429076934968,0.196429076934968,-104.9801772,39.7765679,-104.980164,39.7783344
-3934,3732,3733,0.121703755972038,0.121703755972038,-105.0028207,39.7326047,-105.0028152,39.7336992
-3936,3734,3735,0.176733819603511,0.176733819603511,-105.0028252,39.7352849,-105.0028198,39.7368743
-5609,4988,4989,0.201206746854351,0.201206746854351,-104.9850453,39.7165375,-104.9850107,39.7147282
-6912,5908,1999,0.0940717232862836,0.0940717232862836,-104.9361363,39.7492673,-104.9350364,39.749243
-5705,932,2217,0.184097423724296,0.184097423724296,-104.9764282,39.7320463,-104.9764407,39.7337019
-5753,5081,5082,0.054538974474369,0.054538974474369,-104.9962546,39.7083175,-104.9957853,39.7079855
-5760,5088,1840,0.180073513278395,0.180073513278395,-104.9908341,39.719328,-104.9908489,39.7209474
-5785,2782,5108,0.132016677253578,0.132016677253578,-104.9708506,39.7669659,-104.9708358,39.7681531
-18555,7706,2990,0.19846083928125,0.19846083928125,-105.0434221,39.7567041,-105.0434248,39.7584889
-18352,3981,7040,0.199881951179414,0.199881951179414,-105.0299345,39.7669593,-105.0322731,39.7669531
-5885,5176,130,0.21663995111842,0.21663995111842,-105.0117034,39.6967417,-105.010718,39.694947
-14774,5924,3807,0.151382817559166,0.151382817559166,-104.9817146,39.7304273,-104.9817238,39.7290659
-17792,8508,6179,0.109482524773714,0.109482524773714,-104.9873985,39.757951,-104.9873985,39.7569664
-5955,5228,5229,0.0697529045378229,0.0697529045378229,-104.9565077,39.7110219,-104.9556923,39.7110153
-5977,1247,4556,0.132973381558885,0.132973381558885,-105.0205098,39.764433,-105.0220655,39.7644258
-20546,10755,2961,0.0206004250178228,0.0206004250178228,-105.0213448,39.7585398,-105.021139,39.7584434
-6055,3817,5296,0.100909929183789,0.100909929183789,-105.0369844,39.7439438,-105.0381646,39.7439521
-6076,172,1729,0.256606586411632,0.256606586411632,-105.022228,39.6931165,-105.02224,39.6908088
-6122,5349,4219,0.225702767955147,0.225702767955147,-104.9274952,39.692974,-104.928034,39.690987
-6172,5388,1958,0.131227861001577,0.131227861001577,-104.926934,39.709287,-104.9269593,39.708107
-20555,10853,10028,0.0104514157116194,0.0104514157116194,-105.015713,39.7584957,-105.015835,39.7585019
-6194,3028,5401,0.132618210317087,0.132618210317087,-104.9659386,39.7594982,-104.9659547,39.7606908
-18508,10301,9355,0.00184585558113331,0.00184585558113331,-105.0410673,39.7487336,-105.0410672,39.7487502
-6264,1941,5456,0.107892445399082,0.107892445399082,-104.9873753,39.7384618,-104.9861136,39.7384486
-6308,2067,5487,0.0160838439354733,0.0160838439354733,-104.9529898,39.7383752,-104.952802,39.738367
-6329,5502,5503,0.0544715490547718,0.0544715490547718,-104.9799824,39.7600071,-104.9804313,39.7603548
-20506,10834,10840,0.00711722931583218,0.00711722931583218,-105.0246593,39.7608722,-105.0245771,39.760862
-7656,5012,3346,0.092992178848436,0.092992178848436,-104.9582526,39.7728926,-104.9571645,39.7728928
-20397,10758,10759,0.00383951895664098,0.00383951895664098,-105.0243956,39.7608382,-105.0243509,39.7608348
-19830,10649,10650,0.203375176962632,0.203375176962632,-105.0422444,39.7384617,-105.0422095,39.7366329
-18258,6760,7775,0.140758515508444,0.140758515508444,-105.0276064,39.7688141,-105.0259595,39.7688086
-6495,3928,5619,0.089155871041537,0.089155871041537,-105.0017582,39.7648586,-105.0018152,39.7656592
-6517,963,5279,0.100667730658223,0.100667730658223,-104.9838018,39.7183372,-104.9826249,39.7183267
-7856,6469,6470,0.161667024351427,0.161667024351427,-104.9948277,39.7755094,-104.9967193,39.7755268
-14751,929,5933,0.176747364710656,0.176747364710656,-104.9781467,39.7320382,-104.9781588,39.7304487
-6673,3933,5622,0.0990284128542063,0.0990284128542063,-105.0006222,39.7730028,-105.0017809,39.7730094
-14716,5687,933,0.176256990051995,0.176256990051995,-104.9758385,39.7304575,-104.9758289,39.7320426
-20475,10824,10825,0.0252031422821514,0.0252031422821514,-105.0208891,39.7583505,-105.0205943,39.7583468
-6694,5571,5749,0.0485856779635153,0.0485856779635153,-105.0440106,39.7729501,-105.0445791,39.7729494
-6695,5749,5750,0.0408085368300434,0.0408085368300434,-105.0445791,39.7729494,-105.0450566,39.7729489
-3964,1865,3758,0.048211663801055,0.048211663801055,-104.9901799,39.6966614,-104.9907434,39.6966619
-3965,3758,3759,0.0426076537269238,0.0426076537269238,-104.9907434,39.6966619,-104.9912414,39.6966624
-11217,443,444,0.0957304857475106,0.0957304857475106,-104.932837,39.701282,-104.933949,39.701378
-6741,5790,5791,0.0533877005590012,0.0533877005590012,-105.0252043,39.7874266,-105.0258291,39.7874305
-6764,5808,5809,0.0505689128275476,0.0505689128275476,-104.9878972,39.7431235,-104.9873953,39.7433641
-6788,5828,5829,0.0547714293876055,0.0547714293876055,-104.9629082,39.6911444,-104.9622681,39.6911405
-18151,6044,10264,0.200762745716695,0.200762745716695,-105.0210575,39.7856258,-105.0210534,39.7874313
-6809,365,4683,0.0475091694046952,0.0475091694046952,-104.9756534,39.6915619,-104.9751813,39.691337
-6832,5852,1635,0.119748990570207,0.119748990570207,-105.014337,39.714787,-105.015737,39.714787
-18333,7291,3229,0.082496713136994,0.082496713136994,-105.0324737,39.7711548,-105.0324789,39.7718967
-6884,4667,1334,0.0975135676636165,0.0975135676636165,-105.011015,39.7139241,-105.0110016,39.7130472
-6901,5900,2304,0.084800082911027,0.084800082911027,-105.0127248,39.6967417,-105.0127167,39.6959791
-6971,5951,5952,0.0992113626066069,0.0992113626066069,-104.9292349,39.7310503,-104.9280748,39.7310598
-14748,6733,4864,0.192735673325504,0.192735673325504,-104.9782075,39.7368798,-104.9781817,39.7351466
-18279,6738,6739,0.202843884763896,0.202843884763896,-105.0386585,39.7802009,-105.0386693,39.7783767
-7077,898,4479,0.137748361044457,0.137748361044457,-104.9450302,39.764473,-104.945032,39.7657118
-18284,6793,6794,0.0655358337845971,0.0655358337845971,-105.0330596,39.769961,-105.0322928,39.76996
-7099,5645,4359,0.0906469204279695,0.0906469204279695,-104.9452967,39.7557043,-104.9453012,39.7565195
-7124,6037,6038,0.0494419955897028,0.0494419955897028,-105.0158387,39.7856226,-105.0164173,39.7856269
-7168,6071,6072,0.0522594599242274,0.0522594599242274,-105.0415553,39.7856202,-105.0421669,39.7856198
-11649,8349,7711,0.138715670988872,0.138715670988872,-105.0244311,39.7572827,-105.0244311,39.7560352
-11989,8046,6574,0.143315424684023,0.143315424684023,-104.9840288,39.7575763,-104.9828432,39.7584876
-11652,4542,1283,0.131430485325992,0.131430485325992,-105.0220625,39.7578568,-105.0205326,39.7577392
-17217,1908,6114,0.200603968094547,0.200603968094547,-104.9774775,39.7074592,-104.9775313,39.7092628
-20549,10805,10854,0.0404087571222208,0.0404087571222208,-105.0159721,39.7585081,-105.0159697,39.7588715
-11385,8240,8241,0.317652248043028,0.317652248043028,-104.949291,39.7799729,-104.9455738,39.7799622
-15924,9072,9753,0.0703936306326387,0.0703936306326387,-105.0172266,39.7293225,-105.0172454,39.7299554
-18551,9428,7705,0.2040983825575,0.2040983825575,-105.0422446,39.7548692,-105.0422469,39.7567047
-20556,10028,10805,0.0117396717425925,0.0117396717425925,-105.015835,39.7585019,-105.0159721,39.7585081
-20452,10807,10808,0.0757678652544946,0.0757678652544946,-105.0219538,39.7619476,-105.0228402,39.7619433
-7529,6285,2831,0.200979085137746,0.200979085137746,-105.0228094,39.7784186,-105.0227922,39.780226
-15928,9754,5382,0.011733427647939,0.011733427647939,-105.0172883,39.7338911,-105.0174251,39.7338829
-7553,4092,6302,0.0803403744103832,0.0803403744103832,-105.0158347,39.7839964,-105.015828,39.7832739
-7580,6315,3820,0.130703255177956,0.130703255177956,-105.0085636,39.7055461,-105.009791,39.7062461
-7677,1716,6365,0.197561364927668,0.197561364927668,-105.0442424,39.6912702,-105.0442509,39.6894935
-7751,5773,6410,0.160605281527339,0.160605281527339,-104.96707,39.7894676,-104.9686008,39.7903058
-18359,7774,7775,0.0541753575171131,0.0541753575171131,-105.0259637,39.7692958,-105.0259595,39.7688086
-7777,6426,2486,0.134234515445665,0.134234515445665,-105.0170359,39.7777689,-105.0170359,39.7789761
-12252,122,8617,0.0393889261650165,0.0393889261650165,-105.0080327,39.7574052,-105.0083585,39.7576557
-7883,6494,6495,0.00940457999056201,0.00940457999056201,-104.9672196,39.746075,-104.9671096,39.746075
-7884,6495,5423,0.0969372989858353,0.0969372989858353,-104.9671096,39.746075,-104.9659758,39.7460698
-3980,3771,3772,0.0481390459121498,0.0481390459121498,-104.9439848,39.7291098,-104.9445477,39.7291131
-3981,3772,3777,0.0470016129182315,0.0470016129182315,-104.9445477,39.7291131,-104.9450973,39.7291163
-7927,1795,6524,0.13760350708633,0.13760350708633,-104.9792579,39.6947744,-104.9782122,39.6938342
-8001,6561,6562,0.0546858550544455,0.0546858550544455,-104.9862601,39.7241317,-104.9856207,39.7241273
-11445,8257,385,0.474417191747682,0.474417191747682,-105.0155286,39.7835973,-105.009982,39.7834091
-8048,6593,6594,0.0289242599655845,0.0289242599655845,-105.0369834,39.7329675,-105.0373216,39.7329718
-18526,9154,9352,0.0531084744773735,0.0531084744773735,-105.0338562,39.7492256,-105.0336669,39.7487707
-8069,6605,6606,1.2681000346061,1.2681000346061,-104.9246358,39.778404,-104.9098059,39.7780011
-8092,4244,6622,0.082630423756929,0.082630423756929,-104.9827699,39.6966096,-104.9821284,39.6960541
-8093,6622,6623,0.0749027437652235,0.0749027437652235,-104.9821284,39.6960541,-104.9815624,39.6955402
-3996,3787,3788,0.0979026300528609,0.0979026300528609,-104.9590433,39.7291134,-104.9601881,39.7291071
-3997,3788,3789,0.0995935295086316,0.0995935295086316,-104.9601881,39.7291071,-104.9613527,39.7291055
-9386,7325,7326,0.0119980817003928,0.0119980817003928,-104.9541227,39.7800179,-104.954122,39.7801258
-20477,10789,10826,0.0103983863250137,0.0103983863250137,-105.0223762,39.7591046,-105.0223089,39.7591825
-20507,10840,10823,0.00612377712997262,0.00612377712997262,-105.0245771,39.760862,-105.0245064,39.7608531
-8262,841,6717,0.175943907281508,0.175943907281508,-104.9425503,39.7162314,-104.9425532,39.7146491
-9533,7395,7396,0.139422525474238,0.139422525474238,-105.0331,39.7535942,-105.0330742,39.7548479
-20405,10779,8354,0.0261167106000956,0.0261167106000956,-105.02337,39.7605759,-105.0236698,39.7606212
-8335,6764,6765,0.0503863905918892,0.0503863905918892,-105.0276005,39.7707095,-105.0275931,39.7711626
-8336,6765,6766,0.0491492877930629,0.0491492877930629,-105.0275931,39.7711626,-105.0275892,39.7716046
-4013,983,3800,0.100500044528257,0.100500044528257,-104.9740784,39.7290693,-104.9752536,39.7290708
-4014,3800,3801,0.0985249152645202,0.0985249152645202,-104.9752536,39.7290708,-104.9764057,39.7290681
-15231,8248,8334,0.0146425177596963,0.0146425177596963,-104.9245969,39.6962239,-104.9244842,39.6961248
-8409,3830,6807,0.0888447463890759,0.0888447463890759,-104.9241221,39.7061949,-104.9241221,39.7053959
-18321,6063,2543,0.201974991797574,0.201974991797574,-105.0363465,39.7856148,-105.0363411,39.7874312
-8457,6832,1495,0.201208565152389,0.201208565152389,-105.0402255,39.6967584,-105.0402341,39.6949489
-19836,2624,5204,0.178927982846839,0.178927982846839,-105.0008976,39.7225155,-105.000925,39.7241245
-18379,8493,8494,0.0504160144523199,0.0504160144523199,-105.0258941,39.7702117,-105.0258959,39.7706651
-8503,6860,6861,0.0162922756173271,0.0162922756173271,-104.9499587,39.714645,-104.9497683,39.7146491
-8527,3425,6874,0.0494311548712974,0.0494311548712974,-105.034629,39.7657398,-105.0351985,39.7658172
-8599,1237,4811,0.0968243021950299,0.0968243021950299,-105.0123583,39.7765593,-105.0134913,39.7765593
-8699,1327,6954,0.11293333226081,0.11293333226081,-105.0452398,39.7129907,-105.045038,39.711987
-8743,6978,6843,0.0844431261667327,0.0844431261667327,-105.040895,39.7112397,-105.0408778,39.7104804
-8770,6990,6991,0.0486520030390688,0.0486520030390688,-104.931754,39.771293,-104.9317465,39.7717305
-8791,7006,4358,0.202474203830337,0.202474203830337,-104.9316943,39.7546764,-104.9317184,39.7564972
-8792,4358,7007,0.00688683462760985,0.00688683462760985,-104.9317184,39.7564972,-104.9317157,39.7565591
-8840,7032,6092,0.0997655880788332,0.0997655880788332,-105.032262,39.7603311,-105.0322556,39.7612283
-12243,8612,8613,0.138493887289201,0.138493887289201,-105.0007767,39.7499711,-104.9996308,39.7508515
-8862,2493,2840,0.128352303826166,0.128352303826166,-105.0314566,39.7791188,-105.0314566,39.7802731
-8889,7059,4436,0.0844445583973766,0.0844445583973766,-104.9500388,39.7020179,-104.9500303,39.7012585
-15879,8770,8763,0.0140298928163018,0.0140298928163018,-105.0445575,39.7355437,-105.0447184,39.7355684
-12248,5788,8274,0.146502988080446,0.146502988080446,-104.9971819,39.7527381,-104.9959856,39.7536815
-20224,10712,8757,0.0605456526720602,0.0605456526720602,-104.941312,39.6942105,-104.9413115,39.694755
-15789,9625,2105,0.0133775626084498,0.0133775626084498,-105.0249286,39.7370709,-105.0249129,39.7371906
-9093,4150,2344,0.174578433496429,0.174578433496429,-104.9594242,39.720981,-104.9594135,39.719411
-12934,8900,8688,0.0533584685274483,0.0533584685274483,-105.0027294,39.7457477,-105.0030556,39.7453386
-18558,10316,10317,0.318647498327865,0.318647498327865,-105.0343233,39.7828561,-105.03063,39.7832519
-9165,7197,7198,0.272798906116362,0.272798906116362,-104.9405457,39.6929325,-104.9373575,39.6929534
-9189,7209,3616,0.0495666126691076,0.0495666126691076,-104.9809977,39.6930099,-104.9804184,39.6930078
-10453,3743,5856,0.10095556193443,0.10095556193443,-104.9874858,39.7156689,-104.9875046,39.7147611
-20231,10714,10715,0.0286157939247338,0.0286157939247338,-104.9409313,39.6936604,-104.9412314,39.693774
-20392,10774,10770,0.00608971066273246,0.00608971066273246,-105.0243795,39.760698,-105.0244499,39.7607064
-9337,4780,1523,0.0520500965787765,0.0520500965787765,-104.9751815,39.7020519,-104.9745731,39.702049
-20017,8044,6572,0.144143863155146,0.144143863155146,-104.9831794,39.7569094,-104.981987,39.757826
-20561,10856,10798,0.00573758430075899,0.00573758430075899,-105.0218184,39.7619476,-105.0218855,39.7619462
-10672,7485,7454,0.0961864249467466,0.0961864249467466,-105.0275311,39.708526,-105.0275397,39.707661
-15863,9737,9743,0.0881669372882309,0.0881669372882309,-105.0423956,39.7309893,-105.0434068,39.731144
-9436,7346,4173,0.192934476657366,0.192934476657366,-104.9667331,39.7183519,-104.966736,39.720087
-10721,7452,5690,0.129238470693044,0.129238470693044,-105.0420537,39.7080307,-105.0420279,39.7068686
-20510,638,10782,0.00926383363589588,0.00926383363589588,-105.0180723,39.7583468,-105.0179661,39.7583302
-18479,9039,9040,0.136726032574097,0.136726032574097,-105.0398975,39.7511951,-105.0398922,39.7499655
-9591,7412,5066,0.050234753132255,0.050234753132255,-105.0379016,39.716558,-105.0384889,39.7165547
-9612,2128,5998,0.154063403679123,0.154063403679123,-104.9275725,39.7628734,-104.9257702,39.7628567
-16186,7721,5815,0.197248711738883,0.197248711738883,-104.9845556,39.6894094,-104.9845543,39.6911833
-9637,1423,7186,0.128478917444104,0.128478917444104,-105.0369066,39.7820848,-105.0369189,39.7832402
-11449,8259,8260,0.319737139262779,0.319737139262779,-104.9757153,39.7797326,-104.9794547,39.7798315
-9690,1895,7457,0.0666302144465139,0.0666302144465139,-104.9875851,39.7075228,-104.9883639,39.7075324
-9691,7457,7458,0.0198488245240688,0.0198488245240688,-104.9883639,39.7075324,-104.9885959,39.7075353
-19476,10519,10520,0.0516997558936505,0.0516997558936505,-104.9902831,39.708118,-104.9902917,39.7076531
-9736,7494,5544,0.102560827713484,0.102560827713484,-105.0416791,39.7511831,-105.0416664,39.7521054
-16038,9802,9796,0.0179822727083053,0.0179822727083053,-105.0123441,39.6891881,-105.0121361,39.6892112
-11790,6564,8037,0.143771757250665,0.143771757250665,-104.9784697,39.7551079,-104.9796416,39.7541805
-9810,7528,7529,0.208257062216787,0.208257062216787,-104.9281699,39.7546826,-104.9282316,39.7565549
-9836,7542,7543,0.0265476903097887,0.0265476903097887,-105.0449552,39.7669613,-105.0449615,39.7672
-18631,9484,7408,0.179068927816078,0.179068927816078,-105.0330762,39.7149479,-105.0330817,39.7165583
-15241,9537,9539,0.0227628365288052,0.0227628365288052,-104.935374,39.7058529,-104.9351084,39.7058405
-20526,1286,10810,0.0112823826001832,0.0112823826001832,-105.020542,39.7581637,-105.0204422,39.7580973
-9968,7619,7620,0.0778364486506147,0.0778364486506147,-104.939234,39.787086,-104.939234,39.787786
-9969,7620,7621,0.111522724623373,0.111522724623373,-104.939234,39.787786,-104.939134,39.788786
-9988,7625,1491,0.204666735578584,0.204666735578584,-105.0061725,39.696731,-105.0061812,39.6948904
-10072,7660,2775,0.203041970554709,0.203041970554709,-104.9246105,39.7656064,-104.9245856,39.7674323
-10073,2775,6897,0.203220599619524,0.203220599619524,-104.9245856,39.7674323,-104.9246113,39.7692598
-10091,7671,690,0.200329217944331,0.200329217944331,-104.9246387,39.7401205,-104.9246436,39.7419221
-10115,2354,4156,0.173430880829093,0.173430880829093,-104.947365,39.719411,-104.9473677,39.7209707
-10138,3577,5644,0.141664156461633,0.141664156461633,-104.9476756,39.7544343,-104.9476672,39.7557083
-10164,7702,7703,0.0486413772868685,0.0486413772868685,-105.0393233,39.756708,-105.0398923,39.7567045
-10187,7030,7715,0.0498024158316235,0.0498024158316235,-105.0322599,39.7566691,-105.0328425,39.7566691
-12249,8274,8295,0.153451254229228,0.153451254229228,-104.9959856,39.7536815,-104.9947185,39.754659
-11642,1281,8347,0.0589263897659084,0.0589263897659084,-105.0205312,39.7553029,-105.0198419,39.7552988
-10281,7757,2638,0.20261361621015,0.20261361621015,-105.0151648,39.7202486,-105.015182,39.7220707
-12251,8616,122,0.0306511482720316,0.0306511482720316,-105.0077835,39.757207,-105.0080327,39.7574052
-10351,5524,6462,0.155650660428743,0.155650660428743,-105.0392946,39.7738629,-105.0392949,39.7752627
-11777,5360,8407,0.147060404896327,0.147060404896327,-104.9803323,39.7509836,-104.9815533,39.750052
-20362,10734,9209,0.0303997458302742,0.0303997458302742,-105.0220514,39.7585674,-105.0216966,39.7585487
-10404,4224,7568,0.0462000499013743,0.0462000499013743,-104.9869346,39.7873956,-104.9863939,39.7873956
-10427,5696,6320,0.173275054190131,0.173275054190131,-105.0371184,39.7071789,-105.0371184,39.7056206
-16041,9802,9797,0.0106947269448384,0.0106947269448384,-105.0123441,39.6891881,-105.0122561,39.6891198
-10504,1036,7842,0.0544400914304572,0.0544400914304572,-104.9622462,39.751954,-104.9616094,39.7519514
-12047,8526,8527,0.0840721683590618,0.0840721683590618,-105.0049596,39.7505226,-105.0054168,39.751192
-10550,4923,5368,0.0856922507743825,0.0856922507743825,-104.9929606,39.7331034,-104.9929409,39.7338739
-16085,9818,9819,0.0412898984205639,0.0412898984205639,-104.9498899,39.7811457,-104.950362,39.7810666
-10600,7873,7874,0.202540822887829,0.202540822887829,-104.9558976,39.7801127,-104.9558736,39.7819341
-10623,7886,1192,0.167316235534945,0.167316235534945,-104.9566946,39.7256155,-104.9567021,39.7271202
-20558,10845,2957,0.00878460299692283,0.00878460299692283,-105.0187438,39.7583413,-105.0187431,39.7584203
-10644,7563,7901,0.105394463133352,0.105394463133352,-104.9922506,39.7545528,-104.9931346,39.7552135
-12237,1599,8609,0.00546433627657245,0.00546433627657245,-105.0021858,39.7415267,-105.0022412,39.7415022
-20564,10825,1287,0.00477901915260098,0.00477901915260098,-105.0205943,39.7583468,-105.0205384,39.7583461
-10749,6942,7958,0.162394709841225,0.162394709841225,-104.9677319,39.7819277,-104.967835,39.783386
-10796,7983,947,0.174677658409185,0.174677658409185,-104.9540572,39.7305236,-104.9540658,39.7320945
-10817,6492,4607,0.147058520431446,0.147058520431446,-104.9747749,39.7461601,-104.9747635,39.7448376
-12476,5450,5427,0.050269770055972,0.050269770055972,-104.9704932,39.6929632,-104.9699057,39.6929673
-10839,6220,8004,0.052907543789053,0.052907543789053,-104.9752801,39.7395432,-104.9752839,39.740019
-15731,7157,8801,0.0199400844261404,0.0199400844261404,-104.9592821,39.716079,-104.9590492,39.7160869
-16956,10040,9425,0.0116537581995054,0.0116537581995054,-105.0167064,39.7549204,-105.0167051,39.7548156
-10942,4686,4956,0.099446723287275,0.099446723287275,-104.9940692,39.730515,-104.9952321,39.7305115
-16188,7203,1784,0.197361998677517,0.197361998677517,-104.9845476,39.6930151,-104.9845583,39.69479
-10964,6721,4791,0.136892276030183,0.136892276030183,-105.0112289,39.7310568,-105.0128297,39.7310587
-10986,5402,3133,0.105232928623448,0.105232928623448,-104.9659547,39.7607434,-104.9647236,39.7607393
-20369,10733,10746,0.00402873670536954,0.00402873670536954,-105.0236546,39.7589766,-105.0236226,39.75895
-12735,8822,7751,0.202267643963295,0.202267643963295,-104.9371703,39.6875009,-104.9371553,39.6893199
-16205,7728,5823,0.195806305910918,0.195806305910918,-104.9798585,39.6893971,-104.9798455,39.691158
-15885,9619,8879,0.0100154912435563,0.0100154912435563,-105.0382355,39.7340565,-105.0382757,39.7341411
-16189,1784,4247,0.203808666270494,0.203808666270494,-104.9845583,39.69479,-104.984534,39.6966228
-11109,8035,807,0.0159273560245565,0.0159273560245565,-104.9781265,39.7531137,-104.9781222,39.7532569
-11132,8133,6270,0.051417429454822,0.051417429454822,-104.9615993,39.7482178,-104.960998,39.748227
-11156,2087,2654,0.0953557861022671,0.0953557861022671,-104.9530315,39.7837193,-104.9519157,39.7837325
-11157,2654,4115,0.0506170186006763,0.0506170186006763,-104.9519157,39.7837325,-104.9513234,39.7837391
-11208,8161,8162,0.355822290917686,0.355822290917686,-104.9406062,39.7114203,-104.936452,39.711255
-11220,8169,106,0.241259609778708,0.241259609778708,-104.928834,39.700221,-104.931654,39.700221
-11240,8178,8182,0.0195790567337129,0.0195790567337129,-104.9340806,39.7042496,-104.9340007,39.7044146
-20821,8330,10923,0.00839528658401215,0.00839528658401215,-105.0382057,39.7621211,-105.0382061,39.7620456
-17791,3305,8508,0.0362477709828647,0.0362477709828647,-104.9874361,39.7582757,-104.9873985,39.757951
-11322,8214,5950,0.203024250253409,0.203024250253409,-104.9304515,39.7292344,-104.9304356,39.7310602
-13061,8944,8945,0.0479106655937031,0.0479106655937031,-104.9951643,39.7677183,-104.9946559,39.7678998
-11349,1754,4801,0.0245317247967943,0.0245317247967943,-105.0124896,39.7620198,-105.0127766,39.7620198
-11390,8244,8245,0.0389791405679458,0.0389791405679458,-104.9498727,39.781647,-104.9495723,39.7819108
-17817,9286,10185,0.00969626713044654,0.00969626713044654,-105.0165836,39.7450617,-105.0166938,39.7450411
-11462,8270,701,0.039999373678842,0.039999373678842,-104.9314164,39.7801263,-104.9318804,39.7801737
-11492,8281,8282,0.00503511807894305,0.00503511807894305,-104.9929142,39.7513421,-104.9928753,39.7513081
-11538,8302,8303,0.0107298944611382,0.0107298944611382,-105.0266827,39.760929,-105.0265595,39.7609475
-11571,7713,8322,0.206137749537799,0.206137749537799,-105.0304918,39.7566748,-105.0305079,39.754821
-11573,1766,7715,0.157141019260281,0.157141019260281,-105.0334284,39.7553296,-105.0328425,39.7566691
-13237,9010,4325,0.222509982407309,0.222509982407309,-105.0324492,39.7058187,-105.0350499,39.7058517
-11632,1278,4529,0.134276517370514,0.134276517370514,-105.0205102,39.7524035,-105.0220809,39.7524035
-11724,8374,8375,0.133513247237079,0.133513247237079,-105.0357895,39.7499869,-105.0357821,39.7511876
-11797,8414,4446,0.0913151320718964,0.0913151320718964,-104.9779515,39.7575475,-104.9781251,39.7567372
-11798,4446,6565,0.148651456771305,0.148651456771305,-104.9781251,39.7567372,-104.9793644,39.7557994
-11799,6565,8038,0.145022863674794,0.145022863674794,-104.9793644,39.7557994,-104.9805458,39.7548634
-13411,4426,9064,0.0342337858603608,0.0342337858603608,-104.998467,39.7666069,-104.9980982,39.766727
-11882,8457,1807,0.101184879886606,0.101184879886606,-105.0067213,39.7517064,-105.0073479,39.7524784
-13518,7635,7602,0.0983630321096794,0.0983630321096794,-105.025114,39.7275076,-105.025114,39.7283922
-11995,8048,6576,0.143165005086162,0.143165005086162,-104.9849005,39.7582519,-104.9837118,39.7591589
-12062,8532,3932,0.283100338690813,0.283100338690813,-104.9548313,39.7460446,-104.9574881,39.7475642
-12064,8532,3745,0.0315839509500456,0.0315839509500456,-104.9548313,39.7460446,-104.9546644,39.7457912
-12065,3745,8533,0.0402006397458181,0.0402006397458181,-104.9546644,39.7457912,-104.9542138,39.7458945
-16198,1788,6622,0.140253824514813,0.140253824514813,-104.9821522,39.6947929,-104.9821284,39.6960541
-12143,2334,7677,0.0942814693046897,0.0942814693046897,-104.9238826,39.7256356,-104.924985,39.7256294
-13771,2561,9189,0.0689861433647756,0.0689861433647756,-104.9942282,39.6920823,-104.9938171,39.6915486
-18571,10322,10326,0.0103554459054315,0.0103554459054315,-105.0341731,39.7804672,-105.0340524,39.7804589
-15556,9654,9655,0.107168580692288,0.107168580692288,-104.9768244,39.7184001,-104.9773908,39.7192598
-12220,8596,8597,0.100597506592905,0.100597506592905,-105.007127,39.7436106,-105.0075587,39.7444522
-12284,8235,7279,0.114584410389232,0.114584410389232,-105.002653,39.7588064,-105.0017875,39.7595933
-12290,8634,8488,0.146216431524827,0.146216431524827,-104.9972254,39.7453524,-104.9959984,39.7462684
-15445,9605,9606,0.0107985098434616,0.0107985098434616,-105.000722,39.7440195,-105.0007281,39.7441165
-12402,8686,2352,0.174110261708509,0.174110261708509,-104.9497874,39.7178534,-104.9497951,39.7194192
-12403,2352,4154,0.17319721774215,0.17319721774215,-104.9497951,39.7194192,-104.9497951,39.7209768
-12445,8705,902,0.277961591263562,0.277961591263562,-104.9404928,39.7619574,-104.9404687,39.7644571
-16201,7209,5822,0.204832695484964,0.204832695484964,-104.9809977,39.6930099,-104.9810031,39.6911678
-14071,3116,6673,0.099476803467174,0.099476803467174,-104.9350959,39.7113475,-104.9362583,39.7113747
-12563,729,7060,0.0981255480039199,0.0981255480039199,-104.9511904,39.6947719,-104.9500436,39.6947813
-12670,8793,5460,0.173942223750684,0.173942223750684,-104.9823009,39.7368732,-104.9823009,39.7384375
-12698,8808,8810,0.00713796130621387,0.00713796130621387,-104.9500032,39.7176723,-104.9500622,39.7177177
-12701,2643,8805,0.104981962462916,0.104981962462916,-104.9521735,39.7182139,-104.9534009,39.718219
-12721,3633,3295,0.250204598549556,0.250204598549556,-104.9408419,39.7060696,-104.9407838,39.7038199
-16683,9985,9930,0.0816514509832002,0.0816514509832002,-105.0060701,39.7427445,-105.0053557,39.7432318
-12762,3506,8170,0.201022944642928,0.201022944642928,-104.9406406,39.6983765,-104.9405886,39.7001839
-15870,8842,8843,0.0221571458561984,0.0221571458561984,-105.0381819,39.7339575,-105.0382728,39.7337709
-15950,9765,9766,0.0194093177763062,0.0194093177763062,-104.9988186,39.7053295,-104.9990439,39.7053089
-12930,3167,8897,0.107237063498964,0.107237063498964,-105.00401,39.7438456,-105.0051222,39.7433998
-14520,3985,7053,0.133213475028965,0.133213475028965,-105.0299452,39.769416,-105.0315035,39.7694414
-15337,9564,9565,0.0333323202761363,0.0333323202761363,-104.9659399,39.7170729,-104.965948,39.7173726
-15952,9765,9758,0.0491105082028732,0.0491105082028732,-104.9988186,39.7053295,-104.9982473,39.7053729
-13016,8918,8921,0.143291466888449,0.143291466888449,-104.9947937,39.769857,-104.9945399,39.7685832
-13097,8917,8959,0.032086215385934,0.032086215385934,-104.9949225,39.7698636,-104.9949911,39.7695799
-13121,640,8968,0.045462010282231,0.045462010282231,-104.9875489,39.7695895,-104.9879458,39.7698617
-13175,4472,2794,0.133415072213096,0.133415072213096,-104.9559081,39.7657294,-104.9559387,39.766929
-13447,9080,4647,0.227691913723815,0.227691913723815,-105.0212418,39.7253265,-105.0186451,39.7248745
-19029,7690,8144,0.0861073402797158,0.0861073402797158,-104.9475732,39.784427,-104.9481599,39.7837974
-13280,4312,7812,0.197562058294396,0.197562058294396,-105.0344662,39.7021142,-105.0367751,39.7021472
-20373,10757,10758,0.0390214492856105,0.0390214492856105,-105.0243898,39.7611891,-105.0243956,39.7608382
-13466,9093,9091,0.0528525628364664,0.0528525628364664,-105.0183719,39.7253071,-105.0189899,39.7253071
-15458,1970,8766,0.0532545399938913,0.0532545399938913,-105.0018024,39.7442826,-105.0021048,39.7447013
-13600,2311,6580,0.108271978342533,0.108271978342533,-105.0112958,39.7314875,-105.0113223,39.732461
-13622,3355,9148,0.0901126087179192,0.0901126087179192,-104.9338318,39.7292375,-104.9327781,39.7292306
-15127,8268,225,0.129419996314042,0.129419996314042,-104.9407004,39.7790485,-104.9407032,39.7778846
-15855,9737,9738,0.0422997339419691,0.0422997339419691,-105.0423956,39.7309893,-105.0423031,39.7306156
-15953,9758,9764,0.0382745737843307,0.0382745737843307,-104.9982473,39.7053729,-104.9984431,39.7056824
-13641,9152,327,0.371274069669657,0.371274069669657,-104.9968785,39.7078836,-104.9987289,39.7109039
-13690,6833,6976,0.085342873664165,0.085342873664165,-105.0400351,39.6894654,-105.0410323,39.6894803
-15860,9707,9741,0.0544957036472965,0.0544957036472965,-105.039492,39.7313626,-105.038896,39.7315361
-13709,6929,3818,0.116035215256342,0.116035215256342,-105.0093602,39.6967483,-105.0107164,39.6967417
-15411,7964,9590,0.052042549974644,0.052042549974644,-105.0005794,39.7440362,-105.0001457,39.7443646
-18495,15,6384,0.132622389900901,0.132622389900901,-105.0351824,39.7463725,-105.0351851,39.7475652
-18578,10319,10327,0.0490398009212077,0.0490398009212077,-105.0275696,39.7818193,-105.0271244,39.7820976
-13818,8483,6705,0.147706661087796,0.147706661087796,-104.9942509,39.7449031,-104.9930306,39.7458434
-13972,9250,9251,0.0609360549506678,0.0609360549506678,-105.0144838,39.7291094,-105.0147648,39.729613
-20378,10761,10762,0.0703070927126279,0.0703070927126279,-105.0250806,39.7603661,-105.0243849,39.7600288
-14062,6351,2574,0.0264285559063396,0.0264285559063396,-104.9499571,39.7092328,-104.949965,39.7089952
-4057,542,3837,0.0481841661951123,0.0481841661951123,-105.0428359,39.7516736,-105.0428292,39.7521069
-20619,10811,10850,0.0311826470096292,0.0311826470096292,-105.022998,39.7596958,-105.0226484,39.7596157
-14143,9286,9287,0.00349243594701226,0.00349243594701226,-105.0165836,39.7450617,-105.0165756,39.7450309
-15782,2533,9708,0.0671466764878958,0.0671466764878958,-105.0240058,39.7380698,-105.0237619,39.7374958
-18700,1376,9773,0.0602159412724284,0.0602159412724284,-105.0390952,39.7117746,-105.0390872,39.7112331
-19501,10528,10529,0.0145223093781074,0.0145223093781074,-104.9883708,39.7066508,-104.9883718,39.7065202
-16094,9821,9496,0.0522797219291825,0.0522797219291825,-104.9498895,39.7799931,-104.9498734,39.7795231
-16682,9984,9985,0.111071610148866,0.111071610148866,-105.0071843,39.7422309,-105.0060701,39.7427445
-16220,9022,9008,0.10706671130041,0.10706671130041,-105.0274035,39.6987105,-105.0261751,39.6985266
-16222,9850,7740,0.404338691233817,0.404338691233817,-104.9564159,39.6856969,-104.9564079,39.6893332
-16223,7740,5835,0.200008410058821,0.200008410058821,-104.9564079,39.6893332,-104.9563972,39.6911319
-14438,6143,4017,0.133566629484228,0.133566629484228,-105.0283819,39.7487852,-105.0299442,39.7487903
-14458,9168,3834,0.0502958887489777,0.0502958887489777,-105.0422474,39.7487571,-105.0428357,39.748759
-16499,8709,8890,0.00781309402153006,0.00781309402153006,-105.0028925,39.7443552,-105.0029709,39.7443191
-14504,9364,2172,0.0261972288759813,0.0261972288759813,-105.0143742,39.7692739,-105.0146807,39.7692764
-16631,9312,9964,0.536418418139307,0.536418418139307,-104.9787525,39.7399405,-104.9850261,39.7399281
-16632,9964,9965,0.081644512591407,0.081644512591407,-104.9850261,39.7399281,-104.9859809,39.7399196
-15472,8892,1971,0.0354218020701201,0.0354218020701201,-105.0008068,39.745167,-105.0012102,39.7450944
-14617,9402,9350,0.13375643872535,0.13375643872535,-105.0252747,39.7548256,-105.0252762,39.7536227
-14954,7265,7584,0.0944614970989242,0.0944614970989242,-104.937233,39.7546682,-104.936128,39.7546682
-4076,3852,3853,0.00162344592902021,0.00162344592902021,-105.0428243,39.7765465,-105.0428243,39.7765611
-15099,7228,2370,0.054925658104601,0.054925658104601,-104.9964723,39.7592924,-104.9971148,39.759299
-16381,9878,9879,0.0338421848775343,0.0338421848775343,-104.971336,39.7034463,-104.9716243,39.7032379
-16508,9928,9929,0.0170279633676167,0.0170279633676167,-105.0062945,39.7430132,-105.0061216,39.7430892
-16525,5158,7669,0.0405110122092171,0.0405110122092171,-104.9248331,39.7295029,-104.9245319,39.7297841
-16594,9950,9951,0.140650325269802,0.140650325269802,-104.9990547,39.7486029,-104.9979162,39.749516
-17419,10101,10102,0.0281887857345848,0.0281887857345848,-104.9831564,39.6890637,-104.9832476,39.6893073
-16852,9866,6519,0.0479747206312546,0.0479747206312546,-104.9586795,39.6929681,-104.9581188,39.6929673
-16968,10038,10045,0.00348952632939911,0.00348952632939911,-105.0168024,39.7557524,-105.0168432,39.7557514
-17638,10159,9498,0.0561256700305383,0.0561256700305383,-104.9503671,39.7793277,-104.949868,39.7789996
-17642,8238,524,0.198799957504709,0.198799957504709,-104.9470651,39.7802508,-104.9493835,39.780399
-17105,331,10064,0.12693044123038,0.12693044123038,-104.9522901,39.745499,-104.9521145,39.7466325
-17422,10082,10083,0.0318734478115971,0.0318734478115971,-104.9834085,39.6888408,-104.9836553,39.6886261
-17268,4260,3518,0.200851927356296,0.200851927356296,-104.9623073,39.6965813,-104.9623127,39.6983876
-17398,7305,3261,0.198983160217956,0.198983160217956,-104.9669227,39.7020659,-104.9668678,39.7038549
-17400,3509,4251,0.199228485757107,0.199228485757107,-104.9680976,39.6983824,-104.968103,39.6965907
-17911,4835,9197,0.134589353492833,0.134589353492833,-105.0001358,39.7148074,-104.9985624,39.7147937
-17544,8941,8264,0.168906883412351,0.168906883412351,-104.9897554,39.7854547,-104.9897645,39.7839357
-18155,10135,10136,0.408197365852498,0.408197365852498,-105.023387,39.7874357,-105.0233776,39.7911067
-17572,10145,10146,0.0800519816931861,0.0800519816931861,-105.0183186,39.7308259,-105.0192547,39.73083
-17628,2882,8136,0.162489310093733,0.162489310093733,-104.9592584,39.7852492,-104.9592611,39.7837879
-18601,10335,7656,0.178628836370645,0.178628836370645,-105.0432472,39.729877,-105.0432633,39.7282706
-17816,9287,10184,0.0350560568035198,0.0350560568035198,-105.0165756,39.7450309,-105.0162526,39.7452251
-17966,6242,10236,0.0113656789072773,0.0113656789072773,-104.9882366,39.7256418,-104.9882388,39.7255396
-17886,9955,4390,0.0561034767074801,0.0561034767074801,-104.98691,39.7485653,-104.9873785,39.7489186
-17918,5173,6867,0.199959252458115,0.199959252458115,-104.9856359,39.7165436,-104.9856575,39.7147454
-17919,6867,5276,0.0971272913038605,0.0971272913038605,-104.9856575,39.7147454,-104.9856735,39.713872
-19066,5495,9469,0.177422724680083,0.177422724680083,-104.9407458,39.7383041,-104.9407436,39.7367085
-19037,9496,9494,0.0281063525870562,0.0281063525870562,-104.9498734,39.7795231,-104.9496925,39.779312
-18774,9642,7121,0.176777734913143,0.176777734913143,-105.0008766,39.7368756,-105.000878,39.7352858
-19101,10429,10049,0.0400790686743565,0.0400790686743565,-105.0000136,39.7493831,-105.0003395,39.7496422
-19617,10477,10588,0.0688805182452796,0.0688805182452796,-104.9902547,39.7104857,-104.9910599,39.7104919
-19314,6700,5030,0.15289416238876,0.15289416238876,-104.9873849,39.7414911,-104.987378,39.7401161
-19425,36,3535,0.208182345564595,0.208182345564595,-104.9809867,39.7002821,-104.9809732,39.6984099
-19426,3535,4231,0.197905943796208,0.197905943796208,-104.9809732,39.6984099,-104.9809651,39.6966301
-19462,10478,10483,0.0205384885375563,0.0205384885375563,-104.9902571,39.7102784,-104.9902592,39.7100937
-19725,4489,10627,0.00886289645656064,0.00886289645656064,-105.0052547,39.734614,-105.0051511,39.7346116
-19764,5140,5153,0.0242552277861381,0.0242552277861381,-104.9325581,39.7331296,-104.9324587,39.7333339
-20136,2752,6988,0.0528412012093399,0.0528412012093399,-104.9326896,39.7401271,-104.9320716,39.7401271
-19927,4579,8367,0.130318576605927,0.130318576605927,-105.0358145,39.741514,-105.035848,39.7426857
-20000,10690,8645,0.0319530891427096,0.0319530891427096,-105.0042718,39.7504958,-105.0040083,39.7506996
-4106,1534,3875,0.0874992877759652,0.0874992877759652,-104.944148,39.7574036,-104.944148,39.7581905
-20047,9078,9193,0.27590001979893,0.27590001979893,-104.9941364,39.7021826,-104.9954572,39.7044462
-397,400,401,0.186988741368815,0.186988741368815,-105.00936,39.7403456,-105.0115284,39.740564
-398,401,402,0.0834459188949902,0.0834459188949902,-105.0115284,39.740564,-105.0124556,39.7407982
-400,403,313,0.0512719310633618,0.0512719310633618,-104.970135,39.780686,-104.970735,39.780686
-402,404,405,0.135745743044228,0.135745743044228,-105.0090936,39.725822,-105.0106325,39.7261211
-404,406,407,0.304825723005793,0.304825723005793,-105.0107416,39.7261622,-105.0123607,39.72372
-406,408,409,0.43926972528011,0.43926972528011,-105.0014039,39.7148758,-104.9995495,39.7111919
-408,410,411,0.386425449179561,0.386425449179561,-105.0296018,39.7254255,-105.0251128,39.7250295
-410,412,413,0.296429557961552,0.296429557961552,-105.0287256,39.7838921,-105.0252567,39.7839187
-411,413,414,0.0146716283322865,0.0146716283322865,-105.0252567,39.7839187,-105.025085,39.7839187
-412,414,415,0.325808855480319,0.325808855480319,-105.025085,39.7839187,-105.0212787,39.7837465
-414,416,328,0.121195048255912,0.121195048255912,-104.9487461,39.7445647,-104.9500765,39.7441885
-416,329,416,0.287289513548727,0.287289513548727,-104.951939,39.7453698,-104.9487461,39.7445647
-417,416,417,0.245312696429149,0.245312696429149,-104.9487461,39.7445647,-104.9458794,39.7444723
-20053,1955,8185,0.122183214039011,0.122183214039011,-104.9375707,39.7122386,-104.936636,39.7114077
-20198,8571,5783,0.145694845246542,0.145694845246542,-104.9953197,39.7494633,-104.9941411,39.7504097
-14833,7026,8320,0.0139341057083995,0.0139341057083995,-105.0315379,39.7548347,-105.0317009,39.7548347
-14834,8320,7029,0.0476978989477955,0.0476978989477955,-105.0317009,39.7548347,-105.0322588,39.7548413
-15442,9600,8606,0.035907314389173,0.035907314389173,-105.0002179,39.7415263,-105.0005878,39.7413734
-19656,10607,10531,0.00409092160847847,0.00409092160847847,-104.9883278,39.7060132,-104.9883756,39.7060143
-20737,10917,10886,0.0142612706482701,0.0142612706482701,-105.0397934,39.7652927,-105.0396293,39.7653159
-14870,9363,2450,0.140513945011527,0.140513945011527,-105.0053953,39.7692764,-105.0054661,39.7705389
-11514,269,270,0.151462432210479,0.151462432210479,-105.0281511,39.7598548,-105.029923,39.7598619
-12364,8672,8674,0.0109017354569362,0.0109017354569362,-105.011589,39.7530795,-105.011632,39.7531718
-12,12,13,0.134681710739383,0.134681710739383,-105.0299361,39.7463759,-105.0315114,39.7463778
-14892,8103,9009,0.099173697837006,0.099173697837006,-105.0324492,39.7031047,-105.0324149,39.7022132
-14893,9009,8146,0.0976735888216106,0.0976735888216106,-105.0324149,39.7022132,-105.0324321,39.7013349
-33,36,37,0.0487053100188426,0.0487053100188426,-104.9809867,39.7002821,-104.9804174,39.7002821
-14912,7271,7600,0.0956539249415721,0.0956539249415721,-104.9373374,39.7208988,-104.936219,39.7208978
-18874,7987,218,0.124810113553517,0.124810113553517,-104.9874076,39.7007261,-104.9862918,39.700003
-18876,3520,84,0.204554290109371,0.204554290109371,-104.961154,39.6983849,-104.9611564,39.7002245
-15454,8884,9611,0.0785818613777641,0.0785818613777641,-105.0010815,39.7421312,-105.0002927,39.7424939
-322,154,206,0.0287029588335131,0.0287029588335131,-104.9570001,39.7445158,-104.9566644,39.7445134
-18627,9483,1310,0.220178764490314,0.220178764490314,-105.0332559,39.7113941,-105.033071,39.7133691
-18894,10375,10376,0.00936614397970835,0.00936614397970835,-105.0119408,39.7500586,-105.0120158,39.75012
-15122,8269,9491,0.0542877044701678,0.0542877044701678,-104.9404976,39.7792513,-104.9405035,39.7797395
-18715,7650,8069,0.263314494448216,0.263314494448216,-105.0378319,39.7282456,-105.0378507,39.7306136
-15971,8998,4214,0.0961806119218467,0.0961806119218467,-105.0168967,39.7111539,-105.0180211,39.7111539
-551,544,545,0.0205710614294522,0.0205710614294522,-105.034963,39.736586,-105.034963,39.736401
-15166,7386,9508,0.0293624650986513,0.0293624650986513,-105.0330679,39.7403194,-105.0334112,39.7403128
-18679,2589,1852,0.179197761430995,0.179197761430995,-105.0367321,39.7229406,-105.0367134,39.7213291
-602,593,594,0.0187536593392831,0.0187536593392831,-104.9689126,39.70386,-104.9686935,39.7038655
-16091,9818,526,0.0930965533879819,0.0930965533879819,-104.9498899,39.7811457,-104.9499002,39.7803085
-13959,448,9111,0.0841767201213853,0.0841767201213853,-105.0126579,39.7258229,-105.0136091,39.7256283
-16119,427,4010,0.113680084788302,0.113680084788302,-105.028564,39.7403785,-105.0298922,39.7403326
-17947,10226,10227,0.0385043082181171,0.0385043082181171,-104.9872048,39.7236101,-104.9869878,39.7233067
-16175,7201,5812,0.201274753121947,0.201274753121947,-104.9868436,39.6930068,-104.9868503,39.6911967
-699,693,694,0.0993204992661042,0.0993204992661042,-104.9535885,39.7419889,-104.9524269,39.7419829
-16265,9865,7738,0.345896015945794,0.345896015945794,-104.958709,39.6862164,-104.9586954,39.6893271
-16341,9873,8704,0.014474001055321,0.014474001055321,-104.9406644,39.7617801,-104.9404955,39.7617894
-11688,774,775,0.0224766779818413,0.0224766779818413,-105.0018298,39.7532062,-105.0016626,39.7533622
-16464,1081,9912,0.0130855777393443,0.0130855777393443,-104.972547,39.7069966,-104.9726409,39.7070895
-18428,2983,10286,0.340223280394145,0.340223280394145,-105.038723,39.7584839,-105.0387191,39.7554242
-16719,485,10003,0.0666623735199971,0.0666623735199971,-104.9862761,39.7027725,-104.9862718,39.703372
-18212,2988,7850,0.201655156198778,0.201655156198778,-105.0422605,39.7584955,-105.0422473,39.760309
-18213,7850,6382,0.201197176818258,0.201197176818258,-105.0422473,39.760309,-105.042255,39.7621184
-17132,1799,4238,0.205173852791716,0.205173852791716,-104.9763617,39.694761,-104.9763404,39.6966061
-268,278,279,0.0669047721045728,0.0669047721045728,-104.9876105,39.7785645,-104.987002,39.7789431
-18436,10287,10292,0.102997198003519,0.102997198003519,-105.0292196,39.7613906,-105.0280151,39.7614164
-17134,3543,44,0.198313047920784,0.198313047920784,-104.9763295,39.6984254,-104.9763617,39.7002087
-15194,7392,9524,0.0521516926212219,0.0521516926212219,-105.0330703,39.7500019,-105.0336803,39.7499978
-19559,10563,10553,0.0196751082256841,0.0196751082256841,-104.9888131,39.7091506,-104.9890431,39.7091518
-19864,10666,10667,0.12344950946071,0.12344950946071,-105.03696,39.7374437,-105.0363945,39.7384652
-1022,827,1037,0.134288205933024,0.134288205933024,-104.9622082,39.7532291,-104.9622266,39.7544367
-19991,10682,10649,0.0504069045792634,0.0504069045792634,-105.0416549,39.7384584,-105.0422444,39.7384617
-327,328,329,0.206425005842362,0.206425005842362,-104.9500765,39.7441885,-104.951939,39.7453698
-15245,9540,9541,0.00803794786000152,0.00803794786000152,-104.9356634,39.7056506,-104.93572,39.7055929
-14681,446,727,0.207769052846247,0.207769052846247,-104.9699934,39.7219574,-104.9700021,39.7200889
-18636,1846,2580,0.177268272488638,0.177268272488638,-105.0330898,39.7213326,-105.0330978,39.7229268
-15883,9594,8842,0.0247081602797847,0.0247081602797847,-105.0379029,39.7340153,-105.0381819,39.7339575
-18445,1124,10289,0.0496295455281554,0.0496295455281554,-105.0404721,39.7607638,-105.0398915,39.7607667
-15483,9622,9623,0.0434553081653394,0.0434553081653394,-105.0002589,39.7457416,-105.0006156,39.7454632
-15784,9596,2105,0.0159980383240888,0.0159980383240888,-105.0247945,39.7370792,-105.0249129,39.7371906
-18450,7849,2986,0.202541671618508,0.202541671618508,-105.0410779,39.7603102,-105.0410754,39.7584887
-15540,1221,8429,0.105180771417586,0.105180771417586,-105.0123509,39.7369148,-105.0135809,39.7369043
-17095,3719,3720,0.174398206796096,0.174398206796096,-104.9604099,39.7383822,-104.9604079,39.7368138
-12950,1330,1331,0.0133918888831226,0.0133918888831226,-105.0020771,39.7434247,-105.0019226,39.7434049
-19570,10569,7462,0.00803939319633032,0.00803939319633032,-104.9895239,39.707619,-104.9895239,39.7075467
-1312,1338,1339,0.0991205046552405,0.0991205046552405,-105.016828,39.7130093,-105.0179868,39.7130093
-15958,9768,9769,0.0623405517746533,0.0623405517746533,-105.0005192,39.711198,-105.0002214,39.7106863
-325,268,153,0.064083026712354,0.064083026712354,-104.9564977,39.7449464,-104.9572293,39.7448211
-386,388,389,0.0751873239589982,0.0751873239589982,-104.9994213,39.713266,-105.0001337,39.7136621
-1392,1419,1420,0.399589215327938,0.399589215327938,-105.0017224,39.7819937,-105.0063986,39.7819993
-16282,9096,9098,0.0807475840805468,0.0807475840805468,-105.0171656,39.7251183,-105.0162316,39.725012
-391,393,394,0.185819928048464,0.185819928048464,-105.0075703,39.7588771,-105.0057374,39.7597756
-15753,6671,2023,0.100119371100459,0.100119371100459,-104.9362703,39.7162376,-104.9350998,39.7162443
-18126,6042,10262,0.201564202628959,0.201564202628959,-105.0187387,39.7856192,-105.0187307,39.7874319
-17137,4425,1909,0.200241543203617,0.200241543203617,-104.9763417,39.7056707,-104.9763514,39.7074715
-16013,9783,9784,0.0337977814282775,0.0337977814282775,-104.9993276,39.6890403,-104.9989876,39.689195
-12006,8049,6578,0.147083508160087,0.147083508160087,-104.9866649,39.7595656,-104.9854669,39.7605151
-2343,2334,2335,0.271393460830069,0.271393460830069,-104.9238826,39.7256356,-104.9238831,39.7280763
-19952,4670,7857,0.100774147000306,0.100774147000306,-104.9940093,39.7230042,-104.992831,39.7230021
-20659,8289,5957,0.0879515292456205,0.0879515292456205,-104.9873968,39.7469971,-104.9873834,39.7462062
-12349,8665,8666,0.0489645255680358,0.0489645255680358,-105.0124819,39.7528908,-105.0129797,39.752673
-1536,1559,1560,0.0937807122385258,0.0937807122385258,-104.9582585,39.7776672,-104.9571611,39.7776691
-2410,2115,2401,0.446933916798798,0.446933916798798,-104.9270004,39.7731311,-104.9317412,39.7748279
-19581,7470,10575,0.00667183269883622,0.00667183269883622,-104.988589,39.7084596,-104.9885885,39.7085196
-1557,1582,1583,0.0811305260417956,0.0811305260417956,-105.0442642,39.6882131,-105.0452106,39.6881689
-469,472,473,0.100239678379349,0.100239678379349,-105.0184425,39.7479196,-105.0185991,39.7470262
-569,562,563,0.0844940522055572,0.0844940522055572,-104.9848447,39.7398421,-104.9854438,39.7392378
-12010,5508,7081,0.146350144860015,0.146350144860015,-104.9830521,39.7623846,-104.9818287,39.7633054
-2663,2621,2622,0.0420400210402162,0.0420400210402162,-104.9980629,39.7225275,-104.9985544,39.7225221
-16696,9597,7094,0.00600769898364912,0.00600769898364912,-105.0002485,39.7423649,-105.00026,39.7424182
-18883,7310,84,0.202570183098447,0.202570183098447,-104.9611376,39.7020462,-104.9611564,39.7002245
-16736,7419,10004,0.204798388413466,0.204798388413466,-104.9519684,39.7022366,-104.9539532,39.7012069
-1623,1651,1652,0.0452674748546477,0.0452674748546477,-105.0156831,39.6890231,-105.0156826,39.688616
-12948,1303,1304,0.066448544071591,0.066448544071591,-105.0017368,39.7441763,-105.0024118,39.7438801
-20711,10885,10914,0.126940460926274,0.126940460926274,-105.0253682,39.762093,-105.0253716,39.7632346
-20712,10914,5881,0.00554916008288024,0.00554916008288024,-105.0253716,39.7632346,-105.0253707,39.7632845
-16509,9929,9930,0.0673766892433469,0.0673766892433469,-105.0061216,39.7430892,-105.0053557,39.7432318
-1643,1670,1671,0.136647738333876,0.136647738333876,-105.0064415,39.7680441,-105.0080403,39.7680432
-19534,6856,10550,0.00719456093421717,0.00719456093421717,-104.9890317,39.7102465,-104.9890324,39.7101818
-19538,4704,10552,0.0168576392161317,0.0168576392161317,-104.9890412,39.7093409,-104.9890427,39.7091893
-19539,10552,10553,0.00416995013524246,0.00416995013524246,-104.9890427,39.7091893,-104.9890431,39.7091518
-11689,775,836,0.0388095868373909,0.0388095868373909,-105.0016626,39.7533622,-105.00135,39.7536153
-20,21,22,0.0174708821601448,0.0174708821601448,-105.0184092,39.7572776,-105.0186135,39.7572732
-16449,9906,9907,0.130469688472308,0.130469688472308,-104.9731572,39.7002179,-104.9730961,39.7013903
-41,44,45,0.0507831501846365,0.0507831501846365,-104.9763617,39.7002087,-104.9757682,39.7002165
-17298,7736,5829,0.204153885319898,0.204153885319898,-104.9622681,39.6893045,-104.9622681,39.6911405
-64,70,71,0.046163806906163,0.046163806906163,-104.9674891,39.7002337,-104.9669496,39.700226
-18467,10299,10298,0.126605139952982,0.126605139952982,-105.0434286,39.7498153,-105.0431907,39.7509391
-18685,1316,1372,0.177012768030012,0.177012768030012,-105.0366981,39.7133763,-105.0366894,39.7117844
-1826,1842,1843,0.155652098486701,0.155652098486701,-105.0186351,39.7211578,-105.020455,39.721152
-19783,3732,10633,0.0548138207459151,0.0548138207459151,-105.0028207,39.7326047,-105.0021797,39.732604
-1846,1861,1862,0.0495211888216282,0.0495211888216282,-105.0427108,39.7213283,-105.0432898,39.7213253
-177,186,187,0.102075274690852,0.102075274690852,-105.0425601,39.6931327,-105.0437531,39.6931327
-202,214,215,0.233063347854791,0.233063347854791,-104.9627533,39.7801312,-104.9654677,39.7803353
-271,281,282,0.0968799942510371,0.0968799942510371,-104.9847034,39.7794255,-104.98357,39.7794055
-335,336,337,0.26926308578439,0.26926308578439,-104.9390909,39.7824749,-104.9373307,39.7804664
-14122,3945,503,0.0521094341958735,0.0521094341958735,-104.9450651,39.7484271,-104.9454639,39.7487815
-1949,1964,1965,0.100541047482359,0.100541047482359,-104.9246161,39.743742,-104.925792,39.7437354
-503,497,498,0.332501427216364,0.332501427216364,-105.0147909,39.7286028,-105.0153507,39.7256437
-508,502,503,0.0804669922754196,0.0804669922754196,-104.9447772,39.7492764,-104.9454639,39.7487815
-19271,10424,10425,0.0133101789702176,0.0133101789702176,-104.9949557,39.7460704,-104.9948429,39.7459879
-19460,10507,10477,0.0195042673008727,0.0195042673008727,-104.9902528,39.7106611,-104.9902547,39.7104857
-12962,1631,1599,0.105987129966341,0.105987129966341,-105.0033016,39.7411115,-105.0021858,39.7415267
-11814,2150,2151,0.12777055976042,0.12777055976042,-105.0101838,39.745904,-105.0100859,39.7447574
-18730,7649,8066,0.263509830967107,0.263509830967107,-105.0367537,39.7282406,-105.0367563,39.7306104
-18671,2605,1538,0.176823430683456,0.176823430683456,-105.0421532,39.7229647,-105.042161,39.7245549
-20037,816,3558,0.154160936652516,0.154160936652516,-104.9739648,39.753238,-104.9739683,39.7546244
-20700,10894,10895,0.0022719801727208,0.0022719801727208,-105.0400807,39.765692,-105.0400542,39.7656936
-17029,3606,3607,0.0180484124991241,0.0180484124991241,-105.0243187,39.7548283,-105.0243214,39.7549906
-850,863,864,0.0616242283467915,0.0616242283467915,-104.9428605,39.7639291,-104.9428605,39.7644833
-18683,3539,3608,0.177667253998454,0.177667253998454,-105.0367081,39.716558,-105.036708,39.7149602
-20825,9400,10954,0.0122123114573311,0.0122123114573311,-105.0252875,39.7601454,-105.0254122,39.760199
-872,885,886,0.105399149486358,0.105399149486358,-104.9585659,39.7644817,-104.9573328,39.7644759
-19920,2621,10413,0.177079309456246,0.177079309456246,-104.9980629,39.7225275,-104.9980711,39.720935
-892,906,907,0.104783494637697,0.104783494637697,-104.9356148,39.7644767,-104.934389,39.7644899
-12344,8660,8661,0.0179171962919351,0.0179171962919351,-105.012233,39.7522705,-105.0123532,39.7524025
-17141,3089,4509,0.200737491088575,0.200737491088575,-104.9763937,39.7128949,-104.9763295,39.7146995
-16291,2376,2377,0.00482087191216397,0.00482087191216397,-104.9707858,39.6964209,-104.9707298,39.6964161
-963,974,975,0.202802632214452,0.202802632214452,-104.9840335,39.7873956,-104.9840507,39.7892194
-17135,44,4412,0.404761668333185,0.404761668333185,-104.9763617,39.7002087,-104.9763723,39.7038488
-17088,10071,9940,0.138093381903903,0.138093381903903,-104.9603859,39.7507127,-104.960382,39.7494708
-16845,10022,10018,0.0055152683612349,0.0055152683612349,-104.9700592,39.7032957,-104.9700592,39.7032461
-17952,10226,10230,0.0192923880160408,0.0192923880160408,-104.9872048,39.7236101,-104.9872054,39.7237836
-20322,10741,10742,0.00907488670500163,0.00907488670500163,-105.0236254,39.7588748,-105.0237259,39.7589011
-1113,1129,1130,0.204124873969403,0.204124873969403,-105.0404692,39.7676124,-105.0404986,39.769448
-16607,7890,9325,0.145145340110648,0.145145340110648,-104.9856992,39.7495249,-104.9845026,39.7504509
-15260,9550,9551,0.0630135708366092,0.0630135708366092,-104.9336788,39.7049326,-104.9343788,39.705109
-19433,10110,10489,0.0489242953920304,0.0489242953920304,-104.9839674,39.7033596,-104.9833961,39.7033795
-16954,10038,10039,0.0207511303582817,0.0207511303582817,-105.0168024,39.7557524,-105.0167989,39.7555658
-12357,8669,8668,0.00723037090372959,0.00723037090372959,-105.0124521,39.7523897,-105.0125278,39.7524187
-1183,1198,1199,0.0305943034250603,0.0305943034250603,-104.9520847,39.7271285,-104.951727,39.7271329
-19442,10493,10494,0.0196148764551294,0.0196148764551294,-104.9911447,39.7106683,-104.9911454,39.7104919
-19443,10494,10495,0.0228284210093234,0.0228284210093234,-104.9911454,39.7104919,-104.9911462,39.7102866
-2633,2594,2595,0.0115937480855902,0.0115937480855902,-105.0383715,39.7229322,-105.038507,39.7229353
-1205,1220,1221,0.0900481853791487,0.0900481853791487,-105.0123588,39.736105,-105.0123509,39.7369148
-18180,5796,6056,0.200195877654712,0.200195877654712,-105.0304694,39.7874265,-105.030464,39.7856261
-11707,1245,1246,0.0231530055304531,0.0231530055304531,-105.001931,39.7490887,-105.0017374,39.7492343
-19444,10495,10496,0.0213401735101805,0.0213401735101805,-104.9911462,39.7102866,-104.9911429,39.7100947
-19445,10496,10497,0.0182367704590367,0.0182367704590367,-104.9911429,39.7100947,-104.9911409,39.7099307
-2703,2659,2660,0.155649282617483,0.155649282617483,-104.9517329,39.7291286,-104.9517031,39.7305282
-19446,10497,10498,0.0203055071588043,0.0203055071588043,-104.9911409,39.7099307,-104.9911436,39.7097481
-2724,107,2679,0.0450807290855188,0.0450807290855188,-104.930428,39.700221,-104.930452,39.700626
-1266,1286,1287,0.0202842890457172,0.0202842890457172,-105.020542,39.7581637,-105.0205384,39.7583461
-18451,2986,7704,0.199650644692106,0.199650644692106,-105.0410754,39.7584887,-105.0410725,39.7566932
-16289,1363,2376,0.00344312944616261,0.00344312944616261,-104.9708258,39.6964243,-104.9707858,39.6964209
-19447,10498,10499,0.0196160459333464,0.0196160459333464,-104.9911436,39.7097481,-104.9911462,39.7095717
-14693,2225,4875,0.162113763012991,0.162113763012991,-104.9712038,39.7337071,-104.9712147,39.735165
-1308,1334,1335,0.129255645714035,0.129255645714035,-105.0110016,39.7130472,-105.012511,39.712992
-14695,4946,4947,0.168905093573288,0.168905093573288,-104.9712638,39.7368921,-104.9712638,39.7384111
-1332,1357,1358,0.136424467862451,0.136424467862451,-104.992658,39.7824897,-104.9942545,39.7824831
-19448,10499,10487,0.023296750596408,0.023296750596408,-104.9911462,39.7095717,-104.9911492,39.7093622
-2841,2789,2790,0.0523852002781698,0.0523852002781698,-104.9615875,39.7669517,-104.9609746,39.7669537
-15843,7795,9723,0.020416694003674,0.020416694003674,-105.0393113,39.734237,-105.0393086,39.7344206
-18886,7308,3267,0.201549354300641,0.201549354300641,-104.9634496,39.7020562,-104.9634713,39.7038687
-19449,10487,10500,0.022940948763835,0.022940948763835,-104.9911492,39.7093622,-104.9911522,39.7091559
-17307,5827,7735,0.20365816745981,0.20365816745981,-104.963474,39.6911476,-104.9634901,39.6893161
-2499,2480,2481,0.265342544498994,0.265342544498994,-105.0064445,39.779418,-105.0095495,39.7794028
-19450,10500,10501,0.0189264900266028,0.0189264900266028,-104.9911522,39.7091559,-104.9911546,39.7089857
-18889,1923,6123,0.200475462008098,0.200475462008098,-104.9634658,39.7074881,-104.963455,39.709291
-1428,1451,1452,0.107578729884622,0.107578729884622,-105.0038258,39.7039943,-105.003594,39.7030434
-18647,7412,4053,0.176566575042864,0.176566575042864,-105.0379016,39.716558,-105.0379043,39.7181459
-1452,1471,1472,0.147622384612895,0.147622384612895,-105.0231842,39.6908088,-105.0231842,39.6894812
-19451,10501,10502,0.0200830353316625,0.0200830353316625,-104.9911546,39.7089857,-104.9911572,39.7088051
-2953,2897,2898,0.0472912053919854,0.0472912053919854,-104.9733528,39.7553064,-104.9733526,39.7557317
-16310,2439,2721,0.0812562615874829,0.0812562615874829,-104.9697532,39.6960539,-104.9693989,39.6953759
-12320,1302,1603,0.00893905362813633,0.00893905362813633,-105.0032204,39.7501518,-105.0031242,39.7501833
-19452,10502,10503,0.0197272337869401,0.0197272337869401,-104.9911572,39.7088051,-104.9911598,39.7086277
-19453,10503,7482,0.0181814350817939,0.0181814350817939,-104.9911598,39.7086277,-104.9911621,39.7084642
-19038,9494,229,0.0588468541295868,0.0588468541295868,-104.9496925,39.779312,-104.9490058,39.7793516
-1498,1517,1518,0.199413272863754,0.199413272863754,-104.9745809,39.7128876,-104.9745407,39.7110945
-15846,9732,1098,0.0848710138660927,0.0848710138660927,-105.0415588,39.7301641,-105.0405664,39.7301724
-19454,7482,10504,0.0196839111368948,0.0196839111368948,-104.9911621,39.7084642,-104.9911657,39.7082872
-19455,10504,10505,0.017559948119168,0.017559948119168,-104.9911657,39.7082872,-104.991169,39.7081293
-13365,9051,9052,0.103390283727961,0.103390283727961,-104.9821447,39.7799919,-104.9833542,39.7800156
-2998,1652,2935,0.112349122861115,0.112349122861115,-105.0156826,39.688616,-105.0169377,39.6883193
-17375,1796,4235,0.206436210016501,0.206436210016501,-104.9786977,39.6947606,-104.9786601,39.6966169
-13963,9247,9102,0.0619095710643366,0.0619095710643366,-105.0153507,39.7256041,-105.0160728,39.7255648
-1534,1557,1558,0.0743776380849984,0.0743776380849984,-104.9602842,39.7776637,-104.959414,39.7776762
-19916,8774,7640,0.176934657107496,0.176934657107496,-104.9980954,39.7289058,-104.9981033,39.7273146
-19917,7640,6233,0.179269287981755,0.179269287981755,-104.9981033,39.7273146,-104.9980791,39.7257025
-1556,1581,1582,0.0903340712116846,0.0903340712116846,-105.0432085,39.6882131,-105.0442642,39.6882131
-18461,9354,9528,0.135770728089025,0.135770728089025,-105.0387149,39.7487553,-105.0387229,39.7499763
-19456,10505,7464,0.0643341844968674,0.0643341844968674,-104.991169,39.7081293,-104.9911808,39.7075508
-19919,5202,2621,0.177194532329155,0.177194532329155,-104.9980791,39.724121,-104.9980629,39.7225275
-1603,1634,1635,0.0667169559865797,0.0667169559865797,-105.015737,39.715387,-105.015737,39.714787
-15911,9239,9240,0.00759910247117962,0.00759910247117962,-105.0423752,39.716622,-105.042453,39.716655
-3133,2004,3061,0.0946875314878615,0.0946875314878615,-104.9350741,39.7601485,-104.9339669,39.7601749
-1648,1675,1676,0.0232219414191173,0.0232219414191173,-105.0143702,39.7680596,-105.0146419,39.76806
-1649,1676,1677,0.104810655650978,0.104810655650978,-105.0146419,39.76806,-105.0158682,39.7680616
-18412,7776,7163,0.0985154391997448,0.0985154391997448,-105.0393033,39.7543708,-105.0381509,39.7543757
-3153,3077,3078,0.0921654003892753,0.0921654003892753,-104.9850625,39.7129392,-104.9839851,39.7129498
-1666,1129,1692,0.0515669276869657,0.0515669276869657,-105.0404692,39.7676124,-105.0410724,39.7676025
-256,264,265,0.00881331069899833,0.00881331069899833,-104.9479356,39.6896766,-104.9480386,39.6896766
-19580,10574,7470,0.0064160385090956,0.0064160385090956,-104.9885894,39.7084019,-104.988589,39.7084596
-1690,1714,1715,0.111918529606987,0.111918529606987,-105.0420365,39.6912966,-105.0433411,39.691224
-12366,8674,8671,0.0118216471510326,0.0118216471510326,-105.011632,39.7531718,-105.0117521,39.7531191
-18801,10352,9812,0.039652100920871,0.039652100920871,-104.9919121,39.7693329,-104.9915921,39.7695911
-379,381,382,0.0684082960066799,0.0684082960066799,-105.0323033,39.747591,-105.0315032,39.7475841
-16308,2827,2851,0.00473328951361683,0.00473328951361683,-104.9721964,39.6979102,-104.9722098,39.6978689
-20640,10878,10879,0.0287629224507079,0.0287629224507079,-105.0137749,39.7624832,-105.0134384,39.762482
-20278,5573,10727,0.00799925463089475,0.00799925463089475,-105.0440081,39.7735153,-105.0439145,39.7735153
-18122,2538,10266,0.180269607102109,0.180269607102109,-105.01068,39.7874523,-105.0106756,39.7890735
-1907,1919,1920,0.101419584890654,0.101419584890654,-104.966335,39.707486,-104.9651495,39.7074752
-16419,3282,3283,0.0297579469637327,0.0297579469637327,-104.9687946,39.7020548,-104.9691419,39.7020399
-11533,1234,1235,0.136499599599558,0.136499599599558,-105.0293502,39.757272,-105.0293331,39.7560445
-18135,4099,6043,0.191045620861521,0.191045620861521,-105.0199054,39.783907,-105.0198962,39.7856251
-16763,4439,9868,0.0469300202486105,0.0469300202486105,-104.9546886,39.6984458,-104.9551011,39.698724
-257,265,257,0.0618021904449226,0.0618021904449226,-104.9480386,39.6896766,-104.9487596,39.6897096
-3413,3306,3307,0.147259003832799,0.147259003832799,-104.9862237,39.7592221,-104.985009,39.7601612
-1997,2009,2010,0.0436503011483876,0.0436503011483876,-104.9345766,39.7253138,-104.9349064,39.7256134
-381,383,384,0.174765079599045,0.174765079599045,-104.9934396,39.7273502,-104.9934388,39.7289219
-3437,3324,3325,0.13969071524798,0.13969071524798,-104.9573671,39.7557244,-104.95735,39.7569806
-2020,2029,2030,0.0536884532048604,0.0536884532048604,-104.9801901,39.7638953,-104.9806366,39.7642349
-14708,5223,5330,0.173633760067415,0.173633760067415,-104.9747109,39.7384283,-104.9746992,39.7368668
-17179,5410,5449,0.194891408787823,0.194891408787823,-104.9704709,39.6893522,-104.9704727,39.6911049
-2041,2049,2050,0.203224924896292,0.203224924896292,-104.9675091,39.7056815,-104.9674629,39.7038542
-15894,9255,9441,0.0812248966226341,0.0812248966226341,-105.0419691,39.7342088,-105.0429186,39.7342294
-2068,2071,2072,0.108635365611271,0.108635365611271,-104.953042,39.7728934,-104.9530584,39.7738703
-383,385,386,0.313694212518365,0.313694212518365,-105.009982,39.7834091,-105.0063891,39.78283
-15938,9757,9756,0.156652526688463,0.156652526688463,-104.9945244,39.7005048,-104.9962839,39.7001148
-2092,1220,2094,0.120498651922126,0.120498651922126,-105.0123588,39.736105,-105.013768,39.7361049
-16738,725,51,0.242028173240196,0.242028173240196,-104.9512072,39.7016443,-104.953347,39.7002205
-19560,10553,10564,0.0204794292027182,0.0204794292027182,-104.9890431,39.7091518,-104.9892825,39.7091533
-2166,2165,2166,0.0846335919696035,0.0846335919696035,-105.0140457,39.7285578,-105.0140055,39.7293183
-19638,10597,10526,0.00694709641094844,0.00694709641094844,-104.9882854,39.7071884,-104.9883666,39.7071894
-3597,3446,2803,0.137873345883867,0.137873345883867,-104.9462506,39.7657138,-104.9462404,39.7669537
-16317,2510,3005,0.00592207877923616,0.00592207877923616,-104.9709885,39.6970925,-104.9710275,39.6970485
-17174,5326,5327,0.109586213492937,0.109586213492937,-104.9693021,39.6883439,-104.9693125,39.6893294
-16740,4437,10005,0.047793833799427,0.047793833799427,-104.9534368,39.6995469,-104.9531164,39.6991948
-3644,3483,3484,0.202897902969007,0.202897902969007,-104.9640501,39.6929756,-104.9640755,39.691151
-2231,2232,2233,0.0942717670146639,0.0942717670146639,-104.9395024,39.7328547,-104.9384001,39.7328678
-2232,2233,2234,0.0947564865992517,0.0947564865992517,-104.9384001,39.7328678,-104.937292,39.7328682
-16741,10005,4510,0.0465117651564764,0.0465117651564764,-104.9531164,39.6991948,-104.9527144,39.6989132
-2248,2251,2252,0.0515208780131149,0.0515208780131149,-104.9592063,39.733462,-104.9586038,39.733462
-16742,4510,10006,0.0392105126712721,0.0392105126712721,-104.9527144,39.6989132,-104.9523627,39.6986871
-3687,3523,3524,0.057537938641533,0.057537938641533,-104.9593466,39.6983911,-104.9586741,39.6983954
-2276,2276,2277,0.201064010739015,0.201064010739015,-104.930959,39.7455899,-104.9309504,39.7473981
-18183,6051,5769,0.201340675613812,0.201340675613812,-105.0269948,39.7856221,-105.0269959,39.7874328
-18863,9178,2185,0.000908525082812035,0.000908525082812035,-105.0164243,39.7306043,-105.0164339,39.7306008
-14108,502,3544,0.223192299132,0.223192299132,-104.9447772,39.7492764,-104.9457557,39.7511373
-16417,3130,3281,0.0400386431725339,0.0400386431725339,-104.970947,39.7024436,-104.9710667,39.7027917
-16286,1362,1363,0.0694355006798695,0.0694355006798695,-104.9710484,39.6970248,-104.9708258,39.6964243
-3729,3563,3564,0.1023601599905,0.1023601599905,-104.9671659,39.7544703,-104.9659688,39.7544499
-13961,9112,9247,0.133632751867418,0.133632751867418,-105.0137882,39.7256148,-105.0153507,39.7256041
-2325,1348,1614,0.104366499106977,0.104366499106977,-104.9759324,39.769905,-104.9767564,39.7705977
-18909,10388,10381,0.014813120492833,0.014813120492833,-105.0124728,39.7502617,-105.0125841,39.7503638
-18903,10381,10380,0.00882005349877488,0.00882005349877488,-105.0125841,39.7503638,-105.0126123,39.7504401
-18454,4296,10295,0.0897566766881454,0.0897566766881454,-105.0410672,39.7539301,-105.041069,39.7531229
-14692,941,2225,0.184174515609916,0.184174515609916,-104.9712147,39.7320508,-104.9712038,39.7337071
-19558,10562,10563,0.0196153093677919,0.0196153093677919,-104.9885838,39.7091493,-104.9888131,39.7091506
-16743,10006,7566,0.0419162617939555,0.0419162617939555,-104.9523627,39.6986871,-104.9519988,39.6984347
-19568,7474,10568,0.0062936328481519,0.0062936328481519,-104.9895159,39.7084654,-104.9895159,39.7084088
-18905,10382,10383,0.00831887899673018,0.00831887899673018,-105.0125197,39.7501462,-105.0124996,39.7502194
-17147,4241,3546,0.202185735299221,0.202185735299221,-104.9751708,39.6966094,-104.9751709,39.6984277
-14720,937,2221,0.184339220920538,0.184339220920538,-104.9735126,39.732045,-104.9735163,39.7337028
-18637,2580,7383,0.244324669292135,0.244324669292135,-105.0330978,39.7229268,-105.0336341,39.725085
-2484,2467,2468,0.0154146632189528,0.0154146632189528,-104.9339464,39.7474085,-104.9337661,39.7474085
-17183,5608,5658,0.149882473899379,0.149882473899379,-104.9716303,39.6911179,-104.9716542,39.6897701
-3908,3707,3708,0.138080579549583,0.138080579549583,-105.0030264,39.7742905,-105.002935,39.7755303
-2555,2532,2533,0.191131540477931,0.191131540477931,-105.0217751,39.73818,-105.0240058,39.7380698
-2556,2533,254,0.098486007419044,0.098486007419044,-105.0240058,39.7380698,-105.0251543,39.7380028
-19573,10570,7473,0.00674972719310255,0.00674972719310255,-104.9892888,39.7085247,-104.9892894,39.708464
-2577,1090,2550,0.0509764502640852,0.0509764502640852,-105.0403847,39.7874333,-105.0409813,39.787434
-17311,5685,5705,0.205154639659543,0.205154639659543,-104.9611673,39.6929737,-104.9611673,39.6911287
-20594,10852,10864,0.00559477666444464,0.00559477666444464,-105.0249031,39.7609028,-105.0249015,39.7609531
-2602,2568,2565,0.0838899757725962,0.0838899757725962,-104.9535373,39.7090785,-104.9525578,39.7090414
-13584,9079,9135,0.0736016285399027,0.0736016285399027,-104.9930943,39.7037972,-104.9922711,39.7036048
-3952,3748,3749,0.123087650580437,0.123087650580437,-105.0264583,39.7729227,-105.026537,39.774028
-2626,2587,2588,0.00484286584971978,0.00484286584971978,-105.0361228,39.7229454,-105.0361794,39.7229441
-2627,2588,2589,0.0472712028951763,0.0472712028951763,-105.0361794,39.7229441,-105.0367321,39.7229406
-18404,10286,7165,0.0480937532986949,0.0480937532986949,-105.0387191,39.7554242,-105.0381565,39.7554232
-18406,9349,8340,0.136218529796162,0.136218529796162,-105.0259368,39.7560399,-105.0259235,39.7572649
-13586,9135,9136,0.116423294527986,0.116423294527986,-104.9922711,39.7036048,-104.9910031,39.7032246
-14719,5893,937,0.0748599535472642,0.0748599535472642,-104.9735211,39.7313718,-104.9735126,39.732045
-2721,2676,2677,0.00391406141859358,0.00391406141859358,-104.9524392,39.7606894,-104.9524392,39.7607246
-18735,4002,7603,0.202077020511888,0.202077020511888,-105.0300499,39.727056,-105.0294393,39.7288116
-17677,6029,10165,0.522362145407342,0.522362145407342,-104.9855966,39.7797106,-104.9794908,39.7794867
-17480,344,5940,0.0510780896194201,0.0510780896194201,-105.0150427,39.753956,-105.0154315,39.7536072
-2823,2771,2261,0.100546651913918,0.100546651913918,-104.9317009,39.7674455,-104.930525,39.7674191
-18144,10275,10261,0.405650212701817,0.405650212701817,-105.0175785,39.7910801,-105.0175788,39.787432
-12350,8663,8667,0.00958750951684791,0.00958750951684791,-105.0123961,39.7526334,-105.0124751,39.7525722
-4125,3888,3889,0.19728512260693,0.19728512260693,-104.9634642,39.7350462,-104.9634771,39.7368204
-2839,2788,1047,0.105687024742303,0.105687024742303,-104.9634422,39.7669465,-104.9622057,39.7669537
-2840,1047,2789,0.0528381886609336,0.0528381886609336,-104.9622057,39.7669537,-104.9615875,39.7669517
-12351,8667,8668,0.0176529909929813,0.0176529909929813,-105.0124751,39.7525722,-105.0125278,39.7524187
-19572,10564,10570,0.0698992084212194,0.0698992084212194,-104.9892825,39.7091533,-104.9892888,39.7085247
-16413,9458,9887,0.0468003057153474,0.0468003057153474,-104.9711616,39.7030276,-104.9708237,39.7033586
-2910,785,2854,0.0936375066158938,0.0936375066158938,-105.0042571,39.7018586,-105.0038253,39.7010848
-12361,8671,8672,0.0146217858658369,0.0146217858658369,-105.0117521,39.7531191,-105.011589,39.7530795
-2955,2899,2900,0.139071498957734,0.139071498957734,-104.9733522,39.7569824,-104.9733518,39.7582331
-20621,10800,10799,0.0197706815366264,0.0197706815366264,-105.0218874,39.7616318,-105.0218863,39.7618096
-16441,5747,9898,0.0366397439833697,0.0366397439833697,-104.9676964,39.6930969,-104.9681189,39.6930432
-3003,2938,2939,0.343360355018568,0.343360355018568,-104.9247744,39.7038309,-104.92577,39.7008395
-20697,4524,10911,0.0102002426471616,0.0102002426471616,-105.0250845,39.7632041,-105.0250813,39.7632958
-20441,10798,10799,0.0151893809033584,0.0151893809033584,-105.0218855,39.7619462,-105.0218863,39.7618096
-3052,2983,2984,0.049669116788992,0.049669116788992,-105.038723,39.7584839,-105.039304,39.7584901
-17130,4371,4372,0.0862019013563638,0.0862019013563638,-104.976372,39.6922088,-104.9763628,39.692984
-3072,3004,3006,0.148595619798792,0.148595619798792,-104.9912932,39.744504,-104.9900832,39.7454633
-20009,9620,10046,0.0380951574175552,0.0380951574175552,-105.0020353,39.747495,-105.001796,39.747784
-4390,4106,695,0.201687631399372,0.201687631399372,-104.9512775,39.7401701,-104.9512663,39.7419839
-18702,2606,1861,0.182749323037212,0.182749323037212,-105.042706,39.7229718,-105.0427108,39.7213283
-3122,2901,3051,0.104668558602022,0.104668558602022,-104.9733513,39.7594897,-104.9721269,39.7594785
-20265,5574,10723,0.0117861788911356,0.0117861788911356,-105.0440065,39.7739591,-105.0438686,39.7739577
-20266,10724,7552,0.00870010659628447,0.00870010659628447,-105.0452474,39.7730203,-105.0451456,39.7730203
-19624,10591,10497,0.00644185269782912,0.00644185269782912,-104.9910656,39.7099299,-104.9911409,39.7099307
-19579,10573,10574,0.0879788736402366,0.0879788736402366,-104.9885953,39.7076107,-104.9885894,39.7084019
-18895,10376,10377,0.0641298068195797,0.0641298068195797,-105.0120158,39.75012,-105.0124804,39.7505728
-20011,10694,10695,0.0242395353024572,0.0242395353024572,-105.0045347,39.7529806,-105.0047359,39.752827
-17687,6171,6172,0.0391351463481426,0.0391351463481426,-104.9860994,39.7796015,-104.9856415,39.7795956
-3160,3084,3085,0.0490903700114876,0.0490903700114876,-104.9792501,39.712914,-104.9786762,39.712912
-19594,10580,10495,0.00720293691626167,0.00720293691626167,-104.991062,39.7102859,-104.9911462,39.7102866
-3180,3100,3101,0.129889039932712,0.129889039932712,-104.9377781,39.7130688,-104.9362596,39.7130732
-17168,5241,5262,0.201125324676422,0.201125324676422,-104.9740116,39.7038551,-104.9739919,39.7056638
-17121,1798,4176,0.205688375484509,0.205688375484509,-104.9775097,39.6947606,-104.9775098,39.6966104
-3202,3118,3119,0.112364882779035,0.112364882779035,-104.9350589,39.6929564,-104.9350503,39.6919459
-14726,5162,6220,0.0504817306174529,0.0504817306174529,-104.9746897,39.7395432,-104.9752801,39.7395432
-3225,3140,3141,0.161478257380345,0.161478257380345,-104.964537,39.7804755,-104.9645304,39.7819277
-13781,438,3176,0.297045355127737,0.297045355127737,-105.0062729,39.7603999,-105.0085577,39.7583871
-19813,5371,10633,0.121358837066421,0.121358837066421,-105.0021749,39.7336954,-105.0021797,39.732604
-3298,3207,2047,0.106039987596014,0.106039987596014,-104.9687078,39.7111105,-104.9674682,39.7111011
-17169,5262,1912,0.201876443466571,0.201876443466571,-104.9739919,39.7056638,-104.9739477,39.707479
-4605,3695,4261,0.0511463408235916,0.0511463408235916,-104.9617464,39.6965839,-104.9611486,39.6965834
-3320,3225,3226,0.12416264535459,0.12416264535459,-105.0174873,39.7717281,-105.0189401,39.7717271
-19269,10421,10423,0.00254934916501421,0.00254934916501421,-104.9951815,39.7462368,-104.9951604,39.7462206
-18686,1372,4116,0.0631464225691973,0.0631464225691973,-105.0366894,39.7117844,-105.0367025,39.7112166
-20456,10811,10791,0.0266421174352104,0.0266421174352104,-105.022998,39.7596958,-105.0231621,39.7594921
-20624,10873,10804,0.10579809531994,0.10579809531994,-105.0229935,39.7611592,-105.0242305,39.7611919
-18140,10260,10273,0.404128367861769,0.404128367861769,-105.0164142,39.7874331,-105.0164012,39.7910675
-4673,4035,4316,0.0606123696093501,0.0606123696093501,-105.0344405,39.6976368,-105.03444,39.6970917
-3387,3285,3286,0.00355897702027561,0.00355897702027561,-104.9500244,39.7038338,-104.9499828,39.7038341
-3388,3286,3287,0.0772193168955733,0.0772193168955733,-104.9499828,39.7038341,-104.9490802,39.7038404
-18146,10276,10258,0.404206655907194,0.404206655907194,-105.0117797,39.791059,-105.0117945,39.7874239
-4696,808,3552,0.152717552993661,0.152717552993661,-104.9769333,39.7532524,-104.9769434,39.7546258
-3410,3303,3304,0.147141483236073,0.147141483236073,-104.9898413,39.756424,-104.9886307,39.7573647
-20283,10722,10688,0.0815558763222832,0.0815558763222832,-105.044096,39.7739592,-105.0440849,39.7746926
-20448,10804,10757,0.0136201124223367,0.0136201124223367,-105.0242305,39.7611919,-105.0243898,39.7611891
-20785,10292,10946,0.00447271282341959,0.00447271282341959,-105.0280151,39.7614164,-105.0280565,39.761441
-19630,10593,10504,0.00657829834277663,0.00657829834277663,-104.9910888,39.7082874,-104.9911657,39.7082872
-3431,3318,3319,0.157091916454475,0.157091916454475,-104.957059,39.7805126,-104.9570312,39.7819252
-20450,10805,10806,0.0327940652155406,0.0327940652155406,-105.0159721,39.7585081,-105.0163557,39.7585125
-4743,1385,4362,0.103327121803573,0.103327121803573,-105.0016028,39.7121409,-105.0015545,39.7112124
-18254,6754,8093,0.140439193425512,0.140439193425512,-105.0275819,39.7660439,-105.0259388,39.766049
-18250,9369,6873,0.0520299718080319,0.0520299718080319,-105.0258904,39.7692943,-105.025904,39.7697621
-20787,10932,5700,0.00677435562999442,0.00677435562999442,-105.0356849,39.762197,-105.035764,39.7622008
-3475,3354,3355,0.201619360833214,0.201619360833214,-104.9338255,39.7274243,-104.9338318,39.7292375
-14728,6303,5053,0.0505955795491821,0.0505955795491821,-104.9758778,39.7395535,-104.9764695,39.7395488
-3501,59,3374,0.0977645612190622,0.0977645612190622,-104.9247401,39.6995385,-104.9240963,39.6988121
-4808,4414,4415,0.102078381821333,0.102078381821333,-105.0298228,39.7058121,-105.0297971,39.7067299
-3525,3393,3394,0.0602077843108352,0.0602077843108352,-105.0351232,39.7277059,-105.0351404,39.7282472
-18251,6873,8493,0.0500003986375519,0.0500003986375519,-105.025904,39.7697621,-105.0258941,39.7702117
-3545,656,1887,0.0518725917476049,0.0518725917476049,-105.0346018,39.7589808,-105.0346033,39.7594473
-14732,5467,6342,0.17284299485541,0.17284299485541,-104.97589,39.7384222,-104.9758813,39.7368678
-3566,1664,1683,0.0314909646044893,0.0314909646044893,-105.034629,39.767391,-105.0346312,39.7676742
-17138,1909,4488,0.199449310001805,0.199449310001805,-104.9763514,39.7074715,-104.9762867,39.7092645
-18256,7043,3984,0.199449230757582,0.199449230757582,-105.0322741,39.7687942,-105.0299405,39.7688003
-4925,3762,2559,0.0885452473584724,0.0885452473584724,-105.0051409,39.7854596,-105.0051367,39.7862559
-18261,6496,2547,0.410253746717568,0.410253746717568,-105.0386639,39.7911236,-105.0386666,39.7874341
-3637,3478,3266,0.200452444377038,0.200452444377038,-104.9639908,39.7056725,-104.9639994,39.7038698
-3638,3266,3479,0.201663130575812,0.201663130575812,-104.9639994,39.7038698,-104.9639986,39.7020562
-20636,4518,10876,0.0502632727704227,0.0502632727704227,-105.0137768,39.7632209,-105.0137702,39.7627689
-3656,1794,3493,0.171297280470528,0.171297280470528,-104.9284394,39.6945392,-104.9285338,39.6930004
-18171,6061,4076,0.198476287736927,0.198476287736927,-105.0339562,39.7856259,-105.0339181,39.7838412
-20376,10759,10760,0.116931333825994,0.116931333825994,-105.0243509,39.7608348,-105.0229928,39.7607087
-3702,3537,3538,0.048566556365416,0.048566556365416,-104.9798091,39.6984199,-104.9792415,39.6984264
-20385,10293,10769,0.0538892457987372,0.0538892457987372,-105.0260789,39.759245,-105.0254485,39.7592401
-18174,6420,6455,0.4094647827628,0.4094647827628,-105.0245269,39.7874302,-105.024535,39.7911126
-5048,4577,4578,0.133343896044873,0.133343896044873,-105.0315052,39.7415025,-105.0330646,39.7415188
-3745,3575,3576,0.0911473636959273,0.0911473636959273,-104.9499292,39.7544371,-104.9488635,39.7544629
-3747,3577,3469,0.101252045857741,0.101252045857741,-104.9476756,39.7544343,-104.9464912,39.7544409
-20384,10767,10768,0.0160296914364663,0.0160296914364663,-105.0239411,39.7605037,-105.0241099,39.7605665
-17309,4261,5684,0.20074031502923,0.20074031502923,-104.9611486,39.6965834,-104.9611511,39.6947781
-18311,7054,7244,0.0289643230302344,0.0289643230302344,-105.0315008,39.7711217,-105.0311621,39.7711127
-20470,10819,10820,0.0323669425461701,0.0323669425461701,-105.0192728,39.7586316,-105.0188943,39.7586235
-14736,4161,4770,0.262098569801346,0.262098569801346,-104.9769715,39.7201202,-104.97698,39.7224773
-5118,4637,4638,0.0862888373921514,0.0862888373921514,-105.0198922,39.7331309,-105.0201418,39.7338828
-18265,6532,1691,0.20439620202731,0.20439620202731,-105.0398808,39.7657795,-105.039903,39.7676176
-20472,10821,10822,0.0473810496096361,0.0473810496096361,-105.0191892,39.758896,-105.0191858,39.7593221
-5168,2615,4670,0.0537518017226415,0.0537518017226415,-104.9940077,39.7225208,-104.9940093,39.7230042
-18530,9153,9524,0.0561612407510351,0.0561612407510351,-105.0338511,39.7495101,-105.0336803,39.7499978
-17081,882,4467,0.138148999917071,0.138148999917071,-104.9615915,39.7644962,-104.9615875,39.7657386
-20012,10207,7896,0.145636470907972,0.145636470907972,-104.9904003,39.7512676,-104.9891984,39.7521958
-20423,10784,10785,0.00445123207828982,0.00445123207828982,-105.0187393,39.7585283,-105.0187626,39.7585641
-19137,10436,10430,0.0315234230528839,0.0315234230528839,-105.0130548,39.7409589,-105.0132616,39.7411936
-17145,4684,1801,0.196612355705575,0.196612355705575,-104.9751601,39.6929864,-104.9751816,39.6947545
-3889,3694,83,0.201794860941248,0.201794860941248,-104.9616812,39.702043,-104.961704,39.7002283
-18574,10316,10323,0.0808271649311999,0.0808271649311999,-105.0343233,39.7828561,-105.0341543,39.7821409
-17148,3546,46,0.198774198414449,0.198774198414449,-104.9751709,39.6984277,-104.9751601,39.7002153
-3912,3710,3711,0.148294717491307,0.148294717491307,-104.9874523,39.7183509,-104.9891861,39.7183575
-20615,10786,10857,0.0479734082124594,0.0479734082124594,-105.0188457,39.7592189,-105.0184643,39.7595354
-18267,6545,2438,0.164157220604829,0.164157220604829,-105.039903,39.7694505,-105.0399004,39.7709268
-17099,332,3745,0.0956275481171213,0.0956275481171213,-104.9554298,39.7451641,-104.9546644,39.7457912
-14740,6607,3802,0.199799384709315,0.199799384709315,-104.9769867,39.7272649,-104.9769713,39.7290617
-18269,5736,5525,0.155855016610815,0.155855016610815,-105.0398843,39.7724635,-105.0398709,39.7738651
-5281,4748,4749,0.0137701294893219,0.0137701294893219,-104.9856194,39.7225378,-104.9854584,39.7225389
-3961,3755,3756,0.201785607236284,0.201785607236284,-105.0264145,39.7856195,-105.0264176,39.7874342
-3963,3757,1865,0.238183107088451,0.238183107088451,-104.9873962,39.696636,-104.9901799,39.6966614
-18538,10309,10310,0.222695826046938,0.222695826046938,-105.0483038,39.7607426,-105.0509091,39.7607413
-4053,3833,3834,0.0227974048946719,0.0227974048946719,-105.0428186,39.7485544,-105.0428357,39.748759
-18576,10324,10320,0.158325840757882,0.158325840757882,-105.0327262,39.781661,-105.0313943,39.7806712
-5401,3070,4833,0.174791291148441,0.174791291148441,-104.9437655,39.7130666,-104.9437517,39.7114947
-20827,9001,9205,0.0113889892669974,0.0113889892669974,-105.0253805,39.7605003,-105.0253893,39.7603981
-16010,9780,9781,0.00910284197008254,0.00910284197008254,-104.9993976,39.688968,-104.9994018,39.6890498
-18606,8065,6592,0.262343816062173,0.262343816062173,-105.0356674,39.7306063,-105.0356782,39.7329656
-18608,2631,5208,0.201029440504885,0.201029440504885,-105.0445241,39.7221383,-105.0445268,39.7239462
-20328,10745,10742,0.0339039031846942,0.0339039031846942,-105.0237282,39.7585962,-105.0237259,39.7589011
-4098,1552,3870,0.130787042699874,0.130787042699874,-104.944264,39.777781,-104.9440689,39.7789476
-16079,9815,9284,0.0214365694827313,0.0214365694827313,-104.9728236,39.7796294,-104.9725733,39.7796422
-18703,1861,7871,0.177358977412927,0.177358977412927,-105.0427108,39.7213283,-105.0426986,39.7197333
-5445,4865,4866,0.0483753395839426,0.0483753395839426,-104.9775716,39.7351373,-104.9770059,39.7351417
-4124,2246,3888,0.176179418850458,0.176179418850458,-104.9634985,39.733462,-104.9634642,39.7350462
-18692,1856,5978,0.157563244482301,0.157563244482301,-105.0391086,39.721333,-105.0391098,39.719916
-5513,4918,1222,0.0334183748575429,0.0334183748575429,-105.0119518,39.7375725,-105.0123423,39.7375848
-4193,3941,3942,0.10150841538758,0.10150841538758,-105.000152,39.7393746,-105.0001356,39.7384618
-18280,6739,6757,0.185196443942793,0.185196443942793,-105.0386693,39.7783767,-105.0386612,39.7767112
-18287,3986,6762,0.199195011240905,0.199195011240905,-105.0299471,39.7698868,-105.0276181,39.7698189
-4211,3961,3962,0.203354581445588,0.203354581445588,-105.0001766,39.7184091,-105.0001681,39.7165803
-18282,6460,6792,0.289344591592559,0.289344591592559,-105.0386826,39.775685,-105.038701,39.7730829
-18709,7654,7506,0.191266971634704,0.191266971634704,-105.0411042,39.7282537,-105.0410987,39.7299738
-4258,4004,4005,0.0557864946968893,0.0557864946968893,-105.0300506,39.7288149,-105.0300506,39.7293166
-18293,6900,6901,0.125065642459057,0.125065642459057,-105.0409865,39.7832584,-105.0409738,39.7821337
-4279,4022,4023,0.136471513645059,0.136471513645059,-105.0299425,39.7548206,-105.0299339,39.7560479
-18285,6794,6824,0.0676234540262284,0.0676234540262284,-105.0322928,39.76996,-105.0315024,39.7699322
-20412,10780,10737,0.00327519593576582,0.00327519593576582,-105.0250471,39.7600231,-105.0250397,39.7599942
-5639,1165,885,0.138504687840451,0.138504687840451,-104.9585626,39.7632361,-104.9585659,39.7644817
-18705,4059,9745,0.17218742858343,0.17218742858343,-105.0426948,39.7181453,-105.0428433,39.716601
-5680,5036,5037,0.13925145495263,0.13925145495263,-104.9757455,39.7507464,-104.9757231,39.7519986
-4340,4070,4006,0.0527657969561626,0.0527657969561626,-105.0293098,39.784231,-105.0299104,39.7841207
-4341,4006,4071,0.045563339939639,0.045563339939639,-105.0299104,39.7841207,-105.0304275,39.7840207
-18706,9745,3863,0.0360430655172132,0.0360430655172132,-105.0428433,39.716601,-105.0432639,39.7165811
-4363,4087,1214,0.050228703045046,0.050228703045046,-105.0117891,39.7838304,-105.0123769,39.7838268
-18708,6218,7654,0.273874816557472,0.273874816557472,-105.0410732,39.7257908,-105.0411042,39.7282537
-14701,5065,986,0.133961657579708,0.133961657579708,-104.9746455,39.7240692,-104.9740817,39.7251932
-4385,4078,4080,0.499220390775423,0.499220390775423,-104.9910214,39.7840807,-104.9968637,39.7840925
-17161,5086,5087,0.0305453434226413,0.0305453434226413,-104.9740443,39.690895,-104.9740434,39.6911697
-4410,4124,3048,0.142041157035339,0.142041157035339,-104.9512246,39.7581873,-104.9511947,39.7594645
-18547,10315,7542,0.326789019301198,0.326789019301198,-105.0487786,39.766951,-105.0449552,39.7669613
-5780,4917,5106,0.0912724900005868,0.0912724900005868,-104.9558286,39.7101945,-104.9558382,39.7110153
-4431,4139,2389,0.109327413388579,0.109327413388579,-104.9508399,39.7728937,-104.950844,39.7738769
-5754,5082,5083,0.0244848814587712,0.0244848814587712,-104.9957853,39.7079855,-104.9957531,39.7077667
-18548,7542,5567,0.0788647232749776,0.0788647232749776,-105.0449552,39.7669613,-105.0440325,39.7669654
-5829,5144,5145,0.0718528722690416,0.0718528722690416,-104.9280639,39.7313625,-104.9273197,39.7310625
-4478,4170,4171,0.114300734663783,0.114300734663783,-104.9694426,39.7200889,-104.9681062,39.7200857
-14104,421,3767,0.239382300921688,0.239382300921688,-104.9424633,39.7443997,-104.9431585,39.7464851
-5849,1966,5160,0.213373795201997,0.213373795201997,-104.9270076,39.7437306,-104.9270451,39.7456493
-4498,1369,4184,0.105991036166523,0.105991036166523,-104.9923595,39.7121202,-104.9923849,39.7111672
-17123,3542,42,0.197838013671145,0.197838013671145,-104.977531,39.6984299,-104.9775311,39.7002091
-18295,1428,6901,0.00619376962359973,0.00619376962359973,-105.0409732,39.782078,-105.0409738,39.7821337
-18296,6901,6968,0.214788257098635,0.214788257098635,-105.0409738,39.7821337,-105.0409894,39.7802021
-5920,5198,5199,0.0509206897939403,0.0509206897939403,-104.9957805,39.7241162,-104.9963759,39.7241168
-4576,4176,1777,0.0501165848501884,0.0501165848501884,-104.9775098,39.6966104,-104.9769241,39.6966037
-20629,10873,10847,0.0359844691550279,0.0359844691550279,-105.0229935,39.7611592,-105.0229893,39.7608356
-18356,7764,7765,0.203486837058476,0.203486837058476,-105.035177,39.7783841,-105.0351796,39.7802141
-18353,7040,3427,0.201724758100166,0.201724758100166,-105.0322731,39.7669531,-105.0346332,39.7669387
-6017,3447,5269,0.0916999906376171,0.0916999906376171,-104.9462338,39.7680932,-104.9451609,39.7680906
-4669,4312,4313,0.0844811623232087,0.0844811623232087,-105.0344662,39.7021142,-105.0344405,39.7013547
-18355,7763,7764,0.18255985476615,0.18255985476615,-105.0351781,39.7767423,-105.035177,39.7783841
-20388,10772,10773,0.00806462172146812,0.00806462172146812,-105.0237551,39.7606258,-105.0238489,39.7606336
-4690,1574,4327,0.172428634063548,0.172428634063548,-105.0360845,39.6869978,-105.0362476,39.6854522
-14761,7128,660,0.183084210873309,0.183084210873309,-104.9793265,39.7400224,-104.9793171,39.7416689
-18307,7041,3428,0.200871545358079,0.200871545358079,-105.0322795,39.7678767,-105.0346296,39.7678582
-4768,2038,4380,0.146902820961905,0.146902820961905,-104.9740667,39.759206,-104.9752846,39.7582739
-18357,7765,7253,0.0959812077322034,0.0959812077322034,-105.0351796,39.7802141,-105.0351261,39.7810763
-17178,5409,5410,0.041431272963648,0.041431272963648,-104.9704716,39.6889796,-104.9704709,39.6893522
-4841,4434,4435,0.0243817622036277,0.0243817622036277,-104.957527,39.709294,-104.957697,39.709118
-19636,10595,10596,0.0236895488952709,0.0236895488952709,-104.9882841,39.7073658,-104.9881372,39.7071852
-20494,10814,10837,0.00453902687683386,0.00453902687683386,-105.0192222,39.758524,-105.0192753,39.758524
-12316,8640,8559,0.0170391288088959,0.0170391288088959,-105.0078019,39.7541251,-105.0076796,39.7542461
-4864,4448,4449,0.051463626660104,0.051463626660104,-104.9785732,39.7570722,-104.9789969,39.757401
-14105,3767,490,0.17231974049998,0.17231974049998,-104.9431585,39.7464851,-104.9415277,39.7473958
-18310,7244,7054,0.0289643230302344,0.0289643230302344,-105.0311621,39.7711127,-105.0315008,39.7711217
-4906,3886,865,0.080856531304005,0.080856531304005,-104.9437961,39.7657098,-104.9428501,39.7657082
-14762,660,7162,0.177556995744578,0.177556995744578,-104.9793171,39.7416689,-104.9793413,39.7432656
-14106,490,492,0.200841500024827,0.200841500024827,-104.9415277,39.7473958,-104.9415359,39.749202
-6278,5468,5223,0.0507325637005759,0.0507325637005759,-104.9753042,39.7384242,-104.9747109,39.7384283
-20498,2955,10783,0.00926966063781334,0.00926966063781334,-105.0159686,39.7584009,-105.0159618,39.7583177
-18511,9529,10302,0.134870017545438,0.134870017545438,-105.0410698,39.7499582,-105.0410619,39.7511711
-18559,10317,10318,0.0818849597364774,0.0818849597364774,-105.03063,39.7832519,-105.0297002,39.7834301
-5006,4551,4552,0.0605833275140723,0.0605833275140723,-105.0217216,39.7338931,-105.0217376,39.7344378
-20497,10805,2955,0.011923850145444,0.011923850145444,-105.0159721,39.7585081,-105.0159686,39.7584009
-6365,1258,377,0.0777271141684953,0.0777271141684953,-105.0204854,39.7741292,-105.0213949,39.7741289
-5032,3218,4567,0.203476554448063,0.203476554448063,-104.9605331,39.7111143,-104.9605404,39.7092844
-18309,3989,7244,0.103816807067418,0.103816807067418,-105.0299481,39.7710804,-105.0311621,39.7711127
-6389,5536,5537,0.0941709460297732,0.0941709460297732,-104.9948277,39.7742296,-104.9959296,39.7742339
-5052,4580,4581,0.0994044886957745,0.0994044886957745,-105.0369879,39.7415159,-105.0381505,39.741515
-19827,9253,7642,0.176656738058614,0.176656738058614,-105.0022016,39.7289106,-105.0022097,39.7273219
-18315,7190,1430,0.126827993445383,0.126827993445383,-105.0421451,39.7832183,-105.0421723,39.7820779
-18691,2597,1856,0.178902858758576,0.178902858758576,-105.0391167,39.7229419,-105.0391086,39.721333
-6529,1038,5638,0.106710156184621,0.106710156184621,-104.9622461,39.7557325,-104.9609978,39.7557305
-5211,4703,4704,0.0593965930317325,0.0593965930317325,-104.9883469,39.709334,-104.9890412,39.7093409
-18320,7455,6063,0.193748278871749,0.193748278871749,-105.0363356,39.7838724,-105.0363465,39.7856148
-5307,4763,4764,0.0623737801227747,0.0623737801227747,-104.9601753,39.7225386,-104.959446,39.7225375
-20402,10771,10761,0.045832556045337,0.045832556045337,-105.0250699,39.7607782,-105.0250806,39.7603661
-6659,5732,716,0.0227471694550216,0.0227471694550216,-105.0039126,39.7730596,-105.0041786,39.7730524
-5331,3596,4783,0.0944705655668644,0.0944705655668644,-104.9293972,39.7231683,-104.9282926,39.7231695
-14107,492,502,0.277229511676695,0.277229511676695,-104.9415359,39.749202,-104.9447772,39.7492764
-6732,5783,5784,0.103949862025848,0.103949862025848,-104.9941411,39.7504097,-104.9949995,39.7510718
-14767,7420,4860,0.190666070334235,0.190666070334235,-104.9804389,39.7368731,-104.9804415,39.7351584
-20406,8354,10772,0.00730920335045724,0.00730920335045724,-105.0236698,39.7606212,-105.0237551,39.7606258
-6754,5799,5800,0.0473962648551068,0.0473962648551068,-105.0328002,39.7874226,-105.0333549,39.7874228
-14769,7430,4858,0.18998910813567,0.18998910813567,-104.9816663,39.7368655,-104.981675,39.7351569
-5443,4863,4864,0.0452091651037792,0.0452091651037792,-104.9787104,39.7351477,-104.9781817,39.7351466
-19834,10654,9725,0.196434640947063,0.196434640947063,-105.0398868,39.736613,-105.0393021,39.7349046
-6799,2741,5836,0.0500630331544159,0.0500630331544159,-104.9558357,39.6911246,-104.9552507,39.6911326
-20523,2708,10752,0.00659207654644855,0.00659207654644855,-105.0229124,39.7619341,-105.0229895,39.7619327
-18323,7479,7480,0.203575671880267,0.203575671880267,-105.0433631,39.7802085,-105.043363,39.7783777
-18329,6073,7593,0.194237102947714,0.194237102947714,-105.0433238,39.7856121,-105.0433336,39.7838653
-5506,4912,2121,0.0993922299820147,0.0993922299820147,-104.9280548,39.7346813,-104.9268925,39.7346889
-19837,5204,5602,0.169326060361496,0.169326060361496,-105.000925,39.7241245,-105.0016002,39.725556
-6868,3299,5873,0.0385426751655708,0.0385426751655708,-105.0432684,39.7149673,-105.043719,39.7149652
-5529,4929,4930,0.0186787878300106,0.0186787878300106,-104.9980335,39.7400187,-104.9981378,39.7401663
-5530,4930,4931,0.150638241291928,0.150638241291928,-104.9981378,39.7401663,-104.9988399,39.7414088
-20519,10815,10845,0.0426977620157165,0.0426977620157165,-105.0192433,39.7583417,-105.0187438,39.7583413
-6909,5905,5906,0.0925705753401188,0.0925705753401188,-104.9394475,39.7492413,-104.9383649,39.7492571
-5581,4968,4969,0.19364655602673,0.19364655602673,-104.9800866,39.7801495,-104.9800922,39.781891
-20802,10942,606,0.00932539286509621,0.00932539286509621,-105.0279694,39.7630233,-105.0278867,39.763078
-20522,10808,2708,0.0062556157491122,0.0062556157491122,-105.0228402,39.7619433,-105.0229124,39.7619341
-5631,3571,5004,0.140817256140417,0.140817256140417,-104.9585602,39.75446,-104.9585604,39.7557264
-18338,2435,7632,0.201752260263955,0.201752260263955,-105.0387198,39.7712682,-105.038723,39.7730826
-20016,2696,8044,0.148197142125826,0.148197142125826,-104.984388,39.7559539,-104.9831794,39.7569094
-5653,2345,4151,0.175358365382788,0.175358365382788,-104.9585534,39.7194149,-104.9582358,39.7209729
-18327,1432,7191,0.123062885737589,0.123062885737589,-105.0433255,39.7820793,-105.0433363,39.783186
-6998,2684,5970,0.144359466732262,0.144359466732262,-104.9795298,39.7522538,-104.9783626,39.753192
-5670,679,5028,0.00422540721209624,0.00422540721209624,-104.9591758,39.7416126,-104.9591758,39.7416506
-5671,5028,5029,0.199984733552555,0.199984733552555,-104.9591758,39.7416506,-104.9591698,39.7434491
-20382,10765,10766,0.0345648031474255,0.0345648031474255,-105.023905,39.7606411,-105.0243045,39.7606892
-18350,7716,6756,0.141149359906032,0.141149359906032,-105.0259442,39.7669727,-105.0275956,39.7669634
-5748,5078,5079,0.20268033504505,0.20268033504505,-105.0378651,39.6985745,-105.0378823,39.6967518
-18163,10259,6036,0.2014076606309,0.2014076606309,-105.0152653,39.7874334,-105.0152693,39.7856221
-14704,5105,3799,0.199599075644316,0.199599075644316,-104.9735001,39.7272799,-104.9734712,39.7290748
-18162,2170,10259,0.118558518008842,0.118558518008842,-105.0146867,39.7884025,-105.0152653,39.7874334
-20019,4453,5501,0.145746885757253,0.145746885757253,-104.980759,39.7587503,-104.9796104,39.759719
-5830,5145,2118,0.0459910302398271,0.0459910302398271,-104.9273197,39.7310625,-104.9268844,39.7308196
-20020,5501,7075,0.147873409818305,0.147873409818305,-104.9796104,39.759719,-104.9783828,39.760656
-14776,5927,3806,0.151596310173331,0.151596310173331,-104.9804991,39.7304325,-104.9805124,39.7290692
-5853,4622,5163,0.10255879316328,0.10255879316328,-104.9274625,39.7446677,-104.9274829,39.7455899
-18343,7662,5247,0.110734380038432,0.110734380038432,-105.0351663,39.7639675,-105.0351958,39.7649631
-20022,8291,7898,0.145585163841291,0.145585163841291,-104.9912817,39.7519386,-104.9900722,39.7528603
-7192,6084,6085,0.188916282974339,0.188916282974339,-105.0300536,39.7630057,-105.0322636,39.7629835
-18345,6874,1684,0.205522453761373,0.205522453761373,-105.0351985,39.7658172,-105.0352055,39.7676655
-20542,2953,10853,0.0105529318413212,0.0105529318413212,-105.0157188,39.7584009,-105.015713,39.7584957
-18348,2429,7700,0.202520445331427,0.202520445331427,-105.0352091,39.7713194,-105.0352012,39.7731407
-20024,8856,9319,0.148299248554164,0.148299248554164,-104.988892,39.7538026,-104.9876534,39.7547364
-7238,4839,1519,0.0519761467059316,0.0519761467059316,-104.9751709,39.7092743,-104.9745633,39.7092771
-14772,923,5925,0.177924520685585,0.177924520685585,-104.9816421,39.7320276,-104.9816081,39.7304277
-20544,10831,10809,0.07258379165013,0.07258379165013,-105.0193747,39.7583443,-105.0193936,39.7576917
-5934,4646,3645,0.198637387669602,0.198637387669602,-105.0186425,39.7238822,-105.0209651,39.7238828
-20537,10850,10851,0.00393462806086889,0.00393462806086889,-105.0226484,39.7596157,-105.0226242,39.7596458
-7284,6141,11,0.135513694564746,0.135513694564746,-105.0283644,39.7451504,-105.0283851,39.746369
-5958,5230,5231,0.202816769336327,0.202816769336327,-104.9546568,39.6947809,-104.9546783,39.692957
-20538,10764,10852,0.00745697116010785,0.00745697116010785,-105.0249892,39.7609136,-105.0249031,39.7609028
-7311,5071,6157,0.164940273242935,0.164940273242935,-105.037844,39.6894614,-105.0390628,39.6883122
-5976,4624,1247,0.13286062727511,0.13286062727511,-105.0189554,39.7644371,-105.0205098,39.764433
-5978,4556,2725,0.132159028738313,0.132159028738313,-105.0220655,39.7644258,-105.0236117,39.7644248
-20539,10852,10833,0.00647861100893927,0.00647861100893927,-105.0249031,39.7609028,-105.0248283,39.7608934
-7339,6169,6170,0.0619567458929491,0.0619567458929491,-104.9601619,39.7241291,-104.9594375,39.7241351
-5998,5256,5257,0.103904946256075,0.103904946256075,-104.9671812,39.7681442,-104.9659655,39.7681412
-19289,10469,10470,0.0657689911002152,0.0657689911002152,-104.9881479,39.7392371,-104.988856,39.7394681
-20550,10854,10842,0.00418096419493106,0.00418096419493106,-105.0159697,39.7588715,-105.0159695,39.7589091
-6016,5268,3447,0.109289564409357,0.109289564409357,-104.9475125,39.7680963,-104.9462338,39.7680932
-20541,10846,2953,0.0102415664506872,0.0102415664506872,-105.0157176,39.7583088,-105.0157188,39.7584009
-6042,2870,5284,0.0497761483323909,0.0497761483323909,-104.9829275,39.7855836,-104.982919,39.785136
-20446,10802,10794,0.010877497210246,0.010877497210246,-105.0218433,39.761098,-105.0218405,39.7610002
-6066,1342,5306,0.205811743638723,0.205811743638723,-105.0226989,39.7129828,-105.0226912,39.7111319
-20547,2961,10838,0.0117661269256179,0.0117661269256179,-105.021139,39.7584434,-105.0210227,39.7583868
-7483,6261,1188,0.16816674729097,0.16816674729097,-104.9613184,39.7256069,-104.9613359,39.7271192
-6138,3644,4554,0.0976185559336041,0.0976185559336041,-105.0209565,39.7228992,-105.0220979,39.7228967
-18364,7802,1660,0.0598129332818693,0.0598129332818693,-105.0259573,39.7679612,-105.0259529,39.7674233
-7554,6302,1356,0.0804502555219789,0.0804502555219789,-105.015828,39.7832739,-105.015824,39.7825504
-6209,5412,1185,0.167137462035015,0.167137462035015,-104.9658624,39.7255988,-104.9658583,39.7271019
-6210,1185,5413,0.0233182677092941,0.0233182677092941,-104.9658583,39.7271019,-104.9658604,39.7273116
-14730,6318,6303,0.0522173167652759,0.0522173167652759,-104.9758794,39.7400231,-104.9758778,39.7395535
-20234,10715,10714,0.0286157939247338,0.0286157939247338,-104.9412314,39.693774,-104.9409313,39.6936604
-20565,1287,10855,0.00858462136960439,0.00858462136960439,-105.0205384,39.7583461,-105.020438,39.7583443
-6251,5443,779,0.0160681132894306,0.0160681132894306,-105.0250652,39.7022173,-105.0250638,39.7020728
-14783,4856,7862,0.182896538603858,0.182896538603858,-104.9828985,39.7352253,-104.982911,39.7368701
-6272,5463,5464,0.0498340640254978,0.0498340640254978,-104.9798976,39.7384177,-104.9793148,39.7384144
-20235,10714,8820,0.0168131405425372,0.0168131405425372,-104.9409313,39.6936604,-104.9407348,39.6936614
-6293,5477,3890,0.10549800375505,0.10549800375505,-104.964716,39.7383814,-104.9634822,39.7383772
-16545,7835,9934,0.137971408959184,0.137971408959184,-104.975145,39.7519832,-104.9751503,39.7507424
-6362,351,5522,0.0335008525021526,0.0335008525021526,-105.0171199,39.7741304,-105.0175119,39.7741304
-16018,9787,9788,0.0995758326234823,0.0995758326234823,-105.0053015,39.6892589,-105.0062451,39.6887348
-6387,5535,2028,0.107888528337289,0.107888528337289,-104.9923558,39.7742164,-104.9936175,39.7741835
-20242,10717,10716,0.029516495512001,0.029516495512001,-104.9410012,39.6961469,-104.9411444,39.6963884
-7774,5212,6424,0.109568567873903,0.109568567873903,-105.0174804,39.7238894,-105.0175106,39.7248745
-16546,9934,9935,0.139302196645357,0.139302196645357,-104.9751503,39.7507424,-104.9751681,39.7494897
-20562,10798,10807,0.0058401189840652,0.0058401189840652,-105.0218855,39.7619462,-105.0219538,39.7619476
-15113,3050,7229,0.0133472139691031,0.0133472139691031,-104.9963681,39.7597212,-104.996479,39.7596367
-20245,8372,6959,0.0489264341729089,0.0489264341729089,-105.0357622,39.7454303,-105.0353181,39.7451528
-11422,8078,8079,0.0484137060021889,0.0484137060021889,-105.043577,39.7835803,-105.0441387,39.7836373
-6473,5599,5600,0.108658521887425,0.108658521887425,-105.0015794,39.7184418,-105.0015966,39.7194189
-15115,7996,7997,0.209391166364433,0.209391166364433,-104.9977757,39.7584584,-104.9977757,39.7603415
-18367,7754,8093,0.0507390772270922,0.0507390772270922,-105.0259422,39.7665053,-105.0259388,39.766049
-20352,10751,9401,0.00837355044160468,0.00837355044160468,-105.0253759,39.7585688,-105.025278,39.7585714
-6492,5616,5617,0.0720767157725574,0.0720767157725574,-105.0015651,39.7393715,-105.0015669,39.7400197
-14721,2221,4871,0.160443069505019,0.160443069505019,-104.9735163,39.7337028,-104.9735383,39.7351456
-18368,8093,6894,0.0518148786998363,0.0518148786998363,-105.0259388,39.766049,-105.0259502,39.7655831
-16020,9789,9788,0.073636854952175,0.073636854952175,-105.0063551,39.6893916,-105.0062451,39.6887348
-7896,6503,6504,0.201046575537805,0.201046575537805,-104.9503891,39.7819179,-104.9503707,39.7837259
-16547,9935,3668,0.222625726498778,0.222625726498778,-104.9751681,39.7494897,-104.9751801,39.7474876
-11416,8000,8034,0.303468507056762,0.303468507056762,-105.0252653,39.7846442,-105.0287237,39.7840235
-6579,5669,5670,0.150406237761818,0.150406237761818,-105.0311012,39.7566748,-105.0310884,39.7580274
-20845,10954,10937,0.131662909083966,0.131662909083966,-105.0254122,39.760199,-105.0266441,39.7609098
-6604,5693,4324,0.222481680681729,0.222481680681729,-105.0324406,39.7067365,-105.0350413,39.7067233
-18371,5250,7594,0.0499247461563453,0.0499247461563453,-105.0259394,39.7646609,-105.0259281,39.764212
-15222,8101,8102,0.077833708774634,0.077833708774634,-105.0417114,39.7441064,-105.0426126,39.7442054
-18372,7594,5883,0.083286408265142,0.083286408265142,-105.0259281,39.764212,-105.025945,39.7634631
-6714,5766,2843,0.181402526618843,0.181402526618843,-104.9316752,39.6938788,-104.9295552,39.693859
-14742,5935,931,0.176525948040391,0.176525948040391,-104.9769887,39.7304575,-104.9770026,39.732045
-20409,8971,8976,0.00824136098890487,0.00824136098890487,-105.0250832,39.760307,-105.0250886,39.760233
-17573,10146,4643,0.00925827675066928,0.00925827675066928,-105.0192547,39.73083,-105.0192742,39.7307481
-8175,6672,3101,0.17546713620256,0.17546713620256,-104.9362682,39.7146512,-104.9362596,39.7130732
-11210,300,106,0.00724031766776508,0.00724031766776508,-104.931659,39.700286,-104.931654,39.700221
-8223,6696,951,0.177624298281023,0.177624298281023,-104.9494801,39.7305216,-104.9494887,39.732119
-6856,4317,5865,0.0513037576080921,0.0513037576080921,-105.034904,39.7149636,-105.0355038,39.7149636
-18335,7611,1689,0.102723820359578,0.102723820359578,-105.0387087,39.7667047,-105.0387013,39.7676285
-20356,10752,10753,0.178510491347886,0.178510491347886,-105.0229895,39.7619327,-105.0250779,39.761939
-6873,5878,5879,0.686284794666677,0.686284794666677,-105.045238,39.6917061,-105.0531962,39.6924757
-11609,3416,7035,0.200128365503357,0.200128365503357,-105.0346041,39.7625399,-105.0322628,39.7625513
-11610,7035,8338,0.189938999172283,0.189938999172283,-105.0322628,39.7625513,-105.0300407,39.7625615
-6895,5896,4960,0.0956843495121368,0.0956843495121368,-105.0109828,39.7056561,-105.0109882,39.7047956
-11335,8218,251,0.176906123725318,0.176906123725318,-104.9994384,39.7289153,-104.9994212,39.7305062
-17668,10162,10161,0.0392525789715303,0.0392525789715303,-104.9861062,39.7795141,-104.9856475,39.7795327
-8321,6751,5251,0.0499574491010493,0.0499574491010493,-105.0275693,39.7642092,-105.0275802,39.7646584
-17670,8260,9051,0.230562637224967,0.230562637224967,-104.9794547,39.7798315,-104.9821447,39.7799919
-8340,6769,5533,0.120999789974565,0.120999789974565,-105.0275913,39.7729556,-105.027737,39.774038
-11366,7971,1892,0.0488719799669425,0.0488719799669425,-105.0053146,39.761583,-105.0052777,39.7620216
-6977,4442,5511,0.147695461409276,0.147695461409276,-104.9759203,39.7550431,-104.974688,39.7559741
-14750,2214,929,0.185352492811126,0.185352492811126,-104.9781559,39.7337051,-104.9781467,39.7320382
-7030,4913,5988,0.198333075719104,0.198333075719104,-104.9257471,39.7346951,-104.9257168,39.7364786
-18693,5978,6025,0.00688297127309608,0.00688297127309608,-105.0391098,39.719916,-105.0391099,39.7198541
-11612,3418,742,0.19996057055502,0.19996057055502,-105.0346033,39.763439,-105.0322639,39.7634453
-20437,10795,10796,0.0230619881865373,0.0230619881865373,-105.0227368,39.7610963,-105.0226193,39.761283
-11948,8496,8497,0.0216014239716138,0.0216014239716138,-105.013905,39.7558225,-105.0139116,39.7556283
-7132,1290,6044,0.0502638300231986,0.0502638300231986,-105.0204693,39.7856314,-105.0210575,39.7856258
-11686,1032,773,0.0128283485920152,0.0128283485920152,-105.0019469,39.752933,-105.0019256,39.7530472
-8554,4804,6890,0.135875328970406,0.135875328970406,-105.0127751,39.765645,-105.0143648,39.7656412
-11767,2687,8406,0.0738017906986337,0.0738017906986337,-104.9808835,39.7532566,-104.9814866,39.7527817
-8601,2178,596,0.0528183519637533,0.0528183519637533,-105.01465,39.7765593,-105.015268,39.7765659
-7225,6106,6107,0.101643082422806,0.101643082422806,-104.9863727,39.7093097,-104.9851845,39.7093159
-11821,8422,8423,0.175711465733647,0.175711465733647,-105.0135792,39.7398604,-105.013871,39.7414246
-8624,109,720,0.104166949267626,0.104166949267626,-105.002935,39.7765792,-105.0041538,39.776566
-18552,7705,2988,0.199131268231619,0.199131268231619,-105.0422469,39.7567047,-105.0422605,39.7584955
-14770,4858,2209,0.16101488662795,0.16101488662795,-104.981675,39.7351569,-104.9816406,39.7337091
-7328,6165,6166,0.0995968460919669,0.0995968460919669,-104.9688892,39.7713666,-104.9697218,39.7719933
-12286,8526,8525,0.0214801658544325,0.0214801658544325,-105.0049596,39.7505226,-105.0047107,39.7504962
-7376,337,6196,0.0756391181616623,0.0756391181616623,-104.9373307,39.7804664,-104.9364456,39.7804736
-12217,8592,8593,0.114913209514243,0.114913209514243,-105.0036056,39.7454327,-105.0029536,39.744529
-12317,8559,2500,0.0435792910401613,0.0435792910401613,-105.0076796,39.7542461,-105.0073403,39.7545386
-8839,528,7032,0.050727128416239,0.050727128416239,-105.0322618,39.7598749,-105.032262,39.7603311
-7478,6259,1180,0.207751884347626,0.207751884347626,-104.999187,39.6994545,-104.9967587,39.6994606
-18554,9429,7706,0.20403157089995,0.20403157089995,-105.0434221,39.7548692,-105.0434221,39.7567041
-15821,8564,8565,0.0641361466923926,0.0641361466923926,-105.0273775,39.7358643,-105.0275518,39.7353033
-8860,7045,7046,0.134234542647931,0.134234542647931,-105.0314642,39.7767176,-105.0314652,39.7779248
-7498,4598,3688,0.240872387579393,0.240872387579393,-104.9610007,39.7447808,-104.9609894,39.746947
-7499,3688,6270,0.142331405185985,0.142331405185985,-104.9609894,39.746947,-104.960998,39.748227
-20649,10880,1676,0.0578550543011222,0.0578550543011222,-105.0146396,39.7675397,-105.0146419,39.76806
-12236,8586,1599,0.0967599085697604,0.0967599085697604,-105.0012044,39.74196,-105.0021858,39.7415267
-7572,5861,1309,0.178473387298321,0.178473387298321,-105.0324691,39.7149773,-105.0324406,39.7133724
-18324,7480,7524,0.15130858595047,0.15130858595047,-105.043363,39.7783777,-105.0433477,39.777017
-7598,6323,6324,0.205483069278936,0.205483069278936,-104.9663246,39.7020694,-104.9663063,39.7002215
-17836,9362,1627,0.0523901213643909,0.0523901213643909,-104.9999965,39.7692821,-104.9994072,39.7691524
-14759,7101,5464,0.170276074046912,0.170276074046912,-104.9792889,39.7368832,-104.9793148,39.7384144
-14760,5464,7128,0.178804240685068,0.178804240685068,-104.9793148,39.7384144,-104.9793265,39.7400224
-7640,6024,3875,0.0993805589791004,0.0993805589791004,-104.9453106,39.7581922,-104.944148,39.7581905
-16021,9788,9790,0.320911397883896,0.320911397883896,-105.0062451,39.6887348,-105.0063095,39.6858492
-9035,7131,7132,0.0496921831493493,0.0496921831493493,-105.0375424,39.7347779,-105.0381234,39.7347872
-18491,9168,9169,0.133423914370859,0.133423914370859,-105.0422474,39.7487571,-105.0422538,39.749957
-17837,1627,5679,0.10292857902181,0.10292857902181,-104.9994072,39.7691524,-104.9982029,39.7691518
-9059,2896,5632,0.0842038197459281,0.0842038197459281,-104.9733529,39.7551547,-104.9727182,39.7557338
-20806,7427,10935,0.00559704943884798,0.00559704943884798,-105.0369381,39.7621971,-105.0370035,39.7621946
-12938,1970,8709,0.0935507240006809,0.0935507240006809,-105.0018024,39.7442826,-105.0028925,39.7443552
-11439,511,8252,0.25940626826434,0.25940626826434,-105.0312479,39.7836347,-105.0342719,39.7834294
-7695,5168,6377,0.177825109084943,0.177825109084943,-104.9449622,39.716238,-104.9449725,39.7146388
-20708,7442,10913,0.0784445493600802,0.0784445493600802,-105.0275322,39.7638138,-105.0277761,39.7631337
-9099,6388,7159,0.131345505242465,0.131345505242465,-105.0381277,39.7475739,-105.0381363,39.7487551
-11441,8256,8255,0.0395721958074786,0.0395721958074786,-105.0155373,39.7837344,-105.0160004,39.7837363
-19809,5615,9635,0.105426130739244,0.105426130739244,-105.0015645,39.7393,-105.0021668,39.7384727
-9145,5720,7186,0.100417695742859,0.100417695742859,-105.0357487,39.7831573,-105.0369189,39.7832402
-11443,8254,8257,0.03964069530807,0.03964069530807,-105.0159925,39.7835953,-105.0155286,39.7835973
-7788,6432,6433,0.0533345329573706,0.0533345329573706,-105.0177887,39.7548225,-105.0178088,39.7553019
-12939,8709,8766,0.0775671350558112,0.0775671350558112,-105.0028925,39.7443552,-105.0021048,39.7447013
-9187,7207,7208,0.0500116374722849,0.0500116374722849,-104.9821537,39.693012,-104.9815692,39.6930097
-7811,838,6446,0.0830965282034823,0.0830965282034823,-104.9427798,39.7746589,-104.9423252,39.7753195
-7816,6449,2813,0.0739587262737054,0.0739587262737054,-104.9904536,39.7751772,-104.9913173,39.7752191
-12260,8617,8618,0.00726192949201925,0.00726192949201925,-105.0083585,39.7576557,-105.0084208,39.7577001
-20803,606,10913,0.0113017508087441,0.0113017508087441,-105.0278867,39.763078,-105.0277761,39.7631337
-9235,7240,7241,0.0498075431237363,0.0498075431237363,-104.9792633,39.7057342,-104.9786816,39.7057151
-7861,6474,6475,0.692905896897531,0.692905896897531,-105.0451381,39.7747614,-105.053246,39.7747583
-12942,8804,1331,0.0594619846778877,0.0594619846778877,-105.0013561,39.7437151,-105.0019226,39.7434049
-12264,8622,8616,0.0863852743591186,0.0863852743591186,-105.0070785,39.7566504,-105.0077835,39.757207
-7908,6511,6512,0.107336468131195,0.107336468131195,-104.940586,39.787473,-104.9405864,39.7865077
-20811,10951,7034,0.00453220039269765,0.00453220039269765,-105.0322095,39.7622183,-105.0322625,39.7622195
-13006,8912,8913,0.031616887141609,0.031616887141609,-104.9956858,39.7676849,-104.9953476,39.7678001
-7929,4175,6525,0.0337195393803404,0.0337195393803404,-104.9775465,39.6932215,-104.9772938,39.6929888
-20394,10762,10775,0.00651572160316994,0.00651572160316994,-105.0243849,39.7600288,-105.0243213,39.7599965
-20400,3591,10771,0.0086403574168429,0.0086403574168429,-105.025071,39.7608559,-105.0250699,39.7607782
-8000,6560,6561,0.05117078549911,0.05117078549911,-104.9868584,39.7241275,-104.9862601,39.7241317
-18914,10389,10392,0.00619620469246147,0.00619620469246147,-105.0126265,39.7501937,-105.0126753,39.7502349
-8024,6580,6581,0.135411748293681,0.135411748293681,-105.0113223,39.732461,-105.0128679,39.7321961
-8047,5711,6593,0.0649690182450408,0.0649690182450408,-105.0362237,39.7329601,-105.0369834,39.7329675
-20509,10841,638,0.00591881170263726,0.00591881170263726,-105.0181411,39.7583408,-105.0180723,39.7583468
-12270,8627,8518,0.0752716608672627,0.0752716608672627,-105.0066278,39.7560666,-105.0071312,39.7555112
-15918,9104,9746,0.00764030702792677,0.00764030702792677,-105.0421714,39.7165106,-105.0421231,39.7165684
-8143,6654,1583,0.150966803397046,0.150966803397046,-105.0452294,39.6895265,-105.0452106,39.6881689
-18477,2411,5542,0.101313827089111,0.101313827089111,-105.0398977,39.753016,-105.0399084,39.7521049
-15876,8978,9002,0.0205305754568531,0.0205305754568531,-105.0408265,39.7349435,-105.0410599,39.7349868
-8295,6735,6736,0.0734967400485445,0.0734967400485445,-105.0196661,39.7603379,-105.0202265,39.7608392
-12273,8629,8517,0.0368940227401467,0.0368940227401467,-105.0068222,39.7549438,-105.0069509,39.7552605
-8322,5251,6752,0.0513511942917184,0.0513511942917184,-105.0275802,39.7646584,-105.0275758,39.7651202
-17214,3774,8403,0.176505403414048,0.176505403414048,-104.9774885,39.7022712,-104.9775319,39.7038582
-11789,4445,6564,0.147259159007996,0.147259159007996,-104.9772635,39.7560534,-104.9784697,39.7551079
-8396,516,6411,0.245438474982929,0.245438474982929,-104.968998,39.788144,-104.9688032,39.7903462
-19810,9635,9643,0.17762409301406,0.17762409301406,-105.0021668,39.7384727,-105.0021748,39.7368753
-19811,9643,7122,0.176833292049994,0.176833292049994,-105.0021748,39.7368753,-105.0021749,39.735285
-9834,7540,7541,0.0505839701248518,0.0505839701248518,-105.0449514,39.7661904,-105.044947,39.7666453
-8443,1465,5441,0.103147915206822,0.103147915206822,-105.0238576,39.7038839,-105.0250601,39.7039517
-13470,9094,9095,0.186249123099868,0.186249123099868,-105.0189056,39.7254091,-105.0210758,39.7255489
-9909,7585,3060,0.206196737198557,0.206196737198557,-104.9360971,39.758301,-104.9361384,39.7601551
-8516,6868,4142,0.0958725861464383,0.0958725861464383,-104.9838262,39.7147216,-104.9827054,39.7147303
-18481,9120,6391,0.130087180946324,0.130087180946324,-105.0398842,39.7487505,-105.0398871,39.7475806
-8559,1248,4557,0.13273864991069,0.13273864991069,-105.0205165,39.7656381,-105.0220695,39.765634
-18488,9153,9154,0.0316379611455697,0.0316379611455697,-105.0338511,39.7495101,-105.0338562,39.7492256
-10040,7380,7647,0.073513516250253,0.073513516250253,-105.0337242,39.7277125,-105.0345838,39.7277084
-8638,6926,6927,0.0519431626477688,0.0519431626477688,-104.9982022,39.7580108,-104.9980305,39.7584589
-8640,6928,2302,0.107037203280329,0.107037203280329,-105.0086993,39.6967351,-105.0087181,39.6957726
-18492,9169,9170,0.136492159060533,0.136492159060533,-105.0422538,39.749957,-105.04225,39.7511845
-8683,1000,4222,0.0557449369548998,0.0557449369548998,-104.9875739,39.7819524,-104.9869216,39.781959
-15905,8603,8604,0.0748338508215397,0.0748338508215397,-105.0285111,39.7222816,-105.0283446,39.7216209
-13757,8439,9181,0.0861617636196398,0.0861617636196398,-105.0164414,39.7435744,-105.0158598,39.7429416
-10162,2158,7701,0.118289099292956,0.118289099292956,-105.0144627,39.756468,-105.0158374,39.7565896
-8752,6982,6983,0.20266520881126,0.20266520881126,-105.040852,39.7021868,-105.0408606,39.7003642
-12326,8650,8651,0.106050821827968,0.106050821827968,-105.005782,39.7481919,-105.0047136,39.7486765
-18298,6995,6996,0.187375849458261,0.187375849458261,-105.0409786,39.77838,-105.0409867,39.7766949
-14103,418,421,0.212232135618177,0.212232135618177,-104.9449438,39.7443271,-104.9424633,39.7443997
-11436,8255,7984,0.498708139076575,0.498708139076575,-105.0160004,39.7837363,-105.0218262,39.7840053
-18497,9201,9212,0.134547599555241,0.134547599555241,-105.0352011,39.7487792,-105.0351931,39.7499892
-19881,2617,10410,0.177201589274352,0.177201589274352,-104.9957832,39.7225228,-104.9957751,39.7209292
-8821,13,7020,0.00925156011318802,0.00925156011318802,-105.0315114,39.7463778,-105.0315108,39.746461
-14676,5941,3794,0.153141383772443,0.153141383772443,-104.9700474,39.7304587,-104.9700349,39.7290815
-8846,6085,742,0.0513498235273795,0.0513498235273795,-105.0322636,39.7629835,-105.0322639,39.7634453
-19287,9967,10468,0.111280897910296,0.111280897910296,-104.986072,39.7392385,-104.9873734,39.7392289
-8898,267,7062,0.0377688740912094,0.0377688740912094,-104.9500299,39.6896634,-104.9500436,39.6893239
-20847,10946,10950,0.100177888201708,0.100177888201708,-105.0280565,39.761441,-105.0289678,39.7620075
-18612,1850,9261,0.181237135841786,0.181237135841786,-105.0355172,39.72133,-105.0355223,39.7197001
-18361,7374,7802,0.0447005696877022,0.0447005696877022,-105.0259557,39.7683632,-105.0259573,39.7679612
-8973,7099,900,0.0469763030340631,0.0469763030340631,-104.9417431,39.7640544,-104.9417276,39.7644767
-14047,4836,389,0.0490717904305928,0.0490717904305928,-104.9997732,39.7140054,-105.0001337,39.7136621
-12310,8644,8645,0.447909393812679,0.447909393812679,-105.0077069,39.7535527,-105.0040083,39.7506996
-8996,7110,7111,0.00729890302499032,0.00729890302499032,-105.027555,39.7347529,-105.0276403,39.7347505
-8997,7111,7112,0.0821157489631964,0.0821157489631964,-105.0276403,39.7347505,-105.0286006,39.7347486
-19296,10470,10471,0.0561834077462884,0.0561834077462884,-104.988856,39.7394681,-104.9888451,39.7389629
-9018,7120,3944,0.0625799505809278,0.0625799505809278,-104.9994256,39.7352803,-105.0001574,39.7352867
-20228,8758,8818,0.0478043651923457,0.0478043651923457,-104.9412322,39.6947542,-104.9407334,39.6945605
-14140,9284,9285,0.260183964007922,0.260183964007922,-104.9725733,39.7796422,-104.9695286,39.7796372
-10472,1612,7829,0.00870018444151776,0.00870018444151776,-104.9918236,39.7578438,-104.9917479,39.7578961
-9067,7146,1144,0.138617590256283,0.138617590256283,-104.9721238,39.7620063,-104.9721151,39.7632529
-9068,1144,873,0.140306927162159,0.140306927162159,-104.9721151,39.7632529,-104.9721084,39.7645147
-16081,9816,366,0.168828958006928,0.168828958006928,-104.962098,39.7800102,-104.9601224,39.7799975
-19882,10410,7867,0.175655958248639,0.175655958248639,-104.9957751,39.7209292,-104.9957671,39.7193495
-9135,5185,5653,0.105406920017136,0.105406920017136,-105.0383678,39.7245391,-105.0383801,39.725487
-19292,10469,10471,0.0669585268555214,0.0669585268555214,-104.9881479,39.7392371,-104.9888451,39.7389629
-14789,9417,9415,0.0546470920616291,0.0546470920616291,-104.9903058,39.7738874,-104.9903152,39.773396
-14678,9330,9301,0.189092694124095,0.189092694124095,-104.9700355,39.7272893,-104.9700183,39.7255888
-16087,9493,9819,0.0602377998698223,0.0602377998698223,-104.9498899,39.7814689,-104.950362,39.7810666
-9262,5135,5150,0.0243532262877801,0.0243532262877801,-104.9373097,39.7338382,-104.9373129,39.7340572
-14663,9300,6543,0.20364721866244,0.20364721866244,-104.9723445,39.725579,-104.9723281,39.7237476
-9311,4256,7276,0.202152573812647,0.202152573812647,-104.9652055,39.6965834,-104.9652088,39.6947654
-20396,10777,10758,0.00300729649615889,0.00300729649615889,-105.0244301,39.7608435,-105.0243956,39.7608382
-16088,9819,9820,0.154328326827327,0.154328326827327,-104.950362,39.7810666,-104.9518785,39.7803129
-9435,7345,7346,0.0190810494123846,0.0190810494123846,-104.9667331,39.7181803,-104.9667331,39.7183519
-18624,6136,9460,0.0524172265643075,0.0524172265643075,-105.0288404,39.7288083,-105.0282321,39.7288662
-20568,10857,10787,0.0362929048752591,0.0362929048752591,-105.0184643,39.7595354,-105.0188651,39.7596431
-18625,9460,2258,0.0501132934741927,0.0501132934741927,-105.0282321,39.7288662,-105.0276461,39.7288658
-15897,9441,9042,0.0240046794304529,0.0240046794304529,-105.0429186,39.7342294,-105.0428737,39.7340163
-16387,9458,9459,0.0276860712412084,0.0276860712412084,-104.9711616,39.7030276,-104.9714714,39.7030996
-11214,8163,391,0.128403364715461,0.128403364715461,-104.9314767,39.7033354,-104.931634,39.702187
-9803,6610,7523,0.196894261944695,0.196894261944695,-104.9280463,39.7365084,-104.9280376,39.7382791
-15456,9612,9605,0.0879146885908635,0.0879146885908635,-105.0005861,39.7432358,-105.000722,39.7440195
-18630,5862,9484,0.00360275623818702,0.00360275623818702,-105.0330764,39.7149803,-105.0330762,39.7149479
-11351,4798,8227,0.0561921807720747,0.0561921807720747,-105.0131467,39.7620198,-105.0138041,39.7620198
-9936,4537,7602,0.2557209782077,0.2557209782077,-105.0221238,39.7283783,-105.025114,39.7283922
-11457,8266,8267,0.4367852597313,0.4367852597313,-104.9731431,39.7798728,-104.9782529,39.7799692
-11491,6185,8281,0.106123839405449,0.106123839405449,-104.993798,39.7520123,-104.9929142,39.7513421
-11244,8185,8162,0.0231522248365289,0.0231522248365289,-104.936636,39.7114077,-104.936452,39.711255
-18634,4045,7865,0.17751242949901,0.17751242949901,-105.0331246,39.7181593,-105.0331005,39.7197556
-18698,5868,1320,0.176912291429695,0.176912291429695,-105.0390984,39.7149619,-105.0391059,39.7133709
-10141,6347,3032,0.0935494731718596,0.0935494731718596,-104.9476508,39.7582147,-104.9476453,39.759056
-11771,8406,4385,0.0534654755495647,0.0534654755495647,-104.9814866,39.7527817,-104.9819456,39.7531083
-19883,7867,3716,0.104069204828323,0.104069204828323,-104.9957671,39.7193495,-104.9957744,39.7184136
-11834,8430,8431,0.087830432319228,0.087830432319228,-105.0156397,39.7432416,-105.0163799,39.7437893
-10212,7733,7734,0.0513578872611552,0.0513578872611552,-104.9757679,39.6893761,-104.9751677,39.6893788
-19884,3716,7405,0.200874185823139,0.200874185823139,-104.9957744,39.7184136,-104.9957689,39.7166071
-11852,8443,8444,0.0120541689820552,0.0120541689820552,-105.0254023,39.7603049,-105.0252881,39.7602413
-10235,2742,7741,0.0499109655825577,0.0499109655825577,-104.9558447,39.6893365,-104.9552614,39.6893365
-19913,10244,6599,0.17675930412674,0.17675930412674,-104.9981677,39.7336833,-104.9981408,39.7320938
-15270,8458,8459,0.0175633548114394,0.0175633548114394,-104.9284834,39.705337,-104.9284002,39.7051926
-10253,1700,7749,0.00587012913148048,0.00587012913148048,-104.9383741,39.6893266,-104.9383055,39.6893261
-20002,10691,10692,0.0226226455892357,0.0226226455892357,-105.0053729,39.7533322,-105.0051878,39.7534776
-11911,8472,8473,0.00378078844043477,0.00378078844043477,-105.0000361,39.7512121,-105.0000669,39.7511877
-10274,3194,6110,0.20159656533977,0.20159656533977,-104.9815359,39.7111143,-104.9815389,39.7093013
-11953,8041,6568,0.145503350739709,0.145503350739709,-104.981415,39.7555288,-104.9802246,39.7564641
-10298,6399,3614,0.133348580117153,0.133348580117153,-104.9308332,39.7717367,-104.9293312,39.771412
-11992,5503,7077,0.147510556806948,0.147510556806948,-104.9804313,39.7603548,-104.9792067,39.7612895
-19496,10524,7457,0.0831219334199701,0.0831219334199701,-104.9883547,39.7082799,-104.9883639,39.7075324
-10398,7619,7807,0.0285985320629965,0.0285985320629965,-104.939234,39.787086,-104.9388993,39.787086
-15922,1816,9751,0.110608853519784,0.110608853519784,-105.0268596,39.7287066,-105.0270382,39.7277214
-11917,8476,1302,0.0550753650708828,0.0550753650708828,-105.0028542,39.7497443,-105.0032204,39.7501518
-20647,10880,10034,0.0300539000602635,0.0300539000602635,-105.0146396,39.7675397,-105.0143619,39.7673739
-10474,6225,7658,0.277054905467397,0.277054905467397,-105.0462701,39.7258018,-105.0462812,39.7282934
-11996,6576,4457,0.148175074796056,0.148175074796056,-104.9837118,39.7591589,-104.9824777,39.7600947
-12215,8590,8591,0.0896761056675667,0.0896761056675667,-105.0062495,39.7427207,-105.0069168,39.7433429
-12240,1246,8611,0.0161729384224601,0.0161729384224601,-105.0017374,39.7492343,-105.0016014,39.7493354
-10602,7875,741,0.0900908109241702,0.0900908109241702,-104.9564659,39.7755986,-104.9564618,39.7764088
-16451,9903,9904,0.00638068663878895,0.00638068663878895,-104.9732302,39.6979873,-104.9731712,39.6980224
-12161,8568,8315,0.127606752812743,0.127606752812743,-105.0063682,39.7484987,-105.0053848,39.7476354
-16022,9791,9792,0.180221045869865,0.180221045869865,-105.0045854,39.6893105,-105.0031651,39.6881137
-12376,7853,4674,0.113693675785271,0.113693675785271,-104.9923076,39.7766218,-104.993638,39.7766218
-12377,4674,8679,0.101029871301971,0.101029871301971,-104.993638,39.7766218,-104.9948199,39.7766009
-19472,10516,7476,0.0110661304777454,0.0110661304777454,-104.9902729,39.7085705,-104.9902755,39.708471
-16024,363,9793,0.0338194849383131,0.0338194849383131,-105.0049362,39.6874613,-105.0047404,39.6877255
-12518,5916,3788,0.153505057727295,0.153505057727295,-104.960135,39.730487,-104.9601881,39.7291071
-10815,3667,7993,0.06101955432425,0.06101955432425,-104.9746946,39.7474748,-104.9747549,39.746928
-17063,2247,4880,0.17655557289719,0.17655557289719,-104.9616491,39.7334649,-104.9616527,39.7350527
-18644,1374,1318,0.176938793518256,0.176938793518256,-105.0378774,39.7117812,-105.0378936,39.7133724
-20668,1127,10890,0.00915451265400173,0.00915451265400173,-105.0404877,39.7653392,-105.0403806,39.7653384
-15804,1934,9711,0.166526724215667,0.166526724215667,-105.0322592,39.738485,-105.0322666,39.7399826
-15805,9711,9506,0.0388070303408929,0.0388070303408929,-105.0322666,39.7399826,-105.0322667,39.7403316
-15809,9713,7112,0.0121509406944637,0.0121509406944637,-105.0286059,39.7348578,-105.0286006,39.7347486
-17109,4052,8135,0.162752784015343,0.162752784015343,-104.9579299,39.7478129,-104.9597582,39.7482207
-12609,7223,8772,0.0487324288024552,0.0487324288024552,-104.9964257,39.7289087,-104.9969955,39.7289027
-10935,6177,3306,0.106502895543558,0.106502895543558,-104.9853166,39.7585655,-104.9862237,39.7592221
-10936,3306,8049,0.0536769065211004,0.0536769065211004,-104.9862237,39.7592221,-104.9866649,39.7595656
-16203,7727,9845,1.20908168114497,1.20908168114497,-104.9810119,39.6894094,-104.9810466,39.6785359
-10955,8058,8059,0.079137340429329,0.079137340429329,-105.0040758,39.7305164,-105.0050012,39.7305205
-16612,9327,9942,0.147120185144049,0.147120185144049,-104.9836296,39.7497738,-104.9824158,39.7507117
-17066,5478,9963,0.164315977100666,0.164315977100666,-104.9616347,39.7383964,-104.9616093,39.739874
-17067,9963,10069,0.0117569437064922,0.0117569437064922,-104.9616093,39.739874,-104.9616202,39.7399794
-12661,6331,6548,0.107973460603441,0.107973460603441,-104.9824024,39.7231556,-104.9823535,39.7241259
-12679,3638,8797,0.0132415259966435,0.0132415259966435,-104.9499674,39.712765,-104.9499588,39.7128839
-16962,10044,10040,0.011239967337662,0.011239967337662,-105.0165756,39.7549307,-105.0167064,39.7549204
-12708,6861,5165,0.179825321478717,0.179825321478717,-104.9497683,39.7146491,-104.9497617,39.7162663
-11020,1485,143,0.200555984903635,0.200555984903635,-104.9991903,39.6948908,-104.9992288,39.6930874
-11021,143,8087,0.297571119969413,0.297571119969413,-104.9992288,39.6930874,-104.9992149,39.6904113
-17011,9424,10052,0.0266755832635793,0.0266755832635793,-105.0159208,39.7548693,-105.0157808,39.7546549
-12731,8820,7196,0.0815503609966838,0.0815503609966838,-104.9407348,39.6936614,-104.940735,39.692928
-17038,10062,9210,0.00792923279445615,0.00792923279445615,-105.0192815,39.7574299,-105.0192694,39.7575006
-11062,3436,7764,0.0490279707439403,0.0490279707439403,-105.0346033,39.7783879,-105.035177,39.7783841
-16025,9793,9792,0.141538634561804,0.141538634561804,-105.0047404,39.6877255,-105.0031651,39.6881137
-12773,8830,4166,0.0867031847297172,0.0867031847297172,-104.9732562,39.7194083,-104.972908,39.7201406
-16209,6627,5825,0.203615270524375,0.203615270524375,-104.9787159,39.6929842,-104.9786761,39.6911533
-16207,7210,6624,0.114867174949551,0.114867174949551,-104.9798457,39.6930109,-104.9798363,39.6940439
-16210,5825,7730,0.194825716270604,0.194825716270604,-104.9786761,39.6911533,-104.9786837,39.6894012
-13015,8917,8918,0.0110325419879542,0.0110325419879542,-104.9949225,39.7698636,-104.9947937,39.769857
-13019,8923,8924,0.0459300988872919,0.0459300988872919,-104.9942478,39.7699708,-104.9947852,39.7699691
-11247,8187,5274,0.160867422208887,0.160867422208887,-104.9332506,39.7096719,-104.93153,39.709088
-19514,10535,10538,0.0037920381346196,0.0037920381346196,-104.9882297,39.7088075,-104.9881977,39.7087839
-13024,6190,280,0.0860979970314494,0.0860979970314494,-104.9857782,39.7801773,-104.9858487,39.7794049
-11276,8174,8198,0.367460344283523,0.367460344283523,-104.9406492,39.7073573,-104.9363539,39.7073938
-18156,4088,6034,0.199039273787356,0.199039273787356,-105.0129501,39.7838266,-105.0129545,39.7856166
-13094,1749,8958,0.0802223716795591,0.0802223716795591,-104.9721944,39.7142027,-104.9728651,39.714707
-11325,5154,2237,0.0295446835402977,0.0295446835402977,-104.930434,39.732587,-104.9303867,39.7328502
-18719,4048,7409,0.17730031135953,0.17730031135953,-105.0343046,39.7181492,-105.0343048,39.7165547
-13118,8967,1742,0.0145216501585431,0.0145216501585431,-104.9850034,39.7676171,-104.9851236,39.7677094
-18386,8971,8972,0.00871865668631088,0.00871865668631088,-105.0250832,39.760307,-105.025167,39.7603517
-13072,8913,8952,0.0749880743663527,0.0749880743663527,-104.9953476,39.7678001,-104.9945443,39.7680713
-17640,230,8241,0.144923812025645,0.144923812025645,-104.9472475,39.7797519,-104.9455738,39.7799622
-13560,9033,578,0.049912950240993,0.049912950240993,-105.0111825,39.7228848,-105.0107342,39.7225974
-11377,8237,4850,0.0778446846789704,0.0778446846789704,-104.9963555,39.757081,-104.9969821,39.757589
-18720,7409,5864,0.175843787012913,0.175843787012913,-105.0343048,39.7165547,-105.0343073,39.7149733
-11410,2864,7808,0.201887571458386,0.201887571458386,-104.9858115,39.7855801,-104.9857845,39.7873956
-11526,8300,809,0.0681077085457417,0.0681077085457417,-105.0260499,39.7560402,-105.026046,39.7554277
-18653,7653,10176,0.157020875630107,0.157020875630107,-105.0400098,39.7282525,-105.0399856,39.7268405
-13241,7916,4418,0.196768399976565,0.196768399976565,-105.0275054,39.7094042,-105.0298056,39.7094174
-11566,7031,7379,0.100426092571383,0.100426092571383,-105.0322607,39.7580218,-105.0334355,39.7580283
-11568,7379,1594,0.158671241159827,0.158671241159827,-105.0334355,39.7580283,-105.0340269,39.7566757
-17820,10186,10187,0.0184687744290435,0.0184687744290435,-105.0007327,39.7634893,-105.0006185,39.7636303
-13263,4963,6826,0.0748897830948627,0.0748897830948627,-105.0432124,39.7049338,-105.0432124,39.7042603
-11599,7782,8332,0.0501574795892601,0.0501574795892601,-105.0392921,39.7621196,-105.0398789,39.7621198
-11600,8332,1125,0.0495676895406725,0.0495676895406725,-105.0398789,39.7621198,-105.0404588,39.7621199
-11644,4658,8348,0.011012895464713,0.011012895464713,-105.0191633,39.7552936,-105.0190347,39.7552995
-18918,10397,10398,0.0105062475981655,0.0105062475981655,-105.011825,39.749838,-105.0118932,39.7497594
-17913,6562,4748,0.176744370871331,0.176744370871331,-104.9856207,39.7241273,-104.9856194,39.7225378
-11715,8369,8370,0.101679025311835,0.101679025311835,-105.0381422,39.7427432,-105.0393314,39.7427374
-11747,8387,8388,0.0596706311453888,0.0596706311453888,-105.0139458,39.741431,-105.0138882,39.7419658
-11775,8121,2683,0.119321215072029,0.119321215072029,-104.9781346,39.7526951,-104.9790985,39.751919
-13389,8267,9048,0.0706232625221708,0.0706232625221708,-104.9782529,39.7799692,-104.9790788,39.7799923
-11997,4457,5505,0.144543593212435,0.144543593212435,-104.9824777,39.7600947,-104.9812949,39.7610237
-19642,10599,10600,0.00461558236551731,0.00461558236551731,-104.9879173,39.7068487,-104.9879279,39.706808
-12058,153,3776,0.311946607437041,0.311946607437041,-104.9572293,39.7448211,-104.9578598,39.7475843
-13750,6895,9177,0.1538081352177,0.1538081352177,-104.9317267,39.7692334,-104.931781,39.770616
-12164,4818,7560,0.10615031357403,0.10615031357403,-104.9979466,39.7514927,-104.9970625,39.7508224
-15934,6257,9756,0.181030993335028,0.181030993335028,-104.9961632,39.6984894,-104.9962839,39.7001148
-18568,10324,10321,0.144976741381278,0.144976741381278,-105.0327262,39.781661,-105.0330975,39.7803888
-20260,6471,10699,0.00720326005355295,0.00720326005355295,-105.0440839,39.7747614,-105.0440797,39.7748261
-12382,440,8680,0.0360714923590191,0.0360714923590191,-104.969326,39.7033402,-104.9691913,39.7036476
-13919,482,483,0.00751372921095178,0.00751372921095178,-104.9858803,39.7012654,-104.9859077,39.7013296
-20414,3586,10773,0.00983155874827391,0.00983155874827391,-105.0238257,39.7607202,-105.0238489,39.7606336
-12480,8712,8713,0.0991407463070431,0.0991407463070431,-104.9675147,39.6929637,-104.966356,39.6929637
-15455,9611,9612,0.086225314993736,0.086225314993736,-105.0002927,39.7424939,-105.0005861,39.7432358
-20417,8993,10775,0.0123681069665026,0.0123681069665026,-105.0243946,39.7599006,-105.0243213,39.7599965
-19623,10508,10591,0.0688242418092362,0.0688242418092362,-104.9902611,39.7099214,-104.9910656,39.7099299
-14087,6816,2943,0.102402811156445,0.102402811156445,-104.9246085,39.7113484,-104.9258054,39.711367
-12571,8755,8756,0.0991408859101036,0.0991408859101036,-104.9430353,39.6947545,-104.9418766,39.6947611
-18658,9831,7643,0.17655772025733,0.17655772025733,-105.0306678,39.7293074,-105.030657,39.7277196
-16026,9792,9793,0.141538634561804,0.141538634561804,-105.0031651,39.6881137,-105.0047404,39.6877255
-14200,5104,8831,0.0500819471783367,0.0500819471783367,-104.973501,39.7255812,-104.9729154,39.7255792
-16028,9794,9795,0.0352990859554557,0.0352990859554557,-105.0152372,39.6892461,-105.0155912,39.6894091
-12690,8805,8806,0.0205962859747724,0.0205962859747724,-104.9534009,39.718219,-104.953405,39.7180338
-14297,1952,9317,0.0799385706307454,0.0799385706307454,-104.9402458,39.7146371,-104.9406062,39.7153004
-12747,5350,4220,0.0793424677909429,0.0793424677909429,-104.928405,39.689348,-104.9274781,39.6893679
-16029,9796,9797,0.0144472492683917,0.0144472492683917,-105.0121361,39.6892112,-105.0122561,39.6891198
-20288,6472,10687,0.0642398609947935,0.0642398609947935,-105.0445755,39.7747614,-105.0445822,39.7741837
-14311,8859,8501,0.0340924315859818,0.0340924315859818,-104.9873914,39.7526692,-104.9871043,39.7524564
-14330,602,8973,0.0577848630730138,0.0577848630730138,-104.9952229,39.7691313,-104.9948538,39.7695667
-16030,9797,9798,0.0484390320890552,0.0484390320890552,-105.0122561,39.6891198,-105.012394,39.6886973
-16031,9798,9799,0.00754569346896809,0.00754569346896809,-105.012394,39.6886973,-105.0124128,39.688631
-14334,2420,8925,0.0583291679544673,0.0583291679544673,-104.9948281,39.7704903,-104.9949053,39.7699691
-12784,8834,5470,0.171286135301765,0.171286135301765,-104.9730073,39.7368668,-104.9730156,39.7384072
-12785,5470,8835,0.178924287864237,0.178924287864237,-104.9730156,39.7384072,-104.9730207,39.7400163
-16033,9799,9800,0.00706845342179734,0.00706845342179734,-105.0124128,39.688631,-105.0124316,39.6885691
-14357,513,9331,0.0549879463430077,0.0549879463430077,-105.0345487,39.7837339,-105.0351853,39.7838062
-12804,3763,2560,0.0898130023336766,0.0898130023336766,-105.0064169,39.7854508,-105.0064215,39.7862585
-12820,8849,8848,0.188203677867594,0.188203677867594,-104.9966205,39.782197,-104.9987337,39.782674
-16035,9800,6871,0.0378217549395311,0.0378217549395311,-105.0124316,39.6885691,-105.0125152,39.6882351
-20159,6155,10163,0.0614761289722609,0.0614761289722609,-104.9848557,39.7798784,-104.9855751,39.7798803
-12915,967,5281,0.138474892352542,0.138474892352542,-104.9838014,39.7234262,-104.982597,39.7225939
-16687,9988,8314,0.0384286340006129,0.0384286340006129,-105.0043843,39.7477818,-105.0042918,39.74812
-12991,8908,306,0.0182421240862306,0.0182421240862306,-105.0289792,39.7622112,-105.029097,39.762348
-13032,8926,8928,0.185901221322606,0.185901221322606,-104.989367,39.779071,-104.9872354,39.7794049
-16689,1824,9989,0.0121513664645164,0.0121513664645164,-105.0068707,39.7455494,-105.00675,39.7456071
-13107,8963,8964,0.0484369444463125,0.0484369444463125,-104.9950178,39.7638741,-104.9950202,39.7634385
-19516,10539,10536,0.00249155177103479,0.00249155177103479,-104.9878821,39.7087971,-104.9879104,39.7088024
-19470,10514,10515,0.0196261730033966,0.0196261730033966,-104.9902714,39.7087938,-104.9902726,39.7086173
-13156,8988,8989,0.00631722030409862,0.00631722030409862,-105.0192467,39.7575819,-105.0193135,39.7576062
-19649,10600,10601,0.0174353644977756,0.0174353644977756,-104.9879279,39.706808,-104.9879279,39.7066512
-18928,10405,10396,0.00112670264684339,0.00112670264684339,-105.0109524,39.7503673,-105.0109587,39.7503762
-18410,10288,8327,0.00700530123739539,0.00700530123739539,-105.0292173,39.7620512,-105.0292171,39.7621142
-14672,9414,4877,0.190941051800692,0.190941051800692,-104.9700963,39.736882,-104.9700645,39.735165
-14673,4877,2227,0.162460717202061,0.162460717202061,-104.9700645,39.735165,-104.9700793,39.733704
-13231,4409,9009,0.223227137223831,0.223227137223831,-105.0298056,39.7022132,-105.0324149,39.7022132
-237,31,134,0.108163538194537,0.108163538194537,-104.9701337,39.6879245,-104.969078,39.6873895
-14831,8322,5668,0.0494625040984646,0.0494625040984646,-105.0305079,39.754821,-105.0310864,39.7548296
-18415,8376,3409,0.101754880454598,0.101754880454598,-105.0358032,39.7543633,-105.0346129,39.7543674
-15848,9733,9731,0.0169747446876837,0.0169747446876837,-105.0423259,39.7305643,-105.0422615,39.7304199
-13335,3971,7017,0.0998321056196178,0.0998321056196178,-105.0298103,39.7311516,-105.0309776,39.7311384
-18626,2258,9475,0.0453120140623152,0.0453120140623152,-105.0276461,39.7288658,-105.0271164,39.7288559
-13471,9095,9092,0.294331677800491,0.294331677800491,-105.0210758,39.7255489,-105.0245174,39.7255447
-13512,7797,9114,0.0647363210214912,0.0647363210214912,-105.013565,39.7254886,-105.0128101,39.7255315
-15901,9499,9500,0.157325995690783,0.157325995690783,-105.023521,39.7294033,-105.0253342,39.729164
-13697,9167,7423,0.127782150083045,0.127782150083045,-104.9929494,39.6966756,-104.9944429,39.6966822
-20289,10687,10697,0.00276887237539732,0.00276887237539732,-105.0445822,39.7741837,-105.0445825,39.7741588
-13718,8097,9171,0.00881240787098174,0.00881240787098174,-105.019205,39.6967483,-105.019308,39.6967483
-13751,9178,9130,0.0262505906254233,0.0262505906254233,-105.0164243,39.7306043,-105.0161204,39.730571
-15391,9259,9571,0.107861175514815,0.107861175514815,-104.9593096,39.7144759,-104.9605702,39.7144511
-15783,2106,9596,0.166115711722291,0.166115711722291,-105.0232102,39.7379438,-105.0247945,39.7370792
-13852,1774,4412,0.0465225826542141,0.0465225826542141,-104.9769161,39.7038457,-104.9763723,39.7038488
-20380,10763,10764,0.00723047037301379,0.00723047037301379,-105.0250727,39.760924,-105.0249892,39.7609136
-15452,9609,9598,0.128875611115748,0.128875611115748,-105.0003045,39.7431574,-104.9998109,39.7420623
-14144,9287,4651,0.182099578171645,0.182099578171645,-105.0165756,39.7450309,-105.0171429,39.7434524
-15807,9712,7111,0.0179279183487844,0.0179279183487844,-105.0276269,39.7349114,-105.0276403,39.7347505
-14230,8860,4113,0.0915086936553939,0.0915086936553939,-104.9520697,39.7256077,-104.9509997,39.7256047
-15819,9705,8564,0.0112418070831931,0.0112418070831931,-105.0273775,39.7359654,-105.0273775,39.7358643
-14250,8157,7606,0.0899264482990573,0.0899264482990573,-104.9393188,39.7253022,-104.9382673,39.7253035
-19499,10526,10527,0.0418767441965843,0.0418767441965843,-104.9883666,39.7071894,-104.9883695,39.7068128
-16078,9814,9815,0.177867255933272,0.177867255933272,-104.974902,39.7795432,-104.9728236,39.7796294
-14354,5520,6454,0.134959237439496,0.134959237439496,-105.0112082,39.7741318,-105.0112167,39.7753455
-16224,5835,9851,0.203722282298932,0.203722282298932,-104.9563972,39.6911319,-104.9563865,39.692964
-14425,1233,6137,0.0491477874140339,0.0491477874140339,-105.0281917,39.7560463,-105.0287666,39.7560413
-16468,9914,9902,0.117059110726511,0.117059110726511,-104.9726489,39.6941061,-104.9732597,39.6931641
-16500,8890,8891,0.0884309215437497,0.0884309215437497,-105.0029709,39.7443191,-105.0038584,39.7439107
-16591,9948,8492,0.14561270804365,0.14561270804365,-104.9993873,39.7470087,-104.998183,39.7479347
-16470,9915,3282,0.193717589764618,0.193717589764618,-104.9689488,39.7037929,-104.9687946,39.7020548
-14541,6915,9375,0.0102720812466755,0.0102720812466755,-105.0251451,39.7766366,-105.0252653,39.7766366
-16501,8891,3167,0.0148460110144783,0.0148460110144783,-105.0038584,39.7439107,-105.00401,39.7438456
-16593,9949,9950,0.145366288858291,0.145366288858291,-105.0003016,39.7477141,-104.9990547,39.7486029
-14609,8990,8994,0.00979628795431279,0.00979628795431279,-105.0252879,39.7604305,-105.0252881,39.7603424
-14794,3335,7882,0.0961603685796077,0.0961603685796077,-104.9574452,39.7336966,-104.9563208,39.7337098
-17101,332,10014,0.240821045601335,0.240821045601335,-104.9554298,39.7451641,-104.952676,39.7456193
-14816,9424,9425,0.0673114946358147,0.0673114946358147,-105.0159208,39.7548693,-105.0167051,39.7548156
-17065,9474,5478,0.175247470145414,0.175247470145414,-104.9616204,39.7368204,-104.9616347,39.7383964
-15103,3050,9489,0.102745543982247,0.102745543982247,-104.9963681,39.7597212,-104.9963423,39.760645
-16898,8714,8743,0.201991786328297,0.201991786328297,-104.9657828,39.6929687,-104.9658013,39.6947852
-16402,9880,9878,0.04752967411177,0.04752967411177,-104.9718617,39.7035846,-104.971336,39.7034463
-16959,10041,10042,0.0119234352124219,0.0119234352124219,-105.0159755,39.75567,-105.0160419,39.7555757
-16556,9939,2889,0.0528287697048915,0.0528287697048915,-104.9739728,39.7494793,-104.9733549,39.749474
-18646,5867,7412,0.177003576876814,0.177003576876814,-105.0378886,39.7149662,-105.0379016,39.716558
-16623,9957,9958,0.00927766896119108,0.00927766896119108,-104.9856428,39.7393293,-104.9855355,39.7393169
-17017,10056,10054,0.00431206144532878,0.00431206144532878,-105.0167598,39.7546225,-105.0167692,39.7546606
-16635,9967,9937,0.0755376260933099,0.0755376260933099,-104.986072,39.7392385,-104.9859915,39.738562
-16636,9937,9968,0.0848568890148885,0.0848568890148885,-104.9859915,39.738562,-104.9849991,39.7385579
-17507,8389,10114,0.0670519033214907,0.0670519033214907,-105.0124419,39.7396939,-105.0124916,39.7402957
-17069,675,9465,0.179146976203574,0.179146976203574,-104.961623,39.7416085,-104.9615988,39.7432195
-17040,8988,10063,0.00586346085648923,0.00586346085648923,-105.0192467,39.7575819,-105.0192332,39.7576336
-18726,6207,7644,0.18227085937915,0.18227085937915,-105.0318828,39.7260783,-105.0318854,39.7277175
-18724,4060,7415,0.175525264809921,0.175525264809921,-105.0439098,39.7181494,-105.0438828,39.716571
-16759,10010,55,0.0502605990705626,0.0502605990705626,-104.950646,39.6997437,-104.9506434,39.7001957
-17565,10138,8539,0.0573375717149566,0.0573375717149566,-104.9667127,39.7813542,-104.9669081,39.7808609
-17283,8717,8746,0.200951019692623,0.200951019692623,-104.9599663,39.6929697,-104.9599905,39.6947768
-17285,76,3515,0.20373476556842,0.20373476556842,-104.9646375,39.7002188,-104.9646237,39.6983866
-17286,3515,4257,0.200873634983474,0.200873634983474,-104.9646237,39.6983866,-104.9646237,39.6965801
-17288,10023,5839,0.200541247802215,0.200541247802215,-104.9517951,39.692944,-104.9518032,39.6911405
-18744,6227,5190,0.106449102002429,0.106449102002429,-105.0433385,39.72552,-105.0433305,39.7245627
-17655,10140,480,0.0210901662616695,0.0210901662616695,-104.967225,39.7796681,-104.9669782,39.7796681
-17657,8540,9827,0.194565529373187,0.194565529373187,-104.969601,39.7801972,-104.9718556,39.7799532
-17427,10105,10106,0.0219929458534896,0.0219929458534896,-104.9828833,39.6888958,-104.9831403,39.6888986
-17857,10200,10197,0.0144828525731025,0.0144828525731025,-104.9731394,39.7883607,-104.9732548,39.7884561
-18236,7037,3424,0.201298115256081,0.201298115256081,-105.0322649,39.7652109,-105.0346199,39.7651924
-17786,8497,9214,0.0149001836759509,0.0149001836759509,-105.0139116,39.7556283,-105.0140859,39.7556275
-18667,5188,2601,0.176856921267491,0.176856921267491,-105.0410909,39.7245488,-105.0410827,39.7229583
-15257,8538,9547,0.0461864635130014,0.0461864635130014,-104.9283761,39.7065112,-104.927837,39.7065339
-15834,9727,4582,0.339362052888466,0.339362052888466,-105.039304,39.7384682,-105.0393281,39.7415201
-18239,6764,3988,0.20124356936137,0.20124356936137,-105.0276005,39.7707095,-105.0299532,39.7707836
-17648,223,227,0.245258634538467,0.245258634538467,-104.9432215,39.7799643,-104.9403515,39.7799498
-19708,10627,10621,0.090662464616454,0.090662464616454,-105.0051511,39.7346116,-105.0051625,39.7337963
-17961,10234,10235,0.0087318555012696,0.0087318555012696,-104.988102,39.7243341,-104.9880993,39.7242556
-19710,10623,10628,0.0762458230270849,0.0762458230270849,-105.0031654,39.7337887,-105.0039101,39.7341658
-17727,3328,7879,0.104097845117031,0.104097845117031,-104.9573341,39.760728,-104.9561163,39.7607348
-18725,7415,10336,0.0555461867275064,0.0555461867275064,-105.0438828,39.716571,-105.0438909,39.7160715
-17748,10172,8285,0.147249823900369,0.147249823900369,-104.9890951,39.7502672,-104.9903025,39.7493228
-19600,10582,10478,0.00442384590255706,0.00442384590255706,-104.9902054,39.7102774,-104.9902571,39.7102784
-16294,2409,2439,0.0170153678743566,0.0170153678743566,-104.9698358,39.6961931,-104.9697532,39.6960539
-18663,2592,5184,0.178895247307371,0.178895247307371,-105.0378588,39.7229259,-105.0378224,39.7245345
-15835,4582,8370,0.135357878279395,0.135357878279395,-105.0393281,39.7415201,-105.0393314,39.7427374
-17987,10240,7225,0.133765909115813,0.133765909115813,-104.9949413,39.7336839,-104.9965056,39.7336859
-18776,10123,3737,0.13151506607382,0.13151506607382,-105.0041704,39.7400311,-105.0028068,39.7394839
-19243,10420,8480,0.0202782525837911,0.0202782525837911,-104.9910563,39.7427139,-104.9912213,39.7425829
-18831,10359,10360,0.0341232753962164,0.0341232753962164,-105.0141666,39.7374377,-105.0142282,39.7371345
-19553,6857,10560,0.00726201622420357,0.00726201622420357,-104.9892637,39.7102478,-104.9892651,39.7101825
-19940,9641,6649,0.164927985335569,0.164927985335569,-104.9994122,39.7368744,-104.9992032,39.7383489
-18941,4644,1269,0.146851000824624,0.146851000824624,-105.018682,39.7183967,-105.0203986,39.7184231
-19118,10431,8430,0.136066207456442,0.136066207456442,-105.0144289,39.7424475,-105.0156397,39.7432416
-19278,10421,6707,0.0993066662474356,0.0993066662474356,-104.9951815,39.7462368,-104.9943683,39.7468745
-15836,8370,5297,0.134414346058358,0.134414346058358,-105.0393314,39.7427374,-105.039323,39.7439462
-19047,901,9486,0.27949052314451,0.27949052314451,-104.9406492,39.7644637,-104.9406618,39.7619502
-19612,10586,10499,0.00658715235564877,0.00658715235564877,-104.9910692,39.709571,-104.9911462,39.7095717
-15838,9728,7437,0.0439886907558265,0.0439886907558265,-105.0374547,39.7337049,-105.0369779,39.7338534
-19065,10422,5495,0.202007910819525,0.202007910819525,-104.9407436,39.7401208,-104.9407458,39.7383041
-15840,9729,9702,0.0777181684296862,0.0777181684296862,-105.038439,39.7323043,-105.0382565,39.732989
-15841,9702,9730,0.0351380099433058,0.0351380099433058,-105.0382565,39.732989,-105.038423,39.7332779
-19273,10425,10173,0.013664079145809,0.013664079145809,-104.9948429,39.7459879,-104.9947299,39.745901
-19160,10429,10050,0.0518274489533285,0.0518274489533285,-105.0000136,39.7493831,-105.0006176,39.749423
-20574,10861,10862,0.011368530817607,0.011368530817607,-105.0248964,39.7611186,-105.0250294,39.7611184
-19554,10560,10548,0.0725121719316359,0.0725121719316359,-104.9892651,39.7101825,-104.9892812,39.7095305
-19461,10477,10478,0.0230516224965269,0.0230516224965269,-104.9902547,39.7104857,-104.9902571,39.7102784
-19438,10491,6859,0.0113764020129076,0.0113764020129076,-104.9897225,39.7103526,-104.9897244,39.7102503
-19277,8487,10421,0.0474605500221532,0.0474605500221532,-104.9955701,39.745932,-104.9951815,39.7462368
-19226,8479,10451,0.0120282782230604,0.0120282782230604,-104.9903554,39.7419081,-104.9904508,39.7418286
-19482,10486,10487,0.00666482250083992,0.00666482250083992,-104.9910713,39.7093611,-104.9911492,39.7093622
-19412,1903,7239,0.197394669243537,0.197394669243537,-104.9798636,39.7074913,-104.9798548,39.7057161
-19323,916,5917,0.178370202088171,0.178370202088171,-104.9874133,39.7320545,-104.987439,39.7304505
-19329,10473,9894,0.0172442514416892,0.0172442514416892,-104.971721,39.6984149,-104.9716111,39.6985449
-19662,10608,10609,0.151226661870126,0.151226661870126,-105.0228937,39.7697604,-105.0211243,39.7697539
-19357,3170,9949,0.0476976092634506,0.0476976092634506,-105.0006969,39.7480168,-105.0003016,39.7477141
-19703,10622,10623,0.11468932159706,0.11468932159706,-105.0045066,39.7337938,-105.0031654,39.7337887
-19379,9194,4397,0.102701543160846,0.102701543160846,-104.9954622,39.743992,-104.9946157,39.7433367
-19846,10657,10658,0.207612047714745,0.207612047714745,-105.0387332,39.7384666,-105.0387333,39.7365995
-19735,10641,10642,0.0869223005082275,0.0869223005082275,-104.968958,39.7392065,-104.9689526,39.7384248
-423,422,423,0.0170753331475834,0.0170753331475834,-104.958788,39.708906,-104.95889,39.708774
-18892,3649,3275,0.147518961348099,0.147518961348099,-104.9575638,39.7025228,-104.9575461,39.7038494
-20076,6318,8004,0.0509194903724274,0.0509194903724274,-104.9758794,39.7400231,-104.9752839,39.740019
-20104,8546,2065,0.048454988097841,0.048454988097841,-104.9541798,39.7401771,-104.9536131,39.740176
-20204,9321,10178,0.0841675532676054,0.0841675532676054,-104.9880818,39.7550779,-104.9873945,39.7556199
-20205,10178,8401,0.0611444527276629,0.0611444527276629,-104.9873945,39.7556199,-104.9868716,39.7559951
-259,266,267,0.0502803318432383,0.0502803318432383,-104.9494463,39.6897162,-104.9500299,39.6896634
-14829,6148,4022,0.133340280271954,0.133340280271954,-105.0283827,39.754823,-105.0299425,39.7548206
-20293,10704,10700,0.011586826540776,0.011586826540776,-105.0445781,39.7730214,-105.0445771,39.7731256
-14835,7029,7396,0.0697085759052968,0.0697085759052968,-105.0322588,39.7548413,-105.0330742,39.7548479
-20259,10688,6471,0.00765068827927408,0.00765068827927408,-105.0440849,39.7746926,-105.0440839,39.7747614
-17971,10234,10239,0.0311817416438077,0.0311817416438077,-104.988102,39.7243341,-104.9877374,39.7243341
-20294,10700,10709,0.0186270421112036,0.0186270421112036,-105.0445771,39.7731256,-105.0445556,39.7732923
-14868,8305,8308,0.0233992723150567,0.0233992723150567,-105.0036573,39.7541187,-105.0038599,39.7542602
-421,420,421,0.0887343803029098,0.0887343803029098,-104.9418594,39.7437507,-104.9424633,39.7443997
-424,254,424,0.214565868461505,0.214565868461505,-105.0251543,39.7380028,-105.0237982,39.7396264
-425,424,425,0.179345861037356,0.179345861037356,-105.0237982,39.7396264,-105.0219946,39.7404498
-18900,10380,10379,0.00404144992313864,0.00404144992313864,-105.0126123,39.7504401,-105.0125991,39.750475
-312,320,321,0.234451594909332,0.234451594909332,-105.0174336,39.7493151,-105.0159659,39.7510962
-14897,6102,8202,0.215105101107824,0.215105101107824,-104.9408208,39.7092854,-104.9408446,39.707351
-19648,10603,10600,0.0301818413703728,0.0301818413703728,-104.9882807,39.7068108,-104.9879279,39.706808
-176,185,186,0.0998871295042773,0.0998871295042773,-105.0413928,39.6931195,-105.0425601,39.6931327
-20301,9381,10729,0.0209062182463086,0.0209062182463086,-105.0435596,39.7766165,-105.0435566,39.7764285
-196,205,208,0.198149371104724,0.198149371104724,-105.0203775,39.6894945,-105.0203767,39.6877125
-16280,9869,4511,0.0441265369006206,0.0441265369006206,-104.9543259,39.6981771,-104.9541278,39.6978107
-15850,9734,5596,0.0497405541513423,0.0497405541513423,-105.0433666,39.7303044,-105.0438933,39.7301146
-19563,7475,10566,0.00626126200522767,0.00626126200522767,-104.9897492,39.7084668,-104.9897479,39.7084105
-248,255,256,0.148914456277168,0.148914456277168,-104.9534054,39.7800114,-104.9516897,39.7797769
-14938,8158,7604,0.0947062136756459,0.0947062136756459,-104.9394819,39.7382793,-104.9383746,39.7382991
-305,313,314,0.0701186694040595,0.0701186694040595,-104.970735,39.780686,-104.970235,39.781186
-14691,3129,941,0.177390618833456,0.177390618833456,-104.9712066,39.7304555,-104.9712147,39.7320508
-371,263,372,0.159425481094297,0.159425481094297,-104.9473177,39.68967,-104.9473692,39.6911032
-372,262,373,0.154271040601459,0.154271040601459,-104.9458929,39.6897096,-104.9459358,39.6910966
-373,374,375,0.0498842542371797,0.0498842542371797,-105.0251537,39.7734966,-105.02457,39.7734966
-20302,6466,9378,0.155873782837014,0.155873782837014,-105.042271,39.7752905,-105.0422654,39.7766923
-315,323,324,0.151711567725454,0.151711567725454,-105.0156986,39.7518215,-105.0152472,39.753141
-554,548,549,0.0392699857827163,0.0392699857827163,-104.999646,39.701424,-104.999187,39.7014274
-14993,7973,7142,0.0462138706300854,0.0462138706300854,-104.9726808,39.7432422,-104.9721403,39.7432453
-17218,6114,3199,0.202944002497817,0.202944002497817,-104.9775313,39.7092628,-104.9775204,39.7110879
-317,325,326,0.0648164274191724,0.0648164274191724,-104.9964344,39.7091326,-104.9969556,39.7087095
-17027,3490,3584,0.0598495371899439,0.0598495371899439,-105.0243147,39.7553581,-105.0236148,39.7553716
-652,642,643,0.0146721427737165,0.0146721427737165,-104.9407521,39.7413879,-104.9405805,39.7413879
-18423,8361,8333,0.20323919891824,0.20323919891824,-105.0410832,39.7639477,-105.0410618,39.76212
-15011,9469,459,0.0480419410466021,0.0480419410466021,-104.9407436,39.7367085,-104.9413035,39.7367444
-15012,459,7107,0.043866666346984,0.043866666346984,-104.9413035,39.7367444,-104.9418165,39.7367415
-11803,8415,8416,0.145780714117446,0.145780714117446,-104.9841796,39.7520575,-104.9853609,39.751112
-18731,8066,10337,0.199884513966678,0.199884513966678,-105.0367563,39.7306104,-105.0367616,39.732408
-17082,4467,2789,0.134890565512634,0.134890565512634,-104.9615875,39.7657386,-104.9615875,39.7669517
-788,793,794,0.093857943582342,0.093857943582342,-104.9361307,39.7528412,-104.9350328,39.7528375
-15029,7883,3337,0.0968744267307773,0.0968744267307773,-104.9562673,39.7368072,-104.9574002,39.7368138
-18907,10384,10385,0.0177708173335528,0.0177708173335528,-105.0122864,39.7504906,-105.0124942,39.7504865
-11693,868,895,0.0109449511220029,0.0109449511220029,-105.0011145,39.7535929,-105.0011439,39.7534971
-16597,8570,5785,0.145695604703312,0.145695604703312,-104.9966174,39.7504686,-104.9954256,39.7514052
-17133,4238,3543,0.202299079539728,0.202299079539728,-104.9763404,39.6966061,-104.9763295,39.6984254
-18439,7914,2971,0.147770970542825,0.147770970542825,-105.027595,39.7578708,-105.0260575,39.7584783
-16408,9882,9889,0.0253610023428754,0.0253610023428754,-104.9710939,39.7032035,-104.9713896,39.7031873
-16601,9952,7558,0.0955122170701592,0.0955122170701592,-104.9999037,39.7492958,-104.9988113,39.7494758
-15050,6016,979,0.0500664854607423,0.0500664854607423,-104.9735459,39.7368668,-104.9741314,39.7368706
-16409,9889,9879,0.0208518700779087,0.0208518700779087,-104.9713896,39.7031873,-104.9716243,39.7032379
-995,753,1009,0.150380388134057,0.150380388134057,-104.9875955,39.7752036,-104.9875916,39.776556
-15070,9479,610,0.10571035032404,0.10571035032404,-104.9861222,39.7368448,-104.9873582,39.7368646
-16411,9459,9889,0.012002862934972,0.012002862934972,-104.9714714,39.7030996,-104.9713896,39.7031873
-1016,1028,1029,0.0655213058855568,0.0655213058855568,-104.9622408,39.7488417,-104.9622186,39.7494307
-15964,4362,1443,0.198880292667991,0.198880292667991,-105.0015545,39.7112124,-105.0038795,39.7112064
-16695,9599,9597,0.0527492023482324,0.0527492023482324,-105.0000258,39.7419225,-105.0002485,39.7423649
-19585,10576,7471,0.00669407122815783,0.00669407122815783,-104.9888178,39.7085212,-104.9888183,39.708461
-1119,1135,1136,0.187278154980764,0.187278154980764,-105.0404138,39.7766958,-105.0404001,39.77838
-15144,9498,6689,0.0114561417292809,0.0114561417292809,-104.949868,39.7789996,-104.9497884,39.7789167
-15795,2323,2324,0.0158381890637799,0.0158381890637799,-105.0223537,39.7376237,-105.0223618,39.737766
-20623,2706,10873,0.00650373799697247,0.00650373799697247,-105.0229176,39.7611551,-105.0229935,39.7611592
-1164,558,1182,0.0726820398635713,0.0726820398635713,-104.996796,39.697349,-104.996786,39.6966954
-15984,7372,5328,0.126515384088506,0.126515384088506,-105.0312304,39.7111869,-105.0327094,39.7111941
-16002,9775,6870,0.0380746194857137,0.0380746194857137,-105.0106552,39.688359,-105.0108215,39.6880414
-11807,8419,8395,0.147975384561768,0.147975384561768,-104.9850687,39.7527297,-104.9838316,39.7536605
-16009,9779,9780,0.0100019925159617,0.0100019925159617,-104.9993937,39.6888781,-104.9993976,39.688968
-331,207,332,0.116329690490202,0.116329690490202,-104.9565607,39.7445824,-104.9554298,39.7451641
-20314,10735,10736,0.00660332250129021,0.00660332250129021,-105.0233062,39.7593161,-105.0233746,39.7593437
-1412,1265,1438,0.0988256135069692,0.0988256135069692,-105.0204691,39.7820002,-105.0216256,39.7820039
-15147,9501,1753,0.946728932771196,0.946728932771196,-104.9477699,39.7837907,-104.9414956,39.7908082
-542,536,537,0.223575651807191,0.223575651807191,-105.0151149,39.7545148,-105.0159762,39.7526163
-1437,1457,1458,0.00733898986406934,0.00733898986406934,-105.0078201,39.6894653,-105.0078206,39.6893993
-15845,9731,9732,0.0664836940914448,0.0664836940914448,-105.0422615,39.7304199,-105.0415588,39.7301641
-15172,9512,9513,0.0495248806719176,0.0495248806719176,-105.0364026,39.7403227,-105.0369818,39.740326
-15173,9513,9514,0.0500036838355924,0.0500036838355924,-105.0369818,39.740326,-105.0375666,39.7403293
-16841,10021,9876,0.0316463232135525,0.0316463232135525,-104.9706319,39.7032358,-104.9705085,39.7029675
-12011,7081,2030,0.145136996076302,0.145136996076302,-104.9818287,39.7633054,-104.9806366,39.7642349
-12961,1633,1631,0.0197483532588124,0.0197483532588124,-105.0035017,39.7410228,-105.0033016,39.7411115
-16037,9801,9802,0.187730927470077,0.187730927470077,-105.0145291,39.6890356,-105.0123441,39.6891881
-1680,1705,1706,0.200641448140145,0.200641448140145,-105.0297026,39.69129,-105.0320475,39.6912817
-15255,9539,9533,0.0958097111651336,0.0958097111651336,-104.9351084,39.7058405,-104.9349851,39.7066969
-16278,9869,3639,0.110423900704732,0.110423900704732,-104.9543259,39.6981771,-104.953288,39.6987674
-1701,1648,1723,0.062496099688971,0.062496099688971,-105.0157083,39.6917929,-105.0164379,39.6918193
-16118,8309,427,0.26882010834223,0.26882010834223,-105.0254224,39.7404725,-105.028564,39.7403785
-250,257,258,0.156601202821138,0.156601202821138,-104.9487596,39.6897096,-104.9488454,39.6911164
-1726,1744,1745,1.09817431556355,1.09817431556355,-104.9722383,39.6883787,-104.9722634,39.6785026
-16141,9831,7016,0.0255913598249866,0.0255913598249866,-105.0306678,39.7293074,-105.030967,39.729303
-16142,7016,7028,0.027160195994677,0.027160195994677,-105.030967,39.729303,-105.0312846,39.729303
-251,259,260,0.154968238345174,0.154968238345174,-104.9465795,39.6897096,-104.9465967,39.6911032
-1778,1796,1797,0.0510193327806952,0.0510193327806952,-104.9786977,39.6947606,-104.9781014,39.6947603
-15256,9533,9546,0.0701631467931239,0.0701631467931239,-104.9349851,39.7066969,-104.9348965,39.7073242
-4282,4025,4026,0.0836518662560613,0.0836518662560613,-105.0299339,39.7572686,-105.029918,39.7580208
-4283,4026,2975,0.0536630317560949,0.0536630317560949,-105.029918,39.7580208,-105.0299157,39.7585034
-252,261,262,0.0449524282619667,0.0449524282619667,-104.9453693,39.6896766,-104.9458929,39.6897096
-17948,10228,8780,0.031808150523084,0.031808150523084,-104.98712,39.7238543,-104.9874919,39.7238512
-1803,1816,1817,0.0829077522721667,0.0829077522721667,-105.0268596,39.7287066,-105.02745,39.7281152
-4294,2858,4032,0.190837980669502,0.190837980669502,-105.0043357,39.6975452,-105.0065466,39.6973179
-4296,4033,4034,0.0984313521955559,0.0984313521955559,-105.0318398,39.697683,-105.03299,39.6977028
-4297,4034,4035,0.124316100856361,0.124316100856361,-105.03299,39.6977028,-105.0344405,39.6976368
-4299,1488,135,0.200939910778157,0.200939910778157,-104.988737,39.694787,-104.9886673,39.6929807
-4300,135,1703,0.200530915425065,0.200530915425065,-104.9886673,39.6929807,-104.9887113,39.6911776
-253,262,259,0.0587496721634218,0.0587496721634218,-104.9458929,39.6897096,-104.9465795,39.6897096
-1830,1846,1847,0.0521892409260155,0.0521892409260155,-105.0330898,39.7213326,-105.0337,39.7213301
-4310,4043,1394,0.105949182025439,0.105949182025439,-105.031239,39.7181657,-105.0324777,39.7181596
-4311,1394,4044,0.0525758001653233,0.0525758001653233,-105.0324777,39.7181596,-105.0330924,39.7181593
-4312,4044,4045,0.00275409212275412,0.00275409212275412,-105.0330924,39.7181593,-105.0331246,39.7181593
-4313,4045,4046,0.048684142933598,0.048684142933598,-105.0331246,39.7181593,-105.0336938,39.7181591
-4314,4046,4048,0.0522538202962548,0.0522538202962548,-105.0336938,39.7181591,-105.0343046,39.7181492
-11581,1889,1890,0.200726535096683,0.200726535096683,-105.0322578,39.7616855,-105.0299096,39.7616676
-254,259,263,0.0633181950748288,0.0633181950748288,-104.9465795,39.6897096,-104.9473177,39.68967
-1901,1087,1914,0.0231926567105046,0.0231926567105046,-104.9724071,39.7074855,-104.972136,39.707488
-4323,4055,4056,0.0506868932206778,0.0506868932206778,-105.0391007,39.7181492,-105.0396933,39.7181525
-4324,4056,4057,0.0525415825536361,0.0525415825536361,-105.0396933,39.7181525,-105.0403076,39.7181525
-4325,4057,1106,0.049505238452812,0.049505238452812,-105.0403076,39.7181525,-105.0408864,39.7181525
-4326,1106,4058,0.103487473030962,0.103487473030962,-105.0408864,39.7181525,-105.0420963,39.7181446
-255,263,264,0.0528764032574804,0.0528764032574804,-104.9473177,39.68967,-104.9479356,39.6896766
-1921,1933,1934,0.0492173865000396,0.0492173865000396,-105.0316836,39.7384833,-105.0322592,39.738485
-1929,1942,1943,0.119118027307007,0.119118027307007,-104.9888238,39.7384602,-104.9902169,39.7384586
-4337,4067,4068,0.0478289627129219,0.0478289627129219,-105.0276017,39.7844198,-105.0281513,39.7843383
-4338,4068,4069,0.0505441496304245,0.0505441496304245,-105.0281513,39.7843383,-105.0287428,39.7843351
-4339,4069,4070,0.0498130318292156,0.0498130318292156,-105.0287428,39.7843351,-105.0293098,39.784231
-4342,4071,4072,0.0561534117303384,0.0561534117303384,-105.0304275,39.7840207,-105.0310648,39.7838975
-4343,4072,4073,0.0484769480819301,0.0484769480819301,-105.0310648,39.7838975,-105.0316273,39.7838408
-18384,8960,8961,0.0519015690499355,0.0519015690499355,-105.0258905,39.7724462,-105.0258806,39.7729129
-544,538,539,0.0154777376492066,0.0154777376492066,-105.0462947,39.7530417,-105.0461157,39.7530208
-2042,2050,2051,0.199194779708592,0.199194779708592,-104.9674629,39.7038542,-104.9674661,39.7020628
-12337,8654,8655,0.0104809427005404,0.0104809427005404,-105.0075431,39.754727,-105.0074206,39.7547231
-4355,3965,4081,0.411489005127648,0.411489005127648,-105.0003399,39.7837825,-105.005155,39.7838353
-4356,4081,4082,0.106344190536588,0.106344190536588,-105.005155,39.7838353,-105.0063995,39.7838419
-4358,4083,1074,0.0829286899836406,0.0829286899836406,-105.0082472,39.7838436,-105.0092177,39.7838422
-4359,1074,2497,0.0840300949352524,0.0840300949352524,-105.0092177,39.7838422,-105.0102009,39.7838273
-16773,3182,3277,0.192234323904948,0.192234323904948,-104.9552273,39.7021149,-104.9552326,39.7038437
-2067,2069,2070,0.202510221820354,0.202510221820354,-104.9534962,39.7873923,-104.9534692,39.7892134
-19432,8707,10110,0.0968673163006813,0.0968673163006813,-104.9850997,39.7033596,-104.9839674,39.7033596
-4370,4092,4093,0.0521723369054183,0.0521723369054183,-105.0158347,39.7839964,-105.016444,39.7839662
-4373,4095,4096,0.0511584997280867,0.0511584997280867,-105.0175565,39.7838951,-105.0181552,39.7838945
-4374,4096,4097,0.0510055304226098,0.0510055304226098,-105.0181552,39.7838945,-105.0187521,39.7838972
-14753,6934,5930,0.0358835820845479,0.0358835820845479,-104.9793301,39.7301101,-104.979327,39.7304328
-545,539,540,0.260599478311813,0.260599478311813,-105.0461157,39.7530208,-105.0433843,39.7519802
-2113,2114,2115,0.0866449228578761,0.0866449228578761,-104.9269938,39.7723519,-104.9270004,39.7731311
-12341,2501,8642,0.0589286767766051,0.0589286767766051,-105.0073403,39.7545867,-105.0079921,39.7544142
-4383,4104,2729,0.0487767884709024,0.0487767884709024,-105.0233734,39.7846136,-105.0239366,39.7846851
-4387,748,1566,0.142516569011717,0.142516569011717,-104.9508345,39.7763985,-104.9507995,39.7776799
-16443,9900,9901,0.201666693845683,0.201666693845683,-104.9688122,39.6930484,-104.9711673,39.6931206
-546,540,541,0.0326517480806501,0.0326517480806501,-105.0433843,39.7519802,-105.0430648,39.7518193
-547,541,542,0.0254047336234174,0.0254047336234174,-105.0430648,39.7518193,-105.0428359,39.7516736
-2158,2156,2157,0.218243127550759,0.218243127550759,-105.0139707,39.7293204,-105.0141188,39.7312798
-2160,2158,2159,0.0821511858388999,0.0821511858388999,-105.0144627,39.756468,-105.0144598,39.7572068
-16173,4250,9840,0.39197341800201,0.39197341800201,-104.9867926,39.6966289,-104.9868416,39.693104
-19464,10508,10509,0.0204161788330557,0.0204161788330557,-104.9902611,39.7099214,-104.9902632,39.7097378
-18178,5791,6050,0.202074681821779,0.202074681821779,-105.0258291,39.7874305,-105.0258319,39.7856132
-20702,10891,10902,0.0170035110425561,0.0170035110425561,-105.0400867,39.7653362,-105.0400838,39.7654891
-16216,8620,7903,0.142599898878985,0.142599898878985,-105.0093075,39.7583444,-105.0105038,39.7592382
-11816,2201,2202,0.15535054028393,0.15535054028393,-105.0146775,39.7403403,-105.0128922,39.7400809
-17089,9940,8134,0.138649146182337,0.138649146182337,-104.960382,39.7494708,-104.9603847,39.7482239
-17090,8134,3689,0.141996254884573,0.141996254884573,-104.9603847,39.7482239,-104.9603811,39.7469469
-2222,2222,2223,0.0488100805647676,0.0488100805647676,-104.9729758,39.7337087,-104.972405,39.7337096
-2223,2223,2224,0.0512642786009998,0.0512642786009998,-104.972405,39.7337096,-104.9718055,39.7337106
-14639,2243,2244,0.0354564943031107,0.0354564943031107,-105.0051802,39.7575225,-105.0050086,39.7572322
-17091,3689,4597,0.241148863142693,0.241148863142693,-104.9603811,39.7469469,-104.9603758,39.7447782
-2264,2264,2265,0.176035436319457,0.176035436319457,-104.9304797,39.7178171,-104.9304912,39.7194002
-14641,2244,2272,0.0187003459565438,0.0187003459565438,-105.0050086,39.7572322,-105.0048152,39.7571536
-16312,2722,2929,0.0126176772334624,0.0126176772334624,-104.96971,39.6952871,-104.9698519,39.6952562
-14127,419,417,0.0606641044076811,0.0606641044076811,-104.94552,39.7449427,-104.9458794,39.7444723
-2285,2284,2285,0.184338950183701,0.184338950183701,-104.9305594,39.7601749,-104.9305592,39.7618327
-17024,10059,6431,0.0170040072643452,0.0170040072643452,-105.0176702,39.753311,-105.0178463,39.7532399
-20326,10744,10738,0.00650370546328925,0.00650370546328925,-105.0235881,39.7590797,-105.0235235,39.7590488
-2307,2304,1995,0.0793159537973265,0.0793159537973265,-105.0127167,39.6959791,-105.0136437,39.6959725
-16363,7010,2769,0.112453696268037,0.112453696268037,-104.9318494,39.7619997,-104.933165,39.7620038
-16364,2769,3365,0.103853901930967,0.103853901930967,-104.933165,39.7620038,-104.93438,39.7620028
-20334,2967,10745,0.0137335338280324,0.0137335338280324,-105.0237301,39.7584727,-105.0237282,39.7585962
-2375,2363,964,0.101155075878388,0.101155075878388,-104.9849833,39.7193599,-104.9838008,39.7193434
-16463,9886,1081,0.198408324686945,0.198408324686945,-104.9705756,39.7060566,-104.972547,39.7069966
-16466,9913,9912,0.00925208668760351,0.00925208668760351,-104.9725631,39.7070317,-104.9726409,39.7070895
-17365,10091,3085,0.200980490545583,0.200980490545583,-104.9786569,39.7147194,-104.9786762,39.712912
-17304,4258,8744,0.201266280518922,0.201266280518922,-104.9634703,39.6965777,-104.9634565,39.6947677
-2443,2434,2435,0.0498096064689081,0.0498096064689081,-105.038137,39.7712705,-105.0387198,39.7712682
-18192,6053,4068,0.142529657997643,0.142529657997643,-105.0281511,39.7856201,-105.0281513,39.7843383
-16717,5546,10002,2.41636756690016,2.41636756690016,-104.9874887,39.6894093,-104.9875808,39.6676785
-14694,4875,4946,0.19209064576365,0.19209064576365,-104.9712147,39.735165,-104.9712638,39.7368921
-2465,1228,2455,0.0986019921641189,0.0986019921641189,-105.0123662,39.7704857,-105.0135199,39.7704859
-17232,243,244,0.123936016070967,0.123936016070967,-104.9728142,39.6892191,-104.9715783,39.6886379
-17233,244,245,0.0423914167747626,0.0423914167747626,-104.9715783,39.6886379,-104.9711551,39.6884397
-17234,245,30,0.0421885133223055,0.0421885133223055,-104.9711551,39.6884397,-104.9707346,39.6882416
-17235,30,31,0.0623462807475453,0.0623462807475453,-104.9707346,39.6882416,-104.9701337,39.6879245
-20321,10740,10741,0.00961494122957245,0.00961494122957245,-105.0235185,39.7589017,-105.0236254,39.7588748
-20520,10845,10841,0.0515194041185215,0.0515194041185215,-105.0187438,39.7583413,-105.0181411,39.7583408
-19715,10630,10631,0.0208944523636977,0.0208944523636977,-105.0042609,39.7342602,-105.0042586,39.7344481
-14699,4164,4773,0.260608636385053,0.260608636385053,-104.974654,39.7201321,-104.9746628,39.7224758
-2587,2559,2560,0.109781786773584,0.109781786773584,-105.0051367,39.7862559,-105.0064215,39.7862585
-18391,7038,3425,0.202488499072253,0.202488499072253,-105.0322651,39.7656196,-105.034629,39.7657398
-18395,2554,3861,0.207477450927098,0.207477450927098,-105.0433255,39.7874316,-105.0427456,39.7892435
-20741,10913,7366,0.0901821833329384,0.0901821833329384,-105.0277761,39.7631337,-105.0267891,39.7634203
-2613,2576,2373,0.0436228403965834,0.0436228403965834,-104.9558107,39.7098997,-104.9553043,39.709946
-19620,10524,10589,0.00570573305761744,0.00570573305761744,-104.9883547,39.7082799,-104.988288,39.70828
-18401,1425,7176,0.174145888646233,0.174145888646233,-105.0386719,39.7820847,-105.0380731,39.7805877
-20347,10745,10747,0.0185775892434006,0.0185775892434006,-105.0237282,39.7585962,-105.0235111,39.7585885
-2677,2638,2639,0.294941945704345,0.294941945704345,-105.015182,39.7220707,-105.0186305,39.7220872
-19655,10606,10607,0.00514986150833142,0.00514986150833142,-104.9882676,39.7060132,-104.9883278,39.7060132
-18881,7249,3271,0.203031342103983,0.203031342103983,-104.9611376,39.7056792,-104.9611322,39.7038533
-20742,7366,10907,0.0328095866921768,0.0328095866921768,-105.0267891,39.7634203,-105.026532,39.7636394
-2729,2684,2685,0.0539600310135124,0.0539600310135124,-104.9795298,39.7522538,-104.9799803,39.7525937
-17508,10114,10116,0.025112430125901,0.025112430125901,-105.0124916,39.7402957,-105.0127369,39.7404199
-17946,10225,10226,0.00737359034109891,0.00737359034109891,-104.987291,39.7236088,-104.9872048,39.7236101
-14688,2393,2798,0.189312144234638,0.189312144234638,-104.971187,39.7255843,-104.971199,39.7272868
-18130,10265,6045,0.200929523136355,0.200929523136355,-105.0222149,39.787432,-105.0222109,39.785625
-2876,2499,2821,0.136005417598284,0.136005417598284,-105.0095409,39.7801481,-105.0111319,39.7801807
-12974,2797,2822,0.0772628603550689,0.0772628603550689,-105.0069887,39.7454751,-105.0076937,39.7450404
-19658,9394,8493,0.0491161384071996,0.0491161384071996,-105.0253203,39.7701872,-105.0258941,39.7702117
-19659,8493,6763,0.145715875084599,0.145715875084599,-105.0258941,39.7702117,-105.0275974,39.7702694
-14698,5033,4164,0.121872885708228,0.121872885708228,-104.9746644,39.7190361,-104.974654,39.7201321
-17172,3092,5304,0.202230215982892,0.202230215982892,-104.9739802,39.7128965,-104.9739798,39.7147152
-3021,2953,2954,0.00990774005844554,0.00990774005844554,-105.0157188,39.7584009,-105.0158347,39.7584
-19694,10618,8145,0.956513774549446,0.956513774549446,-104.9416501,39.7908808,-104.9480016,39.7837973
-19803,5200,10646,0.12476083696761,0.12476083696761,-104.9969602,39.7241241,-104.9969581,39.7230021
-14722,4871,6016,0.191389811056615,0.191389811056615,-104.9735383,39.7351456,-104.9735459,39.7368668
-20794,8908,10948,0.0132755925041989,0.0132755925041989,-105.0289792,39.7622112,-105.0291285,39.7622441
-19880,10672,2617,0.0529554442967168,0.0529554442967168,-104.9957912,39.722999,-104.9957832,39.7225228
-19918,6233,5202,0.175854776488408,0.175854776488408,-104.9980791,39.7257025,-104.9980791,39.724121
-18502,9278,9526,0.133752339971597,0.133752339971597,-105.0363599,39.7511906,-105.036376,39.7499878
-3064,2995,2996,0.132712872312529,0.132712872312529,-104.9953975,39.759713,-104.9954583,39.7585204
-19901,10663,10676,0.0513919786820835,0.0513919786820835,-105.0428156,39.736637,-105.0434166,39.7366408
-19973,10306,619,0.00429215823862154,0.00429215823862154,-105.0316869,39.7366042,-105.0316871,39.7365656
-17075,7842,828,0.141317632530522,0.141317632530522,-104.9616094,39.7519514,-104.9616093,39.7532223
-17970,10238,10234,0.0188321983270746,0.0188321983270746,-104.9883222,39.7243341,-104.988102,39.7243341
-18897,10377,10378,0.0131134839493858,0.0131134839493858,-105.0124804,39.7505728,-105.0125479,39.7504669
-17180,5449,5450,0.206640976814444,0.206640976814444,-104.9704727,39.6911049,-104.9704932,39.6929632
-17113,3932,3959,0.0402088808240704,0.0402088808240704,-104.9574881,39.7475642,-104.957513,39.7479253
-19990,10684,10682,0.0498254818797545,0.0498254818797545,-105.0410722,39.7384617,-105.0416549,39.7384584
-18513,9294,10302,0.00151227516682341,0.00151227516682341,-105.0410618,39.7511847,-105.0410619,39.7511711
-3252,2365,3163,0.175456016528149,0.175456016528149,-104.98145,39.7193208,-104.9814586,39.7208987
-19267,10446,8486,0.0130023858176566,0.0130023858176566,-104.9952471,39.7458453,-104.9953533,39.7457616
-15217,9530,539,0.0270882933911684,0.0270882933911684,-105.0461917,39.7527843,-105.0461157,39.7530208
-18503,9526,9353,0.135313261796309,0.135313261796309,-105.036376,39.7499878,-105.0363784,39.7487709
-18902,10378,10381,0.0118745691698922,0.0118745691698922,-105.0125479,39.7504669,-105.0125841,39.7503638
-20282,10710,10722,0.0492625817369533,0.0492625817369533,-105.0441026,39.7735162,-105.044096,39.7739592
-19437,10490,10491,0.0516785382045006,0.0516785382045006,-104.9897131,39.7108173,-104.9897225,39.7103526
-16422,3358,3034,0.0480216533576434,0.0480216533576434,-104.9695281,39.7021526,-104.9699305,39.7024537
-17185,5659,5660,0.024871407903781,0.024871407903781,-104.9687309,39.6883933,-104.9684404,39.6883858
-18512,10302,9294,0.00151227516682341,0.00151227516682341,-105.0410619,39.7511711,-105.0410618,39.7511847
-18681,3185,3408,0.173742073092489,0.173742073092489,-105.0367216,39.7197052,-105.0367215,39.7181427
-15235,9533,9534,0.025845258726166,0.025845258726166,-104.9349851,39.7066969,-104.9352855,39.7067217
-15243,9534,9535,0.0751513734309232,0.0751513734309232,-104.9352855,39.7067217,-104.9359493,39.706279
-14715,5686,5687,0.105315223547906,0.105315223547906,-104.97583,39.7295104,-104.9758385,39.7304575
-19826,10647,9253,0.122215184303521,0.122215184303521,-105.0021963,39.7300097,-105.0022016,39.7289106
-20299,10728,5578,0.0498927645754841,0.0498927645754841,-105.0445532,39.7768578,-105.0439694,39.7768534
-15281,9557,9556,0.01686832436596,0.01686832436596,-104.9466791,39.7112633,-104.9468185,39.711156
-15283,9557,9558,0.0154433036380546,0.0154433036380546,-104.9466791,39.7112633,-104.9465426,39.7113542
-17312,5705,5706,0.401673875470838,0.401673875470838,-104.9611673,39.6911287,-104.9611029,39.6875167
-3564,3426,3427,0.0516847701108369,0.0516847701108369,-105.0346376,39.7664739,-105.0346332,39.7669387
-15400,9579,3315,0.0326402169295471,0.0326402169295471,-105.0157258,39.7437753,-105.0155552,39.7435127
-15402,9580,9581,0.331383974435327,0.331383974435327,-105.0162851,39.7457849,-105.0162939,39.7487651
-15403,9582,9583,0.0120173707764648,0.0120173707764648,-105.0104647,39.7536666,-105.0103359,39.7536233
-18689,1859,5770,0.176521953507317,0.176521953507317,-105.0415045,39.7213253,-105.0415039,39.7197378
-3659,3496,3497,0.100604510338319,0.100604510338319,-104.9500131,39.6983858,-104.9488372,39.6983858
-15426,8637,4935,0.0862034738049073,0.0862034738049073,-104.9993008,39.7450562,-104.9999815,39.7444843
-15429,9597,8608,0.0815311130388188,0.0815311130388188,-105.0002485,39.7423649,-105.0009845,39.7418987
-14717,933,5818,0.11375652775637,0.11375652775637,-104.9758289,39.7320426,-104.9752659,39.7329695
-3704,3540,3541,0.0487079158287504,0.0487079158287504,-104.9786521,39.6984298,-104.9780828,39.698433
-20304,9382,10728,0.0315682813160642,0.0315682813160642,-105.0445538,39.7765739,-105.0445532,39.7768578
-15490,9618,8464,0.061043367869745,0.061043367869745,-105.0008107,39.746683,-105.0014282,39.7464074
-15492,9627,9626,0.0311123551122936,0.0311123551122936,-105.0003825,39.746907,-105.0006793,39.7467451
-17382,5814,2314,0.0781390219671105,0.0781390219671105,-105.0151443,39.7320016,-105.0146392,39.731416
-20431,10791,10754,0.00545772790966665,0.00545772790966665,-105.0231621,39.7594921,-105.0232175,39.7595165
-3935,3733,3734,0.176323868665952,0.176323868665952,-105.0028152,39.7336992,-105.0028252,39.7352849
-20425,10786,10787,0.0471980291688183,0.0471980291688183,-105.0188457,39.7592189,-105.0188651,39.7596431
-16275,9868,3657,0.128315234485653,0.128315234485653,-104.9551011,39.698724,-104.9539423,39.6994566
-17111,3775,3776,0.0186255054019669,0.0186255054019669,-104.957947,39.7477378,-104.9578598,39.7475843
-20436,10794,10795,0.0773551964908624,0.0773551964908624,-105.0218405,39.7610002,-105.0227368,39.7610963
-4030,3814,3815,0.205898323776278,0.205898323776278,-105.039412,39.7472161,-105.0374612,39.7461303
-14114,3768,3623,0.0676593021490157,0.0676593021490157,-104.9443957,39.7462296,-104.9448677,39.7457412
-20311,10732,10733,0.00871128803713245,0.00871128803713245,-105.0237565,39.7589777,-105.0236546,39.7589766
-17485,321,4992,0.0357053960194593,0.0357053960194593,-105.0159659,39.7510962,-105.0161841,39.75137
-4135,1293,3896,0.0646203690871901,0.0646203690871901,-104.9634588,39.7488413,-104.9634682,39.7494224
-16181,9842,5547,0.812121023854291,0.812121023854291,-104.9882243,39.682101,-104.9881577,39.6894044
-15562,9299,9657,0.183361943567776,0.183361943567776,-104.9775506,39.725614,-104.9775593,39.727263
-15563,9657,3803,0.198879262059456,0.198879262059456,-104.9775593,39.727263,-104.977579,39.7290515
-18244,9371,2433,0.198605382792158,0.198605382792158,-105.0375615,39.7694949,-105.0375589,39.771281
-20442,10799,10800,0.0197706815366264,0.0197706815366264,-105.0218863,39.7618096,-105.0218874,39.7616318
-4153,2788,3908,0.132166336514103,0.132166336514103,-104.9634422,39.7669465,-104.9634409,39.7681351
-19582,10575,10562,0.0700205995742609,0.0700205995742609,-104.9885885,39.7085196,-104.9885838,39.7091493
-16266,7738,5831,0.20157737543677,0.20157737543677,-104.9586954,39.6893271,-104.9586821,39.6911399
-17685,6154,6155,0.459645187119716,0.459645187119716,-104.9794838,39.7796685,-104.9848557,39.7798784
-4242,3991,3227,0.0177155969329486,0.0177155969329486,-105.0299548,39.7716681,-105.0299581,39.7718274
-4243,3227,3992,0.0329982706824684,0.0329982706824684,-105.0299581,39.7718274,-105.0299454,39.772124
-19465,10509,10510,0.0192818852758557,0.0192818852758557,-104.9902632,39.7097378,-104.9902651,39.7095644
-20445,10801,10802,0.0205768304881295,0.0205768304881295,-105.021849,39.761283,-105.0218433,39.761098
-4285,658,1885,0.048605694225596,0.048605694225596,-105.0299141,39.7589753,-105.0299322,39.7594122
-14724,5469,977,0.135303141818757,0.135303141818757,-104.9735608,39.7384085,-104.9741536,39.7395367
-4308,4042,3999,0.107188720026654,0.107188720026654,-105.0287585,39.7181591,-105.0300116,39.7181459
-15626,9687,9688,0.091295408872665,0.091295408872665,-104.9105005,39.7584038,-104.9094325,39.758409
-18437,10292,8442,0.00675422790693776,0.00675422790693776,-105.0280151,39.7614164,-105.0279677,39.761465
-20447,10794,10803,0.118731077964576,0.118731077964576,-105.0218405,39.7610002,-105.0217149,39.7599368
-4347,4075,4076,0.0470687599943484,0.0470687599943484,-105.0333673,39.7838362,-105.0339181,39.7838412
-4349,1002,4077,0.216843974938131,0.216843974938131,-104.9875798,39.7840554,-104.9901174,39.7840727
-20454,10809,10810,0.100342747602662,0.100342747602662,-105.0193936,39.7576917,-105.0204422,39.7580973
-4420,4130,4131,0.121697779505431,0.121697779505431,-104.9511844,39.7681053,-104.9511702,39.7691997
-19593,10478,10580,0.068856662719705,0.068856662719705,-104.9902571,39.7102784,-104.991062,39.7102859
-20625,10804,10874,0.0625386897444795,0.0625386897444795,-105.0242305,39.7611919,-105.0235366,39.7610136
-18253,3979,6754,0.201867515357413,0.201867515357413,-105.0299437,39.7660501,-105.0275819,39.7660439
-4514,4194,4195,0.10298973821829,0.10298973821829,-105.0077638,39.7343613,-105.0077585,39.7352875
-15674,9685,9686,0.0593326737516342,0.0593326737516342,-104.9123877,39.7583821,-104.9116936,39.758384
-20460,10813,10814,0.0263810628539784,0.0263810628539784,-105.0189136,39.7585213,-105.0192222,39.758524
-4540,1339,4214,0.206331927913881,0.206331927913881,-105.0179868,39.7130093,-105.0180211,39.7111539
-15694,7269,2024,0.188168800569156,0.188168800569156,-104.937334,39.717787,-104.935134,39.717787
-19466,10510,10511,0.0234630277187848,0.0234630277187848,-104.9902651,39.7095644,-104.9902675,39.7093534
-20626,10788,10875,0.12707186988651,0.12707186988651,-105.0218514,39.7587986,-105.0215131,39.7599114
-14733,6342,4868,0.191023303912105,0.191023303912105,-104.9758813,39.7368678,-104.9758386,39.7351502
-18638,7383,5180,0.100367385774354,0.100367385774354,-105.0336341,39.725085,-105.0345542,39.7245247
-15713,1050,3913,0.111080496528689,0.111080496528689,-104.9620183,39.718346,-104.963317,39.7183519
-18173,6048,6420,0.20192046475531,0.20192046475531,-105.0245363,39.7856143,-105.0245269,39.7874302
-4662,1707,4301,0.203353286347824,0.203353286347824,-105.0343547,39.691257,-105.0343542,39.6894282
-15737,3771,8867,0.1545281811215,0.1545281811215,-104.9439848,39.7291098,-104.9439798,39.7304995
-18694,6025,5978,0.00688297127309608,0.00688297127309608,-105.0391099,39.7198541,-105.0391098,39.719916
-18468,10298,9138,0.0199498887128462,0.0199498887128462,-105.0431907,39.7509391,-105.0432544,39.7511117
-17131,4372,1799,0.197593407061799,0.197593407061799,-104.9763628,39.692984,-104.9763617,39.694761
-15759,3487,5346,0.100946337054167,0.100946337054167,-104.9293078,39.7162471,-104.9281276,39.716246
-20632,8227,6090,0.135158757751447,0.135158757751447,-105.0138041,39.7620198,-105.0138111,39.7608043
-18263,6067,6514,0.193791754137247,0.193791754137247,-105.038672,39.7856168,-105.0386639,39.783874
-4805,4410,4411,0.102107994490615,0.102107994490615,-105.0297971,39.7030981,-105.0298314,39.704016
-19823,9252,7641,0.177252004679102,0.177252004679102,-105.0008928,39.7289115,-105.0009116,39.7273175
-15778,9119,9707,0.0214606208419429,0.0214606208419429,-105.039492,39.7311696,-105.039492,39.7313626
-15780,9707,9703,0.181325566879256,0.181325566879256,-105.039492,39.7313626,-105.039492,39.7329933
-14737,4770,6526,0.178169149120729,0.178169149120729,-104.97698,39.7224773,-104.9769714,39.7240796
-4824,534,475,0.0459278377034575,0.0459278377034575,-105.0126456,39.7551939,-105.0122615,39.7554827
-15830,7134,9724,0.00382519149625338,0.00382519149625338,-105.0393032,39.7348018,-105.0393035,39.7348362
-434,433,364,0.11596793090747,0.11596793090747,-104.9692608,39.6879972,-104.9703166,39.6886511
-17139,4488,3200,0.20282742100359,0.20282742100359,-104.9762867,39.7092645,-104.976351,39.7110879
-20710,7365,10885,0.00202939174918317,0.00202939174918317,-105.0253917,39.7620904,-105.0253682,39.762093
-20738,10886,10887,0.038658244493302,0.038658244493302,-105.0396293,39.7653159,-105.0397062,39.7656585
-4921,4492,4493,0.0619945774719425,0.0619945774719425,-105.0052379,39.7395355,-105.0052303,39.740093
-18268,2438,5736,0.170878783790289,0.170878783790289,-105.0399004,39.7709268,-105.0398843,39.7724635
-4947,3640,4511,0.128546240241841,0.128546240241841,-104.9529616,39.6985396,-104.9541278,39.6978107
-2413,2403,2404,0.136554071110129,0.136554071110129,-105.017566,39.7530336,-105.0191633,39.7530233
-11806,8418,8419,0.144478674207108,0.144478674207108,-104.986246,39.7517975,-104.9850687,39.7527297
-470,473,474,0.189801845816516,0.189801845816516,-105.0185991,39.7470262,-105.0180056,39.7453814
-14741,3802,5935,0.15521301123556,0.15521301123556,-104.9769713,39.7290617,-104.9769887,39.7304575
-4998,4544,4545,0.135440573029242,0.135440573029242,-105.0220369,39.7741287,-105.0220798,39.7753463
-2670,2628,2629,0.199951181775354,0.199951181775354,-105.0227761,39.7220608,-105.025114,39.7220614
-18532,10307,7540,0.709454997862857,0.709454997862857,-105.0532518,39.7661573,-105.0449514,39.7661904
-5075,4599,1025,0.0544629152641776,0.0544629152641776,-104.9615991,39.7447832,-104.9622361,39.7447859
-17143,4616,4617,0.200408905820063,0.200408905820063,-104.9763402,39.7165163,-104.9763514,39.7183186
-20669,10890,10891,0.0251214927041886,0.0251214927041886,-105.0403806,39.7653384,-105.0400867,39.7653362
-14743,931,2216,0.184594913416957,0.184594913416957,-104.9770026,39.732045,-104.9770059,39.7337051
-5094,4615,4618,0.110635552941058,0.110635552941058,-104.9835591,39.744874,-104.9848531,39.7448793
-19633,10594,10505,0.00660487490366482,0.00660487490366482,-104.9910918,39.7081283,-104.991169,39.7081293
-20709,10913,7365,0.234512277592806,0.234512277592806,-105.0277761,39.7631337,-105.0253917,39.7620904
-20713,5881,10915,0.0114767201911695,0.0114767201911695,-105.0253707,39.7632845,-105.0253686,39.7633877
-18275,6667,1427,0.0124761175920816,0.0124761175920816,-105.0398176,39.7819709,-105.0398172,39.7820831
-18575,10323,10324,0.133190640971179,0.133190640971179,-105.0341543,39.7821409,-105.0327262,39.781661
-19540,10553,10554,0.069921649249612,0.069921649249612,-104.9890431,39.7091518,-104.9890497,39.708523
-19541,10554,7472,0.00672748885261455,0.00672748885261455,-104.9890497,39.708523,-104.9890503,39.7084625
-19542,7472,10555,0.00636055689076091,0.00636055689076091,-104.9890503,39.7084625,-104.9890509,39.7084053
-20479,10827,10828,0.0321786032396296,0.0321786032396296,-105.0188943,39.7587219,-105.0192706,39.7587299
-5172,3232,4672,0.135963226577445,0.135963226577445,-104.993638,39.7717733,-104.9936519,39.772996
-17294,8754,10015,0.202671913712405,0.202671913712405,-104.944769,39.6947624,-104.9447901,39.696585
-23,24,25,0.131395177842502,0.131395177842502,-105.0205339,39.7572526,-105.0220707,39.7572761
-24,25,26,0.132981987743145,0.132981987743145,-105.0220707,39.7572761,-105.0236259,39.7572468
-18535,5555,10308,0.537923452261619,0.537923452261619,-105.0440136,39.7598585,-105.0503066,39.7598409
-5196,4693,4694,0.101324047402986,0.101324047402986,-105.038526,39.7094438,-105.0397105,39.7094438
-17084,505,4047,0.193244409170512,0.193244409170512,-104.9471759,39.748019,-104.9449621,39.7476682
-20013,7896,8858,0.144841565186615,0.144841565186615,-104.9891984,39.7521958,-104.988003,39.7531189
-18281,6757,6460,0.11412288805936,0.11412288805936,-105.0386612,39.7767112,-105.0386826,39.775685
-5239,4723,4724,0.173697663092072,0.173697663092072,-104.9696767,39.7416775,-104.9696749,39.7432396
-57,61,62,0.0954500024095661,0.0954500024095661,-104.931714,39.700208,-104.932829,39.700178
-18609,5208,6228,0.175202487961463,0.175202487961463,-105.0445268,39.7239462,-105.0445535,39.7255217
-18543,10313,5554,0.549870500653692,0.549870500653692,-105.050446,39.7589461,-105.0440133,39.7589595
-5310,4766,3155,0.0172249530452766,0.0172249530452766,-104.9813252,39.7224891,-104.9811238,39.7224897
-78,84,85,0.0505639086324271,0.0505639086324271,-104.9611564,39.7002245,-104.9605654,39.7002204
-19778,10632,5380,0.0979518829901303,0.0979518829901303,-105.0008955,39.7325996,-105.0008982,39.7334805
-20481,10792,10829,0.0269599370404467,0.0269599370404467,-105.0232345,39.7595229,-105.0230688,39.7597292
-5457,4876,4877,0.0499120224253174,0.0499120224253174,-104.9706482,39.735165,-104.9700645,39.735165
-96,101,102,0.0321305027576107,0.0321305027576107,-104.9418857,39.7001887,-104.9415109,39.7002071
-97,102,103,0.0620448910426151,0.0620448910426151,-104.9415109,39.7002071,-104.940786,39.7001905
-18782,10348,10344,0.0162360672802701,0.0162360672802701,-105.0006804,39.7393818,-105.0008699,39.7393725
-5478,4135,4890,0.0934025271750886,0.0934025271750886,-104.9505787,39.7351289,-104.9494864,39.7351307
-121,128,129,0.177008602394702,0.177008602394702,-105.0065998,39.7352916,-105.0065273,39.7368825
-244,251,252,0.175978023607631,0.175978023607631,-104.9994212,39.7305062,-104.9994279,39.7320888
-18294,6901,1428,0.00619376962359973,0.00619376962359973,-105.0409738,39.7821337,-105.0409732,39.782078
-5500,4907,4908,0.100175479072509,0.100175479072509,-104.935013,39.7346788,-104.9338415,39.7346803
-140,148,149,0.0975727004199176,0.0975727004199176,-105.0050494,39.6930773,-105.0061897,39.6930874
-393,395,396,0.169106051700542,0.169106051700542,-104.9367017,39.7800737,-104.9347437,39.7798532
-18784,10348,10349,0.00525970147109288,0.00525970147109288,-105.0006804,39.7393818,-105.0006189,39.7393808
-5522,4924,4677,0.103650586835971,0.103650586835971,-104.9935332,39.7338673,-104.9941264,39.7346802
-18546,7539,10314,0.65633531431652,0.65633531431652,-105.0449396,39.7652893,-105.0526184,39.7652564
-18297,6968,6995,0.202610377838011,0.202610377838011,-105.0409894,39.7802021,-105.0409786,39.77838
-5676,3669,5032,0.215322761034264,0.215322761034264,-104.9757447,39.7475025,-104.9757617,39.7494389
-173,182,183,0.0984047094047537,0.0984047094047537,-105.0379081,39.6931063,-105.0390582,39.6931063
-174,183,184,0.100655002347226,0.100655002347226,-105.0390582,39.6931063,-105.0402341,39.6931327
-16515,5454,5455,0.104997960992542,0.104997960992542,-104.9857094,39.7569105,-104.984841,39.7562427
-20485,10832,10763,0.0351600114003883,0.0351600114003883,-105.025074,39.7612402,-105.0250727,39.760924
-5779,2576,4917,0.032816005995912,0.032816005995912,-104.9558107,39.7098997,-104.9558286,39.7101945
-192,202,203,0.199740801936021,0.199740801936021,-105.0203557,39.6985481,-105.0203643,39.6967518
-193,203,169,0.402428218597258,0.402428218597258,-105.0203643,39.6967518,-105.0203814,39.6931327
-14755,5931,927,0.177893389603082,0.177893389603082,-104.9792436,39.7304339,-104.9792571,39.7320337
-5803,5121,5122,0.103540820168727,0.103540820168727,-104.970912,39.7597791,-104.9708892,39.7607101
-225,49,236,0.00807621055546913,0.00807621055546913,-104.9733927,39.700201,-104.9732983,39.700201
-18672,1538,1539,0.106836085520251,0.106836085520251,-105.042161,39.7245549,-105.042161,39.7255157
-14756,927,2212,0.186014347432929,0.186014347432929,-104.9792571,39.7320337,-104.9792376,39.7337065
-5852,1967,4622,0.105142035615429,0.105142035615429,-104.9275397,39.743724,-104.9274625,39.7446677
-282,292,293,0.038589084717098,0.038589084717098,-105.0040727,39.760849,-105.0037495,39.7610913
-283,293,294,0.0763501630731075,0.0763501630731075,-105.0037495,39.7610913,-105.0030853,39.7615504
-285,295,296,0.17581051150028,0.17581051150028,-104.9946201,39.7273342,-104.9946233,39.7289153
-14758,4862,7101,0.190667289560019,0.190667289560019,-104.9792634,39.7351686,-104.9792889,39.7368832
-5875,4334,5174,0.0464101693595893,0.0464101693595893,-104.9780308,39.7165201,-104.9774882,39.7165195
-350,351,352,0.0901523030384508,0.0901523030384508,-105.0171199,39.7741304,-105.017099,39.774941
-353,355,356,0.108591561133878,0.108591561133878,-104.9475022,39.7793961,-104.9486062,39.7789125
-369,370,371,0.00989155289209397,0.00989155289209397,-105.0298446,39.7379436,-105.0298176,39.7380301
-18304,7116,6758,0.139614208847036,0.139614208847036,-105.0259576,39.7678922,-105.0275911,39.7678891
-517,511,512,0.231881303387922,0.231881303387922,-105.0312479,39.7836347,-105.03396,39.7837055
-518,512,513,0.0504031171767775,0.0504031171767775,-105.03396,39.7837055,-105.0345487,39.7837339
-12256,8620,8618,0.1042966231246,0.1042966231246,-105.0093075,39.7583444,-105.0084208,39.7577001
-6051,5293,5294,0.1322760806231,0.1322760806231,-105.0315166,39.7439551,-105.0330637,39.7439508
-18305,6758,3982,0.20021257935936,0.20021257935936,-105.0275911,39.7678891,-105.0299336,39.7678829
-574,248,567,0.654270176053915,0.654270176053915,-104.966468,39.6862015,-104.9595276,39.6837329
-575,264,568,0.0404038185731676,0.0404038185731676,-104.9479356,39.6896766,-104.9479442,39.6893133
-19637,10596,10597,0.0126826750829723,0.0126826750829723,-104.9881372,39.7071852,-104.9882854,39.7071884
-20403,10761,10778,0.00417068578422797,0.00417068578422797,-105.0250806,39.7603661,-105.0250816,39.7603286
-6437,2444,5569,0.02055703905507,0.02055703905507,-105.0440363,39.7709406,-105.0440431,39.7711254
-614,605,606,0.0427456634033912,0.0427456634033912,-105.0276669,39.7627327,-105.0278867,39.763078
-11697,1006,1032,0.0356944242966225,0.0356944242966225,-105.0016257,39.7531381,-105.0019469,39.752933
-18485,7779,9146,0.0491523501803915,0.0491523501803915,-105.0393085,39.7589141,-105.0398835,39.7589172
-19922,7869,3723,0.102610678307364,0.102610678307364,-104.9980684,39.719352,-104.9980684,39.7184292
-20528,10783,10029,0.0108754318867703,0.0108754318867703,-105.0159618,39.7583177,-105.015835,39.7583097
-6839,2922,5305,0.104995892978265,0.104995892978265,-105.021523,39.7147919,-105.0227504,39.7148051
-634,544,624,0.0671323040254876,0.0671323040254876,-105.034963,39.736586,-105.0357481,39.7365857
-635,624,625,0.00434381837571047,0.00434381837571047,-105.0357481,39.7365857,-105.0357989,39.7365856
-20428,10788,10789,0.0563042197472527,0.0563042197472527,-105.0218514,39.7587986,-105.0223762,39.7591046
-18340,7633,7634,0.201343863199868,0.201343863199868,-105.0351904,39.7603234,-105.0351771,39.7621341
-20531,2704,10847,0.00595682994262844,0.00595682994262844,-105.0229197,39.7608329,-105.0229893,39.7608356
-18337,7624,2435,0.20163475178063,0.20163475178063,-105.0387364,39.7694549,-105.0387198,39.7712682
-655,645,646,0.15124021105117,0.15124021105117,-104.9372542,39.7414009,-104.9354861,39.7413613
-11518,656,657,0.200075413530476,0.200075413530476,-105.0346018,39.7589808,-105.0322612,39.758985
-18341,7634,7661,0.00671626059696149,0.00671626059696149,-105.0351771,39.7621341,-105.0351767,39.7621945
-18342,7661,7662,0.197150609042501,0.197150609042501,-105.0351767,39.7621945,-105.0351663,39.7639675
-6951,5687,5936,0.0500693590985736,0.0500693590985736,-104.9758385,39.7304575,-104.975253,39.7304575
-6952,5936,5453,0.049749026364738,0.049749026364738,-104.975253,39.7304575,-104.9746713,39.7304514
-18121,10257,2538,0.176222237628552,0.176222237628552,-105.010685,39.7858675,-105.01068,39.7874523
-18344,5247,6874,0.0949718672307841,0.0949718672307841,-105.0351958,39.7649631,-105.0351985,39.7658172
-20408,10778,8971,0.00240570116723256,0.00240570116723256,-105.0250816,39.7603286,-105.0250832,39.760307
-7025,5987,5146,0.0839973170950687,0.0839973170950687,-104.9257006,39.7292726,-104.9257328,39.7300276
-687,680,681,0.00253308666004397,0.00253308666004397,-104.9569831,39.7416105,-104.9569536,39.7416084
-688,681,682,0.0177686502456197,0.0177686502456197,-104.9569536,39.7416084,-104.9567458,39.7416064
-20536,10790,10850,0.034182335159618,0.034182335159618,-105.0228403,39.759346,-105.0226484,39.7596157
-18351,6756,3981,0.199906908242653,0.199906908242653,-105.0275956,39.7669634,-105.0299345,39.7669593
-7046,5996,5997,0.0183612294578931,0.0183612294578931,-104.9257688,39.7618503,-104.9258117,39.7620121
-7047,5997,5998,0.0939822022965603,0.0939822022965603,-104.9258117,39.7620121,-104.9257702,39.7628567
-16701,9996,9997,0.0529811614609842,0.0529811614609842,-104.9999838,39.7464987,-104.9999731,39.7460223
-20223,10711,10712,0.0485921897229188,0.0485921897229188,-104.9413123,39.6937735,-104.941312,39.6942105
-7066,4209,6007,0.100592936440223,0.100592936440223,-105.0180383,39.7004566,-105.0192141,39.7004566
-719,715,716,0.14011322934495,0.14011322934495,-105.0041615,39.7717924,-105.0041786,39.7730524
-18164,6036,4091,0.184872985391224,0.184872985391224,-105.0152693,39.7856221,-105.0152654,39.7839595
-18360,7775,7374,0.049527285222362,0.049527285222362,-105.0259595,39.7688086,-105.0259557,39.7683632
-7242,1086,6117,0.0183572728116315,0.0183572728116315,-104.9723899,39.7092881,-104.9721753,39.7092881
-20444,10797,10801,0.0204844414155983,0.0204844414155983,-105.0218716,39.7614664,-105.021849,39.761283
-14778,5928,925,0.176931188736704,0.176931188736704,-104.9803886,39.7304366,-104.9804094,39.7320277
-7325,6163,6164,0.404282808510336,0.404282808510336,-104.9569776,39.6893298,-104.9569833,39.685694
-757,756,757,0.0403523543057396,0.0403523543057396,-104.9853038,39.7752036,-104.9848317,39.775197
-758,758,759,0.10406364243601,0.10406364243601,-104.9258629,39.7765766,-104.9246452,39.7765808
-20552,10810,10855,0.0274674933149076,0.0274674933149076,-105.0204422,39.7580973,-105.020438,39.7583443
-7375,340,337,0.0516827997381363,0.0516827997381363,-104.9379355,39.7804643,-104.9373307,39.7804664
-778,783,784,0.143355100800641,0.143355100800641,-105.001524,39.702453,-105.0031735,39.702226
-18365,1660,7716,0.0501099513590678,0.0501099513590678,-105.0259529,39.7674233,-105.0259442,39.7669727
-7418,5550,6228,0.0493634763375772,0.0493634763375772,-105.0439763,39.72552,-105.0445535,39.7255217
-798,803,806,1.01502432527974,1.01502432527974,-104.9246129,39.752877,-104.9127396,39.7528988
-20237,10712,8819,0.0494540965066323,0.0494540965066323,-104.941312,39.6942105,-104.940734,39.6942095
-7441,1600,1601,0.0713701116113288,0.0713701116113288,-105.0133862,39.6987066,-105.013927,39.6982179
-814,825,826,0.10637782371988,0.10637782371988,-104.9647057,39.7532062,-104.9634614,39.7531961
-815,826,827,0.107195537700229,0.107195537700229,-104.9634614,39.7531961,-104.9622082,39.7532291
-20239,10716,10717,0.029516495512001,0.029516495512001,-104.9411444,39.6963884,-104.9410012,39.6961469
-7466,2930,5311,0.101596891275597,0.101596891275597,-105.021523,39.6985217,-105.0227074,39.6985877
-836,849,850,0.0925483728292225,0.0925483728292225,-104.9429772,39.7557004,-104.9429726,39.7565327
-837,850,851,0.184151560988971,0.184151560988971,-104.9429726,39.7565327,-104.9429635,39.7581888
-20241,8817,10717,0.0237033604501814,0.0237033604501814,-104.9407242,39.6961507,-104.9410012,39.6961469
-7541,6292,65,0.186329349943054,0.186329349943054,-104.933901,39.698515,-104.934135,39.700181
-857,870,871,0.202831473953724,0.202831473953724,-104.9428589,39.7710708,-104.9428522,39.7728949
-14121,4084,3945,0.0818484712615532,0.0818484712615532,-104.9441124,39.7484997,-104.9450651,39.7484271
-18787,10347,10345,0.045081440573134,0.045081440573134,-105.0006789,39.7395014,-105.0006728,39.7399068
-7826,2505,6454,0.100016861256994,0.100016861256994,-105.0100464,39.7753527,-105.0112167,39.7753455
-876,889,890,0.105571186658179,0.105571186658179,-104.9536454,39.7644642,-104.9524103,39.764457
-877,890,891,0.105688383652669,0.105688383652669,-104.9524103,39.764457,-104.9511738,39.7644539
-11418,8067,8068,0.0483239948134963,0.0483239948134963,-105.0441378,39.7835013,-105.043576,39.7834515
-7848,6464,6465,0.0519215197465546,0.0519215197465546,-105.041027,39.7752745,-105.0416343,39.775288
-894,908,909,0.110040792413973,0.110040792413973,-104.9331257,39.7644965,-104.9318383,39.7645031
-896,910,911,0.148938852784508,0.148938852784508,-104.9998754,39.7567199,-104.998644,39.7576675
-11420,8068,8077,0.744996900508782,0.744996900508782,-105.043576,39.7834515,-105.0348588,39.7833346
-7872,6484,6485,0.109350713693358,0.109350713693358,-104.9848486,39.7462103,-104.9835697,39.7461971
-914,928,929,0.0454506765778274,0.0454506765778274,-104.9786778,39.7320223,-104.9781467,39.7320382
-15223,8102,5299,0.0276921695746079,0.0276921695746079,-105.0426126,39.7442054,-105.042522,39.7439663
-16761,10006,10010,0.188081556068426,0.188081556068426,-104.9523627,39.6986871,-104.950646,39.6997437
-20354,9336,10730,0.00773852906846938,0.00773852906846938,-105.0251673,39.7585782,-105.0250776,39.7585876
-7965,6543,6544,0.0483732045653669,0.0483732045653669,-104.9723281,39.7237476,-104.9717626,39.7237562
-954,966,967,0.0990431305437434,0.0990431305437434,-104.9838084,39.7225355,-104.9838014,39.7234262
-19650,10601,10604,0.0245600833310456,0.0245600833310456,-104.9879279,39.7066512,-104.988215,39.7066518
-18271,6463,6629,0.159535181156963,0.159535181156963,-105.0398602,39.7752659,-105.0398199,39.7767003
-20358,10736,9208,0.00987870578899212,0.00987870578899212,-105.0233746,39.7593437,-105.0233093,39.759417
-11333,3953,8218,0.0887906096153549,0.0887906096153549,-105.0001937,39.7283674,-104.9994384,39.7289153
-976,987,988,0.0367128135573791,0.0367128135573791,-104.9740753,39.7240686,-104.9740667,39.7237385
-18911,10389,10390,0.0499832893351177,0.0499832893351177,-105.0126283,39.7501885,-105.0126243,39.749739
-8132,6646,6647,0.176189320777164,0.176189320777164,-104.9986572,39.7336891,-104.998664,39.7352736
-20359,9208,8992,0.00952006614931064,0.00952006614931064,-105.0233093,39.759417,-105.0232439,39.7594863
-18533,7540,5565,0.0799101067174197,0.0799101067174197,-105.0449514,39.7661904,-105.0440165,39.7661967
-15227,8248,1474,0.0211145699437457,0.0211145699437457,-104.9245969,39.6962239,-104.9247632,39.6960836
-11427,8252,8251,0.0497577863871374,0.0497577863871374,-105.0342719,39.7834294,-105.0348524,39.7834646
-8228,5488,6699,0.203871251538877,0.203871251538877,-104.9494922,39.738334,-104.9494732,39.7401674
-1013,1025,1026,0.240326237485559,0.240326237485559,-104.9622361,39.7447859,-104.9622426,39.7469472
-1014,1026,1027,0.140197604091005,0.140197604091005,-104.9622426,39.7469472,-104.9622318,39.748208
-11524,8299,6771,0.0679188084680006,0.0679188084680006,-105.0260753,39.7595725,-105.0268698,39.7595648
-8280,6724,1837,0.0673898837011532,0.0673898837011532,-105.0120852,39.72025,-105.0120749,39.720856
-16769,3180,3279,0.131366088579917,0.131366088579917,-104.9540885,39.7026636,-104.9540847,39.703845
-11560,7714,8320,0.204692599225755,0.204692599225755,-105.0316842,39.7566755,-105.0317009,39.7548347
-18785,10349,3941,0.0399279993421446,0.0399279993421446,-105.0006189,39.7393808,-105.000152,39.7393746
-1055,1071,1072,0.193562714729093,0.193562714729093,-105.0090259,39.7765399,-105.009231,39.7782735
-18374,2425,6794,0.0832162654729584,0.0832162654729584,-105.0324788,39.7706946,-105.0322928,39.76996
-8378,6787,5475,0.176557126416642,0.176557126416642,-104.9684521,39.7368249,-104.9684271,39.7384126
-1079,1095,1096,0.106445830238736,0.106445830238736,-105.0405345,39.724543,-105.0405516,39.7255002
-1081,1097,1098,0.0486277340974482,0.0486277340974482,-105.040561,39.7306097,-105.0405664,39.7301724
-18378,2549,8381,0.409599255943821,0.409599255943821,-105.0398307,39.787434,-105.0398172,39.7911176
-8425,4370,2496,0.102227972652095,0.102227972652095,-105.0014826,39.7040009,-105.0026756,39.7039481
-1101,1117,1118,0.104134759343337,0.104134759343337,-105.0404813,39.7539268,-105.0404858,39.7548633
-19670,9361,9367,0.104968988119014,0.104968988119014,-105.0246491,39.770221,-105.0246438,39.769277
-11768,8406,8391,0.072368398733761,0.072368398733761,-104.9814866,39.7527817,-104.982081,39.7523183
-11405,6191,577,0.346853696348124,0.346853696348124,-104.9832163,39.7795774,-104.979193,39.7791651
-11711,2125,2126,0.0693722119224359,0.0693722119224359,-105.0057953,39.756766,-105.0056493,39.7573797
-1121,1137,1138,0.209246619241212,0.209246619241212,-105.0404024,39.780201,-105.040403,39.7820828
-11896,1345,8466,0.0539854948645785,0.0539854948645785,-105.0025087,39.7490201,-105.0020778,39.7486652
-8519,3823,6870,0.0122276886226055,0.0122276886226055,-105.0106786,39.6880414,-105.0108215,39.6880414
-1142,1161,1045,0.106182749069371,0.106182749069371,-104.9634876,39.7632183,-104.9622462,39.763254
-1143,1045,1162,0.0572035723632033,0.0572035723632033,-104.9622462,39.763254,-104.9615772,39.7632401
-11949,8497,8498,0.0157235898061176,0.0157235898061176,-105.0139116,39.7556283,-105.0137949,39.755519
-8563,6893,6894,0.0563604312984052,0.0563604312984052,-105.0252908,39.7655845,-105.0259502,39.7655831
-1161,1180,1181,0.108807320753836,0.108807320753836,-104.9967587,39.6994606,-104.9967963,39.6984825
-1162,1181,555,0.0264412731929892,0.0264412731929892,-104.9967963,39.6984825,-104.9967877,39.6982448
-11990,6574,4455,0.147936408791814,0.147936408791814,-104.9828432,39.7584876,-104.9816151,39.759425
-8587,6905,6906,0.00825706398143248,0.00825706398143248,-104.9475756,39.7692051,-104.947479,39.769204
-1181,1196,1197,0.0308045840002764,0.0308045840002764,-104.9532393,39.7271307,-104.9528791,39.7271293
-16676,9978,9979,0.0911222888155273,0.0911222888155273,-105.0081875,39.7419793,-105.0090565,39.7415049
-12046,8525,8526,0.0214801658544325,0.0214801658544325,-105.0047107,39.7504962,-105.0049596,39.7505226
-8609,4639,1260,0.0990232299326886,0.0990232299326886,-105.0193449,39.7766055,-105.0205036,39.7766121
-20366,10746,10748,0.00389959559054649,0.00389959559054649,-105.0236226,39.75895,-105.0235917,39.7589758
-8754,6984,6985,0.142274771709776,0.142274771709776,-105.008704,39.7588217,-105.0098936,39.7597166
-15273,8632,8698,0.0321488809830426,0.0321488809830426,-104.9291888,39.7063544,-104.9293068,39.7060799
-12327,8651,8462,0.0863896937468126,0.0863896937468126,-105.0047136,39.7486765,-105.003842,39.7490696
-8825,7022,7023,0.132397309217195,0.132397309217195,-105.0315597,39.7499887,-105.0315207,39.751179
-15906,8604,1831,0.0312706435771371,0.0312706435771371,-105.0283446,39.7216209,-105.0282669,39.7213461
-8982,704,420,0.200616718436647,0.200616718436647,-104.9419371,39.7419475,-104.9418594,39.7437507
-1261,1282,24,0.134590345997008,0.134590345997008,-105.0205344,39.7560422,-105.0205339,39.7572526
-18452,7704,9427,0.203142152499049,0.203142152499049,-105.0410725,39.7566932,-105.0410753,39.7548663
-12940,8766,1971,0.0880952038111177,0.0880952038111177,-105.0021048,39.7447013,-105.0012102,39.7450944
-12050,8529,8530,0.0322062217802774,0.0322062217802774,-105.0041786,39.7503114,-105.0045096,39.7501731
-1281,1306,1307,0.102064457561207,0.102064457561207,-105.0288014,39.7133724,-105.0299945,39.7133592
-12052,8529,8412,0.0524928623134227,0.0524928623134227,-105.0041786,39.7503114,-105.0036942,39.7500213
-20805,10934,7427,0.00626540347624637,0.00626540347624637,-105.0368648,39.7621971,-105.0369381,39.7621971
-9106,7163,7164,0.0532969377049032,0.0532969377049032,-105.0381509,39.7543757,-105.0381551,39.754855
-1301,1326,1327,0.0908036524111016,0.0908036524111016,-105.0442903,39.7133559,-105.0452398,39.7129907
-1302,1327,1328,0.187321516717609,0.187321516717609,-105.0452398,39.7129907,-105.0473907,39.7133074
-20389,10773,10765,0.00486729953892219,0.00486729953892219,-105.0238489,39.7606336,-105.023905,39.7606411
-20812,7034,10952,0.00504516380305115,0.00504516380305115,-105.0322625,39.7622195,-105.0323215,39.7622208
-12945,8883,8884,0.0693524767029838,0.0693524767029838,-105.0014849,39.7426723,-105.0010815,39.7421312
-9177,1813,7200,0.0899820045120437,0.0899820045120437,-104.923341,39.6929674,-104.9222894,39.6929759
-12258,8619,8617,0.025123815719297,0.025123815719297,-105.0083242,39.7578801,-105.0083585,39.7576557
-9178,132,7201,0.0532452299195118,0.0532452299195118,-104.9874659,39.6930068,-104.9868436,39.6930068
-13064,8946,8947,0.0850173355126965,0.0850173355126965,-104.9938162,39.7672158,-104.9948109,39.7672181
-9301,7274,6989,0.145898107890786,0.145898107890786,-104.9337866,39.742569,-104.9320802,39.742569
-1340,1368,1369,0.19896343011117,0.19896343011117,-104.9900335,39.7121268,-104.9923595,39.7121202
-20815,7168,10919,0.00784309361436635,0.00784309361436635,-105.0381187,39.7621933,-105.0382104,39.7621908
-9323,7286,7287,0.0531798537803958,0.0531798537803958,-104.983982,39.7019687,-104.9833604,39.7019722
-18312,7244,7291,0.112193704343122,0.112193704343122,-105.0311621,39.7711127,-105.0324737,39.7711548
-20817,10953,10288,0.00348743524444471,0.00348743524444471,-105.0291765,39.7620512,-105.0292173,39.7620512
-20818,10288,10921,0.00283999263123215,0.00283999263123215,-105.0292173,39.7620512,-105.0292505,39.7620502
-9345,7305,6323,0.0511693918815177,0.0511693918815177,-104.9669227,39.7020659,-104.9663246,39.7020694
-20831,10939,10947,0.189387199061175,0.189387199061175,-105.0393977,39.762194,-105.0393977,39.7638972
-20504,10061,10815,0.00579629159172248,0.00579629159172248,-105.0193111,39.7583425,-105.0192433,39.7583417
-12268,8625,8626,0.00924470302738606,0.00924470302738606,-105.0063297,39.755277,-105.0062526,39.7553353
-18317,7365,7366,0.190091232151663,0.190091232151663,-105.0253917,39.7620904,-105.0267891,39.7634203
-18915,10393,10394,0.0257178211457629,0.0257178211457629,-105.0122186,39.7502302,-105.0124855,39.7503369
-9548,5843,7400,0.197969196756037,0.197969196756037,-104.9687193,39.6910999,-104.9687412,39.6893196
-1402,1428,1429,0.0514192906451236,0.0514192906451236,-105.0409732,39.782078,-105.0415749,39.7820729
-19551,10559,10558,0.0350073244923259,0.0350073244923259,-104.9881037,39.7097761,-104.9880982,39.7100909
-20372,10756,10757,0.119877702556756,0.119877702556756,-105.0229933,39.7612883,-105.0243898,39.7611891
-18474,9006,9005,0.01365486811001,0.01365486811001,-105.0399032,39.754857,-105.0399025,39.7549798
-9618,6255,7423,0.201105238361345,0.201105238361345,-104.9944654,39.6984907,-104.9944429,39.6966822
-1423,1446,1447,0.102065186535373,0.102065186535373,-105.0038944,39.7084713,-105.0038773,39.7075535
-12355,8667,8662,0.00824054620763183,0.00824054620763183,-105.0124751,39.7525722,-105.0123789,39.7525675
-13473,9096,9097,0.0791788196488147,0.0791788196488147,-105.0171656,39.7251183,-105.0162433,39.7250562
-13558,9033,9033,0.000550802138422688,0.000550802138422688,-105.0111765,39.722883,-105.0111825,39.7228848
-9720,5436,7485,0.210597915191446,0.210597915191446,-105.0250692,39.7085234,-105.0275311,39.708526
-1445,1465,778,0.201931327083159,0.201931327083159,-105.0238576,39.7038839,-105.023849,39.7020679
-16745,10007,6830,0.0463356709963923,0.0463356709963923,-104.9516233,39.6981848,-104.9512088,39.6979166
-18484,9139,9145,0.0170083591694009,0.0170083591694009,-105.0431263,39.7511062,-105.0429278,39.7510959
-18486,9146,1121,0.0502889247784144,0.0502889247784144,-105.0398835,39.7589172,-105.0404718,39.7589145
-13588,9137,9132,0.0916872062208973,0.0916872062208973,-104.9868714,39.7007074,-104.9861015,39.7001338
-18564,10320,10321,0.148893183386122,0.148893183386122,-105.0313943,39.7806712,-105.0330975,39.7803888
-1470,1490,1454,0.0984270848036789,0.0984270848036789,-105.0026792,39.6948706,-105.0038293,39.6948507
-11793,8412,1301,0.0102820603565046,0.0102820603565046,-105.0036942,39.7500213,-105.0035821,39.7499878
-13649,9157,9158,0.11057157733623,0.11057157733623,-104.9952014,39.7022895,-104.9960034,39.7030693
-9923,7595,5945,0.197471792675123,0.197471792675123,-104.9362843,39.7292429,-104.9363272,39.7310185
-1492,1512,1513,0.240760864140441,0.240760864140441,-104.931734,39.696087,-104.92892,39.6960846
-1493,1513,1514,0.0903356876724302,0.0903356876724302,-104.92892,39.6960846,-104.9278643,39.6960978
-18489,9154,9164,0.0526957444463644,0.0526957444463644,-105.0338562,39.7492256,-105.034029,39.7487707
-9949,7606,7607,0.0349507847949759,0.0349507847949759,-104.9382673,39.7253035,-104.9382968,39.725617
-1512,1531,1532,0.421840818868262,0.421840818868262,-104.9909332,39.7613911,-104.9909417,39.7651848
-1514,1533,1534,0.0990053945754622,0.0990053945754622,-104.9453062,39.7574036,-104.944148,39.7574036
-18920,10391,10399,0.0111591670236662,0.0111591670236662,-105.0127316,39.7492235,-105.0126923,39.7491278
-10025,6642,3954,0.137704462550789,0.137704462550789,-104.9985895,39.7273172,-105.0001997,39.7273124
-1533,1556,1557,0.0904418216599082,0.0904418216599082,-104.9613425,39.77767,-104.9602842,39.7776637
-1535,1558,1559,0.0987505899129773,0.0987505899129773,-104.959414,39.7776762,-104.9582585,39.7776672
-19486,10409,10426,0.0202821728904968,0.0202821728904968,-104.9883441,39.7097759,-104.9883452,39.7095935
-10050,7651,7652,0.0462326431468639,0.0462326431468639,-105.0389317,39.7282542,-105.0394723,39.7282575
-1552,1577,1578,0.0904564264247089,0.0904564264247089,-105.0390628,39.6875658,-105.0401129,39.6876594
-1554,1579,1580,0.0903173650147356,0.0903173650147356,-105.0411657,39.6879819,-105.0421871,39.6881867
-18611,2585,1850,0.178619647699559,0.178619647699559,-105.035536,39.7229363,-105.0355172,39.72133
-19139,479,10436,0.0608772998887891,0.0608772998887891,-105.0124432,39.7406786,-105.0130548,39.7409589
-10147,7693,7694,0.00731957097451548,0.00731957097451548,-104.9475739,39.7873593,-104.947581,39.7874249
-1571,1598,1600,0.0527554061663716,0.0527554061663716,-105.0137725,39.6990764,-105.0133862,39.6987066
-18460,6389,9354,0.131365686337894,0.131365686337894,-105.0387149,39.7475739,-105.0387149,39.7487553
-13942,9095,9242,0.111189675764469,0.111189675764469,-105.0210758,39.7255489,-105.0223459,39.7257626
-10218,6638,5410,0.0525082825873588,0.0525082825873588,-104.9710843,39.6893658,-104.9704709,39.6893522
-11529,809,810,0.133518358438394,0.133518358438394,-105.026046,39.7554277,-105.0276079,39.7554276
-16258,9267,3529,0.187765741537081,0.187765741537081,-104.9552346,39.6965869,-104.9552447,39.6982755
-10288,7759,7760,0.0990614933501691,0.0990614933501691,-104.9475555,39.7710608,-104.9463967,39.7710806
-1610,1640,1641,0.0829769157452624,0.0829769157452624,-105.0156865,39.706479,-105.0156951,39.7057328
-1611,1641,1642,0.0110107206173314,0.0110107206173314,-105.0156951,39.7057328,-105.0156924,39.7056338
-14142,478,9286,0.110440686979957,0.110440686979957,-105.0170811,39.7459783,-105.0165836,39.7450617
-10359,6835,4056,0.176947127899101,0.176947127899101,-105.0397191,39.7165613,-105.0396933,39.7181525
-10360,4056,7791,0.153314942388554,0.153314942388554,-105.0396933,39.7181525,-105.0397234,39.7195311
-16039,9796,9803,0.17034831343451,0.17034831343451,-105.0121361,39.6892112,-105.0101617,39.6894076
-20229,8818,8827,0.0165504595782256,0.0165504595782256,-104.9407334,39.6945605,-104.94054,39.6945576
-15466,9616,9605,0.0511543414269977,0.0511543414269977,-105.0011333,39.7436854,-105.000722,39.7440195
-10664,7914,2973,0.0665734173113744,0.0665734173113744,-105.027595,39.7578708,-105.0275907,39.7584695
-1646,1673,1674,0.136622102626379,0.136622102626379,-105.0111824,39.7680416,-105.0127809,39.7680407
-1647,1674,1675,0.135851990536989,0.135851990536989,-105.0127809,39.7680407,-105.0143702,39.7680596
-15467,9605,7963,0.0172079120084978,0.0172079120084978,-105.000722,39.7440195,-105.0005879,39.7441349
-1668,1693,1694,0.101380870701686,0.101380870701686,-105.0416583,39.7675928,-105.0428441,39.7675702
-11218,3630,8166,0.0456744230751041,0.0456744230751041,-104.9286229,39.7018847,-104.9290225,39.7016123
-15788,9639,9625,0.0212057259943503,0.0212057259943503,-105.0250842,39.7369224,-105.0249286,39.7370709
-11369,8219,7971,0.0335395055556045,0.0335395055556045,-105.0056833,39.7616862,-105.0053146,39.761583
-16195,7725,5820,0.195527635044049,0.195527635044049,-104.9821706,39.6894094,-104.9821591,39.6911678
-16196,5820,7207,0.20506620423787,0.20506620423787,-104.9821591,39.6911678,-104.9821537,39.693012
-11659,7036,3421,0.201375612760589,0.201375612760589,-105.0322644,39.7643359,-105.0346204,39.7643363
-11773,2681,5358,0.147201059924865,0.147201059924865,-104.9782507,39.7512619,-104.979461,39.7503203
-17216,8420,1908,0.199697066538748,0.199697066538748,-104.9774882,39.7056633,-104.9774775,39.7074592
-16157,9835,9836,0.024879986991164,0.024879986991164,-105.0143087,39.7379669,-105.0142819,39.7377441
-18699,1320,1376,0.177502821070015,0.177502821070015,-105.0391059,39.7133709,-105.0390952,39.7117746
-12115,8553,8554,0.175311002200187,0.175311002200187,-104.9647683,39.7416548,-104.9647611,39.7432314
-19503,10530,10531,0.0385295444601748,0.0385295444601748,-104.9883733,39.7063608,-104.9883756,39.7060143
-16538,9932,9933,0.139509514048293,0.139509514048293,-104.9763549,39.7494877,-104.9763678,39.7507423
-1717,1736,1737,0.0422973816408655,0.0422973816408655,-105.0057005,39.6912645,-105.0061947,39.6912734
-17220,3087,9830,0.198791677003679,0.198791677003679,-104.9775097,39.7129054,-104.9774882,39.7146931
-12205,8587,7095,0.0103763001462627,0.0103763001462627,-105.0011631,39.7420804,-105.0010418,39.7420775
-1748,1765,1768,0.20159496635188,0.20159496635188,-104.9769241,39.7129008,-104.976901,39.7110879
-12332,8654,8655,0.0104809427005404,0.0104809427005404,-105.0075431,39.754727,-105.0074206,39.7547231
-19506,10533,7232,0.00927443019901883,0.00927443019901883,-104.9883745,39.7058681,-104.9883759,39.7057847
-12444,8704,8705,0.0186821732215156,0.0186821732215156,-104.9404955,39.7617894,-104.9404928,39.7619574
-1767,1785,1786,0.049264963521636,0.049264963521636,-104.9839616,39.6947869,-104.9833861,39.6948011
-16454,9909,9910,0.124306713488191,0.124306713488191,-104.9730512,39.7063782,-104.9724845,39.7074076
-12491,8717,8718,0.055230353030641,0.055230353030641,-104.9599663,39.6929697,-104.9593208,39.692969
-12493,8719,8720,0.118556931073074,0.118556931073074,-104.9792566,39.6946845,-104.979262,39.6936183
-16535,4328,8117,0.102336137979151,0.102336137979151,-104.976953,39.748636,-104.97815,39.7486401
-1810,1826,1827,0.198453556780362,0.198453556780362,-104.9791466,39.7165069,-104.9791916,39.7147225
-18642,7416,4062,0.177070510498962,0.177070510498962,-105.0450953,39.7165644,-105.0451087,39.7181568
-12605,384,4685,0.0512286127934627,0.0512286127934627,-104.9934388,39.7289219,-104.9940378,39.7289164
-1838,1854,1855,0.0513002538457751,0.0513002538457751,-105.0379177,39.7213314,-105.0385175,39.7213346
-1839,1855,1856,0.0505552484656801,0.0505552484656801,-105.0385175,39.7213346,-105.0391086,39.721333
-16789,8649,10013,0.223567773525098,0.223567773525098,-105.0092259,39.7486951,-105.0114923,39.7476921
-12632,2360,3710,0.110712951608372,0.110712951608372,-104.9874759,39.7193464,-104.9874523,39.7183509
-1858,1870,1871,0.100377935012122,0.100377935012122,-104.9899993,39.7111545,-104.9899914,39.7102518
-17014,10053,10054,0.0101091220768254,0.0101091220768254,-105.0167611,39.7547513,-105.0167692,39.7546606
-12810,8258,8846,0.197578956532281,0.197578956532281,-104.9988487,39.78249,-104.9966683,39.7818987
-12812,8846,6028,0.064250785290107,0.064250785290107,-104.9966683,39.7818987,-104.9959579,39.7817094
-12814,8847,8848,0.169735694825716,0.169735694825716,-104.9968592,39.782169,-104.9987337,39.782674
-12816,8848,297,0.081779930762806,0.081779930762806,-104.9987337,39.782674,-104.999633,39.7829256
-16613,9942,2685,0.29520243699611,0.29520243699611,-104.9824158,39.7507117,-104.9799803,39.7525937
-12926,8892,8893,0.0723033727126927,0.0723033727126927,-105.0008068,39.745167,-105.001108,39.7457746
-13020,8924,8925,0.0102645296363106,0.0102645296363106,-104.9947852,39.7699691,-104.9949053,39.7699691
-13048,8934,8935,0.109609070074496,0.109609070074496,-104.9901787,39.7746982,-104.9904048,39.7737279
-14679,9301,445,0.205255827063182,0.205255827063182,-104.9700183,39.7255888,-104.9700104,39.7237429
-17965,10232,10237,0.0287772787854116,0.0287772787854116,-104.9882382,39.7252241,-104.9882377,39.7249653
-18916,10395,10396,0.0665707610088623,0.0665707610088623,-105.0103557,39.7499974,-105.0109587,39.7503762
-17673,8930,8847,0.0672232407607821,0.0672232407607821,-104.9961216,39.7819588,-104.9968592,39.782169
-19611,10510,10586,0.0687878070750461,0.0687878070750461,-104.9902651,39.7095644,-104.9910692,39.709571
-1895,1909,1910,0.0533681732492523,0.0533681732492523,-104.9763514,39.7074715,-104.9757282,39.7074937
-18738,1858,7870,0.177701929540755,0.177701929540755,-105.0403103,39.7213316,-105.0403023,39.7197335
-18722,1312,9772,0.242272496904356,0.242272496904356,-105.0342968,39.7133689,-105.0342887,39.7111901
-13294,4282,4326,0.048552671008238,0.048552671008238,-105.0344834,39.703983,-105.0350499,39.7039565
-1916,1928,1929,0.105818779358726,0.105818779358726,-104.9605576,39.7074884,-104.9593208,39.7074709
-18739,7870,4057,0.175799763463846,0.175799763463846,-105.0403023,39.7197335,-105.0403076,39.7181525
-18654,6221,7655,0.275174189153955,0.275174189153955,-105.0421663,39.7257919,-105.0421691,39.7282666
-1942,1956,1957,0.0270768788779568,0.0270768788779568,-104.9295943,39.7085824,-104.9292853,39.7085296
-13392,311,9059,0.0124055357740245,0.0124055357740245,-104.9786416,39.779139,-104.9784966,39.7791336
-18659,7643,6205,0.176055293755678,0.176055293755678,-105.030657,39.7277196,-105.0306528,39.7261363
-13405,8942,9061,0.112337222040467,0.112337222040467,-104.9969401,39.7675503,-104.9981155,39.7670982
-19275,10446,10424,0.0353155595120025,0.0353155595120025,-104.9952471,39.7458453,-104.9949557,39.7460704
-1960,1977,1978,0.0139641936224905,0.0139641936224905,-104.9406062,39.7437573,-104.9407693,39.7437639
-13485,9102,308,0.0118340647108347,0.0118340647108347,-105.0160728,39.7255648,-105.0162105,39.7255543
-20374,10758,3588,0.00620515380678302,0.00620515380678302,-105.0243956,39.7608382,-105.0243965,39.7607824
-18262,2547,6067,0.202075066970098,0.202075066970098,-105.0386666,39.7874341,-105.038672,39.7856168
-13520,9073,117,0.110830423506594,0.110830423506594,-105.0251226,39.7293097,-105.0251312,39.7303064
-13529,5647,9088,0.177768687230353,0.177768687230353,-105.0347769,39.7254226,-105.0327002,39.7254916
-19599,1871,10582,0.0185256932684462,0.0185256932684462,-104.9899914,39.7102518,-104.9902054,39.7102774
-13548,447,2999,0.0894668373271695,0.0894668373271695,-105.0132294,39.7256673,-105.0136746,39.7263954
-13553,9126,579,0.319404247396224,0.319404247396224,-105.0106484,39.7227756,-105.0080855,39.7206863
-18657,7657,10331,0.158775443026926,0.158775443026926,-105.0445162,39.72828,-105.0445132,39.7297079
-13716,6715,4211,0.0895901111539728,0.0895901111539728,-105.0169992,39.6967549,-105.0180463,39.6967483
-2012,2021,2022,0.202353267688237,0.202353267688237,-104.9349346,39.7274171,-104.9349282,39.7292369
-18846,10364,10366,0.0360011605118072,0.0360011605118072,-105.0140112,39.7371325,-105.0139219,39.7374489
-13805,9197,6639,0.199762828560815,0.199762828560815,-104.9985624,39.7147937,-104.9985703,39.7165902
-18572,10317,10318,0.0818849597364774,0.0818849597364774,-105.03063,39.7832519,-105.0297002,39.7834301
-2037,2046,2047,0.202843850092204,0.202843850092204,-104.9674789,39.7129253,-104.9674682,39.7111011
-2038,2047,2048,0.202089258953368,0.202089258953368,-104.9674682,39.7111011,-104.9674823,39.7092837
-19239,8480,10459,0.145581432505511,0.145581432505511,-104.9912213,39.7425829,-104.9924125,39.7416474
-13871,2282,3603,0.0995034643784278,0.0995034643784278,-104.9305543,39.7565508,-104.9293903,39.7565549
-2058,746,1564,0.142548749521321,0.142548749521321,-104.9530366,39.7763944,-104.9530639,39.7776762
-12345,8661,8662,0.0184782413605156,0.0184782413605156,-105.0123532,39.7524025,-105.0123789,39.7525675
-13933,9117,9237,0.0487812750222334,0.0487812750222334,-105.0252112,39.7363992,-105.0252103,39.7368379
-13946,9243,9109,0.0432001724914345,0.0432001724914345,-105.005875,39.7256239,-105.0053716,39.7256561
-20415,10773,10767,0.0164543942872072,0.0164543942872072,-105.0238489,39.7606336,-105.0239411,39.7605037
-15289,7065,9559,0.00979064512162057,0.00979064512162057,-104.9499634,39.7145233,-104.9500777,39.714528
-15406,9582,9586,0.261696459707034,0.261696459707034,-105.0104647,39.7536666,-105.009826,39.7559683
-14374,512,3439,0.0820413167433817,0.0820413167433817,-105.03396,39.7837055,-105.0345546,39.7842848
-15291,9560,9561,0.0474312472960203,0.0474312472960203,-104.9418174,39.706892,-104.941269,39.7069549
-20033,3666,9939,0.222490979962601,0.222490979962601,-104.9739808,39.7474784,-104.9739728,39.7494793
-14436,9351,6743,0.133828356760244,0.133828356760244,-105.0252652,39.7487792,-105.0268304,39.7487612
-2083,2084,2085,0.132628008561016,0.132628008561016,-104.9536401,39.7669187,-104.9536649,39.7681113
-20269,10721,10704,0.0408769490843711,0.0408769490843711,-105.0450564,39.7730205,-105.0445781,39.7730214
-20257,7553,10687,0.047722995184739,0.047722995184739,-105.0451406,39.774187,-105.0445822,39.7741837
-14596,9395,7373,0.0500503806511319,0.0500503806511319,-105.0253115,39.7688045,-105.0253069,39.7683544
-2107,1822,2109,0.0984259671843471,0.0984259671843471,-104.9269459,39.7647142,-104.9269682,39.7655992
-18860,10369,10362,0.0840816587742034,0.0840816587742034,-105.0144214,39.7366716,-105.0146327,39.7359331
-20253,10719,5572,0.00788824170654016,0.00788824170654016,-105.0441026,39.7730223,-105.0440103,39.7730225
-16690,9989,9990,0.0859897279747206,0.0859897279747206,-105.00675,39.7456071,-105.005945,39.7460707
-2125,1981,1966,0.0405441466490896,0.0405441466490896,-104.926882,39.743379,-104.9270076,39.7437306
-16692,8314,8651,0.0716207548906764,0.0716207548906764,-105.0042918,39.74812,-105.0047136,39.7486765
-16847,3130,9896,0.0388183147420438,0.0388183147420438,-104.970947,39.7024436,-104.9713614,39.7025858
-12343,8658,8659,0.0326641917954917,0.0326641917954917,-105.0059172,39.7565338,-105.0062583,39.7566662
-16277,4438,9869,0.0429816129844846,0.0429816129844846,-104.9546419,39.6984776,-104.9543259,39.6981771
-2254,2256,2257,0.179026041725141,0.179026041725141,-105.0275483,39.7181459,-105.0275587,39.7197559
-18714,6214,7650,0.274890248386652,0.274890248386652,-105.037867,39.7257736,-105.0378319,39.7282456
-2282,2281,2282,0.208433952181449,0.208433952181449,-104.9305302,39.7546764,-104.9305543,39.7565508
-18413,7163,7445,0.101226183618457,0.101226183618457,-105.0381509,39.7543757,-105.0369668,39.7543695
-2309,1585,1646,0.0852956059582778,0.0852956059582778,-105.0145707,39.6959461,-105.0155663,39.6959857
-17366,3085,3197,0.201028238760753,0.201028238760753,-104.9786762,39.712912,-104.9786527,39.7111042
-16424,3406,3407,0.0260120249027955,0.0260120249027955,-104.9701665,39.6972637,-104.9699417,39.6974212
-487,487,488,0.0915902876023465,0.0915902876023465,-104.9845022,39.7800173,-104.9855724,39.7800624
-2504,2153,2485,0.135805715389887,0.135805715389887,-105.0142616,39.7789608,-105.0158508,39.7789597
-15259,9549,9550,0.0733424963845631,0.0733424963845631,-104.9329305,39.7046107,-104.9336788,39.7049326
-17078,8074,9872,0.138360291064547,0.138360291064547,-104.9615934,39.7607445,-104.9615975,39.7619888
-604,595,596,0.135530584935403,0.135530584935403,-105.0153765,39.7753499,-105.015268,39.7765659
-2561,2534,2535,0.131236307359374,0.131236307359374,-105.0217592,39.7380884,-105.0202276,39.7381648
-11701,1064,1065,0.0735266946881119,0.0735266946881119,-105.0022669,39.7501498,-105.0016675,39.750624
-11702,1065,1066,0.144526540080904,0.144526540080904,-105.0016675,39.750624,-105.000472,39.751543
-2641,1094,1110,0.0327560682713917,0.0327560682713917,-105.0405328,39.7229583,-105.0409158,39.7229588
-12965,1823,1824,0.115786401746133,0.115786401746133,-105.0061735,39.7446567,-105.0068707,39.7455494
-2716,2671,2672,0.137037719250731,0.137037719250731,-104.9524691,39.7544839,-104.9524477,39.7557162
-16268,9866,8748,0.200740333998757,0.200740333998757,-104.9586795,39.6929681,-104.9586768,39.6947734
-2739,2694,2695,0.0520216844496084,0.0520216844496084,-104.9834919,39.7552636,-104.9839243,39.7555928
-18678,2801,2589,0.177457369167133,0.177457369167133,-105.0367403,39.7245365,-105.0367321,39.7229406
-11691,837,867,0.00774513207370433,0.00774513207370433,-105.0012532,39.7536699,-105.0011626,39.7536701
-11692,867,868,0.00951825440201693,0.00951825440201693,-105.0011626,39.7536701,-105.0011145,39.7535929
-2894,2838,2839,0.0194790124967281,0.0194790124967281,-105.0298986,39.7802977,-105.0301265,39.7802941
-16704,9998,9999,0.0072772776659045,0.0072772776659045,-105.0006022,39.7460221,-105.0005573,39.7460777
-16598,5785,8280,0.146209128325821,0.146209128325821,-104.9954256,39.7514052,-104.994215,39.752334
-2965,1143,2908,0.0621246078682317,0.0621246078682317,-104.97335,39.7632488,-104.9733498,39.7638075
-16603,7894,9953,0.113998968091224,0.113998968091224,-104.9883251,39.7515332,-104.9873896,39.7522638
-3043,2974,2975,0.149630303255577,0.149630303255577,-105.0281658,39.7584695,-105.0299157,39.7585034
-18440,2971,10293,0.0852727734364054,0.0852727734364054,-105.0260575,39.7584783,-105.0260789,39.759245
-3066,2997,2998,0.0208518874255557,0.0208518874255557,-104.9971271,39.7400109,-104.9969577,39.7401458
-18441,10293,8299,0.0364176386342536,0.0364176386342536,-105.0260789,39.759245,-105.0260753,39.7595725
-3086,3018,3019,0.14545556926134,0.14545556926134,-104.9780672,39.7547969,-104.9768843,39.7557372
-18443,7498,10290,0.0505394400731725,0.0505394400731725,-105.0416627,39.7607554,-105.0410717,39.7607688
-3112,3044,3045,0.100624292928738,0.100624292928738,-104.95856,39.7594391,-104.9573829,39.7594492
-18471,2985,7703,0.198649870528673,0.198649870528673,-105.039895,39.758491,-105.0398923,39.7567045
-16707,9623,9998,0.0621574034637008,0.0621574034637008,-105.0006156,39.7454632,-105.0006022,39.7460221
-3136,3062,2284,0.0981125078289405,0.0981125078289405,-104.9317072,39.760176,-104.9305594,39.7601749
-19669,10610,9361,0.0491952199145155,0.0491952199145155,-105.0246432,39.7697786,-105.0246491,39.770221
-3158,3082,3083,0.0983700193882712,0.0983700193882712,-104.9815443,39.7129225,-104.9803943,39.7129167
-11703,1066,1158,0.148869854474817,0.148869854474817,-105.000472,39.751543,-104.9992501,39.7524969
-3181,3101,3102,0.0962927982103224,0.0962927982103224,-104.9362596,39.7130732,-104.935134,39.713087
-18133,4095,6040,0.192431028537818,0.192431028537818,-105.0175565,39.7838951,-105.0175773,39.7856256
-18446,10289,7781,0.0503825451517732,0.0503825451517732,-105.0398915,39.7607667,-105.0393022,39.7607575
-3230,3144,3145,0.203548069983679,0.203548069983679,-104.9647846,39.7237695,-104.9648025,39.7256
-18448,9292,9527,0.134072690600401,0.134072690600401,-105.0375481,39.7511898,-105.0375346,39.7499841
-11705,1159,1244,0.147081474347396,0.147081474347396,-104.9980616,39.7534124,-104.9968584,39.7543579
-3281,3193,3194,0.106476946636896,0.106476946636896,-104.9827804,39.7111342,-104.9815359,39.7111143
-16416,3034,3130,0.0869691229324941,0.0869691229324941,-104.9699305,39.7024537,-104.970947,39.7024436
-3302,3210,3211,0.0503243467464606,0.0503243467464606,-104.9645976,39.7110977,-104.9640093,39.7111011
-18899,10379,10380,0.00404144992313864,0.00404144992313864,-105.0125991,39.750475,-105.0126123,39.7504401
-11709,1301,1302,0.0358989065327031,0.0358989065327031,-105.0035821,39.7499878,-105.0032204,39.7501518
-3325,3227,3228,0.131949141660574,0.131949141660574,-105.0299581,39.7718274,-105.0315008,39.7718744
-12952,1330,1361,0.0263074187615997,0.0263074187615997,-105.0020771,39.7434247,-105.0019226,39.7432201
-3400,3297,3298,0.0238019064284447,0.0238019064284447,-104.9269572,39.7038988,-104.9266917,39.7038348
-3489,1140,907,0.140863651036277,0.140863651036277,-104.9343976,39.7632231,-104.934389,39.7644899
-16744,7566,10007,0.0424762897679241,0.0424762897679241,-104.9519988,39.6984347,-104.9516233,39.6981848
-18732,9833,7646,0.178089933314901,0.178089933314901,-105.0331086,39.7293141,-105.0331112,39.7277125
-3516,3387,3388,0.0211650011658898,0.0211650011658898,-105.0351109,39.725318,-105.0349134,39.7254327
-12955,1478,1507,0.126108135430878,0.126108135430878,-105.0010729,39.7418408,-105.0003423,39.7408556
-3561,3424,3425,0.0612760168169184,0.0612760168169184,-105.0346199,39.7651924,-105.0346312,39.7657434
-16837,10019,9847,0.0370069651425935,0.0370069651425935,-104.9700539,39.7032059,-104.9699755,39.7028786
-3583,3438,1421,0.115878563365398,0.115878563365398,-105.0345914,39.7810741,-105.0345828,39.7821162
-12960,1632,1633,0.128348569926215,0.128348569926215,-105.0042744,39.7420124,-105.0035017,39.7410228
-3684,3520,3521,0.0506146313810284,0.0506146313810284,-104.961154,39.6983849,-104.9605624,39.6983858
-18464,10298,9139,0.0193791784570559,0.0193791784570559,-105.0431907,39.7509391,-105.0431263,39.7511062
-3734,1037,3568,0.052776292073227,0.052776292073227,-104.9622266,39.7544367,-104.9616097,39.7544552
-19333,2826,10473,0.01148052310696,0.01148052310696,-104.9718283,39.6983529,-104.971721,39.6984149
-18465,9139,541,0.0794672162259436,0.0794672162259436,-105.0431263,39.7511062,-105.0430648,39.7518193
-3755,3585,3586,0.0186262558199583,0.0186262558199583,-105.0236106,39.7606934,-105.0238257,39.7607202
-17071,4599,3687,0.240616539690475,0.240616539690475,-104.9615991,39.7447832,-104.9615881,39.7469471
-3805,3624,3250,0.195616461429944,0.195616461429944,-104.9804286,39.7057129,-104.9804174,39.7039537
-11577,1766,1595,0.0489656343684566,0.0489656343684566,-105.0334284,39.7553296,-105.0340012,39.7553296
-3825,3641,3642,0.0193156490955763,0.0193156490955763,-104.9590835,39.7152814,-104.9593067,39.715255
-17299,5829,8716,0.20447937601548,0.20447937601548,-104.9622681,39.6911405,-104.9622811,39.6929794
-3847,3658,3639,0.0475522464454704,0.0475522464454704,-104.9536997,39.6990547,-104.953288,39.6987674
-18869,10144,10372,0.0637708443692985,0.0637708443692985,-105.0093573,39.7209238,-105.0086117,39.7209279
-16541,812,3553,0.152482276035164,0.152482276035164,-104.9763308,39.7532506,-104.9763361,39.7546219
-20222,7195,10711,0.0935594253631277,0.0935594253631277,-104.9413129,39.6929321,-104.9413123,39.6937735
-19431,10003,8707,0.100281643377189,0.100281643377189,-104.9862718,39.703372,-104.9850997,39.7033596
-3891,3519,3695,0.200167523328644,0.200167523328644,-104.961729,39.698384,-104.9617464,39.6965839
-16751,6829,10008,0.0961527504424716,0.0961527504424716,-104.9506246,39.6983982,-104.9506165,39.6975335
-3916,3713,3714,0.1010804805974,0.1010804805974,-104.9928366,39.7183943,-104.9940184,39.7183972
-15272,8538,8632,0.0716756500086966,0.0716756500086966,-104.9283761,39.7065112,-104.9291888,39.7063544
-3938,3736,3737,0.112607595972795,0.112607595972795,-105.0028107,39.7384712,-105.0028068,39.7394839
-18125,4097,6042,0.191481087124581,0.191481087124581,-105.0187521,39.7838972,-105.0187387,39.7856192
-19576,10572,7461,0.00811745051204977,0.00811745051204977,-104.9892979,39.707617,-104.9892986,39.707544
-12969,1970,1971,0.103498330022734,0.103498330022734,-105.0018024,39.7442826,-105.0012102,39.7450944
-4039,3819,3820,0.147623529549067,0.147623529549067,-105.0098339,39.7075733,-105.009791,39.7062461
-18745,5190,2608,0.176866790100876,0.176866790100876,-105.0433305,39.7245627,-105.0433279,39.7229721
-4127,3890,3891,0.179468370845182,0.179468370845182,-104.9634822,39.7383772,-104.9634356,39.7399908
-12335,8652,8653,0.0109021010822668,0.0109021010822668,-105.0077772,39.7547483,-105.0076516,39.7547313
-4149,3906,1161,0.136761513456038,0.136761513456038,-104.9634455,39.7619888,-104.9634876,39.7632183
-17950,6559,10229,0.0124761805379247,0.0124761805379247,-104.9869835,39.7241266,-104.9870009,39.7240152
-4173,1891,706,0.0588353275400914,0.0588353275400914,-105.0046254,39.7620612,-105.0041014,39.7624043
-14115,3623,3925,0.0987645160792797,0.0987645160792797,-104.9448677,39.7457412,-104.9455321,39.7450146
-16843,10020,10021,0.00337377443816097,0.00337377443816097,-104.9706252,39.7032657,-104.9706319,39.7032358
-4194,3942,3943,0.176445012103913,0.176445012103913,-105.0001356,39.7384618,-105.0001422,39.736875
-18245,2433,9358,0.201879495148218,0.201879495148218,-105.0375589,39.771281,-105.0375421,39.7730965
-18189,6055,5795,0.200795798534704,0.200795798534704,-105.0293078,39.7856235,-105.0293078,39.7874293
-4450,3345,4152,0.10312101394972,0.10312101394972,-104.957017,39.7209795,-104.9558113,39.720983
-18872,9232,7825,0.160805002055775,0.160805002055775,-104.9889072,39.7018052,-104.9875714,39.7007878
-4529,4204,4205,0.278098742346476,0.278098742346476,-105.0080809,39.7765386,-105.0078446,39.779033
-18399,2541,10285,0.412599954612644,0.412599954612644,-105.0351796,39.7874285,-105.035177,39.7911391
-4637,4281,913,0.111497113872301,0.111497113872301,-104.9797003,39.7709793,-104.9806193,39.771691
-16900,4255,3513,0.200996147699506,0.200996147699506,-104.9658026,39.6965779,-104.9657993,39.6983855
-15919,9746,7414,0.0221971015175522,0.0221971015175522,-105.0421231,39.7165684,-105.0418648,39.7165877
-4682,4322,4323,0.0558862625971893,0.0558862625971893,-105.0350241,39.707661,-105.0350585,39.7071591
-16298,2636,2637,0.0033759355903552,0.0033759355903552,-104.970433,39.6951117,-104.9704693,39.6950998
-18879,6125,1927,0.199518260048308,0.199518260048308,-104.9611403,39.709281,-104.9611322,39.7074867
-4761,1489,145,0.199750566224671,0.199750566224671,-105.0015377,39.694864,-105.0015377,39.6930676
-18696,4055,6400,0.176933507030136,0.176933507030136,-105.0391007,39.7181492,-105.0391033,39.716558
-16300,2637,2160,0.00247295077408309,0.00247295077408309,-104.9704693,39.6950998,-104.9704959,39.6950911
-4832,1268,4428,0.206285087175769,0.206285087175769,-105.0203557,39.7175319,-105.0227675,39.7175319
-18888,7247,1923,0.201674729042946,0.201674729042946,-104.963471,39.7056744,-104.9634658,39.7074881
-4997,4543,4544,0.132688906239847,0.132688906239847,-105.022037,39.7729354,-105.0220369,39.7741287
-16650,9968,9969,0.0122299544992289,0.0122299544992289,-104.9849991,39.7385579,-104.9848573,39.7385435
-13009,2891,2892,0.172319187220424,0.172319187220424,-104.9905111,39.7729211,-104.9912536,39.7714803
-5024,4562,4563,0.200718931282707,0.200718931282707,-105.0216379,39.7856202,-105.0216452,39.7874253
-16315,3005,1362,0.00318470714397005,0.00318470714397005,-104.9710275,39.6970485,-104.9710484,39.6970248
-5188,4685,4686,0.177776490265982,0.177776490265982,-104.9940378,39.7289164,-104.9940692,39.730515
-17297,10086,7736,0.198049290500642,0.198049290500642,-104.9622687,39.6875234,-104.9622681,39.6893045
-20272,10721,10703,0.0411977345042915,0.0411977345042915,-105.0450564,39.7730205,-105.0450568,39.773391
-5368,3223,4808,0.133968729582188,0.133968729582188,-105.0135136,39.7717296,-105.0135073,39.7729344
-18898,10378,10379,0.00446883067059111,0.00446883067059111,-105.0125479,39.7504669,-105.0125991,39.750475
-5393,4828,4829,0.40282604477454,0.40282604477454,-104.9441889,39.692936,-104.9441934,39.6893133
-20273,10703,10725,0.144609051598102,0.144609051598102,-105.0450568,39.773391,-105.0450582,39.7746915
-5414,4842,1486,0.202708226253938,0.202708226253938,-105.0002975,39.6967069,-105.0003404,39.6948842
-5490,458,4898,0.0468723555946229,0.0468723555946229,-104.9412914,39.7350999,-104.9407436,39.7350848
-19112,8424,10118,0.19768851226159,0.19768851226159,-105.0160769,39.7409098,-105.0183374,39.7405364
-5515,1212,4920,0.232222389672051,0.232222389672051,-104.9874175,39.7272691,-104.9894816,39.7286261
-19281,10466,8768,0.124416605605605,0.124416605605605,-104.988856,39.7399993,-104.9903111,39.740001
-5542,2537,4941,0.438197641658083,0.438197641658083,-104.994984,39.7872452,-104.994975,39.791186
-20340,10739,10748,0.00884971981393432,0.00884971981393432,-105.0234882,39.7589777,-105.0235917,39.7589758
-19231,10455,10456,0.1184623603546,0.1184623603546,-104.9915438,39.7409769,-104.9923896,39.7401331
-5626,3284,1058,0.0983991410952824,0.0983991410952824,-104.9523742,39.7038339,-104.9523656,39.702949
-18347,7686,2429,0.200029751476084,0.200029751476084,-105.0352172,39.7695205,-105.0352091,39.7713194
-17080,1162,882,0.139677295386473,0.139677295386473,-104.9615772,39.7632401,-104.9615915,39.7644962
-6004,5259,5260,0.066486526131314,0.066486526131314,-104.9597331,39.7681261,-104.9589552,39.7681242
-14136,9281,509,0.032133360210872,0.032133360210872,-104.9517626,39.7476934,-104.9514881,39.747496
-17116,4052,3775,0.00847774353709404,0.00847774353709404,-104.9579299,39.7478129,-104.957947,39.7477378
-6616,5699,5700,0.00800603928165774,0.00800603928165774,-105.0357639,39.7621288,-105.035764,39.7622008
-19812,7122,5371,0.176755455393693,0.176755455393693,-105.0021749,39.735285,-105.0021749,39.7336954
-6777,5820,5821,0.0499181980722273,0.0499181980722273,-104.9821591,39.6911678,-104.9815757,39.6911678
-4400,4114,4115,0.202509931844666,0.202509931844666,-104.9513332,39.7819179,-104.9513234,39.7837391
-11451,8258,8261,0.200629988067775,0.200629988067775,-104.9988487,39.78249,-104.9966971,39.7817678
-19818,10647,5606,0.0519771701713562,0.0519771701713562,-105.0021963,39.7300097,-105.0015885,39.7300077
-6974,2119,5953,0.0979282440578051,0.0979282440578051,-104.9268735,39.7310598,-104.9257284,39.7310507
-4402,4117,2874,0.134125988252719,0.134125988252719,-104.9508084,39.7837325,-104.9508183,39.7849387
-4403,2874,4118,0.140174877049639,0.140174877049639,-104.9508183,39.7849387,-104.9508084,39.7861993
-17149,46,4780,0.204228808601968,0.204228808601968,-104.9751601,39.7002153,-104.9751815,39.7020519
-7674,1498,187,0.203419998803368,0.203419998803368,-105.0437531,39.6949621,-105.0437531,39.6931327
-7719,6393,6394,0.135380647167761,0.135380647167761,-105.0252309,39.747573,-105.0268144,39.7475701
-20324,10732,10743,0.016217938211146,0.016217938211146,-105.0237565,39.7589777,-105.0236223,39.7590808
-7749,6408,6409,0.240033624288878,0.240033624288878,-104.9634692,39.7854929,-104.9640263,39.7876087
-20330,10744,10736,0.0345659354386547,0.0345659354386547,-105.0235881,39.7590797,-105.0233746,39.7593437
-7835,4630,1259,0.131787660470127,0.131787660470127,-105.0189411,39.7753479,-105.0204832,39.7753471
-5519,4922,2815,0.0131824278657025,0.0131824278657025,-104.9919185,39.7316877,-104.9919925,39.7317917
-7914,3652,89,0.238216692287668,0.238216692287668,-104.9565993,39.7020271,-104.9580983,39.7002217
-17155,3202,3091,0.199774901839453,0.199774901839453,-104.9751601,39.711091,-104.9751708,39.7128876
-7937,6530,6531,0.246221323543984,0.246221323543984,-104.9709294,39.6879413,-104.9734286,39.6890388
-20342,2965,10747,0.0130500853290149,0.0130500853290149,-105.0235213,39.7584714,-105.0235111,39.7585885
-7957,3453,6015,0.103911955569673,0.103911955569673,-104.9461741,39.7241209,-104.9449591,39.7241168
-17306,8715,5827,0.20364289358169,0.20364289358169,-104.9634793,39.692979,-104.963474,39.6911476
-7981,6550,6526,0.0499792827976588,0.0499792827976588,-104.9775557,39.7240716,-104.9769714,39.7240796
-18128,10269,10270,0.123006178444702,0.123006178444702,-105.0151755,39.7886103,-105.0151844,39.7897165
-8007,6565,6566,0.0461778743400118,0.0461778743400118,-104.9793644,39.7557994,-104.9797454,39.7560938
-12262,8500,8621,0.00391508697358849,0.00391508697358849,-105.0069837,39.7565886,-105.0070186,39.7566114
-20346,10731,10745,0.0882403942542692,0.0882403942542692,-105.0247591,39.7586373,-105.0237282,39.7585962
-8080,6611,6612,0.10285099566632,0.10285099566632,-104.9291809,39.7364935,-104.9303837,39.7364879
-20503,10831,10061,0.00544027190297384,0.00544027190297384,-105.0193747,39.7583443,-105.0193111,39.7583425
-17159,5011,5064,0.204989668883762,0.204989668883762,-104.9728223,39.6911338,-104.9728324,39.6929773
-14700,4773,5065,0.177184173799166,0.177184173799166,-104.9746628,39.7224758,-104.9746455,39.7240692
-8102,6628,6630,0.0733305516170216,0.0733305516170216,-104.9775188,39.6919873,-104.9769745,39.6914779
-14712,935,5453,0.176927806170623,0.176927806170623,-104.9746877,39.7320425,-104.9746713,39.7304514
-8148,6658,1326,0.126702346827637,0.126702346827637,-105.0443368,39.7144948,-105.0442903,39.7133559
-14707,5162,5223,0.123984475685155,0.123984475685155,-104.9746897,39.7395432,-104.9747109,39.7384283
-8332,6761,6762,0.0544299595372282,0.0544299595372282,-105.0276173,39.7693294,-105.0276181,39.7698189
-17167,48,5241,0.405295346029575,0.405295346029575,-104.9740013,39.7002102,-104.9740116,39.7038551
-8384,6791,4603,0.174075741649446,0.174075741649446,-104.9684196,39.7432459,-104.9684176,39.7448114
-20516,6731,10843,0.0163123315737135,0.0163123315737135,-105.0159724,39.7589742,-105.015972,39.7591209
-17171,5280,3092,0.401948502237413,0.401948502237413,-104.9739693,39.7092817,-104.9739802,39.7128965
-8434,6821,1593,0.0969711334947841,0.0969711334947841,-105.0121846,39.7039499,-105.0133176,39.7039764
-14711,2220,935,0.183060496140458,0.183060496140458,-104.9746915,39.7336888,-104.9746877,39.7320425
-8536,6880,1128,0.0335501177019022,0.0335501177019022,-105.0400799,39.7657742,-105.0404722,39.7657639
-19635,10525,10595,0.00694156278564008,0.00694156278564008,-104.9883652,39.7073679,-104.9882841,39.7073658
-18504,9353,6386,0.133800859600802,0.133800859600802,-105.0363784,39.7487709,-105.0363788,39.7475676
-8556,6891,6418,0.133199850282798,0.133199850282798,-105.0158561,39.7656402,-105.0174145,39.7656433
-8557,6418,4625,0.132396793169127,0.132396793169127,-105.0174145,39.7656433,-105.0189635,39.7656391
-17175,5327,5390,0.196700288812187,0.196700288812187,-104.9693125,39.6893294,-104.9692808,39.6910982
-18507,8379,10301,0.115242670596916,0.115242670596916,-105.0410701,39.7476972,-105.0410673,39.7487336
-8578,6280,6899,0.103595480205117,0.103595480205117,-104.9609549,39.7692782,-104.9597428,39.769281
-4404,4118,4119,0.131974592337134,0.131974592337134,-104.9508084,39.7861993,-104.950835,39.787386
-18510,10301,9529,0.136169474903607,0.136169474903607,-105.0410673,39.7487336,-105.0410698,39.7499582
-4406,4120,4121,0.394524879292727,0.394524879292727,-104.951135,39.787386,-104.9510929,39.7909339
-19640,10596,10598,0.0045286617175965,0.0045286617175965,-104.9881372,39.7071852,-104.9881774,39.7071587
-8728,3385,6959,0.0627894298641218,0.0627894298641218,-105.0345837,39.7451514,-105.0353181,39.7451528
-18496,6384,9201,0.134997571408585,0.134997571408585,-105.0351851,39.7475652,-105.0352011,39.7487792
-18514,10302,5543,0.103400383164669,0.103400383164669,-105.0410619,39.7511711,-105.0410644,39.752101
-8779,6999,7000,0.178967474513147,0.178967474513147,-104.9318001,39.7894487,-104.931649,39.791054
-18515,5543,2412,0.101763704229338,0.101763704229338,-105.0410644,39.752101,-105.041094,39.7530159
-8803,5141,2236,0.0248346840292332,0.0248346840292332,-104.931599,39.732778,-104.9314966,39.732987
-19831,10650,10651,0.138361801446117,0.138361801446117,-105.0422095,39.7366329,-105.0422009,39.7353886
-8887,3285,1059,0.0976623415502941,0.0976623415502941,-104.9500244,39.7038338,-104.9500415,39.7029556
-17182,5607,5608,0.205054564403698,0.205054564403698,-104.9716302,39.692962,-104.9716303,39.6911179
-8909,3021,7068,0.0519035642154067,0.0519035642154067,-104.974418,39.7576075,-104.9748473,39.7579376
-4407,3574,4122,0.137780007377075,0.137780007377075,-104.951246,39.7544757,-104.9511924,39.7557141
-14713,5453,5664,0.115365301333729,0.115365301333729,-104.9746713,39.7304514,-104.9752576,39.729517
-9019,3944,7121,0.0616182757003265,0.0616182757003265,-105.0001574,39.7352867,-105.000878,39.7352858
-18655,7655,10305,0.198541985736116,0.198541985736116,-105.0421691,39.7282666,-105.0421244,39.7300518
-9043,7135,4276,0.121250513345306,0.121250513345306,-104.9754213,39.7729633,-104.9744288,39.7737425
-18147,10258,6033,0.201162874084808,0.201162874084808,-105.0117945,39.7874239,-105.0117918,39.7856148
-9226,7232,7233,0.0701236279353194,0.0701236279353194,-104.9883759,39.7057847,-104.9875581,39.7057416
-18152,10264,10277,0.407566866193853,0.407566866193853,-105.0210534,39.7874313,-105.021032,39.7910966
-9304,6121,1920,0.204110733126185,0.204110733126185,-104.9651409,39.7093108,-104.9651495,39.7074752
-18153,4104,6047,0.112519690969595,0.112519690969595,-105.0233734,39.7846136,-105.0233803,39.7856255
-11446,385,387,0.611916175000286,0.611916175000286,-105.009982,39.7834091,-105.0028212,39.783461
-17478,5886,323,0.0446797516163588,0.0446797516163588,-105.015177,39.7517962,-105.0156986,39.7518215
-9352,6077,7309,0.0481617931874556,0.0481617931874556,-104.9628485,39.7020562,-104.9622856,39.7020498
-20395,10775,10776,0.00739420688081638,0.00739420688081638,-105.0243213,39.7599965,-105.0242462,39.7599635
-18154,6047,10135,0.201285870335585,0.201285870335585,-105.0233803,39.7856255,-105.023387,39.7874357
-20429,10789,10790,0.0478990795077935,0.0478990795077935,-105.0223762,39.7591046,-105.0228403,39.759346
-9375,7320,1193,0.16722266002845,0.16722266002845,-104.955535,39.7256145,-104.9555538,39.7271183
-18274,6666,6667,0.19713796716552,0.19713796716552,-105.0398227,39.780198,-105.0398176,39.7819709
-9396,4346,6344,0.137277828740194,0.137277828740194,-104.9549522,39.7569718,-104.9549352,39.7582063
-7038,2477,5911,0.20568880939919,0.20568880939919,-104.9258057,39.7474177,-104.9257802,39.7492674
-9526,7390,6591,0.199950723674749,0.199950723674749,-105.0332849,39.7311446,-105.0332843,39.7329428
-9527,6591,7113,0.204992725577621,0.204992725577621,-105.0332843,39.7329428,-105.033238,39.734786
-4408,4122,4123,0.139283771950412,0.139283771950412,-104.9511924,39.7557141,-104.9512139,39.7569666
-20440,8230,10798,0.00724995456680097,0.00724995456680097,-105.0218852,39.7620114,-105.0218855,39.7619462
-9657,7441,7443,0.137227628583058,0.137227628583058,-105.0369584,39.7487546,-105.036967,39.7499887
-17487,4652,4653,0.0539741907357585,0.0539741907357585,-105.018965,39.7469089,-105.0189634,39.7473943
-9708,7472,7473,0.0204539718039878,0.0204539718039878,-104.9890503,39.7084625,-104.9892894,39.708464
-18246,9358,9377,0.403042223701425,0.403042223701425,-105.0375421,39.7730965,-105.0374998,39.776721
-9812,7530,3064,0.202502418308833,0.202502418308833,-104.9282076,39.7583604,-104.9282248,39.7601815
-17689,6172,6173,0.109301053367223,0.109301053367223,-104.9856415,39.7795956,-104.9843627,39.779576
-9839,7545,7546,0.200378656030458,0.200378656030458,-105.0451654,39.7312441,-105.0451482,39.7330461
-17691,6191,6192,0.114641917935369,0.114641917935369,-104.9832163,39.7795774,-104.9818752,39.7795506
-9862,7563,7564,0.144864127295822,0.144864127295822,-104.9922506,39.7545528,-104.9910557,39.7554766
-18248,8108,10283,0.203688042743378,0.203688042743378,-105.0375106,39.7783767,-105.0375025,39.7802085
-9912,7587,7588,0.0177693522294632,0.0177693522294632,-104.9356138,39.7618347,-104.9356152,39.7619945
-12245,8614,8615,0.00283454394049719,0.00283454394049719,-104.9995987,39.7508719,-104.9995731,39.7508881
-20023,7898,8856,0.145457290364043,0.145457290364043,-104.9900722,39.7528603,-104.988892,39.7538026
-20462,10063,10815,0.0787418608501839,0.0787418608501839,-105.0192332,39.7576336,-105.0192433,39.7583417
-10159,5268,6906,0.123203894056526,0.123203894056526,-104.9475125,39.7680963,-104.947479,39.769204
-20464,10816,10812,0.0195704583026571,0.0195704583026571,-105.0185279,39.7585307,-105.018527,39.7587067
-11511,8294,8295,0.0520431495126935,0.0520431495126935,-104.9942907,39.754326,-104.9947185,39.754659
-18214,6382,6383,0.202997553277811,0.202997553277811,-105.042255,39.7621184,-105.0422527,39.763944
-10231,6520,7739,0.0500835268559568,0.0500835268559568,-104.9581278,39.6893365,-104.9575425,39.6893331
-18257,3984,6760,0.19949668413334,0.19949668413334,-105.0299405,39.7688003,-105.0276064,39.7688141
-10280,7447,7757,0.470575008371913,0.470575008371913,-105.0151992,39.7160167,-105.0151648,39.7202486
-11783,8122,8036,0.0779413781888185,0.0779413781888185,-104.9781363,39.7540082,-104.9787817,39.7535131
-14738,6526,6538,0.170206219459847,0.170206219459847,-104.9769714,39.7240796,-104.976974,39.7256103
-10497,4733,6800,0.110360790137427,0.110360790137427,-104.9696568,39.7519733,-104.968366,39.7519878
-20473,10823,10777,0.00660874071248581,0.00660874071248581,-105.0245064,39.7608531,-105.0244301,39.7608435
-10520,7847,7425,0.0489570822105033,0.0489570822105033,-105.036368,39.7603278,-105.0369407,39.7603225
-18522,4015,10297,0.0710067813209419,0.0710067813209419,-105.0299362,39.7464017,-105.03052,39.7468559
-10541,7855,7856,0.177133627375528,0.177133627375528,-104.9928366,39.7193449,-104.9928343,39.7209379
-10542,7856,2614,0.178768427477815,0.178768427477815,-104.9928343,39.7209379,-104.9928302,39.7225456
-18524,1880,9146,0.0581549975210073,0.0581549975210073,-105.0398844,39.7594402,-105.0398835,39.7589172
-10589,7869,6640,0.0423030177562977,0.0423030177562977,-104.9980684,39.719352,-104.998563,39.7193532
-18270,5525,6463,0.15576453739372,0.15576453739372,-105.0398709,39.7738651,-105.0398602,39.7752659
-10616,7882,4885,0.155749664880603,0.155749664880603,-104.9563208,39.7337098,-104.9562778,39.7351101
-18528,9272,9525,0.133068770502091,0.133068770502091,-105.0340317,39.7511922,-105.0340236,39.7499955
-10639,7897,7898,0.052238135352395,0.052238135352395,-104.9896341,39.7525328,-104.9900722,39.7528603
-10663,7913,7914,0.0662287183378057,0.0662287183378057,-105.0275993,39.7572752,-105.027595,39.7578708
-18276,1427,6667,0.0124761175920816,0.0124761175920816,-105.0398172,39.7820831,-105.0398176,39.7819709
-14745,4866,6690,0.193273433165028,0.193273433165028,-104.9770059,39.7351417,-104.977023,39.7368798
-12385,1624,3930,0.0974730336125312,0.0974730336125312,-104.9994552,39.7668568,-105.0005956,39.7668504
-18277,6667,6720,0.144754021853131,0.144754021853131,-105.0398176,39.7819709,-105.0398219,39.7832727
-10816,7993,6492,0.0854037034050773,0.0854037034050773,-104.9747549,39.746928,-104.9747749,39.7461601
-14747,6732,6733,0.0789150394398201,0.0789150394398201,-104.9782075,39.7375895,-104.9782075,39.7368798
-12453,3191,6107,0.202925463206431,0.202925463206431,-104.9851665,39.7111408,-104.9851845,39.7093159
-16202,5822,7727,0.19552660887524,0.19552660887524,-104.9810031,39.6911678,-104.9810119,39.6894094
-18539,5559,10311,0.589298128069539,0.589298128069539,-105.0440122,39.7616564,-105.0509064,39.7616379
-10890,3025,8025,0.123630898552104,0.123630898552104,-104.9488309,39.7600818,-104.9487313,39.761191
-15899,9255,7490,0.0311439652684609,0.0311439652684609,-105.0419691,39.7342088,-105.0416893,39.7340295
-18550,4298,9428,0.104368579037722,0.104368579037722,-105.04225,39.7539306,-105.0422446,39.7548692
-11283,8190,8201,0.0778576783996018,0.0778576783996018,-104.937302,39.696603,-104.936392,39.696601
-4409,4123,4124,0.135738728632571,0.135738728632571,-104.9512139,39.7569666,-104.9512246,39.7581873
-13171,7691,8995,0.0242708657605628,0.0242708657605628,-104.9475747,39.784754,-104.9472908,39.7847471
-11527,809,8301,0.0665080068102908,0.0665080068102908,-105.026046,39.7554277,-105.0260395,39.7548296
-15908,9084,9085,0.0343875506043555,0.0343875506043555,-105.0294148,39.7240512,-105.029624,39.7237871
-14757,2212,4862,0.162593070375603,0.162593070375603,-104.9792376,39.7337065,-104.9792634,39.7351686
-11742,8382,8383,0.00390317600089655,0.00390317600089655,-104.972113,39.7494781,-104.9721125,39.7495132
-18302,5737,2440,0.171112285574699,0.171112285574699,-105.0410242,39.7724702,-105.0410403,39.7709314
-11766,8404,8405,0.0591205771532174,0.0591205771532174,-104.9894933,39.7580303,-104.9899962,39.7583953
-11998,5505,7079,0.147126356992669,0.147126356992669,-104.9812949,39.7610237,-104.9800778,39.7619593
-12060,332,268,0.0944572536860071,0.0944572536860071,-104.9554298,39.7451641,-104.9564977,39.7449464
-4411,3048,4125,0.136438064344983,0.136438064344983,-104.9511947,39.7594645,-104.9511863,39.7606915
-20391,10766,10774,0.00648510043864555,0.00648510043864555,-105.0243045,39.7606892,-105.0243795,39.760698
-4412,4125,4126,0.00355827872013668,0.00355827872013668,-104.9511863,39.7606915,-104.9511861,39.7607235
-19845,9516,10657,0.207937764412144,0.207937764412144,-105.0387468,39.7403366,-105.0387332,39.7384666
-16200,1790,7209,0.198939694041251,0.198939694041251,-104.9810045,39.694799,-104.9809977,39.6930099
-20399,10763,3591,0.00757376863172981,0.00757376863172981,-105.0250727,39.760924,-105.025071,39.7608559
-12520,8729,1189,0.0214820993457698,0.0214820993457698,-104.9601841,39.7273144,-104.9601763,39.7271213
-20644,10877,4517,0.0511435578342218,0.0511435578342218,-105.0134384,39.7627649,-105.0133602,39.7632209
-12620,8775,4920,0.0124622300083447,0.0124622300083447,-104.9895915,39.7285525,-104.9894816,39.7286261
-20646,10035,10880,0.0235473019855852,0.0235473019855852,-105.0143641,39.767541,-105.0146396,39.7675397
-12646,5921,920,0.178961176893159,0.178961176893159,-104.9835955,39.730436,-104.9835814,39.7320454
-12691,8806,8807,0.0113998193117656,0.0113998193117656,-104.953405,39.7180338,-104.9534077,39.7179313
-12822,8261,493,0.226877195561116,0.226877195561116,-104.9966971,39.7817678,-104.994193,39.7810897
-13034,8927,585,0.0555278029535648,0.0555278029535648,-104.9887446,39.7818256,-104.9889526,39.7822987
-14668,6327,4166,0.169217141640748,0.169217141640748,-104.9729137,39.7186188,-104.972908,39.7201406
-14856,9434,8907,0.112945329265115,0.112945329265115,-105.0089007,39.7547457,-105.0079847,39.7554777
-20835,10948,10929,0.0711141044607233,0.0711141044607233,-105.0291285,39.7622441,-105.0299581,39.7621958
-13572,2184,9130,0.046228028674551,0.046228028674551,-105.0163101,39.7301817,-105.0161204,39.730571
-4413,4126,4127,0.123682116907034,0.123682116907034,-104.9511861,39.7607235,-104.9511861,39.7618358
-4414,4127,4128,0.0151340374611755,0.0151340374611755,-104.9511861,39.7618358,-104.9511874,39.7619719
-14780,5922,921,0.178257163080484,0.178257163080484,-104.9828734,39.7304382,-104.9828787,39.7320413
-13824,9203,7891,0.0449920400202888,0.0449920400202888,-104.9873873,39.7502468,-104.9870145,39.7505324
-13970,9249,9250,0.0321739674064664,0.0321739674064664,-105.0143117,39.7288521,-105.0144838,39.7291094
-20559,2957,10784,0.0120134443189883,0.0120134443189883,-105.0187431,39.7584203,-105.0187393,39.7585283
-14029,9262,6653,0.100609617198747,0.100609617198747,-105.0437097,39.6967153,-105.0448856,39.6967219
-15915,9746,9747,0.0832769023011374,0.0832769023011374,-105.0421231,39.7165684,-105.0417682,39.7172658
-11415,7985,8000,0.0154063290418794,0.0154063290418794,-105.025085,39.7846442,-105.0252653,39.7846442
-14233,8687,6694,0.0247755996269239,0.0247755996269239,-104.9497898,39.7256083,-104.9495001,39.7256083
-20569,10787,10858,0.0193290169195346,0.0193290169195346,-105.0188651,39.7596431,-105.0190584,39.7597333
-14464,6149,3994,0.0989127437299345,0.0989127437299345,-105.0287889,39.7729931,-105.029945,39.7730349
-14635,9387,9388,0.0403809617749613,0.0403809617749613,-105.0032834,39.7589279,-105.0032916,39.759291
-11212,391,392,0.10291889633356,0.10291889633356,-104.931634,39.702187,-104.932837,39.702182
-14604,9397,9398,0.123826706008273,0.123826706008273,-105.0252842,39.7632064,-105.0252853,39.7620928
-14637,9406,2243,0.00956376056529555,0.00956376056529555,-105.0052833,39.7574891,-105.0051802,39.7575225
-15410,9588,9589,0.0190893984820006,0.0190893984820006,-105.0043197,39.7412126,-105.0041373,39.7413116
-15440,9601,1507,0.00768187987530518,0.00768187987530518,-105.0002535,39.7408661,-105.0003423,39.7408556
-16383,9771,9880,0.0381827012246672,0.0381827012246672,-104.9717383,39.7032546,-104.9718617,39.7035846
-16620,9937,9938,0.0704692374785171,0.0704692374785171,-104.9859915,39.738562,-104.9856294,39.7391313
-11802,8392,8415,0.148179257170155,0.148179257170155,-104.9829471,39.7529945,-104.9841796,39.7520575
-16809,4996,728,0.102190274976312,0.102190274976312,-104.9523584,39.6965806,-104.951164,39.6965829
-11640,8346,4530,0.131615785848543,0.131615785848543,-105.0236119,39.7542144,-105.0220723,39.7542199
-16853,6519,9854,0.0497714413737895,0.0497714413737895,-104.9581188,39.6929673,-104.9575371,39.6929673
-4415,4128,1171,0.138086753058786,0.138086753058786,-104.9511874,39.7619719,-104.9511738,39.7632137
-17269,3518,82,0.205066129886621,0.205066129886621,-104.9623127,39.6983876,-104.9623177,39.7002318
-11951,8499,8500,0.0607548345173342,0.0607548345173342,-105.0064874,39.7561975,-105.0069837,39.7565886
-17324,6799,7351,0.103019517606604,0.103019517606604,-104.968374,39.7507196,-104.967169,39.7507119
-11991,4455,5503,0.144667643977852,0.144667643977852,-104.9816151,39.759425,-104.9804313,39.7603548
-17388,5920,3810,0.153093198888871,0.153093198888871,-104.9842358,39.7304466,-104.9842348,39.7290698
-17389,3810,10095,0.199017480070308,0.199017480070308,-104.9842348,39.7290698,-104.9842414,39.72728
-17407,6122,1921,0.202694690919031,0.202694690919031,-104.9645867,39.7093011,-104.9646085,39.7074783
-17408,1921,7246,0.200797963530598,0.200797963530598,-104.9646085,39.7074783,-104.9645976,39.7056725
-12044,8523,8524,0.0621486337289915,0.0621486337289915,-105.0057364,39.7517137,-105.0053655,39.751233
-17448,3247,10109,0.0544983800214201,0.0544983800214201,-104.9827863,39.7038745,-104.9827914,39.7033844
-4416,1171,891,0.137903948024362,0.137903948024362,-104.9511738,39.7632137,-104.9511738,39.7644539
-12113,8552,672,0.00266902064060136,0.00266902064060136,-104.9647683,39.7415931,-104.9647688,39.7416171
-17549,10132,10133,2.25328864155446,2.25328864155446,-104.9893554,39.7854595,-104.9832781,39.8051785
-17666,8928,10162,0.0972564668123919,0.0972564668123919,-104.9872354,39.7794049,-104.9861062,39.7795141
-12288,8528,8526,0.152174217990106,0.152174217990106,-105.0061613,39.7515322,-105.0049596,39.7505226
-17729,7332,2080,0.104548139781884,0.104548139781884,-104.9548798,39.7607265,-104.9536567,39.7607265
-12329,8641,8652,0.00987690479251785,0.00987690479251785,-105.0078924,39.7547551,-105.0077772,39.7547483
-12331,8653,8654,0.00928748638267964,0.00928748638267964,-105.0076516,39.7547313,-105.0075431,39.754727
-17751,8575,6706,0.145927899456713,0.145927899456713,-104.9927205,39.7474627,-104.99393,39.7465367
-12936,8688,8689,0.0364958929125483,0.0364958929125483,-105.0030556,39.7453386,-105.0031672,39.7450218
-17774,7679,5984,0.100495969018847,0.100495969018847,-104.9246153,39.7801377,-104.9257912,39.7801245
-17787,9214,536,0.151808926625465,0.151808926625465,-105.0140859,39.7556275,-105.0151149,39.7545148
-17822,10188,10186,0.041401555151972,0.041401555151972,-105.000993,39.7638033,-105.0007327,39.7634893
-17852,10195,5678,0.0176253194989635,0.0176253194989635,-104.9980666,39.7674272,-104.9982133,39.7675386
-17170,1912,5280,0.200459610115248,0.200459610115248,-104.9739477,39.707479,-104.9739693,39.7092817
-4417,891,4129,0.140986849802137,0.140986849802137,-104.9511738,39.7644539,-104.9511842,39.7657218
-12947,1304,1303,0.066448544071591,0.066448544071591,-105.0024118,39.7438801,-105.0017368,39.7441763
-18995,3958,5601,0.119729821294068,0.119729821294068,-105.0002015,39.7209321,-105.0016014,39.7209311
-18382,8919,8920,0.0492932118239397,0.0492932118239397,-105.0258833,39.771558,-105.0258859,39.7720013
-19080,4746,4159,0.17797879706873,0.17797879706873,-104.9407779,39.7225362,-104.9407748,39.7209356
-13065,8947,8948,0.014693528299895,0.014693528299895,-104.9948109,39.7672181,-104.9949826,39.7672115
-19135,3168,8470,0.0222426676149063,0.0222426676149063,-105.0012883,39.7488943,-105.0014824,39.7487611
-20824,9337,9400,0.0122401419030242,0.0122401419030242,-105.0251662,39.7600869,-105.0252875,39.7601454
-19172,6804,7956,0.0915174498096421,0.0915174498096421,-104.9688098,39.7807867,-104.9677476,39.7808918
-19618,10588,10494,0.00731369728944242,0.00731369728944242,-104.9910599,39.7104919,-104.9911454,39.7104919
-19331,9893,10473,0.0200896227314349,0.0200896227314349,-104.9715317,39.698308,-104.971721,39.6984149
-15874,8889,8940,0.103516223202584,0.103516223202584,-105.0393045,39.7347125,-105.0405047,39.7348341
-19358,9949,10479,0.0590930811213136,0.0590930811213136,-105.0003016,39.7477141,-104.9998192,39.7473335
-19413,7239,3251,0.195270640148282,0.195270640148282,-104.9798548,39.7057161,-104.9798629,39.70396
-19962,10674,10685,0.14613727594919,0.14613727594919,-105.0410696,39.7366244,-105.0410556,39.7353102
-18473,9005,9006,0.01365486811001,0.01365486811001,-105.0399025,39.7549798,-105.0399032,39.754857
-20041,9172,140,0.204724385208342,0.204724385208342,-104.9923108,39.6911873,-104.9924893,39.6930233
-18917,10396,10397,0.0952180129620757,0.0952180129620757,-105.0109587,39.7503762,-105.011825,39.749838
-20063,2998,4930,0.100928455718765,0.100928455718765,-104.9969577,39.7401458,-104.9981378,39.7401663
-20587,10865,10840,0.00838601883021894,0.00838601883021894,-105.024575,39.7609374,-105.0245771,39.760862
-4418,4129,2776,0.133433939347385,0.133433939347385,-104.9511842,39.7657218,-104.9511832,39.7669218
-14836,7396,7377,0.030817448743492,0.030817448743492,-105.0330742,39.7548479,-105.0334347,39.7548479
-14837,7377,3410,0.100816825455254,0.100816825455254,-105.0334347,39.7548479,-105.034614,39.754856
-15447,9607,9608,0.0162401698909022,0.0162401698909022,-104.9997573,39.7426934,-104.9999385,39.7426496
-309,317,318,0.0119735018205437,0.0119735018205437,-105.0345742,39.7830397,-105.0344342,39.7830352
-13531,5648,3387,0.0436500601039895,0.0436500601039895,-105.0355748,39.7254817,-105.0351109,39.725318
-14946,8215,8212,0.101284367879663,0.101284367879663,-104.9303979,39.7382593,-104.9292134,39.7382659
-13555,408,9127,0.613912488305853,0.613912488305853,-105.0014039,39.7148758,-104.9983536,39.7098782
-14981,9463,7091,0.107883940343108,0.107883940343108,-104.9861093,39.7432784,-104.9848475,39.7432813
-14982,7091,8789,0.108748219147477,0.108748219147477,-104.9848475,39.7432813,-104.9835757,39.7432682
-13650,9158,9159,0.0150152429008076,0.0150152429008076,-104.9960034,39.7030693,-104.9961123,39.7031752
-15063,8874,7430,0.0504536590179092,0.0504536590179092,-104.9810766,39.7368811,-104.9816663,39.7368655
-17072,3687,8133,0.141298637785039,0.141298637785039,-104.9615881,39.7469471,-104.9615993,39.7482178
-18493,9170,5545,0.102571946583037,0.102571946583037,-105.04225,39.7511845,-105.0422627,39.7521069
-15171,9511,9512,0.0502858420296349,0.0502858420296349,-105.0358145,39.7403194,-105.0364026,39.7403227
-15174,9514,9515,0.0498070291463972,0.0498070291463972,-105.0375666,39.7403293,-105.0381491,39.7403326
-18566,10322,10323,0.186113882409967,0.186113882409967,-105.0341731,39.7804672,-105.0341543,39.7821409
-16100,9824,9817,0.0308009946802063,0.0308009946802063,-104.9497096,39.7808621,-104.9497096,39.7811391
-16101,9817,8245,0.0866075022072335,0.0866075022072335,-104.9497096,39.7811391,-104.9495723,39.7819108
-15444,8607,9604,0.0180426861021608,0.0180426861021608,-105.0006617,39.7414743,-105.0004869,39.7415652
-16161,3728,722,0.106535324504203,0.106535324504203,-105.0028395,39.7289078,-105.004084,39.7289511
-16174,9840,7201,0.0108095014749508,0.0108095014749508,-104.9868416,39.693104,-104.9868436,39.6930068
-16239,9856,7742,0.4032601166124,0.4032601166124,-104.9541161,39.6857099,-104.954108,39.6893365
-16240,7742,5837,0.199863858168715,0.199863858168715,-104.954108,39.6893365,-104.9540973,39.6911339
-15881,8762,9238,0.022425928034548,0.022425928034548,-105.0451798,39.7355292,-105.0454319,39.7354736
-16327,3906,3134,0.109247651866168,0.109247651866168,-104.9634455,39.7619888,-104.9647236,39.7619908
-16328,3134,5403,0.105230091275359,0.105230091275359,-104.9647236,39.7619908,-104.9659547,39.7619898
-17203,10075,10076,0.206234100938924,0.206234100938924,-104.9688448,39.6965282,-104.9687509,39.6946749
-17253,5918,917,0.179236073493399,0.179236073493399,-104.9861275,39.730436,-104.9861344,39.7320479
-18223,1695,6884,0.201956855870188,0.201956855870188,-105.0434467,39.7675662,-105.0434307,39.76575
-15286,3187,9268,0.0103389762120735,0.0103389762120735,-104.946376,39.7114762,-104.946452,39.7115485
-19421,34,3533,0.2073108703911,0.2073108703911,-104.982156,39.7002709,-104.982132,39.6984066
-19436,6852,10490,0.151686039209942,0.151686039209942,-104.9881056,39.7102414,-104.9897131,39.7108173
-19663,10609,9366,0.0532084205099813,0.0532084205099813,-105.0211243,39.7697539,-105.0211194,39.7692754
-19847,10658,7133,0.20071321213787,0.20071321213787,-105.0387333,39.7365995,-105.0387146,39.7347945
-19953,7857,10414,0.0579007631193554,0.0579007631193554,-104.992831,39.7230021,-104.992154,39.7230042
-19293,10471,8765,0.117981892754207,0.117981892754207,-104.9888451,39.7389629,-104.9902249,39.7389566
-19987,9727,10653,0.0514452608394938,0.0514452608394938,-105.039304,39.7384682,-105.0399056,39.7384617
-19988,10653,1103,0.0505009558673589,0.0505009558673589,-105.0399056,39.7384617,-105.0404962,39.738465
-15432,9598,7965,0.00918826645895189,0.00918826645895189,-104.9998109,39.7420623,-104.999898,39.7420139
-15465,9615,9616,0.0488173542586425,0.0488173542586425,-105.0015275,39.7433678,-105.0011333,39.7436854
-15505,2286,4494,0.207036482148074,0.207036482148074,-105.0028141,39.740161,-105.0052335,39.7402363
-18430,7784,10291,0.0493825781706533,0.0493825781706533,-105.039294,39.7625616,-105.0387163,39.7625667
-15468,7963,9610,0.0129310975383002,0.0129310975383002,-105.0005879,39.7441349,-105.000479,39.7442156
-15643,9669,8703,0.0154036792176203,0.0154036792176203,-104.9406749,39.7582947,-104.9404947,39.7582947
-15293,9561,9563,0.0354006218838869,0.0354006218838869,-104.941269,39.7069549,-104.9409901,39.7071901
-15662,5995,7675,0.101107003151938,0.101107003151938,-104.9257668,39.7583774,-104.924584,39.7583757
-15469,9610,9613,0.00340267268464027,0.00340267268464027,-105.000479,39.7442156,-105.0004503,39.7442368
-15685,3450,6014,0.102083800598865,0.102083800598865,-104.9461569,39.7178084,-104.9449634,39.7178023
-18613,9261,4049,0.17355432372221,0.17355432372221,-105.0355223,39.7197001,-105.0355145,39.7181393
-15707,8686,8810,0.0279306326987703,0.0279306326987703,-104.9497874,39.7178534,-104.9500622,39.7177177
-15471,9606,8892,0.117003908235376,0.117003908235376,-105.0007281,39.7441165,-105.0008068,39.745167
-15762,2940,6814,0.0992967316903301,0.0992967316903301,-104.9257898,39.7162499,-104.9246289,39.7162454
-15764,6595,9701,0.0232598991470647,0.0232598991470647,-105.0377569,39.7329864,-105.0380289,39.7329878
-14656,9410,9411,0.19733052173904,0.19733052173904,-105.015841,39.75954,-105.0180024,39.7601634
-20261,10720,5750,0.00799491979378441,0.00799491979378441,-105.0450567,39.772877,-105.0450566,39.7729489
-2336,1153,2328,0.201597448584961,0.201597448584961,-104.9240347,39.7637955,-104.9240271,39.7656085
-17300,8716,8745,0.199099643459498,0.199099643459498,-104.9622811,39.6929794,-104.9622978,39.6947699
-19471,10515,10516,0.00520398584376517,0.00520398584376517,-104.9902726,39.7086173,-104.9902729,39.7085705
-20611,10819,10828,0.0109320789190355,0.0109320789190355,-105.0192728,39.7586316,-105.0192706,39.7587299
-20612,10828,10821,0.0197366861798755,0.0197366861798755,-105.0192706,39.7587299,-105.0191892,39.758896
-20613,10821,10870,0.0252155503065758,0.0252155503065758,-105.0191892,39.758896,-105.0188943,39.7588905
-478,480,212,0.0356029775534751,0.0356029775534751,-104.9669782,39.7796681,-104.9665616,39.779672
-15859,9740,9707,0.0569780852958723,0.0569780852958723,-105.0401452,39.7312615,-105.039492,39.7313626
-515,509,510,0.286655598001641,0.286655598001641,-104.9514881,39.747496,-104.9547886,39.7479501
-520,514,515,0.226862534758366,0.226862534758366,-105.0251054,39.7238769,-105.0224999,39.7242598
-15253,9545,9538,0.0260796874031177,0.0260796874031177,-104.9353544,39.7054988,-104.9352077,39.7057044
-624,614,615,0.101063162513791,0.101063162513791,-104.9929396,39.7368669,-104.9941215,39.7368616
-19463,10483,10508,0.019159575222575,0.019159575222575,-104.9902592,39.7100937,-104.9902611,39.7099214
-17219,3199,3087,0.202098851695834,0.202098851695834,-104.9775204,39.7110879,-104.9775097,39.7129054
-702,696,697,0.1055651557861,0.1055651557861,-104.9500677,39.7419774,-104.9488331,39.7419679
-15544,9645,9646,0.00692347068679982,0.00692347068679982,-104.9867889,39.7267325,-104.9868344,39.726681
-776,778,779,0.103928492069641,0.103928492069641,-105.023849,39.7020679,-105.0250638,39.7020728
-15955,6396,500,0.195346208359328,0.195346208359328,-105.0022548,39.7147281,-105.0016511,39.7130338
-913,927,928,0.0495542499145439,0.0495542499145439,-104.9792571,39.7320337,-104.9786778,39.7320223
-915,929,930,0.0493548663548942,0.0493548663548942,-104.9781467,39.7320382,-104.9775696,39.7320445
-15957,9767,9768,0.0474477023795114,0.0474477023795114,-105.0006962,39.7116024,-105.0005192,39.711198
-932,947,948,0.100759864187185,0.100759864187185,-104.9540658,39.7320945,-104.9528876,39.7321058
-15960,9770,7450,0.0160716244910599,0.0160716244910599,-104.999001,39.7075478,-104.9991888,39.7075519
-955,967,968,0.0165679791310418,0.0165679791310418,-104.9838014,39.7234262,-104.9837585,39.7235715
-957,969,970,0.197449816642368,0.197449816642368,-104.9835112,39.7801693,-104.9835185,39.781945
-15913,9240,9745,0.0339191222144473,0.0339191222144473,-105.042453,39.716655,-105.0428433,39.716601
-980,991,992,0.138684932577873,0.138684932577873,-104.9740667,39.720134,-104.974036,39.718887
-15891,9002,7513,0.0667178592447727,0.0667178592447727,-105.0410599,39.7349868,-105.0416463,39.7353826
-1003,1016,1017,0.039629871856248,0.039629871856248,-104.9622539,39.7331056,-104.9622539,39.733462
-1004,1017,1018,0.176155002789907,0.176155002789907,-104.9622539,39.733462,-104.9622539,39.7350462
-19469,10513,10514,0.0200709923319022,0.0200709923319022,-104.9902701,39.7089743,-104.9902714,39.7087938
-16388,9459,9771,0.0286077698371324,0.0286077698371324,-104.9714714,39.7030996,-104.9717383,39.7032546
-1087,1103,1104,0.338644304966299,0.338644304966299,-105.0404962,39.738465,-105.0404924,39.7415105
-17156,3091,4971,0.202252452796884,0.202252452796884,-104.9751708,39.7128876,-104.9751706,39.7147065
-16103,255,8239,0.267325536990832,0.267325536990832,-104.9534054,39.7800114,-104.9502774,39.7799784
-1170,1186,1187,0.0990780990020656,0.0990780990020656,-104.9648143,39.7271028,-104.9636558,39.7271103
-16337,8026,3444,0.219522804846043,0.219522804846043,-104.9488251,39.7617626,-104.9462569,39.7617553
-1298,1323,1324,0.104021267127805,0.104021267127805,-105.0408805,39.7133731,-105.0420966,39.7133724
-1299,1324,1325,0.0988550932780109,0.0988550932780109,-105.0420966,39.7133724,-105.0432523,39.7133745
-16392,9847,9876,0.0466572032639634,0.0466572032639634,-104.9699755,39.7028786,-104.9705085,39.7029675
-1322,1347,1348,0.145300158256776,0.145300158256776,-104.9771684,39.7690078,-104.9759324,39.769905
-387,389,390,0.101909828504342,0.101909828504342,-105.0001337,39.7136621,-105.0008375,39.7144016
-19511,10536,10537,0.0367294544686212,0.0367294544686212,-104.9879104,39.7088024,-104.9882735,39.7089787
-1469,1489,1490,0.0976691429125615,0.0976691429125615,-105.0015377,39.694864,-105.0026792,39.6948706
-12005,8512,8049,0.105397118565585,0.105397118565585,-104.9875407,39.7588984,-104.9866649,39.7595656
-18733,7646,6209,0.175022021354251,0.175022021354251,-105.0331112,39.7277125,-105.0331036,39.7261385
-16766,5003,7290,0.0493746723595829,0.0493746723595829,-104.9542392,39.7014907,-104.9546694,39.7017867
-1495,1515,1473,0.1629816039782,0.1629816039782,-104.9267914,39.6961177,-104.9248865,39.6961248
-1497,1516,1517,0.202642438735294,0.202642438735294,-104.9746066,39.7147099,-104.9745809,39.7128876
-16788,10012,8649,0.310114997807766,0.310114997807766,-105.0057345,39.7494516,-105.0092259,39.7486951
-1549,1574,1575,0.0819858846366358,0.0819858846366358,-105.0360845,39.6869978,-105.0369943,39.687229
-1550,1575,1576,0.0787364050378914,0.0787364050378914,-105.0369943,39.687229,-105.0378698,39.6874469
-12359,8664,8670,0.00994780391809775,0.00994780391809775,-105.0123703,39.7528644,-105.0123272,39.7529475
-16806,9858,3171,0.0510524682713306,0.0510524682713306,-104.9540893,39.6965849,-104.9534926,39.6965864
-1570,1597,1598,0.101896558922667,0.101896558922667,-105.0140815,39.6999614,-105.0137725,39.6990764
-2686,2646,2647,0.164307180037452,0.164307180037452,-104.9522198,39.7241312,-104.952204,39.7256088
-17103,9923,330,0.250512453112542,0.250512453112542,-104.9542113,39.7438103,-104.9522566,39.7454886
-1650,1677,1678,0.13227170643909,0.13227170643909,-105.0158682,39.7680616,-105.0174158,39.7680606
-11530,810,811,0.199368445906152,0.199368445906152,-105.0276079,39.7554276,-105.0299401,39.7554211
-16952,10036,10037,0.00823596195269871,0.00823596195269871,-105.0167198,39.7560071,-105.0167413,39.7559349
-1704,1725,1726,0.0532102629650272,0.0532102629650272,-105.0179828,39.6910268,-105.0185407,39.6908154
-17039,9210,8988,0.00924605732532601,0.00924605732532601,-105.0192694,39.7575006,-105.0192467,39.7575819
-1762,1487,1782,0.108567137541803,0.108567137541803,-104.9874337,39.6948003,-104.986165,39.6947828
-14689,2798,2868,0.199650986040528,0.199650986040528,-104.971199,39.7272868,-104.9712042,39.7290823
-17136,4412,4425,0.202602949014775,0.202602949014775,-104.9763723,39.7038488,-104.9763417,39.7056707
-17489,472,4654,0.0574342005254488,0.0574342005254488,-105.0184425,39.7479196,-105.0189639,39.7475939
-1935,1949,1223,0.041131087786823,0.041131087786823,-105.012837,39.738513,-105.012356,39.7385086
-1937,1950,1951,0.0773266220673917,0.0773266220673917,-105.005245,39.7384018,-105.006149,39.738421
-16304,2826,2827,0.0584380832256012,0.0584380832256012,-104.9718283,39.6983529,-104.9721964,39.6979102
-17962,10235,5193,0.0148018460000789,0.0148018460000789,-104.9880993,39.7242556,-104.9880966,39.7241225
-2187,2187,2188,0.0698088769426891,0.0698088769426891,-105.0159723,39.7369102,-105.0159468,39.7375377
-17834,10187,10188,0.0373456729353608,0.0373456729353608,-105.0006185,39.7636303,-105.000993,39.7638033
-17023,10058,10059,0.043764797810192,0.043764797810192,-105.0171608,39.7532718,-105.0176702,39.753311
-2261,2261,2262,0.20174624930555,0.20174624930555,-104.930525,39.7674191,-104.9305079,39.7692334
-20285,10701,10709,0.0172154433985116,0.0172154433985116,-105.0447555,39.7732732,-105.0445556,39.7732923
-16421,3331,3358,0.0229870189622456,0.0229870189622456,-104.9693109,39.7020309,-104.9695281,39.7021526
-20297,5579,7524,0.0531120067375217,0.0531120067375217,-105.0439692,39.777017,-105.0433477,39.777017
-12353,8669,8661,0.00857375962495721,0.00857375962495721,-105.0124521,39.7523897,-105.0123532,39.7524025
-16657,3462,3464,0.173665424327281,0.173665424327281,-104.9862758,39.7399191,-104.9872522,39.7385496
-19565,10567,7463,0.00795043725476521,0.00795043725476521,-104.9897546,39.7076211,-104.9897546,39.7075496
-17162,5087,5107,0.202243070877092,0.202243070877092,-104.9740434,39.6911697,-104.9740336,39.6929885
-19034,10159,9497,0.0427022948506461,0.0427022948506461,-104.9503671,39.7793277,-104.949868,39.7793088
-20744,9001,10918,0.332184959452437,0.332184959452437,-105.0253805,39.7605003,-105.0286822,39.762076
-20748,10921,10922,0.0509227801768603,0.0509227801768603,-105.0292505,39.7620502,-105.0298462,39.7620563
-20749,10923,10924,0.18669804780169,0.18669804780169,-105.0382061,39.7620456,-105.0382156,39.7603666
-20750,10925,10926,0.0392592111051346,0.0392592111051346,-105.035831,39.7621995,-105.0362903,39.7621997
-20752,10927,10928,0.00711510327217607,0.00711510327217607,-105.0267252,39.7609466,-105.0267992,39.7609759
-20754,10929,10930,0.0834966641757845,0.0834966641757845,-105.0299581,39.7621958,-105.0299611,39.7629467
-20756,10931,10932,0.0408755067283247,0.0408755067283247,-105.0352067,39.7621947,-105.0356849,39.762197
-20758,10933,10934,0.0399346912680156,0.0399346912680156,-105.0363976,39.7621959,-105.0368648,39.7621971
-20760,10935,10936,0.0903151185359097,0.0903151185359097,-105.0370035,39.7621946,-105.0380601,39.7621908
-20762,10937,8302,0.00392992290489043,0.00392992290489043,-105.0266441,39.7609098,-105.0266827,39.760929
-20763,8302,10927,0.00412640673301695,0.00412640673301695,-105.0266827,39.760929,-105.0267252,39.7609466
-20765,10918,3754,0.00609979968071289,0.00609979968071289,-105.0286822,39.762076,-105.028727,39.7621187
-20766,3754,10938,0.00661123306657495,0.00661123306657495,-105.028727,39.7621187,-105.028778,39.7621634
-20768,10920,7783,0.00949225948867298,0.00949225948867298,-105.0391814,39.7621915,-105.0392924,39.7621941
-20769,7783,10939,0.00900064827794335,0.00900064827794335,-105.0392924,39.7621941,-105.0393977,39.762194
-20771,10940,3415,0.00746326017722055,0.00746326017722055,-105.0345162,39.7622208,-105.0346035,39.762222
-20772,3415,10941,0.00571991053425525,0.00571991053425525,-105.0346035,39.762222,-105.0346704,39.7622208
-20774,10938,10942,0.117980886182769,0.117980886182769,-105.028778,39.7621634,-105.0279694,39.7630233
-20776,10941,10943,0.040800141538403,0.040800141538403,-105.0346704,39.7622208,-105.0351465,39.7621945
-20778,10929,8910,0.00644678344686978,0.00644678344686978,-105.0299581,39.7621958,-105.0300335,39.7621944
-20779,8910,10944,0.00853909895805364,0.00853909895805364,-105.0300335,39.7621944,-105.0301334,39.7621946
-20781,10926,10280,0.00413065470277064,0.00413065470277064,-105.0362903,39.7621997,-105.0363386,39.7622009
-20782,10280,10933,0.00507364819278473,0.00507364819278473,-105.0363386,39.7622009,-105.0363976,39.7621959
-16513,9922,1630,0.0152212141119797,0.0152212141119797,-105.0040915,39.7422329,-105.0040598,39.7420982
-16537,3671,9932,0.221180884679333,0.221180884679333,-104.9763685,39.7474986,-104.9763549,39.7494877
-16539,9933,7834,0.139783679739911,0.139783679739911,-104.9763678,39.7507423,-104.9763093,39.7519986
-16790,10013,7828,0.227723092786938,0.227723092786938,-105.0114923,39.7476921,-105.0134825,39.746331
-18645,1318,5867,0.177222990129465,0.177222990129465,-105.0378936,39.7133724,-105.0378886,39.7149662
-16960,10042,10043,0.0112267703364208,0.0112267703364208,-105.0160419,39.7555757,-105.0160494,39.7554749
-17266,3520,4261,0.200318193124263,0.200318193124263,-104.961154,39.6983849,-104.9611486,39.6965834
-18444,10290,1124,0.0512555936349529,0.0512555936349529,-105.0410717,39.7607688,-105.0404721,39.7607638
-17645,7,9825,0.783906819132393,0.783906819132393,-104.9443453,39.7800941,-104.9535187,39.7801156
-18721,5864,1312,0.178403401011926,0.178403401011926,-105.0343073,39.7149733,-105.0342968,39.7133689
-18408,6096,10287,0.0607868213781131,0.0607868213781131,-105.0292309,39.760844,-105.0292196,39.7613906
-17821,10187,10188,0.0373456729353608,0.0373456729353608,-105.0006185,39.7636303,-105.000993,39.7638033
-17849,2817,1418,0.198773063708036,0.198773063708036,-104.9993302,39.7801544,-104.9993559,39.7819419
-17914,4748,4144,0.180736428235498,0.180736428235498,-104.9856194,39.7225378,-104.9856225,39.7209124
-17915,4144,2362,0.17239723292509,0.17239723292509,-104.9856225,39.7209124,-104.9856171,39.719362
-18664,5184,5652,0.105551381348891,0.105551381348891,-105.0378224,39.7245345,-105.0378346,39.7254837
-18600,10333,10334,0.176228489643034,0.176228489643034,-105.0255419,39.7245857,-105.027524,39.725019
-18763,10341,10340,0.0478284118767837,0.0478284118767837,-105.0049362,39.7395329,-105.0043791,39.7395716
-18822,10356,10117,0.120644655146847,0.120644655146847,-105.0153708,39.7415577,-105.0153883,39.7404728
-12967,1825,1881,0.094094502294363,0.094094502294363,-105.0069351,39.7456267,-105.0074729,39.746365
-19280,10465,10466,0.126391742395325,0.126391742395325,-104.9873778,39.7399976,-104.988856,39.7399993
-19156,8422,10431,0.296704595839795,0.296704595839795,-105.0135792,39.7398604,-105.0144289,39.7424475
-19440,7907,10492,0.0345487307061229,0.0345487307061229,-104.9911419,39.7111606,-104.991144,39.7108499
-20295,10709,10710,0.0460287189373458,0.0460287189373458,-105.0445556,39.7732923,-105.0441026,39.7735162
-3578,3435,3436,0.0484142710611121,0.0484142710611121,-105.0346033,39.7779525,-105.0346033,39.7783879
-3579,3436,2495,0.0837858518069818,0.0837858518069818,-105.0346033,39.7783879,-105.0346,39.7791414
-3580,2495,3437,0.120116992356444,0.120116992356444,-105.0346,39.7791414,-105.0346118,39.7802216
-3581,3437,2842,0.00242442592962248,0.00242442592962248,-105.0346118,39.7802216,-105.0346113,39.7802434
-14124,506,3659,0.275685944218073,0.275685944218073,-104.9486568,39.747653,-104.9461809,39.7460646
-16901,3513,74,0.203700975919817,0.203700975919817,-104.9657993,39.6983855,-104.9657864,39.7002174
-18139,6038,10260,0.200840451178757,0.200840451178757,-105.0164173,39.7856269,-105.0164142,39.7874331
-19824,7641,5603,0.172193293465978,0.172193293465978,-105.0009116,39.7273175,-105.0016041,39.7258634
-19832,10652,10653,0.149094174776889,0.149094174776889,-105.0399184,39.7398025,-105.0399056,39.7384617
-16543,3555,814,0.153171011691858,0.153171011691858,-104.9751506,39.7546225,-104.9751505,39.753245
-20427,10755,10788,0.051994279761698,0.051994279761698,-105.0213448,39.7585398,-105.0218514,39.7587986
-11503,6094,2973,0.264851184287827,0.264851184287827,-105.027568,39.7608513,-105.0275907,39.7584695
-11438,8034,511,0.21998121248842,0.21998121248842,-105.0287237,39.7840235,-105.0312479,39.7836347
-16767,7290,3183,0.0591297362625136,0.0591297362625136,-104.9546694,39.7017867,-104.955269,39.7020512
-20517,10806,10844,0.0093521291785604,0.0093521291785604,-105.0163557,39.7585125,-105.0164651,39.7585116
-18290,6889,6752,0.139920838374264,0.139920838374264,-105.0259388,39.7651274,-105.0275758,39.7651202
-11434,8077,8253,0.0508611139110148,0.0508611139110148,-105.0348588,39.7833346,-105.0342653,39.7832999
-20513,10060,10809,0.00760770059759869,0.00760770059759869,-105.0193133,39.7576622,-105.0193936,39.7576917
-18366,7716,7754,0.0519727898310098,0.0519727898310098,-105.0259442,39.7669727,-105.0259422,39.7665053
-11784,8036,2685,0.144743408596787,0.144743408596787,-104.9787817,39.7535131,-104.9799803,39.7525937
-11570,8321,7713,0.150502362587478,0.150502362587478,-105.0304907,39.7580283,-105.0304918,39.7566748
-18376,8353,6069,0.193914067776721,0.193914067776721,-105.0398199,39.7838754,-105.039828,39.7856193
-12066,8533,8534,0.0445577347958965,0.0445577347958965,-104.9542138,39.7458945,-104.9544306,39.7462589
-16678,9979,9981,0.0909471727810372,0.0909471727810372,-105.0090565,39.7415049,-105.0080856,39.741839
-20808,10948,8326,0.017351380837649,0.017351380837649,-105.0291285,39.7622441,-105.029018,39.7621132
-13031,590,8926,0.147745966959296,0.147745966959296,-104.9910794,39.7792543,-104.989367,39.779071
-18483,9138,9139,0.0109683239632665,0.0109683239632665,-105.0432544,39.7511117,-105.0431263,39.7511062
-16502,3167,9925,0.137835608828632,0.137835608828632,-105.00401,39.7438456,-105.004838,39.7449092
-16961,10043,10044,0.075399787572802,0.075399787572802,-105.0160494,39.7554749,-105.0165756,39.7549307
-17393,67,3508,0.205321571793414,0.205321571793414,-104.9681458,39.7002288,-104.9681486,39.6983823
-17395,68,7304,0.202979892499458,0.202979892499458,-104.9680761,39.7002293,-104.9680922,39.7020547
-17650,303,395,0.11664951410225,0.11664951410225,-104.9380643,39.7800108,-104.9367017,39.7800737
-18596,10330,1845,0.0286669821878414,0.0286669821878414,-105.0312337,39.7211002,-105.031231,39.721358
-18996,5601,9265,0.00587624613864547,0.00587624613864547,-105.0016014,39.7209311,-105.0016701,39.7209304
-19117,402,10431,0.249198506812358,0.249198506812358,-105.0124556,39.7407982,-105.0144289,39.7424475
-19489,4703,10441,0.0209493756701814,0.0209493756701814,-104.9883469,39.709334,-104.9883481,39.7091456
-19929,9514,10680,0.206733607617385,0.206733607617385,-105.0375666,39.7403293,-105.0375666,39.7384701
-20583,10849,9338,0.00790665036605531,0.00790665036605531,-105.0250742,39.7612881,-105.0251667,39.7612881
-20193,10707,9813,0.31051590829715,0.31051590829715,-104.9886248,39.7811587,-104.9922437,39.7814112
-19738,9472,4893,0.184563607099297,0.184563607099297,-104.9456312,39.7367775,-104.9456205,39.7351177
-19739,4893,9418,0.161581410791365,0.161581410791365,-104.9456205,39.7351177,-104.9456339,39.7336646
-19740,9418,955,0.17512104217346,0.17512104217346,-104.9456339,39.7336646,-104.9456366,39.7320897
-19741,955,8865,0.17730267158364,0.17730267158364,-104.9456366,39.7320897,-104.9456473,39.7304952
-19745,4908,6614,0.202025102521769,0.202025102521769,-104.9338415,39.7346803,-104.9338724,39.736497
-19746,6614,9456,0.193906231686937,0.193906231686937,-104.9338724,39.736497,-104.9338436,39.7382407
-19747,9456,10644,0.207835763228408,0.207835763228408,-104.9338436,39.7382407,-104.933817,39.7401097
-19748,10644,647,0.139231068042996,0.139231068042996,-104.933817,39.7401097,-104.9337694,39.7413613
-19807,7868,3718,0.103509284327612,0.103509284327612,-104.9969607,39.7193475,-104.9969447,39.7184167
-19756,9305,1209,0.168197350020426,0.168197350020426,-104.942383,39.7256045,-104.9423696,39.7271171
-19906,9507,10678,0.206369047895258,0.206369047895258,-105.0328316,39.7403209,-105.0328432,39.738465
-17115,582,4052,0.0200066549889732,0.0200066549889732,-104.9577579,39.7479349,-104.9579299,39.7478129
-20290,10700,10701,0.0224013855081139,0.0224013855081139,-105.0445771,39.7731256,-105.0447555,39.7732732
-15856,9738,9733,0.00602831355714784,0.00602831355714784,-105.0423031,39.7306156,-105.0423259,39.7305643
-16390,9811,3033,0.00758642111179705,0.00758642111179705,-104.9701397,39.7026686,-104.9700513,39.702674
-17208,234,10075,0.0065072113132931,0.0065072113132931,-104.9688514,39.6965865,-104.9688448,39.6965282
-18209,3991,6766,0.202297976338321,0.202297976338321,-105.0299548,39.7716681,-105.0275892,39.7716046
-314,322,323,0.0362830323344,0.0362830323344,-105.0158044,39.7515055,-105.0156986,39.7518215
-17944,10224,7938,0.0484797623817722,0.0484797623817722,-104.9867731,39.7252057,-104.9868244,39.7256399
-11519,657,658,0.200633396770054,0.200633396770054,-105.0322612,39.758985,-105.0299141,39.7589753
-18400,7187,1425,0.131517435591527,0.131517435591527,-105.0386558,39.7832674,-105.0386719,39.7820847
-16448,9905,9906,0.00998689980616885,0.00998689980616885,-104.9731684,39.7001285,-104.9731572,39.7002179
-1705,1726,1727,0.0778502303245676,0.0778502303245676,-105.0185407,39.6908154,-105.0194505,39.690822
-19817,3729,10647,0.0543545423636727,0.0543545423636727,-105.0028319,39.7300118,-105.0021963,39.7300097
-20793,10938,8908,0.0180004191395181,0.0180004191395181,-105.028778,39.7621634,-105.0289792,39.7622112
-19241,8221,10460,0.0833729876311698,0.0833729876311698,-104.9936301,39.74071,-104.9942613,39.7401385
-18639,5180,2582,0.17723417320802,0.17723417320802,-105.0345542,39.7245247,-105.0345489,39.7229308
-20291,10701,10703,0.028889965052559,0.028889965052559,-105.0447555,39.7732732,-105.0450568,39.773391
-19963,4945,7404,0.157747728004848,0.157747728004848,-104.9951594,39.7179476,-104.9945842,39.7165997
-5109,4628,4629,0.132844583260552,0.132844583260552,-105.0189404,39.7729351,-105.0189408,39.7741298
-13926,8916,8922,0.136369708465648,0.136369708465648,-104.9907275,39.7728705,-104.9912716,39.7717176
-19964,7404,10415,0.200029723937468,0.200029723937468,-104.9945842,39.7165997,-104.9945762,39.7148008
-12274,8517,8518,0.0318537260898596,0.0318537260898596,-105.0069509,39.7552605,-105.0071312,39.7555112
-302,310,311,0.0714603355500818,0.0714603355500818,-104.9792332,39.7786848,-104.9786416,39.779139
-307,315,316,0.0430385391585726,0.0430385391585726,-105.0132442,39.7253524,-105.0137199,39.7254787
-333,333,334,0.130005791781119,0.130005791781119,-104.9270337,39.7763519,-104.9284284,39.775885
-501,338,339,0.0809671757461818,0.0809671757461818,-104.9880444,39.7401037,-104.9873725,39.7395906
-337,340,336,0.244398847800565,0.244398847800565,-104.9379355,39.7804643,-104.9390909,39.7824749
-339,341,342,0.368758396632831,0.368758396632831,-105.0154562,39.7336245,-105.0138715,39.7367088
-341,343,344,0.267836247641829,0.267836247641829,-105.0125925,39.7554572,-105.0150427,39.753956
-1553,1578,1579,0.0969614959298273,0.0969614959298273,-105.0401129,39.6876594,-105.0411657,39.6879819
-360,362,363,0.19757055700413,0.19757055700413,-105.0051577,39.6892299,-105.0049362,39.6874613
-361,363,358,0.235481235248911,0.235481235248911,-105.0049362,39.6874613,-105.0034646,39.6856718
-365,366,367,0.102920688901431,0.102920688901431,-104.9601224,39.7799975,-104.9589982,39.7796654
-374,376,377,0.135433574317766,0.135433574317766,-105.0213674,39.7753467,-105.0213949,39.7741289
-376,378,379,0.134391053348824,0.134391053348824,-105.019844,39.7729352,-105.019823,39.7717267
-485,478,486,0.209563350313202,0.209563350313202,-105.0170811,39.7459783,-105.0180607,39.7477059
-489,489,490,0.0633762863456435,0.0633762863456435,-104.9407865,39.7473869,-104.9415277,39.7473958
-491,491,492,0.0663732872105415,0.0663732872105415,-104.9407607,39.7492347,-104.9415359,39.749202
-493,493,494,0.169203096380544,0.169203096380544,-104.994193,39.7810897,-104.992407,39.7804327
-495,5,495,0.258130691528307,0.258130691528307,-104.9373334,39.780183,-104.9399882,39.7812905
-496,495,496,0.152370734557831,0.152370734557831,-104.9399882,39.7812905,-104.9404434,39.7826154
-523,518,519,0.337507977198885,0.337507977198885,-104.9409175,39.7837817,-104.9416292,39.7807961
-525,520,521,0.106662672722042,0.106662672722042,-105.0028259,39.7312673,-105.0040731,39.7312549
-527,522,523,0.0555974633225448,0.0555974633225448,-104.947535,39.703187,-104.947535,39.702687
-529,524,525,0.0282350762510443,0.0282350762510443,-104.9493835,39.780399,-104.9497096,39.7804399
-530,525,526,0.0218806529722405,0.0218806529722405,-104.9497096,39.7804399,-104.9499002,39.7803085
-532,527,397,0.320431501428441,0.320431501428441,-105.009688,39.7575578,-105.0131625,39.7564763
-11515,270,528,0.19992365959325,0.19992365959325,-105.029923,39.7598619,-105.0322618,39.7598749
-535,529,530,0.455513641378482,0.455513641378482,-105.0102365,39.7542807,-105.0085506,39.7581668
-537,531,532,0.375956762810707,0.375956762810707,-105.0148477,39.7535401,-105.010541,39.7542249
-11371,7972,290,0.0119699038475456,0.0119699038475456,-105.0052958,39.7614779,-105.0053845,39.7613946
-14734,4868,2218,0.161837248854237,0.161837248854237,-104.9758386,39.7351502,-104.9758646,39.7336949
-6872,5877,5878,0.0844725820315708,0.0844725820315708,-105.0442509,39.6917193,-105.045238,39.6917061
-16249,9860,8753,0.202765718025687,0.202765718025687,-104.9529332,39.6929471,-104.9529431,39.6947706
-16250,8753,9861,0.201364638358659,0.201364638358659,-104.9529431,39.6947706,-104.9529333,39.6965815
-16251,9861,3662,0.165177264018871,0.165177264018871,-104.9529333,39.6965815,-104.9517941,39.6977808
-20720,9398,9340,0.00984702702877527,0.00984702702877527,-105.0252853,39.7620928,-105.0251701,39.7620923
-16256,9863,8751,0.202603541868936,0.202603541868936,-104.9552587,39.6929589,-104.9552399,39.6947809
-16260,3650,88,0.266027674120579,0.266027674120579,-104.957148,39.7023062,-104.9586741,39.7002217
-16261,88,3524,0.203075294530693,0.203075294530693,-104.9586741,39.7002217,-104.9586741,39.6983954
-16262,3524,9864,0.20046430405241,0.20046430405241,-104.9586741,39.6983954,-104.9586848,39.6965926
-16263,9864,6517,0.135079896017257,0.135079896017257,-104.9586848,39.6965926,-104.9581176,39.6954589
-19523,6855,10544,0.00712022213135496,0.00712022213135496,-104.9888037,39.7102452,-104.9888064,39.7101812
-19524,10544,10545,0.0729342151704198,0.0729342151704198,-104.9888064,39.7101812,-104.9888118,39.7095253
-19526,10427,10546,0.0076995400840501,0.0076995400840501,-104.9883457,39.7095201,-104.9884357,39.7095211
-19527,10546,10545,0.0321755552809886,0.0321755552809886,-104.9884357,39.7095211,-104.9888118,39.7095253
-19528,10545,10547,0.0194542890583841,0.0194542890583841,-104.9888118,39.7095253,-104.9890392,39.7095279
-19529,10547,10548,0.0207030648178635,0.0207030648178635,-104.9890392,39.7095279,-104.9892812,39.7095305
-19530,10548,10543,0.0190435691175833,0.0190435691175833,-104.9892812,39.7095305,-104.9895038,39.709533
-19531,10543,10549,0.0747704686946873,0.0747704686946873,-104.9895038,39.709533,-104.9897237,39.7101838
-19532,10549,6859,0.00739470505760699,0.00739470505760699,-104.9897237,39.7101838,-104.9897244,39.7102503
-19543,10555,10556,0.0878912692065361,0.0878912692065361,-104.9890509,39.7084053,-104.9890591,39.7076149
-19544,10556,7460,0.0082175900444136,0.0082175900444136,-104.9890591,39.7076149,-104.9890599,39.707541
-11808,8395,2692,0.146729521611774,0.146729521611774,-104.9838316,39.7536605,-104.9826233,39.7545977
-19546,6852,10557,0.00689466829919516,0.00689466829919516,-104.9881056,39.7102414,-104.9880964,39.7101798
-19547,10557,10558,0.00988642805887056,0.00988642805887056,-104.9880964,39.7101798,-104.9880982,39.7100909
-19548,10558,10559,0.0350073244923259,0.0350073244923259,-104.9880982,39.7100909,-104.9881037,39.7097761
-19550,10409,10559,0.0205641181514586,0.0205641181514586,-104.9883441,39.7097759,-104.9881037,39.7097761
-343,345,346,0.0953881878570937,0.0953881878570937,-105.0067949,39.727165,-105.0077031,39.726667
-357,359,360,0.0408490640041322,0.0408490640041322,-105.0015512,39.6890589,-105.0016107,39.6894234
-359,361,362,0.026041104546106,0.026041104546106,-105.0051297,39.6894631,-105.0051577,39.6892299
-19800,8772,7638,0.176309543452907,0.176309543452907,-104.9969955,39.7289027,-104.9969636,39.7273173
-19802,6235,5200,0.174765267300994,0.174765267300994,-104.9969633,39.7256958,-104.9969602,39.7241241
-14862,8517,9439,0.0489472304938478,0.0489472304938478,-105.0069509,39.7552605,-105.0065078,39.7555393
-14864,9387,9440,0.0279990514780242,0.0279990514780242,-105.0032834,39.7589279,-105.0029559,39.7589235
-206,104,218,0.105140809305177,0.105140809305177,-104.9874778,39.7002508,-104.9862918,39.700003
-207,218,219,0.425726992195474,0.425726992195474,-104.9862918,39.700003,-104.9829912,39.6971378
-208,219,220,0.341194420964085,0.341194420964085,-104.9829912,39.6971378,-104.9801989,39.6949471
-564,250,558,0.137167107757782,0.137167107757782,-104.998399,39.69737,-104.996796,39.697349
-566,559,560,0.116737480647973,0.116737480647973,-104.9838121,39.7666622,-104.9837994,39.767712
-570,563,564,0.00248176882120935,0.00248176882120935,-104.9854438,39.7392378,-104.9854426,39.7392155
-571,564,565,0.0167681949380125,0.0167681949380125,-104.9854426,39.7392155,-104.9854426,39.7390647
-573,566,248,0.898480310845601,0.898480310845601,-104.9751917,39.6906986,-104.966468,39.6862015
-577,569,570,0.20355346310439,0.20355346310439,-104.985642,39.6966206,-104.9856433,39.69479
-578,570,571,0.196730394721169,0.196730394721169,-104.9856433,39.69479,-104.9857141,39.6930216
-579,571,572,0.203615183123948,0.203615183123948,-104.9857141,39.6930216,-104.9856956,39.6911905
-580,572,573,0.198181200751108,0.198181200751108,-104.9856956,39.6911905,-104.9857184,39.6894083
-14119,4047,3768,0.167133877022618,0.167133877022618,-104.9449621,39.7476682,-104.9443957,39.7462296
-16964,10030,10041,0.01368783886441,0.01368783886441,-105.0158154,39.755672,-105.0159755,39.75567
-17397,72,7305,0.205159206156883,0.205159206156883,-104.9669067,39.7002209,-104.9669227,39.7020659
-18238,8494,6764,0.145768349374275,0.145768349374275,-105.0258959,39.7706651,-105.0276005,39.7707095
-19608,10515,10585,0.0689638415978994,0.0689638415978994,-104.9902726,39.7086173,-104.9910787,39.7086267
-18764,10340,10339,0.0412859123428405,0.0412859123428405,-105.0043791,39.7395716,-105.0047672,39.7397925
-18823,10117,10113,0.0135016334010227,0.0135016334010227,-105.0153883,39.7404728,-105.0153589,39.7403535
-19106,10358,10371,0.165108727109845,0.165108727109845,-105.0144967,39.7392041,-105.0142451,39.7377319
-19491,10447,10448,0.0188144168916081,0.0188144168916081,-104.9883492,39.7089795,-104.9883503,39.7088103
-20034,9939,10087,0.139116164222915,0.139116164222915,-104.9739728,39.7494793,-104.9739701,39.7507304
-20585,10868,10860,0.0191301130167572,0.0191301130167572,-105.0245651,39.7612868,-105.02457,39.7611148
-16225,9851,8750,0.201618763717288,0.201618763717288,-104.9563865,39.692964,-104.9563891,39.6947772
-16226,8750,9852,0.201631838787549,0.201631838787549,-104.9563891,39.6947772,-104.9563784,39.6965905
-16227,9852,3528,0.200735525849656,0.200735525849656,-104.9563784,39.6965905,-104.9563972,39.6983957
-16228,3528,92,0.203732802229698,0.203732802229698,-104.9563972,39.6983957,-104.9565605,39.7002236
-16230,9853,7739,0.398547510805713,0.398547510805713,-104.9575595,39.6857489,-104.9575425,39.6893331
-16231,7739,5833,0.201507956367007,0.201507956367007,-104.9575425,39.6893331,-104.9575478,39.6911453
-16232,5833,9854,0.202599224942483,0.202599224942483,-104.9575478,39.6911453,-104.9575371,39.6929673
-16233,9854,8749,0.200829688485991,0.200829688485991,-104.9575371,39.6929673,-104.9575317,39.6947734
-16234,8749,9855,0.20199683583572,0.20199683583572,-104.9575317,39.6947734,-104.9575344,39.69659
-16235,9855,3526,0.201154889365918,0.201154889365918,-104.9575344,39.69659,-104.9575478,39.698399
-16236,3526,90,0.202910490655376,0.202910490655376,-104.9575478,39.698399,-104.9575583,39.7002238
-16237,90,3653,0.220628466219896,0.220628466219896,-104.9575583,39.7002238,-104.956048,39.7018321
-16241,5837,9857,0.2019855844315,0.2019855844315,-104.9540973,39.6911339,-104.9540974,39.6929504
-16242,9857,8752,0.20368896268505,0.20368896268505,-104.9540974,39.6929504,-104.9540866,39.6947822
-16243,8752,9858,0.200451227373991,0.200451227373991,-104.9540866,39.6947822,-104.9540893,39.6965849
-16244,9858,3660,0.230907711206458,0.230907711206458,-104.9540893,39.6965849,-104.9525869,39.69831
-16248,5838,9860,0.202297457689378,0.202297457689378,-104.9529386,39.6911278,-104.9529332,39.6929471
-19645,10602,7824,0.0258612340137364,0.0258612340137364,-104.9878742,39.7066509,-104.9875719,39.7066529
-363,364,365,0.559719374351914,0.559719374351914,-104.9703166,39.6886511,-104.9756534,39.6915619
-19907,10678,9721,0.0996291174385701,0.0996291174385701,-105.0328432,39.738465,-105.0334117,39.7376829
-506,500,501,0.0135415609654236,0.0135415609654236,-105.0016511,39.7130338,-105.0014928,39.7130323
-561,555,249,0.135203722470136,0.135203722470136,-104.9967877,39.6982448,-104.998368,39.698242
-11580,1888,1889,0.200666363671928,0.200666363671928,-105.0346054,39.7616798,-105.0322578,39.7616855
-15798,2349,2131,0.0298025813439396,0.0298025813439396,-105.0225811,39.7377111,-105.0228299,39.7378988
-539,533,534,0.0326127113197712,0.0326127113197712,-105.0123604,39.7549991,-105.0126456,39.7551939
-19790,4873,2223,0.160309891999679,0.160309891999679,-104.9724077,39.7351513,-104.972405,39.7337096
-19791,2223,939,0.184480311036498,0.184480311036498,-104.972405,39.7337096,-104.972385,39.7320506
-19793,6601,8056,0.176023947078255,0.176023947078255,-105.0008954,39.7320882,-105.0009061,39.7305052
-18090,1076,4197,0.0860162512015724,0.0860162512015724,-105.009052,39.7857306,-105.0081572,39.7853762
-19867,5588,10668,0.0462472353637014,0.0462472353637014,-105.0439294,39.7354289,-105.0433886,39.7354236
-19868,10668,3867,0.0484404910203503,0.0484404910203503,-105.0433886,39.7354236,-105.0428222,39.7354157
-16756,10007,10009,0.110124788745591,0.110124788745591,-104.9516233,39.6981848,-104.9506326,39.6988171
-20270,10704,10719,0.0406376536123098,0.0406376536123098,-105.0445781,39.7730214,-105.0441026,39.7730223
-20705,10912,9190,0.00712573261129369,0.00712573261129369,-105.0253734,39.7619406,-105.0253671,39.7620045
-18194,10279,8107,0.203288621260674,0.203288621260674,-105.0363572,39.7802082,-105.0363465,39.77838
-20434,10793,8352,0.0594105399024928,0.0594105399024928,-105.023633,39.7596708,-105.024257,39.7599061
-458,461,462,0.198429530791892,0.198429530791892,-104.9888564,39.7783921,-104.9880253,39.7800584
-460,463,464,0.0462542784573108,0.0462542784573108,-104.9733885,39.7038655,-104.9728479,39.7038584
-462,465,466,0.144675049024067,0.144675049024067,-104.939057,39.6947168,-104.9373661,39.6947234
-17120,4175,1798,0.171169073462998,0.171169073462998,-104.9775465,39.6932215,-104.9775097,39.6947606
-464,265,467,0.159364568867095,0.159364568867095,-104.9480386,39.6896766,-104.9480386,39.6911098
-18157,6034,6309,0.201831068920315,0.201831068920315,-105.0129545,39.7856166,-105.0129465,39.7874317
-4816,4421,3998,0.17545447475176,0.17545447475176,-105.0299945,39.7149702,-105.0299945,39.7165481
-4922,4493,4494,0.0159365819430951,0.0159365819430951,-105.0052303,39.740093,-105.0052335,39.7402363
-5210,4702,4703,0.066548442936564,0.066548442936564,-104.987569,39.7093263,-104.9883469,39.709334
-7813,6447,2400,0.0150551554736642,0.0150551554736642,-104.9404516,39.7737178,-104.9404255,39.7738517
-16544,814,7835,0.140306546265127,0.140306546265127,-104.9751505,39.753245,-104.975145,39.7519832
-12308,8643,8644,0.0690537561530006,0.0690537561530006,-105.0079172,39.7541523,-105.0077069,39.7535527
-17649,227,303,0.195568266331611,0.195568266331611,-104.9403515,39.7799498,-104.9380643,39.7800108
-7918,6517,6518,0.0762261509888863,0.0762261509888863,-104.9581176,39.6954589,-104.9581241,39.6947734
-17937,10218,10222,0.0404413602972235,0.0404413602972235,-104.9865379,39.7248787,-104.9867449,39.7252057
-17938,10222,10219,0.0368645715567014,0.0368645715567014,-104.9867449,39.7252057,-104.986739,39.7248742
-8128,6642,6643,0.177723704306915,0.177723704306915,-104.9985895,39.7273172,-104.998623,39.7289153
-17941,10223,10220,0.00249551892827132,0.00249551892827132,-104.9868558,39.7248491,-104.9868576,39.7248715
-17943,10222,10224,0.00241172243246435,0.00241172243246435,-104.9867449,39.7252057,-104.9867731,39.7252057
-8312,6745,6746,0.136482587401898,0.136482587401898,-105.0268172,39.7511856,-105.0268257,39.752413
-18754,7413,5870,0.17727401445854,0.17727401445854,-105.0403103,39.7165576,-105.0402918,39.7149634
-18755,5870,1322,0.17769011554913,0.17769011554913,-105.0402918,39.7149634,-105.0402863,39.7133654
-19718,10634,10631,0.0223829659698328,0.0223829659698328,-105.0040521,39.7345718,-105.0042586,39.7344481
-19728,5372,10636,0.0113147577104563,0.0113147577104563,-105.0036801,39.7337035,-105.0036962,39.7338045
-11655,8352,8354,0.0940321887930874,0.0940321887930874,-105.024257,39.7599061,-105.0236698,39.7606212
-12943,1331,8882,0.0183910567310257,0.0183910567310257,-105.0019226,39.7434049,-105.0018196,39.7432597
-13038,8921,8931,0.0826069320981336,0.0826069320981336,-104.9945399,39.7685832,-104.9953405,39.768167
-15877,9002,8833,0.267177283911404,0.267177283911404,-105.0410599,39.7349868,-105.0441417,39.7353828
-13924,219,9234,0.1533276461132,0.1533276461132,-104.9829912,39.6971378,-104.9818516,39.6960736
-14664,6543,4752,0.198706695176553,0.198706695176553,-104.9723281,39.7237476,-104.9723195,39.7219606
-14064,5103,7930,0.0939071679637344,0.0939071679637344,-104.9499914,39.7083084,-104.949883,39.707468
-15409,9587,9588,0.102439715732603,0.102439715732603,-105.0050252,39.740468,-105.0043197,39.7412126
-17271,7309,3269,0.20118551117184,0.20118551117184,-104.9622856,39.7020498,-104.962291,39.7038591
-19597,10581,10493,0.00740818165509206,0.00740818165509206,-104.9910581,39.7106676,-104.9911447,39.7106683
-17856,10198,10199,0.0985751913110846,0.0985751913110846,-104.9752368,39.7863791,-104.9742929,39.7858694
-17916,2362,5630,0.113519118424065,0.113519118424065,-104.9856171,39.719362,-104.9856145,39.7183411
-17920,5276,3075,0.102745112375949,0.102745112375949,-104.9856735,39.713872,-104.9856788,39.712948
-19227,10451,10452,0.0446144989444803,0.0446144989444803,-104.9904508,39.7418286,-104.9908137,39.7415403
-20035,10087,7837,0.13791526067504,0.13791526067504,-104.9739701,39.7507304,-104.9739674,39.7519707
-418,417,418,0.0816052997413777,0.0816052997413777,-104.9458794,39.7444723,-104.9449438,39.7443271
-20262,5750,10721,0.00796157509542264,0.00796157509542264,-105.0450566,39.7729489,-105.0450564,39.7730205
-3789,1821,3611,0.0958389453890581,0.0958389453890581,-104.9293577,39.7647208,-104.9293567,39.7655827
-3790,3611,2772,0.203476606019223,0.203476606019223,-104.9293567,39.7655827,-104.9293492,39.7674126
-3793,3613,3614,0.132946325644283,0.132946325644283,-104.9293234,39.7702164,-104.9293312,39.771412
-3796,3616,3617,0.204716112848492,0.204716112848492,-104.9804184,39.6930078,-104.9804371,39.6911668
-3797,3617,3618,0.195623928497501,0.195623928497501,-104.9804371,39.6911668,-104.98046,39.6894076
-427,426,427,0.387676950856037,0.387676950856037,-105.0252144,39.7427283,-105.028564,39.7403785
-429,428,429,0.0146752084107322,0.0146752084107322,-104.9949826,39.7671257,-104.9948109,39.7671257
-430,429,430,0.036859949213086,0.036859949213086,-104.9948109,39.7671257,-104.9943797,39.7671201
-431,430,431,0.0704161362424121,0.0704161362424121,-104.9943797,39.7671201,-104.9935559,39.7671283
-432,431,432,0.590519007108071,0.590519007108071,-104.9935559,39.7671283,-104.9902144,39.7717766
-4284,2975,658,0.052473064124837,0.052473064124837,-105.0299157,39.7585034,-105.0299141,39.7589753
-4286,1885,270,0.0500105419976734,0.0500105419976734,-105.0299322,39.7594122,-105.029923,39.7598619
-4287,270,4027,0.0498040073250557,0.0498040073250557,-105.029923,39.7598619,-105.0299108,39.7603097
-4288,4027,4028,0.0589001114271481,0.0589001114271481,-105.0299108,39.7603097,-105.0299124,39.7608394
-4289,4028,4029,0.0431017175700998,0.0431017175700998,-105.0299124,39.7608394,-105.0299179,39.761227
-4360,2497,4085,0.0418616206629569,0.0418616206629569,-105.0102009,39.7838273,-105.0106908,39.7838273
-4362,4086,4087,0.0498519055829618,0.0498519055829618,-105.0112057,39.7838279,-105.0117891,39.7838304
-4375,4097,4098,0.0489802870312836,0.0489802870312836,-105.0187521,39.7838972,-105.0193253,39.7838997
-4376,4098,4099,0.0495757400917575,0.0495757400917575,-105.0193253,39.7838997,-105.0199054,39.783907
-4377,4099,1289,0.0496665540814756,0.0496665540814756,-105.0199054,39.783907,-105.0204845,39.7839453
-4388,1566,4105,0.137573017409453,0.137573017409453,-104.9507995,39.7776799,-104.9507895,39.7789171
-4391,695,4107,0.201385149795677,0.201385149795677,-104.9512663,39.7419839,-104.9512653,39.743795
-4393,4108,4109,0.0199664273987825,0.0199664273987825,-104.9512465,39.7179366,-104.9511309,39.7180926
-14838,3410,8377,0.101986580237,0.101986580237,-105.034614,39.754856,-105.035807,39.7548626
-14839,8377,7446,0.0983251649921582,0.0983251649921582,-105.035807,39.7548626,-105.0369572,39.7548626
-14840,7446,7164,0.102406305295689,0.102406305295689,-105.0369572,39.7548626,-105.0381551,39.754855
-14842,7777,9006,0.0511080596626327,0.0511080596626327,-105.0393054,39.7548506,-105.0399032,39.754857
-14843,9006,1118,0.0498086503332092,0.0498086503332092,-105.0399032,39.754857,-105.0404858,39.7548633
-14844,1118,9427,0.0503946729534928,0.0503946729534928,-105.0404858,39.7548633,-105.0410753,39.7548663
-14845,9427,7495,0.0500441160343634,0.0500441160343634,-105.0410753,39.7548663,-105.0416607,39.7548692
-14846,7495,9428,0.0499148481472719,0.0499148481472719,-105.0416607,39.7548692,-105.0422446,39.7548692
-16340,8082,9873,0.204288977647072,0.204288977647072,-104.9430328,39.7615337,-104.9406644,39.7617801
-16284,2160,2852,0.333640243849923,0.333640243849923,-104.9704959,39.6950911,-104.972242,39.697774
-16319,7334,9870,0.105486497466828,0.105486497466828,-104.9548825,39.7619805,-104.9561166,39.7619811
-16320,9870,3330,0.104529154175209,0.104529154175209,-104.9561166,39.7619811,-104.9573395,39.7619816
-16321,3330,5008,0.105000246042652,0.105000246042652,-104.9573395,39.7619816,-104.9585679,39.7619857
-16322,5008,9871,0.101110660676404,0.101110660676404,-104.9585679,39.7619857,-104.9597508,39.7619888
-16323,9871,6279,0.105691817248501,0.105691817248501,-104.9597508,39.7619888,-104.9609873,39.7619907
-16324,6279,9872,0.052158145666091,0.052158145666091,-104.9609873,39.7619907,-104.9615975,39.7619888
-16325,9872,1044,0.0524997416021315,0.0524997416021315,-104.9615975,39.7619888,-104.9622117,39.7619898
-16326,1044,3906,0.105460879039182,0.105460879039182,-104.9622117,39.7619898,-104.9634455,39.7619888
-16329,5403,7356,0.10569318364656,0.10569318364656,-104.9659547,39.7619898,-104.9671912,39.761995
-16330,7356,6784,0.104889107310835,0.104889107310835,-104.9671912,39.761995,-104.9684183,39.7619991
-16331,6784,5124,0.210810768544514,0.210810768544514,-104.9684183,39.7619991,-104.9708846,39.7620022
-20721,9340,10905,0.00789820611305507,0.00789820611305507,-105.0251701,39.7620923,-105.0250777,39.7620918
-20723,10753,9339,0.007875732855517,0.007875732855517,-105.0250779,39.761939,-105.0251698,39.7619441
-20728,9342,9396,0.0106743790650573,0.0106743790650573,-105.02517,39.7633265,-105.0252844,39.763365
-20729,9396,10915,0.00762676803615786,0.00762676803615786,-105.0252844,39.763365,-105.0253686,39.7633877
-20731,10886,10916,0.00379288018005415,0.00379288018005415,-105.0396293,39.7653159,-105.0396012,39.7652895
-20732,10916,10888,0.0491926355480291,0.0491926355480291,-105.0396012,39.7652895,-105.0396012,39.7648471
-20733,10888,10897,0.0175392611655491,0.0175392611655491,-105.0396012,39.7648471,-105.039396,39.7648479
-20735,5884,5882,0.0407543500383345,0.0407543500383345,-105.026131,39.7635199,-105.0256867,39.7633869
-20739,10916,10896,0.0428179717864665,0.0428179717864665,-105.0396012,39.7652895,-105.0393975,39.7656413
-19515,10538,10539,0.0270370607457707,0.0270370607457707,-104.9881977,39.7087839,-104.9878821,39.7087971
-19519,10540,10541,0.0721562499053708,0.0721562499053708,-104.9885677,39.7101805,-104.9885837,39.7095317
-19520,6858,10542,0.00731747119062453,0.00731747119062453,-104.9894917,39.710249,-104.9894904,39.7101832
-19521,10542,10543,0.072308027249243,0.072308027249243,-104.9894904,39.7101832,-104.9895038,39.709533
-19641,10598,10599,0.0410277962156296,0.0410277962156296,-104.9881774,39.7071587,-104.9879173,39.7068487
-19647,10527,10603,0.00759964014854772,0.00759964014854772,-104.9883695,39.7068128,-104.9882807,39.7068108
-8,8,9,0.136291899256532,0.136291899256532,-105.0236282,39.746344,-105.0252223,39.7463521
-9,9,10,0.137589063327607,0.137589063327607,-105.0252223,39.7463521,-105.0268316,39.7463558
-10,10,11,0.132825874246234,0.132825874246234,-105.0268316,39.7463558,-105.0283851,39.746369
-18420,9372,1692,0.204432374496239,0.204432374496239,-105.0410671,39.769441,-105.0410724,39.7676025
-18421,1692,6881,0.204488584881531,0.204488584881531,-105.0410724,39.7676025,-105.0410645,39.7657635
-279,289,290,0.0346246156131069,0.0346246156131069,-105.0056941,39.7615954,-105.0053845,39.7613946
-280,290,291,0.0090342150661118,0.0090342150661118,-105.0053845,39.7613946,-105.0052999,39.7613459
-287,297,298,0.583705095697001,0.583705095697001,-104.999633,39.7829256,-105.0063925,39.7836829
-288,298,299,0.306214311798175,0.306214311798175,-105.0063925,39.7836829,-105.0099714,39.7835424
-290,300,106,0.00724031766776508,0.00724031766776508,-104.931659,39.700286,-104.931654,39.700221
-16839,9888,10020,0.0079899169832474,0.0079899169832474,-104.9706065,39.7033361,-104.9706252,39.7032657
-292,301,302,0.137922345506014,0.137922345506014,-104.9405292,39.7778793,-104.939982,39.7790462
-293,302,303,0.195856797695859,0.195856797695859,-104.939982,39.7790462,-104.9380643,39.7800108
-295,304,305,0.071509984134022,0.071509984134022,-105.0045998,39.7618374,-105.0052248,39.7614099
-296,305,291,0.00958395052624692,0.00958395052624692,-105.0052248,39.7614099,-105.0052999,39.7613459
-298,306,307,0.132706668323714,0.132706668323714,-105.029097,39.762348,-105.0279141,39.763121
-300,308,309,0.180558406302622,0.180558406302622,-105.0162105,39.7255543,-105.0183133,39.7254091
-13564,3088,497,0.0577004807279618,0.0577004807279618,-105.0149714,39.7291028,-105.0147909,39.7286028
-549,543,426,0.352446625998258,0.352446625998258,-105.0222025,39.7405643,-105.0252144,39.7427283
-552,546,547,0.162031197296959,0.162031197296959,-104.9250834,39.7051054,-104.926976,39.7050482
-555,549,550,0.0907371722674166,0.0907371722674166,-104.999187,39.7014274,-104.998222,39.701766
-16080,9284,9816,0.896094060874208,0.896094060874208,-104.9725733,39.7796422,-104.962098,39.7800102
-922,936,937,0.0492564901299232,0.0492564901299232,-104.9740886,39.7320473,-104.9735126,39.732045
-923,937,938,0.0472982580528762,0.0472982580528762,-104.9735126,39.732045,-104.9729595,39.7320427
-924,938,939,0.0491354084196454,0.0491354084196454,-104.9729595,39.7320427,-104.972385,39.7320506
-925,939,940,0.0508720309451131,0.0508720309451131,-104.972385,39.7320506,-104.9717901,39.7320505
-926,940,941,0.0492045261244582,0.0492045261244582,-104.9717901,39.7320505,-104.9712147,39.7320508
-928,942,943,0.0497647165539241,0.0497647165539241,-104.9706365,39.7320717,-104.9700547,39.7320615
-929,943,944,0.0490705088651407,0.0490705088651407,-104.9700547,39.7320615,-104.969481,39.732052
-930,944,945,0.0603455693296164,0.0603455693296164,-104.969481,39.732052,-104.9687757,39.7320341
-931,946,947,0.0401316151990327,0.0401316151990327,-104.954535,39.732087,-104.9540658,39.7320945
-933,948,949,0.0998226264147839,0.0998226264147839,-104.9528876,39.7321058,-104.9517203,39.7320992
-934,949,950,0.0983576522120727,0.0983576522120727,-104.9517203,39.7320992,-104.9505701,39.7320992
-15935,9756,9757,0.156652526688463,0.156652526688463,-104.9962839,39.7001148,-104.9945244,39.7005048
-2725,2680,2681,0.0108684198063562,0.0108684198063562,-104.9781521,39.7512002,-104.9782507,39.7512619
-2726,2681,2682,0.048953084737917,0.048953084737917,-104.9782507,39.7512619,-104.9786543,39.7515742
-2727,2682,2683,0.0539629704453868,0.0539629704453868,-104.9786543,39.7515742,-104.9790985,39.751919
-2728,2683,2684,0.0523967582185389,0.0523967582185389,-104.9790985,39.751919,-104.9795298,39.7522538
-2730,2685,2686,0.0561874543205358,0.0561874543205358,-104.9799803,39.7525937,-104.9804627,39.7529369
-2731,2686,2687,0.0505746825733151,0.0505746825733151,-104.9804627,39.7529369,-104.9808835,39.7532566
-2732,2687,2688,0.0532702991765301,0.0532702991765301,-104.9808835,39.7532566,-104.9813184,39.7535997
-2733,2688,2689,0.0520434204860384,0.0520434204860384,-104.9813184,39.7535997,-104.9817462,39.7539327
-2734,2689,2690,0.0469426670134342,0.0469426670134342,-104.9817462,39.7539327,-104.9821311,39.7542338
-2735,2690,2691,0.0055983554055492,0.0055983554055492,-104.9821311,39.7542338,-104.9821794,39.7542678
-2736,2691,2692,0.0527791994653692,0.0527791994653692,-104.9821794,39.7542678,-104.9826233,39.7545977
-2737,2692,2693,0.0530982869497539,0.0530982869497539,-104.9826233,39.7545977,-104.9830605,39.7549369
-2738,2693,2694,0.0517656440902012,0.0517656440902012,-104.9830605,39.7549369,-104.9834919,39.7552636
-2740,2695,2696,0.0564222695417846,0.0564222695417846,-104.9839243,39.7555928,-104.984388,39.7559539
-2741,2696,2697,0.0491123681137852,0.0491123681137852,-104.984388,39.7559539,-104.9847927,39.7562674
-2743,2698,2563,0.102019026624601,0.102019026624601,-104.9872963,39.7637011,-104.9865077,39.7643898
-2745,2699,2700,0.132875620799413,0.132875620799413,-105.023737,39.7729356,-105.0236369,39.7741281
-2746,2700,2701,0.135383174760531,0.135383174760531,-105.0236369,39.7741281,-105.0236677,39.7753454
-2747,2701,2702,0.142428760025563,0.142428760025563,-105.0236677,39.7753454,-105.0236021,39.7766253
-2749,2703,2704,0.0110418183352839,0.0110418183352839,-105.0229204,39.7607336,-105.0229197,39.7608329
-3232,1186,3146,0.0222724242580952,0.0222724242580952,-104.9648143,39.7271028,-104.9648136,39.7273031
-3233,3146,3147,0.199414112058729,0.199414112058729,-104.9648136,39.7273031,-104.9648461,39.7290963
-3235,3148,3149,0.202164772668483,0.202164772668483,-104.9651624,39.7219764,-104.9651708,39.7201583
-3236,3149,3150,0.200873635711822,0.200873635711822,-104.9651708,39.7201583,-104.9651706,39.7183518
-3238,1549,3151,0.20099284178908,0.20099284178908,-104.9813041,39.7765427,-104.9812831,39.7783502
-3239,3151,284,0.102708547785912,0.102708547785912,-104.9812831,39.7783502,-104.9813127,39.7792736
-3241,3152,3153,0.190699299195112,0.190699299195112,-104.981211,39.7801495,-104.981211,39.7818645
-3242,3153,3154,0.20682256355895,0.20682256355895,-104.981211,39.7818645,-104.981211,39.7837245
-3244,3155,3156,0.180582058742099,0.180582058742099,-104.9811238,39.7224897,-104.9811324,39.7241137
-3245,3156,3157,0.169576673169674,0.169576673169674,-104.9811324,39.7241137,-104.9811181,39.7256387
-3246,3157,3158,0.182296097160239,0.182296097160239,-104.9811181,39.7256387,-104.9811306,39.7272781
-3247,3158,3159,0.198872141197801,0.198872141197801,-104.9811306,39.7272781,-104.9811297,39.7290666
-3248,3159,3160,0.150969541792736,0.150969541792736,-104.9811297,39.7290666,-104.9811325,39.7304243
-3250,3161,3162,0.20389937284006,0.20389937284006,-104.9814586,39.7164952,-104.9814669,39.7183289
-14826,8301,6748,0.0667725814392886,0.0667725814392886,-105.0260395,39.7548296,-105.0268206,39.7548296
-14827,6748,7911,0.0672145953526644,0.0672145953526644,-105.0268206,39.7548296,-105.0276068,39.7548215
-14828,7911,6148,0.0663282745787247,0.0663282745787247,-105.0276068,39.7548215,-105.0283827,39.754823
-258,257,266,0.0587628088830451,0.0587628088830451,-104.9487596,39.6897096,-104.9494463,39.6897162
-19749,647,7274,0.134298165118703,0.134298165118703,-104.9337694,39.7413613,-104.9337866,39.742569
-19750,7274,1989,0.0916188684792704,0.0916188684792704,-104.9337866,39.742569,-104.933775,39.7433929
-19751,1989,1973,0.0380843237979454,0.0380843237979454,-104.933775,39.7433929,-104.9337742,39.7437354
-19752,1973,4593,0.133556226393108,0.133556226393108,-104.9337742,39.7437354,-104.9337742,39.7449365
-19753,4593,6480,0.132288869732613,0.132288869732613,-104.9337742,39.7449365,-104.9337711,39.7461262
-19754,6480,2468,0.142585895231316,0.142585895231316,-104.9337711,39.7461262,-104.9337661,39.7474085
-19758,9421,959,0.172665861332853,0.172665861332853,-104.9434425,39.7336457,-104.9434319,39.7320929
-19759,959,10645,0.13147788241291,0.13147788241291,-104.9434319,39.7320929,-104.9434259,39.7309105
-19760,1208,9304,0.168127340065809,0.168127340065809,-104.9434426,39.7271196,-104.9434479,39.7256076
-20582,10869,10849,0.0156424449925145,0.0156424449925145,-105.0248912,39.7612876,-105.0250742,39.7612881
-19762,9148,5948,0.203948884455816,0.203948884455816,-104.9327781,39.7292306,-104.9327968,39.7310647
-19763,5948,5140,0.230511938313211,0.230511938313211,-104.9327968,39.7310647,-104.9325581,39.7331296
-19771,9419,957,0.173152824232778,0.173152824232778,-104.944537,39.7336514,-104.944539,39.7320942
-19772,957,8866,0.177567389214567,0.177567389214567,-104.944539,39.7320942,-104.9445422,39.7304973
-19773,8866,3772,0.153916736097948,0.153916736097948,-104.9445422,39.7304973,-104.9445477,39.7291131
-19774,3772,10250,0.199306990270457,0.199306990270457,-104.9445477,39.7291131,-104.9445396,39.7273207
-19776,5481,9962,0.172319939483889,0.172319939483889,-104.9592702,39.7383938,-104.9592628,39.7399435
-19784,10633,5611,0.0523352586472612,0.0523352586472612,-105.0021797,39.732604,-105.0015677,39.7326006
-19785,5611,10632,0.0574818788883128,0.0574818788883128,-105.0015677,39.7326006,-105.0008955,39.7325996
-19786,10632,3948,0.0628606527024246,0.0628606527024246,-105.0008955,39.7325996,-105.0001604,39.7325985
-19788,5471,9476,0.170862748175182,0.170862748175182,-104.9724345,39.7384108,-104.9724291,39.7368742
-19795,10242,7118,0.176747024157438,0.176747024157438,-104.9976043,39.7336771,-104.9975929,39.7352666
-19797,10241,6597,0.176287163937986,0.176287163937986,-104.9971028,39.7336811,-104.9970197,39.732097
-19798,6597,8052,0.177501084527478,0.177501084527478,-104.9970197,39.732097,-104.9970142,39.7305007
-19799,8052,8772,0.17769668863416,0.17769668863416,-104.9970142,39.7305007,-104.9969955,39.7289027
-20115,7697,7687,0.0337511699796145,0.0337511699796145,-104.9476781,39.7401632,-104.9472834,39.7401592
-19903,5589,10662,0.0571161687994488,0.0571161687994488,-105.0439287,39.736644,-105.0445966,39.7366511
-19904,10662,7532,0.0504117571952022,0.0504117571952022,-105.0445966,39.7366511,-105.0451861,39.7366574
-19905,7532,10677,0.0997820208770486,0.0997820208770486,-105.0451861,39.7366574,-105.0463515,39.7367034
-19909,2313,6581,0.0799825399923036,0.0799825399923036,-105.0128687,39.7314768,-105.0128679,39.7321961
-19911,9640,7119,0.178268282456568,0.178268282456568,-104.998165,39.7368735,-104.9981597,39.7352703
-19912,7119,10244,0.176467674531692,0.176467674531692,-104.9981597,39.7352703,-104.9981677,39.7336833
-19924,625,10679,0.208701850480872,0.208701850480872,-105.0357989,39.7365856,-105.0358012,39.7384625
-3596,897,3446,0.139044776802754,0.139044776802754,-104.9462766,39.7644635,-104.9462506,39.7657138
-3598,2803,3447,0.126707874592684,0.126707874592684,-104.9462404,39.7669537,-104.9462338,39.7680932
-3599,3447,3448,0.123301295397385,0.123301295397385,-104.9462338,39.7680932,-104.9462506,39.769202
-3601,3449,3450,0.173676950071542,0.173676950071542,-104.9461482,39.7162465,-104.9461569,39.7178084
-3602,3450,2355,0.178205364659248,0.178205364659248,-104.9461569,39.7178084,-104.9461715,39.719411
-3603,2355,3451,0.173197360497638,0.173197360497638,-104.9461715,39.719411,-104.9461741,39.7209686
-19562,10565,7475,0.0791516149409225,0.0791516149409225,-104.9895118,39.7091548,-104.9897492,39.7084668
-3604,3451,3452,0.173541943088937,0.173541943088937,-104.9461741,39.7209686,-104.9461731,39.7225293
-17079,9872,1162,0.139149030623918,0.139149030623918,-104.9615975,39.7619888,-104.9615772,39.7632401
-3605,3452,3453,0.1769778659128,0.1769778659128,-104.9461731,39.7225293,-104.9461741,39.7241209
-3606,3453,3454,0.165627970000561,0.165627970000561,-104.9461741,39.7241209,-104.946186,39.7256104
-3607,3454,1205,0.168543363105219,0.168543363105219,-104.946186,39.7256104,-104.9462015,39.7271261
-3608,1205,3455,0.0221544930319224,0.0221544930319224,-104.9462015,39.7271261,-104.9461963,39.7273253
-3609,3455,3456,0.199430319568372,0.199430319568372,-104.9461963,39.7273253,-104.9461853,39.7291188
-3610,3456,3457,0.153671457388635,0.153671457388635,-104.9461853,39.7291188,-104.946187,39.7305008
-3611,3457,954,0.177011997745418,0.177011997745418,-104.946187,39.7305008,-104.9461808,39.7320927
-3616,3461,3023,0.066721008314693,0.066721008314693,-104.9461758,39.7383438,-104.9461672,39.7389438
-3617,3023,609,0.0626815132610695,0.0626815132610695,-104.9461672,39.7389438,-104.9461712,39.7395075
-3618,609,3465,0.0706324711687883,0.0706324711687883,-104.9461712,39.7395075,-104.9461659,39.7401427
-3620,3466,3467,0.0872559719077514,0.0872559719077514,-104.9459057,39.7609696,-104.9459001,39.7617543
-3621,3467,3468,0.0185752884131515,0.0185752884131515,-104.9459001,39.7617543,-104.9458947,39.7619213
-3624,3470,3471,0.137381540377109,0.137381540377109,-104.9464883,39.7557063,-104.9464855,39.7569418
-3625,3471,3472,0.139227388345715,0.139227388345715,-104.9464855,39.7569418,-104.9464826,39.7581939
-3627,3473,2394,0.0888475437763938,0.0888475437763938,-104.9464666,39.7730919,-104.9464482,39.7738908
-3628,2394,3474,0.138668820339117,0.138668820339117,-104.9464482,39.7738908,-104.9464139,39.7751376
-3630,752,1572,0.142095074047717,0.142095074047717,-104.9464409,39.77641,-104.9464121,39.7776877
-3636,1922,3478,0.201186325897418,0.201186325897418,-104.9639994,39.7074818,-104.9639908,39.7056725
-3639,3479,78,0.204132972246117,0.204132972246117,-104.9639986,39.7020562,-104.9640072,39.7002204
-3640,78,3480,0.203867249894849,0.203867249894849,-104.9640072,39.7002204,-104.9640443,39.6983872
-3641,3480,3481,0.201309535256297,0.201309535256297,-104.9640443,39.6983872,-104.9640554,39.6965768
-3642,3481,3482,0.20059690465602,0.20059690465602,-104.9640554,39.6965768,-104.9640471,39.6947728
-3643,3482,3483,0.19983968701354,0.19983968701354,-104.9640471,39.6947728,-104.9640501,39.6929756
-3645,3484,3485,0.206291326448342,0.206291326448342,-104.9640755,39.691151,-104.9637153,39.6893166
-17801,8859,9953,0.0450786858997054,0.0450786858997054,-104.9873914,39.7526692,-104.9873896,39.7522638
-3647,1956,3486,0.372627158727207,0.372627158727207,-104.9295943,39.7085824,-104.9294222,39.7052339
-3649,3487,3488,0.176001514646942,0.176001514646942,-104.9293078,39.7162471,-104.9293331,39.7146644
-3652,3491,3492,0.0183360753269697,0.0183360753269697,-104.9293114,39.7113416,-104.929311,39.7111767
-3653,3492,1957,0.294352299971408,0.294352299971408,-104.929311,39.7111767,-104.9292853,39.7085296
-3655,1514,1794,0.180158106731211,0.180158106731211,-104.9278643,39.6960978,-104.9284394,39.6945392
-3657,3493,3494,0.410250831833552,0.410250831833552,-104.9285338,39.6930004,-104.9293234,39.6893613
-3658,3494,3495,0.80930180387284,0.80930180387284,-104.9293234,39.6893613,-104.929634,39.682087
-3660,3497,3498,0.0969369694749486,0.0969369694749486,-104.9488372,39.6983858,-104.9477042,39.6983792
-3661,3498,3499,0.0991356893770485,0.0991356893770485,-104.9477042,39.6983792,-104.9465455,39.6983726
-3662,3499,3500,0.0998795294298673,0.0998795294298673,-104.9465455,39.6983726,-104.9453782,39.6983858
-3663,3500,3501,0.0512305304785401,0.0512305304785401,-104.9453782,39.6983858,-104.9447794,39.6983858
-3664,3501,3502,0.04790242821524,0.04790242821524,-104.9447794,39.6983858,-104.9442195,39.6983858
-3665,3502,3503,0.0976724268185372,0.0976724268185372,-104.9442195,39.6983858,-104.943078,39.698399
-3666,3503,3504,0.099556042023676,0.099556042023676,-104.943078,39.698399,-104.9419144,39.6983911
-3667,3504,3505,0.0928685437479174,0.0928685437479174,-104.9419144,39.6983911,-104.940829,39.698381
-3668,3505,3506,0.0161263903021828,0.0161263903021828,-104.940829,39.698381,-104.9406406,39.6983765
-3670,3507,3508,0.0452502277318962,0.0452502277318962,-104.9686775,39.698382,-104.9681486,39.6983823
-3673,3510,3511,0.00276384344441178,0.00276384344441178,-104.9675508,39.6983827,-104.9675186,39.6983807
-3674,3511,3512,0.10075109326777,0.10075109326777,-104.9675186,39.6983807,-104.966341,39.698385
-3675,3512,3513,0.0463453549611142,0.0463453549611142,-104.966341,39.698385,-104.9657993,39.6983855
-3676,3513,3514,0.0488777906121745,0.0488777906121745,-104.9657993,39.6983855,-104.965228,39.698386
-3677,3514,3515,0.0517011274556552,0.0517011274556552,-104.965228,39.698386,-104.9646237,39.6983866
-3678,3515,3480,0.0495708012211316,0.0495708012211316,-104.9646237,39.6983866,-104.9640443,39.6983872
-3679,3480,3516,0.0493402083699287,0.0493402083699287,-104.9640443,39.6983872,-104.9634676,39.6983891
-3680,3516,3517,0.0507690156276584,0.0507690156276584,-104.9634676,39.6983891,-104.9628742,39.6983911
-3681,3517,3518,0.0480408906902884,0.0480408906902884,-104.9628742,39.6983911,-104.9623127,39.6983876
-3682,3518,3519,0.0499402493817724,0.0499402493817724,-104.9623127,39.6983876,-104.961729,39.698384
-3683,3519,3520,0.0491944164243011,0.0491944164243011,-104.961729,39.698384,-104.961154,39.6983849
-3685,3521,3522,0.048707440700188,0.048707440700188,-104.9605624,39.6983858,-104.9599931,39.6983883
-3686,3522,3523,0.0553123927733894,0.0553123927733894,-104.9599931,39.6983883,-104.9593466,39.6983911
-3688,3524,3525,0.0491959341758901,0.0491959341758901,-104.9586741,39.6983954,-104.9580991,39.698399
-3689,3525,3526,0.0471666433723512,0.0471666433723512,-104.9580991,39.698399,-104.9575478,39.698399
-3690,3526,3527,0.0512305206815533,0.0512305206815533,-104.9575478,39.698399,-104.956949,39.698399
-3693,2737,3529,0.051933950168584,0.051933950168584,-104.9558324,39.6983924,-104.9552447,39.6982755
-3694,3529,3530,0.02212553176718,0.02212553176718,-104.9552447,39.6982755,-104.9550292,39.6981655
-3695,3530,3531,0.0926927616463166,0.0926927616463166,-104.9550292,39.6981655,-104.954611,39.6973965
-3698,3533,3534,0.0505032949697016,0.0505032949697016,-104.982132,39.6984066,-104.9815417,39.6984066
-3699,3534,3535,0.0486395723695605,0.0486395723695605,-104.9815417,39.6984066,-104.9809732,39.6984099
-3700,3535,3536,0.0490245580059416,0.0490245580059416,-104.9809732,39.6984099,-104.9804002,39.6984132
-3701,3536,3537,0.0505772192147856,0.0505772192147856,-104.9804002,39.6984132,-104.9798091,39.6984199
-3703,3538,3540,0.0504276967004131,0.0504276967004131,-104.9792415,39.6984264,-104.9786521,39.6984298
-3705,3541,3542,0.0472106572615262,0.0472106572615262,-104.9780828,39.698433,-104.977531,39.6984299
-3706,3542,1776,0.0526607102662498,0.0526607102662498,-104.977531,39.6984299,-104.9769155,39.6984264
-3707,1776,3543,0.0501355164587406,0.0501355164587406,-104.9769155,39.6984264,-104.9763295,39.6984254
-3708,3543,3545,0.0479683302933595,0.0479683302933595,-104.9763295,39.6984254,-104.9757691,39.698412
-3709,3545,3546,0.0512089379810606,0.0512089379810606,-104.9757691,39.698412,-104.9751709,39.6984277
-3712,3547,3548,0.0501783172118128,0.0501783172118128,-104.9739907,39.6984301,-104.9734042,39.698429
-3714,3549,3550,0.0951894457465396,0.0951894457465396,-104.932762,39.698444,-104.931651,39.698398
-3716,3374,3551,0.137804864391147,0.137804864391147,-104.9240963,39.6988121,-104.9226973,39.6994263
-3717,3552,3553,0.0519171995444708,0.0519171995444708,-104.9769434,39.7546258,-104.9763361,39.7546219
-3718,3553,3554,0.0504125238991067,0.0504125238991067,-104.9763361,39.7546219,-104.9757464,39.7546182
-3719,3554,3555,0.0509345511135035,0.0509345511135035,-104.9757464,39.7546182,-104.9751506,39.7546225
-3720,3555,3556,0.0352813695033733,0.0352813695033733,-104.9751506,39.7546225,-104.9747379,39.7546254
-3721,3556,3557,0.0165592866582096,0.0165592866582096,-104.9747379,39.7546254,-104.9745442,39.7546268
-3722,3557,3558,0.0492318634139881,0.0492318634139881,-104.9745442,39.7546268,-104.9739683,39.7546244
-3724,2895,3559,0.10435477566087,0.10435477566087,-104.9733531,39.7545278,-104.9721334,39.7544893
-3725,3559,3560,0.106943183049813,0.106943183049813,-104.9721334,39.7544893,-104.9708824,39.7544863
-3726,3560,3561,0.104660660979737,0.104660660979737,-104.9708824,39.7544863,-104.9696581,39.7544835
-3727,3561,3562,0.110121719044693,0.110121719044693,-104.9696581,39.7544835,-104.9683703,39.7544592
-3728,3562,3563,0.102966459525542,0.102966459525542,-104.9683703,39.7544592,-104.9671659,39.7544703
-3730,3564,3565,0.0562722873891167,0.0562722873891167,-104.9659688,39.7544499,-104.9653106,39.7544428
-3735,3568,3569,0.0531044201649232,0.0531044201649232,-104.9616097,39.7544552,-104.9609889,39.7544725
-3736,3569,3570,0.106391147104451,0.106391147104451,-104.9609889,39.7544725,-104.9597446,39.7544534
-3737,3570,3571,0.101252017782574,0.101252017782574,-104.9597446,39.7544534,-104.9585602,39.75446
-3738,3571,3323,0.106405710576167,0.106405710576167,-104.9585602,39.75446,-104.9573156,39.7544732
-3739,3323,3572,0.102008288172629,0.102008288172629,-104.9573156,39.7544732,-104.9561226,39.7544534
-3740,3572,3573,0.10165616841443,0.10165616841443,-104.9561226,39.7544534,-104.954935,39.7545002
-3741,3573,2074,0.102582871487582,0.102582871487582,-104.954935,39.7545002,-104.953735,39.7545002
-3742,2074,2671,0.108231570849142,0.108231570849142,-104.953735,39.7545002,-104.9524691,39.7544839
-3743,2671,3574,0.10456159833902,0.10456159833902,-104.9524691,39.7544839,-104.951246,39.7544757
-5002,115,4548,0.0219059413647985,0.0219059413647985,-105.0217118,39.7303058,-105.0217136,39.7305028
-3744,3574,3575,0.112649473969198,0.112649473969198,-104.951246,39.7544757,-104.9499292,39.7544371
-3748,3469,3578,0.102738780677217,0.102738780677217,-104.9464912,39.7544409,-104.9452895,39.7544277
-3751,848,3580,0.194594151891157,0.194594151891157,-104.9429842,39.7544341,-104.9407092,39.754494
-3780,799,3582,0.202016106794537,0.202016106794537,-104.9293286,39.7528556,-104.92935,39.7546723
-3753,3581,3583,0.0933177632696428,0.0933177632696428,-104.9405163,39.7545798,-104.9394304,39.7546656
-3756,3586,3587,0.0427524561216555,0.0427524561216555,-105.0238257,39.7607202,-105.0243209,39.7607742
-20307,3851,3852,0.0199150113624835,0.0199150113624835,-105.0428243,39.7763674,-105.0428243,39.7765465
-3757,3587,3588,0.00652614157776479,0.00652614157776479,-105.0243209,39.7607742,-105.0243965,39.7607824
-3758,3588,3589,0.0165416326790114,0.0165416326790114,-105.0243965,39.7607824,-105.0245881,39.7608033
-3759,3589,3590,0.0292914453635219,0.0292914453635219,-105.0245881,39.7608033,-105.0249274,39.7608402
-3760,3590,3591,0.012398142936734,0.012398142936734,-105.0249274,39.7608402,-105.025071,39.7608559
-3761,3591,3592,0.00808918004643223,0.00808918004643223,-105.025071,39.7608559,-105.0251647,39.7608661
-3762,3592,3593,0.0105968786869326,0.0105968786869326,-105.0251647,39.7608661,-105.0252868,39.7608826
-3764,3487,3594,0.175200690864457,0.175200690864457,-104.9293078,39.7162471,-104.9293175,39.7178227
-17310,5684,5685,0.200644913348264,0.200644913348264,-104.9611511,39.6947781,-104.9611673,39.6929737
-3765,3594,2339,0.174981229925885,0.174981229925885,-104.9293175,39.7178227,-104.9293022,39.7193963
-3768,3596,3597,0.239259126523314,0.239259126523314,-104.9293972,39.7231683,-104.9294053,39.72532
-3770,1985,1969,0.0388238770836811,0.0388238770836811,-104.9301272,39.7433797,-104.930135,39.7437288
-3771,1969,3598,0.103685036459381,0.103685036459381,-104.930135,39.7437288,-104.9301576,39.7446611
-3772,3598,3599,0.103278210249803,0.103278210249803,-104.9301576,39.7446611,-104.9301608,39.7455899
-3774,3600,685,0.204822140654993,0.204822140654993,-104.9297917,39.7401253,-104.9297839,39.7419673
-3775,685,1984,0.157051714392723,0.157051714392723,-104.9297839,39.7419673,-104.9297839,39.7433797
-3777,2473,3601,0.204732098938096,0.204732098938096,-104.9293385,39.7474063,-104.9293385,39.7492475
-3778,3601,3602,0.203258463693205,0.203258463693205,-104.9293385,39.7492475,-104.9293214,39.7510754
-3779,3602,799,0.197950165384785,0.197950165384785,-104.9293214,39.7510754,-104.9293286,39.7528556
-3781,3582,3603,0.209363914186111,0.209363914186111,-104.92935,39.7546723,-104.9293903,39.7565549
-3782,3603,3604,0.202974468009462,0.202974468009462,-104.9293903,39.7565549,-104.9293663,39.7583802
-3783,3604,3063,0.201030651985273,0.201030651985273,-104.9293663,39.7583802,-104.9293577,39.7601881
-3784,3063,3605,0.183452467298283,0.183452467298283,-104.9293577,39.7601881,-104.9293844,39.7618378
-3785,3605,3609,0.0173247613422977,0.0173247613422977,-104.9293844,39.7618378,-104.9293603,39.7619925
-3786,3609,3610,0.100167424900963,0.100167424900963,-104.9293603,39.7619925,-104.9293406,39.7628932
-3787,3610,1148,0.0998182719974527,0.0998182719974527,-104.9293406,39.7628932,-104.9293749,39.7637905
-3798,3618,3619,1.41244277904247,1.41244277904247,-104.98046,39.6894076,-104.9804715,39.6767052
-3799,3620,3621,0.200419085699923,0.200419085699923,-104.9803501,39.716491,-104.9803587,39.7146886
-3800,3621,3083,0.197049820413636,0.197049820413636,-104.9803587,39.7146886,-104.9803943,39.7129167
-3806,3250,3625,0.214852973763206,0.214852973763206,-104.9804174,39.7039537,-104.9804286,39.7020215
-3807,3625,37,0.19341482884534,0.19341482884534,-104.9804286,39.7020215,-104.9804174,39.7002821
-3808,37,3536,0.207817408343139,0.207817408343139,-104.9804174,39.7002821,-104.9804002,39.6984132
-3809,3536,3626,0.197537787183869,0.197537787183869,-104.9804002,39.6984132,-104.9804002,39.6966367
-3810,3626,3627,0.0725803332096263,0.0725803332096263,-104.9804002,39.6966367,-104.9805353,39.6959923
-3812,3628,3629,0.0377891893344826,0.0377891893344826,-104.9558725,39.7153466,-104.9554348,39.7153004
-3814,3630,108,0.222508950073657,0.222508950073657,-104.9286229,39.7018847,-104.9272013,39.700209
-3815,108,3631,0.48374336677931,0.48374336677931,-104.9272013,39.700209,-104.9237198,39.6967811
-3816,3631,3632,1.29923590650812,1.29923590650812,-104.9237198,39.6967811,-104.9115603,39.6897825
-17118,3959,510,0.232935824119298,0.232935824119298,-104.957513,39.7479253,-104.9547886,39.7479501
-4428,4136,4137,0.173313517100692,0.173313517100692,-104.9505787,39.7367922,-104.9506214,39.7383505
-4429,4137,4138,0.202530185785573,0.202530185785573,-104.9506214,39.7383505,-104.9506563,39.7401717
-18158,6309,10170,0.40356001102466,0.40356001102466,-105.0129465,39.7874317,-105.0129519,39.791061
-4432,2389,4140,0.139183902890425,0.139183902890425,-104.950844,39.7738769,-104.9508372,39.7751286
-4434,4141,4142,0.197054107936505,0.197054107936505,-104.982643,39.7165018,-104.9827054,39.7147303
-4438,4144,4145,0.0537117632250494,0.0537117632250494,-104.9856225,39.7209124,-104.9849945,39.7209102
-4439,4145,965,0.101471161400112,0.101471161400112,-104.9849945,39.7209102,-104.9838084,39.7209313
-4440,965,4146,0.104100628512796,0.104100628512796,-104.9838084,39.7209313,-104.9825915,39.7209119
-4441,4146,3163,0.0969051144320847,0.0969051144320847,-104.9825915,39.7209119,-104.9814586,39.7208987
-4442,3163,4147,0.101372524256092,0.101372524256092,-104.9814586,39.7208987,-104.9802738,39.7209242
-4443,4147,4148,0.0308326213261154,0.0308326213261154,-104.9802738,39.7209242,-104.9799133,39.7209242
-4445,3914,1051,0.113795014444698,0.113795014444698,-104.9633401,39.7209669,-104.9620097,39.7209801
-4446,1051,4149,0.10964029932362,0.10964029932362,-104.9620097,39.7209801,-104.9607278,39.7209872
-4449,4151,3345,0.104243278330047,0.104243278330047,-104.9582358,39.7209729,-104.957017,39.7209795
-4451,4152,4153,0.102419695022811,0.102419695022811,-104.9558113,39.720983,-104.9546138,39.7209795
-4452,4153,2058,0.103354746635848,0.103354746635848,-104.9546138,39.7209795,-104.9534054,39.7209872
-4453,2058,2644,0.104156201229462,0.104156201229462,-104.9534054,39.7209872,-104.9521876,39.720983
-4454,2644,4110,0.102077109293643,0.102077109293643,-104.9521876,39.720983,-104.9509941,39.7209851
-5804,5122,5123,0.00520045876973269,0.00520045876973269,-104.9708892,39.7607101,-104.9708859,39.7607568
-4455,4110,4154,0.102551400025576,0.102551400025576,-104.9509941,39.7209851,-104.9497951,39.7209768
-4458,4156,3451,0.102085683319337,0.102085683319337,-104.9473677,39.7209707,-104.9461741,39.7209686
-4459,3451,4157,0.103915702611829,0.103915702611829,-104.9461741,39.7209686,-104.9449591,39.7209686
-4460,4157,3881,0.104147627332173,0.104147627332173,-104.9449591,39.7209686,-104.9437414,39.7209645
-4461,3881,844,0.102547271473588,0.102547271473588,-104.9437414,39.7209645,-104.9425424,39.7209645
-4462,844,4158,0.103915708789956,0.103915708789956,-104.9425424,39.7209645,-104.9413274,39.7209645
-4463,4158,4159,0.0473715373473714,0.0473715373473714,-104.9413274,39.7209645,-104.9407748,39.7209356
-4465,4160,4161,0.0487952389865543,0.0487952389865543,-104.977542,39.720117,-104.9769715,39.7201202
-4466,4161,4162,0.0503092120983125,0.0503092120983125,-104.9769715,39.7201202,-104.9763833,39.7201236
-4467,4162,4163,0.0998399649224705,0.0998399649224705,-104.9763833,39.7201236,-104.975216,39.7201302
-4470,991,4165,0.0616573964011522,0.0616573964011522,-104.9740667,39.720134,-104.9733458,39.720134
-4471,4165,4166,0.0374515064164708,0.0374515064164708,-104.9733458,39.720134,-104.972908,39.7201406
-4472,4166,4167,0.0500586202169859,0.0500586202169859,-104.972908,39.7201406,-104.9723279,39.7200808
-4473,4167,4168,0.0490747432154895,0.0490747432154895,-104.9723279,39.7200808,-104.9717542,39.7200883
-4474,4168,1546,0.0500170304502106,0.0500170304502106,-104.9717542,39.7200883,-104.9711694,39.7200886
-4475,1546,4169,0.0485801531295538,0.0485801531295538,-104.9711694,39.7200886,-104.9706014,39.7200889
-5773,5098,5099,0.136491222225544,0.136491222225544,-104.9779272,39.6923695,-104.9781101,39.6911501
-4479,4171,4172,0.0171013114970861,0.0171013114970861,-104.9681062,39.7200857,-104.9679063,39.7200823
-4480,4172,4173,0.100095278405447,0.100095278405447,-104.9679063,39.7200823,-104.966736,39.720087
-4481,4173,4174,0.0193707742575379,0.0193707742575379,-104.966736,39.720087,-104.9665271,39.7201543
-4482,4174,3125,0.0983746933912928,0.0983746933912928,-104.9665271,39.7201543,-104.9653769,39.7201543
-4483,3125,3149,0.017633000291927,0.017633000291927,-104.9653769,39.7201543,-104.9651708,39.7201583
-4485,3759,1483,0.205504619788951,0.205504619788951,-104.9912414,39.6966624,-104.9913183,39.6948152
-4486,1483,139,0.199306955290764,0.199306955290764,-104.9913183,39.6948152,-104.991354,39.693023
-3818,3634,3635,0.193271661183235,0.193271661183235,-104.9444999,39.7082421,-104.9460363,39.7095165
-3844,50,2744,0.0297683374213274,0.0297683374213274,-104.9541194,39.7002037,-104.9541587,39.6999377
-3819,3635,3636,0.259071020170312,0.259071020170312,-104.9460363,39.7095165,-104.9481992,39.7111474
-3820,3636,3637,0.220352934884474,0.220352934884474,-104.9481992,39.7111474,-104.9498644,39.7126594
-3821,3637,3638,0.0146799692899151,0.0146799692899151,-104.9498644,39.7126594,-104.9499674,39.712765
-3822,3638,3629,0.546064092681382,0.546064092681382,-104.9499674,39.712765,-104.9554348,39.7153004
-3823,3629,3628,0.0377891893344826,0.0377891893344826,-104.9554348,39.7153004,-104.9558725,39.7153466
-3848,3639,3640,0.0377019004254023,0.0377019004254023,-104.953288,39.6987674,-104.9529616,39.6985396
-3824,3628,3641,0.274746435577415,0.274746435577415,-104.9558725,39.7153466,-104.9590835,39.7152814
-3827,3643,3630,0.145379834812045,0.145379834812045,-104.9299023,39.7027452,-104.9286229,39.7018847
-3829,3644,3645,0.10937380292523,0.10937380292523,-105.0209565,39.7228992,-105.0209651,39.7238828
-3831,3646,3647,0.118367900276814,0.118367900276814,-105.0208928,39.7275233,-105.0208982,39.7264588
-3833,3648,3649,0.0133410304783532,0.0133410304783532,-104.9576929,39.7025901,-104.9575638,39.7025228
-3834,3649,3650,0.0429585103622675,0.0429585103622675,-104.9575638,39.7025228,-104.957148,39.7023062
-3835,3650,3651,0.0204151163658954,0.0204151163658954,-104.957148,39.7023062,-104.9569509,39.7022027
-3836,3651,3652,0.035861428044368,0.035861428044368,-104.9569509,39.7022027,-104.9565993,39.7020271
-3837,3652,3653,0.0519097060940613,0.0519097060940613,-104.9565993,39.7020271,-104.956048,39.7018321
-3838,3653,2733,0.0215181506261361,0.0215181506261361,-104.956048,39.7018321,-104.9558149,39.7017594
-3839,2733,3184,0.0284884125498342,0.0284884125498342,-104.9558149,39.7017594,-104.9555361,39.7016193
-3840,3184,3654,0.0523000942930375,0.0523000942930375,-104.9555361,39.7016193,-104.9550095,39.7013804
-3841,3654,3655,0.0449577371290542,0.0449577371290542,-104.9550095,39.7013804,-104.9546075,39.70112
-3842,3655,3656,0.0854917295991763,0.0854917295991763,-104.9546075,39.70112,-104.9541489,39.7004369
-3843,3656,50,0.0260531877334927,0.0260531877334927,-104.9541489,39.7004369,-104.9541194,39.7002037
-3845,2744,3657,0.0566089274642789,0.0566089274642789,-104.9541587,39.6999377,-104.9539423,39.6994566
-3846,3657,3658,0.0492739020617726,0.0492739020617726,-104.9539423,39.6994566,-104.9536997,39.6990547
-3849,3640,3660,0.0409815373213546,0.0409815373213546,-104.9529616,39.6985396,-104.9525869,39.69831
-3850,3660,3661,0.0430567519340905,0.0430567519340905,-104.9525869,39.69831,-104.9521932,39.6980688
-3851,3661,3662,0.0468129367556475,0.0468129367556475,-104.9521932,39.6980688,-104.9517941,39.6977808
-3852,3662,3663,0.0487340718514498,0.0487340718514498,-104.9517941,39.6977808,-104.9513786,39.697481
-3853,3663,3664,0.0766168893066023,0.0766168893066023,-104.9513786,39.697481,-104.9507,39.6970314
-3854,3664,3665,0.0775543535398568,0.0775543535398568,-104.9507,39.6970314,-104.9500131,39.6965763
-3856,2887,3666,0.0966953683989245,0.0966953683989245,-104.9729638,39.7478589,-104.9739808,39.7474784
-3857,3666,3667,0.0610272459393337,0.0610272459393337,-104.9739808,39.7474784,-104.9746946,39.7474748
-3860,3669,3670,0.0315853053568594,0.0315853053568594,-104.9757447,39.7475025,-104.976114,39.7474946
-3862,3671,3672,0.0504610774094253,0.0504610774094253,-104.9763685,39.7474986,-104.9769586,39.747508
-3863,3672,3673,0.0499084817958282,0.0499084817958282,-104.9769586,39.747508,-104.9775423,39.7475014
-3864,3673,3674,0.0598581313257637,0.0598581313257637,-104.9775423,39.7475014,-104.9782423,39.7475122
-3865,3674,3675,0.0415918035714469,0.0415918035714469,-104.9782423,39.7475122,-104.9787278,39.747536
-3866,3675,3676,0.0971838117715375,0.0971838117715375,-104.9787278,39.747536,-104.9798645,39.7475421
-3867,3676,3677,0.0757910145140814,0.0757910145140814,-104.9798645,39.7475421,-104.980751,39.7475439
-3868,3677,3678,0.0241351496511796,0.0241351496511796,-104.980751,39.7475439,-104.9810333,39.7475445
-3869,3678,3679,0.10921148844503,0.10921148844503,-104.9810333,39.7475445,-104.9823107,39.7475487
-3870,3679,3680,0.0604791133362521,0.0604791133362521,-104.9823107,39.7475487,-104.9830181,39.7475507
-3871,3680,3681,0.0497662614550786,0.0497662614550786,-104.9830181,39.7475507,-104.9836002,39.7475507
-3872,3681,3682,0.0284371260175335,0.0284371260175335,-104.9836002,39.7475507,-104.9839328,39.7475479
-3873,3682,3683,0.0775136719631998,0.0775136719631998,-104.9839328,39.7475479,-104.9848394,39.7475404
-3874,3683,3684,0.0986272672973807,0.0986272672973807,-104.9848394,39.7475404,-104.9859927,39.7475198
-3876,3686,1026,0.103637164673652,0.103637164673652,-104.9634548,39.7469475,-104.9622426,39.7469472
-5148,4657,4658,0.0518173498658282,0.0518173498658282,-105.0191606,39.7548276,-105.0191633,39.7552936
-3877,1026,3687,0.0559565437232701,0.0559565437232701,-104.9622426,39.7469472,-104.9615881,39.7469471
-3878,3687,3688,0.0511859173489266,0.0511859173489266,-104.9615881,39.7469471,-104.9609894,39.746947
-3879,3688,3689,0.0520066703615513,0.0520066703615513,-104.9609894,39.746947,-104.9603811,39.7469469
-3880,3689,3690,0.049253728288425,0.049253728288425,-104.9603811,39.7469469,-104.959805,39.7469468
-3882,2886,3691,0.113429848834015,0.113429848834015,-104.9722001,39.7469535,-104.970874,39.7469218
-3884,3215,3692,0.202752541360657,0.202752541360657,-104.9616918,39.7111011,-104.9617163,39.7092778
-3885,3692,1926,0.199353224720545,0.199353224720545,-104.9617163,39.7092778,-104.961729,39.707485
-3886,1926,3693,0.200351682125873,0.200351682125873,-104.961729,39.707485,-104.9617036,39.7056833
-3887,3693,3270,0.203854022504707,0.203854022504707,-104.9617036,39.7056833,-104.9616991,39.70385
-3888,3270,3694,0.200935067748901,0.200935067748901,-104.9616991,39.70385,-104.9616812,39.702043
-3890,83,3519,0.205087956532059,0.205087956532059,-104.961704,39.7002283,-104.961729,39.698384
-3892,3695,3696,0.201007421421966,0.201007421421966,-104.9617464,39.6965839,-104.961742,39.6947762
-3897,3217,3701,0.1352188342505,0.1352188342505,-104.9611082,39.7111011,-104.96184,39.712179
-3898,131,1718,0.251512260994622,0.251512260994622,-105.0097289,39.6931103,-105.0097345,39.6908484
-15946,9759,9762,0.240661719520644,0.240661719520644,-104.9977092,39.704984,-104.9986577,39.7070216
-3900,3702,3703,0.0933150678138448,0.0933150678138448,-105.0029777,39.7635862,-105.002975,39.7644254
-3901,3703,3704,0.137025546490973,0.137025546490973,-105.002975,39.7644254,-105.0029738,39.7656577
-3902,3704,3705,0.132801372713675,0.132801372713675,-105.0029738,39.7656577,-105.002967,39.766852
-3903,3705,1668,0.132757296812598,0.132757296812598,-105.002967,39.766852,-105.0029592,39.7680459
-3904,1668,3706,0.138337667643286,0.138337667643286,-105.0029592,39.7680459,-105.0029577,39.76929
-3905,3706,2449,0.137198901653783,0.137198901653783,-105.0029577,39.76929,-105.0029835,39.7705237
-3906,2449,3239,0.137027047572602,0.137027047572602,-105.0029835,39.7705237,-105.0029911,39.771756
-3909,3708,3709,0.0594114493059888,0.0594114493059888,-105.002935,39.7755303,-105.002935,39.7760646
-3910,3709,109,0.057220909251565,0.057220909251565,-105.002935,39.7760646,-105.002935,39.7765792
-3913,3711,3712,0.139485170169946,0.139485170169946,-104.9891861,39.7183575,-104.9908169,39.7183641
-3914,3712,2811,0.114534953425458,0.114534953425458,-104.9908169,39.7183641,-104.9921559,39.7183774
-3918,3715,3716,0.0528065388297546,0.0528065388297546,-104.995157,39.7184133,-104.9957744,39.7184136
-3919,3716,3717,0.0498986148500866,0.0498986148500866,-104.9957744,39.7184136,-104.9963578,39.7184146
-3920,3717,3718,0.0501983896755627,0.0501983896755627,-104.9963578,39.7184146,-104.9969447,39.7184167
-3921,3718,3722,0.0513311819624353,0.0513311819624353,-104.9969447,39.7184167,-104.9975448,39.7184227
-3922,3722,3723,0.0447895916462849,0.0447895916462849,-104.9975448,39.7184227,-104.9980684,39.7184292
-3923,3723,3724,0.0431436061631746,0.0431436061631746,-104.9980684,39.7184292,-104.9985724,39.7184133
-3924,3724,3725,0.0306469500311329,0.0306469500311329,-104.9985724,39.7184133,-104.9989294,39.7183897
-3926,3726,3727,0.194057523355391,0.194057523355391,-105.0028483,39.7255761,-105.0028456,39.7273213
-3927,3727,723,0.155998303022368,0.155998303022368,-105.0028456,39.7273213,-105.0028344,39.7287242
-3928,723,3728,0.0204200466887832,0.0204200466887832,-105.0028344,39.7287242,-105.0028395,39.7289078
-3929,3728,3729,0.122760919468851,0.122760919468851,-105.0028395,39.7289078,-105.0028319,39.7300118
-3930,3729,3730,0.0554195837686694,0.0554195837686694,-105.0028319,39.7300118,-105.0028312,39.7305102
-3931,3730,520,0.0841868989778494,0.0841868989778494,-105.0028312,39.7305102,-105.0028259,39.7312673
-3932,520,3731,0.0926590200371809,0.0926590200371809,-105.0028259,39.7312673,-105.0028232,39.7321006
-3933,3731,3732,0.0560537701957185,0.0560537701957185,-105.0028232,39.7321006,-105.0028207,39.7326047
-3937,3735,3736,0.177568883213635,0.177568883213635,-105.0028198,39.7368743,-105.0028107,39.7384712
-3939,3737,3738,0.0596027628340358,0.0596027628340358,-105.0028068,39.7394839,-105.0028007,39.7400199
-3940,3738,2286,0.015731383207611,0.015731383207611,-105.0028007,39.7400199,-105.0028141,39.740161
-3942,191,3739,0.20409229769904,0.20409229769904,-105.02039,39.7157163,-105.0227761,39.7157163
-3943,3739,3740,0.196754914184827,0.196754914184827,-105.0227761,39.7157163,-105.0250764,39.7157096
-3945,3741,3742,0.0963531048469524,0.0963531048469524,-105.0170254,39.7158747,-105.0181498,39.7158219
-3947,3743,1867,0.211893481628119,0.211893481628119,-104.9874858,39.7156689,-104.9899631,39.7156724
-3948,1867,3744,0.190309691295086,0.190309691295086,-104.9899631,39.7156724,-104.9921878,39.7156987
-3949,3744,3369,0.156379911113779,0.156379911113779,-104.9921878,39.7156987,-104.994016,39.7156855
-3951,3746,3747,0.0084501441528746,0.0084501441528746,-105.006247,39.715647,-105.006163,39.715687
-3953,3749,3750,0.291896586304336,0.291896586304336,-105.026537,39.774028,-105.0264259,39.7766517
-3957,3752,3753,0.00678737857974005,0.00678737857974005,-105.0288682,39.7620406,-105.0288005,39.7620725
-3958,3753,3754,0.00811546596932882,0.00811546596932882,-105.0288005,39.7620725,-105.028727,39.7621187
-3959,3754,605,0.11345488105994,0.11345488105994,-105.028727,39.7621187,-105.0276669,39.7627327
-3966,3759,3760,0.0543424988109601,0.0543424988109601,-104.9912414,39.6966624,-104.9918765,39.696669
-3967,3760,3761,0.0124828328696103,0.0124828328696103,-104.9918765,39.696669,-104.9920224,39.696669
-3969,3762,3763,0.109035140401267,0.109035140401267,-105.0051409,39.7854596,-105.0064169,39.7854508
-3970,3763,3764,0.13451246019454,0.13451246019454,-105.0064169,39.7854508,-105.0079576,39.7856991
-3971,3764,1077,0.0751290727356026,0.0751290727356026,-105.0079576,39.7856991,-105.0087381,39.7860102
-3972,1077,2521,0.125841042831383,0.125841042831383,-105.0087381,39.7860102,-105.0101778,39.7862486
-3974,3765,3766,0.0155018141702848,0.0155018141702848,-104.9406029,39.7291831,-104.9407704,39.7291298
-3975,3766,3769,0.0925922303926536,0.0925922303926536,-104.9407704,39.7291298,-104.9418526,39.7291037
-3976,3769,450,0.0446743427321934,0.0446743427321934,-104.9418526,39.7291037,-104.942375,39.7291047
-3977,450,855,0.0454696499518695,0.0454696499518695,-104.942375,39.7291047,-104.9429067,39.7291057
-3978,855,3770,0.0458292249661059,0.0458292249661059,-104.9429067,39.7291057,-104.9434426,39.7291077
-5269,4111,4741,0.0999126780220414,0.0999126780220414,-104.9509907,39.7225605,-104.9498232,39.7225289
-3979,3770,3771,0.0463680305523856,0.0463680305523856,-104.9434426,39.7291077,-104.9439848,39.7291098
-3982,3777,3778,0.0472655889206378,0.0472655889206378,-104.9450973,39.7291163,-104.94565,39.7291176
-3983,3778,3456,0.0457775618734605,0.0457775618734605,-104.94565,39.7291176,-104.9461853,39.7291188
-3984,3456,3779,0.0949352444381587,0.0949352444381587,-104.9461853,39.7291188,-104.9472954,39.7291251
-3985,3779,3780,0.0949175907228116,0.0949175907228116,-104.9472954,39.7291251,-104.9484053,39.7291307
-3986,3780,3781,0.0934360991992659,0.0934360991992659,-104.9484053,39.7291307,-104.9494979,39.7291309
-3987,3781,3782,0.0927263272279538,0.0927263272279538,-104.9494979,39.7291309,-104.9505822,39.7291315
-3988,3782,2659,0.0984051754942233,0.0984051754942233,-104.9505822,39.7291315,-104.9517329,39.7291286
-3989,2659,2053,0.0987467204032972,0.0987467204032972,-104.9517329,39.7291286,-104.9528876,39.7291288
-3990,2053,3783,0.0990728400130522,0.0990728400130522,-104.9528876,39.7291288,-104.9540461,39.7291245
-3991,3783,3784,0.0514218472521816,0.0514218472521816,-104.9540461,39.7291245,-104.9546474,39.7291228
-3992,3784,3785,0.0779176889813446,0.0779176889813446,-104.9546474,39.7291228,-104.9555585,39.7291167
-3993,3785,3786,0.0982592928032825,0.0982592928032825,-104.9555585,39.7291167,-104.9567075,39.7291164
-3994,3786,3344,0.100047583059044,0.100047583059044,-104.9567075,39.7291164,-104.9578774,39.7291204
-3995,3344,3787,0.0997075658602957,0.0997075658602957,-104.9578774,39.7291204,-104.9590433,39.7291134
-3998,3789,1013,0.0991145515008367,0.0991145515008367,-104.9613527,39.7291055,-104.9625117,39.7291044
-3999,1013,3790,0.0988154439008836,0.0988154439008836,-104.9625117,39.7291044,-104.9636672,39.7291023
-4000,3790,3147,0.100818484811759,0.100818484811759,-104.9636672,39.7291023,-104.9648461,39.7290963
-4001,3147,3128,0.0882379333310365,0.0882379333310365,-104.9648461,39.7290963,-104.9658779,39.7290921
-4002,3128,3791,0.10924064572907,0.10924064572907,-104.9658779,39.7290921,-104.9671553,39.7290881
-4003,3791,3792,0.0990892368110052,0.0990892368110052,-104.9671553,39.7290881,-104.968314,39.7290856
-4004,3792,3793,0.0983279071551189,0.0983279071551189,-104.968314,39.7290856,-104.9694638,39.729084
-4005,3793,3794,0.0488397000978433,0.0488397000978433,-104.9694638,39.729084,-104.9700349,39.7290815
-4006,3794,3795,0.0500279563406491,0.0500279563406491,-104.9700349,39.7290815,-104.9706199,39.7290832
-4007,3795,2868,0.0499678370514067,0.0499678370514067,-104.9706199,39.7290832,-104.9712042,39.7290823
-4008,2868,3796,0.048583428681526,0.048583428681526,-104.9712042,39.7290823,-104.9717723,39.7290794
-4009,3796,3797,0.0504566053315115,0.0504566053315115,-104.9717723,39.7290794,-104.9723623,39.729076
-4011,3798,3799,0.0451531325504455,0.0451531325504455,-104.9729432,39.7290745,-104.9734712,39.7290748
-4012,3799,983,0.0519296915637561,0.0519296915637561,-104.9734712,39.7290748,-104.9740784,39.7290693
-4015,3801,3802,0.0483738114958222,0.0483738114958222,-104.9764057,39.7290681,-104.9769713,39.7290617
-4016,3802,3803,0.0519812355103751,0.0519812355103751,-104.9769713,39.7290617,-104.977579,39.7290515
-4017,3803,3804,0.101642680761132,0.101642680761132,-104.977579,39.7290515,-104.9787675,39.7290609
-4018,3804,3805,0.100202026962745,0.100202026962745,-104.9787675,39.7290609,-104.9799392,39.7290657
-4019,3805,3806,0.0490200510242293,0.0490200510242293,-104.9799392,39.7290657,-104.9805124,39.7290692
-4020,3806,3159,0.0527906095396228,0.0527906095396228,-104.9805124,39.7290692,-104.9811297,39.7290666
-4021,3159,3807,0.0508058777981011,0.0508058777981011,-104.9811297,39.7290666,-104.9817238,39.7290659
-4022,3807,3808,0.0547154240766913,0.0547154240766913,-104.9817238,39.7290659,-104.9823636,39.7290623
-4023,3808,3809,0.105580069148102,0.105580069148102,-104.9823636,39.7290623,-104.9835982,39.729065
-4025,3810,3811,0.0543737037127348,0.0543737037127348,-104.9842348,39.7290698,-104.9848706,39.7290738
-16058,9242,237,0.236847878323095,0.236847878323095,-105.0223459,39.7257626,-105.0251054,39.7259431
-4026,3811,3812,0.108778018122892,0.108778018122892,-104.9848706,39.7290738,-104.9861426,39.7290747
-4027,3812,1620,0.10920973774803,0.10920973774803,-104.9861426,39.7290747,-104.9874196,39.7290833
-4029,3813,3814,0.083969278056869,0.083969278056869,-105.0403593,39.7474155,-105.039412,39.7472161
-4031,3815,3816,0.139162136479248,0.139162136479248,-105.0374612,39.7461303,-105.0366061,39.7450654
-4032,3816,3817,0.128842029582485,0.128842029582485,-105.0366061,39.7450654,-105.0369844,39.7439438
-4034,3818,2303,0.104861015321702,0.104861015321702,-105.0107164,39.6967417,-105.0106836,39.695799
-4035,2303,130,0.0947837852263858,0.0947837852263858,-105.0106836,39.695799,-105.010718,39.694947
-4036,130,155,0.2039982188818,0.2039982188818,-105.010718,39.694947,-105.0107186,39.6931124
-4037,155,1719,0.251031715971117,0.251031715971117,-105.0107186,39.6931124,-105.0107559,39.690855
-4040,3820,3821,0.253858034970465,0.253858034970465,-105.009791,39.7062461,-105.0097899,39.7039631
-4041,3821,765,0.158798770965753,0.158798770965753,-105.0097899,39.7039631,-105.0097824,39.702535
-4042,765,3822,0.38766252452626,0.38766252452626,-105.0097824,39.702535,-105.0105281,39.6990962
-4044,3823,3824,0.6423341602363,0.6423341602363,-105.0106786,39.6880414,-105.0099887,39.6822892
-4045,3825,3826,0.0763938085811643,0.0763938085811643,-105.0104126,39.6901747,-105.0104297,39.6894878
-5338,4787,4788,0.201919584850824,0.201919584850824,-105.0135283,39.7856151,-105.013522,39.787431
-4049,3828,3829,0.0709013283805701,0.0709013283805701,-104.9277565,39.7065566,-104.9269277,39.7065525
-4051,3830,3831,0.161299122027925,0.161299122027925,-104.9241221,39.7061949,-104.9222367,39.7061777
-4052,3832,3833,0.0520709463921909,0.0520709463921909,-105.042608,39.748115,-105.0428186,39.7485544
-4054,3834,3835,0.133913000116738,0.133913000116738,-105.0428357,39.748759,-105.0428416,39.7499633
-4055,3835,3836,0.135958385150602,0.135958385150602,-105.0428416,39.7499633,-105.042838,39.751186
-4059,3838,3839,0.195689058153451,0.195689058153451,-105.042617,39.731277,-105.0427707,39.7330329
-4061,3840,3841,0.104161008191779,0.104161008191779,-105.0428396,39.7539325,-105.042828,39.7548692
-4062,3841,3842,0.204332097790775,0.204332097790775,-105.042828,39.7548692,-105.0428239,39.7567068
-4063,3842,2989,0.198305038809848,0.198305038809848,-105.0428239,39.7567068,-105.0428245,39.7584902
-4064,2989,3843,0.202007841321225,0.202007841321225,-105.0428245,39.7584902,-105.0428235,39.7603069
-4065,3843,3844,0.201085745402869,0.201085745402869,-105.0428235,39.7603069,-105.0428303,39.7621153
-4066,3844,3845,0.203153756914823,0.203153756914823,-105.0428303,39.7621153,-105.0428244,39.7639423
-4067,3845,3846,0.201463782012409,0.201463782012409,-105.0428244,39.7639423,-105.0428311,39.7657541
-4068,3846,1694,0.201944163047273,0.201944163047273,-105.0428311,39.7657541,-105.0428441,39.7675702
-4069,1694,3847,0.201007884572681,0.201007884572681,-105.0428441,39.7675702,-105.0428508,39.7693779
-4070,3847,2442,0.173966646957408,0.173966646957408,-105.0428508,39.7693779,-105.042861,39.7709424
-4071,2442,3848,0.171462594138623,0.171462594138623,-105.042861,39.7709424,-105.0428601,39.7724844
-5362,4804,4805,0.138916058502817,0.138916058502817,-105.0127751,39.765645,-105.0127781,39.7668943
-4072,3848,3849,0.15641185610528,0.15641185610528,-105.0428601,39.7724844,-105.0428259,39.7738908
-4073,3849,3850,0.155873108146064,0.155873108146064,-105.0428259,39.7738908,-105.0428243,39.7752926
-4074,3850,3851,0.11951230715733,0.11951230715733,-105.0428243,39.7752926,-105.0428243,39.7763674
-4075,3851,3852,0.0199150113624835,0.0199150113624835,-105.0428243,39.7763674,-105.0428243,39.7765465
-4078,2606,3854,0.176099789319583,0.176099789319583,-105.042706,39.7229718,-105.0427103,39.7245555
-4081,3856,3857,0.204451648584923,0.204451648584923,-105.042767,39.7301122,-105.042745,39.7282736
-4082,3857,3858,0.27633741171005,0.27633741171005,-105.042745,39.7282736,-105.0427081,39.7257886
-4084,3859,3860,0.194935828897222,0.194935828897222,-105.0427473,39.7838664,-105.0427469,39.7856195
-4085,3860,2553,0.201807589121279,0.201807589121279,-105.0427469,39.7856195,-105.0427222,39.7874343
-4086,2553,3861,0.201183796555208,0.201183796555208,-105.0427222,39.7874343,-105.0427456,39.7892435
-4087,3861,3862,0.206144933368939,0.206144933368939,-105.0427456,39.7892435,-105.0427395,39.7910974
-4088,3863,3864,0.174004040356707,0.174004040356707,-105.0432639,39.7165811,-105.0432811,39.7181459
-4089,3864,3865,0.176177241775495,0.176177241775495,-105.0432811,39.7181459,-105.0432811,39.7197303
-4090,3865,3866,0.0719661295510201,0.0719661295510201,-105.0432811,39.7197303,-105.043285,39.7203775
-4091,3866,1862,0.105391351050826,0.105391351050826,-105.043285,39.7203775,-105.0432898,39.7213253
-4092,1862,2607,0.183084733810089,0.183084733810089,-105.0432898,39.7213253,-105.0433005,39.7229718
-4094,3867,3868,0.135844661693153,0.135844661693153,-105.0428222,39.7354157,-105.0427949,39.7366372
-4096,1431,3869,0.122681533981215,0.122681533981215,-105.0427404,39.7820827,-105.042738,39.783186
-4099,3870,3871,0.0814181379314414,0.0814181379314414,-104.9440689,39.7789476,-104.9440637,39.7796798
-4101,3038,3872,0.194090812408951,0.194090812408951,-104.9440088,39.7590496,-104.9440107,39.7607951
-4103,3579,3873,0.140995166985651,0.140995166985651,-104.944148,39.7544343,-104.944148,39.7557023
-4104,3873,3874,0.0908684940539539,0.0908684940539539,-104.944148,39.7557023,-104.944148,39.7565195
-4108,2397,3876,0.142303739641396,0.142303739641396,-104.9440793,39.7738645,-104.9440965,39.7751442
-4110,3877,702,0.203534713775632,0.203534713775632,-104.9442025,39.7401262,-104.9442165,39.7419566
-4111,702,3878,0.201204188260029,0.201204188260029,-104.9442165,39.7419566,-104.9441954,39.743766
-4113,3879,3880,0.176189861258557,0.176189861258557,-104.9437605,39.7162182,-104.943752,39.7178027
-4114,3880,2357,0.178601291381029,0.178601291381029,-104.943752,39.7178027,-104.9437521,39.7194089
-4115,2357,3881,0.172977248757485,0.172977248757485,-104.9437521,39.7194089,-104.9437414,39.7209645
-4116,3881,3882,0.173963704924205,0.173963704924205,-104.9437414,39.7209645,-104.9437636,39.7225289
-4117,3882,3883,0.177248873598787,0.177248873598787,-104.9437636,39.7225289,-104.9437494,39.7241229
-4118,3883,3884,0.165174683174039,0.165174683174039,-104.9437494,39.7241229,-104.9437333,39.7256083
-4120,3885,899,0.068233075024198,0.068233075024198,-104.9438132,39.7638697,-104.9438047,39.7644833
-4121,899,3886,0.136382558439915,0.136382558439915,-104.9438047,39.7644833,-104.9437961,39.7657098
-4123,3887,2246,0.064586200340924,0.064586200340924,-104.9634899,39.7328812,-104.9634985,39.733462
-4126,3889,3890,0.173108811078515,0.173108811078515,-104.9634771,39.7368204,-104.9634822,39.7383772
-4128,3891,673,0.180805922237936,0.180805922237936,-104.9634356,39.7399908,-104.963462,39.7416167
-4129,673,3892,0.00347134617206091,0.00347134617206091,-104.963462,39.7416167,-104.9634634,39.7416479
-4131,3893,3894,0.173412160606882,0.173412160606882,-104.9634575,39.7432314,-104.9634443,39.7447909
-4132,3894,3686,0.239804659108201,0.239804659108201,-104.9634443,39.7447909,-104.9634548,39.7469475
-4133,3686,3895,0.139339505088047,0.139339505088047,-104.9634548,39.7469475,-104.9634614,39.7482006
-4134,3895,1293,0.0712429362693845,0.0712429362693845,-104.9634614,39.7482006,-104.9634588,39.7488413
-4136,3896,3897,0.00461464942878269,0.00461464942878269,-104.9634682,39.7494224,-104.9634629,39.7494637
-4137,3897,3898,0.00296969221564957,0.00296969221564957,-104.9634629,39.7494637,-104.9634621,39.7494904
-4138,3898,3899,0.135099018741423,0.135099018741423,-104.9634621,39.7494904,-104.9634285,39.7507051
-4139,3899,3900,0.133736401013675,0.133736401013675,-104.9634285,39.7507051,-104.9634376,39.7519078
-4140,3900,826,0.1432668721319,0.1432668721319,-104.9634376,39.7519078,-104.9634614,39.7531961
-4141,826,3567,0.140539270126583,0.140539270126583,-104.9634614,39.7531961,-104.9634611,39.75446
-4142,3567,3901,0.141736858580205,0.141736858580205,-104.9634611,39.75446,-104.9634785,39.7557346
-4143,3901,3902,0.138513379846183,0.138513379846183,-104.9634785,39.7557346,-104.9634441,39.75698
-4144,3902,3903,0.137738276341516,0.137738276341516,-104.9634441,39.75698,-104.9634376,39.7582187
-4145,3903,3041,0.133834213982,0.133834213982,-104.9634376,39.7582187,-104.9634377,39.7594223
-4146,3041,3904,0.143195912483998,0.143195912483998,-104.9634377,39.7594223,-104.9634577,39.76071
-4147,3904,3905,0.00371612313723013,0.00371612313723013,-104.9634577,39.76071,-104.9634562,39.7607434
-4148,3905,3906,0.138485181869722,0.138485181869722,-104.9634562,39.7607434,-104.9634455,39.7619888
-4150,1161,880,0.143460648556329,0.143460648556329,-104.9634876,39.7632183,-104.9634376,39.7645079
-4151,880,3907,0.137181190587279,0.137181190587279,-104.9634376,39.7645079,-104.9634382,39.7657416
-4152,3907,2788,0.133979203320047,0.133979203320047,-104.9634382,39.7657416,-104.9634422,39.7669465
-4154,3908,3909,0.11929025073176,0.11929025073176,-104.9634409,39.7681351,-104.9634376,39.7692079
-4155,3909,3910,0.092551367353814,0.092551367353814,-104.9634376,39.7692079,-104.9634764,39.7700397
-4157,734,1555,0.128698646905998,0.128698646905998,-104.9634771,39.7765229,-104.9634695,39.7776803
-4158,1555,3911,0.10223670466325,0.10223670466325,-104.9634695,39.7776803,-104.9634588,39.7785997
-4159,3911,3912,0.0209102658501846,0.0209102658501846,-104.9634588,39.7785997,-104.9632656,39.7787151
-4160,3913,3914,0.290781445277807,0.290781445277807,-104.963317,39.7183519,-104.9633401,39.7209669
-4161,3914,3915,0.112536676265492,0.112536676265492,-104.9633401,39.7209669,-104.963325,39.7219789
-4162,3915,3916,0.199777886092506,0.199777886092506,-104.963325,39.7219789,-104.9634696,39.7237721
-4163,3916,3917,0.0912727874005277,0.0912727874005277,-104.9634696,39.7237721,-104.963416,39.7245919
-4164,3917,3918,0.112620851967747,0.112620851967747,-104.963416,39.7245919,-104.963425,39.7256047
-4166,3919,1187,0.167283340526576,0.167283340526576,-104.963647,39.7256059,-104.9636558,39.7271103
-4167,1187,3920,0.0212753866211399,0.0212753866211399,-104.9636558,39.7271103,-104.9636605,39.7273016
-4168,3920,3790,0.200229524215252,0.200229524215252,-104.9636605,39.7273016,-104.9636672,39.7291023
-4169,3790,3921,0.153151160013799,0.153151160013799,-104.9636672,39.7291023,-104.9636772,39.7304796
-4170,3921,3922,0.0549370836226997,0.0549370836226997,-104.9636772,39.7304796,-104.9636873,39.7309736
-4171,3923,3924,0.0360721076371334,0.0360721076371334,-104.9635686,39.7725675,-104.9635579,39.7728918
-4174,706,3926,0.117999308023824,0.117999308023824,-105.0041014,39.7624043,-105.0032486,39.7632388
-4175,3926,3702,0.0450373928319521,0.0450373928319521,-105.0032486,39.7632388,-105.0029777,39.7635862
-4176,3702,3927,0.114850773809758,0.114850773809758,-105.0029777,39.7635862,-105.0021843,39.7644198
-4177,3927,3928,0.0608860897951607,0.0608860897951607,-105.0021843,39.7644198,-105.0017582,39.7648586
-4178,3928,3929,0.107271550927247,0.107271550927247,-105.0017582,39.7648586,-105.0010599,39.7656602
-4180,3930,1666,0.1330788885459,0.1330788885459,-105.0005956,39.7668504,-105.0005902,39.7680472
-4181,1666,3931,0.137468360449037,0.137468360449037,-105.0005902,39.7680472,-105.0005716,39.7692834
-4182,3931,2447,0.134834989989903,0.134834989989903,-105.0005716,39.7692834,-105.0005707,39.770496
-4183,2447,3237,0.140199730422516,0.140199730422516,-105.0005707,39.770496,-105.0006308,39.771756
-4184,3237,3933,0.138639782785987,0.138639782785987,-105.0006308,39.771756,-105.0006222,39.7730028
-4185,3933,3934,0.138811739329711,0.138811739329711,-105.0006222,39.7730028,-105.0005888,39.7742509
-4186,3934,3935,0.134204059449961,0.134204059449961,-105.0005888,39.7742509,-105.0005661,39.7754577
-4187,3935,3936,0.123276584845079,0.123276584845079,-105.0005661,39.7754577,-105.0005802,39.7765663
-4189,3937,3938,0.126045478045544,0.126045478045544,-104.9998498,39.7419149,-105.0001475,39.7408047
-4190,3938,3939,0.0651492893105391,0.0651492893105391,-105.0001475,39.7408047,-105.0001493,39.7402188
-4191,3939,3940,0.0221401135391512,0.0221401135391512,-105.0001493,39.7402188,-105.000152,39.7400197
-4192,3940,3941,0.0717318471783874,0.0717318471783874,-105.000152,39.7400197,-105.000152,39.7393746
-4195,3943,3944,0.176615684469352,0.176615684469352,-105.0001422,39.736875,-105.0001574,39.7352867
-4196,3944,3947,0.176604135108539,0.176604135108539,-105.0001574,39.7352867,-105.0001429,39.7336985
-4197,3947,3948,0.122323573259462,0.122323573259462,-105.0001429,39.7336985,-105.0001604,39.7325985
-4198,3948,3949,0.0559214984515419,0.0559214984515419,-105.0001604,39.7325985,-105.0001653,39.7320956
-5481,4892,3459,0.0941890822437752,0.0941890822437752,-104.947281,39.73512,-104.9461795,39.735119
-4199,3949,3950,0.176269184745743,0.176269184745743,-105.0001653,39.7320956,-105.0001773,39.7305104
-4200,3950,3951,0.05590117541301,0.05590117541301,-105.0001773,39.7305104,-105.0001846,39.7300077
-4201,3951,3952,0.122088386939327,0.122088386939327,-105.0001846,39.7300077,-105.0002004,39.7289098
-4202,3952,3953,0.0603148497739477,0.0603148497739477,-105.0002004,39.7289098,-105.0001937,39.7283674
-4203,3953,3954,0.117311769773874,0.117311769773874,-105.0001937,39.7283674,-105.0001997,39.7273124
-4204,3954,3955,0.0719490460324168,0.0719490460324168,-105.0001997,39.7273124,-105.0001889,39.7266654
-4205,3955,3956,0.106538056002006,0.106538056002006,-105.0001889,39.7266654,-105.0001441,39.7257079
-4206,3956,3957,0.177243078500478,0.177243078500478,-105.0001441,39.7257079,-105.0001757,39.7241141
-4207,3957,2623,0.176288453506598,0.176288453506598,-105.0001757,39.7241141,-105.0001766,39.7225287
-4208,2623,3958,0.177546592271005,0.177546592271005,-105.0001766,39.7225287,-105.0002015,39.7209321
-4209,3958,3960,0.168966442415293,0.168966442415293,-105.0002015,39.7209321,-105.0001852,39.7194126
-4210,3960,3961,0.111586533238696,0.111586533238696,-105.0001852,39.7194126,-105.0001766,39.7184091
-4213,3963,3964,0.265623714493738,0.265623714493738,-105.0016187,39.7886302,-105.0017217,39.7910177
-4214,3965,3966,0.511616430940774,0.511616430940774,-105.0003399,39.7837825,-105.0005888,39.7883796
-4216,1726,3967,0.0896760315303362,0.0896760315303362,-105.0185407,39.6908154,-105.0184978,39.6900096
-4217,3967,3968,0.0558858522230369,0.0558858522230369,-105.0184978,39.6900096,-105.0184635,39.6895077
-4218,3968,3969,0.109150490871186,0.109150490871186,-105.0184635,39.6895077,-105.0184567,39.6885261
-4219,3970,3971,0.202576252334461,0.202576252334461,-105.0298017,39.7293298,-105.0298103,39.7311516
-4220,3971,3972,0.199655908563659,0.199655908563659,-105.0298103,39.7311516,-105.0298275,39.7329471
-4221,3972,3973,0.201550568367269,0.201550568367269,-105.0298275,39.7329471,-105.0298507,39.7347596
-4223,3974,3975,0.0432784618651284,0.0432784618651284,-105.0299675,39.7647258,-105.029931,39.765114
-4224,3975,3976,0.0119312921672435,0.0119312921672435,-105.029931,39.765114,-105.0299305,39.7652213
-4225,3976,3977,0.0412856988441699,0.0412856988441699,-105.0299305,39.7652213,-105.029946,39.7655924
-4226,3977,3978,0.00523979822286268,0.00523979822286268,-105.029946,39.7655924,-105.0299479,39.7656395
-4227,3978,3979,0.0456580481243959,0.0456580481243959,-105.0299479,39.7656395,-105.0299437,39.7660501
-4228,3979,3980,0.0491163050630244,0.0491163050630244,-105.0299437,39.7660501,-105.0299392,39.7664918
-4229,3980,3981,0.0519851803283443,0.0519851803283443,-105.0299392,39.7664918,-105.0299345,39.7669593
-4230,3981,1662,0.0500503143032265,0.0500503143032265,-105.0299345,39.7669593,-105.02993,39.7674094
-4231,1662,3982,0.0526516968240738,0.0526516968240738,-105.02993,39.7674094,-105.0299336,39.7678829
-4232,3982,3983,0.0511950181994891,0.0511950181994891,-105.0299336,39.7678829,-105.0299371,39.7683433
-4233,3983,3984,0.0508169123465841,0.0508169123465841,-105.0299371,39.7683433,-105.0299405,39.7688003
-16267,5831,9866,0.203286686616951,0.203286686616951,-104.9586821,39.6911399,-104.9586795,39.6929681
-4234,3984,3985,0.0684638947838088,0.0684638947838088,-105.0299405,39.7688003,-105.0299452,39.769416
-4235,3985,3986,0.0523508233196537,0.0523508233196537,-105.0299452,39.769416,-105.0299471,39.7698868
-4236,3986,3987,0.0497154897229056,0.0497154897229056,-105.0299471,39.7698868,-105.0299489,39.7703339
-4237,3987,2423,0.0326188031399601,0.0326188031399601,-105.0299489,39.7703339,-105.0299558,39.7706272
-4238,2423,3988,0.017392306107988,0.017392306107988,-105.0299558,39.7706272,-105.0299532,39.7707836
-4239,3988,3989,0.0330055324383025,0.0330055324383025,-105.0299532,39.7707836,-105.0299481,39.7710804
-4240,3989,3990,0.0159023099545875,0.0159023099545875,-105.0299481,39.7710804,-105.0299456,39.7712234
-4241,3990,3991,0.049454634736183,0.049454634736183,-105.0299456,39.7712234,-105.0299548,39.7716681
-4244,3992,3993,0.049036974566433,0.049036974566433,-105.0299454,39.772124,-105.029945,39.772565
-4245,3993,3994,0.0522504960301449,0.0522504960301449,-105.029945,39.772565,-105.029945,39.7730349
-4246,3994,3995,0.113779671004445,0.113779671004445,-105.029945,39.7730349,-105.0298909,39.7740573
-4247,3995,3996,0.292866933952659,0.292866933952659,-105.0298909,39.7740573,-105.0298791,39.7766911
-4248,3996,3997,0.135719788812757,0.135719788812757,-105.0298791,39.7766911,-105.0298945,39.7779116
-4249,3997,2492,0.131298969381918,0.131298969381918,-105.0298945,39.7779116,-105.0298945,39.7790924
-4250,2492,2838,0.134023703042734,0.134023703042734,-105.0298945,39.7790924,-105.0298986,39.7802977
-4252,3998,3999,0.177673273882055,0.177673273882055,-105.0299945,39.7165481,-105.0300116,39.7181459
-4253,3999,4000,0.178724202369687,0.178724202369687,-105.0300116,39.7181459,-105.0300062,39.7197532
-4254,4000,4001,0.0914256352612055,0.0914256352612055,-105.0300062,39.7197532,-105.0300116,39.7205754
-4255,1820,4002,0.0854127756728086,0.0854127756728086,-105.0299828,39.7262896,-105.0300499,39.727056
-4256,4002,4003,0.0734940058422204,0.0734940058422204,-105.0300499,39.727056,-105.0300602,39.7277169
-4257,4003,4004,0.122094789640982,0.122094789640982,-105.0300602,39.7277169,-105.0300506,39.7288149
-4260,4006,4007,0.167588698662527,0.167588698662527,-105.0299104,39.7841207,-105.0298927,39.7856278
-4261,4007,4008,0.199884724997956,0.199884724997956,-105.0298927,39.7856278,-105.0298864,39.7874254
-4262,4008,4009,0.0119868161378673,0.0119868161378673,-105.0298864,39.7874254,-105.0298863,39.7875332
-4263,371,1930,0.0503613323391642,0.0503613323391642,-105.0298176,39.7380301,-105.0298394,39.7384827
-4264,1930,1940,0.0838300296248713,0.0838300296248713,-105.0298394,39.7384827,-105.0298414,39.7392366
-4265,1940,4010,0.121947021037263,0.121947021037263,-105.0298414,39.7392366,-105.0298922,39.7403326
-4266,4010,4011,0.132309346356631,0.132309346356631,-105.0298922,39.7403326,-105.0299552,39.7415215
-4267,4011,4012,0.135165905730987,0.135165905730987,-105.0299552,39.7415215,-105.0299375,39.742737
-4268,4012,4013,0.133333876014397,0.133333876014397,-105.0299375,39.742737,-105.0299387,39.7439361
-4270,4014,12,0.13580168948729,0.13580168948729,-105.0299558,39.7451547,-105.0299361,39.7463759
-4271,12,4015,0.00286884184731271,0.00286884184731271,-105.0299361,39.7463759,-105.0299362,39.7464017
-4272,4015,4016,0.132033234839576,0.132033234839576,-105.0299362,39.7464017,-105.0299399,39.7475891
-4273,4016,4017,0.133567851795101,0.133567851795101,-105.0299399,39.7475891,-105.0299442,39.7487903
-4274,4017,4018,0.134726706981619,0.134726706981619,-105.0299442,39.7487903,-105.0299546,39.7500019
-4275,4018,4019,0.130892412762661,0.130892412762661,-105.0299546,39.7500019,-105.0299414,39.751179
-4276,4019,4020,0.134212591203429,0.134212591203429,-105.0299414,39.751179,-105.029938,39.752386
-4277,4020,4021,0.133433911973159,0.133433911973159,-105.029938,39.752386,-105.029938,39.753586
-4278,4021,4022,0.137281795417315,0.137281795417315,-105.029938,39.753586,-105.0299425,39.7548206
-4280,4023,4024,0.0689781307016059,0.0689781307016059,-105.0299339,39.7560479,-105.0299253,39.7566682
-4281,4024,4025,0.0667654814327236,0.0667654814327236,-105.0299253,39.7566682,-105.0299339,39.7572686
-5576,4965,4966,0.209377126181678,0.209377126181678,-105.0250665,39.7049175,-105.027514,39.7049206
-4290,4029,1890,0.0489976212541555,0.0489976212541555,-105.0299179,39.761227,-105.0299096,39.7616676
-4291,1890,4030,0.050071397214541,0.050071397214541,-105.0299096,39.7616676,-105.0299117,39.7621179
-4293,4031,2858,0.24990384929118,0.24990384929118,-105.0014483,39.6972057,-105.0043357,39.6975452
-4301,1703,4036,0.19686036595886,0.19686036595886,-104.9887113,39.6911776,-104.9887542,39.6894075
-4302,4036,4037,2.41616418836648,2.41616418836648,-104.9887542,39.6894075,-104.9888339,39.6676785
-4303,4038,4039,0.0356847858191414,0.0356847858191414,-105.0175833,39.7177827,-105.0178323,39.7180402
-4305,4040,4041,0.105425319125276,0.105425319125276,-105.0250969,39.7181465,-105.0263295,39.7181459
-4306,4041,2256,0.104244973047941,0.104244973047941,-105.0263295,39.7181459,-105.0275483,39.7181459
-4307,2256,4042,0.103519804078257,0.103519804078257,-105.0275483,39.7181459,-105.0287585,39.7181591
-4309,3999,4043,0.105003607246795,0.105003607246795,-105.0300116,39.7181459,-105.031239,39.7181657
-17679,10164,8262,0.207810693253635,0.207810693253635,-104.9860095,39.7800376,-104.9882873,39.7806922
-4315,4048,3390,0.0527412463264476,0.0527412463264476,-105.0343046,39.7181492,-105.0349211,39.7181393
-4316,3390,4049,0.0507539981345734,0.0507539981345734,-105.0349211,39.7181393,-105.0355145,39.7181393
-4317,4049,4050,0.0520284075919789,0.0520284075919789,-105.0355145,39.7181393,-105.0361228,39.7181393
-4318,4050,3408,0.0512087059000605,0.0512087059000605,-105.0361228,39.7181393,-105.0367215,39.7181427
-4319,3408,4051,0.0486341315555791,0.0486341315555791,-105.0367215,39.7181427,-105.0372901,39.7181459
-4320,4051,4053,0.052533034496925,0.052533034496925,-105.0372901,39.7181459,-105.0379043,39.7181459
-4321,4053,4054,0.0524475036704537,0.0524475036704537,-105.0379043,39.7181459,-105.0385175,39.7181459
-4322,4054,4055,0.0498829272923159,0.0498829272923159,-105.0385175,39.7181459,-105.0391007,39.7181492
-4327,4058,4059,0.051190260382352,0.051190260382352,-105.0420963,39.7181446,-105.0426948,39.7181453
-4328,4059,3864,0.0501467689985101,0.0501467689985101,-105.0426948,39.7181453,-105.0432811,39.7181459
-4329,3864,4060,0.0537746384669306,0.0537746384669306,-105.0432811,39.7181459,-105.0439098,39.7181494
-4330,4060,4061,0.0463502740457097,0.0463502740457097,-105.0439098,39.7181494,-105.0444517,39.7181523
-4331,4061,4062,0.0561959746447094,0.0561959746447094,-105.0444517,39.7181523,-105.0451087,39.7181568
-4357,4082,4083,0.157884781724872,0.157884781724872,-105.0063995,39.7838419,-105.0082472,39.7838436
-4332,4062,4063,0.69866413721226,0.69866413721226,-105.0451087,39.7181568,-105.0532725,39.7183717
-4333,1273,4064,0.135036752261437,0.135036752261437,-105.0204988,39.7487979,-105.0220781,39.7487781
-4334,4064,4065,0.129590074598046,0.129590074598046,-105.0220781,39.7487781,-105.0235939,39.7487791
-4335,4065,4066,0.132616575444838,0.132616575444838,-105.0235939,39.7487791,-105.0251451,39.7487806
-4344,4073,1390,0.0502435222683857,0.0502435222683857,-105.0316273,39.7838408,-105.0322152,39.7838328
-4345,1390,4074,0.0493046140403362,0.0493046140403362,-105.0322152,39.7838328,-105.0327922,39.7838345
-4346,4074,4075,0.0491422603337744,0.0491422603337744,-105.0327922,39.7838345,-105.0333673,39.7838362
-4351,4078,4079,0.241190031557862,0.241190031557862,-104.9910214,39.7840807,-104.9938425,39.7841519
-4352,4079,4080,0.258242852029617,0.258242852029617,-104.9938425,39.7841519,-104.9968637,39.7840925
-4353,4080,1629,0.215143938153131,0.215143938153131,-104.9968637,39.7840925,-104.9993614,39.7838485
-4354,1629,3965,0.0839336295727996,0.0839336295727996,-104.9993614,39.7838485,-105.0003399,39.7837825
-4364,1214,4088,0.0489795542886091,0.0489795542886091,-105.0123769,39.7838268,-105.0129501,39.7838266
-4365,4088,4089,0.0498843047924572,0.0498843047924572,-105.0129501,39.7838266,-105.0135338,39.7838344
-4366,4089,4090,0.0487540785114809,0.0487540785114809,-105.0135338,39.7838344,-105.0141021,39.7838734
-4367,4090,2167,0.0506698655714413,0.0506698655714413,-105.0141021,39.7838734,-105.014692,39.7839198
-4368,2167,4091,0.0491950203791528,0.0491950203791528,-105.014692,39.7839198,-105.0152654,39.7839595
-4369,4091,4092,0.0488189222411035,0.0488189222411035,-105.0152654,39.7839595,-105.0158347,39.7839964
-4378,1289,4100,0.0495624053047352,0.0495624053047352,-105.0204845,39.7839453,-105.0210503,39.7840434
-4379,4100,4101,0.0531970268279652,0.0531970268279652,-105.0210503,39.7840434,-105.0216462,39.7841819
-4380,4101,4102,0.0527877658733148,0.0527877658733148,-105.0216462,39.7841819,-105.0222318,39.7843331
-4381,4102,4103,0.0491029186922276,0.0491029186922276,-105.0222318,39.7843331,-105.0227805,39.7844643
-4382,4103,4104,0.053313065445571,0.053313065445571,-105.0227805,39.7844643,-105.0233734,39.7846136
-18127,10262,10268,0.40641745688608,0.40641745688608,-105.0187307,39.7874319,-105.0187307,39.7910869
-4394,4109,2351,0.147790101003017,0.147790101003017,-104.9511309,39.7180926,-104.9509887,39.7194172
-4395,2351,4110,0.174343137234229,0.174343137234229,-104.9509887,39.7194172,-104.9509941,39.7209851
-4396,4110,4111,0.175176728788125,0.175176728788125,-104.9509941,39.7209851,-104.9509907,39.7225605
-4397,4111,4112,0.174887842567366,0.174887842567366,-104.9509907,39.7225605,-104.950986,39.7241333
-4398,4112,4113,0.163616410243985,0.163616410243985,-104.950986,39.7241333,-104.9509997,39.7256047
-14847,9428,3841,0.049872105512027,0.049872105512027,-105.0422446,39.7548692,-105.042828,39.7548692
-14848,3841,9429,0.0507867978829422,0.0507867978829422,-105.042828,39.7548692,-105.0434221,39.7548692
-14849,9429,5551,0.0504705023896622,0.0504705023896622,-105.0434221,39.7548692,-105.0440125,39.7548692
-14850,5551,9430,0.0160626819091423,0.0160626819091423,-105.0440125,39.7548692,-105.0442004,39.7548692
-324,207,268,0.0408317858918375,0.0408317858918375,-104.9565607,39.7445824,-104.9564977,39.7449464
-14851,9430,9431,0.771810690268124,0.771810690268124,-105.0442004,39.7548692,-105.0532289,39.7548401
-14860,2500,9438,0.0367185859571526,0.0367185859571526,-105.0073403,39.7545386,-105.0069699,39.7547058
-14866,8307,6350,0.0205009601935279,0.0205009601935279,-105.0043265,39.7546417,-105.0044986,39.7547701
-14871,2450,3240,0.14088111565627,0.14088111565627,-105.0054661,39.7705389,-105.0054318,39.7718056
-14873,5733,5517,0.138655367104914,0.138655367104914,-105.005421,39.7730569,-105.0054468,39.7743037
-14874,5517,9442,0.136397019838813,0.136397019838813,-105.0054468,39.7743037,-105.0054327,39.7755303
-14875,9442,6920,0.112250527906817,0.112250527906817,-105.0054327,39.7755303,-105.005407,39.7765396
-14877,6505,9443,0.246198454475103,0.246198454475103,-104.9400719,39.7833944,-104.9371907,39.7833908
-14878,9443,9444,0.0254384620147021,0.0254384620147021,-104.9371907,39.7833908,-104.936893,39.7833912
-14879,9444,6994,0.4499142851013,0.4499142851013,-104.936893,39.7833912,-104.9316278,39.7834077
-14880,6994,9445,0.29050322706034,0.29050322706034,-104.9316278,39.7834077,-104.9282294,39.7834798
-14881,9445,2104,0.111341186723118,0.111341186723118,-104.9282294,39.7834798,-104.9269661,39.7837251
-14882,2104,9446,1.81122771510753,1.81122771510753,-104.9269661,39.7837251,-104.90577,39.783825
-14883,5328,6848,0.0996617587695029,0.0996617587695029,-105.0327094,39.7111941,-105.0324406,39.710322
-14884,6848,9012,0.0991299503198925,0.0991299503198925,-105.0324406,39.710322,-105.0324235,39.7094306
-14886,7486,7456,0.0976540916227753,0.0976540916227753,-105.0324321,39.7085458,-105.0324406,39.7076676
-14888,5693,9010,0.102057355365657,0.102057355365657,-105.0324406,39.7067365,-105.0324492,39.7058187
-14889,9010,4967,0.099866873546368,0.099866873546368,-105.0324492,39.7058187,-105.0324406,39.7049206
-14890,4967,9021,0.10207838306375,0.10207838306375,-105.0324406,39.7049206,-105.0324149,39.7040028
-14894,8146,9004,0.111615935651551,0.111615935651551,-105.0324321,39.7013349,-105.0324492,39.7003312
-14896,8691,6102,0.204110733056615,0.204110733056615,-104.9408122,39.711121,-104.9408208,39.7092854
-14898,8202,8814,0.0690569326601991,0.0690569326601991,-104.9408446,39.707351,-104.940835,39.70673
-14900,8175,8161,0.034748414576393,0.034748414576393,-104.9406062,39.7111078,-104.9406062,39.7114203
-14901,8161,9450,0.0195282497941032,0.0195282497941032,-104.9406062,39.7114203,-104.9405977,39.7115958
-14902,9450,9315,0.339258874320837,0.339258874320837,-104.9405977,39.7115958,-104.9406148,39.7146468
-14904,8694,8155,0.0907837492404858,0.0907837492404858,-104.9405987,39.7193935,-104.9395373,39.7193869
-14905,8155,7617,0.0954335805182596,0.0954335805182596,-104.9395373,39.7193869,-104.9384215,39.7193869
-14906,7617,7270,0.0932816974435063,0.0932816974435063,-104.9384215,39.7193869,-104.9373314,39.7193605
-14908,4159,8695,0.0152616593160753,0.0152616593160753,-104.9407748,39.7209356,-104.9405977,39.7209188
-14909,8695,8156,0.0918092963851245,0.0918092963851245,-104.9405977,39.7209188,-104.9395248,39.7208924
-14910,8156,7618,0.0923894575376538,0.0923894575376538,-104.9395248,39.7208924,-104.9384446,39.7208988
-14911,7618,7271,0.0946959525813305,0.0946959525813305,-104.9384446,39.7208988,-104.9373374,39.7208988
-14914,2016,353,0.0344076794786212,0.0344076794786212,-104.9349971,39.720897,-104.9345948,39.720897
-14915,353,9451,0.0583270070041971,0.0583270070041971,-104.9345948,39.720897,-104.933915,39.7209388
-14916,9451,2762,0.099099248852826,0.099099248852826,-104.933915,39.7209388,-104.9327571,39.7209716
-14917,2762,7003,0.098484917717332,0.098484917717332,-104.9327571,39.7209716,-104.9316056,39.7209698
-14918,7003,2266,0.0978645165955224,0.0978645165955224,-104.9316056,39.7209698,-104.9304614,39.7209617
-14919,2266,3595,0.100545762919748,0.100545762919748,-104.9304614,39.7209617,-104.929286,39.7209783
-14920,3595,7518,0.100532638471033,0.100532638471033,-104.929286,39.7209783,-104.9281106,39.7209862
-14921,7518,2095,0.100840428744565,0.100840428744565,-104.9281106,39.7209862,-104.9269316,39.7209784
-14922,2095,5977,0.100495257348787,0.100495257348787,-104.9269316,39.7209784,-104.9257568,39.7209954
-14923,5977,7667,0.098120652849283,0.098120652849283,-104.9257568,39.7209954,-104.9246096,39.7209877
-14924,7667,2331,0.102096265330692,0.102096265330692,-104.9246096,39.7209877,-104.9234159,39.7209939
-14925,2331,9453,0.0789173504157379,0.0789173504157379,-104.9234159,39.7209939,-104.9224932,39.720998
-14926,8149,7608,0.0961605881004872,0.0961605881004872,-104.9394514,39.727421,-104.9383271,39.7274078
-14927,7608,7261,0.102411721946463,0.102411721946463,-104.9383271,39.7274078,-104.93713,39.7274324
-14928,7261,7598,0.095880146438169,0.095880146438169,-104.93713,39.7274324,-104.9360089,39.7274241
-14929,7598,2021,0.09187670783236,0.09187670783236,-104.9360089,39.7274241,-104.9349346,39.7274171
-14930,2021,3354,0.0948528618506519,0.0948528618506519,-104.9349346,39.7274171,-104.9338255,39.7274243
-14932,2767,7012,0.0931566808998339,0.0931566808998339,-104.9327231,39.7274245,-104.9316338,39.7274218
-14934,9454,9455,0.0975625637539845,0.0975625637539845,-104.9405378,39.7758344,-104.9405397,39.7767118
-14937,8700,8158,0.0941289748217691,0.0941289748217691,-104.9405826,39.7382932,-104.9394819,39.7382793
-14939,7604,7255,0.0976568291897231,0.0976568291897231,-104.9383746,39.7382991,-104.937234,39.738254
-14940,7255,7591,0.0955299991432501,0.0955299991432501,-104.937234,39.738254,-104.9361168,39.7382474
-14941,7591,9173,0.0963387600574313,0.0963387600574313,-104.9361168,39.7382474,-104.9349904,39.7382277
-14942,9173,9456,0.0980688321229376,0.0980688321229376,-104.9349904,39.7382277,-104.9338436,39.7382407
-14943,9456,2750,0.102866303298183,0.102866303298183,-104.9338436,39.7382407,-104.9326406,39.738234
-14944,2750,7014,0.0961030844605866,0.0961030844605866,-104.9326406,39.738234,-104.9315168,39.7382474
-14945,7014,8215,0.0956816865795296,0.0956816865795296,-104.9315168,39.7382474,-104.9303979,39.7382593
-14947,8212,7523,0.100548507087909,0.100548507087909,-104.9292134,39.7382659,-104.9280376,39.7382791
-14948,7523,2123,0.0946806328213609,0.0946806328213609,-104.9280376,39.7382791,-104.9269303,39.7382791
-14949,2123,5989,0.102767406722396,0.102767406722396,-104.9269303,39.7382791,-104.9257287,39.7382989
-14950,5989,7670,0.0976490581696009,0.0976490581696009,-104.9257287,39.7382989,-104.9245872,39.7382725
-15962,9768,6397,0.0094036846623539,0.0094036846623539,-105.0005192,39.711198,-105.0006291,39.7111959
-14968,7264,7583,0.0956208531243363,0.0956208531243363,-104.9372465,39.7510554,-104.936128,39.7510533
-14969,7583,2000,0.0924757762963627,0.0924757762963627,-104.936128,39.7510533,-104.9350463,39.751049
-14970,2000,3360,0.0937229366395869,0.0937229366395869,-104.9350463,39.751049,-104.93395,39.7510471
-14971,3360,2754,0.0967493265415074,0.0967493265415074,-104.93395,39.7510471,-104.9328183,39.7510492
-14973,7005,2280,0.0993735606220099,0.0993735606220099,-104.931694,39.751069,-104.9305316,39.7510688
-14974,2280,3602,0.103462577447113,0.103462577447113,-104.9305316,39.7510688,-104.9293214,39.7510754
-14975,3602,7527,0.0995273521026476,0.0995273521026476,-104.9293214,39.7510754,-104.9281577,39.7510492
-14976,7527,2135,0.0983330050282197,0.0983330050282197,-104.9281577,39.7510492,-104.9270076,39.7510624
-14977,2135,5992,0.103459989161242,0.103459989161242,-104.9270076,39.7510624,-104.9257974,39.7510624
-14978,5992,7672,0.100271460506145,0.100271460506145,-104.9257974,39.7510624,-104.9246245,39.7510604
-14979,7672,9462,3.03786386467958,3.03786386467958,-104.9246245,39.7510604,-104.889248,39.7536411
-14980,5809,9463,0.110364660453643,0.110364660453643,-104.9873953,39.7433641,-104.9861093,39.7432784
-14989,9464,5043,0.119299198506528,0.119299198506528,-104.9775584,39.7432677,-104.9761631,39.7432623
-14990,5043,7994,0.118519999914902,0.118519999914902,-104.9761631,39.7432623,-104.9747769,39.7432597
-14991,7994,9236,0.117759209590851,0.117759209590851,-104.9747769,39.7432597,-104.9733996,39.7432566
-14992,9236,7973,0.0614780310106107,0.0614780310106107,-104.9733996,39.7432566,-104.9726808,39.7432422
-14994,7142,5131,0.10575888699282,0.10575888699282,-104.9721403,39.7432453,-104.9709034,39.7432539
-14995,5131,4724,0.10504840556341,0.10504840556341,-104.9709034,39.7432539,-104.9696749,39.7432396
-14996,4724,6791,0.107330054626072,0.107330054626072,-104.9696749,39.7432396,-104.9684196,39.7432459
-14997,6791,7363,0.103200510788566,0.103200510788566,-104.9684196,39.7432459,-104.9672126,39.7432396
-14998,7363,5422,0.104113985923971,0.104113985923971,-104.9672126,39.7432396,-104.9659949,39.7432355
-14999,5422,8554,0.105490524385859,0.105490524385859,-104.9659949,39.7432355,-104.9647611,39.7432314
-15000,8554,3893,0.111457422157238,0.111457422157238,-104.9647611,39.7432314,-104.9634575,39.7432314
-15001,3893,1024,0.103888468957379,0.103888468957379,-104.9634575,39.7432314,-104.9622425,39.7432211
-15002,1024,9465,0.0550364598534795,0.0550364598534795,-104.9622425,39.7432211,-104.9615988,39.7432195
-15003,9465,6269,0.0513684711391166,0.0513684711391166,-104.9615988,39.7432195,-104.960998,39.7432181
-15006,9467,9468,0.0801572222360596,0.0801572222360596,-104.9851948,39.7400592,-104.9861285,39.7401238
-15007,9468,5030,0.106840142374901,0.106840142374901,-104.9861285,39.7401238,-104.987378,39.7401161
-18579,3437,7765,0.0485278339531173,0.0485278339531173,-105.0346118,39.7802216,-105.0351796,39.7802141
-15009,6619,8699,0.0954507670467869,0.0954507670467869,-104.9394962,39.7364792,-104.9405829,39.7366755
-15010,8699,9469,0.014222614535116,0.014222614535116,-104.9405829,39.7366755,-104.9407436,39.7367085
-15013,7107,455,0.0456695914542558,0.0456695914542558,-104.9418165,39.7367415,-104.9423505,39.7367494
-15015,860,9470,0.0919474974486486,0.0919474974486486,-104.9428903,39.736756,-104.9439656,39.7367599
-15016,9470,9471,0.0500014374448159,0.0500014374448159,-104.9439656,39.7367599,-104.9445503,39.7367663
-15017,9471,6021,0.0453621576916579,0.0453621576916579,-104.9445503,39.7367663,-104.9450808,39.7367678
-15018,6021,9472,0.0470758089061738,0.0470758089061738,-104.9450808,39.7367678,-104.9456312,39.7367775
-15019,9472,3460,0.0470036762545936,0.0470036762545936,-104.9456312,39.7367775,-104.9461809,39.7367783
-15020,3460,7685,0.0954954207572325,0.0954954207572325,-104.9461809,39.7367783,-104.9472977,39.7367808
-15021,7685,8021,0.0933841388460347,0.0933841388460347,-104.9472977,39.7367808,-104.9483898,39.736785
-15022,8021,6698,0.0960778131259482,0.0960778131259482,-104.9483898,39.736785,-104.9495133,39.7367726
-15023,6698,4136,0.0911259816816344,0.0911259816816344,-104.9495133,39.7367726,-104.9505787,39.7367922
-15025,2663,8548,0.0930424439627818,0.0930424439627818,-104.9516859,39.7368054,-104.952774,39.7368006
-15026,8548,8547,0.100542623889621,0.100542623889621,-104.952774,39.7368006,-104.9539498,39.736794
-15027,8547,7338,0.099089032401214,0.099089032401214,-104.9539498,39.736794,-104.9551086,39.7368006
-15028,7338,7883,0.0990804723784167,0.0990804723784167,-104.9551086,39.7368006,-104.9562673,39.7368072
-15030,3337,5025,0.101286501750056,0.101286501750056,-104.9574002,39.7368138,-104.9585847,39.7368072
-15031,5025,9473,0.0504081121726349,0.0504081121726349,-104.9585847,39.7368072,-104.9591742,39.7368105
-15032,9473,8728,0.0508783896228212,0.0508783896228212,-104.9591742,39.7368105,-104.9597692,39.7368138
-15033,8728,3720,0.054613750451979,0.054613750451979,-104.9597692,39.7368138,-104.9604079,39.7368138
-16212,9849,7734,1.41107486941703,1.41107486941703,-104.9751748,39.6766887,-104.9751677,39.6893788
-15034,3720,6265,0.0510651820396187,0.0510651820396187,-104.9604079,39.7368138,-104.9610051,39.7368138
-15035,6265,9474,0.0526179865653065,0.0526179865653065,-104.9610051,39.7368138,-104.9616204,39.7368204
-15036,9474,1019,0.0530796783692756,0.0530796783692756,-104.9616204,39.7368204,-104.9622411,39.736827
-15037,1019,3889,0.105690016076173,0.105690016076173,-104.9622411,39.736827,-104.9634771,39.7368204
-15038,3889,8550,0.11082035773048,0.11082035773048,-104.9634771,39.7368204,-104.9647731,39.736827
-15039,8550,5418,0.102756492849076,0.102756492849076,-104.9647731,39.736827,-104.9659747,39.7368138
-15040,5418,7359,0.109377907466232,0.109377907466232,-104.9659747,39.7368138,-104.9672536,39.7368336
-15041,7359,6787,0.102485488457906,0.102485488457906,-104.9672536,39.7368336,-104.9684521,39.7368249
-15044,9414,5118,0.0507526262754685,0.0507526262754685,-104.9700963,39.736882,-104.9706897,39.7368921
-15047,7151,9476,0.0506273642355044,0.0506273642355044,-104.9718371,39.7368817,-104.9724291,39.7368742
-15048,9476,8834,0.0494473424354765,0.0494473424354765,-104.9724291,39.7368742,-104.9730073,39.7368668
-15049,8834,6016,0.046054397015081,0.046054397015081,-104.9730073,39.7368668,-104.9735459,39.7368668
-15051,979,5330,0.0485530564436786,0.0485530564436786,-104.9741314,39.7368706,-104.9746992,39.7368668
-15052,5330,8003,0.0503217691422663,0.0503217691422663,-104.9746992,39.7368668,-104.9752877,39.7368647
-15053,8003,6342,0.0507584862620106,0.0507584862620106,-104.9752877,39.7368647,-104.9758813,39.7368678
-15054,6342,5051,0.0488177307212986,0.0488177307212986,-104.9758813,39.7368678,-104.976452,39.7368799
-15055,5051,6690,0.0488248354973201,0.0488248354973201,-104.976452,39.7368799,-104.977023,39.7368798
-15056,6690,9477,0.0468154058850837,0.0468154058850837,-104.977023,39.7368798,-104.9775705,39.7368798
-15059,9313,7101,0.0478106623792446,0.0478106623792446,-104.9787299,39.7368736,-104.9792889,39.7368832
-15060,7101,8880,0.0490142389962295,0.0490142389962295,-104.9792889,39.7368832,-104.9798621,39.7368864
-15061,8880,7420,0.0493429457759385,0.0493429457759385,-104.9798621,39.7368864,-104.9804389,39.7368731
-15062,7420,8874,0.0545354482418663,0.0545354482418663,-104.9804389,39.7368731,-104.9810766,39.7368811
-15064,7430,8793,0.0542698797022772,0.0542698797022772,-104.9816663,39.7368655,-104.9823009,39.7368732
-15065,8793,7862,0.0521693260437922,0.0521693260437922,-104.9823009,39.7368732,-104.982911,39.7368701
-395,399,5,0.209508946543956,0.209508946543956,-104.9349127,39.7804818,-104.9373334,39.780183
-15066,7862,8787,0.05844527692302,0.05844527692302,-104.982911,39.7368701,-104.9835945,39.7368673
-15067,8787,7957,0.0531372993824669,0.0531372993824669,-104.9835945,39.7368673,-104.9842157,39.7368542
-15068,7957,9478,0.0541270300244316,0.0541270300244316,-104.9842157,39.7368542,-104.9848486,39.7368452
-15069,9478,9479,0.108902531529915,0.108902531529915,-104.9848486,39.7368452,-104.9861222,39.7368448
-15072,4481,9480,0.0910756678915429,0.0910756678915429,-104.9417177,39.7657064,-104.9406528,39.7656775
-15074,8706,9481,0.10111000413597,0.10111000413597,-104.9404758,39.7656404,-104.9392929,39.7656311
-15075,9481,9175,0.105113918003998,0.105113918003998,-104.9392929,39.7656311,-104.9380631,39.7656342
-15076,9175,7259,0.105567381342615,0.105567381342615,-104.9380631,39.7656342,-104.936828,39.7656384
-15077,7259,7589,0.103856965848258,0.103856965848258,-104.936828,39.7656384,-104.9356129,39.7656394
-15079,3366,2770,0.104765166628809,0.104765166628809,-104.9343764,39.7656425,-104.9331507,39.7656487
-15080,2770,9176,0.11373488606323,0.11373488606323,-104.9331507,39.7656487,-104.9318203,39.7656281
-15081,9176,2260,0.11073804654165,0.11073804654165,-104.9318203,39.7656281,-104.9305261,39.7655817
-15082,2260,3611,0.0999509846289259,0.0999509846289259,-104.9305261,39.7655817,-104.9293567,39.7655827
-15083,3611,7516,0.100649754002954,0.100649754002954,-104.9293567,39.7655827,-104.9281792,39.765593
-15084,7516,2109,0.103508831759163,0.103508831759163,-104.9281792,39.765593,-104.9269682,39.7655992
-15085,2109,5999,0.10202033489304,0.10202033489304,-104.9269682,39.7655992,-104.9257746,39.7656033
-15086,5999,7660,0.0994984857017093,0.0994984857017093,-104.9257746,39.7656033,-104.9246105,39.7656064
-15087,7660,2328,0.04986487628669,0.04986487628669,-104.9246105,39.7656064,-104.9240271,39.7656085
-15118,9482,9225,0.0953635356752473,0.0953635356752473,-104.9407267,39.776725,-104.9407352,39.7758674
-15120,9455,301,0.129823177853557,0.129823177853557,-104.9405397,39.7767118,-104.9405292,39.7778793
-15116,9490,8276,0.218414071885788,0.218414071885788,-104.9975705,39.7571365,-104.9977757,39.7551786
-15121,301,8269,0.152583336977896,0.152583336977896,-104.9405292,39.7778793,-104.9404976,39.7792513
-15126,226,8268,0.0760384791094216,0.0760384791094216,-104.940692,39.7797323,-104.9407004,39.7790485
-15128,225,9482,0.128957275100235,0.128957275100235,-104.9407032,39.7778846,-104.9407267,39.776725
-15130,9491,460,0.0667391949721685,0.0667391949721685,-104.9405035,39.7797395,-104.9405035,39.7803397
-15132,460,575,0.113707068563865,0.113707068563865,-104.9405035,39.7803397,-104.9404777,39.7813621
-15133,575,6199,0.0290617477448439,0.0290617477448439,-104.9404777,39.7813621,-104.9404705,39.7816234
-15135,9492,8244,0.032549465488295,0.032549465488295,-104.9497268,39.7819174,-104.9498727,39.781647
-15136,8244,9493,0.0198582826309584,0.0198582826309584,-104.9498727,39.781647,-104.9498899,39.7814689
-15138,6689,228,0.0134361080204136,0.0134361080204136,-104.9497884,39.7789167,-104.949699,39.7790161
-15139,228,9494,0.0329072670561094,0.0329072670561094,-104.949699,39.7790161,-104.9496925,39.779312
-15140,9494,9495,0.0242107567854742,0.0242107567854742,-104.9496925,39.779312,-104.9496974,39.7795297
-15142,9496,9497,0.0238335404645399,0.0238335404645399,-104.9498734,39.7795231,-104.949868,39.7793088
-15143,9497,9498,0.0343814713189183,0.0343814713189183,-104.949868,39.7793088,-104.949868,39.7789996
-15966,7623,6935,0.205023089639109,0.205023089639109,-105.0062462,39.7112115,-105.008643,39.711203
-15967,6935,5889,0.201769701232267,0.201769701232267,-105.008643,39.711203,-105.0110016,39.7111799
-15968,5889,7449,0.284161489263658,0.284161489263658,-105.0110016,39.7111799,-105.014321,39.711079
-15969,7449,1636,0.117888722564013,0.117888722564013,-105.014321,39.711079,-105.0156951,39.7111605
-15970,1636,8998,0.102786876242831,0.102786876242831,-105.0156951,39.7111605,-105.0168967,39.7111539
-15972,4214,8094,0.0961834163674376,0.0961834163674376,-105.0180211,39.7111539,-105.0191455,39.7111473
-15973,8094,194,0.104992906429488,0.104992906429488,-105.0191455,39.7111473,-105.0203728,39.7111341
-15974,194,2923,0.0991259111035959,0.0991259111035959,-105.0203728,39.7111341,-105.0215316,39.7111407
-15975,2923,5306,0.0991964539292107,0.0991964539292107,-105.0215316,39.7111407,-105.0226912,39.7111319
-15976,5306,1461,0.0983899476582488,0.0983899476582488,-105.0226912,39.7111319,-105.0238413,39.7111451
-15977,1461,5434,0.104614166406686,0.104614166406686,-105.0238413,39.7111451,-105.0250638,39.7111718
-15978,5434,5973,0.107640436770916,0.107640436770916,-105.0250638,39.7111718,-105.0263219,39.7111517
-15979,5973,9014,0.00660364948230504,0.00660364948230504,-105.0263219,39.7111517,-105.0263991,39.7111517
-15980,9014,7915,0.0975740293794765,0.0975740293794765,-105.0263991,39.7111517,-105.0275397,39.7111407
-15981,7915,6437,0.105749746230322,0.105749746230322,-105.0275397,39.7111407,-105.0287757,39.7111605
-16016,9786,9159,0.00790012825467591,0.00790012825467591,-104.9960586,39.703233,-104.9961123,39.7031752
-15982,6437,4420,0.102051245715481,0.102051245715481,-105.0287757,39.7111605,-105.0299687,39.7111671
-15985,5328,7056,0.0812625038007973,0.0812625038007973,-105.0327094,39.7111941,-105.0336594,39.7111935
-15986,7056,9772,0.0538313043287529,0.0538313043287529,-105.0336594,39.7111935,-105.0342887,39.7111901
-15987,9772,4318,0.0518980074233638,0.0518980074233638,-105.0342887,39.7111901,-105.0348954,39.7111869
-15988,4318,9452,0.0516277273460522,0.0516277273460522,-105.0348954,39.7111869,-105.0354984,39.7112068
-15990,4506,4116,0.0518058126204102,0.0518058126204102,-105.036097,39.7112265,-105.0367025,39.7112166
-15991,4116,7809,0.0517374039809394,0.0517374039809394,-105.0367025,39.7112166,-105.0373072,39.7112067
-15992,7809,5068,0.0991665346425536,0.0991665346425536,-105.0373072,39.7112067,-105.038466,39.7112331
-15993,5068,9773,0.0531370753578357,0.0531370753578357,-105.038466,39.7112331,-105.0390872,39.7112331
-15994,9773,6836,0.0533167080983746,0.0533167080983746,-105.0390872,39.7112331,-105.0397105,39.7112331
-15995,6836,6978,0.101324072393449,0.101324072393449,-105.0397105,39.7112331,-105.040895,39.7112397
-15996,6978,7941,0.102826343168107,0.102826343168107,-105.040895,39.7112397,-105.0420966,39.7112662
-15997,7941,9015,0.0975512129036908,0.0975512129036908,-105.0420966,39.7112662,-105.043237,39.711272
-15998,9015,6780,0.448938989090037,0.448938989090037,-105.043237,39.711272,-105.0484853,39.7112864
-15999,6780,9774,0.408854845876832,0.408854845876832,-105.0484853,39.7112864,-105.0532648,39.7113225
-16000,9076,9768,0.0663101767153915,0.0663101767153915,-104.999744,39.711198,-105.0005192,39.711198
-16004,9776,1455,0.0526013194004238,0.0526013194004238,-105.004167,39.6923239,-105.0039409,39.6927638
-16006,9777,1736,0.0786842572590025,0.0786842572590025,-105.0060257,39.6906026,-105.0057005,39.6912645
-16092,526,9805,0.0239836164906123,0.0239836164906123,-104.9499002,39.7803085,-104.9498921,39.7800929
-16044,9806,9807,0.10708389115039,0.10708389115039,-105.0037663,39.6918863,-105.0050077,39.6920085
-16046,9808,9779,0.598201231733375,0.598201231733375,-104.9924203,39.68926,-104.9993937,39.6888781
-16048,9809,8448,0.00611949423172489,0.00611949423172489,-104.9828551,39.6889832,-104.9827836,39.688982
-16050,497,315,0.38487204905166,0.38487204905166,-105.0147909,39.7286028,-105.0132442,39.7253524
-16051,315,9125,0.309277404563432,0.309277404563432,-105.0132442,39.7253524,-105.0111017,39.7231117
-16053,9092,238,0.378305028269765,0.378305028269765,-105.0245174,39.7255447,-105.0289409,39.7255444
-14687,2318,2393,0.204381692629994,0.204381692629994,-104.9711696,39.7237463,-104.971187,39.7255843
-16054,238,599,0.20185675523074,0.20185675523074,-105.0289409,39.7255444,-105.0313012,39.7255444
-16055,599,9810,1.85367980178975,1.85367980178975,-105.0313012,39.7255444,-105.0529735,39.7258084
-16057,4648,9242,0.316343707887743,0.316343707887743,-105.0186498,39.72565,-105.0223459,39.7257626
-16530,9931,9230,0.37930803087461,0.37930803087461,-104.9975856,39.7082938,-104.9961257,39.7050728
-16060,8979,9416,0.148643981954463,0.148643981954463,-104.9905824,39.7719014,-104.99143,39.7707341
-16062,9129,442,0.133338694466943,0.133338694466943,-105.0154242,39.731054,-105.01561,39.7322446
-16063,442,341,0.15400049730887,0.15400049730887,-105.01561,39.7322446,-105.0154562,39.7336245
-16064,341,8432,0.0419891636299648,0.0419891636299648,-105.0154562,39.7336245,-105.0153422,39.7339918
-16066,8912,8951,0.033170976893888,0.033170976893888,-104.9956858,39.7676849,-104.9953492,39.7678334
-16068,9812,8911,0.0471463735469582,0.0471463735469582,-104.9915921,39.7695911,-104.9912548,39.7699266
-16070,8259,6154,0.322113932922047,0.322113932922047,-104.9757153,39.7797326,-104.9794838,39.7796685
-16072,8262,9813,0.347409770060633,0.347409770060633,-104.9882873,39.7806922,-104.9922437,39.7814112
-16073,9813,8849,0.384076686987265,0.384076686987265,-104.9922437,39.7814112,-104.9966205,39.782197
-16075,8850,8934,0.249988221702048,0.249988221702048,-104.9897894,39.7769264,-104.9901787,39.7746982
-15149,1055,2652,0.0975577285651678,0.0975577285651678,-104.9529111,39.7804333,-104.951864,39.7807829
-15178,9518,9519,0.0502534780761684,0.0502534780761684,-105.0416701,39.740356,-105.0422578,39.7403509
-15150,2652,6953,0.198623612037648,0.198623612037648,-104.951864,39.7807829,-104.9500616,39.7819108
-15152,9492,9502,0.376572648781266,0.376572648781266,-104.9497268,39.7819174,-104.9534622,39.7801206
-15156,3293,102,0.41551161582069,0.41551161582069,-104.9427803,39.703814,-104.9415109,39.7002071
-15160,4010,9505,0.052772682936521,0.052772682936521,-105.0298922,39.7403326,-105.0305094,39.7403332
-15161,9505,7047,0.0525680538450832,0.0525680538450832,-105.0305094,39.7403332,-105.0311242,39.7403355
-15162,7047,7019,0.0303888581356532,0.0303888581356532,-105.0311242,39.7403355,-105.0314796,39.7403377
-15163,7019,9506,0.0673030688563473,0.0673030688563473,-105.0314796,39.7403377,-105.0322667,39.7403316
-15164,9506,9507,0.0483154741652978,0.0483154741652978,-105.0322667,39.7403316,-105.0328316,39.7403209
-15165,9507,7386,0.0202051235057141,0.0202051235057141,-105.0328316,39.7403209,-105.0330679,39.7403194
-16629,9962,9963,0.200783522780218,0.200783522780218,-104.9592628,39.7399435,-104.9616093,39.739874
-15167,9508,9509,0.0505081496090435,0.0505081496090435,-105.0334112,39.7403128,-105.0340019,39.7403161
-15169,3381,9510,0.054679375210741,0.054679375210741,-105.0346043,39.7403194,-105.0352438,39.7403194
-15170,9510,9511,0.0487967465713328,0.0487967465713328,-105.0352438,39.7403194,-105.0358145,39.7403194
-15175,9515,9516,0.0511072604930319,0.0511072604930319,-105.0381491,39.7403326,-105.0387468,39.7403366
-15176,9516,9517,0.199298430530572,0.199298430530572,-105.0387468,39.7403366,-105.0410776,39.740352
-15177,9517,9518,0.0506626460359665,0.0506626460359665,-105.0410776,39.740352,-105.0416701,39.740356
-15179,9519,9520,0.0992839733792875,0.0992839733792875,-105.0422578,39.7403509,-105.0434189,39.740341
-2659,2617,2618,0.0492730897550554,0.0492730897550554,-104.9957832,39.7225228,-104.9963593,39.7225267
-15180,9520,5591,0.0515928611698618,0.0515928611698618,-105.0434189,39.740341,-105.0440223,39.7403422
-15181,5591,9521,0.0485416940170638,0.0485416940170638,-105.0440223,39.7403422,-105.04459,39.7403388
-15182,9521,7534,0.0495967074681937,0.0495967074681937,-105.04459,39.7403388,-105.04517,39.7403326
-15183,7534,9522,0.687013260502188,0.687013260502188,-105.04517,39.7403326,-105.0532048,39.7403683
-15184,4010,253,0.115254186613677,0.115254186613677,-105.0298922,39.7403326,-105.0285448,39.740303
-15185,253,9523,0.265666797076755,0.265666797076755,-105.0285448,39.740303,-105.0254385,39.740357
-16090,9493,9818,0.0359382002911722,0.0359382002911722,-104.9498899,39.7814689,-104.9498899,39.7811457
-16093,9805,9821,0.0110994776170347,0.0110994776170347,-104.9498921,39.7800929,-104.9498895,39.7799931
-16096,9495,9822,0.0517988653877033,0.0517988653877033,-104.9496974,39.7795297,-104.9497205,39.7799952
-16097,9822,9823,0.0110663007110829,0.0110663007110829,-104.9497205,39.7799952,-104.9497178,39.7800947
-16098,9823,525,0.0383908840803154,0.0383908840803154,-104.9497178,39.7800947,-104.9497096,39.7804399
-16099,525,9824,0.0469464980296333,0.0469464980296333,-104.9497096,39.7804399,-104.9497096,39.7808621
-16107,214,9827,0.778079889437356,0.778079889437356,-104.9627533,39.7801312,-104.9718556,39.7799532
-16108,9827,8266,0.110384878461573,0.110384878461573,-104.9718556,39.7799532,-104.9731431,39.7798728
-16109,8266,8259,0.22035773346297,0.22035773346297,-104.9731431,39.7798728,-104.9757153,39.7797326
-16111,426,5290,0.135279903383581,0.135279903383581,-105.0252144,39.7427283,-105.0252168,39.7439449
-16112,5290,6969,0.13394711160262,0.13394711160262,-105.0252168,39.7439449,-105.0252247,39.7451495
-16113,6969,9,0.133723176212026,0.133723176212026,-105.0252247,39.7451495,-105.0252223,39.7463521
-12362,8672,8673,0.0280927507040958,0.0280927507040958,-105.011589,39.7530795,-105.0113745,39.7528881
-16114,9,6393,0.135759876984547,0.135759876984547,-105.0252223,39.7463521,-105.0252309,39.747573
-16116,543,2417,0.140823258017981,0.140823258017981,-105.0222025,39.7405643,-105.0238493,39.7405447
-16117,2417,8309,0.134744289641959,0.134744289641959,-105.0238493,39.7405447,-105.0254224,39.7404725
-16121,9523,8323,0.0490645159279825,0.0490645159279825,-105.0254385,39.740357,-105.0248659,39.7403859
-16122,8323,2296,0.111956296963114,0.111956296963114,-105.0248659,39.7403859,-105.0235583,39.7404384
-16123,2296,425,0.133707313641353,0.133707313641353,-105.0235583,39.7404384,-105.0219946,39.7404498
-16125,8580,9121,0.223068039429751,0.223068039429751,-105.0251093,39.7234923,-105.022529,39.7237852
-16129,4649,7955,0.0999111170250792,0.0999111170250792,-105.0186468,39.7257296,-105.0198149,39.7257444
-16130,7955,9828,0.0800171872297717,0.0800171872297717,-105.0198149,39.7257444,-105.0207505,39.725751
-16131,9829,8581,0.047687571765354,0.047687571765354,-105.0256672,39.7245362,-105.0251096,39.7245361
-16133,9073,1815,0.113861635058861,0.113861635058861,-105.0251226,39.7293097,-105.0264272,39.7291051
-16134,1815,9030,0.0294613091189667,0.0294613091189667,-105.0264272,39.7291051,-105.0266512,39.7293064
-16135,9030,9035,0.0740720067279475,0.0740720067279475,-105.0266512,39.7293064,-105.0275173,39.7293147
-16136,9035,2259,0.0101253625653209,0.0101253625653209,-105.0275173,39.7293147,-105.0276357,39.7293142
-16137,2259,6127,0.0869883467865613,0.0869883467865613,-105.0276357,39.7293142,-105.0286529,39.7293168
-16138,6127,3970,0.0982525233162176,0.0982525233162176,-105.0286529,39.7293168,-105.0298017,39.7293298
-16139,3970,4005,0.0213357195383616,0.0213357195383616,-105.0298017,39.7293298,-105.0300506,39.7293166
-16170,9839,7732,1.81004213705151,1.81004213705151,-104.9763369,39.6731074,-104.9763378,39.6893855
-16140,4005,9831,0.0527909920856998,0.0527909920856998,-105.0300506,39.7293166,-105.0306678,39.7293074
-16143,7028,9832,0.0518403992809488,0.0518403992809488,-105.0312846,39.729303,-105.0318908,39.729303
-16144,9832,1405,0.0193610465151665,0.0193610465151665,-105.0318908,39.729303,-105.0321172,39.729303
-16145,1405,9086,0.0330290864914803,0.0330290864914803,-105.0321172,39.729303,-105.0325034,39.7293066
-16146,9086,9833,0.0517615954401031,0.0517615954401031,-105.0325034,39.7293066,-105.0331086,39.7293141
-16147,9833,7389,0.013992344500971,0.013992344500971,-105.0331086,39.7293141,-105.0332722,39.7293161
-16148,7389,7381,0.039974198258354,0.039974198258354,-105.0332722,39.7293161,-105.0337396,39.7293113
-16149,7381,5215,0.0612246627137571,0.0612246627137571,-105.0337396,39.7293113,-105.0344555,39.7293058
-16150,5215,3395,0.05711231452959,0.05711231452959,-105.0344555,39.7293058,-105.0351232,39.7293166
-16152,7953,9834,0.0172080507351113,0.0172080507351113,-105.0198924,39.7392785,-105.019887,39.7394332
-16154,9834,274,0.0658337540289098,0.0658337540289098,-105.019887,39.7394332,-105.0198763,39.7400252
-16156,2189,9835,0.248404343096233,0.248404343096233,-105.0159036,39.7398341,-105.0143087,39.7379669
-16214,8735,9837,1.99433693652165,1.99433693652165,-104.9740308,39.6892204,-104.9740442,39.6712849
-16215,8737,9838,0.871081020569746,0.871081020569746,-104.9716711,39.6881426,-104.9716482,39.6803088
-4419,2776,4130,0.131599235651272,0.131599235651272,-104.9511832,39.7669218,-104.9511844,39.7681053
-16159,9143,9028,0.680206597840058,0.680206597840058,-105.0032713,39.7288521,-105.0112026,39.7293142
-16163,722,8058,0.174054831255352,0.174054831255352,-105.004084,39.7289511,-105.0040758,39.7305164
-16164,8058,521,0.0821177779256467,0.0821177779256467,-105.0040758,39.7305164,-105.0040731,39.7312549
-16165,521,6603,0.0924366308750619,0.0924366308750619,-105.0040731,39.7312549,-105.0040758,39.7320862
-16166,6603,5373,0.180047417371753,0.180047417371753,-105.0040758,39.7320862,-105.0040704,39.7337054
-16168,1948,2528,0.0688038536836977,0.0688038536836977,-105.0095234,39.7384742,-105.010328,39.7384824
-16333,7146,2907,0.104983935013538,0.104983935013538,-104.9721238,39.7620063,-104.9733504,39.7620548
-16334,2907,7925,0.0494998939900097,0.0494998939900097,-104.9733504,39.7620548,-104.9739262,39.7620073
-16338,3444,3467,0.0304982971000002,0.0304982971000002,-104.9462569,39.7617553,-104.9459001,39.7617543
-16339,3467,8082,0.246312262462312,0.246312262462312,-104.9459001,39.7617543,-104.9430328,39.7615337
-16342,8704,8153,0.0931754474511838,0.0931754474511838,-104.9404955,39.7617894,-104.9394065,39.7618265
-16343,8153,7614,0.0941189496630448,0.0941189496630448,-104.9394065,39.7618265,-104.9383054,39.7618296
-16344,7614,7267,0.0948021938707784,0.0948021938707784,-104.9383054,39.7618296,-104.9371963,39.7618306
-16345,7267,7586,0.0921634745405222,0.0921634745405222,-104.9371963,39.7618306,-104.9361181,39.7618368
-16346,7586,7587,0.0431064926802277,0.0431064926802277,-104.9361181,39.7618368,-104.9356138,39.7618347
-16347,7587,2005,0.0500940428381568,0.0500940428381568,-104.9356138,39.7618347,-104.9350278,39.7618409
-16348,2005,3364,0.0956080752868491,0.0956080752868491,-104.9350278,39.7618409,-104.9339093,39.7618471
-16349,3364,2759,0.0936601356465838,0.0936601356465838,-104.9339093,39.7618471,-104.9328136,39.7618543
-16350,2759,7009,0.0948690491965415,0.0948690491965415,-104.9328136,39.7618543,-104.9317039,39.7618388
-16352,2285,3605,0.100419536914451,0.100419536914451,-104.9305592,39.7618327,-104.9293844,39.7618378
-16353,3605,7531,0.0985834303955712,0.0985834303955712,-104.9293844,39.7618378,-104.9282311,39.761845
-16354,7531,2140,0.105692387990087,0.105692387990087,-104.9282311,39.761845,-104.9269946,39.7618481
-16355,2140,5996,0.104777507715381,0.104777507715381,-104.9269946,39.7618481,-104.9257688,39.7618503
-16356,5996,7676,0.0990116406010299,0.0990116406010299,-104.9257688,39.7618503,-104.9246105,39.7618584
-16357,7676,9874,1.60848579675559,1.60848579675559,-104.9246105,39.7618584,-104.9057927,39.7618262
-17199,2711,10073,0.10997712384001,0.10997712384001,-105.0233999,39.7473921,-105.0225148,39.7466744
-16358,9875,2326,1.55889022258017,1.55889022258017,-104.9057918,39.7619791,-104.9240294,39.7620162
-16360,5997,2127,0.151773007567564,0.151773007567564,-104.9258117,39.7620121,-104.9275873,39.7620069
-16361,2127,3609,0.151558147644208,0.151558147644208,-104.9275873,39.7620069,-104.9293603,39.7619925
-16362,3609,7010,0.212760869396779,0.212760869396779,-104.9293603,39.7619925,-104.9318494,39.7619997
-16365,3365,2006,0.0553745270182344,0.0553745270182344,-104.93438,39.7620028,-104.9350278,39.7619977
-16366,2006,7588,0.0502101113635407,0.0502101113635407,-104.9350278,39.7619977,-104.9356152,39.7619945
-16367,7588,7258,0.104315488387994,0.104315488387994,-104.9356152,39.7619945,-104.9368356,39.7619935
-16368,7258,7615,0.106145187491952,0.106145187491952,-104.9368356,39.7619935,-104.9380774,39.7619904
-16369,7615,9877,0.104437372352784,0.104437372352784,-104.9380774,39.7619904,-104.9392992,39.7619966
-16429,9892,3407,0.0665957848901693,0.0665957848901693,-104.9695204,39.6969176,-104.9699417,39.6974212
-16430,3407,9893,0.16801404607557,0.16801404607557,-104.9699417,39.6974212,-104.9715317,39.698308
-16433,9895,9896,0.440540235104303,0.440540235104303,-104.9718554,39.6986422,-104.9713614,39.7025858
-16436,9897,9898,0.0704932318773383,0.0704932318773383,-104.968823,39.6933724,-104.9681189,39.6930432
-16438,95,3655,0.111235679997702,0.111235679997702,-104.9551461,39.7002095,-104.9546075,39.70112
-16440,9899,5747,0.0711149911978779,0.0711149911978779,-104.9676535,39.6937356,-104.9676964,39.6930969
-16445,9902,9903,0.536321309295718,0.536321309295718,-104.9732597,39.6931641,-104.9732302,39.6979873
-16453,9908,9909,0.550826257700494,0.550826257700494,-104.9731739,39.7014254,-104.9730512,39.7063782
-16458,9907,9908,0.00771583659604379,0.00771583659604379,-104.9730961,39.7013903,-104.9731739,39.7014254
-16460,9909,9912,0.0865311626257968,0.0865311626257968,-104.9730512,39.7063782,-104.9726409,39.7070895
-16461,9912,9910,0.0378168798460609,0.0378168798460609,-104.9726409,39.7070895,-104.9724845,39.7074076
-16471,3282,9916,0.18653100874984,0.18653100874984,-104.9687946,39.7020548,-104.9687858,39.7003773
-16473,9917,8680,0.0249041944601551,0.0249041944601551,-104.9694498,39.7035446,-104.9691913,39.7036476
-19510,10535,10536,0.0273195782326388,0.0273195782326388,-104.9882297,39.7088075,-104.9879104,39.7088024
-16475,8507,9918,0.021850852998121,0.021850852998121,-104.9777748,39.7546175,-104.9779759,39.7547388
-16476,9918,3018,0.0101317448895217,0.0101317448895217,-104.9779759,39.7547388,-104.9780672,39.7547969
-16478,9919,9920,0.0829003664734834,0.0829003664734834,-104.9871822,39.7475219,-104.9862126,39.7475301
-16479,9921,3681,0.0300651916457247,0.0300651916457247,-104.9835546,39.7478188,-104.9836002,39.7475507
-16668,9926,9974,0.105582813458159,0.105582813458159,-105.005919,39.7444156,-105.0070019,39.7439592
-16669,9588,1633,0.0730557533632891,0.0730557533632891,-105.0043197,39.7412126,-105.0035017,39.7410228
-16671,9928,9975,0.0177169257267767,0.0177169257267767,-105.0062945,39.7430132,-105.0061758,39.7428826
-117,124,125,0.0336263849765442,0.0336263849765442,-105.0043775,39.7602205,-105.0040777,39.7604163
-16672,9975,9929,0.0234356081852519,0.0234356081852519,-105.0061758,39.7428826,-105.0061216,39.7430892
-16674,9976,9977,0.0468170562405583,0.0468170562405583,-105.0075867,39.7422556,-105.0080641,39.7420494
-16710,104,7825,0.0602462277844684,0.0602462277844684,-104.9874778,39.7002508,-104.9875714,39.7007878
-16712,104,3757,0.402008044434906,0.402008044434906,-104.9874778,39.7002508,-104.9873962,39.696636
-16713,3757,1487,0.204145741130723,0.204145741130723,-104.9873962,39.696636,-104.9874337,39.6948003
-16714,1487,132,0.199447130341484,0.199447130341484,-104.9874337,39.6948003,-104.9874659,39.6930068
-16716,1701,5546,0.198096603236586,0.198096603236586,-104.9875011,39.6911908,-104.9874887,39.6894093
-16777,69,3510,0.205561826495526,0.205561826495526,-104.9675826,39.7002312,-104.9675508,39.6983827
-4421,1201,4132,0.0220332988005433,0.0220332988005433,-104.9505615,39.7271353,-104.9505673,39.7273334
-16718,7283,485,0.11761309283436,0.11761309283436,-104.9871988,39.7019884,-104.9862761,39.7027725
-16720,10003,3244,0.0554692551325786,0.0554692551325786,-104.9862718,39.703372,-104.9862629,39.7038708
-16721,3244,7234,0.20486059291662,0.20486059291662,-104.9862629,39.7038708,-104.9862815,39.7057131
-16722,7234,1896,0.200393401337734,0.200393401337734,-104.9862815,39.7057131,-104.9863459,39.7075146
-16723,1896,6106,0.199619177779868,0.199619177779868,-104.9863459,39.7075146,-104.9863727,39.7093097
-16724,6106,3190,0.204209613390108,0.204209613390108,-104.9863727,39.7093097,-104.98637,39.7111462
-16725,3190,3074,0.20155062603718,0.20155062603718,-104.98637,39.7111462,-104.9862922,39.7129578
-17204,10076,9899,0.140445516840247,0.140445516840247,-104.9687509,39.6946749,-104.9676535,39.6937356
-17206,10077,9891,0.365702001724341,0.365702001724341,-104.968787,39.6999605,-104.9688482,39.696672
-17210,9916,551,0.0168353379628002,0.0168353379628002,-104.9687858,39.7003773,-104.9687844,39.7002259
-17211,551,10077,0.029511971826839,0.029511971826839,-104.9687844,39.7002259,-104.968787,39.6999605
-17221,9830,5174,0.203086414023487,0.203086414023487,-104.9774882,39.7146931,-104.9774882,39.7165195
-17225,7299,3774,0.0270450210392685,0.0270450210392685,-104.9774985,39.7020281,-104.9774885,39.7022712
-17227,10078,240,0.11490035547177,0.11490035547177,-104.9763987,39.6910611,-104.9752801,39.6904894
-17229,240,241,0.0697724132050665,0.0697724132050665,-104.9752801,39.6904894,-104.9745995,39.6901438
-17230,241,242,0.0623380559401012,0.0623380559401012,-104.9745995,39.6901438,-104.9739987,39.6898267
-17231,242,243,0.121807717540091,0.121807717540091,-104.9739987,39.6898267,-104.9728142,39.6892191
-17238,246,247,0.10870569104286,0.10870569104286,-104.9683485,39.6870395,-104.9672584,39.6865375
-17239,247,248,0.0772679392991742,0.0772679392991742,-104.9672584,39.6865375,-104.966468,39.6862015
-17241,235,3406,0.0743704107751119,0.0743704107751119,-104.9695743,39.6967741,-104.9701665,39.6972637
-17242,3406,10079,0.167074762801468,0.167074762801468,-104.9701665,39.6972637,-104.9716804,39.6982128
-17244,331,10014,0.0356018290483491,0.0356018290483491,-104.9522901,39.745499,-104.952676,39.7456193
-17245,10014,8533,0.134990804356131,0.134990804356131,-104.952676,39.7456193,-104.9542138,39.7458945
-17247,510,8534,0.190527366373376,0.190527366373376,-104.9547886,39.7479501,-104.9544306,39.7462589
-17249,9649,6335,0.0185334131201332,0.0185334131201332,-104.98616,39.7263757,-104.9861535,39.7265423
-17250,6335,10080,0.0823637888630556,0.0823637888630556,-104.9861535,39.7265423,-104.9861473,39.727283
-17251,10080,3812,0.199228355515768,0.199228355515768,-104.9861473,39.727283,-104.9861426,39.7290747
-17252,3812,5918,0.151375161417453,0.151375161417453,-104.9861426,39.7290747,-104.9861275,39.730436
-17254,917,2204,0.201707005619294,0.201707005619294,-104.9861344,39.7320479,-104.9861103,39.7338618
-17255,2204,4853,0.158074944552835,0.158074944552835,-104.9861103,39.7338618,-104.9861135,39.7352834
-17506,10119,8389,0.0881257330115891,0.0881257330115891,-105.0129247,39.7389937,-105.0124419,39.7396939
-17514,10115,4493,0.0857000040414071,0.0857000040414071,-105.0062313,39.7401322,-105.0052303,39.740093
-17515,4493,10122,0.00789608138487867,0.00789608138487867,-105.0052303,39.740093,-105.0051382,39.7400878
-17516,10122,10123,0.0829902602540724,0.0829902602540724,-105.0051382,39.7400878,-105.0041704,39.7400311
-17517,10123,3738,0.117121022748715,0.117121022748715,-105.0041704,39.7400311,-105.0028007,39.7400199
-16415,3033,3034,0.026586968802262,0.026586968802262,-104.9700513,39.702674,-104.9699305,39.7024537
-17518,3738,5617,0.105494461178937,0.105494461178937,-105.0028007,39.7400199,-105.0015669,39.7400197
-17519,5617,10124,0.0771328841888806,0.0771328841888806,-105.0015669,39.7400197,-105.0006648,39.7400196
-18717,1848,7866,0.175365518810985,0.175365518810985,-105.0343209,39.721329,-105.0343209,39.7197519
-17520,10124,3940,0.0438462962781839,0.0438462962781839,-105.0006648,39.7400196,-105.000152,39.7400197
-18649,10111,1854,0.1585792263447,0.1585792263447,-105.0379043,39.7199053,-105.0379177,39.7213314
-17522,6651,7970,0.100526894140491,0.100526894140491,-104.9999603,39.7400202,-104.9987846,39.7400184
-17523,7970,10125,0.0156643759566378,0.0156643759566378,-104.9987846,39.7400184,-104.9986014,39.7400179
-17525,342,10126,0.0436005942347808,0.0436005942347808,-105.0138715,39.7367088,-105.0137696,39.737093
-17527,10126,10121,0.0408685827486489,0.0408685827486489,-105.0137696,39.737093,-105.0137025,39.7374569
-17529,8016,10127,0.0296331396909763,0.0296331396909763,-104.9993111,39.7412509,-104.9989934,39.7413574
-17533,9200,10128,0.0316360066553629,0.0316360066553629,-104.9994716,39.7422305,-104.9997264,39.7420242
-17535,10128,3937,0.0160944313012695,0.0160944313012695,-104.9997264,39.7420242,-104.9998498,39.7419149
-17537,10125,10129,0.0323384241188202,0.0323384241188202,-104.9986014,39.7400179,-104.9982232,39.7400157
-17540,8937,10130,0.0382349269331771,0.0382349269331771,-104.9891177,39.7851166,-104.9891097,39.7854604
-18160,6035,10256,0.201529974874074,0.201529974874074,-105.0141159,39.7856183,-105.0141119,39.7874307
-18081,3725,3961,0.10669546577579,0.10669546577579,-104.9989294,39.7183897,-105.0001766,39.7184091
-18082,3961,5599,0.120037242247265,0.120037242247265,-105.0001766,39.7184091,-105.0015794,39.7184418
-18083,5599,10212,0.0720417181829305,0.0720417181829305,-105.0015794,39.7184418,-105.0024206,39.7184748
-18085,6582,8060,0.177813026382298,0.177813026382298,-104.9881664,39.732053,-104.9881587,39.7304539
-18087,79,3516,0.204359090736991,0.204359090736991,-104.9634844,39.7002269,-104.9634676,39.6983891
-18089,10257,1076,0.140362637117951,0.140362637117951,-105.010685,39.7858675,-105.009052,39.7857306
-18092,8839,10258,0.0505579939719693,0.0505579939719693,-105.0112028,39.7874224,-105.0117945,39.7874239
-18093,10258,1216,0.0474392361763922,0.0474392361763922,-105.0117945,39.7874239,-105.0123497,39.7874253
-18094,1216,6309,0.0509984491369365,0.0509984491369365,-105.0123497,39.7874253,-105.0129465,39.7874317
-18095,6309,4788,0.0491735679878017,0.0491735679878017,-105.0129465,39.7874317,-105.013522,39.787431
-18418,8332,8359,0.203675131612914,0.203675131612914,-105.0398789,39.7621198,-105.0399031,39.7639514
-18096,4788,10256,0.0504039235105897,0.0504039235105897,-105.013522,39.787431,-105.0141119,39.7874307
-18098,2169,10259,0.0494310424509836,0.0494310424509836,-105.0146868,39.7874303,-105.0152653,39.7874334
-18099,10259,6301,0.0486534339401342,0.0486534339401342,-105.0152653,39.7874334,-105.0158347,39.7874364
-18100,6301,10260,0.0495166429402865,0.0495166429402865,-105.0158347,39.7874364,-105.0164142,39.7874331
-18101,10260,6428,0.0494555977491468,0.0494555977491468,-105.0164142,39.7874331,-105.016993,39.7874341
-18102,6428,10261,0.0500541316962619,0.0500541316962619,-105.016993,39.7874341,-105.0175788,39.787432
-18103,10261,8837,0.049703265213276,0.049703265213276,-105.0175788,39.787432,-105.0181605,39.7874319
-18104,8837,10262,0.0487206483354329,0.0487206483354329,-105.0181605,39.7874319,-105.0187307,39.7874319
-18105,10262,4661,0.0502842889238415,0.0502842889238415,-105.0187307,39.7874319,-105.0193192,39.7874319
-18210,6766,8919,0.14588598272053,0.14588598272053,-105.0275892,39.7716046,-105.0258833,39.771558
-18215,6383,6883,0.201049789723751,0.201049789723751,-105.0422527,39.763944,-105.04223,39.765752
-18217,9380,6467,0.149037633666744,0.149037633666744,-105.0434002,39.7766311,-105.0434114,39.7752908
-18218,6467,5528,0.155039270882985,0.155039270882985,-105.0434114,39.7752908,-105.0434142,39.7738965
-18219,5528,5739,0.157509840329179,0.157509840329179,-105.0434142,39.7738965,-105.043424,39.77248
-18220,5739,2443,0.171457541049395,0.171457541049395,-105.043424,39.77248,-105.0434409,39.7709381
-18221,2443,9373,0.174175733096206,0.174175733096206,-105.0434409,39.7709381,-105.0434409,39.7693717
-18222,9373,1695,0.20076305206058,0.20076305206058,-105.0434409,39.7693717,-105.0434467,39.7675662
-18224,6884,8362,0.203398590237467,0.203398590237467,-105.0434307,39.76575,-105.0434239,39.7639208
-18225,8362,8336,0.20070690829837,0.20070690829837,-105.0434239,39.7639208,-105.043422,39.7621158
-18226,8336,7851,0.201718717149991,0.201718717149991,-105.043422,39.7621158,-105.0434222,39.7603017
-18228,9334,6072,0.194542227529238,0.194542227529238,-105.042148,39.7838703,-105.0421669,39.7856198
-18229,6072,2552,0.201793795787929,0.201793795787929,-105.0421669,39.7856198,-105.0421454,39.7874345
-18231,10282,2550,0.408975962052575,0.408975962052575,-105.0409706,39.791112,-105.0409813,39.787434
-18233,6070,9333,0.193859431649891,0.193859431649891,-105.0409894,39.7856189,-105.0409786,39.7838755
-18235,3976,7037,0.199530180994258,0.199530180994258,-105.0299305,39.7652213,-105.0322649,39.7652109
-200,212,213,0.0847562945477418,0.0847562945477418,-104.9665616,39.779672,-104.9655888,39.7798206
-18390,3978,7038,0.19806787554915,0.19806787554915,-105.0299479,39.7656395,-105.0322651,39.7656196
-18392,3425,3425,0.000442266584977921,0.000442266584977921,-105.034629,39.7657398,-105.0346312,39.7657434
-18397,9331,6062,0.201652000193759,0.201652000193759,-105.0351853,39.7838062,-105.0351851,39.7856197
-18398,6062,2541,0.201129932352607,0.201129932352607,-105.0351851,39.7856197,-105.0351796,39.7874285
-18581,5716,10279,0.0494611669239994,0.0494611669239994,-105.0357784,39.7802062,-105.0363572,39.7802082
-18582,10279,7436,0.0477007849303031,0.0477007849303031,-105.0363572,39.7802082,-105.0369154,39.7802101
-18583,7436,10283,0.0501702475316452,0.0501702475316452,-105.0369154,39.7802101,-105.0375025,39.7802085
-17420,10101,10103,0.0112555006692224,0.0112555006692224,-104.9831564,39.6890637,-104.9831832,39.6889646
-18584,10283,7175,0.0483500943699416,0.0483500943699416,-105.0375025,39.7802085,-105.0380683,39.7802069
-18585,7175,6738,0.0504392554289189,0.0504392554289189,-105.0380683,39.7802069,-105.0386585,39.7802009
-18586,6738,7790,0.0494479351051842,0.0494479351051842,-105.0386585,39.7802009,-105.0392371,39.780195
-18587,7790,6666,0.0500428725179926,0.0500428725179926,-105.0392371,39.780195,-105.0398227,39.780198
-19485,10408,10409,0.0449233009136641,0.0449233009136641,-104.9883415,39.7101799,-104.9883441,39.7097759
-18958,4669,4949,0.0991091352300086,0.0991091352300086,-104.994016,39.720921,-104.9951748,39.720921
-18959,4949,10410,0.051350182738824,0.051350182738824,-104.9951748,39.720921,-104.9957751,39.7209292
-18961,7220,10411,0.0512063955237151,0.0512063955237151,-104.9963617,39.7209372,-104.9969604,39.7209341
-18962,10411,5674,0.0503168586815151,0.0503168586815151,-104.9969604,39.7209341,-104.9975487,39.7209311
-18964,5851,1441,0.115857091100705,0.115857091100705,-105.0025228,39.7148211,-105.0038773,39.7148211
-18965,1441,10412,0.122824478936007,0.122824478936007,-105.0038773,39.7148211,-105.0053132,39.7148113
-18966,10412,7622,0.0791461153811418,0.0791461153811418,-105.0053132,39.7148113,-105.0062385,39.7148085
-18967,7622,6933,0.202629079077677,0.202629079077677,-105.0062385,39.7148085,-105.0086074,39.7148217
-18968,6933,5888,0.202049147826104,0.202049147826104,-105.0086074,39.7148217,-105.0109694,39.7148443
-18969,5888,10407,0.149951393120126,0.149951393120126,-105.0109694,39.7148443,-105.0127225,39.7148426
-18971,4142,7756,0.106122091000002,0.106122091000002,-104.9827054,39.7147303,-104.9814659,39.7146886
-18973,3621,1827,0.0998991515255571,0.0998991515255571,-104.9803587,39.7146886,-104.9791916,39.7147225
-18974,1827,10091,0.0457369036734835,0.0457369036734835,-104.9791916,39.7147225,-104.9786569,39.7147194
-18975,10091,10090,0.0485102588443954,0.0485102588443954,-104.9786569,39.7147194,-104.9780898,39.7147143
-18976,10090,5102,0.00428121670773934,0.00428121670773934,-104.9780898,39.7147143,-104.9780399,39.7147113
-18977,5102,9830,0.0472330884345854,0.0472330884345854,-104.9780399,39.7147113,-104.9774882,39.7146931
-18978,9830,1764,0.0499536922707767,0.0499536922707767,-104.9774882,39.7146931,-104.9769042,39.7146962
-19245,5031,10461,0.0349404698955745,0.0349404698955745,-104.9884893,39.7405273,-104.9888698,39.7406419
-19246,10461,10462,0.146091635323691,0.146091635323691,-104.9888698,39.7406419,-104.9904372,39.7401189
-19247,10462,5803,0.103032761304249,0.103032761304249,-104.9904372,39.7401189,-104.9916422,39.7401229
-19249,10129,4929,0.0162234814669486,0.0162234814669486,-104.9982232,39.7400157,-104.9980335,39.7400187
-19250,4929,2997,0.0775054077358341,0.0775054077358341,-104.9980335,39.7400187,-104.9971271,39.7400109
-19251,2997,7215,0.0556994645707447,0.0556994645707447,-104.9971271,39.7400109,-104.9964757,39.7400063
-19252,7215,4943,0.101417024663026,0.101417024663026,-104.9964757,39.7400063,-104.9952896,39.7400105
-19253,4943,4680,0.100527034724402,0.100527034724402,-104.9952896,39.7400105,-104.9941139,39.7400082
-19254,4680,7861,0.10148450975115,0.10148450975115,-104.9941139,39.7400082,-104.992927,39.7400066
-19255,7861,5802,0.109659923162335,0.109659923162335,-104.992927,39.7400066,-104.9916445,39.7400016
-19256,5802,8768,0.114010676979814,0.114010676979814,-104.9916445,39.7400016,-104.9903111,39.740001
-19257,8768,10464,0.134804410176221,0.134804410176221,-104.9903111,39.740001,-104.9888814,39.740512
-19258,10464,338,0.0847524339031626,0.0847524339031626,-104.9888814,39.740512,-104.9880444,39.7401037
-19259,338,10465,0.0582049460436449,0.0582049460436449,-104.9880444,39.7401037,-104.9873778,39.7399976
-19261,9467,561,0.02991036647086,0.02991036647086,-104.9851948,39.7400592,-104.984845,39.7400568
-15187,8324,9523,0.0327715210342319,0.0327715210342319,-105.0252084,39.7401213,-105.0254385,39.740357
-15189,9403,6744,0.131603339182178,0.131603339182178,-105.0252739,39.7499939,-105.0268132,39.7499821
-15190,6744,6144,0.131367316381262,0.131367316381262,-105.0268132,39.7499821,-105.0283496,39.7500019
-15191,6144,4018,0.137213550559119,0.137213550559119,-105.0283496,39.7500019,-105.0299546,39.7500019
-15192,4018,7022,0.137229962505115,0.137229962505115,-105.0299546,39.7500019,-105.0315597,39.7499887
-15193,7022,7392,0.129151524081427,0.129151524081427,-105.0315597,39.7499887,-105.0330703,39.7500019
-15195,9524,9525,0.0293502828068984,0.0293502828068984,-105.0336803,39.7499978,-105.0340236,39.7499955
-15196,9525,3400,0.0502879609443278,0.0502879609443278,-105.0340236,39.7499955,-105.0346118,39.7499915
-15198,9212,8374,0.0509876682022625,0.0509876682022625,-105.0351931,39.7499892,-105.0357895,39.7499869
-15199,8374,9526,0.0501407630476736,0.0501407630476736,-105.0357895,39.7499869,-105.036376,39.7499878
-15201,7443,9527,0.0485275735168955,0.0485275735168955,-105.036967,39.7499887,-105.0375346,39.7499841
-15202,9527,7160,0.0501690368011668,0.0501690368011668,-105.0375346,39.7499841,-105.0381214,39.7499794
-15204,9528,7772,0.0491757515961192,0.0491757515961192,-105.0387229,39.7499763,-105.0392981,39.7499733
-19414,3251,7295,0.215557365491205,0.215557365491205,-104.9798629,39.70396,-104.9798441,39.7020215
-19415,7295,38,0.193056632398898,0.193056632398898,-104.9798441,39.7020215,-104.9798443,39.7002853
-19416,38,3537,0.207444876530122,0.207444876530122,-104.9798443,39.7002853,-104.9798091,39.6984199
-19417,3537,4232,0.199406339345135,0.199406339345135,-104.9798091,39.6984199,-104.979804,39.6966266
-19419,3248,7289,0.216790622749105,0.216790622749105,-104.9821867,39.7039406,-104.9821695,39.701991
-19420,7289,34,0.19126988034169,0.19126988034169,-104.9821695,39.701991,-104.982156,39.7002709
-19660,6763,3987,0.201101495268523,0.201101495268523,-105.0275974,39.7702694,-105.0299489,39.7703339
-19664,9366,9360,0.104402218346712,0.104402218346712,-105.0211194,39.7692754,-105.0211255,39.7702143
-19665,9360,10609,0.0511942469588291,0.0511942469588291,-105.0211255,39.7702143,-105.0211243,39.7697539
-19666,10609,10608,0.151226661870126,0.151226661870126,-105.0211243,39.7697539,-105.0228937,39.7697604
-19668,10608,10610,0.149537813443153,0.149537813443153,-105.0228937,39.7697604,-105.0246432,39.7697786
-19674,1809,10611,0.33816836736717,0.33816836736717,-105.0077397,39.7522023,-105.0097356,39.7495766
-19676,10376,10403,0.0245741855053009,0.0245741855053009,-105.0120158,39.75012,-105.0122636,39.750008
-19678,10612,1810,0.127204321184034,0.127204321184034,-105.0098938,39.7498133,-105.0094107,39.7508953
-19681,10613,10400,0.0511661482023126,0.0511661482023126,-105.0138421,39.7489553,-105.0134743,39.7485923
-16697,7094,9611,0.00886963723885407,0.00886963723885407,-105.00026,39.7424182,-105.0002927,39.7424939
-19683,10614,10404,0.0688061700167682,0.0688061700167682,-105.0100065,39.7499782,-105.0107841,39.7498186
-19873,9513,4580,0.132311871209248,0.132311871209248,-105.0369818,39.740326,-105.0369879,39.7415159
-19684,10404,10611,0.093589959625359,0.093589959625359,-105.0107841,39.7498186,-105.0097356,39.7495766
-17421,10103,10082,0.0236886540751766,0.0236886540751766,-104.9831832,39.6889646,-104.9834085,39.6888408
-19685,10611,10612,0.0295914472405657,0.0295914472405657,-105.0097356,39.7495766,-105.0098938,39.7498133
-19686,10612,10614,0.0207133170517971,0.0207133170517971,-105.0098938,39.7498133,-105.0100065,39.7499782
-19688,10615,10399,0.0680853608411523,0.0680853608411523,-105.0130481,39.74858,-105.0126923,39.7491278
-19742,8865,3778,0.153182304960692,0.153182304960692,-104.9456473,39.7304952,-104.94565,39.7291176
-19743,3778,10251,0.199472712546792,0.199472712546792,-104.94565,39.7291176,-104.9456527,39.7273237
-20418,10775,10774,0.0781617215430941,0.0781617215430941,-105.0243213,39.7599965,-105.0243795,39.760698
-19804,10646,2619,0.0523061501297365,0.0523061501297365,-104.9969581,39.7230021,-104.9969572,39.7225317
-19839,10655,10656,0.208642261382715,0.208642261382715,-105.0381325,39.7365924,-105.0381528,39.7384687
-19840,10656,9515,0.207256465232075,0.207256465232075,-105.0381528,39.7384687,-105.0381491,39.7403326
-19841,9515,4581,0.131476935756536,0.131476935756536,-105.0381491,39.7403326,-105.0381505,39.741515
-19842,4581,8369,0.136571452698726,0.136571452698726,-105.0381505,39.741515,-105.0381422,39.7427432
-19843,8369,5296,0.134437189399661,0.134437189399661,-105.0381422,39.7427432,-105.0381646,39.7439521
-19849,9510,10659,0.196832023994668,0.196832023994668,-105.0352438,39.7403194,-105.035226,39.7385493
-19850,10659,10660,0.00933491084100046,0.00933491084100046,-105.035226,39.7385493,-105.0352222,39.7384654
-19857,10663,10664,0.203268481110854,0.203268481110854,-105.0428156,39.736637,-105.0428308,39.738465
-19858,10664,4584,0.340902950197611,0.340902950197611,-105.0428308,39.738465,-105.0428428,39.7415308
-19859,4584,6443,0.133958738324445,0.133958738324445,-105.0428428,39.7415308,-105.0428338,39.7427355
-19860,6443,5300,0.13749324562242,0.13749324562242,-105.0428338,39.7427355,-105.042839,39.743972
-19862,10665,7406,0.149893826243372,0.149893826243372,-104.9969526,39.7179403,-104.9969848,39.7165925
-19865,10667,9512,0.206545737430627,0.206545737430627,-105.0363945,39.7384652,-105.0364026,39.7403227
-608,599,600,0.326867712180581,0.326867712180581,-105.0313012,39.7255444,-105.0351121,39.7257688
-19870,10669,10666,0.0946602410525992,0.0946602410525992,-105.03696,39.7365924,-105.03696,39.7374437
-19871,10666,10670,0.114297265097593,0.114297265097593,-105.03696,39.7374437,-105.03696,39.7384716
-19872,10670,9513,0.206208296842551,0.206208296842551,-105.03696,39.7384716,-105.0369818,39.740326
-20654,6734,10882,0.0587106683934502,0.0587106683934502,-105.0187898,39.7597001,-105.0184964,39.7601775
-19874,4580,8368,0.136014360939856,0.136014360939856,-105.0369879,39.7415159,-105.0369827,39.7427391
-19875,8368,3817,0.133956606983629,0.133956606983629,-105.0369827,39.7427391,-105.0369844,39.7439438
-19887,627,10669,0.00369254651812945,0.00369254651812945,-105.0369171,39.7365886,-105.03696,39.7365924
-19888,10669,10673,0.0509541857454109,0.0509541857454109,-105.03696,39.7365924,-105.0375559,39.7365924
-19889,10673,7185,0.0463624089792375,0.0463624089792375,-105.0375559,39.7365924,-105.0380981,39.7365924
-19890,7185,10655,0.00294147338451417,0.00294147338451417,-105.0380981,39.7365924,-105.0381325,39.7365924
-19891,10655,10658,0.0513792379314705,0.0513792379314705,-105.0381325,39.7365924,-105.0387333,39.7365995
-19892,10658,9726,0.0479329871824602,0.0479329871824602,-105.0387333,39.7365995,-105.0392938,39.7366062
-19893,9726,10654,0.050711837363241,0.050711837363241,-105.0392938,39.7366062,-105.0398868,39.736613
-19894,10654,1102,0.049608905570541,0.049608905570541,-105.0398868,39.736613,-105.0404669,39.7366198
-19895,1102,10674,0.051538155846358,0.051538155846358,-105.0404669,39.7366198,-105.0410696,39.7366244
-19896,10674,7514,0.0472454257465845,0.0472454257465845,-105.0410696,39.7366244,-105.0416221,39.7366286
-19897,7514,10675,0.00204366911425749,0.00204366911425749,-105.0416221,39.7366286,-105.041646,39.7366287
-19898,10675,10650,0.0481859646371305,0.0481859646371305,-105.041646,39.7366287,-105.0422095,39.7366329
-19899,10650,3868,0.0500586048613679,0.0500586048613679,-105.0422095,39.7366329,-105.0427949,39.7366372
-16182,5547,1702,0.197838014226301,0.197838014226301,-104.9881577,39.6894044,-104.9881579,39.6911836
-19900,3868,10663,0.00177015306197821,0.00177015306197821,-105.0427949,39.7366372,-105.0428156,39.736637
-19902,10676,5589,0.0437900336804139,0.0437900336804139,-105.0434166,39.7366408,-105.0439287,39.736644
-19975,9710,10678,0.0499234178433857,0.0499234178433857,-105.0322594,39.7384585,-105.0328432,39.738465
-19976,10678,9722,0.0489092169162438,0.0489092169162438,-105.0328432,39.738465,-105.0334152,39.738465
-19977,9722,10686,0.0503973293919778,0.0503973293919778,-105.0334152,39.738465,-105.0340046,39.7384634
-19978,10686,3380,0.0518081278246911,0.0518081278246911,-105.0340046,39.7384634,-105.0346105,39.7384619
-19979,3380,10660,0.0523052391085021,0.0523052391085021,-105.0346105,39.7384619,-105.0352222,39.7384654
-19980,10660,10679,0.0495088072044065,0.0495088072044065,-105.0352222,39.7384654,-105.0358012,39.7384625
-19981,10679,10667,0.0507313759263116,0.0507313759263116,-105.0358012,39.7384625,-105.0363945,39.7384652
-19982,10667,10670,0.0483586645716411,0.0483586645716411,-105.0363945,39.7384652,-105.03696,39.7384716
-19983,10670,10680,0.0518679752837857,0.0518679752837857,-105.03696,39.7384716,-105.0375666,39.7384701
-19984,10680,10656,0.050123635320888,0.050123635320888,-105.0375666,39.7384701,-105.0381528,39.7384687
-19985,10656,10657,0.0496280116055878,0.0496280116055878,-105.0381528,39.7384687,-105.0387332,39.7384666
-19986,10657,9727,0.0488069327339047,0.0488069327339047,-105.0387332,39.7384666,-105.039304,39.7384682
-19989,1103,10684,0.0492526075164636,0.0492526075164636,-105.0404962,39.738465,-105.0410722,39.7384617
-656,646,647,0.146781335789774,0.146781335789774,-104.9354861,39.7413613,-104.9337694,39.7413613
-20153,9416,8943,0.363005134814212,0.363005134814212,-104.99143,39.7707341,-104.9945316,39.7685038
-20155,9241,426,0.0770893533882784,0.0770893533882784,-105.0252006,39.7420351,-105.0252144,39.7427283
-20157,461,6171,0.271278721099677,0.271278721099677,-104.9888564,39.7783921,-104.9860994,39.7796015
-20161,1795,8719,0.00999704268874585,0.00999704268874585,-104.9792579,39.6947744,-104.9792566,39.6946845
-20163,4233,1795,0.205432809418909,0.205432809418909,-104.9792547,39.6966219,-104.9792579,39.6947744
-20165,3252,7296,0.216277689734072,0.216277689734072,-104.9792822,39.7039665,-104.9792677,39.7020215
-20166,7296,39,0.192678596239665,0.192678596239665,-104.9792677,39.7020215,-104.9792689,39.7002887
-20167,39,3538,0.207091579860447,0.207091579860447,-104.9792689,39.7002887,-104.9792415,39.6984264
-20168,3538,4234,0.200695550258567,0.200695550258567,-104.9792415,39.6984264,-104.979217,39.6966216
-20170,6489,3675,0.150803028705812,0.150803028705812,-104.9787322,39.7461798,-104.9787278,39.747536
-20172,9313,4863,0.191918567433925,0.191918567433925,-104.9787299,39.7368736,-104.9787104,39.7351477
-20173,4863,2213,0.160028953629168,0.160028953629168,-104.9787104,39.7351477,-104.9786913,39.7337086
-20174,2213,928,0.187511558441934,0.187511558441934,-104.9786913,39.7337086,-104.9786778,39.7320223
-17423,10083,10104,0.109040593432451,0.109040593432451,-104.9836553,39.6886261,-104.9838931,39.6876627
-20175,928,5932,0.175834480120689,0.175834480120689,-104.9786778,39.7320223,-104.9787119,39.7304412
-20176,5932,3804,0.153555987473657,0.153555987473657,-104.9787119,39.7304412,-104.9787675,39.7290609
-20178,3804,10247,0.200040701273324,0.200040701273324,-104.9787675,39.7290609,-104.978775,39.7272619
-20181,6549,4768,0.17858020416066,0.17858020416066,-104.9787573,39.7240931,-104.9787498,39.7224871
-20185,10705,8247,0.0550533285282311,0.0550533285282311,-104.9639599,39.787996,-104.963496,39.7883396
-15205,7772,9040,0.0507978153373748,0.0507978153373748,-105.0392981,39.7499733,-105.0398922,39.7499655
-15206,9040,1113,0.0497891730866418,0.0497891730866418,-105.0398922,39.7499655,-105.0404745,39.7499577
-15208,9529,7493,0.0494909698776819,0.0494909698776819,-105.0410698,39.7499582,-105.0416487,39.7499586
-15209,7493,9169,0.051731129981418,0.051731129981418,-105.0416487,39.7499586,-105.0422538,39.749957
-15210,9169,3835,0.0502567043103765,0.0502567043103765,-105.0422538,39.749957,-105.0428416,39.7499633
-15212,5624,3708,0.103423232464888,0.103423232464888,-105.0017248,39.7755303,-105.002935,39.7755303
-15213,3708,718,0.104893137935114,0.104893137935114,-105.002935,39.7755303,-105.0041624,39.7755303
-15214,718,9442,0.108559355644902,0.108559355644902,-105.0041624,39.7755303,-105.0054327,39.7755303
-15215,9442,8519,0.0865482797270432,0.0865482797270432,-105.0054327,39.7755303,-105.0064452,39.7755134
-15218,539,540,0.260599478311813,0.260599478311813,-105.0461157,39.7530208,-105.0433843,39.7519802
-15220,9430,9531,0.0962600395709663,0.0962600395709663,-105.0442004,39.7548692,-105.0443549,39.7540117
-15232,8334,8360,0.0525484415568663,0.0525484415568663,-104.9244842,39.6961248,-104.9248705,39.6964922
-15234,9532,9533,0.00803607126282377,0.00803607126282377,-104.9348912,39.7066948,-104.9349851,39.7066969
-16285,2852,1362,0.131790180095648,0.131790180095648,-104.972242,39.697774,-104.9710484,39.6970248
-15236,9534,9535,0.0751513734309232,0.0751513734309232,-104.9352855,39.7067217,-104.9359493,39.706279
-15237,9535,9536,0.0195917533971332,0.0195917533971332,-104.9359493,39.706279,-104.9358729,39.7061129
-15238,9536,9537,0.0515491230280822,0.0515491230280822,-104.9358729,39.7061129,-104.935374,39.7058529
-18878,3216,6125,0.202386413121619,0.202386413121619,-104.9611349,39.7111011,-104.9611403,39.709281
-15239,9537,9538,0.0217956250277941,0.0217956250277941,-104.935374,39.7058529,-104.9352077,39.7057044
-15248,8177,9543,0.0137987617761691,0.0137987617761691,-104.9362135,39.7050335,-104.9363074,39.7049326
-15249,9541,9542,0.0585754347953461,0.0585754347953461,-104.93572,39.7055929,-104.936117,39.7051637
-15262,9552,9550,0.00461416645458039,0.00461416645458039,-104.9337027,39.7048954,-104.9336788,39.7049326
-15263,9550,8208,0.00942903742084459,0.00942903742084459,-104.9336788,39.7049326,-104.9336074,39.7049972
-15264,8208,8203,0.268586250441468,0.268586250441468,-104.9336074,39.7049972,-104.9333927,39.707407
-15265,8203,8187,0.252138571661244,0.252138571661244,-104.9333927,39.707407,-104.9332506,39.7096719
-15267,8182,9552,0.0592295781497915,0.0592295781497915,-104.9340007,39.7044146,-104.9337027,39.7048954
-15275,9553,392,0.159342904018314,0.159342904018314,-104.932842,39.703615,-104.932837,39.702182
-15276,392,443,0.100075433980265,0.100075433980265,-104.932837,39.702182,-104.932837,39.701282
-15277,443,8209,0.110751336507506,0.110751336507506,-104.932837,39.701282,-104.932831,39.700286
-15278,3258,9554,0.029060284587417,0.029060284587417,-104.9296823,39.7037068,-104.9294517,39.7035149
-15279,9555,9556,0.0194857519875014,0.0194857519875014,-104.9469862,39.7110374,-104.9468185,39.711156
-15280,9556,9557,0.01686832436596,0.01686832436596,-104.9468185,39.711156,-104.9466791,39.7112633
-15284,9558,8799,0.0124547414515574,0.0124547414515574,-104.9465426,39.7113542,-104.9464054,39.7113917
-15287,9268,8812,0.43752637477907,0.43752637477907,-104.946452,39.7115485,-104.9497656,39.714546
-15372,9568,7345,0.407049578137861,0.407049578137861,-104.9714922,39.7181793,-104.9667331,39.7181803
-15373,7345,7369,0.0183549065123627,0.0183549065123627,-104.9667331,39.7181803,-104.9665185,39.7181803
-15374,7369,7156,0.617874851338927,0.617874851338927,-104.9665185,39.7181803,-104.9592945,39.7181873
-15375,7156,8802,0.0193374199518318,0.0193374199518318,-104.9592945,39.7181873,-104.9590692,39.7181728
-15376,8802,7317,0.278372348360029,0.278372348360029,-104.9590692,39.7181728,-104.9558194,39.7180363
-15377,7317,7975,0.104085714382657,0.104085714382657,-104.9558194,39.7180363,-104.9546025,39.7180291
-15378,7975,8806,0.102424669696849,0.102424669696849,-104.9546025,39.7180291,-104.953405,39.7180338
-20689,10900,10890,0.00428101320774671,0.00428101320774671,-105.0403805,39.7652999,-105.0403806,39.7653384
-15380,2642,4108,0.0801282359532547,0.0801282359532547,-104.9521739,39.7180386,-104.9512465,39.7179366
-15882,9238,9569,0.375213941828735,0.375213941828735,-105.0454319,39.7354736,-105.0498174,39.7355873
-4422,4132,3782,0.199943657895071,0.199943657895071,-104.9505673,39.7273334,-104.9505822,39.7291315
-15381,4108,7064,0.0951259934580263,0.0951259934580263,-104.9512465,39.7179366,-104.95025,39.7175567
-15383,993,9570,0.0346111476896159,0.0346111476896159,-104.9740165,39.7187595,-104.973941,39.7184537
-15385,9570,2914,0.0185752046128979,0.0185752046128979,-104.973941,39.7184537,-104.9738264,39.7183118
-15393,9572,9573,0.0529385333780706,0.0529385333780706,-104.9582883,39.716017,-104.9589072,39.716013
-15394,9574,9575,0.235820407161737,0.235820407161737,-104.9560321,39.7160129,-104.9533095,39.7156787
-15395,8031,9576,0.0470934184180165,0.0470934184180165,-104.9461768,39.7127943,-104.9467273,39.7128005
-15396,9577,9578,0.0233972200853265,0.0233972200853265,-104.9499594,39.7134958,-104.9499628,39.7137062
-15398,8797,9577,0.0680401949692739,0.0680401949692739,-104.9499588,39.7128839,-104.9499594,39.7134958
-15404,9583,9584,0.0189997554494897,0.0189997554494897,-105.0103359,39.7536233,-105.0101428,39.7537079
-15413,8399,9591,0.147004287358107,0.147004287358107,-104.9860118,39.7553389,-104.9872304,39.7544061
-15414,9591,9592,0.0201167087704522,0.0201167087704522,-104.9872304,39.7544061,-104.9873927,39.7542751
-15415,9592,8857,0.127975925737851,0.127975925737851,-104.9873927,39.7542751,-104.9884337,39.753448
-15416,8857,7897,0.144523217943683,0.144523217943683,-104.9884337,39.753448,-104.9896341,39.7525328
-15864,9238,9744,0.017876559138977,0.017876559138977,-105.0454319,39.7354736,-105.0455901,39.7355787
-765,765,766,0.102953430637808,0.102953430637808,-105.0097824,39.702535,-105.0109855,39.7025566
-15417,7897,8290,0.14604137147811,0.14604137147811,-104.9896341,39.7525328,-104.9908493,39.7516097
-15418,8290,8283,0.146330295926468,0.146330295926468,-104.9908493,39.7516097,-104.9920377,39.7506626
-15419,8283,9593,0.142033870447888,0.142033870447888,-104.9920377,39.7506626,-104.9932078,39.7497558
-15420,9593,5781,0.00569268198805717,0.00569268198805717,-104.9932078,39.7497558,-104.9932554,39.74972
-15421,5781,8573,0.144843439528192,0.144843439528192,-104.9932554,39.74972,-104.9944322,39.7487829
-15422,8573,6709,0.145981160506706,0.145981160506706,-104.9944322,39.7487829,-104.9956475,39.7478607
-15423,6709,8489,0.147059173742998,0.147059173742998,-104.9956475,39.7478607,-104.9968701,39.7469304
-20690,10890,10906,0.00389182243300479,0.00389182243300479,-105.0403806,39.7653384,-105.0403806,39.7653734
-15424,8489,9595,0.146421765893647,0.146421765893647,-104.9968701,39.7469304,-104.9980797,39.7459982
-15425,9595,8637,0.147888642293711,0.147888642293711,-104.9980797,39.7459982,-104.9993008,39.7450562
-15427,4935,9590,0.0193454164735318,0.0193454164735318,-104.9999815,39.7444843,-105.0001457,39.7443646
-15430,8608,1478,0.0099286705971119,0.0099286705971119,-105.0009845,39.7418987,-105.0010729,39.7418408
-15433,7965,9599,0.0149228575371813,0.0149228575371813,-104.999898,39.7420139,-105.0000258,39.7419225
-15434,9599,9600,0.0470176213777162,0.0470176213777162,-105.0000258,39.7419225,-105.0002179,39.7415263
-16271,9867,94,0.0502509464237392,0.0502509464237392,-104.955726,39.700668,-104.9557126,39.7002162
-16273,9867,3654,0.100162413874862,0.100162413874862,-104.955726,39.700668,-104.9550095,39.7013804
-15435,9600,9601,0.0734739685688771,0.0734739685688771,-105.0002179,39.7415263,-105.0002535,39.7408661
-15436,9601,9602,0.120469898327734,0.120469898327734,-105.0002535,39.7408661,-105.0014283,39.740268
-15474,9617,9618,0.0309123358720865,0.0309123358720865,-105.0006163,39.7464486,-105.0008107,39.746683
-15475,9618,9620,0.138252717835719,0.138252717835719,-105.0008107,39.746683,-105.0020353,39.747495
-15476,9620,8583,0.0318418680569216,0.0318418680569216,-105.0020353,39.747495,-105.0023143,39.7476847
-15477,8583,8311,0.113486958547973,0.113486958547973,-105.0023143,39.7476847,-105.0031123,39.7485003
-15478,8311,2808,0.019311822890669,0.019311822890669,-105.0031123,39.7485003,-105.0032328,39.7486472
-15479,2808,9621,0.209882261055166,0.209882261055166,-105.0032328,39.7486472,-105.0046936,39.7501642
-15480,9621,8522,0.0161981079077479,0.0161981079077479,-105.0046936,39.7501642,-105.0048268,39.7502678
-15481,8522,8465,0.180991531047255,0.180991531047255,-105.0048268,39.7502678,-105.0063608,39.7513896
-15487,9624,8468,0.0340418553637742,0.0340418553637742,-105.0012783,39.7478811,-105.0008907,39.7479512
-15786,9625,9596,0.0115036173464072,0.0115036173464072,-105.0249286,39.7370709,-105.0247945,39.7370792
-15489,9626,9618,0.0131866115872677,0.0131866115872677,-105.0006793,39.7467451,-105.0008107,39.746683
-15494,4937,9617,0.0698272217766147,0.0698272217766147,-105.0002133,39.7459024,-105.0006163,39.7464486
-15496,9628,9607,0.229575641341845,0.229575641341845,-104.9987907,39.7407672,-104.9997573,39.7426934
-15497,9607,9629,0.399617180847297,0.399617180847297,-104.9997573,39.7426934,-105.0003179,39.7462613
-15498,9629,8646,0.256050430773093,0.256050430773093,-105.0003179,39.7462613,-105.0012593,39.7484473
-15500,9630,7969,0.0158758080194332,0.0158758080194332,-104.9987212,39.7401977,-104.9989064,39.7402079
-20692,10907,5885,0.00586950671491746,0.00586950671491746,-105.026532,39.7636394,-105.0264783,39.7636723
-20693,5885,10908,0.00728749668565428,0.00728749668565428,-105.0264783,39.7636723,-105.0264211,39.7637209
-15501,7969,6652,0.0898251140375734,0.0898251140375734,-104.9989064,39.7402079,-104.9999567,39.7402253
-15502,6652,3939,0.0164838165497055,0.0164838165497055,-104.9999567,39.7402253,-105.0001493,39.7402188
-15504,5618,2286,0.10606737169151,0.10606737169151,-105.0015736,39.7401631,-105.0028141,39.740161
-15506,4494,9631,0.0855716406365801,0.0855716406365801,-105.0052335,39.7402363,-105.0062339,39.740258
-15508,9632,9630,0.0305358161263308,0.0305358161263308,-104.998365,39.7401779,-104.9987212,39.7401977
-15510,9633,4938,0.00998098524134014,0.00998098524134014,-104.997523,39.7384588,-104.9976397,39.7384568
-15511,4938,6650,0.146459053749354,0.146459053749354,-104.9976397,39.7384568,-104.9993525,39.7384677
-15512,6650,3942,0.0669626682021978,0.0669626682021978,-104.9993525,39.7384677,-105.0001356,39.7384618
-15513,3942,9634,0.0625685122990456,0.0625685122990456,-105.0001356,39.7384618,-105.0008673,39.7384682
-15514,9634,5614,0.0589940973382129,0.0589940973382129,-105.0008673,39.7384682,-105.0015572,39.7384742
-15515,5614,9635,0.0521244888471325,0.0521244888471325,-105.0015572,39.7384742,-105.0021668,39.7384727
-15518,9636,9633,0.0394950652718853,0.0394950652718853,-104.9970611,39.7384591,-104.997523,39.7384588
-15520,9637,4687,0.0148908622684888,0.0148908622684888,-104.9939487,39.7336881,-104.9941176,39.7336555
-15522,5369,9637,0.0293813837370069,0.0293813837370069,-104.9936509,39.7338199,-104.9939487,39.7336881
-15524,9638,4939,0.016179725599566,0.016179725599566,-104.9962859,39.7368624,-104.9964751,39.7368603
-15525,4939,7226,0.0545709952111213,0.0545709952111213,-104.9964751,39.7368603,-104.9971131,39.7368726
-15526,7226,9640,0.0899454990944897,0.0899454990944897,-104.9971131,39.7368726,-104.998165,39.7368735
-15527,9640,6648,0.0447546990135401,0.0447546990135401,-104.998165,39.7368735,-104.9986884,39.7368739
-15528,6648,9641,0.0618904241631349,0.0618904241631349,-104.9986884,39.7368739,-104.9994122,39.7368744
-15529,9641,3943,0.062420581454241,0.062420581454241,-104.9994122,39.7368744,-105.0001422,39.736875
-15530,3943,9642,0.0627968141202241,0.0627968141202241,-105.0001422,39.736875,-105.0008766,39.7368756
-15531,9642,5613,0.0612320254822175,0.0612320254822175,-105.0008766,39.7368756,-105.0015927,39.7368762
-15532,5613,9643,0.0497740720528068,0.0497740720528068,-105.0015927,39.7368762,-105.0021748,39.7368753
-15533,9643,3735,0.0551525120669933,0.0551525120669933,-105.0021748,39.7368753,-105.0028198,39.7368743
-15534,3735,4491,0.207391837271035,0.207391837271035,-105.0028198,39.7368743,-105.0052452,39.7368819
-15535,4491,129,0.109629298465467,0.109629298465467,-105.0052452,39.7368819,-105.0065273,39.7368825
-15536,129,7948,0.0410521986313786,0.0410521986313786,-105.0065273,39.7368825,-105.0070074,39.7368827
-15537,7948,2527,0.287151637527745,0.287151637527745,-105.0070074,39.7368827,-105.0103656,39.7368844
-15538,2527,9644,0.066959748271427,0.066959748271427,-105.0103656,39.7368844,-105.0111486,39.7368933
-15539,9644,1221,0.102833533420687,0.102833533420687,-105.0111486,39.7368933,-105.0123509,39.7369148
-16595,9951,6712,0.00734129639736197,0.00734129639736197,-104.9979162,39.749516,-104.9978555,39.7495627
-15542,618,9638,0.0309196803723069,0.0309196803723069,-104.9959243,39.7368632,-104.9962859,39.7368624
-15548,9647,9648,0.0291957554146951,0.0291957554146951,-104.98691,39.7265869,-104.9872502,39.7266088
-15549,7572,9649,0.0425327114545183,0.0425327114545183,-104.9861902,39.7259939,-104.98616,39.7263757
-15551,9650,9651,0.00414955523410263,0.00414955523410263,-104.9818746,39.7225925,-104.9818965,39.7225592
-15553,9651,9652,0.0110054302366685,0.0110054302366685,-104.9818965,39.7225592,-104.9819635,39.7224747
-15555,9652,9653,0.018743029705938,0.018743029705938,-104.9819635,39.7224747,-104.981824,39.7223447
-15558,9656,4160,0.0156451635843959,0.0156451635843959,-104.9775416,39.7199763,-104.977542,39.720117
-15559,4160,4769,0.262100180691146,0.262100180691146,-104.977542,39.720117,-104.9775557,39.7224741
-15560,4769,6550,0.17763389531497,0.17763389531497,-104.9775557,39.7224741,-104.9775557,39.7240716
-15561,6550,9299,0.171507609467602,0.171507609467602,-104.9775557,39.7240716,-104.9775506,39.725614
-15564,3803,5934,0.15587305192408,0.15587305192408,-104.977579,39.7290515,-104.9775786,39.7304533
-15565,5934,930,0.176935041153743,0.176935041153743,-104.9775786,39.7304533,-104.9775696,39.7320445
-15566,930,2215,0.185037322727603,0.185037322727603,-104.9775696,39.7320445,-104.9775909,39.7337085
-15567,2215,4865,0.15888388268895,0.15888388268895,-104.9775909,39.7337085,-104.9775716,39.7351373
-15568,4865,9477,0.193757182508649,0.193757182508649,-104.9775716,39.7351373,-104.9775705,39.7368798
-15569,9477,5466,0.16958064463752,0.16958064463752,-104.9775705,39.7368798,-104.9776145,39.7384045
-15570,5466,9658,0.179556785798918,0.179556785798918,-104.9776145,39.7384045,-104.9775745,39.740019
-15571,9658,9659,0.177338892845698,0.177338892845698,-104.9775745,39.740019,-104.977538,39.7416136
-15572,9659,662,0.00516539932395329,0.00516539932395329,-104.977538,39.7416136,-104.9775409,39.74166
-18431,10291,7169,0.0508784288394603,0.0508784288394603,-105.0387163,39.7625667,-105.0381211,39.7625719
-15573,662,9660,0.00343592323317494,0.00343592323317494,-104.9775409,39.74166,-104.9775409,39.7416909
-15575,9464,4609,0.17585408606,0.17585408606,-104.9775584,39.7432677,-104.977536,39.7448491
-15576,4609,6490,0.148161596916065,0.148161596916065,-104.977536,39.7448491,-104.9775509,39.7461815
-15577,6490,7974,0.0885778987826885,0.0885778987826885,-104.9775509,39.7461815,-104.9775516,39.7469781
-15579,4336,9656,0.0458791064556152,0.0458791064556152,-104.9775406,39.7195637,-104.9775416,39.7199763
-15581,7573,3556,0.0299599314208067,0.0299599314208067,-104.9744777,39.7548059,-104.9747379,39.7546254
-15583,851,7096,0.0990470064031014,0.0990470064031014,-104.9429635,39.7581888,-104.9418048,39.7581888
-15584,7096,9661,0.0107677923604542,0.0107677923604542,-104.9418048,39.7581888,-104.9416791,39.7581825
-15585,9661,9662,0.0081027242638239,0.0081027242638239,-104.9416791,39.7581825,-104.9415847,39.7581891
-15586,9662,9663,0.00747970901198794,0.00747970901198794,-104.9415847,39.7581891,-104.9414989,39.7582023
-15587,9663,9664,0.00836437719840195,0.00836437719840195,-104.9414989,39.7582023,-104.9414045,39.7582221
-15588,9664,9665,0.00928103292942469,0.00928103292942469,-104.9414045,39.7582221,-104.9413015,39.7582485
-15589,9665,9666,0.00696482735297281,0.00696482735297281,-104.9413015,39.7582485,-104.9412242,39.7582683
-15590,9666,9667,0.00676039634627663,0.00676039634627663,-104.9412242,39.7582683,-104.941147,39.7582815
-15591,9667,9668,0.00737940382126904,0.00737940382126904,-104.941147,39.7582815,-104.9410611,39.7582881
-15592,9668,9669,0.0330209265296029,0.0330209265296029,-104.9410611,39.7582881,-104.9406749,39.7582947
-15593,9669,8703,0.0154036792176203,0.0154036792176203,-104.9406749,39.7582947,-104.9404947,39.7582947
-15594,8703,8152,0.0935877668611654,0.0935877668611654,-104.9404947,39.7582947,-104.9393999,39.7582878
-15595,8152,7613,0.0937841622026169,0.0937841622026169,-104.9393999,39.7582878,-104.9383029,39.758301
-15596,7613,7266,0.0918493440897444,0.0918493440897444,-104.9383029,39.758301,-104.9372284,39.758301
-15597,7266,7585,0.0967046653962524,0.0967046653962524,-104.9372284,39.758301,-104.9360971,39.758301
-15599,2003,3363,0.0896469251714999,0.0896469251714999,-104.9349898,39.7583076,-104.9339411,39.7583142
-15600,3363,2757,0.0953909752557553,0.0953909752557553,-104.9339411,39.7583142,-104.9328253,39.7583274
-15601,2757,9670,0.0852737689905025,0.0852737689905025,-104.9328253,39.7583274,-104.9318279,39.758313
-15602,9670,9671,0.00427910266137011,0.00427910266137011,-104.9318279,39.758313,-104.9317783,39.7583182
-15603,9671,7008,0.00522846022655691,0.00522846022655691,-104.9317783,39.7583182,-104.9317193,39.7583306
-15604,7008,9672,0.00318311155269209,0.00318311155269209,-104.9317193,39.7583306,-104.9316858,39.7583431
-15605,9672,9673,0.00446550904917084,0.00446550904917084,-104.9316858,39.7583431,-104.9316375,39.7583584
-15606,9673,9674,0.0041674932546887,0.0041674932546887,-104.9316375,39.7583584,-104.9315892,39.7583635
-15607,9674,2283,0.0902343315694916,0.0902343315694916,-104.9315892,39.7583635,-104.9305336,39.7583604
-15608,2283,3604,0.0998061678618656,0.0998061678618656,-104.9305336,39.7583604,-104.9293663,39.7583802
-15609,3604,7530,0.0990712121378624,0.0990712121378624,-104.9293663,39.7583802,-104.9282076,39.7583604
-15610,7530,2138,0.109343720002506,0.109343720002506,-104.9282076,39.7583604,-104.9269287,39.7583802
-15611,2138,5995,0.0993207600682094,0.0993207600682094,-104.9269287,39.7583802,-104.9257668,39.7583774
-15612,5995,7675,0.101107003151938,0.101107003151938,-104.9257668,39.7583774,-104.924584,39.7583757
-15613,7675,9675,0.0981911301047578,0.0981911301047578,-104.924584,39.7583757,-104.9234354,39.7583868
-15614,9675,9676,0.100210056589884,0.100210056589884,-104.9234354,39.7583868,-104.9222632,39.7583745
-15615,9676,9677,0.100165741773797,0.100165741773797,-104.9222632,39.7583745,-104.9210915,39.7583633
-15616,9677,9678,0.100142214318315,0.100142214318315,-104.9210915,39.7583633,-104.91992,39.7583679
-15617,9678,9679,0.0993326168253197,0.0993326168253197,-104.91992,39.7583679,-104.918758,39.7583757
-899,913,914,0.147143450226327,0.147143450226327,-104.9806193,39.771691,-104.9793447,39.7725806
-20715,10914,9397,0.00810191720556871,0.00810191720556871,-105.0253716,39.7632346,-105.0252842,39.7632064
-15619,9680,9681,0.102717909771226,0.102717909771226,-104.9175671,39.7583757,-104.9163655,39.7583839
-15620,9681,9682,0.100023276858498,0.100023276858498,-104.9163655,39.7583839,-104.9151955,39.7583708
-15621,9682,9683,0.100843312370816,0.100843312370816,-104.9151955,39.7583708,-104.9140158,39.7583757
-15622,9683,9684,0.101658088937986,0.101658088937986,-104.9140158,39.7583757,-104.9128266,39.758384
-15623,9684,9685,0.0375181649725389,0.0375181649725389,-104.9128266,39.758384,-104.9123877,39.7583821
-15624,9685,9686,0.0593326737516342,0.0593326737516342,-104.9123877,39.7583821,-104.9116936,39.758384
-15625,9686,9687,0.102011015676098,0.102011015676098,-104.9116936,39.758384,-104.9105005,39.7584038
-15627,9688,9689,0.110065273053945,0.110065273053945,-104.9094325,39.758409,-104.908145,39.7583966
-15628,9689,9690,0.109733851792721,0.109733851792721,-104.908145,39.7583966,-104.9068613,39.7583906
-15629,9690,9691,0.0939207749458389,0.0939207749458389,-104.9068613,39.7583906,-104.9057627,39.7584038
-15630,9691,9692,0.102876500148466,0.102876500148466,-104.9057627,39.7584038,-104.9045594,39.7584208
-15631,9692,9693,0.0940860472810003,0.0940860472810003,-104.9045594,39.7584208,-104.9034588,39.7584114
-15633,851,7096,0.0990470064031014,0.0990470064031014,-104.9429635,39.7581888,-104.9418048,39.7581888
-15634,7096,9661,0.0107677923604542,0.0107677923604542,-104.9418048,39.7581888,-104.9416791,39.7581825
-15635,9661,9662,0.0081027242638239,0.0081027242638239,-104.9416791,39.7581825,-104.9415847,39.7581891
-15636,9662,9663,0.00747970901198794,0.00747970901198794,-104.9415847,39.7581891,-104.9414989,39.7582023
-15637,9663,9664,0.00836437719840195,0.00836437719840195,-104.9414989,39.7582023,-104.9414045,39.7582221
-15638,9664,9665,0.00928103292942469,0.00928103292942469,-104.9414045,39.7582221,-104.9413015,39.7582485
-15639,9665,9666,0.00696482735297281,0.00696482735297281,-104.9413015,39.7582485,-104.9412242,39.7582683
-15641,9667,9668,0.00737940382126904,0.00737940382126904,-104.941147,39.7582815,-104.9410611,39.7582881
-15642,9668,9669,0.0330209265296029,0.0330209265296029,-104.9410611,39.7582881,-104.9406749,39.7582947
-15644,8703,8152,0.0935877668611654,0.0935877668611654,-104.9404947,39.7582947,-104.9393999,39.7582878
-20716,9397,9341,0.0111932287865196,0.0111932287865196,-105.0252842,39.7632064,-105.0251701,39.763157
-15645,8152,7613,0.0937841622026169,0.0937841622026169,-104.9393999,39.7582878,-104.9383029,39.758301
-15646,7613,7266,0.0918493440897444,0.0918493440897444,-104.9383029,39.758301,-104.9372284,39.758301
-15647,7266,7585,0.0967046653962524,0.0967046653962524,-104.9372284,39.758301,-104.9360971,39.758301
-15648,7585,2003,0.0946559616738872,0.0946559616738872,-104.9360971,39.758301,-104.9349898,39.7583076
-15649,2003,3363,0.0896469251714999,0.0896469251714999,-104.9349898,39.7583076,-104.9339411,39.7583142
-15650,3363,2757,0.0953909752557553,0.0953909752557553,-104.9339411,39.7583142,-104.9328253,39.7583274
-15651,2757,9670,0.0852737689905025,0.0852737689905025,-104.9328253,39.7583274,-104.9318279,39.758313
-15652,9670,9671,0.00427910266137011,0.00427910266137011,-104.9318279,39.758313,-104.9317783,39.7583182
-15653,9671,7008,0.00522846022655691,0.00522846022655691,-104.9317783,39.7583182,-104.9317193,39.7583306
-15654,7008,9672,0.00318311155269209,0.00318311155269209,-104.9317193,39.7583306,-104.9316858,39.7583431
-15655,9672,9673,0.00446550904917084,0.00446550904917084,-104.9316858,39.7583431,-104.9316375,39.7583584
-15656,9673,9674,0.0041674932546887,0.0041674932546887,-104.9316375,39.7583584,-104.9315892,39.7583635
-15657,9674,2283,0.0902343315694916,0.0902343315694916,-104.9315892,39.7583635,-104.9305336,39.7583604
-15658,2283,3604,0.0998061678618656,0.0998061678618656,-104.9305336,39.7583604,-104.9293663,39.7583802
-15659,3604,7530,0.0990712121378624,0.0990712121378624,-104.9293663,39.7583802,-104.9282076,39.7583604
-940,955,956,0.0467857248690536,0.0467857248690536,-104.9456366,39.7320897,-104.9450895,39.7320866
-15660,7530,2138,0.109343720002506,0.109343720002506,-104.9282076,39.7583604,-104.9269287,39.7583802
-15661,2138,5995,0.0993207600682094,0.0993207600682094,-104.9269287,39.7583802,-104.9257668,39.7583774
-15663,7675,9675,0.0981911301047578,0.0981911301047578,-104.924584,39.7583757,-104.9234354,39.7583868
-15664,9675,9676,0.100210056589884,0.100210056589884,-104.9234354,39.7583868,-104.9222632,39.7583745
-15665,9676,9677,0.100165741773797,0.100165741773797,-104.9222632,39.7583745,-104.9210915,39.7583633
-15666,9677,9678,0.100142214318315,0.100142214318315,-104.9210915,39.7583633,-104.91992,39.7583679
-20717,9341,10910,0.0086655068036058,0.0086655068036058,-105.0251701,39.763157,-105.0250813,39.7631194
-15667,9678,9679,0.0993326168253197,0.0993326168253197,-104.91992,39.7583679,-104.918758,39.7583757
-15668,9679,9680,0.101799223111765,0.101799223111765,-104.918758,39.7583757,-104.9175671,39.7583757
-15669,9680,9681,0.102717909771226,0.102717909771226,-104.9175671,39.7583757,-104.9163655,39.7583839
-15670,9681,9682,0.100023276858498,0.100023276858498,-104.9163655,39.7583839,-104.9151955,39.7583708
-15671,9682,9683,0.100843312370816,0.100843312370816,-104.9151955,39.7583708,-104.9140158,39.7583757
-15672,9683,9684,0.101658088937986,0.101658088937986,-104.9140158,39.7583757,-104.9128266,39.758384
-15673,9684,9685,0.0375181649725389,0.0375181649725389,-104.9128266,39.758384,-104.9123877,39.7583821
-15675,9686,9687,0.102011015676098,0.102011015676098,-104.9116936,39.758384,-104.9105005,39.7584038
-15676,9687,9688,0.091295408872665,0.091295408872665,-104.9105005,39.7584038,-104.9094325,39.758409
-15677,9688,9689,0.110065273053945,0.110065273053945,-104.9094325,39.758409,-104.908145,39.7583966
-15678,9689,9690,0.109733851792721,0.109733851792721,-104.908145,39.7583966,-104.9068613,39.7583906
-15679,9690,9691,0.0939207749458389,0.0939207749458389,-104.9068613,39.7583906,-104.9057627,39.7584038
-15680,9691,9692,0.102876500148466,0.102876500148466,-104.9057627,39.7584038,-104.9045594,39.7584208
-15681,9692,9693,0.0940860472810003,0.0940860472810003,-104.9045594,39.7584208,-104.9034588,39.7584114
-15684,7680,3450,0.103468199661171,0.103468199661171,-104.9473666,39.7178126,-104.9461569,39.7178084
-15686,6014,3880,0.103612570358144,0.103612570358144,-104.9449634,39.7178023,-104.943752,39.7178027
-15687,3880,842,0.103458609408344,0.103458609408344,-104.943752,39.7178027,-104.9425424,39.717803
-15688,842,7097,0.103202015659942,0.103202015659942,-104.9425424,39.717803,-104.9413358,39.7178027
-15689,7097,9694,0.047717886337947,0.047717886337947,-104.9413358,39.7178027,-104.9407779,39.7178027
-15690,9694,8693,0.0153273459011852,0.0153273459011852,-104.9407779,39.7178027,-104.9405987,39.7178021
-15691,8693,8154,0.0909950973067502,0.0909950973067502,-104.9405987,39.7178021,-104.939535,39.717787
-15692,8154,7616,0.0940844002869557,0.0940844002869557,-104.939535,39.717787,-104.938435,39.717787
-20719,10885,9398,0.0070860203578635,0.0070860203578635,-105.0253682,39.762093,-105.0252853,39.7620928
-15693,7616,7269,0.0941699315585107,0.0941699315585107,-104.938435,39.717787,-104.937334,39.717787
-15695,2024,3357,0.101537173300766,0.101537173300766,-104.935134,39.717787,-104.9339472,39.7178087
-15696,3357,2761,0.09936727049288,0.09936727049288,-104.9339472,39.7178087,-104.9327855,39.7177992
-15697,2761,7002,0.0992423706702366,0.0992423706702366,-104.9327855,39.7177992,-104.9316252,39.7178019
-15698,7002,2264,0.0979906184711561,0.0979906184711561,-104.9316252,39.7178019,-104.9304797,39.7178171
-15699,2264,3594,0.0994063483699449,0.0994063483699449,-104.9304797,39.7178171,-104.9293175,39.7178227
-15700,3594,7517,0.101662572945496,0.101662572945496,-104.9293175,39.7178227,-104.9281289,39.7178243
-15701,7517,2099,0.100157096238172,0.100157096238172,-104.9281289,39.7178243,-104.9269579,39.717825
-15702,2099,5976,0.101294873446063,0.101294873446063,-104.9269579,39.717825,-104.9257736,39.717827
-15703,5976,7666,0.100715370574341,0.100715370574341,-104.9257736,39.717827,-104.9245961,39.7178332
-15705,2329,9695,0.166702045988164,0.166702045988164,-104.9234266,39.7178332,-104.9214776,39.71784
-15706,8023,8686,0.102850512121315,0.102850512121315,-104.9485858,39.7178178,-104.9497874,39.7178534
-15708,8810,7064,0.0240522165973304,0.0240522165973304,-104.9500622,39.7177177,-104.95025,39.7175567
-15710,8803,7155,0.0191394427517654,0.0191394427517654,-104.9590745,39.7183523,-104.9592982,39.7183567
-15711,7155,6281,0.12107437233707,0.12107437233707,-104.9592982,39.7183567,-104.9607137,39.718346
-15712,6281,1050,0.111583194341316,0.111583194341316,-104.9607137,39.718346,-104.9620183,39.718346
-15714,3913,3150,0.158539469564201,0.158539469564201,-104.963317,39.7183519,-104.9651706,39.7183518
-15715,3150,3124,0.0198304894474349,0.0198304894474349,-104.9651706,39.7183518,-104.9654024,39.718348
-15716,3124,7370,0.0954616596060542,0.0954616596060542,-104.9654024,39.718348,-104.9665185,39.7183519
-15717,7370,7346,0.018354860843617,0.018354860843617,-104.9665185,39.7183519,-104.9667331,39.7183519
-15718,7346,6806,0.0981383819816197,0.0981383819816197,-104.9667331,39.7183519,-104.9678805,39.718355
-15719,6806,6802,0.0198184437093697,0.0198184437093697,-104.9678805,39.718355,-104.9681122,39.7183532
-15720,6802,4711,0.111589534373845,0.111589534373845,-104.9681122,39.7183532,-104.9694168,39.7183425
-15721,4711,782,0.0471200606837116,0.0471200606837116,-104.9694168,39.7183425,-104.9699677,39.7183394
-15722,782,5113,0.0527296074626885,0.0527296074626885,-104.9699677,39.7183394,-104.9705842,39.7183394
-15723,5113,1545,0.0490000601275782,0.0490000601275782,-104.9705842,39.7183394,-104.9711569,39.7183279
-15724,1545,6325,0.0500984428583215,0.0500984428583215,-104.9711569,39.7183279,-104.9717416,39.7183547
-15728,9449,9696,0.165726699390797,0.165726699390797,-104.9558247,39.7176986,-104.9554143,39.716242
-15732,8801,5164,0.779026857141219,0.779026857141219,-104.9590492,39.7160869,-104.9499442,39.7162631
-15734,9303,1207,0.168708605950551,0.168708605950551,-104.9439908,39.7256083,-104.9439778,39.7271255
-15735,1207,9698,0.0215813490172367,0.0215813490172367,-104.9439778,39.7271255,-104.9439853,39.7273195
-15736,9698,3771,0.199072281764282,0.199072281764282,-104.9439853,39.7273195,-104.9439848,39.7291098
-15738,8867,958,0.177734005515433,0.177734005515433,-104.9439798,39.7304995,-104.9439811,39.7320979
-15739,958,9420,0.172099550054797,0.172099550054797,-104.9439811,39.7320979,-104.9439933,39.7336456
-15740,9420,4896,0.162799282631442,0.162799282631442,-104.9439933,39.7336456,-104.9439627,39.7351095
-15741,4896,9470,0.183516274472291,0.183516274472291,-104.9439627,39.7351095,-104.9439656,39.7367599
-15742,9470,5493,0.174731799993968,0.174731799993968,-104.9439656,39.7367599,-104.9439677,39.7383313
-15743,5493,9699,0.19822011575815,0.19822011575815,-104.9439677,39.7383313,-104.9439825,39.7401139
-15745,6718,4833,0.101679501011927,0.101679501011927,-104.9425631,39.711506,-104.9437517,39.7114947
-15746,4833,6378,0.103648655421083,0.103648655421083,-104.9437517,39.7114947,-104.9449634,39.7114907
-15747,6378,3188,0.103521991883946,0.103521991883946,-104.9449634,39.7114907,-104.9461736,39.7114973
-15749,8692,1060,0.0921643567251203,0.0921643567251203,-104.9406148,39.716237,-104.9395373,39.7162311
-15750,1060,1697,0.0932426366322247,0.0932426366322247,-104.9395373,39.7162311,-104.9384472,39.7162245
-15751,1697,7268,0.0954492333486145,0.0954492333486145,-104.9384472,39.7162245,-104.9373314,39.7162377
-15752,7268,6671,0.0907592732101769,0.0907592732101769,-104.9373314,39.7162377,-104.9362703,39.7162376
-15754,2023,3356,0.0971424118361729,0.0971424118361729,-104.9350998,39.7162443,-104.9339641,39.7162382
-15756,2760,7001,0.10039029368168,0.10039029368168,-104.9328153,39.7162508,-104.9316416,39.7162506
-15757,7001,2263,0.0995790205304853,0.0995790205304853,-104.9316416,39.7162506,-104.9304775,39.7162632
-15758,2263,3487,0.100064167822274,0.100064167822274,-104.9304775,39.7162632,-104.9293078,39.7162471
-15760,5346,2098,0.0987082712844417,0.0987082712844417,-104.9281276,39.716246,-104.9269736,39.7162529
-15761,2098,2940,0.101254724790906,0.101254724790906,-104.9269736,39.7162529,-104.9257898,39.7162499
-15763,6814,9700,0.201962621208867,0.201962621208867,-104.9246289,39.7162454,-104.9222677,39.7162528
-15766,9701,9702,0.01946308379228,0.01946308379228,-105.0380289,39.7329878,-105.0382565,39.732989
-15767,9702,7793,0.0917115184551997,0.0917115184551997,-105.0382565,39.732989,-105.0393289,39.7329999
-15768,7793,9703,0.0139663687397926,0.0139663687397926,-105.0393289,39.7329999,-105.039492,39.7329933
-15769,9703,9044,0.0844498524584079,0.0844498524584079,-105.039492,39.7329933,-105.0404793,39.7330112
-15770,9044,1093,0.00878466321187049,0.00878466321187049,-105.0404793,39.7330112,-105.040582,39.7330131
-15771,1093,7489,0.0946907062423257,0.0946907062423257,-105.040582,39.7330131,-105.0416893,39.7330197
-15772,7489,3839,0.0924847260791552,0.0924847260791552,-105.0416893,39.7330197,-105.0427707,39.7330329
-15773,3839,9041,0.00820472152594153,0.00820472152594153,-105.0427707,39.7330329,-105.0428651,39.7330461
-15774,9041,5598,0.0888252595207534,0.0888252595207534,-105.0428651,39.7330461,-105.0439037,39.7330329
-15775,5598,9038,0.0124773684874939,0.0124773684874939,-105.0439037,39.7330329,-105.0440496,39.7330344
-15776,9038,7546,0.0939528798953845,0.0939528798953845,-105.0440496,39.7330344,-105.0451482,39.7330461
-15817,9704,9705,0.0108623818240175,0.0108623818240175,-105.0273936,39.7360623,-105.0273775,39.7359654
-15777,7546,9706,0.691905770916309,0.691905770916309,-105.0451482,39.7330461,-105.0532391,39.733108
-15800,1403,9709,0.0705866891174833,0.0705866891174833,-105.0321575,39.73505,-105.0321558,39.7356848
-15801,9709,620,0.0978636674417251,0.0978636674417251,-105.0321558,39.7356848,-105.0322182,39.7365636
-15802,620,9710,0.210732715068668,0.210732715068668,-105.0322182,39.7365636,-105.0322594,39.7384585
-15803,9710,1934,0.00294671517895333,0.00294671517895333,-105.0322594,39.7384585,-105.0322592,39.738485
-15812,9716,2323,0.0248152326425255,0.0248152326425255,-105.0223349,39.737401,-105.0223537,39.7376237
-15814,9717,9718,0.0914794540174667,0.0914794540174667,-105.0311809,39.7378898,-105.0303789,39.7373453
-15815,9718,9719,0.0447183943765151,0.0447183943765151,-105.0303789,39.7373453,-105.0302877,39.7369493
-19498,10525,10526,0.0198486557174526,0.0198486557174526,-104.9883652,39.7073679,-104.9883666,39.7071894
-15816,9719,9704,0.266399501314719,0.266399501314719,-105.0302877,39.7369493,-105.0273936,39.7360623
-15823,622,9720,0.114642644128587,0.114642644128587,-105.0334066,39.7365509,-105.0334112,39.7375819
-15824,9720,9721,0.0112307689682394,0.0112307689682394,-105.0334112,39.7375819,-105.0334117,39.7376829
-15825,9721,9722,0.0869660670624723,0.0869660670624723,-105.0334117,39.7376829,-105.0334152,39.738465
-15826,9722,9508,0.205466270114504,0.205466270114504,-105.0334152,39.738465,-105.0334112,39.7403128
-15828,9723,8889,0.0324596924967659,0.0324596924967659,-105.0393086,39.7344206,-105.0393045,39.7347125
-15829,8889,7134,0.00993032916751998,0.00993032916751998,-105.0393045,39.7347125,-105.0393032,39.7348018
-15831,9724,9725,0.00760667507368999,0.00760667507368999,-105.0393035,39.7348362,-105.0393021,39.7349046
-15832,9725,9726,0.189210618262835,0.189210618262835,-105.0393021,39.7349046,-105.0392938,39.7366062
-15833,9726,9727,0.207046790394153,0.207046790394153,-105.0392938,39.7366062,-105.039304,39.7384682
-19270,10423,10424,0.0241914475611954,0.0241914475611954,-104.9951604,39.7462206,-104.9949557,39.7460704
-435,364,434,0.342302602243315,0.342302602243315,-104.9703166,39.6886511,-104.973423,39.6905908
-437,435,436,0.251313063977777,0.251313063977777,-104.9400813,39.7837417,-104.939734,39.785986
-438,291,437,0.00683009618704691,0.00683009618704691,-105.0052999,39.7613459,-105.0053491,39.7612975
-439,437,438,0.127267952892383,0.127267952892383,-105.0053491,39.7612975,-105.0062729,39.7603999
-18188,4070,6055,0.154839029661679,0.154839029661679,-105.0293098,39.784231,-105.0293078,39.7856235
-2329,914,2297,0.0421335193471221,0.0421335193471221,-104.9793447,39.7725806,-104.9797146,39.7728311
-2331,2320,2321,0.0970544429847538,0.0970544429847538,-104.9733543,39.7679348,-104.9741575,39.7685518
-2332,2321,2325,0.106348268281835,0.106348268281835,-104.9741575,39.7685518,-104.9750376,39.7692279
-2334,2326,2327,0.097322097365987,0.097322097365987,-104.9240294,39.7620162,-104.9240401,39.7628914
-2335,2327,1153,0.100532392748858,0.100532392748858,-104.9240401,39.7628914,-104.9240347,39.7637955
-2338,2329,2330,0.176644411418714,0.176644411418714,-104.9234266,39.7178332,-104.9234239,39.7194218
-2339,2330,2331,0.174810883246149,0.174810883246149,-104.9234239,39.7194218,-104.9234159,39.7209939
-2340,2331,2332,0.246452825481674,0.246452825481674,-104.9234159,39.7209939,-104.9238853,39.7231807
-12346,8662,8663,0.00747381550039305,0.00747381550039305,-105.0123789,39.7525675,-105.0123961,39.7526334
-15258,8632,9548,0.0273148076656665,0.0273148076656665,-104.9291888,39.7063544,-104.929508,39.7063606
-2341,2332,2333,0.239714451404855,0.239714451404855,-104.9238853,39.7231807,-104.9238906,39.7253365
-2342,2333,2334,0.0332654390408316,0.0332654390408316,-104.9238906,39.7253365,-104.9238826,39.7256356
-2344,2335,2336,0.129842641397919,0.129842641397919,-104.9238831,39.7280763,-104.9238797,39.729244
-2346,2337,2338,0.0990445311811364,0.0990445311811364,-104.9327695,39.7193905,-104.9316115,39.7193956
-2348,2265,2339,0.101695232363891,0.101695232363891,-104.9304912,39.7194002,-104.9293022,39.7193963
-2349,2339,2340,0.100657111492997,0.100657111492997,-104.9293022,39.7193963,-104.9281254,39.7194064
-2350,2340,2100,0.0993531902440497,0.0993531902440497,-104.9281254,39.7194064,-104.9269638,39.7194002
-20593,3590,10852,0.00726410078461852,0.00726410078461852,-105.0249274,39.7608402,-105.0249031,39.7609028
-20595,10864,10861,0.0184079229928756,0.0184079229928756,-105.0249015,39.7609531,-105.0248964,39.7611186
-20596,10861,10869,0.0187971985012912,0.0187971985012912,-105.0248964,39.7611186,-105.0248912,39.7612876
-20598,10844,10816,0.176342451403751,0.176342451403751,-105.0164651,39.7585116,-105.0185279,39.7585307
-20599,10816,10784,0.0180725957817606,0.0180725957817606,-105.0185279,39.7585307,-105.0187393,39.7585283
-18882,3271,7310,0.200940882978518,0.200940882978518,-104.9611322,39.7038533,-104.9611376,39.7020462
-20600,10784,10835,0.00593511915863137,0.00593511915863137,-105.0187393,39.7585283,-105.0188076,39.7585187
-20602,2958,10836,0.0107685222165634,0.0107685222165634,-105.0188637,39.7584212,-105.0188782,39.7585174
-20605,10827,10870,0.0187474646325031,0.0187474646325031,-105.0188943,39.7587219,-105.0188943,39.7588905
-20606,10870,10871,0.0569206829492766,0.0569206829492766,-105.0188943,39.7588905,-105.0188943,39.7594024
-20746,10919,10920,0.0829974075948199,0.0829974075948199,-105.0382104,39.7621908,-105.0391814,39.7621915
-20607,10872,10858,0.118628394955246,0.118628394955246,-105.0193556,39.7586912,-105.0190584,39.7597333
-20609,2959,10837,0.0110654933350888,0.0110654933350888,-105.0192775,39.7584245,-105.0192753,39.758524
-20610,10837,10819,0.0119664824389379,0.0119664824389379,-105.0192753,39.758524,-105.0192728,39.7586316
-11704,1158,1159,0.143826308402294,0.143826308402294,-104.9992501,39.7524969,-104.9980616,39.7534124
-16709,10000,10001,0.0457062376473756,0.0457062376473756,-105.0005739,39.745251,-105.0002374,39.7455704
-20652,9411,7929,0.0718148143148174,0.0718148143148174,-105.0180024,39.7601634,-105.0179546,39.7608082
-20655,4390,9954,0.0752796609482001,0.0752796609482001,-104.9873785,39.7489186,-104.9873941,39.7482417
-20656,9954,10883,0.0805000116188462,0.0805000116188462,-104.9873941,39.7482417,-104.9873826,39.7475178
-20657,10883,10884,0.00921180121982239,0.00921180121982239,-104.9873826,39.7475178,-104.9873861,39.747435
-20658,10884,8289,0.0487008508548274,0.0487008508548274,-104.9873861,39.747435,-104.9873968,39.7469971
-20660,5957,6482,0.0027689648671592,0.0027689648671592,-104.9873834,39.7462062,-104.9873838,39.7461813
-20661,6482,5774,0.120389794748458,0.120389794748458,-104.9873838,39.7461813,-104.9874021,39.7450987
-20662,5774,4620,0.0232425190443662,0.0232425190443662,-104.9874021,39.7450987,-104.9873927,39.7448898
-20663,4620,5809,0.169650245221728,0.169650245221728,-104.9873927,39.7448898,-104.9873953,39.7433641
-20664,5809,10472,0.013534248318244,0.013534248318244,-104.9873953,39.7433641,-104.9873927,39.7432424
-2394,2385,2386,0.330871173224232,0.330871173224232,-104.9496422,39.7136072,-104.9468949,39.7115125
-2396,2387,2072,0.091718253525282,0.091718253525282,-104.9541313,39.7738901,-104.9530584,39.7738703
-2398,2388,2389,0.0952556218940292,0.0952556218940292,-104.9519586,39.7738777,-104.950844,39.7738769
-2399,2389,2390,0.088517954558777,0.088517954558777,-104.950844,39.7738769,-104.9498085,39.773859
-2400,2390,2391,0.100075566647637,0.100075566647637,-104.9498085,39.773859,-104.9486382,39.7738901
-2401,2391,2392,0.0940014926636224,0.0940014926636224,-104.9486382,39.7738901,-104.9475383,39.7738843
-2402,2392,2394,0.0931645591460492,0.0931645591460492,-104.9475383,39.7738843,-104.9464482,39.7738908
-2403,2394,2395,0.0490422843236324,0.0490422843236324,-104.9464482,39.7738908,-104.9458744,39.7738967
-2404,2396,2397,0.101232025457682,0.101232025457682,-104.9452638,39.7738711,-104.9440793,39.7738645
-2405,2397,835,0.0985806787691326,0.0985806787691326,-104.9440793,39.7738645,-104.942926,39.7738477
-2406,835,2398,0.196049611343252,0.196049611343252,-104.942926,39.7738477,-104.940632,39.7738515
-2407,2398,2399,0.0153233199302382,0.0153233199302382,-104.940632,39.7738515,-104.9404527,39.7738518
-2408,2399,2400,0.00232458495354821,0.00232458495354821,-104.9404527,39.7738518,-104.9404255,39.7738517
-2412,2402,2403,0.0775441054784182,0.0775441054784182,-105.016659,39.7530243,-105.017566,39.7530336
-2415,2405,2406,0.101142772155656,0.101142772155656,-105.0346118,39.7530072,-105.0357948,39.7530206
-498,441,442,0.0937180388509973,0.0937180388509973,-105.01516,39.7314761,-105.01561,39.7322446
-500,443,444,0.0957304857475106,0.0957304857475106,-104.932837,39.701282,-104.933949,39.701378
-14680,445,446,0.198543865097556,0.198543865097556,-104.9700104,39.7237429,-104.9699934,39.7219574
-443,447,448,0.0518475604896436,0.0518475604896436,-105.0132294,39.7256673,-105.0126579,39.7258229
-446,450,451,0.1546192530483,0.1546192530483,-104.942375,39.7291047,-104.9423643,39.7304952
-310,318,319,0.318271935051083,0.318271935051083,-105.0344342,39.7830352,-105.0307715,39.7835551
-447,451,452,0.176746748854474,0.176746748854474,-104.9423643,39.7304952,-104.9423751,39.7320847
-448,452,453,0.173946054533759,0.173946054533759,-104.9423751,39.7320847,-104.9423616,39.733649
-449,453,454,0.161145911336434,0.161145911336434,-104.9423616,39.733649,-104.9423517,39.7350982
-450,454,455,0.183605091547984,0.183605091547984,-104.9423517,39.7350982,-104.9423505,39.7367494
-452,456,457,0.174314536622101,0.174314536622101,-104.9413102,39.732075,-104.9412942,39.7336426
-453,457,458,0.162044543484691,0.162044543484691,-104.9412942,39.7336426,-104.9412914,39.7350999
-454,458,459,0.182862983981988,0.182862983981988,-104.9412914,39.7350999,-104.9413035,39.7367444
-456,460,6,0.0823027301557762,0.0823027301557762,-104.9405035,39.7803397,-104.941411,39.7800918
-1198,1212,1213,0.0683736094322978,0.0683736094322978,-104.9874175,39.7272691,-104.986618,39.727272
-465,266,468,0.155710664946604,0.155710664946604,-104.9494463,39.6897162,-104.949472,39.6911164
-466,469,470,0.0207613766308904,0.0207613766308904,-104.9681294,39.7190458,-104.9678891,39.7190194
-468,471,472,0.378751941435673,0.378751941435673,-105.017379,39.7512262,-105.0184425,39.7479196
-472,475,476,0.0306017516715067,0.0306017516715067,-105.0122615,39.7554827,-105.0121896,39.7552131
-474,477,478,0.142331986757376,0.142331986757376,-105.0173303,39.7447127,-105.0170811,39.7459783
-476,401,479,0.0792493107270532,0.0792493107270532,-105.0115284,39.740564,-105.0124432,39.7406786
-480,481,482,0.61054856130416,0.61054856130416,-104.9818608,39.6967284,-104.9858803,39.7012654
-481,482,483,0.00751372921095178,0.00751372921095178,-104.9858803,39.7012654,-104.9859077,39.7013296
-482,483,484,0.0775332394520986,0.0775332394520986,-104.9859077,39.7013296,-104.9862665,39.7019699
-483,484,485,0.089248827005011,0.089248827005011,-104.9862665,39.7019699,-104.9862761,39.7027725
-17372,40,3540,0.206359755216492,0.206359755216492,-104.9786815,39.7002855,-104.9786521,39.6984298
-19502,10529,10530,0.0177249357864871,0.0177249357864871,-104.9883718,39.7065202,-104.9883733,39.7063608
-2653,2611,2612,0.141657164390576,0.141657164390576,-104.9891783,39.722537,-104.9908346,39.7225312
-2654,2612,2613,0.112637909268372,0.112637909268372,-104.9908346,39.7225312,-104.9921516,39.722527
-2655,2613,2614,0.0580743648208686,0.0580743648208686,-104.9921516,39.722527,-104.9928302,39.7225456
-17439,9901,10107,0.0190863480039502,0.0190863480039502,-104.9711673,39.6931206,-104.9711512,39.6932918
-2656,2614,2615,0.100743891980042,0.100743891980042,-104.9928302,39.7225456,-104.9940077,39.7225208
-2657,2615,2616,0.100475490032633,0.100475490032633,-104.9940077,39.7225208,-104.9951825,39.7225188
-2658,2616,2617,0.0513770343819779,0.0513770343819779,-104.9951825,39.7225188,-104.9957832,39.7225228
-2660,2618,2619,0.0511386540650187,0.0511386540650187,-104.9963593,39.7225267,-104.9969572,39.7225317
-2661,2619,2620,0.0507766966271612,0.0507766966271612,-104.9969572,39.7225317,-104.9975509,39.7225332
-2662,2620,2621,0.0437935865590098,0.0437935865590098,-104.9975509,39.7225332,-104.9980629,39.7225275
-2664,2622,2623,0.138741239129278,0.138741239129278,-104.9985544,39.7225221,-105.0001766,39.7225287
-2665,2623,2624,0.0616812798954739,0.0616812798954739,-105.0001766,39.7225287,-105.0008976,39.7225155
-2666,2624,2625,0.041735581046466,0.041735581046466,-105.0008976,39.7225155,-105.0013439,39.7226673
-2668,2626,2627,0.080053274568439,0.080053274568439,-105.0211539,39.7220542,-105.0220898,39.7220653
-2669,2627,2628,0.0586986059075718,0.0586986059075718,-105.0220898,39.7220653,-105.0227761,39.7220608
-2672,2630,2631,0.0511347279443915,0.0511347279443915,-105.0439263,39.7221305,-105.0445241,39.7221383
-2673,2631,2632,0.0473711830288774,0.0473711830288774,-105.0445241,39.7221383,-105.0450779,39.7221456
-2701,1199,2633,0.0222472727939579,0.0222472727939579,-104.951727,39.7271329,-104.9517199,39.7273329
-2800,2469,2753,0.205232670024875,0.205232670024875,-104.932822,39.7474019,-104.9328253,39.7492476
-2801,2753,2754,0.200329673691245,0.200329673691245,-104.9328253,39.7492476,-104.9328183,39.7510492
-2802,2754,796,0.200317660350865,0.200317660350865,-104.9328183,39.7510492,-104.9328183,39.7528507
-2803,796,2755,0.202508246596186,0.202508246596186,-104.9328183,39.7528507,-104.9328167,39.7546719
-2804,2755,2756,0.202966691897007,0.202966691897007,-104.9328167,39.7546719,-104.9328047,39.7564972
-2805,2756,2757,0.203516573136303,0.203516573136303,-104.9328047,39.7564972,-104.9328253,39.7583274
-2806,2757,2758,0.206901705972361,0.206901705972361,-104.9328253,39.7583274,-104.9328167,39.7601881
-2807,2758,2759,0.18527317626533,0.18527317626533,-104.9328167,39.7601881,-104.9328136,39.7618543
-2809,2760,2761,0.172193089993048,0.172193089993048,-104.9328153,39.7162508,-104.9327855,39.7177992
-2810,2761,2337,0.176949778602699,0.176949778602699,-104.9327855,39.7177992,-104.9327695,39.7193905
-2811,2337,2762,0.175813497300624,0.175813497300624,-104.9327695,39.7193905,-104.9327571,39.7209716
-2812,2762,2763,0.241500363205236,0.241500363205236,-104.9327571,39.7209716,-104.9327223,39.7231433
-2813,2763,2764,0.135070479950714,0.135070479950714,-104.9327223,39.7231433,-104.9327137,39.724358
-2814,2764,2765,0.106502558770285,0.106502558770285,-104.9327137,39.724358,-104.9327124,39.7253158
-2815,2765,2766,0.0334927078919062,0.0334927078919062,-104.9327124,39.7253158,-104.9327097,39.725617
-2816,2766,2767,0.200988096936329,0.200988096936329,-104.9327097,39.725617,-104.9327231,39.7274245
-2817,2767,2768,0.200799068465386,0.200799068465386,-104.9327231,39.7274245,-104.9327365,39.7292303
-2819,2769,1141,0.136317655493671,0.136317655493671,-104.933165,39.7620038,-104.9331531,39.7632297
-2820,1141,908,0.140881200888928,0.140881200888928,-104.9331531,39.7632297,-104.9331257,39.7644965
-1246,190,1268,0.101376125490378,0.101376125490378,-105.0203986,39.7166208,-105.0203557,39.7175319
-20670,10891,10892,0.0391113232197559,0.0391113232197559,-105.0400867,39.7653362,-105.0396698,39.7654812
-20671,10892,10893,0.0381065586329798,0.0381065586329798,-105.0396698,39.7654812,-105.0400814,39.7656129
-20672,10893,10894,0.00879572218910387,0.00879572218910387,-105.0400814,39.7656129,-105.0400807,39.765692
-20673,10894,6880,0.00914047873035344,0.00914047873035344,-105.0400807,39.765692,-105.0400799,39.7657742
-20675,10895,10896,0.0564298376836357,0.0564298376836357,-105.0400542,39.7656936,-105.0393975,39.7656413
-20676,10896,10897,0.0882221479591311,0.0882221479591311,-105.0393975,39.7656413,-105.039396,39.7648479
-20677,10897,10898,0.0915468728847566,0.0915468728847566,-105.039396,39.7648479,-105.0393945,39.7640246
-20678,10898,10889,0.0977975944203811,0.0977975944203811,-105.0393945,39.7640246,-105.0403834,39.764467
-12368,8665,8670,0.0146509072378509,0.0146509072378509,-105.0124819,39.7528908,-105.0123272,39.7529475
-20679,10889,10899,0.0863988642991602,0.0863988642991602,-105.0403834,39.764467,-105.0403803,39.765244
-20680,10899,10900,0.00621581990565306,0.00621581990565306,-105.0403803,39.765244,-105.0403805,39.7652999
-20682,10899,10901,0.0272487435286037,0.0272487435286037,-105.0403803,39.765244,-105.0400615,39.7652432
-20683,10902,10892,0.0353963477419812,0.0353963477419812,-105.0400838,39.7654891,-105.0396698,39.7654812
-20685,10903,10904,0.0311951245060147,0.0311951245060147,-105.0402411,39.7653473,-105.0402346,39.7656278
-20686,10905,8231,0.00978569112678673,0.00978569112678673,-105.0250777,39.7620918,-105.0250765,39.7620038
-20687,8231,10753,0.00720642488718956,0.00720642488718956,-105.0250765,39.7620038,-105.0250779,39.761939
-11,11,12,0.132606225003913,0.132606225003913,-105.0283851,39.746369,-105.0299361,39.7463759
-13,13,14,0.261405445974353,0.261405445974353,-105.0315114,39.7463778,-105.0345689,39.7463686
-14,14,15,0.0524534751729061,0.0524534751729061,-105.0345689,39.7463686,-105.0351824,39.7463725
-15,15,16,0.0498286567506269,0.0498286567506269,-105.0351824,39.7463725,-105.0357652,39.7463762
-16,16,17,0.0506321145105979,0.0506321145105979,-105.0357652,39.7463762,-105.0363574,39.7463727
-17,17,18,0.0480115772672805,0.0480115772672805,-105.0363574,39.7463727,-105.0369187,39.746386
-19,19,20,0.586520216245135,0.586520216245135,-105.044038,39.757286,-105.0508993,39.7572779
-21,22,23,0.0471109050306669,0.0471109050306669,-105.0186135,39.7572732,-105.0191645,39.7572644
-22,23,24,0.117066818844753,0.117066818844753,-105.0191645,39.7572644,-105.0205339,39.7572526
-25,26,27,0.131659873107185,0.131659873107185,-105.0236259,39.7572468,-105.0251661,39.7572464
-27,28,29,0.0945023300061256,0.0945023300061256,-104.9850866,39.7002557,-104.983982,39.7002584
-28,29,32,0.0547795902237084,0.0547795902237084,-104.983982,39.7002584,-104.9833417,39.7002584
-29,32,33,0.0472851468321661,0.0472851468321661,-104.9833417,39.7002584,-104.982789,39.7002584
-30,33,34,0.0541728824006047,0.0541728824006047,-104.982789,39.7002584,-104.982156,39.7002709
-1,1,2,0.182682884421833,0.182682884421833,-105.0155597,39.7339973,-105.0158228,39.7323669
-31,34,35,0.0481653228438301,0.0481653228438301,-104.982156,39.7002709,-104.9815932,39.7002821
-32,35,36,0.0518878807765827,0.0518878807765827,-104.9815932,39.7002821,-104.9809867,39.7002821
-34,37,38,0.0490317013211587,0.0490317013211587,-104.9804174,39.7002821,-104.9798443,39.7002853
-35,38,39,0.0492286314169291,0.0492286314169291,-104.9798443,39.7002853,-104.9792689,39.7002887
-36,39,40,0.0502550749626562,0.0502550749626562,-104.9792689,39.7002887,-104.9786815,39.7002855
-37,40,41,0.0504947813294015,0.0504947813294015,-104.9786815,39.7002855,-104.9780913,39.7002821
-19671,9367,10610,0.0557753987785757,0.0557753987785757,-105.0246438,39.769277,-105.0246432,39.7697786
-38,41,42,0.0486093395250147,0.0486093395250147,-104.9780913,39.7002821,-104.9775311,39.7002091
-39,42,43,0.0502383575999221,0.0502383575999221,-104.9775311,39.7002091,-104.9769439,39.7002055
-40,43,44,0.0498102685006676,0.0498102685006676,-104.9769439,39.7002055,-104.9763617,39.7002087
-42,45,46,0.0520249865615885,0.0520249865615885,-104.9757682,39.7002165,-104.9751601,39.7002153
-43,46,47,0.0510850489044332,0.0510850489044332,-104.9751601,39.7002153,-104.974563,39.7002186
-44,47,48,0.0480642310133195,0.0480642310133195,-104.974563,39.7002186,-104.9740013,39.7002102
-45,48,49,0.0520776483582305,0.0520776483582305,-104.9740013,39.7002102,-104.9733927,39.700201
-47,50,51,0.0661075861419648,0.0661075861419648,-104.9541194,39.7002037,-104.953347,39.7002205
-48,51,52,0.0568810950926816,0.0568810950926816,-104.953347,39.7002205,-104.9526824,39.7002349
-49,52,53,0.0608706853363099,0.0608706853363099,-104.9526824,39.7002349,-104.9519712,39.7002191
-50,53,54,0.0662114802606989,0.0662114802606989,-104.9519712,39.7002191,-104.9511976,39.7002019
-51,54,55,0.0474185291403829,0.0474185291403829,-104.9511976,39.7002019,-104.9506434,39.7001957
-52,55,56,0.0539297292184645,0.0539297292184645,-104.9506434,39.7001957,-104.9500131,39.7001887
-53,56,57,0.108686747732496,0.108686747732496,-104.9500131,39.7001887,-104.9487429,39.7002061
-54,57,58,0.187258749990905,0.187258749990905,-104.9487429,39.7002061,-104.9465541,39.7002085
-56,59,60,1.21682866156064,1.21682866156064,-104.9247401,39.6995385,-104.9105465,39.700242
-58,62,65,0.111732852527499,0.111732852527499,-104.932829,39.700178,-104.934135,39.700181
-60,66,67,0.0462182288009238,0.0462182288009238,-104.968686,39.7002245,-104.9681458,39.7002288
-61,67,68,0.0059633062869109,0.0059633062869109,-104.9681458,39.7002288,-104.9680761,39.7002293
-63,69,70,0.0080040379689871,0.0080040379689871,-104.9675826,39.7002312,-104.9674891,39.7002337
-65,71,72,0.00371377887510826,0.00371377887510826,-104.9669496,39.700226,-104.9669067,39.7002209
-66,72,73,0.0481593874311522,0.0481593874311522,-104.9669067,39.7002209,-104.9663438,39.7002174
-67,73,74,0.0476872742951146,0.0476872742951146,-104.9663438,39.7002174,-104.9657864,39.7002174
-68,74,75,0.050981067010882,0.050981067010882,-104.9657864,39.7002174,-104.9651905,39.7002174
-69,75,76,0.047311096476864,0.047311096476864,-104.9651905,39.7002174,-104.9646375,39.7002188
-70,76,77,0.00343925081784597,0.00343925081784597,-104.9646375,39.7002188,-104.9645973,39.7002189
-71,77,78,0.0504851331557092,0.0504851331557092,-104.9645973,39.7002189,-104.9640072,39.7002204
-72,78,79,0.0447329738384301,0.0447329738384301,-104.9640072,39.7002204,-104.9634844,39.7002269
-73,79,80,0.00573274424924571,0.00573274424924571,-104.9634844,39.7002269,-104.9634174,39.7002277
-74,80,81,0.048934333458383,0.048934333458383,-104.9634174,39.7002277,-104.9628455,39.7002349
-75,81,82,0.0451562090400863,0.0451562090400863,-104.9628455,39.7002349,-104.9623177,39.7002318
-76,82,83,0.0525053441886158,0.0525053441886158,-104.9623177,39.7002318,-104.961704,39.7002283
-77,83,84,0.0468507536792171,0.0468507536792171,-104.961704,39.7002283,-104.9611564,39.7002245
-79,85,86,0.0489620579654281,0.0489620579654281,-104.9605654,39.7002204,-104.9599931,39.700221
-80,86,87,0.056293962476598,0.056293962476598,-104.9599931,39.700221,-104.9593351,39.7002217
-81,87,88,0.0565505675369976,0.0565505675369976,-104.9593351,39.7002217,-104.9586741,39.7002217
-82,88,89,0.049261447484153,0.049261447484153,-104.9586741,39.7002217,-104.9580983,39.7002217
-83,89,90,0.0461992376398338,0.0461992376398338,-104.9580983,39.7002217,-104.9575583,39.7002238
-84,90,91,0.0452410545911285,0.0452410545911285,-104.9575583,39.7002238,-104.9570295,39.7002259
-85,91,92,0.040125194779582,0.040125194779582,-104.9570295,39.7002259,-104.9565605,39.7002236
-86,92,93,0.0417705541366205,0.0417705541366205,-104.9565605,39.7002236,-104.9560723,39.7002187
-87,93,94,0.0307746903425865,0.0307746903425865,-104.9560723,39.7002187,-104.9557126,39.7002162
-88,94,95,0.0484715360122363,0.0484715360122363,-104.9557126,39.7002162,-104.9551461,39.7002095
-90,58,96,0.0988139178735054,0.0988139178735054,-104.9465541,39.7002085,-104.9453991,39.7002071
-91,96,97,0.101340345409915,0.101340345409915,-104.9453991,39.7002071,-104.9442146,39.7002138
-92,97,98,0.0883916436599661,0.0883916436599661,-104.9442146,39.7002138,-104.9431816,39.700199
-93,98,99,0.0102766637725455,0.0102766637725455,-104.9431816,39.700199,-104.9430615,39.7001973
-94,99,100,0.0815080239205417,0.0815080239205417,-104.9430615,39.7001973,-104.9421088,39.7002019
-95,100,101,0.0191432455952872,0.0191432455952872,-104.9421088,39.7002019,-104.9418857,39.7001887
-99,104,105,0.149790406602899,0.149790406602899,-104.9874778,39.7002508,-104.9890384,39.7008615
-100,106,107,0.104888043119077,0.104888043119077,-104.931654,39.700221,-104.930428,39.700221
-101,107,108,0.276057285299863,0.276057285299863,-104.930428,39.700221,-104.9272013,39.700209
-103,109,110,0.318041485575751,0.318041485575751,-105.002935,39.7765792,-105.0016991,39.7792771
-105,111,112,0.0487653491195207,0.0487653491195207,-104.929111,39.709605,-104.929063,39.710042
-106,113,114,0.160343090933149,0.160343090933149,-105.0174031,39.7302926,-105.0192781,39.7302978
-107,114,115,0.208121584183608,0.208121584183608,-105.0192781,39.7302978,-105.0217118,39.7303058
-111,118,119,0.137350395143796,0.137350395143796,-105.0112228,39.7301878,-105.0128289,39.7301964
-113,120,121,0.356240759753107,0.356240759753107,-105.011137,39.753586,-105.0092699,39.7564502
-114,121,122,0.149871853701347,0.149871853701347,-105.0092699,39.7564502,-105.0080327,39.7574052
-115,122,123,0.148228608040365,0.148228608040365,-105.0080327,39.7574052,-105.0068372,39.7583708
-116,123,124,0.294126045752515,0.294126045752515,-105.0068372,39.7583708,-105.0043775,39.7602205
-118,125,126,0.131313615022207,0.131313615022207,-105.0040777,39.7604163,-105.0030317,39.7612812
-119,126,127,0.263795049720844,0.263795049720844,-105.0030317,39.7612812,-105.001255,39.763221
-123,130,131,0.221071288024568,0.221071288024568,-105.010718,39.694947,-105.0097289,39.6931103
-125,132,133,0.0549684068983719,0.0549684068983719,-104.9874659,39.6930068,-104.9881082,39.6929965
-126,133,135,0.0478699749630446,0.0478699749630446,-104.9881082,39.6929965,-104.9886673,39.6929807
-127,135,136,0.130706329520293,0.130706329520293,-104.9886673,39.6929807,-104.9901944,39.6930114
-128,136,137,0.0495130025200929,0.0495130025200929,-104.9901944,39.6930114,-104.990773,39.6930188
-129,137,138,0.0194653537975714,0.0194653537975714,-104.990773,39.6930188,-104.9910005,39.6930189
-130,138,139,0.0302495949579548,0.0302495949579548,-104.9910005,39.6930189,-104.991354,39.693023
-131,139,140,0.097138516429268,0.097138516429268,-104.991354,39.693023,-104.9924893,39.6930233
-133,141,142,0.0984160429772276,0.0984160429772276,-104.9968856,39.6930808,-104.9980358,39.6930742
-1414,1439,1440,0.0969799596597411,0.0969799596597411,-105.0228009,39.7820131,-105.0239358,39.7820092
-135,143,144,0.094779584184767,0.094779584184767,-104.9992288,39.6930874,-105.000336,39.6931138
-136,144,145,0.102947980955417,0.102947980955417,-105.000336,39.6931138,-105.0015377,39.6930676
-137,145,146,0.0998791210708115,0.0998791210708115,-105.0015377,39.6930676,-105.002705,39.6930742
-138,146,147,0.10354963170018,0.10354963170018,-105.002705,39.6930742,-105.0039152,39.6930676
-139,147,148,0.0970503169891706,0.0970503169891706,-105.0039152,39.6930676,-105.0050494,39.6930773
-141,149,150,0.0462633170535789,0.0462633170535789,-105.0061897,39.6930874,-105.0067304,39.6930874
-142,150,151,0.0859494466376985,0.0859494466376985,-105.0067304,39.6930874,-105.0077346,39.6931072
-143,151,152,0.084056042435147,0.084056042435147,-105.0077346,39.6931072,-105.008717,39.6931063
-144,152,131,0.0865811985903579,0.0865811985903579,-105.008717,39.6931063,-105.0097289,39.6931103
-145,131,155,0.0846809008371401,0.0846809008371401,-105.0097289,39.6931103,-105.0107186,39.6931124
-146,155,156,0.0860732350550831,0.0860732350550831,-105.0107186,39.6931124,-105.0117244,39.6930979
-147,156,157,0.0810260254286054,0.0810260254286054,-105.0117244,39.6930979,-105.0126712,39.6931124
-148,157,158,0.0821650587696609,0.0821650587696609,-105.0126712,39.6931124,-105.0136315,39.6931124
-149,158,159,0.0810216994355951,0.0810216994355951,-105.0136315,39.6931124,-105.0145783,39.6931248
-150,159,160,0.0856058417834562,0.0856058417834562,-105.0145783,39.6931248,-105.0155788,39.6931289
-151,160,161,0.0815928873404902,0.0815928873404902,-105.0155788,39.6931289,-105.0165323,39.6931402
-152,161,162,0.00737779613210769,0.00737779613210769,-105.0165323,39.6931402,-105.0166181,39.6931468
-154,163,164,0.00763240627009494,0.00763240627009494,-105.0174975,39.6931459,-105.0175867,39.6931453
-155,164,165,0.0713522613021865,0.0713522613021865,-105.0175867,39.6931453,-105.0184206,39.6931402
-156,165,166,0.00987473687183569,0.00987473687183569,-105.0184206,39.6931402,-105.018536,39.693139
-157,166,167,0.0668981585963986,0.0668981585963986,-105.018536,39.693139,-105.0193178,39.693131
-158,167,168,0.0113627652096004,0.0113627652096004,-105.0193178,39.693131,-105.0194505,39.693127
-159,168,169,0.0796520415458163,0.0796520415458163,-105.0194505,39.693127,-105.0203814,39.6931327
-160,169,170,0.0789939822174276,0.0789939822174276,-105.0203814,39.6931327,-105.0213045,39.6931204
-161,170,171,0.0216393201096419,0.0216393201096419,-105.0213045,39.6931204,-105.0215573,39.6931261
-162,171,172,0.05739626274334,0.05739626274334,-105.0215573,39.6931261,-105.022228,39.6931165
-163,172,173,0.0799414498698892,0.0799414498698892,-105.022228,39.6931165,-105.0231623,39.6931129
-164,173,174,0.161327077814812,0.161327077814812,-105.0231623,39.6931129,-105.0250478,39.6931151
-165,174,175,0.292992058630926,0.292992058630926,-105.0250478,39.6931151,-105.0284721,39.6931041
-166,175,176,0.108231632340063,0.108231632340063,-105.0284721,39.6931041,-105.029737,39.6931129
-167,176,177,0.106370208061557,0.106370208061557,-105.029737,39.6931129,-105.03098,39.6930959
-168,177,178,0.0920329418240447,0.0920329418240447,-105.03098,39.6930959,-105.0320556,39.6931021
-169,178,179,0.199657740223053,0.199657740223053,-105.0320556,39.6931021,-105.034389,39.6930864
-170,179,180,0.100614906430247,0.100614906430247,-105.034389,39.6930864,-105.0355649,39.693093
-1461,1483,1484,0.0976853528091841,0.0976853528091841,-104.9913183,39.6948152,-104.99246,39.6948099
-171,180,181,0.0991515808605787,0.0991515808605787,-105.0355649,39.693093,-105.0367236,39.6931063
-172,181,182,0.101348037813126,0.101348037813126,-105.0367236,39.6931063,-105.0379081,39.6931063
-175,184,185,0.0991513776470571,0.0991513776470571,-105.0402341,39.6931327,-105.0413928,39.6931195
-178,187,188,0.0984378662868895,0.0984378662868895,-105.0437531,39.6931327,-105.0449033,39.6931129
-179,188,189,0.709590130188447,0.709590130188447,-105.0449033,39.6931129,-105.0531962,39.6931758
-180,190,191,0.100578501060841,0.100578501060841,-105.0203986,39.7166208,-105.02039,39.7157163
-181,191,192,0.0991218871214513,0.0991218871214513,-105.02039,39.7157163,-105.0203814,39.7148249
-182,192,193,0.20342936542853,0.20342936542853,-105.0203814,39.7148249,-105.0203213,39.712996
-183,193,194,0.207080695389682,0.207080695389682,-105.0203213,39.712996,-105.0203728,39.7111341
-184,194,195,0.202642969626672,0.202642969626672,-105.0203728,39.7111341,-105.0203814,39.7093117
-185,195,196,0.201913108682536,0.201913108682536,-105.0203814,39.7093117,-105.0203986,39.7074959
-186,196,197,0.201920207523846,0.201920207523846,-105.0203986,39.7074959,-105.02039,39.70568
-187,197,198,0.201206377797867,0.201206377797867,-105.02039,39.70568,-105.0203557,39.7038707
-188,198,199,0.199728327239083,0.199728327239083,-105.0203557,39.7038707,-105.0203557,39.7020745
-189,199,200,0.179903776297828,0.179903776297828,-105.0203557,39.7020745,-105.0203471,39.7004566
-190,200,201,0.00513723410606708,0.00513723410606708,-105.0203471,39.7004566,-105.0203473,39.7004104
-191,201,202,0.207079558909688,0.207079558909688,-105.0203473,39.7004104,-105.0203557,39.6985481
-194,169,204,0.256940343045097,0.256940343045097,-105.0203814,39.6931327,-105.0203689,39.690822
-195,204,205,0.14761309930181,0.14761309930181,-105.0203689,39.690822,-105.0203775,39.6894945
-384,386,387,0.312847187378026,0.312847187378026,-105.0063891,39.78283,-105.0028212,39.783461
-197,208,209,0.0482198776992404,0.0482198776992404,-105.0203767,39.6877125,-105.0203575,39.6872791
-198,209,210,1.36238336075367,1.36238336075367,-105.0203575,39.6872791,-105.0203756,39.6750269
-199,211,212,0.0762056360151952,0.0762056360151952,-104.9672465,39.7792331,-104.9665616,39.779672
-210,221,222,0.10839564681744,0.10839564681744,-104.9863694,39.7019694,-104.9874359,39.7014431
-212,223,224,0.197685755221764,0.197685755221764,-104.9432215,39.7799643,-104.9412461,39.7790391
-213,224,225,0.136500664002185,0.136500664002185,-104.9412461,39.7790391,-104.9407032,39.7778846
-215,226,227,0.0378358956085511,0.0378358956085511,-104.940692,39.7797323,-104.9403515,39.7799498
-217,228,229,0.0700057652168164,0.0700057652168164,-104.949699,39.7790161,-104.9490058,39.7793516
-218,229,230,0.156709235598665,0.156709235598665,-104.9490058,39.7793516,-104.9472475,39.7797519
-220,231,232,0.0710636642555904,0.0710636642555904,-104.9941166,39.693522,-104.9943741,39.6929144
-223,234,235,0.0652725377045483,0.0652725377045483,-104.9688514,39.6965865,-104.9695743,39.6967741
-227,237,238,0.33099974682308,0.33099974682308,-105.0251054,39.7259431,-105.0289409,39.7255444
-19951,4950,4670,0.10032168356836,0.10032168356836,-104.9951823,39.723,-104.9940093,39.7230042
-229,239,240,0.145321847286165,0.145321847286165,-104.9766938,39.6912137,-104.9752801,39.6904894
-230,240,241,0.0697724132050665,0.0697724132050665,-104.9752801,39.6904894,-104.9745995,39.6901438
-231,241,242,0.0623380559401012,0.0623380559401012,-104.9745995,39.6901438,-104.9739987,39.6898267
-232,242,243,0.121807717540091,0.121807717540091,-104.9739987,39.6898267,-104.9728142,39.6892191
-233,243,244,0.123936016070967,0.123936016070967,-104.9728142,39.6892191,-104.9715783,39.6886379
-234,244,245,0.0423914167747626,0.0423914167747626,-104.9715783,39.6886379,-104.9711551,39.6884397
-235,245,30,0.0421885133223055,0.0421885133223055,-104.9711551,39.6884397,-104.9707346,39.6882416
-238,134,246,0.0735610173824186,0.0735610173824186,-104.969078,39.6873895,-104.9683485,39.6870395
-246,253,254,0.386604280856974,0.386604280856974,-105.0285448,39.740303,-105.0251543,39.7380028
-261,271,272,0.0791195509987444,0.0791195509987444,-105.0214373,39.7400355,-105.020512,39.7400417
-262,272,273,0.0178978198366689,0.0178978198366689,-105.020512,39.7400417,-105.0203028,39.7400362
-263,273,274,0.0364878269996901,0.0364878269996901,-105.0203028,39.7400362,-105.0198763,39.7400252
-264,274,275,0.130636800507014,0.130636800507014,-105.0198763,39.7400252,-105.0183528,39.7401138
-265,275,276,0.0381201943550558,0.0381201943550558,-105.0183528,39.7401138,-105.0179907,39.7399138
-272,282,283,0.097546663905458,0.097546663905458,-104.98357,39.7794055,-104.9824285,39.7794055
-556,66,551,0.00841985913797999,0.00841985913797999,-104.968686,39.7002245,-104.9687844,39.7002259
-557,551,552,0.04510313602044,0.04510313602044,-104.9687844,39.7002259,-104.9693115,39.7002336
-559,553,554,0.116858726253731,0.116858726253731,-105.0084451,39.7357701,-105.0077561,39.7366777
-562,249,556,0.0347143242166075,0.0347143242166075,-104.998368,39.698242,-104.998773,39.698261
-563,557,250,0.0320475892789012,0.0320475892789012,-104.998773,39.697354,-104.998399,39.69737
-581,573,574,3.62449911588374,3.62449911588374,-104.9857184,39.6894083,-104.9858252,39.6568125
-582,495,575,0.042579905853808,0.042579905853808,-104.9399882,39.7812905,-104.9404777,39.7813621
-583,575,576,0.0263063929759334,0.0263063929759334,-104.9404777,39.7813621,-104.940659,39.7811709
-585,577,311,0.0472092453507094,0.0472092453507094,-104.979193,39.7791651,-104.9786416,39.779139
-587,578,579,0.310605662522472,0.310605662522472,-105.0107342,39.7225974,-105.0080855,39.7206863
-589,580,206,0.0784574482758401,0.0784574482758401,-104.9566854,39.743808,-104.9566644,39.7445134
-591,581,582,0.323379230044806,0.323379230044806,-104.9583963,39.7508014,-104.9577579,39.7479349
-593,583,584,0.18304036244052,0.18304036244052,-104.957601,39.708926,-104.957575,39.70728
-595,585,586,0.0719402278196197,0.0719402278196197,-104.9889526,39.7822987,-104.9889771,39.7829454
-597,587,588,0.0168822192889414,0.0168822192889414,-105.0297456,39.724543,-105.029943,39.724543
-599,589,590,0.0668977161070656,0.0668977161070656,-104.9917474,39.779568,-104.9910794,39.7792543
-601,592,593,0.00991684169352972,0.00991684169352972,-104.9690283,39.7038655,-104.9689126,39.70386
-606,597,598,0.0427315746706827,0.0427315746706827,-104.9464074,39.7019764,-104.9468452,39.7017914
-610,601,602,0.0635315500234909,0.0635315500234909,-104.9947852,39.7686695,-104.9952229,39.7691313
-611,602,603,0.0528935910157463,0.0528935910157463,-104.9952229,39.7691313,-104.9958065,39.7692896
-16699,9993,9994,0.012991856325609,0.012991856325609,-105.0002198,39.7467956,-105.0002735,39.7466863
-612,603,604,0.0535739683641864,0.0535739683641864,-104.9958065,39.7692896,-104.9964331,39.7692764
-615,606,307,0.0053241575287587,0.0053241575287587,-105.0278867,39.763078,-105.0279141,39.763121
-616,307,607,0.210415758379136,0.210415758379136,-105.0279141,39.763121,-105.0300516,39.7640597
-618,608,609,0.0943257357645838,0.0943257357645838,-104.9472743,39.739517,-104.9461712,39.7395075
-620,610,611,0.12631191015444,0.12631191015444,-104.9873582,39.7368646,-104.9888354,39.7368658
-621,611,612,0.121362330065702,0.121362330065702,-104.9888354,39.7368658,-104.9902547,39.7368606
-11699,1033,1034,0.0933842207119007,0.0933842207119007,-104.9992823,39.7531544,-105.0000465,39.7525543
-622,612,613,0.120087101438352,0.120087101438352,-104.9902547,39.7368606,-104.9916591,39.7368586
-623,613,614,0.109496386514743,0.109496386514743,-104.9916591,39.7368586,-104.9929396,39.7368669
-625,615,616,0.099485158811405,0.099485158811405,-104.9941215,39.7368616,-104.9952849,39.7368711
-626,616,617,0.0380723765849069,0.0380723765849069,-104.9952849,39.7368711,-104.9957301,39.7368659
-627,617,618,0.0166082915806853,0.0166082915806853,-104.9957301,39.7368659,-104.9959243,39.7368632
-629,619,620,0.0454138336035488,0.0454138336035488,-105.0316871,39.7365656,-105.0322182,39.7365636
-630,620,621,0.0942731398582661,0.0942731398582661,-105.0322182,39.7365636,-105.0333206,39.7365518
-631,621,622,0.00735436876666859,0.00735436876666859,-105.0333206,39.7365518,-105.0334066,39.7365509
-632,622,623,0.102647301082546,0.102647301082546,-105.0334066,39.7365509,-105.0346068,39.7365694
-633,623,544,0.0305138174261522,0.0305138174261522,-105.0346068,39.7365694,-105.034963,39.736586
-636,625,626,0.0461061908767262,0.0461061908767262,-105.0357989,39.7365856,-105.0363381,39.7365871
-637,626,627,0.0495093856599813,0.0495093856599813,-105.0363381,39.7365871,-105.0369171,39.7365886
-639,628,629,0.00822721040716169,0.00822721040716169,-104.9733503,39.7623867,-104.9734189,39.7624386
-640,629,630,0.102896638771385,0.102896638771385,-104.9734189,39.7624386,-104.9743045,39.7630654
-641,630,631,0.106879933016847,0.106879933016847,-104.9743045,39.7630654,-104.9751714,39.7637581
-642,631,632,0.103715813554019,0.103715813554019,-104.9751714,39.7637581,-104.976027,39.7644195
-643,632,633,0.10692744992309,0.10692744992309,-104.976027,39.7644195,-104.9769309,39.7650843
-644,633,634,0.103895780437174,0.103895780437174,-104.9769309,39.7650843,-104.9777895,39.7657457
-645,634,635,0.10514306949893,0.10514306949893,-104.9777895,39.7657457,-104.9786451,39.7664251
-647,636,637,0.00886536795801057,0.00886536795801057,-105.0169344,39.7566577,-105.016925,39.7567371
-648,637,638,0.204097990393348,0.204097990393348,-105.016925,39.7567371,-105.0180723,39.7583468
-649,638,639,0.00993994545767469,0.00993994545767469,-105.0180723,39.7583468,-105.0181467,39.7584155
-651,640,641,0.322116221139114,0.322116221139114,-104.9875489,39.7695895,-104.9847379,39.7715192
-653,643,644,0.14058289547664,0.14058289547664,-104.9405805,39.7413879,-104.9389365,39.7413679
-654,644,645,0.143886814663415,0.143886814663415,-104.9389365,39.7413679,-104.9372542,39.7414009
-657,647,648,0.1449055455771,0.1449055455771,-104.9337694,39.7413613,-104.9320748,39.7413793
-660,650,651,0.0986374455510098,0.0986374455510098,-104.9872612,39.7417297,-104.9861093,39.7416811
-661,651,652,0.109870142544629,0.109870142544629,-104.9861093,39.7416811,-104.9848243,39.741678
-662,652,653,0.107278100090415,0.107278100090415,-104.9848243,39.741678,-104.9835697,39.7416896
-663,653,654,0.105274765421146,0.105274765421146,-104.9835697,39.7416896,-104.9823388,39.7416667
-664,654,655,0.107321673078917,0.107321673078917,-104.9823388,39.7416667,-104.9810836,39.7416667
-665,655,659,0.103426909396494,0.103426909396494,-104.9810836,39.7416667,-104.979874,39.741675
-666,659,660,0.0476206970204551,0.0476206970204551,-104.979874,39.741675,-104.9793171,39.7416689
-667,660,661,0.0487580750629072,0.0487580750629072,-104.9793171,39.7416689,-104.9787469,39.7416626
-668,661,662,0.103115405190933,0.103115405190933,-104.9787469,39.7416626,-104.9775409,39.74166
-669,662,663,0.118337011744519,0.118337011744519,-104.9775409,39.74166,-104.9761569,39.7416528
-670,663,664,0.118107974454135,0.118107974454135,-104.9761569,39.7416528,-104.9747756,39.7416621
-671,664,665,0.223948343500364,0.223948343500364,-104.9747756,39.7416621,-104.9721564,39.7416528
-672,665,666,0.106040631048838,0.106040631048838,-104.9721564,39.7416528,-104.9709162,39.7416478
-673,666,667,0.0256000736542961,0.0256000736542961,-104.9709162,39.7416478,-104.9706168,39.7416459
-674,667,668,0.0803036973488277,0.0803036973488277,-104.9706168,39.7416459,-104.9696776,39.7416433
-675,668,669,0.107519240980512,0.107519240980512,-104.9696776,39.7416433,-104.9684201,39.7416394
-1662,1688,1689,0.0492594246995293,0.0492594246995293,-105.038125,39.7676337,-105.0387013,39.7676285
-677,670,671,0.106757477563009,0.106757477563009,-104.9672238,39.7416291,-104.9659752,39.7416301
-678,671,672,0.103159385358598,0.103159385358598,-104.9659752,39.7416301,-104.9647688,39.7416171
-679,672,673,0.111733647900791,0.111733647900791,-104.9647688,39.7416171,-104.963462,39.7416167
-680,673,674,0.10480806031483,0.10480806031483,-104.963462,39.7416167,-104.9622362,39.7416157
-681,674,675,0.0524357665703955,0.0524357665703955,-104.9622362,39.7416157,-104.961623,39.7416085
-682,675,676,0.0522607419390769,0.0522607419390769,-104.961623,39.7416085,-104.9610118,39.7416043
-683,676,677,0.0516311575112871,0.0516311575112871,-104.9610118,39.7416043,-104.960408,39.7416109
-684,677,678,0.0529566114294976,0.0529566114294976,-104.960408,39.7416109,-104.9597887,39.7416177
-685,678,679,0.0524070698016137,0.0524070698016137,-104.9597887,39.7416177,-104.9591758,39.7416126
-686,679,680,0.187479766906081,0.187479766906081,-104.9591758,39.7416126,-104.9569831,39.7416105
-690,683,684,0.0954023275162926,0.0954023275162926,-104.9320748,39.7419667,-104.930959,39.7419667
-691,684,685,0.100472575096637,0.100472575096637,-104.930959,39.7419667,-104.9297839,39.7419673
-692,685,686,0.0954830683114717,0.0954830683114717,-104.9297839,39.7419673,-104.9286673,39.7419535
-693,686,687,0.0981912656165647,0.0981912656165647,-104.9286673,39.7419535,-104.9275189,39.7419485
-694,687,688,0.0529127579061837,0.0529127579061837,-104.9275189,39.7419485,-104.926901,39.7419221
-695,688,689,0.097652475318391,0.097652475318391,-104.926901,39.7419221,-104.9257594,39.7418957
-696,689,690,0.0954475604442949,0.0954475604442949,-104.9257594,39.7418957,-104.9246436,39.7419221
-697,690,691,1.04422795392214,1.04422795392214,-104.9246436,39.7419221,-104.9124306,39.7419176
-698,692,693,0.101491505067343,0.101491505067343,-104.9547755,39.7419939,-104.9535885,39.7419889
-700,694,695,0.0992328230839297,0.0992328230839297,-104.9524269,39.7419829,-104.9512663,39.7419839
-701,695,696,0.102484361376735,0.102484361376735,-104.9512663,39.7419839,-104.9500677,39.7419774
-703,697,698,0.0986965284486813,0.0986965284486813,-104.9488331,39.7419679,-104.9476788,39.7419741
-704,698,699,0.0994466333494717,0.0994466333494717,-104.9476788,39.7419741,-104.9465157,39.7419728
-705,699,700,0.0997814367951755,0.0997814367951755,-104.9465157,39.7419728,-104.9453488,39.7419601
-706,700,702,0.0968138925983087,0.0968138925983087,-104.9453488,39.7419601,-104.9442165,39.7419566
-707,702,703,0.100377700728806,0.100377700728806,-104.9442165,39.7419566,-104.9430426,39.7419454
-708,703,704,0.0945219805489684,0.0945219805489684,-104.9430426,39.7419454,-104.9419371,39.7419475
-709,704,705,0.101319162842739,0.101319162842739,-104.9419371,39.7419475,-104.9407521,39.7419489
-711,706,707,0.0929527445510612,0.0929527445510612,-105.0041014,39.7624043,-105.0041326,39.7632399
-712,707,708,0.132514897770158,0.132514897770158,-105.0041326,39.7632399,-105.0041445,39.7644316
-713,708,709,0.136169309583257,0.136169309583257,-105.0041445,39.7644316,-105.0041442,39.7656562
-714,709,710,0.133600704636896,0.133600704636896,-105.0041442,39.7656562,-105.0041443,39.7668577
-715,710,711,0.131877184107974,0.131877184107974,-105.0041443,39.7668577,-105.0041445,39.7680437
-716,711,712,0.137129048962243,0.137129048962243,-105.0041445,39.7680437,-105.0041679,39.7692768
-717,712,714,0.139625593223683,0.139625593223683,-105.0041679,39.7692768,-105.0041958,39.7705323
-718,714,715,0.140147388874583,0.140147388874583,-105.0041958,39.7705323,-105.0041615,39.7717924
-720,716,717,0.139181895573122,0.139181895573122,-105.0041786,39.7730524,-105.0042194,39.7743037
-721,717,718,0.136478657719685,0.136478657719685,-105.0042194,39.7743037,-105.0041624,39.7755303
-722,718,719,0.0608836584293049,0.0608836584293049,-105.0041624,39.7755303,-105.004171,39.7760778
-723,719,720,0.0543052596791692,0.0543052596791692,-105.004171,39.7760778,-105.0041538,39.776566
-724,720,721,0.402215107963206,0.402215107963206,-105.0041538,39.776566,-105.0041443,39.7801832
-726,722,723,0.109800761131151,0.109800761131151,-105.004084,39.7289511,-105.0028344,39.7287242
-728,724,725,0.0404933936313706,0.0404933936313706,-104.9512162,39.7020084,-104.9512072,39.7016443
-729,725,726,0.0429068637575149,0.0429068637575149,-104.9512072,39.7016443,-104.9511976,39.7012585
-730,726,54,0.117488559492451,0.117488559492451,-104.9511976,39.7012585,-104.9511976,39.7002019
-732,728,729,0.201386679597364,0.201386679597364,-104.951164,39.6965829,-104.9511904,39.6947719
-733,729,730,0.204011830144653,0.204011830144653,-104.9511904,39.6947719,-104.9512022,39.6929372
-734,730,731,0.199761692314281,0.199761692314281,-104.9512022,39.6929372,-104.9512028,39.6911407
-17425,10099,10083,0.0366406616748247,0.0366406616748247,-104.9835426,39.688944,-104.9836553,39.6886261
-735,731,732,0.201563131430502,0.201563131430502,-104.9512028,39.6911407,-104.951205,39.689328
-736,732,733,0.402282143818784,0.402282143818784,-104.951205,39.689328,-104.9512417,39.6857103
-737,734,735,0.0902645098486118,0.0902645098486118,-104.9634771,39.7765229,-104.9624209,39.7765159
-738,735,736,0.0928507623233121,0.0928507623233121,-104.9624209,39.7765159,-104.9613344,39.7765177
-739,736,737,0.0900332912586976,0.0900332912586976,-104.9613344,39.7765177,-104.960283,39.7764662
-740,737,738,0.0739532182409675,0.0739532182409675,-104.960283,39.7764662,-104.9594193,39.7764249
-741,738,739,0.100409435325613,0.100409435325613,-104.9594193,39.7764249,-104.9582445,39.7764105
-742,739,740,0.0918337393875257,0.0918337393875257,-104.9582445,39.7764105,-104.9571699,39.7764108
-743,740,741,0.0605135925040139,0.0605135925040139,-104.9571699,39.7764108,-104.9564618,39.7764088
-744,741,744,0.09764928319827,0.09764928319827,-104.9564618,39.7764088,-104.9553192,39.7764005
-745,744,745,0.100176801141236,0.100176801141236,-104.9553192,39.7764005,-104.954147,39.7763944
-746,745,746,0.0948931710062943,0.0948931710062943,-104.954147,39.7763944,-104.9530366,39.7763944
-747,746,747,0.0932950961705344,0.0932950961705344,-104.9530366,39.7763944,-104.9519449,39.7763944
-748,747,748,0.0948942633213168,0.0948942633213168,-104.9519449,39.7763944,-104.9508345,39.7763985
-749,748,749,0.0880271421463829,0.0880271421463829,-104.9508345,39.7763985,-104.9498045,39.7763902
-750,749,750,0.101773658707536,0.101773658707536,-104.9498045,39.7763902,-104.9486136,39.7763944
-751,750,751,0.094781491782375,0.094781491782375,-104.9486136,39.7763944,-104.9475049,39.7764171
-752,751,752,0.0909312964030863,0.0909312964030863,-104.9475049,39.7764171,-104.9464409,39.77641
-754,753,754,0.0476837940219257,0.0476837940219257,-104.9875955,39.7752036,-104.9870376,39.7752102
-755,754,755,0.0476837940207114,0.0476837940207114,-104.9870376,39.7752102,-104.9864797,39.7752036
-756,755,756,0.100492444483886,0.100492444483886,-104.9864797,39.7752036,-104.9853038,39.7752036
-760,760,761,0.278292588595779,0.278292588595779,-105.0070586,39.7765312,-105.0069691,39.779033
-18241,8960,6768,0.145513824807152,0.145513824807152,-105.0258905,39.7724462,-105.0275913,39.7725071
-762,762,763,0.102174293003021,0.102174293003021,-105.0062581,39.7024674,-105.0074463,39.7025603
-763,763,764,0.0992571756698332,0.0992571756698332,-105.0074463,39.7025603,-105.0086065,39.7025548
-764,764,765,0.100622536912342,0.100622536912342,-105.0086065,39.7025548,-105.0097824,39.702535
-766,766,767,0.101850111631528,0.101850111631528,-105.0109855,39.7025566,-105.012176,39.70255
-767,767,768,0.0961954013729948,0.0961954013729948,-105.012176,39.70255,-105.0133004,39.7025566
-768,768,769,0.207085640087389,0.207085640087389,-105.0133004,39.7025566,-105.0156693,39.7029396
-769,769,770,0.1068825400281,0.1068825400281,-105.0156693,39.7029396,-105.0168881,39.7027283
-770,770,771,0.105967528573409,0.105967528573409,-105.0168881,39.7027283,-105.0180297,39.7023585
-771,771,772,0.107278769323728,0.107278769323728,-105.0180297,39.7023585,-105.0192227,39.7020613
-772,772,199,0.0969401274978018,0.0969401274978018,-105.0192227,39.7020613,-105.0203557,39.7020745
-773,199,776,0.101328977128045,0.101328977128045,-105.0203557,39.7020745,-105.0215401,39.7020679
-774,776,777,0.0984004881984158,0.0984004881984158,-105.0215401,39.7020679,-105.0226903,39.7020679
-775,777,778,0.0991276696889056,0.0991276696889056,-105.0226903,39.7020679,-105.023849,39.7020679
-779,784,785,0.101305408476756,0.101305408476756,-105.0031735,39.702226,-105.0042571,39.7018586
-780,785,786,0.0976265458519536,0.0976265458519536,-105.0042571,39.7018586,-105.0053032,39.7015078
-781,786,787,0.0966903245975086,0.0966903245975086,-105.0053032,39.7015078,-105.0063481,39.7011764
-783,788,789,0.0146697046803596,0.0146697046803596,-104.9407607,39.7528377,-104.9405891,39.7528377
-784,789,790,0.0984239882007814,0.0984239882007814,-104.9405891,39.7528377,-104.9394378,39.7528432
-785,790,791,0.0942419953953979,0.0942419953953979,-104.9394378,39.7528432,-104.9383354,39.7528412
-786,791,792,0.0942417343682122,0.0942417343682122,-104.9383354,39.7528412,-104.937233,39.7528412
-787,792,793,0.0942331855902031,0.0942331855902031,-104.937233,39.7528412,-104.9361307,39.7528412
-789,794,795,0.0937138545964453,0.0937138545964453,-104.9350328,39.7528375,-104.9339366,39.7528432
-790,795,796,0.0956046195795482,0.0956046195795482,-104.9339366,39.7528432,-104.9328183,39.7528507
-791,796,797,0.0946549122760597,0.0946549122760597,-104.9328183,39.7528507,-104.9317111,39.7528441
-792,797,798,0.100527766007763,0.100527766007763,-104.9317111,39.7528441,-104.9305352,39.7528375
-793,798,799,0.10316918665,0.10316918665,-104.9305352,39.7528375,-104.9293286,39.7528556
-795,800,801,0.103459881633314,0.103459881633314,-104.9281577,39.7528638,-104.9269475,39.7528704
-796,801,802,0.0997925526863961,0.0997925526863961,-104.9269475,39.7528704,-104.9257802,39.7528638
-797,802,803,0.0998006432146063,0.0998006432146063,-104.9257802,39.7528638,-104.9246129,39.752877
-854,804,805,0.1238606801811,0.1238606801811,-104.9428502,39.768085,-104.9428549,39.7691989
-799,807,808,0.10163704947704,0.10163704947704,-104.9781222,39.7532569,-104.9769333,39.7532524
-800,808,812,0.0515064726572222,0.0515064726572222,-104.9769333,39.7532524,-104.9763308,39.7532506
-801,812,813,0.0494547954602067,0.0494547954602067,-104.9763308,39.7532506,-104.9757523,39.7532488
-802,813,814,0.051447981297694,0.051447981297694,-104.9757523,39.7532488,-104.9751505,39.753245
-803,814,815,0.0525679212147471,0.0525679212147471,-104.9751505,39.753245,-104.9745356,39.7532411
-804,815,816,0.0487973630951461,0.0487973630951461,-104.9745356,39.7532411,-104.9739648,39.753238
-805,816,817,0.0522598325196538,0.0522598325196538,-104.9739648,39.753238,-104.9733535,39.7532345
-806,817,818,0.103406751654374,0.103406751654374,-104.9733535,39.7532345,-104.9721439,39.7532392
-807,818,819,0.10785615815132,0.10785615815132,-104.9721439,39.7532392,-104.9708825,39.7532194
-808,819,820,0.10473605712406,0.10473605712406,-104.9708825,39.7532194,-104.9696574,39.7532291
-809,820,821,0.112264494558786,0.112264494558786,-104.9696574,39.7532291,-104.9683443,39.7532149
-810,821,822,0.0974128787334051,0.0974128787334051,-104.9683443,39.7532149,-104.9672048,39.753216
-811,822,823,0.107993299539667,0.107993299539667,-104.9672048,39.753216,-104.9659416,39.753226
-812,823,824,0.0548178827467902,0.0548178827467902,-104.9659416,39.753226,-104.9653005,39.7532157
-17428,10106,10103,0.0082057240713584,0.0082057240713584,-104.9831403,39.6888986,-104.9831832,39.6889646
-1819,1835,1836,0.0691383900190408,0.0691383900190408,-105.0109162,39.7209352,-105.0117245,39.7209266
-813,824,825,0.0508588332180354,0.0508588332180354,-104.9653005,39.7532157,-104.9647057,39.7532062
-816,827,828,0.0512039318870449,0.0512039318870449,-104.9622082,39.7532291,-104.9616093,39.7532223
-817,828,829,0.0518718595198435,0.0518718595198435,-104.9616093,39.7532223,-104.9610026,39.7532148
-818,829,830,0.106833526059922,0.106833526059922,-104.9610026,39.7532148,-104.9597529,39.7532154
-820,831,832,0.385745696022263,0.385745696022263,-104.9429184,39.780325,-104.9428851,39.783794
-821,832,833,0.404856481972801,0.404856481972801,-104.9428851,39.783794,-104.942994,39.787434
-823,834,835,0.105948732119107,0.105948732119107,-104.942934,39.7728949,-104.942926,39.7738477
-824,835,838,0.0910625591495108,0.0910625591495108,-104.942926,39.7738477,-104.9427798,39.7746589
-826,839,840,0.0919963536570051,0.0919963536570051,-104.942936,39.7789146,-104.942905,39.7797416
-828,841,842,0.174755253051921,0.174755253051921,-104.9425503,39.7162314,-104.9425424,39.717803
-829,842,843,0.178568082023164,0.178568082023164,-104.9425424,39.717803,-104.9425451,39.7194089
-830,843,844,0.17297498203528,0.17297498203528,-104.9425451,39.7194089,-104.9425424,39.7209645
-831,844,845,0.173265495891133,0.173265495891133,-104.9425424,39.7209645,-104.942551,39.7225227
-832,845,846,0.177949551875208,0.177949551875208,-104.942551,39.7225227,-104.9425236,39.7241229
-833,846,847,0.164704515205255,0.164704515205255,-104.9425236,39.7241229,-104.9425344,39.7256041
-835,848,849,0.140807407128784,0.140807407128784,-104.9429842,39.7544341,-104.9429772,39.7557004
-839,852,853,0.167627273627897,0.167627273627897,-104.9429072,39.7256062,-104.9429137,39.7271137
-840,853,854,0.0221861617364752,0.0221861617364752,-104.9429137,39.7271137,-104.9428989,39.7273129
-841,854,855,0.199351380476648,0.199351380476648,-104.9428989,39.7273129,-104.9429067,39.7291057
-842,855,856,0.154506611729302,0.154506611729302,-104.9429067,39.7291057,-104.942914,39.7304952
-843,856,857,0.177121299660486,0.177121299660486,-104.942914,39.7304952,-104.942882,39.7320879
-844,857,858,0.173233506037634,0.173233506037634,-104.942882,39.7320879,-104.9429078,39.7336457
-845,858,859,0.161447290254498,0.161447290254498,-104.9429078,39.7336457,-104.9428825,39.7350975
-846,859,860,0.184417991926907,0.184417991926907,-104.9428825,39.7350975,-104.9428903,39.736756
-847,860,861,0.174097913655798,0.174097913655798,-104.9428903,39.736756,-104.9428912,39.7383217
-848,861,862,0.200651350067359,0.200651350067359,-104.9428912,39.7383217,-104.9428936,39.7401262
-851,864,865,0.136205566327931,0.136205566327931,-104.9428605,39.7644833,-104.9428501,39.7657082
-852,865,866,0.134098020570816,0.134098020570816,-104.9428501,39.7657082,-104.9428673,39.7669141
-853,866,804,0.130206342500308,0.130206342500308,-104.9428673,39.7669141,-104.9428502,39.768085
-855,805,869,0.151636521465058,0.151636521465058,-104.9428549,39.7691989,-104.9428549,39.7705626
-856,869,870,0.0565102957854785,0.0565102957854785,-104.9428549,39.7705626,-104.9428589,39.7710708
-859,872,873,0.106081890543097,0.106081890543097,-104.9733495,39.7645106,-104.9721084,39.7645147
-860,873,874,0.104885275538693,0.104885275538693,-104.9721084,39.7645147,-104.9708813,39.7645106
-861,874,875,0.105346104071406,0.105346104071406,-104.9708813,39.7645106,-104.9696488,39.7645085
-862,875,876,0.105115636520032,0.105115636520032,-104.9696488,39.7645085,-104.968419,39.7645054
-16596,6712,8570,0.146117658845452,0.146117658845452,-104.9978555,39.7495627,-104.9966174,39.7504686
-864,877,878,0.106492224339564,0.106492224339564,-104.9671933,39.7645034,-104.9659474,39.7644992
-865,878,879,0.105226257982301,0.105226257982301,-104.9659474,39.7644992,-104.9647163,39.7644982
-866,879,880,0.109300044149485,0.109300044149485,-104.9647163,39.7644982,-104.9634376,39.7645079
-867,880,881,0.105305755069531,0.105305755069531,-104.9634376,39.7645079,-104.9622057,39.7644941
-868,881,882,0.0524982326673818,0.0524982326673818,-104.9622057,39.7644941,-104.9615915,39.7644962
-869,882,883,0.0527289587191423,0.0527289587191423,-104.9615915,39.7644962,-104.9609746,39.7644982
-870,883,884,0.104777165086199,0.104777165086199,-104.9609746,39.7644982,-104.9597488,39.76449
-871,884,885,0.101110616467656,0.101110616467656,-104.9597488,39.76449,-104.9585659,39.7644817
-873,886,887,0.105175290472485,0.105175290472485,-104.9573328,39.7644759,-104.9561023,39.7644735
-874,887,888,0.105460060240618,0.105460060240618,-104.9561023,39.7644735,-104.9548685,39.7644663
-875,888,889,0.104542724277831,0.104542724277831,-104.9548685,39.7644663,-104.9536454,39.7644642
-878,891,892,0.107871242081588,0.107871242081588,-104.9511738,39.7644539,-104.9499118,39.7644621
-879,892,893,0.100327397599291,0.100327397599291,-104.9499118,39.7644621,-104.9487381,39.764473
-880,893,894,0.10715921423401,0.10715921423401,-104.9487381,39.764473,-104.9474844,39.7644683
-11694,895,896,0.0160104862378167,0.0160104862378167,-105.0011439,39.7534971,-105.0012741,39.7533936
-881,894,897,0.103236099875311,0.103236099875311,-104.9474844,39.7644683,-104.9462766,39.7644635
-882,897,898,0.106539225146671,0.106539225146671,-104.9462766,39.7644635,-104.9450302,39.764473
-16754,10009,7565,0.0493392725986542,0.0493392725986542,-104.9506326,39.6988171,-104.9506273,39.6992608
-20639,10032,10878,0.0503841615701827,0.0503841615701827,-105.0143643,39.7624894,-105.0137749,39.7624832
-885,864,900,0.0968355268957622,0.0968355268957622,-104.9428605,39.7644833,-104.9417276,39.7644767
-886,900,901,0.0921857962021889,0.0921857962021889,-104.9417276,39.7644767,-104.9406492,39.7644637
-887,901,902,0.0154453872411826,0.0154453872411826,-104.9406492,39.7644637,-104.9404687,39.7644571
-888,902,903,0.099023611112339,0.099023611112339,-104.9404687,39.7644571,-104.9393102,39.7644637
-889,903,904,0.106658816969038,0.106658816969038,-104.9393102,39.7644637,-104.9380626,39.7644833
-890,904,905,0.102850064051981,0.102850064051981,-104.9380626,39.7644833,-104.9368593,39.7644833
-891,905,906,0.106374102165022,0.106374102165022,-104.9368593,39.7644833,-104.9356148,39.7644767
-893,907,908,0.107980942566683,0.107980942566683,-104.934389,39.7644899,-104.9331257,39.7644965
-897,911,912,0.0137000260099873,0.0137000260099873,-104.998644,39.7576675,-104.9985313,39.7577551
-900,914,915,0.266296417735211,0.266296417735211,-104.9793447,39.7725806,-104.9771733,39.7742982
-902,916,917,0.109365780913081,0.109365780913081,-104.9874133,39.7320545,-104.9861344,39.7320479
-903,917,918,0.110688879788924,0.110688879788924,-104.9861344,39.7320479,-104.98484,39.7320466
-904,918,919,0.0528048087506356,0.0528048087506356,-104.98484,39.7320466,-104.9842225,39.7320454
-905,919,920,0.0548227612983216,0.0548227612983216,-104.9842225,39.7320454,-104.9835814,39.7320454
-1909,1921,1922,0.0521063364540888,0.0521063364540888,-104.9646085,39.7074783,-104.9639994,39.7074818
-12333,8655,8656,0.00566894958463717,0.00566894958463717,-105.0074206,39.7547231,-105.0073545,39.7547272
-906,920,921,0.0600921295133805,0.0600921295133805,-104.9835814,39.7320454,-104.9828787,39.7320413
-907,921,922,0.0524145297386554,0.0524145297386554,-104.9828787,39.7320413,-104.9822659,39.7320313
-908,922,923,0.0533449751273277,0.0533449751273277,-104.9822659,39.7320313,-104.9816421,39.7320276
-909,923,924,0.0522830317618348,0.0522830317618348,-104.9816421,39.7320276,-104.9810307,39.7320279
-910,924,925,0.0531296104749593,0.0531296104749593,-104.9810307,39.7320279,-104.9804094,39.7320277
-911,925,926,0.0494870453453698,0.0494870453453698,-104.9804094,39.7320277,-104.9798307,39.7320293
-912,926,927,0.0490530439973252,0.0490530439973252,-104.9798307,39.7320293,-104.9792571,39.7320337
-916,930,931,0.0484862367563559,0.0484862367563559,-104.9775696,39.7320445,-104.9770026,39.732045
-917,931,932,0.0491192175023229,0.0491192175023229,-104.9770026,39.732045,-104.9764282,39.7320463
-918,932,933,0.0512499454427793,0.0512499454427793,-104.9764282,39.7320463,-104.9758289,39.7320426
-935,950,951,0.0925005138771614,0.0925005138771614,-104.9505701,39.7320992,-104.9494887,39.732119
-936,951,952,0.09155937925052,0.09155937925052,-104.9494887,39.732119,-104.9484181,39.7321077
-937,952,953,0.096647434304121,0.096647434304121,-104.9484181,39.7321077,-104.947288,39.7320961
-938,953,954,0.0946813321937467,0.0946813321937467,-104.947288,39.7320961,-104.9461808,39.7320927
-939,954,955,0.0465376592907314,0.0465376592907314,-104.9461808,39.7320927,-104.9456366,39.7320897
-941,956,957,0.0470827842175089,0.0470827842175089,-104.9450895,39.7320866,-104.944539,39.7320942
-942,957,958,0.0477097696809632,0.0477097696809632,-104.944539,39.7320942,-104.9439811,39.7320979
-943,958,959,0.0469673192776546,0.0469673192776546,-104.9439811,39.7320979,-104.9434319,39.7320929
-944,959,857,0.0470271779665272,0.0470271779665272,-104.9434319,39.7320929,-104.942882,39.7320879
-945,857,452,0.0433482724753884,0.0433482724753884,-104.942882,39.7320879,-104.9423751,39.7320847
-946,452,960,0.0461959621064724,0.0461959621064724,-104.9423751,39.7320847,-104.9418349,39.7320813
-947,960,456,0.0448744265859584,0.0448744265859584,-104.9418349,39.7320813,-104.9413102,39.732075
-948,456,961,0.0477309298676521,0.0477309298676521,-104.9413102,39.732075,-104.9407521,39.7320683
-950,962,963,0.203057783136815,0.203057783136815,-104.983818,39.7165111,-104.9838018,39.7183372
-951,963,964,0.111884367881333,0.111884367881333,-104.9838018,39.7183372,-104.9838008,39.7193434
-952,964,965,0.176567620505235,0.176567620505235,-104.9838008,39.7193434,-104.9838084,39.7209313
-953,965,966,0.178378901323504,0.178378901323504,-104.9838084,39.7209313,-104.9838084,39.7225355
-958,970,971,0.205957142551392,0.205957142551392,-104.9835185,39.781945,-104.9835456,39.7837971
-960,972,973,0.204078625402165,0.204078625402165,-104.9835456,39.7765347,-104.9835576,39.77837
-961,973,282,0.115147222371539,0.115147222371539,-104.9835576,39.77837,-104.98357,39.7794055
-964,976,977,0.0518319225146996,0.0518319225146996,-104.9741611,39.7400028,-104.9741536,39.7395367
-965,977,978,0.124228855322375,0.124228855322375,-104.9741536,39.7395367,-104.9741456,39.7384195
-966,978,979,0.172234101769625,0.172234101769625,-104.9741456,39.7384195,-104.9741314,39.7368706
-967,979,980,0.191895457064314,0.191895457064314,-104.9741314,39.7368706,-104.9741011,39.735145
-968,980,981,0.160844607226305,0.160844607226305,-104.9741011,39.735145,-104.9741082,39.7336985
-969,981,936,0.183612712644296,0.183612712644296,-104.9741082,39.7336985,-104.9740886,39.7320473
-18742,7651,6216,0.274731695307389,0.274731695307389,-105.0389317,39.7282542,-105.0389183,39.7257835
-970,936,982,0.178134725901618,0.178134725901618,-104.9740886,39.7320473,-104.9740839,39.7304453
-972,983,984,0.199061323006722,0.199061323006722,-104.9740784,39.7290693,-104.9740814,39.7272791
-973,984,985,0.188587247900735,0.188587247900735,-104.9740814,39.7272791,-104.9740756,39.7255831
-974,985,986,0.0433580404548831,0.0433580404548831,-104.9740756,39.7255831,-104.9740817,39.7251932
-975,986,987,0.125051012370851,0.125051012370851,-104.9740817,39.7251932,-104.9740753,39.7240686
-977,988,989,0.141681092806979,0.141681092806979,-104.9740667,39.7237385,-104.9740839,39.7224644
-978,989,990,0.0574887447164737,0.0574887447164737,-104.9740839,39.7224644,-104.97408,39.7219474
-979,990,991,0.201644088462744,0.201644088462744,-104.97408,39.7219474,-104.9740667,39.720134
-981,992,993,0.0142751187411164,0.0142751187411164,-104.974036,39.718887,-104.9740165,39.7187595
-983,994,995,0.198087310718341,0.198087310718341,-104.9745719,39.7165069,-104.9745878,39.7182883
-984,995,996,0.021294324874815,0.021294324874815,-104.9745878,39.7182883,-104.9745895,39.7184798
-986,997,998,0.477759831198138,0.477759831198138,-104.9873902,39.763763,-104.9876372,39.7594706
-988,999,1000,0.107359092710075,0.107359092710075,-104.9876054,39.7809872,-104.9875739,39.7819524
-989,1000,1001,0.213427542201395,0.213427542201395,-104.9875739,39.7819524,-104.9875739,39.7838718
-990,1001,1002,0.0204216124756694,0.0204216124756694,-104.9875739,39.7838718,-104.9875798,39.7840554
-991,1002,1003,0.169295945736254,0.169295945736254,-104.9875798,39.7840554,-104.987571,39.7855779
-992,1003,1004,0.202119044170343,0.202119044170343,-104.987571,39.7855779,-104.9875698,39.7873956
-993,1004,1007,0.405136142942317,0.405136142942317,-104.9875698,39.7873956,-104.987539,39.791039
-994,1008,753,0.128100004965855,0.128100004965855,-104.9879427,39.7740829,-104.9875955,39.7752036
-996,1009,277,0.197304277838347,0.197304277838347,-104.9875916,39.776556,-104.9875916,39.7783304
-998,1010,1011,0.168461631075683,0.168461631075683,-104.9624581,39.7255985,-104.9625093,39.727113
-999,1011,1012,0.0217275963794507,0.0217275963794507,-104.9625093,39.727113,-104.9625101,39.7273084
-1000,1012,1013,0.199706135128057,0.199706135128057,-104.9625101,39.7273084,-104.9625117,39.7291044
-1001,1013,1014,0.154996233446664,0.154996233446664,-104.9625117,39.7291044,-104.96252,39.7304983
-1002,1014,1015,0.0484476295387052,0.0484476295387052,-104.96252,39.7304983,-104.96252,39.730934
-1005,1018,1019,0.198018950245581,0.198018950245581,-104.9622539,39.7350462,-104.9622411,39.736827
-1006,1019,1020,0.173297369328456,0.173297369328456,-104.9622411,39.736827,-104.962243,39.7383855
-1007,1020,1021,0.177035115256862,0.177035115256862,-104.962243,39.7383855,-104.962234,39.7399776
-1008,1021,1022,0.17859043694682,0.17859043694682,-104.962234,39.7399776,-104.9622376,39.7415837
-1009,1022,674,0.00356025053355106,0.00356025053355106,-104.9622376,39.7415837,-104.9622362,39.7416157
-1010,674,1023,0.00366943257948706,0.00366943257948706,-104.9622362,39.7416157,-104.9622362,39.7416487
-1011,1023,1024,0.17484373239475,0.17484373239475,-104.9622362,39.7416487,-104.9622425,39.7432211
-1012,1024,1025,0.173998681621435,0.173998681621435,-104.9622425,39.7432211,-104.9622361,39.7447859
-1015,1027,1028,0.0704684258530158,0.0704684258530158,-104.9622318,39.748208,-104.9622408,39.7488417
-1017,1029,1030,0.0048505404615695,0.0048505404615695,-104.9622186,39.7494307,-104.9622168,39.7494743
-1018,1030,1031,0.00340295138148338,0.00340295138148338,-104.9622168,39.7494743,-104.9622174,39.7495049
-1019,1031,1035,0.134848566335067,0.134848566335067,-104.9622174,39.7495049,-104.9622398,39.7507175
-1020,1035,1036,0.137493615415566,0.137493615415566,-104.9622398,39.7507175,-104.9622462,39.751954
-16764,9868,2745,0.0490633016235184,0.0490633016235184,-104.9551011,39.698724,-104.9556601,39.6988225
-1021,1036,827,0.141821861187588,0.141821861187588,-104.9622462,39.751954,-104.9622082,39.7532291
-1023,1037,1038,0.144096028267239,0.144096028267239,-104.9622266,39.7544367,-104.9622461,39.7557325
-1024,1038,1039,0.13873602575008,0.13873602575008,-104.9622461,39.7557325,-104.9622183,39.75698
-1025,1039,1040,0.137557829611355,0.137557829611355,-104.9622183,39.75698,-104.9622463,39.7582169
-1026,1040,1041,0.134490266221638,0.134490266221638,-104.9622463,39.7582169,-104.962246,39.7594264
-1027,1041,1042,0.141541481862683,0.141541481862683,-104.962246,39.7594264,-104.9622157,39.7606991
-1028,1042,1043,0.00492593525103261,0.00492593525103261,-104.9622157,39.7606991,-104.9622157,39.7607434
-1029,1043,1044,0.138593778312369,0.138593778312369,-104.9622157,39.7607434,-104.9622117,39.7619898
-1030,1044,1045,0.140603553737706,0.140603553737706,-104.9622117,39.7619898,-104.9622462,39.763254
-1031,1045,881,0.137936273445967,0.137936273445967,-104.9622462,39.763254,-104.9622057,39.7644941
-1032,881,1046,0.138493298016227,0.138493298016227,-104.9622057,39.7644941,-104.9622049,39.7657396
-1033,1046,1047,0.135001777755027,0.135001777755027,-104.9622049,39.7657396,-104.9622057,39.7669537
-1034,1047,1048,0.131055322767976,0.131055322767976,-104.9622057,39.7669537,-104.9621706,39.768132
-1035,1048,1049,0.124939018757432,0.124939018757432,-104.9621706,39.768132,-104.9622462,39.7692541
-1037,1050,1051,0.292899479856136,0.292899479856136,-104.9620183,39.718346,-104.9620097,39.7209801
-1038,1051,1052,0.166422260927488,0.166422260927488,-104.9620097,39.7209801,-104.9620287,39.7224767
-1040,735,1053,0.129020329518136,0.129020329518136,-104.9624209,39.7765159,-104.9624154,39.7776762
-1042,1054,1055,0.104556386299221,0.104556386299221,-104.9541213,39.7802948,-104.9529111,39.7804333
-1044,1056,1057,0.0821976961903273,0.0821976961903273,-105.0423884,39.7011038,-105.043349,39.701089
-1046,1058,1059,0.198827335717405,0.198827335717405,-104.9523656,39.702949,-104.9500415,39.7029556
-1048,1060,1061,0.168836903384636,0.168836903384636,-104.9395373,39.7162311,-104.9395162,39.7147128
-1050,1062,1063,0.404705159588638,0.404705159588638,-104.9394384,39.6893266,-104.939435,39.685687
-1051,1067,1068,0.132512985213334,0.132512985213334,-105.0088199,39.7729339,-105.0088114,39.7741256
-1052,1068,1069,0.13497040303733,0.13497040303733,-105.0088114,39.7741256,-105.0088028,39.7753394
-1053,1069,1070,0.132768776601327,0.132768776601327,-105.0088028,39.7753394,-105.0087942,39.7765334
-1056,1072,1073,0.0939030414376985,0.0939030414376985,-105.009231,39.7782735,-105.0096773,39.7790452
-1058,1074,1075,0.180616569310233,0.180616569310233,-105.0092177,39.7838422,-105.0092438,39.7854664
-1059,1075,1076,0.0336398662027363,0.0336398662027363,-105.0092438,39.7854664,-105.009052,39.7857306
-1060,1076,1077,0.0410609349522483,0.0410609349522483,-105.009052,39.7857306,-105.0087381,39.7860102
-1061,1077,1078,0.0827433862317427,0.0827433862317427,-105.0087381,39.7860102,-105.0081209,39.7865836
-1062,1078,1079,0.0826887112506465,0.0826887112506465,-105.0081209,39.7865836,-105.0074815,39.7871418
-1064,1080,464,0.0761353371210495,0.0761353371210495,-104.972278,39.7033325,-104.9728479,39.7038584
-1065,464,1081,0.349900041786437,0.349900041786437,-104.9728479,39.7038584,-104.972547,39.7069966
-1066,1081,1082,0.00956876487693368,0.00956876487693368,-104.972547,39.7069966,-104.9724743,39.707062
-1068,1083,1084,0.207455473901342,0.207455473901342,-104.9730883,39.714707,-104.972397,39.7129187
-1069,1084,1085,0.20253048003379,0.20253048003379,-104.972397,39.7129187,-104.9723985,39.7110973
-1070,1085,1086,0.20117520633799,0.20117520633799,-104.9723985,39.7110973,-104.9723899,39.7092881
-1071,1086,1087,0.200445374909098,0.200445374909098,-104.9723899,39.7092881,-104.9724071,39.7074855
-1073,1088,1089,0.193552555847569,0.193552555847569,-105.0404004,39.7838769,-105.0403816,39.7856175
-1074,1089,1090,0.201907921550129,0.201907921550129,-105.0403816,39.7856175,-105.0403847,39.7874333
-1075,1090,1091,0.409168814751628,0.409168814751628,-105.0403847,39.7874333,-105.040408,39.791113
-1078,1094,1095,0.176210660233647,0.176210660233647,-105.0405328,39.7229583,-105.0405345,39.724543
-1082,1098,1099,0.214073333831546,0.214073333831546,-105.0405664,39.7301724,-105.0405735,39.7282472
-1083,1099,1100,0.273059176292595,0.273059176292595,-105.0405735,39.7282472,-105.0405477,39.7257916
-1085,1101,1102,0.177543118890406,0.177543118890406,-105.040518,39.7350236,-105.0404669,39.7366198
-1086,1102,1103,0.205192174072119,0.205192174072119,-105.0404669,39.7366198,-105.0404962,39.738465
-1089,1105,1106,0.177750162727048,0.177750162727048,-105.0409021,39.716554,-105.0408864,39.7181525
-1090,1106,1107,0.0539560094135977,0.0539560094135977,-105.0408864,39.7181525,-105.0408943,39.7186377
-1091,1107,1108,0.122234944576301,0.122234944576301,-105.0408943,39.7186377,-105.0409121,39.7197369
-1092,1108,1109,0.177333676437683,0.177333676437683,-105.0409121,39.7197369,-105.0409127,39.7213317
-1093,1109,1110,0.180925459405873,0.180925459405873,-105.0409127,39.7213317,-105.0409158,39.7229588
-1095,1111,1112,0.128811671442731,0.128811671442731,-105.0404537,39.7475871,-105.0404838,39.7487453
-1096,1112,1113,0.134815073580703,0.134815073580703,-105.0404838,39.7487453,-105.0404745,39.7499577
-1097,1113,1114,0.136688571742098,0.136688571742098,-105.0404745,39.7499577,-105.040538,39.751186
-1098,1114,1115,0.101403665812315,0.101403665812315,-105.040538,39.751186,-105.0404736,39.7520966
-1099,1115,1116,0.102067679100378,0.102067679100378,-105.0404736,39.7520966,-105.0404808,39.7530145
-1102,1118,1119,0.204345080233058,0.204345080233058,-105.0404858,39.7548633,-105.0404748,39.756701
-1103,1119,1120,0.199139333361331,0.199139333361331,-105.0404748,39.756701,-105.0404705,39.7584919
-1104,1120,1121,0.0469911073941159,0.0469911073941159,-105.0404705,39.7584919,-105.0404718,39.7589145
-1105,1121,1122,0.0592169845475301,0.0592169845475301,-105.0404718,39.7589145,-105.0404814,39.759447
-1106,1122,1123,0.0953718885827498,0.0953718885827498,-105.0404814,39.759447,-105.0404814,39.7603047
-1107,1123,1124,0.0510557799357253,0.0510557799357253,-105.0404814,39.7603047,-105.0404721,39.7607638
-1108,1124,1125,0.150795725410384,0.150795725410384,-105.0404721,39.7607638,-105.0404588,39.7621199
-1109,1125,1126,0.203566805558282,0.203566805558282,-105.0404588,39.7621199,-105.0405383,39.7639496
-1111,1127,1128,0.0472430646130033,0.0472430646130033,-105.0404877,39.7653392,-105.0404722,39.7657639
-1112,1128,1129,0.205543981836037,0.205543981836037,-105.0404722,39.7657639,-105.0404692,39.7676124
-1114,1130,1131,0.164841461931526,0.164841461931526,-105.0404986,39.769448,-105.0404564,39.7709301
-1115,1131,1132,0.171242319742711,0.171242319742711,-105.0404564,39.7709301,-105.0404464,39.7724701
-1116,1132,1133,0.15535130673221,0.15535130673221,-105.0404464,39.7724701,-105.0404403,39.7738672
-1117,1133,1134,0.155906924058663,0.155906924058663,-105.0404403,39.7738672,-105.040445,39.7752693
-1118,1134,1135,0.158641971110509,0.158641971110509,-105.040445,39.7752693,-105.0404138,39.7766958
-1120,1136,1137,0.202486056810199,0.202486056810199,-105.0404001,39.77838,-105.0404024,39.780201
-1124,1140,1141,0.106376038726262,0.106376038726262,-104.9343976,39.7632231,-104.9331531,39.7632297
-1125,1141,1142,0.11299023410348,0.11299023410348,-104.9331531,39.7632297,-104.9318313,39.7632429
-1127,1143,1144,0.105553895231553,0.105553895231553,-104.97335,39.7632488,-104.9721151,39.7632529
-1128,1144,1145,0.104117784384988,0.104117784384988,-104.9721151,39.7632529,-104.970897,39.7632567
-1129,1145,1146,0.103483298103444,0.103483298103444,-104.970897,39.7632567,-104.9696868,39.7632831
-1131,1147,1148,0.20922373460901,0.20922373460901,-104.9318227,39.7637905,-104.9293749,39.7637905
-1132,1148,1149,0.150393643985841,0.150393643985841,-104.9293749,39.7637905,-104.9276154,39.7637839
-1133,1149,1150,0.0550246362758013,0.0550246362758013,-104.9276154,39.7637839,-104.9269717,39.7637905
-1134,1150,1151,0.102697719375893,0.102697719375893,-104.9269717,39.7637905,-104.9257702,39.7637877
-1135,1151,1152,0.0983530643806034,0.0983530643806034,-104.9257702,39.7637877,-104.9246199,39.7638103
-1136,1152,1153,0.0500465548413358,0.0500465548413358,-104.9246199,39.7638103,-104.9240347,39.7637955
-1137,1153,1154,0.957298194837815,0.957298194837815,-104.9240347,39.7637955,-104.9128351,39.7638537
-1138,1155,1156,0.108691319059022,0.108691319059022,-104.9684118,39.7632474,-104.9671402,39.7632525
-1139,1156,1157,0.102249102579738,0.102249102579738,-104.9671402,39.7632525,-104.965944,39.7632443
-1140,1157,1160,0.108168549451273,0.108168549451273,-104.965944,39.7632443,-104.9646785,39.763243
-1141,1160,1161,0.101829092464478,0.101829092464478,-104.9646785,39.763243,-104.9634876,39.7632183
-1144,1162,1163,0.0512778300683452,0.0512778300683452,-104.9615772,39.7632401,-104.9609775,39.7632277
-1146,1164,1165,0.100040433804019,0.100040433804019,-104.959733,39.7632393,-104.9585626,39.7632361
-1147,1165,1166,0.107579273983848,0.107579273983848,-104.9585626,39.7632361,-104.957304,39.7632393
-1148,1166,1167,0.103452121653836,0.103452121653836,-104.957304,39.7632393,-104.9560938,39.7632261
-1149,1167,1168,0.102717798897395,0.102717798897395,-104.9560938,39.7632261,-104.9548921,39.7632327
-1150,1168,1169,0.106376023896376,0.106376023896376,-104.9548921,39.7632327,-104.9536476,39.7632393
-1151,1169,1170,0.105583034841699,0.105583034841699,-104.9536476,39.7632393,-104.9524125,39.7632244
-1152,1170,1171,0.105884448878202,0.105884448878202,-104.9524125,39.7632244,-104.9511738,39.7632137
-1153,1171,1172,0.107984392656028,0.107984392656028,-104.9511738,39.7632137,-104.9499105,39.763222
-1154,1172,1173,0.100211807661524,0.100211807661524,-104.9499105,39.763222,-104.9487381,39.7632261
-1156,1174,1175,0.0651406407561477,0.0651406407561477,-104.9462747,39.7632063,-104.9455127,39.7631967
-1157,1176,1177,0.0916420940843904,0.0916420940843904,-104.9973407,39.7040997,-104.9966621,39.703462
-1158,1177,1178,0.317057086238115,0.317057086238115,-104.9966621,39.703462,-104.9967808,39.7006121
-1159,1178,1179,0.0403904373250439,0.0403904373250439,-104.9967808,39.7006121,-104.9967738,39.7002489
-1160,1179,1180,0.087664479851631,0.087664479851631,-104.9967738,39.7002489,-104.9967587,39.6994606
-1163,555,558,0.0996109464859662,0.0996109464859662,-104.9967877,39.6982448,-104.996796,39.697349
-1165,1182,1183,0.200712633020301,0.200712633020301,-104.996786,39.6966954,-104.9968385,39.6948908
-1166,1183,141,0.201303158931495,0.201303158931495,-104.9968385,39.6948908,-104.9968856,39.6930808
-1167,141,1184,0.160264959796536,0.160264959796536,-104.9968856,39.6930808,-104.9968546,39.6916397
-1169,1185,1186,0.0892826433471673,0.0892826433471673,-104.9658583,39.7271019,-104.9648143,39.7271028
-16608,9325,9944,0.146983175121654,0.146983175121654,-104.9845026,39.7504509,-104.9832891,39.7513873
-1171,1187,1011,0.0980488049438762,0.0980488049438762,-104.9636558,39.7271103,-104.9625093,39.727113
-1172,1011,1188,0.100351187096818,0.100351187096818,-104.9625093,39.727113,-104.9613359,39.7271192
-1173,1188,1189,0.0991689160182861,0.0991689160182861,-104.9613359,39.7271192,-104.9601763,39.7271213
-1174,1189,1190,0.0985624561842153,0.0985624561842153,-104.9601763,39.7271213,-104.9590238,39.7271173
-1175,1190,1191,0.0992629404802966,0.0992629404802966,-104.9590238,39.7271173,-104.9578631,39.7271192
-1177,1192,1193,0.0982024972051538,0.0982024972051538,-104.9567021,39.7271202,-104.9555538,39.7271183
-1178,1193,1194,0.0979660824445765,0.0979660824445765,-104.9555538,39.7271183,-104.9544083,39.7271255
-1179,1194,1195,0.0324477724054976,0.0324477724054976,-104.9544083,39.7271255,-104.9540289,39.7271284
-1180,1195,1196,0.0675268282620706,0.0675268282620706,-104.9540289,39.7271284,-104.9532393,39.7271307
-1182,1197,1198,0.0679368973278076,0.0679368973278076,-104.9528791,39.7271293,-104.9520847,39.7271285
-1184,1199,1200,0.0686815112230977,0.0686815112230977,-104.951727,39.7271329,-104.9509239,39.7271356
-1185,1200,1201,0.0309923494566171,0.0309923494566171,-104.9509239,39.7271356,-104.9505615,39.7271353
-1186,1201,1202,0.0899174664521967,0.0899174664521967,-104.9505615,39.7271353,-104.9495101,39.7271408
-1187,1202,1203,0.0945518763756908,0.0945518763756908,-104.9495101,39.7271408,-104.9484045,39.7271363
-1188,1203,1204,0.0933113340782308,0.0933113340782308,-104.9484045,39.7271363,-104.9473134,39.7271328
-1189,1204,1205,0.09509225728821,0.09509225728821,-104.9473134,39.7271328,-104.9462015,39.7271261
-1190,1205,1206,0.0947055520559319,0.0947055520559319,-104.9462015,39.7271261,-104.9450941,39.7271221
-1191,1206,1207,0.0954663818870976,0.0954663818870976,-104.9450941,39.7271221,-104.9439778,39.7271255
-1192,1207,1208,0.0457748420522195,0.0457748420522195,-104.9439778,39.7271255,-104.9434426,39.7271196
-1193,1208,853,0.0452361278424885,0.0452361278424885,-104.9434426,39.7271196,-104.9429137,39.7271137
-1194,853,1209,0.0465328064656566,0.0465328064656566,-104.9429137,39.7271137,-104.9423696,39.7271171
-1195,1209,1210,0.0443349306457526,0.0443349306457526,-104.9423696,39.7271171,-104.9418512,39.7271204
-1196,1210,1211,0.0926255737985973,0.0926255737985973,-104.9418512,39.7271204,-104.940806,39.726902
-1200,1214,1215,0.199187167786165,0.199187167786165,-105.0123769,39.7838268,-105.0123627,39.7856181
-1201,1215,1216,0.200954541481784,0.200954541481784,-105.0123627,39.7856181,-105.0123497,39.7874253
-1202,1216,1217,0.405030982441888,0.405030982441888,-105.0123497,39.7874253,-105.0123693,39.7910678
-1203,1218,1219,0.0492032479248998,0.0492032479248998,-105.0123634,39.7348021,-105.0123463,39.7352444
-1204,1219,1220,0.0957003230509211,0.0957003230509211,-105.0123463,39.7352444,-105.0123588,39.736105
-1206,1221,1222,0.0745042299709739,0.0745042299709739,-105.0123509,39.7369148,-105.0123423,39.7375848
-1207,1222,1223,0.102728552500243,0.102728552500243,-105.0123423,39.7375848,-105.012356,39.7385086
-1208,1223,1224,0.112933078893132,0.112933078893132,-105.012356,39.7385086,-105.0123175,39.7395238
-1210,1225,1226,0.132646861758746,0.132646861758746,-105.0118006,39.7583774,-105.01181,39.7571845
-1212,1227,1228,0.133737749967366,0.133737749967366,-105.0123547,39.769283,-105.0123662,39.7704857
-1213,1228,1229,0.138340301298334,0.138340301298334,-105.0123662,39.7704857,-105.0123561,39.7717298
-1214,1229,1230,0.133937469551528,0.133937469551528,-105.0123561,39.7717298,-105.0123669,39.7729343
-1215,1230,1231,0.133215122537399,0.133215122537399,-105.0123669,39.7729343,-105.0123362,39.7741321
-1216,1231,1236,0.135593895539884,0.135593895539884,-105.0123362,39.7741321,-105.012326,39.7753515
-1217,1236,1237,0.134329596288595,0.134329596288595,-105.012326,39.7753515,-105.0123583,39.7765593
-1218,1237,1238,0.133838756927755,0.133838756927755,-105.0123583,39.7765593,-105.0123072,39.7777623
-1220,1239,1240,0.201119608536246,0.201119608536246,-105.0121506,39.7275003,-105.0121592,39.729309
-1222,1241,1242,0.0687159203588902,0.0687159203588902,-105.0205242,39.7613979,-105.0205115,39.7620158
-1223,1242,1243,0.133400908392016,0.133400908392016,-105.0205115,39.7620158,-105.0205151,39.7632155
-1224,1243,1247,0.135380581131659,0.135380581131659,-105.0205151,39.7632155,-105.0205098,39.764433
-1225,1247,1248,0.134002229768192,0.134002229768192,-105.0205098,39.764433,-105.0205165,39.7656381
-1226,1248,1249,0.133545106900313,0.133545106900313,-105.0205165,39.7656381,-105.0205165,39.7668391
-1227,1249,1250,0.135368900396577,0.135368900396577,-105.0205165,39.7668391,-105.0205192,39.7680565
-1228,1250,1251,0.135024432224222,0.135024432224222,-105.0205192,39.7680565,-105.0205232,39.7692708
-1229,1251,1252,0.104469760585228,0.104469760585228,-105.0205232,39.7692708,-105.020531,39.7702103
-1230,1252,1253,0.0306570001135196,0.0306570001135196,-105.020531,39.7702103,-105.0205211,39.7704859
-1231,1253,1254,0.0720522950545032,0.0720522950545032,-105.0205211,39.7704859,-105.0205077,39.7711338
-1232,1254,1255,0.0658986376594475,0.0658986376594475,-105.0205077,39.7711338,-105.0204909,39.7717263
-1233,1255,1256,0.0399746208950617,0.0399746208950617,-105.0204909,39.7717263,-105.0204902,39.7720858
-1234,1256,1257,0.0944491578366609,0.0944491578366609,-105.0204902,39.7720858,-105.020488,39.7729352
-1235,1257,1258,0.132766928353997,0.132766928353997,-105.020488,39.7729352,-105.0204854,39.7741292
-1236,1258,1259,0.135424431672451,0.135424431672451,-105.0204854,39.7741292,-105.0204832,39.7753471
-1237,1259,1260,0.140672385455392,0.140672385455392,-105.0204832,39.7753471,-105.0205036,39.7766121
-1238,1260,1261,0.134975501941172,0.134975501941172,-105.0205036,39.7766121,-105.0204874,39.7778259
-1239,1261,1262,0.0645486549169547,0.0645486549169547,-105.0204874,39.7778259,-105.0204874,39.7784064
-1240,1262,1263,0.0682069680036474,0.0682069680036474,-105.0204874,39.7784064,-105.0204874,39.7790198
-1241,1263,1264,0.132661334326961,0.132661334326961,-105.0204874,39.7790198,-105.0204729,39.7802128
-1242,1264,1265,0.198750077150319,0.198750077150319,-105.0204729,39.7802128,-105.0204691,39.7820002
-1243,1265,1266,0.153240793837705,0.153240793837705,-105.0204691,39.7820002,-105.0204447,39.7833782
-1245,273,1267,0.0675767060379672,0.0675767060379672,-105.0203028,39.7400362,-105.0202947,39.7406439
-1247,1268,1269,0.0991648269688332,0.0991648269688332,-105.0203557,39.7175319,-105.0203986,39.7184231
-1248,1269,1270,0.105715575753422,0.105715575753422,-105.0203986,39.7184231,-105.0204072,39.7193738
-1249,1270,1271,0.096909170039208,0.096909170039208,-105.0204072,39.7193738,-105.0204158,39.7202453
-1251,1272,1273,0.132822339876578,0.132822339876578,-105.0204988,39.7476034,-105.0204988,39.7487979
-1252,1273,1274,0.108602805332053,0.108602805332053,-105.0204988,39.7487979,-105.0204817,39.7497745
-1253,1274,1275,0.0271637528935803,0.0271637528935803,-105.0204817,39.7497745,-105.0204903,39.7500187
-1254,1275,1276,0.112230208152067,0.112230208152067,-105.0204903,39.7500187,-105.0205429,39.7510272
-1255,1276,1277,0.0176649567962355,0.0176649567962355,-105.0205429,39.7510272,-105.020537,39.751186
-1256,1277,1278,0.135399208639876,0.135399208639876,-105.020537,39.751186,-105.0205102,39.7524035
-1257,1278,1279,0.134958357098824,0.134958357098824,-105.0205102,39.7524035,-105.0205165,39.7536172
-1258,1279,1280,0.13471438954866,0.13471438954866,-105.0205165,39.7536172,-105.0205245,39.7548287
-1259,1280,1281,0.0527317447874755,0.0527317447874755,-105.0205245,39.7548287,-105.0205312,39.7553029
-1260,1281,1282,0.0822068643990868,0.0822068643990868,-105.0205312,39.7553029,-105.0205344,39.7560422
-1262,24,1283,0.0541075654220215,0.0541075654220215,-105.0205339,39.7572526,-105.0205326,39.7577392
-1263,1283,1284,0.0277584904979192,0.0277584904979192,-105.0205326,39.7577392,-105.0205218,39.7579887
-1264,1284,1285,0.0119510600074318,0.0119510600074318,-105.0205218,39.7579887,-105.0205433,39.7580949
-1265,1285,1286,0.00765101800505865,0.00765101800505865,-105.0205433,39.7580949,-105.020542,39.7581637
-1267,1287,1288,0.0102422085479252,0.0102422085479252,-105.0205384,39.7583461,-105.0205366,39.7584382
-1269,1289,1290,0.18749026453307,0.18749026453307,-105.0204845,39.7839453,-105.0204693,39.7856314
-1270,1290,1291,0.200784792674354,0.200784792674354,-105.0204693,39.7856314,-105.0204718,39.7874371
-1271,1291,1292,0.406662337861329,0.406662337861329,-105.0204718,39.7874371,-105.0204665,39.7910943
-1272,1293,1028,0.104130177494266,0.104130177494266,-104.9634588,39.7488413,-104.9622408,39.7488417
-1274,1294,1295,0.209580478517529,0.209580478517529,-104.9875234,39.7129763,-104.9899734,39.7129983
-1275,1295,1296,0.202179673681852,0.202179673681852,-104.9899734,39.7129983,-104.992337,39.712987
-1276,1296,1297,0.102644670381459,0.102644670381459,-104.992337,39.712987,-104.993537,39.712987
-1277,1297,1298,0.08553722531747,0.08553722531747,-104.993537,39.712987,-104.994537,39.712987
-1278,1299,1300,0.10911250090994,0.10911250090994,-105.0250625,39.7133847,-105.0263381,39.713379
-1279,1300,1305,0.103516561820708,0.103516561820708,-105.0263381,39.713379,-105.0275483,39.713379
-1280,1305,1306,0.107188605435255,0.107188605435255,-105.0275483,39.713379,-105.0288014,39.7133724
-1282,1307,1308,0.104254785791266,0.104254785791266,-105.0299945,39.7133592,-105.0312133,39.7133658
-1283,1308,1309,0.104981820314566,0.104981820314566,-105.0312133,39.7133658,-105.0324406,39.7133724
-1284,1309,1310,0.0539236153779667,0.0539236153779667,-105.0324406,39.7133724,-105.033071,39.7133691
-1285,1310,1311,0.0525379554780919,0.0525379554780919,-105.033071,39.7133691,-105.0336852,39.7133658
-1287,1312,1313,0.0516652738700608,0.0516652738700608,-105.0342968,39.7133689,-105.0349008,39.7133719
-1288,1313,1314,0.0506813468547144,0.0506813468547144,-105.0349008,39.7133719,-105.0354933,39.7133745
-1289,1314,1315,0.0508976456987324,0.0508976456987324,-105.0354933,39.7133745,-105.0360883,39.7133797
-1290,1315,1316,0.0521616744394787,0.0521616744394787,-105.0360883,39.7133797,-105.0366981,39.7133763
-1291,1316,1317,0.0506396099336441,0.0506396099336441,-105.0366981,39.7133763,-105.0372901,39.7133724
-1292,1317,1318,0.0516214270666003,0.0516214270666003,-105.0372901,39.7133724,-105.0378936,39.7133724
-1293,1318,1319,0.0518951446578895,0.0518951446578895,-105.0378936,39.7133724,-105.0385003,39.7133724
-1294,1319,1320,0.0518013233234396,0.0518013233234396,-105.0385003,39.7133724,-105.0391059,39.7133709
-1295,1320,1321,0.0498510970504219,0.0498510970504219,-105.0391059,39.7133709,-105.0396887,39.7133694
-1296,1321,1322,0.0511186989957182,0.0511186989957182,-105.0396887,39.7133694,-105.0402863,39.7133654
-1297,1322,1323,0.0508331487974254,0.0508331487974254,-105.0402863,39.7133654,-105.0408805,39.7133731
-1300,1325,1326,0.08881123864976,0.08881123864976,-105.0432523,39.7133745,-105.0442903,39.7133559
-1304,499,1329,0.167484239247501,0.167484239247501,-105.0019139,39.7130364,-105.0038719,39.7130446
-1305,1329,1332,0.203905657642638,0.203905657642638,-105.0038719,39.7130446,-105.0062556,39.7130258
-1306,1332,1333,0.204847680679676,0.204847680679676,-105.0062556,39.7130258,-105.0086503,39.7130456
-1307,1333,1334,0.201123583387407,0.201123583387407,-105.0086503,39.7130456,-105.0110016,39.7130472
-1309,1335,1336,0.157474175144751,0.157474175144751,-105.012511,39.712992,-105.014352,39.712994
-1310,1336,1337,0.117575441930224,0.117575441930224,-105.014352,39.712994,-105.015726,39.713024
-1311,1337,1338,0.0942761529447682,0.0942761529447682,-105.015726,39.713024,-105.016828,39.7130093
-1313,1339,1340,0.0991229934735866,0.0991229934735866,-105.0179868,39.7130093,-105.0191455,39.712996
-1314,1340,193,0.100574656408132,0.100574656408132,-105.0191455,39.712996,-105.0203213,39.712996
-1315,193,1341,0.102057084030905,0.102057084030905,-105.0203213,39.712996,-105.0215144,39.7130026
-1316,1341,1342,0.101342753238197,0.101342753238197,-105.0215144,39.7130026,-105.0226989,39.7129828
-1317,1342,1343,0.0983873083767276,0.0983873083767276,-105.0226989,39.7129828,-105.023849,39.712996
-1318,1343,1344,0.103799446896886,0.103799446896886,-105.023849,39.712996,-105.0250625,39.7129968
-1320,1345,1346,0.0125938712274396,0.0125938712274396,-105.0025087,39.7490201,-105.0024538,39.7491252
-1323,1348,1349,0.273909093656176,0.273909093656176,-104.9759324,39.769905,-104.9740676,39.7719084
-1325,1350,1351,0.136546503712986,0.136546503712986,-105.0063979,39.7825483,-105.007995,39.7825082
-1326,1351,1352,0.134960662965356,0.134960662965356,-105.007995,39.7825082,-105.0095743,39.7825214
-1327,1352,1353,0.12926179848792,0.12926179848792,-105.0095743,39.7825214,-105.0110864,39.7825542
-1328,1353,1354,0.137757238088674,0.137757238088674,-105.0110864,39.7825542,-105.0126985,39.7825478
-1329,1354,1355,0.134312853283448,0.134312853283448,-105.0126985,39.7825478,-105.0142702,39.7825623
-1330,1355,1356,0.132780195397846,0.132780195397846,-105.0142702,39.7825623,-105.015824,39.7825504
-1334,1359,1360,0.200708631878513,0.200708631878513,-104.9979619,39.6967021,-104.9980058,39.6948974
-1336,142,1364,0.213116678885437,0.213116678885437,-104.9980358,39.6930742,-104.9980305,39.6911576
-1338,1365,1366,0.152775417186349,0.152775417186349,-105.0337367,39.6912702,-105.0337624,39.6898964
-1339,1367,1368,0.213588518747439,0.213588518747439,-104.9875368,39.7120974,-104.9900335,39.7121268
-1341,1369,1370,0.0932290478454428,0.0932290478454428,-104.9923595,39.7121202,-104.993449,39.7121432
-1342,1371,1372,0.0501807359890933,0.0501807359890933,-105.0361028,39.7117899,-105.0366894,39.7117844
-1343,1372,1373,0.0506488838331464,0.0506488838331464,-105.0366894,39.7117844,-105.0372815,39.7117878
-1344,1373,1374,0.0509778039678037,0.0509778039678037,-105.0372815,39.7117878,-105.0378774,39.7117812
-1345,1374,1375,0.0510804446988023,0.0510804446988023,-105.0378774,39.7117812,-105.0384745,39.7117746
-1346,1375,1376,0.0530938888935116,0.0530938888935116,-105.0384745,39.7117746,-105.0390952,39.7117746
-1347,1376,1377,0.0533676128248485,0.0533676128248485,-105.0390952,39.7117746,-105.0397191,39.7117746
-1348,1377,1378,0.0492215264037076,0.0492215264037076,-105.0397191,39.7117746,-105.0402944,39.711784
-1349,1378,1379,0.0493909004241748,0.0493909004241748,-105.0402944,39.711784,-105.0408718,39.7117866
-1350,1379,1380,0.102775081126436,0.102775081126436,-105.0408718,39.7117866,-105.0420733,39.7117889
-1351,1380,1381,0.100172308119327,0.100172308119327,-105.0420733,39.7117889,-105.0432442,39.7117733
-1353,1382,1383,0.0341877559991377,0.0341877559991377,-104.9972593,39.7123952,-104.9976275,39.7122756
-1354,1383,1384,0.104577694208817,0.104577694208817,-104.9976275,39.7122756,-104.998769,39.7119388
-1356,1385,1386,0.193890579001187,0.193890579001187,-105.0016028,39.7121409,-105.0038695,39.7121354
-2459,714,2450,0.108569713532818,0.108569713532818,-105.0041958,39.7705323,-105.0054661,39.7705389
-1358,1387,1388,0.203368582544414,0.203368582544414,-105.0062556,39.7121476,-105.0086331,39.7121543
-1359,1388,1389,0.203745939128333,0.203745939128333,-105.0086331,39.7121543,-105.011015,39.7121455
-1361,1390,1391,0.199208620541168,0.199208620541168,-105.0322152,39.7838328,-105.0322278,39.7856243
-1362,1391,1392,0.199941300123434,0.199941300123434,-105.0322278,39.7856243,-105.0322013,39.7874223
-1364,1393,1394,0.177657657089983,0.177657657089983,-105.0324691,39.7165619,-105.0324777,39.7181596
-1365,1394,1395,0.177656134299769,0.177656134299769,-105.0324777,39.7181596,-105.0324777,39.7197573
-1366,1395,1396,0.0721099099294465,0.0721099099294465,-105.0324777,39.7197573,-105.0324777,39.7204058
-1367,1396,1397,0.103333445330309,0.103333445330309,-105.0324777,39.7204058,-105.0324777,39.7213351
-1368,1397,1398,0.177111308895875,0.177111308895875,-105.0324777,39.7213351,-105.0324765,39.7229279
-1369,1398,1399,0.177390305757292,0.177390305757292,-105.0324765,39.7229279,-105.0324836,39.7245232
-1370,1399,1400,0.0617135848764214,0.0617135848764214,-105.0324836,39.7245232,-105.0324862,39.7250782
-1371,1400,1401,0.0203196347458361,0.0203196347458361,-105.0324862,39.7250782,-105.0324911,39.7252609
-1373,1402,1403,0.0235752242204257,0.0235752242204257,-105.032154,39.734838,-105.0321575,39.73505
-1375,1404,1402,0.00627534757508794,0.00627534757508794,-105.0321449,39.734782,-105.032154,39.734838
-1377,1405,1406,0.205561430653916,0.205561430653916,-105.0321172,39.729303,-105.0321363,39.7311516
-1378,1406,1407,0.198211407371417,0.198211407371417,-105.0321363,39.7311516,-105.032155,39.7329341
-1379,1407,1404,0.205478920022626,0.205478920022626,-105.032155,39.7329341,-105.0321449,39.734782
-1381,1408,1409,0.100293396704139,0.100293396704139,-105.032238,39.773186,-105.032333,39.774085
-2482,2015,1998,0.0374209544699414,0.0374209544699414,-104.9354827,39.7474085,-104.935045,39.7474085
-1382,1409,1410,0.293581023203639,0.293581023203639,-105.032333,39.774085,-105.0322367,39.7767242
-1386,1413,1414,0.135399373352711,0.135399373352711,-105.0110892,39.7813605,-105.0126737,39.7813618
-1387,1414,1415,0.134222064866511,0.134222064866511,-105.0126737,39.7813618,-105.0142444,39.7813552
-1388,1415,1416,0.135554703950228,0.135554703950228,-105.0142444,39.7813552,-105.0158307,39.7813611
-1390,1417,1418,0.0459508709120374,0.0459508709120374,-104.9988224,39.7819937,-104.9993559,39.7819419
-1391,1418,1419,0.202303287973101,0.202303287973101,-104.9993559,39.7819419,-105.0017224,39.7819937
-1394,1421,1422,0.101428183167069,0.101428183167069,-105.0345828,39.7821162,-105.0357695,39.7820968
-1395,1422,1423,0.0971760324958247,0.0971760324958247,-105.0357695,39.7820968,-105.0369066,39.7820848
-1396,1423,1424,0.100465380366459,0.100465380366459,-105.0369066,39.7820848,-105.0380823,39.7820859
-1397,1424,1425,0.0503823697773718,0.0503823697773718,-105.0380823,39.7820859,-105.0386719,39.7820847
-1398,1425,1426,0.0484682644313395,0.0484682644313395,-105.0386719,39.7820847,-105.0392391,39.7820835
-1399,1426,1427,0.0493995225121813,0.0493995225121813,-105.0392391,39.7820835,-105.0398172,39.7820831
-1400,1427,1138,0.0500574902796296,0.0500574902796296,-105.0398172,39.7820831,-105.040403,39.7820828
-1401,1138,1428,0.0487273610513856,0.0487273610513856,-105.040403,39.7820828,-105.0409732,39.782078
-1403,1429,1430,0.0510517494638005,0.0510517494638005,-105.0415749,39.7820729,-105.0421723,39.7820779
-1404,1430,1431,0.0485479238043371,0.0485479238043371,-105.0421723,39.7820779,-105.0427404,39.7820827
-1405,1431,1432,0.0499990939034271,0.0499990939034271,-105.0427404,39.7820827,-105.0433255,39.7820793
-1406,1432,1433,0.0540496336498359,0.0540496336498359,-105.0433255,39.7820793,-105.043958,39.7820756
-1408,1434,1435,0.101502735016485,0.101502735016485,-105.015828,39.7819929,-105.0170158,39.7820003
-1409,1435,1436,0.0975542961638382,0.0975542961638382,-105.0170158,39.7820003,-105.0181574,39.7819937
-1410,1436,1437,0.099750341261668,0.099750341261668,-105.0181574,39.7819937,-105.0193247,39.7820003
-1411,1437,1265,0.0977907961309881,0.0977907961309881,-105.0193247,39.7820003,-105.0204691,39.7820002
-1413,1438,1439,0.100436447451859,0.100436447451859,-105.0216256,39.7820039,-105.0228009,39.7820131
-1416,1441,1442,0.100952147732681,0.100952147732681,-105.0038773,39.7148211,-105.0038934,39.7139133
-1417,1442,1329,0.0966125375658313,0.0966125375658313,-105.0038934,39.7139133,-105.0038719,39.7130446
-1418,1329,1386,0.101098635736807,0.101098635736807,-105.0038719,39.7130446,-105.0038695,39.7121354
-1419,1386,1443,0.103303628365074,0.103303628365074,-105.0038695,39.7121354,-105.0038795,39.7112064
-1420,1443,1444,0.105351454494942,0.105351454494942,-105.0038795,39.7112064,-105.0039077,39.7102592
-1421,1444,1445,0.104823988220675,0.104823988220675,-105.0039077,39.7102592,-105.0039116,39.7093165
-1422,1445,1446,0.0939934684249721,0.0939934684249721,-105.0039116,39.7093165,-105.0038944,39.7084713
-1424,1447,1448,0.0986593061594928,0.0986593061594928,-105.0038773,39.7075535,-105.0037914,39.7066687
-1425,1448,1449,0.102799709683289,0.102799709683289,-105.0037914,39.7066687,-105.0037914,39.7057442
-1426,1449,1450,0.0947158385157811,0.0947158385157811,-105.0037914,39.7057442,-105.0037914,39.7048924
-1427,1450,1451,0.0999075147918272,0.0999075147918272,-105.0037914,39.7048924,-105.0038258,39.7039943
-1429,1452,784,0.0977509062908684,0.0977509062908684,-105.003594,39.7030434,-105.0031735,39.702226
-1431,1453,1454,0.0719801500300486,0.0719801500300486,-105.0038208,39.695498,-105.0038293,39.6948507
-1432,1454,147,0.198407848383786,0.198407848383786,-105.0038293,39.6948507,-105.0039152,39.6930676
-1433,147,1455,0.0338525123105229,0.0338525123105229,-105.0039152,39.6930676,-105.0039409,39.6927638
-1435,151,1456,0.201963345264684,0.201963345264684,-105.0077346,39.6931072,-105.0077346,39.6912909
-1438,1458,1459,0.393387760227334,0.393387760227334,-105.0078206,39.6893993,-105.007872,39.6858617
-1439,1460,1343,0.203476082408649,0.203476082408649,-105.0238542,39.7148259,-105.023849,39.712996
-1440,1343,1461,0.205811743637529,0.205811743637529,-105.023849,39.712996,-105.0238413,39.7111451
-1441,1461,1462,0.203884797606556,0.203884797606556,-105.0238413,39.7111451,-105.0238747,39.7093117
-1442,1462,1463,0.199707411933497,0.199707411933497,-105.0238747,39.7093117,-105.0238662,39.7075157
-1443,1463,1464,0.202654089186264,0.202654089186264,-105.0238662,39.7075157,-105.0238576,39.7056932
-1444,1464,1465,0.201184980777767,0.201184980777767,-105.0238576,39.7056932,-105.0238576,39.7038839
-1446,778,1466,0.187246918966658,0.187246918966658,-105.023849,39.7020679,-105.0238662,39.700384
-1447,1466,1467,0.197539000166948,0.197539000166948,-105.0238662,39.700384,-105.0238404,39.6986076
-1448,1467,1468,0.208212504536917,0.208212504536917,-105.0238404,39.6986076,-105.0238399,39.6967351
-1450,1469,1470,0.186875447219802,0.186875447219802,-105.0235652,39.6967351,-105.0235572,39.6950545
-1451,173,1471,0.256211082856798,0.256211082856798,-105.0231623,39.6931129,-105.0231842,39.6908088
-1454,1473,1474,0.0115011236026218,0.0115011236026218,-104.9248865,39.6961248,-104.9247632,39.6960836
-1455,1474,1475,0.0782239536830869,0.0782239536830869,-104.9247632,39.6960836,-104.9241194,39.6955841
-1456,1475,1476,0.086773238144748,0.086773238144748,-104.9241194,39.6955841,-104.9233668,39.695061
-1457,1476,1479,0.0924870142175924,0.0924870142175924,-104.9233668,39.695061,-104.9226286,39.6944534
-1458,1479,1480,0.37958729242533,0.37958729242533,-104.9226286,39.6944534,-104.9194549,39.6920681
-1460,1482,1483,0.0482525610515095,0.0482525610515095,-104.9907544,39.6948087,-104.9913183,39.6948152
-1463,1183,1360,0.0998764831880159,0.0998764831880159,-104.9968385,39.6948908,-104.9980058,39.6948974
-1464,1360,1485,0.101348070124559,0.101348070124559,-104.9980058,39.6948974,-104.9991903,39.6948908
-1465,1485,1486,0.0984049068298888,0.0984049068298888,-104.9991903,39.6948908,-105.0003404,39.6948842
-1467,1487,1488,0.111519868825334,0.111519868825334,-104.9874337,39.6948003,-104.988737,39.694787
-1471,1454,1491,0.201276239535877,0.201276239535877,-105.0038293,39.6948507,-105.0061812,39.6948904
-1473,1492,1493,0.102671300709598,0.102671300709598,-105.036538,39.695087,-105.037738,39.695087
-1474,1493,1494,0.114201675013651,0.114201675013651,-105.037738,39.695087,-105.0390582,39.6949357
-1475,1494,1495,0.100620235623392,0.100620235623392,-105.0390582,39.6949357,-105.0402341,39.6949489
-1476,1495,1496,0.0991406161889474,0.0991406161889474,-105.0402341,39.6949489,-105.0413928,39.6949423
-1477,1496,1497,0.0998844924107287,0.0998844924107287,-105.0413928,39.6949423,-105.0425601,39.6949555
-1478,1497,1498,0.102075212599034,0.102075212599034,-105.0425601,39.6949555,-105.0437531,39.6949621
-1479,1498,1499,0.0984215743592215,0.0984215743592215,-105.0437531,39.6949621,-105.0449033,39.6949489
-1480,1499,1500,0.710275264674714,0.710275264674714,-105.0449033,39.6949489,-105.0532048,39.6949656
-1481,1501,1502,0.109574036549915,0.109574036549915,-105.0250491,39.694923,-105.0263295,39.6949026
-1482,1502,1503,0.290817056726042,0.290817056726042,-105.0263295,39.6949026,-105.0297284,39.6949225
-1484,1504,1505,0.0925327391334129,0.0925327391334129,-105.0309987,39.6949159,-105.0320802,39.6949159
-1485,1505,1506,0.0984021297067109,0.0984021297067109,-105.0320802,39.6949159,-105.0332303,39.6949159
-1486,1506,1508,0.0976913946915281,0.0976913946915281,-105.0332303,39.6949159,-105.0343718,39.694896
-1489,1509,1510,0.0972031962531711,0.0972031962531711,-104.9520771,39.704954,-104.9532101,39.7050201
-1490,1510,1511,0.029446204772298,0.029446204772298,-104.9532101,39.7050201,-104.9534977,39.7051656
-1494,1514,1515,0.0918220075397064,0.0918220075397064,-104.9278643,39.6960978,-104.9267914,39.6961177
-1499,1518,1519,0.202094906389576,0.202094906389576,-104.9745407,39.7110945,-104.9745633,39.7092771
-1500,1519,1520,0.199707443263373,0.199707443263373,-104.9745633,39.7092771,-104.9745719,39.7074811
-1501,1520,1521,0.202063984146535,0.202063984146535,-104.9745719,39.7074811,-104.9745465,39.705664
-1502,1521,1522,0.20219834838932,0.20219834838932,-104.9745465,39.705664,-104.9745729,39.7038457
-1503,1522,1523,0.199783925434931,0.199783925434931,-104.9745729,39.7038457,-104.9745731,39.702049
-1504,1523,47,0.203533027899534,0.203533027899534,-104.9745731,39.702049,-104.974563,39.7002186
-2599,2565,2566,0.0719878134592224,0.0719878134592224,-104.9525578,39.7090414,-104.9525835,39.7096885
-1506,1524,1525,0.202471618520659,0.202471618520659,-104.9745686,39.6984311,-104.9745895,39.6966103
-1507,1525,1526,0.207090708341307,0.207090708341307,-104.9745895,39.6966103,-104.974598,39.6947479
-1508,1526,1527,0.19569314849173,0.19569314849173,-104.974598,39.6947479,-104.974606,39.692988
-1509,1527,1528,0.200397251106195,0.200397251106195,-104.974606,39.692988,-104.9746158,39.6911858
-1511,1529,1530,2.00893755060013,2.00893755060013,-104.9745995,39.6893814,-104.9746235,39.6713146
-1516,1535,1536,0.100586492660266,0.100586492660266,-104.95706,39.7213954,-104.9582358,39.7214152
-1518,1009,1537,0.0517503943444181,0.0517503943444181,-104.9875916,39.776556,-104.9869861,39.7765493
-1519,1537,1540,0.0418405299236717,0.0418405299236717,-104.9869861,39.7765493,-104.9864968,39.7765361
-1520,1540,1541,0.0515572086033239,0.0515572086033239,-104.9864968,39.7765361,-104.9858935,39.7765349
-1521,1541,1542,0.0506297333875711,0.0506297333875711,-104.9858935,39.7765349,-104.9853013,39.7765217
-1522,1542,1547,0.050402272284143,0.050402272284143,-104.9853013,39.7765217,-104.9847116,39.7765295
-1523,1547,972,0.0996461444866795,0.0996461444866795,-104.9847116,39.7765295,-104.9835456,39.7765347
-1524,972,1548,0.0962022319753865,0.0962022319753865,-104.9835456,39.7765347,-104.9824199,39.7765295
-1525,1548,1549,0.0953657467513535,0.0953657467513535,-104.9824199,39.7765295,-104.9813041,39.7765427
-1526,1549,1550,0.0963437695650725,0.0963437695650725,-104.9813041,39.7765427,-104.9801772,39.7765679
-1528,1551,1552,0.142721374587541,0.142721374587541,-104.945934,39.777795,-104.944264,39.777781
-1529,1552,1553,0.0277011537567162,0.0277011537567162,-104.944264,39.777781,-104.943941,39.77776
-1530,1554,1555,0.0435488620803952,0.0435488620803952,-104.9639791,39.7776803,-104.9634695,39.7776803
-1531,1555,1053,0.0900813280777187,0.0900813280777187,-104.9634695,39.7776803,-104.9624154,39.7776762
-1532,1053,1556,0.091689363858679,0.091689363858679,-104.9624154,39.7776762,-104.9613425,39.77767
-1537,1560,1561,0.060529314582724,0.060529314582724,-104.9571611,39.7776691,-104.9564528,39.7776703
-1538,1561,1562,0.0982757577888809,0.0982757577888809,-104.9564528,39.7776703,-104.9553028,39.7776723
-16447,9904,9905,0.234187757526107,0.234187757526107,-104.9731712,39.6980224,-104.9731684,39.7001285
-1539,1562,1563,0.0964555264462913,0.0964555264462913,-104.9553028,39.7776723,-104.9541741,39.7776743
-1540,1563,1564,0.0948745488688521,0.0948745488688521,-104.9541741,39.7776743,-104.9530639,39.7776762
-1541,1564,1565,0.0967033454927318,0.0967033454927318,-104.9530639,39.7776762,-104.9519323,39.7776782
-1542,1565,1566,0.0968058200777679,0.0968058200777679,-104.9519323,39.7776782,-104.9507995,39.7776799
-1543,1566,1567,0.0857541821683109,0.0857541821683109,-104.9507995,39.7776799,-104.9497965,39.7776561
-1544,1567,1568,0.099340207555012,0.099340207555012,-104.9497965,39.7776561,-104.9486346,39.7776838
-1545,1568,1571,0.0938405349536985,0.0938405349536985,-104.9486346,39.7776838,-104.9475365,39.7776858
-1546,1571,1572,0.0960880186310076,0.0960880186310076,-104.9475365,39.7776858,-104.9464121,39.7776877
-1548,1573,1574,0.0687509395523497,0.0687509395523497,-105.0353206,39.6868062,-105.0360845,39.6869978
-1551,1576,1577,0.102936179368501,0.102936179368501,-105.0378698,39.6874469,-105.0390628,39.6875658
-1555,1580,1581,0.0874483930882581,0.0874483930882581,-105.0421871,39.6881867,-105.0432085,39.6882131
-1558,1583,1584,0.322225767594647,0.322225767594647,-105.0452106,39.6881689,-105.0489763,39.6881801
-1559,1585,158,0.325178498041831,0.325178498041831,-105.0145707,39.6959461,-105.0136315,39.6931124
-1560,158,1586,0.248813969770461,0.248813969770461,-105.0136315,39.6931124,-105.0136484,39.6908748
-1562,1587,1588,0.682458212363131,0.682458212363131,-105.0138115,39.6884179,-105.0128935,39.6823212
-1563,1589,1590,0.093984831401002,0.093984831401002,-105.0133261,39.7073704,-105.0133347,39.7065252
-1564,1590,1591,0.0969174980637894,0.0969174980637894,-105.0133347,39.7065252,-105.0133347,39.7056536
-1565,1591,1592,0.0961947351154639,0.0961947351154639,-105.0133347,39.7056536,-105.0133176,39.7047886
-1566,1592,1593,0.0903125194205546,0.0903125194205546,-105.0133176,39.7047886,-105.0133176,39.7039764
-1567,1593,768,0.157881413911052,0.157881413911052,-105.0133176,39.7039764,-105.0133004,39.7025566
-1568,768,1596,0.172691061788589,0.172691061788589,-105.0133004,39.7025566,-105.0135751,39.701018
-1569,1596,1597,0.125221889854682,0.125221889854682,-105.0135751,39.701018,-105.0140815,39.6999614
-11466,780,781,0.0395520182900152,0.0395520182900152,-104.9318858,39.7800449,-104.9314271,39.7799974
-14682,727,782,0.194557772372847,0.194557772372847,-104.9700021,39.7200889,-104.9699677,39.7183394
-1575,1603,1604,0.122808892568626,0.122808892568626,-105.0031242,39.7501833,-105.002095,39.7509538
-1576,1604,1605,0.14134447308364,0.14134447308364,-105.002095,39.7509538,-105.0009256,39.7518524
-1577,1605,1606,0.00315234288642188,0.00315234288642188,-105.0009256,39.7518524,-105.000898,39.7518712
-1578,1606,1607,0.00237760055681402,0.00237760055681402,-105.000898,39.7518712,-105.00088,39.7518875
-1579,1607,1034,0.102833271602923,0.102833271602923,-105.00088,39.7518875,-105.0000465,39.7525543
-1580,1034,1608,0.043468513404088,0.043468513404088,-105.0000465,39.7525543,-104.9996914,39.7528341
-1581,1608,1033,0.049915824892393,0.049915824892393,-104.9996914,39.7528341,-104.9992823,39.7531544
-1582,1033,1609,0.0942592902205972,0.0942592902205972,-104.9992823,39.7531544,-104.9985176,39.7537651
-1583,1609,1610,0.146590259158182,0.146590259158182,-104.9985176,39.7537651,-104.9973103,39.7547013
-1585,1611,1612,0.124755429872932,0.124755429872932,-104.9928744,39.7570652,-104.9918236,39.7578438
-1587,1613,1614,0.146275547777326,0.146275547777326,-104.9779666,39.7696675,-104.9767564,39.7705977
-1588,1614,1615,0.26514479082652,0.26514479082652,-104.9767564,39.7705977,-104.9745571,39.7722795
-1589,1615,1616,0.120777633356172,0.120777633356172,-104.9745571,39.7722795,-104.973572,39.7730583
-1590,1616,1617,0.146979440780155,0.146979440780155,-104.973572,39.7730583,-104.9723691,39.774003
-1591,1617,1618,0.586436662116935,0.586436662116935,-104.9723691,39.774003,-104.9670562,39.7773409
-10219,5410,5429,0.0496147818599398,0.0496147818599398,-104.9704709,39.6893522,-104.9698913,39.6893394
-1592,1618,1619,0.120318550023187,0.120318550023187,-104.9670562,39.7773409,-104.9660606,39.778106
-1593,1620,1621,0.123170513487948,0.123170513487948,-104.9874196,39.7290833,-104.9888599,39.7290834
-1594,1621,1622,0.0891128334653611,0.0891128334653611,-104.9888599,39.7290834,-104.9899006,39.7290427
-1595,1622,1623,0.0126945079405001,0.0126945079405001,-104.9899006,39.7290427,-104.990046,39.7290197
-1597,1624,1625,0.0361628363016983,0.0361628363016983,-104.9994552,39.7668568,-104.9994016,39.7671794
-1598,1625,1626,0.0965078268867085,0.0965078268867085,-104.9994016,39.7671794,-104.9994084,39.7680473
-1599,1626,1627,0.122881556236448,0.122881556236448,-104.9994084,39.7680473,-104.9994072,39.7691524
-1601,1628,1629,0.0514694071076013,0.0514694071076013,-104.9994043,39.7833868,-104.9993614,39.7838485
-1604,1635,1337,0.196038913624896,0.196038913624896,-105.015737,39.714787,-105.015726,39.713024
-1605,1337,1636,0.207228602655476,0.207228602655476,-105.015726,39.713024,-105.0156951,39.7111605
-1606,1636,1637,0.20264296962565,0.20264296962565,-105.0156951,39.7111605,-105.0156865,39.7093381
-1607,1637,1638,0.203387402917304,0.203387402917304,-105.0156865,39.7093381,-105.0157122,39.7075091
-1608,1638,1639,0.0190931929940632,0.0190931929940632,-105.0157122,39.7075091,-105.0156968,39.7073378
-1609,1639,1640,0.0954982678568342,0.0954982678568342,-105.0156968,39.7073378,-105.0156865,39.706479
-1612,1642,1643,0.0969376424953903,0.0969376424953903,-105.0156924,39.7056338,-105.0156693,39.7047622
-1613,1643,1644,0.0932591849763066,0.0932591849763066,-105.0156693,39.7047622,-105.0156693,39.7039235
-1614,1644,769,0.109404688325734,0.109404688325734,-105.0156693,39.7039235,-105.0156693,39.7029396
-1616,1645,1646,0.0870106428010285,0.0870106428010285,-105.015583,39.6967681,-105.0155663,39.6959857
-1617,1646,1647,0.21369947718983,0.21369947718983,-105.0155663,39.6959857,-105.0155835,39.6940639
-1618,1647,160,0.103968034130831,0.103968034130831,-105.0155835,39.6940639,-105.0155788,39.6931289
-1619,160,1648,0.148969074067601,0.148969074067601,-105.0155788,39.6931289,-105.0157083,39.6917929
-1620,1648,1649,0.102090714125769,0.102090714125769,-105.0157083,39.6917929,-105.0156997,39.6908748
-1621,1649,1650,0.152016365267068,0.152016365267068,-105.0156997,39.6908748,-105.0156911,39.6895077
-1624,1652,1653,3.12548314855053,3.12548314855053,-105.0156826,39.688616,-105.0158,39.660508
-1625,1654,1655,0.099787477314555,0.099787477314555,-105.015638,39.699987,-105.0156436,39.6990896
-1626,1655,1656,0.0573939833292015,0.0573939833292015,-105.0156436,39.6990896,-105.0156865,39.6985745
-1627,1656,1657,0.0412244638452508,0.0412244638452508,-105.0156865,39.6985745,-105.0156522,39.6982047
-1628,1657,1658,0.159748945001355,0.159748945001355,-105.0156522,39.6982047,-105.0156688,39.6967681
-1630,1659,1660,0.0562485254553907,0.0562485254553907,-105.0252948,39.7674204,-105.0259529,39.7674233
-1631,1660,1661,0.140693983223782,0.140693983223782,-105.0259529,39.7674233,-105.027599,39.7674306
-1632,1661,1662,0.199243791884909,0.199243791884909,-105.027599,39.7674306,-105.02993,39.7674094
-1633,1662,1663,0.200873345889282,0.200873345889282,-105.02993,39.7674094,-105.0322802,39.7674005
-1634,1663,1664,0.200754056548572,0.200754056548572,-105.0322802,39.7674005,-105.034629,39.767391
-1636,1665,1626,0.102716653811918,0.102716653811918,-104.9982066,39.7680487,-104.9994084,39.7680473
-1637,1626,1666,0.1010071593638,0.1010071593638,-104.9994084,39.7680473,-105.0005902,39.7680472
-1638,1666,1667,0.101237955319616,0.101237955319616,-105.0005902,39.7680472,-105.0017747,39.7680465
-1639,1667,1668,0.101237948338119,0.101237948338119,-105.0017747,39.7680465,-105.0029592,39.7680459
-1640,1668,711,0.101306598900241,0.101306598900241,-105.0029592,39.7680459,-105.0041445,39.7680437
-1641,711,1669,0.10042603616611,0.10042603616611,-105.0041445,39.7680437,-105.0053195,39.7680447
-1642,1669,1670,0.0958961450641524,0.0958961450641524,-105.0053195,39.7680447,-105.0064415,39.7680441
-1644,1671,1672,0.137716093557474,0.137716093557474,-105.0080403,39.7680432,-105.0096516,39.7680424
-2762,2714,2715,0.0991860693431078,0.0991860693431078,-105.0228875,39.7720427,-105.0228852,39.7729347
-1651,1678,1679,0.133306617824866,0.133306617824866,-105.0174158,39.7680606,-105.0189755,39.7680565
-1652,1679,1250,0.131938339831678,0.131938339831678,-105.0189755,39.7680565,-105.0205192,39.7680565
-1653,1250,1680,0.132959450261057,0.132959450261057,-105.0205192,39.7680565,-105.0220748,39.7680472
-1654,1680,1681,0.132733669106231,0.132733669106231,-105.0220748,39.7680472,-105.0236278,39.7680441
-1655,1681,1682,0.132964768190064,0.132964768190064,-105.0236278,39.7680441,-105.0251835,39.7680482
-1657,1683,1684,0.0490945965896849,0.0490945965896849,-105.0346312,39.7676742,-105.0352055,39.7676655
-1658,1684,1685,0.0490108159838641,0.0490108159838641,-105.0352055,39.7676655,-105.0357789,39.7676609
-1659,1685,1686,0.0499458328019049,0.0499458328019049,-105.0357789,39.7676609,-105.0363632,39.7676539
-1660,1686,1687,0.0506073899683783,0.0506073899683783,-105.0363632,39.7676539,-105.0369553,39.7676511
-1661,1687,1688,0.0999922931051382,0.0999922931051382,-105.0369553,39.7676511,-105.038125,39.7676337
-1663,1689,1690,0.0532341368396536,0.0532341368396536,-105.0387013,39.7676285,-105.0393241,39.7676228
-1664,1690,1691,0.0494816378016481,0.0494816378016481,-105.0393241,39.7676228,-105.039903,39.7676176
-1665,1691,1129,0.0483962553320354,0.0483962553320354,-105.039903,39.7676176,-105.0404692,39.7676124
-2786,2740,2741,0.204165004811902,0.204165004811902,-104.9558357,39.6929607,-104.9558357,39.6911246
-1669,1694,1695,0.0515058444916569,0.0515058444916569,-105.0428441,39.7675702,-105.0434467,39.7675662
-1670,1695,1696,0.049583388064832,0.049583388064832,-105.0434467,39.7675662,-105.0440268,39.7675617
-1672,1697,1698,0.164817053327799,0.164817053327799,-104.9384472,39.7162245,-104.9384005,39.7147427
-1674,1699,1700,0.200184975462711,0.200184975462711,-104.9383805,39.6911269,-104.9383741,39.6893266
-1676,1701,1702,0.0562043024646792,0.0562043024646792,-104.9875011,39.6911908,-104.9881579,39.6911836
-1677,1702,1703,0.0473559609478773,0.0473559609478773,-104.9881579,39.6911836,-104.9887113,39.6911776
-1679,1704,1705,0.398746605392666,0.398746605392666,-105.0250424,39.6912967,-105.0297026,39.69129
-1681,1706,1365,0.144540603588288,0.144540603588288,-105.0320475,39.6912817,-105.0337367,39.6912702
-1682,1365,1707,0.0528990154558718,0.0528990154558718,-105.0337367,39.6912702,-105.0343547,39.691257
-1683,1707,1708,0.10134484884037,0.10134484884037,-105.0343547,39.691257,-105.0355391,39.6912636
-1684,1708,1709,0.0991459088544214,0.0991459088544214,-105.0355391,39.6912636,-105.0366978,39.691257
-1685,1709,1710,0.100657696530189,0.100657696530189,-105.0366978,39.691257,-105.0378737,39.6912834
-1686,1710,1711,0.102825031241611,0.102825031241611,-105.0378737,39.6912834,-105.0390754,39.69129
-1687,1711,1712,0.0822822408497534,0.0822822408497534,-105.0390754,39.69129,-105.0400367,39.6913098
-1688,1712,1713,0.0873989484445677,0.0873989484445677,-105.0400367,39.6913098,-105.041058,39.6912966
-1689,1713,1714,0.083724486939572,0.083724486939572,-105.041058,39.6912966,-105.0420365,39.6912966
-1691,1715,1716,0.0772899080720762,0.0772899080720762,-105.0433411,39.691224,-105.0442424,39.6912702
-1693,1717,1718,0.0829924152482612,0.0829924152482612,-105.0087646,39.690855,-105.0097345,39.6908484
-12973,1824,2797,0.01303984476973,0.01303984476973,-105.0068707,39.7455494,-105.0069887,39.7454751
-1695,1719,1720,0.0851881782403355,0.0851881782403355,-105.0107559,39.690855,-105.0117515,39.690855
-1696,1720,1721,0.0815306594337643,0.0815306594337643,-105.0117515,39.690855,-105.0127042,39.6908682
-1697,1721,1586,0.0807934684584117,0.0807934684584117,-105.0127042,39.6908682,-105.0136484,39.6908748
-1698,1586,1722,0.0815207303880199,0.0815207303880199,-105.0136484,39.6908748,-105.0146011,39.6908814
-1699,1722,1649,0.0940041718050458,0.0940041718050458,-105.0146011,39.6908814,-105.0156997,39.6908748
-1702,1723,1724,0.079056501466603,0.079056501466603,-105.0164379,39.6918193,-105.0171932,39.6914098
-1703,1724,1725,0.0798640413181071,0.0798640413181071,-105.0171932,39.6914098,-105.0179828,39.6910268
-1707,204,1728,0.0808035328564148,0.0808035328564148,-105.0203689,39.690822,-105.0213131,39.6908088
-1708,1728,1729,0.0793099389847985,0.0793099389847985,-105.0213131,39.6908088,-105.02224,39.6908088
-1709,1729,1471,0.0807902086419881,0.0807902086419881,-105.02224,39.6908088,-105.0231842,39.6908088
-1710,1471,1730,0.159227595521595,0.159227595521595,-105.0231842,39.6908088,-105.0250451,39.6908065
-1712,1731,1732,0.00918106235729301,0.00918106235729301,-105.0015625,39.6912528,-105.0016698,39.6912526
-1713,1732,1733,0.0904244628649386,0.0904244628649386,-105.0016698,39.6912526,-105.0027266,39.6912507
-1714,1733,1734,0.1024374483727,0.1024374483727,-105.0027266,39.6912507,-105.0039238,39.6912513
-1715,1734,1735,0.102816532682191,0.102816532682191,-105.0039238,39.6912513,-105.0051254,39.6912447
-1716,1735,1736,0.0492571813589573,0.0492571813589573,-105.0051254,39.6912447,-105.0057005,39.6912645
-1718,1737,1738,0.0480836518232765,0.0480836518232765,-105.0061947,39.6912734,-105.0067562,39.6912909
-1720,1456,1739,0.0851993535054976,0.0851993535054976,-105.0077346,39.6912909,-105.0087303,39.6912975
-1722,1740,1741,0.0851913863702705,0.0851913863702705,-104.9900263,39.6908136,-104.9910219,39.6908202
-1724,1742,1743,1.05721580006997,1.05721580006997,-104.9851236,39.7677094,-104.9787558,39.7758607
-1727,1746,1747,0.203318990561603,0.203318990561603,-104.9722045,39.6929651,-104.9722389,39.6911368
-1728,1747,1748,0.105159616756228,0.105159616756228,-104.9722389,39.6911368,-104.9722475,39.6901911
-1730,1749,1750,0.0560818664301058,0.0560818664301058,-104.9721944,39.7142027,-104.9722042,39.714707
-1732,1751,1752,0.478248386364013,0.478248386364013,-104.9472549,39.7837973,-104.944277,39.787439
-1733,1752,1753,0.443656760721259,0.443656760721259,-104.944277,39.787439,-104.9414956,39.7908082
-1735,1754,1755,0.1348267792147,0.1348267792147,-105.0124896,39.7620198,-105.0124792,39.7608073
-1736,1755,1756,0.129877519863856,0.129877519863856,-105.0124792,39.7608073,-105.0124873,39.7596393
-1738,1757,1758,0.139572444331893,0.139572444331893,-105.0085894,39.7075535,-105.0078426,39.7064375
-1740,1759,151,0.222068972422621,0.222068972422621,-105.0067133,39.6949432,-105.0077346,39.6931072
-1742,1760,1761,0.217075886587119,0.217075886587119,-105.0074982,39.7009717,-105.0081893,39.6990933
-1744,95,1762,0.0857577538793466,0.0857577538793466,-104.9551461,39.7002095,-104.9546893,39.699523
-1746,1763,1764,0.202675621070888,0.202675621070888,-104.9768983,39.7165189,-104.9769042,39.7146962
-1747,1764,1765,0.199646627713467,0.199646627713467,-104.9769042,39.7146962,-104.9769241,39.7129008
-1749,1768,1769,0.203715891739879,0.203715891739879,-104.976901,39.7110879,-104.9769412,39.7092561
-18799,8969,430,0.0787540687567586,0.0787540687567586,-104.9948199,39.7664979,-104.9943797,39.7671201
-1751,1772,1773,0.1980611092504,0.1980611092504,-104.9769267,39.7074561,-104.9769014,39.705675
-1752,1773,1774,0.203412766578772,0.203412766578772,-104.9769014,39.705675,-104.9769161,39.7038457
-1753,1774,1775,0.202109933054243,0.202109933054243,-104.9769161,39.7038457,-104.9769267,39.7020281
-1754,1775,43,0.202669215310678,0.202669215310678,-104.9769267,39.7020281,-104.9769439,39.7002055
-1755,43,1776,0.197841814631247,0.197841814631247,-104.9769439,39.7002055,-104.9769155,39.6984264
-1756,1776,1777,0.202676328377112,0.202676328377112,-104.9769155,39.6984264,-104.9769241,39.6966037
-1757,1777,1778,0.204936151058667,0.204936151058667,-104.9769241,39.6966037,-104.9769531,39.6947608
-1758,1778,1779,0.1977714314521,0.1977714314521,-104.9769531,39.6947608,-104.9769504,39.6929822
-1759,1779,1780,0.0315877327413917,0.0315877327413917,-104.9769504,39.6929822,-104.9769419,39.6926982
-1760,1780,1781,0.0188253963586558,0.0188253963586558,-104.9769419,39.6926982,-104.9769412,39.6925289
-1763,1782,570,0.0446437216270623,0.0446437216270623,-104.986165,39.6947828,-104.9856433,39.69479
-1764,570,1783,0.0483070548371257,0.0483070548371257,-104.9856433,39.69479,-104.9850787,39.69479
-1765,1783,1784,0.0445253123220399,0.0445253123220399,-104.9850787,39.69479,-104.9845583,39.69479
-1766,1784,1785,0.0510546887722961,0.0510546887722961,-104.9845583,39.69479,-104.9839616,39.6947869
-1768,1786,1787,0.0533839966500878,0.0533839966500878,-104.9833861,39.6948011,-104.9827622,39.6947958
-1769,1787,1788,0.0521924619717138,0.0521924619717138,-104.9827622,39.6947958,-104.9821522,39.6947929
-1770,1788,1789,0.0490694542852552,0.0490694542852552,-104.9821522,39.6947929,-104.9815787,39.6947902
-1771,1789,1790,0.0491381693257593,0.0491381693257593,-104.9815787,39.6947902,-104.9810045,39.694799
-1774,1792,1793,0.188232081449375,0.188232081449375,-104.931734,39.694587,-104.929534,39.694587
-1775,1793,1794,0.0938047512624172,0.0938047512624172,-104.929534,39.694587,-104.9284394,39.6945392
-1777,1795,1796,0.0479551643273822,0.0479551643273822,-104.9792579,39.6947744,-104.9786977,39.6947606
-1779,1797,1798,0.0506257576844139,0.0506257576844139,-104.9781014,39.6947603,-104.9775097,39.6947606
-1780,1798,1778,0.0476226019606038,0.0476226019606038,-104.9775097,39.6947606,-104.9769531,39.6947608
-1781,1778,1799,0.0506000833049729,0.0506000833049729,-104.9769531,39.6947608,-104.9763617,39.694761
-1782,1799,1800,0.0489339836382716,0.0489339836382716,-104.9763617,39.694761,-104.97579,39.6947486
-1783,1800,1801,0.0520587364066008,0.0520587364066008,-104.97579,39.6947486,-104.9751816,39.6947545
-1784,1801,1526,0.0499381116869285,0.0499381116869285,-104.9751816,39.6947545,-104.974598,39.6947479
-1785,1526,1802,0.0482912843745838,0.0482912843745838,-104.974598,39.6947479,-104.9740336,39.6947447
-1786,1802,1803,0.052312654556816,0.052312654556816,-104.9740336,39.6947447,-104.9734222,39.6947413
-1788,466,1804,0.00820558552351573,0.00820558552351573,-104.9373661,39.6947234,-104.9373232,39.6947894
-1789,1804,1805,0.0939988504660162,0.0939988504660162,-104.9373232,39.6947894,-104.9362246,39.6947828
-1790,1805,1806,0.0853375028247139,0.0853375028247139,-104.9362246,39.6947828,-104.935235,39.694687
-1792,1807,1808,0.0203438851658787,0.0203438851658787,-105.0073479,39.7524784,-105.0075333,39.7523637
-1793,1808,1809,0.0251680266073563,0.0251680266073563,-105.0075333,39.7523637,-105.0077397,39.7522023
-1794,1809,1810,0.203784780502352,0.203784780502352,-105.0077397,39.7522023,-105.0094107,39.7508953
-1795,1810,1811,0.245267310527272,0.245267310527272,-105.0094107,39.7508953,-105.0082177,39.7529013
-1797,1812,1513,0.252426666173968,0.252426666173968,-104.9317181,39.6953648,-104.92892,39.6960846
-1799,1479,1813,0.176119796231885,0.176119796231885,-104.9226286,39.6944534,-104.923341,39.6929674
-1800,1813,1814,0.410709550491308,0.410709550491308,-104.923341,39.6929674,-104.9243796,39.6893613
-1802,1815,1816,0.0577133885110317,0.0577133885110317,-105.0264272,39.7291051,-105.0268596,39.7287066
-1805,1818,1819,0.0740878722178254,0.0740878722178254,-105.028093,39.7274609,-105.0286551,39.7269539
-1806,1819,1820,0.135457901381645,0.135457901381645,-105.0286551,39.7269539,-105.0299828,39.7262896
-1808,1821,1822,0.206145194610924,0.206145194610924,-104.9293577,39.7647208,-104.9269459,39.7647142
-1812,1828,1829,0.106425576539939,0.106425576539939,-105.0251054,39.7213616,-105.0263496,39.7213466
-1813,1829,1830,0.105266693821804,0.105266693821804,-105.0263496,39.7213466,-105.0275804,39.7213446
-1814,1830,1831,0.0587144262982408,0.0587144262982408,-105.0275804,39.7213446,-105.0282669,39.7213461
-1815,1831,1832,0.0458724352500271,0.0458724352500271,-105.0282669,39.7213461,-105.0288032,39.7213404
-1817,1833,1834,0.199229532947629,0.199229532947629,-105.0227761,39.7211827,-105.0251054,39.7211636
-1820,1836,1837,0.0309799563804686,0.0309799563804686,-105.0117245,39.7209266,-105.0120749,39.720856
-1822,1838,1839,0.146418601014837,0.146418601014837,-104.9874805,39.7209443,-104.9891924,39.7209342
-1823,1839,1840,0.141683677614281,0.141683677614281,-104.9891924,39.7209342,-104.9908489,39.7209474
-1824,1840,1841,0.111588649653809,0.111588649653809,-104.9908489,39.7209474,-104.9921535,39.7209342
-1827,1844,1845,0.101354924922083,0.101354924922083,-105.030046,39.7213676,-105.031231,39.721358
-1828,1845,1397,0.106656735273228,0.106656735273228,-105.031231,39.721358,-105.0324777,39.7213351
-1829,1397,1846,0.052351737797171,0.052351737797171,-105.0324777,39.7213351,-105.0330898,39.7213326
-1831,1847,1848,0.0531037804059208,0.0531037804059208,-105.0337,39.7213301,-105.0343209,39.721329
-1832,1848,1849,0.0506063775898189,0.0506063775898189,-105.0343209,39.721329,-105.0349126,39.721328
-1833,1849,1850,0.0517100300362486,0.0517100300362486,-105.0349126,39.721328,-105.0355172,39.72133
-1834,1850,1851,0.0523258164287328,0.0523258164287328,-105.0355172,39.72133,-105.036129,39.721332
-1835,1851,1852,0.0499829479152778,0.0499829479152778,-105.036129,39.721332,-105.0367134,39.7213291
-1836,1852,1853,0.051505297770613,0.051505297770613,-105.0367134,39.7213291,-105.0373156,39.7213262
-1837,1853,1854,0.051498980863322,0.051498980863322,-105.0373156,39.7213262,-105.0379177,39.7213314
-1840,1856,1857,0.051410475877809,0.051410475877809,-105.0391086,39.721333,-105.0397097,39.7213315
-1841,1857,1858,0.0513674435994921,0.0513674435994921,-105.0397097,39.7213315,-105.0403103,39.7213316
-1842,1858,1109,0.0515213919005775,0.0515213919005775,-105.0403103,39.7213316,-105.0409127,39.7213317
-1843,1109,1859,0.0506198107739765,0.0506198107739765,-105.0409127,39.7213317,-105.0415045,39.7213253
-1844,1859,1860,0.0511967416282439,0.0511967416282439,-105.0415045,39.7213253,-105.0421031,39.721327
-1845,1860,1861,0.0519748871795966,0.0519748871795966,-105.0421031,39.721327,-105.0427108,39.7213283
-1847,1862,1863,0.0554265580601903,0.0554265580601903,-105.0432898,39.7213253,-105.0439342,39.7212724
-1848,1863,1864,0.397067534239407,0.397067534239407,-105.0439342,39.7212724,-105.0485768,39.7212752
-1849,1865,1481,0.206774260684103,0.206774260684103,-104.9901799,39.6966614,-104.9901596,39.6948019
-1850,1481,136,0.199116779757445,0.199116779757445,-104.9901596,39.6948019,-104.9901944,39.6930114
-1852,1866,1867,0.100566373592942,0.100566373592942,-104.9899563,39.7165768,-104.9899631,39.7156724
-1853,1867,1868,0.101320817159016,0.101320817159016,-104.9899631,39.7156724,-104.9899631,39.7147612
-1855,1869,1295,0.0991404141660552,0.0991404141660552,-104.9899974,39.7138897,-104.9899734,39.7129983
-1856,1295,1368,0.0970426412791379,0.0970426412791379,-104.9899734,39.7129983,-104.9900335,39.7121268
-1857,1368,1870,0.108154398880898,0.108154398880898,-104.9900335,39.7121268,-104.9899993,39.7111545
-1859,1871,1872,0.100234830388367,0.100234830388367,-104.9899914,39.7102518,-104.9900015,39.7093504
-1860,1872,1873,0.0980754533399867,0.0980754533399867,-104.9900015,39.7093504,-104.9900079,39.7084684
-1861,1873,1874,0.101854943741879,0.101854943741879,-104.9900079,39.7084684,-104.98999,39.7075525
-1862,1874,1875,0.0125795021137856,0.0125795021137856,-104.98999,39.7075525,-104.9899702,39.7074404
-1863,1875,1876,0.0797821176517698,0.0797821176517698,-104.9899702,39.7074404,-104.9899856,39.706723
-1864,1876,1877,0.103719210283603,0.103719210283603,-104.9899856,39.706723,-104.9899153,39.7057918
-1866,1740,1878,0.161887620550325,0.161887620550325,-104.9900263,39.6908136,-104.9904039,39.689387
-1868,1879,1880,0.0487542093720633,0.0487542093720633,-105.0393141,39.7594338,-105.0398844,39.7594402
-1869,1880,1122,0.0510369170722426,0.0510369170722426,-105.0398844,39.7594402,-105.0404814,39.759447
-1871,1882,1883,0.588595740779303,0.588595740779303,-105.044015,39.7594009,-105.0509008,39.7594001
-1872,1884,1885,0.152111272923972,0.152111272923972,-105.0281527,39.7594148,-105.0299322,39.7594122
-1873,1885,1886,0.199118819593963,0.199118819593963,-105.0299322,39.7594122,-105.0322615,39.7593933
-1874,1886,1887,0.200266209543398,0.200266209543398,-105.0322615,39.7593933,-105.0346033,39.7594473
-1876,1891,1892,0.0559298383062073,0.0559298383062073,-105.0046254,39.7620612,-105.0052777,39.7620216
-2989,776,2928,0.18503947742992,0.18503947742992,-105.0215401,39.7020679,-105.0215401,39.7004038
-1878,1893,1894,0.32823055853467,0.32823055853467,-104.9497942,39.7070048,-104.9460234,39.7064591
-1880,1895,1896,0.106010053095039,0.106010053095039,-104.9875851,39.7075228,-104.9863459,39.7075146
-1881,1896,1897,0.0966039225045284,0.0966039225045284,-104.9863459,39.7075146,-104.985217,39.7074918
-1882,1897,1898,0.101329648076306,0.101329648076306,-104.985217,39.7074918,-104.9840325,39.7074985
-1883,1898,1899,0.105723867542497,0.105723867542497,-104.9840325,39.7074985,-104.9827966,39.7074985
-1884,1899,1900,0.100059117952088,0.100059117952088,-104.9827966,39.7074985,-104.981627,39.707488
-1885,1900,1901,0.0102909725043749,0.0102909725043749,-104.981627,39.707488,-104.9815067,39.7074878
-1886,1901,1902,0.0917204387150709,0.0917204387150709,-104.9815067,39.7074878,-104.9804345,39.7074865
-1887,1902,1903,0.0488400104067164,0.0488400104067164,-104.9804345,39.7074865,-104.9798636,39.7074913
-1888,1903,1904,0.0516943831129701,0.0516943831129701,-104.9798636,39.7074913,-104.9792593,39.7074903
-1889,1904,1905,0.0485157141379251,0.0485157141379251,-104.9792593,39.7074903,-104.9786923,39.7074805
-1890,1905,1906,0.00454251169325352,0.00454251169325352,-104.9786923,39.7074805,-104.9786392,39.7074808
-1891,1906,1907,0.0474170350841876,0.0474170350841876,-104.9786392,39.7074808,-104.9780854,39.7074627
-1892,1907,1908,0.0520037008543052,0.0520037008543052,-104.9780854,39.7074627,-104.9774775,39.7074592
-1893,1908,1772,0.0471189408868131,0.0471189408868131,-104.9774775,39.7074592,-104.9769267,39.7074561
-1894,1772,1909,0.0492432884260358,0.0492432884260358,-104.9769267,39.7074561,-104.9763514,39.7074715
-1896,1910,1911,0.0495320112775386,0.0495320112775386,-104.9757282,39.7074937,-104.9751493,39.7074845
-1897,1911,1520,0.0493945814205325,0.0493945814205325,-104.9751493,39.7074845,-104.9745719,39.7074811
-1898,1520,1912,0.0533971088216985,0.0533971088216985,-104.9745719,39.7074811,-104.9739477,39.707479
-1899,1912,1913,0.0492909868241652,0.0492909868241652,-104.9739477,39.707479,-104.9733715,39.707477
-1902,1914,1915,0.0940987095228026,0.0940987095228026,-104.972136,39.707488,-104.971036,39.70749
-1903,1915,1916,0.102901306177953,0.102901306177953,-104.971036,39.70749,-104.9698332,39.7075022
-1904,1916,1917,0.099610911557729,0.099610911557729,-104.9698332,39.7075022,-104.9686689,39.7074883
-1905,1917,1918,0.102910577647033,0.102910577647033,-104.9686689,39.7074883,-104.9674661,39.7074709
-1906,1918,1919,0.0967734482498666,0.0967734482498666,-104.9674661,39.7074709,-104.966335,39.707486
-1908,1920,1921,0.0462806189179572,0.0462806189179572,-104.9651495,39.7074752,-104.9646085,39.7074783
-1910,1922,1923,0.0456516788886206,0.0456516788886206,-104.9639994,39.7074818,-104.9634658,39.7074881
-1911,1923,1924,0.0505452419126903,0.0505452419126903,-104.9634658,39.7074881,-104.962875,39.707495
-1912,1924,1925,0.0504057374799388,0.0504057374799388,-104.962875,39.707495,-104.9622858,39.7074899
-1913,1925,1926,0.0476340401482501,0.0476340401482501,-104.9622858,39.7074899,-104.961729,39.707485
-1914,1926,1927,0.051053036843087,0.051053036843087,-104.961729,39.707485,-104.9611322,39.7074867
-1915,1927,1928,0.049153971321488,0.049153971321488,-104.9611322,39.7074867,-104.9605576,39.7074884
-1918,1930,1931,0.0561439680866497,0.0561439680866497,-105.0298394,39.7384827,-105.030496,39.7384857
-1919,1931,1932,0.053826281457259,0.053826281457259,-105.030496,39.7384857,-105.0311255,39.7384836
-3034,2965,2966,0.00876223324596343,0.00876223324596343,-105.0235213,39.7584714,-105.0236238,39.7584722
-1920,1932,1933,0.0477206876272752,0.0477206876272752,-105.0311255,39.7384836,-105.0316836,39.7384833
-1923,1935,1936,0.066876205689997,0.066876205689997,-105.0218644,39.7389424,-105.0226443,39.738897
-1924,1937,1938,0.0446617758397252,0.0446617758397252,-105.0260468,39.738001,-105.0265344,39.738145
-1925,1938,1939,0.0840391912235338,0.0840391912235338,-105.0265344,39.738145,-105.0273088,39.7386104
-1926,1939,1940,0.227469383602409,0.227469383602409,-105.0273088,39.7386104,-105.0298414,39.7392366
-1931,1944,1945,0.0952703264542464,0.0952703264542464,-105.0148152,39.7384942,-105.0159294,39.7384943
-1932,1945,1946,0.0974265293580338,0.0974265293580338,-105.0159294,39.7384943,-105.0170684,39.7384706
-1933,1947,1948,0.151605873109213,0.151605873109213,-105.0077504,39.7384638,-105.0095234,39.7384742
-1938,1952,1953,0.109258836266427,0.109258836266427,-104.9402458,39.7146371,-104.9394047,39.7138976
-1939,1953,1954,0.122481399421688,0.122481399421688,-104.9394047,39.7138976,-104.9384863,39.7130525
-1940,1954,1955,0.119684093740802,0.119684093740802,-104.9384863,39.7130525,-104.9375707,39.7122386
-1943,1957,1958,0.204446635842756,0.204446635842756,-104.9292853,39.7085296,-104.9269593,39.708107
-1944,1958,1959,0.0997279110592744,0.0997279110592744,-104.9269593,39.708107,-104.9258263,39.7078957
-1945,1959,1960,1.05168738215655,1.05168738215655,-104.9258263,39.7078957,-104.9147112,39.7038545
-1946,1960,1961,1.71048983577162,1.71048983577162,-104.9147112,39.7038545,-104.8973332,39.6962481
-1947,1962,1963,2.33567129984142,2.33567129984142,-104.884649,39.743794,-104.9119671,39.7437801
-1948,1963,1964,1.08148581800227,1.08148581800227,-104.9119671,39.7437801,-104.9246161,39.743742
-1950,1965,1966,0.103934061554546,0.103934061554546,-104.925792,39.7437354,-104.9270076,39.7437306
-1951,1966,1967,0.0454999873171455,0.0454999873171455,-104.9270076,39.7437306,-104.9275397,39.743724
-1952,1967,1968,0.0964089929828049,0.0964089929828049,-104.9275397,39.743724,-104.9286673,39.7437222
-1953,1968,1969,0.125489170754965,0.125489170754965,-104.9286673,39.7437222,-104.930135,39.7437288
-1954,1969,1972,0.165851140560008,0.165851140560008,-104.930135,39.7437288,-104.9320748,39.7437288
-1955,1972,1973,0.145299005046435,0.145299005046435,-104.9320748,39.7437288,-104.9337742,39.7437354
-1956,1973,1974,0.145772913358701,0.145772913358701,-104.9337742,39.7437354,-104.9354791,39.743724
-1957,1974,1975,0.149974913959851,0.149974913959851,-104.9354791,39.743724,-104.9372332,39.7437288
-1958,1975,1976,0.145057930633755,0.145057930633755,-104.9372332,39.7437288,-104.9389295,39.7437042
-1959,1976,1977,0.143477867614704,0.143477867614704,-104.9389295,39.7437042,-104.9406062,39.7437573
-1961,1978,420,0.0932140793920545,0.0932140793920545,-104.9407693,39.7437639,-104.9418594,39.7437507
-1963,1963,1979,1.08603450886527,1.08603450886527,-104.9119671,39.7437801,-104.924659,39.7433856
-1964,1979,1980,0.0983329965983175,0.0983329965983175,-104.924659,39.7433856,-104.9258091,39.7433856
-1965,1980,1981,0.0917353737473226,0.0917353737473226,-104.9258091,39.7433856,-104.926882,39.743379
-1966,1981,1982,0.055771341470748,0.055771341470748,-104.926882,39.743379,-104.9275343,39.743379
-1967,1982,1983,0.0968737393586206,0.0968737393586206,-104.9275343,39.743379,-104.9286673,39.7433856
-1968,1983,1984,0.0954710209286709,0.0954710209286709,-104.9286673,39.7433856,-104.9297839,39.7433797
-1969,1984,1985,0.0293519873253464,0.0293519873253464,-104.9297839,39.7433797,-104.9301272,39.7433797
-1970,1985,1986,0.0704554284720801,0.0704554284720801,-104.9301272,39.7433797,-104.9309512,39.7433863
-1971,1986,1988,0.095403189447009,0.095403189447009,-104.9309512,39.7433863,-104.932067,39.7433797
-1972,1988,1989,0.146040552740524,0.146040552740524,-104.932067,39.7433797,-104.933775,39.7433929
-1973,1989,1990,0.147511070915923,0.147511070915923,-104.933775,39.7433929,-104.9355002,39.7433797
-1974,1990,1991,0.147511070914708,0.147511070914708,-104.9355002,39.7433797,-104.9372254,39.7433929
-1975,1991,1992,0.145306416846094,0.145306416846094,-104.9372254,39.7433929,-104.9389249,39.7433929
-1976,1992,1993,0.143786568306041,0.143786568306041,-104.9389249,39.7433929,-104.9405891,39.7435791
-1977,1993,1994,0.0151225768059817,0.0151225768059817,-104.9405891,39.7435791,-104.9407521,39.7436319
-1978,1994,420,0.0955903616259906,0.0955903616259906,-104.9407521,39.7436319,-104.9418594,39.7437507
-1980,1995,157,0.328733376766768,0.328733376766768,-105.0136437,39.6959725,-105.0126712,39.6931124
-1981,157,1721,0.24955962831592,0.24955962831592,-105.0126712,39.6931124,-105.0127042,39.6908682
-1983,1996,1997,0.475009767293493,0.475009767293493,-105.0128845,39.6882924,-105.0119747,39.6840783
-1984,1998,1999,0.203988417966153,0.203988417966153,-104.935045,39.7474085,-104.9350364,39.749243
-1985,1999,2000,0.200819821039785,0.200819821039785,-104.9350364,39.749243,-104.9350463,39.751049
-1986,2000,794,0.198875475027904,0.198875475027904,-104.9350463,39.751049,-104.9350328,39.7528375
-1987,794,2001,0.203566311480143,0.203566311480143,-104.9350328,39.7528375,-104.9350229,39.7546682
-1988,2001,2002,0.201451879254481,0.201451879254481,-104.9350229,39.7546682,-104.9350242,39.7564799
-1989,2002,2003,0.203252240244887,0.203252240244887,-104.9350242,39.7564799,-104.9349898,39.7583076
-1990,2003,2004,0.204825535738971,0.204825535738971,-104.9349898,39.7583076,-104.9350741,39.7601485
-1991,2004,2005,0.188227904196053,0.188227904196053,-104.9350741,39.7601485,-104.9350278,39.7618409
-1992,2005,2006,0.0174353644977756,0.0174353644977756,-104.9350278,39.7618409,-104.9350278,39.7619977
-1994,353,2007,0.251582112428801,0.251582112428801,-104.9345948,39.720897,-104.9345373,39.7231591
-1995,2007,2008,0.132634173204781,0.132634173204781,-104.9345373,39.7231591,-104.9345317,39.7243519
-1996,2008,2009,0.107027307843563,0.107027307843563,-104.9345317,39.7243519,-104.9345766,39.7253138
-1999,2011,646,0.139457974349072,0.139457974349072,-104.9355134,39.7401073,-104.9354861,39.7413613
-2000,646,2012,0.135033465549491,0.135033465549491,-104.9354861,39.7413613,-104.9355048,39.7425756
-2001,2012,1990,0.089412705524254,0.089412705524254,-104.9355048,39.7425756,-104.9355002,39.7433797
-2002,1990,1974,0.0383268944933106,0.0383268944933106,-104.9355002,39.7433797,-104.9354791,39.743724
-2003,1974,2013,0.133766034901227,0.133766034901227,-104.9354791,39.743724,-104.9354979,39.7449269
-2004,2013,2014,0.133581539638141,0.133581539638141,-104.9354979,39.7449269,-104.9355085,39.7461282
-2005,2014,2015,0.142379951799733,0.142379951799733,-104.9355085,39.7461282,-104.9354827,39.7474085
-2007,2016,2017,0.251899237124673,0.251899237124673,-104.9349971,39.720897,-104.9348905,39.7231609
-2008,2017,2018,0.133367826813466,0.133367826813466,-104.9348905,39.7231609,-104.9348857,39.7243603
-2009,2018,2019,0.10602884511386,0.10602884511386,-104.9348857,39.7243603,-104.9348743,39.7253138
-2010,2019,2020,0.0337181930055553,0.0337181930055553,-104.9348743,39.7253138,-104.9349199,39.725615
-2011,2020,2021,0.200388320757191,0.200388320757191,-104.9349199,39.725615,-104.9349346,39.7274171
-2014,2023,2024,0.171565352607288,0.171565352607288,-104.9350998,39.7162443,-104.935134,39.717787
-2016,2025,2026,0.0477258088803687,0.0477258088803687,-104.9916778,39.7726992,-104.9920812,39.772996
-2017,2026,2027,0.0809138557734271,0.0809138557734271,-104.9920812,39.772996,-104.9927506,39.7735106
-2018,2027,2028,0.105296432652635,0.105296432652635,-104.9927506,39.7735106,-104.9936175,39.7741835
-2021,2030,2031,0.0518714690593594,0.0518714690593594,-104.9806366,39.7642349,-104.981068,39.764563
-2023,2032,2033,0.10377665457529,0.10377665457529,-104.9767057,39.7612194,-104.9775611,39.7618817
-2024,2033,2034,0.105027724692891,0.105027724692891,-104.9775611,39.7618817,-104.9784268,39.762552
-2025,2034,2035,0.0547353150471903,0.0547353150471903,-104.9784268,39.762552,-104.978878,39.7629013
-2026,2035,2036,0.0513505470015755,0.0513505470015755,-104.978878,39.7629013,-104.9793013,39.763229
-2027,2036,2037,0.0518915831567366,0.0518915831567366,-104.9793013,39.763229,-104.979729,39.7635602
-2028,2038,2039,0.101144662033058,0.101144662033058,-104.9740667,39.759206,-104.9749143,39.7598407
-2029,2039,2040,0.00469012569566242,0.00469012569566242,-104.9749143,39.7598407,-104.9749522,39.7598712
-2030,2040,2041,0.105219334964384,0.105219334964384,-104.9749522,39.7598712,-104.9758158,39.7605455
-2032,2042,2043,0.0933903014689556,0.0933903014689556,-104.9829001,39.7659839,-104.983686,39.7665674
-2033,2043,559,0.0150758315973471,0.0150758315973471,-104.983686,39.7665674,-104.9838121,39.7666622
-2034,559,2044,0.0636386622186814,0.0636386622186814,-104.9838121,39.7666622,-104.9843229,39.7670786
-2035,2044,2045,0.0177005397698663,0.0177005397698663,-104.9843229,39.7670786,-104.984465,39.7671944
-2039,2048,1918,0.201578926546004,0.201578926546004,-104.9674823,39.7092837,-104.9674661,39.7074709
-2040,1918,2049,0.199006200917286,0.199006200917286,-104.9674661,39.7074709,-104.9675091,39.7056815
-2043,2051,70,0.203396158473628,0.203396158473628,-104.9674661,39.7020628,-104.9674891,39.7002337
-2045,1197,2052,0.0220081346494975,0.0220081346494975,-104.9528791,39.7271293,-104.9528751,39.7273272
-2046,2052,2053,0.200331631924477,0.200331631924477,-104.9528751,39.7273272,-104.9528876,39.7291288
-2047,2053,2054,0.154360922478377,0.154360922478377,-104.9528876,39.7291288,-104.9528899,39.730517
-2048,2054,948,0.176666608936966,0.176666608936966,-104.9528899,39.730517,-104.9528876,39.7321058
-2049,948,2055,0.165719712872644,0.165719712872644,-104.9528876,39.7321058,-104.9529569,39.7335952
-2050,2055,2056,0.169383792792816,0.169383792792816,-104.9529569,39.7335952,-104.9529894,39.7351183
-2052,2057,2058,0.174576187564815,0.174576187564815,-104.9534081,39.7194172,-104.9534054,39.7209872
-2053,2058,2059,0.172745648066703,0.172745648066703,-104.9534054,39.7209872,-104.9534197,39.7225407
-2054,2059,2060,0.176912657229173,0.176912657229173,-104.9534197,39.7225407,-104.9534111,39.7241317
-2055,2060,2061,0.164650081589568,0.164650081589568,-104.9534111,39.7241317,-104.9534241,39.7256124
-2057,2062,746,0.0627806188777907,0.0627806188777907,-104.9530057,39.7758303,-104.9530366,39.7763944
-2059,1564,2063,0.138541795103745,0.138541795103745,-104.9530639,39.7776762,-104.953021,39.7789217
-2060,2063,2064,0.12093608528602,0.12093608528602,-104.953021,39.7789217,-104.953025,39.7800093
-2062,2065,693,0.201596255528806,0.201596255528806,-104.9536131,39.740176,-104.9535885,39.7419889
-2063,693,2066,0.202309385780635,0.202309385780635,-104.9535885,39.7419889,-104.9535799,39.7438083
-2065,2067,2068,0.201208296937256,0.201208296937256,-104.9529898,39.7383752,-104.9529821,39.7401847
-2069,2072,2073,0.141581011374908,0.141581011374908,-104.9530584,39.7738703,-104.9530756,39.7751435
-2072,2075,2076,0.13960716604907,0.13960716604907,-104.9536922,39.7557183,-104.9536836,39.7569738
-2073,2076,2077,0.137352432815083,0.137352432815083,-104.9536836,39.7569738,-104.9536594,39.7582089
-2074,2077,2078,0.139172335676639,0.139172335676639,-104.9536594,39.7582089,-104.953654,39.7594605
-2075,2078,2079,0.137570556837278,0.137570556837278,-104.953654,39.7594605,-104.9536567,39.7606977
-2077,2080,2081,0.124260733003778,0.124260733003778,-104.9536567,39.7607265,-104.953653,39.761844
-2078,2081,2082,0.0143334567754311,0.0143334567754311,-104.953653,39.761844,-104.9536517,39.7619729
-2079,2082,1169,0.140817691182502,0.140817691182502,-104.9536517,39.7619729,-104.9536476,39.7632393
-2080,1169,889,0.136202795453782,0.136202795453782,-104.9536476,39.7632393,-104.9536454,39.7644642
-2081,889,2083,0.140272589797925,0.140272589797925,-104.9536454,39.7644642,-104.9536427,39.7657257
-2082,2083,2084,0.132655733622477,0.132655733622477,-104.9536427,39.7657257,-104.9536401,39.7669187
-2084,2085,2086,0.130758013034065,0.130758013034065,-104.9536649,39.7681113,-104.953735,39.769286
-2085,1055,2087,0.365531347335866,0.365531347335866,-104.9529111,39.7804333,-104.9530315,39.7837193
-2086,2087,2088,0.13568199350655,0.13568199350655,-104.9530315,39.7837193,-104.95304,39.7849395
-2087,2088,2089,0.14074386927803,0.14074386927803,-104.95304,39.7849395,-104.9530155,39.7862051
-2088,2089,2090,0.132744503428598,0.132744503428598,-104.9530155,39.7862051,-104.9530155,39.7873989
-2090,2091,2092,0.0599168224199403,0.0599168224199403,-105.0431866,39.707344,-105.043887,39.707348
-2091,2093,1220,0.0866154902836551,0.0866154902836551,-105.011346,39.7361182,-105.0123588,39.736105
-2093,2095,2096,0.243872573445978,0.243872573445978,-104.9269316,39.7209784,-104.9271953,39.7231622
-2094,2096,2097,0.241082179338788,0.241082179338788,-104.9271953,39.7231622,-104.9271898,39.7253303
-2096,2098,2099,0.174814701889178,0.174814701889178,-104.9269736,39.7162529,-104.9269579,39.717825
-2097,2099,2100,0.175154975379932,0.175154975379932,-104.9269579,39.717825,-104.9269638,39.7194002
-2100,2102,2103,0.114419579517541,0.114419579517541,-104.9269671,39.7801311,-104.9269671,39.7811601
-2101,2103,2104,0.285214999643623,0.285214999643623,-104.9269671,39.7811601,-104.9269661,39.7837251
-2102,2104,2107,0.394315301182406,0.394315301182406,-104.9269661,39.7837251,-104.9273336,39.78726
-2104,333,2108,0.278529398579064,0.278529398579064,-104.9270337,39.7763519,-104.9269854,39.7788565
-2106,1150,1822,0.102734424254821,0.102734424254821,-104.9269717,39.7637905,-104.9269459,39.7647142
-2108,2109,2110,0.202389435684367,0.202389435684367,-104.9269682,39.7655992,-104.927006,39.7674191
-2109,2110,2111,0.203214045748693,0.203214045748693,-104.927006,39.7674191,-104.9269888,39.7692466
-2110,2111,2112,0.241815761631872,0.241815761631872,-104.9269888,39.7692466,-104.9269856,39.7714213
-2111,2112,2113,0.100823640639482,0.100823640639482,-104.9269856,39.7714213,-104.926995,39.772328
-2112,2113,2114,0.00265953685516916,0.00265953685516916,-104.926995,39.772328,-104.9269938,39.7723519
-2114,2115,2116,0.238307263458502,0.238307263458502,-104.9270004,39.7731311,-104.9269816,39.7752742
-2116,2117,2118,0.172019623051487,0.172019623051487,-104.9268915,39.7292726,-104.9268844,39.7308196
-2117,2118,2119,0.0267252812490126,0.0267252812490126,-104.9268844,39.7308196,-104.9268735,39.7310598
-2118,2119,2120,0.200138632498134,0.200138632498134,-104.9268735,39.7310598,-104.9268969,39.7328596
-2119,2120,2121,0.20340922729078,0.20340922729078,-104.9268969,39.7328596,-104.9268925,39.7346889
-2120,2121,2122,0.197749465935997,0.197749465935997,-104.9268925,39.7346889,-104.9268972,39.7364673
-2121,2122,2123,0.20148284791492,0.20148284791492,-104.9268972,39.7364673,-104.9269303,39.7382791
-2122,2123,2124,0.206967663578278,0.206967663578278,-104.9269303,39.7382791,-104.9269046,39.7401403
-2123,2124,688,0.198127359399408,0.198127359399408,-104.9269046,39.7401403,-104.926901,39.7419221
-2124,688,1981,0.162008033573987,0.162008033573987,-104.926901,39.7419221,-104.926882,39.743379
-2127,2127,2128,0.0963587083366664,0.0963587083366664,-104.9275873,39.7620069,-104.9275725,39.7628734
-2128,2128,1149,0.101309363144821,0.101309363144821,-104.9275725,39.7628734,-104.9276154,39.7637839
-2130,2129,2130,0.268413747321973,0.268413747321973,-104.9271924,39.7256294,-104.9271876,39.7280433
-15791,2106,2131,0.0329007751166605,0.0329007751166605,-105.0232102,39.7379438,-105.0228299,39.7378988
-2131,2130,2132,0.135315648859656,0.135315648859656,-104.9271876,39.7280433,-104.9271973,39.7292602
-2133,2133,2134,0.206936888424913,0.206936888424913,-104.9269818,39.7474065,-104.9269439,39.7492673
-2134,2134,2135,0.199680286737687,0.199680286737687,-104.9269439,39.7492673,-104.9270076,39.7510624
-2135,2135,801,0.201106069676904,0.201106069676904,-104.9270076,39.7510624,-104.9269475,39.7528704
-2136,801,2136,0.201743876713814,0.201743876713814,-104.9269475,39.7528704,-104.9269602,39.7546847
-2137,2136,2137,0.208870260631958,0.208870260631958,-104.9269602,39.7546847,-104.9269972,39.7565629
-2138,2137,2138,0.202159360168084,0.202159360168084,-104.9269972,39.7565629,-104.9269287,39.7583802
-2139,2138,2139,0.199627649413879,0.199627649413879,-104.9269287,39.7583802,-104.9269888,39.7601749
-2140,2139,2140,0.186052011799078,0.186052011799078,-104.9269888,39.7601749,-104.9269946,39.7618481
-2142,2141,2142,0.0396569310433899,0.0396569310433899,-105.0086114,39.7398829,-105.008237,39.7400934
-2168,2167,2168,0.189234637777307,0.189234637777307,-105.014692,39.7839198,-105.0147047,39.7856216
-2143,2142,2143,0.0683760552809121,0.0683760552809121,-105.008237,39.7400934,-105.0077357,39.7405725
-2144,2143,2144,0.00806043179372478,0.00806043179372478,-105.0077357,39.7405725,-105.00765,39.7406027
-2145,2144,2145,0.00436074705638217,0.00436074705638217,-105.00765,39.7406027,-105.0076051,39.7406213
-2146,2145,2146,0.00359181344508779,0.00359181344508779,-105.0076051,39.7406213,-105.0075693,39.7406382
-2147,2146,2147,0.00395340009925433,0.00395340009925433,-105.0075693,39.7406382,-105.0075292,39.7406559
-2148,2147,2148,0.136610372293043,0.136610372293043,-105.0075292,39.7406559,-105.0061384,39.7412606
-2149,2148,2149,0.180604844053974,0.180604844053974,-105.0061384,39.7412606,-105.0043355,39.7421069
-2152,2152,2153,0.132023781927159,0.132023781927159,-105.0142702,39.7777735,-105.0142616,39.7789608
-2153,2153,2154,0.135708940609739,0.135708940609739,-105.0142616,39.7789608,-105.0142359,39.7801811
-2154,2154,1415,0.130555983926377,0.130555983926377,-105.0142359,39.7801811,-105.0142444,39.7813552
-2155,1415,1355,0.134241500709378,0.134241500709378,-105.0142444,39.7813552,-105.0142702,39.7825623
-2156,1355,2155,0.0746101236889861,0.0746101236889861,-105.0142702,39.7825623,-105.0142907,39.7832331
-2161,2159,2161,0.133841125283574,0.133841125283574,-105.0144598,39.7572068,-105.0144855,39.7584103
-2162,2161,2162,0.1372260849468,0.1372260849468,-105.0144855,39.7584103,-105.0144815,39.7596444
-2163,2162,2163,0.128741940100472,0.128741940100472,-105.0144815,39.7596444,-105.0144855,39.7608022
-2164,2163,2164,0.135391700615332,0.135391700615332,-105.0144855,39.7608022,-105.0144802,39.7620198
-2169,2168,2169,0.201124079513876,0.201124079513876,-105.0147047,39.7856216,-105.0146868,39.7874303
-2170,2169,2170,0.108103708021473,0.108103708021473,-105.0146868,39.7874303,-105.0146867,39.7884025
-2172,2172,2173,0.13444261016809,0.13444261016809,-105.0146807,39.7692764,-105.0146978,39.7704854
-2173,2173,2174,0.13827137965728,0.13827137965728,-105.0146978,39.7704854,-105.0146935,39.7717289
-2174,2174,2175,0.134068324786893,0.134068324786893,-105.0146935,39.7717289,-105.0146888,39.7729346
-2175,2175,2176,0.133067365005956,0.133067365005956,-105.0146888,39.7729346,-105.014685,39.7741313
-2176,2176,2177,0.135535927176987,0.135535927176987,-105.014685,39.7741313,-105.014681,39.7753502
-2177,2177,2178,0.134471884610529,0.134471884610529,-105.014681,39.7753502,-105.01465,39.7765593
-2180,2180,2181,0.201420608111328,0.201420608111328,-105.0141827,39.72025,-105.0141719,39.7220614
-2182,2182,2183,0.0166632573599522,0.0166632573599522,-105.0158823,39.7291678,-105.0159426,39.7293103
-2183,2183,2184,0.101864448677803,0.101864448677803,-105.0159426,39.7293103,-105.0163101,39.7301817
-2184,2184,2185,0.047789206759145,0.047789206759145,-105.0163101,39.7301817,-105.0164339,39.7306008
-2185,2185,2186,0.0423227378750124,0.0423227378750124,-105.0164339,39.7306008,-105.0164597,39.7309809
-4423,3782,4133,0.154572357311794,0.154572357311794,-104.9505822,39.7291315,-104.9505787,39.7305216
-2186,2186,2187,0.66062410841751,0.66062410841751,-105.0164597,39.7309809,-105.0159723,39.7369102
-2188,2188,1945,0.10637947146537,0.10637947146537,-105.0159468,39.7375377,-105.0159294,39.7384943
-2189,1945,2189,0.148995294788127,0.148995294788127,-105.0159294,39.7384943,-105.0159036,39.7398341
-2211,2212,2213,0.0467155303221573,0.0467155303221573,-104.9792376,39.7337065,-104.9786913,39.7337086
-2190,2189,2190,0.327169136665339,0.327169136665339,-105.0159036,39.7398341,-105.0139689,39.7423726
-2192,2191,2192,0.0188299118027414,0.0188299118027414,-104.9936227,39.759356,-104.9937863,39.7592426
-2193,2192,2193,0.210910851782462,0.210910851782462,-104.9937863,39.7592426,-104.9954278,39.7578265
-2195,2194,2195,0.365278744815015,0.365278744815015,-104.999248,39.7553456,-105.0025939,39.7533024
-2196,2195,2196,0.0130424738912125,0.0130424738912125,-105.0025939,39.7533024,-105.0026791,39.7532051
-2197,2196,2197,0.0449464311286017,0.0449464311286017,-105.0026791,39.7532051,-105.0028674,39.7528277
-2198,2197,2198,0.0030293307914236,0.0030293307914236,-105.0028674,39.7528277,-105.0028654,39.7528005
-2199,2198,2199,0.128682754082238,0.128682754082238,-105.0028654,39.7528005,-105.0029976,39.7516477
-2200,2199,2200,0.110573702095649,0.110573702095649,-105.0029976,39.7516477,-105.0039004,39.7509356
-2202,2203,2204,0.10817464433389,0.10817464433389,-104.9873753,39.7338548,-104.9861103,39.7338618
-2203,2204,2205,0.107622599984834,0.107622599984834,-104.9861103,39.7338618,-104.9848518,39.7338511
-2204,2205,2206,0.108403921870099,0.108403921870099,-104.9848518,39.7338511,-104.9835843,39.7338332
-2205,2206,2207,0.060733439657354,0.060733439657354,-104.9835843,39.7338332,-104.9828811,39.7337565
-2206,2207,2208,0.0534350684854931,0.0534350684854931,-104.9828811,39.7337565,-104.9822597,39.7337058
-2207,2208,2209,0.0529414575701877,0.0529414575701877,-104.9822597,39.7337058,-104.9816406,39.7337091
-2208,2209,2210,0.0527447832774698,0.0527447832774698,-104.9816406,39.7337091,-104.9810238,39.7337124
-2209,2210,2211,0.102434337721347,0.102434337721347,-104.9810238,39.7337124,-104.9798259,39.7337112
-2210,2211,2212,0.0503091444283059,0.0503091444283059,-104.9798259,39.7337112,-104.9792376,39.7337065
-2212,2213,2214,0.0457845256573543,0.0457845256573543,-104.9786913,39.7337086,-104.9781559,39.7337051
-2213,2214,2215,0.0483154919494593,0.0483154919494593,-104.9781559,39.7337051,-104.9775909,39.7337085
-2214,2215,2216,0.0500256719211907,0.0500256719211907,-104.9775909,39.7337085,-104.9770059,39.7337051
-2215,2216,2217,0.0483324272045254,0.0483324272045254,-104.9770059,39.7337051,-104.9764407,39.7337019
-2216,2217,2218,0.0492693454756351,0.0492693454756351,-104.9764407,39.7337019,-104.9758646,39.7336949
-2217,2218,2219,0.0514417765088717,0.0514417765088717,-104.9758646,39.7336949,-104.9752631,39.7336875
-2218,2219,2220,0.0488786158333744,0.0488786158333744,-104.9752631,39.7336875,-104.9746915,39.7336888
-2219,2220,981,0.0498905437062621,0.0498905437062621,-104.9746915,39.7336888,-104.9741082,39.7336985
-2220,981,2221,0.0506165357374516,0.0506165357374516,-104.9741082,39.7336985,-104.9735163,39.7337028
-2221,2221,2222,0.046223636949906,0.046223636949906,-104.9735163,39.7337028,-104.9729758,39.7337087
-2224,2224,2225,0.051453756147013,0.051453756147013,-104.9718055,39.7337106,-104.9712038,39.7337071
-2225,2225,2226,0.0468957891600155,0.0468957891600155,-104.9712038,39.7337071,-104.9706554,39.733704
-2226,2226,2227,0.0492631927304953,0.0492631927304953,-104.9706554,39.733704,-104.9700793,39.733704
-2227,2227,2228,0.0520252151650071,0.0520252151650071,-104.9700793,39.733704,-104.9694709,39.733704
-2228,2228,2229,0.0550486617142997,0.0550486617142997,-104.9694709,39.733704,-104.9688272,39.7337106
-2229,2230,2231,0.0139385553943917,0.0139385553943917,-104.9407521,39.732834,-104.9405891,39.732834
-2230,2231,2232,0.0929550410270359,0.0929550410270359,-104.9405891,39.732834,-104.9395024,39.7328547
-2234,2236,2237,0.0961215858652653,0.0961215858652653,-104.9314966,39.732987,-104.9303867,39.7328502
-2235,2237,2238,0.0993231725885536,0.0993231725885536,-104.9303867,39.7328502,-104.9292252,39.7328524
-19654,10604,10606,0.0711515052063537,0.0711515052063537,-104.988215,39.7066518,-104.9882676,39.7060132
-2236,2238,2239,0.0986901078011995,0.0986901078011995,-104.9292252,39.7328524,-104.9280711,39.7328517
-2237,2239,2120,0.100412717366674,0.100412717366674,-104.9280711,39.7328517,-104.9268969,39.7328596
-2238,2120,2240,0.0994425769829808,0.0994425769829808,-104.9268969,39.7328596,-104.925734,39.7328596
-2239,2240,2241,0.0986741447066025,0.0986741447066025,-104.925734,39.7328596,-104.9245804,39.7328803
-2240,2241,2242,0.196986803845301,0.196986803845301,-104.9245804,39.7328803,-104.9222768,39.732882
-2241,2245,2246,0.0853554831080311,0.0853554831080311,-104.9644966,39.7334712,-104.9634985,39.733462
-2242,2246,1017,0.10642802452306,0.10642802452306,-104.9634985,39.733462,-104.9622539,39.733462
-2243,1017,2247,0.0517185594306615,0.0517185594306615,-104.9622539,39.733462,-104.9616491,39.7334649
-2244,2247,2248,0.0530774886579764,0.0530774886579764,-104.9616491,39.7334649,-104.9610284,39.7334665
-16655,3462,3463,0.083025520087948,0.083025520087948,-104.9862758,39.7399191,-104.9872468,39.7399233
-2245,2248,2249,0.0515725288155829,0.0515725288155829,-104.9610284,39.7334665,-104.9604253,39.7334648
-2246,2249,2250,0.0550106406637853,0.0550106406637853,-104.9604253,39.7334648,-104.959782,39.733462
-2247,2250,2251,0.0492291609495858,0.0492291609495858,-104.959782,39.733462,-104.9592063,39.733462
-2250,2253,2254,0.068064098421736,0.068064098421736,-105.0323128,39.7487906,-105.0323072,39.7481785
-2251,2254,381,0.0653278702953464,0.0653278702953464,-105.0323072,39.7481785,-105.0323033,39.747591
-2253,2255,2256,0.176933367276823,0.176933367276823,-105.0275483,39.7165547,-105.0275483,39.7181459
-2255,2257,1830,0.176665129086282,0.176665129086282,-105.0275587,39.7197559,-105.0275804,39.7213446
-2257,1817,2258,0.0851310356517557,0.0851310356517557,-105.02745,39.7281152,-105.0276461,39.7288658
-2258,2258,2259,0.0498677366751348,0.0498677366751348,-105.0276461,39.7288658,-105.0276357,39.7293142
-2260,2260,2261,0.20430957984894,0.20430957984894,-104.9305261,39.7655817,-104.930525,39.7674191
-2263,2263,2264,0.172785898975569,0.172785898975569,-104.9304775,39.7162632,-104.9304797,39.7178171
-2265,2265,2266,0.17364958356586,0.17364958356586,-104.9304912,39.7194002,-104.9304614,39.7209617
-2266,2266,2267,0.245119251352525,0.245119251352525,-104.9304614,39.7209617,-104.9305167,39.7231657
-2267,2267,2268,0.132589695523512,0.132589695523512,-104.9305167,39.7231657,-104.9305223,39.7243581
-2268,2268,2269,0.106738596174206,0.106738596174206,-104.9305223,39.7243581,-104.9305023,39.7253179
-2269,2269,2270,0.0337285830402062,0.0337285830402062,-104.9305023,39.7253179,-104.9305077,39.7256212
-20279,7555,7554,0.0146999916602211,0.0146999916602211,-105.0451391,39.7751943,-105.0451388,39.7750621
-2270,2270,2271,0.269363966522552,0.269363966522552,-104.9305077,39.7256212,-104.9305276,39.7280436
-2273,2275,684,0.204569111503518,0.204569111503518,-104.9309301,39.7401271,-104.930959,39.7419667
-2274,684,1986,0.157853726642528,0.157853726642528,-104.930959,39.7419667,-104.9309512,39.7433863
-2278,2278,2279,0.207434558661452,0.207434558661452,-104.9304788,39.7474019,-104.9304837,39.7492674
-2279,2279,2280,0.20034839537718,0.20034839537718,-104.9304837,39.7492674,-104.9305316,39.7510688
-2280,2280,798,0.19667070755531,0.19667070755531,-104.9305316,39.7510688,-104.9305352,39.7528375
-2281,798,2281,0.204476797355414,0.204476797355414,-104.9305352,39.7528375,-104.9305302,39.7546764
-2283,2282,2283,0.201226119347201,0.201226119347201,-104.9305543,39.7565508,-104.9305336,39.7583604
-2284,2283,2284,0.201775247020165,0.201775247020165,-104.9305336,39.7583604,-104.9305594,39.7601749
-2287,2286,2287,0.00679684653457476,0.00679684653457476,-105.0028141,39.740161,-105.0028286,39.7402211
-2288,2287,2288,0.00351717235619697,0.00351717235619697,-105.0028286,39.7402211,-105.0028395,39.7402516
-2289,2288,2289,0.00475072672267961,0.00475072672267961,-105.0028395,39.7402516,-105.0028564,39.7402923
-2290,2289,2290,0.085203263947135,0.085203263947135,-105.0028564,39.7402923,-105.0033485,39.7409586
-2292,2291,2292,0.21658567369152,0.21658567369152,-105.0192055,39.7355863,-105.0217377,39.7356319
-2293,2292,2293,0.294285406846423,0.294285406846423,-105.0217377,39.7356319,-105.025179,39.7356649
-2295,1532,2294,0.0895735364116296,0.0895735364116296,-104.9909417,39.7651848,-104.9899657,39.7654782
-2296,2294,2295,0.130472447344756,0.130472447344756,-104.9899657,39.7654782,-104.9885127,39.7658379
-2298,2044,560,0.0834414685220809,0.0834414685220809,-104.9843229,39.7670786,-104.9837994,39.767712
-2299,560,913,0.519257886958262,0.519257886958262,-104.9837994,39.767712,-104.9806193,39.771691
-2300,913,2297,0.14849143076931,0.14849143076931,-104.9806193,39.771691,-104.9797146,39.7728311
-2301,2297,2299,0.276635413291223,0.276635413291223,-104.9797146,39.7728311,-104.9780262,39.7749537
-2356,2345,2346,0.126022029068994,0.126022029068994,-104.9585534,39.7194149,-104.95708,39.7194068
-2302,2299,2300,0.882147486934507,0.882147486934507,-104.9780262,39.7749537,-104.9691692,39.7790284
-2304,2301,2302,0.171837385748798,0.171837385748798,-105.0067097,39.6957792,-105.0087181,39.6957726
-2305,2302,2303,0.168190952055295,0.168190952055295,-105.0087181,39.6957726,-105.0106836,39.695799
-2308,1995,1585,0.0793668846267203,0.0793668846267203,-105.0136437,39.6959725,-105.0145707,39.6959461
-2310,1646,2305,0.0800618116658591,0.0800618116658591,-105.0155663,39.6959857,-105.0165019,39.6959725
-2311,2305,2306,0.0800532572745142,0.0800532572745142,-105.0165019,39.6959725,-105.0174374,39.6959857
-2312,2306,2307,0.0808374839403145,0.0808374839403145,-105.0174374,39.6959857,-105.0183816,39.6959593
-2313,2307,2308,0.0793040216351705,0.0793040216351705,-105.0183816,39.6959593,-105.0193085,39.6959593
-2315,2309,2310,0.0976846110372701,0.0976846110372701,-105.0379252,39.6958338,-105.0390668,39.6958206
-2317,2311,2312,0.131380688058575,0.131380688058575,-105.0112958,39.7314875,-105.0128321,39.7314771
-2318,2312,2313,0.00313000089825153,0.00313000089825153,-105.0128321,39.7314771,-105.0128687,39.7314768
-2319,2313,2157,0.109122831884578,0.109122831884578,-105.0128687,39.7314768,-105.0141188,39.7312798
-2320,2157,2314,0.0470081550211631,0.0470081550211631,-105.0141188,39.7312798,-105.0146392,39.731416
-2321,2314,441,0.0450344666647882,0.0450344666647882,-105.0146392,39.731416,-105.01516,39.7314761
-2326,1614,2317,0.105832922283753,0.105832922283753,-104.9767564,39.7705977,-104.977649,39.7712574
-2327,2317,2319,0.101211119794553,0.101211119794553,-104.977649,39.7712574,-104.9784558,39.7719237
-2328,2319,914,0.105388128978222,0.105388128978222,-104.9784558,39.7719237,-104.9793447,39.7725806
-2351,2100,2341,0.101951720072048,0.101951720072048,-104.9269638,39.7194002,-104.9257718,39.7194039
-2352,2341,2342,0.101030261985598,0.101030261985598,-104.9257718,39.7194039,-104.9245907,39.7194177
-2353,2342,2330,0.0997965680595524,0.0997965680595524,-104.9245907,39.7194177,-104.9234239,39.7194218
-2354,2330,2343,0.101856778567858,0.101856778567858,-104.9234239,39.7194218,-104.922233,39.7194218
-2355,2344,2345,0.0735649917770033,0.0735649917770033,-104.9594135,39.719411,-104.9585534,39.7194149
-2357,2346,2347,0.106673075682264,0.106673075682264,-104.95708,39.7194068,-104.9558328,39.7194027
-2358,2347,2348,0.104262034499471,0.104262034499471,-104.9558328,39.7194027,-104.9546138,39.7194083
-2359,2348,2057,0.103127373430199,0.103127373430199,-104.9546138,39.7194083,-104.9534081,39.7194172
-2360,2057,2350,0.104860273903505,0.104860273903505,-104.9534081,39.7194172,-104.9521821,39.7194221
-2361,2350,2351,0.102072059078566,0.102072059078566,-104.9521821,39.7194221,-104.9509887,39.7194172
-2362,2351,2352,0.10208795508847,0.10208795508847,-104.9509887,39.7194172,-104.9497951,39.7194192
-2363,2352,2353,0.103003886322398,0.103003886322398,-104.9497951,39.7194192,-104.9485908,39.7194151
-2364,2353,2354,0.104842753763622,0.104842753763622,-104.9485908,39.7194151,-104.947365,39.719411
-2365,2354,2355,0.102079170592138,0.102079170592138,-104.947365,39.719411,-104.9461715,39.719411
-2366,2355,2356,0.104157794922069,0.104157794922069,-104.9461715,39.719411,-104.9449537,39.7194089
-2367,2356,2357,0.102771960719463,0.102771960719463,-104.9449537,39.7194089,-104.9437521,39.7194089
-2368,2357,843,0.10323381873133,0.10323381873133,-104.9437521,39.7194089,-104.9425451,39.7194089
-2369,843,2358,0.104166303367793,0.104166303367793,-104.9425451,39.7194089,-104.9413272,39.719407
-2370,2358,2359,0.04678514768012,0.04678514768012,-104.9413272,39.719407,-104.9407802,39.7194048
-2372,2360,2361,0.106536201799638,0.106536201799638,-104.9874759,39.7193464,-104.9862305,39.719364
-2373,2361,2362,0.0524641553188961,0.0524641553188961,-104.9862305,39.719364,-104.9856171,39.719362
-2374,2362,2363,0.0542089866141956,0.0542089866141956,-104.9856171,39.719362,-104.9849833,39.7193599
-2376,964,2364,0.101990510698998,0.101990510698998,-104.9838008,39.7193434,-104.9826087,39.7193208
-2377,2364,2365,0.0991028819964669,0.0991028819964669,-104.9826087,39.7193208,-104.98145,39.7193208
-2378,2365,2366,0.101583146356588,0.101583146356588,-104.98145,39.7193208,-104.9802624,39.7193326
-2379,2366,2367,0.0976663347579885,0.0976663347579885,-104.9802624,39.7193326,-104.9791205,39.719335
-2380,2367,2368,0.137463391512845,0.137463391512845,-104.9791205,39.719335,-104.9775163,39.7194106
-2382,2369,2370,0.0935927888835794,0.0935927888835794,-104.9971141,39.7584573,-104.9971148,39.759299
-2383,2370,2371,0.22137940675351,0.22137940675351,-104.9971148,39.759299,-104.9971055,39.7612899
-2384,93,2372,0.144113051799641,0.144113051799641,-104.9560723,39.7002187,-104.9555234,39.6989934
-2386,2373,2374,0.118928753039855,0.118928753039855,-104.9553043,39.709946,-104.954137,39.710527
-18871,9233,10374,0.171083495652578,0.171083495652578,-104.9861692,39.7001048,-104.9849567,39.6988813
-2387,2374,2375,0.0543464584708682,0.0543464584708682,-104.954137,39.710527,-104.9535019,39.7105138
-2389,2378,2379,0.0407086995566738,0.0407086995566738,-104.9510557,39.7104412,-104.9506866,39.7102101
-2392,2381,2382,0.0375038196347678,0.0375038196347678,-104.9519054,39.7105204,-104.9518797,39.7101837
-2393,2383,2384,0.0259773773232023,0.0259773773232023,-104.9506695,39.7101903,-104.9508926,39.7100318
-2416,2406,2407,0.0997923351013975,0.0997923351013975,-105.0357948,39.7530206,-105.0369621,39.753014
-2417,2407,2408,0.102411248163046,0.102411248163046,-105.0369621,39.753014,-105.03816,39.7530043
-2418,2408,2410,0.102005785733823,0.102005785733823,-105.03816,39.7530043,-105.0393531,39.7530175
-2419,2410,2411,0.0465568279250156,0.0465568279250156,-105.0393531,39.7530175,-105.0398977,39.753016
-2420,2411,1116,0.0498480806250605,0.0498480806250605,-105.0398977,39.753016,-105.0404808,39.7530145
-2421,1116,2412,0.0524212085974951,0.0524212085974951,-105.0404808,39.7530145,-105.041094,39.7530159
-2422,2412,2413,0.00643722349691115,0.00643722349691115,-105.041094,39.7530159,-105.0411693,39.753016
-2423,2413,2414,0.0569639986120168,0.0569639986120168,-105.0411693,39.753016,-105.0416538,39.7526643
-2424,2414,2415,0.054429107165009,0.054429107165009,-105.0416538,39.7526643,-105.0422764,39.7527667
-2426,1254,2416,0.203595366987771,0.203595366987771,-105.0205077,39.7711338,-105.0228899,39.7711377
-2427,2416,2418,0.194946286421225,0.194946286421225,-105.0228899,39.7711377,-105.0251709,39.7711415
-2429,2419,2420,0.10553685574305,0.10553685574305,-104.9960628,39.7705047,-104.9948281,39.7704903
-2430,2420,2421,0.100987191369147,0.100987191369147,-104.9948281,39.7704903,-104.9936465,39.7704869
-2431,2421,2422,0.140456845404627,0.140456845404627,-104.9936465,39.7704869,-104.9920897,39.7708916
-2432,2423,2424,0.132127040761259,0.132127040761259,-105.0299558,39.7706272,-105.0315008,39.7706692
-2433,2424,2425,0.0836330996531634,0.0836330996531634,-105.0315008,39.7706692,-105.0324788,39.7706946
-2434,2425,2426,0.048846065804279,0.048846065804279,-105.0324788,39.7706946,-105.03305,39.7707095
-2435,2426,2427,0.133578105271454,0.133578105271454,-105.03305,39.7707095,-105.0346118,39.7707555
-2437,2428,2429,0.0517867804859422,0.0517867804859422,-105.0346033,39.7713295,-105.0352091,39.7713194
-2438,2429,2430,0.0498462274807045,0.0498462274807045,-105.0352091,39.7713194,-105.0357922,39.7713097
-2439,2430,2431,0.0505796838521555,0.0505796838521555,-105.0357922,39.7713097,-105.0363839,39.7713006
-2440,2431,2432,0.04930585188023,0.04930585188023,-105.0363839,39.7713006,-105.0369607,39.7712918
-2441,2432,2433,0.0511391992663707,0.0511391992663707,-105.0369607,39.7712918,-105.0375589,39.771281
-2442,2433,2434,0.049421053488602,0.049421053488602,-105.0375589,39.771281,-105.038137,39.7712705
-2444,2435,2436,0.0499548965774192,0.0499548965774192,-105.0387198,39.7712682,-105.0393043,39.7712659
-2446,2437,2438,0.0498278119665032,0.0498278119665032,-105.0393174,39.7709233,-105.0399004,39.7709268
-2447,2438,1131,0.0475201423687532,0.0475201423687532,-105.0399004,39.7709268,-105.0404564,39.7709301
-2448,1131,2440,0.0499034161165238,0.0499034161165238,-105.0404564,39.7709301,-105.0410403,39.7709314
-2449,2440,2441,0.0519460604074748,0.0519460604074748,-105.0410403,39.7709314,-105.0416481,39.7709328
-2450,2441,2442,0.103666385736129,0.103666385736129,-105.0416481,39.7709328,-105.042861,39.7709424
-2451,2442,2443,0.0495636449318867,0.0495636449318867,-105.042861,39.7709424,-105.0434409,39.7709381
-2452,2443,2444,0.0508868110117968,0.0508868110117968,-105.0434409,39.7709381,-105.0440363,39.7709406
-2454,2445,2446,0.0992414144632343,0.0992414144632343,-104.9982447,39.770496,-104.9994058,39.7705066
-2455,2446,2447,0.0995661619141735,0.0995661619141735,-104.9994058,39.7705066,-105.0005707,39.770496
-2456,2447,2448,0.102918667647187,0.102918667647187,-105.0005707,39.770496,-105.0017747,39.7705132
-2457,2448,2449,0.103317708000917,0.103317708000917,-105.0017747,39.7705132,-105.0029835,39.7705237
-2458,2449,714,0.103614639817309,0.103614639817309,-105.0029835,39.7705237,-105.0041958,39.7705323
-2460,2450,2451,0.0843633084104915,0.0843633084104915,-105.0054661,39.7705389,-105.0064532,39.7705389
-2462,2452,2453,0.133209824518529,0.133209824518529,-105.0080496,39.7705191,-105.0096081,39.7705035
-2463,2453,2454,0.136026824487267,0.136026824487267,-105.0096081,39.7705035,-105.0111996,39.7705167
-2464,2454,1228,0.0997640460624544,0.0997640460624544,-105.0111996,39.7705167,-105.0123662,39.7704857
-2466,2455,2173,0.100670279604477,0.100670279604477,-105.0135199,39.7704859,-105.0146978,39.7704854
-2467,2173,2456,0.101681998391895,0.101681998391895,-105.0146978,39.7704854,-105.015887,39.7705129
-2468,2456,2457,0.135717601546705,0.135717601546705,-105.015887,39.7705129,-105.0174746,39.7704864
-2469,2457,2458,0.125216072912334,0.125216072912334,-105.0174746,39.7704864,-105.0189397,39.770486
-2470,2458,1253,0.13515574813911,0.13515574813911,-105.0189397,39.770486,-105.0205211,39.7704859
-2472,1811,2459,0.0528114155967436,0.0528114155967436,-105.0082177,39.7529013,-105.0078361,39.7532748
-2474,489,2460,0.0154146680516237,0.0154146680516237,-104.9407865,39.7473869,-104.9406062,39.7473869
-2475,2460,2461,0.0956622199995578,0.0956622199995578,-104.9406062,39.7473869,-104.9394874,39.7473999
-2476,2461,2462,0.050324686032827,0.050324686032827,-104.9394874,39.7473999,-104.9388988,39.7473953
-2477,2462,2463,0.0440541436649478,0.0440541436649478,-104.9388988,39.7473953,-104.9383838,39.7474085
-2478,2463,2464,0.09025955144498,0.09025955144498,-104.9383838,39.7474085,-104.9373281,39.7474151
-2479,2464,2465,0.00954118829962817,0.00954118829962817,-104.9373281,39.7474151,-104.9372165,39.7474151
-2480,2465,2466,0.0924623221003645,0.0924623221003645,-104.9372165,39.7474151,-104.936135,39.7474151
-2481,2466,2015,0.0557729059183765,0.0557729059183765,-104.936135,39.7474151,-104.9354827,39.7474085
-2483,1998,2467,0.0939242873690555,0.0939242873690555,-104.935045,39.7474085,-104.9339464,39.7474085
-2485,2468,2469,0.0807187230923558,0.0807187230923558,-104.9337661,39.7474085,-104.932822,39.7474019
-2486,2469,2470,0.0660886283093114,0.0660886283093114,-104.932822,39.7474019,-104.932049,39.7473981
-2487,2470,2471,0.0307524582434291,0.0307524582434291,-104.932049,39.7473981,-104.9316893,39.7473987
-2488,2471,2277,0.0631719504961159,0.0631719504961159,-104.9316893,39.7473987,-104.9309504,39.7473981
-2489,2277,2278,0.040321437937915,0.040321437937915,-104.9309504,39.7473981,-104.9304788,39.7474019
-2490,2278,2472,0.0579924273198359,0.0579924273198359,-104.9304788,39.7474019,-104.9298007,39.7473887
-2491,2472,2473,0.039564008523498,0.039564008523498,-104.9298007,39.7473887,-104.9293385,39.7474063
-2492,2473,2474,0.0566191459993118,0.0566191459993118,-104.9293385,39.7474063,-104.9286764,39.7473953
-2493,2474,2475,0.0461657995077916,0.0461657995077916,-104.9286764,39.7473953,-104.9281369,39.7474129
-2494,2475,2476,0.0573841993244499,0.0573841993244499,-104.9281369,39.7474129,-104.9274657,39.7474113
-2495,2476,2133,0.0413742441677564,0.0413742441677564,-104.9274657,39.7474113,-104.9269818,39.7474065
-2496,2133,2477,0.100557820130683,0.100557820130683,-104.9269818,39.7474065,-104.9258057,39.7474177
-2497,2477,2478,0.100232094382669,0.100232094382669,-104.9258057,39.7474177,-104.924634,39.747387
-2523,1412,1352,0.126262872161581,0.126262872161581,-105.0095538,39.781386,-105.0095743,39.7825214
-2498,2478,2479,3.80416722159948,3.80416722159948,-104.924634,39.747387,-104.880138,39.747428
-17380,5747,2721,0.292296181002999,0.292296181002999,-104.9676964,39.6930969,-104.9693989,39.6953759
-2500,2481,2482,0.133762433378551,0.133762433378551,-105.0095495,39.7794028,-105.0111147,39.7793892
-2502,2483,2484,0.132763004680832,0.132763004680832,-105.0111233,39.7789604,-105.0126768,39.7789736
-2503,2484,2153,0.135437121880425,0.135437121880425,-105.0126768,39.7789736,-105.0142616,39.7789608
-2506,2486,2487,0.0976687527368442,0.0976687527368442,-105.0170359,39.7789761,-105.0181786,39.7789934
-2507,2487,2488,0.100497620432408,0.100497620432408,-105.0181786,39.7789934,-105.0193545,39.7790066
-2508,2488,1263,0.0968234302487817,0.0968234302487817,-105.0193545,39.7790066,-105.0204874,39.7790198
-2510,2489,2490,0.129998303918767,0.129998303918767,-105.0252567,39.7790442,-105.0267778,39.7790603
-2511,2490,2491,0.131427328920895,0.131427328920895,-105.0267778,39.7790603,-105.0283152,39.7790924
-2512,2491,2492,0.134959393077107,0.134959393077107,-105.0283152,39.7790924,-105.0298945,39.7790924
-2513,2492,2493,0.13352181172892,0.13352181172892,-105.0298945,39.7790924,-105.0314566,39.7791188
-2514,2493,2494,0.134977098269894,0.134977098269894,-105.0314566,39.7791188,-105.0330359,39.7791385
-2515,2494,2495,0.133660770711518,0.133660770711518,-105.0330359,39.7791385,-105.0346,39.7791414
-2517,2496,1452,0.127643758305543,0.127643758305543,-105.0026756,39.7039481,-105.003594,39.7030434
-2519,2497,2498,0.181370133617083,0.181370133617083,-105.0102009,39.7838273,-105.0101988,39.7854584
-2521,2481,2499,0.0828768372746742,0.0828768372746742,-105.0095495,39.7794028,-105.0095409,39.7801481
-2522,2499,1412,0.137652613646732,0.137652613646732,-105.0095409,39.7801481,-105.0095538,39.781386
-2524,1352,2502,0.0676943813373141,0.0676943813373141,-105.0095743,39.7825214,-105.0095013,39.7831276
-2526,2503,2504,0.133817315449894,0.133817315449894,-105.010138,39.772934,-105.0100035,39.774133
-2527,2504,2505,0.135673996947998,0.135673996947998,-105.0100035,39.774133,-105.0100464,39.7753527
-2528,2505,2506,0.131966049224978,0.131966049224978,-105.0100464,39.7753527,-105.0099863,39.7765386
-2529,2506,2507,0.147529903316466,0.147529903316466,-105.0099863,39.7765386,-105.0105528,39.7777919
-2530,2507,2508,0.139391603159038,0.139391603159038,-105.0105528,39.7777919,-105.0105184,39.7790452
-16296,2509,2510,0.0284493842376544,0.0284493842376544,-104.9707856,39.6972952,-104.9709885,39.6970925
-2532,2511,2512,0.0269759988952267,0.0269759988952267,-105.0096048,39.7617977,-105.0096039,39.7620403
-2533,2512,2513,0.0303785309203703,0.0303785309203703,-105.0096039,39.7620403,-105.0096031,39.7623135
-2534,2513,2514,0.100988065805353,0.100988065805353,-105.0096031,39.7623135,-105.0096079,39.7632217
-2535,2514,2515,0.134258813820628,0.134258813820628,-105.0096079,39.7632217,-105.0095992,39.7644291
-2536,2515,2516,0.1356600895436,0.1356600895436,-105.0095992,39.7644291,-105.0096084,39.7656491
-2537,2516,2517,0.13329676442141,0.13329676442141,-105.0096084,39.7656491,-105.0096344,39.7668477
-2538,2517,1672,0.132852712666159,0.132852712666159,-105.0096344,39.7668477,-105.0096516,39.7680424
-2539,1672,2518,0.137264898504848,0.137264898504848,-105.0096516,39.7680424,-105.0096081,39.7692764
-2540,2518,2453,0.136447294484888,0.136447294484888,-105.0096081,39.7692764,-105.0096081,39.7705035
-2541,2453,2519,0.136891385699314,0.136891385699314,-105.0096081,39.7705035,-105.0097234,39.7717314
-2542,2519,2520,0.134024921907499,0.134024921907499,-105.0097234,39.7717314,-105.0096182,39.772934
-2544,2521,2522,0.0902887501429021,0.0902887501429021,-105.0101778,39.7862486,-105.0101932,39.7870605
-2545,2522,2523,0.0432770654501463,0.0432770654501463,-105.0101932,39.7870605,-105.0101932,39.7874497
-2546,2523,2524,0.0452800647802491,0.0452800647802491,-105.0101932,39.7874497,-105.0101975,39.7878569
-2547,2524,2525,0.0887962039212883,0.0887962039212883,-105.0101975,39.7878569,-105.0101844,39.7886554
-2549,2526,2527,0.14861247431244,0.14861247431244,-105.0103699,39.7355479,-105.0103656,39.7368844
-2550,2527,2528,0.177718576341635,0.177718576341635,-105.0103656,39.7368844,-105.010328,39.7384824
-2552,2529,2530,0.0550007858390758,0.0550007858390758,-105.0298418,39.737929,-105.0304849,39.7379392
-2553,2530,2531,0.0537231597686698,0.0537231597686698,-105.0304849,39.7379392,-105.0311131,39.7379476
-2557,254,1937,0.0763145446596447,0.0763145446596447,-105.0251543,39.7380028,-105.0260468,39.738001
-2562,2536,2537,0.0969383510155091,0.0969383510155091,-104.9938854,39.7870276,-104.994984,39.7872452
-2564,2523,2538,0.041595541767366,0.041595541767366,-105.0101932,39.7874497,-105.01068,39.7874523
-2565,2538,2539,0.0446801019224323,0.0446801019224323,-105.01068,39.7874523,-105.0112029,39.787455
-2567,2540,2541,0.0535606711091096,0.0535606711091096,-105.0345536,39.7874035,-105.0351796,39.7874285
-2568,2541,2542,0.0510376050613383,0.0510376050613383,-105.0351796,39.7874285,-105.0357769,39.7874319
-2569,2542,2543,0.048208042370787,0.048208042370787,-105.0357769,39.7874319,-105.0363411,39.7874312
-2570,2543,2544,0.0495068215823226,0.0495068215823226,-105.0363411,39.7874312,-105.0369205,39.7874304
-2571,2544,2545,0.0497291777137453,0.0497291777137453,-105.0369205,39.7874304,-105.0375025,39.7874319
-2572,2545,2546,0.0482680412228731,0.0482680412228731,-105.0375025,39.7874319,-105.0380674,39.7874333
-2573,2546,2547,0.0511986246623993,0.0511986246623993,-105.0380674,39.7874333,-105.0386666,39.7874341
-2574,2547,2548,0.0481311400848056,0.0481311400848056,-105.0386666,39.7874341,-105.0392299,39.7874348
-2575,2548,2549,0.05133533567668,0.05133533567668,-105.0392299,39.7874348,-105.0398307,39.787434
-2576,2549,1090,0.0473365047010202,0.0473365047010202,-105.0398307,39.787434,-105.0403847,39.7874333
-2578,2550,2551,0.0490112208554607,0.0490112208554607,-105.0409813,39.787434,-105.0415549,39.7874347
-2579,2551,2552,0.0504551815276218,0.0504551815276218,-105.0415549,39.7874347,-105.0421454,39.7874345
-2580,2552,2553,0.0492845875119232,0.0492845875119232,-105.0421454,39.7874345,-105.0427222,39.7874343
-2581,2553,2554,0.0515497460521136,0.0515497460521136,-105.0427222,39.7874343,-105.0433255,39.7874316
-2582,2554,2555,0.0526862102053863,0.0526862102053863,-105.0433255,39.7874316,-105.0439421,39.7874288
-2583,2555,2556,0.0982237295878,0.0982237295878,-105.0439421,39.7874288,-105.0450916,39.78742
-2584,2556,2557,0.264254691363992,0.264254691363992,-105.0450916,39.78742,-105.0481811,39.787528
-2585,1004,2558,0.099742520234474,0.099742520234474,-104.9875698,39.7873956,-104.9887371,39.787389
-2588,2560,1078,0.149639182772472,0.149639182772472,-105.0064215,39.7862585,-105.0081209,39.7865836
-2589,1078,2522,0.184839011544187,0.184839011544187,-105.0081209,39.7865836,-105.0101932,39.7870605
-2591,1484,2561,0.33893453481304,0.33893453481304,-104.99246,39.6948099,-104.9942282,39.6920823
-2592,2561,2562,0.36930331062994,0.36930331062994,-104.9942282,39.6920823,-104.9965885,39.6893017
-2594,2563,2295,0.235151876914131,0.235151876914131,-104.9865077,39.7643898,-104.9885127,39.7658379
-2596,2141,2564,0.0808696846181639,0.0808696846181639,-105.0086114,39.7398829,-105.0095126,39.7396622
-2628,2589,2590,0.046646895086832,0.046646895086832,-105.0367321,39.7229406,-105.0372775,39.7229371
-2597,2564,1224,0.24032404212478,0.24032404212478,-105.0095126,39.7396622,-105.0123175,39.7395238
-2600,2373,2567,0.1712601795962,0.1712601795962,-104.9553043,39.709946,-104.9536478,39.709081
-2601,2567,2568,0.00945648555666562,0.00945648555666562,-104.9536478,39.709081,-104.9535373,39.7090785
-2603,2565,2569,0.0807956808253844,0.0807956808253844,-104.9525578,39.7090414,-104.9516163,39.7090994
-2604,2569,2570,0.076951583144574,0.076951583144574,-104.9516163,39.7090994,-104.950721,39.7091668
-2605,2570,2571,0.0476131935554626,0.0476131935554626,-104.950721,39.7091668,-104.9505579,39.7095762
-2607,2572,2568,0.0312593605711727,0.0312593605711727,-104.9535019,39.7093583,-104.9535373,39.7090785
-2609,2569,2573,0.0486149705677772,0.0486149705677772,-104.9516163,39.7090994,-104.9516136,39.7095366
-2610,2570,2574,0.0674260333743846,0.0674260333743846,-104.950721,39.7091668,-104.949965,39.7089952
-2612,2567,2575,0.0505261001159507,0.0505261001159507,-104.9536478,39.709081,-104.953694,39.708628
-2615,2577,2578,0.10424034664628,0.10424034664628,-105.0288186,39.7229124,-105.0300374,39.722919
-2616,2578,2579,0.103512640883379,0.103512640883379,-105.0300374,39.722919,-105.0312476,39.7229322
-2617,2579,1398,0.105102630546257,0.105102630546257,-105.0312476,39.7229322,-105.0324765,39.7229279
-2618,1398,2580,0.0531367598624707,0.0531367598624707,-105.0324765,39.7229279,-105.0330978,39.7229268
-2619,2580,2581,0.0517085263170068,0.0517085263170068,-105.0330978,39.7229268,-105.0337024,39.7229256
-2620,2581,2582,0.0723991341895349,0.0723991341895349,-105.0337024,39.7229256,-105.0345489,39.7229308
-2621,2582,2583,0.0331676268132885,0.0331676268132885,-105.0345489,39.7229308,-105.0349367,39.7229332
-2622,2583,2584,0.0138525911142565,0.0138525911142565,-105.0349367,39.7229332,-105.0350986,39.7229295
-2623,2584,2585,0.037416228202987,0.037416228202987,-105.0350986,39.7229295,-105.035536,39.7229363
-2624,2585,2586,0.00994286750486891,0.00994286750486891,-105.035536,39.7229363,-105.0356522,39.7229391
-2625,2586,2587,0.040254104254433,0.040254104254433,-105.0356522,39.7229391,-105.0361228,39.7229454
-2629,2590,2591,0.00335375549834044,0.00335375549834044,-105.0372775,39.7229371,-105.0373167,39.7229363
-2630,2591,2592,0.0463774647105825,0.0463774647105825,-105.0373167,39.7229363,-105.0378588,39.7229259
-2631,2592,2593,0.00549997045042586,0.00549997045042586,-105.0378588,39.7229259,-105.0379231,39.7229267
-2632,2593,2594,0.0383542392436341,0.0383542392436341,-105.0379231,39.7229267,-105.0383715,39.7229322
-2634,2595,2596,0.0344869484873441,0.0344869484873441,-105.038507,39.7229353,-105.0389102,39.7229396
-2635,2596,2597,0.0176627396467139,0.0176627396467139,-105.0389102,39.7229396,-105.0391167,39.7229419
-2636,2597,2598,0.0280292044334563,0.0280292044334563,-105.0391167,39.7229419,-105.0394444,39.7229454
-2637,2598,2599,0.0242403080070769,0.0242403080070769,-105.0394444,39.7229454,-105.0397277,39.722952
-2638,2599,1569,0.0218944112855232,0.0218944112855232,-105.0397277,39.722952,-105.0399837,39.7229516
-2639,1569,2600,0.0286200762867591,0.0286200762867591,-105.0399837,39.7229516,-105.0403183,39.7229556
-2640,2600,1094,0.018347539243156,0.018347539243156,-105.0403183,39.7229556,-105.0405328,39.7229583
-2642,1110,2601,0.0142742072830798,0.0142742072830798,-105.0409158,39.7229588,-105.0410827,39.7229583
-2643,2601,2602,0.0369383896439539,0.0369383896439539,-105.0410827,39.7229583,-105.0415146,39.7229572
-2644,2602,2603,0.00917687822572764,0.00917687822572764,-105.0415146,39.7229572,-105.0416219,39.7229569
-2645,2603,2604,0.0430608643022986,0.0430608643022986,-105.0416219,39.7229569,-105.0421253,39.7229642
-2646,2604,2605,0.00238679099543715,0.00238679099543715,-105.0421253,39.7229642,-105.0421532,39.7229647
-2647,2605,2606,0.0472847267591164,0.0472847267591164,-105.0421532,39.7229647,-105.042706,39.7229718
-2648,2606,2607,0.0508445190476207,0.0508445190476207,-105.042706,39.7229718,-105.0433005,39.7229718
-2649,2607,2608,0.00234361810734104,0.00234361810734104,-105.0433005,39.7229718,-105.0433279,39.7229721
-2650,2608,2609,0.0517900277245267,0.0517900277245267,-105.0433279,39.7229721,-105.0439334,39.7229784
-2652,2610,2611,0.145180979465517,0.145180979465517,-104.9874808,39.7225308,-104.9891783,39.722537
-2674,2632,2634,0.599531015097949,0.599531015097949,-105.0450779,39.7221456,-105.0520873,39.7222126
-2675,2635,2181,0.0871692653780363,0.0871692653780363,-105.0131527,39.7220573,-105.0141719,39.7220614
-2676,2181,2638,0.0863959675292808,0.0863959675292808,-105.0141719,39.7220614,-105.015182,39.7220707
-2679,2640,2641,0.121944822987822,0.121944822987822,-104.9524652,39.7427196,-104.9524082,39.7438154
-2681,2642,2643,0.0194925006650245,0.0194925006650245,-104.9521739,39.7180386,-104.9521735,39.7182139
-2682,2643,2350,0.134347723988409,0.134347723988409,-104.9521735,39.7182139,-104.9521821,39.7194221
-2683,2350,2644,0.173564798460366,0.173564798460366,-104.9521821,39.7194221,-104.9521876,39.720983
-2684,2644,2645,0.174686152075606,0.174686152075606,-104.9521876,39.720983,-104.9522095,39.7225539
-2685,2645,2646,0.175389969986131,0.175389969986131,-104.9522095,39.7225539,-104.9522198,39.7241312
-2688,2648,747,0.0612580153194998,0.0612580153194998,-104.9519414,39.7758435,-104.9519449,39.7763944
-2689,747,1565,0.142756107755667,0.142756107755667,-104.9519449,39.7763944,-104.9519323,39.7776782
-2690,1565,2649,0.138016127389502,0.138016127389502,-104.9519323,39.7776782,-104.9519262,39.7789194
-2691,2649,2650,0.12023627946696,0.12023627946696,-104.9519262,39.7789194,-104.9519199,39.7800007
-2693,2651,694,0.200802439501944,0.200802439501944,-104.952446,39.7401771,-104.9524269,39.7419829
-2695,2652,2653,0.127019992895419,0.127019992895419,-104.951864,39.7807829,-104.9518556,39.7819252
-2696,2653,2654,0.201028199806741,0.201028199806741,-104.9518556,39.7819252,-104.9519157,39.7837325
-2697,2654,2655,0.134212276460076,0.134212276460076,-104.9519157,39.7837325,-104.9519157,39.7849395
-2698,2655,2656,0.140083368586782,0.140083368586782,-104.9519157,39.7849395,-104.9519157,39.7861993
-2699,2656,2657,0.13046105136647,0.13046105136647,-104.9519157,39.7861993,-104.9518997,39.7873725
-2702,2633,2659,0.199675824720705,0.199675824720705,-104.9517199,39.7273329,-104.9517329,39.7291286
-2704,2660,949,0.174693421852154,0.174693421852154,-104.9517031,39.7305282,-104.9517203,39.7320992
-2705,949,2661,0.165148304595761,0.165148304595761,-104.9517203,39.7320992,-104.9517288,39.7335844
-2706,2661,2662,0.173966950291824,0.173966950291824,-104.9517288,39.7335844,-104.9516945,39.7351487
-2707,2662,2663,0.184218102738583,0.184218102738583,-104.9516945,39.7351487,-104.9516859,39.7368054
-2708,2663,2664,0.172496811774092,0.172496811774092,-104.9516859,39.7368054,-104.9516835,39.7383567
-2710,2665,2666,0.394651095737645,0.394651095737645,-104.9523031,39.7873791,-104.9522001,39.7909274
-2711,2667,2668,0.201414903082426,0.201414903082426,-104.9517882,39.7383629,-104.9518287,39.740174
-17301,8745,4260,0.201420130125937,0.201420130125937,-104.9622978,39.6947699,-104.9623073,39.6965813
-2713,2669,2388,0.109456559825348,0.109456559825348,-104.9519288,39.7728936,-104.9519586,39.7738777
-2714,2388,2670,0.140828374595316,0.140828374595316,-104.9519586,39.7738777,-104.9519586,39.7751442
-2717,2672,2673,0.139177577172101,0.139177577172101,-104.9524477,39.7557162,-104.9524149,39.7569676
-2718,2673,2674,0.137352749762486,0.137352749762486,-104.9524149,39.7569676,-104.9524283,39.7582028
-2719,2674,2675,0.139830667816654,0.139830667816654,-104.9524283,39.7582028,-104.9524391,39.7594603
-2720,2675,2676,0.136669684605715,0.136669684605715,-104.9524391,39.7594603,-104.9524392,39.7606894
-2722,2677,2678,0.12447911414286,0.12447911414286,-104.9524392,39.7607246,-104.9524232,39.761844
-2750,2704,2705,0.0292446267270126,0.0292446267270126,-105.0229197,39.7608329,-105.022918,39.7610959
-2751,2705,2706,0.00658282845173238,0.00658282845173238,-105.022918,39.7610959,-105.0229176,39.7611551
-2752,2706,2707,0.0151449443945988,0.0151449443945988,-105.0229176,39.7611551,-105.0229167,39.7612913
-2753,2707,2708,0.0714770438658631,0.0714770438658631,-105.0229167,39.7612913,-105.0229124,39.7619341
-2754,2708,2709,0.00822853556213401,0.00822853556213401,-105.0229124,39.7619341,-105.0229119,39.7620081
-2756,2710,8,0.130042568169854,0.130042568169854,-105.0236301,39.7451745,-105.0236282,39.746344
-2757,8,2711,0.118166571537094,0.118166571537094,-105.0236282,39.746344,-105.0233999,39.7473921
-2759,2712,2713,0.102388493919056,0.102388493919056,-105.0228947,39.7692896,-105.0228923,39.7702104
-2760,2713,2416,0.103111259495513,0.103111259495513,-105.0228923,39.7702104,-105.0228899,39.7711377
-2761,2416,2714,0.100631617654013,0.100631617654013,-105.0228899,39.7711377,-105.0228875,39.7720427
-2764,2716,2717,0.200655449563851,0.200655449563851,-105.0239484,39.7766282,-105.0239636,39.7784327
-2765,2717,2718,0.200753725915124,0.200753725915124,-105.0239636,39.7784327,-105.0239521,39.7802381
-2766,2718,1440,0.196942260224429,0.196942260224429,-105.0239521,39.7802381,-105.0239358,39.7820092
-2767,1440,2719,0.00947384243402213,0.00947384243402213,-105.0239358,39.7820092,-105.0239361,39.7820944
-2768,2719,2720,0.190389032049707,0.190389032049707,-105.0239361,39.7820944,-105.0239436,39.7838066
-2770,2723,2724,0.133138466543617,0.133138466543617,-105.0235985,39.7620059,-105.0236117,39.7632032
-2771,2724,2725,0.135835722389097,0.135835722389097,-105.0236117,39.7632032,-105.0236117,39.7644248
-2772,2725,2726,0.133534041022806,0.133534041022806,-105.0236117,39.7644248,-105.0236131,39.7656257
-2773,2726,2727,0.134234713813183,0.134234713813183,-105.0236131,39.7656257,-105.0236104,39.7668329
-2774,2727,1681,0.134687505819062,0.134687505819062,-105.0236104,39.7668329,-105.0236278,39.7680441
-2775,1681,2728,0.137316317225174,0.137316317225174,-105.0236278,39.7680441,-105.0236198,39.769279
-2777,2729,2730,0.104120921025978,0.104120921025978,-105.0239366,39.7846851,-105.0239665,39.7856212
-2778,2730,2731,0.201486044854047,0.201486044854047,-105.0239665,39.7856212,-105.0239597,39.7874332
-2779,2731,2732,0.409054627036075,0.409054627036075,-105.0239597,39.7874332,-105.0239453,39.7911119
-2780,2733,2734,0.231399786377778,0.231399786377778,-104.9558149,39.7017594,-104.9558008,39.7038404
-2781,2734,2735,0.0901704059113055,0.0901704059113055,-104.9558008,39.7038404,-104.9558537,39.7046503
-2782,2735,2736,0.0825094909725568,0.0825094909725568,-104.9558537,39.7046503,-104.9563257,39.7052974
-2783,2737,2738,0.200363396709187,0.200363396709187,-104.9558324,39.6983924,-104.9558241,39.6965905
-2784,2738,2739,0.20121833925615,0.20121833925615,-104.9558241,39.6965905,-104.9558241,39.6947809
-2785,2739,2740,0.202399438971847,0.202399438971847,-104.9558241,39.6947809,-104.9558357,39.6929607
-2788,2742,2743,0.404396545451488,0.404396545451488,-104.9558447,39.6893365,-104.9558624,39.6856997
-2789,2744,1762,0.0647074290459755,0.0647074290459755,-104.9541587,39.6999377,-104.9546893,39.699523
-2790,1762,2372,0.0925216625359094,0.0925216625359094,-104.9546893,39.699523,-104.9555234,39.6989934
-2791,2372,2745,0.0223137340397398,0.0223137340397398,-104.9555234,39.6989934,-104.9556601,39.6988225
-2792,2745,2737,0.050045237249892,0.050045237249892,-104.9556601,39.6988225,-104.9558324,39.6983924
-2794,2746,2747,0.14840065064165,0.14840065064165,-105.001474,39.6998539,-105.0031992,39.6997152
-2796,2748,2749,0.200822547172327,0.200822547172327,-104.9326658,39.7346911,-104.9326365,39.736497
-2797,2749,2750,0.193145905748916,0.193145905748916,-104.9326365,39.736497,-104.9326406,39.738234
-2821,908,2770,0.128136612557408,0.128136612557408,-104.9331257,39.7644965,-104.9331507,39.7656487
-2824,2261,2772,0.10049786598023,0.10049786598023,-104.930525,39.7674191,-104.9293492,39.7674126
-2825,2772,2773,0.106378037300959,0.106378037300959,-104.9293492,39.7674126,-104.9281046,39.7674191
-2826,2773,2110,0.093897002068377,0.093897002068377,-104.9281046,39.7674191,-104.927006,39.7674191
-2827,2110,2774,0.107389868338328,0.107389868338328,-104.927006,39.7674191,-104.9257496,39.7674291
-2828,2774,2775,0.0994873393877801,0.0994873393877801,-104.9257496,39.7674291,-104.9245856,39.7674323
-2850,2776,2777,0.10879749556538,0.10879749556538,-104.9511832,39.7669218,-104.9499105,39.7669403
-2855,2804,866,0.20027757395038,0.20027757395038,-104.9452104,39.7669339,-104.9428673,39.7669141
-2829,2775,2778,1.00147658782101,1.00147658782101,-104.9245856,39.7674323,-104.9128683,39.7674541
-2830,2779,2780,0.0530172029480301,0.0530172029480301,-104.9733522,39.7669655,-104.9727319,39.7669657
-2832,2781,2782,0.107966324930259,0.107966324930259,-104.9721138,39.7669682,-104.9708506,39.7669659
-2833,2782,2783,0.103296913871679,0.103296913871679,-104.9708506,39.7669659,-104.9696421,39.7669558
-2834,2783,2784,0.105735267915707,0.105735267915707,-104.9696421,39.7669558,-104.968405,39.766956
-2835,2784,2785,0.104367827383757,0.104367827383757,-104.968405,39.766956,-104.9671839,39.7669548
-2836,2785,2786,0.106026097865505,0.106026097865505,-104.9671839,39.7669548,-104.9659434,39.7669568
-2837,2786,2787,0.104661406473263,0.104661406473263,-104.9659434,39.7669568,-104.9647189,39.7669496
-2838,2787,2788,0.109120444986171,0.109120444986171,-104.9647189,39.7669496,-104.9634422,39.7669465
-2842,2790,2791,0.105111335997404,0.105111335997404,-104.9609746,39.7669537,-104.9597448,39.7669537
-2843,2791,2792,0.100650542913524,0.100650542913524,-104.9597448,39.7669537,-104.9585673,39.7669414
-2844,2792,2793,0.105228706955749,0.105228706955749,-104.9585673,39.7669414,-104.9573362,39.7669311
-2845,2793,2794,0.119444969275907,0.119444969275907,-104.9573362,39.7669311,-104.9559387,39.766929
-2846,2794,2795,0.0942235633572651,0.0942235633572651,-104.9559387,39.766929,-104.9548363,39.7669249
-2847,2795,2084,0.102241906689643,0.102241906689643,-104.9548363,39.7669249,-104.9536401,39.7669187
-2848,2084,2796,0.105000278025472,0.105000278025472,-104.9536401,39.7669187,-104.9524116,39.7669187
-2849,2796,2776,0.104992294488636,0.104992294488636,-104.9524116,39.7669187,-104.9511832,39.7669218
-2851,2777,2799,0.102990536508203,0.102990536508203,-104.9499105,39.7669403,-104.9487061,39.7669692
-2852,2799,2802,0.104419262818378,0.104419262818378,-104.9487061,39.7669692,-104.9474844,39.7669713
-3832,3274,3648,0.198107670536066,0.198107670536066,-104.9593216,39.7038566,-104.9576929,39.7025901
-2853,2802,2803,0.106343009363166,0.106343009363166,-104.9474844,39.7669713,-104.9462404,39.7669537
-2854,2803,2804,0.0880619154851023,0.0880619154851023,-104.9462404,39.7669537,-104.9452104,39.7669339
-2856,866,2805,0.0997722055250997,0.0997722055250997,-104.9428673,39.7669141,-104.9417,39.7669075
-2857,2805,2806,0.0898296288997372,0.0898296288997372,-104.9417,39.7669075,-104.9406492,39.7668916
-2858,2806,2807,0.0154103032800591,0.0154103032800591,-104.9406492,39.7668916,-104.9404689,39.7668916
-2860,1345,2808,0.0745089191630195,0.0745089191630195,-105.0025087,39.7490201,-105.0032328,39.7486472
-2862,2809,2810,0.0999390470653334,0.0999390470653334,-104.9921793,39.7165966,-104.9921278,39.7174945
-2863,2810,2811,0.098203415750831,0.098203415750831,-104.9921278,39.7174945,-104.9921559,39.7183774
-2864,2811,2812,0.105704456533214,0.105704456533214,-104.9921559,39.7183774,-104.9921473,39.719328
-2865,2812,1841,0.178602078382633,0.178602078382633,-104.9921473,39.719328,-104.9921535,39.7209342
-2867,2813,2814,0.147059691176011,0.147059691176011,-104.9913173,39.7752191,-104.9912923,39.7765415
-2869,2815,2816,0.0358929050784097,0.0358929050784097,-104.9919925,39.7317917,-104.9916596,39.7319883
-2871,2817,2818,0.202436914455554,0.202436914455554,-104.9993302,39.7801544,-105.0016991,39.7801675
-2872,2818,721,0.208959052889522,0.208959052889522,-105.0016991,39.7801675,-105.0041443,39.7801832
-2873,721,2819,0.195578398743409,0.195578398743409,-105.0041443,39.7801832,-105.0064329,39.7801666
-2874,2819,2820,0.132104447079437,0.132104447079437,-105.0064329,39.7801666,-105.0079788,39.7801613
-2875,2820,2499,0.133495572380704,0.133495572380704,-105.0079788,39.7801613,-105.0095409,39.7801481
-2877,2821,2823,0.131028201505055,0.131028201505055,-105.0111319,39.7801807,-105.0126652,39.7801745
-2878,2823,2154,0.134224367729179,0.134224367729179,-105.0126652,39.7801745,-105.0142359,39.7801811
-2879,2154,2824,0.137197819412826,0.137197819412826,-105.0142359,39.7801811,-105.0158414,39.7801872
-2881,2825,2828,0.100509300133652,0.100509300133652,-105.0169815,39.7801864,-105.0181574,39.7801666
-2882,2828,2829,0.098379052864586,0.098379052864586,-105.0181574,39.7801666,-105.0193075,39.7802062
-2883,2829,1264,0.0995905743898471,0.0995905743898471,-105.0193075,39.7802062,-105.0204729,39.7802128
-2884,1264,2830,0.0991885382845514,0.0991885382845514,-105.0204729,39.7802128,-105.0216335,39.780226
-2885,2830,2831,0.0990153060665791,0.0990153060665791,-105.0216335,39.780226,-105.0227922,39.780226
-2886,2831,2718,0.0991269733313679,0.0991269733313679,-105.0227922,39.780226,-105.0239521,39.7802381
-2887,2718,2832,0.100500652429342,0.100500652429342,-105.0239521,39.7802381,-105.0251279,39.7802579
-2888,2832,2833,0.0102715407543069,0.0102715407543069,-105.0251279,39.7802579,-105.0252481,39.7802579
-2889,2833,2834,0.0960953974534679,0.0960953974534679,-105.0252481,39.7802579,-105.0263725,39.7802711
-2890,2834,2835,0.0326867749280955,0.0326867749280955,-105.0263725,39.7802711,-105.0267549,39.7802781
-2891,2835,2836,0.134256786764763,0.134256786764763,-105.0267549,39.7802781,-105.028326,39.7802812
-2892,2836,2837,0.113988792124523,0.113988792124523,-105.028326,39.7802812,-105.0296598,39.7802952
-2893,2837,2838,0.0204082374430359,0.0204082374430359,-105.0296598,39.7802952,-105.0298986,39.7802977
-2895,2839,2840,0.113685974247049,0.113685974247049,-105.0301265,39.7802941,-105.0314566,39.7802731
-2896,2840,2841,0.132754406259035,0.132754406259035,-105.0314566,39.7802731,-105.0330101,39.7802665
-2897,2841,2842,0.136852657742897,0.136852657742897,-105.0330101,39.7802665,-105.0346113,39.7802434
-2899,1793,2843,0.0809702263007341,0.0809702263007341,-104.929534,39.694587,-104.9295552,39.693859
-2900,2843,2844,0.0969425296921621,0.0969425296921621,-104.9295552,39.693859,-104.9295466,39.6929872
-2901,2844,2845,0.413436446480526,0.413436446480526,-104.9295466,39.6929872,-104.9305098,39.6893437
-2903,2263,2847,0.179984264422638,0.179984264422638,-104.9304775,39.7162632,-104.9304918,39.7146446
-2904,2847,2848,0.174004040987329,0.174004040987329,-104.9304918,39.7146446,-104.930509,39.7130798
-2905,2848,2849,0.194108624427032,0.194108624427032,-104.930509,39.7130798,-104.9304782,39.7113343
-2907,2850,1276,0.172413086756907,0.172413086756907,-105.0186375,39.7505191,-105.0205429,39.7510272
-2909,2853,785,0.245123885631009,0.245123885631009,-105.0050712,39.7039722,-105.0042571,39.7018586
-2911,2854,2855,0.0854841952170884,0.0854841952170884,-105.0038253,39.7010848,-105.0034418,39.7003749
-2912,2855,2747,0.0762350203886263,0.0762350203886263,-105.0034418,39.7003749,-105.0031992,39.6997152
-2913,2747,2856,0.0859704175448271,0.0859704175448271,-105.0031992,39.6997152,-105.0031649,39.6989425
-2914,2856,2857,0.100779098585589,0.100779098585589,-105.0031649,39.6989425,-105.0035425,39.698084
-2915,2857,2858,0.0905252463288938,0.0905252463288938,-105.0035425,39.698084,-105.0043357,39.6975452
-2917,2859,2860,0.0227727209766704,0.0227727209766704,-105.0050773,39.6967285,-105.0050773,39.6965237
-2918,361,1735,0.198105222979832,0.198105222979832,-105.0051297,39.6894631,-105.0051254,39.6912447
-2919,1735,2861,0.0382126884100893,0.0382126884100893,-105.0051254,39.6912447,-105.0051426,39.6915881
-2920,148,2862,0.0438716250050412,0.0438716250050412,-105.0050494,39.6930773,-105.0050709,39.6926831
-2921,1003,2863,0.0520715649387988,0.0520715649387988,-104.987571,39.7855779,-104.9869616,39.7855787
-2922,2863,2864,0.0982728809134093,0.0982728809134093,-104.9869616,39.7855787,-104.9858115,39.7855801
-2923,2864,2865,0.0994946507259965,0.0994946507259965,-104.9858115,39.7855801,-104.9846471,39.7855801
-3895,3698,3699,0.204838159377623,0.204838159377623,-104.9617334,39.6911372,-104.9617151,39.6892951
-2924,2865,2869,0.090463384362138,0.090463384362138,-104.9846471,39.7855801,-104.9835884,39.7855828
-2925,2869,2870,0.0564720828613131,0.0564720828613131,-104.9835884,39.7855828,-104.9829275,39.7855836
-2926,2870,2871,0.0608640771597173,0.0608640771597173,-104.9829275,39.7855836,-104.9822152,39.7855845
-2927,2872,2873,0.044011799999607,0.044011799999607,-104.9546451,39.7849527,-104.9541301,39.7849461
-2928,2873,2088,0.0931496819660856,0.0931496819660856,-104.9541301,39.7849461,-104.95304,39.7849395
-2929,2088,2655,0.0960691148224413,0.0960691148224413,-104.95304,39.7849395,-104.9519157,39.7849395
-2930,2655,2874,0.0937706080748846,0.0937706080748846,-104.9519157,39.7849395,-104.9508183,39.7849387
-2931,2874,2875,0.0828791997484075,0.0828791997484075,-104.9508183,39.7849387,-104.9498484,39.7849453
-2932,2875,2876,0.093218621711434,0.093218621711434,-104.9498484,39.7849453,-104.9487583,39.7849124
-2933,2876,2877,0.0704167162147941,0.0704167162147941,-104.9487583,39.7849124,-104.9479343,39.7849217
-2935,2878,2879,0.0887403720940643,0.0887403720940643,-104.9645156,39.7852099,-104.9634771,39.7852033
-2936,2879,2880,0.0909098673154509,0.0909098673154509,-104.9634771,39.7852033,-104.962414,39.7852355
-2937,2880,2881,0.0882058988614067,0.0882058988614067,-104.962414,39.7852355,-104.961384,39.7851828
-2938,2881,2882,0.181777411929199,0.181777411929199,-104.961384,39.7851828,-104.9592584,39.7852492
-2940,2883,2884,0.115661337881372,0.115661337881372,-104.9733956,39.7437918,-104.9733802,39.7448319
-2941,2884,2885,0.14826485880128,0.14826485880128,-104.9733802,39.7448319,-104.9724659,39.7459649
-2942,2885,2886,0.112251623213379,0.112251623213379,-104.9724659,39.7459649,-104.9722001,39.7469535
-2943,2886,2887,0.119994591224275,0.119994591224275,-104.9722001,39.7469535,-104.9729638,39.7478589
-2944,2887,2888,0.178622958928809,0.178622958928809,-104.9729638,39.7478589,-104.9733549,39.7494369
-2945,2888,2889,0.00412533177852682,0.00412533177852682,-104.9733549,39.7494369,-104.9733549,39.749474
-2946,2889,2890,0.00481474032387871,0.00481474032387871,-104.9733549,39.749474,-104.9733549,39.7495173
-2947,2890,2893,0.135290874001292,0.135290874001292,-104.9733549,39.7495173,-104.9733544,39.750734
-2948,2893,2894,0.137892832771659,0.137892832771659,-104.9733544,39.750734,-104.973354,39.7519741
-2949,2894,817,0.140150092060959,0.140150092060959,-104.973354,39.7519741,-104.9733535,39.7532345
-2950,817,2895,0.143808402694827,0.143808402694827,-104.9733535,39.7532345,-104.9733531,39.7545278
-2951,2895,2896,0.0697081016101773,0.0697081016101773,-104.9733531,39.7545278,-104.9733529,39.7551547
-2952,2896,2897,0.0168682725384664,0.0168682725384664,-104.9733529,39.7551547,-104.9733528,39.7553064
-2954,2898,2899,0.139071498957887,0.139071498957887,-104.9733526,39.7557317,-104.9733522,39.7569824
-2956,2900,2901,0.139727551358826,0.139727551358826,-104.9733518,39.7582331,-104.9733513,39.7594897
-2957,2901,2902,0.00293554606295758,0.00293554606295758,-104.9733513,39.7594897,-104.9733513,39.7595161
-2958,2902,2903,0.102721876435386,0.102721876435386,-104.9733513,39.7595161,-104.973351,39.7604399
-2959,2903,2904,0.0305452475451112,0.0305452475451112,-104.973351,39.7604399,-104.9733509,39.7607146
-2960,2904,2905,0.00503713742922791,0.00503713742922791,-104.9733509,39.7607146,-104.9733508,39.7607599
-2961,2905,2906,0.0458567885450819,0.0458567885450819,-104.9733508,39.7607599,-104.9733507,39.7611723
-2962,2906,2907,0.0981295261146626,0.0981295261146626,-104.9733507,39.7611723,-104.9733504,39.7620548
-2963,2907,628,0.0369055971430695,0.0369055971430695,-104.9733504,39.7620548,-104.9733503,39.7623867
-2964,628,1143,0.0958611496898419,0.0958611496898419,-104.9733503,39.7623867,-104.97335,39.7632488
-2966,2908,2909,0.0463126901024473,0.0463126901024473,-104.9733498,39.7638075,-104.9733496,39.764224
-2967,2909,872,0.0318684671228471,0.0318684671228471,-104.9733496,39.764224,-104.9733495,39.7645106
-2968,872,2910,0.0711758745978235,0.0711758745978235,-104.9733495,39.7645106,-104.9733493,39.7651507
-2969,2910,2911,0.067495322638235,0.067495322638235,-104.9733493,39.7651507,-104.9733491,39.7657577
-2970,2911,2912,0.033747661319103,0.033747661319103,-104.9733491,39.7657577,-104.973349,39.7660612
-2971,2912,2913,0.0475024757380027,0.0475024757380027,-104.973349,39.7660612,-104.9733488,39.7664884
-2973,2914,2915,0.202578999998173,0.202578999998173,-104.9738264,39.7183118,-104.9733801,39.7165226
-2975,2916,2917,0.184685764171195,0.184685764171195,-104.9731398,39.7165226,-104.9732076,39.7181827
-2976,2917,2918,0.00737265767013589,0.00737265767013589,-104.9732076,39.7181827,-104.9732171,39.7182486
-2978,2919,2920,0.110148820147866,0.110148820147866,-104.9593201,39.7073167,-104.9580338,39.7072718
-2979,2920,584,0.039258317875865,0.039258317875865,-104.9580338,39.7072718,-104.957575,39.70728
-2980,584,2921,0.228363185041033,0.228363185041033,-104.957575,39.70728,-104.954906,39.707321
-2982,2922,1341,0.198962442111046,0.198962442111046,-105.021523,39.7147919,-105.0215144,39.7130026
-2983,1341,2923,0.207039061514662,0.207039061514662,-105.0215144,39.7130026,-105.0215316,39.7111407
-2984,2923,2924,0.201175175238786,0.201175175238786,-105.0215316,39.7111407,-105.0215401,39.7093315
-2985,2924,2925,0.203376851393596,0.203376851393596,-105.0215401,39.7093315,-105.0215487,39.7075025
-2986,2925,2926,0.201920207523594,0.201920207523594,-105.0215487,39.7075025,-105.0215401,39.7056866
-2987,2926,2927,0.200452413161122,0.200452413161122,-105.0215401,39.7056866,-105.0215316,39.7038839
-2988,2927,776,0.201931296094781,0.201931296094781,-105.0215316,39.7038839,-105.0215401,39.7020679
-2990,2928,2930,0.209285084837907,0.209285084837907,-105.0215401,39.7004038,-105.021523,39.6985217
-2991,2930,2931,0.197960209647655,0.197960209647655,-105.021523,39.6985217,-105.0215654,39.6967417
-2992,2931,171,0.402036974102358,0.402036974102358,-105.0215654,39.6967417,-105.0215573,39.6931261
-2994,2932,2933,0.200508042098485,0.200508042098485,-105.0213817,39.6895011,-105.0213903,39.6876979
-2995,170,1728,0.257039245710078,0.257039245710078,-105.0213045,39.6931204,-105.0213131,39.6908088
-2996,1728,2934,0.145411467525923,0.145411467525923,-105.0213131,39.6908088,-105.0213045,39.6895011
-2999,2935,2936,0.0880513532781809,0.0880513532781809,-105.0169377,39.6883193,-105.0178175,39.6879086
-3025,2957,2958,0.01030947748559,0.01030947748559,-105.0187431,39.7584203,-105.0188637,39.7584212
-3000,2936,209,0.228338005511316,0.228338005511316,-105.0178175,39.6879086,-105.0203575,39.6872791
-3002,2937,2938,0.107611509993879,0.107611509993879,-104.9251387,39.7047572,-104.9247744,39.7038309
-3005,2940,2941,0.175855452328419,0.175855452328419,-104.9257898,39.7162499,-104.9257841,39.7146684
-3006,2941,2942,0.174909636552997,0.174909636552997,-104.9257841,39.7146684,-104.925785,39.7130954
-3007,2942,2943,0.192197232795451,0.192197232795451,-104.925785,39.7130954,-104.9258054,39.711367
-3009,2944,546,0.0293283601170504,0.0293283601170504,-104.9250716,39.7048418,-104.9250834,39.7051054
-3010,546,2945,0.155746660532693,0.155746660532693,-104.9250834,39.7051054,-104.9251435,39.7065053
-3012,1475,2946,0.311303155924368,0.311303155924368,-104.9241194,39.6955841,-104.9254353,39.692974
-3013,2946,2947,0.184883982264712,0.184883982264712,-104.9254353,39.692974,-104.9259674,39.6913625
-3014,2947,2948,0.224685205653341,0.224685205653341,-104.9259674,39.6913625,-104.9264824,39.6893811
-3016,2949,2950,0.0888669853746646,0.0888669853746646,-104.9258215,39.6893679,-104.9258215,39.6885687
-3017,2950,2951,0.114577615588497,0.114577615588497,-104.9258215,39.6885687,-104.9258129,39.6875383
-3018,1225,2952,0.114132076273042,0.114132076273042,-105.0118006,39.7583774,-105.013135,39.7584124
-3019,2952,2161,0.115442153745618,0.115442153745618,-105.013135,39.7584124,-105.0144855,39.7584103
-3020,2161,2953,0.105428749590907,0.105428749590907,-105.0144855,39.7584103,-105.0157188,39.7584009
-3022,2954,2955,0.0114463280554541,0.0114463280554541,-105.0158347,39.7584,-105.0159686,39.7584009
-3023,2955,639,0.18619297340356,0.18619297340356,-105.0159686,39.7584009,-105.0181467,39.7584155
-3024,639,2957,0.0509835810434449,0.0509835810434449,-105.0181467,39.7584155,-105.0187431,39.7584203
-3026,2958,2959,0.0353738821651235,0.0353738821651235,-105.0188637,39.7584212,-105.0192775,39.7584245
-3027,2959,2960,0.00284670794487764,0.00284670794487764,-105.0192775,39.7584245,-105.0193108,39.7584248
-3028,2960,1288,0.104793015683124,0.104793015683124,-105.0193108,39.7584248,-105.0205366,39.7584382
-3029,1288,2961,0.051496901479137,0.051496901479137,-105.0205366,39.7584382,-105.021139,39.7584434
-3030,2961,2962,0.00960868888037157,0.00960868888037157,-105.021139,39.7584434,-105.0212514,39.7584444
-3031,2962,2963,0.0208687174266634,0.0208687174266634,-105.0212514,39.7584444,-105.0214955,39.7584475
-3032,2963,2964,0.0498882614596582,0.0498882614596582,-105.0214955,39.7584475,-105.0220789,39.7584598
-3033,2964,2965,0.123304259264834,0.123304259264834,-105.0220789,39.7584598,-105.0235213,39.7584714
-3035,2966,2967,0.00908677871596767,0.00908677871596767,-105.0236238,39.7584722,-105.0237301,39.7584727
-3036,2967,2968,0.115854235202851,0.115854235202851,-105.0237301,39.7584727,-105.0250854,39.758479
-3037,2968,2969,0.00700956571064615,0.00700956571064615,-105.0250854,39.758479,-105.0251674,39.7584794
-3038,2969,2970,0.00940368205913038,0.00940368205913038,-105.0251674,39.7584794,-105.0252774,39.7584805
-3039,2970,2971,0.0666840110355875,0.0666840110355875,-105.0252774,39.7584805,-105.0260575,39.7584783
-3040,2971,2972,0.0679662165544488,0.0679662165544488,-105.0260575,39.7584783,-105.0268526,39.7584761
-3041,2972,2973,0.0630976433471776,0.0630976433471776,-105.0268526,39.7584761,-105.0275907,39.7584695
-3042,2973,2974,0.0491600079555241,0.0491600079555241,-105.0275907,39.7584695,-105.0281658,39.7584695
-3044,2975,2976,0.0997731403964804,0.0997731403964804,-105.0299157,39.7585034,-105.0310829,39.7585034
-3045,2976,2977,0.100715566829797,0.100715566829797,-105.0310829,39.7585034,-105.032261,39.7585166
-3046,2977,2978,0.0996876914159973,0.0996876914159973,-105.032261,39.7585166,-105.0334272,39.7585157
-3047,2978,2979,0.10126058971698,0.10126058971698,-105.0334272,39.7585157,-105.0346118,39.758517
-3048,2979,2980,0.103346225532192,0.103346225532192,-105.0346118,39.758517,-105.0358208,39.7585166
-3049,2980,2981,0.0983114005972926,0.0983114005972926,-105.0358208,39.7585166,-105.0369709,39.7585166
-3050,2981,2982,0.09874223460454,0.09874223460454,-105.0369709,39.7585166,-105.0381258,39.7584985
-3051,2982,2983,0.0510749251490339,0.0510749251490339,-105.0381258,39.7584985,-105.038723,39.7584839
-3053,2984,2985,0.0505192363533637,0.0505192363533637,-105.039304,39.7584901,-105.039895,39.758491
-3054,2985,1120,0.0491942863881514,0.0491942863881514,-105.039895,39.758491,-105.0404705,39.7584919
-3055,1120,2986,0.0517085444587275,0.0517085444587275,-105.0404705,39.7584919,-105.0410754,39.7584887
-3056,2986,2987,0.0504766444323722,0.0504766444323722,-105.0410754,39.7584887,-105.0416657,39.7585006
-3057,2987,2988,0.0508471211122413,0.0508471211122413,-105.0416657,39.7585006,-105.0422605,39.7584955
-3058,2988,2989,0.0482147566017866,0.0482147566017866,-105.0422605,39.7584955,-105.0428245,39.7584902
-3059,2989,2990,0.0513143127772338,0.0513143127772338,-105.0428245,39.7584902,-105.0434248,39.7584889
-3060,2990,2991,0.0501432318630803,0.0501432318630803,-105.0434248,39.7584889,-105.0440114,39.7584876
-3061,2991,2992,0.788648410502006,0.788648410502006,-105.0440114,39.7584876,-105.0532374,39.7584692
-3062,2993,2994,0.01555628530979,0.01555628530979,-104.9953923,39.7608178,-104.995393,39.7606779
-3063,2994,2995,0.10729267423115,0.10729267423115,-104.995393,39.7606779,-104.9953975,39.759713
-13562,2999,2165,0.242533262128423,0.242533262128423,-105.0136746,39.7263954,-105.0140457,39.7285578
-3067,2998,3000,0.0998948824480635,0.0998948824480635,-104.9969577,39.7401458,-104.9961353,39.7407839
-3068,3000,3001,0.145910673725247,0.145910673725247,-104.9961353,39.7407839,-104.99492,39.7417051
-3069,3001,3002,0.147264770664277,0.147264770664277,-104.99492,39.7417051,-104.9937158,39.742652
-3070,3002,3003,0.145706831644125,0.145706831644125,-104.9937158,39.742652,-104.9925155,39.7435822
-3071,3003,3004,0.146381189481243,0.146381189481243,-104.9925155,39.7435822,-104.9912932,39.744504
-3073,3006,3007,0.143637545441942,0.143637545441942,-104.9900832,39.7454633,-104.9889069,39.7463856
-3074,3007,3008,0.14139337588105,0.14139337588105,-104.9889069,39.7463856,-104.9876315,39.7471951
-3075,3008,3009,0.0340034784472366,0.0340034784472366,-104.9876315,39.7471951,-104.9873284,39.7473931
-3076,3009,3010,0.117637494210671,0.117637494210671,-104.9873284,39.7473931,-104.9864574,39.7482121
-3077,3010,3011,0.1483412167568,0.1483412167568,-104.9864574,39.7482121,-104.9852889,39.7491983
-3078,3011,3012,0.146200597856632,0.146200597856632,-104.9852889,39.7491983,-104.9840976,39.7501416
-3079,3012,3013,0.146656153847153,0.146656153847153,-104.9840976,39.7501416,-104.9828772,39.7510685
-3080,3013,3014,0.219897120549826,0.219897120549826,-104.9828772,39.7510685,-104.9810635,39.7524708
-3081,3014,2686,0.0729664723843293,0.0729664723843293,-104.9810635,39.7524708,-104.9804627,39.7529369
-3082,2686,3015,0.146055074464899,0.146055074464899,-104.9804627,39.7529369,-104.9792691,39.7538767
-3083,3015,3016,0.115984680072215,0.115984680072215,-104.9792691,39.7538767,-104.9783073,39.7546124
-3084,3016,3017,0.0102106792826024,0.0102106792826024,-104.9783073,39.7546124,-104.9782228,39.7546773
-3085,3017,3018,0.0188093561808277,0.0188093561808277,-104.9782228,39.7546773,-104.9780672,39.7547969
-3087,3019,3020,0.14624208166964,0.14624208166964,-104.9768843,39.7557372,-104.9756854,39.7566754
-3088,3020,3021,0.149932974568378,0.149932974568378,-104.9756854,39.7566754,-104.974418,39.7576075
-3089,3021,2900,0.114654486829615,0.114654486829615,-104.974418,39.7576075,-104.9733518,39.7582331
-3091,3022,3023,0.0936947193853168,0.0936947193853168,-104.9472629,39.738954,-104.9461672,39.7389438
-3093,3024,3025,0.0922829109447797,0.0922829109447797,-104.9499105,39.7600818,-104.9488309,39.7600818
-3095,3026,3027,0.10419715248802,0.10419715248802,-104.9684276,39.7595114,-104.9672089,39.7594916
-3096,3027,3028,0.108587123231645,0.108587123231645,-104.9672089,39.7594916,-104.9659386,39.7594982
-3097,3028,3029,0.103455866634876,0.103455866634876,-104.9659386,39.7594982,-104.9647283,39.7594982
-3099,3030,3031,0.0828114972096423,0.0828114972096423,-104.9487906,39.7590818,-104.9478224,39.759056
-3100,3031,3032,0.0151385207198175,0.0151385207198175,-104.9478224,39.759056,-104.9476453,39.759056
-3102,3035,3036,0.131928682141755,0.131928682141755,-104.9468584,39.7590562,-104.9453153,39.7590334
-3103,3036,3037,0.0286281442546585,0.0286281442546585,-104.9453153,39.7590334,-104.9449805,39.75904
-3104,3037,3038,0.0830678583996061,0.0830678583996061,-104.9449805,39.75904,-104.9440088,39.7590496
-3105,3038,3039,0.0820487800074757,0.0820487800074757,-104.9440088,39.7590496,-104.9430494,39.7590268
-3107,3040,3041,0.0592379768525999,0.0592379768525999,-104.9641307,39.7594199,-104.9634377,39.7594223
-3108,3041,1041,0.101867076922678,0.101867076922678,-104.9634377,39.7594223,-104.962246,39.7594264
-3109,1041,3042,0.108431988254042,0.108431988254042,-104.962246,39.7594264,-104.9609775,39.7594308
-3110,3042,3043,0.103209130509255,0.103209130509255,-104.9609775,39.7594308,-104.9597701,39.759435
-3111,3043,3044,0.103439867243447,0.103439867243447,-104.9597701,39.759435,-104.95856,39.7594391
-3113,3045,3046,0.1080426022678,0.1080426022678,-104.9573829,39.7594492,-104.956119,39.7594399
-3114,3046,3047,0.106399445317148,0.106399445317148,-104.956119,39.7594399,-104.9548745,39.7594585
-3115,3047,2078,0.104328053424176,0.104328053424176,-104.9548745,39.7594585,-104.953654,39.7594605
-3116,2078,2675,0.103849131822114,0.103849131822114,-104.953654,39.7594605,-104.9524391,39.7594603
-3117,2675,3048,0.106371798877004,0.106371798877004,-104.9524391,39.7594603,-104.9511947,39.7594645
-3118,3048,3049,0.1089909908922,0.1089909908922,-104.9511947,39.7594645,-104.9499198,39.7594797
-3120,2995,3050,0.0829711714500804,0.0829711714500804,-104.9953975,39.759713,-104.9963681,39.7597212
-3123,3051,3052,0.0304368475861105,0.0304368475861105,-104.9721269,39.7594785,-104.971771,39.759487
-19556,10441,10561,0.00875730102663828,0.00875730102663828,-104.9883481,39.7091456,-104.9884504,39.7091486
-3124,3053,3054,0.10469695146486,0.10469695146486,-104.9708822,39.7594411,-104.9696608,39.7595114
-3125,3054,3026,0.105413327506124,0.105413327506124,-104.9696608,39.7595114,-104.9684276,39.7595114
-3127,3055,3056,0.0146859459125862,0.0146859459125862,-104.9406663,39.7601421,-104.9404947,39.7601356
-3128,3056,3057,0.0899179636493607,0.0899179636493607,-104.9404947,39.7601356,-104.9394429,39.7601485
-3129,3057,3058,0.0968918459632465,0.0968918459632465,-104.9394429,39.7601485,-104.9383099,39.7601749
-3130,3058,3059,0.0931803123592361,0.0931803123592361,-104.9383099,39.7601749,-104.9372198,39.7601749
-3131,3059,3060,0.0924628769882567,0.0924628769882567,-104.9372198,39.7601749,-104.9361384,39.7601551
-3132,3060,2004,0.0909779529022995,0.0909779529022995,-104.9361384,39.7601551,-104.9350741,39.7601485
-3134,3061,2758,0.0983285272926963,0.0983285272926963,-104.9339669,39.7601749,-104.9328167,39.7601881
-3135,2758,3062,0.094848132376921,0.094848132376921,-104.9328167,39.7601881,-104.9317072,39.760176
-3137,2284,3063,0.10273020958756,0.10273020958756,-104.9305594,39.7601749,-104.9293577,39.7601881
-3138,3063,3064,0.09684156688728,0.09684156688728,-104.9293577,39.7601881,-104.9282248,39.7601815
-3139,3064,2139,0.105654196010103,0.105654196010103,-104.9282248,39.7601815,-104.9269888,39.7601749
-3141,3065,3066,0.101995188106893,0.101995188106893,-104.9257357,39.7601617,-104.9245426,39.7601749
-4424,4133,950,0.17542265784203,0.17542265784203,-104.9505787,39.7305216,-104.9505701,39.7320992
-3142,3066,3067,1.00083609181461,1.00083609181461,-104.9245426,39.7601749,-104.912834,39.7601834
-3143,3068,3069,0.10392860568863,0.10392860568863,-104.9461768,39.7130666,-104.9449618,39.7130707
-3144,3069,3070,0.10232907709913,0.10232907709913,-104.9449618,39.7130707,-104.9437655,39.7130666
-3145,3070,3071,0.103927869583062,0.103927869583062,-104.9437655,39.7130666,-104.9425505,39.7130687
-3146,3071,3072,0.102097379803977,0.102097379803977,-104.9425505,39.7130687,-104.9413569,39.7130666
-3147,3072,3073,0.0487909895079958,0.0487909895079958,-104.9413569,39.7130666,-104.9407865,39.7130688
-3149,1294,3074,0.105333551259412,0.105333551259412,-104.9875234,39.7129763,-104.9862922,39.7129578
-3150,3074,3075,0.0524798747272766,0.0524798747272766,-104.9862922,39.7129578,-104.9856788,39.712948
-3151,3075,3076,0.0475858963921332,0.0475858963921332,-104.9856788,39.712948,-104.9851226,39.7129392
-3152,3076,3077,0.00514079080382434,0.00514079080382434,-104.9851226,39.7129392,-104.9850625,39.7129392
-3154,3078,3079,0.0117186508515134,0.0117186508515134,-104.9839851,39.7129498,-104.9838483,39.7129555
-3155,3079,3080,0.0860074021370197,0.0860074021370197,-104.9838483,39.7129555,-104.9828429,39.7129448
-3156,3080,3081,0.0112654570741388,0.0112654570741388,-104.9828429,39.7129448,-104.9827112,39.7129442
-3157,3081,3082,0.0998426271509478,0.0998426271509478,-104.9827112,39.7129442,-104.9815443,39.7129225
-3159,3083,3084,0.0978722553449722,0.0978722553449722,-104.9803943,39.7129167,-104.9792501,39.712914
-3161,3085,3086,0.0498003240048994,0.0498003240048994,-104.9786762,39.712912,-104.978094,39.71291
-3162,3086,3087,0.0499820755044021,0.0499820755044021,-104.978094,39.71291,-104.9775097,39.7129054
-3163,3087,1765,0.0500932715547668,0.0500932715547668,-104.9775097,39.7129054,-104.9769241,39.7129008
-3164,1765,3089,0.0453737460403596,0.0453737460403596,-104.9769241,39.7129008,-104.9763937,39.7128949
-3165,3089,3090,0.0566344564433548,0.0566344564433548,-104.9763937,39.7128949,-104.9757316,39.7128962
-3166,3090,3091,0.0479788729039099,0.0479788729039099,-104.9757316,39.7128962,-104.9751708,39.7128876
-3167,3091,1517,0.0504584819239423,0.0504584819239423,-104.9751708,39.7128876,-104.9745809,39.7128876
-3168,1517,3092,0.0513918113913408,0.0513918113913408,-104.9745809,39.7128876,-104.9739802,39.7128965
-3169,3092,3093,0.0524695902697227,0.0524695902697227,-104.9739802,39.7128965,-104.9733669,39.7129055
-3170,3093,1084,0.0829756278031258,0.0829756278031258,-104.9733669,39.7129055,-104.972397,39.7129187
-3171,1084,3094,0.018362425266723,0.018362425266723,-104.972397,39.7129187,-104.9721825,39.7129121
-3172,3094,3095,0.100037197959638,0.100037197959638,-104.9721825,39.7129121,-104.971013,39.7129167
-3173,3095,3096,0.0986501993185581,0.0986501993185581,-104.971013,39.7129167,-104.9698598,39.7129284
-3174,3096,3097,0.100130714805898,0.100130714805898,-104.9698598,39.7129284,-104.9686892,39.7129319
-3175,3097,2046,0.103528392648025,0.103528392648025,-104.9686892,39.7129319,-104.9674789,39.7129253
-3176,2046,3098,0.0976518708062817,0.0976518708062817,-104.9674789,39.7129253,-104.9663374,39.7129121
-3177,3098,3099,0.0995509890492463,0.0995509890492463,-104.9663374,39.7129121,-104.9652044,39.7127074
-3179,1954,3100,0.060604506910361,0.060604506910361,-104.9384863,39.7130525,-104.9377781,39.7130688
-3182,3102,3103,0.0990114382918269,0.0990114382918269,-104.935134,39.713087,-104.9339765,39.713093
-3183,3103,3104,0.100593787088956,0.100593787088956,-104.9339765,39.713093,-104.9328006,39.7130798
-3184,3104,3105,0.0983789631442794,0.0983789631442794,-104.9328006,39.7130798,-104.9316505,39.7130864
-3185,3105,2848,0.0976433646550276,0.0976433646550276,-104.9316505,39.7130864,-104.930509,39.7130798
-3186,2848,3106,0.102064870879311,0.102064870879311,-104.930509,39.7130798,-104.9293159,39.713093
-3187,3106,3107,0.10100271733246,0.10100271733246,-104.9293159,39.713093,-104.9281351,39.7130901
-3188,3107,3108,0.0995828832367363,0.0995828832367363,-104.9281351,39.7130901,-104.9269709,39.7130932
-3189,3108,2942,0.101438732689929,0.101438732689929,-104.9269709,39.7130932,-104.925785,39.7130954
-3190,2942,3109,0.100378814460195,0.100378814460195,-104.925785,39.7130954,-104.9246115,39.7130913
-3191,3109,3110,1.25206634961555,1.25206634961555,-104.9246115,39.7130913,-104.9101331,39.7147489
-3192,3111,3112,0.015422388825789,0.015422388825789,-104.9593153,39.7129376,-104.959135,39.7129374
-3193,3112,3113,0.11412427509118,0.11412427509118,-104.959135,39.7129374,-104.9578008,39.7129346
-3194,3113,3114,0.468645573431598,0.468645573431598,-104.9578008,39.7129346,-104.9523224,39.712881
-3196,2023,3115,0.177146580591063,0.177146580591063,-104.9350998,39.7162443,-104.9351095,39.7146512
-3197,3115,3102,0.173943728587952,0.173943728587952,-104.9351095,39.7146512,-104.935134,39.713087
-3198,3102,3116,0.193451028525805,0.193451028525805,-104.935134,39.713087,-104.9350959,39.7113475
-3200,3117,1806,0.211443534426126,0.211443534426126,-104.935335,39.696587,-104.935235,39.694687
-3201,1806,3118,0.193022911848757,0.193022911848757,-104.935235,39.694687,-104.9350589,39.6929564
-3203,3119,3120,0.0940041909856305,0.0940041909856305,-104.9350503,39.6919459,-104.9350503,39.6911005
-3204,3120,3121,0.197561396619787,0.197561396619787,-104.9350503,39.6911005,-104.9350417,39.6893238
-3206,3122,3123,0.200799900699528,0.200799900699528,-104.9348207,39.6893133,-104.9348357,39.6875075
-3207,3124,3125,0.200863237154928,0.200863237154928,-104.9654024,39.718348,-104.9653769,39.7201543
-3208,3125,3126,0.201874389323119,0.201874389323119,-104.9653769,39.7201543,-104.9653769,39.7219698
-3210,3127,3128,0.0750470474178356,0.0750470474178356,-104.9663652,39.7296534,-104.9658779,39.7290921
-3211,3128,3131,0.0761135403806392,0.0761135403806392,-104.9658779,39.7290921,-104.9654579,39.7296956
-3213,3029,3132,0.132611387982682,0.132611387982682,-104.9647283,39.7594982,-104.9647249,39.7606908
-3214,3132,3133,0.00539409864485362,0.00539409864485362,-104.9647249,39.7606908,-104.9647236,39.7607393
-3215,3133,3134,0.139160450695908,0.139160450695908,-104.9647236,39.7607393,-104.9647236,39.7619908
-3216,3134,1160,0.139291641031025,0.139291641031025,-104.9647236,39.7619908,-104.9646785,39.763243
-3217,1160,879,0.139609262878975,0.139609262878975,-104.9646785,39.763243,-104.9647163,39.7644982
-3218,879,3135,0.138493325710101,0.138493325710101,-104.9647163,39.7644982,-104.9647176,39.7657437
-3219,3135,2787,0.134090008076189,0.134090008076189,-104.9647176,39.7657437,-104.9647189,39.7669496
-3220,2787,3136,0.1321642245327,0.1321642245327,-104.9647189,39.7669496,-104.9647008,39.7681381
-3221,3136,3137,0.21408080552497,0.21408080552497,-104.9647008,39.7681381,-104.9647229,39.7700633
-3222,3137,3138,0.144895915790921,0.144895915790921,-104.9647229,39.7700633,-104.9646947,39.7713662
-3223,3138,3139,0.169628584853264,0.169628584853264,-104.9646947,39.7713662,-104.9647005,39.7728917
-3226,3141,3142,0.202888440515448,0.202888440515448,-104.9645304,39.7819277,-104.9645414,39.7837523
-3227,3142,2878,0.162092717607055,0.162092717607055,-104.9645414,39.7837523,-104.9645156,39.7852099
-3251,3162,2365,0.110303719018863,0.110303719018863,-104.9814669,39.7183289,-104.98145,39.7193208
-3254,3164,3165,0.240177393696762,0.240177393696762,-105.0017005,39.7407804,-105.0030875,39.7426587
-3255,3165,3166,0.102768151984011,0.102768151984011,-105.0030875,39.7426587,-105.0037031,39.7434525
-3256,3166,3167,0.0509818546092244,0.0509818546092244,-105.0037031,39.7434525,-105.00401,39.7438456
-3258,3168,3169,0.0591373244934598,0.0591373244934598,-105.0012883,39.7488943,-105.0010939,39.7483839
-3259,3169,3170,0.0530870196657507,0.0530870196657507,-105.0010939,39.7483839,-105.0006969,39.7480168
-3261,3171,3172,0.201914360897617,0.201914360897617,-104.9534926,39.6965864,-104.9535117,39.6947706
-3262,3172,3173,0.203130900823478,0.203130900823478,-104.9535117,39.6947706,-104.953511,39.6929438
-3263,3173,3174,0.201562825315852,0.201562825315852,-104.953511,39.6929438,-104.9535355,39.6911312
-3264,3174,3175,0.19958273918251,0.19958273918251,-104.9535355,39.6911312,-104.9535015,39.6893365
-3265,3175,3177,0.402921101557674,0.402921101557674,-104.9535015,39.6893365,-104.9535278,39.685713
-3266,3178,3179,0.0905536808669309,0.0905536808669309,-104.9535191,39.7038314,-104.9535963,39.7030192
-3267,3179,3180,0.0577627490058349,0.0577627490058349,-104.9535963,39.7030192,-104.9540885,39.7026636
-3268,3180,3181,0.0505235668696686,0.0505235668696686,-104.9540885,39.7026636,-104.9546249,39.7024735
-3269,3181,3182,0.065160532538722,0.065160532538722,-104.9546249,39.7024735,-104.9552273,39.7021149
-3270,3182,3183,0.00793078546182679,0.00793078546182679,-104.9552273,39.7021149,-104.955269,39.7020512
-3271,3183,3184,0.0531842364372946,0.0531842364372946,-104.955269,39.7020512,-104.9555361,39.7016193
-3273,2386,3186,0.0378622155960126,0.0378622155960126,-104.9468949,39.7115125,-104.9464561,39.7114678
-3274,3186,3187,0.0069150542380481,0.0069150542380481,-104.9464561,39.7114678,-104.946376,39.7114762
-3275,3187,3188,0.0174713630038869,0.0174713630038869,-104.946376,39.7114762,-104.9461736,39.7114973
-3277,3189,3190,0.10095397068423,0.10095397068423,-104.9875502,39.7111482,-104.98637,39.7111462
-3278,3190,3191,0.102948552858793,0.102948552858793,-104.98637,39.7111462,-104.9851665,39.7111408
-3279,3191,3192,0.099117357243018,0.099117357243018,-104.9851665,39.7111408,-104.9840078,39.7111342
-3280,3192,3193,0.10499121023248,0.10499121023248,-104.9840078,39.7111342,-104.9827804,39.7111342
-3282,3194,3195,0.0985672231580753,0.0985672231580753,-104.9815359,39.7111143,-104.9803836,39.7111141
-3283,3195,3196,0.0975023503923766,0.0975023503923766,-104.9803836,39.7111141,-104.9792438,39.7111058
-16511,8899,8896,0.0458243741253751,0.0458243741253751,-105.0050563,39.7433465,-105.0048016,39.7429839
-3284,3196,3197,0.0505627463090716,0.0505627463090716,-104.9792438,39.7111058,-104.9786527,39.7111042
-3285,3197,3198,0.0500221717072617,0.0500221717072617,-104.9786527,39.7111042,-104.9780683,39.7110879
-3286,3198,3199,0.046867135973938,0.046867135973938,-104.9780683,39.7110879,-104.9775204,39.7110879
-3287,3199,1768,0.0529832159562647,0.0529832159562647,-104.9775204,39.7110879,-104.976901,39.7110879
-3288,1768,3200,0.0470467690925653,0.0470467690925653,-104.976901,39.7110879,-104.976351,39.7110879
-3289,3200,3201,0.0524586560775799,0.0524586560775799,-104.976351,39.7110879,-104.9757389,39.711117
-3290,3201,3202,0.0495946350720587,0.0495946350720587,-104.9757389,39.711117,-104.9751601,39.711091
-3291,3202,1518,0.052984641558086,0.052984641558086,-104.9751601,39.711091,-104.9745407,39.7110945
-3292,1518,3203,0.100125608990258,0.100125608990258,-104.9745407,39.7110945,-104.9733702,39.7110995
-3293,3203,1085,0.0831191573838339,0.0831191573838339,-104.9733702,39.7110995,-104.9723985,39.7110973
-3294,1085,3204,0.01719627237498,0.01719627237498,-104.9723985,39.7110973,-104.9721975,39.7110945
-3295,3204,3205,0.100278521536605,0.100278521536605,-104.9721975,39.7110945,-104.9710252,39.7110973
-3296,3205,3206,0.100159169300764,0.100159169300764,-104.9710252,39.7110973,-104.9698543,39.7111011
-3297,3206,3207,0.0980766730481921,0.0980766730481921,-104.9698543,39.7111011,-104.9687078,39.7111105
-3299,2047,3208,0.0998503328239714,0.0998503328239714,-104.9674682,39.7111011,-104.9663009,39.7111011
-3300,3208,3209,0.0991174142787685,0.0991174142787685,-104.9663009,39.7111011,-104.9651422,39.7110945
-3301,3209,3210,0.0465862087261248,0.0465862087261248,-104.9651422,39.7110945,-104.9645976,39.7110977
-3303,3211,3212,0.0483226107842397,0.0483226107842397,-104.9640093,39.7111011,-104.9634444,39.7110979
-3304,3212,3213,0.0508033572812722,0.0508033572812722,-104.9634444,39.7110979,-104.9628505,39.7110945
-3305,3213,3214,0.0520095145740976,0.0520095145740976,-104.9628505,39.7110945,-104.9622425,39.711098
-3307,3215,3216,0.047636983079693,0.047636983079693,-104.9616918,39.7111011,-104.9611349,39.7111011
-3308,3216,3217,0.00228390635402469,0.00228390635402469,-104.9611349,39.7111011,-104.9611082,39.7111011
-3309,3217,3218,0.0492156902021281,0.0492156902021281,-104.9611082,39.7111011,-104.9605331,39.7111143
-3310,3218,3219,0.105720878983862,0.105720878983862,-104.9605331,39.7111143,-104.9592972,39.7111077
-3312,3220,3221,0.135734479783406,0.135734479783406,-105.0064274,39.771733,-105.0080156,39.7717323
-3313,3221,2519,0.14595602798476,0.14595602798476,-105.0080156,39.7717323,-105.0097234,39.7717314
-3314,2519,3222,0.126165217374209,0.126165217374209,-105.0097234,39.7717314,-105.0111996,39.7717239
-3315,3222,1229,0.098841689459618,0.098841689459618,-105.0111996,39.7717239,-105.0123561,39.7717298
-3316,1229,3223,0.098924974953348,0.098924974953348,-105.0123561,39.7717298,-105.0135136,39.7717296
-3317,3223,2174,0.100839404349716,0.100839404349716,-105.0135136,39.7717296,-105.0146935,39.7717289
-3318,2174,3224,0.101432888438354,0.101432888438354,-105.0146935,39.7717289,-105.0158803,39.771721
-3319,3224,3225,0.137343472225008,0.137343472225008,-105.0158803,39.771721,-105.0174873,39.7717281
-3321,3226,379,0.0754564811292303,0.0754564811292303,-105.0189401,39.7717271,-105.019823,39.7717267
-3322,379,63,0.0417835231628563,0.0417835231628563,-105.019823,39.7717267,-105.0203119,39.7717265
-3323,63,1255,0.0152981335887719,0.0152981335887719,-105.0203119,39.7717265,-105.0204909,39.7717263
-3326,3228,3229,0.0836292502069327,0.0836292502069327,-105.0315008,39.7718744,-105.0324789,39.7718967
-3327,3229,3230,0.0485562677029858,0.0485562677029858,-105.0324789,39.7718967,-105.0330468,39.7719096
-3330,3232,3233,0.105369806952797,0.105369806952797,-104.993638,39.7717733,-104.9948707,39.7717558
-3331,3233,3234,0.0244901910381055,0.0244901910381055,-104.9948707,39.7717558,-104.9951572,39.7717601
-3332,3235,3236,0.101967463967826,0.101967463967826,-104.9982618,39.771756,-104.9994549,39.771756
-3333,3236,3237,0.10049747789636,0.10049747789636,-104.9994549,39.771756,-105.0006308,39.771756
-3334,3237,3238,0.0983034665163014,0.0983034665163014,-105.0006308,39.771756,-105.0017809,39.7717428
-3335,3238,3239,0.103439327677052,0.103439327677052,-105.0017809,39.7717428,-105.0029911,39.771756
-3336,3239,715,0.100109252929192,0.100109252929192,-105.0029911,39.771756,-105.0041615,39.7717924
-3337,715,3240,0.10857516210103,0.10857516210103,-105.0041615,39.7717924,-105.0054318,39.7718056
-3338,3240,3241,0.0836693243428755,0.0836693243428755,-105.0054318,39.7718056,-105.0064102,39.7718319
-3340,1256,2714,0.204938708369458,0.204938708369458,-105.0204902,39.7720858,-105.0228875,39.7720427
-3341,2714,3242,0.194775016549959,0.194775016549959,-105.0228875,39.7720427,-105.0251665,39.7720519
-3343,3243,3244,0.104619278832535,0.104619278832535,-104.9874858,39.7038766,-104.9862629,39.7038708
-3344,3244,3245,0.0999091629456622,0.0999091629456622,-104.9862629,39.7038708,-104.9850951,39.7038613
-3345,3245,3246,0.0969207243261653,0.0969207243261653,-104.9850951,39.7038613,-104.9839622,39.7038547
-3346,3246,3247,0.100620613481727,0.100620613481727,-104.9839622,39.7038547,-104.9827863,39.7038745
-3347,3247,3248,0.051818780315465,0.051818780315465,-104.9827863,39.7038745,-104.9821867,39.7039406
-3348,3248,3249,0.0493068623564548,0.0493068623564548,-104.9821867,39.7039406,-104.9816104,39.7039471
-3349,3249,3250,0.102061915203609,0.102061915203609,-104.9816104,39.7039471,-104.9804174,39.7039537
-3350,3250,3251,0.0474417721331526,0.0474417721331526,-104.9804174,39.7039537,-104.9798629,39.70396
-3351,3251,3252,0.0496832213808208,0.0496832213808208,-104.9798629,39.70396,-104.9792822,39.7039665
-3352,3252,3253,0.00274646412019378,0.00274646412019378,-104.9792822,39.7039665,-104.9792501,39.7039669
-3353,3253,3254,0.0454267490135207,0.0454267490135207,-104.9792501,39.7039669,-104.9787191,39.7039689
-3354,3254,3255,0.00458544852460102,0.00458544852460102,-104.9787191,39.7039689,-104.9786655,39.7039691
-3355,3255,3256,0.0483268582508211,0.0483268582508211,-104.9786655,39.7039691,-104.9781006,39.7039712
-3357,3257,3258,0.0459440862493274,0.0459440862493274,-104.9302161,39.7037522,-104.9296823,39.7037068
-3358,3258,3259,0.236332489020417,0.236332489020417,-104.9296823,39.7037068,-104.9269572,39.7040556
-3360,3260,2735,0.173472989255867,0.173472989255867,-104.9578793,39.7047229,-104.9558537,39.7046503
-3362,594,2050,0.105283533842597,0.105283533842597,-104.9686935,39.7038655,-104.9674629,39.7038542
-3363,2050,3261,0.0509100007310826,0.0509100007310826,-104.9674629,39.7038542,-104.9668678,39.7038549
-3364,3261,3262,0.0467523465641757,0.0467523465641757,-104.9668678,39.7038549,-104.9663213,39.7038542
-3365,3262,3263,0.0481309278210478,0.0481309278210478,-104.9663213,39.7038542,-104.9657587,39.7038574
-3366,3263,3264,0.051732585346973,0.051732585346973,-104.9657587,39.7038574,-104.965154,39.7038608
-3367,3264,3265,0.0457622961694799,0.0457622961694799,-104.965154,39.7038608,-104.9646191,39.703865
-3368,3265,3266,0.0530171123380122,0.0530171123380122,-104.9646191,39.703865,-104.9639994,39.7038698
-3369,3266,3267,0.0451783444295864,0.0451783444295864,-104.9639994,39.7038698,-104.9634713,39.7038687
-3370,3267,3268,0.0542978455447466,0.0542978455447466,-104.9634713,39.7038687,-104.9628366,39.7038674
-3371,3268,3269,0.0466844058034087,0.0466844058034087,-104.9628366,39.7038674,-104.962291,39.7038591
-3372,3269,3270,0.050646295110284,0.050646295110284,-104.962291,39.7038591,-104.9616991,39.70385
-3373,3270,3271,0.0484988623690369,0.0484988623690369,-104.9616991,39.70385,-104.9611322,39.7038533
-3374,3271,3272,0.0498932625841468,0.0498932625841468,-104.9611322,39.7038533,-104.960549,39.7038566
-3375,3272,3273,0.0470944745658083,0.0470944745658083,-104.960549,39.7038566,-104.9599985,39.7038566
-3376,3273,3274,0.0579078107783869,0.0579078107783869,-104.9599985,39.7038566,-104.9593216,39.7038566
-3377,3274,3275,0.151893561253266,0.151893561253266,-104.9593216,39.7038566,-104.9575461,39.7038494
-3378,3275,3276,0.0516549077274405,0.0516549077274405,-104.9575461,39.7038494,-104.9569423,39.703847
-3379,3276,2734,0.0976564411094966,0.0976564411094966,-104.9569423,39.703847,-104.9558008,39.7038404
-3380,2734,3277,0.0486100790727351,0.0486100790727351,-104.9558008,39.7038404,-104.9552326,39.7038437
-3381,3277,3278,0.0497906140365211,0.0497906140365211,-104.9552326,39.7038437,-104.9546506,39.703847
-3382,3278,3279,0.0484124404037645,0.0484124404037645,-104.9546506,39.703847,-104.9540847,39.703845
-3383,3279,3280,0.00653599515433254,0.00653599515433254,-104.9540847,39.703845,-104.9540083,39.7038447
-3384,3280,3178,0.0418764820732136,0.0418764820732136,-104.9540083,39.7038447,-104.9535191,39.7038314
-3385,3178,3284,0.0979449587868123,0.0979449587868123,-104.9535191,39.7038314,-104.9523742,39.7038339
-3386,3284,3285,0.201022039935831,0.201022039935831,-104.9523742,39.7038339,-104.9500244,39.7038338
-3389,3287,2316,0.156303067302058,0.156303067302058,-104.9490802,39.7038404,-104.9472534,39.7038645
-20281,10719,10710,0.0549191742699874,0.0549191742699874,-105.0441026,39.7730223,-105.0441026,39.7735162
-3390,2316,3288,0.10952595107857,0.10952595107857,-104.9472534,39.7038645,-104.9459732,39.7038536
-3391,3288,3289,0.0403941356128906,0.0403941356128906,-104.9459732,39.7038536,-104.9455011,39.7038602
-3392,3289,3290,0.0912238346425634,0.0912238346425634,-104.9455011,39.7038602,-104.9444349,39.7038735
-3393,3290,3291,0.0816082032445177,0.0816082032445177,-104.9444349,39.7038735,-104.9434841,39.703814
-3394,3291,3292,0.0169509581328033,0.0169509581328033,-104.9434841,39.703814,-104.9432867,39.7038272
-3395,3292,3293,0.0433466637454668,0.0433466637454668,-104.9432867,39.7038272,-104.9427803,39.703814
-3396,3293,3294,0.0186582685984772,0.0186582685984772,-104.9427803,39.703814,-104.9425622,39.7038146
-3397,3294,3295,0.152140762364393,0.152140762364393,-104.9425622,39.7038146,-104.9407838,39.7038199
-3403,3299,1325,0.177116632986756,0.177116632986756,-105.0432684,39.7149673,-105.0432523,39.7133745
-3404,1325,1381,0.178046664647513,0.178046664647513,-105.0432523,39.7133745,-105.0432442,39.7117733
-3406,1057,3300,0.119136901138604,0.119136901138604,-105.043349,39.701089,-105.0433583,39.7021604
-3408,3301,1581,0.141640668502809,0.141640668502809,-105.0432038,39.6894869,-105.0432085,39.6882131
-3409,1581,3302,0.308989164663259,0.308989164663259,-105.0432085,39.6882131,-105.0432162,39.6854343
-3411,3304,3305,0.143837220516125,0.143837220516125,-104.9886307,39.7573647,-104.9874361,39.7582757
-3412,3305,3306,0.147698693465714,0.147698693465714,-104.9874361,39.7582757,-104.9862237,39.7592221
-3414,3307,3308,0.146426311775338,0.146426311775338,-104.985009,39.7601612,-104.983803,39.7610964
-3415,3308,3309,0.146463761248984,0.146463761248984,-104.983803,39.7610964,-104.9825927,39.7620288
-3416,3309,3310,0.146549783304075,0.146549783304075,-104.9825927,39.7620288,-104.9813837,39.7629633
-3417,3310,2029,0.145425360285073,0.145425360285073,-104.9813837,39.7629633,-104.9801901,39.7638953
-3418,2029,3311,0.146713513284486,0.146713513284486,-104.9801901,39.7638953,-104.9789777,39.7648293
-3419,3311,634,0.143866210964815,0.143866210964815,-104.9789777,39.7648293,-104.9777895,39.7657457
-3420,634,3312,0.147112545494359,0.147112545494359,-104.9777895,39.7657457,-104.9765745,39.7666828
-3421,3312,3313,0.145900102395242,0.145900102395242,-104.9765745,39.7666828,-104.9753728,39.7676147
-3422,3313,2321,0.147128656269274,0.147128656269274,-104.9753728,39.7676147,-104.9741575,39.7685518
-3424,3314,3315,0.0970240945457023,0.0970240945457023,-105.0159395,39.7426917,-105.0155552,39.7435127
-3425,3315,2190,0.185651929243496,0.185651929243496,-105.0155552,39.7435127,-105.0139689,39.7423726
-3427,737,1557,0.13315596414531,0.13315596414531,-104.960283,39.7764662,-104.9602842,39.7776637
-3429,3316,3317,0.0821429797668101,0.0821429797668101,-104.960267,39.7804939,-104.9602584,39.7812326
-3434,3321,3322,0.579886710164932,0.579886710164932,-104.957135,39.788086,-104.9570057,39.7933001
-3436,3323,3324,0.139196729808835,0.139196729808835,-104.9573156,39.7544732,-104.9573671,39.7557244
-3438,3325,3326,0.13668278082176,0.13668278082176,-104.95735,39.7569806,-104.9573414,39.7582098
-3439,3326,3045,0.137860640994287,0.137860640994287,-104.9573414,39.7582098,-104.9573829,39.7594492
-3440,3045,3327,0.13778919161955,0.13778919161955,-104.9573829,39.7594492,-104.9573341,39.7606878
-3441,3327,3328,0.00447003605120276,0.00447003605120276,-104.9573341,39.7606878,-104.9573341,39.760728
-3442,3328,3329,0.0233867925544547,0.0233867925544547,-104.9573341,39.760728,-104.9573301,39.7609383
-3443,3329,3330,0.116012449407873,0.116012449407873,-104.9573301,39.7609383,-104.9573395,39.7619816
-3444,3330,1166,0.139882774592672,0.139882774592672,-104.9573395,39.7619816,-104.957304,39.7632393
-3445,1166,886,0.137525679366119,0.137525679366119,-104.957304,39.7632393,-104.9573328,39.7644759
-3446,886,3332,0.139657446365043,0.139657446365043,-104.9573328,39.7644759,-104.95735,39.7657318
-3447,3332,2793,0.133361291612613,0.133361291612613,-104.95735,39.7657318,-104.9573362,39.7669311
-3448,2793,3333,0.132228102569741,0.132228102569741,-104.9573362,39.7669311,-104.9573212,39.7681202
-3450,3334,3335,0.0903059057199572,0.0903059057199572,-104.9574709,39.7328847,-104.9574452,39.7336966
-3451,3335,3336,0.154418186694308,0.154418186694308,-104.9574452,39.7336966,-104.9574365,39.7350853
-3452,3336,3337,0.192225493046604,0.192225493046604,-104.9574365,39.7350853,-104.9574002,39.7368138
-3453,3337,3338,0.174660133594583,0.174660133594583,-104.9574002,39.7368138,-104.9574371,39.7383843
-3454,3338,3339,0.202477883587996,0.202477883587996,-104.9574371,39.7383843,-104.9573922,39.7402049
-3455,3339,3340,0.0759856229646665,0.0759856229646665,-104.9573922,39.7402049,-104.9569483,39.7407969
-3456,3340,3341,0.00965813264254578,0.00965813264254578,-104.9569483,39.7407969,-104.9568365,39.7408093
-3458,3342,1191,0.166878049186437,0.166878049186437,-104.9578337,39.7256186,-104.9578631,39.7271192
-3459,1191,3343,0.0216063183857929,0.0216063183857929,-104.9578631,39.7271192,-104.9578657,39.7273135
-3460,3343,3344,0.200920604325059,0.200920604325059,-104.9578657,39.7273135,-104.9578774,39.7291204
-3462,2346,3345,0.174959253236807,0.174959253236807,-104.95708,39.7194068,-104.957017,39.7209795
-3463,3345,1535,0.0463919707335885,0.0463919707335885,-104.957017,39.7209795,-104.95706,39.7213954
-3465,3346,3347,0.27909963341584,0.27909963341584,-104.9571645,39.7728928,-104.9571698,39.7754028
-3466,3347,740,0.112084486383373,0.112084486383373,-104.9571698,39.7754028,-104.9571699,39.7764108
-3467,740,1560,0.139918597194563,0.139918597194563,-104.9571699,39.7764108,-104.9571611,39.7776691
-3468,1560,3348,0.140278682022104,0.140278682022104,-104.9571611,39.7776691,-104.9571942,39.7789304
-3469,3348,3349,0.121438604958881,0.121438604958881,-104.9571942,39.7789304,-104.9571502,39.780022
-3471,3350,3351,0.173966017570494,0.173966017570494,-104.9570341,39.7225614,-104.9570255,39.7241259
-3472,3351,3352,0.16543284170321,0.16543284170321,-104.9570255,39.7241259,-104.9570447,39.7256136
-3474,3353,3354,0.201189633952299,0.201189633952299,-104.9338095,39.725615,-104.9338255,39.7274243
-3477,3356,3357,0.174637614655306,0.174637614655306,-104.9339641,39.7162382,-104.9339472,39.7178087
-3479,2467,3359,0.203720276949683,0.203720276949683,-104.9339464,39.7474085,-104.9339447,39.7492406
-3480,3359,3360,0.200874146006411,0.200874146006411,-104.9339447,39.7492406,-104.93395,39.7510471
-3481,3360,795,0.199720493083652,0.199720493083652,-104.93395,39.7510471,-104.9339366,39.7528432
-3482,795,3361,0.203163577363555,0.203163577363555,-104.9339366,39.7528432,-104.9339125,39.7546702
-3484,3362,3363,0.203261629260278,0.203261629260278,-104.9338998,39.7564865,-104.9339411,39.7583142
-3485,3363,3061,0.206912153397241,0.206912153397241,-104.9339411,39.7583142,-104.9339669,39.7601749
-3486,3061,3364,0.186005329793712,0.186005329793712,-104.9339669,39.7601749,-104.9339093,39.7618471
-3488,3365,1140,0.135699508009882,0.135699508009882,-104.93438,39.7620028,-104.9343976,39.7632231
-3490,907,3366,0.12816779719188,0.12816779719188,-104.934389,39.7644899,-104.9343764,39.7656425
-3492,3367,1297,0.200952363448705,0.200952363448705,-104.993544,39.7147942,-104.993537,39.712987
-3494,3368,3369,0.101405416836813,0.101405416836813,-104.9939645,39.7165966,-104.994016,39.7156855
-3495,3369,3370,0.0983850243457341,0.0983850243457341,-104.994016,39.7156855,-104.9939989,39.7148008
-3497,3371,3372,0.0654246270475212,0.0654246270475212,-104.9267742,39.7019885,-104.9262421,39.7015659
-3498,3372,2939,0.0903071880553539,0.0903071880553539,-104.9262421,39.7015659,-104.92577,39.7008395
-3499,2939,3373,0.0855248234583031,0.0855248234583031,-104.92577,39.7008395,-104.9252722,39.7001725
-3500,3373,59,0.083918142781954,0.083918142781954,-104.9252722,39.7001725,-104.9247401,39.6995385
-3502,3374,3375,0.253631602277532,0.253631602277532,-104.9240963,39.6988121,-104.9216081,39.6975721
-3503,3376,3377,0.201161683466984,0.201161683466984,-105.0346426,39.7329669,-105.0345825,39.7347754
-3505,3378,623,0.0117822953093903,0.0117822953093903,-105.0345825,39.7364651,-105.0346068,39.7365694
-3506,623,3379,0.132533255410588,0.132533255410588,-105.0346068,39.7365694,-105.0346077,39.7377613
-3507,3379,3380,0.0779035335014782,0.0779035335014782,-105.0346077,39.7377613,-105.0346105,39.7384619
-3508,3380,3381,0.206545256567466,0.206545256567466,-105.0346105,39.7384619,-105.0346043,39.7403194
-20694,10906,10909,0.0421787313564029,0.0421787313564029,-105.0403806,39.7653734,-105.0401144,39.7656928
-3509,3381,3382,0.13283549460514,0.13283549460514,-105.0346043,39.7403194,-105.0345957,39.741514
-3510,3382,3383,0.135569425081515,0.135569425081515,-105.0345957,39.741514,-105.0346003,39.7427332
-3511,3383,3384,0.136156970349478,0.136156970349478,-105.0346003,39.7427332,-105.0345657,39.7439574
-3512,3384,3385,0.132775661568888,0.132775661568888,-105.0345657,39.7439574,-105.0345837,39.7451514
-3514,2584,3386,0.177011208890761,0.177011208890761,-105.0350986,39.7229295,-105.0350981,39.7245214
-3515,3386,3387,0.0885846426355864,0.0885846426355864,-105.0350981,39.7245214,-105.0351109,39.725318
-3518,3389,3390,0.176205550995696,0.176205550995696,-105.034904,39.7165547,-105.0349211,39.7181393
-3519,3390,3391,0.169210992899206,0.169210992899206,-105.0349211,39.7181393,-105.0349049,39.719661
-3520,3391,3392,0.0099077669914251,0.0099077669914251,-105.0349049,39.719661,-105.034904,39.7197501
-3521,3392,1849,0.175456016508954,0.175456016508954,-105.034904,39.7197501,-105.0349126,39.721328
-3522,1849,2583,0.178501996899051,0.178501996899051,-105.0349126,39.721328,-105.0349367,39.7229332
-3524,600,3393,0.2153977841733,0.2153977841733,-105.0351121,39.7257688,-105.0351232,39.7277059
-3526,3394,3395,0.118920951518272,0.118920951518272,-105.0351404,39.7282472,-105.0351232,39.7293166
-3527,3395,3396,0.142989811640976,0.142989811640976,-105.0351232,39.7293166,-105.0351361,39.7306025
-3528,3396,3397,0.262177718796624,0.262177718796624,-105.0351361,39.7306025,-105.0351232,39.7329603
-3530,14,3398,0.133564321671034,0.133564321671034,-105.0345689,39.7463686,-105.0345861,39.7475697
-3531,3398,3399,0.133563180552006,0.133563180552006,-105.0345861,39.7475697,-105.0346118,39.7487707
-3532,3399,3400,0.135746766447532,0.135746766447532,-105.0346118,39.7487707,-105.0346118,39.7499915
-3533,3400,3401,0.133513247236878,0.133513247236878,-105.0346118,39.7499915,-105.0346192,39.7511922
-3534,3401,3402,0.0998328095575455,0.0998328095575455,-105.0346192,39.7511922,-105.0346118,39.75209
-3535,3402,3403,0.0352154332682272,0.0352154332682272,-105.0346118,39.75209,-105.0346118,39.7524067
-3536,3403,2405,0.0667725534497617,0.0667725534497617,-105.0346118,39.7524067,-105.0346118,39.7530072
-3537,2405,3404,0.0682403264820305,0.0682403264820305,-105.0346118,39.7530072,-105.0346118,39.7536209
-3538,3404,3405,0.033013773721009,0.033013773721009,-105.0346118,39.7536209,-105.0346118,39.7539178
-3539,3405,3409,0.0499933274562477,0.0499933274562477,-105.0346118,39.7539178,-105.0346129,39.7543674
-3540,3409,3410,0.0543299225353451,0.0543299225353451,-105.0346129,39.7543674,-105.034614,39.754856
-3541,3410,1767,0.0526619512572465,0.0526619512572465,-105.034614,39.754856,-105.0346147,39.7553296
-3542,1767,3411,0.150417295173728,0.150417295173728,-105.0346147,39.7553296,-105.034602,39.7566823
-3543,3411,2979,0.204011051874628,0.204011051874628,-105.034602,39.7566823,-105.0346118,39.758517
-3544,2979,656,0.0515792906446319,0.0515792906446319,-105.0346118,39.758517,-105.0346018,39.7589808
-3546,1887,591,0.0491592770696459,0.0491592770696459,-105.0346033,39.7594473,-105.0346033,39.7598894
-3547,591,3412,0.0481379602388448,0.0481379602388448,-105.0346033,39.7598894,-105.034608,39.7603223
-3548,3412,3413,0.102266489872996,0.102266489872996,-105.034608,39.7603223,-105.0346118,39.761242
-3549,3413,1888,0.0486842125387167,0.0486842125387167,-105.0346118,39.761242,-105.0346054,39.7616798
-3550,1888,3414,0.0510943840977224,0.0510943840977224,-105.0346054,39.7616798,-105.0346033,39.7621393
-3551,3414,3415,0.00919583632372114,0.00919583632372114,-105.0346033,39.7621393,-105.0346035,39.762222
-3552,3415,3416,0.0353489043837471,0.0353489043837471,-105.0346035,39.762222,-105.0346041,39.7625399
-17077,3568,8074,0.699339640197117,0.699339640197117,-104.9616097,39.7544552,-104.9615934,39.7607445
-3553,3416,3417,0.050093361124945,0.050093361124945,-105.0346041,39.7625399,-105.0346033,39.7629904
-3554,3417,3418,0.0498820440925909,0.0498820440925909,-105.0346033,39.7629904,-105.0346033,39.763439
-3555,3418,3419,0.0498984530952944,0.0498984530952944,-105.0346033,39.763439,-105.0346118,39.7638877
-3556,3419,3420,0.00880663819045291,0.00880663819045291,-105.0346118,39.7638877,-105.0346118,39.7639669
-3557,3420,3421,0.0410819827191675,0.0410819827191675,-105.0346118,39.7639669,-105.0346204,39.7643363
-3558,3421,3422,0.0491592770696459,0.0491592770696459,-105.0346204,39.7643363,-105.0346204,39.7647784
-3559,3422,3423,0.0205377029518591,0.0205377029518591,-105.0346204,39.7647784,-105.0346204,39.7649631
-3560,3423,3424,0.02549703249469,0.02549703249469,-105.0346204,39.7649631,-105.0346199,39.7651924
-3562,3425,3425,0.000442266584977921,0.000442266584977921,-105.0346312,39.7657434,-105.034629,39.7657398
-3563,3425,3426,0.0816315051221547,0.0816315051221547,-105.034629,39.7657398,-105.0346376,39.7664739
-3565,3427,1664,0.0502947464100412,0.0502947464100412,-105.0346332,39.7669387,-105.034629,39.767391
-3567,1683,3428,0.020460323508623,0.020460323508623,-105.0346312,39.7676742,-105.0346296,39.7678582
-3568,3428,3429,0.0515955226949506,0.0515955226949506,-105.0346296,39.7678582,-105.0346257,39.7683222
-3569,3429,3430,0.133978887334031,0.133978887334031,-105.0346257,39.7683222,-105.0346278,39.7695271
-3570,3430,2427,0.13659869274501,0.13659869274501,-105.0346278,39.7695271,-105.0346118,39.7707555
-3571,2427,2428,0.063830021941611,0.063830021941611,-105.0346118,39.7707555,-105.0346033,39.7713295
-3572,2428,3231,0.0696897365044123,0.0696897365044123,-105.0346033,39.7713295,-105.0345947,39.7719562
-3573,3231,3431,0.132766742414187,0.132766742414187,-105.0345947,39.7719562,-105.0345947,39.7731502
-3574,3431,3432,0.106360486773292,0.106360486773292,-105.0345947,39.7731502,-105.0346033,39.7741067
-3575,3432,3433,0.0970117847237812,0.0970117847237812,-105.0346033,39.7741067,-105.0345914,39.7749791
-3576,3433,3434,0.1971376871667,0.1971376871667,-105.0345914,39.7749791,-105.0345947,39.776752
-19819,5606,10648,0.0581167522759965,0.0581167522759965,-105.0015885,39.7300077,-105.0009089,39.7300077
-3577,3434,3435,0.133491532527273,0.133491532527273,-105.0345947,39.776752,-105.0346033,39.7779525
-3582,2842,3438,0.0923852774741301,0.0923852774741301,-105.0346113,39.7802434,-105.0345914,39.7810741
-3584,1421,317,0.102691144252484,0.102691144252484,-105.0345828,39.7821162,-105.0345742,39.7830397
-3585,317,513,0.0772222660891488,0.0772222660891488,-105.0345742,39.7830397,-105.0345487,39.7837339
-3586,513,3439,0.0612593596381532,0.0612593596381532,-105.0345487,39.7837339,-105.0345546,39.7842848
-3587,3439,3440,0.148872782400453,0.148872782400453,-105.0345546,39.7842848,-105.0345689,39.7856236
-3588,3440,2540,0.197920167618774,0.197920167618774,-105.0345689,39.7856236,-105.0345536,39.7874035
-3589,2540,3441,0.415850973508269,0.415850973508269,-105.0345536,39.7874035,-105.034619,39.791143
-3590,3442,699,0.201963508155417,0.201963508155417,-104.9465187,39.7401565,-104.9465157,39.7419728
-3591,699,3443,0.200352700158165,0.200352700158165,-104.9465157,39.7419728,-104.9465253,39.7437746
-3593,3444,3445,0.0185806742090463,0.0185806742090463,-104.9462569,39.7617553,-104.9462568,39.7619224
-20212,5504,7078,0.147322900830237,0.147322900830237,-104.9808533,39.7606816,-104.9796366,39.76162
-20213,7078,2034,0.146401533431931,0.146401533431931,-104.9796366,39.76162,-104.9784268,39.762552
-20214,2034,5323,0.145002332578884,0.145002332578884,-104.9784268,39.762552,-104.9772313,39.7634772
-20215,5323,632,0.146882687938452,0.146882687938452,-104.9772313,39.7634772,-104.976027,39.7644195
-4488,138,4177,0.203369481928684,0.203369481928684,-104.9910005,39.6930189,-104.9910305,39.6911901
-4489,4177,1741,0.0411375852444616,0.0411375852444616,-104.9910305,39.6911901,-104.9910219,39.6908202
-4490,1741,4178,0.159371364409943,0.159371364409943,-104.9910219,39.6908202,-104.9910391,39.689387
-4492,4179,4180,0.471114595558298,0.471114595558298,-104.9951206,39.7057312,-104.9922008,39.7021389
-4493,4180,4181,0.219268705400549,0.219268705400549,-104.9922008,39.7021389,-104.9925156,39.7001819
-4495,4182,4183,0.0994268923770179,0.0994268923770179,-104.9923595,39.714781,-104.992337,39.713887
-4496,4183,1296,0.100075433980265,0.100075433980265,-104.992337,39.713887,-104.992337,39.712987
-4497,1296,1369,0.0964029757899856,0.0964029757899856,-104.992337,39.712987,-104.9923595,39.7121202
-5794,5116,3795,0.199284062960758,0.199284062960758,-104.9706146,39.727291,-104.9706199,39.7290832
-18557,318,10316,0.0220547227626022,0.0220547227626022,-105.0344342,39.7830352,-105.0343233,39.7828561
-4499,4184,4185,0.301634217878433,0.301634217878433,-104.9923849,39.7111672,-104.9924234,39.7084547
-4501,2809,3744,0.0998445716696615,0.0998445716696615,-104.9921793,39.7165966,-104.9921878,39.7156987
-4502,3744,4186,0.10131230641957,0.10131230641957,-104.9921878,39.7156987,-104.9921793,39.7147876
-4504,4187,4188,0.132156563746112,0.132156563746112,-105.008021,39.7620353,-105.0080281,39.7632238
-4505,4188,4189,0.132402395077485,0.132402395077485,-105.0080281,39.7632238,-105.0080378,39.7644145
-4506,4189,4190,0.137552756241722,0.137552756241722,-105.0080378,39.7644145,-105.0080808,39.7656511
-4507,4190,4191,0.13379771872617,0.13379771872617,-105.0080808,39.7656511,-105.0080637,39.7668543
-4508,4191,1671,0.132214775902914,0.132214775902914,-105.0080637,39.7668543,-105.0080403,39.7680432
-4509,1671,4192,0.137147368544834,0.137147368544834,-105.0080403,39.7680432,-105.0080117,39.7692764
-4510,4192,2452,0.138219895716206,0.138219895716206,-105.0080117,39.7692764,-105.0080496,39.7705191
-4511,2452,3221,0.134932977312539,0.134932977312539,-105.0080496,39.7705191,-105.0080156,39.7717323
-4512,3221,4193,0.133628518122145,0.133628518122145,-105.0080156,39.7717323,-105.0080475,39.7729338
-4515,4195,554,0.154583323244677,0.154583323244677,-105.0077585,39.7352875,-105.0077561,39.7366777
-4516,554,4196,0.0224725093154139,0.0224725093154139,-105.0077561,39.7366777,-105.0077558,39.7368798
-4517,4083,4197,0.170590775930264,0.170590775930264,-105.0082472,39.7838436,-105.0081572,39.7853762
-4518,4197,3764,0.0397497113610314,0.0397497113610314,-105.0081572,39.7853762,-105.0079576,39.7856991
-4520,2820,1411,0.135923564862653,0.135923564862653,-105.0079788,39.7801613,-105.0079981,39.7813836
-4521,1411,1351,0.125050095081124,0.125050095081124,-105.0079981,39.7813836,-105.007995,39.7825082
-4523,4198,4199,0.454148647656551,0.454148647656551,-105.007437,39.721279,-105.0075072,39.7253629
-4525,4200,4201,0.133477223659273,0.133477223659273,-105.007629,39.7729337,-105.0075947,39.7741338
-4526,4201,4202,0.132617384077965,0.132617384077965,-105.0075947,39.7741338,-105.0076269,39.7753262
-4527,4202,4203,0.134214836424706,0.134214836424706,-105.0076269,39.7753262,-105.0076366,39.7765332
-4531,4206,1274,0.135021280032386,0.135021280032386,-105.0189551,39.7494633,-105.0204817,39.7497745
-4533,4207,4208,0.280988389053987,0.280988389053987,-105.0146092,39.7516734,-105.0166519,39.7496937
-4534,4209,4210,0.209285084830873,0.209285084830873,-105.0180383,39.7004566,-105.0180554,39.6985745
-4535,4210,4211,0.203065667561202,0.203065667561202,-105.0180554,39.6985745,-105.0180463,39.6967483
-4537,4212,3742,0.11682398880887,0.11682398880887,-105.018373,39.7168584,-105.0181498,39.7158219
-4538,3742,4213,0.111567725645095,0.111567725645095,-105.0181498,39.7158219,-105.018014,39.714824
-4539,4213,1339,0.201798845648163,0.201798845648163,-105.018014,39.714824,-105.0179868,39.7130093
-4541,4214,4215,0.203408625976642,0.203408625976642,-105.0180211,39.7111539,-105.018064,39.7093249
-4542,4215,4216,0.204114710404745,0.204114710404745,-105.018064,39.7093249,-105.0180812,39.7074893
-4543,4216,4217,0.199718562750948,0.199718562750948,-105.0180812,39.7074893,-105.0180726,39.7056932
-4544,4217,4218,0.198271148516705,0.198271148516705,-105.0180726,39.7056932,-105.0180383,39.7039103
-4545,4218,771,0.17255385564489,0.17255385564489,-105.0180383,39.7039103,-105.0180297,39.7023585
-4547,2307,165,0.313487377331004,0.313487377331004,-105.0183816,39.6959593,-105.0184206,39.6931402
-4549,4219,4220,0.186213228977795,0.186213228977795,-104.928034,39.690987,-104.9274781,39.6893679
-4551,754,1537,0.148966155582635,0.148966155582635,-104.9870376,39.7752102,-104.9869861,39.7765493
-4553,4221,4222,0.161148121345995,0.161148121345995,-104.9868954,39.7805099,-104.9869216,39.781959
-4554,4222,4223,0.216135114601666,0.216135114601666,-104.9869216,39.781959,-104.986953,39.7839026
-4555,4223,2863,0.186375265274556,0.186375265274556,-104.986953,39.7839026,-104.9869616,39.7855787
-4556,2863,4224,0.202043234198664,0.202043234198664,-104.9869616,39.7855787,-104.9869346,39.7873956
-4558,2306,163,0.315813218507964,0.315813218507964,-105.0174374,39.6959857,-105.0174975,39.6931459
-4560,2936,4225,0.221837398274975,0.221837398274975,-105.0178175,39.6879086,-105.01767,39.6859168
-4561,4226,4227,0.032037204481033,0.032037204481033,-104.9365695,39.6966812,-104.936211,39.696598
-4562,4227,3117,0.0749583948430369,0.0749583948430369,-104.936211,39.696598,-104.935335,39.696587
-4563,3117,4228,0.116878015161696,0.116878015161696,-104.935335,39.696587,-104.933969,39.696598
-4564,4228,4229,0.198835732908948,0.198835732908948,-104.933969,39.696598,-104.931645,39.696598
-4565,4229,3631,0.67836534857008,0.67836534857008,-104.931645,39.696598,-104.9237198,39.6967811
-4567,4230,4231,0.0278521738101303,0.0278521738101303,-104.9812906,39.6966263,-104.9809651,39.6966301
-4568,4231,3626,0.0483370034898742,0.0483370034898742,-104.9809651,39.6966301,-104.9804002,39.6966367
-4569,3626,4232,0.0510217447847317,0.0510217447847317,-104.9804002,39.6966367,-104.979804,39.6966266
-4570,4232,4233,0.0469996469262497,0.0469996469262497,-104.979804,39.6966266,-104.9792547,39.6966219
-4571,4233,4234,0.00322569080192639,0.00322569080192639,-104.9792547,39.6966219,-104.979217,39.6966216
-4572,4234,4235,0.0476498478152495,0.0476498478152495,-104.979217,39.6966216,-104.9786601,39.6966169
-4573,4235,4236,0.00275575991011001,0.00275575991011001,-104.9786601,39.6966169,-104.9786279,39.6966163
-4574,4236,4237,0.0466374525425622,0.0466374525425622,-104.9786279,39.6966163,-104.9780828,39.6966169
-4575,4237,4176,0.0490297893404984,0.0490297893404984,-104.9780828,39.6966169,-104.9775098,39.6966104
-4577,1777,4238,0.0499406466420926,0.0499406466420926,-104.9769241,39.6966037,-104.9763404,39.6966061
-4578,4238,4239,0.0481565861804565,0.0481565861804565,-104.9763404,39.6966061,-104.9757777,39.6965959
-4579,4239,4241,0.0519465642125291,0.0519465642125291,-104.9757777,39.6965959,-104.9751708,39.6966094
-4580,4241,1525,0.0497346926389818,0.0497346926389818,-104.9751708,39.6966094,-104.9745895,39.6966103
-4581,1525,4242,0.0484856348902157,0.0484856348902157,-104.9745895,39.6966103,-104.9740228,39.6966115
-4582,4242,4243,0.0507187078501555,0.0507187078501555,-104.9740228,39.6966115,-104.97343,39.6966128
-4584,4244,4245,0.0527177379947323,0.0527177379947323,-104.9827699,39.6966096,-104.983386,39.6966166
-4585,4245,4246,0.0464286276535365,0.0464286276535365,-104.983386,39.6966166,-104.9839286,39.6966228
-4586,4246,4247,0.0517965186978674,0.0517965186978674,-104.9839286,39.6966228,-104.984534,39.6966228
-4587,4247,4248,0.0444043495278385,0.0444043495278385,-104.984534,39.6966228,-104.985053,39.6966228
-4588,4248,569,0.0503939700372948,0.0503939700372948,-104.985053,39.6966228,-104.985642,39.6966206
-4589,569,4249,0.0487604458581461,0.0487604458581461,-104.985642,39.6966206,-104.9862119,39.6966237
-4590,4249,4250,0.049686610105401,0.049686610105401,-104.9862119,39.6966237,-104.9867926,39.6966289
-4591,4250,3757,0.0516485422129312,0.0516485422129312,-104.9867926,39.6966289,-104.9873962,39.696636
-4593,233,4251,0.0506501019029544,0.0506501019029544,-104.968695,39.6965912,-104.968103,39.6965907
-4594,4251,4252,0.049085285550805,0.049085285550805,-104.968103,39.6965907,-104.9675293,39.6965934
-4595,4252,4253,0.0509968613887819,0.0509968613887819,-104.9675293,39.6965934,-104.9669334,39.696583
-4596,4253,4254,0.0502265448038836,0.0502265448038836,-104.9669334,39.696583,-104.9663465,39.6965728
-4597,4254,4255,0.0465382189133341,0.0465382189133341,-104.9663465,39.6965728,-104.9658026,39.6965779
-4598,4255,4256,0.0510900830663337,0.0510900830663337,-104.9658026,39.6965779,-104.9652055,39.6965834
-4599,4256,4257,0.0497787434592631,0.0497787434592631,-104.9652055,39.6965834,-104.9646237,39.6965801
-4600,4257,3481,0.048623750791878,0.048623750791878,-104.9646237,39.6965801,-104.9640554,39.6965768
-4601,3481,4258,0.0500598342416855,0.0500598342416855,-104.9640554,39.6965768,-104.9634703,39.6965777
-4602,4258,4259,0.0490673464291656,0.0490673464291656,-104.9634703,39.6965777,-104.9628968,39.6965785
-4603,4259,4260,0.0504371465498466,0.0504371465498466,-104.9628968,39.6965785,-104.9623073,39.6965813
-4604,4260,3695,0.0479901081376225,0.0479901081376225,-104.9623073,39.6965813,-104.9617464,39.6965839
-4606,4261,4262,0.0501538740654185,0.0501538740654185,-104.9611486,39.6965834,-104.9605624,39.6965829
-4607,4262,4263,0.0491706548036751,0.0491706548036751,-104.9605624,39.6965829,-104.9599877,39.6965853
-4608,4263,4264,0.0565833994828839,0.0565833994828839,-104.9599877,39.6965853,-104.9593265,39.6965961
-4610,277,4265,0.0528934097089145,0.0528934097089145,-104.9875916,39.7783304,-104.9869736,39.7783568
-4611,4265,4266,0.0968160140004115,0.0968160140004115,-104.9869736,39.7783568,-104.9858407,39.7783502
-20627,10752,10756,0.0716547469239426,0.0716547469239426,-105.0229895,39.7619327,-105.0229933,39.7612883
-4612,4266,4267,0.0968245593658874,0.0968245593658874,-104.9858407,39.7783502,-104.9847077,39.7783568
-4613,4267,973,0.0982940228399724,0.0982940228399724,-104.9847077,39.7783568,-104.9835576,39.77837
-4614,973,4268,0.0961120665100732,0.0961120665100732,-104.9835576,39.77837,-104.9824332,39.7783502
-4615,4268,3151,0.0982830823377853,0.0982830823377853,-104.9824332,39.7783502,-104.9812831,39.7783502
-4616,3151,4269,0.0956500899819903,0.0956500899819903,-104.9812831,39.7783502,-104.980164,39.7783344
-4617,4269,4270,0.0774758788411222,0.0774758788411222,-104.980164,39.7783344,-104.9792574,39.7783303
-4619,4271,3870,0.115440404669678,0.115440404669678,-104.945419,39.778983,-104.9440689,39.7789476
-4620,3870,839,0.0968819352907846,0.0968819352907846,-104.9440689,39.7789476,-104.942936,39.7789146
-4621,839,4272,0.0909531666656291,0.0909531666656291,-104.942936,39.7789146,-104.9418717,39.778908
-4623,3911,4273,0.0389706485750465,0.0389706485750465,-104.9634588,39.7785997,-104.9630028,39.7785955
-4624,369,4274,0.037543890411303,0.037543890411303,-104.9593952,39.7789295,-104.9589559,39.778934
-4625,4274,4275,0.0617087098520115,0.0617087098520115,-104.9589559,39.778934,-104.9582338,39.7789377
-4629,2912,4277,0.0342245606725147,0.0342245606725147,-104.973349,39.7660612,-104.9736331,39.7662781
-4630,4277,4278,0.104948893572031,0.104948893572031,-104.9736331,39.7662781,-104.9745038,39.7669436
-4631,4278,3313,0.105285822276279,0.105285822276279,-104.9745038,39.7669436,-104.9753728,39.7676147
-4632,3313,4279,0.10593807567588,0.10593807567588,-104.9753728,39.7676147,-104.9762513,39.7682868
-4634,1347,1613,0.100174688565551,0.100174688565551,-104.9771684,39.7690078,-104.9779666,39.7696675
-4635,1613,4280,0.104997472753206,0.104997472753206,-104.9779666,39.7696675,-104.97885,39.7703237
-4665,4282,4283,0.0977314379471645,0.0977314379471645,-105.0344834,39.703983,-105.0344405,39.7031047
-4639,4284,4285,0.190476396365953,0.190476396365953,-104.9683885,39.7728911,-104.9705937,39.7726427
-4640,4285,4286,0.254383171783508,0.254383171783508,-104.9705937,39.7726427,-104.972693,39.7710209
-4642,4287,1279,0.116253581720056,0.116253581720056,-105.0191566,39.7536182,-105.0205165,39.7536172
-4643,1279,4288,0.133001385838575,0.133001385838575,-105.0205165,39.7536172,-105.0220723,39.7536126
-4644,4288,4289,0.132041969489344,0.132041969489344,-105.0220723,39.7536126,-105.0236168,39.7535999
-4645,4289,4290,0.131385678442372,0.131385678442372,-105.0236168,39.7535999,-105.0251537,39.7536044
-4647,3405,4291,0.101549832168715,0.101549832168715,-105.0346118,39.7539178,-105.0357997,39.753915
-4648,4291,4292,0.100523519517599,0.100523519517599,-105.0357997,39.753915,-105.0369756,39.753915
-4649,4292,4293,0.100138462817161,0.100138462817161,-105.0369756,39.753915,-105.0381466,39.7538916
-5953,5195,5227,0.170006104257124,0.170006104257124,-104.9891824,39.7241217,-104.9891795,39.7256506
-4650,4293,4294,0.099847555472709,0.099847555472709,-105.0381466,39.7538916,-105.039314,39.7539202
-4651,4294,4295,0.0503614009997415,0.0503614009997415,-105.039314,39.7539202,-105.0399031,39.7539235
-4652,4295,1117,0.0494296215921,0.0494296215921,-105.0399031,39.7539235,-105.0404813,39.7539268
-4653,1117,4296,0.050087846881447,0.050087846881447,-105.0404813,39.7539268,-105.0410672,39.7539301
-4654,4296,4297,0.0495578429804187,0.0495578429804187,-105.0410672,39.7539301,-105.0416469,39.7539334
-4655,4297,4298,0.0515578068709943,0.0515578068709943,-105.0416469,39.7539334,-105.04225,39.7539306
-20458,10785,10812,0.0256322806680483,0.0256322806680483,-105.0187626,39.7585641,-105.018527,39.7587067
-4656,4298,4299,0.00303478875120781,0.00303478875120781,-105.04225,39.7539306,-105.0422855,39.7539305
-4659,4300,1508,0.0639307257992365,0.0639307257992365,-105.0343976,39.6954706,-105.0343718,39.694896
-4660,1508,179,0.201223720751325,0.201223720751325,-105.0343718,39.694896,-105.034389,39.6930864
-4661,179,1707,0.203441168484602,0.203441168484602,-105.034389,39.6930864,-105.0343547,39.691257
-4663,4301,4302,0.143365965722663,0.143365965722663,-105.0343542,39.6894282,-105.0344062,39.6881395
-4686,4303,4304,0.0764005624211503,0.0764005624211503,-105.0350499,39.705614,-105.0350241,39.7049272
-4664,4302,4305,2.47136733106287,2.47136733106287,-105.0344062,39.6881395,-105.034943,39.6659178
-17126,4306,4307,0.198891077653185,0.198891077653185,-104.9751709,39.7165103,-104.975203,39.7182988
-17128,4308,4309,0.137004722426324,0.137004722426324,-104.974055,39.717746,-104.9740333,39.716514
-4666,4283,4310,0.00807297378678342,0.00807297378678342,-105.0344405,39.7031047,-105.0344398,39.7030321
-4667,4310,4311,0.088125570928718,0.088125570928718,-105.0344398,39.7030321,-105.0344491,39.7022396
-4668,4311,4312,0.0140203745468903,0.0140203745468903,-105.0344491,39.7022396,-105.0344662,39.7021142
-19629,10518,10593,0.0691965251351115,0.0691965251351115,-104.9902799,39.7082903,-104.9910888,39.7082874
-4670,4313,4314,0.114544256923558,0.114544256923558,-105.0344405,39.7013547,-105.0344491,39.7003246
-4671,4314,4315,0.197539157423005,0.197539157423005,-105.0344491,39.7003246,-105.0344405,39.6985481
-4672,4315,4035,0.10133193665102,0.10133193665102,-105.0344405,39.6985481,-105.0344405,39.6976368
-4675,3389,4317,0.176922247784819,0.176922247784819,-105.034904,39.7165547,-105.034904,39.7149636
-4676,4317,1313,0.17698917639034,0.17698917639034,-105.034904,39.7149636,-105.0349008,39.7133719
-4677,1313,4318,0.2429613537943,0.2429613537943,-105.0349008,39.7133719,-105.0348954,39.7111869
-4678,4318,4319,0.0830631503019858,0.0830631503019858,-105.0348954,39.7111869,-105.0350327,39.7104474
-4679,4319,4320,0.0977203133854136,0.0977203133854136,-105.0350327,39.7104474,-105.0350756,39.7095692
-4680,4320,4321,0.113818121601187,0.113818121601187,-105.0350756,39.7095692,-105.0350499,39.7085458
-4681,4321,4322,0.0984100223094627,0.0984100223094627,-105.0350499,39.7085458,-105.0350241,39.707661
-4683,4323,4324,0.0484810817232728,0.0484810817232728,-105.0350585,39.7071591,-105.0350413,39.7067233
-4684,4324,4325,0.0969202903062125,0.0969202903062125,-105.0350413,39.7067233,-105.0350499,39.7058517
-4685,4325,4303,0.026431034063363,0.026431034063363,-105.0350499,39.7058517,-105.0350499,39.705614
-4687,4304,4326,0.107959479077584,0.107959479077584,-105.0350241,39.7049272,-105.0350499,39.7039565
-4689,4302,1574,0.191677995814021,0.191677995814021,-105.0344062,39.6881395,-105.0360845,39.6869978
-4691,3672,4328,0.125428790986072,0.125428790986072,-104.9769586,39.747508,-104.976953,39.748636
-4692,4328,4329,0.0951720176425212,0.0951720176425212,-104.976953,39.748636,-104.9769503,39.7494919
-4693,4329,4330,0.139038263486678,0.139038263486678,-104.9769503,39.7494919,-104.9769525,39.7507423
-4694,4330,4331,0.139714401472726,0.139714401472726,-104.9769525,39.7507423,-104.9769247,39.7519986
-4700,4334,4335,0.200429884058467,0.200429884058467,-104.9780308,39.7165201,-104.9780566,39.7183225
-4702,2368,4336,0.0171503416673458,0.0171503416673458,-104.9775163,39.7194106,-104.9775406,39.7195637
-4704,2899,4337,0.105099867009157,0.105099867009157,-104.9733522,39.7569824,-104.9721228,39.7569937
-4705,4337,4338,0.106056680315678,0.106056680315678,-104.9721228,39.7569937,-104.9708823,39.75701
-4706,4338,4339,0.104589847143113,0.104589847143113,-104.9708823,39.75701,-104.9696595,39.7569777
-4707,4339,4340,0.370832351150224,0.370832351150224,-104.9696595,39.7569777,-104.9653214,39.7569797
-4708,4340,4341,0.0529480373416704,0.0529480373416704,-104.9653214,39.7569797,-104.9647021,39.7569883
-4709,4341,3902,0.107541125657943,0.107541125657943,-104.9647021,39.7569883,-104.9634441,39.75698
-4710,3902,1039,0.104784630542914,0.104784630542914,-104.9634441,39.75698,-104.9622183,39.75698
-4711,1039,4342,0.104777071004161,0.104777071004161,-104.9622183,39.75698,-104.9609926,39.7569841
-4712,4342,4343,0.105248493254523,0.105248493254523,-104.9609926,39.7569841,-104.9597614,39.7569779
-4713,4343,4344,0.101108879740712,0.101108879740712,-104.9597614,39.7569779,-104.9585786,39.7569779
-4714,4344,3325,0.105024412220906,0.105024412220906,-104.9585786,39.7569779,-104.95735,39.7569806
-4715,3325,4345,0.102246237774905,0.102246237774905,-104.95735,39.7569806,-104.9561539,39.7569779
-4716,4345,4346,0.102726745739932,0.102726745739932,-104.9561539,39.7569779,-104.9549522,39.7569718
-4717,4346,2076,0.108443527267173,0.108443527267173,-104.9549522,39.7569718,-104.9536836,39.7569738
-4718,2076,2673,0.108454042008862,0.108454042008862,-104.9536836,39.7569738,-104.9524149,39.7569676
-6026,4668,5275,0.106680903376796,0.106680903376796,-104.9875126,39.713878,-104.9862654,39.7138801
-20495,10837,10818,0.00314569094185422,0.00314569094185422,-105.0192753,39.758524,-105.0193121,39.758524
-4719,2673,4123,0.102664740305431,0.102664740305431,-104.9524149,39.7569676,-104.9512139,39.7569666
-4720,4123,4347,0.110043125382133,0.110043125382133,-104.9512139,39.7569666,-104.9499266,39.7569714
-4721,4347,4348,0.0925868711229396,0.0925868711229396,-104.9499266,39.7569714,-104.9488435,39.7569684
-4722,4348,4349,0.101256639304288,0.101256639304288,-104.9488435,39.7569684,-104.9476591,39.756955
-4723,4349,3471,0.100333218908324,0.100333218908324,-104.9476591,39.756955,-104.9464855,39.7569418
-4724,3471,4350,0.101033713236321,0.101033713236321,-104.9464855,39.7569418,-104.9453036,39.7569471
-4726,850,4351,0.101364060095961,0.101364060095961,-104.9429726,39.7565327,-104.9417876,39.7564997
-4727,4351,4352,0.0951618291875102,0.0951618291875102,-104.9417876,39.7564997,-104.9406749,39.7564735
-4728,4352,4353,0.0166431794757682,0.0166431794757682,-104.9406749,39.7564735,-104.9404804,39.7564802
-4729,4353,4354,0.0900251519018866,0.0900251519018866,-104.9404804,39.7564802,-104.9394273,39.7564865
-4730,4354,4355,0.0948464364966571,0.0948464364966571,-104.9394273,39.7564865,-104.9383178,39.75648
-4731,4355,4356,0.0929916889983271,0.0929916889983271,-104.9383178,39.75648,-104.93723,39.7564733
-4732,4356,4357,0.0946584559856625,0.0946584559856625,-104.93723,39.7564733,-104.9361228,39.7564865
-4733,4357,2002,0.0939147825318954,0.0939147825318954,-104.9361228,39.7564865,-104.9350242,39.7564799
-4734,2002,3362,0.0961201849767339,0.0961201849767339,-104.9350242,39.7564799,-104.9338998,39.7564865
-4735,3362,2756,0.0936202724465644,0.0936202724465644,-104.9338998,39.7564865,-104.9328047,39.7564972
-4736,2756,4358,0.0928604520153806,0.0928604520153806,-104.9328047,39.7564972,-104.9317184,39.7564972
-4738,4359,3874,0.0985792493705747,0.0985792493705747,-104.9453012,39.7565195,-104.944148,39.7565195
-4740,4360,4361,0.589746493190754,0.589746493190754,-105.0055932,39.7209068,-105.0015929,39.7165869
-4742,501,1385,0.0995647502781281,0.0995647502781281,-105.0014928,39.7130323,-105.0016028,39.7121409
-4745,4363,4364,0.205829363021429,0.205829363021429,-105.0015367,39.7102427,-105.0014826,39.7083921
-4746,4364,4365,0.0921122756854079,0.0921122756854079,-105.0014826,39.7083921,-105.0015264,39.7075644
-4747,4365,4366,0.00988128080256074,0.00988128080256074,-105.0015264,39.7075644,-105.001522,39.7074756
-4748,4366,4367,0.0897681081567516,0.0897681081567516,-105.001522,39.7074756,-105.0015253,39.7066683
-4749,4367,4368,0.098598628932225,0.098598628932225,-105.0015253,39.7066683,-105.0015178,39.7057816
-4750,4368,4369,0.0959412440063823,0.0959412440063823,-105.0015178,39.7057816,-105.0015255,39.7049188
-4751,4369,4370,0.102131783313602,0.102131783313602,-105.0015255,39.7049188,-105.0014826,39.7040009
-4752,4370,783,0.172155062898013,0.172155062898013,-105.0014826,39.7040009,-105.001524,39.702453
-4753,783,4373,0.095162556755669,0.095162556755669,-105.001524,39.702453,-105.0015169,39.7015972
-4754,4373,4374,0.0961947364240104,0.0961947364240104,-105.0015169,39.7015972,-105.0014998,39.7007322
-4755,4374,2746,0.0976874440589729,0.0976874440589729,-105.0014998,39.7007322,-105.001474,39.6998539
-4756,2746,4375,0.105035684135392,0.105035684135392,-105.001474,39.6998539,-105.0014998,39.6989095
-4757,4375,4376,0.0939930714928361,0.0939930714928361,-105.0014998,39.6989095,-105.0014998,39.6980642
-4758,4376,4031,0.0955624767971731,0.0955624767971731,-105.0014998,39.6980642,-105.0014483,39.6972057
-4759,4031,4377,0.0560443290529964,0.0560443290529964,-105.0014483,39.6972057,-105.0015083,39.6967038
-4760,4377,1489,0.204591889958277,0.204591889958277,-105.0015083,39.6967038,-105.0015377,39.694864
-4762,145,1731,0.201807709171719,0.201807709171719,-105.0015377,39.6930676,-105.0015625,39.6912528
-4763,1731,360,0.203461803126836,0.203461803126836,-105.0015625,39.6912528,-105.0016107,39.6894234
-4767,2902,2038,0.0702037411311871,0.0702037411311871,-104.9733513,39.7595161,-104.9740667,39.759206
-4769,4380,4381,0.147155318321419,0.147155318321419,-104.9752846,39.7582739,-104.9764694,39.7573138
-4770,4381,4382,0.144957308053315,0.144957308053315,-104.9764694,39.7573138,-104.9776844,39.7564044
-4771,4382,4383,0.149312485085308,0.149312485085308,-104.9776844,39.7564044,-104.9788891,39.7554321
-4774,2688,4385,0.0765539017627299,0.0765539017627299,-104.9813184,39.7535997,-104.9819456,39.7531083
-4775,4385,4386,0.0705753548513159,0.0705753548513159,-104.9819456,39.7531083,-104.9825253,39.7526564
-4776,4386,4387,0.146933743759007,0.146933743759007,-104.9825253,39.7526564,-104.9837317,39.7517152
-4777,4387,4388,0.145923980731529,0.145923980731529,-104.9837317,39.7517152,-104.9849232,39.7507755
-4778,4388,4389,0.144339759907671,0.144339759907671,-104.9849232,39.7507755,-104.9861204,39.7498602
-4779,4389,4390,0.150103166473839,0.150103166473839,-104.9861204,39.7498602,-104.9873785,39.7489186
-4780,4390,4391,0.137983810664432,0.137983810664432,-104.9873785,39.7489186,-104.9885184,39.7480401
-4781,4391,4392,0.0104056356944031,0.0104056356944031,-104.9885184,39.7480401,-104.9886052,39.7479745
-4782,4392,4393,0.140241416108271,0.140241416108271,-104.9886052,39.7479745,-104.9897603,39.747079
-4783,4393,4394,0.1481833156111,0.1481833156111,-104.9897603,39.747079,-104.9909615,39.7461183
-4784,4394,4395,0.146837535132845,0.146837535132845,-104.9909615,39.7461183,-104.9921721,39.7451816
-4785,4395,4396,0.147176845167591,0.147176845167591,-104.9921721,39.7451816,-104.993398,39.7442524
-4786,4396,4397,0.145625871999305,0.145625871999305,-104.993398,39.7442524,-104.9946157,39.7433367
-4788,1072,4398,0.0934237929296376,0.0934237929296376,-105.009231,39.7782735,-105.0087458,39.7790264
-4790,4399,4400,0.1229191337931,0.1229191337931,-104.9607224,39.7225056,-104.961317,39.723512
-4791,4400,4401,0.117696624021516,0.117696624021516,-104.961317,39.723512,-104.9626217,39.7238487
-4792,4401,3916,0.0730141443209756,0.0730141443209756,-104.9626217,39.7238487,-104.9634696,39.7237721
-4794,4402,4403,3.26030129970045,3.26030129970045,-105.0326599,39.6602355,-105.0296941,39.6894671
-4795,4403,1705,0.202698536609182,0.202698536609182,-105.0296941,39.6894671,-105.0297026,39.69129
-4796,1705,176,0.202718600973581,0.202718600973581,-105.0297026,39.69129,-105.029737,39.6931129
-4797,176,1503,0.201219684641614,0.201219684641614,-105.029737,39.6931129,-105.0297284,39.6949225
-4798,1503,4404,0.202286968554481,0.202286968554481,-105.0297284,39.6949225,-105.0297364,39.6967417
-4799,4404,4405,0.200141278145387,0.200141278145387,-105.0297364,39.6967417,-105.0297627,39.6985415
-4800,4405,4406,0.0308542467827185,0.0308542467827185,-105.0297627,39.6985415,-105.0297541,39.6988189
-4801,4406,4407,0.168200323230532,0.168200323230532,-105.0297541,39.6988189,-105.0297971,39.7003312
-4802,4407,4408,0.11307645922142,0.11307645922142,-105.0297971,39.7003312,-105.0298056,39.7013481
-4803,4408,4409,0.0961947310408444,0.0961947310408444,-105.0298056,39.7013481,-105.0298056,39.7022132
-4804,4409,4410,0.0983990775592717,0.0983990775592717,-105.0298056,39.7022132,-105.0297971,39.7030981
-4806,4411,4413,0.099863884884034,0.099863884884034,-105.0298314,39.704016,-105.0298142,39.704914
-4809,4415,4416,0.102810116828889,0.102810116828889,-105.0297971,39.7067299,-105.0298142,39.7076544
-4810,4416,4417,0.0991628298509216,0.0991628298509216,-105.0298142,39.7076544,-105.0298486,39.7085458
-4811,4417,4418,0.0969872745595907,0.0969872745595907,-105.0298486,39.7085458,-105.0298056,39.7094174
-4812,4418,4419,0.0998556913489604,0.0998556913489604,-105.0298056,39.7094174,-105.0297971,39.7103154
-4813,4419,4420,0.0958355207238061,0.0958355207238061,-105.0297971,39.7103154,-105.0299687,39.7111671
-4814,4420,1307,0.243760388907656,0.243760388907656,-105.0299687,39.7111671,-105.0299945,39.7133592
-4815,1307,4421,0.179135026824832,0.179135026824832,-105.0299945,39.7133592,-105.0299945,39.7149702
-4818,4422,477,0.0591204183570981,0.0591204183570981,-105.0169124,39.7442891,-105.0173303,39.7447127
-4819,477,486,0.338636165035717,0.338636165035717,-105.0173303,39.7447127,-105.0180607,39.7477059
-4820,486,320,0.186794052108965,0.186794052108965,-105.0180607,39.7477059,-105.0174336,39.7493151
-4821,320,324,0.464671835959624,0.464671835959624,-105.0174336,39.7493151,-105.0152472,39.753141
-4822,324,531,0.0559979023034973,0.0559979023034973,-105.0152472,39.753141,-105.0148477,39.7535401
-4823,531,534,0.263162604733165,0.263162604733165,-105.0148477,39.7535401,-105.0126456,39.7551939
-4825,475,530,0.435551136576821,0.435551136576821,-105.0122615,39.7554827,-105.0085506,39.7581668
-4826,530,393,0.115152140819887,0.115152140819887,-105.0085506,39.7581668,-105.0075703,39.7588771
-4827,393,4423,0.203655322253385,0.203655322253385,-105.0075703,39.7588771,-105.0057667,39.7600738
-4828,4423,4424,0.538171924126244,0.538171924126244,-105.0057667,39.7600738,-105.0016238,39.7637183
-4829,4424,4426,0.419488421877639,0.419488421877639,-105.0016238,39.7637183,-104.998467,39.7666069
-4830,4426,4427,0.0323139283448777,0.0323139283448777,-104.998467,39.7666069,-104.9981322,39.7667419
-4833,4428,4429,0.198930926845217,0.198930926845217,-105.0227675,39.7175319,-105.0250933,39.717539
-4837,4432,4433,0.200460087837485,0.200460087837485,-105.0086074,39.7174296,-105.0109506,39.7174666
-4839,2920,3260,0.28373274915572,0.28373274915572,-104.9580338,39.7072718,-104.9578793,39.7047229
-4842,4436,726,0.0998645775500999,0.0998645775500999,-104.9500303,39.7012585,-104.9511976,39.7012585
-4843,726,52,0.170560718436498,0.170560718436498,-104.9511976,39.7012585,-104.9526824,39.7002349
-4844,52,4437,0.100090869280248,0.100090869280248,-104.9526824,39.7002349,-104.9534368,39.6995469
-4845,4437,3658,0.0591716781283333,0.0591716781283333,-104.9534368,39.6995469,-104.9536997,39.6990547
-4846,3658,4438,0.103033016475492,0.103033016475492,-104.9536997,39.6990547,-104.9546419,39.6984776
-4847,4438,4439,0.00533542340358722,0.00533542340358722,-104.9546419,39.6984776,-104.9546886,39.6984458
-4848,4439,3530,0.0426683766285225,0.0426683766285225,-104.9546886,39.6984458,-104.9550292,39.6981655
-4850,4440,1490,0.0653862418347059,0.0653862418347059,-105.0026535,39.6954583,-105.0026792,39.6948706
-4851,1490,146,0.199762763358791,0.199762763358791,-105.0026792,39.6948706,-105.002705,39.6930742
-4853,1733,4441,0.200262923415945,0.200262923415945,-105.0027266,39.6912507,-105.0027522,39.6894498
-4855,3554,4442,0.0495302719350299,0.0495302719350299,-104.9757464,39.7546182,-104.9759203,39.7550431
-4856,4442,4443,0.0498850541236187,0.0498850541236187,-104.9759203,39.7550431,-104.9763376,39.7553567
-4857,4443,4444,0.0512856921549244,0.0512856921549244,-104.9763376,39.7553567,-104.9767844,39.7556645
-4858,4444,3019,0.0117591853989501,0.0117591853989501,-104.9767844,39.7556645,-104.9768843,39.7557372
-4860,4445,4382,0.0530835076360593,0.0530835076360593,-104.9772635,39.7560534,-104.9776844,39.7564044
-4861,4382,4446,0.0528074946120117,0.0528074946120117,-104.9776844,39.7564044,-104.9781251,39.7567372
-4863,4447,4448,0.00600839331926655,0.00600839331926655,-104.9785209,39.7570361,-104.9785732,39.7570722
-4865,4449,4450,0.0531891993832321,0.0531891993832321,-104.9789969,39.757401,-104.9794422,39.7577351
-4866,4450,4451,0.0546720224408421,0.0546720224408421,-104.9794422,39.7577351,-104.9798733,39.7580983
-4867,4451,4452,0.0492877204975977,0.0492877204975977,-104.9798733,39.7580983,-104.9802783,39.7584138
-4868,4452,4453,0.0555740263590881,0.0555740263590881,-104.9802783,39.7584138,-104.980759,39.7587503
-4869,4453,4454,0.0508522899950145,0.0508522899950145,-104.980759,39.7587503,-104.981171,39.7590802
-4870,4454,4455,0.0539540438907939,0.0539540438907939,-104.981171,39.7590802,-104.9816151,39.759425
-4871,4455,4456,0.05278127500741,0.05278127500741,-104.9816151,39.759425,-104.9820633,39.7597515
-4872,4456,4457,0.0520682148022883,0.0520682148022883,-104.9820633,39.7597515,-104.9824777,39.7600947
-4873,4457,4458,0.0535945839553328,0.0535945839553328,-104.9824777,39.7600947,-104.9829353,39.7604242
-4874,4458,3308,0.105299206866662,0.105299206866662,-104.9829353,39.7604242,-104.983803,39.7610964
-4875,3308,4459,0.0532887340145185,0.0532887340145185,-104.983803,39.7610964,-104.9842417,39.7614369
-4876,4459,4460,0.0519293867850164,0.0519293867850164,-104.9842417,39.7614369,-104.9846721,39.7617665
-4878,2911,4461,0.104626210772024,0.104626210772024,-104.9733491,39.7657577,-104.972125,39.7657557
-4879,4461,4462,0.107626289516013,0.107626289516013,-104.972125,39.7657557,-104.9708658,39.7657536
-4880,4462,4463,0.104079175744358,0.104079175744358,-104.9708658,39.7657536,-104.9696481,39.7657517
-4881,4463,4464,0.104771521557699,0.104771521557699,-104.9696481,39.7657517,-104.9684223,39.7657497
-4882,4464,4465,0.105968126634263,0.105968126634263,-104.9684223,39.7657497,-104.9671825,39.7657477
-6192,5399,5400,0.276164012064383,0.276164012064383,-104.9659557,39.7557387,-104.9659604,39.7582223
-4883,4465,4466,0.105797186557688,0.105797186557688,-104.9671825,39.7657477,-104.9659447,39.7657457
-4884,4466,3135,0.104882643737148,0.104882643737148,-104.9659447,39.7657457,-104.9647176,39.7657437
-4885,3135,3907,0.109352834062615,0.109352834062615,-104.9647176,39.7657437,-104.9634382,39.7657416
-4886,3907,1046,0.105412573797977,0.105412573797977,-104.9634382,39.7657416,-104.9622049,39.7657396
-4887,1046,4467,0.052770391738213,0.052770391738213,-104.9622049,39.7657396,-104.9615875,39.7657386
-4888,4467,4468,0.0520438840305316,0.0520438840305316,-104.9615875,39.7657386,-104.9609786,39.7657376
-4889,4468,4469,0.10568608900916,0.10568608900916,-104.9609786,39.7657376,-104.9597421,39.7657356
-4890,4469,4470,0.101335564568208,0.101335564568208,-104.9597421,39.7657356,-104.9585565,39.7657337
-4891,4470,3332,0.103121923835041,0.103121923835041,-104.9585565,39.7657337,-104.95735,39.7657318
-4892,3332,4471,0.106386988921342,0.106386988921342,-104.95735,39.7657318,-104.9561053,39.7657297
-4893,4471,4472,0.0168550696022494,0.0168550696022494,-104.9561053,39.7657297,-104.9559081,39.7657294
-4894,4472,4473,0.0917114246562582,0.0917114246562582,-104.9559081,39.7657294,-104.9548351,39.7657277
-4895,4473,2083,0.101916806851718,0.101916806851718,-104.9548351,39.7657277,-104.9536427,39.7657257
-4896,2083,4474,0.104993787286419,0.104993787286419,-104.9536427,39.7657257,-104.9524143,39.7657237
-4897,4474,4129,0.105139069056382,0.105139069056382,-104.9524143,39.7657237,-104.9511842,39.7657218
-4898,4129,4475,0.108754567624091,0.108754567624091,-104.9511842,39.7657218,-104.9499118,39.7657197
-4899,4475,4476,0.10144670106953,0.10144670106953,-104.9499118,39.7657197,-104.9487249,39.7657178
-4900,4476,4477,0.106139118962841,0.106139118962841,-104.9487249,39.7657178,-104.9474831,39.7657158
-4901,4477,3446,0.105344236005182,0.105344236005182,-104.9474831,39.7657158,-104.9462506,39.7657138
-4903,4478,4479,0.0124618097268169,0.0124618097268169,-104.9451778,39.765712,-104.945032,39.7657118
-4904,4479,4480,0.085822453683645,0.085822453683645,-104.945032,39.7657118,-104.9440279,39.7657101
-4905,4480,3886,0.0198123941785865,0.0198123941785865,-104.9440279,39.7657101,-104.9437961,39.7657098
-4907,865,4481,0.0967884909448593,0.0967884909448593,-104.9428501,39.7657082,-104.9417177,39.7657064
-4909,345,4482,0.111183183932549,0.111183183932549,-105.0067949,39.727165,-105.007537,39.727986
-4910,4483,1892,0.0285476317873184,0.0285476317873184,-105.0055781,39.7619094,-105.0052777,39.7620216
-4912,4360,4484,0.465117334225162,0.465117334225162,-105.0055932,39.7209068,-105.0055963,39.7250897
-4913,4484,4485,0.0326010116755978,0.0326010116755978,-105.0055963,39.7250897,-105.0056478,39.7253802
-4915,4486,4487,0.175931100170174,0.175931100170174,-105.0052345,39.7321295,-105.005256,39.7337116
-4916,4487,4489,0.100342363380826,0.100342363380826,-105.005256,39.7337116,-105.0052547,39.734614
-4917,4489,4490,0.161656025882071,0.161656025882071,-105.0052547,39.734614,-105.0052486,39.7360678
-4918,4490,4491,0.0905242566324277,0.0905242566324277,-105.0052486,39.7360678,-105.0052452,39.7368819
-4919,4491,1950,0.169005169872083,0.169005169872083,-105.0052452,39.7368819,-105.005245,39.7384018
-4920,1950,4492,0.126063150124326,0.126063150124326,-105.005245,39.7384018,-105.0052379,39.7395355
-4924,4081,3762,0.180617937803326,0.180617937803326,-105.005155,39.7838353,-105.0051409,39.7854596
-4926,2559,4495,0.0875396307338273,0.0875396307338273,-105.0051367,39.7862559,-105.0051056,39.7870428
-4927,4495,4496,0.0902282586364627,0.0902282586364627,-105.0051056,39.7870428,-105.0051314,39.787854
-4928,4496,4497,0.0878475091612825,0.0878475091612825,-105.0051314,39.787854,-105.0051406,39.788644
-4929,4497,4498,0.266301743580547,0.266301743580547,-105.0051406,39.788644,-105.005132,39.7910389
-4930,180,1708,0.203431976552675,0.203431976552675,-105.0355649,39.693093,-105.0355391,39.6912636
-4931,1708,4499,0.201230804203475,0.201230804203475,-105.0355391,39.6912636,-105.0355305,39.6894539
-4932,4499,1575,0.27729796539772,0.27729796539772,-105.0355305,39.6894539,-105.0369943,39.687229
-4933,1575,4500,0.182259795470885,0.182259795470885,-105.0369943,39.687229,-105.0371589,39.6855948
-4934,4501,4502,0.199005560216138,0.199005560216138,-105.0355649,39.7003312,-105.0355649,39.6985415
-4935,4502,4503,0.153202263597584,0.153202263597584,-105.0355649,39.6985415,-105.0355129,39.6971643
-4937,4504,4505,0.176923776962641,0.176923776962641,-105.0361142,39.7165547,-105.0361056,39.7149636
-4938,4505,1315,0.176127860687443,0.176127860687443,-105.0361056,39.7149636,-105.0360883,39.7133797
-4939,1315,1371,0.176782045374234,0.176782045374234,-105.0360883,39.7133797,-105.0361028,39.7117899
-4940,1371,4506,0.0626491861453163,0.0626491861453163,-105.0361028,39.7117899,-105.036097,39.7112265
-4941,4506,4507,0.0851767549198192,0.0851767549198192,-105.036097,39.7112265,-105.0360799,39.7104606
-4943,3035,4508,0.210570172682267,0.210570172682267,-104.9468584,39.7590562,-104.9468841,39.7609498
-4945,54,4510,0.19332295953062,0.19332295953062,-104.9511976,39.7002019,-104.9527144,39.6989132
-4946,4510,3640,0.0466160975278989,0.0466160975278989,-104.9527144,39.6989132,-104.9529616,39.6985396
-4948,4511,3531,0.0618894465423491,0.0618894465423491,-104.9541278,39.6978107,-104.954611,39.6973965
-4949,3531,4512,0.0905408166059636,0.0905408166059636,-104.954611,39.6973965,-104.9546673,39.6965834
-4951,3926,707,0.0755598922064861,0.0755598922064861,-105.0032486,39.7632388,-105.0041326,39.7632399
-4952,707,4513,0.0978688769552162,0.0978688769552162,-105.0041326,39.7632399,-105.0052776,39.7632414
-4953,4513,4514,0.0992771410926943,0.0992771410926943,-105.0052776,39.7632414,-105.0064389,39.7632258
-4954,4514,4188,0.135836888761709,0.135836888761709,-105.0064389,39.7632258,-105.0080281,39.7632238
-4955,4188,2514,0.135033448601963,0.135033448601963,-105.0080281,39.7632238,-105.0096079,39.7632217
-4956,2514,4515,0.13515296788921,0.13515296788921,-105.0096079,39.7632217,-105.0111891,39.7632228
-4957,4515,4516,0.136409392488761,0.136409392488761,-105.0111891,39.7632228,-105.012785,39.7632228
-4959,4517,4518,0.0356088442137805,0.0356088442137805,-105.0133602,39.7632209,-105.0137768,39.7632209
-4960,4518,4519,0.0503802448307333,0.0503802448307333,-105.0137768,39.7632209,-105.0143662,39.7632176
-4961,4519,4520,0.127581150438839,0.127581150438839,-105.0143662,39.7632176,-105.0158588,39.7632228
-4962,4520,4521,0.132742519290442,0.132742519290442,-105.0158588,39.7632228,-105.0174118,39.7632228
-4963,4521,4522,0.13263462094456,0.13263462094456,-105.0174118,39.7632228,-105.0189635,39.7632145
-4964,4522,1243,0.132622916068163,0.132622916068163,-105.0189635,39.7632145,-105.0205151,39.7632155
-4965,1243,4523,0.132744954601011,0.132744954601011,-105.0205151,39.7632155,-105.0220681,39.7632083
-4966,4523,2724,0.131940306625131,0.131940306625131,-105.0220681,39.7632083,-105.0236117,39.7632032
-4967,2724,4524,0.125887507119952,0.125887507119952,-105.0236117,39.7632032,-105.0250845,39.7632041
-4968,4524,4525,0.0073166618478819,0.0073166618478819,-105.0250845,39.7632041,-105.0251701,39.7632042
-4970,4526,4527,0.188224997765616,0.188224997765616,-105.030062,39.7638851,-105.0322641,39.7638939
-4971,4527,3419,0.20066865963842,0.20066865963842,-105.0322641,39.7638939,-105.0346118,39.7638877
-4973,4528,4529,0.132643815391647,0.132643815391647,-105.022041,39.751211,-105.0220809,39.7524035
-4974,4529,4288,0.134447795927953,0.134447795927953,-105.0220809,39.7524035,-105.0220723,39.7536126
-4975,4288,4530,0.0675286789518799,0.0675286789518799,-105.0220723,39.7536126,-105.0220723,39.7542199
-4976,4530,4531,0.0681514911729941,0.0681514911729941,-105.0220723,39.7542199,-105.0220708,39.7548328
-4978,1833,2628,0.0976402650867344,0.0976402650867344,-105.0227761,39.7211827,-105.0227761,39.7220608
-4980,4532,4428,0.101312368020336,0.101312368020336,-105.0227589,39.7166208,-105.0227675,39.7175319
-4981,4428,4533,0.0998335149833254,0.0998335149833254,-105.0227675,39.7175319,-105.0227761,39.7184297
-4982,4533,4534,0.1027774706977,0.1027774706977,-105.0227761,39.7184297,-105.0227761,39.719354
-4984,4535,1833,0.103500237720645,0.103500237720645,-105.0227761,39.7202519,-105.0227761,39.7211827
-4986,4536,4537,0.0953225774659935,0.0953225774659935,-105.0221025,39.7275212,-105.0221238,39.7283783
-4988,4538,4539,0.19878482816443,0.19878482816443,-105.0216452,39.7766253,-105.0216547,39.778413
-4989,4539,2830,0.201604542004037,0.201604542004037,-105.0216547,39.778413,-105.0216335,39.780226
-4990,2830,1438,0.197694612690532,0.197694612690532,-105.0216335,39.780226,-105.0216256,39.7820039
-4991,1438,4540,0.179002123409013,0.179002123409013,-105.0216256,39.7820039,-105.0216205,39.7836137
-4993,4541,25,0.138059623303707,0.138059623303707,-105.022071,39.7560345,-105.0220707,39.7572761
-4994,25,4542,0.0645746983944002,0.0645746983944002,-105.0220707,39.7572761,-105.0220625,39.7578568
-4995,4542,2964,0.0670651945252806,0.0670651945252806,-105.0220625,39.7578568,-105.0220789,39.7584598
-4999,4545,4546,0.142258977482996,0.142258977482996,-105.0220798,39.7753463,-105.02204,39.7766253
-5001,4547,115,0.110830423505847,0.110830423505847,-105.0217032,39.7293091,-105.0217118,39.7303058
-5003,4548,4549,0.0776585367690646,0.0776585367690646,-105.0217136,39.7305028,-105.0217136,39.7312012
-5004,4549,4550,0.199094650034446,0.199094650034446,-105.0217136,39.7312012,-105.0217163,39.7329917
-5005,4550,4551,0.100232131513911,0.100232131513911,-105.0217163,39.7329917,-105.0217216,39.7338931
-5007,4552,2292,0.132777862181536,0.132777862181536,-105.0217376,39.7344378,-105.0217377,39.7356319
-5008,2292,4553,0.0918166647273585,0.0918166647273585,-105.0217377,39.7356319,-105.021729,39.7364576
-5009,4553,2534,0.18135507208955,0.18135507208955,-105.021729,39.7364576,-105.0217592,39.7380884
-5011,2627,4554,0.0924500575644084,0.0924500575644084,-105.0220898,39.7220653,-105.0220979,39.7228967
-5012,4554,4555,0.10983037862614,0.10983037862614,-105.0220979,39.7228967,-105.0221186,39.7238843
-5014,4523,4556,0.135380005592348,0.135380005592348,-105.0220681,39.7632083,-105.0220655,39.7644258
-5015,4556,4557,0.134346145402708,0.134346145402708,-105.0220655,39.7644258,-105.0220695,39.765634
-5016,4557,4558,0.133189336887005,0.133189336887005,-105.0220695,39.765634,-105.0220681,39.7668318
-5017,4558,1680,0.13514752705788,0.13514752705788,-105.0220681,39.7668318,-105.0220748,39.7680472
-5018,1680,4559,0.137419251565084,0.137419251565084,-105.0220748,39.7680472,-105.0220879,39.769283
-5020,4560,4064,0.13135456684589,0.13135456684589,-105.0220781,39.7475968,-105.0220781,39.7487781
-5021,4064,4561,0.134278993416053,0.134278993416053,-105.0220781,39.7487781,-105.0220781,39.7499857
-5023,4101,4562,0.159933235501875,0.159933235501875,-105.0216462,39.7841819,-105.0216379,39.7856202
-5025,4563,4564,0.407964486856081,0.407964486856081,-105.0216452,39.7874253,-105.0216326,39.7910942
-5026,4565,2188,0.10962848253063,0.10962848253063,-105.0146647,39.7375398,-105.0159468,39.7375377
-17150,4780,4781,0.199841658014134,0.199841658014134,-104.9751815,39.7020519,-104.9751707,39.7038491
-5028,4566,687,0.202530686471354,0.202530686471354,-104.9275226,39.7401271,-104.9275189,39.7419485
-5029,687,1982,0.159069792202276,0.159069792202276,-104.9275189,39.7419485,-104.9275343,39.743379
-5030,1982,1967,0.0383650278893233,0.0383650278893233,-104.9275343,39.743379,-104.9275397,39.743724
-5033,4567,1928,0.199711508236703,0.199711508236703,-104.9605404,39.7092844,-104.9605576,39.7074884
-5034,1928,4568,0.201653602761609,0.201653602761609,-104.9605576,39.7074884,-104.9605482,39.7056749
-5035,4568,3272,0.202185746700204,0.202185746700204,-104.9605482,39.7056749,-104.960549,39.7038566
-5036,3272,4569,0.20093413075273,0.20093413075273,-104.960549,39.7038566,-104.9605654,39.7020496
-5037,4569,85,0.20339775981857,0.20339775981857,-104.9605654,39.7020496,-104.9605654,39.7002204
-5038,85,3521,0.203998373883698,0.203998373883698,-104.9605654,39.7002204,-104.9605624,39.6983858
-5039,3521,4262,0.200473333246826,0.200473333246826,-104.9605624,39.6983858,-104.9605624,39.6965829
-5040,4262,4570,0.200485802986416,0.200485802986416,-104.9605624,39.6965829,-104.960571,39.6947799
-5041,4570,4571,0.201223720769428,0.201223720769428,-104.960571,39.6947799,-104.9605882,39.6929703
-5042,4571,4572,0.205786578364508,0.205786578364508,-104.9605882,39.6929703,-104.9605654,39.6911197
-5043,4572,4573,0.200686081138238,0.200686081138238,-104.9605654,39.6911197,-104.9605564,39.6893149
-5044,4573,4574,0.200311699167283,0.200311699167283,-104.9605564,39.6893149,-104.9605396,39.6875135
-5045,4575,4576,0.13275170286213,0.13275170286213,-105.0268099,39.7414867,-105.0283618,39.741523
-5046,4576,4011,0.136238719327193,0.136238719327193,-105.0283618,39.741523,-105.0299552,39.7415215
-5049,4578,3382,0.130912952312419,0.130912952312419,-105.0330646,39.7415188,-105.0345957,39.741514
-5050,3382,4579,0.10420964387947,0.10420964387947,-105.0345957,39.741514,-105.0358145,39.741514
-5051,4579,4580,0.100328081358343,0.100328081358343,-105.0358145,39.741514,-105.0369879,39.7415159
-5053,4581,4582,0.100688559836452,0.100688559836452,-105.0381505,39.741515,-105.0393281,39.7415201
-5054,4582,1104,0.099555514740453,0.099555514740453,-105.0393281,39.7415201,-105.0404924,39.7415105
-5055,1104,4583,0.100465419279427,0.100465419279427,-105.0404924,39.7415105,-105.0416673,39.7415228
-5056,4583,4584,0.100511332021349,0.100511332021349,-105.0416673,39.7415228,-105.0428428,39.7415308
-5057,4584,4585,0.0999153218838928,0.0999153218838928,-105.0428428,39.7415308,-105.0440113,39.7415206
-5059,3498,4586,0.198271673699608,0.198271673699608,-104.9477042,39.6983792,-104.9477042,39.6965961
-5060,4586,4587,0.203313884946152,0.203313884946152,-104.9477042,39.6965961,-104.9476874,39.6947677
-5062,4588,3598,0.162446986671654,0.162446986671654,-104.9320576,39.744666,-104.9301576,39.7446611
-5065,4590,4591,0.145581982651648,0.145581982651648,-104.9406235,39.7449365,-104.9389209,39.7449185
-20699,10909,10894,0.00288177410229764,0.00288177410229764,-105.0401144,39.7656928,-105.0400807,39.765692
-5066,4591,4592,0.145302049591696,0.145302049591696,-104.9389209,39.7449185,-104.9372215,39.7449317
-5067,4592,2013,0.147364635735888,0.147364635735888,-104.9372215,39.7449317,-104.9354979,39.7449269
-5068,2013,4593,0.147376079792043,0.147376079792043,-104.9354979,39.7449269,-104.9337742,39.7449365
-5069,4593,4594,0.146031742389181,0.146031742389181,-104.9337742,39.7449365,-104.9320662,39.7449299
-5071,4595,4596,0.179128666689522,0.179128666689522,-104.9581328,39.7438013,-104.9598011,39.7447758
-5072,4596,4597,0.0491363059718978,0.0491363059718978,-104.9598011,39.7447758,-104.9603758,39.7447782
-5073,4597,4598,0.0534283507033442,0.0534283507033442,-104.9603758,39.7447782,-104.9610007,39.7447808
-5074,4598,4599,0.051162571237203,0.051162571237203,-104.9610007,39.7447808,-104.9615991,39.7447832
-5076,1025,3894,0.103299911807114,0.103299911807114,-104.9622361,39.7447859,-104.9634443,39.7447909
-5077,3894,4600,0.113012549862716,0.113012549862716,-104.9634443,39.7447909,-104.9647661,39.7447963
-5078,4600,4601,0.103445240313361,0.103445240313361,-104.9647661,39.7447963,-104.965976,39.7448013
-5079,4601,4602,0.110216736617757,0.110216736617757,-104.965976,39.7448013,-104.9672651,39.7448066
-5080,4602,4603,0.098537605440947,0.098537605440947,-104.9672651,39.7448066,-104.9684176,39.7448114
-5081,4603,4604,0.10689939615188,0.10689939615188,-104.9684176,39.7448114,-104.9696679,39.7448166
-5082,4604,4605,0.104556664577465,0.104556664577465,-104.9696679,39.7448166,-104.9708908,39.7448216
-5083,4605,4606,0.106796784548208,0.106796784548208,-104.9708908,39.7448216,-104.9721399,39.7448268
-5084,4606,2884,0.106044347623682,0.106044347623682,-104.9721399,39.7448268,-104.9733802,39.7448319
-5085,2884,4607,0.118270695339941,0.118270695339941,-104.9733802,39.7448319,-104.9747635,39.7448376
-6370,5524,5525,0.0492521789985846,0.0492521789985846,-105.0392946,39.7738629,-105.0398709,39.7738651
-5087,4608,4609,0.117800444995037,0.117800444995037,-104.9761582,39.7448434,-104.977536,39.7448491
-5088,4609,4610,0.102641376464428,0.102641376464428,-104.977536,39.7448491,-104.9787365,39.7448539
-5089,4610,4611,0.0494099001663831,0.0494099001663831,-104.9787365,39.7448539,-104.9793144,39.7448564
-5090,4611,4612,0.0461096147761951,0.0461096147761951,-104.9793144,39.7448564,-104.9798537,39.7448587
-5091,4612,4613,0.102709817700352,0.102709817700352,-104.9798537,39.7448587,-104.981055,39.7448636
-5092,4613,4614,0.107788478157863,0.107788478157863,-104.981055,39.7448636,-104.9823157,39.7448688
-5093,4614,4615,0.106309381819152,0.106309381819152,-104.9823157,39.7448688,-104.9835591,39.744874
-5095,4618,4619,0.107514865026302,0.107514865026302,-104.9848531,39.7448793,-104.9861106,39.7448845
-5096,4619,4620,0.109618128547838,0.109618128547838,-104.9861106,39.7448845,-104.9873927,39.7448898
-5098,4621,4622,0.0890723635550207,0.0890723635550207,-104.9285042,39.7446792,-104.9274625,39.7446677
-5100,4623,4522,0.133190665745901,0.133190665745901,-105.0189564,39.7620167,-105.0189635,39.7632145
-5102,4624,4625,0.133658094916269,0.133658094916269,-105.0189554,39.7644371,-105.0189635,39.7656391
-5103,4625,4626,0.133656501053085,0.133656501053085,-105.0189635,39.7656391,-105.0189608,39.7668411
-5104,4626,1679,0.135152153872346,0.135152153872346,-105.0189608,39.7668411,-105.0189755,39.7680565
-5105,1679,4627,0.135024432224219,0.135024432224219,-105.0189755,39.7680565,-105.0189715,39.7692708
-5106,4627,2458,0.13515140493347,0.13515140493347,-105.0189715,39.7692708,-105.0189397,39.770486
-5107,2458,3226,0.138004027692966,0.138004027692966,-105.0189397,39.770486,-105.0189401,39.7717271
-5108,3226,4628,0.134323473833378,0.134323473833378,-105.0189401,39.7717271,-105.0189404,39.7729351
-5110,4629,4630,0.135446542572512,0.135446542572512,-105.0189408,39.7741298,-105.0189411,39.7753479
-19829,9519,10649,0.210072579992032,0.210072579992032,-105.0422578,39.7403509,-105.0422444,39.7384617
-5113,4632,4633,0.0947313767183171,0.0947313767183171,-105.0192808,39.733891,-105.0192915,39.7347429
-5115,4634,4635,0.0557913419625853,0.0557913419625853,-105.0192656,39.7311969,-105.0192742,39.7316986
-5116,4635,4636,0.0662366225916723,0.0662366225916723,-105.0192742,39.7316986,-105.0191455,39.732286
-5117,4636,4637,0.113593419326123,0.113593419326123,-105.0191455,39.732286,-105.0198922,39.7331309
-5120,4639,4640,0.132773960128622,0.132773960128622,-105.0193449,39.7766055,-105.0193287,39.7777995
-5121,4640,2488,0.134241502580257,0.134241502580257,-105.0193287,39.7777995,-105.0193545,39.7790066
-5122,2488,2829,0.133449886794901,0.133449886794901,-105.0193545,39.7790066,-105.0193075,39.7802062
-5123,2829,1437,0.199500232175966,0.199500232175966,-105.0193075,39.7802062,-105.0193247,39.7820003
-5124,1437,4641,0.151025004831673,0.151025004831673,-105.0193247,39.7820003,-105.0193032,39.7833584
-5126,4642,114,0.107737280643715,0.107737280643715,-105.0192742,39.7293289,-105.0192781,39.7302978
-5127,114,4643,0.05007218616811,0.05007218616811,-105.0192781,39.7302978,-105.0192742,39.7307481
-5129,4644,4645,0.207043620739087,0.207043620739087,-105.018682,39.7183967,-105.0186476,39.7202585
-5130,4645,1842,0.100003312332805,0.100003312332805,-105.0186476,39.7202585,-105.0186351,39.7211578
-5131,1842,2639,0.103345313678593,0.103345313678593,-105.0186351,39.7211578,-105.0186305,39.7220872
-5132,2639,4646,0.199597531872746,0.199597531872746,-105.0186305,39.7220872,-105.0186425,39.7238822
-5133,4646,4647,0.110338949764664,0.110338949764664,-105.0186425,39.7238822,-105.0186451,39.7248745
-5134,4647,4648,0.0862326024249021,0.0862326024249021,-105.0186451,39.7248745,-105.0186498,39.72565
-5135,4648,4649,0.00885483385456902,0.00885483385456902,-105.0186498,39.72565,-105.0186468,39.7257296
-5136,4649,4650,0.198772614686204,0.198772614686204,-105.0186468,39.7257296,-105.018672,39.7275171
-5138,275,4651,0.385379364010995,0.385379364010995,-105.0183528,39.7401138,-105.0171429,39.7434524
-5139,4651,4652,0.41471692527459,0.41471692527459,-105.0171429,39.7434524,-105.018965,39.7469089
-5140,4652,4653,0.0539741907357585,0.0539741907357585,-105.018965,39.7469089,-105.0189634,39.7473943
-5141,4653,4654,0.022194548523775,0.022194548523775,-105.0189634,39.7473943,-105.0189639,39.7475939
-5142,4654,4206,0.207869157343365,0.207869157343365,-105.0189639,39.7475939,-105.0189551,39.7494633
-5144,4655,4656,0.134281006104493,0.134281006104493,-105.0191439,39.7512186,-105.0191525,39.7524262
-5145,4656,2404,0.0664009097985413,0.0664009097985413,-105.0191525,39.7524262,-105.0191633,39.7530233
-5146,2404,4287,0.0661523414774278,0.0661523414774278,-105.0191633,39.7530233,-105.0191566,39.7536182
-5147,4287,4657,0.134479579019433,0.134479579019433,-105.0191566,39.7536182,-105.0191606,39.7548276
-5149,4658,4659,0.0841530151799317,0.0841530151799317,-105.0191633,39.7552936,-105.0191593,39.7560504
-5150,4659,23,0.134991372812694,0.134991372812694,-105.0191593,39.7560504,-105.0191645,39.7572644
-5152,4098,4660,0.191146561014702,0.191146561014702,-105.0193253,39.7838997,-105.0193139,39.7856187
-5153,4660,4661,0.201619149588839,0.201619149588839,-105.0193139,39.7856187,-105.0193192,39.7874319
-5154,4661,4662,0.406108499193961,0.406108499193961,-105.0193192,39.7874319,-105.0193029,39.7910841
-5155,1948,2564,0.13210280054913,0.13210280054913,-105.0095234,39.7384742,-105.0095126,39.7396622
-5157,4663,388,0.102051980712047,0.102051980712047,-104.9982624,39.7134841,-104.9994213,39.713266
-5159,1442,4664,0.0822712120832148,0.0822712120832148,-105.0038934,39.7139133,-105.0048549,39.7139327
-5160,4664,4665,0.119816357959701,0.119816357959701,-105.0048549,39.7139327,-105.0062556,39.7139435
-5161,4665,4666,0.204097543225869,0.204097543225869,-105.0062556,39.7139435,-105.0086417,39.7139435
-5162,4666,4667,0.203014171650501,0.203014171650501,-105.0086417,39.7139435,-105.011015,39.7139241
-5164,4668,1869,0.212544115775742,0.212544115775742,-104.9875126,39.713878,-104.9899974,39.7138897
-5165,1869,4183,0.200120502606903,0.200120502606903,-104.9899974,39.7138897,-104.992337,39.713887
-5167,4669,2615,0.177891060007606,0.177891060007606,-104.994016,39.720921,-104.9940077,39.7225208
-5169,4670,4671,0.124038366426802,0.124038366426802,-104.9940093,39.7230042,-104.9940131,39.7241197
-5171,2421,3232,0.143042998317255,0.143042998317255,-104.9936465,39.7704869,-104.993638,39.7717733
-5173,4672,2028,0.132076698976753,0.132076698976753,-104.9936519,39.772996,-104.9936175,39.7741835
-5174,2028,4673,0.145972981302679,0.145972981302679,-104.9936175,39.7741835,-104.9936347,39.7754962
-5175,4673,4674,0.125161327150552,0.125161327150552,-104.9936347,39.7754962,-104.993638,39.7766218
-5177,3368,4675,0.102054188376367,0.102054188376367,-104.9939645,39.7165966,-104.9939817,39.7175143
-5178,4675,3714,0.0982241705421038,0.0982241705421038,-104.9939817,39.7175143,-104.9940184,39.7183972
-5179,3714,4676,0.103510692140635,0.103510692140635,-104.9940184,39.7183972,-104.9940356,39.719328
-5181,4677,4678,0.0648734285683964,0.0648734285683964,-104.9941264,39.7346802,-104.99412,39.7352636
-5182,4678,615,0.177689539069832,0.177689539069832,-104.99412,39.7352636,-104.9941215,39.7368616
-5183,615,4679,0.176110549937417,0.176110549937417,-104.9941215,39.7368616,-104.9941204,39.7384454
-5184,4679,4680,0.173776320124656,0.173776320124656,-104.9941204,39.7384454,-104.9941139,39.7400082
-5186,4681,4682,0.184513059882878,0.184513059882878,-104.9939973,39.7256815,-104.9940278,39.7273407
-5187,4682,4685,0.175211932943401,0.175211932943401,-104.9940278,39.7273407,-104.9940378,39.7289164
-5189,4686,4687,0.349232193394911,0.349232193394911,-104.9940692,39.730515,-104.9941176,39.7336555
-5191,1357,4688,0.13277378561117,0.13277378561117,-104.992658,39.7824897,-104.9926323,39.7836836
-5193,4689,4690,0.459634230640815,0.459634230640815,-105.043221,39.7097211,-105.048594,39.7097607
-5194,4691,4692,0.0991279407871357,0.0991279407871357,-105.0362258,39.7094372,-105.0373845,39.7094504
-5195,4692,4693,0.0976485109623955,0.0976485109623955,-105.0373845,39.7094504,-105.038526,39.7094438
-5197,4694,4695,0.0991197857977998,0.0991197857977998,-105.0397105,39.7094438,-105.0408692,39.7094504
-5198,4695,4696,0.10132403770971,0.10132403770971,-105.0408692,39.7094504,-105.0420537,39.7094504
-5199,4696,4697,0.0991849406088648,0.0991849406088648,-105.0420537,39.7094504,-105.0432124,39.7094834
-5201,1637,4698,0.104258284661182,0.104258284661182,-105.0156865,39.7093381,-105.0169053,39.7093381
-5202,4698,4215,0.0991281021081487,0.0991281021081487,-105.0169053,39.7093381,-105.018064,39.7093249
-5203,4215,4699,0.0976569662788289,0.0976569662788289,-105.018064,39.7093249,-105.0192055,39.7093117
-5204,4699,195,0.10058858208642,0.10058858208642,-105.0192055,39.7093117,-105.0203814,39.7093117
-5205,195,2924,0.0991416985641161,0.0991416985641161,-105.0203814,39.7093117,-105.0215401,39.7093315
-5206,2924,4700,0.0991366648288655,0.0991366648288655,-105.0215401,39.7093315,-105.0226989,39.7093183
-5207,4700,1462,0.100582700478246,0.100582700478246,-105.0226989,39.7093183,-105.0238747,39.7093117
-5208,1462,4701,0.102418321557774,0.102418321557774,-105.0238747,39.7093117,-105.0250719,39.709323
-5212,4704,1872,0.0821525251365273,0.0821525251365273,-104.9890412,39.7093409,-104.9900015,39.7093504
-17295,10015,3501,0.20024191652091,0.20024191652091,-104.9447901,39.696585,-104.9447794,39.6983858
-5214,1445,4705,0.199727367553687,0.199727367553687,-105.0039116,39.7093165,-105.0062462,39.7093429
-5215,4705,4706,0.203375496003776,0.203375496003776,-105.0062462,39.7093429,-105.0086237,39.7093429
-5216,4706,4707,0.201909493723453,0.201909493723453,-105.0086237,39.7093429,-105.010984,39.7093561
-5218,4708,403,0.0454257390325356,0.0454257390325356,-104.9701293,39.7802775,-104.970135,39.780686
-5219,403,314,0.0562503326449317,0.0562503326449317,-104.970135,39.780686,-104.970235,39.781186
-5220,314,4709,0.11119492664509,0.11119492664509,-104.970235,39.781186,-104.970235,39.782186
-5222,4711,4170,0.194203357035268,0.194203357035268,-104.9694168,39.7183425,-104.9694426,39.7200889
-5223,4170,4712,0.208127290131148,0.208127290131148,-104.9694426,39.7200889,-104.969428,39.7219606
-5224,4712,4713,0.198927723766577,0.198927723766577,-104.969428,39.7219606,-104.969428,39.7237496
-5225,4713,4714,0.204935128047674,0.204935128047674,-104.969428,39.7237496,-104.9694407,39.7255926
-5226,4714,4715,0.188520271439654,0.188520271439654,-104.9694407,39.7255926,-104.9694452,39.727288
-5227,4715,3793,0.199712422815397,0.199712422815397,-104.9694452,39.727288,-104.9694638,39.729084
-5228,3793,4716,0.152617432717184,0.152617432717184,-104.9694638,39.729084,-104.9694538,39.7304565
-5229,4716,944,0.17742675257367,0.17742675257367,-104.9694538,39.7304565,-104.969481,39.732052
-5230,944,2228,0.183696049186415,0.183696049186415,-104.969481,39.732052,-104.9694709,39.733704
-5231,2228,4717,0.162619098965448,0.162619098965448,-104.9694709,39.733704,-104.9695136,39.7351661
-5232,4717,4718,0.189722276081874,0.189722276081874,-104.9695136,39.7351661,-104.9695224,39.7368723
-5233,4718,4719,0.171945095410338,0.171945095410338,-104.9695224,39.7368723,-104.9695494,39.7384185
-5234,4719,4720,0.177429725627003,0.177429725627003,-104.9695494,39.7384185,-104.9696136,39.7400134
-5235,4720,4721,0.102690706769844,0.102690706769844,-104.9696136,39.7400134,-104.9696847,39.7409353
-5236,4721,4722,0.0746285232074726,0.0746285232074726,-104.9696847,39.7409353,-104.969674,39.7416064
-5237,4722,668,0.00411462210691817,0.00411462210691817,-104.969674,39.7416064,-104.9696776,39.7416433
-5238,668,4723,0.00380364497345728,0.00380364497345728,-104.9696776,39.7416433,-104.9696767,39.7416775
-5240,4724,4604,0.175355420651263,0.175355420651263,-104.9696749,39.7432396,-104.9696679,39.7448166
-5242,1146,875,0.136296969384937,0.136296969384937,-104.9696868,39.7632831,-104.9696488,39.7645085
-5244,4463,2783,0.133890793284356,0.133890793284356,-104.9696481,39.7657517,-104.9696421,39.7669558
-5245,2783,4725,0.132805963492264,0.132805963492264,-104.9696421,39.7669558,-104.9696275,39.7681501
-5246,4725,4726,0.129702593554695,0.129702593554695,-104.9696275,39.7681501,-104.9698076,39.7693083
-5247,4726,4727,0.147549019452937,0.147549019452937,-104.9698076,39.7693083,-104.9683879,39.7700633
-5249,4728,4729,0.134556994040934,0.134556994040934,-104.9696547,39.7482082,-104.9696554,39.7494183
-5250,4729,4730,0.00403637583696172,0.00403637583696172,-104.9696554,39.7494183,-104.9696554,39.7494546
-5251,4730,4731,0.00537071495727797,0.00537071495727797,-104.9696554,39.7494546,-104.9696554,39.7495029
-5252,4731,4732,0.135502150823282,0.135502150823282,-104.9696554,39.7495029,-104.9696561,39.7507215
-5253,4732,4733,0.139193822038205,0.139193822038205,-104.9696561,39.7507215,-104.9696568,39.7519733
-5254,4733,820,0.139638598300339,0.139638598300339,-104.9696568,39.7519733,-104.9696574,39.7532291
-5255,820,3561,0.13948292881931,0.13948292881931,-104.9696574,39.7532291,-104.9696581,39.7544835
-5256,3561,4734,0.140172337301063,0.140172337301063,-104.9696581,39.7544835,-104.9696588,39.7557441
-5257,4734,4339,0.137170074560425,0.137170074560425,-104.9696588,39.7557441,-104.9696595,39.7569777
-5258,4339,4735,0.138982548276464,0.138982548276464,-104.9696595,39.7569777,-104.9696601,39.7582276
-5259,4735,3054,0.142752059367152,0.142752059367152,-104.9696601,39.7582276,-104.9696608,39.7595114
-5260,3054,4736,0.133100340642693,0.133100340642693,-104.9696608,39.7595114,-104.9696615,39.7607084
-5261,4736,4737,0.00492593525024253,0.00492593525024253,-104.9696615,39.7607084,-104.9696615,39.7607527
-5263,4738,3350,0.0528651873534889,0.0528651873534889,-104.9576522,39.7225573,-104.9570341,39.7225614
-5264,3350,4739,0.10426363885095,0.10426363885095,-104.9570341,39.7225614,-104.9558154,39.7225375
-5265,4739,4740,0.102034414473958,0.102034414473958,-104.9558154,39.7225375,-104.9546224,39.7225441
-14766,5462,7420,0.173120091654239,0.173120091654239,-104.9804447,39.73843,-104.9804389,39.7368731
-5266,4740,2059,0.102862063735102,0.102862063735102,-104.9546224,39.7225441,-104.9534197,39.7225407
-5267,2059,2645,0.103513208640623,0.103513208640623,-104.9534197,39.7225407,-104.9522095,39.7225539
-5268,2645,4111,0.104240888550753,0.104240888550753,-104.9522095,39.7225539,-104.9509907,39.7225605
-5270,4741,4742,0.102769926646245,0.102769926646245,-104.9498232,39.7225289,-104.9486216,39.7225355
-5271,4742,4743,0.104240916363933,0.104240916363933,-104.9486216,39.7225355,-104.9474028,39.7225421
-5272,4743,3452,0.105180194746781,0.105180194746781,-104.9474028,39.7225421,-104.9461731,39.7225293
-5273,3452,4744,0.10036641032569,0.10036641032569,-104.9461731,39.7225293,-104.9449996,39.7225355
-5274,4744,3882,0.105711927066125,0.105711927066125,-104.9449996,39.7225355,-104.9437636,39.7225289
-5275,3882,845,0.10371038656759,0.10371038656759,-104.9437636,39.7225289,-104.942551,39.7225227
-5276,845,4745,0.104689829390385,0.104689829390385,-104.942551,39.7225227,-104.9413272,39.7225428
-5277,4745,4746,0.0469848225431211,0.0469848225431211,-104.9413272,39.7225428,-104.9407779,39.7225362
-5279,2610,4747,0.106209148179485,0.106209148179485,-104.9874808,39.7225308,-104.986239,39.7225388
-5280,4747,4748,0.0529916423937814,0.0529916423937814,-104.986239,39.7225388,-104.9856194,39.7225378
-5282,4749,4750,0.0385383772070312,0.0385383772070312,-104.9854584,39.7225389,-104.9850078,39.7225409
-5283,4750,966,0.102580898845139,0.102580898845139,-104.9850078,39.7225409,-104.9838084,39.7225355
-5285,990,4751,0.0998368598850094,0.0998368598850094,-104.97408,39.7219474,-104.9729128,39.7219606
-5286,4751,4752,0.0507426333200071,0.0507426333200071,-104.9729128,39.7219606,-104.9723195,39.7219606
-5287,4752,4753,0.0483650078238011,0.0483650078238011,-104.9723195,39.7219606,-104.971754,39.7219606
-5288,4753,1987,0.0507354905741477,0.0507354905741477,-104.971754,39.7219606,-104.9711608,39.7219572
-5289,1987,4754,0.0483663202205498,0.0483663202205498,-104.9711608,39.7219572,-104.9705953,39.721954
-5290,4754,446,0.051479549664384,0.051479549664384,-104.9705953,39.721954,-104.9699934,39.7219574
-5291,446,4712,0.0483577654581108,0.0483577654581108,-104.9699934,39.7219574,-104.969428,39.7219606
-5292,4712,4755,0.101297109225192,0.101297109225192,-104.969428,39.7219606,-104.9682436,39.7219606
-5293,4755,4756,0.0117741801721385,0.0117741801721385,-104.9682436,39.7219606,-104.9681062,39.721954
-5294,4756,4757,0.0826634733388868,0.0826634733388868,-104.9681062,39.721954,-104.9671402,39.7219786
-5295,4757,4758,0.0342509974874732,0.0342509974874732,-104.9671402,39.7219786,-104.96674,39.72199
-5296,4758,4759,0.0175268141449879,0.0175268141449879,-104.96674,39.72199,-104.9665355,39.7220002
-5297,4759,4760,0.0234785463070149,0.0234785463070149,-104.9665355,39.7220002,-104.966261,39.7219977
-5298,4760,4761,0.0484972333709921,0.0484972333709921,-104.966261,39.7219977,-104.9656944,39.7219804
-5299,4761,3126,0.0271800985558075,0.0271800985558075,-104.9656944,39.7219804,-104.9653769,39.7219698
-5300,3126,3148,0.0183600177870361,0.0183600177870361,-104.9653769,39.7219698,-104.9651624,39.7219764
-5301,3148,3143,0.0330468719768483,0.0330468719768483,-104.9651624,39.7219764,-104.9647761,39.721983
-5302,3143,4762,0.0646645186035183,0.0646645186035183,-104.9647761,39.721983,-104.9640208,39.7219566
-5303,4762,3915,0.0595606911380279,0.0595606911380279,-104.9640208,39.7219566,-104.963325,39.7219789
-5304,3915,1052,0.123917065152439,0.123917065152439,-104.963325,39.7219789,-104.9620287,39.7224767
-5305,1052,4399,0.111768087862579,0.111768087862579,-104.9620287,39.7224767,-104.9607224,39.7225056
-5306,4399,4763,0.0469346079446244,0.0469346079446244,-104.9607224,39.7225056,-104.9601753,39.7225386
-5308,4764,4765,0.103730937833073,0.103730937833073,-104.959446,39.7225375,-104.9582333,39.722553
-5311,3155,4767,0.101587564129846,0.101587564129846,-104.9811238,39.7224897,-104.979936,39.722487
-5312,4767,4768,0.101450282305199,0.101450282305199,-104.979936,39.722487,-104.9787498,39.7224871
-5313,4768,4769,0.102136172096814,0.102136172096814,-104.9787498,39.7224871,-104.9775557,39.7224741
-5314,4769,4770,0.0492382919352757,0.0492382919352757,-104.9775557,39.7224741,-104.97698,39.7224773
-5316,4771,4772,0.100332506519832,0.100332506519832,-104.9764091,39.7224805,-104.975236,39.722487
-5317,4772,4773,0.0490390048099826,0.0490390048099826,-104.975236,39.722487,-104.9746628,39.7224758
-5318,4773,989,0.0495269165196006,0.0495269165196006,-104.9746628,39.7224758,-104.9740839,39.7224644
-5320,4774,4775,0.110656269548842,0.110656269548842,-104.9406125,39.7231655,-104.9393188,39.7231502
-5321,4775,4776,0.0922568863786424,0.0922568863786424,-104.9393188,39.7231502,-104.9382401,39.7231549
-5322,4776,4777,0.0968744294941002,0.0968744294941002,-104.9382401,39.7231549,-104.9371074,39.7231516
-5323,4777,4778,0.0933681364009737,0.0933681364009737,-104.9371074,39.7231516,-104.9360157,39.7231479
-5324,4778,2017,0.096243154582377,0.096243154582377,-104.9360157,39.7231479,-104.9348905,39.7231609
-5325,2017,2007,0.0302079551181684,0.0302079551181684,-104.9348905,39.7231609,-104.9345373,39.7231591
-5326,2007,4779,0.0612998845077431,0.0612998845077431,-104.9345373,39.7231591,-104.9338206,39.7231525
-5327,4779,2763,0.0939372654248904,0.0939372654248904,-104.9338206,39.7231525,-104.9327223,39.7231433
-5328,2763,4782,0.0939831368366747,0.0939831368366747,-104.9327223,39.7231433,-104.9316237,39.7231631
-5329,4782,2267,0.0946761779636641,0.0946761779636641,-104.9316237,39.7231631,-104.9305167,39.7231657
-5330,2267,3596,0.0957452269737562,0.0957452269737562,-104.9305167,39.7231657,-104.9293972,39.7231683
-5332,4783,2096,0.0938496563543502,0.0938496563543502,-104.9282926,39.7231695,-104.9271953,39.7231622
-5333,2096,4784,0.0942585077375453,0.0942585077375453,-104.9271953,39.7231622,-104.9260932,39.7231675
-5334,4784,4785,0.0947863905236846,0.0947863905236846,-104.9260932,39.7231675,-104.924985,39.7231786
-5335,4785,2332,0.0940516760171392,0.0940516760171392,-104.924985,39.7231786,-104.9238853,39.7231807
-6607,5694,5695,0.0154325675938591,0.0154325675938591,-105.0360627,39.7071657,-105.0362429,39.7071723
-5337,4089,4787,0.198005363606862,0.198005363606862,-105.0135338,39.7838344,-105.0135283,39.7856151
-5339,4788,4789,0.404049086255387,0.404049086255387,-105.013522,39.787431,-105.013525,39.7910647
-5340,4790,119,0.0976422064224313,0.0976422064224313,-105.0128361,39.7293183,-105.0128289,39.7301964
-5341,119,4791,0.0958834096516534,0.0958834096516534,-105.0128289,39.7301964,-105.0128297,39.7310587
-5342,4791,2312,0.0465244099907656,0.0465244099907656,-105.0128297,39.7310587,-105.0128321,39.7314771
-5344,4792,2484,0.133450471266853,0.133450471266853,-105.0126909,39.7777735,-105.0126768,39.7789736
-5345,2484,2823,0.13353766665554,0.13353766665554,-105.0126768,39.7789736,-105.0126652,39.7801745
-5346,2823,1414,0.132023734494372,0.132023734494372,-105.0126652,39.7801745,-105.0126737,39.7813618
-5347,1414,1354,0.131894209152808,0.131894209152808,-105.0126737,39.7813618,-105.0126985,39.7825478
-5348,1354,4793,0.0769784662870068,0.0769784662870068,-105.0126985,39.7825478,-105.0126685,39.7832397
-5350,4794,4795,0.0387509077758481,0.0387509077758481,-105.0131497,39.7568505,-105.0131391,39.7571989
-5351,4795,2952,0.134935498636386,0.134935498636386,-105.0131391,39.7571989,-105.013135,39.7584124
-5352,2952,4796,0.136197421914805,0.136197421914805,-105.013135,39.7584124,-105.0131498,39.7596372
-5353,4796,4797,0.129998438382796,0.129998438382796,-105.0131498,39.7596372,-105.0131458,39.7608063
-5354,4797,4798,0.134935065412598,0.134935065412598,-105.0131458,39.7608063,-105.0131467,39.7620198
-5356,2635,4799,0.200962590925039,0.200962590925039,-105.0131527,39.7220573,-105.0131527,39.72025
-5357,4799,4800,0.183883066303689,0.183883066303689,-105.0131527,39.72025,-105.0131518,39.7185963
-5358,4801,4802,0.0508168176081005,0.0508168176081005,-105.0127766,39.7620198,-105.0127798,39.7624768
-5359,4802,4516,0.0829526060571819,0.0829526060571819,-105.0127798,39.7624768,-105.012785,39.7632228
-6631,5709,5710,0.263510763458761,0.263510763458761,-105.0362218,39.7282406,-105.0362304,39.7306104
-5360,4516,4803,0.133849874797103,0.133849874797103,-105.012785,39.7632228,-105.0127721,39.7644265
-5361,4803,4804,0.135491260752817,0.135491260752817,-105.0127721,39.7644265,-105.0127751,39.765645
-5363,4805,1674,0.127474088546245,0.127474088546245,-105.0127781,39.7668943,-105.0127809,39.7680407
-5364,1674,4806,0.138137679733803,0.138137679733803,-105.0127809,39.7680407,-105.0127838,39.769283
-5366,4807,2455,0.134491411129426,0.134491411129426,-105.0135134,39.7692764,-105.0135199,39.7704859
-5367,2455,3223,0.138294178425788,0.138294178425788,-105.0135199,39.7704859,-105.0135136,39.7717296
-5369,4808,4809,0.133134706345954,0.133134706345954,-105.0135073,39.7729344,-105.0135012,39.7741317
-5370,4809,4810,0.135569856870466,0.135569856870466,-105.0135012,39.7741317,-105.0134951,39.7753509
-5371,4810,4811,0.134368341783309,0.134368341783309,-105.0134951,39.7753509,-105.0134913,39.7765593
-5372,4811,4812,0.133035455825063,0.133035455825063,-105.0134913,39.7765593,-105.0134831,39.7777557
-5374,4813,4814,0.201931453578911,0.201931453578911,-105.0131892,39.7275003,-105.0131982,39.7293163
-5376,123,4815,0.0586808902574419,0.0586808902574419,-105.0068372,39.7583708,-105.0073436,39.7587271
-5377,1608,1158,0.0531893778682351,0.0531893778682351,-104.9996914,39.7528341,-104.9992501,39.7524969
-5378,1158,4816,0.0522853387259307,0.0522853387259307,-104.9992501,39.7524969,-104.9988196,39.7521629
-5379,4816,4817,0.0528559175260399,0.0528559175260399,-104.9988196,39.7521629,-104.9983798,39.7518288
-5380,4817,4818,0.0526139267336242,0.0526139267336242,-104.9983798,39.7518288,-104.9979466,39.7514927
-5382,4819,4820,0.146802081972091,0.146802081972091,-105.0080831,39.7592475,-105.0093022,39.7601774
-5383,4820,4821,0.146390170205012,0.146390170205012,-105.0093022,39.7601774,-105.0105051,39.7611145
-5384,4821,4822,0.0767990953688077,0.0767990953688077,-105.0105051,39.7611145,-105.0111481,39.7615969
-5386,3289,4824,0.0733337823028737,0.0733337823028737,-104.9455011,39.7038602,-104.9453876,39.7032065
-5387,4824,4825,0.151650147757225,0.151650147757225,-104.9453876,39.7032065,-104.9446221,39.7019764
-5389,97,3502,0.20326475820455,0.20326475820455,-104.9442146,39.7002138,-104.9442195,39.6983858
-5390,3502,4826,0.200021830134173,0.200021830134173,-104.9442195,39.6983858,-104.944235,39.696587
-5391,4826,4827,0.204558997826367,0.204558997826367,-104.944235,39.696587,-104.9441769,39.6947479
-5392,4827,4828,0.201476703732084,0.201476703732084,-104.9441769,39.6947479,-104.9441889,39.692936
-5394,4829,4830,0.558813274805265,0.558813274805265,-104.9441934,39.6893133,-104.9442154,39.6842878
-5395,3635,1894,0.33996915967689,0.33996915967689,-104.9460363,39.7095165,-104.9460234,39.7064591
-5396,1894,4831,0.234959433855918,0.234959433855918,-104.9460234,39.7064591,-104.9460063,39.7043461
-5397,4831,3288,0.0548366602436518,0.0548366602436518,-104.9460063,39.7043461,-104.9459732,39.7038536
-5399,3879,4832,0.175154251791819,0.175154251791819,-104.9437605,39.7162182,-104.9437601,39.714643
-5400,4832,3070,0.175288290924905,0.175288290924905,-104.9437601,39.714643,-104.9437655,39.7130666
-5402,4833,4834,0.239573627081124,0.239573627081124,-104.9437517,39.7114947,-104.9437682,39.7093402
-5404,3962,4835,0.197156843459588,0.197156843459588,-105.0001681,39.7165803,-105.0001358,39.7148074
-5405,4835,4836,0.094417767822886,0.094417767822886,-105.0001358,39.7148074,-104.9997732,39.7140054
-5406,4836,388,0.087554257922167,0.087554257922167,-104.9997732,39.7140054,-104.9994213,39.713266
-5407,388,1384,0.157773442883539,0.157773442883539,-104.9994213,39.713266,-104.998769,39.7119388
-5408,1384,4837,0.0895725883825947,0.0895725883825947,-104.998769,39.7119388,-104.9983742,39.7111927
-5409,4837,325,0.282856295391869,0.282856295391869,-104.9983742,39.7111927,-104.9964344,39.7091326
-6684,2175,5744,0.101148378971839,0.101148378971839,-105.0146888,39.7729346,-105.0158722,39.7729208
-5410,325,4838,0.0837092029011689,0.0837092029011689,-104.9964344,39.7091326,-104.9964173,39.7083799
-5411,4838,4840,0.0963811879451104,0.0963811879451104,-104.9964173,39.7083799,-104.9965817,39.7075224
-5412,4840,4841,0.421707851811283,0.421707851811283,-104.9965817,39.7075224,-104.995653,39.7037978
-5415,1486,144,0.196859858102641,0.196859858102641,-105.0003404,39.6948842,-105.000336,39.6931138
-5417,2194,4843,0.069400098080988,0.069400098080988,-104.999248,39.7553456,-104.9986941,39.7558019
-5418,4843,4844,0.128982538897387,0.128982538897387,-104.9986941,39.7558019,-104.9974984,39.7565094
-5420,4845,4846,0.127385402005959,0.127385402005959,-105.0049838,39.7515411,-105.0038505,39.7522849
-5421,4846,4847,0.0485354577138893,0.0485354577138893,-105.0038505,39.7522849,-105.0034718,39.7526101
-5422,4847,2197,0.0570536883887032,0.0570536883887032,-105.0034718,39.7526101,-105.0028674,39.7528277
-5423,2197,2198,0.0030293307914236,0.0030293307914236,-105.0028674,39.7528277,-105.0028654,39.7528005
-5425,2191,4848,0.228805525488878,0.228805525488878,-104.9936227,39.759356,-104.9915939,39.7606983
-5427,4281,2319,0.149466526420244,0.149466526420244,-104.9797003,39.7709793,-104.9784558,39.7719237
-5428,2319,4849,0.264070561759483,0.264070561759483,-104.9784558,39.7719237,-104.9763149,39.7736361
-5430,4850,4851,0.124106376215018,0.124106376215018,-104.9969821,39.757589,-104.996067,39.7584555
-5432,4852,4853,0.107373531206162,0.107373531206162,-104.987369,39.7352666,-104.9861135,39.7352834
-5433,4853,4854,0.108589473424165,0.108589473424165,-104.9861135,39.7352834,-104.9848436,39.7352795
-5434,4854,4855,0.105767467639199,0.105767467639199,-104.9848436,39.7352795,-104.9836067,39.7352829
-5435,4855,4856,0.0608956612626877,0.0608956612626877,-104.9836067,39.7352829,-104.9828985,39.7352253
-5436,4856,4857,0.0536676140413411,0.0536676140413411,-104.9828985,39.7352253,-104.9822782,39.7351518
-5438,4858,4859,0.053767328384899,0.053767328384899,-104.981675,39.7351569,-104.9810463,39.7351489
-5439,4859,4860,0.0517270733374725,0.0517270733374725,-104.9810463,39.7351489,-104.9804415,39.7351584
-5440,4860,4861,0.0506527251945452,0.0506527251945452,-104.9804415,39.7351584,-104.9798492,39.735165
-5441,4861,4862,0.0500931909858678,0.0500931909858678,-104.9798492,39.735165,-104.9792634,39.7351686
-5442,4862,4863,0.0473439516711298,0.0473439516711298,-104.9792634,39.7351686,-104.9787104,39.7351477
-5444,4864,4865,0.0521797446029276,0.0521797446029276,-104.9781817,39.7351466,-104.9775716,39.7351373
-17093,9466,677,0.17846620541914,0.17846620541914,-104.9603865,39.7432158,-104.960408,39.7416109
-17094,677,3719,0.359015096413943,0.359015096413943,-104.960408,39.7416109,-104.9604099,39.7383822
-5446,4866,4867,0.0492134016241179,0.0492134016241179,-104.9770059,39.7351417,-104.9764304,39.7351462
-5447,4867,4868,0.0506066180898924,0.0506066180898924,-104.9764304,39.7351462,-104.9758386,39.7351502
-5448,4868,4869,0.0483319487475015,0.0483319487475015,-104.9758386,39.7351502,-104.9752734,39.735154
-5449,4869,4870,0.0507611555520018,0.0507611555520018,-104.9752734,39.735154,-104.9746798,39.7351494
-5450,4870,980,0.0494869052239766,0.0494869052239766,-104.9746798,39.7351494,-104.9741011,39.735145
-5451,980,4871,0.0481249293188332,0.0481249293188332,-104.9741011,39.735145,-104.9735383,39.7351456
-5452,4871,4872,0.0462779203242365,0.0462779203242365,-104.9735383,39.7351456,-104.9729971,39.7351462
-20332,10741,10746,0.00836528320993219,0.00836528320993219,-105.0236254,39.7588748,-105.0236226,39.75895
-5453,4872,4873,0.0504026300689218,0.0504026300689218,-104.9729971,39.7351462,-104.9724077,39.7351513
-5454,4873,4874,0.0485554829183078,0.0485554829183078,-104.9724077,39.7351513,-104.9718399,39.7351562
-5455,4874,4875,0.0534696334958417,0.0534696334958417,-104.9718399,39.7351562,-104.9712147,39.735165
-6731,5782,5783,0.00425137254991275,0.00425137254991275,-104.9941044,39.7503839,-104.9941411,39.7504097
-5456,4875,4876,0.0484412552758981,0.0484412552758981,-104.9712147,39.735165,-104.9706482,39.735165
-5458,4877,4717,0.0471074620934606,0.0471074620934606,-104.9700645,39.735165,-104.9695136,39.7351661
-5459,4717,4878,0.132709338239974,0.132709338239974,-104.9695136,39.7351661,-104.9679617,39.7351782
-5461,4879,3888,0.0983476297531957,0.0983476297531957,-104.9646143,39.7350528,-104.9634642,39.7350462
-5462,3888,1018,0.103492590132028,0.103492590132028,-104.9634642,39.7350462,-104.9622539,39.7350462
-5463,1018,4880,0.0514136092144711,0.0514136092144711,-104.9622539,39.7350462,-104.9616527,39.7350527
-5464,4880,4881,0.0525893579522226,0.0525893579522226,-104.9616527,39.7350527,-104.9610377,39.7350501
-5465,4881,3721,0.0533162444253223,0.0533162444253223,-104.9610377,39.7350501,-104.9604142,39.7350474
-5466,3721,4882,0.0519823122660099,0.0519823122660099,-104.9604142,39.7350474,-104.9598063,39.7350501
-5467,4882,4883,0.0522344210852062,0.0522344210852062,-104.9598063,39.7350501,-104.9591955,39.7350566
-5468,4883,4884,0.0505876398657049,0.0505876398657049,-104.9591955,39.7350566,-104.9586039,39.7350563
-5469,4884,3336,0.0998762512001326,0.0998762512001326,-104.9586039,39.7350563,-104.9574365,39.7350853
-5470,3336,4885,0.0991185753255084,0.0991185753255084,-104.9574365,39.7350853,-104.9562778,39.7351101
-5471,4885,4886,0.0963539908668941,0.0963539908668941,-104.9562778,39.7351101,-104.9551513,39.7351307
-5472,4886,4887,0.0885379825241657,0.0885379825241657,-104.9551513,39.7351307,-104.9541159,39.7351266
-5473,4887,4888,0.0119373214867398,0.0119373214867398,-104.9541159,39.7351266,-104.9539764,39.7351225
-5474,4888,2056,0.0843994384439808,0.0843994384439808,-104.9539764,39.7351225,-104.9529894,39.7351183
-5475,2056,4889,0.0133131298111966,0.0133131298111966,-104.9529894,39.7351183,-104.9528338,39.7351142
-5476,4889,2662,0.0974967707832978,0.0974967707832978,-104.9528338,39.7351142,-104.9516945,39.7351487
-5477,2662,4135,0.0954371783119999,0.0954371783119999,-104.9516945,39.7351487,-104.9505787,39.7351289
-5479,4890,4891,0.0937877451974264,0.0937877451974264,-104.9494864,39.7351307,-104.9483898,39.7351143
-5480,4891,4892,0.0948153596322219,0.0948153596322219,-104.9483898,39.7351143,-104.947281,39.73512
-5482,3459,4893,0.0478001833146321,0.0478001833146321,-104.9461795,39.735119,-104.9456205,39.7351177
-5484,4894,4895,0.0479027082737571,0.0479027082737571,-104.945082,39.7351139,-104.9445218,39.7351149
-5485,4895,4896,0.0478122905377956,0.0478122905377956,-104.9445218,39.7351149,-104.9439627,39.7351095
-5486,4896,859,0.0923773172496592,0.0923773172496592,-104.9439627,39.7351095,-104.9428825,39.7350975
-5487,859,454,0.0453886692992681,0.0453886692992681,-104.9428825,39.7350975,-104.9423517,39.7350982
-5488,454,4897,0.0453208554339034,0.0453208554339034,-104.9423517,39.7350982,-104.9418217,39.735096
-5489,4897,458,0.0453479211780813,0.0453479211780813,-104.9418217,39.735096,-104.9412914,39.7350999
-5492,4899,4900,0.0139467367099566,0.0139467367099566,-104.9407436,39.7346624,-104.9405805,39.7346624
-5493,4900,4901,0.0360421538971705,0.0360421538971705,-104.9405805,39.7346624,-104.9401595,39.7346781
-5494,4901,4902,0.0578381423218813,0.0578381423218813,-104.9401595,39.7346781,-104.9394839,39.7347032
-5495,4902,4903,0.00552719826630604,0.00552719826630604,-104.9394839,39.7347032,-104.9394193,39.7347015
-5496,4903,4904,0.0875768226675012,0.0875768226675012,-104.9394193,39.7347015,-104.9383957,39.7346753
-5497,4904,4905,0.0943606682528015,0.0943606682528015,-104.9383957,39.7346753,-104.9372922,39.7346747
-5498,4905,4906,0.0967192189659533,0.0967192189659533,-104.9372922,39.7346747,-104.9361612,39.7346852
-5499,4906,4907,0.098185525305783,0.098185525305783,-104.9361612,39.7346852,-104.935013,39.7346788
-5501,4908,2748,0.100541646868693,0.100541646868693,-104.9338415,39.7346803,-104.9326658,39.7346911
-5502,2748,4909,0.0966275722613029,0.0966275722613029,-104.9326658,39.7346911,-104.9315358,39.7346873
-5503,4909,4910,0.0992689355907326,0.0992689355907326,-104.9315358,39.7346873,-104.9303749,39.7346868
-5504,4910,4911,0.101479918551735,0.101479918551735,-104.9303749,39.7346868,-104.9291882,39.7346779
-6779,5822,3617,0.0484295076881561,0.0484295076881561,-104.9810031,39.6911678,-104.9804371,39.6911668
-5505,4911,4912,0.0969181343296834,0.0969181343296834,-104.9291882,39.7346779,-104.9280548,39.7346813
-5507,2121,4913,0.0979459294550903,0.0979459294550903,-104.9268925,39.7346889,-104.9257471,39.7346951
-5508,4913,4914,0.0979869433285632,0.0979869433285632,-104.9257471,39.7346951,-104.9246012,39.7346918
-5509,4914,4915,0.197888030311115,0.197888030311115,-104.9246012,39.7346918,-104.922287,39.7346902
-5510,3113,4916,0.205521796352519,0.205521796352519,-104.9578008,39.7129346,-104.9580269,39.7110945
-5511,4916,4917,0.213014583006008,0.213014583006008,-104.9580269,39.7110945,-104.9558286,39.7101945
-5514,1222,4919,0.098914174918745,0.098914174918745,-105.0123423,39.7375848,-105.0134991,39.7375845
-5516,4920,1622,0.0585646429204787,0.0585646429204787,-104.9894816,39.7286261,-104.9899006,39.7290427
-5517,1622,4921,0.122620409777708,0.122620409777708,-104.9899006,39.7290427,-104.9906535,39.7299812
-5518,4921,4922,0.218423462474676,0.218423462474676,-104.9906535,39.7299812,-104.9919185,39.7316877
-5520,2815,4923,0.167710746898946,0.167710746898946,-104.9919925,39.7317917,-104.9929606,39.7331034
-5521,4923,4924,0.0980438120983448,0.0980438120983448,-104.9929606,39.7331034,-104.9935332,39.7338673
-5523,4677,4925,0.0746274432259007,0.0746274432259007,-104.9941264,39.7346802,-104.9945592,39.735263
-5525,4926,617,0.0797365701263369,0.0797365701263369,-104.9952734,39.7362407,-104.9957301,39.7368659
-5526,617,4927,0.125187481931903,0.125187481931903,-104.9957301,39.7368659,-104.9964542,39.7378444
-5527,4927,4928,0.0778528067673226,0.0778528067673226,-104.9964542,39.7378444,-104.9968967,39.7384563
-5528,4928,4929,0.199074396611122,0.199074396611122,-104.9968967,39.7384563,-104.9980335,39.7400187
-5532,4932,4933,0.00438034032424269,0.00438034032424269,-104.9989204,39.7415592,-104.9989403,39.7415955
-5533,4933,4934,0.0884200199820011,0.0884200199820011,-104.9989403,39.7415955,-104.9993415,39.7423284
-5534,4934,4935,0.245891005874257,0.245891005874257,-104.9993415,39.7423284,-104.9999815,39.7444843
-5535,4935,4936,0.142250751986944,0.142250751986944,-104.9999815,39.7444843,-105.0001355,39.7457581
-5536,4936,4937,0.0173695104401488,0.0173695104401488,-105.0001355,39.7457581,-105.0002133,39.7459024
-5538,4938,4939,0.203545296385478,0.203545296385478,-104.9976397,39.7384568,-104.9964751,39.7368603
-5540,1358,4940,0.12982829991663,0.12982829991663,-104.9942545,39.7824831,-104.9942716,39.7836506
-5543,4079,2536,0.319784261068233,0.319784261068233,-104.9938425,39.7841519,-104.9938854,39.7870276
-5545,4926,616,0.0701041786984163,0.0701041786984163,-104.9952734,39.7362407,-104.9952849,39.7368711
-5546,616,4942,0.177022653633518,0.177022653633518,-104.9952849,39.7368711,-104.9952889,39.7384631
-5547,4942,4943,0.172063039899941,0.172063039899941,-104.9952889,39.7384631,-104.9952896,39.7400105
-5549,4944,4945,0.149558307265757,0.149558307265757,-104.9951662,39.7166026,-104.9951594,39.7179476
-5550,4945,3715,0.0517838841978355,0.0517838841978355,-104.9951594,39.7179476,-104.995157,39.7184133
-5551,3715,4948,0.104024626392335,0.104024626392335,-104.995157,39.7184133,-104.9951641,39.7193488
-5552,4948,4949,0.174823058982553,0.174823058982553,-104.9951641,39.7193488,-104.9951748,39.720921
-5553,4949,2616,0.177668474307762,0.177668474307762,-104.9951748,39.720921,-104.9951825,39.7225188
-5554,2616,4950,0.0535070014349516,0.0535070014349516,-104.9951825,39.7225188,-104.9951823,39.723
-5555,4950,4951,0.124049062817869,0.124049062817869,-104.9951823,39.723,-104.995182,39.7241156
-5556,4951,4952,0.174777210980769,0.174777210980769,-104.995182,39.7241156,-104.995189,39.7256874
-5557,4952,4953,0.127620790205472,0.127620790205472,-104.995189,39.7256874,-104.9951981,39.7268351
-5558,4953,4954,0.0551759306609038,0.0551759306609038,-104.9951981,39.7268351,-104.995202,39.7273313
-5559,4954,4955,0.176133032867453,0.176133032867453,-104.995202,39.7273313,-104.9951984,39.7289153
-5560,4955,4956,0.177512737206305,0.177512737206305,-104.9951984,39.7289153,-104.9952321,39.7305115
-5562,4406,4957,0.277669971565855,0.277669971565855,-105.0297541,39.6988189,-105.0329814,39.6985547
-5564,4958,4959,0.199658223163124,0.199658223163124,-105.0250687,39.6992129,-105.0274024,39.6992151
-5566,1598,1655,0.160087686125488,0.160087686125488,-105.0137725,39.6990764,-105.0156436,39.6990896
-5568,4960,1592,0.199275601482479,0.199275601482479,-105.0109882,39.7047956,-105.0133176,39.7047886
-5569,1592,1643,0.201203252625689,0.201203252625689,-105.0133176,39.7047886,-105.0156693,39.7047622
-5571,4961,4369,0.0888591183295397,0.0888591183295397,-105.0004878,39.7048835,-105.0015255,39.7049188
-5572,4369,1450,0.193863730230332,0.193863730230332,-105.0015255,39.7049188,-105.0037914,39.7048924
-5573,1450,4962,0.20633144077854,0.20633144077854,-105.0037914,39.7048924,-105.0062033,39.7048924
-5575,4963,4964,0.865026893272847,0.865026893272847,-105.0432124,39.7049338,-105.0532477,39.7039798
-5577,4966,4413,0.196777109156883,0.196777109156883,-105.027514,39.7049206,-105.0298142,39.704914
-5578,4413,4967,0.224682445917882,0.224682445917882,-105.0298142,39.704914,-105.0324406,39.7049206
-5579,4967,4304,0.221012468473467,0.221012468473467,-105.0324406,39.7049206,-105.0350241,39.7049272
-5582,4969,4970,0.107069922554974,0.107069922554974,-104.9800922,39.781891,-104.9800953,39.7828539
-5583,4970,4972,0.0948495530272937,0.0948495530272937,-104.9800953,39.7828539,-104.980098,39.7837069
-5586,4269,4973,0.080198786030782,0.080198786030782,-104.980164,39.7783344,-104.9800837,39.779053
-5587,4974,4767,0.0973607348320062,0.0973607348320062,-104.9799651,39.7216117,-104.979936,39.722487
-5588,4767,4975,0.179413565332346,0.179413565332346,-104.979936,39.722487,-104.9799308,39.7241005
-5589,4975,4976,0.169917329199621,0.169917329199621,-104.9799308,39.7241005,-104.9799349,39.7256286
-5590,4976,4977,0.181948721536683,0.181948721536683,-104.9799349,39.7256286,-104.9799397,39.7272649
-5591,4977,3805,0.200239828466703,0.200239828466703,-104.9799397,39.7272649,-104.9799392,39.7290657
-5592,3805,4978,0.152216995314545,0.152216995314545,-104.9799392,39.7290657,-104.9799295,39.7304346
-5594,3620,4979,0.203157103314032,0.203157103314032,-104.9803501,39.716491,-104.9802827,39.7183173
-5595,4979,2366,0.112909559408727,0.112909559408727,-104.9802827,39.7183173,-104.9802624,39.7193326
-5596,2366,4147,0.176980531073324,0.176980531073324,-104.9802624,39.7193326,-104.9802738,39.7209242
-5597,4147,4980,0.0231632311908037,0.0231632311908037,-104.9802738,39.7209242,-104.9802767,39.7211325
-5599,4981,4982,0.122490029160582,0.122490029160582,-104.9800351,39.7844962,-104.9800523,39.7855977
-5600,4982,4983,0.198021379234554,0.198021379234554,-104.9800523,39.7855977,-104.9800351,39.7873785
-5602,4831,3290,0.14433688220634,0.14433688220634,-104.9460063,39.7043461,-104.9444349,39.7038735
-5604,4248,1783,0.203809923376497,0.203809923376497,-104.985053,39.6966228,-104.9850787,39.69479
-5605,1783,4984,0.197266471488896,0.197266471488896,-104.9850787,39.69479,-104.9851312,39.6930164
-5606,4984,4985,0.203487572214077,0.203487572214077,-104.9851312,39.6930164,-104.9851243,39.6911864
-5607,4985,4986,0.197825547248631,0.197825547248631,-104.9851243,39.6911864,-104.9851579,39.6894075
-5608,4986,4987,2.41542068401941,2.41542068401941,-104.9851579,39.6894075,-104.9851604,39.6676851
-5610,4989,4990,0.0962172324904451,0.0962172324904451,-104.9850107,39.7147282,-104.985045,39.7138633
-5611,4990,3077,0.102766134165042,0.102766134165042,-104.985045,39.7138633,-104.9850625,39.7129392
-5613,4991,322,0.0217232354992756,0.0217232354992756,-105.0155876,39.7516074,-105.0158044,39.7515055
-5614,322,4992,0.0357866971477297,0.0357866971477297,-105.0158044,39.7515055,-105.0161841,39.75137
-5615,4992,4993,0.0111993418256192,0.0111993418256192,-105.0161841,39.75137,-105.0163127,39.7513508
-5618,4994,3114,0.0796924849623814,0.0796924849623814,-104.9518573,39.713502,-104.9523224,39.712881
-5619,3114,4995,0.20745656668227,0.20745656668227,-104.9523224,39.712881,-104.9523191,39.7110153
-5621,4996,4997,0.202175143533063,0.202175143533063,-104.9523584,39.6965806,-104.952353,39.6947624
-5622,4997,4998,0.201486340865611,0.201486340865611,-104.952353,39.6947624,-104.9523609,39.6929504
-5623,4998,4999,0.201289887939002,0.201289887939002,-104.9523609,39.6929504,-104.9523772,39.6911402
-5624,4999,5000,0.201274447612783,0.201274447612783,-104.9523772,39.6911402,-104.9523825,39.6893301
-5625,5000,5001,0.402211090441065,0.402211090441065,-104.9523825,39.6893301,-104.952412,39.685713
-5627,1058,5002,0.0523412516567849,0.0523412516567849,-104.9523656,39.702949,-104.9525063,39.7024909
-5628,5002,5003,0.185331167798599,0.185331167798599,-104.9525063,39.7024909,-104.9542392,39.7014907
-5629,5003,3655,0.0518833582791727,0.0518833582791727,-104.9542392,39.7014907,-104.9546075,39.70112
-5632,5004,4344,0.139169147250759,0.139169147250759,-104.9585604,39.7557264,-104.9585786,39.7569779
-5633,4344,5005,0.13717907888566,0.13717907888566,-104.9585786,39.7569779,-104.9585602,39.7582115
-5634,5005,3044,0.136502893019444,0.136502893019444,-104.9585602,39.7582115,-104.95856,39.7594391
-5635,3044,5006,0.140687498507325,0.140687498507325,-104.95856,39.7594391,-104.9585719,39.7607043
-5636,5006,5007,0.0045870406114538,0.0045870406114538,-104.9585719,39.7607043,-104.9585692,39.7607455
-5637,5007,5008,0.137903992793689,0.137903992793689,-104.9585692,39.7607455,-104.9585679,39.7619857
-5638,5008,1165,0.1390388743026,0.1390388743026,-104.9585679,39.7619857,-104.9585626,39.7632361
-5640,885,4470,0.139218366547603,0.139218366547603,-104.9585659,39.7644817,-104.9585565,39.7657337
-5641,4470,2792,0.134293285442621,0.134293285442621,-104.9585565,39.7657337,-104.9585673,39.7669414
-5642,2792,5009,0.131431211174063,0.131431211174063,-104.9585673,39.7669414,-104.9585862,39.7681233
-5644,5012,739,0.391173244940122,0.391173244940122,-104.9582526,39.7728926,-104.9582445,39.7764105
-5645,739,1559,0.139743785900176,0.139743785900176,-104.9582445,39.7764105,-104.9582585,39.7776672
-5646,1559,4275,0.141288921951359,0.141288921951359,-104.9582585,39.7776672,-104.9582338,39.7789377
-5647,4275,5013,0.120791048813674,0.120791048813674,-104.9582338,39.7789377,-104.9582338,39.780024
-5648,5013,5014,0.0105624832499152,0.0105624832499152,-104.9582338,39.780024,-104.9582392,39.7801189
-5649,5014,5015,0.0438951959332696,0.0438951959332696,-104.9582392,39.7801189,-104.9582016,39.7805126
-5650,5015,5016,0.160752036464104,0.160752036464104,-104.9582016,39.7805126,-104.9581399,39.7819575
-5652,5017,2345,0.117820938280592,0.117820938280592,-104.9590772,39.7184349,-104.9585534,39.7194149
-5654,4151,1536,0.0491815160552347,0.0491815160552347,-104.9582358,39.7209729,-104.9582358,39.7214152
-5655,1536,4765,0.126517768209698,0.126517768209698,-104.9582358,39.7214152,-104.9582333,39.722553
-5656,4765,5019,0.175921623374803,0.175921623374803,-104.9582333,39.722553,-104.9582358,39.7241351
-5657,5019,5020,0.0764689744574068,0.0764689744574068,-104.9582358,39.7241351,-104.9582512,39.7248227
-5658,5020,5021,0.102480731304504,0.102480731304504,-104.9582512,39.7248227,-104.958869,39.7256124
-5659,5021,1190,0.167860102396295,0.167860102396295,-104.958869,39.7256124,-104.9590238,39.7271173
-5660,1190,5022,0.022286088803945,0.022286088803945,-104.9590238,39.7271173,-104.9590198,39.7273177
-5661,5022,3787,0.1996828431131,0.1996828431131,-104.9590198,39.7273177,-104.9590433,39.7291134
-5662,3787,5023,0.154628071522294,0.154628071522294,-104.9590433,39.7291134,-104.9592069,39.7304983
-5687,5040,1763,0.201152967219908,0.201152967219908,-104.9768897,39.7183279,-104.9768983,39.7165189
-5663,5023,2252,0.333559522830682,0.333559522830682,-104.9592069,39.7304983,-104.9586038,39.733462
-5664,2252,5024,0.0290309763494638,0.0290309763494638,-104.9586038,39.733462,-104.9585953,39.733723
-5665,5024,4884,0.148258019557603,0.148258019557603,-104.9585953,39.733723,-104.9586039,39.7350563
-5666,4884,5025,0.194698119191853,0.194698119191853,-104.9586039,39.7350563,-104.9585847,39.7368072
-5667,5025,5026,0.176313474196241,0.176313474196241,-104.9585847,39.7368072,-104.9586987,39.7383904
-5668,5026,5027,0.192373972114261,0.192373972114261,-104.9586987,39.7383904,-104.9587811,39.7401193
-5669,5027,679,0.169442185038323,0.169442185038323,-104.9587811,39.7401193,-104.9591758,39.7416126
-5672,5029,4596,0.157086480064782,0.157086480064782,-104.9591698,39.7434491,-104.9598011,39.7447758
-5674,5030,5031,0.105448542276863,0.105448542276863,-104.987378,39.7401161,-104.9884893,39.7405273
-5677,5032,5034,0.00520403492524916,0.00520403492524916,-104.9757617,39.7494389,-104.9757621,39.7494857
-5678,5034,5035,0.00442576451440448,0.00442576451440448,-104.9757621,39.7494857,-104.9757616,39.7495255
-5679,5035,5036,0.135764863246336,0.135764863246336,-104.9757616,39.7495255,-104.9757455,39.7507464
-5681,5037,813,0.139038307562208,0.139038307562208,-104.9757231,39.7519986,-104.9757523,39.7532488
-5682,813,3554,0.152271167865336,0.152271167865336,-104.9757523,39.7532488,-104.9757464,39.7546182
-5684,5038,5039,0.16037248823512,0.16037248823512,-104.9760611,39.7840873,-104.976207,39.7855252
-5686,2368,5040,0.131780679502724,0.131780679502724,-104.9775163,39.7194106,-104.9768897,39.7183279
-5689,5041,5042,0.178235693488978,0.178235693488978,-104.9761583,39.7400231,-104.9761502,39.741626
-5690,5042,663,0.00303458618342364,0.00303458618342364,-104.9761502,39.741626,-104.9761569,39.7416528
-5691,663,5043,0.17896901951739,0.17896901951739,-104.9761569,39.7416528,-104.9761631,39.7432623
-5692,5043,4608,0.175810797673871,0.175810797673871,-104.9761631,39.7432623,-104.9761582,39.7448434
-5693,4608,5044,0.116588664300191,0.116588664300191,-104.9761582,39.7448434,-104.9761532,39.7458919
-5694,5044,5045,0.0312349930548565,0.0312349930548565,-104.9761532,39.7458919,-104.9761515,39.7461728
-5695,5045,3670,0.147012417470316,0.147012417470316,-104.9761515,39.7461728,-104.976114,39.7474946
-5697,5046,4162,0.0660609059196111,0.0660609059196111,-104.9763833,39.7195295,-104.9763833,39.7201236
-5698,4162,4771,0.262084611870375,0.262084611870375,-104.9763833,39.7201236,-104.9764091,39.7224805
-5699,4771,5047,0.17859412824458,0.17859412824458,-104.9764091,39.7224805,-104.9763952,39.7240866
-5700,5047,5048,0.1691727396202,0.1691727396202,-104.9763952,39.7240866,-104.9764012,39.725608
-5701,5048,5049,0.184472749838431,0.184472749838431,-104.9764012,39.725608,-104.9764055,39.727267
-5702,5049,3801,0.20027318311003,0.20027318311003,-104.9764055,39.727267,-104.9764057,39.7290681
-5703,3801,5050,0.154503416019497,0.154503416019497,-104.9764057,39.7290681,-104.976386,39.7304575
-5704,5050,932,0.176703352691921,0.176703352691921,-104.976386,39.7304575,-104.9764282,39.7320463
-5706,2217,4867,0.160601247675141,0.160601247675141,-104.9764407,39.7337019,-104.9764304,39.7351462
-5707,4867,5051,0.19278749199245,0.19278749199245,-104.9764304,39.7351462,-104.976452,39.7368799
-5708,5051,5052,0.171738832244774,0.171738832244774,-104.976452,39.7368799,-104.976473,39.7384243
-5709,5052,5053,0.125039053144726,0.125039053144726,-104.976473,39.7384243,-104.9764695,39.7395488
-5710,5053,5054,0.0536646579213684,0.0536646579213684,-104.9764695,39.7395488,-104.9764641,39.7400314
-5712,2413,5055,0.0539797182371141,0.0539797182371141,-105.0411693,39.753016,-105.04162,39.753356
-5713,5055,5056,0.0555511846145791,0.0555511846145791,-105.04162,39.753356,-105.0422607,39.7532726
-5714,5056,5057,0.0564985233788716,0.0564985233788716,-105.0422607,39.7532726,-105.0429216,39.7532726
-5715,5058,5059,0.0116997793337229,0.0116997793337229,-104.9592906,39.7801271,-104.9592971,39.780022
-5716,5059,369,0.121769364056454,0.121769364056454,-104.9592971,39.780022,-104.9593952,39.7789295
-5717,369,1558,0.13936986171661,0.13936986171661,-104.9593952,39.7789295,-104.959414,39.7776762
-5718,1558,738,0.139138948896028,0.139138948896028,-104.959414,39.7776762,-104.9594193,39.7764249
-5719,738,5060,0.392796141218442,0.392796141218442,-104.9594193,39.7764249,-104.9594167,39.7728924
-5721,5061,5062,0.12142771399357,0.12142771399357,-104.9586363,39.7111011,-104.958436,39.71002
-5722,5062,5063,0.0553958184996893,0.0553958184996893,-104.958436,39.71002,-104.957987,39.709661
-5723,5063,4434,0.0566894209705876,0.0566894209705876,-104.957987,39.709661,-104.957527,39.709294
-5724,4434,2921,0.313688166061769,0.313688166061769,-104.957527,39.709294,-104.954906,39.707321
-5726,5062,422,0.127478280907992,0.127478280907992,-104.958436,39.71002,-104.958788,39.708906
-5727,422,5063,0.108364291033736,0.108364291033736,-104.958788,39.708906,-104.957987,39.709661
-5729,5066,5067,0.177224259300569,0.177224259300569,-105.0384889,39.7165547,-105.0384982,39.7149609
-5730,5067,1319,0.176633232309172,0.176633232309172,-105.0384982,39.7149609,-105.0385003,39.7133724
-5731,1319,1375,0.177680959479223,0.177680959479223,-105.0385003,39.7133724,-105.0384745,39.7117746
-5732,1375,5068,0.0602164425054291,0.0602164425054291,-105.0384745,39.7117746,-105.038466,39.7112331
-5733,5068,288,0.02427348670764,0.02427348670764,-105.038466,39.7112331,-105.0384831,39.7110152
-5734,288,5069,0.0611513015273674,0.0611513015273674,-105.0384831,39.7110152,-105.0385432,39.7104672
-5735,5069,4693,0.113806398942027,0.113806398942027,-105.0385432,39.7104672,-105.038526,39.7094438
-5736,4693,5070,0.156397394554719,0.156397394554719,-105.038526,39.7094438,-105.0385346,39.7080373
-5738,1493,182,0.220724132280051,0.220724132280051,-105.037738,39.695087,-105.0379081,39.6931063
-5739,182,1710,0.202718600976859,0.202718600976859,-105.0379081,39.6931063,-105.0378737,39.6912834
-5742,5072,5073,0.0235981208081862,0.0235981208081862,-105.0381596,39.707404,-105.0381339,39.7071927
-5743,5073,5074,0.173346209176791,0.173346209176791,-105.0381339,39.7071927,-105.0381484,39.7056338
-5744,5074,5075,0.183560584904857,0.183560584904857,-105.0381484,39.7056338,-105.0381484,39.703983
-5746,5076,5077,0.201201481229781,0.201201481229781,-105.037951,39.7021472,-105.0379338,39.7003378
-5747,5077,5078,0.196158089713223,0.196158089713223,-105.0379338,39.7003378,-105.0378651,39.6985745
-5750,5080,304,0.450334409862505,0.450334409862505,-105.001279,39.7649816,-105.0045998,39.7618374
-5755,5083,4179,0.23271473726582,0.23271473726582,-104.9957531,39.7077667,-104.9951206,39.7057312
-5757,5084,5085,0.100586570089845,0.100586570089845,-104.9908575,39.7165834,-104.9908403,39.7174879
-5758,5085,3712,0.0974495496468689,0.0974495496468689,-104.9908403,39.7174879,-104.9908169,39.7183641
-5759,3712,5088,0.107190885250137,0.107190885250137,-104.9908169,39.7183641,-104.9908341,39.719328
-5761,1840,2612,0.176114771519943,0.176114771519943,-104.9908489,39.7209474,-104.9908346,39.7225312
-5762,2612,5089,0.0532850041931226,0.0532850041931226,-104.9908346,39.7225312,-104.990837,39.7230104
-5763,5089,5090,0.123805391077944,0.123805391077944,-104.990837,39.7230104,-104.9908427,39.7241238
-5764,5090,5091,0.0921824286504112,0.0921824286504112,-104.9908427,39.7241238,-104.9908359,39.7249528
-5765,5091,5092,0.0849604613604367,0.0849604613604367,-104.9908359,39.7249528,-104.9904446,39.7256551
-5767,5093,4077,0.0433656831085181,0.0433656831085181,-104.9901518,39.7836836,-104.9901174,39.7840727
-5768,4077,5094,0.807132686207363,0.807132686207363,-104.9901174,39.7840727,-104.989017,39.791282
-5769,5092,5095,0.184721084541763,0.184721084541763,-104.9904446,39.7256551,-104.9902684,39.7273108
-5770,5095,5096,0.112121546650621,0.112121546650621,-104.9902684,39.7273108,-104.9899868,39.7282956
-5771,5096,5097,0.012405493892182,0.012405493892182,-104.9899868,39.7282956,-104.9898761,39.7283677
-12067,8534,8532,0.0417307390941294,0.0417307390941294,-104.9544306,39.7462589,-104.9548313,39.7460446
-5774,5099,5100,0.195348601056539,0.195348601056539,-104.9781101,39.6911501,-104.9781016,39.6893933
-5775,5100,5101,1.61385249170336,1.61385249170336,-104.9781016,39.6893933,-104.978136,39.6748796
-5776,4334,5102,0.201130889411283,0.201130889411283,-104.9780308,39.7165201,-104.9780399,39.7147113
-5778,5103,2576,0.52830768269949,0.52830768269949,-104.9499914,39.7083084,-104.9558107,39.7098997
-5782,1145,874,0.139433776255124,0.139433776255124,-104.970897,39.7632567,-104.9708813,39.7645106
-5783,874,4462,0.13822164303959,0.13822164303959,-104.9708813,39.7645106,-104.9708658,39.7657536
-5784,4462,2782,0.134807869792579,0.134807869792579,-104.9708658,39.7657536,-104.9708506,39.7669659
-5786,5108,5109,0.136531475414142,0.136531475414142,-104.9708358,39.7681531,-104.9708204,39.7693809
-5787,5110,5111,0.166792389966844,0.166792389966844,-104.971535,39.780686,-104.971535,39.782186
-5788,5111,5112,0.0444779706577198,0.0444779706577198,-104.971535,39.782186,-104.971535,39.782586
-5789,5113,4169,0.194541086455447,0.194541086455447,-104.9705842,39.7183394,-104.9706014,39.7200889
-5790,4169,4754,0.20739031390672,0.20739031390672,-104.9706014,39.7200889,-104.9705953,39.721954
-5791,4754,5114,0.19819923300798,0.19819923300798,-104.9705953,39.721954,-104.9705782,39.7237364
-5792,5114,5115,0.205574207946515,0.205574207946515,-104.9705782,39.7237364,-104.9705996,39.7255851
-5793,5115,5116,0.18969176296687,0.18969176296687,-104.9705996,39.7255851,-104.9706146,39.727291
-5795,3795,5117,0.153449380032665,0.153449380032665,-104.9706199,39.7290832,-104.9706239,39.7304632
-5796,5117,942,0.178860285004076,0.178860285004076,-104.9706239,39.7304632,-104.9706365,39.7320717
-5797,942,2226,0.181510674241125,0.181510674241125,-104.9706365,39.7320717,-104.9706554,39.733704
-5798,2226,4876,0.162456954471732,0.162456954471732,-104.9706554,39.733704,-104.9706482,39.735165
-5799,4876,5118,0.192077540660028,0.192077540660028,-104.9706482,39.735165,-104.9706897,39.7368921
-5800,5118,5119,0.169639680241679,0.169639680241679,-104.9706897,39.7368921,-104.9706954,39.7384177
-5801,5119,5120,0.176431836448169,0.176431836448169,-104.9706954,39.7384177,-104.9707273,39.7400042
-5805,5123,5124,0.138482206224941,0.138482206224941,-104.9708859,39.7607568,-104.9708846,39.7620022
-5807,5125,5126,0.196467690434778,0.196467690434778,-104.970211,39.7696514,-104.9683965,39.7707362
-5809,5127,5128,0.177236972666439,0.177236972666439,-104.9709293,39.7400169,-104.9709165,39.7416108
-5810,5128,666,0.00411429224620583,0.00411429224620583,-104.9709165,39.7416108,-104.9709162,39.7416478
-5811,666,5129,0.00398081510277296,0.00398081510277296,-104.9709162,39.7416478,-104.970916,39.7416836
-5812,5129,5130,0.0219503048251099,0.0219503048251099,-104.970916,39.7416836,-104.9709144,39.741881
-5813,5130,5131,0.152662411900591,0.152662411900591,-104.9709144,39.741881,-104.9709034,39.7432539
-5814,5131,4605,0.174323615227633,0.174323615227633,-104.9709034,39.7432539,-104.9708908,39.7448216
-5815,4605,3691,0.233536002014651,0.233536002014651,-104.9708908,39.7448216,-104.970874,39.7469218
-5816,3691,5132,0.0578224768050087,0.0578224768050087,-104.970874,39.7469218,-104.9708698,39.7474418
-5817,4901,5133,0.0573209620432963,0.0573209620432963,-104.9401595,39.7346781,-104.9395046,39.7345681
-5819,5134,5135,0.102452742724465,0.102452742724465,-104.9384246,39.7341756,-104.9373097,39.7338382
-5820,5135,5136,0.101180875593513,0.101180875593513,-104.9373097,39.7338382,-104.9361524,39.7336487
-5821,5136,5137,0.0993172550227887,0.0993172550227887,-104.9361524,39.7336487,-104.935004,39.7335152
-5822,5137,5138,0.0973174615516026,0.0973174615516026,-104.935004,39.7335152,-104.933879,39.733383
-5823,5138,5139,0.0592813821516456,0.0592813821516456,-104.933879,39.733383,-104.9331993,39.7332781
-5824,5139,5140,0.0572628386692297,0.0572628386692297,-104.9331993,39.7332781,-104.9325581,39.7331296
-5825,5140,5141,0.0908568563064313,0.0908568563064313,-104.9325581,39.7331296,-104.931599,39.732778
-5826,5141,5142,0.108696465338082,0.108696465338082,-104.931599,39.732778,-104.930434,39.732387
-5827,5142,5143,0.117446225438567,0.117446225438567,-104.930434,39.732387,-104.9292349,39.731872
-5828,5143,5144,0.115052510861077,0.115052510861077,-104.9292349,39.731872,-104.9280639,39.7313625
-5831,2118,5146,0.132113404680538,0.132113404680538,-104.9268844,39.7308196,-104.9257328,39.7300276
-5832,5146,5147,0.0733188328504862,0.0733188328504862,-104.9257328,39.7300276,-104.925132,39.7295572
-5833,5147,5148,0.0348417204507369,0.0348417204507369,-104.925132,39.7295572,-104.9250676,39.7292478
-5860,3449,5168,0.101446764740706,0.101446764740706,-104.9461482,39.7162465,-104.9449622,39.716238
-5835,4903,5149,0.0928559279225574,0.0928559279225574,-104.9394193,39.7347015,-104.9384043,39.7344047
-5836,5149,5150,0.101009488468598,0.101009488468598,-104.9384043,39.7344047,-104.9373129,39.7340572
-5837,5150,5151,0.101494340144734,0.101494340144734,-104.9373129,39.7340572,-104.9361564,39.7338519
-12222,8597,8598,0.00932829170104997,0.00932829170104997,-105.0075587,39.7444522,-105.0076164,39.7445234
-12223,8598,8599,0.0244824521093208,0.0244824521093208,-105.0076164,39.7445234,-105.0077602,39.7447138
-5838,5151,5152,0.100261540674961,0.100261540674961,-104.9361564,39.7338519,-104.9349958,39.7337238
-5839,5152,5153,0.221241395423211,0.221241395423211,-104.9349958,39.7337238,-104.9324587,39.7333339
-5840,5153,2236,0.0908651857276488,0.0908651857276488,-104.9324587,39.7333339,-104.9314966,39.732987
-5841,2236,5154,0.10116756602451,0.10116756602451,-104.9314966,39.732987,-104.930434,39.732587
-5842,5154,5155,0.114191873365342,0.114191873365342,-104.930434,39.732587,-104.9292584,39.7320999
-5843,5155,5156,0.113038208940698,0.113038208940698,-104.9292584,39.7320999,-104.9280694,39.7316557
-5844,5156,2119,0.121856512679973,0.121856512679973,-104.9280694,39.7316557,-104.9268735,39.7310598
-5845,2119,5157,0.125333022212683,0.125333022212683,-104.9268735,39.7310598,-104.9257489,39.730337
-5846,5157,5158,0.121389833666029,0.121389833666029,-104.9257489,39.730337,-104.9248331,39.7295029
-5847,5158,5159,0.0390946612702668,0.0390946612702668,-104.9248331,39.7295029,-104.9245238,39.729244
-5850,5160,2133,0.195466658548015,0.195466658548015,-104.9270451,39.7456493,-104.9269818,39.7474065
-5854,5163,2476,0.202535777887142,0.202535777887142,-104.9274829,39.7455899,-104.9274657,39.7474113
-5856,5164,5165,0.0156138568041909,0.0156138568041909,-104.9499442,39.7162631,-104.9497617,39.7162663
-5857,5165,5166,0.100589160353206,0.100589160353206,-104.9497617,39.7162663,-104.9485858,39.7162531
-5858,5166,5167,0.104247833927165,0.104247833927165,-104.9485858,39.7162531,-104.947367,39.7162531
-5859,5167,3449,0.104250422099089,0.104250422099089,-104.947367,39.7162531,-104.9461482,39.7162465
-5861,5168,3879,0.102808830950679,0.102808830950679,-104.9449622,39.716238,-104.9437605,39.7162182
-5862,3879,841,0.103522696858037,0.103522696858037,-104.9437605,39.7162182,-104.9425503,39.7162314
-5863,841,5169,0.102719682704035,0.102719682704035,-104.9425503,39.7162314,-104.9413494,39.7162383
-5864,5169,5170,0.0474110701835865,0.0474110701835865,-104.9413494,39.7162383,-104.9407951,39.7162379
-5866,5171,5172,0.106685417852495,0.106685417852495,-104.9874858,39.7165623,-104.9862386,39.7165499
-5867,5172,5173,0.0515553847760644,0.0515553847760644,-104.9862386,39.7165499,-104.9856359,39.7165436
-5868,5173,4988,0.0505202363313306,0.0505202363313306,-104.9856359,39.7165436,-104.9850453,39.7165375
-17163,5107,1802,0.195280530173469,0.195280530173469,-104.9740336,39.6929885,-104.9740336,39.6947447
-5869,4988,962,0.105015490507221,0.105015490507221,-104.9850453,39.7165375,-104.983818,39.7165111
-5870,962,4141,0.100506431839732,0.100506431839732,-104.983818,39.7165111,-104.982643,39.7165018
-5871,4141,3161,0.101307790482977,0.101307790482977,-104.982643,39.7165018,-104.9814586,39.7164952
-5872,3161,3620,0.0948143449717999,0.0948143449717999,-104.9814586,39.7164952,-104.9803501,39.716491
-5873,3620,1826,0.102953991217456,0.102953991217456,-104.9803501,39.716491,-104.9791466,39.7165069
-5874,1826,4334,0.0954488426398559,0.0954488426398559,-104.9791466,39.7165069,-104.9780308,39.7165201
-5876,5174,1763,0.050455869495655,0.050455869495655,-104.9774882,39.7165195,-104.9768983,39.7165189
-5877,1763,4616,0.0477367574799653,0.0477367574799653,-104.9768983,39.7165189,-104.9763402,39.7165163
-5878,4616,5175,0.0514444022852647,0.0514444022852647,-104.9763402,39.7165163,-104.9757389,39.7165269
-5879,5175,4306,0.0486177089369888,0.0486177089369888,-104.9757389,39.7165269,-104.9751709,39.7165103
-5880,4306,994,0.0512355770161431,0.0512355770161431,-104.9751709,39.7165103,-104.9745719,39.7165069
-5881,994,4309,0.0460747606120818,0.0460747606120818,-104.9745719,39.7165069,-104.9740333,39.716514
-5882,4309,2915,0.0558782384698847,0.0558782384698847,-104.9740333,39.716514,-104.9733801,39.7165226
-5883,2915,2916,0.0205535416898751,0.0205535416898751,-104.9733801,39.7165226,-104.9731398,39.7165226
-5909,5190,5191,0.0526195895778432,0.0526195895778432,-105.0433305,39.7245627,-105.0439457,39.7245698
-5887,587,588,0.0168822192889414,0.0168822192889414,-105.0297456,39.724543,-105.029943,39.724543
-5888,588,5177,0.110837670707715,0.110837670707715,-105.029943,39.724543,-105.031239,39.724543
-5889,5177,1399,0.106464576541899,0.106464576541899,-105.031239,39.724543,-105.0324836,39.7245232
-5890,1399,5178,0.00837287829367045,0.00837287829367045,-105.0324836,39.7245232,-105.0325815,39.7245237
-5891,5178,5179,0.0973274399582508,0.0973274399582508,-105.0325815,39.7245237,-105.0337195,39.7245298
-5892,5179,5180,0.0713882284598403,0.0713882284598403,-105.0337195,39.7245298,-105.0345542,39.7245247
-5893,5180,3386,0.0465173628433736,0.0465173628433736,-105.0345542,39.7245247,-105.0350981,39.7245214
-5894,3386,5181,0.0466294338105993,0.0466294338105993,-105.0350981,39.7245214,-105.0356433,39.7245256
-5895,5181,5182,0.0461505269276214,0.0461505269276214,-105.0356433,39.7245256,-105.0361829,39.7245298
-5896,5182,2801,0.0476762891770853,0.0476762891770853,-105.0361829,39.7245298,-105.0367403,39.7245365
-5897,2801,5183,0.0462906353191723,0.0462906353191723,-105.0367403,39.7245365,-105.0372815,39.724543
-5898,5183,5184,0.0462689908237556,0.0462689908237556,-105.0372815,39.724543,-105.0378224,39.7245345
-5899,5184,5185,0.0466469950505128,0.0466469950505128,-105.0378224,39.7245345,-105.0383678,39.7245391
-5900,5185,5186,0.0471146492559741,0.0471146492559741,-105.0383678,39.7245391,-105.0389187,39.7245383
-5901,5186,5187,0.045278465180898,0.045278465180898,-105.0389187,39.7245383,-105.0394481,39.7245427
-5902,5187,1570,0.0464406557272166,0.0464406557272166,-105.0394481,39.7245427,-105.0399911,39.7245463
-5903,1570,1095,0.0464745881593838,0.0464745881593838,-105.0399911,39.7245463,-105.0405345,39.724543
-5904,1095,5188,0.0475893065083787,0.0475893065083787,-105.0405345,39.724543,-105.0410909,39.7245488
-7153,6059,6060,0.0479619125752321,0.0479619125752321,-105.0327949,39.7856263,-105.0333562,39.7856282
-5905,5188,5189,0.0454253204645735,0.0454253204645735,-105.0410909,39.7245488,-105.041622,39.7245543
-5906,5189,1538,0.0460968804258839,0.0460968804258839,-105.041622,39.7245543,-105.042161,39.7245549
-5907,1538,3854,0.04697776477365,0.04697776477365,-105.042161,39.7245549,-105.0427103,39.7245555
-5908,3854,5190,0.0530473283120516,0.0530473283120516,-105.0427103,39.7245555,-105.0433305,39.7245627
-5911,5192,5193,0.0515193353777817,0.0515193353777817,-104.9874942,39.724123,-104.9880966,39.7241225
-5913,5194,5195,0.0687779636933597,0.0687779636933597,-104.9883782,39.7241223,-104.9891824,39.7241217
-5914,5195,5090,0.141994718426853,0.141994718426853,-104.9891824,39.7241217,-104.9908427,39.7241238
-5915,5090,5196,0.112634336237225,0.112634336237225,-104.9908427,39.7241238,-104.9921597,39.7241238
-5916,5196,5197,0.0575743623042855,0.0575743623042855,-104.9921597,39.7241238,-104.9928329,39.7241238
-5917,5197,4671,0.100935765794822,0.100935765794822,-104.9928329,39.7241238,-104.9940131,39.7241197
-5918,4671,4951,0.0999693670841652,0.0999693670841652,-104.9940131,39.7241197,-104.995182,39.7241156
-5919,4951,5198,0.0511858126232579,0.0511858126232579,-104.995182,39.7241156,-104.9957805,39.7241162
-5921,5199,5200,0.0499779255146796,0.0499779255146796,-104.9963759,39.7241168,-104.9969602,39.7241241
-5922,5200,5201,0.0499920394458099,0.0499920394458099,-104.9969602,39.7241241,-104.9975447,39.7241295
-5923,5201,5202,0.0457134833999458,0.0457134833999458,-104.9975447,39.7241295,-104.9980791,39.724121
-5924,5202,5203,0.0421294446780762,0.0421294446780762,-104.9980791,39.724121,-104.9985716,39.7241131
-5925,5203,3957,0.137188173752203,0.137188173752203,-104.9985716,39.7241131,-105.0001757,39.7241141
-5926,3957,5204,0.0640931318030062,0.0640931318030062,-105.0001757,39.7241141,-105.000925,39.7241245
-5927,5204,5205,0.0544857674041209,0.0544857674041209,-105.000925,39.7241245,-105.001561,39.7241531
-5928,5205,5206,0.0521757463337926,0.0521757463337926,-105.001561,39.7241531,-105.002171,39.7241605
-5929,5207,5208,0.0487730947754618,0.0487730947754618,-105.0439566,39.7239385,-105.0445268,39.7239462
-5930,5208,5209,0.0493635031974476,0.0493635031974476,-105.0445268,39.7239462,-105.0451039,39.7239541
-5932,5211,5212,0.207489392195287,0.207489392195287,-105.015182,39.723292,-105.0174804,39.7238894
-5933,5212,4646,0.099390326989904,0.099390326989904,-105.0174804,39.7238894,-105.0186425,39.7238822
-5935,3645,4555,0.0986517427687235,0.0986517427687235,-105.0209651,39.7238828,-105.0221186,39.7238843
-5937,5213,5214,0.322259629928437,0.322259629928437,-104.9870231,39.769169,-104.9896839,39.7671156
-5938,5215,5216,0.143730822686287,0.143730822686287,-105.0344555,39.7293058,-105.0344587,39.7305984
-5939,5216,5217,0.0599126619694891,0.0599126619694891,-105.0344587,39.7305984,-105.034455,39.7311372
-5940,5217,5218,0.202016907937226,0.202016907937226,-105.034455,39.7311372,-105.0344966,39.7329537
-5942,5219,5220,0.186576382334646,0.186576382334646,-104.9888684,39.7256475,-104.9888573,39.7273254
-5944,5221,5222,0.13343391197395,0.13343391197395,-104.988836,39.784386,-104.988836,39.785586
-5945,5222,2558,0.200662474351154,0.200662474351154,-104.988836,39.785586,-104.9887371,39.787389
-5946,2558,5224,0.208372800213582,0.208372800213582,-104.9887371,39.787389,-104.9886598,39.789262
-5947,5225,4431,0.102067442103011,0.102067442103011,-104.9891924,39.7165504,-104.9891666,39.7174681
-5948,4431,3711,0.0989108306469789,0.0989108306469789,-104.9891666,39.7174681,-104.9891861,39.7183575
-5949,3711,5226,0.107183313746265,0.107183313746265,-104.9891861,39.7183575,-104.9891947,39.7193214
-5950,5226,1839,0.179335285582576,0.179335285582576,-104.9891947,39.7193214,-104.9891924,39.7209342
-17165,4242,3547,0.202237742052361,0.202237742052361,-104.9740228,39.6966115,-104.9739907,39.6984301
-5951,1839,2611,0.178227308228011,0.178227308228011,-104.9891924,39.7209342,-104.9891783,39.722537
-5952,2611,5195,0.176210949140518,0.176210949140518,-104.9891783,39.722537,-104.9891824,39.7241217
-20492,10836,10813,0.00305693422510609,0.00305693422510609,-105.0188782,39.7585174,-105.0189136,39.7585213
-7198,6089,1755,0.0565523921918465,0.0565523921918465,-105.0118176,39.7608059,-105.0124792,39.7608073
-18301,5526,5737,0.156444459924747,0.156444459924747,-105.0410378,39.7738771,-105.0410242,39.7724702
-5957,4512,5230,0.200430868604248,0.200430868604248,-104.9546673,39.6965834,-104.9546568,39.6947809
-5959,5231,5232,0.20240814685365,0.20240814685365,-104.9546783,39.692957,-104.9546794,39.6911367
-5960,5232,5233,0.200177276698155,0.200177276698155,-104.9546794,39.6911367,-104.9546945,39.6893365
-5961,5233,5234,0.403649470879027,0.403649470879027,-104.9546945,39.6893365,-104.9547037,39.6857064
-5962,3278,3181,0.152742056397443,0.152742056397443,-104.9546506,39.703847,-104.9546249,39.7024735
-5964,3927,3703,0.0675866941557576,0.0675866941557576,-105.0021843,39.7644198,-105.002975,39.7644254
-5965,3703,708,0.0999635221991015,0.0999635221991015,-105.002975,39.7644254,-105.0041445,39.7644316
-5966,708,5235,0.0981118109963614,0.0981118109963614,-105.0041445,39.7644316,-105.0052923,39.7644409
-5967,5235,5236,0.0989915986442654,0.0989915986442654,-105.0052923,39.7644409,-105.00645,39.7644159
-5968,5236,4189,0.135714784882046,0.135714784882046,-105.00645,39.7644159,-105.0080378,39.7644145
-5969,4189,2515,0.133468058331593,0.133468058331593,-105.0080378,39.7644145,-105.0095992,39.7644291
-5970,2515,5237,0.135326951582466,0.135326951582466,-105.0095992,39.7644291,-105.0111823,39.7644116
-5971,5237,4803,0.135895734874124,0.135895734874124,-105.0111823,39.7644116,-105.0127721,39.7644265
-5972,4803,5238,0.136371570616542,0.136371570616542,-105.0127721,39.7644265,-105.0143675,39.7644392
-5973,5238,5239,0.126834347813211,0.126834347813211,-105.0143675,39.7644392,-105.0158514,39.7644364
-5974,5239,5240,0.133492367602304,0.133492367602304,-105.0158514,39.7644364,-105.0174132,39.7644371
-5975,5240,4624,0.131817065741689,0.131817065741689,-105.0174132,39.7644371,-105.0189554,39.7644371
-7224,4702,6106,0.102350270818551,0.102350270818551,-104.987569,39.7093263,-104.9863727,39.7093097
-5979,2725,5242,0.133090700331069,0.133090700331069,-105.0236117,39.7644248,-105.0251688,39.7644237
-5981,5243,5244,0.0777207800874593,0.0777207800874593,-105.0440231,39.7648201,-105.0449324,39.7648219
-5982,5244,5245,0.710188326706697,0.710188326706697,-105.0449324,39.7648219,-105.0532413,39.7648055
-5983,3974,5246,0.196425810260379,0.196425810260379,-105.0299675,39.7647258,-105.0322646,39.764778
-5984,5246,3422,0.201357225192724,0.201357225192724,-105.0322646,39.764778,-105.0346204,39.7647784
-5986,3423,5247,0.0491810142725505,0.0491810142725505,-105.0346204,39.7649631,-105.0351958,39.7649631
-5987,5247,5248,0.0477450735797267,0.0477450735797267,-105.0351958,39.7649631,-105.0357544,39.764963
-5989,5249,5250,0.055676102895211,0.055676102895211,-105.0252881,39.7646691,-105.0259394,39.7646609
-5990,5250,5251,0.140244564447974,0.140244564447974,-105.0259394,39.7646609,-105.0275802,39.7646584
-5991,5251,5252,0.170294636723478,0.170294636723478,-105.0275802,39.7646584,-105.0295723,39.7646329
-5993,5253,5254,0.106323677730181,0.106323677730181,-104.9733576,39.7681592,-104.9721136,39.7681562
-5994,5254,5108,0.109212547805518,0.109212547805518,-104.9721136,39.7681562,-104.9708358,39.7681531
-5995,5108,4725,0.103272467122344,0.103272467122344,-104.9708358,39.7681531,-104.9696275,39.7681501
-5996,4725,5255,0.103742512264204,0.103742512264204,-104.9696275,39.7681501,-104.9684137,39.7681472
-5997,5255,5256,0.105340810076794,0.105340810076794,-104.9684137,39.7681472,-104.9671812,39.7681442
-5999,5257,3136,0.108092936006134,0.108092936006134,-104.9659655,39.7681412,-104.9647008,39.7681381
-6000,3136,3908,0.107682657630117,0.107682657630117,-104.9647008,39.7681381,-104.9634409,39.7681351
-7243,6117,6118,0.0967566510311658,0.0967566510311658,-104.9721753,39.7092881,-104.9710442,39.7092903
-6001,3908,1048,0.108571568461532,0.108571568461532,-104.9634409,39.7681351,-104.9621706,39.768132
-6002,1048,5258,0.101973343920372,0.101973343920372,-104.9621706,39.768132,-104.9609775,39.7681291
-6003,5258,5259,0.106357911571636,0.106357911571636,-104.9609775,39.7681291,-104.9597331,39.7681261
-6005,5260,5009,0.0315381518095178,0.0315381518095178,-104.9589552,39.7681242,-104.9585862,39.7681233
-6006,5009,3333,0.108118604625977,0.108118604625977,-104.9585862,39.7681233,-104.9573212,39.7681202
-6007,3333,5261,0.119315074925742,0.119315074925742,-104.9573212,39.7681202,-104.9559252,39.7681168
-6008,5261,5263,0.0963665691070474,0.0963665691070474,-104.9559252,39.7681168,-104.9547977,39.7681141
-6009,5263,5264,0.0432816561908272,0.0432816561908272,-104.9547977,39.7681141,-104.9542913,39.7681128
-6010,5264,2085,0.0535379351296007,0.0535379351296007,-104.9542913,39.7681128,-104.9536649,39.7681113
-6011,2085,5265,0.105640004427027,0.105640004427027,-104.9536649,39.7681113,-104.9524289,39.7681083
-6012,5265,4130,0.106366490545515,0.106366490545515,-104.9524289,39.7681083,-104.9511844,39.7681053
-6013,4130,5266,0.109451940113279,0.109451940113279,-104.9511844,39.7681053,-104.9499038,39.7681022
-6014,5266,5267,0.101101610243622,0.101101610243622,-104.9499038,39.7681022,-104.9487209,39.7680993
-6018,5269,5270,0.0982982274574071,0.0982982274574071,-104.9451609,39.7680906,-104.9440108,39.7680878
-6019,5270,804,0.0991956500472809,0.0991956500472809,-104.9440108,39.7680878,-104.9428502,39.768085
-6020,804,5271,0.0978879869631794,0.0978879869631794,-104.9428502,39.768085,-104.9417049,39.7680822
-6021,5271,5272,0.0909649766992318,0.0909649766992318,-104.9417049,39.7680822,-104.9406406,39.7680796
-6022,5272,5273,0.0146836193769648,0.0146836193769648,-104.9406406,39.7680796,-104.9404688,39.7680792
-6024,5274,1956,0.174868207801427,0.174868207801427,-104.93153,39.709088,-104.9295943,39.7085824
-6027,5275,5276,0.0506368419660478,0.0506368419660478,-104.9862654,39.7138801,-104.9856735,39.713872
-6028,5276,4990,0.0537681631666927,0.0537681631666927,-104.9856735,39.713872,-104.985045,39.7138633
-6029,4990,5277,0.102832227368728,0.102832227368728,-104.985045,39.7138633,-104.9838429,39.7138757
-6030,5277,5278,0.0856095541145101,0.0856095541145101,-104.9838429,39.7138757,-104.9828424,39.7138551
-6032,1548,4268,0.202455793335308,0.202455793335308,-104.9824199,39.7765295,-104.9824332,39.7783502
-6033,4268,283,0.117344693446838,0.117344693446838,-104.9824332,39.7783502,-104.9824285,39.7794055
-6035,4141,5279,0.202925527060843,0.202925527060843,-104.982643,39.7165018,-104.9826249,39.7183267
-6036,5279,2364,0.110547560275979,0.110547560275979,-104.9826249,39.7183267,-104.9826087,39.7193208
-6037,2364,4146,0.176928363643229,0.176928363643229,-104.9826087,39.7193208,-104.9825915,39.7209119
-6038,4146,5281,0.187030458155785,0.187030458155785,-104.9825915,39.7209119,-104.982597,39.7225939
-6039,5281,5282,0.011246856594195,0.011246856594195,-104.982597,39.7225939,-104.9825741,39.7226935
-6041,5283,2870,0.194705331985994,0.194705331985994,-104.9834597,39.7872862,-104.9829275,39.7855836
-6043,5285,5286,0.301111320410511,0.301111320410511,-104.983146,39.78834,-104.982876,39.79104
-6044,5287,5288,0.185724938270304,0.185724938270304,-104.9823268,39.7801891,-104.9823077,39.7818593
-6045,5288,5289,0.213285003773079,0.213285003773079,-104.9823077,39.7818593,-104.9823354,39.7837773
-6047,5290,5291,0.13629389839255,0.13629389839255,-105.0252168,39.7439449,-105.0268109,39.7439427
-6048,5291,5292,0.13355771854799,0.13355771854799,-105.0268109,39.7439427,-105.028373,39.7439427
-6049,5292,4013,0.133867532403999,0.133867532403999,-105.028373,39.7439427,-105.0299387,39.7439361
-6052,5294,3384,0.128421314744864,0.128421314744864,-105.0330637,39.7439508,-105.0345657,39.7439574
-6053,3384,5295,0.104229219478348,0.104229219478348,-105.0345657,39.7439574,-105.0357845,39.7439376
-6054,5295,3817,0.102592362577248,0.102592362577248,-105.0357845,39.7439376,-105.0369844,39.7439438
-6056,5296,5297,0.0990440053907464,0.0990440053907464,-105.0381646,39.7439521,-105.039323,39.7439462
-6057,5297,5298,0.00501097787172802,0.00501097787172802,-105.039323,39.7439462,-105.0393814,39.74395
-6058,5298,5299,0.26852367463784,0.26852367463784,-105.0393814,39.74395,-105.042522,39.7439663
-6059,5299,5300,0.02711052781377,0.02711052781377,-105.042522,39.7439663,-105.042839,39.743972
-6060,5300,5301,0.101042477184366,0.101042477184366,-105.042839,39.743972,-105.0440208,39.7439717
-6061,5301,5302,0.0980158544732548,0.0980158544732548,-105.0440208,39.7439717,-105.0451672,39.7439725
-6062,5302,5303,0.68853335666363,0.68853335666363,-105.0451672,39.7439725,-105.0532203,39.7439912
-6063,4532,3739,0.10058657036035,0.10058657036035,-105.0227589,39.7166208,-105.0227761,39.7157163
-6064,3739,5305,0.101344660556636,0.101344660556636,-105.0227761,39.7157163,-105.0227504,39.7148051
-6065,5305,1342,0.202678391855073,0.202678391855073,-105.0227504,39.7148051,-105.0226989,39.7129828
-6067,5306,4700,0.20166419460726,0.20166419460726,-105.0226912,39.7111319,-105.0226989,39.7093183
-6068,4700,5307,0.201175175307418,0.201175175307418,-105.0226989,39.7093183,-105.0227074,39.7075091
-6069,5307,5308,0.201920176537304,0.201920176537304,-105.0227074,39.7075091,-105.0226989,39.7056932
-6070,5308,5309,0.201920207593883,0.201920207593883,-105.0226989,39.7056932,-105.0226903,39.7038773
-6071,5309,777,0.201196100270561,0.201196100270561,-105.0226903,39.7038773,-105.0226903,39.7020679
-6072,777,5310,0.185040940142678,0.185040940142678,-105.0226903,39.7020679,-105.0226989,39.7004038
-6073,5310,5311,0.201942415647541,0.201942415647541,-105.0226989,39.7004038,-105.0227074,39.6985877
-6074,5311,5312,0.206000886771111,0.206000886771111,-105.0227074,39.6985877,-105.0227155,39.6967351
-7322,6161,6162,0.200977808302969,0.200977808302969,-104.9569665,39.6947747,-104.9569515,39.6929673
-6077,1729,5313,0.145417053241999,0.145417053241999,-105.02224,39.6908088,-105.0222572,39.6895011
-6079,5314,5315,0.262924523321611,0.262924523321611,-105.0227207,39.6894812,-105.0227035,39.6871167
-6080,5316,3497,0.142809169887552,0.142809169887552,-104.9500303,39.699284,-104.9488372,39.6983858
-6082,2903,5317,0.0402215187360589,0.0402215187360589,-104.973351,39.7604399,-104.9736634,39.7607104
-6083,5317,5318,0.00632191300841853,0.00632191300841853,-104.9736634,39.7607104,-104.9737157,39.7607506
-6084,5318,5319,0.00945274881783772,0.00945274881783772,-104.9737157,39.7607506,-104.9737854,39.7608166
-6085,5319,5320,0.102488283152376,0.102488283152376,-104.9737854,39.7608166,-104.9746129,39.7614836
-6086,5320,5321,0.105737259840933,0.105737259840933,-104.9746129,39.7614836,-104.9754804,39.7621615
-6087,5321,5322,0.104280118546109,0.104280118546109,-104.9754804,39.7621615,-104.9763558,39.7628147
-6088,5322,5323,0.105008595801197,0.105008595801197,-104.9763558,39.7628147,-104.9772313,39.7634772
-6089,5323,5324,0.107079302112312,0.107079302112312,-104.9772313,39.7634772,-104.9781151,39.7641597
-6090,5324,3311,0.104784168499708,0.104784168499708,-104.9781151,39.7641597,-104.9789777,39.7648293
-6091,3311,5325,0.104972132929345,0.104972132929345,-104.9789777,39.7648293,-104.9798548,39.7654901
-6093,5328,5329,0.148443179384572,0.148443179384572,-105.0327094,39.7111941,-105.0340312,39.7103291
-6094,5329,4320,0.122968314186663,0.122968314186663,-105.0340312,39.7103291,-105.0350756,39.7095692
-6095,4320,5331,0.133138685881437,0.133138685881437,-105.0350756,39.7095692,-105.0362199,39.7087576
-6096,5331,5332,0.129500346452113,0.129500346452113,-105.0362199,39.7087576,-105.0373528,39.7079851
-6097,5332,5072,0.094543402764425,0.094543402764425,-105.0373528,39.7079851,-105.0381596,39.707404
-6098,5072,5333,0.0140267468815188,0.0140267468815188,-105.0381596,39.707404,-105.0382798,39.7073182
-7348,5506,4458,0.146478928082641,0.146478928082641,-104.9817097,39.7613449,-104.9829353,39.7604242
-6099,5333,5334,0.0971985352126134,0.0971985352126134,-105.0382798,39.7073182,-105.0391209,39.7067305
-6100,5334,5335,0.0675695345311337,0.0675695345311337,-105.0391209,39.7067305,-105.0397046,39.7063211
-6101,5335,5336,0.135628949553031,0.135628949553031,-105.0397046,39.7063211,-105.0408719,39.7054957
-6102,5336,5337,0.134096180080561,0.134096180080561,-105.0408719,39.7054957,-105.0420306,39.7046835
-6103,5337,5338,0.121603742223712,0.121603742223712,-105.0420306,39.7046835,-105.0430777,39.7039439
-6104,5338,5339,0.288999775625269,0.288999775625269,-105.0430777,39.7039439,-105.0455771,39.7021954
-6105,5339,5340,0.295278488962845,0.295278488962845,-105.0455771,39.7021954,-105.0481332,39.700411
-6106,5340,5341,0.386769671992271,0.386769671992271,-105.0481332,39.700411,-105.0514806,39.6980732
-6107,5341,5342,0.199175415622423,0.199175415622423,-105.0514806,39.6980732,-105.0532275,39.6968892
-18500,9718,6670,0.0335166183519053,0.0335166183519053,-105.0303789,39.7373453,-105.029987,39.7373512
-6108,272,2532,0.233490999842372,0.233490999842372,-105.020512,39.7400417,-105.0217751,39.73818
-6109,2532,2534,0.010275790210419,0.010275790210419,-105.0217751,39.73818,-105.0217592,39.7380884
-6111,5343,5344,0.134883731263317,0.134883731263317,-105.0181862,39.7765857,-105.0182175,39.7777985
-6112,5344,2487,0.132908396505932,0.132908396505932,-105.0182175,39.7777985,-105.0181786,39.7789934
-6113,2487,2828,0.130466466605355,0.130466466605355,-105.0181786,39.7789934,-105.0181574,39.7801666
-6114,2828,1436,0.203164250472258,0.203164250472258,-105.0181574,39.7801666,-105.0181574,39.7819937
-6115,1436,5345,0.151025004833817,0.151025004833817,-105.0181574,39.7819937,-105.0181359,39.7833518
-6117,5346,5347,0.17552323432827,0.17552323432827,-104.9281276,39.716246,-104.9281375,39.7146675
-6118,5347,3107,0.175398997422213,0.175398997422213,-104.9281375,39.7146675,-104.9281351,39.7130901
-6119,3107,5348,0.192385063711178,0.192385063711178,-104.9281351,39.7130901,-104.9281539,39.71136
-6121,1515,5349,0.354712199012844,0.354712199012844,-104.9267914,39.6961177,-104.9274952,39.692974
-6123,4219,5350,0.184992548254205,0.184992548254205,-104.928034,39.690987,-104.928405,39.689348
-6124,5350,5351,0.809194581386362,0.809194581386362,-104.928405,39.689348,-104.9286924,39.6820741
-6125,3828,5352,0.158319505042179,0.158319505042179,-104.9277565,39.7065566,-104.9277592,39.7051328
-6127,3683,5353,0.00756991430853718,0.00756991430853718,-104.9848394,39.7475404,-104.9849272,39.7475492
-6128,5353,5354,0.0600900021718448,0.0600900021718448,-104.9849272,39.7475492,-104.9856252,39.7476126
-6129,5354,5355,0.0486030977669072,0.0486030977669072,-104.9856252,39.7476126,-104.986046,39.7479065
-6130,5355,5356,0.00770962942235081,0.00770962942235081,-104.986046,39.7479065,-104.9861098,39.7479555
-6132,5357,5358,0.0529187112553076,0.0529187112553076,-104.9790225,39.7499844,-104.979461,39.7503203
-6133,5358,5359,0.0513821813874635,0.0513821813874635,-104.979461,39.7503203,-104.9798903,39.7506437
-6134,5359,5360,0.0534444522847469,0.0534444522847469,-104.9798903,39.7506437,-104.9803323,39.7509836
-6135,5360,5361,0.0503260757639254,0.0503260757639254,-104.9803323,39.7509836,-104.9807486,39.7513036
-6137,5362,5363,0.199678713236371,0.199678713236371,-105.0450749,39.7228662,-105.0474095,39.722886
-6139,4554,5364,0.257952059435159,0.257952059435159,-105.0220979,39.7228967,-105.025114,39.7228932
-6141,2203,5365,0.125513593247199,0.125513593247199,-104.9873753,39.7338548,-104.988843,39.7338416
-6142,5365,5366,0.121103405669087,0.121103405669087,-104.988843,39.7338416,-104.9902592,39.7338482
-6143,5366,5367,0.118905793541669,0.118905793541669,-104.9902592,39.7338482,-104.9916497,39.7338548
-6144,5367,5368,0.110432655754222,0.110432655754222,-104.9916497,39.7338548,-104.9929409,39.7338739
-7394,6208,6209,0.0520019237828089,0.0520019237828089,-105.0324968,39.7261084,-105.0331036,39.7261385
-6145,5368,4924,0.050653673780936,0.050653673780936,-104.9929409,39.7338739,-104.9935332,39.7338673
-6146,4924,5369,0.0113612305905717,0.0113612305905717,-104.9935332,39.7338673,-104.9936509,39.7338199
-6148,5370,5371,0.0511886893302135,0.0511886893302135,-105.0015763,39.7336919,-105.0021749,39.7336954
-6149,5371,3733,0.0547546687048594,0.0547546687048594,-105.0021749,39.7336954,-105.0028152,39.7336992
-6150,3733,5372,0.0739604711312813,0.0739604711312813,-105.0028152,39.7336992,-105.0036801,39.7337035
-6151,5372,5373,0.0333758188249575,0.0333758188249575,-105.0036801,39.7337035,-105.0040704,39.7337054
-6152,5373,5374,0.0326832624474652,0.0326832624474652,-105.0040704,39.7337054,-105.0044526,39.7337074
-6153,5374,4487,0.0687015455014252,0.0687015455014252,-105.0044526,39.7337074,-105.005256,39.7337116
-6155,5375,5376,0.083676019608772,0.083676019608772,-105.0141162,39.7338913,-105.0150947,39.7338979
-6157,5377,5378,0.539527941615599,0.539527941615599,-105.044041,39.7339173,-105.0503496,39.7339965
-6158,5379,5380,0.024339909926927,0.024339909926927,-105.0008725,39.7336985,-105.0008982,39.7334805
-6159,5380,5381,0.0572545808576417,0.0572545808576417,-105.0008982,39.7334805,-105.0015677,39.7334741
-6161,5382,5383,0.0919429478923695,0.0919429478923695,-105.0174251,39.7338829,-105.0185003,39.7338787
-6162,5383,4632,0.0667555867186957,0.0667555867186957,-105.0185003,39.7338787,-105.0192808,39.733891
-6163,4632,4638,0.073630878201174,0.073630878201174,-105.0192808,39.733891,-105.0201418,39.7338828
-6164,4638,4551,0.135095610306562,0.135095610306562,-105.0201418,39.7338828,-105.0217216,39.7338931
-6165,4551,5384,0.293762175707744,0.293762175707744,-105.0217216,39.7338931,-105.0251569,39.7338774
-6167,2098,5385,0.176238767515036,0.176238767515036,-104.9269736,39.7162529,-104.9269567,39.714668
-6168,5385,3108,0.175113982885218,0.175113982885218,-104.9269567,39.714668,-104.9269709,39.7130932
-6169,3108,5386,0.213105615274275,0.213105615274275,-104.9269709,39.7130932,-104.9269765,39.7111767
-6170,5386,5387,0.16568697132589,0.16568697132589,-104.9269765,39.7111767,-104.926934,39.709687
-6171,5387,5388,0.0444779706577198,0.0444779706577198,-104.926934,39.709687,-104.926934,39.709287
-6173,1958,3829,0.172873649500925,0.172873649500925,-104.9269593,39.708107,-104.9269277,39.7065525
-6174,3829,3827,0.0048313839727239,0.0048313839727239,-104.9269277,39.7065525,-104.9269304,39.7065091
-6175,3827,5389,0.152170039924714,0.152170039924714,-104.9269304,39.7065091,-104.9269733,39.705141
-6176,5389,547,0.0103214739502372,0.0103214739502372,-104.9269733,39.705141,-104.926976,39.7050482
-6177,547,3259,0.110383801281946,0.110383801281946,-104.926976,39.7050482,-104.9269572,39.7040556
-6178,3259,3297,0.0174353644977756,0.0174353644977756,-104.9269572,39.7040556,-104.9269572,39.7038988
-6180,4220,5391,0.40468883776866,0.40468883776866,-104.9274781,39.6893679,-104.9274523,39.6857285
-6181,1473,5392,0.374922653008132,0.374922653008132,-104.9248865,39.6961248,-104.926491,39.6929872
-6182,5392,2947,0.18613051410303,0.18613051410303,-104.926491,39.6929872,-104.9259674,39.6913625
-6184,5393,5394,0.133683449538656,0.133683449538656,-104.9659493,39.748214,-104.9659359,39.7494162
-6185,5394,5395,0.00436494876438714,0.00436494876438714,-104.9659359,39.7494162,-104.9659386,39.7494554
-6186,5395,5396,0.00413948116283948,0.00413948116283948,-104.9659386,39.7494554,-104.9659346,39.7494925
-6187,5396,5397,0.135591162545584,0.135591162545584,-104.9659346,39.7494925,-104.965933,39.7507119
-6188,5397,5398,0.140883972058497,0.140883972058497,-104.965933,39.7507119,-104.965933,39.7519789
-6189,5398,823,0.138673141914839,0.138673141914839,-104.965933,39.7519789,-104.9659416,39.753226
-6190,823,3564,0.136111333534187,0.136111333534187,-104.9659416,39.753226,-104.9659688,39.7544499
-6191,3564,5399,0.14331239683406,0.14331239683406,-104.9659688,39.7544499,-104.9659557,39.7557387
-6193,5400,3028,0.141885844467344,0.141885844467344,-104.9659604,39.7582223,-104.9659386,39.7594982
-7436,5227,5219,0.0266079784612615,0.0266079784612615,-104.9891795,39.7256506,-104.9888684,39.7256475
-6195,5401,5402,0.00584885314190653,0.00584885314190653,-104.9659547,39.7606908,-104.9659547,39.7607434
-6196,5402,5403,0.138593356569714,0.138593356569714,-104.9659547,39.7607434,-104.9659547,39.7619898
-6197,5403,1157,0.139497033685325,0.139497033685325,-104.9659547,39.7619898,-104.965944,39.7632443
-6198,1157,878,0.139538816070218,0.139538816070218,-104.965944,39.7632443,-104.9659474,39.7644992
-6199,878,4466,0.138604668182001,0.138604668182001,-104.9659474,39.7644992,-104.9659447,39.7657457
-6200,4466,2786,0.1346682214983,0.1346682214983,-104.9659447,39.7657457,-104.9659434,39.7669568
-6201,2786,5257,0.131712815882714,0.131712815882714,-104.9659434,39.7669568,-104.9659655,39.7681412
-6202,5257,5404,0.212033227364557,0.212033227364557,-104.9659655,39.7681412,-104.9659333,39.7700479
-6203,5404,5405,0.140381205630714,0.140381205630714,-104.9659333,39.7700479,-104.9658988,39.7713101
-6204,5405,5406,0.175882952103236,0.175882952103236,-104.9658988,39.7713101,-104.9659423,39.7728915
-6206,4761,5407,0.0777628340765697,0.0777628340765697,-104.9656944,39.7219804,-104.9658146,39.7226736
-6207,5407,5411,0.121860688460736,0.121860688460736,-104.9658146,39.7226736,-104.9658231,39.7237695
-6208,5411,5412,0.203436645645446,0.203436645645446,-104.9658231,39.7237695,-104.9658624,39.7255988
-6211,5413,3128,0.197988223180436,0.197988223180436,-104.9658604,39.7273116,-104.9658779,39.7290921
-6213,5414,5415,0.127346625489507,0.127346625489507,-104.9656118,39.7807932,-104.9655971,39.7819384
-6214,5415,5416,0.202431697844534,0.202431697844534,-104.9655971,39.7819384,-104.9656057,39.7837589
-6216,5417,5418,0.0360920642856509,0.0360920642856509,-104.9659605,39.7364894,-104.9659747,39.7368138
-18249,10283,10284,0.0379598203284706,0.0379598203284706,-105.0375025,39.7802085,-105.0376009,39.7805414
-6217,5418,5419,0.175688258529037,0.175688258529037,-104.9659747,39.7368138,-104.9659981,39.7383937
-6218,5419,5420,0.176513424391556,0.176513424391556,-104.9659981,39.7383937,-104.9659869,39.7399811
-6219,5420,671,0.183363162969023,0.183363162969023,-104.9659869,39.7399811,-104.9659752,39.7416301
-6220,671,5421,0.00332688246962709,0.00332688246962709,-104.9659752,39.7416301,-104.9659766,39.74166
-6221,5421,5422,0.175194594065608,0.175194594065608,-104.9659766,39.74166,-104.9659949,39.7432355
-6222,5422,4601,0.174116514777802,0.174116514777802,-104.9659949,39.7432355,-104.965976,39.7448013
-6223,4601,5423,0.141050765485302,0.141050765485302,-104.965976,39.7448013,-104.9659758,39.7460698
-6225,2950,5424,0.133468479991587,0.133468479991587,-104.9258215,39.6885687,-104.9265768,39.6875185
-6226,5425,3096,0.198372842511786,0.198372842511786,-104.9698675,39.7147124,-104.9698598,39.7129284
-6227,3096,3206,0.203187034114148,0.203187034114148,-104.9698598,39.7129284,-104.9698543,39.7111011
-6228,3206,5426,0.199398136177365,0.199398136177365,-104.9698543,39.7111011,-104.9698407,39.7093079
-6229,5426,1916,0.200785704053696,0.200785704053696,-104.9698407,39.7093079,-104.9698332,39.7075022
-6231,5427,5428,0.208049356186156,0.208049356186156,-104.9699057,39.6929673,-104.9698913,39.6910963
-6232,5428,5429,0.195358366621449,0.195358366621449,-104.9698913,39.6910963,-104.9698913,39.6893394
-6233,5429,5430,0.0822508872394256,0.0822508872394256,-104.9698913,39.6893394,-104.9698913,39.6885997
-6234,5431,3740,0.099853044127537,0.099853044127537,-105.0250764,39.7166076,-105.0250764,39.7157096
-6235,3740,5432,0.079904711368683,0.079904711368683,-105.0250764,39.7157096,-105.0250773,39.714991
-6236,5432,5433,0.0177357578673254,0.0177357578673254,-105.0250773,39.714991,-105.0250764,39.7148315
-6237,5433,1299,0.160881213225809,0.160881213225809,-105.0250764,39.7148315,-105.0250625,39.7133847
-6238,1299,1344,0.0431325120453993,0.0431325120453993,-105.0250625,39.7133847,-105.0250625,39.7129968
-6239,1344,5434,0.202930771593003,0.202930771593003,-105.0250625,39.7129968,-105.0250638,39.7111718
-6240,5434,5435,0.195937805328833,0.195937805328833,-105.0250638,39.7111718,-105.0250719,39.7094097
-6241,5435,4701,0.00964060014055181,0.00964060014055181,-105.0250719,39.7094097,-105.0250719,39.709323
-6242,4701,5436,0.088911763330732,0.088911763330732,-105.0250719,39.709323,-105.0250692,39.7085234
-6243,5436,5437,0.105079205678488,0.105079205678488,-105.0250692,39.7085234,-105.0250692,39.7075784
-6244,5437,5438,0.0943047001329777,0.0943047001329777,-105.0250692,39.7075784,-105.0250719,39.7067303
-6245,5438,5439,0.100620360394738,0.100620360394738,-105.0250719,39.7067303,-105.0250705,39.7058254
-6246,5439,5440,0.0146794154501444,0.0146794154501444,-105.0250705,39.7058254,-105.0250679,39.7056934
-6247,5440,4965,0.086276226710605,0.086276226710605,-105.0250679,39.7056934,-105.0250665,39.7049175
-6248,4965,5441,0.10739345579216,0.10739345579216,-105.0250665,39.7049175,-105.0250601,39.7039517
-6249,5441,5442,0.0951717377148208,0.0951717377148208,-105.0250601,39.7039517,-105.0250601,39.7030958
-6250,5442,5443,0.0976857174224503,0.0976857174224503,-105.0250601,39.7030958,-105.0250652,39.7022173
-6252,779,5444,0.0823735255229089,0.0823735255229089,-105.0250638,39.7020728,-105.0250665,39.701332
-6253,5444,5445,0.102122427250782,0.102122427250782,-105.0250665,39.701332,-105.0250612,39.7004136
-6254,5445,4958,0.133513290288167,0.133513290288167,-105.0250612,39.7004136,-105.0250687,39.6992129
-6255,4958,5446,0.0684224753039321,0.0684224753039321,-105.0250687,39.6992129,-105.0250598,39.6985976
-6256,5446,5447,0.00769468892365438,0.00769468892365438,-105.0250598,39.6985976,-105.0250598,39.6985284
-6257,5447,5448,0.199639504943165,0.199639504943165,-105.0250598,39.6985284,-105.0250571,39.696733
-6258,5448,1501,0.201263981115328,0.201263981115328,-105.0250571,39.696733,-105.0250491,39.694923
-6259,1501,174,0.201029338652354,0.201029338652354,-105.0250491,39.694923,-105.0250478,39.6931151
-6261,1704,1730,0.0545082426213867,0.0545082426213867,-105.0250424,39.6912967,-105.0250451,39.6908065
-6262,1730,5451,0.146076957823045,0.146076957823045,-105.0250451,39.6908065,-105.0250424,39.6894928
-6263,5451,5452,1.20615427321132,1.20615427321132,-105.0250424,39.6894928,-105.0250276,39.6786456
-6265,5456,5457,0.107171013555617,0.107171013555617,-104.9861136,39.7384486,-104.9848604,39.7384323
-6266,5457,5458,0.0551341429674013,0.0551341429674013,-104.9848604,39.7384323,-104.9842156,39.7384332
-6267,5458,5459,0.053860211885536,0.053860211885536,-104.9842156,39.7384332,-104.9835857,39.7384319
-6268,5459,5460,0.109859438734606,0.109859438734606,-104.9835857,39.7384319,-104.9823009,39.7384375
-6269,5460,5461,0.104952215686531,0.104952215686531,-104.9823009,39.7384375,-104.9810735,39.7384309
-6270,5461,5462,0.0537660564474852,0.0537660564474852,-104.9810735,39.7384309,-104.9804447,39.73843
-6271,5462,5463,0.0468001440268365,0.0468001440268365,-104.9804447,39.73843,-104.9798976,39.7384177
-6273,5464,5465,0.0487076064705391,0.0487076064705391,-104.9793148,39.7384144,-104.9787452,39.7384091
-6274,5465,5466,0.096682643717806,0.096682643717806,-104.9787452,39.7384091,-104.9776145,39.7384045
-6275,5466,5052,0.0976295695745084,0.0976295695745084,-104.9776145,39.7384045,-104.976473,39.7384243
-6276,5052,5467,0.0498503558842522,0.0498503558842522,-104.976473,39.7384243,-104.97589,39.7384222
-6277,5467,5468,0.0500897185974344,0.0500897185974344,-104.97589,39.7384222,-104.9753042,39.7384242
-6279,5223,978,0.0483462615206691,0.0483462615206691,-104.9747109,39.7384283,-104.9741456,39.7384195
-6280,978,5469,0.0500186833718628,0.0500186833718628,-104.9741456,39.7384195,-104.9735608,39.7384085
-6281,5469,5470,0.0466179289686935,0.0466179289686935,-104.9735608,39.7384085,-104.9730156,39.7384072
-6282,5470,5471,0.0496889709391185,0.0496889709391185,-104.9730156,39.7384072,-104.9724345,39.7384108
-6283,5471,5472,0.0500395303728477,0.0500395303728477,-104.9724345,39.7384108,-104.9718493,39.7384144
-6284,5472,4947,0.0500649255411997,0.0500649255411997,-104.9718493,39.7384144,-104.9712638,39.7384111
-6285,4947,5119,0.0486069729184005,0.0486069729184005,-104.9712638,39.7384111,-104.9706954,39.7384177
-6286,5119,5473,0.0497694572157541,0.0497694572157541,-104.9706954,39.7384177,-104.9701135,39.7384072
-6287,5473,4719,0.0482501223288259,0.0482501223288259,-104.9701135,39.7384072,-104.9695494,39.7384185
-6288,4719,5474,0.0825694493004343,0.0825694493004343,-104.9695494,39.7384185,-104.9685838,39.7384102
-6289,5474,5475,0.013401399089124,0.013401399089124,-104.9685838,39.7384102,-104.9684271,39.7384126
-6290,5475,5476,0.103889728134339,0.103889728134339,-104.9684271,39.7384126,-104.9672122,39.7384004
-6291,5476,5419,0.103815153646491,0.103815153646491,-104.9672122,39.7384004,-104.9659981,39.7383937
-6292,5419,5477,0.109635415021011,0.109635415021011,-104.9659981,39.7383937,-104.964716,39.7383814
-6294,3890,1020,0.105962717150938,0.105962717150938,-104.9634822,39.7383772,-104.962243,39.7383855
-6295,1020,5478,0.052027246508575,0.052027246508575,-104.962243,39.7383855,-104.9616347,39.7383964
-6296,5478,5479,0.0524872333525023,0.0524872333525023,-104.9616347,39.7383964,-104.9610209,39.7383907
-6297,5479,3719,0.052252544610622,0.052252544610622,-104.9610209,39.7383907,-104.9604099,39.7383822
-6298,3719,5480,0.0538013756911254,0.0538013756911254,-104.9604099,39.7383822,-104.9597808,39.7383914
-6299,5480,5481,0.0436600330786078,0.0436600330786078,-104.9597808,39.7383914,-104.9592702,39.7383938
-6300,5481,5482,0.00837974421686285,0.00837974421686285,-104.9592702,39.7383938,-104.9591722,39.7383943
-14763,7162,4611,0.176903840452458,0.176903840452458,-104.9793413,39.7432656,-104.9793144,39.7448564
-6301,5482,5026,0.040489278057912,0.040489278057912,-104.9591722,39.7383943,-104.9586987,39.7383904
-6302,5026,3338,0.107876149200874,0.107876149200874,-104.9586987,39.7383904,-104.9574371,39.7383843
-6303,3338,5483,0.0990429074228521,0.0990429074228521,-104.9574371,39.7383843,-104.9562788,39.7383792
-6304,5483,5484,0.0966066822218646,0.0966066822218646,-104.9562788,39.7383792,-104.955149,39.7383732
-6305,5484,5485,0.085086759759281,0.085086759759281,-104.955149,39.7383732,-104.9541539,39.7383732
-6306,5485,5486,0.0169728889677259,0.0169728889677259,-104.9541539,39.7383732,-104.9539554,39.7383732
-6307,5486,2067,0.0825646387998858,0.0825646387998858,-104.9539554,39.7383732,-104.9529898,39.7383752
-6309,5487,2667,0.0866869262626222,0.0866869262626222,-104.952802,39.738367,-104.9517882,39.7383629
-6310,2667,2664,0.00897895817052901,0.00897895817052901,-104.9517882,39.7383629,-104.9516835,39.7383567
-6311,2664,4137,0.0908182867369719,0.0908182867369719,-104.9516835,39.7383567,-104.9506214,39.7383505
-6312,4137,5488,0.0965705527653259,0.0965705527653259,-104.9506214,39.7383505,-104.9494922,39.738334
-6313,5488,5489,0.0942751679467969,0.0942751679467969,-104.9494922,39.738334,-104.9483898,39.7383484
-6314,5489,5490,0.0959916716400224,0.0959916716400224,-104.9483898,39.7383484,-104.9472672,39.7383417
-6315,5490,3461,0.0933212956911074,0.0933212956911074,-104.9472672,39.7383417,-104.9461758,39.7383438
-6316,3461,5491,0.0467923341231575,0.0467923341231575,-104.9461758,39.7383438,-104.9456286,39.7383386
-6317,5491,5492,0.0479894648111637,0.0479894648111637,-104.9456286,39.7383386,-104.9450674,39.7383333
-6318,5492,5493,0.094030978726141,0.094030978726141,-104.9450674,39.7383333,-104.9439677,39.7383313
-6319,5493,861,0.0920531787302436,0.0920531787302436,-104.9439677,39.7383313,-104.9428912,39.7383217
-6320,861,5494,0.092346282981082,0.092346282981082,-104.9428912,39.7383217,-104.9418112,39.7383212
-6321,5494,5495,0.091117734759624,0.091117734759624,-104.9418112,39.7383212,-104.9407458,39.7383041
-20501,10824,10839,0.0279151158292869,0.0279151158292869,-105.0208891,39.7583505,-105.0206127,39.7582168
-6323,5496,5497,0.0512308809047994,0.0512308809047994,-104.9773755,39.757988,-104.9777977,39.758315
-6324,5497,5498,0.0547050066584288,0.0547050066584288,-104.9777977,39.758315,-104.9782485,39.7586642
-6325,5498,5499,0.0532065647068504,0.0532065647068504,-104.9782485,39.7586642,-104.978687,39.7590038
-6326,5499,5500,0.0520026026999989,0.0520026026999989,-104.978687,39.7590038,-104.9791156,39.7593357
-6327,5500,5501,0.0600453089722235,0.0600453089722235,-104.9791156,39.7593357,-104.9796104,39.759719
-6328,5501,5502,0.0451373924487277,0.0451373924487277,-104.9796104,39.759719,-104.9799824,39.7600071
-7588,6319,6320,0.0874047970677394,0.0874047970677394,-105.036097,39.7056008,-105.0371184,39.7056206
-6330,5503,5504,0.0512021800904844,0.0512021800904844,-104.9804313,39.7603548,-104.9808533,39.7606816
-6331,5504,5505,0.0535897595927606,0.0535897595927606,-104.9808533,39.7606816,-104.9812949,39.7610237
-6332,5505,5506,0.0503264318858696,0.0503264318858696,-104.9812949,39.7610237,-104.9817097,39.7613449
-6333,5506,5507,0.0549843628648472,0.0549843628648472,-104.9817097,39.7613449,-104.9821628,39.7616959
-6334,5507,3309,0.0521587927419047,0.0521587927419047,-104.9821628,39.7616959,-104.9825927,39.7620288
-6335,3309,5508,0.0557422576502987,0.0557422576502987,-104.9825927,39.7620288,-104.9830521,39.7623846
-6336,5508,5509,0.0498065817995712,0.0498065817995712,-104.9830521,39.7623846,-104.9834626,39.7627025
-6338,5510,5511,0.10273263586878,0.10273263586878,-104.9738469,39.7553142,-104.974688,39.7559741
-6339,5511,5512,0.103095987250104,0.103095987250104,-104.974688,39.7559741,-104.975568,39.7566081
-6340,5512,3020,0.0125186689867189,0.0125186689867189,-104.975568,39.7566081,-104.9756854,39.7566754
-6341,3020,5513,0.0466432236195876,0.0466432236195876,-104.9756854,39.7566754,-104.97606,39.7569804
-6342,5513,4381,0.0509815437370977,0.0509815437370977,-104.97606,39.7569804,-104.9764694,39.7573138
-6344,5514,5515,0.103259680904514,0.103259680904514,-104.998222,39.7742728,-104.9994301,39.7742575
-6345,5515,3934,0.0990266173550878,0.0990266173550878,-104.9994301,39.7742575,-105.0005888,39.7742509
-6346,3934,5516,0.10122291130851,0.10122291130851,-105.0005888,39.7742509,-105.0017732,39.7742575
-6347,5516,3707,0.107162793104657,0.107162793104657,-105.0017732,39.7742575,-105.0030264,39.7742905
-6348,3707,717,0.101965718351369,0.101965718351369,-105.0030264,39.7742905,-105.0042194,39.7743037
-6349,717,5517,0.10489500722876,0.10489500722876,-105.0042194,39.7743037,-105.0054468,39.7743037
-6350,5517,5518,0.0880249775504832,0.0880249775504832,-105.0054468,39.7743037,-105.0064768,39.7743037
-6352,5519,4201,0.0955388621117037,0.0955388621117037,-105.0064768,39.7741388,-105.0075947,39.7741338
-6353,4201,1068,0.10398483351111,0.10398483351111,-105.0075947,39.7741338,-105.0088114,39.7741256
-6354,1068,2504,0.101881809876575,0.101881809876575,-105.0088114,39.7741256,-105.0100035,39.774133
-6355,2504,5520,0.10295538196753,0.10295538196753,-105.0100035,39.774133,-105.0112082,39.7741318
-6356,5520,1231,0.0964004159007037,0.0964004159007037,-105.0112082,39.7741318,-105.0123362,39.7741321
-6357,1231,4809,0.0995624903271375,0.0995624903271375,-105.0123362,39.7741321,-105.0135012,39.7741317
-6358,4809,2176,0.101169164261142,0.101169164261142,-105.0135012,39.7741317,-105.014685,39.7741313
-6359,2176,5521,0.102032335854251,0.102032335854251,-105.014685,39.7741313,-105.0158789,39.7741319
-6360,5521,348,0.0731550647240869,0.0731550647240869,-105.0158789,39.7741319,-105.0167349,39.7741306
-6361,348,351,0.0329026304601732,0.0329026304601732,-105.0167349,39.7741306,-105.0171199,39.7741304
-6363,5522,4629,0.122115753805888,0.122115753805888,-105.0175119,39.7741304,-105.0189408,39.7741298
-6364,4629,1258,0.132003632804436,0.132003632804436,-105.0189408,39.7741298,-105.0204854,39.7741292
-6366,377,4544,0.0548661978897115,0.0548661978897115,-105.0213949,39.7741289,-105.0220369,39.7741287
-6367,4544,2700,0.136738193723685,0.136738193723685,-105.0220369,39.7741287,-105.0236369,39.7741281
-6368,2700,5523,0.130559333935347,0.130559333935347,-105.0236369,39.7741281,-105.0251646,39.7741276
-6371,5525,1133,0.0486624445582808,0.0486624445582808,-105.0398709,39.7738651,-105.0404403,39.7738672
-6372,1133,5526,0.0510752177714687,0.0510752177714687,-105.0404403,39.7738672,-105.0410378,39.7738771
-6373,5526,5527,0.0534768474459495,0.0534768474459495,-105.0410378,39.7738771,-105.0416634,39.7738873
-6374,5527,3849,0.0993499397911337,0.0993499397911337,-105.0416634,39.7738873,-105.0428259,39.7738908
-20247,6972,10718,0.0278784612667637,0.0278784612667637,-105.0336248,39.7451433,-105.033621,39.745394
-6375,3849,5528,0.0502810849564127,0.0502810849564127,-105.0428259,39.7738908,-105.0434142,39.7738965
-6376,5528,5529,0.0506206995449551,0.0506206995449551,-105.0434142,39.7738965,-105.0440065,39.7738927
-6378,3432,5530,0.0954898525843842,0.0954898525843842,-105.0346033,39.7741067,-105.033486,39.774099
-6379,5530,1409,0.0985492973952367,0.0985492973952367,-105.033486,39.774099,-105.032333,39.774085
-6380,1409,5531,0.102140021124127,0.102140021124127,-105.032333,39.774085,-105.031138,39.77407
-6381,5531,3995,0.106588318724824,0.106588318724824,-105.031138,39.77407,-105.0298909,39.7740573
-6382,3995,5532,0.089989655098645,0.089989655098645,-105.0298909,39.7740573,-105.028838,39.774047
-6383,5532,5533,0.0940983975381981,0.0940983975381981,-105.028838,39.774047,-105.027737,39.774038
-6384,5533,3749,0.102559803256087,0.102559803256087,-105.027737,39.774038,-105.026537,39.774028
-6385,3749,5534,0.132377311804748,0.132377311804748,-105.026537,39.774028,-105.0252738,39.774717
-6388,2028,5536,0.103552176267271,0.103552176267271,-104.9936175,39.7741835,-104.9948277,39.7742296
-6391,3402,5538,0.101285303038309,0.101285303038309,-105.0346118,39.75209,-105.0357963,39.7521098
-6392,5538,5539,0.0982612440798091,0.0982612440798091,-105.0357963,39.7521098,-105.0369449,39.7521429
-6393,5539,5540,0.104203916508807,0.104203916508807,-105.0369449,39.7521429,-105.0381637,39.7521297
-6394,5540,5541,0.0994909347746214,0.0994909347746214,-105.0381637,39.7521297,-105.0393273,39.7521135
-6395,5541,5542,0.0496866830167122,0.0496866830167122,-105.0393273,39.7521135,-105.0399084,39.7521049
-6396,5542,1115,0.0483270289965061,0.0483270289965061,-105.0399084,39.7521049,-105.0404736,39.7520966
-6397,1115,5543,0.0505090974663915,0.0505090974663915,-105.0404736,39.7520966,-105.0410644,39.752101
-6398,5543,5544,0.051466523607823,0.051466523607823,-105.0410644,39.752101,-105.0416664,39.7521054
-6399,5544,5545,0.0509771831188889,0.0509771831188889,-105.0416664,39.7521054,-105.0422627,39.7521069
-18369,6894,6889,0.0506808956189271,0.0506808956189271,-105.0259502,39.7655831,-105.0259388,39.7651274
-6400,5545,3837,0.0484293465449961,0.0484293465449961,-105.0422627,39.7521069,-105.0428292,39.7521069
-6402,5546,5547,0.0572465530818606,0.0572465530818606,-104.9874887,39.6894093,-104.9881577,39.6894044
-6403,5547,4036,0.051041556606541,0.051041556606541,-104.9881577,39.6894044,-104.9887542,39.6894075
-6404,4036,5548,0.0609619584955507,0.0609619584955507,-104.9887542,39.6894075,-104.9894666,39.6894141
-6405,1878,4178,0.0543518295000293,0.0543518295000293,-104.9904039,39.689387,-104.9910391,39.689387
-6406,4178,5549,0.0885356562805968,0.0885356562805968,-104.9910391,39.689387,-104.9920738,39.6893875
-6408,1863,2630,0.0954187587481574,0.0954187587481574,-105.0439342,39.7212724,-105.0439263,39.7221305
-6409,2630,2609,0.0942841337329746,0.0942841337329746,-105.0439263,39.7221305,-105.0439334,39.7229784
-6410,2609,5207,0.106776685868403,0.106776685868403,-105.0439334,39.7229784,-105.0439566,39.7239385
-6411,5207,5191,0.0702035466323056,0.0702035466323056,-105.0439566,39.7239385,-105.0439457,39.7245698
-6412,5191,5550,0.105689823753241,0.105689823753241,-105.0439457,39.7245698,-105.0439763,39.72552
-6414,5551,5552,0.13548002915508,0.13548002915508,-105.0440125,39.7548692,-105.0440147,39.7560876
-6415,5552,5553,0.0682592832885596,0.0682592832885596,-105.0440147,39.7560876,-105.0440268,39.7567014
-6416,5553,19,0.0650116042038798,0.0650116042038798,-105.0440268,39.7567014,-105.044038,39.757286
-6417,19,2991,0.133631170313494,0.133631170313494,-105.044038,39.757286,-105.0440114,39.7584876
-6418,2991,5554,0.0524731372315077,0.0524731372315077,-105.0440114,39.7584876,-105.0440133,39.7589595
-6419,5554,1882,0.0490816557393864,0.0490816557393864,-105.0440133,39.7589595,-105.044015,39.7594009
-6420,1882,5555,0.0508829391590993,0.0508829391590993,-105.044015,39.7594009,-105.0440136,39.7598585
-6421,5555,5556,0.0494818870663145,0.0494818870663145,-105.0440136,39.7598585,-105.0440122,39.7603035
-6422,5556,5557,0.0511609921162368,0.0511609921162368,-105.0440122,39.7603035,-105.0440105,39.7607636
-6423,5557,5558,0.0498069369814246,0.0498069369814246,-105.0440105,39.7607636,-105.0440044,39.7612115
-6424,5558,5559,0.0494751154031395,0.0494751154031395,-105.0440044,39.7612115,-105.0440122,39.7616564
-6425,5559,5560,0.0510095826256232,0.0510095826256232,-105.0440122,39.7616564,-105.0440201,39.7621151
-18695,5978,4055,0.196460738141722,0.196460738141722,-105.0391098,39.719916,-105.0391007,39.7181492
-6426,5560,5561,0.100658038986824,0.100658038986824,-105.0440201,39.7621151,-105.0440091,39.7630203
-6427,5561,5562,0.100189919501299,0.100189919501299,-105.0440091,39.7630203,-105.0439996,39.7639213
-6428,5562,5243,0.0999621826427635,0.0999621826427635,-105.0439996,39.7639213,-105.0440231,39.7648201
-6429,5243,5563,0.0514845629022423,0.0514845629022423,-105.0440231,39.7648201,-105.0440188,39.7652831
-6430,5563,5564,0.0509507800422364,0.0509507800422364,-105.0440188,39.7652831,-105.0440146,39.7657413
-6431,5564,5565,0.0506384299937204,0.0506384299937204,-105.0440146,39.7657413,-105.0440165,39.7661967
-6432,5565,5566,0.0502094012018427,0.0502094012018427,-105.0440165,39.7661967,-105.0440247,39.7666482
-6433,5566,5567,0.0352773306402212,0.0352773306402212,-105.0440247,39.7666482,-105.0440325,39.7669654
-6434,5567,1696,0.0663073245001768,0.0663073245001768,-105.0440325,39.7669654,-105.0440268,39.7675617
-6435,1696,5568,0.200475700974595,0.200475700974595,-105.0440268,39.7675617,-105.0440382,39.7693646
-6436,5568,2444,0.175243279627828,0.175243279627828,-105.0440382,39.7693646,-105.0440363,39.7709406
-6438,5569,5570,0.150878938410471,0.150878938410471,-105.0440431,39.7711254,-105.0440138,39.7724821
-6439,5570,5571,0.0520399442807291,0.0520399442807291,-105.0440138,39.7724821,-105.0440106,39.7729501
-6440,5571,5572,0.00805055351559969,0.00805055351559969,-105.0440106,39.7729501,-105.0440103,39.7730225
-6441,5572,5573,0.0547971824088202,0.0547971824088202,-105.0440103,39.7730225,-105.0440081,39.7735153
-6442,5573,5529,0.0419651880906561,0.0419651880906561,-105.0440081,39.7735153,-105.0440065,39.7738927
-6443,5529,5574,0.00738334312936163,0.00738334312936163,-105.0440065,39.7738927,-105.0440065,39.7739591
-6444,5574,5575,0.0892116998808573,0.0892116998808573,-105.0440065,39.7739591,-105.044007,39.7747614
-6445,5575,5576,0.0587189734757016,0.0587189734757016,-105.044007,39.7747614,-105.0439812,39.7752891
-6446,5576,5577,0.143444822058071,0.143444822058071,-105.0439812,39.7752891,-105.0439697,39.7765791
-6447,5577,5578,0.0305007791534936,0.0305007791534936,-105.0439697,39.7765791,-105.0439694,39.7768534
-6448,5578,5579,0.0181914980281834,0.0181914980281834,-105.0439694,39.7768534,-105.0439692,39.777017
-6449,5579,5580,0.150469022298562,0.150469022298562,-105.0439692,39.777017,-105.0439678,39.7783702
-6450,5580,5581,0.204922214354376,0.204922214354376,-105.0439678,39.7783702,-105.04396,39.7802131
-6451,5581,5582,0.0983186744589269,0.0983186744589269,-105.04396,39.7802131,-105.0439618,39.7810973
-6452,5582,1433,0.108782481382419,0.108782481382419,-105.0439618,39.7810973,-105.043958,39.7820756
-6453,1433,5583,0.123482673613688,0.123482673613688,-105.043958,39.7820756,-105.043938,39.783186
-6454,5583,5584,0.0754033254163114,0.0754033254163114,-105.043938,39.783186,-105.0439445,39.7838641
-6455,5584,5585,0.194791277181441,0.194791277181441,-105.0439445,39.7838641,-105.043944,39.7856159
-6456,5585,5586,0.0533068649535537,0.0533068649535537,-105.043944,39.7856159,-105.0439435,39.7860953
-6457,5586,2555,0.14827848293408,0.14827848293408,-105.0439435,39.7860953,-105.0439421,39.7874288
-6458,2555,5587,0.408042656170713,0.408042656170713,-105.0439421,39.7874288,-105.0439281,39.7910984
-6459,5588,5589,0.135112968623698,0.135112968623698,-105.0439294,39.7354289,-105.0439287,39.736644
-6460,5589,5590,0.203702085134274,0.203702085134274,-105.0439287,39.736644,-105.0440007,39.7384751
-6461,5590,5591,0.207620262278034,0.207620262278034,-105.0440007,39.7384751,-105.0440223,39.7403422
-6462,5591,4585,0.131035476997682,0.131035476997682,-105.0440223,39.7403422,-105.0440113,39.7415206
-6463,4585,5592,0.072769358589151,0.072769358589151,-105.0440113,39.7415206,-105.0440283,39.7421749
-6464,5592,5593,0.0625746572307696,0.0625746572307696,-105.0440283,39.7421749,-105.0440188,39.7427376
-6465,5593,5301,0.137225765514935,0.137225765514935,-105.0440188,39.7427376,-105.0440208,39.7439717
-6467,5594,5595,0.274145349571988,0.274145349571988,-105.0438496,39.7258018,-105.0438951,39.728267
-6468,5595,5596,0.205443804135366,0.205443804135366,-105.0438951,39.728267,-105.0438933,39.7301146
-6469,5596,5597,0.121926623756206,0.121926623756206,-105.0438933,39.7301146,-105.0438865,39.7312111
-6470,5597,5598,0.202580256912195,0.202580256912195,-105.0438865,39.7312111,-105.0439037,39.7330329
-6472,4361,5599,0.206258701511779,0.206258701511779,-105.0015929,39.7165869,-105.0015794,39.7184418
-6474,5600,5601,0.168149469233138,0.168149469233138,-105.0015966,39.7194189,-105.0016014,39.7209311
-6476,2625,5205,0.166253482314503,0.166253482314503,-105.0013439,39.7226673,-105.001561,39.7241531
-6502,5622,5516,0.138783948073856,0.138783948073856,-105.0017809,39.7730094,-105.0017732,39.7742575
-6477,5205,5602,0.15603138237828,0.15603138237828,-105.001561,39.7241531,-105.0016002,39.725556
-6478,5602,5603,0.0341829476854199,0.0341829476854199,-105.0016002,39.725556,-105.0016041,39.7258634
-6479,5603,5604,0.162233690102157,0.162233690102157,-105.0016041,39.7258634,-105.0016005,39.7273224
-6480,5604,5605,0.176890418224524,0.176890418224524,-105.0016005,39.7273224,-105.0015919,39.7289132
-6481,5605,5606,0.121703194532156,0.121703194532156,-105.0015919,39.7289132,-105.0015885,39.7300077
-6482,5606,5609,0.0547747917576354,0.0547747917576354,-105.0015885,39.7300077,-105.0015869,39.7305003
-6483,5609,5610,0.177274555583034,0.177274555583034,-105.0015869,39.7305003,-105.0015677,39.7320945
-6484,5610,5611,0.0562757523743122,0.0562757523743122,-105.0015677,39.7320945,-105.0015677,39.7326006
-6485,5611,5381,0.0971287684245127,0.0971287684245127,-105.0015677,39.7326006,-105.0015677,39.7334741
-6486,5381,5370,0.0242294178668139,0.0242294178668139,-105.0015677,39.7334741,-105.0015763,39.7336919
-6487,5370,5612,0.177146422666141,0.177146422666141,-105.0015763,39.7336919,-105.001567,39.735285
-6488,5612,5613,0.176947014024794,0.176947014024794,-105.001567,39.735285,-105.0015927,39.7368762
-6489,5613,5614,0.177715418603807,0.177715418603807,-105.0015927,39.7368762,-105.0015572,39.7384742
-6490,5614,5615,0.0918268918834614,0.0918268918834614,-105.0015572,39.7384742,-105.0015645,39.7393
-6491,5615,5616,0.00795060277662081,0.00795060277662081,-105.0015645,39.7393,-105.0015651,39.7393715
-6493,5617,5618,0.0159556400855116,0.0159556400855116,-105.0015669,39.7400197,-105.0015736,39.7401631
-6496,5619,5620,0.132547309025511,0.132547309025511,-105.0018152,39.7656592,-105.0017926,39.7668511
-6497,5620,1667,0.132931219459218,0.132931219459218,-105.0017926,39.7668511,-105.0017747,39.7680465
-6498,1667,5621,0.138273532739947,0.138273532739947,-105.0017747,39.7680465,-105.0017647,39.76929
-6499,5621,2448,0.13601631946961,0.13601631946961,-105.0017647,39.76929,-105.0017747,39.7705132
-6500,2448,3238,0.136726308588665,0.136726308588665,-105.0017747,39.7705132,-105.0017809,39.7717428
-6501,3238,5622,0.14083949408811,0.14083949408811,-105.0017809,39.7717428,-105.0017809,39.7730094
-6503,5516,5623,0.135704638458681,0.135704638458681,-105.0017732,39.7742575,-105.0017268,39.7754774
-6504,5623,5624,0.00588469429500613,0.00588469429500613,-105.0017268,39.7754774,-105.0017248,39.7755303
-6505,5624,5625,0.115900802279231,0.115900802279231,-105.0017248,39.7755303,-105.0017162,39.7765726
-6506,5625,5626,0.19877742240622,0.19877742240622,-105.0017162,39.7765726,-105.0016991,39.7783602
-6507,5626,110,0.101954628240396,0.101954628240396,-105.0016991,39.7783602,-105.0016991,39.7792771
-6508,110,2818,0.0990079626838536,0.0990079626838536,-105.0016991,39.7792771,-105.0016991,39.7801675
-6509,2818,1419,0.203073935940985,0.203073935940985,-105.0016991,39.7801675,-105.0017224,39.7819937
-6510,1419,5627,0.11954884298017,0.11954884298017,-105.0017224,39.7819937,-105.0017122,39.7830688
-6511,2917,5628,0.0366435746314918,0.0366435746314918,-104.9732076,39.7181827,-104.9727792,39.7181791
-6513,3710,5629,0.104723848956837,0.104723848956837,-104.9874523,39.7183509,-104.9862279,39.718349
-6514,5629,5630,0.0524718119166661,0.0524718119166661,-104.9862279,39.718349,-104.9856145,39.7183411
-6515,5630,5631,0.0523604583661445,0.0523604583661445,-104.9856145,39.7183411,-104.9850024,39.7183333
-6516,5631,963,0.102688945741692,0.102688945741692,-104.9850024,39.7183333,-104.9838018,39.7183372
-6519,2898,5632,0.0542316769914945,0.0542316769914945,-104.9733526,39.7557317,-104.9727182,39.7557338
-6520,5632,5633,0.0508977749431617,0.0508977749431617,-104.9727182,39.7557338,-104.9721228,39.7557358
-6521,5633,5634,0.106035617894042,0.106035617894042,-104.9721228,39.7557358,-104.9708824,39.75574
-6522,5634,4734,0.104599442261749,0.104599442261749,-104.9708824,39.75574,-104.9696588,39.7557441
-6524,5635,5399,0.0949731678048623,0.0949731678048623,-104.9670667,39.7557406,-104.9659557,39.7557387
-6525,5399,5636,0.053273863098243,0.053273863098243,-104.9659557,39.7557387,-104.9653325,39.7557377
-6526,5636,5637,0.0532054766684841,0.0532054766684841,-104.9653325,39.7557377,-104.9647101,39.7557367
-6527,5637,3901,0.105282590951624,0.105282590951624,-104.9647101,39.7557367,-104.9634785,39.7557346
-6528,3901,1038,0.105350981348288,0.105350981348288,-104.9634785,39.7557346,-104.9622461,39.7557325
-6530,5638,5639,0.103436146317209,0.103436146317209,-104.9609978,39.7557305,-104.9597878,39.7557284
-6531,5639,5004,0.104923546637106,0.104923546637106,-104.9597878,39.7557284,-104.9585604,39.7557264
-6532,5004,3324,0.10200854500581,0.10200854500581,-104.9585604,39.7557264,-104.9573671,39.7557244
-20515,10842,6731,0.00724303302685487,0.00724303302685487,-105.0159695,39.7589091,-105.0159724,39.7589742
-6533,3324,5640,0.105949384946318,0.105949384946318,-104.9573671,39.7557244,-104.9561277,39.7557223
-6534,5640,5641,0.102726616753478,0.102726616753478,-104.9561277,39.7557223,-104.954926,39.7557203
-6535,5641,2075,0.105470656717315,0.105470656717315,-104.954926,39.7557203,-104.9536922,39.7557183
-6536,2075,2672,0.106385362776241,0.106385362776241,-104.9536922,39.7557183,-104.9524477,39.7557162
-6537,2672,4122,0.107308593371936,0.107308593371936,-104.9524477,39.7557162,-104.9511924,39.7557141
-6538,4122,5642,0.107983920400391,0.107983920400391,-104.9511924,39.7557141,-104.9499292,39.755712
-6539,5642,5643,0.0919555733248638,0.0919555733248638,-104.9499292,39.755712,-104.9488535,39.7557103
-7832,6456,349,0.0697483782641925,0.0697483782641925,-105.0158736,39.775342,-105.0166897,39.7753492
-6540,5643,5644,0.101410180701687,0.101410180701687,-104.9488535,39.7557103,-104.9476672,39.7557083
-6541,5644,3470,0.100777601888944,0.100777601888944,-104.9476672,39.7557083,-104.9464883,39.7557063
-6542,3470,5645,0.101863251928372,0.101863251928372,-104.9464883,39.7557063,-104.9452967,39.7557043
-6543,5645,3873,0.0981959903542781,0.0981959903542781,-104.9452967,39.7557043,-104.944148,39.7557023
-6544,3873,849,0.100085165894781,0.100085165894781,-104.944148,39.7557023,-104.9429772,39.7557004
-6546,1400,5646,0.00898751016812899,0.00898751016812899,-105.0324862,39.7250782,-105.0325885,39.7250967
-6547,5646,5647,0.190632434837625,0.190632434837625,-105.0325885,39.7250967,-105.0347769,39.7254226
-6548,5647,3388,0.011727623160982,0.011727623160982,-105.0347769,39.7254226,-105.0349134,39.7254327
-6549,3388,5648,0.0568259028608414,0.0568259028608414,-105.0349134,39.7254327,-105.0355748,39.7254817
-6550,5648,5649,0.00637619061562419,0.00637619061562419,-105.0355748,39.7254817,-105.035649,39.7254873
-6551,5649,5650,0.0463019954871414,0.0463019954871414,-105.035649,39.7254873,-105.0361904,39.7254853
-6552,5650,2800,0.0477133812275841,0.0477133812275841,-105.0361904,39.7254853,-105.0367483,39.7254828
-6553,2800,5651,0.0470719166287448,0.0470719166287448,-105.0367483,39.7254828,-105.0372987,39.7254804
-6554,5651,5652,0.0458325636837201,0.0458325636837201,-105.0372987,39.7254804,-105.0378346,39.7254837
-6555,5652,5653,0.046653544202397,0.046653544202397,-105.0378346,39.7254837,-105.0383801,39.725487
-6556,5653,5654,0.0464726377537293,0.0464726377537293,-105.0383801,39.725487,-105.0389235,39.725486
-6557,5654,5655,0.0469344544346564,0.0469344544346564,-105.0389235,39.725486,-105.0394723,39.725485
-6558,5655,2751,0.046215112991852,0.046215112991852,-105.0394723,39.725485,-105.0400126,39.7254926
-6559,2751,1096,0.0461039483088431,0.0461039483088431,-105.0400126,39.7254926,-105.0405516,39.7255002
-6560,1096,5656,0.0452023576254509,0.0452023576254509,-105.0405516,39.7255002,-105.0410801,39.7255057
-6561,5656,5657,0.0460150379661812,0.0460150379661812,-105.0410801,39.7255057,-105.0416181,39.7255114
-6562,5657,1539,0.0464321875423527,0.0464321875423527,-105.0416181,39.7255114,-105.042161,39.7255157
-6563,1539,3855,0.0473472190950861,0.0473472190950861,-105.042161,39.7255157,-105.0427146,39.72552
-6565,4485,345,0.22138299033862,0.22138299033862,-105.0056478,39.7253802,-105.0067949,39.727165
-6566,345,5661,0.163308085042962,0.163308085042962,-105.0067949,39.727165,-105.008697,39.727035
-6567,5661,5662,0.065819748510902,0.065819748510902,-105.008697,39.727035,-105.008885,39.726461
-6568,5661,5663,0.0801840013229962,0.0801840013229962,-105.008697,39.727035,-105.00953,39.727366
-6569,3287,5665,0.0688755620206119,0.0688755620206119,-104.9490802,39.7038404,-104.9486082,39.7033386
-6570,5665,5666,0.0427865432685629,0.0427865432685629,-104.9486082,39.7033386,-104.9482219,39.7030942
-6571,5666,523,0.0741847082758752,0.0741847082758752,-104.9482219,39.7030942,-104.947535,39.702687
-6572,523,5667,0.0513515905827488,0.0513515905827488,-104.947535,39.702687,-104.947235,39.702287
-6573,5667,597,0.0787762757947461,0.0787762757947461,-104.947235,39.702287,-104.9464074,39.7019764
-6574,597,4825,0.152733980621547,0.152733980621547,-104.9464074,39.7019764,-104.9446221,39.7019764
-6576,2530,1931,0.0607754389242505,0.0607754389242505,-105.0304849,39.7379392,-105.030496,39.7384857
-6578,5668,5669,0.20518077925237,0.20518077925237,-105.0310864,39.7548296,-105.0311012,39.7566748
-6580,5670,2976,0.052930873102536,0.052930873102536,-105.0310884,39.7580274,-105.0310829,39.7585034
-6582,5671,5672,0.0669604143503768,0.0669604143503768,-104.9976172,39.7173382,-104.997538,39.7179373
-6583,5672,3722,0.0539771509338677,0.0539771509338677,-104.997538,39.7179373,-104.9975448,39.7184227
-6584,3722,5673,0.103203771462203,0.103203771462203,-104.9975448,39.7184227,-104.9975345,39.7193508
-6585,5673,5674,0.175725539559539,0.175725539559539,-104.9975345,39.7193508,-104.9975487,39.7209311
-6587,5675,5676,0.204879915807757,0.204879915807757,-104.998391,39.7584595,-104.9984194,39.7603019
-6588,5677,5678,0.00677682168687122,0.00677682168687122,-104.998198,39.7674788,-104.9982133,39.7675386
-6589,5678,1665,0.0567234226799308,0.0567234226799308,-104.9982133,39.7675386,-104.9982066,39.7680487
-6590,1665,5679,0.122659531226911,0.122659531226911,-104.9982066,39.7680487,-104.9982029,39.7691518
-6592,5680,5681,0.862768870925976,0.862768870925976,-105.0432124,39.7065384,-105.0532533,39.7058097
-6593,5682,5683,0.164927546324728,0.164927546324728,-104.9991817,39.7066718,-105.0011096,39.70666
-6594,5683,4367,0.0355730578333277,0.0355730578333277,-105.0011096,39.70666,-105.0015253,39.7066683
-6595,4367,1448,0.193853665061985,0.193853665061985,-105.0015253,39.7066683,-105.0037914,39.7066687
-6596,1448,5688,0.205590441563944,0.205590441563944,-105.0037914,39.7066687,-105.0061947,39.7066687
-6598,5689,5690,0.100594816308247,0.100594816308247,-105.040852,39.7068752,-105.0420279,39.7068686
-6599,5690,5691,0.0991234853564762,0.0991234853564762,-105.0420279,39.7068686,-105.0431866,39.7068752
-6601,5438,5692,0.211107914724763,0.211107914724763,-105.0250719,39.7067303,-105.0275397,39.7067299
-6602,5692,4415,0.193109246091061,0.193109246091061,-105.0275397,39.7067299,-105.0297971,39.7067299
-6603,4415,5693,0.226139344299967,0.226139344299967,-105.0297971,39.7067299,-105.0324406,39.7067365
-6606,4323,5694,0.0859068688818743,0.0859068688818743,-105.0350585,39.7071591,-105.0360627,39.7071657
-6608,5695,5696,0.0748977449692987,0.0748977449692987,-105.0362429,39.7071723,-105.0371184,39.7071789
-6609,5696,5073,0.0868839085552243,0.0868839085552243,-105.0371184,39.7071789,-105.0381339,39.7071927
-6610,5073,5333,0.0187220275557185,0.0187220275557185,-105.0381339,39.7071927,-105.0382798,39.7073182
-6612,5697,1590,0.201198112839976,0.201198112839976,-105.010983,39.7065516,-105.0133347,39.7065252
-18141,10274,10269,0.134684266769083,0.134684266769083,-105.0136006,39.7885593,-105.0151755,39.7886103
-6613,1590,1640,0.20125093456728,0.20125093456728,-105.0133347,39.7065252,-105.0156865,39.706479
-6615,5698,5699,0.200385663675414,0.200385663675414,-105.0357723,39.7603267,-105.0357639,39.7621288
-6617,5700,5701,0.196514919519562,0.196514919519562,-105.035764,39.7622008,-105.0357666,39.7639681
-6618,5701,5248,0.110632746994,0.110632746994,-105.0357666,39.7639681,-105.0357544,39.764963
-6619,5248,5702,0.0945616875172071,0.0945616875172071,-105.0357544,39.764963,-105.0357792,39.7658132
-6620,5702,1685,0.205454867561864,0.205454867561864,-105.0357792,39.7658132,-105.0357789,39.7676609
-6621,1685,5703,0.206063854698429,0.206063854698429,-105.0357789,39.7676609,-105.0358122,39.7695139
-6622,5703,2430,0.199691165132387,0.199691165132387,-105.0358122,39.7695139,-105.0357922,39.7713097
-6623,2430,5704,0.202603259150386,0.202603259150386,-105.0357922,39.7713097,-105.0357738,39.7731317
-6625,4504,4050,0.176201016140026,0.176201016140026,-105.0361142,39.7165547,-105.0361228,39.7181393
-6626,4050,5707,0.173108439499024,0.173108439499024,-105.0361228,39.7181393,-105.0361257,39.7196961
-6628,1851,2587,0.179402678295732,0.179402678295732,-105.036129,39.721332,-105.0361228,39.7229454
-6630,5708,5709,0.275624196707738,0.275624196707738,-105.0361678,39.7257622,-105.0362218,39.7282406
-6632,5710,5711,0.261275347332411,0.261275347332411,-105.0362304,39.7306104,-105.0362237,39.7329601
-6634,5712,5713,0.0444779706577198,0.0444779706577198,-105.0357542,39.7810788,-105.0357542,39.7814788
-6635,5714,5715,0.183336097782058,0.183336097782058,-105.0357506,39.7767314,-105.0357824,39.77838
-6636,5715,5716,0.203064462732684,0.203064462732684,-105.0357824,39.77838,-105.0357784,39.7802062
-6638,5717,5718,0.153081250432522,0.153081250432522,-105.0358099,39.7329669,-105.0356487,39.734338
-6639,5718,5719,0.011675447758709,0.011675447758709,-105.0356487,39.734338,-105.0355549,39.7344143
-6641,1422,5720,0.117935613657917,0.117935613657917,-105.0357695,39.7820968,-105.0357487,39.7831573
-6643,5721,5722,0.194099197890973,0.194099197890973,-105.0357498,39.7838704,-105.035771,39.7856159
-6644,5722,2542,0.201930616083342,0.201930616083342,-105.035771,39.7856159,-105.0357769,39.7874319
-6645,2542,5723,0.411877202316789,0.411877202316789,-105.0357769,39.7874319,-105.035774,39.791136
-6646,5724,624,0.116891424974631,0.116891424974631,-105.0357584,39.7355345,-105.0357481,39.7365857
-6648,5725,5726,0.225973303098124,0.225973303098124,-104.9515323,39.7020311,-104.9536931,39.7008623
-6649,5726,3656,0.0613034024300807,0.0613034024300807,-104.9536931,39.7008623,-104.9541489,39.7004369
-6651,5727,5728,0.116763945302488,0.116763945302488,-105.0444167,39.7021543,-105.0443995,39.7011043
-6652,3634,5729,0.249262670016259,0.249262670016259,-104.9444999,39.7082421,-104.9447703,39.7060101
-6653,5729,5730,0.0886979206005476,0.0886979206005476,-104.9447703,39.7060101,-104.9441523,39.7053696
-6654,5730,5731,0.061003880318824,0.061003880318824,-104.9441523,39.7053696,-104.9434927,39.7051611
-6655,5731,3294,0.169569384240282,0.169569384240282,-104.9434927,39.7051611,-104.9425622,39.7038146
-6657,5730,5729,0.0886979206005476,0.0886979206005476,-104.9441523,39.7053696,-104.9447703,39.7060101
-18322,2543,7478,0.411854888798545,0.411854888798545,-105.0363411,39.7874312,-105.0363411,39.7911351
-6660,716,5733,0.106180030125168,0.106180030125168,-105.0041786,39.7730524,-105.005421,39.7730569
-6661,5733,5734,0.0889628078792179,0.0889628078792179,-105.005421,39.7730569,-105.0064617,39.7730392
-6663,5735,5736,0.0499420076759338,0.0499420076759338,-105.0393,39.7724567,-105.0398843,39.7724635
-6664,5736,1132,0.0480445960055664,0.0480445960055664,-105.0398843,39.7724635,-105.0404464,39.7724701
-6665,1132,5737,0.0493807651843696,0.0493807651843696,-105.0404464,39.7724701,-105.0410242,39.7724702
-6666,5737,5738,0.0542607296398929,0.0542607296398929,-105.0410242,39.7724702,-105.0416591,39.7724704
-6667,5738,3848,0.102653360815707,0.102653360815707,-105.0416591,39.7724704,-105.0428601,39.7724844
-6668,3848,5739,0.0481952973910705,0.0481952973910705,-105.0428601,39.7724844,-105.043424,39.77248
-6669,5739,5570,0.0504068578554883,0.0504068578554883,-105.043424,39.77248,-105.0440138,39.7724821
-6671,5740,5741,0.102055279401325,0.102055279401325,-104.9982189,39.7729896,-104.9994129,39.7730041
-6672,5741,3933,0.103350213888063,0.103350213888063,-104.9994129,39.7730041,-105.0006222,39.7730028
-6675,5742,4200,0.0968208569301817,0.0968208569301817,-105.0064961,39.7729336,-105.007629,39.7729337
-6676,4200,4193,0.0357662020116287,0.0357662020116287,-105.007629,39.7729337,-105.0080475,39.7729338
-6677,4193,1067,0.0660115016724451,0.0660115016724451,-105.0080475,39.7729338,-105.0088199,39.7729339
-6678,1067,2520,0.0682249892032966,0.0682249892032966,-105.0088199,39.7729339,-105.0096182,39.772934
-6679,2520,2503,0.0444235862340648,0.0444235862340648,-105.0096182,39.772934,-105.010138,39.772934
-6680,2503,5743,0.0929237526477458,0.0929237526477458,-105.010138,39.772934,-105.0112253,39.7729342
-6681,5743,1230,0.097564382820973,0.097564382820973,-105.0112253,39.7729342,-105.0123669,39.7729343
-6682,1230,4808,0.0974618272678182,0.0974618272678182,-105.0123669,39.7729343,-105.0135073,39.7729344
-6683,4808,2175,0.100974351727253,0.100974351727253,-105.0135073,39.7729344,-105.0146888,39.7729346
-6685,5744,5745,0.139227813146129,0.139227813146129,-105.0158722,39.7729208,-105.0175012,39.7729349
-20421,10782,10783,0.171335167034037,0.171335167034037,-105.0179661,39.7583302,-105.0159618,39.7583177
-6686,5745,4628,0.122998125096167,0.122998125096167,-105.0175012,39.7729349,-105.0189404,39.7729351
-6687,4628,378,0.0772242252157125,0.0772242252157125,-105.0189404,39.7729351,-105.019844,39.7729352
-6688,378,1257,0.0550380704812319,0.0550380704812319,-105.019844,39.7729352,-105.020488,39.7729352
-6689,1257,4543,0.132381944494249,0.132381944494249,-105.020488,39.7729352,-105.022037,39.7729354
-6690,4543,2715,0.0724896248395526,0.0724896248395526,-105.022037,39.7729354,-105.0228852,39.7729347
-7972,6547,5411,0.11011441218455,0.11011441218455,-104.9671106,39.7237629,-104.9658231,39.7237695
-6691,2715,2699,0.0727973179644107,0.0727973179644107,-105.0228852,39.7729347,-105.023737,39.7729356
-6692,2699,5748,0.121810190364873,0.121810190364873,-105.023737,39.7729356,-105.0251623,39.7729358
-6696,5750,5751,0.00763183841002978,0.00763183841002978,-105.0450566,39.7729489,-105.0451459,39.7729488
-6697,5751,5752,0.692257458082336,0.692257458082336,-105.0451459,39.7729488,-105.053246,39.7729508
-6698,2026,4672,0.134236367930218,0.134236367930218,-104.9920812,39.772996,-104.9936519,39.772996
-6699,4672,5753,0.102239429594337,0.102239429594337,-104.9936519,39.772996,-104.9948482,39.7729937
-6700,5753,5754,0.100506379378587,0.100506379378587,-104.9948482,39.7729937,-104.9960241,39.7730069
-6702,5755,5756,0.2002287044093,0.2002287044093,-104.9551441,39.7819442,-104.9551441,39.7837449
-6704,5757,5758,0.173042563926175,0.173042563926175,-104.9547567,39.7803553,-104.9547235,39.7819113
-6706,5759,744,0.063721377479395,0.063721377479395,-104.9553084,39.7758275,-104.9553192,39.7764005
-6707,744,1562,0.141424652289019,0.141424652289019,-104.9553192,39.7764005,-104.9553028,39.7776723
-6708,1562,5760,0.139452228533295,0.139452228533295,-104.9553028,39.7776723,-104.9553129,39.7789264
-6709,5760,5761,0.121153404070921,0.121153404070921,-104.9553129,39.7789264,-104.9552887,39.7800158
-6710,5761,5762,0.0103214683330101,0.0103214683330101,-104.9552887,39.7800158,-104.9552914,39.7801086
-6711,5762,5763,0.04652452941841,0.04652452941841,-104.9552914,39.7801086,-104.9552887,39.780527
-6712,5764,5765,0.155984788161682,0.155984788161682,-105.0047699,39.6984076,-105.0065723,39.6981963
-6716,5767,5768,0.200784793626825,0.200784793626825,-104.9758538,39.7800585,-104.974836,39.781686
-6743,3756,5769,0.0494129956173261,0.0494129956173261,-105.0264176,39.7874342,-105.0269959,39.7874328
-7994,6557,2764,0.0940480727939324,0.0940480727939324,-104.9338133,39.7243478,-104.9327137,39.724358
-6717,5768,5772,0.846413211947238,0.846413211947238,-104.974836,39.781686,-104.969071,39.787876
-6718,5772,517,0.0606861281340196,0.0606861281340196,-104.969071,39.787876,-104.968456,39.788149
-6719,517,5773,0.188473310975888,0.188473310975888,-104.968456,39.788149,-104.96707,39.7894676
-6721,5774,5775,0.0796153059223016,0.0796153059223016,-104.9874021,39.7450987,-104.9879817,39.7456591
-6722,5775,5776,0.00646390558051832,0.00646390558051832,-104.9879817,39.7456591,-104.9880305,39.7457035
-6723,5776,3007,0.1066159594542,0.1066159594542,-104.9880305,39.7457035,-104.9889069,39.7463856
-6724,3007,5777,0.100407769542541,0.100407769542541,-104.9889069,39.7463856,-104.989708,39.7470459
-6725,5777,4393,0.00579135202620092,0.00579135202620092,-104.989708,39.7470459,-104.9897603,39.747079
-6726,4393,5778,0.102044175747327,0.102044175747327,-104.9897603,39.747079,-104.990623,39.7477132
-6727,5778,5779,0.107668499777307,0.107668499777307,-104.990623,39.7477132,-104.9915202,39.7483927
-6728,5779,5780,0.108043382155599,0.108043382155599,-104.9915202,39.7483927,-104.9924092,39.7490833
-6729,5780,5781,0.101222003009649,0.101222003009649,-104.9924092,39.7490833,-104.9932554,39.74972
-6730,5781,5782,0.103527244594317,0.103527244594317,-104.9932554,39.74972,-104.9941044,39.7503839
-6733,5784,5785,0.0519740547318723,0.0519740547318723,-104.9949995,39.7510718,-104.9954256,39.7514052
-6734,5785,5786,0.0540518378903488,0.0540518378903488,-104.9954256,39.7514052,-104.995889,39.7517359
-6735,5786,5787,0.105403398355375,0.105403398355375,-104.995889,39.7517359,-104.99675,39.7524144
-6736,5787,5788,0.0515636589786252,0.0515636589786252,-104.99675,39.7524144,-104.9971819,39.7527381
-6737,5788,5789,0.0542361941294726,0.0542361941294726,-104.9971819,39.7527381,-104.9976271,39.7530856
-6738,5789,1159,0.0519632563805573,0.0519632563805573,-104.9976271,39.7530856,-104.9980616,39.7534124
-6739,1159,1609,0.055296326623055,0.055296326623055,-104.9980616,39.7534124,-104.9985176,39.7537651
-6742,5791,3756,0.0502859716725157,0.0502859716725157,-105.0258291,39.7874305,-105.0264176,39.7874342
-6744,5769,5792,0.0505152652453619,0.0505152652453619,-105.0269959,39.7874328,-105.0275871,39.7874313
-6745,5792,5793,0.0487326254633791,0.0487326254633791,-105.0275871,39.7874313,-105.0281574,39.7874261
-6746,5793,5794,0.0492772484970981,0.0492772484970981,-105.0281574,39.7874261,-105.0287341,39.7874292
-6747,5794,5795,0.0490197084274457,0.0490197084274457,-105.0287341,39.7874292,-105.0293078,39.7874293
-6748,5795,4008,0.0494402902066907,0.0494402902066907,-105.0293078,39.7874293,-105.0298864,39.7874254
-6749,4008,5796,0.0498144967732103,0.0498144967732103,-105.0298864,39.7874254,-105.0304694,39.7874265
-6750,5796,5797,0.0492676243070722,0.0492676243070722,-105.0304694,39.7874265,-105.031046,39.7874275
-6751,5797,5798,0.0496699296957128,0.0496699296957128,-105.031046,39.7874275,-105.0316273,39.7874301
-6752,5798,1392,0.0490530110641543,0.0490530110641543,-105.0316273,39.7874301,-105.0322013,39.7874223
-6753,1392,5799,0.0511729331725758,0.0511729331725758,-105.0322013,39.7874223,-105.0328002,39.7874226
-6755,5800,5801,0.0504747882864981,0.0504747882864981,-105.0333549,39.7874228,-105.0339455,39.7874133
-6756,5801,2540,0.0519704512694329,0.0519704512694329,-105.0339455,39.7874133,-105.0345536,39.7874035
-6758,5802,5803,0.0134893781959873,0.0134893781959873,-104.9916445,39.7400016,-104.9916422,39.7401229
-6759,5803,5804,0.0651761990637723,0.0651761990637723,-104.9916422,39.7401229,-104.99118,39.740589
-6760,5804,5805,0.00867856878189995,0.00867856878189995,-104.99118,39.740589,-104.9911089,39.7406447
-6761,5805,5806,0.145096674327765,0.145096674327765,-104.9911089,39.7406447,-104.989913,39.7415705
-6762,5806,5807,0.146807263740651,0.146807263740651,-104.989913,39.7415705,-104.9886895,39.7424968
-6763,5807,5808,0.0971857772299024,0.0971857772299024,-104.9886895,39.7424968,-104.9878972,39.7431235
-8041,6591,5218,0.10367384999594,0.10367384999594,-105.0332843,39.7329428,-105.0344966,39.7329537
-6766,5810,5811,0.146768415759705,0.146768415759705,-104.9814347,39.7480847,-104.9802084,39.7490084
-6768,1701,5812,0.0556890737408001,0.0556890737408001,-104.9875011,39.6911908,-104.9868503,39.6911967
-6769,5812,5813,0.0500299056894462,0.0500299056894462,-104.9868503,39.6911967,-104.9862656,39.6911947
-6770,5813,572,0.048773855210923,0.048773855210923,-104.9862656,39.6911947,-104.9856956,39.6911905
-6771,572,4985,0.0488849816155661,0.0488849816155661,-104.9856956,39.6911905,-104.9851243,39.6911864
-6772,4985,5815,0.0487728428614096,0.0487728428614096,-104.9851243,39.6911864,-104.9845543,39.6911833
-6773,5815,5816,0.0486567223604475,0.0486567223604475,-104.9845543,39.6911833,-104.9839857,39.6911771
-6774,5816,5817,0.0490027802416811,0.0490027802416811,-104.9839857,39.6911771,-104.983413,39.6911761
-6775,5817,5819,0.0533578755133891,0.0533578755133891,-104.983413,39.6911761,-104.9827894,39.6911761
-6776,5819,5820,0.0539390556466382,0.0539390556466382,-104.9827894,39.6911761,-104.9821591,39.6911678
-6778,5821,5822,0.0489941039004867,0.0489941039004867,-104.9815757,39.6911678,-104.9810031,39.6911678
-6780,3617,5823,0.0506292858836976,0.0506292858836976,-104.9804371,39.6911668,-104.9798455,39.691158
-6781,5823,5824,0.0500724300001191,0.0500724300001191,-104.9798455,39.691158,-104.9792603,39.6911567
-6782,5824,5825,0.0499880884355422,0.0499880884355422,-104.9792603,39.6911567,-104.9786761,39.6911533
-6783,5825,5099,0.0484306981291016,0.0484306981291016,-104.9786761,39.6911533,-104.9781101,39.6911501
-6784,5099,5826,0.0978349213689401,0.0978349213689401,-104.9781101,39.6911501,-104.9769668,39.691138
-8066,6604,2108,0.411848469661871,0.411848469661871,-104.9316605,39.7797563,-104.9269854,39.7788565
-6786,3484,5827,0.0514683137992155,0.0514683137992155,-104.9640755,39.691151,-104.963474,39.6911476
-6787,5827,5828,0.0484135897290906,0.0484135897290906,-104.963474,39.6911476,-104.9629082,39.6911444
-6789,5829,3698,0.0457527085543311,0.0457527085543311,-104.9622681,39.6911405,-104.9617334,39.6911372
-6790,3698,5705,0.0484471809833024,0.0484471809833024,-104.9617334,39.6911372,-104.9611673,39.6911287
-6791,5705,4572,0.0515108919391295,0.0515108919391295,-104.9611673,39.6911287,-104.9605654,39.6911197
-6792,4572,5830,0.105767692426024,0.105767692426024,-104.9605654,39.6911197,-104.9593294,39.6911329
-6793,5830,5831,0.0553912495449553,0.0553912495449553,-104.9593294,39.6911329,-104.9586821,39.6911399
-6794,5831,5832,0.0496407969110197,0.0496407969110197,-104.9586821,39.6911399,-104.958102,39.6911462
-6795,5832,5833,0.0474198419855964,0.0474198419855964,-104.958102,39.6911462,-104.9575478,39.6911453
-6796,5833,5834,0.0495588851512039,0.0495588851512039,-104.9575478,39.6911453,-104.9569687,39.691137
-6797,5834,5835,0.0489032950107884,0.0489032950107884,-104.9569687,39.691137,-104.9563972,39.6911319
-6798,5835,2741,0.0480512246257303,0.0480512246257303,-104.9563972,39.6911319,-104.9558357,39.6911246
-6800,5836,5232,0.0488850197079726,0.0488850197079726,-104.9552507,39.6911326,-104.9546794,39.6911367
-6801,5232,5837,0.0498079610709467,0.0498079610709467,-104.9546794,39.6911367,-104.9540973,39.6911339
-6802,5837,3174,0.0480709718129458,0.0480709718129458,-104.9540973,39.6911339,-104.9535355,39.6911312
-6803,3174,5838,0.0510747433773575,0.0510747433773575,-104.9535355,39.6911312,-104.9529386,39.6911278
-6804,5838,4999,0.0480555922075882,0.0480555922075882,-104.9529386,39.6911278,-104.9523772,39.6911402
-8084,6614,6615,0.0939591856631224,0.0939591856631224,-104.9338724,39.736497,-104.9349711,39.7364838
-6805,4999,5839,0.0491139247433474,0.0491139247433474,-104.9523772,39.6911402,-104.9518032,39.6911405
-6806,5839,731,0.0513728158017048,0.0513728158017048,-104.9518032,39.6911405,-104.9512028,39.6911407
-18529,9525,9153,0.0559524577768326,0.0559524577768326,-105.0340236,39.7499955,-105.0338511,39.7495101
-6807,731,5840,0.100363141472313,0.100363141472313,-104.9512028,39.6911407,-104.9500299,39.6911495
-6810,4683,1528,0.0512242368793757,0.0512242368793757,-104.9751813,39.691337,-104.9746158,39.6911858
-6811,1528,5087,0.0490096920376181,0.0490096920376181,-104.9746158,39.6911858,-104.9740434,39.6911697
-6812,5087,5841,0.0531197353238214,0.0531197353238214,-104.9740434,39.6911697,-104.973423,39.6911522
-6813,5841,5011,0.0514391840217863,0.0514391840217863,-104.973423,39.6911522,-104.9728223,39.6911338
-6814,5011,1747,0.0499193361712115,0.0499193361712115,-104.9728223,39.6911338,-104.9722389,39.6911368
-6815,1747,5608,0.0521168381912245,0.0521168381912245,-104.9722389,39.6911368,-104.9716303,39.6911179
-6816,5608,5842,0.0474458476070982,0.0474458476070982,-104.9716303,39.6911179,-104.9710758,39.6911161
-6817,5842,5449,0.0516188826793533,0.0516188826793533,-104.9710758,39.6911161,-104.9704727,39.6911049
-6818,5449,5428,0.0497563082276933,0.0497563082276933,-104.9704727,39.6911049,-104.9698913,39.6910963
-6819,5428,5390,0.0522374705433985,0.0522374705433985,-104.9698913,39.6910963,-104.9692808,39.6910982
-6820,5390,5843,0.0480447601658553,0.0480447601658553,-104.9692808,39.6910982,-104.9687193,39.6910999
-6822,5844,5845,0.0146913941785162,0.0146913941785162,-104.9407088,39.6911295,-104.9405371,39.6911295
-6823,5845,1699,0.184528247922268,0.184528247922268,-104.9405371,39.6911295,-104.9383805,39.6911269
-6824,1699,5846,0.0932680068963059,0.0932680068963059,-104.9383805,39.6911269,-104.9372905,39.6911203
-6825,5846,5847,0.0932852372069282,0.0932852372069282,-104.9372905,39.6911203,-104.9362004,39.6911071
-6826,5847,3120,0.098410300465854,0.098410300465854,-104.9362004,39.6911071,-104.9350503,39.6911005
-6827,3120,5848,0.0905968964383526,0.0905968964383526,-104.9350503,39.6911005,-104.9339926,39.6911379
-6828,5848,5849,0.19461602791519,0.19461602791519,-104.9339926,39.6911379,-104.9317181,39.6911379
-8104,239,6631,0.0428753899381976,0.0428753899381976,-104.9766938,39.6912137,-104.9763643,39.6909232
-6830,5850,5851,0.0206820775273506,0.0206820775273506,-105.0022921,39.7147654,-105.0025228,39.7148211
-6833,1635,5853,0.0933590693142476,0.0933590693142476,-105.015737,39.714787,-105.016828,39.7148117
-6834,5853,5854,0.015431953306933,0.015431953306933,-105.016828,39.7148117,-105.0170084,39.7148136
-6835,5854,4213,0.0860217230993429,0.0860217230993429,-105.0170084,39.7148136,-105.018014,39.714824
-6836,4213,5855,0.0995731813164872,0.0995731813164872,-105.018014,39.714824,-105.019178,39.714811
-6837,5855,192,0.102944368273924,0.102944368273924,-105.019178,39.714811,-105.0203814,39.7148249
-6838,192,2922,0.0977156398673512,0.0977156398673512,-105.0203814,39.7148249,-105.021523,39.7147919
-6840,5305,1460,0.094441811393562,0.094441811393562,-105.0227504,39.7148051,-105.0238542,39.7148259
-6841,1460,5433,0.104542660065313,0.104542660065313,-105.0238542,39.7148259,-105.0250764,39.7148315
-6843,5856,1868,0.210287860037949,0.210287860037949,-104.9875046,39.7147611,-104.9899631,39.7147612
-6844,1868,4186,0.189585415099738,0.189585415099738,-104.9899631,39.7147612,-104.9921793,39.7147876
-6846,5432,5857,0.104903215241116,0.104903215241116,-105.0250773,39.714991,-105.0263037,39.7149834
-6847,5857,5858,0.105720950651237,0.105720950651237,-105.0263037,39.7149834,-105.0275397,39.7149834
-6848,5858,5859,0.105743888331652,0.105743888331652,-105.0275397,39.7149834,-105.0287757,39.7149636
-6849,5859,4421,0.104252361029944,0.104252361029944,-105.0287757,39.7149636,-105.0299945,39.7149702
-6852,5861,5862,0.0519463280728807,0.0519463280728807,-105.0324691,39.7149773,-105.0330764,39.7149803
-6853,5862,5863,0.0520746976816124,0.0520746976816124,-105.0330764,39.7149803,-105.0336852,39.7149834
-6854,5863,5864,0.053223022054701,0.053223022054701,-105.0336852,39.7149834,-105.0343073,39.7149733
-6855,5864,4317,0.0510499917933612,0.0510499917933612,-105.0343073,39.7149733,-105.034904,39.7149636
-8127,6232,6642,0.179146147134138,0.179146147134138,-104.9985893,39.7257061,-104.9985895,39.7273172
-6857,5865,4505,0.0514748271562017,0.0514748271562017,-105.0355038,39.7149636,-105.0361056,39.7149636
-6858,4505,3608,0.0515275362522861,0.0515275362522861,-105.0361056,39.7149636,-105.036708,39.7149602
-6859,3608,5866,0.050240952107019,0.050240952107019,-105.036708,39.7149602,-105.0372953,39.7149674
-6860,5866,5867,0.0507479546434346,0.0507479546434346,-105.0372953,39.7149674,-105.0378886,39.7149662
-6861,5867,5067,0.0521453287858806,0.0521453287858806,-105.0378886,39.7149662,-105.0384982,39.7149609
-6862,5067,5868,0.051338093574988,0.051338093574988,-105.0384982,39.7149609,-105.0390984,39.7149619
-6863,5868,5869,0.0516032507649761,0.0516032507649761,-105.0390984,39.7149619,-105.0397017,39.7149609
-6864,5869,5870,0.0504748368648883,0.0504748368648883,-105.0397017,39.7149609,-105.0402918,39.7149634
-6865,5870,5871,0.0517263613465763,0.0517263613465763,-105.0402918,39.7149634,-105.0408965,39.7149688
-6866,5871,5872,0.102624635673,0.102624635673,-105.0408965,39.7149688,-105.0420963,39.7149694
-6867,5872,3299,0.100255573957512,0.100255573957512,-105.0420963,39.7149694,-105.0432684,39.7149673
-6869,5873,5874,0.0663164411935832,0.0663164411935832,-105.043719,39.7149652,-105.0444942,39.7149755
-6870,5874,5875,0.0488050085545576,0.0488050085545576,-105.0444942,39.7149755,-105.0450642,39.7149556
-6871,5875,5876,0.702184603750594,0.702184603750594,-105.0450642,39.7149556,-105.0532734,39.7149935
-6874,4525,5880,0.0113022768719971,0.0113022768719971,-105.0251701,39.7632042,-105.0252841,39.7632557
-6875,5880,5881,0.00806516295239482,0.00806516295239482,-105.0252841,39.7632557,-105.0253707,39.7632845
-6876,5881,5882,0.0293119532501538,0.0293119532501538,-105.0253707,39.7632845,-105.0256867,39.7633869
-6877,5882,5883,0.0236481545130312,0.0236481545130312,-105.0256867,39.7633869,-105.025945,39.7634631
-6878,5883,5884,0.0171068759325808,0.0171068759325808,-105.025945,39.7634631,-105.026131,39.7635199
-6879,5884,5885,0.034181660212992,0.034181660212992,-105.026131,39.7635199,-105.0264783,39.7636723
-6880,5885,5887,0.100387180512852,0.100387180512852,-105.0264783,39.7636723,-105.0276119,39.7639084
-6882,4433,5888,0.29159089003557,0.29159089003557,-105.0109506,39.7174666,-105.0109694,39.7148443
-6883,5888,4667,0.102395884967111,0.102395884967111,-105.0109694,39.7148443,-105.011015,39.7139241
-6885,1334,1389,0.100271016747699,0.100271016747699,-105.0110016,39.7130472,-105.011015,39.7121455
-6886,1389,5889,0.10737593920352,0.10737593920352,-105.011015,39.7121455,-105.0110016,39.7111799
-6887,5889,5890,0.105882607972477,0.105882607972477,-105.0110016,39.7111799,-105.0109926,39.7102277
-6888,5890,4707,0.0969202900217867,0.0969202900217867,-105.0109926,39.7102277,-105.010984,39.7093561
-6889,4707,5891,0.0993764614715991,0.0993764614715991,-105.010984,39.7093561,-105.0109775,39.7084624
-6890,5891,5892,0.0973957865151901,0.0973957865151901,-105.0109775,39.7084624,-105.0109755,39.7075865
-6891,5892,5894,0.0203600085186263,0.0203600085186263,-105.0109755,39.7075865,-105.0109744,39.7074034
-6893,5697,5895,0.0355610028885881,0.0355610028885881,-105.010983,39.7065516,-105.0109801,39.7062318
-6894,5895,5896,0.0640153359599377,0.0640153359599377,-105.0109801,39.7062318,-105.0109828,39.7056561
-6896,4960,5897,0.0913255616395888,0.0913255616395888,-105.0109882,39.7047956,-105.0109828,39.7039743
-6897,5897,766,0.157641216727225,0.157641216727225,-105.0109828,39.7039743,-105.0109855,39.7025566
-6898,766,5898,0.395381245817633,0.395381245817633,-105.0109855,39.7025566,-105.0121335,39.6991123
-6899,5898,5899,0.0981801741162947,0.0981801741162947,-105.0121335,39.6991123,-105.0126138,39.6983104
-6900,5899,5900,0.174689811260162,0.174689811260162,-105.0126138,39.6983104,-105.0127248,39.6967417
-6902,2304,156,0.331433636002878,0.331433636002878,-105.0127167,39.6959791,-105.0117244,39.6930979
-6903,156,1720,0.249409879986366,0.249409879986366,-105.0117244,39.6930979,-105.0117515,39.690855
-6904,1720,5901,0.152027484629828,0.152027484629828,-105.0117515,39.690855,-105.0117601,39.6894878
-6906,5902,5903,1.05455714042968,1.05455714042968,-105.0117344,39.688114,-105.011022,39.678646
-6907,491,5904,0.0146888160266615,0.0146888160266615,-104.9407607,39.7492347,-104.9405891,39.7492413
-6908,5904,5905,0.0975979556077691,0.0975979556077691,-104.9405891,39.7492413,-104.9394475,39.7492413
-6910,5906,5907,0.0945117172125904,0.0945117172125904,-104.9383649,39.7492571,-104.9372594,39.7492562
-6911,5907,5908,0.096024253167286,0.096024253167286,-104.9372594,39.7492562,-104.9361363,39.7492673
-6913,1999,3359,0.0933322730569792,0.0933322730569792,-104.9350364,39.749243,-104.9339447,39.7492406
-6914,3359,2753,0.0957031890234733,0.0957031890234733,-104.9339447,39.7492406,-104.9328253,39.7492476
-6915,2753,5909,0.0964098595755736,0.0964098595755736,-104.9328253,39.7492476,-104.9316976,39.7492496
-6916,5909,2279,0.103797892128295,0.103797892128295,-104.9316976,39.7492496,-104.9304837,39.7492674
-6917,2279,3601,0.0979307072208472,0.0979307072208472,-104.9304837,39.7492674,-104.9293385,39.7492475
-6918,3601,5910,0.101687049589159,0.101687049589159,-104.9293385,39.7492475,-104.9281491,39.749241
-6919,5910,2134,0.103076736979193,0.103076736979193,-104.9281491,39.749241,-104.9269439,39.7492673
-6920,2134,5911,0.0994872973933105,0.0994872973933105,-104.9269439,39.7492673,-104.9257802,39.7492674
-6921,5911,5912,0.098205073412404,0.098205073412404,-104.9257802,39.7492674,-104.9246315,39.749269
-6944,5930,5931,0.00713304879374381,0.00713304879374381,-104.979327,39.7304328,-104.9792436,39.7304339
-6922,5912,5913,1.00880972234204,1.00880972234204,-104.9246315,39.749269,-104.9128315,39.7492855
-6923,5914,3921,0.0830806742363044,0.0830806742363044,-104.9646486,39.7304917,-104.9636772,39.7304796
-6924,3921,1014,0.0989804018365723,0.0989804018365723,-104.9636772,39.7304796,-104.96252,39.7304983
-6925,1014,5915,0.0998222515540108,0.0998222515540108,-104.96252,39.7304983,-104.9613527,39.7304983
-6926,5915,5916,0.104139822117371,0.104139822117371,-104.9613527,39.7304983,-104.960135,39.730487
-6927,5916,5023,0.0793768943130485,0.0793768943130485,-104.960135,39.730487,-104.9592069,39.7304983
-6929,5917,5918,0.112165266092601,0.112165266092601,-104.987439,39.7304505,-104.9861275,39.730436
-6930,5918,5919,0.108065845165718,0.108065845165718,-104.9861275,39.730436,-104.9848641,39.7304571
-6931,5919,5920,0.0537421133423824,0.0537421133423824,-104.9848641,39.7304571,-104.9842358,39.7304466
-6932,5920,5921,0.0547683090118863,0.0547683090118863,-104.9842358,39.7304466,-104.9835955,39.730436
-6933,5921,5922,0.0617512871216813,0.0617512871216813,-104.9835955,39.730436,-104.9828734,39.7304382
-6934,5922,5923,0.0505486132029595,0.0505486132029595,-104.9828734,39.7304382,-104.9822823,39.7304399
-6935,5923,5924,0.0485674117985671,0.0485674117985671,-104.9822823,39.7304399,-104.9817146,39.7304273
-6936,5924,5925,0.00910751947845144,0.00910751947845144,-104.9817146,39.7304273,-104.9816081,39.7304277
-6937,5925,3160,0.040672974998317,0.040672974998317,-104.9816081,39.7304277,-104.9811325,39.7304243
-6938,3160,5926,0.0119123696733134,0.0119123696733134,-104.9811325,39.7304243,-104.9809932,39.730424
-6939,5926,5927,0.0422638247579918,0.0422638247579918,-104.9809932,39.730424,-104.9804991,39.7304325
-6940,5927,5928,0.00946046354749371,0.00946046354749371,-104.9804991,39.7304325,-104.9803886,39.7304366
-6941,5928,4978,0.0392608349230605,0.0392608349230605,-104.9803886,39.7304366,-104.9799295,39.7304346
-6942,4978,5929,0.00830374951839601,0.00830374951839601,-104.9799295,39.7304346,-104.9798324,39.7304351
-6943,5929,5930,0.04322033436118,0.04322033436118,-104.9798324,39.7304351,-104.979327,39.7304328
-12307,8642,8643,0.0298175315684779,0.0298175315684779,-105.0079921,39.7544142,-105.0079172,39.7541523
-6945,5931,5932,0.0454758802600548,0.0454758802600548,-104.9792436,39.7304339,-104.9787119,39.7304412
-6946,5932,5933,0.0473060152011751,0.0473060152011751,-104.9787119,39.7304412,-104.9781588,39.7304487
-6947,5933,5934,0.0496187677804403,0.0496187677804403,-104.9781588,39.7304487,-104.9775786,39.7304533
-6948,5934,5935,0.0504477908402203,0.0504477908402203,-104.9775786,39.7304533,-104.9769887,39.7304575
-6949,5935,5050,0.0515402266931002,0.0515402266931002,-104.9769887,39.7304575,-104.976386,39.7304575
-6950,5050,5687,0.0468197679026621,0.0468197679026621,-104.976386,39.7304575,-104.9758385,39.7304575
-6953,5453,982,0.0502364246424336,0.0502364246424336,-104.9746713,39.7304514,-104.9740839,39.7304453
-6954,982,5937,0.0968891441459385,0.0968891441459385,-104.9740839,39.7304453,-104.9729509,39.7304453
-6955,5937,5938,0.0503259455718068,0.0503259455718068,-104.9729509,39.7304453,-104.9723624,39.7304448
-6956,5938,5939,0.0502893520356679,0.0502893520356679,-104.9723624,39.7304448,-104.9717744,39.7304519
-6957,5939,3129,0.0485573864514234,0.0485573864514234,-104.9717744,39.7304519,-104.9712066,39.7304555
-6958,3129,5117,0.0498372694791184,0.0498372694791184,-104.9712066,39.7304555,-104.9706239,39.7304632
-6959,5117,5941,0.0493022558846739,0.0493022558846739,-104.9706239,39.7304632,-104.9700474,39.7304587
-6960,5941,4716,0.0507626244890517,0.0507626244890517,-104.9700474,39.7304587,-104.9694538,39.7304565
-6961,4716,5942,0.142284142826663,0.142284142826663,-104.9694538,39.7304565,-104.96779,39.7304653
-6963,5943,5944,0.01393899602166,0.01393899602166,-104.9407521,39.7310056,-104.9405891,39.731006
-6964,5944,5945,0.364458473389243,0.364458473389243,-104.9405891,39.731006,-104.9363272,39.7310185
-6965,5945,5946,0.0993153072226578,0.0993153072226578,-104.9363272,39.7310185,-104.9351663,39.7310442
-6966,5946,5947,0.101492282005104,0.101492282005104,-104.9351663,39.7310442,-104.9339798,39.731066
-6967,5947,5948,0.101164116161519,0.101164116161519,-104.9339798,39.731066,-104.9327968,39.7310647
-6968,5948,5949,0.102917574680079,0.102917574680079,-104.9327968,39.7310647,-104.9315933,39.7310618
-6969,5949,5950,0.099000654458151,0.099000654458151,-104.9315933,39.7310618,-104.9304356,39.7310602
-6970,5950,5951,0.102683540906436,0.102683540906436,-104.9304356,39.7310602,-104.9292349,39.7310503
-6972,5952,5145,0.0645729302199529,0.0645729302199529,-104.9280748,39.7310598,-104.9273197,39.7310625
-6973,5145,2119,0.0381578888853594,0.0381578888853594,-104.9273197,39.7310625,-104.9268735,39.7310598
-6975,5953,5954,0.100685153983508,0.100685153983508,-104.9257284,39.7310507,-104.924551,39.7310505
-6976,5954,5955,0.195476970380349,0.195476970380349,-104.924551,39.7310505,-104.9222652,39.7310656
-6978,5511,5956,0.144816938742182,0.144816938742182,-104.974688,39.7559741,-104.9735293,39.7569242
-6979,5956,2899,0.0164641943336492,0.0164641943336492,-104.9735293,39.7569242,-104.9733522,39.7569824
-6981,5957,5776,0.0786471324555583,0.0786471324555583,-104.9873834,39.7462062,-104.9880305,39.7457035
-6982,5776,5958,0.142074016754489,0.142074016754489,-104.9880305,39.7457035,-104.9891839,39.7447837
-6984,5959,5960,0.119153206354199,0.119153206354199,-104.9904219,39.7438323,-104.9914093,39.7430761
-6985,5960,5961,0.0270871445537288,0.0270871445537288,-104.9914093,39.7430761,-104.9916357,39.7429057
-6986,5961,5962,0.145839788109516,0.145839788109516,-104.9916357,39.7429057,-104.9928478,39.7419829
-6987,5962,5963,0.00712354730707594,0.00712354730707594,-104.9928478,39.7419829,-104.9929071,39.7419379
-6988,5963,5964,0.140131025523345,0.140131025523345,-104.9929071,39.7419379,-104.9940638,39.7410451
-6989,5964,5965,0.140225597174846,0.140225597174846,-104.9940638,39.7410451,-104.9952082,39.7401418
-6990,5965,4943,0.0161740048379517,0.0161740048379517,-104.9952082,39.7401418,-104.9952896,39.7400105
-6992,5354,5966,0.0365984296224293,0.0365984296224293,-104.9856252,39.7476126,-104.9852928,39.74782
-8275,6722,2311,0.00867549185460531,0.00867549185460531,-105.0112278,39.7314296,-105.0112958,39.7314875
-6993,5966,5967,0.107476511645453,0.107476511645453,-104.9852928,39.74782,-104.9844118,39.7485095
-6994,5967,5968,0.147256677185358,0.147256677185358,-104.9844118,39.7485095,-104.9831894,39.7494425
-6995,5968,5969,0.146721278462678,0.146721278462678,-104.9831894,39.7494425,-104.98198,39.7503787
-6996,5969,5361,0.147170892096024,0.147170892096024,-104.98198,39.7503787,-104.9807486,39.7513036
-6997,5361,2684,0.148391053722383,0.148391053722383,-104.9807486,39.7513036,-104.9795298,39.7522538
-6999,5970,807,0.0217813759552713,0.0217813759552713,-104.9783626,39.753192,-104.9781222,39.7532569
-7001,5971,4332,0.0931508534748433,0.0931508534748433,-104.978267,39.7840741,-104.9771769,39.7840807
-7002,4332,5038,0.0953468172233397,0.0953468172233397,-104.9771769,39.7840807,-104.9760611,39.7840873
-7004,5972,5857,0.176936009900748,0.176936009900748,-105.0263295,39.7165745,-105.0263037,39.7149834
-7005,5857,1300,0.178425403895618,0.178425403895618,-105.0263037,39.7149834,-105.0263381,39.713379
-7006,1300,5973,0.247668336727678,0.247668336727678,-105.0263381,39.713379,-105.0263219,39.7111517
-7008,5974,5975,0.19695744936537,0.19695744936537,-105.0263476,39.6984996,-105.0263805,39.6967285
-7010,1502,4378,0.103568243200344,0.103568243200344,-105.0263295,39.6949026,-105.0263037,39.6939714
-7012,5976,2341,0.175343347413509,0.175343347413509,-104.9257736,39.717827,-104.9257718,39.7194039
-7013,2341,5977,0.176971375987128,0.176971375987128,-104.9257718,39.7194039,-104.9257568,39.7209954
-7014,5977,4784,0.243234077821538,0.243234077821538,-104.9257568,39.7209954,-104.9260932,39.7231675
-7015,4784,5979,0.240492752461347,0.240492752461347,-104.9260932,39.7231675,-104.9260981,39.7253303
-7016,5979,5980,0.0330257004550899,0.0330257004550899,-104.9260981,39.7253303,-104.9261008,39.7256273
-7017,5980,5981,0.271622774119548,0.271622774119548,-104.9261008,39.7256273,-104.9260461,39.7280697
-7018,5981,5982,0.132843712894559,0.132843712894559,-104.9260461,39.7280697,-104.9260654,39.7292643
-7020,5983,5984,0.0865708728240205,0.0865708728240205,-104.9258169,39.7793462,-104.9257912,39.7801245
-7021,5984,5985,0.115162845747273,0.115162845747273,-104.9257912,39.7801245,-104.9258084,39.7811601
-7023,758,5986,0.228351368086018,0.228351368086018,-104.9258629,39.7765766,-104.9258093,39.7786298
-7026,5146,5157,0.0344312485594002,0.0344312485594002,-104.9257328,39.7300276,-104.9257489,39.730337
-7027,5157,5953,0.0793791794144798,0.0793791794144798,-104.9257489,39.730337,-104.9257284,39.7310507
-7028,5953,2240,0.201141072863101,0.201141072863101,-104.9257284,39.7310507,-104.925734,39.7328596
-7029,2240,4913,0.204101361959596,0.204101361959596,-104.925734,39.7328596,-104.9257471,39.7346951
-7031,5988,5989,0.202410682591791,0.202410682591791,-104.9257168,39.7364786,-104.9257287,39.7382989
-7032,5989,5990,0.204104998697393,0.204104998697393,-104.9257287,39.7382989,-104.9257974,39.7401337
-7033,5990,689,0.195952399265096,0.195952399265096,-104.9257974,39.7401337,-104.9257594,39.7418957
-7034,689,1980,0.165723809852799,0.165723809852799,-104.9257594,39.7418957,-104.9258091,39.7433856
-7035,1980,1965,0.0389234534803582,0.0389234534803582,-104.9258091,39.7433856,-104.925792,39.7437354
-7036,1965,5991,0.211595737081182,0.211595737081182,-104.925792,39.7437354,-104.9258205,39.7456382
-7037,5991,2477,0.19787541766453,0.19787541766453,-104.9258205,39.7456382,-104.9258057,39.7474177
-7039,5911,5992,0.199600309761125,0.199600309761125,-104.9257802,39.7492674,-104.9257974,39.7510624
-7040,5992,802,0.200311937766574,0.200311937766574,-104.9257974,39.7510624,-104.9257802,39.7528638
-7041,802,5993,0.204076160777324,0.204076160777324,-104.9257802,39.7528638,-104.9257827,39.7546991
-7042,5993,5994,0.207502868601311,0.207502868601311,-104.9257827,39.7546991,-104.925772,39.7565652
-7043,5994,5995,0.201507936335064,0.201507936335064,-104.925772,39.7565652,-104.9257668,39.7583774
-18161,10256,2170,0.118696748630409,0.118696748630409,-105.0141119,39.7874307,-105.0146867,39.7884025
-7044,5995,3065,0.198422916856477,0.198422916856477,-104.9257668,39.7583774,-104.9257357,39.7601617
-7045,3065,5996,0.187785068593932,0.187785068593932,-104.9257357,39.7601617,-104.9257688,39.7618503
-7048,5998,1151,0.103522476706234,0.103522476706234,-104.9257702,39.7628567,-104.9257702,39.7637877
-7049,1151,5999,0.201885859106491,0.201885859106491,-104.9257702,39.7637877,-104.9257746,39.7656033
-7050,5999,2774,0.203030941446461,0.203030941446461,-104.9257746,39.7656033,-104.9257496,39.7674291
-7051,2774,6000,0.200151361396455,0.200151361396455,-104.9257496,39.7674291,-104.9257444,39.7692291
-7053,4375,2856,0.142504312909228,0.142504312909228,-105.0014998,39.6989095,-105.0031649,39.6989425
-7054,2856,6001,0.0983652484533134,0.0983652484533134,-105.0031649,39.6989425,-105.0043064,39.6990482
-7055,6001,6002,0.0964239306891795,0.0964239306891795,-105.0043064,39.6990482,-105.0054308,39.6991076
-7056,6002,6003,0.098310599923513,0.098310599923513,-105.0054308,39.6991076,-105.0065799,39.6991077
-7057,6003,1761,0.137700629072643,0.137700629072643,-105.0065799,39.6991077,-105.0081893,39.6990933
-7058,1761,6004,0.100513600298964,0.100513600298964,-105.0081893,39.6990933,-105.0093641,39.6991016
-7059,6004,3822,0.0995871831820294,0.0995871831820294,-105.0093641,39.6991016,-105.0105281,39.6990962
-7060,3822,5898,0.137360760654976,0.137360760654976,-105.0105281,39.6990962,-105.0121335,39.6991123
-7061,5898,6005,0.132447355715672,0.132447355715672,-105.0121335,39.6991123,-105.0128712,39.7001595
-7063,1597,1654,0.133194225128182,0.133194225128182,-105.0140815,39.6999614,-105.015638,39.699987
-7064,1654,6006,0.125247640008909,0.125247640008909,-105.015638,39.699987,-105.0169911,39.700417
-7065,6006,4209,0.0896990215886268,0.0896990215886268,-105.0169911,39.700417,-105.0180383,39.7004566
-7067,6007,200,0.0969312782671765,0.0969312782671765,-105.0192141,39.7004566,-105.0203471,39.7004566
-7069,6008,6009,0.237519218216988,0.237519218216988,-104.930634,39.692987,-104.9317136,39.6910191
-7071,6010,700,0.202130694041649,0.202130694041649,-104.9453987,39.7401427,-104.9453488,39.7419601
-7072,700,6011,0.200920157017241,0.200920157017241,-104.9453488,39.7419601,-104.9453382,39.743767
-7074,1752,6012,0.41064210801689,0.41064210801689,-104.944277,39.787439,-104.9452877,39.7838286
-7076,6013,898,0.069285729612221,0.069285729612221,-104.945032,39.7638499,-104.9450302,39.764473
-7079,5168,6014,0.173942254032852,0.173942254032852,-104.9449622,39.716238,-104.9449634,39.7178023
-7080,6014,2356,0.178647695597581,0.178647695597581,-104.9449634,39.7178023,-104.9449537,39.7194089
-7081,2356,4157,0.173431342052579,0.173431342052579,-104.9449537,39.7194089,-104.9449591,39.7209686
-7082,4157,4744,0.174265758482508,0.174265758482508,-104.9449591,39.7209686,-104.9449996,39.7225355
-7083,4744,6015,0.17586665041424,0.17586665041424,-104.9449996,39.7225355,-104.9449591,39.7241168
-7084,6015,6017,0.166030537226764,0.166030537226764,-104.9449591,39.7241168,-104.9450503,39.7256083
-7085,6017,1206,0.168368552768231,0.168368552768231,-104.9450503,39.7256083,-104.9450941,39.7271221
-7086,1206,6018,0.0222310506019077,0.0222310506019077,-104.9450941,39.7271221,-104.9450985,39.727322
-7087,6018,3777,0.199517083270274,0.199517083270274,-104.9450985,39.727322,-104.9450973,39.7291163
-7088,3777,6019,0.15332994885881,0.15332994885881,-104.9450973,39.7291163,-104.9450856,39.7304952
-7089,6019,956,0.176955920540622,0.176955920540622,-104.9450856,39.7304952,-104.9450895,39.7320866
-7090,956,6020,0.174665514088028,0.174665514088028,-104.9450895,39.7320866,-104.9450945,39.7336574
-7091,6020,4894,0.161958937862416,0.161958937862416,-104.9450945,39.7336574,-104.945082,39.7351139
-7092,4894,6021,0.18390531780345,0.18390531780345,-104.945082,39.7351139,-104.9450808,39.7367678
-7093,6021,5492,0.174079428498661,0.174079428498661,-104.9450808,39.7367678,-104.9450674,39.7383333
-7094,5492,6022,0.20029370655809,0.20029370655809,-104.9450674,39.7383333,-104.9450447,39.7401345
-7096,3037,6023,0.213499262828813,0.213499262828813,-104.9449805,39.75904,-104.9449634,39.76096
-7098,3578,5645,0.141952777714747,0.141952777714747,-104.9452895,39.7544277,-104.9452967,39.7557043
-8369,876,4464,0.138360134725968,0.138360134725968,-104.968419,39.7645054,-104.9684223,39.7657497
-7100,4359,4350,0.0475473932483631,0.0475473932483631,-104.9453012,39.7565195,-104.9453036,39.7569471
-7101,4350,1533,0.0507609705805194,0.0507609705805194,-104.9453036,39.7569471,-104.9453062,39.7574036
-7102,1533,6024,0.087689125787215,0.087689125787215,-104.9453062,39.7574036,-104.9453106,39.7581922
-7103,6024,3036,0.0935380351023268,0.0935380351023268,-104.9453106,39.7581922,-104.9453153,39.7590334
-7105,2396,6026,0.14381066174273,0.14381066174273,-104.9452638,39.7738711,-104.9453067,39.775164
-7107,1270,4534,0.202622361744701,0.202622361744701,-105.0204072,39.7193738,-105.0227761,39.719354
-7108,4534,6027,0.199229442979025,0.199229442979025,-105.0227761,39.719354,-105.0251054,39.7193679
-7110,6028,6029,0.912875631293974,0.912875631293974,-104.9959579,39.7817094,-104.9855966,39.7797106
-7112,1075,2498,0.0816070075181441,0.0816070075181441,-105.0092438,39.7854664,-105.0101988,39.7854584
-7113,2498,6030,0.0415787253165096,0.0415787253165096,-105.0101988,39.7854584,-105.0106854,39.7854577
-7114,6030,6031,0.0433303737265817,0.0433303737265817,-105.0106854,39.7854577,-105.0111925,39.7854571
-7116,6032,6033,0.0508682336735258,0.0508682336735258,-105.0111965,39.7856112,-105.0117918,39.7856148
-7117,6033,1215,0.0487831269807967,0.0487831269807967,-105.0117918,39.7856148,-105.0123627,39.7856181
-7118,1215,6034,0.0505678656124617,0.0505678656124617,-105.0123627,39.7856181,-105.0129545,39.7856166
-7119,6034,4787,0.0490298276079548,0.0490298276079548,-105.0129545,39.7856166,-105.0135283,39.7856151
-7120,4787,6035,0.0502099740409632,0.0502099740409632,-105.0135283,39.7856151,-105.0141159,39.7856183
-7121,6035,2168,0.0503125854793333,0.0503125854793333,-105.0141159,39.7856183,-105.0147047,39.7856216
-7122,2168,6036,0.0482434584483166,0.0482434584483166,-105.0147047,39.7856216,-105.0152693,39.7856221
-17215,8403,8420,0.200752773596098,0.200752773596098,-104.9775319,39.7038582,-104.9774882,39.7056633
-7123,6036,6037,0.0486536038515005,0.0486536038515005,-105.0152693,39.7856221,-105.0158387,39.7856226
-7125,6038,6039,0.0499795151912972,0.0499795151912972,-105.0164173,39.7856269,-105.0170022,39.7856234
-7126,6039,6040,0.0491412278477837,0.0491412278477837,-105.0170022,39.7856234,-105.0175773,39.7856256
-7127,6040,6041,0.0497771068440158,0.0497771068440158,-105.0175773,39.7856256,-105.0181598,39.7856198
-7128,6041,6042,0.0494653664650395,0.0494653664650395,-105.0181598,39.7856198,-105.0187387,39.7856192
-7129,6042,4660,0.0491491990718702,0.0491491990718702,-105.0187387,39.7856192,-105.0193139,39.7856187
-7130,4660,6043,0.0497609288638681,0.0497609288638681,-105.0193139,39.7856187,-105.0198962,39.7856251
-7131,6043,1290,0.0489747324983769,0.0489747324983769,-105.0198962,39.7856251,-105.0204693,39.7856314
-7133,6044,4562,0.0495973986652376,0.0495973986652376,-105.0210575,39.7856258,-105.0216379,39.7856202
-7134,4562,6045,0.0489640905184848,0.0489640905184848,-105.0216379,39.7856202,-105.0222109,39.785625
-7135,6045,6046,0.0491691479666822,0.0491691479666822,-105.0222109,39.785625,-105.0227863,39.7856298
-7136,6046,6047,0.0507578186257211,0.0507578186257211,-105.0227863,39.7856298,-105.0233803,39.7856255
-7137,6047,2730,0.0500913644840885,0.0500913644840885,-105.0233803,39.7856255,-105.0239665,39.7856212
-7138,2730,6048,0.0486937991070737,0.0486937991070737,-105.0239665,39.7856212,-105.0245363,39.7856143
-7139,6048,6049,0.0563508416708434,0.0563508416708434,-105.0245363,39.7856143,-105.0251957,39.7856063
-7140,6049,6050,0.0543668616299433,0.0543668616299433,-105.0251957,39.7856063,-105.0258319,39.7856132
-7141,6050,3755,0.049786406684993,0.049786406684993,-105.0258319,39.7856132,-105.0264145,39.7856195
-7142,3755,6051,0.0495857892809515,0.0495857892809515,-105.0264145,39.7856195,-105.0269948,39.7856221
-7143,6051,6052,0.0496881410470813,0.0496881410470813,-105.0269948,39.7856221,-105.0275763,39.7856198
-7144,6052,6053,0.0491149994031363,0.0491149994031363,-105.0275763,39.7856198,-105.0281511,39.7856201
-18545,5563,7539,0.0787059485791879,0.0787059485791879,-105.0440188,39.7652831,-105.0449396,39.7652893
-7145,6053,6054,0.0498540025598143,0.0498540025598143,-105.0281511,39.7856201,-105.0287345,39.7856259
-7146,6054,6055,0.0489875409651698,0.0489875409651698,-105.0287345,39.7856259,-105.0293078,39.7856235
-7147,6055,4007,0.0499802866726516,0.0499802866726516,-105.0293078,39.7856235,-105.0298927,39.7856278
-7148,4007,6056,0.0488162842829032,0.0488162842829032,-105.0298927,39.7856278,-105.030464,39.7856261
-7149,6056,6057,0.0489359547659716,0.0489359547659716,-105.030464,39.7856261,-105.0310367,39.7856243
-7150,6057,6058,0.0509862761511403,0.0509862761511403,-105.0310367,39.7856243,-105.0316334,39.7856243
-7151,6058,1391,0.0507897478531174,0.0507897478531174,-105.0316334,39.7856243,-105.0322278,39.7856243
-7152,1391,6059,0.0484575520219378,0.0484575520219378,-105.0322278,39.7856243,-105.0327949,39.7856263
-7154,6060,6061,0.051268887373703,0.051268887373703,-105.0333562,39.7856282,-105.0339562,39.7856259
-7155,6061,3440,0.0523540538479921,0.0523540538479921,-105.0339562,39.7856259,-105.0345689,39.7856236
-7156,3440,6062,0.0526542821957606,0.0526542821957606,-105.0345689,39.7856236,-105.0351851,39.7856197
-7157,6062,5722,0.0500652354639954,0.0500652354639954,-105.0351851,39.7856197,-105.035771,39.7856159
-7158,5722,6063,0.0491749564449066,0.0491749564449066,-105.035771,39.7856159,-105.0363465,39.7856148
-7159,6063,6064,0.0490553316653512,0.0490553316653512,-105.0363465,39.7856148,-105.0369206,39.7856137
-7160,6064,6065,0.0504053225202572,0.0504053225202572,-105.0369206,39.7856137,-105.0375105,39.7856129
-7161,6065,6066,0.0491577785316978,0.0491577785316978,-105.0375105,39.7856129,-105.0380858,39.7856122
-7162,6066,6067,0.0500917004504544,0.0500917004504544,-105.0380858,39.7856122,-105.038672,39.7856168
-7163,6067,6068,0.0487330457346556,0.0487330457346556,-105.038672,39.7856168,-105.0392423,39.7856213
-7164,6068,6069,0.0500468552276867,0.0500468552276867,-105.0392423,39.7856213,-105.039828,39.7856193
-7165,6069,1089,0.0473039342434908,0.0473039342434908,-105.039828,39.7856193,-105.0403816,39.7856175
-7166,1089,6070,0.0519349767204956,0.0519349767204956,-105.0403816,39.7856175,-105.0409894,39.7856189
-7167,6070,6071,0.0483547253107021,0.0483547253107021,-105.0409894,39.7856189,-105.0415553,39.7856202
-7169,6072,3860,0.0495593243927177,0.0495593243927177,-105.0421669,39.7856198,-105.0427469,39.7856195
-7170,3860,6073,0.0493012970703545,0.0493012970703545,-105.0427469,39.7856195,-105.0433238,39.7856121
-7171,6073,5585,0.0529959751032204,0.0529959751032204,-105.0433238,39.7856121,-105.043944,39.7856159
-7173,1003,5222,0.108094382628624,0.108094382628624,-104.987571,39.7855779,-104.988836,39.785586
-7175,6074,3213,0.169273308004073,0.169273308004073,-104.962329,39.712563,-104.9628505,39.7110945
-7176,3213,6075,0.200540081035548,0.200540081035548,-104.9628505,39.7110945,-104.9628492,39.709291
-7177,6075,1924,0.199718283006537,0.199718283006537,-104.9628492,39.709291,-104.962875,39.707495
-7178,1924,6076,0.202212418704144,0.202212418704144,-104.962875,39.707495,-104.9628366,39.7056767
-7179,6076,3268,0.201184980777767,0.201184980777767,-104.9628366,39.7056767,-104.9628366,39.7038674
-7180,3268,6077,0.201398824177077,0.201398824177077,-104.9628366,39.7038674,-104.9628485,39.7020562
-7181,6077,81,0.202519482529809,0.202519482529809,-104.9628485,39.7020562,-104.9628455,39.7002349
-7182,81,3517,0.205035908609294,0.205035908609294,-104.9628455,39.7002349,-104.9628742,39.6983911
-7183,3517,4259,0.201561198640626,0.201561198640626,-104.9628742,39.6983911,-104.9628968,39.6965785
-7184,4259,6078,0.201877222241407,0.201877222241407,-104.9628968,39.6965785,-104.9629093,39.694763
-7185,6078,6079,0.198020897047098,0.198020897047098,-104.9629093,39.694763,-104.9629257,39.6929822
-7186,6079,5828,0.204359521871182,0.204359521871182,-104.9629257,39.6929822,-104.9629082,39.6911444
-7187,5828,6080,0.203452288011347,0.203452288011347,-104.9629082,39.6911444,-104.9628739,39.6893149
-7188,6080,6081,0.199577893436046,0.199577893436046,-104.9628739,39.6893149,-104.962857,39.6875201
-7189,6082,4198,0.0554105901874734,0.0554105901874734,-105.007037,39.720887,-105.007437,39.721279
-8462,1578,6834,0.296770354889592,0.296770354889592,-105.0401129,39.6876594,-105.0401263,39.6849905
-7190,4198,6083,0.479532197769768,0.479532197769768,-105.007437,39.721279,-105.0092748,39.7253533
-7193,6085,3417,0.199987779646285,0.199987779646285,-105.0322636,39.7629835,-105.0346033,39.7629904
-7195,5561,6086,0.0785728419075768,0.0785728419075768,-105.0440091,39.7630203,-105.0449283,39.7630131
-7196,6086,6087,0.711200705359908,0.711200705359908,-105.0449283,39.7630131,-105.0532488,39.7629903
-7197,6088,6089,0.0569381576865727,0.0569381576865727,-105.0111515,39.7608094,-105.0118176,39.7608059
-7199,1755,4797,0.0569796757564415,0.0569796757564415,-105.0124792,39.7608073,-105.0131458,39.7608063
-7200,4797,6090,0.0568688820659326,0.0568688820659326,-105.0131458,39.7608063,-105.0138111,39.7608043
-7201,6090,2163,0.0576467707798926,0.0576467707798926,-105.0138111,39.7608043,-105.0144855,39.7608022
-7202,2163,6091,0.115287318699314,0.115287318699314,-105.0144855,39.7608022,-105.0158342,39.7607944
-7204,4029,6092,0.199820514844545,0.199820514844545,-105.0299179,39.761227,-105.0322556,39.7612283
-7205,6092,3413,0.201407533266255,0.201407533266255,-105.0322556,39.7612283,-105.0346118,39.761242
-7207,6093,6094,0.0604203300865654,0.0604203300865654,-105.0268612,39.760858,-105.027568,39.7608513
-7208,6094,6095,0.0494745769978518,0.0494745769978518,-105.027568,39.7608513,-105.0281468,39.7608514
-7209,6095,6096,0.0926701881064251,0.0926701881064251,-105.0281468,39.7608514,-105.0292309,39.760844
-7210,6096,4028,0.05825540400242,0.05825540400242,-105.0292309,39.760844,-105.0299124,39.7608394
-7212,5558,6097,0.589453817263917,0.589453817263917,-105.0440044,39.7612115,-105.0509004,39.761199
-7213,111,6098,0.0840698350347185,0.0840698350347185,-104.929111,39.709605,-104.928134,39.709687
-7214,6098,5387,0.102649580636379,0.102649580636379,-104.928134,39.709687,-104.926934,39.709687
-7216,6099,4834,0.0618019179836103,0.0618019179836103,-104.9444906,39.7093483,-104.9437682,39.7093402
-7217,4834,6100,0.103506880889302,0.103506880889302,-104.9437682,39.7093402,-104.9425586,39.7093158
-7218,6100,6101,0.102436270515026,0.102436270515026,-104.9425586,39.7093158,-104.9413615,39.709292
-7219,6101,6102,0.0462582791506537,0.0462582791506537,-104.9413615,39.709292,-104.9408208,39.7092854
-7221,5388,6103,0.0951666989097628,0.0951666989097628,-104.926934,39.709287,-104.9258215,39.7092917
-7222,6103,6104,0.103533109860882,0.103533109860882,-104.9258215,39.7092917,-104.9246113,39.7092785
-17793,6179,8402,0.062258154453335,0.062258154453335,-104.9873985,39.7569664,-104.9873999,39.7564065
-7223,6104,6105,1.01266363478673,1.01266363478673,-104.9246113,39.7092785,-104.9127732,39.7093215
-7226,6107,6108,0.0985711721031886,0.0985711721031886,-104.9851845,39.7093159,-104.9840322,39.7093206
-7227,6108,6109,0.106459269312792,0.106459269312792,-104.9840322,39.7093206,-104.9827877,39.709314
-7228,6109,6110,0.106833918076069,0.106833918076069,-104.9827877,39.709314,-104.9815389,39.7093013
-7229,6110,3622,0.0989181087898918,0.0989181087898918,-104.9815389,39.7093013,-104.980383,39.7092759
-7230,3622,6111,0.098886772683552,0.098886772683552,-104.980383,39.7092759,-104.979227,39.7092785
-7231,6111,6112,0.0498651872917774,0.0498651872917774,-104.979227,39.7092785,-104.9786441,39.7092737
-7232,6112,6113,0.0465544361472323,0.0465544361472323,-104.9786441,39.7092737,-104.9780999,39.7092693
-7233,6113,6114,0.048644459525012,0.048644459525012,-104.9780999,39.7092693,-104.9775313,39.7092628
-7234,6114,1769,0.0504837415599517,0.0504837415599517,-104.9775313,39.7092628,-104.9769412,39.7092561
-7235,1769,4488,0.0559949291466801,0.0559949291466801,-104.9769412,39.7092561,-104.9762867,39.7092645
-7236,4488,6115,0.0469382916231929,0.0469382916231929,-104.9762867,39.7092645,-104.9757389,39.7092889
-7237,6115,4839,0.0486148679353184,0.0486148679353184,-104.9757389,39.7092889,-104.9751709,39.7092743
-7239,1519,5280,0.0508144170388461,0.0508144170388461,-104.9745633,39.7092771,-104.9739693,39.7092817
-7240,5280,6116,0.0496680994860777,0.0496680994860777,-104.9739693,39.7092817,-104.9733887,39.7092862
-7241,6116,1086,0.0854394240121282,0.0854394240121282,-104.9733887,39.7092862,-104.9723899,39.7092881
-7244,6118,5426,0.102968153598516,0.102968153598516,-104.9710442,39.7092903,-104.9698407,39.7093079
-7245,5426,6119,0.101169119900675,0.101169119900675,-104.9698407,39.7093079,-104.9686581,39.7092969
-7246,6119,2048,0.10059076820208,0.10059076820208,-104.9686581,39.7092969,-104.9674823,39.7092837
-7247,2048,6120,0.0997250287478783,0.0997250287478783,-104.9674823,39.7092837,-104.9663168,39.7093042
-7248,6120,6121,0.100591265363907,0.100591265363907,-104.9663168,39.7093042,-104.9651409,39.7093108
-7249,6121,6122,0.0474195280765072,0.0474195280765072,-104.9651409,39.7093108,-104.9645867,39.7093011
-7250,6122,3477,0.0495243305794908,0.0495243305794908,-104.9645867,39.7093011,-104.9640079,39.709291
-7251,3477,6123,0.0472960657562571,0.0472960657562571,-104.9640079,39.709291,-104.963455,39.709291
-7252,6123,6075,0.0518212274102399,0.0518212274102399,-104.963455,39.709291,-104.9628492,39.709291
-7253,6075,6124,0.0477720158174774,0.0477720158174774,-104.9628492,39.709291,-104.9622908,39.7092845
-7254,6124,3692,0.0491494225474026,0.0491494225474026,-104.9622908,39.7092845,-104.9617163,39.7092778
-7255,3692,6125,0.0492733746042409,0.0492733746042409,-104.9617163,39.7092778,-104.9611403,39.709281
-7256,6125,4567,0.0513179295413005,0.0513179295413005,-104.9611403,39.709281,-104.9605404,39.7092844
-7257,4567,6126,0.104996585237884,0.104996585237884,-104.9605404,39.7092844,-104.959313,39.709291
-7259,6127,6128,0.202552708883543,0.202552708883543,-105.0286529,39.7293168,-105.0286516,39.7311384
-7260,6128,6129,0.200575382409089,0.200575382409089,-105.0286516,39.7311384,-105.0286784,39.7329421
-7261,6129,6130,0.200851528697639,0.200851528697639,-105.0286784,39.7329421,-105.0286757,39.7347484
-7263,6131,4042,0.178407205955933,0.178407205955933,-105.0287757,39.7165547,-105.0287585,39.7181591
-7264,4042,6132,0.176658257473219,0.176658257473219,-105.0287585,39.7181591,-105.0287845,39.7197477
-7265,6132,6133,0.173893747367395,0.173893747367395,-105.0287845,39.7197477,-105.0288029,39.7213115
-7266,6133,1832,0.00321363581065808,0.00321363581065808,-105.0288029,39.7213115,-105.0288032,39.7213404
-7267,1832,6134,0.0979518830790181,0.0979518830790181,-105.0288032,39.7213404,-105.0288059,39.7222213
-7268,6134,2577,0.0768544895315019,0.0768544895315019,-105.0288059,39.7222213,-105.0288186,39.7229124
-7270,2974,713,0.0553033256449361,0.0553033256449361,-105.0281658,39.7584695,-105.0281562,39.7589668
-7271,713,1884,0.049816225531446,0.049816225531446,-105.0281562,39.7589668,-105.0281527,39.7594148
-7272,1884,269,0.0489259588819734,0.0489259588819734,-105.0281527,39.7594148,-105.0281511,39.7598548
-7273,269,6135,0.049929244786193,0.049929244786193,-105.0281511,39.7598548,-105.0281572,39.7603038
-7274,6135,6095,0.0608968307992014,0.0608968307992014,-105.0281572,39.7603038,-105.0281468,39.7608514
-7276,1819,6136,0.206807888451467,0.206807888451467,-105.0286551,39.7269539,-105.0288404,39.7288083
-7278,6137,6138,0.137211297869344,0.137211297869344,-105.0287666,39.7560413,-105.0287838,39.7572752
-7280,6139,4576,0.0888580713995718,0.0888580713995718,-105.0283324,39.7407242,-105.0283618,39.741523
-7281,4576,6140,0.134023429450374,0.134023429450374,-105.0283618,39.741523,-105.0283644,39.7427283
-7282,6140,5292,0.135037120828343,0.135037120828343,-105.0283644,39.7427283,-105.028373,39.7439427
-7283,5292,6141,0.134292125855752,0.134292125855752,-105.028373,39.7439427,-105.0283644,39.7451504
-7285,11,6142,0.134290112908847,0.134290112908847,-105.0283851,39.746369,-105.0283851,39.7475767
-7286,6142,6143,0.134379347336523,0.134379347336523,-105.0283851,39.7475767,-105.0283819,39.7487852
-7287,6143,6144,0.135319045428869,0.135319045428869,-105.0283819,39.7487852,-105.0283496,39.7500019
-7288,6144,6145,0.133823509557072,0.133823509557072,-105.0283496,39.7500019,-105.0283535,39.7512054
-7289,6145,6146,0.133595456488811,0.133595456488811,-105.0283535,39.7512054,-105.0283964,39.7524064
-7290,6146,6147,0.132813208199385,0.132813208199385,-105.0283964,39.7524064,-105.0283879,39.7536008
-7291,6147,6148,0.135903166352965,0.135903166352965,-105.0283879,39.7536008,-105.0283827,39.754823
-7293,6149,5532,0.117263436099258,0.117263436099258,-105.0287889,39.7729931,-105.028838,39.774047
-7294,5532,6150,0.292646155170772,0.292646155170772,-105.028838,39.774047,-105.028752,39.776678
-7296,4069,6054,0.143532163506992,0.143532163506992,-105.0287428,39.7843351,-105.0287345,39.7856259
-7297,6054,5794,0.200517814130868,0.200517814130868,-105.0287345,39.7856259,-105.0287341,39.7874292
-7299,6151,6152,0.134234537479531,0.134234537479531,-105.0283314,39.7766715,-105.0283323,39.7778787
-7300,6152,2491,0.134965193585355,0.134965193585355,-105.0283323,39.7778787,-105.0283152,39.7790924
-7301,2491,2836,0.132191750515313,0.132191750515313,-105.0283152,39.7790924,-105.028326,39.7802812
-7303,2760,6153,0.17786816992516,0.17786816992516,-104.9328153,39.7162508,-104.9328092,39.7146512
-7304,6153,3104,0.174733256162163,0.174733256162163,-104.9328092,39.7146512,-104.9328006,39.7130798
-7305,3104,6156,0.194828104098244,0.194828104098244,-104.9328006,39.7130798,-104.932787,39.7113277
-7307,62,3549,0.192897189560382,0.192897189560382,-104.932829,39.700178,-104.932762,39.698444
-7309,191,5855,0.144500472019434,0.144500472019434,-105.02039,39.7157163,-105.019178,39.714811
-7313,1335,6158,0.164940728280041,0.164940728280041,-105.012511,39.712992,-105.01431,39.712458
-7315,3709,719,0.105637457999026,0.105637457999026,-105.002935,39.7760646,-105.004171,39.7760778
-7317,3184,6159,0.175088076753778,0.175088076753778,-104.9555361,39.7016193,-104.9571463,39.7006474
-7318,6159,91,0.0479220492178455,0.0479220492178455,-104.9571463,39.7006474,-104.9570295,39.7002259
-7319,91,3527,0.203258724621779,0.203258724621779,-104.9570295,39.7002259,-104.956949,39.698399
-7320,3527,6160,0.201096029386997,0.201096029386997,-104.956949,39.698399,-104.9569485,39.6965905
-7321,6160,6161,0.201913621123293,0.201913621123293,-104.9569485,39.6965905,-104.9569665,39.6947747
-7323,6162,5834,0.203525395170747,0.203525395170747,-104.9569515,39.6929673,-104.9569687,39.691137
-7324,5834,6163,0.200952914390398,0.200952914390398,-104.9569687,39.691137,-104.9569776,39.6893298
-7326,3276,3651,0.182839298131176,0.182839298131176,-104.9569423,39.703847,-104.9569509,39.7022027
-7329,6166,4285,0.103763551261197,0.103763551261197,-104.9697218,39.7719933,-104.9705937,39.7726427
-7331,1617,6167,0.103830241851319,0.103830241851319,-104.9723691,39.774003,-104.9732245,39.7746661
-7333,6168,2159,0.117895446926253,0.117895446926253,-105.0158387,39.7571855,-105.0144598,39.7572068
-7334,2159,4795,0.11289998607803,0.11289998607803,-105.0144598,39.7572068,-105.0131391,39.7571989
-7335,4795,1226,0.113625921506999,0.113625921506999,-105.0131391,39.7571989,-105.01181,39.7571845
-7337,4401,4400,0.117696624021516,0.117696624021516,-104.9626217,39.7238487,-104.961317,39.723512
-7341,2320,4278,0.147648925220672,0.147648925220672,-104.9733543,39.7679348,-104.9745038,39.7669436
-7342,4278,6174,0.145039413918761,0.145039413918761,-104.9745038,39.7669436,-104.9757035,39.7660211
-7343,6174,633,0.147839808469135,0.147839808469135,-104.9757035,39.7660211,-104.9769309,39.7650843
-7344,633,5324,0.144274087604939,0.144274087604939,-104.9769309,39.7650843,-104.9781151,39.7641597
-7345,5324,2036,0.144878759704946,0.144878759704946,-104.9781151,39.7641597,-104.9793013,39.763229
-7346,2036,6175,0.146765627629388,0.146765627629388,-104.9793013,39.763229,-104.9805241,39.7623024
-7347,6175,5506,0.146988764364424,0.146988764364424,-104.9805241,39.7623024,-104.9817097,39.7613449
-7349,4458,6176,0.146285529633972,0.146285529633972,-104.9829353,39.7604242,-104.9841486,39.7594964
-7350,6176,6177,0.143815084290611,0.143815084290611,-104.9841486,39.7594964,-104.9853166,39.7585655
-7351,6177,6178,0.149072223288683,0.149072223288683,-104.9853166,39.7585655,-104.9865554,39.7576219
-7352,6178,6179,0.102502676747671,0.102502676747671,-104.9865554,39.7576219,-104.9873985,39.7569664
-7353,6179,6180,0.0433701075577025,0.0433701075577025,-104.9873985,39.7569664,-104.9877579,39.7566911
-7354,6180,6181,0.146972104646326,0.146972104646326,-104.9877579,39.7566911,-104.9889487,39.7557377
-7355,6181,6182,0.147344314502621,0.147344314502621,-104.9889487,39.7557377,-104.990176,39.7548073
-7356,6182,6183,0.145754933885852,0.145754933885852,-104.990176,39.7548073,-104.9913748,39.7538752
-7357,6183,6184,0.147948446924155,0.147948446924155,-104.9913748,39.7538752,-104.9925969,39.7529331
-7358,6184,6185,0.145005273136899,0.145005273136899,-104.9925969,39.7529331,-104.993798,39.7520123
-7359,6185,6186,0.141478743986661,0.141478743986661,-104.993798,39.7520123,-104.9949606,39.7511068
-7360,6186,5784,0.0051191432185562,0.0051191432185562,-104.9949606,39.7511068,-104.9949995,39.7510718
-7361,5784,6187,0.145606807182671,0.145606807182671,-104.9949995,39.7510718,-104.9961984,39.7501417
-7362,6187,6188,0.145777030768037,0.145777030768037,-104.9961984,39.7501417,-104.9973988,39.7492106
-7363,6188,6189,0.147177496711371,0.147177496711371,-104.9973988,39.7492106,-104.9986323,39.7482873
-7365,999,4221,0.0806091686632927,0.0806091686632927,-104.9876054,39.7809872,-104.9868954,39.7805099
-7366,4221,6190,0.102381971527348,0.102381971527348,-104.9868954,39.7805099,-104.9857782,39.7801773
-7367,6190,6193,0.0984965085324321,0.0984965085324321,-104.9857782,39.7801773,-104.9846257,39.7801641
-7368,6193,969,0.0952400858484175,0.0952400858484175,-104.9846257,39.7801641,-104.9835112,39.7801693
-7369,969,6194,0.0506536388127553,0.0506536388127553,-104.9835112,39.7801693,-104.982919,39.7801891
-7370,6194,5287,0.0506057613654141,0.0506057613654141,-104.982919,39.7801891,-104.9823268,39.7801891
-7371,5287,3152,0.0954510374534177,0.0954510374534177,-104.9823268,39.7801891,-104.981211,39.7801495
-7372,3152,4968,0.0960843478924756,0.0960843478924756,-104.981211,39.7801495,-104.9800866,39.7801495
-7373,4968,6195,0.0415654887010154,0.0415654887010154,-104.9800866,39.7801495,-104.9796002,39.7801517
-15921,9749,9750,0.0318908811678005,0.0318908811678005,-105.0271669,39.7276925,-105.0269255,39.7274739
-7401,6213,6214,0.0495719593537107,0.0495719593537107,-105.0372874,39.7257681,-105.037867,39.7257736
-7374,335,340,0.288826145863276,0.288826145863276,-104.9400719,39.7824771,-104.9379355,39.7804643
-7378,519,6197,0.0784497798176465,0.0784497798176465,-104.9416292,39.7807961,-104.9410596,39.7813494
-7379,6197,6198,0.0395399248279629,0.0395399248279629,-104.9410596,39.7813494,-104.9406408,39.7815006
-7380,6198,6199,0.019955626672929,0.019955626672929,-104.9406408,39.7815006,-104.9404705,39.7816234
-7382,6200,6201,0.0919482301684137,0.0919482301684137,-104.9634695,39.7803971,-104.9623939,39.7803745
-7383,6201,6202,0.111020276961071,0.111020276961071,-104.9623939,39.7803745,-104.961346,39.7809647
-7385,4485,6203,0.0919528384362936,0.0919528384362936,-105.0056478,39.7253802,-105.0067229,39.7253691
-7386,6203,4199,0.0670783480641165,0.0670783480641165,-105.0067229,39.7253691,-105.0075072,39.7253629
-7387,4199,6204,0.129739883939344,0.129739883939344,-105.0075072,39.7253629,-105.0090242,39.7253711
-7388,6204,6083,0.021522983414344,0.021522983414344,-105.0090242,39.7253711,-105.0092748,39.7253533
-7390,1820,6205,0.059780784078693,0.059780784078693,-105.0299828,39.7262896,-105.0306528,39.7261363
-7391,6205,6206,0.0520794903588436,0.0520794903588436,-105.0306528,39.7261363,-105.0312569,39.7260772
-7392,6206,6207,0.0535277276856965,0.0535277276856965,-105.0312569,39.7260772,-105.0318828,39.7260783
-7393,6207,6208,0.052616435606338,0.052616435606338,-105.0318828,39.7260783,-105.0324968,39.7261084
-7395,6209,6210,0.054197774205049,0.054197774205049,-105.0331036,39.7261385,-105.0337279,39.7260547
-7396,6210,600,0.122572832169608,0.122572832169608,-105.0337279,39.7260547,-105.0351121,39.7257688
-7397,600,6211,0.0472521628905724,0.0472521628905724,-105.0351121,39.7257688,-105.0356646,39.7257653
-7398,6211,5708,0.0430357389006543,0.0430357389006543,-105.0356646,39.7257653,-105.0361678,39.7257622
-7399,5708,6212,0.0495085394583916,0.0495085394583916,-105.0361678,39.7257622,-105.0367467,39.7257609
-7400,6212,6213,0.0462483397604104,0.0462483397604104,-105.0367467,39.7257609,-105.0372874,39.7257681
-7402,6214,6215,0.0428153220943109,0.0428153220943109,-105.037867,39.7257736,-105.0383676,39.7257784
-7403,6215,6216,0.0471000262746752,0.0471000262746752,-105.0383676,39.7257784,-105.0389183,39.7257835
-7404,6216,6217,0.0473822229177533,0.0473822229177533,-105.0389183,39.7257835,-105.0394723,39.7257886
-7405,6217,1100,0.091970261814681,0.091970261814681,-105.0394723,39.7257886,-105.0405477,39.7257916
-7406,1100,6218,0.0449415553049736,0.0449415553049736,-105.0405477,39.7257916,-105.0410732,39.7257908
-7407,6218,6219,0.0480654852744355,0.0480654852744355,-105.0410732,39.7257908,-105.0416352,39.7257952
-7408,6219,6221,0.0454218674668918,0.0454218674668918,-105.0416352,39.7257952,-105.0421663,39.7257919
-7409,6221,3858,0.0463369187822574,0.0463369187822574,-105.0421663,39.7257919,-105.0427081,39.7257886
-7410,3858,6222,0.0463493111972249,0.0463493111972249,-105.0427081,39.7257886,-105.04325,39.7257949
-7411,6222,5594,0.0512843332286284,0.0512843332286284,-105.04325,39.7257949,-105.0438496,39.7258018
-7412,5594,6223,0.0568069326737853,0.0568069326737853,-105.0438496,39.7258018,-105.0445138,39.725796
-7413,6223,6224,0.0525700432289869,0.0525700432289869,-105.0445138,39.725796,-105.0451285,39.7257952
-7414,6224,6225,0.0976339163821139,0.0976339163821139,-105.0451285,39.7257952,-105.0462701,39.7258018
-7439,6242,6243,0.0662881511283164,0.0662881511283164,-104.9882366,39.7256418,-104.9874615,39.7256397
-7415,6225,6226,0.598121759063317,0.598121759063317,-105.0462701,39.7258018,-105.0531438,39.7267947
-7416,3855,6227,0.0533569775705536,0.0533569775705536,-105.0427146,39.72552,-105.0433385,39.72552
-7417,6227,5550,0.054545728952838,0.054545728952838,-105.0433385,39.72552,-105.0439763,39.72552
-7419,6228,6229,0.0491582246006862,0.0491582246006862,-105.0445535,39.7255217,-105.0451283,39.7255234
-7420,6229,6230,0.632851875022697,0.632851875022697,-105.0451283,39.7255234,-105.0525271,39.7254255
-7421,4649,6231,0.0998318489902405,0.0998318489902405,-105.0186468,39.7257296,-105.0174795,39.7257362
-7423,3956,6232,0.132968901609209,0.132968901609209,-105.0001441,39.7257079,-104.9985893,39.7257061
-7424,6232,6233,0.0436348818689085,0.0436348818689085,-104.9985893,39.7257061,-104.9980791,39.7257025
-7425,6233,6234,0.0454822742996404,0.0454822742996404,-104.9980791,39.7257025,-104.9975473,39.7256987
-7426,6234,6235,0.049945575036802,0.049945575036802,-104.9975473,39.7256987,-104.9969633,39.7256958
-7427,6235,6236,0.0503304157761669,0.0503304157761669,-104.9969633,39.7256958,-104.9963748,39.7256929
-7428,6236,6237,0.0508263629674458,0.0508263629674458,-104.9963748,39.7256929,-104.9957805,39.7256901
-7429,6237,4952,0.0505868421691217,0.0505868421691217,-104.9957805,39.7256901,-104.995189,39.7256874
-7430,4952,4681,0.10191805721873,0.10191805721873,-104.995189,39.7256874,-104.9939973,39.7256815
-7431,4681,6238,0.099594470461032,0.099594470461032,-104.9939973,39.7256815,-104.9928328,39.7256728
-7432,6238,6239,0.057251122773958,0.057251122773958,-104.9928328,39.7256728,-104.9921634,39.7256675
-7433,6239,6240,0.108863184827896,0.108863184827896,-104.9921634,39.7256675,-104.9908905,39.7256604
-7434,6240,5092,0.0381385955203522,0.0381385955203522,-104.9908905,39.7256604,-104.9904446,39.7256551
-7435,5092,5227,0.108194428858344,0.108194428858344,-104.9904446,39.7256551,-104.9891795,39.7256506
-7437,5219,6241,0.0418231546106276,0.0418231546106276,-104.9888684,39.7256475,-104.9883794,39.7256429
-7438,6241,6242,0.0122130870650471,0.0122130870650471,-104.9883794,39.7256429,-104.9882366,39.7256418
-7442,1601,1657,0.147607723017958,0.147607723017958,-105.013927,39.6982179,-105.0156522,39.6982047
-7444,5765,6244,0.238854062350574,0.238854062350574,-105.0065723,39.6981963,-105.0093641,39.6981976
-7445,6244,5899,0.278312459096762,0.278312459096762,-105.0093641,39.6981976,-105.0126138,39.6983104
-7446,5899,1600,0.0794217837629518,0.0794217837629518,-105.0126138,39.6983104,-105.0133862,39.6987066
-7448,4405,4957,0.275380198668453,0.275380198668453,-105.0297627,39.6985415,-105.0329814,39.6985547
-7450,4315,4502,0.0962009886521744,0.0962009886521744,-105.0344405,39.6985481,-105.0355649,39.6985415
-7451,4502,6245,0.0998685092157526,0.0998685092157526,-105.0355649,39.6985415,-105.0367322,39.6985415
-7452,6245,5078,0.0969948238046964,0.0969948238046964,-105.0367322,39.6985415,-105.0378651,39.6985745
-7453,5078,6246,0.102086344844989,0.102086344844989,-105.0378651,39.6985745,-105.0390582,39.6985613
-7454,6246,6247,0.102069890156656,0.102069890156656,-105.0390582,39.6985613,-105.0402512,39.6985547
-7455,6247,6248,0.0998684901150858,0.0998684901150858,-105.0402512,39.6985547,-105.0414185,39.6985547
-7456,6248,6249,0.099157147424293,0.099157147424293,-105.0414185,39.6985547,-105.0425772,39.6985745
-7457,6249,6250,0.0998927126402804,0.0998927126402804,-105.0425772,39.6985745,-105.0437445,39.6985943
-7459,4376,2857,0.174778525570848,0.174778525570848,-105.0014998,39.6980642,-105.0035425,39.698084
-7461,1656,6251,0.113089099397014,0.113089099397014,-105.0156865,39.6985745,-105.0170083,39.6985811
-7462,6251,4210,0.0895877408394824,0.0895877408394824,-105.0170083,39.6985811,-105.0180554,39.6985745
-7463,4210,6252,0.0984078699260149,0.0984078699260149,-105.0180554,39.6985745,-105.0192055,39.6985613
-7464,6252,202,0.0984164433029134,0.0984164433029134,-105.0192055,39.6985613,-105.0203557,39.6985481
-7465,202,2930,0.0999116533304243,0.0999116533304243,-105.0203557,39.6985481,-105.021523,39.6985217
-7467,5311,1467,0.0969591422712861,0.0969591422712861,-105.0227074,39.6985877,-105.0238404,39.6986076
-7468,1467,5446,0.104331765041419,0.104331765041419,-105.0238404,39.6986076,-105.0250598,39.6985976
-7470,6253,6254,0.108544830855141,0.108544830855141,-104.9926817,39.6984968,-104.9939504,39.6984927
-7471,6254,6255,0.0440614876081187,0.0440614876081187,-104.9939504,39.6984927,-104.9944654,39.6984907
-7472,6255,6256,0.10258169252724,0.10258169252724,-104.9944654,39.6984907,-104.9956644,39.6984948
-7473,6256,6257,0.0426791560290334,0.0426791560290334,-104.9956644,39.6984948,-104.9961632,39.6984894
-7474,6257,1181,0.0541704333597994,0.0541704333597994,-104.9961632,39.6984894,-104.9967963,39.6984825
-7476,6258,5341,0.664349456749629,0.664349456749629,-105.0437445,39.6975575,-105.0514806,39.6980732
-7480,1556,736,0.1281317837441,0.1281317837441,-104.9613425,39.77767,-104.9613344,39.7765177
-7482,6260,6261,0.0586102720745076,0.0586102720745076,-104.9613314,39.7250799,-104.9613184,39.7256069
-7484,1188,6262,0.0214828666370953,0.0214828666370953,-104.9613359,39.7271192,-104.9613357,39.7273124
-7485,6262,3789,0.199388923153335,0.199388923153335,-104.9613357,39.7273124,-104.9613527,39.7291055
-7486,3789,5915,0.154872293830304,0.154872293830304,-104.9613527,39.7291055,-104.9613527,39.7304983
-7487,5915,6263,0.0506492890867135,0.0506492890867135,-104.9613527,39.7304983,-104.9613527,39.7309538
-7488,6264,2248,0.0665325760000431,0.0665325760000431,-104.9610192,39.7328682,-104.9610284,39.7334665
-7489,2248,4881,0.176090081583566,0.176090081583566,-104.9610284,39.7334665,-104.9610377,39.7350501
-7490,4881,6265,0.19613430259676,0.19613430259676,-104.9610377,39.7350501,-104.9610051,39.7368138
-7491,6265,5479,0.175348484443179,0.175348484443179,-104.9610051,39.7368138,-104.9610209,39.7383907
-7492,5479,6266,0.176845636908204,0.176845636908204,-104.9610209,39.7383907,-104.9610132,39.7399811
-7493,6266,6267,0.178089834743743,0.178089834743743,-104.9610132,39.7399811,-104.9610118,39.7415827
-7494,6267,676,0.00240181041514711,0.00240181041514711,-104.9610118,39.7415827,-104.9610118,39.7416043
-7495,676,6268,0.00459391026290071,0.00459391026290071,-104.9610118,39.7416043,-104.9610132,39.7416456
-7496,6268,6269,0.174858851790528,0.174858851790528,-104.9610132,39.7416456,-104.960998,39.7432181
-7497,6269,4598,0.173764465207871,0.173764465207871,-104.960998,39.7432181,-104.9610007,39.7447808
-7500,6270,6271,0.133612621428605,0.133612621428605,-104.960998,39.748227,-104.9609926,39.7494286
-7501,6271,6272,0.00412533177852682,0.00412533177852682,-104.9609926,39.7494286,-104.9609926,39.7494657
-7502,6272,6273,0.00367565176707242,0.00367565176707242,-104.9609926,39.7494657,-104.9609901,39.7494987
-7503,6273,6274,0.134146296121319,0.134146296121319,-104.9609901,39.7494987,-104.9609953,39.7507051
-20534,10849,10832,0.00532626442143788,0.00532626442143788,-105.0250742,39.7612881,-105.025074,39.7612402
-7504,6274,6275,0.138338671785307,0.138338671785307,-104.9609953,39.7507051,-104.961025,39.751949
-7505,6275,829,0.140763564032817,0.140763564032817,-104.961025,39.751949,-104.9610026,39.7532148
-7506,829,3569,0.13985476308825,0.13985476308825,-104.9610026,39.7532148,-104.9609889,39.7544725
-7507,3569,5638,0.139885286720423,0.139885286720423,-104.9609889,39.7544725,-104.9609978,39.7557305
-7508,5638,4342,0.139394668795268,0.139394668795268,-104.9609978,39.7557305,-104.9609926,39.7569841
-7509,4342,6276,0.136887040523289,0.136887040523289,-104.9609926,39.7569841,-104.9609775,39.7582151
-7510,6276,3042,0.135179672321338,0.135179672321338,-104.9609775,39.7582151,-104.9609775,39.7594308
-7511,3042,6277,0.141328751765533,0.141328751765533,-104.9609775,39.7594308,-104.9609775,39.7607018
-7512,6277,6278,0.0048613905607292,0.0048613905607292,-104.9609775,39.7607018,-104.9609792,39.7607455
-7513,6278,6279,0.138461653724603,0.138461653724603,-104.9609792,39.7607455,-104.9609873,39.7619907
-7514,6279,1163,0.137550674895164,0.137550674895164,-104.9609873,39.7619907,-104.9609775,39.7632277
-7515,1163,883,0.14127337175944,0.14127337175944,-104.9609775,39.7632277,-104.9609746,39.7644982
-7516,883,4468,0.137815416161984,0.137815416161984,-104.9609746,39.7644982,-104.9609786,39.7657376
-7517,4468,2790,0.135224582480649,0.135224582480649,-104.9609786,39.7657376,-104.9609746,39.7669537
-7518,2790,5258,0.130698751805084,0.130698751805084,-104.9609746,39.7669537,-104.9609775,39.7681291
-7519,5258,6280,0.127788689349157,0.127788689349157,-104.9609775,39.7681291,-104.9609549,39.7692782
-7521,6281,4149,0.293690516229792,0.293690516229792,-104.9607137,39.718346,-104.9607278,39.7209872
-7522,4149,4399,0.168839008279682,0.168839008279682,-104.9607278,39.7209872,-104.9607224,39.7225056
-7524,6202,6282,0.107543949920042,0.107543949920042,-104.961346,39.7809647,-104.9613313,39.7819318
-7525,6282,6283,0.203165579542053,0.203165579542053,-104.9613313,39.7819318,-104.9613399,39.7837589
-7526,6283,2881,0.158375292404745,0.158375292404745,-104.9613399,39.7837589,-104.961384,39.7851828
-7528,6284,6285,0.199406415880408,0.199406415880408,-105.0228039,39.7766253,-105.0228094,39.7784186
-7530,2831,1439,0.198717844078091,0.198717844078091,-105.0227922,39.780226,-105.0228009,39.7820131
-7531,1439,6286,0.198972452931936,0.198972452931936,-105.0228009,39.7820131,-105.0227972,39.7838025
-7533,4103,6046,0.129598634612641,0.129598634612641,-105.0227805,39.7844643,-105.0227863,39.7856298
-7534,6046,6287,0.200664408696912,0.200664408696912,-105.0227863,39.7856298,-105.0227969,39.7874344
-7535,6287,6288,0.407763176533057,0.407763176533057,-105.0227969,39.7874344,-105.0227915,39.7911015
-7536,3356,6289,0.17574244534878,0.17574244534878,-104.9339641,39.7162382,-104.9339422,39.7146578
-7537,6289,3103,0.174022554549137,0.174022554549137,-104.9339422,39.7146578,-104.9339765,39.713093
-7538,3103,6290,0.195576263268451,0.195576263268451,-104.9339765,39.713093,-104.9339457,39.7113343
-7539,6290,6291,0.0184164625226683,0.0184164625226683,-104.9339457,39.7113343,-104.9339286,39.7111692
-7543,5848,6293,0.0908806324614032,0.0908806324614032,-104.9339926,39.6911379,-104.9339516,39.6903212
-7544,6293,6294,0.111642131539399,0.111642131539399,-104.9339516,39.6903212,-104.9339602,39.6893172
-7546,6295,6296,0.199763041133193,0.199763041133193,-104.9337199,39.6893172,-104.9337113,39.6875207
-7547,6297,4228,0.205146518268072,0.205146518268072,-104.933893,39.698442,-104.933969,39.696598
-7548,4228,6298,0.220075142380819,0.220075142380819,-104.933969,39.696598,-104.934287,39.694634
-7549,6299,6300,0.269225278413762,0.269225278413762,-105.0158374,39.7910751,-105.0158404,39.7886539
-7550,6300,6301,0.135380699238895,0.135380699238895,-105.0158404,39.7886539,-105.0158347,39.7874364
-7551,6301,6037,0.201685647547083,0.201685647547083,-105.0158347,39.7874364,-105.0158387,39.7856226
-7552,6037,4092,0.180825512734332,0.180825512734332,-105.0158387,39.7856226,-105.0158347,39.7839964
-8788,5909,7005,0.202308283638507,0.202308283638507,-104.9316976,39.7492496,-104.931694,39.751069
-7555,1356,1434,0.0619921139139986,0.0619921139139986,-105.015824,39.7825504,-105.015828,39.7819929
-7556,1434,1416,0.0702533335118034,0.0702533335118034,-105.015828,39.7819929,-105.0158307,39.7813611
-7557,1416,2824,0.130534926760632,0.130534926760632,-105.0158307,39.7813611,-105.0158414,39.7801872
-7558,2824,2485,0.13649413612348,0.13649413612348,-105.0158414,39.7801872,-105.0158508,39.7789597
-7559,2485,6304,0.132600390611243,0.132600390611243,-105.0158508,39.7789597,-105.0158468,39.7777672
-7560,6304,6305,0.13375224687231,0.13375224687231,-105.0158468,39.7777672,-105.0158628,39.7765644
-7562,6293,6306,0.193932773048905,0.193932773048905,-104.9339516,39.6903212,-104.9316857,39.6902815
-7564,6307,4033,0.1068931298406,0.1068931298406,-105.0318135,39.6967219,-105.0318398,39.697683
-7566,6308,1505,0.201208565153675,0.201208565153675,-105.0320716,39.6967254,-105.0320802,39.6949159
-7567,1505,178,0.201696340498873,0.201696340498873,-105.0320802,39.6949159,-105.0320556,39.6931021
-7568,178,1706,0.202420430939935,0.202420430939935,-105.0320556,39.6931021,-105.0320475,39.6912817
-7569,1706,6310,0.205872571954156,0.205872571954156,-105.0320475,39.6912817,-105.0320287,39.6894303
-7571,1393,5861,0.176199480761084,0.176199480761084,-105.0324691,39.7165619,-105.0324691,39.7149773
-7573,1309,5328,0.243304763536767,0.243304763536767,-105.0324406,39.7133724,-105.0327094,39.7111941
-17643,524,9824,0.0585508481458027,0.0585508481458027,-104.9493835,39.780399,-104.9497096,39.7808621
-7575,6311,6312,0.480549704702292,0.480549704702292,-105.0324954,39.6894303,-105.0325311,39.6851087
-7576,4368,1449,0.194542255499986,0.194542255499986,-105.0015178,39.7057816,-105.0037914,39.7057442
-7577,1449,6313,0.208609985343506,0.208609985343506,-105.0037914,39.7057442,-105.006229,39.705797
-7578,6313,6314,0.103555170544593,0.103555170544593,-105.006229,39.705797,-105.0074307,39.7056848
-7579,6314,6315,0.0981349608621905,0.0981349608621905,-105.0074307,39.7056848,-105.0085636,39.7055461
-7581,3820,5895,0.101734690953305,0.101734690953305,-105.009791,39.7062461,-105.0109801,39.7062318
-7583,6316,6317,0.456743307850688,0.456743307850688,-105.0432381,39.7057328,-105.0485768,39.7057857
-7584,5896,1591,0.201196573887444,0.201196573887444,-105.0109828,39.7056561,-105.0133347,39.7056536
-7585,1591,1642,0.201704599280981,0.201704599280981,-105.0133347,39.7056536,-105.0156924,39.7056338
-7587,4303,6319,0.0895876341901528,0.0895876341901528,-105.0350499,39.705614,-105.036097,39.7056008
-7589,6320,5074,0.0881249654942257,0.0881249654942257,-105.0371184,39.7056206,-105.0381484,39.7056338
-7590,5074,6321,0.0822356991688935,0.0822356991688935,-105.0381484,39.7056338,-105.0391097,39.7056338
-7592,3098,3208,0.20139821402018,0.20139821402018,-104.9663374,39.7129121,-104.9663009,39.7111011
-7593,3208,6120,0.199810792778826,0.199810792778826,-104.9663009,39.7111011,-104.9663168,39.7093042
-7594,6120,1919,0.202180610053987,0.202180610053987,-104.9663168,39.7093042,-104.966335,39.707486
-7595,1919,6322,0.202387552164505,0.202387552164505,-104.966335,39.707486,-104.9663254,39.7056659
-7596,6322,3262,0.201452153939087,0.201452153939087,-104.9663254,39.7056659,-104.9663213,39.7038542
-7597,3262,6323,0.198460905873661,0.198460905873661,-104.9663213,39.7038542,-104.9663246,39.7020694
-7599,6325,6326,0.0490995020648654,0.0490995020648654,-104.9717416,39.7183547,-104.9722942,39.7184743
-7600,6326,6327,0.055368676730927,0.055368676730927,-104.9722942,39.7184743,-104.9729137,39.7186188
-7601,6327,6328,0.0309445801475025,0.0309445801475025,-104.9729137,39.7186188,-104.9732624,39.718693
-7602,6328,992,0.0695937269558986,0.0695937269558986,-104.9732624,39.718693,-104.974036,39.718887
-7603,992,5033,0.0562459052664965,0.0562459052664965,-104.974036,39.718887,-104.9746644,39.7190361
-8836,2977,657,0.0520837064464313,0.0520837064464313,-105.032261,39.7585166,-105.0322612,39.758985
-7604,5033,6329,0.0516777216994855,0.0516777216994855,-104.9746644,39.7190361,-104.9752418,39.719173
-7605,6329,5046,0.105372499364086,0.105372499364086,-104.9752418,39.719173,-104.9763833,39.7195295
-7606,5046,4160,0.118696493530277,0.118696493530277,-104.9763833,39.7195295,-104.977542,39.720117
-7607,4160,6330,0.136699581092316,0.136699581092316,-104.977542,39.720117,-104.9787889,39.7208861
-7608,6330,4974,0.128955324206818,0.128955324206818,-104.9787889,39.7208861,-104.9799651,39.7216117
-7609,4974,4766,0.151821196012923,0.151821196012923,-104.9799651,39.7216117,-104.9813252,39.7224891
-7610,4766,6331,0.118237006648706,0.118237006648706,-104.9813252,39.7224891,-104.9824024,39.7231556
-7611,6331,6332,0.150079343538278,0.150079343538278,-104.9824024,39.7231556,-104.9836195,39.7241279
-7612,6332,6333,0.165501031184984,0.165501031184984,-104.9836195,39.7241279,-104.9848045,39.7253046
-7613,6333,6334,0.0461738747625761,0.0461738747625761,-104.9848045,39.7253046,-104.9851351,39.7256329
-7614,6334,6335,0.133457305058149,0.133457305058149,-104.9851351,39.7256329,-104.9861535,39.7265423
-7615,6335,1212,0.134967826650912,0.134967826650912,-104.9861535,39.7265423,-104.9874175,39.7272691
-7617,2900,6336,0.106167707809224,0.106167707809224,-104.9733518,39.7582331,-104.9721098,39.7582313
-7618,6336,6337,0.104928236912142,0.104928236912142,-104.9721098,39.7582313,-104.9708823,39.7582295
-7619,6337,4735,0.104475212628964,0.104475212628964,-104.9708823,39.7582295,-104.9696601,39.7582276
-7620,4735,6338,0.102406513567036,0.102406513567036,-104.9696601,39.7582276,-104.9684621,39.758226
-7621,6338,6339,0.111236760215522,0.111236760215522,-104.9684621,39.758226,-104.9671608,39.7582241
-7622,6339,5400,0.102611714232847,0.102611714232847,-104.9671608,39.7582241,-104.9659604,39.7582223
-7623,5400,6340,0.108937307551118,0.108937307551118,-104.9659604,39.7582223,-104.964686,39.7582205
-7624,6340,3903,0.106714805368354,0.106714805368354,-104.964686,39.7582205,-104.9634376,39.7582187
-7625,3903,1040,0.101833845648583,0.101833845648583,-104.9634376,39.7582187,-104.9622463,39.7582169
-7626,1040,6276,0.108458622663871,0.108458622663871,-104.9622463,39.7582169,-104.9609775,39.7582151
-7627,6276,6341,0.106851583282394,0.106851583282394,-104.9609775,39.7582151,-104.9597275,39.7582133
-7628,6341,5005,0.0997823108241272,0.0997823108241272,-104.9597275,39.7582133,-104.9585602,39.7582115
-7629,5005,3326,0.104184561842385,0.104184561842385,-104.9585602,39.7582115,-104.9573414,39.7582098
-7630,3326,6343,0.103107525114489,0.103107525114489,-104.9573414,39.7582098,-104.9561352,39.758208
-7631,6343,6344,0.102577524667858,0.102577524667858,-104.9561352,39.758208,-104.9549352,39.7582063
-7632,6344,2077,0.109057202290834,0.109057202290834,-104.9549352,39.7582063,-104.9536594,39.7582089
-7633,2077,2674,0.105238001385814,0.105238001385814,-104.9536594,39.7582089,-104.9524283,39.7582028
-7634,2674,4124,0.102908082653388,0.102908082653388,-104.9524283,39.7582028,-104.9512246,39.7581873
-7635,4124,6345,0.111237019236159,0.111237019236159,-104.9512246,39.7581873,-104.9499239,39.7582178
-7636,6345,6346,0.0932071004983952,0.0932071004983952,-104.9499239,39.7582178,-104.9488336,39.7582075
-7637,6346,6347,0.101110239024215,0.101110239024215,-104.9488336,39.7582075,-104.9476508,39.7582147
-7638,6347,3472,0.0998858354760893,0.0998858354760893,-104.9476508,39.7582147,-104.9464826,39.7581939
-7639,3472,6024,0.100184077827119,0.100184077827119,-104.9464826,39.7581939,-104.9453106,39.7581922
-7641,3875,6348,0.0931831682605449,0.0931831682605449,-104.944148,39.7581905,-104.9430579,39.7581889
-7642,6348,851,0.00806942804368034,0.00806942804368034,-104.9430579,39.7581889,-104.9429635,39.7581888
-7644,6349,6350,0.122741608307903,0.122741608307903,-105.0059317,39.7547022,-105.0044986,39.7547701
-7646,6351,6352,0.0367221312616467,0.0367221312616467,-104.9499571,39.7092328,-104.9495279,39.7092395
-7648,6353,6352,0.031587926861642,0.031587926861642,-104.9495193,39.7089555,-104.9495279,39.7092395
-7649,6352,6353,0.031587926861642,0.031587926861642,-104.9495279,39.7092395,-104.9495193,39.7089555
-7651,4284,5406,0.209059343043956,0.209059343043956,-104.9683885,39.7728911,-104.9659423,39.7728915
-7652,5406,3139,0.106127827196287,0.106127827196287,-104.9659423,39.7728915,-104.9647005,39.7728917
-7653,3139,3924,0.0976499059560775,0.0976499059560775,-104.9647005,39.7728917,-104.9635579,39.7728918
-7654,3924,5060,0.353918950652385,0.353918950652385,-104.9635579,39.7728918,-104.9594167,39.7728924
-7655,5060,5012,0.0994873589954365,0.0994873589954365,-104.9594167,39.7728924,-104.9582526,39.7728926
-7658,6356,2071,0.094898000530225,0.094898000530225,-104.9541524,39.7728932,-104.953042,39.7728934
-7659,2071,2669,0.0951372963506741,0.0951372963506741,-104.953042,39.7728934,-104.9519288,39.7728936
-7660,2669,4139,0.0930605458860926,0.0930605458860926,-104.9519288,39.7728936,-104.9508399,39.7728937
-7661,4139,6357,0.0866508308410144,0.0866508308410144,-104.9508399,39.7728937,-104.949826,39.7728939
-7662,6357,6358,0.100153967379628,0.100153967379628,-104.949826,39.7728939,-104.9486541,39.7728941
-7663,6358,6359,0.094521960675225,0.094521960675225,-104.9486541,39.7728941,-104.9475481,39.7728942
-7664,6359,834,0.394334341459341,0.394334341459341,-104.9475481,39.7728942,-104.942934,39.7728949
-7665,834,871,0.00699086459728944,0.00699086459728944,-104.942934,39.7728949,-104.9428522,39.7728949
-7666,871,6360,0.0985643561678323,0.0985643561678323,-104.9428522,39.7728949,-104.9416989,39.7728951
-7667,6360,6361,0.0919153430634884,0.0919153430634884,-104.9416989,39.7728951,-104.9406234,39.7728953
-7668,6361,6362,0.0142210252134503,0.0142210252134503,-104.9406234,39.7728953,-104.940457,39.7728953
-7670,6363,6250,0.198277134301598,0.198277134301598,-105.0437617,39.7003774,-105.0437445,39.6985943
-7671,6250,6258,0.115286899945233,0.115286899945233,-105.0437445,39.6985943,-105.0437445,39.6975575
-7672,6258,6364,0.0878557774552784,0.0878557774552784,-105.0437445,39.6975575,-105.0437011,39.6967681
-7673,6364,1498,0.200867314778576,0.200867314778576,-105.0437011,39.6967681,-105.0437531,39.6949621
-7675,187,5877,0.162832287710312,0.162832287710312,-105.0437531,39.6931327,-105.0442509,39.6917193
-7676,5877,1716,0.0499429374304698,0.0499429374304698,-105.0442509,39.6917193,-105.0442424,39.6912702
-7678,6365,1582,0.142378532382676,0.142378532382676,-105.0442509,39.6894935,-105.0442642,39.6882131
-7679,1582,6366,1.28806099537571,1.28806099537571,-105.0442642,39.6882131,-105.0417039,39.6767981
-7680,6367,2271,0.093525872105216,0.093525872105216,-104.9316211,39.7280567,-104.9305276,39.7280436
-7681,2271,6368,0.0953526699152847,0.0953526699152847,-104.9305276,39.7280436,-104.9294128,39.7280596
-7682,6368,6369,0.0956103425754401,0.0956103425754401,-104.9294128,39.7280596,-104.9282948,39.7280565
-7683,6369,2130,0.0946975078442247,0.0946975078442247,-104.9282948,39.7280565,-104.9271876,39.7280433
-7684,2130,5981,0.0976635368625979,0.0976635368625979,-104.9271876,39.7280433,-104.9260461,39.7280697
-7685,5981,6370,0.0910203235542429,0.0910203235542429,-104.9260461,39.7280697,-104.9249818,39.7280631
-7686,6370,2335,0.0939706612325521,0.0939706612325521,-104.9249818,39.7280631,-104.9238831,39.7280763
-7687,2335,6371,1.7470149025737,1.7470149025737,-104.9238831,39.7280763,-104.9034546,39.7280769
-7688,96,3500,0.202527213410831,0.202527213410831,-104.9453991,39.7002071,-104.9453782,39.6983858
-7689,3500,6372,0.200485391157046,0.200485391157046,-104.9453782,39.6983858,-104.9453525,39.6965829
-7690,6372,6373,0.200744473183588,0.200744473183588,-104.9453525,39.6965829,-104.9454196,39.6947783
-7691,6373,6374,0.203425216522523,0.203425216522523,-104.9454196,39.6947783,-104.9453733,39.6929492
-7692,6374,261,0.363896677888795,0.363896677888795,-104.9453733,39.6929492,-104.9453693,39.6896766
-7693,261,6375,0.041137585532266,0.041137585532266,-104.9453693,39.6896766,-104.9453607,39.6893067
-7694,6375,6376,0.527231991542063,0.527231991542063,-104.9453607,39.6893067,-104.9453741,39.6845652
-8934,2865,7087,0.201874708309178,0.201874708309178,-104.9846471,39.7855801,-104.9846429,39.7873956
-7696,6377,3069,0.174367166483664,0.174367166483664,-104.9449725,39.7146388,-104.9449618,39.7130707
-7697,3069,6378,0.175688037406208,0.175688037406208,-104.9449618,39.7130707,-104.9449634,39.7114907
-7698,6378,6379,0.195293035214527,0.195293035214527,-104.9449634,39.7114907,-104.9449548,39.7097344
-7700,5015,6380,0.0917013339896307,0.0917013339896307,-104.9582016,39.7805126,-104.9592745,39.7805291
-7702,380,6381,0.0601450697094338,0.0601450697094338,-105.03278,39.74748,-105.0334738,39.7475695
-7703,6381,3398,0.0950953426294514,0.0950953426294514,-105.0334738,39.7475695,-105.0345861,39.7475697
-7704,3398,6384,0.0512135480319707,0.0512135480319707,-105.0345861,39.7475697,-105.0351851,39.7475652
-7705,6384,6385,0.0512477474787707,0.0512477474787707,-105.0351851,39.7475652,-105.0357845,39.7475607
-7706,6385,6386,0.0508150751685789,0.0508150751685789,-105.0357845,39.7475607,-105.0363788,39.7475676
-7707,6386,6387,0.0467877396177586,0.0467877396177586,-105.0363788,39.7475676,-105.036926,39.7475739
-7708,6387,6388,0.102738526459791,0.102738526459791,-105.036926,39.7475739,-105.0381277,39.7475739
-7709,6388,6389,0.0502022657375815,0.0502022657375815,-105.0381277,39.7475739,-105.0387149,39.7475739
-7710,6389,6390,0.0495952560526731,0.0495952560526731,-105.0387149,39.7475739,-105.039295,39.7475739
-7711,6390,6391,0.0506266673865361,0.0506266673865361,-105.039295,39.7475739,-105.0398871,39.7475806
-7712,6391,1111,0.0484464674507555,0.0484464674507555,-105.0398871,39.7475806,-105.0404537,39.7475871
-7714,4654,1272,0.131229439030854,0.131229439030854,-105.0189639,39.7475939,-105.0204988,39.7476034
-7715,1272,6392,0.0233060632854453,0.0233060632854453,-105.0204988,39.7476034,-105.0207714,39.7476023
-7716,6392,4560,0.111717062627726,0.111717062627726,-105.0207714,39.7476023,-105.0220781,39.7475968
-7717,4560,2711,0.115276038939543,0.115276038939543,-105.0220781,39.7475968,-105.0233999,39.7473921
-7718,2711,6393,0.157827401374253,0.157827401374253,-105.0233999,39.7473921,-105.0252309,39.747573
-7720,6394,6142,0.134287937529063,0.134287937529063,-105.0268144,39.7475701,-105.0283851,39.7475767
-7721,6142,4016,0.132933704994743,0.132933704994743,-105.0283851,39.7475767,-105.0299399,39.7475891
-7722,4016,6395,0.00906250528140326,0.00906250528140326,-105.0299399,39.7475891,-105.0300459,39.7475887
-7723,6395,382,0.124591902443133,0.124591902443133,-105.0300459,39.7475887,-105.0315032,39.7475841
-7725,5850,6396,0.00523272011597534,0.00523272011597534,-105.0022921,39.7147654,-105.0022548,39.7147281
-7726,6396,501,0.199511293598505,0.199511293598505,-105.0022548,39.7147281,-105.0014928,39.7130323
-7727,501,6397,0.217152349025227,0.217152349025227,-105.0014928,39.7130323,-105.0006291,39.7111959
-7728,6397,6398,0.36755359975324,0.36755359975324,-105.0006291,39.7111959,-104.9991941,39.7080802
-7730,3613,6399,0.21266860576331,0.21266860576331,-104.9293234,39.7702164,-104.9308332,39.7717367
-7732,6401,6402,0.038551456513769,0.038551456513769,-104.9719701,39.7702406,-104.9722075,39.7705354
-7733,6402,6403,0.01171446339475,0.01171446339475,-104.9722075,39.7705354,-104.9723255,39.770589
-7735,2909,6404,0.0724414530545414,0.0724414530545414,-104.9733496,39.764224,-104.973944,39.7646884
-7736,6404,6405,0.105070094163828,0.105070094163828,-104.973944,39.7646884,-104.9748213,39.7653503
-7737,6405,6174,0.106062498124406,0.106062498124406,-104.9748213,39.7653503,-104.9757035,39.7660211
-7738,6174,3312,0.104669820520163,0.104669820520163,-104.9757035,39.7660211,-104.9765745,39.7666828
-7739,3312,6406,0.105292804834109,0.105292804834109,-104.9765745,39.7666828,-104.9774556,39.7673446
-7741,5545,2415,0.0733757601851338,0.0733757601851338,-105.0422627,39.7521069,-105.0422764,39.7527667
-7743,5056,4299,0.0731858562049149,0.0731858562049149,-105.0422607,39.7532726,-105.0422855,39.7539305
-7745,5093,6407,0.0155546054802435,0.0155546054802435,-104.9901518,39.7836836,-104.990332,39.7836638
-7747,3914,4762,0.124500033165113,0.124500033165113,-104.9633401,39.7209669,-104.9640208,39.7219566
-7750,6409,5773,0.332202382721644,0.332202382721644,-104.9640263,39.7876087,-104.96707,39.7894676
-7752,6410,6411,0.0178672618817003,0.0178672618817003,-104.9686008,39.7903058,-104.9688032,39.7903462
-7754,6409,6412,0.0520862922994697,0.0520862922994697,-104.9640263,39.7876087,-104.963535,39.787886
-7756,6231,6413,0.198055274582402,0.198055274582402,-105.0174795,39.7257362,-105.0175186,39.7275171
-7758,6414,6415,0.189433856898839,0.189433856898839,-105.0169053,39.7202585,-105.0168624,39.7185552
-7759,6416,4038,0.0834324728266378,0.0834324728266378,-105.0172314,39.7170829,-105.0175833,39.7177827
-7761,6417,4521,0.134579982196382,0.134579982196382,-105.0174065,39.7620125,-105.0174118,39.7632228
-7762,4521,5240,0.13502405245006,0.13502405245006,-105.0174118,39.7632228,-105.0174132,39.7644371
-7763,5240,6418,0.13412336654487,0.13412336654487,-105.0174132,39.7644371,-105.0174145,39.7656433
-7764,6418,6419,0.133878890575632,0.133878890575632,-105.0174145,39.7656433,-105.0174118,39.7668473
-7765,6419,1678,0.134913237668999,0.134913237668999,-105.0174118,39.7668473,-105.0174158,39.7680606
-7766,1678,6421,0.134568146094945,0.134568146094945,-105.0174158,39.7680606,-105.0174145,39.7692708
-7767,6421,2457,0.135266114631303,0.135266114631303,-105.0174145,39.7692708,-105.0174746,39.7704864
-7768,2457,3225,0.138075006668938,0.138075006668938,-105.0174746,39.7704864,-105.0174873,39.7717281
-7769,3225,5745,0.134195295626898,0.134195295626898,-105.0174873,39.7717281,-105.0175012,39.7729349
-7770,5745,5522,0.132936679979251,0.132936679979251,-105.0175012,39.7729349,-105.0175119,39.7741304
-7771,5522,6422,0.135417328130375,0.135417328130375,-105.0175119,39.7741304,-105.0175243,39.7753482
-7772,6422,6423,0.137879539043021,0.137879539043021,-105.0175243,39.7753482,-105.0174223,39.7765857
-7776,6425,6426,0.131565838315989,0.131565838315989,-105.0170361,39.7765857,-105.0170359,39.7777689
-9014,7117,7118,0.0653478278832396,0.0653478278832396,-104.9968556,39.7354212,-104.9975929,39.7352666
-7778,2486,2825,0.134659485620958,0.134659485620958,-105.0170359,39.7789761,-105.0169815,39.7801864
-7779,2825,1435,0.20171777298344,0.20171777298344,-105.0169815,39.7801864,-105.0170158,39.7820003
-7780,1435,6427,0.150355567395556,0.150355567395556,-105.0170158,39.7820003,-105.01696,39.7833518
-7782,4094,6039,0.18817564016619,0.18817564016619,-105.0169973,39.7839311,-105.0170022,39.7856234
-7783,6039,6428,0.201342188276825,0.201342188276825,-105.0170022,39.7856234,-105.016993,39.7874341
-7784,6428,6429,0.404705192201308,0.404705192201308,-105.016993,39.7874341,-105.0169891,39.7910737
-7785,6430,2403,0.202864038761159,0.202864038761159,-105.0175669,39.7512092,-105.017566,39.7530336
-7786,2403,6431,0.0331723473682169,0.0331723473682169,-105.017566,39.7530336,-105.0178463,39.7532399
-7787,6431,6432,0.176045966759895,0.176045966759895,-105.0178463,39.7532399,-105.0177887,39.7548225
-7789,6433,6434,0.0826623084672878,0.0826623084672878,-105.0178088,39.7553019,-105.0178088,39.7560453
-7790,6434,6435,0.102944521823956,0.102944521823956,-105.0178088,39.7560453,-105.0178061,39.7569711
-7791,6435,6436,0.00978588535341196,0.00978588535341196,-105.0178061,39.7569711,-105.0178047,39.7570591
-7793,6131,5859,0.176922247784819,0.176922247784819,-105.0287757,39.7165547,-105.0287757,39.7149636
-7794,5859,1306,0.176947022701008,0.176947022701008,-105.0287757,39.7149636,-105.0288014,39.7133724
-7795,1306,6437,0.245961882429388,0.245961882429388,-105.0288014,39.7133724,-105.0287757,39.7111605
-7797,4379,175,0.0949912703955897,0.0949912703955897,-105.0284495,39.6939582,-105.0284721,39.6931041
-7799,6438,6439,0.118265132463411,0.118265132463411,-105.0288833,39.6876517,-105.0288576,39.6887151
-7800,426,6440,0.136068759302944,0.136068759302944,-105.0252144,39.7427283,-105.0268058,39.7427195
-7801,6440,6140,0.13326442219696,0.13326442219696,-105.0268058,39.7427195,-105.0283644,39.7427283
-7802,6140,4012,0.134504046499466,0.134504046499466,-105.0283644,39.7427283,-105.0299375,39.742737
-7803,4012,6441,0.132430300578831,0.132430300578831,-105.0299375,39.742737,-105.0314863,39.7427496
-7804,6441,6442,0.13523718007968,0.13523718007968,-105.0314863,39.7427496,-105.0330679,39.7427349
-7805,6442,3383,0.131020837855346,0.131020837855346,-105.0330679,39.7427349,-105.0346003,39.7427332
-7807,6443,5593,0.101318153214668,0.101318153214668,-105.0428338,39.7427355,-105.0440188,39.7427376
-7809,5592,6444,0.0976166388579658,0.0976166388579658,-105.0440283,39.7421749,-105.04517,39.7421763
-7810,6444,6445,0.491425863708822,0.491425863708822,-105.04517,39.7421763,-105.0509176,39.7421724
-7814,2400,6448,0.282522157819803,0.282522157819803,-104.9404255,39.7738517,-104.9389896,39.7761403
-7817,2813,6450,0.086833012009872,0.086833012009872,-104.9913173,39.7752191,-104.9923333,39.7752102
-7819,6451,6452,0.0978256934477298,0.0978256934477298,-104.9982284,39.7754911,-104.9993731,39.7754907
-7820,6452,3935,0.102019422492613,0.102019422492613,-104.9993731,39.7754907,-105.0005661,39.7754577
-7821,3935,5623,0.0992172562512715,0.0992172562512715,-105.0005661,39.7754577,-105.0017268,39.7754774
-7823,6453,4202,0.100516365940058,0.100516365940058,-105.006451,39.775346,-105.0076269,39.7753262
-7824,4202,1069,0.100502974298411,0.100502974298411,-105.0076269,39.7753262,-105.0088028,39.7753394
-7825,1069,2505,0.106288157429336,0.106288157429336,-105.0088028,39.7753394,-105.0100464,39.7753527
-7827,6454,1236,0.0948029547901802,0.0948029547901802,-105.0112167,39.7753455,-105.012326,39.7753515
-7828,1236,4810,0.0999111243280575,0.0999111243280575,-105.012326,39.7753515,-105.0134951,39.7753509
-7829,4810,2177,0.101346858256007,0.101346858256007,-105.0134951,39.7753509,-105.014681,39.7753502
-7830,2177,595,0.0594373309242362,0.0594373309242362,-105.014681,39.7753502,-105.0153765,39.7753499
-7831,595,6456,0.0424911721972826,0.0424911721972826,-105.0153765,39.7753499,-105.0158736,39.775342
-7833,349,6422,0.0713248739505624,0.0713248739505624,-105.0166897,39.7753492,-105.0175243,39.7753482
-7834,6422,4630,0.121079515215535,0.121079515215535,-105.0175243,39.7753482,-105.0189411,39.7753479
-7836,1259,376,0.0755636106904258,0.0755636106904258,-105.0204832,39.7753471,-105.0213674,39.7753467
-7837,376,4545,0.0608816123146845,0.0608816123146845,-105.0213674,39.7753467,-105.0220798,39.7753463
-7838,4545,2701,0.135701731606855,0.135701731606855,-105.0220798,39.7753463,-105.0236677,39.7753454
-7839,2701,6457,0.126994454068005,0.126994454068005,-105.0236677,39.7753454,-105.0251537,39.7753502
-7841,6458,6459,0.0454788769710747,0.0454788769710747,-105.0375697,39.7756981,-105.0381018,39.7756915
-7842,6459,6460,0.0496400956308302,0.0496400956308302,-105.0381018,39.7756915,-105.0386826,39.775685
-7843,6460,6461,0.0515972381206,0.0515972381206,-105.0386826,39.775685,-105.0392863,39.7756783
-7845,6462,6463,0.0483118204156802,0.0483118204156802,-105.0392949,39.7752627,-105.0398602,39.7752659
-7846,6463,1134,0.0499784066419261,0.0499784066419261,-105.0398602,39.7752659,-105.040445,39.7752693
-7847,1134,6464,0.0497410465605515,0.0497410465605515,-105.040445,39.7752693,-105.041027,39.7752745
-7849,6465,6466,0.0544130408961272,0.0544130408961272,-105.0416343,39.775288,-105.042271,39.7752905
-7850,6466,3850,0.0472855484942146,0.0472855484942146,-105.042271,39.7752905,-105.0428243,39.7752926
-7851,3850,6467,0.0501739162143614,0.0501739162143614,-105.0428243,39.7752926,-105.0434114,39.7752908
-7852,6467,5576,0.0486954285842123,0.0486954285842123,-105.0434114,39.7752908,-105.0439812,39.7752891
-7854,6468,4673,0.110758148850492,0.110758148850492,-104.9923387,39.7755028,-104.9936347,39.7754962
-7855,4673,6469,0.101963932591745,0.101963932591745,-104.9936347,39.7754962,-104.9948277,39.7755094
-7857,5575,6471,0.0065719182159958,0.0065719182159958,-105.044007,39.7747614,-105.0440839,39.7747614
-7858,6471,6472,0.0420124186537075,0.0420124186537075,-105.0440839,39.7747614,-105.0445755,39.7747614
-7859,6472,6473,0.0412603655949121,0.0412603655949121,-105.0445755,39.7747614,-105.0450583,39.7747614
-7860,6473,6474,0.00681975388326533,0.00681975388326533,-105.0450583,39.7747614,-105.0451381,39.7747614
-7862,6476,3433,0.101986471383689,0.101986471383689,-105.0333983,39.7749593,-105.0345914,39.7749791
-7864,6477,6478,0.14533158628719,0.14533158628719,-104.9406153,39.7461001,-104.9389155,39.7461112
-7865,6478,6479,0.146043976986052,0.146043976986052,-104.9389155,39.7461112,-104.9372075,39.746131
-7866,6479,2014,0.145258231311968,0.145258231311968,-104.9372075,39.746131,-104.9355085,39.7461282
-7867,2014,6480,0.148541120069898,0.148541120069898,-104.9355085,39.7461282,-104.9337711,39.7461262
-7868,6480,6481,0.146497737165933,0.146497737165933,-104.9337711,39.7461262,-104.9320576,39.7461244
-7870,6482,6483,0.108282286689265,0.108282286689265,-104.9873838,39.7461813,-104.9861174,39.7461946
-7871,6483,6484,0.108491401341724,0.108491401341724,-104.9861174,39.7461946,-104.9848486,39.7462103
-7873,6485,6486,0.107588206878742,0.107588206878742,-104.9835697,39.7461971,-104.9823113,39.7461969
-7874,6486,6487,0.108152480667507,0.108152480667507,-104.9823113,39.7461969,-104.9810463,39.7461971
-7875,6487,6488,0.101444382501879,0.101444382501879,-104.9810463,39.7461971,-104.9798598,39.7461897
-7876,6488,6489,0.0964116258051976,0.0964116258051976,-104.9798598,39.7461897,-104.9787322,39.7461798
-7877,6489,6490,0.100996661509111,0.100996661509111,-104.9787322,39.7461798,-104.9775509,39.7461815
-7878,6490,6491,0.0875395650093709,0.0875395650093709,-104.9775509,39.7461815,-104.976527,39.74618
-7879,6491,5045,0.0321137501610987,0.0321137501610987,-104.976527,39.74618,-104.9761515,39.7461728
-7880,5045,6492,0.117702359393688,0.117702359393688,-104.9761515,39.7461728,-104.9747749,39.7461601
-7882,6493,6494,0.102121868544675,0.102121868544675,-104.968414,39.7460843,-104.9672196,39.746075
-7885,5423,6497,0.104998299985498,0.104998299985498,-104.9659758,39.7460698,-104.9647477,39.7460671
-7887,6498,2276,0.0954001386196214,0.0954001386196214,-104.9320748,39.7455833,-104.930959,39.7455899
-7888,2276,3599,0.06824353272523,0.06824353272523,-104.930959,39.7455899,-104.9301608,39.7455899
-7889,3599,6499,0.0293198911712676,0.0293198911712676,-104.9301608,39.7455899,-104.9298179,39.7455937
-7890,6499,6500,0.100538255640661,0.100538255640661,-104.9298179,39.7455937,-104.928642,39.7456002
-7891,6500,5163,0.0991059325809468,0.0991059325809468,-104.928642,39.7456002,-104.9274829,39.7455899
-7892,5163,5160,0.0380087655441681,0.0380087655441681,-104.9274829,39.7455899,-104.9270451,39.7456493
-7893,5160,5991,0.104706554354607,0.104706554354607,-104.9270451,39.7456493,-104.9258205,39.7456382
-7894,5991,6501,0.100402260808534,0.100402260808534,-104.9258205,39.7456382,-104.9246462,39.7456457
-7895,6501,6502,1.04365943145138,1.04365943145138,-104.9246462,39.7456457,-104.9124392,39.7456596
-7898,435,6505,0.0386263503887606,0.0386263503887606,-104.9400813,39.7837417,-104.9400719,39.7833944
-7899,6505,335,0.101999106210783,0.101999106210783,-104.9400719,39.7833944,-104.9400719,39.7824771
-18520,9719,10306,0.125645609854682,0.125645609854682,-105.0302877,39.7369493,-105.0316869,39.7366042
-7901,6506,6507,1.29783680025226,1.29783680025226,-104.9094652,39.7786813,-104.924642,39.7791151
-7902,6507,5983,0.103637474886707,0.103637474886707,-104.924642,39.7791151,-104.9258169,39.7793462
-7903,5983,2101,0.103292266259067,0.103292266259067,-104.9258169,39.7793462,-104.9269881,39.7795759
-9126,1424,7178,0.131577423131136,0.131577423131136,-105.0380823,39.7820859,-105.0380864,39.7832692
-7904,2101,6508,0.248902894245049,0.248902894245049,-104.9269881,39.7795759,-104.9298124,39.7801232
-7906,6509,6510,0.360508984578831,0.360508984578831,-104.9400658,39.7910048,-104.9405839,39.7877872
-7907,6510,6511,0.0349379067210739,0.0349379067210739,-104.9405839,39.7877872,-104.940586,39.787473
-7909,6512,6513,0.304262851034051,0.304262851034051,-104.9405864,39.7865077,-104.9405902,39.7837714
-7910,6513,6198,0.252538456966519,0.252538456966519,-104.9405902,39.7837714,-104.9406408,39.7815006
-7911,6198,576,0.0366939406022336,0.0366939406022336,-104.9406408,39.7815006,-104.940659,39.7811709
-7912,576,6515,0.0946945974761285,0.0946945974761285,-104.940659,39.7811709,-104.9407009,39.7803199
-7915,89,3525,0.202675004351493,0.202675004351493,-104.9580983,39.7002217,-104.9580991,39.698399
-7916,3525,6516,0.201208326437589,0.201208326437589,-104.9580991,39.698399,-104.9581069,39.6965895
-7917,6516,6517,0.125720317267139,0.125720317267139,-104.9581069,39.6965895,-104.9581176,39.6954589
-7919,6518,6519,0.200829668984099,0.200829668984099,-104.9581241,39.6947734,-104.9581188,39.6929673
-7920,6519,5832,0.202502182884777,0.202502182884777,-104.9581188,39.6929673,-104.958102,39.6911462
-7921,5832,6520,0.201241567556278,0.201241567556278,-104.958102,39.6911462,-104.9581278,39.6893365
-7922,6520,6521,0.396923547399649,0.396923547399649,-104.9581278,39.6893365,-104.957636,39.685787
-7923,6522,6523,0.133027344486413,0.133027344486413,-104.982762,39.6978313,-104.9817185,39.6969444
-7924,6523,4230,0.0509058477475031,0.0509058477475031,-104.9817185,39.6969444,-104.9812906,39.6966263
-7925,4230,3627,0.095634183764131,0.095634183764131,-104.9812906,39.6966263,-104.9805353,39.6959923
-7926,3627,1795,0.17402508350424,0.17402508350424,-104.9805353,39.6959923,-104.9792579,39.6947744
-7928,6524,4175,0.0888021060703878,0.0888021060703878,-104.9782122,39.6938342,-104.9775465,39.6932215
-17651,395,780,0.411550362143881,0.411550362143881,-104.9367017,39.7800737,-104.9318858,39.7800449
-7930,6525,1780,0.0441669339202922,0.0441669339202922,-104.9772938,39.6929888,-104.9769419,39.6926982
-7931,1780,4371,0.0730695211007641,0.0730695211007641,-104.9769419,39.6926982,-104.976372,39.6922088
-7932,4371,6527,0.0615136660388587,0.0615136660388587,-104.976372,39.6922088,-104.9759135,39.6917827
-7933,6527,365,0.0331373286455635,0.0331373286455635,-104.9759135,39.6917827,-104.9756534,39.6915619
-7935,6528,6529,0.918393000112345,0.918393000112345,-104.9593753,39.6828563,-104.9687115,39.6869299
-7936,6529,6530,0.220602612202271,0.220602612202271,-104.9687115,39.6869299,-104.9709294,39.6879413
-7938,6531,6533,0.0857049610334614,0.0857049610334614,-104.9734286,39.6890388,-104.9743231,39.6893856
-7940,5175,3090,0.40371590303619,0.40371590303619,-104.9757389,39.7165269,-104.9757316,39.7128962
-7941,3090,3201,0.197838998920199,0.197838998920199,-104.9757316,39.7128962,-104.9757389,39.711117
-7943,6407,4688,0.196571833896643,0.196571833896643,-104.990332,39.7836638,-104.9926323,39.7836836
-7944,4688,4940,0.140125445900248,0.140125445900248,-104.9926323,39.7836836,-104.9942716,39.7836506
-7946,6170,5019,0.102773469761832,0.102773469761832,-104.9594375,39.7241351,-104.9582358,39.7241351
-7947,5019,3351,0.103514032973499,0.103514032973499,-104.9582358,39.7241351,-104.9570255,39.7241259
-7948,3351,6534,0.103149871890818,0.103149871890818,-104.9570255,39.7241259,-104.9558194,39.7241271
-7949,6534,6535,0.102775789327764,0.102775789327764,-104.9558194,39.7241271,-104.9546177,39.7241333
-9173,5349,5392,0.0859339245649361,0.0859339245649361,-104.9274952,39.692974,-104.926491,39.6929872
-7950,6535,2060,0.103192691678964,0.103192691678964,-104.9546177,39.7241333,-104.9534111,39.7241317
-7951,2060,2646,0.101884046964041,0.101884046964041,-104.9534111,39.7241317,-104.9522198,39.7241312
-7952,2646,4112,0.105519033634909,0.105519033634909,-104.9522198,39.7241312,-104.950986,39.7241333
-7953,4112,6536,0.103005071327601,0.103005071327601,-104.950986,39.7241333,-104.9497817,39.7241209
-7954,6536,6537,0.102995851811127,0.102995851811127,-104.9497817,39.7241209,-104.9485774,39.7241209
-7955,6537,6539,0.1029998815793,0.1029998815793,-104.9485774,39.7241209,-104.9473731,39.7241291
-7956,6539,3453,0.102546625331303,0.102546625331303,-104.9473731,39.7241291,-104.9461741,39.7241209
-7958,6015,3883,0.103459903316916,0.103459903316916,-104.9449591,39.7241168,-104.9437494,39.7241229
-7959,3883,846,0.104834602248929,0.104834602248929,-104.9437494,39.7241229,-104.9425236,39.7241229
-7960,846,6540,0.101388253991195,0.101388253991195,-104.9425236,39.7241229,-104.9413381,39.7241209
-7961,6540,6541,0.0479102302548626,0.0479102302548626,-104.9413381,39.7241209,-104.9407779,39.7241206
-7963,988,6542,0.0976255225844962,0.0976255225844962,-104.9740667,39.7237385,-104.9729252,39.7237385
-7964,6542,6543,0.0510763365802728,0.0510763365802728,-104.9729252,39.7237385,-104.9723281,39.7237476
-7966,6544,2318,0.0507276043625414,0.0507276043625414,-104.9717626,39.7237562,-104.9711696,39.7237463
-7967,2318,5114,0.0505908057304328,0.0505908057304328,-104.9711696,39.7237463,-104.9705782,39.7237364
-7968,5114,445,0.0485658434846568,0.0485658434846568,-104.9705782,39.7237364,-104.9700104,39.7237429
-7969,445,4713,0.0498146803357513,0.0498146803357513,-104.9700104,39.7237429,-104.969428,39.7237496
-7970,4713,6546,0.0983637452954902,0.0983637452954902,-104.969428,39.7237496,-104.9682779,39.7237562
-7971,6546,6547,0.0998347883215936,0.0998347883215936,-104.9682779,39.7237562,-104.9671106,39.7237629
-7973,5411,3144,0.088816521791746,0.088816521791746,-104.9658231,39.7237695,-104.9647846,39.7237695
-7974,3144,3916,0.112464236744585,0.112464236744585,-104.9647846,39.7237695,-104.9634696,39.7237721
-7976,6332,6548,0.108272865647673,0.108272865647673,-104.9836195,39.7241279,-104.9823535,39.7241259
-7977,6548,3156,0.104441457482765,0.104441457482765,-104.9823535,39.7241259,-104.9811324,39.7241137
-7978,3156,4975,0.102775440582403,0.102775440582403,-104.9811324,39.7241137,-104.9799308,39.7241005
-7979,4975,6549,0.100365138716245,0.100365138716245,-104.9799308,39.7241005,-104.9787573,39.7240931
-7980,6549,6550,0.102792800397101,0.102792800397101,-104.9787573,39.7240931,-104.9775557,39.7240716
-7982,6526,5047,0.0492847670519182,0.0492847670519182,-104.9769714,39.7240796,-104.9763952,39.7240866
-7983,5047,6551,0.0975745067522553,0.0975745067522553,-104.9763952,39.7240866,-104.9752545,39.7240698
-17653,9285,10141,0.0935043743671756,0.0935043743671756,-104.9695286,39.7796372,-104.9684346,39.7796533
-7984,6551,5065,0.0520838428726065,0.0520838428726065,-104.9752545,39.7240698,-104.9746455,39.7240692
-7985,5065,987,0.0487655351272014,0.0487655351272014,-104.9746455,39.7240692,-104.9740753,39.7240686
-7987,6552,6553,0.11141163822183,0.11141163822183,-104.9406129,39.7243416,-104.9393102,39.724345
-7988,6553,6554,0.0931288050453943,0.0931288050453943,-104.9393102,39.724345,-104.9382214,39.724358
-7989,6554,6555,0.0954267012259227,0.0954267012259227,-104.9382214,39.724358,-104.9371056,39.724358
-7990,6555,6556,0.0932230978560399,0.0932230978560399,-104.9371056,39.724358,-104.9360156,39.7243514
-7991,6556,2018,0.096637647678534,0.096637647678534,-104.9360156,39.7243514,-104.9348857,39.7243603
-7992,2018,2008,0.0302895913994428,0.0302895913994428,-104.9348857,39.7243603,-104.9345317,39.7243519
-7993,2008,6557,0.0614415106208342,0.0614415106208342,-104.9345317,39.7243519,-104.9338133,39.7243478
-7995,2764,6558,0.0940583318372542,0.0940583318372542,-104.9327137,39.724358,-104.9316139,39.7243581
-7996,6558,2268,0.0933570415002435,0.0933570415002435,-104.9316139,39.7243581,-104.9305223,39.7243581
-7998,5192,6559,0.0436786412585742,0.0436786412585742,-104.9874942,39.724123,-104.9869835,39.7241266
-7999,6559,6560,0.0106994466158069,0.0106994466158069,-104.9869835,39.7241266,-104.9868584,39.7241275
-8002,6562,6563,0.0505000952437127,0.0505000952437127,-104.9856207,39.7241273,-104.9850303,39.7241197
-8004,3018,6564,0.0487830282291943,0.0487830282291943,-104.9780672,39.7547969,-104.9784697,39.7551079
-8005,6564,4383,0.0508423763728808,0.0508423763728808,-104.9784697,39.7551079,-104.9788891,39.7554321
-8006,4383,6565,0.0576100244421376,0.0576100244421376,-104.9788891,39.7554321,-104.9793644,39.7557994
-8008,6566,6567,0.00412306976586438,0.00412306976586438,-104.9797454,39.7560938,-104.9797794,39.7561201
-8009,6567,6568,0.0539582974681531,0.0539582974681531,-104.9797794,39.7561201,-104.9802246,39.7564641
-8010,6568,6569,0.0519961096093482,0.0519961096093482,-104.9802246,39.7564641,-104.9806536,39.7567956
-8011,6569,6570,0.0542246799430147,0.0542246799430147,-104.9806536,39.7567956,-104.981101,39.7571413
-8012,6570,6571,0.0518803862854092,0.0518803862854092,-104.981101,39.7571413,-104.981529,39.7574721
-17654,10141,10140,0.10337885268614,0.10337885268614,-104.9684346,39.7796533,-104.967225,39.7796681
-8013,6571,6572,0.0555098728995741,0.0555098728995741,-104.981529,39.7574721,-104.981987,39.757826
-8014,6572,6573,0.0518861583127315,0.0518861583127315,-104.981987,39.757826,-104.9824151,39.7581568
-8015,6573,6574,0.0518860343451018,0.0518860343451018,-104.9824151,39.7581568,-104.9828432,39.7584876
-8016,6574,6575,0.0508332520538339,0.0508332520538339,-104.9828432,39.7584876,-104.9832626,39.7588117
-8017,6575,6576,0.0544506518702307,0.0544506518702307,-104.9832626,39.7588117,-104.9837118,39.7591589
-8018,6576,6176,0.0529383120108553,0.0529383120108553,-104.9837118,39.7591589,-104.9841486,39.7594964
-8019,6176,6577,0.0529043310628525,0.0529043310628525,-104.9841486,39.7594964,-104.9845851,39.7598337
-8020,6577,3307,0.0513720664630444,0.0513720664630444,-104.9845851,39.7598337,-104.985009,39.7601612
-8021,3307,6578,0.0555027664653656,0.0555027664653656,-104.985009,39.7601612,-104.9854669,39.7605151
-8022,6578,6579,0.0497858933197237,0.0497858933197237,-104.9854669,39.7605151,-104.9858777,39.7608325
-8026,916,6582,0.0644004913493865,0.0644004913493865,-104.9874133,39.7320545,-104.9881664,39.732053
-8027,6582,6583,0.0568408799781512,0.0568408799781512,-104.9881664,39.732053,-104.9888311,39.7320532
-8028,6583,6584,0.122686442934717,0.122686442934717,-104.9888311,39.7320532,-104.9902658,39.7320547
-8029,6584,6585,0.119086225858405,0.119086225858405,-104.9902658,39.7320547,-104.9916584,39.7320541
-8031,4637,6586,0.0681807162053014,0.0681807162053014,-105.0198922,39.7331309,-105.0206647,39.7329791
-8032,6586,4550,0.0899357767109733,0.0899357767109733,-105.0206647,39.7329791,-105.0217163,39.7329917
-8033,4550,6587,0.293817867332518,0.293817867332518,-105.0217163,39.7329917,-105.0251522,39.7329752
-8034,6587,6588,0.104136881172081,0.104136881172081,-105.0251522,39.7329752,-105.0263693,39.7329435
-8035,6588,6589,0.0983651040648428,0.0983651040648428,-105.0263693,39.7329435,-105.0275196,39.7329448
-8036,6589,6129,0.0990923096855932,0.0990923096855932,-105.0275196,39.7329448,-105.0286784,39.7329421
-8037,6129,3972,0.0982639550962464,0.0982639550962464,-105.0286784,39.7329421,-105.0298275,39.7329471
-8038,3972,6590,0.099057650475641,0.099057650475641,-105.0298275,39.7329471,-105.0309859,39.7329468
-17935,10221,8779,0.0167456719913715,0.0167456719913715,-104.9872787,39.7248713,-104.9874745,39.7248723
-8039,6590,1407,0.099982611141039,0.099982611141039,-105.0309859,39.7329468,-105.032155,39.7329341
-8040,1407,6591,0.096574089288832,0.096574089288832,-105.032155,39.7329341,-105.0332843,39.7329428
-8042,5218,3376,0.0125708011673062,0.0125708011673062,-105.0344966,39.7329537,-105.0346426,39.7329669
-8043,3376,3397,0.0411038350876113,0.0411038350876113,-105.0346426,39.7329669,-105.0351232,39.7329603
-8044,3397,6592,0.0474630685655207,0.0474630685655207,-105.0351232,39.7329603,-105.0356782,39.7329656
-8045,6592,5717,0.0112629167716475,0.0112629167716475,-105.0356782,39.7329656,-105.0358099,39.7329669
-8046,5717,5711,0.0353931291626462,0.0353931291626462,-105.0358099,39.7329669,-105.0362237,39.7329601
-8049,6594,6595,0.0372589458613009,0.0372589458613009,-105.0373216,39.7329718,-105.0377569,39.7329864
-8051,6596,6597,0.0491446235593822,0.0491446235593822,-104.996445,39.7320969,-104.9970197,39.732097
-8052,6597,6598,0.0512739101828601,0.0512739101828601,-104.9970197,39.732097,-104.9976193,39.7320971
-8053,6598,6599,0.0445968134228137,0.0445968134228137,-104.9976193,39.7320971,-104.9981408,39.7320938
-8054,6599,6600,0.0456401369039379,0.0456401369039379,-104.9981408,39.7320938,-104.9986745,39.7320904
-8055,6600,252,0.0644261415780049,0.0644261415780049,-104.9986745,39.7320904,-104.9994279,39.7320888
-8056,252,3949,0.0630622102110069,0.0630622102110069,-104.9994279,39.7320888,-105.0001653,39.7320956
-8057,3949,6601,0.0624388506180743,0.0624388506180743,-105.0001653,39.7320956,-105.0008954,39.7320882
-8058,6601,5610,0.057495014751868,0.057495014751868,-105.0008954,39.7320882,-105.0015677,39.7320945
-8059,5610,6602,0.0530621910173341,0.0530621910173341,-105.0015677,39.7320945,-105.0021882,39.7320975
-8060,6602,3731,0.0543021802328704,0.0543021802328704,-105.0021882,39.7320975,-105.0028232,39.7321006
-8061,3731,6603,0.107126213030051,0.107126213030051,-105.0028232,39.7321006,-105.0040758,39.7320862
-8062,6603,4486,0.0992014153017681,0.0992014153017681,-105.0040758,39.7320862,-105.0052345,39.7321295
-8064,302,396,0.456543205648827,0.456543205648827,-104.939982,39.7790462,-104.9347437,39.7798532
-8065,396,6604,0.263692963912388,0.263692963912388,-104.9347437,39.7798532,-104.9316605,39.7797563
-8067,2108,5986,0.103617400145952,0.103617400145952,-104.9269854,39.7788565,-104.9258093,39.7786298
-8068,5986,6605,0.103377873268697,0.103377873268697,-104.9258093,39.7786298,-104.9246358,39.778404
-9343,7304,2051,0.0535709121596095,0.0535709121596095,-104.9680922,39.7020547,-104.9674661,39.7020628
-8070,4763,6169,0.176859243925992,0.176859243925992,-104.9601753,39.7225386,-104.9601619,39.7241291
-8123,6640,6641,0.17629957299909,0.17629957299909,-104.998563,39.7193532,-104.9985621,39.7209387
-8071,6169,6260,0.145538243855646,0.145538243855646,-104.9601619,39.7241291,-104.9613314,39.7250799
-8072,6260,3917,0.186355414418251,0.186355414418251,-104.9613314,39.7250799,-104.963416,39.7245919
-8075,6608,6609,0.216668843775513,0.216668843775513,-104.9221011,39.7367646,-104.9246118,39.7365015
-8076,6609,5988,0.0945207273969085,0.0945207273969085,-104.9246118,39.7365015,-104.9257168,39.7364786
-8077,5988,2122,0.100941576479339,0.100941576479339,-104.9257168,39.7364786,-104.9268972,39.7364673
-8078,2122,6610,0.0983635555045419,0.0983635555045419,-104.9268972,39.7364673,-104.9280463,39.7365084
-8079,6610,6611,0.0970315915473971,0.0970315915473971,-104.9280463,39.7365084,-104.9291809,39.7364935
-8081,6612,6613,0.0935811526066721,0.0935811526066721,-104.9303837,39.7364879,-104.9314781,39.7364838
-8082,6613,2749,0.0990634268639465,0.0990634268639465,-104.9314781,39.7364838,-104.9326365,39.736497
-8083,2749,6614,0.105679418235948,0.105679418235948,-104.9326365,39.736497,-104.9338724,39.736497
-8085,6615,6616,0.101635566171867,0.101635566171867,-104.9349711,39.7364838,-104.9361597,39.7364871
-8086,6616,6617,0.0962607674133666,0.0962607674133666,-104.9361597,39.7364871,-104.9372854,39.7364789
-8087,6617,6618,0.0951534169408166,0.0951534169408166,-104.9372854,39.7364789,-104.9383982,39.7364784
-8088,6618,6619,0.0938879229278784,0.0938879229278784,-104.9383982,39.7364784,-104.9394962,39.7364792
-17940,6560,10223,0.0802385671723254,0.0802385671723254,-104.9868584,39.7241275,-104.9868558,39.7248491
-8090,6620,6621,0.160330485968093,0.160330485968093,-104.9325634,39.6893199,-104.9316943,39.6880425
-8094,6623,1791,0.109097036983099,0.109097036983099,-104.9815624,39.6955402,-104.9807204,39.6948034
-8095,1791,3615,0.039522374569603,0.039522374569603,-104.9807204,39.6948034,-104.9804114,39.6945392
-8096,3615,6624,0.0738542372087066,0.0738542372087066,-104.9804114,39.6945392,-104.9798363,39.6940439
-8097,6624,6625,0.00831390386589708,0.00831390386589708,-104.9798363,39.6940439,-104.9797753,39.6939857
-8098,6625,6626,0.070757439886615,0.070757439886615,-104.9797753,39.6939857,-104.9792691,39.6934825
-8099,6626,6627,0.0728730586061825,0.0728730586061825,-104.9792691,39.6934825,-104.9787159,39.6929842
-8100,6627,5098,0.0960515227378026,0.0960515227378026,-104.9787159,39.6929842,-104.9779272,39.6923695
-8101,5098,6628,0.0550201636939116,0.0550201636939116,-104.9779272,39.6923695,-104.9775188,39.6919873
-8103,6630,239,0.0379460853943731,0.0379460853943731,-104.9769745,39.6914779,-104.9766938,39.6912137
-13573,9130,3,0.109013561390269,0.109013561390269,-105.0161204,39.730571,-105.0152478,39.7298563
-8105,6631,6632,0.0782857815609104,0.0782857815609104,-104.9763643,39.6909232,-104.9757688,39.6903887
-8106,6632,6533,0.166563544591406,0.166563544591406,-104.9757688,39.6903887,-104.9743231,39.6893856
-8108,4496,6633,0.110872689467253,0.110872689467253,-105.0051314,39.787854,-105.006429,39.7878524
-8109,6633,2525,0.333067333185797,0.333067333185797,-105.006429,39.7878524,-105.0101844,39.7886554
-8111,6530,6634,0.0105197308884475,0.0105197308884475,-104.9709294,39.6879413,-104.9709852,39.687857
-9336,7300,4780,0.0501146245066156,0.0501146245066156,-104.9757669,39.7020355,-104.9751815,39.7020519
-8112,6634,6635,2.4458667171276,2.4458667171276,-104.9709852,39.687857,-104.9711364,39.6658611
-8113,6636,3095,0.197330202512711,0.197330202512711,-104.9710271,39.7146913,-104.971013,39.7129167
-8114,3095,3205,0.202310741049047,0.202310741049047,-104.971013,39.7129167,-104.9710252,39.7110973
-8115,3205,6118,0.200935805580311,0.200935805580311,-104.9710252,39.7110973,-104.9710442,39.7092903
-8116,6118,1915,0.200185455389542,0.200185455389542,-104.9710442,39.7092903,-104.971036,39.70749
-8118,6637,5842,0.204932644380513,0.204932644380513,-104.9710805,39.6929591,-104.9710758,39.6911161
-8119,5842,6638,0.194625839062785,0.194625839062785,-104.9710758,39.6911161,-104.9710843,39.6893658
-8121,6639,3724,0.202719550339155,0.202719550339155,-104.9985703,39.7165902,-104.9985724,39.7184133
-8122,3724,6640,0.104515203903702,0.104515203903702,-104.9985724,39.7184133,-104.998563,39.7193532
-8124,6641,2622,0.176067278462879,0.176067278462879,-104.9985621,39.7209387,-104.9985544,39.7225221
-8125,2622,5203,0.176917243967006,0.176917243967006,-104.9985544,39.7225221,-104.9985716,39.7241131
-8126,5203,6232,0.177139986115085,0.177139986115085,-104.9985716,39.7241131,-104.9985893,39.7257061
-8129,6643,6644,0.177268373064057,0.177268373064057,-104.998623,39.7289153,-104.9986313,39.7305095
-8130,6644,6600,0.175826872766799,0.175826872766799,-104.9986313,39.7305095,-104.9986745,39.7320904
-8131,6600,6646,0.177773484713149,0.177773484713149,-104.9986745,39.7320904,-104.9986572,39.7336891
-8133,6647,6648,0.177957472274986,0.177957472274986,-104.998664,39.7352736,-104.9986884,39.7368739
-8134,6648,6649,0.169816854222751,0.169816854222751,-104.9986884,39.7368739,-104.9992032,39.7383489
-8135,6649,6650,0.0183704581232897,0.0183704581232897,-104.9992032,39.7383489,-104.9993525,39.7384677
-8136,6650,6651,0.180283145370232,0.180283145370232,-104.9993525,39.7384677,-104.9999603,39.7400202
-8137,6651,6652,0.0228081566299403,0.0228081566299403,-104.9999603,39.7400202,-104.9999567,39.7402253
-8139,6653,1499,0.197154421185115,0.197154421185115,-105.0448856,39.6967219,-105.0449033,39.6949489
-8140,1499,188,0.204153885319108,0.204153885319108,-105.0449033,39.6949489,-105.0449033,39.6931129
-8141,188,5878,0.159028819712238,0.159028819712238,-105.0449033,39.6931129,-105.045238,39.6917061
-8142,5878,6654,0.24236157922448,0.24236157922448,-105.045238,39.6917061,-105.0452294,39.6895265
-8144,1583,6655,0.303396334779096,0.303396334779096,-105.0452106,39.6881689,-105.0452196,39.6854404
-8145,6656,5874,0.176427569810156,0.176427569810156,-105.0444508,39.7165618,-105.0444942,39.7149755
-8146,5874,6657,0.00810609260917888,0.00810609260917888,-105.0444942,39.7149755,-105.0444802,39.7149034
-8147,6657,6658,0.0470608013663409,0.0470608013663409,-105.0444802,39.7149034,-105.0443368,39.7144948
-8150,6659,6660,0.255748331282284,0.255748331282284,-105.045239,39.700587,-105.045239,39.698287
-8151,6661,6662,0.00688301382680834,0.00688301382680834,-105.0068679,39.6894571,-105.0068682,39.6893952
-8152,6662,6663,0.392909871907801,0.392909871907801,-105.0068682,39.6893952,-105.0068849,39.6858617
-8153,6664,1758,0.130752459577202,0.130752459577202,-105.0073877,39.7075601,-105.0078426,39.7064375
-8154,1758,6314,0.0908112834588078,0.0908112834588078,-105.0078426,39.7064375,-105.0074307,39.7056848
-8155,6314,6665,0.191679756807403,0.191679756807403,-105.0074307,39.7056848,-105.0073877,39.7039613
-8156,6665,763,0.155864734453911,0.155864734453911,-105.0073877,39.7039613,-105.0074463,39.7025603
-8157,763,6668,0.0989081569703109,0.0989081569703109,-105.0074463,39.7025603,-105.007449,39.7016708
-8158,6668,1760,0.0778502447443476,0.0778502447443476,-105.007449,39.7016708,-105.0074982,39.7009717
-8159,1760,6003,0.221657363761595,0.221657363761595,-105.0074982,39.7009717,-105.0065799,39.6991077
-8160,6003,5765,0.101345142024656,0.101345142024656,-105.0065799,39.6991077,-105.0065723,39.6981963
-8161,5765,4032,0.0976983696193598,0.0976983696193598,-105.0065723,39.6981963,-105.0065466,39.6973179
-8162,4032,6669,0.0654151166199609,0.0654151166199609,-105.0065466,39.6973179,-105.0065809,39.6967302
-8164,2301,1759,0.0929594689620956,0.0929594689620956,-105.0067097,39.6957792,-105.0067133,39.6949432
-8165,1759,150,0.2063607315498,0.2063607315498,-105.0067133,39.6949432,-105.0067304,39.6930874
-8166,150,1738,0.199773882802826,0.199773882802826,-105.0067304,39.6930874,-105.0067562,39.6912909
-8168,1953,3100,0.166887359049361,0.166887359049361,-104.9394047,39.7138976,-104.9377781,39.7130688
-8170,370,2529,0.0016410050164606,0.0016410050164606,-105.0298446,39.7379436,-105.0298418,39.737929
-8171,2529,6670,0.0654370448512421,0.0654370448512421,-105.0298418,39.737929,-105.029987,39.7373512
-8200,6684,1172,0.140728922414785,0.140728922414785,-104.9499154,39.7619564,-104.9499105,39.763222
-8172,6670,1937,0.344573874886115,0.344573874886115,-105.029987,39.7373512,-105.0260468,39.738001
-8174,6671,6672,0.176399723080376,0.176399723080376,-104.9362703,39.7162376,-104.9362682,39.7146512
-8176,3101,6673,0.188864615641403,0.188864615641403,-104.9362596,39.7130732,-104.9362583,39.7113747
-8178,4227,1805,0.201844384843532,0.201844384843532,-104.936211,39.696598,-104.9362246,39.6947828
-8179,1805,6674,0.203096969054999,0.203096969054999,-104.9362246,39.6947828,-104.9362004,39.6929564
-8180,6674,5847,0.205632777843381,0.205632777843381,-104.9362004,39.6929564,-104.9362004,39.6911071
-8181,5847,6675,0.197984723567939,0.197984723567939,-104.9362004,39.6911071,-104.9362112,39.6893266
-8183,6676,4226,0.190839047917349,0.190839047917349,-104.936428,39.698394,-104.9365695,39.6966812
-8185,4212,1268,0.185384243862507,0.185384243862507,-105.018373,39.7168584,-105.0203557,39.7175319
-8187,6677,2875,0.129732620530101,0.129732620530101,-104.9498557,39.7837786,-104.9498484,39.7849453
-8188,2875,6678,0.138723736947104,0.138723736947104,-104.9498484,39.7849453,-104.9498214,39.7861927
-8189,6678,6679,0.13144235424121,0.13144235424121,-104.9498214,39.7861927,-104.9498986,39.7873733
-8190,6679,6680,0.782596772143326,0.782596772143326,-104.9498986,39.7873733,-104.948752,39.794356
-8191,3575,5642,0.141762411979774,0.141762411979774,-104.9499292,39.7544371,-104.9499292,39.755712
-8192,5642,4347,0.140039066988463,0.140039066988463,-104.9499292,39.755712,-104.9499266,39.7569714
-8193,4347,6345,0.13859354874742,0.13859354874742,-104.9499266,39.7569714,-104.9499239,39.7582178
-8194,6345,3049,0.140317315615912,0.140317315615912,-104.9499239,39.7582178,-104.9499198,39.7594797
-8195,3049,3024,0.0669551847418331,0.0669551847418331,-104.9499198,39.7594797,-104.9499105,39.7600818
-8196,3024,6681,0.0663747225163875,0.0663747225163875,-104.9499105,39.7600818,-104.9499172,39.7606787
-8197,6681,6682,0.00550527045183645,0.00550527045183645,-104.9499172,39.7606787,-104.9499185,39.7607282
-8198,6682,6683,0.122014480736259,0.122014480736259,-104.9499185,39.7607282,-104.9499154,39.7618255
-8199,6683,6684,0.0145554158979999,0.0145554158979999,-104.9499154,39.7618255,-104.9499154,39.7619564
-8201,1172,892,0.137892873302074,0.137892873302074,-104.9499105,39.763222,-104.9499118,39.7644621
-8202,892,4475,0.139838739747675,0.139838739747675,-104.9499118,39.7644621,-104.9499118,39.7657197
-8203,4475,2777,0.135724572944392,0.135724572944392,-104.9499118,39.7657197,-104.9499105,39.7669403
-8204,2777,5266,0.129198654341627,0.129198654341627,-104.9499105,39.7669403,-104.9499038,39.7681022
-8205,5266,6685,0.122514628608539,0.122514628608539,-104.9499038,39.7681022,-104.9499024,39.769204
-8206,6685,6686,0.20769100942942,0.20769100942942,-104.9499024,39.769204,-104.9498944,39.7710718
-8207,6686,6357,0.202692590161251,0.202692590161251,-104.9498944,39.7710718,-104.949826,39.7728939
-8208,6357,2390,0.107324644883127,0.107324644883127,-104.949826,39.7728939,-104.9498085,39.773859
-8209,2390,6687,0.139594845742255,0.139594845742255,-104.9498085,39.773859,-104.9498032,39.7751144
-8210,6687,6688,0.0752686220951058,0.0752686220951058,-104.9498032,39.7751144,-104.9497992,39.7757913
-8211,6688,749,0.0665961818211898,0.0665961818211898,-104.9497992,39.7757913,-104.9498045,39.7763902
-8212,749,1567,0.140763317861176,0.140763317861176,-104.9498045,39.7763902,-104.9497965,39.7776561
-8213,1567,6689,0.140174033607804,0.140174033607804,-104.9497965,39.7776561,-104.9497884,39.7789167
-8215,6691,696,0.200953877059722,0.200953877059722,-104.9500562,39.7401702,-104.9500677,39.7419774
-8216,696,6692,0.202493921890496,0.202493921890496,-104.9500677,39.7419774,-104.9500467,39.7437984
-8218,508,6693,0.0440506867837982,0.0440506867837982,-104.9492875,39.7477337,-104.9494162,39.7481173
-8219,6694,1202,0.170408371052522,0.170408371052522,-104.9495001,39.7256083,-104.9495101,39.7271408
-8220,1202,6695,0.022095029398504,0.022095029398504,-104.9495101,39.7271408,-104.9495082,39.7273395
-8221,6695,3781,0.199196539116323,0.199196539116323,-104.9495082,39.7273395,-104.9494979,39.7291309
-8222,3781,6696,0.154646276165852,0.154646276165852,-104.9494979,39.7291309,-104.9494801,39.7305216
-8224,951,6697,0.162889491053556,0.162889491053556,-104.9494887,39.732119,-104.949511,39.7335838
-8225,6697,4890,0.17202029430472,0.17202029430472,-104.949511,39.7335838,-104.9494864,39.7351307
-8226,4890,6698,0.182585439334225,0.182585439334225,-104.9494864,39.7351307,-104.9495133,39.7367726
-8227,6698,5488,0.173629132461636,0.173629132461636,-104.9495133,39.7367726,-104.9494922,39.738334
-8230,6700,6701,0.054263196932367,0.054263196932367,-104.9873849,39.7414911,-104.9878331,39.7418366
-8231,6701,5807,0.103685962200744,0.103685962200744,-104.9878331,39.7418366,-104.9886895,39.7424968
-8232,5807,6702,0.106632774624389,0.106632774624389,-104.9886895,39.7424968,-104.9895702,39.7431758
-8233,6702,6703,0.0962060876195832,0.0962060876195832,-104.9895702,39.7431758,-104.9903648,39.7437884
-8234,6703,5959,0.00690380150934747,0.00690380150934747,-104.9903648,39.7437884,-104.9904219,39.7438323
-8235,5959,6704,0.00415729025946559,0.00415729025946559,-104.9904219,39.7438323,-104.9904562,39.7438588
-8236,6704,3004,0.101332185729619,0.101332185729619,-104.9904562,39.7438588,-104.9912932,39.744504
-8237,3004,4395,0.106412326585027,0.106412326585027,-104.9912932,39.744504,-104.9921721,39.7451816
-8238,4395,6705,0.103936208820228,0.103936208820228,-104.9921721,39.7451816,-104.9930306,39.7458434
-8239,6705,6706,0.108885043469445,0.108885043469445,-104.9930306,39.7458434,-104.99393,39.7465367
-8240,6706,6707,0.0530572853327784,0.0530572853327784,-104.99393,39.7465367,-104.9943683,39.7468745
-8241,6707,6708,0.0508918154467618,0.0508918154467618,-104.9943683,39.7468745,-104.9947886,39.7471986
-8242,6708,6709,0.103982459974641,0.103982459974641,-104.9947886,39.7471986,-104.9956475,39.7478607
-8243,6709,6710,0.100220871190445,0.100220871190445,-104.9956475,39.7478607,-104.9964754,39.7484988
-8244,6710,6711,0.00631643031082491,0.00631643031082491,-104.9964754,39.7484988,-104.9965276,39.748539
-8245,6711,6188,0.105471969629518,0.105471969629518,-104.9965276,39.748539,-104.9973988,39.7492106
-8246,6188,6712,0.0552929480053166,0.0552929480053166,-104.9973988,39.7492106,-104.9978555,39.7495627
-8247,6712,6713,0.051155648874288,0.051155648874288,-104.9978555,39.7495627,-104.9982781,39.7498884
-8249,4495,6714,0.112097289917407,0.112097289917407,-105.0051056,39.7870428,-105.0064173,39.7870612
-8250,6714,1079,0.0913714399600763,0.0913714399600763,-105.0064173,39.7870612,-105.0074815,39.7871418
-8251,1079,2524,0.245312559433029,0.245312559433029,-105.0074815,39.7871418,-105.0101975,39.7878569
-8253,6006,6251,0.204148069385731,0.204148069385731,-105.0169911,39.700417,-105.0170083,39.6985811
-8254,6251,6715,0.203065667560916,0.203065667560916,-105.0170083,39.6985811,-105.0169992,39.6967549
-8256,2935,6716,0.266313303297407,0.266313303297407,-105.0169377,39.6883193,-105.0167173,39.6859303
-8257,6416,3741,0.135496222887927,0.135496222887927,-105.0172314,39.7170829,-105.0170254,39.7158747
-8258,3741,5854,0.117997896305679,0.117997896305679,-105.0170254,39.7158747,-105.0170084,39.7148136
-8260,2305,161,0.314948131318509,0.314948131318509,-105.0165019,39.6959725,-105.0165323,39.6931402
-8263,6717,3071,0.175732613824838,0.175732613824838,-104.9425532,39.7146491,-104.9425505,39.7130687
-8264,3071,6718,0.173767654321711,0.173767654321711,-104.9425505,39.7130687,-104.9425631,39.711506
-8265,6718,6100,0.243539432543733,0.243539432543733,-104.9425631,39.711506,-104.9425586,39.7093158
-8267,3290,98,0.422419964097428,0.422419964097428,-104.9444349,39.7038735,-104.9431816,39.700199
-8269,4373,2854,0.205542196291208,0.205542196291208,-105.0015169,39.7015972,-105.0038253,39.7010848
-8271,6719,1596,0.0969388330111528,0.0969388330111528,-105.0125794,39.7006019,-105.0135751,39.701018
-8273,118,6721,0.0966297992771619,0.0966297992771619,-105.0112228,39.7301878,-105.0112289,39.7310568
-8274,6721,6722,0.0414535753801991,0.0414535753801991,-105.0112289,39.7310568,-105.0112278,39.7314296
-8276,2311,6580,0.108271978342533,0.108271978342533,-105.0112958,39.7314875,-105.0113223,39.732461
-8277,6580,6723,0.0197325066377101,0.0197325066377101,-105.0113223,39.732461,-105.0113508,39.7326371
-8301,4041,6740,0.178573713835442,0.178573713835442,-105.0263295,39.7181459,-105.0263463,39.7197518
-8302,6740,1829,0.177333893618754,0.177333893618754,-105.0263463,39.7197518,-105.0263496,39.7213466
-8279,4433,6724,0.324356944785499,0.324356944785499,-105.0109506,39.7174666,-105.0120852,39.72025
-8282,6725,6088,0.0237314605310015,0.0237314605310015,-105.0111475,39.760596,-105.0111515,39.7608094
-8283,6088,4822,0.0875664870066569,0.0875664870066569,-105.0111515,39.7608094,-105.0111481,39.7615969
-8284,4822,6726,0.0475371228844605,0.0475371228844605,-105.0111481,39.7615969,-105.0111753,39.7620239
-8285,6726,4515,0.133316815943664,0.133316815943664,-105.0111753,39.7620239,-105.0111891,39.7632228
-8286,4515,5237,0.132189806591607,0.132189806591607,-105.0111891,39.7632228,-105.0111823,39.7644116
-9507,2581,5179,0.178384896285487,0.178384896285487,-105.0337024,39.7229256,-105.0337195,39.7245298
-8287,5237,6727,0.137381332135233,0.137381332135233,-105.0111823,39.7644116,-105.0111822,39.7656471
-8288,6727,6728,0.132866818946611,0.132866818946611,-105.0111822,39.7656471,-105.0111824,39.766842
-8289,6728,1673,0.133389434002772,0.133389434002772,-105.0111824,39.766842,-105.0111824,39.7680416
-8290,1673,6729,0.137304160443328,0.137304160443328,-105.0111824,39.7680416,-105.0111874,39.7692764
-8292,6730,6731,0.0127908749904874,0.0127908749904874,-105.015836,39.7589269,-105.0159724,39.7589742
-8324,6753,6754,0.0516246355995179,0.0516246355995179,-105.0275713,39.7655797,-105.0275819,39.7660439
-8293,6731,6734,0.253997048781863,0.253997048781863,-105.0159724,39.7589742,-105.0187898,39.7597001
-8294,6734,6735,0.103152527560213,0.103152527560213,-105.0187898,39.7597001,-105.0196661,39.7603379
-8296,6736,6737,0.0131672047429292,0.0131672047429292,-105.0202265,39.7608392,-105.0203579,39.760901
-8298,4636,5383,0.185495216645111,0.185495216645111,-105.0191455,39.732286,-105.0185003,39.7338787
-8300,5972,4041,0.174731707729605,0.174731707729605,-105.0263295,39.7165745,-105.0263295,39.7181459
-8303,1829,6741,0.102538685907791,0.102538685907791,-105.0263496,39.7213466,-105.0263624,39.7222687
-8304,4575,6440,0.137081553799117,0.137081553799117,-105.0268099,39.7414867,-105.0268058,39.7427195
-8305,6440,5291,0.136014333235461,0.136014333235461,-105.0268058,39.7427195,-105.0268109,39.7439427
-8306,5291,6742,0.135023999424587,0.135023999424587,-105.0268109,39.7439427,-105.0268109,39.745157
-8307,6742,10,0.133312225882616,0.133312225882616,-105.0268109,39.745157,-105.0268316,39.7463558
-8308,10,6394,0.135032006709,0.135032006709,-105.0268316,39.7463558,-105.0268144,39.7475701
-8309,6394,6743,0.132451340826744,0.132451340826744,-105.0268144,39.7475701,-105.0268304,39.7487612
-8310,6743,6744,0.135765849385072,0.135765849385072,-105.0268304,39.7487612,-105.0268132,39.7499821
-8311,6744,6745,0.133823531129847,0.133823531129847,-105.0268132,39.7499821,-105.0268172,39.7511856
-8313,6746,6747,0.134513077577228,0.134513077577228,-105.0268257,39.752413,-105.0268211,39.7536227
-8314,6747,6748,0.134201163774105,0.134201163774105,-105.0268211,39.7536227,-105.0268206,39.7548296
-8316,6749,1938,0.0948580215175547,0.0948580215175547,-105.0267907,39.738975,-105.0265344,39.738145
-8318,307,5887,0.0912856383131267,0.0912856383131267,-105.0279141,39.763121,-105.0276119,39.7639084
-8319,5887,6750,0.00721526462075332,0.00721526462075332,-105.0276119,39.7639084,-105.0275762,39.7639672
-8320,6750,6751,0.0269156344716724,0.0269156344716724,-105.0275762,39.7639672,-105.0275693,39.7642092
-8323,6752,6753,0.0510955164610192,0.0510955164610192,-105.0275758,39.7651202,-105.0275713,39.7655797
-8325,6754,6755,0.0510906826304937,0.0510906826304937,-105.0275819,39.7660439,-105.0275923,39.7665033
-8326,6755,6756,0.0511615632316368,0.0511615632316368,-105.0275923,39.7665033,-105.0275956,39.7669634
-8327,6756,1661,0.0519510824904343,0.0519510824904343,-105.0275956,39.7669634,-105.027599,39.7674306
-8328,1661,6758,0.0509873448397052,0.0509873448397052,-105.027599,39.7674306,-105.0275911,39.7678891
-8329,6758,6759,0.0522106080921687,0.0522106080921687,-105.0275911,39.7678891,-105.027583,39.7683586
-8330,6759,6760,0.0506887592311432,0.0506887592311432,-105.027583,39.7683586,-105.0276064,39.7688141
-18752,5186,5654,0.105380231545906,0.105380231545906,-105.0389187,39.7245383,-105.0389235,39.725486
-8331,6760,6761,0.0573063184317804,0.0573063184317804,-105.0276064,39.7688141,-105.0276173,39.7693294
-8333,6762,6763,0.0501245455122697,0.0501245455122697,-105.0276181,39.7698189,-105.0275974,39.7702694
-8334,6763,6764,0.0489376044154541,0.0489376044154541,-105.0275974,39.7702694,-105.0276005,39.7707095
-8337,6766,6767,0.0490039328328154,0.0490039328328154,-105.0275892,39.7716046,-105.0275913,39.7720453
-8338,6767,6768,0.0513498171240697,0.0513498171240697,-105.0275913,39.7720453,-105.0275913,39.7725071
-8339,6768,6769,0.0498709246005866,0.0498709246005866,-105.0275913,39.7725071,-105.0275913,39.7729556
-8341,5533,6770,0.292387787290413,0.292387787290413,-105.027737,39.774038,-105.0275847,39.7766649
-8343,2972,6771,0.121066844508317,0.121066844508317,-105.0268526,39.7584761,-105.0268698,39.7595648
-8344,6771,6093,0.143799158144466,0.143799158144466,-105.0268698,39.7595648,-105.0268612,39.760858
-8345,6093,6772,0.01594646132934,0.01594646132934,-105.0268612,39.760858,-105.0268634,39.7610014
-8346,6772,6773,0.00797333604469033,0.00797333604469033,-105.0268634,39.7610014,-105.0268646,39.7610731
-8347,6773,6774,0.00589372782719237,0.00589372782719237,-105.0268646,39.7610731,-105.0268654,39.7611261
-8349,6775,6776,0.135681018337986,0.135681018337986,-105.0267779,39.7766583,-105.0267719,39.7778785
-8350,6776,2490,0.131411131535027,0.131411131535027,-105.0267719,39.7778785,-105.0267778,39.7790603
-8351,2490,2835,0.135427320939223,0.135427320939223,-105.0267778,39.7790603,-105.0267549,39.7802781
-8353,4067,6052,0.133451561970317,0.133451561970317,-105.0276017,39.7844198,-105.0275763,39.7856198
-8354,6052,5792,0.201431723471221,0.201431723471221,-105.0275763,39.7856198,-105.0275871,39.7874313
-8356,6777,6778,0.137939265537406,0.137939265537406,-105.0265007,39.7560347,-105.0265093,39.7572752
-8358,6658,6779,0.0952206682824548,0.0952206682824548,-105.0443368,39.7144948,-105.0454279,39.7143249
-8359,6779,1328,0.20245506080321,0.20245506080321,-105.0454279,39.7143249,-105.0473907,39.7133074
-9582,1393,7408,0.0523989189771459,0.0523989189771459,-105.0324691,39.7165619,-105.0330817,39.7165583
-8360,1328,6780,0.24344994454685,0.24344994454685,-105.0473907,39.7133074,-105.0484853,39.7112864
-8362,6781,6338,0.132299767169153,0.132299767169153,-104.9684019,39.7570371,-104.9684621,39.758226
-18540,10312,7538,0.710682259466036,0.710682259466036,-105.0532415,39.7643533,-105.0449269,39.7643759
-8363,6338,3026,0.142960379522958,0.142960379522958,-104.9684621,39.758226,-104.9684276,39.7595114
-8364,3026,6782,0.131957413991529,0.131957413991529,-104.9684276,39.7595114,-104.9684183,39.7606981
-8365,6782,6783,0.00572653872195823,0.00572653872195823,-104.9684183,39.7606981,-104.9684183,39.7607496
-8366,6783,6784,0.13893806084239,0.13893806084239,-104.9684183,39.7607496,-104.9684183,39.7619991
-8367,6784,1155,0.138805738856212,0.138805738856212,-104.9684183,39.7619991,-104.9684118,39.7632474
-8368,1155,876,0.139884571461894,0.139884571461894,-104.9684118,39.7632474,-104.968419,39.7645054
-8370,4464,2784,0.134142589801556,0.134142589801556,-104.9684223,39.7657497,-104.968405,39.766956
-8371,2784,5255,0.132457483790055,0.132457483790055,-104.968405,39.766956,-104.9684137,39.7681472
-8372,5255,4727,0.21307200925813,0.21307200925813,-104.9684137,39.7681472,-104.9683879,39.7700633
-8373,4727,5126,0.0748266761428759,0.0748266761428759,-104.9683879,39.7700633,-104.9683965,39.7707362
-8374,5126,6785,0.0660204248306932,0.0660204248306932,-104.9683965,39.7707362,-104.968405,39.7713299
-8375,6785,4284,0.173603246809035,0.173603246809035,-104.968405,39.7713299,-104.9683885,39.7728911
-8377,6786,6787,0.142696164770821,0.142696164770821,-104.9677841,39.7356489,-104.9684521,39.7368249
-8379,5475,6788,0.1766899367412,0.1766899367412,-104.9684271,39.7384126,-104.9684027,39.7400015
-8380,6788,6789,0.178262795240798,0.178262795240798,-104.9684027,39.7400015,-104.9684201,39.7416046
-8381,6789,669,0.0038695834466259,0.0038695834466259,-104.9684201,39.7416046,-104.9684201,39.7416394
-8382,669,6790,0.00298242718157566,0.00298242718157566,-104.9684201,39.7416394,-104.9684215,39.7416662
-8383,6790,6791,0.175654700740653,0.175654700740653,-104.9684215,39.7416662,-104.9684196,39.7432459
-8385,4603,6493,0.141540356779896,0.141540356779896,-104.9684176,39.7448114,-104.968414,39.7460843
-8386,6493,6795,0.235592097571248,0.235592097571248,-104.968414,39.7460843,-104.9683834,39.7482029
-8387,6795,6796,0.135380255100289,0.135380255100289,-104.9683834,39.7482029,-104.9683794,39.7494204
-8388,6796,6797,0.00458123097756658,0.00458123097756658,-104.9683794,39.7494204,-104.9683794,39.7494616
-8389,6797,6798,0.00459235047115107,0.00459235047115107,-104.9683794,39.7494616,-104.9683794,39.7495029
-8390,6798,6799,0.135291654892361,0.135291654892361,-104.9683794,39.7495029,-104.968374,39.7507196
-8391,6799,6800,0.141019064418211,0.141019064418211,-104.968374,39.7507196,-104.968366,39.7519878
-8392,6800,821,0.136459904501488,0.136459904501488,-104.968366,39.7519878,-104.9683443,39.7532149
-8393,821,3562,0.138377698701616,0.138377698701616,-104.9683443,39.7532149,-104.9683703,39.7544592
-8395,5772,516,0.0304460136124682,0.0304460136124682,-104.969071,39.787876,-104.968998,39.788144
-8397,6411,6801,0.0202183008206165,0.0202183008206165,-104.9688032,39.7903462,-104.968859,39.7905229
-8398,6802,469,0.0770276556079661,0.0770276556079661,-104.9681122,39.7183532,-104.9681294,39.7190458
-8399,469,4171,0.115648628347006,0.115648628347006,-104.9681294,39.7190458,-104.9681062,39.7200857
-8400,4171,6803,0.135804309767261,0.135804309767261,-104.9681062,39.7200857,-104.9680977,39.721307
-8401,6803,4756,0.071946790437269,0.071946790437269,-104.9680977,39.721307,-104.9681062,39.721954
-8403,6804,6805,0.127899734301329,0.127899734301329,-104.9688098,39.7807867,-104.968799,39.7819369
-8405,6803,4172,0.13716080109606,0.13716080109606,-104.9680977,39.721307,-104.9679063,39.7200823
-8406,4172,470,0.118198242572908,0.118198242572908,-104.9679063,39.7200823,-104.9678891,39.7190194
-8407,470,6806,0.0738815709398357,0.0738815709398357,-104.9678891,39.7190194,-104.9678805,39.718355
-8410,6807,6808,0.0966312020179035,0.0966312020179035,-104.9241221,39.7053959,-104.9237959,39.7045639
-8411,6808,6809,0.078738376832051,0.078738376832051,-104.9237959,39.7045639,-104.9237358,39.7038573
-8412,6809,3373,0.430297684252256,0.430297684252256,-104.9237358,39.7038573,-104.9252722,39.7001725
-8414,6810,6811,0.203442237788957,0.203442237788957,-104.9246456,39.6893613,-104.9246456,39.6875317
-8415,1476,6812,0.245653934383614,0.245653934383614,-104.9233668,39.695061,-104.9243796,39.6929938
-8416,6812,6813,0.412460631108446,0.412460631108446,-104.9243796,39.6929938,-104.9254353,39.6893745
-8418,6814,6815,0.174359151043162,0.174359151043162,-104.9246289,39.7162454,-104.9246127,39.7146774
-8419,6815,3109,0.176366303019304,0.176366303019304,-104.9246127,39.7146774,-104.9246115,39.7130913
-8420,3109,6816,0.193801807541949,0.193801807541949,-104.9246115,39.7130913,-104.9246085,39.7113484
-8421,6816,6817,0.0198367109802725,0.0198367109802725,-104.9246085,39.7113484,-104.9246161,39.7111701
-8422,6817,6104,0.210336723998741,0.210336723998741,-104.9246161,39.7111701,-104.9246113,39.7092785
-8424,6818,4370,0.0431318765981996,0.0431318765981996,-105.001122,39.704272,-105.0014826,39.7040009
-8426,2496,1451,0.0985317859583251,0.0985317859583251,-105.0026756,39.7039481,-105.0038258,39.7039943
-8427,1451,2853,0.10657030011201,0.10657030011201,-105.0038258,39.7039943,-105.0050712,39.7039722
-8428,2853,6819,0.0983314928072937,0.0983314928072937,-105.0050712,39.7039722,-105.0062204,39.7039547
-8429,6819,6665,0.0998633676523793,0.0998633676523793,-105.0062204,39.7039547,-105.0073877,39.7039613
-8430,6665,6820,0.100599054724802,0.100599054724802,-105.0073877,39.7039613,-105.0085636,39.7039679
-8431,6820,3821,0.10490937410086,0.10490937410086,-105.0085636,39.7039679,-105.0097899,39.7039631
-8432,3821,5897,0.102058293498771,0.102058293498771,-105.0097899,39.7039631,-105.0109828,39.7039743
-9656,6387,7441,0.131317068143471,0.131317068143471,-105.036926,39.7475739,-105.0369584,39.7487546
-8433,5897,6821,0.102847878519627,0.102847878519627,-105.0109828,39.7039743,-105.0121846,39.7039499
-8435,1593,1644,0.201270216910902,0.201270216910902,-105.0133176,39.7039764,-105.0156693,39.7039235
-8436,1644,6822,0.105737900324602,0.105737900324602,-105.0156693,39.7039235,-105.0169053,39.7039235
-8437,6822,4218,0.0969375306307301,0.0969375306307301,-105.0169053,39.7039235,-105.0180383,39.7039103
-8438,4218,6823,0.101326281592707,0.101326281592707,-105.0180383,39.7039103,-105.0192227,39.7039037
-8439,6823,198,0.0969958932624718,0.0969958932624718,-105.0192227,39.7039037,-105.0203557,39.7038707
-8440,198,2927,0.100607212393453,0.100607212393453,-105.0203557,39.7038707,-105.0215316,39.7038839
-8441,2927,5309,0.0991277824360909,0.0991277824360909,-105.0215316,39.7038839,-105.0226903,39.7038773
-8442,5309,1465,0.0998634796625755,0.0998634796625755,-105.0226903,39.7038773,-105.0238576,39.7038839
-8445,1176,6825,0.181656671362534,0.181656671362534,-104.9973407,39.7040997,-104.9991903,39.7049022
-8447,6826,6827,0.865493060175873,0.865493060175873,-105.0432124,39.7042603,-105.0532477,39.7032733
-8448,3119,6828,0.283790323154486,0.283790323154486,-104.9350503,39.6919459,-104.931734,39.691987
-8450,3496,6829,0.0523352446605108,0.0523352446605108,-104.9500131,39.6983858,-104.9506246,39.6983982
-8451,6829,6830,0.0732524388814314,0.0732524388814314,-104.9506246,39.6983982,-104.9512088,39.6979166
-8452,6830,3663,0.0505681915693724,0.0505681915693724,-104.9512088,39.6979166,-104.9513786,39.697481
-8453,3663,4996,0.130580462322132,0.130580462322132,-104.9513786,39.697481,-104.9523584,39.6965806
-8455,6831,6247,0.199011000686174,0.199011000686174,-105.0402684,39.7003444,-105.0402512,39.6985547
-8456,6247,6832,0.199751548882436,0.199751548882436,-105.0402512,39.6985547,-105.0402255,39.6967584
-8458,1495,184,0.20195222577189,0.20195222577189,-105.0402341,39.6949489,-105.0402341,39.6931327
-8459,184,1712,0.203399715506048,0.203399715506048,-105.0402341,39.6931327,-105.0400367,39.6913098
-8460,1712,6833,0.205087968397347,0.205087968397347,-105.0400367,39.6913098,-105.0400351,39.6894654
-8461,6833,1578,0.200928350075194,0.200928350075194,-105.0400351,39.6894654,-105.0401129,39.6876594
-8463,6835,5869,0.177962583931279,0.177962583931279,-105.0397191,39.7165613,-105.0397017,39.7149609
-8464,5869,1321,0.176970219219333,0.176970219219333,-105.0397017,39.7149609,-105.0396887,39.7133694
-8465,1321,1377,0.177352733194459,0.177352733194459,-105.0396887,39.7133694,-105.0397191,39.7117746
-8466,1377,6836,0.0602165463968322,0.0602165463968322,-105.0397191,39.7117746,-105.0397105,39.7112331
-8467,6836,6837,0.0823104914192672,0.0823104914192672,-105.0397105,39.7112331,-105.0397534,39.7104936
-8468,6837,4694,0.116790101887087,0.116790101887087,-105.0397534,39.7104936,-105.0397105,39.7094438
-18756,1322,1378,0.175845021978343,0.175845021978343,-105.0402863,39.7133654,-105.0402944,39.711784
-8469,4694,6838,0.160065096905242,0.160065096905242,-105.0397105,39.7094438,-105.0397105,39.7080043
-8470,6838,5335,0.187163981040998,0.187163981040998,-105.0397105,39.7080043,-105.0397046,39.7063211
-8471,5335,6839,0.265241255095212,0.265241255095212,-105.0397046,39.7063211,-105.0396161,39.7039367
-8473,4319,4507,0.0895898957022207,0.0895898957022207,-105.0350327,39.7104474,-105.0360799,39.7104606
-8474,4507,6840,0.0124803827841914,0.0124803827841914,-105.0360799,39.7104606,-105.0362258,39.7104609
-8475,6840,6841,0.091716588631721,0.091716588631721,-105.0362258,39.7104609,-105.037298,39.7104627
-8476,6841,6842,0.00740292454463184,0.00740292454463184,-105.037298,39.7104627,-105.0373845,39.7104606
-8477,6842,285,0.0146970591982782,0.0146970591982782,-105.0373845,39.7104606,-105.0375561,39.7104672
-8478,285,5069,0.0844368792913957,0.0844368792913957,-105.0375561,39.7104672,-105.0385432,39.7104672
-13551,9125,9126,0.0538488930045225,0.0538488930045225,-105.0111017,39.7231117,-105.0106484,39.7227756
-8479,5069,6837,0.103562524850142,0.103562524850142,-105.0385432,39.7104672,-105.0397534,39.7104936
-8480,6837,6843,0.0961927404969427,0.0961927404969427,-105.0397534,39.7104936,-105.0408778,39.7104804
-8481,6843,6844,0.0998943541512786,0.0998943541512786,-105.0408778,39.7104804,-105.0420451,39.7105068
-8482,6844,6845,0.102052212683234,0.102052212683234,-105.0420451,39.7105068,-105.0432381,39.7105134
-8483,6845,6846,0.456427940885819,0.456427940885819,-105.0432381,39.7105134,-105.0485738,39.7105415
-8484,6847,4419,0.193121729151288,0.193121729151288,-105.0275397,39.7102889,-105.0297971,39.7103154
-8485,4419,6848,0.226127592349504,0.226127592349504,-105.0297971,39.7103154,-105.0324406,39.710322
-8486,6848,5329,0.136063050211474,0.136063050211474,-105.0324406,39.710322,-105.0340312,39.7103291
-8488,4363,1444,0.202825103543368,0.202825103543368,-105.0015367,39.7102427,-105.0039077,39.7102592
-8489,1444,6849,0.200067420030691,0.200067420030691,-105.0039077,39.7102592,-105.0062462,39.7102277
-8490,6849,6850,0.207042581432814,0.207042581432814,-105.0062462,39.7102277,-105.0086666,39.7102277
-8491,6850,5890,0.198967544378973,0.198967544378973,-105.0086666,39.7102277,-105.0109926,39.7102277
-8493,6851,6852,0.0470486102019036,0.0470486102019036,-104.9875556,39.7102383,-104.9881056,39.7102414
-8494,6852,6853,0.0201453367541323,0.0201453367541323,-104.9881056,39.7102414,-104.9883411,39.7102427
-8495,6853,6854,0.0193839654418635,0.0193839654418635,-104.9883411,39.7102427,-104.9885677,39.7102439
-8496,6854,6855,0.0201881052382051,0.0201881052382051,-104.9885677,39.7102439,-104.9888037,39.7102452
-8497,6855,6856,0.0195037980214848,0.0195037980214848,-104.9888037,39.7102452,-104.9890317,39.7102465
-8498,6856,6857,0.0198459509091597,0.0198459509091597,-104.9890317,39.7102465,-104.9892637,39.7102478
-8499,6857,6858,0.0195037180586887,0.0195037180586887,-104.9892637,39.7102478,-104.9894917,39.710249
-8500,6858,6859,0.0199058270401761,0.0199058270401761,-104.9894917,39.710249,-104.9897244,39.7102503
-8501,6859,1871,0.0228399539785669,0.0228399539785669,-104.9897244,39.7102503,-104.9899914,39.7102518
-8504,6861,6862,0.100580939051626,0.100580939051626,-104.9497683,39.7146491,-104.9485924,39.7146476
-8505,6862,6863,0.206622253376394,0.206622253376394,-104.9485924,39.7146476,-104.9461768,39.7146368
-8506,6863,6377,0.103010255262607,0.103010255262607,-104.9461768,39.7146368,-104.9449725,39.7146388
-8507,6377,4832,0.10370389707419,0.10370389707419,-104.9449725,39.7146388,-104.9437601,39.714643
-8508,4832,6717,0.103234622646169,0.103234622646169,-104.9437601,39.714643,-104.9425532,39.7146491
-8509,6717,6864,0.103703073117676,0.103703073117676,-104.9425532,39.7146491,-104.9413408,39.7146471
-8510,6864,6865,0.0481477570236711,0.0481477570236711,-104.9413408,39.7146471,-104.9407779,39.7146468
-8512,5856,6866,0.107372117361429,0.107372117361429,-104.9875046,39.7147611,-104.9862493,39.7147611
-8513,6866,6867,0.050649728561771,0.050649728561771,-104.9862493,39.7147611,-104.9856575,39.7147454
-8514,6867,4989,0.0553571225017631,0.0553571225017631,-104.9856575,39.7147454,-104.9850107,39.7147282
-8515,4989,6868,0.101318948663251,0.101318948663251,-104.9850107,39.7147282,-104.9838262,39.7147216
-8518,6869,3823,0.172685696470764,0.172685696470764,-105.0087904,39.6885896,-105.0106786,39.6880414
-8520,6870,5902,0.0785311515160625,0.0785311515160625,-105.0108215,39.6880414,-105.0117344,39.688114
-8521,5902,6871,0.0681549663304684,0.0681549663304684,-105.0117344,39.688114,-105.0125152,39.6882351
-8522,6871,1996,0.0322361485277902,0.0322361485277902,-105.0125152,39.6882351,-105.0128845,39.6882924
-8523,1996,1587,0.080539505433719,0.080539505433719,-105.0128845,39.6882924,-105.0138115,39.6884179
-8524,1587,6872,0.0787299872144713,0.0787299872144713,-105.0138115,39.6884179,-105.0147213,39.6885235
-8525,6872,1652,0.0828966049530784,0.0828966049530784,-105.0147213,39.6885235,-105.0156826,39.688616
-9751,2441,5738,0.170975903813153,0.170975903813153,-105.0416481,39.7709328,-105.0416591,39.7724704
-8528,6874,5702,0.0496353984033346,0.0496353984033346,-105.0351985,39.7658172,-105.0357792,39.7658132
-8529,5702,6875,0.0484896470155752,0.0484896470155752,-105.0357792,39.7658132,-105.0363465,39.7658167
-8530,6875,6876,0.0523105680266916,0.0523105680266916,-105.0363465,39.7658167,-105.0369584,39.7658073
-8531,6876,6877,0.100875098780012,0.100875098780012,-105.0369584,39.7658073,-105.0381386,39.7658121
-8532,6877,6878,0.0515810406741165,0.0515810406741165,-105.0381386,39.7658121,-105.0387418,39.7657978
-8533,6878,6879,0.0480493192441991,0.0480493192441991,-105.0387418,39.7657978,-105.0393037,39.7657845
-8534,6879,6532,0.0493288645061034,0.0493288645061034,-105.0393037,39.7657845,-105.0398808,39.7657795
-8535,6532,6880,0.0170276228852009,0.0170276228852009,-105.0398808,39.7657795,-105.0400799,39.7657742
-8537,1128,6881,0.0506249344560303,0.0506249344560303,-105.0404722,39.7657639,-105.0410645,39.7657635
-8538,6881,6882,0.0501120958003525,0.0501120958003525,-105.0410645,39.7657635,-105.0416508,39.7657632
-8539,6882,6883,0.0495209017571618,0.0495209017571618,-105.0416508,39.7657632,-105.04223,39.765752
-8540,6883,3846,0.0513776048731037,0.0513776048731037,-105.04223,39.765752,-105.0428311,39.7657541
-8541,3846,6884,0.0512508950828751,0.0512508950828751,-105.0428311,39.7657541,-105.0434307,39.76575
-8542,6884,5564,0.0499163404494349,0.0499163404494349,-105.0434307,39.76575,-105.0440146,39.7657413
-8543,5564,6885,0.0796596960320095,0.0796596960320095,-105.0440146,39.7657413,-105.0449466,39.7657411
-8544,6885,6886,0.709637932237075,0.709637932237075,-105.0449466,39.7657411,-105.0532491,39.7657101
-8545,3929,5619,0.0645570027229576,0.0645570027229576,-105.0010599,39.7656602,-105.0018152,39.7656592
-8546,5619,3704,0.0990278562894358,0.0990278562894358,-105.0018152,39.7656592,-105.0029738,39.7656577
-9775,2551,7512,0.408787216175776,0.408787216175776,-105.0415549,39.7874347,-105.041567,39.791111
-8547,3704,709,0.100036425190807,0.100036425190807,-105.0029738,39.7656577,-105.0041442,39.7656562
-8548,709,6887,0.100506522060904,0.100506522060904,-105.0041442,39.7656562,-105.0053201,39.7656547
-8549,6887,6888,0.0973098804153082,0.0973098804153082,-105.0053201,39.7656547,-105.0064586,39.7656532
-8550,6888,4190,0.138652686970481,0.138652686970481,-105.0064586,39.7656532,-105.0080808,39.7656511
-8551,4190,2516,0.130567043389136,0.130567043389136,-105.0080808,39.7656511,-105.0096084,39.7656491
-8552,2516,6727,0.134515842897036,0.134515842897036,-105.0096084,39.7656491,-105.0111822,39.7656471
-8553,6727,4804,0.136148376446663,0.136148376446663,-105.0111822,39.7656471,-105.0127751,39.765645
-8555,6890,6891,0.127464290413413,0.127464290413413,-105.0143648,39.7656412,-105.0158561,39.7656402
-8558,4625,1248,0.132737908659339,0.132737908659339,-105.0189635,39.7656391,-105.0205165,39.7656381
-8560,4557,2726,0.131937670977173,0.131937670977173,-105.0220695,39.765634,-105.0236131,39.7656257
-8561,2726,6892,0.133086814424956,0.133086814424956,-105.0236131,39.7656257,-105.0251701,39.7656134
-8562,6892,6893,0.0108053798662109,0.0108053798662109,-105.0251701,39.7656134,-105.0252908,39.7655845
-8564,6894,6753,0.13855912942418,0.13855912942418,-105.0259502,39.7655831,-105.0275713,39.7655797
-8565,6753,3977,0.202975190536315,0.202975190536315,-105.0275713,39.7655797,-105.029946,39.7655924
-8567,4726,5125,0.0514216994322944,0.0514216994322944,-104.9698076,39.7693083,-104.970211,39.7696514
-8569,6895,2262,0.104167713702112,0.104167713702112,-104.9317267,39.7692334,-104.9305079,39.7692334
-8570,2262,3612,0.100511868469799,0.100511868469799,-104.9305079,39.7692334,-104.929332,39.7692466
-8571,3612,6896,0.101962634245626,0.101962634245626,-104.929332,39.7692466,-104.928139,39.7692466
-8572,6896,2111,0.0983046285910296,0.0983046285910296,-104.928139,39.7692466,-104.9269888,39.7692466
-8573,2111,6000,0.10637347320659,0.10637347320659,-104.9269888,39.7692466,-104.9257444,39.7692291
-8574,6000,6897,0.0969032855683131,0.0969032855683131,-104.9257444,39.7692291,-104.9246113,39.7692598
-8575,6897,6898,1.19574032306189,1.19574032306189,-104.9246113,39.7692598,-104.9106207,39.7692636
-8576,3909,1049,0.101955415333633,0.101955415333633,-104.9634376,39.7692079,-104.9622462,39.7692541
-8577,1049,6280,0.110396580345644,0.110396580345644,-104.9622462,39.7692541,-104.9609549,39.7692782
-8580,4727,6902,0.104166457963925,0.104166457963925,-104.9683879,39.7700633,-104.9671691,39.7700633
-8581,6902,5404,0.105633279342784,0.105633279342784,-104.9671691,39.7700633,-104.9659333,39.7700479
-8582,5404,3137,0.103462723581867,0.103462723581867,-104.9659333,39.7700479,-104.9647229,39.7700633
-8583,3137,3910,0.106566211179802,0.106566211179802,-104.9647229,39.7700633,-104.9634764,39.7700397
-8585,6685,6904,0.1009798833353,0.1009798833353,-104.9499024,39.769204,-104.9487209,39.769203
-8586,6904,6905,0.0978861772455395,0.0978861772455395,-104.9487209,39.769203,-104.9475756,39.7692051
-8588,6906,6907,0.0919209174538617,0.0919209174538617,-104.947479,39.769204,-104.9464035,39.7692009
-8589,6907,3448,0.0130685497791993,0.0130685497791993,-104.9464035,39.7692009,-104.9462506,39.769202
-8590,3448,6908,0.0816132292801626,0.0816132292801626,-104.9462506,39.769202,-104.9452957,39.7691999
-8591,6908,6909,0.0115722967665996,0.0115722967665996,-104.9452957,39.7691999,-104.9451603,39.7691999
-8592,6909,6910,0.0993816484498638,0.0993816484498638,-104.9451603,39.7691999,-104.9439975,39.7691989
-8593,6910,805,0.0976551438474913,0.0976551438474913,-104.9439975,39.7691989,-104.9428549,39.7691989
-8594,805,6911,0.0993747261569693,0.0993747261569693,-104.9428549,39.7691989,-104.9416922,39.7691937
-8595,6911,6912,0.089888887106785,0.089888887106785,-104.9416922,39.7691937,-104.9406406,39.7691809
-8596,6912,6913,0.0146747703329366,0.0146747703329366,-104.9406406,39.7691809,-104.9404689,39.7691809
-8598,6914,1237,0.101225406841245,0.101225406841245,-105.0111738,39.7765593,-105.0123583,39.7765593
-8600,4811,2178,0.0990205816012607,0.0990205816012607,-105.0134913,39.7765593,-105.01465,39.7765593
-8602,596,6305,0.0508308915230223,0.0508308915230223,-105.015268,39.7765659,-105.0158628,39.7765644
-8603,6305,350,0.0658146671565848,0.0658146671565848,-105.0158628,39.7765644,-105.0166327,39.7765791
-8604,350,6425,0.0344816945169531,0.0344816945169531,-105.0166327,39.7765791,-105.0170361,39.7765857
-8605,6425,6423,0.0330039992635189,0.0330039992635189,-105.0170361,39.7765857,-105.0174223,39.7765857
-8606,6423,5343,0.065281602891384,0.065281602891384,-105.0174223,39.7765857,-105.0181862,39.7765857
-8607,5343,4631,0.0645633414559121,0.0645633414559121,-105.0181862,39.7765857,-105.0189415,39.7765989
-8608,4631,4639,0.0344816846016407,0.0344816846016407,-105.0189415,39.7765989,-105.0193449,39.7766055
-8610,1260,4538,0.0975702004070908,0.0975702004070908,-105.0205036,39.7766121,-105.0216452,39.7766253
-8611,4538,4546,0.0337389213160247,0.0337389213160247,-105.0216452,39.7766253,-105.02204,39.7766253
-8612,4546,6284,0.0652815653305245,0.0652815653305245,-105.02204,39.7766253,-105.0228039,39.7766253
-8613,6284,2702,0.0682127836725729,0.0682127836725729,-105.0228039,39.7766253,-105.0236021,39.7766253
-8614,2702,2716,0.0295959518245788,0.0295959518245788,-105.0236021,39.7766253,-105.0239484,39.7766282
-8615,2716,6915,0.102272155307925,0.102272155307925,-105.0239484,39.7766282,-105.0251451,39.7766366
-8617,277,6916,0.0242091643473284,0.0242091643473284,-104.9875916,39.7783304,-104.9878486,39.7782388
-8618,6916,6917,0.127799932481727,0.127799932481727,-104.9878486,39.7782388,-104.9879258,39.777091
-8620,6918,6919,0.100490474583826,0.100490474583826,-104.9981886,39.7765528,-104.9993645,39.7765528
-8621,6919,3936,0.103902551113693,0.103902551113693,-104.9993645,39.7765528,-105.0005802,39.7765663
-8623,5625,109,0.104159188317199,0.104159188317199,-105.0017162,39.7765726,-105.002935,39.7765792
-9852,7555,7556,0.127428116197139,0.127428116197139,-105.0451391,39.7751943,-105.0452485,39.7763372
-8625,720,6920,0.107136629659166,0.107136629659166,-105.0041538,39.776566,-105.005407,39.7765396
-8626,6920,6921,0.0878190742496679,0.0878190742496679,-105.005407,39.7765396,-105.0064346,39.7765342
-8627,6921,760,0.053327069779034,0.053327069779034,-105.0064346,39.7765342,-105.0070586,39.7765312
-8628,760,4203,0.0493954421158038,0.0493954421158038,-105.0070586,39.7765312,-105.0076366,39.7765332
-19719,10631,10629,0.0181769844157554,0.0181769844157554,-105.0042586,39.7344481,-105.0042425,39.7342851
-8629,4203,4204,0.0379739020862165,0.0379739020862165,-105.0076366,39.7765332,-105.0080809,39.7765386
-8630,4204,1070,0.0609601987006813,0.0609601987006813,-105.0080809,39.7765386,-105.0087942,39.7765334
-8631,1070,1071,0.0198138913639204,0.0198138913639204,-105.0087942,39.7765334,-105.0090259,39.7765399
-8632,1071,2506,0.0820743434648716,0.0820743434648716,-105.0090259,39.7765399,-105.0099863,39.7765386
-8634,6922,6923,0.0332474984310345,0.0332474984310345,-105.0181826,39.7608206,-105.018184,39.7611196
-8635,6923,6924,0.0309457475923951,0.0309457475923951,-105.018184,39.7611196,-105.0181853,39.7613979
-8636,6924,6925,0.06835161173269,0.06835161173269,-105.0181853,39.7613979,-105.0181866,39.7620126
-8641,2302,152,0.296479047850973,0.296479047850973,-105.0087181,39.6957726,-105.008717,39.6931063
-8642,152,1739,0.201132602649999,0.201132602649999,-105.008717,39.6931063,-105.0087303,39.6912975
-8643,1739,1717,0.0492912051446921,0.0492912051446921,-105.0087303,39.6912975,-105.0087646,39.690855
-8645,6315,6820,0.175487833230143,0.175487833230143,-105.0085636,39.7055461,-105.0085636,39.7039679
-8646,6820,764,0.157172405718933,0.157172405718933,-105.0085636,39.7039679,-105.0086065,39.7025548
-8647,764,6004,0.389410143877071,0.389410143877071,-105.0086065,39.7025548,-105.0093641,39.6991016
-8648,6004,6244,0.10052021368651,0.10052021368651,-105.0093641,39.6991016,-105.0093641,39.6981976
-11455,8264,8265,0.215908830963319,0.215908830963319,-104.9897645,39.7839357,-104.9903119,39.7820401
-8649,6244,6929,0.161155152616492,0.161155152616492,-105.0093641,39.6981976,-105.0093602,39.6967483
-8651,6930,6931,0.00809135923630026,0.00809135923630026,-105.0087589,39.6894757,-105.0087696,39.6894034
-8652,6931,6869,0.0905079323611068,0.0905079323611068,-105.0087696,39.6894034,-105.0087904,39.6885896
-8653,6869,6932,0.702159216296169,0.702159216296169,-105.0087904,39.6885896,-105.0089185,39.6822757
-8654,4432,6933,0.289985249196455,0.289985249196455,-105.0086074,39.7174296,-105.0086074,39.7148217
-8655,6933,4666,0.0976954476351155,0.0976954476351155,-105.0086074,39.7148217,-105.0086417,39.7139435
-8656,4666,1333,0.0998446345260267,0.0998446345260267,-105.0086417,39.7139435,-105.0086503,39.7130456
-8657,1333,1388,0.0991189577824547,0.0991189577824547,-105.0086503,39.7130456,-105.0086331,39.7121543
-8658,1388,6935,0.105783123390058,0.105783123390058,-105.0086331,39.7121543,-105.008643,39.711203
-8659,6935,6850,0.108467199591529,0.108467199591529,-105.008643,39.711203,-105.0086666,39.7102277
-8660,6850,4706,0.0984536865396038,0.0984536865396038,-105.0086666,39.7102277,-105.0086237,39.7093429
-8661,4706,6936,0.0998638834924626,0.0998638834924626,-105.0086237,39.7093429,-105.0086065,39.7084449
-8662,6936,1757,0.0991299509071506,0.0991299509071506,-105.0086065,39.7084449,-105.0085894,39.7075535
-8664,2103,5985,0.0990139620475444,0.0990139620475444,-104.9269671,39.7811601,-104.9258084,39.7811601
-8665,5985,6937,0.103423317739921,0.103423317739921,-104.9258084,39.7811601,-104.9245981,39.7811601
-8666,6937,6938,0.197320023520399,0.197320023520399,-104.9245981,39.7811601,-104.9222891,39.7811779
-8667,6939,6940,0.0449145362146055,0.0449145362146055,-104.9592691,39.7819637,-104.9587435,39.7819608
-8668,6940,5016,0.051579913616047,0.051579913616047,-104.9587435,39.7819608,-104.9581399,39.7819575
-8670,6941,5111,0.0702390251054822,0.0702390251054822,-104.972039,39.782685,-104.971535,39.782186
-8671,5111,4709,0.111086762480312,0.111086762480312,-104.971535,39.782186,-104.970235,39.782186
-8672,4709,6805,0.12579570489738,0.12579570489738,-104.970235,39.782186,-104.968799,39.7819369
-8673,6805,6942,0.0911912161186586,0.0911912161186586,-104.968799,39.7819369,-104.9677319,39.7819277
-8674,6942,6943,0.0891583873267196,0.0891583873267196,-104.9677319,39.7819277,-104.9666886,39.7819375
-8675,6943,5415,0.0932705447088281,0.0932705447088281,-104.9666886,39.7819375,-104.9655971,39.7819384
-8676,5415,3141,0.0911590609752313,0.0911590609752313,-104.9655971,39.7819384,-104.9645304,39.7819277
-8677,3141,6944,0.0907415627456138,0.0907415627456138,-104.9645304,39.7819277,-104.9634685,39.7819252
-8678,6944,6945,0.0904253930261683,0.0904253930261683,-104.9634685,39.7819252,-104.9624103,39.7819277
-8679,6945,6282,0.0922034833120112,0.0922034833120112,-104.9624103,39.7819277,-104.9613313,39.7819318
-8680,6282,6946,0.0889556226914396,0.0889556226914396,-104.9613313,39.7819318,-104.9602903,39.7819343
-8681,6946,6947,0.115025423362082,0.115025423362082,-104.9602903,39.7819343,-104.9592799,39.7826178
-19720,10629,10630,0.00318458504180934,0.00318458504180934,-105.0042425,39.7342851,-105.0042609,39.7342602
-8684,4222,6948,0.095205143123347,0.095205143123347,-104.9869216,39.781959,-104.9858077,39.7819768
-8685,6948,6949,0.0983217542586648,0.0983217542586648,-104.9858077,39.7819768,-104.9846576,39.7819504
-8686,6949,970,0.0973398284250994,0.0973398284250994,-104.9846576,39.7819504,-104.9835185,39.781945
-8732,6248,6975,0.200150775141685,0.200150775141685,-105.0414185,39.6985547,-105.0413837,39.6967549
-8687,970,6950,0.0518030391212137,0.0518030391212137,-104.9835185,39.781945,-104.9829139,39.7819109
-8688,6950,5288,0.0521176321182923,0.0521176321182923,-104.9829139,39.7819109,-104.9823077,39.7818593
-8689,5288,3153,0.0937167269922867,0.0937167269922867,-104.9823077,39.7818593,-104.981211,39.7818645
-8690,3153,4969,0.095648805014101,0.095648805014101,-104.981211,39.7818645,-104.9800922,39.781891
-8691,4969,6951,0.121296465267735,0.121296465267735,-104.9800922,39.781891,-104.9786733,39.78186
-8717,1073,2508,0.0718764157350201,0.0718764157350201,-105.0096773,39.7790452,-105.0105184,39.7790452
-8692,6951,6952,0.17298014935093,0.17298014935093,-104.9786733,39.78186,-104.9777379,39.7804804
-8694,2653,4114,0.0446473392844233,0.0446473392844233,-104.9518556,39.7819252,-104.9513332,39.7819179
-8695,4114,6503,0.0806749392848293,0.0806749392848293,-104.9513332,39.7819179,-104.9503891,39.7819179
-11460,8268,8269,0.0284404063889237,0.0284404063889237,-104.9407004,39.7790485,-104.9404976,39.7792513
-8696,6503,6953,0.0279965631557129,0.0279965631557129,-104.9503891,39.7819179,-104.9500616,39.7819108
-8698,6779,1327,0.149226176774822,0.149226176774822,-105.0454279,39.7143249,-105.0452398,39.7129907
-8700,4207,6955,0.0359776758472589,0.0359776758472589,-105.0146092,39.7516734,-105.0147293,39.7519835
-8701,6955,6956,0.0798254305300323,0.0798254305300323,-105.0147293,39.7519835,-105.015237,39.752586
-8702,4494,6957,0.0178038045740406,0.0178038045740406,-105.0052335,39.7402363,-105.0052308,39.7403964
-8703,6957,6958,0.00431775087438634,0.00431775087438634,-105.0052308,39.7403964,-105.0052288,39.7404352
-8704,6958,2148,0.120300859607691,0.120300859607691,-105.0052288,39.7404352,-105.0061384,39.7412606
-8705,2148,6960,0.151431823224066,0.151431823224066,-105.0061384,39.7412606,-105.0073809,39.7422311
-8706,6960,6961,0.22023318510828,0.22023318510828,-105.0073809,39.7422311,-105.0086651,39.743948
-8707,6961,6962,0.137151335408755,0.137151335408755,-105.0086651,39.743948,-105.0094763,39.7450121
-8708,6962,6963,0.0242055632480646,0.0242055632480646,-105.0094763,39.7450121,-105.0095744,39.7452163
-8709,6963,2150,0.0925314192010664,0.0925314192010664,-105.0095744,39.7452163,-105.0101838,39.745904
-8710,2150,6964,0.068609567754435,0.068609567754435,-105.0101838,39.745904,-105.0105704,39.7464447
-8712,6808,6965,0.180937589294771,0.180937589294771,-104.9237959,39.7045639,-104.9216912,39.7047247
-8713,6966,761,0.0469463147130834,0.0469463147130834,-105.0064198,39.7790396,-105.0069691,39.779033
-8714,761,4205,0.0748160898012537,0.0748160898012537,-105.0069691,39.779033,-105.0078446,39.779033
-8715,4205,4398,0.0770157906569643,0.0770157906569643,-105.0078446,39.779033,-105.0087458,39.7790264
-8716,4398,1073,0.0796290264805075,0.0796290264805075,-105.0087458,39.7790264,-105.0096773,39.7790452
-8746,6967,5689,0.127751851222379,0.127751851222379,-105.040852,39.7080241,-105.040852,39.7068752
-8719,271,2710,0.601401594481822,0.601401594481822,-105.0214373,39.7400355,-105.0236301,39.7451745
-11825,321,7799,0.115552151499094,0.115552151499094,-105.0159659,39.7510962,-105.0150392,39.7518527
-8720,2710,6969,0.136362355996719,0.136362355996719,-105.0236301,39.7451745,-105.0252247,39.7451495
-8721,6969,6742,0.135618421861975,0.135618421861975,-105.0252247,39.7451495,-105.0268109,39.745157
-8722,6742,6141,0.132822121773709,0.132822121773709,-105.0268109,39.745157,-105.0283644,39.7451504
-8723,6141,4014,0.136061285283967,0.136061285283967,-105.0283644,39.7451504,-105.0299558,39.7451547
-8724,4014,6970,0.13345730315891,0.13345730315891,-105.0299558,39.7451547,-105.0315167,39.7451646
-8725,6970,6971,0.133022272157071,0.133022272157071,-105.0315167,39.7451646,-105.0330722,39.7451387
-8726,6971,6972,0.0472485991851602,0.0472485991851602,-105.0330722,39.7451387,-105.0336248,39.7451433
-8727,6972,3385,0.0819883397602158,0.0819883397602158,-105.0336248,39.7451433,-105.0345837,39.7451514
-8729,6959,6973,0.0390638293285452,0.0390638293285452,-105.0353181,39.7451528,-105.035775,39.7451536
-19721,10630,10622,0.0559555137804764,0.0559555137804764,-105.0042609,39.7342602,-105.0045066,39.7337938
-8731,6974,6248,0.201212600703242,0.201212600703242,-105.0414357,39.7003642,-105.0414185,39.6985547
-8733,6975,1496,0.201553427836696,0.201553427836696,-105.0413837,39.6967549,-105.0413928,39.6949423
-8734,1496,185,0.202686112287629,0.202686112287629,-105.0413928,39.6949423,-105.0413928,39.6931195
-8735,185,1713,0.204711477509581,0.204711477509581,-105.0413928,39.6931195,-105.041058,39.6912966
-8736,1713,6976,0.201975316682274,0.201975316682274,-105.041058,39.6912966,-105.0410323,39.6894803
-8737,6976,1579,0.167005027356132,0.167005027356132,-105.0410323,39.6894803,-105.0411657,39.6879819
-8738,1579,6977,0.309934492691155,0.309934492691155,-105.0411657,39.6879819,-105.0411743,39.6851946
-8739,1105,5871,0.176266848523138,0.176266848523138,-105.0409021,39.716554,-105.0408965,39.7149688
-8740,5871,1323,0.177439022365804,0.177439022365804,-105.0408965,39.7149688,-105.0408805,39.7133731
-8741,1323,1379,0.176412320749863,0.176412320749863,-105.0408805,39.7133731,-105.0408718,39.7117866
-8742,1379,6978,0.0608448771470547,0.0608448771470547,-105.0408718,39.7117866,-105.040895,39.7112397
-8744,6843,4695,0.114533137035158,0.114533137035158,-105.0408778,39.7104804,-105.0408692,39.7094504
-11961,2694,6570,0.292174399102456,0.292174399102456,-104.9834919,39.7552636,-104.981101,39.7571413
-8745,4695,6967,0.15860414860374,0.15860414860374,-105.0408692,39.7094504,-105.040852,39.7080241
-8747,5689,5336,0.153402847395547,0.153402847395547,-105.040852,39.7068752,-105.0408719,39.7054957
-8749,6979,6980,0.0492417429246164,0.0492417429246164,-105.0408435,39.7039169,-105.0408692,39.7034745
-8750,6980,6981,0.0330798745582329,0.0330798745582329,-105.0408692,39.7034745,-105.040852,39.7031773
-8751,6981,6982,0.110138574841473,0.110138574841473,-105.040852,39.7031773,-105.040852,39.7021868
-8756,6986,6701,0.0557097589480938,0.0557097589480938,-104.9873935,39.7422064,-104.9878331,39.7418366
-8757,6701,6987,0.145037158424782,0.145037158424782,-104.9878331,39.7418366,-104.9890246,39.7409082
-8759,6988,648,0.139238555969963,0.139238555969963,-104.9320716,39.7401271,-104.9320748,39.7413793
-8760,648,683,0.0653158999110773,0.0653158999110773,-104.9320748,39.7413793,-104.9320748,39.7419667
-8761,683,6989,0.0669742957793313,0.0669742957793313,-104.9320748,39.7419667,-104.9320802,39.742569
-8762,6989,1988,0.0901527916408211,0.0901527916408211,-104.9320802,39.742569,-104.932067,39.7433797
-8763,1988,1972,0.0388238770836602,0.0388238770836602,-104.932067,39.7433797,-104.9320748,39.7437288
-8764,1972,4588,0.104222260658419,0.104222260658419,-104.9320748,39.7437288,-104.9320576,39.744666
-8765,4588,4594,0.0293535516568484,0.0293535516568484,-104.9320576,39.744666,-104.9320662,39.7449299
-8766,4594,6498,0.0726584855189905,0.0726584855189905,-104.9320662,39.7449299,-104.9320748,39.7455833
-8767,6498,6481,0.0601855426433911,0.0601855426433911,-104.9320748,39.7455833,-104.9320576,39.7461244
-8768,6481,2470,0.141630886586724,0.141630886586724,-104.9320576,39.7461244,-104.932049,39.7473981
-10003,6678,7628,0.0924131784678609,0.0924131784678609,-104.9498214,39.7861927,-104.9487399,39.7861861
-8771,6991,2401,0.344415463633539,0.344415463633539,-104.9317465,39.7717305,-104.9317412,39.7748279
-8772,2401,6992,0.121260728440928,0.121260728440928,-104.9317412,39.7748279,-104.9317318,39.7759184
-8773,6992,6604,0.426798504146684,0.426798504146684,-104.9317318,39.7759184,-104.9316605,39.7797563
-8774,6604,6993,0.0779497578426637,0.0779497578426637,-104.9316605,39.7797563,-104.9316377,39.7804571
-8775,6993,6994,0.328092841207435,0.328092841207435,-104.9316377,39.7804571,-104.9316278,39.7834077
-8776,6994,6997,0.409387625139532,0.409387625139532,-104.9316278,39.7834077,-104.931834,39.787086
-8777,6997,6998,0.0280465218891248,0.0280465218891248,-104.931834,39.787086,-104.931634,39.787286
-8778,6998,6999,0.240899685742567,0.240899685742567,-104.931634,39.787286,-104.9318001,39.7894487
-8780,7001,7002,0.172502393042501,0.172502393042501,-104.9316416,39.7162506,-104.9316252,39.7178019
-8781,7002,2338,0.177215228547836,0.177215228547836,-104.9316252,39.7178019,-104.9316115,39.7193956
-8782,2338,7003,0.175043780881437,0.175043780881437,-104.9316115,39.7193956,-104.9316056,39.7209698
-8783,7003,4782,0.243888745485023,0.243888745485023,-104.9316056,39.7209698,-104.9316237,39.7231631
-8784,4782,6558,0.132880580598771,0.132880580598771,-104.9316237,39.7231631,-104.9316139,39.7243581
-8785,6558,7004,0.106726338328234,0.106726338328234,-104.9316139,39.7243581,-104.9316074,39.7253179
-8787,2471,5909,0.20581191299575,0.20581191299575,-104.9316893,39.7473987,-104.9316976,39.7492496
-8789,7005,797,0.197387527656916,0.197387527656916,-104.931694,39.751069,-104.9317111,39.7528441
-10028,5604,7642,0.0520984767564003,0.0520984767564003,-105.0016005,39.7273224,-105.0022097,39.7273219
-8790,797,7006,0.203747525811746,0.203747525811746,-104.9317111,39.7528441,-104.9316943,39.7546764
-8793,7007,7008,0.196982052931457,0.196982052931457,-104.9317157,39.7565591,-104.9317193,39.7583306
-8794,7008,3062,0.205201724322207,0.205201724322207,-104.9317193,39.7583306,-104.9317072,39.760176
-8795,3062,7009,0.184895139192435,0.184895139192435,-104.9317072,39.760176,-104.9317039,39.7618388
-8796,7009,7010,0.0217892666308482,0.0217892666308482,-104.9317039,39.7618388,-104.9318494,39.7619997
-8798,7011,7012,0.200694925007541,0.200694925007541,-104.93161,39.725617,-104.9316338,39.7274218
-8799,7012,6367,0.0706060127631708,0.0706060127631708,-104.9316338,39.7274218,-104.9316211,39.7280567
-8800,6367,7013,0.13113311504647,0.13113311504647,-104.9316211,39.7280567,-104.9316269,39.729236
-8801,7013,5949,0.203040029193448,0.203040029193448,-104.9316269,39.729236,-104.9315933,39.7310618
-11962,6570,4451,0.149457420972406,0.149457420972406,-104.981101,39.7571413,-104.9798733,39.7580983
-8802,5949,5141,0.190833355605879,0.190833355605879,-104.9315933,39.7310618,-104.931599,39.732778
-8804,2236,4909,0.189094446681925,0.189094446681925,-104.9314966,39.732987,-104.9315358,39.7346873
-8805,4909,6613,0.199822606976101,0.199822606976101,-104.9315358,39.7346873,-104.9314781,39.7364838
-8806,6613,7014,0.196131290300381,0.196131290300381,-104.9314781,39.7364838,-104.9315168,39.7382474
-8807,7014,7015,0.207545863379423,0.207545863379423,-104.9315168,39.7382474,-104.9315223,39.7401139
-10052,7653,1099,0.0482102658012733,0.0482102658012733,-105.0400098,39.7282525,-105.0405735,39.7282472
-8809,4072,6057,0.192026411520301,0.192026411520301,-105.0310648,39.7838975,-105.0310367,39.7856243
-20532,10847,10848,0.0340308021704454,0.0340308021704454,-105.0229893,39.7608356,-105.0233869,39.7608513
-8810,6057,5797,0.200508266391225,0.200508266391225,-105.0310367,39.7856243,-105.031046,39.7874275
-8812,7016,7017,0.20408918142509,0.20408918142509,-105.030967,39.729303,-105.0309776,39.7311384
-8813,7017,6590,0.201086157953578,0.201086157953578,-105.0309776,39.7311384,-105.0309859,39.7329468
-8814,6590,7018,0.202602619918689,0.202602619918689,-105.0309859,39.7329468,-105.0310033,39.7347688
-8816,7019,4577,0.129538344988774,0.129538344988774,-105.0314796,39.7403377,-105.0315052,39.7415025
-8817,4577,6441,0.138680608354748,0.138680608354748,-105.0315052,39.7415025,-105.0314863,39.7427496
-8818,6441,5293,0.134070515766336,0.134070515766336,-105.0314863,39.7427496,-105.0315166,39.7439551
-8819,5293,6970,0.13449026404854,0.13449026404854,-105.0315166,39.7439551,-105.0315167,39.7451646
-8820,6970,13,0.134902446032247,0.134902446032247,-105.0315167,39.7451646,-105.0315114,39.7463778
-8822,7020,382,0.124884712447894,0.124884712447894,-105.0315108,39.746461,-105.0315032,39.7475841
-8823,382,7021,0.135229787557418,0.135229787557418,-105.0315032,39.7475841,-105.0315281,39.7488001
-8824,7021,7022,0.132193897477211,0.132193897477211,-105.0315281,39.7488001,-105.0315597,39.7499887
-8826,7023,7024,0.137222417835135,0.137222417835135,-105.0315207,39.751179,-105.0315379,39.752413
-8827,7024,7025,0.130431649234377,0.130431649234377,-105.0315379,39.752413,-105.031538,39.753586
-8828,7025,7026,0.138849105164774,0.138849105164774,-105.031538,39.753586,-105.0315379,39.7548347
-8830,6206,7027,0.182945185531037,0.182945185531037,-105.0312569,39.7260772,-105.031276,39.7277224
-8831,7027,7028,0.175756239821697,0.175756239821697,-105.031276,39.7277224,-105.0312846,39.729303
-20483,10830,10831,0.0908860058291454,0.0908860058291454,-105.0204376,39.7583647,-105.0193747,39.7583443
-8833,7029,7030,0.203242108673725,0.203242108673725,-105.0322588,39.7548413,-105.0322599,39.7566691
-8834,7030,7031,0.150413392817758,0.150413392817758,-105.0322599,39.7566691,-105.0322607,39.7580218
-8835,7031,2977,0.0550192556799276,0.0550192556799276,-105.0322607,39.7580218,-105.032261,39.7585166
-8837,657,1886,0.0454008957908892,0.0454008957908892,-105.0322612,39.758985,-105.0322615,39.7593933
-8838,1886,528,0.053551482812009,0.053551482812009,-105.0322615,39.7593933,-105.0322618,39.7598749
-8841,6092,1889,0.0508386682559075,0.0508386682559075,-105.0322556,39.7612283,-105.0322578,39.7616855
-8842,1889,7033,0.0498613554304776,0.0498613554304776,-105.0322578,39.7616855,-105.0322624,39.7621339
-8843,7033,7034,0.00951828955857414,0.00951828955857414,-105.0322624,39.7621339,-105.0322625,39.7622195
-8844,7034,7035,0.036894485571684,0.036894485571684,-105.0322625,39.7622195,-105.0322628,39.7625513
-8845,7035,6085,0.0480584959434146,0.0480584959434146,-105.0322628,39.7625513,-105.0322636,39.7629835
-8847,742,4527,0.0498820470218468,0.0498820470218468,-105.0322639,39.7634453,-105.0322641,39.7638939
-8848,4527,7036,0.0491481642660053,0.0491481642660053,-105.0322641,39.7638939,-105.0322644,39.7643359
-8849,7036,5246,0.0491592800418928,0.0491592800418928,-105.0322644,39.7643359,-105.0322646,39.764778
-8850,5246,7037,0.0481362905740046,0.0481362905740046,-105.0322646,39.764778,-105.0322649,39.7652109
-8851,7037,7038,0.0454453697348376,0.0454453697348376,-105.0322649,39.7652109,-105.0322651,39.7656196
-8852,7038,7039,0.0963504134151864,0.0963504134151864,-105.0322651,39.7656196,-105.0322656,39.7664861
-8853,7039,7040,0.0519319872070824,0.0519319872070824,-105.0322656,39.7664861,-105.0322731,39.7669531
-8854,7040,1663,0.0497523111621545,0.0497523111621545,-105.0322731,39.7669531,-105.0322802,39.7674005
-8855,1663,7041,0.0529510578680093,0.0529510578680093,-105.0322802,39.7674005,-105.0322795,39.7678767
-8856,7041,7042,0.0505381295725577,0.0505381295725577,-105.0322795,39.7678767,-105.0322788,39.7683312
-8857,7042,7043,0.0514848181594461,0.0514848181594461,-105.0322788,39.7683312,-105.0322741,39.7687942
-8858,7043,7044,0.0741692266458179,0.0741692266458179,-105.0322741,39.7687942,-105.0322674,39.7694612
-8861,7046,2493,0.132768776448504,0.132768776448504,-105.0314652,39.7779248,-105.0314566,39.7791188
-20533,10817,10849,0.0041587253937853,0.0041587253937853,-105.0250744,39.7613255,-105.0250742,39.7612881
-8864,2531,1932,0.0596099109005186,0.0596099109005186,-105.0311131,39.7379476,-105.0311255,39.7384836
-8865,1932,7047,0.205921914653592,0.205921914653592,-105.0311255,39.7384836,-105.0311242,39.7403355
-8867,7048,4043,0.179136537042624,0.179136537042624,-105.0312304,39.7165547,-105.031239,39.7181657
-8868,4043,7049,0.176989263158491,0.176989263158491,-105.031239,39.7181657,-105.0312428,39.7197574
-8869,7049,7050,0.100459005094488,0.100459005094488,-105.0312428,39.7197574,-105.0312551,39.7206608
-8871,7051,5531,0.109415807818528,0.109415807818528,-105.031138,39.773086,-105.031138,39.77407
-8872,5531,7052,0.29371056329192,0.29371056329192,-105.031138,39.77407,-105.031078,39.776711
-8874,7053,6824,0.0545745509742182,0.0545745509742182,-105.0315035,39.7694414,-105.0315024,39.7699322
-8875,6824,2424,0.081950775026488,0.081950775026488,-105.0315024,39.7699322,-105.0315008,39.7706692
-8876,2424,7054,0.050315704306832,0.050315704306832,-105.0315008,39.7706692,-105.0315008,39.7711217
-8877,7054,3228,0.0836964212853156,0.0836964212853156,-105.0315008,39.7711217,-105.0315008,39.7718744
-8879,4957,4034,0.0947298154946536,0.0947298154946536,-105.0329814,39.6985547,-105.03299,39.6977028
-8881,7055,5863,0.174726781940175,0.174726781940175,-105.0337024,39.7165547,-105.0336852,39.7149834
-8882,5863,1311,0.179868913340571,0.179868913340571,-105.0336852,39.7149834,-105.0336852,39.7133658
-8883,1311,7056,0.241558820409428,0.241558820409428,-105.0336852,39.7133658,-105.0336594,39.7111935
-8885,7057,1506,0.131503726493835,0.131503726493835,-105.0329041,39.6960716,-105.0332303,39.6949159
-8886,1506,7058,0.131454642278669,0.131454642278669,-105.0332303,39.6949159,-105.0332303,39.6937337
-8888,1059,7059,0.104267738567829,0.104267738567829,-104.9500415,39.7029556,-104.9500388,39.7020179
-10122,3779,7683,0.15407703010384,0.15407703010384,-104.9472954,39.7291251,-104.9472804,39.7305107
-8890,4436,56,0.118965433489173,0.118965433489173,-104.9500303,39.7012585,-104.9500131,39.7001887
-8891,56,5316,0.100608812091724,0.100608812091724,-104.9500131,39.7001887,-104.9500303,39.699284
-8892,5316,3496,0.0998861232245216,0.0998861232245216,-104.9500303,39.699284,-104.9500131,39.6983858
-8893,3496,3665,0.201207219763356,0.201207219763356,-104.9500131,39.6983858,-104.9500131,39.6965763
-8894,3665,7060,0.199611951396181,0.199611951396181,-104.9500131,39.6965763,-104.9500436,39.6947813
-8895,7060,7061,0.203598851492666,0.203598851492666,-104.9500436,39.6947813,-104.9500177,39.6929504
-8896,7061,5840,0.200253664127546,0.200253664127546,-104.9500177,39.6929504,-104.9500299,39.6911495
-8897,5840,267,0.165246780486595,0.165246780486595,-104.9500299,39.6911495,-104.9500299,39.6896634
-8899,7062,7063,0.478103640034168,0.478103640034168,-104.9500436,39.6893239,-104.950296,39.6850286
-8900,7064,5164,0.146200467670157,0.146200467670157,-104.95025,39.7175567,-104.9499442,39.7162631
-8901,5164,6860,0.179928785347538,0.179928785347538,-104.9499442,39.7162631,-104.9499587,39.714645
-8902,6860,7065,0.0135383927129561,0.0135383927129561,-104.9499587,39.714645,-104.9499634,39.7145233
-8903,7065,2385,0.105505653234926,0.105505653234926,-104.9499634,39.7145233,-104.9496422,39.7136072
-8905,3637,7066,0.183542084850882,0.183542084850882,-104.9498644,39.7126594,-104.9498283,39.711009
-8907,5956,7067,0.0986953923423101,0.0986953923423101,-104.9735293,39.7569242,-104.9743469,39.7575509
-8908,7067,3021,0.00874922983807779,0.00874922983807779,-104.9743469,39.7575509,-104.974418,39.7576075
-20416,10767,10781,0.00791916641108638,0.00791916641108638,-105.0239411,39.7605037,-105.0240012,39.7604495
-8910,7068,4380,0.0528744797047038,0.0528744797047038,-104.9748473,39.7579376,-104.9752846,39.7582739
-8911,4380,7069,0.100067477522489,0.100067477522489,-104.9752846,39.7582739,-104.9761123,39.7589103
-8912,7069,7070,0.00503051016222424,0.00503051016222424,-104.9761123,39.7589103,-104.9761539,39.7589423
-8913,7070,7071,0.0533378396892988,0.0533378396892988,-104.9761539,39.7589423,-104.9765951,39.7592815
-8914,7071,7072,0.0517118729985249,0.0517118729985249,-104.9765951,39.7592815,-104.9770228,39.7596104
-8915,7072,7073,0.0528720185185965,0.0528720185185965,-104.9770228,39.7596104,-104.9774602,39.7599466
-8916,7073,7074,0.0524160104100909,0.0524160104100909,-104.9774602,39.7599466,-104.9778937,39.76028
-8917,7074,7075,0.0591259627190951,0.0591259627190951,-104.9778937,39.76028,-104.9783828,39.760656
-8918,7075,7076,0.0472141967853771,0.0472141967853771,-104.9783828,39.760656,-104.9787733,39.7609563
-8919,7076,7077,0.0523938554164358,0.0523938554164358,-104.9787733,39.7609563,-104.9792067,39.7612895
-8920,7077,7078,0.0519698920804767,0.0519698920804767,-104.9792067,39.7612895,-104.9796366,39.76162
-18299,6996,6464,0.157978818539649,0.157978818539649,-105.0409867,39.7766949,-105.041027,39.7752745
-18300,6464,5526,0.155386531700968,0.155386531700968,-105.041027,39.7752745,-105.0410378,39.7738771
-8921,7078,7079,0.0533446665935528,0.0533446665935528,-104.9796366,39.76162,-104.9800778,39.7619593
-8922,7079,6175,0.0539515629761608,0.0539515629761608,-104.9800778,39.7619593,-104.9805241,39.7623024
-8923,6175,7080,0.0522978151475426,0.0522978151475426,-104.9805241,39.7623024,-104.9809567,39.762635
-19723,10628,10634,0.0467495933951474,0.0467495933951474,-105.0039101,39.7341658,-105.0040521,39.7345718
-8924,7080,3310,0.051621129553778,0.051621129553778,-104.9809567,39.762635,-104.9813837,39.7629633
-8925,3310,7081,0.0537939712546602,0.0537939712546602,-104.9813837,39.7629633,-104.9818287,39.7633054
-8926,7081,7082,0.0517442194955157,0.0517442194955157,-104.9818287,39.7633054,-104.9822567,39.7636345
-8957,6821,767,0.155663516472162,0.155663516472162,-105.0121846,39.7039499,-105.012176,39.70255
-8928,6333,7083,0.0368397497726965,0.0368397497726965,-104.9848045,39.7253046,-104.9848713,39.7256319
-8930,7084,756,0.02205451477657,0.02205451477657,-104.985321,39.7750057,-104.9853038,39.7752036
-8931,756,1542,0.146566188527195,0.146566188527195,-104.9853038,39.7752036,-104.9853013,39.7765217
-8933,7085,7086,0.470303961651379,0.470303961651379,-104.9852266,39.7873956,-104.985181,39.791625
-8936,6193,6949,0.198646201862192,0.198646201862192,-104.9846257,39.7801641,-104.9846576,39.7819504
-8937,6949,7088,0.203154460121287,0.203154460121287,-104.9846576,39.7819504,-104.9846662,39.7837774
-8938,7088,7089,0.0315254339634626,0.0315254339634626,-104.9846662,39.7837774,-104.98467,39.7840609
-11963,4451,5499,0.142902063925945,0.142902063925945,-104.9798733,39.7580983,-104.978687,39.7590038
-8939,1547,4267,0.203186762796229,0.203186762796229,-104.9847116,39.7765295,-104.9847077,39.7783568
-8940,4267,281,0.118834586231474,0.118834586231474,-104.9847077,39.7783568,-104.9847034,39.7794255
-8942,4988,5631,0.199717559309749,0.199717559309749,-104.9850453,39.7165375,-104.9850024,39.7183333
-8943,5631,2363,0.114164400355602,0.114164400355602,-104.9850024,39.7183333,-104.9849833,39.7193599
-8944,2363,4145,0.172388156251151,0.172388156251151,-104.9849833,39.7193599,-104.9849945,39.7209102
-8945,4145,4750,0.181329134759237,0.181329134759237,-104.9849945,39.7209102,-104.9850078,39.7225409
-8946,4750,7090,0.0742131518569267,0.0742131518569267,-104.9850078,39.7225409,-104.9850136,39.7232083
-8947,7090,6563,0.101353119972535,0.101353119972535,-104.9850136,39.7232083,-104.9850303,39.7241197
-8949,561,652,0.180277903435168,0.180277903435168,-104.984845,39.7400568,-104.9848243,39.741678
-8950,652,7091,0.1782898608686,0.1782898608686,-104.9848243,39.741678,-104.9848475,39.7432813
-8951,7091,4618,0.177690137841113,0.177690137841113,-104.9848475,39.7432813,-104.9848531,39.7448793
-8952,4618,6484,0.148000947434632,0.148000947434632,-104.9848531,39.7448793,-104.9848486,39.7462103
-8953,6484,3683,0.147902463423831,0.147902463423831,-104.9848486,39.7462103,-104.9848394,39.7475404
-8955,7092,562,0.138318567115304,0.138318567115304,-104.9848557,39.7385982,-104.9848447,39.7398421
-14765,7355,5462,0.177046926118077,0.177046926118077,-104.9804554,39.7400222,-104.9804447,39.73843
-8958,767,6719,0.219350766482543,0.219350766482543,-105.012176,39.70255,-105.0125794,39.7006019
-8959,6719,6005,0.0551645975375965,0.0551645975375965,-105.0125794,39.7006019,-105.0128712,39.7001595
-8961,7093,7094,0.0134618314671123,0.0134618314671123,-105.000125,39.7424805,-105.00026,39.7424182
-8962,7094,7095,0.0768336523164077,0.0768336523164077,-105.00026,39.7424182,-105.0010418,39.7420775
-8964,4351,7096,0.187825105408858,0.187825105408858,-104.9417876,39.7564997,-104.9418048,39.7581888
-8966,5169,7097,0.173957232527163,0.173957232527163,-104.9413494,39.7162383,-104.9413358,39.7178027
-8967,7097,2358,0.178391537286392,0.178391537286392,-104.9413358,39.7178027,-104.9413272,39.719407
-8968,2358,4158,0.173186099094122,0.173186099094122,-104.9413272,39.719407,-104.9413274,39.7209645
-8969,4158,4745,0.175498953556533,0.175498953556533,-104.9413274,39.7209645,-104.9413272,39.7225428
-8970,4745,6540,0.175479189908249,0.175479189908249,-104.9413272,39.7225428,-104.9413381,39.7241209
-8971,6540,7098,0.165132887334241,0.165132887334241,-104.9413381,39.7241209,-104.9413186,39.7256059
-8974,900,4481,0.13673901951185,0.13673901951185,-104.9417276,39.7644767,-104.9417177,39.7657064
-8975,4481,2805,0.133564794339907,0.133564794339907,-104.9417177,39.7657064,-104.9417,39.7669075
-8976,2805,5271,0.130621351715569,0.130621351715569,-104.9417,39.7669075,-104.9417049,39.7680822
-8977,5271,6911,0.123597927289001,0.123597927289001,-104.9417049,39.7680822,-104.9416922,39.7691937
-8978,6911,7100,0.15221685519733,0.15221685519733,-104.9416922,39.7691937,-104.9417016,39.7705626
-8979,7100,6360,0.259362269049004,0.259362269049004,-104.9417016,39.7705626,-104.9416989,39.7728951
-8981,7102,704,0.204412961923,0.204412961923,-104.9418797,39.7401097,-104.9419371,39.7419475
-19726,10627,10635,0.0226092820114286,0.0226092820114286,-105.0051511,39.7346116,-105.0048867,39.7346105
-8984,7103,1210,0.168411442672594,0.168411442672594,-104.9418336,39.7256059,-104.9418512,39.7271204
-8985,1210,7104,0.0210253069731913,0.0210253069731913,-104.9418512,39.7271204,-104.9418336,39.727309
-8986,7104,3769,0.199568149574658,0.199568149574658,-104.9418336,39.727309,-104.9418526,39.7291037
-8987,3769,7105,0.154728508227155,0.154728508227155,-104.9418526,39.7291037,-104.9418583,39.7304952
-8988,7105,960,0.176377624617973,0.176377624617973,-104.9418583,39.7304952,-104.9418349,39.7320813
-8989,960,7106,0.174688777733473,0.174688777733473,-104.9418349,39.7320813,-104.9418263,39.7336523
-8990,7106,4897,0.160532597504136,0.160532597504136,-104.9418263,39.7336523,-104.9418217,39.735096
-8991,4897,7107,0.182971792068578,0.182971792068578,-104.9418217,39.735096,-104.9418165,39.7367415
-8992,7107,5494,0.175655210225522,0.175655210225522,-104.9418165,39.7367415,-104.9418112,39.7383212
-8994,7108,7109,0.103100291492917,0.103100291492917,-105.0251569,39.7347553,-105.0263626,39.7347585
-8995,7109,7110,0.101964294660044,0.101964294660044,-105.0263626,39.7347585,-105.027555,39.7347529
-8998,7112,6130,0.00642185713601216,0.00642185713601216,-105.0286006,39.7347486,-105.0286757,39.7347484
-8999,6130,3973,0.100482235790598,0.100482235790598,-105.0286757,39.7347484,-105.0298507,39.7347596
-9000,3973,7018,0.0985643830580019,0.0985643830580019,-105.0298507,39.7347596,-105.0310033,39.7347688
-9001,7018,1404,0.0976294798550341,0.0976294798550341,-105.0310033,39.7347688,-105.0321449,39.734782
-9002,1404,7113,0.0934722476940573,0.0934722476940573,-105.0321449,39.734782,-105.033238,39.734786
-9003,7113,3377,0.114974498647875,0.114974498647875,-105.033238,39.734786,-105.0345825,39.7347754
-9004,3377,5719,0.0923374297912636,0.0923374297912636,-105.0345825,39.7347754,-105.0355549,39.7344143
-9006,4633,4552,0.211900461491767,0.211900461491767,-105.0192915,39.7347429,-105.0217376,39.7344378
-9008,7114,1219,0.0873426128412716,0.0873426128412716,-105.0113249,39.7352378,-105.0123463,39.7352444
-9009,1219,7115,0.154859667381265,0.154859667381265,-105.0123463,39.7352444,-105.0141573,39.7352378
-9011,128,4195,0.0990809801322014,0.0990809801322014,-105.0065998,39.7352916,-105.0077585,39.7352875
-9012,4195,2526,0.225168737431611,0.225168737431611,-105.0077585,39.7352875,-105.0103699,39.7355479
-9015,7118,7119,0.0484685816363468,0.0484685816363468,-104.9975929,39.7352666,-104.9981597,39.7352703
-9016,7119,6647,0.0431240450937402,0.0431240450937402,-104.9981597,39.7352703,-104.998664,39.7352736
-9017,6647,7120,0.0651283567093235,0.0651283567093235,-104.998664,39.7352736,-104.9994256,39.7352803
-9020,7121,5612,0.0589161599786899,0.0589161599786899,-105.000878,39.7352858,-105.001567,39.735285
-9021,5612,7122,0.0519812671049742,0.0519812671049742,-105.001567,39.735285,-105.0021749,39.735285
-9022,7122,3734,0.0556068739901258,0.0556068739901258,-105.0021749,39.735285,-105.0028252,39.7352849
-9024,4852,7123,0.126059374848785,0.126059374848785,-104.987369,39.7352666,-104.9888432,39.7352618
-9025,7123,7124,0.118149722641793,0.118149722641793,-104.9888432,39.7352618,-104.9902249,39.7352572
-9026,7124,7125,0.121835161075312,0.121835161075312,-104.9902249,39.7352572,-104.9916497,39.7352526
-9027,7125,7126,0.110094663779518,0.110094663779518,-104.9916497,39.7352526,-104.9929372,39.7352483
-9028,7126,4678,0.101155068622002,0.101155068622002,-104.9929372,39.7352483,-104.99412,39.7352636
-9029,4678,4925,0.0375558738681089,0.0375558738681089,-104.99412,39.7352636,-104.9945592,39.735263
-9031,7127,5718,0.122304701667431,0.122304701667431,-105.0369772,39.7339305,-105.0356487,39.734338
-9033,7129,7130,0.00755996146089403,0.00755996146089403,-105.0369832,39.7347877,-105.0370687,39.7347704
-11437,7984,8034,0.589388539362218,0.589388539362218,-105.0218262,39.7840053,-105.0287237,39.7840235
-9034,7130,7131,0.0405147672355999,0.0405147672355999,-105.0370687,39.7347704,-105.0375424,39.7347779
-15917,9748,9104,0.13371062185673,0.13371062185673,-105.0432496,39.7156399,-105.0421714,39.7165106
-9036,7132,7133,0.0505601360898234,0.0505601360898234,-105.0381234,39.7347872,-105.0387146,39.7347945
-9037,7133,7134,0.050337833066874,0.050337833066874,-105.0387146,39.7347945,-105.0393032,39.7348018
-9039,2563,2043,0.341755774769512,0.341755774769512,-104.9865077,39.7643898,-104.983686,39.7665674
-9040,2043,4280,0.587618591665046,0.587618591665046,-104.983686,39.7665674,-104.97885,39.7703237
-9041,4280,2317,0.145996435168453,0.145996435168453,-104.97885,39.7703237,-104.977649,39.7712574
-9042,2317,7135,0.26875426467805,0.26875426467805,-104.977649,39.7712574,-104.9754213,39.7729633
-9044,4276,6167,0.145395831525207,0.145395831525207,-104.9744288,39.7737425,-104.9732245,39.7746661
-9045,6167,7136,0.583394412429138,0.583394412429138,-104.9732245,39.7746661,-104.9684185,39.7783922
-9046,7136,7137,0.0430989040252276,0.0430989040252276,-104.9684185,39.7783922,-104.9680592,39.7786642
-9048,7138,7139,0.17847978963111,0.17847978963111,-104.9721501,39.7400093,-104.9721564,39.7416144
-9049,7139,665,0.00426988518248375,0.00426988518248375,-104.9721564,39.7416144,-104.9721564,39.7416528
-9050,665,7140,0.0039363004033923,0.0039363004033923,-104.9721564,39.7416528,-104.9721564,39.7416882
-9051,7140,7141,0.126828000444838,0.126828000444838,-104.9721564,39.7416882,-104.9721376,39.7428287
-9052,7141,7142,0.0463243816448395,0.0463243816448395,-104.9721376,39.7428287,-104.9721403,39.7432453
-9053,7142,4606,0.175854779813893,0.175854779813893,-104.9721403,39.7432453,-104.9721399,39.7448268
-13036,8929,8930,0.492762775909981,0.492762775909981,-104.9903693,39.7822705,-104.9961216,39.7819588
-9054,4606,2885,0.129583918723674,0.129583918723674,-104.9721399,39.7448268,-104.9724659,39.7459649
-9056,818,3559,0.139007675873083,0.139007675873083,-104.9721439,39.7532392,-104.9721334,39.7544893
-9057,3559,5633,0.138607438022671,0.138607438022671,-104.9721334,39.7544893,-104.9721228,39.7557358
-9060,5632,7143,0.0971697431213832,0.0971697431213832,-104.9727182,39.7557338,-104.9721228,39.7564782
-9061,7143,4337,0.0573209846859246,0.0573209846859246,-104.9721228,39.7564782,-104.9721228,39.7569937
-9062,4337,6336,0.137619327969477,0.137619327969477,-104.9721228,39.7569937,-104.9721098,39.7582313
-9063,6336,3051,0.138690015537613,0.138690015537613,-104.9721098,39.7582313,-104.9721269,39.7594785
-9064,3051,7144,0.13740372400277,0.13740372400277,-104.9721269,39.7594785,-104.9721245,39.7607142
-9065,7144,7145,0.00531536492655497,0.00531536492655497,-104.9721245,39.7607142,-104.9721251,39.760762
-9066,7145,7146,0.138359891845979,0.138359891845979,-104.9721251,39.760762,-104.9721238,39.7620063
-9069,873,4461,0.138000198054367,0.138000198054367,-104.9721084,39.7645147,-104.972125,39.7657557
-9070,4461,2781,0.134827246932882,0.134827246932882,-104.972125,39.7657557,-104.9721138,39.7669682
-9073,6941,5768,0.263560531238909,0.263560531238909,-104.972039,39.782685,-104.974836,39.781686
-9074,5768,7148,0.00867578094755507,0.00867578094755507,-104.974836,39.781686,-104.974928,39.781719
-9075,6325,4168,0.192770537182593,0.192770537182593,-104.9717416,39.7183547,-104.9717542,39.7200883
-9076,4168,4753,0.208190261859574,0.208190261859574,-104.9717542,39.7200883,-104.971754,39.7219606
-9077,4753,6544,0.199662965025148,0.199662965025148,-104.971754,39.7219606,-104.9717626,39.7237562
-9078,6544,7149,0.203286576405629,0.203286576405629,-104.9717626,39.7237562,-104.9717634,39.7255844
-9079,7149,7150,0.188877376950956,0.188877376950956,-104.9717634,39.7255844,-104.9717727,39.727283
-9080,7150,3796,0.199750569153682,0.199750569153682,-104.9717727,39.727283,-104.9717723,39.7290794
-9081,3796,5939,0.152615142478991,0.152615142478991,-104.9717723,39.7290794,-104.9717744,39.7304519
-9082,5939,940,0.17776127985835,0.17776127985835,-104.9717744,39.7304519,-104.9717901,39.7320505
-9083,940,2224,0.184599395002716,0.184599395002716,-104.9717901,39.7320505,-104.9718055,39.7337106
-9084,2224,4874,0.160770298676863,0.160770298676863,-104.9718055,39.7337106,-104.9718399,39.7351562
-9085,4874,7151,0.191866995309803,0.191866995309803,-104.9718399,39.7351562,-104.9718371,39.7368817
-9086,7151,5472,0.170431656658562,0.170431656658562,-104.9718371,39.7368817,-104.9718493,39.7384144
-9087,5472,7152,0.177051030738846,0.177051030738846,-104.9718493,39.7384144,-104.971867,39.7400066
-9089,7153,7154,0.0893451644905786,0.0893451644905786,-104.9594535,39.725616,-104.9594545,39.7248125
-9090,7154,6170,0.0753374734775839,0.0753374734775839,-104.9594545,39.7248125,-104.9594375,39.7241351
-9091,6170,4764,0.177646502224828,0.177646502224828,-104.9594375,39.7241351,-104.959446,39.7225375
-9092,4764,4150,0.173084945690311,0.173084945690311,-104.959446,39.7225375,-104.9594242,39.720981
-9094,2344,7155,0.117646857783728,0.117646857783728,-104.9594135,39.719411,-104.9592982,39.7183567
-9095,7155,7156,0.0188390787773898,0.0188390787773898,-104.9592982,39.7183567,-104.9592945,39.7181873
-9096,7156,7157,0.234434662963778,0.234434662963778,-104.9592945,39.7181873,-104.9592821,39.716079
-9097,7157,7158,0.0252454738977112,0.0252454738977112,-104.9592821,39.716079,-104.9592875,39.715852
-9100,7159,7160,0.136141908223257,0.136141908223257,-105.0381363,39.7487551,-105.0381214,39.7499794
-9101,7160,7161,0.134175303690261,0.134175303690261,-105.0381214,39.7499794,-105.038138,39.751186
-9102,7161,5540,0.104957650418394,0.104957650418394,-105.038138,39.751186,-105.0381637,39.7521297
-9103,5540,2408,0.0972515972300324,0.0972515972300324,-105.0381637,39.7521297,-105.03816,39.7530043
-9104,2408,4293,0.0986699082335262,0.0986699082335262,-105.03816,39.7530043,-105.0381466,39.7538916
-9105,4293,7163,0.053830719074408,0.053830719074408,-105.0381466,39.7538916,-105.0381509,39.7543757
-9107,7164,7165,0.0631810706690825,0.0631810706690825,-105.0381551,39.754855,-105.0381565,39.7554232
-9108,7165,2982,0.341967827784909,0.341967827784909,-105.0381565,39.7554232,-105.0381258,39.7584985
-9109,2982,7166,0.203801982791161,0.203801982791161,-105.0381258,39.7584985,-105.038164,39.7603311
-9110,7166,7167,0.199088364823678,0.199088364823678,-105.038164,39.7603311,-105.0381183,39.7621212
-9111,7167,7168,0.00801722711592813,0.00801722711592813,-105.0381183,39.7621212,-105.0381187,39.7621933
-9112,7168,7169,0.0420988990456398,0.0420988990456398,-105.0381187,39.7621933,-105.0381211,39.7625719
-9113,7169,7170,0.153973329045923,0.153973329045923,-105.0381211,39.7625719,-105.0381296,39.7639566
-9114,7170,6877,0.206323620437175,0.206323620437175,-105.0381296,39.7639566,-105.0381386,39.7658121
-9115,6877,1688,0.202556013709455,0.202556013709455,-105.0381386,39.7658121,-105.038125,39.7676337
-10335,2984,7779,0.0471482180711068,0.0471482180711068,-105.039304,39.7584901,-105.0393085,39.7589141
-9116,1688,7171,0.203959165094635,0.203959165094635,-105.038125,39.7676337,-105.0381554,39.7694678
-9117,7171,2434,0.200457262733771,0.200457262733771,-105.0381554,39.7694678,-105.038137,39.7712705
-9118,2434,7172,0.202529539970889,0.202529539970889,-105.038137,39.7712705,-105.0381026,39.7730917
-9119,7172,6459,0.289084578375032,0.289084578375032,-105.0381026,39.7730917,-105.0381018,39.7756915
-19730,5374,10637,0.0120223368882016,0.0120223368882016,-105.0044526,39.7337074,-105.0044418,39.7338152
-9120,6459,7173,0.114101346723939,0.114101346723939,-105.0381018,39.7756915,-105.0380903,39.7767176
-9121,7173,7174,0.184116579370581,0.184116579370581,-105.0380903,39.7767176,-105.0380913,39.7783734
-9122,7174,7175,0.203885371802177,0.203885371802177,-105.0380913,39.7783734,-105.0380683,39.7802069
-9123,7175,7176,0.042345014713444,0.042345014713444,-105.0380683,39.7802069,-105.0380731,39.7805877
-9124,7176,7177,0.0543545796747623,0.0543545796747623,-105.0380731,39.7805877,-105.0380792,39.7810765
-9125,7177,1424,0.112240471555906,0.112240471555906,-105.0380792,39.7810765,-105.0380823,39.7820859
-9128,7179,6066,0.193267920890686,0.193267920890686,-105.0380848,39.7838741,-105.0380858,39.7856122
-9129,6066,2546,0.202503184194707,0.202503184194707,-105.0380858,39.7856122,-105.0380674,39.7874333
-9130,2546,7180,0.41050413821522,0.41050413821522,-105.0380674,39.7874333,-105.038093,39.791125
-9131,6215,7181,0.274932291342238,0.274932291342238,-105.0383676,39.7257784,-105.0383822,39.7282509
-9132,7181,7182,0.263103709588239,0.263103709588239,-105.0383822,39.7282509,-105.0384019,39.730617
-9133,7182,7183,0.130644941399459,0.130644941399459,-105.0384019,39.730617,-105.0383934,39.7317919
-9134,2594,5185,0.17867940782894,0.17867940782894,-105.0383715,39.7229322,-105.0383678,39.7245391
-9137,5066,4054,0.176950276628118,0.176950276628118,-105.0384889,39.7165547,-105.0385175,39.7181459
-9138,4054,7184,0.19508037930475,0.19508037930475,-105.0385175,39.7181459,-105.0385175,39.7199003
-19295,10466,10470,0.0590667450333129,0.0590667450333129,-104.988856,39.7399993,-104.988856,39.7394681
-9139,7184,1855,0.159486883286254,0.159486883286254,-105.0385175,39.7199003,-105.0385175,39.7213346
-9140,1855,2595,0.177991984486361,0.177991984486361,-105.0385175,39.7213346,-105.038507,39.7229353
-9142,7132,7185,0.200740739267956,0.200740739267956,-105.0381234,39.7347872,-105.0380981,39.7365924
-9144,317,5720,0.10120960072344,0.10120960072344,-105.0345742,39.7830397,-105.0357487,39.7831573
-9146,7186,7178,0.0998150102985703,0.0998150102985703,-105.0369189,39.7832402,-105.0380864,39.7832692
-9147,7178,7187,0.0486556483534758,0.0486556483534758,-105.0380864,39.7832692,-105.0386558,39.7832674
-9148,7187,7188,0.0504244958733159,0.0504244958733159,-105.0386558,39.7832674,-105.0392459,39.7832655
-9149,7188,6720,0.0492257170939005,0.0492257170939005,-105.0392459,39.7832655,-105.0398219,39.7832727
-9150,6720,1139,0.0498554245278369,0.0498554245278369,-105.0398219,39.7832727,-105.0404053,39.7832671
-9151,1139,6900,0.0496729718772752,0.0496729718772752,-105.0404053,39.7832671,-105.0409865,39.7832584
-9152,6900,7189,0.0498269762893686,0.0498269762893686,-105.0409865,39.7832584,-105.0415695,39.7832496
-9153,7189,7190,0.0493080365100491,0.0493080365100491,-105.0415695,39.7832496,-105.0421451,39.7832183
-9154,7190,3869,0.0507905077365378,0.0507905077365378,-105.0421451,39.7832183,-105.042738,39.783186
-9155,3869,7191,0.0511248031667964,0.0511248031667964,-105.042738,39.783186,-105.0433363,39.783186
-9156,7191,5583,0.0514153335527058,0.0514153335527058,-105.0433363,39.783186,-105.043938,39.783186
-9158,6374,7192,0.0508291685906189,0.0508291685906189,-104.9453733,39.6929492,-104.9447793,39.6929426
-9159,7192,4828,0.0505211822659055,0.0505211822659055,-104.9447793,39.6929426,-104.9441889,39.692936
-9160,4828,7193,0.0991435070786191,0.0991435070786191,-104.9441889,39.692936,-104.9430302,39.6929294
-9161,7193,7194,0.0991520630524694,0.0991520630524694,-104.9430302,39.6929294,-104.9418714,39.692936
-9162,7194,7195,0.0477883926406413,0.0477883926406413,-104.9418714,39.692936,-104.9413129,39.6929321
-9163,7195,7196,0.0494484339552123,0.0494484339552123,-104.9413129,39.6929321,-104.940735,39.692928
-9164,7196,7197,0.0162046310747774,0.0162046310747774,-104.940735,39.692928,-104.9405457,39.6929325
-9166,7198,6674,0.0990044216409842,0.0990044216409842,-104.9373575,39.6929534,-104.9362004,39.6929564
-9167,6674,3118,0.097669089391913,0.097669089391913,-104.9362004,39.6929564,-104.9350589,39.6929564
-9168,3118,7199,0.284505571449601,0.284505571449601,-104.9350589,39.6929564,-104.931734,39.692987
-9169,7199,6008,0.094118222257641,0.094118222257641,-104.931734,39.692987,-104.930634,39.692987
-9170,6008,2844,0.0930401433253343,0.0930401433253343,-104.930634,39.692987,-104.9295466,39.6929872
-9171,2844,3493,0.0866696350082772,0.0866696350082772,-104.9295466,39.6929872,-104.9285338,39.6930004
-9172,3493,5349,0.0889131869713594,0.0889131869713594,-104.9285338,39.6930004,-104.9274952,39.692974
-9174,5392,2946,0.0903397575627338,0.0903397575627338,-104.926491,39.6929872,-104.9254353,39.692974
-9175,2946,6812,0.0903546565690543,0.0903546565690543,-104.9254353,39.692974,-104.9243796,39.6929938
-9176,6812,1813,0.0889131954631002,0.0889131954631002,-104.9243796,39.6929938,-104.923341,39.6929674
-9179,7201,7202,0.0514316470718889,0.0514316470718889,-104.9868436,39.6930068,-104.9862426,39.6930154
-9180,7202,571,0.0452247620537137,0.0452247620537137,-104.9862426,39.6930154,-104.9857141,39.6930216
-9181,571,4984,0.0498774301127379,0.0498774301127379,-104.9857141,39.6930216,-104.9851312,39.6930164
-9182,4984,7203,0.0499341834444621,0.0499341834444621,-104.9851312,39.6930164,-104.9845476,39.6930151
-9183,7203,7204,0.048540539361363,0.048540539361363,-104.9845476,39.6930151,-104.9839803,39.693012
-9184,7204,7205,0.049454954432791,0.049454954432791,-104.9839803,39.693012,-104.9834023,39.693013
-9185,7205,7206,0.0536988191890685,0.0536988191890685,-104.9834023,39.693013,-104.9827747,39.693012
-9186,7206,7207,0.0531339953218732,0.0531339953218732,-104.9827747,39.693012,-104.9821537,39.693012
-9188,7208,7209,0.0488986834694409,0.0488986834694409,-104.9815692,39.6930097,-104.9809977,39.6930099
-10408,7087,974,0.0520701135747565,0.0520701135747565,-104.9846429,39.7873956,-104.9840335,39.7873956
-9190,3616,7210,0.0490025655343953,0.0490025655343953,-104.9804184,39.6930078,-104.9798457,39.6930109
-9191,7210,7211,0.0492346778344629,0.0492346778344629,-104.9798457,39.6930109,-104.9792704,39.6930016
-9192,7211,6627,0.0474835705848566,0.0474835705848566,-104.9792704,39.6930016,-104.9787159,39.6929842
-9193,6627,7212,0.0259857221754392,0.0259857221754392,-104.9787159,39.6929842,-104.9784122,39.6929827
-9195,7213,2937,0.0797219985274474,0.0797219985274474,-104.9260704,39.7047422,-104.9251387,39.7047572
-9197,4927,7214,0.0675624031978383,0.0675624031978383,-104.9964542,39.7378444,-104.9964568,39.738452
-9198,7214,7215,0.172837829649445,0.172837829649445,-104.9964568,39.738452,-104.9964757,39.7400063
-9199,7215,7216,0.0152456900319388,0.0152456900319388,-104.9964757,39.7400063,-104.9964776,39.7401434
-9201,7217,7218,0.150068688599712,0.150068688599712,-104.9963567,39.7165938,-104.9963575,39.7179434
-9202,7218,3717,0.0523950557178934,0.0523950557178934,-104.9963575,39.7179434,-104.9963578,39.7184146
-9203,3717,7219,0.104026300075926,0.104026300075926,-104.9963578,39.7184146,-104.9963677,39.7193501
-9204,7219,7220,0.176478214187187,0.176478214187187,-104.9963677,39.7193501,-104.9963617,39.7209372
-9205,7220,2618,0.176744455093666,0.176744455093666,-104.9963617,39.7209372,-104.9963593,39.7225267
-9206,2618,7221,0.0524078444870275,0.0524078444870275,-104.9963593,39.7225267,-104.9963642,39.722998
-9207,7221,5199,0.124408908082812,0.124408908082812,-104.9963642,39.722998,-104.9963759,39.7241168
-9208,5199,6236,0.175254349133775,0.175254349133775,-104.9963759,39.7241168,-104.9963748,39.7256929
-9209,6236,7222,0.181371367707484,0.181371367707484,-104.9963748,39.7256929,-104.9963829,39.727324
-9210,7222,7223,0.17624861030264,0.17624861030264,-104.9963829,39.727324,-104.9964257,39.7289087
-10431,7818,3372,0.256942906695214,0.256942906695214,-104.9257985,39.7038513,-104.9262421,39.7015659
-9211,7223,7224,0.177882160330428,0.177882160330428,-104.9964257,39.7289087,-104.9964124,39.7305084
-9212,7224,6596,0.176655139096338,0.176655139096338,-104.9964124,39.7305084,-104.996445,39.7320969
-9213,6596,7225,0.176764713771947,0.176764713771947,-104.996445,39.7320969,-104.9965056,39.7336859
-9214,7225,7117,0.195263815592674,0.195263815592674,-104.9965056,39.7336859,-104.9968556,39.7354212
-9215,7117,7226,0.162883394969853,0.162883394969853,-104.9968556,39.7354212,-104.9971131,39.7368726
-9217,7227,7228,0.0929813395053153,0.0929813395053153,-104.9964704,39.7584562,-104.9964723,39.7592924
-9218,7228,7229,0.0382886967355643,0.0382886967355643,-104.9964723,39.7592924,-104.996479,39.7596367
-9220,5754,5537,0.136674994706822,0.136674994706822,-104.9960241,39.7730069,-104.9959296,39.7742339
-9222,7230,2419,0.0601608416165443,0.0601608416165443,-104.9960543,39.7699637,-104.9960628,39.7705047
-9224,7231,1877,0.0370441528846065,0.0370441528846065,-104.9903483,39.7057878,-104.9899153,39.7057918
-9225,1877,7232,0.131692111532173,0.131692111532173,-104.9899153,39.7057918,-104.9883759,39.7057847
-9227,7233,7234,0.109254283787097,0.109254283787097,-104.9875581,39.7057416,-104.9862815,39.7057131
-9228,7234,7235,0.0988980977520615,0.0988980977520615,-104.9862815,39.7057131,-104.9851255,39.7057028
-9229,7235,7236,0.100150595242985,0.100150595242985,-104.9851255,39.7057028,-104.9839553,39.705676
-9230,7236,7237,0.0982491727225652,0.0982491727225652,-104.9839553,39.705676,-104.9828076,39.7057088
-9231,7237,7238,0.102801611377818,0.102801611377818,-104.9828076,39.7057088,-104.981606,39.7057212
-9232,7238,3624,0.10072637054969,0.10072637054969,-104.981606,39.7057212,-104.9804286,39.7057129
-9233,3624,7239,0.0490877236423196,0.0490877236423196,-104.9804286,39.7057129,-104.9798548,39.7057161
-9234,7239,7240,0.0506406047895119,0.0506406047895119,-104.9798548,39.7057161,-104.9792633,39.7057342
-9236,7241,7242,0.053434962453162,0.053434962453162,-104.9786816,39.7057151,-104.978057,39.7057102
-9238,7243,2049,0.0999533143701506,0.0999533143701506,-104.9686775,39.7056856,-104.9675091,39.7056815
-9239,2049,6322,0.101276003642563,0.101276003642563,-104.9675091,39.7056815,-104.9663254,39.7056659
-9240,6322,7245,0.101332248433824,0.101332248433824,-104.9663254,39.7056659,-104.9651409,39.7056725
-9241,7245,7246,0.0464773018813961,0.0464773018813961,-104.9651409,39.7056725,-104.9645976,39.7056725
-9242,7246,3478,0.0519094915924,0.0519094915924,-104.9645976,39.7056725,-104.9639908,39.7056725
-9243,3478,7247,0.0444674652348498,0.0444674652348498,-104.9639908,39.7056725,-104.963471,39.7056744
-9244,7247,6076,0.0542711695249793,0.0542711695249793,-104.963471,39.7056744,-104.9628366,39.7056767
-9245,6076,7248,0.0457685619049607,0.0457685619049607,-104.9628366,39.7056767,-104.9623016,39.7056798
-9246,7248,3693,0.0511581578497335,0.0511581578497335,-104.9623016,39.7056798,-104.9617036,39.7056833
-9247,3693,7249,0.0484213428818718,0.0484213428818718,-104.9617036,39.7056833,-104.9611376,39.7056792
-9248,7249,4568,0.050423249762551,0.050423249762551,-104.9611376,39.7056792,-104.9605482,39.7056749
-9249,4568,7250,0.105671525256593,0.105671525256593,-104.9605482,39.7056749,-104.959313,39.7056659
-9251,3486,5352,0.142707971743977,0.142707971743977,-104.9294222,39.7052339,-104.9277592,39.7051328
-9252,5352,5389,0.0672375375003041,0.0672375375003041,-104.9277592,39.7051328,-104.9269733,39.705141
-9254,6807,7251,0.174038770872886,0.174038770872886,-104.9241221,39.7053959,-104.9220909,39.7054841
-9255,5582,7252,0.0700127444942287,0.0700127444942287,-105.0439618,39.7810973,-105.0431425,39.7811012
-9256,3438,7253,0.0456922323357007,0.0456922323357007,-105.0345914,39.7810741,-105.0351261,39.7810763
-9257,7253,5712,0.0536735809918437,0.0536735809918437,-105.0351261,39.7810763,-105.0357542,39.7810788
-9258,5712,7254,0.0996465050991051,0.0996465050991051,-105.0357542,39.7810788,-105.0369203,39.7810777
-9259,7254,7177,0.0990312619116669,0.0990312619116669,-105.0369203,39.7810777,-105.0380792,39.7810765
-9261,2234,5135,0.107869698056021,0.107869698056021,-104.937292,39.7328682,-104.9373097,39.7338382
-9263,5150,4905,0.0686856789021931,0.0686856789021931,-104.9373129,39.7340572,-104.9372922,39.7346747
-9264,4905,6617,0.200618729294218,0.200618729294218,-104.9372922,39.7346747,-104.9372854,39.7364789
-9265,6617,7255,0.197431040074393,0.197431040074393,-104.9372854,39.7364789,-104.937234,39.738254
-9266,7255,7256,0.208183749937444,0.208183749937444,-104.937234,39.738254,-104.9372502,39.7401262
-9267,7256,645,0.141740585620374,0.141740585620374,-104.9372502,39.7401262,-104.9372542,39.7414009
-9268,645,7257,0.130628958724451,0.130628958724451,-104.9372542,39.7414009,-104.937237,39.7425756
-9269,7257,1991,0.0908850253123808,0.0908850253123808,-104.937237,39.7425756,-104.9372254,39.7433929
-9270,1991,1975,0.0373563291181619,0.0373563291181619,-104.9372254,39.7433929,-104.9372332,39.7437288
-9271,1975,4592,0.133760117820733,0.133760117820733,-104.9372332,39.7437288,-104.9372215,39.7449317
-9272,4592,6479,0.133361447138617,0.133361447138617,-104.9372215,39.7449317,-104.9372075,39.746131
-9273,6479,2465,0.142787478559072,0.142787478559072,-104.9372075,39.746131,-104.9372165,39.7474151
-9275,7258,905,0.276860539558146,0.276860539558146,-104.9368356,39.7619935,-104.9368593,39.7644833
-9276,905,7259,0.128469118479352,0.128469118479352,-104.9368593,39.7644833,-104.936828,39.7656384
-9278,7260,7261,0.202325557275685,0.202325557275685,-104.9371488,39.7256129,-104.93713,39.7274324
-9279,7261,7262,0.200099452464053,0.200099452464053,-104.93713,39.7274324,-104.9370272,39.7292302
-9281,6555,7263,0.106048977208119,0.106048977208119,-104.9371056,39.724358,-104.9371139,39.7253117
-9283,2464,5907,0.204805215249635,0.204805215249635,-104.9373281,39.7474151,-104.9372594,39.7492562
-9284,5907,7264,0.200064951669816,0.200064951669816,-104.9372594,39.7492562,-104.9372465,39.7510554
-9285,7264,792,0.198575253788857,0.198575253788857,-104.9372465,39.7510554,-104.937233,39.7528412
-9286,792,7265,0.203153130979463,0.203153130979463,-104.937233,39.7528412,-104.937233,39.7546682
-20553,10855,10830,0.00226863418878014,0.00226863418878014,-105.020438,39.7583443,-105.0204376,39.7583647
-9287,7265,4356,0.200718125919129,0.200718125919129,-104.937233,39.7546682,-104.93723,39.7564733
-9288,4356,7266,0.203231013450801,0.203231013450801,-104.93723,39.7564733,-104.9372284,39.758301
-9289,7266,3059,0.208369469805255,0.208369469805255,-104.9372284,39.758301,-104.9372198,39.7601749
-9290,3059,7267,0.184116398047724,0.184116398047724,-104.9372198,39.7601749,-104.9371963,39.7618306
-9292,7268,7269,0.172274443384772,0.172274443384772,-104.9373314,39.7162377,-104.937334,39.717787
-9293,7269,7270,0.174965358395498,0.174965358395498,-104.937334,39.717787,-104.9373314,39.7193605
-9294,7270,7271,0.171051925436011,0.171051925436011,-104.9373314,39.7193605,-104.9373374,39.7208988
-9295,7271,4777,0.251271094456806,0.251271094456806,-104.9373374,39.7208988,-104.9371074,39.7231516
-9297,7272,7273,0.142786274588455,0.142786274588455,-104.9405891,39.7425825,-104.9389193,39.7425624
-9298,7273,7257,0.143845033730321,0.143845033730321,-104.9389193,39.7425624,-104.937237,39.7425756
-9299,7257,2012,0.148104007431453,0.148104007431453,-104.937237,39.7425756,-104.9355048,39.7425756
-9300,2012,7274,0.146908840218292,0.146908840218292,-104.9355048,39.7425756,-104.9337866,39.742569
-9303,3209,6121,0.198338421830571,0.198338421830571,-104.9651422,39.7110945,-104.9651409,39.7093108
-9305,1920,7245,0.200452444306493,0.200452444306493,-104.9651495,39.7074752,-104.9651409,39.7056725
-9306,7245,3264,0.201454965709232,0.201454965709232,-104.9651409,39.7056725,-104.965154,39.7038608
-9307,3264,7275,0.199928677430985,0.199928677430985,-104.965154,39.7038608,-104.9651573,39.7020628
-9308,7275,75,0.205218774272454,0.205218774272454,-104.9651573,39.7020628,-104.9651905,39.7002174
-9309,75,3514,0.203667659516003,0.203667659516003,-104.9651905,39.7002174,-104.965228,39.698386
-9310,3514,4256,0.200449218475779,0.200449218475779,-104.965228,39.698386,-104.9652055,39.6965834
-9312,7276,7277,0.199018039984475,0.199018039984475,-104.9652088,39.6947654,-104.9652174,39.6929756
-9314,3099,7278,0.127218718588174,0.127218718588174,-104.9652044,39.7127074,-104.9651186,39.7115652
-9315,7279,7280,0.0142903725965103,0.0142903725965103,-105.0017875,39.7595933,-105.0017017,39.7597036
-9316,7280,7281,0.105207552208829,0.105207552208829,-105.0017017,39.7597036,-105.0005447,39.7600263
-9317,7282,7283,0.0344899807253543,0.0344899807253543,-104.9875556,39.7021328,-104.9871988,39.7019884
-9318,7283,221,0.0709873405596775,0.0709873405596775,-104.9871988,39.7019884,-104.9863694,39.7019694
-9319,221,484,0.00880336166381634,0.00880336166381634,-104.9863694,39.7019694,-104.9862665,39.7019699
-9320,484,7284,0.0467023879280561,0.0467023879280561,-104.9862665,39.7019699,-104.9857206,39.701971
-9321,7284,7285,0.0520434565562666,0.0520434565562666,-104.9857206,39.701971,-104.9851123,39.7019661
-9322,7285,7286,0.0966986010135768,0.0966986010135768,-104.9851123,39.7019661,-104.983982,39.7019687
-9324,7287,7288,0.0474221057340072,0.0474221057340072,-104.9833604,39.7019722,-104.9828061,39.7019753
-9325,7288,7289,0.0544896557893494,0.0544896557893494,-104.9828061,39.7019753,-104.9821695,39.701991
-18313,7291,7292,0.0491935106031602,0.0491935106031602,-105.0324737,39.7711548,-105.0330488,39.7711732
-12266,8623,8624,0.00987394368395642,0.00987394368395642,-105.0065475,39.7556498,-105.006432,39.7556507
-9326,7289,7293,0.050792182381771,0.050792182381771,-104.9821695,39.701991,-104.9815761,39.7020057
-9327,7293,7294,0.0490541601102182,0.0490541601102182,-104.9815761,39.7020057,-104.9810028,39.7020136
-9328,7294,3625,0.0491311379128154,0.0491311379128154,-104.9810028,39.7020136,-104.9804286,39.7020215
-9329,3625,7295,0.0500044548990436,0.0500044548990436,-104.9804286,39.7020215,-104.9798441,39.7020215
-9330,7295,7296,0.0493114932484129,0.0493114932484129,-104.9798441,39.7020215,-104.9792677,39.7020215
-9331,7296,7297,0.0492273088766844,0.0492273088766844,-104.9792677,39.7020215,-104.9786923,39.7020248
-9332,7297,7298,0.0497149327544833,0.0497149327544833,-104.9786923,39.7020248,-104.9781112,39.7020281
-9333,7298,7299,0.052416983039433,0.052416983039433,-104.9781112,39.7020281,-104.9774985,39.7020281
-9334,7299,1775,0.0489179547921138,0.0489179547921138,-104.9774985,39.7020281,-104.9769267,39.7020281
-9335,1775,7300,0.0992252392752366,0.0992252392752366,-104.9769267,39.7020281,-104.9757669,39.7020355
-9338,1523,7301,0.0991304181855472,0.0991304181855472,-104.9745731,39.702049,-104.9734144,39.7020424
-9340,4180,7302,0.159005264658095,0.159005264658095,-104.9922008,39.7021389,-104.9940584,39.7020918
-9342,7303,7304,0.0508070845581107,0.0508070845581107,-104.968686,39.7020471,-104.9680922,39.7020547
-9344,2051,7305,0.0464895652372381,0.0464895652372381,-104.9674661,39.7020628,-104.9669227,39.7020659
-9346,6323,7306,0.0487652334573382,0.0487652334573382,-104.9663246,39.7020694,-104.9657546,39.7020662
-9347,7306,7275,0.0511008721086019,0.0511008721086019,-104.9657546,39.7020662,-104.9651573,39.7020628
-9348,7275,7307,0.0472167292045061,0.0472167292045061,-104.9651573,39.7020628,-104.9646054,39.7020597
-9349,7307,3479,0.0519136696037329,0.0519136696037329,-104.9646054,39.7020597,-104.9639986,39.7020562
-9350,3479,7308,0.0469673771341736,0.0469673771341736,-104.9639986,39.7020562,-104.9634496,39.7020562
-9351,7308,6077,0.0514245726695928,0.0514245726695928,-104.9634496,39.7020562,-104.9628485,39.7020562
-9353,7309,3694,0.0517124258100223,0.0517124258100223,-104.9622856,39.7020498,-104.9616812,39.702043
-9354,3694,7310,0.0465067719763774,0.0465067719763774,-104.9616812,39.702043,-104.9611376,39.7020462
-9355,7310,4569,0.0489536209610463,0.0489536209610463,-104.9611376,39.7020462,-104.9605654,39.7020496
-9356,4569,7311,0.0489635595580148,0.0489635595580148,-104.9605654,39.7020496,-104.9599932,39.7020401
-9357,7311,7312,0.0558091568866214,0.0558091568866214,-104.9599932,39.7020401,-104.959341,39.7020293
-9359,5166,6862,0.178524347295205,0.178524347295205,-104.9485858,39.7162531,-104.9485924,39.7146476
-10575,7382,7866,0.0530283440074436,0.0530283440074436,-105.0337009,39.7197539,-105.0343209,39.7197519
-9361,5665,7313,0.0484754519993524,0.0484754519993524,-104.9486082,39.7033386,-104.9485996,39.7029027
-9362,7313,7314,0.161386441141289,0.161386441141289,-104.9485996,39.7029027,-104.9489488,39.7014764
-9363,7314,57,0.142345062746265,0.142345062746265,-104.9489488,39.7014764,-104.9487429,39.7002061
-9365,3497,7315,0.199650199137315,0.199650199137315,-104.9488372,39.6983858,-104.9488718,39.6965905
-9366,7315,7316,0.20195222577189,0.20195222577189,-104.9488718,39.6965905,-104.9488718,39.6947743
-9368,7317,7318,0.0198371749129227,0.0198371749129227,-104.9558194,39.7180363,-104.9558194,39.7182147
-9369,7318,2347,0.132104544578518,0.132104544578518,-104.9558194,39.7182147,-104.9558328,39.7194027
-9370,2347,4152,0.17573096379452,0.17573096379452,-104.9558328,39.7194027,-104.9558113,39.720983
-9371,4152,4739,0.172852869151079,0.172852869151079,-104.9558113,39.720983,-104.9558154,39.7225375
-9372,4739,6534,0.176755786446123,0.176755786446123,-104.9558154,39.7225375,-104.9558194,39.7241271
-9373,6534,7319,0.165399065875657,0.165399065875657,-104.9558194,39.7241271,-104.9558381,39.7256145
-9376,1193,7321,0.0221951663944447,0.0221951663944447,-104.9555538,39.7271183,-104.9555518,39.7273179
-9377,7321,3785,0.200018254719297,0.200018254719297,-104.9555518,39.7273179,-104.9555585,39.7291167
-9379,6356,2387,0.110864888603468,0.110864888603468,-104.9541524,39.7728932,-104.9541313,39.7738901
-9380,2387,7322,0.139379472361554,0.139379472361554,-104.9541313,39.7738901,-104.9541485,39.7751435
-9381,7322,7323,0.046481070265731,0.046481070265731,-104.9541485,39.7751435,-104.954144,39.7755615
-9382,7323,745,0.0926146092564692,0.0926146092564692,-104.954144,39.7755615,-104.954147,39.7763944
-9383,745,1563,0.142337228385207,0.142337228385207,-104.954147,39.7763944,-104.9541741,39.7776743
-9384,1563,7324,0.139015648234869,0.139015648234869,-104.9541741,39.7776743,-104.9541282,39.778924
-9385,7324,7325,0.121637038292373,0.121637038292373,-104.9541282,39.778924,-104.9541227,39.7800179
-9387,7326,1054,0.0187920378071022,0.0187920378071022,-104.954122,39.7801258,-104.9541213,39.7802948
-9388,1054,7327,0.1804815052178,0.1804815052178,-104.9541213,39.7802948,-104.9541142,39.7819179
-9389,7327,7328,0.200952784069958,0.200952784069958,-104.9541142,39.7819179,-104.9541227,39.7837251
-9390,7328,2873,0.135770477885413,0.135770477885413,-104.9541227,39.7837251,-104.9541301,39.7849461
-9391,2873,7329,0.140734857106897,0.140734857106897,-104.9541301,39.7849461,-104.9541142,39.7862117
-9392,7329,7330,0.130551116437319,0.130551116437319,-104.9541142,39.7862117,-104.954097,39.7873857
-9394,3573,5641,0.135671111475822,0.135671111475822,-104.954935,39.7545002,-104.954926,39.7557203
-9395,5641,4346,0.139178472263861,0.139178472263861,-104.954926,39.7557203,-104.9549522,39.7569718
-9397,6344,3047,0.139334930188281,0.139334930188281,-104.9549352,39.7582063,-104.9548745,39.7594585
-9398,3047,7331,0.13779347001033,0.13779347001033,-104.9548745,39.7594585,-104.9548797,39.7606977
-9399,7331,7332,0.00320242529462838,0.00320242529462838,-104.9548797,39.7606977,-104.9548798,39.7607265
-9400,7332,7333,0.124149220639337,0.124149220639337,-104.9548798,39.7607265,-104.9548815,39.761843
-9401,7333,7334,0.0152895413448354,0.0152895413448354,-104.9548815,39.761843,-104.9548825,39.7619805
-9402,7334,1168,0.139240705026111,0.139240705026111,-104.9548825,39.7619805,-104.9548921,39.7632327
-9403,1168,888,0.137184892852111,0.137184892852111,-104.9548921,39.7632327,-104.9548685,39.7644663
-9404,888,4473,0.140290329638987,0.140290329638987,-104.9548685,39.7644663,-104.9548351,39.7657277
-9405,4473,2795,0.133122605689938,0.133122605689938,-104.9548351,39.7657277,-104.9548363,39.7669249
-18387,8972,8990,0.0135489498420418,0.0135489498420418,-105.025167,39.7603517,-105.0252879,39.7604305
-9406,2795,5263,0.132274155849312,0.132274155849312,-104.9548363,39.7669249,-104.9547977,39.7681141
-9408,5264,7335,0.142105114812744,0.142105114812744,-104.9542913,39.7681128,-104.954435,39.769386
-9409,7336,7337,0.0976207961374284,0.0976207961374284,-104.9551363,39.7328385,-104.9551277,39.7337164
-9410,7337,4886,0.157275932372423,0.157275932372423,-104.9551277,39.7337164,-104.9551513,39.7351307
-9411,4886,7338,0.185720302610988,0.185720302610988,-104.9551513,39.7351307,-104.9551086,39.7368006
-9412,7338,5484,0.174899259954025,0.174899259954025,-104.9551086,39.7368006,-104.955149,39.7383732
-9413,5484,7339,0.200596009359583,0.200596009359583,-104.955149,39.7383732,-104.9551239,39.7401771
-9415,7001,7340,0.179314344082203,0.179314344082203,-104.9316416,39.7162506,-104.9316333,39.714638
-9416,7340,3105,0.172536320867715,0.172536320867715,-104.9316333,39.714638,-104.9316505,39.7130864
-9417,3105,7341,0.196295851159965,0.196295851159965,-104.9316505,39.7130864,-104.9316369,39.7113211
-9418,7341,7342,0.0146987319128723,0.0146987319128723,-104.9316369,39.7113211,-104.9316306,39.711189
-9419,7342,5274,0.233778976885029,0.233778976885029,-104.9316306,39.711189,-104.93153,39.709088
-9421,61,3550,0.201334976523304,0.201334976523304,-104.931714,39.700208,-104.931651,39.698398
-9423,4229,1512,0.0573285646726125,0.0573285646726125,-104.931645,39.696598,-104.931734,39.696087
-9424,1512,1812,0.080316497766985,0.080316497766985,-104.931734,39.696087,-104.9317181,39.6953648
-9425,1812,1792,0.0864981124104349,0.0864981124104349,-104.9317181,39.6953648,-104.931734,39.694587
-9426,1792,5766,0.0789087886834876,0.0789087886834876,-104.931734,39.694587,-104.9316752,39.6938788
-9427,5766,7199,0.0992911764787047,0.0992911764787047,-104.9316752,39.6938788,-104.931734,39.692987
-9428,7199,6828,0.11119492664509,0.11119492664509,-104.931734,39.692987,-104.931734,39.691987
-9429,6828,5849,0.0944254133826228,0.0944254133826228,-104.931734,39.691987,-104.9317181,39.6911379
-9430,5849,6009,0.0132155676036954,0.0132155676036954,-104.9317181,39.6911379,-104.9317136,39.6910191
-9431,6009,6306,0.0820521132716854,0.0820521132716854,-104.9317136,39.6910191,-104.9316857,39.6902815
-9432,6306,7343,0.105450198242036,0.105450198242036,-104.9316857,39.6902815,-104.9316965,39.6893332
-9433,7343,6621,0.143519415278471,0.143519415278471,-104.9316965,39.6893332,-104.9316943,39.6880425
-9434,6621,7344,1.27038946039582,1.27038946039582,-104.9316943,39.6880425,-104.9316364,39.6766177
-9437,4173,4758,0.21160422195521,0.21160422195521,-104.966736,39.720087,-104.96674,39.72199
-9439,7347,7348,0.135937832662874,0.135937832662874,-104.9671878,39.748204,-104.9671965,39.7494265
-9440,7348,7349,0.00392915540186096,0.00392915540186096,-104.9671965,39.7494265,-104.9671912,39.7494616
-9441,7349,7350,0.00435925191977174,0.00435925191977174,-104.9671912,39.7494616,-104.9671905,39.7495008
-9442,7350,7351,0.134680718743296,0.134680718743296,-104.9671905,39.7495008,-104.967169,39.7507119
-9443,7351,7352,0.142353643667365,0.142353643667365,-104.967169,39.7507119,-104.9671604,39.7519921
-9444,7352,822,0.136144392169031,0.136144392169031,-104.9671604,39.7519921,-104.9672048,39.753216
-9445,822,3563,0.139511434934294,0.139511434934294,-104.9672048,39.753216,-104.9671659,39.7544703
-9447,4757,6547,0.198421257470946,0.198421257470946,-104.9671402,39.7219786,-104.9671106,39.7237629
-9448,6547,7353,0.203512578195826,0.203512578195826,-104.9671106,39.7237629,-104.9671248,39.7255931
-9449,7353,7354,0.189733642798723,0.189733642798723,-104.9671248,39.7255931,-104.9671343,39.7272994
-9450,7354,3791,0.198902472958717,0.198902472958717,-104.9671343,39.7272994,-104.9671553,39.7290881
-9452,7356,1156,0.139895555737197,0.139895555737197,-104.9671912,39.761995,-104.9671402,39.7632525
-9453,1156,877,0.139167763247538,0.139167763247538,-104.9671402,39.7632525,-104.9671933,39.7645034
-9454,877,4465,0.138362926550376,0.138362926550376,-104.9671933,39.7645034,-104.9671825,39.7657477
-9455,4465,2785,0.134223449290719,0.134223449290719,-104.9671825,39.7657477,-104.9671839,39.7669548
-9456,2785,5256,0.132255447080442,0.132255447080442,-104.9671839,39.7669548,-104.9671812,39.7681442
-10701,7933,7934,0.0165824928197296,0.0165824928197296,-104.9950255,39.7656809,-104.9948315,39.7656825
-9457,5256,6902,0.213396689593523,0.213396689593523,-104.9671812,39.7681442,-104.9671691,39.7700633
-9458,6902,7357,0.137952680025601,0.137952680025601,-104.9671691,39.7700633,-104.967212,39.7713035
-9460,7358,7359,0.0873817304884455,0.0873817304884455,-104.9672193,39.7360482,-104.9672536,39.7368336
-9461,7359,5476,0.17425617170475,0.17425617170475,-104.9672536,39.7368336,-104.9672122,39.7384004
-9462,5476,7360,0.176755476074969,0.176755476074969,-104.9672122,39.7384004,-104.9672112,39.73999
-9463,7360,7361,0.179271064370159,0.179271064370159,-104.9672112,39.73999,-104.9672225,39.7416022
-9464,7361,670,0.00299320804688776,0.00299320804688776,-104.9672225,39.7416022,-104.9672238,39.7416291
-9465,670,7362,0.00367138449467953,0.00367138449467953,-104.9672238,39.7416291,-104.9672252,39.7416621
-9466,7362,7363,0.175413304982356,0.175413304982356,-104.9672252,39.7416621,-104.9672126,39.7432396
-9467,7363,4602,0.174300257248449,0.174300257248449,-104.9672126,39.7432396,-104.9672651,39.7448066
-9468,4602,6494,0.14109328269368,0.14109328269368,-104.9672651,39.7448066,-104.9672196,39.746075
-9470,6339,3027,0.140999530277673,0.140999530277673,-104.9671608,39.7582241,-104.9672089,39.7594916
-9471,3027,7364,0.134294188280294,0.134294188280294,-104.9672089,39.7594916,-104.9671778,39.7606991
-9472,7364,7367,0.00539295394286677,0.00539295394286677,-104.9671778,39.7606991,-104.9671778,39.7607476
-9473,7367,7368,0.0958510973743428,0.0958510973743428,-104.9671778,39.7607476,-104.9671831,39.7616096
-9474,7369,7370,0.0190810494123846,0.0190810494123846,-104.9665185,39.7181803,-104.9665185,39.7183519
-9475,7370,4174,0.200419085556528,0.200419085556528,-104.9665185,39.7183519,-104.9665271,39.7201543
-9476,4174,4759,0.205255972403598,0.205255972403598,-104.9665271,39.7201543,-104.9665355,39.7220002
-9478,7371,1504,0.200818042076817,0.200818042076817,-105.0309982,39.6967219,-105.0309987,39.6949159
-9479,1504,177,0.202381091183512,0.202381091183512,-105.0309987,39.6949159,-105.03098,39.6930959
-9481,7048,5860,0.176960295698989,0.176960295698989,-105.0312304,39.7165547,-105.0311875,39.7149636
-9482,5860,1308,0.177680958846967,0.177680958846967,-105.0311875,39.7149636,-105.0312133,39.7133658
-9483,1308,7372,0.242287040915104,0.242287040915104,-105.0312133,39.7133658,-105.0312304,39.7111869
-9485,7373,7374,0.0554606112260645,0.0554606112260645,-105.0253069,39.7683544,-105.0259557,39.7683632
-9486,7374,6759,0.139083865409791,0.139083865409791,-105.0259557,39.7683632,-105.027583,39.7683586
-9487,6759,3983,0.201208667852087,0.201208667852087,-105.027583,39.7683586,-105.0299371,39.7683433
-9488,3983,7042,0.200146227687253,0.200146227687253,-105.0299371,39.7683433,-105.0322788,39.7683312
-9489,7042,3429,0.200588668938452,0.200588668938452,-105.0322788,39.7683312,-105.0346257,39.7683222
-9491,7375,7376,0.134975501915893,0.134975501915893,-105.0330349,39.7767308,-105.0330187,39.7779446
-9492,7376,2494,0.132763759551609,0.132763759551609,-105.0330187,39.7779446,-105.0330359,39.7791385
-9493,2494,2841,0.125447252672452,0.125447252672452,-105.0330359,39.7791385,-105.0330101,39.7802665
-9495,7377,1766,0.0535653036014808,0.0535653036014808,-105.0334347,39.7548479,-105.0334284,39.7553296
-9496,1766,7378,0.148946577862237,0.148946577862237,-105.0334284,39.7553296,-105.0334347,39.7566691
-9497,7378,7379,0.151136159766357,0.151136159766357,-105.0334347,39.7566691,-105.0334355,39.7580283
-9498,7379,2978,0.0542010510807056,0.0542010510807056,-105.0334355,39.7580283,-105.0334272,39.7585157
-9500,6210,7380,0.184339220967731,0.184339220967731,-105.0337279,39.7260547,-105.0337242,39.7277125
-9501,7380,7381,0.177783326711723,0.177783326711723,-105.0337242,39.7277125,-105.0337396,39.7293113
-9503,7055,4046,0.178402656739544,0.178402656739544,-105.0337024,39.7165547,-105.0336938,39.7181591
-9504,4046,7382,0.177334708763743,0.177334708763743,-105.0336938,39.7181591,-105.0337009,39.7197539
-9505,7382,1847,0.175265460280809,0.175265460280809,-105.0337009,39.7197539,-105.0337,39.7213301
-9506,1847,2581,0.177411624203835,0.177411624203835,-105.0337,39.7213301,-105.0337024,39.7229256
-9508,5179,7383,0.0621659509396009,0.0621659509396009,-105.0337195,39.7245298,-105.0336341,39.725085
-9510,7384,5530,0.101603812835917,0.101603812835917,-105.033438,39.773186,-105.033486,39.774099
-9511,5530,6476,0.0959541548395336,0.0959541548395336,-105.033486,39.774099,-105.0333983,39.7749593
-9512,6476,7385,0.197309689587966,0.197309689587966,-105.0333983,39.7749593,-105.0333812,39.7767337
-9514,7386,4578,0.133367493492184,0.133367493492184,-105.0330679,39.7403194,-105.0330646,39.7415188
-9515,4578,6442,0.135224444657643,0.135224444657643,-105.0330646,39.7415188,-105.0330679,39.7427349
-9516,6442,5294,0.135202388191056,0.135202388191056,-105.0330679,39.7427349,-105.0330637,39.7439508
-9517,5294,6971,0.132090452543352,0.132090452543352,-105.0330637,39.7439508,-105.0330722,39.7451387
-9519,7387,6793,0.0526421759963202,0.0526421759963202,-105.0330656,39.7694876,-105.0330596,39.769961
-9520,6793,2426,0.0832334466071371,0.0832334466071371,-105.0330596,39.769961,-105.03305,39.7707095
-9521,2426,7292,0.0515611894823623,0.0515611894823623,-105.03305,39.7707095,-105.0330488,39.7711732
-9522,7292,3230,0.0818841223845197,0.0818841223845197,-105.0330488,39.7711732,-105.0330468,39.7719096
-9523,3230,7388,0.142866769580008,0.142866769580008,-105.0330468,39.7719096,-105.033238,39.773186
-9525,7389,7390,0.203322823967769,0.203322823967769,-105.0332722,39.7293161,-105.0332849,39.7311446
-9529,7391,7392,0.135325738854945,0.135325738854945,-105.033138,39.748786,-105.0330703,39.7500019
-9530,7392,7393,0.132395815694125,0.132395815694125,-105.0330703,39.7500019,-105.0331086,39.7511922
-9531,7393,7394,0.135014881681412,0.135014881681412,-105.0331086,39.7511922,-105.0331,39.7524064
-9532,7394,7395,0.132077333868835,0.132077333868835,-105.0331,39.7524064,-105.0331,39.7535942
-9535,7397,621,0.0257970801977961,0.0257970801977961,-105.0333294,39.7363199,-105.0333206,39.7365518
-9537,4075,6060,0.199263565882924,0.199263565882924,-105.0333673,39.7838362,-105.0333562,39.7856282
-9538,6060,5800,0.199550446273018,0.199550446273018,-105.0333562,39.7856282,-105.0333549,39.7874228
-9540,7398,3097,0.199450454556748,0.199450454556748,-104.9686917,39.7147256,-104.9686892,39.7129319
-9541,3097,3207,0.202536688546866,0.202536688546866,-104.9686892,39.7129319,-104.9687078,39.7111105
-9542,3207,6119,0.201707926741417,0.201707926741417,-104.9687078,39.7111105,-104.9686581,39.7092969
-9543,6119,1917,0.201109266380341,0.201109266380341,-104.9686581,39.7092969,-104.9686689,39.7074883
-9544,1917,7243,0.20045244430598,0.20045244430598,-104.9686689,39.7074883,-104.9686775,39.7056856
-9545,7243,594,0.202390514467061,0.202390514467061,-104.9686775,39.7056856,-104.9686935,39.7038655
-9547,7399,5843,0.208569621956493,0.208569621956493,-104.9687279,39.6929756,-104.9687193,39.6910999
-9549,7400,5659,0.10300363118025,0.10300363118025,-104.9687412,39.6893196,-104.9687309,39.6883933
-9550,5659,7401,0.0544972381418925,0.0544972381418925,-104.9687309,39.6883933,-104.9687279,39.6879032
-9552,6194,6950,0.191455920710939,0.191455920710939,-104.982919,39.7801891,-104.9829139,39.7819109
-9553,6950,7402,0.209004541630565,0.209004541630565,-104.9829139,39.7819109,-104.9829018,39.7837905
-9555,4943,7403,0.0144437903083984,0.0144437903083984,-104.9952896,39.7400105,-104.995301,39.7401401
-9556,7403,3000,0.101061674656442,0.101061674656442,-104.995301,39.7401401,-104.9961353,39.7407839
-9558,6639,3962,0.136668682711291,0.136668682711291,-104.9985703,39.7165902,-105.0001681,39.7165803
-9559,3962,4361,0.121869293781819,0.121869293781819,-105.0001681,39.7165803,-105.0015929,39.7165869
-20411,9207,10780,0.0112983850763668,0.0112983850763668,-105.0250726,39.7601228,-105.0250471,39.7600231
-9561,5171,5225,0.145976272368254,0.145976272368254,-104.9874858,39.7165623,-104.9891924,39.7165504
-9562,5225,1866,0.0654044096593951,0.0654044096593951,-104.9891924,39.7165504,-104.9899563,39.7165768
-9563,1866,5084,0.0770856255669816,0.0770856255669816,-104.9899563,39.7165768,-104.9908575,39.7165834
-9564,5084,2809,0.113066726070966,0.113066726070966,-104.9908575,39.7165834,-104.9921793,39.7165966
-9565,2809,3368,0.152693063908693,0.152693063908693,-104.9921793,39.7165966,-104.9939645,39.7165966
-9566,3368,7404,0.0530057643448654,0.0530057643448654,-104.9939645,39.7165966,-104.9945842,39.7165997
-9567,7404,4944,0.0497811011847154,0.0497811011847154,-104.9945842,39.7165997,-104.9951662,39.7166026
-9568,4944,7405,0.0515530101953733,0.0515530101953733,-104.9951662,39.7166026,-104.9957689,39.7166071
-9569,7405,7217,0.0502978935844785,0.0502978935844785,-104.9957689,39.7166071,-104.9963567,39.7165938
-9570,7217,7406,0.0537233169488665,0.0537233169488665,-104.9963567,39.7165938,-104.9969848,39.7165925
-9571,7406,7407,0.0412354910733997,0.0412354910733997,-104.9969848,39.7165925,-104.9974669,39.7165915
-9572,6416,4212,0.100784166153009,0.100784166153009,-105.0172314,39.7170829,-105.018373,39.7168584
-9573,4212,190,0.175257609965618,0.175257609965618,-105.018373,39.7168584,-105.0203986,39.7166208
-9574,190,4532,0.201882877149858,0.201882877149858,-105.0203986,39.7166208,-105.0227589,39.7166208
-9575,4532,5431,0.198227529862783,0.198227529862783,-105.0227589,39.7166208,-105.0250764,39.7166076
-9576,5431,5972,0.107244272330712,0.107244272330712,-105.0250764,39.7166076,-105.0263295,39.7165745
-9577,5972,2255,0.104270609577454,0.104270609577454,-105.0263295,39.7165745,-105.0275483,39.7165547
-9578,2255,6131,0.104982960169425,0.104982960169425,-105.0275483,39.7165547,-105.0287757,39.7165547
-9579,6131,3998,0.104249966263654,0.104249966263654,-105.0287757,39.7165547,-105.0299945,39.7165481
-9580,3998,7048,0.105712541492873,0.105712541492873,-105.0299945,39.7165481,-105.0312304,39.7165547
-9581,7048,1393,0.105952500116488,0.105952500116488,-105.0312304,39.7165547,-105.0324691,39.7165619
-9583,7408,7055,0.0530917174300864,0.0530917174300864,-105.0330817,39.7165583,-105.0337024,39.7165547
-9584,7055,7409,0.0515249594325266,0.0515249594325266,-105.0337024,39.7165547,-105.0343048,39.7165547
-9585,7409,3389,0.0512512544679775,0.0512512544679775,-105.0343048,39.7165547,-105.034904,39.7165547
-9586,3389,7410,0.0515249594325266,0.0515249594325266,-105.034904,39.7165547,-105.0355064,39.7165547
-9587,7410,4504,0.051986836558228,0.051986836558228,-105.0355064,39.7165547,-105.0361142,39.7165547
-9588,4504,3539,0.0507992547126353,0.0507992547126353,-105.0361142,39.7165547,-105.0367081,39.716558
-9589,3539,7411,0.0505170014633714,0.0505170014633714,-105.0367081,39.716558,-105.0372987,39.7165613
-9590,7411,7412,0.0515690276546841,0.0515690276546841,-105.0372987,39.7165613,-105.0379016,39.716558
-9592,5066,6400,0.0525526328752235,0.0525526328752235,-105.0384889,39.7165547,-105.0391033,39.716558
-9593,6400,6835,0.0526723733629873,0.0526723733629873,-105.0391033,39.716558,-105.0397191,39.7165613
-9594,6835,7413,0.0505686622438464,0.0505686622438464,-105.0397191,39.7165613,-105.0403103,39.7165576
-9595,7413,1105,0.0506198937481409,0.0506198937481409,-105.0403103,39.7165576,-105.0409021,39.716554
-9596,1105,7414,0.0824276303743622,0.0824276303743622,-105.0409021,39.716554,-105.0418648,39.7165877
-9598,3863,7415,0.0529481461592885,0.0529481461592885,-105.0432639,39.7165811,-105.0438828,39.716571
-9599,7415,6656,0.0485933921065039,0.0485933921065039,-105.0438828,39.716571,-105.0444508,39.7165618
-9600,6656,7416,0.0551266417503484,0.0551266417503484,-105.0444508,39.7165618,-105.0450953,39.7165644
-9601,7416,7417,0.698080046436177,0.698080046436177,-105.0450953,39.7165644,-105.0532563,39.7166375
-9602,3179,7418,0.0616464790427922,0.0616464790427922,-104.9535963,39.7030192,-104.9529866,39.7027237
-9603,7418,5002,0.0485639637102659,0.0485639637102659,-104.9529866,39.7027237,-104.9525063,39.7024909
-9604,5002,7419,0.0540110826611525,0.0540110826611525,-104.9525063,39.7024909,-104.9519684,39.7022366
-9605,7419,5725,0.0437502401390831,0.0437502401390831,-104.9519684,39.7022366,-104.9515323,39.7020311
-9606,5725,724,0.0271601591292424,0.0271601591292424,-104.9515323,39.7020311,-104.9512162,39.7020084
-9607,724,7059,0.100733087825974,0.100733087825974,-104.9512162,39.7020084,-104.9500388,39.7020179
-9608,7059,7314,0.111000885564944,0.111000885564944,-104.9500388,39.7020179,-104.9489488,39.7014764
-9610,7421,3610,0.212938945536276,0.212938945536276,-104.9318313,39.7628536,-104.9293406,39.7628932
-9611,3610,2128,0.151144951480704,0.151144951480704,-104.9293406,39.7628932,-104.9275725,39.7628734
-10843,154,8006,0.0789597424143419,0.0789597424143419,-104.9570001,39.7445158,-104.9569442,39.743807
-9613,5998,2327,0.147931201391184,0.147931201391184,-104.9257702,39.7628567,-104.9240401,39.7628914
-9614,2327,7422,0.151462381546094,0.151462381546094,-104.9240401,39.7628914,-104.9222681,39.7628932
-9615,2016,354,0.0832039426217647,0.0832039426217647,-104.9349971,39.720897,-104.9346635,39.7201941
-9616,354,2024,0.270665538753682,0.270665538753682,-104.9346635,39.7201941,-104.935134,39.717787
-9620,4944,7424,0.200356357596052,0.200356357596052,-104.9951662,39.7166026,-104.9951833,39.7148008
-9622,2981,7425,0.200823510551274,0.200823510551274,-105.0369709,39.7585166,-105.0369407,39.7603225
-9623,7425,7426,0.200629159279387,0.200629159279387,-105.0369407,39.7603225,-105.0369378,39.7621268
-9624,7426,7427,0.00781704540286186,0.00781704540286186,-105.0369378,39.7621268,-105.0369381,39.7621971
-9625,7427,7428,0.196215671376464,0.196215671376464,-105.0369381,39.7621971,-105.0369458,39.7639617
-9626,7428,6876,0.205224182417126,0.205224182417126,-105.0369458,39.7639617,-105.0369584,39.7658073
-9627,6876,1687,0.205021376956907,0.205021376956907,-105.0369584,39.7658073,-105.0369553,39.7676511
-9628,1687,7429,0.205696359665547,0.205696359665547,-105.0369553,39.7676511,-105.0369881,39.7695008
-9629,7429,2432,0.199163881347575,0.199163881347575,-105.0369881,39.7695008,-105.0369607,39.7712918
-9630,2432,7431,0.20247617593456,0.20247617593456,-105.0369607,39.7712918,-105.0369521,39.7731127
-9632,6213,7432,0.274944028390563,0.274944028390563,-105.0372874,39.7257681,-105.0373205,39.7282406
-9633,7432,7433,0.263513794727665,0.263513794727665,-105.0373205,39.7282406,-105.0373376,39.7306104
-9634,7433,6594,0.262579264502597,0.262579264502597,-105.0373376,39.7306104,-105.0373216,39.7329718
-9636,7254,1423,0.111990529719831,0.111990529719831,-105.0369203,39.7810777,-105.0369066,39.7820848
-10866,1577,8015,0.266859669077532,0.266859669077532,-105.0390628,39.6875658,-105.0390481,39.6851659
-9639,7434,7435,0.184117705049588,0.184117705049588,-105.0369402,39.7767242,-105.0369326,39.77838
-9640,7435,7436,0.203503143312405,0.203503143312405,-105.0369326,39.77838,-105.0369154,39.7802101
-9642,6593,7437,0.098508708246921,0.098508708246921,-105.0369834,39.7329675,-105.0369779,39.7338534
-9643,7437,7127,0.0085733378066782,0.0085733378066782,-105.0369779,39.7338534,-105.0369772,39.7339305
-9645,7411,4051,0.176201016140517,0.176201016140517,-105.0372987,39.7165613,-105.0372901,39.7181459
-9646,4051,7438,0.186623330561976,0.186623330561976,-105.0372901,39.7181459,-105.0373273,39.719824
-9647,7438,1853,0.167040016171723,0.167040016171723,-105.0373273,39.719824,-105.0373156,39.7213262
-9648,1853,2591,0.179034976108436,0.179034976108436,-105.0373156,39.7213262,-105.0373167,39.7229363
-9650,7439,6064,0.193434831975152,0.193434831975152,-105.0369233,39.7838741,-105.0369206,39.7856137
-9651,6064,2544,0.202007823415783,0.202007823415783,-105.0369206,39.7856137,-105.0369205,39.7874304
-9652,2544,7440,0.411378882387366,0.411378882387366,-105.0369205,39.7874304,-105.036936,39.79113
-9653,7129,627,0.200330694412442,0.200330694412442,-105.0369832,39.7347877,-105.0369171,39.7365886
-9655,18,6387,0.132089927812284,0.132089927812284,-105.0369187,39.746386,-105.036926,39.7475739
-9658,7443,7444,0.13397887621517,0.13397887621517,-105.036967,39.7499887,-105.036965,39.7511936
-9659,7444,5539,0.105571329036095,0.105571329036095,-105.036965,39.7511936,-105.0369449,39.7521429
-9660,5539,2407,0.0968730605007166,0.0968730605007166,-105.0369449,39.7521429,-105.0369621,39.753014
-9661,2407,4292,0.100193275722424,0.100193275722424,-105.0369621,39.753014,-105.0369756,39.753915
-9662,4292,7445,0.0505436928211805,0.0505436928211805,-105.0369756,39.753915,-105.0369668,39.7543695
-9663,7445,7446,0.0548363595380854,0.0548363595380854,-105.0369668,39.7543695,-105.0369572,39.7548626
-9665,7447,7448,0.169947053382904,0.169947053382904,-105.0151992,39.7160167,-105.0139289,39.7148415
-9667,5852,1336,0.19937663187299,0.19937663187299,-105.014337,39.714787,-105.014352,39.712994
-9668,1336,6158,0.0597086585632686,0.0597086585632686,-105.014352,39.712994,-105.01431,39.712458
-9669,6158,7449,0.153340690716036,0.153340690716036,-105.01431,39.712458,-105.014321,39.711079
-9671,7450,4365,0.199972383812324,0.199972383812324,-104.9991888,39.7075519,-105.0015264,39.7075644
-9672,4365,1447,0.201108937861992,0.201108937861992,-105.0015264,39.7075644,-105.0038773,39.7075535
-9673,1447,7451,0.20199467881708,0.20199467881708,-105.0038773,39.7075535,-105.0062376,39.7076063
-9674,7451,6664,0.0985180993542889,0.0985180993542889,-105.0062376,39.7076063,-105.0073877,39.7075601
-9675,6664,1757,0.102800794441344,0.102800794441344,-105.0073877,39.7075601,-105.0085894,39.7075535
-9676,1757,3819,0.106482209599855,0.106482209599855,-105.0085894,39.7075535,-105.0098339,39.7075733
-9677,3819,5892,0.0976679798408968,0.0976679798408968,-105.0098339,39.7075733,-105.0109755,39.7075865
-9679,5332,5070,0.101261676099905,0.101261676099905,-105.0373528,39.7079851,-105.0385346,39.7080373
-9680,5070,6838,0.100657370443561,0.100657370443561,-105.0385346,39.7080373,-105.0397105,39.7080043
-9681,6838,6967,0.0976725983678986,0.0976725983678986,-105.0397105,39.7080043,-105.040852,39.7080241
-9682,6967,7452,0.102800093286128,0.102800093286128,-105.040852,39.7080241,-105.0420537,39.7080307
-9683,7452,7453,0.0998547767838799,0.0998547767838799,-105.0420537,39.7080307,-105.043221,39.7080307
-9685,5437,7454,0.211535646678045,0.211535646678045,-105.0250692,39.7075784,-105.0275397,39.707661
-9686,7454,4416,0.194570832918176,0.194570832918176,-105.0275397,39.707661,-105.0298142,39.7076544
-9687,4416,7456,0.224677107455919,0.224677107455919,-105.0298142,39.7076544,-105.0324406,39.7076676
-9688,7456,4322,0.22100369073056,0.22100369073056,-105.0324406,39.7076676,-105.0350241,39.707661
-9692,7458,7459,0.0196177061643605,0.0196177061643605,-104.9885959,39.7075353,-104.9888252,39.7075381
-9693,7459,7460,0.0200797614980701,0.0200797614980701,-104.9888252,39.7075381,-104.9890599,39.707541
-9694,7460,7461,0.0204220717617775,0.0204220717617775,-104.9890599,39.707541,-104.9892986,39.707544
-9695,7461,7462,0.0192753952773127,0.0192753952773127,-104.9892986,39.707544,-104.9895239,39.7075467
-9696,7462,7463,0.0197376280100197,0.0197376280100197,-104.9895239,39.7075467,-104.9897546,39.7075496
-9697,7463,1874,0.0201396312288959,0.0201396312288959,-104.9897546,39.7075496,-104.98999,39.7075525
-9698,1874,7464,0.101865928676763,0.101865928676763,-104.98999,39.7075525,-104.9911808,39.7075508
-9699,7464,7465,0.0516398712444199,0.0516398712444199,-104.9911808,39.7075508,-104.9917844,39.7075576
-9700,5894,1589,0.201207684972719,0.201207684972719,-105.0109744,39.7074034,-105.0133261,39.7073704
-9701,1589,1639,0.202832052664544,0.202832052664544,-105.0133261,39.7073704,-105.0156968,39.7073378
-9703,7466,7467,0.461510399426298,0.461510399426298,-105.0431952,39.7089155,-105.0485899,39.7089671
-9704,7468,7469,0.0656477480578156,0.0656477480578156,-104.9875851,39.7084534,-104.9883525,39.7084582
-9705,7469,7470,0.0202314805703126,0.0202314805703126,-104.9883525,39.7084582,-104.988589,39.7084596
-9706,7470,7471,0.0196155905306545,0.0196155905306545,-104.988589,39.7084596,-104.9888183,39.708461
-9707,7471,7472,0.0198466389215673,0.0198466389215673,-104.9888183,39.708461,-104.9890503,39.7084625
-9709,7473,7474,0.0193760769839274,0.0193760769839274,-104.9892894,39.708464,-104.9895159,39.7084654
-10941,7859,4686,0.105458193161767,0.105458193161767,-104.992836,39.7305121,-104.9940692,39.730515
-16187,5815,7203,0.20368767335866,0.20368767335866,-104.9845543,39.6911833,-104.9845476,39.6930151
-9710,7474,7475,0.0199577496151493,0.0199577496151493,-104.9895159,39.7084654,-104.9897492,39.7084668
-9711,7475,1873,0.0221306450398483,0.0221306450398483,-104.9897492,39.7084668,-104.9900079,39.7084684
-9712,1873,7476,0.0228930859552116,0.0228930859552116,-104.9900079,39.7084684,-104.9902755,39.708471
-9713,7476,7477,0.00597945379667752,0.00597945379667752,-104.9902755,39.708471,-104.9903454,39.7084711
-9714,7477,7481,0.0633102446327588,0.0633102446327588,-104.9903454,39.7084711,-104.9910855,39.7084711
-9715,7481,7482,0.00659734634558833,0.00659734634558833,-104.9910855,39.7084711,-104.9911621,39.7084642
-9716,7482,7483,0.0122662226221965,0.0122662226221965,-104.9911621,39.7084642,-104.9913038,39.7084473
-9717,7483,7484,0.0357233876730641,0.0357233876730641,-104.9913038,39.7084473,-104.9917214,39.7084493
-9718,7484,4185,0.0600540815299224,0.0600540815299224,-104.9917214,39.7084493,-104.9924234,39.7084547
-9721,7485,4417,0.198257535408126,0.198257535408126,-105.0275311,39.708526,-105.0298486,39.7085458
-9722,4417,7486,0.220999648574169,0.220999648574169,-105.0298486,39.7085458,-105.0324321,39.7085458
-9723,7486,4321,0.223933764288424,0.223933764288424,-105.0324321,39.7085458,-105.0350499,39.7085458
-9725,4364,1446,0.20650017701017,0.20650017701017,-105.0014826,39.7083921,-105.0038944,39.7084713
-9726,1446,7487,0.199709617072806,0.199709617072806,-105.0038944,39.7084713,-105.006229,39.7084779
-9727,7487,6936,0.203411194568703,0.203411194568703,-105.006229,39.7084779,-105.0086065,39.7084449
-9728,6936,5891,0.202831423382765,0.202831423382765,-105.0086065,39.7084449,-105.0109775,39.7084624
-9730,7488,7489,0.219847500079542,0.219847500079542,-105.0416419,39.7310429,-105.0416893,39.7330197
-9731,7489,7490,0.112284636925509,0.112284636925509,-105.0416893,39.7330197,-105.0416893,39.7340295
-9733,7491,7492,0.104975617952237,0.104975617952237,-105.0416725,39.7478114,-105.0416382,39.7487551
-9734,7492,7493,0.133826104897821,0.133826104897821,-105.0416382,39.7487551,-105.0416487,39.7499586
-9735,7493,7494,0.136182988757468,0.136182988757468,-105.0416487,39.7499586,-105.0416791,39.7511831
-9737,5544,2414,0.0621561786197408,0.0621561786197408,-105.0416664,39.7521054,-105.0416538,39.7526643
-9739,5055,4297,0.0642451197659933,0.0642451197659933,-105.04162,39.753356,-105.0416469,39.7539334
-9740,4297,7495,0.104062899405527,0.104062899405527,-105.0416469,39.7539334,-105.0416607,39.7548692
-9741,7495,7496,0.203687229874764,0.203687229874764,-105.0416607,39.7548692,-105.0416562,39.756701
-9742,7496,2987,0.200108037782066,0.200108037782066,-105.0416562,39.756701,-105.0416657,39.7585006
-9743,2987,7497,0.201819339453719,0.201819339453719,-105.0416657,39.7585006,-105.0416712,39.7603156
-9744,7497,7498,0.0489089257680099,0.0489089257680099,-105.0416712,39.7603156,-105.0416627,39.7607554
-9745,7498,7499,0.151764240821653,0.151764240821653,-105.0416627,39.7607554,-105.0416365,39.7621201
-9746,7499,7500,0.203024715164671,0.203024715164671,-105.0416365,39.7621201,-105.0416198,39.7639459
-9747,7500,6882,0.202091910987955,0.202091910987955,-105.0416198,39.7639459,-105.0416508,39.7657632
-9748,6882,1693,0.203443247701908,0.203443247701908,-105.0416508,39.7657632,-105.0416583,39.7675928
-9749,1693,7501,0.204709999833149,0.204709999833149,-105.0416583,39.7675928,-105.0416611,39.7694338
-9750,7501,2441,0.166684898047837,0.166684898047837,-105.0416611,39.7694338,-105.0416481,39.7709328
-9752,5738,5527,0.157552520143968,0.157552520143968,-105.0416591,39.7724704,-105.0416634,39.7738873
-9753,5527,6465,0.155770587020073,0.155770587020073,-105.0416634,39.7738873,-105.0416343,39.775288
-9754,6465,7502,0.156429247159158,0.156429247159158,-105.0416343,39.775288,-105.0415725,39.776694
-9755,7502,7503,0.187478248770476,0.187478248770476,-105.0415725,39.776694,-105.0415589,39.77838
-9756,7503,7504,0.202724737429487,0.202724737429487,-105.0415589,39.77838,-105.041576,39.7802031
-10985,7367,5402,0.104549154022735,0.104549154022735,-104.9671778,39.7607476,-104.9659547,39.7607434
-9757,7504,1429,0.207912295088567,0.207912295088567,-105.041576,39.7802031,-105.0415749,39.7820729
-9758,1429,7189,0.130843883831593,0.130843883831593,-105.0415749,39.7820729,-105.0415695,39.7832496
-9760,6219,7505,0.274122910361615,0.274122910361615,-105.0416352,39.7257952,-105.0416549,39.7282604
-9761,7505,7506,0.19636903427064,0.19636903427064,-105.0416549,39.7282604,-105.0410987,39.7299738
-9763,2603,5189,0.177622776028071,0.177622776028071,-105.0416219,39.7229569,-105.041622,39.7245543
-9764,5189,5657,0.106425186945832,0.106425186945832,-105.041622,39.7245543,-105.0416181,39.7255114
-9766,7507,7508,0.0438255563694837,0.0438255563694837,-105.0420882,39.7176598,-105.0420948,39.7180539
-9767,7508,4058,0.0100861958439265,0.0100861958439265,-105.0420948,39.7180539,-105.0420963,39.7181446
-9768,4058,7509,0.0353348287032789,0.0353348287032789,-105.0420963,39.7181446,-105.0421052,39.7184623
-9769,7509,7510,0.141940367411715,0.141940367411715,-105.0421052,39.7184623,-105.0421039,39.7197388
-9770,7510,1860,0.1765997957518,0.1765997957518,-105.0421039,39.7197388,-105.0421031,39.721327
-9771,1860,2604,0.182058234750596,0.182058234750596,-105.0421031,39.721327,-105.0421253,39.7229642
-9773,7511,6071,0.194146348690461,0.194146348690461,-105.0415559,39.7838742,-105.0415553,39.7856202
-9774,6071,2551,0.201763197291639,0.201763197291639,-105.0415553,39.7856202,-105.0415549,39.7874347
-9776,7513,7514,0.138564330925234,0.138564330925234,-105.0416463,39.7353826,-105.0416221,39.7366286
-9778,7515,686,0.203088920175274,0.203088920175274,-104.9286555,39.7401271,-104.9286673,39.7419535
-9779,686,1983,0.159242254447937,0.159242254447937,-104.9286673,39.7419535,-104.9286673,39.7433856
-9780,1983,1968,0.0374282123082397,0.0374282123082397,-104.9286673,39.7433856,-104.9286673,39.7437222
-9781,1968,4621,0.107323343903913,0.107323343903913,-104.9286673,39.7437222,-104.9285042,39.7446792
-9782,4621,6500,0.103085986769995,0.103085986769995,-104.9285042,39.7446792,-104.928642,39.7456002
-9783,6500,2474,0.199627678773596,0.199627678773596,-104.928642,39.7456002,-104.9286764,39.7473953
-9785,7516,2773,0.203153140061273,0.203153140061273,-104.9281792,39.765593,-104.9281046,39.7674191
-9786,2773,6896,0.203229996829736,0.203229996829736,-104.9281046,39.7674191,-104.928139,39.7692466
-9788,5346,7517,0.175498987947166,0.175498987947166,-104.9281276,39.716246,-104.9281289,39.7178243
-9789,7517,2340,0.175921748142843,0.175921748142843,-104.9281289,39.7178243,-104.9281254,39.7194064
-9790,2340,7518,0.175670305695009,0.175670305695009,-104.9281254,39.7194064,-104.9281106,39.7209862
-9791,7518,4783,0.243270382660677,0.243270382660677,-104.9281106,39.7209862,-104.9282926,39.7231695
-9792,4783,7519,0.239583168661009,0.239583168661009,-104.9282926,39.7231695,-104.9283056,39.7253241
-9793,7519,7520,0.0339478111046773,0.0339478111046773,-104.9283056,39.7253241,-104.9283056,39.7256294
-9794,7520,6369,0.269882786903903,0.269882786903903,-104.9283056,39.7256294,-104.9282948,39.7280565
-9795,6369,7521,0.132466649716692,0.132466649716692,-104.9282948,39.7280565,-104.928297,39.7292478
-9797,7522,5952,0.201032381768493,0.201032381768493,-104.9280878,39.7292519,-104.9280748,39.7310598
-9798,5952,5144,0.0336716082597733,0.0336716082597733,-104.9280748,39.7310598,-104.9280639,39.7313625
-9799,5144,5156,0.0326057448432317,0.0326057448432317,-104.9280639,39.7313625,-104.9280694,39.7316557
-9800,5156,2239,0.132989211721542,0.132989211721542,-104.9280694,39.7316557,-104.9280711,39.7328517
-9801,2239,4912,0.203447012505169,0.203447012505169,-104.9280711,39.7328517,-104.9280548,39.7346813
-9802,4912,6610,0.203165550596053,0.203165550596053,-104.9280548,39.7346813,-104.9280463,39.7365084
-18325,7524,7525,0.0423335034846442,0.0423335034846442,-105.0433477,39.777017,-105.0433434,39.7766363
-9804,7523,7526,0.205397811211562,0.205397811211562,-104.9280376,39.7382791,-104.9280609,39.7401262
-9806,2475,5910,0.203278121280476,0.203278121280476,-104.9281369,39.7474129,-104.9281491,39.749241
-9807,5910,7527,0.201064010596531,0.201064010596531,-104.9281491,39.749241,-104.9281577,39.7510492
-9808,7527,800,0.20177431388955,0.20177431388955,-104.9281577,39.7510492,-104.9281577,39.7528638
-9809,800,7528,0.202244021720306,0.202244021720306,-104.9281577,39.7528638,-104.9281699,39.7546826
-9811,7529,7530,0.20077292216439,0.20077292216439,-104.9282316,39.7565549,-104.9282076,39.7583604
-9813,3064,7531,0.184973544349351,0.184973544349351,-104.9282248,39.7601815,-104.9282311,39.761845
-9815,2632,5362,0.0801274749327823,0.0801274749327823,-105.0450779,39.7221456,-105.0450749,39.7228662
-9816,5362,5209,0.120994383618796,0.120994383618796,-105.0450749,39.7228662,-105.0451039,39.7239541
-9817,5209,6229,0.174510675248847,0.174510675248847,-105.0451039,39.7239541,-105.0451283,39.7255234
-9819,7532,7533,0.202574921872807,0.202574921872807,-105.0451861,39.7366574,-105.0451856,39.7384792
-9820,7533,7534,0.206092993605617,0.206092993605617,-105.0451856,39.7384792,-105.04517,39.7403326
-9821,7534,6444,0.205010086254005,0.205010086254005,-105.04517,39.7403326,-105.04517,39.7421763
-9822,6444,5302,0.199728470714505,0.199728470714505,-105.04517,39.7421763,-105.0451672,39.7439725
-9824,6656,4061,0.176855547581016,0.176855547581016,-105.0444508,39.7165618,-105.0444517,39.7181523
-9825,4061,7535,0.242794235361762,0.242794235361762,-105.0444517,39.7181523,-105.0445183,39.7203352
-9827,7536,6086,0.100844609398613,0.100844609398613,-105.0449356,39.7621062,-105.0449283,39.7630131
-9828,6086,7537,0.100375721785614,0.100375721785614,-105.0449283,39.7630131,-105.044927,39.7639158
-9829,7537,7538,0.0511607864629355,0.0511607864629355,-105.044927,39.7639158,-105.0449269,39.7643759
-9830,7538,5244,0.0495951653375039,0.0495951653375039,-105.0449269,39.7643759,-105.0449324,39.7648219
-9831,5244,7539,0.0519761520574234,0.0519761520574234,-105.0449324,39.7648219,-105.0449396,39.7652893
-9832,7539,6885,0.0502414304638419,0.0502414304638419,-105.0449396,39.7652893,-105.0449466,39.7657411
-9833,6885,7540,0.0499615650233233,0.0499615650233233,-105.0449466,39.7657411,-105.0449514,39.7661904
-9835,7541,7542,0.0351445858107267,0.0351445858107267,-105.044947,39.7666453,-105.0449552,39.7669613
-9838,7544,7545,0.105704455648811,0.105704455648811,-105.045174,39.7302935,-105.0451654,39.7312441
-9841,2556,7547,0.195916474446361,0.195916474446361,-105.0450916,39.78742,-105.0451023,39.7891819
-9842,6224,7548,0.277797708537317,0.277797708537317,-105.0451285,39.7257952,-105.0451568,39.7282934
-9845,7550,7551,0.196848690524097,0.196848690524097,-105.0451506,39.7693556,-105.0451465,39.7711259
-9846,7551,5751,0.202697238266629,0.202697238266629,-105.0451465,39.7711259,-105.0451459,39.7729488
-9847,5751,7552,0.00795047859513932,0.00795047859513932,-105.0451459,39.7729488,-105.0451456,39.7730203
-9848,7552,7553,0.129731824653906,0.129731824653906,-105.0451456,39.7730203,-105.0451406,39.774187
-9849,7553,6474,0.0638707232076661,0.0638707232076661,-105.0451406,39.774187,-105.0451381,39.7747614
-9850,6474,7554,0.0334363679568542,0.0334363679568542,-105.0451381,39.7747614,-105.0451388,39.7750621
-20015,10180,2696,0.367929886679579,0.367929886679579,-104.9873951,39.7535866,-104.984388,39.7559539
-9851,7554,7555,0.0146999916602211,0.0146999916602211,-105.0451388,39.7750621,-105.0451391,39.7751943
-9853,3170,7557,0.145194224111084,0.145194224111084,-105.0006969,39.7480168,-104.9994986,39.7489421
-9854,7557,7558,0.0835128735178232,0.0835128735178232,-104.9994986,39.7489421,-104.9988113,39.7494758
-9855,7558,7559,0.0585562750239905,0.0585562750239905,-104.9988113,39.7494758,-104.9983278,39.7498488
-9856,7559,6713,0.00611903533894709,0.00611903533894709,-104.9983278,39.7498488,-104.9982781,39.7498884
-9857,6713,7560,0.146921779963022,0.146921779963022,-104.9982781,39.7498884,-104.9970625,39.7508224
-9858,7560,5786,0.142766734982168,0.142766734982168,-104.9970625,39.7508224,-104.995889,39.7517359
-9859,5786,7561,0.147333855208616,0.147333855208616,-104.995889,39.7517359,-104.9946844,39.7526835
-11082,6285,2717,0.0986458045481302,0.0986458045481302,-105.0228094,39.7784186,-105.0239636,39.7784327
-9860,7561,7562,0.151251680669446,0.151251680669446,-104.9946844,39.7526835,-104.9934281,39.7536413
-9861,7562,7563,0.142846459249546,0.142846459249546,-104.9934281,39.7536413,-104.9922506,39.7545528
-9863,7564,3303,0.147900845771263,0.147900845771263,-104.9910557,39.7554766,-104.9898413,39.756424
-9865,5316,7565,0.0511409811054889,0.0511409811054889,-104.9500303,39.699284,-104.9506273,39.6992608
-9866,7565,7566,0.1490174605609,0.1490174605609,-104.9506273,39.6992608,-104.9519988,39.6984347
-9867,7566,3661,0.0439544289403808,0.0439544289403808,-104.9519988,39.6984347,-104.9521932,39.6980688
-9868,3661,3171,0.198821466322938,0.198821466322938,-104.9521932,39.6980688,-104.9534926,39.6965864
-9870,1541,4266,0.201902575581856,0.201902575581856,-104.9858935,39.7765349,-104.9858407,39.7783502
-9871,4266,280,0.117279281695443,0.117279281695443,-104.9858407,39.7783502,-104.9858487,39.7794049
-9873,1540,755,0.148174446133403,0.148174446133403,-104.9864968,39.7765361,-104.9864797,39.7752036
-9874,755,7567,0.109511008516479,0.109511008516479,-104.9864797,39.7752036,-104.986415,39.77422
-9875,7568,7569,0.504435059432168,0.504435059432168,-104.9863939,39.7873956,-104.986356,39.791932
-9876,5172,5629,0.20005288591208,0.20005288591208,-104.9862386,39.7165499,-104.9862279,39.718349
-9877,5629,2361,0.11286306962317,0.11286306962317,-104.9862279,39.718349,-104.9862305,39.719364
-9878,2361,4143,0.172420177163863,0.172420177163863,-104.9862305,39.719364,-104.9862384,39.7209146
-9879,4143,4747,0.180602807146659,0.180602807146659,-104.9862384,39.7209146,-104.986239,39.7225388
-9880,4747,6561,0.177131591078149,0.177131591078149,-104.986239,39.7225388,-104.9862601,39.7241317
-9881,6561,7570,0.0829182513004679,0.0829182513004679,-104.9862601,39.7241317,-104.986258,39.7248774
-9882,7570,7571,0.0849604902234264,0.0849604902234264,-104.986258,39.7248774,-104.9862197,39.7256409
-9883,7571,7572,0.039332803551206,0.039332803551206,-104.9862197,39.7256409,-104.9861902,39.7259939
-9885,3557,7573,0.0207104909362794,0.0207104909362794,-104.9745442,39.7546268,-104.9744777,39.7548059
-9886,7573,5510,0.0781175186423301,0.0781175186423301,-104.9744777,39.7548059,-104.9738469,39.7553142
-9887,5510,2897,0.0422469044547541,0.0422469044547541,-104.9738469,39.7553142,-104.9733528,39.7553064
-9889,3682,7574,0.193399178760091,0.193399178760091,-104.9839328,39.7475479,-104.982314,39.7487628
-9890,7574,7575,0.146546921459533,0.146546921459533,-104.982314,39.7487628,-104.9811177,39.7497067
-9891,7575,5359,0.14787210152478,0.14787210152478,-104.9811177,39.7497067,-104.9798903,39.7506437
-9892,5359,2682,0.147887137976142,0.147887137976142,-104.9798903,39.7506437,-104.9786543,39.7515742
-9893,2682,7576,0.0606198046830208,0.0606198046830208,-104.9786543,39.7515742,-104.9781607,39.7519656
-9895,4620,7577,0.120158924963582,0.120158924963582,-104.9873927,39.7448898,-104.9883537,39.7441013
-9896,7577,6702,0.146317084486212,0.146317084486212,-104.9883537,39.7441013,-104.9895702,39.7431758
-9897,6702,7578,0.146734472806395,0.146734472806395,-104.9895702,39.7431758,-104.9907772,39.7422377
-9898,7578,7579,0.145050961623328,0.145050961623328,-104.9907772,39.7422377,-104.9919734,39.7413127
-9899,7579,7580,0.00770297520415462,0.00770297520415462,-104.9919734,39.7413127,-104.9920391,39.7412653
-9900,7580,7581,0.13912090851738,0.13912090851738,-104.9920391,39.7412653,-104.993184,39.7403763
-9901,7581,7582,0.0411773493232422,0.0411773493232422,-104.993184,39.7403763,-104.9935535,39.7401388
-9903,2466,5908,0.205955273119341,0.205955273119341,-104.936135,39.7474151,-104.9361363,39.7492673
-9904,5908,7583,0.198595406640257,0.198595406640257,-104.9361363,39.7492673,-104.936128,39.7510533
-9905,7583,793,0.198805543342419,0.198805543342419,-104.936128,39.7510533,-104.9361307,39.7528412
-9906,793,7584,0.20315326209993,0.20315326209993,-104.9361307,39.7528412,-104.936128,39.7546682
-9907,7584,4357,0.202186223769753,0.202186223769753,-104.936128,39.7546682,-104.9361228,39.7564865
-9908,4357,7585,0.201775154423619,0.201775154423619,-104.9361228,39.7564865,-104.9360971,39.758301
-9910,3060,7586,0.187004558668975,0.187004558668975,-104.9361384,39.7601551,-104.9361181,39.7618368
-9913,7588,906,0.27600804903505,0.27600804903505,-104.9356152,39.7619945,-104.9356148,39.7644767
-9914,906,7589,0.12928644320394,0.12928644320394,-104.9356148,39.7644767,-104.9356129,39.7656394
-9916,6671,7590,0.0565797137930955,0.0565797137930955,-104.9362703,39.7162376,-104.9360407,39.7167148
-9917,5136,5151,0.022597397933528,0.022597397933528,-104.9361524,39.7336487,-104.9361564,39.7338519
-9918,5151,4906,0.0926596414619678,0.0926596414619678,-104.9361564,39.7338519,-104.9361612,39.7346852
-9919,4906,6616,0.200362179375123,0.200362179375123,-104.9361612,39.7346852,-104.9361597,39.7364871
-9920,6616,7591,0.195770799250889,0.195770799250889,-104.9361597,39.7364871,-104.9361168,39.7382474
-9921,7591,7592,0.206820957598552,0.206820957598552,-104.9361168,39.7382474,-104.93614,39.7401073
-9925,6556,7596,0.107470441058094,0.107470441058094,-104.9360156,39.7243514,-104.9360196,39.7253179
-9926,7596,7597,0.0323668981715237,0.0323668981715237,-104.9360196,39.7253179,-104.9360062,39.7256088
-9927,7597,7598,0.201852282407455,0.201852282407455,-104.9360062,39.7256088,-104.9360089,39.7274241
-9928,7598,7599,0.202247125760461,0.202247125760461,-104.9360089,39.7274241,-104.9360268,39.7292429
-9930,7600,4778,0.250803140264124,0.250803140264124,-104.936219,39.7208978,-104.9360157,39.7231479
-9932,1647,159,0.135282147606574,0.135282147606574,-105.0155835,39.6940639,-105.0145783,39.6931248
-9933,159,1722,0.249462326524164,0.249462326524164,-105.0145783,39.6931248,-105.0146011,39.6908814
-9935,6872,7601,0.692595810332122,0.692595810332122,-105.0147213,39.6885235,-105.0138082,39.6823346
-9938,6136,7603,0.0512178060127243,0.0512178060127243,-105.0288404,39.7288083,-105.0294393,39.7288116
-9939,7603,4004,0.0522781951051087,0.0522781951051087,-105.0294393,39.7288116,-105.0300506,39.7288149
-9941,2233,5134,0.145435815612977,0.145435815612977,-104.9384001,39.7328678,-104.9384246,39.7341756
-9942,5134,5149,0.0255338309274142,0.0255338309274142,-104.9384246,39.7341756,-104.9384043,39.7344047
-9943,5149,4904,0.0300983323579011,0.0300983323579011,-104.9384043,39.7344047,-104.9383957,39.7346753
-9944,4904,6618,0.200495686198041,0.200495686198041,-104.9383957,39.7346753,-104.9383982,39.7364784
-9945,6618,7604,0.20246265981009,0.20246265981009,-104.9383982,39.7364784,-104.9383746,39.7382991
-9946,7604,7605,0.201805887092512,0.201805887092512,-104.9383746,39.7382991,-104.9383973,39.7401139
-9948,6554,7606,0.105208061763435,0.105208061763435,-104.9382214,39.724358,-104.9382673,39.7253035
-9950,7607,7608,0.199144734139014,0.199144734139014,-104.9382968,39.725617,-104.9383271,39.7274078
-9951,7608,7609,0.20258734096308,0.20258734096308,-104.9383271,39.7274078,-104.9383356,39.7292297
-9953,2463,5906,0.205561292129907,0.205561292129907,-104.9383838,39.7474085,-104.9383649,39.7492571
-9954,5906,7610,0.199734725303301,0.199734725303301,-104.9383649,39.7492571,-104.9383462,39.7510533
-9955,7610,791,0.198807553256576,0.198807553256576,-104.9383462,39.7510533,-104.9383354,39.7528412
-9956,791,7612,0.203565382214395,0.203565382214395,-104.9383354,39.7528412,-104.9383286,39.7546719
-9957,7612,4355,0.201053666601032,0.201053666601032,-104.9383286,39.7546719,-104.9383178,39.75648
-9958,4355,7613,0.202489967264216,0.202489967264216,-104.9383178,39.75648,-104.9383029,39.758301
-9959,7613,3058,0.208369032173912,0.208369032173912,-104.9383029,39.758301,-104.9383099,39.7601749
-9960,3058,7614,0.183994647182619,0.183994647182619,-104.9383099,39.7601749,-104.9383054,39.7618296
-9961,7614,7615,0.026448194348771,0.026448194348771,-104.9383054,39.7618296,-104.9380774,39.7619904
-9963,1697,7616,0.173745206459615,0.173745206459615,-104.9384472,39.7162245,-104.938435,39.717787
-9964,7616,7617,0.177904510236026,0.177904510236026,-104.938435,39.717787,-104.9384215,39.7193869
-9965,7617,7618,0.1681272184952,0.1681272184952,-104.9384215,39.7193869,-104.9384446,39.7208988
-9966,7618,4776,0.251475825917774,0.251475825917774,-104.9384446,39.7208988,-104.9382401,39.7231549
-9970,3746,7622,0.0932397806145687,0.0932397806145687,-105.006247,39.715647,-105.0062385,39.7148085
-9971,7622,4665,0.0961947321638159,0.0961947321638159,-105.0062385,39.7148085,-105.0062556,39.7139435
-9972,4665,1332,0.102043584181961,0.102043584181961,-105.0062556,39.7139435,-105.0062556,39.7130258
-9973,1332,1387,0.0976513845787387,0.0976513845787387,-105.0062556,39.7130258,-105.0062556,39.7121476
-9974,1387,7623,0.104092676384345,0.104092676384345,-105.0062556,39.7121476,-105.0062462,39.7112115
-9975,7623,6849,0.109393568832939,0.109393568832939,-105.0062462,39.7112115,-105.0062462,39.7102277
-9976,6849,4705,0.0983852710944781,0.0983852710944781,-105.0062462,39.7102277,-105.0062462,39.7093429
-9977,4705,7487,0.0961948643858329,0.0961948643858329,-105.0062462,39.7093429,-105.006229,39.7084779
-9978,7487,7451,0.0969202901634112,0.0969202901634112,-105.006229,39.7084779,-105.0062376,39.7076063
-9979,7451,5688,0.104320933330224,0.104320933330224,-105.0062376,39.7076063,-105.0061947,39.7066687
-9980,5688,6313,0.0969730195141145,0.0969730195141145,-105.0061947,39.7066687,-105.006229,39.705797
-9981,6313,4962,0.100610954866441,0.100610954866441,-105.006229,39.705797,-105.0062033,39.7048924
-9982,4962,6819,0.104277744196946,0.104277744196946,-105.0062033,39.7048924,-105.0062204,39.7039547
-9983,6819,762,0.165411660097114,0.165411660097114,-105.0062204,39.7039547,-105.0062581,39.7024674
-9984,762,786,0.134384238449809,0.134384238449809,-105.0062581,39.7024674,-105.0053032,39.7015078
-9985,786,6001,0.286482254105535,0.286482254105535,-105.0053032,39.7015078,-105.0043064,39.6990482
-9986,6001,5764,0.0815255628306487,0.0815255628306487,-105.0043064,39.6990482,-105.0047699,39.6984076
-11219,8167,8168,0.194203872480123,0.194203872480123,-104.9348261,39.707407,-104.935108,39.705674
-9989,1491,149,0.200485771831907,0.200485771831907,-105.0061812,39.6948904,-105.0061897,39.6930874
-9990,149,1737,0.201708050623858,0.201708050623858,-105.0061897,39.6930874,-105.0061947,39.6912734
-9992,7313,5666,0.0386975210921627,0.0386975210921627,-104.9485996,39.7029027,-104.9482219,39.7030942
-9993,5666,522,0.0596630213761568,0.0596630213761568,-104.9482219,39.7030942,-104.947535,39.703187
-9994,522,4824,0.183721500047411,0.183721500047411,-104.947535,39.703187,-104.9453876,39.7032065
-9996,2254,7626,0.0984544191189144,0.0984544191189144,-105.0323072,39.7481785,-105.0334588,39.7481791
-9998,7627,7329,0.0447853238574392,0.0447853238574392,-104.9546377,39.7861919,-104.9541142,39.7862117
-9999,7329,2089,0.0938827847318007,0.0938827847318007,-104.9541142,39.7862117,-104.9530155,39.7862051
-10000,2089,2656,0.0939761287497805,0.0939761287497805,-104.9530155,39.7862051,-104.9519157,39.7861993
-10001,2656,4118,0.0946147674881846,0.0946147674881846,-104.9519157,39.7861993,-104.9508084,39.7861993
-10002,4118,6678,0.0843387660785722,0.0843387660785722,-104.9508084,39.7861993,-104.9498214,39.7861927
-10004,7628,7629,0.0982828610797249,0.0982828610797249,-104.9487399,39.7861861,-104.9475898,39.7861729
-10006,5220,5095,0.120687418213095,0.120687418213095,-104.9888573,39.7273254,-104.9902684,39.7273108
-10008,7630,6413,0.109655980715331,0.109655980715331,-105.016237,39.727486,-105.0175186,39.7275171
-10009,6413,4650,0.0986378512210248,0.0986378512210248,-105.0175186,39.7275171,-105.018672,39.7275171
-10010,4650,7631,0.100237060358401,0.100237060358401,-105.018672,39.7275171,-105.0198441,39.7275171
-10011,7631,3646,0.0896866361421679,0.0896866361421679,-105.0198441,39.7275171,-105.0208928,39.7275233
-10012,3646,4536,0.103452838278423,0.103452838278423,-105.0208928,39.7275233,-105.0221025,39.7275212
-10013,4536,7635,0.257545536230436,0.257545536230436,-105.0221025,39.7275212,-105.025114,39.7275076
-10015,7636,7637,0.0362863399636557,0.0362863399636557,-104.992437,39.727286,-104.9928501,39.7273605
-10016,7637,383,0.0504266976907422,0.0504266976907422,-104.9928501,39.7273605,-104.9934396,39.7273502
-10017,383,4682,0.05031361216385,0.05031361216385,-104.9934396,39.7273502,-104.9940278,39.7273407
-10018,4682,295,0.0506583134955018,0.0506583134955018,-104.9940278,39.7273407,-104.9946201,39.7273342
-10019,295,4954,0.0497648033018035,0.0497648033018035,-104.9946201,39.7273342,-104.995202,39.7273313
-10021,7222,7638,0.0496667318298412,0.0496667318298412,-104.9963829,39.727324,-104.9969636,39.7273173
-10022,7638,7639,0.0515292350274089,0.0515292350274089,-104.9969636,39.7273173,-104.9975661,39.7273117
-10023,7639,7640,0.0459421846016502,0.0459421846016502,-104.9975661,39.7273117,-104.9981033,39.7273146
-10024,7640,6642,0.0415805639651593,0.0415805639651593,-104.9981033,39.7273146,-104.9985895,39.7273172
-10026,3954,7641,0.0608839417644586,0.0608839417644586,-105.0001997,39.7273124,-105.0009116,39.7273175
-10027,7641,5604,0.0589168683204242,0.0589168683204242,-105.0009116,39.7273175,-105.0016005,39.7273224
-18697,6400,5868,0.177478717288294,0.177478717288294,-105.0391033,39.716558,-105.0390984,39.7149619
-10029,7642,3727,0.0543818576839699,0.0543818576839699,-105.0022097,39.7273219,-105.0028456,39.7273213
-10031,1239,4813,0.0888202681133088,0.0888202681133088,-105.0121506,39.7275003,-105.0131892,39.7275003
-10032,4813,2165,0.138535770033239,0.138535770033239,-105.0131892,39.7275003,-105.0140457,39.7285578
-10034,4003,7643,0.0510385957556285,0.0510385957556285,-105.0300602,39.7277169,-105.030657,39.7277196
-10035,7643,7027,0.0529371470208169,0.0529371470208169,-105.030657,39.7277196,-105.031276,39.7277224
-10036,7027,7644,0.0521180983869426,0.0521180983869426,-105.031276,39.7277224,-105.0318854,39.7277175
-10037,7644,7645,0.0537600930137936,0.0537600930137936,-105.0318854,39.7277175,-105.032514,39.7277125
-10038,7645,7646,0.0510719245712091,0.0510719245712091,-105.032514,39.7277125,-105.0331112,39.7277125
-10039,7646,7380,0.0524231241843369,0.0524231241843369,-105.0331112,39.7277125,-105.0337242,39.7277125
-10041,7647,3393,0.0461297697153075,0.0461297697153075,-105.0345838,39.7277084,-105.0351232,39.7277059
-10043,3394,7648,0.0445992136926928,0.0445992136926928,-105.0351404,39.7282472,-105.0356619,39.728244
-10044,7648,5709,0.0478831918410465,0.0478831918410465,-105.0356619,39.728244,-105.0362218,39.7282406
-10045,5709,7649,0.04548718787965,0.04548718787965,-105.0362218,39.7282406,-105.0367537,39.7282406
-10046,7649,7432,0.0484717768195407,0.0484717768195407,-105.0367537,39.7282406,-105.0373205,39.7282406
-10047,7432,7650,0.0437375947901795,0.0437375947901795,-105.0373205,39.7282406,-105.0378319,39.7282456
-10048,7650,7181,0.0470644094329018,0.0470644094329018,-105.0378319,39.7282456,-105.0383822,39.7282509
-10049,7181,7651,0.0469937345825467,0.0469937345825467,-105.0383822,39.7282509,-105.0389317,39.7282542
-10051,7652,7653,0.0459694430265719,0.0459694430265719,-105.0394723,39.7282575,-105.0400098,39.7282525
-10053,1099,7654,0.0453903142377476,0.0453903142377476,-105.0405735,39.7282472,-105.0411042,39.7282537
-10054,7654,7505,0.0471008131744324,0.0471008131744324,-105.0411042,39.7282537,-105.0416549,39.7282604
-10055,7505,7655,0.0439789031058606,0.0439789031058606,-105.0416549,39.7282604,-105.0421691,39.7282666
-10056,7655,3857,0.0492561227403211,0.0492561227403211,-105.0421691,39.7282666,-105.042745,39.7282736
-10057,3857,7656,0.0443253739114241,0.0443253739114241,-105.042745,39.7282736,-105.0432633,39.7282706
-10058,7656,5595,0.054031927582118,0.054031927582118,-105.0432633,39.7282706,-105.0438951,39.728267
-10059,5595,7657,0.0531350620266369,0.0531350620266369,-105.0438951,39.728267,-105.0445162,39.72828
-10060,7657,7548,0.0548032505549166,0.0548032505549166,-105.0445162,39.72828,-105.0451568,39.7282934
-10061,7548,7658,0.0961567115661112,0.0961567115661112,-105.0451568,39.7282934,-105.0462812,39.7282934
-10063,5169,6864,0.176934896372569,0.176934896372569,-104.9413494,39.7162383,-104.9413408,39.7146471
-10064,6864,3072,0.175748977102837,0.175748977102837,-104.9413408,39.7146471,-104.9413569,39.7130666
-10065,3072,7659,0.163990749862373,0.163990749862373,-104.9413569,39.7130666,-104.9413615,39.7115918
-10067,3292,100,0.415519355639239,0.415519355639239,-104.9432867,39.7038272,-104.9421088,39.7002019
-10069,5731,3291,0.149792492427265,0.149792492427265,-104.9434927,39.7051611,-104.9434841,39.703814
-10071,1152,7660,0.199718823841446,0.199718823841446,-104.9246199,39.7638103,-104.9246105,39.7656064
-10074,6897,7663,0.241129252553979,0.241129252553979,-104.9246113,39.7692598,-104.9245971,39.7714283
-13575,2,9131,0.186044551751923,0.186044551751923,-105.0158228,39.7323669,-105.016012,39.7307001
-10075,7663,7664,0.101783451026811,0.101783451026811,-104.9245971,39.7714283,-104.9246108,39.7723436
-10076,7664,7665,0.289306992458348,0.289306992458348,-104.9246108,39.7723436,-104.9246092,39.7749454
-10078,6814,7666,0.176577592408465,0.176577592408465,-104.9246289,39.7162454,-104.9245961,39.7178332
-12084,8539,8540,0.241661980997098,0.241661980997098,-104.9669081,39.7808609,-104.969601,39.7801972
-10079,7666,2342,0.176188966635474,0.176188966635474,-104.9245961,39.7178332,-104.9245907,39.7194177
-10080,2342,7667,0.17458351857957,0.17458351857957,-104.9245907,39.7194177,-104.9246096,39.7209877
-10081,7667,4785,0.245723521469374,0.245723521469374,-104.9246096,39.7209877,-104.924985,39.7231786
-10082,4785,7668,0.239480958817199,0.239480958817199,-104.924985,39.7231786,-104.9249904,39.7253323
-10084,5159,7669,0.0600603744377636,0.0600603744377636,-104.9245238,39.729244,-104.9245319,39.7297841
-10085,7669,5954,0.140826727437097,0.140826727437097,-104.9245319,39.7297841,-104.924551,39.7310505
-10086,5954,2241,0.203480008894553,0.203480008894553,-104.924551,39.7310505,-104.9245804,39.7328803
-10087,2241,4914,0.201437462212311,0.201437462212311,-104.9245804,39.7328803,-104.9246012,39.7346918
-10088,4914,6609,0.201231500080185,0.201231500080185,-104.9246012,39.7346918,-104.9246118,39.7365015
-10089,6609,7670,0.19693744890168,0.19693744890168,-104.9246118,39.7365015,-104.9245872,39.7382725
-11324,5142,5154,0.0222389853288599,0.0222389853288599,-104.930434,39.732387,-104.930434,39.732587
-16191,7205,5817,0.204256012568379,0.204256012568379,-104.9834023,39.693013,-104.983413,39.6911761
-10090,7670,7671,0.205535401167156,0.205535401167156,-104.9245872,39.7382725,-104.9246387,39.7401205
-10092,690,1979,0.162739101905996,0.162739101905996,-104.9246436,39.7419221,-104.924659,39.7433856
-10093,1979,1964,0.0397992509913644,0.0397992509913644,-104.924659,39.7433856,-104.9246161,39.743742
-10094,1964,6501,0.211697424646872,0.211697424646872,-104.9246161,39.743742,-104.9246462,39.7456457
-10095,6501,2478,0.193626535181341,0.193626535181341,-104.9246462,39.7456457,-104.924634,39.747387
-10096,2478,5912,0.20926896109112,0.20926896109112,-104.924634,39.747387,-104.9246315,39.749269
-10097,5912,7672,0.199195490528656,0.199195490528656,-104.9246315,39.749269,-104.9246245,39.7510604
-10098,7672,803,0.201999137953248,0.201999137953248,-104.9246245,39.7510604,-104.9246129,39.752877
-10099,803,7673,0.202608278725201,0.202608278725201,-104.9246129,39.752877,-104.9246133,39.7546991
-10100,7673,7674,0.205563081575912,0.205563081575912,-104.9246133,39.7546991,-104.9245919,39.7565477
-10101,7674,7675,0.203265447696938,0.203265447696938,-104.9245919,39.7565477,-104.924584,39.7583757
-10102,7675,3066,0.200093208772811,0.200093208772811,-104.924584,39.7583757,-104.9245426,39.7601749
-10103,3066,7676,0.18728661128175,0.18728661128175,-104.9245426,39.7601749,-104.9246105,39.7618584
-10105,7677,6370,0.270615231348292,0.270615231348292,-104.924985,39.7256294,-104.9249818,39.7280631
-10106,6370,7678,0.131279919418432,0.131279919418432,-104.9249818,39.7280631,-104.9249925,39.7292437
-10108,6507,7679,0.113730821063582,0.113730821063582,-104.924642,39.7791151,-104.9246153,39.7801377
-10109,7679,6937,0.113695193803527,0.113695193803527,-104.9246153,39.7801377,-104.9245981,39.7811601
-10111,759,6605,0.202732181741343,0.202732181741343,-104.9246452,39.7765808,-104.9246358,39.778404
-10113,5167,7680,0.173408491477124,0.173408491477124,-104.947367,39.7162531,-104.9473666,39.7178126
-10114,7680,2354,0.177734023432563,0.177734023432563,-104.9473666,39.7178126,-104.947365,39.719411
-11350,4801,4798,0.0316348130565604,0.0316348130565604,-105.0127766,39.7620198,-105.0131467,39.7620198
-10116,4156,4743,0.17475749351339,0.17475749351339,-104.9473677,39.7209707,-104.9474028,39.7225421
-10117,4743,6539,0.176484628682033,0.176484628682033,-104.9474028,39.7225421,-104.9473731,39.7241291
-10118,6539,7681,0.164515462701881,0.164515462701881,-104.9473731,39.7241291,-104.9473329,39.7256083
-10119,7681,1204,0.1695248683934,0.1695248683934,-104.9473329,39.7256083,-104.9473134,39.7271328
-10120,1204,7682,0.0218451192643306,0.0218451192643306,-104.9473134,39.7271328,-104.9473072,39.7273292
-10121,7682,3779,0.199697518421981,0.199697518421981,-104.9473072,39.7273292,-104.9472954,39.7291251
-10123,7683,953,0.176289634687175,0.176289634687175,-104.9472804,39.7305107,-104.947288,39.7320961
-10124,953,7684,0.174800312403385,0.174800312403385,-104.947288,39.7320961,-104.9472785,39.7336681
-10125,7684,4892,0.161444055531775,0.161444055531775,-104.9472785,39.7336681,-104.947281,39.73512
-10126,4892,7685,0.184678055138444,0.184678055138444,-104.947281,39.73512,-104.9472977,39.7367808
-10127,7685,5490,0.173583753319791,0.173583753319791,-104.9472977,39.7367808,-104.9472672,39.7383417
-10128,5490,3022,0.0680856463383254,0.0680856463383254,-104.9472672,39.7383417,-104.9472629,39.738954
-18346,1684,7686,0.206269012853702,0.206269012853702,-105.0352055,39.7676655,-105.0352172,39.7695205
-10129,3022,608,0.0626103319165951,0.0626103319165951,-104.9472629,39.738954,-104.9472743,39.739517
-10130,608,7687,0.0714136208255542,0.0714136208255542,-104.9472743,39.739517,-104.9472834,39.7401592
-10132,751,1571,0.141098847639908,0.141098847639908,-104.9475049,39.7764171,-104.9475365,39.7776858
-10133,1571,7688,0.136160171060933,0.136160171060933,-104.9475365,39.7776858,-104.9475279,39.7789103
-10134,7688,355,0.0540631216358879,0.0540631216358879,-104.9475279,39.7789103,-104.9475022,39.7793961
-11381,7,8238,0.233069627316498,0.233069627316498,-104.9443453,39.7800941,-104.9470651,39.7802508
-10136,3031,7689,0.212052347410258,0.212052347410258,-104.9478224,39.759056,-104.9478369,39.760963
-10139,5644,4349,0.138628444284297,0.138628444284297,-104.9476672,39.7557083,-104.9476591,39.756955
-10140,4349,6347,0.140074045976997,0.140074045976997,-104.9476591,39.756955,-104.9476508,39.7582147
-10143,7690,7691,0.036360966917709,0.036360966917709,-104.9475732,39.784427,-104.9475747,39.784754
-13576,9131,2186,0.0494030185182178,0.0494030185182178,-105.016012,39.7307001,-105.0164597,39.7309809
-10144,7691,7692,0.019090691679145,0.019090691679145,-104.9475747,39.784754,-104.9475818,39.7849256
-10145,7692,7629,0.138695116564921,0.138695116564921,-104.9475818,39.7849256,-104.9475898,39.7861729
-10146,7629,7693,0.131928656438508,0.131928656438508,-104.9475898,39.7861729,-104.9475739,39.7873593
-10148,7694,7695,0.805329256404935,0.805329256404935,-104.947581,39.7874249,-104.9475812,39.7946674
-10149,6359,2392,0.110097282540218,0.110097282540218,-104.9475481,39.7728942,-104.9475383,39.7738843
-10150,2392,7696,0.139362539585628,0.139362539585628,-104.9475383,39.7738843,-104.9475469,39.7751376
-10152,7697,698,0.20136290155584,0.20136290155584,-104.9476781,39.7401632,-104.9476788,39.7419741
-10153,698,7698,0.201586501703314,0.201586501703314,-104.9476788,39.7419741,-104.947687,39.743787
-10155,7699,894,0.281945866493957,0.281945866493957,-104.9474853,39.7619327,-104.9474844,39.7644683
-10156,894,4477,0.138715715492195,0.138715715492195,-104.9474844,39.7644683,-104.9474831,39.7657158
-10157,4477,2802,0.13960527461951,0.13960527461951,-104.9474831,39.7657158,-104.9474844,39.7669713
-10158,2802,5268,0.12511734550188,0.12511734550188,-104.9474844,39.7669713,-104.9475125,39.7680963
-10161,4794,2158,0.120027593160305,0.120027593160305,-105.0131497,39.7568505,-105.0144627,39.756468
-11430,319,412,0.178792036530689,0.178792036530689,-105.0307715,39.7835551,-105.0287256,39.7838921
-11459,224,8268,0.046644646559722,0.046644646559722,-104.9412461,39.7790391,-104.9407004,39.7790485
-10165,7703,1119,0.0497953640754775,0.0497953640754775,-105.0398923,39.7567045,-105.0404748,39.756701
-10166,1119,7704,0.0511005498462644,0.0511005498462644,-105.0404748,39.756701,-105.0410725,39.7566932
-10167,7704,7496,0.0499039643779027,0.0499039643779027,-105.0410725,39.7566932,-105.0416562,39.756701
-10168,7496,7705,0.050496479725261,0.050496479725261,-105.0416562,39.756701,-105.0422469,39.7567047
-10169,7705,3842,0.0493242373326315,0.0493242373326315,-105.0422469,39.7567047,-105.0428239,39.7567068
-10170,3842,7706,0.0511368055077475,0.0511368055077475,-105.0428239,39.7567068,-105.0434221,39.7567041
-10171,7706,5553,0.0516924374908146,0.0516924374908146,-105.0434221,39.7567041,-105.0440268,39.7567014
-10173,5552,7707,0.497797594406761,0.497797594406761,-105.0440147,39.7560876,-105.049838,39.756086
-10174,7708,6434,0.169523036166009,0.169523036166009,-105.0158257,39.7560437,-105.0178088,39.7560453
-10175,6434,4659,0.115447272077866,0.115447272077866,-105.0178088,39.7560453,-105.0191593,39.7560504
-10176,4659,7709,0.0610101187906253,0.0610101187906253,-105.0191593,39.7560504,-105.019873,39.7560486
-10177,7709,1282,0.0565434694494923,0.0565434694494923,-105.019873,39.7560486,-105.0205344,39.7560422
-10178,1282,4541,0.131357223988847,0.131357223988847,-105.0205344,39.7560422,-105.022071,39.7560345
-10179,4541,7710,0.132140893738002,0.132140893738002,-105.022071,39.7560345,-105.0236168,39.7560347
-10180,7710,7711,0.0696094980092003,0.0696094980092003,-105.0236168,39.7560347,-105.0244311,39.7560352
-10181,7711,7712,0.0619159407722012,0.0619159407722012,-105.0244311,39.7560352,-105.0251554,39.7560349
-10183,4024,7713,0.0484316979076645,0.0484316979076645,-105.0299253,39.7566682,-105.0304918,39.7566748
-10184,7713,5669,0.0520933568419111,0.0520933568419111,-105.0304918,39.7566748,-105.0311012,39.7566748
-10185,5669,7714,0.0498366654518003,0.0498366654518003,-105.0311012,39.7566748,-105.0316842,39.7566755
-10186,7714,7030,0.0492177257934086,0.0492177257934086,-105.0316842,39.7566755,-105.0322599,39.7566691
-19495,7469,10524,0.0198269485983196,0.0198269485983196,-104.9883525,39.7084582,-104.9883547,39.7082799
-10188,7715,7378,0.0506230529615687,0.0506230529615687,-105.0328425,39.7566691,-105.0334347,39.7566691
-10189,7378,1594,0.0506283698630863,0.0506283698630863,-105.0334347,39.7566691,-105.0340269,39.7566757
-10190,1594,3411,0.0491667634825631,0.0491667634825631,-105.0340269,39.7566757,-105.034602,39.7566823
-10191,3411,7717,0.105657808428602,0.105657808428602,-105.034602,39.7566823,-105.035838,39.756686
-10192,7717,7718,0.0940313147486449,0.0940313147486449,-105.035838,39.756686,-105.036938,39.756686
-10193,5546,7719,0.0535907784173066,0.0535907784173066,-104.9874887,39.6894093,-104.9868624,39.6894114
-10194,7719,7720,0.0530201286004126,0.0530201286004126,-104.9868624,39.6894114,-104.9862428,39.6894062
-10195,7720,573,0.0448716576991108,0.0448716576991108,-104.9862428,39.6894062,-104.9857184,39.6894083
-10196,573,4986,0.0479600812575622,0.0479600812575622,-104.9857184,39.6894083,-104.9851579,39.6894075
-10197,4986,7721,0.0515371092658245,0.0515371092658245,-104.9851579,39.6894075,-104.9845556,39.6894094
-10198,7721,7722,0.0482855644451139,0.0482855644451139,-104.9845556,39.6894094,-104.9839913,39.6894112
-10199,7722,7723,0.0490137565654263,0.0490137565654263,-104.9839913,39.6894112,-104.9834185,39.689408
-10200,7723,7724,0.0538141529532141,0.0538141529532141,-104.9834185,39.689408,-104.9827896,39.6894045
-10201,7724,7725,0.0529684395598169,0.0529684395598169,-104.9827896,39.6894045,-104.9821706,39.6894094
-10202,7725,7726,0.0518724854854175,0.0518724854854175,-104.9821706,39.6894094,-104.9815644,39.6894136
-10203,7726,7727,0.04727777135042,0.04727777135042,-104.9815644,39.6894136,-104.9810119,39.6894094
-10204,7727,3618,0.0472245509762166,0.0472245509762166,-104.9810119,39.6894094,-104.98046,39.6894076
-10205,3618,7728,0.0514814686878799,0.0514814686878799,-104.98046,39.6894076,-104.9798585,39.6893971
-10206,7728,7729,0.0518724978816832,0.0518724978816832,-104.9798585,39.6893971,-104.9792523,39.6893929
-10207,7729,7730,0.0486618474944759,0.0486618474944759,-104.9792523,39.6893929,-104.9786837,39.6894012
-10208,7730,5100,0.0498159875736575,0.0498159875736575,-104.9786837,39.6894012,-104.9781016,39.6893933
-10209,5100,7731,0.0971611599806991,0.0971611599806991,-104.9781016,39.6893933,-104.9769661,39.6893959
-10210,7731,7732,0.0537738540349519,0.0537738540349519,-104.9769661,39.6893959,-104.9763378,39.6893855
-10211,7732,7733,0.048775543246574,0.048775543246574,-104.9763378,39.6893855,-104.9757679,39.6893761
-10213,7734,1529,0.0486197396153865,0.0486197396153865,-104.9751677,39.6893788,-104.9745995,39.6893814
-10214,1529,6533,0.0236551874497837,0.0236551874497837,-104.9745995,39.6893814,-104.9743231,39.6893856
-10216,1748,5658,0.0690555262759062,0.0690555262759062,-104.9722475,39.6901911,-104.9716542,39.6897701
-10217,5658,6638,0.0663249571304488,0.0663249571304488,-104.9716542,39.6897701,-104.9710843,39.6893658
-10220,5429,5327,0.0495383987324496,0.0495383987324496,-104.9698913,39.6893394,-104.9693125,39.6893294
-10221,5327,7400,0.0488963197685218,0.0488963197685218,-104.9693125,39.6893294,-104.9687412,39.6893196
-10223,3485,7735,0.019269671719438,0.019269671719438,-104.9637153,39.6893166,-104.9634901,39.6893161
-10224,7735,6080,0.0527262897841316,0.0527262897841316,-104.9634901,39.6893161,-104.9628739,39.6893149
-10225,6080,7736,0.0518491308674393,0.0518491308674393,-104.9628739,39.6893149,-104.9622681,39.6893045
-10226,7736,3699,0.0473298672855462,0.0473298672855462,-104.9622681,39.6893045,-104.9617151,39.6892951
-10227,3699,4573,0.0991704429707509,0.0991704429707509,-104.9617151,39.6892951,-104.9605564,39.6893149
-10228,4573,7737,0.1025259519958,0.1025259519958,-104.9605564,39.6893149,-104.9593582,39.6893161
-10229,7737,7738,0.0567267064163172,0.0567267064163172,-104.9593582,39.6893161,-104.9586954,39.6893271
-10230,7738,6520,0.0485788201580239,0.0485788201580239,-104.9586954,39.6893271,-104.9581278,39.6893365
-11562,4026,8321,0.0489622731658017,0.0489622731658017,-105.029918,39.7580208,-105.0304907,39.7580283
-10232,7739,6163,0.0483379374847878,0.0483379374847878,-104.9575425,39.6893331,-104.9569776,39.6893298
-10233,6163,7740,0.0487487301271992,0.0487487301271992,-104.9569776,39.6893298,-104.9564079,39.6893332
-10234,7740,2742,0.0481924761788732,0.0481924761788732,-104.9564079,39.6893332,-104.9558447,39.6893365
-10236,7741,5233,0.0485076742472366,0.0485076742472366,-104.9552614,39.6893365,-104.9546945,39.6893365
-10237,5233,7742,0.0501847785254714,0.0501847785254714,-104.9546945,39.6893365,-104.954108,39.6893365
-10238,7742,3175,0.0518961094220257,0.0518961094220257,-104.954108,39.6893365,-104.9535015,39.6893365
-10239,3175,7743,0.0477088260821206,0.0477088260821206,-104.9535015,39.6893365,-104.952944,39.68933
-10240,7743,5000,0.0480456206813873,0.0480456206813873,-104.952944,39.68933,-104.9523825,39.6893301
-10241,5000,7744,0.0507496702288809,0.0507496702288809,-104.9523825,39.6893301,-104.9517894,39.689329
-10242,7744,732,0.0500052182058767,0.0500052182058767,-104.9517894,39.689329,-104.951205,39.689328
-10243,732,7062,0.0993780460470829,0.0993780460470829,-104.951205,39.689328,-104.9500436,39.6893239
-10244,7062,568,0.179642317491375,0.179642317491375,-104.9500436,39.6893239,-104.9479442,39.6893133
-10245,568,6375,0.221062471524952,0.221062471524952,-104.9479442,39.6893133,-104.9453607,39.6893067
-10246,6375,7745,0.0502032533440095,0.0502032533440095,-104.9453607,39.6893067,-104.944774,39.68931
-10247,7745,4829,0.0496813089217868,0.0496813089217868,-104.944774,39.68931,-104.9441934,39.6893133
-10248,4829,7746,0.10134770204508,0.10134770204508,-104.9441934,39.6893133,-104.943009,39.6893199
-10249,7746,7747,0.19682163321823,0.19682163321823,-104.943009,39.6893199,-104.9407088,39.6893132
-10250,7747,7748,0.0148866727143693,0.0148866727143693,-104.9407088,39.6893132,-104.9405349,39.6893172
-10251,7748,1062,0.0938295581784946,0.0938295581784946,-104.9405349,39.6893172,-104.9394384,39.6893266
-10252,1062,1700,0.0910684866897701,0.0910684866897701,-104.9394384,39.6893266,-104.9383741,39.6893266
-10254,7749,7750,0.088136254722807,0.088136254722807,-104.9383055,39.6893261,-104.9372755,39.6893199
-10255,7750,7751,0.0102851011578735,0.0102851011578735,-104.9372755,39.6893199,-104.9371553,39.6893199
-10256,7751,6675,0.0807868256992296,0.0807868256992296,-104.9371553,39.6893199,-104.9362112,39.6893266
-10258,5566,7541,0.078830239472867,0.078830239472867,-105.0440247,39.7666482,-105.044947,39.7666453
-10259,7541,7752,0.71007082854504,0.71007082854504,-105.044947,39.7666453,-105.0532546,39.7666043
-10260,7753,7754,0.0555561071332203,0.0555561071332203,-105.0252922,39.7665061,-105.0259422,39.7665053
-10261,7754,6755,0.141035585683202,0.141035585683202,-105.0259422,39.7665053,-105.0275923,39.7665033
-10262,6755,3980,0.200595577576722,0.200595577576722,-105.0275923,39.7665033,-105.0299392,39.7664918
-10263,3980,7039,0.198840384599884,0.198840384599884,-105.0299392,39.7664918,-105.0322656,39.7664861
-10264,7039,3426,0.202741409948142,0.202741409948142,-105.0322656,39.7664861,-105.0346376,39.7664739
-10266,6623,1789,0.083407855110509,0.083407855110509,-104.9815624,39.6955402,-104.9815787,39.6947902
-10267,1789,7208,0.197984235440067,0.197984235440067,-104.9815787,39.6947902,-104.9815692,39.6930097
-10268,7208,5821,0.204810690510051,0.204810690510051,-104.9815692,39.6930097,-104.9815757,39.6911678
-10269,5821,7726,0.195060536702397,0.195060536702397,-104.9815757,39.6911678,-104.9815644,39.6894136
-10270,7726,7755,1.41312394826698,1.41312394826698,-104.9815644,39.6894136,-104.9816388,39.6767052
-10271,3161,7756,0.200885724863022,0.200885724863022,-104.9814586,39.7164952,-104.9814659,39.7146886
-10272,7756,3082,0.196495825635974,0.196495825635974,-104.9814659,39.7146886,-104.9815443,39.7129225
-10273,3082,3194,0.201063950220373,0.201063950220373,-104.9815443,39.7129225,-104.9815359,39.7111143
-10275,6110,1901,0.201670811128578,0.201670811128578,-104.9815389,39.7093013,-104.9815067,39.7074878
-10277,441,5814,0.0584483555155252,0.0584483555155252,-105.01516,39.7314761,-105.0151443,39.7320016
-10278,5814,5376,0.210901593054405,0.210901593054405,-105.0151443,39.7320016,-105.0150947,39.7338979
-10282,2638,5211,0.135802363910714,0.135802363910714,-105.015182,39.7220707,-105.015182,39.723292
-10284,5376,7115,0.169184130655589,0.169184130655589,-105.0150947,39.7338979,-105.0141573,39.7352378
-10286,6686,7758,0.0966310054355491,0.0966310054355491,-104.9498944,39.7710718,-104.9487638,39.7710638
-10287,7758,7759,0.103268100856542,0.103268100856542,-104.9487638,39.7710638,-104.9475555,39.7710608
-10289,7760,7761,0.0931830345887697,0.0931830345887697,-104.9463967,39.7710806,-104.9453067,39.7710608
-10290,7761,870,0.209204581827195,0.209204581827195,-104.9453067,39.7710608,-104.9428589,39.7710708
-10292,6165,6785,0.0415827902651337,0.0415827902651337,-104.9688892,39.7713666,-104.968405,39.7713299
-10293,6785,7357,0.102001818508737,0.102001818508737,-104.968405,39.7713299,-104.967212,39.7713035
-10294,7357,5405,0.112234858942921,0.112234858942921,-104.967212,39.7713035,-104.9658988,39.7713101
-10295,5405,3138,0.103097089620426,0.103097089620426,-104.9658988,39.7713101,-104.9646947,39.7713662
-10296,3138,7762,0.00572680722694595,0.00572680722694595,-104.9646947,39.7713662,-104.964756,39.771387
-10297,6991,6399,0.078057620939779,0.078057620939779,-104.9317465,39.7717305,-104.9308332,39.7717367
-10299,3614,2112,0.200468732564122,0.200468732564122,-104.9293312,39.771412,-104.9269856,39.7714213
-10300,2112,7766,0.09707938317328,0.09707938317328,-104.9269856,39.7714213,-104.9258497,39.7714216
-10301,7766,7663,0.107055697326901,0.107055697326901,-104.9258497,39.7714216,-104.9245971,39.7714283
-10303,869,7100,0.0985676933380822,0.0985676933380822,-104.9428549,39.7705626,-104.9417016,39.7705626
-11668,7785,8358,0.00862504224759753,0.00862504224759753,-105.0393001,39.7639573,-105.039401,39.7639563
-10305,2502,7767,0.133821378293258,0.133821378293258,-105.0095013,39.7831276,-105.0110634,39.7832133
-10306,7767,4793,0.137187308277769,0.137187308277769,-105.0110634,39.7832133,-105.0126685,39.7832397
-10307,4793,2155,0.138619015999951,0.138619015999951,-105.0126685,39.7832397,-105.0142907,39.7832331
-10308,2155,6302,0.131440648996103,0.131440648996103,-105.0142907,39.7832331,-105.015828,39.7832739
-10309,6302,6427,0.0971164197766542,0.0971164197766542,-105.015828,39.7832739,-105.01696,39.7833518
-10310,6427,5345,0.100480546860285,0.100480546860285,-105.01696,39.7833518,-105.0181359,39.7833518
-10311,5345,4641,0.0997483726431183,0.0997483726431183,-105.0181359,39.7833518,-105.0193032,39.7833584
-10312,4641,1266,0.0975658909823655,0.0975658909823655,-105.0193032,39.7833584,-105.0204447,39.7833782
-10313,1266,4540,0.103828265337942,0.103828265337942,-105.0204447,39.7833782,-105.0216205,39.7836137
-10314,4540,6286,0.102716645609349,0.102716645609349,-105.0216205,39.7836137,-105.0227972,39.7838025
-10315,6286,2720,0.0979601908800836,0.0979601908800836,-105.0227972,39.7838025,-105.0239436,39.7838066
-10317,2598,5187,0.177611938217315,0.177611938217315,-105.0394444,39.7229454,-105.0394481,39.7245427
-10318,5187,5655,0.104799417596727,0.104799417596727,-105.0394481,39.7245427,-105.0394723,39.725485
-10319,5655,7768,0.00220165954800827,0.00220165954800827,-105.0394723,39.725485,-105.0394723,39.7255048
-10321,7769,6068,0.194290902090962,0.194290902090962,-105.0392429,39.783874,-105.0392423,39.7856213
-10322,6068,2548,0.201654782967819,0.201654782967819,-105.0392423,39.7856213,-105.0392299,39.7874348
-10323,2548,7770,0.410001897212591,0.410001897212591,-105.0392299,39.7874348,-105.039251,39.791122
-10324,6390,7771,0.13140278725488,0.13140278725488,-105.039295,39.7475739,-105.0393066,39.7487556
-10325,7771,7772,0.135404012160521,0.135404012160521,-105.0393066,39.7487556,-105.0392981,39.7499733
-10326,7772,7773,0.135386059531021,0.135386059531021,-105.0392981,39.7499733,-105.0393133,39.7511908
-10327,7773,5541,0.102606539353157,0.102606539353157,-105.0393133,39.7511908,-105.0393273,39.7521135
-10328,5541,2410,0.100544408114452,0.100544408114452,-105.0393273,39.7521135,-105.0393531,39.7530175
-10329,2410,4294,0.100431298726032,0.100431298726032,-105.0393531,39.7530175,-105.039314,39.7539202
-10330,4294,7776,0.0501127826077893,0.0501127826077893,-105.039314,39.7539202,-105.0393033,39.7543708
-10331,7776,7777,0.0533516278326779,0.0533516278326779,-105.0393033,39.7543708,-105.0393054,39.7548506
-10332,7777,7778,0.0636719509277386,0.0636719509277386,-105.0393054,39.7548506,-105.0393109,39.7554232
-10333,7778,7702,0.142867174122929,0.142867174122929,-105.0393109,39.7554232,-105.0393233,39.756708
-10334,7702,2984,0.198167346423749,0.198167346423749,-105.0393233,39.756708,-105.039304,39.7584901
-10336,7779,1879,0.0577899859499687,0.0577899859499687,-105.0393085,39.7589141,-105.0393141,39.7594338
-10337,1879,7780,0.0975763172911078,0.0975763172911078,-105.0393141,39.7594338,-105.0393055,39.7603113
-10338,7780,7781,0.049615978114649,0.049615978114649,-105.0393055,39.7603113,-105.0393022,39.7607575
-10339,7781,7782,0.151461070035101,0.151461070035101,-105.0393022,39.7607575,-105.0392921,39.7621196
-10340,7782,7783,0.00828406172358757,0.00828406172358757,-105.0392921,39.7621196,-105.0392924,39.7621941
-10341,7783,7784,0.0408643643931965,0.0408643643931965,-105.0392924,39.7621941,-105.039294,39.7625616
-10342,7784,7785,0.155195634964959,0.155195634964959,-105.039294,39.7625616,-105.0393001,39.7639573
-10343,7785,6879,0.203175602967298,0.203175602967298,-105.0393001,39.7639573,-105.0393037,39.7657845
-10344,6879,1690,0.204417069906845,0.204417069906845,-105.0393037,39.7657845,-105.0393241,39.7676228
-10345,1690,7786,0.203521868851454,0.203521868851454,-105.0393241,39.7676228,-105.0393141,39.7694531
-10346,7786,2437,0.163479024443522,0.163479024443522,-105.0393141,39.7694531,-105.0393174,39.7709233
-10347,2437,2436,0.0381118302971424,0.0381118302971424,-105.0393174,39.7709233,-105.0393043,39.7712659
-10348,2436,5735,0.132411428624817,0.132411428624817,-105.0393043,39.7712659,-105.0393,39.7724567
-10349,5735,7787,0.0686968769014223,0.0686968769014223,-105.0393,39.7724567,-105.0393035,39.7730745
-10350,7787,5524,0.0876693797427073,0.0876693797427073,-105.0393035,39.7730745,-105.0392946,39.7738629
-10352,6462,6461,0.046218455398192,0.046218455398192,-105.0392949,39.7752627,-105.0392863,39.7756783
-10353,6461,7788,0.114101346725552,0.114101346725552,-105.0392863,39.7756783,-105.0392748,39.7767044
-10354,7788,7789,0.186352786707342,0.186352786707342,-105.0392748,39.7767044,-105.0392328,39.77838
-10355,7789,7790,0.201819126377908,0.201819126377908,-105.0392328,39.77838,-105.0392371,39.780195
-10356,7790,1426,0.209991688515331,0.209991688515331,-105.0392371,39.780195,-105.0392391,39.7820835
-10357,1426,7188,0.131433687737374,0.131433687737374,-105.0392391,39.7820835,-105.0392459,39.7832655
-10361,7791,7792,0.0221530824058495,0.0221530824058495,-105.0397234,39.7195311,-105.0397277,39.7197303
-10362,7792,1857,0.178051972210932,0.178051972210932,-105.0397277,39.7197303,-105.0397097,39.7213315
-10363,1857,2599,0.180197954723075,0.180197954723075,-105.0397097,39.7213315,-105.0397277,39.722952
-10365,7793,7794,0.133052671328159,0.133052671328159,-105.0393289,39.7329999,-105.0393119,39.7341964
-10366,7794,7795,0.00451480555637825,0.00451480555637825,-105.0393119,39.7341964,-105.0393113,39.734237
-10368,7796,316,0.0810108111113459,0.0810108111113459,-105.014664,39.7254193,-105.0137199,39.7254787
-10369,316,7797,0.0132929754360195,0.0132929754360195,-105.0137199,39.7254787,-105.013565,39.7254886
-10371,7798,1715,0.146657336243231,0.146657336243231,-105.0425,39.6923732,-105.0433411,39.691224
-10373,4991,5886,0.0409007612541298,0.0409007612541298,-105.0155876,39.7516074,-105.015177,39.7517962
-10374,5886,7799,0.0133509392362763,0.0133509392362763,-105.015177,39.7517962,-105.0150392,39.7518527
-10375,7799,6955,0.0302227835880131,0.0302227835880131,-105.0150392,39.7518527,-105.0147293,39.7519835
-10376,6955,120,0.355050454211798,0.355050454211798,-105.0147293,39.7519835,-105.011137,39.753586
-10378,6998,7800,0.287485052767515,0.287485052767515,-104.931634,39.787286,-104.9282697,39.7872538
-10379,7800,2107,0.0799880901292185,0.0799880901292185,-104.9282697,39.7872538,-104.9273336,39.78726
-10381,7801,7330,0.0459693673262965,0.0459693673262965,-104.954635,39.787386,-104.954097,39.7873857
-10382,7330,2069,0.0513405380116942,0.0513405380116942,-104.954097,39.7873857,-104.9534962,39.7873923
-10383,2069,2090,0.0410799126461524,0.0410799126461524,-104.9534962,39.7873923,-104.9530155,39.7873989
-10384,2090,2665,0.0609107459124439,0.0609107459124439,-104.9530155,39.7873989,-104.9523031,39.7873791
-10385,2665,2657,0.0344762888596363,0.0344762888596363,-104.9523031,39.7873791,-104.9518997,39.7873725
-10386,2657,4120,0.0653569613260274,0.0653569613260274,-104.9518997,39.7873725,-104.951135,39.787386
-10387,4120,4119,0.025633469399215,0.025633469399215,-104.951135,39.787386,-104.950835,39.787386
-10388,4119,6679,0.0800230712461371,0.0800230712461371,-104.950835,39.787386,-104.9498986,39.7873733
-10389,6679,7803,0.0968450624184265,0.0968450624184265,-104.9498986,39.7873733,-104.9487657,39.7873469
-10390,7803,7693,0.101842612257672,0.101842612257672,-104.9487657,39.7873469,-104.9475739,39.7873593
-10392,4983,7804,0.15108225604362,0.15108225604362,-104.9800351,39.7873785,-104.978267,39.7873917
-10393,7804,7805,0.125613899900368,0.125613899900368,-104.978267,39.7873917,-104.9768041,39.7875035
-10394,7805,7806,0.243703765368195,0.243703765368195,-104.9768041,39.7875035,-104.9740703,39.7881284
-10395,6511,833,0.205796808568101,0.205796808568101,-104.940586,39.787473,-104.942994,39.787434
-10396,833,1752,0.10962713348726,0.10962713348726,-104.942994,39.787434,-104.944277,39.787439
-10399,7807,6997,0.603696470077293,0.603696470077293,-104.9388993,39.787086,-104.931834,39.787086
-10401,6510,7620,0.115341473380206,0.115341473380206,-104.9405839,39.7877872,-104.939234,39.787786
-10403,1004,4224,0.0542745916357659,0.0542745916357659,-104.9875698,39.7873956,-104.9869346,39.7873956
-10405,7568,7808,0.0520701135747565,0.0520701135747565,-104.9863939,39.7873956,-104.9857845,39.7873956
-10406,7808,7085,0.0476697019408349,0.0476697019408349,-104.9857845,39.7873956,-104.9852266,39.7873956
-10407,7085,7087,0.0498741800030606,0.0498741800030606,-104.9852266,39.7873956,-104.9846429,39.7873956
-10410,7411,5866,0.177233832171644,0.177233832171644,-105.0372987,39.7165613,-105.0372953,39.7149674
-10411,5866,1317,0.177356465730534,0.177356465730534,-105.0372953,39.7149674,-105.0372901,39.7133724
-10412,1317,1373,0.176201016352257,0.176201016352257,-105.0372901,39.7133724,-105.0372815,39.7117878
-20226,10713,10016,0.0211937599266337,0.0211937599266337,-104.9413101,39.6963884,-104.9413099,39.696579
-10413,1373,7809,0.0646527574308656,0.0646527574308656,-105.0372815,39.7117878,-105.0373072,39.7112067
-10414,7809,6841,0.0827327683846137,0.0827327683846137,-105.0373072,39.7112067,-105.037298,39.7104627
-18362,7802,7116,0.00767249278335644,0.00767249278335644,-105.0259573,39.7679612,-105.0259576,39.7678922
-18363,7116,7802,0.00767249278335644,0.00767249278335644,-105.0259576,39.7678922,-105.0259573,39.7679612
-10416,7810,7811,0.101331501186014,0.101331501186014,-105.0367751,39.7039631,-105.0367923,39.7030519
-10417,7811,7812,0.10060881119881,0.10060881119881,-105.0367923,39.7030519,-105.0367751,39.7021472
-10418,7812,7813,0.20266387330204,0.20266387330204,-105.0367751,39.7021472,-105.0367751,39.7003246
-10419,7813,6245,0.198305641519059,0.198305641519059,-105.0367751,39.7003246,-105.0367322,39.6985415
-10420,6245,7814,0.197228200241648,0.197228200241648,-105.0367322,39.6985415,-105.0366887,39.6967681
-10422,1492,181,0.220815542326235,0.220815542326235,-105.036538,39.695087,-105.0367236,39.6931063
-10423,181,1709,0.205644626708499,0.205644626708499,-105.0367236,39.6931063,-105.0366978,39.691257
-10424,1709,7815,0.201521495468828,0.201521495468828,-105.0366978,39.691257,-105.0366851,39.6894447
-10425,7815,1576,0.244181862134779,0.244181862134779,-105.0366851,39.6894447,-105.0378698,39.6874469
-11867,8450,529,0.00567706315765741,0.00567706315765741,-105.0101803,39.7542535,-105.0102365,39.7542807
-10426,1576,7816,0.227813240625087,0.227813240625087,-105.0378698,39.6874469,-105.0381015,39.6854059
-10428,6320,7817,0.183577601350202,0.183577601350202,-105.0371184,39.7056206,-105.0371012,39.7039697
-10430,7213,7818,0.101757750903819,0.101757750903819,-104.9260704,39.7047422,-104.9257985,39.7038513
-10433,962,6868,0.198984557339899,0.198984557339899,-104.983818,39.7165111,-104.9838262,39.7147216
-10434,6868,5277,0.0940706344008526,0.0940706344008526,-104.9838262,39.7147216,-104.9838429,39.7138757
-10435,5277,3079,0.10232261403939,0.10232261403939,-104.9838429,39.7138757,-104.9838483,39.7129555
-10437,7204,5816,0.204032094058756,0.204032094058756,-104.9839803,39.693012,-104.9839857,39.6911771
-10438,5816,7722,0.196359705603447,0.196359705603447,-104.9839857,39.6911771,-104.9839913,39.6894112
-10439,7722,7819,1.20817529596719,1.20817529596719,-104.9839913,39.6894112,-104.9840729,39.678546
-10440,4246,1785,0.204162289925295,0.204162289925295,-104.9839286,39.6966228,-104.9839616,39.6947869
-10441,1785,7820,0.0718319226119568,0.0718319226119568,-104.9839616,39.6947869,-104.9839616,39.6941409
-10442,6026,3876,0.103447229282558,0.103447229282558,-104.9453067,39.775164,-104.9440965,39.7751442
-10443,3876,7821,0.100516631601798,0.100516631601798,-104.9440965,39.7751442,-104.9429206,39.775164
-10444,7322,2073,0.0916901418746821,0.0916901418746821,-104.9541485,39.7751435,-104.9530756,39.7751435
-10445,2073,2670,0.0954589635577965,0.0954589635577965,-104.9530756,39.7751435,-104.9519586,39.7751442
-10446,2670,4140,0.0958506641044589,0.0958506641044589,-104.9519586,39.7751442,-104.9508372,39.7751286
-10447,4140,6687,0.0883798780131798,0.0883798780131798,-104.9508372,39.7751286,-104.9498032,39.7751144
-10448,6687,7822,0.0995993099363261,0.0995993099363261,-104.9498032,39.7751144,-104.9486378,39.7751225
-10449,7822,7696,0.0932435604543702,0.0932435604543702,-104.9486378,39.7751225,-104.9475469,39.7751376
-10450,7696,3474,0.0968263022183935,0.0968263022183935,-104.9475469,39.7751376,-104.9464139,39.7751376
-10451,3474,7823,0.0468407500328621,0.0468407500328621,-104.9464139,39.7751376,-104.9458658,39.7751369
-10452,5171,3743,0.0993415474645253,0.0993415474645253,-104.9874858,39.7165623,-104.9874858,39.7156689
-10454,5856,4668,0.0981986239232037,0.0981986239232037,-104.9875046,39.7147611,-104.9875126,39.713878
-10455,4668,1294,0.100268721006653,0.100268721006653,-104.9875126,39.713878,-104.9875234,39.7129763
-10456,1294,1367,0.0977359423737142,0.0977359423737142,-104.9875234,39.7129763,-104.9875368,39.7120974
-10457,1367,3189,0.105552448113217,0.105552448113217,-104.9875368,39.7120974,-104.9875502,39.7111482
-10458,3189,6851,0.101177318178783,0.101177318178783,-104.9875502,39.7111482,-104.9875556,39.7102383
-10459,6851,4702,0.101416251034793,0.101416251034793,-104.9875556,39.7102383,-104.987569,39.7093263
-10460,4702,7468,0.0970718218675625,0.0970718218675625,-104.987569,39.7093263,-104.9875851,39.7084534
-10461,7468,1895,0.103477998735846,0.103477998735846,-104.9875851,39.7084534,-104.9875851,39.7075228
-10462,1895,7824,0.0967350574153813,0.0967350574153813,-104.9875851,39.7075228,-104.9875719,39.7066529
-10463,7824,7233,0.101338813079015,0.101338813079015,-104.9875719,39.7066529,-104.9875581,39.7057416
-10464,7233,3243,0.207470752756408,0.207470752756408,-104.9875581,39.7057416,-104.9874858,39.7038766
-10465,3243,7282,0.19399363779074,0.19399363779074,-104.9874858,39.7038766,-104.9875556,39.7021328
-10466,7282,7825,0.149563284680896,0.149563284680896,-104.9875556,39.7021328,-104.9875714,39.7007878
-10468,2141,7826,0.157978675104427,0.157978675104427,-105.0086114,39.7398829,-105.0095334,39.7411141
-10469,7826,7827,0.306989543465552,0.306989543465552,-105.0095334,39.7411141,-105.0113366,39.7435015
-10470,7827,7828,0.364212228682904,0.364212228682904,-105.0113366,39.7435015,-105.0134825,39.746331
-16042,9797,9804,0.0714393127860209,0.0714393127860209,-105.0122561,39.6891198,-105.0117013,39.6886397
-10475,7658,7549,0.158167365995463,0.158167365995463,-105.0462812,39.7282934,-105.0451467,39.7294168
-10477,5846,7750,0.200199460183562,0.200199460183562,-104.9372905,39.6911203,-104.9372755,39.6893199
-10479,466,7198,0.196816395654282,0.196816395654282,-104.9373661,39.6947234,-104.9373575,39.6929534
-10481,7268,7830,0.172430116159174,0.172430116159174,-104.9373314,39.7162377,-104.937334,39.714687
-10483,7217,7831,0.199372618146519,0.199372618146519,-104.9963567,39.7165938,-104.9963592,39.7148008
-10485,6256,7832,0.202992310919435,0.202992310919435,-104.9956644,39.6984948,-104.9956462,39.6966693
-10487,7833,4331,0.102741254079324,0.102741254079324,-104.9781265,39.7520022,-104.9769247,39.7519986
-10488,4331,7834,0.0526098265130649,0.0526098265130649,-104.9769247,39.7519986,-104.9763093,39.7519986
-10489,7834,5037,0.0501135526518646,0.0501135526518646,-104.9763093,39.7519986,-104.9757231,39.7519986
-10490,5037,7835,0.0494507564303858,0.0494507564303858,-104.9757231,39.7519986,-104.975145,39.7519832
-10491,7835,7836,0.0506565934234891,0.0506565934234891,-104.975145,39.7519832,-104.9745528,39.7519675
-10492,7836,7837,0.0500464479643974,0.0500464479643974,-104.9745528,39.7519675,-104.9739674,39.7519707
-10493,7837,2894,0.0524402316173641,0.0524402316173641,-104.9739674,39.7519707,-104.973354,39.7519741
-10494,2894,7838,0.107557027285785,0.107557027285785,-104.973354,39.7519741,-104.9720959,39.7519819
-10495,7838,7839,0.103734242634521,0.103734242634521,-104.9720959,39.7519819,-104.9708825,39.7519878
-10496,7839,4733,0.104796091296626,0.104796091296626,-104.9708825,39.7519878,-104.9696568,39.7519733
-10498,6800,7352,0.103066456507469,0.103066456507469,-104.968366,39.7519878,-104.9671604,39.7519921
-10499,7352,5398,0.104939276238433,0.104939276238433,-104.9671604,39.7519921,-104.965933,39.7519789
-10500,5398,7840,0.054043807018549,0.054043807018549,-104.965933,39.7519789,-104.9653014,39.7519582
-10501,7840,7841,0.0495084984704332,0.0495084984704332,-104.9653014,39.7519582,-104.9647228,39.7519393
-10502,7841,3900,0.109926182600774,0.109926182600774,-104.9647228,39.7519393,-104.9634376,39.7519078
-10503,3900,1036,0.101980966587827,0.101980966587827,-104.9634376,39.7519078,-104.9622462,39.751954
-10505,7842,6275,0.0499604206116259,0.0499604206116259,-104.9616094,39.7519514,-104.961025,39.751949
-10506,6275,7843,0.109041406945306,0.109041406945306,-104.961025,39.751949,-104.9597495,39.7519514
-10508,7844,7845,0.0640842858387461,0.0640842858387461,-105.0110496,39.7596475,-105.0117993,39.7596454
-10509,7845,1756,0.058813700126345,0.058813700126345,-105.0117993,39.7596454,-105.0124873,39.7596393
-10510,1756,4796,0.0566305502204531,0.0566305502204531,-105.0124873,39.7596393,-105.0131498,39.7596372
-10511,4796,2162,0.113835660361901,0.113835660361901,-105.0131498,39.7596372,-105.0144815,39.7596444
-10512,2162,7846,0.116364205137553,0.116364205137553,-105.0144815,39.7596444,-105.0158428,39.7596397
-10514,6135,4027,0.149896567221218,0.149896567221218,-105.0281572,39.7603038,-105.0299108,39.7603097
-10515,4027,7032,0.200991141471739,0.200991141471739,-105.0299108,39.7603097,-105.032262,39.7603311
-10516,7032,3412,0.200534935685617,0.200534935685617,-105.032262,39.7603311,-105.034608,39.7603223
-10517,3412,7633,0.0497828282990497,0.0497828282990497,-105.034608,39.7603223,-105.0351904,39.7603234
-10518,7633,5698,0.0497412906945155,0.0497412906945155,-105.0351904,39.7603234,-105.0357723,39.7603267
-10519,5698,7847,0.050919685731899,0.050919685731899,-105.0357723,39.7603267,-105.036368,39.7603278
-10521,7425,7166,0.104570214872527,0.104570214872527,-105.0369407,39.7603225,-105.038164,39.7603311
-10522,7166,7848,0.0473158420873474,0.0473158420873474,-105.038164,39.7603311,-105.0387174,39.7603215
-10523,7848,7780,0.0502827033263459,0.0502827033263459,-105.0387174,39.7603215,-105.0393055,39.7603113
-10524,7780,1123,0.100516868229367,0.100516868229367,-105.0393055,39.7603113,-105.0404814,39.7603047
-10525,1123,7849,0.0509916038841254,0.0509916038841254,-105.0404814,39.7603047,-105.0410779,39.7603102
-10526,7849,7497,0.0507179555279218,0.0507179555279218,-105.0410779,39.7603102,-105.0416712,39.7603156
-10527,7497,7850,0.0492496392928742,0.0492496392928742,-105.0416712,39.7603156,-105.0422473,39.760309
-10528,7850,3843,0.0492532755342339,0.0492532755342339,-105.0422473,39.760309,-105.0428235,39.7603069
-10529,3843,7851,0.0511792577413519,0.0511792577413519,-105.0428235,39.7603069,-105.0434222,39.7603017
-10530,7851,5556,0.0504327266312592,0.0504327266312592,-105.0434222,39.7603017,-105.0440122,39.7603035
-10561,7757,6414,0.14886592682355,0.14886592682355,-105.0151648,39.7202486,-105.0169053,39.7202585
-10531,5556,7852,0.789293029376444,0.789293029376444,-105.0440122,39.7603035,-105.053246,39.7602903
-10532,1618,7136,0.164980324326418,0.164980324326418,-104.9670562,39.7773409,-104.9684185,39.7783922
-10534,2027,5535,0.0854267701089729,0.0854267701089729,-104.9927506,39.7735106,-104.9923558,39.7742164
-10535,5535,6450,0.110522246345964,0.110522246345964,-104.9923558,39.7742164,-104.9923333,39.7752102
-10536,6450,6468,0.0325389081934527,0.0325389081934527,-104.9923333,39.7752102,-104.9923387,39.7755028
-10537,6468,7853,0.124455504811187,0.124455504811187,-104.9923387,39.7755028,-104.9923076,39.7766218
-10538,7853,7854,0.192779349126015,0.192779349126015,-104.9923076,39.7766218,-104.9923137,39.7783555
-10540,3713,7855,0.105701897268654,0.105701897268654,-104.9928366,39.7183943,-104.9928366,39.7193449
-10543,2614,7857,0.0507605301255621,0.0507605301255621,-104.9928302,39.7225456,-104.992831,39.7230021
-10544,7857,5197,0.124727455067454,0.124727455067454,-104.992831,39.7230021,-104.9928329,39.7241238
-10545,5197,6238,0.172240941584424,0.172240941584424,-104.9928329,39.7241238,-104.9928328,39.7256728
-10546,6238,7637,0.187669509666877,0.187669509666877,-104.9928328,39.7256728,-104.9928501,39.7273605
-10547,7637,7858,0.175500793784226,0.175500793784226,-104.9928501,39.7273605,-104.9928407,39.7289388
-10548,7858,7859,0.174943439798306,0.174943439798306,-104.9928407,39.7289388,-104.992836,39.7305121
-10551,5368,7126,0.152826634682226,0.152826634682226,-104.9929409,39.7338739,-104.9929372,39.7352483
-10552,7126,614,0.179980225267387,0.179980225267387,-104.9929372,39.7352483,-104.9929396,39.7368669
-10553,614,7860,0.174053494498076,0.174053494498076,-104.9929396,39.7368669,-104.9929377,39.7384322
-10554,7860,7861,0.175067683150656,0.175067683150656,-104.9929377,39.7384322,-104.992927,39.7400066
-10556,3960,5600,0.12071802041193,0.12071802041193,-105.0001852,39.7194126,-105.0015966,39.7194189
-10558,6724,4799,0.0913013732116182,0.0913013732116182,-105.0120852,39.72025,-105.0131527,39.72025
-10559,4799,2180,0.0880940650188129,0.0880940650188129,-105.0131527,39.72025,-105.0141827,39.72025
-10560,2180,7757,0.0839974084607818,0.0839974084607818,-105.0141827,39.72025,-105.0151648,39.7202486
-10562,6414,4645,0.149015796662155,0.149015796662155,-105.0169053,39.7202585,-105.0186476,39.7202585
-10563,4645,1271,0.151238114292438,0.151238114292438,-105.0186476,39.7202585,-105.0204158,39.7202453
-10564,1271,4535,0.201873592117884,0.201873592117884,-105.0204158,39.7202453,-105.0227761,39.7202519
-10565,4535,7863,0.199199232202906,0.199199232202906,-105.0227761,39.7202519,-105.0251051,39.7202633
-10567,7864,6740,0.106132792016662,0.106132792016662,-105.0251054,39.7197508,-105.0263463,39.7197518
-10568,6740,2257,0.103696160263475,0.103696160263475,-105.0263463,39.7197518,-105.0275587,39.7197559
-10569,2257,6132,0.104845212424081,0.104845212424081,-105.0275587,39.7197559,-105.0287845,39.7197477
-10570,6132,4000,0.104492371103569,0.104492371103569,-105.0287845,39.7197477,-105.0300062,39.7197532
-10571,4000,7049,0.105765984719426,0.105765984719426,-105.0300062,39.7197532,-105.0312428,39.7197574
-10572,7049,1395,0.105619552065538,0.105619552065538,-105.0312428,39.7197574,-105.0324777,39.7197573
-10573,1395,7865,0.0532676910827188,0.0532676910827188,-105.0324777,39.7197573,-105.0331005,39.7197556
-12077,2695,8043,0.149120560873017,0.149120560873017,-104.9839243,39.7555928,-104.9827245,39.7565663
-10574,7865,7382,0.0513518590570076,0.0513518590570076,-105.0331005,39.7197556,-105.0337009,39.7197539
-10576,7866,3392,0.0498722666723731,0.0498722666723731,-105.0343209,39.7197519,-105.034904,39.7197501
-10578,2360,5226,0.147034135602084,0.147034135602084,-104.9874759,39.7193464,-104.9891947,39.7193214
-10579,5226,5088,0.140218763176125,0.140218763176125,-104.9891947,39.7193214,-104.9908341,39.719328
-10580,5088,2812,0.112317158065107,0.112317158065107,-104.9908341,39.719328,-104.9921473,39.719328
-10581,2812,7855,0.0589853238635922,0.0589853238635922,-104.9921473,39.719328,-104.9928366,39.7193449
-10582,7855,4676,0.102566908777836,0.102566908777836,-104.9928366,39.7193449,-104.9940356,39.719328
-10583,4676,4948,0.0965475772401715,0.0965475772401715,-104.9940356,39.719328,-104.9951641,39.7193488
-10584,4948,7867,0.0515742481536382,0.0515742481536382,-104.9951641,39.7193488,-104.9957671,39.7193495
-10585,7867,7219,0.0513689618533378,0.0513689618533378,-104.9957671,39.7193495,-104.9963677,39.7193501
-10586,7219,7868,0.0507197202929207,0.0507197202929207,-104.9963677,39.7193501,-104.9969607,39.7193475
-10587,7868,5673,0.0490781046009859,0.0490781046009859,-104.9969607,39.7193475,-104.9975345,39.7193508
-10588,5673,7869,0.0456643057832586,0.0456643057832586,-104.9975345,39.7193508,-104.9980684,39.719352
-10591,7792,7870,0.049146171652799,0.049146171652799,-105.0397277,39.7197303,-105.0403023,39.7197335
-10592,7870,1108,0.0521568671722949,0.0521568671722949,-105.0403023,39.7197335,-105.0409121,39.7197369
-10593,1108,5770,0.0506160748755952,0.0506160748755952,-105.0409121,39.7197369,-105.0415039,39.7197378
-10594,5770,7510,0.0513174323114612,0.0513174323114612,-105.0415039,39.7197378,-105.0421039,39.7197388
-10595,7510,7871,0.0508676871173128,0.0508676871173128,-105.0421039,39.7197388,-105.0426986,39.7197333
-10596,7871,3865,0.0498216783929082,0.0498216783929082,-105.0426986,39.7197333,-105.0432811,39.7197303
-10598,3866,7535,0.105586605139886,0.105586605139886,-105.043285,39.7203775,-105.0445183,39.7203352
-10599,7535,7872,0.748786770151958,0.748786770151958,-105.0445183,39.7203352,-105.0532725,39.7204183
-10603,741,1561,0.140274508504629,0.140274508504629,-104.9564618,39.7764088,-104.9564528,39.7776703
-10604,1561,7876,0.139940443617856,0.139940443617856,-104.9564528,39.7776703,-104.9564449,39.7789288
-10605,7876,7877,0.121382404560649,0.121382404560649,-104.9564449,39.7789288,-104.9564367,39.7800204
-10607,3572,5640,0.141095915979936,0.141095915979936,-104.9561226,39.7544534,-104.9561277,39.7557223
-10608,5640,4345,0.139634312621283,0.139634312621283,-104.9561277,39.7557223,-104.9561539,39.7569779
-10609,4345,6343,0.13679021957376,0.13679021957376,-104.9561539,39.7569779,-104.9561352,39.758208
-10610,6343,3046,0.13698802953883,0.13698802953883,-104.9561352,39.758208,-104.956119,39.7594399
-10611,3046,7878,0.138953332142948,0.138953332142948,-104.956119,39.7594399,-104.9560949,39.7606894
-10612,7878,7879,0.00536944182123181,0.00536944182123181,-104.9560949,39.7606894,-104.9561163,39.7607348
-10613,7879,7880,0.11582084881522,0.11582084881522,-104.9561163,39.7607348,-104.9561137,39.7617764
-10615,7881,7882,0.0939943673024045,0.0939943673024045,-104.9562865,39.7328649,-104.9563208,39.7337098
-10617,4885,7883,0.18871104587798,0.18871104587798,-104.9562778,39.7351101,-104.9562673,39.7368072
-10618,7883,5483,0.174801190512252,0.174801190512252,-104.9562673,39.7368072,-104.9562788,39.7383792
-10619,5483,7884,0.200940942998637,0.200940942998637,-104.9562788,39.7383792,-104.9562845,39.7401863
-10620,7884,7885,0.0780811261571653,0.0780811261571653,-104.9562845,39.7401863,-104.9567283,39.7408
-10621,7885,3341,0.00930901113126469,0.00930901113126469,-104.9567283,39.7408,-104.9568365,39.7408093
-10624,1192,7887,0.0222318154701858,0.0222318154701858,-104.9567021,39.7271202,-104.956707,39.7273201
-10625,7887,3786,0.199739451308706,0.199739451308706,-104.956707,39.7273201,-104.9567075,39.7291164
-10627,7888,5967,0.106945706764055,0.106945706764055,-104.983517,39.7478374,-104.9844118,39.7485095
-10628,5967,7889,0.0517538867982505,0.0517538867982505,-104.9844118,39.7485095,-104.9848354,39.748842
-10629,7889,3011,0.055433069584998,0.055433069584998,-104.9848354,39.748842,-104.9852889,39.7491983
-10630,3011,7890,0.0504905501442438,0.0504905501442438,-104.9852889,39.7491983,-104.9856992,39.7495249
-10631,7890,4389,0.0518336432467722,0.0518336432467722,-104.9856992,39.7495249,-104.9861204,39.7498602
-10632,4389,7891,0.106909075712535,0.106909075712535,-104.9861204,39.7498602,-104.9870145,39.7505324
-10633,7891,7892,0.0447272763477039,0.0447272763477039,-104.9870145,39.7505324,-104.987378,39.7508217
-10634,7892,7893,0.0604871538278066,0.0604871538278066,-104.987378,39.7508217,-104.9878898,39.7511973
-10635,7893,7894,0.0527248029948841,0.0527248029948841,-104.9878898,39.7511973,-104.9883251,39.7515332
-10636,7894,7895,0.0510420835040534,0.0510420835040534,-104.9883251,39.7515332,-104.9887543,39.7518523
-10637,7895,7896,0.0538542282588573,0.0538542282588573,-104.9887543,39.7518523,-104.9891984,39.7521958
-10638,7896,7897,0.0528352422268061,0.0528352422268061,-104.9891984,39.7521958,-104.9896341,39.7525328
-10640,7898,7899,0.0483963113823249,0.0483963113823249,-104.9900722,39.7528603,-104.9904781,39.7531637
-10641,7899,7900,0.00514045868709644,0.00514045868709644,-104.9904781,39.7531637,-104.9905138,39.7532009
-10642,7900,6183,0.105068526303449,0.105068526303449,-104.9905138,39.7532009,-104.9913748,39.7538752
-10643,6183,7563,0.106218150970674,0.106218150970674,-104.9913748,39.7538752,-104.9922506,39.7545528
-10646,7902,7903,0.144865462765669,0.144865462765669,-105.0116934,39.7583103,-105.0105038,39.7592382
-10647,7903,7904,0.00237466940700901,0.00237466940700901,-105.0105038,39.7592382,-105.0104854,39.7592542
-10648,7904,6985,0.0721296292058115,0.0721296292058115,-105.0104854,39.7592542,-105.0098936,39.7597166
-10649,6985,4820,0.0719786596117478,0.0719786596117478,-105.0098936,39.7597166,-105.0093022,39.7601774
-10650,4820,7905,0.147529402397198,0.147529402397198,-105.0093022,39.7601774,-105.0080885,39.7611207
-10651,7905,7906,0.144081069806214,0.144081069806214,-105.0080885,39.7611207,-105.0068985,39.7620384
-10653,3189,1870,0.209495964340019,0.209495964340019,-104.9875502,39.7111482,-104.9899993,39.7111545
-10654,1870,7907,0.0977397792259224,0.0977397792259224,-104.9899993,39.7111545,-104.9911419,39.7111606
-10655,7907,4184,0.106328113718199,0.106328113718199,-104.9911419,39.7111606,-104.9923849,39.7111672
-10656,4184,7908,0.403661295666813,0.403661295666813,-104.9923849,39.7111672,-104.9971039,39.7111729
-10657,7908,4837,0.108683081676812,0.108683081676812,-104.9971039,39.7111729,-104.9983742,39.7111927
-10659,7909,7910,0.270199990406442,0.270199990406442,-105.0273938,39.6894539,-105.027347,39.6870242
-10660,7911,810,0.0673953106393502,0.0673953106393502,-105.0276068,39.7548215,-105.0276079,39.7554276
-10661,810,7912,0.0687323400006804,0.0687323400006804,-105.0276079,39.7554276,-105.0276151,39.7560457
-10662,7912,7913,0.136720833756656,0.136720833756656,-105.0276151,39.7560457,-105.0275993,39.7572752
-10666,2255,5858,0.174722136683236,0.174722136683236,-105.0275483,39.7165547,-105.0275397,39.7149834
-10667,5858,1305,0.178402656879188,0.178402656879188,-105.0275397,39.7149834,-105.0275483,39.713379
-10668,1305,7915,0.248888691440438,0.248888691440438,-105.0275483,39.713379,-105.0275397,39.7111407
-12170,8573,8574,0.0987973765101899,0.0987973765101899,-104.9944322,39.7487829,-104.9936089,39.7481594
-10670,6847,7916,0.0984178968171368,0.0984178968171368,-105.0275397,39.7102889,-105.0275054,39.7094042
-10671,7916,7485,0.0976761282305841,0.0976761282305841,-105.0275054,39.7094042,-105.0275311,39.708526
-10673,7454,5692,0.103533596199028,0.103533596199028,-105.0275397,39.707661,-105.0275397,39.7067299
-10674,5692,7917,0.101331500328489,0.101331500328489,-105.0275397,39.7067299,-105.0275225,39.7058187
-10675,7917,4966,0.0998668108920524,0.0998668108920524,-105.0275225,39.7058187,-105.027514,39.7049206
-10676,4966,7918,0.102812100555259,0.102812100555259,-105.027514,39.7049206,-105.0275397,39.7039962
-10677,7918,7919,0.0983963905872725,0.0983963905872725,-105.0275397,39.7039962,-105.0275397,39.7031113
-10678,7919,7920,0.0991546561543948,0.0991546561543948,-105.0275397,39.7031113,-105.027514,39.7022198
-10679,7920,7921,0.0991411977449166,0.0991411977449166,-105.027514,39.7022198,-105.0274968,39.7013283
-10680,7921,7922,0.106421383510006,0.106421383510006,-105.0274968,39.7013283,-105.0275358,39.7003717
-10682,7923,7924,0.106391305814005,0.106391305814005,-104.9406835,39.7550153,-104.9406835,39.7559721
-10684,7925,629,0.0646550267727614,0.0646550267727614,-104.9739262,39.7620073,-104.9734189,39.7624386
-10685,629,7926,0.00919464810452742,0.00919464810452742,-104.9734189,39.7624386,-104.9733442,39.7624981
-10686,7927,7928,0.0412650483746168,0.0412650483746168,-105.0158342,39.7601412,-105.0162425,39.7603392
-10687,7928,7929,0.155361420508855,0.155361420508855,-105.0162425,39.7603392,-105.0179546,39.7608082
-10688,7929,6922,0.0195376725753923,0.0195376725753923,-105.0179546,39.7608082,-105.0181826,39.7608206
-10689,6922,6736,0.174720460074468,0.174720460074468,-105.0181826,39.7608206,-105.0202265,39.7608392
-10691,7930,7931,0.0129516773904198,0.0129516773904198,-104.949883,39.707468,-104.9500344,39.7074688
-10692,7931,1511,0.391618540945239,0.391618540945239,-104.9500344,39.7074688,-104.9534977,39.7051656
-10693,1511,7932,0.0409032080648905,0.0409032080648905,-104.9534977,39.7051656,-104.9536135,39.7048087
-10694,7932,3280,0.112386881702983,0.112386881702983,-104.9536135,39.7048087,-104.9540083,39.7038447
-10696,4635,6586,0.185505221951206,0.185505221951206,-105.0192742,39.7316986,-105.0206647,39.7329791
-10698,6668,787,0.109054104365323,0.109054104365323,-105.007449,39.7016708,-105.0063481,39.7011764
-10699,787,6002,0.243058044096108,0.243058044096108,-105.0063481,39.7011764,-105.0054308,39.6991076
-10702,7934,1008,1.1041513689359,1.1041513689359,-104.9948315,39.7656825,-104.9879427,39.7740829
-10704,4497,7935,0.109080059964542,0.109080059964542,-105.0051406,39.788644,-105.0064172,39.7886514
-10705,7935,7936,0.375437621590472,0.375437621590472,-105.0064172,39.7886514,-105.0106854,39.7894536
-10706,7936,7937,0.0440200903162904,0.0440200903162904,-105.0106854,39.7894536,-105.0112006,39.7894548
-10708,3966,3963,0.0923048136404676,0.0923048136404676,-105.0005888,39.7883796,-105.0016187,39.7886302
-10710,6243,7938,0.0544857736456965,0.0544857736456965,-104.9874615,39.7256397,-104.9868244,39.7256399
-10711,7938,7571,0.0517149905092859,0.0517149905092859,-104.9868244,39.7256399,-104.9862197,39.7256409
-10712,7571,7939,0.0378829783952266,0.0378829783952266,-104.9862197,39.7256409,-104.9857768,39.7256351
-10714,7940,5872,0.0757028634173436,0.0757028634173436,-105.0421016,39.7156502,-105.0420963,39.7149694
-10715,5872,1324,0.177578299705823,0.177578299705823,-105.0420963,39.7149694,-105.0420966,39.7133724
-10716,1324,1380,0.1760884455939,0.1760884455939,-105.0420966,39.7133724,-105.0420733,39.7117889
-10717,1380,7941,0.0581557503278793,0.0581557503278793,-105.0420733,39.7117889,-105.0420966,39.7112662
-10718,7941,6844,0.0845562612846107,0.0845562612846107,-105.0420966,39.7112662,-105.0420451,39.7105068
-10719,6844,4696,0.11746862405599,0.11746862405599,-105.0420451,39.7105068,-105.0420537,39.7094504
-10720,4696,7452,0.157863437357233,0.157863437357233,-105.0420537,39.7094504,-105.0420537,39.7080307
-10722,5690,5337,0.242972143995655,0.242972143995655,-105.0420279,39.7068686,-105.0420306,39.7046835
-10724,7942,7943,0.14470003055266,0.14470003055266,-105.0424313,39.7034679,-105.0423884,39.702167
-10725,7943,1056,0.118222446008981,0.118222446008981,-105.0423884,39.702167,-105.0423884,39.7011038
-10726,1056,7944,0.0800381081986229,0.0800381081986229,-105.0423884,39.7011038,-105.0423884,39.700384
-10727,7944,6249,0.201854530416454,0.201854530416454,-105.0423884,39.700384,-105.0425772,39.6985745
-10728,6249,7945,0.201602089629263,0.201602089629263,-105.0425772,39.6985745,-105.0425595,39.6967615
-10729,7945,1497,0.20081804408168,0.20081804408168,-105.0425595,39.6967615,-105.0425601,39.6949555
-10730,1497,186,0.202686112287629,0.202686112287629,-105.0425601,39.6949555,-105.0425601,39.6931327
-10731,186,7798,0.0846089584800808,0.0846089584800808,-105.0425601,39.6931327,-105.0425,39.6923732
-10732,7798,1714,0.126110593452085,0.126110593452085,-105.0425,39.6923732,-105.0420365,39.6912966
-10734,7946,1580,0.141640668503246,0.141640668503246,-105.0421824,39.6894605,-105.0421871,39.6881867
-10735,1580,7947,0.292520501534348,0.292520501534348,-105.0421871,39.6881867,-105.0421863,39.685556
-10736,7948,2142,0.372172819192242,0.372172819192242,-105.0070074,39.7368827,-105.008237,39.7400934
-10738,7949,7950,0.022809009376778,0.022809009376778,-104.9733887,39.7145485,-104.9732428,39.7147202
-10739,7950,2916,0.200611278039498,0.200611278039498,-104.9732428,39.7147202,-104.9731398,39.7165226
-10741,2915,7951,0.200419085698686,0.200419085698686,-104.9733801,39.7165226,-104.9733887,39.7147202
-10743,7952,7953,0.0110105423016681,0.0110105423016681,-105.019895,39.7391795,-105.0198924,39.7392785
-10745,7954,7631,0.201162741792968,0.201162741792968,-105.0198441,39.7293262,-105.0198441,39.7275171
-16610,5355,7889,0.146740030035641,0.146740030035641,-104.986046,39.7479065,-104.9848354,39.748842
-10746,7631,7955,0.197131063915064,0.197131063915064,-105.0198441,39.7275171,-105.0198149,39.7257444
-10748,7956,6942,0.115194637181012,0.115194637181012,-104.9677476,39.7808918,-104.9677319,39.7819277
-12305,8628,8641,0.0276795827309073,0.0276795827309073,-105.0077112,39.7549614,-105.0078924,39.7547551
-10750,4939,4687,0.409424899618544,0.409424899618544,-104.9964751,39.7368603,-104.9941176,39.7336555
-10751,4687,7959,0.501489716289273,0.501489716289273,-104.9941176,39.7336555,-104.9912259,39.7297319
-10752,7959,7960,0.103838798829226,0.103838798829226,-104.9912259,39.7297319,-104.9906006,39.7289314
-10753,7960,5096,0.0880537297967434,0.0880537297967434,-104.9906006,39.7289314,-104.9899868,39.7282956
-10754,5096,7961,0.0549628705336601,0.0549628705336601,-104.9899868,39.7282956,-104.9896006,39.7279005
-10756,7962,7963,0.129400960231747,0.129400960231747,-105.0007006,39.7452954,-105.0005879,39.7441349
-10757,7963,7964,0.0109989745271633,0.0109989745271633,-105.0005879,39.7441349,-105.0005794,39.7440362
-10758,7964,7093,0.177295071329975,0.177295071329975,-105.0005794,39.7440362,-105.000125,39.7424805
-10759,7093,7965,0.0553949557893182,0.0553949557893182,-105.000125,39.7424805,-104.999898,39.7420139
-10760,7965,3937,0.0117544286846151,0.0117544286846151,-104.999898,39.7420139,-104.9998498,39.7419149
-10761,3937,7966,0.0655333417817751,0.0655333417817751,-104.9998498,39.7419149,-104.9995537,39.7413713
-10762,7966,7967,0.00514903654400709,0.00514903654400709,-104.9995537,39.7413713,-104.9995304,39.7413286
-10763,7967,7968,0.0154207763703831,0.0154207763703831,-104.9995304,39.7413286,-104.9994613,39.7412005
-10764,7968,7969,0.120137734300265,0.120137734300265,-104.9994613,39.7412005,-104.9989064,39.7402079
-10765,7969,7970,0.0235045509998941,0.0235045509998941,-104.9989064,39.7402079,-104.9987846,39.7400184
-10766,7970,4938,0.199335986652222,0.199335986652222,-104.9987846,39.7400184,-104.9976397,39.7384568
-10768,6788,4721,0.150986476371322,0.150986476371322,-104.9684027,39.7400015,-104.9696847,39.7409353
-10769,4721,667,0.112227110724083,0.112227110724083,-104.9696847,39.7409353,-104.9706168,39.7416459
-10770,667,5130,0.0364809731603039,0.0364809731603039,-104.9706168,39.7416459,-104.9709144,39.741881
-10771,5130,7141,0.148468037583607,0.148468037583607,-104.9709144,39.741881,-104.9721376,39.7428287
-10772,7141,7973,0.0653535267620459,0.0653535267620459,-104.9721376,39.7428287,-104.9726808,39.7432422
-10773,7973,2883,0.0864280151657955,0.0864280151657955,-104.9726808,39.7432422,-104.9733956,39.7437918
-10774,2883,4607,0.164926871665991,0.164926871665991,-104.9733956,39.7437918,-104.9747635,39.7448376
-10775,4607,5044,0.166914948534143,0.166914948534143,-104.9747635,39.7448376,-104.9761532,39.7458919
-10776,5044,6491,0.0452504465788914,0.0452504465788914,-104.9761532,39.7458919,-104.976527,39.74618
-10777,6491,7974,0.124696259323388,0.124696259323388,-104.976527,39.74618,-104.9775516,39.7469781
-10778,7974,3674,0.0837503652675649,0.0837503652675649,-104.9775516,39.7469781,-104.9782423,39.7475122
-10780,7975,7976,0.0210158411356976,0.0210158411356976,-104.9546025,39.7180291,-104.9546025,39.7182181
-10781,7976,2348,0.132347730703915,0.132347730703915,-104.9546025,39.7182181,-104.9546138,39.7194083
-10782,2348,4153,0.174709468744017,0.174709468744017,-104.9546138,39.7194083,-104.9546138,39.7209795
-10783,4153,4740,0.173977137035244,0.173977137035244,-104.9546138,39.7209795,-104.9546224,39.7225441
-10784,4740,6535,0.176711434597363,0.176711434597363,-104.9546224,39.7225441,-104.9546177,39.7241333
-10785,6535,7977,0.164237503877208,0.164237503877208,-104.9546177,39.7241333,-104.9546285,39.7256103
-10787,7978,692,0.202230219594829,0.202230219594829,-104.9547761,39.7401752,-104.9547755,39.7419939
-10788,692,7979,0.202124611474851,0.202124611474851,-104.9547755,39.7419939,-104.9547451,39.7438115
-10790,7980,1194,0.168544434179807,0.168544434179807,-104.9543549,39.7256103,-104.9544083,39.7271255
-10791,1194,7981,0.0214611132807924,0.0214611132807924,-104.9544083,39.7271255,-104.95441,39.7273185
-10793,1195,7982,0.0213718360054606,0.0213718360054606,-104.9540289,39.7271284,-104.9540279,39.7273206
-10794,7982,3783,0.200590566648469,0.200590566648469,-104.9540279,39.7273206,-104.9540461,39.7291245
-10795,3783,7983,0.155575717720948,0.155575717720948,-104.9540461,39.7291245,-104.9540572,39.7305236
-10797,947,7986,0.165669448326255,0.165669448326255,-104.9540658,39.7320945,-104.9540634,39.7335844
-10798,7986,4887,0.171543568824384,0.171543568824384,-104.9540634,39.7335844,-104.9541159,39.7351266
-10800,104,7987,0.0531910934067007,0.0531910934067007,-104.9874778,39.7002508,-104.9874076,39.7007261
-10801,7987,7283,0.14149347529597,0.14149347529597,-104.9874076,39.7007261,-104.9871988,39.7019884
-10803,4249,1782,0.204738067086155,0.204738067086155,-104.9862119,39.6966237,-104.986165,39.6947828
-10804,1782,7202,0.196638037803866,0.196638037803866,-104.986165,39.6947828,-104.9862426,39.6930154
-10805,7202,5813,0.202462167506831,0.202462167506831,-104.9862426,39.6930154,-104.9862656,39.6911947
-10806,5813,7720,0.198881694965003,0.198881694965003,-104.9862656,39.6911947,-104.9862428,39.6894062
-10831,5664,5936,0.10457956834692,0.10457956834692,-104.9752576,39.729517,-104.975253,39.7304575
-10807,7720,7988,2.41654683926542,2.41654683926542,-104.9862428,39.6894062,-104.986288,39.6676737
-10808,3557,815,0.15408456375045,0.15408456375045,-104.9745442,39.7546268,-104.9745356,39.7532411
-10809,815,7836,0.141625491803193,0.141625491803193,-104.9745356,39.7532411,-104.9745528,39.7519675
-10810,7836,7989,0.137956171688053,0.137956171688053,-104.9745528,39.7519675,-104.9745699,39.7507269
-10811,7989,7990,0.133814544271225,0.133814544271225,-104.9745699,39.7507269,-104.9745602,39.7495235
-10812,7990,7991,0.00435891657982006,0.00435891657982006,-104.9745602,39.7495235,-104.9745599,39.7494843
-10813,7991,7992,0.00504883599617259,0.00504883599617259,-104.9745599,39.7494843,-104.9745608,39.7494389
-10814,7992,3667,0.218697319390466,0.218697319390466,-104.9745608,39.7494389,-104.9746946,39.7474748
-10818,4607,7994,0.175458215250442,0.175458215250442,-104.9747635,39.7448376,-104.9747769,39.7432597
-10819,7994,7995,0.17352002006779,0.17352002006779,-104.9747769,39.7432597,-104.9747729,39.7416992
-10820,7995,664,0.00413178605963205,0.00413178605963205,-104.9747729,39.7416992,-104.9747756,39.7416621
-10821,664,7998,0.00436495014442939,0.00436495014442939,-104.9747756,39.7416621,-104.9747729,39.7416229
-10822,7998,7999,0.17836184127639,0.17836184127639,-104.9747729,39.7416229,-104.9748011,39.740019
-10824,6329,4163,0.106458655644295,0.106458655644295,-104.9752418,39.719173,-104.975216,39.7201302
-10825,4163,4772,0.262069785544738,0.262069785544738,-104.975216,39.7201302,-104.975236,39.722487
-10826,4772,6551,0.176006441608747,0.176006441608747,-104.975236,39.722487,-104.9752545,39.7240698
-10827,6551,8001,0.169733521019883,0.169733521019883,-104.9752545,39.7240698,-104.9752384,39.7255962
-10828,8001,8002,0.186888519126424,0.186888519126424,-104.9752384,39.7255962,-104.9752512,39.7272769
-10829,8002,3800,0.199472684499289,0.199472684499289,-104.9752512,39.7272769,-104.9752536,39.7290708
-10830,3800,5664,0.0496163554354094,0.0496163554354094,-104.9752536,39.7290708,-104.9752576,39.729517
-10832,5936,934,0.175672791884477,0.175672791884477,-104.975253,39.7304575,-104.9752714,39.7320373
-10833,934,5818,0.103656977616086,0.103656977616086,-104.9752714,39.7320373,-104.9752659,39.7329695
-10834,5818,2219,0.0798383163598858,0.0798383163598858,-104.9752659,39.7329695,-104.9752631,39.7336875
-10835,2219,4869,0.163069738486709,0.163069738486709,-104.9752631,39.7336875,-104.9752734,39.735154
-10836,4869,8003,0.190225091069506,0.190225091069506,-104.9752734,39.735154,-104.9752877,39.7368647
-10837,8003,5468,0.173414227417019,0.173414227417019,-104.9752877,39.7368647,-104.9753042,39.7384242
-10838,5468,6220,0.124444185392524,0.124444185392524,-104.9753042,39.7384242,-104.9752801,39.7395432
-10841,5175,8005,0.198062000656316,0.198062000656316,-104.9757389,39.7165269,-104.9757482,39.7183081
-10844,8006,681,0.244474486801046,0.244474486801046,-104.9569442,39.743807,-104.9569536,39.7416084
-10845,681,3340,0.0902358208620103,0.0902358208620103,-104.9569536,39.7416084,-104.9569483,39.7407969
-10847,7885,682,0.0896800723137281,0.0896800723137281,-104.9567283,39.7408,-104.9567458,39.7416064
-10848,682,580,0.244861214317874,0.244861214317874,-104.9567458,39.7416064,-104.9566854,39.743808
-10850,5334,6321,0.121951239816061,0.121951239816061,-105.0391209,39.7067305,-105.0391097,39.7056338
-10851,6321,8007,0.186507250461399,0.186507250461399,-105.0391097,39.7056338,-105.0391097,39.7039565
-10852,8007,8008,0.042606728375189,0.042606728375189,-105.0391097,39.7039565,-105.0391344,39.7035738
-10853,8008,8009,0.0463471911266823,0.0463471911266823,-105.0391344,39.7035738,-105.0391612,39.7031575
-10854,8009,8010,0.0102891732268637,0.0102891732268637,-105.0391612,39.7031575,-105.039158,39.703065
-10855,8010,8011,0.0998884840922572,0.0998884840922572,-105.039158,39.703065,-105.0391269,39.702167
-10856,8011,8012,0.201197445523876,0.201197445523876,-105.0391269,39.702167,-105.0391183,39.7003576
-10857,8012,6246,0.199805617134822,0.199805617134822,-105.0391183,39.7003576,-105.0390582,39.6985613
-10858,6246,8013,0.200864024373594,0.200864024373594,-105.0390582,39.6985613,-105.0390491,39.6967549
-10859,8013,2310,0.103900456751802,0.103900456751802,-105.0390491,39.6967549,-105.0390668,39.6958206
-10860,2310,1494,0.0983991417332815,0.0983991417332815,-105.0390668,39.6958206,-105.0390582,39.6949357
-10861,1494,183,0.203419998804159,0.203419998804159,-105.0390582,39.6949357,-105.0390582,39.6931063
-10862,183,1711,0.201968707186781,0.201968707186781,-105.0390582,39.6931063,-105.0390754,39.69129
-16611,7889,9327,0.146157951939095,0.146157951939095,-104.9848354,39.748842,-104.9836296,39.7497738
-10863,1711,8014,0.204806773712675,0.204806773712675,-105.0390754,39.69129,-105.0390543,39.6894482
-10864,8014,6157,0.126319530562447,0.126319530562447,-105.0390543,39.6894482,-105.0390628,39.6883122
-10865,6157,1577,0.0829958932471693,0.0829958932471693,-105.0390628,39.6883122,-105.0390628,39.6875658
-10867,7968,8016,0.0140119714836204,0.0140119714836204,-104.9994613,39.7412005,-104.9993111,39.7412509
-10869,2294,1531,0.46192746891159,0.46192746891159,-104.9899657,39.7654782,-104.9909332,39.7613911
-10871,8017,1203,0.169906498983342,0.169906498983342,-104.948399,39.7256083,-104.9484045,39.7271363
-10872,1203,8018,0.0221945337202718,0.0221945337202718,-104.9484045,39.7271363,-104.9484041,39.7273359
-10873,8018,3780,0.199572680726093,0.199572680726093,-104.9484041,39.7273359,-104.9484053,39.7291307
-10874,3780,8019,0.153206883868779,0.153206883868779,-104.9484053,39.7291307,-104.9483814,39.7305084
-10875,8019,952,0.177861736820837,0.177861736820837,-104.9483814,39.7305084,-104.9484181,39.7321077
-10876,952,8020,0.175149595226483,0.175149595226483,-104.9484181,39.7321077,-104.9484005,39.7336828
-10877,8020,4891,0.159178167143814,0.159178167143814,-104.9484005,39.7336828,-104.9483898,39.7351143
-10878,4891,8021,0.18577336394487,0.18577336394487,-104.9483898,39.7351143,-104.9483898,39.736785
-10879,8021,5489,0.173842148316324,0.173842148316324,-104.9483898,39.736785,-104.9483898,39.7383484
-10880,5489,8022,0.202303315910377,0.202303315910377,-104.9483898,39.7383484,-104.9484296,39.7401675
-10882,5166,8023,0.173986701720281,0.173986701720281,-104.9485858,39.7162531,-104.9485858,39.7178178
-10883,8023,2353,0.177612171175383,0.177612171175383,-104.9485858,39.7178178,-104.9485908,39.7194151
-10884,2353,4155,0.173655528353614,0.173655528353614,-104.9485908,39.7194151,-104.9485801,39.7209768
-10885,4155,4742,0.173355871166643,0.173355871166643,-104.9485801,39.7209768,-104.9486216,39.7225355
-10886,4742,6537,0.176328961502794,0.176328961502794,-104.9486216,39.7225355,-104.9485774,39.7241209
-10887,6537,8024,0.165303556900913,0.165303556900913,-104.9485774,39.7241209,-104.9485847,39.7256075
-10889,3030,3025,0.111248274146309,0.111248274146309,-104.9487906,39.7590818,-104.9488309,39.7600818
-10891,8025,8026,0.0640627296443105,0.0640627296443105,-104.9487313,39.761191,-104.9488251,39.7617626
-10893,3576,5643,0.138707185733922,0.138707185733922,-104.9488635,39.7544629,-104.9488535,39.7557103
-10894,5643,4348,0.139896948951005,0.139896948951005,-104.9488535,39.7557103,-104.9488435,39.7569684
-10895,4348,6346,0.137784232527167,0.137784232527167,-104.9488435,39.7569684,-104.9488336,39.7582075
-10897,8027,697,0.20001854589906,0.20001854589906,-104.9488409,39.7401691,-104.9488331,39.7419679
-10898,697,8028,0.202096920971429,0.202096920971429,-104.9488331,39.7419679,-104.9488359,39.7437854
-10900,8029,2876,0.123948984730939,0.123948984730939,-104.9487583,39.7837977,-104.9487583,39.7849124
-10901,2876,7628,0.141637704476922,0.141637704476922,-104.9487583,39.7849124,-104.9487399,39.7861861
-10902,7628,7803,0.129093895003183,0.129093895003183,-104.9487399,39.7861861,-104.9487657,39.7873469
-10903,7803,8030,0.203887723487366,0.203887723487366,-104.9487657,39.7873469,-104.9487914,39.7891804
-10904,750,1568,0.143385969503008,0.143385969503008,-104.9486136,39.7763944,-104.9486346,39.7776838
-10905,1568,356,0.136646760403047,0.136646760403047,-104.9486346,39.7776838,-104.9486062,39.7789125
-10907,3449,6863,0.17900718937772,0.17900718937772,-104.9461482,39.7162465,-104.9461768,39.7146368
-10908,6863,3068,0.174598273817653,0.174598273817653,-104.9461768,39.7146368,-104.9461768,39.7130666
-10909,3068,8031,0.0302783785251902,0.0302783785251902,-104.9461768,39.7130666,-104.9461768,39.7127943
-10910,8031,3188,0.14422007961407,0.14422007961407,-104.9461768,39.7127943,-104.9461736,39.7114973
-10912,3499,8032,0.199010937916898,0.199010937916898,-104.9465455,39.6983726,-104.9465284,39.6965829
-10913,8032,8033,0.200333001057217,0.200333001057217,-104.9465284,39.6965829,-104.9465436,39.6947813
-10915,5667,598,0.0644126037668526,0.0644126037668526,-104.947235,39.702287,-104.9468452,39.7017914
-10916,598,58,0.177763601732474,0.177763601732474,-104.9468452,39.7017914,-104.9465541,39.7002085
-10919,5970,8036,0.0505810885650185,0.0505810885650185,-104.9783626,39.753192,-104.9787817,39.7535131
-10920,8036,3015,0.0580577132309736,0.0580577132309736,-104.9787817,39.7535131,-104.9792691,39.7538767
-10921,3015,8037,0.0464238660315039,0.0464238660315039,-104.9792691,39.7538767,-104.9796416,39.7541805
-10922,8037,4384,0.0544799142925035,0.0544799142925035,-104.9796416,39.7541805,-104.9800877,39.7545304
-10923,4384,8038,0.0538947325800234,0.0538947325800234,-104.9800877,39.7545304,-104.9805458,39.7548634
-10924,8038,8039,0.0466438161180549,0.0466438161180549,-104.9805458,39.7548634,-104.9809281,39.7551627
-10925,8039,8040,0.00584498801301113,0.00584498801301113,-104.9809281,39.7551627,-104.9809778,39.7551988
-10926,8040,8041,0.0523763426314988,0.0523763426314988,-104.9809778,39.7551988,-104.981415,39.7555288
-10927,8041,8042,0.0530979313391782,0.0530979313391782,-104.981415,39.7555288,-104.9818522,39.755868
-10928,8042,8043,0.107654120371494,0.107654120371494,-104.9818522,39.755868,-104.9827245,39.7565663
-10929,8043,8044,0.0544759880197041,0.0544759880197041,-104.9827245,39.7565663,-104.9831794,39.7569094
-10930,8044,8045,0.0487657640583263,0.0487657640583263,-104.9831794,39.7569094,-104.9835828,39.7572195
-10931,8045,8046,0.0550233762997563,0.0550233762997563,-104.9835828,39.7572195,-104.9840288,39.7575763
-10932,8046,8047,0.0497918467778446,0.0497918467778446,-104.9840288,39.7575763,-104.9844325,39.7578991
-10933,8047,8048,0.0560301584180681,0.0560301584180681,-104.9844325,39.7578991,-104.9849005,39.7582519
-10934,8048,6177,0.0498105660603093,0.0498105660603093,-104.9849005,39.7582519,-104.9853166,39.7585655
-10937,8049,8050,0.0514663482815545,0.0514663482815545,-104.9866649,39.7595656,-104.9870901,39.7598933
-10939,5597,7545,0.109426166768049,0.109426166768049,-105.0438865,39.7312111,-105.0451654,39.7312441
-10940,7545,8051,0.69043474044403,0.69043474044403,-105.0451654,39.7312441,-105.0532391,39.7312862
-10943,4956,7224,0.100934524697699,0.100934524697699,-104.9952321,39.7305115,-104.9964124,39.7305084
-10944,7224,8052,0.0514703494422073,0.0514703494422073,-104.9964124,39.7305084,-104.9970142,39.7305007
-10945,8052,8053,0.0516967622411713,0.0516967622411713,-104.9970142,39.7305007,-104.9976187,39.7305054
-10946,8053,8054,0.0428181869535947,0.0428181869535947,-104.9976187,39.7305054,-104.9981194,39.7305074
-10947,8054,6644,0.0437760044869343,0.0437760044869343,-104.9981194,39.7305074,-104.9986313,39.7305095
-10948,6644,251,0.0675496864417695,0.0675496864417695,-104.9986313,39.7305095,-104.9994212,39.7305062
-10949,251,3950,0.064659952202738,0.064659952202738,-104.9994212,39.7305062,-105.0001773,39.7305104
-10950,3950,8056,0.0623263752149148,0.0623263752149148,-105.0001773,39.7305104,-105.0009061,39.7305052
-10951,8056,5609,0.0582215030638228,0.0582215030638228,-105.0009061,39.7305052,-105.0015869,39.7305003
-10952,5609,8057,0.0511983070002347,0.0511983070002347,-105.0015869,39.7305003,-105.0021856,39.7304991
-10953,8057,3730,0.0552226014136858,0.0552226014136858,-105.0021856,39.7304991,-105.0028312,39.7305102
-10954,3730,8058,0.106434809873425,0.106434809873425,-105.0028312,39.7305102,-105.0040758,39.7305164
-10956,5917,8060,0.0615467128621124,0.0615467128621124,-104.987439,39.7304505,-104.9881587,39.7304539
-10957,8060,8061,0.0595626505884908,0.0595626505884908,-104.9881587,39.7304539,-104.9888552,39.7304571
-10958,8061,8062,0.120093210467761,0.120093210467761,-104.9888552,39.7304571,-104.9902595,39.7304656
-10960,8063,4634,0.154652934390646,0.154652934390646,-105.01746,39.7312756,-105.0192656,39.7311969
-10961,4634,4549,0.20934037971115,0.20934037971115,-105.0192656,39.7311969,-105.0217136,39.7312012
-10962,4549,8064,0.293727880710195,0.293727880710195,-105.0217136,39.7312012,-105.0251484,39.731191
-10966,5216,3396,0.0579299126969349,0.0579299126969349,-105.0344587,39.7305984,-105.0351361,39.7306025
-10967,3396,8065,0.0454362838279539,0.0454362838279539,-105.0351361,39.7306025,-105.0356674,39.7306063
-10968,8065,5710,0.0481473121637486,0.0481473121637486,-105.0356674,39.7306063,-105.0362304,39.7306104
-10969,5710,8066,0.0449725321072065,0.0449725321072065,-105.0362304,39.7306104,-105.0367563,39.7306104
-10970,8066,7433,0.0497100835030792,0.0497100835030792,-105.0367563,39.7306104,-105.0373376,39.7306104
-10971,7433,8069,0.0438793771122388,0.0438793771122388,-105.0373376,39.7306104,-105.0378507,39.7306136
-10972,8069,7182,0.0471375837035957,0.0471375837035957,-105.0378507,39.7306136,-105.0384019,39.730617
-20567,10854,10857,0.225655121951984,0.225655121951984,-105.0159697,39.7588715,-105.0184643,39.7595354
-10973,7182,8070,0.0452974861696144,0.0452974861696144,-105.0384019,39.730617,-105.0389316,39.730617
-10974,8070,8071,0.0479228077199932,0.0479228077199932,-105.0389316,39.730617,-105.039492,39.730617
-10975,8071,8072,0.0470353472529161,0.0470353472529161,-105.039492,39.730617,-105.040042,39.7306132
-10976,8072,1097,0.0443841816938638,0.0443841816938638,-105.040042,39.7306132,-105.040561,39.7306097
-10978,8073,5318,0.014674630653103,0.014674630653103,-104.9738736,39.7606988,-104.9737157,39.7607506
-10979,5318,2905,0.0312080465120251,0.0312080465120251,-104.9737157,39.7607506,-104.9733508,39.7607599
-10980,2905,7145,0.104770590384922,0.104770590384922,-104.9733508,39.7607599,-104.9721251,39.760762
-10981,7145,5123,0.105925863098076,0.105925863098076,-104.9721251,39.760762,-104.9708859,39.7607568
-10982,5123,4737,0.104660211196924,0.104660211196924,-104.9708859,39.7607568,-104.9696615,39.7607527
-10983,4737,6783,0.106266768581811,0.106266768581811,-104.9696615,39.7607527,-104.9684183,39.7607496
-10984,6783,7367,0.10603565613408,0.10603565613408,-104.9684183,39.7607496,-104.9671778,39.7607476
-12610,8772,8773,0.0502119000696978,0.0502119000696978,-104.9969955,39.7289027,-104.9975826,39.7288966
-10987,3133,3905,0.108335751010408,0.108335751010408,-104.9647236,39.7607393,-104.9634562,39.7607434
-10988,3905,1043,0.106035430930181,0.106035430930181,-104.9634562,39.7607434,-104.9622157,39.7607434
-10989,1043,8074,0.0531930855223622,0.0531930855223622,-104.9622157,39.7607434,-104.9615934,39.7607445
-10990,8074,6278,0.0525006902367685,0.0525006902367685,-104.9615934,39.7607445,-104.9609792,39.7607455
-10991,6278,8075,0.105351603899057,0.105351603899057,-104.9609792,39.7607455,-104.9597467,39.7607455
-10992,8075,5007,0.100650315286722,0.100650315286722,-104.9597467,39.7607455,-104.9585692,39.7607455
-10993,5007,8076,0.0416106781167173,0.0416106781167173,-104.9585692,39.7607455,-104.9580824,39.7607455
-10995,8025,7689,0.0805451553909581,0.0805451553909581,-104.9487313,39.761191,-104.9478369,39.760963
-10996,7689,4508,0.0814563900003029,0.0814563900003029,-104.9478369,39.760963,-104.9468841,39.7609498
-10997,4508,3466,0.0836603655346893,0.0836603655346893,-104.9468841,39.7609498,-104.9459057,39.7609696
-10998,3466,6023,0.0805527124085535,0.0805527124085535,-104.9459057,39.7609696,-104.9449634,39.76096
-10999,6023,3872,0.0834734840918988,0.0834734840918988,-104.9449634,39.76096,-104.9440107,39.7607951
-11000,3872,8080,0.0833038712417768,0.0833038712417768,-104.9440107,39.7607951,-104.9430389,39.7607387
-11002,3967,8081,0.0785869791186196,0.0785869791186196,-105.0184978,39.6900096,-105.0194162,39.690003
-11004,6348,3039,0.0931730621198353,0.0931730621198353,-104.9430579,39.7581889,-104.9430494,39.7590268
-11005,3039,8080,0.190356710856614,0.190356710856614,-104.9430494,39.7590268,-104.9430389,39.7607387
-11006,8080,8082,0.0884015044030203,0.0884015044030203,-104.9430389,39.7607387,-104.9430328,39.7615337
-11008,6424,4647,0.0970252568524678,0.0970252568524678,-105.0175106,39.7248745,-105.0186451,39.7248745
-11009,4647,8083,0.151040975226462,0.151040975226462,-105.0186451,39.7248745,-105.0204107,39.7248423
-16204,9846,7728,0.404619504399153,0.404619504399153,-104.9798779,39.6857583,-104.9798585,39.6893971
-11010,4970,8084,0.141573509395187,0.141573509395187,-104.9800953,39.7828539,-104.9784386,39.7828407
-11012,6398,7450,0.0587460292912133,0.0587460292912133,-104.9991941,39.7080802,-104.9991888,39.7075519
-11013,7450,5682,0.0978645396723703,0.0978645396723703,-104.9991888,39.7075519,-104.9991817,39.7066718
-11014,5682,8085,0.19215729634673,0.19215729634673,-104.9991817,39.7066718,-104.9991901,39.7049437
-11015,8085,6825,0.00461462117405417,0.00461462117405417,-104.9991901,39.7049437,-104.9991903,39.7049022
-11016,6825,549,0.386380234242036,0.386380234242036,-104.9991903,39.7049022,-104.999187,39.7014274
-11017,549,6259,0.219376470776871,0.219376470776871,-104.999187,39.7014274,-104.999187,39.6994545
-11018,6259,8086,0.305359073933419,0.305359073933419,-104.999187,39.6994545,-104.9991292,39.6967087
-11019,8086,1485,0.202208842336051,0.202208842336051,-104.9991292,39.6967087,-104.9991903,39.6948908
-11023,8088,8089,0.0138986527527033,0.0138986527527033,-105.0018979,39.7429979,-105.0019804,39.7431056
-11024,8089,8090,0.00683010177656819,0.00683010177656819,-105.0019804,39.7431056,-105.002021,39.7431585
-11025,8090,8091,0.110435202693889,0.110435202693889,-105.002021,39.7431585,-105.0026536,39.7440244
-11026,7961,8092,0.198854876063874,0.198854876063874,-104.9896006,39.7279005,-104.9877223,39.7268463
-11028,5855,1340,0.201837936768745,0.201837936768745,-105.019178,39.714811,-105.0191455,39.712996
-11029,1340,8094,0.205566060887405,0.205566060887405,-105.0191455,39.712996,-105.0191455,39.7111473
-11030,8094,4699,0.204173926089909,0.204173926089909,-105.0191455,39.7111473,-105.0192055,39.7093117
-11031,4699,8095,0.200461574437924,0.200461574437924,-105.0192055,39.7093117,-105.0192399,39.7075091
-11032,8095,8096,0.201918867294297,0.201918867294297,-105.0192399,39.7075091,-105.0192399,39.7056932
-11033,8096,6823,0.198988761465987,0.198988761465987,-105.0192399,39.7056932,-105.0192227,39.7039037
-11034,6823,772,0.204865532850049,0.204865532850049,-105.0192227,39.7039037,-105.0192227,39.7020613
-11036,6007,6252,0.210749028817316,0.210749028817316,-105.0192141,39.7004566,-105.0192055,39.6985613
-11037,6252,8097,0.20159640654511,0.20159640654511,-105.0192055,39.6985613,-105.019205,39.6967483
-11039,6091,8098,0.0302498178580294,0.0302498178580294,-105.0158342,39.7607944,-105.0160862,39.7609854
-11040,8098,8099,0.0194131905433523,0.0194131905433523,-105.0160862,39.7609854,-105.016277,39.7610801
-11041,8099,6924,0.166900367789548,0.166900367789548,-105.016277,39.7610801,-105.0181853,39.7613979
-11042,6924,8100,0.161859559583179,0.161859559583179,-105.0181853,39.7613979,-105.0200789,39.7613979
-11043,8100,1241,0.0380629815604356,0.0380629815604356,-105.0200789,39.7613979,-105.0205242,39.7613979
-11045,6980,7942,0.133638145181839,0.133638145181839,-105.0408692,39.7034745,-105.0424313,39.7034679
-11046,7942,5338,0.0765467348148991,0.0765467348148991,-105.0424313,39.7034679,-105.0430777,39.7039439
-11048,5442,7919,0.212135491175046,0.212135491175046,-105.0250601,39.7030958,-105.0275397,39.7031113
-11049,7919,4410,0.19312496970157,0.19312496970157,-105.0275397,39.7031113,-105.0297971,39.7030981
-11050,4410,8103,0.226886968788061,0.226886968788061,-105.0297971,39.7030981,-105.0324492,39.7031047
-11051,8103,4283,0.17035467585884,0.17035467585884,-105.0324492,39.7031047,-105.0344405,39.7031047
-11053,8104,7854,0.0946426330892721,0.0946426330892721,-104.9912065,39.7783357,-104.9923137,39.7783555
-11054,7854,8105,0.0433309511619061,0.0433309511619061,-104.9923137,39.7783555,-104.9928201,39.7783357
-11055,8106,6776,0.129541839197132,0.129541839197132,-105.0252567,39.7778437,-105.0267719,39.7778785
-11056,6776,6152,0.13334664352248,0.13334664352248,-105.0267719,39.7778785,-105.0283323,39.7778787
-11057,6152,3997,0.133550546612879,0.133550546612879,-105.0283323,39.7778787,-105.0298945,39.7779116
-11058,3997,7046,0.134234793318191,0.134234793318191,-105.0298945,39.7779116,-105.0314652,39.7779248
-11059,7046,7376,0.132775137258175,0.132775137258175,-105.0314652,39.7779248,-105.0330187,39.7779446
-11060,7376,3435,0.135417405491425,0.135417405491425,-105.0330187,39.7779446,-105.0346033,39.7779525
-11063,7764,5715,0.0517371191288579,0.0517371191288579,-105.035177,39.7783841,-105.0357824,39.77838
-11064,5715,8107,0.0482057757930101,0.0482057757930101,-105.0357824,39.77838,-105.0363465,39.77838
-11065,8107,7435,0.0500858095958938,0.0500858095958938,-105.0363465,39.77838,-105.0369326,39.77838
-11066,7435,8108,0.0493949795014098,0.0493949795014098,-105.0369326,39.77838,-105.0375106,39.7783767
-11067,8108,7174,0.049625706970036,0.049625706970036,-105.0375106,39.7783767,-105.0380913,39.7783734
-11068,7174,6739,0.0493949818685724,0.0493949818685724,-105.0380913,39.7783734,-105.0386693,39.7783767
-11069,6739,7789,0.0481559013551591,0.0481559013551591,-105.0386693,39.7783767,-105.0392328,39.77838
-11070,7789,6645,0.0506327285203027,0.0506327285203027,-105.0392328,39.77838,-105.0398253,39.77838
-11071,6645,1136,0.0491201558695857,0.0491201558695857,-105.0398253,39.77838,-105.0404001,39.77838
-11072,1136,6995,0.0494363433732341,0.0494363433732341,-105.0404001,39.77838,-105.0409786,39.77838
-11073,6995,7503,0.049590164320003,0.049590164320003,-105.0409786,39.77838,-105.0415589,39.77838
-11074,7503,8109,0.100703299932673,0.100703299932673,-105.0415589,39.77838,-105.0427373,39.7783855
-11075,8109,7480,0.0534769030186113,0.0534769030186113,-105.0427373,39.7783855,-105.043363,39.7783777
-11076,7480,5580,0.0516905707687601,0.0516905707687601,-105.043363,39.7783777,-105.0439678,39.7783702
-11077,5580,8110,0.0497706020063474,0.0497706020063474,-105.0439678,39.7783702,-105.0445502,39.778373
-11078,8110,8111,0.0487450776836639,0.0487450776836639,-105.0445502,39.778373,-105.0451206,39.7783757
-11079,8111,8112,0.694365013204936,0.694365013204936,-105.0451206,39.7783757,-105.053246,39.7783797
-11080,1262,4539,0.0997555409236608,0.0997555409236608,-105.0204874,39.7784064,-105.0216547,39.778413
-11081,4539,6285,0.098678051142926,0.098678051142926,-105.0216547,39.778413,-105.0228094,39.7784186
-11083,2717,8113,0.100251109237605,0.100251109237605,-105.0239636,39.7784327,-105.0251365,39.7784506
-11085,8114,8115,0.096187670432143,0.096187670432143,-104.9982189,39.7783526,-104.9993433,39.7783922
-11086,8115,5626,0.201348891867615,0.201348891867615,-104.9993433,39.7783922,-105.0016991,39.7783602
-11088,2507,8116,0.0493483893872719,0.0493483893872719,-105.0105528,39.7777919,-105.0111288,39.7777603
-11089,8116,1238,0.100702597753866,0.100702597753866,-105.0111288,39.7777603,-105.0123072,39.7777623
-11090,1238,4792,0.032813432065695,0.032813432065695,-105.0123072,39.7777623,-105.0126909,39.7777735
-11091,4792,4812,0.0677278405661894,0.0677278405661894,-105.0126909,39.7777735,-105.0134831,39.7777557
-11092,4812,2152,0.0672921980026174,0.0672921980026174,-105.0134831,39.7777557,-105.0142702,39.7777735
-11093,2152,2179,0.0344341477791983,0.0344341477791983,-105.0142702,39.7777735,-105.0146727,39.777759
-11094,2179,6304,0.100339028034619,0.100339028034619,-105.0146727,39.777759,-105.0158468,39.7777672
-11095,6304,6426,0.101616906343387,0.101616906343387,-105.0158468,39.7777672,-105.0170359,39.7777689
-11096,6426,5344,0.101029409154815,0.101029409154815,-105.0170359,39.7777689,-105.0182175,39.7777985
-11097,5344,4640,0.0949596649493475,0.0949596649493475,-105.0182175,39.7777985,-105.0193287,39.7777995
-11098,4640,1261,0.0990622828589398,0.0990622828589398,-105.0193287,39.7777995,-105.0204874,39.7778259
-11100,3674,8117,0.125664760723522,0.125664760723522,-104.9782423,39.7475122,-104.97815,39.7486401
-11101,8117,8118,0.0959168081132613,0.0959168081132613,-104.97815,39.7486401,-104.9781487,39.7495027
-11102,8118,8119,0.126940211454871,0.126940211454871,-104.9781487,39.7495027,-104.978147,39.7506443
-11103,8119,8120,0.01117909521949,0.01117909521949,-104.978147,39.7506443,-104.9781435,39.7507448
-11104,8120,2680,0.0506435066002237,0.0506435066002237,-104.9781435,39.7507448,-104.9781521,39.7512002
-11105,2680,7576,0.0851117723335375,0.0851117723335375,-104.9781521,39.7512002,-104.9781607,39.7519656
-11106,7576,7833,0.0050110745435388,0.0050110745435388,-104.9781607,39.7519656,-104.9781265,39.7520022
-16206,5823,7210,0.206033080289906,0.206033080289906,-104.9798455,39.691158,-104.9798457,39.6930109
-11107,7833,8121,0.0770500763169566,0.0770500763169566,-104.9781265,39.7520022,-104.9781346,39.7526951
-11108,8121,8035,0.0465513466723509,0.0465513466723509,-104.9781346,39.7526951,-104.9781265,39.7531137
-11110,807,8122,0.0835494437055617,0.0835494437055617,-104.9781222,39.7532569,-104.9781363,39.7540082
-11111,8122,8123,0.0673397864842803,0.0673397864842803,-104.9781363,39.7540082,-104.9781379,39.7546138
-11112,8123,3017,0.0101257363562013,0.0101257363562013,-104.9781379,39.7546138,-104.9782228,39.7546773
-11114,8124,8125,0.0101518907891953,0.0101518907891953,-104.9790658,39.7205397,-104.9791138,39.7204562
-11115,8125,2367,0.124673068713839,0.124673068713839,-104.9791138,39.7204562,-104.9791205,39.719335
-11116,2367,8126,0.113318754907998,0.113318754907998,-104.9791205,39.719335,-104.9791209,39.7183159
-11117,8126,1826,0.2011636326138,0.2011636326138,-104.9791209,39.7183159,-104.9791466,39.7165069
-11119,8127,8128,0.150025905824831,0.150025905824831,-105.01151,39.7418472,-105.0124026,39.7430088
-11121,2887,8129,0.081938792894379,0.081938792894379,-104.9729638,39.7478589,-104.9721336,39.7482271
-11122,8129,8130,0.106964546123147,0.106964546123147,-104.9721336,39.7482271,-104.9708826,39.7482126
-11123,8130,4728,0.104978647949955,0.104978647949955,-104.9708826,39.7482126,-104.9696547,39.7482082
-11124,4728,6795,0.108689532522494,0.108689532522494,-104.9696547,39.7482082,-104.9683834,39.7482029
-11125,6795,7347,0.102216150252819,0.102216150252819,-104.9683834,39.7482029,-104.9671878,39.748204
-11126,7347,5393,0.105889579896167,0.105889579896167,-104.9671878,39.748204,-104.9659493,39.748214
-11127,5393,8131,0.054562518485416,0.054562518485416,-104.9659493,39.748214,-104.9653111,39.7482118
-11128,8131,8132,0.0481675689920574,0.0481675689920574,-104.9653111,39.7482118,-104.9647477,39.7482098
-11129,8132,3895,0.109975096473535,0.109975096473535,-104.9647477,39.7482098,-104.9634614,39.7482006
-11130,3895,1027,0.10512607647723,0.10512607647723,-104.9634614,39.7482006,-104.9622318,39.748208
-11131,1027,8133,0.0540856357592879,0.0540856357592879,-104.9622318,39.748208,-104.9615993,39.7482178
-12777,8831,8832,0.188959131880304,0.188959131880304,-104.9729154,39.7255792,-104.9729324,39.7272785
-11133,6270,8134,0.0524343047299347,0.0524343047299347,-104.960998,39.748227,-104.9603847,39.7482239
-11134,8134,8135,0.0535628703960502,0.0535628703960502,-104.9603847,39.7482239,-104.9597582,39.7482207
-11136,8136,8137,0.085310565822113,0.085310565822113,-104.9592611,39.7837879,-104.9602584,39.7837523
-11137,8137,6283,0.0924164471878071,0.0924164471878071,-104.9602584,39.7837523,-104.9613399,39.7837589
-11138,6283,8138,0.0880043396162394,0.0880043396162394,-104.9613399,39.7837589,-104.9623698,39.7837589
-11139,8138,8139,0.093883258506383,0.093883258506383,-104.9623698,39.7837589,-104.9634685,39.7837589
-11140,8139,3142,0.0916816056478044,0.0916816056478044,-104.9634685,39.7837589,-104.9645414,39.7837523
-11141,3142,5416,0.0909467644852468,0.0909467644852468,-104.9645414,39.7837523,-104.9656057,39.7837589
-11142,5416,8140,0.0909305385237858,0.0909305385237858,-104.9656057,39.7837589,-104.9666698,39.7837514
-11144,3154,4972,0.0951253779669951,0.0951253779669951,-104.981211,39.7837245,-104.980098,39.7837069
-11145,4972,8141,0.159341748119657,0.159341748119657,-104.980098,39.7837069,-104.9783643,39.7831792
-11147,8142,7088,0.0975513520982515,0.0975513520982515,-104.9858077,39.7837643,-104.9846662,39.7837774
-11148,7088,971,0.0957796137604222,0.0957796137604222,-104.9846662,39.7837774,-104.9835456,39.7837971
-11149,971,7402,0.0550171923708008,0.0550171923708008,-104.9835456,39.7837971,-104.9829018,39.7837905
-11150,7402,5289,0.0484207753056408,0.0484207753056408,-104.9829018,39.7837905,-104.9823354,39.7837773
-11152,3320,8143,0.077853024278325,0.077853024278325,-104.9569981,39.7837383,-104.956087,39.7837391
-11153,8143,5756,0.0805728425443714,0.0805728425443714,-104.956087,39.7837391,-104.9551441,39.7837449
-11154,5756,7328,0.0873058149168626,0.0873058149168626,-104.9551441,39.7837449,-104.9541227,39.7837251
-11155,7328,2087,0.0932446680916279,0.0932446680916279,-104.9541227,39.7837251,-104.9530315,39.7837193
-12803,4082,3763,0.178907695562899,0.178907695562899,-105.0063995,39.7838419,-105.0064169,39.7854508
-11158,4115,4117,0.0440125760632801,0.0440125760632801,-104.9513234,39.7837391,-104.9508084,39.7837325
-11159,4117,6504,0.0374084190760855,0.0374084190760855,-104.9508084,39.7837325,-104.9503707,39.7837259
-11160,6504,6677,0.044394894025319,0.044394894025319,-104.9503707,39.7837259,-104.9498557,39.7837786
-11161,6677,8029,0.0937961823239111,0.0937961823239111,-104.9498557,39.7837786,-104.9487583,39.7837977
-11162,8029,8144,0.0511329046048641,0.0511329046048641,-104.9487583,39.7837977,-104.9481599,39.7837974
-11163,8144,8145,0.0135266374241744,0.0135266374241744,-104.9481599,39.7837974,-104.9480016,39.7837973
-11165,4223,1001,0.0531658581374023,0.0531658581374023,-104.986953,39.7839026,-104.9875739,39.7838718
-11167,4374,2855,0.170827518580558,0.170827518580558,-105.0014998,39.7007322,-105.0034418,39.7003749
-11169,8146,4313,0.17183605887504,0.17183605887504,-105.0324321,39.7013349,-105.0344405,39.7013547
-11171,5444,7921,0.207916650376417,0.207916650376417,-105.0250665,39.701332,-105.0274968,39.7013283
-11172,7921,4408,0.197533961318481,0.197533961318481,-105.0274968,39.7013283,-105.0298056,39.7013481
-11174,8147,644,0.13870723980062,0.13870723980062,-104.9389466,39.7401205,-104.9389365,39.7413679
-11175,644,7273,0.132830481063153,0.132830481063153,-104.9389365,39.7413679,-104.9389193,39.7425624
-11176,7273,1992,0.0923486278054484,0.0923486278054484,-104.9389193,39.7425624,-104.9389249,39.7433929
-11177,1992,1976,0.0346172149199892,0.0346172149199892,-104.9389249,39.7433929,-104.9389295,39.7437042
-11178,1976,4591,0.135026001443702,0.135026001443702,-104.9389295,39.7437042,-104.9389209,39.7449185
-11179,4591,6478,0.132622992610531,0.132622992610531,-104.9389209,39.7449185,-104.9389155,39.7461112
-12836,8855,8856,0.0453127355156614,0.0453127355156614,-104.9892657,39.7540916,-104.988892,39.7538026
-11180,6478,2462,0.14279254357733,0.14279254357733,-104.9389155,39.7461112,-104.9388988,39.7473953
-11182,8148,8149,0.201096301426274,0.201096301426274,-104.9394475,39.7256125,-104.9394514,39.727421
-11183,8149,8150,0.201154462707023,0.201154462707023,-104.9394514,39.727421,-104.9394389,39.72923
-11185,2461,5905,0.204782750962282,0.204782750962282,-104.9394874,39.7473999,-104.9394475,39.7492413
-11186,5905,8151,0.200573430726899,0.200573430726899,-104.9394475,39.7492413,-104.9394486,39.7510451
-11187,8151,790,0.199941729347635,0.199941729347635,-104.9394486,39.7510451,-104.9394378,39.7528432
-11188,790,3583,0.202642621733606,0.202642621733606,-104.9394378,39.7528432,-104.9394304,39.7546656
-11189,3583,4354,0.202475015345548,0.202475015345548,-104.9394304,39.7546656,-104.9394273,39.7564865
-11190,4354,8152,0.200309115545572,0.200309115545572,-104.9394273,39.7564865,-104.9393999,39.7582878
-11191,8152,3057,0.206933046688651,0.206933046688651,-104.9393999,39.7582878,-104.9394429,39.7601485
-11192,3057,8153,0.186611026973769,0.186611026973769,-104.9394429,39.7601485,-104.9394065,39.7618265
-11194,1060,8154,0.173008298211734,0.173008298211734,-104.9395373,39.7162311,-104.939535,39.717787
-11195,8154,8155,0.177900871903465,0.177900871903465,-104.939535,39.717787,-104.9395373,39.7193869
-11196,8155,8156,0.167407375878646,0.167407375878646,-104.9395373,39.7193869,-104.9395248,39.7208924
-11197,8156,4775,0.251673348312152,0.251673348312152,-104.9395248,39.7208924,-104.9393188,39.7231502
-11198,4775,6553,0.132857734263153,0.132857734263153,-104.9393188,39.7231502,-104.9393102,39.724345
-11199,6553,8157,0.106438324963657,0.106438324963657,-104.9393102,39.724345,-104.9393188,39.7253022
-11201,2232,5133,0.19052148019247,0.19052148019247,-104.9395024,39.7328547,-104.9395046,39.7345681
-11202,5133,4902,0.0151263568070176,0.0151263568070176,-104.9395046,39.7345681,-104.9394839,39.7347032
-11203,4902,6619,0.197484990473566,0.197484990473566,-104.9394839,39.7347032,-104.9394962,39.7364792
-11205,8158,8159,0.20585122765193,0.20585122765193,-104.9394819,39.7382793,-104.939514,39.7401304
-11207,8160,8161,0.016887203978,0.016887203978,-104.9408036,39.7114181,-104.9406062,39.7114203
-11221,106,61,0.00533283632570931,0.00533283632570931,-104.931654,39.700221,-104.931714,39.700208
-11222,61,65,0.207145778882675,0.207145778882675,-104.931714,39.700208,-104.934135,39.700181
-11224,103,8170,0.0169041191858478,0.0169041191858478,-104.940786,39.7001905,-104.9405886,39.7001839
-11225,8170,8171,0.361108877807587,0.361108877807587,-104.9405886,39.7001839,-104.936368,39.700221
-11226,8171,8172,0.190446564346409,0.190446564346409,-104.936368,39.700221,-104.934142,39.700234
-11228,8173,8174,0.0754029121625499,0.0754029121625499,-104.940655,39.7066792,-104.9406492,39.7073573
-11229,8174,8175,0.417052793540933,0.417052793540933,-104.9406492,39.7073573,-104.9406062,39.7111078
-11231,8176,8177,0.0299391686417842,0.0299391686417842,-104.9365311,39.7051466,-104.9362135,39.7050335
-11232,8177,8178,0.202215537578589,0.202215537578589,-104.9362135,39.7050335,-104.9340806,39.7042496
-11233,8178,8179,0.11808571362223,0.11808571362223,-104.9340806,39.7042496,-104.9328366,39.7037894
-11234,8179,8163,0.126818785158071,0.126818785158071,-104.9328366,39.7037894,-104.9314767,39.7033354
-11236,4228,8181,0.209470643186114,0.209470643186114,-104.933969,39.696598,-104.933897,39.698481
-11269,4227,8200,0.197818013323833,0.197818013323833,-104.936211,39.696598,-104.936222,39.694819
-11237,8181,65,0.190124873120192,0.190124873120192,-104.933897,39.698481,-104.934135,39.700181
-11238,65,8172,0.00592368117466438,0.00592368117466438,-104.934135,39.700181,-104.934142,39.700234
-11239,8172,8178,0.446545243407564,0.446545243407564,-104.934142,39.700234,-104.9340806,39.7042496
-12886,8876,655,0.00596005420121878,0.00596005420121878,-104.9810837,39.7416131,-104.9810836,39.7416667
-11242,8183,8184,0.228538005170478,0.228538005170478,-104.9405972,39.7047205,-104.9381461,39.7039031
-11245,8162,8186,0.154667884886688,0.154667884886688,-104.936452,39.711255,-104.9351303,39.7103058
-11246,8186,8187,0.175562487769928,0.175562487769928,-104.9351303,39.7103058,-104.9332506,39.7096719
-11249,3633,8188,0.0150923041998694,0.0150923041998694,-104.9408419,39.7060696,-104.9406663,39.7060565
-11250,8188,8189,0.270579217097142,0.270579217097142,-104.9406663,39.7060565,-104.9375812,39.7055199
-11251,8189,8176,0.0989590805052705,0.0989590805052705,-104.9375812,39.7055199,-104.9365311,39.7051466
-11253,8163,3643,0.149826975112258,0.149826975112258,-104.9314767,39.7033354,-104.9299023,39.7027452
-11255,8190,1804,0.201671276037755,0.201671276037755,-104.937302,39.696603,-104.9373232,39.6947894
-11257,8191,8192,0.0154162495075233,0.0154162495075233,-104.940786,39.7020593,-104.9406058,39.7020593
-11258,8192,8193,0.181517364616001,0.181517364616001,-104.9406058,39.7020593,-104.9384841,39.7020481
-11259,8193,8194,0.180264399151985,0.180264399151985,-104.9384841,39.7020481,-104.936377,39.702045
-11261,8181,3550,0.192378625445026,0.192378625445026,-104.933897,39.698481,-104.931651,39.698398
-11264,8186,8197,0.16597516800592,0.16597516800592,-104.9351303,39.7103058,-104.936366,39.709155
-11265,8197,8198,0.19583924016197,0.19583924016197,-104.936366,39.709155,-104.9363539,39.7073938
-11267,8199,8197,0.123986592502342,0.123986592502342,-104.936354,39.71027,-104.936366,39.709155
-11271,8194,8171,0.202821007714315,0.202821007714315,-104.936377,39.702045,-104.936368,39.700221
-11272,8171,8195,0.195495736534207,0.195495736534207,-104.936368,39.700221,-104.9363825,39.6984629
-11273,8195,8201,0.207035429354564,0.207035429354564,-104.9363825,39.6984629,-104.936392,39.696601
-11275,8202,8174,0.0167300114490718,0.0167300114490718,-104.9408446,39.707351,-104.9406492,39.7073573
-11277,8198,8167,0.130702597640292,0.130702597640292,-104.9363539,39.7073938,-104.9348261,39.707407
-11278,8167,8203,0.122618976220882,0.122618976220882,-104.9348261,39.707407,-104.9333927,39.707407
-11279,8203,8204,0.327046093817032,0.327046093817032,-104.9333927,39.707407,-104.92957,39.707451
-11280,4228,4229,0.198835732908948,0.198835732908948,-104.933969,39.696598,-104.931645,39.696598
-11281,4229,8205,0.301334691508365,0.301334691508365,-104.931645,39.696598,-104.928123,39.696591
-11282,8206,8190,0.113799565910968,0.113799565910968,-104.9386317,39.6965781,-104.937302,39.696603
-11284,8201,4227,0.0154895076655846,0.0154895076655846,-104.936392,39.696601,-104.936211,39.696598
-11286,8207,8200,0.0930040479254132,0.0930040479254132,-104.937309,39.694816,-104.936222,39.694819
-11288,8193,8184,0.208283527691618,0.208283527691618,-104.9384841,39.7020481,-104.9381461,39.7039031
-11316,5155,2238,0.0837223321108041,0.0837223321108041,-104.9292584,39.7320999,-104.9292252,39.7328524
-11289,8184,8189,0.18616179415052,0.18616179415052,-104.9381461,39.7039031,-104.9375812,39.7055199
-11291,3257,8208,0.321455747501831,0.321455747501831,-104.9302161,39.7037522,-104.9336074,39.7049972
-11293,443,8209,0.110751336507506,0.110751336507506,-104.932837,39.701282,-104.932831,39.700286
-11294,392,8179,0.178734728363983,0.178734728363983,-104.932837,39.702182,-104.9328366,39.7037894
-11296,8162,6291,0.216060929512084,0.216060929512084,-104.936452,39.711255,-104.9339286,39.7111692
-11297,6291,7342,0.196043159951137,0.196043159951137,-104.9339286,39.7111692,-104.9316369,39.711189
-11645,8348,6433,0.104796073662296,0.104796073662296,-105.0190347,39.7552995,-105.0178088,39.7553019
-11299,7342,5274,0.233799434282417,0.233799434282417,-104.9316369,39.711189,-104.93153,39.709088
-11300,61,3550,0.201334976523304,0.201334976523304,-104.931714,39.700208,-104.931651,39.698398
-11301,3550,4229,0.200151526253302,0.200151526253302,-104.931651,39.698398,-104.931645,39.696598
-11303,5279,3162,0.0990447395902117,0.0990447395902117,-104.9826249,39.7183267,-104.9814669,39.7183289
-11304,3162,4979,0.101293558978732,0.101293558978732,-104.9814669,39.7183289,-104.9802827,39.7183173
-11305,4979,8126,0.0993695918525221,0.0993695918525221,-104.9802827,39.7183173,-104.9791209,39.7183159
-11306,8126,4335,0.0910331896522206,0.0910331896522206,-104.9791209,39.7183159,-104.9780566,39.7183225
-11307,4335,8210,0.0476841899874069,0.0476841899874069,-104.9780566,39.7183225,-104.9774991,39.7183251
-11308,8210,5040,0.0521232799197054,0.0521232799197054,-104.9774991,39.7183251,-104.9768897,39.7183279
-11309,5040,8005,0.0976580173278249,0.0976580173278249,-104.9768897,39.7183279,-104.9757482,39.7183081
-11310,8005,4307,0.0466427658725356,0.0466427658725356,-104.9757482,39.7183081,-104.975203,39.7182988
-11311,4307,995,0.052631404385892,0.052631404385892,-104.975203,39.7182988,-104.9745878,39.7182883
-11313,8211,5951,0.199050744316133,0.199050744316133,-104.9292411,39.7292602,-104.9292349,39.7310503
-11314,5951,5143,0.0913688712241713,0.0913688712241713,-104.9292349,39.7310503,-104.9292349,39.731872
-11315,5143,5155,0.025420878561629,0.025420878561629,-104.9292349,39.731872,-104.9292584,39.7320999
-11317,2238,4911,0.203010994943857,0.203010994943857,-104.9292252,39.7328524,-104.9291882,39.7346779
-11318,4911,6611,0.201886473833407,0.201886473833407,-104.9291882,39.7346779,-104.9291809,39.7364935
-11319,6611,8212,0.197101479655197,0.197101479655197,-104.9291809,39.7364935,-104.9292134,39.7382659
-11320,8212,8213,0.206955997470903,0.206955997470903,-104.9292134,39.7382659,-104.9292134,39.7401271
-11323,5950,5142,0.147533492116586,0.147533492116586,-104.9304356,39.7310602,-104.930434,39.732387
-11326,2237,4910,0.20422309503448,0.20422309503448,-104.9303867,39.7328502,-104.9303749,39.7346868
-11327,4910,6612,0.200274596012582,0.200274596012582,-104.9303749,39.7346868,-104.9303837,39.7364879
-11328,6612,8215,0.196974435405611,0.196974435405611,-104.9303837,39.7364879,-104.9303979,39.7382593
-11329,8215,8216,0.208072957327714,0.208072957327714,-104.9303979,39.7382593,-104.9303676,39.7401304
-11331,7959,8217,0.0106613346433968,0.0106613346433968,-104.9912259,39.7297319,-104.9911152,39.729776
-11337,289,8219,0.0101386145536838,0.0101386145536838,-105.0056941,39.7615954,-105.0056833,39.7616862
-11338,8219,4483,0.0263974796072716,0.0263974796072716,-105.0056833,39.7616862,-105.0055781,39.7619094
-11340,8220,289,0.116841869555958,0.116841869555958,-105.006312,39.7606581,-105.0056941,39.7615954
-11483,8221,8222,0.0466544327533727,0.0466544327533727,-104.9936301,39.74071,-104.9940163,39.7410064
-11342,8223,7906,0.0355112223964134,0.0355112223964134,-105.0064841,39.7620611,-105.0068985,39.7620384
-11343,7906,4187,0.0959478466054884,0.0959478466054884,-105.0068985,39.7620384,-105.008021,39.7620353
-11344,4187,8224,0.108554994700497,0.108554994700497,-105.008021,39.7620353,-105.009291,39.7620353
-11345,8224,2512,0.0267513344361619,0.0267513344361619,-105.009291,39.7620353,-105.0096039,39.7620403
-11346,2512,6726,0.134329958691173,0.134329958691173,-105.0096039,39.7620403,-105.0111753,39.7620239
-11347,6726,8226,0.0541066682112551,0.0541066682112551,-105.0111753,39.7620239,-105.0118083,39.7620229
-11348,8226,1754,0.0582360854290831,0.0582360854290831,-105.0118083,39.7620229,-105.0124896,39.7620198
-11352,8227,8228,0.0477813036978224,0.0477813036978224,-105.0138041,39.7620198,-105.0143631,39.7620198
-11353,8228,2164,0.0100092856224142,0.0100092856224142,-105.0143631,39.7620198,-105.0144802,39.7620198
-11354,2164,8229,0.117341992338054,0.117341992338054,-105.0144802,39.7620198,-105.015853,39.7620198
-11355,8229,6417,0.132790064578642,0.132790064578642,-105.015853,39.7620198,-105.0174065,39.7620125
-11356,6417,6925,0.066680142142332,0.066680142142332,-105.0174065,39.7620125,-105.0181866,39.7620126
-11357,6925,4623,0.0658013116163711,0.0658013116163711,-105.0181866,39.7620126,-105.0189564,39.7620167
-11358,4623,1242,0.132924383309181,0.132924383309181,-105.0189564,39.7620167,-105.0205115,39.7620158
-11359,1242,8230,0.117419950970456,0.117419950970456,-105.0205115,39.7620158,-105.0218852,39.7620114
-11360,8230,2709,0.0877593926636965,0.0877593926636965,-105.0218852,39.7620114,-105.0229119,39.7620081
-11361,2709,2723,0.0586886121966142,0.0586886121966142,-105.0229119,39.7620081,-105.0235985,39.7620059
-11362,2723,8231,0.126334352112189,0.126334352112189,-105.0235985,39.7620059,-105.0250765,39.7620038
-11363,8231,8232,0.00800071585537006,0.00800071585537006,-105.0250765,39.7620038,-105.0251701,39.7620042
-11364,8232,8233,0.00985605768408299,0.00985605768408299,-105.0251701,39.7620042,-105.0252854,39.7620032
-11368,8223,8219,0.0801446034429079,0.0801446034429079,-105.0064841,39.7620611,-105.0056833,39.7616862
-11374,8234,8235,0.161648892640997,0.161648892640997,-105.001293,39.7577963,-105.002653,39.7588064
-11375,8235,8236,0.12616333160407,0.12616333160407,-105.002653,39.7588064,-105.0034855,39.7597433
-11379,4843,910,0.143586236704503,0.143586236704503,-104.9986941,39.7558019,-104.9998754,39.7567199
-16194,9844,7725,1.4119245996206,1.4119245996206,-104.9822489,39.6767118,-104.9821706,39.6894094
-11388,2064,8243,0.0180732464676321,0.0180732464676321,-104.953025,39.7800093,-104.952864,39.7801147
-11389,8243,8244,0.307196973753055,0.307196973753055,-104.952864,39.7801147,-104.9498727,39.781647
-11392,8246,3316,0.0456634204130967,0.0456634204130967,-104.9607953,39.7804322,-104.960267,39.7804939
-11394,6201,6945,0.172713645832468,0.172713645832468,-104.9623939,39.7803745,-104.9624103,39.7819277
-11395,6945,8138,0.203649557134895,0.203649557134895,-104.9624103,39.7819277,-104.9623698,39.7837589
-11396,8138,2880,0.164233861501064,0.164233861501064,-104.9623698,39.7837589,-104.962414,39.7852355
-11398,6200,6944,0.169916988893137,0.169916988893137,-104.9634695,39.7803971,-104.9634685,39.7819252
-11399,6944,8139,0.203898136987997,0.203898136987997,-104.9634685,39.7819252,-104.9634685,39.7837589
-11400,8139,2879,0.160611633174386,0.160611633174386,-104.9634685,39.7837589,-104.9634771,39.7852033
-11401,2879,6408,0.0322091251783491,0.0322091251783491,-104.9634771,39.7852033,-104.9634692,39.7854929
-11402,6408,6412,0.266159968303504,0.266159968303504,-104.9634692,39.7854929,-104.963535,39.787886
-11403,6412,8247,0.0505479778201866,0.0505479778201866,-104.963535,39.787886,-104.963496,39.7883396
-11407,6190,6948,0.200111149085838,0.200111149085838,-104.9857782,39.7801773,-104.9858077,39.7819768
-11408,6948,8142,0.198760931377031,0.198760931377031,-104.9858077,39.7819768,-104.9858077,39.7837643
-11409,8142,2864,0.201908008890848,0.201908008890848,-104.9858077,39.7837643,-104.9858115,39.7855801
-11412,8249,8067,0.737441419701283,0.737441419701283,-105.0527654,39.7836619,-105.0441378,39.7835013
-11424,8079,8250,0.738983904805809,0.738983904805809,-105.0441387,39.7836373,-105.0527851,39.7837728
-11431,412,415,0.636538521199656,0.636538521199656,-105.0287256,39.7838921,-105.0212787,39.7837465
-18912,10390,10391,0.0580503615423655,0.0580503615423655,-105.0126243,39.749739,-105.0127316,39.7492235
-11453,8262,8263,0.292162593230546,0.292162593230546,-104.9882873,39.7806922,-104.9903301,39.7785853
-11468,781,8271,0.782578824666181,0.782578824666181,-104.9314271,39.7799974,-104.9225249,39.7783463
-11597,8330,8331,0.0435245851176098,0.0435245851176098,-105.0382057,39.7621211,-105.0387149,39.7621204
-11469,8272,8270,0.782084992370784,0.782084992370784,-104.9225195,39.7784772,-104.9314164,39.7801263
-11471,1610,1244,0.0543175525667992,0.0543175525667992,-104.9973103,39.7547013,-104.9968584,39.7543579
-11472,1244,8273,0.0533400242428221,0.0533400242428221,-104.9968584,39.7543579,-104.9964185,39.7540177
-11473,8273,8274,0.0526029519682926,0.0526029519682926,-104.9964185,39.7540177,-104.9959856,39.7536815
-11474,8274,8275,0.0534350213865012,0.0534350213865012,-104.9959856,39.7536815,-104.9955427,39.7533424
-11476,8276,1610,0.0663295545530221,0.0663295545530221,-104.9977757,39.7551786,-104.9973103,39.7547013
-11478,1610,8277,0.135789656985465,0.135789656985465,-104.9973103,39.7547013,-104.9961783,39.755558
-11480,7861,8278,0.0143942343868779,0.0143942343868779,-104.992927,39.7400066,-104.9929317,39.740136
-11481,8278,7581,0.0343415060903181,0.0343415060903181,-104.9929317,39.740136,-104.993184,39.7403763
-11482,7581,8221,0.0532138886249367,0.0532138886249367,-104.993184,39.7403763,-104.9936301,39.74071
-11484,8222,5964,0.00591714471910066,0.00591714471910066,-104.9940163,39.7410064,-104.9940638,39.7410451
-11485,5964,8279,0.00703516905841087,0.00703516905841087,-104.9940638,39.7410451,-104.9941219,39.7410899
-11486,8279,3001,0.0966235655424771,0.0966235655424771,-104.9941219,39.7410899,-104.99492,39.7417051
-11488,8275,7561,0.103690392766705,0.103690392766705,-104.9955427,39.7533424,-104.9946844,39.7526835
-11489,7561,8280,0.0558620890554655,0.0558620890554655,-104.9946844,39.7526835,-104.994215,39.752334
-11490,8280,6185,0.0505017539528047,0.0505017539528047,-104.994215,39.752334,-104.993798,39.7520123
-11493,8282,8283,0.101387037651418,0.101387037651418,-104.9928753,39.7513081,-104.9920377,39.7506626
-11494,8283,8284,0.102270654549379,0.102270654549379,-104.9920377,39.7506626,-104.9912016,39.7500048
-11495,8284,8285,0.10797805598011,0.10797805598011,-104.9912016,39.7500048,-104.9903025,39.7493228
-11496,8285,8286,0.106400672091098,0.106400672091098,-104.9903025,39.7493228,-104.9894331,39.7486381
-11497,8286,4392,0.102247824152268,0.102247824152268,-104.9894331,39.7486381,-104.9886052,39.7479745
-11498,4392,8287,0.0166274126542335,0.0166274126542335,-104.9886052,39.7479745,-104.9884675,39.7478689
-11499,8287,8288,0.0799445865529155,0.0799445865529155,-104.9884675,39.7478689,-104.9878071,39.7473599
-11500,8288,3008,0.023689428581565,0.023689428581565,-104.9878071,39.7473599,-104.9876315,39.7471951
-11501,3008,8289,0.0297886059757376,0.0297886059757376,-104.9876315,39.7471951,-104.9873968,39.7469971
-11505,8290,8291,0.051999610902965,0.051999610902965,-104.9908493,39.7516097,-104.9912817,39.7519386
-11506,8291,8292,0.0471972516257623,0.0471972516257623,-104.9912817,39.7519386,-104.9916742,39.7522371
-11507,8292,8293,0.00657484491051097,0.00657484491051097,-104.9916742,39.7522371,-104.9917306,39.7522773
-11508,8293,6184,0.103933630763566,0.103933630763566,-104.9917306,39.7522773,-104.9925969,39.7529331
-11509,6184,7562,0.106067817024884,0.106067817024884,-104.9925969,39.7529331,-104.9934281,39.7536413
-11510,7562,8294,0.105991654619724,0.105991654619724,-104.9934281,39.7536413,-104.9942907,39.754326
-11512,8295,8296,0.0523765388441753,0.0523765388441753,-104.9947185,39.754659,-104.9951571,39.7549879
-11522,8297,8298,0.429589849820924,0.429589849820924,-105.0048527,39.7552746,-105.0028555,39.7588198
-11537,6093,8302,0.0171793049902436,0.0171793049902436,-105.0268612,39.760858,-105.0266827,39.760929
-11539,8303,8304,0.00530856583912826,0.00530856583912826,-105.0265595,39.7609475,-105.026526,39.7609877
-11541,2195,8305,0.128463648918522,0.128463648918522,-105.0025939,39.7533024,-105.0036573,39.7541187
-11543,8306,8307,0.0111673306658244,0.0111673306658244,-105.0042327,39.7545718,-105.0043265,39.7546417
-11545,8308,8306,0.0470759818626725,0.0470759818626725,-105.0038599,39.7542602,-105.0042327,39.7545718
-11547,8309,8310,0.0336302381688336,0.0336302381688336,-105.0254224,39.7404725,-105.0251999,39.7407219
-11549,8311,8312,0.0219555493879181,0.0219555493879181,-105.0031123,39.7485003,-105.0033568,39.7484399
-11550,8312,8313,0.036241706253738,0.036241706253738,-105.0033568,39.7484399,-105.00375,39.7483181
-11598,8331,7782,0.0493369824555625,0.0493369824555625,-105.0387149,39.7621204,-105.0392921,39.7621196
-11551,8313,8314,0.0512913124797426,0.0512913124797426,-105.00375,39.7483181,-105.0042918,39.74812
-11552,8314,8315,0.107868186928524,0.107868186928524,-105.0042918,39.74812,-105.0053848,39.7476354
-11553,8315,8316,0.223470506469832,0.223470506469832,-105.0053848,39.7476354,-105.007603,39.7465723
-11554,8316,8317,0.211788929267968,0.211788929267968,-105.007603,39.7465723,-105.0094519,39.7453047
-11555,8317,6963,0.0143636308232266,0.0143636308232266,-105.0094519,39.7453047,-105.0095744,39.7452163
-16197,7207,1788,0.198027086450295,0.198027086450295,-104.9821537,39.693012,-104.9821522,39.6947929
-11556,6963,2151,0.0672032541987901,0.0672032541987901,-105.0095744,39.7452163,-105.0100859,39.7447574
-11557,2151,8318,0.127422890827039,0.127422890827039,-105.0100859,39.7447574,-105.0111676,39.7439691
-11563,8321,5670,0.0510922996821663,0.0510922996821663,-105.0304907,39.7580283,-105.0310884,39.7580274
-11564,5670,8319,0.0512128921942442,0.0512128921942442,-105.0310884,39.7580274,-105.0316875,39.7580245
-11565,8319,7031,0.0489988317743493,0.0489988317743493,-105.0316875,39.7580245,-105.0322607,39.7580218
-13192,2925,5307,0.0991225747078309,0.0991225747078309,-105.0215487,39.7075025,-105.0227074,39.7075091
-17794,8402,10178,0.0874671474005437,0.0874671474005437,-104.9873999,39.7564065,-104.9873945,39.7556199
-11583,8323,8324,0.0415122975666244,0.0415122975666244,-105.0248659,39.7403859,-105.0252084,39.7401213
-11585,8325,8326,0.0105737020216599,0.0105737020216599,-105.0288943,39.7621125,-105.029018,39.7621132
-11586,8326,8327,0.0170186899048993,0.0170186899048993,-105.029018,39.7621132,-105.0292171,39.7621142
-11587,8327,4030,0.059373245074661,0.059373245074661,-105.0292171,39.7621142,-105.0299117,39.7621179
-11588,4030,8328,0.00887102858910589,0.00887102858910589,-105.0299117,39.7621179,-105.0300154,39.7621147
-11589,8328,7033,0.192077028988682,0.192077028988682,-105.0300154,39.7621147,-105.0322624,39.7621339
-11590,7033,3414,0.20009224997208,0.20009224997208,-105.0322624,39.7621339,-105.0346033,39.7621393
-11591,3414,7634,0.0490496792565584,0.0490496792565584,-105.0346033,39.7621393,-105.0351771,39.7621341
-11592,7634,5699,0.0501609282125079,0.0501609282125079,-105.0351771,39.7621341,-105.0357639,39.7621288
-11593,5699,8329,0.0491062363102631,0.0491062363102631,-105.0357639,39.7621288,-105.0363384,39.7621278
-11594,8329,7426,0.0512345906571307,0.0512345906571307,-105.0363384,39.7621278,-105.0369378,39.7621268
-11595,7426,7167,0.100906650593457,0.100906650593457,-105.0369378,39.7621268,-105.0381183,39.7621212
-11596,7167,8330,0.0074706340310152,0.0074706340310152,-105.0381183,39.7621212,-105.0382057,39.7621211
-11601,1125,8333,0.0515421912286004,0.0515421912286004,-105.0404588,39.7621199,-105.0410618,39.76212
-11602,8333,7499,0.0491232128122514,0.0491232128122514,-105.0410618,39.76212,-105.0416365,39.7621201
-11603,7499,6382,0.0528674106807856,0.0528674106807856,-105.0416365,39.7621201,-105.042255,39.7621184
-11604,6382,3844,0.0491757077428548,0.0491757077428548,-105.042255,39.7621184,-105.0428303,39.7621153
-11605,3844,8336,0.0505763419832581,0.0505763419832581,-105.0428303,39.7621153,-105.043422,39.7621158
-11606,8336,5560,0.0511234189065501,0.0511234189065501,-105.043422,39.7621158,-105.0440201,39.7621151
-11607,5560,7536,0.078259792036463,0.078259792036463,-105.0440201,39.7621151,-105.0449356,39.7621062
-17795,10178,10179,0.00714983889336217,0.00714983889336217,-104.9873945,39.7556199,-104.9873946,39.7555556
-11608,7536,8337,0.710353127144862,0.710353127144862,-105.0449356,39.7621062,-105.0532461,39.7620897
-11615,8339,8340,0.0545607270452329,0.0545607270452329,-105.0252854,39.7572536,-105.0259235,39.7572649
-11616,8340,6778,0.0500886204125654,0.0500886204125654,-105.0259235,39.7572649,-105.0265093,39.7572752
-11617,6778,1543,0.044749974690185,0.044749974690185,-105.0265093,39.7572752,-105.0270328,39.7572752
-11618,1543,7913,0.0484257128218018,0.0484257128218018,-105.0270328,39.7572752,-105.0275993,39.7572752
-11619,7913,1232,0.0498960080732329,0.0498960080732329,-105.0275993,39.7572752,-105.028183,39.7572752
-11620,1232,6138,0.0513577550981739,0.0513577550981739,-105.028183,39.7572752,-105.0287838,39.7572752
-11621,6138,1234,0.0484184731965446,0.0484184731965446,-105.0287838,39.7572752,-105.0293502,39.757272
-11622,1234,4025,0.049897443897038,0.049897443897038,-105.0293502,39.757272,-105.0299339,39.7572686
-11624,8341,6746,0.131938356933677,0.131938356933677,-105.0252824,39.7524035,-105.0268257,39.752413
-11625,6746,6146,0.134278510793599,0.134278510793599,-105.0268257,39.752413,-105.0283964,39.7524064
-11626,6146,4020,0.131808341418281,0.131808341418281,-105.0283964,39.7524064,-105.029938,39.752386
-11627,4020,7024,0.13680573147125,0.13680573147125,-105.029938,39.752386,-105.0315379,39.752413
-11628,7024,7394,0.133543322276702,0.133543322276702,-105.0315379,39.752413,-105.0331,39.7524064
-11629,7394,3403,0.129241253411212,0.129241253411212,-105.0331,39.7524064,-105.0346118,39.7524067
-11631,4656,1278,0.11609492718799,0.11609492718799,-105.0191525,39.7524262,-105.0205102,39.7524035
-11633,4529,8342,0.13081541679387,0.13081541679387,-105.0220809,39.7524035,-105.0236111,39.7524085
-11634,8342,8343,0.131875462531589,0.131875462531589,-105.0236111,39.7524085,-105.0251537,39.7524035
-11636,1275,4561,0.135792686790169,0.135792686790169,-105.0204903,39.7500187,-105.0220781,39.7499857
-11637,4561,8344,0.129597362082905,0.129597362082905,-105.0220781,39.7499857,-105.0235939,39.7499999
-11638,8344,8345,0.132615292246902,0.132615292246902,-105.0235939,39.7499999,-105.0251451,39.7499949
-11654,8351,8352,0.00642310935412446,0.00642310935412446,-105.024297,39.7598572,-105.024257,39.7599061
-11656,8354,3585,0.00948998635035479,0.00948998635035479,-105.0236698,39.7606212,-105.0236106,39.7606934
-11658,8355,7036,0.189514043057238,0.189514043057238,-105.0300476,39.7643693,-105.0322644,39.7643359
-11661,3420,7662,0.0473953664812579,0.0473953664812579,-105.0346118,39.7639669,-105.0351663,39.7639675
-11662,7662,5701,0.051310070537927,0.051310070537927,-105.0351663,39.7639675,-105.0357666,39.7639681
-11663,5701,8356,0.0493288418218244,0.0493288418218244,-105.0357666,39.7639681,-105.0363437,39.7639643
-11664,8356,7428,0.0514646959507586,0.0514646959507586,-105.0363437,39.7639643,-105.0369458,39.7639617
-11665,7428,7170,0.101185693406291,0.101185693406291,-105.0369458,39.7639617,-105.0381296,39.7639566
-11666,7170,8357,0.0511732963069457,0.0511732963069457,-105.0381296,39.7639566,-105.0387283,39.763957
-11667,8357,7785,0.0488740378204359,0.0488740378204359,-105.0387283,39.763957,-105.0393001,39.7639573
-11669,8358,8359,0.0429199500385996,0.0429199500385996,-105.039401,39.7639563,-105.0399031,39.7639514
-11670,8359,1126,0.0542934514543922,0.0542934514543922,-105.0399031,39.7639514,-105.0405383,39.7639496
-11671,1126,8361,0.0465752610792189,0.0465752610792189,-105.0405383,39.7639496,-105.0410832,39.7639477
-11672,8361,7500,0.0458657856618734,0.0458657856618734,-105.0410832,39.7639477,-105.0416198,39.7639459
-11673,7500,6383,0.0540969092476656,0.0540969092476656,-105.0416198,39.7639459,-105.0422527,39.763944
-11674,6383,3845,0.0488658545954006,0.0488658545954006,-105.0422527,39.763944,-105.0428244,39.7639423
-11675,3845,8362,0.0512974137325796,0.0512974137325796,-105.0428244,39.7639423,-105.0434239,39.7639208
-11676,8362,5562,0.0492074321979192,0.0492074321979192,-105.0434239,39.7639208,-105.0439996,39.7639213
-11677,5562,8363,0.0405073414501016,0.0405073414501016,-105.0439996,39.7639213,-105.0444735,39.7639185
-11678,8363,7537,0.0387636388049137,0.0387636388049137,-105.0444735,39.7639185,-105.044927,39.7639158
-11679,7537,8364,0.709659016245144,0.709659016245144,-105.044927,39.7639158,-105.0532296,39.7639
-11680,533,532,0.177767664549368,0.177767664549368,-105.0123604,39.7549991,-105.010541,39.7542249
-11681,532,8365,0.019932032746647,0.019932032746647,-105.010541,39.7542249,-105.0103456,39.7541271
-11683,8366,2195,0.0764354088651933,0.0764354088651933,-105.0020448,39.7527599,-105.0025939,39.7533024
-11712,3383,8367,0.106809468593159,0.106809468593159,-105.0346003,39.7427332,-105.035848,39.7426857
-11713,8367,8368,0.0971987897456675,0.0971987897456675,-105.035848,39.7426857,-105.0369827,39.7427391
-11714,8368,8369,0.0991386674985246,0.0991386674985246,-105.0369827,39.7427391,-105.0381422,39.7427432
-11717,5295,6973,0.135215470337054,0.135215470337054,-105.0357845,39.7439376,-105.035775,39.7451536
-11718,6973,8371,0.00923487504976077,0.00923487504976077,-105.035775,39.7451536,-105.0357615,39.745236
-11719,8371,8372,0.0216052571390285,0.0216052571390285,-105.0357615,39.745236,-105.0357622,39.7454303
-11720,8372,16,0.105179593848414,0.105179593848414,-105.0357622,39.7454303,-105.0357652,39.7463762
-11721,16,6385,0.131720726068438,0.131720726068438,-105.0357652,39.7463762,-105.0357845,39.7475607
-11722,6385,8373,0.136425162652677,0.136425162652677,-105.0357845,39.7475607,-105.0357825,39.7487876
-11723,8373,8374,0.133357418298716,0.133357418298716,-105.0357825,39.7487876,-105.0357895,39.7499869
-11725,8375,5538,0.102551146645578,0.102551146645578,-105.0357821,39.7511876,-105.0357963,39.7521098
-11726,5538,2406,0.101276420369131,0.101276420369131,-105.0357963,39.7521098,-105.0357948,39.7530206
-11727,2406,4291,0.0994536245434588,0.0994536245434588,-105.0357948,39.7530206,-105.0357997,39.753915
-11728,4291,8376,0.0498495835403536,0.0498495835403536,-105.0357997,39.753915,-105.0358032,39.7543633
-11729,8376,8377,0.0555205772000376,0.0555205772000376,-105.0358032,39.7543633,-105.035807,39.7548626
-11730,8377,7717,0.202770146499174,0.202770146499174,-105.035807,39.7548626,-105.035838,39.756686
-11731,7717,2980,0.203558742671124,0.203558742671124,-105.035838,39.756686,-105.0358208,39.7585166
-11733,6381,7626,0.0677965571067337,0.0677965571067337,-105.0334738,39.7475695,-105.0334588,39.7481791
-11734,7626,8378,0.0657902652889389,0.0657902652889389,-105.0334588,39.7481791,-105.0334703,39.7487707
-11736,3813,8379,0.0683672879873519,0.0683672879873519,-105.0403593,39.7474155,-105.0410701,39.7476972
-11737,8379,7491,0.0530440410997852,0.0530440410997852,-105.0410701,39.7476972,-105.0416725,39.7478114
-11738,7491,3832,0.0868122883126915,0.0868122883126915,-105.0416725,39.7478114,-105.042608,39.748115
-11740,8129,8380,0.134532326319759,0.134532326319759,-104.9721336,39.7482271,-104.9721157,39.7494369
-11741,8380,8382,0.00458704251135175,0.00458704251135175,-104.9721157,39.7494369,-104.972113,39.7494781
-11743,8383,8384,0.136207849444979,0.136207849444979,-104.9721125,39.7495132,-104.9721264,39.7507381
-11744,8384,7838,0.138328826392976,0.138328826392976,-104.9721264,39.7507381,-104.9720959,39.7519819
-11746,8385,8386,0.0871147692827014,0.0871147692827014,-105.0124198,39.7414644,-105.0115357,39.7418538
-11749,8389,8390,0.0947169874364547,0.0947169874364547,-105.0124419,39.7396939,-105.0116345,39.7402771
-19614,10514,10587,0.0689139357560502,0.0689139357560502,-104.9902714,39.7087938,-104.9910769,39.7088041
-11751,8391,4386,0.0534420102551264,0.0534420102551264,-104.982081,39.7523183,-104.9825253,39.7526564
-11752,4386,8392,0.0520924012173649,0.0520924012173649,-104.9825253,39.7526564,-104.9829471,39.7529945
-11753,8392,8393,0.0473152332925311,0.0473152332925311,-104.9829471,39.7529945,-104.9833461,39.7532894
-11754,8393,8394,0.00593400942031918,0.00593400942031918,-104.9833461,39.7532894,-104.9833985,39.7533244
-11755,8394,8395,0.0526072167549377,0.0526072167549377,-104.9833985,39.7533244,-104.9838316,39.7536605
-11756,8395,8396,0.0535245842073366,0.0535245842073366,-104.9838316,39.7536605,-104.9842635,39.754009
-11757,8396,8397,0.0520127953812383,0.0520127953812383,-104.9842635,39.754009,-104.98469,39.7543426
-11758,8397,8398,0.0525440381176666,0.0525440381176666,-104.98469,39.7543426,-104.9851174,39.7546822
-11759,8398,8399,0.105725944401461,0.105725944401461,-104.9851174,39.7546822,-104.9860118,39.7553389
-11760,8399,8400,0.0963534079842441,0.0963534079842441,-104.9860118,39.7553389,-104.9868117,39.7559494
-11761,8400,8401,0.00721402202643277,0.00721402202643277,-104.9868117,39.7559494,-104.9868716,39.7559951
-11762,8401,8402,0.0642819932248178,0.0642819932248178,-104.9868716,39.7559951,-104.9873999,39.7564065
-11763,8402,6180,0.0440229088580127,0.0440229088580127,-104.9873999,39.7564065,-104.9877579,39.7566911
-11764,6180,3304,0.105719811244021,0.105719811244021,-104.9877579,39.7566911,-104.9886307,39.7573647
-11765,3304,8404,0.104473728049028,0.104473728049028,-104.9886307,39.7573647,-104.9894933,39.7580303
-11776,2683,5360,0.148134497863423,0.148134497863423,-104.9790985,39.751919,-104.9803323,39.7509836
-11779,8408,8409,0.0170504242210171,0.0170504242210171,-105.0080042,39.7473225,-105.0082031,39.7473337
-11780,8409,8410,0.0301331300599118,0.0301331300599118,-105.0082031,39.7473337,-105.0080216,39.7471014
-11781,8410,8408,0.024630163522097,0.024630163522097,-105.0080216,39.7471014,-105.0080042,39.7473225
-11786,8411,7068,0.119279864672347,0.119279864672347,-104.9738611,39.7586965,-104.9748473,39.7579376
-11787,7068,5513,0.148575970390717,0.148575970390717,-104.9748473,39.7579376,-104.97606,39.7569804
-11788,5513,4445,0.14563348668729,0.14563348668729,-104.97606,39.7569804,-104.9772635,39.7560534
-11795,8413,543,0.028789081158834,0.028789081158834,-105.0218658,39.7405653,-105.0222025,39.7405643
-11800,8038,2689,0.14574049201504,0.14574049201504,-104.9805458,39.7548634,-104.9817462,39.7539327
-11801,2689,8392,0.146364813323007,0.146364813323007,-104.9817462,39.7539327,-104.9829471,39.7529945
-11810,8316,8410,0.0688632882143238,0.0688632882143238,-105.007603,39.7465723,-105.0080216,39.7471014
-11818,8318,8421,0.163109524565458,0.163109524565458,-105.0111676,39.7439691,-105.0127281,39.7431253
-11820,2202,8422,0.0636527332062032,0.0636527332062032,-105.0128922,39.7400809,-105.0135792,39.7398604
-11827,8425,8426,0.235001983383898,0.235001983383898,-104.9895725,39.7854572,-104.9895595,39.7833438
-11829,8427,2187,0.0976945121262096,0.0976945121262096,-105.0148298,39.7369044,-105.0159723,39.7369102
-11830,2187,8428,0.113051166751879,0.113051166751879,-105.0159723,39.7369102,-105.0172942,39.7368917
-11832,8429,8427,0.106790392513668,0.106790392513668,-105.0135809,39.7369043,-105.0148298,39.7369044
-11836,8432,8433,0.316135432263608,0.316135432263608,-105.0153422,39.7339918,-105.0141326,39.7366784
-11838,8434,8435,0.0739062863270344,0.0739062863270344,-105.0143556,39.741604,-105.0147581,39.7421922
-16014,9785,9166,0.0737839272607517,0.0737839272607517,-104.9929555,39.6960192,-104.9928292,39.6966756
-11840,8436,8437,0.305296163280187,0.305296163280187,-105.014551,39.7415365,-105.0140684,39.7388161
-11842,8438,8439,0.0899401823641934,0.0899401823641934,-105.0171026,39.7442035,-105.0164414,39.7435744
-11843,8439,8440,0.0855827793815302,0.0855827793815302,-105.0164414,39.7435744,-105.0158022,39.7429821
-11845,8441,533,0.0890672230330435,0.0890672230330435,-105.0132989,39.755347,-105.0123604,39.7549991
-11847,8325,3752,0.00830034500152871,0.00830034500152871,-105.0288943,39.7621125,-105.0288682,39.7620406
-11848,3752,8442,0.100105658665385,0.100105658665385,-105.0288682,39.7620406,-105.0279677,39.761465
-11849,8442,6773,0.103872958239997,0.103872958239997,-105.0279677,39.761465,-105.0268646,39.7610731
-11850,6773,8303,0.0295834023794743,0.0295834023794743,-105.0268646,39.7610731,-105.0265595,39.7609475
-11851,8303,8443,0.122024126507826,0.122024126507826,-105.0265595,39.7609475,-105.0254023,39.7603049
-11854,8365,8445,0.12649848699983,0.12649848699983,-105.0103456,39.7541271,-105.0090988,39.7535144
-11856,8445,8446,0.0774789975708123,0.0774789975708123,-105.0090988,39.7535144,-105.0083779,39.7530921
-11858,6522,8447,0.124835406842481,0.124835406842481,-104.982762,39.6978313,-104.9827785,39.6967087
-11860,8447,4244,0.0110439553261759,0.0110439553261759,-104.9827785,39.6967087,-104.9827699,39.6966096
-11861,4244,1787,0.20168643392703,0.20168643392703,-104.9827699,39.6966096,-104.9827622,39.6947958
-11862,1787,7206,0.198352393557477,0.198352393557477,-104.9827622,39.6947958,-104.9827747,39.693012
-11863,7206,5819,0.204146640542909,0.204146640542909,-104.9827747,39.693012,-104.9827894,39.6911761
-11864,5819,7724,0.196992932786583,0.196992932786583,-104.9827894,39.6911761,-104.9827896,39.6894045
-11865,7724,8448,0.0469826616672844,0.0469826616672844,-104.9827896,39.6894045,-104.9827836,39.688982
-11866,8448,8449,1.1597652413984,1.1597652413984,-104.9827836,39.688982,-104.9829313,39.6785526
-15932,1178,9158,0.281206093212011,0.281206093212011,-104.9967808,39.7006121,-104.9960034,39.7030693
-11868,529,476,0.196533269115043,0.196533269115043,-105.0102365,39.7542807,-105.0121896,39.7552131
-11869,476,8451,0.00692492598385206,0.00692492598385206,-105.0121896,39.7552131,-105.0122583,39.7552461
-11871,8452,8450,0.118857471050118,0.118857471050118,-105.009013,39.7536728,-105.0101803,39.7542535
-11873,8446,8453,0.0472361723035857,0.0472361723035857,-105.0083779,39.7530921,-105.0079745,39.7528018
-11875,8453,1808,0.0616092600190724,0.0616092600190724,-105.0079745,39.7528018,-105.0075333,39.7523637
-11876,1808,8454,0.103675532542851,0.103675532542851,-105.0075333,39.7523637,-105.0069016,39.7515678
-11878,8455,8452,0.0832501988122618,0.0832501988122618,-105.0082148,39.7532439,-105.009013,39.7536728
-11880,8456,8455,0.0488208935536257,0.0488208935536257,-105.0077942,39.7529469,-105.0082148,39.7532439
-11883,1807,8456,0.0645719953824934,0.0645719953824934,-105.0073479,39.7524784,-105.0077942,39.7529469
-11885,8454,8460,0.0468848260297017,0.0468848260297017,-105.0069016,39.7515678,-105.0065497,39.7512444
-11887,8460,8461,0.191542303309411,0.191542303309411,-105.0065497,39.7512444,-105.0049189,39.7500632
-11888,8461,8462,0.143814933384229,0.143814933384229,-105.0049189,39.7500632,-105.003842,39.7490696
-11926,8479,7578,0.0514183930388008,0.0514183930388008,-104.9903554,39.7419081,-104.9907772,39.7422377
-11889,8462,8312,0.0813843178601785,0.0813843178601785,-105.003842,39.7490696,-105.0033568,39.7484399
-11890,8312,8463,0.108687135880293,0.108687135880293,-105.0033568,39.7484399,-105.0026615,39.7476216
-11891,8463,8464,0.171307568098715,0.171307568098715,-105.0026615,39.7476216,-105.0014282,39.7464074
-11892,8464,7962,0.138415151415673,0.138415151415673,-105.0014282,39.7464074,-105.0007006,39.7452954
-11894,8465,8457,0.0468050869550622,0.0468050869550622,-105.0063608,39.7513896,-105.0067213,39.7517064
-11899,8468,3170,0.018103312819976,0.018103312819976,-105.0008907,39.7479512,-105.0006969,39.7480168
-11901,8469,8466,0.0123424922846296,0.0123424922846296,-105.0019357,39.7486848,-105.0020778,39.7486652
-11902,8466,8311,0.0903233113904637,0.0903233113904637,-105.0020778,39.7486652,-105.0031123,39.7485003
-11904,8470,8469,0.0396717564170432,0.0396717564170432,-105.0014824,39.7487611,-105.0019357,39.7486848
-11906,8296,8273,0.152532135373756,0.152532135373756,-104.9951571,39.7549879,-104.9964185,39.7540177
-11907,8273,5789,0.146346014371488,0.146346014371488,-104.9964185,39.7540177,-104.9976271,39.7530856
-11908,5789,4816,0.144635236179438,0.144635236179438,-104.9976271,39.7530856,-104.9988196,39.7521629
-11909,4816,8471,0.144945711618013,0.144945711618013,-104.9988196,39.7521629,-105.0000116,39.7512359
-11910,8471,8472,0.00337499193971306,0.00337499193971306,-105.0000116,39.7512359,-105.0000361,39.7512121
-13477,9099,9096,0.0859011649600223,0.0859011649600223,-105.0181659,39.7251883,-105.0171656,39.7251183
-11912,8473,8474,0.141151348464777,0.141151348464777,-105.0000669,39.7511877,-105.0012293,39.7502862
-11913,8474,8475,0.13279343346844,0.13279343346844,-105.0012293,39.7502862,-105.0022888,39.7494129
-11915,1346,8475,0.0349627710606267,0.0349627710606267,-105.0024538,39.7491252,-105.0022888,39.7494129
-11919,8313,8477,0.0691895872331652,0.0691895872331652,-105.00375,39.7483181,-105.003633,39.7477024
-11921,4846,8478,0.326789742990523,0.326789742990523,-105.0038505,39.7522849,-105.0065368,39.7543758
-11923,5031,6987,0.0623597305249406,0.0623597305249406,-104.9884893,39.7405273,-104.9890246,39.7409082
-11924,6987,5806,0.105799056021075,0.105799056021075,-104.9890246,39.7409082,-104.989913,39.7415705
-11925,5806,8479,0.0532916983351864,0.0532916983351864,-104.989913,39.7415705,-104.9903554,39.7419081
-11927,7578,8480,0.0539921866859616,0.0539921866859616,-104.9907772,39.7422377,-104.9912213,39.7425829
-11928,8480,8481,0.0438686505947476,0.0438686505947476,-104.9912213,39.7425829,-104.9915821,39.7428634
-11929,8481,5961,0.00656699811047763,0.00656699811047763,-104.9915821,39.7428634,-104.9916357,39.7429057
-11930,5961,8482,0.00665108194893408,0.00665108194893408,-104.9916357,39.7429057,-104.9916907,39.742948
-11931,8482,3003,0.0997303043018087,0.0997303043018087,-104.9916907,39.742948,-104.9925155,39.7435822
-11932,3003,4396,0.10605079021574,0.10605079021574,-104.9925155,39.7435822,-104.993398,39.7442524
-11933,4396,8483,0.102726296828384,0.102726296828384,-104.993398,39.7442524,-104.9942509,39.7449031
-11934,8483,8484,0.00648258609012086,0.00648258609012086,-104.9942509,39.7449031,-104.9943021,39.7449461
-11935,8484,8485,0.100141708737386,0.100141708737386,-104.9943021,39.7449461,-104.995128,39.7455847
-11936,8485,8486,0.0275311475026058,0.0275311475026058,-104.995128,39.7455847,-104.9953533,39.7457616
-11937,8486,8487,0.0265062604992808,0.0265062604992808,-104.9953533,39.7457616,-104.9955701,39.745932
-11938,8487,8488,0.0523458198440316,0.0523458198440316,-104.9955701,39.745932,-104.9959984,39.7462684
-11939,8488,8489,0.104751027795859,0.104751027795859,-104.9959984,39.7462684,-104.9968701,39.7469304
-11940,8489,8490,0.0990693987095691,0.0990693987095691,-104.9968701,39.7469304,-104.9976922,39.7475583
-11941,8490,8491,0.00745857832944624,0.00745857832944624,-104.9976922,39.7475583,-104.9977552,39.7476047
-11942,8491,8492,0.0518088588950486,0.0518088588950486,-104.9977552,39.7476047,-104.998183,39.7479347
-11943,8492,6189,0.054888246037165,0.054888246037165,-104.998183,39.7479347,-104.9986323,39.7482873
-11945,6632,7733,0.112596009055585,0.112596009055585,-104.9757688,39.6903887,-104.9757679,39.6893761
-12071,8507,3552,0.071078699522552,0.071078699522552,-104.9777748,39.7546175,-104.9769434,39.7546258
-11946,7733,8495,2.00712592676004,2.00712592676004,-104.9757679,39.6893761,-104.9758002,39.6713256
-11954,6568,4449,0.147875161573861,0.147875161573861,-104.9802246,39.7564641,-104.9789969,39.757401
-11955,4449,5497,0.144351276811523,0.144351276811523,-104.9789969,39.757401,-104.9777977,39.758315
-11956,5497,7071,0.14871904829256,0.14871904829256,-104.9777977,39.758315,-104.9765951,39.7592815
-11958,8501,8502,0.146058647776188,0.146058647776188,-104.9871043,39.7524564,-104.985916,39.7534002
-11959,8502,8397,0.148207146508282,0.148207146508282,-104.985916,39.7534002,-104.98469,39.7543426
-11960,8397,2694,0.144837053832231,0.144837053832231,-104.98469,39.7543426,-104.9834919,39.7552636
-11966,4737,8503,0.0843423130679838,0.0843423130679838,-104.9696615,39.7607527,-104.9696782,39.7615111
-11967,8399,5455,0.141833750205801,0.141833750205801,-104.9860118,39.7553389,-104.984841,39.7562427
-11968,5455,2697,0.00495891013188563,0.00495891013188563,-104.984841,39.7562427,-104.9847927,39.7562674
-11969,2697,8045,0.148003641728593,0.148003641728593,-104.9847927,39.7562674,-104.9835828,39.7572195
-11970,8045,6573,0.144311748140391,0.144311748140391,-104.9835828,39.7572195,-104.9824151,39.7581568
-11971,6573,4454,0.147824934616054,0.147824934616054,-104.9824151,39.7581568,-104.981171,39.7590802
-11972,4454,5502,0.144725467857806,0.144725467857806,-104.981171,39.7590802,-104.9799824,39.7600071
-11973,5502,7076,0.14772137009526,0.14772137009526,-104.9799824,39.7600071,-104.9787733,39.7609563
-11974,7076,2033,0.146029155751578,0.146029155751578,-104.9787733,39.7609563,-104.9775611,39.7618817
-11975,2033,5322,0.146208700799923,0.146208700799923,-104.9775611,39.7618817,-104.9763558,39.7628147
-11976,5322,631,0.145784380568713,0.145784380568713,-104.9763558,39.7628147,-104.9751714,39.7637581
-11977,631,6404,0.147332884437086,0.147332884437086,-104.9751714,39.7637581,-104.973944,39.7646884
-11978,6404,2910,0.0722929712454625,0.0722929712454625,-104.973944,39.7646884,-104.9733493,39.7651507
-11980,8504,8505,0.0580359403583064,0.0580359403583064,-104.9856564,39.7569396,-104.9861441,39.7573027
-11981,8505,6178,0.0499592014591395,0.0499592014591395,-104.9861441,39.7573027,-104.9865554,39.7576219
-11982,6178,8506,0.0514685264155668,0.0514685264155668,-104.9865554,39.7576219,-104.986978,39.7579516
-11983,8506,8508,0.0359450086839816,0.0359450086839816,-104.986978,39.7579516,-104.9873985,39.757951
-11985,8509,8491,0.145477011516465,0.145477011516465,-104.9989592,39.7466802,-104.9977552,39.7476047
-11986,8491,6711,0.147675146026861,0.147675146026861,-104.9977552,39.7476047,-104.9965276,39.748539
-11987,6711,8510,0.0119577509852376,0.0119577509852376,-104.9965276,39.748539,-104.9964255,39.7486125
-11999,7079,2035,0.146591134901683,0.146591134901683,-104.9800778,39.7619593,-104.978878,39.7629013
-12000,2035,8511,0.144080341921709,0.144080341921709,-104.978878,39.7629013,-104.9776691,39.7638043
-12001,8506,6577,0.292638121021149,0.292638121021149,-104.986978,39.7579516,-104.9845851,39.7598337
-12013,8514,7905,0.14392744613234,0.14392744613234,-105.0068857,39.7602149,-105.0080885,39.7611207
-12014,7905,8224,0.144594704272466,0.144594704272466,-105.0080885,39.7611207,-105.009291,39.7620353
-12015,8224,2513,0.0408485952047996,0.0408485952047996,-105.009291,39.7620353,-105.0096031,39.7623135
-12017,8223,4514,0.129566346086565,0.129566346086565,-105.0064841,39.7620611,-105.0064389,39.7632258
-12018,4514,5236,0.132336483238921,0.132336483238921,-105.0064389,39.7632258,-105.00645,39.7644159
-12019,5236,6888,0.137583446360535,0.137583446360535,-105.00645,39.7644159,-105.0064586,39.7656532
-12020,6888,8515,0.134749292102011,0.134749292102011,-105.0064586,39.7656532,-105.0064696,39.766865
-18562,2839,2837,0.0398814314105002,0.0398814314105002,-105.0301265,39.7802941,-105.0296598,39.7802952
-12021,8515,1670,0.131131933535458,0.131131933535458,-105.0064696,39.766865,-105.0064415,39.7680441
-12022,1670,8516,0.137025514768393,0.137025514768393,-105.0064415,39.7680441,-105.006441,39.7692764
-12023,8516,2451,0.140387467109701,0.140387467109701,-105.006441,39.7692764,-105.0064532,39.7705389
-12024,2451,3220,0.132796169496021,0.132796169496021,-105.0064532,39.7705389,-105.0064274,39.771733
-12025,3220,3241,0.0110949892633217,0.0110949892633217,-105.0064274,39.771733,-105.0064102,39.7718319
-12026,3241,5742,0.122723226676881,0.122723226676881,-105.0064102,39.7718319,-105.0064961,39.7729336
-12027,5742,5734,0.0121046279679281,0.0121046279679281,-105.0064961,39.7729336,-105.0064617,39.7730392
-12028,5734,5519,0.122276751203955,0.122276751203955,-105.0064617,39.7730392,-105.0064768,39.7741388
-12029,5519,5518,0.0183360434030607,0.0183360434030607,-105.0064768,39.7741388,-105.0064768,39.7743037
-12030,5518,6453,0.115919443239594,0.115919443239594,-105.0064768,39.7743037,-105.006451,39.775346
-12031,6453,8519,0.0186206290164017,0.0186206290164017,-105.006451,39.775346,-105.0064452,39.7755134
-12032,8519,6921,0.113511395757215,0.113511395757215,-105.0064452,39.7755134,-105.0064346,39.7765342
-12033,6921,6966,0.278590640144845,0.278590640144845,-105.0064346,39.7765342,-105.0064198,39.7790396
-12034,6966,2480,0.0421290693071181,0.0421290693071181,-105.0064198,39.7790396,-105.0064445,39.779418
-12035,2480,2819,0.0832464241503531,0.0832464241503531,-105.0064445,39.779418,-105.0064329,39.7801666
-12036,2819,1420,0.203808019181798,0.203808019181798,-105.0064329,39.7801666,-105.0063986,39.7819993
-12037,1420,1350,0.0610460440330561,0.0610460440330561,-105.0063986,39.7819993,-105.0063979,39.7825483
-12038,1350,386,0.0313326355302306,0.0313326355302306,-105.0063979,39.7825483,-105.0063891,39.78283
-12039,386,8520,0.00828931624769023,0.00828931624769023,-105.0063891,39.78283,-105.006397,39.7829043
-12041,8521,8522,0.0528158272532374,0.0528158272532374,-105.0043742,39.7505911,-105.0048268,39.7502678
-12042,8522,8461,0.0240744692191342,0.0240744692191342,-105.0048268,39.7502678,-105.0049189,39.7500632
-12045,8524,8525,0.099226587437181,0.099226587437181,-105.0053655,39.751233,-105.0047107,39.7504962
-12056,6652,7968,0.116416731661103,0.116416731661103,-104.9999567,39.7402253,-104.9994613,39.7412005
-13645,9155,9152,0.125537210877253,0.125537210877253,-104.9962707,39.706856,-104.9968785,39.7078836
-12069,3016,8123,0.0144820950034519,0.0144820950034519,-104.9783073,39.7546124,-104.9781379,39.7546138
-12070,8123,8507,0.0310425416681892,0.0310425416681892,-104.9781379,39.7546138,-104.9777748,39.7546175
-12072,3552,4443,0.0963694960086714,0.0963694960086714,-104.9769434,39.7546258,-104.9763376,39.7553567
-12074,8536,8537,0.125429093404429,0.125429093404429,-104.987378,39.7529333,-104.9863465,39.7537355
-12075,8537,8398,0.148732331324902,0.148732331324902,-104.9863465,39.7537355,-104.9851174,39.7546822
-12076,8398,2695,0.143717697009194,0.143717697009194,-104.9851174,39.7546822,-104.9839243,39.7555928
-12078,8043,6571,0.143486226041694,0.143486226041694,-104.9827245,39.7565663,-104.981529,39.7574721
-15271,8458,8538,0.130887342573391,0.130887342573391,-104.9284834,39.705337,-104.9283761,39.7065112
-12079,6571,4452,0.149648787475973,0.149648787475973,-104.981529,39.7574721,-104.9802783,39.7584138
-12080,4452,5500,0.142780903948531,0.142780903948531,-104.9802783,39.7584138,-104.9791156,39.7593357
-12081,5500,7074,0.148102852377504,0.148102852377504,-104.9791156,39.7593357,-104.9778937,39.76028
-12082,7074,2032,0.145681586591459,0.145681586591459,-104.9778937,39.76028,-104.9767057,39.7612194
-12086,2886,7993,0.218441304114497,0.218441304114497,-104.9722001,39.7469535,-104.9747549,39.746928
-12088,8130,8541,0.134523622254369,0.134523622254369,-104.9708826,39.7482126,-104.9708826,39.7494224
-12089,8541,8542,0.00481474032387871,0.00481474032387871,-104.9708826,39.7494224,-104.9708826,39.7494657
-12090,8542,8543,0.00504824966940074,0.00504824966940074,-104.9708826,39.7494657,-104.9708826,39.7495111
-12091,8543,8544,0.135980275793844,0.135980275793844,-104.9708826,39.7495111,-104.9708826,39.750734
-12092,8544,7839,0.139416199289129,0.139416199289129,-104.9708826,39.750734,-104.9708825,39.7519878
-12093,7839,819,0.136947671655105,0.136947671655105,-104.9708825,39.7519878,-104.9708825,39.7532194
-12094,819,3560,0.140872852825874,0.140872852825874,-104.9708825,39.7532194,-104.9708824,39.7544863
-12095,3560,5634,0.139405079534224,0.139405079534224,-104.9708824,39.7544863,-104.9708824,39.75574
-12096,5634,4338,0.141217557097108,0.141217557097108,-104.9708824,39.75574,-104.9708823,39.75701
-12097,4338,6337,0.135602213042785,0.135602213042785,-104.9708823,39.75701,-104.9708823,39.7582295
-12098,6337,3053,0.134723773393479,0.134723773393479,-104.9708823,39.7582295,-104.9708822,39.7594411
-12100,3691,8545,0.139072808044494,0.139072808044494,-104.970874,39.7469218,-104.9696681,39.7460824
-12101,5485,8546,0.200596752868582,0.200596752868582,-104.9541539,39.7383732,-104.9541798,39.7401771
-12103,4888,8547,0.185876236918155,0.185876236918155,-104.9539764,39.7351225,-104.9539498,39.736794
-12104,8547,5486,0.175599681021845,0.175599681021845,-104.9539498,39.736794,-104.9539554,39.7383732
-12106,4889,8548,0.187588829795577,0.187588829795577,-104.9528338,39.7351142,-104.952774,39.7368006
-12107,8548,5487,0.174192187356096,0.174192187356096,-104.952774,39.7368006,-104.952802,39.738367
-12109,8549,8550,0.0264199145705686,0.0264199145705686,-104.9647731,39.7365894,-104.9647731,39.736827
-12110,8550,5477,0.172910339815493,0.172910339815493,-104.9647731,39.736827,-104.964716,39.7383814
-12111,5477,8551,0.17777655236626,0.17777655236626,-104.964716,39.7383814,-104.9647671,39.7399797
-12112,8551,8552,0.179401923989104,0.179401923989104,-104.9647671,39.7399797,-104.9647683,39.7415931
-12114,672,8553,0.00419226671708486,0.00419226671708486,-104.9647688,39.7416171,-104.9647683,39.7416548
-12116,8554,4600,0.174009465824247,0.174009465824247,-104.9647611,39.7432314,-104.9647661,39.7447963
-12117,4600,6497,0.141315269300352,0.141315269300352,-104.9647661,39.7447963,-104.9647477,39.7460671
-12118,6497,3685,0.0979207012351752,0.0979207012351752,-104.9647477,39.7460671,-104.9647396,39.7469477
-12119,3685,8132,0.140340825489325,0.140340825489325,-104.9647396,39.7469477,-104.9647477,39.7482098
-12120,8132,8555,0.134412189177842,0.134412189177842,-104.9647477,39.7482098,-104.9647128,39.7494183
-12121,8555,8556,0.00412533177852682,0.00412533177852682,-104.9647128,39.7494183,-104.9647128,39.7494554
-12122,8556,8557,0.00459814794721775,0.00459814794721775,-104.9647128,39.7494554,-104.9647155,39.7494967
-12123,8557,8558,0.132902025218854,0.132902025218854,-104.9647155,39.7494967,-104.9647073,39.7506919
-12124,8558,7841,0.138710880861165,0.138710880861165,-104.9647073,39.7506919,-104.9647228,39.7519393
-12125,7841,825,0.140880437202465,0.140880437202465,-104.9647228,39.7519393,-104.9647057,39.7532062
-12126,825,3566,0.136859579672601,0.136859579672601,-104.9647057,39.7532062,-104.9647415,39.7544367
-12127,3566,5637,0.14457832436944,0.14457832436944,-104.9647415,39.7544367,-104.9647101,39.7557367
-12128,5637,4341,0.139173250387063,0.139173250387063,-104.9647101,39.7557367,-104.9647021,39.7569883
-12129,4341,6340,0.137021300435373,0.137021300435373,-104.9647021,39.7569883,-104.964686,39.7582205
-12130,6340,8560,0.107881318168938,0.107881318168938,-104.964686,39.7582205,-104.9646861,39.7591907
-12131,2245,4879,0.176153654685445,0.176153654685445,-104.9644966,39.7334712,-104.9646143,39.7350528
-12132,4879,7358,0.24873496630677,0.24873496630677,-104.9646143,39.7350528,-104.9672193,39.7360482
-12133,7358,6786,0.0656034947664249,0.0656034947664249,-104.9672193,39.7360482,-104.9677841,39.7356489
-12134,6786,4878,0.0544981388589161,0.0544981388589161,-104.9677841,39.7356489,-104.9679617,39.7351782
-12135,4878,5942,0.524256212186461,0.524256212186461,-104.9679617,39.7351782,-104.96779,39.7304653
-12136,5942,8561,0.0631406553785623,0.0631406553785623,-104.96779,39.7304653,-104.9673609,39.7300032
-12137,8561,3127,0.0936118840285326,0.0936118840285326,-104.9673609,39.7300032,-104.9663652,39.7296534
-12138,3127,3131,0.0777309112767711,0.0777309112767711,-104.9663652,39.7296534,-104.9654579,39.7296956
-12139,3131,5914,0.112365280295693,0.112365280295693,-104.9654579,39.7296956,-104.9646486,39.7304917
-12140,5914,2245,0.331560162235425,0.331560162235425,-104.9646486,39.7304917,-104.9644966,39.7334712
-12142,8562,2334,2.72525423343991,2.72525423343991,-104.8920171,39.7258127,-104.9238826,39.7256356
-12144,7677,5980,0.0954252288299854,0.0954252288299854,-104.924985,39.7256294,-104.9261008,39.7256273
-12145,5980,2129,0.0933556137052187,0.0933556137052187,-104.9261008,39.7256273,-104.9271924,39.7256294
-12146,2129,7520,0.0952025856529876,0.0952025856529876,-104.9271924,39.7256294,-104.9283056,39.7256294
-12147,7520,8563,0.0935887718802941,0.0935887718802941,-104.9283056,39.7256294,-104.9293999,39.7256232
-12148,8563,2270,0.0947410402071955,0.0947410402071955,-104.9293999,39.7256232,-104.9305077,39.7256212
-12149,2270,7011,0.0942715716828769,0.0942715716828769,-104.9305077,39.7256212,-104.93161,39.725617
-12150,7011,2766,0.0940480616870089,0.0940480616870089,-104.93161,39.725617,-104.9327097,39.725617
-12151,2766,3353,0.0940568781185638,0.0940568781185638,-104.9327097,39.725617,-104.9338095,39.725615
-12152,3353,2010,0.0938087738322925,0.0938087738322925,-104.9338095,39.725615,-104.9349064,39.7256134
-12153,2010,2020,0.00116816859457691,0.00116816859457691,-104.9349064,39.7256134,-104.9349199,39.725615
-12154,2020,7597,0.0929046375775443,0.0929046375775443,-104.9349199,39.725615,-104.9360062,39.7256088
-12155,7597,7260,0.0977180089067193,0.0977180089067193,-104.9360062,39.7256088,-104.9371488,39.7256129
-12156,7260,7607,0.0981798145414121,0.0981798145414121,-104.9371488,39.7256129,-104.9382968,39.725617
-12157,7607,8148,0.0984109366674247,0.0984109366674247,-104.9382968,39.725617,-104.9394475,39.7256125
-12158,8148,8566,0.099556755200234,0.099556755200234,-104.9394475,39.7256125,-104.9406116,39.7256083
-12159,8566,8567,0.0161715318927219,0.0161715318927219,-104.9406116,39.7256083,-104.940796,39.7255761
-12165,7560,8570,0.0547324150634264,0.0547324150634264,-104.9970625,39.7508224,-104.9966174,39.7504686
-12166,8570,6187,0.0510334947129921,0.0510334947129921,-104.9966174,39.7504686,-104.9961984,39.7501417
-12167,6187,8571,0.106459447476842,0.106459447476842,-104.9961984,39.7501417,-104.9953197,39.7494633
-12168,8571,8572,0.00500250155273319,0.00500250155273319,-104.9953197,39.7494633,-104.9952739,39.7494353
-12169,8572,8573,0.102179560181125,0.102179560181125,-104.9952739,39.7494353,-104.9944322,39.7487829
-12171,8574,8575,0.108491319350075,0.108491319350075,-104.9936089,39.7481594,-104.9927205,39.7474627
-12172,8575,8576,0.100542104447219,0.100542104447219,-104.9927205,39.7474627,-104.9918796,39.7468306
-12173,8576,8577,0.00648974428476286,0.00648974428476286,-104.9918796,39.7468306,-104.9918273,39.7467883
-12174,8577,4394,0.10502201579173,0.10502201579173,-104.9918273,39.7467883,-104.9909615,39.7461183
-12175,4394,3006,0.104610459063575,0.104610459063575,-104.9909615,39.7461183,-104.9900832,39.7454633
-12176,3006,5958,0.107806604319072,0.107806604319072,-104.9900832,39.7454633,-104.9891839,39.7447837
-12177,5958,8578,0.00423483079275732,0.00423483079275732,-104.9891839,39.7447837,-104.9891482,39.7447573
-12178,8578,7577,0.0996748095395635,0.0996748095395635,-104.9891482,39.7447573,-104.9883537,39.7441013
-12179,7577,5809,0.11590556985698,0.11590556985698,-104.9883537,39.7441013,-104.9873953,39.7433641
-12181,5431,4429,0.103577041627779,0.103577041627779,-105.0250764,39.7166076,-105.0250933,39.717539
-12182,4429,4040,0.0675516196999984,0.0675516196999984,-105.0250933,39.717539,-105.0250969,39.7181465
-12183,4040,8579,0.0337698992215471,0.0337698992215471,-105.0250969,39.7181465,-105.0250969,39.7184502
-12184,8579,6027,0.102046173899402,0.102046173899402,-105.0250969,39.7184502,-105.0251054,39.7193679
-12185,6027,7864,0.042576537412,0.042576537412,-105.0251054,39.7193679,-105.0251054,39.7197508
-12186,7864,7863,0.0569874056816302,0.0569874056816302,-105.0251054,39.7197508,-105.0251051,39.7202633
-12187,7863,1834,0.10010879574602,0.10010879574602,-105.0251051,39.7202633,-105.0251054,39.7211636
-12188,1834,1828,0.0220165954761323,0.0220165954761323,-105.0251054,39.7211636,-105.0251054,39.7213616
-12189,1828,2629,0.0778176858176647,0.0778176858176647,-105.0251054,39.7213616,-105.025114,39.7220614
-12190,2629,5364,0.0924919399829741,0.0924919399829741,-105.025114,39.7220614,-105.025114,39.7228932
-12191,5364,8580,0.0666180932686517,0.0666180932686517,-105.025114,39.7228932,-105.0251093,39.7234923
-12192,8580,514,0.0427668694783733,0.0427668694783733,-105.0251093,39.7234923,-105.0251054,39.7238769
-12193,514,8581,0.0733005757458476,0.0733005757458476,-105.0251054,39.7238769,-105.0251096,39.7245361
-12194,8581,411,0.0548642593724076,0.0548642593724076,-105.0251096,39.7245361,-105.0251128,39.7250295
-12195,411,8582,0.0193916055385274,0.0193916055385274,-105.0251128,39.7250295,-105.0251054,39.7252038
-12200,8463,8583,0.030501567860775,0.030501567860775,-105.0026615,39.7476216,-105.0023143,39.7476847
-12202,8584,8585,0.0144536004398608,0.0144536004398608,-105.0010239,39.7420661,-105.0010329,39.7419363
-12203,8585,8586,0.0148984012969261,0.0148984012969261,-105.0010329,39.7419363,-105.0012044,39.74196
-12204,8586,8587,0.0138457363467684,0.0138457363467684,-105.0012044,39.74196,-105.0011631,39.7420804
-12206,7095,8584,0.00198726095451303,0.00198726095451303,-105.0010418,39.7420775,-105.0010239,39.7420661
-12208,8587,8588,0.0738864008587524,0.0738864008587524,-105.0011631,39.7420804,-105.0015962,39.7426554
-12209,8588,8088,0.0459979828668163,0.0459979828668163,-105.0015962,39.7426554,-105.0018979,39.7429979
-12211,8588,8088,0.0459979828668163,0.0459979828668163,-105.0015962,39.7426554,-105.0018979,39.7429979
-12213,7962,8589,0.0119871256203592,0.0119871256203592,-105.0007006,39.7452954,-105.000578,39.7453477
-12219,2290,8595,0.0472264457525012,0.0472264457525012,-105.0033485,39.7409586,-105.002885,39.7411896
-12224,8600,6960,0.0627185145557708,0.0627185145557708,-105.0080176,39.741951,-105.0073809,39.7422311
-12225,6960,8590,0.111002569075664,0.111002569075664,-105.0073809,39.7422311,-105.0062495,39.7427207
-12226,8590,8601,0.0399166681864525,0.0399166681864525,-105.0062495,39.7427207,-105.0058461,39.7429014
-12227,8601,8602,0.0122006420704012,0.0122006420704012,-105.0058461,39.7429014,-105.0057227,39.7429565
-12229,8602,8601,0.0122006420704012,0.0122006420704012,-105.0057227,39.7429565,-105.0058461,39.7429014
-12231,8605,8606,0.0364944571667735,0.0364944571667735,-105.0003759,39.7410885,-105.0005878,39.7413734
-12232,8606,8607,0.0128764646733806,0.0128764646733806,-105.0005878,39.7413734,-105.0006617,39.7414743
-12233,8607,8608,0.0546695374625623,0.0546695374625623,-105.0006617,39.7414743,-105.0009845,39.7418987
-12234,8608,8585,0.00588263593176519,0.00588263593176519,-105.0009845,39.7418987,-105.0010329,39.7419363
-12238,6350,8610,0.0529261007223787,0.0529261007223787,-105.0044986,39.7547701,-105.0048452,39.7551645
-12276,2459,8630,0.034376801437,0.034376801437,-105.0078361,39.7532748,-105.0075545,39.7534955
-12278,8630,8631,0.0429012342669158,0.0429012342669158,-105.0075545,39.7534955,-105.0072049,39.7537723
-12279,8631,8478,0.0881202047420162,0.0881202047420162,-105.0072049,39.7537723,-105.0065368,39.7543758
-12280,8478,6349,0.0631900183412494,0.0631900183412494,-105.0065368,39.7543758,-105.0059317,39.7547022
-12281,6349,8610,0.106156240617891,0.106156240617891,-105.0059317,39.7547022,-105.0048452,39.7551645
-12282,8610,8633,0.00782193502715287,0.00782193502715287,-105.0048452,39.7551645,-105.0047762,39.7552107
-12283,8633,8235,0.439089917447406,0.439089917447406,-105.0047762,39.7552107,-105.002653,39.7588064
-13838,2963,1284,0.0976236721102847,0.0976236721102847,-105.0214955,39.7584475,-105.0205218,39.7579887
-12291,8488,6708,0.146276219075305,0.146276219075305,-104.9959984,39.7462684,-104.9947886,39.7471986
-12292,6708,8574,0.146922373978856,0.146922373978856,-104.9947886,39.7471986,-104.9936089,39.7481594
-12293,8574,5780,0.145168342719135,0.145168342719135,-104.9936089,39.7481594,-104.9924092,39.7490833
-12294,5780,8284,0.145457218481639,0.145457218481639,-104.9924092,39.7490833,-104.9912016,39.7500048
-12295,8284,8635,0.147985754967018,0.147985754967018,-104.9912016,39.7500048,-104.9899626,39.7509342
-12296,8635,7895,0.145231730226047,0.145231730226047,-104.9899626,39.7509342,-104.9887543,39.7518523
-12297,7895,8636,0.145188764989583,0.145188764989583,-104.9887543,39.7518523,-104.987575,39.7527919
-12298,8636,8536,0.0230398310291247,0.0230398310291247,-104.987575,39.7527919,-104.987378,39.7529333
-12300,8637,8638,0.051750923168378,0.051750923168378,-104.9993008,39.7450562,-104.9997271,39.7453866
-12306,8641,8642,0.0388526899017529,0.0388526899017529,-105.0078924,39.7547551,-105.0079921,39.7544142
-12322,8647,8648,0.0689932486013888,0.0689932486013888,-105.0057725,39.7569369,-105.0052757,39.7574259
-12324,8409,8649,0.174821115803257,0.174821115803257,-105.0082031,39.7473337,-105.0092259,39.7486951
-12330,8652,8653,0.0109021010822668,0.0109021010822668,-105.0077772,39.7547483,-105.0076516,39.7547313
-12370,127,8676,0.0230804767650593,0.0230804767650593,-105.001255,39.763221,-105.000985,39.7632181
-13861,1773,4425,0.0478826481852338,0.0478826481852338,-104.9769014,39.705675,-104.9763417,39.7056707
-12371,8676,127,0.0230804767650593,0.0230804767650593,-105.000985,39.7632181,-105.001255,39.763221
-12374,8678,2814,0.00715247655230442,0.00715247655230442,-104.9912089,39.7765361,-104.9912923,39.7765415
-12375,2814,7853,0.0872240502720576,0.0872240502720576,-104.9912923,39.7765415,-104.9923076,39.7766218
-12379,552,3283,0.201374804580202,0.201374804580202,-104.9693115,39.7002336,-104.9691419,39.7020399
-12380,3283,439,0.0140574737901418,0.0140574737901418,-104.9691419,39.7020399,-104.9691656,39.702165
-12381,439,440,0.131394781189403,0.131394781189403,-104.9691656,39.702165,-104.969326,39.7033402
-12383,8680,592,0.0279554969032489,0.0279554969032489,-104.9691913,39.7036476,-104.9690283,39.7038655
-12386,3930,5620,0.102308093785748,0.102308093785748,-105.0005956,39.7668504,-105.0017926,39.7668511
-12387,5620,3705,0.100376481944534,0.100376481944534,-105.0017926,39.7668511,-105.002967,39.766852
-12388,3705,710,0.100626287480694,0.100626287480694,-105.002967,39.766852,-105.0041443,39.7668577
-12389,710,8681,0.0994362797990831,0.0994362797990831,-105.0041443,39.7668577,-105.0053077,39.766857
-12390,8681,8515,0.0993120225558452,0.0993120225558452,-105.0053077,39.766857,-105.0064696,39.766865
-12391,8515,4191,0.136253535658325,0.136253535658325,-105.0064696,39.766865,-105.0080637,39.7668543
-12392,4191,2517,0.134250356653895,0.134250356653895,-105.0080637,39.7668543,-105.0096344,39.7668477
-12393,2517,6728,0.132309702657946,0.132309702657946,-105.0096344,39.7668477,-105.0111824,39.766842
-12394,6728,4805,0.136509007433592,0.136509007433592,-105.0111824,39.766842,-105.0127781,39.7668943
-12395,4805,8682,0.134957701338679,0.134957701338679,-105.0127781,39.7668943,-105.0143554,39.766838
-12397,8683,433,0.845576760689761,0.845576760689761,-104.9602564,39.6848648,-104.9692608,39.6879972
-12398,433,481,1.45081348243216,1.45081348243216,-104.9692608,39.6879972,-104.9818608,39.6967284
-12399,481,8684,0.52437215594792,0.52437215594792,-104.9818608,39.6967284,-104.9859386,39.700249
-12401,8685,8686,0.010167997865452,0.010167997865452,-104.9497565,39.7177651,-104.9497874,39.7178534
-12404,4154,4741,0.172602377991032,0.172602377991032,-104.9497951,39.7209768,-104.9498232,39.7225289
-12405,4741,6536,0.177057900654184,0.177057900654184,-104.9498232,39.7225289,-104.9497817,39.7241209
-12406,6536,8687,0.165392784618956,0.165392784618956,-104.9497817,39.7241209,-104.9497898,39.7256083
-12408,5170,6865,0.176928364472993,0.176928364472993,-104.9407951,39.7162379,-104.9407779,39.7146468
-12409,6865,3073,0.175467136201966,0.175467136201966,-104.9407779,39.7146468,-104.9407865,39.7130688
-12410,3073,8690,0.1637299437242,0.1637299437242,-104.9407865,39.7130688,-104.9408036,39.7115964
-12411,8690,8160,0.0198260554201283,0.0198260554201283,-104.9408036,39.7115964,-104.9408036,39.7114181
-12412,8160,8691,0.0330442022067904,0.0330442022067904,-104.9408036,39.7114181,-104.9408122,39.711121
-12414,8692,8693,0.174036627821078,0.174036627821078,-104.9406148,39.716237,-104.9405987,39.7178021
-12415,8693,8694,0.176955606262412,0.176955606262412,-104.9405987,39.7178021,-104.9405987,39.7193935
-12416,8694,8695,0.169605643175659,0.169605643175659,-104.9405987,39.7193935,-104.9405977,39.7209188
-12417,8695,4774,0.249824848381595,0.249824848381595,-104.9405977,39.7209188,-104.9406125,39.7231655
-12418,4774,6552,0.130776357701309,0.130776357701309,-104.9406125,39.7231655,-104.9406129,39.7243416
-12419,6552,8696,0.13038749521243,0.13038749521243,-104.9406129,39.7243416,-104.9406095,39.7255142
-12420,8696,8566,0.0104649837792038,0.0104649837792038,-104.9406095,39.7255142,-104.9406116,39.7256083
-12421,8566,8697,0.196337242565984,0.196337242565984,-104.9406116,39.7256083,-104.9406072,39.727374
-13908,6946,8137,0.20217075396909,0.20217075396909,-104.9602903,39.7819343,-104.9602584,39.7837523
-12422,8697,3765,0.201163077899324,0.201163077899324,-104.9406072,39.727374,-104.9406029,39.7291831
-12423,3765,5944,0.202700667134599,0.202700667134599,-104.9406029,39.7291831,-104.9405891,39.731006
-12424,5944,2231,0.203264325905827,0.203264325905827,-104.9405891,39.731006,-104.9405891,39.732834
-12425,2231,4900,0.203310133896795,0.203310133896795,-104.9405891,39.732834,-104.9405805,39.7346624
-12426,4900,8699,0.223846600901437,0.223846600901437,-104.9405805,39.7346624,-104.9405829,39.7366755
-12427,8699,8700,0.179880034662439,0.179880034662439,-104.9405829,39.7366755,-104.9405826,39.7382932
-12428,8700,8701,0.204289810782798,0.204289810782798,-104.9405826,39.7382932,-104.9405708,39.7401304
-12429,8701,643,0.139830079927305,0.139830079927305,-104.9405708,39.7401304,-104.9405805,39.7413879
-12430,643,7272,0.132835494541237,0.132835494541237,-104.9405805,39.7413879,-104.9405891,39.7425825
-12431,7272,1993,0.110816863894031,0.110816863894031,-104.9405891,39.7425825,-104.9405891,39.7435791
-12432,1993,1977,0.01986880052865,0.01986880052865,-104.9405891,39.7435791,-104.9406062,39.7437573
-12433,1977,4590,0.131129399902762,0.131129399902762,-104.9406062,39.7437573,-104.9406235,39.7449365
-12434,4590,6477,0.129388315999052,0.129388315999052,-104.9406235,39.7449365,-104.9406153,39.7461001
-12435,6477,2460,0.143087746743813,0.143087746743813,-104.9406153,39.7461001,-104.9406062,39.7473869
-12436,2460,5904,0.206205054401277,0.206205054401277,-104.9406062,39.7473869,-104.9405891,39.7492413
-12437,5904,8702,0.200106396563715,0.200106396563715,-104.9405891,39.7492413,-104.9405885,39.7510409
-12438,8702,789,0.199795050779324,0.199795050779324,-104.9405885,39.7510409,-104.9405891,39.7528377
-12439,789,3581,0.193812626433148,0.193812626433148,-104.9405891,39.7528377,-104.9405163,39.7545798
-12440,3581,4353,0.211337121932246,0.211337121932246,-104.9405163,39.7545798,-104.9404804,39.7564802
-12441,4353,8703,0.201766897339093,0.201766897339093,-104.9404804,39.7564802,-104.9404947,39.7582947
-12442,8703,3056,0.204698740459713,0.204698740459713,-104.9404947,39.7582947,-104.9404947,39.7601356
-12443,3056,8704,0.1838941823989,0.1838941823989,-104.9404947,39.7601356,-104.9404955,39.7617894
-12446,902,8706,0.131578356152921,0.131578356152921,-104.9404687,39.7644571,-104.9404758,39.7656404
-12447,8706,2807,0.139128342169529,0.139128342169529,-104.9404758,39.7656404,-104.9404689,39.7668916
-12448,2807,5273,0.132055095159837,0.132055095159837,-104.9404689,39.7668916,-104.9404688,39.7680792
-12449,5273,6913,0.122503450982406,0.122503450982406,-104.9404688,39.7680792,-104.9404689,39.7691809
-12450,6913,6362,0.41302368771275,0.41302368771275,-104.9404689,39.7691809,-104.940457,39.7728953
-12452,3076,3191,0.200008210348418,0.200008210348418,-104.9851226,39.7129392,-104.9851665,39.7111408
-12454,6107,1897,0.202849718138185,0.202849718138185,-104.9851845,39.7093159,-104.985217,39.7074918
-12455,1897,7235,0.199081659570441,0.199081659570441,-104.985217,39.7074918,-104.9851255,39.7057028
-12456,7235,3245,0.204781971579143,0.204781971579143,-104.9851255,39.7057028,-104.9850951,39.7038613
-12457,3245,8707,0.0557878826660101,0.0557878826660101,-104.9850951,39.7038613,-104.9850997,39.7033596
-12458,8707,7285,0.154953879613548,0.154953879613548,-104.9850997,39.7033596,-104.9851123,39.7019661
-12459,7285,28,0.190200511167853,0.190200511167853,-104.9851123,39.7019661,-104.9850866,39.7002557
-12461,7212,8708,0.0837159569795295,0.0837159569795295,-104.9784122,39.6929827,-104.9774338,39.692988
-12463,8708,6525,0.0119790128871836,0.0119790128871836,-104.9774338,39.692988,-104.9772938,39.6929888
-12464,6525,1779,0.0293911622529401,0.0293911622529401,-104.9772938,39.6929888,-104.9769504,39.6929822
-12465,1779,4372,0.0502766443311638,0.0502766443311638,-104.9769504,39.6929822,-104.9763628,39.692984
-12466,4372,8710,0.0490277911002061,0.0490277911002061,-104.9763628,39.692984,-104.97579,39.6929721
-12467,8710,4684,0.0539189737855212,0.0539189737855212,-104.97579,39.6929721,-104.9751601,39.6929864
-12468,4684,1527,0.0474102490920647,0.0474102490920647,-104.9751601,39.6929864,-104.974606,39.692988
-12469,1527,5107,0.0489757310519715,0.0489757310519715,-104.974606,39.692988,-104.9740336,39.6929885
-19288,10468,10469,0.0662296445612727,0.0662296445612727,-104.9873734,39.7392289,-104.9881479,39.7392371
-12470,5107,8711,0.0509607682871969,0.0509607682871969,-104.9740336,39.6929885,-104.973438,39.692989
-12471,8711,5064,0.0518326919728752,0.0518326919728752,-104.973438,39.692989,-104.9728324,39.6929773
-12472,5064,1746,0.0537415293364607,0.0537415293364607,-104.9728324,39.6929773,-104.9722045,39.6929651
-12473,1746,5607,0.04913949394522,0.04913949394522,-104.9722045,39.6929651,-104.9716302,39.692962
-12474,5607,6637,0.0470345659561698,0.0470345659561698,-104.9716302,39.692962,-104.9710805,39.6929591
-12475,6637,5450,0.0502526613335692,0.0502526613335692,-104.9710805,39.6929591,-104.9704932,39.6929632
-12477,5427,5408,0.0488836182047643,0.0488836182047643,-104.9699057,39.6929673,-104.9693344,39.6929713
-12478,5408,7399,0.051895578159039,0.051895578159039,-104.9693344,39.6929713,-104.9687279,39.6929756
-12479,7399,8712,0.1038123024378,0.1038123024378,-104.9687279,39.6929756,-104.9675147,39.6929637
-12481,8713,8714,0.0490473159959526,0.0490473159959526,-104.966356,39.6929637,-104.9657828,39.6929687
-12482,8714,7277,0.0483828604327117,0.0483828604327117,-104.9657828,39.6929687,-104.9652174,39.6929756
-12483,7277,3483,0.0998765627131917,0.0998765627131917,-104.9652174,39.6929756,-104.9640501,39.6929756
-12484,3483,8715,0.048840271287456,0.048840271287456,-104.9640501,39.6929756,-104.9634793,39.692979
-12485,8715,6079,0.0473684752554207,0.0473684752554207,-104.9634793,39.692979,-104.9629257,39.6929822
-12486,6079,8716,0.055154161978582,0.055154161978582,-104.9629257,39.6929822,-104.9622811,39.6929794
-12487,8716,3697,0.0479069878085689,0.0479069878085689,-104.9622811,39.6929794,-104.9617212,39.6929769
-12488,3697,5685,0.0473941467783467,0.0473941467783467,-104.9617212,39.6929769,-104.9611673,39.6929737
-12489,5685,4571,0.0495504189878239,0.0495504189878239,-104.9611673,39.6929737,-104.9605882,39.6929703
-12490,4571,8717,0.0532110753130406,0.0532110753130406,-104.9605882,39.6929703,-104.9599663,39.6929697
-12495,8720,6626,0.0151124856958777,0.0151124856958777,-104.979262,39.6936183,-104.9792691,39.6934825
-12496,6626,7211,0.0534737559078532,0.0534737559078532,-104.9792691,39.6934825,-104.9792704,39.6930016
-12497,7211,5824,0.205145340397742,0.205145340397742,-104.9792704,39.6930016,-104.9792603,39.6911567
-12498,5824,7729,0.196126806182622,0.196126806182622,-104.9792603,39.6911567,-104.9792523,39.6893929
-12499,7729,8721,1.41081273670029,1.41081273670029,-104.9792523,39.6893929,-104.9792956,39.6767052
-12500,8722,6630,0.00966193494482075,0.00966193494482075,-104.976967,39.6915646,-104.9769745,39.6914779
-12501,6630,5826,0.0378008975972725,0.0378008975972725,-104.9769745,39.6914779,-104.9769668,39.691138
-12502,5826,7731,0.193712690967488,0.193712690967488,-104.9769668,39.691138,-104.9769661,39.6893959
-12503,7731,8723,1.80961969384046,1.80961969384046,-104.9769661,39.6893959,-104.9769591,39.6731216
-12504,1781,8722,0.107247989428491,0.107247989428491,-104.9769412,39.6925289,-104.976967,39.6915646
-12506,7401,6529,0.108235119976502,0.108235119976502,-104.9687279,39.6879032,-104.9687115,39.6869299
-12508,4596,8724,0.16807497837827,0.16807497837827,-104.9598011,39.7447758,-104.9597878,39.7432643
-12509,8724,8725,0.178846116420602,0.178846116420602,-104.9597878,39.7432643,-104.9597847,39.7416559
-12510,8725,678,0.00426139259412424,0.00426139259412424,-104.9597847,39.7416559,-104.9597887,39.7416177
-12511,678,8726,0.00479379013962442,0.00479379013962442,-104.9597887,39.7416177,-104.9597874,39.7415746
-12512,8726,8727,0.179790579190484,0.179790579190484,-104.9597874,39.7415746,-104.9597547,39.7399579
-12513,8727,5480,0.174201148052584,0.174201148052584,-104.9597547,39.7399579,-104.9597808,39.7383914
-12514,5480,8728,0.175423920421782,0.175423920421782,-104.9597808,39.7383914,-104.9597692,39.7368138
-12515,8728,4882,0.196140148835561,0.196140148835561,-104.9597692,39.7368138,-104.9598063,39.7350501
-12516,4882,2250,0.176600887954475,0.176600887954475,-104.9598063,39.7350501,-104.959782,39.733462
-12517,2250,5916,0.3321793201224,0.3321793201224,-104.959782,39.733462,-104.960135,39.730487
-12519,3788,8729,0.199339438501115,0.199339438501115,-104.9601881,39.7291071,-104.9601841,39.7273144
-12521,1189,8730,0.167786544262905,0.167786544262905,-104.9601763,39.7271213,-104.9601619,39.7256124
-12522,8730,7154,0.107569635985836,0.107569635985836,-104.9601619,39.7256124,-104.9594545,39.7248125
-12524,8731,8732,0.130443287352145,0.130443287352145,-104.9734316,39.6904059,-104.9734273,39.6892328
-12526,8732,6531,0.0215721025681021,0.0215721025681021,-104.9734273,39.6892328,-104.9734286,39.6890388
-12527,6531,8733,0.0174468386055745,0.0174468386055745,-104.9734286,39.6890388,-104.9734273,39.6888819
-12551,8748,6518,0.0472889047630053,0.0472889047630053,-104.9586768,39.6947734,-104.9581241,39.6947734
-12552,6518,8749,0.0506856290604236,0.0506856290604236,-104.9581241,39.6947734,-104.9575317,39.6947734
-12548,4570,8746,0.0496686599585209,0.0496686599585209,-104.960571,39.6947799,-104.9599905,39.6947768
-12549,8746,8747,0.0568130428191116,0.0568130428191116,-104.9599905,39.6947768,-104.9593265,39.6947733
-12528,8733,8734,4.18362578562758,4.18362578562758,-104.9734273,39.6888819,-104.9735656,39.6512578
-12529,6533,8735,0.0310320915845362,0.0310320915845362,-104.9743231,39.6893856,-104.9740308,39.6892204
-12530,8735,8733,0.0639013406897381,0.0639013406897381,-104.9740308,39.6892204,-104.9734273,39.6888819
-12531,8733,8736,0.0575832242503326,0.0575832242503326,-104.9734273,39.6888819,-104.9728386,39.688631
-12532,8736,1744,0.0585281295770588,0.0585281295770588,-104.9728386,39.688631,-104.9722383,39.6883787
-12533,1744,8737,0.0551795735412136,0.0551795735412136,-104.9722383,39.6883787,-104.9716711,39.6881426
-12534,8737,6634,0.0667321861738512,0.0667321861738512,-104.9716711,39.6881426,-104.9709852,39.687857
-12535,6634,8738,1.14684827666039,1.14684827666039,-104.9709852,39.687857,-104.9593753,39.6827044
-12536,8739,8740,0.050189520794265,0.050189520794265,-104.968695,39.6947883,-104.9681084,39.6947872
-12537,8740,8741,0.0520205890853532,0.0520205890853532,-104.9681084,39.6947872,-104.9675005,39.6947786
-12538,8741,8742,0.0975475062746334,0.0975475062746334,-104.9675005,39.6947786,-104.9663604,39.6947751
-12539,8742,8743,0.0478496643069703,0.0478496643069703,-104.9663604,39.6947751,-104.9658013,39.6947852
-12540,8743,7276,0.0507419704012955,0.0507419704012955,-104.9658013,39.6947852,-104.9652088,39.6947654
-12541,7276,3482,0.0993982386954757,0.0993982386954757,-104.9652088,39.6947654,-104.9640471,39.6947728
-12542,3482,8744,0.05053480573854,0.05053480573854,-104.9640471,39.6947728,-104.9634565,39.6947677
-12543,8744,6078,0.0468212480872111,0.0468212480872111,-104.9634565,39.6947677,-104.9629093,39.694763
-12544,6078,8745,0.052325451958986,0.052325451958986,-104.9629093,39.694763,-104.9622978,39.6947699
-12545,8745,3696,0.0475592999209775,0.0475592999209775,-104.9622978,39.6947699,-104.961742,39.6947762
-12546,3696,5684,0.0505577280347845,0.0505577280347845,-104.961742,39.6947762,-104.9611511,39.6947781
-12547,5684,4570,0.0496336429817659,0.0496336429817659,-104.9611511,39.6947781,-104.960571,39.6947799
-12550,8747,8748,0.0555882070947718,0.0555882070947718,-104.9593265,39.6947733,-104.9586768,39.6947734
-12553,8749,6161,0.0483586179330098,0.0483586179330098,-104.9575317,39.6947734,-104.9569665,39.6947747
-12554,6161,8750,0.0494030122591725,0.0494030122591725,-104.9569665,39.6947747,-104.9563891,39.6947772
-12555,8750,2739,0.0483430371417139,0.0483430371417139,-104.9563891,39.6947772,-104.9558241,39.6947809
-12556,2739,8751,0.0499840332207257,0.0499840332207257,-104.9558241,39.6947809,-104.9552399,39.6947809
-12557,8751,5230,0.0498899174438866,0.0498899174438866,-104.9552399,39.6947809,-104.9546568,39.6947809
-12558,5230,8752,0.0487864097624457,0.0487864097624457,-104.9546568,39.6947809,-104.9540866,39.6947822
-12559,8752,3172,0.0492052393668883,0.0492052393668883,-104.9540866,39.6947822,-104.9535117,39.6947706
-12560,3172,8753,0.048649307652154,0.048649307652154,-104.9535117,39.6947706,-104.9529431,39.6947706
-12561,8753,4997,0.0504970791491002,0.0504970791491002,-104.9529431,39.6947706,-104.952353,39.6947624
-12562,4997,729,0.0994774482962559,0.0994774482962559,-104.952353,39.6947624,-104.9511904,39.6947719
-12564,7060,7316,0.100261995636978,0.100261995636978,-104.9500436,39.6947813,-104.9488718,39.6947743
-12565,7316,4587,0.101339695102535,0.101339695102535,-104.9488718,39.6947743,-104.9476874,39.6947677
-12566,4587,8033,0.0978749879893347,0.0978749879893347,-104.9476874,39.6947677,-104.9465436,39.6947813
-12567,8033,6373,0.096169791555938,0.096169791555938,-104.9465436,39.6947813,-104.9454196,39.6947783
-12568,6373,8754,0.0556932821262755,0.0556932821262755,-104.9454196,39.6947783,-104.944769,39.6947624
-12569,8754,4827,0.0506856253200211,0.0506856253200211,-104.944769,39.6947624,-104.9441769,39.6947479
-12570,4827,8755,0.0976778629222165,0.0976778629222165,-104.9441769,39.6947479,-104.9430353,39.6947545
-12572,8756,8757,0.0483546146560771,0.0483546146560771,-104.9418766,39.6947611,-104.9413115,39.694755
-12573,8757,8758,0.00678547758181753,0.00678547758181753,-104.9413115,39.694755,-104.9412322,39.6947542
-12574,8758,8759,0.0425788070077018,0.0425788070077018,-104.9412322,39.6947542,-104.9407346,39.6947488
-12577,2375,8761,0.0800348658330501,0.0800348658330501,-104.9535019,39.7105138,-104.9525663,39.7105072
-12579,8761,2381,0.0565526295759939,0.0565526295759939,-104.9525663,39.7105072,-104.9519054,39.7105204
-12580,2381,2378,0.0732152007668199,0.0732152007668199,-104.9519054,39.7105204,-104.9510557,39.7104412
-12581,2378,2379,0.0407086995566738,0.0407086995566738,-104.9510557,39.7104412,-104.9506866,39.7102101
-12582,2379,2383,0.00264328007897714,0.00264328007897714,-104.9506866,39.7102101,-104.9506695,39.7101903
-12583,2383,2571,0.0689488793496812,0.0689488793496812,-104.9506695,39.7101903,-104.9505579,39.7095762
-12585,8761,2375,0.0800348658330501,0.0800348658330501,-104.9525663,39.7105072,-104.9535019,39.7105138
-12587,1510,7932,0.0417550445525859,0.0417550445525859,-104.9532101,39.7050201,-104.9536135,39.7048087
-12589,8764,4921,0.0107315298188712,0.0107315298188712,-104.9907602,39.7299304,-104.9906535,39.7299812
-12590,4921,8062,0.0635329705608418,0.0635329705608418,-104.9906535,39.7299812,-104.9902595,39.7304656
-12591,8062,6584,0.176700679215808,0.176700679215808,-104.9902595,39.7304656,-104.9902658,39.7320547
-12592,6584,5366,0.199428899537142,0.199428899537142,-104.9902658,39.7320547,-104.9902592,39.7338482
-12593,5366,7124,0.156701102941306,0.156701102941306,-104.9902592,39.7338482,-104.9902249,39.7352572
-12594,7124,612,0.178308153840751,0.178308153840751,-104.9902249,39.7352572,-104.9902547,39.7368606
-12595,612,1943,0.177718886558766,0.177718886558766,-104.9902547,39.7368606,-104.9902169,39.7384586
-12596,1943,8765,0.0553792982616949,0.0553792982616949,-104.9902169,39.7384586,-104.9902249,39.7389566
-12597,8765,8767,0.0568805264393287,0.0568805264393287,-104.9902249,39.7389566,-104.9902331,39.7394681
-12625,8778,8779,0.0386703080825578,0.0386703080825578,-104.9874654,39.72522,-104.9874745,39.7248723
-12598,8767,8768,0.0596299154046411,0.0596299154046411,-104.9902331,39.7394681,-104.9903111,39.740001
-12600,8217,8764,0.0348766827140038,0.0348766827140038,-104.9911152,39.729776,-104.9907602,39.7299304
-12602,8769,7960,0.0121246465842421,0.0121246465842421,-104.9904615,39.7289525,-104.9906006,39.7289314
-12636,8782,8776,0.0415201856091735,0.0415201856091735,-104.9874245,39.7271431,-104.9874245,39.7267697
-12603,7960,7858,0.191569398536593,0.191569398536593,-104.9906006,39.7289314,-104.9928407,39.7289388
-12604,7858,384,0.0511824976047815,0.0511824976047815,-104.9928407,39.7289388,-104.9934388,39.7289219
-12606,4685,296,0.0500706281631231,0.0500706281631231,-104.9940378,39.7289164,-104.9946233,39.7289153
-12607,296,4955,0.0491810974692235,0.0491810974692235,-104.9946233,39.7289153,-104.9951984,39.7289153
-12608,4955,7223,0.104958162725722,0.104958162725722,-104.9951984,39.7289153,-104.9964257,39.7289087
-12611,8773,8774,0.043865298365945,0.043865298365945,-104.9975826,39.7288966,-104.9980954,39.7289058
-12612,8774,6643,0.0451313849693394,0.0451313849693394,-104.9980954,39.7289058,-104.998623,39.7289153
-12613,6643,8218,0.0697309457073312,0.0697309457073312,-104.998623,39.7289153,-104.9994384,39.7289153
-12614,8218,3952,0.0651671851260823,0.0651671851260823,-104.9994384,39.7289153,-105.0002004,39.7289098
-12616,1623,8769,0.0363096662742893,0.0363096662742893,-104.990046,39.7290197,-104.9904615,39.7289525
-12618,5097,8775,0.0318529970242771,0.0318529970242771,-104.9898761,39.7283677,-104.9895915,39.7285525
-12622,8776,8777,0.018725243223035,0.018725243223035,-104.9874245,39.7267697,-104.9874242,39.7266013
-12623,8777,6243,0.106972614023441,0.106972614023441,-104.9874242,39.7266013,-104.9874615,39.7256397
-12624,6243,8778,0.0466697025677041,0.0466697025677041,-104.9874615,39.7256397,-104.9874654,39.72522
-12626,8779,5192,0.0833353912042221,0.0833353912042221,-104.9874745,39.7248723,-104.9874942,39.724123
-12627,5192,8780,0.0302234211776424,0.0302234211776424,-104.9874942,39.724123,-104.9874919,39.7238512
-12628,8780,8781,0.0269541929474085,0.0269541929474085,-104.9874919,39.7238512,-104.9874899,39.7236088
-12629,8781,2610,0.119870657472311,0.119870657472311,-104.9874899,39.7236088,-104.9874808,39.7225308
-12630,2610,1838,0.176410752987704,0.176410752987704,-104.9874808,39.7225308,-104.9874805,39.7209443
-12631,1838,2360,0.17767880886817,0.17767880886817,-104.9874805,39.7209443,-104.9874759,39.7193464
-12633,3710,4430,0.0984187629622127,0.0984187629622127,-104.9874523,39.7183509,-104.9874697,39.7174659
-12634,4430,5171,0.100485171973402,0.100485171973402,-104.9874697,39.7174659,-104.9874858,39.7165623
-12638,968,8783,0.0450647850917565,0.0450647850917565,-104.9837585,39.7235715,-104.983647,39.7239676
-12640,8783,6332,0.0179790401179982,0.0179790401179982,-104.983647,39.7239676,-104.9836195,39.7241279
-12641,6332,8784,0.166916939377104,0.166916939377104,-104.9836195,39.7241279,-104.9836094,39.725629
-12642,8784,8785,0.0824631793427953,0.0824631793427953,-104.9836094,39.725629,-104.9836046,39.7263706
-12643,8785,8786,0.100743867095121,0.100743867095121,-104.9836046,39.7263706,-104.9835987,39.7272766
-12644,8786,3809,0.198861011407653,0.198861011407653,-104.9835987,39.7272766,-104.9835982,39.729065
-12645,3809,5921,0.152448419282946,0.152448419282946,-104.9835982,39.729065,-104.9835955,39.730436
-12647,920,2206,0.198794444530698,0.198794444530698,-104.9835814,39.7320454,-104.9835843,39.7338332
-12648,2206,4855,0.161210664735901,0.161210664735901,-104.9835843,39.7338332,-104.9836067,39.7352829
-12649,4855,8787,0.176180330331867,0.176180330331867,-104.9836067,39.7352829,-104.9835945,39.7368673
-12650,8787,5459,0.173977209442215,0.173977209442215,-104.9835945,39.7368673,-104.9835857,39.7384319
-12651,5459,8788,0.179581076943561,0.179581076943561,-104.9835857,39.7384319,-104.9835778,39.7400469
-12652,8788,653,0.182661218967331,0.182661218967331,-104.9835778,39.7400469,-104.9835697,39.7416896
-12653,653,8789,0.175533060842227,0.175533060842227,-104.9835697,39.7416896,-104.9835757,39.7432682
-12654,8789,4615,0.178562453757686,0.178562453757686,-104.9835757,39.7432682,-104.9835591,39.744874
-12655,4615,6485,0.147124798702961,0.147124798702961,-104.9835591,39.744874,-104.9835697,39.7461971
-12656,6485,3681,0.150536039008347,0.150536039008347,-104.9835697,39.7461971,-104.9836002,39.7475507
-12658,5282,8790,0.0413354062568629,0.0413354062568629,-104.9825741,39.7226935,-104.9824367,39.7230499
-12660,8790,6331,0.0121138578035044,0.0121138578035044,-104.9824367,39.7230499,-104.9824024,39.7231556
-12662,6548,8791,0.16625102712937,0.16625102712937,-104.9823535,39.7241259,-104.9823661,39.725621
-12663,8791,8792,0.184061439099574,0.184061439099574,-104.9823661,39.725621,-104.9823612,39.7272763
-12664,8792,3808,0.198594245045878,0.198594245045878,-104.9823612,39.7272763,-104.9823636,39.7290623
-12665,3808,5923,0.153339826215406,0.153339826215406,-104.9823636,39.7290623,-104.9822823,39.7304399
-12666,5923,922,0.17696116360303,0.17696116360303,-104.9822823,39.7304399,-104.9822659,39.7320313
-12667,922,2208,0.186196659484346,0.186196659484346,-104.9822659,39.7320313,-104.9822597,39.7337058
-12668,2208,4857,0.160795645903838,0.160795645903838,-104.9822597,39.7337058,-104.9822782,39.7351518
-12669,4857,8793,0.191420788288479,0.191420788288479,-104.9822782,39.7351518,-104.9823009,39.7368732
-12671,5460,8794,0.176401987583553,0.176401987583553,-104.9823009,39.7384375,-104.9823264,39.7400238
-12672,8794,8795,0.177191749793072,0.177191749793072,-104.9823264,39.7400238,-104.9823377,39.7416173
-12673,8795,654,0.00549383449703672,0.00549383449703672,-104.9823377,39.7416173,-104.9823388,39.7416667
-12674,654,8796,0.178534682523657,0.178534682523657,-104.9823388,39.7416667,-104.9823365,39.7432723
-12675,8796,4614,0.177531607780329,0.177531607780329,-104.9823365,39.7432723,-104.9823157,39.7448688
-12676,4614,6486,0.147678461213278,0.147678461213278,-104.9823157,39.7448688,-104.9823113,39.7461969
-12677,6486,3679,0.150313310591357,0.150313310591357,-104.9823113,39.7461969,-104.9823107,39.7475487
-12681,8798,8799,0.123466110327723,0.123466110327723,-104.9457531,39.7104012,-104.9464054,39.7113917
-12682,8799,3186,0.00950854696516887,0.00950854696516887,-104.9464054,39.7113917,-104.9464561,39.7114678
-12683,3186,8800,0.0308360436433676,0.0308360436433676,-104.9464561,39.7114678,-104.9467659,39.7116096
-12685,8801,8802,0.231947805663281,0.231947805663281,-104.9590492,39.7160869,-104.9590692,39.7181728
-12686,8802,8803,0.0199646364044365,0.0199646364044365,-104.9590692,39.7181728,-104.9590745,39.7183523
-12687,8803,5017,0.0091876036672495,0.0091876036672495,-104.9590745,39.7183523,-104.9590772,39.7184349
-12692,7064,8808,0.0247148912105672,0.0247148912105672,-104.95025,39.7175567,-104.9500032,39.7176723
-12693,8808,8685,0.0234885972598816,0.0234885972598816,-104.9500032,39.7176723,-104.9497565,39.7177651
-20809,8326,10950,0.0125120772932362,0.0125120772932362,-105.029018,39.7621132,-105.0289678,39.7620075
-16680,9982,9983,0.0455494891280306,0.0455494891280306,-105.00793,39.7419174,-105.0074579,39.7421072
-15872,7130,8879,0.124695897236049,0.124695897236049,-105.0370687,39.7347704,-105.0382757,39.7341411
-12694,8685,8023,0.100302779247875,0.100302779247875,-104.9497565,39.7177651,-104.9485858,39.7178178
-12696,8809,8685,0.057365793634115,0.057365793634115,-104.9497699,39.7172493,-104.9497565,39.7177651
-12699,8810,4109,0.100464246278784,0.100464246278784,-104.9500622,39.7177177,-104.9511309,39.7180926
-12700,4109,2643,0.0901887127804005,0.0901887127804005,-104.9511309,39.7180926,-104.9521735,39.7182139
-12702,8805,7976,0.102773783270916,0.102773783270916,-104.9534009,39.718219,-104.9546025,39.7182181
-12703,7976,7318,0.104083044705694,0.104083044705694,-104.9546025,39.7182181,-104.9558194,39.7182147
-12704,7318,8803,0.278830952538266,0.278830952538266,-104.9558194,39.7182147,-104.9590745,39.7183523
-12706,8811,8812,0.108086464170563,0.108086464170563,-104.9494453,39.7136057,-104.9497656,39.714546
-12707,8812,6861,0.0114665228848291,0.0114665228848291,-104.9497656,39.714546,-104.9497683,39.7146491
-12709,5165,8809,0.109306863073043,0.109306863073043,-104.9497617,39.7162663,-104.9497699,39.7172493
-12710,8809,8808,0.0510932247106912,0.0510932247106912,-104.9497699,39.7172493,-104.9500032,39.7176723
-12712,8798,6379,0.100799788599422,0.100799788599422,-104.9457531,39.7104012,-104.9449548,39.7097344
-12713,6379,6099,0.0584802680423258,0.0584802680423258,-104.9449548,39.7097344,-104.9444906,39.7093483
-12714,6099,8202,0.382882462386682,0.382882462386682,-104.9444906,39.7093483,-104.9408446,39.707351
-12716,8813,8173,0.0533183303572635,0.0533183303572635,-104.9406573,39.7061997,-104.940655,39.7066792
-12718,8814,8815,0.0594781662619651,0.0594781662619651,-104.940835,39.70673,-104.940835,39.7061951
-12720,8815,3633,0.0139674412080793,0.0139674412080793,-104.940835,39.7061951,-104.9408419,39.7060696
-14286,6672,3115,0.0991095918198707,0.0991095918198707,-104.9362682,39.7146512,-104.9351095,39.7146512
-15288,8812,7065,0.0171061341992079,0.0171061341992079,-104.9497656,39.714546,-104.9499634,39.7145233
-12722,3295,8191,0.195769878320479,0.195769878320479,-104.9407838,39.7038199,-104.940786,39.7020593
-12723,8191,103,0.207801078913796,0.207801078913796,-104.940786,39.7020593,-104.940786,39.7001905
-12724,103,3505,0.201240848446412,0.201240848446412,-104.940786,39.7001905,-104.940829,39.698381
-12725,3505,8816,0.20140010471513,0.20140010471513,-104.940829,39.698381,-104.940726,39.6965715
-12726,8816,8817,0.0467910785706761,0.0467910785706761,-104.940726,39.6965715,-104.9407242,39.6961507
-12727,8817,8759,0.155886707244551,0.155886707244551,-104.9407242,39.6961507,-104.9407346,39.6947488
-12728,8759,8818,0.0209382564173288,0.0209382564173288,-104.9407346,39.6947488,-104.9407334,39.6945605
-12729,8818,8819,0.0390294530141924,0.0390294530141924,-104.9407334,39.6945605,-104.940734,39.6942095
-12730,8819,8820,0.0609459777309488,0.0609459777309488,-104.940734,39.6942095,-104.9407348,39.6936614
-12732,7196,5844,0.199996639851393,0.199996639851393,-104.940735,39.692928,-104.9407088,39.6911295
-12733,5844,7747,0.201963345264684,0.201963345264684,-104.9407088,39.6911295,-104.9407088,39.6893132
-12734,7747,8821,0.660668042362938,0.660668042362938,-104.9407088,39.6893132,-104.9406408,39.6833719
-12737,6675,8823,0.018377691001392,0.018377691001392,-104.9362112,39.6893266,-104.9359966,39.6893199
-12738,8823,3121,0.0817086617793047,0.0817086617793047,-104.9359966,39.6893199,-104.9350417,39.6893238
-12739,3121,3122,0.0189462201356829,0.0189462201356829,-104.9350417,39.6893238,-104.9348207,39.6893133
-12740,3122,6294,0.0736313115214917,0.0736313115214917,-104.9348207,39.6893133,-104.9339602,39.6893172
-12741,6294,6295,0.0205616464638412,0.0205616464638412,-104.9339602,39.6893172,-104.9337199,39.6893172
-12742,6295,6620,0.098958190214706,0.098958190214706,-104.9337199,39.6893172,-104.9325634,39.6893199
-14308,9323,2191,0.217246414275379,0.217246414275379,-104.9918391,39.7579642,-104.9936227,39.759356
-12743,6620,7343,0.0741923893812443,0.0741923893812443,-104.9325634,39.6893199,-104.9316965,39.6893332
-12744,7343,2845,0.101548527960204,0.101548527960204,-104.9316965,39.6893332,-104.9305098,39.6893437
-12745,2845,3494,0.101534987318255,0.101534987318255,-104.9305098,39.6893437,-104.9293234,39.6893613
-12746,3494,5350,0.0785982086314387,0.0785982086314387,-104.9293234,39.6893613,-104.928405,39.689348
-12748,4220,2948,0.0852112039835386,0.0852112039835386,-104.9274781,39.6893679,-104.9264824,39.6893811
-12749,2948,2949,0.056569943078372,0.056569943078372,-104.9264824,39.6893811,-104.9258215,39.6893679
-12750,2949,6813,0.0330539311277449,0.0330539311277449,-104.9258215,39.6893679,-104.9254353,39.6893745
-12751,6813,6810,0.0675878090482117,0.0675878090482117,-104.9254353,39.6893745,-104.9246456,39.6893613
-12752,6810,1814,0.0227606927419569,0.0227606927419569,-104.9246456,39.6893613,-104.9243796,39.6893613
-12753,1814,8824,0.984700828985706,0.984700828985706,-104.9243796,39.6893613,-104.9128716,39.689347
-12754,8823,8825,0.40169861106651,0.40169861106651,-104.9359966,39.6893199,-104.936139,39.685709
-12779,3798,5937,0.1524274277381,0.1524274277381,-104.9729432,39.7290745,-104.9729509,39.7304453
-12755,8826,7748,0.668566967249301,0.668566967249301,-104.9403877,39.6833057,-104.9405349,39.6893172
-12756,7748,5845,0.201518653480334,0.201518653480334,-104.9405349,39.6893172,-104.9405371,39.6911295
-12757,5845,7197,0.200485803128442,0.200485803128442,-104.9405371,39.6911295,-104.9405457,39.6929325
-12758,7197,8827,0.180703533412633,0.180703533412633,-104.9405457,39.6929325,-104.94054,39.6945576
-12759,8827,8760,0.0207611083367854,0.0207611083367854,-104.94054,39.6945576,-104.9405376,39.6947443
-12760,8760,8828,0.203176551906279,0.203176551906279,-104.9405376,39.6947443,-104.9405457,39.6965715
-12761,8828,3506,0.200871002946695,0.200871002946695,-104.9405457,39.6965715,-104.9406406,39.6983765
-12763,8170,8192,0.20854015704238,0.20854015704238,-104.9405886,39.7001839,-104.9406058,39.7020593
-12764,8192,3296,0.195770030101267,0.195770030101267,-104.9406058,39.7020593,-104.9406022,39.7038199
-12765,3296,8183,0.100143064441761,0.100143064441761,-104.9406022,39.7038199,-104.9405972,39.7047205
-12766,8183,8188,0.148673984504934,0.148673984504934,-104.9405972,39.7047205,-104.9406663,39.7060565
-12767,8188,8813,0.0159417159428289,0.0159417159428289,-104.9406663,39.7060565,-104.9406573,39.7061997
-12769,2918,8829,0.0404869067666165,0.0404869067666165,-104.9732171,39.7182486,-104.9732505,39.7186118
-12771,8829,6328,0.00908621391699812,0.00908621391699812,-104.9732505,39.7186118,-104.9732624,39.718693
-12772,6328,8830,0.0795394987314785,0.0795394987314785,-104.9732624,39.718693,-104.9732562,39.7194083
-12774,4166,4751,0.202375182887314,0.202375182887314,-104.972908,39.7201406,-104.9729128,39.7219606
-12775,4751,6542,0.197696304569089,0.197696304569089,-104.9729128,39.7219606,-104.9729252,39.7237385
-12776,6542,8831,0.204678217467742,0.204678217467742,-104.9729252,39.7237385,-104.9729154,39.7255792
-12778,8832,3798,0.199708223967288,0.199708223967288,-104.9729324,39.7272785,-104.9729432,39.7290745
-12780,5937,938,0.177624298285183,0.177624298285183,-104.9729509,39.7304453,-104.9729595,39.7320427
-12781,938,2222,0.185255991502605,0.185255991502605,-104.9729595,39.7320427,-104.9729758,39.7337087
-12782,2222,4872,0.159853083829866,0.159853083829866,-104.9729758,39.7337087,-104.9729971,39.7351462
-12783,4872,8834,0.191323978817286,0.191323978817286,-104.9729971,39.7351462,-104.9730073,39.7368668
-12787,28,8836,0.0411233276076822,0.0411233276076822,-104.9850866,39.7002557,-104.9855672,39.7002491
-15407,8527,8524,0.00632598868026626,0.00632598868026626,-105.0054168,39.751192,-105.0053655,39.751233
-16685,9986,9987,0.0852803879953952,0.0852803879953952,-105.007297,39.7423918,-105.0064333,39.7427754
-12788,8830,4165,0.0810572303723974,0.0810572303723974,-104.9732562,39.7194083,-104.9733458,39.720134
-12790,4096,6041,0.191845009601904,0.191845009601904,-105.0181552,39.7838945,-105.0181598,39.7856198
-12791,6041,8837,0.201496335450174,0.201496335450174,-105.0181598,39.7856198,-105.0181605,39.7874319
-12792,8837,8838,0.406062586796109,0.406062586796109,-105.0181605,39.7874319,-105.0181502,39.7910837
-12793,4086,6031,0.181162285735164,0.181162285735164,-105.0112057,39.7838279,-105.0111925,39.7854571
-12794,6031,6032,0.0171385466290399,0.0171385466290399,-105.0111925,39.7854571,-105.0111965,39.7856112
-12795,6032,8839,0.201396970557967,0.201396970557967,-105.0111965,39.7856112,-105.0112028,39.7874224
-12796,8839,2539,0.0036249646793062,0.0036249646793062,-105.0112028,39.7874224,-105.0112029,39.787455
-12797,2539,7937,0.222367701142404,0.222367701142404,-105.0112029,39.787455,-105.0112006,39.7894548
-12798,7937,8840,0.179081080346528,0.179081080346528,-105.0112006,39.7894548,-105.0111916,39.7910653
-12799,8520,8841,0.0687184646666591,0.0687184646666591,-105.006397,39.7829043,-105.006397,39.7835223
-12801,8841,298,0.017862044588972,0.017862044588972,-105.006397,39.7835223,-105.0063925,39.7836829
-12802,298,4082,0.0176901086131869,0.0176901086131869,-105.0063925,39.7836829,-105.0063995,39.7838419
-12805,2560,6714,0.0892568890732451,0.0892568890732451,-105.0064215,39.7862585,-105.0064173,39.7870612
-12806,6714,6633,0.0879831056932755,0.0879831056932755,-105.0064173,39.7870612,-105.006429,39.7878524
-12807,6633,8844,0.0442062339102578,0.0442062339102578,-105.006429,39.7878524,-105.0064203,39.7882499
-12808,8844,7935,0.0446455487862746,0.0446455487862746,-105.0064203,39.7882499,-105.0064172,39.7886514
-12809,7935,8845,0.265612509858697,0.265612509858697,-105.0064172,39.7886514,-105.0064079,39.7910401
-12817,297,299,0.88607517832177,0.88607517832177,-104.999633,39.7829256,-105.0099714,39.7835424
-12823,493,589,0.268896577305787,0.268896577305787,-104.994193,39.7810897,-104.9917474,39.779568
-12824,589,8850,0.33804717039653,0.33804717039653,-104.9917474,39.779568,-104.9897894,39.7769264
-12826,8589,8851,0.042366080089372,0.042366080089372,-105.000578,39.7453477,-105.0002455,39.7456302
-12828,8851,4936,0.0170501490589131,0.0170501490589131,-105.0002455,39.7456302,-105.0001355,39.7457581
-12829,4936,8509,0.143621366769105,0.143621366769105,-105.0001355,39.7457581,-104.9989592,39.7466802
-12831,8852,8853,0.0917176896741063,0.0917176896741063,-104.9926518,39.7567579,-104.9919124,39.7561602
-12832,8853,7564,0.105551904949528,0.105551904949528,-104.9919124,39.7561602,-104.9910557,39.7554766
-12833,7564,6182,0.105801475446669,0.105801475446669,-104.9910557,39.7554766,-104.990176,39.7548073
-12834,6182,8854,0.10583574357693,0.10583574357693,-104.990176,39.7548073,-104.9893092,39.7541277
-12835,8854,8855,0.00547189672663909,0.00547189672663909,-104.9893092,39.7541277,-104.9892657,39.7540916
-18650,1854,2593,0.177389867684494,0.177389867684494,-105.0379177,39.7213314,-105.0379231,39.7229267
-12837,8856,8857,0.0555847646631402,0.0555847646631402,-104.988892,39.7538026,-104.9884337,39.753448
-12838,8857,8858,0.0519115005666898,0.0519115005666898,-104.9884337,39.753448,-104.988003,39.7531189
-12839,8858,8636,0.0515833043565609,0.0515833043565609,-104.988003,39.7531189,-104.987575,39.7527919
-12840,8636,8859,0.0207966249820583,0.0207966249820583,-104.987575,39.7527919,-104.9873914,39.7526692
-12844,8860,1198,0.169110109980516,0.169110109980516,-104.9520697,39.7256077,-104.9520847,39.7271285
-12845,1198,8861,0.0226617213022113,0.0226617213022113,-104.9520847,39.7271285,-104.9520836,39.7273323
-12847,8862,1200,0.170240075619945,0.170240075619945,-104.9509005,39.7256047,-104.9509239,39.7271356
-12848,1200,8863,0.0219879091267488,0.0219879091267488,-104.9509239,39.7271356,-104.9509292,39.7273333
-12850,8864,7983,0.0505037947042799,0.0505037947042799,-104.9546471,39.7305018,-104.9540572,39.7305236
-12851,7983,2054,0.099824917404873,0.099824917404873,-104.9540572,39.7305236,-104.9528899,39.730517
-12852,2054,2660,0.101497408945607,0.101497408945607,-104.9528899,39.730517,-104.9517031,39.7305282
-12853,2660,4133,0.0961563998269834,0.0961563998269834,-104.9517031,39.7305282,-104.9505787,39.7305216
-12855,6696,8019,0.0939673290333738,0.0939673290333738,-104.9494801,39.7305216,-104.9483814,39.7305084
-12856,8019,7683,0.0941529054095407,0.0941529054095407,-104.9483814,39.7305084,-104.9472804,39.7305107
-12857,7683,3457,0.0935091254143676,0.0935091254143676,-104.9472804,39.7305107,-104.946187,39.7305008
-12858,3457,8865,0.0461569199164165,0.0461569199164165,-104.946187,39.7305008,-104.9456473,39.7304952
-12859,8865,6019,0.0480340625550536,0.0480340625550536,-104.9456473,39.7304952,-104.9450856,39.7304952
-12860,6019,8866,0.0464697146879775,0.0464697146879775,-104.9450856,39.7304952,-104.9445422,39.7304973
-12861,8866,8867,0.048094543326443,0.048094543326443,-104.9445422,39.7304973,-104.9439798,39.7304995
-12862,8867,8868,0.0461790217746061,0.0461790217746061,-104.9439798,39.7304995,-104.9434398,39.7304973
-12863,8868,856,0.0449646613539359,0.0449646613539359,-104.9434398,39.7304973,-104.942914,39.7304952
-12864,856,451,0.0470078764226648,0.0470078764226648,-104.942914,39.7304952,-104.9423643,39.7304952
-12865,451,7105,0.0432708485882178,0.0432708485882178,-104.9423643,39.7304952,-104.9418583,39.7304952
-12866,7105,8869,0.0939007256947679,0.0939007256947679,-104.9418583,39.7304952,-104.9407607,39.7304709
-12868,8870,1196,0.168829878028139,0.168829878028139,-104.9532283,39.7256124,-104.9532393,39.7271307
-12869,1196,8871,0.021661446985008,0.021661446985008,-104.9532393,39.7271307,-104.9532413,39.7273255
-12871,4760,5407,0.0842978699895538,0.0842978699895538,-104.966261,39.7219977,-104.9658146,39.7226736
-12873,4755,6546,0.199683159238461,0.199683159238461,-104.9682436,39.7219606,-104.9682779,39.7237562
-12874,6546,8872,0.20436535055464,0.20436535055464,-104.9682779,39.7237562,-104.9682812,39.7255941
-12875,8872,8873,0.188956325706579,0.188956325706579,-104.9682812,39.7255941,-104.9682932,39.7272934
-12876,8873,3792,0.199291485976659,0.199291485976659,-104.9682932,39.7272934,-104.968314,39.7290856
-17796,10179,9318,0.114755253361823,0.114755253361823,-104.9873946,39.7555556,-104.9873865,39.7545236
-12877,3792,8561,0.13059037096191,0.13059037096191,-104.968314,39.7290856,-104.9673609,39.7300032
-12879,5926,924,0.178374370928188,0.178374370928188,-104.9809932,39.730424,-104.9810307,39.7320279
-12880,924,2210,0.187308783265319,0.187308783265319,-104.9810307,39.7320279,-104.9810238,39.7337124
-12881,2210,4859,0.159743099068053,0.159743099068053,-104.9810238,39.7337124,-104.9810463,39.7351489
-12882,4859,8874,0.192629276936053,0.192629276936053,-104.9810463,39.7351489,-104.9810766,39.7368811
-12883,8874,5461,0.172330101173688,0.172330101173688,-104.9810766,39.7368811,-104.9810735,39.7384309
-12884,5461,8875,0.177416584260724,0.177416584260724,-104.9810735,39.7384309,-104.9810892,39.7400264
-12885,8875,8876,0.176433616828762,0.176433616828762,-104.9810892,39.7400264,-104.9810837,39.7416131
-12887,655,8877,0.00413648661723727,0.00413648661723727,-104.9810836,39.7416667,-104.9810838,39.7417039
-12888,8877,8878,0.173943602457692,0.173943602457692,-104.9810838,39.7417039,-104.9810919,39.7432682
-12889,8878,4613,0.177428437243737,0.177428437243737,-104.9810919,39.7432682,-104.981055,39.7448636
-12890,4613,6487,0.148280300321704,0.148280300321704,-104.981055,39.7448636,-104.9810463,39.7461971
-12891,6487,3678,0.149828166583799,0.149828166583799,-104.9810463,39.7461971,-104.9810333,39.7475445
-12893,5929,926,0.177267011666895,0.177267011666895,-104.9798324,39.7304351,-104.9798307,39.7320293
-12894,926,2211,0.187019197552967,0.187019197552967,-104.9798307,39.7320293,-104.9798259,39.7337112
-12895,2211,4861,0.161667462022208,0.161667462022208,-104.9798259,39.7337112,-104.9798492,39.735165
-12896,4861,8880,0.191414125057248,0.191414125057248,-104.9798492,39.735165,-104.9798621,39.7368864
-12897,8880,5463,0.170299846109482,0.170299846109482,-104.9798621,39.7368864,-104.9798976,39.7384177
-12898,5463,8881,0.177990586801656,0.177990586801656,-104.9798976,39.7384177,-104.9798911,39.7400184
-12899,8881,8885,0.177780189019753,0.177780189019753,-104.9798911,39.7400184,-104.9798819,39.7416172
-12900,8885,659,0.00646246375156384,0.00646246375156384,-104.9798819,39.7416172,-104.979874,39.741675
-12901,659,8886,0.177011471342036,0.177011471342036,-104.979874,39.741675,-104.9798704,39.7432669
-12902,8886,4612,0.177005843155015,0.177005843155015,-104.9798704,39.7432669,-104.9798537,39.7448587
-12903,4612,6488,0.148001366258512,0.148001366258512,-104.9798537,39.7448587,-104.9798598,39.7461897
-12904,6488,3676,0.150380555650091,0.150380555650091,-104.9798598,39.7461897,-104.9798645,39.7475421
-12906,1621,8061,0.152748999526467,0.152748999526467,-104.9888599,39.7290834,-104.9888552,39.7304571
-12907,8061,6583,0.177490187745079,0.177490187745079,-104.9888552,39.7304571,-104.9888311,39.7320532
-12908,6583,5365,0.198863610387104,0.198863610387104,-104.9888311,39.7320532,-104.988843,39.7338416
-12909,5365,7123,0.157919035747255,0.157919035747255,-104.988843,39.7338416,-104.9888432,39.7352618
-12911,8092,8887,0.220134314041521,0.220134314041521,-104.9877223,39.7268463,-104.9858598,39.7254798
-12913,8887,8888,0.191841135190913,0.191841135190913,-104.9858598,39.7254798,-104.984536,39.724087
-12914,8888,967,0.0966749413586244,0.0966749413586244,-104.984536,39.724087,-104.9838014,39.7234262
-12916,5281,4980,0.256490434532314,0.256490434532314,-104.982597,39.7225939,-104.9802767,39.7211325
-12917,4980,4148,0.0387618071437701,0.0387618071437701,-104.9802767,39.7211325,-104.9799133,39.7209242
-12918,4148,8125,0.0859291558348279,0.0859291558348279,-104.9799133,39.7209242,-104.9791138,39.7204562
-12919,8125,2368,0.179404398665568,0.179404398665568,-104.9791138,39.7204562,-104.9775163,39.7194106
-12920,2368,996,0.270881468937897,0.270881468937897,-104.9775163,39.7194106,-104.9745895,39.7184798
-12921,996,2914,0.0678890736084051,0.0678890736084051,-104.9745895,39.7184798,-104.9738264,39.7183118
-12922,2914,2917,0.0548386478267142,0.0548386478267142,-104.9738264,39.7183118,-104.9732076,39.7181827
-12927,8894,8895,0.135035418511701,0.135035418511701,-105.0072481,39.7422069,-105.00609,39.7413812
-12929,8896,3167,0.11730986547504,0.11730986547504,-105.0048016,39.7429839,-105.00401,39.7438456
-12932,8898,8899,0.10458723954588,0.10458723954588,-105.0038366,39.7434181,-105.0050563,39.7433465
-12971,8901,8709,0.120698197647431,0.120698197647431,-105.0035419,39.745319,-105.0028925,39.7443552
-12978,8902,8903,0.00973401952734473,0.00973401952734473,-105.0104246,39.7573245,-105.0105064,39.7573854
-12979,8903,7902,0.144472845078957,0.144472845078957,-105.0105064,39.7573854,-105.0116934,39.7583103
-12980,7902,1225,0.0118169371778595,0.0118169371778595,-105.0116934,39.7583103,-105.0118006,39.7583774
-12982,8904,8902,0.0775029978833242,0.0775029978833242,-105.0097742,39.7568389,-105.0104246,39.7573245
-12984,8905,8906,0.061203121949655,0.061203121949655,-105.007434,39.7550594,-105.0079422,39.7554471
-12986,8906,8907,0.00497763084611722,0.00497763084611722,-105.0079422,39.7554471,-105.0079847,39.7554777
-12987,8907,121,0.154154812192847,0.154154812192847,-105.0079847,39.7554777,-105.0092699,39.7564502
-12988,121,8904,0.0610449885391548,0.0610449885391548,-105.0092699,39.7564502,-105.0097742,39.7568389
-12990,8325,8908,0.013157216132198,0.013157216132198,-105.0288943,39.7621125,-105.0289792,39.7622112
-12992,306,8909,0.108316294946991,0.108316294946991,-105.029097,39.762348,-105.0299448,39.763072
-12994,8328,8910,0.00899626589788406,0.00899626589788406,-105.0300154,39.7621147,-105.0300335,39.7621944
-12995,8910,8338,0.040824296618527,0.040824296618527,-105.0300335,39.7621944,-105.0300407,39.7625615
-12996,8338,6084,0.0494050923488005,0.0494050923488005,-105.0300407,39.7625615,-105.0300536,39.7630057
-12997,6084,8909,0.0118673496888767,0.0118673496888767,-105.0300536,39.7630057,-105.0299448,39.763072
-12998,8909,743,0.0430251864291126,0.0430251864291126,-105.0299448,39.763072,-105.0300547,39.7634496
-12999,743,4526,0.0484294102772242,0.0484294102772242,-105.0300547,39.7634496,-105.030062,39.7638851
-13000,4526,607,0.0194349740430761,0.0194349740430761,-105.030062,39.7638851,-105.0300516,39.7640597
-13001,607,8355,0.0344276469779443,0.0344276469779443,-105.0300516,39.7640597,-105.0300476,39.7643693
-13002,8355,3974,0.0402278696203799,0.0402278696203799,-105.0300476,39.7643693,-105.0299675,39.7647258
-13004,8911,2658,0.732133935065161,0.732133935065161,-104.9912548,39.7699266,-104.9890044,39.7762796
-13012,8915,8916,0.408272009335824,0.408272009335824,-104.9895806,39.7764348,-104.9907275,39.7728705
-13090,1914,6117,0.200190217467506,0.200190217467506,-104.972136,39.707488,-104.9721753,39.7092881
-13018,8922,8923,0.320042964228513,0.320042964228513,-104.9912716,39.7717176,-104.9942478,39.7699708
-13022,8265,8926,0.339879399665874,0.339879399665874,-104.9903119,39.7820401,-104.989367,39.779071
-13027,4265,279,0.0652387434169228,0.0652387434169228,-104.9869736,39.7783568,-104.987002,39.7789431
-13029,494,8927,0.349190481522976,0.349190481522976,-104.992407,39.7804327,-104.9887446,39.7818256
-13040,8104,8678,0.200106495095782,0.200106495095782,-104.9912065,39.7783357,-104.9912089,39.7765361
-13042,8932,8933,0.108557788789167,0.108557788789167,-104.9900544,39.7765237,-104.9887841,39.7765237
-13044,8677,8932,0.0500470435519063,0.0500470435519063,-104.99064,39.7765283,-104.9900544,39.7765237
-13046,8933,6917,0.0967430583925215,0.0967430583925215,-104.9887841,39.7765237,-104.9879258,39.777091
-13050,8936,8937,0.198244621757318,0.198244621757318,-104.9889754,39.7833371,-104.9891177,39.7851166
-13084,8956,8756,0.203550658006643,0.203550658006643,-104.9419095,39.6965915,-104.9418766,39.6947611
-13052,8938,8939,0.428260593428089,0.428260593428089,-104.988834,39.791086,-104.9895413,39.7872731
-13053,8939,8425,0.201936465504692,0.201936465504692,-104.9895413,39.7872731,-104.9895725,39.7854572
-13055,8939,8941,0.203022755730075,0.203022755730075,-104.9895413,39.7872731,-104.9897554,39.7854547
-13057,8931,8942,0.152950212219782,0.152950212219782,-104.9953405,39.768167,-104.9969401,39.7675503
-13059,8943,8931,0.0786273196751871,0.0786273196751871,-104.9945316,39.7685038,-104.9953405,39.768167
-19033,256,10159,0.12356745711476,0.12356745711476,-104.9516897,39.7797769,-104.9503671,39.7793277
-13063,8945,8946,0.104572805049419,0.104572805049419,-104.9946559,39.7678998,-104.9938162,39.7672158
-13067,8949,432,0.545131832456565,0.545131832456565,-104.9945174,39.7681578,-104.9902144,39.7717766
-13068,432,8950,0.686001065667251,0.686001065667251,-104.9902144,39.7717766,-104.9892186,39.7778983
-13070,8951,8949,0.0797207044078447,0.0797207044078447,-104.9953492,39.7678334,-104.9945174,39.7681578
-13074,8952,8953,0.195031053860659,0.195031053860659,-104.9945443,39.7680713,-104.9925416,39.768912
-13076,99,3503,0.199966819322067,0.199966819322067,-104.9430615,39.7001973,-104.943078,39.698399
-13077,3503,8954,0.201518791118212,0.201518791118212,-104.943078,39.698399,-104.943035,39.696587
-13078,8954,8755,0.203764704692679,0.203764704692679,-104.943035,39.696587,-104.9430353,39.6947545
-13079,8755,7193,0.202942329745549,0.202942329745549,-104.9430353,39.6947545,-104.9430302,39.6929294
-13080,7193,7746,0.401362186865274,0.401362186865274,-104.9430302,39.6929294,-104.943009,39.6893199
-13081,7746,8955,0.585986287872625,0.585986287872625,-104.943009,39.6893199,-104.9430138,39.68405
-13082,101,3504,0.19989908085758,0.19989908085758,-104.9418857,39.7001887,-104.9419144,39.6983911
-13083,3504,8956,0.200106829133291,0.200106829133291,-104.9419144,39.6983911,-104.9419095,39.6965915
-13085,8756,7194,0.202942348322105,0.202942348322105,-104.9418766,39.6947611,-104.9418714,39.692936
-13087,1087,8957,0.00893112007684357,0.00893112007684357,-104.9724071,39.7074855,-104.9724094,39.7074052
-13088,8957,1082,0.038563824899443,0.038563824899443,-104.9724094,39.7074052,-104.9724743,39.707062
-13091,6117,3204,0.200871492111254,0.200871492111254,-104.9721753,39.7092881,-104.9721975,39.7110945
-13092,3204,3094,0.202111971416858,0.202111971416858,-104.9721975,39.7110945,-104.9721825,39.7129121
-13093,3094,1749,0.143511782143127,0.143511782143127,-104.9721825,39.7129121,-104.9721944,39.7142027
-13096,8925,8917,0.011822810789309,0.011822810789309,-104.9949053,39.7699691,-104.9949225,39.7698636
-13098,8959,602,0.0536722144567161,0.0536722144567161,-104.9949911,39.7695799,-104.9952229,39.7691313
-13099,602,8962,0.0387695912622113,0.0387695912622113,-104.9952229,39.7691313,-104.9951474,39.7687875
-13100,8962,8948,0.175808350127672,0.175808350127672,-104.9951474,39.7687875,-104.9949826,39.7672115
-13101,8948,428,0.00954052470619231,0.00954052470619231,-104.9949826,39.7672115,-104.9949826,39.7671257
-13102,428,7933,0.160696268160677,0.160696268160677,-104.9949826,39.7671257,-104.9950255,39.7656809
-13104,8918,8924,0.012486102804665,0.012486102804665,-104.9947937,39.769857,-104.9947852,39.7699691
-13105,8924,2420,0.0580706601904793,0.0580706601904793,-104.9947852,39.7699691,-104.9948281,39.7704903
-13108,8964,8965,0.125224497044451,0.125224497044451,-104.9950202,39.7634385,-104.9949826,39.7623127
-13110,8965,2192,0.356365737888712,0.356365737888712,-104.9949826,39.7623127,-104.9937863,39.7592426
-13135,4848,1531,0.0955193854848385,0.0955193854848385,-104.9915939,39.7606983,-104.9909332,39.7613911
-13111,2192,1611,0.254354724276405,0.254354724276405,-104.9937863,39.7592426,-104.9928744,39.7570652
-13112,1611,8852,0.0391111849621532,0.0391111849621532,-104.9928744,39.7570652,-104.9926518,39.7567579
-13114,8966,7934,0.183569029359489,0.183569029359489,-104.9948109,39.7640317,-104.9948315,39.7656825
-13116,2045,8967,0.0657780447895409,0.0657780447895409,-104.984465,39.7671944,-104.9850034,39.7676171
-13119,1742,5213,0.229560371023495,0.229560371023495,-104.9851236,39.7677094,-104.9870231,39.769169
-13120,5213,640,0.0648517231107158,0.0648517231107158,-104.9870231,39.769169,-104.9875489,39.7695895
-14585,9392,2833,0.210508246764738,0.210508246764738,-105.0252309,39.782151,-105.0252481,39.7802579
-13122,7933,8963,0.200908071446329,0.200908071446329,-104.9950255,39.7656809,-104.9950178,39.7638741
-13124,7934,8969,0.0906737639231845,0.0906737639231845,-104.9948315,39.7656825,-104.9948199,39.7664979
-13125,8969,429,0.0698124130115735,0.0698124130115735,-104.9948199,39.7664979,-104.9948109,39.7671257
-13126,429,8947,0.0102744112219317,0.0102744112219317,-104.9948109,39.7671257,-104.9948109,39.7672181
-13127,8947,8970,0.0586653743681201,0.0586653743681201,-104.9948109,39.7672181,-104.9947845,39.7677453
-13128,8970,601,0.102766368620144,0.102766368620144,-104.9947845,39.7677453,-104.9947852,39.7686695
-13157,8989,1285,0.118339572755071,0.118339572755071,-105.0193135,39.7576062,-105.0205433,39.7580949
-13129,601,8973,0.0999362244261846,0.0999362244261846,-104.9947852,39.7686695,-104.9948538,39.7695667
-13130,8973,8918,0.0326860113699392,0.0326860113699392,-104.9948538,39.7695667,-104.9947937,39.769857
-13132,2193,8237,0.11471912407663,0.11471912407663,-104.9954278,39.7578265,-104.9963555,39.757081
-13133,8237,8974,0.0761048371438857,0.0761048371438857,-104.9963555,39.757081,-104.9970707,39.7566734
-13443,9077,4179,0.169049790102584,0.169049790102584,-104.9941038,39.7044276,-104.9951206,39.7057312
-13137,8974,4844,0.0408566656014099,0.0408566656014099,-104.9970707,39.7566734,-104.9974984,39.7565094
-13139,8975,8915,0.161267451240187,0.161267451240187,-104.9895886,39.7778851,-104.9895806,39.7764348
-13164,8976,8977,0.00802909585520281,0.00802909585520281,-105.0250886,39.760233,-105.0251674,39.7602723
-13140,8915,8979,0.511309857046827,0.511309857046827,-104.9895806,39.7764348,-104.9905824,39.7719014
-13142,8950,8980,0.295444981113679,0.295444981113679,-104.9892186,39.7778983,-104.9891666,39.780555
-13144,8981,8982,0.155762064195337,0.155762064195337,-104.9891558,39.7819521,-104.9891588,39.7833529
-14605,9398,8233,0.0099630690934953,0.0099630690934953,-105.0252853,39.7620928,-105.0252854,39.7620032
-13146,8983,8984,0.153794064127447,0.153794064127447,-104.9895187,39.7819231,-104.9895148,39.78054
-13148,8985,8986,0.0143228031361841,0.0143228031361841,-105.013005,39.7555233,-105.0131588,39.7555744
-13149,8986,8496,0.0694983470285585,0.0694983470285585,-105.0131588,39.7555744,-105.013905,39.7558225
-13150,8496,398,0.120004619664384,0.120004619664384,-105.013905,39.7558225,-105.0152017,39.756236
-13151,398,8987,0.0577858842103034,0.0577858842103034,-105.0152017,39.756236,-105.01584,39.7564071
-13152,8987,637,0.099744132155093,0.099744132155093,-105.01584,39.7564071,-105.016925,39.7567371
-13153,637,6436,0.0832880379381437,0.0832880379381437,-105.016925,39.7567371,-105.0178047,39.7570591
-13154,6436,21,0.0571009168797096,0.0571009168797096,-105.0178047,39.7570591,-105.0184092,39.7572776
-13155,21,8988,0.0791847444931621,0.0791847444931621,-105.0184092,39.7572776,-105.0192467,39.7575819
-13158,1285,2962,0.0719310735484076,0.0719310735484076,-105.0205433,39.7580949,-105.0212514,39.7584444
-13159,2962,8991,0.0186493582069224,0.0186493582069224,-105.0212514,39.7584444,-105.0214364,39.7585333
-13160,8991,8992,0.187353348628226,0.187353348628226,-105.0214364,39.7585333,-105.0232439,39.7594863
-13161,8992,8351,0.0990161897507714,0.0990161897507714,-105.0232439,39.7594863,-105.024297,39.7598572
-13162,8351,8993,0.00963797122366648,0.00963797122366648,-105.024297,39.7598572,-105.0243946,39.7599006
-13163,8993,8976,0.0698946708143702,0.0698946708143702,-105.0243946,39.7599006,-105.0250886,39.760233
-13165,8977,8994,0.012930744273385,0.012930744273385,-105.0251674,39.7602723,-105.0252881,39.7603424
-13167,8451,8985,0.0708838190049254,0.0708838190049254,-105.0122583,39.7552461,-105.013005,39.7555233
-13169,2877,7692,0.030123526159425,0.030123526159425,-104.9479343,39.7849217,-104.9475818,39.7849256
-13173,8996,8143,0.201053290850133,0.201053290850133,-104.9560968,39.781931,-104.956087,39.7837391
-13174,8143,8997,0.150730663136006,0.150730663136006,-104.956087,39.7837391,-104.956286,39.785086
-13176,2794,5261,0.132082373792006,0.132082373792006,-104.9559387,39.766929,-104.9559252,39.7681168
-13178,5853,1338,0.200417735783644,0.200417735783644,-105.016828,39.7148117,-105.016828,39.7130093
-13179,1338,8998,0.206394741682614,0.206394741682614,-105.016828,39.7130093,-105.0168967,39.7111539
-13181,8998,4698,0.201909087963534,0.201909087963534,-105.0168967,39.7111539,-105.0169053,39.7093381
-13182,4698,8999,0.201909088033291,0.201909088033291,-105.0169053,39.7093381,-105.0169139,39.7075223
-13183,8999,9000,0.201186325895839,0.201186325895839,-105.0169139,39.7075223,-105.0169053,39.705713
-13184,9000,6822,0.198983321230549,0.198983321230549,-105.0169053,39.705713,-105.0169053,39.7039235
-13185,6822,770,0.132908321867952,0.132908321867952,-105.0169053,39.7039235,-105.0168881,39.7027283
-13187,1638,8999,0.102808714105755,0.102808714105755,-105.0157122,39.7075091,-105.0169139,39.7075223
-13188,8999,4216,0.0999229348013983,0.0999229348013983,-105.0169139,39.7075223,-105.0180812,39.7074893
-13189,4216,8095,0.0991443160837587,0.0991443160837587,-105.0180812,39.7074893,-105.0192399,39.7075091
-13190,8095,196,0.0991307294664674,0.0991307294664674,-105.0192399,39.7075091,-105.0203986,39.7074959
-13191,196,2925,0.0983869258474561,0.0983869258474561,-105.0203986,39.7074959,-105.0215487,39.7075025
-13193,5307,1463,0.0991311193927209,0.0991311193927209,-105.0227074,39.7075091,-105.0238662,39.7075157
-13194,1463,5437,0.103145293575034,0.103145293575034,-105.0238662,39.7075157,-105.0250692,39.7075784
-13196,1641,9000,0.10355145810147,0.10355145810147,-105.0156951,39.7057328,-105.0169053,39.705713
-13197,9000,4217,0.0998824134603326,0.0998824134603326,-105.0169053,39.705713,-105.0180726,39.7056932
-13198,4217,8096,0.0998581597847897,0.0998581597847897,-105.0180726,39.7056932,-105.0192399,39.7056932
-13199,8096,197,0.0983977211710877,0.0983977211710877,-105.0192399,39.7056932,-105.02039,39.70568
-13200,197,2926,0.0983895151379973,0.0983895151379973,-105.02039,39.70568,-105.0215401,39.7056866
-13201,2926,5308,0.0991337377550934,0.0991337377550934,-105.0215401,39.7056866,-105.0226989,39.7056932
-13202,5308,1464,0.0991224618714554,0.0991224618714554,-105.0226989,39.7056932,-105.0238576,39.7056932
-13203,1464,5440,0.103536651588581,0.103536651588581,-105.0238576,39.7056932,-105.0250679,39.7056934
-13205,201,2928,0.102050045456718,0.102050045456718,-105.0203473,39.7004104,-105.0215401,39.7004038
-13206,2928,5310,0.0991386153517731,0.0991386153517731,-105.0215401,39.7004038,-105.0226989,39.7004038
-13207,5310,1466,0.099890094841465,0.099890094841465,-105.0226989,39.7004038,-105.0238662,39.700384
-13208,1466,5445,0.102288602469368,0.102288602469368,-105.0238662,39.700384,-105.0250612,39.7004136
-13209,5445,9003,0.20221504164542,0.20221504164542,-105.0250612,39.7004136,-105.0274242,39.7003717
-13210,9003,7922,0.00954769987851559,0.00954769987851559,-105.0274242,39.7003717,-105.0275358,39.7003717
-13211,7922,4407,0.193513161405962,0.193513161405962,-105.0275358,39.7003717,-105.0297971,39.7003312
-13212,4407,9004,0.22689488985342,0.22689488985342,-105.0297971,39.7003312,-105.0324492,39.7003312
-13213,9004,4314,0.17109885981524,0.17109885981524,-105.0324492,39.7003312,-105.0344491,39.7003246
-13214,4314,4501,0.0954627697803603,0.0954627697803603,-105.0344491,39.7003246,-105.0355649,39.7003312
-13215,4501,7813,0.103538745444113,0.103538745444113,-105.0355649,39.7003312,-105.0367751,39.7003246
-13216,7813,5077,0.099141030065187,0.099141030065187,-105.0367751,39.7003246,-105.0379338,39.7003378
-13217,5077,8012,0.101361319209047,0.101361319209047,-105.0379338,39.7003378,-105.0391183,39.7003576
-13218,8012,6831,0.0984053279969797,0.0984053279969797,-105.0391183,39.7003576,-105.0402684,39.7003444
-13219,6831,6983,0.0507122349978986,0.0507122349978986,-105.0402684,39.7003444,-105.0408606,39.7003642
-13220,6983,6974,0.0492014587539049,0.0492014587539049,-105.0408606,39.7003642,-105.0414357,39.7003642
-13221,6974,7944,0.0815359432635548,0.0815359432635548,-105.0414357,39.7003642,-105.0423884,39.700384
-13222,7944,6363,0.117492028011777,0.117492028011777,-105.0423884,39.700384,-105.0437617,39.7003774
-13223,6363,6659,0.128518000967454,0.128518000967454,-105.0437617,39.7003774,-105.045239,39.700587
-13224,6659,5340,0.248378842685992,0.248378842685992,-105.045239,39.700587,-105.0481332,39.700411
-13225,5340,9007,0.436836188101395,0.436836188101395,-105.0481332,39.700411,-105.0532391,39.7004403
-13226,5447,9008,0.0954198714626642,0.0954198714626642,-105.0250598,39.6985284,-105.0261751,39.6985266
-13227,9008,5974,0.0150605452925665,0.0150605452925665,-105.0261751,39.6985266,-105.0263476,39.6984996
-13229,5443,7920,0.209496436784339,0.209496436784339,-105.0250652,39.7022173,-105.027514,39.7022198
-13230,7920,4409,0.196049081122935,0.196049081122935,-105.027514,39.7022198,-105.0298056,39.7022132
-13232,9009,4311,0.174051720567411,0.174051720567411,-105.0324149,39.7022132,-105.0344491,39.7022396
-13234,5439,7917,0.209760382857472,0.209760382857472,-105.0250705,39.7058254,-105.0275225,39.7058187
-13235,7917,4414,0.1967831025196,0.1967831025196,-105.0275225,39.7058187,-105.0298228,39.7058121
-13236,4414,9010,0.224679521512281,0.224679521512281,-105.0298228,39.7058121,-105.0324492,39.7058187
-13239,5435,9011,0.112718312199178,0.112718312199178,-105.0250719,39.7094097,-105.0263896,39.7094108
-13240,9011,7916,0.0954502097686848,0.0954502097686848,-105.0263896,39.7094108,-105.0275054,39.7094042
-13242,4418,9012,0.223944278058007,0.223944278058007,-105.0298056,39.7094174,-105.0324235,39.7094306
-13243,9012,9013,0.163728342208645,0.163728342208645,-105.0324235,39.7094306,-105.0343375,39.709424
-13244,9014,9011,0.193580953488763,0.193580953488763,-105.0263991,39.7111517,-105.0263896,39.7094108
-13272,5331,5695,0.176288296878523,0.176288296878523,-105.0362199,39.7087576,-105.0362429,39.7071723
-13246,1844,2578,0.172509377214494,0.172509377214494,-105.030046,39.7213676,-105.0300374,39.722919
-13248,6839,8008,0.0576758204139334,0.0576758204139334,-105.0396161,39.7039367,-105.0391344,39.7035738
-13250,8009,6981,0.144663680916955,0.144663680916955,-105.0391612,39.7031575,-105.040852,39.7031773
-13252,9015,6845,0.0843525238323184,0.0843525238323184,-105.043237,39.711272,-105.0432381,39.7105134
-13253,6845,4689,0.0881118827688874,0.0881118827688874,-105.0432381,39.7105134,-105.043221,39.7097211
-13254,4689,4697,0.0264412698588759,0.0264412698588759,-105.043221,39.7097211,-105.0432124,39.7094834
-13255,4697,7466,0.0631647371963507,0.0631647371963507,-105.0432124,39.7094834,-105.0431952,39.7089155
-13256,7466,9016,0.0866600751763154,0.0866600751763154,-105.0431952,39.7089155,-105.043221,39.7081364
-13257,9016,7453,0.0117533037462049,0.0117533037462049,-105.043221,39.7081364,-105.043221,39.7080307
-13258,7453,2091,0.0764142388554106,0.0764142388554106,-105.043221,39.7080307,-105.0431866,39.707344
-13259,2091,5691,0.0521281816109867,0.0521281816109867,-105.0431866,39.707344,-105.0431866,39.7068752
-13260,5691,5680,0.0375154291161679,0.0375154291161679,-105.0431866,39.7068752,-105.0432124,39.7065384
-13261,5680,6316,0.0896056080016293,0.0896056080016293,-105.0432124,39.7065384,-105.0432381,39.7057328
-13262,6316,4963,0.0888719448734625,0.0888719448734625,-105.0432381,39.7057328,-105.0432124,39.7049338
-13264,6826,5338,0.0370211552910964,0.0370211552910964,-105.0432124,39.7042603,-105.0430777,39.7039439
-13266,9016,9017,0.044781886028432,0.044781886028432,-105.043221,39.7081364,-105.0437445,39.7081364
-13267,6842,4692,0.112329114895897,0.112329114895897,-105.0373845,39.7104606,-105.0373845,39.7094504
-13268,4692,5332,0.162956489748023,0.162956489748023,-105.0373845,39.7094504,-105.0373528,39.7079851
-13270,6840,4691,0.113830246405759,0.113830246405759,-105.0362258,39.7104609,-105.0362258,39.7094372
-13271,4691,5331,0.0755697574983074,0.0755697574983074,-105.0362258,39.7094372,-105.0362199,39.7087576
-13274,5694,6319,0.174033677833605,0.174033677833605,-105.0360627,39.7071657,-105.036097,39.7056008
-13275,6319,9018,0.182109806928741,0.182109806928741,-105.036097,39.7056008,-105.0360799,39.7039631
-13277,4310,7811,0.201267372547373,0.201267372547373,-105.0344398,39.7030321,-105.0367923,39.7030519
-13278,7811,8010,0.202389778156291,0.202389778156291,-105.0367923,39.7030519,-105.039158,39.703065
-13281,7812,5076,0.100599027218817,0.100599027218817,-105.0367751,39.7021472,-105.037951,39.7021472
-13282,5076,8011,0.100623102109681,0.100623102109681,-105.037951,39.7021472,-105.0391269,39.702167
-13283,8011,6982,0.147599810375252,0.147599810375252,-105.0391269,39.702167,-105.040852,39.7021868
-13284,6982,7943,0.131458423393202,0.131458423393202,-105.040852,39.7021868,-105.0423884,39.702167
-13285,7943,3300,0.0829788157522616,0.0829788157522616,-105.0423884,39.702167,-105.0433583,39.7021604
-13286,3300,5727,0.0905493512456201,0.0905493512456201,-105.0433583,39.7021604,-105.0444167,39.7021543
-13287,5727,5339,0.0993780908642813,0.0993780908642813,-105.0444167,39.7021543,-105.0455771,39.7021954
-13289,9019,9020,0.473924441922911,0.473924441922911,-105.0334154,39.6894303,-105.0334238,39.6851682
-13290,5441,7918,0.212183518066811,0.212183518066811,-105.0250601,39.7039517,-105.0275397,39.7039962
-13291,7918,4411,0.196063540031297,0.196063540031297,-105.0275397,39.7039962,-105.0298314,39.704016
-13292,4411,9021,0.221019052884505,0.221019052884505,-105.0298314,39.704016,-105.0324149,39.7040028
-13293,9021,4282,0.176970513595043,0.176970513595043,-105.0324149,39.7040028,-105.0344834,39.703983
-13295,4326,9018,0.0881179267079727,0.0881179267079727,-105.0350499,39.7039565,-105.0360799,39.7039631
-13296,9018,7810,0.0594732573783121,0.0594732573783121,-105.0360799,39.7039631,-105.0367751,39.7039631
-13297,7810,7817,0.0279069878470498,0.0279069878470498,-105.0367751,39.7039631,-105.0371012,39.7039697
-13298,7817,5075,0.0895984878523876,0.0895984878523876,-105.0371012,39.7039697,-105.0381484,39.703983
-13299,5075,8007,0.082290456587143,0.082290456587143,-105.0381484,39.703983,-105.0391097,39.7039565
-13300,8007,6839,0.0433776365307967,0.0433776365307967,-105.0391097,39.7039565,-105.0396161,39.7039367
-13301,6839,6979,0.105025257907842,0.105025257907842,-105.0396161,39.7039367,-105.0408435,39.7039169
-14885,9012,7486,0.0983880214663299,0.0983880214663299,-105.0324235,39.7094306,-105.0324321,39.7085458
-13303,9003,4959,0.128621575011946,0.128621575011946,-105.0274242,39.7003717,-105.0274024,39.6992151
-13304,4959,9022,0.0561090389096707,0.0561090389096707,-105.0274024,39.6992151,-105.0274035,39.6987105
-13305,9022,9023,0.219664135455113,0.219664135455113,-105.0274035,39.6987105,-105.0274276,39.6967351
-13307,9024,1734,0.0339090081692689,0.0339090081692689,-105.0038894,39.6915551,-105.0039238,39.6912513
-13308,1734,9025,0.199586826055962,0.199586826055962,-105.0039238,39.6912513,-105.0039367,39.6894564
-13310,162,1723,0.148414326457229,0.148414326457229,-105.0166181,39.6931468,-105.0164379,39.6918193
-13312,164,1724,0.19589389224901,0.19589389224901,-105.0175867,39.6931453,-105.0171932,39.6914098
-13313,1724,9026,0.21539258017212,0.21539258017212,-105.0171932,39.6914098,-105.0166353,39.6895209
-13315,166,1725,0.23958811593923,0.23958811593923,-105.018536,39.693139,-105.0179828,39.6910268
-13316,1725,9027,0.172261015966003,0.172261015966003,-105.0179828,39.6910268,-105.017588,39.6895077
-13318,168,1727,0.256304305915683,0.256304305915683,-105.0194505,39.693127,-105.0194505,39.690822
-13319,1727,8081,0.0911159242290505,0.0911159242290505,-105.0194505,39.690822,-105.0194162,39.690003
-13321,9028,9029,0.0459665066705729,0.0459665066705729,-105.0112026,39.7293142,-105.0117401,39.7293113
-13323,9030,9031,0.204682511562437,0.204682511562437,-105.0266512,39.7293064,-105.0263427,39.7311318
-13324,9031,6588,0.201464690183835,0.201464690183835,-105.0263427,39.7311318,-105.0263693,39.7329435
-13325,6588,7109,0.201819605073549,0.201819605073549,-105.0263693,39.7329435,-105.0263626,39.7347585
-13326,7109,9034,0.0380490136329461,0.0380490136329461,-105.0263626,39.7347585,-105.0263528,39.7351006
-13327,9035,9036,0.202787954952135,0.202787954952135,-105.0275173,39.7293147,-105.0275272,39.7311384
-13328,9036,6589,0.200863566889439,0.200863566889439,-105.0275272,39.7311384,-105.0275196,39.7329448
-13329,6589,7110,0.201074334121883,0.201074334121883,-105.0275196,39.7329448,-105.027555,39.7347529
-13331,9037,9031,0.102130234291417,0.102130234291417,-105.0251484,39.7311316,-105.0263427,39.7311318
-13332,9031,9036,0.101294841162053,0.101294841162053,-105.0263427,39.7311318,-105.0275272,39.7311384
-13333,9036,6128,0.0961527434944637,0.0961527434944637,-105.0275272,39.7311384,-105.0286516,39.7311384
-13334,6128,3971,0.0990967592348727,0.0990967592348727,-105.0286516,39.7311384,-105.0298103,39.7311516
-13336,7017,1406,0.0990967592360877,0.0990967592360877,-105.0309776,39.7311384,-105.0321363,39.7311516
-13337,1406,7390,0.0982252697684911,0.0982252697684911,-105.0321363,39.7311516,-105.0332849,39.7311446
-13338,7390,5217,0.100064145492252,0.100064145492252,-105.0332849,39.7311446,-105.034455,39.7311372
-13340,5377,9038,0.0981767550682586,0.0981767550682586,-105.044041,39.7339173,-105.0440496,39.7330344
-13342,9041,9042,0.107883824327089,0.107883824327089,-105.0428651,39.7330461,-105.0428737,39.7340163
-13344,9043,9044,0.111762023714712,0.111762023714712,-105.040479,39.7340163,-105.0404793,39.7330112
-13346,7805,9045,0.163613143703316,0.163613143703316,-104.9768041,39.7875035,-104.9767649,39.7889746
-13347,4982,9046,0.151151791011959,0.151151791011959,-104.9800523,39.7855977,-104.9782841,39.7855581
-13348,9046,4333,0.0931833318260777,0.0931833318260777,-104.9782841,39.7855581,-104.9771941,39.7855318
-13349,4333,5039,0.084348128639754,0.084348128639754,-104.9771941,39.7855318,-104.976207,39.7855252
-13351,2869,9047,0.0643526028257267,0.0643526028257267,-104.9835884,39.7855828,-104.9835799,39.7850041
-13352,2869,5283,0.189728403936972,0.189728403936972,-104.9835884,39.7855828,-104.9834597,39.7872862
-13354,9048,6951,0.21054969022045,0.21054969022045,-104.9790788,39.7799923,-104.9786733,39.78186
-13355,6951,8084,0.110877740512572,0.110877740512572,-104.9786733,39.78186,-104.9784386,39.7828407
-13356,8084,8141,0.0381711926062465,0.0381711926062465,-104.9784386,39.7828407,-104.9783643,39.7831792
-13357,8141,5971,0.0998550766587588,0.0998550766587588,-104.9783643,39.7831792,-104.978267,39.7840741
-13358,5971,9046,0.165019740176851,0.165019740176851,-104.978267,39.7840741,-104.9782841,39.7855581
-13359,9046,7804,0.203892252907028,0.203892252907028,-104.9782841,39.7855581,-104.978267,39.7873917
-13360,7804,9049,0.488623985679594,0.488623985679594,-104.978267,39.7873917,-104.978271,39.791786
-13361,577,9048,0.0924966938169246,0.0924966938169246,-104.979193,39.7791651,-104.9790788,39.7799923
-13369,9054,1743,0.0233197702600261,0.0233197702600261,-104.9786512,39.775667,-104.9787558,39.7758607
-13370,1743,4270,0.277932467642318,0.277932467642318,-104.9787558,39.7758607,-104.9792574,39.7783303
-13371,4270,310,0.0394728122356983,0.0394728122356983,-104.9792574,39.7783303,-104.9792332,39.7786848
-13372,310,577,0.0535172942987349,0.0535172942987349,-104.9792332,39.7786848,-104.979193,39.7791651
-13374,9055,9056,0.0694449359265994,0.0694449359265994,-104.9728754,39.7708776,-104.9734488,39.7704351
-13375,9056,2325,0.190938968451781,0.190938968451781,-104.9734488,39.7704351,-104.9750376,39.7692279
-13376,2325,4279,0.147346976573119,0.147346976573119,-104.9750376,39.7692279,-104.9762513,39.7682868
-13378,4286,9055,0.0222915391297905,0.0222915391297905,-104.972693,39.7710209,-104.9728754,39.7708776
-13380,1349,1615,0.0587612563553368,0.0587612563553368,-104.9740676,39.7719084,-104.9745571,39.7722795
-13381,1615,7135,0.106001129731548,0.106001129731548,-104.9745571,39.7722795,-104.9754213,39.7729633
-13383,5260,9057,0.107843300513683,0.107843300513683,-104.9589552,39.7681242,-104.958998,39.7690935
-13384,6952,9058,0.0875153511963366,0.0875153511963366,-104.9777379,39.7804804,-104.9767938,39.7801754
-13386,9058,5767,0.0813716345984657,0.0813716345984657,-104.9767938,39.7801754,-104.9758538,39.7800585
-13387,5767,312,0.370850163813996,0.370850163813996,-104.9758538,39.7800585,-104.971535,39.780386
-13390,9048,9052,0.36535949731556,0.36535949731556,-104.9790788,39.7799923,-104.9833542,39.7800156
-13394,9060,8966,0.196473660543131,0.196473660543131,-104.9947546,39.7622653,-104.9948109,39.7640317
-13396,9061,5080,0.358471972755657,0.358471972755657,-104.9981155,39.7670982,-105.001279,39.7649816
-13397,5080,9062,0.674602285535072,0.674602285535072,-105.001279,39.7649816,-105.0060948,39.7601751
-13398,9062,3176,0.289568864041751,0.289568864041751,-105.0060948,39.7601751,-105.0085577,39.7583871
-13399,3176,527,0.133561854308294,0.133561854308294,-105.0085577,39.7583871,-105.009688,39.7575578
-18560,10318,10319,0.255397297870644,0.255397297870644,-105.0297002,39.7834301,-105.0275696,39.7818193
-13400,527,343,0.340886700679976,0.340886700679976,-105.009688,39.7575578,-105.0125925,39.7554572
-13401,343,537,0.428322489908352,0.428322489908352,-105.0125925,39.7554572,-105.0159762,39.7526163
-13402,537,474,0.822980283733396,0.822980283733396,-105.0159762,39.7526163,-105.0180056,39.7453814
-13403,474,8438,0.152037422281902,0.152037422281902,-105.0180056,39.7453814,-105.0171026,39.7442035
-13407,4427,9063,0.114941491865609,0.114941491865609,-104.9981322,39.7667419,-104.9969297,39.7672047
-13409,9063,8912,0.118971180199303,0.118971180199303,-104.9969297,39.7672047,-104.9956858,39.7676849
-13413,8236,125,0.0903470808346396,0.0903470808346396,-105.0034855,39.7597433,-105.0040777,39.7604163
-13415,9065,9066,0.0810250214751567,0.0810250214751567,-105.0037267,39.7605614,-105.0029207,39.7601779
-13417,9066,7279,0.116655009841785,0.116655009841785,-105.0029207,39.7601779,-105.0017875,39.7595933
-13419,276,9067,0.0692041764264314,0.0692041764264314,-105.0179907,39.7399138,-105.0172314,39.7396983
-13500,9108,9109,0.0476133357747153,0.0476133357747153,-105.0059283,39.7256613,-105.0053716,39.7256561
-13421,9067,2189,0.114532021981465,0.114532021981465,-105.0172314,39.7396983,-105.0159036,39.7398341
-13423,9068,4553,0.327000385366346,0.327000385366346,-105.017924,39.736752,-105.021729,39.7364576
-13425,8428,9069,0.0507531626876375,0.0507531626876375,-105.0172942,39.7368917,-105.0178645,39.7367652
-13426,9069,9068,0.00529520129182755,0.00529520129182755,-105.0178645,39.7367652,-105.017924,39.736752
-13428,9070,9071,0.0606488327577038,0.0606488327577038,-105.0164101,39.7293208,-105.0171193,39.7293222
-13430,9071,9072,0.009176031077042,0.009176031077042,-105.0171193,39.7293222,-105.0172266,39.7293225
-13431,9072,4642,0.175105976981708,0.175105976981708,-105.0172266,39.7293225,-105.0192742,39.7293289
-13432,4642,7954,0.0487370399178714,0.0487370399178714,-105.0192742,39.7293289,-105.0198441,39.7293262
-13433,7954,4547,0.158995972178669,0.158995972178669,-105.0198441,39.7293262,-105.0217032,39.7293091
-13434,4547,9073,0.292416775735491,0.292416775735491,-105.0217032,39.7293091,-105.0251226,39.7293097
-13436,9074,9075,0.0675438073285673,0.0675438073285673,-104.9985883,39.7111864,-104.9993779,39.7111909
-13438,9075,409,0.0146789910973018,0.0146789910973018,-104.9993779,39.7111909,-104.9995495,39.7111919
-13439,409,9076,0.0166512433271008,0.0166512433271008,-104.9995495,39.7111919,-104.999744,39.711198
-13441,4838,326,0.0588523383992881,0.0588523383992881,-104.9964173,39.7083799,-104.9969556,39.7087095
-13449,9081,9082,0.443932946896766,0.443932946896766,-105.0008195,39.7257692,-105.0060104,39.7257674
-13451,1401,9083,0.0611691476045831,0.0611691476045831,-105.0324911,39.7252609,-105.0324948,39.725811
-13453,9083,6208,0.0330698135159164,0.0330698135159164,-105.0324948,39.725811,-105.0324968,39.7261084
-13454,6208,7645,0.178373846931983,0.178373846931983,-105.0324968,39.7261084,-105.032514,39.7277125
-13455,7645,9086,0.177258150455768,0.177258150455768,-105.032514,39.7277125,-105.0325034,39.7293066
-13498,9107,3956,0.0601050509878674,0.0601050509878674,-105.0008408,39.7256368,-105.0001441,39.7257079
-13457,9087,9088,1.73315945419765,1.73315945419765,-105.0529649,39.72565,-105.0327002,39.7254916
-13458,9088,410,0.265082533171925,0.265082533171925,-105.0327002,39.7254916,-105.0296018,39.7254255
-13459,410,9080,0.715047499183354,0.715047499183354,-105.0296018,39.7254255,-105.0212418,39.7253265
-13460,9080,9089,0.194455760903183,0.194455760903183,-105.0212418,39.7253265,-105.0189759,39.7251813
-13462,9089,9090,0.0550554662137945,0.0550554662137945,-105.0189759,39.7251813,-105.0183322,39.7251879
-13464,9091,9092,0.473459458640042,0.473459458640042,-105.0189899,39.7253071,-105.0245174,39.7255447
-13475,9098,9032,0.307889980671666,0.307889980671666,-105.0162316,39.725012,-105.0131311,39.7236048
-13479,9090,9099,0.0142223937707519,0.0142223937707519,-105.0183322,39.7251879,-105.0181659,39.7251883
-13481,9100,9093,0.193628424072927,0.193628424072927,-105.0161161,39.7254559,-105.0183719,39.7253071
-13483,9101,9100,0.0626625130905001,0.0626625130905001,-105.0153857,39.7255006,-105.0161161,39.7254559
-13487,9103,346,0.140681499904037,0.140681499904037,-105.0065187,39.725789,-105.0077031,39.726667
-13522,9037,8064,0.00660497864323473,0.00660497864323473,-105.0251484,39.7311316,-105.0251484,39.731191
-13489,3955,9081,0.113309674251049,0.113309674251049,-105.0001889,39.7266654,-105.0008195,39.7257692
-13491,6240,5091,0.078819968233945,0.078819968233945,-104.9908905,39.7256604,-104.9908359,39.7249528
-13493,9082,9103,0.0435368095566408,0.0435368095566408,-105.0060104,39.7257674,-105.0065187,39.725789
-13494,9103,347,0.193850840943334,0.193850840943334,-105.0065187,39.725789,-105.0087846,39.7258352
-13495,347,404,0.026466812116417,0.026466812116417,-105.0087846,39.7258352,-105.0090936,39.725822
-13496,404,9106,0.11755875033606,0.11755875033606,-105.0090936,39.725822,-105.0104669,39.7257758
-13501,9109,9107,0.387486870322022,0.387486870322022,-105.0053716,39.7256561,-105.0008408,39.7256368
-13503,6204,9110,0.181291651373991,0.181291651373991,-105.0090242,39.7253711,-105.0069105,39.725495
-13505,9111,9112,0.0153902940291749,0.0153902940291749,-105.0136091,39.7256283,-105.0137882,39.7256148
-13506,9112,9101,0.137209683962048,0.137209683962048,-105.0137882,39.7256148,-105.0153857,39.7255006
-13508,9113,9111,0.075192531928865,0.075192531928865,-105.0127328,39.7256834,-105.0136091,39.7256283
-15014,455,860,0.0461629164957839,0.0461629164957839,-104.9423505,39.7367494,-104.9428903,39.736756
-13510,9114,9115,0.148585418330877,0.148585418330877,-105.0128101,39.7255315,-105.0110763,39.7256175
-13514,8582,9116,0.0682625654668292,0.0682625654668292,-105.0251054,39.7252038,-105.0251054,39.7258177
-13516,9116,237,0.0139438438014188,0.0139438438014188,-105.0251054,39.7258177,-105.0251054,39.7259431
-13517,237,7635,0.17396601741799,0.17396601741799,-105.0251054,39.7259431,-105.025114,39.7275076
-13519,7602,9073,0.102023996019348,0.102023996019348,-105.025114,39.7283922,-105.0251226,39.7293097
-13521,117,9037,0.091769841511351,0.091769841511351,-105.0251312,39.7303064,-105.0251484,39.7311316
-13523,8064,6587,0.198394254239174,0.198394254239174,-105.0251484,39.731191,-105.0251522,39.7329752
-13524,6587,5384,0.100320867880051,0.100320867880051,-105.0251522,39.7329752,-105.0251569,39.7338774
-13525,5384,7108,0.0976180261019357,0.0976180261019357,-105.0251569,39.7338774,-105.0251569,39.7347553
-13526,7108,2293,0.101160557994969,0.101160557994969,-105.0251569,39.7347553,-105.025179,39.7356649
-13527,2293,9117,0.0816968455207608,0.0816968455207608,-105.025179,39.7356649,-105.0252112,39.7363992
-13583,9134,9079,0.189350301331036,0.189350301331036,-104.9951647,39.7043993,-104.9930943,39.7037972
-13533,9118,6217,0.00293554606374767,0.00293554606374767,-105.0394723,39.7257622,-105.0394723,39.7257886
-13534,6217,7652,0.27452915439238,0.27452915439238,-105.0394723,39.7257886,-105.0394723,39.7282575
-13535,7652,8071,0.262369838158816,0.262369838158816,-105.0394723,39.7282575,-105.039492,39.730617
-13536,8071,9119,0.0614463164636613,0.0614463164636613,-105.039492,39.730617,-105.039492,39.7311696
-13538,9118,7768,0.0286215741177868,0.0286215741177868,-105.0394723,39.7257622,-105.0394723,39.7255048
-13540,9121,9122,0.0549317968438626,0.0549317968438626,-105.022529,39.7237852,-105.0222205,39.7242185
-13541,9122,9080,0.148946547669597,0.148946547669597,-105.0222205,39.7242185,-105.0212418,39.7253265
-13543,9121,4555,0.0367880997749164,0.0367880997749164,-105.022529,39.7237852,-105.0221186,39.7238843
-13545,216,9123,0.047880969118268,0.047880969118268,-105.0105654,39.7229262,-105.0109606,39.7232312
-13547,9123,447,0.333206339887537,0.333206339887537,-105.0109606,39.7232312,-105.0132294,39.7256673
-13549,2999,9124,0.314861669735557,0.314861669735557,-105.0136746,39.7263954,-105.0147476,39.7291041
-13554,579,408,0.862576839598051,0.862576839598051,-105.0080855,39.7206863,-105.0014039,39.7148758
-13568,9128,9129,0.16941277010836,0.16941277010836,-105.0149225,39.7295801,-105.0154242,39.731054
-13570,9124,9128,0.0550015048734635,0.0550015048734635,-105.0147476,39.7291041,-105.0149225,39.7295801
-13578,9132,220,0.766585324287615,0.766585324287615,-104.9861015,39.7001338,-104.9801989,39.6949471
-13615,7609,7262,0.111890561964914,0.111890561964914,-104.9383356,39.7292297,-104.9370272,39.7292302
-13579,220,566,0.637748069235424,0.637748069235424,-104.9801989,39.6949471,-104.9751917,39.6906986
-13587,9136,9137,0.450871833260349,0.450871833260349,-104.9910031,39.7032246,-104.9868714,39.7007074
-13590,8684,222,0.184496371824925,0.184496371824925,-104.9859386,39.700249,-104.9874359,39.7014431
-13591,222,9140,0.487607813488587,0.487607813488587,-104.9874359,39.7014431,-104.9922255,39.7038202
-13593,9140,9077,0.174302500151122,0.174302500151122,-104.9922255,39.7038202,-104.9941038,39.7044276
-13594,9077,9141,0.280690469581891,0.280690469581891,-104.9941038,39.7044276,-104.9960053,39.7064848
-13596,9142,118,0.0916021886608042,0.0916021886608042,-105.0111993,39.7293642,-105.0112228,39.7301878
-13597,118,6721,0.0966297992771619,0.0966297992771619,-105.0112228,39.7301878,-105.0112289,39.7310568
-13598,6721,6722,0.0414535753801991,0.0414535753801991,-105.0112289,39.7310568,-105.0112278,39.7314296
-13599,6722,2311,0.00867549185460531,0.00867549185460531,-105.0112278,39.7314296,-105.0112958,39.7314875
-13601,6580,6723,0.0197325066377101,0.0197325066377101,-105.0113223,39.732461,-105.0113508,39.7326371
-13603,9029,1240,0.0358410792262526,0.0358410792262526,-105.0117401,39.7293113,-105.0121592,39.729309
-13604,1240,4790,0.0578956777475445,0.0578956777475445,-105.0121592,39.729309,-105.0128361,39.7293183
-13605,4790,4814,0.0309664941935945,0.0309664941935945,-105.0128361,39.7293183,-105.0131982,39.7293163
-13606,4814,2156,0.0660634330770184,0.0660634330770184,-105.0131982,39.7293163,-105.0139707,39.7293204
-13607,2156,2166,0.00298513757197415,0.00298513757197415,-105.0139707,39.7293204,-105.0140055,39.7293183
-13608,2166,2183,0.165657322423627,0.165657322423627,-105.0140055,39.7293183,-105.0159426,39.7293103
-13609,2183,9070,0.039996230308656,0.039996230308656,-105.0159426,39.7293103,-105.0164101,39.7293208
-13611,3728,9143,0.0374422730466023,0.0374422730466023,-105.0028395,39.7289078,-105.0032713,39.7288521
-13613,3765,8150,0.099678431004031,0.099678431004031,-104.9406029,39.7291831,-104.9394389,39.72923
-13614,8150,7609,0.0943510009713305,0.0943510009713305,-104.9394389,39.72923,-104.9383356,39.7292297
-13616,7262,7595,0.0635463262031531,0.0635463262031531,-104.9370272,39.7292302,-104.9362843,39.7292429
-13617,7595,7599,0.0220206440979588,0.0220206440979588,-104.9362843,39.7292429,-104.9360268,39.7292429
-13618,7599,9144,0.0741982381570415,0.0741982381570415,-104.9360268,39.7292429,-104.9351592,39.7292363
-15078,7589,3366,0.105686563985576,0.105686563985576,-104.9356129,39.7656394,-104.9343764,39.7656425
-13619,9144,2022,0.0197545563564228,0.0197545563564228,-104.9351592,39.7292363,-104.9349282,39.7292369
-13620,2022,9147,0.0829434723735258,0.0829434723735258,-104.9349282,39.7292369,-104.9339583,39.7292394
-13621,9147,3355,0.0108199721778022,0.0108199721778022,-104.9339583,39.7292394,-104.9338318,39.7292375
-13623,9148,2768,0.0035576669192827,0.0035576669192827,-104.9327781,39.7292306,-104.9327365,39.7292303
-13624,2768,7013,0.0948918648713715,0.0948918648713715,-104.9327365,39.7292303,-104.9316269,39.729236
-13626,2274,8214,0.00623184642483798,0.00623184642483798,-104.9305243,39.7292319,-104.9304515,39.7292344
-13627,8214,9149,0.0892902468185094,0.0892902468185094,-104.9304515,39.7292344,-104.9294074,39.7292396
-13628,9149,8211,0.0144047767787734,0.0144047767787734,-104.9294074,39.7292396,-104.9292411,39.7292602
-13629,8211,7521,0.0807484203861095,0.0807484203861095,-104.9292411,39.7292602,-104.928297,39.7292478
-13630,7521,7522,0.0178959760293508,0.0178959760293508,-104.928297,39.7292478,-104.9280878,39.7292519
-13631,7522,2132,0.0761585237127413,0.0761585237127413,-104.9280878,39.7292519,-104.9271973,39.7292602
-13632,2132,2117,0.0261874332320613,0.0261874332320613,-104.9271973,39.7292602,-104.9268915,39.7292726
-13633,2117,5982,0.0706516490311829,0.0706516490311829,-104.9268915,39.7292726,-104.9260654,39.7292643
-13634,5982,5987,0.0312102623276897,0.0312102623276897,-104.9260654,39.7292643,-104.9257006,39.7292726
-13635,5987,5148,0.0542024830967572,0.0542024830967572,-104.9257006,39.7292726,-104.9250676,39.7292478
-13636,5148,7678,0.00643849229968441,0.00643849229968441,-104.9250676,39.7292478,-104.9249925,39.7292437
-13637,7678,9150,0.0270552275766841,0.0270552275766841,-104.9249925,39.7292437,-104.9246762,39.7292385
-13638,9150,5159,0.0130471422397109,0.0130471422397109,-104.9246762,39.7292385,-104.9245238,39.729244
-13639,5159,2336,0.0550815403379387,0.0550815403379387,-104.9245238,39.729244,-104.9238797,39.729244
-17797,9318,9592,0.0276370219250994,0.0276370219250994,-104.9873865,39.7545236,-104.9873927,39.7542751
-15154,9503,7694,0.0985863309924877,0.0985863309924877,-104.9464272,39.7874239,-104.947581,39.7874249
-13640,2336,9151,2.70099171821299,2.70099171821299,-104.9238797,39.729244,-104.8923175,39.7283409
-15853,9736,5597,0.026161521554181,0.026161521554181,-105.0435838,39.731177,-105.0438865,39.7312111
-13642,327,390,0.428713460971309,0.428713460971309,-104.9987289,39.7109039,-105.0008375,39.7144016
-13643,390,216,1.2612581668138,1.2612581668138,-105.0008375,39.7144016,-105.0105654,39.7229262
-13647,4841,9156,0.020245918680072,0.020245918680072,-104.995653,39.7037978,-104.9956359,39.7036162
-13653,9127,4841,0.714489743272739,0.714489743272739,-104.9983536,39.7098782,-104.995653,39.7037978
-13655,9160,9161,0.0611231237623731,0.0611231237623731,-104.9994442,39.6890552,-105.0001383,39.6891851
-13657,9161,9162,0.0094906074947222,0.0094906074947222,-105.0001383,39.6891851,-105.000246,39.6892055
-13658,9162,360,0.119259910634054,0.119259910634054,-105.000246,39.6892055,-105.0016107,39.6894234
-13659,360,4441,0.0977181725107,0.0977181725107,-105.0016107,39.6894234,-105.0027522,39.6894498
-13660,4441,9025,0.101356058092401,0.101356058092401,-105.0027522,39.6894498,-105.0039367,39.6894564
-13661,9025,361,0.102083424277621,0.102083424277621,-105.0039367,39.6894564,-105.0051297,39.6894631
-13662,361,6661,0.148732998262686,0.148732998262686,-105.0051297,39.6894631,-105.0068679,39.6894571
-13663,6661,1457,0.0814814185857237,0.0814814185857237,-105.0068679,39.6894571,-105.0078201,39.6894653
-13664,1457,6930,0.0803380398809936,0.0803380398809936,-105.0078201,39.6894653,-105.0087589,39.6894757
-13665,6930,9163,0.0870015008277124,0.0870015008277124,-105.0087589,39.6894757,-105.0097755,39.6894901
-13666,9163,3826,0.0559780942251715,0.0559780942251715,-105.0097755,39.6894901,-105.0104297,39.6894878
-13667,3826,5901,0.113837481725673,0.113837481725673,-105.0104297,39.6894878,-105.0117601,39.6894878
-13668,5901,1650,0.336368580358266,0.336368580358266,-105.0117601,39.6894878,-105.0156911,39.6895077
-13669,1650,9026,0.0808050552206421,0.0808050552206421,-105.0156911,39.6895077,-105.0166353,39.6895209
-13670,9026,9027,0.0815322500516298,0.0815322500516298,-105.0166353,39.6895209,-105.017588,39.6895077
-13671,9027,3968,0.0749133242052919,0.0749133242052919,-105.017588,39.6895077,-105.0184635,39.6895077
-13672,3968,205,0.163780553378706,0.163780553378706,-105.0184635,39.6895077,-105.0203775,39.6894945
-13673,205,2934,0.0793233966793332,0.0793233966793332,-105.0203775,39.6894945,-105.0213045,39.6895011
-13674,2934,2932,0.00660572151012338,0.00660572151012338,-105.0213045,39.6895011,-105.0213817,39.6895011
-13675,2932,5313,0.0749133313668845,0.0749133313668845,-105.0213817,39.6895011,-105.0222572,39.6895011
-13676,5313,5314,0.039721686292112,0.039721686292112,-105.0222572,39.6895011,-105.0227207,39.6894812
-13677,5314,1472,0.0396600103919334,0.0396600103919334,-105.0227207,39.6894812,-105.0231842,39.6894812
-13678,1472,5451,0.159004638765101,0.159004638765101,-105.0231842,39.6894812,-105.0250424,39.6894928
-13679,5451,7909,0.201247264593271,0.201247264593271,-105.0250424,39.6894928,-105.0273938,39.6894539
-13680,7909,4403,0.196833842084677,0.196833842084677,-105.0273938,39.6894539,-105.0296941,39.6894671
-13681,4403,6310,0.199805236650359,0.199805236650359,-105.0296941,39.6894671,-105.0320287,39.6894303
-13682,6310,6311,0.0399338522027804,0.0399338522027804,-105.0320287,39.6894303,-105.0324954,39.6894303
-13683,6311,9019,0.0787211142615482,0.0787211142615482,-105.0324954,39.6894303,-105.0334154,39.6894303
-18919,10398,10391,0.0932116121589892,0.0932116121589892,-105.0118932,39.7497594,-105.0127316,39.7492235
-13684,9019,4301,0.0803301037321015,0.0803301037321015,-105.0334154,39.6894303,-105.0343542,39.6894282
-13685,4301,4499,0.100692334161908,0.100692334161908,-105.0343542,39.6894282,-105.0355305,39.6894539
-13686,4499,7815,0.0988002674680887,0.0988002674680887,-105.0355305,39.6894539,-105.0366851,39.6894447
-13687,7815,5071,0.0991802868019195,0.0991802868019195,-105.0366851,39.6894447,-105.037844,39.6894614
-13688,5071,8014,0.103571412588639,0.103571412588639,-105.037844,39.6894614,-105.0390543,39.6894482
-13689,8014,6833,0.0839453108807348,0.0839453108807348,-105.0390543,39.6894482,-105.0400351,39.6894654
-14657,9411,6735,0.143528351506247,0.143528351506247,-105.0180024,39.7601634,-105.0196661,39.7603379
-13691,6976,7946,0.0984345173677437,0.0984345173677437,-105.0410323,39.6894803,-105.0421824,39.6894605
-13692,7946,3301,0.0874467814940938,0.0874467814940938,-105.0421824,39.6894605,-105.0432038,39.6894869
-13693,3301,6365,0.0895995351805866,0.0895995351805866,-105.0432038,39.6894869,-105.0442509,39.6894935
-13694,6365,6654,0.083807023997277,0.083807023997277,-105.0442509,39.6894935,-105.0452294,39.6895265
-13695,6654,9165,0.68755983150845,0.68755983150845,-105.0452294,39.6895265,-105.0532648,39.6895209
-13696,9166,9167,0.0102840052604526,0.0102840052604526,-104.9928292,39.6966756,-104.9929494,39.6966756
-13698,7423,7832,0.102961269389569,0.102961269389569,-104.9944429,39.6966822,-104.9956462,39.6966693
-13699,7832,1182,0.0975615453999259,0.0975615453999259,-104.9956462,39.6966693,-104.996786,39.6966954
-13700,1182,1359,0.100609727856237,0.100609727856237,-104.996786,39.6966954,-104.9979619,39.6967021
-13701,1359,8086,0.0998738624212929,0.0998738624212929,-104.9979619,39.6967021,-104.9991292,39.6967087
-13702,8086,4842,0.0999569203615348,0.0999569203615348,-104.9991292,39.6967087,-105.0002975,39.6967069
-13703,4842,4377,0.103593486995353,0.103593486995353,-105.0002975,39.6967069,-105.0015083,39.6967038
-13704,4377,2859,0.305366704359361,0.305366704359361,-105.0015083,39.6967038,-105.0050773,39.6967285
-13705,2859,7625,0.0937028559888649,0.0937028559888649,-105.0050773,39.6967285,-105.0061725,39.696731
-13706,7625,6669,0.0349417471907859,0.0349417471907859,-105.0061725,39.696731,-105.0065809,39.6967302
-13707,6669,6928,0.181245567189969,0.181245567189969,-105.0065809,39.6967302,-105.0086993,39.6967351
-13708,6928,6929,0.056563910069816,0.056563910069816,-105.0086993,39.6967351,-105.0093602,39.6967483
-15200,9526,7443,0.0505254725980933,0.0505254725980933,-105.036376,39.7499878,-105.036967,39.7499887
-13710,3818,5176,0.0844451203946057,0.0844451203946057,-105.0107164,39.6967417,-105.0117034,39.6967417
-13711,5176,5900,0.0873882937906588,0.0873882937906588,-105.0117034,39.6967417,-105.0127248,39.6967417
-13712,5900,1602,0.0969475981594534,0.0969475981594534,-105.0127248,39.6967417,-105.0138578,39.6967549
-13713,1602,1645,0.147610823352004,0.147610823352004,-105.0138578,39.6967549,-105.015583,39.6967681
-13714,1645,1658,0.00734081920779586,0.00734081920779586,-105.015583,39.6967681,-105.0156688,39.6967681
-13715,1658,6715,0.113834950309784,0.113834950309784,-105.0156688,39.6967681,-105.0169992,39.6967549
-13717,4211,8097,0.0991353106844716,0.0991353106844716,-105.0180463,39.6967483,-105.019205,39.6967483
-13719,9171,203,0.0903750729081993,0.0903750729081993,-105.019308,39.6967483,-105.0203643,39.6967518
-13720,203,2931,0.102769081645998,0.102769081645998,-105.0203643,39.6967518,-105.0215654,39.6967417
-13721,2931,5312,0.098402268229521,0.098402268229521,-105.0215654,39.6967417,-105.0227155,39.6967351
-13722,5312,1469,0.0726981009727233,0.0726981009727233,-105.0227155,39.6967351,-105.0235652,39.6967351
-13723,1469,1468,0.023502610730772,0.023502610730772,-105.0235652,39.6967351,-105.0238399,39.6967351
-13724,1468,5448,0.104140699419407,0.104140699419407,-105.0238399,39.6967351,-105.0250571,39.696733
-13726,3761,9166,0.069031653563667,0.069031653563667,-104.9920224,39.696669,-104.9928292,39.6966756
-13728,4177,9172,0.109548350633249,0.109548350633249,-104.9910305,39.6911901,-104.9923108,39.6911873
-13730,9144,5946,0.201030224778112,0.201030224778112,-104.9351592,39.7292363,-104.9351663,39.7310442
-13731,5946,5137,0.27511296352744,0.27511296352744,-104.9351663,39.7310442,-104.935004,39.7335152
-13732,5137,5152,0.0232058578864935,0.0232058578864935,-104.935004,39.7335152,-104.9349958,39.7337238
-13733,5152,4907,0.10620133994029,0.10620133994029,-104.9349958,39.7337238,-104.935013,39.7346788
-15464,1361,9615,0.0375616902705351,0.0375616902705351,-105.0019226,39.7432201,-105.0015275,39.7433678
-13734,4907,6615,0.200738818803378,0.200738818803378,-104.935013,39.7346788,-104.9349711,39.7364838
-13735,6615,9173,0.1939198547813,0.1939198547813,-104.9349711,39.7364838,-104.9349904,39.7382277
-13736,9173,9174,0.208269220932895,0.208269220932895,-104.9349904,39.7382277,-104.9349984,39.7401007
-13738,9147,5947,0.203116974549126,0.203116974549126,-104.9339583,39.7292394,-104.9339798,39.731066
-13740,7615,904,0.277200719177449,0.277200719177449,-104.9380774,39.7619904,-104.9380626,39.7644833
-13741,904,9175,0.127974248210887,0.127974248210887,-104.9380626,39.7644833,-104.9380631,39.7656342
-13743,7010,7421,0.0949619514323781,0.0949619514323781,-104.9318494,39.7619997,-104.9318313,39.7628536
-13744,7421,1142,0.0432881849429407,0.0432881849429407,-104.9318313,39.7628536,-104.9318313,39.7632429
-13745,1142,1147,0.0608947786947552,0.0608947786947552,-104.9318313,39.7632429,-104.9318227,39.7637905
-13746,1147,909,0.0792487229277921,0.0792487229277921,-104.9318227,39.7637905,-104.9318383,39.7645031
-13788,1669,9192,0.136278654988626,0.136278654988626,-105.0053195,39.7680447,-105.0053009,39.7692702
-13747,909,9176,0.125103752996271,0.125103752996271,-104.9318383,39.7645031,-104.9318203,39.7656281
-13748,9176,2771,0.202343174331141,0.202343174331141,-104.9318203,39.7656281,-104.9317009,39.7674455
-13749,2771,6895,0.198817638053719,0.198817638053719,-104.9317009,39.7674455,-104.9317267,39.7692334
-13753,9179,1,0.207517415173182,0.207517415173182,-105.0147208,39.7357485,-105.0155597,39.7339973
-13755,8437,9180,0.124967984057199,0.124967984057199,-105.0140684,39.7388161,-105.0141257,39.7376931
-13759,9182,4484,0.465234327006532,0.465234327006532,-105.0055365,39.720906,-105.0055963,39.7250897
-13760,4484,4485,0.0326010116755978,0.0326010116755978,-105.0055963,39.7250897,-105.0056478,39.7253802
-13762,9183,9184,0.0646101092104256,0.0646101092104256,-105.0021716,39.719416,-105.002927,39.7194123
-13764,9185,9186,0.026977202251753,0.026977202251753,-104.9985457,39.7503278,-104.9983225,39.7501563
-13765,9186,9187,0.0154692834867904,0.0154692834867904,-104.9983225,39.7501563,-104.9982996,39.7500183
-13766,9187,6713,0.0145607005435147,0.0145607005435147,-104.9982996,39.7500183,-104.9982781,39.7498884
-13768,232,9188,0.0841812454433435,0.0841812454433435,-104.9943741,39.6929144,-104.9942711,39.6921615
-13770,9188,2561,0.00954099557633664,0.00954099557633664,-104.9942711,39.6921615,-104.9942282,39.6920823
-13773,8233,9190,0.00698491885871168,0.00698491885871168,-105.0252854,39.7620032,-105.0253671,39.7620045
-13774,9190,605,0.212601143616712,0.212601143616712,-105.0253671,39.7620045,-105.0276669,39.7627327
-13776,394,9191,0.174546619141482,0.174546619141482,-105.0057374,39.7597756,-105.0041591,39.7607716
-13779,294,4424,0.271505686802405,0.271505686802405,-105.0030853,39.7615504,-105.0016238,39.7637183
-13783,1892,4513,0.135635571790495,0.135635571790495,-105.0052777,39.7620216,-105.0052776,39.7632414
-13784,4513,5235,0.13338423256793,0.13338423256793,-105.0052776,39.7632414,-105.0052923,39.7644409
-13785,5235,6887,0.13498931648718,0.13498931648718,-105.0052923,39.7644409,-105.0053201,39.7656547
-13786,6887,8681,0.133693861256586,0.133693861256586,-105.0053201,39.7656547,-105.0053077,39.766857
-13787,8681,1669,0.132070065253788,0.132070065253788,-105.0053077,39.766857,-105.0053195,39.7680447
-13790,8903,8620,0.147899148341854,0.147899148341854,-105.0105064,39.7573854,-105.0093075,39.7583444
-13791,8620,6984,0.0740139001970076,0.0740139001970076,-105.0093075,39.7583444,-105.008704,39.7588217
-13792,6984,4819,0.0711240597778575,0.0711240597778575,-105.008704,39.7588217,-105.0080831,39.7592475
-13794,8514,8220,0.0695233221555377,0.0695233221555377,-105.0068857,39.7602149,-105.006312,39.7606581
-13796,9193,9141,0.231480473302438,0.231480473302438,-104.9954572,39.7044462,-104.9960053,39.7064848
-13817,9194,8483,0.144876329810161,0.144876329810161,-104.9954622,39.743992,-104.9942509,39.7449031
-13798,9193,9195,0.405940766693276,0.405940766693276,-104.9954572,39.7044462,-104.9963084,39.7080377
-13800,5081,9196,0.0826803218524669,0.0826803218524669,-104.9962546,39.7083175,-104.9961881,39.7090593
-13801,9196,7908,0.24773379383735,0.24773379383735,-104.9961881,39.7090593,-104.9971039,39.7111729
-13802,7908,1383,0.130538600450066,0.130538600450066,-104.9971039,39.7111729,-104.9976275,39.7122756
-13803,1383,4663,0.14493811446872,0.14493811446872,-104.9976275,39.7122756,-104.9982624,39.7134841
-13822,8286,9202,0.148093750497898,0.148093750497898,-104.9894331,39.7486381,-104.9882201,39.7495889
-13804,4663,9197,0.14786450905396,0.14786450905396,-104.9982624,39.7134841,-104.9985624,39.7147937
-13807,231,1184,0.314149545717651,0.314149545717651,-104.9941166,39.693522,-104.9968546,39.6916397
-13808,1184,1364,0.114004540105804,0.114004540105804,-104.9968546,39.6916397,-104.9980305,39.6911576
-13810,1364,8087,0.130984174828509,0.130984174828509,-104.9980305,39.6911576,-104.9992149,39.6904113
-14659,939,5938,0.17856727191407,0.17856727191407,-104.972385,39.7320506,-104.9723624,39.7304448
-14660,5938,3797,0.152203615831491,0.152203615831491,-104.9723624,39.7304448,-104.9723623,39.729076
-13811,8087,9162,0.16050280483824,0.16050280483824,-104.9992149,39.6904113,-105.000246,39.6892055
-13812,9162,9198,0.0132941963216631,0.0132941963216631,-105.000246,39.6892055,-105.000274,39.6890879
-18577,10320,10319,0.350878667314418,0.350878667314418,-105.0313943,39.7806712,-105.0275696,39.7818193
-20839,10930,10948,0.105680421147412,0.105680421147412,-105.0299611,39.7629467,-105.0291285,39.7622441
-13813,9198,9199,3.17004296851045,3.17004296851045,-105.000274,39.6890879,-105.0045553,39.6607701
-17798,9592,10180,0.0765579819092659,0.0765579819092659,-104.9873927,39.7542751,-104.9873951,39.7535866
-13839,1284,9210,0.120028974895433,0.120028974895433,-105.0205218,39.7579887,-105.0192694,39.7575006
-13816,4931,9194,0.407318560179548,0.407318560179548,-104.9988399,39.7414088,-104.9954622,39.743992
-13819,6705,8577,0.147047679886064,0.147047679886064,-104.9930306,39.7458434,-104.9918273,39.7467883
-13820,8577,5778,0.145526475675905,0.145526475675905,-104.9918273,39.7467883,-104.990623,39.7477132
-13821,5778,8286,0.144657100371242,0.144657100371242,-104.990623,39.7477132,-104.9894331,39.7486381
-13823,9202,9203,0.102081942931647,0.102081942931647,-104.9882201,39.7495889,-104.9873873,39.7502468
-13825,7891,9204,0.145701377036231,0.145701377036231,-104.9870145,39.7505324,-104.9858044,39.7514551
-13827,8994,9205,0.0106390736530004,0.0106390736530004,-105.0252881,39.7603424,-105.0253893,39.7603981
-13828,9205,8304,0.117212668938715,0.117212668938715,-105.0253893,39.7603981,-105.026526,39.7609877
-13829,8304,6774,0.0328401658585753,0.0328401658585753,-105.026526,39.7609877,-105.0268654,39.7611261
-13830,6774,3753,0.196045019335809,0.196045019335809,-105.0268654,39.7611261,-105.0288005,39.7620725
-13831,3753,8325,0.00916875381027056,0.00916875381027056,-105.0288005,39.7620725,-105.0288943,39.7621125
-13833,8444,9206,0.0130864665707206,0.0130864665707206,-105.0252881,39.7602413,-105.0251661,39.7601702
-13834,9206,9207,0.00957370688012094,0.00957370688012094,-105.0251661,39.7601702,-105.0250726,39.7601228
-13835,9207,9208,0.169933774193856,0.169933774193856,-105.0250726,39.7601228,-105.0233093,39.759417
-13836,9208,9209,0.168302394118973,0.168302394118973,-105.0233093,39.759417,-105.0216966,39.7585487
-15503,3939,5618,0.12194000294889,0.12194000294889,-105.0001493,39.7402188,-105.0015736,39.7401631
-13837,9209,2963,0.0205458196072096,0.0205458196072096,-105.0216966,39.7585487,-105.0214955,39.7584475
-13840,9210,9211,0.00588390321087397,0.00588390321087397,-105.0192694,39.7575006,-105.0192076,39.7574773
-13841,9211,22,0.0556252544592051,0.0556252544592051,-105.0192076,39.7574773,-105.0186135,39.7572732
-13842,22,6435,0.0767592442346679,0.0767592442346679,-105.0186135,39.7572732,-105.0178061,39.7569711
-13843,6435,636,0.0822615503744666,0.0822615503744666,-105.0178061,39.7569711,-105.0169344,39.7566577
-13844,636,9213,0.103246384420422,0.103246384420422,-105.0169344,39.7566577,-105.0158342,39.7562746
-13845,9213,535,0.0273108213340879,0.0273108213340879,-105.0158342,39.7562746,-105.0155504,39.7561618
-13846,535,9214,0.138573391347307,0.138573391347307,-105.0155504,39.7561618,-105.0140859,39.7556275
-13847,9214,8498,0.0276472257994952,0.0276472257994952,-105.0140859,39.7556275,-105.0137949,39.755519
-13848,8498,8441,0.0465142466162739,0.0465142466162739,-105.0137949,39.755519,-105.0132989,39.755347
-13850,9215,8403,0.0487070540067587,0.0487070540067587,-104.9781012,39.703864,-104.9775319,39.7038582
-13851,8403,1774,0.0526991311069308,0.0526991311069308,-104.9775319,39.7038582,-104.9769161,39.7038457
-13853,4412,9216,0.0527074152255093,0.0527074152255093,-104.9763723,39.7038488,-104.9757563,39.7038398
-13854,9216,4781,0.0501079093501001,0.0501079093501001,-104.9757563,39.7038398,-104.9751707,39.7038491
-14661,3797,9412,0.199399735185058,0.199399735185058,-104.9723623,39.729076,-104.9723458,39.7272828
-13855,4781,1522,0.0511423250179406,0.0511423250179406,-104.9751707,39.7038491,-104.9745729,39.7038457
-13856,1522,5241,0.0480297777865987,0.0480297777865987,-104.9745729,39.7038457,-104.9740116,39.7038551
-13857,5241,463,0.0533178386766155,0.0533178386766155,-104.9740116,39.7038551,-104.9733885,39.7038655
-13859,9217,8420,0.0487543044755043,0.0487543044755043,-104.9780581,39.7056667,-104.9774882,39.7056633
-13860,8420,1773,0.0502154238610622,0.0502154238610622,-104.9774882,39.7056633,-104.9769014,39.705675
-13862,4425,9218,0.050643583977918,0.050643583977918,-104.9763417,39.7056707,-104.9757497,39.7056695
-13863,9218,4823,0.0514478917449482,0.0514478917449482,-104.9757497,39.7056695,-104.9751483,39.7056678
-13864,4823,1521,0.0514834990326773,0.0514834990326773,-104.9751483,39.7056678,-104.9745465,39.705664
-13865,1521,5262,0.0474439861374267,0.0474439861374267,-104.9745465,39.705664,-104.9739919,39.7056638
-13866,5262,9219,0.0530746980864797,0.0530746980864797,-104.9739919,39.7056638,-104.9733715,39.7056677
-13868,6499,2472,0.199600310338802,0.199600310338802,-104.9298179,39.7455937,-104.9298007,39.7473887
-13870,7007,2282,0.0992844503488553,0.0992844503488553,-104.9317157,39.7565591,-104.9305543,39.7565508
-13872,3603,7529,0.0990493561706104,0.0990493561706104,-104.9293903,39.7565549,-104.9282316,39.7565549
-13873,7529,2137,0.105524175995486,0.105524175995486,-104.9282316,39.7565549,-104.9269972,39.7565629
-13874,2137,5994,0.104734285723653,0.104734285723653,-104.9269972,39.7565629,-104.925772,39.7565652
-13875,5994,7674,0.100897460064117,0.100897460064117,-104.925772,39.7565652,-104.9245919,39.7565477
-13996,5841,434,0.0624248318177171,0.0624248318177171,-104.973423,39.6911522,-104.973423,39.6905908
-13876,7674,9221,1.00510923817581,1.00510923817581,-104.9245919,39.7565477,-104.912834,39.7565808
-13878,2804,5269,0.128688734978596,0.128688734978596,-104.9452104,39.7669339,-104.9451609,39.7680906
-13879,5269,6909,0.123348542786119,0.123348542786119,-104.9451609,39.7680906,-104.9451603,39.7691999
-13881,4480,5270,0.264392216770053,0.264392216770053,-104.9440279,39.7657101,-104.9440108,39.7680878
-13882,5270,6910,0.123553912188766,0.123553912188766,-104.9440108,39.7680878,-104.9439975,39.7691989
-13884,7761,6908,0.206924774668396,0.206924774668396,-104.9453067,39.7710608,-104.9452957,39.7691999
-13886,6907,7760,0.209013911598568,0.209013911598568,-104.9464035,39.7692009,-104.9463967,39.7710806
-13887,7760,9222,0.202410018751594,0.202410018751594,-104.9463967,39.7710806,-104.9464409,39.7729006
-13888,6905,7759,0.206351576128965,0.206351576128965,-104.9475756,39.7692051,-104.9475555,39.7710608
-13889,7759,6359,0.203865759483167,0.203865759483167,-104.9475555,39.7710608,-104.9475481,39.7728942
-13891,9223,6448,0.190233422734384,0.190233422734384,-104.9412107,39.7760266,-104.9389896,39.7761403
-13892,6448,6992,0.620734926195411,0.620734926195411,-104.9389896,39.7761403,-104.9317318,39.7759184
-13893,6992,2116,0.412221337604484,0.412221337604484,-104.9317318,39.7759184,-104.9269816,39.7752742
-13894,2116,7665,0.206015761732372,0.206015761732372,-104.9269816,39.7752742,-104.9246092,39.7749454
-13935,9237,254,0.129619446290563,0.129619446290563,-105.0252103,39.7368379,-105.0251543,39.7380028
-13895,7665,9224,1.85930539190202,1.85930539190202,-104.9246092,39.7749454,-104.9032561,39.7717429
-13896,9225,2398,0.224331288063009,0.224331288063009,-104.9407352,39.7758674,-104.940632,39.7738515
-13897,2398,6361,0.106327129111224,0.106327129111224,-104.940632,39.7738515,-104.9406234,39.7728953
-17281,7311,3273,0.201986093156211,0.201986093156211,-104.9599932,39.7020401,-104.9599985,39.7038566
-13899,6446,9223,0.123505309386589,0.123505309386589,-104.9423252,39.7753195,-104.9412107,39.7760266
-13901,8984,8975,0.295278766625452,0.295278766625452,-104.9895148,39.78054,-104.9895886,39.7778851
-13903,8980,8981,0.155353173279186,0.155353173279186,-104.9891666,39.780555,-104.9891558,39.7819521
-13905,9226,8104,0.184150710275748,0.184150710275748,-104.9902648,39.7768461,-104.9912065,39.7783357
-13907,9227,6946,0.038429344582371,0.038429344582371,-104.9603013,39.7815888,-104.9602903,39.7819343
-13912,6380,9229,0.104471273298691,0.104471273298691,-104.9592745,39.7805291,-104.9604654,39.7803167
-14662,9412,9300,0.189453948637121,0.189453948637121,-104.9723458,39.7272828,-104.9723445,39.725579
-13916,566,9231,1.43965285379934,1.43965285379934,-104.9751917,39.6906986,-104.9602821,39.6846997
-13917,9136,9232,0.238873404598648,0.238873404598648,-104.9910031,39.7032246,-104.9889072,39.7018052
-13920,483,7284,0.0730945677376631,0.0730945677376631,-104.9859077,39.7013296,-104.9857206,39.701971
-13928,278,6916,0.0415405366115252,0.0415405366115252,-104.9876105,39.7785645,-104.9878486,39.7782388
-13930,9235,9236,0.360270886139133,0.360270886139133,-104.9733535,39.7400168,-104.9733996,39.7432566
-13931,9236,2883,0.0595125074168401,0.0595125074168401,-104.9733996,39.7432566,-104.9733956,39.7437918
-13936,254,8324,0.235611866233999,0.235611866233999,-105.0251543,39.7380028,-105.0252084,39.7401213
-13938,8324,8310,0.066787627422688,0.066787627422688,-105.0252084,39.7401213,-105.0251999,39.7407219
-13940,8310,9241,0.146021189936251,0.146021189936251,-105.0251999,39.7407219,-105.0252006,39.7420351
-13944,9099,7796,0.300588795121337,0.300588795121337,-105.0181659,39.7251883,-105.014664,39.7254193
-13948,9244,9113,0.144188675545464,0.144188675545464,-105.0110505,39.7257692,-105.0127328,39.7256834
-13950,9106,9244,0.0499156662848634,0.0499156662848634,-105.0104669,39.7257758,-105.0110505,39.7257692
-13952,9245,9246,0.123118530171941,0.123118530171941,-105.0114282,39.7264425,-105.0126992,39.7269625
-13954,405,406,0.0103894659763889,0.0103894659763889,-105.0106325,39.7261211,-105.0107416,39.7261622
-13955,406,9245,0.0664778537431541,0.0664778537431541,-105.0107416,39.7261622,-105.0114282,39.7264425
-13957,407,9033,0.137547423766831,0.137547423766831,-105.0123607,39.72372,-105.0111765,39.722883
-17289,5839,7744,0.201433070586795,0.201433070586795,-104.9518032,39.6911405,-104.9517894,39.689329
-13965,9097,9248,0.39480102328572,0.39480102328572,-105.0162433,39.7250562,-105.0138229,39.7280796
-13966,9248,9249,0.0955291664142426,0.0955291664142426,-105.0138229,39.7280796,-105.0143117,39.7288521
-13968,9246,9248,0.157049002786803,0.157049002786803,-105.0126992,39.7269625,-105.0138229,39.7280796
-13976,3952,9252,0.0592126025244243,0.0592126025244243,-105.0002004,39.7289098,-105.0008928,39.7289115
-13977,9252,5605,0.0597855652504274,0.0597855652504274,-105.0008928,39.7289115,-105.0015919,39.7289132
-13978,5605,9253,0.0521408060475983,0.0521408060475983,-105.0015919,39.7289132,-105.0022016,39.7289106
-13979,9253,3728,0.0545524879363147,0.0545524879363147,-105.0022016,39.7289106,-105.0028395,39.7289078
-13981,7951,7949,0.019092168905179,0.019092168905179,-104.9733887,39.7147202,-104.9733887,39.7145485
-13983,7949,3093,0.182702780383174,0.182702780383174,-104.9733887,39.7145485,-104.9733669,39.7129055
-15893,9254,9255,0.183718623774573,0.183718623774573,-105.0398207,39.7341944,-105.0419691,39.7342088
-13984,3093,3203,0.200818235908537,0.200818235908537,-104.9733669,39.7129055,-104.9733702,39.7110995
-13985,3203,6116,0.201635970571119,0.201635970571119,-104.9733702,39.7110995,-104.9733887,39.7092862
-13986,6116,1913,0.201179241726354,0.201179241726354,-104.9733887,39.7092862,-104.9733715,39.707477
-13987,1913,9219,0.201184980777767,0.201184980777767,-104.9733715,39.707477,-104.9733715,39.7056677
-13988,9219,463,0.200400773809621,0.200400773809621,-104.9733715,39.7056677,-104.9733885,39.7038655
-13989,463,7301,0.202731579470961,0.202731579470961,-104.9733885,39.7038655,-104.9734144,39.7020424
-13990,7301,49,0.204762753950758,0.204762753950758,-104.9734144,39.7020424,-104.9733927,39.700201
-13991,49,3548,0.19703986640102,0.19703986640102,-104.9733927,39.700201,-104.9734042,39.698429
-13992,3548,4243,0.201964288701916,0.201964288701916,-104.9734042,39.698429,-104.97343,39.6966128
-13993,4243,1803,0.208102375283595,0.208102375283595,-104.97343,39.6966128,-104.9734222,39.6947413
-13994,1803,8711,0.194851559567089,0.194851559567089,-104.9734222,39.6947413,-104.973438,39.692989
-13995,8711,5841,0.20424687376631,0.20424687376631,-104.973438,39.692989,-104.973423,39.6911522
-17660,586,8936,0.0435552950105704,0.0435552950105704,-104.9889771,39.7829454,-104.9889754,39.7833371
-13997,434,8731,0.0205731062854678,0.0205731062854678,-104.973423,39.6905908,-104.9734316,39.6904059
-13999,3219,3112,0.203925882799295,0.203925882799295,-104.9592972,39.7111077,-104.959135,39.7129374
-14000,3112,3641,0.260678130684959,0.260678130684959,-104.959135,39.7129374,-104.9590835,39.7152814
-14001,3641,9256,0.0279085029397156,0.0279085029397156,-104.9590835,39.7152814,-104.9590749,39.7155323
-14003,9257,8801,0.0249979934697134,0.0249979934697134,-104.9590619,39.7158623,-104.9590492,39.7160869
-14665,4752,4167,0.209025457745472,0.209025457745472,-104.9723195,39.7219606,-104.9723279,39.7200808
-14005,9256,9257,0.0367111693692818,0.0367111693692818,-104.9590749,39.7155323,-104.9590619,39.7158623
-14007,9258,3642,0.0274131048639432,0.0274131048639432,-104.9592928,39.7155013,-104.9593067,39.715255
-14008,3642,9259,0.086632322467807,0.086632322467807,-104.9593067,39.715255,-104.9593096,39.7144759
-14009,9259,3111,0.171051850512145,0.171051850512145,-104.9593096,39.7144759,-104.9593153,39.7129376
-14010,3111,3219,0.203481486479522,0.203481486479522,-104.9593153,39.7129376,-104.9592972,39.7111077
-14012,7158,9258,0.038998695665846,0.038998695665846,-104.9592875,39.715852,-104.9592928,39.7155013
-14014,3219,6126,0.202012344464496,0.202012344464496,-104.9592972,39.7111077,-104.959313,39.709291
-14015,6126,1929,0.202386985868189,0.202386985868189,-104.959313,39.709291,-104.9593208,39.7074709
-14016,1929,2919,0.0171463622508283,0.0171463622508283,-104.9593208,39.7074709,-104.9593201,39.7073167
-14017,2919,7250,0.183561589747783,0.183561589747783,-104.9593201,39.7073167,-104.959313,39.7056659
-14018,7250,3274,0.20118632596822,0.20118632596822,-104.959313,39.7056659,-104.9593216,39.7038566
-14019,3274,7312,0.203193267560765,0.203193267560765,-104.9593216,39.7038566,-104.959341,39.7020293
-14021,9260,9157,0.0588873613464273,0.0588873613464273,-104.9954471,39.7027842,-104.9952014,39.7022895
-14022,9157,6253,0.473629275671798,0.473629275671798,-104.9952014,39.7022895,-104.9926817,39.6984968
-14023,6253,9167,0.20379925953003,0.20379925953003,-104.9926817,39.6984968,-104.9929494,39.6966756
-14024,9167,231,0.364607283214556,0.364607283214556,-104.9929494,39.6966756,-104.9941166,39.693522
-14026,9171,2308,0.0877328075526686,0.0877328075526686,-105.019308,39.6967483,-105.0193085,39.6959593
-14027,2308,167,0.314493617652356,0.314493617652356,-105.0193085,39.6959593,-105.0193178,39.693131
-14030,6653,9263,0.598539344332022,0.598539344332022,-105.0448856,39.6967219,-105.0518813,39.6967452
-14031,5448,5975,0.113227741973857,0.113227741973857,-105.0250571,39.696733,-105.0263805,39.6967285
-14032,5975,9023,0.0895901368528646,0.0895901368528646,-105.0263805,39.6967285,-105.0274276,39.6967351
-14033,9023,4404,0.197536219691709,0.197536219691709,-105.0274276,39.6967351,-105.0297364,39.6967417
-14034,4404,7371,0.107978748074207,0.107978748074207,-105.0297364,39.6967417,-105.0309982,39.6967219
-14035,7371,6307,0.0697549406367758,0.0697549406367758,-105.0309982,39.6967219,-105.0318135,39.6967219
-14036,6307,6308,0.0220857912106748,0.0220857912106748,-105.0318135,39.6967219,-105.0320716,39.6967254
-14037,6308,4316,0.20668661359579,0.20668661359579,-105.0320716,39.6967254,-105.03444,39.6970917
-14038,4316,4503,0.0921482766473363,0.0921482766473363,-105.03444,39.6970917,-105.0355129,39.6971643
-14039,4503,7814,0.109821870874264,0.109821870874264,-105.0355129,39.6971643,-105.0366887,39.6967681
-14040,7814,5079,0.102137328159445,0.102137328159445,-105.0366887,39.6967681,-105.0378823,39.6967518
-14041,5079,8013,0.0998289131041121,0.0998289131041121,-105.0378823,39.6967518,-105.0390491,39.6967549
-14042,8013,6832,0.10065041616734,0.10065041616734,-105.0390491,39.6967549,-105.0402255,39.6967584
-14043,6832,6975,0.0990932842629603,0.0990932842629603,-105.0402255,39.6967584,-105.0413837,39.6967549
-14044,6975,7945,0.100601003970672,0.100601003970672,-105.0413837,39.6967549,-105.0425595,39.6967615
-14045,7945,6364,0.097675013601381,0.097675013601381,-105.0425595,39.6967615,-105.0437011,39.6967681
-14049,9264,9265,0.128352927336665,0.128352927336665,-105.0016904,39.7220846,-105.0016701,39.7209304
-14051,3219,5061,0.0565378582983479,0.0565378582983479,-104.9592972,39.7111077,-104.9586363,39.7111011
-14052,5061,4916,0.0521329784642155,0.0521329784642155,-104.9586363,39.7111011,-104.9580269,39.7110945
-17662,488,10160,0.037999512945138,0.037999512945138,-104.9855724,39.7800624,-104.986015,39.7800954
-14053,4916,5228,0.130202288917824,0.130202288917824,-104.9580269,39.7110945,-104.9565077,39.7110219
-14054,5228,5106,0.0572735085516971,0.0572735085516971,-104.9565077,39.7110219,-104.9558382,39.7110153
-14055,5106,5229,0.0124802378810982,0.0124802378810982,-104.9558382,39.7110153,-104.9556923,39.7110153
-14056,5229,4995,0.288542415463076,0.288542415463076,-104.9556923,39.7110153,-104.9523191,39.7110153
-14057,4995,9266,0.20116472075537,0.20116472075537,-104.9523191,39.7110153,-104.9499674,39.7110094
-14666,4167,6326,0.178657902009272,0.178657902009272,-104.9723279,39.7200808,-104.9722942,39.7184743
-14058,9266,7066,0.0118986523075564,0.0118986523075564,-104.9499674,39.7110094,-104.9498283,39.711009
-14059,7066,3636,0.140199736242294,0.140199736242294,-104.9498283,39.711009,-104.9481992,39.7111474
-14061,9266,6351,0.197550871457279,0.197550871457279,-104.9499674,39.7110094,-104.9499571,39.7092328
-14063,2574,5103,0.0764020591743967,0.0764020591743967,-104.949965,39.7089952,-104.9499914,39.7083084
-14065,7930,1893,0.0520626532677435,0.0520626532677435,-104.949883,39.707468,-104.9497942,39.7070048
-14066,1893,2315,0.115168818798466,0.115168818798466,-104.9497942,39.7070048,-104.9499657,39.7059775
-14068,7341,6156,0.0983814711715662,0.0983814711715662,-104.9316369,39.7113211,-104.932787,39.7113277
-14069,6156,6290,0.0991170792397538,0.0991170792397538,-104.932787,39.7113277,-104.9339457,39.7113343
-14070,6290,3116,0.0983982120263374,0.0983982120263374,-104.9339457,39.7113343,-104.9350959,39.7113475
-14072,6673,8185,0.0325158694936318,0.0325158694936318,-104.9362583,39.7113747,-104.936636,39.7114077
-14074,3188,9268,0.0244851420549388,0.0244851420549388,-104.9461736,39.7114973,-104.946452,39.7115485
-14075,9268,8800,0.0276968906605859,0.0276968906605859,-104.946452,39.7115485,-104.9467659,39.7116096
-14077,6718,9269,0.103071842817105,0.103071842817105,-104.9425631,39.711506,-104.9413612,39.7114399
-14078,9269,8160,0.0477581921413061,0.0477581921413061,-104.9413612,39.7114399,-104.9408036,39.7114181
-14080,7342,3492,0.198422050793999,0.198422050793999,-104.9316306,39.711189,-104.929311,39.7111767
-14081,3492,9270,0.0991145839577047,0.0991145839577047,-104.929311,39.7111767,-104.9281523,39.7111767
-17664,10161,6173,0.109897620785603,0.109897620785603,-104.9856475,39.7795327,-104.9843627,39.779576
-14082,9270,5386,0.100577308895159,0.100577308895159,-104.9281523,39.7111767,-104.9269765,39.7111767
-14083,5386,9271,0.100588544879537,0.100588544879537,-104.9269765,39.7111767,-104.9258006,39.7111701
-14084,9271,6817,0.101321511979085,0.101321511979085,-104.9258006,39.7111701,-104.9246161,39.7111701
-14160,7023,7393,0.135757251453186,0.135757251453186,-105.0315207,39.751179,-105.0331086,39.7511922
-14161,7393,9272,0.0789156635630832,0.0789156635630832,-105.0331086,39.7511922,-105.0340317,39.7511922
-14166,9278,7444,0.0517309727495982,0.0517309727495982,-105.0363599,39.7511906,-105.036965,39.7511936
-14129,9279,9280,0.186364690747119,0.186364690747119,-104.9490944,39.7475193,-104.9512562,39.7473041
-14085,6817,9273,5.01601743028969,5.01601743028969,-104.9246161,39.7111701,-104.8659769,39.710981
-14086,9274,6816,4.59997811614881,4.59997811614881,-104.8708565,39.7101192,-104.9246085,39.7113484
-14088,2943,5348,0.200890409378397,0.200890409378397,-104.9258054,39.711367,-104.9281539,39.71136
-14089,5348,3491,0.0990328236882064,0.0990328236882064,-104.9281539,39.71136,-104.9293114,39.7113416
-14090,3491,2849,0.0998105211493863,0.0998105211493863,-104.9293114,39.7113416,-104.9304782,39.7113343
-14091,2849,7341,0.0991252344530307,0.0991252344530307,-104.9304782,39.7113343,-104.9316369,39.7113211
-14093,9271,6103,0.208876201356377,0.208876201356377,-104.9258006,39.7111701,-104.9258215,39.7092917
-14095,9270,6098,0.16565447863601,0.16565447863601,-104.9281523,39.7111767,-104.928134,39.709687
-14096,6098,9275,0.0444779706577198,0.0444779706577198,-104.928134,39.709687,-104.928134,39.709287
-14097,9269,6101,0.238835584318973,0.238835584318973,-104.9413612,39.7114399,-104.9413615,39.709292
-17799,10180,8536,0.0726583525558809,0.0726583525558809,-104.9873951,39.7535866,-104.987378,39.7529333
-14099,8294,9276,0.192103991232145,0.192103991232145,-104.9942907,39.754326,-104.9957422,39.7556449
-14101,4423,9277,0.533016938094048,0.533016938094048,-105.0057667,39.7600738,-105.0019955,39.7638914
-14138,9282,9283,0.384483999025896,0.384483999025896,-104.9667713,39.7808486,-104.9624039,39.7800174
-14146,4993,9288,0.0718457938229626,0.0718457938229626,-105.0163127,39.7513508,-105.0171434,39.7512529
-14148,9288,471,0.0203590276008878,0.0203590276008878,-105.0171434,39.7512529,-105.017379,39.7512262
-14149,471,6430,0.0161743745423695,0.0161743745423695,-105.017379,39.7512262,-105.0175669,39.7512092
-14150,6430,4655,0.1348214737413,0.1348214737413,-105.0175669,39.7512092,-105.0191439,39.7512186
-14151,4655,1277,0.119151021074222,0.119151021074222,-105.0191439,39.7512186,-105.020537,39.751186
-14152,1277,4528,0.128606742393323,0.128606742393323,-105.020537,39.751186,-105.022041,39.751211
-14153,4528,9289,0.132757697104501,0.132757697104501,-105.022041,39.751211,-105.0235939,39.7512075
-14154,9289,9290,0.133347126872573,0.133347126872573,-105.0235939,39.7512075,-105.0251537,39.7512091
-14155,9290,9291,0.0102673262572307,0.0102673262572307,-105.0251537,39.7512091,-105.0252738,39.7512091
-14156,9291,6745,0.131970868855064,0.131970868855064,-105.0252738,39.7512091,-105.0268172,39.7511856
-14157,6745,6145,0.131356474267846,0.131356474267846,-105.0268172,39.7511856,-105.0283535,39.7512054
-14158,6145,4019,0.135781040149455,0.135781040149455,-105.0283535,39.7512054,-105.0299414,39.751179
-14159,4019,7023,0.135014116939136,0.135014116939136,-105.0299414,39.751179,-105.0315207,39.751179
-14162,9272,3401,0.0502252760733361,0.0502252760733361,-105.0340317,39.7511922,-105.0346192,39.7511922
-14163,3401,9220,0.0499780107614713,0.0499780107614713,-105.0346192,39.7511922,-105.0352038,39.7511899
-17968,8778,10231,0.0192769916187002,0.0192769916187002,-104.9874654,39.72522,-104.9876908,39.725221
-14164,9220,8375,0.0494394335916504,0.0494394335916504,-105.0352038,39.7511899,-105.0357821,39.7511876
-14165,8375,9278,0.0493971533103994,0.0493971533103994,-105.0357821,39.7511876,-105.0363599,39.7511906
-14167,7444,9292,0.0498509119548639,0.0498509119548639,-105.036965,39.7511936,-105.0375481,39.7511898
-14168,9292,7161,0.0504322249542888,0.0504322249542888,-105.0375481,39.7511898,-105.038138,39.751186
-14169,7161,9293,0.049549545616498,0.049549545616498,-105.038138,39.751186,-105.0387175,39.7511941
-14671,5473,9414,0.169600878974653,0.169600878974653,-104.9701135,39.7384072,-104.9700963,39.736882
-14170,9293,7773,0.0509361632349417,0.0509361632349417,-105.0387175,39.7511941,-105.0393133,39.7511908
-14171,7773,9039,0.0499454477956979,0.0499454477956979,-105.0393133,39.7511908,-105.0398975,39.7511951
-14172,9039,1114,0.0547655871790504,0.0547655871790504,-105.0398975,39.7511951,-105.040538,39.751186
-14173,1114,9294,0.0447798115689078,0.0447798115689078,-105.040538,39.751186,-105.0410618,39.7511847
-14174,9294,7494,0.0527731793085291,0.0527731793085291,-105.0410618,39.7511847,-105.0416791,39.7511831
-14175,7494,9170,0.0488063990880333,0.0488063990880333,-105.0416791,39.7511831,-105.04225,39.7511845
-14176,9170,3836,0.0502683027746479,0.0502683027746479,-105.04225,39.7511845,-105.042838,39.751186
-14180,7818,2938,0.0876396467302253,0.0876396467302253,-104.9257985,39.7038513,-104.9247744,39.7038309
-14181,2938,6809,0.0888992165922937,0.0888992165922937,-104.9247744,39.7038309,-104.9237358,39.7038573
-14182,6809,1960,0.772041478396669,0.772041478396669,-104.9237358,39.7038573,-104.9147112,39.7038545
-17800,8536,8859,0.0293889142934455,0.0293889142934455,-104.987378,39.7529333,-104.9873914,39.7526692
-14183,1960,9295,0.960771522024492,0.960771522024492,-104.9147112,39.7038545,-104.9034805,39.70387
-14184,7571,9296,0.161476693063143,0.161476693063143,-104.9862197,39.7256409,-104.9850256,39.724516
-14185,9296,8888,0.0634729683022204,0.0634729683022204,-104.9850256,39.724516,-104.984536,39.724087
-14187,9297,6334,0.0129309336441387,0.0129309336441387,-104.9852863,39.7256333,-104.9851351,39.7256329
-14188,6334,7083,0.0225608570291498,0.0225608570291498,-104.9851351,39.7256329,-104.9848713,39.7256319
-14189,7083,8784,0.107920119748436,0.107920119748436,-104.9848713,39.7256319,-104.9836094,39.725629
-14190,8784,8791,0.106332666658533,0.106332666658533,-104.9836094,39.725629,-104.9823661,39.725621
-14191,8791,3157,0.106749034536814,0.106749034536814,-104.9823661,39.725621,-104.9811181,39.7256387
-14192,3157,4976,0.101195319793441,0.101195319793441,-104.9811181,39.7256387,-104.9799349,39.7256286
-14193,4976,9298,0.0996902493641346,0.0996902493641346,-104.9799349,39.7256286,-104.9787693,39.7256185
-14194,9298,9299,0.104226329823663,0.104226329823663,-104.9787693,39.7256185,-104.9775506,39.725614
-14195,9299,6538,0.0493134523648135,0.0493134523648135,-104.9775506,39.725614,-104.976974,39.7256103
-14196,6538,5048,0.0489874238643872,0.0489874238643872,-104.976974,39.7256103,-104.9764012,39.725608
-14197,5048,8001,0.0994531494791736,0.0994531494791736,-104.9764012,39.725608,-104.9752384,39.7255962
-14198,8001,985,0.0994551795792203,0.0994551795792203,-104.9752384,39.7255962,-104.9740756,39.7255831
-14199,985,5104,0.0491411684949994,0.0491411684949994,-104.9740756,39.7255831,-104.973501,39.7255812
-14201,8831,9300,0.0488242916251385,0.0488242916251385,-104.9729154,39.7255792,-104.9723445,39.725579
-14202,9300,7149,0.0497002324101769,0.0497002324101769,-104.9723445,39.725579,-104.9717634,39.7255844
-14203,7149,2393,0.0492946529104208,0.0492946529104208,-104.9717634,39.7255844,-104.971187,39.7255843
-14204,2393,5115,0.0502354677891233,0.0502354677891233,-104.971187,39.7255843,-104.9705996,39.7255851
-14205,5115,9301,0.0497154080261439,0.0497154080261439,-104.9705996,39.7255851,-104.9700183,39.7255888
-14206,9301,4714,0.049399080188397,0.049399080188397,-104.9700183,39.7255888,-104.9694407,39.7255926
-14207,4714,8872,0.0991624253785381,0.0991624253785381,-104.9694407,39.7255926,-104.9682812,39.7255941
-14208,8872,7353,0.0988972303255353,0.0988972303255353,-104.9682812,39.7255941,-104.9671248,39.7255931
-14209,7353,5412,0.107964313206197,0.107964313206197,-104.9671248,39.7255931,-104.9658624,39.7255988
-14210,5412,3145,0.0906444248702148,0.0906444248702148,-104.9658624,39.7255988,-104.9648025,39.7256
-14211,3145,3919,0.0988223626592478,0.0988223626592478,-104.9648025,39.7256,-104.963647,39.7256059
-18204,6875,8356,0.205977621151269,0.205977621151269,-105.0363465,39.7658167,-105.0363437,39.7639643
-14212,3919,3918,0.0189862588635382,0.0189862588635382,-104.963647,39.7256059,-104.963425,39.7256047
-14213,3918,1010,0.0826936905404967,0.0826936905404967,-104.963425,39.7256047,-104.9624581,39.7255985
-14214,1010,6261,0.0974734196824701,0.0974734196824701,-104.9624581,39.7255985,-104.9613184,39.7256069
-14215,6261,8730,0.0989075877241795,0.0989075877241795,-104.9613184,39.7256069,-104.9601619,39.7256124
-14216,8730,7153,0.0605847994240266,0.0605847994240266,-104.9601619,39.7256124,-104.9594535,39.725616
-14217,7153,5021,0.0499889577891061,0.0499889577891061,-104.9594535,39.725616,-104.958869,39.7256124
-14218,5021,9302,0.0549823108734392,0.0549823108734392,-104.958869,39.7256124,-104.9582261,39.7256145
-14219,9302,3342,0.0335617577180335,0.0335617577180335,-104.9582261,39.7256145,-104.9578337,39.7256186
-14220,3342,3352,0.0674788037125104,0.0674788037125104,-104.9578337,39.7256186,-104.9570447,39.7256136
-14221,3352,7886,0.0299418452790484,0.0299418452790484,-104.9570447,39.7256136,-104.9566946,39.7256155
-14222,7886,7319,0.0732493043433617,0.0732493043433617,-104.9566946,39.7256155,-104.9558381,39.7256145
-14223,7319,7320,0.0259215863697348,0.0259215863697348,-104.9558381,39.7256145,-104.955535,39.7256145
-14224,7320,7977,0.0775267077551995,0.0775267077551995,-104.955535,39.7256145,-104.9546285,39.7256103
-14225,7977,7980,0.0233987016260196,0.0233987016260196,-104.9546285,39.7256103,-104.9543549,39.7256103
-14226,7980,2061,0.0796038188827741,0.0796038188827741,-104.9543549,39.7256103,-104.9534241,39.7256124
-14227,2061,8870,0.0167451229489977,0.0167451229489977,-104.9534241,39.7256124,-104.9532283,39.7256124
-14228,8870,2647,0.0876006586657796,0.0876006586657796,-104.9532283,39.7256124,-104.952204,39.7256088
-14229,2647,8860,0.0114861984991212,0.0114861984991212,-104.952204,39.7256088,-104.9520697,39.7256077
-14231,4113,8862,0.00848374045935965,0.00848374045935965,-104.9509997,39.7256047,-104.9509005,39.7256047
-14232,8862,8687,0.0949896568056219,0.0949896568056219,-104.9509005,39.7256047,-104.9497898,39.7256083
-14234,6694,8024,0.0782864986898227,0.0782864986898227,-104.9495001,39.7256083,-104.9485847,39.7256075
-14235,8024,8017,0.0158816052839578,0.0158816052839578,-104.9485847,39.7256075,-104.948399,39.7256083
-18205,8356,10280,0.196081618210442,0.196081618210442,-105.0363437,39.7639643,-105.0363386,39.7622009
-14236,8017,7681,0.0911745487086236,0.0911745487086236,-104.948399,39.7256083,-104.9473329,39.7256083
-14237,7681,3454,0.0980849682512979,0.0980849682512979,-104.9473329,39.7256083,-104.946186,39.7256104
-14238,3454,6017,0.0971271293907499,0.0971271293907499,-104.946186,39.7256104,-104.9450503,39.7256083
-14239,6017,9303,0.0906101063303862,0.0906101063303862,-104.9450503,39.7256083,-104.9439908,39.7256083
-14240,9303,3884,0.022021804982538,0.022021804982538,-104.9439908,39.7256083,-104.9437333,39.7256083
-14241,3884,9304,0.0244079810975188,0.0244079810975188,-104.9437333,39.7256083,-104.9434479,39.7256076
-14242,9304,852,0.0462417773626911,0.0462417773626911,-104.9434479,39.7256076,-104.9429072,39.7256062
-14243,852,847,0.0318832988859635,0.0318832988859635,-104.9429072,39.7256062,-104.9425344,39.7256041
-14244,847,9305,0.0129480432587025,0.0129480432587025,-104.9425344,39.7256041,-104.942383,39.7256045
-14245,9305,7103,0.0469858120705144,0.0469858120705144,-104.942383,39.7256045,-104.9418336,39.7256059
-14246,7103,7098,0.0440436114993002,0.0440436114993002,-104.9418336,39.7256059,-104.9413186,39.7256059
-14247,7098,8567,0.0448162532507988,0.0448162532507988,-104.9413186,39.7256059,-104.940796,39.7255761
-14248,8567,8696,0.0173715559267549,0.0173715559267549,-104.940796,39.7255761,-104.9406095,39.7255142
-14249,8696,8157,0.112872102261494,0.112872102261494,-104.9406095,39.7255142,-104.9393188,39.7253022
-14251,7606,7263,0.0986452262534628,0.0986452262534628,-104.9382673,39.7253035,-104.9371139,39.7253117
-14252,7263,7596,0.0935891946661749,0.0935891946661749,-104.9371139,39.7253117,-104.9360196,39.7253179
-14253,7596,2019,0.0979493336941006,0.0979493336941006,-104.9360196,39.7253179,-104.9348743,39.7253138
-14254,2019,2009,0.0254598809515577,0.0254598809515577,-104.9348743,39.7253138,-104.9345766,39.7253138
-14255,2009,9306,0.0651506123907477,0.0651506123907477,-104.9345766,39.7253138,-104.9338148,39.7253138
-14256,9306,2765,0.0942796454050606,0.0942796454050606,-104.9338148,39.7253138,-104.9327124,39.7253158
-14257,2765,7004,0.0945020258355606,0.0945020258355606,-104.9327124,39.7253158,-104.9316074,39.7253179
-14258,7004,2269,0.094510288095609,0.094510288095609,-104.9316074,39.7253179,-104.9305023,39.7253179
-14259,2269,3597,0.0938178496086605,0.0938178496086605,-104.9305023,39.7253179,-104.9294053,39.72532
-14260,3597,7519,0.0940495689740582,0.0940495689740582,-104.9294053,39.72532,-104.9283056,39.7253241
-14261,7519,2097,0.0954278502201834,0.0954278502201834,-104.9283056,39.7253241,-104.9271898,39.7253303
-14262,2097,5979,0.093364277402532,0.093364277402532,-104.9271898,39.7253303,-104.9260981,39.7253303
-14263,5979,7668,0.0947328877466294,0.0947328877466294,-104.9260981,39.7253303,-104.9249904,39.7253323
-14264,7668,2333,0.0940581587738673,0.0940581587738673,-104.9249904,39.7253323,-104.9238906,39.7253365
-14290,7340,2847,0.0976411590956878,0.0976411590956878,-104.9316333,39.714638,-104.9304918,39.7146446
-14291,2847,3488,0.099134038329873,0.099134038329873,-104.9304918,39.7146446,-104.9293331,39.7146644
-14265,2333,9307,2.72967592410639,2.72967592410639,-104.9238906,39.7253365,-104.8919735,39.7255098
-14266,7939,9297,0.0419487931711618,0.0419487931711618,-104.9857768,39.7256351,-104.9852863,39.7256333
-14268,9308,8124,0.0322650869587369,0.0322650869587369,-104.9788375,39.7207707,-104.9790658,39.7205397
-14270,6489,4610,0.147433811602258,0.147433811602258,-104.9787322,39.7461798,-104.9787365,39.7448539
-14271,4610,9309,0.176778253451623,0.176778253451623,-104.9787365,39.7448539,-104.9787417,39.7432641
-14272,9309,9310,0.173976128689665,0.173976128689665,-104.9787417,39.7432641,-104.9787468,39.7416995
-14273,9310,661,0.00410310170227956,0.00410310170227956,-104.9787468,39.7416995,-104.9787469,39.7416626
-14274,661,9311,0.181937703339546,0.181937703339546,-104.9787469,39.7416626,-104.9787522,39.7400264
-14275,9311,9312,0.00955167864142152,0.00955167864142152,-104.9787522,39.7400264,-104.9787525,39.7399405
-14276,9312,5465,0.170285054650927,0.170285054650927,-104.9787525,39.7399405,-104.9787452,39.7384091
-14277,5465,9313,0.170744821866598,0.170744821866598,-104.9787452,39.7384091,-104.9787299,39.7368736
-14279,1959,9314,0.0338130460518869,0.0338130460518869,-104.9258263,39.7078957,-104.9258091,39.7081995
-14280,6865,9315,0.0139507857568572,0.0139507857568572,-104.9407779,39.7146468,-104.9406148,39.7146468
-14304,3303,9322,0.10510832723533,0.10510832723533,-104.9898413,39.756424,-104.9907084,39.7570942
-14282,1952,1061,0.0629715521271105,0.0629715521271105,-104.9402458,39.7146371,-104.9395162,39.7147128
-14283,1061,1698,0.0954893713474356,0.0954893713474356,-104.9395162,39.7147128,-104.9384005,39.7147427
-14284,1698,7830,0.0914331784434328,0.0914331784434328,-104.9384005,39.7147427,-104.937334,39.714687
-14285,7830,6672,0.0912502234487567,0.0912502234487567,-104.937334,39.714687,-104.9362682,39.7146512
-14287,3115,6289,0.0998478865183477,0.0998478865183477,-104.9351095,39.7146512,-104.9339422,39.7146578
-14288,6289,6153,0.0969141122634902,0.0969141122634902,-104.9339422,39.7146578,-104.9328092,39.7146512
-14289,6153,7340,0.100591515239683,0.100591515239683,-104.9328092,39.7146512,-104.9316333,39.714638
-14292,3488,5347,0.102266398355838,0.102266398355838,-104.9293331,39.7146644,-104.9281375,39.7146675
-14293,5347,5385,0.100999909961237,0.100999909961237,-104.9281375,39.7146675,-104.9269567,39.714668
-14294,5385,2941,0.100298515709498,0.100298515709498,-104.9269567,39.714668,-104.9257841,39.7146684
-14295,2941,6815,0.100200854484763,0.100200854484763,-104.9257841,39.7146684,-104.9246127,39.7146774
-14296,6815,9316,0.597950743493465,0.597950743493465,-104.9246127,39.7146774,-104.9176221,39.7147069
-14299,9318,9319,0.0328706223087289,0.0328706223087289,-104.9873865,39.7545236,-104.9876534,39.7547364
-14300,9319,9320,0.0460951861554719,0.0460951861554719,-104.9876534,39.7547364,-104.9880277,39.7550348
-14332,8959,603,0.0768028618845699,0.0768028618845699,-104.9949911,39.7695799,-104.9958065,39.7692896
-14301,9320,9321,0.0066600520489618,0.0066600520489618,-104.9880277,39.7550348,-104.9880818,39.7550779
-14302,9321,6181,0.104280480431139,0.104280480431139,-104.9880818,39.7550779,-104.9889487,39.7557377
-14303,6181,3303,0.107915728386056,0.107915728386056,-104.9889487,39.7557377,-104.9898413,39.756424
-14305,9322,7829,0.125883411444605,0.125883411444605,-104.9907084,39.7570942,-104.9917479,39.7578961
-14306,7829,9323,0.0108681676592021,0.0108681676592021,-104.9917479,39.7578961,-104.9918391,39.7579642
-14339,5536,6469,0.142307267119589,0.142307267119589,-104.9948277,39.7742296,-104.9948277,39.7755094
-14309,2191,9060,0.337657954437192,0.337657954437192,-104.9936227,39.759356,-104.9947546,39.7622653
-14312,8501,9324,0.0507516559976904,0.0507516559976904,-104.9871043,39.7524564,-104.9866859,39.7521326
-14313,9324,8418,0.0529402152835436,0.0529402152835436,-104.9866859,39.7521326,-104.986246,39.7517975
-14314,8418,9204,0.0536170041098827,0.0536170041098827,-104.986246,39.7517975,-104.9858044,39.7514551
-16428,9891,9892,0.0636662665142278,0.0636662665142278,-104.9688482,39.696672,-104.9695204,39.6969176
-14316,9204,8416,0.0537868101405785,0.0537868101405785,-104.9858044,39.7514551,-104.9853609,39.751112
-14317,8416,4388,0.0529171329453403,0.0529171329453403,-104.9853609,39.751112,-104.9849232,39.7507755
-14318,4388,9325,0.0509479826022637,0.0509479826022637,-104.9849232,39.7507755,-104.9845026,39.7504509
-14319,9325,3012,0.0488022545854277,0.0488022545854277,-104.9845026,39.7504509,-104.9840976,39.7501416
-14320,3012,9326,0.0106897373905654,0.0106897373905654,-104.9840976,39.7501416,-104.9840104,39.7500727
-14321,9326,9327,0.0465239604768105,0.0465239604768105,-104.9840104,39.7500727,-104.9836296,39.7497738
-14322,9327,5968,0.0526629141875595,0.0526629141875595,-104.9836296,39.7497738,-104.9831894,39.7494425
-14323,5968,7574,0.106363762970419,0.106363762970419,-104.9831894,39.7494425,-104.982314,39.7487628
-14324,7574,3677,0.190331060201359,0.190331060201359,-104.982314,39.7487628,-104.980751,39.7475439
-14326,604,9328,0.0383191315904674,0.0383191315904674,-104.9964331,39.7692764,-104.9959868,39.7692435
-14327,9328,8962,0.0878512488922689,0.0878512488922689,-104.9959868,39.7692435,-104.9951474,39.7687875
-14336,2420,3233,0.140764271648617,0.140764271648617,-104.9948281,39.7704903,-104.9948707,39.7717558
-14337,3233,5753,0.137661630591373,0.137661630591373,-104.9948707,39.7717558,-104.9948482,39.7729937
-14338,5753,5536,0.137436976875483,0.137436976875483,-104.9948482,39.7729937,-104.9948277,39.7742296
-14340,6469,8679,0.121371092902246,0.121371092902246,-104.9948277,39.7755094,-104.9948199,39.7766009
-14341,8679,9329,0.0309595800848719,0.0309595800848719,-104.9948199,39.7766009,-104.9948053,39.7768791
-20573,10860,10861,0.0279030600601915,0.0279030600601915,-105.02457,39.7611148,-105.0248964,39.7611186
-14342,6914,8116,0.133600464645887,0.133600464645887,-105.0111738,39.7765593,-105.0111288,39.7777603
-14343,8116,2483,0.133445859176034,0.133445859176034,-105.0111288,39.7777603,-105.0111233,39.7789604
-14344,2483,2482,0.047686047945258,0.047686047945258,-105.0111233,39.7789604,-105.0111147,39.7793892
-14345,2482,2821,0.0880230568241511,0.0880230568241511,-105.0111147,39.7793892,-105.0111319,39.7801807
-14346,2821,1413,0.131238509050086,0.131238509050086,-105.0111319,39.7801807,-105.0110892,39.7813605
-14347,1413,1353,0.132733599584258,0.132733599584258,-105.0110892,39.7813605,-105.0110864,39.7825542
-14348,1353,7767,0.0733149237137966,0.0733149237137966,-105.0110864,39.7825542,-105.0110634,39.7832133
-14350,6729,2454,0.137919009046371,0.137919009046371,-105.0111874,39.7692764,-105.0111996,39.7705167
-14351,2454,3222,0.134234515444875,0.134234515444875,-105.0111996,39.7705167,-105.0111996,39.7717239
-14352,3222,5743,0.134597141931663,0.134597141931663,-105.0111996,39.7717239,-105.0112253,39.7729342
-14353,5743,5520,0.133175062767026,0.133175062767026,-105.0112253,39.7729342,-105.0112082,39.7741318
-14355,6454,6914,0.135018185869381,0.135018185869381,-105.0112167,39.7753455,-105.0111738,39.7765593
-14358,9331,5721,0.0487615183925519,0.0487615183925519,-105.0351853,39.7838062,-105.0357498,39.7838704
-14359,5721,7455,0.0500566721474228,0.0500566721474228,-105.0357498,39.7838704,-105.0363356,39.7838724
-14360,7455,7439,0.0502188861539984,0.0502188861539984,-105.0363356,39.7838724,-105.0369233,39.7838741
-14361,7439,9332,0.0497229240568787,0.0497229240568787,-105.0369233,39.7838741,-105.0375052,39.7838741
-14362,9332,7179,0.0495263907597367,0.0495263907597367,-105.0375052,39.7838741,-105.0380848,39.7838741
-14363,7179,6514,0.0494836674166392,0.0494836674166392,-105.0380848,39.7838741,-105.0386639,39.783874
-14364,6514,7769,0.0494751212766029,0.0494751212766029,-105.0386639,39.783874,-105.0392429,39.783874
-14365,7769,8353,0.0493044680149371,0.0493044680149371,-105.0392429,39.783874,-105.0398199,39.7838754
-14366,8353,1088,0.0496035740367965,0.0496035740367965,-105.0398199,39.7838754,-105.0404004,39.7838769
-14367,1088,9333,0.0494070055394434,0.0494070055394434,-105.0404004,39.7838769,-105.0409786,39.7838755
-18206,10280,8329,0.00812836711491393,0.00812836711491393,-105.0363386,39.7622009,-105.0363384,39.7621278
-14368,9333,7511,0.0493300687211978,0.0493300687211978,-105.0409786,39.7838755,-105.0415559,39.7838742
-14369,7511,9334,0.0505963663421883,0.0505963663421883,-105.0415559,39.7838742,-105.042148,39.7838703
-14370,9334,3859,0.0512115816031079,0.0512115816031079,-105.042148,39.7838703,-105.0427473,39.7838664
-14371,3859,7593,0.0500990561172611,0.0500990561172611,-105.0427473,39.7838664,-105.0433336,39.7838653
-14372,7593,5584,0.0522011302499861,0.0522011302499861,-105.0433336,39.7838653,-105.0439445,39.7838641
-14376,6393,4066,0.134479200667361,0.134479200667361,-105.0252309,39.747573,-105.0251451,39.7487806
-17290,7744,10084,0.402391291558362,0.402391291558362,-104.9517894,39.689329,-104.9518229,39.6857103
-14377,4066,8345,0.135023999423797,0.135023999423797,-105.0251451,39.7487806,-105.0251451,39.7499949
-14378,8345,9290,0.135014881750995,0.135014881750995,-105.0251451,39.7499949,-105.0251537,39.7512091
-14380,9290,8343,0.132811220384574,0.132811220384574,-105.0251537,39.7512091,-105.0251537,39.7524035
-14381,8343,4290,0.133533987407519,0.133533987407519,-105.0251537,39.7524035,-105.0251537,39.7536044
-14382,4290,9335,0.135902936474728,0.135902936474728,-105.0251537,39.7536044,-105.025158,39.7548266
-14383,9335,3489,0.0587665939642116,0.0587665939642116,-105.025158,39.7548266,-105.0251569,39.7553551
-14384,3489,7712,0.0755904198902593,0.0755904198902593,-105.0251569,39.7553551,-105.0251554,39.7560349
-14385,7712,27,0.134715758792357,0.134715758792357,-105.0251554,39.7560349,-105.0251661,39.7572464
-14386,27,2969,0.137103389587981,0.137103389587981,-105.0251661,39.7572464,-105.0251674,39.7584794
-14387,2969,9336,0.0109860620784292,0.0109860620784292,-105.0251674,39.7584794,-105.0251673,39.7585782
-14388,9336,9337,0.167759812178903,0.167759812178903,-105.0251673,39.7585782,-105.0251662,39.7600869
-14389,9337,9206,0.00926254133366712,0.00926254133366712,-105.0251662,39.7600869,-105.0251661,39.7601702
-14390,9206,8977,0.0113535458246787,0.0113535458246787,-105.0251661,39.7601702,-105.0251674,39.7602723
-14391,8977,8972,0.0088289433819593,0.0088289433819593,-105.0251674,39.7602723,-105.025167,39.7603517
-14392,8972,3592,0.0571990081351957,0.0571990081351957,-105.025167,39.7603517,-105.0251647,39.7608661
-14393,3592,9338,0.0469245704560806,0.0469245704560806,-105.0251647,39.7608661,-105.0251667,39.7612881
-14394,9338,9339,0.0729443531618577,0.0729443531618577,-105.0251667,39.7612881,-105.0251698,39.7619441
-14395,9339,8232,0.00668286428887123,0.00668286428887123,-105.0251698,39.7619441,-105.0251701,39.7620042
-14396,8232,9340,0.00979627303730314,0.00979627303730314,-105.0251701,39.7620042,-105.0251701,39.7620923
-14397,9340,9341,0.118389238398527,0.118389238398527,-105.0251701,39.7620923,-105.0251701,39.763157
-14398,9341,4525,0.00524840053732967,0.00524840053732967,-105.0251701,39.763157,-105.0251701,39.7632042
-14399,4525,9342,0.013599142214923,0.013599142214923,-105.0251701,39.7632042,-105.02517,39.7633265
-17917,5630,5173,0.1998812615077,0.1998812615077,-104.9856145,39.7183411,-104.9856359,39.7165436
-14400,9342,5242,0.122003116630053,0.122003116630053,-105.02517,39.7633265,-105.0251688,39.7644237
-14401,5242,6892,0.132288650893496,0.132288650893496,-105.0251688,39.7644237,-105.0251701,39.7656134
-14402,6892,9343,0.135024052446379,0.135024052446379,-105.0251701,39.7656134,-105.0251715,39.7668277
-14403,9343,1682,0.135717283468362,0.135717283468362,-105.0251715,39.7668277,-105.0251835,39.7680482
-14404,1682,9344,0.13652220484586,0.13652220484586,-105.0251835,39.7680482,-105.025201,39.7692759
-14405,9344,9345,0.105458278319657,0.105458278319657,-105.025201,39.7692759,-105.0251956,39.7702243
-14406,9345,2418,0.102009831688775,0.102009831688775,-105.0251956,39.7702243,-105.0251709,39.7711415
-14407,2418,3242,0.101232559655988,0.101232559655988,-105.0251709,39.7711415,-105.0251665,39.7720519
-14408,3242,5748,0.0982858511104491,0.0982858511104491,-105.0251665,39.7720519,-105.0251623,39.7729358
-14409,5748,374,0.0623624460797668,0.0623624460797668,-105.0251623,39.7729358,-105.0251537,39.7734966
-14410,374,5523,0.0701701821949803,0.0701701821949803,-105.0251537,39.7734966,-105.0251646,39.7741276
-14411,5523,6457,0.135950108709595,0.135950108709595,-105.0251646,39.7741276,-105.0251537,39.7753502
-14412,6457,6915,0.143043041710545,0.143043041710545,-105.0251537,39.7753502,-105.0251451,39.7766366
-14413,6915,8113,0.201708935806819,0.201708935806819,-105.0251451,39.7766366,-105.0251365,39.7784506
-14414,8113,2832,0.20096393469179,0.20096393469179,-105.0251365,39.7784506,-105.0251279,39.7802579
-14415,2832,9346,0.204633312594591,0.204633312594591,-105.0251279,39.7802579,-105.0251194,39.7820982
-14416,9346,414,0.202451705011007,0.202451705011007,-105.0251194,39.7820982,-105.025085,39.7839187
-14417,414,9347,0.0102632917291373,0.0102632917291373,-105.025085,39.7839187,-105.025085,39.784011
-14419,9348,9349,0.0562572963351917,0.0562572963351917,-105.0252787,39.756038,-105.0259368,39.7560399
-14420,9349,8300,0.00966827703924115,0.00966827703924115,-105.0259368,39.7560399,-105.0260499,39.7560402
-14421,8300,6777,0.0385409578619094,0.0385409578619094,-105.0260499,39.7560402,-105.0265007,39.7560347
-14422,6777,1544,0.0462211024255861,0.0462211024255861,-105.0265007,39.7560347,-105.0270414,39.7560347
-14423,1544,7912,0.0490573153021717,0.0490573153021717,-105.0270414,39.7560347,-105.0276151,39.7560457
-14424,7912,1233,0.049290008691593,0.049290008691593,-105.0276151,39.7560457,-105.0281917,39.7560463
-14426,6137,1235,0.0484278864865507,0.0484278864865507,-105.0287666,39.7560413,-105.0293331,39.7560445
-14427,1235,4023,0.0513600630217092,0.0513600630217092,-105.0293331,39.7560445,-105.0299339,39.7560479
-14429,9350,6747,0.132068580931606,0.132068580931606,-105.0252762,39.7536227,-105.0268211,39.7536227
-14430,6747,6147,0.133962898476652,0.133962898476652,-105.0268211,39.7536227,-105.0283879,39.7536008
-14431,6147,4021,0.132523387247295,0.132523387247295,-105.0283879,39.7536008,-105.029938,39.753586
-14432,4021,7025,0.136778977327424,0.136778977327424,-105.029938,39.753586,-105.031538,39.753586
-14433,7025,7395,0.133533581691074,0.133533581691074,-105.031538,39.753586,-105.0331,39.7535942
-14434,7395,3404,0.129273092410981,0.129273092410981,-105.0331,39.7535942,-105.0346118,39.7536209
-14437,6743,6143,0.132668974575322,0.132668974575322,-105.0268304,39.7487612,-105.0283819,39.7487852
-14439,4017,7021,0.135416440349126,0.135416440349126,-105.0299442,39.7487903,-105.0315281,39.7488001
-15949,9764,9765,0.0507119344408952,0.0507119344408952,-104.9984431,39.7056824,-104.9988186,39.7053295
-14440,7021,2253,0.0670945211351968,0.0670945211351968,-105.0315281,39.7488001,-105.0323128,39.7487906
-14441,2253,7391,0.0705505249778064,0.0705505249778064,-105.0323128,39.7487906,-105.033138,39.748786
-14442,7391,8378,0.0284601613193826,0.0284601613193826,-105.033138,39.748786,-105.0334703,39.7487707
-14443,8378,9352,0.0168078916798857,0.0168078916798857,-105.0334703,39.7487707,-105.0336669,39.7487707
-14444,9352,9164,0.0309569561418734,0.0309569561418734,-105.0336669,39.7487707,-105.034029,39.7487707
-14445,9164,3399,0.0498252251835071,0.0498252251835071,-105.034029,39.7487707,-105.0346118,39.7487707
-14446,3399,9201,0.0503897904067021,0.0503897904067021,-105.0346118,39.7487707,-105.0352011,39.7487792
-14447,9201,8373,0.0497143012199282,0.0497143012199282,-105.0352011,39.7487792,-105.0357825,39.7487876
-14448,8373,9353,0.0509790068650631,0.0509790068650631,-105.0357825,39.7487876,-105.0363784,39.7487709
-14449,9353,7441,0.0496189650212473,0.0496189650212473,-105.0363784,39.7487709,-105.0369584,39.7487546
-14450,7441,7159,0.100702050774509,0.100702050774509,-105.0369584,39.7487546,-105.0381363,39.7487551
-14451,7159,9354,0.0494661713985568,0.0494661713985568,-105.0381363,39.7487551,-105.0387149,39.7487553
-14452,9354,7771,0.0505861336269105,0.0505861336269105,-105.0387149,39.7487553,-105.0393066,39.7487556
-14453,7771,9120,0.0493839312690347,0.0493839312690347,-105.0393066,39.7487556,-105.0398842,39.7487505
-14454,9120,1112,0.0512647827333792,0.0512647827333792,-105.0398842,39.7487505,-105.0404838,39.7487453
-14455,1112,9355,0.0498795134320378,0.0498795134320378,-105.0404838,39.7487453,-105.0410672,39.7487502
-14456,9355,7492,0.0488194630548967,0.0488194630548967,-105.0410672,39.7487502,-105.0416382,39.7487551
-14457,7492,9168,0.0520827219058429,0.0520827219058429,-105.0416382,39.7487551,-105.0422474,39.7487571
-14460,9356,8961,0.0504011792295747,0.0504011792295747,-105.025291,39.7729029,-105.0258806,39.7729129
-14461,8961,3748,0.0493839208030821,0.0493839208030821,-105.0258806,39.7729129,-105.0264583,39.7729227
-14462,3748,6769,0.0968984775923487,0.0968984775923487,-105.0264583,39.7729227,-105.0275913,39.7729556
-14463,6769,6149,0.102435146849327,0.102435146849327,-105.0275913,39.7729556,-105.0287889,39.7729931
-14465,3994,7051,0.102115193238577,0.102115193238577,-105.029945,39.7730349,-105.031138,39.773086
-14466,7051,1408,0.0946641824527164,0.0946641824527164,-105.031138,39.773086,-105.032238,39.773186
-14467,1408,7388,0.085462530975882,0.085462530975882,-105.032238,39.773186,-105.033238,39.773186
-14468,7388,7384,0.0170925061959903,0.0170925061959903,-105.033238,39.773186,-105.033438,39.773186
-18773,9634,9642,0.177090825598433,0.177090825598433,-105.0008673,39.7384682,-105.0008766,39.7368756
-14469,7384,3431,0.0989346539047275,0.0989346539047275,-105.033438,39.773186,-105.0345947,39.7731502
-14470,3431,7700,0.0518438186201772,0.0518438186201772,-105.0345947,39.7731502,-105.0352012,39.7731407
-14471,7700,5704,0.048946112444104,0.048946112444104,-105.0352012,39.7731407,-105.0357738,39.7731317
-14472,5704,9357,0.0519385112225497,0.0519385112225497,-105.0357738,39.7731317,-105.0363814,39.7731219
-14473,9357,7431,0.0487842422429383,0.0487842422429383,-105.0363814,39.7731219,-105.0369521,39.7731127
-14474,7431,9358,0.0504551193593522,0.0504551193593522,-105.0369521,39.7731127,-105.0375421,39.7730965
-14475,9358,7172,0.0479047859915454,0.0479047859915454,-105.0375421,39.7730965,-105.0381026,39.7730917
-14476,7172,6792,0.0511502123352556,0.0511502123352556,-105.0381026,39.7730917,-105.038701,39.7730829
-14477,6792,7632,0.00188047440472113,0.00188047440472113,-105.038701,39.7730829,-105.038723,39.7730826
-14478,7632,7787,0.0496192518214323,0.0496192518214323,-105.038723,39.7730826,-105.0393035,39.7730745
-14480,9359,8535,0.0508077855400009,0.0508077855400009,-105.0252953,39.7710821,-105.0258888,39.7711084
-14481,8535,6765,0.145782759028854,0.145782759028854,-105.0258888,39.7711084,-105.0275931,39.7711626
-14482,6765,3990,0.201170058672575,0.201170058672575,-105.0275931,39.7711626,-105.0299456,39.7712234
-14484,1252,9360,0.0508116162596578,0.0508116162596578,-105.020531,39.7702103,-105.0211255,39.7702143
-14485,9360,2713,0.151002345273532,0.151002345273532,-105.0211255,39.7702143,-105.0228923,39.7702104
-14486,2713,9361,0.150151679268698,0.150151679268698,-105.0228923,39.7702104,-105.0246491,39.770221
-14487,9361,9345,0.0467087251829664,0.0467087251829664,-105.0246491,39.770221,-105.0251956,39.7702243
-14489,604,9362,0.304555126012675,0.304555126012675,-104.9964331,39.7692764,-104.9999965,39.7692821
-19303,10466,10464,0.0570509910756543,0.0570509910756543,-104.988856,39.7399993,-104.9888814,39.740512
-14490,9362,3931,0.0491525010465484,0.0491525010465484,-104.9999965,39.7692821,-105.0005716,39.7692834
-14491,3931,5621,0.101973762448865,0.101973762448865,-105.0005716,39.7692834,-105.0017647,39.76929
-14492,5621,3706,0.101962569966911,0.101962569966911,-105.0017647,39.76929,-105.0029577,39.76929
-14493,3706,712,0.103443032392629,0.103443032392629,-105.0029577,39.76929,-105.0041679,39.7692768
-14494,712,9192,0.0968373320357312,0.0968373320357312,-105.0041679,39.7692768,-105.0053009,39.7692702
-14495,9192,9363,0.0080975223718546,0.0080975223718546,-105.0053009,39.7692702,-105.0053953,39.7692764
-14496,9363,8516,0.0893732443225825,0.0893732443225825,-105.0053953,39.7692764,-105.006441,39.7692764
-14497,8516,4192,0.13424362136155,0.13424362136155,-105.006441,39.7692764,-105.0080117,39.7692764
-14498,4192,2518,0.136440133151325,0.136440133151325,-105.0080117,39.7692764,-105.0096081,39.7692764
-14499,2518,6729,0.134978640871206,0.134978640871206,-105.0096081,39.7692764,-105.0111874,39.7692764
-14500,6729,1227,0.0997687727623418,0.0997687727623418,-105.0111874,39.7692764,-105.0123547,39.769283
-14501,1227,4806,0.0366740513167213,0.0366740513167213,-105.0123547,39.769283,-105.0127838,39.769283
-14502,4806,4807,0.0623613194343192,0.0623613194343192,-105.0127838,39.769283,-105.0135134,39.7692764
-14503,4807,9364,0.0735708513932139,0.0735708513932139,-105.0135134,39.7692764,-105.0143742,39.7692739
-14505,2172,9365,0.10218559205586,0.10218559205586,-105.0146807,39.7692764,-105.0158763,39.7692728
-14506,9365,6421,0.131466128237451,0.131466128237451,-105.0158763,39.7692728,-105.0174145,39.7692708
-14507,6421,4627,0.133072729014262,0.133072729014262,-105.0174145,39.7692708,-105.0189715,39.7692708
-14508,4627,1251,0.132619751836754,0.132619751836754,-105.0189715,39.7692708,-105.0205232,39.7692708
-14509,1251,9366,0.0509582244384895,0.0509582244384895,-105.0205232,39.7692708,-105.0211194,39.7692754
-14510,9366,4559,0.0827794726054668,0.0827794726054668,-105.0211194,39.7692754,-105.0220879,39.769283
-14511,4559,2712,0.0689589814233185,0.0689589814233185,-105.0220879,39.769283,-105.0228947,39.7692896
-14512,2712,2728,0.0619836012735683,0.0619836012735683,-105.0228947,39.7692896,-105.0236198,39.769279
-14513,2728,9367,0.087518882590742,0.087518882590742,-105.0236198,39.769279,-105.0246438,39.769277
-14514,9367,9344,0.0476225838725891,0.0476225838725891,-105.0246438,39.769277,-105.025201,39.7692759
-14515,9344,9368,0.00985438954363147,0.00985438954363147,-105.025201,39.7692759,-105.0253163,39.7692759
-14516,9368,9369,0.0491094576501381,0.0491094576501381,-105.0253163,39.7692759,-105.0258904,39.7692943
-18778,10124,10345,0.0125614259192805,0.0125614259192805,-105.0006648,39.7400196,-105.0006728,39.7399068
-14517,9369,7774,0.00626697755243391,0.00626697755243391,-105.0258904,39.7692943,-105.0259637,39.7692958
-14518,7774,6761,0.141378168804538,0.141378168804538,-105.0259637,39.7692958,-105.0276173,39.7693294
-14519,6761,3985,0.199192140414955,0.199192140414955,-105.0276173,39.7693294,-105.0299452,39.769416
-14521,7053,7044,0.0653254811284965,0.0653254811284965,-105.0315035,39.7694414,-105.0322674,39.7694612
-14522,7044,7387,0.0682830004024069,0.0682830004024069,-105.0322674,39.7694612,-105.0330656,39.7694876
-14523,7387,3430,0.133588924605445,0.133588924605445,-105.0330656,39.7694876,-105.0346278,39.7695271
-14524,3430,7686,0.0503796411863715,0.0503796411863715,-105.0346278,39.7695271,-105.0352172,39.7695205
-14525,7686,5703,0.0508582113883613,0.0508582113883613,-105.0352172,39.7695205,-105.0358122,39.7695139
-14526,5703,9370,0.0488667197641872,0.0488667197641872,-105.0358122,39.7695139,-105.0363839,39.7695075
-14527,9370,7429,0.0516445969542144,0.0516445969542144,-105.0363839,39.7695075,-105.0369881,39.7695008
-14528,7429,9371,0.0490112318671292,0.0490112318671292,-105.0369881,39.7695008,-105.0375615,39.7694949
-14529,9371,7171,0.0508482971319457,0.0508482971319457,-105.0375615,39.7694949,-105.0381554,39.7694678
-14530,7171,7624,0.0496771306838175,0.0496771306838175,-105.0381554,39.7694678,-105.0387364,39.7694549
-14531,7624,7786,0.0493747865229187,0.0493747865229187,-105.0387364,39.7694549,-105.0393141,39.7694531
-14532,7786,6545,0.0503324450079726,0.0503324450079726,-105.0393141,39.7694531,-105.039903,39.7694505
-14533,6545,1130,0.0509050056370777,0.0509050056370777,-105.039903,39.7694505,-105.0404986,39.769448
-14534,1130,9372,0.0485943238040251,0.0485943238040251,-105.0404986,39.769448,-105.0410671,39.769441
-14535,9372,7501,0.0507738202300539,0.0507738202300539,-105.0410671,39.769441,-105.0416611,39.7694338
-14536,7501,3847,0.101870167526128,0.101870167526128,-105.0416611,39.7694338,-105.0428508,39.7693779
-14537,3847,9373,0.0504389434046066,0.0504389434046066,-105.0428508,39.7693779,-105.0434409,39.7693717
-14538,9373,5568,0.0510557052627446,0.0510557052627446,-105.0434409,39.7693717,-105.0440382,39.7693646
-14539,5568,7550,0.0950790701641584,0.0950790701641584,-105.0440382,39.7693646,-105.0451506,39.7693556
-18779,10345,10346,0.00436025817920743,0.00436025817920743,-105.0006728,39.7399068,-105.0006741,39.7398676
-14540,7550,9374,0.691166878065482,0.691166878065482,-105.0451506,39.7693556,-105.0532374,39.7693224
-14542,9375,3750,0.0991970412293978,0.0991970412293978,-105.0252653,39.7766366,-105.0264259,39.7766517
-14543,3750,6775,0.030090245676364,0.030090245676364,-105.0264259,39.7766517,-105.0267779,39.7766583
-14544,6775,6770,0.06895159402243,0.06895159402243,-105.0267779,39.7766583,-105.0275847,39.7766649
-14545,6770,6151,0.0638158634824408,0.0638158634824408,-105.0275847,39.7766649,-105.0283314,39.7766715
-14546,6151,6150,0.0359509846886602,0.0359509846886602,-105.0283314,39.7766715,-105.028752,39.776678
-14547,6150,3996,0.0963309366011696,0.0963309366011696,-105.028752,39.776678,-105.0298791,39.7766911
-14548,3996,7052,0.102479688313932,0.102479688313932,-105.0298791,39.7766911,-105.031078,39.776711
-14549,7052,7045,0.0330120960596164,0.0330120960596164,-105.031078,39.776711,-105.0314642,39.7767176
-14550,7045,1410,0.0660204937565387,0.0660204937565387,-105.0314642,39.7767176,-105.0322367,39.7767242
-14551,1410,7375,0.0682166301368544,0.0682166301368544,-105.0322367,39.7767242,-105.0330349,39.7767308
-14552,7375,7385,0.0295959064634691,0.0295959064634691,-105.0330349,39.7767308,-105.0333812,39.7767337
-14553,7385,3434,0.103723384358152,0.103723384358152,-105.0333812,39.7767337,-105.0345947,39.776752
-14554,3434,7763,0.0498679267683769,0.0498679267683769,-105.0345947,39.776752,-105.0351781,39.7767423
-14555,7763,5714,0.0489397855227354,0.0489397855227354,-105.0351781,39.7767423,-105.0357506,39.7767314
-14556,5714,9376,0.0504544990745908,0.0504544990745908,-105.0357506,39.7767314,-105.036341,39.776731
-14557,9376,7434,0.0512120959316622,0.0512120959316622,-105.036341,39.776731,-105.0369402,39.7767242
-14558,7434,9377,0.0478236988076173,0.0478236988076173,-105.0369402,39.7767242,-105.0374998,39.776721
-14559,9377,7173,0.0504644501870281,0.0504644501870281,-105.0374998,39.776721,-105.0380903,39.7767176
-14560,7173,6757,0.0487932478126772,0.0487932478126772,-105.0380903,39.7767176,-105.0386612,39.7767112
-14561,6757,7788,0.0524425771479912,0.0524425771479912,-105.0386612,39.7767112,-105.0392748,39.7767044
-14562,7788,6629,0.0465854765801166,0.0465854765801166,-105.0392748,39.7767044,-105.0398199,39.7767003
-14563,6629,1135,0.050756073904441,0.050756073904441,-105.0398199,39.7767003,-105.0404138,39.7766958
-14564,1135,6996,0.0489590899927541,0.0489590899927541,-105.0404138,39.7766958,-105.0409867,39.7766949
-14565,6996,7502,0.0500614988346772,0.0500614988346772,-105.0409867,39.7766949,-105.0415725,39.776694
-14566,7502,9378,0.0592142721743878,0.0592142721743878,-105.0415725,39.776694,-105.0422654,39.7766923
-14567,9378,9379,0.0408406813526211,0.0408406813526211,-105.0422654,39.7766923,-105.0427433,39.7766911
-14568,9379,7525,0.051644217383113,0.051644217383113,-105.0427433,39.7766911,-105.0433434,39.7766363
-14569,7525,9380,0.00488834581127681,0.00488834581127681,-105.0433434,39.7766363,-105.0434002,39.7766311
-14570,9380,9381,0.0137184453378057,0.0137184453378057,-105.0434002,39.7766311,-105.0435596,39.7766165
-14571,9381,5577,0.0352923239739852,0.0352923239739852,-105.0435596,39.7766165,-105.0439697,39.7765791
-14572,5577,9382,0.0499195542635391,0.0499195542635391,-105.0439697,39.7765791,-105.0445538,39.7765739
-14573,9382,9383,0.00207675636441744,0.00207675636441744,-105.0445538,39.7765739,-105.0445781,39.7765737
-14574,9383,9384,0.047500863548095,0.047500863548095,-105.0445781,39.7765737,-105.0451339,39.7765688
-14575,9384,9385,0.692939297157353,0.692939297157353,-105.0451339,39.7765688,-105.0532424,39.7765622
-14576,9347,9386,0.0638147684012153,0.0638147684012153,-105.025085,39.784011,-105.025085,39.7845849
-14578,9386,7985,0.00659385915044033,0.00659385915044033,-105.025085,39.7845849,-105.025085,39.7846442
-14579,7985,9389,0.0876122732807676,0.0876122732807676,-105.025085,39.7846442,-105.0251871,39.7854282
-14581,9390,9391,0.0645406329993705,0.0645406329993705,-105.0252653,39.7845914,-105.0252579,39.784011
-14583,9391,413,0.0102638039419597,0.0102638039419597,-105.0252579,39.784011,-105.0252567,39.7839187
-14584,413,9392,0.19657163498794,0.19657163498794,-105.0252567,39.7839187,-105.0252309,39.782151
-14586,2833,2489,0.134959283423391,0.134959283423391,-105.0252481,39.7802579,-105.0252567,39.7790442
-14587,2489,8106,0.133489509437131,0.133489509437131,-105.0252567,39.7790442,-105.0252567,39.7778437
-14588,8106,9375,0.13422540798818,0.13422540798818,-105.0252567,39.7778437,-105.0252653,39.7766366
-14589,9375,5534,0.213451017222507,0.213451017222507,-105.0252653,39.7766366,-105.0252738,39.774717
-14590,5534,9356,0.201724072155003,0.201724072155003,-105.0252738,39.774717,-105.025291,39.7729029
-14591,9356,9393,0.10196574773319,0.10196574773319,-105.025291,39.7729029,-105.025291,39.7719859
-14592,9393,9359,0.100498646625457,0.100498646625457,-105.025291,39.7719859,-105.0252953,39.7710821
-14593,9359,9394,0.0995312761976722,0.0995312761976722,-105.0252953,39.7710821,-105.0253203,39.7701872
-14594,9394,9368,0.101332513335273,0.101332513335273,-105.0253203,39.7701872,-105.0253163,39.7692759
-14595,9368,9395,0.0524188937894899,0.0524188937894899,-105.0253163,39.7692759,-105.0253115,39.7688045
-14597,7373,1659,0.103861210410172,0.103861210410172,-105.0253069,39.7683544,-105.0252948,39.7674204
-14598,1659,7753,0.101665764300136,0.101665764300136,-105.0252948,39.7674204,-105.0252922,39.7665061
-14599,7753,6893,0.102477314257262,0.102477314257262,-105.0252922,39.7665061,-105.0252908,39.7655845
-14600,6893,5249,0.10178809746081,0.10178809746081,-105.0252908,39.7655845,-105.0252881,39.7646691
-14601,5249,9396,0.145009648698155,0.145009648698155,-105.0252881,39.7646691,-105.0252844,39.763365
-14602,9396,5880,0.0121536325330439,0.0121536325330439,-105.0252844,39.763365,-105.0252841,39.7632557
-14603,5880,9397,0.00548191654733534,0.00548191654733534,-105.0252841,39.7632557,-105.0252842,39.7632064
-14606,8233,9399,0.00646043089308406,0.00646043089308406,-105.0252854,39.7620032,-105.0252855,39.7619451
-14607,9399,3593,0.11814466181621,0.11814466181621,-105.0252855,39.7619451,-105.0252868,39.7608826
-14608,3593,8990,0.0502713142680652,0.0502713142680652,-105.0252868,39.7608826,-105.0252879,39.7604305
-14610,8994,8444,0.0112418070839832,0.0112418070839832,-105.0252881,39.7603424,-105.0252881,39.7602413
-14611,8444,9400,0.0106637167987107,0.0106637167987107,-105.0252881,39.7602413,-105.0252875,39.7601454
-14612,9400,9401,0.175022698409133,0.175022698409133,-105.0252875,39.7601454,-105.025278,39.7585714
-14613,9401,2970,0.0101077489563562,0.0101077489563562,-105.025278,39.7585714,-105.0252774,39.7584805
-15358,9566,9564,0.0244609132808449,0.0244609132808449,-104.9656611,39.7170239,-104.9659399,39.7170729
-15359,9564,9567,0.0131773798008107,0.0131773798008107,-104.9659399,39.7170729,-104.9660929,39.717059
-18780,10346,10347,0.0407216504299826,0.0407216504299826,-105.0006741,39.7398676,-105.0006789,39.7395014
-14614,2970,8339,0.136426769448966,0.136426769448966,-105.0252774,39.7584805,-105.0252854,39.7572536
-14615,8339,9348,0.135169766224191,0.135169766224191,-105.0252854,39.7572536,-105.0252787,39.756038
-17064,4880,9474,0.196578675384766,0.196578675384766,-104.9616527,39.7350527,-104.9616204,39.7368204
-14616,9348,9402,0.134813162708373,0.134813162708373,-105.0252787,39.756038,-105.0252747,39.7548256
-14618,9350,8341,0.135569890655856,0.135569890655856,-105.0252762,39.7536227,-105.0252824,39.7524035
-14619,8341,9291,0.132813255317002,0.132813255317002,-105.0252824,39.7524035,-105.0252738,39.7512091
-14620,9291,9403,0.135124075128598,0.135124075128598,-105.0252738,39.7512091,-105.0252739,39.7499939
-14621,9403,9351,0.135070525267418,0.135070525267418,-105.0252739,39.7499939,-105.0252652,39.7487792
-14622,9351,6393,0.134155373542404,0.134155373542404,-105.0252652,39.7487792,-105.0252309,39.747573
-14624,9393,8920,0.0508713694865286,0.0508713694865286,-105.025291,39.7719859,-105.0258859,39.7720013
-14625,8920,6767,0.14583235659915,0.14583235659915,-105.0258859,39.7720013,-105.0275913,39.7720453
-14626,6767,3992,0.20138079206452,0.20138079206452,-105.0275913,39.7720453,-105.0299454,39.772124
-14628,9389,6049,0.0198174454501223,0.0198174454501223,-105.0251871,39.7854282,-105.0251957,39.7856063
-14629,6049,5790,0.202409458864074,0.202409458864074,-105.0251957,39.7856063,-105.0252043,39.7874266
-14630,5790,9404,0.390889741592557,0.390889741592557,-105.0252043,39.7874266,-105.0251785,39.7909419
-14631,9389,8000,0.0874325326194809,0.0874325326194809,-105.0251871,39.7854282,-105.0252653,39.7846442
-14632,8000,9390,0.00587109212749533,0.00587109212749533,-105.0252653,39.7846442,-105.0252653,39.7845914
-14634,9405,9387,0.104292734331338,0.104292734331338,-105.0042679,39.7583739,-105.0032834,39.7589279
-14643,6926,912,0.0399977157837286,0.0399977157837286,-104.9982022,39.7580108,-104.9985313,39.7577551
-14645,3853,9379,0.0160272455480019,0.0160272455480019,-105.0428243,39.7765611,-105.0427433,39.7766911
-14646,9379,8109,0.188409381404142,0.188409381404142,-105.0427433,39.7766911,-105.0427373,39.7783855
-14647,8109,9407,0.202174997774683,0.202174997774683,-105.0427373,39.7783855,-105.0427327,39.7802037
-18781,10347,10348,0.0132995316754344,0.0132995316754344,-105.0006789,39.7395014,-105.0006804,39.7393818
-14649,5569,7551,0.0943021955909244,0.0943021955909244,-105.0440431,39.7711254,-105.0451465,39.7711259
-14650,7551,9408,0.692224615113747,0.692224615113747,-105.0451465,39.7711259,-105.053246,39.77113
-14651,7543,9409,0.0534301345278006,0.0534301345278006,-105.0449615,39.7672,-105.045011,39.767679
-14652,6725,4821,0.0796194906426482,0.0796194906426482,-105.0111475,39.760596,-105.0105051,39.7611145
-14653,4821,2511,0.108135424106199,0.108135424106199,-105.0105051,39.7611145,-105.0096048,39.7617977
-14654,2511,8224,0.0376491716837282,0.0376491716837282,-105.0096048,39.7617977,-105.009291,39.7620353
-14787,9415,9416,0.31094582672675,0.31094582672675,-104.9903152,39.773396,-104.99143,39.7707341
-14791,2891,8923,0.457832400708685,0.457832400708685,-104.9905111,39.7729211,-104.9942478,39.7699708
-14793,5024,3335,0.0983906046596767,0.0983906046596767,-104.9585953,39.733723,-104.9574452,39.7336966
-14795,7882,7337,0.102026433082927,0.102026433082927,-104.9563208,39.7337098,-104.9551277,39.7337164
-14796,7337,7986,0.092185977990205,0.092185977990205,-104.9551277,39.7337164,-104.9540634,39.7335844
-14797,7986,2055,0.0946262859427162,0.0946262859427162,-104.9540634,39.7335844,-104.9529569,39.7335952
-14798,2055,2661,0.105023750774947,0.105023750774947,-104.9529569,39.7335952,-104.9517288,39.7335844
-14799,2661,4134,0.100547305543173,0.100547305543173,-104.9517288,39.7335844,-104.950553,39.733591
-14800,4134,6697,0.0891067622100312,0.0891067622100312,-104.950553,39.733591,-104.949511,39.7335838
-14801,6697,8020,0.0955965901798936,0.0955965901798936,-104.949511,39.7335838,-104.9484005,39.7336828
-14802,8020,7684,0.0959578997394599,0.0959578997394599,-104.9484005,39.7336828,-104.9472785,39.7336681
-14803,7684,3458,0.0944062286409825,0.0944062286409825,-104.9472785,39.7336681,-104.9461745,39.7336634
-14804,3458,9418,0.046227752797198,0.046227752797198,-104.9461745,39.7336634,-104.9456339,39.7336646
-14805,9418,6020,0.0461318959590008,0.0461318959590008,-104.9456339,39.7336646,-104.9450945,39.7336574
-14806,6020,9419,0.0476773807861996,0.0476773807861996,-104.9450945,39.7336574,-104.944537,39.7336514
-19851,10660,10659,0.00933491084100046,0.00933491084100046,-105.0352222,39.7384654,-105.035226,39.7385493
-14807,9419,9420,0.0464971294902911,0.0464971294902911,-104.944537,39.7336514,-104.9439933,39.7336456
-14808,9420,9421,0.0470997921907546,0.0470997921907546,-104.9439933,39.7336456,-104.9434425,39.7336457
-14809,9421,858,0.0457230540386264,0.0457230540386264,-104.9434425,39.7336457,-104.9429078,39.7336457
-14810,858,453,0.0467078777528092,0.0467078777528092,-104.9429078,39.7336457,-104.9423616,39.733649
-14811,453,7106,0.0457758284617094,0.0457758284617094,-104.9423616,39.733649,-104.9418263,39.7336523
-14812,7106,457,0.0455135048722811,0.0455135048722811,-104.9418263,39.7336523,-104.9412942,39.7336426
-14813,457,9422,0.0463689143813771,0.0463689143813771,-104.9412942,39.7336426,-104.9407521,39.7336327
-14815,9423,9424,0.00582356405087118,0.00582356405087118,-105.0158749,39.754908,-105.0159208,39.7548693
-14817,9425,6432,0.0926350815349589,0.0926350815349589,-105.0167051,39.7548156,-105.0177887,39.7548225
-14818,6432,4657,0.117278685803448,0.117278685803448,-105.0177887,39.7548225,-105.0191606,39.7548276
-14819,4657,1280,0.116593491044555,0.116593491044555,-105.0191606,39.7548276,-105.0205245,39.7548287
-14820,1280,4531,0.132186730302242,0.132186730302242,-105.0205245,39.7548287,-105.0220708,39.7548328
-14951,7670,9457,3.41600373692151,3.41600373692151,-104.9245872,39.7382725,-104.8846398,39.7386634
-14952,3583,7612,0.0941905477613176,0.0941905477613176,-104.9394304,39.7546656,-104.9383286,39.7546719
-14953,7612,7265,0.0936588343585109,0.0936588343585109,-104.9383286,39.7546719,-104.937233,39.7546682
-14955,7584,2001,0.0944700456489753,0.0944700456489753,-104.936128,39.7546682,-104.9350229,39.7546682
-14956,2001,3361,0.0949233780276755,0.0949233780276755,-104.9350229,39.7546682,-104.9339125,39.7546702
-14957,3361,2755,0.0936752171867012,0.0936752171867012,-104.9339125,39.7546702,-104.9328167,39.7546719
-14958,2755,7006,0.0959502415519421,0.0959502415519421,-104.9328167,39.7546719,-104.9316943,39.7546764
-14959,7006,2281,0.099513679348955,0.099513679348955,-104.9316943,39.7546764,-104.9305302,39.7546764
-14960,2281,3582,0.100891029071921,0.100891029071921,-104.9305302,39.7546764,-104.92935,39.7546723
-14961,3582,7528,0.100887947066067,0.100887947066067,-104.92935,39.7546723,-104.9281699,39.7546826
-14962,7528,2136,0.103412071247308,0.103412071247308,-104.9281699,39.7546826,-104.9269602,39.7546847
-14963,2136,5993,0.100671897064821,0.100671897064821,-104.9269602,39.7546847,-104.9257827,39.7546991
-14964,5993,7673,0.0999667195935639,0.0999667195935639,-104.9257827,39.7546991,-104.9246133,39.7546991
-14986,8886,7162,0.0452381047162121,0.0452381047162121,-104.9798704,39.7432669,-104.9793413,39.7432656
-14985,8878,8886,0.104437941202429,0.104437941202429,-104.9810919,39.7432682,-104.9798704,39.7432669
-14987,7162,9309,0.0512658726512666,0.0512658726512666,-104.9793413,39.7432656,-104.9787417,39.7432641
-15109,7996,6927,0.0217805821755954,0.0217805821755954,-104.9977757,39.7584584,-104.9980305,39.7584589
-15110,6927,5675,0.030815905152866,0.030815905152866,-104.9980305,39.7584589,-104.998391,39.7584595
-14965,7673,9461,2.89733038736532,2.89733038736532,-104.9246133,39.7546991,-104.8907207,39.7546542
-14966,8151,7610,0.094248596661074,0.094248596661074,-104.9394486,39.7510451,-104.9383462,39.7510533
-15088,2328,9485,2.88346551451846,2.88346551451846,-104.9240271,39.7656085,-104.890296,39.7651798
-15089,9486,3468,0.447301506508283,0.447301506508283,-104.9406618,39.7619502,-104.9458947,39.7619213
-15090,3468,3445,0.0309512876225537,0.0309512876225537,-104.9458947,39.7619213,-104.9462568,39.7619224
-15091,3445,7699,0.105014135175069,0.105014135175069,-104.9462568,39.7619224,-104.9474853,39.7619327
-15092,7699,9487,0.105691765273947,0.105691765273947,-104.9474853,39.7619327,-104.9487218,39.7619316
-15093,9487,6684,0.102061996358298,0.102061996358298,-104.9487218,39.7619316,-104.9499154,39.7619564
-15094,6684,4128,0.108739719526669,0.108739719526669,-104.9499154,39.7619564,-104.9511874,39.7619719
-15095,4128,9488,0.104836941153267,0.104836941153267,-104.9511874,39.7619719,-104.9524139,39.7619708
-15096,9488,2082,0.105803010632854,0.105803010632854,-104.9524139,39.7619708,-104.9536517,39.7619729
-15097,2082,7334,0.1052078044876,0.1052078044876,-104.9536517,39.7619729,-104.9548825,39.7619805
-15101,9489,2994,0.0812267643509346,0.0812267643509346,-104.9963423,39.760645,-104.995393,39.7606779
-15105,2996,4851,0.0525302115232072,0.0525302115232072,-104.9954583,39.7585204,-104.996067,39.7584555
-15106,4851,7227,0.0344830493164063,0.0344830493164063,-104.996067,39.7584555,-104.9964704,39.7584562
-15107,7227,2369,0.0550241369558443,0.0550241369558443,-104.9964704,39.7584562,-104.9971141,39.7584573
-15108,2369,7996,0.056554238974086,0.056554238974086,-104.9971141,39.7584573,-104.9977757,39.7584584
-16370,9877,8705,0.102117755919592,0.102117755919592,-104.9392992,39.7619966,-104.9404928,39.7619574
-16371,8705,9486,0.014467692878557,0.014467692878557,-104.9404928,39.7619574,-104.9406618,39.7619502
-16373,8076,3329,0.0677844820507112,0.0677844820507112,-104.9580824,39.7607455,-104.9573301,39.7609383
-16374,3329,7880,0.139626392785753,0.139626392785753,-104.9573301,39.7609383,-104.9561137,39.7617764
-16375,7880,7333,0.105584363104376,0.105584363104376,-104.9561137,39.7617764,-104.9548815,39.761843
-16376,7333,2081,0.10500807653965,0.10500807653965,-104.9548815,39.761843,-104.953653,39.761844
-16377,2081,2678,0.105119136499329,0.105119136499329,-104.953653,39.761844,-104.9524232,39.761844
-16491,6692,8028,0.103532298857838,0.103532298857838,-104.9500467,39.7437984,-104.9488359,39.7437854
-16379,4127,6683,0.108621189217377,0.108621189217377,-104.9511861,39.7618358,-104.9499154,39.7618255
-16385,9881,9882,0.0163548118473388,0.0163548118473388,-104.9710436,39.7033454,-104.9710939,39.7032035
-16386,9882,9458,0.0203986664758761,0.0203986664758761,-104.9710939,39.7032035,-104.9711616,39.7030276
-16394,3281,9883,0.00468216635493236,0.00468216635493236,-104.9710667,39.7027917,-104.9711214,39.7027903
-16396,9884,9458,0.0218243339760988,0.0218243339760988,-104.971175,39.7028316,-104.9711616,39.7030276
-16398,9883,9884,0.00648970201006769,0.00648970201006769,-104.9711214,39.7027903,-104.971175,39.7028316
-16400,9885,9886,0.267423928903385,0.267423928903385,-104.9695415,39.703787,-104.9705756,39.7060566
-16401,9886,9880,0.296075289776302,0.296075289776302,-104.9705756,39.7060566,-104.9718617,39.7035846
-16403,9878,9881,0.0274154521009071,0.0274154521009071,-104.971336,39.7034463,-104.9710436,39.7033454
-16404,9881,9887,0.0188694353495207,0.0188694353495207,-104.9710436,39.7033454,-104.9708237,39.7033586
-16405,9887,9888,0.0187489585891175,0.0187489585891175,-104.9708237,39.7033586,-104.9706065,39.7033361
-19509,10534,10535,0.00388440521802765,0.00388440521802765,-104.9882751,39.7088082,-104.9882297,39.7088075
-16425,3407,9890,0.502103946549802,0.502103946549802,-104.9699417,39.6974212,-104.9695728,39.7019278
-16426,9890,3331,0.0251683632208894,0.0251683632208894,-104.9695728,39.7019278,-104.9693109,39.7020309
-16481,7888,3680,0.0532502584498927,0.0532502584498927,-104.983517,39.7478374,-104.9830181,39.7475507
-16483,4595,8006,0.101626087251738,0.101626087251738,-104.9581328,39.7438013,-104.9569442,39.743807
-16484,8006,580,0.022127419381672,0.022127419381672,-104.9569442,39.743807,-104.9566854,39.743808
-16485,580,7979,0.165894151722243,0.165894151722243,-104.9566854,39.743808,-104.9547451,39.7438115
-16486,7979,9923,0.0456395565118553,0.0456395565118553,-104.9547451,39.7438115,-104.9542113,39.7438103
-16487,9923,2066,0.0539845223115493,0.0539845223115493,-104.9542113,39.7438103,-104.9535799,39.7438083
-16488,2066,2641,0.100182277305196,0.100182277305196,-104.9535799,39.7438083,-104.9524082,39.7438154
-16489,2641,4107,0.0977431302735631,0.0977431302735631,-104.9524082,39.7438154,-104.9512653,39.743795
-16490,4107,6692,0.10418977795868,0.10418977795868,-104.9512653,39.743795,-104.9500467,39.7437984
-16492,8028,7698,0.0982299872130606,0.0982299872130606,-104.9488359,39.7437854,-104.947687,39.743787
-16493,7698,3443,0.0993337912559461,0.0993337912559461,-104.947687,39.743787,-104.9465253,39.7437746
-16494,3443,6011,0.101499429536563,0.101499429536563,-104.9465253,39.7437746,-104.9453382,39.743767
-16495,6011,3878,0.0977083732706848,0.0977083732706848,-104.9453382,39.743767,-104.9441954,39.743766
-16496,3878,9924,0.0991972529095445,0.0991972529095445,-104.9441954,39.743766,-104.9430352,39.7437705
-16497,9924,420,0.100553893040038,0.100553893040038,-104.9430352,39.7437705,-104.9418594,39.7437507
-16504,8592,9925,0.120377099914021,0.120377099914021,-105.0036056,39.7454327,-105.004838,39.7449092
-16505,9925,9926,0.107491921110891,0.107491921110891,-105.004838,39.7449092,-105.005919,39.7444156
-16506,9926,9927,0.123107053114174,0.123107053114174,-105.005919,39.7444156,-105.0051948,39.7434587
-16517,8288,3009,0.0410924117477314,0.0410924117477314,-104.9878071,39.7473599,-104.9873284,39.7473931
-16519,9451,4779,0.246284579163,0.246284579163,-104.933915,39.7209388,-104.9338206,39.7231525
-16520,4779,6557,0.132912762129515,0.132912762129515,-104.9338206,39.7231525,-104.9338133,39.7243478
-16521,6557,9306,0.107414375743234,0.107414375743234,-104.9338133,39.7243478,-104.9338148,39.7253138
-16523,5147,9150,0.0526798805531595,0.0526798805531595,-104.925132,39.7295572,-104.9246762,39.7292385
-16527,862,703,0.202686588734239,0.202686588734239,-104.9428936,39.7401262,-104.9430426,39.7419454
-16528,703,9924,0.202942846886287,0.202942846886287,-104.9430426,39.7419454,-104.9430352,39.7437705
-16533,9141,9155,0.0471076181125112,0.0471076181125112,-104.9960053,39.7064848,-104.9962707,39.706856
-16549,9936,8118,0.163748197039451,0.163748197039451,-104.9796276,39.7485669,-104.9781487,39.7495027
-16550,8118,4329,0.102460572786022,0.102460572786022,-104.9781487,39.7495027,-104.9769503,39.7494919
-16551,4329,9932,0.0509040459853039,0.0509040459853039,-104.9769503,39.7494919,-104.9763549,39.7494877
-16552,9932,5034,0.0506801147751554,0.0506801147751554,-104.9763549,39.7494877,-104.9757621,39.7494857
-16553,5034,9935,0.0507841642169636,0.0507841642169636,-104.9757621,39.7494857,-104.9751681,39.7494897
-16554,9935,7991,0.0519996695117493,0.0519996695117493,-104.9751681,39.7494897,-104.9745599,39.7494843
-16555,7991,9939,0.0501954054420559,0.0501954054420559,-104.9745599,39.7494843,-104.9739728,39.7494793
-16557,2889,8382,0.106173445564903,0.106173445564903,-104.9733549,39.749474,-104.972113,39.7494781
-16558,8382,8542,0.105198351895408,0.105198351895408,-104.972113,39.7494781,-104.9708826,39.7494657
-16559,8542,4730,0.104923019039301,0.104923019039301,-104.9708826,39.7494657,-104.9696554,39.7494546
-16560,4730,6797,0.109090547930583,0.109090547930583,-104.9696554,39.7494546,-104.9683794,39.7494616
-16561,6797,7349,0.101581569748298,0.101581569748298,-104.9683794,39.7494616,-104.9671912,39.7494616
-16562,7349,5395,0.107089477151985,0.107089477151985,-104.9671912,39.7494616,-104.9659386,39.7494554
-16563,5395,8556,0.104796077599276,0.104796077599276,-104.9659386,39.7494554,-104.9647128,39.7494554
-17270,82,7309,0.202171029293651,0.202171029293651,-104.9623177,39.7002318,-104.9622856,39.7020498
-16564,8556,3897,0.106860413590027,0.106860413590027,-104.9647128,39.7494554,-104.9634629,39.7494637
-16565,3897,1030,0.106538064092827,0.106538064092827,-104.9634629,39.7494637,-104.9622168,39.7494743
-16566,1030,6272,0.104663636918357,0.104663636918357,-104.9622168,39.7494743,-104.9609926,39.7494657
-16567,6272,9940,0.0522044777389819,0.0522044777389819,-104.9609926,39.7494657,-104.960382,39.7494708
-16568,9940,9941,0.0539741744852114,0.0539741744852114,-104.960382,39.7494708,-104.9597507,39.749476
-16570,5969,9942,0.0525274850765404,0.0525274850765404,-104.98198,39.7503787,-104.9824158,39.7507117
-16571,9942,9943,0.0464624768491459,0.0464624768491459,-104.9824158,39.7507117,-104.9827994,39.7510077
-16572,9943,3013,0.00948387351005329,0.00948387351005329,-104.9827994,39.7510077,-104.9828772,39.7510685
-16573,3013,9944,0.0499659888588949,0.0499659888588949,-104.9828772,39.7510685,-104.9832891,39.7513873
-16574,9944,4387,0.0525459349585223,0.0525459349585223,-104.9832891,39.7513873,-104.9837317,39.7517152
-16575,4387,8415,0.053989635677053,0.053989635677053,-104.9837317,39.7517152,-104.9841796,39.7520575
-16576,8415,9945,0.0518942546071768,0.0518942546071768,-104.9841796,39.7520575,-104.9846155,39.7523823
-16577,9945,8419,0.054710567315966,0.054710567315966,-104.9846155,39.7523823,-104.9850687,39.7527297
-16578,8419,9946,0.0495941326709913,0.0495941326709913,-104.9850687,39.7527297,-104.9854693,39.7530523
-16579,9946,8502,0.0543577768356107,0.0543577768356107,-104.9854693,39.7530523,-104.985916,39.7534002
-16580,8502,8537,0.0523876514778538,0.0523876514778538,-104.985916,39.7534002,-104.9863465,39.7537355
-16581,8537,9591,0.106159293603162,0.106159293603162,-104.9863465,39.7537355,-104.9872304,39.7544061
-16582,9591,9318,0.0186755424929809,0.0186755424929809,-104.9872304,39.7544061,-104.9873865,39.7545236
-16584,3674,9947,0.0925100597395306,0.0925100597395306,-104.9782423,39.7475122,-104.9790113,39.7480975
-16585,9947,9936,0.0741653442201567,0.0741653442201567,-104.9790113,39.7480975,-104.9796276,39.7485669
-16586,9936,5811,0.0698256524972049,0.0698256524972049,-104.9796276,39.7485669,-104.9802084,39.7490084
-16587,5811,7575,0.109874082628797,0.109874082628797,-104.9802084,39.7490084,-104.9811177,39.7497067
-16588,7575,8407,0.0534887493842637,0.0534887493842637,-104.9811177,39.7497067,-104.9815533,39.750052
-16589,8407,5969,0.0514820185730379,0.0514820185730379,-104.9815533,39.750052,-104.98198,39.7503787
-16615,5811,5357,0.148515460139762,0.148515460139762,-104.9802084,39.7490084,-104.9790225,39.7499844
-16616,5357,8119,0.104815937410374,0.104815937410374,-104.9790225,39.7499844,-104.978147,39.7506443
-16621,9938,9956,0.0146143299800706,0.0146143299800706,-104.9856294,39.7391313,-104.9857322,39.7392363
-16622,9956,9957,0.0128596804561102,0.0128596804561102,-104.9857322,39.7392363,-104.9856428,39.7393293
-16624,9958,9959,0.0111717692412778,0.0111717692412778,-104.9855355,39.7393169,-104.9854926,39.739222
-16625,9959,9960,0.00928483420505699,0.00928483420505699,-104.9854926,39.739222,-104.9855516,39.7391519
-16626,9960,9938,0.0070355984277229,0.0070355984277229,-104.9855516,39.7391519,-104.9856294,39.7391313
-16628,9961,9962,0.526903283655783,0.526903283655783,-104.9531023,39.7400594,-104.9592628,39.7399435
-16630,9963,9312,1.46582798607179,1.46582798607179,-104.9616093,39.739874,-104.9787525,39.7399405
-16633,9965,9966,0.00412165910041822,0.00412165910041822,-104.9859809,39.7399196,-104.9860291,39.7399191
-16634,9966,9967,0.0757681110838303,0.0757681110838303,-104.9860291,39.7399191,-104.986072,39.7392385
-16638,9965,9957,0.0717225435233069,0.0717225435233069,-104.9859809,39.7399196,-104.9856428,39.7393293
-16640,9964,9958,0.0807216833328343,0.0807216833328343,-104.9850261,39.7399281,-104.9855355,39.7393169
-16642,9967,9956,0.0290555152245672,0.0290555152245672,-104.986072,39.7392385,-104.9857322,39.7392363
-16645,565,7092,0.0721739648747923,0.0721739648747923,-104.9854426,39.7390647,-104.9848557,39.7385982
-16646,7092,9969,0.0060839008927764,0.0060839008927764,-104.9848557,39.7385982,-104.9848573,39.7385435
-16658,651,9973,0.109528403212781,0.109528403212781,-104.9861093,39.7416811,-104.9873866,39.7416062
-16660,3165,8089,0.106908291090671,0.106908291090671,-105.0030875,39.7426587,-105.0019804,39.7431056
-16662,9927,8897,0.00902355166325831,0.00902355166325831,-105.0051948,39.7434587,-105.0051222,39.7433998
-16663,8897,8899,0.00817755039331079,0.00817755039331079,-105.0051222,39.7433998,-105.0050563,39.7433465
-16665,8896,8898,0.0955954321276197,0.0955954321276197,-105.0048016,39.7429839,-105.0038366,39.7434181
-16666,8898,3166,0.0120380596695599,0.0120380596695599,-105.0038366,39.7434181,-105.0037031,39.7434525
-16726,3074,5275,0.102580698126288,0.102580698126288,-104.9862922,39.7129578,-104.9862654,39.7138801
-16727,5275,6866,0.0979724094285353,0.0979724094285353,-104.9862654,39.7138801,-104.9862493,39.7147611
-17386,5920,919,0.177782086780631,0.177782086780631,-104.9842358,39.7304466,-104.9842225,39.7320454
-16728,6866,5172,0.198907590330119,0.198907590330119,-104.9862493,39.7147611,-104.9862386,39.7165499
-16730,8563,6368,0.270917565484422,0.270917565484422,-104.9293999,39.7256232,-104.9294128,39.7280596
-16731,6368,9149,0.131210826087923,0.131210826087923,-104.9294128,39.7280596,-104.9294074,39.7292396
-16779,73,3512,0.203753724402901,0.203753724402901,-104.9663438,39.7002174,-104.966341,39.698385
-16780,3512,4254,0.201507995491671,0.201507995491671,-104.966341,39.698385,-104.9663465,39.6965728
-16781,4254,8742,0.199898657335298,0.199898657335298,-104.9663465,39.6965728,-104.9663604,39.6947751
-16782,8742,8713,0.201418841949,0.201418841949,-104.9663604,39.6947751,-104.966356,39.6929637
-16784,3511,4252,0.198740800817733,0.198740800817733,-104.9675186,39.6983807,-104.9675293,39.6965934
-16785,4252,8741,0.201811596521788,0.201811596521788,-104.9675293,39.6965934,-104.9675005,39.6947786
-16786,8741,8712,0.201811329628688,0.201811329628688,-104.9675005,39.6947786,-104.9675147,39.6929637
-16794,4264,8747,0.202686112287629,0.202686112287629,-104.9593265,39.6965961,-104.9593265,39.6947733
-16795,8747,8718,0.200629598901607,0.200629598901607,-104.9593265,39.6947733,-104.9593208,39.692969
-16797,4264,9864,0.0549036584382557,0.0549036584382557,-104.9593265,39.6965961,-104.9586848,39.6965926
-16798,9864,6516,0.0494449113838383,0.0494449113838383,-104.9586848,39.6965926,-104.9581069,39.6965895
-16799,6516,9855,0.048981731510525,0.048981731510525,-104.9581069,39.6965895,-104.9575344,39.69659
-16800,9855,6160,0.0501282016561891,0.0501282016561891,-104.9575344,39.69659,-104.9569485,39.6965905
-16801,6160,9852,0.0487763612951203,0.0487763612951203,-104.9569485,39.6965905,-104.9563784,39.6965905
-16802,9852,2738,0.0474245519497852,0.0474245519497852,-104.9563784,39.6965905,-104.9558241,39.6965905
-16803,2738,9267,0.050437767682916,0.050437767682916,-104.9558241,39.6965905,-104.9552346,39.6965869
-16804,9267,4512,0.0485383641713966,0.0485383641713966,-104.9552346,39.6965869,-104.9546673,39.6965834
-16805,4512,9858,0.0494525517955229,0.0494525517955229,-104.9546673,39.6965834,-104.9540893,39.6965849
-16807,3171,9861,0.047855446066228,0.047855446066228,-104.9534926,39.6965864,-104.9529333,39.6965815
-16808,9861,4996,0.0491871460939442,0.0491871460939442,-104.9529333,39.6965815,-104.9523584,39.6965806
-16810,728,3665,0.0984709387661759,0.0984709387661759,-104.951164,39.6965829,-104.9500131,39.6965763
-16811,3665,7315,0.0976596112157836,0.0976596112157836,-104.9500131,39.6965763,-104.9488718,39.6965905
-16812,7315,4586,0.099898936211385,0.099898936211385,-104.9488718,39.6965905,-104.9477042,39.6965961
-16813,4586,8032,0.100609280081376,0.100609280081376,-104.9477042,39.6965961,-104.9465284,39.6965829
-16814,8032,6372,0.100607138332673,0.100607138332673,-104.9465284,39.6965829,-104.9453525,39.6965829
-16815,6372,10015,0.0481181392934118,0.0481181392934118,-104.9453525,39.6965829,-104.9447901,39.696585
-16816,10015,4826,0.0474935217651045,0.0474935217651045,-104.9447901,39.696585,-104.944235,39.696587
-16817,4826,8954,0.102669069502609,0.102669069502609,-104.944235,39.696587,-104.943035,39.696587
-16818,8954,8956,0.0962963283421786,0.0962963283421786,-104.943035,39.696587,-104.9419095,39.6965915
-16819,8956,10016,0.0513191391251647,0.0513191391251647,-104.9419095,39.6965915,-104.9413099,39.696579
-16820,10016,8816,0.0499640269903021,0.0499640269903021,-104.9413099,39.696579,-104.940726,39.6965715
-16821,8816,8828,0.0154260311566384,0.0154260311566384,-104.940726,39.6965715,-104.9405457,39.6965715
-16822,8828,8206,0.163758839265649,0.163758839265649,-104.9405457,39.6965715,-104.9386317,39.6965781
-16824,7312,87,0.200996583193063,0.200996583193063,-104.959341,39.7020293,-104.9593351,39.7002217
-16825,87,3523,0.203555810471145,0.203555810471145,-104.9593351,39.7002217,-104.9593466,39.6983911
-16826,3523,4264,0.199602301480838,0.199602301480838,-104.9593466,39.6983911,-104.9593265,39.6965961
-16828,7312,3648,0.154169800390109,0.154169800390109,-104.959341,39.7020293,-104.9576929,39.7025901
-16832,10017,593,0.487939330962151,0.487939330962151,-104.9722814,39.707401,-104.9689126,39.70386
-16851,8718,9866,0.0548710295017979,0.0548710295017979,-104.9593208,39.692969,-104.9586795,39.6929681
-16854,9854,6162,0.0501051333475743,0.0501051333475743,-104.9575371,39.6929673,-104.9569515,39.6929673
-16855,6162,9851,0.0483439490024107,0.0483439490024107,-104.9569515,39.6929673,-104.9563865,39.692964
-16856,9851,2740,0.0471290060929331,0.0471290060929331,-104.9563865,39.692964,-104.9558357,39.6929607
-16857,2740,9863,0.0493697108471136,0.0493697108471136,-104.9558357,39.6929607,-104.9552587,39.6929589
-16858,9863,5231,0.0496606668462506,0.0496606668462506,-104.9552587,39.6929589,-104.9546783,39.692957
-16859,5231,9857,0.0497084193128251,0.0497084193128251,-104.9546783,39.692957,-104.9540974,39.6929504
-16860,9857,3173,0.0501789646371779,0.0501789646371779,-104.9540974,39.6929504,-104.953511,39.6929438
-16861,3173,9860,0.0494391268160734,0.0494391268160734,-104.953511,39.6929438,-104.9529332,39.6929471
-16862,9860,4998,0.0489685461673918,0.0489685461673918,-104.9529332,39.6929471,-104.9523609,39.6929504
-16863,4998,10023,0.0484162493280967,0.0484162493280967,-104.9523609,39.6929504,-104.9517951,39.692944
-16864,10023,730,0.0507353905968115,0.0507353905968115,-104.9517951,39.692944,-104.9512022,39.6929372
-16865,730,7061,0.101358904320696,0.101358904320696,-104.9512022,39.6929372,-104.9500177,39.6929504
-16867,8718,5830,0.204166330856198,0.204166330856198,-104.9593208,39.692969,-104.9593294,39.6911329
-16868,5830,7737,0.202033972193846,0.202033972193846,-104.9593294,39.6911329,-104.9593582,39.6893161
-16869,7737,10024,0.307945705057077,0.307945705057077,-104.9593582,39.6893161,-104.9594131,39.686547
-16870,594,7303,0.202197872623945,0.202197872623945,-104.9686935,39.7038655,-104.968686,39.7020471
-16871,7303,66,0.20266387330283,0.20266387330283,-104.968686,39.7020471,-104.968686,39.7002245
-16872,66,3507,0.204877942956717,0.204877942956717,-104.968686,39.7002245,-104.9686775,39.698382
-16873,3507,233,0.199133503403233,0.199133503403233,-104.9686775,39.698382,-104.968695,39.6965912
-16874,233,8739,0.200473333247617,0.200473333247617,-104.968695,39.6965912,-104.968695,39.6947883
-16876,9203,4390,0.147691017735613,0.147691017735613,-104.9873873,39.7502468,-104.9873785,39.7489186
-16878,1943,10025,0.122583563426404,0.122583563426404,-104.9902169,39.7384586,-104.9916503,39.7384388
-16879,10025,7860,0.110082433757866,0.110082433757866,-104.9916503,39.7384388,-104.9929377,39.7384322
-16880,7860,4679,0.101138191051348,0.101138191051348,-104.9929377,39.7384322,-104.9941204,39.7384454
-16881,4679,4942,0.0999327202014087,0.0999327202014087,-104.9941204,39.7384454,-104.9952889,39.7384631
-16882,4942,7214,0.0998696563081419,0.0998696563081419,-104.9952889,39.7384631,-104.9964568,39.738452
-16883,7214,4928,0.0376169687692631,0.0376169687692631,-104.9964568,39.738452,-104.9968967,39.7384563
-16884,4928,9636,0.014060573587084,0.014060573587084,-104.9968967,39.7384563,-104.9970611,39.7384591
-16886,9870,1167,0.138451400347842,0.138451400347842,-104.9561166,39.7619811,-104.9560938,39.7632261
-16887,1167,887,0.138706454254422,0.138706454254422,-104.9560938,39.7632261,-104.9561023,39.7644735
-16888,887,4471,0.139683302205089,0.139683302205089,-104.9561023,39.7644735,-104.9561053,39.7657297
-16890,9488,1170,0.13939401140641,0.13939401140641,-104.9524139,39.7619708,-104.9524125,39.7632244
-16891,1170,890,0.137058995578611,0.137058995578611,-104.9524125,39.7632244,-104.9524103,39.764457
-16892,890,4474,0.140851028519895,0.140851028519895,-104.9524103,39.764457,-104.9524143,39.7657237
-16893,4474,2796,0.132878137732711,0.132878137732711,-104.9524143,39.7657237,-104.9524116,39.7669187
-16894,2796,5265,0.13228574865076,0.13228574865076,-104.9524116,39.7669187,-104.9524289,39.7681083
-16895,5265,10026,0.123565762779561,0.123565762779561,-104.9524289,39.7681083,-104.9524147,39.7692195
-16896,5633,7143,0.082551113540924,0.082551113540924,-104.9721228,39.7557358,-104.9721228,39.7564782
-16899,8743,4255,0.199339176026767,0.199339176026767,-104.9658013,39.6947852,-104.9658026,39.6965779
-16905,6305,6456,0.135927811837651,0.135927811837651,-105.0158628,39.7765644,-105.0158736,39.775342
-16906,6456,5521,0.134557743068365,0.134557743068365,-105.0158736,39.775342,-105.0158789,39.7741319
-16907,5521,5744,0.134669392965434,0.134669392965434,-105.0158789,39.7741319,-105.0158722,39.7729208
-16908,5744,3224,0.133413468985769,0.133413468985769,-105.0158722,39.7729208,-105.0158803,39.771721
-16909,3224,2456,0.134335811293817,0.134335811293817,-105.0158803,39.771721,-105.015887,39.7705129
-16910,2456,9365,0.137895860915298,0.137895860915298,-105.015887,39.7705129,-105.0158763,39.7692728
-16911,9365,1677,0.134681074434199,0.134681074434199,-105.0158763,39.7692728,-105.0158682,39.7680616
-16912,1677,10027,0.135027096454707,0.135027096454707,-105.0158682,39.7680616,-105.0158575,39.7668473
-16913,10027,6891,0.134223449290887,0.134223449290887,-105.0158575,39.7668473,-105.0158561,39.7656402
-16914,6891,5239,0.133857055503606,0.133857055503606,-105.0158561,39.7656402,-105.0158514,39.7644364
-16915,5239,4520,0.134947645289316,0.134947645289316,-105.0158514,39.7644364,-105.0158588,39.7632228
-16916,4520,8229,0.133768415422039,0.133768415422039,-105.0158588,39.7632228,-105.015853,39.7620198
-16917,8229,6091,0.136267738734572,0.136267738734572,-105.015853,39.7620198,-105.0158342,39.7607944
-16918,6091,7927,0.0726325260844626,0.0726325260844626,-105.0158342,39.7607944,-105.0158342,39.7601412
-16919,7927,7846,0.0557691009082279,0.0557691009082279,-105.0158342,39.7601412,-105.0158428,39.7596397
-16920,7846,9410,0.0110872018563396,0.0110872018563396,-105.0158428,39.7596397,-105.015841,39.75954
-16921,9410,6730,0.0681749492551086,0.0681749492551086,-105.015841,39.75954,-105.015836,39.7589269
-16922,6730,10028,0.0472579211328822,0.0472579211328822,-105.015836,39.7589269,-105.015835,39.7585019
-16923,10028,2954,0.0113307920442751,0.0113307920442751,-105.015835,39.7585019,-105.0158347,39.7584
-16924,2954,10029,0.0100409346238736,0.0100409346238736,-105.0158347,39.7584,-105.015835,39.7583097
-16925,10029,6168,0.125005736653953,0.125005736653953,-105.015835,39.7583097,-105.0158387,39.7571855
-16926,6168,7701,0.0662611499745025,0.0662611499745025,-105.0158387,39.7571855,-105.0158374,39.7565896
-16927,7701,8987,0.0202942911891754,0.0202942911891754,-105.0158374,39.7565896,-105.01584,39.7564071
-16928,8987,9213,0.01474166778393,0.01474166778393,-105.01584,39.7564071,-105.0158342,39.7562746
-16929,9213,7708,0.0256851882115953,0.0256851882115953,-105.0158342,39.7562746,-105.0158257,39.7560437
-16930,7708,10030,0.0413405317485577,0.0413405317485577,-105.0158257,39.7560437,-105.0158154,39.755672
-16931,10030,10031,0.036234422910969,0.036234422910969,-105.0158154,39.755672,-105.015807,39.7553462
-16932,10031,9423,0.0490701245377313,0.0490701245377313,-105.015807,39.7553462,-105.0158749,39.754908
-16934,10027,6419,0.132846643372958,0.132846643372958,-105.0158575,39.7668473,-105.0174118,39.7668473
-16935,6419,4626,0.132395451164353,0.132395451164353,-105.0174118,39.7668473,-105.0189608,39.7668411
-16936,4626,1249,0.132966501814055,0.132966501814055,-105.0189608,39.7668411,-105.0205165,39.7668391
-16937,1249,4558,0.132618380312988,0.132618380312988,-105.0205165,39.7668391,-105.0220681,39.7668318
-16938,4558,2727,0.131821083937229,0.131821083937229,-105.0220681,39.7668318,-105.0236104,39.7668329
-16939,2727,9343,0.133429127887654,0.133429127887654,-105.0236104,39.7668329,-105.0251715,39.7668277
-16941,8228,10032,0.0522172382940556,0.0522172382940556,-105.0143631,39.7620198,-105.0143643,39.7624894
-16942,10032,4519,0.0809723084454978,0.0809723084454978,-105.0143643,39.7624894,-105.0143662,39.7632176
-16943,4519,5238,0.135835767836828,0.135835767836828,-105.0143662,39.7632176,-105.0143675,39.7644392
-16944,5238,6890,0.133656501060031,0.133656501060031,-105.0143675,39.7644392,-105.0143648,39.7656412
-16945,6890,8682,0.133080513446367,0.133080513446367,-105.0143648,39.7656412,-105.0143554,39.766838
-16946,8682,10033,0.014533820296874,0.014533820296874,-105.0143554,39.766838,-105.014357,39.7669687
-16947,10033,10034,0.045058130648326,0.045058130648326,-105.014357,39.7669687,-105.0143619,39.7673739
-16948,10034,10035,0.0185816236497386,0.0185816236497386,-105.0143619,39.7673739,-105.0143641,39.767541
-16949,10035,1675,0.0576680457580287,0.0576680457580287,-105.0143641,39.767541,-105.0143702,39.7680596
-16950,1675,9364,0.135024432224183,0.135024432224183,-105.0143702,39.7680596,-105.0143742,39.7692739
-16955,10039,10040,0.0721995210382621,0.0721995210382621,-105.0167989,39.7555658,-105.0167064,39.7549204
-16958,10037,10041,0.0717852961267022,0.0717852961267022,-105.0167413,39.7559349,-105.0159755,39.75567
-16966,10043,10031,0.025182886777608,0.025182886777608,-105.0160494,39.7554749,-105.015807,39.7553462
-16969,10045,10039,0.0209823477511839,0.0209823477511839,-105.0168432,39.7557514,-105.0167989,39.7555658
-16971,8478,9438,0.0521271400869927,0.0521271400869927,-105.0065368,39.7543758,-105.0069699,39.7547058
-16972,9438,8905,0.0558565070780073,0.0558565070780073,-105.0069699,39.7547058,-105.007434,39.7550594
-16974,8478,4846,0.326789742990523,0.326789742990523,-105.0065368,39.7543758,-105.0038505,39.7522849
-17070,9465,4599,0.173875508685798,0.173875508685798,-104.9615988,39.7432195,-104.9615991,39.7447832
-16976,8474,1065,0.0530498075975429,0.0530498075975429,-105.0012293,39.7502862,-105.0016675,39.750624
-16977,1065,1604,0.0517738709202157,0.0517738709202157,-105.0016675,39.750624,-105.002095,39.7509538
-16978,1604,2199,0.109121538786623,0.109121538786623,-105.002095,39.7509538,-105.0029976,39.7516477
-16979,2199,4846,0.101668961251418,0.101668961251418,-105.0029976,39.7516477,-105.0038505,39.7522849
-16981,8583,10046,0.0456665785984412,0.0456665785984412,-105.0023143,39.7476847,-105.001796,39.747784
-16982,10046,8467,0.0226345136731024,0.0226345136731024,-105.001796,39.747784,-105.0015391,39.7478332
-16983,8467,9624,0.0229241644266869,0.0229241644266869,-105.0015391,39.7478332,-105.0012783,39.7478811
-16985,2321,10047,0.097235186001144,0.097235186001144,-104.9741575,39.7685518,-104.9733504,39.7691681
-16987,4279,6406,0.146870704035985,0.146870704035985,-104.9762513,39.7682868,-104.9774556,39.7673446
-16988,6406,635,0.144187230253749,0.144187230253749,-104.9774556,39.7673446,-104.9786451,39.7664251
-16989,635,5325,0.14662773102424,0.14662773102424,-104.9786451,39.7664251,-104.9798548,39.7654901
-16990,5325,2031,0.146219173461136,0.146219173461136,-104.9798548,39.7654901,-104.981068,39.764563
-19672,10610,10608,0.149537813443153,0.149537813443153,-105.0246432,39.7697786,-105.0228937,39.7697604
-16991,2031,7082,0.144853503450252,0.144853503450252,-104.981068,39.764563,-104.9822567,39.7636345
-16992,7082,5509,0.146165117461088,0.146165117461088,-104.9822567,39.7636345,-104.9834626,39.7627025
-16993,5509,4460,0.146698487596664,0.146698487596664,-104.9834626,39.7627025,-104.9846721,39.7617665
-16994,4460,6579,0.146306787683811,0.146306787683811,-104.9846721,39.7617665,-104.9858777,39.7608325
-16995,6579,8050,0.147127627497255,0.147127627497255,-104.9858777,39.7608325,-104.9870901,39.7598933
-16996,8050,998,0.0663040704360148,0.0663040704360148,-104.9870901,39.7598933,-104.9876372,39.7594706
-16997,998,8404,0.225438240771773,0.225438240771773,-104.9876372,39.7594706,-104.9894933,39.7580303
-16998,8404,9322,0.147049060577026,0.147049060577026,-104.9894933,39.7580303,-104.9907084,39.7570942
-16999,9322,8853,0.146215405021224,0.146215405021224,-104.9907084,39.7570942,-104.9919124,39.7561602
-17000,8853,7901,0.148314641191611,0.148314641191611,-104.9919124,39.7561602,-104.9931346,39.7552135
-17001,7901,8294,0.139664345335099,0.139664345335099,-104.9931346,39.7552135,-104.9942907,39.754326
-17002,8294,8275,0.153027219017765,0.153027219017765,-104.9942907,39.754326,-104.9955427,39.7533424
-17003,8275,5787,0.145945595293254,0.145945595293254,-104.9955427,39.7533424,-104.99675,39.7524144
-17004,5787,4818,0.144804477618788,0.144804477618788,-104.99675,39.7524144,-104.9979466,39.7514927
-17005,4818,10048,0.148574277364319,0.148574277364319,-104.9979466,39.7514927,-104.9991687,39.7505427
-17006,10048,10049,0.141579838501947,0.141579838501947,-104.9991687,39.7505427,-105.0003395,39.7496422
-17007,10049,10050,0.0340492732837983,0.0340492732837983,-105.0003395,39.7496422,-105.0006176,39.749423
-17012,10052,2402,0.196242393649725,0.196242393649725,-105.0157808,39.7546549,-105.016659,39.7530243
-17032,8989,10060,0.00622693936167768,0.00622693936167768,-105.0193135,39.7576062,-105.0193133,39.7576622
-17033,10060,10061,0.0756461423573197,0.0756461423573197,-105.0193133,39.7576622,-105.0193111,39.7583425
-17034,10061,2960,0.00915137839377932,0.00915137839377932,-105.0193111,39.7583425,-105.0193108,39.7584248
-17036,9211,23,0.0239583762029722,0.0239583762029722,-105.0192076,39.7574773,-105.0191645,39.7572644
-17042,1225,7845,0.140995210775646,0.140995210775646,-105.0118006,39.7583774,-105.0117993,39.7596454
-17043,7845,6089,0.129051193087075,0.129051193087075,-105.0117993,39.7596454,-105.0118176,39.7608059
-17044,6089,8226,0.135326560563343,0.135326560563343,-105.0118176,39.7608059,-105.0118083,39.7620229
-17107,6692,328,0.0434519039634918,0.0434519039634918,-104.9500467,39.7437984,-104.9500765,39.7441885
-17046,1226,8903,0.113651762618459,0.113651762618459,-105.01181,39.7571845,-105.0105064,39.7573854
-17048,10065,6628,1.29415946940766,1.29415946940766,-104.977472,39.6803487,-104.9775188,39.6919873
-17050,10066,4340,0.062140618563636,0.062140618563636,-104.9653754,39.757537,-104.9653214,39.7569797
-17051,4340,5636,0.138107358521106,0.138107358521106,-104.9653214,39.7569797,-104.9653325,39.7557377
-17052,5636,3565,0.143998480732308,0.143998480732308,-104.9653325,39.7557377,-104.9653106,39.7544428
-17053,3565,824,0.136450026224328,0.136450026224328,-104.9653106,39.7544428,-104.9653005,39.7532157
-17054,824,7840,0.139827641423356,0.139827641423356,-104.9653005,39.7532157,-104.9653014,39.7519582
-17055,7840,10067,0.139718785770158,0.139718785770158,-104.9653014,39.7519582,-104.9653109,39.7507017
-17056,10067,8131,0.276864248380317,0.276864248380317,-104.9653109,39.7507017,-104.9653111,39.7482118
-17058,2251,4883,0.177313835055438,0.177313835055438,-104.9592063,39.733462,-104.9591955,39.7350566
-17059,4883,9473,0.195033286388948,0.195033286388948,-104.9591955,39.7350566,-104.9591742,39.7368105
-17060,9473,5482,0.176110607852179,0.176110607852179,-104.9591742,39.7368105,-104.9591722,39.7383943
-17187,10072,4065,0.107057267328692,0.107057267328692,-105.0235501,39.7478169,-105.0235939,39.7487791
-17188,4065,8344,0.135746766447532,0.135746766447532,-105.0235939,39.7487791,-105.0235939,39.7499999
-17189,8344,9289,0.134278993416053,0.134278993416053,-105.0235939,39.7499999,-105.0235939,39.7512075
-17190,9289,8342,0.133553201715071,0.133553201715071,-105.0235939,39.7512075,-105.0236111,39.7524085
-17191,8342,4289,0.132478531756059,0.132478531756059,-105.0236111,39.7524085,-105.0236168,39.7535999
-17192,4289,8346,0.0683305663670944,0.0683305663670944,-105.0236168,39.7535999,-105.0236119,39.7542144
-17193,8346,9426,0.0684183152680821,0.0684183152680821,-105.0236119,39.7542144,-105.0236131,39.7548297
-17194,9426,3584,0.0602567059919197,0.0602567059919197,-105.0236131,39.7548297,-105.0236148,39.7553716
-17195,3584,7710,0.0737335540738928,0.0737335540738928,-105.0236148,39.7553716,-105.0236168,39.7560347
-17196,7710,26,0.134781615428443,0.134781615428443,-105.0236168,39.7560347,-105.0236259,39.7572468
-17197,26,2966,0.136258381357618,0.136258381357618,-105.0236259,39.7572468,-105.0236238,39.7584722
-17256,4853,9479,0.17362135223772,0.17362135223772,-104.9861135,39.7352834,-104.9861222,39.7368448
-17257,9479,5456,0.178335939458279,0.178335939458279,-104.9861222,39.7368448,-104.9861136,39.7384486
-17258,5456,10081,0.171904914212928,0.171904914212928,-104.9861136,39.7384486,-104.9861338,39.7399945
-17259,10081,9468,0.0143846440391869,0.0143846440391869,-104.9861338,39.7399945,-104.9861285,39.7401238
-17260,9468,651,0.173171640777506,0.173171640777506,-104.9861285,39.7401238,-104.9861093,39.7416811
-17261,651,9463,0.177611656329381,0.177611656329381,-104.9861093,39.7416811,-104.9861093,39.7432784
-17262,9463,4619,0.178590206270819,0.178590206270819,-104.9861093,39.7432784,-104.9861106,39.7448845
-17263,4619,6483,0.145677633501431,0.145677633501431,-104.9861106,39.7448845,-104.9861174,39.7461946
-17264,6483,5356,0.195804224423801,0.195804224423801,-104.9861174,39.7461946,-104.9861098,39.7479555
-17272,3269,7248,0.202454633754466,0.202454633754466,-104.962291,39.7038591,-104.9623016,39.7056798
-17273,7248,1925,0.201278474909205,0.201278474909205,-104.9623016,39.7056798,-104.9622858,39.7074899
-17274,1925,6124,0.199550873736161,0.199550873736161,-104.9622858,39.7074899,-104.9622908,39.7092845
-17275,6124,3214,0.201694321030812,0.201694321030812,-104.9622908,39.7092845,-104.9622425,39.711098
-17277,8746,4263,0.201096167532594,0.201096167532594,-104.9599905,39.6947768,-104.9599877,39.6965853
-17278,4263,3522,0.200484985070532,0.200484985070532,-104.9599877,39.6965853,-104.9599931,39.6983883
-17279,3522,86,0.203786942061633,0.203786942061633,-104.9599931,39.6983883,-104.9599931,39.700221
-17280,86,7311,0.202274691239897,0.202274691239897,-104.9599931,39.700221,-104.9599932,39.7020401
-17313,8120,4330,0.101819432050732,0.101819432050732,-104.9781435,39.7507448,-104.9769525,39.7507423
-17314,4330,9933,0.0499862309964707,0.0499862309964707,-104.9769525,39.7507423,-104.9763678,39.7507423
-17315,9933,5036,0.0532026214375408,0.0532026214375408,-104.9763678,39.7507423,-104.9757455,39.7507464
-17316,5036,9934,0.0508858224299175,0.0508858224299175,-104.9757455,39.7507464,-104.9751503,39.7507424
-17317,9934,7989,0.0496485523816978,0.0496485523816978,-104.9751503,39.7507424,-104.9745699,39.7507269
-17318,7989,10087,0.0512786229284607,0.0512786229284607,-104.9745699,39.7507269,-104.9739701,39.7507304
-17319,10087,2893,0.052637962933787,0.052637962933787,-104.9739701,39.7507304,-104.9733544,39.750734
-17320,2893,8384,0.104983198266762,0.104983198266762,-104.9733544,39.750734,-104.9721264,39.7507381
-17321,8384,8544,0.106333933974543,0.106333933974543,-104.9721264,39.7507381,-104.9708826,39.750734
-17322,8544,4732,0.104863197448763,0.104863197448763,-104.9708826,39.750734,-104.9696561,39.7507215
-17323,4732,6799,0.109607467159477,0.109607467159477,-104.9696561,39.7507215,-104.968374,39.7507196
-17325,7351,5397,0.105666168592591,0.105666168592591,-104.967169,39.7507119,-104.965933,39.7507119
-17326,5397,10067,0.0531956914071383,0.0531956914071383,-104.965933,39.7507119,-104.9653109,39.7507017
-17327,10067,8558,0.0516135381916136,0.0516135381916136,-104.9653109,39.7507017,-104.9647073,39.7506919
-17328,8558,3899,0.109335032698536,0.109335032698536,-104.9647073,39.7506919,-104.9634285,39.7507051
-17329,3899,1035,0.101631825737619,0.101631825737619,-104.9634285,39.7507051,-104.9622398,39.7507175
-17330,1035,10070,0.0547697896222192,0.0547697896222192,-104.9622398,39.7507175,-104.9615992,39.7507111
-17331,10070,6274,0.051631982755097,0.051631982755097,-104.9615992,39.7507111,-104.9609953,39.7507051
-17332,6274,10071,0.0521047224845183,0.0521047224845183,-104.9609953,39.7507051,-104.9603859,39.7507127
-17333,10071,10088,0.0548081026494783,0.0548081026494783,-104.9603859,39.7507127,-104.9597448,39.750714
-17334,10088,581,0.115692672611639,0.115692672611639,-104.9597448,39.750714,-104.9583963,39.7508014
-17335,581,3544,1.0812915383048,1.0812915383048,-104.9583963,39.7508014,-104.9457557,39.7511373
-17336,3544,10089,0.426746641833072,0.426746641833072,-104.9457557,39.7511373,-104.9407655,39.7510409
-17337,10089,8702,0.015131733429425,0.015131733429425,-104.9407655,39.7510409,-104.9405885,39.7510409
-17338,8702,8151,0.097451189179214,0.097451189179214,-104.9405885,39.7510409,-104.9394486,39.7510451
-17340,1827,3084,0.201158270757163,0.201158270757163,-104.9791916,39.7147225,-104.9792501,39.712914
-17341,3084,3196,0.201063388532037,0.201063388532037,-104.9792501,39.712914,-104.9792438,39.7111058
-17342,3196,6111,0.203191571447184,0.203191571447184,-104.9792438,39.7111058,-104.979227,39.7092785
-17343,6111,1904,0.198857964292004,0.198857964292004,-104.979227,39.7092785,-104.9792593,39.7074903
-17344,1904,7240,0.195269710490606,0.195269710490606,-104.9792593,39.7074903,-104.9792633,39.7057342
-17345,7240,3253,0.196518038239943,0.196518038239943,-104.9792633,39.7057342,-104.9792501,39.7039669
-17347,10090,3086,0.200629327787617,0.200629327787617,-104.9780898,39.7147143,-104.978094,39.71291
-17348,3086,3198,0.202620201680719,0.202620201680719,-104.978094,39.71291,-104.9780683,39.7110879
-17349,3198,6113,0.202237159025195,0.202237159025195,-104.9780683,39.7110879,-104.9780999,39.7092693
-17350,6113,1907,0.200888583811516,0.200888583811516,-104.9780999,39.7092693,-104.9780854,39.7074627
-17351,1907,7242,0.194884252844044,0.194884252844044,-104.9780854,39.7074627,-104.978057,39.7057102
-17352,7242,9217,0.00483789456398776,0.00483789456398776,-104.978057,39.7057102,-104.9780581,39.7056667
-17353,9217,3256,0.188566052149982,0.188566052149982,-104.9780581,39.7056667,-104.9781006,39.7039712
-17354,3256,9215,0.0119202066492219,0.0119202066492219,-104.9781006,39.7039712,-104.9781012,39.703864
-17355,9215,7298,0.204144558375252,0.204144558375252,-104.9781012,39.703864,-104.9781112,39.7020281
-17356,7298,41,0.19415380637197,0.19415380637197,-104.9781112,39.7020281,-104.9780913,39.7002821
-17357,41,3541,0.205611824864656,0.205611824864656,-104.9780913,39.7002821,-104.9780828,39.698433
-17358,3541,4237,0.201941106279095,0.201941106279095,-104.9780828,39.698433,-104.9780828,39.6966169
-17359,4237,1797,0.206450634390855,0.206450634390855,-104.9780828,39.6966169,-104.9781014,39.6947603
-17360,1797,6524,0.103413068253841,0.103413068253841,-104.9781014,39.6947603,-104.9782122,39.6938342
-17377,9185,10092,0.0314361336881962,0.0314361336881962,-104.9985457,39.7503278,-104.9989127,39.7503454
-17384,10093,10094,0.234828178944131,0.234828178944131,-105.0176374,39.7404051,-105.0150249,39.7397537
-17401,4251,8740,0.200540582414647,0.200540582414647,-104.968103,39.6965907,-104.9681084,39.6947872
-17403,10096,4253,0.402448073126268,0.402448073126268,-104.9669389,39.6929637,-104.9669334,39.696583
-17404,4253,71,0.405085488859101,0.405085488859101,-104.9669334,39.696583,-104.9669496,39.700226
-17409,7246,3265,0.200993245572831,0.200993245572831,-104.9645976,39.7056725,-104.9646191,39.703865
-17410,3265,7307,0.200743622516842,0.200743622516842,-104.9646191,39.703865,-104.9646054,39.7020597
-17411,7307,77,0.204688793990349,0.204688793990349,-104.9646054,39.7020597,-104.9645973,39.7002189
-17413,10097,10082,0.0500367848211035,0.0500367848211035,-104.9829203,39.6885931,-104.9834085,39.6888408
-17415,10098,10099,0.0500389645311151,0.0500389645311151,-104.9838645,39.6893197,-104.9835426,39.688944
-17416,10099,10082,0.0162280043989145,0.0162280043989145,-104.9835426,39.688944,-104.9834085,39.6888408
-17418,10100,10101,0.0207018118679025,0.0207018118679025,-104.982915,39.6890761,-104.9831564,39.6890637
-17430,10092,10048,0.0309885486655971,0.0309885486655971,-104.9989127,39.7503454,-104.9991687,39.7505427
-17431,10048,8614,0.0518778938210734,0.0518778938210734,-104.9991687,39.7505427,-104.9995987,39.7508719
-17432,8614,8472,0.0531907688732488,0.0531907688732488,-104.9995987,39.7508719,-105.0000361,39.7512121
-17433,8472,1066,0.0523689032311119,0.0523689032311119,-105.0000361,39.7512121,-105.000472,39.751543
-17434,1066,1606,0.051557001219416,0.051557001219416,-105.000472,39.751543,-105.000898,39.7518712
-17435,1606,8366,0.139200065042292,0.139200065042292,-105.000898,39.7518712,-105.0020448,39.7527599
-17437,6713,10092,0.0743345743256074,0.0743345743256074,-104.9982781,39.7498884,-104.9989127,39.7503454
-17441,3193,3081,0.201349842824614,0.201349842824614,-104.9827804,39.7111342,-104.9827112,39.7129442
-17442,3081,10108,0.178416289777232,0.178416289777232,-104.9827112,39.7129442,-104.9827539,39.7145484
-17444,3193,6109,0.202397968765167,0.202397968765167,-104.9827804,39.7111342,-104.9827877,39.709314
-17445,6109,1899,0.201875824929032,0.201875824929032,-104.9827877,39.709314,-104.9827966,39.7074985
-17446,1899,7237,0.199007784951822,0.199007784951822,-104.9827966,39.7074985,-104.9828076,39.7057088
-17447,7237,3247,0.203972993087409,0.203972993087409,-104.9828076,39.7057088,-104.9827863,39.7038745
-17449,10109,7288,0.156689817874906,0.156689817874906,-104.9827914,39.7033844,-104.9828061,39.7019753
-17450,7288,33,0.190916174685026,0.190916174685026,-104.9828061,39.7019753,-104.982789,39.7002584
-17451,33,3532,0.205910894729705,0.205910894729705,-104.982789,39.7002584,-104.9827863,39.6984066
-17452,3532,6522,0.0640042155752525,0.0640042155752525,-104.9827863,39.6984066,-104.982762,39.6978313
-17454,3078,3192,0.201894846275699,0.201894846275699,-104.9839851,39.7129498,-104.9840078,39.7111342
-17455,3192,6108,0.201673919779454,0.201673919779454,-104.9840078,39.7111342,-104.9840322,39.7093206
-17456,6108,1898,0.20260827746412,0.20260827746412,-104.9840322,39.7093206,-104.9840325,39.7074985
-17457,1898,7236,0.20276033286578,0.20276033286578,-104.9840325,39.7074985,-104.9839553,39.705676
-17458,7236,3246,0.202520180127379,0.202520180127379,-104.9839553,39.705676,-104.9839622,39.7038547
-17459,3246,10110,0.0550544054800148,0.0550544054800148,-104.9839622,39.7038547,-104.9839674,39.7033596
-17460,10110,7286,0.154666066923182,0.154666066923182,-104.9839674,39.7033596,-104.983982,39.7019687
-17461,7286,29,0.190176683040096,0.190176683040096,-104.983982,39.7019687,-104.983982,39.7002584
-17463,1900,7238,0.196467409698081,0.196467409698081,-104.981627,39.707488,-104.981606,39.7057212
-17464,7238,3249,0.197271278467775,0.197271278467775,-104.981606,39.7057212,-104.9816104,39.7039471
-17465,3249,7293,0.215893772854934,0.215893772854934,-104.9816104,39.7039471,-104.9815761,39.7020057
-17466,7293,35,0.191661158901488,0.191661158901488,-104.9815761,39.7020057,-104.9815932,39.7002821
-17467,35,3534,0.208592623812739,0.208592623812739,-104.9815932,39.7002821,-104.9815417,39.6984066
-17468,3534,6523,0.163291338158479,0.163291338158479,-104.9815417,39.6984066,-104.9817185,39.6969444
-17470,10108,5278,0.0774622106782589,0.0774622106782589,-104.9827539,39.7145484,-104.9828424,39.7138551
-17471,5278,3080,0.101220750760019,0.101220750760019,-104.9828424,39.7138551,-104.9828429,39.7129448
-17472,3080,3193,0.201400503113628,0.201400503113628,-104.9828429,39.7129448,-104.9827804,39.7111342
-17474,5940,471,0.312751802930415,0.312751802930415,-105.0154315,39.7536072,-105.017379,39.7512262
-18580,7765,5716,0.0511772806374418,0.0511772806374418,-105.0351796,39.7802141,-105.0357784,39.7802062
-17491,10112,10093,0.359402757134602,0.359402757134602,-105.0218404,39.7404488,-105.0176374,39.7404051
-17492,10093,10113,0.194903624807864,0.194903624807864,-105.0176374,39.7404051,-105.0153589,39.7403535
-17493,10113,2201,0.0582804268216835,0.0582804268216835,-105.0153589,39.7403535,-105.0146775,39.7403403
-17494,2201,10114,0.186967502007765,0.186967502007765,-105.0146775,39.7403403,-105.0124916,39.7402957
-17495,10114,8390,0.0733141120559894,0.0733141120559894,-105.0124916,39.7402957,-105.0116345,39.7402771
-17496,8390,10115,0.462273198293161,0.462273198293161,-105.0116345,39.7402771,-105.0062313,39.7401322
-17498,9631,400,0.267469433354519,0.267469433354519,-105.0062339,39.740258,-105.00936,39.7403456
-17531,10127,4931,0.0143150280274793,0.0143150280274793,-104.9989934,39.7413574,-104.9988399,39.7414088
-17499,400,10116,0.288854082427149,0.288854082427149,-105.00936,39.7403456,-105.0127369,39.7404199
-17500,10116,10117,0.226779392941661,0.226779392941661,-105.0127369,39.7404199,-105.0153883,39.7404728
-17539,8982,8937,0.19614593492264,0.19614593492264,-104.9891588,39.7833529,-104.9891177,39.7851166
-17501,10117,10118,0.252256323985904,0.252256323985904,-105.0153883,39.7404728,-105.0183374,39.7405364
-17502,10118,8413,0.301706026949727,0.301706026949727,-105.0183374,39.7405364,-105.0218658,39.7405653
-17504,10094,9835,0.207906613588927,0.207906613588927,-105.0150249,39.7397537,-105.0143087,39.7379669
-17542,10131,10132,0.234004969584105,0.234004969584105,-104.9893756,39.7833551,-104.9893554,39.7854595
-17547,8426,8983,0.15801309875704,0.15801309875704,-104.9895595,39.7833438,-104.9895187,39.7819231
-17550,10130,10134,0.614829488291655,0.614829488291655,-104.9891097,39.7854604,-104.9884513,39.7909665
-17551,7135,4849,0.106906878995063,0.106906878995063,-104.9754213,39.7729633,-104.9763149,39.7736361
-17552,4849,915,0.103932392061615,0.103932392061615,-104.9763149,39.7736361,-104.9771733,39.7742982
-17553,915,2299,0.103080430089244,0.103080430089244,-104.9771733,39.7742982,-104.9780262,39.7749537
-17554,2299,10137,0.014910815675823,0.014910815675823,-104.9780262,39.7749537,-104.9781496,39.7750485
-17556,10137,9054,0.0810396295718394,0.0810396295718394,-104.9781496,39.7750485,-104.9786512,39.775667
-17558,10138,6943,0.064892686762443,0.064892686762443,-104.9667127,39.7813542,-104.9666886,39.7819375
-17559,6943,8140,0.201702874937987,0.201702874937987,-104.9666886,39.7819375,-104.9666698,39.7837514
-17560,8140,10139,0.469612869716675,0.469612869716675,-104.9666698,39.7837514,-104.9644686,39.7876212
-17562,7137,211,0.0939410437080962,0.0939410437080962,-104.9680592,39.7786642,-104.9672465,39.7792331
-17563,211,480,0.0535285680999835,0.0535285680999835,-104.9672465,39.7792331,-104.9669782,39.7796681
-17598,6899,5259,0.128421696790864,0.128421696790864,-104.9597428,39.769281,-104.9597331,39.7681261
-17566,8539,10140,0.135369629803794,0.135369629803794,-104.9669081,39.7808609,-104.967225,39.7796681
-17568,10141,10142,0.0931846548427409,0.0931846548427409,-104.9684346,39.7796533,-104.967563,39.7791497
-17575,10147,10148,0.0907607828573939,0.0907607828573939,-104.9445492,39.7800907,-104.9456113,39.7800893
-17576,10148,9823,0.350917184183612,0.350917184183612,-104.9456113,39.7800893,-104.9497178,39.7800947
-17577,9823,9805,0.0148959688810153,0.0148959688810153,-104.9497178,39.7800947,-104.9498921,39.7800929
-17578,9805,10149,0.0247571116201832,0.0247571116201832,-104.9498921,39.7800929,-104.9501818,39.780095
-17579,10149,8243,0.229215025506836,0.229215025506836,-104.9501818,39.780095,-104.952864,39.7801147
-17580,8243,9502,0.0511227471188157,0.0511227471188157,-104.952864,39.7801147,-104.9534622,39.7801206
-17581,9502,7326,0.0563854594047154,0.0563854594047154,-104.9534622,39.7801206,-104.954122,39.7801258
-17582,7326,5762,0.0999481200631645,0.0999481200631645,-104.954122,39.7801258,-104.9552914,39.7801086
-17583,5762,7873,0.0518041802099649,0.0518041802099649,-104.9552914,39.7801086,-104.9558976,39.7801127
-17584,7873,10150,0.102000136506063,0.102000136506063,-104.9558976,39.7801127,-104.9570912,39.7801189
-17585,10150,5014,0.098101103191891,0.098101103191891,-104.9570912,39.7801189,-104.9582392,39.7801189
-17586,5014,5058,0.089850875454823,0.089850875454823,-104.9582392,39.7801189,-104.9592906,39.7801271
-18718,7866,4048,0.178217561946718,0.178217561946718,-105.0343209,39.7197519,-105.0343046,39.7181492
-17587,5058,10151,0.211959888507267,0.211959888507267,-104.9592906,39.7801271,-104.961771,39.7801275
-17589,215,9282,0.125167866609679,0.125167866609679,-104.9654677,39.7803353,-104.9667713,39.7808486
-17591,213,9816,0.299047510838406,0.299047510838406,-104.9655888,39.7798206,-104.962098,39.7800102
-17593,9229,9826,0.176982927136907,0.176982927136907,-104.9604654,39.7803167,-104.9625227,39.7801333
-17595,6940,10152,0.0583015149781026,0.0583015149781026,-104.9587435,39.7819608,-104.9592664,39.7822976
-18120,6030,10257,0.0455676937571294,0.0455676937571294,-105.0106854,39.7854577,-105.010685,39.7858675
-17597,5060,6899,0.402535335538281,0.402535335538281,-104.9594167,39.7728924,-104.9597428,39.769281
-17599,5259,2791,0.130368767280199,0.130368767280199,-104.9597331,39.7681261,-104.9597448,39.7669537
-17600,2791,4469,0.135446736738612,0.135446736738612,-104.9597448,39.7669537,-104.9597421,39.7657356
-17601,4469,884,0.138505584507757,0.138505584507757,-104.9597421,39.7657356,-104.9597488,39.76449
-17602,884,1164,0.139078051750381,0.139078051750381,-104.9597488,39.76449,-104.959733,39.7632393
-17603,1164,9871,0.139057579408235,0.139057579408235,-104.959733,39.7632393,-104.9597508,39.7619888
-17604,9871,8075,0.138249096495162,0.138249096495162,-104.9597508,39.7619888,-104.9597467,39.7607455
-17605,8075,10153,0.00462704346608534,0.00462704346608534,-104.9597467,39.7607455,-104.959748,39.7607039
-17606,10153,3043,0.14110788802663,0.14110788802663,-104.959748,39.7607039,-104.9597701,39.759435
-17607,3043,6341,0.135895639019006,0.135895639019006,-104.9597701,39.759435,-104.9597275,39.7582133
-17608,6341,4343,0.137400774019599,0.137400774019599,-104.9597275,39.7582133,-104.9597614,39.7569779
-17609,4343,5639,0.138956387861239,0.138956387861239,-104.9597614,39.7569779,-104.9597878,39.7557284
-17610,5639,3570,0.141821620771527,0.141821620771527,-104.9597878,39.7557284,-104.9597446,39.7544534
-17611,3570,830,0.137661147763222,0.137661147763222,-104.9597446,39.7544534,-104.9597529,39.7532154
-17612,830,7843,0.140550687821679,0.140550687821679,-104.9597529,39.7532154,-104.9597495,39.7519514
-17613,7843,10088,0.137593188904098,0.137593188904098,-104.9597495,39.7519514,-104.9597448,39.750714
-17614,10088,9941,0.137660243266343,0.137660243266343,-104.9597448,39.750714,-104.9597507,39.749476
-17615,9941,8135,0.139584464123887,0.139584464123887,-104.9597507,39.749476,-104.9597582,39.7482207
-17616,8135,3690,0.141707714550209,0.141707714550209,-104.9597582,39.7482207,-104.959805,39.7469468
-17617,3690,4596,0.241404416022683,0.241404416022683,-104.959805,39.7469468,-104.9598011,39.7447758
-17619,5016,3319,0.0948083090873271,0.0948083090873271,-104.9581399,39.7819575,-104.9570312,39.7819252
-17620,3319,8996,0.0798486506362173,0.0798486506362173,-104.9570312,39.7819252,-104.9560968,39.781931
-17621,8996,7874,0.0190759275307072,0.0190759275307072,-104.9560968,39.781931,-104.9558736,39.7819341
-17622,7874,5755,0.0623471034770475,0.0623471034770475,-104.9558736,39.7819341,-104.9551441,39.7819442
-17623,5755,5758,0.0361266791563275,0.0361266791563275,-104.9551441,39.7819442,-104.9547235,39.7819113
-17624,5758,7327,0.0520708883616353,0.0520708883616353,-104.9547235,39.7819113,-104.9541142,39.7819179
-17626,5016,10154,0.164101634929309,0.164101634929309,-104.9581399,39.7819575,-104.9581426,39.7834333
-17627,10155,2882,0.710681950052773,0.710681950052773,-104.9592396,39.7916405,-104.9592584,39.7852492
-17629,8136,6947,0.130119100803365,0.130119100803365,-104.9592611,39.7837879,-104.9592799,39.7826178
-17630,6947,10156,0.0163542378359644,0.0163542378359644,-104.9592799,39.7826178,-104.9592737,39.7824708
-17631,10156,10157,0.00955659663824098,0.00955659663824098,-104.9592737,39.7824708,-104.9592701,39.7823849
-17632,10157,10158,0.00677541465471327,0.00677541465471327,-104.9592701,39.7823849,-104.9592675,39.782324
-17633,10158,10152,0.00293705056146173,0.00293705056146173,-104.9592675,39.782324,-104.9592664,39.7822976
-17634,10152,6939,0.0371287028604903,0.0371287028604903,-104.9592664,39.7822976,-104.9592691,39.7819637
-17636,3318,10150,0.0438638328395073,0.0438638328395073,-104.957059,39.7805126,-104.9570912,39.7801189
-17714,9945,8394,0.147641485758692,0.147641485758692,-104.9846155,39.7523823,-104.9833985,39.7533244
-17659,10160,586,0.405583280940818,0.405583280940818,-104.986015,39.7800954,-104.9889771,39.7829454
-17672,10163,8930,0.930392444069162,0.930392444069162,-104.9855751,39.7798803,-104.9961216,39.7819588
-17675,9053,10164,0.0371557833436508,0.0371557833436508,-104.985575,39.7800251,-104.9860095,39.7800376
-17693,2913,2780,0.0748123840669465,0.0748123840669465,-104.9733488,39.7664884,-104.9727319,39.7669657
-17694,2780,7147,0.116677483921202,0.116677483921202,-104.9727319,39.7669657,-104.9721123,39.7679007
-17696,9056,10047,0.141134759881648,0.141134759881648,-104.9734488,39.7704351,-104.9733504,39.7691681
-17698,7147,5254,0.0284105210258417,0.0284105210258417,-104.9721123,39.7679007,-104.9721136,39.7681562
-17699,5254,10166,0.132906284217118,0.132906284217118,-104.9721136,39.7681562,-104.9720707,39.769351
-17701,6403,10167,0.108541157226703,0.108541157226703,-104.9723255,39.770589,-104.9732322,39.7712725
-17703,6403,6401,0.049228330409525,0.049228330409525,-104.9723255,39.770589,-104.9719701,39.7702406
-17705,10168,10169,0.0501555453420122,0.0501555453420122,-104.9728475,39.7695543,-104.9734325,39.76959
-17707,10047,10169,0.0474349977604191,0.0474349977604191,-104.9733504,39.7691681,-104.9734325,39.76959
-17708,10169,9056,0.0939811582148226,0.0939811582148226,-104.9734325,39.76959,-104.9734488,39.7704351
-17710,9947,3675,0.0669754214474556,0.0669754214474556,-104.9790113,39.7480975,-104.9787278,39.747536
-17712,9204,9945,0.144775125391256,0.144775125391256,-104.9858044,39.7514551,-104.9846155,39.7523823
-17715,8394,2691,0.147869553829969,0.147869553829969,-104.9833985,39.7533244,-104.9821794,39.7542678
-17716,2691,8040,0.145836065451416,0.145836065451416,-104.9821794,39.7542678,-104.9809778,39.7551988
-17717,8040,6567,0.144877875233717,0.144877875233717,-104.9809778,39.7551988,-104.9797794,39.7561201
-17718,6567,4448,0.14778294563884,0.14778294563884,-104.9797794,39.7561201,-104.9785732,39.7570722
-17719,4448,8414,0.0749502518363333,0.0749502518363333,-104.9785732,39.7570722,-104.9779515,39.7575475
-17720,8414,5496,0.069451420913351,0.069451420913351,-104.9779515,39.7575475,-104.9773755,39.757988
-17721,5496,7070,0.148876703091943,0.148876703091943,-104.9773755,39.757988,-104.9761539,39.7589423
-17722,7070,2040,0.14567151330703,0.14567151330703,-104.9761539,39.7589423,-104.9749522,39.7598712
-17723,2040,8073,0.130264739930752,0.130264739930752,-104.9749522,39.7598712,-104.9738736,39.7606988
-17725,8076,3328,0.0639927694114461,0.0639927694114461,-104.9580824,39.7607455,-104.9573341,39.760728
-17728,7879,7332,0.105697567981392,0.105697567981392,-104.9561163,39.7607348,-104.9548798,39.7607265
-17730,2080,2677,0.104069678874741,0.104069678874741,-104.9536567,39.7607265,-104.9524392,39.7607246
-17731,2677,4126,0.107112553379611,0.107112553379611,-104.9524392,39.7607246,-104.9511861,39.7607235
-17732,4126,6682,0.108353172096875,0.108353172096875,-104.9511861,39.7607235,-104.9499185,39.7607282
-17734,7925,5320,0.0826824039230849,0.0826824039230849,-104.9739262,39.7620073,-104.9746129,39.7614836
-17735,5320,2041,0.146468953410165,0.146468953410165,-104.9746129,39.7614836,-104.9758158,39.7605455
-17736,2041,7072,0.146479190259677,0.146479190259677,-104.9758158,39.7605455,-104.9770228,39.7596104
-17737,7072,5498,0.148482454254276,0.148482454254276,-104.9770228,39.7596104,-104.9782485,39.7586642
-17738,5498,4450,0.145207190897223,0.145207190897223,-104.9782485,39.7586642,-104.9794422,39.7577351
-17739,4450,6569,0.147094399400618,0.147094399400618,-104.9794422,39.7577351,-104.9806536,39.7567956
-17740,6569,8042,0.145385409804858,0.145385409804858,-104.9806536,39.7567956,-104.9818522,39.755868
-17741,8042,2693,0.146247210391541,0.146247210391541,-104.9818522,39.755868,-104.9830605,39.7549369
-17742,2693,8396,0.145676314519276,0.145676314519276,-104.9830605,39.7549369,-104.9842635,39.754009
-17743,8396,9946,0.148129197746433,0.148129197746433,-104.9842635,39.754009,-104.9854693,39.7530523
-17744,9946,9324,0.145860656071838,0.145860656071838,-104.9854693,39.7530523,-104.9866859,39.7521326
-17745,9324,10171,0.0856023563285992,0.0856023563285992,-104.9866859,39.7521326,-104.9873856,39.7515819
-17746,10171,7893,0.060719319188507,0.060719319188507,-104.9873856,39.7515819,-104.9878898,39.7511973
-17747,7893,10172,0.145992330998255,0.145992330998255,-104.9878898,39.7511973,-104.9890951,39.7502672
-17749,8285,5779,0.146744468691812,0.146744468691812,-104.9903025,39.7493228,-104.9915202,39.7483927
-17750,5779,8575,0.145685998707777,0.145685998707777,-104.9915202,39.7483927,-104.9927205,39.7474627
-17752,6706,10173,0.0983542102154105,0.0983542102154105,-104.99393,39.7465367,-104.9947299,39.745901
-17754,8485,10174,0.145917669946454,0.145917669946454,-104.995128,39.7455847,-104.9963422,39.7446625
-17755,10174,4934,0.364858401137942,0.364858401137942,-104.9963422,39.7446625,-104.9993415,39.7423284
-17757,8073,5319,0.0151134525874084,0.0151134525874084,-104.9738736,39.7606988,-104.9737854,39.7608166
-17758,5319,2906,0.0542680076543073,0.0542680076543073,-104.9737854,39.7608166,-104.9733507,39.7611723
-17760,9487,1173,0.143948575233632,0.143948575233632,-104.9487218,39.7619316,-104.9487381,39.7632261
-17761,1173,893,0.138648954033686,0.138648954033686,-104.9487381,39.7632261,-104.9487381,39.764473
-17762,893,4476,0.138420042799995,0.138420042799995,-104.9487381,39.764473,-104.9487249,39.7657178
-17763,4476,2799,0.139158608638433,0.139158608638433,-104.9487249,39.7657178,-104.9487061,39.7669692
-17764,2799,5267,0.125667753140422,0.125667753140422,-104.9487061,39.7669692,-104.9487209,39.7680993
-17765,5267,6904,0.122725840536987,0.122725840536987,-104.9487209,39.7680993,-104.9487209,39.769203
-17766,6904,7758,0.206944002479267,0.206944002479267,-104.9487209,39.769203,-104.9487638,39.7710638
-17767,7758,6358,0.203735904589123,0.203735904589123,-104.9487638,39.7710638,-104.9486541,39.7728941
-17768,6358,2391,0.110758482838084,0.110758482838084,-104.9486541,39.7728941,-104.9486382,39.7738901
-17769,2391,7822,0.137036631860385,0.137036631860385,-104.9486382,39.7738901,-104.9486378,39.7751225
-17771,9877,903,0.274330614761652,0.274330614761652,-104.9392992,39.7619966,-104.9393102,39.7644637
-17772,903,9481,0.129817379023696,0.129817379023696,-104.9393102,39.7644637,-104.9392929,39.7656311
-17775,5984,2102,0.100487934544075,0.100487934544075,-104.9257912,39.7801245,-104.9269671,39.7801311
-17776,2102,6508,0.243143603771944,0.243143603771944,-104.9269671,39.7801311,-104.9298124,39.7801232
-17778,6993,399,0.279873647693424,0.279873647693424,-104.9316377,39.7804571,-104.9349127,39.7804818
-17779,399,10175,0.059173942672277,0.059173942672277,-104.9349127,39.7804818,-104.9356047,39.7805014
-17780,10175,6196,0.0719242777998184,0.0719242777998184,-104.9356047,39.7805014,-104.9364456,39.7804736
-17782,6196,10175,0.0719242777998184,0.0719242777998184,-104.9364456,39.7804736,-104.9356047,39.7805014
-17784,10175,10177,0.187235722056553,0.187235722056553,-104.9356047,39.7805014,-104.9359775,39.7821607
-17789,998,8512,0.0641582208600105,0.0641582208600105,-104.9876372,39.7594706,-104.9875407,39.7588984
-17790,8512,3305,0.0698159988608895,0.0698159988608895,-104.9875407,39.7588984,-104.9874361,39.7582757
-17802,9953,10171,0.0758245915635617,0.0758245915635617,-104.9873896,39.7522638,-104.9873856,39.7515819
-17803,10171,8417,0.0691188092256886,0.0691188092256886,-104.9873856,39.7515819,-104.9873865,39.7509603
-17804,8417,7892,0.0154287387029138,0.0154287387029138,-104.9873865,39.7509603,-104.987378,39.7508217
-17805,7892,9203,0.0639309073349984,0.0639309073349984,-104.987378,39.7508217,-104.9873873,39.7502468
-17844,5741,5515,0.1393794725611,0.1393794725611,-104.9994129,39.7730041,-104.9994301,39.7742575
-17807,998,2698,0.471311768879255,0.471311768879255,-104.9876372,39.7594706,-104.9872963,39.7637011
-17809,2563,997,0.102700798846865,0.102700798846865,-104.9865077,39.7643898,-104.9873902,39.763763
-17811,9490,10181,0.787839518624737,0.787839518624737,-104.9975705,39.7571365,-105.0023462,39.7631964
-17813,10182,10183,0.017972037737444,0.017972037737444,-104.9959538,39.755728,-104.9958016,39.7558395
-17814,8277,10182,0.0269375538426571,0.0269375538426571,-104.9961783,39.755558,-104.9959538,39.755728
-17824,10189,9815,0.381548994115635,0.381548994115635,-104.9772538,39.7792023,-104.9728236,39.7796294
-17826,10190,2445,0.108497544218855,0.108497544218855,-104.9982065,39.7695207,-104.9982447,39.770496
-17827,2445,3235,0.140113229632804,0.140113229632804,-104.9982447,39.770496,-104.9982618,39.771756
-17828,3235,5740,0.13721905173768,0.13721905173768,-104.9982618,39.771756,-104.9982189,39.7729896
-17829,5740,5514,0.142685575827079,0.142685575827079,-104.9982189,39.7729896,-104.998222,39.7742728
-17830,5514,6451,0.135469883258712,0.135469883258712,-104.998222,39.7742728,-104.9982284,39.7754911
-17831,6451,6918,0.118104639956123,0.118104639956123,-104.9982284,39.7754911,-104.9981886,39.7765528
-17832,6918,8114,0.200145379388081,0.200145379388081,-104.9981886,39.7765528,-104.9982189,39.7783526
-17841,10191,2446,0.12170288352426,0.12170288352426,-104.9994069,39.7694121,-104.9994058,39.7705066
-17842,2446,3236,0.138990302772576,0.138990302772576,-104.9994058,39.7705066,-104.9994549,39.771756
-17843,3236,5741,0.138828799197264,0.138828799197264,-104.9994549,39.771756,-104.9994129,39.7730041
-17845,5515,6452,0.137212079229824,0.137212079229824,-104.9994301,39.7742575,-104.9993731,39.7754907
-17846,6452,6919,0.118102418388258,0.118102418388258,-104.9993731,39.7754907,-104.9993645,39.7765528
-17847,6919,8115,0.204539971673672,0.204539971673672,-104.9993645,39.7765528,-104.9993433,39.7783922
-17848,8115,2817,0.195950897476267,0.195950897476267,-104.9993433,39.7783922,-104.9993302,39.7801544
-17850,1418,10192,0.0403415193863986,0.0403415193863986,-104.9993559,39.7819419,-104.9993559,39.7823047
-17854,10196,10197,0.298773764193864,0.298773764193864,-104.9706144,39.7902177,-104.9732548,39.7884561
-17858,10197,10201,0.0878537760845695,0.0878537760845695,-104.9732548,39.7884561,-104.9732119,39.7892455
-17859,10202,292,0.12590153135235,0.12590153135235,-105.0028295,39.7602418,-105.0040727,39.760849
-17860,292,10203,0.0920635687067585,0.0920635687067585,-105.0040727,39.760849,-105.0049871,39.7612865
-17862,8296,912,0.421752257927472,0.421752257927472,-104.9951571,39.7549879,-104.9985313,39.7577551
-17863,912,7280,0.346969669094077,0.346969669094077,-104.9985313,39.7577551,-105.0017017,39.7597036
-17865,7279,911,0.343598202777143,0.343598202777143,-105.0017875,39.7595933,-104.998644,39.7576675
-17866,911,8296,0.421457000722742,0.421457000722742,-104.998644,39.7576675,-104.9951571,39.7549879
-17899,10211,10209,0.112127267328736,0.112127267328736,-104.9981065,39.7669418,-104.9969347,39.7673952
-17868,10204,293,0.122668884457017,0.122668884457017,-105.0027544,39.7602964,-105.0037495,39.7610913
-17870,7280,10204,0.11154380602626,0.11154380602626,-105.0017017,39.7597036,-105.0027544,39.7602964
-17872,7280,10202,0.113468069847095,0.113468069847095,-105.0017017,39.7597036,-105.0028295,39.7602418
-17874,10203,305,0.0245172766294025,0.0245172766294025,-105.0049871,39.7612865,-105.0052248,39.7614099
-17876,10205,9191,0.0917966102805814,0.0917966102805814,-105.0050575,39.7612239,-105.0041591,39.7607716
-17877,9191,9065,0.0437309955207218,0.0437309955207218,-105.0041591,39.7607716,-105.0037267,39.7605614
-17879,305,7972,0.0096955565592884,0.0096955565592884,-105.0052248,39.7614099,-105.0052958,39.7614779
-17880,7972,289,0.0364664216753188,0.0364664216753188,-105.0052958,39.7614779,-105.0056941,39.7615954
-17882,291,10205,0.0247656280633611,0.0247656280633611,-105.0052999,39.7613459,-105.0050575,39.7612239
-17884,5356,3010,0.0411976507153233,0.0411976507153233,-104.9861098,39.7479555,-104.9864574,39.7482121
-17885,3010,9955,0.055133452370554,0.055133452370554,-104.9864574,39.7482121,-104.98691,39.7485653
-17887,4390,9202,0.103596100254428,0.103596100254428,-104.9873785,39.7489186,-104.9882201,39.7495889
-17888,9202,10172,0.106228487315193,0.106228487315193,-104.9882201,39.7495889,-104.9890951,39.7502672
-17889,10172,8635,0.104885206719794,0.104885206719794,-104.9890951,39.7502672,-104.9899626,39.7509342
-17890,8635,10207,0.0526738998782486,0.0526738998782486,-104.9899626,39.7509342,-104.9904003,39.7512676
-17891,10207,8290,0.0540408904782361,0.0540408904782361,-104.9904003,39.7512676,-104.9908493,39.7516097
-17893,10181,10208,0.34674805442663,0.34674805442663,-105.0023462,39.7631964,-105.0001687,39.7658275
-17895,9277,9062,0.54179107306149,0.54179107306149,-105.0019955,39.7638914,-105.0060948,39.7601751
-17897,10209,10210,0.15255018083046,0.15255018083046,-104.9969347,39.7673952,-104.9953391,39.76801
-17901,9277,10208,0.265946775924501,0.265946775924501,-105.0019955,39.7638914,-105.0001687,39.7658275
-17902,10208,10211,0.215451375996435,0.215451375996435,-105.0001687,39.7658275,-104.9981065,39.7669418
-17904,4431,5085,0.143171262303537,0.143171262303537,-104.9891666,39.7174681,-104.9908403,39.7174879
-17905,5085,2810,0.11012443165944,0.11012443165944,-104.9908403,39.7174879,-104.9921278,39.7174945
-17906,2810,4675,0.158582360684903,0.158582360684903,-104.9921278,39.7174945,-104.9939817,39.7175143
-17908,10212,9184,0.112885017008347,0.112885017008347,-105.0024206,39.7184748,-105.002927,39.7194123
-17909,9184,10213,0.167377068446941,0.167377068446941,-105.002927,39.7194123,-105.0029442,39.7209175
-18960,10410,7220,0.0501782415904674,0.0501782415904674,-104.9957751,39.7209292,-104.9963617,39.7209372
-17922,6563,8888,0.042430320182906,0.042430320182906,-104.9850303,39.7241197,-104.984536,39.724087
-18662,7647,10214,0.0701815380438801,0.0701815380438801,-105.0345838,39.7277084,-105.03453,39.7283382
-17924,6563,9296,0.044068382651895,0.044068382651895,-104.9850303,39.7241197,-104.9850256,39.724516
-17926,10215,7090,0.0147548324313622,0.0147548324313622,-104.9851861,39.7232104,-104.9850136,39.7232083
-17928,10216,4749,0.0152354550229313,0.0152354550229313,-104.9854611,39.7226759,-104.9854584,39.7225389
-17930,7570,10217,0.020843135953545,0.020843135953545,-104.986258,39.7248774,-104.9865017,39.7248795
-17931,10217,10218,0.00309719141124637,0.00309719141124637,-104.9865017,39.7248795,-104.9865379,39.7248787
-17932,10218,10219,0.0172058483004327,0.0172058483004327,-104.9865379,39.7248787,-104.986739,39.7248742
-17933,10219,10220,0.0101474090092483,0.0101474090092483,-104.986739,39.7248742,-104.9868576,39.7248715
-17934,10220,10221,0.0360135260366549,0.0360135260366549,-104.9868576,39.7248715,-104.9872787,39.7248713
-17972,4922,2816,0.0400924263132539,0.0400924263132539,-104.9919185,39.7316877,-104.9916596,39.7319883
-17974,2816,6585,0.00731734573972315,0.00731734573972315,-104.9916596,39.7319883,-104.9916584,39.7320541
-17975,6585,5367,0.200230086509337,0.200230086509337,-104.9916584,39.7320541,-104.9916497,39.7338548
-17976,5367,7125,0.155428268463703,0.155428268463703,-104.9916497,39.7338548,-104.9916497,39.7352526
-17977,7125,613,0.178580861083004,0.178580861083004,-104.9916497,39.7352526,-104.9916591,39.7368586
-17978,613,10025,0.175711834233665,0.175711834233665,-104.9916591,39.7368586,-104.9916503,39.7384388
-17979,10025,5802,0.173776139007193,0.173776139007193,-104.9916503,39.7384388,-104.9916445,39.7400016
-17981,10240,4687,0.0705066389488715,0.0705066389488715,-104.9949413,39.7336839,-104.9941176,39.7336555
-17983,4687,4687,0.000550727458732684,0.000550727458732684,-104.9941236,39.7336537,-104.9941176,39.7336555
-17984,4687,4687,0.000550727458732684,0.000550727458732684,-104.9941176,39.7336555,-104.9941236,39.7336537
-18009,8002,984,0.100041012213977,0.100041012213977,-104.9752512,39.7272769,-104.9740814,39.7272791
-17985,4687,10240,0.0700034048729296,0.0700034048729296,-104.9941236,39.7336537,-104.9949413,39.7336839
-18666,5656,5188,0.106406434125344,0.106406434125344,-105.0410801,39.7255057,-105.0410909,39.7245488
-17988,7225,10241,0.0510702903225008,0.0510702903225008,-104.9965056,39.7336859,-104.9971028,39.7336811
-17989,10241,10242,0.042886354540747,0.042886354540747,-104.9971028,39.7336811,-104.9976043,39.7336771
-17990,10242,10243,0.00251406456949564,0.00251406456949564,-104.9976043,39.7336771,-104.9976337,39.733677
-17991,10243,10244,0.0456685462506317,0.0456685462506317,-104.9976337,39.733677,-104.9981677,39.7336833
-17992,10244,6646,0.0418628731234282,0.0418628731234282,-104.9981677,39.7336833,-104.9986572,39.7336891
-17993,6646,10245,0.0664019508555837,0.0664019508555837,-104.9986572,39.7336891,-104.9994337,39.733694
-17994,10245,3947,0.060646848519195,0.060646848519195,-104.9994337,39.733694,-105.0001429,39.7336985
-17995,3947,5379,0.0623892176423501,0.0623892176423501,-105.0001429,39.7336985,-105.0008725,39.7336985
-17997,1213,10080,0.0402726084737909,0.0402726084737909,-104.986618,39.727272,-104.9861473,39.727283
-17998,10080,10246,0.108362052771117,0.108362052771117,-104.9861473,39.727283,-104.9848802,39.7272853
-17999,10246,10095,0.0546330327153493,0.0546330327153493,-104.9848802,39.7272853,-104.9842414,39.72728
-18000,10095,8786,0.0549646837479,0.0549646837479,-104.9842414,39.72728,-104.9835987,39.7272766
-18001,8786,8792,0.105830391023483,0.105830391023483,-104.9835987,39.7272766,-104.9823612,39.7272763
-18002,8792,3158,0.105240490373796,0.105240490373796,-104.9823612,39.7272763,-104.9811306,39.7272781
-18159,4090,6035,0.19402761072914,0.19402761072914,-105.0141021,39.7838734,-105.0141159,39.7856183
-18003,3158,4977,0.10185576028858,0.10185576028858,-104.9811306,39.7272781,-104.9799397,39.7272649
-18004,4977,10247,0.0996051433548501,0.0996051433548501,-104.9799397,39.7272649,-104.978775,39.7272619
-18005,10247,9657,0.103966153648075,0.103966153648075,-104.978775,39.7272619,-104.9775593,39.727263
-18006,9657,6607,0.0489689324196462,0.0489689324196462,-104.9775593,39.727263,-104.9769867,39.7272649
-18007,6607,5049,0.0497044916016373,0.0497044916016373,-104.9769867,39.7272649,-104.9764055,39.727267
-18008,5049,8002,0.0987213073079673,0.0987213073079673,-104.9764055,39.727267,-104.9752512,39.7272769
-18010,984,5105,0.0497125648622764,0.0497125648622764,-104.9740814,39.7272791,-104.9735001,39.7272799
-18011,5105,8832,0.0485496698653307,0.0485496698653307,-104.9735001,39.7272799,-104.9729324,39.7272785
-18012,8832,9412,0.0501680163419149,0.0501680163419149,-104.9729324,39.7272785,-104.9723458,39.7272828
-18013,9412,7150,0.0490112280018507,0.0490112280018507,-104.9723458,39.7272828,-104.9717727,39.727283
-18014,7150,2798,0.0490643527188194,0.0490643527188194,-104.9717727,39.727283,-104.971199,39.7272868
-18015,2798,5116,0.0499797709026575,0.0499797709026575,-104.971199,39.7272868,-104.9706146,39.727291
-18016,5116,9330,0.049524695482998,0.049524695482998,-104.9706146,39.727291,-104.9700355,39.7272893
-18017,9330,4715,0.0504823610322626,0.0504823610322626,-104.9700355,39.7272893,-104.9694452,39.727288
-18018,4715,8873,0.0985202776506121,0.0985202776506121,-104.9694452,39.727288,-104.9682932,39.7272934
-18019,8873,7354,0.0991107696717597,0.0991107696717597,-104.9682932,39.7272934,-104.9671343,39.7272994
-18020,7354,5413,0.108951695628557,0.108951695628557,-104.9671343,39.7272994,-104.9658604,39.7273116
-18022,8149,8697,0.098981334337126,0.098981334337126,-104.9394514,39.727421,-104.9406072,39.727374
-18023,8697,10248,0.0156545770448285,0.0156545770448285,-104.9406072,39.727374,-104.940779,39.7273254
-18025,10248,7104,0.0902072497093339,0.0902072497093339,-104.940779,39.7273254,-104.9418336,39.727309
-18026,7104,449,0.046531670732617,0.046531670732617,-104.9418336,39.727309,-104.9423777,39.727311
-18027,449,854,0.0445732430501775,0.0445732430501775,-104.9423777,39.727311,-104.9428989,39.7273129
-18028,854,10249,0.0446596776858281,0.0446596776858281,-104.9428989,39.7273129,-104.9434211,39.7273161
-18029,10249,9698,0.0482515561513205,0.0482515561513205,-104.9434211,39.7273161,-104.9439853,39.7273195
-18030,9698,10250,0.0474036186605965,0.0474036186605965,-104.9439853,39.7273195,-104.9445396,39.7273207
-18031,10250,6018,0.047797038051314,0.047797038051314,-104.9445396,39.7273207,-104.9450985,39.727322
-18032,6018,10251,0.0473952539943275,0.0473952539943275,-104.9450985,39.727322,-104.9456527,39.7273237
-18033,10251,3455,0.0464887102201997,0.0464887102201997,-104.9456527,39.7273237,-104.9461963,39.7273253
-18034,3455,7682,0.0950045363584629,0.0950045363584629,-104.9461963,39.7273253,-104.9473072,39.7273292
-19711,10628,10629,0.0313669947000456,0.0313669947000456,-105.0039101,39.7341658,-105.0042425,39.7342851
-18035,7682,8018,0.0938092255843609,0.0938092255843609,-104.9473072,39.7273292,-104.9484041,39.7273359
-18036,8018,6695,0.0944228486315978,0.0944228486315978,-104.9484041,39.7273359,-104.9495082,39.7273395
-18037,6695,4132,0.0905761672491303,0.0905761672491303,-104.9495082,39.7273395,-104.9505673,39.7273334
-18727,7644,9832,0.176300161007389,0.176300161007389,-105.0318854,39.7277175,-105.0318908,39.729303
-18729,6212,7649,0.275730709453964,0.275730709453964,-105.0367467,39.7257609,-105.0367537,39.7282406
-18038,4132,8863,0.0309494848264702,0.0309494848264702,-104.9505673,39.7273334,-104.9509292,39.7273333
-18039,8863,2633,0.0676202306028496,0.0676202306028496,-104.9509292,39.7273333,-104.9517199,39.7273329
-18040,2633,8861,0.0311034897002001,0.0311034897002001,-104.9517199,39.7273329,-104.9520836,39.7273323
-18041,8861,2052,0.0676910103216562,0.0676910103216562,-104.9520836,39.7273323,-104.9528751,39.7273272
-18042,2052,8871,0.0313177900642343,0.0313177900642343,-104.9528751,39.7273272,-104.9532413,39.7273255
-18043,8871,7982,0.067271802615166,0.067271802615166,-104.9532413,39.7273255,-104.9540279,39.7273206
-18044,7982,7981,0.0326778162339826,0.0326778162339826,-104.9540279,39.7273206,-104.95441,39.7273185
-18045,7981,7321,0.0976461329299173,0.0976461329299173,-104.95441,39.7273185,-104.9555518,39.7273179
-18046,7321,7887,0.0987923725207189,0.0987923725207189,-104.9555518,39.7273179,-104.956707,39.7273201
-18047,7887,3343,0.0990941084892765,0.0990941084892765,-104.956707,39.7273201,-104.9578657,39.7273135
-18048,3343,5022,0.0986991080291596,0.0986991080291596,-104.9578657,39.7273135,-104.9590198,39.7273177
-18049,5022,8729,0.0995709770506032,0.0995709770506032,-104.9590198,39.7273177,-104.9601841,39.7273144
-18050,8729,6262,0.0984844587143486,0.0984844587143486,-104.9601841,39.7273144,-104.9613357,39.7273124
-18051,6262,1012,0.100435040495632,0.100435040495632,-104.9613357,39.7273124,-104.9625101,39.7273084
-18052,1012,3920,0.0983845018704443,0.0983845018704443,-104.9625101,39.7273084,-104.9636605,39.7273016
-18053,3920,3146,0.0986126436689597,0.0986126436689597,-104.9636605,39.7273016,-104.9648136,39.7273031
-18054,3146,5413,0.0895267655685447,0.0895267655685447,-104.9648136,39.7273031,-104.9658604,39.7273116
-18056,7083,10246,0.183851267240735,0.183851267240735,-104.9848713,39.7256319,-104.9848802,39.7272853
-19713,10624,10625,0.048946191319968,0.048946191319968,-105.0029777,39.7364814,-105.0033774,39.7367965
-18057,10246,3811,0.198873820859187,0.198873820859187,-104.9848802,39.7272853,-104.9848706,39.7290738
-18058,3811,5919,0.153816946395634,0.153816946395634,-104.9848706,39.7290738,-104.9848641,39.7304571
-18059,5919,918,0.176756350909337,0.176756350909337,-104.9848641,39.7304571,-104.98484,39.7320466
-18060,918,2205,0.200653782293274,0.200653782293274,-104.98484,39.7320466,-104.9848518,39.7338511
-18061,2205,4854,0.158832380963048,0.158832380963048,-104.9848518,39.7338511,-104.9848436,39.7352795
-18062,4854,9478,0.174098421618631,0.174098421618631,-104.9848436,39.7352795,-104.9848486,39.7368452
-18063,9478,5457,0.176480352381434,0.176480352381434,-104.9848486,39.7368452,-104.9848604,39.7384323
-18065,10252,9243,0.056682383190515,0.056682383190515,-105.0065259,39.7255278,-105.005875,39.7256239
-18067,9110,10252,0.0330932350677699,0.0330932350677699,-105.0069105,39.725495,-105.0065259,39.7255278
-18069,10253,6203,0.215345161639468,0.215345161639468,-105.0092129,39.7256572,-105.0067229,39.7253691
-18071,9115,10254,0.0491155354462148,0.0491155354462148,-105.0110763,39.7256175,-105.010502,39.7256195
-18075,10254,10255,0.0642041289943666,0.0642041289943666,-105.010502,39.7256195,-105.0097514,39.7256305
-18076,10255,10253,0.0461489416178021,0.0461489416178021,-105.0097514,39.7256305,-105.0092129,39.7256572
-18077,10253,9108,0.280904320228077,0.280904320228077,-105.0092129,39.7256572,-105.0059283,39.7256613
-18106,4661,10263,0.0487469518611321,0.0487469518611321,-105.0193192,39.7874319,-105.0198897,39.7874342
-18107,10263,1291,0.0497384845482417,0.0497384845482417,-105.0198897,39.7874342,-105.0204718,39.7874371
-18108,1291,10264,0.0496989025904687,0.0496989025904687,-105.0204718,39.7874371,-105.0210534,39.7874313
-18109,10264,4563,0.0505706606603651,0.0505706606603651,-105.0210534,39.7874313,-105.0216452,39.7874253
-18110,4563,10265,0.0486836289638941,0.0486836289638941,-105.0216452,39.7874253,-105.0222149,39.787432
-18111,10265,6287,0.0497296125808977,0.0497296125808977,-105.0222149,39.787432,-105.0227969,39.7874344
-18112,6287,10135,0.0504212055729903,0.0504212055729903,-105.0227969,39.7874344,-105.023387,39.7874357
-18113,10135,2731,0.0489350482169507,0.0489350482169507,-105.023387,39.7874357,-105.0239597,39.7874332
-18114,2731,6420,0.048465461986869,0.048465461986869,-105.0239597,39.7874332,-105.0245269,39.7874302
-18115,6420,5790,0.0578817224647719,0.0578817224647719,-105.0245269,39.7874302,-105.0252043,39.7874266
-18117,8844,10266,0.374943168729483,0.374943168729483,-105.0064203,39.7882499,-105.0106756,39.7890735
-18166,2719,9346,0.101115603929332,0.101115603929332,-105.0239361,39.7820944,-105.0251194,39.7820982
-18167,9346,9392,0.0111914858812043,0.0111914858812043,-105.0251194,39.7820982,-105.0252309,39.782151
-18168,9392,3751,0.0968414516342271,0.0968414516342271,-105.0252309,39.782151,-105.0263639,39.7821708
-18169,3751,10278,0.0782538471461698,0.0782538471461698,-105.0263639,39.7821708,-105.0272582,39.7823223
-18175,4073,6058,0.198316836648763,0.198316836648763,-105.0316273,39.7838408,-105.0316334,39.7856243
-18176,6058,5798,0.200796475018558,0.200796475018558,-105.0316334,39.7856243,-105.0316273,39.7874301
-18197,6750,5252,0.185979531851002,0.185979531851002,-105.0275762,39.7639672,-105.0295723,39.7646329
-18198,5252,3974,0.035323188020151,0.035323188020151,-105.0295723,39.7646329,-105.0299675,39.7647258
-18200,9357,2431,0.202519432604137,0.202519432604137,-105.0363814,39.7731219,-105.0363839,39.7713006
-18201,2431,9370,0.199383622965617,0.199383622965617,-105.0363839,39.7713006,-105.0363839,39.7695075
-18202,9370,1686,0.206118508992277,0.206118508992277,-105.0363839,39.7695075,-105.0363632,39.7676539
-18203,1686,6875,0.204292305654176,0.204292305654176,-105.0363632,39.7676539,-105.0363465,39.7658167
-18588,6666,1137,0.0495387040987843,0.0495387040987843,-105.0398227,39.780198,-105.0404024,39.780201
-18589,1137,6968,0.0501615414722825,0.0501615414722825,-105.0404024,39.780201,-105.0409894,39.7802021
-18590,6968,7504,0.0501273333828588,0.0501273333828588,-105.0409894,39.7802021,-105.041576,39.7802031
-18591,7504,9407,0.0988444534637431,0.0988444534637431,-105.041576,39.7802031,-105.0427327,39.7802037
-18592,9407,7479,0.0538727285881741,0.0538727285881741,-105.0427327,39.7802037,-105.0433631,39.7802085
-18593,7479,5581,0.0510099428615072,0.0510099428615072,-105.0433631,39.7802085,-105.04396,39.7802131
-18594,5581,10328,0.0992130715738959,0.0992130715738959,-105.04396,39.7802131,-105.045121,39.7802175
-18595,10328,10329,0.693578278671619,0.693578278671619,-105.045121,39.7802175,-105.0532374,39.7802069
-18597,1845,2579,0.175048810960168,0.175048810960168,-105.031231,39.721358,-105.0312476,39.7229322
-18598,2579,5177,0.17911429796522,0.17911429796522,-105.0312476,39.7229322,-105.031239,39.724543
-18599,5177,10332,0.0225943601934419,0.0225943601934419,-105.031239,39.724543,-105.0312506,39.724746
-18604,6211,7648,0.275618961394926,0.275618961394926,-105.0356646,39.7257653,-105.0356619,39.728244
-18605,7648,8065,0.262676196305861,0.262676196305861,-105.0356619,39.728244,-105.0356674,39.7306063
-18711,2590,5183,0.178568260386205,0.178568260386205,-105.0372775,39.7229371,-105.0372815,39.724543
-18712,5183,5651,0.104244503206479,0.104244503206479,-105.0372815,39.724543,-105.0372987,39.7254804
-18747,6210,10338,0.0125158344567017,0.0125158344567017,-105.0337279,39.7260547,-105.0338594,39.7261041
-18748,10338,10206,0.0559739547988456,0.0559739547988456,-105.0338594,39.7261041,-105.0345139,39.726102
-18749,10206,10338,0.0559739547988456,0.0559739547988456,-105.0345139,39.726102,-105.0338594,39.7261041
-18751,2596,5186,0.177768815603995,0.177768815603995,-105.0389102,39.7229396,-105.0389187,39.7245383
-18758,2588,5182,0.176322049262719,0.176322049262719,-105.0361794,39.7229441,-105.0361829,39.7245298
-18759,5182,5650,0.106248688527315,0.106248688527315,-105.0361829,39.7245298,-105.0361904,39.7254853
-18765,10339,10341,0.0322810460432902,0.0322810460432902,-105.0047672,39.7397925,-105.0049362,39.7395329
-18767,4492,10342,0.0173161946805903,0.0173161946805903,-105.0052379,39.7395355,-105.0050354,39.7395334
-18768,10342,10341,0.00848220864637094,0.00848220864637094,-105.0050354,39.7395334,-105.0049362,39.7395329
-18770,5616,10343,0.00845077111169589,0.00845077111169589,-105.0015651,39.7393715,-105.0014663,39.7393735
-18771,10343,10344,0.0509950035054565,0.0509950035054565,-105.0014663,39.7393735,-105.0008699,39.7393725
-18772,10344,9634,0.100553817919852,0.100553817919852,-105.0008699,39.7393725,-105.0008673,39.7384682
-18950,6234,7639,0.179364622734642,0.179364622734642,-104.9975473,39.7256987,-104.9975661,39.7273117
-18789,10350,10131,1.72659496196287,1.72659496196287,-104.9945291,39.7683411,-104.9893756,39.7833551
-18791,10210,10350,0.0784105528331039,0.0784105528331039,-104.9953391,39.76801,-104.9945291,39.7683411
-18793,9064,10351,0.108141289805084,0.108141289805084,-104.9980982,39.766727,-104.9969332,39.7671064
-18795,10351,8944,0.165792281012932,0.165792281012932,-104.9969332,39.7671064,-104.9951643,39.7677183
-18797,8946,8970,0.101566925839608,0.101566925839608,-104.9938162,39.7672158,-104.9947845,39.7677453
-18805,431,8911,0.368100622266312,0.368100622266312,-104.9935559,39.7671283,-104.9912548,39.7699266
-18807,8935,10353,0.0653020622045421,0.0653020622045421,-104.9904048,39.7737279,-104.990472,39.7731429
-18865,217,6354,0.250152442533131,0.250152442533131,-105.0109346,39.7232696,-105.0110405,39.7255178
-18867,10372,10373,0.00433033984408308,0.00433033984408308,-105.0086117,39.7209279,-105.0085612,39.7209251
-18809,2956,8964,0.839971785186466,0.839971785186466,-104.9919912,39.7706248,-104.9950202,39.7634385
-18811,10353,8914,0.0131507104865587,0.0131507104865587,-104.990472,39.7731429,-104.9904906,39.7730255
-18813,10354,8436,0.0634565167907247,0.0634565167907247,-105.0148848,39.7420462,-105.014551,39.7415365
-18815,8440,10354,0.130317184994069,0.130317184994069,-105.0158022,39.7429821,-105.0148848,39.7420462
-18818,8431,4422,0.07184295360215,0.07184295360215,-105.0163799,39.7437893,-105.0169124,39.7442891
-18820,8435,10355,0.137076541565926,0.137076541565926,-105.0147581,39.7421922,-105.015729,39.7431732
-18825,9181,10356,0.159461421615407,0.159461421615407,-105.0158598,39.7429416,-105.0153708,39.7415577
-18827,10357,10358,0.20146281055654,0.20146281055654,-105.0148187,39.7409989,-105.0144967,39.7392041
-18829,9180,10359,0.028613707454695,0.028613707454695,-105.0141257,39.7376931,-105.0141666,39.7374377
-18833,10360,10361,0.0535066603860974,0.0535066603860974,-105.0142282,39.7371345,-105.0143588,39.7366639
-18835,10361,10362,0.0845690343766548,0.0845690343766548,-105.0143588,39.7366639,-105.0146327,39.7359331
-18836,10362,9179,0.0218653086870073,0.0218653086870073,-105.0146327,39.7359331,-105.0147208,39.7357485
-19605,10512,10584,0.0688213399515618,0.0688213399515618,-104.9902689,39.7091497,-104.9910734,39.7091553
-20576,10864,10865,0.0279630258161778,0.0279630258161778,-105.0249015,39.7609531,-105.024575,39.7609374
-18838,10363,8434,0.438288246661524,0.438288246661524,-105.013913,39.7376771,-105.0143556,39.741604
-18840,8433,10364,0.0515496120111284,0.0515496120111284,-105.0141326,39.7366784,-105.0140112,39.7371325
-18842,10365,10363,0.0256601639624377,0.0256601639624377,-105.0139511,39.7374482,-105.013913,39.7376771
-18844,10364,10365,0.0354783965202197,0.0354783965202197,-105.0140112,39.7371325,-105.0139511,39.7374482
-18848,10367,8387,0.416611762681733,0.416611762681733,-105.0138601,39.7376849,-105.0139458,39.741431
-18850,10366,10367,0.0267687636085769,0.0267687636085769,-105.0139219,39.7374489,-105.0138601,39.7376849
-18852,10368,10369,0.0527715034881913,0.0527715034881913,-105.0143032,39.7371374,-105.0144214,39.7366716
-18854,10370,10368,0.0348446889076446,0.0348446889076446,-105.01426,39.737449,-105.0143032,39.7371374
-18856,10371,10370,0.031482834490968,0.031482834490968,-105.0142451,39.7377319,-105.01426,39.737449
-18858,9836,10370,0.0328670117804623,0.0328670117804623,-105.0142819,39.7377441,-105.01426,39.737449
-18921,10399,10400,0.0895277934361984,0.0895277934361984,-105.0126923,39.7491278,-105.0134743,39.7485923
-18922,10400,10401,0.16717380860502,0.16717380860502,-105.0134743,39.7485923,-105.0137455,39.7471034
-18923,10402,10383,0.0291115464827756,0.0291115464827756,-105.012332,39.7504473,-105.0124996,39.7502194
-18924,10383,10403,0.0309778660865677,0.0309778660865677,-105.0124996,39.7502194,-105.0122636,39.750008
-18925,10403,10390,0.0429604527526701,0.0429604527526701,-105.0122636,39.750008,-105.0126243,39.749739
-18927,10404,10405,0.0626862314087788,0.0626862314087788,-105.0107841,39.7498186,-105.0109524,39.7503673
-18930,10406,10405,0.108269005965165,0.108269005965165,-105.0097302,39.7501122,-105.0109524,39.7503673
-18932,1241,6737,0.0570520014832054,0.0570520014832054,-105.0205242,39.7613979,-105.0203579,39.760901
-18934,8100,6923,0.164900679548878,0.164900679548878,-105.0200789,39.7613979,-105.018184,39.7611196
-18936,6923,8099,0.163064822440362,0.163064822440362,-105.018184,39.7611196,-105.016277,39.7610801
-18938,7928,8098,0.0730856765280865,0.0730856765280865,-105.0162425,39.7603392,-105.0160862,39.7609854
-18940,4039,4644,0.0827836448037734,0.0827836448037734,-105.0178323,39.7180402,-105.018682,39.7183967
-18943,10407,7448,0.103189406011465,0.103189406011465,-105.0127225,39.7148426,-105.0139289,39.7148415
-19852,10659,3379,0.102335766847439,0.102335766847439,-105.035226,39.7385493,-105.0346077,39.7377613
-18945,4142,10108,0.0206474020512083,0.0206474020512083,-104.9827054,39.7147303,-104.9827539,39.7145484
-18947,5674,2620,0.178145491343884,0.178145491343884,-104.9975487,39.7209311,-104.9975509,39.7225332
-18948,2620,5201,0.177501253416424,0.177501253416424,-104.9975509,39.7225332,-104.9975447,39.7241295
-18949,5201,6234,0.174487220572856,0.174487220572856,-104.9975447,39.7241295,-104.9975473,39.7256987
-18951,7639,8773,0.176238488140281,0.176238488140281,-104.9975661,39.7273117,-104.9975826,39.7288966
-18952,8773,8053,0.178917033730472,0.178917033730472,-104.9975826,39.7288966,-104.9976187,39.7305054
-18953,8053,6598,0.176988972177145,0.176988972177145,-104.9976187,39.7305054,-104.9976193,39.7320971
-18954,6598,10243,0.175681180141988,0.175681180141988,-104.9976193,39.7320971,-104.9976337,39.733677
-18956,1841,7856,0.0582284853716934,0.0582284853716934,-104.9921535,39.7209342,-104.9928343,39.7209379
-18957,7856,4669,0.101085168807405,0.101085168807405,-104.9928343,39.7209379,-104.994016,39.720921
-18979,1764,4509,0.0491583937075752,0.0491583937075752,-104.9769042,39.7146962,-104.9763295,39.7146995
-18980,4509,4971,0.0991296803100638,0.0991296803100638,-104.9763295,39.7146995,-104.9751706,39.7147065
-18981,4971,1516,0.0482432726972035,0.0482432726972035,-104.9751706,39.7147065,-104.9746066,39.7147099
-18982,1516,5304,0.0536166306041211,0.0536166306041211,-104.9746066,39.7147099,-104.9739798,39.7147152
-18983,5304,7951,0.0505628420768163,0.0505628420768163,-104.9739798,39.7147152,-104.9733887,39.7147202
-18984,7951,7950,0.0124795676036534,0.0124795676036534,-104.9733887,39.7147202,-104.9732428,39.7147202
-18985,7950,1083,0.0132964314605761,0.0132964314605761,-104.9732428,39.7147202,-104.9730883,39.714707
-18986,1083,8958,0.019091432638578,0.019091432638578,-104.9730883,39.714707,-104.9728651,39.714707
-18987,8958,1750,0.0565301426139895,0.0565301426139895,-104.9728651,39.714707,-104.9722042,39.714707
-18988,1750,6636,0.100698502633469,0.100698502633469,-104.9722042,39.714707,-104.9710271,39.7146913
-18989,6636,5425,0.0992142460676437,0.0992142460676437,-104.9710271,39.7146913,-104.9698675,39.7147124
-18990,5425,7398,0.100582854167636,0.100582854167636,-104.9698675,39.7147124,-104.9686917,39.7147256
-18992,5674,10413,0.0446816032988726,0.0446816032988726,-104.9975487,39.7209311,-104.9980711,39.720935
-18993,10413,6641,0.0419959523464037,0.0419959523464037,-104.9980711,39.720935,-104.9985621,39.7209387
-18994,6641,3958,0.140215488391596,0.140215488391596,-104.9985621,39.7209387,-105.0002015,39.7209321
-18997,9265,10213,0.108979878639585,0.108979878639585,-105.0016701,39.7209304,-105.0029442,39.7209175
-19957,10683,10676,0.203409384148671,0.203409384148671,-105.0434219,39.7384701,-105.0434166,39.7366408
-18998,10213,9182,0.221716360786737,0.221716360786737,-105.0029442,39.7209175,-105.0055365,39.720906
-18999,9182,4360,0.00485021965067944,0.00485021965067944,-105.0055365,39.720906,-105.0055932,39.7209068
-19000,4360,6082,0.123504109096694,0.123504109096694,-105.0055932,39.7209068,-105.007037,39.720887
-19240,10459,8221,0.147319836582293,0.147319836582293,-104.9924125,39.7416474,-104.9936301,39.74071
-19002,1269,4533,0.203350040591983,0.203350040591983,-105.0203986,39.7184231,-105.0227761,39.7184297
-19003,4533,8579,0.198512187124204,0.198512187124204,-105.0227761,39.7184297,-105.0250969,39.7184502
-19005,1841,2613,0.177111353706323,0.177111353706323,-104.9921535,39.7209342,-104.9921516,39.722527
-19006,2613,10414,0.0530626159965885,0.0530626159965885,-104.9921516,39.722527,-104.992154,39.7230042
-19007,10414,5196,0.124494794308613,0.124494794308613,-104.992154,39.7230042,-104.9921597,39.7241238
-19008,5196,6239,0.171651899926933,0.171651899926933,-104.9921597,39.7241238,-104.9921634,39.7256675
-19010,4186,4182,0.0154308679587021,0.0154308679587021,-104.9921793,39.7147876,-104.9923595,39.714781
-19011,4182,3367,0.101326829934178,0.101326829934178,-104.9923595,39.714781,-104.993544,39.7147942
-19012,3367,3370,0.0389167828857067,0.0389167828857067,-104.993544,39.7147942,-104.9939989,39.7148008
-19013,3370,10415,0.0493793417329401,0.0493793417329401,-104.9939989,39.7148008,-104.9945762,39.7148008
-19014,10415,7424,0.0519282840216647,0.0519282840216647,-104.9945762,39.7148008,-104.9951833,39.7148008
-19015,7424,10416,0.0508505433229276,0.0508505433229276,-104.9951833,39.7148008,-104.9957778,39.7148008
-19016,10416,7831,0.0497300351350067,0.0497300351350067,-104.9957778,39.7148008,-104.9963592,39.7148008
-19017,7831,9197,0.188452322853961,0.188452322853961,-104.9963592,39.7148008,-104.9985624,39.7147937
-19019,5549,10417,0.0198343104325793,0.0198343104325793,-104.9920738,39.6893875,-104.9923056,39.6893875
-19020,10417,2562,0.366597076665755,0.366597076665755,-104.9923056,39.6893875,-104.9965885,39.6893017
-19021,2562,9783,0.236171353579108,0.236171353579108,-104.9965885,39.6893017,-104.9993276,39.6890403
-19022,9783,9781,0.00643634199106272,0.00643634199106272,-104.9993276,39.6890403,-104.9994018,39.6890498
-19958,10676,10668,0.135367639799285,0.135367639799285,-105.0434166,39.7366408,-105.0433886,39.7354236
-19023,9781,9160,0.00367738923970995,0.00367738923970995,-104.9994018,39.6890498,-104.9994442,39.6890552
-19025,9156,9260,0.0939135311905937,0.0939135311905937,-104.9956359,39.7036162,-104.9954471,39.7027842
-19040,10419,435,0.0296899237003876,0.0296899237003876,-104.9404266,39.7837714,-104.9400813,39.7837417
-19042,6361,6912,0.413025051484806,0.413025051484806,-104.9406234,39.7728953,-104.9406406,39.7691809
-19043,6912,5272,0.122458972713872,0.122458972713872,-104.9406406,39.7691809,-104.9406406,39.7680796
-19044,5272,2806,0.132101617817113,0.132101617817113,-104.9406406,39.7680796,-104.9406492,39.7668916
-19045,2806,9480,0.135002111088791,0.135002111088791,-104.9406492,39.7668916,-104.9406528,39.7656775
-19046,9480,901,0.134968752710231,0.134968752710231,-104.9406528,39.7656775,-104.9406492,39.7644637
-19048,9486,9873,0.018915562611857,0.018915562611857,-104.9406618,39.7619502,-104.9406644,39.7617801
-19049,9873,3055,0.182137362251337,0.182137362251337,-104.9406644,39.7617801,-104.9406663,39.7601421
-19050,3055,9669,0.205422822851571,0.205422822851571,-104.9406663,39.7601421,-104.9406749,39.7582947
-19051,9669,4352,0.202508200405289,0.202508200405289,-104.9406749,39.7582947,-104.9406749,39.7564735
-19052,4352,7924,0.0557579828978423,0.0557579828978423,-104.9406749,39.7564735,-104.9406835,39.7559721
-19053,7924,7923,0.106391305814005,0.106391305814005,-104.9406835,39.7559721,-104.9406835,39.7550153
-19054,7923,3580,0.0580075342624614,0.0580075342624614,-104.9406835,39.7550153,-104.9407092,39.754494
-19055,3580,788,0.184224770380015,0.184224770380015,-104.9407092,39.754494,-104.9407607,39.7528377
-19056,788,10089,0.199795465587569,0.199795465587569,-104.9407607,39.7528377,-104.9407655,39.7510409
-19057,10089,491,0.20084069572648,0.20084069572648,-104.9407655,39.7510409,-104.9407607,39.7492347
-19058,491,489,0.205477824650125,0.205477824650125,-104.9407607,39.7492347,-104.9407865,39.7473869
-19059,489,4589,0.272976340428597,0.272976340428597,-104.9407865,39.7473869,-104.9408036,39.744932
-19060,4589,1978,0.12991989572877,0.12991989572877,-104.9408036,39.744932,-104.9407693,39.7437639
-19061,1978,1994,0.0147512164813181,0.0147512164813181,-104.9407693,39.7437639,-104.9407521,39.7436319
-19062,1994,705,0.187141061542779,0.187141061542779,-104.9407521,39.7436319,-104.9407521,39.7419489
-19063,705,642,0.0623803538473296,0.0623803538473296,-104.9407521,39.7419489,-104.9407521,39.7413879
-19064,642,10422,0.140896965982946,0.140896965982946,-104.9407521,39.7413879,-104.9407436,39.7401208
-19067,9469,4898,0.180547202392339,0.180547202392339,-104.9407436,39.7367085,-104.9407436,39.7350848
-19068,4898,4899,0.0469687370152221,0.0469687370152221,-104.9407436,39.7350848,-104.9407436,39.7346624
-19069,4899,9422,0.11449972298661,0.11449972298661,-104.9407436,39.7346624,-104.9407521,39.7336327
-19070,9422,2230,0.0888113879114828,0.0888113879114828,-104.9407521,39.7336327,-104.9407521,39.732834
-19071,2230,961,0.0851419553312056,0.0851419553312056,-104.9407521,39.732834,-104.9407521,39.7320683
-19072,961,5943,0.118166848545009,0.118166848545009,-104.9407521,39.7320683,-104.9407521,39.7310056
-19073,5943,8869,0.0594604755013997,0.0594604755013997,-104.9407521,39.7310056,-104.9407607,39.7304709
-19074,8869,3766,0.149125823202066,0.149125823202066,-104.9407607,39.7304709,-104.9407704,39.7291298
-19075,3766,10248,0.200641473563849,0.200641473563849,-104.9407704,39.7291298,-104.940779,39.7273254
-19076,10248,1211,0.0471365210908597,0.0471365210908597,-104.940779,39.7273254,-104.940806,39.726902
-19077,1211,8567,0.147435833594552,0.147435833594552,-104.940806,39.726902,-104.940796,39.7255761
-19078,8567,6541,0.161851618274563,0.161851618274563,-104.940796,39.7255761,-104.9407779,39.7241206
-19079,6541,4746,0.176177241775495,0.176177241775495,-104.9407779,39.7241206,-104.9407779,39.7225362
-19081,4159,2359,0.17021782028236,0.17021782028236,-104.9407748,39.7209356,-104.9407802,39.7194048
-19082,2359,9694,0.178145500592375,0.178145500592375,-104.9407802,39.7194048,-104.9407779,39.7178027
-19083,9694,5170,0.174004040417809,0.174004040417809,-104.9407779,39.7178027,-104.9407951,39.7162379
-19085,6362,6447,0.0914589915157797,0.0914589915157797,-104.940457,39.7728953,-104.9404516,39.7737178
-19086,6447,2399,0.0149004167256546,0.0149004167256546,-104.9404516,39.7737178,-104.9404527,39.7738518
-19087,2399,9454,0.2205749898237,0.2205749898237,-104.9404527,39.7738518,-104.9405378,39.7758344
-19089,519,831,0.121986604363099,0.121986604363099,-104.9416292,39.7807961,-104.9429184,39.780325
-19090,831,10147,0.141772461765667,0.141772461765667,-104.9429184,39.780325,-104.9445492,39.7800907
-19091,10147,10428,0.0119979325853114,0.0119979325853114,-104.9445492,39.7800907,-104.9445492,39.7799828
-19093,8145,9501,0.0198122134799104,0.0198122134799104,-104.9480016,39.7837973,-104.9477699,39.7837907
-19094,9501,1751,0.0440125388452957,0.0440125388452957,-104.9477699,39.7837907,-104.9472549,39.7837973
-19095,1751,6012,0.168131959250809,0.168131959250809,-104.9472549,39.7837973,-104.9452877,39.7838286
-19096,6012,832,0.205336624614562,0.205336624614562,-104.9452877,39.7838286,-104.9428851,39.783794
-19097,832,518,0.168135736431663,0.168135736431663,-104.9428851,39.783794,-104.9409175,39.7837817
-19098,518,6513,0.0279910233322091,0.0279910233322091,-104.9409175,39.7837817,-104.9405902,39.7837714
-19099,6513,10419,0.0139795197071191,0.0139795197071191,-104.9405902,39.7837714,-104.9404266,39.7837714
-19102,10049,8612,0.0522928783615643,0.0522928783615643,-105.0003395,39.7496422,-105.0007767,39.7499711
-19103,8612,8474,0.0521996072275175,0.0521996072275175,-105.0007767,39.7499711,-105.0012293,39.7502862
-19142,5220,8777,0.146640601075408,0.146640601075408,-104.9888573,39.7273254,-104.9874242,39.7266013
-19105,10430,10358,0.245136281681027,0.245136281681027,-105.0132616,39.7411936,-105.0144967,39.7392041
-19108,5628,9568,0.110078124608504,0.110078124608504,-104.9727792,39.7181791,-104.9714922,39.7181793
-19110,8421,10357,0.296407311680596,0.296407311680596,-105.0127281,39.7431253,-105.0148187,39.7409989
-19114,2386,9558,0.0348995825647377,0.0348995825647377,-104.9468949,39.7115125,-104.9465426,39.7113542
-19115,9558,8798,0.125658984531748,0.125658984531748,-104.9465426,39.7113542,-104.9457531,39.7104012
-19120,8185,9450,0.339524971346509,0.339524971346509,-104.936636,39.7114077,-104.9405977,39.7115958
-19121,9450,8690,0.0176125961717604,0.0176125961717604,-104.9405977,39.7115958,-104.9408036,39.7115964
-19122,8690,7659,0.0477249226862614,0.0477249226862614,-104.9408036,39.7115964,-104.9413615,39.7115918
-19123,7659,6718,0.103225505465316,0.103225505465316,-104.9413615,39.7115918,-104.9425631,39.711506
-19125,2190,8128,0.151455687504874,0.151455687504874,-105.0139689,39.7423726,-105.0124026,39.7430088
-19126,8128,7827,0.106341251390527,0.106341251390527,-105.0124026,39.7430088,-105.0113366,39.7435015
-19127,7827,10432,0.221434541654845,0.221434541654845,-105.0113366,39.7435015,-105.0087952,39.7438851
-19128,10432,6961,0.0131395719721806,0.0131395719721806,-105.0087952,39.7438851,-105.0086651,39.743948
-19129,6961,10433,0.0134328380462519,0.0134328380462519,-105.0086651,39.743948,-105.0085243,39.7440016
-19130,10433,10434,0.0869062764565781,0.0869062764565781,-105.0085243,39.7440016,-105.007666,39.7444203
-19131,10434,8597,0.00983583049657532,0.00983583049657532,-105.007666,39.7444203,-105.0075587,39.7444522
-19132,8597,10435,0.0222534876112211,0.0222534876112211,-105.0075587,39.7444522,-105.0073243,39.7445392
-19134,10050,3168,0.0821216282435351,0.0821216282435351,-105.0006176,39.749423,-105.0012883,39.7488943
-19141,7961,5220,0.0901667996290929,0.0901667996290929,-104.9896006,39.7279005,-104.9888573,39.7273254
-19144,8388,10437,0.320984694668417,0.320984694668417,-105.0138882,39.7419658,-105.0110862,39.743887
-19146,10437,6962,0.186002986440568,0.186002986440568,-105.0110862,39.743887,-105.0094763,39.7450121
-19147,6962,10438,0.0184374963317956,0.0184374963317956,-105.0094763,39.7450121,-105.0092941,39.7451008
-19148,10438,1881,0.209774050468257,0.209774050468257,-105.0092941,39.7451008,-105.0074729,39.746365
-19149,1881,8569,0.224745848084877,0.224745848084877,-105.0074729,39.746365,-105.00526,39.747456
-19150,8569,9988,0.0831717180377924,0.0831717180377924,-105.00526,39.747456,-105.0043843,39.7477818
-19151,9988,8477,0.0648356679758423,0.0648356679758423,-105.0043843,39.7477818,-105.003633,39.7477024
-19152,8477,8463,0.0835421546655635,0.0835421546655635,-105.003633,39.7477024,-105.0026615,39.7476216
-19960,9517,10684,0.210192276965542,0.210192276965542,-105.0410776,39.740352,-105.0410722,39.7384617
-19154,8800,8811,0.31904932389546,0.31904932389546,-104.9467659,39.7116096,-104.9494453,39.7136057
-19162,10428,3871,0.0534454265709194,0.0534454265709194,-104.9445492,39.7799828,-104.9440637,39.7796798
-19163,3871,840,0.0992542187222657,0.0992542187222657,-104.9440637,39.7796798,-104.942905,39.7797416
-19164,840,4272,0.128018795895479,0.128018795895479,-104.942905,39.7797416,-104.9418717,39.778908
-19166,9283,10439,0.0445989165425857,0.0445989165425857,-104.9624039,39.7800174,-104.961882,39.7800192
-19168,10440,9282,0.395349042842448,0.395349042842448,-104.9622414,39.7801259,-104.9667713,39.7808486
-19170,7136,2300,0.0954980884416659,0.0954980884416659,-104.9684185,39.7783922,-104.9691692,39.7790284
-19171,2300,6804,0.197911548357853,0.197911548357853,-104.9691692,39.7790284,-104.9688098,39.7807867
-19173,7956,8539,0.0718200140953678,0.0718200140953678,-104.9677476,39.7808918,-104.9669081,39.7808609
-19174,8539,9282,0.0117697082839477,0.0117697082839477,-104.9669081,39.7808609,-104.9667713,39.7808486
-19176,10442,1349,0.0573473302810492,0.0573473302810492,-104.9735925,39.7715442,-104.9740676,39.7719084
-19178,10443,8521,0.0309849382045455,0.0309849382045455,-105.0041255,39.7507938,-105.0043742,39.7505911
-19180,10151,10440,0.0401979143660666,0.0401979143660666,-104.961771,39.7801275,-104.9622414,39.7801259
-19182,10439,5059,0.220890379574485,0.220890379574485,-104.961882,39.7800192,-104.9592971,39.780022
-19183,5059,5013,0.0908635547178716,0.0908635547178716,-104.9592971,39.780022,-104.9582338,39.780024
-19184,5013,3349,0.0925982666666752,0.0925982666666752,-104.9582338,39.780024,-104.9571502,39.780022
-19185,3349,7877,0.0609717199349519,0.0609717199349519,-104.9571502,39.780022,-104.9564367,39.7800204
-19186,7877,5761,0.0981025803398981,0.0981025803398981,-104.9564367,39.7800204,-104.9552887,39.7800158
-19187,5761,7325,0.0996396951750833,0.0996396951750833,-104.9552887,39.7800158,-104.9541227,39.7800179
-19961,10684,10674,0.204298559687633,0.204298559687633,-105.0410722,39.7384617,-105.0410696,39.7366244
-19188,7325,2064,0.0938077886809335,0.0938077886809335,-104.9541227,39.7800179,-104.953025,39.7800093
-20575,10863,10864,0.0111548544892698,0.0111548544892698,-105.0250317,39.7609599,-105.0249015,39.7609531
-19189,2064,2650,0.094440127839499,0.094440127839499,-104.953025,39.7800093,-104.9519199,39.7800007
-19801,7638,6235,0.180302575380181,0.180302575380181,-104.9969636,39.7273173,-104.9969633,39.7256958
-19190,2650,10444,0.141197448312795,0.141197448312795,-104.9519199,39.7800007,-104.9502676,39.7799945
-19191,10444,9821,0.0323105619062287,0.0323105619062287,-104.9502676,39.7799945,-104.9498895,39.7799931
-19192,9821,9822,0.0144436267959073,0.0144436267959073,-104.9498895,39.7799931,-104.9497205,39.7799952
-19193,9822,3476,0.28088366035949,0.28088366035949,-104.9497205,39.7799952,-104.9464336,39.7799807
-19194,3476,10445,0.0704996285836985,0.0704996285836985,-104.9464336,39.7799807,-104.9456086,39.7799808
-19195,10445,10428,0.0905303391563005,0.0905303391563005,-104.9456086,39.7799808,-104.9445492,39.7799828
-19197,10167,10442,0.0431387292722099,0.0431387292722099,-104.9732322,39.7712725,-104.9735925,39.7715442
-19199,8408,8568,0.191490020507546,0.191490020507546,-105.0080042,39.7473225,-105.0063682,39.7484987
-19200,8568,10012,0.119004756390235,0.119004756390235,-105.0063682,39.7484987,-105.0057345,39.7494516
-19335,8631,10474,0.189944426919074,0.189944426919074,-105.0072049,39.7537723,-105.0056485,39.7525532
-19201,10012,8461,0.097400081996938,0.097400081996938,-105.0057345,39.7494516,-105.0049189,39.7500632
-19203,4275,3348,0.0888431357806069,0.0888431357806069,-104.9582338,39.7789377,-104.9571942,39.7789304
-19204,3348,7876,0.0640319779657538,0.0640319779657538,-104.9571942,39.7789304,-104.9564449,39.7789288
-19205,7876,5760,0.0967358830871852,0.0967358830871852,-104.9564449,39.7789288,-104.9553129,39.7789264
-19206,5760,7324,0.101239369924108,0.101239369924108,-104.9553129,39.7789264,-104.9541282,39.778924
-19207,7324,2063,0.0946165731852714,0.0946165731852714,-104.9541282,39.778924,-104.953021,39.7789217
-19208,2063,2649,0.0935569331707932,0.0935569331707932,-104.953021,39.7789217,-104.9519262,39.7789194
-19209,2649,4105,0.0971375052394303,0.0971375052394303,-104.9519262,39.7789194,-104.9507895,39.7789171
-19210,4105,6689,0.0855494277301445,0.0855494277301445,-104.9507895,39.7789171,-104.9497884,39.7789167
-19211,6689,356,0.101026474697068,0.101026474697068,-104.9497884,39.7789167,-104.9486062,39.7789125
-19212,356,7688,0.0921469063041614,0.0921469063041614,-104.9486062,39.7789125,-104.9475279,39.7789103
-19213,7688,3475,0.0946165920204556,0.0946165920204556,-104.9475279,39.7789103,-104.9464207,39.778908
-19215,6939,9228,0.0827641347919428,0.0827641347919428,-104.9592691,39.7819637,-104.9592628,39.7812194
-19216,9228,6380,0.0767643689707359,0.0767643689707359,-104.9592628,39.7812194,-104.9592745,39.7805291
-19217,6380,5058,0.0447215279971903,0.0447215279971903,-104.9592745,39.7805291,-104.9592906,39.7801271
-19219,5015,3318,0.0976390934138488,0.0976390934138488,-104.9582016,39.7805126,-104.957059,39.7805126
-19221,7829,10449,0.170073568021036,0.170073568021036,-104.9917479,39.7578961,-104.9903397,39.7589766
-19222,9276,9490,0.227893235973284,0.227893235973284,-104.9957422,39.7556449,-104.9975705,39.7571365
-19224,5808,10450,0.0444182254226453,0.0444182254226453,-104.9878972,39.7431235,-104.9873945,39.7430227
-19228,10452,10453,0.00899294746602318,0.00899294746602318,-104.9908137,39.7415403,-104.9908874,39.7414826
-19262,561,8788,0.108355823884287,0.108355823884287,-104.984845,39.7400568,-104.9835778,39.7400469
-19264,10465,10081,0.106367191723871,0.106367191723871,-104.9873778,39.7399976,-104.9861338,39.7399945
-19265,10081,9467,0.08060964495203,0.08060964495203,-104.9861338,39.7399945,-104.9851948,39.7400592
-19376,8634,10174,0.107642527980188,0.107642527980188,-104.9972254,39.7453524,-104.9963422,39.7446625
-19283,1943,10467,0.139113140483037,0.139113140483037,-104.9902169,39.7384586,-104.9888355,39.7377977
-19284,10467,1941,0.145058671955531,0.145058671955531,-104.9888355,39.7377977,-104.9873753,39.7384618
-19309,10472,10450,0.0244300101434338,0.0244300101434338,-104.9873927,39.7432424,-104.9873945,39.7430227
-19310,10450,6986,0.0907684588887198,0.0907684588887198,-104.9873945,39.7430227,-104.9873935,39.7422064
-19311,6986,649,0.0550434251335652,0.0550434251335652,-104.9873935,39.7422064,-104.9873881,39.7417114
-19312,649,9973,0.0116984093357102,0.0116984093357102,-104.9873881,39.7417114,-104.9873866,39.7416062
-19313,9973,6700,0.0127993614182147,0.0127993614182147,-104.9873866,39.7416062,-104.9873849,39.7414911
-20578,10796,10801,0.065843170036926,0.065843170036926,-105.0226193,39.761283,-105.021849,39.761283
-19315,5030,10465,0.0131766099040461,0.0131766099040461,-104.987378,39.7401161,-104.9873778,39.7399976
-19316,10465,339,0.0452586039857602,0.0452586039857602,-104.9873778,39.7399976,-104.9873725,39.7395906
-19317,339,10468,0.0402192785877108,0.0402192785877108,-104.9873725,39.7395906,-104.9873734,39.7392289
-19318,10468,1941,0.0852977829408983,0.0852977829408983,-104.9873734,39.7392289,-104.9873753,39.7384618
-19319,1941,610,0.177606555639393,0.177606555639393,-104.9873753,39.7384618,-104.9873582,39.7368646
-19320,610,4852,0.177691892562915,0.177691892562915,-104.9873582,39.7368646,-104.987369,39.7352666
-19321,4852,2203,0.156985921773534,0.156985921773534,-104.987369,39.7352666,-104.9873753,39.7338548
-19324,5917,1620,0.152034755665853,0.152034755665853,-104.987439,39.7304505,-104.9874196,39.7290833
-19325,1620,1212,0.201729915857126,0.201729915857126,-104.9874196,39.7290833,-104.9874175,39.7272691
-19326,1212,8782,0.0140233440789759,0.0140233440789759,-104.9874175,39.7272691,-104.9874245,39.7271431
-19336,4837,9074,0.0183273901669081,0.0183273901669081,-104.9983742,39.7111927,-104.9985883,39.7111864
-19338,9315,9317,0.0726807266351068,0.0726807266351068,-104.9406148,39.7146468,-104.9406062,39.7153004
-19339,9317,8692,0.104147766047402,0.104147766047402,-104.9406062,39.7153004,-104.9406148,39.716237
-19341,9315,1952,0.0315809029571794,0.0315809029571794,-104.9406148,39.7146468,-104.9402458,39.7146371
-19343,10140,10142,0.0644750868788433,0.0644750868788433,-104.967225,39.7796681,-104.967563,39.7791497
-19344,10142,10475,0.0151531719907858,0.0151531719907858,-104.967563,39.7791497,-104.9676782,39.7790461
-19345,10475,7137,0.053510410167183,0.053510410167183,-104.9676782,39.7790461,-104.9680592,39.7786642
-19347,480,9282,0.132450958735296,0.132450958735296,-104.9669782,39.7796681,-104.9667713,39.7808486
-19348,9282,10138,0.0564427245863012,0.0564427245863012,-104.9667713,39.7808486,-104.9667127,39.7813542
-19350,8464,10476,0.175984833399768,0.175984833399768,-105.0014282,39.7464074,-105.0032157,39.7456226
-19352,10047,5253,0.112186249238367,0.112186249238367,-104.9733504,39.7691681,-104.9733576,39.7681592
-19353,5253,2320,0.0249537355545513,0.0249537355545513,-104.9733576,39.7681592,-104.9733543,39.7679348
-19355,10166,6401,0.0992919669903468,0.0992919669903468,-104.9720707,39.769351,-104.9719701,39.7702406
-19359,10479,9948,0.0516511853374245,0.0516511853374245,-104.9998192,39.7473335,-104.9993873,39.7470087
-19360,9948,8509,0.0517093587612889,0.0517093587612889,-104.9993873,39.7470087,-104.9989592,39.7466802
-19362,6189,10479,0.146782090008868,0.146782090008868,-104.9986323,39.7482873,-104.9998192,39.7473335
-19387,10455,5805,0.0524139320350963,0.0524139320350963,-104.9915438,39.7409769,-104.9911089,39.7406447
-19364,10047,10168,0.0607581388382602,0.0607581388382602,-104.9733504,39.7691681,-104.9728475,39.7695543
-19365,10168,10480,0.0679196955639713,0.0679196955639713,-104.9728475,39.7695543,-104.972292,39.7699911
-19366,10480,6401,0.0390713513194924,0.0390713513194924,-104.972292,39.7699911,-104.9719701,39.7702406
-19367,6401,10481,0.052200136280437,0.052200136280437,-104.9719701,39.7702406,-104.9715413,39.7705749
-19368,10481,6166,0.221487121294822,0.221487121294822,-104.9715413,39.7705749,-104.9697218,39.7719933
-19369,6166,4284,0.1514940030025,0.1514940030025,-104.9697218,39.7719933,-104.9683885,39.7728911
-19371,2320,2779,0.107781391844326,0.107781391844326,-104.9733543,39.7679348,-104.9733522,39.7669655
-20580,10867,10868,0.0137448223074376,0.0137448223074376,-105.0244043,39.7612864,-105.0245651,39.7612868
-20581,10868,10869,0.0278742902489333,0.0278742902489333,-105.0245651,39.7612868,-105.0248912,39.7612876
-19372,2779,2913,0.05305189541044,0.05305189541044,-104.9733522,39.7669655,-104.9733488,39.7664884
-19374,8509,9595,0.106794270102757,0.106794270102757,-104.9989592,39.7466802,-104.9980797,39.7459982
-19375,9595,8634,0.102427753876907,0.102427753876907,-104.9980797,39.7459982,-104.9972254,39.7453524
-19377,10174,10482,0.096139738297761,0.096139738297761,-104.9963422,39.7446625,-104.9955435,39.7440539
-19378,10482,9194,0.00978224253563326,0.00978224253563326,-104.9955435,39.7440539,-104.9954622,39.743992
-19380,4397,3002,0.108243017625134,0.108243017625134,-104.9946157,39.7433367,-104.9937158,39.742652
-19381,3002,10484,0.0989194559777293,0.0989194559777293,-104.9937158,39.742652,-104.9929004,39.7420209
-19382,10484,5962,0.00617092845740214,0.00617092845740214,-104.9929004,39.7420209,-104.9928478,39.7419829
-19383,5962,10485,0.00542857584263607,0.00542857584263607,-104.9928478,39.7419829,-104.9928052,39.7419467
-19384,10485,10459,0.0472755549262459,0.0472755549262459,-104.9928052,39.7419467,-104.9924125,39.7416474
-19385,10459,7579,0.0528643874539915,0.0528643874539915,-104.9924125,39.7416474,-104.9919734,39.7413127
-19429,7287,32,0.190572580502828,0.190572580502828,-104.9833604,39.7019722,-104.9833417,39.7002584
-19386,7579,10455,0.0523778989124976,0.0523778989124976,-104.9919734,39.7413127,-104.9915438,39.7409769
-19423,10488,7294,0.0690612889349745,0.0690612889349745,-104.9810224,39.7026345,-104.9810028,39.7020136
-19424,7294,36,0.192538942320683,0.192538942320683,-104.9810028,39.7020136,-104.9809867,39.7002821
-19388,5805,10462,0.081956103355699,0.081956103355699,-104.9911089,39.7406447,-104.9904372,39.7401189
-19389,10462,8768,0.0169741195442503,0.0169741195442503,-104.9904372,39.7401189,-104.9903111,39.740001
-19391,6189,9950,0.0503550239981861,0.0503550239981861,-104.9986323,39.7482873,-104.9990547,39.7486029
-19392,9950,7557,0.0535053183585621,0.0535053183585621,-104.9990547,39.7486029,-104.9994986,39.7489421
-19393,7557,9952,0.0524048074288428,0.0524048074288428,-104.9994986,39.7489421,-104.9999037,39.7492958
-19394,9952,10429,0.0135095901515659,0.0135095901515659,-104.9999037,39.7492958,-105.0000136,39.7493831
-19396,10479,9627,0.0675900234291702,0.0675900234291702,-104.9998192,39.7473335,-105.0003825,39.746907
-19400,3201,6115,0.203275445399412,0.203275445399412,-104.9757389,39.711117,-104.9757389,39.7092889
-19401,6115,1910,0.199619230795837,0.199619230795837,-104.9757389,39.7092889,-104.9757282,39.7074937
-19402,1910,9218,0.202850123370343,0.202850123370343,-104.9757282,39.7074937,-104.9757497,39.7056695
-19403,9218,9216,0.20345414072247,0.20345414072247,-104.9757497,39.7056695,-104.9757563,39.7038398
-19404,9216,7300,0.200631055524996,0.200631055524996,-104.9757563,39.7038398,-104.9757669,39.7020355
-19405,7300,45,0.202263602143448,0.202263602143448,-104.9757669,39.7020355,-104.9757682,39.7002165
-19406,45,3545,0.200651259904661,0.200651259904661,-104.9757682,39.7002165,-104.9757691,39.698412
-19407,3545,4239,0.201942446714699,0.201942446714699,-104.9757691,39.698412,-104.9757777,39.6965959
-19408,4239,1800,0.2054130837632,0.2054130837632,-104.9757777,39.6965959,-104.97579,39.6947486
-19409,1800,8710,0.197537787183869,0.197537787183869,-104.97579,39.6947486,-104.97579,39.6929721
-19410,8710,6527,0.132676718293593,0.132676718293593,-104.97579,39.6929721,-104.9759135,39.6917827
-19695,8145,9492,0.255789380087541,0.255789380087541,-104.9480016,39.7837973,-104.9497268,39.7819174
-19697,10419,10619,0.294868097569216,0.294868097569216,-104.9404266,39.7837714,-104.940416,39.7864232
-19806,10411,7868,0.176421872480467,0.176421872480467,-104.9969604,39.7209341,-104.9969607,39.7193475
-19698,10619,10620,0.511264415982815,0.511264415982815,-104.940416,39.7864232,-104.939871,39.791002
-19699,6199,496,0.110329672635447,0.110329672635447,-104.9404705,39.7816234,-104.9404434,39.7826154
-19700,496,10419,0.128549351195957,0.128549351195957,-104.9404434,39.7826154,-104.9404266,39.7837714
-19704,10623,10624,0.299844457035978,0.299844457035978,-105.0031654,39.7337887,-105.0029777,39.7364814
-19705,10624,10625,0.048946191319968,0.048946191319968,-105.0029777,39.7364814,-105.0033774,39.7367965
-19706,10625,10626,0.0564187161790662,0.0564187161790662,-105.0033774,39.7367965,-105.0040372,39.7367991
-19707,10626,10627,0.261222980592435,0.261222980592435,-105.0040372,39.7367991,-105.0051511,39.7346116
-19717,10626,10634,0.247667737296111,0.247667737296111,-105.0040372,39.7367991,-105.0040521,39.7345718
-19925,10679,9511,0.20648099094332,0.20648099094332,-105.0358012,39.7384625,-105.0358145,39.7403194
-19926,9511,4579,0.132833459370163,0.132833459370163,-105.0358145,39.7403194,-105.0358145,39.741514
-19930,10680,10673,0.208792718350027,0.208792718350027,-105.0375666,39.7384701,-105.0375559,39.7365924
-19931,10673,7131,0.201766496696079,0.201766496696079,-105.0375559,39.7365924,-105.0375424,39.7347779
-19933,626,10681,0.1702021482017,0.1702021482017,-105.0363381,39.7365871,-105.0363564,39.7350565
-19934,5672,10665,0.0500710082270115,0.0500710082270115,-104.997538,39.7179373,-104.9969526,39.7179403
-19935,10665,7218,0.0509007134728753,0.0509007134728753,-104.9969526,39.7179403,-104.9963575,39.7179434
-19937,252,10245,0.178490785331426,0.178490785331426,-104.9994279,39.7320888,-104.9994337,39.733694
-19938,10245,7120,0.17638987203806,0.17638987203806,-104.9994337,39.733694,-104.9994256,39.7352803
-19939,7120,9641,0.177259535907282,0.177259535907282,-104.9994256,39.7352803,-104.9994122,39.7368744
-19944,10675,10682,0.203454780542957,0.203454780542957,-105.041646,39.7366287,-105.0416549,39.7384584
-19945,10682,9518,0.211007495388792,0.211007495388792,-105.0416549,39.7384584,-105.0416701,39.740356
-19946,9518,4583,0.129742461291969,0.129742461291969,-105.0416701,39.740356,-105.0416673,39.7415228
-19948,10646,7221,0.050795229275335,0.050795229275335,-104.9969581,39.7230021,-104.9963642,39.722998
-19949,7221,10672,0.0490058421037179,0.0490058421037179,-104.9963642,39.722998,-104.9957912,39.722999
-19950,10672,4950,0.0520761745786515,0.0520761745786515,-104.9957912,39.722999,-104.9951823,39.723
-19954,10414,5089,0.112638269786332,0.112638269786332,-104.992154,39.7230042,-104.990837,39.7230104
-19956,9520,10683,0.208034746403896,0.208034746403896,-105.0434189,39.740341,-105.0434219,39.7384701
-19992,10649,10664,0.050141841785608,0.050141841785608,-105.0422444,39.7384617,-105.0428308,39.738465
-19993,10664,10683,0.0505455538112256,0.0505455538112256,-105.0428308,39.738465,-105.0434219,39.7384701
-19994,10683,5590,0.0494937724947863,0.0494937724947863,-105.0434219,39.7384701,-105.0440007,39.7384751
-19995,5590,10661,0.0507309659863408,0.0507309659863408,-105.0440007,39.7384751,-105.044594,39.7384771
-19996,10661,7533,0.0505856564507496,0.0505856564507496,-105.044594,39.7384771,-105.0451856,39.7384792
-19997,7533,10689,0.686347942133366,0.686347942133366,-105.0451856,39.7384792,-105.0532125,39.7384977
-19998,8645,2200,0.0278160442123186,0.0278160442123186,-105.0040083,39.7506996,-105.0039004,39.7509356
-20003,2200,10693,0.020138493184414,0.020138493184414,-105.0039004,39.7509356,-105.0040848,39.7508229
-20004,10693,10443,0.00475150856262823,0.00475150856262823,-105.0040848,39.7508229,-105.0041255,39.7507938
-20006,8461,9621,0.0222962026291256,0.0222962026291256,-105.0049189,39.7500632,-105.0046936,39.7501642
-20007,9621,10690,0.0515741214544805,0.0515741214544805,-105.0046936,39.7501642,-105.0042718,39.7504958
-20026,9466,8724,0.0514719719174867,0.0514719719174867,-104.9603865,39.7432158,-104.9597878,39.7432643
-20027,8724,5029,0.0566937822140094,0.0566937822140094,-104.9597878,39.7432643,-104.9591698,39.7434491
-20028,5029,4595,0.0969267875718062,0.0969267875718062,-104.9591698,39.7434491,-104.9581328,39.7438013
-20030,5321,630,0.142142547339574,0.142142547339574,-104.9754804,39.7621615,-104.9743045,39.7630654
-20031,630,2908,0.116052443784823,0.116052443784823,-104.9743045,39.7630654,-104.9733498,39.7638075
-20039,10696,5549,0.959761090863438,0.959761090863438,-104.9925954,39.6807655,-104.9920738,39.6893875
-20040,5549,9172,0.201153438061066,0.201153438061066,-104.9920738,39.6893875,-104.9923108,39.6911873
-20042,140,1484,0.198676673012775,0.198676673012775,-104.9924893,39.6930233,-104.99246,39.6948099
-20043,1484,3760,0.212665318664513,0.212665318664513,-104.99246,39.6948099,-104.9918765,39.696669
-20044,3760,4181,0.394425022611864,0.394425022611864,-104.9918765,39.696669,-104.9925156,39.7001819
-20045,4181,7302,0.250045496408828,0.250045496408828,-104.9925156,39.7001819,-104.9940584,39.7020918
-20046,7302,9078,0.0121023798774685,0.0121023798774685,-104.9940584,39.7020918,-104.9941364,39.7021826
-419,418,419,0.0843359701726921,0.0843359701726921,-104.9449438,39.7443271,-104.94552,39.7449427
-20049,9127,9931,0.188027723664679,0.188027723664679,-104.9983536,39.7098782,-104.9975856,39.7082938
-20051,9189,10417,0.27289630775387,0.27289630775387,-104.9938171,39.6915486,-104.9923056,39.6893875
-20052,10417,10698,0.903351534370563,0.903351534370563,-104.9923056,39.6893875,-104.9926383,39.6812675
-20055,5803,10456,0.063915425232113,0.063915425232113,-104.9916422,39.7401229,-104.9923896,39.7401331
-20056,10456,8278,0.0463525975312068,0.0463525975312068,-104.9923896,39.7401331,-104.9929317,39.740136
-20057,8278,7582,0.0531670184257572,0.0531670184257572,-104.9929317,39.740136,-104.9935535,39.7401388
-20586,10860,10865,0.0197306093936785,0.0197306093936785,-105.02457,39.7611148,-105.024575,39.7609374
-20058,7582,10460,0.0605194201118807,0.0605194201118807,-104.9935535,39.7401388,-104.9942613,39.7401385
-20059,10460,5965,0.08096413889014,0.08096413889014,-104.9942613,39.7401385,-104.9952082,39.7401418
-20060,5965,7403,0.00793698029885246,0.00793698029885246,-104.9952082,39.7401418,-104.995301,39.7401401
-20061,7403,7216,0.100604138655543,0.100604138655543,-104.995301,39.7401401,-104.9964776,39.7401434
-20062,7216,2998,0.041051117053356,0.041051117053356,-104.9964776,39.7401434,-104.9969577,39.7401458
-20064,4930,9632,0.0194691711485179,0.0194691711485179,-104.9981378,39.7401663,-104.998365,39.7401779
-20066,8788,8794,0.107030125953622,0.107030125953622,-104.9835778,39.7400469,-104.9823264,39.7400238
-20067,8794,8875,0.105785558321332,0.105785558321332,-104.9823264,39.7400238,-104.9810892,39.7400264
-20068,8875,7355,0.0541942506273543,0.0541942506273543,-104.9810892,39.7400264,-104.9804554,39.7400222
-20069,7355,8881,0.0482515848497253,0.0482515848497253,-104.9804554,39.7400222,-104.9798911,39.7400184
-20070,8881,7128,0.0482774346717123,0.0482774346717123,-104.9798911,39.7400184,-104.9793265,39.7400224
-20071,7128,9311,0.0491067830497851,0.0491067830497851,-104.9793265,39.7400224,-104.9787522,39.7400264
-20072,9311,9658,0.100701059147573,0.100701059147573,-104.9787522,39.7400264,-104.9775745,39.740019
-20073,9658,5054,0.0949533068688616,0.0949533068688616,-104.9775745,39.740019,-104.9764641,39.7400314
-20074,5054,5041,0.0261633102483298,0.0261633102483298,-104.9764641,39.7400314,-104.9761583,39.7400231
-20075,5041,6318,0.0238469793810048,0.0238469793810048,-104.9761583,39.7400231,-104.9758794,39.7400231
-20077,8004,7999,0.0412811844037432,0.0412811844037432,-104.9752839,39.740019,-104.9748011,39.740019
-20078,7999,5161,0.00972594837361757,0.00972594837361757,-104.9748011,39.740019,-104.9746885,39.7400066
-20079,5161,976,0.0450966381773304,0.0450966381773304,-104.9746885,39.7400066,-104.9741611,39.7400028
-20080,976,9235,0.0690703393173828,0.0690703393173828,-104.9741611,39.7400028,-104.9733535,39.7400168
-20081,9235,8835,0.0284556853366966,0.0284556853366966,-104.9733535,39.7400168,-104.9730207,39.7400163
-20082,8835,7138,0.0744435936983682,0.0744435936983682,-104.9730207,39.7400163,-104.9721501,39.7400093
-20083,7138,7152,0.0242079619729824,0.0242079619729824,-104.9721501,39.7400093,-104.971867,39.7400066
-20084,7152,5018,0.0530487604133438,0.0530487604133438,-104.971867,39.7400066,-104.9712466,39.7400022
-20085,5018,5127,0.027179522018167,0.027179522018167,-104.9712466,39.7400022,-104.9709293,39.7400169
-20086,5127,5120,0.017329383802427,0.017329383802427,-104.9709293,39.7400169,-104.9707273,39.7400042
-20087,5120,9413,0.051025645765313,0.051025645765313,-104.9707273,39.7400042,-104.9701307,39.740015
-20088,9413,4720,0.0442143222009164,0.0442143222009164,-104.9701307,39.740015,-104.9696136,39.7400134
-20089,4720,6788,0.103544897956421,0.103544897956421,-104.9696136,39.7400134,-104.9684027,39.7400015
-20090,6788,7360,0.101885712989061,0.101885712989061,-104.9684027,39.7400015,-104.9672112,39.73999
-20091,7360,5420,0.104686903511504,0.104686903511504,-104.9672112,39.73999,-104.9659869,39.7399811
-20092,5420,8551,0.104297582912284,0.104297582912284,-104.9659869,39.7399811,-104.9647671,39.7399797
-20093,8551,3891,0.113854917229397,0.113854917229397,-104.9647671,39.7399797,-104.9634356,39.7399908
-20094,3891,1021,0.10275177677768,0.10275177677768,-104.9634356,39.7399908,-104.962234,39.7399776
-20095,1021,10069,0.0524825810706004,0.0524825810706004,-104.962234,39.7399776,-104.9616202,39.7399794
-20096,10069,6266,0.0519011168646154,0.0519011168646154,-104.9616202,39.7399794,-104.9610132,39.7399811
-20097,6266,8727,0.107637396904871,0.107637396904871,-104.9610132,39.7399811,-104.9597547,39.7399579
-20098,8727,5027,0.0851589615138914,0.0851589615138914,-104.9597547,39.7399579,-104.9587811,39.7401193
-20099,5027,3339,0.11913667157964,0.11913667157964,-104.9587811,39.7401193,-104.9573922,39.7402049
-20100,3339,7884,0.0947347804724537,0.0947347804724537,-104.9573922,39.7402049,-104.9562845,39.7401863
-20101,7884,7339,0.0992406279882494,0.0992406279882494,-104.9562845,39.7401863,-104.9551239,39.7401771
-20588,10840,3589,0.00659451799404467,0.00659451799404467,-105.0245771,39.760862,-105.0245881,39.7608033
-20102,7339,7978,0.0297388680985265,0.0297388680985265,-104.9551239,39.7401771,-104.9547761,39.7401752
-20103,7978,8546,0.0509861753484279,0.0509861753484279,-104.9547761,39.7401752,-104.9541798,39.7401771
-20105,2065,2068,0.0539613780445048,0.0539613780445048,-104.9536131,39.740176,-104.9529821,39.7401847
-20106,2068,2651,0.0458462130492323,0.0458462130492323,-104.9529821,39.7401847,-104.952446,39.7401771
-20107,2651,2668,0.0527824371940605,0.0527824371940605,-104.952446,39.7401771,-104.9518287,39.740174
-20108,2668,4106,0.0471315276476818,0.0471315276476818,-104.9518287,39.740174,-104.9512775,39.7401701
-20109,4106,4138,0.0531150768123695,0.0531150768123695,-104.9512775,39.7401701,-104.9506563,39.7401717
-20110,4138,6691,0.0513109258939151,0.0513109258939151,-104.9506563,39.7401717,-104.9500562,39.7401702
-20111,6691,6699,0.049849518680298,0.049849518680298,-104.9500562,39.7401702,-104.9494732,39.7401674
-20112,6699,8027,0.0540642003294053,0.0540642003294053,-104.9494732,39.7401674,-104.9488409,39.7401691
-20113,8027,8022,0.0351680439773276,0.0351680439773276,-104.9488409,39.7401691,-104.9484296,39.7401675
-20114,8022,7697,0.0642576699742132,0.0642576699742132,-104.9484296,39.7401675,-104.9476781,39.7401632
-20116,7687,3442,0.0653852338257918,0.0653852338257918,-104.9472834,39.7401592,-104.9465187,39.7401565
-20117,3442,3465,0.0302046503739114,0.0302046503739114,-104.9465187,39.7401565,-104.9461659,39.7401427
-20118,3465,10643,0.044572996690839,0.044572996690839,-104.9461659,39.7401427,-104.9456446,39.7401427
-20119,10643,6010,0.0210253210935206,0.0210253210935206,-104.9456446,39.7401427,-104.9453987,39.7401427
-20120,6010,6022,0.0302819861909932,0.0302819861909932,-104.9453987,39.7401427,-104.9450447,39.7401345
-20121,6022,3877,0.0720170103408001,0.0720170103408001,-104.9450447,39.7401345,-104.9442025,39.7401262
-20122,3877,9699,0.0188604413742797,0.0188604413742797,-104.9442025,39.7401262,-104.9439825,39.7401139
-20123,9699,862,0.0931148831029757,0.0931148831029757,-104.9439825,39.7401139,-104.9428936,39.7401262
-20124,862,7102,0.0867114852734781,0.0867114852734781,-104.9428936,39.7401262,-104.9418797,39.7401097
-20125,7102,10422,0.0971484542236891,0.0971484542236891,-104.9418797,39.7401097,-104.9407436,39.7401208
-20126,10422,8701,0.0148135271633134,0.0148135271633134,-104.9407436,39.7401208,-104.9405708,39.7401304
-20127,8701,8159,0.0903601598115808,0.0903601598115808,-104.9405708,39.7401304,-104.939514,39.7401304
-20128,8159,8147,0.0485272097981868,0.0485272097981868,-104.939514,39.7401304,-104.9389466,39.7401205
-20129,8147,7605,0.046972846594418,0.046972846594418,-104.9389466,39.7401205,-104.9383973,39.7401139
-20130,7605,7256,0.0980906813073136,0.0980906813073136,-104.9383973,39.7401139,-104.9372502,39.7401262
-20131,7256,7592,0.0949493294075893,0.0949493294075893,-104.9372502,39.7401262,-104.93614,39.7401073
-20132,7592,2011,0.0535765472330524,0.0535765472330524,-104.93614,39.7401073,-104.9355134,39.7401073
-20133,2011,9174,0.0440404642371946,0.0440404642371946,-104.9355134,39.7401073,-104.9349984,39.7401007
-20134,9174,10644,0.101018897202585,0.101018897202585,-104.9349984,39.7401007,-104.933817,39.7401097
-20135,10644,2752,0.0964161425505398,0.0964161425505398,-104.933817,39.7401097,-104.9326896,39.7401271
-12318,2500,2501,0.00534847597168918,0.00534847597168918,-105.0073403,39.7545386,-105.0073403,39.7545867
-20137,6988,7015,0.0469900401605619,0.0469900401605619,-104.9320716,39.7401271,-104.9315223,39.7401139
-20138,7015,2275,0.0506564830109395,0.0506564830109395,-104.9315223,39.7401139,-104.9309301,39.7401271
-20139,2275,8216,0.0480971521401402,0.0480971521401402,-104.9309301,39.7401271,-104.9303676,39.7401304
-20140,8216,3600,0.0492447661071067,0.0492447661071067,-104.9303676,39.7401304,-104.9297917,39.7401253
-20141,3600,8213,0.0494471155350359,0.0494471155350359,-104.9297917,39.7401253,-104.9292134,39.7401271
-20142,8213,7515,0.0477024371424333,0.0477024371424333,-104.9292134,39.7401271,-104.9286555,39.7401271
-20143,7515,7526,0.0508405166895622,0.0508405166895622,-104.9286555,39.7401271,-104.9280609,39.7401262
-20144,7526,4566,0.0460266764289813,0.0460266764289813,-104.9280609,39.7401262,-104.9275226,39.7401271
-20145,4566,2124,0.0528615774272691,0.0528615774272691,-104.9275226,39.7401271,-104.9269046,39.7401403
-20146,2124,5990,0.094672374588883,0.094672374588883,-104.9269046,39.7401403,-104.9257974,39.7401337
-20147,5990,7671,0.0990838490707958,0.0990838490707958,-104.9257974,39.7401337,-104.9246387,39.7401205
-20179,10247,9298,0.182738392624498,0.182738392624498,-104.978775,39.7272619,-104.9787693,39.7256185
-20180,9298,6549,0.169619845811395,0.169619845811395,-104.9787693,39.7256185,-104.9787573,39.7240931
-20182,4768,6330,0.178054483343927,0.178054483343927,-104.9787498,39.7224871,-104.9787889,39.7208861
-20183,6330,9308,0.0134883336553362,0.0134883336553362,-104.9787889,39.7208861,-104.9788375,39.7207707
-20148,7671,10702,3.41813541281698,3.41813541281698,-104.9246387,39.7401205,-104.8846622,39.7401611
-20149,425,10112,0.0131850564749253,0.0131850564749253,-105.0219946,39.7404498,-105.0218404,39.7404488
-20186,8247,10155,0.516700602330837,0.516700602330837,-104.963496,39.7883396,-104.9592396,39.7916405
-20187,10155,3322,0.265485774934506,0.265485774934506,-104.9592396,39.7916405,-104.9570057,39.7933001
-20188,3322,10706,0.131436234594263,0.131436234594263,-104.9570057,39.7933001,-104.956777,39.794469
-20189,10139,10705,0.06021736831636,0.06021736831636,-104.9644686,39.7876212,-104.9639599,39.787996
-20195,8510,10708,0.0176825351734809,0.0176825351734809,-104.9964255,39.7486125,-104.9962843,39.7487287
-20197,10708,8571,0.116072750239478,0.116072750239478,-104.9962843,39.7487287,-104.9953197,39.7494633
-20199,5783,8281,0.147480988666932,0.147480988666932,-104.9941411,39.7504097,-104.9929142,39.7513421
-20200,8281,8293,0.145093730312322,0.145093730312322,-104.9929142,39.7513421,-104.9917306,39.7522773
-20201,8293,7900,0.146177040292133,0.146177040292133,-104.9917306,39.7522773,-104.9905138,39.7532009
-20202,7900,8854,0.145687210047232,0.145687210047232,-104.9905138,39.7532009,-104.9893092,39.7541277
-20203,8854,9321,0.148905174298523,0.148905174298523,-104.9893092,39.7541277,-104.9880818,39.7550779
-20206,8401,5454,0.142235461954992,0.142235461954992,-104.9868716,39.7559951,-104.9857094,39.7569105
-20207,5454,8504,0.00556744232684514,0.00556744232684514,-104.9857094,39.7569105,-104.9856564,39.7569396
-20208,8504,8047,0.149428079475645,0.149428079475645,-104.9856564,39.7569396,-104.9844325,39.7578991
-20209,8047,6575,0.142472133135735,0.142472133135735,-104.9844325,39.7578991,-104.9832626,39.7588117
-20210,6575,4456,0.146389787991077,0.146389787991077,-104.9832626,39.7588117,-104.9820633,39.7597515
-20211,4456,5504,0.146266130363807,0.146266130363807,-104.9820633,39.7597515,-104.9808533,39.7606816
-20264,10722,5574,0.00764881869126048,0.00764881869126048,-105.044096,39.7739592,-105.0440065,39.7739591
-20317,10737,10730,0.156440332314784,0.156440332314784,-105.0250397,39.7599942,-105.0250776,39.7585876
-20319,10738,10739,0.00846222116823016,0.00846222116823016,-105.0235235,39.7590488,-105.0234882,39.7589777
-20570,10858,10856,0.341000703608857,0.341000703608857,-105.0190584,39.7597333,-105.0218184,39.7619476
-20572,10859,10860,0.0100014874858022,0.0100014874858022,-105.024453,39.7611158,-105.02457,39.7611148
-20784,10945,10292,0.00633905697400916,0.00633905697400916,-105.0279522,39.7613862,-105.0280151,39.7614164
-321,153,154,0.039197729386179,0.039197729386179,-104.9572293,39.7448211,-104.9570001,39.7445158
-18675,1570,2751,0.10523982327052,0.10523982327052,-105.0399911,39.7245463,-105.0400126,39.7254926
-20591,10795,10802,0.0763744143850755,0.0763744143850755,-105.0227368,39.7610963,-105.0218433,39.761098
-20216,632,6405,0.146056665643101,0.146056665643101,-104.976027,39.7644195,-104.9748213,39.7653503
-20217,6405,4277,0.144766275996567,0.144766275996567,-104.9748213,39.7653503,-104.9736331,39.7662781
-20218,4277,2913,0.0337236702585465,0.0337236702585465,-104.9736331,39.7662781,-104.9733488,39.7664884
-20250,9384,8111,0.200921327710714,0.200921327710714,-105.0451339,39.7765688,-105.0451206,39.7783757
-20251,8111,10328,0.204798818746646,0.204798818746646,-105.0451206,39.7783757,-105.045121,39.7802175
diff --git a/src/bd_astar/tester/ways2data b/src/bd_astar/tester/ways2data
deleted file mode 100755
index f9340cb..0000000
--- a/src/bd_astar/tester/ways2data
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/perl -w
-use strict;
-
-sub Usage {
- die "Usage: ways2data tab ways.txt\n";
-}
-
-my $tab = shift @ARGV || Usage();
-my $wfile = shift @ARGV || Usage();
-
-open(IN, $wfile) || die "Failed to open '$wfile' for read : $!\n";
-
-print <<EOF;
-
-drop table if exists $tab cascade;
-create table $tab (
- id integer not null primary key,
- source integer,
- target integer,
- cost float8,
- reverse_cost float8,
- s_x float8,
- s_y float8,
- t_x float8,
- t_y float8
-);
-
-copy table $tab (id, source, target, cost, reverse_cost, s_x, s_y, t_x, t_y) from stdin;
-EOF
-
-while (my $x = <IN>) {
- $x =~ s/,/\t/g;
- print $x;
-}
-print "\\.\n";
-
-close(IN);
diff --git a/src/bd_dijkstra/doc/doc-bdDijkstra.queries b/src/bd_dijkstra/doc/doc-bdDijkstra.queries
deleted file mode 100644
index c37c49a..0000000
--- a/src/bd_dijkstra/doc/doc-bdDijkstra.queries
+++ /dev/null
@@ -1,35 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM pgr_bdDijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 2, 3, false, false);
-NOTICE: Deprecated Signature of pgr_bdDijkstra
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 4 | 1
- 1 | 5 | 8 | 1
- 2 | 6 | 5 | 1
- 3 | 3 | -1 | 0
-(4 rows)
-
---q2
-SELECT * FROM pgr_bdDijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2, 3, true, true);
-NOTICE: Deprecated Signature of pgr_bdDijkstra
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 4 | 1
- 1 | 5 | 8 | 1
- 2 | 6 | 9 | 1
- 3 | 9 | 16 | 1
- 4 | 4 | 3 | 1
- 5 | 3 | -1 | 0
-(6 rows)
-
---q3
-ROLLBACK;
-ROLLBACK
diff --git a/src/bd_dijkstra/sql/CMakeLists.txt b/src/bd_dijkstra/sql/CMakeLists.txt
deleted file mode 100644
index b49de6f..0000000
--- a/src/bd_dijkstra/sql/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# Append in local scope
-list(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/bdDijkstra-v2.sql
- )
-
-# set in parent scope
-set(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
-
diff --git a/src/bd_dijkstra/sql/bdDijkstra-v2.sql b/src/bd_dijkstra/sql/bdDijkstra-v2.sql
deleted file mode 100644
index 2a66df3..0000000
--- a/src/bd_dijkstra/sql/bdDijkstra-v2.sql
+++ /dev/null
@@ -1,53 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2016 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2016 Celia Virginia Vergara Castillo
-mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
--- V2 signature
-CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
-RETURNS SETOF pgr_costresult AS
-$BODY$
-DECLARE
-has_reverse BOOLEAN;
-sql TEXT;
-BEGIN
- RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
- has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
- sql = edges_sql;
- IF (has_reverse != has_rcost) THEN
- IF (has_reverse) THEN
- sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
- ELSE
- raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
- END IF;
- END IF;
-
- RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
- FROM _pgr_bdDijkstra(sql, start_vid, end_vid, directed, false);
- END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-00.data b/src/bd_dijkstra/test/bd_dijkstra-any-00.data
deleted file mode 100644
index 2f320cd..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-00.data
+++ /dev/null
@@ -1,17280 +0,0 @@
-
-drop table if exists bdd_ways cascade;
-create table bdd_ways (
- id integer not null primary key,
- source integer,
- target integer,
- cost float8,
- reverse_cost float8
-);
-
-copy bdd_ways (id, source, target, cost, reverse_cost) from stdin;
-18129 10271 10265 0.407629542119694 0.407629542119694
-14822 9426 3606 0.0603186413824967 0.0603186413824967
-16176 5812 7719 0.198519002375015 0.198519002375015
-16177 7719 9841 1.21182332618964 1.21182332618964
-16178 137 1482 0.199034161669709 0.199034161669709
-16179 1482 3758 0.20606858724026 0.20606858724026
-16217 7903 7844 0.0651768093591436 0.0651768093591436
-16218 7844 6725 0.105799860394335 0.105799860394335
-15793 2298 2322 0.00529554982932783 0.00529554982932783
-14854 9432 9433 0.00987428384236239 0.00987428384236239
-19732 4490 10638 0.0159213769578026 0.0159213769578026
-19734 10639 10640 0.115517684408379 0.115517684408379
-19736 10643 5491 0.200611432022914 0.200611432022914
-19737 5491 9472 0.173586542348893 0.173586542348893
-16211 7730 9848 1.41098736584228 1.41098736584228
-19766 8868 3770 0.15451665559366 0.15451665559366
-19767 3770 10249 0.199225315153312 0.199225315153312
-19769 9471 4895 0.183643472400882 0.183643472400882
-19770 4895 9419 0.162738965694015 0.162738965694015
-16694 9991 9992 0.00824975577533471 0.00824975577533471
-16253 9862 7741 0.405750287416545 0.405750287416545
-16254 7741 5836 0.199719306282583 0.199719306282583
-16255 5836 9863 0.20307644815808 0.20307644815808
-445 449 450 0.199450473576153 0.199450473576153
-20724 9339 9399 0.00989025456720925 0.00989025456720925
-20725 9399 10912 0.0075300269970097 0.0075300269970097
-20727 10911 9342 0.00831469236711343 0.00831469236711343
-18403 7778 10286 0.0505898966958872 0.0505898966958872
-273 283 284 0.0964719650645454 0.0964719650645454
-275 285 286 0.0574345831683482 0.0574345831683482
-276 286 287 0.00381671595135443 0.00381671595135443
-277 288 286 0.0749798421316384 0.0749798421316384
-267 277 278 0.026080790494895 0.026080790494895
-19535 10550 10547 0.0727126892007364 0.0727126892007364
-240 247 248 0.0772679392991742 0.0772679392991742
-242 249 250 0.0969982430766615 0.0969982430766615
-19500 10527 10528 0.0180139213913488 0.0180139213913488
-16008 9778 9779 0.0944640625920965 0.0944640625920965
-15463 8882 1361 0.00984596954833585 0.00984596954833585
-11520 658 713 0.150268576052698 0.150268576052698
-270 280 281 0.0978981798906238 0.0978981798906238
-16247 7743 5838 0.199906773104335 0.199906773104335
-505 499 500 0.0224810261782308 0.0224810261782308
-19508 10448 10534 0.00643702567875165 0.00643702567875165
-16434 9896 3281 0.0340559329983669 0.0340559329983669
-19458 10492 10506 0.00750267115612711 0.00750267115612711
-16700 9995 9996 0.0459960991438913 0.0459960991438913
-17222 5174 8210 0.200775724104805 0.200775724104805
-17224 4240 7299 0.0119914556826953 0.0119914556826953
-345 346 347 0.130802492327731 0.130802492327731
-347 348 349 0.135557185972568 0.135557185972568
-348 349 350 0.136845365159024 0.136845365159024
-355 357 358 0.388256388951567 0.388256388951567
-356 358 359 0.410677079496879 0.410677079496879
-18458 10297 6395 0.0910083144293941 0.0910083144293941
-18424 8333 10290 0.150248967925867 0.150248967925867
-18426 8331 7848 0.20002866768649 0.20002866768649
-16185 9843 7721 1.49406009526399 1.49406009526399
-18230 2552 10281 0.408042509102773 0.408042509102773
-568 561 562 0.0238735645312088 0.0238735645312088
-509 503 504 0.0378269387886271 0.0378269387886271
-510 504 505 0.131422581642966 0.131422581642966
-511 505 506 0.13298824931129 0.13298824931129
-512 506 507 0.0469418788297666 0.0469418788297666
-513 507 508 0.00800396830514923 0.00800396830514923
-514 508 509 0.189986229051577 0.189986229051577
-521 516 517 0.0463139600038384 0.0463139600038384
-12956 1507 1599 0.174395269936236 0.174395269936236
-19854 9521 10661 0.207011877470032 0.207011877470032
-11687 773 774 0.0194846935551434 0.0194846935551434
-20577 10865 10866 0.00985918265048112 0.00985918265048112
-15197 3400 9212 0.0496967641825266 0.0496967641825266
-3594 3445 1174 0.142771364790872 0.142771364790872
-3595 1174 897 0.139794356108886 0.139794356108886
-19561 10564 10565 0.0196154846965349 0.0196154846965349
-16270 6159 9867 0.121531820960243 0.121531820960243
-11805 8417 8418 0.134805848745127 0.134805848745127
-18434 8357 10291 0.154597709113849 0.154597709113849
-15269 8698 8458 0.108561000163296 0.108561000163296
-16600 3169 9952 0.143650464740249 0.143650464740249
-971 982 983 0.153004941982632 0.153004941982632
-19467 10511 10512 0.0226507231527583 0.0226507231527583
-19468 10512 10513 0.0195038602641882 0.0195038602641882
-16605 9954 9955 0.0548421550272179 0.0548421550272179
-16733 5003 10004 0.0399314883998924 0.0399314883998924
-16677 9979 9980 0.023537846703909 0.023537846703909
-15811 9714 9715 0.0297752747528411 0.0297752747528411
-12949 1304 1330 0.0581647037716416 0.0581647037716416
-11964 5499 7073 0.148280923478534 0.148280923478534
-18453 9427 4296 0.104102993198957 0.104102993198957
-20603 10836 10820 0.0118777812250081 0.0118777812250081
-20604 10820 10827 0.0109415807816948 0.0109415807816948
-318 326 327 0.287313248528131 0.287313248528131
-919 933 934 0.0476774715690845 0.0476774715690845
-920 934 935 0.0499176342652801 0.0499176342652801
-921 935 936 0.0512339711733563 0.0512339711733563
-12002 6577 5507 0.29282736629382 0.29282736629382
-2397 2072 2388 0.0939943538292093 0.0939943538292093
-17363 7241 3255 0.194151227318962 0.194151227318962
-3612 954 3458 0.174654702147255 0.174654702147255
-3613 3458 3459 0.161855899930502 0.161855899930502
-3614 3459 3460 0.184505780617563 0.184505780617563
-3615 3460 3461 0.174076203888655 0.174076203888655
-12954 1477 1478 0.162422090556836 0.162422090556836
-16746 6830 10008 0.0662012224002346 0.0662012224002346
-19537 10551 4704 0.0179029738053875 0.0179029738053875
-16747 10008 3664 0.0562861796352498 0.0562861796352498
-12008 8513 4459 0.0575373844976813 0.0575373844976813
-12009 4459 5508 0.146438493557302 0.146438493557302
-11575 1594 1595 0.149695612752929 0.149695612752929
-18383 8920 8960 0.0494721849144557 0.0494721849144557
-19652 10605 10528 0.00763160148090486 0.00763160148090486
-1706 1727 204 0.0785826238386085 0.0785826238386085
-11578 1595 1767 0.0524448615311058 0.0524448615311058
-351 353 354 0.0783794642996216 0.0783794642996216
-16749 53 10005 0.150239248303575 0.150239248303575
-20036 7837 816 0.140917505829302 0.140917505829302
-20637 10876 10878 0.031770930566573 0.031770930566573
-16183 1702 133 0.201630131124766 0.201630131124766
-16753 6829 10009 0.0465845830870589 0.0465845830870589
-18737 2600 1858 0.180581857071932 0.180581857071932
-14686 1987 2318 0.198940266900504 0.198940266900504
-1928 1941 1942 0.123855031305308 0.123855031305308
-18741 8070 7651 0.262731372814963 0.262731372814963
-14685 1546 1987 0.20778014181537 0.20778014181537
-12334 8656 8657 0.0212762444700433 0.0212762444700433
-18873 7825 7987 0.015602795644656 0.015602795644656
-12352 8668 8669 0.00723037090372959 0.00723037090372959
-18669 9460 1818 0.156714358591483 0.156714358591483
-18185 5799 6059 0.199739960113703 0.199739960113703
-18862 9131 9178 0.0368320416365925 0.0368320416365925
-16606 9955 7890 0.148662937956551 0.148662937956551
-12197 424 2296 0.092590985158808 0.092590985158808
-328 329 330 0.0301965908229701 0.0301965908229701
-329 330 331 0.00308879550687601 0.00308879550687601
-15797 2324 2349 0.0197202421063636 0.0197202421063636
-16293 2377 2409 0.0804076908745063 0.0804076908745063
-17370 3254 7297 0.216186214827155 0.216186214827155
-18195 8107 9376 0.183361036437535 0.183361036437535
-17371 7297 40 0.193403542976089 0.193403542976089
-389 391 392 0.10291889633356 0.10291889633356
-18880 1927 7249 0.20098536077548 0.20098536077548
-12842 2658 461 0.235239531220745 0.235239531220745
-18457 7020 10297 0.095413640203737 0.095413640203737
-14684 1545 1546 0.195783826439231 0.195783826439231
-16302 2721 2722 0.0283898956128369 0.0283898956128369
-18674 1569 1570 0.17732367890712 0.17732367890712
-19651 10604 10605 0.00569731320684084 0.00569731320684084
-12365 8674 8675 0.00395306971093599 0.00395306971093599
-18885 80 7308 0.203338584644882 0.203338584644882
-18462 9528 9293 0.135413968590027 0.135413968590027
-17073 8133 10070 0.277242310734424 0.277242310734424
-18887 3267 7247 0.200784680682105 0.200784680682105
-16306 2851 2852 0.0109060813984903 0.0109060813984903
-18803 8953 10352 0.0713096059986916 0.0713096059986916
-12360 8670 8671 0.0527368404826503 0.0527368404826503
-19915 8054 8774 0.178101620538173 0.178101620538173
-19027 10418 8995 0.822032321709027 0.822032321709027
-16313 2929 2636 0.0522503580010493 0.0522503580010493
-18123 10266 7936 0.0422734852594549 0.0422734852594549
-11696 1005 1006 0.0249036708868205 0.0249036708868205
-19031 9820 9825 0.141867922710985 0.141867922710985
-17076 828 3568 0.137092229325187 0.137092229325187
-20641 10879 4802 0.0562973461233787 0.0562973461233787
-19035 9497 9495 0.0285635113459611 0.0285635113459611
-2071 2074 2075 0.135495947312548 0.135495947312548
-15936 9757 6254 0.229061306545615 0.229061306545615
-3229 3143 3144 0.198651066611581 0.198651066611581
-3231 3145 1186 0.167106782855451 0.167106782855451
-20275 10725 6473 0.00777253007071417 0.00777253007071417
-20276 6473 10726 0.00774087009692378 0.00774087009692378
-20277 10710 5573 0.00807679050419555 0.00807679050419555
-16287 1363 2160 0.150908240771596 0.150908240771596
-18901 10379 10378 0.00446883067059111 0.00446883067059111
-18181 6056 4071 0.17853957848987 0.17853957848987
-16288 2160 2273 0.031688963076218 0.031688963076218
-15792 2131 2298 0.0834787229201596 0.0834787229201596
-17362 1905 7241 0.196305657515643 0.196305657515643
-20796 10943 7661 0.00258138052005919 0.00258138052005919
-20797 7661 10931 0.00256438171506516 0.00256438171506516
-17367 3197 6112 0.203543642625323 0.203543642625323
-19564 10566 10567 0.0877791462313442 0.0877791462313442
-17839 9059 10189 0.106477983280495 0.106477983280495
-17124 42 4240 0.19030237977338 0.19030237977338
-15941 9758 9759 0.0631588158295344 0.0631588158295344
-17151 4781 4823 0.202239291799058 0.202239291799058
-14110 421 3623 0.253988429085779 0.253988429085779
-20309 10730 10731 0.0277808040232953 0.0277808040232953
-19606 10584 10500 0.00674103787689334 0.00674103787689334
-18677 2800 2801 0.105225983369234 0.105225983369234
-17096 3720 3721 0.196415457175175 0.196415457175175
-19914 6599 8054 0.176409123849899 0.176409123849899
-14113 3767 3768 0.109524379066099 0.109524379066099
-19575 10571 10572 0.0878577106463745 0.0878577106463745
-19578 7458 10573 0.00838425457343401 0.00838425457343401
-13363 6192 9050 0.200728781748151 0.200728781748151
-18684 3608 1316 0.176123680044276 0.176123680044276
-16406 9888 9885 0.103994018141439 0.103994018141439
-20348 10747 10734 0.124798183375822 0.124798183375822
-13367 487 9053 0.0916792010447841 0.0916792010447841
-17112 3776 3932 0.0318567386044335 0.0318567386044335
-18472 7703 9005 0.191779872148763 0.191779872148763
-13566 4 3088 0.053682748576131 0.053682748576131
-14690 2868 3129 0.152693011202245 0.152693011202245
-19632 10519 10594 0.0691883113691504 0.0691883113691504
-16442 9898 9900 0.0593229160576478 0.0593229160576478
-19557 10561 10562 0.0114115661676901 0.0114115661676901
-17140 3200 3089 0.200962427212495 0.200962427212495
-19588 10578 7459 0.00830641959761081 0.00830641959761081
-19590 10509 10579 0.0688000441577074 0.0688000441577074
-4371 4093 4094 0.0474398468296831 0.0474398468296831
-14821 4531 9426 0.131844452515128 0.131844452515128
-20313 10734 10735 0.135778003167023 0.135778003167023
-16512 8896 9922 0.103245634213484 0.103245634213484
-19627 10592 10501 0.0068017037739497 0.0068017037739497
-3432 3319 3320 0.201627360859163 0.201627360859163
-3631 1572 3475 0.135693159195378 0.135693159195378
-3632 3475 3476 0.119283891700122 0.119283891700122
-3634 3211 3477 0.201273972346718 0.201273972346718
-3635 3477 1922 0.201175175309244 0.201175175309244
-17122 4176 3542 0.20232729922556 0.20232729922556
-16444 9901 9902 0.179094898504736 0.179094898504736
-20287 9383 6472 0.201518688053588 0.201518688053588
-20014 8858 10180 0.0735203760297937 0.0735203760297937
-19233 10457 10420 0.0372086096742178 0.0372086096742178
-4657 4299 3840 0.0473685540434106 0.0473685540434106
-14125 3659 3925 0.129261803351535 0.129261803351535
-3623 3469 3470 0.140706278566204 0.140706278566204
-18908 10386 10387 0.0302347602157808 0.0302347602157808
-15943 9760 8085 0.0293664602336856 0.0293664602336856
-18142 10269 6300 0.0570177692907992 0.0570177692907992
-17020 10057 10058 0.15155359133236 0.15155359133236
-17158 5010 5011 0.0757362739800239 0.0757362739800239
-16649 9960 9968 0.0812055546813917 0.0812055546813917
-17022 10055 10058 0.0158274438461504 0.0158274438461504
-20617 10793 10829 0.0486626332146345 0.0486626332146345
-17292 7745 7192 0.403926945097788 0.403926945097788
-17953 8781 10225 0.0170107340919314 0.0170107340919314
-17142 4509 4616 0.202021015829292 0.202021015829292
-14706 5161 5162 0.0515278311632085 0.0515278311632085
-17293 7192 8754 0.202354446551741 0.202354446551741
-16653 9971 9972 0.0159150831985239 0.0159150831985239
-17955 10229 10228 0.0205875980561605 0.0205875980561605
-16775 9905 10011 0.0628512846047373 0.0628512846047373
-20430 10790 10791 0.0319464035455711 0.0319464035455711
-17144 4683 4684 0.183413882011105 0.183413882011105
-17482 367 368 0.0073956069596753 0.0073956069596753
-17483 368 4274 0.0740383655738795 0.0740383655738795
-18131 6045 4102 0.143663826029319 0.143663826029319
-17166 3547 48 0.197940166378652 0.197940166378652
-17957 10231 10232 0.0468160398694911 0.0468160398694911
-19584 10563 10576 0.0699872416467849 0.0699872416467849
-19587 10577 10578 0.0879343964012276 0.0879343964012276
-16540 7834 812 0.139228180638449 0.139228180638449
-20323 10742 10732 0.00891011779971553 0.00891011779971553
-14118 3946 4047 0.0370997345222532 0.0370997345222532
-20325 10743 10744 0.00292597509729593 0.00292597509729593
-17681 9050 9814 0.396292789359983 0.396292789359983
-17683 10165 9814 0.392184725428778 0.392184725428778
-17303 3516 4258 0.201418622589808 0.201418622589808
-17690 6173 6191 0.0979652724466413 0.0979652724466413
-17305 8744 8715 0.198903931890441 0.198903931890441
-19815 6602 8057 0.177734109816075 0.177734109816075
-20432 10754 10792 0.00161805170064806 0.00161805170064806
-5752 4838 5081 0.0155515271366432 0.0155515271366432
-14703 5104 5105 0.188886837572701 0.188886837572701
-19833 10653 10654 0.205572346227123 0.205572346227123
-4807 4413 4414 0.0998668735468864 0.0998668735468864
-3650 3488 3106 0.174737901377497 0.174737901377497
-3651 3106 3491 0.194747174928978 0.194747174928978
-17379 5746 5747 0.00818765310677506 0.00818765310677506
-20468 10818 10755 0.173765546097308 0.173765546097308
-17164 1802 4242 0.207580745712203 0.207580745712203
-6015 5267 5268 0.103281094663511 0.103281094663511
-18137 10263 10272 0.406284221439373 0.406284221439373
-17291 10085 7745 0.543012306463268 0.543012306463268
-14709 5330 4870 0.190973371939833 0.190973371939833
-18138 4093 6038 0.184675507720467 0.184675507720467
-16651 9969 9970 0.100708681464822 0.100708681464822
-14710 4870 2220 0.162414391352976 0.162414391352976
-18505 6386 17 0.132879414135856 0.132879414135856
-14727 6220 6303 0.0511187399227223 0.0511187399227223
-17176 5390 5408 0.208329703574267 0.208329703574267
-20791 8358 10898 0.00761490800516594 0.00761490800516594
-17146 1801 4241 0.206257539278646 0.206257539278646
-14731 6303 5467 0.125799145673022 0.125799145673022
-18536 5557 10309 0.366989977501724 0.366989977501724
-14723 6016 5469 0.171433952660857 0.171433952660857
-18516 2412 10295 0.0120882825664803 0.0120882825664803
-17153 1911 4839 0.199025256937054 0.199025256937054
-17154 4839 3202 0.202009935716231 0.202009935716231
-18288 6762 6873 0.146634632629247 0.146634632629247
-20338 10735 10738 0.035049164748108 0.035049164748108
-18690 5770 5771 0.102556159708994 0.102556159708994
-20424 10785 10786 0.0731561229415083 0.0731561229415083
-5740 1710 5071 0.202613094112382 0.202613094112382
-14744 2216 4866 0.159742631617364 0.159742631617364
-18148 6033 4087 0.198416361234407 0.198416361234407
-17476 4654 473 0.0704097319033273 0.0704097319033273
-18150 4100 6044 0.175955927487578 0.175955927487578
-6851 5860 5861 0.109631940187014 0.109631940187014
-14841 7164 7777 0.0983349446501409 0.0983349446501409
-18242 6768 3993 0.201258062688176 0.201258062688176
-18273 6645 6666 0.202152498738845 0.202152498738845
-20386 10770 10771 0.0535943445752728 0.0535943445752728
-6983 5958 5959 0.149650557500517 0.149650557500517
-18306 3982 7041 0.200503190670894 0.200503190670894
-20438 10796 10797 0.0670860233753639 0.0670860233753639
-20500 10838 10824 0.0121125751150814 0.0121125751150814
-14725 977 5162 0.0458445478179373 0.0458445478179373
-6627 5707 1851 0.181903999460801 0.181903999460801
-3671 3508 3509 0.00436333612190551 0.00436333612190551
-3672 3509 3510 0.046781667512879 0.046781667512879
-7657 3346 6356 0.257422789129267 0.257422789129267
-14872 3240 5733 0.139141273161543 0.139141273161543
-18469 9138 10300 0.19595637710121 0.19595637710121
-18266 1691 6545 0.203809181046432 0.203809181046432
-18272 6629 6645 0.186774688365716 0.186774688365716
-8163 6669 2301 0.106319016804013 0.106319016804013
-14130 9280 9279 0.186364690747119 0.186364690747119
-14771 2209 923 0.186974313150198 0.186974313150198
-18247 9377 8108 0.184107753412847 0.184107753412847
-18704 7871 4059 0.176577842625336 0.176577842625336
-15923 9752 9072 0.0836347230210634 0.0836347230210634
-18541 7538 8363 0.0639425794382817 0.0639425794382817
-14134 509 9280 0.0291273215905741 0.0291273215905741
-15926 498 9102 0.0623752088587868 0.0623752088587868
-11651 8350 4542 0.134464503460642 0.134464503460642
-18291 6752 3975 0.201306126180051 0.201306126180051
-14752 5933 6903 0.0776419963986988 0.0776419963986988
-15930 9755 8063 0.0157417186886108 0.0157417186886108
-8622 3936 5625 0.097083190357132 0.097083190357132
-14891 9021 8103 0.0999072642817978 0.0999072642817978
-11386 8241 8242 0.105664996309114 0.105664996309114
-11647 7709 8347 0.0834163322393992 0.0834163322393992
-12254 8618 8619 0.0216515691565663 0.0216515691565663
-20225 8757 10713 0.181625832679021 0.181625832679021
-11373 437 8225 0.0125774855889878 0.0125774855889878
-20018 6572 4453 0.146908325275574 0.146908325275574
-20512 10063 10060 0.007549583111055 0.007549583111055
-12048 8527 8528 0.0740401240439702 0.0740401240439702
-14785 7957 5458 0.175576789379919 0.175576789379919
-12271 8518 8628 0.0787132719056346 0.0787132719056346
-11383 8239 8240 0.0842941433278933 0.0842941433278933
-11370 7971 7972 0.0117965527041302 0.0117965527041302
-11414 7984 7985 0.287379755335746 0.287379755335746
-11432 415 8254 0.452015989776023 0.452015989776023
-20350 10730 2968 0.0120941619304981 0.0120941619304981
-8748 5336 6979 0.175571360985687 0.175571360985687
-3691 3527 3528 0.0472108481996503 0.0472108481996503
-3692 3528 2737 0.0483230367668469 0.0483230367668469
-3697 3532 3533 0.0559788343200402 0.0559788343200402
-15221 3833 8055 0.052921136155694 0.052921136155694
-12311 8645 8476 0.144977480276504 0.144977480276504
-12312 8476 8646 0.198472144343311 0.198472144343311
-12314 8643 8559 0.0228329493898265 0.0228329493898265
-20367 10748 10749 0.0037547184046713 0.0037547184046713
-9843 7548 7549 0.124919366653633 0.124919366653633
-12301 4845 8524 0.0473127526043962 0.0473127526043962
-18331 7594 6751 0.14027973854483 0.14027973854483
-11791 8037 2687 0.147733787935878 0.147733787935878
-15865 8762 8763 0.0396940145175954 0.0396940145175954
-20529 10029 10846 0.0100359682174695 0.0100359682174695
-17959 6241 5194 0.169083036600962 0.169083036600962
-18370 6889 5250 0.0518724586298984 0.0518724586298984
-15225 8180 5297 0.041720314716376 0.041720314716376
-9071 2781 7147 0.103689348353689 0.103689348353689
-3710 3546 1524 0.0515313284334221 0.0515313284334221
-20305 10728 8110 0.168482747904973 0.168482747904973
-3711 1524 3547 0.0494425170647519 0.0494425170647519
-14739 6538 6607 0.183986331427456 0.183986331427456
-11372 290 437 0.0112130207438012 0.0112130207438012
-18381 8535 8919 0.0499954488007408 0.0499954488007408
-12246 8615 4817 0.146110905108578 0.146110905108578
-11425 8251 8078 0.7456254172446 0.7456254172446
-12247 4817 5788 0.143910603528138 0.143910603528138
-12818 299 8256 0.476082599329394 0.476082599329394
-20410 8976 9207 0.0123297683183119 0.0123297683183119
-12263 8621 8622 0.00671006625102598 0.00671006625102598
-11559 8319 7714 0.15000222129108 0.15000222129108
-15229 8334 8335 0.02937581800825 0.02937581800825
-18377 6069 2549 0.201785565265125 0.201785565265125
-11447 387 8258 0.356209179582772 0.356209179582772
-11812 1881 8316 0.0255940628377938 0.0255940628377938
-14781 921 2207 0.190721648601815 0.190721648601815
-20233 10711 10715 0.00692211182471866 0.00692211182471866
-20363 9209 8991 0.0223079019168015 0.0223079019168015
-18388 8990 9001 0.0110856339057274 0.0110856339057274
-20651 10033 10881 0.0461798387778834 0.0461798387778834
-13366 9052 487 0.0981014313599177 0.0981014313599177
-12303 8639 8640 0.0320591977276875 0.0320591977276875
-20243 10716 10713 0.0141769281388351 0.0141769281388351
-14749 4864 2214 0.160302668775638 0.160302668775638
-13468 309 9094 0.0506545738820493 0.0506545738820493
-18336 1689 7624 0.203108569942922 0.203108569942922
-12937 1303 1970 0.0130832107015757 0.0130832107015757
-20525 10839 1286 0.00844906120646156 0.00844906120646156
-10918 8035 5970 0.0219813767800627 0.0219813767800627
-14913 7600 2016 0.104505986927597 0.104505986927597
-20351 2968 10750 0.0147633294839236 0.0147633294839236
-15880 8763 8762 0.0396940145175954 0.0396940145175954
-20353 9401 9336 0.00949287140929792 0.00949287140929792
-12244 8613 8614 0.00356038865266788 0.00356038865266788
-11216 8164 8165 0.0796169077304663 0.0796169077304663
-14132 9279 507 0.0225847659450503 0.0225847659450503
-15875 8940 8978 0.0300860996423522 0.0300860996423522
-11429 8253 319 0.299890155674121 0.299890155674121
-20371 2707 10756 0.00655605333712087 0.00655605333712087
-14677 3794 9330 0.199283554137764 0.199283554137764
-18476 4295 2411 0.100910451832155 0.100910451832155
-18478 5542 9039 0.101169435731023 0.101169435731023
-11770 3014 8406 0.0500338703103734 0.0500338703103734
-11823 8421 8424 0.377719915283211 0.377719915283211
-10669 7915 6847 0.0947158385157811 0.0947158385157811
-3731 3565 3566 0.0486546976993217 0.0486546976993217
-3732 3566 3567 0.109486664803565 0.109486664803565
-3733 3567 1037 0.105564006595596 0.105564006595596
-11897 8466 8467 0.103343928827087 0.103343928827087
-11947 397 8496 0.0965081758273934 0.0965081758273934
-18380 8494 8535 0.0492964457876769 0.0492964457876769
-20364 8991 10755 0.00786332111355482 0.00786332111355482
-12162 8315 8569 0.02262255215678 0.02262255215678
-12218 8594 2290 0.0213925904868369 0.0213925904868369
-14931 3354 2767 0.0942765011393086 0.0942765011393086
-18498 9212 9220 0.133514882064815 0.133514882064815
-20706 9190 10885 0.00984120017613085 0.00984120017613085
-12373 8677 8678 0.0486250060422128 0.0486250060422128
-14967 7610 7264 0.0940136459475559 0.0940136459475559
-15895 9441 5377 0.102059140746775 0.102059140746775
-13974 9251 9129 0.169864606266652 0.169864606266652
-20368 10749 10733 0.00357512667889407 0.00357512667889407
-14674 2227 943 0.182649781226047 0.182649781226047
-14178 3784 8864 0.153337805989006 0.153337805989006
-19290 10470 8767 0.117748080941626 0.117748080941626
-12575 8759 8760 0.0168627139608601 0.0168627139608601
-14983 8789 8796 0.105952161931752 0.105952161931752
-14984 8796 8878 0.106413855851218 0.106413855851218
-20419 10774 3587 0.00984290685312232 0.00984290685312232
-15867 8770 8771 0.0147638851882813 0.0147638851882813
-11263 8195 8196 0.0967030898556648 0.0967030898556648
-16192 5817 7723 0.19660431304726 0.19660431304726
-20360 8992 10754 0.00404589397436802 0.00404589397436802
-19297 10471 1942 0.0559273520312209 0.0559273520312209
-15868 8833 5588 0.0188635032964949 0.0188635032964949
-19299 9959 564 0.00433589917958362 0.00433589917958362
-20814 10936 7168 0.0050166121287054 0.0050166121287054
-20823 10780 9337 0.0124085195369407 0.0124085195369407
-19301 1942 10467 0.0736734316331574 0.0736734316331574
-12854 4133 6696 0.093947304456844 0.093947304456844
-15004 6269 9466 0.0522837092305697 0.0522837092305697
-19305 10464 10461 0.0144782338635936 0.0144782338635936
-19307 10467 611 0.103622552493386 0.103622552493386
-11685 8366 1032 0.0209886592874132 0.0209886592874132
-20820 10919 8330 0.00776069150921458 0.00776069150921458
-11643 8347 4658 0.0580128250256257 0.0580128250256257
-12924 8890 8891 0.0884309215437497 0.0884309215437497
-15230 8360 8248 0.0379210675749848 0.0379210675749848
-13013 8916 2892 0.160989403082392 0.160989403082392
-12051 8531 8529 0.0116601753914343 0.0116601753914343
-20828 9205 8443 0.0104227726118747 0.0104227726118747
-18615 7410 5865 0.176922387553379 0.176922387553379
-14852 8621 9432 0.00675320800603643 0.00675320800603643
-18616 5865 9447 0.157075160700523 0.157075160700523
-18618 1314 9447 0.0196279343381406 0.0196279343381406
-11994 8505 8048 0.149802391835517 0.149802391835517
-18621 2586 5181 0.176412393215512 0.176412393215512
-18622 5181 5649 0.1069372720504 0.1069372720504
-19473 7476 10517 0.0101658403815209 0.0101658403815209
-19474 10517 10518 0.00993077177126307 0.00993077177126307
-18480 9040 9120 0.135103567036488 0.135103567036488
-20833 10944 10951 0.17747662532422 0.17747662532422
-19475 10518 10519 0.0191608413173093 0.0191608413173093
-19512 10537 10447 0.00647615513057594 0.00647615513057594
-2 2 3 0.283463280100036 0.283463280100036
-3 3 4 0.0333775918694363 0.0333775918694363
-18628 1310 9484 0.175555113641419 0.175555113641419
-12242 8611 8612 0.0998376585619669 0.0998376585619669
-5 5 6 0.348594358341424 0.348594358341424
-15909 9104 9105 0.0387441124726526 0.0387441124726526
-15903 6134 8603 0.0260893170771595 0.0260893170771595
-15878 8833 8770 0.0398025148628561 0.0398025148628561
-13625 7013 2274 0.0942922296438968 0.0942922296438968
-15024 4136 2663 0.0946854927112821 0.0946854927112821
-13651 9159 1177 0.0568269678125187 0.0568269678125187
-6 6 7 0.250747670173169 0.250747670173169
-20837 10949 10945 0.0947762411619158 0.0947762411619158
-15887 8842 9619 0.0119243513569086 0.0119243513569086
-19481 10511 10486 0.0687637700371023 0.0687637700371023
-13777 9191 292 0.0113408171424215 0.0113408171424215
-19493 10463 10523 0.0181472136448415 0.0181472136448415
-13799 9195 5081 0.0314508853846434 0.0314508853846434
-19487 10426 10427 0.0081618196829418 0.0081618196829418
-18570 10325 10322 0.0277653060168724 0.0277653060168724
-15042 6787 4718 0.0916704601824836 0.0916704601824836
-15043 4718 9414 0.0490846601218478 0.0490846601218478
-19494 10523 7469 0.0159566577035026 0.0159566577035026
-13814 4934 9200 0.0155640797101011 0.0155640797101011
-13008 8914 2891 0.0117402105605065 0.0117402105605065
-17570 10143 10144 0.0307556488479174 0.0307556488479174
-20841 10952 10940 0.18759449218266 0.18759449218266
-15726 7317 9449 0.0375532628709029 0.0375532628709029
-15904 8603 9697 0.00690416936559141 0.00690416936559141
-13877 4478 2804 0.135897648680331 0.135897648680331
-18633 4044 4045 0.00275409212275412 0.00275409212275412
-15057 9477 6733 0.054468335249091 0.054468335249091
-15058 6733 9313 0.0446744870999848 0.0446744870999848
-13910 9228 3317 0.0850892170141282 0.0850892170141282
-12689 2057 8805 0.133235184271089 0.133235184271089
-18656 6223 7657 0.27620827404325 0.27620827404325
-15858 9732 9739 0.0147062242308904 0.0147062242308904
-20843 10954 10751 0.181296524715589 0.181296524715589
-16082 366 255 0.573997033805984 0.573997033805984
-16084 9817 9818 0.0154245817929875 0.0154245817929875
-16127 4555 9122 0.0381695434595099 0.0381695434595099
-14675 943 5941 0.178224321703034 0.178224321703034
-15285 8799 3187 0.00972670306222712 0.00972670306222712
-15873 8879 8889 0.108518344615814 0.108518344615814
-15405 9585 9582 0.0323190665796029 0.0323190665796029
-16246 9859 7743 0.402195232762633 0.402195232762633
-13026 1537 4265 0.200987668621859 0.200987668621859
-3749 3578 3579 0.097584814173116 0.097584814173116
-3750 3579 848 0.0994883860112991 0.0994883860112991
-3752 3580 3581 0.0190511917089631 0.0190511917089631
-19488 10427 4703 0.0206936304458077 0.0206936304458077
-20829 8443 10954 0.0118059106132393 0.0118059106132393
-16351 7009 2285 0.0978474396198024 0.0978474396198024
-16382 9879 9771 0.00992783408407401 0.00992783408407401
-16432 9894 9895 0.0235353492080929 0.0235353492080929
-14329 9328 602 0.0664699646577648 0.0664699646577648
-20848 10950 10953 0.0184888911494772 0.0184888911494772
-13445 9078 9079 0.200451693111106 0.200451693111106
-16391 3033 9847 0.0236566168850551 0.0236566168850551
-15437 9602 9603 0.109740104543279 0.109740104543279
-18475 9005 4295 0.117455212214086 0.117455212214086
-19609 10585 10503 0.00693839845805758 0.00693839845805758
-16644 564 565 0.0167681949380125 0.0167681949380125
-18641 5875 7416 0.178910174745805 0.178910174745805
-16758 7565 10010 0.0537198584701325 0.0537198584701325
-13557 9032 9033 0.185435393968361 0.185435393968361
-19028 8995 7690 0.0430021373921601 0.0430021373921601
-17062 10068 2247 0.0643618782275657 0.0643618782275657
-16833 593 9915 0.00807834974542274 0.00807834974542274
-18614 4049 7410 0.176200842798068 0.176200842798068
-16902 74 7306 0.205595181095446 0.205595181095446
-17068 10069 675 0.181147813198563 0.181147813198563
-17009 4847 10051 0.0109841519151342 0.0109841519151342
-13581 9133 9134 0.0795179133195768 0.0795179133195768
-17207 9891 234 0.00951110757861507 0.00951110757861507
-19644 10601 10602 0.00459389199037625 0.00459389199037625
-14887 7456 5693 0.103533596199028 0.103533596199028
-15073 9480 8706 0.0156808972883418 0.0156808972883418
-18617 9447 1314 0.0196279343381406 0.0196279343381406
-19477 10520 10521 0.0112440070511006 0.0112440070511006
-19479 1872 10522 0.0183337010143588 0.0183337010143588
-18629 9484 5862 0.00360275623818702 0.00360275623818702
-17406 3210 6122 0.199774981063921 0.199774981063921
-15450 9609 9610 0.118608570416781 0.118608570416781
-14988 9309 9464 0.101172548296122 0.101172548296122
-15965 1443 7623 0.202446963416806 0.202446963416806
-13793 4819 8514 0.148483674564771 0.148483674564771
-3766 2339 3595 0.17591583054365 0.17591583054365
-3767 3595 3596 0.243702533330372 0.243702533330372
-15851 5596 9735 0.0497175089074512 0.0497175089074512
-15124 6515 226 0.0653425651240956 0.0653425651240956
-15449 9608 9609 0.0645563810419252 0.0645563810419252
-13914 4840 9230 0.275162192340763 0.275162192340763
-13922 9137 9233 0.0899935621999505 0.0899935621999505
-3788 1148 1821 0.103455086525091 0.103455086525091
-18632 7408 4044 0.178025429971464 0.178025429971464
-15247 9542 8177 0.0166658349694615 0.0166658349694615
-15460 9613 9614 0.039786363249444 0.039786363249444
-15461 8882 9615 0.0277165465497567 0.0277165465497567
-15546 9646 9647 0.0122997635777285 0.0122997635777285
-15889 8978 1101 0.0278428503732722 0.0278428503732722
-236 30 31 0.0623462807475453 0.0623462807475453
-239 246 247 0.10870569104286 0.10870569104286
-19602 10483 10583 0.0688347644552014 0.0688347644552014
-19497 7457 10525 0.0182919034833847 0.0182919034833847
-15292 9561 9562 0.0285639174620334 0.0285639174620334
-16011 9781 9782 0.0666625832869129 0.0666625832869129
-204 216 217 0.0495486567174314 0.0495486567174314
-16105 9825 9826 0.769429574289864 0.769429574289864
-19504 10531 10532 0.00490376342058079 0.00490376342058079
-19505 10532 10533 0.0113536336982688 0.0113536336982688
-15983 4420 7372 0.10794760335784 0.10794760335784
-16336 6683 8026 0.0934572989494279 0.0934572989494279
-15146 8245 9501 0.259647287125597 0.259647287125597
-16378 2678 4127 0.105747053096561 0.105747053096561
-15168 9509 3381 0.0515085102071127 0.0515085102071127
-14670 9413 5473 0.178785252044424 0.178785252044424
-15438 9603 2287 0.0101078833454114 0.0101078833454114
-16618 7974 3673 0.0581937370992888 0.0581937370992888
-16393 9876 3281 0.0515999951055545 0.0515999951055545
-11613 742 743 0.188831137780044 0.188831137780044
-16792 6964 10013 0.15953431348719 0.15953431348719
-16830 9911 10017 0.00322492509560211 0.00322492509560211
-17016 10055 10056 0.150978646033743 0.150978646033743
-17201 10074 6392 0.100421160552702 0.100421160552702
-19702 10621 10622 0.0560876276790842 0.0560876276790842
-17391 10095 8785 0.114852910416621 0.114852910416621
-18648 4053 10111 0.195636353938149 0.195636353938149
-17545 8264 8929 0.192238762103777 0.192238762103777
-19596 10507 10581 0.0688892384795374 0.0688892384795374
-18652 8072 7653 0.262512305989993 0.262512305989993
-18119 4085 6030 0.181292795599691 0.181292795599691
-17647 8242 223 0.0953499590487046 0.0953499590487046
-17960 5194 10233 0.0515871143302905 0.0515871143302905
-17964 10236 10232 0.0350820368831285 0.0350820368831285
-17785 8986 8497 0.0646311177616063 0.0646311177616063
-17753 10173 8485 0.0489434224402369 0.0489434224402369
-11535 1543 1544 0.137939265537406 0.137939265537406
-17819 8676 10186 0.0370735665978641 0.0370735665978641
-17777 6508 6993 0.160336610713707 0.160336610713707
-3801 3083 3195 0.200442064419022 0.200442064419022
-3802 3195 3622 0.204398520601987 0.204398520601987
-3803 3622 1902 0.199020966616341 0.199020966616341
-3804 1902 3624 0.19721596773449 0.19721596773449
-17851 10193 10194 0.0260169590696429 0.0260169590696429
-12958 1630 1631 0.127437048321071 0.127437048321071
-18661 10206 7647 0.17872352996795 0.17872352996795
-19942 10671 4953 0.0511372085610231 0.0511372085610231
-12964 1770 1771 0.0893785434926153 0.0893785434926153
-18602 7656 6222 0.275287629645573 0.275287629645573
-18232 2550 6070 0.201831098039417 0.201831098039417
-18761 10339 10340 0.0412859123428405 0.0412859123428405
-4425 950 4134 0.165887036500793 0.165887036500793
-4426 4134 4135 0.171020798065652 0.171020798065652
-4427 4135 4136 0.184950521487565 0.184950521487565
-18817 10355 8431 0.088262856016995 0.088262856016995
-4447 4149 4150 0.111495530172709 0.111495530172709
-4448 4150 4151 0.101644653962629 0.101644653962629
-19603 10583 10496 0.00675773327585877 0.00675773327585877
-19855 10661 10662 0.203042057763788 0.203042057763788
-20643 10879 10877 0.0314570447479651 0.0314570447479651
-19158 8423 8388 0.0601966609853944 0.0601966609853944
-19615 10587 10502 0.00686995556939521 0.00686995556939521
-12339 8656 2501 0.0156699758852849 0.0156699758852849
-19328 9895 10473 0.0277673159561869 0.0277673159561869
-19490 10441 10447 0.0184697170100914 0.0184697170100914
-19492 10448 10463 0.00504831489789659 0.00504831489789659
-19428 10489 7287 0.156514421452779 0.156514421452779
-19286 563 9967 0.0537140867907163 0.0537140867907163
-19621 10589 10590 0.0274773310120508 0.0274773310120508
-19441 10492 10493 0.0201930874558464 0.0201930874558464
-19789 9476 4873 0.191586478139089 0.191586478139089
-19805 2619 10411 0.177645225629424 0.177645225629424
-18409 10287 10288 0.0734556316276251 0.0734556316276251
-20191 462 10707 0.132640175005266 0.132640175005266
-14823 3606 9335 0.071748078170483 0.071748078170483
-14824 9335 9402 0.00997675672475066 0.00997675672475066
-14825 9402 8301 0.0653806855821323 0.0653806855821323
-14830 4022 8322 0.0483334251113916 0.0483334251113916
-14832 5668 7026 0.0386007852757077 0.0386007852757077
-4468 4163 4164 0.0480674059146442 0.0480674059146442
-4469 4164 991 0.0502312521862823 0.0502312521862823
-14857 8907 9435 0.0508107102861791 0.0508107102861791
-14859 9436 9437 0.0520105887104481 0.0520105887104481
-15729 9448 9449 0.154385795199696 0.154385795199696
-18619 9447 9452 0.260663192513491 0.260663192513491
-14936 5495 8700 0.014007087915999 0.014007087915999
-20590 2705 10795 0.0154885940353102 0.0154885940353102
-14972 2754 7005 0.0961416158900631 0.0961416158900631
-15045 5118 4946 0.0490898990370342 0.0490898990370342
-15046 4946 7151 0.0490351349560296 0.0490351349560296
-15963 6397 4362 0.0791794536243071 0.0791794536243071
-15989 9452 4506 0.0512507321563124 0.0512507321563124
-16056 308 4648 0.208884022844132 0.208884022844132
-15158 9504 7749 0.203686953618576 0.203686953618576
-16076 8934 9417 0.0908088237702457 0.0908088237702457
-16106 9826 214 0.019707054216564 0.019707054216564
-19536 10547 10551 0.00289118198627037 0.00289118198627037
-16257 8751 9267 0.200818549492747 0.200818549492747
-16332 5124 7146 0.105923351259383 0.105923351259383
-3817 3633 3634 0.395318196729382 0.395318196729382
-16359 2326 5997 0.152345269926906 0.152345269926906
-5101 4522 4624 0.135948680255943 0.135948680255943
-18688 2602 1859 0.181461056809498 0.181461056809498
-16455 9910 8957 0.00642990572974513 0.00642990572974513
-16456 8957 9911 0.00773671564019088 0.00773671564019088
-16715 132 1701 0.201952446468105 0.201952446468105
-17236 31 134 0.108163538194537 0.108163538194537
-17237 134 246 0.0735610173824186 0.0735610173824186
-17521 3940 6651 0.0163911525787958 0.0163911525787958
-18097 10256 2169 0.0491222602233141 0.0491222602233141
-18207 8329 7847 0.200166859157176 0.200166859157176
-18394 5586 2554 0.157693803770027 0.157693803770027
-18972 7756 3621 0.0947044796448553 0.0947044796448553
-19237 10458 10457 0.00406582159548868 0.00406582159548868
-19229 10453 10454 0.0676096530689986 0.0676096530689986
-3858 3667 3668 0.0415319443079903 0.0415319443079903
-3859 3668 3669 0.0482985746708946 0.0482985746708946
-19322 2203 916 0.200210598103272 0.200210598103272
-15203 7160 9528 0.0514241954874698 0.0514241954874698
-19690 10616 10397 0.0495068144600769 0.0495068144600769
-19692 10617 10398 0.0503641661598134 0.0503641661598134
-19879 5198 10672 0.124230342536198 0.124230342536198
-19967 10686 9720 0.110372440140764 0.110372440140764
-19969 9505 1931 0.205435822074821 0.205435822074821
-19971 9711 1933 0.17400772229687 0.17400772229687
-19972 1933 10306 0.208946577187585 0.208946577187585
-3875 3685 3686 0.109844105363612 0.109844105363612
-17510 10120 10119 0.158859506306984 0.158859506306984
-676 669 670 0.102292085856109 0.102292085856109
-3893 3696 3697 0.200080946502272 0.200080946502272
-3894 3697 3698 0.204567969900071 0.204567969900071
-3896 3699 3700 0.197370997762066 0.197370997762066
-20255 5749 10704 0.00800649085379587 0.00800649085379587
-20320 10739 10740 0.00883881362478868 0.00883881362478868
-15207 1113 9529 0.0508930389416975 0.0508930389416975
-15251 9544 9536 0.0327374869648338 0.0327374869648338
-15379 8806 2642 0.105298522418053 0.105298522418053
-18635 7865 1846 0.175356787311383 0.175356787311383
-15485 9612 9616 0.0684703360070514 0.0684703360070514
-15516 9635 3736 0.0550573183727317 0.0550573183727317
-19480 10522 10511 0.00442285695753415 0.00442285695753415
-15574 9660 9464 0.175338544663329 0.175338544663329
-15598 7585 2003 0.0946559616738872 0.0946559616738872
-15618 9679 9680 0.101799223111765 0.101799223111765
-15640 9666 9667 0.00676039634627663 0.00676039634627663
-15683 8023 7680 0.104281288426574 0.104281288426574
-15704 7666 2329 0.100028756753634 0.100028756753634
-15755 3356 2760 0.0982705119459115 0.0982705119459115
-1110 1126 1127 0.154576986104079 0.154576986104079
-2347 2338 2265 0.095819812257735 0.095819812257735
-12348 8664 8665 0.0099818469883938 0.0099818469883938
-20799 10928 6772 0.00617692305613739 0.00617692305613739
-1176 1191 1192 0.0992884317332444 0.0992884317332444
-20800 6772 10949 0.00765667567444528 0.00765667567444528
-441 439 440 0.131394781189403 0.131394781189403
-2798 2750 2752 0.210544806502819 0.210544806502819
-20666 10888 10889 0.0790962373353106 0.0790962373353106
-19518 6854 10540 0.00704975834948009 0.00704975834948009
-17074 10070 7842 0.137917824166884 0.137917824166884
-320 63 64 0.0374489603047296 0.0374489603047296
-62 68 69 0.0422209546479027 0.0422209546479027
-12003 5507 7080 0.146738996592278 0.146738996592278
-109 116 117 0.143188450690636 0.143188450690636
-18456 10296 7020 0.00773615182989558 0.00773615182989558
-134 142 143 0.102085903671524 0.102085903671524
-18414 7445 8376 0.0994737732965907 0.0994737732965907
-153 162 163 0.0752431334530451 0.0752431334530451
-18417 10289 8332 0.15046170994065 0.15046170994065
-323 206 207 0.0117249781899754 0.0117249781899754
-222 233 234 0.0133914034588106 0.0133914034588106
-269 279 280 0.111130387977042 0.111130387977042
-304 312 313 0.0760674046765663 0.0760674046765663
-378 380 381 0.042583144928967 0.042583144928967
-334 335 336 0.0838277836552233 0.0838277836552233
-18422 6881 8361 0.201914074104345 0.201914074104345
-367 368 369 0.0822344709508681 0.0822344709508681
-541 535 536 0.186883681615866 0.186883681615866
-11516 528 591 0.200155681159152 0.200155681159152
-15254 9538 9539 0.0173547475022314 0.0173547475022314
-659 649 650 0.011039314445329 0.011039314445329
-11464 701 5 0.465980985000995 0.465980985000995
-16702 9996 9629 0.03889405892702 0.03889405892702
-12966 1824 1825 0.0102076592436785 0.0102076592436785
-18427 7848 2983 0.204332357907837 0.204332357907837
-16420 3283 3331 0.0144926793767328 0.0144926793767328
-794 799 800 0.10010177351148 0.10010177351148
-11695 896 1005 0.0164907467236235 0.0164907467236235
-18433 6878 8357 0.204690873329425 0.204690873329425
-863 876 877 0.10476487069157 0.10476487069157
-883 898 899 0.104753841122432 0.104753841122432
-884 899 864 0.0807039229442354 0.0807039229442354
-927 941 942 0.0494985310502231 0.0494985310502231
-16705 9999 9629 0.0289087737479417 0.0289087737479417
-17026 3489 3490 0.0719959563000755 0.0719959563000755
-18682 3408 3539 0.176214327588196 0.176214327588196
-18442 8299 10294 0.012207810422513 0.012207810422513
-1076 1092 1093 0.17117547982738 0.17117547982738
-15790 2105 2106 0.167962867985551 0.167962867985551
-1100 1116 1117 0.101443140583253 0.101443140583253
-1122 1138 1139 0.131688298285365 0.131688298285365
-2171 2170 2171 0.00661609813602913 0.00661609813602913
-19434 10489 10109 0.051734430819511 0.051734430819511
-16849 9890 3358 0.0252874452199061 0.0252874452199061
-16171 7732 6631 0.170999473020786 0.170999473020786
-1145 1163 1164 0.10638131618854 0.10638131618854
-2233 2234 2235 0.107325767093377 0.107325767093377
-16734 10004 5726 0.044310348629928 0.044310348629928
-19574 7473 10571 0.0063271995041771 0.0063271995041771
-1286 1311 1312 0.0523154141859772 0.0523154141859772
-18191 5793 6053 0.200818759010255 0.200818759010255
-12198 2296 2417 0.0275462737865406 0.0275462737865406
-1335 1360 142 0.202746839209369 0.202746839209369
-1357 1386 1387 0.204107383179499 0.204107383179499
-1384 1411 1412 0.132938489820146 0.132938489820146
-1385 1412 1413 0.131234196689436 0.131234196689436
-16835 10018 10019 0.00449297276091322 0.00449297276091322
-1459 1481 1482 0.0508965659313026 0.0508965659313026
-533 397 398 0.176353791704941 0.176353791704941
-1483 1503 1504 0.10868886965133 0.10868886965133
-17373 3540 4236 0.201662628453229 0.201662628453229
-1505 47 1524 0.198761508803526 0.198761508803526
-16510 9930 8899 0.028599893322584 0.028599893322584
-19459 10506 10507 0.0718336837694179 0.0718336837694179
-16953 10037 10038 0.0209544596641532 0.0209544596641532
-1573 1601 1602 0.162785877407261 0.162785877407261
-1622 1650 1651 0.0538894092860146 0.0538894092860146
-1645 1672 1673 0.130835848827306 0.130835848827306
-1667 1692 1693 0.050088176287895 0.050088176287895
-1694 1718 1719 0.0873988319892153 0.0873988319892153
-1719 1738 1456 0.0837159374419676 0.0837159374419676
-1750 1769 1772 0.200154711336709 0.200154711336709
-1772 1790 1791 0.0243124544354895 0.0243124544354895
-12976 2866 2867 0.0166252705046511 0.0166252705046511
-1804 1817 1818 0.0911976784518576 0.0911976784518576
-11690 836 837 0.0102634119335747 0.0102634119335747
-1854 1868 1869 0.0969507802969199 0.0969507802969199
-18890 6123 3212 0.200920158955186 0.200920158955186
-13010 2892 2956 0.114118910643116 0.114118910643116
-1900 1913 1087 0.0825040978126541 0.0825040978126541
-11531 1232 1233 0.136649469135664 0.136649469135664
-3101 3032 3035 0.0672642720958143 0.0672642720958143
-16771 7290 7418 0.177711115784665 0.177711115784665
-2076 2079 2080 0.00320241388686281 0.00320241388686281
-20267 7552 10721 0.0076233085405271 0.0076233085405271
-2099 2101 2102 0.0617614998037007 0.0617614998037007
-2178 2178 2179 0.133414657501795 0.133414657501795
-20703 10902 10893 0.0137674602252582 0.0137674602252582
-18186 6059 4074 0.199239203137735 0.199239203137735
-2271 2271 2274 0.132133232701666 0.132133232701666
-2297 2295 2044 0.383761223862801 0.383761223862801
-2323 2315 2316 0.330214470935474 0.330214470935474
-12347 8663 8664 0.0257805479932851 0.0257805479932851
-2391 2374 2380 0.0606466728888714 0.0606466728888714
-17368 6112 1906 0.199361824625973 0.199361824625973
-2461 2451 2452 0.13645541326163 0.13645541326163
-2505 2485 2486 0.101289554682704 0.101289554682704
-2559 1939 371 0.224011572183979 0.224011572183979
-19236 5960 10458 0.00935537130778975 0.00935537130778975
-20487 10833 10834 0.0146368261080025 0.0146368261080025
-17152 4823 1911 0.202007841348173 0.202007841348173
-15939 9756 1179 0.0444859500137061 0.0444859500137061
-3746 3576 3577 0.10159835449875 0.10159835449875
-3791 2772 3612 0.203936793927218 0.203936793927218
-3792 3612 3613 0.107839344756473 0.107839344756473
-2787 2741 2742 0.198829139661659 0.198829139661659
-15945 9761 9759 0.0391671909462338 0.0391671909462338
-2831 2780 2781 0.0528298940705434 0.0528298940705434
-19569 10568 10569 0.0878244193957737 0.0878244193957737
-2880 2824 2825 0.0974259616864288 0.0974259616864288
-2902 2845 2846 0.808353421265405 0.808353421265405
-17512 10121 10120 0.0252089130538733 0.0252089130538733
-18124 7936 10267 0.178836603986638 0.178836603986638
-17213 3773 3774 0.00322537908461904 0.00322537908461904
-4010 3797 3798 0.0496772635509661 0.0496772635509661
-20618 10829 10811 0.00710063413803192 0.00710063413803192
-4056 3836 542 0.0542189434563804 0.0542189434563804
-16431 9893 9894 0.0272038809490012 0.0272038809490012
-4079 3854 3855 0.107248137237127 0.107248137237127
-4105 3874 1534 0.0983074346464974 0.0983074346464974
-4130 3892 3893 0.176077888960898 0.176077888960898
-3140 2139 3065 0.10712340392365 0.10712340392365
-14117 3945 3946 0.0482205385893945 0.0482205385893945
-19586 7471 10577 0.00638268050836497 0.00638268050836497
-18680 1852 3185 0.180570803347185 0.180570803347185
-4350 4077 4078 0.0772510249569655 0.0772510249569655
-4372 4094 4095 0.0479505811649138 0.0479505811649138
-19591 10579 10498 0.00651919101450697 0.00651919101450697
-3306 3214 3215 0.0471079000187924 0.0471079000187924
-3328 3230 3231 0.132391302135547 0.132391302135547
-19626 10513 10592 0.0688709903222838 0.0688709903222838
-3398 3295 3296 0.0155356242142858 0.0155356242142858
-19230 10454 10455 0.0118389292817843 0.0118389292817843
-20315 10736 10737 0.159656650881409 0.159656650881409
-18079 6355 10255 0.0661057533214939 0.0661057533214939
-3483 3361 3362 0.201966263198038 0.201966263198038
-4636 4280 4281 0.102934268159845 0.102934268159845
-16647 9969 5457 0.0123677166569097 0.0123677166569097
-16903 7306 3263 0.199172661453728 0.199172661453728
-19484 6853 10408 0.00698312522129821 0.00698312522129821
-19234 10420 10457 0.0372086096742178 0.0372086096742178
-19820 10648 3951 0.0619393226511354 0.0619393226511354
-20630 10847 10760 0.0141138073557462 0.0141138073557462
-4772 4383 4384 0.143358020264065 0.143358020264065
-4773 4384 2688 0.1475761156103 0.1475761156103
-19822 10648 9252 0.121899654224586 0.121899654224586
-17019 10054 10057 0.00913318334502991 0.00913318334502991
-19885 7405 10416 0.200852838610439 0.200852838610439
-18259 7775 9395 0.0553851197391209 0.0553851197391209
-4859 3019 4445 0.0478223869342914 0.0478223869342914
-20466 10753 10817 0.0682187434932547 0.0682187434932547
-19877 10671 6237 0.122419389056498 0.122419389056498
-19878 6237 5198 0.175009695046305 0.175009695046305
-18518 10303 10304 0.0239997630410034 0.0239997630410034
-4902 3446 4478 0.091694374773876 0.091694374773876
-19966 9509 10686 0.206010969949978 0.206010969949978
-19567 10565 7474 0.0766585847384353 0.0766585847384353
-14126 3925 419 0.00806156942685905 0.00806156942685905
-3723 3558 2895 0.0536764980359733 0.0536764980359733
-3795 3615 3616 0.170284963942666 0.170284963942666
-20220 9234 6625 0.292333005384616 0.292333005384616
-14111 3623 3659 0.11789221451213 0.11789221451213
-3861 3670 3671 0.0217628748782358 0.0217628748782358
-17030 3607 3490 0.0408681491476405 0.0408681491476405
-15948 9763 9764 0.10655007034609 0.10655007034609
-17086 504 3946 0.0996587778769702 0.0996587778769702
-20151 8263 8850 0.190160460059289 0.190160460059289
-17097 3721 2249 0.175979650666522 0.175979650666522
-3955 2834 3751 0.211238280484951 0.211238280484951
-4024 3809 3810 0.0544429181408591 0.0544429181408591
-20310 10731 10732 0.0936889543382987 0.0936889543382987
-4047 2945 3827 0.152861408667566 0.152861408667566
-20433 10792 10793 0.0378257433013547 0.0378257433013547
-4179 3929 3930 0.138165941069034 0.138165941069034
-18286 6824 3986 0.13302202745972 0.13302202745972
-20336 10747 10740 0.0348319951594156 0.0348319951594156
-5524 4925 4926 0.124694107926995 0.124694107926995
-4269 4013 4014 0.135510024687662 0.135510024687662
-20344 10743 10749 0.0091415179335324 0.0091415179335324
-17114 3959 582 0.020964645373322 0.020964645373322
-14696 4947 5018 0.17692836025714 0.17692836025714
-4361 4085 4086 0.0439979039927832 0.0439979039927832
-20443 10800 10797 0.0184411605361648 0.0184411605361648
-4436 1838 4143 0.106284873443858 0.106284873443858
-4437 4143 4144 0.0526768909687255 0.0526768909687255
-4456 4154 4155 0.103915690256788 0.103915690256788
-4457 4155 4156 0.103695542240372 0.103695542240372
-4476 4169 727 0.0512571810638195 0.0512571810638195
-4477 727 4170 0.0478531500173987 0.0478531500173987
-5818 5133 5134 0.102145042918239 0.102145042918239
-5912 5193 5194 0.024083404138801 0.024083404138801
-20491 10835 10836 0.00603667118796414 0.00603667118796414
-15862 9742 9737 0.126226895338302 0.126226895338302
-5931 5209 5210 0.693210396806986 0.693210396806986
-16531 9230 9133 0.0319382574203035 0.0319382574203035
-4627 1616 4276 0.105592921129571 0.105592921129571
-20628 10756 10873 0.0143552752086545 0.0143552752086545
-20696 10910 4524 0.00942218117840877 0.00942218117840877
-18136 6043 10263 0.201163508503498 0.201163508503498
-4695 4331 808 0.139418137507802 0.139418137507802
-4698 4332 4333 0.161361651356291 0.161361651356291
-6050 4013 5293 0.134925136075026 0.134925136075026
-18073 6354 6355 0.0448917156923931 0.0448917156923931
-4744 4362 4363 0.107836470275357 0.107836470275357
-4765 4378 4379 0.183602249353544 0.183602249353544
-20634 10876 10877 0.0283642470117633 0.0283642470117633
-18170 5801 6061 0.198751914750946 0.198751914750946
-4835 4430 4431 0.145138896688942 0.145138896688942
-4862 4446 4447 0.0474277072247471 0.0474277072247471
-18509 9355 10301 0.00184585558113331 0.00184585558113331
-6260 174 1704 0.202197382513594 0.202197382513594
-4958 4516 4517 0.0491656169358357 0.0491656169358357
-4983 4534 4535 0.0998419246339525 0.0998419246339525
-19921 10413 7869 0.176021720356684 0.176021720356684
-5064 4589 4590 0.0154062452430768 0.0154062452430768
-5086 4607 4608 0.119245405144689 0.119245405144689
-5111 4630 4631 0.139104857432868 0.139104857432868
-20788 5700 10925 0.00572872738726038 0.00572872738726038
-3915 2811 3713 0.0582509515897595 0.0582509515897595
-3917 3714 3715 0.0974014881112134 0.0974014881112134
-20790 10947 8358 0.00657767070033128 0.00657767070033128
-5221 4709 4710 0.122314419308335 0.122314419308335
-5243 875 4463 0.138237545752752 0.138237545752752
-18318 7366 7442 0.0771284931905011 0.0771284931905011
-5315 4770 4771 0.0488277782804066 0.0488277782804066
-5336 2332 4786 0.0940516760159238 0.0940516760159238
-5388 4825 97 0.199068637854245 0.199068637854245
-17092 4597 9466 0.17373336205738 0.17373336205738
-5437 4857 4858 0.0515825872815672 0.0515825872815672
-5483 4893 4894 0.046048954675788 0.046048954675788
-5531 4931 4932 0.018084718359645 0.018084718359645
-6850 4421 5860 0.102045619820979 0.102045619820979
-6892 5894 5697 0.0947186956045014 0.0947186956045014
-5585 1550 4269 0.196429076934968 0.196429076934968
-3934 3732 3733 0.121703755972038 0.121703755972038
-3936 3734 3735 0.176733819603511 0.176733819603511
-5609 4988 4989 0.201206746854351 0.201206746854351
-6912 5908 1999 0.0940717232862836 0.0940717232862836
-5705 932 2217 0.184097423724296 0.184097423724296
-5753 5081 5082 0.054538974474369 0.054538974474369
-5760 5088 1840 0.180073513278395 0.180073513278395
-5785 2782 5108 0.132016677253578 0.132016677253578
-18555 7706 2990 0.19846083928125 0.19846083928125
-18352 3981 7040 0.199881951179414 0.199881951179414
-5885 5176 130 0.21663995111842 0.21663995111842
-14774 5924 3807 0.151382817559166 0.151382817559166
-17792 8508 6179 0.109482524773714 0.109482524773714
-5955 5228 5229 0.0697529045378229 0.0697529045378229
-5977 1247 4556 0.132973381558885 0.132973381558885
-20546 10755 2961 0.0206004250178228 0.0206004250178228
-6055 3817 5296 0.100909929183789 0.100909929183789
-6076 172 1729 0.256606586411632 0.256606586411632
-6122 5349 4219 0.225702767955147 0.225702767955147
-6172 5388 1958 0.131227861001577 0.131227861001577
-20555 10853 10028 0.0104514157116194 0.0104514157116194
-6194 3028 5401 0.132618210317087 0.132618210317087
-18508 10301 9355 0.00184585558113331 0.00184585558113331
-6264 1941 5456 0.107892445399082 0.107892445399082
-6308 2067 5487 0.0160838439354733 0.0160838439354733
-6329 5502 5503 0.0544715490547718 0.0544715490547718
-20506 10834 10840 0.00711722931583218 0.00711722931583218
-7656 5012 3346 0.092992178848436 0.092992178848436
-20397 10758 10759 0.00383951895664098 0.00383951895664098
-19830 10649 10650 0.203375176962632 0.203375176962632
-18258 6760 7775 0.140758515508444 0.140758515508444
-6495 3928 5619 0.089155871041537 0.089155871041537
-6517 963 5279 0.100667730658223 0.100667730658223
-7856 6469 6470 0.161667024351427 0.161667024351427
-14751 929 5933 0.176747364710656 0.176747364710656
-6673 3933 5622 0.0990284128542063 0.0990284128542063
-14716 5687 933 0.176256990051995 0.176256990051995
-20475 10824 10825 0.0252031422821514 0.0252031422821514
-6694 5571 5749 0.0485856779635153 0.0485856779635153
-6695 5749 5750 0.0408085368300434 0.0408085368300434
-3964 1865 3758 0.048211663801055 0.048211663801055
-3965 3758 3759 0.0426076537269238 0.0426076537269238
-11217 443 444 0.0957304857475106 0.0957304857475106
-6741 5790 5791 0.0533877005590012 0.0533877005590012
-6764 5808 5809 0.0505689128275476 0.0505689128275476
-6788 5828 5829 0.0547714293876055 0.0547714293876055
-18151 6044 10264 0.200762745716695 0.200762745716695
-6809 365 4683 0.0475091694046952 0.0475091694046952
-6832 5852 1635 0.119748990570207 0.119748990570207
-18333 7291 3229 0.082496713136994 0.082496713136994
-6884 4667 1334 0.0975135676636165 0.0975135676636165
-6901 5900 2304 0.084800082911027 0.084800082911027
-6971 5951 5952 0.0992113626066069 0.0992113626066069
-14748 6733 4864 0.192735673325504 0.192735673325504
-18279 6738 6739 0.202843884763896 0.202843884763896
-7077 898 4479 0.137748361044457 0.137748361044457
-18284 6793 6794 0.0655358337845971 0.0655358337845971
-7099 5645 4359 0.0906469204279695 0.0906469204279695
-7124 6037 6038 0.0494419955897028 0.0494419955897028
-7168 6071 6072 0.0522594599242274 0.0522594599242274
-11649 8349 7711 0.138715670988872 0.138715670988872
-11989 8046 6574 0.143315424684023 0.143315424684023
-11652 4542 1283 0.131430485325992 0.131430485325992
-17217 1908 6114 0.200603968094547 0.200603968094547
-20549 10805 10854 0.0404087571222208 0.0404087571222208
-11385 8240 8241 0.317652248043028 0.317652248043028
-15924 9072 9753 0.0703936306326387 0.0703936306326387
-18551 9428 7705 0.2040983825575 0.2040983825575
-20556 10028 10805 0.0117396717425925 0.0117396717425925
-20452 10807 10808 0.0757678652544946 0.0757678652544946
-7529 6285 2831 0.200979085137746 0.200979085137746
-15928 9754 5382 0.011733427647939 0.011733427647939
-7553 4092 6302 0.0803403744103832 0.0803403744103832
-7580 6315 3820 0.130703255177956 0.130703255177956
-7677 1716 6365 0.197561364927668 0.197561364927668
-7751 5773 6410 0.160605281527339 0.160605281527339
-18359 7774 7775 0.0541753575171131 0.0541753575171131
-7777 6426 2486 0.134234515445665 0.134234515445665
-12252 122 8617 0.0393889261650165 0.0393889261650165
-7883 6494 6495 0.00940457999056201 0.00940457999056201
-7884 6495 5423 0.0969372989858353 0.0969372989858353
-3980 3771 3772 0.0481390459121498 0.0481390459121498
-3981 3772 3777 0.0470016129182315 0.0470016129182315
-7927 1795 6524 0.13760350708633 0.13760350708633
-8001 6561 6562 0.0546858550544455 0.0546858550544455
-11445 8257 385 0.474417191747682 0.474417191747682
-8048 6593 6594 0.0289242599655845 0.0289242599655845
-18526 9154 9352 0.0531084744773735 0.0531084744773735
-8069 6605 6606 1.2681000346061 1.2681000346061
-8092 4244 6622 0.082630423756929 0.082630423756929
-8093 6622 6623 0.0749027437652235 0.0749027437652235
-3996 3787 3788 0.0979026300528609 0.0979026300528609
-3997 3788 3789 0.0995935295086316 0.0995935295086316
-9386 7325 7326 0.0119980817003928 0.0119980817003928
-20477 10789 10826 0.0103983863250137 0.0103983863250137
-20507 10840 10823 0.00612377712997262 0.00612377712997262
-8262 841 6717 0.175943907281508 0.175943907281508
-9533 7395 7396 0.139422525474238 0.139422525474238
-20405 10779 8354 0.0261167106000956 0.0261167106000956
-8335 6764 6765 0.0503863905918892 0.0503863905918892
-8336 6765 6766 0.0491492877930629 0.0491492877930629
-4013 983 3800 0.100500044528257 0.100500044528257
-4014 3800 3801 0.0985249152645202 0.0985249152645202
-15231 8248 8334 0.0146425177596963 0.0146425177596963
-8409 3830 6807 0.0888447463890759 0.0888447463890759
-18321 6063 2543 0.201974991797574 0.201974991797574
-8457 6832 1495 0.201208565152389 0.201208565152389
-19836 2624 5204 0.178927982846839 0.178927982846839
-18379 8493 8494 0.0504160144523199 0.0504160144523199
-8503 6860 6861 0.0162922756173271 0.0162922756173271
-8527 3425 6874 0.0494311548712974 0.0494311548712974
-8599 1237 4811 0.0968243021950299 0.0968243021950299
-8699 1327 6954 0.11293333226081 0.11293333226081
-8743 6978 6843 0.0844431261667327 0.0844431261667327
-8770 6990 6991 0.0486520030390688 0.0486520030390688
-8791 7006 4358 0.202474203830337 0.202474203830337
-8792 4358 7007 0.00688683462760985 0.00688683462760985
-8840 7032 6092 0.0997655880788332 0.0997655880788332
-12243 8612 8613 0.138493887289201 0.138493887289201
-8862 2493 2840 0.128352303826166 0.128352303826166
-8889 7059 4436 0.0844445583973766 0.0844445583973766
-15879 8770 8763 0.0140298928163018 0.0140298928163018
-12248 5788 8274 0.146502988080446 0.146502988080446
-20224 10712 8757 0.0605456526720602 0.0605456526720602
-15789 9625 2105 0.0133775626084498 0.0133775626084498
-9093 4150 2344 0.174578433496429 0.174578433496429
-12934 8900 8688 0.0533584685274483 0.0533584685274483
-18558 10316 10317 0.318647498327865 0.318647498327865
-9165 7197 7198 0.272798906116362 0.272798906116362
-9189 7209 3616 0.0495666126691076 0.0495666126691076
-10453 3743 5856 0.10095556193443 0.10095556193443
-20231 10714 10715 0.0286157939247338 0.0286157939247338
-20392 10774 10770 0.00608971066273246 0.00608971066273246
-9337 4780 1523 0.0520500965787765 0.0520500965787765
-20017 8044 6572 0.144143863155146 0.144143863155146
-20561 10856 10798 0.00573758430075899 0.00573758430075899
-10672 7485 7454 0.0961864249467466 0.0961864249467466
-15863 9737 9743 0.0881669372882309 0.0881669372882309
-9436 7346 4173 0.192934476657366 0.192934476657366
-10721 7452 5690 0.129238470693044 0.129238470693044
-20510 638 10782 0.00926383363589588 0.00926383363589588
-18479 9039 9040 0.136726032574097 0.136726032574097
-9591 7412 5066 0.050234753132255 0.050234753132255
-9612 2128 5998 0.154063403679123 0.154063403679123
-16186 7721 5815 0.197248711738883 0.197248711738883
-9637 1423 7186 0.128478917444104 0.128478917444104
-11449 8259 8260 0.319737139262779 0.319737139262779
-9690 1895 7457 0.0666302144465139 0.0666302144465139
-9691 7457 7458 0.0198488245240688 0.0198488245240688
-19476 10519 10520 0.0516997558936505 0.0516997558936505
-9736 7494 5544 0.102560827713484 0.102560827713484
-16038 9802 9796 0.0179822727083053 0.0179822727083053
-11790 6564 8037 0.143771757250665 0.143771757250665
-9810 7528 7529 0.208257062216787 0.208257062216787
-9836 7542 7543 0.0265476903097887 0.0265476903097887
-18631 9484 7408 0.179068927816078 0.179068927816078
-15241 9537 9539 0.0227628365288052 0.0227628365288052
-20526 1286 10810 0.0112823826001832 0.0112823826001832
-9968 7619 7620 0.0778364486506147 0.0778364486506147
-9969 7620 7621 0.111522724623373 0.111522724623373
-9988 7625 1491 0.204666735578584 0.204666735578584
-10072 7660 2775 0.203041970554709 0.203041970554709
-10073 2775 6897 0.203220599619524 0.203220599619524
-10091 7671 690 0.200329217944331 0.200329217944331
-10115 2354 4156 0.173430880829093 0.173430880829093
-10138 3577 5644 0.141664156461633 0.141664156461633
-10164 7702 7703 0.0486413772868685 0.0486413772868685
-10187 7030 7715 0.0498024158316235 0.0498024158316235
-12249 8274 8295 0.153451254229228 0.153451254229228
-11642 1281 8347 0.0589263897659084 0.0589263897659084
-10281 7757 2638 0.20261361621015 0.20261361621015
-12251 8616 122 0.0306511482720316 0.0306511482720316
-10351 5524 6462 0.155650660428743 0.155650660428743
-11777 5360 8407 0.147060404896327 0.147060404896327
-20362 10734 9209 0.0303997458302742 0.0303997458302742
-10404 4224 7568 0.0462000499013743 0.0462000499013743
-10427 5696 6320 0.173275054190131 0.173275054190131
-16041 9802 9797 0.0106947269448384 0.0106947269448384
-10504 1036 7842 0.0544400914304572 0.0544400914304572
-12047 8526 8527 0.0840721683590618 0.0840721683590618
-10550 4923 5368 0.0856922507743825 0.0856922507743825
-16085 9818 9819 0.0412898984205639 0.0412898984205639
-10600 7873 7874 0.202540822887829 0.202540822887829
-10623 7886 1192 0.167316235534945 0.167316235534945
-20558 10845 2957 0.00878460299692283 0.00878460299692283
-10644 7563 7901 0.105394463133352 0.105394463133352
-12237 1599 8609 0.00546433627657245 0.00546433627657245
-20564 10825 1287 0.00477901915260098 0.00477901915260098
-10749 6942 7958 0.162394709841225 0.162394709841225
-10796 7983 947 0.174677658409185 0.174677658409185
-10817 6492 4607 0.147058520431446 0.147058520431446
-12476 5450 5427 0.050269770055972 0.050269770055972
-10839 6220 8004 0.052907543789053 0.052907543789053
-15731 7157 8801 0.0199400844261404 0.0199400844261404
-16956 10040 9425 0.0116537581995054 0.0116537581995054
-10942 4686 4956 0.099446723287275 0.099446723287275
-16188 7203 1784 0.197361998677517 0.197361998677517
-10964 6721 4791 0.136892276030183 0.136892276030183
-10986 5402 3133 0.105232928623448 0.105232928623448
-20369 10733 10746 0.00402873670536954 0.00402873670536954
-12735 8822 7751 0.202267643963295 0.202267643963295
-16205 7728 5823 0.195806305910918 0.195806305910918
-15885 9619 8879 0.0100154912435563 0.0100154912435563
-16189 1784 4247 0.203808666270494 0.203808666270494
-11109 8035 807 0.0159273560245565 0.0159273560245565
-11132 8133 6270 0.051417429454822 0.051417429454822
-11156 2087 2654 0.0953557861022671 0.0953557861022671
-11157 2654 4115 0.0506170186006763 0.0506170186006763
-11208 8161 8162 0.355822290917686 0.355822290917686
-11220 8169 106 0.241259609778708 0.241259609778708
-11240 8178 8182 0.0195790567337129 0.0195790567337129
-20821 8330 10923 0.00839528658401215 0.00839528658401215
-17791 3305 8508 0.0362477709828647 0.0362477709828647
-11322 8214 5950 0.203024250253409 0.203024250253409
-13061 8944 8945 0.0479106655937031 0.0479106655937031
-11349 1754 4801 0.0245317247967943 0.0245317247967943
-11390 8244 8245 0.0389791405679458 0.0389791405679458
-17817 9286 10185 0.00969626713044654 0.00969626713044654
-11462 8270 701 0.039999373678842 0.039999373678842
-11492 8281 8282 0.00503511807894305 0.00503511807894305
-11538 8302 8303 0.0107298944611382 0.0107298944611382
-11571 7713 8322 0.206137749537799 0.206137749537799
-11573 1766 7715 0.157141019260281 0.157141019260281
-13237 9010 4325 0.222509982407309 0.222509982407309
-11632 1278 4529 0.134276517370514 0.134276517370514
-11724 8374 8375 0.133513247237079 0.133513247237079
-11797 8414 4446 0.0913151320718964 0.0913151320718964
-11798 4446 6565 0.148651456771305 0.148651456771305
-11799 6565 8038 0.145022863674794 0.145022863674794
-13411 4426 9064 0.0342337858603608 0.0342337858603608
-11882 8457 1807 0.101184879886606 0.101184879886606
-13518 7635 7602 0.0983630321096794 0.0983630321096794
-11995 8048 6576 0.143165005086162 0.143165005086162
-12062 8532 3932 0.283100338690813 0.283100338690813
-12064 8532 3745 0.0315839509500456 0.0315839509500456
-12065 3745 8533 0.0402006397458181 0.0402006397458181
-16198 1788 6622 0.140253824514813 0.140253824514813
-12143 2334 7677 0.0942814693046897 0.0942814693046897
-13771 2561 9189 0.0689861433647756 0.0689861433647756
-18571 10322 10326 0.0103554459054315 0.0103554459054315
-15556 9654 9655 0.107168580692288 0.107168580692288
-12220 8596 8597 0.100597506592905 0.100597506592905
-12284 8235 7279 0.114584410389232 0.114584410389232
-12290 8634 8488 0.146216431524827 0.146216431524827
-15445 9605 9606 0.0107985098434616 0.0107985098434616
-12402 8686 2352 0.174110261708509 0.174110261708509
-12403 2352 4154 0.17319721774215 0.17319721774215
-12445 8705 902 0.277961591263562 0.277961591263562
-16201 7209 5822 0.204832695484964 0.204832695484964
-14071 3116 6673 0.099476803467174 0.099476803467174
-12563 729 7060 0.0981255480039199 0.0981255480039199
-12670 8793 5460 0.173942223750684 0.173942223750684
-12698 8808 8810 0.00713796130621387 0.00713796130621387
-12701 2643 8805 0.104981962462916 0.104981962462916
-12721 3633 3295 0.250204598549556 0.250204598549556
-16683 9985 9930 0.0816514509832002 0.0816514509832002
-12762 3506 8170 0.201022944642928 0.201022944642928
-15870 8842 8843 0.0221571458561984 0.0221571458561984
-15950 9765 9766 0.0194093177763062 0.0194093177763062
-12930 3167 8897 0.107237063498964 0.107237063498964
-14520 3985 7053 0.133213475028965 0.133213475028965
-15337 9564 9565 0.0333323202761363 0.0333323202761363
-15952 9765 9758 0.0491105082028732 0.0491105082028732
-13016 8918 8921 0.143291466888449 0.143291466888449
-13097 8917 8959 0.032086215385934 0.032086215385934
-13121 640 8968 0.045462010282231 0.045462010282231
-13175 4472 2794 0.133415072213096 0.133415072213096
-13447 9080 4647 0.227691913723815 0.227691913723815
-19029 7690 8144 0.0861073402797158 0.0861073402797158
-13280 4312 7812 0.197562058294396 0.197562058294396
-20373 10757 10758 0.0390214492856105 0.0390214492856105
-13466 9093 9091 0.0528525628364664 0.0528525628364664
-15458 1970 8766 0.0532545399938913 0.0532545399938913
-13600 2311 6580 0.108271978342533 0.108271978342533
-13622 3355 9148 0.0901126087179192 0.0901126087179192
-15127 8268 225 0.129419996314042 0.129419996314042
-15855 9737 9738 0.0422997339419691 0.0422997339419691
-15953 9758 9764 0.0382745737843307 0.0382745737843307
-13641 9152 327 0.371274069669657 0.371274069669657
-13690 6833 6976 0.085342873664165 0.085342873664165
-15860 9707 9741 0.0544957036472965 0.0544957036472965
-13709 6929 3818 0.116035215256342 0.116035215256342
-15411 7964 9590 0.052042549974644 0.052042549974644
-18495 15 6384 0.132622389900901 0.132622389900901
-18578 10319 10327 0.0490398009212077 0.0490398009212077
-13818 8483 6705 0.147706661087796 0.147706661087796
-13972 9250 9251 0.0609360549506678 0.0609360549506678
-20378 10761 10762 0.0703070927126279 0.0703070927126279
-14062 6351 2574 0.0264285559063396 0.0264285559063396
-4057 542 3837 0.0481841661951123 0.0481841661951123
-20619 10811 10850 0.0311826470096292 0.0311826470096292
-14143 9286 9287 0.00349243594701226 0.00349243594701226
-15782 2533 9708 0.0671466764878958 0.0671466764878958
-18700 1376 9773 0.0602159412724284 0.0602159412724284
-19501 10528 10529 0.0145223093781074 0.0145223093781074
-16094 9821 9496 0.0522797219291825 0.0522797219291825
-16682 9984 9985 0.111071610148866 0.111071610148866
-16220 9022 9008 0.10706671130041 0.10706671130041
-16222 9850 7740 0.404338691233817 0.404338691233817
-16223 7740 5835 0.200008410058821 0.200008410058821
-14438 6143 4017 0.133566629484228 0.133566629484228
-14458 9168 3834 0.0502958887489777 0.0502958887489777
-16499 8709 8890 0.00781309402153006 0.00781309402153006
-14504 9364 2172 0.0261972288759813 0.0261972288759813
-16631 9312 9964 0.536418418139307 0.536418418139307
-16632 9964 9965 0.081644512591407 0.081644512591407
-15472 8892 1971 0.0354218020701201 0.0354218020701201
-14617 9402 9350 0.13375643872535 0.13375643872535
-14954 7265 7584 0.0944614970989242 0.0944614970989242
-4076 3852 3853 0.00162344592902021 0.00162344592902021
-15099 7228 2370 0.054925658104601 0.054925658104601
-16381 9878 9879 0.0338421848775343 0.0338421848775343
-16508 9928 9929 0.0170279633676167 0.0170279633676167
-16525 5158 7669 0.0405110122092171 0.0405110122092171
-16594 9950 9951 0.140650325269802 0.140650325269802
-17419 10101 10102 0.0281887857345848 0.0281887857345848
-16852 9866 6519 0.0479747206312546 0.0479747206312546
-16968 10038 10045 0.00348952632939911 0.00348952632939911
-17638 10159 9498 0.0561256700305383 0.0561256700305383
-17642 8238 524 0.198799957504709 0.198799957504709
-17105 331 10064 0.12693044123038 0.12693044123038
-17422 10082 10083 0.0318734478115971 0.0318734478115971
-17268 4260 3518 0.200851927356296 0.200851927356296
-17398 7305 3261 0.198983160217956 0.198983160217956
-17400 3509 4251 0.199228485757107 0.199228485757107
-17911 4835 9197 0.134589353492833 0.134589353492833
-17544 8941 8264 0.168906883412351 0.168906883412351
-18155 10135 10136 0.408197365852498 0.408197365852498
-17572 10145 10146 0.0800519816931861 0.0800519816931861
-17628 2882 8136 0.162489310093733 0.162489310093733
-18601 10335 7656 0.178628836370645 0.178628836370645
-17816 9287 10184 0.0350560568035198 0.0350560568035198
-17966 6242 10236 0.0113656789072773 0.0113656789072773
-17886 9955 4390 0.0561034767074801 0.0561034767074801
-17918 5173 6867 0.199959252458115 0.199959252458115
-17919 6867 5276 0.0971272913038605 0.0971272913038605
-19066 5495 9469 0.177422724680083 0.177422724680083
-19037 9496 9494 0.0281063525870562 0.0281063525870562
-18774 9642 7121 0.176777734913143 0.176777734913143
-19101 10429 10049 0.0400790686743565 0.0400790686743565
-19617 10477 10588 0.0688805182452796 0.0688805182452796
-19314 6700 5030 0.15289416238876 0.15289416238876
-19425 36 3535 0.208182345564595 0.208182345564595
-19426 3535 4231 0.197905943796208 0.197905943796208
-19462 10478 10483 0.0205384885375563 0.0205384885375563
-19725 4489 10627 0.00886289645656064 0.00886289645656064
-19764 5140 5153 0.0242552277861381 0.0242552277861381
-20136 2752 6988 0.0528412012093399 0.0528412012093399
-19927 4579 8367 0.130318576605927 0.130318576605927
-20000 10690 8645 0.0319530891427096 0.0319530891427096
-4106 1534 3875 0.0874992877759652 0.0874992877759652
-20047 9078 9193 0.27590001979893 0.27590001979893
-397 400 401 0.186988741368815 0.186988741368815
-398 401 402 0.0834459188949902 0.0834459188949902
-400 403 313 0.0512719310633618 0.0512719310633618
-402 404 405 0.135745743044228 0.135745743044228
-404 406 407 0.304825723005793 0.304825723005793
-406 408 409 0.43926972528011 0.43926972528011
-408 410 411 0.386425449179561 0.386425449179561
-410 412 413 0.296429557961552 0.296429557961552
-411 413 414 0.0146716283322865 0.0146716283322865
-412 414 415 0.325808855480319 0.325808855480319
-414 416 328 0.121195048255912 0.121195048255912
-416 329 416 0.287289513548727 0.287289513548727
-417 416 417 0.245312696429149 0.245312696429149
-20053 1955 8185 0.122183214039011 0.122183214039011
-20198 8571 5783 0.145694845246542 0.145694845246542
-14833 7026 8320 0.0139341057083995 0.0139341057083995
-14834 8320 7029 0.0476978989477955 0.0476978989477955
-15442 9600 8606 0.035907314389173 0.035907314389173
-19656 10607 10531 0.00409092160847847 0.00409092160847847
-20737 10917 10886 0.0142612706482701 0.0142612706482701
-14870 9363 2450 0.140513945011527 0.140513945011527
-11514 269 270 0.151462432210479 0.151462432210479
-12364 8672 8674 0.0109017354569362 0.0109017354569362
-12 12 13 0.134681710739383 0.134681710739383
-14892 8103 9009 0.099173697837006 0.099173697837006
-14893 9009 8146 0.0976735888216106 0.0976735888216106
-33 36 37 0.0487053100188426 0.0487053100188426
-14912 7271 7600 0.0956539249415721 0.0956539249415721
-18874 7987 218 0.124810113553517 0.124810113553517
-18876 3520 84 0.204554290109371 0.204554290109371
-15454 8884 9611 0.0785818613777641 0.0785818613777641
-322 154 206 0.0287029588335131 0.0287029588335131
-18627 9483 1310 0.220178764490314 0.220178764490314
-18894 10375 10376 0.00936614397970835 0.00936614397970835
-15122 8269 9491 0.0542877044701678 0.0542877044701678
-18715 7650 8069 0.263314494448216 0.263314494448216
-15971 8998 4214 0.0961806119218467 0.0961806119218467
-551 544 545 0.0205710614294522 0.0205710614294522
-15166 7386 9508 0.0293624650986513 0.0293624650986513
-18679 2589 1852 0.179197761430995 0.179197761430995
-602 593 594 0.0187536593392831 0.0187536593392831
-16091 9818 526 0.0930965533879819 0.0930965533879819
-13959 448 9111 0.0841767201213853 0.0841767201213853
-16119 427 4010 0.113680084788302 0.113680084788302
-17947 10226 10227 0.0385043082181171 0.0385043082181171
-16175 7201 5812 0.201274753121947 0.201274753121947
-699 693 694 0.0993204992661042 0.0993204992661042
-16265 9865 7738 0.345896015945794 0.345896015945794
-16341 9873 8704 0.014474001055321 0.014474001055321
-11688 774 775 0.0224766779818413 0.0224766779818413
-16464 1081 9912 0.0130855777393443 0.0130855777393443
-18428 2983 10286 0.340223280394145 0.340223280394145
-16719 485 10003 0.0666623735199971 0.0666623735199971
-18212 2988 7850 0.201655156198778 0.201655156198778
-18213 7850 6382 0.201197176818258 0.201197176818258
-17132 1799 4238 0.205173852791716 0.205173852791716
-268 278 279 0.0669047721045728 0.0669047721045728
-18436 10287 10292 0.102997198003519 0.102997198003519
-17134 3543 44 0.198313047920784 0.198313047920784
-15194 7392 9524 0.0521516926212219 0.0521516926212219
-19559 10563 10553 0.0196751082256841 0.0196751082256841
-19864 10666 10667 0.12344950946071 0.12344950946071
-1022 827 1037 0.134288205933024 0.134288205933024
-19991 10682 10649 0.0504069045792634 0.0504069045792634
-327 328 329 0.206425005842362 0.206425005842362
-15245 9540 9541 0.00803794786000152 0.00803794786000152
-14681 446 727 0.207769052846247 0.207769052846247
-18636 1846 2580 0.177268272488638 0.177268272488638
-15883 9594 8842 0.0247081602797847 0.0247081602797847
-18445 1124 10289 0.0496295455281554 0.0496295455281554
-15483 9622 9623 0.0434553081653394 0.0434553081653394
-15784 9596 2105 0.0159980383240888 0.0159980383240888
-18450 7849 2986 0.202541671618508 0.202541671618508
-15540 1221 8429 0.105180771417586 0.105180771417586
-17095 3719 3720 0.174398206796096 0.174398206796096
-12950 1330 1331 0.0133918888831226 0.0133918888831226
-19570 10569 7462 0.00803939319633032 0.00803939319633032
-1312 1338 1339 0.0991205046552405 0.0991205046552405
-15958 9768 9769 0.0623405517746533 0.0623405517746533
-325 268 153 0.064083026712354 0.064083026712354
-386 388 389 0.0751873239589982 0.0751873239589982
-1392 1419 1420 0.399589215327938 0.399589215327938
-16282 9096 9098 0.0807475840805468 0.0807475840805468
-391 393 394 0.185819928048464 0.185819928048464
-15753 6671 2023 0.100119371100459 0.100119371100459
-18126 6042 10262 0.201564202628959 0.201564202628959
-17137 4425 1909 0.200241543203617 0.200241543203617
-16013 9783 9784 0.0337977814282775 0.0337977814282775
-12006 8049 6578 0.147083508160087 0.147083508160087
-2343 2334 2335 0.271393460830069 0.271393460830069
-19952 4670 7857 0.100774147000306 0.100774147000306
-20659 8289 5957 0.0879515292456205 0.0879515292456205
-12349 8665 8666 0.0489645255680358 0.0489645255680358
-1536 1559 1560 0.0937807122385258 0.0937807122385258
-2410 2115 2401 0.446933916798798 0.446933916798798
-19581 7470 10575 0.00667183269883622 0.00667183269883622
-1557 1582 1583 0.0811305260417956 0.0811305260417956
-469 472 473 0.100239678379349 0.100239678379349
-569 562 563 0.0844940522055572 0.0844940522055572
-12010 5508 7081 0.146350144860015 0.146350144860015
-2663 2621 2622 0.0420400210402162 0.0420400210402162
-16696 9597 7094 0.00600769898364912 0.00600769898364912
-18883 7310 84 0.202570183098447 0.202570183098447
-16736 7419 10004 0.204798388413466 0.204798388413466
-1623 1651 1652 0.0452674748546477 0.0452674748546477
-12948 1303 1304 0.066448544071591 0.066448544071591
-20711 10885 10914 0.126940460926274 0.126940460926274
-20712 10914 5881 0.00554916008288024 0.00554916008288024
-16509 9929 9930 0.0673766892433469 0.0673766892433469
-1643 1670 1671 0.136647738333876 0.136647738333876
-19534 6856 10550 0.00719456093421717 0.00719456093421717
-19538 4704 10552 0.0168576392161317 0.0168576392161317
-19539 10552 10553 0.00416995013524246 0.00416995013524246
-11689 775 836 0.0388095868373909 0.0388095868373909
-20 21 22 0.0174708821601448 0.0174708821601448
-16449 9906 9907 0.130469688472308 0.130469688472308
-41 44 45 0.0507831501846365 0.0507831501846365
-17298 7736 5829 0.204153885319898 0.204153885319898
-64 70 71 0.046163806906163 0.046163806906163
-18467 10299 10298 0.126605139952982 0.126605139952982
-18685 1316 1372 0.177012768030012 0.177012768030012
-1826 1842 1843 0.155652098486701 0.155652098486701
-19783 3732 10633 0.0548138207459151 0.0548138207459151
-1846 1861 1862 0.0495211888216282 0.0495211888216282
-177 186 187 0.102075274690852 0.102075274690852
-202 214 215 0.233063347854791 0.233063347854791
-271 281 282 0.0968799942510371 0.0968799942510371
-335 336 337 0.26926308578439 0.26926308578439
-14122 3945 503 0.0521094341958735 0.0521094341958735
-1949 1964 1965 0.100541047482359 0.100541047482359
-503 497 498 0.332501427216364 0.332501427216364
-508 502 503 0.0804669922754196 0.0804669922754196
-19271 10424 10425 0.0133101789702176 0.0133101789702176
-19460 10507 10477 0.0195042673008727 0.0195042673008727
-12962 1631 1599 0.105987129966341 0.105987129966341
-11814 2150 2151 0.12777055976042 0.12777055976042
-18730 7649 8066 0.263509830967107 0.263509830967107
-18671 2605 1538 0.176823430683456 0.176823430683456
-20037 816 3558 0.154160936652516 0.154160936652516
-20700 10894 10895 0.0022719801727208 0.0022719801727208
-17029 3606 3607 0.0180484124991241 0.0180484124991241
-850 863 864 0.0616242283467915 0.0616242283467915
-18683 3539 3608 0.177667253998454 0.177667253998454
-20825 9400 10954 0.0122123114573311 0.0122123114573311
-872 885 886 0.105399149486358 0.105399149486358
-19920 2621 10413 0.177079309456246 0.177079309456246
-892 906 907 0.104783494637697 0.104783494637697
-12344 8660 8661 0.0179171962919351 0.0179171962919351
-17141 3089 4509 0.200737491088575 0.200737491088575
-16291 2376 2377 0.00482087191216397 0.00482087191216397
-963 974 975 0.202802632214452 0.202802632214452
-17135 44 4412 0.404761668333185 0.404761668333185
-17088 10071 9940 0.138093381903903 0.138093381903903
-16845 10022 10018 0.0055152683612349 0.0055152683612349
-17952 10226 10230 0.0192923880160408 0.0192923880160408
-20322 10741 10742 0.00907488670500163 0.00907488670500163
-1113 1129 1130 0.204124873969403 0.204124873969403
-16607 7890 9325 0.145145340110648 0.145145340110648
-15260 9550 9551 0.0630135708366092 0.0630135708366092
-19433 10110 10489 0.0489242953920304 0.0489242953920304
-16954 10038 10039 0.0207511303582817 0.0207511303582817
-12357 8669 8668 0.00723037090372959 0.00723037090372959
-1183 1198 1199 0.0305943034250603 0.0305943034250603
-19442 10493 10494 0.0196148764551294 0.0196148764551294
-19443 10494 10495 0.0228284210093234 0.0228284210093234
-2633 2594 2595 0.0115937480855902 0.0115937480855902
-1205 1220 1221 0.0900481853791487 0.0900481853791487
-18180 5796 6056 0.200195877654712 0.200195877654712
-11707 1245 1246 0.0231530055304531 0.0231530055304531
-19444 10495 10496 0.0213401735101805 0.0213401735101805
-19445 10496 10497 0.0182367704590367 0.0182367704590367
-2703 2659 2660 0.155649282617483 0.155649282617483
-19446 10497 10498 0.0203055071588043 0.0203055071588043
-2724 107 2679 0.0450807290855188 0.0450807290855188
-1266 1286 1287 0.0202842890457172 0.0202842890457172
-18451 2986 7704 0.199650644692106 0.199650644692106
-16289 1363 2376 0.00344312944616261 0.00344312944616261
-19447 10498 10499 0.0196160459333464 0.0196160459333464
-14693 2225 4875 0.162113763012991 0.162113763012991
-1308 1334 1335 0.129255645714035 0.129255645714035
-14695 4946 4947 0.168905093573288 0.168905093573288
-1332 1357 1358 0.136424467862451 0.136424467862451
-19448 10499 10487 0.023296750596408 0.023296750596408
-2841 2789 2790 0.0523852002781698 0.0523852002781698
-15843 7795 9723 0.020416694003674 0.020416694003674
-18886 7308 3267 0.201549354300641 0.201549354300641
-19449 10487 10500 0.022940948763835 0.022940948763835
-17307 5827 7735 0.20365816745981 0.20365816745981
-2499 2480 2481 0.265342544498994 0.265342544498994
-19450 10500 10501 0.0189264900266028 0.0189264900266028
-18889 1923 6123 0.200475462008098 0.200475462008098
-1428 1451 1452 0.107578729884622 0.107578729884622
-18647 7412 4053 0.176566575042864 0.176566575042864
-1452 1471 1472 0.147622384612895 0.147622384612895
-19451 10501 10502 0.0200830353316625 0.0200830353316625
-2953 2897 2898 0.0472912053919854 0.0472912053919854
-16310 2439 2721 0.0812562615874829 0.0812562615874829
-12320 1302 1603 0.00893905362813633 0.00893905362813633
-19452 10502 10503 0.0197272337869401 0.0197272337869401
-19453 10503 7482 0.0181814350817939 0.0181814350817939
-19038 9494 229 0.0588468541295868 0.0588468541295868
-1498 1517 1518 0.199413272863754 0.199413272863754
-15846 9732 1098 0.0848710138660927 0.0848710138660927
-19454 7482 10504 0.0196839111368948 0.0196839111368948
-19455 10504 10505 0.017559948119168 0.017559948119168
-13365 9051 9052 0.103390283727961 0.103390283727961
-2998 1652 2935 0.112349122861115 0.112349122861115
-17375 1796 4235 0.206436210016501 0.206436210016501
-13963 9247 9102 0.0619095710643366 0.0619095710643366
-1534 1557 1558 0.0743776380849984 0.0743776380849984
-19916 8774 7640 0.176934657107496 0.176934657107496
-19917 7640 6233 0.179269287981755 0.179269287981755
-1556 1581 1582 0.0903340712116846 0.0903340712116846
-18461 9354 9528 0.135770728089025 0.135770728089025
-19456 10505 7464 0.0643341844968674 0.0643341844968674
-19919 5202 2621 0.177194532329155 0.177194532329155
-1603 1634 1635 0.0667169559865797 0.0667169559865797
-15911 9239 9240 0.00759910247117962 0.00759910247117962
-3133 2004 3061 0.0946875314878615 0.0946875314878615
-1648 1675 1676 0.0232219414191173 0.0232219414191173
-1649 1676 1677 0.104810655650978 0.104810655650978
-18412 7776 7163 0.0985154391997448 0.0985154391997448
-3153 3077 3078 0.0921654003892753 0.0921654003892753
-1666 1129 1692 0.0515669276869657 0.0515669276869657
-256 264 265 0.00881331069899833 0.00881331069899833
-19580 10574 7470 0.0064160385090956 0.0064160385090956
-1690 1714 1715 0.111918529606987 0.111918529606987
-12366 8674 8671 0.0118216471510326 0.0118216471510326
-18801 10352 9812 0.039652100920871 0.039652100920871
-379 381 382 0.0684082960066799 0.0684082960066799
-16308 2827 2851 0.00473328951361683 0.00473328951361683
-20640 10878 10879 0.0287629224507079 0.0287629224507079
-20278 5573 10727 0.00799925463089475 0.00799925463089475
-18122 2538 10266 0.180269607102109 0.180269607102109
-1907 1919 1920 0.101419584890654 0.101419584890654
-16419 3282 3283 0.0297579469637327 0.0297579469637327
-11533 1234 1235 0.136499599599558 0.136499599599558
-18135 4099 6043 0.191045620861521 0.191045620861521
-16763 4439 9868 0.0469300202486105 0.0469300202486105
-257 265 257 0.0618021904449226 0.0618021904449226
-3413 3306 3307 0.147259003832799 0.147259003832799
-1997 2009 2010 0.0436503011483876 0.0436503011483876
-381 383 384 0.174765079599045 0.174765079599045
-3437 3324 3325 0.13969071524798 0.13969071524798
-2020 2029 2030 0.0536884532048604 0.0536884532048604
-14708 5223 5330 0.173633760067415 0.173633760067415
-17179 5410 5449 0.194891408787823 0.194891408787823
-2041 2049 2050 0.203224924896292 0.203224924896292
-15894 9255 9441 0.0812248966226341 0.0812248966226341
-2068 2071 2072 0.108635365611271 0.108635365611271
-383 385 386 0.313694212518365 0.313694212518365
-15938 9757 9756 0.156652526688463 0.156652526688463
-2092 1220 2094 0.120498651922126 0.120498651922126
-16738 725 51 0.242028173240196 0.242028173240196
-19560 10553 10564 0.0204794292027182 0.0204794292027182
-2166 2165 2166 0.0846335919696035 0.0846335919696035
-19638 10597 10526 0.00694709641094844 0.00694709641094844
-3597 3446 2803 0.137873345883867 0.137873345883867
-16317 2510 3005 0.00592207877923616 0.00592207877923616
-17174 5326 5327 0.109586213492937 0.109586213492937
-16740 4437 10005 0.047793833799427 0.047793833799427
-3644 3483 3484 0.202897902969007 0.202897902969007
-2231 2232 2233 0.0942717670146639 0.0942717670146639
-2232 2233 2234 0.0947564865992517 0.0947564865992517
-16741 10005 4510 0.0465117651564764 0.0465117651564764
-2248 2251 2252 0.0515208780131149 0.0515208780131149
-16742 4510 10006 0.0392105126712721 0.0392105126712721
-3687 3523 3524 0.057537938641533 0.057537938641533
-2276 2276 2277 0.201064010739015 0.201064010739015
-18183 6051 5769 0.201340675613812 0.201340675613812
-18863 9178 2185 0.000908525082812035 0.000908525082812035
-14108 502 3544 0.223192299132 0.223192299132
-16417 3130 3281 0.0400386431725339 0.0400386431725339
-16286 1362 1363 0.0694355006798695 0.0694355006798695
-3729 3563 3564 0.1023601599905 0.1023601599905
-13961 9112 9247 0.133632751867418 0.133632751867418
-2325 1348 1614 0.104366499106977 0.104366499106977
-18909 10388 10381 0.014813120492833 0.014813120492833
-18903 10381 10380 0.00882005349877488 0.00882005349877488
-18454 4296 10295 0.0897566766881454 0.0897566766881454
-14692 941 2225 0.184174515609916 0.184174515609916
-19558 10562 10563 0.0196153093677919 0.0196153093677919
-16743 10006 7566 0.0419162617939555 0.0419162617939555
-19568 7474 10568 0.0062936328481519 0.0062936328481519
-18905 10382 10383 0.00831887899673018 0.00831887899673018
-17147 4241 3546 0.202185735299221 0.202185735299221
-14720 937 2221 0.184339220920538 0.184339220920538
-18637 2580 7383 0.244324669292135 0.244324669292135
-2484 2467 2468 0.0154146632189528 0.0154146632189528
-17183 5608 5658 0.149882473899379 0.149882473899379
-3908 3707 3708 0.138080579549583 0.138080579549583
-2555 2532 2533 0.191131540477931 0.191131540477931
-2556 2533 254 0.098486007419044 0.098486007419044
-19573 10570 7473 0.00674972719310255 0.00674972719310255
-2577 1090 2550 0.0509764502640852 0.0509764502640852
-17311 5685 5705 0.205154639659543 0.205154639659543
-20594 10852 10864 0.00559477666444464 0.00559477666444464
-2602 2568 2565 0.0838899757725962 0.0838899757725962
-13584 9079 9135 0.0736016285399027 0.0736016285399027
-3952 3748 3749 0.123087650580437 0.123087650580437
-2626 2587 2588 0.00484286584971978 0.00484286584971978
-2627 2588 2589 0.0472712028951763 0.0472712028951763
-18404 10286 7165 0.0480937532986949 0.0480937532986949
-18406 9349 8340 0.136218529796162 0.136218529796162
-13586 9135 9136 0.116423294527986 0.116423294527986
-14719 5893 937 0.0748599535472642 0.0748599535472642
-2721 2676 2677 0.00391406141859358 0.00391406141859358
-18735 4002 7603 0.202077020511888 0.202077020511888
-17677 6029 10165 0.522362145407342 0.522362145407342
-17480 344 5940 0.0510780896194201 0.0510780896194201
-2823 2771 2261 0.100546651913918 0.100546651913918
-18144 10275 10261 0.405650212701817 0.405650212701817
-12350 8663 8667 0.00958750951684791 0.00958750951684791
-4125 3888 3889 0.19728512260693 0.19728512260693
-2839 2788 1047 0.105687024742303 0.105687024742303
-2840 1047 2789 0.0528381886609336 0.0528381886609336
-12351 8667 8668 0.0176529909929813 0.0176529909929813
-19572 10564 10570 0.0698992084212194 0.0698992084212194
-16413 9458 9887 0.0468003057153474 0.0468003057153474
-2910 785 2854 0.0936375066158938 0.0936375066158938
-12361 8671 8672 0.0146217858658369 0.0146217858658369
-2955 2899 2900 0.139071498957734 0.139071498957734
-20621 10800 10799 0.0197706815366264 0.0197706815366264
-16441 5747 9898 0.0366397439833697 0.0366397439833697
-3003 2938 2939 0.343360355018568 0.343360355018568
-20697 4524 10911 0.0102002426471616 0.0102002426471616
-20441 10798 10799 0.0151893809033584 0.0151893809033584
-3052 2983 2984 0.049669116788992 0.049669116788992
-17130 4371 4372 0.0862019013563638 0.0862019013563638
-3072 3004 3006 0.148595619798792 0.148595619798792
-20009 9620 10046 0.0380951574175552 0.0380951574175552
-4390 4106 695 0.201687631399372 0.201687631399372
-18702 2606 1861 0.182749323037212 0.182749323037212
-3122 2901 3051 0.104668558602022 0.104668558602022
-20265 5574 10723 0.0117861788911356 0.0117861788911356
-20266 10724 7552 0.00870010659628447 0.00870010659628447
-19624 10591 10497 0.00644185269782912 0.00644185269782912
-19579 10573 10574 0.0879788736402366 0.0879788736402366
-18895 10376 10377 0.0641298068195797 0.0641298068195797
-20011 10694 10695 0.0242395353024572 0.0242395353024572
-17687 6171 6172 0.0391351463481426 0.0391351463481426
-3160 3084 3085 0.0490903700114876 0.0490903700114876
-19594 10580 10495 0.00720293691626167 0.00720293691626167
-3180 3100 3101 0.129889039932712 0.129889039932712
-17168 5241 5262 0.201125324676422 0.201125324676422
-17121 1798 4176 0.205688375484509 0.205688375484509
-3202 3118 3119 0.112364882779035 0.112364882779035
-14726 5162 6220 0.0504817306174529 0.0504817306174529
-3225 3140 3141 0.161478257380345 0.161478257380345
-13781 438 3176 0.297045355127737 0.297045355127737
-19813 5371 10633 0.121358837066421 0.121358837066421
-3298 3207 2047 0.106039987596014 0.106039987596014
-17169 5262 1912 0.201876443466571 0.201876443466571
-4605 3695 4261 0.0511463408235916 0.0511463408235916
-3320 3225 3226 0.12416264535459 0.12416264535459
-19269 10421 10423 0.00254934916501421 0.00254934916501421
-18686 1372 4116 0.0631464225691973 0.0631464225691973
-20456 10811 10791 0.0266421174352104 0.0266421174352104
-20624 10873 10804 0.10579809531994 0.10579809531994
-18140 10260 10273 0.404128367861769 0.404128367861769
-4673 4035 4316 0.0606123696093501 0.0606123696093501
-3387 3285 3286 0.00355897702027561 0.00355897702027561
-3388 3286 3287 0.0772193168955733 0.0772193168955733
-18146 10276 10258 0.404206655907194 0.404206655907194
-4696 808 3552 0.152717552993661 0.152717552993661
-3410 3303 3304 0.147141483236073 0.147141483236073
-20283 10722 10688 0.0815558763222832 0.0815558763222832
-20448 10804 10757 0.0136201124223367 0.0136201124223367
-20785 10292 10946 0.00447271282341959 0.00447271282341959
-19630 10593 10504 0.00657829834277663 0.00657829834277663
-3431 3318 3319 0.157091916454475 0.157091916454475
-20450 10805 10806 0.0327940652155406 0.0327940652155406
-4743 1385 4362 0.103327121803573 0.103327121803573
-18254 6754 8093 0.140439193425512 0.140439193425512
-18250 9369 6873 0.0520299718080319 0.0520299718080319
-20787 10932 5700 0.00677435562999442 0.00677435562999442
-3475 3354 3355 0.201619360833214 0.201619360833214
-14728 6303 5053 0.0505955795491821 0.0505955795491821
-3501 59 3374 0.0977645612190622 0.0977645612190622
-4808 4414 4415 0.102078381821333 0.102078381821333
-3525 3393 3394 0.0602077843108352 0.0602077843108352
-18251 6873 8493 0.0500003986375519 0.0500003986375519
-3545 656 1887 0.0518725917476049 0.0518725917476049
-14732 5467 6342 0.17284299485541 0.17284299485541
-3566 1664 1683 0.0314909646044893 0.0314909646044893
-17138 1909 4488 0.199449310001805 0.199449310001805
-18256 7043 3984 0.199449230757582 0.199449230757582
-4925 3762 2559 0.0885452473584724 0.0885452473584724
-18261 6496 2547 0.410253746717568 0.410253746717568
-3637 3478 3266 0.200452444377038 0.200452444377038
-3638 3266 3479 0.201663130575812 0.201663130575812
-20636 4518 10876 0.0502632727704227 0.0502632727704227
-3656 1794 3493 0.171297280470528 0.171297280470528
-18171 6061 4076 0.198476287736927 0.198476287736927
-20376 10759 10760 0.116931333825994 0.116931333825994
-3702 3537 3538 0.048566556365416 0.048566556365416
-20385 10293 10769 0.0538892457987372 0.0538892457987372
-18174 6420 6455 0.4094647827628 0.4094647827628
-5048 4577 4578 0.133343896044873 0.133343896044873
-3745 3575 3576 0.0911473636959273 0.0911473636959273
-3747 3577 3469 0.101252045857741 0.101252045857741
-20384 10767 10768 0.0160296914364663 0.0160296914364663
-17309 4261 5684 0.20074031502923 0.20074031502923
-18311 7054 7244 0.0289643230302344 0.0289643230302344
-20470 10819 10820 0.0323669425461701 0.0323669425461701
-14736 4161 4770 0.262098569801346 0.262098569801346
-5118 4637 4638 0.0862888373921514 0.0862888373921514
-18265 6532 1691 0.20439620202731 0.20439620202731
-20472 10821 10822 0.0473810496096361 0.0473810496096361
-5168 2615 4670 0.0537518017226415 0.0537518017226415
-18530 9153 9524 0.0561612407510351 0.0561612407510351
-17081 882 4467 0.138148999917071 0.138148999917071
-20012 10207 7896 0.145636470907972 0.145636470907972
-20423 10784 10785 0.00445123207828982 0.00445123207828982
-19137 10436 10430 0.0315234230528839 0.0315234230528839
-17145 4684 1801 0.196612355705575 0.196612355705575
-3889 3694 83 0.201794860941248 0.201794860941248
-18574 10316 10323 0.0808271649311999 0.0808271649311999
-17148 3546 46 0.198774198414449 0.198774198414449
-3912 3710 3711 0.148294717491307 0.148294717491307
-20615 10786 10857 0.0479734082124594 0.0479734082124594
-18267 6545 2438 0.164157220604829 0.164157220604829
-17099 332 3745 0.0956275481171213 0.0956275481171213
-14740 6607 3802 0.199799384709315 0.199799384709315
-18269 5736 5525 0.155855016610815 0.155855016610815
-5281 4748 4749 0.0137701294893219 0.0137701294893219
-3961 3755 3756 0.201785607236284 0.201785607236284
-3963 3757 1865 0.238183107088451 0.238183107088451
-18538 10309 10310 0.222695826046938 0.222695826046938
-4053 3833 3834 0.0227974048946719 0.0227974048946719
-18576 10324 10320 0.158325840757882 0.158325840757882
-5401 3070 4833 0.174791291148441 0.174791291148441
-20827 9001 9205 0.0113889892669974 0.0113889892669974
-16010 9780 9781 0.00910284197008254 0.00910284197008254
-18606 8065 6592 0.262343816062173 0.262343816062173
-18608 2631 5208 0.201029440504885 0.201029440504885
-20328 10745 10742 0.0339039031846942 0.0339039031846942
-4098 1552 3870 0.130787042699874 0.130787042699874
-16079 9815 9284 0.0214365694827313 0.0214365694827313
-18703 1861 7871 0.177358977412927 0.177358977412927
-5445 4865 4866 0.0483753395839426 0.0483753395839426
-4124 2246 3888 0.176179418850458 0.176179418850458
-18692 1856 5978 0.157563244482301 0.157563244482301
-5513 4918 1222 0.0334183748575429 0.0334183748575429
-4193 3941 3942 0.10150841538758 0.10150841538758
-18280 6739 6757 0.185196443942793 0.185196443942793
-18287 3986 6762 0.199195011240905 0.199195011240905
-4211 3961 3962 0.203354581445588 0.203354581445588
-18282 6460 6792 0.289344591592559 0.289344591592559
-18709 7654 7506 0.191266971634704 0.191266971634704
-4258 4004 4005 0.0557864946968893 0.0557864946968893
-18293 6900 6901 0.125065642459057 0.125065642459057
-4279 4022 4023 0.136471513645059 0.136471513645059
-18285 6794 6824 0.0676234540262284 0.0676234540262284
-20412 10780 10737 0.00327519593576582 0.00327519593576582
-5639 1165 885 0.138504687840451 0.138504687840451
-18705 4059 9745 0.17218742858343 0.17218742858343
-5680 5036 5037 0.13925145495263 0.13925145495263
-4340 4070 4006 0.0527657969561626 0.0527657969561626
-4341 4006 4071 0.045563339939639 0.045563339939639
-18706 9745 3863 0.0360430655172132 0.0360430655172132
-4363 4087 1214 0.050228703045046 0.050228703045046
-18708 6218 7654 0.273874816557472 0.273874816557472
-14701 5065 986 0.133961657579708 0.133961657579708
-4385 4078 4080 0.499220390775423 0.499220390775423
-17161 5086 5087 0.0305453434226413 0.0305453434226413
-4410 4124 3048 0.142041157035339 0.142041157035339
-18547 10315 7542 0.326789019301198 0.326789019301198
-5780 4917 5106 0.0912724900005868 0.0912724900005868
-4431 4139 2389 0.109327413388579 0.109327413388579
-5754 5082 5083 0.0244848814587712 0.0244848814587712
-18548 7542 5567 0.0788647232749776 0.0788647232749776
-5829 5144 5145 0.0718528722690416 0.0718528722690416
-4478 4170 4171 0.114300734663783 0.114300734663783
-14104 421 3767 0.239382300921688 0.239382300921688
-5849 1966 5160 0.213373795201997 0.213373795201997
-4498 1369 4184 0.105991036166523 0.105991036166523
-17123 3542 42 0.197838013671145 0.197838013671145
-18295 1428 6901 0.00619376962359973 0.00619376962359973
-18296 6901 6968 0.214788257098635 0.214788257098635
-5920 5198 5199 0.0509206897939403 0.0509206897939403
-4576 4176 1777 0.0501165848501884 0.0501165848501884
-20629 10873 10847 0.0359844691550279 0.0359844691550279
-18356 7764 7765 0.203486837058476 0.203486837058476
-18353 7040 3427 0.201724758100166 0.201724758100166
-6017 3447 5269 0.0916999906376171 0.0916999906376171
-4669 4312 4313 0.0844811623232087 0.0844811623232087
-18355 7763 7764 0.18255985476615 0.18255985476615
-20388 10772 10773 0.00806462172146812 0.00806462172146812
-4690 1574 4327 0.172428634063548 0.172428634063548
-14761 7128 660 0.183084210873309 0.183084210873309
-18307 7041 3428 0.200871545358079 0.200871545358079
-4768 2038 4380 0.146902820961905 0.146902820961905
-18357 7765 7253 0.0959812077322034 0.0959812077322034
-17178 5409 5410 0.041431272963648 0.041431272963648
-4841 4434 4435 0.0243817622036277 0.0243817622036277
-19636 10595 10596 0.0236895488952709 0.0236895488952709
-20494 10814 10837 0.00453902687683386 0.00453902687683386
-12316 8640 8559 0.0170391288088959 0.0170391288088959
-4864 4448 4449 0.051463626660104 0.051463626660104
-14105 3767 490 0.17231974049998 0.17231974049998
-18310 7244 7054 0.0289643230302344 0.0289643230302344
-4906 3886 865 0.080856531304005 0.080856531304005
-14762 660 7162 0.177556995744578 0.177556995744578
-14106 490 492 0.200841500024827 0.200841500024827
-6278 5468 5223 0.0507325637005759 0.0507325637005759
-20498 2955 10783 0.00926966063781334 0.00926966063781334
-18511 9529 10302 0.134870017545438 0.134870017545438
-18559 10317 10318 0.0818849597364774 0.0818849597364774
-5006 4551 4552 0.0605833275140723 0.0605833275140723
-20497 10805 2955 0.011923850145444 0.011923850145444
-6365 1258 377 0.0777271141684953 0.0777271141684953
-5032 3218 4567 0.203476554448063 0.203476554448063
-18309 3989 7244 0.103816807067418 0.103816807067418
-6389 5536 5537 0.0941709460297732 0.0941709460297732
-5052 4580 4581 0.0994044886957745 0.0994044886957745
-19827 9253 7642 0.176656738058614 0.176656738058614
-18315 7190 1430 0.126827993445383 0.126827993445383
-18691 2597 1856 0.178902858758576 0.178902858758576
-6529 1038 5638 0.106710156184621 0.106710156184621
-5211 4703 4704 0.0593965930317325 0.0593965930317325
-18320 7455 6063 0.193748278871749 0.193748278871749
-5307 4763 4764 0.0623737801227747 0.0623737801227747
-20402 10771 10761 0.045832556045337 0.045832556045337
-6659 5732 716 0.0227471694550216 0.0227471694550216
-5331 3596 4783 0.0944705655668644 0.0944705655668644
-14107 492 502 0.277229511676695 0.277229511676695
-6732 5783 5784 0.103949862025848 0.103949862025848
-14767 7420 4860 0.190666070334235 0.190666070334235
-20406 8354 10772 0.00730920335045724 0.00730920335045724
-6754 5799 5800 0.0473962648551068 0.0473962648551068
-14769 7430 4858 0.18998910813567 0.18998910813567
-5443 4863 4864 0.0452091651037792 0.0452091651037792
-19834 10654 9725 0.196434640947063 0.196434640947063
-6799 2741 5836 0.0500630331544159 0.0500630331544159
-20523 2708 10752 0.00659207654644855 0.00659207654644855
-18323 7479 7480 0.203575671880267 0.203575671880267
-18329 6073 7593 0.194237102947714 0.194237102947714
-5506 4912 2121 0.0993922299820147 0.0993922299820147
-19837 5204 5602 0.169326060361496 0.169326060361496
-6868 3299 5873 0.0385426751655708 0.0385426751655708
-5529 4929 4930 0.0186787878300106 0.0186787878300106
-5530 4930 4931 0.150638241291928 0.150638241291928
-20519 10815 10845 0.0426977620157165 0.0426977620157165
-6909 5905 5906 0.0925705753401188 0.0925705753401188
-5581 4968 4969 0.19364655602673 0.19364655602673
-20802 10942 606 0.00932539286509621 0.00932539286509621
-20522 10808 2708 0.0062556157491122 0.0062556157491122
-5631 3571 5004 0.140817256140417 0.140817256140417
-18338 2435 7632 0.201752260263955 0.201752260263955
-20016 2696 8044 0.148197142125826 0.148197142125826
-5653 2345 4151 0.175358365382788 0.175358365382788
-18327 1432 7191 0.123062885737589 0.123062885737589
-6998 2684 5970 0.144359466732262 0.144359466732262
-5670 679 5028 0.00422540721209624 0.00422540721209624
-5671 5028 5029 0.199984733552555 0.199984733552555
-20382 10765 10766 0.0345648031474255 0.0345648031474255
-18350 7716 6756 0.141149359906032 0.141149359906032
-5748 5078 5079 0.20268033504505 0.20268033504505
-18163 10259 6036 0.2014076606309 0.2014076606309
-14704 5105 3799 0.199599075644316 0.199599075644316
-18162 2170 10259 0.118558518008842 0.118558518008842
-20019 4453 5501 0.145746885757253 0.145746885757253
-5830 5145 2118 0.0459910302398271 0.0459910302398271
-20020 5501 7075 0.147873409818305 0.147873409818305
-14776 5927 3806 0.151596310173331 0.151596310173331
-5853 4622 5163 0.10255879316328 0.10255879316328
-18343 7662 5247 0.110734380038432 0.110734380038432
-20022 8291 7898 0.145585163841291 0.145585163841291
-7192 6084 6085 0.188916282974339 0.188916282974339
-18345 6874 1684 0.205522453761373 0.205522453761373
-20542 2953 10853 0.0105529318413212 0.0105529318413212
-18348 2429 7700 0.202520445331427 0.202520445331427
-20024 8856 9319 0.148299248554164 0.148299248554164
-7238 4839 1519 0.0519761467059316 0.0519761467059316
-14772 923 5925 0.177924520685585 0.177924520685585
-20544 10831 10809 0.07258379165013 0.07258379165013
-5934 4646 3645 0.198637387669602 0.198637387669602
-20537 10850 10851 0.00393462806086889 0.00393462806086889
-7284 6141 11 0.135513694564746 0.135513694564746
-5958 5230 5231 0.202816769336327 0.202816769336327
-20538 10764 10852 0.00745697116010785 0.00745697116010785
-7311 5071 6157 0.164940273242935 0.164940273242935
-5976 4624 1247 0.13286062727511 0.13286062727511
-5978 4556 2725 0.132159028738313 0.132159028738313
-20539 10852 10833 0.00647861100893927 0.00647861100893927
-7339 6169 6170 0.0619567458929491 0.0619567458929491
-5998 5256 5257 0.103904946256075 0.103904946256075
-19289 10469 10470 0.0657689911002152 0.0657689911002152
-20550 10854 10842 0.00418096419493106 0.00418096419493106
-6016 5268 3447 0.109289564409357 0.109289564409357
-20541 10846 2953 0.0102415664506872 0.0102415664506872
-6042 2870 5284 0.0497761483323909 0.0497761483323909
-20446 10802 10794 0.010877497210246 0.010877497210246
-6066 1342 5306 0.205811743638723 0.205811743638723
-20547 2961 10838 0.0117661269256179 0.0117661269256179
-7483 6261 1188 0.16816674729097 0.16816674729097
-6138 3644 4554 0.0976185559336041 0.0976185559336041
-18364 7802 1660 0.0598129332818693 0.0598129332818693
-7554 6302 1356 0.0804502555219789 0.0804502555219789
-6209 5412 1185 0.167137462035015 0.167137462035015
-6210 1185 5413 0.0233182677092941 0.0233182677092941
-14730 6318 6303 0.0522173167652759 0.0522173167652759
-20234 10715 10714 0.0286157939247338 0.0286157939247338
-20565 1287 10855 0.00858462136960439 0.00858462136960439
-6251 5443 779 0.0160681132894306 0.0160681132894306
-14783 4856 7862 0.182896538603858 0.182896538603858
-6272 5463 5464 0.0498340640254978 0.0498340640254978
-20235 10714 8820 0.0168131405425372 0.0168131405425372
-6293 5477 3890 0.10549800375505 0.10549800375505
-16545 7835 9934 0.137971408959184 0.137971408959184
-6362 351 5522 0.0335008525021526 0.0335008525021526
-16018 9787 9788 0.0995758326234823 0.0995758326234823
-6387 5535 2028 0.107888528337289 0.107888528337289
-20242 10717 10716 0.029516495512001 0.029516495512001
-7774 5212 6424 0.109568567873903 0.109568567873903
-16546 9934 9935 0.139302196645357 0.139302196645357
-20562 10798 10807 0.0058401189840652 0.0058401189840652
-15113 3050 7229 0.0133472139691031 0.0133472139691031
-20245 8372 6959 0.0489264341729089 0.0489264341729089
-11422 8078 8079 0.0484137060021889 0.0484137060021889
-6473 5599 5600 0.108658521887425 0.108658521887425
-15115 7996 7997 0.209391166364433 0.209391166364433
-18367 7754 8093 0.0507390772270922 0.0507390772270922
-20352 10751 9401 0.00837355044160468 0.00837355044160468
-6492 5616 5617 0.0720767157725574 0.0720767157725574
-14721 2221 4871 0.160443069505019 0.160443069505019
-18368 8093 6894 0.0518148786998363 0.0518148786998363
-16020 9789 9788 0.073636854952175 0.073636854952175
-7896 6503 6504 0.201046575537805 0.201046575537805
-16547 9935 3668 0.222625726498778 0.222625726498778
-11416 8000 8034 0.303468507056762 0.303468507056762
-6579 5669 5670 0.150406237761818 0.150406237761818
-20845 10954 10937 0.131662909083966 0.131662909083966
-6604 5693 4324 0.222481680681729 0.222481680681729
-18371 5250 7594 0.0499247461563453 0.0499247461563453
-15222 8101 8102 0.077833708774634 0.077833708774634
-18372 7594 5883 0.083286408265142 0.083286408265142
-6714 5766 2843 0.181402526618843 0.181402526618843
-14742 5935 931 0.176525948040391 0.176525948040391
-20409 8971 8976 0.00824136098890487 0.00824136098890487
-17573 10146 4643 0.00925827675066928 0.00925827675066928
-8175 6672 3101 0.17546713620256 0.17546713620256
-11210 300 106 0.00724031766776508 0.00724031766776508
-8223 6696 951 0.177624298281023 0.177624298281023
-6856 4317 5865 0.0513037576080921 0.0513037576080921
-18335 7611 1689 0.102723820359578 0.102723820359578
-20356 10752 10753 0.178510491347886 0.178510491347886
-6873 5878 5879 0.686284794666677 0.686284794666677
-11609 3416 7035 0.200128365503357 0.200128365503357
-11610 7035 8338 0.189938999172283 0.189938999172283
-6895 5896 4960 0.0956843495121368 0.0956843495121368
-11335 8218 251 0.176906123725318 0.176906123725318
-17668 10162 10161 0.0392525789715303 0.0392525789715303
-8321 6751 5251 0.0499574491010493 0.0499574491010493
-17670 8260 9051 0.230562637224967 0.230562637224967
-8340 6769 5533 0.120999789974565 0.120999789974565
-11366 7971 1892 0.0488719799669425 0.0488719799669425
-6977 4442 5511 0.147695461409276 0.147695461409276
-14750 2214 929 0.185352492811126 0.185352492811126
-7030 4913 5988 0.198333075719104 0.198333075719104
-18693 5978 6025 0.00688297127309608 0.00688297127309608
-11612 3418 742 0.19996057055502 0.19996057055502
-20437 10795 10796 0.0230619881865373 0.0230619881865373
-11948 8496 8497 0.0216014239716138 0.0216014239716138
-7132 1290 6044 0.0502638300231986 0.0502638300231986
-11686 1032 773 0.0128283485920152 0.0128283485920152
-8554 4804 6890 0.135875328970406 0.135875328970406
-11767 2687 8406 0.0738017906986337 0.0738017906986337
-8601 2178 596 0.0528183519637533 0.0528183519637533
-7225 6106 6107 0.101643082422806 0.101643082422806
-11821 8422 8423 0.175711465733647 0.175711465733647
-8624 109 720 0.104166949267626 0.104166949267626
-18552 7705 2988 0.199131268231619 0.199131268231619
-14770 4858 2209 0.16101488662795 0.16101488662795
-7328 6165 6166 0.0995968460919669 0.0995968460919669
-12286 8526 8525 0.0214801658544325 0.0214801658544325
-7376 337 6196 0.0756391181616623 0.0756391181616623
-12217 8592 8593 0.114913209514243 0.114913209514243
-12317 8559 2500 0.0435792910401613 0.0435792910401613
-8839 528 7032 0.050727128416239 0.050727128416239
-7478 6259 1180 0.207751884347626 0.207751884347626
-18554 9429 7706 0.20403157089995 0.20403157089995
-15821 8564 8565 0.0641361466923926 0.0641361466923926
-8860 7045 7046 0.134234542647931 0.134234542647931
-7498 4598 3688 0.240872387579393 0.240872387579393
-7499 3688 6270 0.142331405185985 0.142331405185985
-20649 10880 1676 0.0578550543011222 0.0578550543011222
-12236 8586 1599 0.0967599085697604 0.0967599085697604
-7572 5861 1309 0.178473387298321 0.178473387298321
-18324 7480 7524 0.15130858595047 0.15130858595047
-7598 6323 6324 0.205483069278936 0.205483069278936
-17836 9362 1627 0.0523901213643909 0.0523901213643909
-14759 7101 5464 0.170276074046912 0.170276074046912
-14760 5464 7128 0.178804240685068 0.178804240685068
-7640 6024 3875 0.0993805589791004 0.0993805589791004
-16021 9788 9790 0.320911397883896 0.320911397883896
-9035 7131 7132 0.0496921831493493 0.0496921831493493
-18491 9168 9169 0.133423914370859 0.133423914370859
-17837 1627 5679 0.10292857902181 0.10292857902181
-9059 2896 5632 0.0842038197459281 0.0842038197459281
-20806 7427 10935 0.00559704943884798 0.00559704943884798
-12938 1970 8709 0.0935507240006809 0.0935507240006809
-11439 511 8252 0.25940626826434 0.25940626826434
-7695 5168 6377 0.177825109084943 0.177825109084943
-20708 7442 10913 0.0784445493600802 0.0784445493600802
-9099 6388 7159 0.131345505242465 0.131345505242465
-11441 8256 8255 0.0395721958074786 0.0395721958074786
-19809 5615 9635 0.105426130739244 0.105426130739244
-9145 5720 7186 0.100417695742859 0.100417695742859
-11443 8254 8257 0.03964069530807 0.03964069530807
-7788 6432 6433 0.0533345329573706 0.0533345329573706
-12939 8709 8766 0.0775671350558112 0.0775671350558112
-9187 7207 7208 0.0500116374722849 0.0500116374722849
-7811 838 6446 0.0830965282034823 0.0830965282034823
-7816 6449 2813 0.0739587262737054 0.0739587262737054
-12260 8617 8618 0.00726192949201925 0.00726192949201925
-20803 606 10913 0.0113017508087441 0.0113017508087441
-9235 7240 7241 0.0498075431237363 0.0498075431237363
-7861 6474 6475 0.692905896897531 0.692905896897531
-12942 8804 1331 0.0594619846778877 0.0594619846778877
-12264 8622 8616 0.0863852743591186 0.0863852743591186
-7908 6511 6512 0.107336468131195 0.107336468131195
-20811 10951 7034 0.00453220039269765 0.00453220039269765
-13006 8912 8913 0.031616887141609 0.031616887141609
-7929 4175 6525 0.0337195393803404 0.0337195393803404
-20394 10762 10775 0.00651572160316994 0.00651572160316994
-20400 3591 10771 0.0086403574168429 0.0086403574168429
-8000 6560 6561 0.05117078549911 0.05117078549911
-18914 10389 10392 0.00619620469246147 0.00619620469246147
-8024 6580 6581 0.135411748293681 0.135411748293681
-8047 5711 6593 0.0649690182450408 0.0649690182450408
-20509 10841 638 0.00591881170263726 0.00591881170263726
-12270 8627 8518 0.0752716608672627 0.0752716608672627
-15918 9104 9746 0.00764030702792677 0.00764030702792677
-8143 6654 1583 0.150966803397046 0.150966803397046
-18477 2411 5542 0.101313827089111 0.101313827089111
-15876 8978 9002 0.0205305754568531 0.0205305754568531
-8295 6735 6736 0.0734967400485445 0.0734967400485445
-12273 8629 8517 0.0368940227401467 0.0368940227401467
-8322 5251 6752 0.0513511942917184 0.0513511942917184
-17214 3774 8403 0.176505403414048 0.176505403414048
-11789 4445 6564 0.147259159007996 0.147259159007996
-8396 516 6411 0.245438474982929 0.245438474982929
-19810 9635 9643 0.17762409301406 0.17762409301406
-19811 9643 7122 0.176833292049994 0.176833292049994
-9834 7540 7541 0.0505839701248518 0.0505839701248518
-8443 1465 5441 0.103147915206822 0.103147915206822
-13470 9094 9095 0.186249123099868 0.186249123099868
-9909 7585 3060 0.206196737198557 0.206196737198557
-8516 6868 4142 0.0958725861464383 0.0958725861464383
-18481 9120 6391 0.130087180946324 0.130087180946324
-8559 1248 4557 0.13273864991069 0.13273864991069
-18488 9153 9154 0.0316379611455697 0.0316379611455697
-10040 7380 7647 0.073513516250253 0.073513516250253
-8638 6926 6927 0.0519431626477688 0.0519431626477688
-8640 6928 2302 0.107037203280329 0.107037203280329
-18492 9169 9170 0.136492159060533 0.136492159060533
-8683 1000 4222 0.0557449369548998 0.0557449369548998
-15905 8603 8604 0.0748338508215397 0.0748338508215397
-13757 8439 9181 0.0861617636196398 0.0861617636196398
-10162 2158 7701 0.118289099292956 0.118289099292956
-8752 6982 6983 0.20266520881126 0.20266520881126
-12326 8650 8651 0.106050821827968 0.106050821827968
-18298 6995 6996 0.187375849458261 0.187375849458261
-14103 418 421 0.212232135618177 0.212232135618177
-11436 8255 7984 0.498708139076575 0.498708139076575
-18497 9201 9212 0.134547599555241 0.134547599555241
-19881 2617 10410 0.177201589274352 0.177201589274352
-8821 13 7020 0.00925156011318802 0.00925156011318802
-14676 5941 3794 0.153141383772443 0.153141383772443
-8846 6085 742 0.0513498235273795 0.0513498235273795
-19287 9967 10468 0.111280897910296 0.111280897910296
-8898 267 7062 0.0377688740912094 0.0377688740912094
-20847 10946 10950 0.100177888201708 0.100177888201708
-18612 1850 9261 0.181237135841786 0.181237135841786
-18361 7374 7802 0.0447005696877022 0.0447005696877022
-8973 7099 900 0.0469763030340631 0.0469763030340631
-14047 4836 389 0.0490717904305928 0.0490717904305928
-12310 8644 8645 0.447909393812679 0.447909393812679
-8996 7110 7111 0.00729890302499032 0.00729890302499032
-8997 7111 7112 0.0821157489631964 0.0821157489631964
-19296 10470 10471 0.0561834077462884 0.0561834077462884
-9018 7120 3944 0.0625799505809278 0.0625799505809278
-20228 8758 8818 0.0478043651923457 0.0478043651923457
-14140 9284 9285 0.260183964007922 0.260183964007922
-10472 1612 7829 0.00870018444151776 0.00870018444151776
-9067 7146 1144 0.138617590256283 0.138617590256283
-9068 1144 873 0.140306927162159 0.140306927162159
-16081 9816 366 0.168828958006928 0.168828958006928
-19882 10410 7867 0.175655958248639 0.175655958248639
-9135 5185 5653 0.105406920017136 0.105406920017136
-19292 10469 10471 0.0669585268555214 0.0669585268555214
-14789 9417 9415 0.0546470920616291 0.0546470920616291
-14678 9330 9301 0.189092694124095 0.189092694124095
-16087 9493 9819 0.0602377998698223 0.0602377998698223
-9262 5135 5150 0.0243532262877801 0.0243532262877801
-14663 9300 6543 0.20364721866244 0.20364721866244
-9311 4256 7276 0.202152573812647 0.202152573812647
-20396 10777 10758 0.00300729649615889 0.00300729649615889
-16088 9819 9820 0.154328326827327 0.154328326827327
-9435 7345 7346 0.0190810494123846 0.0190810494123846
-18624 6136 9460 0.0524172265643075 0.0524172265643075
-20568 10857 10787 0.0362929048752591 0.0362929048752591
-18625 9460 2258 0.0501132934741927 0.0501132934741927
-15897 9441 9042 0.0240046794304529 0.0240046794304529
-16387 9458 9459 0.0276860712412084 0.0276860712412084
-11214 8163 391 0.128403364715461 0.128403364715461
-9803 6610 7523 0.196894261944695 0.196894261944695
-15456 9612 9605 0.0879146885908635 0.0879146885908635
-18630 5862 9484 0.00360275623818702 0.00360275623818702
-11351 4798 8227 0.0561921807720747 0.0561921807720747
-9936 4537 7602 0.2557209782077 0.2557209782077
-11457 8266 8267 0.4367852597313 0.4367852597313
-11491 6185 8281 0.106123839405449 0.106123839405449
-11244 8185 8162 0.0231522248365289 0.0231522248365289
-18634 4045 7865 0.17751242949901 0.17751242949901
-18698 5868 1320 0.176912291429695 0.176912291429695
-10141 6347 3032 0.0935494731718596 0.0935494731718596
-11771 8406 4385 0.0534654755495647 0.0534654755495647
-19883 7867 3716 0.104069204828323 0.104069204828323
-11834 8430 8431 0.087830432319228 0.087830432319228
-10212 7733 7734 0.0513578872611552 0.0513578872611552
-19884 3716 7405 0.200874185823139 0.200874185823139
-11852 8443 8444 0.0120541689820552 0.0120541689820552
-10235 2742 7741 0.0499109655825577 0.0499109655825577
-19913 10244 6599 0.17675930412674 0.17675930412674
-15270 8458 8459 0.0175633548114394 0.0175633548114394
-10253 1700 7749 0.00587012913148048 0.00587012913148048
-20002 10691 10692 0.0226226455892357 0.0226226455892357
-11911 8472 8473 0.00378078844043477 0.00378078844043477
-10274 3194 6110 0.20159656533977 0.20159656533977
-11953 8041 6568 0.145503350739709 0.145503350739709
-10298 6399 3614 0.133348580117153 0.133348580117153
-11992 5503 7077 0.147510556806948 0.147510556806948
-19496 10524 7457 0.0831219334199701 0.0831219334199701
-10398 7619 7807 0.0285985320629965 0.0285985320629965
-15922 1816 9751 0.110608853519784 0.110608853519784
-11917 8476 1302 0.0550753650708828 0.0550753650708828
-20647 10880 10034 0.0300539000602635 0.0300539000602635
-10474 6225 7658 0.277054905467397 0.277054905467397
-11996 6576 4457 0.148175074796056 0.148175074796056
-12215 8590 8591 0.0896761056675667 0.0896761056675667
-12240 1246 8611 0.0161729384224601 0.0161729384224601
-10602 7875 741 0.0900908109241702 0.0900908109241702
-16451 9903 9904 0.00638068663878895 0.00638068663878895
-12161 8568 8315 0.127606752812743 0.127606752812743
-16022 9791 9792 0.180221045869865 0.180221045869865
-12376 7853 4674 0.113693675785271 0.113693675785271
-12377 4674 8679 0.101029871301971 0.101029871301971
-19472 10516 7476 0.0110661304777454 0.0110661304777454
-16024 363 9793 0.0338194849383131 0.0338194849383131
-12518 5916 3788 0.153505057727295 0.153505057727295
-10815 3667 7993 0.06101955432425 0.06101955432425
-17063 2247 4880 0.17655557289719 0.17655557289719
-18644 1374 1318 0.176938793518256 0.176938793518256
-20668 1127 10890 0.00915451265400173 0.00915451265400173
-15804 1934 9711 0.166526724215667 0.166526724215667
-15805 9711 9506 0.0388070303408929 0.0388070303408929
-15809 9713 7112 0.0121509406944637 0.0121509406944637
-17109 4052 8135 0.162752784015343 0.162752784015343
-12609 7223 8772 0.0487324288024552 0.0487324288024552
-10935 6177 3306 0.106502895543558 0.106502895543558
-10936 3306 8049 0.0536769065211004 0.0536769065211004
-16203 7727 9845 1.20908168114497 1.20908168114497
-10955 8058 8059 0.079137340429329 0.079137340429329
-16612 9327 9942 0.147120185144049 0.147120185144049
-17066 5478 9963 0.164315977100666 0.164315977100666
-17067 9963 10069 0.0117569437064922 0.0117569437064922
-12661 6331 6548 0.107973460603441 0.107973460603441
-12679 3638 8797 0.0132415259966435 0.0132415259966435
-16962 10044 10040 0.011239967337662 0.011239967337662
-12708 6861 5165 0.179825321478717 0.179825321478717
-11020 1485 143 0.200555984903635 0.200555984903635
-11021 143 8087 0.297571119969413 0.297571119969413
-17011 9424 10052 0.0266755832635793 0.0266755832635793
-12731 8820 7196 0.0815503609966838 0.0815503609966838
-17038 10062 9210 0.00792923279445615 0.00792923279445615
-11062 3436 7764 0.0490279707439403 0.0490279707439403
-16025 9793 9792 0.141538634561804 0.141538634561804
-12773 8830 4166 0.0867031847297172 0.0867031847297172
-16209 6627 5825 0.203615270524375 0.203615270524375
-16207 7210 6624 0.114867174949551 0.114867174949551
-16210 5825 7730 0.194825716270604 0.194825716270604
-13015 8917 8918 0.0110325419879542 0.0110325419879542
-13019 8923 8924 0.0459300988872919 0.0459300988872919
-11247 8187 5274 0.160867422208887 0.160867422208887
-19514 10535 10538 0.0037920381346196 0.0037920381346196
-13024 6190 280 0.0860979970314494 0.0860979970314494
-11276 8174 8198 0.367460344283523 0.367460344283523
-18156 4088 6034 0.199039273787356 0.199039273787356
-13094 1749 8958 0.0802223716795591 0.0802223716795591
-11325 5154 2237 0.0295446835402977 0.0295446835402977
-18719 4048 7409 0.17730031135953 0.17730031135953
-13118 8967 1742 0.0145216501585431 0.0145216501585431
-18386 8971 8972 0.00871865668631088 0.00871865668631088
-13072 8913 8952 0.0749880743663527 0.0749880743663527
-17640 230 8241 0.144923812025645 0.144923812025645
-13560 9033 578 0.049912950240993 0.049912950240993
-11377 8237 4850 0.0778446846789704 0.0778446846789704
-18720 7409 5864 0.175843787012913 0.175843787012913
-11410 2864 7808 0.201887571458386 0.201887571458386
-11526 8300 809 0.0681077085457417 0.0681077085457417
-18653 7653 10176 0.157020875630107 0.157020875630107
-13241 7916 4418 0.196768399976565 0.196768399976565
-11566 7031 7379 0.100426092571383 0.100426092571383
-11568 7379 1594 0.158671241159827 0.158671241159827
-17820 10186 10187 0.0184687744290435 0.0184687744290435
-13263 4963 6826 0.0748897830948627 0.0748897830948627
-11599 7782 8332 0.0501574795892601 0.0501574795892601
-11600 8332 1125 0.0495676895406725 0.0495676895406725
-11644 4658 8348 0.011012895464713 0.011012895464713
-18918 10397 10398 0.0105062475981655 0.0105062475981655
-17913 6562 4748 0.176744370871331 0.176744370871331
-11715 8369 8370 0.101679025311835 0.101679025311835
-11747 8387 8388 0.0596706311453888 0.0596706311453888
-11775 8121 2683 0.119321215072029 0.119321215072029
-13389 8267 9048 0.0706232625221708 0.0706232625221708
-11997 4457 5505 0.144543593212435 0.144543593212435
-19642 10599 10600 0.00461558236551731 0.00461558236551731
-12058 153 3776 0.311946607437041 0.311946607437041
-13750 6895 9177 0.1538081352177 0.1538081352177
-12164 4818 7560 0.10615031357403 0.10615031357403
-15934 6257 9756 0.181030993335028 0.181030993335028
-18568 10324 10321 0.144976741381278 0.144976741381278
-20260 6471 10699 0.00720326005355295 0.00720326005355295
-12382 440 8680 0.0360714923590191 0.0360714923590191
-13919 482 483 0.00751372921095178 0.00751372921095178
-20414 3586 10773 0.00983155874827391 0.00983155874827391
-12480 8712 8713 0.0991407463070431 0.0991407463070431
-15455 9611 9612 0.086225314993736 0.086225314993736
-20417 8993 10775 0.0123681069665026 0.0123681069665026
-19623 10508 10591 0.0688242418092362 0.0688242418092362
-14087 6816 2943 0.102402811156445 0.102402811156445
-12571 8755 8756 0.0991408859101036 0.0991408859101036
-18658 9831 7643 0.17655772025733 0.17655772025733
-16026 9792 9793 0.141538634561804 0.141538634561804
-14200 5104 8831 0.0500819471783367 0.0500819471783367
-16028 9794 9795 0.0352990859554557 0.0352990859554557
-12690 8805 8806 0.0205962859747724 0.0205962859747724
-14297 1952 9317 0.0799385706307454 0.0799385706307454
-12747 5350 4220 0.0793424677909429 0.0793424677909429
-16029 9796 9797 0.0144472492683917 0.0144472492683917
-20288 6472 10687 0.0642398609947935 0.0642398609947935
-14311 8859 8501 0.0340924315859818 0.0340924315859818
-14330 602 8973 0.0577848630730138 0.0577848630730138
-16030 9797 9798 0.0484390320890552 0.0484390320890552
-16031 9798 9799 0.00754569346896809 0.00754569346896809
-14334 2420 8925 0.0583291679544673 0.0583291679544673
-12784 8834 5470 0.171286135301765 0.171286135301765
-12785 5470 8835 0.178924287864237 0.178924287864237
-16033 9799 9800 0.00706845342179734 0.00706845342179734
-14357 513 9331 0.0549879463430077 0.0549879463430077
-12804 3763 2560 0.0898130023336766 0.0898130023336766
-12820 8849 8848 0.188203677867594 0.188203677867594
-16035 9800 6871 0.0378217549395311 0.0378217549395311
-20159 6155 10163 0.0614761289722609 0.0614761289722609
-12915 967 5281 0.138474892352542 0.138474892352542
-16687 9988 8314 0.0384286340006129 0.0384286340006129
-12991 8908 306 0.0182421240862306 0.0182421240862306
-13032 8926 8928 0.185901221322606 0.185901221322606
-16689 1824 9989 0.0121513664645164 0.0121513664645164
-13107 8963 8964 0.0484369444463125 0.0484369444463125
-19516 10539 10536 0.00249155177103479 0.00249155177103479
-19470 10514 10515 0.0196261730033966 0.0196261730033966
-13156 8988 8989 0.00631722030409862 0.00631722030409862
-19649 10600 10601 0.0174353644977756 0.0174353644977756
-18928 10405 10396 0.00112670264684339 0.00112670264684339
-18410 10288 8327 0.00700530123739539 0.00700530123739539
-14672 9414 4877 0.190941051800692 0.190941051800692
-14673 4877 2227 0.162460717202061 0.162460717202061
-13231 4409 9009 0.223227137223831 0.223227137223831
-237 31 134 0.108163538194537 0.108163538194537
-14831 8322 5668 0.0494625040984646 0.0494625040984646
-18415 8376 3409 0.101754880454598 0.101754880454598
-15848 9733 9731 0.0169747446876837 0.0169747446876837
-13335 3971 7017 0.0998321056196178 0.0998321056196178
-18626 2258 9475 0.0453120140623152 0.0453120140623152
-13471 9095 9092 0.294331677800491 0.294331677800491
-13512 7797 9114 0.0647363210214912 0.0647363210214912
-15901 9499 9500 0.157325995690783 0.157325995690783
-13697 9167 7423 0.127782150083045 0.127782150083045
-20289 10687 10697 0.00276887237539732 0.00276887237539732
-13718 8097 9171 0.00881240787098174 0.00881240787098174
-13751 9178 9130 0.0262505906254233 0.0262505906254233
-15391 9259 9571 0.107861175514815 0.107861175514815
-15783 2106 9596 0.166115711722291 0.166115711722291
-13852 1774 4412 0.0465225826542141 0.0465225826542141
-20380 10763 10764 0.00723047037301379 0.00723047037301379
-15452 9609 9598 0.128875611115748 0.128875611115748
-14144 9287 4651 0.182099578171645 0.182099578171645
-15807 9712 7111 0.0179279183487844 0.0179279183487844
-14230 8860 4113 0.0915086936553939 0.0915086936553939
-15819 9705 8564 0.0112418070831931 0.0112418070831931
-14250 8157 7606 0.0899264482990573 0.0899264482990573
-19499 10526 10527 0.0418767441965843 0.0418767441965843
-16078 9814 9815 0.177867255933272 0.177867255933272
-14354 5520 6454 0.134959237439496 0.134959237439496
-16224 5835 9851 0.203722282298932 0.203722282298932
-14425 1233 6137 0.0491477874140339 0.0491477874140339
-16468 9914 9902 0.117059110726511 0.117059110726511
-16500 8890 8891 0.0884309215437497 0.0884309215437497
-16591 9948 8492 0.14561270804365 0.14561270804365
-16470 9915 3282 0.193717589764618 0.193717589764618
-14541 6915 9375 0.0102720812466755 0.0102720812466755
-16501 8891 3167 0.0148460110144783 0.0148460110144783
-16593 9949 9950 0.145366288858291 0.145366288858291
-14609 8990 8994 0.00979628795431279 0.00979628795431279
-14794 3335 7882 0.0961603685796077 0.0961603685796077
-17101 332 10014 0.240821045601335 0.240821045601335
-14816 9424 9425 0.0673114946358147 0.0673114946358147
-17065 9474 5478 0.175247470145414 0.175247470145414
-15103 3050 9489 0.102745543982247 0.102745543982247
-16898 8714 8743 0.201991786328297 0.201991786328297
-16402 9880 9878 0.04752967411177 0.04752967411177
-16959 10041 10042 0.0119234352124219 0.0119234352124219
-16556 9939 2889 0.0528287697048915 0.0528287697048915
-18646 5867 7412 0.177003576876814 0.177003576876814
-16623 9957 9958 0.00927766896119108 0.00927766896119108
-17017 10056 10054 0.00431206144532878 0.00431206144532878
-16635 9967 9937 0.0755376260933099 0.0755376260933099
-16636 9937 9968 0.0848568890148885 0.0848568890148885
-17507 8389 10114 0.0670519033214907 0.0670519033214907
-17069 675 9465 0.179146976203574 0.179146976203574
-17040 8988 10063 0.00586346085648923 0.00586346085648923
-18726 6207 7644 0.18227085937915 0.18227085937915
-18724 4060 7415 0.175525264809921 0.175525264809921
-16759 10010 55 0.0502605990705626 0.0502605990705626
-17565 10138 8539 0.0573375717149566 0.0573375717149566
-17283 8717 8746 0.200951019692623 0.200951019692623
-17285 76 3515 0.20373476556842 0.20373476556842
-17286 3515 4257 0.200873634983474 0.200873634983474
-17288 10023 5839 0.200541247802215 0.200541247802215
-18744 6227 5190 0.106449102002429 0.106449102002429
-17655 10140 480 0.0210901662616695 0.0210901662616695
-17657 8540 9827 0.194565529373187 0.194565529373187
-17427 10105 10106 0.0219929458534896 0.0219929458534896
-17857 10200 10197 0.0144828525731025 0.0144828525731025
-18236 7037 3424 0.201298115256081 0.201298115256081
-17786 8497 9214 0.0149001836759509 0.0149001836759509
-18667 5188 2601 0.176856921267491 0.176856921267491
-15257 8538 9547 0.0461864635130014 0.0461864635130014
-15834 9727 4582 0.339362052888466 0.339362052888466
-18239 6764 3988 0.20124356936137 0.20124356936137
-17648 223 227 0.245258634538467 0.245258634538467
-19708 10627 10621 0.090662464616454 0.090662464616454
-17961 10234 10235 0.0087318555012696 0.0087318555012696
-19710 10623 10628 0.0762458230270849 0.0762458230270849
-17727 3328 7879 0.104097845117031 0.104097845117031
-18725 7415 10336 0.0555461867275064 0.0555461867275064
-17748 10172 8285 0.147249823900369 0.147249823900369
-19600 10582 10478 0.00442384590255706 0.00442384590255706
-16294 2409 2439 0.0170153678743566 0.0170153678743566
-18663 2592 5184 0.178895247307371 0.178895247307371
-15835 4582 8370 0.135357878279395 0.135357878279395
-17987 10240 7225 0.133765909115813 0.133765909115813
-18776 10123 3737 0.13151506607382 0.13151506607382
-19243 10420 8480 0.0202782525837911 0.0202782525837911
-18831 10359 10360 0.0341232753962164 0.0341232753962164
-19553 6857 10560 0.00726201622420357 0.00726201622420357
-19940 9641 6649 0.164927985335569 0.164927985335569
-18941 4644 1269 0.146851000824624 0.146851000824624
-19118 10431 8430 0.136066207456442 0.136066207456442
-19278 10421 6707 0.0993066662474356 0.0993066662474356
-15836 8370 5297 0.134414346058358 0.134414346058358
-19047 901 9486 0.27949052314451 0.27949052314451
-19612 10586 10499 0.00658715235564877 0.00658715235564877
-15838 9728 7437 0.0439886907558265 0.0439886907558265
-19065 10422 5495 0.202007910819525 0.202007910819525
-15840 9729 9702 0.0777181684296862 0.0777181684296862
-15841 9702 9730 0.0351380099433058 0.0351380099433058
-19273 10425 10173 0.013664079145809 0.013664079145809
-19160 10429 10050 0.0518274489533285 0.0518274489533285
-20574 10861 10862 0.011368530817607 0.011368530817607
-19554 10560 10548 0.0725121719316359 0.0725121719316359
-19461 10477 10478 0.0230516224965269 0.0230516224965269
-19438 10491 6859 0.0113764020129076 0.0113764020129076
-19277 8487 10421 0.0474605500221532 0.0474605500221532
-19226 8479 10451 0.0120282782230604 0.0120282782230604
-19482 10486 10487 0.00666482250083992 0.00666482250083992
-19412 1903 7239 0.197394669243537 0.197394669243537
-19323 916 5917 0.178370202088171 0.178370202088171
-19329 10473 9894 0.0172442514416892 0.0172442514416892
-19662 10608 10609 0.151226661870126 0.151226661870126
-19357 3170 9949 0.0476976092634506 0.0476976092634506
-19703 10622 10623 0.11468932159706 0.11468932159706
-19379 9194 4397 0.102701543160846 0.102701543160846
-19846 10657 10658 0.207612047714745 0.207612047714745
-19735 10641 10642 0.0869223005082275 0.0869223005082275
-423 422 423 0.0170753331475834 0.0170753331475834
-18892 3649 3275 0.147518961348099 0.147518961348099
-20076 6318 8004 0.0509194903724274 0.0509194903724274
-20104 8546 2065 0.048454988097841 0.048454988097841
-20204 9321 10178 0.0841675532676054 0.0841675532676054
-20205 10178 8401 0.0611444527276629 0.0611444527276629
-259 266 267 0.0502803318432383 0.0502803318432383
-14829 6148 4022 0.133340280271954 0.133340280271954
-20293 10704 10700 0.011586826540776 0.011586826540776
-14835 7029 7396 0.0697085759052968 0.0697085759052968
-20259 10688 6471 0.00765068827927408 0.00765068827927408
-17971 10234 10239 0.0311817416438077 0.0311817416438077
-20294 10700 10709 0.0186270421112036 0.0186270421112036
-14868 8305 8308 0.0233992723150567 0.0233992723150567
-421 420 421 0.0887343803029098 0.0887343803029098
-424 254 424 0.214565868461505 0.214565868461505
-425 424 425 0.179345861037356 0.179345861037356
-18900 10380 10379 0.00404144992313864 0.00404144992313864
-312 320 321 0.234451594909332 0.234451594909332
-14897 6102 8202 0.215105101107824 0.215105101107824
-19648 10603 10600 0.0301818413703728 0.0301818413703728
-176 185 186 0.0998871295042773 0.0998871295042773
-20301 9381 10729 0.0209062182463086 0.0209062182463086
-196 205 208 0.198149371104724 0.198149371104724
-16280 9869 4511 0.0441265369006206 0.0441265369006206
-15850 9734 5596 0.0497405541513423 0.0497405541513423
-19563 7475 10566 0.00626126200522767 0.00626126200522767
-248 255 256 0.148914456277168 0.148914456277168
-14938 8158 7604 0.0947062136756459 0.0947062136756459
-305 313 314 0.0701186694040595 0.0701186694040595
-14691 3129 941 0.177390618833456 0.177390618833456
-371 263 372 0.159425481094297 0.159425481094297
-372 262 373 0.154271040601459 0.154271040601459
-373 374 375 0.0498842542371797 0.0498842542371797
-20302 6466 9378 0.155873782837014 0.155873782837014
-315 323 324 0.151711567725454 0.151711567725454
-554 548 549 0.0392699857827163 0.0392699857827163
-14993 7973 7142 0.0462138706300854 0.0462138706300854
-17218 6114 3199 0.202944002497817 0.202944002497817
-317 325 326 0.0648164274191724 0.0648164274191724
-17027 3490 3584 0.0598495371899439 0.0598495371899439
-652 642 643 0.0146721427737165 0.0146721427737165
-18423 8361 8333 0.20323919891824 0.20323919891824
-15011 9469 459 0.0480419410466021 0.0480419410466021
-15012 459 7107 0.043866666346984 0.043866666346984
-11803 8415 8416 0.145780714117446 0.145780714117446
-18731 8066 10337 0.199884513966678 0.199884513966678
-17082 4467 2789 0.134890565512634 0.134890565512634
-788 793 794 0.093857943582342 0.093857943582342
-15029 7883 3337 0.0968744267307773 0.0968744267307773
-18907 10384 10385 0.0177708173335528 0.0177708173335528
-11693 868 895 0.0109449511220029 0.0109449511220029
-16597 8570 5785 0.145695604703312 0.145695604703312
-17133 4238 3543 0.202299079539728 0.202299079539728
-18439 7914 2971 0.147770970542825 0.147770970542825
-16408 9882 9889 0.0253610023428754 0.0253610023428754
-16601 9952 7558 0.0955122170701592 0.0955122170701592
-15050 6016 979 0.0500664854607423 0.0500664854607423
-16409 9889 9879 0.0208518700779087 0.0208518700779087
-995 753 1009 0.150380388134057 0.150380388134057
-15070 9479 610 0.10571035032404 0.10571035032404
-16411 9459 9889 0.012002862934972 0.012002862934972
-1016 1028 1029 0.0655213058855568 0.0655213058855568
-15964 4362 1443 0.198880292667991 0.198880292667991
-16695 9599 9597 0.0527492023482324 0.0527492023482324
-19585 10576 7471 0.00669407122815783 0.00669407122815783
-1119 1135 1136 0.187278154980764 0.187278154980764
-15144 9498 6689 0.0114561417292809 0.0114561417292809
-15795 2323 2324 0.0158381890637799 0.0158381890637799
-20623 2706 10873 0.00650373799697247 0.00650373799697247
-1164 558 1182 0.0726820398635713 0.0726820398635713
-15984 7372 5328 0.126515384088506 0.126515384088506
-16002 9775 6870 0.0380746194857137 0.0380746194857137
-11807 8419 8395 0.147975384561768 0.147975384561768
-16009 9779 9780 0.0100019925159617 0.0100019925159617
-331 207 332 0.116329690490202 0.116329690490202
-20314 10735 10736 0.00660332250129021 0.00660332250129021
-1412 1265 1438 0.0988256135069692 0.0988256135069692
-15147 9501 1753 0.946728932771196 0.946728932771196
-542 536 537 0.223575651807191 0.223575651807191
-1437 1457 1458 0.00733898986406934 0.00733898986406934
-15845 9731 9732 0.0664836940914448 0.0664836940914448
-15172 9512 9513 0.0495248806719176 0.0495248806719176
-15173 9513 9514 0.0500036838355924 0.0500036838355924
-16841 10021 9876 0.0316463232135525 0.0316463232135525
-12011 7081 2030 0.145136996076302 0.145136996076302
-12961 1633 1631 0.0197483532588124 0.0197483532588124
-16037 9801 9802 0.187730927470077 0.187730927470077
-1680 1705 1706 0.200641448140145 0.200641448140145
-15255 9539 9533 0.0958097111651336 0.0958097111651336
-16278 9869 3639 0.110423900704732 0.110423900704732
-1701 1648 1723 0.062496099688971 0.062496099688971
-16118 8309 427 0.26882010834223 0.26882010834223
-250 257 258 0.156601202821138 0.156601202821138
-1726 1744 1745 1.09817431556355 1.09817431556355
-16141 9831 7016 0.0255913598249866 0.0255913598249866
-16142 7016 7028 0.027160195994677 0.027160195994677
-251 259 260 0.154968238345174 0.154968238345174
-1778 1796 1797 0.0510193327806952 0.0510193327806952
-15256 9533 9546 0.0701631467931239 0.0701631467931239
-4282 4025 4026 0.0836518662560613 0.0836518662560613
-4283 4026 2975 0.0536630317560949 0.0536630317560949
-252 261 262 0.0449524282619667 0.0449524282619667
-17948 10228 8780 0.031808150523084 0.031808150523084
-1803 1816 1817 0.0829077522721667 0.0829077522721667
-4294 2858 4032 0.190837980669502 0.190837980669502
-4296 4033 4034 0.0984313521955559 0.0984313521955559
-4297 4034 4035 0.124316100856361 0.124316100856361
-4299 1488 135 0.200939910778157 0.200939910778157
-4300 135 1703 0.200530915425065 0.200530915425065
-253 262 259 0.0587496721634218 0.0587496721634218
-1830 1846 1847 0.0521892409260155 0.0521892409260155
-4310 4043 1394 0.105949182025439 0.105949182025439
-4311 1394 4044 0.0525758001653233 0.0525758001653233
-4312 4044 4045 0.00275409212275412 0.00275409212275412
-4313 4045 4046 0.048684142933598 0.048684142933598
-4314 4046 4048 0.0522538202962548 0.0522538202962548
-11581 1889 1890 0.200726535096683 0.200726535096683
-254 259 263 0.0633181950748288 0.0633181950748288
-1901 1087 1914 0.0231926567105046 0.0231926567105046
-4323 4055 4056 0.0506868932206778 0.0506868932206778
-4324 4056 4057 0.0525415825536361 0.0525415825536361
-4325 4057 1106 0.049505238452812 0.049505238452812
-4326 1106 4058 0.103487473030962 0.103487473030962
-255 263 264 0.0528764032574804 0.0528764032574804
-1921 1933 1934 0.0492173865000396 0.0492173865000396
-1929 1942 1943 0.119118027307007 0.119118027307007
-4337 4067 4068 0.0478289627129219 0.0478289627129219
-4338 4068 4069 0.0505441496304245 0.0505441496304245
-4339 4069 4070 0.0498130318292156 0.0498130318292156
-4342 4071 4072 0.0561534117303384 0.0561534117303384
-4343 4072 4073 0.0484769480819301 0.0484769480819301
-18384 8960 8961 0.0519015690499355 0.0519015690499355
-544 538 539 0.0154777376492066 0.0154777376492066
-2042 2050 2051 0.199194779708592 0.199194779708592
-12337 8654 8655 0.0104809427005404 0.0104809427005404
-4355 3965 4081 0.411489005127648 0.411489005127648
-4356 4081 4082 0.106344190536588 0.106344190536588
-4358 4083 1074 0.0829286899836406 0.0829286899836406
-4359 1074 2497 0.0840300949352524 0.0840300949352524
-16773 3182 3277 0.192234323904948 0.192234323904948
-2067 2069 2070 0.202510221820354 0.202510221820354
-19432 8707 10110 0.0968673163006813 0.0968673163006813
-4370 4092 4093 0.0521723369054183 0.0521723369054183
-4373 4095 4096 0.0511584997280867 0.0511584997280867
-4374 4096 4097 0.0510055304226098 0.0510055304226098
-14753 6934 5930 0.0358835820845479 0.0358835820845479
-545 539 540 0.260599478311813 0.260599478311813
-2113 2114 2115 0.0866449228578761 0.0866449228578761
-12341 2501 8642 0.0589286767766051 0.0589286767766051
-4383 4104 2729 0.0487767884709024 0.0487767884709024
-4387 748 1566 0.142516569011717 0.142516569011717
-16443 9900 9901 0.201666693845683 0.201666693845683
-546 540 541 0.0326517480806501 0.0326517480806501
-547 541 542 0.0254047336234174 0.0254047336234174
-2158 2156 2157 0.218243127550759 0.218243127550759
-2160 2158 2159 0.0821511858388999 0.0821511858388999
-16173 4250 9840 0.39197341800201 0.39197341800201
-19464 10508 10509 0.0204161788330557 0.0204161788330557
-18178 5791 6050 0.202074681821779 0.202074681821779
-20702 10891 10902 0.0170035110425561 0.0170035110425561
-16216 8620 7903 0.142599898878985 0.142599898878985
-11816 2201 2202 0.15535054028393 0.15535054028393
-17089 9940 8134 0.138649146182337 0.138649146182337
-17090 8134 3689 0.141996254884573 0.141996254884573
-2222 2222 2223 0.0488100805647676 0.0488100805647676
-2223 2223 2224 0.0512642786009998 0.0512642786009998
-14639 2243 2244 0.0354564943031107 0.0354564943031107
-17091 3689 4597 0.241148863142693 0.241148863142693
-2264 2264 2265 0.176035436319457 0.176035436319457
-14641 2244 2272 0.0187003459565438 0.0187003459565438
-16312 2722 2929 0.0126176772334624 0.0126176772334624
-14127 419 417 0.0606641044076811 0.0606641044076811
-2285 2284 2285 0.184338950183701 0.184338950183701
-17024 10059 6431 0.0170040072643452 0.0170040072643452
-20326 10744 10738 0.00650370546328925 0.00650370546328925
-2307 2304 1995 0.0793159537973265 0.0793159537973265
-16363 7010 2769 0.112453696268037 0.112453696268037
-16364 2769 3365 0.103853901930967 0.103853901930967
-20334 2967 10745 0.0137335338280324 0.0137335338280324
-2375 2363 964 0.101155075878388 0.101155075878388
-16463 9886 1081 0.198408324686945 0.198408324686945
-16466 9913 9912 0.00925208668760351 0.00925208668760351
-17365 10091 3085 0.200980490545583 0.200980490545583
-17304 4258 8744 0.201266280518922 0.201266280518922
-2443 2434 2435 0.0498096064689081 0.0498096064689081
-18192 6053 4068 0.142529657997643 0.142529657997643
-16717 5546 10002 2.41636756690016 2.41636756690016
-14694 4875 4946 0.19209064576365 0.19209064576365
-2465 1228 2455 0.0986019921641189 0.0986019921641189
-17232 243 244 0.123936016070967 0.123936016070967
-17233 244 245 0.0423914167747626 0.0423914167747626
-17234 245 30 0.0421885133223055 0.0421885133223055
-17235 30 31 0.0623462807475453 0.0623462807475453
-20321 10740 10741 0.00961494122957245 0.00961494122957245
-20520 10845 10841 0.0515194041185215 0.0515194041185215
-19715 10630 10631 0.0208944523636977 0.0208944523636977
-14699 4164 4773 0.260608636385053 0.260608636385053
-2587 2559 2560 0.109781786773584 0.109781786773584
-18391 7038 3425 0.202488499072253 0.202488499072253
-18395 2554 3861 0.207477450927098 0.207477450927098
-20741 10913 7366 0.0901821833329384 0.0901821833329384
-2613 2576 2373 0.0436228403965834 0.0436228403965834
-19620 10524 10589 0.00570573305761744 0.00570573305761744
-18401 1425 7176 0.174145888646233 0.174145888646233
-20347 10745 10747 0.0185775892434006 0.0185775892434006
-2677 2638 2639 0.294941945704345 0.294941945704345
-19655 10606 10607 0.00514986150833142 0.00514986150833142
-18881 7249 3271 0.203031342103983 0.203031342103983
-20742 7366 10907 0.0328095866921768 0.0328095866921768
-2729 2684 2685 0.0539600310135124 0.0539600310135124
-17508 10114 10116 0.025112430125901 0.025112430125901
-17946 10225 10226 0.00737359034109891 0.00737359034109891
-14688 2393 2798 0.189312144234638 0.189312144234638
-18130 10265 6045 0.200929523136355 0.200929523136355
-2876 2499 2821 0.136005417598284 0.136005417598284
-12974 2797 2822 0.0772628603550689 0.0772628603550689
-19658 9394 8493 0.0491161384071996 0.0491161384071996
-19659 8493 6763 0.145715875084599 0.145715875084599
-14698 5033 4164 0.121872885708228 0.121872885708228
-17172 3092 5304 0.202230215982892 0.202230215982892
-3021 2953 2954 0.00990774005844554 0.00990774005844554
-19694 10618 8145 0.956513774549446 0.956513774549446
-19803 5200 10646 0.12476083696761 0.12476083696761
-14722 4871 6016 0.191389811056615 0.191389811056615
-20794 8908 10948 0.0132755925041989 0.0132755925041989
-19880 10672 2617 0.0529554442967168 0.0529554442967168
-19918 6233 5202 0.175854776488408 0.175854776488408
-18502 9278 9526 0.133752339971597 0.133752339971597
-3064 2995 2996 0.132712872312529 0.132712872312529
-19901 10663 10676 0.0513919786820835 0.0513919786820835
-19973 10306 619 0.00429215823862154 0.00429215823862154
-17075 7842 828 0.141317632530522 0.141317632530522
-17970 10238 10234 0.0188321983270746 0.0188321983270746
-18897 10377 10378 0.0131134839493858 0.0131134839493858
-17180 5449 5450 0.206640976814444 0.206640976814444
-17113 3932 3959 0.0402088808240704 0.0402088808240704
-19990 10684 10682 0.0498254818797545 0.0498254818797545
-18513 9294 10302 0.00151227516682341 0.00151227516682341
-3252 2365 3163 0.175456016528149 0.175456016528149
-19267 10446 8486 0.0130023858176566 0.0130023858176566
-15217 9530 539 0.0270882933911684 0.0270882933911684
-18503 9526 9353 0.135313261796309 0.135313261796309
-18902 10378 10381 0.0118745691698922 0.0118745691698922
-20282 10710 10722 0.0492625817369533 0.0492625817369533
-19437 10490 10491 0.0516785382045006 0.0516785382045006
-16422 3358 3034 0.0480216533576434 0.0480216533576434
-17185 5659 5660 0.024871407903781 0.024871407903781
-18512 10302 9294 0.00151227516682341 0.00151227516682341
-18681 3185 3408 0.173742073092489 0.173742073092489
-15235 9533 9534 0.025845258726166 0.025845258726166
-15243 9534 9535 0.0751513734309232 0.0751513734309232
-14715 5686 5687 0.105315223547906 0.105315223547906
-19826 10647 9253 0.122215184303521 0.122215184303521
-20299 10728 5578 0.0498927645754841 0.0498927645754841
-15281 9557 9556 0.01686832436596 0.01686832436596
-15283 9557 9558 0.0154433036380546 0.0154433036380546
-17312 5705 5706 0.401673875470838 0.401673875470838
-3564 3426 3427 0.0516847701108369 0.0516847701108369
-15400 9579 3315 0.0326402169295471 0.0326402169295471
-15402 9580 9581 0.331383974435327 0.331383974435327
-15403 9582 9583 0.0120173707764648 0.0120173707764648
-18689 1859 5770 0.176521953507317 0.176521953507317
-3659 3496 3497 0.100604510338319 0.100604510338319
-15426 8637 4935 0.0862034738049073 0.0862034738049073
-15429 9597 8608 0.0815311130388188 0.0815311130388188
-14717 933 5818 0.11375652775637 0.11375652775637
-3704 3540 3541 0.0487079158287504 0.0487079158287504
-20304 9382 10728 0.0315682813160642 0.0315682813160642
-15490 9618 8464 0.061043367869745 0.061043367869745
-15492 9627 9626 0.0311123551122936 0.0311123551122936
-17382 5814 2314 0.0781390219671105 0.0781390219671105
-20431 10791 10754 0.00545772790966665 0.00545772790966665
-3935 3733 3734 0.176323868665952 0.176323868665952
-20425 10786 10787 0.0471980291688183 0.0471980291688183
-16275 9868 3657 0.128315234485653 0.128315234485653
-17111 3775 3776 0.0186255054019669 0.0186255054019669
-20436 10794 10795 0.0773551964908624 0.0773551964908624
-4030 3814 3815 0.205898323776278 0.205898323776278
-14114 3768 3623 0.0676593021490157 0.0676593021490157
-20311 10732 10733 0.00871128803713245 0.00871128803713245
-17485 321 4992 0.0357053960194593 0.0357053960194593
-4135 1293 3896 0.0646203690871901 0.0646203690871901
-16181 9842 5547 0.812121023854291 0.812121023854291
-15562 9299 9657 0.183361943567776 0.183361943567776
-15563 9657 3803 0.198879262059456 0.198879262059456
-18244 9371 2433 0.198605382792158 0.198605382792158
-20442 10799 10800 0.0197706815366264 0.0197706815366264
-4153 2788 3908 0.132166336514103 0.132166336514103
-19582 10575 10562 0.0700205995742609 0.0700205995742609
-16266 7738 5831 0.20157737543677 0.20157737543677
-17685 6154 6155 0.459645187119716 0.459645187119716
-4242 3991 3227 0.0177155969329486 0.0177155969329486
-4243 3227 3992 0.0329982706824684 0.0329982706824684
-19465 10509 10510 0.0192818852758557 0.0192818852758557
-20445 10801 10802 0.0205768304881295 0.0205768304881295
-4285 658 1885 0.048605694225596 0.048605694225596
-14724 5469 977 0.135303141818757 0.135303141818757
-4308 4042 3999 0.107188720026654 0.107188720026654
-15626 9687 9688 0.091295408872665 0.091295408872665
-18437 10292 8442 0.00675422790693776 0.00675422790693776
-20447 10794 10803 0.118731077964576 0.118731077964576
-4347 4075 4076 0.0470687599943484 0.0470687599943484
-4349 1002 4077 0.216843974938131 0.216843974938131
-20454 10809 10810 0.100342747602662 0.100342747602662
-4420 4130 4131 0.121697779505431 0.121697779505431
-19593 10478 10580 0.068856662719705 0.068856662719705
-20625 10804 10874 0.0625386897444795 0.0625386897444795
-18253 3979 6754 0.201867515357413 0.201867515357413
-4514 4194 4195 0.10298973821829 0.10298973821829
-15674 9685 9686 0.0593326737516342 0.0593326737516342
-20460 10813 10814 0.0263810628539784 0.0263810628539784
-4540 1339 4214 0.206331927913881 0.206331927913881
-15694 7269 2024 0.188168800569156 0.188168800569156
-19466 10510 10511 0.0234630277187848 0.0234630277187848
-20626 10788 10875 0.12707186988651 0.12707186988651
-14733 6342 4868 0.191023303912105 0.191023303912105
-18638 7383 5180 0.100367385774354 0.100367385774354
-15713 1050 3913 0.111080496528689 0.111080496528689
-18173 6048 6420 0.20192046475531 0.20192046475531
-4662 1707 4301 0.203353286347824 0.203353286347824
-15737 3771 8867 0.1545281811215 0.1545281811215
-18694 6025 5978 0.00688297127309608 0.00688297127309608
-18468 10298 9138 0.0199498887128462 0.0199498887128462
-17131 4372 1799 0.197593407061799 0.197593407061799
-15759 3487 5346 0.100946337054167 0.100946337054167
-20632 8227 6090 0.135158757751447 0.135158757751447
-18263 6067 6514 0.193791754137247 0.193791754137247
-4805 4410 4411 0.102107994490615 0.102107994490615
-19823 9252 7641 0.177252004679102 0.177252004679102
-15778 9119 9707 0.0214606208419429 0.0214606208419429
-15780 9707 9703 0.181325566879256 0.181325566879256
-14737 4770 6526 0.178169149120729 0.178169149120729
-4824 534 475 0.0459278377034575 0.0459278377034575
-15830 7134 9724 0.00382519149625338 0.00382519149625338
-434 433 364 0.11596793090747 0.11596793090747
-17139 4488 3200 0.20282742100359 0.20282742100359
-20710 7365 10885 0.00202939174918317 0.00202939174918317
-20738 10886 10887 0.038658244493302 0.038658244493302
-4921 4492 4493 0.0619945774719425 0.0619945774719425
-18268 2438 5736 0.170878783790289 0.170878783790289
-4947 3640 4511 0.128546240241841 0.128546240241841
-2413 2403 2404 0.136554071110129 0.136554071110129
-11806 8418 8419 0.144478674207108 0.144478674207108
-470 473 474 0.189801845816516 0.189801845816516
-14741 3802 5935 0.15521301123556 0.15521301123556
-4998 4544 4545 0.135440573029242 0.135440573029242
-2670 2628 2629 0.199951181775354 0.199951181775354
-18532 10307 7540 0.709454997862857 0.709454997862857
-5075 4599 1025 0.0544629152641776 0.0544629152641776
-17143 4616 4617 0.200408905820063 0.200408905820063
-20669 10890 10891 0.0251214927041886 0.0251214927041886
-14743 931 2216 0.184594913416957 0.184594913416957
-5094 4615 4618 0.110635552941058 0.110635552941058
-19633 10594 10505 0.00660487490366482 0.00660487490366482
-20709 10913 7365 0.234512277592806 0.234512277592806
-20713 5881 10915 0.0114767201911695 0.0114767201911695
-18275 6667 1427 0.0124761175920816 0.0124761175920816
-18575 10323 10324 0.133190640971179 0.133190640971179
-19540 10553 10554 0.069921649249612 0.069921649249612
-19541 10554 7472 0.00672748885261455 0.00672748885261455
-19542 7472 10555 0.00636055689076091 0.00636055689076091
-20479 10827 10828 0.0321786032396296 0.0321786032396296
-5172 3232 4672 0.135963226577445 0.135963226577445
-17294 8754 10015 0.202671913712405 0.202671913712405
-23 24 25 0.131395177842502 0.131395177842502
-24 25 26 0.132981987743145 0.132981987743145
-18535 5555 10308 0.537923452261619 0.537923452261619
-5196 4693 4694 0.101324047402986 0.101324047402986
-17084 505 4047 0.193244409170512 0.193244409170512
-20013 7896 8858 0.144841565186615 0.144841565186615
-18281 6757 6460 0.11412288805936 0.11412288805936
-5239 4723 4724 0.173697663092072 0.173697663092072
-57 61 62 0.0954500024095661 0.0954500024095661
-18609 5208 6228 0.175202487961463 0.175202487961463
-18543 10313 5554 0.549870500653692 0.549870500653692
-5310 4766 3155 0.0172249530452766 0.0172249530452766
-78 84 85 0.0505639086324271 0.0505639086324271
-19778 10632 5380 0.0979518829901303 0.0979518829901303
-20481 10792 10829 0.0269599370404467 0.0269599370404467
-5457 4876 4877 0.0499120224253174 0.0499120224253174
-96 101 102 0.0321305027576107 0.0321305027576107
-97 102 103 0.0620448910426151 0.0620448910426151
-18782 10348 10344 0.0162360672802701 0.0162360672802701
-5478 4135 4890 0.0934025271750886 0.0934025271750886
-121 128 129 0.177008602394702 0.177008602394702
-244 251 252 0.175978023607631 0.175978023607631
-18294 6901 1428 0.00619376962359973 0.00619376962359973
-5500 4907 4908 0.100175479072509 0.100175479072509
-140 148 149 0.0975727004199176 0.0975727004199176
-393 395 396 0.169106051700542 0.169106051700542
-18784 10348 10349 0.00525970147109288 0.00525970147109288
-5522 4924 4677 0.103650586835971 0.103650586835971
-18546 7539 10314 0.65633531431652 0.65633531431652
-18297 6968 6995 0.202610377838011 0.202610377838011
-5676 3669 5032 0.215322761034264 0.215322761034264
-173 182 183 0.0984047094047537 0.0984047094047537
-174 183 184 0.100655002347226 0.100655002347226
-16515 5454 5455 0.104997960992542 0.104997960992542
-20485 10832 10763 0.0351600114003883 0.0351600114003883
-5779 2576 4917 0.032816005995912 0.032816005995912
-192 202 203 0.199740801936021 0.199740801936021
-193 203 169 0.402428218597258 0.402428218597258
-14755 5931 927 0.177893389603082 0.177893389603082
-5803 5121 5122 0.103540820168727 0.103540820168727
-225 49 236 0.00807621055546913 0.00807621055546913
-18672 1538 1539 0.106836085520251 0.106836085520251
-14756 927 2212 0.186014347432929 0.186014347432929
-5852 1967 4622 0.105142035615429 0.105142035615429
-282 292 293 0.038589084717098 0.038589084717098
-283 293 294 0.0763501630731075 0.0763501630731075
-285 295 296 0.17581051150028 0.17581051150028
-14758 4862 7101 0.190667289560019 0.190667289560019
-5875 4334 5174 0.0464101693595893 0.0464101693595893
-350 351 352 0.0901523030384508 0.0901523030384508
-353 355 356 0.108591561133878 0.108591561133878
-369 370 371 0.00989155289209397 0.00989155289209397
-18304 7116 6758 0.139614208847036 0.139614208847036
-517 511 512 0.231881303387922 0.231881303387922
-518 512 513 0.0504031171767775 0.0504031171767775
-12256 8620 8618 0.1042966231246 0.1042966231246
-6051 5293 5294 0.1322760806231 0.1322760806231
-18305 6758 3982 0.20021257935936 0.20021257935936
-574 248 567 0.654270176053915 0.654270176053915
-575 264 568 0.0404038185731676 0.0404038185731676
-19637 10596 10597 0.0126826750829723 0.0126826750829723
-20403 10761 10778 0.00417068578422797 0.00417068578422797
-6437 2444 5569 0.02055703905507 0.02055703905507
-614 605 606 0.0427456634033912 0.0427456634033912
-11697 1006 1032 0.0356944242966225 0.0356944242966225
-18485 7779 9146 0.0491523501803915 0.0491523501803915
-19922 7869 3723 0.102610678307364 0.102610678307364
-20528 10783 10029 0.0108754318867703 0.0108754318867703
-6839 2922 5305 0.104995892978265 0.104995892978265
-634 544 624 0.0671323040254876 0.0671323040254876
-635 624 625 0.00434381837571047 0.00434381837571047
-20428 10788 10789 0.0563042197472527 0.0563042197472527
-18340 7633 7634 0.201343863199868 0.201343863199868
-20531 2704 10847 0.00595682994262844 0.00595682994262844
-18337 7624 2435 0.20163475178063 0.20163475178063
-655 645 646 0.15124021105117 0.15124021105117
-11518 656 657 0.200075413530476 0.200075413530476
-18341 7634 7661 0.00671626059696149 0.00671626059696149
-18342 7661 7662 0.197150609042501 0.197150609042501
-6951 5687 5936 0.0500693590985736 0.0500693590985736
-6952 5936 5453 0.049749026364738 0.049749026364738
-18121 10257 2538 0.176222237628552 0.176222237628552
-18344 5247 6874 0.0949718672307841 0.0949718672307841
-20408 10778 8971 0.00240570116723256 0.00240570116723256
-7025 5987 5146 0.0839973170950687 0.0839973170950687
-687 680 681 0.00253308666004397 0.00253308666004397
-688 681 682 0.0177686502456197 0.0177686502456197
-20536 10790 10850 0.034182335159618 0.034182335159618
-18351 6756 3981 0.199906908242653 0.199906908242653
-7046 5996 5997 0.0183612294578931 0.0183612294578931
-7047 5997 5998 0.0939822022965603 0.0939822022965603
-16701 9996 9997 0.0529811614609842 0.0529811614609842
-20223 10711 10712 0.0485921897229188 0.0485921897229188
-7066 4209 6007 0.100592936440223 0.100592936440223
-719 715 716 0.14011322934495 0.14011322934495
-18164 6036 4091 0.184872985391224 0.184872985391224
-18360 7775 7374 0.049527285222362 0.049527285222362
-7242 1086 6117 0.0183572728116315 0.0183572728116315
-20444 10797 10801 0.0204844414155983 0.0204844414155983
-14778 5928 925 0.176931188736704 0.176931188736704
-7325 6163 6164 0.404282808510336 0.404282808510336
-757 756 757 0.0403523543057396 0.0403523543057396
-758 758 759 0.10406364243601 0.10406364243601
-20552 10810 10855 0.0274674933149076 0.0274674933149076
-7375 340 337 0.0516827997381363 0.0516827997381363
-778 783 784 0.143355100800641 0.143355100800641
-18365 1660 7716 0.0501099513590678 0.0501099513590678
-7418 5550 6228 0.0493634763375772 0.0493634763375772
-798 803 806 1.01502432527974 1.01502432527974
-20237 10712 8819 0.0494540965066323 0.0494540965066323
-7441 1600 1601 0.0713701116113288 0.0713701116113288
-814 825 826 0.10637782371988 0.10637782371988
-815 826 827 0.107195537700229 0.107195537700229
-20239 10716 10717 0.029516495512001 0.029516495512001
-7466 2930 5311 0.101596891275597 0.101596891275597
-836 849 850 0.0925483728292225 0.0925483728292225
-837 850 851 0.184151560988971 0.184151560988971
-20241 8817 10717 0.0237033604501814 0.0237033604501814
-7541 6292 65 0.186329349943054 0.186329349943054
-857 870 871 0.202831473953724 0.202831473953724
-14121 4084 3945 0.0818484712615532 0.0818484712615532
-18787 10347 10345 0.045081440573134 0.045081440573134
-7826 2505 6454 0.100016861256994 0.100016861256994
-876 889 890 0.105571186658179 0.105571186658179
-877 890 891 0.105688383652669 0.105688383652669
-11418 8067 8068 0.0483239948134963 0.0483239948134963
-7848 6464 6465 0.0519215197465546 0.0519215197465546
-894 908 909 0.110040792413973 0.110040792413973
-896 910 911 0.148938852784508 0.148938852784508
-11420 8068 8077 0.744996900508782 0.744996900508782
-7872 6484 6485 0.109350713693358 0.109350713693358
-914 928 929 0.0454506765778274 0.0454506765778274
-15223 8102 5299 0.0276921695746079 0.0276921695746079
-16761 10006 10010 0.188081556068426 0.188081556068426
-20354 9336 10730 0.00773852906846938 0.00773852906846938
-7965 6543 6544 0.0483732045653669 0.0483732045653669
-954 966 967 0.0990431305437434 0.0990431305437434
-19650 10601 10604 0.0245600833310456 0.0245600833310456
-18271 6463 6629 0.159535181156963 0.159535181156963
-20358 10736 9208 0.00987870578899212 0.00987870578899212
-11333 3953 8218 0.0887906096153549 0.0887906096153549
-976 987 988 0.0367128135573791 0.0367128135573791
-18911 10389 10390 0.0499832893351177 0.0499832893351177
-8132 6646 6647 0.176189320777164 0.176189320777164
-20359 9208 8992 0.00952006614931064 0.00952006614931064
-18533 7540 5565 0.0799101067174197 0.0799101067174197
-15227 8248 1474 0.0211145699437457 0.0211145699437457
-11427 8252 8251 0.0497577863871374 0.0497577863871374
-8228 5488 6699 0.203871251538877 0.203871251538877
-1013 1025 1026 0.240326237485559 0.240326237485559
-1014 1026 1027 0.140197604091005 0.140197604091005
-11524 8299 6771 0.0679188084680006 0.0679188084680006
-8280 6724 1837 0.0673898837011532 0.0673898837011532
-16769 3180 3279 0.131366088579917 0.131366088579917
-11560 7714 8320 0.204692599225755 0.204692599225755
-18785 10349 3941 0.0399279993421446 0.0399279993421446
-1055 1071 1072 0.193562714729093 0.193562714729093
-18374 2425 6794 0.0832162654729584 0.0832162654729584
-8378 6787 5475 0.176557126416642 0.176557126416642
-1079 1095 1096 0.106445830238736 0.106445830238736
-1081 1097 1098 0.0486277340974482 0.0486277340974482
-18378 2549 8381 0.409599255943821 0.409599255943821
-8425 4370 2496 0.102227972652095 0.102227972652095
-1101 1117 1118 0.104134759343337 0.104134759343337
-19670 9361 9367 0.104968988119014 0.104968988119014
-11768 8406 8391 0.072368398733761 0.072368398733761
-11405 6191 577 0.346853696348124 0.346853696348124
-11711 2125 2126 0.0693722119224359 0.0693722119224359
-1121 1137 1138 0.209246619241212 0.209246619241212
-11896 1345 8466 0.0539854948645785 0.0539854948645785
-8519 3823 6870 0.0122276886226055 0.0122276886226055
-1142 1161 1045 0.106182749069371 0.106182749069371
-1143 1045 1162 0.0572035723632033 0.0572035723632033
-11949 8497 8498 0.0157235898061176 0.0157235898061176
-8563 6893 6894 0.0563604312984052 0.0563604312984052
-1161 1180 1181 0.108807320753836 0.108807320753836
-1162 1181 555 0.0264412731929892 0.0264412731929892
-11990 6574 4455 0.147936408791814 0.147936408791814
-8587 6905 6906 0.00825706398143248 0.00825706398143248
-1181 1196 1197 0.0308045840002764 0.0308045840002764
-16676 9978 9979 0.0911222888155273 0.0911222888155273
-12046 8525 8526 0.0214801658544325 0.0214801658544325
-8609 4639 1260 0.0990232299326886 0.0990232299326886
-20366 10746 10748 0.00389959559054649 0.00389959559054649
-8754 6984 6985 0.142274771709776 0.142274771709776
-15273 8632 8698 0.0321488809830426 0.0321488809830426
-12327 8651 8462 0.0863896937468126 0.0863896937468126
-8825 7022 7023 0.132397309217195 0.132397309217195
-15906 8604 1831 0.0312706435771371 0.0312706435771371
-8982 704 420 0.200616718436647 0.200616718436647
-1261 1282 24 0.134590345997008 0.134590345997008
-18452 7704 9427 0.203142152499049 0.203142152499049
-12940 8766 1971 0.0880952038111177 0.0880952038111177
-12050 8529 8530 0.0322062217802774 0.0322062217802774
-1281 1306 1307 0.102064457561207 0.102064457561207
-12052 8529 8412 0.0524928623134227 0.0524928623134227
-20805 10934 7427 0.00626540347624637 0.00626540347624637
-9106 7163 7164 0.0532969377049032 0.0532969377049032
-1301 1326 1327 0.0908036524111016 0.0908036524111016
-1302 1327 1328 0.187321516717609 0.187321516717609
-20389 10773 10765 0.00486729953892219 0.00486729953892219
-20812 7034 10952 0.00504516380305115 0.00504516380305115
-12945 8883 8884 0.0693524767029838 0.0693524767029838
-9177 1813 7200 0.0899820045120437 0.0899820045120437
-12258 8619 8617 0.025123815719297 0.025123815719297
-9178 132 7201 0.0532452299195118 0.0532452299195118
-13064 8946 8947 0.0850173355126965 0.0850173355126965
-9301 7274 6989 0.145898107890786 0.145898107890786
-1340 1368 1369 0.19896343011117 0.19896343011117
-20815 7168 10919 0.00784309361436635 0.00784309361436635
-9323 7286 7287 0.0531798537803958 0.0531798537803958
-18312 7244 7291 0.112193704343122 0.112193704343122
-20817 10953 10288 0.00348743524444471 0.00348743524444471
-20818 10288 10921 0.00283999263123215 0.00283999263123215
-9345 7305 6323 0.0511693918815177 0.0511693918815177
-20831 10939 10947 0.189387199061175 0.189387199061175
-20504 10061 10815 0.00579629159172248 0.00579629159172248
-12268 8625 8626 0.00924470302738606 0.00924470302738606
-18317 7365 7366 0.190091232151663 0.190091232151663
-18915 10393 10394 0.0257178211457629 0.0257178211457629
-9548 5843 7400 0.197969196756037 0.197969196756037
-1402 1428 1429 0.0514192906451236 0.0514192906451236
-19551 10559 10558 0.0350073244923259 0.0350073244923259
-20372 10756 10757 0.119877702556756 0.119877702556756
-18474 9006 9005 0.01365486811001 0.01365486811001
-9618 6255 7423 0.201105238361345 0.201105238361345
-1423 1446 1447 0.102065186535373 0.102065186535373
-12355 8667 8662 0.00824054620763183 0.00824054620763183
-13473 9096 9097 0.0791788196488147 0.0791788196488147
-13558 9033 9033 0.000550802138422688 0.000550802138422688
-9720 5436 7485 0.210597915191446 0.210597915191446
-1445 1465 778 0.201931327083159 0.201931327083159
-16745 10007 6830 0.0463356709963923 0.0463356709963923
-18484 9139 9145 0.0170083591694009 0.0170083591694009
-18486 9146 1121 0.0502889247784144 0.0502889247784144
-13588 9137 9132 0.0916872062208973 0.0916872062208973
-18564 10320 10321 0.148893183386122 0.148893183386122
-1470 1490 1454 0.0984270848036789 0.0984270848036789
-11793 8412 1301 0.0102820603565046 0.0102820603565046
-13649 9157 9158 0.11057157733623 0.11057157733623
-9923 7595 5945 0.197471792675123 0.197471792675123
-1492 1512 1513 0.240760864140441 0.240760864140441
-1493 1513 1514 0.0903356876724302 0.0903356876724302
-18489 9154 9164 0.0526957444463644 0.0526957444463644
-9949 7606 7607 0.0349507847949759 0.0349507847949759
-1512 1531 1532 0.421840818868262 0.421840818868262
-1514 1533 1534 0.0990053945754622 0.0990053945754622
-18920 10391 10399 0.0111591670236662 0.0111591670236662
-10025 6642 3954 0.137704462550789 0.137704462550789
-1533 1556 1557 0.0904418216599082 0.0904418216599082
-1535 1558 1559 0.0987505899129773 0.0987505899129773
-19486 10409 10426 0.0202821728904968 0.0202821728904968
-10050 7651 7652 0.0462326431468639 0.0462326431468639
-1552 1577 1578 0.0904564264247089 0.0904564264247089
-1554 1579 1580 0.0903173650147356 0.0903173650147356
-18611 2585 1850 0.178619647699559 0.178619647699559
-19139 479 10436 0.0608772998887891 0.0608772998887891
-10147 7693 7694 0.00731957097451548 0.00731957097451548
-1571 1598 1600 0.0527554061663716 0.0527554061663716
-18460 6389 9354 0.131365686337894 0.131365686337894
-13942 9095 9242 0.111189675764469 0.111189675764469
-10218 6638 5410 0.0525082825873588 0.0525082825873588
-11529 809 810 0.133518358438394 0.133518358438394
-16258 9267 3529 0.187765741537081 0.187765741537081
-10288 7759 7760 0.0990614933501691 0.0990614933501691
-1610 1640 1641 0.0829769157452624 0.0829769157452624
-1611 1641 1642 0.0110107206173314 0.0110107206173314
-14142 478 9286 0.110440686979957 0.110440686979957
-10359 6835 4056 0.176947127899101 0.176947127899101
-10360 4056 7791 0.153314942388554 0.153314942388554
-16039 9796 9803 0.17034831343451 0.17034831343451
-20229 8818 8827 0.0165504595782256 0.0165504595782256
-15466 9616 9605 0.0511543414269977 0.0511543414269977
-10664 7914 2973 0.0665734173113744 0.0665734173113744
-1646 1673 1674 0.136622102626379 0.136622102626379
-1647 1674 1675 0.135851990536989 0.135851990536989
-15467 9605 7963 0.0172079120084978 0.0172079120084978
-1668 1693 1694 0.101380870701686 0.101380870701686
-11218 3630 8166 0.0456744230751041 0.0456744230751041
-15788 9639 9625 0.0212057259943503 0.0212057259943503
-11369 8219 7971 0.0335395055556045 0.0335395055556045
-16195 7725 5820 0.195527635044049 0.195527635044049
-16196 5820 7207 0.20506620423787 0.20506620423787
-11659 7036 3421 0.201375612760589 0.201375612760589
-11773 2681 5358 0.147201059924865 0.147201059924865
-17216 8420 1908 0.199697066538748 0.199697066538748
-16157 9835 9836 0.024879986991164 0.024879986991164
-18699 1320 1376 0.177502821070015 0.177502821070015
-12115 8553 8554 0.175311002200187 0.175311002200187
-19503 10530 10531 0.0385295444601748 0.0385295444601748
-16538 9932 9933 0.139509514048293 0.139509514048293
-1717 1736 1737 0.0422973816408655 0.0422973816408655
-17220 3087 9830 0.198791677003679 0.198791677003679
-12205 8587 7095 0.0103763001462627 0.0103763001462627
-1748 1765 1768 0.20159496635188 0.20159496635188
-12332 8654 8655 0.0104809427005404 0.0104809427005404
-19506 10533 7232 0.00927443019901883 0.00927443019901883
-12444 8704 8705 0.0186821732215156 0.0186821732215156
-1767 1785 1786 0.049264963521636 0.049264963521636
-16454 9909 9910 0.124306713488191 0.124306713488191
-12491 8717 8718 0.055230353030641 0.055230353030641
-12493 8719 8720 0.118556931073074 0.118556931073074
-16535 4328 8117 0.102336137979151 0.102336137979151
-1810 1826 1827 0.198453556780362 0.198453556780362
-18642 7416 4062 0.177070510498962 0.177070510498962
-12605 384 4685 0.0512286127934627 0.0512286127934627
-1838 1854 1855 0.0513002538457751 0.0513002538457751
-1839 1855 1856 0.0505552484656801 0.0505552484656801
-16789 8649 10013 0.223567773525098 0.223567773525098
-12632 2360 3710 0.110712951608372 0.110712951608372
-1858 1870 1871 0.100377935012122 0.100377935012122
-17014 10053 10054 0.0101091220768254 0.0101091220768254
-12810 8258 8846 0.197578956532281 0.197578956532281
-12812 8846 6028 0.064250785290107 0.064250785290107
-12814 8847 8848 0.169735694825716 0.169735694825716
-12816 8848 297 0.081779930762806 0.081779930762806
-16613 9942 2685 0.29520243699611 0.29520243699611
-12926 8892 8893 0.0723033727126927 0.0723033727126927
-13020 8924 8925 0.0102645296363106 0.0102645296363106
-13048 8934 8935 0.109609070074496 0.109609070074496
-14679 9301 445 0.205255827063182 0.205255827063182
-17965 10232 10237 0.0287772787854116 0.0287772787854116
-18916 10395 10396 0.0665707610088623 0.0665707610088623
-17673 8930 8847 0.0672232407607821 0.0672232407607821
-19611 10510 10586 0.0687878070750461 0.0687878070750461
-1895 1909 1910 0.0533681732492523 0.0533681732492523
-18738 1858 7870 0.177701929540755 0.177701929540755
-18722 1312 9772 0.242272496904356 0.242272496904356
-13294 4282 4326 0.048552671008238 0.048552671008238
-1916 1928 1929 0.105818779358726 0.105818779358726
-18739 7870 4057 0.175799763463846 0.175799763463846
-18654 6221 7655 0.275174189153955 0.275174189153955
-1942 1956 1957 0.0270768788779568 0.0270768788779568
-13392 311 9059 0.0124055357740245 0.0124055357740245
-18659 7643 6205 0.176055293755678 0.176055293755678
-13405 8942 9061 0.112337222040467 0.112337222040467
-19275 10446 10424 0.0353155595120025 0.0353155595120025
-1960 1977 1978 0.0139641936224905 0.0139641936224905
-13485 9102 308 0.0118340647108347 0.0118340647108347
-20374 10758 3588 0.00620515380678302 0.00620515380678302
-18262 2547 6067 0.202075066970098 0.202075066970098
-13520 9073 117 0.110830423506594 0.110830423506594
-13529 5647 9088 0.177768687230353 0.177768687230353
-19599 1871 10582 0.0185256932684462 0.0185256932684462
-13548 447 2999 0.0894668373271695 0.0894668373271695
-13553 9126 579 0.319404247396224 0.319404247396224
-18657 7657 10331 0.158775443026926 0.158775443026926
-13716 6715 4211 0.0895901111539728 0.0895901111539728
-2012 2021 2022 0.202353267688237 0.202353267688237
-18846 10364 10366 0.0360011605118072 0.0360011605118072
-13805 9197 6639 0.199762828560815 0.199762828560815
-18572 10317 10318 0.0818849597364774 0.0818849597364774
-2037 2046 2047 0.202843850092204 0.202843850092204
-2038 2047 2048 0.202089258953368 0.202089258953368
-19239 8480 10459 0.145581432505511 0.145581432505511
-13871 2282 3603 0.0995034643784278 0.0995034643784278
-2058 746 1564 0.142548749521321 0.142548749521321
-12345 8661 8662 0.0184782413605156 0.0184782413605156
-13933 9117 9237 0.0487812750222334 0.0487812750222334
-13946 9243 9109 0.0432001724914345 0.0432001724914345
-20415 10773 10767 0.0164543942872072 0.0164543942872072
-15289 7065 9559 0.00979064512162057 0.00979064512162057
-15406 9582 9586 0.261696459707034 0.261696459707034
-14374 512 3439 0.0820413167433817 0.0820413167433817
-15291 9560 9561 0.0474312472960203 0.0474312472960203
-20033 3666 9939 0.222490979962601 0.222490979962601
-14436 9351 6743 0.133828356760244 0.133828356760244
-2083 2084 2085 0.132628008561016 0.132628008561016
-20269 10721 10704 0.0408769490843711 0.0408769490843711
-20257 7553 10687 0.047722995184739 0.047722995184739
-14596 9395 7373 0.0500503806511319 0.0500503806511319
-2107 1822 2109 0.0984259671843471 0.0984259671843471
-18860 10369 10362 0.0840816587742034 0.0840816587742034
-20253 10719 5572 0.00788824170654016 0.00788824170654016
-16690 9989 9990 0.0859897279747206 0.0859897279747206
-2125 1981 1966 0.0405441466490896 0.0405441466490896
-16692 8314 8651 0.0716207548906764 0.0716207548906764
-16847 3130 9896 0.0388183147420438 0.0388183147420438
-12343 8658 8659 0.0326641917954917 0.0326641917954917
-16277 4438 9869 0.0429816129844846 0.0429816129844846
-2254 2256 2257 0.179026041725141 0.179026041725141
-18714 6214 7650 0.274890248386652 0.274890248386652
-2282 2281 2282 0.208433952181449 0.208433952181449
-18413 7163 7445 0.101226183618457 0.101226183618457
-2309 1585 1646 0.0852956059582778 0.0852956059582778
-17366 3085 3197 0.201028238760753 0.201028238760753
-16424 3406 3407 0.0260120249027955 0.0260120249027955
-487 487 488 0.0915902876023465 0.0915902876023465
-2504 2153 2485 0.135805715389887 0.135805715389887
-15259 9549 9550 0.0733424963845631 0.0733424963845631
-17078 8074 9872 0.138360291064547 0.138360291064547
-604 595 596 0.135530584935403 0.135530584935403
-2561 2534 2535 0.131236307359374 0.131236307359374
-11701 1064 1065 0.0735266946881119 0.0735266946881119
-11702 1065 1066 0.144526540080904 0.144526540080904
-2641 1094 1110 0.0327560682713917 0.0327560682713917
-12965 1823 1824 0.115786401746133 0.115786401746133
-2716 2671 2672 0.137037719250731 0.137037719250731
-16268 9866 8748 0.200740333998757 0.200740333998757
-2739 2694 2695 0.0520216844496084 0.0520216844496084
-18678 2801 2589 0.177457369167133 0.177457369167133
-11691 837 867 0.00774513207370433 0.00774513207370433
-11692 867 868 0.00951825440201693 0.00951825440201693
-2894 2838 2839 0.0194790124967281 0.0194790124967281
-16704 9998 9999 0.0072772776659045 0.0072772776659045
-16598 5785 8280 0.146209128325821 0.146209128325821
-2965 1143 2908 0.0621246078682317 0.0621246078682317
-16603 7894 9953 0.113998968091224 0.113998968091224
-3043 2974 2975 0.149630303255577 0.149630303255577
-18440 2971 10293 0.0852727734364054 0.0852727734364054
-3066 2997 2998 0.0208518874255557 0.0208518874255557
-18441 10293 8299 0.0364176386342536 0.0364176386342536
-3086 3018 3019 0.14545556926134 0.14545556926134
-18443 7498 10290 0.0505394400731725 0.0505394400731725
-3112 3044 3045 0.100624292928738 0.100624292928738
-18471 2985 7703 0.198649870528673 0.198649870528673
-16707 9623 9998 0.0621574034637008 0.0621574034637008
-3136 3062 2284 0.0981125078289405 0.0981125078289405
-19669 10610 9361 0.0491952199145155 0.0491952199145155
-3158 3082 3083 0.0983700193882712 0.0983700193882712
-11703 1066 1158 0.148869854474817 0.148869854474817
-3181 3101 3102 0.0962927982103224 0.0962927982103224
-18133 4095 6040 0.192431028537818 0.192431028537818
-18446 10289 7781 0.0503825451517732 0.0503825451517732
-3230 3144 3145 0.203548069983679 0.203548069983679
-18448 9292 9527 0.134072690600401 0.134072690600401
-11705 1159 1244 0.147081474347396 0.147081474347396
-3281 3193 3194 0.106476946636896 0.106476946636896
-16416 3034 3130 0.0869691229324941 0.0869691229324941
-3302 3210 3211 0.0503243467464606 0.0503243467464606
-18899 10379 10380 0.00404144992313864 0.00404144992313864
-11709 1301 1302 0.0358989065327031 0.0358989065327031
-3325 3227 3228 0.131949141660574 0.131949141660574
-12952 1330 1361 0.0263074187615997 0.0263074187615997
-3400 3297 3298 0.0238019064284447 0.0238019064284447
-3489 1140 907 0.140863651036277 0.140863651036277
-16744 7566 10007 0.0424762897679241 0.0424762897679241
-18732 9833 7646 0.178089933314901 0.178089933314901
-3516 3387 3388 0.0211650011658898 0.0211650011658898
-12955 1478 1507 0.126108135430878 0.126108135430878
-3561 3424 3425 0.0612760168169184 0.0612760168169184
-16837 10019 9847 0.0370069651425935 0.0370069651425935
-3583 3438 1421 0.115878563365398 0.115878563365398
-12960 1632 1633 0.128348569926215 0.128348569926215
-3684 3520 3521 0.0506146313810284 0.0506146313810284
-18464 10298 9139 0.0193791784570559 0.0193791784570559
-3734 1037 3568 0.052776292073227 0.052776292073227
-19333 2826 10473 0.01148052310696 0.01148052310696
-18465 9139 541 0.0794672162259436 0.0794672162259436
-3755 3585 3586 0.0186262558199583 0.0186262558199583
-17071 4599 3687 0.240616539690475 0.240616539690475
-3805 3624 3250 0.195616461429944 0.195616461429944
-11577 1766 1595 0.0489656343684566 0.0489656343684566
-3825 3641 3642 0.0193156490955763 0.0193156490955763
-17299 5829 8716 0.20447937601548 0.20447937601548
-3847 3658 3639 0.0475522464454704 0.0475522464454704
-18869 10144 10372 0.0637708443692985 0.0637708443692985
-16541 812 3553 0.152482276035164 0.152482276035164
-20222 7195 10711 0.0935594253631277 0.0935594253631277
-19431 10003 8707 0.100281643377189 0.100281643377189
-3891 3519 3695 0.200167523328644 0.200167523328644
-16751 6829 10008 0.0961527504424716 0.0961527504424716
-3916 3713 3714 0.1010804805974 0.1010804805974
-15272 8538 8632 0.0716756500086966 0.0716756500086966
-3938 3736 3737 0.112607595972795 0.112607595972795
-18125 4097 6042 0.191481087124581 0.191481087124581
-19576 10572 7461 0.00811745051204977 0.00811745051204977
-12969 1970 1971 0.103498330022734 0.103498330022734
-4039 3819 3820 0.147623529549067 0.147623529549067
-18745 5190 2608 0.176866790100876 0.176866790100876
-4127 3890 3891 0.179468370845182 0.179468370845182
-12335 8652 8653 0.0109021010822668 0.0109021010822668
-4149 3906 1161 0.136761513456038 0.136761513456038
-17950 6559 10229 0.0124761805379247 0.0124761805379247
-4173 1891 706 0.0588353275400914 0.0588353275400914
-14115 3623 3925 0.0987645160792797 0.0987645160792797
-16843 10020 10021 0.00337377443816097 0.00337377443816097
-4194 3942 3943 0.176445012103913 0.176445012103913
-18245 2433 9358 0.201879495148218 0.201879495148218
-18189 6055 5795 0.200795798534704 0.200795798534704
-4450 3345 4152 0.10312101394972 0.10312101394972
-18872 9232 7825 0.160805002055775 0.160805002055775
-4529 4204 4205 0.278098742346476 0.278098742346476
-18399 2541 10285 0.412599954612644 0.412599954612644
-4637 4281 913 0.111497113872301 0.111497113872301
-16900 4255 3513 0.200996147699506 0.200996147699506
-15919 9746 7414 0.0221971015175522 0.0221971015175522
-4682 4322 4323 0.0558862625971893 0.0558862625971893
-16298 2636 2637 0.0033759355903552 0.0033759355903552
-18879 6125 1927 0.199518260048308 0.199518260048308
-4761 1489 145 0.199750566224671 0.199750566224671
-18696 4055 6400 0.176933507030136 0.176933507030136
-16300 2637 2160 0.00247295077408309 0.00247295077408309
-4832 1268 4428 0.206285087175769 0.206285087175769
-18888 7247 1923 0.201674729042946 0.201674729042946
-4997 4543 4544 0.132688906239847 0.132688906239847
-16650 9968 9969 0.0122299544992289 0.0122299544992289
-13009 2891 2892 0.172319187220424 0.172319187220424
-5024 4562 4563 0.200718931282707 0.200718931282707
-16315 3005 1362 0.00318470714397005 0.00318470714397005
-5188 4685 4686 0.177776490265982 0.177776490265982
-17297 10086 7736 0.198049290500642 0.198049290500642
-20272 10721 10703 0.0411977345042915 0.0411977345042915
-5368 3223 4808 0.133968729582188 0.133968729582188
-18898 10378 10379 0.00446883067059111 0.00446883067059111
-5393 4828 4829 0.40282604477454 0.40282604477454
-20273 10703 10725 0.144609051598102 0.144609051598102
-5414 4842 1486 0.202708226253938 0.202708226253938
-5490 458 4898 0.0468723555946229 0.0468723555946229
-19112 8424 10118 0.19768851226159 0.19768851226159
-5515 1212 4920 0.232222389672051 0.232222389672051
-19281 10466 8768 0.124416605605605 0.124416605605605
-5542 2537 4941 0.438197641658083 0.438197641658083
-20340 10739 10748 0.00884971981393432 0.00884971981393432
-19231 10455 10456 0.1184623603546 0.1184623603546
-5626 3284 1058 0.0983991410952824 0.0983991410952824
-18347 7686 2429 0.200029751476084 0.200029751476084
-17080 1162 882 0.139677295386473 0.139677295386473
-6004 5259 5260 0.066486526131314 0.066486526131314
-14136 9281 509 0.032133360210872 0.032133360210872
-17116 4052 3775 0.00847774353709404 0.00847774353709404
-6616 5699 5700 0.00800603928165774 0.00800603928165774
-19812 7122 5371 0.176755455393693 0.176755455393693
-6777 5820 5821 0.0499181980722273 0.0499181980722273
-4400 4114 4115 0.202509931844666 0.202509931844666
-11451 8258 8261 0.200629988067775 0.200629988067775
-19818 10647 5606 0.0519771701713562 0.0519771701713562
-6974 2119 5953 0.0979282440578051 0.0979282440578051
-4402 4117 2874 0.134125988252719 0.134125988252719
-4403 2874 4118 0.140174877049639 0.140174877049639
-17149 46 4780 0.204228808601968 0.204228808601968
-7674 1498 187 0.203419998803368 0.203419998803368
-7719 6393 6394 0.135380647167761 0.135380647167761
-20324 10732 10743 0.016217938211146 0.016217938211146
-7749 6408 6409 0.240033624288878 0.240033624288878
-20330 10744 10736 0.0345659354386547 0.0345659354386547
-7835 4630 1259 0.131787660470127 0.131787660470127
-5519 4922 2815 0.0131824278657025 0.0131824278657025
-7914 3652 89 0.238216692287668 0.238216692287668
-17155 3202 3091 0.199774901839453 0.199774901839453
-7937 6530 6531 0.246221323543984 0.246221323543984
-20342 2965 10747 0.0130500853290149 0.0130500853290149
-7957 3453 6015 0.103911955569673 0.103911955569673
-17306 8715 5827 0.20364289358169 0.20364289358169
-7981 6550 6526 0.0499792827976588 0.0499792827976588
-18128 10269 10270 0.123006178444702 0.123006178444702
-8007 6565 6566 0.0461778743400118 0.0461778743400118
-12262 8500 8621 0.00391508697358849 0.00391508697358849
-20346 10731 10745 0.0882403942542692 0.0882403942542692
-8080 6611 6612 0.10285099566632 0.10285099566632
-20503 10831 10061 0.00544027190297384 0.00544027190297384
-17159 5011 5064 0.204989668883762 0.204989668883762
-14700 4773 5065 0.177184173799166 0.177184173799166
-8102 6628 6630 0.0733305516170216 0.0733305516170216
-14712 935 5453 0.176927806170623 0.176927806170623
-8148 6658 1326 0.126702346827637 0.126702346827637
-14707 5162 5223 0.123984475685155 0.123984475685155
-8332 6761 6762 0.0544299595372282 0.0544299595372282
-17167 48 5241 0.405295346029575 0.405295346029575
-8384 6791 4603 0.174075741649446 0.174075741649446
-20516 6731 10843 0.0163123315737135 0.0163123315737135
-17171 5280 3092 0.401948502237413 0.401948502237413
-8434 6821 1593 0.0969711334947841 0.0969711334947841
-14711 2220 935 0.183060496140458 0.183060496140458
-8536 6880 1128 0.0335501177019022 0.0335501177019022
-19635 10525 10595 0.00694156278564008 0.00694156278564008
-18504 9353 6386 0.133800859600802 0.133800859600802
-8556 6891 6418 0.133199850282798 0.133199850282798
-8557 6418 4625 0.132396793169127 0.132396793169127
-17175 5327 5390 0.196700288812187 0.196700288812187
-18507 8379 10301 0.115242670596916 0.115242670596916
-8578 6280 6899 0.103595480205117 0.103595480205117
-4404 4118 4119 0.131974592337134 0.131974592337134
-18510 10301 9529 0.136169474903607 0.136169474903607
-4406 4120 4121 0.394524879292727 0.394524879292727
-19640 10596 10598 0.0045286617175965 0.0045286617175965
-8728 3385 6959 0.0627894298641218 0.0627894298641218
-18496 6384 9201 0.134997571408585 0.134997571408585
-18514 10302 5543 0.103400383164669 0.103400383164669
-8779 6999 7000 0.178967474513147 0.178967474513147
-18515 5543 2412 0.101763704229338 0.101763704229338
-8803 5141 2236 0.0248346840292332 0.0248346840292332
-19831 10650 10651 0.138361801446117 0.138361801446117
-8887 3285 1059 0.0976623415502941 0.0976623415502941
-17182 5607 5608 0.205054564403698 0.205054564403698
-8909 3021 7068 0.0519035642154067 0.0519035642154067
-4407 3574 4122 0.137780007377075 0.137780007377075
-14713 5453 5664 0.115365301333729 0.115365301333729
-9019 3944 7121 0.0616182757003265 0.0616182757003265
-18655 7655 10305 0.198541985736116 0.198541985736116
-9043 7135 4276 0.121250513345306 0.121250513345306
-18147 10258 6033 0.201162874084808 0.201162874084808
-9226 7232 7233 0.0701236279353194 0.0701236279353194
-18152 10264 10277 0.407566866193853 0.407566866193853
-9304 6121 1920 0.204110733126185 0.204110733126185
-18153 4104 6047 0.112519690969595 0.112519690969595
-11446 385 387 0.611916175000286 0.611916175000286
-17478 5886 323 0.0446797516163588 0.0446797516163588
-9352 6077 7309 0.0481617931874556 0.0481617931874556
-20395 10775 10776 0.00739420688081638 0.00739420688081638
-18154 6047 10135 0.201285870335585 0.201285870335585
-20429 10789 10790 0.0478990795077935 0.0478990795077935
-9375 7320 1193 0.16722266002845 0.16722266002845
-18274 6666 6667 0.19713796716552 0.19713796716552
-9396 4346 6344 0.137277828740194 0.137277828740194
-7038 2477 5911 0.20568880939919 0.20568880939919
-9526 7390 6591 0.199950723674749 0.199950723674749
-9527 6591 7113 0.204992725577621 0.204992725577621
-4408 4122 4123 0.139283771950412 0.139283771950412
-20440 8230 10798 0.00724995456680097 0.00724995456680097
-9657 7441 7443 0.137227628583058 0.137227628583058
-17487 4652 4653 0.0539741907357585 0.0539741907357585
-9708 7472 7473 0.0204539718039878 0.0204539718039878
-18246 9358 9377 0.403042223701425 0.403042223701425
-9812 7530 3064 0.202502418308833 0.202502418308833
-17689 6172 6173 0.109301053367223 0.109301053367223
-9839 7545 7546 0.200378656030458 0.200378656030458
-17691 6191 6192 0.114641917935369 0.114641917935369
-9862 7563 7564 0.144864127295822 0.144864127295822
-18248 8108 10283 0.203688042743378 0.203688042743378
-9912 7587 7588 0.0177693522294632 0.0177693522294632
-12245 8614 8615 0.00283454394049719 0.00283454394049719
-20023 7898 8856 0.145457290364043 0.145457290364043
-20462 10063 10815 0.0787418608501839 0.0787418608501839
-10159 5268 6906 0.123203894056526 0.123203894056526
-20464 10816 10812 0.0195704583026571 0.0195704583026571
-11511 8294 8295 0.0520431495126935 0.0520431495126935
-18214 6382 6383 0.202997553277811 0.202997553277811
-10231 6520 7739 0.0500835268559568 0.0500835268559568
-18257 3984 6760 0.19949668413334 0.19949668413334
-10280 7447 7757 0.470575008371913 0.470575008371913
-11783 8122 8036 0.0779413781888185 0.0779413781888185
-14738 6526 6538 0.170206219459847 0.170206219459847
-10497 4733 6800 0.110360790137427 0.110360790137427
-20473 10823 10777 0.00660874071248581 0.00660874071248581
-10520 7847 7425 0.0489570822105033 0.0489570822105033
-18522 4015 10297 0.0710067813209419 0.0710067813209419
-10541 7855 7856 0.177133627375528 0.177133627375528
-10542 7856 2614 0.178768427477815 0.178768427477815
-18524 1880 9146 0.0581549975210073 0.0581549975210073
-10589 7869 6640 0.0423030177562977 0.0423030177562977
-18270 5525 6463 0.15576453739372 0.15576453739372
-10616 7882 4885 0.155749664880603 0.155749664880603
-18528 9272 9525 0.133068770502091 0.133068770502091
-10639 7897 7898 0.052238135352395 0.052238135352395
-10663 7913 7914 0.0662287183378057 0.0662287183378057
-18276 1427 6667 0.0124761175920816 0.0124761175920816
-14745 4866 6690 0.193273433165028 0.193273433165028
-12385 1624 3930 0.0974730336125312 0.0974730336125312
-18277 6667 6720 0.144754021853131 0.144754021853131
-10816 7993 6492 0.0854037034050773 0.0854037034050773
-14747 6732 6733 0.0789150394398201 0.0789150394398201
-12453 3191 6107 0.202925463206431 0.202925463206431
-16202 5822 7727 0.19552660887524 0.19552660887524
-18539 5559 10311 0.589298128069539 0.589298128069539
-10890 3025 8025 0.123630898552104 0.123630898552104
-15899 9255 7490 0.0311439652684609 0.0311439652684609
-18550 4298 9428 0.104368579037722 0.104368579037722
-11283 8190 8201 0.0778576783996018 0.0778576783996018
-4409 4123 4124 0.135738728632571 0.135738728632571
-13171 7691 8995 0.0242708657605628 0.0242708657605628
-11527 809 8301 0.0665080068102908 0.0665080068102908
-15908 9084 9085 0.0343875506043555 0.0343875506043555
-14757 2212 4862 0.162593070375603 0.162593070375603
-11742 8382 8383 0.00390317600089655 0.00390317600089655
-18302 5737 2440 0.171112285574699 0.171112285574699
-11766 8404 8405 0.0591205771532174 0.0591205771532174
-11998 5505 7079 0.147126356992669 0.147126356992669
-12060 332 268 0.0944572536860071 0.0944572536860071
-4411 3048 4125 0.136438064344983 0.136438064344983
-20391 10766 10774 0.00648510043864555 0.00648510043864555
-4412 4125 4126 0.00355827872013668 0.00355827872013668
-19845 9516 10657 0.207937764412144 0.207937764412144
-16200 1790 7209 0.198939694041251 0.198939694041251
-20399 10763 3591 0.00757376863172981 0.00757376863172981
-12520 8729 1189 0.0214820993457698 0.0214820993457698
-20644 10877 4517 0.0511435578342218 0.0511435578342218
-12620 8775 4920 0.0124622300083447 0.0124622300083447
-20646 10035 10880 0.0235473019855852 0.0235473019855852
-12646 5921 920 0.178961176893159 0.178961176893159
-12691 8806 8807 0.0113998193117656 0.0113998193117656
-12822 8261 493 0.226877195561116 0.226877195561116
-13034 8927 585 0.0555278029535648 0.0555278029535648
-14668 6327 4166 0.169217141640748 0.169217141640748
-14856 9434 8907 0.112945329265115 0.112945329265115
-20835 10948 10929 0.0711141044607233 0.0711141044607233
-13572 2184 9130 0.046228028674551 0.046228028674551
-4413 4126 4127 0.123682116907034 0.123682116907034
-4414 4127 4128 0.0151340374611755 0.0151340374611755
-14780 5922 921 0.178257163080484 0.178257163080484
-13824 9203 7891 0.0449920400202888 0.0449920400202888
-13970 9249 9250 0.0321739674064664 0.0321739674064664
-20559 2957 10784 0.0120134443189883 0.0120134443189883
-14029 9262 6653 0.100609617198747 0.100609617198747
-15915 9746 9747 0.0832769023011374 0.0832769023011374
-11415 7985 8000 0.0154063290418794 0.0154063290418794
-14233 8687 6694 0.0247755996269239 0.0247755996269239
-20569 10787 10858 0.0193290169195346 0.0193290169195346
-14464 6149 3994 0.0989127437299345 0.0989127437299345
-14635 9387 9388 0.0403809617749613 0.0403809617749613
-11212 391 392 0.10291889633356 0.10291889633356
-14604 9397 9398 0.123826706008273 0.123826706008273
-14637 9406 2243 0.00956376056529555 0.00956376056529555
-15410 9588 9589 0.0190893984820006 0.0190893984820006
-15440 9601 1507 0.00768187987530518 0.00768187987530518
-16383 9771 9880 0.0381827012246672 0.0381827012246672
-16620 9937 9938 0.0704692374785171 0.0704692374785171
-11802 8392 8415 0.148179257170155 0.148179257170155
-16809 4996 728 0.102190274976312 0.102190274976312
-11640 8346 4530 0.131615785848543 0.131615785848543
-16853 6519 9854 0.0497714413737895 0.0497714413737895
-4415 4128 1171 0.138086753058786 0.138086753058786
-17269 3518 82 0.205066129886621 0.205066129886621
-11951 8499 8500 0.0607548345173342 0.0607548345173342
-17324 6799 7351 0.103019517606604 0.103019517606604
-11991 4455 5503 0.144667643977852 0.144667643977852
-17388 5920 3810 0.153093198888871 0.153093198888871
-17389 3810 10095 0.199017480070308 0.199017480070308
-17407 6122 1921 0.202694690919031 0.202694690919031
-17408 1921 7246 0.200797963530598 0.200797963530598
-12044 8523 8524 0.0621486337289915 0.0621486337289915
-17448 3247 10109 0.0544983800214201 0.0544983800214201
-4416 1171 891 0.137903948024362 0.137903948024362
-12113 8552 672 0.00266902064060136 0.00266902064060136
-17549 10132 10133 2.25328864155446 2.25328864155446
-17666 8928 10162 0.0972564668123919 0.0972564668123919
-12288 8528 8526 0.152174217990106 0.152174217990106
-17729 7332 2080 0.104548139781884 0.104548139781884
-12329 8641 8652 0.00987690479251785 0.00987690479251785
-12331 8653 8654 0.00928748638267964 0.00928748638267964
-17751 8575 6706 0.145927899456713 0.145927899456713
-12936 8688 8689 0.0364958929125483 0.0364958929125483
-17774 7679 5984 0.100495969018847 0.100495969018847
-17787 9214 536 0.151808926625465 0.151808926625465
-17822 10188 10186 0.041401555151972 0.041401555151972
-17852 10195 5678 0.0176253194989635 0.0176253194989635
-17170 1912 5280 0.200459610115248 0.200459610115248
-4417 891 4129 0.140986849802137 0.140986849802137
-12947 1304 1303 0.066448544071591 0.066448544071591
-18995 3958 5601 0.119729821294068 0.119729821294068
-18382 8919 8920 0.0492932118239397 0.0492932118239397
-19080 4746 4159 0.17797879706873 0.17797879706873
-13065 8947 8948 0.014693528299895 0.014693528299895
-19135 3168 8470 0.0222426676149063 0.0222426676149063
-20824 9337 9400 0.0122401419030242 0.0122401419030242
-19172 6804 7956 0.0915174498096421 0.0915174498096421
-19618 10588 10494 0.00731369728944242 0.00731369728944242
-19331 9893 10473 0.0200896227314349 0.0200896227314349
-15874 8889 8940 0.103516223202584 0.103516223202584
-19358 9949 10479 0.0590930811213136 0.0590930811213136
-19413 7239 3251 0.195270640148282 0.195270640148282
-19962 10674 10685 0.14613727594919 0.14613727594919
-18473 9005 9006 0.01365486811001 0.01365486811001
-20041 9172 140 0.204724385208342 0.204724385208342
-18917 10396 10397 0.0952180129620757 0.0952180129620757
-20063 2998 4930 0.100928455718765 0.100928455718765
-20587 10865 10840 0.00838601883021894 0.00838601883021894
-4418 4129 2776 0.133433939347385 0.133433939347385
-14836 7396 7377 0.030817448743492 0.030817448743492
-14837 7377 3410 0.100816825455254 0.100816825455254
-15447 9607 9608 0.0162401698909022 0.0162401698909022
-309 317 318 0.0119735018205437 0.0119735018205437
-13531 5648 3387 0.0436500601039895 0.0436500601039895
-14946 8215 8212 0.101284367879663 0.101284367879663
-13555 408 9127 0.613912488305853 0.613912488305853
-14981 9463 7091 0.107883940343108 0.107883940343108
-14982 7091 8789 0.108748219147477 0.108748219147477
-13650 9158 9159 0.0150152429008076 0.0150152429008076
-15063 8874 7430 0.0504536590179092 0.0504536590179092
-17072 3687 8133 0.141298637785039 0.141298637785039
-18493 9170 5545 0.102571946583037 0.102571946583037
-15171 9511 9512 0.0502858420296349 0.0502858420296349
-15174 9514 9515 0.0498070291463972 0.0498070291463972
-18566 10322 10323 0.186113882409967 0.186113882409967
-16100 9824 9817 0.0308009946802063 0.0308009946802063
-16101 9817 8245 0.0866075022072335 0.0866075022072335
-15444 8607 9604 0.0180426861021608 0.0180426861021608
-16161 3728 722 0.106535324504203 0.106535324504203
-16174 9840 7201 0.0108095014749508 0.0108095014749508
-16239 9856 7742 0.4032601166124 0.4032601166124
-16240 7742 5837 0.199863858168715 0.199863858168715
-15881 8762 9238 0.022425928034548 0.022425928034548
-16327 3906 3134 0.109247651866168 0.109247651866168
-16328 3134 5403 0.105230091275359 0.105230091275359
-17203 10075 10076 0.206234100938924 0.206234100938924
-17253 5918 917 0.179236073493399 0.179236073493399
-18223 1695 6884 0.201956855870188 0.201956855870188
-15286 3187 9268 0.0103389762120735 0.0103389762120735
-19421 34 3533 0.2073108703911 0.2073108703911
-19436 6852 10490 0.151686039209942 0.151686039209942
-19663 10609 9366 0.0532084205099813 0.0532084205099813
-19847 10658 7133 0.20071321213787 0.20071321213787
-19953 7857 10414 0.0579007631193554 0.0579007631193554
-19293 10471 8765 0.117981892754207 0.117981892754207
-19987 9727 10653 0.0514452608394938 0.0514452608394938
-19988 10653 1103 0.0505009558673589 0.0505009558673589
-15432 9598 7965 0.00918826645895189 0.00918826645895189
-15465 9615 9616 0.0488173542586425 0.0488173542586425
-15505 2286 4494 0.207036482148074 0.207036482148074
-18430 7784 10291 0.0493825781706533 0.0493825781706533
-15468 7963 9610 0.0129310975383002 0.0129310975383002
-15643 9669 8703 0.0154036792176203 0.0154036792176203
-15293 9561 9563 0.0354006218838869 0.0354006218838869
-15662 5995 7675 0.101107003151938 0.101107003151938
-15469 9610 9613 0.00340267268464027 0.00340267268464027
-15685 3450 6014 0.102083800598865 0.102083800598865
-18613 9261 4049 0.17355432372221 0.17355432372221
-15707 8686 8810 0.0279306326987703 0.0279306326987703
-15471 9606 8892 0.117003908235376 0.117003908235376
-15762 2940 6814 0.0992967316903301 0.0992967316903301
-15764 6595 9701 0.0232598991470647 0.0232598991470647
-14656 9410 9411 0.19733052173904 0.19733052173904
-20261 10720 5750 0.00799491979378441 0.00799491979378441
-2336 1153 2328 0.201597448584961 0.201597448584961
-17300 8716 8745 0.199099643459498 0.199099643459498
-19471 10515 10516 0.00520398584376517 0.00520398584376517
-20611 10819 10828 0.0109320789190355 0.0109320789190355
-20612 10828 10821 0.0197366861798755 0.0197366861798755
-20613 10821 10870 0.0252155503065758 0.0252155503065758
-478 480 212 0.0356029775534751 0.0356029775534751
-15859 9740 9707 0.0569780852958723 0.0569780852958723
-515 509 510 0.286655598001641 0.286655598001641
-520 514 515 0.226862534758366 0.226862534758366
-15253 9545 9538 0.0260796874031177 0.0260796874031177
-624 614 615 0.101063162513791 0.101063162513791
-19463 10483 10508 0.019159575222575 0.019159575222575
-17219 3199 3087 0.202098851695834 0.202098851695834
-702 696 697 0.1055651557861 0.1055651557861
-15544 9645 9646 0.00692347068679982 0.00692347068679982
-776 778 779 0.103928492069641 0.103928492069641
-15955 6396 500 0.195346208359328 0.195346208359328
-913 927 928 0.0495542499145439 0.0495542499145439
-915 929 930 0.0493548663548942 0.0493548663548942
-15957 9767 9768 0.0474477023795114 0.0474477023795114
-932 947 948 0.100759864187185 0.100759864187185
-15960 9770 7450 0.0160716244910599 0.0160716244910599
-955 967 968 0.0165679791310418 0.0165679791310418
-957 969 970 0.197449816642368 0.197449816642368
-15913 9240 9745 0.0339191222144473 0.0339191222144473
-980 991 992 0.138684932577873 0.138684932577873
-15891 9002 7513 0.0667178592447727 0.0667178592447727
-1003 1016 1017 0.039629871856248 0.039629871856248
-1004 1017 1018 0.176155002789907 0.176155002789907
-19469 10513 10514 0.0200709923319022 0.0200709923319022
-16388 9459 9771 0.0286077698371324 0.0286077698371324
-1087 1103 1104 0.338644304966299 0.338644304966299
-17156 3091 4971 0.202252452796884 0.202252452796884
-16103 255 8239 0.267325536990832 0.267325536990832
-1170 1186 1187 0.0990780990020656 0.0990780990020656
-16337 8026 3444 0.219522804846043 0.219522804846043
-1298 1323 1324 0.104021267127805 0.104021267127805
-1299 1324 1325 0.0988550932780109 0.0988550932780109
-16392 9847 9876 0.0466572032639634 0.0466572032639634
-1322 1347 1348 0.145300158256776 0.145300158256776
-387 389 390 0.101909828504342 0.101909828504342
-19511 10536 10537 0.0367294544686212 0.0367294544686212
-1469 1489 1490 0.0976691429125615 0.0976691429125615
-12005 8512 8049 0.105397118565585 0.105397118565585
-18733 7646 6209 0.175022021354251 0.175022021354251
-16766 5003 7290 0.0493746723595829 0.0493746723595829
-1495 1515 1473 0.1629816039782 0.1629816039782
-1497 1516 1517 0.202642438735294 0.202642438735294
-16788 10012 8649 0.310114997807766 0.310114997807766
-1549 1574 1575 0.0819858846366358 0.0819858846366358
-1550 1575 1576 0.0787364050378914 0.0787364050378914
-12359 8664 8670 0.00994780391809775 0.00994780391809775
-16806 9858 3171 0.0510524682713306 0.0510524682713306
-1570 1597 1598 0.101896558922667 0.101896558922667
-2686 2646 2647 0.164307180037452 0.164307180037452
-17103 9923 330 0.250512453112542 0.250512453112542
-1650 1677 1678 0.13227170643909 0.13227170643909
-11530 810 811 0.199368445906152 0.199368445906152
-16952 10036 10037 0.00823596195269871 0.00823596195269871
-1704 1725 1726 0.0532102629650272 0.0532102629650272
-17039 9210 8988 0.00924605732532601 0.00924605732532601
-1762 1487 1782 0.108567137541803 0.108567137541803
-14689 2798 2868 0.199650986040528 0.199650986040528
-17136 4412 4425 0.202602949014775 0.202602949014775
-17489 472 4654 0.0574342005254488 0.0574342005254488
-1935 1949 1223 0.041131087786823 0.041131087786823
-1937 1950 1951 0.0773266220673917 0.0773266220673917
-16304 2826 2827 0.0584380832256012 0.0584380832256012
-17962 10235 5193 0.0148018460000789 0.0148018460000789
-2187 2187 2188 0.0698088769426891 0.0698088769426891
-17834 10187 10188 0.0373456729353608 0.0373456729353608
-17023 10058 10059 0.043764797810192 0.043764797810192
-2261 2261 2262 0.20174624930555 0.20174624930555
-20285 10701 10709 0.0172154433985116 0.0172154433985116
-16421 3331 3358 0.0229870189622456 0.0229870189622456
-20297 5579 7524 0.0531120067375217 0.0531120067375217
-12353 8669 8661 0.00857375962495721 0.00857375962495721
-16657 3462 3464 0.173665424327281 0.173665424327281
-19565 10567 7463 0.00795043725476521 0.00795043725476521
-17162 5087 5107 0.202243070877092 0.202243070877092
-19034 10159 9497 0.0427022948506461 0.0427022948506461
-20744 9001 10918 0.332184959452437 0.332184959452437
-20748 10921 10922 0.0509227801768603 0.0509227801768603
-20749 10923 10924 0.18669804780169 0.18669804780169
-20750 10925 10926 0.0392592111051346 0.0392592111051346
-20752 10927 10928 0.00711510327217607 0.00711510327217607
-20754 10929 10930 0.0834966641757845 0.0834966641757845
-20756 10931 10932 0.0408755067283247 0.0408755067283247
-20758 10933 10934 0.0399346912680156 0.0399346912680156
-20760 10935 10936 0.0903151185359097 0.0903151185359097
-20762 10937 8302 0.00392992290489043 0.00392992290489043
-20763 8302 10927 0.00412640673301695 0.00412640673301695
-20765 10918 3754 0.00609979968071289 0.00609979968071289
-20766 3754 10938 0.00661123306657495 0.00661123306657495
-20768 10920 7783 0.00949225948867298 0.00949225948867298
-20769 7783 10939 0.00900064827794335 0.00900064827794335
-20771 10940 3415 0.00746326017722055 0.00746326017722055
-20772 3415 10941 0.00571991053425525 0.00571991053425525
-20774 10938 10942 0.117980886182769 0.117980886182769
-20776 10941 10943 0.040800141538403 0.040800141538403
-20778 10929 8910 0.00644678344686978 0.00644678344686978
-20779 8910 10944 0.00853909895805364 0.00853909895805364
-20781 10926 10280 0.00413065470277064 0.00413065470277064
-20782 10280 10933 0.00507364819278473 0.00507364819278473
-16513 9922 1630 0.0152212141119797 0.0152212141119797
-16537 3671 9932 0.221180884679333 0.221180884679333
-16539 9933 7834 0.139783679739911 0.139783679739911
-16790 10013 7828 0.227723092786938 0.227723092786938
-18645 1318 5867 0.177222990129465 0.177222990129465
-16960 10042 10043 0.0112267703364208 0.0112267703364208
-17266 3520 4261 0.200318193124263 0.200318193124263
-18444 10290 1124 0.0512555936349529 0.0512555936349529
-17645 7 9825 0.783906819132393 0.783906819132393
-18721 5864 1312 0.178403401011926 0.178403401011926
-18408 6096 10287 0.0607868213781131 0.0607868213781131
-17821 10187 10188 0.0373456729353608 0.0373456729353608
-17849 2817 1418 0.198773063708036 0.198773063708036
-17914 4748 4144 0.180736428235498 0.180736428235498
-17915 4144 2362 0.17239723292509 0.17239723292509
-18664 5184 5652 0.105551381348891 0.105551381348891
-18600 10333 10334 0.176228489643034 0.176228489643034
-18763 10341 10340 0.0478284118767837 0.0478284118767837
-18822 10356 10117 0.120644655146847 0.120644655146847
-12967 1825 1881 0.094094502294363 0.094094502294363
-19280 10465 10466 0.126391742395325 0.126391742395325
-19156 8422 10431 0.296704595839795 0.296704595839795
-19440 7907 10492 0.0345487307061229 0.0345487307061229
-20295 10709 10710 0.0460287189373458 0.0460287189373458
-3578 3435 3436 0.0484142710611121 0.0484142710611121
-3579 3436 2495 0.0837858518069818 0.0837858518069818
-3580 2495 3437 0.120116992356444 0.120116992356444
-3581 3437 2842 0.00242442592962248 0.00242442592962248
-14124 506 3659 0.275685944218073 0.275685944218073
-16901 3513 74 0.203700975919817 0.203700975919817
-18139 6038 10260 0.200840451178757 0.200840451178757
-19824 7641 5603 0.172193293465978 0.172193293465978
-19832 10652 10653 0.149094174776889 0.149094174776889
-16543 3555 814 0.153171011691858 0.153171011691858
-20427 10755 10788 0.051994279761698 0.051994279761698
-11503 6094 2973 0.264851184287827 0.264851184287827
-11438 8034 511 0.21998121248842 0.21998121248842
-16767 7290 3183 0.0591297362625136 0.0591297362625136
-20517 10806 10844 0.0093521291785604 0.0093521291785604
-18290 6889 6752 0.139920838374264 0.139920838374264
-11434 8077 8253 0.0508611139110148 0.0508611139110148
-20513 10060 10809 0.00760770059759869 0.00760770059759869
-18366 7716 7754 0.0519727898310098 0.0519727898310098
-11784 8036 2685 0.144743408596787 0.144743408596787
-11570 8321 7713 0.150502362587478 0.150502362587478
-18376 8353 6069 0.193914067776721 0.193914067776721
-12066 8533 8534 0.0445577347958965 0.0445577347958965
-16678 9979 9981 0.0909471727810372 0.0909471727810372
-20808 10948 8326 0.017351380837649 0.017351380837649
-13031 590 8926 0.147745966959296 0.147745966959296
-18483 9138 9139 0.0109683239632665 0.0109683239632665
-16502 3167 9925 0.137835608828632 0.137835608828632
-16961 10043 10044 0.075399787572802 0.075399787572802
-17393 67 3508 0.205321571793414 0.205321571793414
-17395 68 7304 0.202979892499458 0.202979892499458
-17650 303 395 0.11664951410225 0.11664951410225
-18596 10330 1845 0.0286669821878414 0.0286669821878414
-18996 5601 9265 0.00587624613864547 0.00587624613864547
-19117 402 10431 0.249198506812358 0.249198506812358
-19489 4703 10441 0.0209493756701814 0.0209493756701814
-19929 9514 10680 0.206733607617385 0.206733607617385
-20583 10849 9338 0.00790665036605531 0.00790665036605531
-20193 10707 9813 0.31051590829715 0.31051590829715
-19738 9472 4893 0.184563607099297 0.184563607099297
-19739 4893 9418 0.161581410791365 0.161581410791365
-19740 9418 955 0.17512104217346 0.17512104217346
-19741 955 8865 0.17730267158364 0.17730267158364
-19745 4908 6614 0.202025102521769 0.202025102521769
-19746 6614 9456 0.193906231686937 0.193906231686937
-19747 9456 10644 0.207835763228408 0.207835763228408
-19748 10644 647 0.139231068042996 0.139231068042996
-19807 7868 3718 0.103509284327612 0.103509284327612
-19756 9305 1209 0.168197350020426 0.168197350020426
-19906 9507 10678 0.206369047895258 0.206369047895258
-17115 582 4052 0.0200066549889732 0.0200066549889732
-20290 10700 10701 0.0224013855081139 0.0224013855081139
-15856 9738 9733 0.00602831355714784 0.00602831355714784
-16390 9811 3033 0.00758642111179705 0.00758642111179705
-17208 234 10075 0.0065072113132931 0.0065072113132931
-18209 3991 6766 0.202297976338321 0.202297976338321
-314 322 323 0.0362830323344 0.0362830323344
-17944 10224 7938 0.0484797623817722 0.0484797623817722
-11519 657 658 0.200633396770054 0.200633396770054
-18400 7187 1425 0.131517435591527 0.131517435591527
-16448 9905 9906 0.00998689980616885 0.00998689980616885
-1705 1726 1727 0.0778502303245676 0.0778502303245676
-19817 3729 10647 0.0543545423636727 0.0543545423636727
-20793 10938 8908 0.0180004191395181 0.0180004191395181
-19241 8221 10460 0.0833729876311698 0.0833729876311698
-18639 5180 2582 0.17723417320802 0.17723417320802
-20291 10701 10703 0.028889965052559 0.028889965052559
-19963 4945 7404 0.157747728004848 0.157747728004848
-5109 4628 4629 0.132844583260552 0.132844583260552
-13926 8916 8922 0.136369708465648 0.136369708465648
-19964 7404 10415 0.200029723937468 0.200029723937468
-12274 8517 8518 0.0318537260898596 0.0318537260898596
-302 310 311 0.0714603355500818 0.0714603355500818
-307 315 316 0.0430385391585726 0.0430385391585726
-333 333 334 0.130005791781119 0.130005791781119
-501 338 339 0.0809671757461818 0.0809671757461818
-337 340 336 0.244398847800565 0.244398847800565
-339 341 342 0.368758396632831 0.368758396632831
-341 343 344 0.267836247641829 0.267836247641829
-1553 1578 1579 0.0969614959298273 0.0969614959298273
-360 362 363 0.19757055700413 0.19757055700413
-361 363 358 0.235481235248911 0.235481235248911
-365 366 367 0.102920688901431 0.102920688901431
-374 376 377 0.135433574317766 0.135433574317766
-376 378 379 0.134391053348824 0.134391053348824
-485 478 486 0.209563350313202 0.209563350313202
-489 489 490 0.0633762863456435 0.0633762863456435
-491 491 492 0.0663732872105415 0.0663732872105415
-493 493 494 0.169203096380544 0.169203096380544
-495 5 495 0.258130691528307 0.258130691528307
-496 495 496 0.152370734557831 0.152370734557831
-523 518 519 0.337507977198885 0.337507977198885
-525 520 521 0.106662672722042 0.106662672722042
-527 522 523 0.0555974633225448 0.0555974633225448
-529 524 525 0.0282350762510443 0.0282350762510443
-530 525 526 0.0218806529722405 0.0218806529722405
-532 527 397 0.320431501428441 0.320431501428441
-11515 270 528 0.19992365959325 0.19992365959325
-535 529 530 0.455513641378482 0.455513641378482
-537 531 532 0.375956762810707 0.375956762810707
-11371 7972 290 0.0119699038475456 0.0119699038475456
-14734 4868 2218 0.161837248854237 0.161837248854237
-6872 5877 5878 0.0844725820315708 0.0844725820315708
-16249 9860 8753 0.202765718025687 0.202765718025687
-16250 8753 9861 0.201364638358659 0.201364638358659
-16251 9861 3662 0.165177264018871 0.165177264018871
-20720 9398 9340 0.00984702702877527 0.00984702702877527
-16256 9863 8751 0.202603541868936 0.202603541868936
-16260 3650 88 0.266027674120579 0.266027674120579
-16261 88 3524 0.203075294530693 0.203075294530693
-16262 3524 9864 0.20046430405241 0.20046430405241
-16263 9864 6517 0.135079896017257 0.135079896017257
-19523 6855 10544 0.00712022213135496 0.00712022213135496
-19524 10544 10545 0.0729342151704198 0.0729342151704198
-19526 10427 10546 0.0076995400840501 0.0076995400840501
-19527 10546 10545 0.0321755552809886 0.0321755552809886
-19528 10545 10547 0.0194542890583841 0.0194542890583841
-19529 10547 10548 0.0207030648178635 0.0207030648178635
-19530 10548 10543 0.0190435691175833 0.0190435691175833
-19531 10543 10549 0.0747704686946873 0.0747704686946873
-19532 10549 6859 0.00739470505760699 0.00739470505760699
-19543 10555 10556 0.0878912692065361 0.0878912692065361
-19544 10556 7460 0.0082175900444136 0.0082175900444136
-11808 8395 2692 0.146729521611774 0.146729521611774
-19546 6852 10557 0.00689466829919516 0.00689466829919516
-19547 10557 10558 0.00988642805887056 0.00988642805887056
-19548 10558 10559 0.0350073244923259 0.0350073244923259
-19550 10409 10559 0.0205641181514586 0.0205641181514586
-343 345 346 0.0953881878570937 0.0953881878570937
-357 359 360 0.0408490640041322 0.0408490640041322
-359 361 362 0.026041104546106 0.026041104546106
-19800 8772 7638 0.176309543452907 0.176309543452907
-19802 6235 5200 0.174765267300994 0.174765267300994
-14862 8517 9439 0.0489472304938478 0.0489472304938478
-14864 9387 9440 0.0279990514780242 0.0279990514780242
-206 104 218 0.105140809305177 0.105140809305177
-207 218 219 0.425726992195474 0.425726992195474
-208 219 220 0.341194420964085 0.341194420964085
-564 250 558 0.137167107757782 0.137167107757782
-566 559 560 0.116737480647973 0.116737480647973
-570 563 564 0.00248176882120935 0.00248176882120935
-571 564 565 0.0167681949380125 0.0167681949380125
-573 566 248 0.898480310845601 0.898480310845601
-577 569 570 0.20355346310439 0.20355346310439
-578 570 571 0.196730394721169 0.196730394721169
-579 571 572 0.203615183123948 0.203615183123948
-580 572 573 0.198181200751108 0.198181200751108
-14119 4047 3768 0.167133877022618 0.167133877022618
-16964 10030 10041 0.01368783886441 0.01368783886441
-17397 72 7305 0.205159206156883 0.205159206156883
-18238 8494 6764 0.145768349374275 0.145768349374275
-19608 10515 10585 0.0689638415978994 0.0689638415978994
-18764 10340 10339 0.0412859123428405 0.0412859123428405
-18823 10117 10113 0.0135016334010227 0.0135016334010227
-19106 10358 10371 0.165108727109845 0.165108727109845
-19491 10447 10448 0.0188144168916081 0.0188144168916081
-20034 9939 10087 0.139116164222915 0.139116164222915
-20585 10868 10860 0.0191301130167572 0.0191301130167572
-16225 9851 8750 0.201618763717288 0.201618763717288
-16226 8750 9852 0.201631838787549 0.201631838787549
-16227 9852 3528 0.200735525849656 0.200735525849656
-16228 3528 92 0.203732802229698 0.203732802229698
-16230 9853 7739 0.398547510805713 0.398547510805713
-16231 7739 5833 0.201507956367007 0.201507956367007
-16232 5833 9854 0.202599224942483 0.202599224942483
-16233 9854 8749 0.200829688485991 0.200829688485991
-16234 8749 9855 0.20199683583572 0.20199683583572
-16235 9855 3526 0.201154889365918 0.201154889365918
-16236 3526 90 0.202910490655376 0.202910490655376
-16237 90 3653 0.220628466219896 0.220628466219896
-16241 5837 9857 0.2019855844315 0.2019855844315
-16242 9857 8752 0.20368896268505 0.20368896268505
-16243 8752 9858 0.200451227373991 0.200451227373991
-16244 9858 3660 0.230907711206458 0.230907711206458
-16248 5838 9860 0.202297457689378 0.202297457689378
-19645 10602 7824 0.0258612340137364 0.0258612340137364
-363 364 365 0.559719374351914 0.559719374351914
-19907 10678 9721 0.0996291174385701 0.0996291174385701
-506 500 501 0.0135415609654236 0.0135415609654236
-561 555 249 0.135203722470136 0.135203722470136
-11580 1888 1889 0.200666363671928 0.200666363671928
-15798 2349 2131 0.0298025813439396 0.0298025813439396
-539 533 534 0.0326127113197712 0.0326127113197712
-19790 4873 2223 0.160309891999679 0.160309891999679
-19791 2223 939 0.184480311036498 0.184480311036498
-19793 6601 8056 0.176023947078255 0.176023947078255
-18090 1076 4197 0.0860162512015724 0.0860162512015724
-19867 5588 10668 0.0462472353637014 0.0462472353637014
-19868 10668 3867 0.0484404910203503 0.0484404910203503
-16756 10007 10009 0.110124788745591 0.110124788745591
-20270 10704 10719 0.0406376536123098 0.0406376536123098
-20705 10912 9190 0.00712573261129369 0.00712573261129369
-18194 10279 8107 0.203288621260674 0.203288621260674
-20434 10793 8352 0.0594105399024928 0.0594105399024928
-458 461 462 0.198429530791892 0.198429530791892
-460 463 464 0.0462542784573108 0.0462542784573108
-462 465 466 0.144675049024067 0.144675049024067
-17120 4175 1798 0.171169073462998 0.171169073462998
-464 265 467 0.159364568867095 0.159364568867095
-18157 6034 6309 0.201831068920315 0.201831068920315
-4816 4421 3998 0.17545447475176 0.17545447475176
-4922 4493 4494 0.0159365819430951 0.0159365819430951
-5210 4702 4703 0.066548442936564 0.066548442936564
-7813 6447 2400 0.0150551554736642 0.0150551554736642
-16544 814 7835 0.140306546265127 0.140306546265127
-12308 8643 8644 0.0690537561530006 0.0690537561530006
-17649 227 303 0.195568266331611 0.195568266331611
-7918 6517 6518 0.0762261509888863 0.0762261509888863
-17937 10218 10222 0.0404413602972235 0.0404413602972235
-17938 10222 10219 0.0368645715567014 0.0368645715567014
-8128 6642 6643 0.177723704306915 0.177723704306915
-17941 10223 10220 0.00249551892827132 0.00249551892827132
-17943 10222 10224 0.00241172243246435 0.00241172243246435
-8312 6745 6746 0.136482587401898 0.136482587401898
-18754 7413 5870 0.17727401445854 0.17727401445854
-18755 5870 1322 0.17769011554913 0.17769011554913
-19718 10634 10631 0.0223829659698328 0.0223829659698328
-19728 5372 10636 0.0113147577104563 0.0113147577104563
-11655 8352 8354 0.0940321887930874 0.0940321887930874
-12943 1331 8882 0.0183910567310257 0.0183910567310257
-13038 8921 8931 0.0826069320981336 0.0826069320981336
-15877 9002 8833 0.267177283911404 0.267177283911404
-13924 219 9234 0.1533276461132 0.1533276461132
-14664 6543 4752 0.198706695176553 0.198706695176553
-14064 5103 7930 0.0939071679637344 0.0939071679637344
-15409 9587 9588 0.102439715732603 0.102439715732603
-17271 7309 3269 0.20118551117184 0.20118551117184
-19597 10581 10493 0.00740818165509206 0.00740818165509206
-17856 10198 10199 0.0985751913110846 0.0985751913110846
-17916 2362 5630 0.113519118424065 0.113519118424065
-17920 5276 3075 0.102745112375949 0.102745112375949
-19227 10451 10452 0.0446144989444803 0.0446144989444803
-20035 10087 7837 0.13791526067504 0.13791526067504
-418 417 418 0.0816052997413777 0.0816052997413777
-20262 5750 10721 0.00796157509542264 0.00796157509542264
-3789 1821 3611 0.0958389453890581 0.0958389453890581
-3790 3611 2772 0.203476606019223 0.203476606019223
-3793 3613 3614 0.132946325644283 0.132946325644283
-3796 3616 3617 0.204716112848492 0.204716112848492
-3797 3617 3618 0.195623928497501 0.195623928497501
-427 426 427 0.387676950856037 0.387676950856037
-429 428 429 0.0146752084107322 0.0146752084107322
-430 429 430 0.036859949213086 0.036859949213086
-431 430 431 0.0704161362424121 0.0704161362424121
-432 431 432 0.590519007108071 0.590519007108071
-4284 2975 658 0.052473064124837 0.052473064124837
-4286 1885 270 0.0500105419976734 0.0500105419976734
-4287 270 4027 0.0498040073250557 0.0498040073250557
-4288 4027 4028 0.0589001114271481 0.0589001114271481
-4289 4028 4029 0.0431017175700998 0.0431017175700998
-4360 2497 4085 0.0418616206629569 0.0418616206629569
-4362 4086 4087 0.0498519055829618 0.0498519055829618
-4375 4097 4098 0.0489802870312836 0.0489802870312836
-4376 4098 4099 0.0495757400917575 0.0495757400917575
-4377 4099 1289 0.0496665540814756 0.0496665540814756
-4388 1566 4105 0.137573017409453 0.137573017409453
-4391 695 4107 0.201385149795677 0.201385149795677
-4393 4108 4109 0.0199664273987825 0.0199664273987825
-14838 3410 8377 0.101986580237 0.101986580237
-14839 8377 7446 0.0983251649921582 0.0983251649921582
-14840 7446 7164 0.102406305295689 0.102406305295689
-14842 7777 9006 0.0511080596626327 0.0511080596626327
-14843 9006 1118 0.0498086503332092 0.0498086503332092
-14844 1118 9427 0.0503946729534928 0.0503946729534928
-14845 9427 7495 0.0500441160343634 0.0500441160343634
-14846 7495 9428 0.0499148481472719 0.0499148481472719
-16340 8082 9873 0.204288977647072 0.204288977647072
-16284 2160 2852 0.333640243849923 0.333640243849923
-16319 7334 9870 0.105486497466828 0.105486497466828
-16320 9870 3330 0.104529154175209 0.104529154175209
-16321 3330 5008 0.105000246042652 0.105000246042652
-16322 5008 9871 0.101110660676404 0.101110660676404
-16323 9871 6279 0.105691817248501 0.105691817248501
-16324 6279 9872 0.052158145666091 0.052158145666091
-16325 9872 1044 0.0524997416021315 0.0524997416021315
-16326 1044 3906 0.105460879039182 0.105460879039182
-16329 5403 7356 0.10569318364656 0.10569318364656
-16330 7356 6784 0.104889107310835 0.104889107310835
-16331 6784 5124 0.210810768544514 0.210810768544514
-20721 9340 10905 0.00789820611305507 0.00789820611305507
-20723 10753 9339 0.007875732855517 0.007875732855517
-20728 9342 9396 0.0106743790650573 0.0106743790650573
-20729 9396 10915 0.00762676803615786 0.00762676803615786
-20731 10886 10916 0.00379288018005415 0.00379288018005415
-20732 10916 10888 0.0491926355480291 0.0491926355480291
-20733 10888 10897 0.0175392611655491 0.0175392611655491
-20735 5884 5882 0.0407543500383345 0.0407543500383345
-20739 10916 10896 0.0428179717864665 0.0428179717864665
-19515 10538 10539 0.0270370607457707 0.0270370607457707
-19519 10540 10541 0.0721562499053708 0.0721562499053708
-19520 6858 10542 0.00731747119062453 0.00731747119062453
-19521 10542 10543 0.072308027249243 0.072308027249243
-19641 10598 10599 0.0410277962156296 0.0410277962156296
-19647 10527 10603 0.00759964014854772 0.00759964014854772
-8 8 9 0.136291899256532 0.136291899256532
-9 9 10 0.137589063327607 0.137589063327607
-10 10 11 0.132825874246234 0.132825874246234
-18420 9372 1692 0.204432374496239 0.204432374496239
-18421 1692 6881 0.204488584881531 0.204488584881531
-279 289 290 0.0346246156131069 0.0346246156131069
-280 290 291 0.0090342150661118 0.0090342150661118
-287 297 298 0.583705095697001 0.583705095697001
-288 298 299 0.306214311798175 0.306214311798175
-290 300 106 0.00724031766776508 0.00724031766776508
-16839 9888 10020 0.0079899169832474 0.0079899169832474
-292 301 302 0.137922345506014 0.137922345506014
-293 302 303 0.195856797695859 0.195856797695859
-295 304 305 0.071509984134022 0.071509984134022
-296 305 291 0.00958395052624692 0.00958395052624692
-298 306 307 0.132706668323714 0.132706668323714
-300 308 309 0.180558406302622 0.180558406302622
-13564 3088 497 0.0577004807279618 0.0577004807279618
-549 543 426 0.352446625998258 0.352446625998258
-552 546 547 0.162031197296959 0.162031197296959
-555 549 550 0.0907371722674166 0.0907371722674166
-16080 9284 9816 0.896094060874208 0.896094060874208
-922 936 937 0.0492564901299232 0.0492564901299232
-923 937 938 0.0472982580528762 0.0472982580528762
-924 938 939 0.0491354084196454 0.0491354084196454
-925 939 940 0.0508720309451131 0.0508720309451131
-926 940 941 0.0492045261244582 0.0492045261244582
-928 942 943 0.0497647165539241 0.0497647165539241
-929 943 944 0.0490705088651407 0.0490705088651407
-930 944 945 0.0603455693296164 0.0603455693296164
-931 946 947 0.0401316151990327 0.0401316151990327
-933 948 949 0.0998226264147839 0.0998226264147839
-934 949 950 0.0983576522120727 0.0983576522120727
-15935 9756 9757 0.156652526688463 0.156652526688463
-2725 2680 2681 0.0108684198063562 0.0108684198063562
-2726 2681 2682 0.048953084737917 0.048953084737917
-2727 2682 2683 0.0539629704453868 0.0539629704453868
-2728 2683 2684 0.0523967582185389 0.0523967582185389
-2730 2685 2686 0.0561874543205358 0.0561874543205358
-2731 2686 2687 0.0505746825733151 0.0505746825733151
-2732 2687 2688 0.0532702991765301 0.0532702991765301
-2733 2688 2689 0.0520434204860384 0.0520434204860384
-2734 2689 2690 0.0469426670134342 0.0469426670134342
-2735 2690 2691 0.0055983554055492 0.0055983554055492
-2736 2691 2692 0.0527791994653692 0.0527791994653692
-2737 2692 2693 0.0530982869497539 0.0530982869497539
-2738 2693 2694 0.0517656440902012 0.0517656440902012
-2740 2695 2696 0.0564222695417846 0.0564222695417846
-2741 2696 2697 0.0491123681137852 0.0491123681137852
-2743 2698 2563 0.102019026624601 0.102019026624601
-2745 2699 2700 0.132875620799413 0.132875620799413
-2746 2700 2701 0.135383174760531 0.135383174760531
-2747 2701 2702 0.142428760025563 0.142428760025563
-2749 2703 2704 0.0110418183352839 0.0110418183352839
-3232 1186 3146 0.0222724242580952 0.0222724242580952
-3233 3146 3147 0.199414112058729 0.199414112058729
-3235 3148 3149 0.202164772668483 0.202164772668483
-3236 3149 3150 0.200873635711822 0.200873635711822
-3238 1549 3151 0.20099284178908 0.20099284178908
-3239 3151 284 0.102708547785912 0.102708547785912
-3241 3152 3153 0.190699299195112 0.190699299195112
-3242 3153 3154 0.20682256355895 0.20682256355895
-3244 3155 3156 0.180582058742099 0.180582058742099
-3245 3156 3157 0.169576673169674 0.169576673169674
-3246 3157 3158 0.182296097160239 0.182296097160239
-3247 3158 3159 0.198872141197801 0.198872141197801
-3248 3159 3160 0.150969541792736 0.150969541792736
-3250 3161 3162 0.20389937284006 0.20389937284006
-14826 8301 6748 0.0667725814392886 0.0667725814392886
-14827 6748 7911 0.0672145953526644 0.0672145953526644
-14828 7911 6148 0.0663282745787247 0.0663282745787247
-258 257 266 0.0587628088830451 0.0587628088830451
-19749 647 7274 0.134298165118703 0.134298165118703
-19750 7274 1989 0.0916188684792704 0.0916188684792704
-19751 1989 1973 0.0380843237979454 0.0380843237979454
-19752 1973 4593 0.133556226393108 0.133556226393108
-19753 4593 6480 0.132288869732613 0.132288869732613
-19754 6480 2468 0.142585895231316 0.142585895231316
-19758 9421 959 0.172665861332853 0.172665861332853
-19759 959 10645 0.13147788241291 0.13147788241291
-19760 1208 9304 0.168127340065809 0.168127340065809
-20582 10869 10849 0.0156424449925145 0.0156424449925145
-19762 9148 5948 0.203948884455816 0.203948884455816
-19763 5948 5140 0.230511938313211 0.230511938313211
-19771 9419 957 0.173152824232778 0.173152824232778
-19772 957 8866 0.177567389214567 0.177567389214567
-19773 8866 3772 0.153916736097948 0.153916736097948
-19774 3772 10250 0.199306990270457 0.199306990270457
-19776 5481 9962 0.172319939483889 0.172319939483889
-19784 10633 5611 0.0523352586472612 0.0523352586472612
-19785 5611 10632 0.0574818788883128 0.0574818788883128
-19786 10632 3948 0.0628606527024246 0.0628606527024246
-19788 5471 9476 0.170862748175182 0.170862748175182
-19795 10242 7118 0.176747024157438 0.176747024157438
-19797 10241 6597 0.176287163937986 0.176287163937986
-19798 6597 8052 0.177501084527478 0.177501084527478
-19799 8052 8772 0.17769668863416 0.17769668863416
-20115 7697 7687 0.0337511699796145 0.0337511699796145
-19903 5589 10662 0.0571161687994488 0.0571161687994488
-19904 10662 7532 0.0504117571952022 0.0504117571952022
-19905 7532 10677 0.0997820208770486 0.0997820208770486
-19909 2313 6581 0.0799825399923036 0.0799825399923036
-19911 9640 7119 0.178268282456568 0.178268282456568
-19912 7119 10244 0.176467674531692 0.176467674531692
-19924 625 10679 0.208701850480872 0.208701850480872
-3596 897 3446 0.139044776802754 0.139044776802754
-3598 2803 3447 0.126707874592684 0.126707874592684
-3599 3447 3448 0.123301295397385 0.123301295397385
-3601 3449 3450 0.173676950071542 0.173676950071542
-3602 3450 2355 0.178205364659248 0.178205364659248
-3603 2355 3451 0.173197360497638 0.173197360497638
-19562 10565 7475 0.0791516149409225 0.0791516149409225
-3604 3451 3452 0.173541943088937 0.173541943088937
-17079 9872 1162 0.139149030623918 0.139149030623918
-3605 3452 3453 0.1769778659128 0.1769778659128
-3606 3453 3454 0.165627970000561 0.165627970000561
-3607 3454 1205 0.168543363105219 0.168543363105219
-3608 1205 3455 0.0221544930319224 0.0221544930319224
-3609 3455 3456 0.199430319568372 0.199430319568372
-3610 3456 3457 0.153671457388635 0.153671457388635
-3611 3457 954 0.177011997745418 0.177011997745418
-3616 3461 3023 0.066721008314693 0.066721008314693
-3617 3023 609 0.0626815132610695 0.0626815132610695
-3618 609 3465 0.0706324711687883 0.0706324711687883
-3620 3466 3467 0.0872559719077514 0.0872559719077514
-3621 3467 3468 0.0185752884131515 0.0185752884131515
-3624 3470 3471 0.137381540377109 0.137381540377109
-3625 3471 3472 0.139227388345715 0.139227388345715
-3627 3473 2394 0.0888475437763938 0.0888475437763938
-3628 2394 3474 0.138668820339117 0.138668820339117
-3630 752 1572 0.142095074047717 0.142095074047717
-3636 1922 3478 0.201186325897418 0.201186325897418
-3639 3479 78 0.204132972246117 0.204132972246117
-3640 78 3480 0.203867249894849 0.203867249894849
-3641 3480 3481 0.201309535256297 0.201309535256297
-3642 3481 3482 0.20059690465602 0.20059690465602
-3643 3482 3483 0.19983968701354 0.19983968701354
-3645 3484 3485 0.206291326448342 0.206291326448342
-17801 8859 9953 0.0450786858997054 0.0450786858997054
-3647 1956 3486 0.372627158727207 0.372627158727207
-3649 3487 3488 0.176001514646942 0.176001514646942
-3652 3491 3492 0.0183360753269697 0.0183360753269697
-3653 3492 1957 0.294352299971408 0.294352299971408
-3655 1514 1794 0.180158106731211 0.180158106731211
-3657 3493 3494 0.410250831833552 0.410250831833552
-3658 3494 3495 0.80930180387284 0.80930180387284
-3660 3497 3498 0.0969369694749486 0.0969369694749486
-3661 3498 3499 0.0991356893770485 0.0991356893770485
-3662 3499 3500 0.0998795294298673 0.0998795294298673
-3663 3500 3501 0.0512305304785401 0.0512305304785401
-3664 3501 3502 0.04790242821524 0.04790242821524
-3665 3502 3503 0.0976724268185372 0.0976724268185372
-3666 3503 3504 0.099556042023676 0.099556042023676
-3667 3504 3505 0.0928685437479174 0.0928685437479174
-3668 3505 3506 0.0161263903021828 0.0161263903021828
-3670 3507 3508 0.0452502277318962 0.0452502277318962
-3673 3510 3511 0.00276384344441178 0.00276384344441178
-3674 3511 3512 0.10075109326777 0.10075109326777
-3675 3512 3513 0.0463453549611142 0.0463453549611142
-3676 3513 3514 0.0488777906121745 0.0488777906121745
-3677 3514 3515 0.0517011274556552 0.0517011274556552
-3678 3515 3480 0.0495708012211316 0.0495708012211316
-3679 3480 3516 0.0493402083699287 0.0493402083699287
-3680 3516 3517 0.0507690156276584 0.0507690156276584
-3681 3517 3518 0.0480408906902884 0.0480408906902884
-3682 3518 3519 0.0499402493817724 0.0499402493817724
-3683 3519 3520 0.0491944164243011 0.0491944164243011
-3685 3521 3522 0.048707440700188 0.048707440700188
-3686 3522 3523 0.0553123927733894 0.0553123927733894
-3688 3524 3525 0.0491959341758901 0.0491959341758901
-3689 3525 3526 0.0471666433723512 0.0471666433723512
-3690 3526 3527 0.0512305206815533 0.0512305206815533
-3693 2737 3529 0.051933950168584 0.051933950168584
-3694 3529 3530 0.02212553176718 0.02212553176718
-3695 3530 3531 0.0926927616463166 0.0926927616463166
-3698 3533 3534 0.0505032949697016 0.0505032949697016
-3699 3534 3535 0.0486395723695605 0.0486395723695605
-3700 3535 3536 0.0490245580059416 0.0490245580059416
-3701 3536 3537 0.0505772192147856 0.0505772192147856
-3703 3538 3540 0.0504276967004131 0.0504276967004131
-3705 3541 3542 0.0472106572615262 0.0472106572615262
-3706 3542 1776 0.0526607102662498 0.0526607102662498
-3707 1776 3543 0.0501355164587406 0.0501355164587406
-3708 3543 3545 0.0479683302933595 0.0479683302933595
-3709 3545 3546 0.0512089379810606 0.0512089379810606
-3712 3547 3548 0.0501783172118128 0.0501783172118128
-3714 3549 3550 0.0951894457465396 0.0951894457465396
-3716 3374 3551 0.137804864391147 0.137804864391147
-3717 3552 3553 0.0519171995444708 0.0519171995444708
-3718 3553 3554 0.0504125238991067 0.0504125238991067
-3719 3554 3555 0.0509345511135035 0.0509345511135035
-3720 3555 3556 0.0352813695033733 0.0352813695033733
-3721 3556 3557 0.0165592866582096 0.0165592866582096
-3722 3557 3558 0.0492318634139881 0.0492318634139881
-3724 2895 3559 0.10435477566087 0.10435477566087
-3725 3559 3560 0.106943183049813 0.106943183049813
-3726 3560 3561 0.104660660979737 0.104660660979737
-3727 3561 3562 0.110121719044693 0.110121719044693
-3728 3562 3563 0.102966459525542 0.102966459525542
-3730 3564 3565 0.0562722873891167 0.0562722873891167
-3735 3568 3569 0.0531044201649232 0.0531044201649232
-3736 3569 3570 0.106391147104451 0.106391147104451
-3737 3570 3571 0.101252017782574 0.101252017782574
-3738 3571 3323 0.106405710576167 0.106405710576167
-3739 3323 3572 0.102008288172629 0.102008288172629
-3740 3572 3573 0.10165616841443 0.10165616841443
-3741 3573 2074 0.102582871487582 0.102582871487582
-3742 2074 2671 0.108231570849142 0.108231570849142
-3743 2671 3574 0.10456159833902 0.10456159833902
-5002 115 4548 0.0219059413647985 0.0219059413647985
-3744 3574 3575 0.112649473969198 0.112649473969198
-3748 3469 3578 0.102738780677217 0.102738780677217
-3751 848 3580 0.194594151891157 0.194594151891157
-3780 799 3582 0.202016106794537 0.202016106794537
-3753 3581 3583 0.0933177632696428 0.0933177632696428
-3756 3586 3587 0.0427524561216555 0.0427524561216555
-20307 3851 3852 0.0199150113624835 0.0199150113624835
-3757 3587 3588 0.00652614157776479 0.00652614157776479
-3758 3588 3589 0.0165416326790114 0.0165416326790114
-3759 3589 3590 0.0292914453635219 0.0292914453635219
-3760 3590 3591 0.012398142936734 0.012398142936734
-3761 3591 3592 0.00808918004643223 0.00808918004643223
-3762 3592 3593 0.0105968786869326 0.0105968786869326
-3764 3487 3594 0.175200690864457 0.175200690864457
-17310 5684 5685 0.200644913348264 0.200644913348264
-3765 3594 2339 0.174981229925885 0.174981229925885
-3768 3596 3597 0.239259126523314 0.239259126523314
-3770 1985 1969 0.0388238770836811 0.0388238770836811
-3771 1969 3598 0.103685036459381 0.103685036459381
-3772 3598 3599 0.103278210249803 0.103278210249803
-3774 3600 685 0.204822140654993 0.204822140654993
-3775 685 1984 0.157051714392723 0.157051714392723
-3777 2473 3601 0.204732098938096 0.204732098938096
-3778 3601 3602 0.203258463693205 0.203258463693205
-3779 3602 799 0.197950165384785 0.197950165384785
-3781 3582 3603 0.209363914186111 0.209363914186111
-3782 3603 3604 0.202974468009462 0.202974468009462
-3783 3604 3063 0.201030651985273 0.201030651985273
-3784 3063 3605 0.183452467298283 0.183452467298283
-3785 3605 3609 0.0173247613422977 0.0173247613422977
-3786 3609 3610 0.100167424900963 0.100167424900963
-3787 3610 1148 0.0998182719974527 0.0998182719974527
-3798 3618 3619 1.41244277904247 1.41244277904247
-3799 3620 3621 0.200419085699923 0.200419085699923
-3800 3621 3083 0.197049820413636 0.197049820413636
-3806 3250 3625 0.214852973763206 0.214852973763206
-3807 3625 37 0.19341482884534 0.19341482884534
-3808 37 3536 0.207817408343139 0.207817408343139
-3809 3536 3626 0.197537787183869 0.197537787183869
-3810 3626 3627 0.0725803332096263 0.0725803332096263
-3812 3628 3629 0.0377891893344826 0.0377891893344826
-3814 3630 108 0.222508950073657 0.222508950073657
-3815 108 3631 0.48374336677931 0.48374336677931
-3816 3631 3632 1.29923590650812 1.29923590650812
-17118 3959 510 0.232935824119298 0.232935824119298
-4428 4136 4137 0.173313517100692 0.173313517100692
-4429 4137 4138 0.202530185785573 0.202530185785573
-18158 6309 10170 0.40356001102466 0.40356001102466
-4432 2389 4140 0.139183902890425 0.139183902890425
-4434 4141 4142 0.197054107936505 0.197054107936505
-4438 4144 4145 0.0537117632250494 0.0537117632250494
-4439 4145 965 0.101471161400112 0.101471161400112
-4440 965 4146 0.104100628512796 0.104100628512796
-4441 4146 3163 0.0969051144320847 0.0969051144320847
-4442 3163 4147 0.101372524256092 0.101372524256092
-4443 4147 4148 0.0308326213261154 0.0308326213261154
-4445 3914 1051 0.113795014444698 0.113795014444698
-4446 1051 4149 0.10964029932362 0.10964029932362
-4449 4151 3345 0.104243278330047 0.104243278330047
-4451 4152 4153 0.102419695022811 0.102419695022811
-4452 4153 2058 0.103354746635848 0.103354746635848
-4453 2058 2644 0.104156201229462 0.104156201229462
-4454 2644 4110 0.102077109293643 0.102077109293643
-5804 5122 5123 0.00520045876973269 0.00520045876973269
-4455 4110 4154 0.102551400025576 0.102551400025576
-4458 4156 3451 0.102085683319337 0.102085683319337
-4459 3451 4157 0.103915702611829 0.103915702611829
-4460 4157 3881 0.104147627332173 0.104147627332173
-4461 3881 844 0.102547271473588 0.102547271473588
-4462 844 4158 0.103915708789956 0.103915708789956
-4463 4158 4159 0.0473715373473714 0.0473715373473714
-4465 4160 4161 0.0487952389865543 0.0487952389865543
-4466 4161 4162 0.0503092120983125 0.0503092120983125
-4467 4162 4163 0.0998399649224705 0.0998399649224705
-4470 991 4165 0.0616573964011522 0.0616573964011522
-4471 4165 4166 0.0374515064164708 0.0374515064164708
-4472 4166 4167 0.0500586202169859 0.0500586202169859
-4473 4167 4168 0.0490747432154895 0.0490747432154895
-4474 4168 1546 0.0500170304502106 0.0500170304502106
-4475 1546 4169 0.0485801531295538 0.0485801531295538
-5773 5098 5099 0.136491222225544 0.136491222225544
-4479 4171 4172 0.0171013114970861 0.0171013114970861
-4480 4172 4173 0.100095278405447 0.100095278405447
-4481 4173 4174 0.0193707742575379 0.0193707742575379
-4482 4174 3125 0.0983746933912928 0.0983746933912928
-4483 3125 3149 0.017633000291927 0.017633000291927
-4485 3759 1483 0.205504619788951 0.205504619788951
-4486 1483 139 0.199306955290764 0.199306955290764
-3818 3634 3635 0.193271661183235 0.193271661183235
-3844 50 2744 0.0297683374213274 0.0297683374213274
-3819 3635 3636 0.259071020170312 0.259071020170312
-3820 3636 3637 0.220352934884474 0.220352934884474
-3821 3637 3638 0.0146799692899151 0.0146799692899151
-3822 3638 3629 0.546064092681382 0.546064092681382
-3823 3629 3628 0.0377891893344826 0.0377891893344826
-3848 3639 3640 0.0377019004254023 0.0377019004254023
-3824 3628 3641 0.274746435577415 0.274746435577415
-3827 3643 3630 0.145379834812045 0.145379834812045
-3829 3644 3645 0.10937380292523 0.10937380292523
-3831 3646 3647 0.118367900276814 0.118367900276814
-3833 3648 3649 0.0133410304783532 0.0133410304783532
-3834 3649 3650 0.0429585103622675 0.0429585103622675
-3835 3650 3651 0.0204151163658954 0.0204151163658954
-3836 3651 3652 0.035861428044368 0.035861428044368
-3837 3652 3653 0.0519097060940613 0.0519097060940613
-3838 3653 2733 0.0215181506261361 0.0215181506261361
-3839 2733 3184 0.0284884125498342 0.0284884125498342
-3840 3184 3654 0.0523000942930375 0.0523000942930375
-3841 3654 3655 0.0449577371290542 0.0449577371290542
-3842 3655 3656 0.0854917295991763 0.0854917295991763
-3843 3656 50 0.0260531877334927 0.0260531877334927
-3845 2744 3657 0.0566089274642789 0.0566089274642789
-3846 3657 3658 0.0492739020617726 0.0492739020617726
-3849 3640 3660 0.0409815373213546 0.0409815373213546
-3850 3660 3661 0.0430567519340905 0.0430567519340905
-3851 3661 3662 0.0468129367556475 0.0468129367556475
-3852 3662 3663 0.0487340718514498 0.0487340718514498
-3853 3663 3664 0.0766168893066023 0.0766168893066023
-3854 3664 3665 0.0775543535398568 0.0775543535398568
-3856 2887 3666 0.0966953683989245 0.0966953683989245
-3857 3666 3667 0.0610272459393337 0.0610272459393337
-3860 3669 3670 0.0315853053568594 0.0315853053568594
-3862 3671 3672 0.0504610774094253 0.0504610774094253
-3863 3672 3673 0.0499084817958282 0.0499084817958282
-3864 3673 3674 0.0598581313257637 0.0598581313257637
-3865 3674 3675 0.0415918035714469 0.0415918035714469
-3866 3675 3676 0.0971838117715375 0.0971838117715375
-3867 3676 3677 0.0757910145140814 0.0757910145140814
-3868 3677 3678 0.0241351496511796 0.0241351496511796
-3869 3678 3679 0.10921148844503 0.10921148844503
-3870 3679 3680 0.0604791133362521 0.0604791133362521
-3871 3680 3681 0.0497662614550786 0.0497662614550786
-3872 3681 3682 0.0284371260175335 0.0284371260175335
-3873 3682 3683 0.0775136719631998 0.0775136719631998
-3874 3683 3684 0.0986272672973807 0.0986272672973807
-3876 3686 1026 0.103637164673652 0.103637164673652
-5148 4657 4658 0.0518173498658282 0.0518173498658282
-3877 1026 3687 0.0559565437232701 0.0559565437232701
-3878 3687 3688 0.0511859173489266 0.0511859173489266
-3879 3688 3689 0.0520066703615513 0.0520066703615513
-3880 3689 3690 0.049253728288425 0.049253728288425
-3882 2886 3691 0.113429848834015 0.113429848834015
-3884 3215 3692 0.202752541360657 0.202752541360657
-3885 3692 1926 0.199353224720545 0.199353224720545
-3886 1926 3693 0.200351682125873 0.200351682125873
-3887 3693 3270 0.203854022504707 0.203854022504707
-3888 3270 3694 0.200935067748901 0.200935067748901
-3890 83 3519 0.205087956532059 0.205087956532059
-3892 3695 3696 0.201007421421966 0.201007421421966
-3897 3217 3701 0.1352188342505 0.1352188342505
-3898 131 1718 0.251512260994622 0.251512260994622
-15946 9759 9762 0.240661719520644 0.240661719520644
-3900 3702 3703 0.0933150678138448 0.0933150678138448
-3901 3703 3704 0.137025546490973 0.137025546490973
-3902 3704 3705 0.132801372713675 0.132801372713675
-3903 3705 1668 0.132757296812598 0.132757296812598
-3904 1668 3706 0.138337667643286 0.138337667643286
-3905 3706 2449 0.137198901653783 0.137198901653783
-3906 2449 3239 0.137027047572602 0.137027047572602
-3909 3708 3709 0.0594114493059888 0.0594114493059888
-3910 3709 109 0.057220909251565 0.057220909251565
-3913 3711 3712 0.139485170169946 0.139485170169946
-3914 3712 2811 0.114534953425458 0.114534953425458
-3918 3715 3716 0.0528065388297546 0.0528065388297546
-3919 3716 3717 0.0498986148500866 0.0498986148500866
-3920 3717 3718 0.0501983896755627 0.0501983896755627
-3921 3718 3722 0.0513311819624353 0.0513311819624353
-3922 3722 3723 0.0447895916462849 0.0447895916462849
-3923 3723 3724 0.0431436061631746 0.0431436061631746
-3924 3724 3725 0.0306469500311329 0.0306469500311329
-3926 3726 3727 0.194057523355391 0.194057523355391
-3927 3727 723 0.155998303022368 0.155998303022368
-3928 723 3728 0.0204200466887832 0.0204200466887832
-3929 3728 3729 0.122760919468851 0.122760919468851
-3930 3729 3730 0.0554195837686694 0.0554195837686694
-3931 3730 520 0.0841868989778494 0.0841868989778494
-3932 520 3731 0.0926590200371809 0.0926590200371809
-3933 3731 3732 0.0560537701957185 0.0560537701957185
-3937 3735 3736 0.177568883213635 0.177568883213635
-3939 3737 3738 0.0596027628340358 0.0596027628340358
-3940 3738 2286 0.015731383207611 0.015731383207611
-3942 191 3739 0.20409229769904 0.20409229769904
-3943 3739 3740 0.196754914184827 0.196754914184827
-3945 3741 3742 0.0963531048469524 0.0963531048469524
-3947 3743 1867 0.211893481628119 0.211893481628119
-3948 1867 3744 0.190309691295086 0.190309691295086
-3949 3744 3369 0.156379911113779 0.156379911113779
-3951 3746 3747 0.0084501441528746 0.0084501441528746
-3953 3749 3750 0.291896586304336 0.291896586304336
-3957 3752 3753 0.00678737857974005 0.00678737857974005
-3958 3753 3754 0.00811546596932882 0.00811546596932882
-3959 3754 605 0.11345488105994 0.11345488105994
-3966 3759 3760 0.0543424988109601 0.0543424988109601
-3967 3760 3761 0.0124828328696103 0.0124828328696103
-3969 3762 3763 0.109035140401267 0.109035140401267
-3970 3763 3764 0.13451246019454 0.13451246019454
-3971 3764 1077 0.0751290727356026 0.0751290727356026
-3972 1077 2521 0.125841042831383 0.125841042831383
-3974 3765 3766 0.0155018141702848 0.0155018141702848
-3975 3766 3769 0.0925922303926536 0.0925922303926536
-3976 3769 450 0.0446743427321934 0.0446743427321934
-3977 450 855 0.0454696499518695 0.0454696499518695
-3978 855 3770 0.0458292249661059 0.0458292249661059
-5269 4111 4741 0.0999126780220414 0.0999126780220414
-3979 3770 3771 0.0463680305523856 0.0463680305523856
-3982 3777 3778 0.0472655889206378 0.0472655889206378
-3983 3778 3456 0.0457775618734605 0.0457775618734605
-3984 3456 3779 0.0949352444381587 0.0949352444381587
-3985 3779 3780 0.0949175907228116 0.0949175907228116
-3986 3780 3781 0.0934360991992659 0.0934360991992659
-3987 3781 3782 0.0927263272279538 0.0927263272279538
-3988 3782 2659 0.0984051754942233 0.0984051754942233
-3989 2659 2053 0.0987467204032972 0.0987467204032972
-3990 2053 3783 0.0990728400130522 0.0990728400130522
-3991 3783 3784 0.0514218472521816 0.0514218472521816
-3992 3784 3785 0.0779176889813446 0.0779176889813446
-3993 3785 3786 0.0982592928032825 0.0982592928032825
-3994 3786 3344 0.100047583059044 0.100047583059044
-3995 3344 3787 0.0997075658602957 0.0997075658602957
-3998 3789 1013 0.0991145515008367 0.0991145515008367
-3999 1013 3790 0.0988154439008836 0.0988154439008836
-4000 3790 3147 0.100818484811759 0.100818484811759
-4001 3147 3128 0.0882379333310365 0.0882379333310365
-4002 3128 3791 0.10924064572907 0.10924064572907
-4003 3791 3792 0.0990892368110052 0.0990892368110052
-4004 3792 3793 0.0983279071551189 0.0983279071551189
-4005 3793 3794 0.0488397000978433 0.0488397000978433
-4006 3794 3795 0.0500279563406491 0.0500279563406491
-4007 3795 2868 0.0499678370514067 0.0499678370514067
-4008 2868 3796 0.048583428681526 0.048583428681526
-4009 3796 3797 0.0504566053315115 0.0504566053315115
-4011 3798 3799 0.0451531325504455 0.0451531325504455
-4012 3799 983 0.0519296915637561 0.0519296915637561
-4015 3801 3802 0.0483738114958222 0.0483738114958222
-4016 3802 3803 0.0519812355103751 0.0519812355103751
-4017 3803 3804 0.101642680761132 0.101642680761132
-4018 3804 3805 0.100202026962745 0.100202026962745
-4019 3805 3806 0.0490200510242293 0.0490200510242293
-4020 3806 3159 0.0527906095396228 0.0527906095396228
-4021 3159 3807 0.0508058777981011 0.0508058777981011
-4022 3807 3808 0.0547154240766913 0.0547154240766913
-4023 3808 3809 0.105580069148102 0.105580069148102
-4025 3810 3811 0.0543737037127348 0.0543737037127348
-16058 9242 237 0.236847878323095 0.236847878323095
-4026 3811 3812 0.108778018122892 0.108778018122892
-4027 3812 1620 0.10920973774803 0.10920973774803
-4029 3813 3814 0.083969278056869 0.083969278056869
-4031 3815 3816 0.139162136479248 0.139162136479248
-4032 3816 3817 0.128842029582485 0.128842029582485
-4034 3818 2303 0.104861015321702 0.104861015321702
-4035 2303 130 0.0947837852263858 0.0947837852263858
-4036 130 155 0.2039982188818 0.2039982188818
-4037 155 1719 0.251031715971117 0.251031715971117
-4040 3820 3821 0.253858034970465 0.253858034970465
-4041 3821 765 0.158798770965753 0.158798770965753
-4042 765 3822 0.38766252452626 0.38766252452626
-4044 3823 3824 0.6423341602363 0.6423341602363
-4045 3825 3826 0.0763938085811643 0.0763938085811643
-5338 4787 4788 0.201919584850824 0.201919584850824
-4049 3828 3829 0.0709013283805701 0.0709013283805701
-4051 3830 3831 0.161299122027925 0.161299122027925
-4052 3832 3833 0.0520709463921909 0.0520709463921909
-4054 3834 3835 0.133913000116738 0.133913000116738
-4055 3835 3836 0.135958385150602 0.135958385150602
-4059 3838 3839 0.195689058153451 0.195689058153451
-4061 3840 3841 0.104161008191779 0.104161008191779
-4062 3841 3842 0.204332097790775 0.204332097790775
-4063 3842 2989 0.198305038809848 0.198305038809848
-4064 2989 3843 0.202007841321225 0.202007841321225
-4065 3843 3844 0.201085745402869 0.201085745402869
-4066 3844 3845 0.203153756914823 0.203153756914823
-4067 3845 3846 0.201463782012409 0.201463782012409
-4068 3846 1694 0.201944163047273 0.201944163047273
-4069 1694 3847 0.201007884572681 0.201007884572681
-4070 3847 2442 0.173966646957408 0.173966646957408
-4071 2442 3848 0.171462594138623 0.171462594138623
-5362 4804 4805 0.138916058502817 0.138916058502817
-4072 3848 3849 0.15641185610528 0.15641185610528
-4073 3849 3850 0.155873108146064 0.155873108146064
-4074 3850 3851 0.11951230715733 0.11951230715733
-4075 3851 3852 0.0199150113624835 0.0199150113624835
-4078 2606 3854 0.176099789319583 0.176099789319583
-4081 3856 3857 0.204451648584923 0.204451648584923
-4082 3857 3858 0.27633741171005 0.27633741171005
-4084 3859 3860 0.194935828897222 0.194935828897222
-4085 3860 2553 0.201807589121279 0.201807589121279
-4086 2553 3861 0.201183796555208 0.201183796555208
-4087 3861 3862 0.206144933368939 0.206144933368939
-4088 3863 3864 0.174004040356707 0.174004040356707
-4089 3864 3865 0.176177241775495 0.176177241775495
-4090 3865 3866 0.0719661295510201 0.0719661295510201
-4091 3866 1862 0.105391351050826 0.105391351050826
-4092 1862 2607 0.183084733810089 0.183084733810089
-4094 3867 3868 0.135844661693153 0.135844661693153
-4096 1431 3869 0.122681533981215 0.122681533981215
-4099 3870 3871 0.0814181379314414 0.0814181379314414
-4101 3038 3872 0.194090812408951 0.194090812408951
-4103 3579 3873 0.140995166985651 0.140995166985651
-4104 3873 3874 0.0908684940539539 0.0908684940539539
-4108 2397 3876 0.142303739641396 0.142303739641396
-4110 3877 702 0.203534713775632 0.203534713775632
-4111 702 3878 0.201204188260029 0.201204188260029
-4113 3879 3880 0.176189861258557 0.176189861258557
-4114 3880 2357 0.178601291381029 0.178601291381029
-4115 2357 3881 0.172977248757485 0.172977248757485
-4116 3881 3882 0.173963704924205 0.173963704924205
-4117 3882 3883 0.177248873598787 0.177248873598787
-4118 3883 3884 0.165174683174039 0.165174683174039
-4120 3885 899 0.068233075024198 0.068233075024198
-4121 899 3886 0.136382558439915 0.136382558439915
-4123 3887 2246 0.064586200340924 0.064586200340924
-4126 3889 3890 0.173108811078515 0.173108811078515
-4128 3891 673 0.180805922237936 0.180805922237936
-4129 673 3892 0.00347134617206091 0.00347134617206091
-4131 3893 3894 0.173412160606882 0.173412160606882
-4132 3894 3686 0.239804659108201 0.239804659108201
-4133 3686 3895 0.139339505088047 0.139339505088047
-4134 3895 1293 0.0712429362693845 0.0712429362693845
-4136 3896 3897 0.00461464942878269 0.00461464942878269
-4137 3897 3898 0.00296969221564957 0.00296969221564957
-4138 3898 3899 0.135099018741423 0.135099018741423
-4139 3899 3900 0.133736401013675 0.133736401013675
-4140 3900 826 0.1432668721319 0.1432668721319
-4141 826 3567 0.140539270126583 0.140539270126583
-4142 3567 3901 0.141736858580205 0.141736858580205
-4143 3901 3902 0.138513379846183 0.138513379846183
-4144 3902 3903 0.137738276341516 0.137738276341516
-4145 3903 3041 0.133834213982 0.133834213982
-4146 3041 3904 0.143195912483998 0.143195912483998
-4147 3904 3905 0.00371612313723013 0.00371612313723013
-4148 3905 3906 0.138485181869722 0.138485181869722
-4150 1161 880 0.143460648556329 0.143460648556329
-4151 880 3907 0.137181190587279 0.137181190587279
-4152 3907 2788 0.133979203320047 0.133979203320047
-4154 3908 3909 0.11929025073176 0.11929025073176
-4155 3909 3910 0.092551367353814 0.092551367353814
-4157 734 1555 0.128698646905998 0.128698646905998
-4158 1555 3911 0.10223670466325 0.10223670466325
-4159 3911 3912 0.0209102658501846 0.0209102658501846
-4160 3913 3914 0.290781445277807 0.290781445277807
-4161 3914 3915 0.112536676265492 0.112536676265492
-4162 3915 3916 0.199777886092506 0.199777886092506
-4163 3916 3917 0.0912727874005277 0.0912727874005277
-4164 3917 3918 0.112620851967747 0.112620851967747
-4166 3919 1187 0.167283340526576 0.167283340526576
-4167 1187 3920 0.0212753866211399 0.0212753866211399
-4168 3920 3790 0.200229524215252 0.200229524215252
-4169 3790 3921 0.153151160013799 0.153151160013799
-4170 3921 3922 0.0549370836226997 0.0549370836226997
-4171 3923 3924 0.0360721076371334 0.0360721076371334
-4174 706 3926 0.117999308023824 0.117999308023824
-4175 3926 3702 0.0450373928319521 0.0450373928319521
-4176 3702 3927 0.114850773809758 0.114850773809758
-4177 3927 3928 0.0608860897951607 0.0608860897951607
-4178 3928 3929 0.107271550927247 0.107271550927247
-4180 3930 1666 0.1330788885459 0.1330788885459
-4181 1666 3931 0.137468360449037 0.137468360449037
-4182 3931 2447 0.134834989989903 0.134834989989903
-4183 2447 3237 0.140199730422516 0.140199730422516
-4184 3237 3933 0.138639782785987 0.138639782785987
-4185 3933 3934 0.138811739329711 0.138811739329711
-4186 3934 3935 0.134204059449961 0.134204059449961
-4187 3935 3936 0.123276584845079 0.123276584845079
-4189 3937 3938 0.126045478045544 0.126045478045544
-4190 3938 3939 0.0651492893105391 0.0651492893105391
-4191 3939 3940 0.0221401135391512 0.0221401135391512
-4192 3940 3941 0.0717318471783874 0.0717318471783874
-4195 3943 3944 0.176615684469352 0.176615684469352
-4196 3944 3947 0.176604135108539 0.176604135108539
-4197 3947 3948 0.122323573259462 0.122323573259462
-4198 3948 3949 0.0559214984515419 0.0559214984515419
-5481 4892 3459 0.0941890822437752 0.0941890822437752
-4199 3949 3950 0.176269184745743 0.176269184745743
-4200 3950 3951 0.05590117541301 0.05590117541301
-4201 3951 3952 0.122088386939327 0.122088386939327
-4202 3952 3953 0.0603148497739477 0.0603148497739477
-4203 3953 3954 0.117311769773874 0.117311769773874
-4204 3954 3955 0.0719490460324168 0.0719490460324168
-4205 3955 3956 0.106538056002006 0.106538056002006
-4206 3956 3957 0.177243078500478 0.177243078500478
-4207 3957 2623 0.176288453506598 0.176288453506598
-4208 2623 3958 0.177546592271005 0.177546592271005
-4209 3958 3960 0.168966442415293 0.168966442415293
-4210 3960 3961 0.111586533238696 0.111586533238696
-4213 3963 3964 0.265623714493738 0.265623714493738
-4214 3965 3966 0.511616430940774 0.511616430940774
-4216 1726 3967 0.0896760315303362 0.0896760315303362
-4217 3967 3968 0.0558858522230369 0.0558858522230369
-4218 3968 3969 0.109150490871186 0.109150490871186
-4219 3970 3971 0.202576252334461 0.202576252334461
-4220 3971 3972 0.199655908563659 0.199655908563659
-4221 3972 3973 0.201550568367269 0.201550568367269
-4223 3974 3975 0.0432784618651284 0.0432784618651284
-4224 3975 3976 0.0119312921672435 0.0119312921672435
-4225 3976 3977 0.0412856988441699 0.0412856988441699
-4226 3977 3978 0.00523979822286268 0.00523979822286268
-4227 3978 3979 0.0456580481243959 0.0456580481243959
-4228 3979 3980 0.0491163050630244 0.0491163050630244
-4229 3980 3981 0.0519851803283443 0.0519851803283443
-4230 3981 1662 0.0500503143032265 0.0500503143032265
-4231 1662 3982 0.0526516968240738 0.0526516968240738
-4232 3982 3983 0.0511950181994891 0.0511950181994891
-4233 3983 3984 0.0508169123465841 0.0508169123465841
-16267 5831 9866 0.203286686616951 0.203286686616951
-4234 3984 3985 0.0684638947838088 0.0684638947838088
-4235 3985 3986 0.0523508233196537 0.0523508233196537
-4236 3986 3987 0.0497154897229056 0.0497154897229056
-4237 3987 2423 0.0326188031399601 0.0326188031399601
-4238 2423 3988 0.017392306107988 0.017392306107988
-4239 3988 3989 0.0330055324383025 0.0330055324383025
-4240 3989 3990 0.0159023099545875 0.0159023099545875
-4241 3990 3991 0.049454634736183 0.049454634736183
-4244 3992 3993 0.049036974566433 0.049036974566433
-4245 3993 3994 0.0522504960301449 0.0522504960301449
-4246 3994 3995 0.113779671004445 0.113779671004445
-4247 3995 3996 0.292866933952659 0.292866933952659
-4248 3996 3997 0.135719788812757 0.135719788812757
-4249 3997 2492 0.131298969381918 0.131298969381918
-4250 2492 2838 0.134023703042734 0.134023703042734
-4252 3998 3999 0.177673273882055 0.177673273882055
-4253 3999 4000 0.178724202369687 0.178724202369687
-4254 4000 4001 0.0914256352612055 0.0914256352612055
-4255 1820 4002 0.0854127756728086 0.0854127756728086
-4256 4002 4003 0.0734940058422204 0.0734940058422204
-4257 4003 4004 0.122094789640982 0.122094789640982
-4260 4006 4007 0.167588698662527 0.167588698662527
-4261 4007 4008 0.199884724997956 0.199884724997956
-4262 4008 4009 0.0119868161378673 0.0119868161378673
-4263 371 1930 0.0503613323391642 0.0503613323391642
-4264 1930 1940 0.0838300296248713 0.0838300296248713
-4265 1940 4010 0.121947021037263 0.121947021037263
-4266 4010 4011 0.132309346356631 0.132309346356631
-4267 4011 4012 0.135165905730987 0.135165905730987
-4268 4012 4013 0.133333876014397 0.133333876014397
-4270 4014 12 0.13580168948729 0.13580168948729
-4271 12 4015 0.00286884184731271 0.00286884184731271
-4272 4015 4016 0.132033234839576 0.132033234839576
-4273 4016 4017 0.133567851795101 0.133567851795101
-4274 4017 4018 0.134726706981619 0.134726706981619
-4275 4018 4019 0.130892412762661 0.130892412762661
-4276 4019 4020 0.134212591203429 0.134212591203429
-4277 4020 4021 0.133433911973159 0.133433911973159
-4278 4021 4022 0.137281795417315 0.137281795417315
-4280 4023 4024 0.0689781307016059 0.0689781307016059
-4281 4024 4025 0.0667654814327236 0.0667654814327236
-5576 4965 4966 0.209377126181678 0.209377126181678
-4290 4029 1890 0.0489976212541555 0.0489976212541555
-4291 1890 4030 0.050071397214541 0.050071397214541
-4293 4031 2858 0.24990384929118 0.24990384929118
-4301 1703 4036 0.19686036595886 0.19686036595886
-4302 4036 4037 2.41616418836648 2.41616418836648
-4303 4038 4039 0.0356847858191414 0.0356847858191414
-4305 4040 4041 0.105425319125276 0.105425319125276
-4306 4041 2256 0.104244973047941 0.104244973047941
-4307 2256 4042 0.103519804078257 0.103519804078257
-4309 3999 4043 0.105003607246795 0.105003607246795
-17679 10164 8262 0.207810693253635 0.207810693253635
-4315 4048 3390 0.0527412463264476 0.0527412463264476
-4316 3390 4049 0.0507539981345734 0.0507539981345734
-4317 4049 4050 0.0520284075919789 0.0520284075919789
-4318 4050 3408 0.0512087059000605 0.0512087059000605
-4319 3408 4051 0.0486341315555791 0.0486341315555791
-4320 4051 4053 0.052533034496925 0.052533034496925
-4321 4053 4054 0.0524475036704537 0.0524475036704537
-4322 4054 4055 0.0498829272923159 0.0498829272923159
-4327 4058 4059 0.051190260382352 0.051190260382352
-4328 4059 3864 0.0501467689985101 0.0501467689985101
-4329 3864 4060 0.0537746384669306 0.0537746384669306
-4330 4060 4061 0.0463502740457097 0.0463502740457097
-4331 4061 4062 0.0561959746447094 0.0561959746447094
-4357 4082 4083 0.157884781724872 0.157884781724872
-4332 4062 4063 0.69866413721226 0.69866413721226
-4333 1273 4064 0.135036752261437 0.135036752261437
-4334 4064 4065 0.129590074598046 0.129590074598046
-4335 4065 4066 0.132616575444838 0.132616575444838
-4344 4073 1390 0.0502435222683857 0.0502435222683857
-4345 1390 4074 0.0493046140403362 0.0493046140403362
-4346 4074 4075 0.0491422603337744 0.0491422603337744
-4351 4078 4079 0.241190031557862 0.241190031557862
-4352 4079 4080 0.258242852029617 0.258242852029617
-4353 4080 1629 0.215143938153131 0.215143938153131
-4354 1629 3965 0.0839336295727996 0.0839336295727996
-4364 1214 4088 0.0489795542886091 0.0489795542886091
-4365 4088 4089 0.0498843047924572 0.0498843047924572
-4366 4089 4090 0.0487540785114809 0.0487540785114809
-4367 4090 2167 0.0506698655714413 0.0506698655714413
-4368 2167 4091 0.0491950203791528 0.0491950203791528
-4369 4091 4092 0.0488189222411035 0.0488189222411035
-4378 1289 4100 0.0495624053047352 0.0495624053047352
-4379 4100 4101 0.0531970268279652 0.0531970268279652
-4380 4101 4102 0.0527877658733148 0.0527877658733148
-4381 4102 4103 0.0491029186922276 0.0491029186922276
-4382 4103 4104 0.053313065445571 0.053313065445571
-18127 10262 10268 0.40641745688608 0.40641745688608
-4394 4109 2351 0.147790101003017 0.147790101003017
-4395 2351 4110 0.174343137234229 0.174343137234229
-4396 4110 4111 0.175176728788125 0.175176728788125
-4397 4111 4112 0.174887842567366 0.174887842567366
-4398 4112 4113 0.163616410243985 0.163616410243985
-14847 9428 3841 0.049872105512027 0.049872105512027
-14848 3841 9429 0.0507867978829422 0.0507867978829422
-14849 9429 5551 0.0504705023896622 0.0504705023896622
-14850 5551 9430 0.0160626819091423 0.0160626819091423
-324 207 268 0.0408317858918375 0.0408317858918375
-14851 9430 9431 0.771810690268124 0.771810690268124
-14860 2500 9438 0.0367185859571526 0.0367185859571526
-14866 8307 6350 0.0205009601935279 0.0205009601935279
-14871 2450 3240 0.14088111565627 0.14088111565627
-14873 5733 5517 0.138655367104914 0.138655367104914
-14874 5517 9442 0.136397019838813 0.136397019838813
-14875 9442 6920 0.112250527906817 0.112250527906817
-14877 6505 9443 0.246198454475103 0.246198454475103
-14878 9443 9444 0.0254384620147021 0.0254384620147021
-14879 9444 6994 0.4499142851013 0.4499142851013
-14880 6994 9445 0.29050322706034 0.29050322706034
-14881 9445 2104 0.111341186723118 0.111341186723118
-14882 2104 9446 1.81122771510753 1.81122771510753
-14883 5328 6848 0.0996617587695029 0.0996617587695029
-14884 6848 9012 0.0991299503198925 0.0991299503198925
-14886 7486 7456 0.0976540916227753 0.0976540916227753
-14888 5693 9010 0.102057355365657 0.102057355365657
-14889 9010 4967 0.099866873546368 0.099866873546368
-14890 4967 9021 0.10207838306375 0.10207838306375
-14894 8146 9004 0.111615935651551 0.111615935651551
-14896 8691 6102 0.204110733056615 0.204110733056615
-14898 8202 8814 0.0690569326601991 0.0690569326601991
-14900 8175 8161 0.034748414576393 0.034748414576393
-14901 8161 9450 0.0195282497941032 0.0195282497941032
-14902 9450 9315 0.339258874320837 0.339258874320837
-14904 8694 8155 0.0907837492404858 0.0907837492404858
-14905 8155 7617 0.0954335805182596 0.0954335805182596
-14906 7617 7270 0.0932816974435063 0.0932816974435063
-14908 4159 8695 0.0152616593160753 0.0152616593160753
-14909 8695 8156 0.0918092963851245 0.0918092963851245
-14910 8156 7618 0.0923894575376538 0.0923894575376538
-14911 7618 7271 0.0946959525813305 0.0946959525813305
-14914 2016 353 0.0344076794786212 0.0344076794786212
-14915 353 9451 0.0583270070041971 0.0583270070041971
-14916 9451 2762 0.099099248852826 0.099099248852826
-14917 2762 7003 0.098484917717332 0.098484917717332
-14918 7003 2266 0.0978645165955224 0.0978645165955224
-14919 2266 3595 0.100545762919748 0.100545762919748
-14920 3595 7518 0.100532638471033 0.100532638471033
-14921 7518 2095 0.100840428744565 0.100840428744565
-14922 2095 5977 0.100495257348787 0.100495257348787
-14923 5977 7667 0.098120652849283 0.098120652849283
-14924 7667 2331 0.102096265330692 0.102096265330692
-14925 2331 9453 0.0789173504157379 0.0789173504157379
-14926 8149 7608 0.0961605881004872 0.0961605881004872
-14927 7608 7261 0.102411721946463 0.102411721946463
-14928 7261 7598 0.095880146438169 0.095880146438169
-14929 7598 2021 0.09187670783236 0.09187670783236
-14930 2021 3354 0.0948528618506519 0.0948528618506519
-14932 2767 7012 0.0931566808998339 0.0931566808998339
-14934 9454 9455 0.0975625637539845 0.0975625637539845
-14937 8700 8158 0.0941289748217691 0.0941289748217691
-14939 7604 7255 0.0976568291897231 0.0976568291897231
-14940 7255 7591 0.0955299991432501 0.0955299991432501
-14941 7591 9173 0.0963387600574313 0.0963387600574313
-14942 9173 9456 0.0980688321229376 0.0980688321229376
-14943 9456 2750 0.102866303298183 0.102866303298183
-14944 2750 7014 0.0961030844605866 0.0961030844605866
-14945 7014 8215 0.0956816865795296 0.0956816865795296
-14947 8212 7523 0.100548507087909 0.100548507087909
-14948 7523 2123 0.0946806328213609 0.0946806328213609
-14949 2123 5989 0.102767406722396 0.102767406722396
-14950 5989 7670 0.0976490581696009 0.0976490581696009
-15962 9768 6397 0.0094036846623539 0.0094036846623539
-14968 7264 7583 0.0956208531243363 0.0956208531243363
-14969 7583 2000 0.0924757762963627 0.0924757762963627
-14970 2000 3360 0.0937229366395869 0.0937229366395869
-14971 3360 2754 0.0967493265415074 0.0967493265415074
-14973 7005 2280 0.0993735606220099 0.0993735606220099
-14974 2280 3602 0.103462577447113 0.103462577447113
-14975 3602 7527 0.0995273521026476 0.0995273521026476
-14976 7527 2135 0.0983330050282197 0.0983330050282197
-14977 2135 5992 0.103459989161242 0.103459989161242
-14978 5992 7672 0.100271460506145 0.100271460506145
-14979 7672 9462 3.03786386467958 3.03786386467958
-14980 5809 9463 0.110364660453643 0.110364660453643
-14989 9464 5043 0.119299198506528 0.119299198506528
-14990 5043 7994 0.118519999914902 0.118519999914902
-14991 7994 9236 0.117759209590851 0.117759209590851
-14992 9236 7973 0.0614780310106107 0.0614780310106107
-14994 7142 5131 0.10575888699282 0.10575888699282
-14995 5131 4724 0.10504840556341 0.10504840556341
-14996 4724 6791 0.107330054626072 0.107330054626072
-14997 6791 7363 0.103200510788566 0.103200510788566
-14998 7363 5422 0.104113985923971 0.104113985923971
-14999 5422 8554 0.105490524385859 0.105490524385859
-15000 8554 3893 0.111457422157238 0.111457422157238
-15001 3893 1024 0.103888468957379 0.103888468957379
-15002 1024 9465 0.0550364598534795 0.0550364598534795
-15003 9465 6269 0.0513684711391166 0.0513684711391166
-15006 9467 9468 0.0801572222360596 0.0801572222360596
-15007 9468 5030 0.106840142374901 0.106840142374901
-18579 3437 7765 0.0485278339531173 0.0485278339531173
-15009 6619 8699 0.0954507670467869 0.0954507670467869
-15010 8699 9469 0.014222614535116 0.014222614535116
-15013 7107 455 0.0456695914542558 0.0456695914542558
-15015 860 9470 0.0919474974486486 0.0919474974486486
-15016 9470 9471 0.0500014374448159 0.0500014374448159
-15017 9471 6021 0.0453621576916579 0.0453621576916579
-15018 6021 9472 0.0470758089061738 0.0470758089061738
-15019 9472 3460 0.0470036762545936 0.0470036762545936
-15020 3460 7685 0.0954954207572325 0.0954954207572325
-15021 7685 8021 0.0933841388460347 0.0933841388460347
-15022 8021 6698 0.0960778131259482 0.0960778131259482
-15023 6698 4136 0.0911259816816344 0.0911259816816344
-15025 2663 8548 0.0930424439627818 0.0930424439627818
-15026 8548 8547 0.100542623889621 0.100542623889621
-15027 8547 7338 0.099089032401214 0.099089032401214
-15028 7338 7883 0.0990804723784167 0.0990804723784167
-15030 3337 5025 0.101286501750056 0.101286501750056
-15031 5025 9473 0.0504081121726349 0.0504081121726349
-15032 9473 8728 0.0508783896228212 0.0508783896228212
-15033 8728 3720 0.054613750451979 0.054613750451979
-16212 9849 7734 1.41107486941703 1.41107486941703
-15034 3720 6265 0.0510651820396187 0.0510651820396187
-15035 6265 9474 0.0526179865653065 0.0526179865653065
-15036 9474 1019 0.0530796783692756 0.0530796783692756
-15037 1019 3889 0.105690016076173 0.105690016076173
-15038 3889 8550 0.11082035773048 0.11082035773048
-15039 8550 5418 0.102756492849076 0.102756492849076
-15040 5418 7359 0.109377907466232 0.109377907466232
-15041 7359 6787 0.102485488457906 0.102485488457906
-15044 9414 5118 0.0507526262754685 0.0507526262754685
-15047 7151 9476 0.0506273642355044 0.0506273642355044
-15048 9476 8834 0.0494473424354765 0.0494473424354765
-15049 8834 6016 0.046054397015081 0.046054397015081
-15051 979 5330 0.0485530564436786 0.0485530564436786
-15052 5330 8003 0.0503217691422663 0.0503217691422663
-15053 8003 6342 0.0507584862620106 0.0507584862620106
-15054 6342 5051 0.0488177307212986 0.0488177307212986
-15055 5051 6690 0.0488248354973201 0.0488248354973201
-15056 6690 9477 0.0468154058850837 0.0468154058850837
-15059 9313 7101 0.0478106623792446 0.0478106623792446
-15060 7101 8880 0.0490142389962295 0.0490142389962295
-15061 8880 7420 0.0493429457759385 0.0493429457759385
-15062 7420 8874 0.0545354482418663 0.0545354482418663
-15064 7430 8793 0.0542698797022772 0.0542698797022772
-15065 8793 7862 0.0521693260437922 0.0521693260437922
-395 399 5 0.209508946543956 0.209508946543956
-15066 7862 8787 0.05844527692302 0.05844527692302
-15067 8787 7957 0.0531372993824669 0.0531372993824669
-15068 7957 9478 0.0541270300244316 0.0541270300244316
-15069 9478 9479 0.108902531529915 0.108902531529915
-15072 4481 9480 0.0910756678915429 0.0910756678915429
-15074 8706 9481 0.10111000413597 0.10111000413597
-15075 9481 9175 0.105113918003998 0.105113918003998
-15076 9175 7259 0.105567381342615 0.105567381342615
-15077 7259 7589 0.103856965848258 0.103856965848258
-15079 3366 2770 0.104765166628809 0.104765166628809
-15080 2770 9176 0.11373488606323 0.11373488606323
-15081 9176 2260 0.11073804654165 0.11073804654165
-15082 2260 3611 0.0999509846289259 0.0999509846289259
-15083 3611 7516 0.100649754002954 0.100649754002954
-15084 7516 2109 0.103508831759163 0.103508831759163
-15085 2109 5999 0.10202033489304 0.10202033489304
-15086 5999 7660 0.0994984857017093 0.0994984857017093
-15087 7660 2328 0.04986487628669 0.04986487628669
-15118 9482 9225 0.0953635356752473 0.0953635356752473
-15120 9455 301 0.129823177853557 0.129823177853557
-15116 9490 8276 0.218414071885788 0.218414071885788
-15121 301 8269 0.152583336977896 0.152583336977896
-15126 226 8268 0.0760384791094216 0.0760384791094216
-15128 225 9482 0.128957275100235 0.128957275100235
-15130 9491 460 0.0667391949721685 0.0667391949721685
-15132 460 575 0.113707068563865 0.113707068563865
-15133 575 6199 0.0290617477448439 0.0290617477448439
-15135 9492 8244 0.032549465488295 0.032549465488295
-15136 8244 9493 0.0198582826309584 0.0198582826309584
-15138 6689 228 0.0134361080204136 0.0134361080204136
-15139 228 9494 0.0329072670561094 0.0329072670561094
-15140 9494 9495 0.0242107567854742 0.0242107567854742
-15142 9496 9497 0.0238335404645399 0.0238335404645399
-15143 9497 9498 0.0343814713189183 0.0343814713189183
-15966 7623 6935 0.205023089639109 0.205023089639109
-15967 6935 5889 0.201769701232267 0.201769701232267
-15968 5889 7449 0.284161489263658 0.284161489263658
-15969 7449 1636 0.117888722564013 0.117888722564013
-15970 1636 8998 0.102786876242831 0.102786876242831
-15972 4214 8094 0.0961834163674376 0.0961834163674376
-15973 8094 194 0.104992906429488 0.104992906429488
-15974 194 2923 0.0991259111035959 0.0991259111035959
-15975 2923 5306 0.0991964539292107 0.0991964539292107
-15976 5306 1461 0.0983899476582488 0.0983899476582488
-15977 1461 5434 0.104614166406686 0.104614166406686
-15978 5434 5973 0.107640436770916 0.107640436770916
-15979 5973 9014 0.00660364948230504 0.00660364948230504
-15980 9014 7915 0.0975740293794765 0.0975740293794765
-15981 7915 6437 0.105749746230322 0.105749746230322
-16016 9786 9159 0.00790012825467591 0.00790012825467591
-15982 6437 4420 0.102051245715481 0.102051245715481
-15985 5328 7056 0.0812625038007973 0.0812625038007973
-15986 7056 9772 0.0538313043287529 0.0538313043287529
-15987 9772 4318 0.0518980074233638 0.0518980074233638
-15988 4318 9452 0.0516277273460522 0.0516277273460522
-15990 4506 4116 0.0518058126204102 0.0518058126204102
-15991 4116 7809 0.0517374039809394 0.0517374039809394
-15992 7809 5068 0.0991665346425536 0.0991665346425536
-15993 5068 9773 0.0531370753578357 0.0531370753578357
-15994 9773 6836 0.0533167080983746 0.0533167080983746
-15995 6836 6978 0.101324072393449 0.101324072393449
-15996 6978 7941 0.102826343168107 0.102826343168107
-15997 7941 9015 0.0975512129036908 0.0975512129036908
-15998 9015 6780 0.448938989090037 0.448938989090037
-15999 6780 9774 0.408854845876832 0.408854845876832
-16000 9076 9768 0.0663101767153915 0.0663101767153915
-16004 9776 1455 0.0526013194004238 0.0526013194004238
-16006 9777 1736 0.0786842572590025 0.0786842572590025
-16092 526 9805 0.0239836164906123 0.0239836164906123
-16044 9806 9807 0.10708389115039 0.10708389115039
-16046 9808 9779 0.598201231733375 0.598201231733375
-16048 9809 8448 0.00611949423172489 0.00611949423172489
-16050 497 315 0.38487204905166 0.38487204905166
-16051 315 9125 0.309277404563432 0.309277404563432
-16053 9092 238 0.378305028269765 0.378305028269765
-14687 2318 2393 0.204381692629994 0.204381692629994
-16054 238 599 0.20185675523074 0.20185675523074
-16055 599 9810 1.85367980178975 1.85367980178975
-16057 4648 9242 0.316343707887743 0.316343707887743
-16530 9931 9230 0.37930803087461 0.37930803087461
-16060 8979 9416 0.148643981954463 0.148643981954463
-16062 9129 442 0.133338694466943 0.133338694466943
-16063 442 341 0.15400049730887 0.15400049730887
-16064 341 8432 0.0419891636299648 0.0419891636299648
-16066 8912 8951 0.033170976893888 0.033170976893888
-16068 9812 8911 0.0471463735469582 0.0471463735469582
-16070 8259 6154 0.322113932922047 0.322113932922047
-16072 8262 9813 0.347409770060633 0.347409770060633
-16073 9813 8849 0.384076686987265 0.384076686987265
-16075 8850 8934 0.249988221702048 0.249988221702048
-15149 1055 2652 0.0975577285651678 0.0975577285651678
-15178 9518 9519 0.0502534780761684 0.0502534780761684
-15150 2652 6953 0.198623612037648 0.198623612037648
-15152 9492 9502 0.376572648781266 0.376572648781266
-15156 3293 102 0.41551161582069 0.41551161582069
-15160 4010 9505 0.052772682936521 0.052772682936521
-15161 9505 7047 0.0525680538450832 0.0525680538450832
-15162 7047 7019 0.0303888581356532 0.0303888581356532
-15163 7019 9506 0.0673030688563473 0.0673030688563473
-15164 9506 9507 0.0483154741652978 0.0483154741652978
-15165 9507 7386 0.0202051235057141 0.0202051235057141
-16629 9962 9963 0.200783522780218 0.200783522780218
-15167 9508 9509 0.0505081496090435 0.0505081496090435
-15169 3381 9510 0.054679375210741 0.054679375210741
-15170 9510 9511 0.0487967465713328 0.0487967465713328
-15175 9515 9516 0.0511072604930319 0.0511072604930319
-15176 9516 9517 0.199298430530572 0.199298430530572
-15177 9517 9518 0.0506626460359665 0.0506626460359665
-15179 9519 9520 0.0992839733792875 0.0992839733792875
-2659 2617 2618 0.0492730897550554 0.0492730897550554
-15180 9520 5591 0.0515928611698618 0.0515928611698618
-15181 5591 9521 0.0485416940170638 0.0485416940170638
-15182 9521 7534 0.0495967074681937 0.0495967074681937
-15183 7534 9522 0.687013260502188 0.687013260502188
-15184 4010 253 0.115254186613677 0.115254186613677
-15185 253 9523 0.265666797076755 0.265666797076755
-16090 9493 9818 0.0359382002911722 0.0359382002911722
-16093 9805 9821 0.0110994776170347 0.0110994776170347
-16096 9495 9822 0.0517988653877033 0.0517988653877033
-16097 9822 9823 0.0110663007110829 0.0110663007110829
-16098 9823 525 0.0383908840803154 0.0383908840803154
-16099 525 9824 0.0469464980296333 0.0469464980296333
-16107 214 9827 0.778079889437356 0.778079889437356
-16108 9827 8266 0.110384878461573 0.110384878461573
-16109 8266 8259 0.22035773346297 0.22035773346297
-16111 426 5290 0.135279903383581 0.135279903383581
-16112 5290 6969 0.13394711160262 0.13394711160262
-16113 6969 9 0.133723176212026 0.133723176212026
-12362 8672 8673 0.0280927507040958 0.0280927507040958
-16114 9 6393 0.135759876984547 0.135759876984547
-16116 543 2417 0.140823258017981 0.140823258017981
-16117 2417 8309 0.134744289641959 0.134744289641959
-16121 9523 8323 0.0490645159279825 0.0490645159279825
-16122 8323 2296 0.111956296963114 0.111956296963114
-16123 2296 425 0.133707313641353 0.133707313641353
-16125 8580 9121 0.223068039429751 0.223068039429751
-16129 4649 7955 0.0999111170250792 0.0999111170250792
-16130 7955 9828 0.0800171872297717 0.0800171872297717
-16131 9829 8581 0.047687571765354 0.047687571765354
-16133 9073 1815 0.113861635058861 0.113861635058861
-16134 1815 9030 0.0294613091189667 0.0294613091189667
-16135 9030 9035 0.0740720067279475 0.0740720067279475
-16136 9035 2259 0.0101253625653209 0.0101253625653209
-16137 2259 6127 0.0869883467865613 0.0869883467865613
-16138 6127 3970 0.0982525233162176 0.0982525233162176
-16139 3970 4005 0.0213357195383616 0.0213357195383616
-16170 9839 7732 1.81004213705151 1.81004213705151
-16140 4005 9831 0.0527909920856998 0.0527909920856998
-16143 7028 9832 0.0518403992809488 0.0518403992809488
-16144 9832 1405 0.0193610465151665 0.0193610465151665
-16145 1405 9086 0.0330290864914803 0.0330290864914803
-16146 9086 9833 0.0517615954401031 0.0517615954401031
-16147 9833 7389 0.013992344500971 0.013992344500971
-16148 7389 7381 0.039974198258354 0.039974198258354
-16149 7381 5215 0.0612246627137571 0.0612246627137571
-16150 5215 3395 0.05711231452959 0.05711231452959
-16152 7953 9834 0.0172080507351113 0.0172080507351113
-16154 9834 274 0.0658337540289098 0.0658337540289098
-16156 2189 9835 0.248404343096233 0.248404343096233
-16214 8735 9837 1.99433693652165 1.99433693652165
-16215 8737 9838 0.871081020569746 0.871081020569746
-4419 2776 4130 0.131599235651272 0.131599235651272
-16159 9143 9028 0.680206597840058 0.680206597840058
-16163 722 8058 0.174054831255352 0.174054831255352
-16164 8058 521 0.0821177779256467 0.0821177779256467
-16165 521 6603 0.0924366308750619 0.0924366308750619
-16166 6603 5373 0.180047417371753 0.180047417371753
-16168 1948 2528 0.0688038536836977 0.0688038536836977
-16333 7146 2907 0.104983935013538 0.104983935013538
-16334 2907 7925 0.0494998939900097 0.0494998939900097
-16338 3444 3467 0.0304982971000002 0.0304982971000002
-16339 3467 8082 0.246312262462312 0.246312262462312
-16342 8704 8153 0.0931754474511838 0.0931754474511838
-16343 8153 7614 0.0941189496630448 0.0941189496630448
-16344 7614 7267 0.0948021938707784 0.0948021938707784
-16345 7267 7586 0.0921634745405222 0.0921634745405222
-16346 7586 7587 0.0431064926802277 0.0431064926802277
-16347 7587 2005 0.0500940428381568 0.0500940428381568
-16348 2005 3364 0.0956080752868491 0.0956080752868491
-16349 3364 2759 0.0936601356465838 0.0936601356465838
-16350 2759 7009 0.0948690491965415 0.0948690491965415
-16352 2285 3605 0.100419536914451 0.100419536914451
-16353 3605 7531 0.0985834303955712 0.0985834303955712
-16354 7531 2140 0.105692387990087 0.105692387990087
-16355 2140 5996 0.104777507715381 0.104777507715381
-16356 5996 7676 0.0990116406010299 0.0990116406010299
-16357 7676 9874 1.60848579675559 1.60848579675559
-17199 2711 10073 0.10997712384001 0.10997712384001
-16358 9875 2326 1.55889022258017 1.55889022258017
-16360 5997 2127 0.151773007567564 0.151773007567564
-16361 2127 3609 0.151558147644208 0.151558147644208
-16362 3609 7010 0.212760869396779 0.212760869396779
-16365 3365 2006 0.0553745270182344 0.0553745270182344
-16366 2006 7588 0.0502101113635407 0.0502101113635407
-16367 7588 7258 0.104315488387994 0.104315488387994
-16368 7258 7615 0.106145187491952 0.106145187491952
-16369 7615 9877 0.104437372352784 0.104437372352784
-16429 9892 3407 0.0665957848901693 0.0665957848901693
-16430 3407 9893 0.16801404607557 0.16801404607557
-16433 9895 9896 0.440540235104303 0.440540235104303
-16436 9897 9898 0.0704932318773383 0.0704932318773383
-16438 95 3655 0.111235679997702 0.111235679997702
-16440 9899 5747 0.0711149911978779 0.0711149911978779
-16445 9902 9903 0.536321309295718 0.536321309295718
-16453 9908 9909 0.550826257700494 0.550826257700494
-16458 9907 9908 0.00771583659604379 0.00771583659604379
-16460 9909 9912 0.0865311626257968 0.0865311626257968
-16461 9912 9910 0.0378168798460609 0.0378168798460609
-16471 3282 9916 0.18653100874984 0.18653100874984
-16473 9917 8680 0.0249041944601551 0.0249041944601551
-19510 10535 10536 0.0273195782326388 0.0273195782326388
-16475 8507 9918 0.021850852998121 0.021850852998121
-16476 9918 3018 0.0101317448895217 0.0101317448895217
-16478 9919 9920 0.0829003664734834 0.0829003664734834
-16479 9921 3681 0.0300651916457247 0.0300651916457247
-16668 9926 9974 0.105582813458159 0.105582813458159
-16669 9588 1633 0.0730557533632891 0.0730557533632891
-16671 9928 9975 0.0177169257267767 0.0177169257267767
-117 124 125 0.0336263849765442 0.0336263849765442
-16672 9975 9929 0.0234356081852519 0.0234356081852519
-16674 9976 9977 0.0468170562405583 0.0468170562405583
-16710 104 7825 0.0602462277844684 0.0602462277844684
-16712 104 3757 0.402008044434906 0.402008044434906
-16713 3757 1487 0.204145741130723 0.204145741130723
-16714 1487 132 0.199447130341484 0.199447130341484
-16716 1701 5546 0.198096603236586 0.198096603236586
-16777 69 3510 0.205561826495526 0.205561826495526
-4421 1201 4132 0.0220332988005433 0.0220332988005433
-16718 7283 485 0.11761309283436 0.11761309283436
-16720 10003 3244 0.0554692551325786 0.0554692551325786
-16721 3244 7234 0.20486059291662 0.20486059291662
-16722 7234 1896 0.200393401337734 0.200393401337734
-16723 1896 6106 0.199619177779868 0.199619177779868
-16724 6106 3190 0.204209613390108 0.204209613390108
-16725 3190 3074 0.20155062603718 0.20155062603718
-17204 10076 9899 0.140445516840247 0.140445516840247
-17206 10077 9891 0.365702001724341 0.365702001724341
-17210 9916 551 0.0168353379628002 0.0168353379628002
-17211 551 10077 0.029511971826839 0.029511971826839
-17221 9830 5174 0.203086414023487 0.203086414023487
-17225 7299 3774 0.0270450210392685 0.0270450210392685
-17227 10078 240 0.11490035547177 0.11490035547177
-17229 240 241 0.0697724132050665 0.0697724132050665
-17230 241 242 0.0623380559401012 0.0623380559401012
-17231 242 243 0.121807717540091 0.121807717540091
-17238 246 247 0.10870569104286 0.10870569104286
-17239 247 248 0.0772679392991742 0.0772679392991742
-17241 235 3406 0.0743704107751119 0.0743704107751119
-17242 3406 10079 0.167074762801468 0.167074762801468
-17244 331 10014 0.0356018290483491 0.0356018290483491
-17245 10014 8533 0.134990804356131 0.134990804356131
-17247 510 8534 0.190527366373376 0.190527366373376
-17249 9649 6335 0.0185334131201332 0.0185334131201332
-17250 6335 10080 0.0823637888630556 0.0823637888630556
-17251 10080 3812 0.199228355515768 0.199228355515768
-17252 3812 5918 0.151375161417453 0.151375161417453
-17254 917 2204 0.201707005619294 0.201707005619294
-17255 2204 4853 0.158074944552835 0.158074944552835
-17506 10119 8389 0.0881257330115891 0.0881257330115891
-17514 10115 4493 0.0857000040414071 0.0857000040414071
-17515 4493 10122 0.00789608138487867 0.00789608138487867
-17516 10122 10123 0.0829902602540724 0.0829902602540724
-17517 10123 3738 0.117121022748715 0.117121022748715
-16415 3033 3034 0.026586968802262 0.026586968802262
-17518 3738 5617 0.105494461178937 0.105494461178937
-17519 5617 10124 0.0771328841888806 0.0771328841888806
-18717 1848 7866 0.175365518810985 0.175365518810985
-17520 10124 3940 0.0438462962781839 0.0438462962781839
-18649 10111 1854 0.1585792263447 0.1585792263447
-17522 6651 7970 0.100526894140491 0.100526894140491
-17523 7970 10125 0.0156643759566378 0.0156643759566378
-17525 342 10126 0.0436005942347808 0.0436005942347808
-17527 10126 10121 0.0408685827486489 0.0408685827486489
-17529 8016 10127 0.0296331396909763 0.0296331396909763
-17533 9200 10128 0.0316360066553629 0.0316360066553629
-17535 10128 3937 0.0160944313012695 0.0160944313012695
-17537 10125 10129 0.0323384241188202 0.0323384241188202
-17540 8937 10130 0.0382349269331771 0.0382349269331771
-18160 6035 10256 0.201529974874074 0.201529974874074
-18081 3725 3961 0.10669546577579 0.10669546577579
-18082 3961 5599 0.120037242247265 0.120037242247265
-18083 5599 10212 0.0720417181829305 0.0720417181829305
-18085 6582 8060 0.177813026382298 0.177813026382298
-18087 79 3516 0.204359090736991 0.204359090736991
-18089 10257 1076 0.140362637117951 0.140362637117951
-18092 8839 10258 0.0505579939719693 0.0505579939719693
-18093 10258 1216 0.0474392361763922 0.0474392361763922
-18094 1216 6309 0.0509984491369365 0.0509984491369365
-18095 6309 4788 0.0491735679878017 0.0491735679878017
-18418 8332 8359 0.203675131612914 0.203675131612914
-18096 4788 10256 0.0504039235105897 0.0504039235105897
-18098 2169 10259 0.0494310424509836 0.0494310424509836
-18099 10259 6301 0.0486534339401342 0.0486534339401342
-18100 6301 10260 0.0495166429402865 0.0495166429402865
-18101 10260 6428 0.0494555977491468 0.0494555977491468
-18102 6428 10261 0.0500541316962619 0.0500541316962619
-18103 10261 8837 0.049703265213276 0.049703265213276
-18104 8837 10262 0.0487206483354329 0.0487206483354329
-18105 10262 4661 0.0502842889238415 0.0502842889238415
-18210 6766 8919 0.14588598272053 0.14588598272053
-18215 6383 6883 0.201049789723751 0.201049789723751
-18217 9380 6467 0.149037633666744 0.149037633666744
-18218 6467 5528 0.155039270882985 0.155039270882985
-18219 5528 5739 0.157509840329179 0.157509840329179
-18220 5739 2443 0.171457541049395 0.171457541049395
-18221 2443 9373 0.174175733096206 0.174175733096206
-18222 9373 1695 0.20076305206058 0.20076305206058
-18224 6884 8362 0.203398590237467 0.203398590237467
-18225 8362 8336 0.20070690829837 0.20070690829837
-18226 8336 7851 0.201718717149991 0.201718717149991
-18228 9334 6072 0.194542227529238 0.194542227529238
-18229 6072 2552 0.201793795787929 0.201793795787929
-18231 10282 2550 0.408975962052575 0.408975962052575
-18233 6070 9333 0.193859431649891 0.193859431649891
-18235 3976 7037 0.199530180994258 0.199530180994258
-200 212 213 0.0847562945477418 0.0847562945477418
-18390 3978 7038 0.19806787554915 0.19806787554915
-18392 3425 3425 0.000442266584977921 0.000442266584977921
-18397 9331 6062 0.201652000193759 0.201652000193759
-18398 6062 2541 0.201129932352607 0.201129932352607
-18581 5716 10279 0.0494611669239994 0.0494611669239994
-18582 10279 7436 0.0477007849303031 0.0477007849303031
-18583 7436 10283 0.0501702475316452 0.0501702475316452
-17420 10101 10103 0.0112555006692224 0.0112555006692224
-18584 10283 7175 0.0483500943699416 0.0483500943699416
-18585 7175 6738 0.0504392554289189 0.0504392554289189
-18586 6738 7790 0.0494479351051842 0.0494479351051842
-18587 7790 6666 0.0500428725179926 0.0500428725179926
-19485 10408 10409 0.0449233009136641 0.0449233009136641
-18958 4669 4949 0.0991091352300086 0.0991091352300086
-18959 4949 10410 0.051350182738824 0.051350182738824
-18961 7220 10411 0.0512063955237151 0.0512063955237151
-18962 10411 5674 0.0503168586815151 0.0503168586815151
-18964 5851 1441 0.115857091100705 0.115857091100705
-18965 1441 10412 0.122824478936007 0.122824478936007
-18966 10412 7622 0.0791461153811418 0.0791461153811418
-18967 7622 6933 0.202629079077677 0.202629079077677
-18968 6933 5888 0.202049147826104 0.202049147826104
-18969 5888 10407 0.149951393120126 0.149951393120126
-18971 4142 7756 0.106122091000002 0.106122091000002
-18973 3621 1827 0.0998991515255571 0.0998991515255571
-18974 1827 10091 0.0457369036734835 0.0457369036734835
-18975 10091 10090 0.0485102588443954 0.0485102588443954
-18976 10090 5102 0.00428121670773934 0.00428121670773934
-18977 5102 9830 0.0472330884345854 0.0472330884345854
-18978 9830 1764 0.0499536922707767 0.0499536922707767
-19245 5031 10461 0.0349404698955745 0.0349404698955745
-19246 10461 10462 0.146091635323691 0.146091635323691
-19247 10462 5803 0.103032761304249 0.103032761304249
-19249 10129 4929 0.0162234814669486 0.0162234814669486
-19250 4929 2997 0.0775054077358341 0.0775054077358341
-19251 2997 7215 0.0556994645707447 0.0556994645707447
-19252 7215 4943 0.101417024663026 0.101417024663026
-19253 4943 4680 0.100527034724402 0.100527034724402
-19254 4680 7861 0.10148450975115 0.10148450975115
-19255 7861 5802 0.109659923162335 0.109659923162335
-19256 5802 8768 0.114010676979814 0.114010676979814
-19257 8768 10464 0.134804410176221 0.134804410176221
-19258 10464 338 0.0847524339031626 0.0847524339031626
-19259 338 10465 0.0582049460436449 0.0582049460436449
-19261 9467 561 0.02991036647086 0.02991036647086
-15187 8324 9523 0.0327715210342319 0.0327715210342319
-15189 9403 6744 0.131603339182178 0.131603339182178
-15190 6744 6144 0.131367316381262 0.131367316381262
-15191 6144 4018 0.137213550559119 0.137213550559119
-15192 4018 7022 0.137229962505115 0.137229962505115
-15193 7022 7392 0.129151524081427 0.129151524081427
-15195 9524 9525 0.0293502828068984 0.0293502828068984
-15196 9525 3400 0.0502879609443278 0.0502879609443278
-15198 9212 8374 0.0509876682022625 0.0509876682022625
-15199 8374 9526 0.0501407630476736 0.0501407630476736
-15201 7443 9527 0.0485275735168955 0.0485275735168955
-15202 9527 7160 0.0501690368011668 0.0501690368011668
-15204 9528 7772 0.0491757515961192 0.0491757515961192
-19414 3251 7295 0.215557365491205 0.215557365491205
-19415 7295 38 0.193056632398898 0.193056632398898
-19416 38 3537 0.207444876530122 0.207444876530122
-19417 3537 4232 0.199406339345135 0.199406339345135
-19419 3248 7289 0.216790622749105 0.216790622749105
-19420 7289 34 0.19126988034169 0.19126988034169
-19660 6763 3987 0.201101495268523 0.201101495268523
-19664 9366 9360 0.104402218346712 0.104402218346712
-19665 9360 10609 0.0511942469588291 0.0511942469588291
-19666 10609 10608 0.151226661870126 0.151226661870126
-19668 10608 10610 0.149537813443153 0.149537813443153
-19674 1809 10611 0.33816836736717 0.33816836736717
-19676 10376 10403 0.0245741855053009 0.0245741855053009
-19678 10612 1810 0.127204321184034 0.127204321184034
-19681 10613 10400 0.0511661482023126 0.0511661482023126
-16697 7094 9611 0.00886963723885407 0.00886963723885407
-19683 10614 10404 0.0688061700167682 0.0688061700167682
-19873 9513 4580 0.132311871209248 0.132311871209248
-19684 10404 10611 0.093589959625359 0.093589959625359
-17421 10103 10082 0.0236886540751766 0.0236886540751766
-19685 10611 10612 0.0295914472405657 0.0295914472405657
-19686 10612 10614 0.0207133170517971 0.0207133170517971
-19688 10615 10399 0.0680853608411523 0.0680853608411523
-19742 8865 3778 0.153182304960692 0.153182304960692
-19743 3778 10251 0.199472712546792 0.199472712546792
-20418 10775 10774 0.0781617215430941 0.0781617215430941
-19804 10646 2619 0.0523061501297365 0.0523061501297365
-19839 10655 10656 0.208642261382715 0.208642261382715
-19840 10656 9515 0.207256465232075 0.207256465232075
-19841 9515 4581 0.131476935756536 0.131476935756536
-19842 4581 8369 0.136571452698726 0.136571452698726
-19843 8369 5296 0.134437189399661 0.134437189399661
-19849 9510 10659 0.196832023994668 0.196832023994668
-19850 10659 10660 0.00933491084100046 0.00933491084100046
-19857 10663 10664 0.203268481110854 0.203268481110854
-19858 10664 4584 0.340902950197611 0.340902950197611
-19859 4584 6443 0.133958738324445 0.133958738324445
-19860 6443 5300 0.13749324562242 0.13749324562242
-19862 10665 7406 0.149893826243372 0.149893826243372
-19865 10667 9512 0.206545737430627 0.206545737430627
-608 599 600 0.326867712180581 0.326867712180581
-19870 10669 10666 0.0946602410525992 0.0946602410525992
-19871 10666 10670 0.114297265097593 0.114297265097593
-19872 10670 9513 0.206208296842551 0.206208296842551
-20654 6734 10882 0.0587106683934502 0.0587106683934502
-19874 4580 8368 0.136014360939856 0.136014360939856
-19875 8368 3817 0.133956606983629 0.133956606983629
-19887 627 10669 0.00369254651812945 0.00369254651812945
-19888 10669 10673 0.0509541857454109 0.0509541857454109
-19889 10673 7185 0.0463624089792375 0.0463624089792375
-19890 7185 10655 0.00294147338451417 0.00294147338451417
-19891 10655 10658 0.0513792379314705 0.0513792379314705
-19892 10658 9726 0.0479329871824602 0.0479329871824602
-19893 9726 10654 0.050711837363241 0.050711837363241
-19894 10654 1102 0.049608905570541 0.049608905570541
-19895 1102 10674 0.051538155846358 0.051538155846358
-19896 10674 7514 0.0472454257465845 0.0472454257465845
-19897 7514 10675 0.00204366911425749 0.00204366911425749
-19898 10675 10650 0.0481859646371305 0.0481859646371305
-19899 10650 3868 0.0500586048613679 0.0500586048613679
-16182 5547 1702 0.197838014226301 0.197838014226301
-19900 3868 10663 0.00177015306197821 0.00177015306197821
-19902 10676 5589 0.0437900336804139 0.0437900336804139
-19975 9710 10678 0.0499234178433857 0.0499234178433857
-19976 10678 9722 0.0489092169162438 0.0489092169162438
-19977 9722 10686 0.0503973293919778 0.0503973293919778
-19978 10686 3380 0.0518081278246911 0.0518081278246911
-19979 3380 10660 0.0523052391085021 0.0523052391085021
-19980 10660 10679 0.0495088072044065 0.0495088072044065
-19981 10679 10667 0.0507313759263116 0.0507313759263116
-19982 10667 10670 0.0483586645716411 0.0483586645716411
-19983 10670 10680 0.0518679752837857 0.0518679752837857
-19984 10680 10656 0.050123635320888 0.050123635320888
-19985 10656 10657 0.0496280116055878 0.0496280116055878
-19986 10657 9727 0.0488069327339047 0.0488069327339047
-19989 1103 10684 0.0492526075164636 0.0492526075164636
-656 646 647 0.146781335789774 0.146781335789774
-20153 9416 8943 0.363005134814212 0.363005134814212
-20155 9241 426 0.0770893533882784 0.0770893533882784
-20157 461 6171 0.271278721099677 0.271278721099677
-20161 1795 8719 0.00999704268874585 0.00999704268874585
-20163 4233 1795 0.205432809418909 0.205432809418909
-20165 3252 7296 0.216277689734072 0.216277689734072
-20166 7296 39 0.192678596239665 0.192678596239665
-20167 39 3538 0.207091579860447 0.207091579860447
-20168 3538 4234 0.200695550258567 0.200695550258567
-20170 6489 3675 0.150803028705812 0.150803028705812
-20172 9313 4863 0.191918567433925 0.191918567433925
-20173 4863 2213 0.160028953629168 0.160028953629168
-20174 2213 928 0.187511558441934 0.187511558441934
-17423 10083 10104 0.109040593432451 0.109040593432451
-20175 928 5932 0.175834480120689 0.175834480120689
-20176 5932 3804 0.153555987473657 0.153555987473657
-20178 3804 10247 0.200040701273324 0.200040701273324
-20181 6549 4768 0.17858020416066 0.17858020416066
-20185 10705 8247 0.0550533285282311 0.0550533285282311
-15205 7772 9040 0.0507978153373748 0.0507978153373748
-15206 9040 1113 0.0497891730866418 0.0497891730866418
-15208 9529 7493 0.0494909698776819 0.0494909698776819
-15209 7493 9169 0.051731129981418 0.051731129981418
-15210 9169 3835 0.0502567043103765 0.0502567043103765
-15212 5624 3708 0.103423232464888 0.103423232464888
-15213 3708 718 0.104893137935114 0.104893137935114
-15214 718 9442 0.108559355644902 0.108559355644902
-15215 9442 8519 0.0865482797270432 0.0865482797270432
-15218 539 540 0.260599478311813 0.260599478311813
-15220 9430 9531 0.0962600395709663 0.0962600395709663
-15232 8334 8360 0.0525484415568663 0.0525484415568663
-15234 9532 9533 0.00803607126282377 0.00803607126282377
-16285 2852 1362 0.131790180095648 0.131790180095648
-15236 9534 9535 0.0751513734309232 0.0751513734309232
-15237 9535 9536 0.0195917533971332 0.0195917533971332
-15238 9536 9537 0.0515491230280822 0.0515491230280822
-18878 3216 6125 0.202386413121619 0.202386413121619
-15239 9537 9538 0.0217956250277941 0.0217956250277941
-15248 8177 9543 0.0137987617761691 0.0137987617761691
-15249 9541 9542 0.0585754347953461 0.0585754347953461
-15262 9552 9550 0.00461416645458039 0.00461416645458039
-15263 9550 8208 0.00942903742084459 0.00942903742084459
-15264 8208 8203 0.268586250441468 0.268586250441468
-15265 8203 8187 0.252138571661244 0.252138571661244
-15267 8182 9552 0.0592295781497915 0.0592295781497915
-15275 9553 392 0.159342904018314 0.159342904018314
-15276 392 443 0.100075433980265 0.100075433980265
-15277 443 8209 0.110751336507506 0.110751336507506
-15278 3258 9554 0.029060284587417 0.029060284587417
-15279 9555 9556 0.0194857519875014 0.0194857519875014
-15280 9556 9557 0.01686832436596 0.01686832436596
-15284 9558 8799 0.0124547414515574 0.0124547414515574
-15287 9268 8812 0.43752637477907 0.43752637477907
-15372 9568 7345 0.407049578137861 0.407049578137861
-15373 7345 7369 0.0183549065123627 0.0183549065123627
-15374 7369 7156 0.617874851338927 0.617874851338927
-15375 7156 8802 0.0193374199518318 0.0193374199518318
-15376 8802 7317 0.278372348360029 0.278372348360029
-15377 7317 7975 0.104085714382657 0.104085714382657
-15378 7975 8806 0.102424669696849 0.102424669696849
-20689 10900 10890 0.00428101320774671 0.00428101320774671
-15380 2642 4108 0.0801282359532547 0.0801282359532547
-15882 9238 9569 0.375213941828735 0.375213941828735
-4422 4132 3782 0.199943657895071 0.199943657895071
-15381 4108 7064 0.0951259934580263 0.0951259934580263
-15383 993 9570 0.0346111476896159 0.0346111476896159
-15385 9570 2914 0.0185752046128979 0.0185752046128979
-15393 9572 9573 0.0529385333780706 0.0529385333780706
-15394 9574 9575 0.235820407161737 0.235820407161737
-15395 8031 9576 0.0470934184180165 0.0470934184180165
-15396 9577 9578 0.0233972200853265 0.0233972200853265
-15398 8797 9577 0.0680401949692739 0.0680401949692739
-15404 9583 9584 0.0189997554494897 0.0189997554494897
-15413 8399 9591 0.147004287358107 0.147004287358107
-15414 9591 9592 0.0201167087704522 0.0201167087704522
-15415 9592 8857 0.127975925737851 0.127975925737851
-15416 8857 7897 0.144523217943683 0.144523217943683
-15864 9238 9744 0.017876559138977 0.017876559138977
-765 765 766 0.102953430637808 0.102953430637808
-15417 7897 8290 0.14604137147811 0.14604137147811
-15418 8290 8283 0.146330295926468 0.146330295926468
-15419 8283 9593 0.142033870447888 0.142033870447888
-15420 9593 5781 0.00569268198805717 0.00569268198805717
-15421 5781 8573 0.144843439528192 0.144843439528192
-15422 8573 6709 0.145981160506706 0.145981160506706
-15423 6709 8489 0.147059173742998 0.147059173742998
-20690 10890 10906 0.00389182243300479 0.00389182243300479
-15424 8489 9595 0.146421765893647 0.146421765893647
-15425 9595 8637 0.147888642293711 0.147888642293711
-15427 4935 9590 0.0193454164735318 0.0193454164735318
-15430 8608 1478 0.0099286705971119 0.0099286705971119
-15433 7965 9599 0.0149228575371813 0.0149228575371813
-15434 9599 9600 0.0470176213777162 0.0470176213777162
-16271 9867 94 0.0502509464237392 0.0502509464237392
-16273 9867 3654 0.100162413874862 0.100162413874862
-15435 9600 9601 0.0734739685688771 0.0734739685688771
-15436 9601 9602 0.120469898327734 0.120469898327734
-15474 9617 9618 0.0309123358720865 0.0309123358720865
-15475 9618 9620 0.138252717835719 0.138252717835719
-15476 9620 8583 0.0318418680569216 0.0318418680569216
-15477 8583 8311 0.113486958547973 0.113486958547973
-15478 8311 2808 0.019311822890669 0.019311822890669
-15479 2808 9621 0.209882261055166 0.209882261055166
-15480 9621 8522 0.0161981079077479 0.0161981079077479
-15481 8522 8465 0.180991531047255 0.180991531047255
-15487 9624 8468 0.0340418553637742 0.0340418553637742
-15786 9625 9596 0.0115036173464072 0.0115036173464072
-15489 9626 9618 0.0131866115872677 0.0131866115872677
-15494 4937 9617 0.0698272217766147 0.0698272217766147
-15496 9628 9607 0.229575641341845 0.229575641341845
-15497 9607 9629 0.399617180847297 0.399617180847297
-15498 9629 8646 0.256050430773093 0.256050430773093
-15500 9630 7969 0.0158758080194332 0.0158758080194332
-20692 10907 5885 0.00586950671491746 0.00586950671491746
-20693 5885 10908 0.00728749668565428 0.00728749668565428
-15501 7969 6652 0.0898251140375734 0.0898251140375734
-15502 6652 3939 0.0164838165497055 0.0164838165497055
-15504 5618 2286 0.10606737169151 0.10606737169151
-15506 4494 9631 0.0855716406365801 0.0855716406365801
-15508 9632 9630 0.0305358161263308 0.0305358161263308
-15510 9633 4938 0.00998098524134014 0.00998098524134014
-15511 4938 6650 0.146459053749354 0.146459053749354
-15512 6650 3942 0.0669626682021978 0.0669626682021978
-15513 3942 9634 0.0625685122990456 0.0625685122990456
-15514 9634 5614 0.0589940973382129 0.0589940973382129
-15515 5614 9635 0.0521244888471325 0.0521244888471325
-15518 9636 9633 0.0394950652718853 0.0394950652718853
-15520 9637 4687 0.0148908622684888 0.0148908622684888
-15522 5369 9637 0.0293813837370069 0.0293813837370069
-15524 9638 4939 0.016179725599566 0.016179725599566
-15525 4939 7226 0.0545709952111213 0.0545709952111213
-15526 7226 9640 0.0899454990944897 0.0899454990944897
-15527 9640 6648 0.0447546990135401 0.0447546990135401
-15528 6648 9641 0.0618904241631349 0.0618904241631349
-15529 9641 3943 0.062420581454241 0.062420581454241
-15530 3943 9642 0.0627968141202241 0.0627968141202241
-15531 9642 5613 0.0612320254822175 0.0612320254822175
-15532 5613 9643 0.0497740720528068 0.0497740720528068
-15533 9643 3735 0.0551525120669933 0.0551525120669933
-15534 3735 4491 0.207391837271035 0.207391837271035
-15535 4491 129 0.109629298465467 0.109629298465467
-15536 129 7948 0.0410521986313786 0.0410521986313786
-15537 7948 2527 0.287151637527745 0.287151637527745
-15538 2527 9644 0.066959748271427 0.066959748271427
-15539 9644 1221 0.102833533420687 0.102833533420687
-16595 9951 6712 0.00734129639736197 0.00734129639736197
-15542 618 9638 0.0309196803723069 0.0309196803723069
-15548 9647 9648 0.0291957554146951 0.0291957554146951
-15549 7572 9649 0.0425327114545183 0.0425327114545183
-15551 9650 9651 0.00414955523410263 0.00414955523410263
-15553 9651 9652 0.0110054302366685 0.0110054302366685
-15555 9652 9653 0.018743029705938 0.018743029705938
-15558 9656 4160 0.0156451635843959 0.0156451635843959
-15559 4160 4769 0.262100180691146 0.262100180691146
-15560 4769 6550 0.17763389531497 0.17763389531497
-15561 6550 9299 0.171507609467602 0.171507609467602
-15564 3803 5934 0.15587305192408 0.15587305192408
-15565 5934 930 0.176935041153743 0.176935041153743
-15566 930 2215 0.185037322727603 0.185037322727603
-15567 2215 4865 0.15888388268895 0.15888388268895
-15568 4865 9477 0.193757182508649 0.193757182508649
-15569 9477 5466 0.16958064463752 0.16958064463752
-15570 5466 9658 0.179556785798918 0.179556785798918
-15571 9658 9659 0.177338892845698 0.177338892845698
-15572 9659 662 0.00516539932395329 0.00516539932395329
-18431 10291 7169 0.0508784288394603 0.0508784288394603
-15573 662 9660 0.00343592323317494 0.00343592323317494
-15575 9464 4609 0.17585408606 0.17585408606
-15576 4609 6490 0.148161596916065 0.148161596916065
-15577 6490 7974 0.0885778987826885 0.0885778987826885
-15579 4336 9656 0.0458791064556152 0.0458791064556152
-15581 7573 3556 0.0299599314208067 0.0299599314208067
-15583 851 7096 0.0990470064031014 0.0990470064031014
-15584 7096 9661 0.0107677923604542 0.0107677923604542
-15585 9661 9662 0.0081027242638239 0.0081027242638239
-15586 9662 9663 0.00747970901198794 0.00747970901198794
-15587 9663 9664 0.00836437719840195 0.00836437719840195
-15588 9664 9665 0.00928103292942469 0.00928103292942469
-15589 9665 9666 0.00696482735297281 0.00696482735297281
-15590 9666 9667 0.00676039634627663 0.00676039634627663
-15591 9667 9668 0.00737940382126904 0.00737940382126904
-15592 9668 9669 0.0330209265296029 0.0330209265296029
-15593 9669 8703 0.0154036792176203 0.0154036792176203
-15594 8703 8152 0.0935877668611654 0.0935877668611654
-15595 8152 7613 0.0937841622026169 0.0937841622026169
-15596 7613 7266 0.0918493440897444 0.0918493440897444
-15597 7266 7585 0.0967046653962524 0.0967046653962524
-15599 2003 3363 0.0896469251714999 0.0896469251714999
-15600 3363 2757 0.0953909752557553 0.0953909752557553
-15601 2757 9670 0.0852737689905025 0.0852737689905025
-15602 9670 9671 0.00427910266137011 0.00427910266137011
-15603 9671 7008 0.00522846022655691 0.00522846022655691
-15604 7008 9672 0.00318311155269209 0.00318311155269209
-15605 9672 9673 0.00446550904917084 0.00446550904917084
-15606 9673 9674 0.0041674932546887 0.0041674932546887
-15607 9674 2283 0.0902343315694916 0.0902343315694916
-15608 2283 3604 0.0998061678618656 0.0998061678618656
-15609 3604 7530 0.0990712121378624 0.0990712121378624
-15610 7530 2138 0.109343720002506 0.109343720002506
-15611 2138 5995 0.0993207600682094 0.0993207600682094
-15612 5995 7675 0.101107003151938 0.101107003151938
-15613 7675 9675 0.0981911301047578 0.0981911301047578
-15614 9675 9676 0.100210056589884 0.100210056589884
-15615 9676 9677 0.100165741773797 0.100165741773797
-15616 9677 9678 0.100142214318315 0.100142214318315
-15617 9678 9679 0.0993326168253197 0.0993326168253197
-899 913 914 0.147143450226327 0.147143450226327
-20715 10914 9397 0.00810191720556871 0.00810191720556871
-15619 9680 9681 0.102717909771226 0.102717909771226
-15620 9681 9682 0.100023276858498 0.100023276858498
-15621 9682 9683 0.100843312370816 0.100843312370816
-15622 9683 9684 0.101658088937986 0.101658088937986
-15623 9684 9685 0.0375181649725389 0.0375181649725389
-15624 9685 9686 0.0593326737516342 0.0593326737516342
-15625 9686 9687 0.102011015676098 0.102011015676098
-15627 9688 9689 0.110065273053945 0.110065273053945
-15628 9689 9690 0.109733851792721 0.109733851792721
-15629 9690 9691 0.0939207749458389 0.0939207749458389
-15630 9691 9692 0.102876500148466 0.102876500148466
-15631 9692 9693 0.0940860472810003 0.0940860472810003
-15633 851 7096 0.0990470064031014 0.0990470064031014
-15634 7096 9661 0.0107677923604542 0.0107677923604542
-15635 9661 9662 0.0081027242638239 0.0081027242638239
-15636 9662 9663 0.00747970901198794 0.00747970901198794
-15637 9663 9664 0.00836437719840195 0.00836437719840195
-15638 9664 9665 0.00928103292942469 0.00928103292942469
-15639 9665 9666 0.00696482735297281 0.00696482735297281
-15641 9667 9668 0.00737940382126904 0.00737940382126904
-15642 9668 9669 0.0330209265296029 0.0330209265296029
-15644 8703 8152 0.0935877668611654 0.0935877668611654
-20716 9397 9341 0.0111932287865196 0.0111932287865196
-15645 8152 7613 0.0937841622026169 0.0937841622026169
-15646 7613 7266 0.0918493440897444 0.0918493440897444
-15647 7266 7585 0.0967046653962524 0.0967046653962524
-15648 7585 2003 0.0946559616738872 0.0946559616738872
-15649 2003 3363 0.0896469251714999 0.0896469251714999
-15650 3363 2757 0.0953909752557553 0.0953909752557553
-15651 2757 9670 0.0852737689905025 0.0852737689905025
-15652 9670 9671 0.00427910266137011 0.00427910266137011
-15653 9671 7008 0.00522846022655691 0.00522846022655691
-15654 7008 9672 0.00318311155269209 0.00318311155269209
-15655 9672 9673 0.00446550904917084 0.00446550904917084
-15656 9673 9674 0.0041674932546887 0.0041674932546887
-15657 9674 2283 0.0902343315694916 0.0902343315694916
-15658 2283 3604 0.0998061678618656 0.0998061678618656
-15659 3604 7530 0.0990712121378624 0.0990712121378624
-940 955 956 0.0467857248690536 0.0467857248690536
-15660 7530 2138 0.109343720002506 0.109343720002506
-15661 2138 5995 0.0993207600682094 0.0993207600682094
-15663 7675 9675 0.0981911301047578 0.0981911301047578
-15664 9675 9676 0.100210056589884 0.100210056589884
-15665 9676 9677 0.100165741773797 0.100165741773797
-15666 9677 9678 0.100142214318315 0.100142214318315
-20717 9341 10910 0.0086655068036058 0.0086655068036058
-15667 9678 9679 0.0993326168253197 0.0993326168253197
-15668 9679 9680 0.101799223111765 0.101799223111765
-15669 9680 9681 0.102717909771226 0.102717909771226
-15670 9681 9682 0.100023276858498 0.100023276858498
-15671 9682 9683 0.100843312370816 0.100843312370816
-15672 9683 9684 0.101658088937986 0.101658088937986
-15673 9684 9685 0.0375181649725389 0.0375181649725389
-15675 9686 9687 0.102011015676098 0.102011015676098
-15676 9687 9688 0.091295408872665 0.091295408872665
-15677 9688 9689 0.110065273053945 0.110065273053945
-15678 9689 9690 0.109733851792721 0.109733851792721
-15679 9690 9691 0.0939207749458389 0.0939207749458389
-15680 9691 9692 0.102876500148466 0.102876500148466
-15681 9692 9693 0.0940860472810003 0.0940860472810003
-15684 7680 3450 0.103468199661171 0.103468199661171
-15686 6014 3880 0.103612570358144 0.103612570358144
-15687 3880 842 0.103458609408344 0.103458609408344
-15688 842 7097 0.103202015659942 0.103202015659942
-15689 7097 9694 0.047717886337947 0.047717886337947
-15690 9694 8693 0.0153273459011852 0.0153273459011852
-15691 8693 8154 0.0909950973067502 0.0909950973067502
-15692 8154 7616 0.0940844002869557 0.0940844002869557
-20719 10885 9398 0.0070860203578635 0.0070860203578635
-15693 7616 7269 0.0941699315585107 0.0941699315585107
-15695 2024 3357 0.101537173300766 0.101537173300766
-15696 3357 2761 0.09936727049288 0.09936727049288
-15697 2761 7002 0.0992423706702366 0.0992423706702366
-15698 7002 2264 0.0979906184711561 0.0979906184711561
-15699 2264 3594 0.0994063483699449 0.0994063483699449
-15700 3594 7517 0.101662572945496 0.101662572945496
-15701 7517 2099 0.100157096238172 0.100157096238172
-15702 2099 5976 0.101294873446063 0.101294873446063
-15703 5976 7666 0.100715370574341 0.100715370574341
-15705 2329 9695 0.166702045988164 0.166702045988164
-15706 8023 8686 0.102850512121315 0.102850512121315
-15708 8810 7064 0.0240522165973304 0.0240522165973304
-15710 8803 7155 0.0191394427517654 0.0191394427517654
-15711 7155 6281 0.12107437233707 0.12107437233707
-15712 6281 1050 0.111583194341316 0.111583194341316
-15714 3913 3150 0.158539469564201 0.158539469564201
-15715 3150 3124 0.0198304894474349 0.0198304894474349
-15716 3124 7370 0.0954616596060542 0.0954616596060542
-15717 7370 7346 0.018354860843617 0.018354860843617
-15718 7346 6806 0.0981383819816197 0.0981383819816197
-15719 6806 6802 0.0198184437093697 0.0198184437093697
-15720 6802 4711 0.111589534373845 0.111589534373845
-15721 4711 782 0.0471200606837116 0.0471200606837116
-15722 782 5113 0.0527296074626885 0.0527296074626885
-15723 5113 1545 0.0490000601275782 0.0490000601275782
-15724 1545 6325 0.0500984428583215 0.0500984428583215
-15728 9449 9696 0.165726699390797 0.165726699390797
-15732 8801 5164 0.779026857141219 0.779026857141219
-15734 9303 1207 0.168708605950551 0.168708605950551
-15735 1207 9698 0.0215813490172367 0.0215813490172367
-15736 9698 3771 0.199072281764282 0.199072281764282
-15738 8867 958 0.177734005515433 0.177734005515433
-15739 958 9420 0.172099550054797 0.172099550054797
-15740 9420 4896 0.162799282631442 0.162799282631442
-15741 4896 9470 0.183516274472291 0.183516274472291
-15742 9470 5493 0.174731799993968 0.174731799993968
-15743 5493 9699 0.19822011575815 0.19822011575815
-15745 6718 4833 0.101679501011927 0.101679501011927
-15746 4833 6378 0.103648655421083 0.103648655421083
-15747 6378 3188 0.103521991883946 0.103521991883946
-15749 8692 1060 0.0921643567251203 0.0921643567251203
-15750 1060 1697 0.0932426366322247 0.0932426366322247
-15751 1697 7268 0.0954492333486145 0.0954492333486145
-15752 7268 6671 0.0907592732101769 0.0907592732101769
-15754 2023 3356 0.0971424118361729 0.0971424118361729
-15756 2760 7001 0.10039029368168 0.10039029368168
-15757 7001 2263 0.0995790205304853 0.0995790205304853
-15758 2263 3487 0.100064167822274 0.100064167822274
-15760 5346 2098 0.0987082712844417 0.0987082712844417
-15761 2098 2940 0.101254724790906 0.101254724790906
-15763 6814 9700 0.201962621208867 0.201962621208867
-15766 9701 9702 0.01946308379228 0.01946308379228
-15767 9702 7793 0.0917115184551997 0.0917115184551997
-15768 7793 9703 0.0139663687397926 0.0139663687397926
-15769 9703 9044 0.0844498524584079 0.0844498524584079
-15770 9044 1093 0.00878466321187049 0.00878466321187049
-15771 1093 7489 0.0946907062423257 0.0946907062423257
-15772 7489 3839 0.0924847260791552 0.0924847260791552
-15773 3839 9041 0.00820472152594153 0.00820472152594153
-15774 9041 5598 0.0888252595207534 0.0888252595207534
-15775 5598 9038 0.0124773684874939 0.0124773684874939
-15776 9038 7546 0.0939528798953845 0.0939528798953845
-15817 9704 9705 0.0108623818240175 0.0108623818240175
-15777 7546 9706 0.691905770916309 0.691905770916309
-15800 1403 9709 0.0705866891174833 0.0705866891174833
-15801 9709 620 0.0978636674417251 0.0978636674417251
-15802 620 9710 0.210732715068668 0.210732715068668
-15803 9710 1934 0.00294671517895333 0.00294671517895333
-15812 9716 2323 0.0248152326425255 0.0248152326425255
-15814 9717 9718 0.0914794540174667 0.0914794540174667
-15815 9718 9719 0.0447183943765151 0.0447183943765151
-19498 10525 10526 0.0198486557174526 0.0198486557174526
-15816 9719 9704 0.266399501314719 0.266399501314719
-15823 622 9720 0.114642644128587 0.114642644128587
-15824 9720 9721 0.0112307689682394 0.0112307689682394
-15825 9721 9722 0.0869660670624723 0.0869660670624723
-15826 9722 9508 0.205466270114504 0.205466270114504
-15828 9723 8889 0.0324596924967659 0.0324596924967659
-15829 8889 7134 0.00993032916751998 0.00993032916751998
-15831 9724 9725 0.00760667507368999 0.00760667507368999
-15832 9725 9726 0.189210618262835 0.189210618262835
-15833 9726 9727 0.207046790394153 0.207046790394153
-19270 10423 10424 0.0241914475611954 0.0241914475611954
-435 364 434 0.342302602243315 0.342302602243315
-437 435 436 0.251313063977777 0.251313063977777
-438 291 437 0.00683009618704691 0.00683009618704691
-439 437 438 0.127267952892383 0.127267952892383
-18188 4070 6055 0.154839029661679 0.154839029661679
-2329 914 2297 0.0421335193471221 0.0421335193471221
-2331 2320 2321 0.0970544429847538 0.0970544429847538
-2332 2321 2325 0.106348268281835 0.106348268281835
-2334 2326 2327 0.097322097365987 0.097322097365987
-2335 2327 1153 0.100532392748858 0.100532392748858
-2338 2329 2330 0.176644411418714 0.176644411418714
-2339 2330 2331 0.174810883246149 0.174810883246149
-2340 2331 2332 0.246452825481674 0.246452825481674
-12346 8662 8663 0.00747381550039305 0.00747381550039305
-15258 8632 9548 0.0273148076656665 0.0273148076656665
-2341 2332 2333 0.239714451404855 0.239714451404855
-2342 2333 2334 0.0332654390408316 0.0332654390408316
-2344 2335 2336 0.129842641397919 0.129842641397919
-2346 2337 2338 0.0990445311811364 0.0990445311811364
-2348 2265 2339 0.101695232363891 0.101695232363891
-2349 2339 2340 0.100657111492997 0.100657111492997
-2350 2340 2100 0.0993531902440497 0.0993531902440497
-20593 3590 10852 0.00726410078461852 0.00726410078461852
-20595 10864 10861 0.0184079229928756 0.0184079229928756
-20596 10861 10869 0.0187971985012912 0.0187971985012912
-20598 10844 10816 0.176342451403751 0.176342451403751
-20599 10816 10784 0.0180725957817606 0.0180725957817606
-18882 3271 7310 0.200940882978518 0.200940882978518
-20600 10784 10835 0.00593511915863137 0.00593511915863137
-20602 2958 10836 0.0107685222165634 0.0107685222165634
-20605 10827 10870 0.0187474646325031 0.0187474646325031
-20606 10870 10871 0.0569206829492766 0.0569206829492766
-20746 10919 10920 0.0829974075948199 0.0829974075948199
-20607 10872 10858 0.118628394955246 0.118628394955246
-20609 2959 10837 0.0110654933350888 0.0110654933350888
-20610 10837 10819 0.0119664824389379 0.0119664824389379
-11704 1158 1159 0.143826308402294 0.143826308402294
-16709 10000 10001 0.0457062376473756 0.0457062376473756
-20652 9411 7929 0.0718148143148174 0.0718148143148174
-20655 4390 9954 0.0752796609482001 0.0752796609482001
-20656 9954 10883 0.0805000116188462 0.0805000116188462
-20657 10883 10884 0.00921180121982239 0.00921180121982239
-20658 10884 8289 0.0487008508548274 0.0487008508548274
-20660 5957 6482 0.0027689648671592 0.0027689648671592
-20661 6482 5774 0.120389794748458 0.120389794748458
-20662 5774 4620 0.0232425190443662 0.0232425190443662
-20663 4620 5809 0.169650245221728 0.169650245221728
-20664 5809 10472 0.013534248318244 0.013534248318244
-2394 2385 2386 0.330871173224232 0.330871173224232
-2396 2387 2072 0.091718253525282 0.091718253525282
-2398 2388 2389 0.0952556218940292 0.0952556218940292
-2399 2389 2390 0.088517954558777 0.088517954558777
-2400 2390 2391 0.100075566647637 0.100075566647637
-2401 2391 2392 0.0940014926636224 0.0940014926636224
-2402 2392 2394 0.0931645591460492 0.0931645591460492
-2403 2394 2395 0.0490422843236324 0.0490422843236324
-2404 2396 2397 0.101232025457682 0.101232025457682
-2405 2397 835 0.0985806787691326 0.0985806787691326
-2406 835 2398 0.196049611343252 0.196049611343252
-2407 2398 2399 0.0153233199302382 0.0153233199302382
-2408 2399 2400 0.00232458495354821 0.00232458495354821
-2412 2402 2403 0.0775441054784182 0.0775441054784182
-2415 2405 2406 0.101142772155656 0.101142772155656
-498 441 442 0.0937180388509973 0.0937180388509973
-500 443 444 0.0957304857475106 0.0957304857475106
-14680 445 446 0.198543865097556 0.198543865097556
-443 447 448 0.0518475604896436 0.0518475604896436
-446 450 451 0.1546192530483 0.1546192530483
-310 318 319 0.318271935051083 0.318271935051083
-447 451 452 0.176746748854474 0.176746748854474
-448 452 453 0.173946054533759 0.173946054533759
-449 453 454 0.161145911336434 0.161145911336434
-450 454 455 0.183605091547984 0.183605091547984
-452 456 457 0.174314536622101 0.174314536622101
-453 457 458 0.162044543484691 0.162044543484691
-454 458 459 0.182862983981988 0.182862983981988
-456 460 6 0.0823027301557762 0.0823027301557762
-1198 1212 1213 0.0683736094322978 0.0683736094322978
-465 266 468 0.155710664946604 0.155710664946604
-466 469 470 0.0207613766308904 0.0207613766308904
-468 471 472 0.378751941435673 0.378751941435673
-472 475 476 0.0306017516715067 0.0306017516715067
-474 477 478 0.142331986757376 0.142331986757376
-476 401 479 0.0792493107270532 0.0792493107270532
-480 481 482 0.61054856130416 0.61054856130416
-481 482 483 0.00751372921095178 0.00751372921095178
-482 483 484 0.0775332394520986 0.0775332394520986
-483 484 485 0.089248827005011 0.089248827005011
-17372 40 3540 0.206359755216492 0.206359755216492
-19502 10529 10530 0.0177249357864871 0.0177249357864871
-2653 2611 2612 0.141657164390576 0.141657164390576
-2654 2612 2613 0.112637909268372 0.112637909268372
-2655 2613 2614 0.0580743648208686 0.0580743648208686
-17439 9901 10107 0.0190863480039502 0.0190863480039502
-2656 2614 2615 0.100743891980042 0.100743891980042
-2657 2615 2616 0.100475490032633 0.100475490032633
-2658 2616 2617 0.0513770343819779 0.0513770343819779
-2660 2618 2619 0.0511386540650187 0.0511386540650187
-2661 2619 2620 0.0507766966271612 0.0507766966271612
-2662 2620 2621 0.0437935865590098 0.0437935865590098
-2664 2622 2623 0.138741239129278 0.138741239129278
-2665 2623 2624 0.0616812798954739 0.0616812798954739
-2666 2624 2625 0.041735581046466 0.041735581046466
-2668 2626 2627 0.080053274568439 0.080053274568439
-2669 2627 2628 0.0586986059075718 0.0586986059075718
-2672 2630 2631 0.0511347279443915 0.0511347279443915
-2673 2631 2632 0.0473711830288774 0.0473711830288774
-2701 1199 2633 0.0222472727939579 0.0222472727939579
-2800 2469 2753 0.205232670024875 0.205232670024875
-2801 2753 2754 0.200329673691245 0.200329673691245
-2802 2754 796 0.200317660350865 0.200317660350865
-2803 796 2755 0.202508246596186 0.202508246596186
-2804 2755 2756 0.202966691897007 0.202966691897007
-2805 2756 2757 0.203516573136303 0.203516573136303
-2806 2757 2758 0.206901705972361 0.206901705972361
-2807 2758 2759 0.18527317626533 0.18527317626533
-2809 2760 2761 0.172193089993048 0.172193089993048
-2810 2761 2337 0.176949778602699 0.176949778602699
-2811 2337 2762 0.175813497300624 0.175813497300624
-2812 2762 2763 0.241500363205236 0.241500363205236
-2813 2763 2764 0.135070479950714 0.135070479950714
-2814 2764 2765 0.106502558770285 0.106502558770285
-2815 2765 2766 0.0334927078919062 0.0334927078919062
-2816 2766 2767 0.200988096936329 0.200988096936329
-2817 2767 2768 0.200799068465386 0.200799068465386
-2819 2769 1141 0.136317655493671 0.136317655493671
-2820 1141 908 0.140881200888928 0.140881200888928
-1246 190 1268 0.101376125490378 0.101376125490378
-20670 10891 10892 0.0391113232197559 0.0391113232197559
-20671 10892 10893 0.0381065586329798 0.0381065586329798
-20672 10893 10894 0.00879572218910387 0.00879572218910387
-20673 10894 6880 0.00914047873035344 0.00914047873035344
-20675 10895 10896 0.0564298376836357 0.0564298376836357
-20676 10896 10897 0.0882221479591311 0.0882221479591311
-20677 10897 10898 0.0915468728847566 0.0915468728847566
-20678 10898 10889 0.0977975944203811 0.0977975944203811
-12368 8665 8670 0.0146509072378509 0.0146509072378509
-20679 10889 10899 0.0863988642991602 0.0863988642991602
-20680 10899 10900 0.00621581990565306 0.00621581990565306
-20682 10899 10901 0.0272487435286037 0.0272487435286037
-20683 10902 10892 0.0353963477419812 0.0353963477419812
-20685 10903 10904 0.0311951245060147 0.0311951245060147
-20686 10905 8231 0.00978569112678673 0.00978569112678673
-20687 8231 10753 0.00720642488718956 0.00720642488718956
-11 11 12 0.132606225003913 0.132606225003913
-13 13 14 0.261405445974353 0.261405445974353
-14 14 15 0.0524534751729061 0.0524534751729061
-15 15 16 0.0498286567506269 0.0498286567506269
-16 16 17 0.0506321145105979 0.0506321145105979
-17 17 18 0.0480115772672805 0.0480115772672805
-19 19 20 0.586520216245135 0.586520216245135
-21 22 23 0.0471109050306669 0.0471109050306669
-22 23 24 0.117066818844753 0.117066818844753
-25 26 27 0.131659873107185 0.131659873107185
-27 28 29 0.0945023300061256 0.0945023300061256
-28 29 32 0.0547795902237084 0.0547795902237084
-29 32 33 0.0472851468321661 0.0472851468321661
-30 33 34 0.0541728824006047 0.0541728824006047
-1 1 2 0.182682884421833 0.182682884421833
-31 34 35 0.0481653228438301 0.0481653228438301
-32 35 36 0.0518878807765827 0.0518878807765827
-34 37 38 0.0490317013211587 0.0490317013211587
-35 38 39 0.0492286314169291 0.0492286314169291
-36 39 40 0.0502550749626562 0.0502550749626562
-37 40 41 0.0504947813294015 0.0504947813294015
-19671 9367 10610 0.0557753987785757 0.0557753987785757
-38 41 42 0.0486093395250147 0.0486093395250147
-39 42 43 0.0502383575999221 0.0502383575999221
-40 43 44 0.0498102685006676 0.0498102685006676
-42 45 46 0.0520249865615885 0.0520249865615885
-43 46 47 0.0510850489044332 0.0510850489044332
-44 47 48 0.0480642310133195 0.0480642310133195
-45 48 49 0.0520776483582305 0.0520776483582305
-47 50 51 0.0661075861419648 0.0661075861419648
-48 51 52 0.0568810950926816 0.0568810950926816
-49 52 53 0.0608706853363099 0.0608706853363099
-50 53 54 0.0662114802606989 0.0662114802606989
-51 54 55 0.0474185291403829 0.0474185291403829
-52 55 56 0.0539297292184645 0.0539297292184645
-53 56 57 0.108686747732496 0.108686747732496
-54 57 58 0.187258749990905 0.187258749990905
-56 59 60 1.21682866156064 1.21682866156064
-58 62 65 0.111732852527499 0.111732852527499
-60 66 67 0.0462182288009238 0.0462182288009238
-61 67 68 0.0059633062869109 0.0059633062869109
-63 69 70 0.0080040379689871 0.0080040379689871
-65 71 72 0.00371377887510826 0.00371377887510826
-66 72 73 0.0481593874311522 0.0481593874311522
-67 73 74 0.0476872742951146 0.0476872742951146
-68 74 75 0.050981067010882 0.050981067010882
-69 75 76 0.047311096476864 0.047311096476864
-70 76 77 0.00343925081784597 0.00343925081784597
-71 77 78 0.0504851331557092 0.0504851331557092
-72 78 79 0.0447329738384301 0.0447329738384301
-73 79 80 0.00573274424924571 0.00573274424924571
-74 80 81 0.048934333458383 0.048934333458383
-75 81 82 0.0451562090400863 0.0451562090400863
-76 82 83 0.0525053441886158 0.0525053441886158
-77 83 84 0.0468507536792171 0.0468507536792171
-79 85 86 0.0489620579654281 0.0489620579654281
-80 86 87 0.056293962476598 0.056293962476598
-81 87 88 0.0565505675369976 0.0565505675369976
-82 88 89 0.049261447484153 0.049261447484153
-83 89 90 0.0461992376398338 0.0461992376398338
-84 90 91 0.0452410545911285 0.0452410545911285
-85 91 92 0.040125194779582 0.040125194779582
-86 92 93 0.0417705541366205 0.0417705541366205
-87 93 94 0.0307746903425865 0.0307746903425865
-88 94 95 0.0484715360122363 0.0484715360122363
-90 58 96 0.0988139178735054 0.0988139178735054
-91 96 97 0.101340345409915 0.101340345409915
-92 97 98 0.0883916436599661 0.0883916436599661
-93 98 99 0.0102766637725455 0.0102766637725455
-94 99 100 0.0815080239205417 0.0815080239205417
-95 100 101 0.0191432455952872 0.0191432455952872
-99 104 105 0.149790406602899 0.149790406602899
-100 106 107 0.104888043119077 0.104888043119077
-101 107 108 0.276057285299863 0.276057285299863
-103 109 110 0.318041485575751 0.318041485575751
-105 111 112 0.0487653491195207 0.0487653491195207
-106 113 114 0.160343090933149 0.160343090933149
-107 114 115 0.208121584183608 0.208121584183608
-111 118 119 0.137350395143796 0.137350395143796
-113 120 121 0.356240759753107 0.356240759753107
-114 121 122 0.149871853701347 0.149871853701347
-115 122 123 0.148228608040365 0.148228608040365
-116 123 124 0.294126045752515 0.294126045752515
-118 125 126 0.131313615022207 0.131313615022207
-119 126 127 0.263795049720844 0.263795049720844
-123 130 131 0.221071288024568 0.221071288024568
-125 132 133 0.0549684068983719 0.0549684068983719
-126 133 135 0.0478699749630446 0.0478699749630446
-127 135 136 0.130706329520293 0.130706329520293
-128 136 137 0.0495130025200929 0.0495130025200929
-129 137 138 0.0194653537975714 0.0194653537975714
-130 138 139 0.0302495949579548 0.0302495949579548
-131 139 140 0.097138516429268 0.097138516429268
-133 141 142 0.0984160429772276 0.0984160429772276
-1414 1439 1440 0.0969799596597411 0.0969799596597411
-135 143 144 0.094779584184767 0.094779584184767
-136 144 145 0.102947980955417 0.102947980955417
-137 145 146 0.0998791210708115 0.0998791210708115
-138 146 147 0.10354963170018 0.10354963170018
-139 147 148 0.0970503169891706 0.0970503169891706
-141 149 150 0.0462633170535789 0.0462633170535789
-142 150 151 0.0859494466376985 0.0859494466376985
-143 151 152 0.084056042435147 0.084056042435147
-144 152 131 0.0865811985903579 0.0865811985903579
-145 131 155 0.0846809008371401 0.0846809008371401
-146 155 156 0.0860732350550831 0.0860732350550831
-147 156 157 0.0810260254286054 0.0810260254286054
-148 157 158 0.0821650587696609 0.0821650587696609
-149 158 159 0.0810216994355951 0.0810216994355951
-150 159 160 0.0856058417834562 0.0856058417834562
-151 160 161 0.0815928873404902 0.0815928873404902
-152 161 162 0.00737779613210769 0.00737779613210769
-154 163 164 0.00763240627009494 0.00763240627009494
-155 164 165 0.0713522613021865 0.0713522613021865
-156 165 166 0.00987473687183569 0.00987473687183569
-157 166 167 0.0668981585963986 0.0668981585963986
-158 167 168 0.0113627652096004 0.0113627652096004
-159 168 169 0.0796520415458163 0.0796520415458163
-160 169 170 0.0789939822174276 0.0789939822174276
-161 170 171 0.0216393201096419 0.0216393201096419
-162 171 172 0.05739626274334 0.05739626274334
-163 172 173 0.0799414498698892 0.0799414498698892
-164 173 174 0.161327077814812 0.161327077814812
-165 174 175 0.292992058630926 0.292992058630926
-166 175 176 0.108231632340063 0.108231632340063
-167 176 177 0.106370208061557 0.106370208061557
-168 177 178 0.0920329418240447 0.0920329418240447
-169 178 179 0.199657740223053 0.199657740223053
-170 179 180 0.100614906430247 0.100614906430247
-1461 1483 1484 0.0976853528091841 0.0976853528091841
-171 180 181 0.0991515808605787 0.0991515808605787
-172 181 182 0.101348037813126 0.101348037813126
-175 184 185 0.0991513776470571 0.0991513776470571
-178 187 188 0.0984378662868895 0.0984378662868895
-179 188 189 0.709590130188447 0.709590130188447
-180 190 191 0.100578501060841 0.100578501060841
-181 191 192 0.0991218871214513 0.0991218871214513
-182 192 193 0.20342936542853 0.20342936542853
-183 193 194 0.207080695389682 0.207080695389682
-184 194 195 0.202642969626672 0.202642969626672
-185 195 196 0.201913108682536 0.201913108682536
-186 196 197 0.201920207523846 0.201920207523846
-187 197 198 0.201206377797867 0.201206377797867
-188 198 199 0.199728327239083 0.199728327239083
-189 199 200 0.179903776297828 0.179903776297828
-190 200 201 0.00513723410606708 0.00513723410606708
-191 201 202 0.207079558909688 0.207079558909688
-194 169 204 0.256940343045097 0.256940343045097
-195 204 205 0.14761309930181 0.14761309930181
-384 386 387 0.312847187378026 0.312847187378026
-197 208 209 0.0482198776992404 0.0482198776992404
-198 209 210 1.36238336075367 1.36238336075367
-199 211 212 0.0762056360151952 0.0762056360151952
-210 221 222 0.10839564681744 0.10839564681744
-212 223 224 0.197685755221764 0.197685755221764
-213 224 225 0.136500664002185 0.136500664002185
-215 226 227 0.0378358956085511 0.0378358956085511
-217 228 229 0.0700057652168164 0.0700057652168164
-218 229 230 0.156709235598665 0.156709235598665
-220 231 232 0.0710636642555904 0.0710636642555904
-223 234 235 0.0652725377045483 0.0652725377045483
-227 237 238 0.33099974682308 0.33099974682308
-19951 4950 4670 0.10032168356836 0.10032168356836
-229 239 240 0.145321847286165 0.145321847286165
-230 240 241 0.0697724132050665 0.0697724132050665
-231 241 242 0.0623380559401012 0.0623380559401012
-232 242 243 0.121807717540091 0.121807717540091
-233 243 244 0.123936016070967 0.123936016070967
-234 244 245 0.0423914167747626 0.0423914167747626
-235 245 30 0.0421885133223055 0.0421885133223055
-238 134 246 0.0735610173824186 0.0735610173824186
-246 253 254 0.386604280856974 0.386604280856974
-261 271 272 0.0791195509987444 0.0791195509987444
-262 272 273 0.0178978198366689 0.0178978198366689
-263 273 274 0.0364878269996901 0.0364878269996901
-264 274 275 0.130636800507014 0.130636800507014
-265 275 276 0.0381201943550558 0.0381201943550558
-272 282 283 0.097546663905458 0.097546663905458
-556 66 551 0.00841985913797999 0.00841985913797999
-557 551 552 0.04510313602044 0.04510313602044
-559 553 554 0.116858726253731 0.116858726253731
-562 249 556 0.0347143242166075 0.0347143242166075
-563 557 250 0.0320475892789012 0.0320475892789012
-581 573 574 3.62449911588374 3.62449911588374
-582 495 575 0.042579905853808 0.042579905853808
-583 575 576 0.0263063929759334 0.0263063929759334
-585 577 311 0.0472092453507094 0.0472092453507094
-587 578 579 0.310605662522472 0.310605662522472
-589 580 206 0.0784574482758401 0.0784574482758401
-591 581 582 0.323379230044806 0.323379230044806
-593 583 584 0.18304036244052 0.18304036244052
-595 585 586 0.0719402278196197 0.0719402278196197
-597 587 588 0.0168822192889414 0.0168822192889414
-599 589 590 0.0668977161070656 0.0668977161070656
-601 592 593 0.00991684169352972 0.00991684169352972
-606 597 598 0.0427315746706827 0.0427315746706827
-610 601 602 0.0635315500234909 0.0635315500234909
-611 602 603 0.0528935910157463 0.0528935910157463
-16699 9993 9994 0.012991856325609 0.012991856325609
-612 603 604 0.0535739683641864 0.0535739683641864
-615 606 307 0.0053241575287587 0.0053241575287587
-616 307 607 0.210415758379136 0.210415758379136
-618 608 609 0.0943257357645838 0.0943257357645838
-620 610 611 0.12631191015444 0.12631191015444
-621 611 612 0.121362330065702 0.121362330065702
-11699 1033 1034 0.0933842207119007 0.0933842207119007
-622 612 613 0.120087101438352 0.120087101438352
-623 613 614 0.109496386514743 0.109496386514743
-625 615 616 0.099485158811405 0.099485158811405
-626 616 617 0.0380723765849069 0.0380723765849069
-627 617 618 0.0166082915806853 0.0166082915806853
-629 619 620 0.0454138336035488 0.0454138336035488
-630 620 621 0.0942731398582661 0.0942731398582661
-631 621 622 0.00735436876666859 0.00735436876666859
-632 622 623 0.102647301082546 0.102647301082546
-633 623 544 0.0305138174261522 0.0305138174261522
-636 625 626 0.0461061908767262 0.0461061908767262
-637 626 627 0.0495093856599813 0.0495093856599813
-639 628 629 0.00822721040716169 0.00822721040716169
-640 629 630 0.102896638771385 0.102896638771385
-641 630 631 0.106879933016847 0.106879933016847
-642 631 632 0.103715813554019 0.103715813554019
-643 632 633 0.10692744992309 0.10692744992309
-644 633 634 0.103895780437174 0.103895780437174
-645 634 635 0.10514306949893 0.10514306949893
-647 636 637 0.00886536795801057 0.00886536795801057
-648 637 638 0.204097990393348 0.204097990393348
-649 638 639 0.00993994545767469 0.00993994545767469
-651 640 641 0.322116221139114 0.322116221139114
-653 643 644 0.14058289547664 0.14058289547664
-654 644 645 0.143886814663415 0.143886814663415
-657 647 648 0.1449055455771 0.1449055455771
-660 650 651 0.0986374455510098 0.0986374455510098
-661 651 652 0.109870142544629 0.109870142544629
-662 652 653 0.107278100090415 0.107278100090415
-663 653 654 0.105274765421146 0.105274765421146
-664 654 655 0.107321673078917 0.107321673078917
-665 655 659 0.103426909396494 0.103426909396494
-666 659 660 0.0476206970204551 0.0476206970204551
-667 660 661 0.0487580750629072 0.0487580750629072
-668 661 662 0.103115405190933 0.103115405190933
-669 662 663 0.118337011744519 0.118337011744519
-670 663 664 0.118107974454135 0.118107974454135
-671 664 665 0.223948343500364 0.223948343500364
-672 665 666 0.106040631048838 0.106040631048838
-673 666 667 0.0256000736542961 0.0256000736542961
-674 667 668 0.0803036973488277 0.0803036973488277
-675 668 669 0.107519240980512 0.107519240980512
-1662 1688 1689 0.0492594246995293 0.0492594246995293
-677 670 671 0.106757477563009 0.106757477563009
-678 671 672 0.103159385358598 0.103159385358598
-679 672 673 0.111733647900791 0.111733647900791
-680 673 674 0.10480806031483 0.10480806031483
-681 674 675 0.0524357665703955 0.0524357665703955
-682 675 676 0.0522607419390769 0.0522607419390769
-683 676 677 0.0516311575112871 0.0516311575112871
-684 677 678 0.0529566114294976 0.0529566114294976
-685 678 679 0.0524070698016137 0.0524070698016137
-686 679 680 0.187479766906081 0.187479766906081
-690 683 684 0.0954023275162926 0.0954023275162926
-691 684 685 0.100472575096637 0.100472575096637
-692 685 686 0.0954830683114717 0.0954830683114717
-693 686 687 0.0981912656165647 0.0981912656165647
-694 687 688 0.0529127579061837 0.0529127579061837
-695 688 689 0.097652475318391 0.097652475318391
-696 689 690 0.0954475604442949 0.0954475604442949
-697 690 691 1.04422795392214 1.04422795392214
-698 692 693 0.101491505067343 0.101491505067343
-700 694 695 0.0992328230839297 0.0992328230839297
-701 695 696 0.102484361376735 0.102484361376735
-703 697 698 0.0986965284486813 0.0986965284486813
-704 698 699 0.0994466333494717 0.0994466333494717
-705 699 700 0.0997814367951755 0.0997814367951755
-706 700 702 0.0968138925983087 0.0968138925983087
-707 702 703 0.100377700728806 0.100377700728806
-708 703 704 0.0945219805489684 0.0945219805489684
-709 704 705 0.101319162842739 0.101319162842739
-711 706 707 0.0929527445510612 0.0929527445510612
-712 707 708 0.132514897770158 0.132514897770158
-713 708 709 0.136169309583257 0.136169309583257
-714 709 710 0.133600704636896 0.133600704636896
-715 710 711 0.131877184107974 0.131877184107974
-716 711 712 0.137129048962243 0.137129048962243
-717 712 714 0.139625593223683 0.139625593223683
-718 714 715 0.140147388874583 0.140147388874583
-720 716 717 0.139181895573122 0.139181895573122
-721 717 718 0.136478657719685 0.136478657719685
-722 718 719 0.0608836584293049 0.0608836584293049
-723 719 720 0.0543052596791692 0.0543052596791692
-724 720 721 0.402215107963206 0.402215107963206
-726 722 723 0.109800761131151 0.109800761131151
-728 724 725 0.0404933936313706 0.0404933936313706
-729 725 726 0.0429068637575149 0.0429068637575149
-730 726 54 0.117488559492451 0.117488559492451
-732 728 729 0.201386679597364 0.201386679597364
-733 729 730 0.204011830144653 0.204011830144653
-734 730 731 0.199761692314281 0.199761692314281
-17425 10099 10083 0.0366406616748247 0.0366406616748247
-735 731 732 0.201563131430502 0.201563131430502
-736 732 733 0.402282143818784 0.402282143818784
-737 734 735 0.0902645098486118 0.0902645098486118
-738 735 736 0.0928507623233121 0.0928507623233121
-739 736 737 0.0900332912586976 0.0900332912586976
-740 737 738 0.0739532182409675 0.0739532182409675
-741 738 739 0.100409435325613 0.100409435325613
-742 739 740 0.0918337393875257 0.0918337393875257
-743 740 741 0.0605135925040139 0.0605135925040139
-744 741 744 0.09764928319827 0.09764928319827
-745 744 745 0.100176801141236 0.100176801141236
-746 745 746 0.0948931710062943 0.0948931710062943
-747 746 747 0.0932950961705344 0.0932950961705344
-748 747 748 0.0948942633213168 0.0948942633213168
-749 748 749 0.0880271421463829 0.0880271421463829
-750 749 750 0.101773658707536 0.101773658707536
-751 750 751 0.094781491782375 0.094781491782375
-752 751 752 0.0909312964030863 0.0909312964030863
-754 753 754 0.0476837940219257 0.0476837940219257
-755 754 755 0.0476837940207114 0.0476837940207114
-756 755 756 0.100492444483886 0.100492444483886
-760 760 761 0.278292588595779 0.278292588595779
-18241 8960 6768 0.145513824807152 0.145513824807152
-762 762 763 0.102174293003021 0.102174293003021
-763 763 764 0.0992571756698332 0.0992571756698332
-764 764 765 0.100622536912342 0.100622536912342
-766 766 767 0.101850111631528 0.101850111631528
-767 767 768 0.0961954013729948 0.0961954013729948
-768 768 769 0.207085640087389 0.207085640087389
-769 769 770 0.1068825400281 0.1068825400281
-770 770 771 0.105967528573409 0.105967528573409
-771 771 772 0.107278769323728 0.107278769323728
-772 772 199 0.0969401274978018 0.0969401274978018
-773 199 776 0.101328977128045 0.101328977128045
-774 776 777 0.0984004881984158 0.0984004881984158
-775 777 778 0.0991276696889056 0.0991276696889056
-779 784 785 0.101305408476756 0.101305408476756
-780 785 786 0.0976265458519536 0.0976265458519536
-781 786 787 0.0966903245975086 0.0966903245975086
-783 788 789 0.0146697046803596 0.0146697046803596
-784 789 790 0.0984239882007814 0.0984239882007814
-785 790 791 0.0942419953953979 0.0942419953953979
-786 791 792 0.0942417343682122 0.0942417343682122
-787 792 793 0.0942331855902031 0.0942331855902031
-789 794 795 0.0937138545964453 0.0937138545964453
-790 795 796 0.0956046195795482 0.0956046195795482
-791 796 797 0.0946549122760597 0.0946549122760597
-792 797 798 0.100527766007763 0.100527766007763
-793 798 799 0.10316918665 0.10316918665
-795 800 801 0.103459881633314 0.103459881633314
-796 801 802 0.0997925526863961 0.0997925526863961
-797 802 803 0.0998006432146063 0.0998006432146063
-854 804 805 0.1238606801811 0.1238606801811
-799 807 808 0.10163704947704 0.10163704947704
-800 808 812 0.0515064726572222 0.0515064726572222
-801 812 813 0.0494547954602067 0.0494547954602067
-802 813 814 0.051447981297694 0.051447981297694
-803 814 815 0.0525679212147471 0.0525679212147471
-804 815 816 0.0487973630951461 0.0487973630951461
-805 816 817 0.0522598325196538 0.0522598325196538
-806 817 818 0.103406751654374 0.103406751654374
-807 818 819 0.10785615815132 0.10785615815132
-808 819 820 0.10473605712406 0.10473605712406
-809 820 821 0.112264494558786 0.112264494558786
-810 821 822 0.0974128787334051 0.0974128787334051
-811 822 823 0.107993299539667 0.107993299539667
-812 823 824 0.0548178827467902 0.0548178827467902
-17428 10106 10103 0.0082057240713584 0.0082057240713584
-1819 1835 1836 0.0691383900190408 0.0691383900190408
-813 824 825 0.0508588332180354 0.0508588332180354
-816 827 828 0.0512039318870449 0.0512039318870449
-817 828 829 0.0518718595198435 0.0518718595198435
-818 829 830 0.106833526059922 0.106833526059922
-820 831 832 0.385745696022263 0.385745696022263
-821 832 833 0.404856481972801 0.404856481972801
-823 834 835 0.105948732119107 0.105948732119107
-824 835 838 0.0910625591495108 0.0910625591495108
-826 839 840 0.0919963536570051 0.0919963536570051
-828 841 842 0.174755253051921 0.174755253051921
-829 842 843 0.178568082023164 0.178568082023164
-830 843 844 0.17297498203528 0.17297498203528
-831 844 845 0.173265495891133 0.173265495891133
-832 845 846 0.177949551875208 0.177949551875208
-833 846 847 0.164704515205255 0.164704515205255
-835 848 849 0.140807407128784 0.140807407128784
-839 852 853 0.167627273627897 0.167627273627897
-840 853 854 0.0221861617364752 0.0221861617364752
-841 854 855 0.199351380476648 0.199351380476648
-842 855 856 0.154506611729302 0.154506611729302
-843 856 857 0.177121299660486 0.177121299660486
-844 857 858 0.173233506037634 0.173233506037634
-845 858 859 0.161447290254498 0.161447290254498
-846 859 860 0.184417991926907 0.184417991926907
-847 860 861 0.174097913655798 0.174097913655798
-848 861 862 0.200651350067359 0.200651350067359
-851 864 865 0.136205566327931 0.136205566327931
-852 865 866 0.134098020570816 0.134098020570816
-853 866 804 0.130206342500308 0.130206342500308
-855 805 869 0.151636521465058 0.151636521465058
-856 869 870 0.0565102957854785 0.0565102957854785
-859 872 873 0.106081890543097 0.106081890543097
-860 873 874 0.104885275538693 0.104885275538693
-861 874 875 0.105346104071406 0.105346104071406
-862 875 876 0.105115636520032 0.105115636520032
-16596 6712 8570 0.146117658845452 0.146117658845452
-864 877 878 0.106492224339564 0.106492224339564
-865 878 879 0.105226257982301 0.105226257982301
-866 879 880 0.109300044149485 0.109300044149485
-867 880 881 0.105305755069531 0.105305755069531
-868 881 882 0.0524982326673818 0.0524982326673818
-869 882 883 0.0527289587191423 0.0527289587191423
-870 883 884 0.104777165086199 0.104777165086199
-871 884 885 0.101110616467656 0.101110616467656
-873 886 887 0.105175290472485 0.105175290472485
-874 887 888 0.105460060240618 0.105460060240618
-875 888 889 0.104542724277831 0.104542724277831
-878 891 892 0.107871242081588 0.107871242081588
-879 892 893 0.100327397599291 0.100327397599291
-880 893 894 0.10715921423401 0.10715921423401
-11694 895 896 0.0160104862378167 0.0160104862378167
-881 894 897 0.103236099875311 0.103236099875311
-882 897 898 0.106539225146671 0.106539225146671
-16754 10009 7565 0.0493392725986542 0.0493392725986542
-20639 10032 10878 0.0503841615701827 0.0503841615701827
-885 864 900 0.0968355268957622 0.0968355268957622
-886 900 901 0.0921857962021889 0.0921857962021889
-887 901 902 0.0154453872411826 0.0154453872411826
-888 902 903 0.099023611112339 0.099023611112339
-889 903 904 0.106658816969038 0.106658816969038
-890 904 905 0.102850064051981 0.102850064051981
-891 905 906 0.106374102165022 0.106374102165022
-893 907 908 0.107980942566683 0.107980942566683
-897 911 912 0.0137000260099873 0.0137000260099873
-900 914 915 0.266296417735211 0.266296417735211
-902 916 917 0.109365780913081 0.109365780913081
-903 917 918 0.110688879788924 0.110688879788924
-904 918 919 0.0528048087506356 0.0528048087506356
-905 919 920 0.0548227612983216 0.0548227612983216
-1909 1921 1922 0.0521063364540888 0.0521063364540888
-12333 8655 8656 0.00566894958463717 0.00566894958463717
-906 920 921 0.0600921295133805 0.0600921295133805
-907 921 922 0.0524145297386554 0.0524145297386554
-908 922 923 0.0533449751273277 0.0533449751273277
-909 923 924 0.0522830317618348 0.0522830317618348
-910 924 925 0.0531296104749593 0.0531296104749593
-911 925 926 0.0494870453453698 0.0494870453453698
-912 926 927 0.0490530439973252 0.0490530439973252
-916 930 931 0.0484862367563559 0.0484862367563559
-917 931 932 0.0491192175023229 0.0491192175023229
-918 932 933 0.0512499454427793 0.0512499454427793
-935 950 951 0.0925005138771614 0.0925005138771614
-936 951 952 0.09155937925052 0.09155937925052
-937 952 953 0.096647434304121 0.096647434304121
-938 953 954 0.0946813321937467 0.0946813321937467
-939 954 955 0.0465376592907314 0.0465376592907314
-941 956 957 0.0470827842175089 0.0470827842175089
-942 957 958 0.0477097696809632 0.0477097696809632
-943 958 959 0.0469673192776546 0.0469673192776546
-944 959 857 0.0470271779665272 0.0470271779665272
-945 857 452 0.0433482724753884 0.0433482724753884
-946 452 960 0.0461959621064724 0.0461959621064724
-947 960 456 0.0448744265859584 0.0448744265859584
-948 456 961 0.0477309298676521 0.0477309298676521
-950 962 963 0.203057783136815 0.203057783136815
-951 963 964 0.111884367881333 0.111884367881333
-952 964 965 0.176567620505235 0.176567620505235
-953 965 966 0.178378901323504 0.178378901323504
-958 970 971 0.205957142551392 0.205957142551392
-960 972 973 0.204078625402165 0.204078625402165
-961 973 282 0.115147222371539 0.115147222371539
-964 976 977 0.0518319225146996 0.0518319225146996
-965 977 978 0.124228855322375 0.124228855322375
-966 978 979 0.172234101769625 0.172234101769625
-967 979 980 0.191895457064314 0.191895457064314
-968 980 981 0.160844607226305 0.160844607226305
-969 981 936 0.183612712644296 0.183612712644296
-18742 7651 6216 0.274731695307389 0.274731695307389
-970 936 982 0.178134725901618 0.178134725901618
-972 983 984 0.199061323006722 0.199061323006722
-973 984 985 0.188587247900735 0.188587247900735
-974 985 986 0.0433580404548831 0.0433580404548831
-975 986 987 0.125051012370851 0.125051012370851
-977 988 989 0.141681092806979 0.141681092806979
-978 989 990 0.0574887447164737 0.0574887447164737
-979 990 991 0.201644088462744 0.201644088462744
-981 992 993 0.0142751187411164 0.0142751187411164
-983 994 995 0.198087310718341 0.198087310718341
-984 995 996 0.021294324874815 0.021294324874815
-986 997 998 0.477759831198138 0.477759831198138
-988 999 1000 0.107359092710075 0.107359092710075
-989 1000 1001 0.213427542201395 0.213427542201395
-990 1001 1002 0.0204216124756694 0.0204216124756694
-991 1002 1003 0.169295945736254 0.169295945736254
-992 1003 1004 0.202119044170343 0.202119044170343
-993 1004 1007 0.405136142942317 0.405136142942317
-994 1008 753 0.128100004965855 0.128100004965855
-996 1009 277 0.197304277838347 0.197304277838347
-998 1010 1011 0.168461631075683 0.168461631075683
-999 1011 1012 0.0217275963794507 0.0217275963794507
-1000 1012 1013 0.199706135128057 0.199706135128057
-1001 1013 1014 0.154996233446664 0.154996233446664
-1002 1014 1015 0.0484476295387052 0.0484476295387052
-1005 1018 1019 0.198018950245581 0.198018950245581
-1006 1019 1020 0.173297369328456 0.173297369328456
-1007 1020 1021 0.177035115256862 0.177035115256862
-1008 1021 1022 0.17859043694682 0.17859043694682
-1009 1022 674 0.00356025053355106 0.00356025053355106
-1010 674 1023 0.00366943257948706 0.00366943257948706
-1011 1023 1024 0.17484373239475 0.17484373239475
-1012 1024 1025 0.173998681621435 0.173998681621435
-1015 1027 1028 0.0704684258530158 0.0704684258530158
-1017 1029 1030 0.0048505404615695 0.0048505404615695
-1018 1030 1031 0.00340295138148338 0.00340295138148338
-1019 1031 1035 0.134848566335067 0.134848566335067
-1020 1035 1036 0.137493615415566 0.137493615415566
-16764 9868 2745 0.0490633016235184 0.0490633016235184
-1021 1036 827 0.141821861187588 0.141821861187588
-1023 1037 1038 0.144096028267239 0.144096028267239
-1024 1038 1039 0.13873602575008 0.13873602575008
-1025 1039 1040 0.137557829611355 0.137557829611355
-1026 1040 1041 0.134490266221638 0.134490266221638
-1027 1041 1042 0.141541481862683 0.141541481862683
-1028 1042 1043 0.00492593525103261 0.00492593525103261
-1029 1043 1044 0.138593778312369 0.138593778312369
-1030 1044 1045 0.140603553737706 0.140603553737706
-1031 1045 881 0.137936273445967 0.137936273445967
-1032 881 1046 0.138493298016227 0.138493298016227
-1033 1046 1047 0.135001777755027 0.135001777755027
-1034 1047 1048 0.131055322767976 0.131055322767976
-1035 1048 1049 0.124939018757432 0.124939018757432
-1037 1050 1051 0.292899479856136 0.292899479856136
-1038 1051 1052 0.166422260927488 0.166422260927488
-1040 735 1053 0.129020329518136 0.129020329518136
-1042 1054 1055 0.104556386299221 0.104556386299221
-1044 1056 1057 0.0821976961903273 0.0821976961903273
-1046 1058 1059 0.198827335717405 0.198827335717405
-1048 1060 1061 0.168836903384636 0.168836903384636
-1050 1062 1063 0.404705159588638 0.404705159588638
-1051 1067 1068 0.132512985213334 0.132512985213334
-1052 1068 1069 0.13497040303733 0.13497040303733
-1053 1069 1070 0.132768776601327 0.132768776601327
-1056 1072 1073 0.0939030414376985 0.0939030414376985
-1058 1074 1075 0.180616569310233 0.180616569310233
-1059 1075 1076 0.0336398662027363 0.0336398662027363
-1060 1076 1077 0.0410609349522483 0.0410609349522483
-1061 1077 1078 0.0827433862317427 0.0827433862317427
-1062 1078 1079 0.0826887112506465 0.0826887112506465
-1064 1080 464 0.0761353371210495 0.0761353371210495
-1065 464 1081 0.349900041786437 0.349900041786437
-1066 1081 1082 0.00956876487693368 0.00956876487693368
-1068 1083 1084 0.207455473901342 0.207455473901342
-1069 1084 1085 0.20253048003379 0.20253048003379
-1070 1085 1086 0.20117520633799 0.20117520633799
-1071 1086 1087 0.200445374909098 0.200445374909098
-1073 1088 1089 0.193552555847569 0.193552555847569
-1074 1089 1090 0.201907921550129 0.201907921550129
-1075 1090 1091 0.409168814751628 0.409168814751628
-1078 1094 1095 0.176210660233647 0.176210660233647
-1082 1098 1099 0.214073333831546 0.214073333831546
-1083 1099 1100 0.273059176292595 0.273059176292595
-1085 1101 1102 0.177543118890406 0.177543118890406
-1086 1102 1103 0.205192174072119 0.205192174072119
-1089 1105 1106 0.177750162727048 0.177750162727048
-1090 1106 1107 0.0539560094135977 0.0539560094135977
-1091 1107 1108 0.122234944576301 0.122234944576301
-1092 1108 1109 0.177333676437683 0.177333676437683
-1093 1109 1110 0.180925459405873 0.180925459405873
-1095 1111 1112 0.128811671442731 0.128811671442731
-1096 1112 1113 0.134815073580703 0.134815073580703
-1097 1113 1114 0.136688571742098 0.136688571742098
-1098 1114 1115 0.101403665812315 0.101403665812315
-1099 1115 1116 0.102067679100378 0.102067679100378
-1102 1118 1119 0.204345080233058 0.204345080233058
-1103 1119 1120 0.199139333361331 0.199139333361331
-1104 1120 1121 0.0469911073941159 0.0469911073941159
-1105 1121 1122 0.0592169845475301 0.0592169845475301
-1106 1122 1123 0.0953718885827498 0.0953718885827498
-1107 1123 1124 0.0510557799357253 0.0510557799357253
-1108 1124 1125 0.150795725410384 0.150795725410384
-1109 1125 1126 0.203566805558282 0.203566805558282
-1111 1127 1128 0.0472430646130033 0.0472430646130033
-1112 1128 1129 0.205543981836037 0.205543981836037
-1114 1130 1131 0.164841461931526 0.164841461931526
-1115 1131 1132 0.171242319742711 0.171242319742711
-1116 1132 1133 0.15535130673221 0.15535130673221
-1117 1133 1134 0.155906924058663 0.155906924058663
-1118 1134 1135 0.158641971110509 0.158641971110509
-1120 1136 1137 0.202486056810199 0.202486056810199
-1124 1140 1141 0.106376038726262 0.106376038726262
-1125 1141 1142 0.11299023410348 0.11299023410348
-1127 1143 1144 0.105553895231553 0.105553895231553
-1128 1144 1145 0.104117784384988 0.104117784384988
-1129 1145 1146 0.103483298103444 0.103483298103444
-1131 1147 1148 0.20922373460901 0.20922373460901
-1132 1148 1149 0.150393643985841 0.150393643985841
-1133 1149 1150 0.0550246362758013 0.0550246362758013
-1134 1150 1151 0.102697719375893 0.102697719375893
-1135 1151 1152 0.0983530643806034 0.0983530643806034
-1136 1152 1153 0.0500465548413358 0.0500465548413358
-1137 1153 1154 0.957298194837815 0.957298194837815
-1138 1155 1156 0.108691319059022 0.108691319059022
-1139 1156 1157 0.102249102579738 0.102249102579738
-1140 1157 1160 0.108168549451273 0.108168549451273
-1141 1160 1161 0.101829092464478 0.101829092464478
-1144 1162 1163 0.0512778300683452 0.0512778300683452
-1146 1164 1165 0.100040433804019 0.100040433804019
-1147 1165 1166 0.107579273983848 0.107579273983848
-1148 1166 1167 0.103452121653836 0.103452121653836
-1149 1167 1168 0.102717798897395 0.102717798897395
-1150 1168 1169 0.106376023896376 0.106376023896376
-1151 1169 1170 0.105583034841699 0.105583034841699
-1152 1170 1171 0.105884448878202 0.105884448878202
-1153 1171 1172 0.107984392656028 0.107984392656028
-1154 1172 1173 0.100211807661524 0.100211807661524
-1156 1174 1175 0.0651406407561477 0.0651406407561477
-1157 1176 1177 0.0916420940843904 0.0916420940843904
-1158 1177 1178 0.317057086238115 0.317057086238115
-1159 1178 1179 0.0403904373250439 0.0403904373250439
-1160 1179 1180 0.087664479851631 0.087664479851631
-1163 555 558 0.0996109464859662 0.0996109464859662
-1165 1182 1183 0.200712633020301 0.200712633020301
-1166 1183 141 0.201303158931495 0.201303158931495
-1167 141 1184 0.160264959796536 0.160264959796536
-1169 1185 1186 0.0892826433471673 0.0892826433471673
-16608 9325 9944 0.146983175121654 0.146983175121654
-1171 1187 1011 0.0980488049438762 0.0980488049438762
-1172 1011 1188 0.100351187096818 0.100351187096818
-1173 1188 1189 0.0991689160182861 0.0991689160182861
-1174 1189 1190 0.0985624561842153 0.0985624561842153
-1175 1190 1191 0.0992629404802966 0.0992629404802966
-1177 1192 1193 0.0982024972051538 0.0982024972051538
-1178 1193 1194 0.0979660824445765 0.0979660824445765
-1179 1194 1195 0.0324477724054976 0.0324477724054976
-1180 1195 1196 0.0675268282620706 0.0675268282620706
-1182 1197 1198 0.0679368973278076 0.0679368973278076
-1184 1199 1200 0.0686815112230977 0.0686815112230977
-1185 1200 1201 0.0309923494566171 0.0309923494566171
-1186 1201 1202 0.0899174664521967 0.0899174664521967
-1187 1202 1203 0.0945518763756908 0.0945518763756908
-1188 1203 1204 0.0933113340782308 0.0933113340782308
-1189 1204 1205 0.09509225728821 0.09509225728821
-1190 1205 1206 0.0947055520559319 0.0947055520559319
-1191 1206 1207 0.0954663818870976 0.0954663818870976
-1192 1207 1208 0.0457748420522195 0.0457748420522195
-1193 1208 853 0.0452361278424885 0.0452361278424885
-1194 853 1209 0.0465328064656566 0.0465328064656566
-1195 1209 1210 0.0443349306457526 0.0443349306457526
-1196 1210 1211 0.0926255737985973 0.0926255737985973
-1200 1214 1215 0.199187167786165 0.199187167786165
-1201 1215 1216 0.200954541481784 0.200954541481784
-1202 1216 1217 0.405030982441888 0.405030982441888
-1203 1218 1219 0.0492032479248998 0.0492032479248998
-1204 1219 1220 0.0957003230509211 0.0957003230509211
-1206 1221 1222 0.0745042299709739 0.0745042299709739
-1207 1222 1223 0.102728552500243 0.102728552500243
-1208 1223 1224 0.112933078893132 0.112933078893132
-1210 1225 1226 0.132646861758746 0.132646861758746
-1212 1227 1228 0.133737749967366 0.133737749967366
-1213 1228 1229 0.138340301298334 0.138340301298334
-1214 1229 1230 0.133937469551528 0.133937469551528
-1215 1230 1231 0.133215122537399 0.133215122537399
-1216 1231 1236 0.135593895539884 0.135593895539884
-1217 1236 1237 0.134329596288595 0.134329596288595
-1218 1237 1238 0.133838756927755 0.133838756927755
-1220 1239 1240 0.201119608536246 0.201119608536246
-1222 1241 1242 0.0687159203588902 0.0687159203588902
-1223 1242 1243 0.133400908392016 0.133400908392016
-1224 1243 1247 0.135380581131659 0.135380581131659
-1225 1247 1248 0.134002229768192 0.134002229768192
-1226 1248 1249 0.133545106900313 0.133545106900313
-1227 1249 1250 0.135368900396577 0.135368900396577
-1228 1250 1251 0.135024432224222 0.135024432224222
-1229 1251 1252 0.104469760585228 0.104469760585228
-1230 1252 1253 0.0306570001135196 0.0306570001135196
-1231 1253 1254 0.0720522950545032 0.0720522950545032
-1232 1254 1255 0.0658986376594475 0.0658986376594475
-1233 1255 1256 0.0399746208950617 0.0399746208950617
-1234 1256 1257 0.0944491578366609 0.0944491578366609
-1235 1257 1258 0.132766928353997 0.132766928353997
-1236 1258 1259 0.135424431672451 0.135424431672451
-1237 1259 1260 0.140672385455392 0.140672385455392
-1238 1260 1261 0.134975501941172 0.134975501941172
-1239 1261 1262 0.0645486549169547 0.0645486549169547
-1240 1262 1263 0.0682069680036474 0.0682069680036474
-1241 1263 1264 0.132661334326961 0.132661334326961
-1242 1264 1265 0.198750077150319 0.198750077150319
-1243 1265 1266 0.153240793837705 0.153240793837705
-1245 273 1267 0.0675767060379672 0.0675767060379672
-1247 1268 1269 0.0991648269688332 0.0991648269688332
-1248 1269 1270 0.105715575753422 0.105715575753422
-1249 1270 1271 0.096909170039208 0.096909170039208
-1251 1272 1273 0.132822339876578 0.132822339876578
-1252 1273 1274 0.108602805332053 0.108602805332053
-1253 1274 1275 0.0271637528935803 0.0271637528935803
-1254 1275 1276 0.112230208152067 0.112230208152067
-1255 1276 1277 0.0176649567962355 0.0176649567962355
-1256 1277 1278 0.135399208639876 0.135399208639876
-1257 1278 1279 0.134958357098824 0.134958357098824
-1258 1279 1280 0.13471438954866 0.13471438954866
-1259 1280 1281 0.0527317447874755 0.0527317447874755
-1260 1281 1282 0.0822068643990868 0.0822068643990868
-1262 24 1283 0.0541075654220215 0.0541075654220215
-1263 1283 1284 0.0277584904979192 0.0277584904979192
-1264 1284 1285 0.0119510600074318 0.0119510600074318
-1265 1285 1286 0.00765101800505865 0.00765101800505865
-1267 1287 1288 0.0102422085479252 0.0102422085479252
-1269 1289 1290 0.18749026453307 0.18749026453307
-1270 1290 1291 0.200784792674354 0.200784792674354
-1271 1291 1292 0.406662337861329 0.406662337861329
-1272 1293 1028 0.104130177494266 0.104130177494266
-1274 1294 1295 0.209580478517529 0.209580478517529
-1275 1295 1296 0.202179673681852 0.202179673681852
-1276 1296 1297 0.102644670381459 0.102644670381459
-1277 1297 1298 0.08553722531747 0.08553722531747
-1278 1299 1300 0.10911250090994 0.10911250090994
-1279 1300 1305 0.103516561820708 0.103516561820708
-1280 1305 1306 0.107188605435255 0.107188605435255
-1282 1307 1308 0.104254785791266 0.104254785791266
-1283 1308 1309 0.104981820314566 0.104981820314566
-1284 1309 1310 0.0539236153779667 0.0539236153779667
-1285 1310 1311 0.0525379554780919 0.0525379554780919
-1287 1312 1313 0.0516652738700608 0.0516652738700608
-1288 1313 1314 0.0506813468547144 0.0506813468547144
-1289 1314 1315 0.0508976456987324 0.0508976456987324
-1290 1315 1316 0.0521616744394787 0.0521616744394787
-1291 1316 1317 0.0506396099336441 0.0506396099336441
-1292 1317 1318 0.0516214270666003 0.0516214270666003
-1293 1318 1319 0.0518951446578895 0.0518951446578895
-1294 1319 1320 0.0518013233234396 0.0518013233234396
-1295 1320 1321 0.0498510970504219 0.0498510970504219
-1296 1321 1322 0.0511186989957182 0.0511186989957182
-1297 1322 1323 0.0508331487974254 0.0508331487974254
-1300 1325 1326 0.08881123864976 0.08881123864976
-1304 499 1329 0.167484239247501 0.167484239247501
-1305 1329 1332 0.203905657642638 0.203905657642638
-1306 1332 1333 0.204847680679676 0.204847680679676
-1307 1333 1334 0.201123583387407 0.201123583387407
-1309 1335 1336 0.157474175144751 0.157474175144751
-1310 1336 1337 0.117575441930224 0.117575441930224
-1311 1337 1338 0.0942761529447682 0.0942761529447682
-1313 1339 1340 0.0991229934735866 0.0991229934735866
-1314 1340 193 0.100574656408132 0.100574656408132
-1315 193 1341 0.102057084030905 0.102057084030905
-1316 1341 1342 0.101342753238197 0.101342753238197
-1317 1342 1343 0.0983873083767276 0.0983873083767276
-1318 1343 1344 0.103799446896886 0.103799446896886
-1320 1345 1346 0.0125938712274396 0.0125938712274396
-1323 1348 1349 0.273909093656176 0.273909093656176
-1325 1350 1351 0.136546503712986 0.136546503712986
-1326 1351 1352 0.134960662965356 0.134960662965356
-1327 1352 1353 0.12926179848792 0.12926179848792
-1328 1353 1354 0.137757238088674 0.137757238088674
-1329 1354 1355 0.134312853283448 0.134312853283448
-1330 1355 1356 0.132780195397846 0.132780195397846
-1334 1359 1360 0.200708631878513 0.200708631878513
-1336 142 1364 0.213116678885437 0.213116678885437
-1338 1365 1366 0.152775417186349 0.152775417186349
-1339 1367 1368 0.213588518747439 0.213588518747439
-1341 1369 1370 0.0932290478454428 0.0932290478454428
-1342 1371 1372 0.0501807359890933 0.0501807359890933
-1343 1372 1373 0.0506488838331464 0.0506488838331464
-1344 1373 1374 0.0509778039678037 0.0509778039678037
-1345 1374 1375 0.0510804446988023 0.0510804446988023
-1346 1375 1376 0.0530938888935116 0.0530938888935116
-1347 1376 1377 0.0533676128248485 0.0533676128248485
-1348 1377 1378 0.0492215264037076 0.0492215264037076
-1349 1378 1379 0.0493909004241748 0.0493909004241748
-1350 1379 1380 0.102775081126436 0.102775081126436
-1351 1380 1381 0.100172308119327 0.100172308119327
-1353 1382 1383 0.0341877559991377 0.0341877559991377
-1354 1383 1384 0.104577694208817 0.104577694208817
-1356 1385 1386 0.193890579001187 0.193890579001187
-2459 714 2450 0.108569713532818 0.108569713532818
-1358 1387 1388 0.203368582544414 0.203368582544414
-1359 1388 1389 0.203745939128333 0.203745939128333
-1361 1390 1391 0.199208620541168 0.199208620541168
-1362 1391 1392 0.199941300123434 0.199941300123434
-1364 1393 1394 0.177657657089983 0.177657657089983
-1365 1394 1395 0.177656134299769 0.177656134299769
-1366 1395 1396 0.0721099099294465 0.0721099099294465
-1367 1396 1397 0.103333445330309 0.103333445330309
-1368 1397 1398 0.177111308895875 0.177111308895875
-1369 1398 1399 0.177390305757292 0.177390305757292
-1370 1399 1400 0.0617135848764214 0.0617135848764214
-1371 1400 1401 0.0203196347458361 0.0203196347458361
-1373 1402 1403 0.0235752242204257 0.0235752242204257
-1375 1404 1402 0.00627534757508794 0.00627534757508794
-1377 1405 1406 0.205561430653916 0.205561430653916
-1378 1406 1407 0.198211407371417 0.198211407371417
-1379 1407 1404 0.205478920022626 0.205478920022626
-1381 1408 1409 0.100293396704139 0.100293396704139
-2482 2015 1998 0.0374209544699414 0.0374209544699414
-1382 1409 1410 0.293581023203639 0.293581023203639
-1386 1413 1414 0.135399373352711 0.135399373352711
-1387 1414 1415 0.134222064866511 0.134222064866511
-1388 1415 1416 0.135554703950228 0.135554703950228
-1390 1417 1418 0.0459508709120374 0.0459508709120374
-1391 1418 1419 0.202303287973101 0.202303287973101
-1394 1421 1422 0.101428183167069 0.101428183167069
-1395 1422 1423 0.0971760324958247 0.0971760324958247
-1396 1423 1424 0.100465380366459 0.100465380366459
-1397 1424 1425 0.0503823697773718 0.0503823697773718
-1398 1425 1426 0.0484682644313395 0.0484682644313395
-1399 1426 1427 0.0493995225121813 0.0493995225121813
-1400 1427 1138 0.0500574902796296 0.0500574902796296
-1401 1138 1428 0.0487273610513856 0.0487273610513856
-1403 1429 1430 0.0510517494638005 0.0510517494638005
-1404 1430 1431 0.0485479238043371 0.0485479238043371
-1405 1431 1432 0.0499990939034271 0.0499990939034271
-1406 1432 1433 0.0540496336498359 0.0540496336498359
-1408 1434 1435 0.101502735016485 0.101502735016485
-1409 1435 1436 0.0975542961638382 0.0975542961638382
-1410 1436 1437 0.099750341261668 0.099750341261668
-1411 1437 1265 0.0977907961309881 0.0977907961309881
-1413 1438 1439 0.100436447451859 0.100436447451859
-1416 1441 1442 0.100952147732681 0.100952147732681
-1417 1442 1329 0.0966125375658313 0.0966125375658313
-1418 1329 1386 0.101098635736807 0.101098635736807
-1419 1386 1443 0.103303628365074 0.103303628365074
-1420 1443 1444 0.105351454494942 0.105351454494942
-1421 1444 1445 0.104823988220675 0.104823988220675
-1422 1445 1446 0.0939934684249721 0.0939934684249721
-1424 1447 1448 0.0986593061594928 0.0986593061594928
-1425 1448 1449 0.102799709683289 0.102799709683289
-1426 1449 1450 0.0947158385157811 0.0947158385157811
-1427 1450 1451 0.0999075147918272 0.0999075147918272
-1429 1452 784 0.0977509062908684 0.0977509062908684
-1431 1453 1454 0.0719801500300486 0.0719801500300486
-1432 1454 147 0.198407848383786 0.198407848383786
-1433 147 1455 0.0338525123105229 0.0338525123105229
-1435 151 1456 0.201963345264684 0.201963345264684
-1438 1458 1459 0.393387760227334 0.393387760227334
-1439 1460 1343 0.203476082408649 0.203476082408649
-1440 1343 1461 0.205811743637529 0.205811743637529
-1441 1461 1462 0.203884797606556 0.203884797606556
-1442 1462 1463 0.199707411933497 0.199707411933497
-1443 1463 1464 0.202654089186264 0.202654089186264
-1444 1464 1465 0.201184980777767 0.201184980777767
-1446 778 1466 0.187246918966658 0.187246918966658
-1447 1466 1467 0.197539000166948 0.197539000166948
-1448 1467 1468 0.208212504536917 0.208212504536917
-1450 1469 1470 0.186875447219802 0.186875447219802
-1451 173 1471 0.256211082856798 0.256211082856798
-1454 1473 1474 0.0115011236026218 0.0115011236026218
-1455 1474 1475 0.0782239536830869 0.0782239536830869
-1456 1475 1476 0.086773238144748 0.086773238144748
-1457 1476 1479 0.0924870142175924 0.0924870142175924
-1458 1479 1480 0.37958729242533 0.37958729242533
-1460 1482 1483 0.0482525610515095 0.0482525610515095
-1463 1183 1360 0.0998764831880159 0.0998764831880159
-1464 1360 1485 0.101348070124559 0.101348070124559
-1465 1485 1486 0.0984049068298888 0.0984049068298888
-1467 1487 1488 0.111519868825334 0.111519868825334
-1471 1454 1491 0.201276239535877 0.201276239535877
-1473 1492 1493 0.102671300709598 0.102671300709598
-1474 1493 1494 0.114201675013651 0.114201675013651
-1475 1494 1495 0.100620235623392 0.100620235623392
-1476 1495 1496 0.0991406161889474 0.0991406161889474
-1477 1496 1497 0.0998844924107287 0.0998844924107287
-1478 1497 1498 0.102075212599034 0.102075212599034
-1479 1498 1499 0.0984215743592215 0.0984215743592215
-1480 1499 1500 0.710275264674714 0.710275264674714
-1481 1501 1502 0.109574036549915 0.109574036549915
-1482 1502 1503 0.290817056726042 0.290817056726042
-1484 1504 1505 0.0925327391334129 0.0925327391334129
-1485 1505 1506 0.0984021297067109 0.0984021297067109
-1486 1506 1508 0.0976913946915281 0.0976913946915281
-1489 1509 1510 0.0972031962531711 0.0972031962531711
-1490 1510 1511 0.029446204772298 0.029446204772298
-1494 1514 1515 0.0918220075397064 0.0918220075397064
-1499 1518 1519 0.202094906389576 0.202094906389576
-1500 1519 1520 0.199707443263373 0.199707443263373
-1501 1520 1521 0.202063984146535 0.202063984146535
-1502 1521 1522 0.20219834838932 0.20219834838932
-1503 1522 1523 0.199783925434931 0.199783925434931
-1504 1523 47 0.203533027899534 0.203533027899534
-2599 2565 2566 0.0719878134592224 0.0719878134592224
-1506 1524 1525 0.202471618520659 0.202471618520659
-1507 1525 1526 0.207090708341307 0.207090708341307
-1508 1526 1527 0.19569314849173 0.19569314849173
-1509 1527 1528 0.200397251106195 0.200397251106195
-1511 1529 1530 2.00893755060013 2.00893755060013
-1516 1535 1536 0.100586492660266 0.100586492660266
-1518 1009 1537 0.0517503943444181 0.0517503943444181
-1519 1537 1540 0.0418405299236717 0.0418405299236717
-1520 1540 1541 0.0515572086033239 0.0515572086033239
-1521 1541 1542 0.0506297333875711 0.0506297333875711
-1522 1542 1547 0.050402272284143 0.050402272284143
-1523 1547 972 0.0996461444866795 0.0996461444866795
-1524 972 1548 0.0962022319753865 0.0962022319753865
-1525 1548 1549 0.0953657467513535 0.0953657467513535
-1526 1549 1550 0.0963437695650725 0.0963437695650725
-1528 1551 1552 0.142721374587541 0.142721374587541
-1529 1552 1553 0.0277011537567162 0.0277011537567162
-1530 1554 1555 0.0435488620803952 0.0435488620803952
-1531 1555 1053 0.0900813280777187 0.0900813280777187
-1532 1053 1556 0.091689363858679 0.091689363858679
-1537 1560 1561 0.060529314582724 0.060529314582724
-1538 1561 1562 0.0982757577888809 0.0982757577888809
-16447 9904 9905 0.234187757526107 0.234187757526107
-1539 1562 1563 0.0964555264462913 0.0964555264462913
-1540 1563 1564 0.0948745488688521 0.0948745488688521
-1541 1564 1565 0.0967033454927318 0.0967033454927318
-1542 1565 1566 0.0968058200777679 0.0968058200777679
-1543 1566 1567 0.0857541821683109 0.0857541821683109
-1544 1567 1568 0.099340207555012 0.099340207555012
-1545 1568 1571 0.0938405349536985 0.0938405349536985
-1546 1571 1572 0.0960880186310076 0.0960880186310076
-1548 1573 1574 0.0687509395523497 0.0687509395523497
-1551 1576 1577 0.102936179368501 0.102936179368501
-1555 1580 1581 0.0874483930882581 0.0874483930882581
-1558 1583 1584 0.322225767594647 0.322225767594647
-1559 1585 158 0.325178498041831 0.325178498041831
-1560 158 1586 0.248813969770461 0.248813969770461
-1562 1587 1588 0.682458212363131 0.682458212363131
-1563 1589 1590 0.093984831401002 0.093984831401002
-1564 1590 1591 0.0969174980637894 0.0969174980637894
-1565 1591 1592 0.0961947351154639 0.0961947351154639
-1566 1592 1593 0.0903125194205546 0.0903125194205546
-1567 1593 768 0.157881413911052 0.157881413911052
-1568 768 1596 0.172691061788589 0.172691061788589
-1569 1596 1597 0.125221889854682 0.125221889854682
-11466 780 781 0.0395520182900152 0.0395520182900152
-14682 727 782 0.194557772372847 0.194557772372847
-1575 1603 1604 0.122808892568626 0.122808892568626
-1576 1604 1605 0.14134447308364 0.14134447308364
-1577 1605 1606 0.00315234288642188 0.00315234288642188
-1578 1606 1607 0.00237760055681402 0.00237760055681402
-1579 1607 1034 0.102833271602923 0.102833271602923
-1580 1034 1608 0.043468513404088 0.043468513404088
-1581 1608 1033 0.049915824892393 0.049915824892393
-1582 1033 1609 0.0942592902205972 0.0942592902205972
-1583 1609 1610 0.146590259158182 0.146590259158182
-1585 1611 1612 0.124755429872932 0.124755429872932
-1587 1613 1614 0.146275547777326 0.146275547777326
-1588 1614 1615 0.26514479082652 0.26514479082652
-1589 1615 1616 0.120777633356172 0.120777633356172
-1590 1616 1617 0.146979440780155 0.146979440780155
-1591 1617 1618 0.586436662116935 0.586436662116935
-10219 5410 5429 0.0496147818599398 0.0496147818599398
-1592 1618 1619 0.120318550023187 0.120318550023187
-1593 1620 1621 0.123170513487948 0.123170513487948
-1594 1621 1622 0.0891128334653611 0.0891128334653611
-1595 1622 1623 0.0126945079405001 0.0126945079405001
-1597 1624 1625 0.0361628363016983 0.0361628363016983
-1598 1625 1626 0.0965078268867085 0.0965078268867085
-1599 1626 1627 0.122881556236448 0.122881556236448
-1601 1628 1629 0.0514694071076013 0.0514694071076013
-1604 1635 1337 0.196038913624896 0.196038913624896
-1605 1337 1636 0.207228602655476 0.207228602655476
-1606 1636 1637 0.20264296962565 0.20264296962565
-1607 1637 1638 0.203387402917304 0.203387402917304
-1608 1638 1639 0.0190931929940632 0.0190931929940632
-1609 1639 1640 0.0954982678568342 0.0954982678568342
-1612 1642 1643 0.0969376424953903 0.0969376424953903
-1613 1643 1644 0.0932591849763066 0.0932591849763066
-1614 1644 769 0.109404688325734 0.109404688325734
-1616 1645 1646 0.0870106428010285 0.0870106428010285
-1617 1646 1647 0.21369947718983 0.21369947718983
-1618 1647 160 0.103968034130831 0.103968034130831
-1619 160 1648 0.148969074067601 0.148969074067601
-1620 1648 1649 0.102090714125769 0.102090714125769
-1621 1649 1650 0.152016365267068 0.152016365267068
-1624 1652 1653 3.12548314855053 3.12548314855053
-1625 1654 1655 0.099787477314555 0.099787477314555
-1626 1655 1656 0.0573939833292015 0.0573939833292015
-1627 1656 1657 0.0412244638452508 0.0412244638452508
-1628 1657 1658 0.159748945001355 0.159748945001355
-1630 1659 1660 0.0562485254553907 0.0562485254553907
-1631 1660 1661 0.140693983223782 0.140693983223782
-1632 1661 1662 0.199243791884909 0.199243791884909
-1633 1662 1663 0.200873345889282 0.200873345889282
-1634 1663 1664 0.200754056548572 0.200754056548572
-1636 1665 1626 0.102716653811918 0.102716653811918
-1637 1626 1666 0.1010071593638 0.1010071593638
-1638 1666 1667 0.101237955319616 0.101237955319616
-1639 1667 1668 0.101237948338119 0.101237948338119
-1640 1668 711 0.101306598900241 0.101306598900241
-1641 711 1669 0.10042603616611 0.10042603616611
-1642 1669 1670 0.0958961450641524 0.0958961450641524
-1644 1671 1672 0.137716093557474 0.137716093557474
-2762 2714 2715 0.0991860693431078 0.0991860693431078
-1651 1678 1679 0.133306617824866 0.133306617824866
-1652 1679 1250 0.131938339831678 0.131938339831678
-1653 1250 1680 0.132959450261057 0.132959450261057
-1654 1680 1681 0.132733669106231 0.132733669106231
-1655 1681 1682 0.132964768190064 0.132964768190064
-1657 1683 1684 0.0490945965896849 0.0490945965896849
-1658 1684 1685 0.0490108159838641 0.0490108159838641
-1659 1685 1686 0.0499458328019049 0.0499458328019049
-1660 1686 1687 0.0506073899683783 0.0506073899683783
-1661 1687 1688 0.0999922931051382 0.0999922931051382
-1663 1689 1690 0.0532341368396536 0.0532341368396536
-1664 1690 1691 0.0494816378016481 0.0494816378016481
-1665 1691 1129 0.0483962553320354 0.0483962553320354
-2786 2740 2741 0.204165004811902 0.204165004811902
-1669 1694 1695 0.0515058444916569 0.0515058444916569
-1670 1695 1696 0.049583388064832 0.049583388064832
-1672 1697 1698 0.164817053327799 0.164817053327799
-1674 1699 1700 0.200184975462711 0.200184975462711
-1676 1701 1702 0.0562043024646792 0.0562043024646792
-1677 1702 1703 0.0473559609478773 0.0473559609478773
-1679 1704 1705 0.398746605392666 0.398746605392666
-1681 1706 1365 0.144540603588288 0.144540603588288
-1682 1365 1707 0.0528990154558718 0.0528990154558718
-1683 1707 1708 0.10134484884037 0.10134484884037
-1684 1708 1709 0.0991459088544214 0.0991459088544214
-1685 1709 1710 0.100657696530189 0.100657696530189
-1686 1710 1711 0.102825031241611 0.102825031241611
-1687 1711 1712 0.0822822408497534 0.0822822408497534
-1688 1712 1713 0.0873989484445677 0.0873989484445677
-1689 1713 1714 0.083724486939572 0.083724486939572
-1691 1715 1716 0.0772899080720762 0.0772899080720762
-1693 1717 1718 0.0829924152482612 0.0829924152482612
-12973 1824 2797 0.01303984476973 0.01303984476973
-1695 1719 1720 0.0851881782403355 0.0851881782403355
-1696 1720 1721 0.0815306594337643 0.0815306594337643
-1697 1721 1586 0.0807934684584117 0.0807934684584117
-1698 1586 1722 0.0815207303880199 0.0815207303880199
-1699 1722 1649 0.0940041718050458 0.0940041718050458
-1702 1723 1724 0.079056501466603 0.079056501466603
-1703 1724 1725 0.0798640413181071 0.0798640413181071
-1707 204 1728 0.0808035328564148 0.0808035328564148
-1708 1728 1729 0.0793099389847985 0.0793099389847985
-1709 1729 1471 0.0807902086419881 0.0807902086419881
-1710 1471 1730 0.159227595521595 0.159227595521595
-1712 1731 1732 0.00918106235729301 0.00918106235729301
-1713 1732 1733 0.0904244628649386 0.0904244628649386
-1714 1733 1734 0.1024374483727 0.1024374483727
-1715 1734 1735 0.102816532682191 0.102816532682191
-1716 1735 1736 0.0492571813589573 0.0492571813589573
-1718 1737 1738 0.0480836518232765 0.0480836518232765
-1720 1456 1739 0.0851993535054976 0.0851993535054976
-1722 1740 1741 0.0851913863702705 0.0851913863702705
-1724 1742 1743 1.05721580006997 1.05721580006997
-1727 1746 1747 0.203318990561603 0.203318990561603
-1728 1747 1748 0.105159616756228 0.105159616756228
-1730 1749 1750 0.0560818664301058 0.0560818664301058
-1732 1751 1752 0.478248386364013 0.478248386364013
-1733 1752 1753 0.443656760721259 0.443656760721259
-1735 1754 1755 0.1348267792147 0.1348267792147
-1736 1755 1756 0.129877519863856 0.129877519863856
-1738 1757 1758 0.139572444331893 0.139572444331893
-1740 1759 151 0.222068972422621 0.222068972422621
-1742 1760 1761 0.217075886587119 0.217075886587119
-1744 95 1762 0.0857577538793466 0.0857577538793466
-1746 1763 1764 0.202675621070888 0.202675621070888
-1747 1764 1765 0.199646627713467 0.199646627713467
-1749 1768 1769 0.203715891739879 0.203715891739879
-18799 8969 430 0.0787540687567586 0.0787540687567586
-1751 1772 1773 0.1980611092504 0.1980611092504
-1752 1773 1774 0.203412766578772 0.203412766578772
-1753 1774 1775 0.202109933054243 0.202109933054243
-1754 1775 43 0.202669215310678 0.202669215310678
-1755 43 1776 0.197841814631247 0.197841814631247
-1756 1776 1777 0.202676328377112 0.202676328377112
-1757 1777 1778 0.204936151058667 0.204936151058667
-1758 1778 1779 0.1977714314521 0.1977714314521
-1759 1779 1780 0.0315877327413917 0.0315877327413917
-1760 1780 1781 0.0188253963586558 0.0188253963586558
-1763 1782 570 0.0446437216270623 0.0446437216270623
-1764 570 1783 0.0483070548371257 0.0483070548371257
-1765 1783 1784 0.0445253123220399 0.0445253123220399
-1766 1784 1785 0.0510546887722961 0.0510546887722961
-1768 1786 1787 0.0533839966500878 0.0533839966500878
-1769 1787 1788 0.0521924619717138 0.0521924619717138
-1770 1788 1789 0.0490694542852552 0.0490694542852552
-1771 1789 1790 0.0491381693257593 0.0491381693257593
-1774 1792 1793 0.188232081449375 0.188232081449375
-1775 1793 1794 0.0938047512624172 0.0938047512624172
-1777 1795 1796 0.0479551643273822 0.0479551643273822
-1779 1797 1798 0.0506257576844139 0.0506257576844139
-1780 1798 1778 0.0476226019606038 0.0476226019606038
-1781 1778 1799 0.0506000833049729 0.0506000833049729
-1782 1799 1800 0.0489339836382716 0.0489339836382716
-1783 1800 1801 0.0520587364066008 0.0520587364066008
-1784 1801 1526 0.0499381116869285 0.0499381116869285
-1785 1526 1802 0.0482912843745838 0.0482912843745838
-1786 1802 1803 0.052312654556816 0.052312654556816
-1788 466 1804 0.00820558552351573 0.00820558552351573
-1789 1804 1805 0.0939988504660162 0.0939988504660162
-1790 1805 1806 0.0853375028247139 0.0853375028247139
-1792 1807 1808 0.0203438851658787 0.0203438851658787
-1793 1808 1809 0.0251680266073563 0.0251680266073563
-1794 1809 1810 0.203784780502352 0.203784780502352
-1795 1810 1811 0.245267310527272 0.245267310527272
-1797 1812 1513 0.252426666173968 0.252426666173968
-1799 1479 1813 0.176119796231885 0.176119796231885
-1800 1813 1814 0.410709550491308 0.410709550491308
-1802 1815 1816 0.0577133885110317 0.0577133885110317
-1805 1818 1819 0.0740878722178254 0.0740878722178254
-1806 1819 1820 0.135457901381645 0.135457901381645
-1808 1821 1822 0.206145194610924 0.206145194610924
-1812 1828 1829 0.106425576539939 0.106425576539939
-1813 1829 1830 0.105266693821804 0.105266693821804
-1814 1830 1831 0.0587144262982408 0.0587144262982408
-1815 1831 1832 0.0458724352500271 0.0458724352500271
-1817 1833 1834 0.199229532947629 0.199229532947629
-1820 1836 1837 0.0309799563804686 0.0309799563804686
-1822 1838 1839 0.146418601014837 0.146418601014837
-1823 1839 1840 0.141683677614281 0.141683677614281
-1824 1840 1841 0.111588649653809 0.111588649653809
-1827 1844 1845 0.101354924922083 0.101354924922083
-1828 1845 1397 0.106656735273228 0.106656735273228
-1829 1397 1846 0.052351737797171 0.052351737797171
-1831 1847 1848 0.0531037804059208 0.0531037804059208
-1832 1848 1849 0.0506063775898189 0.0506063775898189
-1833 1849 1850 0.0517100300362486 0.0517100300362486
-1834 1850 1851 0.0523258164287328 0.0523258164287328
-1835 1851 1852 0.0499829479152778 0.0499829479152778
-1836 1852 1853 0.051505297770613 0.051505297770613
-1837 1853 1854 0.051498980863322 0.051498980863322
-1840 1856 1857 0.051410475877809 0.051410475877809
-1841 1857 1858 0.0513674435994921 0.0513674435994921
-1842 1858 1109 0.0515213919005775 0.0515213919005775
-1843 1109 1859 0.0506198107739765 0.0506198107739765
-1844 1859 1860 0.0511967416282439 0.0511967416282439
-1845 1860 1861 0.0519748871795966 0.0519748871795966
-1847 1862 1863 0.0554265580601903 0.0554265580601903
-1848 1863 1864 0.397067534239407 0.397067534239407
-1849 1865 1481 0.206774260684103 0.206774260684103
-1850 1481 136 0.199116779757445 0.199116779757445
-1852 1866 1867 0.100566373592942 0.100566373592942
-1853 1867 1868 0.101320817159016 0.101320817159016
-1855 1869 1295 0.0991404141660552 0.0991404141660552
-1856 1295 1368 0.0970426412791379 0.0970426412791379
-1857 1368 1870 0.108154398880898 0.108154398880898
-1859 1871 1872 0.100234830388367 0.100234830388367
-1860 1872 1873 0.0980754533399867 0.0980754533399867
-1861 1873 1874 0.101854943741879 0.101854943741879
-1862 1874 1875 0.0125795021137856 0.0125795021137856
-1863 1875 1876 0.0797821176517698 0.0797821176517698
-1864 1876 1877 0.103719210283603 0.103719210283603
-1866 1740 1878 0.161887620550325 0.161887620550325
-1868 1879 1880 0.0487542093720633 0.0487542093720633
-1869 1880 1122 0.0510369170722426 0.0510369170722426
-1871 1882 1883 0.588595740779303 0.588595740779303
-1872 1884 1885 0.152111272923972 0.152111272923972
-1873 1885 1886 0.199118819593963 0.199118819593963
-1874 1886 1887 0.200266209543398 0.200266209543398
-1876 1891 1892 0.0559298383062073 0.0559298383062073
-2989 776 2928 0.18503947742992 0.18503947742992
-1878 1893 1894 0.32823055853467 0.32823055853467
-1880 1895 1896 0.106010053095039 0.106010053095039
-1881 1896 1897 0.0966039225045284 0.0966039225045284
-1882 1897 1898 0.101329648076306 0.101329648076306
-1883 1898 1899 0.105723867542497 0.105723867542497
-1884 1899 1900 0.100059117952088 0.100059117952088
-1885 1900 1901 0.0102909725043749 0.0102909725043749
-1886 1901 1902 0.0917204387150709 0.0917204387150709
-1887 1902 1903 0.0488400104067164 0.0488400104067164
-1888 1903 1904 0.0516943831129701 0.0516943831129701
-1889 1904 1905 0.0485157141379251 0.0485157141379251
-1890 1905 1906 0.00454251169325352 0.00454251169325352
-1891 1906 1907 0.0474170350841876 0.0474170350841876
-1892 1907 1908 0.0520037008543052 0.0520037008543052
-1893 1908 1772 0.0471189408868131 0.0471189408868131
-1894 1772 1909 0.0492432884260358 0.0492432884260358
-1896 1910 1911 0.0495320112775386 0.0495320112775386
-1897 1911 1520 0.0493945814205325 0.0493945814205325
-1898 1520 1912 0.0533971088216985 0.0533971088216985
-1899 1912 1913 0.0492909868241652 0.0492909868241652
-1902 1914 1915 0.0940987095228026 0.0940987095228026
-1903 1915 1916 0.102901306177953 0.102901306177953
-1904 1916 1917 0.099610911557729 0.099610911557729
-1905 1917 1918 0.102910577647033 0.102910577647033
-1906 1918 1919 0.0967734482498666 0.0967734482498666
-1908 1920 1921 0.0462806189179572 0.0462806189179572
-1910 1922 1923 0.0456516788886206 0.0456516788886206
-1911 1923 1924 0.0505452419126903 0.0505452419126903
-1912 1924 1925 0.0504057374799388 0.0504057374799388
-1913 1925 1926 0.0476340401482501 0.0476340401482501
-1914 1926 1927 0.051053036843087 0.051053036843087
-1915 1927 1928 0.049153971321488 0.049153971321488
-1918 1930 1931 0.0561439680866497 0.0561439680866497
-1919 1931 1932 0.053826281457259 0.053826281457259
-3034 2965 2966 0.00876223324596343 0.00876223324596343
-1920 1932 1933 0.0477206876272752 0.0477206876272752
-1923 1935 1936 0.066876205689997 0.066876205689997
-1924 1937 1938 0.0446617758397252 0.0446617758397252
-1925 1938 1939 0.0840391912235338 0.0840391912235338
-1926 1939 1940 0.227469383602409 0.227469383602409
-1931 1944 1945 0.0952703264542464 0.0952703264542464
-1932 1945 1946 0.0974265293580338 0.0974265293580338
-1933 1947 1948 0.151605873109213 0.151605873109213
-1938 1952 1953 0.109258836266427 0.109258836266427
-1939 1953 1954 0.122481399421688 0.122481399421688
-1940 1954 1955 0.119684093740802 0.119684093740802
-1943 1957 1958 0.204446635842756 0.204446635842756
-1944 1958 1959 0.0997279110592744 0.0997279110592744
-1945 1959 1960 1.05168738215655 1.05168738215655
-1946 1960 1961 1.71048983577162 1.71048983577162
-1947 1962 1963 2.33567129984142 2.33567129984142
-1948 1963 1964 1.08148581800227 1.08148581800227
-1950 1965 1966 0.103934061554546 0.103934061554546
-1951 1966 1967 0.0454999873171455 0.0454999873171455
-1952 1967 1968 0.0964089929828049 0.0964089929828049
-1953 1968 1969 0.125489170754965 0.125489170754965
-1954 1969 1972 0.165851140560008 0.165851140560008
-1955 1972 1973 0.145299005046435 0.145299005046435
-1956 1973 1974 0.145772913358701 0.145772913358701
-1957 1974 1975 0.149974913959851 0.149974913959851
-1958 1975 1976 0.145057930633755 0.145057930633755
-1959 1976 1977 0.143477867614704 0.143477867614704
-1961 1978 420 0.0932140793920545 0.0932140793920545
-1963 1963 1979 1.08603450886527 1.08603450886527
-1964 1979 1980 0.0983329965983175 0.0983329965983175
-1965 1980 1981 0.0917353737473226 0.0917353737473226
-1966 1981 1982 0.055771341470748 0.055771341470748
-1967 1982 1983 0.0968737393586206 0.0968737393586206
-1968 1983 1984 0.0954710209286709 0.0954710209286709
-1969 1984 1985 0.0293519873253464 0.0293519873253464
-1970 1985 1986 0.0704554284720801 0.0704554284720801
-1971 1986 1988 0.095403189447009 0.095403189447009
-1972 1988 1989 0.146040552740524 0.146040552740524
-1973 1989 1990 0.147511070915923 0.147511070915923
-1974 1990 1991 0.147511070914708 0.147511070914708
-1975 1991 1992 0.145306416846094 0.145306416846094
-1976 1992 1993 0.143786568306041 0.143786568306041
-1977 1993 1994 0.0151225768059817 0.0151225768059817
-1978 1994 420 0.0955903616259906 0.0955903616259906
-1980 1995 157 0.328733376766768 0.328733376766768
-1981 157 1721 0.24955962831592 0.24955962831592
-1983 1996 1997 0.475009767293493 0.475009767293493
-1984 1998 1999 0.203988417966153 0.203988417966153
-1985 1999 2000 0.200819821039785 0.200819821039785
-1986 2000 794 0.198875475027904 0.198875475027904
-1987 794 2001 0.203566311480143 0.203566311480143
-1988 2001 2002 0.201451879254481 0.201451879254481
-1989 2002 2003 0.203252240244887 0.203252240244887
-1990 2003 2004 0.204825535738971 0.204825535738971
-1991 2004 2005 0.188227904196053 0.188227904196053
-1992 2005 2006 0.0174353644977756 0.0174353644977756
-1994 353 2007 0.251582112428801 0.251582112428801
-1995 2007 2008 0.132634173204781 0.132634173204781
-1996 2008 2009 0.107027307843563 0.107027307843563
-1999 2011 646 0.139457974349072 0.139457974349072
-2000 646 2012 0.135033465549491 0.135033465549491
-2001 2012 1990 0.089412705524254 0.089412705524254
-2002 1990 1974 0.0383268944933106 0.0383268944933106
-2003 1974 2013 0.133766034901227 0.133766034901227
-2004 2013 2014 0.133581539638141 0.133581539638141
-2005 2014 2015 0.142379951799733 0.142379951799733
-2007 2016 2017 0.251899237124673 0.251899237124673
-2008 2017 2018 0.133367826813466 0.133367826813466
-2009 2018 2019 0.10602884511386 0.10602884511386
-2010 2019 2020 0.0337181930055553 0.0337181930055553
-2011 2020 2021 0.200388320757191 0.200388320757191
-2014 2023 2024 0.171565352607288 0.171565352607288
-2016 2025 2026 0.0477258088803687 0.0477258088803687
-2017 2026 2027 0.0809138557734271 0.0809138557734271
-2018 2027 2028 0.105296432652635 0.105296432652635
-2021 2030 2031 0.0518714690593594 0.0518714690593594
-2023 2032 2033 0.10377665457529 0.10377665457529
-2024 2033 2034 0.105027724692891 0.105027724692891
-2025 2034 2035 0.0547353150471903 0.0547353150471903
-2026 2035 2036 0.0513505470015755 0.0513505470015755
-2027 2036 2037 0.0518915831567366 0.0518915831567366
-2028 2038 2039 0.101144662033058 0.101144662033058
-2029 2039 2040 0.00469012569566242 0.00469012569566242
-2030 2040 2041 0.105219334964384 0.105219334964384
-2032 2042 2043 0.0933903014689556 0.0933903014689556
-2033 2043 559 0.0150758315973471 0.0150758315973471
-2034 559 2044 0.0636386622186814 0.0636386622186814
-2035 2044 2045 0.0177005397698663 0.0177005397698663
-2039 2048 1918 0.201578926546004 0.201578926546004
-2040 1918 2049 0.199006200917286 0.199006200917286
-2043 2051 70 0.203396158473628 0.203396158473628
-2045 1197 2052 0.0220081346494975 0.0220081346494975
-2046 2052 2053 0.200331631924477 0.200331631924477
-2047 2053 2054 0.154360922478377 0.154360922478377
-2048 2054 948 0.176666608936966 0.176666608936966
-2049 948 2055 0.165719712872644 0.165719712872644
-2050 2055 2056 0.169383792792816 0.169383792792816
-2052 2057 2058 0.174576187564815 0.174576187564815
-2053 2058 2059 0.172745648066703 0.172745648066703
-2054 2059 2060 0.176912657229173 0.176912657229173
-2055 2060 2061 0.164650081589568 0.164650081589568
-2057 2062 746 0.0627806188777907 0.0627806188777907
-2059 1564 2063 0.138541795103745 0.138541795103745
-2060 2063 2064 0.12093608528602 0.12093608528602
-2062 2065 693 0.201596255528806 0.201596255528806
-2063 693 2066 0.202309385780635 0.202309385780635
-2065 2067 2068 0.201208296937256 0.201208296937256
-2069 2072 2073 0.141581011374908 0.141581011374908
-2072 2075 2076 0.13960716604907 0.13960716604907
-2073 2076 2077 0.137352432815083 0.137352432815083
-2074 2077 2078 0.139172335676639 0.139172335676639
-2075 2078 2079 0.137570556837278 0.137570556837278
-2077 2080 2081 0.124260733003778 0.124260733003778
-2078 2081 2082 0.0143334567754311 0.0143334567754311
-2079 2082 1169 0.140817691182502 0.140817691182502
-2080 1169 889 0.136202795453782 0.136202795453782
-2081 889 2083 0.140272589797925 0.140272589797925
-2082 2083 2084 0.132655733622477 0.132655733622477
-2084 2085 2086 0.130758013034065 0.130758013034065
-2085 1055 2087 0.365531347335866 0.365531347335866
-2086 2087 2088 0.13568199350655 0.13568199350655
-2087 2088 2089 0.14074386927803 0.14074386927803
-2088 2089 2090 0.132744503428598 0.132744503428598
-2090 2091 2092 0.0599168224199403 0.0599168224199403
-2091 2093 1220 0.0866154902836551 0.0866154902836551
-2093 2095 2096 0.243872573445978 0.243872573445978
-2094 2096 2097 0.241082179338788 0.241082179338788
-2096 2098 2099 0.174814701889178 0.174814701889178
-2097 2099 2100 0.175154975379932 0.175154975379932
-2100 2102 2103 0.114419579517541 0.114419579517541
-2101 2103 2104 0.285214999643623 0.285214999643623
-2102 2104 2107 0.394315301182406 0.394315301182406
-2104 333 2108 0.278529398579064 0.278529398579064
-2106 1150 1822 0.102734424254821 0.102734424254821
-2108 2109 2110 0.202389435684367 0.202389435684367
-2109 2110 2111 0.203214045748693 0.203214045748693
-2110 2111 2112 0.241815761631872 0.241815761631872
-2111 2112 2113 0.100823640639482 0.100823640639482
-2112 2113 2114 0.00265953685516916 0.00265953685516916
-2114 2115 2116 0.238307263458502 0.238307263458502
-2116 2117 2118 0.172019623051487 0.172019623051487
-2117 2118 2119 0.0267252812490126 0.0267252812490126
-2118 2119 2120 0.200138632498134 0.200138632498134
-2119 2120 2121 0.20340922729078 0.20340922729078
-2120 2121 2122 0.197749465935997 0.197749465935997
-2121 2122 2123 0.20148284791492 0.20148284791492
-2122 2123 2124 0.206967663578278 0.206967663578278
-2123 2124 688 0.198127359399408 0.198127359399408
-2124 688 1981 0.162008033573987 0.162008033573987
-2127 2127 2128 0.0963587083366664 0.0963587083366664
-2128 2128 1149 0.101309363144821 0.101309363144821
-2130 2129 2130 0.268413747321973 0.268413747321973
-15791 2106 2131 0.0329007751166605 0.0329007751166605
-2131 2130 2132 0.135315648859656 0.135315648859656
-2133 2133 2134 0.206936888424913 0.206936888424913
-2134 2134 2135 0.199680286737687 0.199680286737687
-2135 2135 801 0.201106069676904 0.201106069676904
-2136 801 2136 0.201743876713814 0.201743876713814
-2137 2136 2137 0.208870260631958 0.208870260631958
-2138 2137 2138 0.202159360168084 0.202159360168084
-2139 2138 2139 0.199627649413879 0.199627649413879
-2140 2139 2140 0.186052011799078 0.186052011799078
-2142 2141 2142 0.0396569310433899 0.0396569310433899
-2168 2167 2168 0.189234637777307 0.189234637777307
-2143 2142 2143 0.0683760552809121 0.0683760552809121
-2144 2143 2144 0.00806043179372478 0.00806043179372478
-2145 2144 2145 0.00436074705638217 0.00436074705638217
-2146 2145 2146 0.00359181344508779 0.00359181344508779
-2147 2146 2147 0.00395340009925433 0.00395340009925433
-2148 2147 2148 0.136610372293043 0.136610372293043
-2149 2148 2149 0.180604844053974 0.180604844053974
-2152 2152 2153 0.132023781927159 0.132023781927159
-2153 2153 2154 0.135708940609739 0.135708940609739
-2154 2154 1415 0.130555983926377 0.130555983926377
-2155 1415 1355 0.134241500709378 0.134241500709378
-2156 1355 2155 0.0746101236889861 0.0746101236889861
-2161 2159 2161 0.133841125283574 0.133841125283574
-2162 2161 2162 0.1372260849468 0.1372260849468
-2163 2162 2163 0.128741940100472 0.128741940100472
-2164 2163 2164 0.135391700615332 0.135391700615332
-2169 2168 2169 0.201124079513876 0.201124079513876
-2170 2169 2170 0.108103708021473 0.108103708021473
-2172 2172 2173 0.13444261016809 0.13444261016809
-2173 2173 2174 0.13827137965728 0.13827137965728
-2174 2174 2175 0.134068324786893 0.134068324786893
-2175 2175 2176 0.133067365005956 0.133067365005956
-2176 2176 2177 0.135535927176987 0.135535927176987
-2177 2177 2178 0.134471884610529 0.134471884610529
-2180 2180 2181 0.201420608111328 0.201420608111328
-2182 2182 2183 0.0166632573599522 0.0166632573599522
-2183 2183 2184 0.101864448677803 0.101864448677803
-2184 2184 2185 0.047789206759145 0.047789206759145
-2185 2185 2186 0.0423227378750124 0.0423227378750124
-4423 3782 4133 0.154572357311794 0.154572357311794
-2186 2186 2187 0.66062410841751 0.66062410841751
-2188 2188 1945 0.10637947146537 0.10637947146537
-2189 1945 2189 0.148995294788127 0.148995294788127
-2211 2212 2213 0.0467155303221573 0.0467155303221573
-2190 2189 2190 0.327169136665339 0.327169136665339
-2192 2191 2192 0.0188299118027414 0.0188299118027414
-2193 2192 2193 0.210910851782462 0.210910851782462
-2195 2194 2195 0.365278744815015 0.365278744815015
-2196 2195 2196 0.0130424738912125 0.0130424738912125
-2197 2196 2197 0.0449464311286017 0.0449464311286017
-2198 2197 2198 0.0030293307914236 0.0030293307914236
-2199 2198 2199 0.128682754082238 0.128682754082238
-2200 2199 2200 0.110573702095649 0.110573702095649
-2202 2203 2204 0.10817464433389 0.10817464433389
-2203 2204 2205 0.107622599984834 0.107622599984834
-2204 2205 2206 0.108403921870099 0.108403921870099
-2205 2206 2207 0.060733439657354 0.060733439657354
-2206 2207 2208 0.0534350684854931 0.0534350684854931
-2207 2208 2209 0.0529414575701877 0.0529414575701877
-2208 2209 2210 0.0527447832774698 0.0527447832774698
-2209 2210 2211 0.102434337721347 0.102434337721347
-2210 2211 2212 0.0503091444283059 0.0503091444283059
-2212 2213 2214 0.0457845256573543 0.0457845256573543
-2213 2214 2215 0.0483154919494593 0.0483154919494593
-2214 2215 2216 0.0500256719211907 0.0500256719211907
-2215 2216 2217 0.0483324272045254 0.0483324272045254
-2216 2217 2218 0.0492693454756351 0.0492693454756351
-2217 2218 2219 0.0514417765088717 0.0514417765088717
-2218 2219 2220 0.0488786158333744 0.0488786158333744
-2219 2220 981 0.0498905437062621 0.0498905437062621
-2220 981 2221 0.0506165357374516 0.0506165357374516
-2221 2221 2222 0.046223636949906 0.046223636949906
-2224 2224 2225 0.051453756147013 0.051453756147013
-2225 2225 2226 0.0468957891600155 0.0468957891600155
-2226 2226 2227 0.0492631927304953 0.0492631927304953
-2227 2227 2228 0.0520252151650071 0.0520252151650071
-2228 2228 2229 0.0550486617142997 0.0550486617142997
-2229 2230 2231 0.0139385553943917 0.0139385553943917
-2230 2231 2232 0.0929550410270359 0.0929550410270359
-2234 2236 2237 0.0961215858652653 0.0961215858652653
-2235 2237 2238 0.0993231725885536 0.0993231725885536
-19654 10604 10606 0.0711515052063537 0.0711515052063537
-2236 2238 2239 0.0986901078011995 0.0986901078011995
-2237 2239 2120 0.100412717366674 0.100412717366674
-2238 2120 2240 0.0994425769829808 0.0994425769829808
-2239 2240 2241 0.0986741447066025 0.0986741447066025
-2240 2241 2242 0.196986803845301 0.196986803845301
-2241 2245 2246 0.0853554831080311 0.0853554831080311
-2242 2246 1017 0.10642802452306 0.10642802452306
-2243 1017 2247 0.0517185594306615 0.0517185594306615
-2244 2247 2248 0.0530774886579764 0.0530774886579764
-16655 3462 3463 0.083025520087948 0.083025520087948
-2245 2248 2249 0.0515725288155829 0.0515725288155829
-2246 2249 2250 0.0550106406637853 0.0550106406637853
-2247 2250 2251 0.0492291609495858 0.0492291609495858
-2250 2253 2254 0.068064098421736 0.068064098421736
-2251 2254 381 0.0653278702953464 0.0653278702953464
-2253 2255 2256 0.176933367276823 0.176933367276823
-2255 2257 1830 0.176665129086282 0.176665129086282
-2257 1817 2258 0.0851310356517557 0.0851310356517557
-2258 2258 2259 0.0498677366751348 0.0498677366751348
-2260 2260 2261 0.20430957984894 0.20430957984894
-2263 2263 2264 0.172785898975569 0.172785898975569
-2265 2265 2266 0.17364958356586 0.17364958356586
-2266 2266 2267 0.245119251352525 0.245119251352525
-2267 2267 2268 0.132589695523512 0.132589695523512
-2268 2268 2269 0.106738596174206 0.106738596174206
-2269 2269 2270 0.0337285830402062 0.0337285830402062
-20279 7555 7554 0.0146999916602211 0.0146999916602211
-2270 2270 2271 0.269363966522552 0.269363966522552
-2273 2275 684 0.204569111503518 0.204569111503518
-2274 684 1986 0.157853726642528 0.157853726642528
-2278 2278 2279 0.207434558661452 0.207434558661452
-2279 2279 2280 0.20034839537718 0.20034839537718
-2280 2280 798 0.19667070755531 0.19667070755531
-2281 798 2281 0.204476797355414 0.204476797355414
-2283 2282 2283 0.201226119347201 0.201226119347201
-2284 2283 2284 0.201775247020165 0.201775247020165
-2287 2286 2287 0.00679684653457476 0.00679684653457476
-2288 2287 2288 0.00351717235619697 0.00351717235619697
-2289 2288 2289 0.00475072672267961 0.00475072672267961
-2290 2289 2290 0.085203263947135 0.085203263947135
-2292 2291 2292 0.21658567369152 0.21658567369152
-2293 2292 2293 0.294285406846423 0.294285406846423
-2295 1532 2294 0.0895735364116296 0.0895735364116296
-2296 2294 2295 0.130472447344756 0.130472447344756
-2298 2044 560 0.0834414685220809 0.0834414685220809
-2299 560 913 0.519257886958262 0.519257886958262
-2300 913 2297 0.14849143076931 0.14849143076931
-2301 2297 2299 0.276635413291223 0.276635413291223
-2356 2345 2346 0.126022029068994 0.126022029068994
-2302 2299 2300 0.882147486934507 0.882147486934507
-2304 2301 2302 0.171837385748798 0.171837385748798
-2305 2302 2303 0.168190952055295 0.168190952055295
-2308 1995 1585 0.0793668846267203 0.0793668846267203
-2310 1646 2305 0.0800618116658591 0.0800618116658591
-2311 2305 2306 0.0800532572745142 0.0800532572745142
-2312 2306 2307 0.0808374839403145 0.0808374839403145
-2313 2307 2308 0.0793040216351705 0.0793040216351705
-2315 2309 2310 0.0976846110372701 0.0976846110372701
-2317 2311 2312 0.131380688058575 0.131380688058575
-2318 2312 2313 0.00313000089825153 0.00313000089825153
-2319 2313 2157 0.109122831884578 0.109122831884578
-2320 2157 2314 0.0470081550211631 0.0470081550211631
-2321 2314 441 0.0450344666647882 0.0450344666647882
-2326 1614 2317 0.105832922283753 0.105832922283753
-2327 2317 2319 0.101211119794553 0.101211119794553
-2328 2319 914 0.105388128978222 0.105388128978222
-2351 2100 2341 0.101951720072048 0.101951720072048
-2352 2341 2342 0.101030261985598 0.101030261985598
-2353 2342 2330 0.0997965680595524 0.0997965680595524
-2354 2330 2343 0.101856778567858 0.101856778567858
-2355 2344 2345 0.0735649917770033 0.0735649917770033
-2357 2346 2347 0.106673075682264 0.106673075682264
-2358 2347 2348 0.104262034499471 0.104262034499471
-2359 2348 2057 0.103127373430199 0.103127373430199
-2360 2057 2350 0.104860273903505 0.104860273903505
-2361 2350 2351 0.102072059078566 0.102072059078566
-2362 2351 2352 0.10208795508847 0.10208795508847
-2363 2352 2353 0.103003886322398 0.103003886322398
-2364 2353 2354 0.104842753763622 0.104842753763622
-2365 2354 2355 0.102079170592138 0.102079170592138
-2366 2355 2356 0.104157794922069 0.104157794922069
-2367 2356 2357 0.102771960719463 0.102771960719463
-2368 2357 843 0.10323381873133 0.10323381873133
-2369 843 2358 0.104166303367793 0.104166303367793
-2370 2358 2359 0.04678514768012 0.04678514768012
-2372 2360 2361 0.106536201799638 0.106536201799638
-2373 2361 2362 0.0524641553188961 0.0524641553188961
-2374 2362 2363 0.0542089866141956 0.0542089866141956
-2376 964 2364 0.101990510698998 0.101990510698998
-2377 2364 2365 0.0991028819964669 0.0991028819964669
-2378 2365 2366 0.101583146356588 0.101583146356588
-2379 2366 2367 0.0976663347579885 0.0976663347579885
-2380 2367 2368 0.137463391512845 0.137463391512845
-2382 2369 2370 0.0935927888835794 0.0935927888835794
-2383 2370 2371 0.22137940675351 0.22137940675351
-2384 93 2372 0.144113051799641 0.144113051799641
-2386 2373 2374 0.118928753039855 0.118928753039855
-18871 9233 10374 0.171083495652578 0.171083495652578
-2387 2374 2375 0.0543464584708682 0.0543464584708682
-2389 2378 2379 0.0407086995566738 0.0407086995566738
-2392 2381 2382 0.0375038196347678 0.0375038196347678
-2393 2383 2384 0.0259773773232023 0.0259773773232023
-2416 2406 2407 0.0997923351013975 0.0997923351013975
-2417 2407 2408 0.102411248163046 0.102411248163046
-2418 2408 2410 0.102005785733823 0.102005785733823
-2419 2410 2411 0.0465568279250156 0.0465568279250156
-2420 2411 1116 0.0498480806250605 0.0498480806250605
-2421 1116 2412 0.0524212085974951 0.0524212085974951
-2422 2412 2413 0.00643722349691115 0.00643722349691115
-2423 2413 2414 0.0569639986120168 0.0569639986120168
-2424 2414 2415 0.054429107165009 0.054429107165009
-2426 1254 2416 0.203595366987771 0.203595366987771
-2427 2416 2418 0.194946286421225 0.194946286421225
-2429 2419 2420 0.10553685574305 0.10553685574305
-2430 2420 2421 0.100987191369147 0.100987191369147
-2431 2421 2422 0.140456845404627 0.140456845404627
-2432 2423 2424 0.132127040761259 0.132127040761259
-2433 2424 2425 0.0836330996531634 0.0836330996531634
-2434 2425 2426 0.048846065804279 0.048846065804279
-2435 2426 2427 0.133578105271454 0.133578105271454
-2437 2428 2429 0.0517867804859422 0.0517867804859422
-2438 2429 2430 0.0498462274807045 0.0498462274807045
-2439 2430 2431 0.0505796838521555 0.0505796838521555
-2440 2431 2432 0.04930585188023 0.04930585188023
-2441 2432 2433 0.0511391992663707 0.0511391992663707
-2442 2433 2434 0.049421053488602 0.049421053488602
-2444 2435 2436 0.0499548965774192 0.0499548965774192
-2446 2437 2438 0.0498278119665032 0.0498278119665032
-2447 2438 1131 0.0475201423687532 0.0475201423687532
-2448 1131 2440 0.0499034161165238 0.0499034161165238
-2449 2440 2441 0.0519460604074748 0.0519460604074748
-2450 2441 2442 0.103666385736129 0.103666385736129
-2451 2442 2443 0.0495636449318867 0.0495636449318867
-2452 2443 2444 0.0508868110117968 0.0508868110117968
-2454 2445 2446 0.0992414144632343 0.0992414144632343
-2455 2446 2447 0.0995661619141735 0.0995661619141735
-2456 2447 2448 0.102918667647187 0.102918667647187
-2457 2448 2449 0.103317708000917 0.103317708000917
-2458 2449 714 0.103614639817309 0.103614639817309
-2460 2450 2451 0.0843633084104915 0.0843633084104915
-2462 2452 2453 0.133209824518529 0.133209824518529
-2463 2453 2454 0.136026824487267 0.136026824487267
-2464 2454 1228 0.0997640460624544 0.0997640460624544
-2466 2455 2173 0.100670279604477 0.100670279604477
-2467 2173 2456 0.101681998391895 0.101681998391895
-2468 2456 2457 0.135717601546705 0.135717601546705
-2469 2457 2458 0.125216072912334 0.125216072912334
-2470 2458 1253 0.13515574813911 0.13515574813911
-2472 1811 2459 0.0528114155967436 0.0528114155967436
-2474 489 2460 0.0154146680516237 0.0154146680516237
-2475 2460 2461 0.0956622199995578 0.0956622199995578
-2476 2461 2462 0.050324686032827 0.050324686032827
-2477 2462 2463 0.0440541436649478 0.0440541436649478
-2478 2463 2464 0.09025955144498 0.09025955144498
-2479 2464 2465 0.00954118829962817 0.00954118829962817
-2480 2465 2466 0.0924623221003645 0.0924623221003645
-2481 2466 2015 0.0557729059183765 0.0557729059183765
-2483 1998 2467 0.0939242873690555 0.0939242873690555
-2485 2468 2469 0.0807187230923558 0.0807187230923558
-2486 2469 2470 0.0660886283093114 0.0660886283093114
-2487 2470 2471 0.0307524582434291 0.0307524582434291
-2488 2471 2277 0.0631719504961159 0.0631719504961159
-2489 2277 2278 0.040321437937915 0.040321437937915
-2490 2278 2472 0.0579924273198359 0.0579924273198359
-2491 2472 2473 0.039564008523498 0.039564008523498
-2492 2473 2474 0.0566191459993118 0.0566191459993118
-2493 2474 2475 0.0461657995077916 0.0461657995077916
-2494 2475 2476 0.0573841993244499 0.0573841993244499
-2495 2476 2133 0.0413742441677564 0.0413742441677564
-2496 2133 2477 0.100557820130683 0.100557820130683
-2497 2477 2478 0.100232094382669 0.100232094382669
-2523 1412 1352 0.126262872161581 0.126262872161581
-2498 2478 2479 3.80416722159948 3.80416722159948
-17380 5747 2721 0.292296181002999 0.292296181002999
-2500 2481 2482 0.133762433378551 0.133762433378551
-2502 2483 2484 0.132763004680832 0.132763004680832
-2503 2484 2153 0.135437121880425 0.135437121880425
-2506 2486 2487 0.0976687527368442 0.0976687527368442
-2507 2487 2488 0.100497620432408 0.100497620432408
-2508 2488 1263 0.0968234302487817 0.0968234302487817
-2510 2489 2490 0.129998303918767 0.129998303918767
-2511 2490 2491 0.131427328920895 0.131427328920895
-2512 2491 2492 0.134959393077107 0.134959393077107
-2513 2492 2493 0.13352181172892 0.13352181172892
-2514 2493 2494 0.134977098269894 0.134977098269894
-2515 2494 2495 0.133660770711518 0.133660770711518
-2517 2496 1452 0.127643758305543 0.127643758305543
-2519 2497 2498 0.181370133617083 0.181370133617083
-2521 2481 2499 0.0828768372746742 0.0828768372746742
-2522 2499 1412 0.137652613646732 0.137652613646732
-2524 1352 2502 0.0676943813373141 0.0676943813373141
-2526 2503 2504 0.133817315449894 0.133817315449894
-2527 2504 2505 0.135673996947998 0.135673996947998
-2528 2505 2506 0.131966049224978 0.131966049224978
-2529 2506 2507 0.147529903316466 0.147529903316466
-2530 2507 2508 0.139391603159038 0.139391603159038
-16296 2509 2510 0.0284493842376544 0.0284493842376544
-2532 2511 2512 0.0269759988952267 0.0269759988952267
-2533 2512 2513 0.0303785309203703 0.0303785309203703
-2534 2513 2514 0.100988065805353 0.100988065805353
-2535 2514 2515 0.134258813820628 0.134258813820628
-2536 2515 2516 0.1356600895436 0.1356600895436
-2537 2516 2517 0.13329676442141 0.13329676442141
-2538 2517 1672 0.132852712666159 0.132852712666159
-2539 1672 2518 0.137264898504848 0.137264898504848
-2540 2518 2453 0.136447294484888 0.136447294484888
-2541 2453 2519 0.136891385699314 0.136891385699314
-2542 2519 2520 0.134024921907499 0.134024921907499
-2544 2521 2522 0.0902887501429021 0.0902887501429021
-2545 2522 2523 0.0432770654501463 0.0432770654501463
-2546 2523 2524 0.0452800647802491 0.0452800647802491
-2547 2524 2525 0.0887962039212883 0.0887962039212883
-2549 2526 2527 0.14861247431244 0.14861247431244
-2550 2527 2528 0.177718576341635 0.177718576341635
-2552 2529 2530 0.0550007858390758 0.0550007858390758
-2553 2530 2531 0.0537231597686698 0.0537231597686698
-2557 254 1937 0.0763145446596447 0.0763145446596447
-2562 2536 2537 0.0969383510155091 0.0969383510155091
-2564 2523 2538 0.041595541767366 0.041595541767366
-2565 2538 2539 0.0446801019224323 0.0446801019224323
-2567 2540 2541 0.0535606711091096 0.0535606711091096
-2568 2541 2542 0.0510376050613383 0.0510376050613383
-2569 2542 2543 0.048208042370787 0.048208042370787
-2570 2543 2544 0.0495068215823226 0.0495068215823226
-2571 2544 2545 0.0497291777137453 0.0497291777137453
-2572 2545 2546 0.0482680412228731 0.0482680412228731
-2573 2546 2547 0.0511986246623993 0.0511986246623993
-2574 2547 2548 0.0481311400848056 0.0481311400848056
-2575 2548 2549 0.05133533567668 0.05133533567668
-2576 2549 1090 0.0473365047010202 0.0473365047010202
-2578 2550 2551 0.0490112208554607 0.0490112208554607
-2579 2551 2552 0.0504551815276218 0.0504551815276218
-2580 2552 2553 0.0492845875119232 0.0492845875119232
-2581 2553 2554 0.0515497460521136 0.0515497460521136
-2582 2554 2555 0.0526862102053863 0.0526862102053863
-2583 2555 2556 0.0982237295878 0.0982237295878
-2584 2556 2557 0.264254691363992 0.264254691363992
-2585 1004 2558 0.099742520234474 0.099742520234474
-2588 2560 1078 0.149639182772472 0.149639182772472
-2589 1078 2522 0.184839011544187 0.184839011544187
-2591 1484 2561 0.33893453481304 0.33893453481304
-2592 2561 2562 0.36930331062994 0.36930331062994
-2594 2563 2295 0.235151876914131 0.235151876914131
-2596 2141 2564 0.0808696846181639 0.0808696846181639
-2628 2589 2590 0.046646895086832 0.046646895086832
-2597 2564 1224 0.24032404212478 0.24032404212478
-2600 2373 2567 0.1712601795962 0.1712601795962
-2601 2567 2568 0.00945648555666562 0.00945648555666562
-2603 2565 2569 0.0807956808253844 0.0807956808253844
-2604 2569 2570 0.076951583144574 0.076951583144574
-2605 2570 2571 0.0476131935554626 0.0476131935554626
-2607 2572 2568 0.0312593605711727 0.0312593605711727
-2609 2569 2573 0.0486149705677772 0.0486149705677772
-2610 2570 2574 0.0674260333743846 0.0674260333743846
-2612 2567 2575 0.0505261001159507 0.0505261001159507
-2615 2577 2578 0.10424034664628 0.10424034664628
-2616 2578 2579 0.103512640883379 0.103512640883379
-2617 2579 1398 0.105102630546257 0.105102630546257
-2618 1398 2580 0.0531367598624707 0.0531367598624707
-2619 2580 2581 0.0517085263170068 0.0517085263170068
-2620 2581 2582 0.0723991341895349 0.0723991341895349
-2621 2582 2583 0.0331676268132885 0.0331676268132885
-2622 2583 2584 0.0138525911142565 0.0138525911142565
-2623 2584 2585 0.037416228202987 0.037416228202987
-2624 2585 2586 0.00994286750486891 0.00994286750486891
-2625 2586 2587 0.040254104254433 0.040254104254433
-2629 2590 2591 0.00335375549834044 0.00335375549834044
-2630 2591 2592 0.0463774647105825 0.0463774647105825
-2631 2592 2593 0.00549997045042586 0.00549997045042586
-2632 2593 2594 0.0383542392436341 0.0383542392436341
-2634 2595 2596 0.0344869484873441 0.0344869484873441
-2635 2596 2597 0.0176627396467139 0.0176627396467139
-2636 2597 2598 0.0280292044334563 0.0280292044334563
-2637 2598 2599 0.0242403080070769 0.0242403080070769
-2638 2599 1569 0.0218944112855232 0.0218944112855232
-2639 1569 2600 0.0286200762867591 0.0286200762867591
-2640 2600 1094 0.018347539243156 0.018347539243156
-2642 1110 2601 0.0142742072830798 0.0142742072830798
-2643 2601 2602 0.0369383896439539 0.0369383896439539
-2644 2602 2603 0.00917687822572764 0.00917687822572764
-2645 2603 2604 0.0430608643022986 0.0430608643022986
-2646 2604 2605 0.00238679099543715 0.00238679099543715
-2647 2605 2606 0.0472847267591164 0.0472847267591164
-2648 2606 2607 0.0508445190476207 0.0508445190476207
-2649 2607 2608 0.00234361810734104 0.00234361810734104
-2650 2608 2609 0.0517900277245267 0.0517900277245267
-2652 2610 2611 0.145180979465517 0.145180979465517
-2674 2632 2634 0.599531015097949 0.599531015097949
-2675 2635 2181 0.0871692653780363 0.0871692653780363
-2676 2181 2638 0.0863959675292808 0.0863959675292808
-2679 2640 2641 0.121944822987822 0.121944822987822
-2681 2642 2643 0.0194925006650245 0.0194925006650245
-2682 2643 2350 0.134347723988409 0.134347723988409
-2683 2350 2644 0.173564798460366 0.173564798460366
-2684 2644 2645 0.174686152075606 0.174686152075606
-2685 2645 2646 0.175389969986131 0.175389969986131
-2688 2648 747 0.0612580153194998 0.0612580153194998
-2689 747 1565 0.142756107755667 0.142756107755667
-2690 1565 2649 0.138016127389502 0.138016127389502
-2691 2649 2650 0.12023627946696 0.12023627946696
-2693 2651 694 0.200802439501944 0.200802439501944
-2695 2652 2653 0.127019992895419 0.127019992895419
-2696 2653 2654 0.201028199806741 0.201028199806741
-2697 2654 2655 0.134212276460076 0.134212276460076
-2698 2655 2656 0.140083368586782 0.140083368586782
-2699 2656 2657 0.13046105136647 0.13046105136647
-2702 2633 2659 0.199675824720705 0.199675824720705
-2704 2660 949 0.174693421852154 0.174693421852154
-2705 949 2661 0.165148304595761 0.165148304595761
-2706 2661 2662 0.173966950291824 0.173966950291824
-2707 2662 2663 0.184218102738583 0.184218102738583
-2708 2663 2664 0.172496811774092 0.172496811774092
-2710 2665 2666 0.394651095737645 0.394651095737645
-2711 2667 2668 0.201414903082426 0.201414903082426
-17301 8745 4260 0.201420130125937 0.201420130125937
-2713 2669 2388 0.109456559825348 0.109456559825348
-2714 2388 2670 0.140828374595316 0.140828374595316
-2717 2672 2673 0.139177577172101 0.139177577172101
-2718 2673 2674 0.137352749762486 0.137352749762486
-2719 2674 2675 0.139830667816654 0.139830667816654
-2720 2675 2676 0.136669684605715 0.136669684605715
-2722 2677 2678 0.12447911414286 0.12447911414286
-2750 2704 2705 0.0292446267270126 0.0292446267270126
-2751 2705 2706 0.00658282845173238 0.00658282845173238
-2752 2706 2707 0.0151449443945988 0.0151449443945988
-2753 2707 2708 0.0714770438658631 0.0714770438658631
-2754 2708 2709 0.00822853556213401 0.00822853556213401
-2756 2710 8 0.130042568169854 0.130042568169854
-2757 8 2711 0.118166571537094 0.118166571537094
-2759 2712 2713 0.102388493919056 0.102388493919056
-2760 2713 2416 0.103111259495513 0.103111259495513
-2761 2416 2714 0.100631617654013 0.100631617654013
-2764 2716 2717 0.200655449563851 0.200655449563851
-2765 2717 2718 0.200753725915124 0.200753725915124
-2766 2718 1440 0.196942260224429 0.196942260224429
-2767 1440 2719 0.00947384243402213 0.00947384243402213
-2768 2719 2720 0.190389032049707 0.190389032049707
-2770 2723 2724 0.133138466543617 0.133138466543617
-2771 2724 2725 0.135835722389097 0.135835722389097
-2772 2725 2726 0.133534041022806 0.133534041022806
-2773 2726 2727 0.134234713813183 0.134234713813183
-2774 2727 1681 0.134687505819062 0.134687505819062
-2775 1681 2728 0.137316317225174 0.137316317225174
-2777 2729 2730 0.104120921025978 0.104120921025978
-2778 2730 2731 0.201486044854047 0.201486044854047
-2779 2731 2732 0.409054627036075 0.409054627036075
-2780 2733 2734 0.231399786377778 0.231399786377778
-2781 2734 2735 0.0901704059113055 0.0901704059113055
-2782 2735 2736 0.0825094909725568 0.0825094909725568
-2783 2737 2738 0.200363396709187 0.200363396709187
-2784 2738 2739 0.20121833925615 0.20121833925615
-2785 2739 2740 0.202399438971847 0.202399438971847
-2788 2742 2743 0.404396545451488 0.404396545451488
-2789 2744 1762 0.0647074290459755 0.0647074290459755
-2790 1762 2372 0.0925216625359094 0.0925216625359094
-2791 2372 2745 0.0223137340397398 0.0223137340397398
-2792 2745 2737 0.050045237249892 0.050045237249892
-2794 2746 2747 0.14840065064165 0.14840065064165
-2796 2748 2749 0.200822547172327 0.200822547172327
-2797 2749 2750 0.193145905748916 0.193145905748916
-2821 908 2770 0.128136612557408 0.128136612557408
-2824 2261 2772 0.10049786598023 0.10049786598023
-2825 2772 2773 0.106378037300959 0.106378037300959
-2826 2773 2110 0.093897002068377 0.093897002068377
-2827 2110 2774 0.107389868338328 0.107389868338328
-2828 2774 2775 0.0994873393877801 0.0994873393877801
-2850 2776 2777 0.10879749556538 0.10879749556538
-2855 2804 866 0.20027757395038 0.20027757395038
-2829 2775 2778 1.00147658782101 1.00147658782101
-2830 2779 2780 0.0530172029480301 0.0530172029480301
-2832 2781 2782 0.107966324930259 0.107966324930259
-2833 2782 2783 0.103296913871679 0.103296913871679
-2834 2783 2784 0.105735267915707 0.105735267915707
-2835 2784 2785 0.104367827383757 0.104367827383757
-2836 2785 2786 0.106026097865505 0.106026097865505
-2837 2786 2787 0.104661406473263 0.104661406473263
-2838 2787 2788 0.109120444986171 0.109120444986171
-2842 2790 2791 0.105111335997404 0.105111335997404
-2843 2791 2792 0.100650542913524 0.100650542913524
-2844 2792 2793 0.105228706955749 0.105228706955749
-2845 2793 2794 0.119444969275907 0.119444969275907
-2846 2794 2795 0.0942235633572651 0.0942235633572651
-2847 2795 2084 0.102241906689643 0.102241906689643
-2848 2084 2796 0.105000278025472 0.105000278025472
-2849 2796 2776 0.104992294488636 0.104992294488636
-2851 2777 2799 0.102990536508203 0.102990536508203
-2852 2799 2802 0.104419262818378 0.104419262818378
-3832 3274 3648 0.198107670536066 0.198107670536066
-2853 2802 2803 0.106343009363166 0.106343009363166
-2854 2803 2804 0.0880619154851023 0.0880619154851023
-2856 866 2805 0.0997722055250997 0.0997722055250997
-2857 2805 2806 0.0898296288997372 0.0898296288997372
-2858 2806 2807 0.0154103032800591 0.0154103032800591
-2860 1345 2808 0.0745089191630195 0.0745089191630195
-2862 2809 2810 0.0999390470653334 0.0999390470653334
-2863 2810 2811 0.098203415750831 0.098203415750831
-2864 2811 2812 0.105704456533214 0.105704456533214
-2865 2812 1841 0.178602078382633 0.178602078382633
-2867 2813 2814 0.147059691176011 0.147059691176011
-2869 2815 2816 0.0358929050784097 0.0358929050784097
-2871 2817 2818 0.202436914455554 0.202436914455554
-2872 2818 721 0.208959052889522 0.208959052889522
-2873 721 2819 0.195578398743409 0.195578398743409
-2874 2819 2820 0.132104447079437 0.132104447079437
-2875 2820 2499 0.133495572380704 0.133495572380704
-2877 2821 2823 0.131028201505055 0.131028201505055
-2878 2823 2154 0.134224367729179 0.134224367729179
-2879 2154 2824 0.137197819412826 0.137197819412826
-2881 2825 2828 0.100509300133652 0.100509300133652
-2882 2828 2829 0.098379052864586 0.098379052864586
-2883 2829 1264 0.0995905743898471 0.0995905743898471
-2884 1264 2830 0.0991885382845514 0.0991885382845514
-2885 2830 2831 0.0990153060665791 0.0990153060665791
-2886 2831 2718 0.0991269733313679 0.0991269733313679
-2887 2718 2832 0.100500652429342 0.100500652429342
-2888 2832 2833 0.0102715407543069 0.0102715407543069
-2889 2833 2834 0.0960953974534679 0.0960953974534679
-2890 2834 2835 0.0326867749280955 0.0326867749280955
-2891 2835 2836 0.134256786764763 0.134256786764763
-2892 2836 2837 0.113988792124523 0.113988792124523
-2893 2837 2838 0.0204082374430359 0.0204082374430359
-2895 2839 2840 0.113685974247049 0.113685974247049
-2896 2840 2841 0.132754406259035 0.132754406259035
-2897 2841 2842 0.136852657742897 0.136852657742897
-2899 1793 2843 0.0809702263007341 0.0809702263007341
-2900 2843 2844 0.0969425296921621 0.0969425296921621
-2901 2844 2845 0.413436446480526 0.413436446480526
-2903 2263 2847 0.179984264422638 0.179984264422638
-2904 2847 2848 0.174004040987329 0.174004040987329
-2905 2848 2849 0.194108624427032 0.194108624427032
-2907 2850 1276 0.172413086756907 0.172413086756907
-2909 2853 785 0.245123885631009 0.245123885631009
-2911 2854 2855 0.0854841952170884 0.0854841952170884
-2912 2855 2747 0.0762350203886263 0.0762350203886263
-2913 2747 2856 0.0859704175448271 0.0859704175448271
-2914 2856 2857 0.100779098585589 0.100779098585589
-2915 2857 2858 0.0905252463288938 0.0905252463288938
-2917 2859 2860 0.0227727209766704 0.0227727209766704
-2918 361 1735 0.198105222979832 0.198105222979832
-2919 1735 2861 0.0382126884100893 0.0382126884100893
-2920 148 2862 0.0438716250050412 0.0438716250050412
-2921 1003 2863 0.0520715649387988 0.0520715649387988
-2922 2863 2864 0.0982728809134093 0.0982728809134093
-2923 2864 2865 0.0994946507259965 0.0994946507259965
-3895 3698 3699 0.204838159377623 0.204838159377623
-2924 2865 2869 0.090463384362138 0.090463384362138
-2925 2869 2870 0.0564720828613131 0.0564720828613131
-2926 2870 2871 0.0608640771597173 0.0608640771597173
-2927 2872 2873 0.044011799999607 0.044011799999607
-2928 2873 2088 0.0931496819660856 0.0931496819660856
-2929 2088 2655 0.0960691148224413 0.0960691148224413
-2930 2655 2874 0.0937706080748846 0.0937706080748846
-2931 2874 2875 0.0828791997484075 0.0828791997484075
-2932 2875 2876 0.093218621711434 0.093218621711434
-2933 2876 2877 0.0704167162147941 0.0704167162147941
-2935 2878 2879 0.0887403720940643 0.0887403720940643
-2936 2879 2880 0.0909098673154509 0.0909098673154509
-2937 2880 2881 0.0882058988614067 0.0882058988614067
-2938 2881 2882 0.181777411929199 0.181777411929199
-2940 2883 2884 0.115661337881372 0.115661337881372
-2941 2884 2885 0.14826485880128 0.14826485880128
-2942 2885 2886 0.112251623213379 0.112251623213379
-2943 2886 2887 0.119994591224275 0.119994591224275
-2944 2887 2888 0.178622958928809 0.178622958928809
-2945 2888 2889 0.00412533177852682 0.00412533177852682
-2946 2889 2890 0.00481474032387871 0.00481474032387871
-2947 2890 2893 0.135290874001292 0.135290874001292
-2948 2893 2894 0.137892832771659 0.137892832771659
-2949 2894 817 0.140150092060959 0.140150092060959
-2950 817 2895 0.143808402694827 0.143808402694827
-2951 2895 2896 0.0697081016101773 0.0697081016101773
-2952 2896 2897 0.0168682725384664 0.0168682725384664
-2954 2898 2899 0.139071498957887 0.139071498957887
-2956 2900 2901 0.139727551358826 0.139727551358826
-2957 2901 2902 0.00293554606295758 0.00293554606295758
-2958 2902 2903 0.102721876435386 0.102721876435386
-2959 2903 2904 0.0305452475451112 0.0305452475451112
-2960 2904 2905 0.00503713742922791 0.00503713742922791
-2961 2905 2906 0.0458567885450819 0.0458567885450819
-2962 2906 2907 0.0981295261146626 0.0981295261146626
-2963 2907 628 0.0369055971430695 0.0369055971430695
-2964 628 1143 0.0958611496898419 0.0958611496898419
-2966 2908 2909 0.0463126901024473 0.0463126901024473
-2967 2909 872 0.0318684671228471 0.0318684671228471
-2968 872 2910 0.0711758745978235 0.0711758745978235
-2969 2910 2911 0.067495322638235 0.067495322638235
-2970 2911 2912 0.033747661319103 0.033747661319103
-2971 2912 2913 0.0475024757380027 0.0475024757380027
-2973 2914 2915 0.202578999998173 0.202578999998173
-2975 2916 2917 0.184685764171195 0.184685764171195
-2976 2917 2918 0.00737265767013589 0.00737265767013589
-2978 2919 2920 0.110148820147866 0.110148820147866
-2979 2920 584 0.039258317875865 0.039258317875865
-2980 584 2921 0.228363185041033 0.228363185041033
-2982 2922 1341 0.198962442111046 0.198962442111046
-2983 1341 2923 0.207039061514662 0.207039061514662
-2984 2923 2924 0.201175175238786 0.201175175238786
-2985 2924 2925 0.203376851393596 0.203376851393596
-2986 2925 2926 0.201920207523594 0.201920207523594
-2987 2926 2927 0.200452413161122 0.200452413161122
-2988 2927 776 0.201931296094781 0.201931296094781
-2990 2928 2930 0.209285084837907 0.209285084837907
-2991 2930 2931 0.197960209647655 0.197960209647655
-2992 2931 171 0.402036974102358 0.402036974102358
-2994 2932 2933 0.200508042098485 0.200508042098485
-2995 170 1728 0.257039245710078 0.257039245710078
-2996 1728 2934 0.145411467525923 0.145411467525923
-2999 2935 2936 0.0880513532781809 0.0880513532781809
-3025 2957 2958 0.01030947748559 0.01030947748559
-3000 2936 209 0.228338005511316 0.228338005511316
-3002 2937 2938 0.107611509993879 0.107611509993879
-3005 2940 2941 0.175855452328419 0.175855452328419
-3006 2941 2942 0.174909636552997 0.174909636552997
-3007 2942 2943 0.192197232795451 0.192197232795451
-3009 2944 546 0.0293283601170504 0.0293283601170504
-3010 546 2945 0.155746660532693 0.155746660532693
-3012 1475 2946 0.311303155924368 0.311303155924368
-3013 2946 2947 0.184883982264712 0.184883982264712
-3014 2947 2948 0.224685205653341 0.224685205653341
-3016 2949 2950 0.0888669853746646 0.0888669853746646
-3017 2950 2951 0.114577615588497 0.114577615588497
-3018 1225 2952 0.114132076273042 0.114132076273042
-3019 2952 2161 0.115442153745618 0.115442153745618
-3020 2161 2953 0.105428749590907 0.105428749590907
-3022 2954 2955 0.0114463280554541 0.0114463280554541
-3023 2955 639 0.18619297340356 0.18619297340356
-3024 639 2957 0.0509835810434449 0.0509835810434449
-3026 2958 2959 0.0353738821651235 0.0353738821651235
-3027 2959 2960 0.00284670794487764 0.00284670794487764
-3028 2960 1288 0.104793015683124 0.104793015683124
-3029 1288 2961 0.051496901479137 0.051496901479137
-3030 2961 2962 0.00960868888037157 0.00960868888037157
-3031 2962 2963 0.0208687174266634 0.0208687174266634
-3032 2963 2964 0.0498882614596582 0.0498882614596582
-3033 2964 2965 0.123304259264834 0.123304259264834
-3035 2966 2967 0.00908677871596767 0.00908677871596767
-3036 2967 2968 0.115854235202851 0.115854235202851
-3037 2968 2969 0.00700956571064615 0.00700956571064615
-3038 2969 2970 0.00940368205913038 0.00940368205913038
-3039 2970 2971 0.0666840110355875 0.0666840110355875
-3040 2971 2972 0.0679662165544488 0.0679662165544488
-3041 2972 2973 0.0630976433471776 0.0630976433471776
-3042 2973 2974 0.0491600079555241 0.0491600079555241
-3044 2975 2976 0.0997731403964804 0.0997731403964804
-3045 2976 2977 0.100715566829797 0.100715566829797
-3046 2977 2978 0.0996876914159973 0.0996876914159973
-3047 2978 2979 0.10126058971698 0.10126058971698
-3048 2979 2980 0.103346225532192 0.103346225532192
-3049 2980 2981 0.0983114005972926 0.0983114005972926
-3050 2981 2982 0.09874223460454 0.09874223460454
-3051 2982 2983 0.0510749251490339 0.0510749251490339
-3053 2984 2985 0.0505192363533637 0.0505192363533637
-3054 2985 1120 0.0491942863881514 0.0491942863881514
-3055 1120 2986 0.0517085444587275 0.0517085444587275
-3056 2986 2987 0.0504766444323722 0.0504766444323722
-3057 2987 2988 0.0508471211122413 0.0508471211122413
-3058 2988 2989 0.0482147566017866 0.0482147566017866
-3059 2989 2990 0.0513143127772338 0.0513143127772338
-3060 2990 2991 0.0501432318630803 0.0501432318630803
-3061 2991 2992 0.788648410502006 0.788648410502006
-3062 2993 2994 0.01555628530979 0.01555628530979
-3063 2994 2995 0.10729267423115 0.10729267423115
-13562 2999 2165 0.242533262128423 0.242533262128423
-3067 2998 3000 0.0998948824480635 0.0998948824480635
-3068 3000 3001 0.145910673725247 0.145910673725247
-3069 3001 3002 0.147264770664277 0.147264770664277
-3070 3002 3003 0.145706831644125 0.145706831644125
-3071 3003 3004 0.146381189481243 0.146381189481243
-3073 3006 3007 0.143637545441942 0.143637545441942
-3074 3007 3008 0.14139337588105 0.14139337588105
-3075 3008 3009 0.0340034784472366 0.0340034784472366
-3076 3009 3010 0.117637494210671 0.117637494210671
-3077 3010 3011 0.1483412167568 0.1483412167568
-3078 3011 3012 0.146200597856632 0.146200597856632
-3079 3012 3013 0.146656153847153 0.146656153847153
-3080 3013 3014 0.219897120549826 0.219897120549826
-3081 3014 2686 0.0729664723843293 0.0729664723843293
-3082 2686 3015 0.146055074464899 0.146055074464899
-3083 3015 3016 0.115984680072215 0.115984680072215
-3084 3016 3017 0.0102106792826024 0.0102106792826024
-3085 3017 3018 0.0188093561808277 0.0188093561808277
-3087 3019 3020 0.14624208166964 0.14624208166964
-3088 3020 3021 0.149932974568378 0.149932974568378
-3089 3021 2900 0.114654486829615 0.114654486829615
-3091 3022 3023 0.0936947193853168 0.0936947193853168
-3093 3024 3025 0.0922829109447797 0.0922829109447797
-3095 3026 3027 0.10419715248802 0.10419715248802
-3096 3027 3028 0.108587123231645 0.108587123231645
-3097 3028 3029 0.103455866634876 0.103455866634876
-3099 3030 3031 0.0828114972096423 0.0828114972096423
-3100 3031 3032 0.0151385207198175 0.0151385207198175
-3102 3035 3036 0.131928682141755 0.131928682141755
-3103 3036 3037 0.0286281442546585 0.0286281442546585
-3104 3037 3038 0.0830678583996061 0.0830678583996061
-3105 3038 3039 0.0820487800074757 0.0820487800074757
-3107 3040 3041 0.0592379768525999 0.0592379768525999
-3108 3041 1041 0.101867076922678 0.101867076922678
-3109 1041 3042 0.108431988254042 0.108431988254042
-3110 3042 3043 0.103209130509255 0.103209130509255
-3111 3043 3044 0.103439867243447 0.103439867243447
-3113 3045 3046 0.1080426022678 0.1080426022678
-3114 3046 3047 0.106399445317148 0.106399445317148
-3115 3047 2078 0.104328053424176 0.104328053424176
-3116 2078 2675 0.103849131822114 0.103849131822114
-3117 2675 3048 0.106371798877004 0.106371798877004
-3118 3048 3049 0.1089909908922 0.1089909908922
-3120 2995 3050 0.0829711714500804 0.0829711714500804
-3123 3051 3052 0.0304368475861105 0.0304368475861105
-19556 10441 10561 0.00875730102663828 0.00875730102663828
-3124 3053 3054 0.10469695146486 0.10469695146486
-3125 3054 3026 0.105413327506124 0.105413327506124
-3127 3055 3056 0.0146859459125862 0.0146859459125862
-3128 3056 3057 0.0899179636493607 0.0899179636493607
-3129 3057 3058 0.0968918459632465 0.0968918459632465
-3130 3058 3059 0.0931803123592361 0.0931803123592361
-3131 3059 3060 0.0924628769882567 0.0924628769882567
-3132 3060 2004 0.0909779529022995 0.0909779529022995
-3134 3061 2758 0.0983285272926963 0.0983285272926963
-3135 2758 3062 0.094848132376921 0.094848132376921
-3137 2284 3063 0.10273020958756 0.10273020958756
-3138 3063 3064 0.09684156688728 0.09684156688728
-3139 3064 2139 0.105654196010103 0.105654196010103
-3141 3065 3066 0.101995188106893 0.101995188106893
-4424 4133 950 0.17542265784203 0.17542265784203
-3142 3066 3067 1.00083609181461 1.00083609181461
-3143 3068 3069 0.10392860568863 0.10392860568863
-3144 3069 3070 0.10232907709913 0.10232907709913
-3145 3070 3071 0.103927869583062 0.103927869583062
-3146 3071 3072 0.102097379803977 0.102097379803977
-3147 3072 3073 0.0487909895079958 0.0487909895079958
-3149 1294 3074 0.105333551259412 0.105333551259412
-3150 3074 3075 0.0524798747272766 0.0524798747272766
-3151 3075 3076 0.0475858963921332 0.0475858963921332
-3152 3076 3077 0.00514079080382434 0.00514079080382434
-3154 3078 3079 0.0117186508515134 0.0117186508515134
-3155 3079 3080 0.0860074021370197 0.0860074021370197
-3156 3080 3081 0.0112654570741388 0.0112654570741388
-3157 3081 3082 0.0998426271509478 0.0998426271509478
-3159 3083 3084 0.0978722553449722 0.0978722553449722
-3161 3085 3086 0.0498003240048994 0.0498003240048994
-3162 3086 3087 0.0499820755044021 0.0499820755044021
-3163 3087 1765 0.0500932715547668 0.0500932715547668
-3164 1765 3089 0.0453737460403596 0.0453737460403596
-3165 3089 3090 0.0566344564433548 0.0566344564433548
-3166 3090 3091 0.0479788729039099 0.0479788729039099
-3167 3091 1517 0.0504584819239423 0.0504584819239423
-3168 1517 3092 0.0513918113913408 0.0513918113913408
-3169 3092 3093 0.0524695902697227 0.0524695902697227
-3170 3093 1084 0.0829756278031258 0.0829756278031258
-3171 1084 3094 0.018362425266723 0.018362425266723
-3172 3094 3095 0.100037197959638 0.100037197959638
-3173 3095 3096 0.0986501993185581 0.0986501993185581
-3174 3096 3097 0.100130714805898 0.100130714805898
-3175 3097 2046 0.103528392648025 0.103528392648025
-3176 2046 3098 0.0976518708062817 0.0976518708062817
-3177 3098 3099 0.0995509890492463 0.0995509890492463
-3179 1954 3100 0.060604506910361 0.060604506910361
-3182 3102 3103 0.0990114382918269 0.0990114382918269
-3183 3103 3104 0.100593787088956 0.100593787088956
-3184 3104 3105 0.0983789631442794 0.0983789631442794
-3185 3105 2848 0.0976433646550276 0.0976433646550276
-3186 2848 3106 0.102064870879311 0.102064870879311
-3187 3106 3107 0.10100271733246 0.10100271733246
-3188 3107 3108 0.0995828832367363 0.0995828832367363
-3189 3108 2942 0.101438732689929 0.101438732689929
-3190 2942 3109 0.100378814460195 0.100378814460195
-3191 3109 3110 1.25206634961555 1.25206634961555
-3192 3111 3112 0.015422388825789 0.015422388825789
-3193 3112 3113 0.11412427509118 0.11412427509118
-3194 3113 3114 0.468645573431598 0.468645573431598
-3196 2023 3115 0.177146580591063 0.177146580591063
-3197 3115 3102 0.173943728587952 0.173943728587952
-3198 3102 3116 0.193451028525805 0.193451028525805
-3200 3117 1806 0.211443534426126 0.211443534426126
-3201 1806 3118 0.193022911848757 0.193022911848757
-3203 3119 3120 0.0940041909856305 0.0940041909856305
-3204 3120 3121 0.197561396619787 0.197561396619787
-3206 3122 3123 0.200799900699528 0.200799900699528
-3207 3124 3125 0.200863237154928 0.200863237154928
-3208 3125 3126 0.201874389323119 0.201874389323119
-3210 3127 3128 0.0750470474178356 0.0750470474178356
-3211 3128 3131 0.0761135403806392 0.0761135403806392
-3213 3029 3132 0.132611387982682 0.132611387982682
-3214 3132 3133 0.00539409864485362 0.00539409864485362
-3215 3133 3134 0.139160450695908 0.139160450695908
-3216 3134 1160 0.139291641031025 0.139291641031025
-3217 1160 879 0.139609262878975 0.139609262878975
-3218 879 3135 0.138493325710101 0.138493325710101
-3219 3135 2787 0.134090008076189 0.134090008076189
-3220 2787 3136 0.1321642245327 0.1321642245327
-3221 3136 3137 0.21408080552497 0.21408080552497
-3222 3137 3138 0.144895915790921 0.144895915790921
-3223 3138 3139 0.169628584853264 0.169628584853264
-3226 3141 3142 0.202888440515448 0.202888440515448
-3227 3142 2878 0.162092717607055 0.162092717607055
-3251 3162 2365 0.110303719018863 0.110303719018863
-3254 3164 3165 0.240177393696762 0.240177393696762
-3255 3165 3166 0.102768151984011 0.102768151984011
-3256 3166 3167 0.0509818546092244 0.0509818546092244
-3258 3168 3169 0.0591373244934598 0.0591373244934598
-3259 3169 3170 0.0530870196657507 0.0530870196657507
-3261 3171 3172 0.201914360897617 0.201914360897617
-3262 3172 3173 0.203130900823478 0.203130900823478
-3263 3173 3174 0.201562825315852 0.201562825315852
-3264 3174 3175 0.19958273918251 0.19958273918251
-3265 3175 3177 0.402921101557674 0.402921101557674
-3266 3178 3179 0.0905536808669309 0.0905536808669309
-3267 3179 3180 0.0577627490058349 0.0577627490058349
-3268 3180 3181 0.0505235668696686 0.0505235668696686
-3269 3181 3182 0.065160532538722 0.065160532538722
-3270 3182 3183 0.00793078546182679 0.00793078546182679
-3271 3183 3184 0.0531842364372946 0.0531842364372946
-3273 2386 3186 0.0378622155960126 0.0378622155960126
-3274 3186 3187 0.0069150542380481 0.0069150542380481
-3275 3187 3188 0.0174713630038869 0.0174713630038869
-3277 3189 3190 0.10095397068423 0.10095397068423
-3278 3190 3191 0.102948552858793 0.102948552858793
-3279 3191 3192 0.099117357243018 0.099117357243018
-3280 3192 3193 0.10499121023248 0.10499121023248
-3282 3194 3195 0.0985672231580753 0.0985672231580753
-3283 3195 3196 0.0975023503923766 0.0975023503923766
-16511 8899 8896 0.0458243741253751 0.0458243741253751
-3284 3196 3197 0.0505627463090716 0.0505627463090716
-3285 3197 3198 0.0500221717072617 0.0500221717072617
-3286 3198 3199 0.046867135973938 0.046867135973938
-3287 3199 1768 0.0529832159562647 0.0529832159562647
-3288 1768 3200 0.0470467690925653 0.0470467690925653
-3289 3200 3201 0.0524586560775799 0.0524586560775799
-3290 3201 3202 0.0495946350720587 0.0495946350720587
-3291 3202 1518 0.052984641558086 0.052984641558086
-3292 1518 3203 0.100125608990258 0.100125608990258
-3293 3203 1085 0.0831191573838339 0.0831191573838339
-3294 1085 3204 0.01719627237498 0.01719627237498
-3295 3204 3205 0.100278521536605 0.100278521536605
-3296 3205 3206 0.100159169300764 0.100159169300764
-3297 3206 3207 0.0980766730481921 0.0980766730481921
-3299 2047 3208 0.0998503328239714 0.0998503328239714
-3300 3208 3209 0.0991174142787685 0.0991174142787685
-3301 3209 3210 0.0465862087261248 0.0465862087261248
-3303 3211 3212 0.0483226107842397 0.0483226107842397
-3304 3212 3213 0.0508033572812722 0.0508033572812722
-3305 3213 3214 0.0520095145740976 0.0520095145740976
-3307 3215 3216 0.047636983079693 0.047636983079693
-3308 3216 3217 0.00228390635402469 0.00228390635402469
-3309 3217 3218 0.0492156902021281 0.0492156902021281
-3310 3218 3219 0.105720878983862 0.105720878983862
-3312 3220 3221 0.135734479783406 0.135734479783406
-3313 3221 2519 0.14595602798476 0.14595602798476
-3314 2519 3222 0.126165217374209 0.126165217374209
-3315 3222 1229 0.098841689459618 0.098841689459618
-3316 1229 3223 0.098924974953348 0.098924974953348
-3317 3223 2174 0.100839404349716 0.100839404349716
-3318 2174 3224 0.101432888438354 0.101432888438354
-3319 3224 3225 0.137343472225008 0.137343472225008
-3321 3226 379 0.0754564811292303 0.0754564811292303
-3322 379 63 0.0417835231628563 0.0417835231628563
-3323 63 1255 0.0152981335887719 0.0152981335887719
-3326 3228 3229 0.0836292502069327 0.0836292502069327
-3327 3229 3230 0.0485562677029858 0.0485562677029858
-3330 3232 3233 0.105369806952797 0.105369806952797
-3331 3233 3234 0.0244901910381055 0.0244901910381055
-3332 3235 3236 0.101967463967826 0.101967463967826
-3333 3236 3237 0.10049747789636 0.10049747789636
-3334 3237 3238 0.0983034665163014 0.0983034665163014
-3335 3238 3239 0.103439327677052 0.103439327677052
-3336 3239 715 0.100109252929192 0.100109252929192
-3337 715 3240 0.10857516210103 0.10857516210103
-3338 3240 3241 0.0836693243428755 0.0836693243428755
-3340 1256 2714 0.204938708369458 0.204938708369458
-3341 2714 3242 0.194775016549959 0.194775016549959
-3343 3243 3244 0.104619278832535 0.104619278832535
-3344 3244 3245 0.0999091629456622 0.0999091629456622
-3345 3245 3246 0.0969207243261653 0.0969207243261653
-3346 3246 3247 0.100620613481727 0.100620613481727
-3347 3247 3248 0.051818780315465 0.051818780315465
-3348 3248 3249 0.0493068623564548 0.0493068623564548
-3349 3249 3250 0.102061915203609 0.102061915203609
-3350 3250 3251 0.0474417721331526 0.0474417721331526
-3351 3251 3252 0.0496832213808208 0.0496832213808208
-3352 3252 3253 0.00274646412019378 0.00274646412019378
-3353 3253 3254 0.0454267490135207 0.0454267490135207
-3354 3254 3255 0.00458544852460102 0.00458544852460102
-3355 3255 3256 0.0483268582508211 0.0483268582508211
-3357 3257 3258 0.0459440862493274 0.0459440862493274
-3358 3258 3259 0.236332489020417 0.236332489020417
-3360 3260 2735 0.173472989255867 0.173472989255867
-3362 594 2050 0.105283533842597 0.105283533842597
-3363 2050 3261 0.0509100007310826 0.0509100007310826
-3364 3261 3262 0.0467523465641757 0.0467523465641757
-3365 3262 3263 0.0481309278210478 0.0481309278210478
-3366 3263 3264 0.051732585346973 0.051732585346973
-3367 3264 3265 0.0457622961694799 0.0457622961694799
-3368 3265 3266 0.0530171123380122 0.0530171123380122
-3369 3266 3267 0.0451783444295864 0.0451783444295864
-3370 3267 3268 0.0542978455447466 0.0542978455447466
-3371 3268 3269 0.0466844058034087 0.0466844058034087
-3372 3269 3270 0.050646295110284 0.050646295110284
-3373 3270 3271 0.0484988623690369 0.0484988623690369
-3374 3271 3272 0.0498932625841468 0.0498932625841468
-3375 3272 3273 0.0470944745658083 0.0470944745658083
-3376 3273 3274 0.0579078107783869 0.0579078107783869
-3377 3274 3275 0.151893561253266 0.151893561253266
-3378 3275 3276 0.0516549077274405 0.0516549077274405
-3379 3276 2734 0.0976564411094966 0.0976564411094966
-3380 2734 3277 0.0486100790727351 0.0486100790727351
-3381 3277 3278 0.0497906140365211 0.0497906140365211
-3382 3278 3279 0.0484124404037645 0.0484124404037645
-3383 3279 3280 0.00653599515433254 0.00653599515433254
-3384 3280 3178 0.0418764820732136 0.0418764820732136
-3385 3178 3284 0.0979449587868123 0.0979449587868123
-3386 3284 3285 0.201022039935831 0.201022039935831
-3389 3287 2316 0.156303067302058 0.156303067302058
-20281 10719 10710 0.0549191742699874 0.0549191742699874
-3390 2316 3288 0.10952595107857 0.10952595107857
-3391 3288 3289 0.0403941356128906 0.0403941356128906
-3392 3289 3290 0.0912238346425634 0.0912238346425634
-3393 3290 3291 0.0816082032445177 0.0816082032445177
-3394 3291 3292 0.0169509581328033 0.0169509581328033
-3395 3292 3293 0.0433466637454668 0.0433466637454668
-3396 3293 3294 0.0186582685984772 0.0186582685984772
-3397 3294 3295 0.152140762364393 0.152140762364393
-3403 3299 1325 0.177116632986756 0.177116632986756
-3404 1325 1381 0.178046664647513 0.178046664647513
-3406 1057 3300 0.119136901138604 0.119136901138604
-3408 3301 1581 0.141640668502809 0.141640668502809
-3409 1581 3302 0.308989164663259 0.308989164663259
-3411 3304 3305 0.143837220516125 0.143837220516125
-3412 3305 3306 0.147698693465714 0.147698693465714
-3414 3307 3308 0.146426311775338 0.146426311775338
-3415 3308 3309 0.146463761248984 0.146463761248984
-3416 3309 3310 0.146549783304075 0.146549783304075
-3417 3310 2029 0.145425360285073 0.145425360285073
-3418 2029 3311 0.146713513284486 0.146713513284486
-3419 3311 634 0.143866210964815 0.143866210964815
-3420 634 3312 0.147112545494359 0.147112545494359
-3421 3312 3313 0.145900102395242 0.145900102395242
-3422 3313 2321 0.147128656269274 0.147128656269274
-3424 3314 3315 0.0970240945457023 0.0970240945457023
-3425 3315 2190 0.185651929243496 0.185651929243496
-3427 737 1557 0.13315596414531 0.13315596414531
-3429 3316 3317 0.0821429797668101 0.0821429797668101
-3434 3321 3322 0.579886710164932 0.579886710164932
-3436 3323 3324 0.139196729808835 0.139196729808835
-3438 3325 3326 0.13668278082176 0.13668278082176
-3439 3326 3045 0.137860640994287 0.137860640994287
-3440 3045 3327 0.13778919161955 0.13778919161955
-3441 3327 3328 0.00447003605120276 0.00447003605120276
-3442 3328 3329 0.0233867925544547 0.0233867925544547
-3443 3329 3330 0.116012449407873 0.116012449407873
-3444 3330 1166 0.139882774592672 0.139882774592672
-3445 1166 886 0.137525679366119 0.137525679366119
-3446 886 3332 0.139657446365043 0.139657446365043
-3447 3332 2793 0.133361291612613 0.133361291612613
-3448 2793 3333 0.132228102569741 0.132228102569741
-3450 3334 3335 0.0903059057199572 0.0903059057199572
-3451 3335 3336 0.154418186694308 0.154418186694308
-3452 3336 3337 0.192225493046604 0.192225493046604
-3453 3337 3338 0.174660133594583 0.174660133594583
-3454 3338 3339 0.202477883587996 0.202477883587996
-3455 3339 3340 0.0759856229646665 0.0759856229646665
-3456 3340 3341 0.00965813264254578 0.00965813264254578
-3458 3342 1191 0.166878049186437 0.166878049186437
-3459 1191 3343 0.0216063183857929 0.0216063183857929
-3460 3343 3344 0.200920604325059 0.200920604325059
-3462 2346 3345 0.174959253236807 0.174959253236807
-3463 3345 1535 0.0463919707335885 0.0463919707335885
-3465 3346 3347 0.27909963341584 0.27909963341584
-3466 3347 740 0.112084486383373 0.112084486383373
-3467 740 1560 0.139918597194563 0.139918597194563
-3468 1560 3348 0.140278682022104 0.140278682022104
-3469 3348 3349 0.121438604958881 0.121438604958881
-3471 3350 3351 0.173966017570494 0.173966017570494
-3472 3351 3352 0.16543284170321 0.16543284170321
-3474 3353 3354 0.201189633952299 0.201189633952299
-3477 3356 3357 0.174637614655306 0.174637614655306
-3479 2467 3359 0.203720276949683 0.203720276949683
-3480 3359 3360 0.200874146006411 0.200874146006411
-3481 3360 795 0.199720493083652 0.199720493083652
-3482 795 3361 0.203163577363555 0.203163577363555
-3484 3362 3363 0.203261629260278 0.203261629260278
-3485 3363 3061 0.206912153397241 0.206912153397241
-3486 3061 3364 0.186005329793712 0.186005329793712
-3488 3365 1140 0.135699508009882 0.135699508009882
-3490 907 3366 0.12816779719188 0.12816779719188
-3492 3367 1297 0.200952363448705 0.200952363448705
-3494 3368 3369 0.101405416836813 0.101405416836813
-3495 3369 3370 0.0983850243457341 0.0983850243457341
-3497 3371 3372 0.0654246270475212 0.0654246270475212
-3498 3372 2939 0.0903071880553539 0.0903071880553539
-3499 2939 3373 0.0855248234583031 0.0855248234583031
-3500 3373 59 0.083918142781954 0.083918142781954
-3502 3374 3375 0.253631602277532 0.253631602277532
-3503 3376 3377 0.201161683466984 0.201161683466984
-3505 3378 623 0.0117822953093903 0.0117822953093903
-3506 623 3379 0.132533255410588 0.132533255410588
-3507 3379 3380 0.0779035335014782 0.0779035335014782
-3508 3380 3381 0.206545256567466 0.206545256567466
-20694 10906 10909 0.0421787313564029 0.0421787313564029
-3509 3381 3382 0.13283549460514 0.13283549460514
-3510 3382 3383 0.135569425081515 0.135569425081515
-3511 3383 3384 0.136156970349478 0.136156970349478
-3512 3384 3385 0.132775661568888 0.132775661568888
-3514 2584 3386 0.177011208890761 0.177011208890761
-3515 3386 3387 0.0885846426355864 0.0885846426355864
-3518 3389 3390 0.176205550995696 0.176205550995696
-3519 3390 3391 0.169210992899206 0.169210992899206
-3520 3391 3392 0.0099077669914251 0.0099077669914251
-3521 3392 1849 0.175456016508954 0.175456016508954
-3522 1849 2583 0.178501996899051 0.178501996899051
-3524 600 3393 0.2153977841733 0.2153977841733
-3526 3394 3395 0.118920951518272 0.118920951518272
-3527 3395 3396 0.142989811640976 0.142989811640976
-3528 3396 3397 0.262177718796624 0.262177718796624
-3530 14 3398 0.133564321671034 0.133564321671034
-3531 3398 3399 0.133563180552006 0.133563180552006
-3532 3399 3400 0.135746766447532 0.135746766447532
-3533 3400 3401 0.133513247236878 0.133513247236878
-3534 3401 3402 0.0998328095575455 0.0998328095575455
-3535 3402 3403 0.0352154332682272 0.0352154332682272
-3536 3403 2405 0.0667725534497617 0.0667725534497617
-3537 2405 3404 0.0682403264820305 0.0682403264820305
-3538 3404 3405 0.033013773721009 0.033013773721009
-3539 3405 3409 0.0499933274562477 0.0499933274562477
-3540 3409 3410 0.0543299225353451 0.0543299225353451
-3541 3410 1767 0.0526619512572465 0.0526619512572465
-3542 1767 3411 0.150417295173728 0.150417295173728
-3543 3411 2979 0.204011051874628 0.204011051874628
-3544 2979 656 0.0515792906446319 0.0515792906446319
-3546 1887 591 0.0491592770696459 0.0491592770696459
-3547 591 3412 0.0481379602388448 0.0481379602388448
-3548 3412 3413 0.102266489872996 0.102266489872996
-3549 3413 1888 0.0486842125387167 0.0486842125387167
-3550 1888 3414 0.0510943840977224 0.0510943840977224
-3551 3414 3415 0.00919583632372114 0.00919583632372114
-3552 3415 3416 0.0353489043837471 0.0353489043837471
-17077 3568 8074 0.699339640197117 0.699339640197117
-3553 3416 3417 0.050093361124945 0.050093361124945
-3554 3417 3418 0.0498820440925909 0.0498820440925909
-3555 3418 3419 0.0498984530952944 0.0498984530952944
-3556 3419 3420 0.00880663819045291 0.00880663819045291
-3557 3420 3421 0.0410819827191675 0.0410819827191675
-3558 3421 3422 0.0491592770696459 0.0491592770696459
-3559 3422 3423 0.0205377029518591 0.0205377029518591
-3560 3423 3424 0.02549703249469 0.02549703249469
-3562 3425 3425 0.000442266584977921 0.000442266584977921
-3563 3425 3426 0.0816315051221547 0.0816315051221547
-3565 3427 1664 0.0502947464100412 0.0502947464100412
-3567 1683 3428 0.020460323508623 0.020460323508623
-3568 3428 3429 0.0515955226949506 0.0515955226949506
-3569 3429 3430 0.133978887334031 0.133978887334031
-3570 3430 2427 0.13659869274501 0.13659869274501
-3571 2427 2428 0.063830021941611 0.063830021941611
-3572 2428 3231 0.0696897365044123 0.0696897365044123
-3573 3231 3431 0.132766742414187 0.132766742414187
-3574 3431 3432 0.106360486773292 0.106360486773292
-3575 3432 3433 0.0970117847237812 0.0970117847237812
-3576 3433 3434 0.1971376871667 0.1971376871667
-19819 5606 10648 0.0581167522759965 0.0581167522759965
-3577 3434 3435 0.133491532527273 0.133491532527273
-3582 2842 3438 0.0923852774741301 0.0923852774741301
-3584 1421 317 0.102691144252484 0.102691144252484
-3585 317 513 0.0772222660891488 0.0772222660891488
-3586 513 3439 0.0612593596381532 0.0612593596381532
-3587 3439 3440 0.148872782400453 0.148872782400453
-3588 3440 2540 0.197920167618774 0.197920167618774
-3589 2540 3441 0.415850973508269 0.415850973508269
-3590 3442 699 0.201963508155417 0.201963508155417
-3591 699 3443 0.200352700158165 0.200352700158165
-3593 3444 3445 0.0185806742090463 0.0185806742090463
-20212 5504 7078 0.147322900830237 0.147322900830237
-20213 7078 2034 0.146401533431931 0.146401533431931
-20214 2034 5323 0.145002332578884 0.145002332578884
-20215 5323 632 0.146882687938452 0.146882687938452
-4488 138 4177 0.203369481928684 0.203369481928684
-4489 4177 1741 0.0411375852444616 0.0411375852444616
-4490 1741 4178 0.159371364409943 0.159371364409943
-4492 4179 4180 0.471114595558298 0.471114595558298
-4493 4180 4181 0.219268705400549 0.219268705400549
-4495 4182 4183 0.0994268923770179 0.0994268923770179
-4496 4183 1296 0.100075433980265 0.100075433980265
-4497 1296 1369 0.0964029757899856 0.0964029757899856
-5794 5116 3795 0.199284062960758 0.199284062960758
-18557 318 10316 0.0220547227626022 0.0220547227626022
-4499 4184 4185 0.301634217878433 0.301634217878433
-4501 2809 3744 0.0998445716696615 0.0998445716696615
-4502 3744 4186 0.10131230641957 0.10131230641957
-4504 4187 4188 0.132156563746112 0.132156563746112
-4505 4188 4189 0.132402395077485 0.132402395077485
-4506 4189 4190 0.137552756241722 0.137552756241722
-4507 4190 4191 0.13379771872617 0.13379771872617
-4508 4191 1671 0.132214775902914 0.132214775902914
-4509 1671 4192 0.137147368544834 0.137147368544834
-4510 4192 2452 0.138219895716206 0.138219895716206
-4511 2452 3221 0.134932977312539 0.134932977312539
-4512 3221 4193 0.133628518122145 0.133628518122145
-4515 4195 554 0.154583323244677 0.154583323244677
-4516 554 4196 0.0224725093154139 0.0224725093154139
-4517 4083 4197 0.170590775930264 0.170590775930264
-4518 4197 3764 0.0397497113610314 0.0397497113610314
-4520 2820 1411 0.135923564862653 0.135923564862653
-4521 1411 1351 0.125050095081124 0.125050095081124
-4523 4198 4199 0.454148647656551 0.454148647656551
-4525 4200 4201 0.133477223659273 0.133477223659273
-4526 4201 4202 0.132617384077965 0.132617384077965
-4527 4202 4203 0.134214836424706 0.134214836424706
-4531 4206 1274 0.135021280032386 0.135021280032386
-4533 4207 4208 0.280988389053987 0.280988389053987
-4534 4209 4210 0.209285084830873 0.209285084830873
-4535 4210 4211 0.203065667561202 0.203065667561202
-4537 4212 3742 0.11682398880887 0.11682398880887
-4538 3742 4213 0.111567725645095 0.111567725645095
-4539 4213 1339 0.201798845648163 0.201798845648163
-4541 4214 4215 0.203408625976642 0.203408625976642
-4542 4215 4216 0.204114710404745 0.204114710404745
-4543 4216 4217 0.199718562750948 0.199718562750948
-4544 4217 4218 0.198271148516705 0.198271148516705
-4545 4218 771 0.17255385564489 0.17255385564489
-4547 2307 165 0.313487377331004 0.313487377331004
-4549 4219 4220 0.186213228977795 0.186213228977795
-4551 754 1537 0.148966155582635 0.148966155582635
-4553 4221 4222 0.161148121345995 0.161148121345995
-4554 4222 4223 0.216135114601666 0.216135114601666
-4555 4223 2863 0.186375265274556 0.186375265274556
-4556 2863 4224 0.202043234198664 0.202043234198664
-4558 2306 163 0.315813218507964 0.315813218507964
-4560 2936 4225 0.221837398274975 0.221837398274975
-4561 4226 4227 0.032037204481033 0.032037204481033
-4562 4227 3117 0.0749583948430369 0.0749583948430369
-4563 3117 4228 0.116878015161696 0.116878015161696
-4564 4228 4229 0.198835732908948 0.198835732908948
-4565 4229 3631 0.67836534857008 0.67836534857008
-4567 4230 4231 0.0278521738101303 0.0278521738101303
-4568 4231 3626 0.0483370034898742 0.0483370034898742
-4569 3626 4232 0.0510217447847317 0.0510217447847317
-4570 4232 4233 0.0469996469262497 0.0469996469262497
-4571 4233 4234 0.00322569080192639 0.00322569080192639
-4572 4234 4235 0.0476498478152495 0.0476498478152495
-4573 4235 4236 0.00275575991011001 0.00275575991011001
-4574 4236 4237 0.0466374525425622 0.0466374525425622
-4575 4237 4176 0.0490297893404984 0.0490297893404984
-4577 1777 4238 0.0499406466420926 0.0499406466420926
-4578 4238 4239 0.0481565861804565 0.0481565861804565
-4579 4239 4241 0.0519465642125291 0.0519465642125291
-4580 4241 1525 0.0497346926389818 0.0497346926389818
-4581 1525 4242 0.0484856348902157 0.0484856348902157
-4582 4242 4243 0.0507187078501555 0.0507187078501555
-4584 4244 4245 0.0527177379947323 0.0527177379947323
-4585 4245 4246 0.0464286276535365 0.0464286276535365
-4586 4246 4247 0.0517965186978674 0.0517965186978674
-4587 4247 4248 0.0444043495278385 0.0444043495278385
-4588 4248 569 0.0503939700372948 0.0503939700372948
-4589 569 4249 0.0487604458581461 0.0487604458581461
-4590 4249 4250 0.049686610105401 0.049686610105401
-4591 4250 3757 0.0516485422129312 0.0516485422129312
-4593 233 4251 0.0506501019029544 0.0506501019029544
-4594 4251 4252 0.049085285550805 0.049085285550805
-4595 4252 4253 0.0509968613887819 0.0509968613887819
-4596 4253 4254 0.0502265448038836 0.0502265448038836
-4597 4254 4255 0.0465382189133341 0.0465382189133341
-4598 4255 4256 0.0510900830663337 0.0510900830663337
-4599 4256 4257 0.0497787434592631 0.0497787434592631
-4600 4257 3481 0.048623750791878 0.048623750791878
-4601 3481 4258 0.0500598342416855 0.0500598342416855
-4602 4258 4259 0.0490673464291656 0.0490673464291656
-4603 4259 4260 0.0504371465498466 0.0504371465498466
-4604 4260 3695 0.0479901081376225 0.0479901081376225
-4606 4261 4262 0.0501538740654185 0.0501538740654185
-4607 4262 4263 0.0491706548036751 0.0491706548036751
-4608 4263 4264 0.0565833994828839 0.0565833994828839
-4610 277 4265 0.0528934097089145 0.0528934097089145
-4611 4265 4266 0.0968160140004115 0.0968160140004115
-20627 10752 10756 0.0716547469239426 0.0716547469239426
-4612 4266 4267 0.0968245593658874 0.0968245593658874
-4613 4267 973 0.0982940228399724 0.0982940228399724
-4614 973 4268 0.0961120665100732 0.0961120665100732
-4615 4268 3151 0.0982830823377853 0.0982830823377853
-4616 3151 4269 0.0956500899819903 0.0956500899819903
-4617 4269 4270 0.0774758788411222 0.0774758788411222
-4619 4271 3870 0.115440404669678 0.115440404669678
-4620 3870 839 0.0968819352907846 0.0968819352907846
-4621 839 4272 0.0909531666656291 0.0909531666656291
-4623 3911 4273 0.0389706485750465 0.0389706485750465
-4624 369 4274 0.037543890411303 0.037543890411303
-4625 4274 4275 0.0617087098520115 0.0617087098520115
-4629 2912 4277 0.0342245606725147 0.0342245606725147
-4630 4277 4278 0.104948893572031 0.104948893572031
-4631 4278 3313 0.105285822276279 0.105285822276279
-4632 3313 4279 0.10593807567588 0.10593807567588
-4634 1347 1613 0.100174688565551 0.100174688565551
-4635 1613 4280 0.104997472753206 0.104997472753206
-4665 4282 4283 0.0977314379471645 0.0977314379471645
-4639 4284 4285 0.190476396365953 0.190476396365953
-4640 4285 4286 0.254383171783508 0.254383171783508
-4642 4287 1279 0.116253581720056 0.116253581720056
-4643 1279 4288 0.133001385838575 0.133001385838575
-4644 4288 4289 0.132041969489344 0.132041969489344
-4645 4289 4290 0.131385678442372 0.131385678442372
-4647 3405 4291 0.101549832168715 0.101549832168715
-4648 4291 4292 0.100523519517599 0.100523519517599
-4649 4292 4293 0.100138462817161 0.100138462817161
-5953 5195 5227 0.170006104257124 0.170006104257124
-4650 4293 4294 0.099847555472709 0.099847555472709
-4651 4294 4295 0.0503614009997415 0.0503614009997415
-4652 4295 1117 0.0494296215921 0.0494296215921
-4653 1117 4296 0.050087846881447 0.050087846881447
-4654 4296 4297 0.0495578429804187 0.0495578429804187
-4655 4297 4298 0.0515578068709943 0.0515578068709943
-20458 10785 10812 0.0256322806680483 0.0256322806680483
-4656 4298 4299 0.00303478875120781 0.00303478875120781
-4659 4300 1508 0.0639307257992365 0.0639307257992365
-4660 1508 179 0.201223720751325 0.201223720751325
-4661 179 1707 0.203441168484602 0.203441168484602
-4663 4301 4302 0.143365965722663 0.143365965722663
-4686 4303 4304 0.0764005624211503 0.0764005624211503
-4664 4302 4305 2.47136733106287 2.47136733106287
-17126 4306 4307 0.198891077653185 0.198891077653185
-17128 4308 4309 0.137004722426324 0.137004722426324
-4666 4283 4310 0.00807297378678342 0.00807297378678342
-4667 4310 4311 0.088125570928718 0.088125570928718
-4668 4311 4312 0.0140203745468903 0.0140203745468903
-19629 10518 10593 0.0691965251351115 0.0691965251351115
-4670 4313 4314 0.114544256923558 0.114544256923558
-4671 4314 4315 0.197539157423005 0.197539157423005
-4672 4315 4035 0.10133193665102 0.10133193665102
-4675 3389 4317 0.176922247784819 0.176922247784819
-4676 4317 1313 0.17698917639034 0.17698917639034
-4677 1313 4318 0.2429613537943 0.2429613537943
-4678 4318 4319 0.0830631503019858 0.0830631503019858
-4679 4319 4320 0.0977203133854136 0.0977203133854136
-4680 4320 4321 0.113818121601187 0.113818121601187
-4681 4321 4322 0.0984100223094627 0.0984100223094627
-4683 4323 4324 0.0484810817232728 0.0484810817232728
-4684 4324 4325 0.0969202903062125 0.0969202903062125
-4685 4325 4303 0.026431034063363 0.026431034063363
-4687 4304 4326 0.107959479077584 0.107959479077584
-4689 4302 1574 0.191677995814021 0.191677995814021
-4691 3672 4328 0.125428790986072 0.125428790986072
-4692 4328 4329 0.0951720176425212 0.0951720176425212
-4693 4329 4330 0.139038263486678 0.139038263486678
-4694 4330 4331 0.139714401472726 0.139714401472726
-4700 4334 4335 0.200429884058467 0.200429884058467
-4702 2368 4336 0.0171503416673458 0.0171503416673458
-4704 2899 4337 0.105099867009157 0.105099867009157
-4705 4337 4338 0.106056680315678 0.106056680315678
-4706 4338 4339 0.104589847143113 0.104589847143113
-4707 4339 4340 0.370832351150224 0.370832351150224
-4708 4340 4341 0.0529480373416704 0.0529480373416704
-4709 4341 3902 0.107541125657943 0.107541125657943
-4710 3902 1039 0.104784630542914 0.104784630542914
-4711 1039 4342 0.104777071004161 0.104777071004161
-4712 4342 4343 0.105248493254523 0.105248493254523
-4713 4343 4344 0.101108879740712 0.101108879740712
-4714 4344 3325 0.105024412220906 0.105024412220906
-4715 3325 4345 0.102246237774905 0.102246237774905
-4716 4345 4346 0.102726745739932 0.102726745739932
-4717 4346 2076 0.108443527267173 0.108443527267173
-4718 2076 2673 0.108454042008862 0.108454042008862
-6026 4668 5275 0.106680903376796 0.106680903376796
-20495 10837 10818 0.00314569094185422 0.00314569094185422
-4719 2673 4123 0.102664740305431 0.102664740305431
-4720 4123 4347 0.110043125382133 0.110043125382133
-4721 4347 4348 0.0925868711229396 0.0925868711229396
-4722 4348 4349 0.101256639304288 0.101256639304288
-4723 4349 3471 0.100333218908324 0.100333218908324
-4724 3471 4350 0.101033713236321 0.101033713236321
-4726 850 4351 0.101364060095961 0.101364060095961
-4727 4351 4352 0.0951618291875102 0.0951618291875102
-4728 4352 4353 0.0166431794757682 0.0166431794757682
-4729 4353 4354 0.0900251519018866 0.0900251519018866
-4730 4354 4355 0.0948464364966571 0.0948464364966571
-4731 4355 4356 0.0929916889983271 0.0929916889983271
-4732 4356 4357 0.0946584559856625 0.0946584559856625
-4733 4357 2002 0.0939147825318954 0.0939147825318954
-4734 2002 3362 0.0961201849767339 0.0961201849767339
-4735 3362 2756 0.0936202724465644 0.0936202724465644
-4736 2756 4358 0.0928604520153806 0.0928604520153806
-4738 4359 3874 0.0985792493705747 0.0985792493705747
-4740 4360 4361 0.589746493190754 0.589746493190754
-4742 501 1385 0.0995647502781281 0.0995647502781281
-4745 4363 4364 0.205829363021429 0.205829363021429
-4746 4364 4365 0.0921122756854079 0.0921122756854079
-4747 4365 4366 0.00988128080256074 0.00988128080256074
-4748 4366 4367 0.0897681081567516 0.0897681081567516
-4749 4367 4368 0.098598628932225 0.098598628932225
-4750 4368 4369 0.0959412440063823 0.0959412440063823
-4751 4369 4370 0.102131783313602 0.102131783313602
-4752 4370 783 0.172155062898013 0.172155062898013
-4753 783 4373 0.095162556755669 0.095162556755669
-4754 4373 4374 0.0961947364240104 0.0961947364240104
-4755 4374 2746 0.0976874440589729 0.0976874440589729
-4756 2746 4375 0.105035684135392 0.105035684135392
-4757 4375 4376 0.0939930714928361 0.0939930714928361
-4758 4376 4031 0.0955624767971731 0.0955624767971731
-4759 4031 4377 0.0560443290529964 0.0560443290529964
-4760 4377 1489 0.204591889958277 0.204591889958277
-4762 145 1731 0.201807709171719 0.201807709171719
-4763 1731 360 0.203461803126836 0.203461803126836
-4767 2902 2038 0.0702037411311871 0.0702037411311871
-4769 4380 4381 0.147155318321419 0.147155318321419
-4770 4381 4382 0.144957308053315 0.144957308053315
-4771 4382 4383 0.149312485085308 0.149312485085308
-4774 2688 4385 0.0765539017627299 0.0765539017627299
-4775 4385 4386 0.0705753548513159 0.0705753548513159
-4776 4386 4387 0.146933743759007 0.146933743759007
-4777 4387 4388 0.145923980731529 0.145923980731529
-4778 4388 4389 0.144339759907671 0.144339759907671
-4779 4389 4390 0.150103166473839 0.150103166473839
-4780 4390 4391 0.137983810664432 0.137983810664432
-4781 4391 4392 0.0104056356944031 0.0104056356944031
-4782 4392 4393 0.140241416108271 0.140241416108271
-4783 4393 4394 0.1481833156111 0.1481833156111
-4784 4394 4395 0.146837535132845 0.146837535132845
-4785 4395 4396 0.147176845167591 0.147176845167591
-4786 4396 4397 0.145625871999305 0.145625871999305
-4788 1072 4398 0.0934237929296376 0.0934237929296376
-4790 4399 4400 0.1229191337931 0.1229191337931
-4791 4400 4401 0.117696624021516 0.117696624021516
-4792 4401 3916 0.0730141443209756 0.0730141443209756
-4794 4402 4403 3.26030129970045 3.26030129970045
-4795 4403 1705 0.202698536609182 0.202698536609182
-4796 1705 176 0.202718600973581 0.202718600973581
-4797 176 1503 0.201219684641614 0.201219684641614
-4798 1503 4404 0.202286968554481 0.202286968554481
-4799 4404 4405 0.200141278145387 0.200141278145387
-4800 4405 4406 0.0308542467827185 0.0308542467827185
-4801 4406 4407 0.168200323230532 0.168200323230532
-4802 4407 4408 0.11307645922142 0.11307645922142
-4803 4408 4409 0.0961947310408444 0.0961947310408444
-4804 4409 4410 0.0983990775592717 0.0983990775592717
-4806 4411 4413 0.099863884884034 0.099863884884034
-4809 4415 4416 0.102810116828889 0.102810116828889
-4810 4416 4417 0.0991628298509216 0.0991628298509216
-4811 4417 4418 0.0969872745595907 0.0969872745595907
-4812 4418 4419 0.0998556913489604 0.0998556913489604
-4813 4419 4420 0.0958355207238061 0.0958355207238061
-4814 4420 1307 0.243760388907656 0.243760388907656
-4815 1307 4421 0.179135026824832 0.179135026824832
-4818 4422 477 0.0591204183570981 0.0591204183570981
-4819 477 486 0.338636165035717 0.338636165035717
-4820 486 320 0.186794052108965 0.186794052108965
-4821 320 324 0.464671835959624 0.464671835959624
-4822 324 531 0.0559979023034973 0.0559979023034973
-4823 531 534 0.263162604733165 0.263162604733165
-4825 475 530 0.435551136576821 0.435551136576821
-4826 530 393 0.115152140819887 0.115152140819887
-4827 393 4423 0.203655322253385 0.203655322253385
-4828 4423 4424 0.538171924126244 0.538171924126244
-4829 4424 4426 0.419488421877639 0.419488421877639
-4830 4426 4427 0.0323139283448777 0.0323139283448777
-4833 4428 4429 0.198930926845217 0.198930926845217
-4837 4432 4433 0.200460087837485 0.200460087837485
-4839 2920 3260 0.28373274915572 0.28373274915572
-4842 4436 726 0.0998645775500999 0.0998645775500999
-4843 726 52 0.170560718436498 0.170560718436498
-4844 52 4437 0.100090869280248 0.100090869280248
-4845 4437 3658 0.0591716781283333 0.0591716781283333
-4846 3658 4438 0.103033016475492 0.103033016475492
-4847 4438 4439 0.00533542340358722 0.00533542340358722
-4848 4439 3530 0.0426683766285225 0.0426683766285225
-4850 4440 1490 0.0653862418347059 0.0653862418347059
-4851 1490 146 0.199762763358791 0.199762763358791
-4853 1733 4441 0.200262923415945 0.200262923415945
-4855 3554 4442 0.0495302719350299 0.0495302719350299
-4856 4442 4443 0.0498850541236187 0.0498850541236187
-4857 4443 4444 0.0512856921549244 0.0512856921549244
-4858 4444 3019 0.0117591853989501 0.0117591853989501
-4860 4445 4382 0.0530835076360593 0.0530835076360593
-4861 4382 4446 0.0528074946120117 0.0528074946120117
-4863 4447 4448 0.00600839331926655 0.00600839331926655
-4865 4449 4450 0.0531891993832321 0.0531891993832321
-4866 4450 4451 0.0546720224408421 0.0546720224408421
-4867 4451 4452 0.0492877204975977 0.0492877204975977
-4868 4452 4453 0.0555740263590881 0.0555740263590881
-4869 4453 4454 0.0508522899950145 0.0508522899950145
-4870 4454 4455 0.0539540438907939 0.0539540438907939
-4871 4455 4456 0.05278127500741 0.05278127500741
-4872 4456 4457 0.0520682148022883 0.0520682148022883
-4873 4457 4458 0.0535945839553328 0.0535945839553328
-4874 4458 3308 0.105299206866662 0.105299206866662
-4875 3308 4459 0.0532887340145185 0.0532887340145185
-4876 4459 4460 0.0519293867850164 0.0519293867850164
-4878 2911 4461 0.104626210772024 0.104626210772024
-4879 4461 4462 0.107626289516013 0.107626289516013
-4880 4462 4463 0.104079175744358 0.104079175744358
-4881 4463 4464 0.104771521557699 0.104771521557699
-4882 4464 4465 0.105968126634263 0.105968126634263
-6192 5399 5400 0.276164012064383 0.276164012064383
-4883 4465 4466 0.105797186557688 0.105797186557688
-4884 4466 3135 0.104882643737148 0.104882643737148
-4885 3135 3907 0.109352834062615 0.109352834062615
-4886 3907 1046 0.105412573797977 0.105412573797977
-4887 1046 4467 0.052770391738213 0.052770391738213
-4888 4467 4468 0.0520438840305316 0.0520438840305316
-4889 4468 4469 0.10568608900916 0.10568608900916
-4890 4469 4470 0.101335564568208 0.101335564568208
-4891 4470 3332 0.103121923835041 0.103121923835041
-4892 3332 4471 0.106386988921342 0.106386988921342
-4893 4471 4472 0.0168550696022494 0.0168550696022494
-4894 4472 4473 0.0917114246562582 0.0917114246562582
-4895 4473 2083 0.101916806851718 0.101916806851718
-4896 2083 4474 0.104993787286419 0.104993787286419
-4897 4474 4129 0.105139069056382 0.105139069056382
-4898 4129 4475 0.108754567624091 0.108754567624091
-4899 4475 4476 0.10144670106953 0.10144670106953
-4900 4476 4477 0.106139118962841 0.106139118962841
-4901 4477 3446 0.105344236005182 0.105344236005182
-4903 4478 4479 0.0124618097268169 0.0124618097268169
-4904 4479 4480 0.085822453683645 0.085822453683645
-4905 4480 3886 0.0198123941785865 0.0198123941785865
-4907 865 4481 0.0967884909448593 0.0967884909448593
-4909 345 4482 0.111183183932549 0.111183183932549
-4910 4483 1892 0.0285476317873184 0.0285476317873184
-4912 4360 4484 0.465117334225162 0.465117334225162
-4913 4484 4485 0.0326010116755978 0.0326010116755978
-4915 4486 4487 0.175931100170174 0.175931100170174
-4916 4487 4489 0.100342363380826 0.100342363380826
-4917 4489 4490 0.161656025882071 0.161656025882071
-4918 4490 4491 0.0905242566324277 0.0905242566324277
-4919 4491 1950 0.169005169872083 0.169005169872083
-4920 1950 4492 0.126063150124326 0.126063150124326
-4924 4081 3762 0.180617937803326 0.180617937803326
-4926 2559 4495 0.0875396307338273 0.0875396307338273
-4927 4495 4496 0.0902282586364627 0.0902282586364627
-4928 4496 4497 0.0878475091612825 0.0878475091612825
-4929 4497 4498 0.266301743580547 0.266301743580547
-4930 180 1708 0.203431976552675 0.203431976552675
-4931 1708 4499 0.201230804203475 0.201230804203475
-4932 4499 1575 0.27729796539772 0.27729796539772
-4933 1575 4500 0.182259795470885 0.182259795470885
-4934 4501 4502 0.199005560216138 0.199005560216138
-4935 4502 4503 0.153202263597584 0.153202263597584
-4937 4504 4505 0.176923776962641 0.176923776962641
-4938 4505 1315 0.176127860687443 0.176127860687443
-4939 1315 1371 0.176782045374234 0.176782045374234
-4940 1371 4506 0.0626491861453163 0.0626491861453163
-4941 4506 4507 0.0851767549198192 0.0851767549198192
-4943 3035 4508 0.210570172682267 0.210570172682267
-4945 54 4510 0.19332295953062 0.19332295953062
-4946 4510 3640 0.0466160975278989 0.0466160975278989
-4948 4511 3531 0.0618894465423491 0.0618894465423491
-4949 3531 4512 0.0905408166059636 0.0905408166059636
-4951 3926 707 0.0755598922064861 0.0755598922064861
-4952 707 4513 0.0978688769552162 0.0978688769552162
-4953 4513 4514 0.0992771410926943 0.0992771410926943
-4954 4514 4188 0.135836888761709 0.135836888761709
-4955 4188 2514 0.135033448601963 0.135033448601963
-4956 2514 4515 0.13515296788921 0.13515296788921
-4957 4515 4516 0.136409392488761 0.136409392488761
-4959 4517 4518 0.0356088442137805 0.0356088442137805
-4960 4518 4519 0.0503802448307333 0.0503802448307333
-4961 4519 4520 0.127581150438839 0.127581150438839
-4962 4520 4521 0.132742519290442 0.132742519290442
-4963 4521 4522 0.13263462094456 0.13263462094456
-4964 4522 1243 0.132622916068163 0.132622916068163
-4965 1243 4523 0.132744954601011 0.132744954601011
-4966 4523 2724 0.131940306625131 0.131940306625131
-4967 2724 4524 0.125887507119952 0.125887507119952
-4968 4524 4525 0.0073166618478819 0.0073166618478819
-4970 4526 4527 0.188224997765616 0.188224997765616
-4971 4527 3419 0.20066865963842 0.20066865963842
-4973 4528 4529 0.132643815391647 0.132643815391647
-4974 4529 4288 0.134447795927953 0.134447795927953
-4975 4288 4530 0.0675286789518799 0.0675286789518799
-4976 4530 4531 0.0681514911729941 0.0681514911729941
-4978 1833 2628 0.0976402650867344 0.0976402650867344
-4980 4532 4428 0.101312368020336 0.101312368020336
-4981 4428 4533 0.0998335149833254 0.0998335149833254
-4982 4533 4534 0.1027774706977 0.1027774706977
-4984 4535 1833 0.103500237720645 0.103500237720645
-4986 4536 4537 0.0953225774659935 0.0953225774659935
-4988 4538 4539 0.19878482816443 0.19878482816443
-4989 4539 2830 0.201604542004037 0.201604542004037
-4990 2830 1438 0.197694612690532 0.197694612690532
-4991 1438 4540 0.179002123409013 0.179002123409013
-4993 4541 25 0.138059623303707 0.138059623303707
-4994 25 4542 0.0645746983944002 0.0645746983944002
-4995 4542 2964 0.0670651945252806 0.0670651945252806
-4999 4545 4546 0.142258977482996 0.142258977482996
-5001 4547 115 0.110830423505847 0.110830423505847
-5003 4548 4549 0.0776585367690646 0.0776585367690646
-5004 4549 4550 0.199094650034446 0.199094650034446
-5005 4550 4551 0.100232131513911 0.100232131513911
-5007 4552 2292 0.132777862181536 0.132777862181536
-5008 2292 4553 0.0918166647273585 0.0918166647273585
-5009 4553 2534 0.18135507208955 0.18135507208955
-5011 2627 4554 0.0924500575644084 0.0924500575644084
-5012 4554 4555 0.10983037862614 0.10983037862614
-5014 4523 4556 0.135380005592348 0.135380005592348
-5015 4556 4557 0.134346145402708 0.134346145402708
-5016 4557 4558 0.133189336887005 0.133189336887005
-5017 4558 1680 0.13514752705788 0.13514752705788
-5018 1680 4559 0.137419251565084 0.137419251565084
-5020 4560 4064 0.13135456684589 0.13135456684589
-5021 4064 4561 0.134278993416053 0.134278993416053
-5023 4101 4562 0.159933235501875 0.159933235501875
-5025 4563 4564 0.407964486856081 0.407964486856081
-5026 4565 2188 0.10962848253063 0.10962848253063
-17150 4780 4781 0.199841658014134 0.199841658014134
-5028 4566 687 0.202530686471354 0.202530686471354
-5029 687 1982 0.159069792202276 0.159069792202276
-5030 1982 1967 0.0383650278893233 0.0383650278893233
-5033 4567 1928 0.199711508236703 0.199711508236703
-5034 1928 4568 0.201653602761609 0.201653602761609
-5035 4568 3272 0.202185746700204 0.202185746700204
-5036 3272 4569 0.20093413075273 0.20093413075273
-5037 4569 85 0.20339775981857 0.20339775981857
-5038 85 3521 0.203998373883698 0.203998373883698
-5039 3521 4262 0.200473333246826 0.200473333246826
-5040 4262 4570 0.200485802986416 0.200485802986416
-5041 4570 4571 0.201223720769428 0.201223720769428
-5042 4571 4572 0.205786578364508 0.205786578364508
-5043 4572 4573 0.200686081138238 0.200686081138238
-5044 4573 4574 0.200311699167283 0.200311699167283
-5045 4575 4576 0.13275170286213 0.13275170286213
-5046 4576 4011 0.136238719327193 0.136238719327193
-5049 4578 3382 0.130912952312419 0.130912952312419
-5050 3382 4579 0.10420964387947 0.10420964387947
-5051 4579 4580 0.100328081358343 0.100328081358343
-5053 4581 4582 0.100688559836452 0.100688559836452
-5054 4582 1104 0.099555514740453 0.099555514740453
-5055 1104 4583 0.100465419279427 0.100465419279427
-5056 4583 4584 0.100511332021349 0.100511332021349
-5057 4584 4585 0.0999153218838928 0.0999153218838928
-5059 3498 4586 0.198271673699608 0.198271673699608
-5060 4586 4587 0.203313884946152 0.203313884946152
-5062 4588 3598 0.162446986671654 0.162446986671654
-5065 4590 4591 0.145581982651648 0.145581982651648
-20699 10909 10894 0.00288177410229764 0.00288177410229764
-5066 4591 4592 0.145302049591696 0.145302049591696
-5067 4592 2013 0.147364635735888 0.147364635735888
-5068 2013 4593 0.147376079792043 0.147376079792043
-5069 4593 4594 0.146031742389181 0.146031742389181
-5071 4595 4596 0.179128666689522 0.179128666689522
-5072 4596 4597 0.0491363059718978 0.0491363059718978
-5073 4597 4598 0.0534283507033442 0.0534283507033442
-5074 4598 4599 0.051162571237203 0.051162571237203
-5076 1025 3894 0.103299911807114 0.103299911807114
-5077 3894 4600 0.113012549862716 0.113012549862716
-5078 4600 4601 0.103445240313361 0.103445240313361
-5079 4601 4602 0.110216736617757 0.110216736617757
-5080 4602 4603 0.098537605440947 0.098537605440947
-5081 4603 4604 0.10689939615188 0.10689939615188
-5082 4604 4605 0.104556664577465 0.104556664577465
-5083 4605 4606 0.106796784548208 0.106796784548208
-5084 4606 2884 0.106044347623682 0.106044347623682
-5085 2884 4607 0.118270695339941 0.118270695339941
-6370 5524 5525 0.0492521789985846 0.0492521789985846
-5087 4608 4609 0.117800444995037 0.117800444995037
-5088 4609 4610 0.102641376464428 0.102641376464428
-5089 4610 4611 0.0494099001663831 0.0494099001663831
-5090 4611 4612 0.0461096147761951 0.0461096147761951
-5091 4612 4613 0.102709817700352 0.102709817700352
-5092 4613 4614 0.107788478157863 0.107788478157863
-5093 4614 4615 0.106309381819152 0.106309381819152
-5095 4618 4619 0.107514865026302 0.107514865026302
-5096 4619 4620 0.109618128547838 0.109618128547838
-5098 4621 4622 0.0890723635550207 0.0890723635550207
-5100 4623 4522 0.133190665745901 0.133190665745901
-5102 4624 4625 0.133658094916269 0.133658094916269
-5103 4625 4626 0.133656501053085 0.133656501053085
-5104 4626 1679 0.135152153872346 0.135152153872346
-5105 1679 4627 0.135024432224219 0.135024432224219
-5106 4627 2458 0.13515140493347 0.13515140493347
-5107 2458 3226 0.138004027692966 0.138004027692966
-5108 3226 4628 0.134323473833378 0.134323473833378
-5110 4629 4630 0.135446542572512 0.135446542572512
-19829 9519 10649 0.210072579992032 0.210072579992032
-5113 4632 4633 0.0947313767183171 0.0947313767183171
-5115 4634 4635 0.0557913419625853 0.0557913419625853
-5116 4635 4636 0.0662366225916723 0.0662366225916723
-5117 4636 4637 0.113593419326123 0.113593419326123
-5120 4639 4640 0.132773960128622 0.132773960128622
-5121 4640 2488 0.134241502580257 0.134241502580257
-5122 2488 2829 0.133449886794901 0.133449886794901
-5123 2829 1437 0.199500232175966 0.199500232175966
-5124 1437 4641 0.151025004831673 0.151025004831673
-5126 4642 114 0.107737280643715 0.107737280643715
-5127 114 4643 0.05007218616811 0.05007218616811
-5129 4644 4645 0.207043620739087 0.207043620739087
-5130 4645 1842 0.100003312332805 0.100003312332805
-5131 1842 2639 0.103345313678593 0.103345313678593
-5132 2639 4646 0.199597531872746 0.199597531872746
-5133 4646 4647 0.110338949764664 0.110338949764664
-5134 4647 4648 0.0862326024249021 0.0862326024249021
-5135 4648 4649 0.00885483385456902 0.00885483385456902
-5136 4649 4650 0.198772614686204 0.198772614686204
-5138 275 4651 0.385379364010995 0.385379364010995
-5139 4651 4652 0.41471692527459 0.41471692527459
-5140 4652 4653 0.0539741907357585 0.0539741907357585
-5141 4653 4654 0.022194548523775 0.022194548523775
-5142 4654 4206 0.207869157343365 0.207869157343365
-5144 4655 4656 0.134281006104493 0.134281006104493
-5145 4656 2404 0.0664009097985413 0.0664009097985413
-5146 2404 4287 0.0661523414774278 0.0661523414774278
-5147 4287 4657 0.134479579019433 0.134479579019433
-5149 4658 4659 0.0841530151799317 0.0841530151799317
-5150 4659 23 0.134991372812694 0.134991372812694
-5152 4098 4660 0.191146561014702 0.191146561014702
-5153 4660 4661 0.201619149588839 0.201619149588839
-5154 4661 4662 0.406108499193961 0.406108499193961
-5155 1948 2564 0.13210280054913 0.13210280054913
-5157 4663 388 0.102051980712047 0.102051980712047
-5159 1442 4664 0.0822712120832148 0.0822712120832148
-5160 4664 4665 0.119816357959701 0.119816357959701
-5161 4665 4666 0.204097543225869 0.204097543225869
-5162 4666 4667 0.203014171650501 0.203014171650501
-5164 4668 1869 0.212544115775742 0.212544115775742
-5165 1869 4183 0.200120502606903 0.200120502606903
-5167 4669 2615 0.177891060007606 0.177891060007606
-5169 4670 4671 0.124038366426802 0.124038366426802
-5171 2421 3232 0.143042998317255 0.143042998317255
-5173 4672 2028 0.132076698976753 0.132076698976753
-5174 2028 4673 0.145972981302679 0.145972981302679
-5175 4673 4674 0.125161327150552 0.125161327150552
-5177 3368 4675 0.102054188376367 0.102054188376367
-5178 4675 3714 0.0982241705421038 0.0982241705421038
-5179 3714 4676 0.103510692140635 0.103510692140635
-5181 4677 4678 0.0648734285683964 0.0648734285683964
-5182 4678 615 0.177689539069832 0.177689539069832
-5183 615 4679 0.176110549937417 0.176110549937417
-5184 4679 4680 0.173776320124656 0.173776320124656
-5186 4681 4682 0.184513059882878 0.184513059882878
-5187 4682 4685 0.175211932943401 0.175211932943401
-5189 4686 4687 0.349232193394911 0.349232193394911
-5191 1357 4688 0.13277378561117 0.13277378561117
-5193 4689 4690 0.459634230640815 0.459634230640815
-5194 4691 4692 0.0991279407871357 0.0991279407871357
-5195 4692 4693 0.0976485109623955 0.0976485109623955
-5197 4694 4695 0.0991197857977998 0.0991197857977998
-5198 4695 4696 0.10132403770971 0.10132403770971
-5199 4696 4697 0.0991849406088648 0.0991849406088648
-5201 1637 4698 0.104258284661182 0.104258284661182
-5202 4698 4215 0.0991281021081487 0.0991281021081487
-5203 4215 4699 0.0976569662788289 0.0976569662788289
-5204 4699 195 0.10058858208642 0.10058858208642
-5205 195 2924 0.0991416985641161 0.0991416985641161
-5206 2924 4700 0.0991366648288655 0.0991366648288655
-5207 4700 1462 0.100582700478246 0.100582700478246
-5208 1462 4701 0.102418321557774 0.102418321557774
-5212 4704 1872 0.0821525251365273 0.0821525251365273
-17295 10015 3501 0.20024191652091 0.20024191652091
-5214 1445 4705 0.199727367553687 0.199727367553687
-5215 4705 4706 0.203375496003776 0.203375496003776
-5216 4706 4707 0.201909493723453 0.201909493723453
-5218 4708 403 0.0454257390325356 0.0454257390325356
-5219 403 314 0.0562503326449317 0.0562503326449317
-5220 314 4709 0.11119492664509 0.11119492664509
-5222 4711 4170 0.194203357035268 0.194203357035268
-5223 4170 4712 0.208127290131148 0.208127290131148
-5224 4712 4713 0.198927723766577 0.198927723766577
-5225 4713 4714 0.204935128047674 0.204935128047674
-5226 4714 4715 0.188520271439654 0.188520271439654
-5227 4715 3793 0.199712422815397 0.199712422815397
-5228 3793 4716 0.152617432717184 0.152617432717184
-5229 4716 944 0.17742675257367 0.17742675257367
-5230 944 2228 0.183696049186415 0.183696049186415
-5231 2228 4717 0.162619098965448 0.162619098965448
-5232 4717 4718 0.189722276081874 0.189722276081874
-5233 4718 4719 0.171945095410338 0.171945095410338
-5234 4719 4720 0.177429725627003 0.177429725627003
-5235 4720 4721 0.102690706769844 0.102690706769844
-5236 4721 4722 0.0746285232074726 0.0746285232074726
-5237 4722 668 0.00411462210691817 0.00411462210691817
-5238 668 4723 0.00380364497345728 0.00380364497345728
-5240 4724 4604 0.175355420651263 0.175355420651263
-5242 1146 875 0.136296969384937 0.136296969384937
-5244 4463 2783 0.133890793284356 0.133890793284356
-5245 2783 4725 0.132805963492264 0.132805963492264
-5246 4725 4726 0.129702593554695 0.129702593554695
-5247 4726 4727 0.147549019452937 0.147549019452937
-5249 4728 4729 0.134556994040934 0.134556994040934
-5250 4729 4730 0.00403637583696172 0.00403637583696172
-5251 4730 4731 0.00537071495727797 0.00537071495727797
-5252 4731 4732 0.135502150823282 0.135502150823282
-5253 4732 4733 0.139193822038205 0.139193822038205
-5254 4733 820 0.139638598300339 0.139638598300339
-5255 820 3561 0.13948292881931 0.13948292881931
-5256 3561 4734 0.140172337301063 0.140172337301063
-5257 4734 4339 0.137170074560425 0.137170074560425
-5258 4339 4735 0.138982548276464 0.138982548276464
-5259 4735 3054 0.142752059367152 0.142752059367152
-5260 3054 4736 0.133100340642693 0.133100340642693
-5261 4736 4737 0.00492593525024253 0.00492593525024253
-5263 4738 3350 0.0528651873534889 0.0528651873534889
-5264 3350 4739 0.10426363885095 0.10426363885095
-5265 4739 4740 0.102034414473958 0.102034414473958
-14766 5462 7420 0.173120091654239 0.173120091654239
-5266 4740 2059 0.102862063735102 0.102862063735102
-5267 2059 2645 0.103513208640623 0.103513208640623
-5268 2645 4111 0.104240888550753 0.104240888550753
-5270 4741 4742 0.102769926646245 0.102769926646245
-5271 4742 4743 0.104240916363933 0.104240916363933
-5272 4743 3452 0.105180194746781 0.105180194746781
-5273 3452 4744 0.10036641032569 0.10036641032569
-5274 4744 3882 0.105711927066125 0.105711927066125
-5275 3882 845 0.10371038656759 0.10371038656759
-5276 845 4745 0.104689829390385 0.104689829390385
-5277 4745 4746 0.0469848225431211 0.0469848225431211
-5279 2610 4747 0.106209148179485 0.106209148179485
-5280 4747 4748 0.0529916423937814 0.0529916423937814
-5282 4749 4750 0.0385383772070312 0.0385383772070312
-5283 4750 966 0.102580898845139 0.102580898845139
-5285 990 4751 0.0998368598850094 0.0998368598850094
-5286 4751 4752 0.0507426333200071 0.0507426333200071
-5287 4752 4753 0.0483650078238011 0.0483650078238011
-5288 4753 1987 0.0507354905741477 0.0507354905741477
-5289 1987 4754 0.0483663202205498 0.0483663202205498
-5290 4754 446 0.051479549664384 0.051479549664384
-5291 446 4712 0.0483577654581108 0.0483577654581108
-5292 4712 4755 0.101297109225192 0.101297109225192
-5293 4755 4756 0.0117741801721385 0.0117741801721385
-5294 4756 4757 0.0826634733388868 0.0826634733388868
-5295 4757 4758 0.0342509974874732 0.0342509974874732
-5296 4758 4759 0.0175268141449879 0.0175268141449879
-5297 4759 4760 0.0234785463070149 0.0234785463070149
-5298 4760 4761 0.0484972333709921 0.0484972333709921
-5299 4761 3126 0.0271800985558075 0.0271800985558075
-5300 3126 3148 0.0183600177870361 0.0183600177870361
-5301 3148 3143 0.0330468719768483 0.0330468719768483
-5302 3143 4762 0.0646645186035183 0.0646645186035183
-5303 4762 3915 0.0595606911380279 0.0595606911380279
-5304 3915 1052 0.123917065152439 0.123917065152439
-5305 1052 4399 0.111768087862579 0.111768087862579
-5306 4399 4763 0.0469346079446244 0.0469346079446244
-5308 4764 4765 0.103730937833073 0.103730937833073
-5311 3155 4767 0.101587564129846 0.101587564129846
-5312 4767 4768 0.101450282305199 0.101450282305199
-5313 4768 4769 0.102136172096814 0.102136172096814
-5314 4769 4770 0.0492382919352757 0.0492382919352757
-5316 4771 4772 0.100332506519832 0.100332506519832
-5317 4772 4773 0.0490390048099826 0.0490390048099826
-5318 4773 989 0.0495269165196006 0.0495269165196006
-5320 4774 4775 0.110656269548842 0.110656269548842
-5321 4775 4776 0.0922568863786424 0.0922568863786424
-5322 4776 4777 0.0968744294941002 0.0968744294941002
-5323 4777 4778 0.0933681364009737 0.0933681364009737
-5324 4778 2017 0.096243154582377 0.096243154582377
-5325 2017 2007 0.0302079551181684 0.0302079551181684
-5326 2007 4779 0.0612998845077431 0.0612998845077431
-5327 4779 2763 0.0939372654248904 0.0939372654248904
-5328 2763 4782 0.0939831368366747 0.0939831368366747
-5329 4782 2267 0.0946761779636641 0.0946761779636641
-5330 2267 3596 0.0957452269737562 0.0957452269737562
-5332 4783 2096 0.0938496563543502 0.0938496563543502
-5333 2096 4784 0.0942585077375453 0.0942585077375453
-5334 4784 4785 0.0947863905236846 0.0947863905236846
-5335 4785 2332 0.0940516760171392 0.0940516760171392
-6607 5694 5695 0.0154325675938591 0.0154325675938591
-5337 4089 4787 0.198005363606862 0.198005363606862
-5339 4788 4789 0.404049086255387 0.404049086255387
-5340 4790 119 0.0976422064224313 0.0976422064224313
-5341 119 4791 0.0958834096516534 0.0958834096516534
-5342 4791 2312 0.0465244099907656 0.0465244099907656
-5344 4792 2484 0.133450471266853 0.133450471266853
-5345 2484 2823 0.13353766665554 0.13353766665554
-5346 2823 1414 0.132023734494372 0.132023734494372
-5347 1414 1354 0.131894209152808 0.131894209152808
-5348 1354 4793 0.0769784662870068 0.0769784662870068
-5350 4794 4795 0.0387509077758481 0.0387509077758481
-5351 4795 2952 0.134935498636386 0.134935498636386
-5352 2952 4796 0.136197421914805 0.136197421914805
-5353 4796 4797 0.129998438382796 0.129998438382796
-5354 4797 4798 0.134935065412598 0.134935065412598
-5356 2635 4799 0.200962590925039 0.200962590925039
-5357 4799 4800 0.183883066303689 0.183883066303689
-5358 4801 4802 0.0508168176081005 0.0508168176081005
-5359 4802 4516 0.0829526060571819 0.0829526060571819
-6631 5709 5710 0.263510763458761 0.263510763458761
-5360 4516 4803 0.133849874797103 0.133849874797103
-5361 4803 4804 0.135491260752817 0.135491260752817
-5363 4805 1674 0.127474088546245 0.127474088546245
-5364 1674 4806 0.138137679733803 0.138137679733803
-5366 4807 2455 0.134491411129426 0.134491411129426
-5367 2455 3223 0.138294178425788 0.138294178425788
-5369 4808 4809 0.133134706345954 0.133134706345954
-5370 4809 4810 0.135569856870466 0.135569856870466
-5371 4810 4811 0.134368341783309 0.134368341783309
-5372 4811 4812 0.133035455825063 0.133035455825063
-5374 4813 4814 0.201931453578911 0.201931453578911
-5376 123 4815 0.0586808902574419 0.0586808902574419
-5377 1608 1158 0.0531893778682351 0.0531893778682351
-5378 1158 4816 0.0522853387259307 0.0522853387259307
-5379 4816 4817 0.0528559175260399 0.0528559175260399
-5380 4817 4818 0.0526139267336242 0.0526139267336242
-5382 4819 4820 0.146802081972091 0.146802081972091
-5383 4820 4821 0.146390170205012 0.146390170205012
-5384 4821 4822 0.0767990953688077 0.0767990953688077
-5386 3289 4824 0.0733337823028737 0.0733337823028737
-5387 4824 4825 0.151650147757225 0.151650147757225
-5389 97 3502 0.20326475820455 0.20326475820455
-5390 3502 4826 0.200021830134173 0.200021830134173
-5391 4826 4827 0.204558997826367 0.204558997826367
-5392 4827 4828 0.201476703732084 0.201476703732084
-5394 4829 4830 0.558813274805265 0.558813274805265
-5395 3635 1894 0.33996915967689 0.33996915967689
-5396 1894 4831 0.234959433855918 0.234959433855918
-5397 4831 3288 0.0548366602436518 0.0548366602436518
-5399 3879 4832 0.175154251791819 0.175154251791819
-5400 4832 3070 0.175288290924905 0.175288290924905
-5402 4833 4834 0.239573627081124 0.239573627081124
-5404 3962 4835 0.197156843459588 0.197156843459588
-5405 4835 4836 0.094417767822886 0.094417767822886
-5406 4836 388 0.087554257922167 0.087554257922167
-5407 388 1384 0.157773442883539 0.157773442883539
-5408 1384 4837 0.0895725883825947 0.0895725883825947
-5409 4837 325 0.282856295391869 0.282856295391869
-6684 2175 5744 0.101148378971839 0.101148378971839
-5410 325 4838 0.0837092029011689 0.0837092029011689
-5411 4838 4840 0.0963811879451104 0.0963811879451104
-5412 4840 4841 0.421707851811283 0.421707851811283
-5415 1486 144 0.196859858102641 0.196859858102641
-5417 2194 4843 0.069400098080988 0.069400098080988
-5418 4843 4844 0.128982538897387 0.128982538897387
-5420 4845 4846 0.127385402005959 0.127385402005959
-5421 4846 4847 0.0485354577138893 0.0485354577138893
-5422 4847 2197 0.0570536883887032 0.0570536883887032
-5423 2197 2198 0.0030293307914236 0.0030293307914236
-5425 2191 4848 0.228805525488878 0.228805525488878
-5427 4281 2319 0.149466526420244 0.149466526420244
-5428 2319 4849 0.264070561759483 0.264070561759483
-5430 4850 4851 0.124106376215018 0.124106376215018
-5432 4852 4853 0.107373531206162 0.107373531206162
-5433 4853 4854 0.108589473424165 0.108589473424165
-5434 4854 4855 0.105767467639199 0.105767467639199
-5435 4855 4856 0.0608956612626877 0.0608956612626877
-5436 4856 4857 0.0536676140413411 0.0536676140413411
-5438 4858 4859 0.053767328384899 0.053767328384899
-5439 4859 4860 0.0517270733374725 0.0517270733374725
-5440 4860 4861 0.0506527251945452 0.0506527251945452
-5441 4861 4862 0.0500931909858678 0.0500931909858678
-5442 4862 4863 0.0473439516711298 0.0473439516711298
-5444 4864 4865 0.0521797446029276 0.0521797446029276
-17093 9466 677 0.17846620541914 0.17846620541914
-17094 677 3719 0.359015096413943 0.359015096413943
-5446 4866 4867 0.0492134016241179 0.0492134016241179
-5447 4867 4868 0.0506066180898924 0.0506066180898924
-5448 4868 4869 0.0483319487475015 0.0483319487475015
-5449 4869 4870 0.0507611555520018 0.0507611555520018
-5450 4870 980 0.0494869052239766 0.0494869052239766
-5451 980 4871 0.0481249293188332 0.0481249293188332
-5452 4871 4872 0.0462779203242365 0.0462779203242365
-20332 10741 10746 0.00836528320993219 0.00836528320993219
-5453 4872 4873 0.0504026300689218 0.0504026300689218
-5454 4873 4874 0.0485554829183078 0.0485554829183078
-5455 4874 4875 0.0534696334958417 0.0534696334958417
-6731 5782 5783 0.00425137254991275 0.00425137254991275
-5456 4875 4876 0.0484412552758981 0.0484412552758981
-5458 4877 4717 0.0471074620934606 0.0471074620934606
-5459 4717 4878 0.132709338239974 0.132709338239974
-5461 4879 3888 0.0983476297531957 0.0983476297531957
-5462 3888 1018 0.103492590132028 0.103492590132028
-5463 1018 4880 0.0514136092144711 0.0514136092144711
-5464 4880 4881 0.0525893579522226 0.0525893579522226
-5465 4881 3721 0.0533162444253223 0.0533162444253223
-5466 3721 4882 0.0519823122660099 0.0519823122660099
-5467 4882 4883 0.0522344210852062 0.0522344210852062
-5468 4883 4884 0.0505876398657049 0.0505876398657049
-5469 4884 3336 0.0998762512001326 0.0998762512001326
-5470 3336 4885 0.0991185753255084 0.0991185753255084
-5471 4885 4886 0.0963539908668941 0.0963539908668941
-5472 4886 4887 0.0885379825241657 0.0885379825241657
-5473 4887 4888 0.0119373214867398 0.0119373214867398
-5474 4888 2056 0.0843994384439808 0.0843994384439808
-5475 2056 4889 0.0133131298111966 0.0133131298111966
-5476 4889 2662 0.0974967707832978 0.0974967707832978
-5477 2662 4135 0.0954371783119999 0.0954371783119999
-5479 4890 4891 0.0937877451974264 0.0937877451974264
-5480 4891 4892 0.0948153596322219 0.0948153596322219
-5482 3459 4893 0.0478001833146321 0.0478001833146321
-5484 4894 4895 0.0479027082737571 0.0479027082737571
-5485 4895 4896 0.0478122905377956 0.0478122905377956
-5486 4896 859 0.0923773172496592 0.0923773172496592
-5487 859 454 0.0453886692992681 0.0453886692992681
-5488 454 4897 0.0453208554339034 0.0453208554339034
-5489 4897 458 0.0453479211780813 0.0453479211780813
-5492 4899 4900 0.0139467367099566 0.0139467367099566
-5493 4900 4901 0.0360421538971705 0.0360421538971705
-5494 4901 4902 0.0578381423218813 0.0578381423218813
-5495 4902 4903 0.00552719826630604 0.00552719826630604
-5496 4903 4904 0.0875768226675012 0.0875768226675012
-5497 4904 4905 0.0943606682528015 0.0943606682528015
-5498 4905 4906 0.0967192189659533 0.0967192189659533
-5499 4906 4907 0.098185525305783 0.098185525305783
-5501 4908 2748 0.100541646868693 0.100541646868693
-5502 2748 4909 0.0966275722613029 0.0966275722613029
-5503 4909 4910 0.0992689355907326 0.0992689355907326
-5504 4910 4911 0.101479918551735 0.101479918551735
-6779 5822 3617 0.0484295076881561 0.0484295076881561
-5505 4911 4912 0.0969181343296834 0.0969181343296834
-5507 2121 4913 0.0979459294550903 0.0979459294550903
-5508 4913 4914 0.0979869433285632 0.0979869433285632
-5509 4914 4915 0.197888030311115 0.197888030311115
-5510 3113 4916 0.205521796352519 0.205521796352519
-5511 4916 4917 0.213014583006008 0.213014583006008
-5514 1222 4919 0.098914174918745 0.098914174918745
-5516 4920 1622 0.0585646429204787 0.0585646429204787
-5517 1622 4921 0.122620409777708 0.122620409777708
-5518 4921 4922 0.218423462474676 0.218423462474676
-5520 2815 4923 0.167710746898946 0.167710746898946
-5521 4923 4924 0.0980438120983448 0.0980438120983448
-5523 4677 4925 0.0746274432259007 0.0746274432259007
-5525 4926 617 0.0797365701263369 0.0797365701263369
-5526 617 4927 0.125187481931903 0.125187481931903
-5527 4927 4928 0.0778528067673226 0.0778528067673226
-5528 4928 4929 0.199074396611122 0.199074396611122
-5532 4932 4933 0.00438034032424269 0.00438034032424269
-5533 4933 4934 0.0884200199820011 0.0884200199820011
-5534 4934 4935 0.245891005874257 0.245891005874257
-5535 4935 4936 0.142250751986944 0.142250751986944
-5536 4936 4937 0.0173695104401488 0.0173695104401488
-5538 4938 4939 0.203545296385478 0.203545296385478
-5540 1358 4940 0.12982829991663 0.12982829991663
-5543 4079 2536 0.319784261068233 0.319784261068233
-5545 4926 616 0.0701041786984163 0.0701041786984163
-5546 616 4942 0.177022653633518 0.177022653633518
-5547 4942 4943 0.172063039899941 0.172063039899941
-5549 4944 4945 0.149558307265757 0.149558307265757
-5550 4945 3715 0.0517838841978355 0.0517838841978355
-5551 3715 4948 0.104024626392335 0.104024626392335
-5552 4948 4949 0.174823058982553 0.174823058982553
-5553 4949 2616 0.177668474307762 0.177668474307762
-5554 2616 4950 0.0535070014349516 0.0535070014349516
-5555 4950 4951 0.124049062817869 0.124049062817869
-5556 4951 4952 0.174777210980769 0.174777210980769
-5557 4952 4953 0.127620790205472 0.127620790205472
-5558 4953 4954 0.0551759306609038 0.0551759306609038
-5559 4954 4955 0.176133032867453 0.176133032867453
-5560 4955 4956 0.177512737206305 0.177512737206305
-5562 4406 4957 0.277669971565855 0.277669971565855
-5564 4958 4959 0.199658223163124 0.199658223163124
-5566 1598 1655 0.160087686125488 0.160087686125488
-5568 4960 1592 0.199275601482479 0.199275601482479
-5569 1592 1643 0.201203252625689 0.201203252625689
-5571 4961 4369 0.0888591183295397 0.0888591183295397
-5572 4369 1450 0.193863730230332 0.193863730230332
-5573 1450 4962 0.20633144077854 0.20633144077854
-5575 4963 4964 0.865026893272847 0.865026893272847
-5577 4966 4413 0.196777109156883 0.196777109156883
-5578 4413 4967 0.224682445917882 0.224682445917882
-5579 4967 4304 0.221012468473467 0.221012468473467
-5582 4969 4970 0.107069922554974 0.107069922554974
-5583 4970 4972 0.0948495530272937 0.0948495530272937
-5586 4269 4973 0.080198786030782 0.080198786030782
-5587 4974 4767 0.0973607348320062 0.0973607348320062
-5588 4767 4975 0.179413565332346 0.179413565332346
-5589 4975 4976 0.169917329199621 0.169917329199621
-5590 4976 4977 0.181948721536683 0.181948721536683
-5591 4977 3805 0.200239828466703 0.200239828466703
-5592 3805 4978 0.152216995314545 0.152216995314545
-5594 3620 4979 0.203157103314032 0.203157103314032
-5595 4979 2366 0.112909559408727 0.112909559408727
-5596 2366 4147 0.176980531073324 0.176980531073324
-5597 4147 4980 0.0231632311908037 0.0231632311908037
-5599 4981 4982 0.122490029160582 0.122490029160582
-5600 4982 4983 0.198021379234554 0.198021379234554
-5602 4831 3290 0.14433688220634 0.14433688220634
-5604 4248 1783 0.203809923376497 0.203809923376497
-5605 1783 4984 0.197266471488896 0.197266471488896
-5606 4984 4985 0.203487572214077 0.203487572214077
-5607 4985 4986 0.197825547248631 0.197825547248631
-5608 4986 4987 2.41542068401941 2.41542068401941
-5610 4989 4990 0.0962172324904451 0.0962172324904451
-5611 4990 3077 0.102766134165042 0.102766134165042
-5613 4991 322 0.0217232354992756 0.0217232354992756
-5614 322 4992 0.0357866971477297 0.0357866971477297
-5615 4992 4993 0.0111993418256192 0.0111993418256192
-5618 4994 3114 0.0796924849623814 0.0796924849623814
-5619 3114 4995 0.20745656668227 0.20745656668227
-5621 4996 4997 0.202175143533063 0.202175143533063
-5622 4997 4998 0.201486340865611 0.201486340865611
-5623 4998 4999 0.201289887939002 0.201289887939002
-5624 4999 5000 0.201274447612783 0.201274447612783
-5625 5000 5001 0.402211090441065 0.402211090441065
-5627 1058 5002 0.0523412516567849 0.0523412516567849
-5628 5002 5003 0.185331167798599 0.185331167798599
-5629 5003 3655 0.0518833582791727 0.0518833582791727
-5632 5004 4344 0.139169147250759 0.139169147250759
-5633 4344 5005 0.13717907888566 0.13717907888566
-5634 5005 3044 0.136502893019444 0.136502893019444
-5635 3044 5006 0.140687498507325 0.140687498507325
-5636 5006 5007 0.0045870406114538 0.0045870406114538
-5637 5007 5008 0.137903992793689 0.137903992793689
-5638 5008 1165 0.1390388743026 0.1390388743026
-5640 885 4470 0.139218366547603 0.139218366547603
-5641 4470 2792 0.134293285442621 0.134293285442621
-5642 2792 5009 0.131431211174063 0.131431211174063
-5644 5012 739 0.391173244940122 0.391173244940122
-5645 739 1559 0.139743785900176 0.139743785900176
-5646 1559 4275 0.141288921951359 0.141288921951359
-5647 4275 5013 0.120791048813674 0.120791048813674
-5648 5013 5014 0.0105624832499152 0.0105624832499152
-5649 5014 5015 0.0438951959332696 0.0438951959332696
-5650 5015 5016 0.160752036464104 0.160752036464104
-5652 5017 2345 0.117820938280592 0.117820938280592
-5654 4151 1536 0.0491815160552347 0.0491815160552347
-5655 1536 4765 0.126517768209698 0.126517768209698
-5656 4765 5019 0.175921623374803 0.175921623374803
-5657 5019 5020 0.0764689744574068 0.0764689744574068
-5658 5020 5021 0.102480731304504 0.102480731304504
-5659 5021 1190 0.167860102396295 0.167860102396295
-5660 1190 5022 0.022286088803945 0.022286088803945
-5661 5022 3787 0.1996828431131 0.1996828431131
-5662 3787 5023 0.154628071522294 0.154628071522294
-5687 5040 1763 0.201152967219908 0.201152967219908
-5663 5023 2252 0.333559522830682 0.333559522830682
-5664 2252 5024 0.0290309763494638 0.0290309763494638
-5665 5024 4884 0.148258019557603 0.148258019557603
-5666 4884 5025 0.194698119191853 0.194698119191853
-5667 5025 5026 0.176313474196241 0.176313474196241
-5668 5026 5027 0.192373972114261 0.192373972114261
-5669 5027 679 0.169442185038323 0.169442185038323
-5672 5029 4596 0.157086480064782 0.157086480064782
-5674 5030 5031 0.105448542276863 0.105448542276863
-5677 5032 5034 0.00520403492524916 0.00520403492524916
-5678 5034 5035 0.00442576451440448 0.00442576451440448
-5679 5035 5036 0.135764863246336 0.135764863246336
-5681 5037 813 0.139038307562208 0.139038307562208
-5682 813 3554 0.152271167865336 0.152271167865336
-5684 5038 5039 0.16037248823512 0.16037248823512
-5686 2368 5040 0.131780679502724 0.131780679502724
-5689 5041 5042 0.178235693488978 0.178235693488978
-5690 5042 663 0.00303458618342364 0.00303458618342364
-5691 663 5043 0.17896901951739 0.17896901951739
-5692 5043 4608 0.175810797673871 0.175810797673871
-5693 4608 5044 0.116588664300191 0.116588664300191
-5694 5044 5045 0.0312349930548565 0.0312349930548565
-5695 5045 3670 0.147012417470316 0.147012417470316
-5697 5046 4162 0.0660609059196111 0.0660609059196111
-5698 4162 4771 0.262084611870375 0.262084611870375
-5699 4771 5047 0.17859412824458 0.17859412824458
-5700 5047 5048 0.1691727396202 0.1691727396202
-5701 5048 5049 0.184472749838431 0.184472749838431
-5702 5049 3801 0.20027318311003 0.20027318311003
-5703 3801 5050 0.154503416019497 0.154503416019497
-5704 5050 932 0.176703352691921 0.176703352691921
-5706 2217 4867 0.160601247675141 0.160601247675141
-5707 4867 5051 0.19278749199245 0.19278749199245
-5708 5051 5052 0.171738832244774 0.171738832244774
-5709 5052 5053 0.125039053144726 0.125039053144726
-5710 5053 5054 0.0536646579213684 0.0536646579213684
-5712 2413 5055 0.0539797182371141 0.0539797182371141
-5713 5055 5056 0.0555511846145791 0.0555511846145791
-5714 5056 5057 0.0564985233788716 0.0564985233788716
-5715 5058 5059 0.0116997793337229 0.0116997793337229
-5716 5059 369 0.121769364056454 0.121769364056454
-5717 369 1558 0.13936986171661 0.13936986171661
-5718 1558 738 0.139138948896028 0.139138948896028
-5719 738 5060 0.392796141218442 0.392796141218442
-5721 5061 5062 0.12142771399357 0.12142771399357
-5722 5062 5063 0.0553958184996893 0.0553958184996893
-5723 5063 4434 0.0566894209705876 0.0566894209705876
-5724 4434 2921 0.313688166061769 0.313688166061769
-5726 5062 422 0.127478280907992 0.127478280907992
-5727 422 5063 0.108364291033736 0.108364291033736
-5729 5066 5067 0.177224259300569 0.177224259300569
-5730 5067 1319 0.176633232309172 0.176633232309172
-5731 1319 1375 0.177680959479223 0.177680959479223
-5732 1375 5068 0.0602164425054291 0.0602164425054291
-5733 5068 288 0.02427348670764 0.02427348670764
-5734 288 5069 0.0611513015273674 0.0611513015273674
-5735 5069 4693 0.113806398942027 0.113806398942027
-5736 4693 5070 0.156397394554719 0.156397394554719
-5738 1493 182 0.220724132280051 0.220724132280051
-5739 182 1710 0.202718600976859 0.202718600976859
-5742 5072 5073 0.0235981208081862 0.0235981208081862
-5743 5073 5074 0.173346209176791 0.173346209176791
-5744 5074 5075 0.183560584904857 0.183560584904857
-5746 5076 5077 0.201201481229781 0.201201481229781
-5747 5077 5078 0.196158089713223 0.196158089713223
-5750 5080 304 0.450334409862505 0.450334409862505
-5755 5083 4179 0.23271473726582 0.23271473726582
-5757 5084 5085 0.100586570089845 0.100586570089845
-5758 5085 3712 0.0974495496468689 0.0974495496468689
-5759 3712 5088 0.107190885250137 0.107190885250137
-5761 1840 2612 0.176114771519943 0.176114771519943
-5762 2612 5089 0.0532850041931226 0.0532850041931226
-5763 5089 5090 0.123805391077944 0.123805391077944
-5764 5090 5091 0.0921824286504112 0.0921824286504112
-5765 5091 5092 0.0849604613604367 0.0849604613604367
-5767 5093 4077 0.0433656831085181 0.0433656831085181
-5768 4077 5094 0.807132686207363 0.807132686207363
-5769 5092 5095 0.184721084541763 0.184721084541763
-5770 5095 5096 0.112121546650621 0.112121546650621
-5771 5096 5097 0.012405493892182 0.012405493892182
-12067 8534 8532 0.0417307390941294 0.0417307390941294
-5774 5099 5100 0.195348601056539 0.195348601056539
-5775 5100 5101 1.61385249170336 1.61385249170336
-5776 4334 5102 0.201130889411283 0.201130889411283
-5778 5103 2576 0.52830768269949 0.52830768269949
-5782 1145 874 0.139433776255124 0.139433776255124
-5783 874 4462 0.13822164303959 0.13822164303959
-5784 4462 2782 0.134807869792579 0.134807869792579
-5786 5108 5109 0.136531475414142 0.136531475414142
-5787 5110 5111 0.166792389966844 0.166792389966844
-5788 5111 5112 0.0444779706577198 0.0444779706577198
-5789 5113 4169 0.194541086455447 0.194541086455447
-5790 4169 4754 0.20739031390672 0.20739031390672
-5791 4754 5114 0.19819923300798 0.19819923300798
-5792 5114 5115 0.205574207946515 0.205574207946515
-5793 5115 5116 0.18969176296687 0.18969176296687
-5795 3795 5117 0.153449380032665 0.153449380032665
-5796 5117 942 0.178860285004076 0.178860285004076
-5797 942 2226 0.181510674241125 0.181510674241125
-5798 2226 4876 0.162456954471732 0.162456954471732
-5799 4876 5118 0.192077540660028 0.192077540660028
-5800 5118 5119 0.169639680241679 0.169639680241679
-5801 5119 5120 0.176431836448169 0.176431836448169
-5805 5123 5124 0.138482206224941 0.138482206224941
-5807 5125 5126 0.196467690434778 0.196467690434778
-5809 5127 5128 0.177236972666439 0.177236972666439
-5810 5128 666 0.00411429224620583 0.00411429224620583
-5811 666 5129 0.00398081510277296 0.00398081510277296
-5812 5129 5130 0.0219503048251099 0.0219503048251099
-5813 5130 5131 0.152662411900591 0.152662411900591
-5814 5131 4605 0.174323615227633 0.174323615227633
-5815 4605 3691 0.233536002014651 0.233536002014651
-5816 3691 5132 0.0578224768050087 0.0578224768050087
-5817 4901 5133 0.0573209620432963 0.0573209620432963
-5819 5134 5135 0.102452742724465 0.102452742724465
-5820 5135 5136 0.101180875593513 0.101180875593513
-5821 5136 5137 0.0993172550227887 0.0993172550227887
-5822 5137 5138 0.0973174615516026 0.0973174615516026
-5823 5138 5139 0.0592813821516456 0.0592813821516456
-5824 5139 5140 0.0572628386692297 0.0572628386692297
-5825 5140 5141 0.0908568563064313 0.0908568563064313
-5826 5141 5142 0.108696465338082 0.108696465338082
-5827 5142 5143 0.117446225438567 0.117446225438567
-5828 5143 5144 0.115052510861077 0.115052510861077
-5831 2118 5146 0.132113404680538 0.132113404680538
-5832 5146 5147 0.0733188328504862 0.0733188328504862
-5833 5147 5148 0.0348417204507369 0.0348417204507369
-5860 3449 5168 0.101446764740706 0.101446764740706
-5835 4903 5149 0.0928559279225574 0.0928559279225574
-5836 5149 5150 0.101009488468598 0.101009488468598
-5837 5150 5151 0.101494340144734 0.101494340144734
-12222 8597 8598 0.00932829170104997 0.00932829170104997
-12223 8598 8599 0.0244824521093208 0.0244824521093208
-5838 5151 5152 0.100261540674961 0.100261540674961
-5839 5152 5153 0.221241395423211 0.221241395423211
-5840 5153 2236 0.0908651857276488 0.0908651857276488
-5841 2236 5154 0.10116756602451 0.10116756602451
-5842 5154 5155 0.114191873365342 0.114191873365342
-5843 5155 5156 0.113038208940698 0.113038208940698
-5844 5156 2119 0.121856512679973 0.121856512679973
-5845 2119 5157 0.125333022212683 0.125333022212683
-5846 5157 5158 0.121389833666029 0.121389833666029
-5847 5158 5159 0.0390946612702668 0.0390946612702668
-5850 5160 2133 0.195466658548015 0.195466658548015
-5854 5163 2476 0.202535777887142 0.202535777887142
-5856 5164 5165 0.0156138568041909 0.0156138568041909
-5857 5165 5166 0.100589160353206 0.100589160353206
-5858 5166 5167 0.104247833927165 0.104247833927165
-5859 5167 3449 0.104250422099089 0.104250422099089
-5861 5168 3879 0.102808830950679 0.102808830950679
-5862 3879 841 0.103522696858037 0.103522696858037
-5863 841 5169 0.102719682704035 0.102719682704035
-5864 5169 5170 0.0474110701835865 0.0474110701835865
-5866 5171 5172 0.106685417852495 0.106685417852495
-5867 5172 5173 0.0515553847760644 0.0515553847760644
-5868 5173 4988 0.0505202363313306 0.0505202363313306
-17163 5107 1802 0.195280530173469 0.195280530173469
-5869 4988 962 0.105015490507221 0.105015490507221
-5870 962 4141 0.100506431839732 0.100506431839732
-5871 4141 3161 0.101307790482977 0.101307790482977
-5872 3161 3620 0.0948143449717999 0.0948143449717999
-5873 3620 1826 0.102953991217456 0.102953991217456
-5874 1826 4334 0.0954488426398559 0.0954488426398559
-5876 5174 1763 0.050455869495655 0.050455869495655
-5877 1763 4616 0.0477367574799653 0.0477367574799653
-5878 4616 5175 0.0514444022852647 0.0514444022852647
-5879 5175 4306 0.0486177089369888 0.0486177089369888
-5880 4306 994 0.0512355770161431 0.0512355770161431
-5881 994 4309 0.0460747606120818 0.0460747606120818
-5882 4309 2915 0.0558782384698847 0.0558782384698847
-5883 2915 2916 0.0205535416898751 0.0205535416898751
-5909 5190 5191 0.0526195895778432 0.0526195895778432
-5887 587 588 0.0168822192889414 0.0168822192889414
-5888 588 5177 0.110837670707715 0.110837670707715
-5889 5177 1399 0.106464576541899 0.106464576541899
-5890 1399 5178 0.00837287829367045 0.00837287829367045
-5891 5178 5179 0.0973274399582508 0.0973274399582508
-5892 5179 5180 0.0713882284598403 0.0713882284598403
-5893 5180 3386 0.0465173628433736 0.0465173628433736
-5894 3386 5181 0.0466294338105993 0.0466294338105993
-5895 5181 5182 0.0461505269276214 0.0461505269276214
-5896 5182 2801 0.0476762891770853 0.0476762891770853
-5897 2801 5183 0.0462906353191723 0.0462906353191723
-5898 5183 5184 0.0462689908237556 0.0462689908237556
-5899 5184 5185 0.0466469950505128 0.0466469950505128
-5900 5185 5186 0.0471146492559741 0.0471146492559741
-5901 5186 5187 0.045278465180898 0.045278465180898
-5902 5187 1570 0.0464406557272166 0.0464406557272166
-5903 1570 1095 0.0464745881593838 0.0464745881593838
-5904 1095 5188 0.0475893065083787 0.0475893065083787
-7153 6059 6060 0.0479619125752321 0.0479619125752321
-5905 5188 5189 0.0454253204645735 0.0454253204645735
-5906 5189 1538 0.0460968804258839 0.0460968804258839
-5907 1538 3854 0.04697776477365 0.04697776477365
-5908 3854 5190 0.0530473283120516 0.0530473283120516
-5911 5192 5193 0.0515193353777817 0.0515193353777817
-5913 5194 5195 0.0687779636933597 0.0687779636933597
-5914 5195 5090 0.141994718426853 0.141994718426853
-5915 5090 5196 0.112634336237225 0.112634336237225
-5916 5196 5197 0.0575743623042855 0.0575743623042855
-5917 5197 4671 0.100935765794822 0.100935765794822
-5918 4671 4951 0.0999693670841652 0.0999693670841652
-5919 4951 5198 0.0511858126232579 0.0511858126232579
-5921 5199 5200 0.0499779255146796 0.0499779255146796
-5922 5200 5201 0.0499920394458099 0.0499920394458099
-5923 5201 5202 0.0457134833999458 0.0457134833999458
-5924 5202 5203 0.0421294446780762 0.0421294446780762
-5925 5203 3957 0.137188173752203 0.137188173752203
-5926 3957 5204 0.0640931318030062 0.0640931318030062
-5927 5204 5205 0.0544857674041209 0.0544857674041209
-5928 5205 5206 0.0521757463337926 0.0521757463337926
-5929 5207 5208 0.0487730947754618 0.0487730947754618
-5930 5208 5209 0.0493635031974476 0.0493635031974476
-5932 5211 5212 0.207489392195287 0.207489392195287
-5933 5212 4646 0.099390326989904 0.099390326989904
-5935 3645 4555 0.0986517427687235 0.0986517427687235
-5937 5213 5214 0.322259629928437 0.322259629928437
-5938 5215 5216 0.143730822686287 0.143730822686287
-5939 5216 5217 0.0599126619694891 0.0599126619694891
-5940 5217 5218 0.202016907937226 0.202016907937226
-5942 5219 5220 0.186576382334646 0.186576382334646
-5944 5221 5222 0.13343391197395 0.13343391197395
-5945 5222 2558 0.200662474351154 0.200662474351154
-5946 2558 5224 0.208372800213582 0.208372800213582
-5947 5225 4431 0.102067442103011 0.102067442103011
-5948 4431 3711 0.0989108306469789 0.0989108306469789
-5949 3711 5226 0.107183313746265 0.107183313746265
-5950 5226 1839 0.179335285582576 0.179335285582576
-17165 4242 3547 0.202237742052361 0.202237742052361
-5951 1839 2611 0.178227308228011 0.178227308228011
-5952 2611 5195 0.176210949140518 0.176210949140518
-20492 10836 10813 0.00305693422510609 0.00305693422510609
-7198 6089 1755 0.0565523921918465 0.0565523921918465
-18301 5526 5737 0.156444459924747 0.156444459924747
-5957 4512 5230 0.200430868604248 0.200430868604248
-5959 5231 5232 0.20240814685365 0.20240814685365
-5960 5232 5233 0.200177276698155 0.200177276698155
-5961 5233 5234 0.403649470879027 0.403649470879027
-5962 3278 3181 0.152742056397443 0.152742056397443
-5964 3927 3703 0.0675866941557576 0.0675866941557576
-5965 3703 708 0.0999635221991015 0.0999635221991015
-5966 708 5235 0.0981118109963614 0.0981118109963614
-5967 5235 5236 0.0989915986442654 0.0989915986442654
-5968 5236 4189 0.135714784882046 0.135714784882046
-5969 4189 2515 0.133468058331593 0.133468058331593
-5970 2515 5237 0.135326951582466 0.135326951582466
-5971 5237 4803 0.135895734874124 0.135895734874124
-5972 4803 5238 0.136371570616542 0.136371570616542
-5973 5238 5239 0.126834347813211 0.126834347813211
-5974 5239 5240 0.133492367602304 0.133492367602304
-5975 5240 4624 0.131817065741689 0.131817065741689
-7224 4702 6106 0.102350270818551 0.102350270818551
-5979 2725 5242 0.133090700331069 0.133090700331069
-5981 5243 5244 0.0777207800874593 0.0777207800874593
-5982 5244 5245 0.710188326706697 0.710188326706697
-5983 3974 5246 0.196425810260379 0.196425810260379
-5984 5246 3422 0.201357225192724 0.201357225192724
-5986 3423 5247 0.0491810142725505 0.0491810142725505
-5987 5247 5248 0.0477450735797267 0.0477450735797267
-5989 5249 5250 0.055676102895211 0.055676102895211
-5990 5250 5251 0.140244564447974 0.140244564447974
-5991 5251 5252 0.170294636723478 0.170294636723478
-5993 5253 5254 0.106323677730181 0.106323677730181
-5994 5254 5108 0.109212547805518 0.109212547805518
-5995 5108 4725 0.103272467122344 0.103272467122344
-5996 4725 5255 0.103742512264204 0.103742512264204
-5997 5255 5256 0.105340810076794 0.105340810076794
-5999 5257 3136 0.108092936006134 0.108092936006134
-6000 3136 3908 0.107682657630117 0.107682657630117
-7243 6117 6118 0.0967566510311658 0.0967566510311658
-6001 3908 1048 0.108571568461532 0.108571568461532
-6002 1048 5258 0.101973343920372 0.101973343920372
-6003 5258 5259 0.106357911571636 0.106357911571636
-6005 5260 5009 0.0315381518095178 0.0315381518095178
-6006 5009 3333 0.108118604625977 0.108118604625977
-6007 3333 5261 0.119315074925742 0.119315074925742
-6008 5261 5263 0.0963665691070474 0.0963665691070474
-6009 5263 5264 0.0432816561908272 0.0432816561908272
-6010 5264 2085 0.0535379351296007 0.0535379351296007
-6011 2085 5265 0.105640004427027 0.105640004427027
-6012 5265 4130 0.106366490545515 0.106366490545515
-6013 4130 5266 0.109451940113279 0.109451940113279
-6014 5266 5267 0.101101610243622 0.101101610243622
-6018 5269 5270 0.0982982274574071 0.0982982274574071
-6019 5270 804 0.0991956500472809 0.0991956500472809
-6020 804 5271 0.0978879869631794 0.0978879869631794
-6021 5271 5272 0.0909649766992318 0.0909649766992318
-6022 5272 5273 0.0146836193769648 0.0146836193769648
-6024 5274 1956 0.174868207801427 0.174868207801427
-6027 5275 5276 0.0506368419660478 0.0506368419660478
-6028 5276 4990 0.0537681631666927 0.0537681631666927
-6029 4990 5277 0.102832227368728 0.102832227368728
-6030 5277 5278 0.0856095541145101 0.0856095541145101
-6032 1548 4268 0.202455793335308 0.202455793335308
-6033 4268 283 0.117344693446838 0.117344693446838
-6035 4141 5279 0.202925527060843 0.202925527060843
-6036 5279 2364 0.110547560275979 0.110547560275979
-6037 2364 4146 0.176928363643229 0.176928363643229
-6038 4146 5281 0.187030458155785 0.187030458155785
-6039 5281 5282 0.011246856594195 0.011246856594195
-6041 5283 2870 0.194705331985994 0.194705331985994
-6043 5285 5286 0.301111320410511 0.301111320410511
-6044 5287 5288 0.185724938270304 0.185724938270304
-6045 5288 5289 0.213285003773079 0.213285003773079
-6047 5290 5291 0.13629389839255 0.13629389839255
-6048 5291 5292 0.13355771854799 0.13355771854799
-6049 5292 4013 0.133867532403999 0.133867532403999
-6052 5294 3384 0.128421314744864 0.128421314744864
-6053 3384 5295 0.104229219478348 0.104229219478348
-6054 5295 3817 0.102592362577248 0.102592362577248
-6056 5296 5297 0.0990440053907464 0.0990440053907464
-6057 5297 5298 0.00501097787172802 0.00501097787172802
-6058 5298 5299 0.26852367463784 0.26852367463784
-6059 5299 5300 0.02711052781377 0.02711052781377
-6060 5300 5301 0.101042477184366 0.101042477184366
-6061 5301 5302 0.0980158544732548 0.0980158544732548
-6062 5302 5303 0.68853335666363 0.68853335666363
-6063 4532 3739 0.10058657036035 0.10058657036035
-6064 3739 5305 0.101344660556636 0.101344660556636
-6065 5305 1342 0.202678391855073 0.202678391855073
-6067 5306 4700 0.20166419460726 0.20166419460726
-6068 4700 5307 0.201175175307418 0.201175175307418
-6069 5307 5308 0.201920176537304 0.201920176537304
-6070 5308 5309 0.201920207593883 0.201920207593883
-6071 5309 777 0.201196100270561 0.201196100270561
-6072 777 5310 0.185040940142678 0.185040940142678
-6073 5310 5311 0.201942415647541 0.201942415647541
-6074 5311 5312 0.206000886771111 0.206000886771111
-7322 6161 6162 0.200977808302969 0.200977808302969
-6077 1729 5313 0.145417053241999 0.145417053241999
-6079 5314 5315 0.262924523321611 0.262924523321611
-6080 5316 3497 0.142809169887552 0.142809169887552
-6082 2903 5317 0.0402215187360589 0.0402215187360589
-6083 5317 5318 0.00632191300841853 0.00632191300841853
-6084 5318 5319 0.00945274881783772 0.00945274881783772
-6085 5319 5320 0.102488283152376 0.102488283152376
-6086 5320 5321 0.105737259840933 0.105737259840933
-6087 5321 5322 0.104280118546109 0.104280118546109
-6088 5322 5323 0.105008595801197 0.105008595801197
-6089 5323 5324 0.107079302112312 0.107079302112312
-6090 5324 3311 0.104784168499708 0.104784168499708
-6091 3311 5325 0.104972132929345 0.104972132929345
-6093 5328 5329 0.148443179384572 0.148443179384572
-6094 5329 4320 0.122968314186663 0.122968314186663
-6095 4320 5331 0.133138685881437 0.133138685881437
-6096 5331 5332 0.129500346452113 0.129500346452113
-6097 5332 5072 0.094543402764425 0.094543402764425
-6098 5072 5333 0.0140267468815188 0.0140267468815188
-7348 5506 4458 0.146478928082641 0.146478928082641
-6099 5333 5334 0.0971985352126134 0.0971985352126134
-6100 5334 5335 0.0675695345311337 0.0675695345311337
-6101 5335 5336 0.135628949553031 0.135628949553031
-6102 5336 5337 0.134096180080561 0.134096180080561
-6103 5337 5338 0.121603742223712 0.121603742223712
-6104 5338 5339 0.288999775625269 0.288999775625269
-6105 5339 5340 0.295278488962845 0.295278488962845
-6106 5340 5341 0.386769671992271 0.386769671992271
-6107 5341 5342 0.199175415622423 0.199175415622423
-18500 9718 6670 0.0335166183519053 0.0335166183519053
-6108 272 2532 0.233490999842372 0.233490999842372
-6109 2532 2534 0.010275790210419 0.010275790210419
-6111 5343 5344 0.134883731263317 0.134883731263317
-6112 5344 2487 0.132908396505932 0.132908396505932
-6113 2487 2828 0.130466466605355 0.130466466605355
-6114 2828 1436 0.203164250472258 0.203164250472258
-6115 1436 5345 0.151025004833817 0.151025004833817
-6117 5346 5347 0.17552323432827 0.17552323432827
-6118 5347 3107 0.175398997422213 0.175398997422213
-6119 3107 5348 0.192385063711178 0.192385063711178
-6121 1515 5349 0.354712199012844 0.354712199012844
-6123 4219 5350 0.184992548254205 0.184992548254205
-6124 5350 5351 0.809194581386362 0.809194581386362
-6125 3828 5352 0.158319505042179 0.158319505042179
-6127 3683 5353 0.00756991430853718 0.00756991430853718
-6128 5353 5354 0.0600900021718448 0.0600900021718448
-6129 5354 5355 0.0486030977669072 0.0486030977669072
-6130 5355 5356 0.00770962942235081 0.00770962942235081
-6132 5357 5358 0.0529187112553076 0.0529187112553076
-6133 5358 5359 0.0513821813874635 0.0513821813874635
-6134 5359 5360 0.0534444522847469 0.0534444522847469
-6135 5360 5361 0.0503260757639254 0.0503260757639254
-6137 5362 5363 0.199678713236371 0.199678713236371
-6139 4554 5364 0.257952059435159 0.257952059435159
-6141 2203 5365 0.125513593247199 0.125513593247199
-6142 5365 5366 0.121103405669087 0.121103405669087
-6143 5366 5367 0.118905793541669 0.118905793541669
-6144 5367 5368 0.110432655754222 0.110432655754222
-7394 6208 6209 0.0520019237828089 0.0520019237828089
-6145 5368 4924 0.050653673780936 0.050653673780936
-6146 4924 5369 0.0113612305905717 0.0113612305905717
-6148 5370 5371 0.0511886893302135 0.0511886893302135
-6149 5371 3733 0.0547546687048594 0.0547546687048594
-6150 3733 5372 0.0739604711312813 0.0739604711312813
-6151 5372 5373 0.0333758188249575 0.0333758188249575
-6152 5373 5374 0.0326832624474652 0.0326832624474652
-6153 5374 4487 0.0687015455014252 0.0687015455014252
-6155 5375 5376 0.083676019608772 0.083676019608772
-6157 5377 5378 0.539527941615599 0.539527941615599
-6158 5379 5380 0.024339909926927 0.024339909926927
-6159 5380 5381 0.0572545808576417 0.0572545808576417
-6161 5382 5383 0.0919429478923695 0.0919429478923695
-6162 5383 4632 0.0667555867186957 0.0667555867186957
-6163 4632 4638 0.073630878201174 0.073630878201174
-6164 4638 4551 0.135095610306562 0.135095610306562
-6165 4551 5384 0.293762175707744 0.293762175707744
-6167 2098 5385 0.176238767515036 0.176238767515036
-6168 5385 3108 0.175113982885218 0.175113982885218
-6169 3108 5386 0.213105615274275 0.213105615274275
-6170 5386 5387 0.16568697132589 0.16568697132589
-6171 5387 5388 0.0444779706577198 0.0444779706577198
-6173 1958 3829 0.172873649500925 0.172873649500925
-6174 3829 3827 0.0048313839727239 0.0048313839727239
-6175 3827 5389 0.152170039924714 0.152170039924714
-6176 5389 547 0.0103214739502372 0.0103214739502372
-6177 547 3259 0.110383801281946 0.110383801281946
-6178 3259 3297 0.0174353644977756 0.0174353644977756
-6180 4220 5391 0.40468883776866 0.40468883776866
-6181 1473 5392 0.374922653008132 0.374922653008132
-6182 5392 2947 0.18613051410303 0.18613051410303
-6184 5393 5394 0.133683449538656 0.133683449538656
-6185 5394 5395 0.00436494876438714 0.00436494876438714
-6186 5395 5396 0.00413948116283948 0.00413948116283948
-6187 5396 5397 0.135591162545584 0.135591162545584
-6188 5397 5398 0.140883972058497 0.140883972058497
-6189 5398 823 0.138673141914839 0.138673141914839
-6190 823 3564 0.136111333534187 0.136111333534187
-6191 3564 5399 0.14331239683406 0.14331239683406
-6193 5400 3028 0.141885844467344 0.141885844467344
-7436 5227 5219 0.0266079784612615 0.0266079784612615
-6195 5401 5402 0.00584885314190653 0.00584885314190653
-6196 5402 5403 0.138593356569714 0.138593356569714
-6197 5403 1157 0.139497033685325 0.139497033685325
-6198 1157 878 0.139538816070218 0.139538816070218
-6199 878 4466 0.138604668182001 0.138604668182001
-6200 4466 2786 0.1346682214983 0.1346682214983
-6201 2786 5257 0.131712815882714 0.131712815882714
-6202 5257 5404 0.212033227364557 0.212033227364557
-6203 5404 5405 0.140381205630714 0.140381205630714
-6204 5405 5406 0.175882952103236 0.175882952103236
-6206 4761 5407 0.0777628340765697 0.0777628340765697
-6207 5407 5411 0.121860688460736 0.121860688460736
-6208 5411 5412 0.203436645645446 0.203436645645446
-6211 5413 3128 0.197988223180436 0.197988223180436
-6213 5414 5415 0.127346625489507 0.127346625489507
-6214 5415 5416 0.202431697844534 0.202431697844534
-6216 5417 5418 0.0360920642856509 0.0360920642856509
-18249 10283 10284 0.0379598203284706 0.0379598203284706
-6217 5418 5419 0.175688258529037 0.175688258529037
-6218 5419 5420 0.176513424391556 0.176513424391556
-6219 5420 671 0.183363162969023 0.183363162969023
-6220 671 5421 0.00332688246962709 0.00332688246962709
-6221 5421 5422 0.175194594065608 0.175194594065608
-6222 5422 4601 0.174116514777802 0.174116514777802
-6223 4601 5423 0.141050765485302 0.141050765485302
-6225 2950 5424 0.133468479991587 0.133468479991587
-6226 5425 3096 0.198372842511786 0.198372842511786
-6227 3096 3206 0.203187034114148 0.203187034114148
-6228 3206 5426 0.199398136177365 0.199398136177365
-6229 5426 1916 0.200785704053696 0.200785704053696
-6231 5427 5428 0.208049356186156 0.208049356186156
-6232 5428 5429 0.195358366621449 0.195358366621449
-6233 5429 5430 0.0822508872394256 0.0822508872394256
-6234 5431 3740 0.099853044127537 0.099853044127537
-6235 3740 5432 0.079904711368683 0.079904711368683
-6236 5432 5433 0.0177357578673254 0.0177357578673254
-6237 5433 1299 0.160881213225809 0.160881213225809
-6238 1299 1344 0.0431325120453993 0.0431325120453993
-6239 1344 5434 0.202930771593003 0.202930771593003
-6240 5434 5435 0.195937805328833 0.195937805328833
-6241 5435 4701 0.00964060014055181 0.00964060014055181
-6242 4701 5436 0.088911763330732 0.088911763330732
-6243 5436 5437 0.105079205678488 0.105079205678488
-6244 5437 5438 0.0943047001329777 0.0943047001329777
-6245 5438 5439 0.100620360394738 0.100620360394738
-6246 5439 5440 0.0146794154501444 0.0146794154501444
-6247 5440 4965 0.086276226710605 0.086276226710605
-6248 4965 5441 0.10739345579216 0.10739345579216
-6249 5441 5442 0.0951717377148208 0.0951717377148208
-6250 5442 5443 0.0976857174224503 0.0976857174224503
-6252 779 5444 0.0823735255229089 0.0823735255229089
-6253 5444 5445 0.102122427250782 0.102122427250782
-6254 5445 4958 0.133513290288167 0.133513290288167
-6255 4958 5446 0.0684224753039321 0.0684224753039321
-6256 5446 5447 0.00769468892365438 0.00769468892365438
-6257 5447 5448 0.199639504943165 0.199639504943165
-6258 5448 1501 0.201263981115328 0.201263981115328
-6259 1501 174 0.201029338652354 0.201029338652354
-6261 1704 1730 0.0545082426213867 0.0545082426213867
-6262 1730 5451 0.146076957823045 0.146076957823045
-6263 5451 5452 1.20615427321132 1.20615427321132
-6265 5456 5457 0.107171013555617 0.107171013555617
-6266 5457 5458 0.0551341429674013 0.0551341429674013
-6267 5458 5459 0.053860211885536 0.053860211885536
-6268 5459 5460 0.109859438734606 0.109859438734606
-6269 5460 5461 0.104952215686531 0.104952215686531
-6270 5461 5462 0.0537660564474852 0.0537660564474852
-6271 5462 5463 0.0468001440268365 0.0468001440268365
-6273 5464 5465 0.0487076064705391 0.0487076064705391
-6274 5465 5466 0.096682643717806 0.096682643717806
-6275 5466 5052 0.0976295695745084 0.0976295695745084
-6276 5052 5467 0.0498503558842522 0.0498503558842522
-6277 5467 5468 0.0500897185974344 0.0500897185974344
-6279 5223 978 0.0483462615206691 0.0483462615206691
-6280 978 5469 0.0500186833718628 0.0500186833718628
-6281 5469 5470 0.0466179289686935 0.0466179289686935
-6282 5470 5471 0.0496889709391185 0.0496889709391185
-6283 5471 5472 0.0500395303728477 0.0500395303728477
-6284 5472 4947 0.0500649255411997 0.0500649255411997
-6285 4947 5119 0.0486069729184005 0.0486069729184005
-6286 5119 5473 0.0497694572157541 0.0497694572157541
-6287 5473 4719 0.0482501223288259 0.0482501223288259
-6288 4719 5474 0.0825694493004343 0.0825694493004343
-6289 5474 5475 0.013401399089124 0.013401399089124
-6290 5475 5476 0.103889728134339 0.103889728134339
-6291 5476 5419 0.103815153646491 0.103815153646491
-6292 5419 5477 0.109635415021011 0.109635415021011
-6294 3890 1020 0.105962717150938 0.105962717150938
-6295 1020 5478 0.052027246508575 0.052027246508575
-6296 5478 5479 0.0524872333525023 0.0524872333525023
-6297 5479 3719 0.052252544610622 0.052252544610622
-6298 3719 5480 0.0538013756911254 0.0538013756911254
-6299 5480 5481 0.0436600330786078 0.0436600330786078
-6300 5481 5482 0.00837974421686285 0.00837974421686285
-14763 7162 4611 0.176903840452458 0.176903840452458
-6301 5482 5026 0.040489278057912 0.040489278057912
-6302 5026 3338 0.107876149200874 0.107876149200874
-6303 3338 5483 0.0990429074228521 0.0990429074228521
-6304 5483 5484 0.0966066822218646 0.0966066822218646
-6305 5484 5485 0.085086759759281 0.085086759759281
-6306 5485 5486 0.0169728889677259 0.0169728889677259
-6307 5486 2067 0.0825646387998858 0.0825646387998858
-6309 5487 2667 0.0866869262626222 0.0866869262626222
-6310 2667 2664 0.00897895817052901 0.00897895817052901
-6311 2664 4137 0.0908182867369719 0.0908182867369719
-6312 4137 5488 0.0965705527653259 0.0965705527653259
-6313 5488 5489 0.0942751679467969 0.0942751679467969
-6314 5489 5490 0.0959916716400224 0.0959916716400224
-6315 5490 3461 0.0933212956911074 0.0933212956911074
-6316 3461 5491 0.0467923341231575 0.0467923341231575
-6317 5491 5492 0.0479894648111637 0.0479894648111637
-6318 5492 5493 0.094030978726141 0.094030978726141
-6319 5493 861 0.0920531787302436 0.0920531787302436
-6320 861 5494 0.092346282981082 0.092346282981082
-6321 5494 5495 0.091117734759624 0.091117734759624
-20501 10824 10839 0.0279151158292869 0.0279151158292869
-6323 5496 5497 0.0512308809047994 0.0512308809047994
-6324 5497 5498 0.0547050066584288 0.0547050066584288
-6325 5498 5499 0.0532065647068504 0.0532065647068504
-6326 5499 5500 0.0520026026999989 0.0520026026999989
-6327 5500 5501 0.0600453089722235 0.0600453089722235
-6328 5501 5502 0.0451373924487277 0.0451373924487277
-7588 6319 6320 0.0874047970677394 0.0874047970677394
-6330 5503 5504 0.0512021800904844 0.0512021800904844
-6331 5504 5505 0.0535897595927606 0.0535897595927606
-6332 5505 5506 0.0503264318858696 0.0503264318858696
-6333 5506 5507 0.0549843628648472 0.0549843628648472
-6334 5507 3309 0.0521587927419047 0.0521587927419047
-6335 3309 5508 0.0557422576502987 0.0557422576502987
-6336 5508 5509 0.0498065817995712 0.0498065817995712
-6338 5510 5511 0.10273263586878 0.10273263586878
-6339 5511 5512 0.103095987250104 0.103095987250104
-6340 5512 3020 0.0125186689867189 0.0125186689867189
-6341 3020 5513 0.0466432236195876 0.0466432236195876
-6342 5513 4381 0.0509815437370977 0.0509815437370977
-6344 5514 5515 0.103259680904514 0.103259680904514
-6345 5515 3934 0.0990266173550878 0.0990266173550878
-6346 3934 5516 0.10122291130851 0.10122291130851
-6347 5516 3707 0.107162793104657 0.107162793104657
-6348 3707 717 0.101965718351369 0.101965718351369
-6349 717 5517 0.10489500722876 0.10489500722876
-6350 5517 5518 0.0880249775504832 0.0880249775504832
-6352 5519 4201 0.0955388621117037 0.0955388621117037
-6353 4201 1068 0.10398483351111 0.10398483351111
-6354 1068 2504 0.101881809876575 0.101881809876575
-6355 2504 5520 0.10295538196753 0.10295538196753
-6356 5520 1231 0.0964004159007037 0.0964004159007037
-6357 1231 4809 0.0995624903271375 0.0995624903271375
-6358 4809 2176 0.101169164261142 0.101169164261142
-6359 2176 5521 0.102032335854251 0.102032335854251
-6360 5521 348 0.0731550647240869 0.0731550647240869
-6361 348 351 0.0329026304601732 0.0329026304601732
-6363 5522 4629 0.122115753805888 0.122115753805888
-6364 4629 1258 0.132003632804436 0.132003632804436
-6366 377 4544 0.0548661978897115 0.0548661978897115
-6367 4544 2700 0.136738193723685 0.136738193723685
-6368 2700 5523 0.130559333935347 0.130559333935347
-6371 5525 1133 0.0486624445582808 0.0486624445582808
-6372 1133 5526 0.0510752177714687 0.0510752177714687
-6373 5526 5527 0.0534768474459495 0.0534768474459495
-6374 5527 3849 0.0993499397911337 0.0993499397911337
-20247 6972 10718 0.0278784612667637 0.0278784612667637
-6375 3849 5528 0.0502810849564127 0.0502810849564127
-6376 5528 5529 0.0506206995449551 0.0506206995449551
-6378 3432 5530 0.0954898525843842 0.0954898525843842
-6379 5530 1409 0.0985492973952367 0.0985492973952367
-6380 1409 5531 0.102140021124127 0.102140021124127
-6381 5531 3995 0.106588318724824 0.106588318724824
-6382 3995 5532 0.089989655098645 0.089989655098645
-6383 5532 5533 0.0940983975381981 0.0940983975381981
-6384 5533 3749 0.102559803256087 0.102559803256087
-6385 3749 5534 0.132377311804748 0.132377311804748
-6388 2028 5536 0.103552176267271 0.103552176267271
-6391 3402 5538 0.101285303038309 0.101285303038309
-6392 5538 5539 0.0982612440798091 0.0982612440798091
-6393 5539 5540 0.104203916508807 0.104203916508807
-6394 5540 5541 0.0994909347746214 0.0994909347746214
-6395 5541 5542 0.0496866830167122 0.0496866830167122
-6396 5542 1115 0.0483270289965061 0.0483270289965061
-6397 1115 5543 0.0505090974663915 0.0505090974663915
-6398 5543 5544 0.051466523607823 0.051466523607823
-6399 5544 5545 0.0509771831188889 0.0509771831188889
-18369 6894 6889 0.0506808956189271 0.0506808956189271
-6400 5545 3837 0.0484293465449961 0.0484293465449961
-6402 5546 5547 0.0572465530818606 0.0572465530818606
-6403 5547 4036 0.051041556606541 0.051041556606541
-6404 4036 5548 0.0609619584955507 0.0609619584955507
-6405 1878 4178 0.0543518295000293 0.0543518295000293
-6406 4178 5549 0.0885356562805968 0.0885356562805968
-6408 1863 2630 0.0954187587481574 0.0954187587481574
-6409 2630 2609 0.0942841337329746 0.0942841337329746
-6410 2609 5207 0.106776685868403 0.106776685868403
-6411 5207 5191 0.0702035466323056 0.0702035466323056
-6412 5191 5550 0.105689823753241 0.105689823753241
-6414 5551 5552 0.13548002915508 0.13548002915508
-6415 5552 5553 0.0682592832885596 0.0682592832885596
-6416 5553 19 0.0650116042038798 0.0650116042038798
-6417 19 2991 0.133631170313494 0.133631170313494
-6418 2991 5554 0.0524731372315077 0.0524731372315077
-6419 5554 1882 0.0490816557393864 0.0490816557393864
-6420 1882 5555 0.0508829391590993 0.0508829391590993
-6421 5555 5556 0.0494818870663145 0.0494818870663145
-6422 5556 5557 0.0511609921162368 0.0511609921162368
-6423 5557 5558 0.0498069369814246 0.0498069369814246
-6424 5558 5559 0.0494751154031395 0.0494751154031395
-6425 5559 5560 0.0510095826256232 0.0510095826256232
-18695 5978 4055 0.196460738141722 0.196460738141722
-6426 5560 5561 0.100658038986824 0.100658038986824
-6427 5561 5562 0.100189919501299 0.100189919501299
-6428 5562 5243 0.0999621826427635 0.0999621826427635
-6429 5243 5563 0.0514845629022423 0.0514845629022423
-6430 5563 5564 0.0509507800422364 0.0509507800422364
-6431 5564 5565 0.0506384299937204 0.0506384299937204
-6432 5565 5566 0.0502094012018427 0.0502094012018427
-6433 5566 5567 0.0352773306402212 0.0352773306402212
-6434 5567 1696 0.0663073245001768 0.0663073245001768
-6435 1696 5568 0.200475700974595 0.200475700974595
-6436 5568 2444 0.175243279627828 0.175243279627828
-6438 5569 5570 0.150878938410471 0.150878938410471
-6439 5570 5571 0.0520399442807291 0.0520399442807291
-6440 5571 5572 0.00805055351559969 0.00805055351559969
-6441 5572 5573 0.0547971824088202 0.0547971824088202
-6442 5573 5529 0.0419651880906561 0.0419651880906561
-6443 5529 5574 0.00738334312936163 0.00738334312936163
-6444 5574 5575 0.0892116998808573 0.0892116998808573
-6445 5575 5576 0.0587189734757016 0.0587189734757016
-6446 5576 5577 0.143444822058071 0.143444822058071
-6447 5577 5578 0.0305007791534936 0.0305007791534936
-6448 5578 5579 0.0181914980281834 0.0181914980281834
-6449 5579 5580 0.150469022298562 0.150469022298562
-6450 5580 5581 0.204922214354376 0.204922214354376
-6451 5581 5582 0.0983186744589269 0.0983186744589269
-6452 5582 1433 0.108782481382419 0.108782481382419
-6453 1433 5583 0.123482673613688 0.123482673613688
-6454 5583 5584 0.0754033254163114 0.0754033254163114
-6455 5584 5585 0.194791277181441 0.194791277181441
-6456 5585 5586 0.0533068649535537 0.0533068649535537
-6457 5586 2555 0.14827848293408 0.14827848293408
-6458 2555 5587 0.408042656170713 0.408042656170713
-6459 5588 5589 0.135112968623698 0.135112968623698
-6460 5589 5590 0.203702085134274 0.203702085134274
-6461 5590 5591 0.207620262278034 0.207620262278034
-6462 5591 4585 0.131035476997682 0.131035476997682
-6463 4585 5592 0.072769358589151 0.072769358589151
-6464 5592 5593 0.0625746572307696 0.0625746572307696
-6465 5593 5301 0.137225765514935 0.137225765514935
-6467 5594 5595 0.274145349571988 0.274145349571988
-6468 5595 5596 0.205443804135366 0.205443804135366
-6469 5596 5597 0.121926623756206 0.121926623756206
-6470 5597 5598 0.202580256912195 0.202580256912195
-6472 4361 5599 0.206258701511779 0.206258701511779
-6474 5600 5601 0.168149469233138 0.168149469233138
-6476 2625 5205 0.166253482314503 0.166253482314503
-6502 5622 5516 0.138783948073856 0.138783948073856
-6477 5205 5602 0.15603138237828 0.15603138237828
-6478 5602 5603 0.0341829476854199 0.0341829476854199
-6479 5603 5604 0.162233690102157 0.162233690102157
-6480 5604 5605 0.176890418224524 0.176890418224524
-6481 5605 5606 0.121703194532156 0.121703194532156
-6482 5606 5609 0.0547747917576354 0.0547747917576354
-6483 5609 5610 0.177274555583034 0.177274555583034
-6484 5610 5611 0.0562757523743122 0.0562757523743122
-6485 5611 5381 0.0971287684245127 0.0971287684245127
-6486 5381 5370 0.0242294178668139 0.0242294178668139
-6487 5370 5612 0.177146422666141 0.177146422666141
-6488 5612 5613 0.176947014024794 0.176947014024794
-6489 5613 5614 0.177715418603807 0.177715418603807
-6490 5614 5615 0.0918268918834614 0.0918268918834614
-6491 5615 5616 0.00795060277662081 0.00795060277662081
-6493 5617 5618 0.0159556400855116 0.0159556400855116
-6496 5619 5620 0.132547309025511 0.132547309025511
-6497 5620 1667 0.132931219459218 0.132931219459218
-6498 1667 5621 0.138273532739947 0.138273532739947
-6499 5621 2448 0.13601631946961 0.13601631946961
-6500 2448 3238 0.136726308588665 0.136726308588665
-6501 3238 5622 0.14083949408811 0.14083949408811
-6503 5516 5623 0.135704638458681 0.135704638458681
-6504 5623 5624 0.00588469429500613 0.00588469429500613
-6505 5624 5625 0.115900802279231 0.115900802279231
-6506 5625 5626 0.19877742240622 0.19877742240622
-6507 5626 110 0.101954628240396 0.101954628240396
-6508 110 2818 0.0990079626838536 0.0990079626838536
-6509 2818 1419 0.203073935940985 0.203073935940985
-6510 1419 5627 0.11954884298017 0.11954884298017
-6511 2917 5628 0.0366435746314918 0.0366435746314918
-6513 3710 5629 0.104723848956837 0.104723848956837
-6514 5629 5630 0.0524718119166661 0.0524718119166661
-6515 5630 5631 0.0523604583661445 0.0523604583661445
-6516 5631 963 0.102688945741692 0.102688945741692
-6519 2898 5632 0.0542316769914945 0.0542316769914945
-6520 5632 5633 0.0508977749431617 0.0508977749431617
-6521 5633 5634 0.106035617894042 0.106035617894042
-6522 5634 4734 0.104599442261749 0.104599442261749
-6524 5635 5399 0.0949731678048623 0.0949731678048623
-6525 5399 5636 0.053273863098243 0.053273863098243
-6526 5636 5637 0.0532054766684841 0.0532054766684841
-6527 5637 3901 0.105282590951624 0.105282590951624
-6528 3901 1038 0.105350981348288 0.105350981348288
-6530 5638 5639 0.103436146317209 0.103436146317209
-6531 5639 5004 0.104923546637106 0.104923546637106
-6532 5004 3324 0.10200854500581 0.10200854500581
-20515 10842 6731 0.00724303302685487 0.00724303302685487
-6533 3324 5640 0.105949384946318 0.105949384946318
-6534 5640 5641 0.102726616753478 0.102726616753478
-6535 5641 2075 0.105470656717315 0.105470656717315
-6536 2075 2672 0.106385362776241 0.106385362776241
-6537 2672 4122 0.107308593371936 0.107308593371936
-6538 4122 5642 0.107983920400391 0.107983920400391
-6539 5642 5643 0.0919555733248638 0.0919555733248638
-7832 6456 349 0.0697483782641925 0.0697483782641925
-6540 5643 5644 0.101410180701687 0.101410180701687
-6541 5644 3470 0.100777601888944 0.100777601888944
-6542 3470 5645 0.101863251928372 0.101863251928372
-6543 5645 3873 0.0981959903542781 0.0981959903542781
-6544 3873 849 0.100085165894781 0.100085165894781
-6546 1400 5646 0.00898751016812899 0.00898751016812899
-6547 5646 5647 0.190632434837625 0.190632434837625
-6548 5647 3388 0.011727623160982 0.011727623160982
-6549 3388 5648 0.0568259028608414 0.0568259028608414
-6550 5648 5649 0.00637619061562419 0.00637619061562419
-6551 5649 5650 0.0463019954871414 0.0463019954871414
-6552 5650 2800 0.0477133812275841 0.0477133812275841
-6553 2800 5651 0.0470719166287448 0.0470719166287448
-6554 5651 5652 0.0458325636837201 0.0458325636837201
-6555 5652 5653 0.046653544202397 0.046653544202397
-6556 5653 5654 0.0464726377537293 0.0464726377537293
-6557 5654 5655 0.0469344544346564 0.0469344544346564
-6558 5655 2751 0.046215112991852 0.046215112991852
-6559 2751 1096 0.0461039483088431 0.0461039483088431
-6560 1096 5656 0.0452023576254509 0.0452023576254509
-6561 5656 5657 0.0460150379661812 0.0460150379661812
-6562 5657 1539 0.0464321875423527 0.0464321875423527
-6563 1539 3855 0.0473472190950861 0.0473472190950861
-6565 4485 345 0.22138299033862 0.22138299033862
-6566 345 5661 0.163308085042962 0.163308085042962
-6567 5661 5662 0.065819748510902 0.065819748510902
-6568 5661 5663 0.0801840013229962 0.0801840013229962
-6569 3287 5665 0.0688755620206119 0.0688755620206119
-6570 5665 5666 0.0427865432685629 0.0427865432685629
-6571 5666 523 0.0741847082758752 0.0741847082758752
-6572 523 5667 0.0513515905827488 0.0513515905827488
-6573 5667 597 0.0787762757947461 0.0787762757947461
-6574 597 4825 0.152733980621547 0.152733980621547
-6576 2530 1931 0.0607754389242505 0.0607754389242505
-6578 5668 5669 0.20518077925237 0.20518077925237
-6580 5670 2976 0.052930873102536 0.052930873102536
-6582 5671 5672 0.0669604143503768 0.0669604143503768
-6583 5672 3722 0.0539771509338677 0.0539771509338677
-6584 3722 5673 0.103203771462203 0.103203771462203
-6585 5673 5674 0.175725539559539 0.175725539559539
-6587 5675 5676 0.204879915807757 0.204879915807757
-6588 5677 5678 0.00677682168687122 0.00677682168687122
-6589 5678 1665 0.0567234226799308 0.0567234226799308
-6590 1665 5679 0.122659531226911 0.122659531226911
-6592 5680 5681 0.862768870925976 0.862768870925976
-6593 5682 5683 0.164927546324728 0.164927546324728
-6594 5683 4367 0.0355730578333277 0.0355730578333277
-6595 4367 1448 0.193853665061985 0.193853665061985
-6596 1448 5688 0.205590441563944 0.205590441563944
-6598 5689 5690 0.100594816308247 0.100594816308247
-6599 5690 5691 0.0991234853564762 0.0991234853564762
-6601 5438 5692 0.211107914724763 0.211107914724763
-6602 5692 4415 0.193109246091061 0.193109246091061
-6603 4415 5693 0.226139344299967 0.226139344299967
-6606 4323 5694 0.0859068688818743 0.0859068688818743
-6608 5695 5696 0.0748977449692987 0.0748977449692987
-6609 5696 5073 0.0868839085552243 0.0868839085552243
-6610 5073 5333 0.0187220275557185 0.0187220275557185
-6612 5697 1590 0.201198112839976 0.201198112839976
-18141 10274 10269 0.134684266769083 0.134684266769083
-6613 1590 1640 0.20125093456728 0.20125093456728
-6615 5698 5699 0.200385663675414 0.200385663675414
-6617 5700 5701 0.196514919519562 0.196514919519562
-6618 5701 5248 0.110632746994 0.110632746994
-6619 5248 5702 0.0945616875172071 0.0945616875172071
-6620 5702 1685 0.205454867561864 0.205454867561864
-6621 1685 5703 0.206063854698429 0.206063854698429
-6622 5703 2430 0.199691165132387 0.199691165132387
-6623 2430 5704 0.202603259150386 0.202603259150386
-6625 4504 4050 0.176201016140026 0.176201016140026
-6626 4050 5707 0.173108439499024 0.173108439499024
-6628 1851 2587 0.179402678295732 0.179402678295732
-6630 5708 5709 0.275624196707738 0.275624196707738
-6632 5710 5711 0.261275347332411 0.261275347332411
-6634 5712 5713 0.0444779706577198 0.0444779706577198
-6635 5714 5715 0.183336097782058 0.183336097782058
-6636 5715 5716 0.203064462732684 0.203064462732684
-6638 5717 5718 0.153081250432522 0.153081250432522
-6639 5718 5719 0.011675447758709 0.011675447758709
-6641 1422 5720 0.117935613657917 0.117935613657917
-6643 5721 5722 0.194099197890973 0.194099197890973
-6644 5722 2542 0.201930616083342 0.201930616083342
-6645 2542 5723 0.411877202316789 0.411877202316789
-6646 5724 624 0.116891424974631 0.116891424974631
-6648 5725 5726 0.225973303098124 0.225973303098124
-6649 5726 3656 0.0613034024300807 0.0613034024300807
-6651 5727 5728 0.116763945302488 0.116763945302488
-6652 3634 5729 0.249262670016259 0.249262670016259
-6653 5729 5730 0.0886979206005476 0.0886979206005476
-6654 5730 5731 0.061003880318824 0.061003880318824
-6655 5731 3294 0.169569384240282 0.169569384240282
-6657 5730 5729 0.0886979206005476 0.0886979206005476
-18322 2543 7478 0.411854888798545 0.411854888798545
-6660 716 5733 0.106180030125168 0.106180030125168
-6661 5733 5734 0.0889628078792179 0.0889628078792179
-6663 5735 5736 0.0499420076759338 0.0499420076759338
-6664 5736 1132 0.0480445960055664 0.0480445960055664
-6665 1132 5737 0.0493807651843696 0.0493807651843696
-6666 5737 5738 0.0542607296398929 0.0542607296398929
-6667 5738 3848 0.102653360815707 0.102653360815707
-6668 3848 5739 0.0481952973910705 0.0481952973910705
-6669 5739 5570 0.0504068578554883 0.0504068578554883
-6671 5740 5741 0.102055279401325 0.102055279401325
-6672 5741 3933 0.103350213888063 0.103350213888063
-6675 5742 4200 0.0968208569301817 0.0968208569301817
-6676 4200 4193 0.0357662020116287 0.0357662020116287
-6677 4193 1067 0.0660115016724451 0.0660115016724451
-6678 1067 2520 0.0682249892032966 0.0682249892032966
-6679 2520 2503 0.0444235862340648 0.0444235862340648
-6680 2503 5743 0.0929237526477458 0.0929237526477458
-6681 5743 1230 0.097564382820973 0.097564382820973
-6682 1230 4808 0.0974618272678182 0.0974618272678182
-6683 4808 2175 0.100974351727253 0.100974351727253
-6685 5744 5745 0.139227813146129 0.139227813146129
-20421 10782 10783 0.171335167034037 0.171335167034037
-6686 5745 4628 0.122998125096167 0.122998125096167
-6687 4628 378 0.0772242252157125 0.0772242252157125
-6688 378 1257 0.0550380704812319 0.0550380704812319
-6689 1257 4543 0.132381944494249 0.132381944494249
-6690 4543 2715 0.0724896248395526 0.0724896248395526
-7972 6547 5411 0.11011441218455 0.11011441218455
-6691 2715 2699 0.0727973179644107 0.0727973179644107
-6692 2699 5748 0.121810190364873 0.121810190364873
-6696 5750 5751 0.00763183841002978 0.00763183841002978
-6697 5751 5752 0.692257458082336 0.692257458082336
-6698 2026 4672 0.134236367930218 0.134236367930218
-6699 4672 5753 0.102239429594337 0.102239429594337
-6700 5753 5754 0.100506379378587 0.100506379378587
-6702 5755 5756 0.2002287044093 0.2002287044093
-6704 5757 5758 0.173042563926175 0.173042563926175
-6706 5759 744 0.063721377479395 0.063721377479395
-6707 744 1562 0.141424652289019 0.141424652289019
-6708 1562 5760 0.139452228533295 0.139452228533295
-6709 5760 5761 0.121153404070921 0.121153404070921
-6710 5761 5762 0.0103214683330101 0.0103214683330101
-6711 5762 5763 0.04652452941841 0.04652452941841
-6712 5764 5765 0.155984788161682 0.155984788161682
-6716 5767 5768 0.200784793626825 0.200784793626825
-6743 3756 5769 0.0494129956173261 0.0494129956173261
-7994 6557 2764 0.0940480727939324 0.0940480727939324
-6717 5768 5772 0.846413211947238 0.846413211947238
-6718 5772 517 0.0606861281340196 0.0606861281340196
-6719 517 5773 0.188473310975888 0.188473310975888
-6721 5774 5775 0.0796153059223016 0.0796153059223016
-6722 5775 5776 0.00646390558051832 0.00646390558051832
-6723 5776 3007 0.1066159594542 0.1066159594542
-6724 3007 5777 0.100407769542541 0.100407769542541
-6725 5777 4393 0.00579135202620092 0.00579135202620092
-6726 4393 5778 0.102044175747327 0.102044175747327
-6727 5778 5779 0.107668499777307 0.107668499777307
-6728 5779 5780 0.108043382155599 0.108043382155599
-6729 5780 5781 0.101222003009649 0.101222003009649
-6730 5781 5782 0.103527244594317 0.103527244594317
-6733 5784 5785 0.0519740547318723 0.0519740547318723
-6734 5785 5786 0.0540518378903488 0.0540518378903488
-6735 5786 5787 0.105403398355375 0.105403398355375
-6736 5787 5788 0.0515636589786252 0.0515636589786252
-6737 5788 5789 0.0542361941294726 0.0542361941294726
-6738 5789 1159 0.0519632563805573 0.0519632563805573
-6739 1159 1609 0.055296326623055 0.055296326623055
-6742 5791 3756 0.0502859716725157 0.0502859716725157
-6744 5769 5792 0.0505152652453619 0.0505152652453619
-6745 5792 5793 0.0487326254633791 0.0487326254633791
-6746 5793 5794 0.0492772484970981 0.0492772484970981
-6747 5794 5795 0.0490197084274457 0.0490197084274457
-6748 5795 4008 0.0494402902066907 0.0494402902066907
-6749 4008 5796 0.0498144967732103 0.0498144967732103
-6750 5796 5797 0.0492676243070722 0.0492676243070722
-6751 5797 5798 0.0496699296957128 0.0496699296957128
-6752 5798 1392 0.0490530110641543 0.0490530110641543
-6753 1392 5799 0.0511729331725758 0.0511729331725758
-6755 5800 5801 0.0504747882864981 0.0504747882864981
-6756 5801 2540 0.0519704512694329 0.0519704512694329
-6758 5802 5803 0.0134893781959873 0.0134893781959873
-6759 5803 5804 0.0651761990637723 0.0651761990637723
-6760 5804 5805 0.00867856878189995 0.00867856878189995
-6761 5805 5806 0.145096674327765 0.145096674327765
-6762 5806 5807 0.146807263740651 0.146807263740651
-6763 5807 5808 0.0971857772299024 0.0971857772299024
-8041 6591 5218 0.10367384999594 0.10367384999594
-6766 5810 5811 0.146768415759705 0.146768415759705
-6768 1701 5812 0.0556890737408001 0.0556890737408001
-6769 5812 5813 0.0500299056894462 0.0500299056894462
-6770 5813 572 0.048773855210923 0.048773855210923
-6771 572 4985 0.0488849816155661 0.0488849816155661
-6772 4985 5815 0.0487728428614096 0.0487728428614096
-6773 5815 5816 0.0486567223604475 0.0486567223604475
-6774 5816 5817 0.0490027802416811 0.0490027802416811
-6775 5817 5819 0.0533578755133891 0.0533578755133891
-6776 5819 5820 0.0539390556466382 0.0539390556466382
-6778 5821 5822 0.0489941039004867 0.0489941039004867
-6780 3617 5823 0.0506292858836976 0.0506292858836976
-6781 5823 5824 0.0500724300001191 0.0500724300001191
-6782 5824 5825 0.0499880884355422 0.0499880884355422
-6783 5825 5099 0.0484306981291016 0.0484306981291016
-6784 5099 5826 0.0978349213689401 0.0978349213689401
-8066 6604 2108 0.411848469661871 0.411848469661871
-6786 3484 5827 0.0514683137992155 0.0514683137992155
-6787 5827 5828 0.0484135897290906 0.0484135897290906
-6789 5829 3698 0.0457527085543311 0.0457527085543311
-6790 3698 5705 0.0484471809833024 0.0484471809833024
-6791 5705 4572 0.0515108919391295 0.0515108919391295
-6792 4572 5830 0.105767692426024 0.105767692426024
-6793 5830 5831 0.0553912495449553 0.0553912495449553
-6794 5831 5832 0.0496407969110197 0.0496407969110197
-6795 5832 5833 0.0474198419855964 0.0474198419855964
-6796 5833 5834 0.0495588851512039 0.0495588851512039
-6797 5834 5835 0.0489032950107884 0.0489032950107884
-6798 5835 2741 0.0480512246257303 0.0480512246257303
-6800 5836 5232 0.0488850197079726 0.0488850197079726
-6801 5232 5837 0.0498079610709467 0.0498079610709467
-6802 5837 3174 0.0480709718129458 0.0480709718129458
-6803 3174 5838 0.0510747433773575 0.0510747433773575
-6804 5838 4999 0.0480555922075882 0.0480555922075882
-8084 6614 6615 0.0939591856631224 0.0939591856631224
-6805 4999 5839 0.0491139247433474 0.0491139247433474
-6806 5839 731 0.0513728158017048 0.0513728158017048
-18529 9525 9153 0.0559524577768326 0.0559524577768326
-6807 731 5840 0.100363141472313 0.100363141472313
-6810 4683 1528 0.0512242368793757 0.0512242368793757
-6811 1528 5087 0.0490096920376181 0.0490096920376181
-6812 5087 5841 0.0531197353238214 0.0531197353238214
-6813 5841 5011 0.0514391840217863 0.0514391840217863
-6814 5011 1747 0.0499193361712115 0.0499193361712115
-6815 1747 5608 0.0521168381912245 0.0521168381912245
-6816 5608 5842 0.0474458476070982 0.0474458476070982
-6817 5842 5449 0.0516188826793533 0.0516188826793533
-6818 5449 5428 0.0497563082276933 0.0497563082276933
-6819 5428 5390 0.0522374705433985 0.0522374705433985
-6820 5390 5843 0.0480447601658553 0.0480447601658553
-6822 5844 5845 0.0146913941785162 0.0146913941785162
-6823 5845 1699 0.184528247922268 0.184528247922268
-6824 1699 5846 0.0932680068963059 0.0932680068963059
-6825 5846 5847 0.0932852372069282 0.0932852372069282
-6826 5847 3120 0.098410300465854 0.098410300465854
-6827 3120 5848 0.0905968964383526 0.0905968964383526
-6828 5848 5849 0.19461602791519 0.19461602791519
-8104 239 6631 0.0428753899381976 0.0428753899381976
-6830 5850 5851 0.0206820775273506 0.0206820775273506
-6833 1635 5853 0.0933590693142476 0.0933590693142476
-6834 5853 5854 0.015431953306933 0.015431953306933
-6835 5854 4213 0.0860217230993429 0.0860217230993429
-6836 4213 5855 0.0995731813164872 0.0995731813164872
-6837 5855 192 0.102944368273924 0.102944368273924
-6838 192 2922 0.0977156398673512 0.0977156398673512
-6840 5305 1460 0.094441811393562 0.094441811393562
-6841 1460 5433 0.104542660065313 0.104542660065313
-6843 5856 1868 0.210287860037949 0.210287860037949
-6844 1868 4186 0.189585415099738 0.189585415099738
-6846 5432 5857 0.104903215241116 0.104903215241116
-6847 5857 5858 0.105720950651237 0.105720950651237
-6848 5858 5859 0.105743888331652 0.105743888331652
-6849 5859 4421 0.104252361029944 0.104252361029944
-6852 5861 5862 0.0519463280728807 0.0519463280728807
-6853 5862 5863 0.0520746976816124 0.0520746976816124
-6854 5863 5864 0.053223022054701 0.053223022054701
-6855 5864 4317 0.0510499917933612 0.0510499917933612
-8127 6232 6642 0.179146147134138 0.179146147134138
-6857 5865 4505 0.0514748271562017 0.0514748271562017
-6858 4505 3608 0.0515275362522861 0.0515275362522861
-6859 3608 5866 0.050240952107019 0.050240952107019
-6860 5866 5867 0.0507479546434346 0.0507479546434346
-6861 5867 5067 0.0521453287858806 0.0521453287858806
-6862 5067 5868 0.051338093574988 0.051338093574988
-6863 5868 5869 0.0516032507649761 0.0516032507649761
-6864 5869 5870 0.0504748368648883 0.0504748368648883
-6865 5870 5871 0.0517263613465763 0.0517263613465763
-6866 5871 5872 0.102624635673 0.102624635673
-6867 5872 3299 0.100255573957512 0.100255573957512
-6869 5873 5874 0.0663164411935832 0.0663164411935832
-6870 5874 5875 0.0488050085545576 0.0488050085545576
-6871 5875 5876 0.702184603750594 0.702184603750594
-6874 4525 5880 0.0113022768719971 0.0113022768719971
-6875 5880 5881 0.00806516295239482 0.00806516295239482
-6876 5881 5882 0.0293119532501538 0.0293119532501538
-6877 5882 5883 0.0236481545130312 0.0236481545130312
-6878 5883 5884 0.0171068759325808 0.0171068759325808
-6879 5884 5885 0.034181660212992 0.034181660212992
-6880 5885 5887 0.100387180512852 0.100387180512852
-6882 4433 5888 0.29159089003557 0.29159089003557
-6883 5888 4667 0.102395884967111 0.102395884967111
-6885 1334 1389 0.100271016747699 0.100271016747699
-6886 1389 5889 0.10737593920352 0.10737593920352
-6887 5889 5890 0.105882607972477 0.105882607972477
-6888 5890 4707 0.0969202900217867 0.0969202900217867
-6889 4707 5891 0.0993764614715991 0.0993764614715991
-6890 5891 5892 0.0973957865151901 0.0973957865151901
-6891 5892 5894 0.0203600085186263 0.0203600085186263
-6893 5697 5895 0.0355610028885881 0.0355610028885881
-6894 5895 5896 0.0640153359599377 0.0640153359599377
-6896 4960 5897 0.0913255616395888 0.0913255616395888
-6897 5897 766 0.157641216727225 0.157641216727225
-6898 766 5898 0.395381245817633 0.395381245817633
-6899 5898 5899 0.0981801741162947 0.0981801741162947
-6900 5899 5900 0.174689811260162 0.174689811260162
-6902 2304 156 0.331433636002878 0.331433636002878
-6903 156 1720 0.249409879986366 0.249409879986366
-6904 1720 5901 0.152027484629828 0.152027484629828
-6906 5902 5903 1.05455714042968 1.05455714042968
-6907 491 5904 0.0146888160266615 0.0146888160266615
-6908 5904 5905 0.0975979556077691 0.0975979556077691
-6910 5906 5907 0.0945117172125904 0.0945117172125904
-6911 5907 5908 0.096024253167286 0.096024253167286
-6913 1999 3359 0.0933322730569792 0.0933322730569792
-6914 3359 2753 0.0957031890234733 0.0957031890234733
-6915 2753 5909 0.0964098595755736 0.0964098595755736
-6916 5909 2279 0.103797892128295 0.103797892128295
-6917 2279 3601 0.0979307072208472 0.0979307072208472
-6918 3601 5910 0.101687049589159 0.101687049589159
-6919 5910 2134 0.103076736979193 0.103076736979193
-6920 2134 5911 0.0994872973933105 0.0994872973933105
-6921 5911 5912 0.098205073412404 0.098205073412404
-6944 5930 5931 0.00713304879374381 0.00713304879374381
-6922 5912 5913 1.00880972234204 1.00880972234204
-6923 5914 3921 0.0830806742363044 0.0830806742363044
-6924 3921 1014 0.0989804018365723 0.0989804018365723
-6925 1014 5915 0.0998222515540108 0.0998222515540108
-6926 5915 5916 0.104139822117371 0.104139822117371
-6927 5916 5023 0.0793768943130485 0.0793768943130485
-6929 5917 5918 0.112165266092601 0.112165266092601
-6930 5918 5919 0.108065845165718 0.108065845165718
-6931 5919 5920 0.0537421133423824 0.0537421133423824
-6932 5920 5921 0.0547683090118863 0.0547683090118863
-6933 5921 5922 0.0617512871216813 0.0617512871216813
-6934 5922 5923 0.0505486132029595 0.0505486132029595
-6935 5923 5924 0.0485674117985671 0.0485674117985671
-6936 5924 5925 0.00910751947845144 0.00910751947845144
-6937 5925 3160 0.040672974998317 0.040672974998317
-6938 3160 5926 0.0119123696733134 0.0119123696733134
-6939 5926 5927 0.0422638247579918 0.0422638247579918
-6940 5927 5928 0.00946046354749371 0.00946046354749371
-6941 5928 4978 0.0392608349230605 0.0392608349230605
-6942 4978 5929 0.00830374951839601 0.00830374951839601
-6943 5929 5930 0.04322033436118 0.04322033436118
-12307 8642 8643 0.0298175315684779 0.0298175315684779
-6945 5931 5932 0.0454758802600548 0.0454758802600548
-6946 5932 5933 0.0473060152011751 0.0473060152011751
-6947 5933 5934 0.0496187677804403 0.0496187677804403
-6948 5934 5935 0.0504477908402203 0.0504477908402203
-6949 5935 5050 0.0515402266931002 0.0515402266931002
-6950 5050 5687 0.0468197679026621 0.0468197679026621
-6953 5453 982 0.0502364246424336 0.0502364246424336
-6954 982 5937 0.0968891441459385 0.0968891441459385
-6955 5937 5938 0.0503259455718068 0.0503259455718068
-6956 5938 5939 0.0502893520356679 0.0502893520356679
-6957 5939 3129 0.0485573864514234 0.0485573864514234
-6958 3129 5117 0.0498372694791184 0.0498372694791184
-6959 5117 5941 0.0493022558846739 0.0493022558846739
-6960 5941 4716 0.0507626244890517 0.0507626244890517
-6961 4716 5942 0.142284142826663 0.142284142826663
-6963 5943 5944 0.01393899602166 0.01393899602166
-6964 5944 5945 0.364458473389243 0.364458473389243
-6965 5945 5946 0.0993153072226578 0.0993153072226578
-6966 5946 5947 0.101492282005104 0.101492282005104
-6967 5947 5948 0.101164116161519 0.101164116161519
-6968 5948 5949 0.102917574680079 0.102917574680079
-6969 5949 5950 0.099000654458151 0.099000654458151
-6970 5950 5951 0.102683540906436 0.102683540906436
-6972 5952 5145 0.0645729302199529 0.0645729302199529
-6973 5145 2119 0.0381578888853594 0.0381578888853594
-6975 5953 5954 0.100685153983508 0.100685153983508
-6976 5954 5955 0.195476970380349 0.195476970380349
-6978 5511 5956 0.144816938742182 0.144816938742182
-6979 5956 2899 0.0164641943336492 0.0164641943336492
-6981 5957 5776 0.0786471324555583 0.0786471324555583
-6982 5776 5958 0.142074016754489 0.142074016754489
-6984 5959 5960 0.119153206354199 0.119153206354199
-6985 5960 5961 0.0270871445537288 0.0270871445537288
-6986 5961 5962 0.145839788109516 0.145839788109516
-6987 5962 5963 0.00712354730707594 0.00712354730707594
-6988 5963 5964 0.140131025523345 0.140131025523345
-6989 5964 5965 0.140225597174846 0.140225597174846
-6990 5965 4943 0.0161740048379517 0.0161740048379517
-6992 5354 5966 0.0365984296224293 0.0365984296224293
-8275 6722 2311 0.00867549185460531 0.00867549185460531
-6993 5966 5967 0.107476511645453 0.107476511645453
-6994 5967 5968 0.147256677185358 0.147256677185358
-6995 5968 5969 0.146721278462678 0.146721278462678
-6996 5969 5361 0.147170892096024 0.147170892096024
-6997 5361 2684 0.148391053722383 0.148391053722383
-6999 5970 807 0.0217813759552713 0.0217813759552713
-7001 5971 4332 0.0931508534748433 0.0931508534748433
-7002 4332 5038 0.0953468172233397 0.0953468172233397
-7004 5972 5857 0.176936009900748 0.176936009900748
-7005 5857 1300 0.178425403895618 0.178425403895618
-7006 1300 5973 0.247668336727678 0.247668336727678
-7008 5974 5975 0.19695744936537 0.19695744936537
-7010 1502 4378 0.103568243200344 0.103568243200344
-7012 5976 2341 0.175343347413509 0.175343347413509
-7013 2341 5977 0.176971375987128 0.176971375987128
-7014 5977 4784 0.243234077821538 0.243234077821538
-7015 4784 5979 0.240492752461347 0.240492752461347
-7016 5979 5980 0.0330257004550899 0.0330257004550899
-7017 5980 5981 0.271622774119548 0.271622774119548
-7018 5981 5982 0.132843712894559 0.132843712894559
-7020 5983 5984 0.0865708728240205 0.0865708728240205
-7021 5984 5985 0.115162845747273 0.115162845747273
-7023 758 5986 0.228351368086018 0.228351368086018
-7026 5146 5157 0.0344312485594002 0.0344312485594002
-7027 5157 5953 0.0793791794144798 0.0793791794144798
-7028 5953 2240 0.201141072863101 0.201141072863101
-7029 2240 4913 0.204101361959596 0.204101361959596
-7031 5988 5989 0.202410682591791 0.202410682591791
-7032 5989 5990 0.204104998697393 0.204104998697393
-7033 5990 689 0.195952399265096 0.195952399265096
-7034 689 1980 0.165723809852799 0.165723809852799
-7035 1980 1965 0.0389234534803582 0.0389234534803582
-7036 1965 5991 0.211595737081182 0.211595737081182
-7037 5991 2477 0.19787541766453 0.19787541766453
-7039 5911 5992 0.199600309761125 0.199600309761125
-7040 5992 802 0.200311937766574 0.200311937766574
-7041 802 5993 0.204076160777324 0.204076160777324
-7042 5993 5994 0.207502868601311 0.207502868601311
-7043 5994 5995 0.201507936335064 0.201507936335064
-18161 10256 2170 0.118696748630409 0.118696748630409
-7044 5995 3065 0.198422916856477 0.198422916856477
-7045 3065 5996 0.187785068593932 0.187785068593932
-7048 5998 1151 0.103522476706234 0.103522476706234
-7049 1151 5999 0.201885859106491 0.201885859106491
-7050 5999 2774 0.203030941446461 0.203030941446461
-7051 2774 6000 0.200151361396455 0.200151361396455
-7053 4375 2856 0.142504312909228 0.142504312909228
-7054 2856 6001 0.0983652484533134 0.0983652484533134
-7055 6001 6002 0.0964239306891795 0.0964239306891795
-7056 6002 6003 0.098310599923513 0.098310599923513
-7057 6003 1761 0.137700629072643 0.137700629072643
-7058 1761 6004 0.100513600298964 0.100513600298964
-7059 6004 3822 0.0995871831820294 0.0995871831820294
-7060 3822 5898 0.137360760654976 0.137360760654976
-7061 5898 6005 0.132447355715672 0.132447355715672
-7063 1597 1654 0.133194225128182 0.133194225128182
-7064 1654 6006 0.125247640008909 0.125247640008909
-7065 6006 4209 0.0896990215886268 0.0896990215886268
-7067 6007 200 0.0969312782671765 0.0969312782671765
-7069 6008 6009 0.237519218216988 0.237519218216988
-7071 6010 700 0.202130694041649 0.202130694041649
-7072 700 6011 0.200920157017241 0.200920157017241
-7074 1752 6012 0.41064210801689 0.41064210801689
-7076 6013 898 0.069285729612221 0.069285729612221
-7079 5168 6014 0.173942254032852 0.173942254032852
-7080 6014 2356 0.178647695597581 0.178647695597581
-7081 2356 4157 0.173431342052579 0.173431342052579
-7082 4157 4744 0.174265758482508 0.174265758482508
-7083 4744 6015 0.17586665041424 0.17586665041424
-7084 6015 6017 0.166030537226764 0.166030537226764
-7085 6017 1206 0.168368552768231 0.168368552768231
-7086 1206 6018 0.0222310506019077 0.0222310506019077
-7087 6018 3777 0.199517083270274 0.199517083270274
-7088 3777 6019 0.15332994885881 0.15332994885881
-7089 6019 956 0.176955920540622 0.176955920540622
-7090 956 6020 0.174665514088028 0.174665514088028
-7091 6020 4894 0.161958937862416 0.161958937862416
-7092 4894 6021 0.18390531780345 0.18390531780345
-7093 6021 5492 0.174079428498661 0.174079428498661
-7094 5492 6022 0.20029370655809 0.20029370655809
-7096 3037 6023 0.213499262828813 0.213499262828813
-7098 3578 5645 0.141952777714747 0.141952777714747
-8369 876 4464 0.138360134725968 0.138360134725968
-7100 4359 4350 0.0475473932483631 0.0475473932483631
-7101 4350 1533 0.0507609705805194 0.0507609705805194
-7102 1533 6024 0.087689125787215 0.087689125787215
-7103 6024 3036 0.0935380351023268 0.0935380351023268
-7105 2396 6026 0.14381066174273 0.14381066174273
-7107 1270 4534 0.202622361744701 0.202622361744701
-7108 4534 6027 0.199229442979025 0.199229442979025
-7110 6028 6029 0.912875631293974 0.912875631293974
-7112 1075 2498 0.0816070075181441 0.0816070075181441
-7113 2498 6030 0.0415787253165096 0.0415787253165096
-7114 6030 6031 0.0433303737265817 0.0433303737265817
-7116 6032 6033 0.0508682336735258 0.0508682336735258
-7117 6033 1215 0.0487831269807967 0.0487831269807967
-7118 1215 6034 0.0505678656124617 0.0505678656124617
-7119 6034 4787 0.0490298276079548 0.0490298276079548
-7120 4787 6035 0.0502099740409632 0.0502099740409632
-7121 6035 2168 0.0503125854793333 0.0503125854793333
-7122 2168 6036 0.0482434584483166 0.0482434584483166
-17215 8403 8420 0.200752773596098 0.200752773596098
-7123 6036 6037 0.0486536038515005 0.0486536038515005
-7125 6038 6039 0.0499795151912972 0.0499795151912972
-7126 6039 6040 0.0491412278477837 0.0491412278477837
-7127 6040 6041 0.0497771068440158 0.0497771068440158
-7128 6041 6042 0.0494653664650395 0.0494653664650395
-7129 6042 4660 0.0491491990718702 0.0491491990718702
-7130 4660 6043 0.0497609288638681 0.0497609288638681
-7131 6043 1290 0.0489747324983769 0.0489747324983769
-7133 6044 4562 0.0495973986652376 0.0495973986652376
-7134 4562 6045 0.0489640905184848 0.0489640905184848
-7135 6045 6046 0.0491691479666822 0.0491691479666822
-7136 6046 6047 0.0507578186257211 0.0507578186257211
-7137 6047 2730 0.0500913644840885 0.0500913644840885
-7138 2730 6048 0.0486937991070737 0.0486937991070737
-7139 6048 6049 0.0563508416708434 0.0563508416708434
-7140 6049 6050 0.0543668616299433 0.0543668616299433
-7141 6050 3755 0.049786406684993 0.049786406684993
-7142 3755 6051 0.0495857892809515 0.0495857892809515
-7143 6051 6052 0.0496881410470813 0.0496881410470813
-7144 6052 6053 0.0491149994031363 0.0491149994031363
-18545 5563 7539 0.0787059485791879 0.0787059485791879
-7145 6053 6054 0.0498540025598143 0.0498540025598143
-7146 6054 6055 0.0489875409651698 0.0489875409651698
-7147 6055 4007 0.0499802866726516 0.0499802866726516
-7148 4007 6056 0.0488162842829032 0.0488162842829032
-7149 6056 6057 0.0489359547659716 0.0489359547659716
-7150 6057 6058 0.0509862761511403 0.0509862761511403
-7151 6058 1391 0.0507897478531174 0.0507897478531174
-7152 1391 6059 0.0484575520219378 0.0484575520219378
-7154 6060 6061 0.051268887373703 0.051268887373703
-7155 6061 3440 0.0523540538479921 0.0523540538479921
-7156 3440 6062 0.0526542821957606 0.0526542821957606
-7157 6062 5722 0.0500652354639954 0.0500652354639954
-7158 5722 6063 0.0491749564449066 0.0491749564449066
-7159 6063 6064 0.0490553316653512 0.0490553316653512
-7160 6064 6065 0.0504053225202572 0.0504053225202572
-7161 6065 6066 0.0491577785316978 0.0491577785316978
-7162 6066 6067 0.0500917004504544 0.0500917004504544
-7163 6067 6068 0.0487330457346556 0.0487330457346556
-7164 6068 6069 0.0500468552276867 0.0500468552276867
-7165 6069 1089 0.0473039342434908 0.0473039342434908
-7166 1089 6070 0.0519349767204956 0.0519349767204956
-7167 6070 6071 0.0483547253107021 0.0483547253107021
-7169 6072 3860 0.0495593243927177 0.0495593243927177
-7170 3860 6073 0.0493012970703545 0.0493012970703545
-7171 6073 5585 0.0529959751032204 0.0529959751032204
-7173 1003 5222 0.108094382628624 0.108094382628624
-7175 6074 3213 0.169273308004073 0.169273308004073
-7176 3213 6075 0.200540081035548 0.200540081035548
-7177 6075 1924 0.199718283006537 0.199718283006537
-7178 1924 6076 0.202212418704144 0.202212418704144
-7179 6076 3268 0.201184980777767 0.201184980777767
-7180 3268 6077 0.201398824177077 0.201398824177077
-7181 6077 81 0.202519482529809 0.202519482529809
-7182 81 3517 0.205035908609294 0.205035908609294
-7183 3517 4259 0.201561198640626 0.201561198640626
-7184 4259 6078 0.201877222241407 0.201877222241407
-7185 6078 6079 0.198020897047098 0.198020897047098
-7186 6079 5828 0.204359521871182 0.204359521871182
-7187 5828 6080 0.203452288011347 0.203452288011347
-7188 6080 6081 0.199577893436046 0.199577893436046
-7189 6082 4198 0.0554105901874734 0.0554105901874734
-8462 1578 6834 0.296770354889592 0.296770354889592
-7190 4198 6083 0.479532197769768 0.479532197769768
-7193 6085 3417 0.199987779646285 0.199987779646285
-7195 5561 6086 0.0785728419075768 0.0785728419075768
-7196 6086 6087 0.711200705359908 0.711200705359908
-7197 6088 6089 0.0569381576865727 0.0569381576865727
-7199 1755 4797 0.0569796757564415 0.0569796757564415
-7200 4797 6090 0.0568688820659326 0.0568688820659326
-7201 6090 2163 0.0576467707798926 0.0576467707798926
-7202 2163 6091 0.115287318699314 0.115287318699314
-7204 4029 6092 0.199820514844545 0.199820514844545
-7205 6092 3413 0.201407533266255 0.201407533266255
-7207 6093 6094 0.0604203300865654 0.0604203300865654
-7208 6094 6095 0.0494745769978518 0.0494745769978518
-7209 6095 6096 0.0926701881064251 0.0926701881064251
-7210 6096 4028 0.05825540400242 0.05825540400242
-7212 5558 6097 0.589453817263917 0.589453817263917
-7213 111 6098 0.0840698350347185 0.0840698350347185
-7214 6098 5387 0.102649580636379 0.102649580636379
-7216 6099 4834 0.0618019179836103 0.0618019179836103
-7217 4834 6100 0.103506880889302 0.103506880889302
-7218 6100 6101 0.102436270515026 0.102436270515026
-7219 6101 6102 0.0462582791506537 0.0462582791506537
-7221 5388 6103 0.0951666989097628 0.0951666989097628
-7222 6103 6104 0.103533109860882 0.103533109860882
-17793 6179 8402 0.062258154453335 0.062258154453335
-7223 6104 6105 1.01266363478673 1.01266363478673
-7226 6107 6108 0.0985711721031886 0.0985711721031886
-7227 6108 6109 0.106459269312792 0.106459269312792
-7228 6109 6110 0.106833918076069 0.106833918076069
-7229 6110 3622 0.0989181087898918 0.0989181087898918
-7230 3622 6111 0.098886772683552 0.098886772683552
-7231 6111 6112 0.0498651872917774 0.0498651872917774
-7232 6112 6113 0.0465544361472323 0.0465544361472323
-7233 6113 6114 0.048644459525012 0.048644459525012
-7234 6114 1769 0.0504837415599517 0.0504837415599517
-7235 1769 4488 0.0559949291466801 0.0559949291466801
-7236 4488 6115 0.0469382916231929 0.0469382916231929
-7237 6115 4839 0.0486148679353184 0.0486148679353184
-7239 1519 5280 0.0508144170388461 0.0508144170388461
-7240 5280 6116 0.0496680994860777 0.0496680994860777
-7241 6116 1086 0.0854394240121282 0.0854394240121282
-7244 6118 5426 0.102968153598516 0.102968153598516
-7245 5426 6119 0.101169119900675 0.101169119900675
-7246 6119 2048 0.10059076820208 0.10059076820208
-7247 2048 6120 0.0997250287478783 0.0997250287478783
-7248 6120 6121 0.100591265363907 0.100591265363907
-7249 6121 6122 0.0474195280765072 0.0474195280765072
-7250 6122 3477 0.0495243305794908 0.0495243305794908
-7251 3477 6123 0.0472960657562571 0.0472960657562571
-7252 6123 6075 0.0518212274102399 0.0518212274102399
-7253 6075 6124 0.0477720158174774 0.0477720158174774
-7254 6124 3692 0.0491494225474026 0.0491494225474026
-7255 3692 6125 0.0492733746042409 0.0492733746042409
-7256 6125 4567 0.0513179295413005 0.0513179295413005
-7257 4567 6126 0.104996585237884 0.104996585237884
-7259 6127 6128 0.202552708883543 0.202552708883543
-7260 6128 6129 0.200575382409089 0.200575382409089
-7261 6129 6130 0.200851528697639 0.200851528697639
-7263 6131 4042 0.178407205955933 0.178407205955933
-7264 4042 6132 0.176658257473219 0.176658257473219
-7265 6132 6133 0.173893747367395 0.173893747367395
-7266 6133 1832 0.00321363581065808 0.00321363581065808
-7267 1832 6134 0.0979518830790181 0.0979518830790181
-7268 6134 2577 0.0768544895315019 0.0768544895315019
-7270 2974 713 0.0553033256449361 0.0553033256449361
-7271 713 1884 0.049816225531446 0.049816225531446
-7272 1884 269 0.0489259588819734 0.0489259588819734
-7273 269 6135 0.049929244786193 0.049929244786193
-7274 6135 6095 0.0608968307992014 0.0608968307992014
-7276 1819 6136 0.206807888451467 0.206807888451467
-7278 6137 6138 0.137211297869344 0.137211297869344
-7280 6139 4576 0.0888580713995718 0.0888580713995718
-7281 4576 6140 0.134023429450374 0.134023429450374
-7282 6140 5292 0.135037120828343 0.135037120828343
-7283 5292 6141 0.134292125855752 0.134292125855752
-7285 11 6142 0.134290112908847 0.134290112908847
-7286 6142 6143 0.134379347336523 0.134379347336523
-7287 6143 6144 0.135319045428869 0.135319045428869
-7288 6144 6145 0.133823509557072 0.133823509557072
-7289 6145 6146 0.133595456488811 0.133595456488811
-7290 6146 6147 0.132813208199385 0.132813208199385
-7291 6147 6148 0.135903166352965 0.135903166352965
-7293 6149 5532 0.117263436099258 0.117263436099258
-7294 5532 6150 0.292646155170772 0.292646155170772
-7296 4069 6054 0.143532163506992 0.143532163506992
-7297 6054 5794 0.200517814130868 0.200517814130868
-7299 6151 6152 0.134234537479531 0.134234537479531
-7300 6152 2491 0.134965193585355 0.134965193585355
-7301 2491 2836 0.132191750515313 0.132191750515313
-7303 2760 6153 0.17786816992516 0.17786816992516
-7304 6153 3104 0.174733256162163 0.174733256162163
-7305 3104 6156 0.194828104098244 0.194828104098244
-7307 62 3549 0.192897189560382 0.192897189560382
-7309 191 5855 0.144500472019434 0.144500472019434
-7313 1335 6158 0.164940728280041 0.164940728280041
-7315 3709 719 0.105637457999026 0.105637457999026
-7317 3184 6159 0.175088076753778 0.175088076753778
-7318 6159 91 0.0479220492178455 0.0479220492178455
-7319 91 3527 0.203258724621779 0.203258724621779
-7320 3527 6160 0.201096029386997 0.201096029386997
-7321 6160 6161 0.201913621123293 0.201913621123293
-7323 6162 5834 0.203525395170747 0.203525395170747
-7324 5834 6163 0.200952914390398 0.200952914390398
-7326 3276 3651 0.182839298131176 0.182839298131176
-7329 6166 4285 0.103763551261197 0.103763551261197
-7331 1617 6167 0.103830241851319 0.103830241851319
-7333 6168 2159 0.117895446926253 0.117895446926253
-7334 2159 4795 0.11289998607803 0.11289998607803
-7335 4795 1226 0.113625921506999 0.113625921506999
-7337 4401 4400 0.117696624021516 0.117696624021516
-7341 2320 4278 0.147648925220672 0.147648925220672
-7342 4278 6174 0.145039413918761 0.145039413918761
-7343 6174 633 0.147839808469135 0.147839808469135
-7344 633 5324 0.144274087604939 0.144274087604939
-7345 5324 2036 0.144878759704946 0.144878759704946
-7346 2036 6175 0.146765627629388 0.146765627629388
-7347 6175 5506 0.146988764364424 0.146988764364424
-7349 4458 6176 0.146285529633972 0.146285529633972
-7350 6176 6177 0.143815084290611 0.143815084290611
-7351 6177 6178 0.149072223288683 0.149072223288683
-7352 6178 6179 0.102502676747671 0.102502676747671
-7353 6179 6180 0.0433701075577025 0.0433701075577025
-7354 6180 6181 0.146972104646326 0.146972104646326
-7355 6181 6182 0.147344314502621 0.147344314502621
-7356 6182 6183 0.145754933885852 0.145754933885852
-7357 6183 6184 0.147948446924155 0.147948446924155
-7358 6184 6185 0.145005273136899 0.145005273136899
-7359 6185 6186 0.141478743986661 0.141478743986661
-7360 6186 5784 0.0051191432185562 0.0051191432185562
-7361 5784 6187 0.145606807182671 0.145606807182671
-7362 6187 6188 0.145777030768037 0.145777030768037
-7363 6188 6189 0.147177496711371 0.147177496711371
-7365 999 4221 0.0806091686632927 0.0806091686632927
-7366 4221 6190 0.102381971527348 0.102381971527348
-7367 6190 6193 0.0984965085324321 0.0984965085324321
-7368 6193 969 0.0952400858484175 0.0952400858484175
-7369 969 6194 0.0506536388127553 0.0506536388127553
-7370 6194 5287 0.0506057613654141 0.0506057613654141
-7371 5287 3152 0.0954510374534177 0.0954510374534177
-7372 3152 4968 0.0960843478924756 0.0960843478924756
-7373 4968 6195 0.0415654887010154 0.0415654887010154
-15921 9749 9750 0.0318908811678005 0.0318908811678005
-7401 6213 6214 0.0495719593537107 0.0495719593537107
-7374 335 340 0.288826145863276 0.288826145863276
-7378 519 6197 0.0784497798176465 0.0784497798176465
-7379 6197 6198 0.0395399248279629 0.0395399248279629
-7380 6198 6199 0.019955626672929 0.019955626672929
-7382 6200 6201 0.0919482301684137 0.0919482301684137
-7383 6201 6202 0.111020276961071 0.111020276961071
-7385 4485 6203 0.0919528384362936 0.0919528384362936
-7386 6203 4199 0.0670783480641165 0.0670783480641165
-7387 4199 6204 0.129739883939344 0.129739883939344
-7388 6204 6083 0.021522983414344 0.021522983414344
-7390 1820 6205 0.059780784078693 0.059780784078693
-7391 6205 6206 0.0520794903588436 0.0520794903588436
-7392 6206 6207 0.0535277276856965 0.0535277276856965
-7393 6207 6208 0.052616435606338 0.052616435606338
-7395 6209 6210 0.054197774205049 0.054197774205049
-7396 6210 600 0.122572832169608 0.122572832169608
-7397 600 6211 0.0472521628905724 0.0472521628905724
-7398 6211 5708 0.0430357389006543 0.0430357389006543
-7399 5708 6212 0.0495085394583916 0.0495085394583916
-7400 6212 6213 0.0462483397604104 0.0462483397604104
-7402 6214 6215 0.0428153220943109 0.0428153220943109
-7403 6215 6216 0.0471000262746752 0.0471000262746752
-7404 6216 6217 0.0473822229177533 0.0473822229177533
-7405 6217 1100 0.091970261814681 0.091970261814681
-7406 1100 6218 0.0449415553049736 0.0449415553049736
-7407 6218 6219 0.0480654852744355 0.0480654852744355
-7408 6219 6221 0.0454218674668918 0.0454218674668918
-7409 6221 3858 0.0463369187822574 0.0463369187822574
-7410 3858 6222 0.0463493111972249 0.0463493111972249
-7411 6222 5594 0.0512843332286284 0.0512843332286284
-7412 5594 6223 0.0568069326737853 0.0568069326737853
-7413 6223 6224 0.0525700432289869 0.0525700432289869
-7414 6224 6225 0.0976339163821139 0.0976339163821139
-7439 6242 6243 0.0662881511283164 0.0662881511283164
-7415 6225 6226 0.598121759063317 0.598121759063317
-7416 3855 6227 0.0533569775705536 0.0533569775705536
-7417 6227 5550 0.054545728952838 0.054545728952838
-7419 6228 6229 0.0491582246006862 0.0491582246006862
-7420 6229 6230 0.632851875022697 0.632851875022697
-7421 4649 6231 0.0998318489902405 0.0998318489902405
-7423 3956 6232 0.132968901609209 0.132968901609209
-7424 6232 6233 0.0436348818689085 0.0436348818689085
-7425 6233 6234 0.0454822742996404 0.0454822742996404
-7426 6234 6235 0.049945575036802 0.049945575036802
-7427 6235 6236 0.0503304157761669 0.0503304157761669
-7428 6236 6237 0.0508263629674458 0.0508263629674458
-7429 6237 4952 0.0505868421691217 0.0505868421691217
-7430 4952 4681 0.10191805721873 0.10191805721873
-7431 4681 6238 0.099594470461032 0.099594470461032
-7432 6238 6239 0.057251122773958 0.057251122773958
-7433 6239 6240 0.108863184827896 0.108863184827896
-7434 6240 5092 0.0381385955203522 0.0381385955203522
-7435 5092 5227 0.108194428858344 0.108194428858344
-7437 5219 6241 0.0418231546106276 0.0418231546106276
-7438 6241 6242 0.0122130870650471 0.0122130870650471
-7442 1601 1657 0.147607723017958 0.147607723017958
-7444 5765 6244 0.238854062350574 0.238854062350574
-7445 6244 5899 0.278312459096762 0.278312459096762
-7446 5899 1600 0.0794217837629518 0.0794217837629518
-7448 4405 4957 0.275380198668453 0.275380198668453
-7450 4315 4502 0.0962009886521744 0.0962009886521744
-7451 4502 6245 0.0998685092157526 0.0998685092157526
-7452 6245 5078 0.0969948238046964 0.0969948238046964
-7453 5078 6246 0.102086344844989 0.102086344844989
-7454 6246 6247 0.102069890156656 0.102069890156656
-7455 6247 6248 0.0998684901150858 0.0998684901150858
-7456 6248 6249 0.099157147424293 0.099157147424293
-7457 6249 6250 0.0998927126402804 0.0998927126402804
-7459 4376 2857 0.174778525570848 0.174778525570848
-7461 1656 6251 0.113089099397014 0.113089099397014
-7462 6251 4210 0.0895877408394824 0.0895877408394824
-7463 4210 6252 0.0984078699260149 0.0984078699260149
-7464 6252 202 0.0984164433029134 0.0984164433029134
-7465 202 2930 0.0999116533304243 0.0999116533304243
-7467 5311 1467 0.0969591422712861 0.0969591422712861
-7468 1467 5446 0.104331765041419 0.104331765041419
-7470 6253 6254 0.108544830855141 0.108544830855141
-7471 6254 6255 0.0440614876081187 0.0440614876081187
-7472 6255 6256 0.10258169252724 0.10258169252724
-7473 6256 6257 0.0426791560290334 0.0426791560290334
-7474 6257 1181 0.0541704333597994 0.0541704333597994
-7476 6258 5341 0.664349456749629 0.664349456749629
-7480 1556 736 0.1281317837441 0.1281317837441
-7482 6260 6261 0.0586102720745076 0.0586102720745076
-7484 1188 6262 0.0214828666370953 0.0214828666370953
-7485 6262 3789 0.199388923153335 0.199388923153335
-7486 3789 5915 0.154872293830304 0.154872293830304
-7487 5915 6263 0.0506492890867135 0.0506492890867135
-7488 6264 2248 0.0665325760000431 0.0665325760000431
-7489 2248 4881 0.176090081583566 0.176090081583566
-7490 4881 6265 0.19613430259676 0.19613430259676
-7491 6265 5479 0.175348484443179 0.175348484443179
-7492 5479 6266 0.176845636908204 0.176845636908204
-7493 6266 6267 0.178089834743743 0.178089834743743
-7494 6267 676 0.00240181041514711 0.00240181041514711
-7495 676 6268 0.00459391026290071 0.00459391026290071
-7496 6268 6269 0.174858851790528 0.174858851790528
-7497 6269 4598 0.173764465207871 0.173764465207871
-7500 6270 6271 0.133612621428605 0.133612621428605
-7501 6271 6272 0.00412533177852682 0.00412533177852682
-7502 6272 6273 0.00367565176707242 0.00367565176707242
-7503 6273 6274 0.134146296121319 0.134146296121319
-20534 10849 10832 0.00532626442143788 0.00532626442143788
-7504 6274 6275 0.138338671785307 0.138338671785307
-7505 6275 829 0.140763564032817 0.140763564032817
-7506 829 3569 0.13985476308825 0.13985476308825
-7507 3569 5638 0.139885286720423 0.139885286720423
-7508 5638 4342 0.139394668795268 0.139394668795268
-7509 4342 6276 0.136887040523289 0.136887040523289
-7510 6276 3042 0.135179672321338 0.135179672321338
-7511 3042 6277 0.141328751765533 0.141328751765533
-7512 6277 6278 0.0048613905607292 0.0048613905607292
-7513 6278 6279 0.138461653724603 0.138461653724603
-7514 6279 1163 0.137550674895164 0.137550674895164
-7515 1163 883 0.14127337175944 0.14127337175944
-7516 883 4468 0.137815416161984 0.137815416161984
-7517 4468 2790 0.135224582480649 0.135224582480649
-7518 2790 5258 0.130698751805084 0.130698751805084
-7519 5258 6280 0.127788689349157 0.127788689349157
-7521 6281 4149 0.293690516229792 0.293690516229792
-7522 4149 4399 0.168839008279682 0.168839008279682
-7524 6202 6282 0.107543949920042 0.107543949920042
-7525 6282 6283 0.203165579542053 0.203165579542053
-7526 6283 2881 0.158375292404745 0.158375292404745
-7528 6284 6285 0.199406415880408 0.199406415880408
-7530 2831 1439 0.198717844078091 0.198717844078091
-7531 1439 6286 0.198972452931936 0.198972452931936
-7533 4103 6046 0.129598634612641 0.129598634612641
-7534 6046 6287 0.200664408696912 0.200664408696912
-7535 6287 6288 0.407763176533057 0.407763176533057
-7536 3356 6289 0.17574244534878 0.17574244534878
-7537 6289 3103 0.174022554549137 0.174022554549137
-7538 3103 6290 0.195576263268451 0.195576263268451
-7539 6290 6291 0.0184164625226683 0.0184164625226683
-7543 5848 6293 0.0908806324614032 0.0908806324614032
-7544 6293 6294 0.111642131539399 0.111642131539399
-7546 6295 6296 0.199763041133193 0.199763041133193
-7547 6297 4228 0.205146518268072 0.205146518268072
-7548 4228 6298 0.220075142380819 0.220075142380819
-7549 6299 6300 0.269225278413762 0.269225278413762
-7550 6300 6301 0.135380699238895 0.135380699238895
-7551 6301 6037 0.201685647547083 0.201685647547083
-7552 6037 4092 0.180825512734332 0.180825512734332
-8788 5909 7005 0.202308283638507 0.202308283638507
-7555 1356 1434 0.0619921139139986 0.0619921139139986
-7556 1434 1416 0.0702533335118034 0.0702533335118034
-7557 1416 2824 0.130534926760632 0.130534926760632
-7558 2824 2485 0.13649413612348 0.13649413612348
-7559 2485 6304 0.132600390611243 0.132600390611243
-7560 6304 6305 0.13375224687231 0.13375224687231
-7562 6293 6306 0.193932773048905 0.193932773048905
-7564 6307 4033 0.1068931298406 0.1068931298406
-7566 6308 1505 0.201208565153675 0.201208565153675
-7567 1505 178 0.201696340498873 0.201696340498873
-7568 178 1706 0.202420430939935 0.202420430939935
-7569 1706 6310 0.205872571954156 0.205872571954156
-7571 1393 5861 0.176199480761084 0.176199480761084
-7573 1309 5328 0.243304763536767 0.243304763536767
-17643 524 9824 0.0585508481458027 0.0585508481458027
-7575 6311 6312 0.480549704702292 0.480549704702292
-7576 4368 1449 0.194542255499986 0.194542255499986
-7577 1449 6313 0.208609985343506 0.208609985343506
-7578 6313 6314 0.103555170544593 0.103555170544593
-7579 6314 6315 0.0981349608621905 0.0981349608621905
-7581 3820 5895 0.101734690953305 0.101734690953305
-7583 6316 6317 0.456743307850688 0.456743307850688
-7584 5896 1591 0.201196573887444 0.201196573887444
-7585 1591 1642 0.201704599280981 0.201704599280981
-7587 4303 6319 0.0895876341901528 0.0895876341901528
-7589 6320 5074 0.0881249654942257 0.0881249654942257
-7590 5074 6321 0.0822356991688935 0.0822356991688935
-7592 3098 3208 0.20139821402018 0.20139821402018
-7593 3208 6120 0.199810792778826 0.199810792778826
-7594 6120 1919 0.202180610053987 0.202180610053987
-7595 1919 6322 0.202387552164505 0.202387552164505
-7596 6322 3262 0.201452153939087 0.201452153939087
-7597 3262 6323 0.198460905873661 0.198460905873661
-7599 6325 6326 0.0490995020648654 0.0490995020648654
-7600 6326 6327 0.055368676730927 0.055368676730927
-7601 6327 6328 0.0309445801475025 0.0309445801475025
-7602 6328 992 0.0695937269558986 0.0695937269558986
-7603 992 5033 0.0562459052664965 0.0562459052664965
-8836 2977 657 0.0520837064464313 0.0520837064464313
-7604 5033 6329 0.0516777216994855 0.0516777216994855
-7605 6329 5046 0.105372499364086 0.105372499364086
-7606 5046 4160 0.118696493530277 0.118696493530277
-7607 4160 6330 0.136699581092316 0.136699581092316
-7608 6330 4974 0.128955324206818 0.128955324206818
-7609 4974 4766 0.151821196012923 0.151821196012923
-7610 4766 6331 0.118237006648706 0.118237006648706
-7611 6331 6332 0.150079343538278 0.150079343538278
-7612 6332 6333 0.165501031184984 0.165501031184984
-7613 6333 6334 0.0461738747625761 0.0461738747625761
-7614 6334 6335 0.133457305058149 0.133457305058149
-7615 6335 1212 0.134967826650912 0.134967826650912
-7617 2900 6336 0.106167707809224 0.106167707809224
-7618 6336 6337 0.104928236912142 0.104928236912142
-7619 6337 4735 0.104475212628964 0.104475212628964
-7620 4735 6338 0.102406513567036 0.102406513567036
-7621 6338 6339 0.111236760215522 0.111236760215522
-7622 6339 5400 0.102611714232847 0.102611714232847
-7623 5400 6340 0.108937307551118 0.108937307551118
-7624 6340 3903 0.106714805368354 0.106714805368354
-7625 3903 1040 0.101833845648583 0.101833845648583
-7626 1040 6276 0.108458622663871 0.108458622663871
-7627 6276 6341 0.106851583282394 0.106851583282394
-7628 6341 5005 0.0997823108241272 0.0997823108241272
-7629 5005 3326 0.104184561842385 0.104184561842385
-7630 3326 6343 0.103107525114489 0.103107525114489
-7631 6343 6344 0.102577524667858 0.102577524667858
-7632 6344 2077 0.109057202290834 0.109057202290834
-7633 2077 2674 0.105238001385814 0.105238001385814
-7634 2674 4124 0.102908082653388 0.102908082653388
-7635 4124 6345 0.111237019236159 0.111237019236159
-7636 6345 6346 0.0932071004983952 0.0932071004983952
-7637 6346 6347 0.101110239024215 0.101110239024215
-7638 6347 3472 0.0998858354760893 0.0998858354760893
-7639 3472 6024 0.100184077827119 0.100184077827119
-7641 3875 6348 0.0931831682605449 0.0931831682605449
-7642 6348 851 0.00806942804368034 0.00806942804368034
-7644 6349 6350 0.122741608307903 0.122741608307903
-7646 6351 6352 0.0367221312616467 0.0367221312616467
-7648 6353 6352 0.031587926861642 0.031587926861642
-7649 6352 6353 0.031587926861642 0.031587926861642
-7651 4284 5406 0.209059343043956 0.209059343043956
-7652 5406 3139 0.106127827196287 0.106127827196287
-7653 3139 3924 0.0976499059560775 0.0976499059560775
-7654 3924 5060 0.353918950652385 0.353918950652385
-7655 5060 5012 0.0994873589954365 0.0994873589954365
-7658 6356 2071 0.094898000530225 0.094898000530225
-7659 2071 2669 0.0951372963506741 0.0951372963506741
-7660 2669 4139 0.0930605458860926 0.0930605458860926
-7661 4139 6357 0.0866508308410144 0.0866508308410144
-7662 6357 6358 0.100153967379628 0.100153967379628
-7663 6358 6359 0.094521960675225 0.094521960675225
-7664 6359 834 0.394334341459341 0.394334341459341
-7665 834 871 0.00699086459728944 0.00699086459728944
-7666 871 6360 0.0985643561678323 0.0985643561678323
-7667 6360 6361 0.0919153430634884 0.0919153430634884
-7668 6361 6362 0.0142210252134503 0.0142210252134503
-7670 6363 6250 0.198277134301598 0.198277134301598
-7671 6250 6258 0.115286899945233 0.115286899945233
-7672 6258 6364 0.0878557774552784 0.0878557774552784
-7673 6364 1498 0.200867314778576 0.200867314778576
-7675 187 5877 0.162832287710312 0.162832287710312
-7676 5877 1716 0.0499429374304698 0.0499429374304698
-7678 6365 1582 0.142378532382676 0.142378532382676
-7679 1582 6366 1.28806099537571 1.28806099537571
-7680 6367 2271 0.093525872105216 0.093525872105216
-7681 2271 6368 0.0953526699152847 0.0953526699152847
-7682 6368 6369 0.0956103425754401 0.0956103425754401
-7683 6369 2130 0.0946975078442247 0.0946975078442247
-7684 2130 5981 0.0976635368625979 0.0976635368625979
-7685 5981 6370 0.0910203235542429 0.0910203235542429
-7686 6370 2335 0.0939706612325521 0.0939706612325521
-7687 2335 6371 1.7470149025737 1.7470149025737
-7688 96 3500 0.202527213410831 0.202527213410831
-7689 3500 6372 0.200485391157046 0.200485391157046
-7690 6372 6373 0.200744473183588 0.200744473183588
-7691 6373 6374 0.203425216522523 0.203425216522523
-7692 6374 261 0.363896677888795 0.363896677888795
-7693 261 6375 0.041137585532266 0.041137585532266
-7694 6375 6376 0.527231991542063 0.527231991542063
-8934 2865 7087 0.201874708309178 0.201874708309178
-7696 6377 3069 0.174367166483664 0.174367166483664
-7697 3069 6378 0.175688037406208 0.175688037406208
-7698 6378 6379 0.195293035214527 0.195293035214527
-7700 5015 6380 0.0917013339896307 0.0917013339896307
-7702 380 6381 0.0601450697094338 0.0601450697094338
-7703 6381 3398 0.0950953426294514 0.0950953426294514
-7704 3398 6384 0.0512135480319707 0.0512135480319707
-7705 6384 6385 0.0512477474787707 0.0512477474787707
-7706 6385 6386 0.0508150751685789 0.0508150751685789
-7707 6386 6387 0.0467877396177586 0.0467877396177586
-7708 6387 6388 0.102738526459791 0.102738526459791
-7709 6388 6389 0.0502022657375815 0.0502022657375815
-7710 6389 6390 0.0495952560526731 0.0495952560526731
-7711 6390 6391 0.0506266673865361 0.0506266673865361
-7712 6391 1111 0.0484464674507555 0.0484464674507555
-7714 4654 1272 0.131229439030854 0.131229439030854
-7715 1272 6392 0.0233060632854453 0.0233060632854453
-7716 6392 4560 0.111717062627726 0.111717062627726
-7717 4560 2711 0.115276038939543 0.115276038939543
-7718 2711 6393 0.157827401374253 0.157827401374253
-7720 6394 6142 0.134287937529063 0.134287937529063
-7721 6142 4016 0.132933704994743 0.132933704994743
-7722 4016 6395 0.00906250528140326 0.00906250528140326
-7723 6395 382 0.124591902443133 0.124591902443133
-7725 5850 6396 0.00523272011597534 0.00523272011597534
-7726 6396 501 0.199511293598505 0.199511293598505
-7727 501 6397 0.217152349025227 0.217152349025227
-7728 6397 6398 0.36755359975324 0.36755359975324
-7730 3613 6399 0.21266860576331 0.21266860576331
-7732 6401 6402 0.038551456513769 0.038551456513769
-7733 6402 6403 0.01171446339475 0.01171446339475
-7735 2909 6404 0.0724414530545414 0.0724414530545414
-7736 6404 6405 0.105070094163828 0.105070094163828
-7737 6405 6174 0.106062498124406 0.106062498124406
-7738 6174 3312 0.104669820520163 0.104669820520163
-7739 3312 6406 0.105292804834109 0.105292804834109
-7741 5545 2415 0.0733757601851338 0.0733757601851338
-7743 5056 4299 0.0731858562049149 0.0731858562049149
-7745 5093 6407 0.0155546054802435 0.0155546054802435
-7747 3914 4762 0.124500033165113 0.124500033165113
-7750 6409 5773 0.332202382721644 0.332202382721644
-7752 6410 6411 0.0178672618817003 0.0178672618817003
-7754 6409 6412 0.0520862922994697 0.0520862922994697
-7756 6231 6413 0.198055274582402 0.198055274582402
-7758 6414 6415 0.189433856898839 0.189433856898839
-7759 6416 4038 0.0834324728266378 0.0834324728266378
-7761 6417 4521 0.134579982196382 0.134579982196382
-7762 4521 5240 0.13502405245006 0.13502405245006
-7763 5240 6418 0.13412336654487 0.13412336654487
-7764 6418 6419 0.133878890575632 0.133878890575632
-7765 6419 1678 0.134913237668999 0.134913237668999
-7766 1678 6421 0.134568146094945 0.134568146094945
-7767 6421 2457 0.135266114631303 0.135266114631303
-7768 2457 3225 0.138075006668938 0.138075006668938
-7769 3225 5745 0.134195295626898 0.134195295626898
-7770 5745 5522 0.132936679979251 0.132936679979251
-7771 5522 6422 0.135417328130375 0.135417328130375
-7772 6422 6423 0.137879539043021 0.137879539043021
-7776 6425 6426 0.131565838315989 0.131565838315989
-9014 7117 7118 0.0653478278832396 0.0653478278832396
-7778 2486 2825 0.134659485620958 0.134659485620958
-7779 2825 1435 0.20171777298344 0.20171777298344
-7780 1435 6427 0.150355567395556 0.150355567395556
-7782 4094 6039 0.18817564016619 0.18817564016619
-7783 6039 6428 0.201342188276825 0.201342188276825
-7784 6428 6429 0.404705192201308 0.404705192201308
-7785 6430 2403 0.202864038761159 0.202864038761159
-7786 2403 6431 0.0331723473682169 0.0331723473682169
-7787 6431 6432 0.176045966759895 0.176045966759895
-7789 6433 6434 0.0826623084672878 0.0826623084672878
-7790 6434 6435 0.102944521823956 0.102944521823956
-7791 6435 6436 0.00978588535341196 0.00978588535341196
-7793 6131 5859 0.176922247784819 0.176922247784819
-7794 5859 1306 0.176947022701008 0.176947022701008
-7795 1306 6437 0.245961882429388 0.245961882429388
-7797 4379 175 0.0949912703955897 0.0949912703955897
-7799 6438 6439 0.118265132463411 0.118265132463411
-7800 426 6440 0.136068759302944 0.136068759302944
-7801 6440 6140 0.13326442219696 0.13326442219696
-7802 6140 4012 0.134504046499466 0.134504046499466
-7803 4012 6441 0.132430300578831 0.132430300578831
-7804 6441 6442 0.13523718007968 0.13523718007968
-7805 6442 3383 0.131020837855346 0.131020837855346
-7807 6443 5593 0.101318153214668 0.101318153214668
-7809 5592 6444 0.0976166388579658 0.0976166388579658
-7810 6444 6445 0.491425863708822 0.491425863708822
-7814 2400 6448 0.282522157819803 0.282522157819803
-7817 2813 6450 0.086833012009872 0.086833012009872
-7819 6451 6452 0.0978256934477298 0.0978256934477298
-7820 6452 3935 0.102019422492613 0.102019422492613
-7821 3935 5623 0.0992172562512715 0.0992172562512715
-7823 6453 4202 0.100516365940058 0.100516365940058
-7824 4202 1069 0.100502974298411 0.100502974298411
-7825 1069 2505 0.106288157429336 0.106288157429336
-7827 6454 1236 0.0948029547901802 0.0948029547901802
-7828 1236 4810 0.0999111243280575 0.0999111243280575
-7829 4810 2177 0.101346858256007 0.101346858256007
-7830 2177 595 0.0594373309242362 0.0594373309242362
-7831 595 6456 0.0424911721972826 0.0424911721972826
-7833 349 6422 0.0713248739505624 0.0713248739505624
-7834 6422 4630 0.121079515215535 0.121079515215535
-7836 1259 376 0.0755636106904258 0.0755636106904258
-7837 376 4545 0.0608816123146845 0.0608816123146845
-7838 4545 2701 0.135701731606855 0.135701731606855
-7839 2701 6457 0.126994454068005 0.126994454068005
-7841 6458 6459 0.0454788769710747 0.0454788769710747
-7842 6459 6460 0.0496400956308302 0.0496400956308302
-7843 6460 6461 0.0515972381206 0.0515972381206
-7845 6462 6463 0.0483118204156802 0.0483118204156802
-7846 6463 1134 0.0499784066419261 0.0499784066419261
-7847 1134 6464 0.0497410465605515 0.0497410465605515
-7849 6465 6466 0.0544130408961272 0.0544130408961272
-7850 6466 3850 0.0472855484942146 0.0472855484942146
-7851 3850 6467 0.0501739162143614 0.0501739162143614
-7852 6467 5576 0.0486954285842123 0.0486954285842123
-7854 6468 4673 0.110758148850492 0.110758148850492
-7855 4673 6469 0.101963932591745 0.101963932591745
-7857 5575 6471 0.0065719182159958 0.0065719182159958
-7858 6471 6472 0.0420124186537075 0.0420124186537075
-7859 6472 6473 0.0412603655949121 0.0412603655949121
-7860 6473 6474 0.00681975388326533 0.00681975388326533
-7862 6476 3433 0.101986471383689 0.101986471383689
-7864 6477 6478 0.14533158628719 0.14533158628719
-7865 6478 6479 0.146043976986052 0.146043976986052
-7866 6479 2014 0.145258231311968 0.145258231311968
-7867 2014 6480 0.148541120069898 0.148541120069898
-7868 6480 6481 0.146497737165933 0.146497737165933
-7870 6482 6483 0.108282286689265 0.108282286689265
-7871 6483 6484 0.108491401341724 0.108491401341724
-7873 6485 6486 0.107588206878742 0.107588206878742
-7874 6486 6487 0.108152480667507 0.108152480667507
-7875 6487 6488 0.101444382501879 0.101444382501879
-7876 6488 6489 0.0964116258051976 0.0964116258051976
-7877 6489 6490 0.100996661509111 0.100996661509111
-7878 6490 6491 0.0875395650093709 0.0875395650093709
-7879 6491 5045 0.0321137501610987 0.0321137501610987
-7880 5045 6492 0.117702359393688 0.117702359393688
-7882 6493 6494 0.102121868544675 0.102121868544675
-7885 5423 6497 0.104998299985498 0.104998299985498
-7887 6498 2276 0.0954001386196214 0.0954001386196214
-7888 2276 3599 0.06824353272523 0.06824353272523
-7889 3599 6499 0.0293198911712676 0.0293198911712676
-7890 6499 6500 0.100538255640661 0.100538255640661
-7891 6500 5163 0.0991059325809468 0.0991059325809468
-7892 5163 5160 0.0380087655441681 0.0380087655441681
-7893 5160 5991 0.104706554354607 0.104706554354607
-7894 5991 6501 0.100402260808534 0.100402260808534
-7895 6501 6502 1.04365943145138 1.04365943145138
-7898 435 6505 0.0386263503887606 0.0386263503887606
-7899 6505 335 0.101999106210783 0.101999106210783
-18520 9719 10306 0.125645609854682 0.125645609854682
-7901 6506 6507 1.29783680025226 1.29783680025226
-7902 6507 5983 0.103637474886707 0.103637474886707
-7903 5983 2101 0.103292266259067 0.103292266259067
-9126 1424 7178 0.131577423131136 0.131577423131136
-7904 2101 6508 0.248902894245049 0.248902894245049
-7906 6509 6510 0.360508984578831 0.360508984578831
-7907 6510 6511 0.0349379067210739 0.0349379067210739
-7909 6512 6513 0.304262851034051 0.304262851034051
-7910 6513 6198 0.252538456966519 0.252538456966519
-7911 6198 576 0.0366939406022336 0.0366939406022336
-7912 576 6515 0.0946945974761285 0.0946945974761285
-7915 89 3525 0.202675004351493 0.202675004351493
-7916 3525 6516 0.201208326437589 0.201208326437589
-7917 6516 6517 0.125720317267139 0.125720317267139
-7919 6518 6519 0.200829668984099 0.200829668984099
-7920 6519 5832 0.202502182884777 0.202502182884777
-7921 5832 6520 0.201241567556278 0.201241567556278
-7922 6520 6521 0.396923547399649 0.396923547399649
-7923 6522 6523 0.133027344486413 0.133027344486413
-7924 6523 4230 0.0509058477475031 0.0509058477475031
-7925 4230 3627 0.095634183764131 0.095634183764131
-7926 3627 1795 0.17402508350424 0.17402508350424
-7928 6524 4175 0.0888021060703878 0.0888021060703878
-17651 395 780 0.411550362143881 0.411550362143881
-7930 6525 1780 0.0441669339202922 0.0441669339202922
-7931 1780 4371 0.0730695211007641 0.0730695211007641
-7932 4371 6527 0.0615136660388587 0.0615136660388587
-7933 6527 365 0.0331373286455635 0.0331373286455635
-7935 6528 6529 0.918393000112345 0.918393000112345
-7936 6529 6530 0.220602612202271 0.220602612202271
-7938 6531 6533 0.0857049610334614 0.0857049610334614
-7940 5175 3090 0.40371590303619 0.40371590303619
-7941 3090 3201 0.197838998920199 0.197838998920199
-7943 6407 4688 0.196571833896643 0.196571833896643
-7944 4688 4940 0.140125445900248 0.140125445900248
-7946 6170 5019 0.102773469761832 0.102773469761832
-7947 5019 3351 0.103514032973499 0.103514032973499
-7948 3351 6534 0.103149871890818 0.103149871890818
-7949 6534 6535 0.102775789327764 0.102775789327764
-9173 5349 5392 0.0859339245649361 0.0859339245649361
-7950 6535 2060 0.103192691678964 0.103192691678964
-7951 2060 2646 0.101884046964041 0.101884046964041
-7952 2646 4112 0.105519033634909 0.105519033634909
-7953 4112 6536 0.103005071327601 0.103005071327601
-7954 6536 6537 0.102995851811127 0.102995851811127
-7955 6537 6539 0.1029998815793 0.1029998815793
-7956 6539 3453 0.102546625331303 0.102546625331303
-7958 6015 3883 0.103459903316916 0.103459903316916
-7959 3883 846 0.104834602248929 0.104834602248929
-7960 846 6540 0.101388253991195 0.101388253991195
-7961 6540 6541 0.0479102302548626 0.0479102302548626
-7963 988 6542 0.0976255225844962 0.0976255225844962
-7964 6542 6543 0.0510763365802728 0.0510763365802728
-7966 6544 2318 0.0507276043625414 0.0507276043625414
-7967 2318 5114 0.0505908057304328 0.0505908057304328
-7968 5114 445 0.0485658434846568 0.0485658434846568
-7969 445 4713 0.0498146803357513 0.0498146803357513
-7970 4713 6546 0.0983637452954902 0.0983637452954902
-7971 6546 6547 0.0998347883215936 0.0998347883215936
-7973 5411 3144 0.088816521791746 0.088816521791746
-7974 3144 3916 0.112464236744585 0.112464236744585
-7976 6332 6548 0.108272865647673 0.108272865647673
-7977 6548 3156 0.104441457482765 0.104441457482765
-7978 3156 4975 0.102775440582403 0.102775440582403
-7979 4975 6549 0.100365138716245 0.100365138716245
-7980 6549 6550 0.102792800397101 0.102792800397101
-7982 6526 5047 0.0492847670519182 0.0492847670519182
-7983 5047 6551 0.0975745067522553 0.0975745067522553
-17653 9285 10141 0.0935043743671756 0.0935043743671756
-7984 6551 5065 0.0520838428726065 0.0520838428726065
-7985 5065 987 0.0487655351272014 0.0487655351272014
-7987 6552 6553 0.11141163822183 0.11141163822183
-7988 6553 6554 0.0931288050453943 0.0931288050453943
-7989 6554 6555 0.0954267012259227 0.0954267012259227
-7990 6555 6556 0.0932230978560399 0.0932230978560399
-7991 6556 2018 0.096637647678534 0.096637647678534
-7992 2018 2008 0.0302895913994428 0.0302895913994428
-7993 2008 6557 0.0614415106208342 0.0614415106208342
-7995 2764 6558 0.0940583318372542 0.0940583318372542
-7996 6558 2268 0.0933570415002435 0.0933570415002435
-7998 5192 6559 0.0436786412585742 0.0436786412585742
-7999 6559 6560 0.0106994466158069 0.0106994466158069
-8002 6562 6563 0.0505000952437127 0.0505000952437127
-8004 3018 6564 0.0487830282291943 0.0487830282291943
-8005 6564 4383 0.0508423763728808 0.0508423763728808
-8006 4383 6565 0.0576100244421376 0.0576100244421376
-8008 6566 6567 0.00412306976586438 0.00412306976586438
-8009 6567 6568 0.0539582974681531 0.0539582974681531
-8010 6568 6569 0.0519961096093482 0.0519961096093482
-8011 6569 6570 0.0542246799430147 0.0542246799430147
-8012 6570 6571 0.0518803862854092 0.0518803862854092
-17654 10141 10140 0.10337885268614 0.10337885268614
-8013 6571 6572 0.0555098728995741 0.0555098728995741
-8014 6572 6573 0.0518861583127315 0.0518861583127315
-8015 6573 6574 0.0518860343451018 0.0518860343451018
-8016 6574 6575 0.0508332520538339 0.0508332520538339
-8017 6575 6576 0.0544506518702307 0.0544506518702307
-8018 6576 6176 0.0529383120108553 0.0529383120108553
-8019 6176 6577 0.0529043310628525 0.0529043310628525
-8020 6577 3307 0.0513720664630444 0.0513720664630444
-8021 3307 6578 0.0555027664653656 0.0555027664653656
-8022 6578 6579 0.0497858933197237 0.0497858933197237
-8026 916 6582 0.0644004913493865 0.0644004913493865
-8027 6582 6583 0.0568408799781512 0.0568408799781512
-8028 6583 6584 0.122686442934717 0.122686442934717
-8029 6584 6585 0.119086225858405 0.119086225858405
-8031 4637 6586 0.0681807162053014 0.0681807162053014
-8032 6586 4550 0.0899357767109733 0.0899357767109733
-8033 4550 6587 0.293817867332518 0.293817867332518
-8034 6587 6588 0.104136881172081 0.104136881172081
-8035 6588 6589 0.0983651040648428 0.0983651040648428
-8036 6589 6129 0.0990923096855932 0.0990923096855932
-8037 6129 3972 0.0982639550962464 0.0982639550962464
-8038 3972 6590 0.099057650475641 0.099057650475641
-17935 10221 8779 0.0167456719913715 0.0167456719913715
-8039 6590 1407 0.099982611141039 0.099982611141039
-8040 1407 6591 0.096574089288832 0.096574089288832
-8042 5218 3376 0.0125708011673062 0.0125708011673062
-8043 3376 3397 0.0411038350876113 0.0411038350876113
-8044 3397 6592 0.0474630685655207 0.0474630685655207
-8045 6592 5717 0.0112629167716475 0.0112629167716475
-8046 5717 5711 0.0353931291626462 0.0353931291626462
-8049 6594 6595 0.0372589458613009 0.0372589458613009
-8051 6596 6597 0.0491446235593822 0.0491446235593822
-8052 6597 6598 0.0512739101828601 0.0512739101828601
-8053 6598 6599 0.0445968134228137 0.0445968134228137
-8054 6599 6600 0.0456401369039379 0.0456401369039379
-8055 6600 252 0.0644261415780049 0.0644261415780049
-8056 252 3949 0.0630622102110069 0.0630622102110069
-8057 3949 6601 0.0624388506180743 0.0624388506180743
-8058 6601 5610 0.057495014751868 0.057495014751868
-8059 5610 6602 0.0530621910173341 0.0530621910173341
-8060 6602 3731 0.0543021802328704 0.0543021802328704
-8061 3731 6603 0.107126213030051 0.107126213030051
-8062 6603 4486 0.0992014153017681 0.0992014153017681
-8064 302 396 0.456543205648827 0.456543205648827
-8065 396 6604 0.263692963912388 0.263692963912388
-8067 2108 5986 0.103617400145952 0.103617400145952
-8068 5986 6605 0.103377873268697 0.103377873268697
-9343 7304 2051 0.0535709121596095 0.0535709121596095
-8070 4763 6169 0.176859243925992 0.176859243925992
-8123 6640 6641 0.17629957299909 0.17629957299909
-8071 6169 6260 0.145538243855646 0.145538243855646
-8072 6260 3917 0.186355414418251 0.186355414418251
-8075 6608 6609 0.216668843775513 0.216668843775513
-8076 6609 5988 0.0945207273969085 0.0945207273969085
-8077 5988 2122 0.100941576479339 0.100941576479339
-8078 2122 6610 0.0983635555045419 0.0983635555045419
-8079 6610 6611 0.0970315915473971 0.0970315915473971
-8081 6612 6613 0.0935811526066721 0.0935811526066721
-8082 6613 2749 0.0990634268639465 0.0990634268639465
-8083 2749 6614 0.105679418235948 0.105679418235948
-8085 6615 6616 0.101635566171867 0.101635566171867
-8086 6616 6617 0.0962607674133666 0.0962607674133666
-8087 6617 6618 0.0951534169408166 0.0951534169408166
-8088 6618 6619 0.0938879229278784 0.0938879229278784
-17940 6560 10223 0.0802385671723254 0.0802385671723254
-8090 6620 6621 0.160330485968093 0.160330485968093
-8094 6623 1791 0.109097036983099 0.109097036983099
-8095 1791 3615 0.039522374569603 0.039522374569603
-8096 3615 6624 0.0738542372087066 0.0738542372087066
-8097 6624 6625 0.00831390386589708 0.00831390386589708
-8098 6625 6626 0.070757439886615 0.070757439886615
-8099 6626 6627 0.0728730586061825 0.0728730586061825
-8100 6627 5098 0.0960515227378026 0.0960515227378026
-8101 5098 6628 0.0550201636939116 0.0550201636939116
-8103 6630 239 0.0379460853943731 0.0379460853943731
-13573 9130 3 0.109013561390269 0.109013561390269
-8105 6631 6632 0.0782857815609104 0.0782857815609104
-8106 6632 6533 0.166563544591406 0.166563544591406
-8108 4496 6633 0.110872689467253 0.110872689467253
-8109 6633 2525 0.333067333185797 0.333067333185797
-8111 6530 6634 0.0105197308884475 0.0105197308884475
-9336 7300 4780 0.0501146245066156 0.0501146245066156
-8112 6634 6635 2.4458667171276 2.4458667171276
-8113 6636 3095 0.197330202512711 0.197330202512711
-8114 3095 3205 0.202310741049047 0.202310741049047
-8115 3205 6118 0.200935805580311 0.200935805580311
-8116 6118 1915 0.200185455389542 0.200185455389542
-8118 6637 5842 0.204932644380513 0.204932644380513
-8119 5842 6638 0.194625839062785 0.194625839062785
-8121 6639 3724 0.202719550339155 0.202719550339155
-8122 3724 6640 0.104515203903702 0.104515203903702
-8124 6641 2622 0.176067278462879 0.176067278462879
-8125 2622 5203 0.176917243967006 0.176917243967006
-8126 5203 6232 0.177139986115085 0.177139986115085
-8129 6643 6644 0.177268373064057 0.177268373064057
-8130 6644 6600 0.175826872766799 0.175826872766799
-8131 6600 6646 0.177773484713149 0.177773484713149
-8133 6647 6648 0.177957472274986 0.177957472274986
-8134 6648 6649 0.169816854222751 0.169816854222751
-8135 6649 6650 0.0183704581232897 0.0183704581232897
-8136 6650 6651 0.180283145370232 0.180283145370232
-8137 6651 6652 0.0228081566299403 0.0228081566299403
-8139 6653 1499 0.197154421185115 0.197154421185115
-8140 1499 188 0.204153885319108 0.204153885319108
-8141 188 5878 0.159028819712238 0.159028819712238
-8142 5878 6654 0.24236157922448 0.24236157922448
-8144 1583 6655 0.303396334779096 0.303396334779096
-8145 6656 5874 0.176427569810156 0.176427569810156
-8146 5874 6657 0.00810609260917888 0.00810609260917888
-8147 6657 6658 0.0470608013663409 0.0470608013663409
-8150 6659 6660 0.255748331282284 0.255748331282284
-8151 6661 6662 0.00688301382680834 0.00688301382680834
-8152 6662 6663 0.392909871907801 0.392909871907801
-8153 6664 1758 0.130752459577202 0.130752459577202
-8154 1758 6314 0.0908112834588078 0.0908112834588078
-8155 6314 6665 0.191679756807403 0.191679756807403
-8156 6665 763 0.155864734453911 0.155864734453911
-8157 763 6668 0.0989081569703109 0.0989081569703109
-8158 6668 1760 0.0778502447443476 0.0778502447443476
-8159 1760 6003 0.221657363761595 0.221657363761595
-8160 6003 5765 0.101345142024656 0.101345142024656
-8161 5765 4032 0.0976983696193598 0.0976983696193598
-8162 4032 6669 0.0654151166199609 0.0654151166199609
-8164 2301 1759 0.0929594689620956 0.0929594689620956
-8165 1759 150 0.2063607315498 0.2063607315498
-8166 150 1738 0.199773882802826 0.199773882802826
-8168 1953 3100 0.166887359049361 0.166887359049361
-8170 370 2529 0.0016410050164606 0.0016410050164606
-8171 2529 6670 0.0654370448512421 0.0654370448512421
-8200 6684 1172 0.140728922414785 0.140728922414785
-8172 6670 1937 0.344573874886115 0.344573874886115
-8174 6671 6672 0.176399723080376 0.176399723080376
-8176 3101 6673 0.188864615641403 0.188864615641403
-8178 4227 1805 0.201844384843532 0.201844384843532
-8179 1805 6674 0.203096969054999 0.203096969054999
-8180 6674 5847 0.205632777843381 0.205632777843381
-8181 5847 6675 0.197984723567939 0.197984723567939
-8183 6676 4226 0.190839047917349 0.190839047917349
-8185 4212 1268 0.185384243862507 0.185384243862507
-8187 6677 2875 0.129732620530101 0.129732620530101
-8188 2875 6678 0.138723736947104 0.138723736947104
-8189 6678 6679 0.13144235424121 0.13144235424121
-8190 6679 6680 0.782596772143326 0.782596772143326
-8191 3575 5642 0.141762411979774 0.141762411979774
-8192 5642 4347 0.140039066988463 0.140039066988463
-8193 4347 6345 0.13859354874742 0.13859354874742
-8194 6345 3049 0.140317315615912 0.140317315615912
-8195 3049 3024 0.0669551847418331 0.0669551847418331
-8196 3024 6681 0.0663747225163875 0.0663747225163875
-8197 6681 6682 0.00550527045183645 0.00550527045183645
-8198 6682 6683 0.122014480736259 0.122014480736259
-8199 6683 6684 0.0145554158979999 0.0145554158979999
-8201 1172 892 0.137892873302074 0.137892873302074
-8202 892 4475 0.139838739747675 0.139838739747675
-8203 4475 2777 0.135724572944392 0.135724572944392
-8204 2777 5266 0.129198654341627 0.129198654341627
-8205 5266 6685 0.122514628608539 0.122514628608539
-8206 6685 6686 0.20769100942942 0.20769100942942
-8207 6686 6357 0.202692590161251 0.202692590161251
-8208 6357 2390 0.107324644883127 0.107324644883127
-8209 2390 6687 0.139594845742255 0.139594845742255
-8210 6687 6688 0.0752686220951058 0.0752686220951058
-8211 6688 749 0.0665961818211898 0.0665961818211898
-8212 749 1567 0.140763317861176 0.140763317861176
-8213 1567 6689 0.140174033607804 0.140174033607804
-8215 6691 696 0.200953877059722 0.200953877059722
-8216 696 6692 0.202493921890496 0.202493921890496
-8218 508 6693 0.0440506867837982 0.0440506867837982
-8219 6694 1202 0.170408371052522 0.170408371052522
-8220 1202 6695 0.022095029398504 0.022095029398504
-8221 6695 3781 0.199196539116323 0.199196539116323
-8222 3781 6696 0.154646276165852 0.154646276165852
-8224 951 6697 0.162889491053556 0.162889491053556
-8225 6697 4890 0.17202029430472 0.17202029430472
-8226 4890 6698 0.182585439334225 0.182585439334225
-8227 6698 5488 0.173629132461636 0.173629132461636
-8230 6700 6701 0.054263196932367 0.054263196932367
-8231 6701 5807 0.103685962200744 0.103685962200744
-8232 5807 6702 0.106632774624389 0.106632774624389
-8233 6702 6703 0.0962060876195832 0.0962060876195832
-8234 6703 5959 0.00690380150934747 0.00690380150934747
-8235 5959 6704 0.00415729025946559 0.00415729025946559
-8236 6704 3004 0.101332185729619 0.101332185729619
-8237 3004 4395 0.106412326585027 0.106412326585027
-8238 4395 6705 0.103936208820228 0.103936208820228
-8239 6705 6706 0.108885043469445 0.108885043469445
-8240 6706 6707 0.0530572853327784 0.0530572853327784
-8241 6707 6708 0.0508918154467618 0.0508918154467618
-8242 6708 6709 0.103982459974641 0.103982459974641
-8243 6709 6710 0.100220871190445 0.100220871190445
-8244 6710 6711 0.00631643031082491 0.00631643031082491
-8245 6711 6188 0.105471969629518 0.105471969629518
-8246 6188 6712 0.0552929480053166 0.0552929480053166
-8247 6712 6713 0.051155648874288 0.051155648874288
-8249 4495 6714 0.112097289917407 0.112097289917407
-8250 6714 1079 0.0913714399600763 0.0913714399600763
-8251 1079 2524 0.245312559433029 0.245312559433029
-8253 6006 6251 0.204148069385731 0.204148069385731
-8254 6251 6715 0.203065667560916 0.203065667560916
-8256 2935 6716 0.266313303297407 0.266313303297407
-8257 6416 3741 0.135496222887927 0.135496222887927
-8258 3741 5854 0.117997896305679 0.117997896305679
-8260 2305 161 0.314948131318509 0.314948131318509
-8263 6717 3071 0.175732613824838 0.175732613824838
-8264 3071 6718 0.173767654321711 0.173767654321711
-8265 6718 6100 0.243539432543733 0.243539432543733
-8267 3290 98 0.422419964097428 0.422419964097428
-8269 4373 2854 0.205542196291208 0.205542196291208
-8271 6719 1596 0.0969388330111528 0.0969388330111528
-8273 118 6721 0.0966297992771619 0.0966297992771619
-8274 6721 6722 0.0414535753801991 0.0414535753801991
-8276 2311 6580 0.108271978342533 0.108271978342533
-8277 6580 6723 0.0197325066377101 0.0197325066377101
-8301 4041 6740 0.178573713835442 0.178573713835442
-8302 6740 1829 0.177333893618754 0.177333893618754
-8279 4433 6724 0.324356944785499 0.324356944785499
-8282 6725 6088 0.0237314605310015 0.0237314605310015
-8283 6088 4822 0.0875664870066569 0.0875664870066569
-8284 4822 6726 0.0475371228844605 0.0475371228844605
-8285 6726 4515 0.133316815943664 0.133316815943664
-8286 4515 5237 0.132189806591607 0.132189806591607
-9507 2581 5179 0.178384896285487 0.178384896285487
-8287 5237 6727 0.137381332135233 0.137381332135233
-8288 6727 6728 0.132866818946611 0.132866818946611
-8289 6728 1673 0.133389434002772 0.133389434002772
-8290 1673 6729 0.137304160443328 0.137304160443328
-8292 6730 6731 0.0127908749904874 0.0127908749904874
-8324 6753 6754 0.0516246355995179 0.0516246355995179
-8293 6731 6734 0.253997048781863 0.253997048781863
-8294 6734 6735 0.103152527560213 0.103152527560213
-8296 6736 6737 0.0131672047429292 0.0131672047429292
-8298 4636 5383 0.185495216645111 0.185495216645111
-8300 5972 4041 0.174731707729605 0.174731707729605
-8303 1829 6741 0.102538685907791 0.102538685907791
-8304 4575 6440 0.137081553799117 0.137081553799117
-8305 6440 5291 0.136014333235461 0.136014333235461
-8306 5291 6742 0.135023999424587 0.135023999424587
-8307 6742 10 0.133312225882616 0.133312225882616
-8308 10 6394 0.135032006709 0.135032006709
-8309 6394 6743 0.132451340826744 0.132451340826744
-8310 6743 6744 0.135765849385072 0.135765849385072
-8311 6744 6745 0.133823531129847 0.133823531129847
-8313 6746 6747 0.134513077577228 0.134513077577228
-8314 6747 6748 0.134201163774105 0.134201163774105
-8316 6749 1938 0.0948580215175547 0.0948580215175547
-8318 307 5887 0.0912856383131267 0.0912856383131267
-8319 5887 6750 0.00721526462075332 0.00721526462075332
-8320 6750 6751 0.0269156344716724 0.0269156344716724
-8323 6752 6753 0.0510955164610192 0.0510955164610192
-8325 6754 6755 0.0510906826304937 0.0510906826304937
-8326 6755 6756 0.0511615632316368 0.0511615632316368
-8327 6756 1661 0.0519510824904343 0.0519510824904343
-8328 1661 6758 0.0509873448397052 0.0509873448397052
-8329 6758 6759 0.0522106080921687 0.0522106080921687
-8330 6759 6760 0.0506887592311432 0.0506887592311432
-18752 5186 5654 0.105380231545906 0.105380231545906
-8331 6760 6761 0.0573063184317804 0.0573063184317804
-8333 6762 6763 0.0501245455122697 0.0501245455122697
-8334 6763 6764 0.0489376044154541 0.0489376044154541
-8337 6766 6767 0.0490039328328154 0.0490039328328154
-8338 6767 6768 0.0513498171240697 0.0513498171240697
-8339 6768 6769 0.0498709246005866 0.0498709246005866
-8341 5533 6770 0.292387787290413 0.292387787290413
-8343 2972 6771 0.121066844508317 0.121066844508317
-8344 6771 6093 0.143799158144466 0.143799158144466
-8345 6093 6772 0.01594646132934 0.01594646132934
-8346 6772 6773 0.00797333604469033 0.00797333604469033
-8347 6773 6774 0.00589372782719237 0.00589372782719237
-8349 6775 6776 0.135681018337986 0.135681018337986
-8350 6776 2490 0.131411131535027 0.131411131535027
-8351 2490 2835 0.135427320939223 0.135427320939223
-8353 4067 6052 0.133451561970317 0.133451561970317
-8354 6052 5792 0.201431723471221 0.201431723471221
-8356 6777 6778 0.137939265537406 0.137939265537406
-8358 6658 6779 0.0952206682824548 0.0952206682824548
-8359 6779 1328 0.20245506080321 0.20245506080321
-9582 1393 7408 0.0523989189771459 0.0523989189771459
-8360 1328 6780 0.24344994454685 0.24344994454685
-8362 6781 6338 0.132299767169153 0.132299767169153
-18540 10312 7538 0.710682259466036 0.710682259466036
-8363 6338 3026 0.142960379522958 0.142960379522958
-8364 3026 6782 0.131957413991529 0.131957413991529
-8365 6782 6783 0.00572653872195823 0.00572653872195823
-8366 6783 6784 0.13893806084239 0.13893806084239
-8367 6784 1155 0.138805738856212 0.138805738856212
-8368 1155 876 0.139884571461894 0.139884571461894
-8370 4464 2784 0.134142589801556 0.134142589801556
-8371 2784 5255 0.132457483790055 0.132457483790055
-8372 5255 4727 0.21307200925813 0.21307200925813
-8373 4727 5126 0.0748266761428759 0.0748266761428759
-8374 5126 6785 0.0660204248306932 0.0660204248306932
-8375 6785 4284 0.173603246809035 0.173603246809035
-8377 6786 6787 0.142696164770821 0.142696164770821
-8379 5475 6788 0.1766899367412 0.1766899367412
-8380 6788 6789 0.178262795240798 0.178262795240798
-8381 6789 669 0.0038695834466259 0.0038695834466259
-8382 669 6790 0.00298242718157566 0.00298242718157566
-8383 6790 6791 0.175654700740653 0.175654700740653
-8385 4603 6493 0.141540356779896 0.141540356779896
-8386 6493 6795 0.235592097571248 0.235592097571248
-8387 6795 6796 0.135380255100289 0.135380255100289
-8388 6796 6797 0.00458123097756658 0.00458123097756658
-8389 6797 6798 0.00459235047115107 0.00459235047115107
-8390 6798 6799 0.135291654892361 0.135291654892361
-8391 6799 6800 0.141019064418211 0.141019064418211
-8392 6800 821 0.136459904501488 0.136459904501488
-8393 821 3562 0.138377698701616 0.138377698701616
-8395 5772 516 0.0304460136124682 0.0304460136124682
-8397 6411 6801 0.0202183008206165 0.0202183008206165
-8398 6802 469 0.0770276556079661 0.0770276556079661
-8399 469 4171 0.115648628347006 0.115648628347006
-8400 4171 6803 0.135804309767261 0.135804309767261
-8401 6803 4756 0.071946790437269 0.071946790437269
-8403 6804 6805 0.127899734301329 0.127899734301329
-8405 6803 4172 0.13716080109606 0.13716080109606
-8406 4172 470 0.118198242572908 0.118198242572908
-8407 470 6806 0.0738815709398357 0.0738815709398357
-8410 6807 6808 0.0966312020179035 0.0966312020179035
-8411 6808 6809 0.078738376832051 0.078738376832051
-8412 6809 3373 0.430297684252256 0.430297684252256
-8414 6810 6811 0.203442237788957 0.203442237788957
-8415 1476 6812 0.245653934383614 0.245653934383614
-8416 6812 6813 0.412460631108446 0.412460631108446
-8418 6814 6815 0.174359151043162 0.174359151043162
-8419 6815 3109 0.176366303019304 0.176366303019304
-8420 3109 6816 0.193801807541949 0.193801807541949
-8421 6816 6817 0.0198367109802725 0.0198367109802725
-8422 6817 6104 0.210336723998741 0.210336723998741
-8424 6818 4370 0.0431318765981996 0.0431318765981996
-8426 2496 1451 0.0985317859583251 0.0985317859583251
-8427 1451 2853 0.10657030011201 0.10657030011201
-8428 2853 6819 0.0983314928072937 0.0983314928072937
-8429 6819 6665 0.0998633676523793 0.0998633676523793
-8430 6665 6820 0.100599054724802 0.100599054724802
-8431 6820 3821 0.10490937410086 0.10490937410086
-8432 3821 5897 0.102058293498771 0.102058293498771
-9656 6387 7441 0.131317068143471 0.131317068143471
-8433 5897 6821 0.102847878519627 0.102847878519627
-8435 1593 1644 0.201270216910902 0.201270216910902
-8436 1644 6822 0.105737900324602 0.105737900324602
-8437 6822 4218 0.0969375306307301 0.0969375306307301
-8438 4218 6823 0.101326281592707 0.101326281592707
-8439 6823 198 0.0969958932624718 0.0969958932624718
-8440 198 2927 0.100607212393453 0.100607212393453
-8441 2927 5309 0.0991277824360909 0.0991277824360909
-8442 5309 1465 0.0998634796625755 0.0998634796625755
-8445 1176 6825 0.181656671362534 0.181656671362534
-8447 6826 6827 0.865493060175873 0.865493060175873
-8448 3119 6828 0.283790323154486 0.283790323154486
-8450 3496 6829 0.0523352446605108 0.0523352446605108
-8451 6829 6830 0.0732524388814314 0.0732524388814314
-8452 6830 3663 0.0505681915693724 0.0505681915693724
-8453 3663 4996 0.130580462322132 0.130580462322132
-8455 6831 6247 0.199011000686174 0.199011000686174
-8456 6247 6832 0.199751548882436 0.199751548882436
-8458 1495 184 0.20195222577189 0.20195222577189
-8459 184 1712 0.203399715506048 0.203399715506048
-8460 1712 6833 0.205087968397347 0.205087968397347
-8461 6833 1578 0.200928350075194 0.200928350075194
-8463 6835 5869 0.177962583931279 0.177962583931279
-8464 5869 1321 0.176970219219333 0.176970219219333
-8465 1321 1377 0.177352733194459 0.177352733194459
-8466 1377 6836 0.0602165463968322 0.0602165463968322
-8467 6836 6837 0.0823104914192672 0.0823104914192672
-8468 6837 4694 0.116790101887087 0.116790101887087
-18756 1322 1378 0.175845021978343 0.175845021978343
-8469 4694 6838 0.160065096905242 0.160065096905242
-8470 6838 5335 0.187163981040998 0.187163981040998
-8471 5335 6839 0.265241255095212 0.265241255095212
-8473 4319 4507 0.0895898957022207 0.0895898957022207
-8474 4507 6840 0.0124803827841914 0.0124803827841914
-8475 6840 6841 0.091716588631721 0.091716588631721
-8476 6841 6842 0.00740292454463184 0.00740292454463184
-8477 6842 285 0.0146970591982782 0.0146970591982782
-8478 285 5069 0.0844368792913957 0.0844368792913957
-13551 9125 9126 0.0538488930045225 0.0538488930045225
-8479 5069 6837 0.103562524850142 0.103562524850142
-8480 6837 6843 0.0961927404969427 0.0961927404969427
-8481 6843 6844 0.0998943541512786 0.0998943541512786
-8482 6844 6845 0.102052212683234 0.102052212683234
-8483 6845 6846 0.456427940885819 0.456427940885819
-8484 6847 4419 0.193121729151288 0.193121729151288
-8485 4419 6848 0.226127592349504 0.226127592349504
-8486 6848 5329 0.136063050211474 0.136063050211474
-8488 4363 1444 0.202825103543368 0.202825103543368
-8489 1444 6849 0.200067420030691 0.200067420030691
-8490 6849 6850 0.207042581432814 0.207042581432814
-8491 6850 5890 0.198967544378973 0.198967544378973
-8493 6851 6852 0.0470486102019036 0.0470486102019036
-8494 6852 6853 0.0201453367541323 0.0201453367541323
-8495 6853 6854 0.0193839654418635 0.0193839654418635
-8496 6854 6855 0.0201881052382051 0.0201881052382051
-8497 6855 6856 0.0195037980214848 0.0195037980214848
-8498 6856 6857 0.0198459509091597 0.0198459509091597
-8499 6857 6858 0.0195037180586887 0.0195037180586887
-8500 6858 6859 0.0199058270401761 0.0199058270401761
-8501 6859 1871 0.0228399539785669 0.0228399539785669
-8504 6861 6862 0.100580939051626 0.100580939051626
-8505 6862 6863 0.206622253376394 0.206622253376394
-8506 6863 6377 0.103010255262607 0.103010255262607
-8507 6377 4832 0.10370389707419 0.10370389707419
-8508 4832 6717 0.103234622646169 0.103234622646169
-8509 6717 6864 0.103703073117676 0.103703073117676
-8510 6864 6865 0.0481477570236711 0.0481477570236711
-8512 5856 6866 0.107372117361429 0.107372117361429
-8513 6866 6867 0.050649728561771 0.050649728561771
-8514 6867 4989 0.0553571225017631 0.0553571225017631
-8515 4989 6868 0.101318948663251 0.101318948663251
-8518 6869 3823 0.172685696470764 0.172685696470764
-8520 6870 5902 0.0785311515160625 0.0785311515160625
-8521 5902 6871 0.0681549663304684 0.0681549663304684
-8522 6871 1996 0.0322361485277902 0.0322361485277902
-8523 1996 1587 0.080539505433719 0.080539505433719
-8524 1587 6872 0.0787299872144713 0.0787299872144713
-8525 6872 1652 0.0828966049530784 0.0828966049530784
-9751 2441 5738 0.170975903813153 0.170975903813153
-8528 6874 5702 0.0496353984033346 0.0496353984033346
-8529 5702 6875 0.0484896470155752 0.0484896470155752
-8530 6875 6876 0.0523105680266916 0.0523105680266916
-8531 6876 6877 0.100875098780012 0.100875098780012
-8532 6877 6878 0.0515810406741165 0.0515810406741165
-8533 6878 6879 0.0480493192441991 0.0480493192441991
-8534 6879 6532 0.0493288645061034 0.0493288645061034
-8535 6532 6880 0.0170276228852009 0.0170276228852009
-8537 1128 6881 0.0506249344560303 0.0506249344560303
-8538 6881 6882 0.0501120958003525 0.0501120958003525
-8539 6882 6883 0.0495209017571618 0.0495209017571618
-8540 6883 3846 0.0513776048731037 0.0513776048731037
-8541 3846 6884 0.0512508950828751 0.0512508950828751
-8542 6884 5564 0.0499163404494349 0.0499163404494349
-8543 5564 6885 0.0796596960320095 0.0796596960320095
-8544 6885 6886 0.709637932237075 0.709637932237075
-8545 3929 5619 0.0645570027229576 0.0645570027229576
-8546 5619 3704 0.0990278562894358 0.0990278562894358
-9775 2551 7512 0.408787216175776 0.408787216175776
-8547 3704 709 0.100036425190807 0.100036425190807
-8548 709 6887 0.100506522060904 0.100506522060904
-8549 6887 6888 0.0973098804153082 0.0973098804153082
-8550 6888 4190 0.138652686970481 0.138652686970481
-8551 4190 2516 0.130567043389136 0.130567043389136
-8552 2516 6727 0.134515842897036 0.134515842897036
-8553 6727 4804 0.136148376446663 0.136148376446663
-8555 6890 6891 0.127464290413413 0.127464290413413
-8558 4625 1248 0.132737908659339 0.132737908659339
-8560 4557 2726 0.131937670977173 0.131937670977173
-8561 2726 6892 0.133086814424956 0.133086814424956
-8562 6892 6893 0.0108053798662109 0.0108053798662109
-8564 6894 6753 0.13855912942418 0.13855912942418
-8565 6753 3977 0.202975190536315 0.202975190536315
-8567 4726 5125 0.0514216994322944 0.0514216994322944
-8569 6895 2262 0.104167713702112 0.104167713702112
-8570 2262 3612 0.100511868469799 0.100511868469799
-8571 3612 6896 0.101962634245626 0.101962634245626
-8572 6896 2111 0.0983046285910296 0.0983046285910296
-8573 2111 6000 0.10637347320659 0.10637347320659
-8574 6000 6897 0.0969032855683131 0.0969032855683131
-8575 6897 6898 1.19574032306189 1.19574032306189
-8576 3909 1049 0.101955415333633 0.101955415333633
-8577 1049 6280 0.110396580345644 0.110396580345644
-8580 4727 6902 0.104166457963925 0.104166457963925
-8581 6902 5404 0.105633279342784 0.105633279342784
-8582 5404 3137 0.103462723581867 0.103462723581867
-8583 3137 3910 0.106566211179802 0.106566211179802
-8585 6685 6904 0.1009798833353 0.1009798833353
-8586 6904 6905 0.0978861772455395 0.0978861772455395
-8588 6906 6907 0.0919209174538617 0.0919209174538617
-8589 6907 3448 0.0130685497791993 0.0130685497791993
-8590 3448 6908 0.0816132292801626 0.0816132292801626
-8591 6908 6909 0.0115722967665996 0.0115722967665996
-8592 6909 6910 0.0993816484498638 0.0993816484498638
-8593 6910 805 0.0976551438474913 0.0976551438474913
-8594 805 6911 0.0993747261569693 0.0993747261569693
-8595 6911 6912 0.089888887106785 0.089888887106785
-8596 6912 6913 0.0146747703329366 0.0146747703329366
-8598 6914 1237 0.101225406841245 0.101225406841245
-8600 4811 2178 0.0990205816012607 0.0990205816012607
-8602 596 6305 0.0508308915230223 0.0508308915230223
-8603 6305 350 0.0658146671565848 0.0658146671565848
-8604 350 6425 0.0344816945169531 0.0344816945169531
-8605 6425 6423 0.0330039992635189 0.0330039992635189
-8606 6423 5343 0.065281602891384 0.065281602891384
-8607 5343 4631 0.0645633414559121 0.0645633414559121
-8608 4631 4639 0.0344816846016407 0.0344816846016407
-8610 1260 4538 0.0975702004070908 0.0975702004070908
-8611 4538 4546 0.0337389213160247 0.0337389213160247
-8612 4546 6284 0.0652815653305245 0.0652815653305245
-8613 6284 2702 0.0682127836725729 0.0682127836725729
-8614 2702 2716 0.0295959518245788 0.0295959518245788
-8615 2716 6915 0.102272155307925 0.102272155307925
-8617 277 6916 0.0242091643473284 0.0242091643473284
-8618 6916 6917 0.127799932481727 0.127799932481727
-8620 6918 6919 0.100490474583826 0.100490474583826
-8621 6919 3936 0.103902551113693 0.103902551113693
-8623 5625 109 0.104159188317199 0.104159188317199
-9852 7555 7556 0.127428116197139 0.127428116197139
-8625 720 6920 0.107136629659166 0.107136629659166
-8626 6920 6921 0.0878190742496679 0.0878190742496679
-8627 6921 760 0.053327069779034 0.053327069779034
-8628 760 4203 0.0493954421158038 0.0493954421158038
-19719 10631 10629 0.0181769844157554 0.0181769844157554
-8629 4203 4204 0.0379739020862165 0.0379739020862165
-8630 4204 1070 0.0609601987006813 0.0609601987006813
-8631 1070 1071 0.0198138913639204 0.0198138913639204
-8632 1071 2506 0.0820743434648716 0.0820743434648716
-8634 6922 6923 0.0332474984310345 0.0332474984310345
-8635 6923 6924 0.0309457475923951 0.0309457475923951
-8636 6924 6925 0.06835161173269 0.06835161173269
-8641 2302 152 0.296479047850973 0.296479047850973
-8642 152 1739 0.201132602649999 0.201132602649999
-8643 1739 1717 0.0492912051446921 0.0492912051446921
-8645 6315 6820 0.175487833230143 0.175487833230143
-8646 6820 764 0.157172405718933 0.157172405718933
-8647 764 6004 0.389410143877071 0.389410143877071
-8648 6004 6244 0.10052021368651 0.10052021368651
-11455 8264 8265 0.215908830963319 0.215908830963319
-8649 6244 6929 0.161155152616492 0.161155152616492
-8651 6930 6931 0.00809135923630026 0.00809135923630026
-8652 6931 6869 0.0905079323611068 0.0905079323611068
-8653 6869 6932 0.702159216296169 0.702159216296169
-8654 4432 6933 0.289985249196455 0.289985249196455
-8655 6933 4666 0.0976954476351155 0.0976954476351155
-8656 4666 1333 0.0998446345260267 0.0998446345260267
-8657 1333 1388 0.0991189577824547 0.0991189577824547
-8658 1388 6935 0.105783123390058 0.105783123390058
-8659 6935 6850 0.108467199591529 0.108467199591529
-8660 6850 4706 0.0984536865396038 0.0984536865396038
-8661 4706 6936 0.0998638834924626 0.0998638834924626
-8662 6936 1757 0.0991299509071506 0.0991299509071506
-8664 2103 5985 0.0990139620475444 0.0990139620475444
-8665 5985 6937 0.103423317739921 0.103423317739921
-8666 6937 6938 0.197320023520399 0.197320023520399
-8667 6939 6940 0.0449145362146055 0.0449145362146055
-8668 6940 5016 0.051579913616047 0.051579913616047
-8670 6941 5111 0.0702390251054822 0.0702390251054822
-8671 5111 4709 0.111086762480312 0.111086762480312
-8672 4709 6805 0.12579570489738 0.12579570489738
-8673 6805 6942 0.0911912161186586 0.0911912161186586
-8674 6942 6943 0.0891583873267196 0.0891583873267196
-8675 6943 5415 0.0932705447088281 0.0932705447088281
-8676 5415 3141 0.0911590609752313 0.0911590609752313
-8677 3141 6944 0.0907415627456138 0.0907415627456138
-8678 6944 6945 0.0904253930261683 0.0904253930261683
-8679 6945 6282 0.0922034833120112 0.0922034833120112
-8680 6282 6946 0.0889556226914396 0.0889556226914396
-8681 6946 6947 0.115025423362082 0.115025423362082
-19720 10629 10630 0.00318458504180934 0.00318458504180934
-8684 4222 6948 0.095205143123347 0.095205143123347
-8685 6948 6949 0.0983217542586648 0.0983217542586648
-8686 6949 970 0.0973398284250994 0.0973398284250994
-8732 6248 6975 0.200150775141685 0.200150775141685
-8687 970 6950 0.0518030391212137 0.0518030391212137
-8688 6950 5288 0.0521176321182923 0.0521176321182923
-8689 5288 3153 0.0937167269922867 0.0937167269922867
-8690 3153 4969 0.095648805014101 0.095648805014101
-8691 4969 6951 0.121296465267735 0.121296465267735
-8717 1073 2508 0.0718764157350201 0.0718764157350201
-8692 6951 6952 0.17298014935093 0.17298014935093
-8694 2653 4114 0.0446473392844233 0.0446473392844233
-8695 4114 6503 0.0806749392848293 0.0806749392848293
-11460 8268 8269 0.0284404063889237 0.0284404063889237
-8696 6503 6953 0.0279965631557129 0.0279965631557129
-8698 6779 1327 0.149226176774822 0.149226176774822
-8700 4207 6955 0.0359776758472589 0.0359776758472589
-8701 6955 6956 0.0798254305300323 0.0798254305300323
-8702 4494 6957 0.0178038045740406 0.0178038045740406
-8703 6957 6958 0.00431775087438634 0.00431775087438634
-8704 6958 2148 0.120300859607691 0.120300859607691
-8705 2148 6960 0.151431823224066 0.151431823224066
-8706 6960 6961 0.22023318510828 0.22023318510828
-8707 6961 6962 0.137151335408755 0.137151335408755
-8708 6962 6963 0.0242055632480646 0.0242055632480646
-8709 6963 2150 0.0925314192010664 0.0925314192010664
-8710 2150 6964 0.068609567754435 0.068609567754435
-8712 6808 6965 0.180937589294771 0.180937589294771
-8713 6966 761 0.0469463147130834 0.0469463147130834
-8714 761 4205 0.0748160898012537 0.0748160898012537
-8715 4205 4398 0.0770157906569643 0.0770157906569643
-8716 4398 1073 0.0796290264805075 0.0796290264805075
-8746 6967 5689 0.127751851222379 0.127751851222379
-8719 271 2710 0.601401594481822 0.601401594481822
-11825 321 7799 0.115552151499094 0.115552151499094
-8720 2710 6969 0.136362355996719 0.136362355996719
-8721 6969 6742 0.135618421861975 0.135618421861975
-8722 6742 6141 0.132822121773709 0.132822121773709
-8723 6141 4014 0.136061285283967 0.136061285283967
-8724 4014 6970 0.13345730315891 0.13345730315891
-8725 6970 6971 0.133022272157071 0.133022272157071
-8726 6971 6972 0.0472485991851602 0.0472485991851602
-8727 6972 3385 0.0819883397602158 0.0819883397602158
-8729 6959 6973 0.0390638293285452 0.0390638293285452
-19721 10630 10622 0.0559555137804764 0.0559555137804764
-8731 6974 6248 0.201212600703242 0.201212600703242
-8733 6975 1496 0.201553427836696 0.201553427836696
-8734 1496 185 0.202686112287629 0.202686112287629
-8735 185 1713 0.204711477509581 0.204711477509581
-8736 1713 6976 0.201975316682274 0.201975316682274
-8737 6976 1579 0.167005027356132 0.167005027356132
-8738 1579 6977 0.309934492691155 0.309934492691155
-8739 1105 5871 0.176266848523138 0.176266848523138
-8740 5871 1323 0.177439022365804 0.177439022365804
-8741 1323 1379 0.176412320749863 0.176412320749863
-8742 1379 6978 0.0608448771470547 0.0608448771470547
-8744 6843 4695 0.114533137035158 0.114533137035158
-11961 2694 6570 0.292174399102456 0.292174399102456
-8745 4695 6967 0.15860414860374 0.15860414860374
-8747 5689 5336 0.153402847395547 0.153402847395547
-8749 6979 6980 0.0492417429246164 0.0492417429246164
-8750 6980 6981 0.0330798745582329 0.0330798745582329
-8751 6981 6982 0.110138574841473 0.110138574841473
-8756 6986 6701 0.0557097589480938 0.0557097589480938
-8757 6701 6987 0.145037158424782 0.145037158424782
-8759 6988 648 0.139238555969963 0.139238555969963
-8760 648 683 0.0653158999110773 0.0653158999110773
-8761 683 6989 0.0669742957793313 0.0669742957793313
-8762 6989 1988 0.0901527916408211 0.0901527916408211
-8763 1988 1972 0.0388238770836602 0.0388238770836602
-8764 1972 4588 0.104222260658419 0.104222260658419
-8765 4588 4594 0.0293535516568484 0.0293535516568484
-8766 4594 6498 0.0726584855189905 0.0726584855189905
-8767 6498 6481 0.0601855426433911 0.0601855426433911
-8768 6481 2470 0.141630886586724 0.141630886586724
-10003 6678 7628 0.0924131784678609 0.0924131784678609
-8771 6991 2401 0.344415463633539 0.344415463633539
-8772 2401 6992 0.121260728440928 0.121260728440928
-8773 6992 6604 0.426798504146684 0.426798504146684
-8774 6604 6993 0.0779497578426637 0.0779497578426637
-8775 6993 6994 0.328092841207435 0.328092841207435
-8776 6994 6997 0.409387625139532 0.409387625139532
-8777 6997 6998 0.0280465218891248 0.0280465218891248
-8778 6998 6999 0.240899685742567 0.240899685742567
-8780 7001 7002 0.172502393042501 0.172502393042501
-8781 7002 2338 0.177215228547836 0.177215228547836
-8782 2338 7003 0.175043780881437 0.175043780881437
-8783 7003 4782 0.243888745485023 0.243888745485023
-8784 4782 6558 0.132880580598771 0.132880580598771
-8785 6558 7004 0.106726338328234 0.106726338328234
-8787 2471 5909 0.20581191299575 0.20581191299575
-8789 7005 797 0.197387527656916 0.197387527656916
-10028 5604 7642 0.0520984767564003 0.0520984767564003
-8790 797 7006 0.203747525811746 0.203747525811746
-8793 7007 7008 0.196982052931457 0.196982052931457
-8794 7008 3062 0.205201724322207 0.205201724322207
-8795 3062 7009 0.184895139192435 0.184895139192435
-8796 7009 7010 0.0217892666308482 0.0217892666308482
-8798 7011 7012 0.200694925007541 0.200694925007541
-8799 7012 6367 0.0706060127631708 0.0706060127631708
-8800 6367 7013 0.13113311504647 0.13113311504647
-8801 7013 5949 0.203040029193448 0.203040029193448
-11962 6570 4451 0.149457420972406 0.149457420972406
-8802 5949 5141 0.190833355605879 0.190833355605879
-8804 2236 4909 0.189094446681925 0.189094446681925
-8805 4909 6613 0.199822606976101 0.199822606976101
-8806 6613 7014 0.196131290300381 0.196131290300381
-8807 7014 7015 0.207545863379423 0.207545863379423
-10052 7653 1099 0.0482102658012733 0.0482102658012733
-8809 4072 6057 0.192026411520301 0.192026411520301
-20532 10847 10848 0.0340308021704454 0.0340308021704454
-8810 6057 5797 0.200508266391225 0.200508266391225
-8812 7016 7017 0.20408918142509 0.20408918142509
-8813 7017 6590 0.201086157953578 0.201086157953578
-8814 6590 7018 0.202602619918689 0.202602619918689
-8816 7019 4577 0.129538344988774 0.129538344988774
-8817 4577 6441 0.138680608354748 0.138680608354748
-8818 6441 5293 0.134070515766336 0.134070515766336
-8819 5293 6970 0.13449026404854 0.13449026404854
-8820 6970 13 0.134902446032247 0.134902446032247
-8822 7020 382 0.124884712447894 0.124884712447894
-8823 382 7021 0.135229787557418 0.135229787557418
-8824 7021 7022 0.132193897477211 0.132193897477211
-8826 7023 7024 0.137222417835135 0.137222417835135
-8827 7024 7025 0.130431649234377 0.130431649234377
-8828 7025 7026 0.138849105164774 0.138849105164774
-8830 6206 7027 0.182945185531037 0.182945185531037
-8831 7027 7028 0.175756239821697 0.175756239821697
-20483 10830 10831 0.0908860058291454 0.0908860058291454
-8833 7029 7030 0.203242108673725 0.203242108673725
-8834 7030 7031 0.150413392817758 0.150413392817758
-8835 7031 2977 0.0550192556799276 0.0550192556799276
-8837 657 1886 0.0454008957908892 0.0454008957908892
-8838 1886 528 0.053551482812009 0.053551482812009
-8841 6092 1889 0.0508386682559075 0.0508386682559075
-8842 1889 7033 0.0498613554304776 0.0498613554304776
-8843 7033 7034 0.00951828955857414 0.00951828955857414
-8844 7034 7035 0.036894485571684 0.036894485571684
-8845 7035 6085 0.0480584959434146 0.0480584959434146
-8847 742 4527 0.0498820470218468 0.0498820470218468
-8848 4527 7036 0.0491481642660053 0.0491481642660053
-8849 7036 5246 0.0491592800418928 0.0491592800418928
-8850 5246 7037 0.0481362905740046 0.0481362905740046
-8851 7037 7038 0.0454453697348376 0.0454453697348376
-8852 7038 7039 0.0963504134151864 0.0963504134151864
-8853 7039 7040 0.0519319872070824 0.0519319872070824
-8854 7040 1663 0.0497523111621545 0.0497523111621545
-8855 1663 7041 0.0529510578680093 0.0529510578680093
-8856 7041 7042 0.0505381295725577 0.0505381295725577
-8857 7042 7043 0.0514848181594461 0.0514848181594461
-8858 7043 7044 0.0741692266458179 0.0741692266458179
-8861 7046 2493 0.132768776448504 0.132768776448504
-20533 10817 10849 0.0041587253937853 0.0041587253937853
-8864 2531 1932 0.0596099109005186 0.0596099109005186
-8865 1932 7047 0.205921914653592 0.205921914653592
-8867 7048 4043 0.179136537042624 0.179136537042624
-8868 4043 7049 0.176989263158491 0.176989263158491
-8869 7049 7050 0.100459005094488 0.100459005094488
-8871 7051 5531 0.109415807818528 0.109415807818528
-8872 5531 7052 0.29371056329192 0.29371056329192
-8874 7053 6824 0.0545745509742182 0.0545745509742182
-8875 6824 2424 0.081950775026488 0.081950775026488
-8876 2424 7054 0.050315704306832 0.050315704306832
-8877 7054 3228 0.0836964212853156 0.0836964212853156
-8879 4957 4034 0.0947298154946536 0.0947298154946536
-8881 7055 5863 0.174726781940175 0.174726781940175
-8882 5863 1311 0.179868913340571 0.179868913340571
-8883 1311 7056 0.241558820409428 0.241558820409428
-8885 7057 1506 0.131503726493835 0.131503726493835
-8886 1506 7058 0.131454642278669 0.131454642278669
-8888 1059 7059 0.104267738567829 0.104267738567829
-10122 3779 7683 0.15407703010384 0.15407703010384
-8890 4436 56 0.118965433489173 0.118965433489173
-8891 56 5316 0.100608812091724 0.100608812091724
-8892 5316 3496 0.0998861232245216 0.0998861232245216
-8893 3496 3665 0.201207219763356 0.201207219763356
-8894 3665 7060 0.199611951396181 0.199611951396181
-8895 7060 7061 0.203598851492666 0.203598851492666
-8896 7061 5840 0.200253664127546 0.200253664127546
-8897 5840 267 0.165246780486595 0.165246780486595
-8899 7062 7063 0.478103640034168 0.478103640034168
-8900 7064 5164 0.146200467670157 0.146200467670157
-8901 5164 6860 0.179928785347538 0.179928785347538
-8902 6860 7065 0.0135383927129561 0.0135383927129561
-8903 7065 2385 0.105505653234926 0.105505653234926
-8905 3637 7066 0.183542084850882 0.183542084850882
-8907 5956 7067 0.0986953923423101 0.0986953923423101
-8908 7067 3021 0.00874922983807779 0.00874922983807779
-20416 10767 10781 0.00791916641108638 0.00791916641108638
-8910 7068 4380 0.0528744797047038 0.0528744797047038
-8911 4380 7069 0.100067477522489 0.100067477522489
-8912 7069 7070 0.00503051016222424 0.00503051016222424
-8913 7070 7071 0.0533378396892988 0.0533378396892988
-8914 7071 7072 0.0517118729985249 0.0517118729985249
-8915 7072 7073 0.0528720185185965 0.0528720185185965
-8916 7073 7074 0.0524160104100909 0.0524160104100909
-8917 7074 7075 0.0591259627190951 0.0591259627190951
-8918 7075 7076 0.0472141967853771 0.0472141967853771
-8919 7076 7077 0.0523938554164358 0.0523938554164358
-8920 7077 7078 0.0519698920804767 0.0519698920804767
-18299 6996 6464 0.157978818539649 0.157978818539649
-18300 6464 5526 0.155386531700968 0.155386531700968
-8921 7078 7079 0.0533446665935528 0.0533446665935528
-8922 7079 6175 0.0539515629761608 0.0539515629761608
-8923 6175 7080 0.0522978151475426 0.0522978151475426
-19723 10628 10634 0.0467495933951474 0.0467495933951474
-8924 7080 3310 0.051621129553778 0.051621129553778
-8925 3310 7081 0.0537939712546602 0.0537939712546602
-8926 7081 7082 0.0517442194955157 0.0517442194955157
-8957 6821 767 0.155663516472162 0.155663516472162
-8928 6333 7083 0.0368397497726965 0.0368397497726965
-8930 7084 756 0.02205451477657 0.02205451477657
-8931 756 1542 0.146566188527195 0.146566188527195
-8933 7085 7086 0.470303961651379 0.470303961651379
-8936 6193 6949 0.198646201862192 0.198646201862192
-8937 6949 7088 0.203154460121287 0.203154460121287
-8938 7088 7089 0.0315254339634626 0.0315254339634626
-11963 4451 5499 0.142902063925945 0.142902063925945
-8939 1547 4267 0.203186762796229 0.203186762796229
-8940 4267 281 0.118834586231474 0.118834586231474
-8942 4988 5631 0.199717559309749 0.199717559309749
-8943 5631 2363 0.114164400355602 0.114164400355602
-8944 2363 4145 0.172388156251151 0.172388156251151
-8945 4145 4750 0.181329134759237 0.181329134759237
-8946 4750 7090 0.0742131518569267 0.0742131518569267
-8947 7090 6563 0.101353119972535 0.101353119972535
-8949 561 652 0.180277903435168 0.180277903435168
-8950 652 7091 0.1782898608686 0.1782898608686
-8951 7091 4618 0.177690137841113 0.177690137841113
-8952 4618 6484 0.148000947434632 0.148000947434632
-8953 6484 3683 0.147902463423831 0.147902463423831
-8955 7092 562 0.138318567115304 0.138318567115304
-14765 7355 5462 0.177046926118077 0.177046926118077
-8958 767 6719 0.219350766482543 0.219350766482543
-8959 6719 6005 0.0551645975375965 0.0551645975375965
-8961 7093 7094 0.0134618314671123 0.0134618314671123
-8962 7094 7095 0.0768336523164077 0.0768336523164077
-8964 4351 7096 0.187825105408858 0.187825105408858
-8966 5169 7097 0.173957232527163 0.173957232527163
-8967 7097 2358 0.178391537286392 0.178391537286392
-8968 2358 4158 0.173186099094122 0.173186099094122
-8969 4158 4745 0.175498953556533 0.175498953556533
-8970 4745 6540 0.175479189908249 0.175479189908249
-8971 6540 7098 0.165132887334241 0.165132887334241
-8974 900 4481 0.13673901951185 0.13673901951185
-8975 4481 2805 0.133564794339907 0.133564794339907
-8976 2805 5271 0.130621351715569 0.130621351715569
-8977 5271 6911 0.123597927289001 0.123597927289001
-8978 6911 7100 0.15221685519733 0.15221685519733
-8979 7100 6360 0.259362269049004 0.259362269049004
-8981 7102 704 0.204412961923 0.204412961923
-19726 10627 10635 0.0226092820114286 0.0226092820114286
-8984 7103 1210 0.168411442672594 0.168411442672594
-8985 1210 7104 0.0210253069731913 0.0210253069731913
-8986 7104 3769 0.199568149574658 0.199568149574658
-8987 3769 7105 0.154728508227155 0.154728508227155
-8988 7105 960 0.176377624617973 0.176377624617973
-8989 960 7106 0.174688777733473 0.174688777733473
-8990 7106 4897 0.160532597504136 0.160532597504136
-8991 4897 7107 0.182971792068578 0.182971792068578
-8992 7107 5494 0.175655210225522 0.175655210225522
-8994 7108 7109 0.103100291492917 0.103100291492917
-8995 7109 7110 0.101964294660044 0.101964294660044
-8998 7112 6130 0.00642185713601216 0.00642185713601216
-8999 6130 3973 0.100482235790598 0.100482235790598
-9000 3973 7018 0.0985643830580019 0.0985643830580019
-9001 7018 1404 0.0976294798550341 0.0976294798550341
-9002 1404 7113 0.0934722476940573 0.0934722476940573
-9003 7113 3377 0.114974498647875 0.114974498647875
-9004 3377 5719 0.0923374297912636 0.0923374297912636
-9006 4633 4552 0.211900461491767 0.211900461491767
-9008 7114 1219 0.0873426128412716 0.0873426128412716
-9009 1219 7115 0.154859667381265 0.154859667381265
-9011 128 4195 0.0990809801322014 0.0990809801322014
-9012 4195 2526 0.225168737431611 0.225168737431611
-9015 7118 7119 0.0484685816363468 0.0484685816363468
-9016 7119 6647 0.0431240450937402 0.0431240450937402
-9017 6647 7120 0.0651283567093235 0.0651283567093235
-9020 7121 5612 0.0589161599786899 0.0589161599786899
-9021 5612 7122 0.0519812671049742 0.0519812671049742
-9022 7122 3734 0.0556068739901258 0.0556068739901258
-9024 4852 7123 0.126059374848785 0.126059374848785
-9025 7123 7124 0.118149722641793 0.118149722641793
-9026 7124 7125 0.121835161075312 0.121835161075312
-9027 7125 7126 0.110094663779518 0.110094663779518
-9028 7126 4678 0.101155068622002 0.101155068622002
-9029 4678 4925 0.0375558738681089 0.0375558738681089
-9031 7127 5718 0.122304701667431 0.122304701667431
-9033 7129 7130 0.00755996146089403 0.00755996146089403
-11437 7984 8034 0.589388539362218 0.589388539362218
-9034 7130 7131 0.0405147672355999 0.0405147672355999
-15917 9748 9104 0.13371062185673 0.13371062185673
-9036 7132 7133 0.0505601360898234 0.0505601360898234
-9037 7133 7134 0.050337833066874 0.050337833066874
-9039 2563 2043 0.341755774769512 0.341755774769512
-9040 2043 4280 0.587618591665046 0.587618591665046
-9041 4280 2317 0.145996435168453 0.145996435168453
-9042 2317 7135 0.26875426467805 0.26875426467805
-9044 4276 6167 0.145395831525207 0.145395831525207
-9045 6167 7136 0.583394412429138 0.583394412429138
-9046 7136 7137 0.0430989040252276 0.0430989040252276
-9048 7138 7139 0.17847978963111 0.17847978963111
-9049 7139 665 0.00426988518248375 0.00426988518248375
-9050 665 7140 0.0039363004033923 0.0039363004033923
-9051 7140 7141 0.126828000444838 0.126828000444838
-9052 7141 7142 0.0463243816448395 0.0463243816448395
-9053 7142 4606 0.175854779813893 0.175854779813893
-13036 8929 8930 0.492762775909981 0.492762775909981
-9054 4606 2885 0.129583918723674 0.129583918723674
-9056 818 3559 0.139007675873083 0.139007675873083
-9057 3559 5633 0.138607438022671 0.138607438022671
-9060 5632 7143 0.0971697431213832 0.0971697431213832
-9061 7143 4337 0.0573209846859246 0.0573209846859246
-9062 4337 6336 0.137619327969477 0.137619327969477
-9063 6336 3051 0.138690015537613 0.138690015537613
-9064 3051 7144 0.13740372400277 0.13740372400277
-9065 7144 7145 0.00531536492655497 0.00531536492655497
-9066 7145 7146 0.138359891845979 0.138359891845979
-9069 873 4461 0.138000198054367 0.138000198054367
-9070 4461 2781 0.134827246932882 0.134827246932882
-9073 6941 5768 0.263560531238909 0.263560531238909
-9074 5768 7148 0.00867578094755507 0.00867578094755507
-9075 6325 4168 0.192770537182593 0.192770537182593
-9076 4168 4753 0.208190261859574 0.208190261859574
-9077 4753 6544 0.199662965025148 0.199662965025148
-9078 6544 7149 0.203286576405629 0.203286576405629
-9079 7149 7150 0.188877376950956 0.188877376950956
-9080 7150 3796 0.199750569153682 0.199750569153682
-9081 3796 5939 0.152615142478991 0.152615142478991
-9082 5939 940 0.17776127985835 0.17776127985835
-9083 940 2224 0.184599395002716 0.184599395002716
-9084 2224 4874 0.160770298676863 0.160770298676863
-9085 4874 7151 0.191866995309803 0.191866995309803
-9086 7151 5472 0.170431656658562 0.170431656658562
-9087 5472 7152 0.177051030738846 0.177051030738846
-9089 7153 7154 0.0893451644905786 0.0893451644905786
-9090 7154 6170 0.0753374734775839 0.0753374734775839
-9091 6170 4764 0.177646502224828 0.177646502224828
-9092 4764 4150 0.173084945690311 0.173084945690311
-9094 2344 7155 0.117646857783728 0.117646857783728
-9095 7155 7156 0.0188390787773898 0.0188390787773898
-9096 7156 7157 0.234434662963778 0.234434662963778
-9097 7157 7158 0.0252454738977112 0.0252454738977112
-9100 7159 7160 0.136141908223257 0.136141908223257
-9101 7160 7161 0.134175303690261 0.134175303690261
-9102 7161 5540 0.104957650418394 0.104957650418394
-9103 5540 2408 0.0972515972300324 0.0972515972300324
-9104 2408 4293 0.0986699082335262 0.0986699082335262
-9105 4293 7163 0.053830719074408 0.053830719074408
-9107 7164 7165 0.0631810706690825 0.0631810706690825
-9108 7165 2982 0.341967827784909 0.341967827784909
-9109 2982 7166 0.203801982791161 0.203801982791161
-9110 7166 7167 0.199088364823678 0.199088364823678
-9111 7167 7168 0.00801722711592813 0.00801722711592813
-9112 7168 7169 0.0420988990456398 0.0420988990456398
-9113 7169 7170 0.153973329045923 0.153973329045923
-9114 7170 6877 0.206323620437175 0.206323620437175
-9115 6877 1688 0.202556013709455 0.202556013709455
-10335 2984 7779 0.0471482180711068 0.0471482180711068
-9116 1688 7171 0.203959165094635 0.203959165094635
-9117 7171 2434 0.200457262733771 0.200457262733771
-9118 2434 7172 0.202529539970889 0.202529539970889
-9119 7172 6459 0.289084578375032 0.289084578375032
-19730 5374 10637 0.0120223368882016 0.0120223368882016
-9120 6459 7173 0.114101346723939 0.114101346723939
-9121 7173 7174 0.184116579370581 0.184116579370581
-9122 7174 7175 0.203885371802177 0.203885371802177
-9123 7175 7176 0.042345014713444 0.042345014713444
-9124 7176 7177 0.0543545796747623 0.0543545796747623
-9125 7177 1424 0.112240471555906 0.112240471555906
-9128 7179 6066 0.193267920890686 0.193267920890686
-9129 6066 2546 0.202503184194707 0.202503184194707
-9130 2546 7180 0.41050413821522 0.41050413821522
-9131 6215 7181 0.274932291342238 0.274932291342238
-9132 7181 7182 0.263103709588239 0.263103709588239
-9133 7182 7183 0.130644941399459 0.130644941399459
-9134 2594 5185 0.17867940782894 0.17867940782894
-9137 5066 4054 0.176950276628118 0.176950276628118
-9138 4054 7184 0.19508037930475 0.19508037930475
-19295 10466 10470 0.0590667450333129 0.0590667450333129
-9139 7184 1855 0.159486883286254 0.159486883286254
-9140 1855 2595 0.177991984486361 0.177991984486361
-9142 7132 7185 0.200740739267956 0.200740739267956
-9144 317 5720 0.10120960072344 0.10120960072344
-9146 7186 7178 0.0998150102985703 0.0998150102985703
-9147 7178 7187 0.0486556483534758 0.0486556483534758
-9148 7187 7188 0.0504244958733159 0.0504244958733159
-9149 7188 6720 0.0492257170939005 0.0492257170939005
-9150 6720 1139 0.0498554245278369 0.0498554245278369
-9151 1139 6900 0.0496729718772752 0.0496729718772752
-9152 6900 7189 0.0498269762893686 0.0498269762893686
-9153 7189 7190 0.0493080365100491 0.0493080365100491
-9154 7190 3869 0.0507905077365378 0.0507905077365378
-9155 3869 7191 0.0511248031667964 0.0511248031667964
-9156 7191 5583 0.0514153335527058 0.0514153335527058
-9158 6374 7192 0.0508291685906189 0.0508291685906189
-9159 7192 4828 0.0505211822659055 0.0505211822659055
-9160 4828 7193 0.0991435070786191 0.0991435070786191
-9161 7193 7194 0.0991520630524694 0.0991520630524694
-9162 7194 7195 0.0477883926406413 0.0477883926406413
-9163 7195 7196 0.0494484339552123 0.0494484339552123
-9164 7196 7197 0.0162046310747774 0.0162046310747774
-9166 7198 6674 0.0990044216409842 0.0990044216409842
-9167 6674 3118 0.097669089391913 0.097669089391913
-9168 3118 7199 0.284505571449601 0.284505571449601
-9169 7199 6008 0.094118222257641 0.094118222257641
-9170 6008 2844 0.0930401433253343 0.0930401433253343
-9171 2844 3493 0.0866696350082772 0.0866696350082772
-9172 3493 5349 0.0889131869713594 0.0889131869713594
-9174 5392 2946 0.0903397575627338 0.0903397575627338
-9175 2946 6812 0.0903546565690543 0.0903546565690543
-9176 6812 1813 0.0889131954631002 0.0889131954631002
-9179 7201 7202 0.0514316470718889 0.0514316470718889
-9180 7202 571 0.0452247620537137 0.0452247620537137
-9181 571 4984 0.0498774301127379 0.0498774301127379
-9182 4984 7203 0.0499341834444621 0.0499341834444621
-9183 7203 7204 0.048540539361363 0.048540539361363
-9184 7204 7205 0.049454954432791 0.049454954432791
-9185 7205 7206 0.0536988191890685 0.0536988191890685
-9186 7206 7207 0.0531339953218732 0.0531339953218732
-9188 7208 7209 0.0488986834694409 0.0488986834694409
-10408 7087 974 0.0520701135747565 0.0520701135747565
-9190 3616 7210 0.0490025655343953 0.0490025655343953
-9191 7210 7211 0.0492346778344629 0.0492346778344629
-9192 7211 6627 0.0474835705848566 0.0474835705848566
-9193 6627 7212 0.0259857221754392 0.0259857221754392
-9195 7213 2937 0.0797219985274474 0.0797219985274474
-9197 4927 7214 0.0675624031978383 0.0675624031978383
-9198 7214 7215 0.172837829649445 0.172837829649445
-9199 7215 7216 0.0152456900319388 0.0152456900319388
-9201 7217 7218 0.150068688599712 0.150068688599712
-9202 7218 3717 0.0523950557178934 0.0523950557178934
-9203 3717 7219 0.104026300075926 0.104026300075926
-9204 7219 7220 0.176478214187187 0.176478214187187
-9205 7220 2618 0.176744455093666 0.176744455093666
-9206 2618 7221 0.0524078444870275 0.0524078444870275
-9207 7221 5199 0.124408908082812 0.124408908082812
-9208 5199 6236 0.175254349133775 0.175254349133775
-9209 6236 7222 0.181371367707484 0.181371367707484
-9210 7222 7223 0.17624861030264 0.17624861030264
-10431 7818 3372 0.256942906695214 0.256942906695214
-9211 7223 7224 0.177882160330428 0.177882160330428
-9212 7224 6596 0.176655139096338 0.176655139096338
-9213 6596 7225 0.176764713771947 0.176764713771947
-9214 7225 7117 0.195263815592674 0.195263815592674
-9215 7117 7226 0.162883394969853 0.162883394969853
-9217 7227 7228 0.0929813395053153 0.0929813395053153
-9218 7228 7229 0.0382886967355643 0.0382886967355643
-9220 5754 5537 0.136674994706822 0.136674994706822
-9222 7230 2419 0.0601608416165443 0.0601608416165443
-9224 7231 1877 0.0370441528846065 0.0370441528846065
-9225 1877 7232 0.131692111532173 0.131692111532173
-9227 7233 7234 0.109254283787097 0.109254283787097
-9228 7234 7235 0.0988980977520615 0.0988980977520615
-9229 7235 7236 0.100150595242985 0.100150595242985
-9230 7236 7237 0.0982491727225652 0.0982491727225652
-9231 7237 7238 0.102801611377818 0.102801611377818
-9232 7238 3624 0.10072637054969 0.10072637054969
-9233 3624 7239 0.0490877236423196 0.0490877236423196
-9234 7239 7240 0.0506406047895119 0.0506406047895119
-9236 7241 7242 0.053434962453162 0.053434962453162
-9238 7243 2049 0.0999533143701506 0.0999533143701506
-9239 2049 6322 0.101276003642563 0.101276003642563
-9240 6322 7245 0.101332248433824 0.101332248433824
-9241 7245 7246 0.0464773018813961 0.0464773018813961
-9242 7246 3478 0.0519094915924 0.0519094915924
-9243 3478 7247 0.0444674652348498 0.0444674652348498
-9244 7247 6076 0.0542711695249793 0.0542711695249793
-9245 6076 7248 0.0457685619049607 0.0457685619049607
-9246 7248 3693 0.0511581578497335 0.0511581578497335
-9247 3693 7249 0.0484213428818718 0.0484213428818718
-9248 7249 4568 0.050423249762551 0.050423249762551
-9249 4568 7250 0.105671525256593 0.105671525256593
-9251 3486 5352 0.142707971743977 0.142707971743977
-9252 5352 5389 0.0672375375003041 0.0672375375003041
-9254 6807 7251 0.174038770872886 0.174038770872886
-9255 5582 7252 0.0700127444942287 0.0700127444942287
-9256 3438 7253 0.0456922323357007 0.0456922323357007
-9257 7253 5712 0.0536735809918437 0.0536735809918437
-9258 5712 7254 0.0996465050991051 0.0996465050991051
-9259 7254 7177 0.0990312619116669 0.0990312619116669
-9261 2234 5135 0.107869698056021 0.107869698056021
-9263 5150 4905 0.0686856789021931 0.0686856789021931
-9264 4905 6617 0.200618729294218 0.200618729294218
-9265 6617 7255 0.197431040074393 0.197431040074393
-9266 7255 7256 0.208183749937444 0.208183749937444
-9267 7256 645 0.141740585620374 0.141740585620374
-9268 645 7257 0.130628958724451 0.130628958724451
-9269 7257 1991 0.0908850253123808 0.0908850253123808
-9270 1991 1975 0.0373563291181619 0.0373563291181619
-9271 1975 4592 0.133760117820733 0.133760117820733
-9272 4592 6479 0.133361447138617 0.133361447138617
-9273 6479 2465 0.142787478559072 0.142787478559072
-9275 7258 905 0.276860539558146 0.276860539558146
-9276 905 7259 0.128469118479352 0.128469118479352
-9278 7260 7261 0.202325557275685 0.202325557275685
-9279 7261 7262 0.200099452464053 0.200099452464053
-9281 6555 7263 0.106048977208119 0.106048977208119
-9283 2464 5907 0.204805215249635 0.204805215249635
-9284 5907 7264 0.200064951669816 0.200064951669816
-9285 7264 792 0.198575253788857 0.198575253788857
-9286 792 7265 0.203153130979463 0.203153130979463
-20553 10855 10830 0.00226863418878014 0.00226863418878014
-9287 7265 4356 0.200718125919129 0.200718125919129
-9288 4356 7266 0.203231013450801 0.203231013450801
-9289 7266 3059 0.208369469805255 0.208369469805255
-9290 3059 7267 0.184116398047724 0.184116398047724
-9292 7268 7269 0.172274443384772 0.172274443384772
-9293 7269 7270 0.174965358395498 0.174965358395498
-9294 7270 7271 0.171051925436011 0.171051925436011
-9295 7271 4777 0.251271094456806 0.251271094456806
-9297 7272 7273 0.142786274588455 0.142786274588455
-9298 7273 7257 0.143845033730321 0.143845033730321
-9299 7257 2012 0.148104007431453 0.148104007431453
-9300 2012 7274 0.146908840218292 0.146908840218292
-9303 3209 6121 0.198338421830571 0.198338421830571
-9305 1920 7245 0.200452444306493 0.200452444306493
-9306 7245 3264 0.201454965709232 0.201454965709232
-9307 3264 7275 0.199928677430985 0.199928677430985
-9308 7275 75 0.205218774272454 0.205218774272454
-9309 75 3514 0.203667659516003 0.203667659516003
-9310 3514 4256 0.200449218475779 0.200449218475779
-9312 7276 7277 0.199018039984475 0.199018039984475
-9314 3099 7278 0.127218718588174 0.127218718588174
-9315 7279 7280 0.0142903725965103 0.0142903725965103
-9316 7280 7281 0.105207552208829 0.105207552208829
-9317 7282 7283 0.0344899807253543 0.0344899807253543
-9318 7283 221 0.0709873405596775 0.0709873405596775
-9319 221 484 0.00880336166381634 0.00880336166381634
-9320 484 7284 0.0467023879280561 0.0467023879280561
-9321 7284 7285 0.0520434565562666 0.0520434565562666
-9322 7285 7286 0.0966986010135768 0.0966986010135768
-9324 7287 7288 0.0474221057340072 0.0474221057340072
-9325 7288 7289 0.0544896557893494 0.0544896557893494
-18313 7291 7292 0.0491935106031602 0.0491935106031602
-12266 8623 8624 0.00987394368395642 0.00987394368395642
-9326 7289 7293 0.050792182381771 0.050792182381771
-9327 7293 7294 0.0490541601102182 0.0490541601102182
-9328 7294 3625 0.0491311379128154 0.0491311379128154
-9329 3625 7295 0.0500044548990436 0.0500044548990436
-9330 7295 7296 0.0493114932484129 0.0493114932484129
-9331 7296 7297 0.0492273088766844 0.0492273088766844
-9332 7297 7298 0.0497149327544833 0.0497149327544833
-9333 7298 7299 0.052416983039433 0.052416983039433
-9334 7299 1775 0.0489179547921138 0.0489179547921138
-9335 1775 7300 0.0992252392752366 0.0992252392752366
-9338 1523 7301 0.0991304181855472 0.0991304181855472
-9340 4180 7302 0.159005264658095 0.159005264658095
-9342 7303 7304 0.0508070845581107 0.0508070845581107
-9344 2051 7305 0.0464895652372381 0.0464895652372381
-9346 6323 7306 0.0487652334573382 0.0487652334573382
-9347 7306 7275 0.0511008721086019 0.0511008721086019
-9348 7275 7307 0.0472167292045061 0.0472167292045061
-9349 7307 3479 0.0519136696037329 0.0519136696037329
-9350 3479 7308 0.0469673771341736 0.0469673771341736
-9351 7308 6077 0.0514245726695928 0.0514245726695928
-9353 7309 3694 0.0517124258100223 0.0517124258100223
-9354 3694 7310 0.0465067719763774 0.0465067719763774
-9355 7310 4569 0.0489536209610463 0.0489536209610463
-9356 4569 7311 0.0489635595580148 0.0489635595580148
-9357 7311 7312 0.0558091568866214 0.0558091568866214
-9359 5166 6862 0.178524347295205 0.178524347295205
-10575 7382 7866 0.0530283440074436 0.0530283440074436
-9361 5665 7313 0.0484754519993524 0.0484754519993524
-9362 7313 7314 0.161386441141289 0.161386441141289
-9363 7314 57 0.142345062746265 0.142345062746265
-9365 3497 7315 0.199650199137315 0.199650199137315
-9366 7315 7316 0.20195222577189 0.20195222577189
-9368 7317 7318 0.0198371749129227 0.0198371749129227
-9369 7318 2347 0.132104544578518 0.132104544578518
-9370 2347 4152 0.17573096379452 0.17573096379452
-9371 4152 4739 0.172852869151079 0.172852869151079
-9372 4739 6534 0.176755786446123 0.176755786446123
-9373 6534 7319 0.165399065875657 0.165399065875657
-9376 1193 7321 0.0221951663944447 0.0221951663944447
-9377 7321 3785 0.200018254719297 0.200018254719297
-9379 6356 2387 0.110864888603468 0.110864888603468
-9380 2387 7322 0.139379472361554 0.139379472361554
-9381 7322 7323 0.046481070265731 0.046481070265731
-9382 7323 745 0.0926146092564692 0.0926146092564692
-9383 745 1563 0.142337228385207 0.142337228385207
-9384 1563 7324 0.139015648234869 0.139015648234869
-9385 7324 7325 0.121637038292373 0.121637038292373
-9387 7326 1054 0.0187920378071022 0.0187920378071022
-9388 1054 7327 0.1804815052178 0.1804815052178
-9389 7327 7328 0.200952784069958 0.200952784069958
-9390 7328 2873 0.135770477885413 0.135770477885413
-9391 2873 7329 0.140734857106897 0.140734857106897
-9392 7329 7330 0.130551116437319 0.130551116437319
-9394 3573 5641 0.135671111475822 0.135671111475822
-9395 5641 4346 0.139178472263861 0.139178472263861
-9397 6344 3047 0.139334930188281 0.139334930188281
-9398 3047 7331 0.13779347001033 0.13779347001033
-9399 7331 7332 0.00320242529462838 0.00320242529462838
-9400 7332 7333 0.124149220639337 0.124149220639337
-9401 7333 7334 0.0152895413448354 0.0152895413448354
-9402 7334 1168 0.139240705026111 0.139240705026111
-9403 1168 888 0.137184892852111 0.137184892852111
-9404 888 4473 0.140290329638987 0.140290329638987
-9405 4473 2795 0.133122605689938 0.133122605689938
-18387 8972 8990 0.0135489498420418 0.0135489498420418
-9406 2795 5263 0.132274155849312 0.132274155849312
-9408 5264 7335 0.142105114812744 0.142105114812744
-9409 7336 7337 0.0976207961374284 0.0976207961374284
-9410 7337 4886 0.157275932372423 0.157275932372423
-9411 4886 7338 0.185720302610988 0.185720302610988
-9412 7338 5484 0.174899259954025 0.174899259954025
-9413 5484 7339 0.200596009359583 0.200596009359583
-9415 7001 7340 0.179314344082203 0.179314344082203
-9416 7340 3105 0.172536320867715 0.172536320867715
-9417 3105 7341 0.196295851159965 0.196295851159965
-9418 7341 7342 0.0146987319128723 0.0146987319128723
-9419 7342 5274 0.233778976885029 0.233778976885029
-9421 61 3550 0.201334976523304 0.201334976523304
-9423 4229 1512 0.0573285646726125 0.0573285646726125
-9424 1512 1812 0.080316497766985 0.080316497766985
-9425 1812 1792 0.0864981124104349 0.0864981124104349
-9426 1792 5766 0.0789087886834876 0.0789087886834876
-9427 5766 7199 0.0992911764787047 0.0992911764787047
-9428 7199 6828 0.11119492664509 0.11119492664509
-9429 6828 5849 0.0944254133826228 0.0944254133826228
-9430 5849 6009 0.0132155676036954 0.0132155676036954
-9431 6009 6306 0.0820521132716854 0.0820521132716854
-9432 6306 7343 0.105450198242036 0.105450198242036
-9433 7343 6621 0.143519415278471 0.143519415278471
-9434 6621 7344 1.27038946039582 1.27038946039582
-9437 4173 4758 0.21160422195521 0.21160422195521
-9439 7347 7348 0.135937832662874 0.135937832662874
-9440 7348 7349 0.00392915540186096 0.00392915540186096
-9441 7349 7350 0.00435925191977174 0.00435925191977174
-9442 7350 7351 0.134680718743296 0.134680718743296
-9443 7351 7352 0.142353643667365 0.142353643667365
-9444 7352 822 0.136144392169031 0.136144392169031
-9445 822 3563 0.139511434934294 0.139511434934294
-9447 4757 6547 0.198421257470946 0.198421257470946
-9448 6547 7353 0.203512578195826 0.203512578195826
-9449 7353 7354 0.189733642798723 0.189733642798723
-9450 7354 3791 0.198902472958717 0.198902472958717
-9452 7356 1156 0.139895555737197 0.139895555737197
-9453 1156 877 0.139167763247538 0.139167763247538
-9454 877 4465 0.138362926550376 0.138362926550376
-9455 4465 2785 0.134223449290719 0.134223449290719
-9456 2785 5256 0.132255447080442 0.132255447080442
-10701 7933 7934 0.0165824928197296 0.0165824928197296
-9457 5256 6902 0.213396689593523 0.213396689593523
-9458 6902 7357 0.137952680025601 0.137952680025601
-9460 7358 7359 0.0873817304884455 0.0873817304884455
-9461 7359 5476 0.17425617170475 0.17425617170475
-9462 5476 7360 0.176755476074969 0.176755476074969
-9463 7360 7361 0.179271064370159 0.179271064370159
-9464 7361 670 0.00299320804688776 0.00299320804688776
-9465 670 7362 0.00367138449467953 0.00367138449467953
-9466 7362 7363 0.175413304982356 0.175413304982356
-9467 7363 4602 0.174300257248449 0.174300257248449
-9468 4602 6494 0.14109328269368 0.14109328269368
-9470 6339 3027 0.140999530277673 0.140999530277673
-9471 3027 7364 0.134294188280294 0.134294188280294
-9472 7364 7367 0.00539295394286677 0.00539295394286677
-9473 7367 7368 0.0958510973743428 0.0958510973743428
-9474 7369 7370 0.0190810494123846 0.0190810494123846
-9475 7370 4174 0.200419085556528 0.200419085556528
-9476 4174 4759 0.205255972403598 0.205255972403598
-9478 7371 1504 0.200818042076817 0.200818042076817
-9479 1504 177 0.202381091183512 0.202381091183512
-9481 7048 5860 0.176960295698989 0.176960295698989
-9482 5860 1308 0.177680958846967 0.177680958846967
-9483 1308 7372 0.242287040915104 0.242287040915104
-9485 7373 7374 0.0554606112260645 0.0554606112260645
-9486 7374 6759 0.139083865409791 0.139083865409791
-9487 6759 3983 0.201208667852087 0.201208667852087
-9488 3983 7042 0.200146227687253 0.200146227687253
-9489 7042 3429 0.200588668938452 0.200588668938452
-9491 7375 7376 0.134975501915893 0.134975501915893
-9492 7376 2494 0.132763759551609 0.132763759551609
-9493 2494 2841 0.125447252672452 0.125447252672452
-9495 7377 1766 0.0535653036014808 0.0535653036014808
-9496 1766 7378 0.148946577862237 0.148946577862237
-9497 7378 7379 0.151136159766357 0.151136159766357
-9498 7379 2978 0.0542010510807056 0.0542010510807056
-9500 6210 7380 0.184339220967731 0.184339220967731
-9501 7380 7381 0.177783326711723 0.177783326711723
-9503 7055 4046 0.178402656739544 0.178402656739544
-9504 4046 7382 0.177334708763743 0.177334708763743
-9505 7382 1847 0.175265460280809 0.175265460280809
-9506 1847 2581 0.177411624203835 0.177411624203835
-9508 5179 7383 0.0621659509396009 0.0621659509396009
-9510 7384 5530 0.101603812835917 0.101603812835917
-9511 5530 6476 0.0959541548395336 0.0959541548395336
-9512 6476 7385 0.197309689587966 0.197309689587966
-9514 7386 4578 0.133367493492184 0.133367493492184
-9515 4578 6442 0.135224444657643 0.135224444657643
-9516 6442 5294 0.135202388191056 0.135202388191056
-9517 5294 6971 0.132090452543352 0.132090452543352
-9519 7387 6793 0.0526421759963202 0.0526421759963202
-9520 6793 2426 0.0832334466071371 0.0832334466071371
-9521 2426 7292 0.0515611894823623 0.0515611894823623
-9522 7292 3230 0.0818841223845197 0.0818841223845197
-9523 3230 7388 0.142866769580008 0.142866769580008
-9525 7389 7390 0.203322823967769 0.203322823967769
-9529 7391 7392 0.135325738854945 0.135325738854945
-9530 7392 7393 0.132395815694125 0.132395815694125
-9531 7393 7394 0.135014881681412 0.135014881681412
-9532 7394 7395 0.132077333868835 0.132077333868835
-9535 7397 621 0.0257970801977961 0.0257970801977961
-9537 4075 6060 0.199263565882924 0.199263565882924
-9538 6060 5800 0.199550446273018 0.199550446273018
-9540 7398 3097 0.199450454556748 0.199450454556748
-9541 3097 3207 0.202536688546866 0.202536688546866
-9542 3207 6119 0.201707926741417 0.201707926741417
-9543 6119 1917 0.201109266380341 0.201109266380341
-9544 1917 7243 0.20045244430598 0.20045244430598
-9545 7243 594 0.202390514467061 0.202390514467061
-9547 7399 5843 0.208569621956493 0.208569621956493
-9549 7400 5659 0.10300363118025 0.10300363118025
-9550 5659 7401 0.0544972381418925 0.0544972381418925
-9552 6194 6950 0.191455920710939 0.191455920710939
-9553 6950 7402 0.209004541630565 0.209004541630565
-9555 4943 7403 0.0144437903083984 0.0144437903083984
-9556 7403 3000 0.101061674656442 0.101061674656442
-9558 6639 3962 0.136668682711291 0.136668682711291
-9559 3962 4361 0.121869293781819 0.121869293781819
-20411 9207 10780 0.0112983850763668 0.0112983850763668
-9561 5171 5225 0.145976272368254 0.145976272368254
-9562 5225 1866 0.0654044096593951 0.0654044096593951
-9563 1866 5084 0.0770856255669816 0.0770856255669816
-9564 5084 2809 0.113066726070966 0.113066726070966
-9565 2809 3368 0.152693063908693 0.152693063908693
-9566 3368 7404 0.0530057643448654 0.0530057643448654
-9567 7404 4944 0.0497811011847154 0.0497811011847154
-9568 4944 7405 0.0515530101953733 0.0515530101953733
-9569 7405 7217 0.0502978935844785 0.0502978935844785
-9570 7217 7406 0.0537233169488665 0.0537233169488665
-9571 7406 7407 0.0412354910733997 0.0412354910733997
-9572 6416 4212 0.100784166153009 0.100784166153009
-9573 4212 190 0.175257609965618 0.175257609965618
-9574 190 4532 0.201882877149858 0.201882877149858
-9575 4532 5431 0.198227529862783 0.198227529862783
-9576 5431 5972 0.107244272330712 0.107244272330712
-9577 5972 2255 0.104270609577454 0.104270609577454
-9578 2255 6131 0.104982960169425 0.104982960169425
-9579 6131 3998 0.104249966263654 0.104249966263654
-9580 3998 7048 0.105712541492873 0.105712541492873
-9581 7048 1393 0.105952500116488 0.105952500116488
-9583 7408 7055 0.0530917174300864 0.0530917174300864
-9584 7055 7409 0.0515249594325266 0.0515249594325266
-9585 7409 3389 0.0512512544679775 0.0512512544679775
-9586 3389 7410 0.0515249594325266 0.0515249594325266
-9587 7410 4504 0.051986836558228 0.051986836558228
-9588 4504 3539 0.0507992547126353 0.0507992547126353
-9589 3539 7411 0.0505170014633714 0.0505170014633714
-9590 7411 7412 0.0515690276546841 0.0515690276546841
-9592 5066 6400 0.0525526328752235 0.0525526328752235
-9593 6400 6835 0.0526723733629873 0.0526723733629873
-9594 6835 7413 0.0505686622438464 0.0505686622438464
-9595 7413 1105 0.0506198937481409 0.0506198937481409
-9596 1105 7414 0.0824276303743622 0.0824276303743622
-9598 3863 7415 0.0529481461592885 0.0529481461592885
-9599 7415 6656 0.0485933921065039 0.0485933921065039
-9600 6656 7416 0.0551266417503484 0.0551266417503484
-9601 7416 7417 0.698080046436177 0.698080046436177
-9602 3179 7418 0.0616464790427922 0.0616464790427922
-9603 7418 5002 0.0485639637102659 0.0485639637102659
-9604 5002 7419 0.0540110826611525 0.0540110826611525
-9605 7419 5725 0.0437502401390831 0.0437502401390831
-9606 5725 724 0.0271601591292424 0.0271601591292424
-9607 724 7059 0.100733087825974 0.100733087825974
-9608 7059 7314 0.111000885564944 0.111000885564944
-9610 7421 3610 0.212938945536276 0.212938945536276
-9611 3610 2128 0.151144951480704 0.151144951480704
-10843 154 8006 0.0789597424143419 0.0789597424143419
-9613 5998 2327 0.147931201391184 0.147931201391184
-9614 2327 7422 0.151462381546094 0.151462381546094
-9615 2016 354 0.0832039426217647 0.0832039426217647
-9616 354 2024 0.270665538753682 0.270665538753682
-9620 4944 7424 0.200356357596052 0.200356357596052
-9622 2981 7425 0.200823510551274 0.200823510551274
-9623 7425 7426 0.200629159279387 0.200629159279387
-9624 7426 7427 0.00781704540286186 0.00781704540286186
-9625 7427 7428 0.196215671376464 0.196215671376464
-9626 7428 6876 0.205224182417126 0.205224182417126
-9627 6876 1687 0.205021376956907 0.205021376956907
-9628 1687 7429 0.205696359665547 0.205696359665547
-9629 7429 2432 0.199163881347575 0.199163881347575
-9630 2432 7431 0.20247617593456 0.20247617593456
-9632 6213 7432 0.274944028390563 0.274944028390563
-9633 7432 7433 0.263513794727665 0.263513794727665
-9634 7433 6594 0.262579264502597 0.262579264502597
-9636 7254 1423 0.111990529719831 0.111990529719831
-10866 1577 8015 0.266859669077532 0.266859669077532
-9639 7434 7435 0.184117705049588 0.184117705049588
-9640 7435 7436 0.203503143312405 0.203503143312405
-9642 6593 7437 0.098508708246921 0.098508708246921
-9643 7437 7127 0.0085733378066782 0.0085733378066782
-9645 7411 4051 0.176201016140517 0.176201016140517
-9646 4051 7438 0.186623330561976 0.186623330561976
-9647 7438 1853 0.167040016171723 0.167040016171723
-9648 1853 2591 0.179034976108436 0.179034976108436
-9650 7439 6064 0.193434831975152 0.193434831975152
-9651 6064 2544 0.202007823415783 0.202007823415783
-9652 2544 7440 0.411378882387366 0.411378882387366
-9653 7129 627 0.200330694412442 0.200330694412442
-9655 18 6387 0.132089927812284 0.132089927812284
-9658 7443 7444 0.13397887621517 0.13397887621517
-9659 7444 5539 0.105571329036095 0.105571329036095
-9660 5539 2407 0.0968730605007166 0.0968730605007166
-9661 2407 4292 0.100193275722424 0.100193275722424
-9662 4292 7445 0.0505436928211805 0.0505436928211805
-9663 7445 7446 0.0548363595380854 0.0548363595380854
-9665 7447 7448 0.169947053382904 0.169947053382904
-9667 5852 1336 0.19937663187299 0.19937663187299
-9668 1336 6158 0.0597086585632686 0.0597086585632686
-9669 6158 7449 0.153340690716036 0.153340690716036
-9671 7450 4365 0.199972383812324 0.199972383812324
-9672 4365 1447 0.201108937861992 0.201108937861992
-9673 1447 7451 0.20199467881708 0.20199467881708
-9674 7451 6664 0.0985180993542889 0.0985180993542889
-9675 6664 1757 0.102800794441344 0.102800794441344
-9676 1757 3819 0.106482209599855 0.106482209599855
-9677 3819 5892 0.0976679798408968 0.0976679798408968
-9679 5332 5070 0.101261676099905 0.101261676099905
-9680 5070 6838 0.100657370443561 0.100657370443561
-9681 6838 6967 0.0976725983678986 0.0976725983678986
-9682 6967 7452 0.102800093286128 0.102800093286128
-9683 7452 7453 0.0998547767838799 0.0998547767838799
-9685 5437 7454 0.211535646678045 0.211535646678045
-9686 7454 4416 0.194570832918176 0.194570832918176
-9687 4416 7456 0.224677107455919 0.224677107455919
-9688 7456 4322 0.22100369073056 0.22100369073056
-9692 7458 7459 0.0196177061643605 0.0196177061643605
-9693 7459 7460 0.0200797614980701 0.0200797614980701
-9694 7460 7461 0.0204220717617775 0.0204220717617775
-9695 7461 7462 0.0192753952773127 0.0192753952773127
-9696 7462 7463 0.0197376280100197 0.0197376280100197
-9697 7463 1874 0.0201396312288959 0.0201396312288959
-9698 1874 7464 0.101865928676763 0.101865928676763
-9699 7464 7465 0.0516398712444199 0.0516398712444199
-9700 5894 1589 0.201207684972719 0.201207684972719
-9701 1589 1639 0.202832052664544 0.202832052664544
-9703 7466 7467 0.461510399426298 0.461510399426298
-9704 7468 7469 0.0656477480578156 0.0656477480578156
-9705 7469 7470 0.0202314805703126 0.0202314805703126
-9706 7470 7471 0.0196155905306545 0.0196155905306545
-9707 7471 7472 0.0198466389215673 0.0198466389215673
-9709 7473 7474 0.0193760769839274 0.0193760769839274
-10941 7859 4686 0.105458193161767 0.105458193161767
-16187 5815 7203 0.20368767335866 0.20368767335866
-9710 7474 7475 0.0199577496151493 0.0199577496151493
-9711 7475 1873 0.0221306450398483 0.0221306450398483
-9712 1873 7476 0.0228930859552116 0.0228930859552116
-9713 7476 7477 0.00597945379667752 0.00597945379667752
-9714 7477 7481 0.0633102446327588 0.0633102446327588
-9715 7481 7482 0.00659734634558833 0.00659734634558833
-9716 7482 7483 0.0122662226221965 0.0122662226221965
-9717 7483 7484 0.0357233876730641 0.0357233876730641
-9718 7484 4185 0.0600540815299224 0.0600540815299224
-9721 7485 4417 0.198257535408126 0.198257535408126
-9722 4417 7486 0.220999648574169 0.220999648574169
-9723 7486 4321 0.223933764288424 0.223933764288424
-9725 4364 1446 0.20650017701017 0.20650017701017
-9726 1446 7487 0.199709617072806 0.199709617072806
-9727 7487 6936 0.203411194568703 0.203411194568703
-9728 6936 5891 0.202831423382765 0.202831423382765
-9730 7488 7489 0.219847500079542 0.219847500079542
-9731 7489 7490 0.112284636925509 0.112284636925509
-9733 7491 7492 0.104975617952237 0.104975617952237
-9734 7492 7493 0.133826104897821 0.133826104897821
-9735 7493 7494 0.136182988757468 0.136182988757468
-9737 5544 2414 0.0621561786197408 0.0621561786197408
-9739 5055 4297 0.0642451197659933 0.0642451197659933
-9740 4297 7495 0.104062899405527 0.104062899405527
-9741 7495 7496 0.203687229874764 0.203687229874764
-9742 7496 2987 0.200108037782066 0.200108037782066
-9743 2987 7497 0.201819339453719 0.201819339453719
-9744 7497 7498 0.0489089257680099 0.0489089257680099
-9745 7498 7499 0.151764240821653 0.151764240821653
-9746 7499 7500 0.203024715164671 0.203024715164671
-9747 7500 6882 0.202091910987955 0.202091910987955
-9748 6882 1693 0.203443247701908 0.203443247701908
-9749 1693 7501 0.204709999833149 0.204709999833149
-9750 7501 2441 0.166684898047837 0.166684898047837
-9752 5738 5527 0.157552520143968 0.157552520143968
-9753 5527 6465 0.155770587020073 0.155770587020073
-9754 6465 7502 0.156429247159158 0.156429247159158
-9755 7502 7503 0.187478248770476 0.187478248770476
-9756 7503 7504 0.202724737429487 0.202724737429487
-10985 7367 5402 0.104549154022735 0.104549154022735
-9757 7504 1429 0.207912295088567 0.207912295088567
-9758 1429 7189 0.130843883831593 0.130843883831593
-9760 6219 7505 0.274122910361615 0.274122910361615
-9761 7505 7506 0.19636903427064 0.19636903427064
-9763 2603 5189 0.177622776028071 0.177622776028071
-9764 5189 5657 0.106425186945832 0.106425186945832
-9766 7507 7508 0.0438255563694837 0.0438255563694837
-9767 7508 4058 0.0100861958439265 0.0100861958439265
-9768 4058 7509 0.0353348287032789 0.0353348287032789
-9769 7509 7510 0.141940367411715 0.141940367411715
-9770 7510 1860 0.1765997957518 0.1765997957518
-9771 1860 2604 0.182058234750596 0.182058234750596
-9773 7511 6071 0.194146348690461 0.194146348690461
-9774 6071 2551 0.201763197291639 0.201763197291639
-9776 7513 7514 0.138564330925234 0.138564330925234
-9778 7515 686 0.203088920175274 0.203088920175274
-9779 686 1983 0.159242254447937 0.159242254447937
-9780 1983 1968 0.0374282123082397 0.0374282123082397
-9781 1968 4621 0.107323343903913 0.107323343903913
-9782 4621 6500 0.103085986769995 0.103085986769995
-9783 6500 2474 0.199627678773596 0.199627678773596
-9785 7516 2773 0.203153140061273 0.203153140061273
-9786 2773 6896 0.203229996829736 0.203229996829736
-9788 5346 7517 0.175498987947166 0.175498987947166
-9789 7517 2340 0.175921748142843 0.175921748142843
-9790 2340 7518 0.175670305695009 0.175670305695009
-9791 7518 4783 0.243270382660677 0.243270382660677
-9792 4783 7519 0.239583168661009 0.239583168661009
-9793 7519 7520 0.0339478111046773 0.0339478111046773
-9794 7520 6369 0.269882786903903 0.269882786903903
-9795 6369 7521 0.132466649716692 0.132466649716692
-9797 7522 5952 0.201032381768493 0.201032381768493
-9798 5952 5144 0.0336716082597733 0.0336716082597733
-9799 5144 5156 0.0326057448432317 0.0326057448432317
-9800 5156 2239 0.132989211721542 0.132989211721542
-9801 2239 4912 0.203447012505169 0.203447012505169
-9802 4912 6610 0.203165550596053 0.203165550596053
-18325 7524 7525 0.0423335034846442 0.0423335034846442
-9804 7523 7526 0.205397811211562 0.205397811211562
-9806 2475 5910 0.203278121280476 0.203278121280476
-9807 5910 7527 0.201064010596531 0.201064010596531
-9808 7527 800 0.20177431388955 0.20177431388955
-9809 800 7528 0.202244021720306 0.202244021720306
-9811 7529 7530 0.20077292216439 0.20077292216439
-9813 3064 7531 0.184973544349351 0.184973544349351
-9815 2632 5362 0.0801274749327823 0.0801274749327823
-9816 5362 5209 0.120994383618796 0.120994383618796
-9817 5209 6229 0.174510675248847 0.174510675248847
-9819 7532 7533 0.202574921872807 0.202574921872807
-9820 7533 7534 0.206092993605617 0.206092993605617
-9821 7534 6444 0.205010086254005 0.205010086254005
-9822 6444 5302 0.199728470714505 0.199728470714505
-9824 6656 4061 0.176855547581016 0.176855547581016
-9825 4061 7535 0.242794235361762 0.242794235361762
-9827 7536 6086 0.100844609398613 0.100844609398613
-9828 6086 7537 0.100375721785614 0.100375721785614
-9829 7537 7538 0.0511607864629355 0.0511607864629355
-9830 7538 5244 0.0495951653375039 0.0495951653375039
-9831 5244 7539 0.0519761520574234 0.0519761520574234
-9832 7539 6885 0.0502414304638419 0.0502414304638419
-9833 6885 7540 0.0499615650233233 0.0499615650233233
-9835 7541 7542 0.0351445858107267 0.0351445858107267
-9838 7544 7545 0.105704455648811 0.105704455648811
-9841 2556 7547 0.195916474446361 0.195916474446361
-9842 6224 7548 0.277797708537317 0.277797708537317
-9845 7550 7551 0.196848690524097 0.196848690524097
-9846 7551 5751 0.202697238266629 0.202697238266629
-9847 5751 7552 0.00795047859513932 0.00795047859513932
-9848 7552 7553 0.129731824653906 0.129731824653906
-9849 7553 6474 0.0638707232076661 0.0638707232076661
-9850 6474 7554 0.0334363679568542 0.0334363679568542
-20015 10180 2696 0.367929886679579 0.367929886679579
-9851 7554 7555 0.0146999916602211 0.0146999916602211
-9853 3170 7557 0.145194224111084 0.145194224111084
-9854 7557 7558 0.0835128735178232 0.0835128735178232
-9855 7558 7559 0.0585562750239905 0.0585562750239905
-9856 7559 6713 0.00611903533894709 0.00611903533894709
-9857 6713 7560 0.146921779963022 0.146921779963022
-9858 7560 5786 0.142766734982168 0.142766734982168
-9859 5786 7561 0.147333855208616 0.147333855208616
-11082 6285 2717 0.0986458045481302 0.0986458045481302
-9860 7561 7562 0.151251680669446 0.151251680669446
-9861 7562 7563 0.142846459249546 0.142846459249546
-9863 7564 3303 0.147900845771263 0.147900845771263
-9865 5316 7565 0.0511409811054889 0.0511409811054889
-9866 7565 7566 0.1490174605609 0.1490174605609
-9867 7566 3661 0.0439544289403808 0.0439544289403808
-9868 3661 3171 0.198821466322938 0.198821466322938
-9870 1541 4266 0.201902575581856 0.201902575581856
-9871 4266 280 0.117279281695443 0.117279281695443
-9873 1540 755 0.148174446133403 0.148174446133403
-9874 755 7567 0.109511008516479 0.109511008516479
-9875 7568 7569 0.504435059432168 0.504435059432168
-9876 5172 5629 0.20005288591208 0.20005288591208
-9877 5629 2361 0.11286306962317 0.11286306962317
-9878 2361 4143 0.172420177163863 0.172420177163863
-9879 4143 4747 0.180602807146659 0.180602807146659
-9880 4747 6561 0.177131591078149 0.177131591078149
-9881 6561 7570 0.0829182513004679 0.0829182513004679
-9882 7570 7571 0.0849604902234264 0.0849604902234264
-9883 7571 7572 0.039332803551206 0.039332803551206
-9885 3557 7573 0.0207104909362794 0.0207104909362794
-9886 7573 5510 0.0781175186423301 0.0781175186423301
-9887 5510 2897 0.0422469044547541 0.0422469044547541
-9889 3682 7574 0.193399178760091 0.193399178760091
-9890 7574 7575 0.146546921459533 0.146546921459533
-9891 7575 5359 0.14787210152478 0.14787210152478
-9892 5359 2682 0.147887137976142 0.147887137976142
-9893 2682 7576 0.0606198046830208 0.0606198046830208
-9895 4620 7577 0.120158924963582 0.120158924963582
-9896 7577 6702 0.146317084486212 0.146317084486212
-9897 6702 7578 0.146734472806395 0.146734472806395
-9898 7578 7579 0.145050961623328 0.145050961623328
-9899 7579 7580 0.00770297520415462 0.00770297520415462
-9900 7580 7581 0.13912090851738 0.13912090851738
-9901 7581 7582 0.0411773493232422 0.0411773493232422
-9903 2466 5908 0.205955273119341 0.205955273119341
-9904 5908 7583 0.198595406640257 0.198595406640257
-9905 7583 793 0.198805543342419 0.198805543342419
-9906 793 7584 0.20315326209993 0.20315326209993
-9907 7584 4357 0.202186223769753 0.202186223769753
-9908 4357 7585 0.201775154423619 0.201775154423619
-9910 3060 7586 0.187004558668975 0.187004558668975
-9913 7588 906 0.27600804903505 0.27600804903505
-9914 906 7589 0.12928644320394 0.12928644320394
-9916 6671 7590 0.0565797137930955 0.0565797137930955
-9917 5136 5151 0.022597397933528 0.022597397933528
-9918 5151 4906 0.0926596414619678 0.0926596414619678
-9919 4906 6616 0.200362179375123 0.200362179375123
-9920 6616 7591 0.195770799250889 0.195770799250889
-9921 7591 7592 0.206820957598552 0.206820957598552
-9925 6556 7596 0.107470441058094 0.107470441058094
-9926 7596 7597 0.0323668981715237 0.0323668981715237
-9927 7597 7598 0.201852282407455 0.201852282407455
-9928 7598 7599 0.202247125760461 0.202247125760461
-9930 7600 4778 0.250803140264124 0.250803140264124
-9932 1647 159 0.135282147606574 0.135282147606574
-9933 159 1722 0.249462326524164 0.249462326524164
-9935 6872 7601 0.692595810332122 0.692595810332122
-9938 6136 7603 0.0512178060127243 0.0512178060127243
-9939 7603 4004 0.0522781951051087 0.0522781951051087
-9941 2233 5134 0.145435815612977 0.145435815612977
-9942 5134 5149 0.0255338309274142 0.0255338309274142
-9943 5149 4904 0.0300983323579011 0.0300983323579011
-9944 4904 6618 0.200495686198041 0.200495686198041
-9945 6618 7604 0.20246265981009 0.20246265981009
-9946 7604 7605 0.201805887092512 0.201805887092512
-9948 6554 7606 0.105208061763435 0.105208061763435
-9950 7607 7608 0.199144734139014 0.199144734139014
-9951 7608 7609 0.20258734096308 0.20258734096308
-9953 2463 5906 0.205561292129907 0.205561292129907
-9954 5906 7610 0.199734725303301 0.199734725303301
-9955 7610 791 0.198807553256576 0.198807553256576
-9956 791 7612 0.203565382214395 0.203565382214395
-9957 7612 4355 0.201053666601032 0.201053666601032
-9958 4355 7613 0.202489967264216 0.202489967264216
-9959 7613 3058 0.208369032173912 0.208369032173912
-9960 3058 7614 0.183994647182619 0.183994647182619
-9961 7614 7615 0.026448194348771 0.026448194348771
-9963 1697 7616 0.173745206459615 0.173745206459615
-9964 7616 7617 0.177904510236026 0.177904510236026
-9965 7617 7618 0.1681272184952 0.1681272184952
-9966 7618 4776 0.251475825917774 0.251475825917774
-9970 3746 7622 0.0932397806145687 0.0932397806145687
-9971 7622 4665 0.0961947321638159 0.0961947321638159
-9972 4665 1332 0.102043584181961 0.102043584181961
-9973 1332 1387 0.0976513845787387 0.0976513845787387
-9974 1387 7623 0.104092676384345 0.104092676384345
-9975 7623 6849 0.109393568832939 0.109393568832939
-9976 6849 4705 0.0983852710944781 0.0983852710944781
-9977 4705 7487 0.0961948643858329 0.0961948643858329
-9978 7487 7451 0.0969202901634112 0.0969202901634112
-9979 7451 5688 0.104320933330224 0.104320933330224
-9980 5688 6313 0.0969730195141145 0.0969730195141145
-9981 6313 4962 0.100610954866441 0.100610954866441
-9982 4962 6819 0.104277744196946 0.104277744196946
-9983 6819 762 0.165411660097114 0.165411660097114
-9984 762 786 0.134384238449809 0.134384238449809
-9985 786 6001 0.286482254105535 0.286482254105535
-9986 6001 5764 0.0815255628306487 0.0815255628306487
-11219 8167 8168 0.194203872480123 0.194203872480123
-9989 1491 149 0.200485771831907 0.200485771831907
-9990 149 1737 0.201708050623858 0.201708050623858
-9992 7313 5666 0.0386975210921627 0.0386975210921627
-9993 5666 522 0.0596630213761568 0.0596630213761568
-9994 522 4824 0.183721500047411 0.183721500047411
-9996 2254 7626 0.0984544191189144 0.0984544191189144
-9998 7627 7329 0.0447853238574392 0.0447853238574392
-9999 7329 2089 0.0938827847318007 0.0938827847318007
-10000 2089 2656 0.0939761287497805 0.0939761287497805
-10001 2656 4118 0.0946147674881846 0.0946147674881846
-10002 4118 6678 0.0843387660785722 0.0843387660785722
-10004 7628 7629 0.0982828610797249 0.0982828610797249
-10006 5220 5095 0.120687418213095 0.120687418213095
-10008 7630 6413 0.109655980715331 0.109655980715331
-10009 6413 4650 0.0986378512210248 0.0986378512210248
-10010 4650 7631 0.100237060358401 0.100237060358401
-10011 7631 3646 0.0896866361421679 0.0896866361421679
-10012 3646 4536 0.103452838278423 0.103452838278423
-10013 4536 7635 0.257545536230436 0.257545536230436
-10015 7636 7637 0.0362863399636557 0.0362863399636557
-10016 7637 383 0.0504266976907422 0.0504266976907422
-10017 383 4682 0.05031361216385 0.05031361216385
-10018 4682 295 0.0506583134955018 0.0506583134955018
-10019 295 4954 0.0497648033018035 0.0497648033018035
-10021 7222 7638 0.0496667318298412 0.0496667318298412
-10022 7638 7639 0.0515292350274089 0.0515292350274089
-10023 7639 7640 0.0459421846016502 0.0459421846016502
-10024 7640 6642 0.0415805639651593 0.0415805639651593
-10026 3954 7641 0.0608839417644586 0.0608839417644586
-10027 7641 5604 0.0589168683204242 0.0589168683204242
-18697 6400 5868 0.177478717288294 0.177478717288294
-10029 7642 3727 0.0543818576839699 0.0543818576839699
-10031 1239 4813 0.0888202681133088 0.0888202681133088
-10032 4813 2165 0.138535770033239 0.138535770033239
-10034 4003 7643 0.0510385957556285 0.0510385957556285
-10035 7643 7027 0.0529371470208169 0.0529371470208169
-10036 7027 7644 0.0521180983869426 0.0521180983869426
-10037 7644 7645 0.0537600930137936 0.0537600930137936
-10038 7645 7646 0.0510719245712091 0.0510719245712091
-10039 7646 7380 0.0524231241843369 0.0524231241843369
-10041 7647 3393 0.0461297697153075 0.0461297697153075
-10043 3394 7648 0.0445992136926928 0.0445992136926928
-10044 7648 5709 0.0478831918410465 0.0478831918410465
-10045 5709 7649 0.04548718787965 0.04548718787965
-10046 7649 7432 0.0484717768195407 0.0484717768195407
-10047 7432 7650 0.0437375947901795 0.0437375947901795
-10048 7650 7181 0.0470644094329018 0.0470644094329018
-10049 7181 7651 0.0469937345825467 0.0469937345825467
-10051 7652 7653 0.0459694430265719 0.0459694430265719
-10053 1099 7654 0.0453903142377476 0.0453903142377476
-10054 7654 7505 0.0471008131744324 0.0471008131744324
-10055 7505 7655 0.0439789031058606 0.0439789031058606
-10056 7655 3857 0.0492561227403211 0.0492561227403211
-10057 3857 7656 0.0443253739114241 0.0443253739114241
-10058 7656 5595 0.054031927582118 0.054031927582118
-10059 5595 7657 0.0531350620266369 0.0531350620266369
-10060 7657 7548 0.0548032505549166 0.0548032505549166
-10061 7548 7658 0.0961567115661112 0.0961567115661112
-10063 5169 6864 0.176934896372569 0.176934896372569
-10064 6864 3072 0.175748977102837 0.175748977102837
-10065 3072 7659 0.163990749862373 0.163990749862373
-10067 3292 100 0.415519355639239 0.415519355639239
-10069 5731 3291 0.149792492427265 0.149792492427265
-10071 1152 7660 0.199718823841446 0.199718823841446
-10074 6897 7663 0.241129252553979 0.241129252553979
-13575 2 9131 0.186044551751923 0.186044551751923
-10075 7663 7664 0.101783451026811 0.101783451026811
-10076 7664 7665 0.289306992458348 0.289306992458348
-10078 6814 7666 0.176577592408465 0.176577592408465
-12084 8539 8540 0.241661980997098 0.241661980997098
-10079 7666 2342 0.176188966635474 0.176188966635474
-10080 2342 7667 0.17458351857957 0.17458351857957
-10081 7667 4785 0.245723521469374 0.245723521469374
-10082 4785 7668 0.239480958817199 0.239480958817199
-10084 5159 7669 0.0600603744377636 0.0600603744377636
-10085 7669 5954 0.140826727437097 0.140826727437097
-10086 5954 2241 0.203480008894553 0.203480008894553
-10087 2241 4914 0.201437462212311 0.201437462212311
-10088 4914 6609 0.201231500080185 0.201231500080185
-10089 6609 7670 0.19693744890168 0.19693744890168
-11324 5142 5154 0.0222389853288599 0.0222389853288599
-16191 7205 5817 0.204256012568379 0.204256012568379
-10090 7670 7671 0.205535401167156 0.205535401167156
-10092 690 1979 0.162739101905996 0.162739101905996
-10093 1979 1964 0.0397992509913644 0.0397992509913644
-10094 1964 6501 0.211697424646872 0.211697424646872
-10095 6501 2478 0.193626535181341 0.193626535181341
-10096 2478 5912 0.20926896109112 0.20926896109112
-10097 5912 7672 0.199195490528656 0.199195490528656
-10098 7672 803 0.201999137953248 0.201999137953248
-10099 803 7673 0.202608278725201 0.202608278725201
-10100 7673 7674 0.205563081575912 0.205563081575912
-10101 7674 7675 0.203265447696938 0.203265447696938
-10102 7675 3066 0.200093208772811 0.200093208772811
-10103 3066 7676 0.18728661128175 0.18728661128175
-10105 7677 6370 0.270615231348292 0.270615231348292
-10106 6370 7678 0.131279919418432 0.131279919418432
-10108 6507 7679 0.113730821063582 0.113730821063582
-10109 7679 6937 0.113695193803527 0.113695193803527
-10111 759 6605 0.202732181741343 0.202732181741343
-10113 5167 7680 0.173408491477124 0.173408491477124
-10114 7680 2354 0.177734023432563 0.177734023432563
-11350 4801 4798 0.0316348130565604 0.0316348130565604
-10116 4156 4743 0.17475749351339 0.17475749351339
-10117 4743 6539 0.176484628682033 0.176484628682033
-10118 6539 7681 0.164515462701881 0.164515462701881
-10119 7681 1204 0.1695248683934 0.1695248683934
-10120 1204 7682 0.0218451192643306 0.0218451192643306
-10121 7682 3779 0.199697518421981 0.199697518421981
-10123 7683 953 0.176289634687175 0.176289634687175
-10124 953 7684 0.174800312403385 0.174800312403385
-10125 7684 4892 0.161444055531775 0.161444055531775
-10126 4892 7685 0.184678055138444 0.184678055138444
-10127 7685 5490 0.173583753319791 0.173583753319791
-10128 5490 3022 0.0680856463383254 0.0680856463383254
-18346 1684 7686 0.206269012853702 0.206269012853702
-10129 3022 608 0.0626103319165951 0.0626103319165951
-10130 608 7687 0.0714136208255542 0.0714136208255542
-10132 751 1571 0.141098847639908 0.141098847639908
-10133 1571 7688 0.136160171060933 0.136160171060933
-10134 7688 355 0.0540631216358879 0.0540631216358879
-11381 7 8238 0.233069627316498 0.233069627316498
-10136 3031 7689 0.212052347410258 0.212052347410258
-10139 5644 4349 0.138628444284297 0.138628444284297
-10140 4349 6347 0.140074045976997 0.140074045976997
-10143 7690 7691 0.036360966917709 0.036360966917709
-13576 9131 2186 0.0494030185182178 0.0494030185182178
-10144 7691 7692 0.019090691679145 0.019090691679145
-10145 7692 7629 0.138695116564921 0.138695116564921
-10146 7629 7693 0.131928656438508 0.131928656438508
-10148 7694 7695 0.805329256404935 0.805329256404935
-10149 6359 2392 0.110097282540218 0.110097282540218
-10150 2392 7696 0.139362539585628 0.139362539585628
-10152 7697 698 0.20136290155584 0.20136290155584
-10153 698 7698 0.201586501703314 0.201586501703314
-10155 7699 894 0.281945866493957 0.281945866493957
-10156 894 4477 0.138715715492195 0.138715715492195
-10157 4477 2802 0.13960527461951 0.13960527461951
-10158 2802 5268 0.12511734550188 0.12511734550188
-10161 4794 2158 0.120027593160305 0.120027593160305
-11430 319 412 0.178792036530689 0.178792036530689
-11459 224 8268 0.046644646559722 0.046644646559722
-10165 7703 1119 0.0497953640754775 0.0497953640754775
-10166 1119 7704 0.0511005498462644 0.0511005498462644
-10167 7704 7496 0.0499039643779027 0.0499039643779027
-10168 7496 7705 0.050496479725261 0.050496479725261
-10169 7705 3842 0.0493242373326315 0.0493242373326315
-10170 3842 7706 0.0511368055077475 0.0511368055077475
-10171 7706 5553 0.0516924374908146 0.0516924374908146
-10173 5552 7707 0.497797594406761 0.497797594406761
-10174 7708 6434 0.169523036166009 0.169523036166009
-10175 6434 4659 0.115447272077866 0.115447272077866
-10176 4659 7709 0.0610101187906253 0.0610101187906253
-10177 7709 1282 0.0565434694494923 0.0565434694494923
-10178 1282 4541 0.131357223988847 0.131357223988847
-10179 4541 7710 0.132140893738002 0.132140893738002
-10180 7710 7711 0.0696094980092003 0.0696094980092003
-10181 7711 7712 0.0619159407722012 0.0619159407722012
-10183 4024 7713 0.0484316979076645 0.0484316979076645
-10184 7713 5669 0.0520933568419111 0.0520933568419111
-10185 5669 7714 0.0498366654518003 0.0498366654518003
-10186 7714 7030 0.0492177257934086 0.0492177257934086
-19495 7469 10524 0.0198269485983196 0.0198269485983196
-10188 7715 7378 0.0506230529615687 0.0506230529615687
-10189 7378 1594 0.0506283698630863 0.0506283698630863
-10190 1594 3411 0.0491667634825631 0.0491667634825631
-10191 3411 7717 0.105657808428602 0.105657808428602
-10192 7717 7718 0.0940313147486449 0.0940313147486449
-10193 5546 7719 0.0535907784173066 0.0535907784173066
-10194 7719 7720 0.0530201286004126 0.0530201286004126
-10195 7720 573 0.0448716576991108 0.0448716576991108
-10196 573 4986 0.0479600812575622 0.0479600812575622
-10197 4986 7721 0.0515371092658245 0.0515371092658245
-10198 7721 7722 0.0482855644451139 0.0482855644451139
-10199 7722 7723 0.0490137565654263 0.0490137565654263
-10200 7723 7724 0.0538141529532141 0.0538141529532141
-10201 7724 7725 0.0529684395598169 0.0529684395598169
-10202 7725 7726 0.0518724854854175 0.0518724854854175
-10203 7726 7727 0.04727777135042 0.04727777135042
-10204 7727 3618 0.0472245509762166 0.0472245509762166
-10205 3618 7728 0.0514814686878799 0.0514814686878799
-10206 7728 7729 0.0518724978816832 0.0518724978816832
-10207 7729 7730 0.0486618474944759 0.0486618474944759
-10208 7730 5100 0.0498159875736575 0.0498159875736575
-10209 5100 7731 0.0971611599806991 0.0971611599806991
-10210 7731 7732 0.0537738540349519 0.0537738540349519
-10211 7732 7733 0.048775543246574 0.048775543246574
-10213 7734 1529 0.0486197396153865 0.0486197396153865
-10214 1529 6533 0.0236551874497837 0.0236551874497837
-10216 1748 5658 0.0690555262759062 0.0690555262759062
-10217 5658 6638 0.0663249571304488 0.0663249571304488
-10220 5429 5327 0.0495383987324496 0.0495383987324496
-10221 5327 7400 0.0488963197685218 0.0488963197685218
-10223 3485 7735 0.019269671719438 0.019269671719438
-10224 7735 6080 0.0527262897841316 0.0527262897841316
-10225 6080 7736 0.0518491308674393 0.0518491308674393
-10226 7736 3699 0.0473298672855462 0.0473298672855462
-10227 3699 4573 0.0991704429707509 0.0991704429707509
-10228 4573 7737 0.1025259519958 0.1025259519958
-10229 7737 7738 0.0567267064163172 0.0567267064163172
-10230 7738 6520 0.0485788201580239 0.0485788201580239
-11562 4026 8321 0.0489622731658017 0.0489622731658017
-10232 7739 6163 0.0483379374847878 0.0483379374847878
-10233 6163 7740 0.0487487301271992 0.0487487301271992
-10234 7740 2742 0.0481924761788732 0.0481924761788732
-10236 7741 5233 0.0485076742472366 0.0485076742472366
-10237 5233 7742 0.0501847785254714 0.0501847785254714
-10238 7742 3175 0.0518961094220257 0.0518961094220257
-10239 3175 7743 0.0477088260821206 0.0477088260821206
-10240 7743 5000 0.0480456206813873 0.0480456206813873
-10241 5000 7744 0.0507496702288809 0.0507496702288809
-10242 7744 732 0.0500052182058767 0.0500052182058767
-10243 732 7062 0.0993780460470829 0.0993780460470829
-10244 7062 568 0.179642317491375 0.179642317491375
-10245 568 6375 0.221062471524952 0.221062471524952
-10246 6375 7745 0.0502032533440095 0.0502032533440095
-10247 7745 4829 0.0496813089217868 0.0496813089217868
-10248 4829 7746 0.10134770204508 0.10134770204508
-10249 7746 7747 0.19682163321823 0.19682163321823
-10250 7747 7748 0.0148866727143693 0.0148866727143693
-10251 7748 1062 0.0938295581784946 0.0938295581784946
-10252 1062 1700 0.0910684866897701 0.0910684866897701
-10254 7749 7750 0.088136254722807 0.088136254722807
-10255 7750 7751 0.0102851011578735 0.0102851011578735
-10256 7751 6675 0.0807868256992296 0.0807868256992296
-10258 5566 7541 0.078830239472867 0.078830239472867
-10259 7541 7752 0.71007082854504 0.71007082854504
-10260 7753 7754 0.0555561071332203 0.0555561071332203
-10261 7754 6755 0.141035585683202 0.141035585683202
-10262 6755 3980 0.200595577576722 0.200595577576722
-10263 3980 7039 0.198840384599884 0.198840384599884
-10264 7039 3426 0.202741409948142 0.202741409948142
-10266 6623 1789 0.083407855110509 0.083407855110509
-10267 1789 7208 0.197984235440067 0.197984235440067
-10268 7208 5821 0.204810690510051 0.204810690510051
-10269 5821 7726 0.195060536702397 0.195060536702397
-10270 7726 7755 1.41312394826698 1.41312394826698
-10271 3161 7756 0.200885724863022 0.200885724863022
-10272 7756 3082 0.196495825635974 0.196495825635974
-10273 3082 3194 0.201063950220373 0.201063950220373
-10275 6110 1901 0.201670811128578 0.201670811128578
-10277 441 5814 0.0584483555155252 0.0584483555155252
-10278 5814 5376 0.210901593054405 0.210901593054405
-10282 2638 5211 0.135802363910714 0.135802363910714
-10284 5376 7115 0.169184130655589 0.169184130655589
-10286 6686 7758 0.0966310054355491 0.0966310054355491
-10287 7758 7759 0.103268100856542 0.103268100856542
-10289 7760 7761 0.0931830345887697 0.0931830345887697
-10290 7761 870 0.209204581827195 0.209204581827195
-10292 6165 6785 0.0415827902651337 0.0415827902651337
-10293 6785 7357 0.102001818508737 0.102001818508737
-10294 7357 5405 0.112234858942921 0.112234858942921
-10295 5405 3138 0.103097089620426 0.103097089620426
-10296 3138 7762 0.00572680722694595 0.00572680722694595
-10297 6991 6399 0.078057620939779 0.078057620939779
-10299 3614 2112 0.200468732564122 0.200468732564122
-10300 2112 7766 0.09707938317328 0.09707938317328
-10301 7766 7663 0.107055697326901 0.107055697326901
-10303 869 7100 0.0985676933380822 0.0985676933380822
-11668 7785 8358 0.00862504224759753 0.00862504224759753
-10305 2502 7767 0.133821378293258 0.133821378293258
-10306 7767 4793 0.137187308277769 0.137187308277769
-10307 4793 2155 0.138619015999951 0.138619015999951
-10308 2155 6302 0.131440648996103 0.131440648996103
-10309 6302 6427 0.0971164197766542 0.0971164197766542
-10310 6427 5345 0.100480546860285 0.100480546860285
-10311 5345 4641 0.0997483726431183 0.0997483726431183
-10312 4641 1266 0.0975658909823655 0.0975658909823655
-10313 1266 4540 0.103828265337942 0.103828265337942
-10314 4540 6286 0.102716645609349 0.102716645609349
-10315 6286 2720 0.0979601908800836 0.0979601908800836
-10317 2598 5187 0.177611938217315 0.177611938217315
-10318 5187 5655 0.104799417596727 0.104799417596727
-10319 5655 7768 0.00220165954800827 0.00220165954800827
-10321 7769 6068 0.194290902090962 0.194290902090962
-10322 6068 2548 0.201654782967819 0.201654782967819
-10323 2548 7770 0.410001897212591 0.410001897212591
-10324 6390 7771 0.13140278725488 0.13140278725488
-10325 7771 7772 0.135404012160521 0.135404012160521
-10326 7772 7773 0.135386059531021 0.135386059531021
-10327 7773 5541 0.102606539353157 0.102606539353157
-10328 5541 2410 0.100544408114452 0.100544408114452
-10329 2410 4294 0.100431298726032 0.100431298726032
-10330 4294 7776 0.0501127826077893 0.0501127826077893
-10331 7776 7777 0.0533516278326779 0.0533516278326779
-10332 7777 7778 0.0636719509277386 0.0636719509277386
-10333 7778 7702 0.142867174122929 0.142867174122929
-10334 7702 2984 0.198167346423749 0.198167346423749
-10336 7779 1879 0.0577899859499687 0.0577899859499687
-10337 1879 7780 0.0975763172911078 0.0975763172911078
-10338 7780 7781 0.049615978114649 0.049615978114649
-10339 7781 7782 0.151461070035101 0.151461070035101
-10340 7782 7783 0.00828406172358757 0.00828406172358757
-10341 7783 7784 0.0408643643931965 0.0408643643931965
-10342 7784 7785 0.155195634964959 0.155195634964959
-10343 7785 6879 0.203175602967298 0.203175602967298
-10344 6879 1690 0.204417069906845 0.204417069906845
-10345 1690 7786 0.203521868851454 0.203521868851454
-10346 7786 2437 0.163479024443522 0.163479024443522
-10347 2437 2436 0.0381118302971424 0.0381118302971424
-10348 2436 5735 0.132411428624817 0.132411428624817
-10349 5735 7787 0.0686968769014223 0.0686968769014223
-10350 7787 5524 0.0876693797427073 0.0876693797427073
-10352 6462 6461 0.046218455398192 0.046218455398192
-10353 6461 7788 0.114101346725552 0.114101346725552
-10354 7788 7789 0.186352786707342 0.186352786707342
-10355 7789 7790 0.201819126377908 0.201819126377908
-10356 7790 1426 0.209991688515331 0.209991688515331
-10357 1426 7188 0.131433687737374 0.131433687737374
-10361 7791 7792 0.0221530824058495 0.0221530824058495
-10362 7792 1857 0.178051972210932 0.178051972210932
-10363 1857 2599 0.180197954723075 0.180197954723075
-10365 7793 7794 0.133052671328159 0.133052671328159
-10366 7794 7795 0.00451480555637825 0.00451480555637825
-10368 7796 316 0.0810108111113459 0.0810108111113459
-10369 316 7797 0.0132929754360195 0.0132929754360195
-10371 7798 1715 0.146657336243231 0.146657336243231
-10373 4991 5886 0.0409007612541298 0.0409007612541298
-10374 5886 7799 0.0133509392362763 0.0133509392362763
-10375 7799 6955 0.0302227835880131 0.0302227835880131
-10376 6955 120 0.355050454211798 0.355050454211798
-10378 6998 7800 0.287485052767515 0.287485052767515
-10379 7800 2107 0.0799880901292185 0.0799880901292185
-10381 7801 7330 0.0459693673262965 0.0459693673262965
-10382 7330 2069 0.0513405380116942 0.0513405380116942
-10383 2069 2090 0.0410799126461524 0.0410799126461524
-10384 2090 2665 0.0609107459124439 0.0609107459124439
-10385 2665 2657 0.0344762888596363 0.0344762888596363
-10386 2657 4120 0.0653569613260274 0.0653569613260274
-10387 4120 4119 0.025633469399215 0.025633469399215
-10388 4119 6679 0.0800230712461371 0.0800230712461371
-10389 6679 7803 0.0968450624184265 0.0968450624184265
-10390 7803 7693 0.101842612257672 0.101842612257672
-10392 4983 7804 0.15108225604362 0.15108225604362
-10393 7804 7805 0.125613899900368 0.125613899900368
-10394 7805 7806 0.243703765368195 0.243703765368195
-10395 6511 833 0.205796808568101 0.205796808568101
-10396 833 1752 0.10962713348726 0.10962713348726
-10399 7807 6997 0.603696470077293 0.603696470077293
-10401 6510 7620 0.115341473380206 0.115341473380206
-10403 1004 4224 0.0542745916357659 0.0542745916357659
-10405 7568 7808 0.0520701135747565 0.0520701135747565
-10406 7808 7085 0.0476697019408349 0.0476697019408349
-10407 7085 7087 0.0498741800030606 0.0498741800030606
-10410 7411 5866 0.177233832171644 0.177233832171644
-10411 5866 1317 0.177356465730534 0.177356465730534
-10412 1317 1373 0.176201016352257 0.176201016352257
-20226 10713 10016 0.0211937599266337 0.0211937599266337
-10413 1373 7809 0.0646527574308656 0.0646527574308656
-10414 7809 6841 0.0827327683846137 0.0827327683846137
-18362 7802 7116 0.00767249278335644 0.00767249278335644
-18363 7116 7802 0.00767249278335644 0.00767249278335644
-10416 7810 7811 0.101331501186014 0.101331501186014
-10417 7811 7812 0.10060881119881 0.10060881119881
-10418 7812 7813 0.20266387330204 0.20266387330204
-10419 7813 6245 0.198305641519059 0.198305641519059
-10420 6245 7814 0.197228200241648 0.197228200241648
-10422 1492 181 0.220815542326235 0.220815542326235
-10423 181 1709 0.205644626708499 0.205644626708499
-10424 1709 7815 0.201521495468828 0.201521495468828
-10425 7815 1576 0.244181862134779 0.244181862134779
-11867 8450 529 0.00567706315765741 0.00567706315765741
-10426 1576 7816 0.227813240625087 0.227813240625087
-10428 6320 7817 0.183577601350202 0.183577601350202
-10430 7213 7818 0.101757750903819 0.101757750903819
-10433 962 6868 0.198984557339899 0.198984557339899
-10434 6868 5277 0.0940706344008526 0.0940706344008526
-10435 5277 3079 0.10232261403939 0.10232261403939
-10437 7204 5816 0.204032094058756 0.204032094058756
-10438 5816 7722 0.196359705603447 0.196359705603447
-10439 7722 7819 1.20817529596719 1.20817529596719
-10440 4246 1785 0.204162289925295 0.204162289925295
-10441 1785 7820 0.0718319226119568 0.0718319226119568
-10442 6026 3876 0.103447229282558 0.103447229282558
-10443 3876 7821 0.100516631601798 0.100516631601798
-10444 7322 2073 0.0916901418746821 0.0916901418746821
-10445 2073 2670 0.0954589635577965 0.0954589635577965
-10446 2670 4140 0.0958506641044589 0.0958506641044589
-10447 4140 6687 0.0883798780131798 0.0883798780131798
-10448 6687 7822 0.0995993099363261 0.0995993099363261
-10449 7822 7696 0.0932435604543702 0.0932435604543702
-10450 7696 3474 0.0968263022183935 0.0968263022183935
-10451 3474 7823 0.0468407500328621 0.0468407500328621
-10452 5171 3743 0.0993415474645253 0.0993415474645253
-10454 5856 4668 0.0981986239232037 0.0981986239232037
-10455 4668 1294 0.100268721006653 0.100268721006653
-10456 1294 1367 0.0977359423737142 0.0977359423737142
-10457 1367 3189 0.105552448113217 0.105552448113217
-10458 3189 6851 0.101177318178783 0.101177318178783
-10459 6851 4702 0.101416251034793 0.101416251034793
-10460 4702 7468 0.0970718218675625 0.0970718218675625
-10461 7468 1895 0.103477998735846 0.103477998735846
-10462 1895 7824 0.0967350574153813 0.0967350574153813
-10463 7824 7233 0.101338813079015 0.101338813079015
-10464 7233 3243 0.207470752756408 0.207470752756408
-10465 3243 7282 0.19399363779074 0.19399363779074
-10466 7282 7825 0.149563284680896 0.149563284680896
-10468 2141 7826 0.157978675104427 0.157978675104427
-10469 7826 7827 0.306989543465552 0.306989543465552
-10470 7827 7828 0.364212228682904 0.364212228682904
-16042 9797 9804 0.0714393127860209 0.0714393127860209
-10475 7658 7549 0.158167365995463 0.158167365995463
-10477 5846 7750 0.200199460183562 0.200199460183562
-10479 466 7198 0.196816395654282 0.196816395654282
-10481 7268 7830 0.172430116159174 0.172430116159174
-10483 7217 7831 0.199372618146519 0.199372618146519
-10485 6256 7832 0.202992310919435 0.202992310919435
-10487 7833 4331 0.102741254079324 0.102741254079324
-10488 4331 7834 0.0526098265130649 0.0526098265130649
-10489 7834 5037 0.0501135526518646 0.0501135526518646
-10490 5037 7835 0.0494507564303858 0.0494507564303858
-10491 7835 7836 0.0506565934234891 0.0506565934234891
-10492 7836 7837 0.0500464479643974 0.0500464479643974
-10493 7837 2894 0.0524402316173641 0.0524402316173641
-10494 2894 7838 0.107557027285785 0.107557027285785
-10495 7838 7839 0.103734242634521 0.103734242634521
-10496 7839 4733 0.104796091296626 0.104796091296626
-10498 6800 7352 0.103066456507469 0.103066456507469
-10499 7352 5398 0.104939276238433 0.104939276238433
-10500 5398 7840 0.054043807018549 0.054043807018549
-10501 7840 7841 0.0495084984704332 0.0495084984704332
-10502 7841 3900 0.109926182600774 0.109926182600774
-10503 3900 1036 0.101980966587827 0.101980966587827
-10505 7842 6275 0.0499604206116259 0.0499604206116259
-10506 6275 7843 0.109041406945306 0.109041406945306
-10508 7844 7845 0.0640842858387461 0.0640842858387461
-10509 7845 1756 0.058813700126345 0.058813700126345
-10510 1756 4796 0.0566305502204531 0.0566305502204531
-10511 4796 2162 0.113835660361901 0.113835660361901
-10512 2162 7846 0.116364205137553 0.116364205137553
-10514 6135 4027 0.149896567221218 0.149896567221218
-10515 4027 7032 0.200991141471739 0.200991141471739
-10516 7032 3412 0.200534935685617 0.200534935685617
-10517 3412 7633 0.0497828282990497 0.0497828282990497
-10518 7633 5698 0.0497412906945155 0.0497412906945155
-10519 5698 7847 0.050919685731899 0.050919685731899
-10521 7425 7166 0.104570214872527 0.104570214872527
-10522 7166 7848 0.0473158420873474 0.0473158420873474
-10523 7848 7780 0.0502827033263459 0.0502827033263459
-10524 7780 1123 0.100516868229367 0.100516868229367
-10525 1123 7849 0.0509916038841254 0.0509916038841254
-10526 7849 7497 0.0507179555279218 0.0507179555279218
-10527 7497 7850 0.0492496392928742 0.0492496392928742
-10528 7850 3843 0.0492532755342339 0.0492532755342339
-10529 3843 7851 0.0511792577413519 0.0511792577413519
-10530 7851 5556 0.0504327266312592 0.0504327266312592
-10561 7757 6414 0.14886592682355 0.14886592682355
-10531 5556 7852 0.789293029376444 0.789293029376444
-10532 1618 7136 0.164980324326418 0.164980324326418
-10534 2027 5535 0.0854267701089729 0.0854267701089729
-10535 5535 6450 0.110522246345964 0.110522246345964
-10536 6450 6468 0.0325389081934527 0.0325389081934527
-10537 6468 7853 0.124455504811187 0.124455504811187
-10538 7853 7854 0.192779349126015 0.192779349126015
-10540 3713 7855 0.105701897268654 0.105701897268654
-10543 2614 7857 0.0507605301255621 0.0507605301255621
-10544 7857 5197 0.124727455067454 0.124727455067454
-10545 5197 6238 0.172240941584424 0.172240941584424
-10546 6238 7637 0.187669509666877 0.187669509666877
-10547 7637 7858 0.175500793784226 0.175500793784226
-10548 7858 7859 0.174943439798306 0.174943439798306
-10551 5368 7126 0.152826634682226 0.152826634682226
-10552 7126 614 0.179980225267387 0.179980225267387
-10553 614 7860 0.174053494498076 0.174053494498076
-10554 7860 7861 0.175067683150656 0.175067683150656
-10556 3960 5600 0.12071802041193 0.12071802041193
-10558 6724 4799 0.0913013732116182 0.0913013732116182
-10559 4799 2180 0.0880940650188129 0.0880940650188129
-10560 2180 7757 0.0839974084607818 0.0839974084607818
-10562 6414 4645 0.149015796662155 0.149015796662155
-10563 4645 1271 0.151238114292438 0.151238114292438
-10564 1271 4535 0.201873592117884 0.201873592117884
-10565 4535 7863 0.199199232202906 0.199199232202906
-10567 7864 6740 0.106132792016662 0.106132792016662
-10568 6740 2257 0.103696160263475 0.103696160263475
-10569 2257 6132 0.104845212424081 0.104845212424081
-10570 6132 4000 0.104492371103569 0.104492371103569
-10571 4000 7049 0.105765984719426 0.105765984719426
-10572 7049 1395 0.105619552065538 0.105619552065538
-10573 1395 7865 0.0532676910827188 0.0532676910827188
-12077 2695 8043 0.149120560873017 0.149120560873017
-10574 7865 7382 0.0513518590570076 0.0513518590570076
-10576 7866 3392 0.0498722666723731 0.0498722666723731
-10578 2360 5226 0.147034135602084 0.147034135602084
-10579 5226 5088 0.140218763176125 0.140218763176125
-10580 5088 2812 0.112317158065107 0.112317158065107
-10581 2812 7855 0.0589853238635922 0.0589853238635922
-10582 7855 4676 0.102566908777836 0.102566908777836
-10583 4676 4948 0.0965475772401715 0.0965475772401715
-10584 4948 7867 0.0515742481536382 0.0515742481536382
-10585 7867 7219 0.0513689618533378 0.0513689618533378
-10586 7219 7868 0.0507197202929207 0.0507197202929207
-10587 7868 5673 0.0490781046009859 0.0490781046009859
-10588 5673 7869 0.0456643057832586 0.0456643057832586
-10591 7792 7870 0.049146171652799 0.049146171652799
-10592 7870 1108 0.0521568671722949 0.0521568671722949
-10593 1108 5770 0.0506160748755952 0.0506160748755952
-10594 5770 7510 0.0513174323114612 0.0513174323114612
-10595 7510 7871 0.0508676871173128 0.0508676871173128
-10596 7871 3865 0.0498216783929082 0.0498216783929082
-10598 3866 7535 0.105586605139886 0.105586605139886
-10599 7535 7872 0.748786770151958 0.748786770151958
-10603 741 1561 0.140274508504629 0.140274508504629
-10604 1561 7876 0.139940443617856 0.139940443617856
-10605 7876 7877 0.121382404560649 0.121382404560649
-10607 3572 5640 0.141095915979936 0.141095915979936
-10608 5640 4345 0.139634312621283 0.139634312621283
-10609 4345 6343 0.13679021957376 0.13679021957376
-10610 6343 3046 0.13698802953883 0.13698802953883
-10611 3046 7878 0.138953332142948 0.138953332142948
-10612 7878 7879 0.00536944182123181 0.00536944182123181
-10613 7879 7880 0.11582084881522 0.11582084881522
-10615 7881 7882 0.0939943673024045 0.0939943673024045
-10617 4885 7883 0.18871104587798 0.18871104587798
-10618 7883 5483 0.174801190512252 0.174801190512252
-10619 5483 7884 0.200940942998637 0.200940942998637
-10620 7884 7885 0.0780811261571653 0.0780811261571653
-10621 7885 3341 0.00930901113126469 0.00930901113126469
-10624 1192 7887 0.0222318154701858 0.0222318154701858
-10625 7887 3786 0.199739451308706 0.199739451308706
-10627 7888 5967 0.106945706764055 0.106945706764055
-10628 5967 7889 0.0517538867982505 0.0517538867982505
-10629 7889 3011 0.055433069584998 0.055433069584998
-10630 3011 7890 0.0504905501442438 0.0504905501442438
-10631 7890 4389 0.0518336432467722 0.0518336432467722
-10632 4389 7891 0.106909075712535 0.106909075712535
-10633 7891 7892 0.0447272763477039 0.0447272763477039
-10634 7892 7893 0.0604871538278066 0.0604871538278066
-10635 7893 7894 0.0527248029948841 0.0527248029948841
-10636 7894 7895 0.0510420835040534 0.0510420835040534
-10637 7895 7896 0.0538542282588573 0.0538542282588573
-10638 7896 7897 0.0528352422268061 0.0528352422268061
-10640 7898 7899 0.0483963113823249 0.0483963113823249
-10641 7899 7900 0.00514045868709644 0.00514045868709644
-10642 7900 6183 0.105068526303449 0.105068526303449
-10643 6183 7563 0.106218150970674 0.106218150970674
-10646 7902 7903 0.144865462765669 0.144865462765669
-10647 7903 7904 0.00237466940700901 0.00237466940700901
-10648 7904 6985 0.0721296292058115 0.0721296292058115
-10649 6985 4820 0.0719786596117478 0.0719786596117478
-10650 4820 7905 0.147529402397198 0.147529402397198
-10651 7905 7906 0.144081069806214 0.144081069806214
-10653 3189 1870 0.209495964340019 0.209495964340019
-10654 1870 7907 0.0977397792259224 0.0977397792259224
-10655 7907 4184 0.106328113718199 0.106328113718199
-10656 4184 7908 0.403661295666813 0.403661295666813
-10657 7908 4837 0.108683081676812 0.108683081676812
-10659 7909 7910 0.270199990406442 0.270199990406442
-10660 7911 810 0.0673953106393502 0.0673953106393502
-10661 810 7912 0.0687323400006804 0.0687323400006804
-10662 7912 7913 0.136720833756656 0.136720833756656
-10666 2255 5858 0.174722136683236 0.174722136683236
-10667 5858 1305 0.178402656879188 0.178402656879188
-10668 1305 7915 0.248888691440438 0.248888691440438
-12170 8573 8574 0.0987973765101899 0.0987973765101899
-10670 6847 7916 0.0984178968171368 0.0984178968171368
-10671 7916 7485 0.0976761282305841 0.0976761282305841
-10673 7454 5692 0.103533596199028 0.103533596199028
-10674 5692 7917 0.101331500328489 0.101331500328489
-10675 7917 4966 0.0998668108920524 0.0998668108920524
-10676 4966 7918 0.102812100555259 0.102812100555259
-10677 7918 7919 0.0983963905872725 0.0983963905872725
-10678 7919 7920 0.0991546561543948 0.0991546561543948
-10679 7920 7921 0.0991411977449166 0.0991411977449166
-10680 7921 7922 0.106421383510006 0.106421383510006
-10682 7923 7924 0.106391305814005 0.106391305814005
-10684 7925 629 0.0646550267727614 0.0646550267727614
-10685 629 7926 0.00919464810452742 0.00919464810452742
-10686 7927 7928 0.0412650483746168 0.0412650483746168
-10687 7928 7929 0.155361420508855 0.155361420508855
-10688 7929 6922 0.0195376725753923 0.0195376725753923
-10689 6922 6736 0.174720460074468 0.174720460074468
-10691 7930 7931 0.0129516773904198 0.0129516773904198
-10692 7931 1511 0.391618540945239 0.391618540945239
-10693 1511 7932 0.0409032080648905 0.0409032080648905
-10694 7932 3280 0.112386881702983 0.112386881702983
-10696 4635 6586 0.185505221951206 0.185505221951206
-10698 6668 787 0.109054104365323 0.109054104365323
-10699 787 6002 0.243058044096108 0.243058044096108
-10702 7934 1008 1.1041513689359 1.1041513689359
-10704 4497 7935 0.109080059964542 0.109080059964542
-10705 7935 7936 0.375437621590472 0.375437621590472
-10706 7936 7937 0.0440200903162904 0.0440200903162904
-10708 3966 3963 0.0923048136404676 0.0923048136404676
-10710 6243 7938 0.0544857736456965 0.0544857736456965
-10711 7938 7571 0.0517149905092859 0.0517149905092859
-10712 7571 7939 0.0378829783952266 0.0378829783952266
-10714 7940 5872 0.0757028634173436 0.0757028634173436
-10715 5872 1324 0.177578299705823 0.177578299705823
-10716 1324 1380 0.1760884455939 0.1760884455939
-10717 1380 7941 0.0581557503278793 0.0581557503278793
-10718 7941 6844 0.0845562612846107 0.0845562612846107
-10719 6844 4696 0.11746862405599 0.11746862405599
-10720 4696 7452 0.157863437357233 0.157863437357233
-10722 5690 5337 0.242972143995655 0.242972143995655
-10724 7942 7943 0.14470003055266 0.14470003055266
-10725 7943 1056 0.118222446008981 0.118222446008981
-10726 1056 7944 0.0800381081986229 0.0800381081986229
-10727 7944 6249 0.201854530416454 0.201854530416454
-10728 6249 7945 0.201602089629263 0.201602089629263
-10729 7945 1497 0.20081804408168 0.20081804408168
-10730 1497 186 0.202686112287629 0.202686112287629
-10731 186 7798 0.0846089584800808 0.0846089584800808
-10732 7798 1714 0.126110593452085 0.126110593452085
-10734 7946 1580 0.141640668503246 0.141640668503246
-10735 1580 7947 0.292520501534348 0.292520501534348
-10736 7948 2142 0.372172819192242 0.372172819192242
-10738 7949 7950 0.022809009376778 0.022809009376778
-10739 7950 2916 0.200611278039498 0.200611278039498
-10741 2915 7951 0.200419085698686 0.200419085698686
-10743 7952 7953 0.0110105423016681 0.0110105423016681
-10745 7954 7631 0.201162741792968 0.201162741792968
-16610 5355 7889 0.146740030035641 0.146740030035641
-10746 7631 7955 0.197131063915064 0.197131063915064
-10748 7956 6942 0.115194637181012 0.115194637181012
-12305 8628 8641 0.0276795827309073 0.0276795827309073
-10750 4939 4687 0.409424899618544 0.409424899618544
-10751 4687 7959 0.501489716289273 0.501489716289273
-10752 7959 7960 0.103838798829226 0.103838798829226
-10753 7960 5096 0.0880537297967434 0.0880537297967434
-10754 5096 7961 0.0549628705336601 0.0549628705336601
-10756 7962 7963 0.129400960231747 0.129400960231747
-10757 7963 7964 0.0109989745271633 0.0109989745271633
-10758 7964 7093 0.177295071329975 0.177295071329975
-10759 7093 7965 0.0553949557893182 0.0553949557893182
-10760 7965 3937 0.0117544286846151 0.0117544286846151
-10761 3937 7966 0.0655333417817751 0.0655333417817751
-10762 7966 7967 0.00514903654400709 0.00514903654400709
-10763 7967 7968 0.0154207763703831 0.0154207763703831
-10764 7968 7969 0.120137734300265 0.120137734300265
-10765 7969 7970 0.0235045509998941 0.0235045509998941
-10766 7970 4938 0.199335986652222 0.199335986652222
-10768 6788 4721 0.150986476371322 0.150986476371322
-10769 4721 667 0.112227110724083 0.112227110724083
-10770 667 5130 0.0364809731603039 0.0364809731603039
-10771 5130 7141 0.148468037583607 0.148468037583607
-10772 7141 7973 0.0653535267620459 0.0653535267620459
-10773 7973 2883 0.0864280151657955 0.0864280151657955
-10774 2883 4607 0.164926871665991 0.164926871665991
-10775 4607 5044 0.166914948534143 0.166914948534143
-10776 5044 6491 0.0452504465788914 0.0452504465788914
-10777 6491 7974 0.124696259323388 0.124696259323388
-10778 7974 3674 0.0837503652675649 0.0837503652675649
-10780 7975 7976 0.0210158411356976 0.0210158411356976
-10781 7976 2348 0.132347730703915 0.132347730703915
-10782 2348 4153 0.174709468744017 0.174709468744017
-10783 4153 4740 0.173977137035244 0.173977137035244
-10784 4740 6535 0.176711434597363 0.176711434597363
-10785 6535 7977 0.164237503877208 0.164237503877208
-10787 7978 692 0.202230219594829 0.202230219594829
-10788 692 7979 0.202124611474851 0.202124611474851
-10790 7980 1194 0.168544434179807 0.168544434179807
-10791 1194 7981 0.0214611132807924 0.0214611132807924
-10793 1195 7982 0.0213718360054606 0.0213718360054606
-10794 7982 3783 0.200590566648469 0.200590566648469
-10795 3783 7983 0.155575717720948 0.155575717720948
-10797 947 7986 0.165669448326255 0.165669448326255
-10798 7986 4887 0.171543568824384 0.171543568824384
-10800 104 7987 0.0531910934067007 0.0531910934067007
-10801 7987 7283 0.14149347529597 0.14149347529597
-10803 4249 1782 0.204738067086155 0.204738067086155
-10804 1782 7202 0.196638037803866 0.196638037803866
-10805 7202 5813 0.202462167506831 0.202462167506831
-10806 5813 7720 0.198881694965003 0.198881694965003
-10831 5664 5936 0.10457956834692 0.10457956834692
-10807 7720 7988 2.41654683926542 2.41654683926542
-10808 3557 815 0.15408456375045 0.15408456375045
-10809 815 7836 0.141625491803193 0.141625491803193
-10810 7836 7989 0.137956171688053 0.137956171688053
-10811 7989 7990 0.133814544271225 0.133814544271225
-10812 7990 7991 0.00435891657982006 0.00435891657982006
-10813 7991 7992 0.00504883599617259 0.00504883599617259
-10814 7992 3667 0.218697319390466 0.218697319390466
-10818 4607 7994 0.175458215250442 0.175458215250442
-10819 7994 7995 0.17352002006779 0.17352002006779
-10820 7995 664 0.00413178605963205 0.00413178605963205
-10821 664 7998 0.00436495014442939 0.00436495014442939
-10822 7998 7999 0.17836184127639 0.17836184127639
-10824 6329 4163 0.106458655644295 0.106458655644295
-10825 4163 4772 0.262069785544738 0.262069785544738
-10826 4772 6551 0.176006441608747 0.176006441608747
-10827 6551 8001 0.169733521019883 0.169733521019883
-10828 8001 8002 0.186888519126424 0.186888519126424
-10829 8002 3800 0.199472684499289 0.199472684499289
-10830 3800 5664 0.0496163554354094 0.0496163554354094
-10832 5936 934 0.175672791884477 0.175672791884477
-10833 934 5818 0.103656977616086 0.103656977616086
-10834 5818 2219 0.0798383163598858 0.0798383163598858
-10835 2219 4869 0.163069738486709 0.163069738486709
-10836 4869 8003 0.190225091069506 0.190225091069506
-10837 8003 5468 0.173414227417019 0.173414227417019
-10838 5468 6220 0.124444185392524 0.124444185392524
-10841 5175 8005 0.198062000656316 0.198062000656316
-10844 8006 681 0.244474486801046 0.244474486801046
-10845 681 3340 0.0902358208620103 0.0902358208620103
-10847 7885 682 0.0896800723137281 0.0896800723137281
-10848 682 580 0.244861214317874 0.244861214317874
-10850 5334 6321 0.121951239816061 0.121951239816061
-10851 6321 8007 0.186507250461399 0.186507250461399
-10852 8007 8008 0.042606728375189 0.042606728375189
-10853 8008 8009 0.0463471911266823 0.0463471911266823
-10854 8009 8010 0.0102891732268637 0.0102891732268637
-10855 8010 8011 0.0998884840922572 0.0998884840922572
-10856 8011 8012 0.201197445523876 0.201197445523876
-10857 8012 6246 0.199805617134822 0.199805617134822
-10858 6246 8013 0.200864024373594 0.200864024373594
-10859 8013 2310 0.103900456751802 0.103900456751802
-10860 2310 1494 0.0983991417332815 0.0983991417332815
-10861 1494 183 0.203419998804159 0.203419998804159
-10862 183 1711 0.201968707186781 0.201968707186781
-16611 7889 9327 0.146157951939095 0.146157951939095
-10863 1711 8014 0.204806773712675 0.204806773712675
-10864 8014 6157 0.126319530562447 0.126319530562447
-10865 6157 1577 0.0829958932471693 0.0829958932471693
-10867 7968 8016 0.0140119714836204 0.0140119714836204
-10869 2294 1531 0.46192746891159 0.46192746891159
-10871 8017 1203 0.169906498983342 0.169906498983342
-10872 1203 8018 0.0221945337202718 0.0221945337202718
-10873 8018 3780 0.199572680726093 0.199572680726093
-10874 3780 8019 0.153206883868779 0.153206883868779
-10875 8019 952 0.177861736820837 0.177861736820837
-10876 952 8020 0.175149595226483 0.175149595226483
-10877 8020 4891 0.159178167143814 0.159178167143814
-10878 4891 8021 0.18577336394487 0.18577336394487
-10879 8021 5489 0.173842148316324 0.173842148316324
-10880 5489 8022 0.202303315910377 0.202303315910377
-10882 5166 8023 0.173986701720281 0.173986701720281
-10883 8023 2353 0.177612171175383 0.177612171175383
-10884 2353 4155 0.173655528353614 0.173655528353614
-10885 4155 4742 0.173355871166643 0.173355871166643
-10886 4742 6537 0.176328961502794 0.176328961502794
-10887 6537 8024 0.165303556900913 0.165303556900913
-10889 3030 3025 0.111248274146309 0.111248274146309
-10891 8025 8026 0.0640627296443105 0.0640627296443105
-10893 3576 5643 0.138707185733922 0.138707185733922
-10894 5643 4348 0.139896948951005 0.139896948951005
-10895 4348 6346 0.137784232527167 0.137784232527167
-10897 8027 697 0.20001854589906 0.20001854589906
-10898 697 8028 0.202096920971429 0.202096920971429
-10900 8029 2876 0.123948984730939 0.123948984730939
-10901 2876 7628 0.141637704476922 0.141637704476922
-10902 7628 7803 0.129093895003183 0.129093895003183
-10903 7803 8030 0.203887723487366 0.203887723487366
-10904 750 1568 0.143385969503008 0.143385969503008
-10905 1568 356 0.136646760403047 0.136646760403047
-10907 3449 6863 0.17900718937772 0.17900718937772
-10908 6863 3068 0.174598273817653 0.174598273817653
-10909 3068 8031 0.0302783785251902 0.0302783785251902
-10910 8031 3188 0.14422007961407 0.14422007961407
-10912 3499 8032 0.199010937916898 0.199010937916898
-10913 8032 8033 0.200333001057217 0.200333001057217
-10915 5667 598 0.0644126037668526 0.0644126037668526
-10916 598 58 0.177763601732474 0.177763601732474
-10919 5970 8036 0.0505810885650185 0.0505810885650185
-10920 8036 3015 0.0580577132309736 0.0580577132309736
-10921 3015 8037 0.0464238660315039 0.0464238660315039
-10922 8037 4384 0.0544799142925035 0.0544799142925035
-10923 4384 8038 0.0538947325800234 0.0538947325800234
-10924 8038 8039 0.0466438161180549 0.0466438161180549
-10925 8039 8040 0.00584498801301113 0.00584498801301113
-10926 8040 8041 0.0523763426314988 0.0523763426314988
-10927 8041 8042 0.0530979313391782 0.0530979313391782
-10928 8042 8043 0.107654120371494 0.107654120371494
-10929 8043 8044 0.0544759880197041 0.0544759880197041
-10930 8044 8045 0.0487657640583263 0.0487657640583263
-10931 8045 8046 0.0550233762997563 0.0550233762997563
-10932 8046 8047 0.0497918467778446 0.0497918467778446
-10933 8047 8048 0.0560301584180681 0.0560301584180681
-10934 8048 6177 0.0498105660603093 0.0498105660603093
-10937 8049 8050 0.0514663482815545 0.0514663482815545
-10939 5597 7545 0.109426166768049 0.109426166768049
-10940 7545 8051 0.69043474044403 0.69043474044403
-10943 4956 7224 0.100934524697699 0.100934524697699
-10944 7224 8052 0.0514703494422073 0.0514703494422073
-10945 8052 8053 0.0516967622411713 0.0516967622411713
-10946 8053 8054 0.0428181869535947 0.0428181869535947
-10947 8054 6644 0.0437760044869343 0.0437760044869343
-10948 6644 251 0.0675496864417695 0.0675496864417695
-10949 251 3950 0.064659952202738 0.064659952202738
-10950 3950 8056 0.0623263752149148 0.0623263752149148
-10951 8056 5609 0.0582215030638228 0.0582215030638228
-10952 5609 8057 0.0511983070002347 0.0511983070002347
-10953 8057 3730 0.0552226014136858 0.0552226014136858
-10954 3730 8058 0.106434809873425 0.106434809873425
-10956 5917 8060 0.0615467128621124 0.0615467128621124
-10957 8060 8061 0.0595626505884908 0.0595626505884908
-10958 8061 8062 0.120093210467761 0.120093210467761
-10960 8063 4634 0.154652934390646 0.154652934390646
-10961 4634 4549 0.20934037971115 0.20934037971115
-10962 4549 8064 0.293727880710195 0.293727880710195
-10966 5216 3396 0.0579299126969349 0.0579299126969349
-10967 3396 8065 0.0454362838279539 0.0454362838279539
-10968 8065 5710 0.0481473121637486 0.0481473121637486
-10969 5710 8066 0.0449725321072065 0.0449725321072065
-10970 8066 7433 0.0497100835030792 0.0497100835030792
-10971 7433 8069 0.0438793771122388 0.0438793771122388
-10972 8069 7182 0.0471375837035957 0.0471375837035957
-20567 10854 10857 0.225655121951984 0.225655121951984
-10973 7182 8070 0.0452974861696144 0.0452974861696144
-10974 8070 8071 0.0479228077199932 0.0479228077199932
-10975 8071 8072 0.0470353472529161 0.0470353472529161
-10976 8072 1097 0.0443841816938638 0.0443841816938638
-10978 8073 5318 0.014674630653103 0.014674630653103
-10979 5318 2905 0.0312080465120251 0.0312080465120251
-10980 2905 7145 0.104770590384922 0.104770590384922
-10981 7145 5123 0.105925863098076 0.105925863098076
-10982 5123 4737 0.104660211196924 0.104660211196924
-10983 4737 6783 0.106266768581811 0.106266768581811
-10984 6783 7367 0.10603565613408 0.10603565613408
-12610 8772 8773 0.0502119000696978 0.0502119000696978
-10987 3133 3905 0.108335751010408 0.108335751010408
-10988 3905 1043 0.106035430930181 0.106035430930181
-10989 1043 8074 0.0531930855223622 0.0531930855223622
-10990 8074 6278 0.0525006902367685 0.0525006902367685
-10991 6278 8075 0.105351603899057 0.105351603899057
-10992 8075 5007 0.100650315286722 0.100650315286722
-10993 5007 8076 0.0416106781167173 0.0416106781167173
-10995 8025 7689 0.0805451553909581 0.0805451553909581
-10996 7689 4508 0.0814563900003029 0.0814563900003029
-10997 4508 3466 0.0836603655346893 0.0836603655346893
-10998 3466 6023 0.0805527124085535 0.0805527124085535
-10999 6023 3872 0.0834734840918988 0.0834734840918988
-11000 3872 8080 0.0833038712417768 0.0833038712417768
-11002 3967 8081 0.0785869791186196 0.0785869791186196
-11004 6348 3039 0.0931730621198353 0.0931730621198353
-11005 3039 8080 0.190356710856614 0.190356710856614
-11006 8080 8082 0.0884015044030203 0.0884015044030203
-11008 6424 4647 0.0970252568524678 0.0970252568524678
-11009 4647 8083 0.151040975226462 0.151040975226462
-16204 9846 7728 0.404619504399153 0.404619504399153
-11010 4970 8084 0.141573509395187 0.141573509395187
-11012 6398 7450 0.0587460292912133 0.0587460292912133
-11013 7450 5682 0.0978645396723703 0.0978645396723703
-11014 5682 8085 0.19215729634673 0.19215729634673
-11015 8085 6825 0.00461462117405417 0.00461462117405417
-11016 6825 549 0.386380234242036 0.386380234242036
-11017 549 6259 0.219376470776871 0.219376470776871
-11018 6259 8086 0.305359073933419 0.305359073933419
-11019 8086 1485 0.202208842336051 0.202208842336051
-11023 8088 8089 0.0138986527527033 0.0138986527527033
-11024 8089 8090 0.00683010177656819 0.00683010177656819
-11025 8090 8091 0.110435202693889 0.110435202693889
-11026 7961 8092 0.198854876063874 0.198854876063874
-11028 5855 1340 0.201837936768745 0.201837936768745
-11029 1340 8094 0.205566060887405 0.205566060887405
-11030 8094 4699 0.204173926089909 0.204173926089909
-11031 4699 8095 0.200461574437924 0.200461574437924
-11032 8095 8096 0.201918867294297 0.201918867294297
-11033 8096 6823 0.198988761465987 0.198988761465987
-11034 6823 772 0.204865532850049 0.204865532850049
-11036 6007 6252 0.210749028817316 0.210749028817316
-11037 6252 8097 0.20159640654511 0.20159640654511
-11039 6091 8098 0.0302498178580294 0.0302498178580294
-11040 8098 8099 0.0194131905433523 0.0194131905433523
-11041 8099 6924 0.166900367789548 0.166900367789548
-11042 6924 8100 0.161859559583179 0.161859559583179
-11043 8100 1241 0.0380629815604356 0.0380629815604356
-11045 6980 7942 0.133638145181839 0.133638145181839
-11046 7942 5338 0.0765467348148991 0.0765467348148991
-11048 5442 7919 0.212135491175046 0.212135491175046
-11049 7919 4410 0.19312496970157 0.19312496970157
-11050 4410 8103 0.226886968788061 0.226886968788061
-11051 8103 4283 0.17035467585884 0.17035467585884
-11053 8104 7854 0.0946426330892721 0.0946426330892721
-11054 7854 8105 0.0433309511619061 0.0433309511619061
-11055 8106 6776 0.129541839197132 0.129541839197132
-11056 6776 6152 0.13334664352248 0.13334664352248
-11057 6152 3997 0.133550546612879 0.133550546612879
-11058 3997 7046 0.134234793318191 0.134234793318191
-11059 7046 7376 0.132775137258175 0.132775137258175
-11060 7376 3435 0.135417405491425 0.135417405491425
-11063 7764 5715 0.0517371191288579 0.0517371191288579
-11064 5715 8107 0.0482057757930101 0.0482057757930101
-11065 8107 7435 0.0500858095958938 0.0500858095958938
-11066 7435 8108 0.0493949795014098 0.0493949795014098
-11067 8108 7174 0.049625706970036 0.049625706970036
-11068 7174 6739 0.0493949818685724 0.0493949818685724
-11069 6739 7789 0.0481559013551591 0.0481559013551591
-11070 7789 6645 0.0506327285203027 0.0506327285203027
-11071 6645 1136 0.0491201558695857 0.0491201558695857
-11072 1136 6995 0.0494363433732341 0.0494363433732341
-11073 6995 7503 0.049590164320003 0.049590164320003
-11074 7503 8109 0.100703299932673 0.100703299932673
-11075 8109 7480 0.0534769030186113 0.0534769030186113
-11076 7480 5580 0.0516905707687601 0.0516905707687601
-11077 5580 8110 0.0497706020063474 0.0497706020063474
-11078 8110 8111 0.0487450776836639 0.0487450776836639
-11079 8111 8112 0.694365013204936 0.694365013204936
-11080 1262 4539 0.0997555409236608 0.0997555409236608
-11081 4539 6285 0.098678051142926 0.098678051142926
-11083 2717 8113 0.100251109237605 0.100251109237605
-11085 8114 8115 0.096187670432143 0.096187670432143
-11086 8115 5626 0.201348891867615 0.201348891867615
-11088 2507 8116 0.0493483893872719 0.0493483893872719
-11089 8116 1238 0.100702597753866 0.100702597753866
-11090 1238 4792 0.032813432065695 0.032813432065695
-11091 4792 4812 0.0677278405661894 0.0677278405661894
-11092 4812 2152 0.0672921980026174 0.0672921980026174
-11093 2152 2179 0.0344341477791983 0.0344341477791983
-11094 2179 6304 0.100339028034619 0.100339028034619
-11095 6304 6426 0.101616906343387 0.101616906343387
-11096 6426 5344 0.101029409154815 0.101029409154815
-11097 5344 4640 0.0949596649493475 0.0949596649493475
-11098 4640 1261 0.0990622828589398 0.0990622828589398
-11100 3674 8117 0.125664760723522 0.125664760723522
-11101 8117 8118 0.0959168081132613 0.0959168081132613
-11102 8118 8119 0.126940211454871 0.126940211454871
-11103 8119 8120 0.01117909521949 0.01117909521949
-11104 8120 2680 0.0506435066002237 0.0506435066002237
-11105 2680 7576 0.0851117723335375 0.0851117723335375
-11106 7576 7833 0.0050110745435388 0.0050110745435388
-16206 5823 7210 0.206033080289906 0.206033080289906
-11107 7833 8121 0.0770500763169566 0.0770500763169566
-11108 8121 8035 0.0465513466723509 0.0465513466723509
-11110 807 8122 0.0835494437055617 0.0835494437055617
-11111 8122 8123 0.0673397864842803 0.0673397864842803
-11112 8123 3017 0.0101257363562013 0.0101257363562013
-11114 8124 8125 0.0101518907891953 0.0101518907891953
-11115 8125 2367 0.124673068713839 0.124673068713839
-11116 2367 8126 0.113318754907998 0.113318754907998
-11117 8126 1826 0.2011636326138 0.2011636326138
-11119 8127 8128 0.150025905824831 0.150025905824831
-11121 2887 8129 0.081938792894379 0.081938792894379
-11122 8129 8130 0.106964546123147 0.106964546123147
-11123 8130 4728 0.104978647949955 0.104978647949955
-11124 4728 6795 0.108689532522494 0.108689532522494
-11125 6795 7347 0.102216150252819 0.102216150252819
-11126 7347 5393 0.105889579896167 0.105889579896167
-11127 5393 8131 0.054562518485416 0.054562518485416
-11128 8131 8132 0.0481675689920574 0.0481675689920574
-11129 8132 3895 0.109975096473535 0.109975096473535
-11130 3895 1027 0.10512607647723 0.10512607647723
-11131 1027 8133 0.0540856357592879 0.0540856357592879
-12777 8831 8832 0.188959131880304 0.188959131880304
-11133 6270 8134 0.0524343047299347 0.0524343047299347
-11134 8134 8135 0.0535628703960502 0.0535628703960502
-11136 8136 8137 0.085310565822113 0.085310565822113
-11137 8137 6283 0.0924164471878071 0.0924164471878071
-11138 6283 8138 0.0880043396162394 0.0880043396162394
-11139 8138 8139 0.093883258506383 0.093883258506383
-11140 8139 3142 0.0916816056478044 0.0916816056478044
-11141 3142 5416 0.0909467644852468 0.0909467644852468
-11142 5416 8140 0.0909305385237858 0.0909305385237858
-11144 3154 4972 0.0951253779669951 0.0951253779669951
-11145 4972 8141 0.159341748119657 0.159341748119657
-11147 8142 7088 0.0975513520982515 0.0975513520982515
-11148 7088 971 0.0957796137604222 0.0957796137604222
-11149 971 7402 0.0550171923708008 0.0550171923708008
-11150 7402 5289 0.0484207753056408 0.0484207753056408
-11152 3320 8143 0.077853024278325 0.077853024278325
-11153 8143 5756 0.0805728425443714 0.0805728425443714
-11154 5756 7328 0.0873058149168626 0.0873058149168626
-11155 7328 2087 0.0932446680916279 0.0932446680916279
-12803 4082 3763 0.178907695562899 0.178907695562899
-11158 4115 4117 0.0440125760632801 0.0440125760632801
-11159 4117 6504 0.0374084190760855 0.0374084190760855
-11160 6504 6677 0.044394894025319 0.044394894025319
-11161 6677 8029 0.0937961823239111 0.0937961823239111
-11162 8029 8144 0.0511329046048641 0.0511329046048641
-11163 8144 8145 0.0135266374241744 0.0135266374241744
-11165 4223 1001 0.0531658581374023 0.0531658581374023
-11167 4374 2855 0.170827518580558 0.170827518580558
-11169 8146 4313 0.17183605887504 0.17183605887504
-11171 5444 7921 0.207916650376417 0.207916650376417
-11172 7921 4408 0.197533961318481 0.197533961318481
-11174 8147 644 0.13870723980062 0.13870723980062
-11175 644 7273 0.132830481063153 0.132830481063153
-11176 7273 1992 0.0923486278054484 0.0923486278054484
-11177 1992 1976 0.0346172149199892 0.0346172149199892
-11178 1976 4591 0.135026001443702 0.135026001443702
-11179 4591 6478 0.132622992610531 0.132622992610531
-12836 8855 8856 0.0453127355156614 0.0453127355156614
-11180 6478 2462 0.14279254357733 0.14279254357733
-11182 8148 8149 0.201096301426274 0.201096301426274
-11183 8149 8150 0.201154462707023 0.201154462707023
-11185 2461 5905 0.204782750962282 0.204782750962282
-11186 5905 8151 0.200573430726899 0.200573430726899
-11187 8151 790 0.199941729347635 0.199941729347635
-11188 790 3583 0.202642621733606 0.202642621733606
-11189 3583 4354 0.202475015345548 0.202475015345548
-11190 4354 8152 0.200309115545572 0.200309115545572
-11191 8152 3057 0.206933046688651 0.206933046688651
-11192 3057 8153 0.186611026973769 0.186611026973769
-11194 1060 8154 0.173008298211734 0.173008298211734
-11195 8154 8155 0.177900871903465 0.177900871903465
-11196 8155 8156 0.167407375878646 0.167407375878646
-11197 8156 4775 0.251673348312152 0.251673348312152
-11198 4775 6553 0.132857734263153 0.132857734263153
-11199 6553 8157 0.106438324963657 0.106438324963657
-11201 2232 5133 0.19052148019247 0.19052148019247
-11202 5133 4902 0.0151263568070176 0.0151263568070176
-11203 4902 6619 0.197484990473566 0.197484990473566
-11205 8158 8159 0.20585122765193 0.20585122765193
-11207 8160 8161 0.016887203978 0.016887203978
-11221 106 61 0.00533283632570931 0.00533283632570931
-11222 61 65 0.207145778882675 0.207145778882675
-11224 103 8170 0.0169041191858478 0.0169041191858478
-11225 8170 8171 0.361108877807587 0.361108877807587
-11226 8171 8172 0.190446564346409 0.190446564346409
-11228 8173 8174 0.0754029121625499 0.0754029121625499
-11229 8174 8175 0.417052793540933 0.417052793540933
-11231 8176 8177 0.0299391686417842 0.0299391686417842
-11232 8177 8178 0.202215537578589 0.202215537578589
-11233 8178 8179 0.11808571362223 0.11808571362223
-11234 8179 8163 0.126818785158071 0.126818785158071
-11236 4228 8181 0.209470643186114 0.209470643186114
-11269 4227 8200 0.197818013323833 0.197818013323833
-11237 8181 65 0.190124873120192 0.190124873120192
-11238 65 8172 0.00592368117466438 0.00592368117466438
-11239 8172 8178 0.446545243407564 0.446545243407564
-12886 8876 655 0.00596005420121878 0.00596005420121878
-11242 8183 8184 0.228538005170478 0.228538005170478
-11245 8162 8186 0.154667884886688 0.154667884886688
-11246 8186 8187 0.175562487769928 0.175562487769928
-11249 3633 8188 0.0150923041998694 0.0150923041998694
-11250 8188 8189 0.270579217097142 0.270579217097142
-11251 8189 8176 0.0989590805052705 0.0989590805052705
-11253 8163 3643 0.149826975112258 0.149826975112258
-11255 8190 1804 0.201671276037755 0.201671276037755
-11257 8191 8192 0.0154162495075233 0.0154162495075233
-11258 8192 8193 0.181517364616001 0.181517364616001
-11259 8193 8194 0.180264399151985 0.180264399151985
-11261 8181 3550 0.192378625445026 0.192378625445026
-11264 8186 8197 0.16597516800592 0.16597516800592
-11265 8197 8198 0.19583924016197 0.19583924016197
-11267 8199 8197 0.123986592502342 0.123986592502342
-11271 8194 8171 0.202821007714315 0.202821007714315
-11272 8171 8195 0.195495736534207 0.195495736534207
-11273 8195 8201 0.207035429354564 0.207035429354564
-11275 8202 8174 0.0167300114490718 0.0167300114490718
-11277 8198 8167 0.130702597640292 0.130702597640292
-11278 8167 8203 0.122618976220882 0.122618976220882
-11279 8203 8204 0.327046093817032 0.327046093817032
-11280 4228 4229 0.198835732908948 0.198835732908948
-11281 4229 8205 0.301334691508365 0.301334691508365
-11282 8206 8190 0.113799565910968 0.113799565910968
-11284 8201 4227 0.0154895076655846 0.0154895076655846
-11286 8207 8200 0.0930040479254132 0.0930040479254132
-11288 8193 8184 0.208283527691618 0.208283527691618
-11316 5155 2238 0.0837223321108041 0.0837223321108041
-11289 8184 8189 0.18616179415052 0.18616179415052
-11291 3257 8208 0.321455747501831 0.321455747501831
-11293 443 8209 0.110751336507506 0.110751336507506
-11294 392 8179 0.178734728363983 0.178734728363983
-11296 8162 6291 0.216060929512084 0.216060929512084
-11297 6291 7342 0.196043159951137 0.196043159951137
-11645 8348 6433 0.104796073662296 0.104796073662296
-11299 7342 5274 0.233799434282417 0.233799434282417
-11300 61 3550 0.201334976523304 0.201334976523304
-11301 3550 4229 0.200151526253302 0.200151526253302
-11303 5279 3162 0.0990447395902117 0.0990447395902117
-11304 3162 4979 0.101293558978732 0.101293558978732
-11305 4979 8126 0.0993695918525221 0.0993695918525221
-11306 8126 4335 0.0910331896522206 0.0910331896522206
-11307 4335 8210 0.0476841899874069 0.0476841899874069
-11308 8210 5040 0.0521232799197054 0.0521232799197054
-11309 5040 8005 0.0976580173278249 0.0976580173278249
-11310 8005 4307 0.0466427658725356 0.0466427658725356
-11311 4307 995 0.052631404385892 0.052631404385892
-11313 8211 5951 0.199050744316133 0.199050744316133
-11314 5951 5143 0.0913688712241713 0.0913688712241713
-11315 5143 5155 0.025420878561629 0.025420878561629
-11317 2238 4911 0.203010994943857 0.203010994943857
-11318 4911 6611 0.201886473833407 0.201886473833407
-11319 6611 8212 0.197101479655197 0.197101479655197
-11320 8212 8213 0.206955997470903 0.206955997470903
-11323 5950 5142 0.147533492116586 0.147533492116586
-11326 2237 4910 0.20422309503448 0.20422309503448
-11327 4910 6612 0.200274596012582 0.200274596012582
-11328 6612 8215 0.196974435405611 0.196974435405611
-11329 8215 8216 0.208072957327714 0.208072957327714
-11331 7959 8217 0.0106613346433968 0.0106613346433968
-11337 289 8219 0.0101386145536838 0.0101386145536838
-11338 8219 4483 0.0263974796072716 0.0263974796072716
-11340 8220 289 0.116841869555958 0.116841869555958
-11483 8221 8222 0.0466544327533727 0.0466544327533727
-11342 8223 7906 0.0355112223964134 0.0355112223964134
-11343 7906 4187 0.0959478466054884 0.0959478466054884
-11344 4187 8224 0.108554994700497 0.108554994700497
-11345 8224 2512 0.0267513344361619 0.0267513344361619
-11346 2512 6726 0.134329958691173 0.134329958691173
-11347 6726 8226 0.0541066682112551 0.0541066682112551
-11348 8226 1754 0.0582360854290831 0.0582360854290831
-11352 8227 8228 0.0477813036978224 0.0477813036978224
-11353 8228 2164 0.0100092856224142 0.0100092856224142
-11354 2164 8229 0.117341992338054 0.117341992338054
-11355 8229 6417 0.132790064578642 0.132790064578642
-11356 6417 6925 0.066680142142332 0.066680142142332
-11357 6925 4623 0.0658013116163711 0.0658013116163711
-11358 4623 1242 0.132924383309181 0.132924383309181
-11359 1242 8230 0.117419950970456 0.117419950970456
-11360 8230 2709 0.0877593926636965 0.0877593926636965
-11361 2709 2723 0.0586886121966142 0.0586886121966142
-11362 2723 8231 0.126334352112189 0.126334352112189
-11363 8231 8232 0.00800071585537006 0.00800071585537006
-11364 8232 8233 0.00985605768408299 0.00985605768408299
-11368 8223 8219 0.0801446034429079 0.0801446034429079
-11374 8234 8235 0.161648892640997 0.161648892640997
-11375 8235 8236 0.12616333160407 0.12616333160407
-11379 4843 910 0.143586236704503 0.143586236704503
-16194 9844 7725 1.4119245996206 1.4119245996206
-11388 2064 8243 0.0180732464676321 0.0180732464676321
-11389 8243 8244 0.307196973753055 0.307196973753055
-11392 8246 3316 0.0456634204130967 0.0456634204130967
-11394 6201 6945 0.172713645832468 0.172713645832468
-11395 6945 8138 0.203649557134895 0.203649557134895
-11396 8138 2880 0.164233861501064 0.164233861501064
-11398 6200 6944 0.169916988893137 0.169916988893137
-11399 6944 8139 0.203898136987997 0.203898136987997
-11400 8139 2879 0.160611633174386 0.160611633174386
-11401 2879 6408 0.0322091251783491 0.0322091251783491
-11402 6408 6412 0.266159968303504 0.266159968303504
-11403 6412 8247 0.0505479778201866 0.0505479778201866
-11407 6190 6948 0.200111149085838 0.200111149085838
-11408 6948 8142 0.198760931377031 0.198760931377031
-11409 8142 2864 0.201908008890848 0.201908008890848
-11412 8249 8067 0.737441419701283 0.737441419701283
-11424 8079 8250 0.738983904805809 0.738983904805809
-11431 412 415 0.636538521199656 0.636538521199656
-18912 10390 10391 0.0580503615423655 0.0580503615423655
-11453 8262 8263 0.292162593230546 0.292162593230546
-11468 781 8271 0.782578824666181 0.782578824666181
-11597 8330 8331 0.0435245851176098 0.0435245851176098
-11469 8272 8270 0.782084992370784 0.782084992370784
-11471 1610 1244 0.0543175525667992 0.0543175525667992
-11472 1244 8273 0.0533400242428221 0.0533400242428221
-11473 8273 8274 0.0526029519682926 0.0526029519682926
-11474 8274 8275 0.0534350213865012 0.0534350213865012
-11476 8276 1610 0.0663295545530221 0.0663295545530221
-11478 1610 8277 0.135789656985465 0.135789656985465
-11480 7861 8278 0.0143942343868779 0.0143942343868779
-11481 8278 7581 0.0343415060903181 0.0343415060903181
-11482 7581 8221 0.0532138886249367 0.0532138886249367
-11484 8222 5964 0.00591714471910066 0.00591714471910066
-11485 5964 8279 0.00703516905841087 0.00703516905841087
-11486 8279 3001 0.0966235655424771 0.0966235655424771
-11488 8275 7561 0.103690392766705 0.103690392766705
-11489 7561 8280 0.0558620890554655 0.0558620890554655
-11490 8280 6185 0.0505017539528047 0.0505017539528047
-11493 8282 8283 0.101387037651418 0.101387037651418
-11494 8283 8284 0.102270654549379 0.102270654549379
-11495 8284 8285 0.10797805598011 0.10797805598011
-11496 8285 8286 0.106400672091098 0.106400672091098
-11497 8286 4392 0.102247824152268 0.102247824152268
-11498 4392 8287 0.0166274126542335 0.0166274126542335
-11499 8287 8288 0.0799445865529155 0.0799445865529155
-11500 8288 3008 0.023689428581565 0.023689428581565
-11501 3008 8289 0.0297886059757376 0.0297886059757376
-11505 8290 8291 0.051999610902965 0.051999610902965
-11506 8291 8292 0.0471972516257623 0.0471972516257623
-11507 8292 8293 0.00657484491051097 0.00657484491051097
-11508 8293 6184 0.103933630763566 0.103933630763566
-11509 6184 7562 0.106067817024884 0.106067817024884
-11510 7562 8294 0.105991654619724 0.105991654619724
-11512 8295 8296 0.0523765388441753 0.0523765388441753
-11522 8297 8298 0.429589849820924 0.429589849820924
-11537 6093 8302 0.0171793049902436 0.0171793049902436
-11539 8303 8304 0.00530856583912826 0.00530856583912826
-11541 2195 8305 0.128463648918522 0.128463648918522
-11543 8306 8307 0.0111673306658244 0.0111673306658244
-11545 8308 8306 0.0470759818626725 0.0470759818626725
-11547 8309 8310 0.0336302381688336 0.0336302381688336
-11549 8311 8312 0.0219555493879181 0.0219555493879181
-11550 8312 8313 0.036241706253738 0.036241706253738
-11598 8331 7782 0.0493369824555625 0.0493369824555625
-11551 8313 8314 0.0512913124797426 0.0512913124797426
-11552 8314 8315 0.107868186928524 0.107868186928524
-11553 8315 8316 0.223470506469832 0.223470506469832
-11554 8316 8317 0.211788929267968 0.211788929267968
-11555 8317 6963 0.0143636308232266 0.0143636308232266
-16197 7207 1788 0.198027086450295 0.198027086450295
-11556 6963 2151 0.0672032541987901 0.0672032541987901
-11557 2151 8318 0.127422890827039 0.127422890827039
-11563 8321 5670 0.0510922996821663 0.0510922996821663
-11564 5670 8319 0.0512128921942442 0.0512128921942442
-11565 8319 7031 0.0489988317743493 0.0489988317743493
-13192 2925 5307 0.0991225747078309 0.0991225747078309
-17794 8402 10178 0.0874671474005437 0.0874671474005437
-11583 8323 8324 0.0415122975666244 0.0415122975666244
-11585 8325 8326 0.0105737020216599 0.0105737020216599
-11586 8326 8327 0.0170186899048993 0.0170186899048993
-11587 8327 4030 0.059373245074661 0.059373245074661
-11588 4030 8328 0.00887102858910589 0.00887102858910589
-11589 8328 7033 0.192077028988682 0.192077028988682
-11590 7033 3414 0.20009224997208 0.20009224997208
-11591 3414 7634 0.0490496792565584 0.0490496792565584
-11592 7634 5699 0.0501609282125079 0.0501609282125079
-11593 5699 8329 0.0491062363102631 0.0491062363102631
-11594 8329 7426 0.0512345906571307 0.0512345906571307
-11595 7426 7167 0.100906650593457 0.100906650593457
-11596 7167 8330 0.0074706340310152 0.0074706340310152
-11601 1125 8333 0.0515421912286004 0.0515421912286004
-11602 8333 7499 0.0491232128122514 0.0491232128122514
-11603 7499 6382 0.0528674106807856 0.0528674106807856
-11604 6382 3844 0.0491757077428548 0.0491757077428548
-11605 3844 8336 0.0505763419832581 0.0505763419832581
-11606 8336 5560 0.0511234189065501 0.0511234189065501
-11607 5560 7536 0.078259792036463 0.078259792036463
-17795 10178 10179 0.00714983889336217 0.00714983889336217
-11608 7536 8337 0.710353127144862 0.710353127144862
-11615 8339 8340 0.0545607270452329 0.0545607270452329
-11616 8340 6778 0.0500886204125654 0.0500886204125654
-11617 6778 1543 0.044749974690185 0.044749974690185
-11618 1543 7913 0.0484257128218018 0.0484257128218018
-11619 7913 1232 0.0498960080732329 0.0498960080732329
-11620 1232 6138 0.0513577550981739 0.0513577550981739
-11621 6138 1234 0.0484184731965446 0.0484184731965446
-11622 1234 4025 0.049897443897038 0.049897443897038
-11624 8341 6746 0.131938356933677 0.131938356933677
-11625 6746 6146 0.134278510793599 0.134278510793599
-11626 6146 4020 0.131808341418281 0.131808341418281
-11627 4020 7024 0.13680573147125 0.13680573147125
-11628 7024 7394 0.133543322276702 0.133543322276702
-11629 7394 3403 0.129241253411212 0.129241253411212
-11631 4656 1278 0.11609492718799 0.11609492718799
-11633 4529 8342 0.13081541679387 0.13081541679387
-11634 8342 8343 0.131875462531589 0.131875462531589
-11636 1275 4561 0.135792686790169 0.135792686790169
-11637 4561 8344 0.129597362082905 0.129597362082905
-11638 8344 8345 0.132615292246902 0.132615292246902
-11654 8351 8352 0.00642310935412446 0.00642310935412446
-11656 8354 3585 0.00948998635035479 0.00948998635035479
-11658 8355 7036 0.189514043057238 0.189514043057238
-11661 3420 7662 0.0473953664812579 0.0473953664812579
-11662 7662 5701 0.051310070537927 0.051310070537927
-11663 5701 8356 0.0493288418218244 0.0493288418218244
-11664 8356 7428 0.0514646959507586 0.0514646959507586
-11665 7428 7170 0.101185693406291 0.101185693406291
-11666 7170 8357 0.0511732963069457 0.0511732963069457
-11667 8357 7785 0.0488740378204359 0.0488740378204359
-11669 8358 8359 0.0429199500385996 0.0429199500385996
-11670 8359 1126 0.0542934514543922 0.0542934514543922
-11671 1126 8361 0.0465752610792189 0.0465752610792189
-11672 8361 7500 0.0458657856618734 0.0458657856618734
-11673 7500 6383 0.0540969092476656 0.0540969092476656
-11674 6383 3845 0.0488658545954006 0.0488658545954006
-11675 3845 8362 0.0512974137325796 0.0512974137325796
-11676 8362 5562 0.0492074321979192 0.0492074321979192
-11677 5562 8363 0.0405073414501016 0.0405073414501016
-11678 8363 7537 0.0387636388049137 0.0387636388049137
-11679 7537 8364 0.709659016245144 0.709659016245144
-11680 533 532 0.177767664549368 0.177767664549368
-11681 532 8365 0.019932032746647 0.019932032746647
-11683 8366 2195 0.0764354088651933 0.0764354088651933
-11712 3383 8367 0.106809468593159 0.106809468593159
-11713 8367 8368 0.0971987897456675 0.0971987897456675
-11714 8368 8369 0.0991386674985246 0.0991386674985246
-11717 5295 6973 0.135215470337054 0.135215470337054
-11718 6973 8371 0.00923487504976077 0.00923487504976077
-11719 8371 8372 0.0216052571390285 0.0216052571390285
-11720 8372 16 0.105179593848414 0.105179593848414
-11721 16 6385 0.131720726068438 0.131720726068438
-11722 6385 8373 0.136425162652677 0.136425162652677
-11723 8373 8374 0.133357418298716 0.133357418298716
-11725 8375 5538 0.102551146645578 0.102551146645578
-11726 5538 2406 0.101276420369131 0.101276420369131
-11727 2406 4291 0.0994536245434588 0.0994536245434588
-11728 4291 8376 0.0498495835403536 0.0498495835403536
-11729 8376 8377 0.0555205772000376 0.0555205772000376
-11730 8377 7717 0.202770146499174 0.202770146499174
-11731 7717 2980 0.203558742671124 0.203558742671124
-11733 6381 7626 0.0677965571067337 0.0677965571067337
-11734 7626 8378 0.0657902652889389 0.0657902652889389
-11736 3813 8379 0.0683672879873519 0.0683672879873519
-11737 8379 7491 0.0530440410997852 0.0530440410997852
-11738 7491 3832 0.0868122883126915 0.0868122883126915
-11740 8129 8380 0.134532326319759 0.134532326319759
-11741 8380 8382 0.00458704251135175 0.00458704251135175
-11743 8383 8384 0.136207849444979 0.136207849444979
-11744 8384 7838 0.138328826392976 0.138328826392976
-11746 8385 8386 0.0871147692827014 0.0871147692827014
-11749 8389 8390 0.0947169874364547 0.0947169874364547
-19614 10514 10587 0.0689139357560502 0.0689139357560502
-11751 8391 4386 0.0534420102551264 0.0534420102551264
-11752 4386 8392 0.0520924012173649 0.0520924012173649
-11753 8392 8393 0.0473152332925311 0.0473152332925311
-11754 8393 8394 0.00593400942031918 0.00593400942031918
-11755 8394 8395 0.0526072167549377 0.0526072167549377
-11756 8395 8396 0.0535245842073366 0.0535245842073366
-11757 8396 8397 0.0520127953812383 0.0520127953812383
-11758 8397 8398 0.0525440381176666 0.0525440381176666
-11759 8398 8399 0.105725944401461 0.105725944401461
-11760 8399 8400 0.0963534079842441 0.0963534079842441
-11761 8400 8401 0.00721402202643277 0.00721402202643277
-11762 8401 8402 0.0642819932248178 0.0642819932248178
-11763 8402 6180 0.0440229088580127 0.0440229088580127
-11764 6180 3304 0.105719811244021 0.105719811244021
-11765 3304 8404 0.104473728049028 0.104473728049028
-11776 2683 5360 0.148134497863423 0.148134497863423
-11779 8408 8409 0.0170504242210171 0.0170504242210171
-11780 8409 8410 0.0301331300599118 0.0301331300599118
-11781 8410 8408 0.024630163522097 0.024630163522097
-11786 8411 7068 0.119279864672347 0.119279864672347
-11787 7068 5513 0.148575970390717 0.148575970390717
-11788 5513 4445 0.14563348668729 0.14563348668729
-11795 8413 543 0.028789081158834 0.028789081158834
-11800 8038 2689 0.14574049201504 0.14574049201504
-11801 2689 8392 0.146364813323007 0.146364813323007
-11810 8316 8410 0.0688632882143238 0.0688632882143238
-11818 8318 8421 0.163109524565458 0.163109524565458
-11820 2202 8422 0.0636527332062032 0.0636527332062032
-11827 8425 8426 0.235001983383898 0.235001983383898
-11829 8427 2187 0.0976945121262096 0.0976945121262096
-11830 2187 8428 0.113051166751879 0.113051166751879
-11832 8429 8427 0.106790392513668 0.106790392513668
-11836 8432 8433 0.316135432263608 0.316135432263608
-11838 8434 8435 0.0739062863270344 0.0739062863270344
-16014 9785 9166 0.0737839272607517 0.0737839272607517
-11840 8436 8437 0.305296163280187 0.305296163280187
-11842 8438 8439 0.0899401823641934 0.0899401823641934
-11843 8439 8440 0.0855827793815302 0.0855827793815302
-11845 8441 533 0.0890672230330435 0.0890672230330435
-11847 8325 3752 0.00830034500152871 0.00830034500152871
-11848 3752 8442 0.100105658665385 0.100105658665385
-11849 8442 6773 0.103872958239997 0.103872958239997
-11850 6773 8303 0.0295834023794743 0.0295834023794743
-11851 8303 8443 0.122024126507826 0.122024126507826
-11854 8365 8445 0.12649848699983 0.12649848699983
-11856 8445 8446 0.0774789975708123 0.0774789975708123
-11858 6522 8447 0.124835406842481 0.124835406842481
-11860 8447 4244 0.0110439553261759 0.0110439553261759
-11861 4244 1787 0.20168643392703 0.20168643392703
-11862 1787 7206 0.198352393557477 0.198352393557477
-11863 7206 5819 0.204146640542909 0.204146640542909
-11864 5819 7724 0.196992932786583 0.196992932786583
-11865 7724 8448 0.0469826616672844 0.0469826616672844
-11866 8448 8449 1.1597652413984 1.1597652413984
-15932 1178 9158 0.281206093212011 0.281206093212011
-11868 529 476 0.196533269115043 0.196533269115043
-11869 476 8451 0.00692492598385206 0.00692492598385206
-11871 8452 8450 0.118857471050118 0.118857471050118
-11873 8446 8453 0.0472361723035857 0.0472361723035857
-11875 8453 1808 0.0616092600190724 0.0616092600190724
-11876 1808 8454 0.103675532542851 0.103675532542851
-11878 8455 8452 0.0832501988122618 0.0832501988122618
-11880 8456 8455 0.0488208935536257 0.0488208935536257
-11883 1807 8456 0.0645719953824934 0.0645719953824934
-11885 8454 8460 0.0468848260297017 0.0468848260297017
-11887 8460 8461 0.191542303309411 0.191542303309411
-11888 8461 8462 0.143814933384229 0.143814933384229
-11926 8479 7578 0.0514183930388008 0.0514183930388008
-11889 8462 8312 0.0813843178601785 0.0813843178601785
-11890 8312 8463 0.108687135880293 0.108687135880293
-11891 8463 8464 0.171307568098715 0.171307568098715
-11892 8464 7962 0.138415151415673 0.138415151415673
-11894 8465 8457 0.0468050869550622 0.0468050869550622
-11899 8468 3170 0.018103312819976 0.018103312819976
-11901 8469 8466 0.0123424922846296 0.0123424922846296
-11902 8466 8311 0.0903233113904637 0.0903233113904637
-11904 8470 8469 0.0396717564170432 0.0396717564170432
-11906 8296 8273 0.152532135373756 0.152532135373756
-11907 8273 5789 0.146346014371488 0.146346014371488
-11908 5789 4816 0.144635236179438 0.144635236179438
-11909 4816 8471 0.144945711618013 0.144945711618013
-11910 8471 8472 0.00337499193971306 0.00337499193971306
-13477 9099 9096 0.0859011649600223 0.0859011649600223
-11912 8473 8474 0.141151348464777 0.141151348464777
-11913 8474 8475 0.13279343346844 0.13279343346844
-11915 1346 8475 0.0349627710606267 0.0349627710606267
-11919 8313 8477 0.0691895872331652 0.0691895872331652
-11921 4846 8478 0.326789742990523 0.326789742990523
-11923 5031 6987 0.0623597305249406 0.0623597305249406
-11924 6987 5806 0.105799056021075 0.105799056021075
-11925 5806 8479 0.0532916983351864 0.0532916983351864
-11927 7578 8480 0.0539921866859616 0.0539921866859616
-11928 8480 8481 0.0438686505947476 0.0438686505947476
-11929 8481 5961 0.00656699811047763 0.00656699811047763
-11930 5961 8482 0.00665108194893408 0.00665108194893408
-11931 8482 3003 0.0997303043018087 0.0997303043018087
-11932 3003 4396 0.10605079021574 0.10605079021574
-11933 4396 8483 0.102726296828384 0.102726296828384
-11934 8483 8484 0.00648258609012086 0.00648258609012086
-11935 8484 8485 0.100141708737386 0.100141708737386
-11936 8485 8486 0.0275311475026058 0.0275311475026058
-11937 8486 8487 0.0265062604992808 0.0265062604992808
-11938 8487 8488 0.0523458198440316 0.0523458198440316
-11939 8488 8489 0.104751027795859 0.104751027795859
-11940 8489 8490 0.0990693987095691 0.0990693987095691
-11941 8490 8491 0.00745857832944624 0.00745857832944624
-11942 8491 8492 0.0518088588950486 0.0518088588950486
-11943 8492 6189 0.054888246037165 0.054888246037165
-11945 6632 7733 0.112596009055585 0.112596009055585
-12071 8507 3552 0.071078699522552 0.071078699522552
-11946 7733 8495 2.00712592676004 2.00712592676004
-11954 6568 4449 0.147875161573861 0.147875161573861
-11955 4449 5497 0.144351276811523 0.144351276811523
-11956 5497 7071 0.14871904829256 0.14871904829256
-11958 8501 8502 0.146058647776188 0.146058647776188
-11959 8502 8397 0.148207146508282 0.148207146508282
-11960 8397 2694 0.144837053832231 0.144837053832231
-11966 4737 8503 0.0843423130679838 0.0843423130679838
-11967 8399 5455 0.141833750205801 0.141833750205801
-11968 5455 2697 0.00495891013188563 0.00495891013188563
-11969 2697 8045 0.148003641728593 0.148003641728593
-11970 8045 6573 0.144311748140391 0.144311748140391
-11971 6573 4454 0.147824934616054 0.147824934616054
-11972 4454 5502 0.144725467857806 0.144725467857806
-11973 5502 7076 0.14772137009526 0.14772137009526
-11974 7076 2033 0.146029155751578 0.146029155751578
-11975 2033 5322 0.146208700799923 0.146208700799923
-11976 5322 631 0.145784380568713 0.145784380568713
-11977 631 6404 0.147332884437086 0.147332884437086
-11978 6404 2910 0.0722929712454625 0.0722929712454625
-11980 8504 8505 0.0580359403583064 0.0580359403583064
-11981 8505 6178 0.0499592014591395 0.0499592014591395
-11982 6178 8506 0.0514685264155668 0.0514685264155668
-11983 8506 8508 0.0359450086839816 0.0359450086839816
-11985 8509 8491 0.145477011516465 0.145477011516465
-11986 8491 6711 0.147675146026861 0.147675146026861
-11987 6711 8510 0.0119577509852376 0.0119577509852376
-11999 7079 2035 0.146591134901683 0.146591134901683
-12000 2035 8511 0.144080341921709 0.144080341921709
-12001 8506 6577 0.292638121021149 0.292638121021149
-12013 8514 7905 0.14392744613234 0.14392744613234
-12014 7905 8224 0.144594704272466 0.144594704272466
-12015 8224 2513 0.0408485952047996 0.0408485952047996
-12017 8223 4514 0.129566346086565 0.129566346086565
-12018 4514 5236 0.132336483238921 0.132336483238921
-12019 5236 6888 0.137583446360535 0.137583446360535
-12020 6888 8515 0.134749292102011 0.134749292102011
-18562 2839 2837 0.0398814314105002 0.0398814314105002
-12021 8515 1670 0.131131933535458 0.131131933535458
-12022 1670 8516 0.137025514768393 0.137025514768393
-12023 8516 2451 0.140387467109701 0.140387467109701
-12024 2451 3220 0.132796169496021 0.132796169496021
-12025 3220 3241 0.0110949892633217 0.0110949892633217
-12026 3241 5742 0.122723226676881 0.122723226676881
-12027 5742 5734 0.0121046279679281 0.0121046279679281
-12028 5734 5519 0.122276751203955 0.122276751203955
-12029 5519 5518 0.0183360434030607 0.0183360434030607
-12030 5518 6453 0.115919443239594 0.115919443239594
-12031 6453 8519 0.0186206290164017 0.0186206290164017
-12032 8519 6921 0.113511395757215 0.113511395757215
-12033 6921 6966 0.278590640144845 0.278590640144845
-12034 6966 2480 0.0421290693071181 0.0421290693071181
-12035 2480 2819 0.0832464241503531 0.0832464241503531
-12036 2819 1420 0.203808019181798 0.203808019181798
-12037 1420 1350 0.0610460440330561 0.0610460440330561
-12038 1350 386 0.0313326355302306 0.0313326355302306
-12039 386 8520 0.00828931624769023 0.00828931624769023
-12041 8521 8522 0.0528158272532374 0.0528158272532374
-12042 8522 8461 0.0240744692191342 0.0240744692191342
-12045 8524 8525 0.099226587437181 0.099226587437181
-12056 6652 7968 0.116416731661103 0.116416731661103
-13645 9155 9152 0.125537210877253 0.125537210877253
-12069 3016 8123 0.0144820950034519 0.0144820950034519
-12070 8123 8507 0.0310425416681892 0.0310425416681892
-12072 3552 4443 0.0963694960086714 0.0963694960086714
-12074 8536 8537 0.125429093404429 0.125429093404429
-12075 8537 8398 0.148732331324902 0.148732331324902
-12076 8398 2695 0.143717697009194 0.143717697009194
-12078 8043 6571 0.143486226041694 0.143486226041694
-15271 8458 8538 0.130887342573391 0.130887342573391
-12079 6571 4452 0.149648787475973 0.149648787475973
-12080 4452 5500 0.142780903948531 0.142780903948531
-12081 5500 7074 0.148102852377504 0.148102852377504
-12082 7074 2032 0.145681586591459 0.145681586591459
-12086 2886 7993 0.218441304114497 0.218441304114497
-12088 8130 8541 0.134523622254369 0.134523622254369
-12089 8541 8542 0.00481474032387871 0.00481474032387871
-12090 8542 8543 0.00504824966940074 0.00504824966940074
-12091 8543 8544 0.135980275793844 0.135980275793844
-12092 8544 7839 0.139416199289129 0.139416199289129
-12093 7839 819 0.136947671655105 0.136947671655105
-12094 819 3560 0.140872852825874 0.140872852825874
-12095 3560 5634 0.139405079534224 0.139405079534224
-12096 5634 4338 0.141217557097108 0.141217557097108
-12097 4338 6337 0.135602213042785 0.135602213042785
-12098 6337 3053 0.134723773393479 0.134723773393479
-12100 3691 8545 0.139072808044494 0.139072808044494
-12101 5485 8546 0.200596752868582 0.200596752868582
-12103 4888 8547 0.185876236918155 0.185876236918155
-12104 8547 5486 0.175599681021845 0.175599681021845
-12106 4889 8548 0.187588829795577 0.187588829795577
-12107 8548 5487 0.174192187356096 0.174192187356096
-12109 8549 8550 0.0264199145705686 0.0264199145705686
-12110 8550 5477 0.172910339815493 0.172910339815493
-12111 5477 8551 0.17777655236626 0.17777655236626
-12112 8551 8552 0.179401923989104 0.179401923989104
-12114 672 8553 0.00419226671708486 0.00419226671708486
-12116 8554 4600 0.174009465824247 0.174009465824247
-12117 4600 6497 0.141315269300352 0.141315269300352
-12118 6497 3685 0.0979207012351752 0.0979207012351752
-12119 3685 8132 0.140340825489325 0.140340825489325
-12120 8132 8555 0.134412189177842 0.134412189177842
-12121 8555 8556 0.00412533177852682 0.00412533177852682
-12122 8556 8557 0.00459814794721775 0.00459814794721775
-12123 8557 8558 0.132902025218854 0.132902025218854
-12124 8558 7841 0.138710880861165 0.138710880861165
-12125 7841 825 0.140880437202465 0.140880437202465
-12126 825 3566 0.136859579672601 0.136859579672601
-12127 3566 5637 0.14457832436944 0.14457832436944
-12128 5637 4341 0.139173250387063 0.139173250387063
-12129 4341 6340 0.137021300435373 0.137021300435373
-12130 6340 8560 0.107881318168938 0.107881318168938
-12131 2245 4879 0.176153654685445 0.176153654685445
-12132 4879 7358 0.24873496630677 0.24873496630677
-12133 7358 6786 0.0656034947664249 0.0656034947664249
-12134 6786 4878 0.0544981388589161 0.0544981388589161
-12135 4878 5942 0.524256212186461 0.524256212186461
-12136 5942 8561 0.0631406553785623 0.0631406553785623
-12137 8561 3127 0.0936118840285326 0.0936118840285326
-12138 3127 3131 0.0777309112767711 0.0777309112767711
-12139 3131 5914 0.112365280295693 0.112365280295693
-12140 5914 2245 0.331560162235425 0.331560162235425
-12142 8562 2334 2.72525423343991 2.72525423343991
-12144 7677 5980 0.0954252288299854 0.0954252288299854
-12145 5980 2129 0.0933556137052187 0.0933556137052187
-12146 2129 7520 0.0952025856529876 0.0952025856529876
-12147 7520 8563 0.0935887718802941 0.0935887718802941
-12148 8563 2270 0.0947410402071955 0.0947410402071955
-12149 2270 7011 0.0942715716828769 0.0942715716828769
-12150 7011 2766 0.0940480616870089 0.0940480616870089
-12151 2766 3353 0.0940568781185638 0.0940568781185638
-12152 3353 2010 0.0938087738322925 0.0938087738322925
-12153 2010 2020 0.00116816859457691 0.00116816859457691
-12154 2020 7597 0.0929046375775443 0.0929046375775443
-12155 7597 7260 0.0977180089067193 0.0977180089067193
-12156 7260 7607 0.0981798145414121 0.0981798145414121
-12157 7607 8148 0.0984109366674247 0.0984109366674247
-12158 8148 8566 0.099556755200234 0.099556755200234
-12159 8566 8567 0.0161715318927219 0.0161715318927219
-12165 7560 8570 0.0547324150634264 0.0547324150634264
-12166 8570 6187 0.0510334947129921 0.0510334947129921
-12167 6187 8571 0.106459447476842 0.106459447476842
-12168 8571 8572 0.00500250155273319 0.00500250155273319
-12169 8572 8573 0.102179560181125 0.102179560181125
-12171 8574 8575 0.108491319350075 0.108491319350075
-12172 8575 8576 0.100542104447219 0.100542104447219
-12173 8576 8577 0.00648974428476286 0.00648974428476286
-12174 8577 4394 0.10502201579173 0.10502201579173
-12175 4394 3006 0.104610459063575 0.104610459063575
-12176 3006 5958 0.107806604319072 0.107806604319072
-12177 5958 8578 0.00423483079275732 0.00423483079275732
-12178 8578 7577 0.0996748095395635 0.0996748095395635
-12179 7577 5809 0.11590556985698 0.11590556985698
-12181 5431 4429 0.103577041627779 0.103577041627779
-12182 4429 4040 0.0675516196999984 0.0675516196999984
-12183 4040 8579 0.0337698992215471 0.0337698992215471
-12184 8579 6027 0.102046173899402 0.102046173899402
-12185 6027 7864 0.042576537412 0.042576537412
-12186 7864 7863 0.0569874056816302 0.0569874056816302
-12187 7863 1834 0.10010879574602 0.10010879574602
-12188 1834 1828 0.0220165954761323 0.0220165954761323
-12189 1828 2629 0.0778176858176647 0.0778176858176647
-12190 2629 5364 0.0924919399829741 0.0924919399829741
-12191 5364 8580 0.0666180932686517 0.0666180932686517
-12192 8580 514 0.0427668694783733 0.0427668694783733
-12193 514 8581 0.0733005757458476 0.0733005757458476
-12194 8581 411 0.0548642593724076 0.0548642593724076
-12195 411 8582 0.0193916055385274 0.0193916055385274
-12200 8463 8583 0.030501567860775 0.030501567860775
-12202 8584 8585 0.0144536004398608 0.0144536004398608
-12203 8585 8586 0.0148984012969261 0.0148984012969261
-12204 8586 8587 0.0138457363467684 0.0138457363467684
-12206 7095 8584 0.00198726095451303 0.00198726095451303
-12208 8587 8588 0.0738864008587524 0.0738864008587524
-12209 8588 8088 0.0459979828668163 0.0459979828668163
-12211 8588 8088 0.0459979828668163 0.0459979828668163
-12213 7962 8589 0.0119871256203592 0.0119871256203592
-12219 2290 8595 0.0472264457525012 0.0472264457525012
-12224 8600 6960 0.0627185145557708 0.0627185145557708
-12225 6960 8590 0.111002569075664 0.111002569075664
-12226 8590 8601 0.0399166681864525 0.0399166681864525
-12227 8601 8602 0.0122006420704012 0.0122006420704012
-12229 8602 8601 0.0122006420704012 0.0122006420704012
-12231 8605 8606 0.0364944571667735 0.0364944571667735
-12232 8606 8607 0.0128764646733806 0.0128764646733806
-12233 8607 8608 0.0546695374625623 0.0546695374625623
-12234 8608 8585 0.00588263593176519 0.00588263593176519
-12238 6350 8610 0.0529261007223787 0.0529261007223787
-12276 2459 8630 0.034376801437 0.034376801437
-12278 8630 8631 0.0429012342669158 0.0429012342669158
-12279 8631 8478 0.0881202047420162 0.0881202047420162
-12280 8478 6349 0.0631900183412494 0.0631900183412494
-12281 6349 8610 0.106156240617891 0.106156240617891
-12282 8610 8633 0.00782193502715287 0.00782193502715287
-12283 8633 8235 0.439089917447406 0.439089917447406
-13838 2963 1284 0.0976236721102847 0.0976236721102847
-12291 8488 6708 0.146276219075305 0.146276219075305
-12292 6708 8574 0.146922373978856 0.146922373978856
-12293 8574 5780 0.145168342719135 0.145168342719135
-12294 5780 8284 0.145457218481639 0.145457218481639
-12295 8284 8635 0.147985754967018 0.147985754967018
-12296 8635 7895 0.145231730226047 0.145231730226047
-12297 7895 8636 0.145188764989583 0.145188764989583
-12298 8636 8536 0.0230398310291247 0.0230398310291247
-12300 8637 8638 0.051750923168378 0.051750923168378
-12306 8641 8642 0.0388526899017529 0.0388526899017529
-12322 8647 8648 0.0689932486013888 0.0689932486013888
-12324 8409 8649 0.174821115803257 0.174821115803257
-12330 8652 8653 0.0109021010822668 0.0109021010822668
-12370 127 8676 0.0230804767650593 0.0230804767650593
-13861 1773 4425 0.0478826481852338 0.0478826481852338
-12371 8676 127 0.0230804767650593 0.0230804767650593
-12374 8678 2814 0.00715247655230442 0.00715247655230442
-12375 2814 7853 0.0872240502720576 0.0872240502720576
-12379 552 3283 0.201374804580202 0.201374804580202
-12380 3283 439 0.0140574737901418 0.0140574737901418
-12381 439 440 0.131394781189403 0.131394781189403
-12383 8680 592 0.0279554969032489 0.0279554969032489
-12386 3930 5620 0.102308093785748 0.102308093785748
-12387 5620 3705 0.100376481944534 0.100376481944534
-12388 3705 710 0.100626287480694 0.100626287480694
-12389 710 8681 0.0994362797990831 0.0994362797990831
-12390 8681 8515 0.0993120225558452 0.0993120225558452
-12391 8515 4191 0.136253535658325 0.136253535658325
-12392 4191 2517 0.134250356653895 0.134250356653895
-12393 2517 6728 0.132309702657946 0.132309702657946
-12394 6728 4805 0.136509007433592 0.136509007433592
-12395 4805 8682 0.134957701338679 0.134957701338679
-12397 8683 433 0.845576760689761 0.845576760689761
-12398 433 481 1.45081348243216 1.45081348243216
-12399 481 8684 0.52437215594792 0.52437215594792
-12401 8685 8686 0.010167997865452 0.010167997865452
-12404 4154 4741 0.172602377991032 0.172602377991032
-12405 4741 6536 0.177057900654184 0.177057900654184
-12406 6536 8687 0.165392784618956 0.165392784618956
-12408 5170 6865 0.176928364472993 0.176928364472993
-12409 6865 3073 0.175467136201966 0.175467136201966
-12410 3073 8690 0.1637299437242 0.1637299437242
-12411 8690 8160 0.0198260554201283 0.0198260554201283
-12412 8160 8691 0.0330442022067904 0.0330442022067904
-12414 8692 8693 0.174036627821078 0.174036627821078
-12415 8693 8694 0.176955606262412 0.176955606262412
-12416 8694 8695 0.169605643175659 0.169605643175659
-12417 8695 4774 0.249824848381595 0.249824848381595
-12418 4774 6552 0.130776357701309 0.130776357701309
-12419 6552 8696 0.13038749521243 0.13038749521243
-12420 8696 8566 0.0104649837792038 0.0104649837792038
-12421 8566 8697 0.196337242565984 0.196337242565984
-13908 6946 8137 0.20217075396909 0.20217075396909
-12422 8697 3765 0.201163077899324 0.201163077899324
-12423 3765 5944 0.202700667134599 0.202700667134599
-12424 5944 2231 0.203264325905827 0.203264325905827
-12425 2231 4900 0.203310133896795 0.203310133896795
-12426 4900 8699 0.223846600901437 0.223846600901437
-12427 8699 8700 0.179880034662439 0.179880034662439
-12428 8700 8701 0.204289810782798 0.204289810782798
-12429 8701 643 0.139830079927305 0.139830079927305
-12430 643 7272 0.132835494541237 0.132835494541237
-12431 7272 1993 0.110816863894031 0.110816863894031
-12432 1993 1977 0.01986880052865 0.01986880052865
-12433 1977 4590 0.131129399902762 0.131129399902762
-12434 4590 6477 0.129388315999052 0.129388315999052
-12435 6477 2460 0.143087746743813 0.143087746743813
-12436 2460 5904 0.206205054401277 0.206205054401277
-12437 5904 8702 0.200106396563715 0.200106396563715
-12438 8702 789 0.199795050779324 0.199795050779324
-12439 789 3581 0.193812626433148 0.193812626433148
-12440 3581 4353 0.211337121932246 0.211337121932246
-12441 4353 8703 0.201766897339093 0.201766897339093
-12442 8703 3056 0.204698740459713 0.204698740459713
-12443 3056 8704 0.1838941823989 0.1838941823989
-12446 902 8706 0.131578356152921 0.131578356152921
-12447 8706 2807 0.139128342169529 0.139128342169529
-12448 2807 5273 0.132055095159837 0.132055095159837
-12449 5273 6913 0.122503450982406 0.122503450982406
-12450 6913 6362 0.41302368771275 0.41302368771275
-12452 3076 3191 0.200008210348418 0.200008210348418
-12454 6107 1897 0.202849718138185 0.202849718138185
-12455 1897 7235 0.199081659570441 0.199081659570441
-12456 7235 3245 0.204781971579143 0.204781971579143
-12457 3245 8707 0.0557878826660101 0.0557878826660101
-12458 8707 7285 0.154953879613548 0.154953879613548
-12459 7285 28 0.190200511167853 0.190200511167853
-12461 7212 8708 0.0837159569795295 0.0837159569795295
-12463 8708 6525 0.0119790128871836 0.0119790128871836
-12464 6525 1779 0.0293911622529401 0.0293911622529401
-12465 1779 4372 0.0502766443311638 0.0502766443311638
-12466 4372 8710 0.0490277911002061 0.0490277911002061
-12467 8710 4684 0.0539189737855212 0.0539189737855212
-12468 4684 1527 0.0474102490920647 0.0474102490920647
-12469 1527 5107 0.0489757310519715 0.0489757310519715
-19288 10468 10469 0.0662296445612727 0.0662296445612727
-12470 5107 8711 0.0509607682871969 0.0509607682871969
-12471 8711 5064 0.0518326919728752 0.0518326919728752
-12472 5064 1746 0.0537415293364607 0.0537415293364607
-12473 1746 5607 0.04913949394522 0.04913949394522
-12474 5607 6637 0.0470345659561698 0.0470345659561698
-12475 6637 5450 0.0502526613335692 0.0502526613335692
-12477 5427 5408 0.0488836182047643 0.0488836182047643
-12478 5408 7399 0.051895578159039 0.051895578159039
-12479 7399 8712 0.1038123024378 0.1038123024378
-12481 8713 8714 0.0490473159959526 0.0490473159959526
-12482 8714 7277 0.0483828604327117 0.0483828604327117
-12483 7277 3483 0.0998765627131917 0.0998765627131917
-12484 3483 8715 0.048840271287456 0.048840271287456
-12485 8715 6079 0.0473684752554207 0.0473684752554207
-12486 6079 8716 0.055154161978582 0.055154161978582
-12487 8716 3697 0.0479069878085689 0.0479069878085689
-12488 3697 5685 0.0473941467783467 0.0473941467783467
-12489 5685 4571 0.0495504189878239 0.0495504189878239
-12490 4571 8717 0.0532110753130406 0.0532110753130406
-12495 8720 6626 0.0151124856958777 0.0151124856958777
-12496 6626 7211 0.0534737559078532 0.0534737559078532
-12497 7211 5824 0.205145340397742 0.205145340397742
-12498 5824 7729 0.196126806182622 0.196126806182622
-12499 7729 8721 1.41081273670029 1.41081273670029
-12500 8722 6630 0.00966193494482075 0.00966193494482075
-12501 6630 5826 0.0378008975972725 0.0378008975972725
-12502 5826 7731 0.193712690967488 0.193712690967488
-12503 7731 8723 1.80961969384046 1.80961969384046
-12504 1781 8722 0.107247989428491 0.107247989428491
-12506 7401 6529 0.108235119976502 0.108235119976502
-12508 4596 8724 0.16807497837827 0.16807497837827
-12509 8724 8725 0.178846116420602 0.178846116420602
-12510 8725 678 0.00426139259412424 0.00426139259412424
-12511 678 8726 0.00479379013962442 0.00479379013962442
-12512 8726 8727 0.179790579190484 0.179790579190484
-12513 8727 5480 0.174201148052584 0.174201148052584
-12514 5480 8728 0.175423920421782 0.175423920421782
-12515 8728 4882 0.196140148835561 0.196140148835561
-12516 4882 2250 0.176600887954475 0.176600887954475
-12517 2250 5916 0.3321793201224 0.3321793201224
-12519 3788 8729 0.199339438501115 0.199339438501115
-12521 1189 8730 0.167786544262905 0.167786544262905
-12522 8730 7154 0.107569635985836 0.107569635985836
-12524 8731 8732 0.130443287352145 0.130443287352145
-12526 8732 6531 0.0215721025681021 0.0215721025681021
-12527 6531 8733 0.0174468386055745 0.0174468386055745
-12551 8748 6518 0.0472889047630053 0.0472889047630053
-12552 6518 8749 0.0506856290604236 0.0506856290604236
-12548 4570 8746 0.0496686599585209 0.0496686599585209
-12549 8746 8747 0.0568130428191116 0.0568130428191116
-12528 8733 8734 4.18362578562758 4.18362578562758
-12529 6533 8735 0.0310320915845362 0.0310320915845362
-12530 8735 8733 0.0639013406897381 0.0639013406897381
-12531 8733 8736 0.0575832242503326 0.0575832242503326
-12532 8736 1744 0.0585281295770588 0.0585281295770588
-12533 1744 8737 0.0551795735412136 0.0551795735412136
-12534 8737 6634 0.0667321861738512 0.0667321861738512
-12535 6634 8738 1.14684827666039 1.14684827666039
-12536 8739 8740 0.050189520794265 0.050189520794265
-12537 8740 8741 0.0520205890853532 0.0520205890853532
-12538 8741 8742 0.0975475062746334 0.0975475062746334
-12539 8742 8743 0.0478496643069703 0.0478496643069703
-12540 8743 7276 0.0507419704012955 0.0507419704012955
-12541 7276 3482 0.0993982386954757 0.0993982386954757
-12542 3482 8744 0.05053480573854 0.05053480573854
-12543 8744 6078 0.0468212480872111 0.0468212480872111
-12544 6078 8745 0.052325451958986 0.052325451958986
-12545 8745 3696 0.0475592999209775 0.0475592999209775
-12546 3696 5684 0.0505577280347845 0.0505577280347845
-12547 5684 4570 0.0496336429817659 0.0496336429817659
-12550 8747 8748 0.0555882070947718 0.0555882070947718
-12553 8749 6161 0.0483586179330098 0.0483586179330098
-12554 6161 8750 0.0494030122591725 0.0494030122591725
-12555 8750 2739 0.0483430371417139 0.0483430371417139
-12556 2739 8751 0.0499840332207257 0.0499840332207257
-12557 8751 5230 0.0498899174438866 0.0498899174438866
-12558 5230 8752 0.0487864097624457 0.0487864097624457
-12559 8752 3172 0.0492052393668883 0.0492052393668883
-12560 3172 8753 0.048649307652154 0.048649307652154
-12561 8753 4997 0.0504970791491002 0.0504970791491002
-12562 4997 729 0.0994774482962559 0.0994774482962559
-12564 7060 7316 0.100261995636978 0.100261995636978
-12565 7316 4587 0.101339695102535 0.101339695102535
-12566 4587 8033 0.0978749879893347 0.0978749879893347
-12567 8033 6373 0.096169791555938 0.096169791555938
-12568 6373 8754 0.0556932821262755 0.0556932821262755
-12569 8754 4827 0.0506856253200211 0.0506856253200211
-12570 4827 8755 0.0976778629222165 0.0976778629222165
-12572 8756 8757 0.0483546146560771 0.0483546146560771
-12573 8757 8758 0.00678547758181753 0.00678547758181753
-12574 8758 8759 0.0425788070077018 0.0425788070077018
-12577 2375 8761 0.0800348658330501 0.0800348658330501
-12579 8761 2381 0.0565526295759939 0.0565526295759939
-12580 2381 2378 0.0732152007668199 0.0732152007668199
-12581 2378 2379 0.0407086995566738 0.0407086995566738
-12582 2379 2383 0.00264328007897714 0.00264328007897714
-12583 2383 2571 0.0689488793496812 0.0689488793496812
-12585 8761 2375 0.0800348658330501 0.0800348658330501
-12587 1510 7932 0.0417550445525859 0.0417550445525859
-12589 8764 4921 0.0107315298188712 0.0107315298188712
-12590 4921 8062 0.0635329705608418 0.0635329705608418
-12591 8062 6584 0.176700679215808 0.176700679215808
-12592 6584 5366 0.199428899537142 0.199428899537142
-12593 5366 7124 0.156701102941306 0.156701102941306
-12594 7124 612 0.178308153840751 0.178308153840751
-12595 612 1943 0.177718886558766 0.177718886558766
-12596 1943 8765 0.0553792982616949 0.0553792982616949
-12597 8765 8767 0.0568805264393287 0.0568805264393287
-12625 8778 8779 0.0386703080825578 0.0386703080825578
-12598 8767 8768 0.0596299154046411 0.0596299154046411
-12600 8217 8764 0.0348766827140038 0.0348766827140038
-12602 8769 7960 0.0121246465842421 0.0121246465842421
-12636 8782 8776 0.0415201856091735 0.0415201856091735
-12603 7960 7858 0.191569398536593 0.191569398536593
-12604 7858 384 0.0511824976047815 0.0511824976047815
-12606 4685 296 0.0500706281631231 0.0500706281631231
-12607 296 4955 0.0491810974692235 0.0491810974692235
-12608 4955 7223 0.104958162725722 0.104958162725722
-12611 8773 8774 0.043865298365945 0.043865298365945
-12612 8774 6643 0.0451313849693394 0.0451313849693394
-12613 6643 8218 0.0697309457073312 0.0697309457073312
-12614 8218 3952 0.0651671851260823 0.0651671851260823
-12616 1623 8769 0.0363096662742893 0.0363096662742893
-12618 5097 8775 0.0318529970242771 0.0318529970242771
-12622 8776 8777 0.018725243223035 0.018725243223035
-12623 8777 6243 0.106972614023441 0.106972614023441
-12624 6243 8778 0.0466697025677041 0.0466697025677041
-12626 8779 5192 0.0833353912042221 0.0833353912042221
-12627 5192 8780 0.0302234211776424 0.0302234211776424
-12628 8780 8781 0.0269541929474085 0.0269541929474085
-12629 8781 2610 0.119870657472311 0.119870657472311
-12630 2610 1838 0.176410752987704 0.176410752987704
-12631 1838 2360 0.17767880886817 0.17767880886817
-12633 3710 4430 0.0984187629622127 0.0984187629622127
-12634 4430 5171 0.100485171973402 0.100485171973402
-12638 968 8783 0.0450647850917565 0.0450647850917565
-12640 8783 6332 0.0179790401179982 0.0179790401179982
-12641 6332 8784 0.166916939377104 0.166916939377104
-12642 8784 8785 0.0824631793427953 0.0824631793427953
-12643 8785 8786 0.100743867095121 0.100743867095121
-12644 8786 3809 0.198861011407653 0.198861011407653
-12645 3809 5921 0.152448419282946 0.152448419282946
-12647 920 2206 0.198794444530698 0.198794444530698
-12648 2206 4855 0.161210664735901 0.161210664735901
-12649 4855 8787 0.176180330331867 0.176180330331867
-12650 8787 5459 0.173977209442215 0.173977209442215
-12651 5459 8788 0.179581076943561 0.179581076943561
-12652 8788 653 0.182661218967331 0.182661218967331
-12653 653 8789 0.175533060842227 0.175533060842227
-12654 8789 4615 0.178562453757686 0.178562453757686
-12655 4615 6485 0.147124798702961 0.147124798702961
-12656 6485 3681 0.150536039008347 0.150536039008347
-12658 5282 8790 0.0413354062568629 0.0413354062568629
-12660 8790 6331 0.0121138578035044 0.0121138578035044
-12662 6548 8791 0.16625102712937 0.16625102712937
-12663 8791 8792 0.184061439099574 0.184061439099574
-12664 8792 3808 0.198594245045878 0.198594245045878
-12665 3808 5923 0.153339826215406 0.153339826215406
-12666 5923 922 0.17696116360303 0.17696116360303
-12667 922 2208 0.186196659484346 0.186196659484346
-12668 2208 4857 0.160795645903838 0.160795645903838
-12669 4857 8793 0.191420788288479 0.191420788288479
-12671 5460 8794 0.176401987583553 0.176401987583553
-12672 8794 8795 0.177191749793072 0.177191749793072
-12673 8795 654 0.00549383449703672 0.00549383449703672
-12674 654 8796 0.178534682523657 0.178534682523657
-12675 8796 4614 0.177531607780329 0.177531607780329
-12676 4614 6486 0.147678461213278 0.147678461213278
-12677 6486 3679 0.150313310591357 0.150313310591357
-12681 8798 8799 0.123466110327723 0.123466110327723
-12682 8799 3186 0.00950854696516887 0.00950854696516887
-12683 3186 8800 0.0308360436433676 0.0308360436433676
-12685 8801 8802 0.231947805663281 0.231947805663281
-12686 8802 8803 0.0199646364044365 0.0199646364044365
-12687 8803 5017 0.0091876036672495 0.0091876036672495
-12692 7064 8808 0.0247148912105672 0.0247148912105672
-12693 8808 8685 0.0234885972598816 0.0234885972598816
-20809 8326 10950 0.0125120772932362 0.0125120772932362
-16680 9982 9983 0.0455494891280306 0.0455494891280306
-15872 7130 8879 0.124695897236049 0.124695897236049
-12694 8685 8023 0.100302779247875 0.100302779247875
-12696 8809 8685 0.057365793634115 0.057365793634115
-12699 8810 4109 0.100464246278784 0.100464246278784
-12700 4109 2643 0.0901887127804005 0.0901887127804005
-12702 8805 7976 0.102773783270916 0.102773783270916
-12703 7976 7318 0.104083044705694 0.104083044705694
-12704 7318 8803 0.278830952538266 0.278830952538266
-12706 8811 8812 0.108086464170563 0.108086464170563
-12707 8812 6861 0.0114665228848291 0.0114665228848291
-12709 5165 8809 0.109306863073043 0.109306863073043
-12710 8809 8808 0.0510932247106912 0.0510932247106912
-12712 8798 6379 0.100799788599422 0.100799788599422
-12713 6379 6099 0.0584802680423258 0.0584802680423258
-12714 6099 8202 0.382882462386682 0.382882462386682
-12716 8813 8173 0.0533183303572635 0.0533183303572635
-12718 8814 8815 0.0594781662619651 0.0594781662619651
-12720 8815 3633 0.0139674412080793 0.0139674412080793
-14286 6672 3115 0.0991095918198707 0.0991095918198707
-15288 8812 7065 0.0171061341992079 0.0171061341992079
-12722 3295 8191 0.195769878320479 0.195769878320479
-12723 8191 103 0.207801078913796 0.207801078913796
-12724 103 3505 0.201240848446412 0.201240848446412
-12725 3505 8816 0.20140010471513 0.20140010471513
-12726 8816 8817 0.0467910785706761 0.0467910785706761
-12727 8817 8759 0.155886707244551 0.155886707244551
-12728 8759 8818 0.0209382564173288 0.0209382564173288
-12729 8818 8819 0.0390294530141924 0.0390294530141924
-12730 8819 8820 0.0609459777309488 0.0609459777309488
-12732 7196 5844 0.199996639851393 0.199996639851393
-12733 5844 7747 0.201963345264684 0.201963345264684
-12734 7747 8821 0.660668042362938 0.660668042362938
-12737 6675 8823 0.018377691001392 0.018377691001392
-12738 8823 3121 0.0817086617793047 0.0817086617793047
-12739 3121 3122 0.0189462201356829 0.0189462201356829
-12740 3122 6294 0.0736313115214917 0.0736313115214917
-12741 6294 6295 0.0205616464638412 0.0205616464638412
-12742 6295 6620 0.098958190214706 0.098958190214706
-14308 9323 2191 0.217246414275379 0.217246414275379
-12743 6620 7343 0.0741923893812443 0.0741923893812443
-12744 7343 2845 0.101548527960204 0.101548527960204
-12745 2845 3494 0.101534987318255 0.101534987318255
-12746 3494 5350 0.0785982086314387 0.0785982086314387
-12748 4220 2948 0.0852112039835386 0.0852112039835386
-12749 2948 2949 0.056569943078372 0.056569943078372
-12750 2949 6813 0.0330539311277449 0.0330539311277449
-12751 6813 6810 0.0675878090482117 0.0675878090482117
-12752 6810 1814 0.0227606927419569 0.0227606927419569
-12753 1814 8824 0.984700828985706 0.984700828985706
-12754 8823 8825 0.40169861106651 0.40169861106651
-12779 3798 5937 0.1524274277381 0.1524274277381
-12755 8826 7748 0.668566967249301 0.668566967249301
-12756 7748 5845 0.201518653480334 0.201518653480334
-12757 5845 7197 0.200485803128442 0.200485803128442
-12758 7197 8827 0.180703533412633 0.180703533412633
-12759 8827 8760 0.0207611083367854 0.0207611083367854
-12760 8760 8828 0.203176551906279 0.203176551906279
-12761 8828 3506 0.200871002946695 0.200871002946695
-12763 8170 8192 0.20854015704238 0.20854015704238
-12764 8192 3296 0.195770030101267 0.195770030101267
-12765 3296 8183 0.100143064441761 0.100143064441761
-12766 8183 8188 0.148673984504934 0.148673984504934
-12767 8188 8813 0.0159417159428289 0.0159417159428289
-12769 2918 8829 0.0404869067666165 0.0404869067666165
-12771 8829 6328 0.00908621391699812 0.00908621391699812
-12772 6328 8830 0.0795394987314785 0.0795394987314785
-12774 4166 4751 0.202375182887314 0.202375182887314
-12775 4751 6542 0.197696304569089 0.197696304569089
-12776 6542 8831 0.204678217467742 0.204678217467742
-12778 8832 3798 0.199708223967288 0.199708223967288
-12780 5937 938 0.177624298285183 0.177624298285183
-12781 938 2222 0.185255991502605 0.185255991502605
-12782 2222 4872 0.159853083829866 0.159853083829866
-12783 4872 8834 0.191323978817286 0.191323978817286
-12787 28 8836 0.0411233276076822 0.0411233276076822
-15407 8527 8524 0.00632598868026626 0.00632598868026626
-16685 9986 9987 0.0852803879953952 0.0852803879953952
-12788 8830 4165 0.0810572303723974 0.0810572303723974
-12790 4096 6041 0.191845009601904 0.191845009601904
-12791 6041 8837 0.201496335450174 0.201496335450174
-12792 8837 8838 0.406062586796109 0.406062586796109
-12793 4086 6031 0.181162285735164 0.181162285735164
-12794 6031 6032 0.0171385466290399 0.0171385466290399
-12795 6032 8839 0.201396970557967 0.201396970557967
-12796 8839 2539 0.0036249646793062 0.0036249646793062
-12797 2539 7937 0.222367701142404 0.222367701142404
-12798 7937 8840 0.179081080346528 0.179081080346528
-12799 8520 8841 0.0687184646666591 0.0687184646666591
-12801 8841 298 0.017862044588972 0.017862044588972
-12802 298 4082 0.0176901086131869 0.0176901086131869
-12805 2560 6714 0.0892568890732451 0.0892568890732451
-12806 6714 6633 0.0879831056932755 0.0879831056932755
-12807 6633 8844 0.0442062339102578 0.0442062339102578
-12808 8844 7935 0.0446455487862746 0.0446455487862746
-12809 7935 8845 0.265612509858697 0.265612509858697
-12817 297 299 0.88607517832177 0.88607517832177
-12823 493 589 0.268896577305787 0.268896577305787
-12824 589 8850 0.33804717039653 0.33804717039653
-12826 8589 8851 0.042366080089372 0.042366080089372
-12828 8851 4936 0.0170501490589131 0.0170501490589131
-12829 4936 8509 0.143621366769105 0.143621366769105
-12831 8852 8853 0.0917176896741063 0.0917176896741063
-12832 8853 7564 0.105551904949528 0.105551904949528
-12833 7564 6182 0.105801475446669 0.105801475446669
-12834 6182 8854 0.10583574357693 0.10583574357693
-12835 8854 8855 0.00547189672663909 0.00547189672663909
-18650 1854 2593 0.177389867684494 0.177389867684494
-12837 8856 8857 0.0555847646631402 0.0555847646631402
-12838 8857 8858 0.0519115005666898 0.0519115005666898
-12839 8858 8636 0.0515833043565609 0.0515833043565609
-12840 8636 8859 0.0207966249820583 0.0207966249820583
-12844 8860 1198 0.169110109980516 0.169110109980516
-12845 1198 8861 0.0226617213022113 0.0226617213022113
-12847 8862 1200 0.170240075619945 0.170240075619945
-12848 1200 8863 0.0219879091267488 0.0219879091267488
-12850 8864 7983 0.0505037947042799 0.0505037947042799
-12851 7983 2054 0.099824917404873 0.099824917404873
-12852 2054 2660 0.101497408945607 0.101497408945607
-12853 2660 4133 0.0961563998269834 0.0961563998269834
-12855 6696 8019 0.0939673290333738 0.0939673290333738
-12856 8019 7683 0.0941529054095407 0.0941529054095407
-12857 7683 3457 0.0935091254143676 0.0935091254143676
-12858 3457 8865 0.0461569199164165 0.0461569199164165
-12859 8865 6019 0.0480340625550536 0.0480340625550536
-12860 6019 8866 0.0464697146879775 0.0464697146879775
-12861 8866 8867 0.048094543326443 0.048094543326443
-12862 8867 8868 0.0461790217746061 0.0461790217746061
-12863 8868 856 0.0449646613539359 0.0449646613539359
-12864 856 451 0.0470078764226648 0.0470078764226648
-12865 451 7105 0.0432708485882178 0.0432708485882178
-12866 7105 8869 0.0939007256947679 0.0939007256947679
-12868 8870 1196 0.168829878028139 0.168829878028139
-12869 1196 8871 0.021661446985008 0.021661446985008
-12871 4760 5407 0.0842978699895538 0.0842978699895538
-12873 4755 6546 0.199683159238461 0.199683159238461
-12874 6546 8872 0.20436535055464 0.20436535055464
-12875 8872 8873 0.188956325706579 0.188956325706579
-12876 8873 3792 0.199291485976659 0.199291485976659
-17796 10179 9318 0.114755253361823 0.114755253361823
-12877 3792 8561 0.13059037096191 0.13059037096191
-12879 5926 924 0.178374370928188 0.178374370928188
-12880 924 2210 0.187308783265319 0.187308783265319
-12881 2210 4859 0.159743099068053 0.159743099068053
-12882 4859 8874 0.192629276936053 0.192629276936053
-12883 8874 5461 0.172330101173688 0.172330101173688
-12884 5461 8875 0.177416584260724 0.177416584260724
-12885 8875 8876 0.176433616828762 0.176433616828762
-12887 655 8877 0.00413648661723727 0.00413648661723727
-12888 8877 8878 0.173943602457692 0.173943602457692
-12889 8878 4613 0.177428437243737 0.177428437243737
-12890 4613 6487 0.148280300321704 0.148280300321704
-12891 6487 3678 0.149828166583799 0.149828166583799
-12893 5929 926 0.177267011666895 0.177267011666895
-12894 926 2211 0.187019197552967 0.187019197552967
-12895 2211 4861 0.161667462022208 0.161667462022208
-12896 4861 8880 0.191414125057248 0.191414125057248
-12897 8880 5463 0.170299846109482 0.170299846109482
-12898 5463 8881 0.177990586801656 0.177990586801656
-12899 8881 8885 0.177780189019753 0.177780189019753
-12900 8885 659 0.00646246375156384 0.00646246375156384
-12901 659 8886 0.177011471342036 0.177011471342036
-12902 8886 4612 0.177005843155015 0.177005843155015
-12903 4612 6488 0.148001366258512 0.148001366258512
-12904 6488 3676 0.150380555650091 0.150380555650091
-12906 1621 8061 0.152748999526467 0.152748999526467
-12907 8061 6583 0.177490187745079 0.177490187745079
-12908 6583 5365 0.198863610387104 0.198863610387104
-12909 5365 7123 0.157919035747255 0.157919035747255
-12911 8092 8887 0.220134314041521 0.220134314041521
-12913 8887 8888 0.191841135190913 0.191841135190913
-12914 8888 967 0.0966749413586244 0.0966749413586244
-12916 5281 4980 0.256490434532314 0.256490434532314
-12917 4980 4148 0.0387618071437701 0.0387618071437701
-12918 4148 8125 0.0859291558348279 0.0859291558348279
-12919 8125 2368 0.179404398665568 0.179404398665568
-12920 2368 996 0.270881468937897 0.270881468937897
-12921 996 2914 0.0678890736084051 0.0678890736084051
-12922 2914 2917 0.0548386478267142 0.0548386478267142
-12927 8894 8895 0.135035418511701 0.135035418511701
-12929 8896 3167 0.11730986547504 0.11730986547504
-12932 8898 8899 0.10458723954588 0.10458723954588
-12971 8901 8709 0.120698197647431 0.120698197647431
-12978 8902 8903 0.00973401952734473 0.00973401952734473
-12979 8903 7902 0.144472845078957 0.144472845078957
-12980 7902 1225 0.0118169371778595 0.0118169371778595
-12982 8904 8902 0.0775029978833242 0.0775029978833242
-12984 8905 8906 0.061203121949655 0.061203121949655
-12986 8906 8907 0.00497763084611722 0.00497763084611722
-12987 8907 121 0.154154812192847 0.154154812192847
-12988 121 8904 0.0610449885391548 0.0610449885391548
-12990 8325 8908 0.013157216132198 0.013157216132198
-12992 306 8909 0.108316294946991 0.108316294946991
-12994 8328 8910 0.00899626589788406 0.00899626589788406
-12995 8910 8338 0.040824296618527 0.040824296618527
-12996 8338 6084 0.0494050923488005 0.0494050923488005
-12997 6084 8909 0.0118673496888767 0.0118673496888767
-12998 8909 743 0.0430251864291126 0.0430251864291126
-12999 743 4526 0.0484294102772242 0.0484294102772242
-13000 4526 607 0.0194349740430761 0.0194349740430761
-13001 607 8355 0.0344276469779443 0.0344276469779443
-13002 8355 3974 0.0402278696203799 0.0402278696203799
-13004 8911 2658 0.732133935065161 0.732133935065161
-13012 8915 8916 0.408272009335824 0.408272009335824
-13090 1914 6117 0.200190217467506 0.200190217467506
-13018 8922 8923 0.320042964228513 0.320042964228513
-13022 8265 8926 0.339879399665874 0.339879399665874
-13027 4265 279 0.0652387434169228 0.0652387434169228
-13029 494 8927 0.349190481522976 0.349190481522976
-13040 8104 8678 0.200106495095782 0.200106495095782
-13042 8932 8933 0.108557788789167 0.108557788789167
-13044 8677 8932 0.0500470435519063 0.0500470435519063
-13046 8933 6917 0.0967430583925215 0.0967430583925215
-13050 8936 8937 0.198244621757318 0.198244621757318
-13084 8956 8756 0.203550658006643 0.203550658006643
-13052 8938 8939 0.428260593428089 0.428260593428089
-13053 8939 8425 0.201936465504692 0.201936465504692
-13055 8939 8941 0.203022755730075 0.203022755730075
-13057 8931 8942 0.152950212219782 0.152950212219782
-13059 8943 8931 0.0786273196751871 0.0786273196751871
-19033 256 10159 0.12356745711476 0.12356745711476
-13063 8945 8946 0.104572805049419 0.104572805049419
-13067 8949 432 0.545131832456565 0.545131832456565
-13068 432 8950 0.686001065667251 0.686001065667251
-13070 8951 8949 0.0797207044078447 0.0797207044078447
-13074 8952 8953 0.195031053860659 0.195031053860659
-13076 99 3503 0.199966819322067 0.199966819322067
-13077 3503 8954 0.201518791118212 0.201518791118212
-13078 8954 8755 0.203764704692679 0.203764704692679
-13079 8755 7193 0.202942329745549 0.202942329745549
-13080 7193 7746 0.401362186865274 0.401362186865274
-13081 7746 8955 0.585986287872625 0.585986287872625
-13082 101 3504 0.19989908085758 0.19989908085758
-13083 3504 8956 0.200106829133291 0.200106829133291
-13085 8756 7194 0.202942348322105 0.202942348322105
-13087 1087 8957 0.00893112007684357 0.00893112007684357
-13088 8957 1082 0.038563824899443 0.038563824899443
-13091 6117 3204 0.200871492111254 0.200871492111254
-13092 3204 3094 0.202111971416858 0.202111971416858
-13093 3094 1749 0.143511782143127 0.143511782143127
-13096 8925 8917 0.011822810789309 0.011822810789309
-13098 8959 602 0.0536722144567161 0.0536722144567161
-13099 602 8962 0.0387695912622113 0.0387695912622113
-13100 8962 8948 0.175808350127672 0.175808350127672
-13101 8948 428 0.00954052470619231 0.00954052470619231
-13102 428 7933 0.160696268160677 0.160696268160677
-13104 8918 8924 0.012486102804665 0.012486102804665
-13105 8924 2420 0.0580706601904793 0.0580706601904793
-13108 8964 8965 0.125224497044451 0.125224497044451
-13110 8965 2192 0.356365737888712 0.356365737888712
-13135 4848 1531 0.0955193854848385 0.0955193854848385
-13111 2192 1611 0.254354724276405 0.254354724276405
-13112 1611 8852 0.0391111849621532 0.0391111849621532
-13114 8966 7934 0.183569029359489 0.183569029359489
-13116 2045 8967 0.0657780447895409 0.0657780447895409
-13119 1742 5213 0.229560371023495 0.229560371023495
-13120 5213 640 0.0648517231107158 0.0648517231107158
-14585 9392 2833 0.210508246764738 0.210508246764738
-13122 7933 8963 0.200908071446329 0.200908071446329
-13124 7934 8969 0.0906737639231845 0.0906737639231845
-13125 8969 429 0.0698124130115735 0.0698124130115735
-13126 429 8947 0.0102744112219317 0.0102744112219317
-13127 8947 8970 0.0586653743681201 0.0586653743681201
-13128 8970 601 0.102766368620144 0.102766368620144
-13157 8989 1285 0.118339572755071 0.118339572755071
-13129 601 8973 0.0999362244261846 0.0999362244261846
-13130 8973 8918 0.0326860113699392 0.0326860113699392
-13132 2193 8237 0.11471912407663 0.11471912407663
-13133 8237 8974 0.0761048371438857 0.0761048371438857
-13443 9077 4179 0.169049790102584 0.169049790102584
-13137 8974 4844 0.0408566656014099 0.0408566656014099
-13139 8975 8915 0.161267451240187 0.161267451240187
-13164 8976 8977 0.00802909585520281 0.00802909585520281
-13140 8915 8979 0.511309857046827 0.511309857046827
-13142 8950 8980 0.295444981113679 0.295444981113679
-13144 8981 8982 0.155762064195337 0.155762064195337
-14605 9398 8233 0.0099630690934953 0.0099630690934953
-13146 8983 8984 0.153794064127447 0.153794064127447
-13148 8985 8986 0.0143228031361841 0.0143228031361841
-13149 8986 8496 0.0694983470285585 0.0694983470285585
-13150 8496 398 0.120004619664384 0.120004619664384
-13151 398 8987 0.0577858842103034 0.0577858842103034
-13152 8987 637 0.099744132155093 0.099744132155093
-13153 637 6436 0.0832880379381437 0.0832880379381437
-13154 6436 21 0.0571009168797096 0.0571009168797096
-13155 21 8988 0.0791847444931621 0.0791847444931621
-13158 1285 2962 0.0719310735484076 0.0719310735484076
-13159 2962 8991 0.0186493582069224 0.0186493582069224
-13160 8991 8992 0.187353348628226 0.187353348628226
-13161 8992 8351 0.0990161897507714 0.0990161897507714
-13162 8351 8993 0.00963797122366648 0.00963797122366648
-13163 8993 8976 0.0698946708143702 0.0698946708143702
-13165 8977 8994 0.012930744273385 0.012930744273385
-13167 8451 8985 0.0708838190049254 0.0708838190049254
-13169 2877 7692 0.030123526159425 0.030123526159425
-13173 8996 8143 0.201053290850133 0.201053290850133
-13174 8143 8997 0.150730663136006 0.150730663136006
-13176 2794 5261 0.132082373792006 0.132082373792006
-13178 5853 1338 0.200417735783644 0.200417735783644
-13179 1338 8998 0.206394741682614 0.206394741682614
-13181 8998 4698 0.201909087963534 0.201909087963534
-13182 4698 8999 0.201909088033291 0.201909088033291
-13183 8999 9000 0.201186325895839 0.201186325895839
-13184 9000 6822 0.198983321230549 0.198983321230549
-13185 6822 770 0.132908321867952 0.132908321867952
-13187 1638 8999 0.102808714105755 0.102808714105755
-13188 8999 4216 0.0999229348013983 0.0999229348013983
-13189 4216 8095 0.0991443160837587 0.0991443160837587
-13190 8095 196 0.0991307294664674 0.0991307294664674
-13191 196 2925 0.0983869258474561 0.0983869258474561
-13193 5307 1463 0.0991311193927209 0.0991311193927209
-13194 1463 5437 0.103145293575034 0.103145293575034
-13196 1641 9000 0.10355145810147 0.10355145810147
-13197 9000 4217 0.0998824134603326 0.0998824134603326
-13198 4217 8096 0.0998581597847897 0.0998581597847897
-13199 8096 197 0.0983977211710877 0.0983977211710877
-13200 197 2926 0.0983895151379973 0.0983895151379973
-13201 2926 5308 0.0991337377550934 0.0991337377550934
-13202 5308 1464 0.0991224618714554 0.0991224618714554
-13203 1464 5440 0.103536651588581 0.103536651588581
-13205 201 2928 0.102050045456718 0.102050045456718
-13206 2928 5310 0.0991386153517731 0.0991386153517731
-13207 5310 1466 0.099890094841465 0.099890094841465
-13208 1466 5445 0.102288602469368 0.102288602469368
-13209 5445 9003 0.20221504164542 0.20221504164542
-13210 9003 7922 0.00954769987851559 0.00954769987851559
-13211 7922 4407 0.193513161405962 0.193513161405962
-13212 4407 9004 0.22689488985342 0.22689488985342
-13213 9004 4314 0.17109885981524 0.17109885981524
-13214 4314 4501 0.0954627697803603 0.0954627697803603
-13215 4501 7813 0.103538745444113 0.103538745444113
-13216 7813 5077 0.099141030065187 0.099141030065187
-13217 5077 8012 0.101361319209047 0.101361319209047
-13218 8012 6831 0.0984053279969797 0.0984053279969797
-13219 6831 6983 0.0507122349978986 0.0507122349978986
-13220 6983 6974 0.0492014587539049 0.0492014587539049
-13221 6974 7944 0.0815359432635548 0.0815359432635548
-13222 7944 6363 0.117492028011777 0.117492028011777
-13223 6363 6659 0.128518000967454 0.128518000967454
-13224 6659 5340 0.248378842685992 0.248378842685992
-13225 5340 9007 0.436836188101395 0.436836188101395
-13226 5447 9008 0.0954198714626642 0.0954198714626642
-13227 9008 5974 0.0150605452925665 0.0150605452925665
-13229 5443 7920 0.209496436784339 0.209496436784339
-13230 7920 4409 0.196049081122935 0.196049081122935
-13232 9009 4311 0.174051720567411 0.174051720567411
-13234 5439 7917 0.209760382857472 0.209760382857472
-13235 7917 4414 0.1967831025196 0.1967831025196
-13236 4414 9010 0.224679521512281 0.224679521512281
-13239 5435 9011 0.112718312199178 0.112718312199178
-13240 9011 7916 0.0954502097686848 0.0954502097686848
-13242 4418 9012 0.223944278058007 0.223944278058007
-13243 9012 9013 0.163728342208645 0.163728342208645
-13244 9014 9011 0.193580953488763 0.193580953488763
-13272 5331 5695 0.176288296878523 0.176288296878523
-13246 1844 2578 0.172509377214494 0.172509377214494
-13248 6839 8008 0.0576758204139334 0.0576758204139334
-13250 8009 6981 0.144663680916955 0.144663680916955
-13252 9015 6845 0.0843525238323184 0.0843525238323184
-13253 6845 4689 0.0881118827688874 0.0881118827688874
-13254 4689 4697 0.0264412698588759 0.0264412698588759
-13255 4697 7466 0.0631647371963507 0.0631647371963507
-13256 7466 9016 0.0866600751763154 0.0866600751763154
-13257 9016 7453 0.0117533037462049 0.0117533037462049
-13258 7453 2091 0.0764142388554106 0.0764142388554106
-13259 2091 5691 0.0521281816109867 0.0521281816109867
-13260 5691 5680 0.0375154291161679 0.0375154291161679
-13261 5680 6316 0.0896056080016293 0.0896056080016293
-13262 6316 4963 0.0888719448734625 0.0888719448734625
-13264 6826 5338 0.0370211552910964 0.0370211552910964
-13266 9016 9017 0.044781886028432 0.044781886028432
-13267 6842 4692 0.112329114895897 0.112329114895897
-13268 4692 5332 0.162956489748023 0.162956489748023
-13270 6840 4691 0.113830246405759 0.113830246405759
-13271 4691 5331 0.0755697574983074 0.0755697574983074
-13274 5694 6319 0.174033677833605 0.174033677833605
-13275 6319 9018 0.182109806928741 0.182109806928741
-13277 4310 7811 0.201267372547373 0.201267372547373
-13278 7811 8010 0.202389778156291 0.202389778156291
-13281 7812 5076 0.100599027218817 0.100599027218817
-13282 5076 8011 0.100623102109681 0.100623102109681
-13283 8011 6982 0.147599810375252 0.147599810375252
-13284 6982 7943 0.131458423393202 0.131458423393202
-13285 7943 3300 0.0829788157522616 0.0829788157522616
-13286 3300 5727 0.0905493512456201 0.0905493512456201
-13287 5727 5339 0.0993780908642813 0.0993780908642813
-13289 9019 9020 0.473924441922911 0.473924441922911
-13290 5441 7918 0.212183518066811 0.212183518066811
-13291 7918 4411 0.196063540031297 0.196063540031297
-13292 4411 9021 0.221019052884505 0.221019052884505
-13293 9021 4282 0.176970513595043 0.176970513595043
-13295 4326 9018 0.0881179267079727 0.0881179267079727
-13296 9018 7810 0.0594732573783121 0.0594732573783121
-13297 7810 7817 0.0279069878470498 0.0279069878470498
-13298 7817 5075 0.0895984878523876 0.0895984878523876
-13299 5075 8007 0.082290456587143 0.082290456587143
-13300 8007 6839 0.0433776365307967 0.0433776365307967
-13301 6839 6979 0.105025257907842 0.105025257907842
-14885 9012 7486 0.0983880214663299 0.0983880214663299
-13303 9003 4959 0.128621575011946 0.128621575011946
-13304 4959 9022 0.0561090389096707 0.0561090389096707
-13305 9022 9023 0.219664135455113 0.219664135455113
-13307 9024 1734 0.0339090081692689 0.0339090081692689
-13308 1734 9025 0.199586826055962 0.199586826055962
-13310 162 1723 0.148414326457229 0.148414326457229
-13312 164 1724 0.19589389224901 0.19589389224901
-13313 1724 9026 0.21539258017212 0.21539258017212
-13315 166 1725 0.23958811593923 0.23958811593923
-13316 1725 9027 0.172261015966003 0.172261015966003
-13318 168 1727 0.256304305915683 0.256304305915683
-13319 1727 8081 0.0911159242290505 0.0911159242290505
-13321 9028 9029 0.0459665066705729 0.0459665066705729
-13323 9030 9031 0.204682511562437 0.204682511562437
-13324 9031 6588 0.201464690183835 0.201464690183835
-13325 6588 7109 0.201819605073549 0.201819605073549
-13326 7109 9034 0.0380490136329461 0.0380490136329461
-13327 9035 9036 0.202787954952135 0.202787954952135
-13328 9036 6589 0.200863566889439 0.200863566889439
-13329 6589 7110 0.201074334121883 0.201074334121883
-13331 9037 9031 0.102130234291417 0.102130234291417
-13332 9031 9036 0.101294841162053 0.101294841162053
-13333 9036 6128 0.0961527434944637 0.0961527434944637
-13334 6128 3971 0.0990967592348727 0.0990967592348727
-13336 7017 1406 0.0990967592360877 0.0990967592360877
-13337 1406 7390 0.0982252697684911 0.0982252697684911
-13338 7390 5217 0.100064145492252 0.100064145492252
-13340 5377 9038 0.0981767550682586 0.0981767550682586
-13342 9041 9042 0.107883824327089 0.107883824327089
-13344 9043 9044 0.111762023714712 0.111762023714712
-13346 7805 9045 0.163613143703316 0.163613143703316
-13347 4982 9046 0.151151791011959 0.151151791011959
-13348 9046 4333 0.0931833318260777 0.0931833318260777
-13349 4333 5039 0.084348128639754 0.084348128639754
-13351 2869 9047 0.0643526028257267 0.0643526028257267
-13352 2869 5283 0.189728403936972 0.189728403936972
-13354 9048 6951 0.21054969022045 0.21054969022045
-13355 6951 8084 0.110877740512572 0.110877740512572
-13356 8084 8141 0.0381711926062465 0.0381711926062465
-13357 8141 5971 0.0998550766587588 0.0998550766587588
-13358 5971 9046 0.165019740176851 0.165019740176851
-13359 9046 7804 0.203892252907028 0.203892252907028
-13360 7804 9049 0.488623985679594 0.488623985679594
-13361 577 9048 0.0924966938169246 0.0924966938169246
-13369 9054 1743 0.0233197702600261 0.0233197702600261
-13370 1743 4270 0.277932467642318 0.277932467642318
-13371 4270 310 0.0394728122356983 0.0394728122356983
-13372 310 577 0.0535172942987349 0.0535172942987349
-13374 9055 9056 0.0694449359265994 0.0694449359265994
-13375 9056 2325 0.190938968451781 0.190938968451781
-13376 2325 4279 0.147346976573119 0.147346976573119
-13378 4286 9055 0.0222915391297905 0.0222915391297905
-13380 1349 1615 0.0587612563553368 0.0587612563553368
-13381 1615 7135 0.106001129731548 0.106001129731548
-13383 5260 9057 0.107843300513683 0.107843300513683
-13384 6952 9058 0.0875153511963366 0.0875153511963366
-13386 9058 5767 0.0813716345984657 0.0813716345984657
-13387 5767 312 0.370850163813996 0.370850163813996
-13390 9048 9052 0.36535949731556 0.36535949731556
-13394 9060 8966 0.196473660543131 0.196473660543131
-13396 9061 5080 0.358471972755657 0.358471972755657
-13397 5080 9062 0.674602285535072 0.674602285535072
-13398 9062 3176 0.289568864041751 0.289568864041751
-13399 3176 527 0.133561854308294 0.133561854308294
-18560 10318 10319 0.255397297870644 0.255397297870644
-13400 527 343 0.340886700679976 0.340886700679976
-13401 343 537 0.428322489908352 0.428322489908352
-13402 537 474 0.822980283733396 0.822980283733396
-13403 474 8438 0.152037422281902 0.152037422281902
-13407 4427 9063 0.114941491865609 0.114941491865609
-13409 9063 8912 0.118971180199303 0.118971180199303
-13413 8236 125 0.0903470808346396 0.0903470808346396
-13415 9065 9066 0.0810250214751567 0.0810250214751567
-13417 9066 7279 0.116655009841785 0.116655009841785
-13419 276 9067 0.0692041764264314 0.0692041764264314
-13500 9108 9109 0.0476133357747153 0.0476133357747153
-13421 9067 2189 0.114532021981465 0.114532021981465
-13423 9068 4553 0.327000385366346 0.327000385366346
-13425 8428 9069 0.0507531626876375 0.0507531626876375
-13426 9069 9068 0.00529520129182755 0.00529520129182755
-13428 9070 9071 0.0606488327577038 0.0606488327577038
-13430 9071 9072 0.009176031077042 0.009176031077042
-13431 9072 4642 0.175105976981708 0.175105976981708
-13432 4642 7954 0.0487370399178714 0.0487370399178714
-13433 7954 4547 0.158995972178669 0.158995972178669
-13434 4547 9073 0.292416775735491 0.292416775735491
-13436 9074 9075 0.0675438073285673 0.0675438073285673
-13438 9075 409 0.0146789910973018 0.0146789910973018
-13439 409 9076 0.0166512433271008 0.0166512433271008
-13441 4838 326 0.0588523383992881 0.0588523383992881
-13449 9081 9082 0.443932946896766 0.443932946896766
-13451 1401 9083 0.0611691476045831 0.0611691476045831
-13453 9083 6208 0.0330698135159164 0.0330698135159164
-13454 6208 7645 0.178373846931983 0.178373846931983
-13455 7645 9086 0.177258150455768 0.177258150455768
-13498 9107 3956 0.0601050509878674 0.0601050509878674
-13457 9087 9088 1.73315945419765 1.73315945419765
-13458 9088 410 0.265082533171925 0.265082533171925
-13459 410 9080 0.715047499183354 0.715047499183354
-13460 9080 9089 0.194455760903183 0.194455760903183
-13462 9089 9090 0.0550554662137945 0.0550554662137945
-13464 9091 9092 0.473459458640042 0.473459458640042
-13475 9098 9032 0.307889980671666 0.307889980671666
-13479 9090 9099 0.0142223937707519 0.0142223937707519
-13481 9100 9093 0.193628424072927 0.193628424072927
-13483 9101 9100 0.0626625130905001 0.0626625130905001
-13487 9103 346 0.140681499904037 0.140681499904037
-13522 9037 8064 0.00660497864323473 0.00660497864323473
-13489 3955 9081 0.113309674251049 0.113309674251049
-13491 6240 5091 0.078819968233945 0.078819968233945
-13493 9082 9103 0.0435368095566408 0.0435368095566408
-13494 9103 347 0.193850840943334 0.193850840943334
-13495 347 404 0.026466812116417 0.026466812116417
-13496 404 9106 0.11755875033606 0.11755875033606
-13501 9109 9107 0.387486870322022 0.387486870322022
-13503 6204 9110 0.181291651373991 0.181291651373991
-13505 9111 9112 0.0153902940291749 0.0153902940291749
-13506 9112 9101 0.137209683962048 0.137209683962048
-13508 9113 9111 0.075192531928865 0.075192531928865
-15014 455 860 0.0461629164957839 0.0461629164957839
-13510 9114 9115 0.148585418330877 0.148585418330877
-13514 8582 9116 0.0682625654668292 0.0682625654668292
-13516 9116 237 0.0139438438014188 0.0139438438014188
-13517 237 7635 0.17396601741799 0.17396601741799
-13519 7602 9073 0.102023996019348 0.102023996019348
-13521 117 9037 0.091769841511351 0.091769841511351
-13523 8064 6587 0.198394254239174 0.198394254239174
-13524 6587 5384 0.100320867880051 0.100320867880051
-13525 5384 7108 0.0976180261019357 0.0976180261019357
-13526 7108 2293 0.101160557994969 0.101160557994969
-13527 2293 9117 0.0816968455207608 0.0816968455207608
-13583 9134 9079 0.189350301331036 0.189350301331036
-13533 9118 6217 0.00293554606374767 0.00293554606374767
-13534 6217 7652 0.27452915439238 0.27452915439238
-13535 7652 8071 0.262369838158816 0.262369838158816
-13536 8071 9119 0.0614463164636613 0.0614463164636613
-13538 9118 7768 0.0286215741177868 0.0286215741177868
-13540 9121 9122 0.0549317968438626 0.0549317968438626
-13541 9122 9080 0.148946547669597 0.148946547669597
-13543 9121 4555 0.0367880997749164 0.0367880997749164
-13545 216 9123 0.047880969118268 0.047880969118268
-13547 9123 447 0.333206339887537 0.333206339887537
-13549 2999 9124 0.314861669735557 0.314861669735557
-13554 579 408 0.862576839598051 0.862576839598051
-13568 9128 9129 0.16941277010836 0.16941277010836
-13570 9124 9128 0.0550015048734635 0.0550015048734635
-13578 9132 220 0.766585324287615 0.766585324287615
-13615 7609 7262 0.111890561964914 0.111890561964914
-13579 220 566 0.637748069235424 0.637748069235424
-13587 9136 9137 0.450871833260349 0.450871833260349
-13590 8684 222 0.184496371824925 0.184496371824925
-13591 222 9140 0.487607813488587 0.487607813488587
-13593 9140 9077 0.174302500151122 0.174302500151122
-13594 9077 9141 0.280690469581891 0.280690469581891
-13596 9142 118 0.0916021886608042 0.0916021886608042
-13597 118 6721 0.0966297992771619 0.0966297992771619
-13598 6721 6722 0.0414535753801991 0.0414535753801991
-13599 6722 2311 0.00867549185460531 0.00867549185460531
-13601 6580 6723 0.0197325066377101 0.0197325066377101
-13603 9029 1240 0.0358410792262526 0.0358410792262526
-13604 1240 4790 0.0578956777475445 0.0578956777475445
-13605 4790 4814 0.0309664941935945 0.0309664941935945
-13606 4814 2156 0.0660634330770184 0.0660634330770184
-13607 2156 2166 0.00298513757197415 0.00298513757197415
-13608 2166 2183 0.165657322423627 0.165657322423627
-13609 2183 9070 0.039996230308656 0.039996230308656
-13611 3728 9143 0.0374422730466023 0.0374422730466023
-13613 3765 8150 0.099678431004031 0.099678431004031
-13614 8150 7609 0.0943510009713305 0.0943510009713305
-13616 7262 7595 0.0635463262031531 0.0635463262031531
-13617 7595 7599 0.0220206440979588 0.0220206440979588
-13618 7599 9144 0.0741982381570415 0.0741982381570415
-15078 7589 3366 0.105686563985576 0.105686563985576
-13619 9144 2022 0.0197545563564228 0.0197545563564228
-13620 2022 9147 0.0829434723735258 0.0829434723735258
-13621 9147 3355 0.0108199721778022 0.0108199721778022
-13623 9148 2768 0.0035576669192827 0.0035576669192827
-13624 2768 7013 0.0948918648713715 0.0948918648713715
-13626 2274 8214 0.00623184642483798 0.00623184642483798
-13627 8214 9149 0.0892902468185094 0.0892902468185094
-13628 9149 8211 0.0144047767787734 0.0144047767787734
-13629 8211 7521 0.0807484203861095 0.0807484203861095
-13630 7521 7522 0.0178959760293508 0.0178959760293508
-13631 7522 2132 0.0761585237127413 0.0761585237127413
-13632 2132 2117 0.0261874332320613 0.0261874332320613
-13633 2117 5982 0.0706516490311829 0.0706516490311829
-13634 5982 5987 0.0312102623276897 0.0312102623276897
-13635 5987 5148 0.0542024830967572 0.0542024830967572
-13636 5148 7678 0.00643849229968441 0.00643849229968441
-13637 7678 9150 0.0270552275766841 0.0270552275766841
-13638 9150 5159 0.0130471422397109 0.0130471422397109
-13639 5159 2336 0.0550815403379387 0.0550815403379387
-17797 9318 9592 0.0276370219250994 0.0276370219250994
-15154 9503 7694 0.0985863309924877 0.0985863309924877
-13640 2336 9151 2.70099171821299 2.70099171821299
-15853 9736 5597 0.026161521554181 0.026161521554181
-13642 327 390 0.428713460971309 0.428713460971309
-13643 390 216 1.2612581668138 1.2612581668138
-13647 4841 9156 0.020245918680072 0.020245918680072
-13653 9127 4841 0.714489743272739 0.714489743272739
-13655 9160 9161 0.0611231237623731 0.0611231237623731
-13657 9161 9162 0.0094906074947222 0.0094906074947222
-13658 9162 360 0.119259910634054 0.119259910634054
-13659 360 4441 0.0977181725107 0.0977181725107
-13660 4441 9025 0.101356058092401 0.101356058092401
-13661 9025 361 0.102083424277621 0.102083424277621
-13662 361 6661 0.148732998262686 0.148732998262686
-13663 6661 1457 0.0814814185857237 0.0814814185857237
-13664 1457 6930 0.0803380398809936 0.0803380398809936
-13665 6930 9163 0.0870015008277124 0.0870015008277124
-13666 9163 3826 0.0559780942251715 0.0559780942251715
-13667 3826 5901 0.113837481725673 0.113837481725673
-13668 5901 1650 0.336368580358266 0.336368580358266
-13669 1650 9026 0.0808050552206421 0.0808050552206421
-13670 9026 9027 0.0815322500516298 0.0815322500516298
-13671 9027 3968 0.0749133242052919 0.0749133242052919
-13672 3968 205 0.163780553378706 0.163780553378706
-13673 205 2934 0.0793233966793332 0.0793233966793332
-13674 2934 2932 0.00660572151012338 0.00660572151012338
-13675 2932 5313 0.0749133313668845 0.0749133313668845
-13676 5313 5314 0.039721686292112 0.039721686292112
-13677 5314 1472 0.0396600103919334 0.0396600103919334
-13678 1472 5451 0.159004638765101 0.159004638765101
-13679 5451 7909 0.201247264593271 0.201247264593271
-13680 7909 4403 0.196833842084677 0.196833842084677
-13681 4403 6310 0.199805236650359 0.199805236650359
-13682 6310 6311 0.0399338522027804 0.0399338522027804
-13683 6311 9019 0.0787211142615482 0.0787211142615482
-18919 10398 10391 0.0932116121589892 0.0932116121589892
-13684 9019 4301 0.0803301037321015 0.0803301037321015
-13685 4301 4499 0.100692334161908 0.100692334161908
-13686 4499 7815 0.0988002674680887 0.0988002674680887
-13687 7815 5071 0.0991802868019195 0.0991802868019195
-13688 5071 8014 0.103571412588639 0.103571412588639
-13689 8014 6833 0.0839453108807348 0.0839453108807348
-14657 9411 6735 0.143528351506247 0.143528351506247
-13691 6976 7946 0.0984345173677437 0.0984345173677437
-13692 7946 3301 0.0874467814940938 0.0874467814940938
-13693 3301 6365 0.0895995351805866 0.0895995351805866
-13694 6365 6654 0.083807023997277 0.083807023997277
-13695 6654 9165 0.68755983150845 0.68755983150845
-13696 9166 9167 0.0102840052604526 0.0102840052604526
-13698 7423 7832 0.102961269389569 0.102961269389569
-13699 7832 1182 0.0975615453999259 0.0975615453999259
-13700 1182 1359 0.100609727856237 0.100609727856237
-13701 1359 8086 0.0998738624212929 0.0998738624212929
-13702 8086 4842 0.0999569203615348 0.0999569203615348
-13703 4842 4377 0.103593486995353 0.103593486995353
-13704 4377 2859 0.305366704359361 0.305366704359361
-13705 2859 7625 0.0937028559888649 0.0937028559888649
-13706 7625 6669 0.0349417471907859 0.0349417471907859
-13707 6669 6928 0.181245567189969 0.181245567189969
-13708 6928 6929 0.056563910069816 0.056563910069816
-15200 9526 7443 0.0505254725980933 0.0505254725980933
-13710 3818 5176 0.0844451203946057 0.0844451203946057
-13711 5176 5900 0.0873882937906588 0.0873882937906588
-13712 5900 1602 0.0969475981594534 0.0969475981594534
-13713 1602 1645 0.147610823352004 0.147610823352004
-13714 1645 1658 0.00734081920779586 0.00734081920779586
-13715 1658 6715 0.113834950309784 0.113834950309784
-13717 4211 8097 0.0991353106844716 0.0991353106844716
-13719 9171 203 0.0903750729081993 0.0903750729081993
-13720 203 2931 0.102769081645998 0.102769081645998
-13721 2931 5312 0.098402268229521 0.098402268229521
-13722 5312 1469 0.0726981009727233 0.0726981009727233
-13723 1469 1468 0.023502610730772 0.023502610730772
-13724 1468 5448 0.104140699419407 0.104140699419407
-13726 3761 9166 0.069031653563667 0.069031653563667
-13728 4177 9172 0.109548350633249 0.109548350633249
-13730 9144 5946 0.201030224778112 0.201030224778112
-13731 5946 5137 0.27511296352744 0.27511296352744
-13732 5137 5152 0.0232058578864935 0.0232058578864935
-13733 5152 4907 0.10620133994029 0.10620133994029
-15464 1361 9615 0.0375616902705351 0.0375616902705351
-13734 4907 6615 0.200738818803378 0.200738818803378
-13735 6615 9173 0.1939198547813 0.1939198547813
-13736 9173 9174 0.208269220932895 0.208269220932895
-13738 9147 5947 0.203116974549126 0.203116974549126
-13740 7615 904 0.277200719177449 0.277200719177449
-13741 904 9175 0.127974248210887 0.127974248210887
-13743 7010 7421 0.0949619514323781 0.0949619514323781
-13744 7421 1142 0.0432881849429407 0.0432881849429407
-13745 1142 1147 0.0608947786947552 0.0608947786947552
-13746 1147 909 0.0792487229277921 0.0792487229277921
-13788 1669 9192 0.136278654988626 0.136278654988626
-13747 909 9176 0.125103752996271 0.125103752996271
-13748 9176 2771 0.202343174331141 0.202343174331141
-13749 2771 6895 0.198817638053719 0.198817638053719
-13753 9179 1 0.207517415173182 0.207517415173182
-13755 8437 9180 0.124967984057199 0.124967984057199
-13759 9182 4484 0.465234327006532 0.465234327006532
-13760 4484 4485 0.0326010116755978 0.0326010116755978
-13762 9183 9184 0.0646101092104256 0.0646101092104256
-13764 9185 9186 0.026977202251753 0.026977202251753
-13765 9186 9187 0.0154692834867904 0.0154692834867904
-13766 9187 6713 0.0145607005435147 0.0145607005435147
-13768 232 9188 0.0841812454433435 0.0841812454433435
-13770 9188 2561 0.00954099557633664 0.00954099557633664
-13773 8233 9190 0.00698491885871168 0.00698491885871168
-13774 9190 605 0.212601143616712 0.212601143616712
-13776 394 9191 0.174546619141482 0.174546619141482
-13779 294 4424 0.271505686802405 0.271505686802405
-13783 1892 4513 0.135635571790495 0.135635571790495
-13784 4513 5235 0.13338423256793 0.13338423256793
-13785 5235 6887 0.13498931648718 0.13498931648718
-13786 6887 8681 0.133693861256586 0.133693861256586
-13787 8681 1669 0.132070065253788 0.132070065253788
-13790 8903 8620 0.147899148341854 0.147899148341854
-13791 8620 6984 0.0740139001970076 0.0740139001970076
-13792 6984 4819 0.0711240597778575 0.0711240597778575
-13794 8514 8220 0.0695233221555377 0.0695233221555377
-13796 9193 9141 0.231480473302438 0.231480473302438
-13817 9194 8483 0.144876329810161 0.144876329810161
-13798 9193 9195 0.405940766693276 0.405940766693276
-13800 5081 9196 0.0826803218524669 0.0826803218524669
-13801 9196 7908 0.24773379383735 0.24773379383735
-13802 7908 1383 0.130538600450066 0.130538600450066
-13803 1383 4663 0.14493811446872 0.14493811446872
-13822 8286 9202 0.148093750497898 0.148093750497898
-13804 4663 9197 0.14786450905396 0.14786450905396
-13807 231 1184 0.314149545717651 0.314149545717651
-13808 1184 1364 0.114004540105804 0.114004540105804
-13810 1364 8087 0.130984174828509 0.130984174828509
-14659 939 5938 0.17856727191407 0.17856727191407
-14660 5938 3797 0.152203615831491 0.152203615831491
-13811 8087 9162 0.16050280483824 0.16050280483824
-13812 9162 9198 0.0132941963216631 0.0132941963216631
-18577 10320 10319 0.350878667314418 0.350878667314418
-20839 10930 10948 0.105680421147412 0.105680421147412
-13813 9198 9199 3.17004296851045 3.17004296851045
-17798 9592 10180 0.0765579819092659 0.0765579819092659
-13839 1284 9210 0.120028974895433 0.120028974895433
-13816 4931 9194 0.407318560179548 0.407318560179548
-13819 6705 8577 0.147047679886064 0.147047679886064
-13820 8577 5778 0.145526475675905 0.145526475675905
-13821 5778 8286 0.144657100371242 0.144657100371242
-13823 9202 9203 0.102081942931647 0.102081942931647
-13825 7891 9204 0.145701377036231 0.145701377036231
-13827 8994 9205 0.0106390736530004 0.0106390736530004
-13828 9205 8304 0.117212668938715 0.117212668938715
-13829 8304 6774 0.0328401658585753 0.0328401658585753
-13830 6774 3753 0.196045019335809 0.196045019335809
-13831 3753 8325 0.00916875381027056 0.00916875381027056
-13833 8444 9206 0.0130864665707206 0.0130864665707206
-13834 9206 9207 0.00957370688012094 0.00957370688012094
-13835 9207 9208 0.169933774193856 0.169933774193856
-13836 9208 9209 0.168302394118973 0.168302394118973
-15503 3939 5618 0.12194000294889 0.12194000294889
-13837 9209 2963 0.0205458196072096 0.0205458196072096
-13840 9210 9211 0.00588390321087397 0.00588390321087397
-13841 9211 22 0.0556252544592051 0.0556252544592051
-13842 22 6435 0.0767592442346679 0.0767592442346679
-13843 6435 636 0.0822615503744666 0.0822615503744666
-13844 636 9213 0.103246384420422 0.103246384420422
-13845 9213 535 0.0273108213340879 0.0273108213340879
-13846 535 9214 0.138573391347307 0.138573391347307
-13847 9214 8498 0.0276472257994952 0.0276472257994952
-13848 8498 8441 0.0465142466162739 0.0465142466162739
-13850 9215 8403 0.0487070540067587 0.0487070540067587
-13851 8403 1774 0.0526991311069308 0.0526991311069308
-13853 4412 9216 0.0527074152255093 0.0527074152255093
-13854 9216 4781 0.0501079093501001 0.0501079093501001
-14661 3797 9412 0.199399735185058 0.199399735185058
-13855 4781 1522 0.0511423250179406 0.0511423250179406
-13856 1522 5241 0.0480297777865987 0.0480297777865987
-13857 5241 463 0.0533178386766155 0.0533178386766155
-13859 9217 8420 0.0487543044755043 0.0487543044755043
-13860 8420 1773 0.0502154238610622 0.0502154238610622
-13862 4425 9218 0.050643583977918 0.050643583977918
-13863 9218 4823 0.0514478917449482 0.0514478917449482
-13864 4823 1521 0.0514834990326773 0.0514834990326773
-13865 1521 5262 0.0474439861374267 0.0474439861374267
-13866 5262 9219 0.0530746980864797 0.0530746980864797
-13868 6499 2472 0.199600310338802 0.199600310338802
-13870 7007 2282 0.0992844503488553 0.0992844503488553
-13872 3603 7529 0.0990493561706104 0.0990493561706104
-13873 7529 2137 0.105524175995486 0.105524175995486
-13874 2137 5994 0.104734285723653 0.104734285723653
-13875 5994 7674 0.100897460064117 0.100897460064117
-13996 5841 434 0.0624248318177171 0.0624248318177171
-13876 7674 9221 1.00510923817581 1.00510923817581
-13878 2804 5269 0.128688734978596 0.128688734978596
-13879 5269 6909 0.123348542786119 0.123348542786119
-13881 4480 5270 0.264392216770053 0.264392216770053
-13882 5270 6910 0.123553912188766 0.123553912188766
-13884 7761 6908 0.206924774668396 0.206924774668396
-13886 6907 7760 0.209013911598568 0.209013911598568
-13887 7760 9222 0.202410018751594 0.202410018751594
-13888 6905 7759 0.206351576128965 0.206351576128965
-13889 7759 6359 0.203865759483167 0.203865759483167
-13891 9223 6448 0.190233422734384 0.190233422734384
-13892 6448 6992 0.620734926195411 0.620734926195411
-13893 6992 2116 0.412221337604484 0.412221337604484
-13894 2116 7665 0.206015761732372 0.206015761732372
-13935 9237 254 0.129619446290563 0.129619446290563
-13895 7665 9224 1.85930539190202 1.85930539190202
-13896 9225 2398 0.224331288063009 0.224331288063009
-13897 2398 6361 0.106327129111224 0.106327129111224
-17281 7311 3273 0.201986093156211 0.201986093156211
-13899 6446 9223 0.123505309386589 0.123505309386589
-13901 8984 8975 0.295278766625452 0.295278766625452
-13903 8980 8981 0.155353173279186 0.155353173279186
-13905 9226 8104 0.184150710275748 0.184150710275748
-13907 9227 6946 0.038429344582371 0.038429344582371
-13912 6380 9229 0.104471273298691 0.104471273298691
-14662 9412 9300 0.189453948637121 0.189453948637121
-13916 566 9231 1.43965285379934 1.43965285379934
-13917 9136 9232 0.238873404598648 0.238873404598648
-13920 483 7284 0.0730945677376631 0.0730945677376631
-13928 278 6916 0.0415405366115252 0.0415405366115252
-13930 9235 9236 0.360270886139133 0.360270886139133
-13931 9236 2883 0.0595125074168401 0.0595125074168401
-13936 254 8324 0.235611866233999 0.235611866233999
-13938 8324 8310 0.066787627422688 0.066787627422688
-13940 8310 9241 0.146021189936251 0.146021189936251
-13944 9099 7796 0.300588795121337 0.300588795121337
-13948 9244 9113 0.144188675545464 0.144188675545464
-13950 9106 9244 0.0499156662848634 0.0499156662848634
-13952 9245 9246 0.123118530171941 0.123118530171941
-13954 405 406 0.0103894659763889 0.0103894659763889
-13955 406 9245 0.0664778537431541 0.0664778537431541
-13957 407 9033 0.137547423766831 0.137547423766831
-17289 5839 7744 0.201433070586795 0.201433070586795
-13965 9097 9248 0.39480102328572 0.39480102328572
-13966 9248 9249 0.0955291664142426 0.0955291664142426
-13968 9246 9248 0.157049002786803 0.157049002786803
-13976 3952 9252 0.0592126025244243 0.0592126025244243
-13977 9252 5605 0.0597855652504274 0.0597855652504274
-13978 5605 9253 0.0521408060475983 0.0521408060475983
-13979 9253 3728 0.0545524879363147 0.0545524879363147
-13981 7951 7949 0.019092168905179 0.019092168905179
-13983 7949 3093 0.182702780383174 0.182702780383174
-15893 9254 9255 0.183718623774573 0.183718623774573
-13984 3093 3203 0.200818235908537 0.200818235908537
-13985 3203 6116 0.201635970571119 0.201635970571119
-13986 6116 1913 0.201179241726354 0.201179241726354
-13987 1913 9219 0.201184980777767 0.201184980777767
-13988 9219 463 0.200400773809621 0.200400773809621
-13989 463 7301 0.202731579470961 0.202731579470961
-13990 7301 49 0.204762753950758 0.204762753950758
-13991 49 3548 0.19703986640102 0.19703986640102
-13992 3548 4243 0.201964288701916 0.201964288701916
-13993 4243 1803 0.208102375283595 0.208102375283595
-13994 1803 8711 0.194851559567089 0.194851559567089
-13995 8711 5841 0.20424687376631 0.20424687376631
-17660 586 8936 0.0435552950105704 0.0435552950105704
-13997 434 8731 0.0205731062854678 0.0205731062854678
-13999 3219 3112 0.203925882799295 0.203925882799295
-14000 3112 3641 0.260678130684959 0.260678130684959
-14001 3641 9256 0.0279085029397156 0.0279085029397156
-14003 9257 8801 0.0249979934697134 0.0249979934697134
-14665 4752 4167 0.209025457745472 0.209025457745472
-14005 9256 9257 0.0367111693692818 0.0367111693692818
-14007 9258 3642 0.0274131048639432 0.0274131048639432
-14008 3642 9259 0.086632322467807 0.086632322467807
-14009 9259 3111 0.171051850512145 0.171051850512145
-14010 3111 3219 0.203481486479522 0.203481486479522
-14012 7158 9258 0.038998695665846 0.038998695665846
-14014 3219 6126 0.202012344464496 0.202012344464496
-14015 6126 1929 0.202386985868189 0.202386985868189
-14016 1929 2919 0.0171463622508283 0.0171463622508283
-14017 2919 7250 0.183561589747783 0.183561589747783
-14018 7250 3274 0.20118632596822 0.20118632596822
-14019 3274 7312 0.203193267560765 0.203193267560765
-14021 9260 9157 0.0588873613464273 0.0588873613464273
-14022 9157 6253 0.473629275671798 0.473629275671798
-14023 6253 9167 0.20379925953003 0.20379925953003
-14024 9167 231 0.364607283214556 0.364607283214556
-14026 9171 2308 0.0877328075526686 0.0877328075526686
-14027 2308 167 0.314493617652356 0.314493617652356
-14030 6653 9263 0.598539344332022 0.598539344332022
-14031 5448 5975 0.113227741973857 0.113227741973857
-14032 5975 9023 0.0895901368528646 0.0895901368528646
-14033 9023 4404 0.197536219691709 0.197536219691709
-14034 4404 7371 0.107978748074207 0.107978748074207
-14035 7371 6307 0.0697549406367758 0.0697549406367758
-14036 6307 6308 0.0220857912106748 0.0220857912106748
-14037 6308 4316 0.20668661359579 0.20668661359579
-14038 4316 4503 0.0921482766473363 0.0921482766473363
-14039 4503 7814 0.109821870874264 0.109821870874264
-14040 7814 5079 0.102137328159445 0.102137328159445
-14041 5079 8013 0.0998289131041121 0.0998289131041121
-14042 8013 6832 0.10065041616734 0.10065041616734
-14043 6832 6975 0.0990932842629603 0.0990932842629603
-14044 6975 7945 0.100601003970672 0.100601003970672
-14045 7945 6364 0.097675013601381 0.097675013601381
-14049 9264 9265 0.128352927336665 0.128352927336665
-14051 3219 5061 0.0565378582983479 0.0565378582983479
-14052 5061 4916 0.0521329784642155 0.0521329784642155
-17662 488 10160 0.037999512945138 0.037999512945138
-14053 4916 5228 0.130202288917824 0.130202288917824
-14054 5228 5106 0.0572735085516971 0.0572735085516971
-14055 5106 5229 0.0124802378810982 0.0124802378810982
-14056 5229 4995 0.288542415463076 0.288542415463076
-14057 4995 9266 0.20116472075537 0.20116472075537
-14666 4167 6326 0.178657902009272 0.178657902009272
-14058 9266 7066 0.0118986523075564 0.0118986523075564
-14059 7066 3636 0.140199736242294 0.140199736242294
-14061 9266 6351 0.197550871457279 0.197550871457279
-14063 2574 5103 0.0764020591743967 0.0764020591743967
-14065 7930 1893 0.0520626532677435 0.0520626532677435
-14066 1893 2315 0.115168818798466 0.115168818798466
-14068 7341 6156 0.0983814711715662 0.0983814711715662
-14069 6156 6290 0.0991170792397538 0.0991170792397538
-14070 6290 3116 0.0983982120263374 0.0983982120263374
-14072 6673 8185 0.0325158694936318 0.0325158694936318
-14074 3188 9268 0.0244851420549388 0.0244851420549388
-14075 9268 8800 0.0276968906605859 0.0276968906605859
-14077 6718 9269 0.103071842817105 0.103071842817105
-14078 9269 8160 0.0477581921413061 0.0477581921413061
-14080 7342 3492 0.198422050793999 0.198422050793999
-14081 3492 9270 0.0991145839577047 0.0991145839577047
-17664 10161 6173 0.109897620785603 0.109897620785603
-14082 9270 5386 0.100577308895159 0.100577308895159
-14083 5386 9271 0.100588544879537 0.100588544879537
-14084 9271 6817 0.101321511979085 0.101321511979085
-14160 7023 7393 0.135757251453186 0.135757251453186
-14161 7393 9272 0.0789156635630832 0.0789156635630832
-14166 9278 7444 0.0517309727495982 0.0517309727495982
-14129 9279 9280 0.186364690747119 0.186364690747119
-14085 6817 9273 5.01601743028969 5.01601743028969
-14086 9274 6816 4.59997811614881 4.59997811614881
-14088 2943 5348 0.200890409378397 0.200890409378397
-14089 5348 3491 0.0990328236882064 0.0990328236882064
-14090 3491 2849 0.0998105211493863 0.0998105211493863
-14091 2849 7341 0.0991252344530307 0.0991252344530307
-14093 9271 6103 0.208876201356377 0.208876201356377
-14095 9270 6098 0.16565447863601 0.16565447863601
-14096 6098 9275 0.0444779706577198 0.0444779706577198
-14097 9269 6101 0.238835584318973 0.238835584318973
-17799 10180 8536 0.0726583525558809 0.0726583525558809
-14099 8294 9276 0.192103991232145 0.192103991232145
-14101 4423 9277 0.533016938094048 0.533016938094048
-14138 9282 9283 0.384483999025896 0.384483999025896
-14146 4993 9288 0.0718457938229626 0.0718457938229626
-14148 9288 471 0.0203590276008878 0.0203590276008878
-14149 471 6430 0.0161743745423695 0.0161743745423695
-14150 6430 4655 0.1348214737413 0.1348214737413
-14151 4655 1277 0.119151021074222 0.119151021074222
-14152 1277 4528 0.128606742393323 0.128606742393323
-14153 4528 9289 0.132757697104501 0.132757697104501
-14154 9289 9290 0.133347126872573 0.133347126872573
-14155 9290 9291 0.0102673262572307 0.0102673262572307
-14156 9291 6745 0.131970868855064 0.131970868855064
-14157 6745 6145 0.131356474267846 0.131356474267846
-14158 6145 4019 0.135781040149455 0.135781040149455
-14159 4019 7023 0.135014116939136 0.135014116939136
-14162 9272 3401 0.0502252760733361 0.0502252760733361
-14163 3401 9220 0.0499780107614713 0.0499780107614713
-17968 8778 10231 0.0192769916187002 0.0192769916187002
-14164 9220 8375 0.0494394335916504 0.0494394335916504
-14165 8375 9278 0.0493971533103994 0.0493971533103994
-14167 7444 9292 0.0498509119548639 0.0498509119548639
-14168 9292 7161 0.0504322249542888 0.0504322249542888
-14169 7161 9293 0.049549545616498 0.049549545616498
-14671 5473 9414 0.169600878974653 0.169600878974653
-14170 9293 7773 0.0509361632349417 0.0509361632349417
-14171 7773 9039 0.0499454477956979 0.0499454477956979
-14172 9039 1114 0.0547655871790504 0.0547655871790504
-14173 1114 9294 0.0447798115689078 0.0447798115689078
-14174 9294 7494 0.0527731793085291 0.0527731793085291
-14175 7494 9170 0.0488063990880333 0.0488063990880333
-14176 9170 3836 0.0502683027746479 0.0502683027746479
-14180 7818 2938 0.0876396467302253 0.0876396467302253
-14181 2938 6809 0.0888992165922937 0.0888992165922937
-14182 6809 1960 0.772041478396669 0.772041478396669
-17800 8536 8859 0.0293889142934455 0.0293889142934455
-14183 1960 9295 0.960771522024492 0.960771522024492
-14184 7571 9296 0.161476693063143 0.161476693063143
-14185 9296 8888 0.0634729683022204 0.0634729683022204
-14187 9297 6334 0.0129309336441387 0.0129309336441387
-14188 6334 7083 0.0225608570291498 0.0225608570291498
-14189 7083 8784 0.107920119748436 0.107920119748436
-14190 8784 8791 0.106332666658533 0.106332666658533
-14191 8791 3157 0.106749034536814 0.106749034536814
-14192 3157 4976 0.101195319793441 0.101195319793441
-14193 4976 9298 0.0996902493641346 0.0996902493641346
-14194 9298 9299 0.104226329823663 0.104226329823663
-14195 9299 6538 0.0493134523648135 0.0493134523648135
-14196 6538 5048 0.0489874238643872 0.0489874238643872
-14197 5048 8001 0.0994531494791736 0.0994531494791736
-14198 8001 985 0.0994551795792203 0.0994551795792203
-14199 985 5104 0.0491411684949994 0.0491411684949994
-14201 8831 9300 0.0488242916251385 0.0488242916251385
-14202 9300 7149 0.0497002324101769 0.0497002324101769
-14203 7149 2393 0.0492946529104208 0.0492946529104208
-14204 2393 5115 0.0502354677891233 0.0502354677891233
-14205 5115 9301 0.0497154080261439 0.0497154080261439
-14206 9301 4714 0.049399080188397 0.049399080188397
-14207 4714 8872 0.0991624253785381 0.0991624253785381
-14208 8872 7353 0.0988972303255353 0.0988972303255353
-14209 7353 5412 0.107964313206197 0.107964313206197
-14210 5412 3145 0.0906444248702148 0.0906444248702148
-14211 3145 3919 0.0988223626592478 0.0988223626592478
-18204 6875 8356 0.205977621151269 0.205977621151269
-14212 3919 3918 0.0189862588635382 0.0189862588635382
-14213 3918 1010 0.0826936905404967 0.0826936905404967
-14214 1010 6261 0.0974734196824701 0.0974734196824701
-14215 6261 8730 0.0989075877241795 0.0989075877241795
-14216 8730 7153 0.0605847994240266 0.0605847994240266
-14217 7153 5021 0.0499889577891061 0.0499889577891061
-14218 5021 9302 0.0549823108734392 0.0549823108734392
-14219 9302 3342 0.0335617577180335 0.0335617577180335
-14220 3342 3352 0.0674788037125104 0.0674788037125104
-14221 3352 7886 0.0299418452790484 0.0299418452790484
-14222 7886 7319 0.0732493043433617 0.0732493043433617
-14223 7319 7320 0.0259215863697348 0.0259215863697348
-14224 7320 7977 0.0775267077551995 0.0775267077551995
-14225 7977 7980 0.0233987016260196 0.0233987016260196
-14226 7980 2061 0.0796038188827741 0.0796038188827741
-14227 2061 8870 0.0167451229489977 0.0167451229489977
-14228 8870 2647 0.0876006586657796 0.0876006586657796
-14229 2647 8860 0.0114861984991212 0.0114861984991212
-14231 4113 8862 0.00848374045935965 0.00848374045935965
-14232 8862 8687 0.0949896568056219 0.0949896568056219
-14234 6694 8024 0.0782864986898227 0.0782864986898227
-14235 8024 8017 0.0158816052839578 0.0158816052839578
-18205 8356 10280 0.196081618210442 0.196081618210442
-14236 8017 7681 0.0911745487086236 0.0911745487086236
-14237 7681 3454 0.0980849682512979 0.0980849682512979
-14238 3454 6017 0.0971271293907499 0.0971271293907499
-14239 6017 9303 0.0906101063303862 0.0906101063303862
-14240 9303 3884 0.022021804982538 0.022021804982538
-14241 3884 9304 0.0244079810975188 0.0244079810975188
-14242 9304 852 0.0462417773626911 0.0462417773626911
-14243 852 847 0.0318832988859635 0.0318832988859635
-14244 847 9305 0.0129480432587025 0.0129480432587025
-14245 9305 7103 0.0469858120705144 0.0469858120705144
-14246 7103 7098 0.0440436114993002 0.0440436114993002
-14247 7098 8567 0.0448162532507988 0.0448162532507988
-14248 8567 8696 0.0173715559267549 0.0173715559267549
-14249 8696 8157 0.112872102261494 0.112872102261494
-14251 7606 7263 0.0986452262534628 0.0986452262534628
-14252 7263 7596 0.0935891946661749 0.0935891946661749
-14253 7596 2019 0.0979493336941006 0.0979493336941006
-14254 2019 2009 0.0254598809515577 0.0254598809515577
-14255 2009 9306 0.0651506123907477 0.0651506123907477
-14256 9306 2765 0.0942796454050606 0.0942796454050606
-14257 2765 7004 0.0945020258355606 0.0945020258355606
-14258 7004 2269 0.094510288095609 0.094510288095609
-14259 2269 3597 0.0938178496086605 0.0938178496086605
-14260 3597 7519 0.0940495689740582 0.0940495689740582
-14261 7519 2097 0.0954278502201834 0.0954278502201834
-14262 2097 5979 0.093364277402532 0.093364277402532
-14263 5979 7668 0.0947328877466294 0.0947328877466294
-14264 7668 2333 0.0940581587738673 0.0940581587738673
-14290 7340 2847 0.0976411590956878 0.0976411590956878
-14291 2847 3488 0.099134038329873 0.099134038329873
-14265 2333 9307 2.72967592410639 2.72967592410639
-14266 7939 9297 0.0419487931711618 0.0419487931711618
-14268 9308 8124 0.0322650869587369 0.0322650869587369
-14270 6489 4610 0.147433811602258 0.147433811602258
-14271 4610 9309 0.176778253451623 0.176778253451623
-14272 9309 9310 0.173976128689665 0.173976128689665
-14273 9310 661 0.00410310170227956 0.00410310170227956
-14274 661 9311 0.181937703339546 0.181937703339546
-14275 9311 9312 0.00955167864142152 0.00955167864142152
-14276 9312 5465 0.170285054650927 0.170285054650927
-14277 5465 9313 0.170744821866598 0.170744821866598
-14279 1959 9314 0.0338130460518869 0.0338130460518869
-14280 6865 9315 0.0139507857568572 0.0139507857568572
-14304 3303 9322 0.10510832723533 0.10510832723533
-14282 1952 1061 0.0629715521271105 0.0629715521271105
-14283 1061 1698 0.0954893713474356 0.0954893713474356
-14284 1698 7830 0.0914331784434328 0.0914331784434328
-14285 7830 6672 0.0912502234487567 0.0912502234487567
-14287 3115 6289 0.0998478865183477 0.0998478865183477
-14288 6289 6153 0.0969141122634902 0.0969141122634902
-14289 6153 7340 0.100591515239683 0.100591515239683
-14292 3488 5347 0.102266398355838 0.102266398355838
-14293 5347 5385 0.100999909961237 0.100999909961237
-14294 5385 2941 0.100298515709498 0.100298515709498
-14295 2941 6815 0.100200854484763 0.100200854484763
-14296 6815 9316 0.597950743493465 0.597950743493465
-14299 9318 9319 0.0328706223087289 0.0328706223087289
-14300 9319 9320 0.0460951861554719 0.0460951861554719
-14332 8959 603 0.0768028618845699 0.0768028618845699
-14301 9320 9321 0.0066600520489618 0.0066600520489618
-14302 9321 6181 0.104280480431139 0.104280480431139
-14303 6181 3303 0.107915728386056 0.107915728386056
-14305 9322 7829 0.125883411444605 0.125883411444605
-14306 7829 9323 0.0108681676592021 0.0108681676592021
-14339 5536 6469 0.142307267119589 0.142307267119589
-14309 2191 9060 0.337657954437192 0.337657954437192
-14312 8501 9324 0.0507516559976904 0.0507516559976904
-14313 9324 8418 0.0529402152835436 0.0529402152835436
-14314 8418 9204 0.0536170041098827 0.0536170041098827
-16428 9891 9892 0.0636662665142278 0.0636662665142278
-14316 9204 8416 0.0537868101405785 0.0537868101405785
-14317 8416 4388 0.0529171329453403 0.0529171329453403
-14318 4388 9325 0.0509479826022637 0.0509479826022637
-14319 9325 3012 0.0488022545854277 0.0488022545854277
-14320 3012 9326 0.0106897373905654 0.0106897373905654
-14321 9326 9327 0.0465239604768105 0.0465239604768105
-14322 9327 5968 0.0526629141875595 0.0526629141875595
-14323 5968 7574 0.106363762970419 0.106363762970419
-14324 7574 3677 0.190331060201359 0.190331060201359
-14326 604 9328 0.0383191315904674 0.0383191315904674
-14327 9328 8962 0.0878512488922689 0.0878512488922689
-14336 2420 3233 0.140764271648617 0.140764271648617
-14337 3233 5753 0.137661630591373 0.137661630591373
-14338 5753 5536 0.137436976875483 0.137436976875483
-14340 6469 8679 0.121371092902246 0.121371092902246
-14341 8679 9329 0.0309595800848719 0.0309595800848719
-20573 10860 10861 0.0279030600601915 0.0279030600601915
-14342 6914 8116 0.133600464645887 0.133600464645887
-14343 8116 2483 0.133445859176034 0.133445859176034
-14344 2483 2482 0.047686047945258 0.047686047945258
-14345 2482 2821 0.0880230568241511 0.0880230568241511
-14346 2821 1413 0.131238509050086 0.131238509050086
-14347 1413 1353 0.132733599584258 0.132733599584258
-14348 1353 7767 0.0733149237137966 0.0733149237137966
-14350 6729 2454 0.137919009046371 0.137919009046371
-14351 2454 3222 0.134234515444875 0.134234515444875
-14352 3222 5743 0.134597141931663 0.134597141931663
-14353 5743 5520 0.133175062767026 0.133175062767026
-14355 6454 6914 0.135018185869381 0.135018185869381
-14358 9331 5721 0.0487615183925519 0.0487615183925519
-14359 5721 7455 0.0500566721474228 0.0500566721474228
-14360 7455 7439 0.0502188861539984 0.0502188861539984
-14361 7439 9332 0.0497229240568787 0.0497229240568787
-14362 9332 7179 0.0495263907597367 0.0495263907597367
-14363 7179 6514 0.0494836674166392 0.0494836674166392
-14364 6514 7769 0.0494751212766029 0.0494751212766029
-14365 7769 8353 0.0493044680149371 0.0493044680149371
-14366 8353 1088 0.0496035740367965 0.0496035740367965
-14367 1088 9333 0.0494070055394434 0.0494070055394434
-18206 10280 8329 0.00812836711491393 0.00812836711491393
-14368 9333 7511 0.0493300687211978 0.0493300687211978
-14369 7511 9334 0.0505963663421883 0.0505963663421883
-14370 9334 3859 0.0512115816031079 0.0512115816031079
-14371 3859 7593 0.0500990561172611 0.0500990561172611
-14372 7593 5584 0.0522011302499861 0.0522011302499861
-14376 6393 4066 0.134479200667361 0.134479200667361
-17290 7744 10084 0.402391291558362 0.402391291558362
-14377 4066 8345 0.135023999423797 0.135023999423797
-14378 8345 9290 0.135014881750995 0.135014881750995
-14380 9290 8343 0.132811220384574 0.132811220384574
-14381 8343 4290 0.133533987407519 0.133533987407519
-14382 4290 9335 0.135902936474728 0.135902936474728
-14383 9335 3489 0.0587665939642116 0.0587665939642116
-14384 3489 7712 0.0755904198902593 0.0755904198902593
-14385 7712 27 0.134715758792357 0.134715758792357
-14386 27 2969 0.137103389587981 0.137103389587981
-14387 2969 9336 0.0109860620784292 0.0109860620784292
-14388 9336 9337 0.167759812178903 0.167759812178903
-14389 9337 9206 0.00926254133366712 0.00926254133366712
-14390 9206 8977 0.0113535458246787 0.0113535458246787
-14391 8977 8972 0.0088289433819593 0.0088289433819593
-14392 8972 3592 0.0571990081351957 0.0571990081351957
-14393 3592 9338 0.0469245704560806 0.0469245704560806
-14394 9338 9339 0.0729443531618577 0.0729443531618577
-14395 9339 8232 0.00668286428887123 0.00668286428887123
-14396 8232 9340 0.00979627303730314 0.00979627303730314
-14397 9340 9341 0.118389238398527 0.118389238398527
-14398 9341 4525 0.00524840053732967 0.00524840053732967
-14399 4525 9342 0.013599142214923 0.013599142214923
-17917 5630 5173 0.1998812615077 0.1998812615077
-14400 9342 5242 0.122003116630053 0.122003116630053
-14401 5242 6892 0.132288650893496 0.132288650893496
-14402 6892 9343 0.135024052446379 0.135024052446379
-14403 9343 1682 0.135717283468362 0.135717283468362
-14404 1682 9344 0.13652220484586 0.13652220484586
-14405 9344 9345 0.105458278319657 0.105458278319657
-14406 9345 2418 0.102009831688775 0.102009831688775
-14407 2418 3242 0.101232559655988 0.101232559655988
-14408 3242 5748 0.0982858511104491 0.0982858511104491
-14409 5748 374 0.0623624460797668 0.0623624460797668
-14410 374 5523 0.0701701821949803 0.0701701821949803
-14411 5523 6457 0.135950108709595 0.135950108709595
-14412 6457 6915 0.143043041710545 0.143043041710545
-14413 6915 8113 0.201708935806819 0.201708935806819
-14414 8113 2832 0.20096393469179 0.20096393469179
-14415 2832 9346 0.204633312594591 0.204633312594591
-14416 9346 414 0.202451705011007 0.202451705011007
-14417 414 9347 0.0102632917291373 0.0102632917291373
-14419 9348 9349 0.0562572963351917 0.0562572963351917
-14420 9349 8300 0.00966827703924115 0.00966827703924115
-14421 8300 6777 0.0385409578619094 0.0385409578619094
-14422 6777 1544 0.0462211024255861 0.0462211024255861
-14423 1544 7912 0.0490573153021717 0.0490573153021717
-14424 7912 1233 0.049290008691593 0.049290008691593
-14426 6137 1235 0.0484278864865507 0.0484278864865507
-14427 1235 4023 0.0513600630217092 0.0513600630217092
-14429 9350 6747 0.132068580931606 0.132068580931606
-14430 6747 6147 0.133962898476652 0.133962898476652
-14431 6147 4021 0.132523387247295 0.132523387247295
-14432 4021 7025 0.136778977327424 0.136778977327424
-14433 7025 7395 0.133533581691074 0.133533581691074
-14434 7395 3404 0.129273092410981 0.129273092410981
-14437 6743 6143 0.132668974575322 0.132668974575322
-14439 4017 7021 0.135416440349126 0.135416440349126
-15949 9764 9765 0.0507119344408952 0.0507119344408952
-14440 7021 2253 0.0670945211351968 0.0670945211351968
-14441 2253 7391 0.0705505249778064 0.0705505249778064
-14442 7391 8378 0.0284601613193826 0.0284601613193826
-14443 8378 9352 0.0168078916798857 0.0168078916798857
-14444 9352 9164 0.0309569561418734 0.0309569561418734
-14445 9164 3399 0.0498252251835071 0.0498252251835071
-14446 3399 9201 0.0503897904067021 0.0503897904067021
-14447 9201 8373 0.0497143012199282 0.0497143012199282
-14448 8373 9353 0.0509790068650631 0.0509790068650631
-14449 9353 7441 0.0496189650212473 0.0496189650212473
-14450 7441 7159 0.100702050774509 0.100702050774509
-14451 7159 9354 0.0494661713985568 0.0494661713985568
-14452 9354 7771 0.0505861336269105 0.0505861336269105
-14453 7771 9120 0.0493839312690347 0.0493839312690347
-14454 9120 1112 0.0512647827333792 0.0512647827333792
-14455 1112 9355 0.0498795134320378 0.0498795134320378
-14456 9355 7492 0.0488194630548967 0.0488194630548967
-14457 7492 9168 0.0520827219058429 0.0520827219058429
-14460 9356 8961 0.0504011792295747 0.0504011792295747
-14461 8961 3748 0.0493839208030821 0.0493839208030821
-14462 3748 6769 0.0968984775923487 0.0968984775923487
-14463 6769 6149 0.102435146849327 0.102435146849327
-14465 3994 7051 0.102115193238577 0.102115193238577
-14466 7051 1408 0.0946641824527164 0.0946641824527164
-14467 1408 7388 0.085462530975882 0.085462530975882
-14468 7388 7384 0.0170925061959903 0.0170925061959903
-18773 9634 9642 0.177090825598433 0.177090825598433
-14469 7384 3431 0.0989346539047275 0.0989346539047275
-14470 3431 7700 0.0518438186201772 0.0518438186201772
-14471 7700 5704 0.048946112444104 0.048946112444104
-14472 5704 9357 0.0519385112225497 0.0519385112225497
-14473 9357 7431 0.0487842422429383 0.0487842422429383
-14474 7431 9358 0.0504551193593522 0.0504551193593522
-14475 9358 7172 0.0479047859915454 0.0479047859915454
-14476 7172 6792 0.0511502123352556 0.0511502123352556
-14477 6792 7632 0.00188047440472113 0.00188047440472113
-14478 7632 7787 0.0496192518214323 0.0496192518214323
-14480 9359 8535 0.0508077855400009 0.0508077855400009
-14481 8535 6765 0.145782759028854 0.145782759028854
-14482 6765 3990 0.201170058672575 0.201170058672575
-14484 1252 9360 0.0508116162596578 0.0508116162596578
-14485 9360 2713 0.151002345273532 0.151002345273532
-14486 2713 9361 0.150151679268698 0.150151679268698
-14487 9361 9345 0.0467087251829664 0.0467087251829664
-14489 604 9362 0.304555126012675 0.304555126012675
-19303 10466 10464 0.0570509910756543 0.0570509910756543
-14490 9362 3931 0.0491525010465484 0.0491525010465484
-14491 3931 5621 0.101973762448865 0.101973762448865
-14492 5621 3706 0.101962569966911 0.101962569966911
-14493 3706 712 0.103443032392629 0.103443032392629
-14494 712 9192 0.0968373320357312 0.0968373320357312
-14495 9192 9363 0.0080975223718546 0.0080975223718546
-14496 9363 8516 0.0893732443225825 0.0893732443225825
-14497 8516 4192 0.13424362136155 0.13424362136155
-14498 4192 2518 0.136440133151325 0.136440133151325
-14499 2518 6729 0.134978640871206 0.134978640871206
-14500 6729 1227 0.0997687727623418 0.0997687727623418
-14501 1227 4806 0.0366740513167213 0.0366740513167213
-14502 4806 4807 0.0623613194343192 0.0623613194343192
-14503 4807 9364 0.0735708513932139 0.0735708513932139
-14505 2172 9365 0.10218559205586 0.10218559205586
-14506 9365 6421 0.131466128237451 0.131466128237451
-14507 6421 4627 0.133072729014262 0.133072729014262
-14508 4627 1251 0.132619751836754 0.132619751836754
-14509 1251 9366 0.0509582244384895 0.0509582244384895
-14510 9366 4559 0.0827794726054668 0.0827794726054668
-14511 4559 2712 0.0689589814233185 0.0689589814233185
-14512 2712 2728 0.0619836012735683 0.0619836012735683
-14513 2728 9367 0.087518882590742 0.087518882590742
-14514 9367 9344 0.0476225838725891 0.0476225838725891
-14515 9344 9368 0.00985438954363147 0.00985438954363147
-14516 9368 9369 0.0491094576501381 0.0491094576501381
-18778 10124 10345 0.0125614259192805 0.0125614259192805
-14517 9369 7774 0.00626697755243391 0.00626697755243391
-14518 7774 6761 0.141378168804538 0.141378168804538
-14519 6761 3985 0.199192140414955 0.199192140414955
-14521 7053 7044 0.0653254811284965 0.0653254811284965
-14522 7044 7387 0.0682830004024069 0.0682830004024069
-14523 7387 3430 0.133588924605445 0.133588924605445
-14524 3430 7686 0.0503796411863715 0.0503796411863715
-14525 7686 5703 0.0508582113883613 0.0508582113883613
-14526 5703 9370 0.0488667197641872 0.0488667197641872
-14527 9370 7429 0.0516445969542144 0.0516445969542144
-14528 7429 9371 0.0490112318671292 0.0490112318671292
-14529 9371 7171 0.0508482971319457 0.0508482971319457
-14530 7171 7624 0.0496771306838175 0.0496771306838175
-14531 7624 7786 0.0493747865229187 0.0493747865229187
-14532 7786 6545 0.0503324450079726 0.0503324450079726
-14533 6545 1130 0.0509050056370777 0.0509050056370777
-14534 1130 9372 0.0485943238040251 0.0485943238040251
-14535 9372 7501 0.0507738202300539 0.0507738202300539
-14536 7501 3847 0.101870167526128 0.101870167526128
-14537 3847 9373 0.0504389434046066 0.0504389434046066
-14538 9373 5568 0.0510557052627446 0.0510557052627446
-14539 5568 7550 0.0950790701641584 0.0950790701641584
-18779 10345 10346 0.00436025817920743 0.00436025817920743
-14540 7550 9374 0.691166878065482 0.691166878065482
-14542 9375 3750 0.0991970412293978 0.0991970412293978
-14543 3750 6775 0.030090245676364 0.030090245676364
-14544 6775 6770 0.06895159402243 0.06895159402243
-14545 6770 6151 0.0638158634824408 0.0638158634824408
-14546 6151 6150 0.0359509846886602 0.0359509846886602
-14547 6150 3996 0.0963309366011696 0.0963309366011696
-14548 3996 7052 0.102479688313932 0.102479688313932
-14549 7052 7045 0.0330120960596164 0.0330120960596164
-14550 7045 1410 0.0660204937565387 0.0660204937565387
-14551 1410 7375 0.0682166301368544 0.0682166301368544
-14552 7375 7385 0.0295959064634691 0.0295959064634691
-14553 7385 3434 0.103723384358152 0.103723384358152
-14554 3434 7763 0.0498679267683769 0.0498679267683769
-14555 7763 5714 0.0489397855227354 0.0489397855227354
-14556 5714 9376 0.0504544990745908 0.0504544990745908
-14557 9376 7434 0.0512120959316622 0.0512120959316622
-14558 7434 9377 0.0478236988076173 0.0478236988076173
-14559 9377 7173 0.0504644501870281 0.0504644501870281
-14560 7173 6757 0.0487932478126772 0.0487932478126772
-14561 6757 7788 0.0524425771479912 0.0524425771479912
-14562 7788 6629 0.0465854765801166 0.0465854765801166
-14563 6629 1135 0.050756073904441 0.050756073904441
-14564 1135 6996 0.0489590899927541 0.0489590899927541
-14565 6996 7502 0.0500614988346772 0.0500614988346772
-14566 7502 9378 0.0592142721743878 0.0592142721743878
-14567 9378 9379 0.0408406813526211 0.0408406813526211
-14568 9379 7525 0.051644217383113 0.051644217383113
-14569 7525 9380 0.00488834581127681 0.00488834581127681
-14570 9380 9381 0.0137184453378057 0.0137184453378057
-14571 9381 5577 0.0352923239739852 0.0352923239739852
-14572 5577 9382 0.0499195542635391 0.0499195542635391
-14573 9382 9383 0.00207675636441744 0.00207675636441744
-14574 9383 9384 0.047500863548095 0.047500863548095
-14575 9384 9385 0.692939297157353 0.692939297157353
-14576 9347 9386 0.0638147684012153 0.0638147684012153
-14578 9386 7985 0.00659385915044033 0.00659385915044033
-14579 7985 9389 0.0876122732807676 0.0876122732807676
-14581 9390 9391 0.0645406329993705 0.0645406329993705
-14583 9391 413 0.0102638039419597 0.0102638039419597
-14584 413 9392 0.19657163498794 0.19657163498794
-14586 2833 2489 0.134959283423391 0.134959283423391
-14587 2489 8106 0.133489509437131 0.133489509437131
-14588 8106 9375 0.13422540798818 0.13422540798818
-14589 9375 5534 0.213451017222507 0.213451017222507
-14590 5534 9356 0.201724072155003 0.201724072155003
-14591 9356 9393 0.10196574773319 0.10196574773319
-14592 9393 9359 0.100498646625457 0.100498646625457
-14593 9359 9394 0.0995312761976722 0.0995312761976722
-14594 9394 9368 0.101332513335273 0.101332513335273
-14595 9368 9395 0.0524188937894899 0.0524188937894899
-14597 7373 1659 0.103861210410172 0.103861210410172
-14598 1659 7753 0.101665764300136 0.101665764300136
-14599 7753 6893 0.102477314257262 0.102477314257262
-14600 6893 5249 0.10178809746081 0.10178809746081
-14601 5249 9396 0.145009648698155 0.145009648698155
-14602 9396 5880 0.0121536325330439 0.0121536325330439
-14603 5880 9397 0.00548191654733534 0.00548191654733534
-14606 8233 9399 0.00646043089308406 0.00646043089308406
-14607 9399 3593 0.11814466181621 0.11814466181621
-14608 3593 8990 0.0502713142680652 0.0502713142680652
-14610 8994 8444 0.0112418070839832 0.0112418070839832
-14611 8444 9400 0.0106637167987107 0.0106637167987107
-14612 9400 9401 0.175022698409133 0.175022698409133
-14613 9401 2970 0.0101077489563562 0.0101077489563562
-15358 9566 9564 0.0244609132808449 0.0244609132808449
-15359 9564 9567 0.0131773798008107 0.0131773798008107
-18780 10346 10347 0.0407216504299826 0.0407216504299826
-14614 2970 8339 0.136426769448966 0.136426769448966
-14615 8339 9348 0.135169766224191 0.135169766224191
-17064 4880 9474 0.196578675384766 0.196578675384766
-14616 9348 9402 0.134813162708373 0.134813162708373
-14618 9350 8341 0.135569890655856 0.135569890655856
-14619 8341 9291 0.132813255317002 0.132813255317002
-14620 9291 9403 0.135124075128598 0.135124075128598
-14621 9403 9351 0.135070525267418 0.135070525267418
-14622 9351 6393 0.134155373542404 0.134155373542404
-14624 9393 8920 0.0508713694865286 0.0508713694865286
-14625 8920 6767 0.14583235659915 0.14583235659915
-14626 6767 3992 0.20138079206452 0.20138079206452
-14628 9389 6049 0.0198174454501223 0.0198174454501223
-14629 6049 5790 0.202409458864074 0.202409458864074
-14630 5790 9404 0.390889741592557 0.390889741592557
-14631 9389 8000 0.0874325326194809 0.0874325326194809
-14632 8000 9390 0.00587109212749533 0.00587109212749533
-14634 9405 9387 0.104292734331338 0.104292734331338
-14643 6926 912 0.0399977157837286 0.0399977157837286
-14645 3853 9379 0.0160272455480019 0.0160272455480019
-14646 9379 8109 0.188409381404142 0.188409381404142
-14647 8109 9407 0.202174997774683 0.202174997774683
-18781 10347 10348 0.0132995316754344 0.0132995316754344
-14649 5569 7551 0.0943021955909244 0.0943021955909244
-14650 7551 9408 0.692224615113747 0.692224615113747
-14651 7543 9409 0.0534301345278006 0.0534301345278006
-14652 6725 4821 0.0796194906426482 0.0796194906426482
-14653 4821 2511 0.108135424106199 0.108135424106199
-14654 2511 8224 0.0376491716837282 0.0376491716837282
-14787 9415 9416 0.31094582672675 0.31094582672675
-14791 2891 8923 0.457832400708685 0.457832400708685
-14793 5024 3335 0.0983906046596767 0.0983906046596767
-14795 7882 7337 0.102026433082927 0.102026433082927
-14796 7337 7986 0.092185977990205 0.092185977990205
-14797 7986 2055 0.0946262859427162 0.0946262859427162
-14798 2055 2661 0.105023750774947 0.105023750774947
-14799 2661 4134 0.100547305543173 0.100547305543173
-14800 4134 6697 0.0891067622100312 0.0891067622100312
-14801 6697 8020 0.0955965901798936 0.0955965901798936
-14802 8020 7684 0.0959578997394599 0.0959578997394599
-14803 7684 3458 0.0944062286409825 0.0944062286409825
-14804 3458 9418 0.046227752797198 0.046227752797198
-14805 9418 6020 0.0461318959590008 0.0461318959590008
-14806 6020 9419 0.0476773807861996 0.0476773807861996
-19851 10660 10659 0.00933491084100046 0.00933491084100046
-14807 9419 9420 0.0464971294902911 0.0464971294902911
-14808 9420 9421 0.0470997921907546 0.0470997921907546
-14809 9421 858 0.0457230540386264 0.0457230540386264
-14810 858 453 0.0467078777528092 0.0467078777528092
-14811 453 7106 0.0457758284617094 0.0457758284617094
-14812 7106 457 0.0455135048722811 0.0455135048722811
-14813 457 9422 0.0463689143813771 0.0463689143813771
-14815 9423 9424 0.00582356405087118 0.00582356405087118
-14817 9425 6432 0.0926350815349589 0.0926350815349589
-14818 6432 4657 0.117278685803448 0.117278685803448
-14819 4657 1280 0.116593491044555 0.116593491044555
-14820 1280 4531 0.132186730302242 0.132186730302242
-14951 7670 9457 3.41600373692151 3.41600373692151
-14952 3583 7612 0.0941905477613176 0.0941905477613176
-14953 7612 7265 0.0936588343585109 0.0936588343585109
-14955 7584 2001 0.0944700456489753 0.0944700456489753
-14956 2001 3361 0.0949233780276755 0.0949233780276755
-14957 3361 2755 0.0936752171867012 0.0936752171867012
-14958 2755 7006 0.0959502415519421 0.0959502415519421
-14959 7006 2281 0.099513679348955 0.099513679348955
-14960 2281 3582 0.100891029071921 0.100891029071921
-14961 3582 7528 0.100887947066067 0.100887947066067
-14962 7528 2136 0.103412071247308 0.103412071247308
-14963 2136 5993 0.100671897064821 0.100671897064821
-14964 5993 7673 0.0999667195935639 0.0999667195935639
-14986 8886 7162 0.0452381047162121 0.0452381047162121
-14985 8878 8886 0.104437941202429 0.104437941202429
-14987 7162 9309 0.0512658726512666 0.0512658726512666
-15109 7996 6927 0.0217805821755954 0.0217805821755954
-15110 6927 5675 0.030815905152866 0.030815905152866
-14965 7673 9461 2.89733038736532 2.89733038736532
-14966 8151 7610 0.094248596661074 0.094248596661074
-15088 2328 9485 2.88346551451846 2.88346551451846
-15089 9486 3468 0.447301506508283 0.447301506508283
-15090 3468 3445 0.0309512876225537 0.0309512876225537
-15091 3445 7699 0.105014135175069 0.105014135175069
-15092 7699 9487 0.105691765273947 0.105691765273947
-15093 9487 6684 0.102061996358298 0.102061996358298
-15094 6684 4128 0.108739719526669 0.108739719526669
-15095 4128 9488 0.104836941153267 0.104836941153267
-15096 9488 2082 0.105803010632854 0.105803010632854
-15097 2082 7334 0.1052078044876 0.1052078044876
-15101 9489 2994 0.0812267643509346 0.0812267643509346
-15105 2996 4851 0.0525302115232072 0.0525302115232072
-15106 4851 7227 0.0344830493164063 0.0344830493164063
-15107 7227 2369 0.0550241369558443 0.0550241369558443
-15108 2369 7996 0.056554238974086 0.056554238974086
-16370 9877 8705 0.102117755919592 0.102117755919592
-16371 8705 9486 0.014467692878557 0.014467692878557
-16373 8076 3329 0.0677844820507112 0.0677844820507112
-16374 3329 7880 0.139626392785753 0.139626392785753
-16375 7880 7333 0.105584363104376 0.105584363104376
-16376 7333 2081 0.10500807653965 0.10500807653965
-16377 2081 2678 0.105119136499329 0.105119136499329
-16491 6692 8028 0.103532298857838 0.103532298857838
-16379 4127 6683 0.108621189217377 0.108621189217377
-16385 9881 9882 0.0163548118473388 0.0163548118473388
-16386 9882 9458 0.0203986664758761 0.0203986664758761
-16394 3281 9883 0.00468216635493236 0.00468216635493236
-16396 9884 9458 0.0218243339760988 0.0218243339760988
-16398 9883 9884 0.00648970201006769 0.00648970201006769
-16400 9885 9886 0.267423928903385 0.267423928903385
-16401 9886 9880 0.296075289776302 0.296075289776302
-16403 9878 9881 0.0274154521009071 0.0274154521009071
-16404 9881 9887 0.0188694353495207 0.0188694353495207
-16405 9887 9888 0.0187489585891175 0.0187489585891175
-19509 10534 10535 0.00388440521802765 0.00388440521802765
-16425 3407 9890 0.502103946549802 0.502103946549802
-16426 9890 3331 0.0251683632208894 0.0251683632208894
-16481 7888 3680 0.0532502584498927 0.0532502584498927
-16483 4595 8006 0.101626087251738 0.101626087251738
-16484 8006 580 0.022127419381672 0.022127419381672
-16485 580 7979 0.165894151722243 0.165894151722243
-16486 7979 9923 0.0456395565118553 0.0456395565118553
-16487 9923 2066 0.0539845223115493 0.0539845223115493
-16488 2066 2641 0.100182277305196 0.100182277305196
-16489 2641 4107 0.0977431302735631 0.0977431302735631
-16490 4107 6692 0.10418977795868 0.10418977795868
-16492 8028 7698 0.0982299872130606 0.0982299872130606
-16493 7698 3443 0.0993337912559461 0.0993337912559461
-16494 3443 6011 0.101499429536563 0.101499429536563
-16495 6011 3878 0.0977083732706848 0.0977083732706848
-16496 3878 9924 0.0991972529095445 0.0991972529095445
-16497 9924 420 0.100553893040038 0.100553893040038
-16504 8592 9925 0.120377099914021 0.120377099914021
-16505 9925 9926 0.107491921110891 0.107491921110891
-16506 9926 9927 0.123107053114174 0.123107053114174
-16517 8288 3009 0.0410924117477314 0.0410924117477314
-16519 9451 4779 0.246284579163 0.246284579163
-16520 4779 6557 0.132912762129515 0.132912762129515
-16521 6557 9306 0.107414375743234 0.107414375743234
-16523 5147 9150 0.0526798805531595 0.0526798805531595
-16527 862 703 0.202686588734239 0.202686588734239
-16528 703 9924 0.202942846886287 0.202942846886287
-16533 9141 9155 0.0471076181125112 0.0471076181125112
-16549 9936 8118 0.163748197039451 0.163748197039451
-16550 8118 4329 0.102460572786022 0.102460572786022
-16551 4329 9932 0.0509040459853039 0.0509040459853039
-16552 9932 5034 0.0506801147751554 0.0506801147751554
-16553 5034 9935 0.0507841642169636 0.0507841642169636
-16554 9935 7991 0.0519996695117493 0.0519996695117493
-16555 7991 9939 0.0501954054420559 0.0501954054420559
-16557 2889 8382 0.106173445564903 0.106173445564903
-16558 8382 8542 0.105198351895408 0.105198351895408
-16559 8542 4730 0.104923019039301 0.104923019039301
-16560 4730 6797 0.109090547930583 0.109090547930583
-16561 6797 7349 0.101581569748298 0.101581569748298
-16562 7349 5395 0.107089477151985 0.107089477151985
-16563 5395 8556 0.104796077599276 0.104796077599276
-17270 82 7309 0.202171029293651 0.202171029293651
-16564 8556 3897 0.106860413590027 0.106860413590027
-16565 3897 1030 0.106538064092827 0.106538064092827
-16566 1030 6272 0.104663636918357 0.104663636918357
-16567 6272 9940 0.0522044777389819 0.0522044777389819
-16568 9940 9941 0.0539741744852114 0.0539741744852114
-16570 5969 9942 0.0525274850765404 0.0525274850765404
-16571 9942 9943 0.0464624768491459 0.0464624768491459
-16572 9943 3013 0.00948387351005329 0.00948387351005329
-16573 3013 9944 0.0499659888588949 0.0499659888588949
-16574 9944 4387 0.0525459349585223 0.0525459349585223
-16575 4387 8415 0.053989635677053 0.053989635677053
-16576 8415 9945 0.0518942546071768 0.0518942546071768
-16577 9945 8419 0.054710567315966 0.054710567315966
-16578 8419 9946 0.0495941326709913 0.0495941326709913
-16579 9946 8502 0.0543577768356107 0.0543577768356107
-16580 8502 8537 0.0523876514778538 0.0523876514778538
-16581 8537 9591 0.106159293603162 0.106159293603162
-16582 9591 9318 0.0186755424929809 0.0186755424929809
-16584 3674 9947 0.0925100597395306 0.0925100597395306
-16585 9947 9936 0.0741653442201567 0.0741653442201567
-16586 9936 5811 0.0698256524972049 0.0698256524972049
-16587 5811 7575 0.109874082628797 0.109874082628797
-16588 7575 8407 0.0534887493842637 0.0534887493842637
-16589 8407 5969 0.0514820185730379 0.0514820185730379
-16615 5811 5357 0.148515460139762 0.148515460139762
-16616 5357 8119 0.104815937410374 0.104815937410374
-16621 9938 9956 0.0146143299800706 0.0146143299800706
-16622 9956 9957 0.0128596804561102 0.0128596804561102
-16624 9958 9959 0.0111717692412778 0.0111717692412778
-16625 9959 9960 0.00928483420505699 0.00928483420505699
-16626 9960 9938 0.0070355984277229 0.0070355984277229
-16628 9961 9962 0.526903283655783 0.526903283655783
-16630 9963 9312 1.46582798607179 1.46582798607179
-16633 9965 9966 0.00412165910041822 0.00412165910041822
-16634 9966 9967 0.0757681110838303 0.0757681110838303
-16638 9965 9957 0.0717225435233069 0.0717225435233069
-16640 9964 9958 0.0807216833328343 0.0807216833328343
-16642 9967 9956 0.0290555152245672 0.0290555152245672
-16645 565 7092 0.0721739648747923 0.0721739648747923
-16646 7092 9969 0.0060839008927764 0.0060839008927764
-16658 651 9973 0.109528403212781 0.109528403212781
-16660 3165 8089 0.106908291090671 0.106908291090671
-16662 9927 8897 0.00902355166325831 0.00902355166325831
-16663 8897 8899 0.00817755039331079 0.00817755039331079
-16665 8896 8898 0.0955954321276197 0.0955954321276197
-16666 8898 3166 0.0120380596695599 0.0120380596695599
-16726 3074 5275 0.102580698126288 0.102580698126288
-16727 5275 6866 0.0979724094285353 0.0979724094285353
-17386 5920 919 0.177782086780631 0.177782086780631
-16728 6866 5172 0.198907590330119 0.198907590330119
-16730 8563 6368 0.270917565484422 0.270917565484422
-16731 6368 9149 0.131210826087923 0.131210826087923
-16779 73 3512 0.203753724402901 0.203753724402901
-16780 3512 4254 0.201507995491671 0.201507995491671
-16781 4254 8742 0.199898657335298 0.199898657335298
-16782 8742 8713 0.201418841949 0.201418841949
-16784 3511 4252 0.198740800817733 0.198740800817733
-16785 4252 8741 0.201811596521788 0.201811596521788
-16786 8741 8712 0.201811329628688 0.201811329628688
-16794 4264 8747 0.202686112287629 0.202686112287629
-16795 8747 8718 0.200629598901607 0.200629598901607
-16797 4264 9864 0.0549036584382557 0.0549036584382557
-16798 9864 6516 0.0494449113838383 0.0494449113838383
-16799 6516 9855 0.048981731510525 0.048981731510525
-16800 9855 6160 0.0501282016561891 0.0501282016561891
-16801 6160 9852 0.0487763612951203 0.0487763612951203
-16802 9852 2738 0.0474245519497852 0.0474245519497852
-16803 2738 9267 0.050437767682916 0.050437767682916
-16804 9267 4512 0.0485383641713966 0.0485383641713966
-16805 4512 9858 0.0494525517955229 0.0494525517955229
-16807 3171 9861 0.047855446066228 0.047855446066228
-16808 9861 4996 0.0491871460939442 0.0491871460939442
-16810 728 3665 0.0984709387661759 0.0984709387661759
-16811 3665 7315 0.0976596112157836 0.0976596112157836
-16812 7315 4586 0.099898936211385 0.099898936211385
-16813 4586 8032 0.100609280081376 0.100609280081376
-16814 8032 6372 0.100607138332673 0.100607138332673
-16815 6372 10015 0.0481181392934118 0.0481181392934118
-16816 10015 4826 0.0474935217651045 0.0474935217651045
-16817 4826 8954 0.102669069502609 0.102669069502609
-16818 8954 8956 0.0962963283421786 0.0962963283421786
-16819 8956 10016 0.0513191391251647 0.0513191391251647
-16820 10016 8816 0.0499640269903021 0.0499640269903021
-16821 8816 8828 0.0154260311566384 0.0154260311566384
-16822 8828 8206 0.163758839265649 0.163758839265649
-16824 7312 87 0.200996583193063 0.200996583193063
-16825 87 3523 0.203555810471145 0.203555810471145
-16826 3523 4264 0.199602301480838 0.199602301480838
-16828 7312 3648 0.154169800390109 0.154169800390109
-16832 10017 593 0.487939330962151 0.487939330962151
-16851 8718 9866 0.0548710295017979 0.0548710295017979
-16854 9854 6162 0.0501051333475743 0.0501051333475743
-16855 6162 9851 0.0483439490024107 0.0483439490024107
-16856 9851 2740 0.0471290060929331 0.0471290060929331
-16857 2740 9863 0.0493697108471136 0.0493697108471136
-16858 9863 5231 0.0496606668462506 0.0496606668462506
-16859 5231 9857 0.0497084193128251 0.0497084193128251
-16860 9857 3173 0.0501789646371779 0.0501789646371779
-16861 3173 9860 0.0494391268160734 0.0494391268160734
-16862 9860 4998 0.0489685461673918 0.0489685461673918
-16863 4998 10023 0.0484162493280967 0.0484162493280967
-16864 10023 730 0.0507353905968115 0.0507353905968115
-16865 730 7061 0.101358904320696 0.101358904320696
-16867 8718 5830 0.204166330856198 0.204166330856198
-16868 5830 7737 0.202033972193846 0.202033972193846
-16869 7737 10024 0.307945705057077 0.307945705057077
-16870 594 7303 0.202197872623945 0.202197872623945
-16871 7303 66 0.20266387330283 0.20266387330283
-16872 66 3507 0.204877942956717 0.204877942956717
-16873 3507 233 0.199133503403233 0.199133503403233
-16874 233 8739 0.200473333247617 0.200473333247617
-16876 9203 4390 0.147691017735613 0.147691017735613
-16878 1943 10025 0.122583563426404 0.122583563426404
-16879 10025 7860 0.110082433757866 0.110082433757866
-16880 7860 4679 0.101138191051348 0.101138191051348
-16881 4679 4942 0.0999327202014087 0.0999327202014087
-16882 4942 7214 0.0998696563081419 0.0998696563081419
-16883 7214 4928 0.0376169687692631 0.0376169687692631
-16884 4928 9636 0.014060573587084 0.014060573587084
-16886 9870 1167 0.138451400347842 0.138451400347842
-16887 1167 887 0.138706454254422 0.138706454254422
-16888 887 4471 0.139683302205089 0.139683302205089
-16890 9488 1170 0.13939401140641 0.13939401140641
-16891 1170 890 0.137058995578611 0.137058995578611
-16892 890 4474 0.140851028519895 0.140851028519895
-16893 4474 2796 0.132878137732711 0.132878137732711
-16894 2796 5265 0.13228574865076 0.13228574865076
-16895 5265 10026 0.123565762779561 0.123565762779561
-16896 5633 7143 0.082551113540924 0.082551113540924
-16899 8743 4255 0.199339176026767 0.199339176026767
-16905 6305 6456 0.135927811837651 0.135927811837651
-16906 6456 5521 0.134557743068365 0.134557743068365
-16907 5521 5744 0.134669392965434 0.134669392965434
-16908 5744 3224 0.133413468985769 0.133413468985769
-16909 3224 2456 0.134335811293817 0.134335811293817
-16910 2456 9365 0.137895860915298 0.137895860915298
-16911 9365 1677 0.134681074434199 0.134681074434199
-16912 1677 10027 0.135027096454707 0.135027096454707
-16913 10027 6891 0.134223449290887 0.134223449290887
-16914 6891 5239 0.133857055503606 0.133857055503606
-16915 5239 4520 0.134947645289316 0.134947645289316
-16916 4520 8229 0.133768415422039 0.133768415422039
-16917 8229 6091 0.136267738734572 0.136267738734572
-16918 6091 7927 0.0726325260844626 0.0726325260844626
-16919 7927 7846 0.0557691009082279 0.0557691009082279
-16920 7846 9410 0.0110872018563396 0.0110872018563396
-16921 9410 6730 0.0681749492551086 0.0681749492551086
-16922 6730 10028 0.0472579211328822 0.0472579211328822
-16923 10028 2954 0.0113307920442751 0.0113307920442751
-16924 2954 10029 0.0100409346238736 0.0100409346238736
-16925 10029 6168 0.125005736653953 0.125005736653953
-16926 6168 7701 0.0662611499745025 0.0662611499745025
-16927 7701 8987 0.0202942911891754 0.0202942911891754
-16928 8987 9213 0.01474166778393 0.01474166778393
-16929 9213 7708 0.0256851882115953 0.0256851882115953
-16930 7708 10030 0.0413405317485577 0.0413405317485577
-16931 10030 10031 0.036234422910969 0.036234422910969
-16932 10031 9423 0.0490701245377313 0.0490701245377313
-16934 10027 6419 0.132846643372958 0.132846643372958
-16935 6419 4626 0.132395451164353 0.132395451164353
-16936 4626 1249 0.132966501814055 0.132966501814055
-16937 1249 4558 0.132618380312988 0.132618380312988
-16938 4558 2727 0.131821083937229 0.131821083937229
-16939 2727 9343 0.133429127887654 0.133429127887654
-16941 8228 10032 0.0522172382940556 0.0522172382940556
-16942 10032 4519 0.0809723084454978 0.0809723084454978
-16943 4519 5238 0.135835767836828 0.135835767836828
-16944 5238 6890 0.133656501060031 0.133656501060031
-16945 6890 8682 0.133080513446367 0.133080513446367
-16946 8682 10033 0.014533820296874 0.014533820296874
-16947 10033 10034 0.045058130648326 0.045058130648326
-16948 10034 10035 0.0185816236497386 0.0185816236497386
-16949 10035 1675 0.0576680457580287 0.0576680457580287
-16950 1675 9364 0.135024432224183 0.135024432224183
-16955 10039 10040 0.0721995210382621 0.0721995210382621
-16958 10037 10041 0.0717852961267022 0.0717852961267022
-16966 10043 10031 0.025182886777608 0.025182886777608
-16969 10045 10039 0.0209823477511839 0.0209823477511839
-16971 8478 9438 0.0521271400869927 0.0521271400869927
-16972 9438 8905 0.0558565070780073 0.0558565070780073
-16974 8478 4846 0.326789742990523 0.326789742990523
-17070 9465 4599 0.173875508685798 0.173875508685798
-16976 8474 1065 0.0530498075975429 0.0530498075975429
-16977 1065 1604 0.0517738709202157 0.0517738709202157
-16978 1604 2199 0.109121538786623 0.109121538786623
-16979 2199 4846 0.101668961251418 0.101668961251418
-16981 8583 10046 0.0456665785984412 0.0456665785984412
-16982 10046 8467 0.0226345136731024 0.0226345136731024
-16983 8467 9624 0.0229241644266869 0.0229241644266869
-16985 2321 10047 0.097235186001144 0.097235186001144
-16987 4279 6406 0.146870704035985 0.146870704035985
-16988 6406 635 0.144187230253749 0.144187230253749
-16989 635 5325 0.14662773102424 0.14662773102424
-16990 5325 2031 0.146219173461136 0.146219173461136
-19672 10610 10608 0.149537813443153 0.149537813443153
-16991 2031 7082 0.144853503450252 0.144853503450252
-16992 7082 5509 0.146165117461088 0.146165117461088
-16993 5509 4460 0.146698487596664 0.146698487596664
-16994 4460 6579 0.146306787683811 0.146306787683811
-16995 6579 8050 0.147127627497255 0.147127627497255
-16996 8050 998 0.0663040704360148 0.0663040704360148
-16997 998 8404 0.225438240771773 0.225438240771773
-16998 8404 9322 0.147049060577026 0.147049060577026
-16999 9322 8853 0.146215405021224 0.146215405021224
-17000 8853 7901 0.148314641191611 0.148314641191611
-17001 7901 8294 0.139664345335099 0.139664345335099
-17002 8294 8275 0.153027219017765 0.153027219017765
-17003 8275 5787 0.145945595293254 0.145945595293254
-17004 5787 4818 0.144804477618788 0.144804477618788
-17005 4818 10048 0.148574277364319 0.148574277364319
-17006 10048 10049 0.141579838501947 0.141579838501947
-17007 10049 10050 0.0340492732837983 0.0340492732837983
-17012 10052 2402 0.196242393649725 0.196242393649725
-17032 8989 10060 0.00622693936167768 0.00622693936167768
-17033 10060 10061 0.0756461423573197 0.0756461423573197
-17034 10061 2960 0.00915137839377932 0.00915137839377932
-17036 9211 23 0.0239583762029722 0.0239583762029722
-17042 1225 7845 0.140995210775646 0.140995210775646
-17043 7845 6089 0.129051193087075 0.129051193087075
-17044 6089 8226 0.135326560563343 0.135326560563343
-17107 6692 328 0.0434519039634918 0.0434519039634918
-17046 1226 8903 0.113651762618459 0.113651762618459
-17048 10065 6628 1.29415946940766 1.29415946940766
-17050 10066 4340 0.062140618563636 0.062140618563636
-17051 4340 5636 0.138107358521106 0.138107358521106
-17052 5636 3565 0.143998480732308 0.143998480732308
-17053 3565 824 0.136450026224328 0.136450026224328
-17054 824 7840 0.139827641423356 0.139827641423356
-17055 7840 10067 0.139718785770158 0.139718785770158
-17056 10067 8131 0.276864248380317 0.276864248380317
-17058 2251 4883 0.177313835055438 0.177313835055438
-17059 4883 9473 0.195033286388948 0.195033286388948
-17060 9473 5482 0.176110607852179 0.176110607852179
-17187 10072 4065 0.107057267328692 0.107057267328692
-17188 4065 8344 0.135746766447532 0.135746766447532
-17189 8344 9289 0.134278993416053 0.134278993416053
-17190 9289 8342 0.133553201715071 0.133553201715071
-17191 8342 4289 0.132478531756059 0.132478531756059
-17192 4289 8346 0.0683305663670944 0.0683305663670944
-17193 8346 9426 0.0684183152680821 0.0684183152680821
-17194 9426 3584 0.0602567059919197 0.0602567059919197
-17195 3584 7710 0.0737335540738928 0.0737335540738928
-17196 7710 26 0.134781615428443 0.134781615428443
-17197 26 2966 0.136258381357618 0.136258381357618
-17256 4853 9479 0.17362135223772 0.17362135223772
-17257 9479 5456 0.178335939458279 0.178335939458279
-17258 5456 10081 0.171904914212928 0.171904914212928
-17259 10081 9468 0.0143846440391869 0.0143846440391869
-17260 9468 651 0.173171640777506 0.173171640777506
-17261 651 9463 0.177611656329381 0.177611656329381
-17262 9463 4619 0.178590206270819 0.178590206270819
-17263 4619 6483 0.145677633501431 0.145677633501431
-17264 6483 5356 0.195804224423801 0.195804224423801
-17272 3269 7248 0.202454633754466 0.202454633754466
-17273 7248 1925 0.201278474909205 0.201278474909205
-17274 1925 6124 0.199550873736161 0.199550873736161
-17275 6124 3214 0.201694321030812 0.201694321030812
-17277 8746 4263 0.201096167532594 0.201096167532594
-17278 4263 3522 0.200484985070532 0.200484985070532
-17279 3522 86 0.203786942061633 0.203786942061633
-17280 86 7311 0.202274691239897 0.202274691239897
-17313 8120 4330 0.101819432050732 0.101819432050732
-17314 4330 9933 0.0499862309964707 0.0499862309964707
-17315 9933 5036 0.0532026214375408 0.0532026214375408
-17316 5036 9934 0.0508858224299175 0.0508858224299175
-17317 9934 7989 0.0496485523816978 0.0496485523816978
-17318 7989 10087 0.0512786229284607 0.0512786229284607
-17319 10087 2893 0.052637962933787 0.052637962933787
-17320 2893 8384 0.104983198266762 0.104983198266762
-17321 8384 8544 0.106333933974543 0.106333933974543
-17322 8544 4732 0.104863197448763 0.104863197448763
-17323 4732 6799 0.109607467159477 0.109607467159477
-17325 7351 5397 0.105666168592591 0.105666168592591
-17326 5397 10067 0.0531956914071383 0.0531956914071383
-17327 10067 8558 0.0516135381916136 0.0516135381916136
-17328 8558 3899 0.109335032698536 0.109335032698536
-17329 3899 1035 0.101631825737619 0.101631825737619
-17330 1035 10070 0.0547697896222192 0.0547697896222192
-17331 10070 6274 0.051631982755097 0.051631982755097
-17332 6274 10071 0.0521047224845183 0.0521047224845183
-17333 10071 10088 0.0548081026494783 0.0548081026494783
-17334 10088 581 0.115692672611639 0.115692672611639
-17335 581 3544 1.0812915383048 1.0812915383048
-17336 3544 10089 0.426746641833072 0.426746641833072
-17337 10089 8702 0.015131733429425 0.015131733429425
-17338 8702 8151 0.097451189179214 0.097451189179214
-17340 1827 3084 0.201158270757163 0.201158270757163
-17341 3084 3196 0.201063388532037 0.201063388532037
-17342 3196 6111 0.203191571447184 0.203191571447184
-17343 6111 1904 0.198857964292004 0.198857964292004
-17344 1904 7240 0.195269710490606 0.195269710490606
-17345 7240 3253 0.196518038239943 0.196518038239943
-17347 10090 3086 0.200629327787617 0.200629327787617
-17348 3086 3198 0.202620201680719 0.202620201680719
-17349 3198 6113 0.202237159025195 0.202237159025195
-17350 6113 1907 0.200888583811516 0.200888583811516
-17351 1907 7242 0.194884252844044 0.194884252844044
-17352 7242 9217 0.00483789456398776 0.00483789456398776
-17353 9217 3256 0.188566052149982 0.188566052149982
-17354 3256 9215 0.0119202066492219 0.0119202066492219
-17355 9215 7298 0.204144558375252 0.204144558375252
-17356 7298 41 0.19415380637197 0.19415380637197
-17357 41 3541 0.205611824864656 0.205611824864656
-17358 3541 4237 0.201941106279095 0.201941106279095
-17359 4237 1797 0.206450634390855 0.206450634390855
-17360 1797 6524 0.103413068253841 0.103413068253841
-17377 9185 10092 0.0314361336881962 0.0314361336881962
-17384 10093 10094 0.234828178944131 0.234828178944131
-17401 4251 8740 0.200540582414647 0.200540582414647
-17403 10096 4253 0.402448073126268 0.402448073126268
-17404 4253 71 0.405085488859101 0.405085488859101
-17409 7246 3265 0.200993245572831 0.200993245572831
-17410 3265 7307 0.200743622516842 0.200743622516842
-17411 7307 77 0.204688793990349 0.204688793990349
-17413 10097 10082 0.0500367848211035 0.0500367848211035
-17415 10098 10099 0.0500389645311151 0.0500389645311151
-17416 10099 10082 0.0162280043989145 0.0162280043989145
-17418 10100 10101 0.0207018118679025 0.0207018118679025
-17430 10092 10048 0.0309885486655971 0.0309885486655971
-17431 10048 8614 0.0518778938210734 0.0518778938210734
-17432 8614 8472 0.0531907688732488 0.0531907688732488
-17433 8472 1066 0.0523689032311119 0.0523689032311119
-17434 1066 1606 0.051557001219416 0.051557001219416
-17435 1606 8366 0.139200065042292 0.139200065042292
-17437 6713 10092 0.0743345743256074 0.0743345743256074
-17441 3193 3081 0.201349842824614 0.201349842824614
-17442 3081 10108 0.178416289777232 0.178416289777232
-17444 3193 6109 0.202397968765167 0.202397968765167
-17445 6109 1899 0.201875824929032 0.201875824929032
-17446 1899 7237 0.199007784951822 0.199007784951822
-17447 7237 3247 0.203972993087409 0.203972993087409
-17449 10109 7288 0.156689817874906 0.156689817874906
-17450 7288 33 0.190916174685026 0.190916174685026
-17451 33 3532 0.205910894729705 0.205910894729705
-17452 3532 6522 0.0640042155752525 0.0640042155752525
-17454 3078 3192 0.201894846275699 0.201894846275699
-17455 3192 6108 0.201673919779454 0.201673919779454
-17456 6108 1898 0.20260827746412 0.20260827746412
-17457 1898 7236 0.20276033286578 0.20276033286578
-17458 7236 3246 0.202520180127379 0.202520180127379
-17459 3246 10110 0.0550544054800148 0.0550544054800148
-17460 10110 7286 0.154666066923182 0.154666066923182
-17461 7286 29 0.190176683040096 0.190176683040096
-17463 1900 7238 0.196467409698081 0.196467409698081
-17464 7238 3249 0.197271278467775 0.197271278467775
-17465 3249 7293 0.215893772854934 0.215893772854934
-17466 7293 35 0.191661158901488 0.191661158901488
-17467 35 3534 0.208592623812739 0.208592623812739
-17468 3534 6523 0.163291338158479 0.163291338158479
-17470 10108 5278 0.0774622106782589 0.0774622106782589
-17471 5278 3080 0.101220750760019 0.101220750760019
-17472 3080 3193 0.201400503113628 0.201400503113628
-17474 5940 471 0.312751802930415 0.312751802930415
-18580 7765 5716 0.0511772806374418 0.0511772806374418
-17491 10112 10093 0.359402757134602 0.359402757134602
-17492 10093 10113 0.194903624807864 0.194903624807864
-17493 10113 2201 0.0582804268216835 0.0582804268216835
-17494 2201 10114 0.186967502007765 0.186967502007765
-17495 10114 8390 0.0733141120559894 0.0733141120559894
-17496 8390 10115 0.462273198293161 0.462273198293161
-17498 9631 400 0.267469433354519 0.267469433354519
-17531 10127 4931 0.0143150280274793 0.0143150280274793
-17499 400 10116 0.288854082427149 0.288854082427149
-17500 10116 10117 0.226779392941661 0.226779392941661
-17539 8982 8937 0.19614593492264 0.19614593492264
-17501 10117 10118 0.252256323985904 0.252256323985904
-17502 10118 8413 0.301706026949727 0.301706026949727
-17504 10094 9835 0.207906613588927 0.207906613588927
-17542 10131 10132 0.234004969584105 0.234004969584105
-17547 8426 8983 0.15801309875704 0.15801309875704
-17550 10130 10134 0.614829488291655 0.614829488291655
-17551 7135 4849 0.106906878995063 0.106906878995063
-17552 4849 915 0.103932392061615 0.103932392061615
-17553 915 2299 0.103080430089244 0.103080430089244
-17554 2299 10137 0.014910815675823 0.014910815675823
-17556 10137 9054 0.0810396295718394 0.0810396295718394
-17558 10138 6943 0.064892686762443 0.064892686762443
-17559 6943 8140 0.201702874937987 0.201702874937987
-17560 8140 10139 0.469612869716675 0.469612869716675
-17562 7137 211 0.0939410437080962 0.0939410437080962
-17563 211 480 0.0535285680999835 0.0535285680999835
-17598 6899 5259 0.128421696790864 0.128421696790864
-17566 8539 10140 0.135369629803794 0.135369629803794
-17568 10141 10142 0.0931846548427409 0.0931846548427409
-17575 10147 10148 0.0907607828573939 0.0907607828573939
-17576 10148 9823 0.350917184183612 0.350917184183612
-17577 9823 9805 0.0148959688810153 0.0148959688810153
-17578 9805 10149 0.0247571116201832 0.0247571116201832
-17579 10149 8243 0.229215025506836 0.229215025506836
-17580 8243 9502 0.0511227471188157 0.0511227471188157
-17581 9502 7326 0.0563854594047154 0.0563854594047154
-17582 7326 5762 0.0999481200631645 0.0999481200631645
-17583 5762 7873 0.0518041802099649 0.0518041802099649
-17584 7873 10150 0.102000136506063 0.102000136506063
-17585 10150 5014 0.098101103191891 0.098101103191891
-17586 5014 5058 0.089850875454823 0.089850875454823
-18718 7866 4048 0.178217561946718 0.178217561946718
-17587 5058 10151 0.211959888507267 0.211959888507267
-17589 215 9282 0.125167866609679 0.125167866609679
-17591 213 9816 0.299047510838406 0.299047510838406
-17593 9229 9826 0.176982927136907 0.176982927136907
-17595 6940 10152 0.0583015149781026 0.0583015149781026
-18120 6030 10257 0.0455676937571294 0.0455676937571294
-17597 5060 6899 0.402535335538281 0.402535335538281
-17599 5259 2791 0.130368767280199 0.130368767280199
-17600 2791 4469 0.135446736738612 0.135446736738612
-17601 4469 884 0.138505584507757 0.138505584507757
-17602 884 1164 0.139078051750381 0.139078051750381
-17603 1164 9871 0.139057579408235 0.139057579408235
-17604 9871 8075 0.138249096495162 0.138249096495162
-17605 8075 10153 0.00462704346608534 0.00462704346608534
-17606 10153 3043 0.14110788802663 0.14110788802663
-17607 3043 6341 0.135895639019006 0.135895639019006
-17608 6341 4343 0.137400774019599 0.137400774019599
-17609 4343 5639 0.138956387861239 0.138956387861239
-17610 5639 3570 0.141821620771527 0.141821620771527
-17611 3570 830 0.137661147763222 0.137661147763222
-17612 830 7843 0.140550687821679 0.140550687821679
-17613 7843 10088 0.137593188904098 0.137593188904098
-17614 10088 9941 0.137660243266343 0.137660243266343
-17615 9941 8135 0.139584464123887 0.139584464123887
-17616 8135 3690 0.141707714550209 0.141707714550209
-17617 3690 4596 0.241404416022683 0.241404416022683
-17619 5016 3319 0.0948083090873271 0.0948083090873271
-17620 3319 8996 0.0798486506362173 0.0798486506362173
-17621 8996 7874 0.0190759275307072 0.0190759275307072
-17622 7874 5755 0.0623471034770475 0.0623471034770475
-17623 5755 5758 0.0361266791563275 0.0361266791563275
-17624 5758 7327 0.0520708883616353 0.0520708883616353
-17626 5016 10154 0.164101634929309 0.164101634929309
-17627 10155 2882 0.710681950052773 0.710681950052773
-17629 8136 6947 0.130119100803365 0.130119100803365
-17630 6947 10156 0.0163542378359644 0.0163542378359644
-17631 10156 10157 0.00955659663824098 0.00955659663824098
-17632 10157 10158 0.00677541465471327 0.00677541465471327
-17633 10158 10152 0.00293705056146173 0.00293705056146173
-17634 10152 6939 0.0371287028604903 0.0371287028604903
-17636 3318 10150 0.0438638328395073 0.0438638328395073
-17714 9945 8394 0.147641485758692 0.147641485758692
-17659 10160 586 0.405583280940818 0.405583280940818
-17672 10163 8930 0.930392444069162 0.930392444069162
-17675 9053 10164 0.0371557833436508 0.0371557833436508
-17693 2913 2780 0.0748123840669465 0.0748123840669465
-17694 2780 7147 0.116677483921202 0.116677483921202
-17696 9056 10047 0.141134759881648 0.141134759881648
-17698 7147 5254 0.0284105210258417 0.0284105210258417
-17699 5254 10166 0.132906284217118 0.132906284217118
-17701 6403 10167 0.108541157226703 0.108541157226703
-17703 6403 6401 0.049228330409525 0.049228330409525
-17705 10168 10169 0.0501555453420122 0.0501555453420122
-17707 10047 10169 0.0474349977604191 0.0474349977604191
-17708 10169 9056 0.0939811582148226 0.0939811582148226
-17710 9947 3675 0.0669754214474556 0.0669754214474556
-17712 9204 9945 0.144775125391256 0.144775125391256
-17715 8394 2691 0.147869553829969 0.147869553829969
-17716 2691 8040 0.145836065451416 0.145836065451416
-17717 8040 6567 0.144877875233717 0.144877875233717
-17718 6567 4448 0.14778294563884 0.14778294563884
-17719 4448 8414 0.0749502518363333 0.0749502518363333
-17720 8414 5496 0.069451420913351 0.069451420913351
-17721 5496 7070 0.148876703091943 0.148876703091943
-17722 7070 2040 0.14567151330703 0.14567151330703
-17723 2040 8073 0.130264739930752 0.130264739930752
-17725 8076 3328 0.0639927694114461 0.0639927694114461
-17728 7879 7332 0.105697567981392 0.105697567981392
-17730 2080 2677 0.104069678874741 0.104069678874741
-17731 2677 4126 0.107112553379611 0.107112553379611
-17732 4126 6682 0.108353172096875 0.108353172096875
-17734 7925 5320 0.0826824039230849 0.0826824039230849
-17735 5320 2041 0.146468953410165 0.146468953410165
-17736 2041 7072 0.146479190259677 0.146479190259677
-17737 7072 5498 0.148482454254276 0.148482454254276
-17738 5498 4450 0.145207190897223 0.145207190897223
-17739 4450 6569 0.147094399400618 0.147094399400618
-17740 6569 8042 0.145385409804858 0.145385409804858
-17741 8042 2693 0.146247210391541 0.146247210391541
-17742 2693 8396 0.145676314519276 0.145676314519276
-17743 8396 9946 0.148129197746433 0.148129197746433
-17744 9946 9324 0.145860656071838 0.145860656071838
-17745 9324 10171 0.0856023563285992 0.0856023563285992
-17746 10171 7893 0.060719319188507 0.060719319188507
-17747 7893 10172 0.145992330998255 0.145992330998255
-17749 8285 5779 0.146744468691812 0.146744468691812
-17750 5779 8575 0.145685998707777 0.145685998707777
-17752 6706 10173 0.0983542102154105 0.0983542102154105
-17754 8485 10174 0.145917669946454 0.145917669946454
-17755 10174 4934 0.364858401137942 0.364858401137942
-17757 8073 5319 0.0151134525874084 0.0151134525874084
-17758 5319 2906 0.0542680076543073 0.0542680076543073
-17760 9487 1173 0.143948575233632 0.143948575233632
-17761 1173 893 0.138648954033686 0.138648954033686
-17762 893 4476 0.138420042799995 0.138420042799995
-17763 4476 2799 0.139158608638433 0.139158608638433
-17764 2799 5267 0.125667753140422 0.125667753140422
-17765 5267 6904 0.122725840536987 0.122725840536987
-17766 6904 7758 0.206944002479267 0.206944002479267
-17767 7758 6358 0.203735904589123 0.203735904589123
-17768 6358 2391 0.110758482838084 0.110758482838084
-17769 2391 7822 0.137036631860385 0.137036631860385
-17771 9877 903 0.274330614761652 0.274330614761652
-17772 903 9481 0.129817379023696 0.129817379023696
-17775 5984 2102 0.100487934544075 0.100487934544075
-17776 2102 6508 0.243143603771944 0.243143603771944
-17778 6993 399 0.279873647693424 0.279873647693424
-17779 399 10175 0.059173942672277 0.059173942672277
-17780 10175 6196 0.0719242777998184 0.0719242777998184
-17782 6196 10175 0.0719242777998184 0.0719242777998184
-17784 10175 10177 0.187235722056553 0.187235722056553
-17789 998 8512 0.0641582208600105 0.0641582208600105
-17790 8512 3305 0.0698159988608895 0.0698159988608895
-17802 9953 10171 0.0758245915635617 0.0758245915635617
-17803 10171 8417 0.0691188092256886 0.0691188092256886
-17804 8417 7892 0.0154287387029138 0.0154287387029138
-17805 7892 9203 0.0639309073349984 0.0639309073349984
-17844 5741 5515 0.1393794725611 0.1393794725611
-17807 998 2698 0.471311768879255 0.471311768879255
-17809 2563 997 0.102700798846865 0.102700798846865
-17811 9490 10181 0.787839518624737 0.787839518624737
-17813 10182 10183 0.017972037737444 0.017972037737444
-17814 8277 10182 0.0269375538426571 0.0269375538426571
-17824 10189 9815 0.381548994115635 0.381548994115635
-17826 10190 2445 0.108497544218855 0.108497544218855
-17827 2445 3235 0.140113229632804 0.140113229632804
-17828 3235 5740 0.13721905173768 0.13721905173768
-17829 5740 5514 0.142685575827079 0.142685575827079
-17830 5514 6451 0.135469883258712 0.135469883258712
-17831 6451 6918 0.118104639956123 0.118104639956123
-17832 6918 8114 0.200145379388081 0.200145379388081
-17841 10191 2446 0.12170288352426 0.12170288352426
-17842 2446 3236 0.138990302772576 0.138990302772576
-17843 3236 5741 0.138828799197264 0.138828799197264
-17845 5515 6452 0.137212079229824 0.137212079229824
-17846 6452 6919 0.118102418388258 0.118102418388258
-17847 6919 8115 0.204539971673672 0.204539971673672
-17848 8115 2817 0.195950897476267 0.195950897476267
-17850 1418 10192 0.0403415193863986 0.0403415193863986
-17854 10196 10197 0.298773764193864 0.298773764193864
-17858 10197 10201 0.0878537760845695 0.0878537760845695
-17859 10202 292 0.12590153135235 0.12590153135235
-17860 292 10203 0.0920635687067585 0.0920635687067585
-17862 8296 912 0.421752257927472 0.421752257927472
-17863 912 7280 0.346969669094077 0.346969669094077
-17865 7279 911 0.343598202777143 0.343598202777143
-17866 911 8296 0.421457000722742 0.421457000722742
-17899 10211 10209 0.112127267328736 0.112127267328736
-17868 10204 293 0.122668884457017 0.122668884457017
-17870 7280 10204 0.11154380602626 0.11154380602626
-17872 7280 10202 0.113468069847095 0.113468069847095
-17874 10203 305 0.0245172766294025 0.0245172766294025
-17876 10205 9191 0.0917966102805814 0.0917966102805814
-17877 9191 9065 0.0437309955207218 0.0437309955207218
-17879 305 7972 0.0096955565592884 0.0096955565592884
-17880 7972 289 0.0364664216753188 0.0364664216753188
-17882 291 10205 0.0247656280633611 0.0247656280633611
-17884 5356 3010 0.0411976507153233 0.0411976507153233
-17885 3010 9955 0.055133452370554 0.055133452370554
-17887 4390 9202 0.103596100254428 0.103596100254428
-17888 9202 10172 0.106228487315193 0.106228487315193
-17889 10172 8635 0.104885206719794 0.104885206719794
-17890 8635 10207 0.0526738998782486 0.0526738998782486
-17891 10207 8290 0.0540408904782361 0.0540408904782361
-17893 10181 10208 0.34674805442663 0.34674805442663
-17895 9277 9062 0.54179107306149 0.54179107306149
-17897 10209 10210 0.15255018083046 0.15255018083046
-17901 9277 10208 0.265946775924501 0.265946775924501
-17902 10208 10211 0.215451375996435 0.215451375996435
-17904 4431 5085 0.143171262303537 0.143171262303537
-17905 5085 2810 0.11012443165944 0.11012443165944
-17906 2810 4675 0.158582360684903 0.158582360684903
-17908 10212 9184 0.112885017008347 0.112885017008347
-17909 9184 10213 0.167377068446941 0.167377068446941
-18960 10410 7220 0.0501782415904674 0.0501782415904674
-17922 6563 8888 0.042430320182906 0.042430320182906
-18662 7647 10214 0.0701815380438801 0.0701815380438801
-17924 6563 9296 0.044068382651895 0.044068382651895
-17926 10215 7090 0.0147548324313622 0.0147548324313622
-17928 10216 4749 0.0152354550229313 0.0152354550229313
-17930 7570 10217 0.020843135953545 0.020843135953545
-17931 10217 10218 0.00309719141124637 0.00309719141124637
-17932 10218 10219 0.0172058483004327 0.0172058483004327
-17933 10219 10220 0.0101474090092483 0.0101474090092483
-17934 10220 10221 0.0360135260366549 0.0360135260366549
-17972 4922 2816 0.0400924263132539 0.0400924263132539
-17974 2816 6585 0.00731734573972315 0.00731734573972315
-17975 6585 5367 0.200230086509337 0.200230086509337
-17976 5367 7125 0.155428268463703 0.155428268463703
-17977 7125 613 0.178580861083004 0.178580861083004
-17978 613 10025 0.175711834233665 0.175711834233665
-17979 10025 5802 0.173776139007193 0.173776139007193
-17981 10240 4687 0.0705066389488715 0.0705066389488715
-17983 4687 4687 0.000550727458732684 0.000550727458732684
-17984 4687 4687 0.000550727458732684 0.000550727458732684
-18009 8002 984 0.100041012213977 0.100041012213977
-17985 4687 10240 0.0700034048729296 0.0700034048729296
-18666 5656 5188 0.106406434125344 0.106406434125344
-17988 7225 10241 0.0510702903225008 0.0510702903225008
-17989 10241 10242 0.042886354540747 0.042886354540747
-17990 10242 10243 0.00251406456949564 0.00251406456949564
-17991 10243 10244 0.0456685462506317 0.0456685462506317
-17992 10244 6646 0.0418628731234282 0.0418628731234282
-17993 6646 10245 0.0664019508555837 0.0664019508555837
-17994 10245 3947 0.060646848519195 0.060646848519195
-17995 3947 5379 0.0623892176423501 0.0623892176423501
-17997 1213 10080 0.0402726084737909 0.0402726084737909
-17998 10080 10246 0.108362052771117 0.108362052771117
-17999 10246 10095 0.0546330327153493 0.0546330327153493
-18000 10095 8786 0.0549646837479 0.0549646837479
-18001 8786 8792 0.105830391023483 0.105830391023483
-18002 8792 3158 0.105240490373796 0.105240490373796
-18159 4090 6035 0.19402761072914 0.19402761072914
-18003 3158 4977 0.10185576028858 0.10185576028858
-18004 4977 10247 0.0996051433548501 0.0996051433548501
-18005 10247 9657 0.103966153648075 0.103966153648075
-18006 9657 6607 0.0489689324196462 0.0489689324196462
-18007 6607 5049 0.0497044916016373 0.0497044916016373
-18008 5049 8002 0.0987213073079673 0.0987213073079673
-18010 984 5105 0.0497125648622764 0.0497125648622764
-18011 5105 8832 0.0485496698653307 0.0485496698653307
-18012 8832 9412 0.0501680163419149 0.0501680163419149
-18013 9412 7150 0.0490112280018507 0.0490112280018507
-18014 7150 2798 0.0490643527188194 0.0490643527188194
-18015 2798 5116 0.0499797709026575 0.0499797709026575
-18016 5116 9330 0.049524695482998 0.049524695482998
-18017 9330 4715 0.0504823610322626 0.0504823610322626
-18018 4715 8873 0.0985202776506121 0.0985202776506121
-18019 8873 7354 0.0991107696717597 0.0991107696717597
-18020 7354 5413 0.108951695628557 0.108951695628557
-18022 8149 8697 0.098981334337126 0.098981334337126
-18023 8697 10248 0.0156545770448285 0.0156545770448285
-18025 10248 7104 0.0902072497093339 0.0902072497093339
-18026 7104 449 0.046531670732617 0.046531670732617
-18027 449 854 0.0445732430501775 0.0445732430501775
-18028 854 10249 0.0446596776858281 0.0446596776858281
-18029 10249 9698 0.0482515561513205 0.0482515561513205
-18030 9698 10250 0.0474036186605965 0.0474036186605965
-18031 10250 6018 0.047797038051314 0.047797038051314
-18032 6018 10251 0.0473952539943275 0.0473952539943275
-18033 10251 3455 0.0464887102201997 0.0464887102201997
-18034 3455 7682 0.0950045363584629 0.0950045363584629
-19711 10628 10629 0.0313669947000456 0.0313669947000456
-18035 7682 8018 0.0938092255843609 0.0938092255843609
-18036 8018 6695 0.0944228486315978 0.0944228486315978
-18037 6695 4132 0.0905761672491303 0.0905761672491303
-18727 7644 9832 0.176300161007389 0.176300161007389
-18729 6212 7649 0.275730709453964 0.275730709453964
-18038 4132 8863 0.0309494848264702 0.0309494848264702
-18039 8863 2633 0.0676202306028496 0.0676202306028496
-18040 2633 8861 0.0311034897002001 0.0311034897002001
-18041 8861 2052 0.0676910103216562 0.0676910103216562
-18042 2052 8871 0.0313177900642343 0.0313177900642343
-18043 8871 7982 0.067271802615166 0.067271802615166
-18044 7982 7981 0.0326778162339826 0.0326778162339826
-18045 7981 7321 0.0976461329299173 0.0976461329299173
-18046 7321 7887 0.0987923725207189 0.0987923725207189
-18047 7887 3343 0.0990941084892765 0.0990941084892765
-18048 3343 5022 0.0986991080291596 0.0986991080291596
-18049 5022 8729 0.0995709770506032 0.0995709770506032
-18050 8729 6262 0.0984844587143486 0.0984844587143486
-18051 6262 1012 0.100435040495632 0.100435040495632
-18052 1012 3920 0.0983845018704443 0.0983845018704443
-18053 3920 3146 0.0986126436689597 0.0986126436689597
-18054 3146 5413 0.0895267655685447 0.0895267655685447
-18056 7083 10246 0.183851267240735 0.183851267240735
-19713 10624 10625 0.048946191319968 0.048946191319968
-18057 10246 3811 0.198873820859187 0.198873820859187
-18058 3811 5919 0.153816946395634 0.153816946395634
-18059 5919 918 0.176756350909337 0.176756350909337
-18060 918 2205 0.200653782293274 0.200653782293274
-18061 2205 4854 0.158832380963048 0.158832380963048
-18062 4854 9478 0.174098421618631 0.174098421618631
-18063 9478 5457 0.176480352381434 0.176480352381434
-18065 10252 9243 0.056682383190515 0.056682383190515
-18067 9110 10252 0.0330932350677699 0.0330932350677699
-18069 10253 6203 0.215345161639468 0.215345161639468
-18071 9115 10254 0.0491155354462148 0.0491155354462148
-18075 10254 10255 0.0642041289943666 0.0642041289943666
-18076 10255 10253 0.0461489416178021 0.0461489416178021
-18077 10253 9108 0.280904320228077 0.280904320228077
-18106 4661 10263 0.0487469518611321 0.0487469518611321
-18107 10263 1291 0.0497384845482417 0.0497384845482417
-18108 1291 10264 0.0496989025904687 0.0496989025904687
-18109 10264 4563 0.0505706606603651 0.0505706606603651
-18110 4563 10265 0.0486836289638941 0.0486836289638941
-18111 10265 6287 0.0497296125808977 0.0497296125808977
-18112 6287 10135 0.0504212055729903 0.0504212055729903
-18113 10135 2731 0.0489350482169507 0.0489350482169507
-18114 2731 6420 0.048465461986869 0.048465461986869
-18115 6420 5790 0.0578817224647719 0.0578817224647719
-18117 8844 10266 0.374943168729483 0.374943168729483
-18166 2719 9346 0.101115603929332 0.101115603929332
-18167 9346 9392 0.0111914858812043 0.0111914858812043
-18168 9392 3751 0.0968414516342271 0.0968414516342271
-18169 3751 10278 0.0782538471461698 0.0782538471461698
-18175 4073 6058 0.198316836648763 0.198316836648763
-18176 6058 5798 0.200796475018558 0.200796475018558
-18197 6750 5252 0.185979531851002 0.185979531851002
-18198 5252 3974 0.035323188020151 0.035323188020151
-18200 9357 2431 0.202519432604137 0.202519432604137
-18201 2431 9370 0.199383622965617 0.199383622965617
-18202 9370 1686 0.206118508992277 0.206118508992277
-18203 1686 6875 0.204292305654176 0.204292305654176
-18588 6666 1137 0.0495387040987843 0.0495387040987843
-18589 1137 6968 0.0501615414722825 0.0501615414722825
-18590 6968 7504 0.0501273333828588 0.0501273333828588
-18591 7504 9407 0.0988444534637431 0.0988444534637431
-18592 9407 7479 0.0538727285881741 0.0538727285881741
-18593 7479 5581 0.0510099428615072 0.0510099428615072
-18594 5581 10328 0.0992130715738959 0.0992130715738959
-18595 10328 10329 0.693578278671619 0.693578278671619
-18597 1845 2579 0.175048810960168 0.175048810960168
-18598 2579 5177 0.17911429796522 0.17911429796522
-18599 5177 10332 0.0225943601934419 0.0225943601934419
-18604 6211 7648 0.275618961394926 0.275618961394926
-18605 7648 8065 0.262676196305861 0.262676196305861
-18711 2590 5183 0.178568260386205 0.178568260386205
-18712 5183 5651 0.104244503206479 0.104244503206479
-18747 6210 10338 0.0125158344567017 0.0125158344567017
-18748 10338 10206 0.0559739547988456 0.0559739547988456
-18749 10206 10338 0.0559739547988456 0.0559739547988456
-18751 2596 5186 0.177768815603995 0.177768815603995
-18758 2588 5182 0.176322049262719 0.176322049262719
-18759 5182 5650 0.106248688527315 0.106248688527315
-18765 10339 10341 0.0322810460432902 0.0322810460432902
-18767 4492 10342 0.0173161946805903 0.0173161946805903
-18768 10342 10341 0.00848220864637094 0.00848220864637094
-18770 5616 10343 0.00845077111169589 0.00845077111169589
-18771 10343 10344 0.0509950035054565 0.0509950035054565
-18772 10344 9634 0.100553817919852 0.100553817919852
-18950 6234 7639 0.179364622734642 0.179364622734642
-18789 10350 10131 1.72659496196287 1.72659496196287
-18791 10210 10350 0.0784105528331039 0.0784105528331039
-18793 9064 10351 0.108141289805084 0.108141289805084
-18795 10351 8944 0.165792281012932 0.165792281012932
-18797 8946 8970 0.101566925839608 0.101566925839608
-18805 431 8911 0.368100622266312 0.368100622266312
-18807 8935 10353 0.0653020622045421 0.0653020622045421
-18865 217 6354 0.250152442533131 0.250152442533131
-18867 10372 10373 0.00433033984408308 0.00433033984408308
-18809 2956 8964 0.839971785186466 0.839971785186466
-18811 10353 8914 0.0131507104865587 0.0131507104865587
-18813 10354 8436 0.0634565167907247 0.0634565167907247
-18815 8440 10354 0.130317184994069 0.130317184994069
-18818 8431 4422 0.07184295360215 0.07184295360215
-18820 8435 10355 0.137076541565926 0.137076541565926
-18825 9181 10356 0.159461421615407 0.159461421615407
-18827 10357 10358 0.20146281055654 0.20146281055654
-18829 9180 10359 0.028613707454695 0.028613707454695
-18833 10360 10361 0.0535066603860974 0.0535066603860974
-18835 10361 10362 0.0845690343766548 0.0845690343766548
-18836 10362 9179 0.0218653086870073 0.0218653086870073
-19605 10512 10584 0.0688213399515618 0.0688213399515618
-20576 10864 10865 0.0279630258161778 0.0279630258161778
-18838 10363 8434 0.438288246661524 0.438288246661524
-18840 8433 10364 0.0515496120111284 0.0515496120111284
-18842 10365 10363 0.0256601639624377 0.0256601639624377
-18844 10364 10365 0.0354783965202197 0.0354783965202197
-18848 10367 8387 0.416611762681733 0.416611762681733
-18850 10366 10367 0.0267687636085769 0.0267687636085769
-18852 10368 10369 0.0527715034881913 0.0527715034881913
-18854 10370 10368 0.0348446889076446 0.0348446889076446
-18856 10371 10370 0.031482834490968 0.031482834490968
-18858 9836 10370 0.0328670117804623 0.0328670117804623
-18921 10399 10400 0.0895277934361984 0.0895277934361984
-18922 10400 10401 0.16717380860502 0.16717380860502
-18923 10402 10383 0.0291115464827756 0.0291115464827756
-18924 10383 10403 0.0309778660865677 0.0309778660865677
-18925 10403 10390 0.0429604527526701 0.0429604527526701
-18927 10404 10405 0.0626862314087788 0.0626862314087788
-18930 10406 10405 0.108269005965165 0.108269005965165
-18932 1241 6737 0.0570520014832054 0.0570520014832054
-18934 8100 6923 0.164900679548878 0.164900679548878
-18936 6923 8099 0.163064822440362 0.163064822440362
-18938 7928 8098 0.0730856765280865 0.0730856765280865
-18940 4039 4644 0.0827836448037734 0.0827836448037734
-18943 10407 7448 0.103189406011465 0.103189406011465
-19852 10659 3379 0.102335766847439 0.102335766847439
-18945 4142 10108 0.0206474020512083 0.0206474020512083
-18947 5674 2620 0.178145491343884 0.178145491343884
-18948 2620 5201 0.177501253416424 0.177501253416424
-18949 5201 6234 0.174487220572856 0.174487220572856
-18951 7639 8773 0.176238488140281 0.176238488140281
-18952 8773 8053 0.178917033730472 0.178917033730472
-18953 8053 6598 0.176988972177145 0.176988972177145
-18954 6598 10243 0.175681180141988 0.175681180141988
-18956 1841 7856 0.0582284853716934 0.0582284853716934
-18957 7856 4669 0.101085168807405 0.101085168807405
-18979 1764 4509 0.0491583937075752 0.0491583937075752
-18980 4509 4971 0.0991296803100638 0.0991296803100638
-18981 4971 1516 0.0482432726972035 0.0482432726972035
-18982 1516 5304 0.0536166306041211 0.0536166306041211
-18983 5304 7951 0.0505628420768163 0.0505628420768163
-18984 7951 7950 0.0124795676036534 0.0124795676036534
-18985 7950 1083 0.0132964314605761 0.0132964314605761
-18986 1083 8958 0.019091432638578 0.019091432638578
-18987 8958 1750 0.0565301426139895 0.0565301426139895
-18988 1750 6636 0.100698502633469 0.100698502633469
-18989 6636 5425 0.0992142460676437 0.0992142460676437
-18990 5425 7398 0.100582854167636 0.100582854167636
-18992 5674 10413 0.0446816032988726 0.0446816032988726
-18993 10413 6641 0.0419959523464037 0.0419959523464037
-18994 6641 3958 0.140215488391596 0.140215488391596
-18997 9265 10213 0.108979878639585 0.108979878639585
-19957 10683 10676 0.203409384148671 0.203409384148671
-18998 10213 9182 0.221716360786737 0.221716360786737
-18999 9182 4360 0.00485021965067944 0.00485021965067944
-19000 4360 6082 0.123504109096694 0.123504109096694
-19240 10459 8221 0.147319836582293 0.147319836582293
-19002 1269 4533 0.203350040591983 0.203350040591983
-19003 4533 8579 0.198512187124204 0.198512187124204
-19005 1841 2613 0.177111353706323 0.177111353706323
-19006 2613 10414 0.0530626159965885 0.0530626159965885
-19007 10414 5196 0.124494794308613 0.124494794308613
-19008 5196 6239 0.171651899926933 0.171651899926933
-19010 4186 4182 0.0154308679587021 0.0154308679587021
-19011 4182 3367 0.101326829934178 0.101326829934178
-19012 3367 3370 0.0389167828857067 0.0389167828857067
-19013 3370 10415 0.0493793417329401 0.0493793417329401
-19014 10415 7424 0.0519282840216647 0.0519282840216647
-19015 7424 10416 0.0508505433229276 0.0508505433229276
-19016 10416 7831 0.0497300351350067 0.0497300351350067
-19017 7831 9197 0.188452322853961 0.188452322853961
-19019 5549 10417 0.0198343104325793 0.0198343104325793
-19020 10417 2562 0.366597076665755 0.366597076665755
-19021 2562 9783 0.236171353579108 0.236171353579108
-19022 9783 9781 0.00643634199106272 0.00643634199106272
-19958 10676 10668 0.135367639799285 0.135367639799285
-19023 9781 9160 0.00367738923970995 0.00367738923970995
-19025 9156 9260 0.0939135311905937 0.0939135311905937
-19040 10419 435 0.0296899237003876 0.0296899237003876
-19042 6361 6912 0.413025051484806 0.413025051484806
-19043 6912 5272 0.122458972713872 0.122458972713872
-19044 5272 2806 0.132101617817113 0.132101617817113
-19045 2806 9480 0.135002111088791 0.135002111088791
-19046 9480 901 0.134968752710231 0.134968752710231
-19048 9486 9873 0.018915562611857 0.018915562611857
-19049 9873 3055 0.182137362251337 0.182137362251337
-19050 3055 9669 0.205422822851571 0.205422822851571
-19051 9669 4352 0.202508200405289 0.202508200405289
-19052 4352 7924 0.0557579828978423 0.0557579828978423
-19053 7924 7923 0.106391305814005 0.106391305814005
-19054 7923 3580 0.0580075342624614 0.0580075342624614
-19055 3580 788 0.184224770380015 0.184224770380015
-19056 788 10089 0.199795465587569 0.199795465587569
-19057 10089 491 0.20084069572648 0.20084069572648
-19058 491 489 0.205477824650125 0.205477824650125
-19059 489 4589 0.272976340428597 0.272976340428597
-19060 4589 1978 0.12991989572877 0.12991989572877
-19061 1978 1994 0.0147512164813181 0.0147512164813181
-19062 1994 705 0.187141061542779 0.187141061542779
-19063 705 642 0.0623803538473296 0.0623803538473296
-19064 642 10422 0.140896965982946 0.140896965982946
-19067 9469 4898 0.180547202392339 0.180547202392339
-19068 4898 4899 0.0469687370152221 0.0469687370152221
-19069 4899 9422 0.11449972298661 0.11449972298661
-19070 9422 2230 0.0888113879114828 0.0888113879114828
-19071 2230 961 0.0851419553312056 0.0851419553312056
-19072 961 5943 0.118166848545009 0.118166848545009
-19073 5943 8869 0.0594604755013997 0.0594604755013997
-19074 8869 3766 0.149125823202066 0.149125823202066
-19075 3766 10248 0.200641473563849 0.200641473563849
-19076 10248 1211 0.0471365210908597 0.0471365210908597
-19077 1211 8567 0.147435833594552 0.147435833594552
-19078 8567 6541 0.161851618274563 0.161851618274563
-19079 6541 4746 0.176177241775495 0.176177241775495
-19081 4159 2359 0.17021782028236 0.17021782028236
-19082 2359 9694 0.178145500592375 0.178145500592375
-19083 9694 5170 0.174004040417809 0.174004040417809
-19085 6362 6447 0.0914589915157797 0.0914589915157797
-19086 6447 2399 0.0149004167256546 0.0149004167256546
-19087 2399 9454 0.2205749898237 0.2205749898237
-19089 519 831 0.121986604363099 0.121986604363099
-19090 831 10147 0.141772461765667 0.141772461765667
-19091 10147 10428 0.0119979325853114 0.0119979325853114
-19093 8145 9501 0.0198122134799104 0.0198122134799104
-19094 9501 1751 0.0440125388452957 0.0440125388452957
-19095 1751 6012 0.168131959250809 0.168131959250809
-19096 6012 832 0.205336624614562 0.205336624614562
-19097 832 518 0.168135736431663 0.168135736431663
-19098 518 6513 0.0279910233322091 0.0279910233322091
-19099 6513 10419 0.0139795197071191 0.0139795197071191
-19102 10049 8612 0.0522928783615643 0.0522928783615643
-19103 8612 8474 0.0521996072275175 0.0521996072275175
-19142 5220 8777 0.146640601075408 0.146640601075408
-19105 10430 10358 0.245136281681027 0.245136281681027
-19108 5628 9568 0.110078124608504 0.110078124608504
-19110 8421 10357 0.296407311680596 0.296407311680596
-19114 2386 9558 0.0348995825647377 0.0348995825647377
-19115 9558 8798 0.125658984531748 0.125658984531748
-19120 8185 9450 0.339524971346509 0.339524971346509
-19121 9450 8690 0.0176125961717604 0.0176125961717604
-19122 8690 7659 0.0477249226862614 0.0477249226862614
-19123 7659 6718 0.103225505465316 0.103225505465316
-19125 2190 8128 0.151455687504874 0.151455687504874
-19126 8128 7827 0.106341251390527 0.106341251390527
-19127 7827 10432 0.221434541654845 0.221434541654845
-19128 10432 6961 0.0131395719721806 0.0131395719721806
-19129 6961 10433 0.0134328380462519 0.0134328380462519
-19130 10433 10434 0.0869062764565781 0.0869062764565781
-19131 10434 8597 0.00983583049657532 0.00983583049657532
-19132 8597 10435 0.0222534876112211 0.0222534876112211
-19134 10050 3168 0.0821216282435351 0.0821216282435351
-19141 7961 5220 0.0901667996290929 0.0901667996290929
-19144 8388 10437 0.320984694668417 0.320984694668417
-19146 10437 6962 0.186002986440568 0.186002986440568
-19147 6962 10438 0.0184374963317956 0.0184374963317956
-19148 10438 1881 0.209774050468257 0.209774050468257
-19149 1881 8569 0.224745848084877 0.224745848084877
-19150 8569 9988 0.0831717180377924 0.0831717180377924
-19151 9988 8477 0.0648356679758423 0.0648356679758423
-19152 8477 8463 0.0835421546655635 0.0835421546655635
-19960 9517 10684 0.210192276965542 0.210192276965542
-19154 8800 8811 0.31904932389546 0.31904932389546
-19162 10428 3871 0.0534454265709194 0.0534454265709194
-19163 3871 840 0.0992542187222657 0.0992542187222657
-19164 840 4272 0.128018795895479 0.128018795895479
-19166 9283 10439 0.0445989165425857 0.0445989165425857
-19168 10440 9282 0.395349042842448 0.395349042842448
-19170 7136 2300 0.0954980884416659 0.0954980884416659
-19171 2300 6804 0.197911548357853 0.197911548357853
-19173 7956 8539 0.0718200140953678 0.0718200140953678
-19174 8539 9282 0.0117697082839477 0.0117697082839477
-19176 10442 1349 0.0573473302810492 0.0573473302810492
-19178 10443 8521 0.0309849382045455 0.0309849382045455
-19180 10151 10440 0.0401979143660666 0.0401979143660666
-19182 10439 5059 0.220890379574485 0.220890379574485
-19183 5059 5013 0.0908635547178716 0.0908635547178716
-19184 5013 3349 0.0925982666666752 0.0925982666666752
-19185 3349 7877 0.0609717199349519 0.0609717199349519
-19186 7877 5761 0.0981025803398981 0.0981025803398981
-19187 5761 7325 0.0996396951750833 0.0996396951750833
-19961 10684 10674 0.204298559687633 0.204298559687633
-19188 7325 2064 0.0938077886809335 0.0938077886809335
-20575 10863 10864 0.0111548544892698 0.0111548544892698
-19189 2064 2650 0.094440127839499 0.094440127839499
-19801 7638 6235 0.180302575380181 0.180302575380181
-19190 2650 10444 0.141197448312795 0.141197448312795
-19191 10444 9821 0.0323105619062287 0.0323105619062287
-19192 9821 9822 0.0144436267959073 0.0144436267959073
-19193 9822 3476 0.28088366035949 0.28088366035949
-19194 3476 10445 0.0704996285836985 0.0704996285836985
-19195 10445 10428 0.0905303391563005 0.0905303391563005
-19197 10167 10442 0.0431387292722099 0.0431387292722099
-19199 8408 8568 0.191490020507546 0.191490020507546
-19200 8568 10012 0.119004756390235 0.119004756390235
-19335 8631 10474 0.189944426919074 0.189944426919074
-19201 10012 8461 0.097400081996938 0.097400081996938
-19203 4275 3348 0.0888431357806069 0.0888431357806069
-19204 3348 7876 0.0640319779657538 0.0640319779657538
-19205 7876 5760 0.0967358830871852 0.0967358830871852
-19206 5760 7324 0.101239369924108 0.101239369924108
-19207 7324 2063 0.0946165731852714 0.0946165731852714
-19208 2063 2649 0.0935569331707932 0.0935569331707932
-19209 2649 4105 0.0971375052394303 0.0971375052394303
-19210 4105 6689 0.0855494277301445 0.0855494277301445
-19211 6689 356 0.101026474697068 0.101026474697068
-19212 356 7688 0.0921469063041614 0.0921469063041614
-19213 7688 3475 0.0946165920204556 0.0946165920204556
-19215 6939 9228 0.0827641347919428 0.0827641347919428
-19216 9228 6380 0.0767643689707359 0.0767643689707359
-19217 6380 5058 0.0447215279971903 0.0447215279971903
-19219 5015 3318 0.0976390934138488 0.0976390934138488
-19221 7829 10449 0.170073568021036 0.170073568021036
-19222 9276 9490 0.227893235973284 0.227893235973284
-19224 5808 10450 0.0444182254226453 0.0444182254226453
-19228 10452 10453 0.00899294746602318 0.00899294746602318
-19262 561 8788 0.108355823884287 0.108355823884287
-19264 10465 10081 0.106367191723871 0.106367191723871
-19265 10081 9467 0.08060964495203 0.08060964495203
-19376 8634 10174 0.107642527980188 0.107642527980188
-19283 1943 10467 0.139113140483037 0.139113140483037
-19284 10467 1941 0.145058671955531 0.145058671955531
-19309 10472 10450 0.0244300101434338 0.0244300101434338
-19310 10450 6986 0.0907684588887198 0.0907684588887198
-19311 6986 649 0.0550434251335652 0.0550434251335652
-19312 649 9973 0.0116984093357102 0.0116984093357102
-19313 9973 6700 0.0127993614182147 0.0127993614182147
-20578 10796 10801 0.065843170036926 0.065843170036926
-19315 5030 10465 0.0131766099040461 0.0131766099040461
-19316 10465 339 0.0452586039857602 0.0452586039857602
-19317 339 10468 0.0402192785877108 0.0402192785877108
-19318 10468 1941 0.0852977829408983 0.0852977829408983
-19319 1941 610 0.177606555639393 0.177606555639393
-19320 610 4852 0.177691892562915 0.177691892562915
-19321 4852 2203 0.156985921773534 0.156985921773534
-19324 5917 1620 0.152034755665853 0.152034755665853
-19325 1620 1212 0.201729915857126 0.201729915857126
-19326 1212 8782 0.0140233440789759 0.0140233440789759
-19336 4837 9074 0.0183273901669081 0.0183273901669081
-19338 9315 9317 0.0726807266351068 0.0726807266351068
-19339 9317 8692 0.104147766047402 0.104147766047402
-19341 9315 1952 0.0315809029571794 0.0315809029571794
-19343 10140 10142 0.0644750868788433 0.0644750868788433
-19344 10142 10475 0.0151531719907858 0.0151531719907858
-19345 10475 7137 0.053510410167183 0.053510410167183
-19347 480 9282 0.132450958735296 0.132450958735296
-19348 9282 10138 0.0564427245863012 0.0564427245863012
-19350 8464 10476 0.175984833399768 0.175984833399768
-19352 10047 5253 0.112186249238367 0.112186249238367
-19353 5253 2320 0.0249537355545513 0.0249537355545513
-19355 10166 6401 0.0992919669903468 0.0992919669903468
-19359 10479 9948 0.0516511853374245 0.0516511853374245
-19360 9948 8509 0.0517093587612889 0.0517093587612889
-19362 6189 10479 0.146782090008868 0.146782090008868
-19387 10455 5805 0.0524139320350963 0.0524139320350963
-19364 10047 10168 0.0607581388382602 0.0607581388382602
-19365 10168 10480 0.0679196955639713 0.0679196955639713
-19366 10480 6401 0.0390713513194924 0.0390713513194924
-19367 6401 10481 0.052200136280437 0.052200136280437
-19368 10481 6166 0.221487121294822 0.221487121294822
-19369 6166 4284 0.1514940030025 0.1514940030025
-19371 2320 2779 0.107781391844326 0.107781391844326
-20580 10867 10868 0.0137448223074376 0.0137448223074376
-20581 10868 10869 0.0278742902489333 0.0278742902489333
-19372 2779 2913 0.05305189541044 0.05305189541044
-19374 8509 9595 0.106794270102757 0.106794270102757
-19375 9595 8634 0.102427753876907 0.102427753876907
-19377 10174 10482 0.096139738297761 0.096139738297761
-19378 10482 9194 0.00978224253563326 0.00978224253563326
-19380 4397 3002 0.108243017625134 0.108243017625134
-19381 3002 10484 0.0989194559777293 0.0989194559777293
-19382 10484 5962 0.00617092845740214 0.00617092845740214
-19383 5962 10485 0.00542857584263607 0.00542857584263607
-19384 10485 10459 0.0472755549262459 0.0472755549262459
-19385 10459 7579 0.0528643874539915 0.0528643874539915
-19429 7287 32 0.190572580502828 0.190572580502828
-19386 7579 10455 0.0523778989124976 0.0523778989124976
-19423 10488 7294 0.0690612889349745 0.0690612889349745
-19424 7294 36 0.192538942320683 0.192538942320683
-19388 5805 10462 0.081956103355699 0.081956103355699
-19389 10462 8768 0.0169741195442503 0.0169741195442503
-19391 6189 9950 0.0503550239981861 0.0503550239981861
-19392 9950 7557 0.0535053183585621 0.0535053183585621
-19393 7557 9952 0.0524048074288428 0.0524048074288428
-19394 9952 10429 0.0135095901515659 0.0135095901515659
-19396 10479 9627 0.0675900234291702 0.0675900234291702
-19400 3201 6115 0.203275445399412 0.203275445399412
-19401 6115 1910 0.199619230795837 0.199619230795837
-19402 1910 9218 0.202850123370343 0.202850123370343
-19403 9218 9216 0.20345414072247 0.20345414072247
-19404 9216 7300 0.200631055524996 0.200631055524996
-19405 7300 45 0.202263602143448 0.202263602143448
-19406 45 3545 0.200651259904661 0.200651259904661
-19407 3545 4239 0.201942446714699 0.201942446714699
-19408 4239 1800 0.2054130837632 0.2054130837632
-19409 1800 8710 0.197537787183869 0.197537787183869
-19410 8710 6527 0.132676718293593 0.132676718293593
-19695 8145 9492 0.255789380087541 0.255789380087541
-19697 10419 10619 0.294868097569216 0.294868097569216
-19806 10411 7868 0.176421872480467 0.176421872480467
-19698 10619 10620 0.511264415982815 0.511264415982815
-19699 6199 496 0.110329672635447 0.110329672635447
-19700 496 10419 0.128549351195957 0.128549351195957
-19704 10623 10624 0.299844457035978 0.299844457035978
-19705 10624 10625 0.048946191319968 0.048946191319968
-19706 10625 10626 0.0564187161790662 0.0564187161790662
-19707 10626 10627 0.261222980592435 0.261222980592435
-19717 10626 10634 0.247667737296111 0.247667737296111
-19925 10679 9511 0.20648099094332 0.20648099094332
-19926 9511 4579 0.132833459370163 0.132833459370163
-19930 10680 10673 0.208792718350027 0.208792718350027
-19931 10673 7131 0.201766496696079 0.201766496696079
-19933 626 10681 0.1702021482017 0.1702021482017
-19934 5672 10665 0.0500710082270115 0.0500710082270115
-19935 10665 7218 0.0509007134728753 0.0509007134728753
-19937 252 10245 0.178490785331426 0.178490785331426
-19938 10245 7120 0.17638987203806 0.17638987203806
-19939 7120 9641 0.177259535907282 0.177259535907282
-19944 10675 10682 0.203454780542957 0.203454780542957
-19945 10682 9518 0.211007495388792 0.211007495388792
-19946 9518 4583 0.129742461291969 0.129742461291969
-19948 10646 7221 0.050795229275335 0.050795229275335
-19949 7221 10672 0.0490058421037179 0.0490058421037179
-19950 10672 4950 0.0520761745786515 0.0520761745786515
-19954 10414 5089 0.112638269786332 0.112638269786332
-19956 9520 10683 0.208034746403896 0.208034746403896
-19992 10649 10664 0.050141841785608 0.050141841785608
-19993 10664 10683 0.0505455538112256 0.0505455538112256
-19994 10683 5590 0.0494937724947863 0.0494937724947863
-19995 5590 10661 0.0507309659863408 0.0507309659863408
-19996 10661 7533 0.0505856564507496 0.0505856564507496
-19997 7533 10689 0.686347942133366 0.686347942133366
-19998 8645 2200 0.0278160442123186 0.0278160442123186
-20003 2200 10693 0.020138493184414 0.020138493184414
-20004 10693 10443 0.00475150856262823 0.00475150856262823
-20006 8461 9621 0.0222962026291256 0.0222962026291256
-20007 9621 10690 0.0515741214544805 0.0515741214544805
-20026 9466 8724 0.0514719719174867 0.0514719719174867
-20027 8724 5029 0.0566937822140094 0.0566937822140094
-20028 5029 4595 0.0969267875718062 0.0969267875718062
-20030 5321 630 0.142142547339574 0.142142547339574
-20031 630 2908 0.116052443784823 0.116052443784823
-20039 10696 5549 0.959761090863438 0.959761090863438
-20040 5549 9172 0.201153438061066 0.201153438061066
-20042 140 1484 0.198676673012775 0.198676673012775
-20043 1484 3760 0.212665318664513 0.212665318664513
-20044 3760 4181 0.394425022611864 0.394425022611864
-20045 4181 7302 0.250045496408828 0.250045496408828
-20046 7302 9078 0.0121023798774685 0.0121023798774685
-419 418 419 0.0843359701726921 0.0843359701726921
-20049 9127 9931 0.188027723664679 0.188027723664679
-20051 9189 10417 0.27289630775387 0.27289630775387
-20052 10417 10698 0.903351534370563 0.903351534370563
-20055 5803 10456 0.063915425232113 0.063915425232113
-20056 10456 8278 0.0463525975312068 0.0463525975312068
-20057 8278 7582 0.0531670184257572 0.0531670184257572
-20586 10860 10865 0.0197306093936785 0.0197306093936785
-20058 7582 10460 0.0605194201118807 0.0605194201118807
-20059 10460 5965 0.08096413889014 0.08096413889014
-20060 5965 7403 0.00793698029885246 0.00793698029885246
-20061 7403 7216 0.100604138655543 0.100604138655543
-20062 7216 2998 0.041051117053356 0.041051117053356
-20064 4930 9632 0.0194691711485179 0.0194691711485179
-20066 8788 8794 0.107030125953622 0.107030125953622
-20067 8794 8875 0.105785558321332 0.105785558321332
-20068 8875 7355 0.0541942506273543 0.0541942506273543
-20069 7355 8881 0.0482515848497253 0.0482515848497253
-20070 8881 7128 0.0482774346717123 0.0482774346717123
-20071 7128 9311 0.0491067830497851 0.0491067830497851
-20072 9311 9658 0.100701059147573 0.100701059147573
-20073 9658 5054 0.0949533068688616 0.0949533068688616
-20074 5054 5041 0.0261633102483298 0.0261633102483298
-20075 5041 6318 0.0238469793810048 0.0238469793810048
-20077 8004 7999 0.0412811844037432 0.0412811844037432
-20078 7999 5161 0.00972594837361757 0.00972594837361757
-20079 5161 976 0.0450966381773304 0.0450966381773304
-20080 976 9235 0.0690703393173828 0.0690703393173828
-20081 9235 8835 0.0284556853366966 0.0284556853366966
-20082 8835 7138 0.0744435936983682 0.0744435936983682
-20083 7138 7152 0.0242079619729824 0.0242079619729824
-20084 7152 5018 0.0530487604133438 0.0530487604133438
-20085 5018 5127 0.027179522018167 0.027179522018167
-20086 5127 5120 0.017329383802427 0.017329383802427
-20087 5120 9413 0.051025645765313 0.051025645765313
-20088 9413 4720 0.0442143222009164 0.0442143222009164
-20089 4720 6788 0.103544897956421 0.103544897956421
-20090 6788 7360 0.101885712989061 0.101885712989061
-20091 7360 5420 0.104686903511504 0.104686903511504
-20092 5420 8551 0.104297582912284 0.104297582912284
-20093 8551 3891 0.113854917229397 0.113854917229397
-20094 3891 1021 0.10275177677768 0.10275177677768
-20095 1021 10069 0.0524825810706004 0.0524825810706004
-20096 10069 6266 0.0519011168646154 0.0519011168646154
-20097 6266 8727 0.107637396904871 0.107637396904871
-20098 8727 5027 0.0851589615138914 0.0851589615138914
-20099 5027 3339 0.11913667157964 0.11913667157964
-20100 3339 7884 0.0947347804724537 0.0947347804724537
-20101 7884 7339 0.0992406279882494 0.0992406279882494
-20588 10840 3589 0.00659451799404467 0.00659451799404467
-20102 7339 7978 0.0297388680985265 0.0297388680985265
-20103 7978 8546 0.0509861753484279 0.0509861753484279
-20105 2065 2068 0.0539613780445048 0.0539613780445048
-20106 2068 2651 0.0458462130492323 0.0458462130492323
-20107 2651 2668 0.0527824371940605 0.0527824371940605
-20108 2668 4106 0.0471315276476818 0.0471315276476818
-20109 4106 4138 0.0531150768123695 0.0531150768123695
-20110 4138 6691 0.0513109258939151 0.0513109258939151
-20111 6691 6699 0.049849518680298 0.049849518680298
-20112 6699 8027 0.0540642003294053 0.0540642003294053
-20113 8027 8022 0.0351680439773276 0.0351680439773276
-20114 8022 7697 0.0642576699742132 0.0642576699742132
-20116 7687 3442 0.0653852338257918 0.0653852338257918
-20117 3442 3465 0.0302046503739114 0.0302046503739114
-20118 3465 10643 0.044572996690839 0.044572996690839
-20119 10643 6010 0.0210253210935206 0.0210253210935206
-20120 6010 6022 0.0302819861909932 0.0302819861909932
-20121 6022 3877 0.0720170103408001 0.0720170103408001
-20122 3877 9699 0.0188604413742797 0.0188604413742797
-20123 9699 862 0.0931148831029757 0.0931148831029757
-20124 862 7102 0.0867114852734781 0.0867114852734781
-20125 7102 10422 0.0971484542236891 0.0971484542236891
-20126 10422 8701 0.0148135271633134 0.0148135271633134
-20127 8701 8159 0.0903601598115808 0.0903601598115808
-20128 8159 8147 0.0485272097981868 0.0485272097981868
-20129 8147 7605 0.046972846594418 0.046972846594418
-20130 7605 7256 0.0980906813073136 0.0980906813073136
-20131 7256 7592 0.0949493294075893 0.0949493294075893
-20132 7592 2011 0.0535765472330524 0.0535765472330524
-20133 2011 9174 0.0440404642371946 0.0440404642371946
-20134 9174 10644 0.101018897202585 0.101018897202585
-20135 10644 2752 0.0964161425505398 0.0964161425505398
-12318 2500 2501 0.00534847597168918 0.00534847597168918
-20137 6988 7015 0.0469900401605619 0.0469900401605619
-20138 7015 2275 0.0506564830109395 0.0506564830109395
-20139 2275 8216 0.0480971521401402 0.0480971521401402
-20140 8216 3600 0.0492447661071067 0.0492447661071067
-20141 3600 8213 0.0494471155350359 0.0494471155350359
-20142 8213 7515 0.0477024371424333 0.0477024371424333
-20143 7515 7526 0.0508405166895622 0.0508405166895622
-20144 7526 4566 0.0460266764289813 0.0460266764289813
-20145 4566 2124 0.0528615774272691 0.0528615774272691
-20146 2124 5990 0.094672374588883 0.094672374588883
-20147 5990 7671 0.0990838490707958 0.0990838490707958
-20179 10247 9298 0.182738392624498 0.182738392624498
-20180 9298 6549 0.169619845811395 0.169619845811395
-20182 4768 6330 0.178054483343927 0.178054483343927
-20183 6330 9308 0.0134883336553362 0.0134883336553362
-20148 7671 10702 3.41813541281698 3.41813541281698
-20149 425 10112 0.0131850564749253 0.0131850564749253
-20186 8247 10155 0.516700602330837 0.516700602330837
-20187 10155 3322 0.265485774934506 0.265485774934506
-20188 3322 10706 0.131436234594263 0.131436234594263
-20189 10139 10705 0.06021736831636 0.06021736831636
-20195 8510 10708 0.0176825351734809 0.0176825351734809
-20197 10708 8571 0.116072750239478 0.116072750239478
-20199 5783 8281 0.147480988666932 0.147480988666932
-20200 8281 8293 0.145093730312322 0.145093730312322
-20201 8293 7900 0.146177040292133 0.146177040292133
-20202 7900 8854 0.145687210047232 0.145687210047232
-20203 8854 9321 0.148905174298523 0.148905174298523
-20206 8401 5454 0.142235461954992 0.142235461954992
-20207 5454 8504 0.00556744232684514 0.00556744232684514
-20208 8504 8047 0.149428079475645 0.149428079475645
-20209 8047 6575 0.142472133135735 0.142472133135735
-20210 6575 4456 0.146389787991077 0.146389787991077
-20211 4456 5504 0.146266130363807 0.146266130363807
-20264 10722 5574 0.00764881869126048 0.00764881869126048
-20317 10737 10730 0.156440332314784 0.156440332314784
-20319 10738 10739 0.00846222116823016 0.00846222116823016
-20570 10858 10856 0.341000703608857 0.341000703608857
-20572 10859 10860 0.0100014874858022 0.0100014874858022
-20784 10945 10292 0.00633905697400916 0.00633905697400916
-321 153 154 0.039197729386179 0.039197729386179
-18675 1570 2751 0.10523982327052 0.10523982327052
-20591 10795 10802 0.0763744143850755 0.0763744143850755
-20216 632 6405 0.146056665643101 0.146056665643101
-20217 6405 4277 0.144766275996567 0.144766275996567
-20218 4277 2913 0.0337236702585465 0.0337236702585465
-20250 9384 8111 0.200921327710714 0.200921327710714
-20251 8111 10328 0.204798818746646 0.204798818746646
-\.
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-01.result b/src/bd_dijkstra/test/bd_dijkstra-any-01.result
deleted file mode 100644
index a83377b..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-01.result
+++ /dev/null
@@ -1,102 +0,0 @@
-NOTICE: Deprecated Signature of pgr_bdDijkstra
-0|5700|20787|0.006774
-1|10932|20756|0.040876
-2|10931|20797|0.002564
-3|7661|20796|0.002581
-4|10943|20776|0.040800
-5|10941|20772|0.005720
-6|3415|20771|0.007463
-7|10940|20841|0.187594
-8|10952|20812|0.005045
-9|7034|20811|0.004532
-10|10951|20833|0.177477
-11|10944|20779|0.008539
-12|8910|20778|0.006447
-13|10929|20835|0.071114
-14|10948|20794|0.013276
-15|8908|12990|0.013157
-16|8325|13831|0.009169
-17|3753|13830|0.196045
-18|6774|13829|0.032840
-19|8304|13828|0.117213
-20|9205|13827|0.010639
-21|8994|13165|0.012931
-22|8977|13164|0.008029
-23|8976|13163|0.069895
-24|8993|13162|0.009638
-25|8351|13161|0.099016
-26|8992|13160|0.187353
-27|8991|13159|0.018649
-28|2962|13158|0.071931
-29|1285|13157|0.118340
-30|8989|13156|0.006317
-31|8988|13155|0.079185
-32|21|13154|0.057101
-33|6436|13153|0.083288
-34|637|13152|0.099744
-35|8987|13151|0.057786
-36|398|13150|0.120005
-37|8496|13149|0.069498
-38|8986|13148|0.014323
-39|8985|13167|0.070884
-40|8451|11869|0.006925
-41|476|11868|0.196533
-42|529|11867|0.005677
-43|8450|11871|0.118857
-44|8452|11878|0.083250
-45|8455|11880|0.048821
-46|8456|11883|0.064572
-47|1807|11882|0.101185
-48|8457|11894|0.046805
-49|8465|15481|0.180992
-50|8522|15480|0.016198
-51|9621|15479|0.209882
-52|2808|15478|0.019312
-53|8311|15477|0.113487
-54|8583|16981|0.045667
-55|10046|16982|0.022635
-56|8467|16983|0.022924
-57|9624|15487|0.034042
-58|8468|11899|0.018103
-59|3170|19357|0.047698
-60|9949|19358|0.059093
-61|10479|19359|0.051651
-62|9948|19360|0.051709
-63|8509|19374|0.106794
-64|9595|19375|0.102428
-65|8634|19376|0.107643
-66|10174|19377|0.096140
-67|10482|19378|0.009782
-68|9194|19379|0.102702
-69|4397|19380|0.108243
-70|3002|19381|0.098919
-71|10484|19382|0.006171
-72|5962|19383|0.005429
-73|10485|19384|0.047276
-74|10459|19385|0.052864
-75|7579|19386|0.052378
-76|10455|19387|0.052414
-77|5805|19388|0.081956
-78|10462|19389|0.016974
-79|8768|12598|0.059630
-80|8767|19290|0.117748
-81|10470|19289|0.065769
-82|10469|19288|0.066230
-83|10468|19287|0.111281
-84|9967|16642|0.029056
-85|9956|16621|0.014614
-86|9938|16626|0.007036
-87|9960|16649|0.081206
-88|9968|16650|0.012230
-89|9969|16647|0.012368
-90|5457|6266|0.055134
-91|5458|6267|0.053860
-92|5459|6268|0.109859
-93|5460|6269|0.104952
-94|5461|6270|0.053766
-95|5462|6271|0.046800
-96|5463|12897|0.170300
-97|8880|15060|0.049014
-98|7101|15059|0.047811
-99|9313|15058|0.044674
-100|6733|-1|0.000000
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-01.test.sql b/src/bd_dijkstra/test/bd_dijkstra-any-01.test.sql
deleted file mode 100644
index b284356..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-01.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bddijkstra('select * from bdd_ways'::text, 5700, 6733, true, true) as r ) as foo;
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-02.result b/src/bd_dijkstra/test/bd_dijkstra-any-02.result
deleted file mode 100644
index a2bfe1d..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-02.result
+++ /dev/null
@@ -1,61 +0,0 @@
-NOTICE: Deprecated Signature of pgr_bdDijkstra
-0|6585|17975|0.200230
-1|5367|17976|0.155428
-2|7125|17977|0.178581
-3|613|17978|0.175712
-4|10025|17979|0.173776
-5|5802|6758|0.013489
-6|5803|6759|0.065176
-7|5804|6760|0.008679
-8|5805|6761|0.145097
-9|5806|6762|0.146807
-10|5807|6763|0.097186
-11|5808|6764|0.050569
-12|5809|20663|0.169650
-13|4620|20662|0.023243
-14|5774|20661|0.120390
-15|6482|20660|0.002769
-16|5957|20659|0.087952
-17|8289|20658|0.048701
-18|10884|20657|0.009212
-19|10883|20656|0.080500
-20|9954|20655|0.075280
-21|4390|16876|0.147691
-22|9203|17805|0.063931
-23|7892|17804|0.015429
-24|8417|17803|0.069119
-25|10171|17802|0.075825
-26|9953|17801|0.045079
-27|8859|17800|0.029389
-28|8536|17799|0.072658
-29|10180|17798|0.076558
-30|9592|17797|0.027637
-31|9318|17796|0.114755
-32|10179|17795|0.007150
-33|10178|17794|0.087467
-34|8402|17793|0.062258
-35|6179|17792|0.109483
-36|8508|17791|0.036248
-37|3305|17790|0.069816
-38|8512|17789|0.064158
-39|998|17807|0.471312
-40|2698|2743|0.102019
-41|2563|9039|0.341756
-42|2043|9040|0.587619
-43|4280|9041|0.145996
-44|2317|9042|0.268754
-45|7135|9043|0.121251
-46|4276|9044|0.145396
-47|6167|9045|0.583394
-48|7136|9046|0.043099
-49|7137|19345|0.053510
-50|10475|19344|0.015153
-51|10142|19343|0.064475
-52|10140|17566|0.135370
-53|8539|17565|0.057338
-54|10138|17558|0.064893
-55|6943|17559|0.201703
-56|8140|17560|0.469613
-57|10139|20189|0.060217
-58|10705|20185|0.055053
-59|8247|-1|0.000000
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-02.test.sql b/src/bd_dijkstra/test/bd_dijkstra-any-02.test.sql
deleted file mode 100644
index d2ea42e..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-02.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bddijkstra('select * from bdd_ways'::text, 6585, 8247, true, true) as r ) as foo;
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-03.result b/src/bd_dijkstra/test/bd_dijkstra-any-03.result
deleted file mode 100644
index 1da08ed..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-03.result
+++ /dev/null
@@ -1,3 +0,0 @@
-NOTICE: Deprecated Signature of pgr_bdDijkstra
-0|14822|14822|0.060319
-1|-1|-1|0.000000
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-03.test.sql b/src/bd_dijkstra/test/bd_dijkstra-any-03.test.sql
deleted file mode 100644
index 601724d..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-03.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id2, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bddijkstra('select * from bdd_ways'::text, 9426, 3606, true, true) as r ) as foo;
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-04.result b/src/bd_dijkstra/test/bd_dijkstra-any-04.result
deleted file mode 100644
index 59b94cc..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-04.result
+++ /dev/null
@@ -1,3 +0,0 @@
-NOTICE: Deprecated Signature of pgr_bdDijkstra
-0|3606|14822|0.060319
-1|9426|-1|0.000000
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-04.test.sql b/src/bd_dijkstra/test/bd_dijkstra-any-04.test.sql
deleted file mode 100644
index 2bca691..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-04.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bddijkstra('select * from bdd_ways'::text, 3606, 9426, true, true) as r ) as foo;
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-05.result b/src/bd_dijkstra/test/bd_dijkstra-any-05.result
deleted file mode 100644
index c092c44..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-05.result
+++ /dev/null
@@ -1,102 +0,0 @@
-NOTICE: Deprecated Signature of pgr_bdDijkstra
-0|6733|15058|0.044674
-1|9313|15059|0.047811
-2|7101|15060|0.049014
-3|8880|12897|0.170300
-4|5463|6271|0.046800
-5|5462|6270|0.053766
-6|5461|6269|0.104952
-7|5460|6268|0.109859
-8|5459|6267|0.053860
-9|5458|6266|0.055134
-10|5457|16647|0.012368
-11|9969|16650|0.012230
-12|9968|16649|0.081206
-13|9960|16626|0.007036
-14|9938|16621|0.014614
-15|9956|16642|0.029056
-16|9967|19287|0.111281
-17|10468|19288|0.066230
-18|10469|19289|0.065769
-19|10470|19290|0.117748
-20|8767|12598|0.059630
-21|8768|19389|0.016974
-22|10462|19388|0.081956
-23|5805|19387|0.052414
-24|10455|19386|0.052378
-25|7579|19385|0.052864
-26|10459|19384|0.047276
-27|10485|19383|0.005429
-28|5962|19382|0.006171
-29|10484|19381|0.098919
-30|3002|19380|0.108243
-31|4397|19379|0.102702
-32|9194|19378|0.009782
-33|10482|19377|0.096140
-34|10174|19376|0.107643
-35|8634|19375|0.102428
-36|9595|19374|0.106794
-37|8509|19360|0.051709
-38|9948|19359|0.051651
-39|10479|19358|0.059093
-40|9949|19357|0.047698
-41|3170|11899|0.018103
-42|8468|15487|0.034042
-43|9624|16983|0.022924
-44|8467|16982|0.022635
-45|10046|16981|0.045667
-46|8583|15477|0.113487
-47|8311|15478|0.019312
-48|2808|15479|0.209882
-49|9621|15480|0.016198
-50|8522|15481|0.180992
-51|8465|11894|0.046805
-52|8457|11882|0.101185
-53|1807|11883|0.064572
-54|8456|11880|0.048821
-55|8455|11878|0.083250
-56|8452|11871|0.118857
-57|8450|11867|0.005677
-58|529|11868|0.196533
-59|476|11869|0.006925
-60|8451|13167|0.070884
-61|8985|13148|0.014323
-62|8986|13149|0.069498
-63|8496|13150|0.120005
-64|398|13151|0.057786
-65|8987|13152|0.099744
-66|637|13153|0.083288
-67|6436|13154|0.057101
-68|21|13155|0.079185
-69|8988|13156|0.006317
-70|8989|13157|0.118340
-71|1285|13158|0.071931
-72|2962|13159|0.018649
-73|8991|13160|0.187353
-74|8992|13161|0.099016
-75|8351|13162|0.009638
-76|8993|13163|0.069895
-77|8976|13164|0.008029
-78|8977|13165|0.012931
-79|8994|13827|0.010639
-80|9205|13828|0.117213
-81|8304|13829|0.032840
-82|6774|13830|0.196045
-83|3753|13831|0.009169
-84|8325|12990|0.013157
-85|8908|20794|0.013276
-86|10948|20835|0.071114
-87|10929|20778|0.006447
-88|8910|20779|0.008539
-89|10944|20833|0.177477
-90|10951|20811|0.004532
-91|7034|20812|0.005045
-92|10952|20841|0.187594
-93|10940|20771|0.007463
-94|3415|20772|0.005720
-95|10941|20776|0.040800
-96|10943|20796|0.002581
-97|7661|20797|0.002564
-98|10931|20756|0.040876
-99|10932|20787|0.006774
-100|5700|-1|0.000000
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-05.test.sql b/src/bd_dijkstra/test/bd_dijkstra-any-05.test.sql
deleted file mode 100644
index 85104bb..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-05.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bddijkstra('select * from bdd_ways'::text, 6733, 5700, true, true) as r ) as foo;
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-06.result b/src/bd_dijkstra/test/bd_dijkstra-any-06.result
deleted file mode 100644
index 771d25b..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-06.result
+++ /dev/null
@@ -1,61 +0,0 @@
-NOTICE: Deprecated Signature of pgr_bdDijkstra
-0|8247|20185|0.055053
-1|10705|20189|0.060217
-2|10139|17560|0.469613
-3|8140|17559|0.201703
-4|6943|17558|0.064893
-5|10138|17565|0.057338
-6|8539|17566|0.135370
-7|10140|19343|0.064475
-8|10142|19344|0.015153
-9|10475|19345|0.053510
-10|7137|9046|0.043099
-11|7136|9045|0.583394
-12|6167|9044|0.145396
-13|4276|9043|0.121251
-14|7135|9042|0.268754
-15|2317|9041|0.145996
-16|4280|9040|0.587619
-17|2043|9039|0.341756
-18|2563|2743|0.102019
-19|2698|17807|0.471312
-20|998|17789|0.064158
-21|8512|17790|0.069816
-22|3305|17791|0.036248
-23|8508|17792|0.109483
-24|6179|17793|0.062258
-25|8402|17794|0.087467
-26|10178|17795|0.007150
-27|10179|17796|0.114755
-28|9318|17797|0.027637
-29|9592|17798|0.076558
-30|10180|17799|0.072658
-31|8536|17800|0.029389
-32|8859|17801|0.045079
-33|9953|17802|0.075825
-34|10171|17803|0.069119
-35|8417|17804|0.015429
-36|7892|17805|0.063931
-37|9203|16876|0.147691
-38|4390|20655|0.075280
-39|9954|20656|0.080500
-40|10883|20657|0.009212
-41|10884|20658|0.048701
-42|8289|20659|0.087952
-43|5957|20660|0.002769
-44|6482|20661|0.120390
-45|5774|20662|0.023243
-46|4620|20663|0.169650
-47|5809|6764|0.050569
-48|5808|6763|0.097186
-49|5807|6762|0.146807
-50|5806|6761|0.145097
-51|5805|6760|0.008679
-52|5804|6759|0.065176
-53|5803|6758|0.013489
-54|5802|17979|0.173776
-55|10025|17978|0.175712
-56|613|17977|0.178581
-57|7125|17976|0.155428
-58|5367|17975|0.200230
-59|6585|-1|0.000000
diff --git a/src/bd_dijkstra/test/bd_dijkstra-any-06.test.sql b/src/bd_dijkstra/test/bd_dijkstra-any-06.test.sql
deleted file mode 100644
index eb4bc4c..0000000
--- a/src/bd_dijkstra/test/bd_dijkstra-any-06.test.sql
+++ /dev/null
@@ -1,23 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select (r).seq, (r).id1, (r).id2, round((r).cost::numeric, 6) from ( select pgr_bddijkstra('select * from bdd_ways'::text, 8247, 6585, true, true) as r ) as foo;
diff --git a/src/bd_dijkstra/test/doc-bdDijkstra.result b/src/bd_dijkstra/test/doc-bdDijkstra.result
deleted file mode 100644
index fbfb422..0000000
--- a/src/bd_dijkstra/test/doc-bdDijkstra.result
+++ /dev/null
@@ -1,15 +0,0 @@
---q1
-NOTICE: Deprecated Signature of pgr_bdDijkstra
-0|2|4|1
-1|5|8|1
-2|6|5|1
-3|3|-1|0
---q2
-NOTICE: Deprecated Signature of pgr_bdDijkstra
-0|2|4|1
-1|5|8|1
-2|6|9|1
-3|9|16|1
-4|4|3|1
-5|3|-1|0
---q3
diff --git a/src/bd_dijkstra/test/doc-bdDijkstra.test.sql b/src/bd_dijkstra/test/doc-bdDijkstra.test.sql
deleted file mode 100644
index 150a83f..0000000
--- a/src/bd_dijkstra/test/doc-bdDijkstra.test.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--- PGR_bdDijkstra
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-
-\echo --q1
-SELECT * FROM pgr_bdDijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 2, 3, false, false);
-\echo --q2
-SELECT * FROM pgr_bdDijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2, 3, true, true);
-\echo --q3
diff --git a/src/bd_dijkstra/test/test.conf b/src/bd_dijkstra/test/test.conf
deleted file mode 100644
index 030969d..0000000
--- a/src/bd_dijkstra/test/test.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/perl -w
-
-%main::tests = (
- 'any' => {
- 'comment' => 'Bi-directional Dijkstra test for any versions.',
- 'data' => ['bd_dijkstra-any-00.data'],
- 'tests' => [qw(
- doc-bdDijkstra
- bd_dijkstra-any-01
- bd_dijkstra-any-02
- bd_dijkstra-any-03
- bd_dijkstra-any-04
- bd_dijkstra-any-05
- bd_dijkstra-any-06)],
- 'documentation' => [qw(
- doc-bdDijkstra
- )]
- },
-# 'vpg-vpgis' => {}, # for version specific tests
-# '8-1' => {}, # for pg 8.x and postgis 1.x
-# '9.2-2.1' => {}, # for pg 9.2 and postgis 2.1
-);
-
-1;
diff --git a/src/common/doc/CMakeLists.txt b/src/common/doc/CMakeLists.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/src/common/doc/cost_result.rst b/src/common/doc/cost_result.rst
deleted file mode 100644
index c5f7950..0000000
--- a/src/common/doc/cost_result.rst
+++ /dev/null
@@ -1,87 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _type_cost_result:
-
-pgr_costResult[]
-===============================================================================
-
-.. index::
- single: pgr_costResult[]
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_costResult[]`` — A set of records to describe a path result with cost attribute.
-
-
-Description
--------------------------------------------------------------------------------
-
-.. code-block:: sql
-
- CREATE TYPE pgr_costResult AS
- (
- seq integer,
- id1 integer,
- id2 integer,
- cost float8
- );
-
-:seq: sequential ID indicating the path order
-:id1: generic name, to be specified by the function, typically the node id
-:id2: generic name, to be specified by the function, typically the edge id
-:cost: cost attribute
-
-
-.. _type_cost_result3:
-
-pgr_costResult3[] - Multiple Path Results with Cost
-===============================================================================
-
-.. index::
- single: pgr_costResult3[]
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_costResult3[]`` — A set of records to describe a path result with cost attribute.
-
-
-Description
--------------------------------------------------------------------------------
-
-.. code-block:: sql
-
- CREATE TYPE pgr_costResult3 AS
- (
- seq integer,
- id1 integer,
- id2 integer,
- id3 integer,
- cost float8
- );
-
-:seq: sequential ID indicating the path order
-:id1: generic name, to be specified by the function, typically the path id
-:id2: generic name, to be specified by the function, typically the node id
-:id3: generic name, to be specified by the function, typically the edge id
-:cost: cost attribute
-
-
-.. rubric:: History
-
-* New in version 2.0.0
-* Replaces ``path_result``
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`introduction`
diff --git a/src/common/doc/geom_result.rst b/src/common/doc/geom_result.rst
deleted file mode 100644
index bc9e522..0000000
--- a/src/common/doc/geom_result.rst
+++ /dev/null
@@ -1,53 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _type_geom_result:
-
-pgr_geomResult[]
-===============================================================================
-
-.. index::
- single: pgr_geomResult[]
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_geomResult[]`` — A set of records to describe a path result with geometry attribute.
-
-
-Description
--------------------------------------------------------------------------------
-
-.. code-block:: sql
-
- CREATE TYPE pgr_geomResult AS
- (
- seq integer,
- id1 integer,
- id2 integer,
- geom geometry
- );
-
-:seq: sequential ID indicating the path order
-:id1: generic name, to be specified by the function
-:id2: generic name, to be specified by the function
-:geom: geometry attribute
-
-
-.. rubric:: History
-
-* New in version 2.0.0
-* Replaces ``geoms``
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`introduction`
-
diff --git a/src/common/doc/pgr_version.rst b/src/common/doc/pgr_version.rst
deleted file mode 100644
index 49352af..0000000
--- a/src/common/doc/pgr_version.rst
+++ /dev/null
@@ -1,78 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_version:
-
-pgr_version
-===============================================================================
-
-.. index::
- single: version()
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_version`` — Query for pgRouting version information.
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Returns a table with pgRouting version information.
-
-.. code-block:: sql
-
- table() pgr_version();
-
-
-Description
--------------------------------------------------------------------------------
-
-Returns a table with:
-
-:version: ``varchar`` pgRouting version
-:tag: ``varchar`` Git tag of pgRouting build
-:hash: ``varchar`` Git hash of pgRouting build
-:branch: ``varchar`` Git branch of pgRouting build
-:boost: ``varchar`` Boost version
-
-
-.. rubric:: History
-
-* New in version 2.0.0
-
-
-Examples
--------------------------------------------------------------------------------
-
-* Query for full version string
-
-.. code-block:: sql
-
- SELECT pgr_version();
-
- pgr_version
- -----------------------------------------------
- (2.2.0,pgrouting-2.2.0,9fd33c5,master,1.54.0)
- (1 row)
-
-
-
-* Query for ``version`` and ``boost`` attribute
-
-.. code-block:: sql
-
- SELECT version, boost FROM pgr_version();
-
- version | boost
- -----------+--------
- 2.2.0-dev | 1.49.0
- (1 row)
-
-
diff --git a/src/common/doc/types_index.rst b/src/common/doc/types_index.rst
deleted file mode 100644
index 8cbd943..0000000
--- a/src/common/doc/types_index.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _data_types:
-
-pgRouting Data Types
-===============================================================================
-
-The following are commonly used data types for some of the pgRouting functions.
-
- - :ref:`type_cost_result` - A set of records to describe a path result with cost attribute.
- - :ref:`pgr_costResult3[] <type_cost_result3>` - A set of records to describe a path result with cost attribute.
- - :ref:`pgr_geomResult <type_geom_result>` - A set of records to describe a path result with geometry attribute.
-
-
-
-.. toctree::
- :hidden:
-
- pgr_costResult[] - Path Result with Cost <cost_result>
- pgr_geomResult[] - Path Result with Geometry <geom_result>
diff --git a/src/common/sql/CMakeLists.txt b/src/common/sql/CMakeLists.txt
deleted file mode 100644
index 9219504..0000000
--- a/src/common/sql/CMakeLists.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/pgRouting-header.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/pgrouting-types.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/pgrouting_version.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/pgrouting_utilities.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/pgr_parameter_check.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/utilities_pgr.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/noUnderUtilities.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/createIndex.sql
- #${CMAKE_CURRENT_SOURCE_DIR}/findClosestEdge.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/_point_toId.sql
-
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/common/sql/_point_toId.sql b/src/common/sql/_point_toId.sql
deleted file mode 100644
index a5e9f90..0000000
--- a/src/common/sql/_point_toId.sql
+++ /dev/null
@@ -1,81 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Author: Stephen Woodbridge <woodbri at imaptools.com>
-Author: Vicky Vergara <vicky_vergara at hotmail,com>
-Mail: project at 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*/
-/*
-.. function:: _pgr_pointToId(point geometry, tolerance double precision,vname text,srid integer)
-Using tolerance to determine if its an existing point:
- - Inserts a point into the vertices table "vertname" with the srid "srid",
-and returns
- - the id of the new point
- - the id of the existing point.
-
-Tolerance is the minimal distance between existing points and the new point to create a new point.
-
-Last changes: 2013-03-22
-
-HISTORY
-Last changes: 2013-03-22
-2013-08-19: handling schemas
-*/
-
-CREATE OR REPLACE FUNCTION _pgr_pointToId(
- point geometry,
- tolerance double precision,
- vertname text,
- srid integer)
-
- RETURNS bigint AS
-$BODY$
-DECLARE
- rec record;
- pid bigint;
-
-BEGIN
- EXECUTE 'SELECT ST_Distance(
- the_geom,
- ST_GeomFromText(ST_AsText('
- || quote_literal(point::text)
- || '),'
- || srid ||')) AS d, id, the_geom
- FROM '||_pgr_quote_ident(vertname)||'
- WHERE ST_DWithin(
- the_geom,
- ST_GeomFromText(
- ST_AsText(' || quote_literal(point::text) ||'),
- ' || srid || '),' || tolerance||')
- ORDER BY d
- LIMIT 1' INTO rec ;
- IF rec.id IS NOT NULL THEN
- pid := rec.id;
- ELSE
- execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
- pid := lastval();
-END IF;
-
-RETURN pid;
-
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
diff --git a/src/common/sql/createIndex.sql b/src/common/sql/createIndex.sql
deleted file mode 100644
index 96efa7a..0000000
--- a/src/common/sql/createIndex.sql
+++ /dev/null
@@ -1,115 +0,0 @@
-/*PGR-GNU*****************************************************************
-
- FILE: createIndex.sql
-
- Copyright (c) 2014 Celia Virginia Vergara Castillo
- vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-
-/************************************************************************
-.. function:: _pgr_createIndex(tab, col,indextype)
- _pgr_createIndex(sname,tname,colname,indextypes)
-
- if the column is not indexed it creates a 'gist' index otherwise a 'btree' index
- Examples:
- * select _pgr_createIndex('tab','col','btree');
- * select _pgr_createIndex('myschema','mytable','col','gist');
- * perform 'select _pgr_createIndex('||quote_literal('tab')||','||quote_literal('col')||','||quote_literal('btree'))' ;
- * perform 'select _pgr_createIndex('||quote_literal('myschema')||','||quote_literal('mytable')||','||quote_literal('col')||','||quote_literal('gist')')' ;
- Precondition:
- sname.tname.colname is a valid column on table tname in schema sname
- indext is the indexType btree or gist
- Postcondition:
- sname.tname.colname its indexed using the indextype
-
-
- Author: Vicky Vergara <vicky_vergara at hotmail.com>>
-
- HISTORY
- Created: 2014/JUL/28
-************************************************************************/
-
-CREATE OR REPLACE FUNCTION _pgr_createIndex(
- sname text, tname text, colname text, indext text,
- IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
-RETURNS void AS
-$BODY$
-DECLARE
- debuglevel text;
- naming record;
- tabname text;
- query text;
- msgKind int;
-BEGIN
- msgKind = 0; -- debug_
-
- execute 'show client_min_messages' into debuglevel;
- tabname=_pgr_quote_ident(sname||'.'||tname);
- perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
- IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
- perform _pgr_msg(msgKind, fnName);
- else
- if indext = 'gist' then
- query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
- on '||tabname||' using gist('||quote_ident(colname)||')';
- else
- query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
- on '||tabname||' using btree('||quote_ident(colname)||')';
- end if;
- perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
- perform _pgr_msg(msgKind, fnName, ' Using ' || query);
- set client_min_messages to warning;
- BEGIN
- execute query;
- EXCEPTION WHEN others THEN
- perform _pgr_onError( true, reportErrs, fnName,
- 'Could not create index on:' || colname, SQLERRM);
- END;
- execute 'set client_min_messages to '|| debuglevel;
- perform _pgr_msg(msgKind, fnName);
- END IF;
-END;
-
-$BODY$
- LANGUAGE plpgsql VOLATILE STRICT;
-
-
-CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
- IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
-RETURNS void AS
-$BODY$
-DECLARE
- naming record;
- sname text;
- tname text;
-
-BEGIN
- select * from _pgr_getTableName(tabname, 2, fnName) into naming;
- sname=naming.sname;
- tname=naming.tname;
- execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
-END;
-
-$BODY$
- LANGUAGE plpgsql VOLATILE STRICT;
-
-
diff --git a/src/common/sql/findClosestEdge.sql b/src/common/sql/findClosestEdge.sql
deleted file mode 100644
index 29829eb..0000000
--- a/src/common/sql/findClosestEdge.sql
+++ /dev/null
@@ -1,100 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-/*
- * pgr_findClosestEdge(edges_sql text, pnt geometry, tol float8)
- *
- * Given and table of edges with a spatial index on the_geom
- * and a point geometry search for the closest edge within tol distance to the edges
- * then compute the projection of the point onto the line segment and select source or target
- * based on whether the projected point is closer to the respective end and return source or target.
- * If no edge is within tol distance then return -1
- IF az > pi()/2 AND az < pi() OR az > 3 * pi()/2 THEN - then to the right
-*/
-
-CREATE OR REPLACE FUNCTION pgr_findClosestEdge(
- edges_sql text,
- point_geom geometry,
- tolerance float8,
-
- OUT edge_id BIGINT,
- OUT fraction FLOAT,
- OUT side CHAR)
- returns SETOF RECORD AS
-$body$
-DECLARE
- safe_sql text;
- sql text;
- rec RECORD;
-BEGIN
-
- IF (tolerance < 0 ) THEN
- RAISE EXCEPTION 'Invalid value for tolerance';
- END IF;
-
- safe_sql = 'SELECT * from ('|| edges_sql ||' ) AS __a__';
-
- BEGIN
- EXECUTE safe_sql || ' LIMIT 1' into rec;
- EXCEPTION WHEN OTHERS THEN
- RAISE EXCEPTION 'Could not execute query please verify syntax of: '
- USING HINT = edges_sql;
- END;
-
- BEGIN
- EXECUTE 'SELECT id, the_geom from ('||safe_sql||') as __b__' into rec;
- EXCEPTION
- WHEN OTHERS THEN
- RAISE EXCEPTION 'An expected column was not found in the query'
- USING HINT = 'Please veryfy the column names: id, the_geom';
- END;
-
- sql ='
- WITH
- safesql AS (' || safe_sql || '),
- close_ones AS
- (SELECT id, the_geom AS line,
- ST_Distance(the_geom,' || quote_literal(point_geom::TEXT) ||'::geometry ) AS distance,
- ST_ClosestPoint(the_geom,' || quote_literal(point_geom::TEXT) || '::geometry) AS blade
- FROM safesql
- WHERE ST_DWithin(the_geom,' || quote_literal(point_geom::TEXT) ||'::geometry, ' || tolerance || ')),
- closest_ones AS
- (SELECT min(distance) min_dist FROM close_ones),
- third_q AS
- (SELECT DISTINCT(id) id, distance, line, blade FROM close_ones WHERE distance = (select min_dist from closest_ones) ORDER BY id LIMIT 1),
- dump_values AS
- (SELECT id,
- (ST_length(ST_GeometryN(st_split(line, blade),1))/ST_length(line))::FLOAT AS fraction,
- (line << ' || quote_literal(point_geom::TEXT) || '::geometry) as rightSide
- FROM third_q)
- SELECT id::BIGINT,
- fraction::FLOAT,
- (CASE WHEN rightSide THEN ''r'' ELSE ''l'' END)::char FROM dump_values';
-
- RETURN query EXECUTE sql;
-
-END;
-$body$
- language plpgsql volatile
- cost 5;
-
diff --git a/src/common/sql/noUnderUtilities.sql b/src/common/sql/noUnderUtilities.sql
deleted file mode 100644
index e3df719..0000000
--- a/src/common/sql/noUnderUtilities.sql
+++ /dev/null
@@ -1,111 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: noUnderUtilities.sql
-
-Copyright (c) 2015 Celia Vriginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
-RETURNS RECORD AS
-$BODY$
-BEGIN
- raise notice 'pgr_getTableName: This function will no longer be soported';
- select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
-RETURNS text AS
-$BODY$
-BEGIN
- raise notice 'pgr_getColumnName: This function will no longer be soported';
- return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
-RETURNS boolean AS
-$BODY$
-DECLARE
- cname text;
-BEGIN
- raise notice 'pgr_isColumnInTable: This function will no longer be soported';
- select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
- return cname IS not NULL;
-END;
-$BODY$
- LANGUAGE plpgsql VOLATILE STRICT;
-
-CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
-RETURNS boolean AS
-$BODY$
-BEGIN
- raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
- return _pgr_isColumnIndexed(tab,col);
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-
-create or replace function pgr_quote_ident(idname text)
-returns text as
-$BODY$
-BEGIN
- raise notice 'pgr_isColumnInTable: This function will no longer be soported';
- return _pgr_quote_ident(idname);
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
-RETURNS boolean AS
-$BODY$
-BEGIN
- raise notice 'pgr_versionless: This function will no longer be soported';
- return _pgr_versionless(v1,v2);
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-create or replace function pgr_startPoint(g geometry)
- returns geometry as
-$body$
-BEGIN
- raise notice 'pgr_startPoint: This function will no longer be soported';
- return _pgr_startPoint(g);
-END;
-$body$
-language plpgsql IMMUTABLE;
-
-
-
-create or replace function pgr_endPoint(g geometry)
- returns geometry as
-$body$
-BEGIN
- raise notice 'pgr_endPoint: This function will no longer be soported';
- return _pgr_endPoint(g);
-END;
-$body$
-language plpgsql IMMUTABLE;
diff --git a/src/common/sql/pgRouting-header.sql b/src/common/sql/pgRouting-header.sql
deleted file mode 100644
index 218fb7b..0000000
--- a/src/common/sql/pgRouting-header.sql
+++ /dev/null
@@ -1,37 +0,0 @@
-\echo Use "CREATE EXTENSION pgrouting" to load this file. \quit
-
-
-
-
---- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
----
---- pgRouting provides geospatial routing functionality.
---- http://pgrouting.org
---- copyright
---- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
----
----
---- This is free software; you can redistribute and/or modify it:
---- the terms of the GNU General Public Licence. See the COPYING file.
---- the terms of the MIT-X Licence. See the COPYING file.
----
---- The following functions have MIT-X licence:
---- pgr_version()
---- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
---- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
---- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
----
----
---- All other functions are under GNU General Public Licence.
----
---- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
---
--- WARNING: Any change in this file must be evaluated for compatibility.
--- Changes cleanly handled by postgis_upgrade.sql are fine,
--- other changes will require a bump in Major version.
--- Currently only function replaceble by CREATE OR REPLACE
--- are cleanly handled.
---
--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
diff --git a/src/common/sql/pgr_parameter_check.sql b/src/common/sql/pgr_parameter_check.sql
deleted file mode 100644
index 0c88312..0000000
--- a/src/common/sql/pgr_parameter_check.sql
+++ /dev/null
@@ -1,162 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: pgr_parameter_check.sql
-
-Copyright (c) 2014 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
------------------------------------------------------------------------
--- Function _pgr_parameter_check
--- Check's the parameters type of the sql input
------------------------------------------------------------------------
-
--- change the default to true when all the functions will use the bigint
--- put TRUE when it uses BGINT
--- Query styles:
--- dijkstra (id, source, target, cost, [reverse_cost])
--- johnson (source, target, cost, [reverse_cost])
-
-CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
- RETURNS bool AS
- $BODY$
-
- DECLARE
- rec record;
- rec1 record;
- has_rcost boolean;
- safesql text;
- BEGIN
- IF (big) THEN
- RAISE EXCEPTION 'This function is for old style functions';
- END IF;
-
- -- checking query is executable
- BEGIN
- safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
- execute safesql into rec;
- EXCEPTION
- WHEN OTHERS THEN
- RAISE EXCEPTION 'Could not execute query please verify syntax of: '
- USING HINT = sql;
- END;
-
- -- checking the fixed columns and data types of the integers
- IF fn IN ('dijkstra','astar') THEN
- BEGIN
- execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
- EXCEPTION
- WHEN OTHERS THEN
- RAISE EXCEPTION 'An expected column was not found in the query'
- USING ERRCODE = 'XX000',
- HINT = 'Please veryfy the column names: id, source, target, cost';
- END;
- execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
- || ' from ('||safesql||') AS __b__ ' into rec;
- -- Version 2.0.0 is more restrictive
- IF NOT( (rec.id_type in ('integer'::text))
- AND (rec.source_type in ('integer'::text))
- AND (rec.target_type in ('integer'::text))
- AND (rec.cost_type = 'double precision'::text)) THEN
- RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
- USING ERRCODE = 'XX000';
- END IF;
- END IF;
-
-
- IF fn IN ('astar') THEN
- BEGIN
- execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
- EXCEPTION
- WHEN OTHERS THEN
- RAISE EXCEPTION 'An expected column was not found in the query'
- USING ERRCODE = 'XX000',
- HINT = 'Please veryfy the column names: x1,y1, x2,y2';
- END;
- execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
- || ' from ('||safesql||') AS __b__ ' into rec;
- -- Version 2.0.0 is more restrictive
- IF NOT( (rec.x1_type = 'double precision'::text)
- AND (rec.y1_type = 'double precision'::text)
- AND (rec.x2_type = 'double precision'::text)
- AND (rec.y2_type = 'double precision'::text)) THEN
- RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
- USING ERRCODE = 'XX000';
- END IF;
- END IF;
-
- -- checking the fixed columns and data types of the integers
- IF fn IN ('johnson') THEN
- BEGIN
- execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
- EXCEPTION
- WHEN OTHERS THEN
- RAISE EXCEPTION 'An expected column was not found in the query'
- USING HINT = 'Please veryfy the column names: id, source, target, cost',
- ERRCODE = 'XX000';
- END;
-
- execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
- || ' from ('||safesql||') AS __b__ ' into rec;
- -- Version 2.0.0 is more restrictive
- IF NOT( (rec.source_type in ('integer'::text))
- AND (rec.target_type in ('integer'::text))
- AND (rec.cost_type = 'double precision'::text)) THEN
- RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
- USING ERRCODE = 'XX000';
- END IF;
- END IF;
-
-
- -- Checking the data types of the optional reverse_cost";
- has_rcost := false;
- IF fn IN ('johnson','dijkstra','astar') THEN
- BEGIN
- execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
- has_rcost := true;
- EXCEPTION
- WHEN OTHERS THEN
- has_rcost = false;
- return has_rcost;
- END;
- if (has_rcost) then
- IF (big) then
- IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
- RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
- USING ERRCODE = 'XX000';
- END IF;
- ELSE -- Version 2.0.0 is more restrictive
- IF (rec1.rev_type != 'double precision') then
- RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
- USING ERRCODE = 'XX000';
- END IF;
- END IF;
- end if;
- return true;
- END IF;
- -- just for keeps
- return true;
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 1;
-
-
diff --git a/src/common/sql/pgrouting-types.sql b/src/common/sql/pgrouting-types.sql
deleted file mode 100644
index ac63ecf..0000000
--- a/src/common/sql/pgrouting-types.sql
+++ /dev/null
@@ -1,54 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
--- pgRouting 2.0 types
-
-
-
-CREATE TYPE pgr_costResult AS
-(
- seq integer,
- id1 integer,
- id2 integer,
- cost float8
-);
-
-
-
-CREATE TYPE pgr_costResult3 AS
-(
- seq integer,
- id1 integer,
- id2 integer,
- id3 integer,
- cost float8
-);
-
-CREATE TYPE pgr_geomResult AS
-(
- seq integer,
- id1 integer,
- id2 integer,
- geom geometry
-);
-
diff --git a/src/common/sql/pgrouting_utilities.sql b/src/common/sql/pgrouting_utilities.sql
deleted file mode 100644
index ae778c9..0000000
--- a/src/common/sql/pgrouting_utilities.sql
+++ /dev/null
@@ -1,471 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: pgrouting_utilities.sql
-
-Copyright (c) 2015 Celia Vriginia Vergara Castillo
-Copyright (c) 2015 REgina Obe
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-
-/*
-.. function:: _pgr_getTableName(tab)
-
- Examples:
- * select * from _pgr_getTableName('tab');
- * naming record;
- execute 'select * from _pgr_getTableName('||quote_literal(tab)||')' INTO naming;
- schema=naming.sname; table=naming.tname
-
-
- Returns (schema,name) of table "tab" considers Caps and when not found considers lowercases
- (schema,NULL) when table was not found
- (NULL,NULL) when schema was not found.
-
- Author: Vicky Vergara <vicky_vergara at hotmail.com>>
-
- HISTORY
- 2015/11/01 Changed to handle views and refactored
- Created: 2013/08/19 for handling schemas
-
-*/
-
-
-CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
- RETURNS RECORD AS
-$$
-DECLARE
- naming record;
- i integer;
- query text;
- sn text; -- schema name
- tn text; -- table name
- ttype text; --table type for future use
- err boolean;
- debuglevel text;
- var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
-BEGIN
-
- execute 'show client_min_messages' into debuglevel;
-
-
- perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
- --RAISE DEBUG 'Checking % exists',tab;
-
- i := strpos(tab,'.');
- IF (i <> 0) THEN
- sn := split_part(tab, '.',1);
- tn := split_part(tab, '.',2);
- ELSE
- sn := current_schema;
- tn := tab;
- END IF;
-
-
- SELECT schema_name INTO sname
- FROM information_schema.schemata WHERE schema_name = sn;
-
- IF sname IS NOT NULL THEN -- found schema (as is)
- SELECT table_name, table_type INTO tname, ttype
- FROM information_schema.tables
- WHERE
- table_type = ANY(var_types) and
- table_schema = sname and
- table_name = tn ;
- IF tname is NULL THEN
- SELECT table_name, table_type INTO tname, ttype
- FROM information_schema.tables
- WHERE
- table_type = ANY(var_types) and
- table_schema = sname and
- table_name = lower(tn) ORDER BY table_name;
- END IF;
- END IF;
- IF sname is NULL or tname is NULL THEN --schema not found or table not found
- SELECT schema_name INTO sname
- FROM information_schema.schemata
- WHERE schema_name = lower(sn) ;
-
- IF sname IS NOT NULL THEN -- found schema (with lower caps)
- SELECT table_name, table_type INTO tname, ttype
- FROM information_schema.tables
- WHERE
- table_type = ANY(var_types) and
- table_schema = sname and
- table_name= tn ;
-
- IF tname IS NULL THEN
- SELECT table_name, table_type INTO tname, ttype
- FROM information_schema.tables
- WHERE
- table_type = ANY(var_types) and
- table_schema = sname and
- table_name= lower(tn) ;
- END IF;
- END IF;
- END IF;
- err = (sname IS NULL OR tname IS NULL);
- perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
-
-END;
-$$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-
-
-/*
-.. function:: _pgr_getColumnName(sname,tname,col,reportErrs default 1) returns text
-.. function:: _pgr_getColumnName(tab,col,reportErrs default 1) returns text
-
- Returns:
- cname registered column "col" in table "tab" or "sname.tname" considers Caps and when not found considers lowercases
- NULL when "tab"/"sname"/"tname" is not found or when "col" is not in table "tab"/"sname.tname"
- unless otherwise indicated raises notices on errors
-
- Examples:
- * select _pgr_getColumnName('tab','col');
- * select _pgr_getColumnName('myschema','mytable','col');
- execute 'select _pgr_getColumnName('||quote_literal('tab')||','||quote_literal('col')||')' INTO column;
- execute 'select _pgr_getColumnName('||quote_literal(sname)||','||quote_literal(sname)||','||quote_literal('col')||')' INTO column;
-
- Author: Vicky Vergara <vicky_vergara at hotmail.com>>
-
- HISTORY
- Created: 2013/08/19 for handling schemas
- Modified: 2014/JUL/28 added overloadig
-*/
-
-
-CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
-RETURNS text AS
-$BODY$
-DECLARE
- cname text;
- naming record;
- err boolean;
-BEGIN
-
- execute 'SELECT column_name FROM information_schema.columns
- WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
-
- IF cname is null THEN
- execute 'SELECT column_name FROM information_schema.columns
- WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
- END if;
-
- err = cname is null;
-
- perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
- RETURN cname;
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-
-
-CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
-RETURNS text AS
-$BODY$
-DECLARE
- sname text;
- tname text;
- cname text;
- naming record;
- err boolean;
-BEGIN
- select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
- sname=naming.sname;
- tname=naming.tname;
-
- select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
- RETURN cname;
-END;
-
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-
-/*
-.. function:: _pgr_isColumnInTable(tab, col)
-
- Examples:
- * select _pgr_isColumnName('tab','col');
- * flag boolean;
- execute 'select _pgr_getColumnName('||quote_literal('tab')||','||quote_literal('col')||')' INTO flag;
-
- Returns true if column "col" exists in table "tab"
- false when "tab" doesn't exist or when "col" is not in table "tab"
-
- Author: Stephen Woodbridge <woodbri at imaptools.com>
-
- Modified by: Vicky Vergara <vicky_vergara at hotmail.com>>
-
- HISTORY
- Modified: 2013/08/19 for handling schemas
-*/
-CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
-RETURNS boolean AS
-$BODY$
-DECLARE
- cname text;
-BEGIN
- select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
- return cname is not null;
-END;
-$BODY$
- LANGUAGE plpgsql VOLATILE STRICT;
-
-
-/*
-.. function:: _pgr_isColumnIndexed(tab, col)
-
- Examples:
- * select _pgr_isColumnIndexed('tab','col');
- * flag boolean;
- execute 'select _pgr_getColumnIndexed('||quote_literal('tab')||','||quote_literal('col')||')' INTO flag;
-
- Author: Stephen Woodbridge <woodbri at imaptools.com>
-
- Modified by: Vicky Vergara <vicky_vergara at hotmail.com>>
-
- Returns true when column "col" in table "tab" is indexed.
- false when table "tab" is not found or
- when column "col" is nor found in table "tab" or
- when column "col" is not indexed
-*/
-
-CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
- IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
-RETURNS boolean AS
-$BODY$
-DECLARE
- naming record;
- rec record;
- pkey text;
-BEGIN
- SELECT
- pg_attribute.attname into pkey
- -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
- FROM pg_index, pg_class, pg_attribute
- WHERE
- pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
- indrelid = pg_class.oid AND
- pg_attribute.attrelid = pg_class.oid AND
- pg_attribute.attnum = any(pg_index.indkey)
- AND indisprimary;
-
- IF pkey=cname then
- RETURN TRUE;
- END IF;
-
- SELECT a.index_name,
- b.attname,
- b.attnum,
- a.indisunique,
- a.indisprimary
- INTO rec
- FROM ( SELECT a.indrelid,
- a.indisunique,
- a.indisprimary,
- c.relname index_name,
- unnest(a.indkey) index_num
- FROM pg_index a,
- pg_class b,
- pg_class c,
- pg_namespace d
- WHERE b.relname=tname
- AND b.relnamespace=d.oid
- AND d.nspname=sname
- AND b.oid=a.indrelid
- AND a.indexrelid=c.oid
- ) a,
- pg_attribute b
- WHERE a.indrelid = b.attrelid
- AND a.index_num = b.attnum
- AND b.attname = cname
- ORDER BY a.index_name,
- a.index_num;
-
- RETURN FOUND;
- EXCEPTION WHEN OTHERS THEN
- perform _pgr_onError( true, reportErrs, fnName,
- 'Error when checking for the postgres system attributes', SQLERR);
- RETURN FALSE;
-END;
-$BODY$
- LANGUAGE plpgsql VOLATILE STRICT;
-
-CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
- IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
-RETURNS boolean AS
-$BODY$
-DECLARE
- naming record;
- rec record;
- sname text;
- tname text;
- cname text;
- pkey text;
- value boolean;
-BEGIN
- SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
- sname=naming.sname;
- tname=naming.tname;
- IF sname IS NULL OR tname IS NULL THEN
- RETURN FALSE;
- END IF;
- SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
- IF cname IS NULL THEN
- RETURN FALSE;
- END IF;
- select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
- return value;
-END
-$BODY$
- LANGUAGE plpgsql VOLATILE STRICT;
-
-/*
-.. function:: _pgr_quote_ident(text)
-
- Author: Stephen Woodbridge <woodbri at imaptools.com>
-
- Function to split a string on '.' characters and then quote the
- components as postgres identifiers and then join them back together
- with '.' characters. multile '.' will get collapsed into a single
- '.' so 'schema...table' till get returned as 'schema."table"' and
- 'Schema.table' becomes '"Schema'.'table"'
-
-*/
-
-create or replace function _pgr_quote_ident(idname text)
- returns text as
-$body$
-declare
- t text[];
- pgver text;
-
-begin
- pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
-
- if _pgr_versionless(pgver, '9.2') then
- select into t array_agg(quote_ident(term)) from
- (select nullif(unnest, '') as term
- from unnest(string_to_array(idname, '.'))) as foo;
- else
- select into t array_agg(quote_ident(term)) from
- (select unnest(string_to_array(idname, '.', '')) as term) as foo;
- end if;
- return array_to_string(t, '.');
-end;
-$body$
-language plpgsql immutable;
-
-/*
- * function for comparing version strings.
- * Ex: select _pgr_version_less(postgis_lib_version(), '2.1');
-
- Author: Stephen Woodbridge <woodbri at imaptools.com>
- *
- * needed because postgis 2.1 deprecates some function names and
- * we need to detect the version at runtime
-*/
-CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
- RETURNS boolean AS
-$BODY$
-
-
-declare
- v1a text[];
- v2a text[];
- nv1 integer;
- nv2 integer;
- ne1 integer;
- ne2 integer;
-
-begin
- -- separate components into an array, like:
- -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
- v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
- v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
-
- -- convert modifiers to numbers for comparison
- -- we do not delineate between alpha1, alpha2, alpha3, etc
- ne1 := case when v1a[4] is null or v1a[4]='' then 5
- when v1a[4] ilike 'rc%' then 4
- when v1a[4] ilike 'beta%' then 3
- when v1a[4] ilike 'alpha%' then 2
- when v1a[4] ilike 'dev%' then 1
- else 0 end;
-
- ne2 := case when v2a[4] is null or v2a[4]='' then 5
- when v2a[4] ilike 'rc%' then 4
- when v2a[4] ilike 'beta%' then 3
- when v2a[4] ilike 'alpha%' then 2
- when v2a[4] ilike 'dev%' then 1
- else 0 end;
-
- nv1 := v1a[1]::integer * 10000 +
- coalesce(v1a[2], '0')::integer * 1000 +
- coalesce(v1a[3], '0')::integer * 100 + ne1;
- nv2 := v2a[1]::integer * 10000 +
- coalesce(v2a[2], '0')::integer * 1000 +
- coalesce(v2a[3], '0')::integer * 100 + ne2;
-
- --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
-
- return nv1 < nv2;
-end;
-$BODY$
- LANGUAGE plpgsql IMMUTABLE STRICT
- COST 1;
-
-create or replace function _pgr_startPoint(g geometry)
- returns geometry as
-$body$
-declare
-
-begin
- if geometrytype(g) ~ '^MULTI' then
- return st_startpoint(st_geometryn(g,1));
- else
- return st_startpoint(g);
- end if;
-end;
-$body$
-language plpgsql IMMUTABLE;
-
-
-
-create or replace function _pgr_endPoint(g geometry)
- returns geometry as
-$body$
-declare
-
-begin
- if geometrytype(g) ~ '^MULTI' then
- return st_endpoint(st_geometryn(g,1));
- else
- return st_endpoint(g);
- end if;
-end;
-$body$
-language plpgsql IMMUTABLE;
-
diff --git a/src/common/sql/pgrouting_version.sql b/src/common/sql/pgrouting_version.sql
deleted file mode 100644
index deaf474..0000000
--- a/src/common/sql/pgrouting_version.sql
+++ /dev/null
@@ -1,37 +0,0 @@
--- -------------------------------------------------------------------
--- pgrouting_version.sql
--- AuthorL Stephen Woodbridge <woodbri at imaptools.com>
--- Copyright 2013 Stephen Woodbridge
--- This file is release unde an MIT-X license.
--- -------------------------------------------------------------------
-
-/*
-.. function:: pgr_version()
-
- Author: Stephen Woodbridge <woodbri at imaptools.com>
-
- Returns the version of pgrouting,Git build,Git hash, Git branch and boost
-*/
-
-CREATE OR REPLACE FUNCTION pgr_version()
-RETURNS TABLE(
- "version" varchar,
- tag varchar,
- hash varchar,
- branch varchar,
- boost varchar
- ) AS
-$BODY$
-
-DECLARE
-
-BEGIN
- RETURN QUERY SELECT '${PGROUTING_VERSION}'::varchar AS version,
- '${PGROUTING_FULL_VERSION}'::varchar AS tag,
- '${PGROUTING_GIT_HASH}'::varchar AS hash,
- '${PGROUTING_GIT_BRANCH}'::varchar AS branch,
- '${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}'::varchar AS boost;
-END;
-$BODY$
-LANGUAGE plpgsql IMMUTABLE;
-
diff --git a/src/common/sql/utilities_pgr.sql b/src/common/sql/utilities_pgr.sql
deleted file mode 100644
index ce4f0d5..0000000
--- a/src/common/sql/utilities_pgr.sql
+++ /dev/null
@@ -1,288 +0,0 @@
-/*PGR-GNU*****************************************************************
-
- utilities_pgr.sql
-
- Copyright (c) 2014 Celia Virginia Vergara Castillo
- vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-/************************************************************************
-.. function:: _pgr_onError(errCond,reportErrs,functionname,msgerr,hinto,msgok)
-
- If the error condition is is true, i.e., there is an error,
- it will raise a message based on the reportErrs:
- 0: debug_ raise debug_
- 1: report raise notice
- 2: abort throw a raise_exception
- Examples:
-
- * preforn _pgr_onError( idname=gname, 2, 'pgr_createToplogy',
- 'Two columns share the same name');
- * preforn _pgr_onError( idname=gname, 2, 'pgr_createToplogy',
- 'Two columns share the same name', 'Idname and gname must be different');
- * preforn _pgr_onError( idname=gname, 2, 'pgr_createToplogy',
- 'Two columns share the same name', 'Idname and gname must be different',
- 'Column names are OK');
-
-
- Author: Vicky Vergara <vicky_vergara at hotmail.com>>
-
- HISTORY
- Created: 2014/JUl/28 handling the errors, and have a more visual output
-
-************************************************************************/
-
-CREATE OR REPLACE FUNCTION _pgr_onError(
- IN errCond boolean, -- true there is an error
- IN reportErrs int, -- 0, 1 or 2
- IN fnName text, -- function name that generates the error
- IN msgerr text, -- error message
- IN hinto text default 'No hint', -- hint help
- IN msgok text default 'OK') -- message if everything is ok
- RETURNS void AS
-$BODY$
-BEGIN
- if errCond=true then
- if reportErrs=0 then
- raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
- else
- if reportErrs = 2 then
- raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
- raise raise_exception;
- else
- raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
- end if;
- end if;
- else
- raise debug 'PGR ----> %: %',fnName,msgok;
- end if;
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-/************************************************************************
-.. function:: _pgr_msg(msgKind, fnName, msg)
-
- It will raise a message based on the msgKind:
- 0: debug_ raise debug_
- 1: notice raise notice
- anything else: report raise notice
-
- Examples:
-
- * preforn _pgr_msg( 1, 'pgr_createToplogy', 'Starting a long process... ');
- * preforn _pgr_msg( 1, 'pgr_createToplogy');
-
-
- Author: Vicky Vergara <vicky_vergara at hotmail.com>>
-
- HISTORY
- Created: 2014/JUl/28 handling the errors, and have a more visual output
-
-************************************************************************/
-
-CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
- RETURNS void AS
-$BODY$
-BEGIN
- if msgKind = 0 then
- raise debug '----> PGR DEBUG in %: %',fnName,msg;
- else
- raise notice '----> PGR NOTICE in %: %',fnName,msg;
- end if;
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-
-/************************************************************************
-.. function:: _pgr_getColumnType(sname,tname,col,reportErrs,fnName) returns text
-.. function:: _pgr_getColumnType(tab,col,reportErrs,fname) returns text
-
- Returns:
- type the types of the registered column "col" in table "tab" or "sname.tname"
- NULL when "tab"/"sname"/"tname" is not found or when "col" is not in table "tab"/"sname.tname"
- unless otherwise indicated raises debug_ on errors
-
- Examples:
- * select _pgr_getColumnType('tab','col');
- * select _pgr_getColumnType('myschema','mytable','col');
- execute 'select _pgr_getColumnType('||quote_literal('tab')||','||quote_literal('col')||')' INTO column;
- execute 'select _pgr_getColumnType('||quote_literal(sname)||','||quote_literal(sname)||','||quote_literal('col')||')' INTO column;
-
- Author: Vicky Vergara <vicky_vergara at hotmail.com>>
-
- HISTORY
- Created: 2014/JUL/28
-************************************************************************/
-
-CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
- IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
-RETURNS text AS
-$BODY$
-DECLARE
- ctype text;
- naming record;
- err boolean;
-BEGIN
-
- EXECUTE 'select data_type from information_schema.columns '
- || 'where table_name = '||quote_literal(tname)
- || ' and table_schema=' || quote_literal(sname)
- || ' and column_name='||quote_literal(cname)
- into ctype;
- err = ctype is null;
- perform _pgr_onError(err, reportErrs, fnName,
- 'Type of Column '|| cname ||' not found',
- 'Check your column name',
- 'OK: Type of Column '|| cname || ' is ' || ctype);
- RETURN ctype;
-END;
-
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-
-CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
- IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
-RETURNS text AS
-$BODY$
-DECLARE
- sname text;
- tname text;
- cname text;
- ctype text;
- naming record;
- err boolean;
-BEGIN
-
- select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
- sname=naming.sname;
- tname=naming.tname;
- select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
- select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
- RETURN ctype;
-END;
-
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
-
-
-
-
-/************************************************************************
-.. function:: _pgr_get_statement( sql ) returns the original statement if its a prepared statement
-
- Returns:
- sname,vname registered schemaname, vertices table name
-
-
- Examples:
- select * from _pgr_dijkstra(_pgr_get_statament($1),$2,$3,$4);
-
- Author: Vicky Vergara <vicky_vergara at hotmail.com>>
-
- HISTORY
- Created: 2014/JUL/27
-************************************************************************/
-CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
-RETURNS text AS
-$BODY$
-DECLARE
-sql TEXT;
-BEGIN
- EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
- IF (sql IS NULL) THEN
- RETURN o_sql;
- ELSE
- RETURN regexp_replace(sql, '(.)* as ', '', 'i');
- END IF;
-END
-$BODY$
-LANGUAGE plpgsql STABLE STRICT;
-
-
-/************************************************************************
-.. function:: _pgr_checkVertTab(vertname,columnsArr,reportErrs) returns record of sname,vname
-
- Returns:
- sname,vname registered schemaname, vertices table name
-
- if the table is not found will stop any further checking.
- if a column is missing, then its added as integer --- (id also as integer but is bigserial when the vertices table is created with the pgr functions)
-
- Examples:
- * execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
- * execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
-
- Author: Vicky Vergara <vicky_vergara at hotmail.com>>
-
- HISTORY
- Created: 2014/JUL/27
-************************************************************************/
-CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
- IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
- OUT sname text,OUT vname text)
-RETURNS record AS
-$BODY$
-DECLARE
- cname text;
- colname text;
- naming record;
- debuglevel text;
- err boolean;
- msgKind int;
-
-BEGIN
- msgKind = 0; -- debug_
- execute 'show client_min_messages' into debuglevel;
-
- perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
- select * from _pgr_getTableName(vertname, 0, fnName) into naming;
- sname=naming.sname;
- vname=naming.tname;
- err = sname is NULL or vname is NULL;
- perform _pgr_onError( err, 2, fnName,
- 'Vertex Table: ' || vertname || ' not found',
- 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
- 'Vertex Table: ' || vertname || ' found');
-
-
- perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
- FOREACH cname IN ARRAY columnsArr
- loop
- select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
- if colname is null then
- perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
- set client_min_messages to warning;
- execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
- execute 'set client_min_messages to '|| debuglevel;
- perform _pgr_msg(msgKind, fnName);
- end if;
- end loop;
- perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
-
- perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
- END
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-
diff --git a/src/common/src/CMakeLists.txt b/src/common/src/CMakeLists.txt
index ac26041..a4f2d1c 100644
--- a/src/common/src/CMakeLists.txt
+++ b/src/common/src/CMakeLists.txt
@@ -1,19 +1,23 @@
-ADD_LIBRARY(common OBJECT
+ADD_LIBRARY(common OBJECT
postgres_connection.c
e_report.c
- restrictions_input.c
+ restrict_input.c
basePath_SSEC.cpp
points_input.c
matrixRows_input.c
get_check_data.c
edges_input.c
-
+ orders_input.c
+ orders_input.c
+ vehicles_input.c
+
coordinates_input.c
arrays_input.c
time_msg.c
pgr_assert.cpp
+ identifier.cpp
basic_vertex.cpp
xy_vertex.cpp
diff --git a/src/common/src/arrays_input.c b/src/common/src/arrays_input.c
index d2cb14c..211310a 100644
--- a/src/common/src/arrays_input.c
+++ b/src/common/src/arrays_input.c
@@ -22,17 +22,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./postgres_connection.h"
+#include "c_common/arrays_input.h"
#include "utils/lsyscache.h"
#include "catalog/pg_type.h"
-#include "utils/array.h"
-#include "./pgr_types.h"
-#include "./time_msg.h"
-#include "./debug_macro.h"
-#include "./arrays_input.h"
+#include "c_common/time_msg.h"
+#include "c_common/debug_macro.h"
#include <assert.h>
static
diff --git a/src/common/src/arrays_input.h b/src/common/src/arrays_input.h
deleted file mode 100644
index 7671b23..0000000
--- a/src/common/src/arrays_input.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: arrays_input.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_ARRAYS_INPUT_H_
-#define SRC_COMMON_SRC_ARRAYS_INPUT_H_
-#pragma once
-
-#include "./pgr_types.h"
-
-int64_t* pgr_get_bigIntArray(size_t *arrlen, ArrayType *input);
-
-// Allows the input array to be empty
-int64_t* pgr_get_bigIntArray_allowEmpty(size_t *arrlen, ArrayType *input);
-
-#endif // SRC_COMMON_SRC_ARRAYS_INPUT_H_
diff --git a/src/common/src/basePath_SSEC.cpp b/src/common/src/basePath_SSEC.cpp
index b28c955..98b670b 100644
--- a/src/common/src/basePath_SSEC.cpp
+++ b/src/common/src/basePath_SSEC.cpp
@@ -21,15 +21,15 @@ along with this program; if not, write to the Free Software
********************************************************************PGR-GNU*/
-#include "./basePath_SSEC.hpp"
+#include "cpp_common/basePath_SSEC.hpp"
#include <deque>
#include <iostream>
#include <algorithm>
#include <utility>
-#include "./pgr_types.h"
-#include "./pgr_assert.h"
+#include "c_types/general_path_element_t.h"
+#include "cpp_common/pgr_assert.h"
void Path::push_front(Path_t data) {
path.push_front(data);
@@ -149,9 +149,10 @@ void Path::append(const Path &other) {
*this = other;
return;
}
+#if 0
pgassert(path.back().cost == 0);
+#endif
pgassert(path.back().edge == -1);
-
m_end_id = other.m_end_id;
auto last = path.back();
@@ -211,3 +212,110 @@ void Path::get_pg_ksp_path(
sequence++;
}
}
+
+
+/** @brief Sorts a path by node, aggcost ascending
+ *
+ * nodes ASC
+ * agg_cost ASC
+ */
+void
+Path::sort_by_node_agg_cost() {
+ std::sort(path.begin(), path.end(),
+ [](const Path_t &l, const Path_t &r)
+ {return l.node < r.node;});
+ std::stable_sort(path.begin(), path.end(),
+ [](const Path_t &l, const Path_t &r)
+ {return l.agg_cost < r.agg_cost;});
+}
+
+/*
+ * FRIENDS
+ */
+
+
+size_t
+collapse_paths(
+ General_path_element_t **ret_path,
+ const std::deque< Path > &paths) {
+ size_t sequence = 0;
+ for (const Path &path : paths) {
+ if (path.path.size() > 0)
+ path.generate_postgres_data(ret_path, sequence);
+ }
+ return sequence;
+}
+
+/*
+ * sort the paths by size from greater to smaller
+ * and sort each path by node
+ * all the nodes on p2 are going to be compared
+ * with the nodes of p1
+ *
+ * When both paths reach the node and p1.agg_cost > p2.agg_cost
+ * erase the node of p1
+ * (can't erase from p2 because we loose the iterators
+ * so in a future cycle it will be deleted)
+ *
+ * sort the paths by start_id,
+ */
+
+void
+equi_cost(std::deque< Path > &paths) {
+ /* sort paths by size: largest first */
+ std::sort(paths.begin(), paths.end(),
+ [](const Path &e1, const Path &e2)->bool {
+ return e2.size() < e1.size();
+ });
+
+ /* sort each path by node: smaller id first */
+ for (auto &p : paths) {
+ if (p.size() < 2) continue;
+ std::sort(p.begin(), p.end(),
+ [](const Path_t &e1, const Path_t &e2)->bool {
+ return e1.node < e2.node;
+ });
+ }
+
+ for (auto &p1 : paths) {
+ for (const auto &p2 : paths) {
+ if (p1.start_id() == p2.start_id()) continue;
+ for (const auto &stop : p2.path) {
+ /* find the node of p2 in p1 */
+ auto pos = lower_bound(p1.begin(), p1.end(), stop,
+ [](const Path_t &l, const Path_t &r)->bool {
+ return l.node < r.node;
+ });
+
+ if (pos != p1.end()
+ && (stop.node == pos->node)
+ && (stop.agg_cost < pos->agg_cost)) {
+ /* both share the same node &
+ * the second path has the smallest
+ * So erasing from the first path */
+ p1.erase(pos);
+ }
+ }
+ }
+ }
+ /* sort paths by start_id */
+ std::sort(paths.begin(), paths.end(),
+ [](const Path &e1, const Path &e2)->bool {
+ return e1.start_id() < e2.start_id();
+ });
+
+ /* sort each path by agg_cost, node */
+ for (auto &path : paths) {
+ path.sort_by_node_agg_cost();
+ }
+}
+
+
+size_t
+count_tuples(const std::deque< Path > &paths) {
+ size_t count(0);
+ for (const Path &e : paths) {
+ count += e.path.size();
+ }
+ return count;
+}
diff --git a/src/common/src/basePath_SSEC.hpp b/src/common/src/basePath_SSEC.hpp
deleted file mode 100644
index 99d23d0..0000000
--- a/src/common/src/basePath_SSEC.hpp
+++ /dev/null
@@ -1,331 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: basePath_SSEC.hpp
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_BASEPATH_SSEC_HPP_
-#define SRC_COMMON_SRC_BASEPATH_SSEC_HPP_
-#pragma once
-
-
-#include <boost/config.hpp>
-#include <boost/graph/adjacency_list.hpp>
-
-
-#include <deque>
-#include <vector>
-#include <iostream>
-#include <algorithm>
-#include "./pgr_types.h"
-#include "./pgr_base_graph.hpp"
-
-
-class Path {
- typedef std::deque< Path_t >::iterator pthIt;
- typedef std::deque< Path_t >::const_iterator ConstpthIt;
-
- private:
- std::deque< Path_t > path;
- int64_t m_start_id;
- int64_t m_end_id;
- double m_tot_cost;
-
- public:
- Path(): m_tot_cost(0) {}
- Path(int64_t s_id, int64_t e_id)
- : m_start_id(s_id), m_end_id(e_id), m_tot_cost(0)
- {}
- Path(const Path&) = default;
- int64_t start_id() const {return m_start_id;}
- void start_id(int64_t value) {m_start_id = value;}
- int64_t end_id() const {return m_end_id;}
- void end_id(int64_t value) {m_end_id = value;}
- double tot_cost() const {return m_tot_cost;}
-
- size_t size() const {return path.size();}
- bool empty() const {return path.empty();}
-
- void push_front(Path_t data);
- void push_back(Path_t data);
- const Path_t& operator[](size_t i) const {return path[i];}
- Path_t& operator[](size_t i) {return path[i];}
-
- pthIt begin() {return path.begin();}
- pthIt end() {return path.end();}
- ConstpthIt begin() const {return path.begin();}
- ConstpthIt end() const {return path.end();}
-
-
- void erase(pthIt pos) {path.erase(pos);}
- const Path_t& back() const {return path.back();}
- Path_t& back() {return path.back();}
- const Path_t& front() const {return path.front();}
- Path_t& front() {return path.front();}
-
-
- Path_t set_data(
- int64_t d_from,
- int64_t d_to,
- int64_t d_vertex,
- int64_t d_edge,
- double d_cost,
- double d_tot_cost);
-
- void push_front(
- int64_t d_vertex,
- int64_t d_edge,
- double d_cost,
- double d_tot_cost);
- void clear();
-
- friend std::ostream& operator<<(std::ostream &log, const Path &p);
-
-
- void reverse();
-
- Path getSubpath(unsigned int j) const;
-
-
- bool isEqual(const Path &subpath) const;
- void appendPath(const Path &o_path);
- void append(const Path &other);
- void empty_path(unsigned int d_vertex);
-
- void get_pg_dd_path(
- General_path_element_t **ret_path,
- size_t &sequence) const;
-
- void get_pg_ksp_path(
- General_path_element_t **ret_path,
- size_t &sequence, int routeId) const;
-
- void generate_postgres_data(
- General_path_element_t **postgres_data,
- size_t &sequence) const;
-
- friend size_t collapse_paths(
- General_path_element_t **ret_path,
- const std::deque< Path > &paths) {
- size_t sequence = 0;
- for (const Path &path : paths) {
- if (path.path.size() > 0)
- path.generate_postgres_data(ret_path, sequence);
- }
- return sequence;
- }
-
-
-
- /*
- * sort the paths by size from greater to smaller
- * and sort each path by node
- * all the nodes on p2 are going to be compared
- * with the nodes of p1
- *
- * When both paths reach the node and p1.agg_cost > p2.agg_cost
- * erase the node of p1
- * (can't erase from p2 because we loose the iterators
- * so in a future cycle it will be deleted)
- *
- * sort the paths by start_id,
- */
-
- friend void equi_cost(std::deque< Path > &paths) {
- /* sort paths by size: largest first */
- std::sort(paths.begin(), paths.end(),
- [](const Path &e1, const Path &e2)->bool {
- return e2.size() < e1.size();
- });
-
- /* sort each path by node: smaller id first */
- for (auto &p : paths) {
- if (p.size() < 2) continue;
- std::sort(p.begin(), p.end(),
- [](const Path_t &e1, const Path_t &e2)->bool {
- return e1.node < e2.node;
- });
- }
-
- for (auto &p1 : paths) {
- for (const auto &p2 : paths) {
- if (p1.start_id() == p2.start_id()) continue;
- for (const auto &stop : p2.path) {
- /* find the node of p2 in p1 */
- auto pos = lower_bound(p1.begin(), p1.end(), stop,
- [](const Path_t &l, const Path_t &r)->bool {
- return l.node < r.node;
- });
-
- if (pos != p1.end()
- && (stop.node == pos->node)
- && (stop.agg_cost < pos->agg_cost)) {
- /* both share the same node &
- * the second path has the smallest
- * So erasing from the first path */
- p1.erase(pos);
- }
- }
- }
- }
-
- /* sort paths by start_id */
- std::sort(paths.begin(), paths.end(),
- [](const Path &e1, const Path &e2)->bool {
- return e1.start_id() < e2.start_id();
- });
-
- /* sort each path by agg_cost, node */
- for (auto &path : paths) {
- /* least influential data first */
- std::sort(path.begin(), path.end(),
- [](const Path_t &l, const Path_t &r)
- { return l.node < r.node;});
- /* preserve the order of what we did before */
- std::stable_sort(path.begin(), path.end(),
- [](const Path_t &l, const Path_t &r)
- { return l.agg_cost < r.agg_cost;});
- }
- }
-
- friend size_t count_tuples(const std::deque< Path > &paths) {
- size_t count(0);
- for (const Path &e : paths) {
- count += e.path.size();
- }
- return count;
- }
-
-
- template <typename G , typename V> Path(
- G &graph,
- V v_source,
- double distance,
- const std::vector<V> &predecessors,
- const std::vector<double> &distances) :
- m_start_id(graph.graph[v_source].id),
- m_end_id(graph.graph[v_source].id) {
- for (V i = 0; i < distances.size(); ++i) {
- if (distances[i] <= distance) {
- auto cost = distances[i] - distances[predecessors[i]];
- auto edge_id = graph.get_edge_id(predecessors[i], i, cost);
- push_back(
- {graph[i].id,
- edge_id, cost,
- distances[i]});
- }
- }
- }
-
-
-
- template <typename G , typename V> Path(
- const G &graph,
- const V v_source,
- const V v_target,
- const std::vector<V> &predecessors,
- const std::vector<double> &distances,
- bool only_cost,
- bool normal = true) :
- m_start_id(graph.graph[v_source].id),
- m_end_id(graph.graph[v_target].id) {
- if (!only_cost) {
- complete_path(graph,
- v_source,
- v_target,
- predecessors,
- distances,
- normal);
- return;
- }
- /*
- * only_cost
- */
- if (v_target != predecessors[v_target]) {
- push_front(
- {graph.graph[v_target].id,
- -1,
- distances[v_target],
- distances[v_target]});
- }
- return;
- }
-
- /*! @brief constructs a path based on results
- *
- * Normal = false for reversed search path like in pgr_bdDijkstra
- */
- template <typename G , typename V> void complete_path(
- const G &graph,
- const V v_source,
- const V v_target,
- const std::vector<V> &predecessors,
- const std::vector<double> &distances,
- bool normal) {
- // no path was found
- if (v_target == predecessors[v_target]) {
- return;
- }
-
- /*
- * set the target
- */
- auto target = v_target;
-
- /*
- * the last stop is the target
- */
- push_front(
- {graph.graph[target].id, -1,
- 0, distances[target]});
-
- /*
- * get the path
- */
- while (target != v_source) {
- /*
- * done when the predecesor of the target is the target
- */
- if (target == predecessors[target]) break;
-
- /*
- * Inserting values in the path
- */
- auto cost = distances[target] - distances[predecessors[target]];
- auto vertex_id = graph.graph[predecessors[target]].id;
- auto edge_id = normal?
- graph.get_edge_id(predecessors[target], target, cost)
- : graph.get_edge_id(target, predecessors[target], cost);
-
- push_front({
- vertex_id,
- edge_id,
- cost,
- distances[target] - cost});
- target = predecessors[target];
- }
-
- return;
- }
-};
-
-
-#endif // SRC_COMMON_SRC_BASEPATH_SSEC_HPP_
diff --git a/src/common/src/basic_edge.cpp b/src/common/src/basic_edge.cpp
index 7ff0480..72b4ab3 100644
--- a/src/common/src/basic_edge.cpp
+++ b/src/common/src/basic_edge.cpp
@@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./basic_edge.h"
+#include "cpp_common/basic_edge.h"
namespace pgrouting {
diff --git a/src/common/src/basic_edge.h b/src/common/src/basic_edge.h
deleted file mode 100644
index fdf09a7..0000000
--- a/src/common/src/basic_edge.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*PGR-GNU*****************************************************************
- *
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_BASIC_EDGE_H_
-#define SRC_COMMON_SRC_BASIC_EDGE_H_
-#pragma once
-
-#include "./pgr_types.h"
-
-
-namespace pgrouting {
-
-class Basic_edge{
- public:
- void cp_members(const Basic_edge &other);
-
- public:
- int64_t source;
- int64_t target;
-
- int64_t id;
- double cost;
-};
-
-} // namespace pgrouting
-
-#endif // SRC_COMMON_SRC_BASIC_EDGE_H_
diff --git a/src/common/src/basic_vertex.cpp b/src/common/src/basic_vertex.cpp
index e39b13d..4180bd5 100644
--- a/src/common/src/basic_vertex.cpp
+++ b/src/common/src/basic_vertex.cpp
@@ -22,15 +22,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./basic_vertex.h"
+#include "cpp_common/basic_vertex.h"
#include <vector>
#include <algorithm>
#include <sstream>
#include <ostream>
-#include "./pgr_types.h"
-#include "./pgr_assert.h"
+#include "cpp_common/pgr_assert.h"
namespace pgrouting {
diff --git a/src/common/src/basic_vertex.h b/src/common/src/basic_vertex.h
deleted file mode 100644
index 12532e7..0000000
--- a/src/common/src/basic_vertex.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*PGR-GNU*****************************************************************
- *
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_BASIC_VERTEX_H_
-#define SRC_COMMON_SRC_BASIC_VERTEX_H_
-#pragma once
-
-#include <vector>
-#include <ostream>
-
-#include "./pgr_types.h"
-
-
-
-namespace pgrouting {
-
-class Basic_vertex {
- public:
- Basic_vertex() :
- id(0) {}
- Basic_vertex(const Basic_vertex &v) :
- id(v.id) {}
-
- explicit Basic_vertex(const int64_t _id) :
- id(_id) {}
-
- Basic_vertex(const pgr_edge_t &other, bool is_source) :
- id(is_source? other.source : other.target) {}
-
- void cp_members(const Basic_vertex &other) {
- this->id = other.id;
- }
-
-
- friend std::ostream& operator<<(std::ostream& log, const Basic_vertex &v);
- public:
- int64_t id;
-};
-
-size_t check_vertices(std::vector < Basic_vertex > vertices);
-
-
-std::vector < Basic_vertex > extract_vertices(
- std::vector < Basic_vertex > vertices,
- const pgr_edge_t *data_edges, int64_t count);
-
-std::vector < Basic_vertex > extract_vertices(
- std::vector < Basic_vertex > vertices,
- const std::vector < pgr_edge_t > data_edges);
-
-std::vector < Basic_vertex > extract_vertices(
- const pgr_edge_t *data_edges, int64_t count);
-
-std::vector < Basic_vertex > extract_vertices(
- const std::vector < pgr_edge_t > data_edges);
-
-
-} // namespace pgrouting
-
-#endif // SRC_COMMON_SRC_BASIC_VERTEX_H_
diff --git a/src/common/src/ch_vertex.h b/src/common/src/ch_vertex.h
index 6e986ff..4d80f13 100644
--- a/src/common/src/ch_vertex.h
+++ b/src/common/src/ch_vertex.h
@@ -32,8 +32,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include <sstream>
#include <vector>
-#include "./pgr_types.h"
-#include "./identifiers.hpp"
+#include "c_types/pgr_edge_t.h"
+#include "cpp_common/identifiers.hpp"
namespace pgrouting {
diff --git a/src/common/src/coordinates_input.c b/src/common/src/coordinates_input.c
index e41a525..80020db 100644
--- a/src/common/src/coordinates_input.c
+++ b/src/common/src/coordinates_input.c
@@ -22,13 +22,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./postgres_connection.h"
+#include "c_common/coordinates_input.h"
-#include "./coordinates_input.h"
-#include "./debug_macro.h"
-#include "./pgr_types.h"
-#include "./get_check_data.h"
-#include "./time_msg.h"
+#include "c_types/column_info_t.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/get_check_data.h"
+#include "c_common/time_msg.h"
diff --git a/src/common/src/coordinates_input.h b/src/common/src/coordinates_input.h
deleted file mode 100644
index f9a8cfe..0000000
--- a/src/common/src/coordinates_input.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: distances_input.h
-#include "./pgr_types.h"
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-#ifndef SRC_COMMON_SRC_COORDINATES_INPUT_H_
-#define SRC_COMMON_SRC_COORDINATES_INPUT_H_
-#pragma once
-
-#include "./pgr_types.h"
-
-/*!
- bigint id,
- float x,
- float y,
- */
-void pgr_get_coordinates(
- char *sql,
- Coordinate_t **coordinates,
- size_t *total_coordinates);
-
-#endif // SRC_COMMON_SRC_COORDINATES_INPUT_H_
diff --git a/src/common/src/debug_macro.h b/src/common/src/debug_macro.h
deleted file mode 100644
index 952fde1..0000000
--- a/src/common/src/debug_macro.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: debug_macro.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_DEBUG_MACRO_H_
-#define SRC_COMMON_SRC_DEBUG_MACRO_H_
-#pragma once
-
-#ifndef NDEBUG
-
-#include "./postgres_connection.h"
-
-#define PGR_DBG(...) \
- elog(DEBUG3, __VA_ARGS__)
-#else
-#define PGR_DBG(...) do { ; } while (0)
-#endif
-
-#endif // SRC_COMMON_SRC_DEBUG_MACRO_H_
diff --git a/src/common/src/e_report.c b/src/common/src/e_report.c
index 9e95a32..c88831b 100644
--- a/src/common/src/e_report.c
+++ b/src/common/src/e_report.c
@@ -23,9 +23,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./postgres_connection.h"
-#include "./debug_macro.h"
-#include "./e_report.h"
+#include "c_common/postgres_connection.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
void
pgr_notice(
diff --git a/src/common/src/e_report.h b/src/common/src/e_report.h
deleted file mode 100644
index aa8d7a7..0000000
--- a/src/common/src/e_report.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: e_report.h
-
-Function's developer:
-Copyright (c) 2016 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#pragma once
-
-/*! @name Postgres ereport
- * Send notice or error to postgreSQL (cleans the char *)
- *
- * From the C++ err_msg, log_msg, notice_msg are returned as a (char *),
- *
- * Before exiting the C code the pointers need to be freed:
- * - This task can be done when there is no error,
- * - Call to ERROR, gives the control back to postgreSQL
- * - leaves a leak
- *
- * on C++ side, the message to be returned;
- * ~~~~{.c}
- * std::ostringstream log;
- * log << "the messaage";
- * log_msg = strdup(log.str().c_str());
- * ~~~~
- *
- *
- * The char* messages are cleared.
- * New messages are made with palloc
- *
- * when there is ERROR then postgreSQL takes over control
- *
- * @warning When error: Free all data not created with palloc before calling
- *
- */
-///@{
-/*! @brief notice & error
- *
- * ~~~~{.c}
- * pgr_notice(&log_msg, ¬ice_msg, &error_msg);
- *
- * precondition: before calling ereport
- * assert(!*log_msg);
- * assert(!*notice_msg);
- * assert(!*error_msg);
- * ~~~~
- */
-void
-pgr_global_report(
- char* log_msg,
- char* notice_msg,
- char* error_msg);
-
-/*! @brief notice with no hint
- *
- * ~~~~{.c}
- * pgr_notice(&log_msg, ¬ice_msg);
- *
- * precondition: before calling ereport
- * assert(!log_msg);
- * assert(!notice_msg);
- * ~~~~
- */
-void
-pgr_notice(
- char* notice_msg
- );
-
-/*! @brief notice with hint
- *
- * ~~~~{.c}
- * pgr_notice(&log_msg, ¬ice_msg);
- *
- * precondition: before calling ereport
- * assert(!log_msg);
- * assert(!notice_msg);
- * ~~~~
- */
-void
-pgr_notice2(
- char* log_msg,
- char* notice_msg
- );
-
-/*! @brief error with no hint
- *
- *
- * ~~~~{.c}
- * if (err_msg) {
- * pfree(<data>);
- * }
- * pgr_error(&error_msg);
- *
- * precondition: before calling ereport
- * assert(!*error_msg);
- * ~~~~
- */
-void
-pgr_error(char* error_msg);
-
-/*! @brief error with hint
- *
- * ~~~~{.c}
- * if (err_msg) {
- * pfree(<data>);
- * }
- * pgr_error(&log_msg, &error_msg);
- *
- * precondition: before calling ereport
- * assert(!*log_msg);
- * assert(!*error_msg);
- * ~~~~
- */
-void
-pgr_error2(
- char* log_msg,
- char* error_msg);
-///@}
diff --git a/src/common/src/edges_input.c b/src/common/src/edges_input.c
index d2028db..2d816a2 100644
--- a/src/common/src/edges_input.c
+++ b/src/common/src/edges_input.c
@@ -22,12 +22,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./postgres_connection.h"
-#include "./debug_macro.h"
-#include "./pgr_types.h"
-#include "./get_check_data.h"
-#include "./edges_input.h"
-#include "./time_msg.h"
+#include "c_common/edges_input.h"
+
+#include "c_types/column_info_t.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/get_check_data.h"
+#include "c_common/time_msg.h"
static
void fetch_basic_edge(
diff --git a/src/common/src/edges_input.h b/src/common/src/edges_input.h
deleted file mode 100644
index 20130d0..0000000
--- a/src/common/src/edges_input.h
+++ /dev/null
@@ -1,241 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: edges_input.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_EDGES_INPUT_H_
-#define SRC_COMMON_SRC_EDGES_INPUT_H_
-#pragma once
-
-#include "./pgr_types.h"
-
-
-/*! @brief edges_sql without id parameter
-
-~~~~{.c}
-SELECT source, target, cost, [reverse_cost]
-FROM edge_table;
-~~~~
-
-Currently used in: allpairs
-
- at param[in] edges_sql
- at param[out] edges
- at param[out] total_edges
-*/
-void pgr_get_edges_no_id(
- char *edges_sql,
- pgr_edge_t **edges,
- size_t *total_edges);
-
-
-
-/*! @brief basic edge_sql
-
-For queries of the type:
-~~~~{.c}
-SELECT id, source, target, cost, [reverse_cost]
-FROM edge_table;
-~~~~
-
- at param[in] edges_sql
- at param[out] edges
- at param[out] total_edges
-*/
-void pgr_get_edges(
- char *edges_sql,
- pgr_edge_t **edges,
- size_t *total_edges);
-void pgr_get_edges_reversed(
- char *edges_sql,
- pgr_edge_t **edges,
- size_t *total_edges);
-
-
-
-/*! @brief Edges with x, y vertices values
-
-For queries of the type:
-~~~~{.c}
-SELECT id, source, target, cost, [reverse_cost], x1, y1, x2, y2
-FROM edge_table;
-~~~~
-
- at param[in] edges_sql
- at param[out] edges
- at param[out] total_edges
-*/
-void pgr_get_edges_xy(
- char *edges_sql,
- Pgr_edge_xy_t **edges,
- size_t *total_edges);
-
-/*! @brief for many to 1 on aStar
-
-Used internally
-
-Transforms queries of the type:
-~~~~{.c}
-SELECT id, source, target, cost, [reverse_cost], x1, y1, x2, y2
-FROM edge_table;
-~~~~
-
-to
-~~~~{.c}
-SELECT id, target, source, cost, [reverse_cost], x1, y1, x2, y2
-FROM edge_table;
-~~~~
-
- at param[in] edges_sql
- at param[out] edges
- at param[out] total_edges
-*/
-void pgr_get_edges_xy_reversed(
- char *edges_sql,
- Pgr_edge_xy_t **edges,
- size_t *total_edges);
-
-
-/*! @brief read edges for flow
-
-Edges:
-
-bigint id,
-bigint source,
-bigint target,
-bigint capacity,
-bigint reverse_capacity
-
- at param[in] sql
- at param[out] edges
- at param[out] total_edges
-*/
-void pgr_get_flow_edges(
- char *sql,
- pgr_edge_t **edges,
- size_t *total_edges);
-
-/*! @brief read basic edges
-
-Edges:
-
-bigint id,
-bigint source,
-bigint target
-
- at param[in] sql
- at param[out] edges
- at param[out] total_edges
-*/
-void pgr_get_basic_edges(
- char *sql,
- pgr_basic_edge_t **edges,
- size_t *total_edges);
-
-
-
-/* **************** FOR USERS DOCUMENTATION
-basic_edges_sql_start
-
-Description of the edges_sql query
-...............................................................................
-
-:edges_sql: an SQL query, which should return a set of rows with the following columns:
-
-================ =================== ======== =================================================
-Column Type Default Description
-================ =================== ======== =================================================
-**id** ``ANY-INTEGER`` Identifier of the edge.
-**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
-**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
-**cost** ``ANY-NUMERICAL`` Weight of the edge `(source, target)`
- - When negative: edge `(source, target)` does not exist, therefore it's not part of the graph.
-**reverse_cost** ``ANY-NUMERICAL`` -1 Weight of the edge `(target, source)`,
- - When negative: edge `(target, source)` does not exist, therefore it's not part of the graph.
-================ =================== ======== =================================================
-
-Where:
-
-:ANY-INTEGER: SMALLINT, INTEGER, BIGINT
-:ANY-NUMERICAL: SMALLINT, INTEGER, BIGINT, REAL, FLOAT
-
-basic_edges_sql_end
-
-no_id_edges_sql_start
-
-Description of the edges_sql query
-...............................................................................
-
-:edges_sql: an SQL query, which should return a set of rows with the following columns:
-
-================ =================== ======== =================================================
-Column Type Default Description
-================ =================== ======== =================================================
-**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
-**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
-**cost** ``ANY-NUMERICAL`` Weight of the edge `(source, target)`
- * When negative: edge `(source, target)` does not exist, therefore it's not part of the graph.
-**reverse_cost** ``ANY-NUMERICAL`` -1 Weight of the edge `(target, source)`,
- - When negative: edge `(target, source)` does not exist, therefore it's not part of the graph.
-================ =================== ======== =================================================
-
-Where:
-
-:ANY-INTEGER: SMALLINT, INTEGER, BIGINT
-:ANY-NUMERICAL: SMALLINT, INTEGER, BIGINT, REAL, FLOAT
-
-no_id_edges_sql_end
-
-
-xy_edges_sql_start
-
-Description of the edges_sql query
-...............................................................................
-
-:edges_sql: an SQL query, which should return a set of rows with the following columns:
-
-================ =================== ======== =================================================
-Column Type Default Description
-================ =================== ======== =================================================
-**id** ``ANY-INTEGER`` Identifier of the edge.
-**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
-**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
-**cost** ``ANY-NUMERICAL`` Weight of the edge `(source, target)`
- - When negative: edge `(source, target)` does not exist, therefore it's not part of the graph.
-**reverse_cost** ``ANY-NUMERICAL`` -1 Weight of the edge `(target, source)`,
- - When negative: edge `(target, source)` does not exist, therefore it's not part of the graph.
-
-**x1** ``ANY-NUMERICAL`` X coordinate of `source` vertex.
-**y1** ``ANY-NUMERICAL`` Y coordinate of `source` vertex.
-**x2** ``ANY-NUMERICAL`` X coordinate of `target` vertex.
-**y2** ``ANY-NUMERICAL`` Y coordinate of `target` vertex.
-================ =================== ======== =================================================
-
-Where:
-
-:ANY-INTEGER: SMALLINT, INTEGER, BIGINT
-:ANY-NUMERICAL: SMALLINT, INTEGER, BIGINT, REAL, FLOAT
-
-xy_edges_sql_end
-*/
-
-#endif // SRC_COMMON_SRC_EDGES_INPUT_H_
diff --git a/src/common/src/get_check_data.c b/src/common/src/get_check_data.c
index 6e4528f..d49d6a0 100644
--- a/src/common/src/get_check_data.c
+++ b/src/common/src/get_check_data.c
@@ -22,14 +22,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/get_check_data.h"
#include "catalog/pg_type.h"
-
-#include "./pgr_types.h"
-#include "./debug_macro.h"
-#include "./get_check_data.h"
+#include "c_common/debug_macro.h"
char*
pgr_stradd(const char* a, const char* b) {
@@ -89,6 +86,9 @@ void pgr_fetch_column_info(
case CHAR1:
pgr_check_char_type(info[i]);
break;
+ case ANY_INTEGER_ARRAY:
+ pgr_check_any_integerarray_type(info[i]);
+ break;
default:
elog(ERROR, "Unknown type of column %s", info[i].name);
}
@@ -122,6 +122,17 @@ pgr_check_any_integer_type(Column_info_t info) {
}
}
+void
+pgr_check_any_integerarray_type(Column_info_t info) {
+ if (!(info.type == INT2ARRAYOID
+ || info.type == INT4ARRAYOID
+ || info.type == 1016)) {
+ elog(ERROR,
+ "Unexpected Column '%s' type. Expected ANY-INTEGER-ARRAY",
+ info.name);
+ }
+}
+
void pgr_check_any_numerical_type(Column_info_t info) {
if (!(info.type == INT2OID
|| info.type == INT4OID
@@ -193,7 +204,7 @@ pgr_SPI_getBigInt(HeapTuple *tuple, TupleDesc *tupdesc, Column_info_t info) {
double
pgr_SPI_getFloat8(HeapTuple *tuple, TupleDesc *tupdesc, Column_info_t info) {
Datum binval;
- bool isnull;
+ bool isnull = false;
double value = 0.0;
binval = SPI_getbinval(*tuple, *tupdesc, info.colNumber, &isnull);
if (isnull)
diff --git a/src/common/src/get_check_data.h b/src/common/src/get_check_data.h
deleted file mode 100644
index 5140119..0000000
--- a/src/common/src/get_check_data.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: get_check_data.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_GET_CHECK_DATA_H_
-#define SRC_COMMON_SRC_GET_CHECK_DATA_H_
-#pragma once
-
-bool column_found(int colNumber);
-
-void pgr_fetch_column_info(
- Column_info_t info[],
- int info_size);
-
-void pgr_check_any_integer_type(Column_info_t info);
-void pgr_check_any_numerical_type(Column_info_t info);
-void pgr_check_char_type(Column_info_t info);
-void pgr_check_text_type(Column_info_t info);
-void pgr_check_boolean_type(Column_info_t info);
-
-
-char pgr_SPI_getChar(
- HeapTuple *tuple,
- TupleDesc *tupdesc,
- Column_info_t info,
- bool strict,
- char default_value);
-
-int64_t pgr_SPI_getBigInt(
- HeapTuple *tuple,
- TupleDesc *tupdesc,
- Column_info_t info);
-
-double pgr_SPI_getFloat8(
- HeapTuple *tuple,
- TupleDesc *tupdesc,
- Column_info_t info);
-
-char* pgr_SPI_getText(
- HeapTuple *tuple,
- TupleDesc *tupdesc,
- Column_info_t info);
-
-char* pgr_stradd(const char *a, const char *b);
-
-#endif // SRC_COMMON_SRC_GET_CHECK_DATA_H_
diff --git a/src/common/src/identifier.cpp b/src/common/src/identifier.cpp
new file mode 100644
index 0000000..3975860
--- /dev/null
+++ b/src/common/src/identifier.cpp
@@ -0,0 +1,56 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "cpp_common/identifier.h"
+
+
+namespace pgrouting {
+
+
+Identifier::Identifier(
+ const size_t _idx,
+ const int64_t _id) :
+ m_idx(_idx),
+ m_id(_id) {}
+
+size_t
+Identifier::idx() const {
+ return m_idx;
+}
+
+int64_t
+Identifier::id() const {
+ return m_id;
+}
+
+void
+Identifier::reset_id(int64_t _id) {
+ m_id = _id;
+}
+
+std::ostream& operator<<(std::ostream& log, const Identifier &ident) {
+ log << "id(idx) = " << ident.id() << "(" << ident.idx() << ")";
+ return log;
+}
+
+} // namespace pgrouting
diff --git a/src/common/src/identifiers.hpp b/src/common/src/identifiers.hpp
deleted file mode 100644
index 6860c3d..0000000
--- a/src/common/src/identifiers.hpp
+++ /dev/null
@@ -1,364 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: identifiers.hpp
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Rohith Reddy
-Mail:
-
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_IDENTIFIERS_HPP_
-#define SRC_COMMON_SRC_IDENTIFIERS_HPP_
-#pragma once
-
-#include <set>
-#include <algorithm>
-#include <sstream>
-#include <iterator>
-#include <iostream>
-#include <stdexcept>
-
-template <typename T>
-class Identifiers {
- public:
- typedef typename std::set<T>::iterator iterator;
- typedef typename std::set<T>::const_iterator const_iterator;
-
- Identifiers<T>() = default;
- /* TODO avoid pointers */
- Identifiers<T>(T* container, size_t size) {
- for (size_t i = 0; i < size; ++i) {
- m_ids.insert(container[i]);
- }
- }
-
- const std::set<T>& ids() const;
- size_t size() const { return m_ids.size(); }
- //! \brief Returns true when the set is empty
- inline bool empty() const { return m_ids.empty(); }
- inline void clear() { m_ids.clear(); }
- bool has(const T element) const;
- bool isDisjoint(const T other) const;
- bool isDisjoint(const Identifiers<T> &other) const;
- void insert(const Identifiers<T> &other);
- void insert(const T &other);
- iterator begin() { return m_ids.begin(); }
- const_iterator begin() const { return m_ids.begin(); }
- iterator end() { return m_ids.end(); }
- const_iterator end() const { return m_ids.end(); }
- bool operator ==(const Identifiers<T> &other) const;
- const T& operator[](size_t index) const;
-
- //! @name mathematical set operations
- /// @{
-
- Identifiers<T> operator +(const T &other) const;
- Identifiers<T> operator *(const T &other) const;
- Identifiers<T> operator -(const T &other) const;
- Identifiers<T> operator +(const Identifiers<T> &other) const;
- Identifiers<T> operator *(const Identifiers<T> &other) const;
- Identifiers<T> operator -(const Identifiers<T> &other) const;
- Identifiers<T>& operator +=(const T &other);
- Identifiers<T>& operator *=(const T &other);
- Identifiers<T>& operator -=(const T &other);
- Identifiers<T>& operator +=(const Identifiers<T> &other);
- Identifiers<T>& operator *=(const Identifiers<T> &other);
- Identifiers<T>& operator -=(const Identifiers<T> &other);
- /// @}
-
- template<T>
- friend std::ostream& operator<<(
- std::ostream& os,
- const Identifiers<T>& identifiers);
-
- private:
- std::set<T> m_ids;
-};
-
-
-
-
-//! \brief Returns a set of identifiers of type *set<T>*
-template <typename T>
-const std::set<T>& Identifiers<T>::ids() const {
- return m_ids;
-}
-
-//! \brief Returns a boolean value true or false
-/*!
- @param [in] other Identifier of type *T*
- Returns:
- true: If other is in this set
- false: Otherwise
- */
-template <typename T>
-bool Identifiers<T>::has(const T other) const {
- return (m_ids.find(other) != m_ids.end());
-}
-
-//! \brief Returns a boolean value true or false
-/*!
- @param [in] other is an identifier of type *T*
- Returns:
- true: If other is not in this set
- false: Otherwise
- */
-template <typename T>
-bool Identifiers<T>::isDisjoint(const T other) const {
- return (m_ids.find(other) == m_ids.end());
-}
-
-//! \brief Returns a boolean value true or false
-/*!
- @param [in] other is set of identifiers of type *Identifiers<T>*
- Returns:
- true: If other and this set are disjoint
- false: otherwise
- */
-template <typename T>
-bool Identifiers<T>::isDisjoint(const Identifiers<T> &other) const {
- for (auto identifier : other.ids()) {
- if (!(m_ids.find(identifier) == m_ids.end())) {
- return false;
- }
- }
- return true;
-}
-
-//! \brief Inserts a set of identifiers of type *Identifiers<T>* to this set
-/*!
- @param [in] other is a set of identifiers
- */
-template <typename T>
-void Identifiers<T>::insert(const Identifiers<T> &other) {
- m_ids.insert(other.ids().begin(), other.ids().end());
-}
-
-//! \brief Inserts an identifier of type *T* to this set
-/*!
- @param [in] other is an identifier of type *T*
- */
-template <typename T>
-void Identifiers<T>::insert(const T &other) {
- m_ids.insert(other);
-}
-
-//! \brief Returns a boolean value
-/*!
- @param [in] other is a set of identifiers of type *Identifiers<T>*
- Returns:
- true: If other and this set are equivalent
- false: Otherwise
- */
-template <typename T>
-bool Identifiers<T>::operator ==(const Identifiers<T> &other) const {
- return std::equal(m_ids.begin(), m_ids.end(), other.ids().begin());
-}
-
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>*
-/*!
- @param [in] other is an identifier of type *T*
- Returns the set union of other with this set
- */
-template <typename T>
-Identifiers<T> Identifiers<T>::operator +(const T &other) const {
- Identifiers<T> union_ids;
- union_ids.insert(*this);
- union_ids.insert(other);
- return union_ids;
-}
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>*
-/*!
- @param [in] other is an identifier of type *T*
- Returns the set intersection of other with this set
- */
-template <typename T>
-Identifiers<T> Identifiers<T>::operator *(const T &other) const {
- Identifiers<T> intersect_ids;
- intersect_ids.insert(*this);
- intersect_ids *= other;
- return intersect_ids;
-}
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>*
-/*!
- @param [in] other is an identifier of type *T*
- Returns the set difference between this set and other
- */
-template <typename T>
-Identifiers<T> Identifiers<T>::operator -(const T &other) const {
- Identifiers<T> diff_ids;
- diff_ids.insert(*this);
- diff_ids -= other;
- return diff_ids;
-}
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>*
-/*!
- @param [in] other is a set of identifiers of type *Identifiers<T>*
- Returns the set union of other with this set
- */
-template <typename T>
-Identifiers<T> Identifiers<T>::operator +(const Identifiers<T> &other) const {
- Identifiers<T> union_ids;
- union_ids.insert(*this);
- union_ids.insert(other);
- return union_ids;
-}
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>*
-/*!
- @param [in] other is a set of identifiers of type *Identifiers<T>*
- Returns the set intersection of other with this set
- */
-template <typename T>
-Identifiers<T> Identifiers<T>::operator *(const Identifiers<T> &other) const {
- Identifiers<T> intersect_ids;
- intersect_ids.insert(*this);
- intersect_ids *= other;
- return intersect_ids;
-}
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>*
-/*!
- @param [in] other is a set of identifiers of type *Identifiers<T>*
- Returns the set difference between this set and other
- */
-template <typename T>
-Identifiers<T> Identifiers<T>::operator -(const Identifiers<T> &other) const {
- Identifiers<T> diff_ids;
- diff_ids.insert(*this);
- diff_ids -= other;
- return diff_ids;
-}
-
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>&*
-/*!
- @param [in] other is an identifiers of type *T*
- Replaces this set with the set union of other with this set
- */
-template <typename T>
-Identifiers<T>& Identifiers<T>::operator +=(const T &other) {
- this->insert(other);
- return *this;
-}
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>&*
-/*!
- @param [in] other is an identifiers of type *T*
- Replaces this set with the set intersection of other with this set
- */
-template <typename T>
-Identifiers<T>& Identifiers<T>::operator *=(const T &other) {
- if (m_ids.find(other) != m_ids.end()) {
- m_ids.clear();
- m_ids.insert(other);
- } else {
- m_ids.clear();
- }
- return *this;
-}
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>&*
-/*!
- @param [in] other is a set of identifiers of type *T*
- Replaces this set with the set difference between this set and other
- */
-template <typename T>
-Identifiers<T>& Identifiers<T>::operator -=(const T &other) {
- if (m_ids.find(other) != m_ids.end()) {
- m_ids.erase(m_ids.find(other));
- }
- return *this;
-}
-
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>&*
-/*!
- @param [in] other is a set of identifiers of type *Identifiers<T>*
- Replaces this set with the set union of other with this set
- */
-template <typename T>
-Identifiers<T>& Identifiers<T>::operator +=(const Identifiers<T> &other) {
- this->insert(other);
- return *this;
-}
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>&*
-/*!
- @param [in] other is a set of identifiers of type *Identifiers<T>*
- Replaces this set with the set intersection of other with this set
- */
-template <typename T>
-Identifiers<T>& Identifiers<T>::operator *=(const Identifiers<T> &other) {
- for (auto identifier : m_ids) {
- if (other.ids().find(identifier) == other.ids().end()) {
- m_ids.erase(m_ids.find(identifier));
- }
- }
- return *this;
-}
-
-//! \brief Returns a set of identifiers of type *Identifiers<T>&*
-/*!
- @param [in] other is a set of identifiers of type *Identifiers<T>*
- Replaces this set with the set difference between this set and other
- */
-template <typename T>
-Identifiers<T>& Identifiers<T>::operator -=(const Identifiers<T> &other) {
- for (auto identifier : m_ids) {
- if (other.ids().find(identifier) != other.ids().end()) {
- m_ids.erase(m_ids.find(identifier));
- }
- }
- return *this;
-}
-
-//! \brief Prints the set of identifiers
-template <typename T>
-std::ostream& operator<<(std::ostream& os, const Identifiers<T>& identifiers) {
- os << "{";
- for (auto identifier : identifiers.ids()) {
- os << identifier << ", ";
- }
- os << "}";
- return os;
-}
-
-//! \brief Returns an identifier of type *T* at position *index* in the set
-/*!
- @param [in] index is of type size_t
- */
-template <typename T>
-const T& Identifiers<T>::operator[](size_t index) const {
- if (index >= size()) {
- throw std::out_of_range("Index out of bounds");
- }
- return *std::next(m_ids.begin(), index);
-}
-
-
-#endif // SRC_COMMON_SRC_IDENTIFIERS_HPP_
diff --git a/src/common/src/matrixRows_input.c b/src/common/src/matrixRows_input.c
index 313c5c6..984a89e 100644
--- a/src/common/src/matrixRows_input.c
+++ b/src/common/src/matrixRows_input.c
@@ -22,13 +22,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./postgres_connection.h"
+#include "c_common/matrixRows_input.h"
-#include "./debug_macro.h"
-#include "./pgr_types.h"
-#include "./get_check_data.h"
-#include "./time_msg.h"
-#include "./matrixRows_input.h"
+#include "c_types/column_info_t.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/get_check_data.h"
+#include "c_common/time_msg.h"
@@ -107,7 +107,7 @@ void pgr_get_matrixRows(
SPITupleTable *tuptable = SPI_tuptable;
TupleDesc tupdesc = SPI_tuptable->tupdesc;
- PGR_DBG("processing %ld edge tupĺes", ntuples);
+ PGR_DBG("processing %ld matrix cell tupĺes", ntuples);
size_t t;
for (t = 0; t < ntuples; t++) {
@@ -131,5 +131,5 @@ void pgr_get_matrixRows(
}
(*total_rows) = total_tuples;
- time_msg(" reading Edges", start_t, clock());
+ time_msg(" reading matrix cells", start_t, clock());
}
diff --git a/src/common/src/matrixRows_input.h b/src/common/src/matrixRows_input.h
deleted file mode 100644
index 8ce6675..0000000
--- a/src/common/src/matrixRows_input.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: distances_input.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_MATRIXROWS_INPUT_H_
-#define SRC_COMMON_SRC_MATRIXROWS_INPUT_H_
-#pragma once
-
-#include "./pgr_types.h"
-
-/*!
- bigint start_vid,
- bigint end_vid,
- float agg_cost,
- */
-void pgr_get_matrixRows(
- char *sql,
- Matrix_cell_t **distaces,
- size_t *total_distances);
-
-#endif // SRC_COMMON_SRC_MATRIXROWS_INPUT_H_
diff --git a/src/common/src/orders_input.c b/src/common/src/orders_input.c
new file mode 100644
index 0000000..3c4549d
--- /dev/null
+++ b/src/common/src/orders_input.c
@@ -0,0 +1,219 @@
+/*PGR-GNU*****************************************************************
+File: pd_orders_input.c
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#include "c_common/orders_input.h"
+
+#include "c_types/column_info_t.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/get_check_data.h"
+#include "c_common/time_msg.h"
+
+
+static
+void fetch_pd_orders(
+ HeapTuple *tuple,
+ TupleDesc *tupdesc,
+ Column_info_t info[14],
+ bool matrix_version,
+ PickDeliveryOrders_t *pd_order) {
+ pd_order->id = pgr_SPI_getBigInt(tuple, tupdesc, info[0]);
+ pd_order->demand = pgr_SPI_getFloat8(tuple, tupdesc, info[1]);
+
+ /*
+ * the pickups
+ */
+ pd_order->pick_x = matrix_version ?
+ 0 : pgr_SPI_getFloat8(tuple, tupdesc, info[2]);
+ pd_order->pick_y = matrix_version ?
+ 0 : pgr_SPI_getFloat8(tuple, tupdesc, info[3]);
+ pd_order->pick_open_t = pgr_SPI_getFloat8(tuple, tupdesc, info[4]);
+ pd_order->pick_close_t = pgr_SPI_getFloat8(tuple, tupdesc, info[5]);
+ pd_order->pick_service_t = column_found(info[6].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[6]) : 0;
+
+ /*
+ * the deliveries
+ */
+ pd_order->deliver_x = matrix_version ?
+ 0 : pgr_SPI_getFloat8(tuple, tupdesc, info[7]);
+ pd_order->deliver_y = matrix_version ?
+ 0 : pgr_SPI_getFloat8(tuple, tupdesc, info[8]);
+ pd_order->deliver_open_t = pgr_SPI_getFloat8(tuple, tupdesc, info[9]);
+ pd_order->deliver_close_t = pgr_SPI_getFloat8(tuple, tupdesc, info[10]);
+ pd_order->deliver_service_t = column_found(info[11].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[11]) : 0;
+
+ pd_order->pick_node_id = matrix_version ?
+ pgr_SPI_getBigInt(tuple, tupdesc, info[12]) : 0;
+ pd_order->deliver_node_id = matrix_version ?
+ pgr_SPI_getBigInt(tuple, tupdesc, info[13]) : 0;
+}
+
+
+
+static
+void
+pgr_get_pd_orders_general(
+ char *pd_orders_sql,
+ PickDeliveryOrders_t **pd_orders,
+ size_t *total_pd_orders,
+ bool with_id) {
+ clock_t start_t = clock();
+
+ const int tuple_limit = 1000000;
+
+ PGR_DBG("pgr_get_pd_orders_data");
+ PGR_DBG("%s", pd_orders_sql);
+
+ Column_info_t info[14];
+
+ int i;
+ for (i = 0; i < 14; ++i) {
+ info[i].colNumber = -1;
+ info[i].type = 0;
+ info[i].strict = true;
+ info[i].eType = ANY_NUMERICAL;
+ }
+
+ info[0].name = strdup("id");
+ info[1].name = strdup("demand");
+ info[2].name = strdup("p_x");
+ info[3].name = strdup("p_y");
+ info[4].name = strdup("p_open");
+ info[5].name = strdup("p_close");
+ info[6].name = strdup("p_service");
+ info[7].name = strdup("d_x");
+ info[8].name = strdup("d_y");
+ info[9].name = strdup("d_open");
+ info[10].name = strdup("d_close");
+ info[11].name = strdup("d_service");
+ info[12].name = strdup("p_node_id");
+ info[13].name = strdup("d_node_id");
+
+ info[0].eType = ANY_INTEGER;
+ info[12].eType = ANY_INTEGER;
+ info[13].eType = ANY_INTEGER;
+
+ /* service is optional*/
+ info[6].strict = false;
+ info[11].strict = false;
+ /* nodes are going to be ignored*/
+ info[12].strict = false;
+ info[13].strict = false;
+
+ if (with_id) {
+ /* (x,y) values are ignored*/
+ info[2].strict = false;
+ info[3].strict = false;
+ info[7].strict = false;
+ info[8].strict = false;
+ /* nodes are compulsory*/
+ info[12].strict = true;
+ info[13].strict = true;
+ }
+
+
+
+ size_t ntuples;
+ size_t total_tuples;
+
+ void *SPIplan;
+ SPIplan = pgr_SPI_prepare(pd_orders_sql);
+ Portal SPIportal;
+ SPIportal = pgr_SPI_cursor_open(SPIplan);
+
+ bool moredata = TRUE;
+ (*total_pd_orders) = total_tuples = 0;
+
+ /* on the first tuple get the column numbers */
+
+ while (moredata == TRUE) {
+ SPI_cursor_fetch(SPIportal, TRUE, tuple_limit);
+ if (total_tuples == 0) {
+ pgr_fetch_column_info(info, 14);
+ }
+ ntuples = SPI_processed;
+ total_tuples += ntuples;
+ PGR_DBG("SPI_processed %ld", ntuples);
+ if (ntuples > 0) {
+ if ((*pd_orders) == NULL)
+ (*pd_orders) = (PickDeliveryOrders_t *)palloc0(
+ total_tuples * sizeof(PickDeliveryOrders_t));
+ else
+ (*pd_orders) = (PickDeliveryOrders_t *)repalloc(
+ (*pd_orders),
+ total_tuples * sizeof(PickDeliveryOrders_t));
+
+ if ((*pd_orders) == NULL) {
+ elog(ERROR, "Out of memory");
+ }
+
+ size_t t;
+ SPITupleTable *tuptable = SPI_tuptable;
+ TupleDesc tupdesc = SPI_tuptable->tupdesc;
+ PGR_DBG("processing %ld", ntuples);
+ for (t = 0; t < ntuples; t++) {
+ HeapTuple tuple = tuptable->vals[t];
+ fetch_pd_orders(&tuple, &tupdesc, info, with_id,
+ &(*pd_orders)[total_tuples - ntuples + t]);
+ }
+ SPI_freetuptable(tuptable);
+ } else {
+ moredata = FALSE;
+ }
+ }
+
+ SPI_cursor_close(SPIportal);
+
+ if (total_tuples == 0) {
+ (*total_pd_orders) = 0;
+ PGR_DBG("NO orders");
+ return;
+ }
+
+ (*total_pd_orders) = total_tuples;
+ if (with_id) {
+ PGR_DBG("Finish reading %ld orders for matrix", (*total_pd_orders));
+ } else {
+ PGR_DBG("Finish reading %ld orders for eucledian", (*total_pd_orders));
+ }
+ time_msg("reading edges", start_t, clock());
+}
+
+void
+pgr_get_pd_orders(
+ char *pd_orders_sql,
+ PickDeliveryOrders_t **pd_orders,
+ size_t *total_pd_orders) {
+ pgr_get_pd_orders_general(pd_orders_sql, pd_orders, total_pd_orders, false);
+}
+
+void
+pgr_get_pd_orders_with_id(
+ char *pd_orders_sql,
+ PickDeliveryOrders_t **pd_orders,
+ size_t *total_pd_orders) {
+ pgr_get_pd_orders_general(pd_orders_sql, pd_orders, total_pd_orders, true);
+}
diff --git a/src/common/src/pgr_alloc.cpp b/src/common/src/pgr_alloc.cpp
index 3ba4c28..85d2353 100644
--- a/src/common/src/pgr_alloc.cpp
+++ b/src/common/src/pgr_alloc.cpp
@@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./pgr_alloc.hpp"
+#include "cpp_common/pgr_alloc.hpp"
#include <string>
char *
diff --git a/src/common/src/pgr_alloc.hpp b/src/common/src/pgr_alloc.hpp
deleted file mode 100644
index 67d6c9a..0000000
--- a/src/common/src/pgr_alloc.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pgr_palloc.hpp
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_PGR_ALLOC_HPP_
-#define SRC_COMMON_SRC_PGR_ALLOC_HPP_
-#pragma once
-
-
-extern "C" {
-#if PGSQL_VERSION < 94
-#ifdef __MINGW32__
-#include <winsock2.h>
-#include <windows.h>
-#endif
-#endif
-
-#include "./postgres_connection.h"
-#include <utils/palloc.h>
-}
-
-#include <string>
-
-/*! \fn pgr_alloc(std::size_t size, T *ptr)
-
-\brief allocates memory
-
-- Does a malloc or realloc depending on the ptr value
-- To be used only on C++ code
-- To be used when returning results to postgres
-- free must occur in the C code
-
-\param[in] size
-\param[in] ptr
-\returns pointer to the first byte of allocated space
-
- */
-
-
-template <typename T>
-T*
-pgr_alloc(std::size_t size, T* ptr) {
- if (!ptr) {
- ptr = static_cast<T*>(SPI_palloc(size * sizeof(T)));
- } else {
- ptr = static_cast<T*>(SPI_repalloc(ptr, size * sizeof(T)));
- }
- return ptr;
-}
-
-template <typename T>
-T*
-pgr_free(T* ptr) {
- if (ptr) {
- pfree(ptr);
- }
- return nullptr;
-}
-
-char *
-pgr_msg(const std::string &msg);
-
-#endif // SRC_COMMON_SRC_PGR_ALLOC_HPP_
diff --git a/src/common/src/pgr_assert.cpp b/src/common/src/pgr_assert.cpp
index 2249a79..80a8602 100644
--- a/src/common/src/pgr_assert.cpp
+++ b/src/common/src/pgr_assert.cpp
@@ -9,7 +9,7 @@
* the terms of the MIT License. Please file MIT-LICENSE for details.
*
*****************************************************************PGR-MIT*/
-#include "./pgr_assert.h"
+#include "cpp_common/pgr_assert.h"
#include <stdio.h>
#include <stdlib.h>
diff --git a/src/common/src/pgr_assert.h b/src/common/src/pgr_assert.h
deleted file mode 100644
index 129f0e1..0000000
--- a/src/common/src/pgr_assert.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*PGR-MIT******************************************************************
- *
- * file pgr_assert.h
- *
- * Copyright 2014 Stephen Woodbridge <woodbri at imaptools.com>
- * Copyright 2014 Vicky Vergara <vicky_vergara at hotmail.com>
- *
- * This is free software; you can redistribute and/or modify it under
- * the terms of the MIT License. Please file MIT-LICENSE for details.
- *
- *****************************************************************PGR-MIT*/
-
-#ifndef SRC_COMMON_SRC_PGR_ASSERT_H_
-#define SRC_COMMON_SRC_PGR_ASSERT_H_
-#pragma once
-
-#include <string>
-#include <exception>
-
-#ifdef assert
-#undef assert
-#endif
-
-
-/*! @file
- *
- * Assertions Handling
- *
- * @brief An assert functionality that uses C++ throw().
- *
- * This file provides an alternative to assert functionality that will
- * convert all pgassert() into C++ throw using an AssertFailedException class.
- *
- * This allows catching errors and do appropriate clean up
- * re-throw if needed to catch errors in the postgresql environment
- *
- * **Do not crash the backend server.**
- */
-
-
-#ifndef __STRING
-#define __STRING(x) #x
-#endif
-
-#define __TOSTRING(x) __STRING(x)
-
-
-/*! @def pgassert(expr)
- * @brief Uses the standard assert syntax.
- *
- * When an assertion fails it will throw \ref AssertFailedException and what()
- * will return a string like "AssertFailedException(2+2 == 5) at t.cpp:11"
- *
- * Example:
- * @code
- #include <iostream>
- #include "pgr_assert.h"
-
- int main() {
-
- try {
- pgassert(2+2 == 4);
- pgassert(2+2 == 5);
- }
- catch (AssertFailedException &e) {
- std::cout << e.what() << "\n";
- }
- catch (std::exception& e) {
- std::cout << e.what() << "\n";
- }
- catch(...) {
- std::cout << "Caught unknown exception!\n";
- }
- return 0;
- }
- @endcode
- */
-#ifdef NDEBUG
-#define pgassert(expr) ((void)0)
-#else
-#define pgassert(expr) \
- ((expr) \
- ? static_cast<void>(0) \
- : throw AssertFailedException( \
- "AssertFailedException: " __STRING(expr) \
- " at " __FILE__ ":" __TOSTRING(__LINE__) + get_backtrace() ) )
-#endif
-
-/*! @def pgassertwm(expr, msg)
- @brief Adds a message to the assertion.
-
- Example:
- @code
- pgassert(2+2 == 5, "Expected a 4 as result");
- std::ostringstream log;
- log << "Expected a 4 as result"
- pgassert(2+2 == 5, log.str());
- @endcode
-*/
-
-#ifdef NDEBUG
-#define pgassertwm(expr, msg) ((void)0)
-#else
-#define pgassertwm(expr, msg) \
- ((expr) \
- ? static_cast<void>(0) \
- : throw AssertFailedException( \
- "AssertFailedException: " __STRING(expr) \
- " at " __FILE__ ":" __TOSTRING(__LINE__) + get_backtrace(msg) ) )
-#endif
-
-/*! @brief returns the execution path of the trace
-
- In case of a failed exception the backtrace can be is shown in the error message.
-
- Does not work for windows, please read:
- http://stackoverflow.com/questions/27639931/can-not-find-execinfo-h-when-setup-malpack
-
- */
-std::string get_backtrace();
-std::string get_backtrace(const std::string &);
-
-/*! @class AssertFailedException
- * @brief Extends std::exception and is the exception that we throw if an assert fails.
- */
-class AssertFailedException : public std::exception {
- private:
- const std::string str; ///< Holds what() we got as message
-
- public:
- virtual const char *what() const throw();
- explicit AssertFailedException(std::string msg);
- virtual ~AssertFailedException() throw() {}
-};
-
-#endif // SRC_COMMON_SRC_PGR_ASSERT_H_
diff --git a/src/common/src/pgr_base_graph.hpp b/src/common/src/pgr_base_graph.hpp
deleted file mode 100644
index d9517d7..0000000
--- a/src/common/src/pgr_base_graph.hpp
+++ /dev/null
@@ -1,870 +0,0 @@
-/*PGR-GNU*****************************************************************
- *
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_PGR_BASE_GRAPH_HPP_
-#define SRC_COMMON_SRC_PGR_BASE_GRAPH_HPP_
-#pragma once
-
-#include <boost/graph/iteration_macros.hpp>
-#include <boost/config.hpp>
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/graph/graph_utility.hpp>
-
-#include <deque>
-#include <vector>
-#include <set>
-#include <map>
-#include <limits>
-
-#include "./pgr_types.h" // for pgr_edge_t
-
-#include "./ch_vertex.h"
-#include "./ch_edge.h"
-#include "./basic_vertex.h"
-#include "./xy_vertex.h"
-
-#include "./basic_edge.h"
-#include "./pgr_assert.h"
-
-namespace pgrouting {
-
-/*! @brief boost::graph simplified to pgRouting needs
-
- This class gives the handling basics of a boost::graph of kind G
- where G:
- can be an undirected graph or a directed graph.
-
-Requiremets:
-============
-
-A vertex class T_V
-------------------
-
-Current Available vertex classes:
-- Basic_vertex
-- XY_vertex
-
-
-An edge class T_E
------------------
-
-Current Available edge classes:
-- Basic_edge
-
-extract_vertices function
--------------------------
-
-Data obtained from postgresql is stored in
-A C array of pgr_edge_t type.
-
-~~~~{.c}
-std::vector< T_V >
-extract_vertices(pgr_edge_t *, size_t)
-~~~~
-
-
-Data obtained from postgresql is stored in
-o a vector container.
-
-~~~~{.c}
-std::vector< T_V >
-extract_vertices(std::vector< pgr_edge_t >)
-~~~~
-
-Boost Graph
--------------
-
-The code is prepared to be used for:
-- boost::adjacency_list graph type
-- boost::undirectedS when the graph is UNDIRECTED
-- boost::bidirectionalS when the graph is DIRECTED
-
-
-~~~~{.c}
-boost::adjacency_list
-< boost::vecS, // not tested with other values
-boost::vecS, // not tested with other values
-boost::undirectedS, // USinG UNDIRECTED
-Basic_vertex, // the vertex class
-Basic_edge > // the edge class
-~~~~
-
-
-
-Example Usage:
-=============
-
-For this example we will use:
-- Basic_vertex
-- Basic_edge
-- pgr_edge_t
-
-
-Create Graph type
------------------
-
-~~~~{.c}
-typedef typename
-graph::Pgr_base_graph <
-boost::adjacency_list <
-boost::vecS,
- boost::vecS,
- boost::bidirectionalS,
- Basic_vertex,
- Basic_edge >,
- Basic_vertex,
- Basic_edge >
-
- DirectedGraph;
-~~~~
-
-
-Initializing the graph
-------------------------------
-
-Graph initialization is for seting the Vertices of the graph.
-
-//TODO discuss if also the edges
-
-Vector of unique vertices of the graph
-~~~~{.c}
-size_t total_edges;
-pgr_edge_t *my_edges = NULL;
-pgr_get_edges(edges_sql, &my_edges, &total_tuples);
-std::vector< Basic_Vertex > vertices(pgrouting::extract_vertices(my_edges));
-~~~~
-
-There are several ways to initialize the graph
-
-~~~~{.c}
-// 1. Initializes an empty graph
-pgrouting::DirectedGraph digraph(gType);
-
-// 2. Initializes a graph based on the vertices
-pgrouting::DirectedGraph digraph(
- verices,
- gType);
-vertices.clear();
-
-3. Initializes a graph based on the extracted vertices
-pgrouting::DirectedGraph digraph(
- pgrouting::extract_vertices(my_edges, total_edges);
- gType);
-
-4. Initializes a graph based on the extracted vertices
-pgrouting::DirectedGraph digraph(
- pgrouting::extract_vertices(my_edges);
- gType);
-~~~~
-
-1. Initializes an empty graph
- - vertices vector size is 0
-
-2. Initializes a graph based on the vertices:
- - vertices vector size is vertices.size()
- - the vertices are inserted
- - vertices container can be clared to free memory
-
-3. Initializes a graph based on the vertices extracted
- - from edges stored on a C array
- - the vertices are inserted
-
-4. Initializes a graph based on the vertices extracted
- - from edges stored on a vector
- - the vertices are inserted
-
-
-Fill the graph
----------------------
-
-After initializing the graph with the vertices, the edges can be added.
-
-~~~~{.c}
-// inserting edges from a C array
-digraph.insert_edges(my_edges, total_edges);
-
-// adding more edges to the graph from a vector container
-digraph.insert_edges(new_edges);
-~~~~
-
-*/
-
-namespace graph {
-template <class G, typename Vertex, typename Edge>
-class Pgr_base_graph;
-
-} // namespace graph
-
-
-/** @name Graph types
- Type | pgRouting
- :---------: | :---------------------
- UndirectedGraph | Basic undirected graph
- DirectedGraph | Basic directed graph
- xyUndirectedGraph | X & Y values stored on the vertex
- xyDirectedGraph | X & Y values stored on the vertex
- */
-//@{
-typedef graph::Pgr_base_graph <
-boost::adjacency_list < boost::vecS, boost::vecS,
- boost::undirectedS,
- Basic_vertex, Basic_edge >,
- Basic_vertex, Basic_edge > UndirectedGraph;
-
-typedef graph::Pgr_base_graph <
-boost::adjacency_list < boost::vecS, boost::vecS,
- boost::bidirectionalS,
- Basic_vertex, Basic_edge >,
- Basic_vertex, Basic_edge > DirectedGraph;
-
-typedef graph::Pgr_base_graph <
-boost::adjacency_list < boost::listS, boost::vecS,
- boost::undirectedS,
- XY_vertex, Basic_edge >,
- XY_vertex, Basic_edge > xyUndirectedGraph;
-
-typedef graph::Pgr_base_graph <
-boost::adjacency_list < boost::listS, boost::vecS,
- boost::bidirectionalS,
- XY_vertex, Basic_edge >,
- XY_vertex, Basic_edge > xyDirectedGraph;
-
-//@}
-
-
-namespace graph {
-
-template <class G, typename T_V, typename T_E>
-class Pgr_base_graph {
- public:
- /** @name Graph related types
- Type | boost meaning | pgRouting meaning
- :---------: | :-------------------- | :----------------------
- G | boost::adjacency_list | Graph
- V | vertex_descriptor | Think of it as local ID of a vertex
- E | edge_descriptor | Think of it as local ID of an edge
- V_i | vertex_iterator | To cycle the vertices of the Graph
- E_i | edge_iterator | To cycle the edges of the Graph
- EO_i | out_edge_iterator | To cycle the out going edges of a vertex
- EI_i | in_edge_iterator | To cycle the in coming edges of a vertex (only in bidirectional graphs)
- */
- //@{
- typedef G B_G;
- typedef T_E G_T_E;
- typedef typename boost::graph_traits < G >::vertex_descriptor V;
- typedef typename boost::graph_traits < G >::edge_descriptor E;
- typedef typename boost::graph_traits < G >::vertex_iterator V_i;
- typedef typename boost::graph_traits < G >::edge_iterator E_i;
- typedef typename boost::graph_traits < G >::out_edge_iterator EO_i;
- typedef typename boost::graph_traits < G >::in_edge_iterator EI_i;
-
- typedef typename boost::graph_traits < G >::vertices_size_type
- vertices_size_type;
- typedef typename boost::graph_traits < G >::edges_size_type
- edges_size_type;
- typedef typename boost::graph_traits < G >::degree_size_type
- degree_size_type;
-
- //@}
-
- /** @name Id handling related types
- Type | Meaning | pgRouting Meaning
- :---------: | :------------- | :----------------------
- id_to_V | maps id -> V | given an id store the V
- LI | Left Iterator | iterates over id_to_V
- */
- //@{
-
- typedef typename std::map< int64_t, V > id_to_V;
- typedef typename id_to_V::const_iterator LI;
-
- //@}
-
- //! @name The Graph
- //@{
- G graph; //!< The graph
- size_t m_num_vertices; //!< local count.
- graphType m_gType; //!< type (DIRECTED or UNDIRECTED)
- //@}
-
- //! @name Id mapping handling
- //@{
-
- id_to_V vertices_map; //!< id -> graph id
-
- //@}
-
- //! @name Graph Modification
- //@{
- //! Used for storing the removed_edges
-
- std::deque< T_E > removed_edges;
-
- //@}
-
-
-
- //! @name The Graph
- //@{
- //! @brief Constructor
- /*!
- - Prepares the graph to be of type gtype
- - inserts the vertices
- - The vertices must be checked (if necessary) before calling the constructor
- */
- Pgr_base_graph< G , T_V, T_E >(
- const std::vector< T_V > &vertices, graphType gtype)
- : graph(vertices.size()),
- m_num_vertices(vertices.size()),
- m_gType(gtype) {
- pgassert(boost::num_vertices(graph) == num_vertices());
- pgassert(boost::num_vertices(graph) == vertices.size());
-#if 0
- // This code does not work with contraction
- pgassert(pgrouting::check_vertices(vertices) == 0);
-#endif
- size_t i = 0;
- for (auto vi = boost::vertices(graph).first;
- vi != boost::vertices(graph).second; ++vi) {
- vertices_map[vertices[i].id] = (*vi);
- graph[(*vi)].cp_members(vertices[i++]);
- }
- }
-
- /*!
- Prepares the _graph_ to be of type gtype with 0 vertices
- */
- explicit Pgr_base_graph< G , T_V, T_E >(graphType gtype)
- : graph(0),
- m_num_vertices(0),
- m_gType(gtype) {
- }
-
-
- //! @name Insert edges
- //@{
- /*! @brief Inserts *count* edges of type *T* into the graph
- *
- * Converts the edges to a std::vector<T> & calls the overloaded
- * twin function.
- *
- * @param edges
- * @param count
- */
- template < typename T >
- void insert_edges(const T *edges, int64_t count) {
- insert_edges(std::vector < T >(edges, edges + count));
- }
-
- /*! @brief Inserts *count* edges of type *pgr_edge_t* into the graph
-
- The set of edges should not have an illegal vertex defined
-
- When the graph is empty calls:
- - @b extract_vertices
- and throws an exception if there are illegal vertices.
-
-
- When developing:
- - if an illegal vertex is found an exception is thrown
- - That means that the set of vertices should be checked in the
- code that is being developed
-
- No edge is inserted when there is an error on the vertices
-
- @param edges
- */
- template < typename T >
- void insert_edges(const std::vector < T > &edges) {
-#if 0
- // This code does not work with contraction
- if (num_vertices() == 0) {
- auto vertices = pgrouting::extract_vertices(edges);
- pgassert(pgrouting::check_vertices(vertices) == 0);
- add_vertices(vertices);
- }
-#endif
- for (const auto edge : edges) {
- graph_add_edge(edge);
- }
- }
- //@}
-
- private:
- /*! @brief adds the vertices into the graph
- *
- * PRECONDITIONS:
- * ~~~~~{.c}
- * precondition(boost::num_vertices(graph) == 0);
- * for (vertex : vertices)
- * precondition(!has_vertex(vertex.id));
- * ~~~~~
- *
- * POSTCONDITIONS:
- * ~~~~~{.c}
- * postcondition(boost::num_vertices(graph) == vertices.size());
- * for (vertex : vertices)
- * precondition(has_vertex(vertex.id));
- * ~~~~~
- */
- void add_vertices(std::vector< T_V > vertices);
-
- public:
- //! @name boost wrappers with original id
- //@{
- //! @brief get the out-degree of a vertex
-
- /*!
- @returns 0: The out degree of a vertex that its not in the graph
-
- @param [in] vertex_id original vertex id
- */
- degree_size_type out_degree(int64_t vertex_id) const {
- if (!has_vertex(vertex_id)) {
- return 0;
- }
- return out_degree(get_V(vertex_id));
- }
- degree_size_type in_degree(int64_t vertex_id) const {
- if (!has_vertex(vertex_id)) {
- return 0;
- }
- return is_directed()?
- in_degree(get_V(vertex_id))
- : out_degree(get_V(vertex_id));
- }
-
-
- /*! @brief get the vertex descriptor of the vertex
-
- When the vertex does not exist
- - creates a new vetex
-
- @return V: The vertex descriptor of the vertex
- */
- V get_V(const T_V &vertex) {
- auto vm_s(vertices_map.find(vertex.id));
- if (vm_s == vertices_map.end()) {
- auto v = add_vertex(graph);
- graph[v].cp_members(vertex);
- vertices_map[vertex.id] = v;
- return v;
- }
- return vm_s->second;
- }
-
- /*! @brief get the vertex descriptor of the vid
-
- Call has_vertex(vid) before calling this function
-
- @return V: The vertex descriptor of the vertex
- */
- V get_V(int64_t vid) const {
- pgassert(has_vertex(vid));
- return vertices_map.find(vid)->second;
- }
-
- //! @brief True when vid is in the graph
- bool has_vertex(int64_t vid) const {
- return vertices_map.find(vid) != vertices_map.end();
- }
-
-
-
- //! @name to be or not to be
- //@{
-
- bool is_directed() const {return m_gType == DIRECTED;}
- bool is_undirected() const {return m_gType == UNDIRECTED;}
- bool is_source(V v_idx, E e_idx) const {return v_idx == source(e_idx);}
- bool is_target(V v_idx, E e_idx) const {return v_idx == target(e_idx);}
-
- //@}
-
- //! @name boost wrappers with V
- //@{
-
-
- T_E& operator[](E e_idx) {return graph[e_idx];}
- const T_E& operator[](E e_idx) const {return graph[e_idx];}
-
- T_V& operator[](V v_idx) {return graph[v_idx];}
- const T_V& operator[](V v_idx) const {return graph[v_idx];}
-
- V source(E e_idx) const {return boost::source(e_idx, graph);}
- V target(E e_idx) const {return boost::target(e_idx, graph);}
- V adjacent(V v_idx, E e_idx) const {
- pgassert(is_source(v_idx, e_idx) || is_target(v_idx, e_idx));
- return is_source(v_idx, e_idx)?
- target(e_idx) :
- source(e_idx);
- }
-
-
- /*! @brief in degree of a vertex
- *
- * - when its undirected there is no "concept" of in degree
- * - out degree is returned
- * - on directed in degree of vertex is returned
- */
- degree_size_type in_degree(V &v) const {
- return is_directed()?
- boost::in_degree(v, graph) :
- boost::out_degree(v, graph);
- }
-
- /*! @brief out degree of a vertex
- *
- * regardles of undirected or directed graph
- * - out degree is returned
- */
- degree_size_type out_degree(V &v) const {
- return boost::out_degree(v, graph);
- }
-
- //@}
-
-
- //! @name edge disconection/reconnection
- //@{
- //! @brief Disconnects all edges from p_from to p_to
- /*!
-
- - No edge is disconnected if the vertices id's do not exist in the graph
- - All removed edges are stored for future reinsertion
- - All parallel edges are disconnected (automatically by boost)
-
- 
- 
-
- @param [in] p_from original vertex id of the starting point of the edge
- @param [in] p_to original vertex id of the ending point of the edge
- */
- void disconnect_edge(int64_t p_from, int64_t p_to);
-
-
- //! @brief Disconnects the outgoing edges of a vertex
- /*!
-
- - No edge is disconnected if it doesn't exist in the graph
- - Removed edges are stored for future reinsertion
- - all outgoing edges with the edge_id are removed if they exist
-
- @param [in] vertex_id original vertex
- @param [in] edge_id original edge_id
- */
- void disconnect_out_going_edge(int64_t vertex_id, int64_t edge_id);
-
-
-
-
- //! @brief Disconnects all incoming and outgoing edges from the vertex
- /*!
- boost::graph doesn't recommend th to insert/remove vertices, so a vertex removal is
- simulated by disconnecting the vertex from the graph
-
- - No edge is disconnected if the vertices id's do not exist in the graph
- - All removed edges are stored for future reinsertion
- - All parallel edges are disconnected (automatically by boost)
-
- 
- 
-
- @param [in] p_vertex original vertex id of the starting point of the edge
- */
- void disconnect_vertex(int64_t p_vertex);
- void disconnect_vertex(V vertex);
-
-
- //! @brief Reconnects all edges that were removed
- void restore_graph();
-
- //@}
-
- //! @name only for stand by program
- //@{
-
- friend std::ostream& operator<<(
- std::ostream &log, const Pgr_base_graph< G, T_V, T_E > &g) {
- typename Pgr_base_graph< G, T_V, T_E >::EO_i out, out_end;
-
- for (auto vi = vertices(g.graph).first;
- vi != vertices(g.graph).second; ++vi) {
- if ((*vi) >= g.m_num_vertices) break;
- log << (*vi) << ": " << " out_edges_of(" << g.graph[(*vi)] << "):";
- for (boost::tie(out, out_end) = out_edges(*vi, g.graph);
- out != out_end; ++out) {
- log << ' '
- << g.graph[*out].id << "=("
- << g[g.source(*out)].id << ", "
- << g[g.target(*out)].id << ") = "
- << g.graph[*out].cost <<"\t";
- }
- log << std::endl;
- }
- return log;
- }
-
- //@}
-
-
- int64_t get_edge_id(V from, V to, double &distance) const;
-
- size_t num_vertices() const { return boost::num_vertices(graph);}
-
-
- void graph_add_edge(const T_E &edge);
-
- template < typename T >
- void graph_add_edge(const T &edge);
-};
-
-
-
-
-template < class G, typename T_V, typename T_E >
-void
-Pgr_base_graph< G, T_V, T_E >::disconnect_edge(int64_t p_from, int64_t p_to) {
- T_E d_edge;
-
- // nothing to do, the vertex doesn't exist
- if (!has_vertex(p_from) || !has_vertex(p_to)) return;
-
- EO_i out, out_end;
- V g_from(get_V(p_from));
- V g_to(get_V(p_to));
-
- // store the edges that are going to be removed
- for (boost::tie(out, out_end) = out_edges(g_from, graph);
- out != out_end; ++out) {
- if (target(*out) == g_to) {
- d_edge.id = graph[*out].id;
- d_edge.source = graph[source(*out)].id;
- d_edge.target = graph[target(*out)].id;
- d_edge.cost = graph[*out].cost;
- removed_edges.push_back(d_edge);
- }
- }
- // the actual removal
- boost::remove_edge(g_from, g_to, graph);
-}
-
-
-
-template < class G, typename T_V, typename T_E >
-void
-Pgr_base_graph< G, T_V, T_E >::disconnect_out_going_edge(
- int64_t vertex_id, int64_t edge_id) {
- T_E d_edge;
-
- // nothing to do, the vertex doesn't exist
- if (!has_vertex(vertex_id)) return;
- auto v_from(get_V(vertex_id));
-
- EO_i out, out_end;
- bool change = true;
- // store the edge that are going to be removed
- while (change) {
- change = false;
- for (boost::tie(out, out_end) = out_edges(v_from, graph);
- out != out_end; ++out) {
- if (graph[*out].id == edge_id) {
- d_edge.id = graph[*out].id;
- d_edge.source = graph[source(*out)].id;
- d_edge.target = graph[target(*out)].id;
- d_edge.cost = graph[*out].cost;
- removed_edges.push_back(d_edge);
- boost::remove_edge((*out), graph);
- change = true;
- break;
- }
- }
- }
-}
-
-
-template < class G, typename T_V, typename T_E >
-void
-Pgr_base_graph< G, T_V, T_E >::disconnect_vertex(int64_t vertex) {
- if (!has_vertex(vertex)) return;
- disconnect_vertex(get_V(vertex));
-}
-
-template < class G, typename T_V, typename T_E >
-void
-Pgr_base_graph< G, T_V, T_E >::disconnect_vertex(V vertex) {
- T_E d_edge;
-
- EO_i out, out_end;
- // store the edges that are going to be removed
- for (boost::tie(out, out_end) = out_edges(vertex, graph);
- out != out_end; ++out) {
- d_edge.id = graph[*out].id;
- d_edge.source = graph[source(*out)].id;
- d_edge.target = graph[target(*out)].id;
- d_edge.cost = graph[*out].cost;
- removed_edges.push_back(d_edge);
- }
-
- // special case
- if (m_gType == DIRECTED) {
- EI_i in, in_end;
- for (boost::tie(in, in_end) = in_edges(vertex, graph);
- in != in_end; ++in) {
- d_edge.id = graph[*in].id;
- d_edge.source = graph[source(*in)].id;
- d_edge.target = graph[target(*in)].id;
- d_edge.cost = graph[*in].cost;
- removed_edges.push_back(d_edge);
- }
- }
-
- // delete incoming and outgoing edges from the vertex
- boost::clear_vertex(vertex, graph);
-}
-
-template < class G, typename T_V, typename T_E >
-void
-Pgr_base_graph< G, T_V, T_E >::restore_graph() {
- while (removed_edges.size() != 0) {
- graph_add_edge(removed_edges[0]);
- removed_edges.pop_front();
- }
-}
-
-
-template < class G, typename T_V, typename T_E >
-int64_t
-Pgr_base_graph< G, T_V, T_E >::get_edge_id(
- V from,
- V to,
- double &distance) const {
- E e;
- EO_i out_i, out_end;
- V v_source, v_target;
- double minCost = (std::numeric_limits<double>::max)();
- int64_t minEdge = -1;
- for (boost::tie(out_i, out_end) = boost::out_edges(from, graph);
- out_i != out_end; ++out_i) {
- e = *out_i;
- v_target = target(e);
- v_source = source(e);
- if ((from == v_source) && (to == v_target)
- && (distance == graph[e].cost))
- return graph[e].id;
- if ((from == v_source) && (to == v_target)
- && (minCost > graph[e].cost)) {
- minCost = graph[e].cost;
- minEdge = graph[e].id;
- }
- }
- distance = minEdge == -1? 0: minCost;
- return minEdge;
-}
-
-
-template < class G, typename T_V, typename T_E >
-void
-Pgr_base_graph< G, T_V, T_E >::graph_add_edge(const T_E &edge ) {
- bool inserted;
- typename Pgr_base_graph< G, T_V, T_E >::LI vm_s, vm_t;
- typename Pgr_base_graph< G, T_V, T_E >::E e;
-
- vm_s = vertices_map.find(edge.source);
- if (vm_s == vertices_map.end()) {
- vertices_map[edge.source]= m_num_vertices;
- vm_s = vertices_map.find(edge.source);
- }
-
- vm_t = vertices_map.find(edge.target);
- if (vm_t == vertices_map.end()) {
- vertices_map[edge.target]= m_num_vertices;
- vm_t = vertices_map.find(edge.target);
- }
-
- if (edge.cost >= 0) {
- boost::tie(e, inserted) =
- boost::add_edge(vm_s->second, vm_t->second, graph);
- graph[e].cp_members(edge);
- }
-}
-
-
-template < class G, typename T_V, typename T_E >
-template < typename T>
-void
-Pgr_base_graph< G, T_V, T_E >::graph_add_edge(const T &edge) {
- bool inserted;
- typename Pgr_base_graph< G, T_V, T_E >::E e;
- if ((edge.cost < 0) && (edge.reverse_cost < 0))
- return;
-
- /*
- * true: for source
- * false: for target
- */
- auto vm_s = get_V(T_V(edge, true));
- auto vm_t = get_V(T_V(edge, false));
-
- pgassert(vertices_map.find(edge.source) != vertices_map.end());
- pgassert(vertices_map.find(edge.target) != vertices_map.end());
- if (edge.cost >= 0) {
- boost::tie(e, inserted) =
- boost::add_edge(vm_s, vm_t, graph);
- graph[e].cost = edge.cost;
- graph[e].id = edge.id;
- }
-
- if (edge.reverse_cost >= 0) {
- boost::tie(e, inserted) =
- boost::add_edge(vm_t, vm_s, graph);
-
- graph[e].cost = edge.reverse_cost;
- graph[e].id = edge.id;
- }
-}
-
-/****************** PRIVATE *******************/
-
-template < class G, typename T_V, typename T_E >
-void
-Pgr_base_graph< G, T_V, T_E >::add_vertices(
- std::vector< T_V > vertices) {
- pgassert(m_num_vertices == 0);
- for (const auto vertex : vertices) {
- pgassert(vertices_map.find(vertex.id) == vertices_map.end());
-
- auto v = add_vertex(graph);
- vertices_map[vertex.id] = m_num_vertices++;
- graph[v].cp_members(vertex);
-
- pgassert(boost::num_vertices(graph) == num_vertices());
- }
- return;
-}
-
-} // namespace graph
-} // namespace pgrouting
-
-#endif // SRC_COMMON_SRC_PGR_BASE_GRAPH_HPP_
diff --git a/src/common/src/pgr_types.h b/src/common/src/pgr_types.h
deleted file mode 100644
index 4ac8339..0000000
--- a/src/common/src/pgr_types.h
+++ /dev/null
@@ -1,265 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pgr_types.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_PGR_TYPES_H_
-#define SRC_COMMON_SRC_PGR_TYPES_H_
-#pragma once
-
-
-#ifdef __cplusplus
-
-#include <cstddef>
-
-#else // __cplusplus
-
-// for bool
-#ifdef __GNUC__
-#pragma GCC diagnostic ignored "-pedantic"
-#endif
-
-#include <postgres.h>
-
-#ifdef __GNUC__
-#pragma GCC diagnostic pop
-#endif
-
-// For NULL & size_t
-#include <stdlib.h>
-
-
-#endif // __cplusplus
-
-// For int64_t etc
-#include <stdint.h>
-
-typedef struct {
- int64_t id;
- double x;
- double y;
-} Coordinate_t;
-
-typedef struct edge_astar {
- int id;
- int source;
- int target;
- double cost;
- double reverse_cost;
- double s_x;
- double s_y;
- double t_x;
- double t_y;
-} edge_astar_t;
-
-typedef struct {
- int64_t id;
- int64_t source;
- int64_t target;
- double cost;
- double reverse_cost;
- double x1;
- double y1;
- double x2;
- double y2;
-} Pgr_edge_xy_t;
-
-
-typedef struct {
- int64_t vertex_id;
- int64_t edge_id;
- double cost;
-} path_element_t;
-
-/*
- * This one is for processing
- */
-struct Path_t{
- int64_t node;
- int64_t edge;
- double cost;
- double agg_cost;
-};
-
-/*
- * This ones are for returning the info to postgres
- */
-
-typedef struct {
- int seq;
- int64_t start_id;
- int64_t end_id;
- int64_t node;
- int64_t edge;
- double cost;
- double agg_cost;
-} General_path_element_t;
-
-
-typedef struct {
- int route_id;
- int path_id;
- int path_seq;
- int64_t start_vid;
- int64_t end_vid;
- int64_t node;
- int64_t edge;
- double cost;
- double agg_cost;
- double route_agg_cost;
-} Routes_t;
-
-
-typedef struct {
- int64_t id;
- int64_t source;
- int64_t target;
- bool going;
- bool coming;
- int64_t edge_id;
-} pgr_basic_edge_t;
-
-typedef struct {
- int64_t id;
- int64_t source;
- int64_t target;
- double cost;
- double reverse_cost;
-} pgr_edge_t;
-
-typedef struct {
- int64_t edge;
- int64_t source;
- int64_t target;
- int64_t flow;
- int64_t residual_capacity;
-} pgr_flow_t;
-
-typedef struct {
- int seq;
- int64_t source;
- int64_t edge;
- double cost;
-} pgr_path_t;
-
-typedef struct matrix_cell {
- int64_t from_vid;
- int64_t to_vid;
- double cost;
-} Matrix_cell_t;
-
-// Restrictions used in pgr_turnRestrictions
-
-#define MAX_RULE_LENGTH 5
-typedef struct {
- int64_t target_id;
- double to_cost;
- int64_t via[MAX_RULE_LENGTH];
-}
-Restrict_t;
-
-typedef struct {
- int64_t pid;
- int64_t edge_id;
- char side; // 'r', 'l', 'b' (default is both)
- double fraction;
- int64_t vertex_id; // number is negative and is used for processing
-} Point_on_edge_t;
-
-// used for getting the data
-typedef
-enum {
- ANY_INTEGER,
- ANY_NUMERICAL,
- TEXT,
- CHAR1
-} expectType;
-
-typedef
-struct {
- int colNumber;
- uint64_t type;
- bool strict;
- char *name;
- expectType eType;
-} Column_info_t;
-
-
-/**************************************************************************
- * return type for contraction
- * ***********************************************************************/
-typedef struct {
- int64_t id;
- char* type;
- int64_t source;
- int64_t target;
- double cost;
- int64_t *contracted_vertices;
- int contracted_vertices_size;
-} pgr_contracted_blob;
-
-
-
-enum graphType {UNDIRECTED = 0, DIRECTED};
-
-/**************************************************************************
- * pickDelivery types
- * ***********************************************************************/
-typedef struct {
- int64_t id;
- double x;
- double y;
- double demand;
- double Etime;
- double Ltime;
- double Stime;
- int64_t Pindex;
- int64_t Dindex;
- double Ddist;
-} Customer_t;
-
-/*
- OUT seq INTEGER, done in the .c code
- OUT vehicle_seq INTEGER,
- OUT vehicle_id INTEGER,
- OUT order_id BIGINT,
- OUT travelTime FLOAT,
- OUT arrivalTime FLOAT,
- OUT waitTime FLOAT,
- OUT serviceTime FLOAT,
- OUT departureTime FLOAT,
- */
-
-typedef struct {
- int vehicle_id;
- int vehicle_seq;
- int64_t order_id;
- double travelTime;
- double arrivalTime;
- double waitTime;
- double serviceTime;
- double departureTime;
-} General_vehicle_orders_t;
-
-/*************************************************************************/
-
-#endif // SRC_COMMON_SRC_PGR_TYPES_H_
diff --git a/src/common/src/points_input.c b/src/common/src/points_input.c
index e44edea..54ca17f 100644
--- a/src/common/src/points_input.c
+++ b/src/common/src/points_input.c
@@ -22,11 +22,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./postgres_connection.h"
-#include "./debug_macro.h"
-#include "./pgr_types.h"
-#include "./get_check_data.h"
-#include "./points_input.h"
+#include "c_common/points_input.h"
+
+#include "c_types/column_info_t.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/get_check_data.h"
diff --git a/src/common/src/points_input.h b/src/common/src/points_input.h
deleted file mode 100644
index d54115f..0000000
--- a/src/common/src/points_input.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: points_input.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_POINTS_INPUT_H_
-#define SRC_COMMON_SRC_POINTS_INPUT_H_
-#pragma once
-
-#include "./pgr_types.h"
-
-/*! @brief pgr_get_points
-
-For queries of the type:
-~~~~{.c}
-SELECT pid, edge_id, fraction, [side]
-FROM edge_table;
-~~~~
-
- at param[in] points_sql
- at param[out] points
- at param[out] total_points
-*/
-void pgr_get_points(
- char *points_sql,
- Point_on_edge_t **points,
- size_t *total_points);
-
-
-/* ******************** FOR USERS DOCUMENTATION
-
-points_sql_start
-
-Description of the Points SQL query
-...............................................................................
-
-:points_sql: an SQL query, which should return a set of rows with the following columns:
-
-============ ================= =================================================
-Column Type Description
-============ ================= =================================================
-**pid** ``ANY-INTEGER`` (optional) Identifier of the point.
- - If column present, it can not be NULL.
- - If column not present, a sequential identifier will be given automatically.
-
-**edge_id** ``ANY-INTEGER`` Identifier of the "closest" edge to the point.
-**fraction** ``ANY-NUMERICAL`` Value in <0,1> that indicates the relative postition from the first end point of the edge.
-**side** ``CHAR`` (optional) Value in ['b', 'r', 'l', NULL] indicating if the point is:
- - In the right, left of the edge or
- - If it doesn't matter with 'b' or NULL.
- - If column not present 'b' is considered.
-============ ================= =================================================
-
-Where:
-
-:ANY-INTEGER: smallint, int, bigint
-:ANY-NUMERICAL: smallint, int, bigint, real, float
-
-points_sql_end
-
-*/
-
-
-#endif // SRC_COMMON_SRC_POINTS_INPUT_H_
diff --git a/src/common/src/postgres_connection.c b/src/common/src/postgres_connection.c
index d82e85f..6765894 100644
--- a/src/common/src/postgres_connection.c
+++ b/src/common/src/postgres_connection.c
@@ -22,14 +22,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./postgres_connection.h"
+#include "c_common/postgres_connection.h"
#include "utils/builtins.h"
#include "catalog/pg_type.h"
#include <string.h>
-#include "./debug_macro.h"
+#include "c_common/debug_macro.h"
void
pgr_send_error(int errcode) {
diff --git a/src/common/src/postgres_connection.h b/src/common/src/postgres_connection.h
deleted file mode 100644
index ffbad67..0000000
--- a/src/common/src/postgres_connection.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: postgres_connection.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-#ifndef SRC_COMMON_SRC_POSTGRES_CONNECTION_H_
-#define SRC_COMMON_SRC_POSTGRES_CONNECTION_H_
-#pragma once
-
-
-
-#ifdef __GNUC__
-#pragma GCC diagnostic ignored "-pedantic"
-#endif
-
-#include <postgres.h>
-
-
-
-#ifdef __GNUC__
-#pragma GCC diagnostic ignored "-Wsign-conversion"
-#pragma GCC diagnostic ignored "-Wunused-parameter"
-#endif
-
-#include "executor/spi.h"
-
-#ifdef __GNUC__
-#pragma GCC diagnostic pop
-#pragma GCC diagnostic pop
-#pragma GCC diagnostic pop
-#endif
-
-#include "utils/builtins.h" // for text_to_cstring
-
-#if PGSQL_VERSION > 92
-#include "access/htup_details.h"
-#endif
-
-
-#ifdef __GNUC__
-#pragma GCC diagnostic ignored "-Wunused-parameter"
-#endif
-
-#include <funcapi.h>
-#include <fmgr.h>
-
-#ifdef __GNUC__
-#pragma GCC diagnostic pop
-#endif
-
-
-void pgr_send_error(int errcode);
-void pgr_SPI_finish(void);
-void pgr_SPI_connect(void);
-SPIPlanPtr pgr_SPI_prepare(char* sql);
-Portal pgr_SPI_cursor_open(SPIPlanPtr SPIplan);
-char* pgr_cstring2char(const char *inStr);
-
-#endif // SRC_COMMON_SRC_POSTGRES_CONNECTION_H_
diff --git a/src/common/src/restrict_input.c b/src/common/src/restrict_input.c
new file mode 100644
index 0000000..2012a3f
--- /dev/null
+++ b/src/common/src/restrict_input.c
@@ -0,0 +1,173 @@
+/*PGR-GNU*****************************************************************
+File: restrict_input.c
+
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "c_common/restrict_input.h"
+
+#include "c_types/column_info_t.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/time_msg.h"
+#include "c_common/get_check_data.h"
+
+#if 1
+
+static
+void fetch_restriction(
+ HeapTuple *tuple,
+ TupleDesc *tupdesc,
+ Column_info_t info[4],
+ Restrict_t *restriction) {
+ restriction->id = pgr_SPI_getBigInt(tuple, tupdesc, info[0]);
+ restriction->cost = pgr_SPI_getFloat8(tuple, tupdesc, info[1]);
+ char *str = DatumGetCString(
+ SPI_getvalue(*tuple, *tupdesc, info[2].colNumber));
+
+// TODO(someone) because its text, no guarantee the text read is correct
+// move this code to c++ to tokenize the integers.
+ int i = 0;
+ for (i = 0; i < MAX_RULE_LENGTH; ++i) restriction->restricted_edges[i] = -1;
+ str[0] = ',';
+ if (str != NULL) {
+ char *token = NULL;
+ int i = 0;
+
+ token = (char *)strtok(str, " ,");
+
+ while (token != NULL && i < MAX_RULE_LENGTH) {
+ restriction->restricted_edges[i] = atoi(token);
+ i++;
+ token = (char *)strtok(NULL, " ,");
+ }
+ }
+}
+
+#endif
+
+
+void
+pgr_get_restriction_data(
+ char *restrictions_sql,
+ Restrict_t **restrictions,
+ size_t *total_restrictions) {
+ const int tuple_limit = 1000000;
+ clock_t start_t = clock();
+
+ PGR_DBG("pgr_get_restriction_data");
+ PGR_DBG("%s", restrictions_sql);
+ Column_info_t info[3];
+
+ int i;
+ for (i = 0; i < 3; ++i) {
+ info[i].colNumber = -1;
+ info[i].type = 0;
+ info[i].strict = true;
+ info[i].eType = ANY_INTEGER;
+ }
+ info[0].name = strdup("id");
+ info[1].name = strdup("cost");
+ info[2].name = strdup("restricted_edges");
+
+ info[1].eType = ANY_NUMERICAL;
+ info[2].eType = ANY_INTEGER_ARRAY;
+
+#if 0
+ // experiment starts
+
+ size_t total_tuples = (*total_restrictions) ;
+
+ (*restrictions) = (Restrict_t *)palloc0(sizeof(Restrict_t));
+
+ (*restrictions)[0].id = 1;
+ (*restrictions)[0].cost = -1;
+ (*restrictions)[0].restricted_edges[0] = 4;
+ (*restrictions)[0].restricted_edges[1] = 7;
+
+ // experiment ends
+#endif
+
+#if 1
+ size_t ntuples;
+ size_t total_tuples;
+
+ void *SPIplan;
+ SPIplan = pgr_SPI_prepare(restrictions_sql);
+ Portal SPIportal;
+ SPIportal = pgr_SPI_cursor_open(SPIplan);
+
+ bool moredata = TRUE;
+ (*total_restrictions) = total_tuples = 0;
+
+
+ while (moredata == TRUE) {
+ SPI_cursor_fetch(SPIportal, TRUE, tuple_limit);
+ if (total_tuples == 0) {
+ pgr_fetch_column_info(info, 3);
+ }
+ ntuples = SPI_processed;
+ total_tuples += ntuples;
+ PGR_DBG("SPI_processed %ld", ntuples);
+ if (ntuples > 0) {
+ if ((*restrictions) == NULL)
+ (*restrictions) = (Restrict_t *)palloc0(
+ total_tuples * sizeof(Restrict_t));
+ else
+ (*restrictions) = (Restrict_t *)repalloc(
+ (*restrictions),
+ total_tuples * sizeof(Restrict_t));
+
+ if ((*restrictions) == NULL) {
+ elog(ERROR, "Out of memory");
+ }
+
+ size_t t;
+ SPITupleTable *tuptable = SPI_tuptable;
+ TupleDesc tupdesc = SPI_tuptable->tupdesc;
+ PGR_DBG("processing %ld", ntuples);
+ for (t = 0; t < ntuples; t++) {
+ HeapTuple tuple = tuptable->vals[t];
+ fetch_restriction(&tuple, &tupdesc, info,
+ &(*restrictions)[total_tuples - ntuples + t]);
+ }
+ SPI_freetuptable(tuptable);
+ } else {
+ moredata = FALSE;
+ }
+ }
+
+ SPI_cursor_close(SPIportal);
+
+ if (total_tuples == 0) {
+ (*total_restrictions) = 0;
+ PGR_DBG("NO restrictions");
+ return;
+ }
+
+ (*total_restrictions) = total_tuples;
+#endif
+ PGR_DBG("Finish reading %ld data, %ld",
+ total_tuples,
+ (*total_restrictions));
+ clock_t end_t = clock();
+ time_msg(" reading Restrictions", start_t, end_t);
+}
diff --git a/src/common/src/restrictions_input.c b/src/common/src/restrictions_input.c
index b4dde83..7d03428 100644
--- a/src/common/src/restrictions_input.c
+++ b/src/common/src/restrictions_input.c
@@ -22,13 +22,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
+#include "c_common/restrictions_input.h"
-#include "./postgres_connection.h"
-#include "./debug_macro.h"
-#include "./pgr_types.h"
-#include "./time_msg.h"
-#include "./get_check_data.h"
-#include "./restrictions_input.h"
+#include "c_types/column_info_t.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/time_msg.h"
+#include "c_common/get_check_data.h"
static
diff --git a/src/common/src/restrictions_input.h b/src/common/src/restrictions_input.h
deleted file mode 100644
index 9243973..0000000
--- a/src/common/src/restrictions_input.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: restrictions_input.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_RESTRICTIONS_INPUT_H_
-#define SRC_COMMON_SRC_RESTRICTIONS_INPUT_H_
-#pragma once
-
-#include "./pgr_types.h"
-
-void pgr_get_restriction_data(
- char *restrictions_sql,
- Restrict_t **restructions,
- size_t *total_restrictions);
-
-#endif // SRC_COMMON_SRC_RESTRICTIONS_INPUT_H_
diff --git a/src/common/src/time_msg.c b/src/common/src/time_msg.c
index cd0cac5..e4e7096 100644
--- a/src/common/src/time_msg.c
+++ b/src/common/src/time_msg.c
@@ -24,9 +24,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
#include <time.h>
-#include "./postgres_connection.h"
+#include "c_common/postgres_connection.h"
-#include "./time_msg.h"
+#include "c_common/time_msg.h"
void time_msg(char *msg, clock_t start_t, clock_t end_t) {
diff --git a/src/common/src/time_msg.h b/src/common/src/time_msg.h
deleted file mode 100644
index 0e96a45..0000000
--- a/src/common/src/time_msg.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: time_msg.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_TIME_MSG_H_
-#define SRC_COMMON_SRC_TIME_MSG_H_
-#pragma once
-
-#include <time.h>
-#include <stdio.h>
-
-void time_msg(char *msg, clock_t start_t, clock_t end_t);
-
-#endif // SRC_COMMON_SRC_TIME_MSG_H_
diff --git a/src/common/src/vehicles_input.c b/src/common/src/vehicles_input.c
new file mode 100644
index 0000000..8768d4f
--- /dev/null
+++ b/src/common/src/vehicles_input.c
@@ -0,0 +1,275 @@
+/*PGR-GNU*****************************************************************
+File: vehicles_input.c
+
+Copyright (c) 2016 Celia Virginia Vergara Castillo
+vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#include "c_common/vehicles_input.h"
+
+#include <limits.h>
+#if PGSQL_VERSION > 96
+#include <float.h>
+#endif
+
+#if PGSQL_VERSION == 100
+#include <float.h>
+#endif
+
+
+#include "c_types/column_info_t.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/get_check_data.h"
+#include "c_common/time_msg.h"
+
+
+static
+void fetch_vehicles(
+ HeapTuple *tuple,
+ TupleDesc *tupdesc,
+ Column_info_t info[16],
+ Vehicle_t *vehicle,
+ bool with_id) {
+
+ vehicle->id = pgr_SPI_getBigInt(tuple, tupdesc, info[0]);
+ vehicle->capacity = pgr_SPI_getFloat8(tuple, tupdesc, info[1]);
+
+ vehicle->start_x = with_id ?
+ 0 :
+ pgr_SPI_getFloat8(tuple, tupdesc, info[2]);
+ vehicle->start_y = with_id ?
+ 0 :
+ pgr_SPI_getFloat8(tuple, tupdesc, info[3]);
+
+ vehicle->speed = column_found(info[13].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[13]) :
+ 1;
+ vehicle->cant_v = column_found(info[4].colNumber) ?
+ pgr_SPI_getBigInt(tuple, tupdesc, info[4]) :
+ 1;
+ vehicle->start_open_t = column_found(info[5].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[5]) :
+ 0;
+ vehicle->start_close_t = column_found(info[6].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[6]) :
+ DBL_MAX;
+ vehicle->start_service_t = column_found(info[7].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[7]) :
+ 0;
+
+
+ if (!(column_found(info[8].colNumber)) && column_found(info[9].colNumber)) {
+ ereport(ERROR,
+ (errmsg("Column \'%s\' not Found", info[8].name),
+ errhint("%s was found, also column is expected %s ", info[9].name, info[8].name)));
+ }
+ if (column_found(info[8].colNumber) && !(column_found(info[9].colNumber))) {
+ ereport(ERROR,
+ (errmsg("Column \'%s\' not Found", info[9].name),
+ errhint("%s was found, also column is expected %s ", info[8].name, info[9].name)));
+ }
+
+ vehicle->end_x = column_found(info[8].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[8]) :
+ vehicle->start_x;
+ vehicle->end_y = column_found(info[9].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[9]) :
+ vehicle->start_y;
+
+ if (!(column_found(info[10].colNumber)) && column_found(info[11].colNumber)) {
+ ereport(ERROR,
+ (errmsg("Column \'%s\' not Found", info[10].name),
+ errhint("%s was found, also column is expected %s ", info[10].name, info[11].name)));
+ }
+
+ if (column_found(info[10].colNumber) && !(column_found(info[11].colNumber))) {
+ ereport(ERROR,
+ (errmsg("Column \'%s\' not Found", info[11].name),
+ errhint("%s was found, also column is expected %s ", info[11].name, info[10].name)));
+ }
+ vehicle->end_open_t = column_found(info[10].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[10]) :
+ vehicle->start_open_t;
+ vehicle->end_close_t = column_found(info[11].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[11]) :
+ vehicle->start_close_t;
+ vehicle->end_service_t = column_found(info[12].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[12]) :
+ vehicle->start_service_t;
+
+ vehicle->speed = column_found(info[13].colNumber) ?
+ pgr_SPI_getFloat8(tuple, tupdesc, info[13]) :
+ 1;
+ vehicle->start_node_id = with_id ?
+ pgr_SPI_getBigInt(tuple, tupdesc, info[14]) :
+ 0;
+ vehicle->end_node_id = with_id ?
+ (column_found(info[12].colNumber) ?
+ pgr_SPI_getBigInt(tuple, tupdesc, info[15]) :
+ vehicle->start_node_id) :
+ 0;
+}
+
+
+
+static
+void pgr_get_vehicles_general(
+ char *vehicles_sql,
+ Vehicle_t **vehicles,
+ size_t *total_vehicles,
+ bool with_id) {
+ clock_t start_t = clock();
+
+ const int tuple_limit = 1000000;
+
+ PGR_DBG("pgr_get_vehicles");
+ PGR_DBG("%s", vehicles_sql);
+
+ Column_info_t info[16];
+
+ int i;
+ for (i = 0; i < 16; ++i) {
+ info[i].colNumber = -1;
+ info[i].type = 0;
+ info[i].strict = true;
+ info[i].eType = ANY_NUMERICAL;
+ }
+
+ info[0].name = strdup("id");
+ info[1].name = strdup("capacity");
+ info[2].name = strdup("start_x");
+ info[3].name = strdup("start_y");
+ info[4].name = strdup("number");
+ info[5].name = strdup("start_open");
+ info[6].name = strdup("start_close");
+ info[7].name = strdup("start_service");
+ info[8].name = strdup("end_x");
+ info[9].name = strdup("end_y");
+ info[10].name = strdup("end_open");
+ info[11].name = strdup("end_close");
+ info[12].name = strdup("end_service");
+ info[13].name = strdup("speed");
+ info[14].name = strdup("start_node_id");
+ info[15].name = strdup("end_node_id");
+
+ info[0].eType = ANY_INTEGER;
+ info[4].eType = ANY_INTEGER;
+ info[14].eType = ANY_INTEGER;
+ info[15].eType = ANY_INTEGER;
+
+ for (i = 4; i < 16; ++i) {
+ info[i].strict = false;
+ }
+
+ if (with_id) {
+ /*
+ * with id, then start_x and start_y are optional
+ * start_node_id is compulsory
+ */
+ info[2].strict = false;
+ info[3].strict = false;
+ info[14].strict = true;
+
+ }
+
+ size_t ntuples;
+ size_t total_tuples;
+
+ void *SPIplan;
+ SPIplan = pgr_SPI_prepare(vehicles_sql);
+ Portal SPIportal;
+ SPIportal = pgr_SPI_cursor_open(SPIplan);
+
+ bool moredata = TRUE;
+ (*total_vehicles) = total_tuples = 0;
+
+ /* on the first tuple get the column numbers */
+
+ while (moredata == TRUE) {
+ SPI_cursor_fetch(SPIportal, TRUE, tuple_limit);
+ if (total_tuples == 0) {
+ pgr_fetch_column_info(info, 16);
+ }
+ ntuples = SPI_processed;
+ total_tuples += ntuples;
+ PGR_DBG("SPI_processed %ld", ntuples);
+ if (ntuples > 0) {
+ if ((*vehicles) == NULL)
+ (*vehicles) = (Vehicle_t *)palloc0(
+ total_tuples * sizeof(Vehicle_t));
+ else
+ (*vehicles) = (Vehicle_t *)repalloc(
+ (*vehicles),
+ total_tuples * sizeof(Vehicle_t));
+
+ if ((*vehicles) == NULL) {
+ elog(ERROR, "Out of memory");
+ }
+
+ size_t t;
+ SPITupleTable *tuptable = SPI_tuptable;
+ TupleDesc tupdesc = SPI_tuptable->tupdesc;
+ PGR_DBG("processing %ld", ntuples);
+ for (t = 0; t < ntuples; t++) {
+ HeapTuple tuple = tuptable->vals[t];
+ fetch_vehicles(&tuple, &tupdesc, info,
+ &(*vehicles)[total_tuples - ntuples + t], with_id);
+ }
+ SPI_freetuptable(tuptable);
+ } else {
+ moredata = FALSE;
+ }
+ }
+
+ SPI_cursor_close(SPIportal);
+
+ if (total_tuples == 0) {
+ (*total_vehicles) = 0;
+ PGR_DBG("NO orders");
+ return;
+ }
+
+ (*total_vehicles) = total_tuples;
+ if (with_id) {
+ PGR_DBG("Finish reading %ld vehicles for matrix", (*total_vehicles));
+ } else {
+ PGR_DBG("Finish reading %ld vehicles for eucledian", (*total_vehicles));
+ }
+ time_msg("reading edges", start_t, clock());
+
+}
+
+void
+pgr_get_vehicles(
+ char *vehicles_sql,
+ Vehicle_t **vehicles,
+ size_t *total_vehicles) {
+ pgr_get_vehicles_general( vehicles_sql, vehicles, total_vehicles, false);
+}
+
+void
+pgr_get_vehicles_with_id(
+ char *vehicles_sql,
+ Vehicle_t **vehicles,
+ size_t *total_vehicles) {
+ pgr_get_vehicles_general(vehicles_sql, vehicles, total_vehicles, true);
+}
+
diff --git a/src/common/src/xy_vertex.cpp b/src/common/src/xy_vertex.cpp
index 5fb0978..c97ee3b 100644
--- a/src/common/src/xy_vertex.cpp
+++ b/src/common/src/xy_vertex.cpp
@@ -22,13 +22,12 @@
********************************************************************PGR-GNU*/
-#include "./xy_vertex.h"
+#include "cpp_common/xy_vertex.h"
#include <vector>
#include <algorithm>
-#include "./pgr_types.h"
-#include "./pgr_assert.h"
+#include "cpp_common/pgr_assert.h"
namespace pgrouting {
diff --git a/src/common/src/xy_vertex.h b/src/common/src/xy_vertex.h
deleted file mode 100644
index 34e4276..0000000
--- a/src/common/src/xy_vertex.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*PGR-GNU*****************************************************************
- *
-
- Copyright (c) 2015 Celia Virginia Vergara Castillo
- vicky_vergara at hotmail.com
-
- ------
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#ifndef SRC_COMMON_SRC_XY_VERTEX_H_
-#define SRC_COMMON_SRC_XY_VERTEX_H_
-#pragma once
-
-#ifdef Max
-#undef Max
-#endif
-#ifdef Min
-#undef Min
-#endif
-
-#include <CGAL/Simple_cartesian.h>
-#include <vector>
-
-#include "./pgr_types.h"
-
-
-namespace pgrouting {
-
-// typedef boost::geometry::model::d2::point_xy<double> Point;
-typedef CGAL::Simple_cartesian<double> Simple_cartasian;
-typedef Simple_cartasian::Point_2 Point;
-
-
-class XY_vertex {
- public:
- XY_vertex() = default;
- XY_vertex(const XY_vertex &) = default;
- XY_vertex(const int64_t _id, double _x, double _y) :
- id(_id), point(_x, _y) {
- }
-
- XY_vertex(const Pgr_edge_xy_t &other, bool is_source) :
- id(is_source? other.source : other.target),
- point(is_source? Point(other.x1, other.y1) : Point(other.x2, other.y2))
- {}
-
-
- double x() const {return point.x();}
- double y() const {return point.y();}
-
- inline void cp_members(const XY_vertex &other) {
- this->id = other.id;
- this->point = other.point;
- }
-
- friend std::ostream& operator<<(std::ostream& log, const XY_vertex &v);
- bool operator==(const XY_vertex &rhs) const;
-
- public:
- int64_t id;
- Point point;
-};
-
-size_t
-check_vertices(std::vector < XY_vertex > vertices);
-
-std::vector < XY_vertex >
-extract_vertices(
- const Pgr_edge_xy_t *data_edges, int64_t count);
-
-std::vector < XY_vertex >
-extract_vertices(
- const std::vector < Pgr_edge_xy_t > &data_edges);
-
-#if 0
-std::vector < XY_vertex > extract_vertices(
- std::vector < XY_vertex > vertices,
- const Pgr_edge_xy_t *data_edges, int64_t count);
-
-std::vector < XY_vertex > extract_vertices(
- std::vector < XY_vertex > vertices,
- const std::vector < Pgr_edge_xy_t > data_edges);
-#endif
-
-} // namespace pgrouting
-
-#endif // SRC_COMMON_SRC_XY_VERTEX_H_
diff --git a/src/common/test/doc-pgr_version.result b/src/common/test/doc-pgr_version.result
new file mode 100644
index 0000000..aec10c6
--- /dev/null
+++ b/src/common/test/doc-pgr_version.result
@@ -0,0 +1,14 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT version FROM pgr_version();
+ version
+---------
+ 2.5.0
+(1 row)
+
+-- q2
+ROLLBACK;
+ROLLBACK
diff --git a/src/common/test/doc-pgr_version.test.sql b/src/common/test/doc-pgr_version.test.sql
new file mode 100644
index 0000000..2db6c2d
--- /dev/null
+++ b/src/common/test/doc-pgr_version.test.sql
@@ -0,0 +1,7 @@
+
+--------------------------------------------------------------------------------
+-- pgr_version
+--------------------------------------------------------------------------------
+\echo -- q1
+SELECT version FROM pgr_version();
+\echo -- q2
diff --git a/src/common/test/pgtap/no_underscored-2x.test.sql b/src/common/test/pgtap/no_underscored-2x.test.sql
deleted file mode 100644
index c7f68c2..0000000
--- a/src/common/test/pgtap/no_underscored-2x.test.sql
+++ /dev/null
@@ -1,60 +0,0 @@
-
-\i setup.sql
-
-
-SELECT plan(18);
-
-set client_min_messages to WARNING;
-SELECT results_eq('SELECT 1, sname, tname FROM pgr_getTableName(''EDGe_table'')',
- 'SELECT 1, ''public''::TEXT, ''edge_table''::TEXT ');
-SELECT results_eq('SELECT 2, sname, tname FROM pgr_getTableName(''EDes2'')',
- 'SELECT 2, ''public''::TEXT, NULL::TEXT ');
-
-
-SELECT results_eq('SELECT 3, pgr_getColumnName(''EDGe_table'', ''SOuRce'')' ,
- 'SELECT 3, ''source''::TEXT ');
-SELECT results_eq('SELECT 4, pgr_getColumnName(''EDes2'', ''SOuRce'') ',
- 'SELECT 4, NULL::TEXT ');
-SELECT results_eq('SELECT 5, pgr_getColumnName(''EDes2'', ''SOuce'') ',
- 'SELECT 5, NULL::TEXT ');
-SELECT results_eq('SELECT 6, pgr_getColumnName(''EDes2'', ''SOuce'') ',
- 'SELECT 6, NULL::TEXT ');
-
-
-SELECT results_eq('SELECT 7, pgr_isColumnInTable(''EDGe_table'', ''SOuRce'') ',
- 'SELECT 7, true ');
-SELECT results_eq('SELECT 8, pgr_isColumnInTable(''EDes2'', ''SOuRce'')',
- 'SELECT 8, false ');
-SELECT results_eq('SELECT 9, pgr_isColumnInTable(''EDes2'', ''SOuce'')',
- 'SELECT 9, false ');
-SELECT results_eq('SELECT 10, pgr_isColumnInTable(''EDes2'', ''SOuce'')',
- 'SELECT 10, false ');
-
-
-SELECT results_eq('SELECT 11, pgr_isColumnIndexed(''EDGe_table'', ''id'') ',
- 'SELECT 11, true ');
-SELECT results_eq('SELECT 12, pgr_isColumnIndexed(''EDGe_table'', ''X1'') ',
- 'SELECT 12, false ');
-
-
-SELECT results_eq('SELECT 13, pgr_versionless(''2.1.0foobar23'', ''2.1'') ',
- 'SELECT 13, true ');
-SELECT results_eq('SELECT 14, pgr_versionless(''2.1.0foobar23'', ''2.1-rc1'') ',
- 'SELECT 14, true ');
-SELECT results_eq('SELECT 15, pgr_versionless(''2.1.0foobar23'', ''2.1-beta'') ',
- 'SELECT 15, true ');
-
-
-SELECT results_eq('SELECT 16, pgr_quote_ident(''idname.text'') ',
- 'SELECT 16, ''idname.text''::TEXT ');
-
-SELECT results_eq('SELECT 17, pgr_startPoint(the_geom)::TEXT FROM edge_table where id = 1 ',
- 'SELECT 17, ''010100000000000000000000400000000000000000''::TEXT ');
-
-SELECT results_eq('SELECT 18, pgr_endPoint(the_geom)::TEXT FROM edge_table where id = 1 ',
- 'SELECT 18, ''01010000000000000000000040000000000000F03F''::TEXT ');
-
--- Finish the tests and clean up.
-SELECT * FROM finish();
-ROLLBACK;
-
diff --git a/src/common/test/test.conf b/src/common/test/test.conf
index a178654..ce466a7 100644
--- a/src/common/test/test.conf
+++ b/src/common/test/test.conf
@@ -6,9 +6,11 @@
'data' => ['sampledata.data'],
'tests' => [qw(
versionless-any-01
+ doc-pgr_version
)],
'documentation' => [qw(
+ doc-pgr_version
)],
'dummyStorage' => [qw(
diff --git a/src/common/test/versionless-any-01.result b/src/common/test/versionless-any-01.result
index dab5e3a..92e0b66 100644
--- a/src/common/test/versionless-any-01.result
+++ b/src/common/test/versionless-any-01.result
@@ -1,61 +1,395 @@
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-t
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
-f
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+select _pgr_versionless('2.1.0foobar23', '2.1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0foobar23', '2.1-rc1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0foobar23', '2.1-beta');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0foobar23', '2.1-alpha');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0foobar23', '2.1-dev');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0foobar23', '2.1rc1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0foobar23', '2.1beta');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0foobar23', '2.1alpha');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0foobar23', '2.1dev');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-dev', '2.1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-dev', '2.1-rc1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-dev', '2.1-beta');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-dev', '2.1-alpha');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-dev', '2.1rc1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-dev', '2.1beta');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-dev', '2.1alpha');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-alpha', '2.1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-alpha', '2.1-rc1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-alpha', '2.1-beta');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-alpha', '2.1rc1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-alpha', '2.1beta');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-beta', '2.1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-beta', '2.1-rc1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1.0-beta', '2.1rc1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.0.0', '2.1');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1', '2.1.3');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('1.05', '2.0.0');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('1.05', '2.0');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('1.05', '2');
+ _pgr_versionless
+------------------
+ t
+(1 row)
+
+select _pgr_versionless('2.1', '2.1.0foobar23');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1-rc1', '2.1.0foobar23');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1-beta', '2.1.0foobar23');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1-alpha', '2.1.0foobar23');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1-dev', '2.1.0foobar23');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1rc1', '2.1.0foobar23');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1beta', '2.1.0foobar23');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1alpha', '2.1.0foobar23');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1dev', '2.1.0foobar23');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1', '2.1.0-dev');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1-rc1', '2.1.0-dev');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1-beta', '2.1.0-dev');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1-alpha', '2.1.0-dev');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1rc1', '2.1.0-dev');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1beta', '2.1.0-dev');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1alpha', '2.1.0-dev');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1', '2.1.0-alpha');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1-rc1', '2.1.0-alpha');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1-beta', '2.1.0-alpha');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1rc1', '2.1.0-alpha');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1beta', '2.1.0-alpha');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1', '2.1.0-beta');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1-rc1', '2.1.0-beta');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1rc1', '2.1.0-beta');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1', '2.0.0');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1.3', '2.1');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.0.0', '1.05');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.0', '1.05');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2', '1.05');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2', '2.0.0foobar');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1', '2.1.0');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+select _pgr_versionless('2.1.0beta3dev', '2.1.0beta1dev');
+ _pgr_versionless
+------------------
+ f
+(1 row)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/components/src/CMakeLists.txt b/src/components/src/CMakeLists.txt
new file mode 100644
index 0000000..b6d7b31
--- /dev/null
+++ b/src/components/src/CMakeLists.txt
@@ -0,0 +1,12 @@
+ADD_LIBRARY(components OBJECT
+ connectedComponents.c
+ strongComponents.c
+ biconnectedComponents.c
+ articulationPoints.c
+ bridges.c
+
+ connectedComponents_driver.cpp
+ strongComponents_driver.cpp
+ biconnectedComponents_driver.cpp
+ articulationPoints_driver.cpp
+ bridges_driver.cpp)
diff --git a/src/components/src/articulationPoints.c b/src/components/src/articulationPoints.c
new file mode 100644
index 0000000..45e24a5
--- /dev/null
+++ b/src/components/src/articulationPoints.c
@@ -0,0 +1,251 @@
+/*PGR-GNU*****************************************************************
+File: articulationPoints.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/** @file articulationPoints.c
+ * @brief Connecting code with postgres.
+ *
+ * This file is fully documented for understanding
+ * how the postgres connectinon works
+ *
+ * TODO Remove unnecessary comments before submiting the function.
+ * some comments are in form of PGR_DBG message
+ */
+
+/**
+ * postgres_connection.h
+ *
+ * - should always be first in the C code
+ */
+#include "c_common/postgres_connection.h"
+
+
+/* for macro PGR_DBG */
+#include "c_common/debug_macro.h"
+/* for pgr_global_report */
+#include "c_common/e_report.h"
+/* for time_msg & clock */
+#include "c_common/time_msg.h"
+/* for functions to get edges information */
+#include "c_common/edges_input.h"
+
+#include "drivers/components/articulationPoints_driver.h" // the link to the C++ code of the function
+
+PGDLLEXPORT Datum articulationPoints(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(articulationPoints);
+
+
+/******************************************************************************/
+/* MODIFY AS NEEDED */
+static
+void
+process(
+ char* edges_sql,
+ pgr_components_rt **result_tuples,
+ size_t *result_count) {
+ /*
+ * https://www.postgresql.org/docs/current/static/spi-spi-connect.html
+ */
+ pgr_SPI_connect();
+
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+
+ PGR_DBG("Load data");
+ pgr_edge_t *edges = NULL;
+ size_t total_edges = 0;
+
+ pgr_get_edges(edges_sql, &edges, &total_edges);
+ PGR_DBG("Total %ld edges in query:", total_edges);
+
+ if (total_edges == 0) {
+ PGR_DBG("No edges found");
+ pgr_SPI_finish();
+ return;
+ }
+
+ PGR_DBG("Starting processing");
+ clock_t start_t = clock();
+ char *log_msg = NULL;
+ char *notice_msg = NULL;
+ char *err_msg = NULL;
+ do_pgr_articulationPoints(
+ edges,
+ total_edges,
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ start_vidsArr, size_start_vidsArr,
+ end_vidsArr, size_end_vidsArr,
+#endif
+
+ result_tuples,
+ result_count,
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ time_msg(" processing pgr_articulationPoints", start_t, clock());
+ PGR_DBG("Returning %ld tuples", *result_count);
+
+ if (err_msg) {
+ if (*result_tuples) pfree(*result_tuples);
+ }
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (edges) pfree(edges);
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ if (end_vidsArr) pfree(end_vidsArr);
+ if (start_vidsArr) pfree(start_vidsArr);
+#endif
+
+ pgr_SPI_finish();
+}
+/* */
+/******************************************************************************/
+
+PGDLLEXPORT Datum articulationPoints(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**************************************************************************/
+ /* MODIFY AS NEEDED */
+ /* */
+ pgr_components_rt *result_tuples = NULL;
+ size_t result_count = 0;
+ /* */
+ /**************************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ TEXT,
+ BIGINT,
+ BIGINT,
+ **********************************************************************/
+
+
+ PGR_DBG("Calling process");
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
+#endif
+ &result_tuples,
+ &result_count);
+
+ /* */
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 94
+ funcctx->max_calls = (uint32_t)result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (pgr_components_rt*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ OUT seq INTEGER,
+ OUT component BIGINT,
+ OUT n_seq INTEGER,
+ OUT node BIGINT
+ ***********************************************************************/
+
+ values = palloc(2 * sizeof(Datum));
+ nulls = palloc(2 * sizeof(bool));
+
+
+ size_t i;
+ for (i = 0; i < 2; ++i) {
+ nulls[i] = false;
+ }
+
+ // postgres starts counting from 1
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int64GetDatum(result_tuples[funcctx->call_cntr].identifier);
+ /**********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+
+ PGR_DBG("Clean up code");
+
+ /**********************************************************************/
+
+ SRF_RETURN_DONE(funcctx);
+ }
+}
+
diff --git a/src/components/src/articulationPoints_driver.cpp b/src/components/src/articulationPoints_driver.cpp
new file mode 100644
index 0000000..09fb418
--- /dev/null
+++ b/src/components/src/articulationPoints_driver.cpp
@@ -0,0 +1,135 @@
+/*PGR-GNU*****************************************************************
+File: articulationPoints_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/components/articulationPoints_driver.h"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+
+#include "components/pgr_components.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+
+
+
+
+/************************************************************
+ TEXT,
+ BIGINT,
+ BIGINT,
+ ***********************************************************/
+
+template < class G >
+static
+std::vector<pgr_components_rt>
+pgr_articulationPoints(
+ G &graph) {
+ std::vector<pgr_components_rt> results;
+ Pgr_components< G > fn_components;
+ return fn_components.articulationPoints(graph);
+}
+
+
+void
+do_pgr_articulationPoints(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ pgr_components_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg) {
+ std::ostringstream log;
+ std::ostringstream err;
+ std::ostringstream notice;
+ try {
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert(*return_count == 0);
+ pgassert(total_edges != 0);
+
+ graphType gType = UNDIRECTED;
+
+ std::vector<pgr_components_rt> results;
+
+ log << "Working with Undirected Graph\n";
+ pgrouting::ComponentsUndiGraph undigraph(gType);
+ undigraph.insert_edges(data_edges, total_edges);
+ results = pgr_articulationPoints(
+ undigraph);
+
+ auto count = results.size();
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found between start_vid and end_vid vertices";
+ return;
+ }
+
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ for (size_t i = 0; i < count; i++) {
+ *((*return_tuples) + i) = results[i];
+ }
+ (*return_count) = count;
+
+ pgassert(*err_msg == NULL);
+ *log_msg = log.str().empty()?
+ *log_msg :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
+
diff --git a/src/components/src/biconnectedComponents.c b/src/components/src/biconnectedComponents.c
new file mode 100644
index 0000000..95d8874
--- /dev/null
+++ b/src/components/src/biconnectedComponents.c
@@ -0,0 +1,253 @@
+/*PGR-GNU*****************************************************************
+File: biconnectedComponents.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/** @file biconnectedComponents.c
+ * @brief Connecting code with postgres.
+ *
+ * This file is fully documented for understanding
+ * how the postgres connectinon works
+ *
+ * TODO Remove unnecessary comments before submiting the function.
+ * some comments are in form of PGR_DBG message
+ */
+
+/**
+ * postgres_connection.h
+ *
+ * - should always be first in the C code
+ */
+#include "c_common/postgres_connection.h"
+
+
+/* for macro PGR_DBG */
+#include "c_common/debug_macro.h"
+/* for pgr_global_report */
+#include "c_common/e_report.h"
+/* for time_msg & clock */
+#include "c_common/time_msg.h"
+/* for functions to get edges information */
+#include "c_common/edges_input.h"
+
+#include "drivers/components/biconnectedComponents_driver.h" // the link to the C++ code of the function
+
+PGDLLEXPORT Datum biconnectedComponents(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(biconnectedComponents);
+
+
+/******************************************************************************/
+/* MODIFY AS NEEDED */
+static
+void
+process(
+ char* edges_sql,
+ pgr_components_rt **result_tuples,
+ size_t *result_count) {
+ /*
+ * https://www.postgresql.org/docs/current/static/spi-spi-connect.html
+ */
+ pgr_SPI_connect();
+
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+
+ PGR_DBG("Load data");
+ pgr_edge_t *edges = NULL;
+ size_t total_edges = 0;
+
+ pgr_get_edges(edges_sql, &edges, &total_edges);
+ PGR_DBG("Total %ld edges in query:", total_edges);
+
+ if (total_edges == 0) {
+ PGR_DBG("No edges found");
+ pgr_SPI_finish();
+ return;
+ }
+
+ PGR_DBG("Starting processing");
+ clock_t start_t = clock();
+ char *log_msg = NULL;
+ char *notice_msg = NULL;
+ char *err_msg = NULL;
+ do_pgr_biconnectedComponents(
+ edges,
+ total_edges,
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ start_vidsArr, size_start_vidsArr,
+ end_vidsArr, size_end_vidsArr,
+#endif
+
+ result_tuples,
+ result_count,
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ time_msg(" processing pgr_biconnectedComponents", start_t, clock());
+ PGR_DBG("Returning %ld tuples", *result_count);
+
+ if (err_msg) {
+ if (*result_tuples) pfree(*result_tuples);
+ }
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (edges) pfree(edges);
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ if (end_vidsArr) pfree(end_vidsArr);
+ if (start_vidsArr) pfree(start_vidsArr);
+#endif
+
+ pgr_SPI_finish();
+}
+/* */
+/******************************************************************************/
+
+PGDLLEXPORT Datum biconnectedComponents(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**************************************************************************/
+ /* MODIFY AS NEEDED */
+ /* */
+ pgr_components_rt *result_tuples = NULL;
+ size_t result_count = 0;
+ /* */
+ /**************************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ TEXT,
+ BIGINT,
+ BIGINT,
+ **********************************************************************/
+
+
+ PGR_DBG("Calling process");
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
+#endif
+ &result_tuples,
+ &result_count);
+
+ /* */
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 94
+ funcctx->max_calls = (uint32_t)result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (pgr_components_rt*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ OUT seq INTEGER,
+ OUT component BIGINT,
+ OUT n_seq INTEGER,
+ OUT node BIGINT
+ ***********************************************************************/
+
+ values = palloc(6 * sizeof(Datum));
+ nulls = palloc(6 * sizeof(bool));
+
+
+ size_t i;
+ for (i = 0; i < 6; ++i) {
+ nulls[i] = false;
+ }
+
+ // postgres starts counting from 1
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int64GetDatum(result_tuples[funcctx->call_cntr].component);
+ values[2] = Int32GetDatum(result_tuples[funcctx->call_cntr].n_seq);
+ values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].identifier);
+ /**********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+
+ PGR_DBG("Clean up code");
+
+ /**********************************************************************/
+
+ SRF_RETURN_DONE(funcctx);
+ }
+}
+
diff --git a/src/components/src/biconnectedComponents_driver.cpp b/src/components/src/biconnectedComponents_driver.cpp
new file mode 100644
index 0000000..4c7b2c7
--- /dev/null
+++ b/src/components/src/biconnectedComponents_driver.cpp
@@ -0,0 +1,135 @@
+/*PGR-GNU*****************************************************************
+File: biconnectedComponents_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/components/biconnectedComponents_driver.h"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+
+#include "components/pgr_components.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+
+
+
+
+/************************************************************
+ TEXT,
+ BIGINT,
+ BIGINT,
+ ***********************************************************/
+
+template < class G >
+static
+std::vector<pgr_components_rt>
+pgr_biconnectedComponents(
+ G &graph) {
+ std::vector<pgr_components_rt> results;
+ Pgr_components< G > fn_components;
+ return fn_components.biconnectedComponents(graph);
+}
+
+
+void
+do_pgr_biconnectedComponents(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ pgr_components_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg) {
+ std::ostringstream log;
+ std::ostringstream err;
+ std::ostringstream notice;
+ try {
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert(*return_count == 0);
+ pgassert(total_edges != 0);
+
+ graphType gType = DIRECTED;
+
+ std::vector<pgr_components_rt> results;
+
+ log << "Working with Undirected Graph\n";
+ pgrouting::ComponentsUndiGraph undigraph(gType);
+ undigraph.insert_edges(data_edges, total_edges);
+ results = pgr_biconnectedComponents(
+ undigraph);
+
+ auto count = results.size();
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found between start_vid and end_vid vertices";
+ return;
+ }
+
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ for (size_t i = 0; i < count; i++) {
+ *((*return_tuples) + i) = results[i];
+ }
+ (*return_count) = count;
+
+ pgassert(*err_msg == NULL);
+ *log_msg = log.str().empty()?
+ *log_msg :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
+
diff --git a/src/components/src/bridges.c b/src/components/src/bridges.c
new file mode 100644
index 0000000..e53a480
--- /dev/null
+++ b/src/components/src/bridges.c
@@ -0,0 +1,251 @@
+/*PGR-GNU*****************************************************************
+File: bridges.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/** @file bridges.c
+ * @brief Connecting code with postgres.
+ *
+ * This file is fully documented for understanding
+ * how the postgres connectinon works
+ *
+ * TODO Remove unnecessary comments before submiting the function.
+ * some comments are in form of PGR_DBG message
+ */
+
+/**
+ * postgres_connection.h
+ *
+ * - should always be first in the C code
+ */
+#include "c_common/postgres_connection.h"
+
+
+/* for macro PGR_DBG */
+#include "c_common/debug_macro.h"
+/* for pgr_global_report */
+#include "c_common/e_report.h"
+/* for time_msg & clock */
+#include "c_common/time_msg.h"
+/* for functions to get edges information */
+#include "c_common/edges_input.h"
+
+#include "drivers/components/bridges_driver.h" // the link to the C++ code of the function
+
+PGDLLEXPORT Datum bridges(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(bridges);
+
+
+/******************************************************************************/
+/* MODIFY AS NEEDED */
+static
+void
+process(
+ char* edges_sql,
+ pgr_components_rt **result_tuples,
+ size_t *result_count) {
+ /*
+ * https://www.postgresql.org/docs/current/static/spi-spi-connect.html
+ */
+ pgr_SPI_connect();
+
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+
+ PGR_DBG("Load data");
+ pgr_edge_t *edges = NULL;
+ size_t total_edges = 0;
+
+ pgr_get_edges(edges_sql, &edges, &total_edges);
+ PGR_DBG("Total %ld edges in query:", total_edges);
+
+ if (total_edges == 0) {
+ PGR_DBG("No edges found");
+ pgr_SPI_finish();
+ return;
+ }
+
+ PGR_DBG("Starting processing");
+ clock_t start_t = clock();
+ char *log_msg = NULL;
+ char *notice_msg = NULL;
+ char *err_msg = NULL;
+ do_pgr_bridges(
+ edges,
+ total_edges,
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ start_vidsArr, size_start_vidsArr,
+ end_vidsArr, size_end_vidsArr,
+#endif
+
+ result_tuples,
+ result_count,
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ time_msg(" processing pgr_bridges", start_t, clock());
+ PGR_DBG("Returning %ld tuples", *result_count);
+
+ if (err_msg) {
+ if (*result_tuples) pfree(*result_tuples);
+ }
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (edges) pfree(edges);
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ if (end_vidsArr) pfree(end_vidsArr);
+ if (start_vidsArr) pfree(start_vidsArr);
+#endif
+
+ pgr_SPI_finish();
+}
+/* */
+/******************************************************************************/
+
+PGDLLEXPORT Datum bridges(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**************************************************************************/
+ /* MODIFY AS NEEDED */
+ /* */
+ pgr_components_rt *result_tuples = NULL;
+ size_t result_count = 0;
+ /* */
+ /**************************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ TEXT,
+ BIGINT,
+ BIGINT,
+ **********************************************************************/
+
+
+ PGR_DBG("Calling process");
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
+#endif
+ &result_tuples,
+ &result_count);
+
+ /* */
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 94
+ funcctx->max_calls = (uint32_t)result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (pgr_components_rt*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ OUT seq INTEGER,
+ OUT component BIGINT,
+ OUT n_seq INTEGER,
+ OUT node BIGINT
+ ***********************************************************************/
+
+ values = palloc(2 * sizeof(Datum));
+ nulls = palloc(2 * sizeof(bool));
+
+
+ size_t i;
+ for (i = 0; i < 2; ++i) {
+ nulls[i] = false;
+ }
+
+ // postgres starts counting from 1
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int64GetDatum(result_tuples[funcctx->call_cntr].identifier);
+ /*********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+
+ PGR_DBG("Clean up code");
+
+ /**********************************************************************/
+
+ SRF_RETURN_DONE(funcctx);
+ }
+}
+
diff --git a/src/components/src/bridges_driver.cpp b/src/components/src/bridges_driver.cpp
new file mode 100644
index 0000000..96d192c
--- /dev/null
+++ b/src/components/src/bridges_driver.cpp
@@ -0,0 +1,135 @@
+/*PGR-GNU*****************************************************************
+File: bridges_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/components/bridges_driver.h"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+
+#include "components/pgr_components.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+
+
+
+
+/************************************************************
+ TEXT,
+ BIGINT,
+ BIGINT,
+ ***********************************************************/
+
+template < class G >
+static
+std::vector<pgr_components_rt>
+pgr_bridges(
+ G &graph) {
+ std::vector<pgr_components_rt> results;
+ Pgr_components< G > fn_components;
+ return fn_components.bridges(graph);
+}
+
+
+void
+do_pgr_bridges(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ pgr_components_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg) {
+ std::ostringstream log;
+ std::ostringstream err;
+ std::ostringstream notice;
+ try {
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert(*return_count == 0);
+ pgassert(total_edges != 0);
+
+ graphType gType = UNDIRECTED;
+
+ std::vector<pgr_components_rt> results;
+
+ log << "Working with Undirected Graph\n";
+ pgrouting::ComponentsUndiGraph undigraph(gType);
+ undigraph.insert_edges(data_edges, total_edges);
+ results = pgr_bridges(
+ undigraph);
+
+ auto count = results.size();
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found between start_vid and end_vid vertices";
+ return;
+ }
+
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ for (size_t i = 0; i < count; i++) {
+ *((*return_tuples) + i) = results[i];
+ }
+ (*return_count) = count;
+
+ pgassert(*err_msg == NULL);
+ *log_msg = log.str().empty()?
+ *log_msg :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
+
diff --git a/src/components/src/connectedComponents.c b/src/components/src/connectedComponents.c
new file mode 100644
index 0000000..990fbda
--- /dev/null
+++ b/src/components/src/connectedComponents.c
@@ -0,0 +1,253 @@
+/*PGR-GNU*****************************************************************
+File: connectedComponents.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/** @file connectedComponents.c
+ * @brief Connecting code with postgres.
+ *
+ * This file is fully documented for understanding
+ * how the postgres connectinon works
+ *
+ * TODO Remove unnecessary comments before submiting the function.
+ * some comments are in form of PGR_DBG message
+ */
+
+/**
+ * postgres_connection.h
+ *
+ * - should always be first in the C code
+ */
+#include "c_common/postgres_connection.h"
+
+
+/* for macro PGR_DBG */
+#include "c_common/debug_macro.h"
+/* for pgr_global_report */
+#include "c_common/e_report.h"
+/* for time_msg & clock */
+#include "c_common/time_msg.h"
+/* for functions to get edges information */
+#include "c_common/edges_input.h"
+
+#include "drivers/components/connectedComponents_driver.h" // the link to the C++ code of the function
+
+PGDLLEXPORT Datum connectedComponents(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(connectedComponents);
+
+
+/******************************************************************************/
+/* MODIFY AS NEEDED */
+static
+void
+process(
+ char* edges_sql,
+ pgr_components_rt **result_tuples,
+ size_t *result_count) {
+ /*
+ * https://www.postgresql.org/docs/current/static/spi-spi-connect.html
+ */
+ pgr_SPI_connect();
+
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+
+ PGR_DBG("Load data");
+ pgr_edge_t *edges = NULL;
+ size_t total_edges = 0;
+
+ pgr_get_edges(edges_sql, &edges, &total_edges);
+ PGR_DBG("Total %ld edges in query:", total_edges);
+
+ if (total_edges == 0) {
+ PGR_DBG("No edges found");
+ pgr_SPI_finish();
+ return;
+ }
+
+ PGR_DBG("Starting processing");
+ clock_t start_t = clock();
+ char *log_msg = NULL;
+ char *notice_msg = NULL;
+ char *err_msg = NULL;
+ do_pgr_connectedComponents(
+ edges,
+ total_edges,
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ start_vidsArr, size_start_vidsArr,
+ end_vidsArr, size_end_vidsArr,
+#endif
+
+ result_tuples,
+ result_count,
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ time_msg(" processing pgr_connectedComponents", start_t, clock());
+ PGR_DBG("Returning %ld tuples", *result_count);
+
+ if (err_msg) {
+ if (*result_tuples) pfree(*result_tuples);
+ }
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (edges) pfree(edges);
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ if (end_vidsArr) pfree(end_vidsArr);
+ if (start_vidsArr) pfree(start_vidsArr);
+#endif
+
+ pgr_SPI_finish();
+}
+/* */
+/******************************************************************************/
+
+PGDLLEXPORT Datum connectedComponents(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**************************************************************************/
+ /* MODIFY AS NEEDED */
+ /* */
+ pgr_components_rt *result_tuples = NULL;
+ size_t result_count = 0;
+ /* */
+ /**************************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ TEXT,
+ BIGINT,
+ BIGINT,
+ **********************************************************************/
+
+
+ PGR_DBG("Calling process");
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
+#endif
+ &result_tuples,
+ &result_count);
+
+ /* */
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 94
+ funcctx->max_calls = (uint32_t)result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (pgr_components_rt*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ OUT seq INTEGER,
+ OUT component BIGINT,
+ OUT n_seq INTEGER,
+ OUT node BIGINT
+ ***********************************************************************/
+
+ values = palloc(6 * sizeof(Datum));
+ nulls = palloc(6 * sizeof(bool));
+
+
+ size_t i;
+ for (i = 0; i < 6; ++i) {
+ nulls[i] = false;
+ }
+
+ // postgres starts counting from 1
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int64GetDatum(result_tuples[funcctx->call_cntr].component);
+ values[2] = Int32GetDatum(result_tuples[funcctx->call_cntr].n_seq);
+ values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].identifier);
+ /**********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+
+ PGR_DBG("Clean up code");
+
+ /**********************************************************************/
+
+ SRF_RETURN_DONE(funcctx);
+ }
+}
+
diff --git a/src/components/src/connectedComponents_driver.cpp b/src/components/src/connectedComponents_driver.cpp
new file mode 100644
index 0000000..0c688e0
--- /dev/null
+++ b/src/components/src/connectedComponents_driver.cpp
@@ -0,0 +1,135 @@
+/*PGR-GNU*****************************************************************
+File: connectedComponents_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/components/connectedComponents_driver.h"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+
+#include "components/pgr_components.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+
+
+
+
+/************************************************************
+ TEXT,
+ BIGINT,
+ BIGINT,
+ ***********************************************************/
+
+template < class G >
+static
+std::vector<pgr_components_rt>
+pgr_connectedComponents(
+ G &graph) {
+ std::vector<pgr_components_rt> results;
+ Pgr_components< G > fn_components;
+ return fn_components.connectedComponents(graph);
+}
+
+
+void
+do_pgr_connectedComponents(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ pgr_components_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg) {
+ std::ostringstream log;
+ std::ostringstream err;
+ std::ostringstream notice;
+ try {
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert(*return_count == 0);
+ pgassert(total_edges != 0);
+
+ graphType gType = UNDIRECTED;
+
+ std::vector<pgr_components_rt> results;
+
+ log << "Working with Undirected Graph\n";
+ pgrouting::ComponentsUndiGraph undigraph(gType);
+ undigraph.insert_edges(data_edges, total_edges);
+ results = pgr_connectedComponents(
+ undigraph);
+
+ auto count = results.size();
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found between start_vid and end_vid vertices";
+ return;
+ }
+
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ for (size_t i = 0; i < count; i++) {
+ *((*return_tuples) + i) = results[i];
+ }
+ (*return_count) = count;
+
+ pgassert(*err_msg == NULL);
+ *log_msg = log.str().empty()?
+ *log_msg :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
+
diff --git a/src/components/src/strongComponents.c b/src/components/src/strongComponents.c
new file mode 100644
index 0000000..ac615a4
--- /dev/null
+++ b/src/components/src/strongComponents.c
@@ -0,0 +1,253 @@
+/*PGR-GNU*****************************************************************
+File: strongComponents.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/** @file strongComponents.c
+ * @brief Connecting code with postgres.
+ *
+ * This file is fully documented for understanding
+ * how the postgres connectinon works
+ *
+ * TODO Remove unnecessary comments before submiting the function.
+ * some comments are in form of PGR_DBG message
+ */
+
+/**
+ * postgres_connection.h
+ *
+ * - should always be first in the C code
+ */
+#include "c_common/postgres_connection.h"
+
+
+/* for macro PGR_DBG */
+#include "c_common/debug_macro.h"
+/* for pgr_global_report */
+#include "c_common/e_report.h"
+/* for time_msg & clock */
+#include "c_common/time_msg.h"
+/* for functions to get edges information */
+#include "c_common/edges_input.h"
+
+#include "drivers/components/strongComponents_driver.h" // the link to the C++ code of the function
+
+PGDLLEXPORT Datum strongComponents(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(strongComponents);
+
+
+/******************************************************************************/
+/* MODIFY AS NEEDED */
+static
+void
+process(
+ char* edges_sql,
+ pgr_components_rt **result_tuples,
+ size_t *result_count) {
+ /*
+ * https://www.postgresql.org/docs/current/static/spi-spi-connect.html
+ */
+ pgr_SPI_connect();
+
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+
+ PGR_DBG("Load data");
+ pgr_edge_t *edges = NULL;
+ size_t total_edges = 0;
+
+ pgr_get_edges(edges_sql, &edges, &total_edges);
+ PGR_DBG("Total %ld edges in query:", total_edges);
+
+ if (total_edges == 0) {
+ PGR_DBG("No edges found");
+ pgr_SPI_finish();
+ return;
+ }
+
+ PGR_DBG("Starting processing");
+ clock_t start_t = clock();
+ char *log_msg = NULL;
+ char *notice_msg = NULL;
+ char *err_msg = NULL;
+ do_pgr_strongComponents(
+ edges,
+ total_edges,
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ start_vidsArr, size_start_vidsArr,
+ end_vidsArr, size_end_vidsArr,
+#endif
+
+ result_tuples,
+ result_count,
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ time_msg(" processing pgr_strongComponents", start_t, clock());
+ PGR_DBG("Returning %ld tuples", *result_count);
+
+ if (err_msg) {
+ if (*result_tuples) pfree(*result_tuples);
+ }
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (edges) pfree(edges);
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ if (end_vidsArr) pfree(end_vidsArr);
+ if (start_vidsArr) pfree(start_vidsArr);
+#endif
+
+ pgr_SPI_finish();
+}
+/* */
+/******************************************************************************/
+
+PGDLLEXPORT Datum strongComponents(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**************************************************************************/
+ /* MODIFY AS NEEDED */
+ /* */
+ pgr_components_rt *result_tuples = NULL;
+ size_t result_count = 0;
+ /* */
+ /**************************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ TEXT,
+ BIGINT,
+ BIGINT,
+ **********************************************************************/
+
+
+ PGR_DBG("Calling process");
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+#if 0
+ /*
+ * handling arrays example
+ */
+
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
+#endif
+ &result_tuples,
+ &result_count);
+
+ /* */
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 94
+ funcctx->max_calls = (uint32_t)result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (pgr_components_rt*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ OUT seq INTEGER,
+ OUT component BIGINT,
+ OUT n_seq INTEGER,
+ OUT node BIGINT
+ ***********************************************************************/
+
+ values = palloc(6 * sizeof(Datum));
+ nulls = palloc(6 * sizeof(bool));
+
+
+ size_t i;
+ for (i = 0; i < 6; ++i) {
+ nulls[i] = false;
+ }
+
+ // postgres starts counting from 1
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int64GetDatum(result_tuples[funcctx->call_cntr].component);
+ values[2] = Int32GetDatum(result_tuples[funcctx->call_cntr].n_seq);
+ values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].identifier);
+ /**********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+
+ PGR_DBG("Clean up code");
+
+ /**********************************************************************/
+
+ SRF_RETURN_DONE(funcctx);
+ }
+}
+
diff --git a/src/components/src/strongComponents_driver.cpp b/src/components/src/strongComponents_driver.cpp
new file mode 100644
index 0000000..51a9565
--- /dev/null
+++ b/src/components/src/strongComponents_driver.cpp
@@ -0,0 +1,135 @@
+/*PGR-GNU*****************************************************************
+File: strongComponents_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/components/strongComponents_driver.h"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+
+#include "components/pgr_components.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+
+
+
+
+/************************************************************
+ TEXT,
+ BIGINT,
+ BIGINT,
+ ***********************************************************/
+
+template < class G >
+static
+std::vector<pgr_components_rt>
+pgr_strongComponents(
+ G &graph) {
+ std::vector<pgr_components_rt> results;
+ Pgr_components< G > fn_components;
+ return fn_components.strongComponents(graph);
+}
+
+
+void
+do_pgr_strongComponents(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ pgr_components_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg) {
+ std::ostringstream log;
+ std::ostringstream err;
+ std::ostringstream notice;
+ try {
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert(*return_count == 0);
+ pgassert(total_edges != 0);
+
+ graphType gType = DIRECTED;
+
+ std::vector<pgr_components_rt> results;
+
+ log << "Working with Directed Graph\n";
+ pgrouting::DirectedGraph digraph(gType);
+ digraph.insert_edges(data_edges, total_edges);
+ results = pgr_strongComponents(
+ digraph);
+
+ auto count = results.size();
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found between start_vid and end_vid vertices";
+ return;
+ }
+
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ for (size_t i = 0; i < count; i++) {
+ *((*return_tuples) + i) = results[i];
+ }
+ (*return_count) = count;
+
+ pgassert(*err_msg == NULL);
+ *log_msg = log.str().empty()?
+ *log_msg :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
+
diff --git a/src/components/test/doc-pgr_articulationPoints.result b/src/components/test/doc-pgr_articulationPoints.result
new file mode 100644
index 0000000..4bbe0b6
--- /dev/null
+++ b/src/components/test/doc-pgr_articulationPoints.result
@@ -0,0 +1,30 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_articulationPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | node
+-----+------
+ 1 | 2
+ 2 | 5
+ 3 | 8
+ 4 | 10
+(4 rows)
+
+-- q2
+SELECT * FROM pgr_articulationPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | node
+-----+------
+ 1 | 2
+ 2 | 5
+ 3 | 8
+ 4 | 10
+(4 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/components/test/doc-pgr_articulationPoints.test.sql b/src/components/test/doc-pgr_articulationPoints.test.sql
new file mode 100644
index 0000000..704c13b
--- /dev/null
+++ b/src/components/test/doc-pgr_articulationPoints.test.sql
@@ -0,0 +1,10 @@
+
+\echo -- q1
+SELECT * FROM pgr_articulationPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+
+\echo -- q2
+SELECT * FROM pgr_articulationPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
diff --git a/src/components/test/doc-pgr_biconnectedComponents.result b/src/components/test/doc-pgr_biconnectedComponents.result
new file mode 100644
index 0000000..afaa41c
--- /dev/null
+++ b/src/components/test/doc-pgr_biconnectedComponents.result
@@ -0,0 +1,58 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_biconnectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | edge
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 2 | 1 | 2
+ 3 | 2 | 2 | 3
+ 4 | 2 | 3 | 4
+ 5 | 2 | 4 | 5
+ 6 | 2 | 5 | 8
+ 7 | 2 | 6 | 9
+ 8 | 2 | 7 | 10
+ 9 | 2 | 8 | 11
+ 10 | 2 | 9 | 12
+ 11 | 2 | 10 | 13
+ 12 | 2 | 11 | 15
+ 13 | 2 | 12 | 16
+ 14 | 6 | 1 | 6
+ 15 | 7 | 1 | 7
+ 16 | 14 | 1 | 14
+ 17 | 17 | 1 | 17
+ 18 | 18 | 1 | 18
+(18 rows)
+
+-- q2
+SELECT * FROM pgr_biconnectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | edge
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 2 | 1 | 2
+ 3 | 2 | 2 | 3
+ 4 | 2 | 3 | 4
+ 5 | 2 | 4 | 5
+ 6 | 2 | 5 | 8
+ 7 | 2 | 6 | 9
+ 8 | 2 | 7 | 10
+ 9 | 2 | 8 | 11
+ 10 | 2 | 9 | 12
+ 11 | 2 | 10 | 13
+ 12 | 2 | 11 | 15
+ 13 | 2 | 12 | 16
+ 14 | 6 | 1 | 6
+ 15 | 7 | 1 | 7
+ 16 | 14 | 1 | 14
+ 17 | 17 | 1 | 17
+ 18 | 18 | 1 | 18
+(18 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/components/test/doc-pgr_biconnectedComponents.test.sql b/src/components/test/doc-pgr_biconnectedComponents.test.sql
new file mode 100644
index 0000000..afecf02
--- /dev/null
+++ b/src/components/test/doc-pgr_biconnectedComponents.test.sql
@@ -0,0 +1,10 @@
+
+\echo -- q1
+SELECT * FROM pgr_biconnectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+
+\echo -- q2
+SELECT * FROM pgr_biconnectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
diff --git a/src/components/test/doc-pgr_bridges.result b/src/components/test/doc-pgr_bridges.result
new file mode 100644
index 0000000..649046d
--- /dev/null
+++ b/src/components/test/doc-pgr_bridges.result
@@ -0,0 +1,34 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_bridges(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | edge
+-----+------
+ 1 | 1
+ 2 | 6
+ 3 | 7
+ 4 | 14
+ 5 | 17
+ 6 | 18
+(6 rows)
+
+-- q2
+SELECT * FROM pgr_bridges(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | edge
+-----+------
+ 1 | 1
+ 2 | 6
+ 3 | 7
+ 4 | 14
+ 5 | 17
+ 6 | 18
+(6 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/components/test/doc-pgr_bridges.test.sql b/src/components/test/doc-pgr_bridges.test.sql
new file mode 100644
index 0000000..1e514e9
--- /dev/null
+++ b/src/components/test/doc-pgr_bridges.test.sql
@@ -0,0 +1,10 @@
+
+\echo -- q1
+SELECT * FROM pgr_bridges(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+
+\echo -- q2
+SELECT * FROM pgr_bridges(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
diff --git a/src/components/test/doc-pgr_connectedComponents.result b/src/components/test/doc-pgr_connectedComponents.result
new file mode 100644
index 0000000..da041b1
--- /dev/null
+++ b/src/components/test/doc-pgr_connectedComponents.result
@@ -0,0 +1,56 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_connectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | node
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 2
+ 3 | 1 | 3 | 3
+ 4 | 1 | 4 | 4
+ 5 | 1 | 5 | 5
+ 6 | 1 | 6 | 6
+ 7 | 1 | 7 | 7
+ 8 | 1 | 8 | 8
+ 9 | 1 | 9 | 9
+ 10 | 1 | 10 | 10
+ 11 | 1 | 11 | 11
+ 12 | 1 | 12 | 12
+ 13 | 1 | 13 | 13
+ 14 | 14 | 1 | 14
+ 15 | 14 | 2 | 15
+ 16 | 16 | 1 | 16
+ 17 | 16 | 2 | 17
+(17 rows)
+
+-- q2
+SELECT * FROM pgr_connectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | node
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 2
+ 3 | 1 | 3 | 3
+ 4 | 1 | 4 | 4
+ 5 | 1 | 5 | 5
+ 6 | 1 | 6 | 6
+ 7 | 1 | 7 | 7
+ 8 | 1 | 8 | 8
+ 9 | 1 | 9 | 9
+ 10 | 1 | 10 | 10
+ 11 | 1 | 11 | 11
+ 12 | 1 | 12 | 12
+ 13 | 1 | 13 | 13
+ 14 | 14 | 1 | 14
+ 15 | 14 | 2 | 15
+ 16 | 16 | 1 | 16
+ 17 | 16 | 2 | 17
+(17 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/components/test/doc-pgr_connectedComponents.test.sql b/src/components/test/doc-pgr_connectedComponents.test.sql
new file mode 100644
index 0000000..bbef5d1
--- /dev/null
+++ b/src/components/test/doc-pgr_connectedComponents.test.sql
@@ -0,0 +1,10 @@
+
+\echo -- q1
+SELECT * FROM pgr_connectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+
+\echo -- q2
+SELECT * FROM pgr_connectedComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
diff --git a/src/components/test/doc-pgr_strongComponents.result b/src/components/test/doc-pgr_strongComponents.result
new file mode 100644
index 0000000..ad97903
--- /dev/null
+++ b/src/components/test/doc-pgr_strongComponents.result
@@ -0,0 +1,56 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_strongComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | node
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 2
+ 3 | 1 | 3 | 3
+ 4 | 1 | 4 | 4
+ 5 | 1 | 5 | 5
+ 6 | 1 | 6 | 6
+ 7 | 1 | 7 | 7
+ 8 | 1 | 8 | 8
+ 9 | 1 | 9 | 9
+ 10 | 1 | 10 | 10
+ 11 | 1 | 11 | 11
+ 12 | 1 | 12 | 12
+ 13 | 1 | 13 | 13
+ 14 | 14 | 1 | 14
+ 15 | 14 | 2 | 15
+ 16 | 16 | 1 | 16
+ 17 | 16 | 2 | 17
+(17 rows)
+
+-- q2
+SELECT * FROM pgr_strongComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | component | n_seq | node
+-----+-----------+-------+------
+ 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 2
+ 3 | 1 | 3 | 3
+ 4 | 1 | 4 | 4
+ 5 | 1 | 5 | 5
+ 6 | 1 | 6 | 6
+ 7 | 1 | 7 | 7
+ 8 | 1 | 8 | 8
+ 9 | 1 | 9 | 9
+ 10 | 1 | 10 | 10
+ 11 | 1 | 11 | 11
+ 12 | 1 | 12 | 12
+ 13 | 1 | 13 | 13
+ 14 | 14 | 1 | 14
+ 15 | 14 | 2 | 15
+ 16 | 16 | 1 | 16
+ 17 | 16 | 2 | 17
+(17 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/components/test/doc-pgr_strongComponents.test.sql b/src/components/test/doc-pgr_strongComponents.test.sql
new file mode 100644
index 0000000..963b0a3
--- /dev/null
+++ b/src/components/test/doc-pgr_strongComponents.test.sql
@@ -0,0 +1,10 @@
+
+\echo -- q1
+SELECT * FROM pgr_strongComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+
+\echo -- q2
+SELECT * FROM pgr_strongComponents(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
diff --git a/src/components/test/pgtap/connectedComponentsV-compare-dijkstra.sql b/src/components/test/pgtap/connectedComponentsV-compare-dijkstra.sql
new file mode 100644
index 0000000..a39d35c
--- /dev/null
+++ b/src/components/test/pgtap/connectedComponentsV-compare-dijkstra.sql
@@ -0,0 +1,73 @@
+\i setup.sql
+
+SELECT plan(1156);
+
+SET client_min_messages TO ERROR;
+
+UPDATE edge_table SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id;
+
+CREATE or REPLACE FUNCTION connectedcomponentsv_compare_dijkstra(cant INTEGER default 17)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+inner_sql TEXT;
+dijkstra_sql TEXT;
+connectedcomponentsv_sql TEXT;
+BEGIN
+
+ FOR i IN 1.. cant LOOP
+ FOR j IN 1.. cant LOOP
+
+ -- DIRECTED
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost FROM edge_table';
+ dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true)';
+
+ connectedcomponentsv_sql := 'SELECT * FROM pgr_connectedcomponentsv($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true)';
+ RETURN query SELECT set_eq(connectedcomponentsv_sql, dijkstra_sql, connectedcomponentsv_sql);
+
+
+ inner_sql := 'SELECT id, source, target, cost FROM edge_table';
+ dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true)';
+
+ connectedcomponentsv_sql := 'SELECT * FROM pgr_connectedcomponentsv($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true)';
+ RETURN query SELECT set_eq(connectedcomponentsv_sql, dijkstra_sql, connectedcomponentsv_sql);
+
+
+
+ -- UNDIRECTED
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost FROM edge_table';
+ dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false)';
+
+ connectedcomponentsv_sql := 'SELECT * FROM pgr_connectedcomponentsv($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false)';
+ RETURN query SELECT set_eq(connectedcomponentsv_sql, dijkstra_sql, connectedcomponentsv_sql);
+
+
+ inner_sql := 'SELECT id, source, target, cost FROM edge_table';
+ dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false)';
+
+ connectedcomponentsv_sql := 'SELECT * FROM pgr_connectedcomponentsv($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false)';
+ RETURN query SELECT set_eq(connectedcomponentsv_sql, dijkstra_sql, connectedcomponentsv_sql);
+
+
+ END LOOP;
+ END LOOP;
+
+ RETURN;
+END
+$BODY$
+language plpgsql;
+
+SELECT * from connectedcomponentsv_compare_dijkstra();
+
+
+SELECT * FROM finish();
+ROLLBACK;
+
diff --git a/src/components/test/pgtap/connectedComponentsV-innerQuery.sql b/src/components/test/pgtap/connectedComponentsV-innerQuery.sql
new file mode 100644
index 0000000..8d9af98
--- /dev/null
+++ b/src/components/test/pgtap/connectedComponentsV-innerQuery.sql
@@ -0,0 +1,21 @@
+\i setup.sql
+
+SELECT plan(137);
+SET client_min_messages TO ERROR;
+
+
+SELECT has_function('pgr_connectedcomponentsv',
+ ARRAY['text', 'bigint', 'bigint', 'boolean','boolean']);
+
+SELECT function_returns('pgr_connectedcomponentsv',
+ ARRAY['text', 'bigint', 'bigint', 'boolean','boolean'],
+ 'setof record');
+
+SELECT style_dijkstra('pgr_connectedcomponentsv', ', 2, 3)');
+SELECT style_dijkstra('pgr_connectedcomponentsv', ', 2, 3, true)');
+SELECT style_dijkstra('pgr_connectedcomponentsv', ', 2, 3, false)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/components/test/pgtap/connectedComponentsV-typesCheck.sql b/src/components/test/pgtap/connectedComponentsV-typesCheck.sql
new file mode 100644
index 0000000..6a6d339
--- /dev/null
+++ b/src/components/test/pgtap/connectedComponentsV-typesCheck.sql
@@ -0,0 +1,15 @@
+
+SELECT plan(4);
+
+SELECT has_function('pgr_connectedcomponentsv');
+
+SELECT has_function('pgr_connectedcomponentsv', ARRAY[ 'text', 'bigint', 'bigint', 'boolean', 'boolean' ]);
+
+SELECT function_returns('pgr_connectedcomponentsv', ARRAY[ 'text', 'bigint', 'bigint', 'boolean', 'boolean' ], 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_connectedcomponentsv'$$,
+ $$SELECT '{"","","","directed","only_cost","seq","path_seq","node","edge","cost","agg_cost"}'::TEXT[] $$
+);
+
diff --git a/src/components/test/test.conf b/src/components/test/test.conf
new file mode 100644
index 0000000..f891814
--- /dev/null
+++ b/src/components/test/test.conf
@@ -0,0 +1,25 @@
+#!/usr/bin/perl -w
+
+%main::tests = (
+ 'any' => {
+ 'comment' => 'Components test for any versions.',
+ 'data' => [ ],
+ 'tests' => [qw(
+ doc-pgr_connectedComponents
+ doc-pgr_strongComponents
+ doc-pgr_biconnectedComponents
+ doc-pgr_articulationPoints
+ doc-pgr_bridges
+ )],
+ 'documentation' => [qw(
+ doc-pgr_connectedComponents
+ doc-pgr_strongComponents
+ doc-pgr_biconnectedComponents
+ doc-pgr_articulationPoints
+ doc-pgr_bridges
+ )]
+ },
+
+);
+
+1;
diff --git a/src/contraction/doc/contraction-family.rst b/src/contraction/doc/contraction-family.rst
deleted file mode 100644
index 707d718..0000000
--- a/src/contraction/doc/contraction-family.rst
+++ /dev/null
@@ -1,527 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-
-.. _contraction:
-
-Contraction - Family of functions
-===============================================================================
-
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-:ref:`pgr_contractGraph`
-
-.. toctree::
- :hidden:
-
- pgr_contractGraph
-
-Introduction
--------------
-
-In big graphs, like the road graphs, or electric networks, graph contraction can be used to speed up some graph algorithms. Contraction reduces the size of the graph by removing some of the vertices and edges and, for example, might add edges that represent a sequence of original edges decreasing the total time and space used in graph algorithms.
-
-This implementation gives a flexible framework for adding contraction algorithms in the future, currently, it supports two algorithms:
-
- 1. Dead end contraction
- 2. Linear contraction
-
-Allowing the user to:
-
- - Forbid contraction on a set of nodes.
- - Decide the order of the contraction algorithms and set the maximum number of times they are to be executed.
-
-.. note:: UNDER DISCUSSION: Forbid contraction on a set of edges
-
-Dead end contraction
--------------------------------------------------------------------------------
-In the algorithm, dead end contraction is represented by 1.
-
-Dead end nodes
-......................
-
-The definition of a dead end node is different for a directed and an undirected graph.
-
-In case of a undirected graph, a node is considered a dead end node if
-
- - The number of adjacent vertices is 1.
-
-In case of an directed graph, a node is considered a dead end node if
-
- - There are no outgoing edges and has at least one incoming edge.
- - There is one incoming and one outgoing edge with the same identifier.
-
-.. rubric:: Examples
-
-- The green node ``B`` represents a dead end node
-- The node ``A`` is the only node connecting to ``B``.
-- Node ``A`` is part of the rest of the graph and has an unlimited number of incoming and outgoing edges.
-- Directed graph
-
-.. graphviz::
-
- digraph G {
- A [style=filled;color=deepskyblue];
- B [style=filled; color=green];
- "G" [shape=tripleoctagon;
- style=filled;color=deepskyblue;
- label = "Rest of the Graph"];
-
- rankdir=LR;
- G -> A [dir=none, weight=1, penwidth=3];
- A -> B;
- }
-
-
-Operation: Dead End Contraction
-.....................................
-
-The dead end contraction will stop until there are no more dead end nodes.
-For example from the following graph:
-
-- Node ``A`` is connected to the rest of the graph by an unlimited number of edges.
-- Node ``B`` is connected to the rest of the graph with one incoming edge.
-- Node ``B`` is the only node connecting to ``C``.
-- The green node ``C`` represents a `Dead End` node
-
-.. graphviz::
-
- digraph G {
- A [style=filled;color=deepskyblue];
- B [style=filled; color=deepskyblue];
- C [style=filled; color=green];
- "G" [shape=tripleoctagon;
- style=filled;color=deepskyblue;
- label = "Rest of the Graph"];
-
- rankdir=LR;
- G -> A [dir=none, weight=1, penwidth=3];
- A -> B;
- B -> C;
- }
-
-
-After contracting ``C``, node ``B`` is now a `Dead End` node and is contracted:
-
-.. graphviz::
-
- digraph G {
- A [style=filled;color=deepskyblue];
- B [style=filled; color=green;label="B {C}";];
- "G" [shape=tripleoctagon;
- style=filled;color=deepskyblue;
- label = "Rest of the Graph"];
-
- rankdir=LR;
- G -> A [dir=none, weight=1, penwidth=3];
- A -> B;
- }
-
-Node ``B`` gets contracted
-
-.. graphviz::
-
- digraph G {
- A [style=filled;color=deepskyblue;label="A {B, C}";];
- "G" [shape=tripleoctagon;
- style=filled;color=deepskyblue;
- label = "Rest of the Graph"];
-
- rankdir=LR;
- G -> A [dir=none, weight=1, penwidth=3];
- }
-
-Nodes ``B`` and ``C`` belong to node ``A``.
-
-
-
-Not Dead End nodes
-......................
-
-In this graph ``B`` is not a `dead end` node.
-
-.. graphviz::
-
- digraph G {
- A [style=filled;color=deepskyblue];
- B [style=filled; color=red];
- "G" [shape=tripleoctagon;
- style=filled;color=deepskyblue;
- label = "Rest of the Graph"];
-
- G -> A [dir=none, weight=1, penwidth=3];
- B -> A;
- }
-
-Linear contraction
--------------------------------------------------------------------------------
-In the algorithm, linear contraction is represented by 2.
-
-Linear nodes
-......................
-
-A node is considered a linear node if satisfies the following:
-
-- The number of adjacent vertices are 2.
-- Should have at least one incoming edge and one outgoing edge.
-
-.. rubric:: Examples
-
-- The green node ``B`` represents a linear node
-- The nodes ``A`` and ``C`` are the only nodes connecting to ``B``.
-- Node ``A`` is part of the rest of the graph and has an unlimited number of incoming and outgoing edges.
-- Node ``C`` is part of the rest of the graph and has an unlimited number of incoming and outgoing edges.
-- Directed graph
-
-.. graphviz::
-
- digraph G {
- A [style=filled;color=deepskyblue];
- B [style=filled; color=green];
- C [style=filled;color=deepskyblue];
- "G" [shape=tripleoctagon;
- style=filled;color=deepskyblue;
- label = "Rest of the Graph"];
-
- rankdir=LR;
- G -> A [dir=none, weight=1, penwidth=3];
- G -> C [dir=none, weight=1, penwidth=3];
- A -> B;
- B -> C;
- }
-
-Operation: Linear Contraction
-.....................................
-
-The linear contraction will stop until there are no more linear nodes.
-For example from the following graph:
-
-- Node ``A`` is connected to the rest of the graph by an unlimited number of edges.
-- Node ``B`` is connected to the rest of the graph with one incoming edge and one outgoing edge.
-- Node ``C`` is connected to the rest of the graph with one incoming edge and one outgoing edge.
-- Node ``D`` is connected to the rest of the graph by an unlimited number of edges.
-- The green nodes ``B`` and ``C`` represents `Linear` nodes.
-
-.. graphviz::
-
- digraph G {
- A [style=filled;color=deepskyblue];
- B [style=filled; color=green];
- C [style=filled; color=green];
- D [style=filled; color=deepskyblue];
- "G" [shape=tripleoctagon;
- style=filled;color=deepskyblue;
- label = "Rest of the Graph"];
-
- rankdir=LR;
- G -> A [dir=none, weight=1, penwidth=3];
- G -> D [dir=none, weight=1, penwidth=3];
- A -> B;
- B -> C;
- C -> D;
-
- }
-
-After contracting ``B``, a new edge gets inserted between ``A`` and ``C`` which is represented by red color.
-
-.. graphviz::
-
- digraph G {
- A [style=filled;color=deepskyblue];
- C [style=filled; color=green];
- D [style=filled; color=deepskyblue];
- "G" [shape=tripleoctagon;
- style=filled;color=deepskyblue;
- label = "Rest of the Graph"];
-
- rankdir=LR;
- G -> A [dir=none, weight=1, penwidth=3];
- G -> D [dir=none, weight=1, penwidth=3];
- A -> C [label="{B}";color=red]
- C -> D;
-
- }
-
-Node ``C`` is `linear node` and gets contracted.
-
-.. graphviz::
-
- digraph G {
- A [style=filled;color=deepskyblue];
- D [style=filled; color=deepskyblue];
- "G" [shape=tripleoctagon;
- style=filled;color=deepskyblue;
- label = "Rest of the Graph"];
-
- rankdir=LR;
- G -> A [dir=none, weight=1, penwidth=3];
- G -> D [dir=none, weight=1, penwidth=3];
- A -> D [label="{B, C}";color=red];
-
- }
-
-Nodes ``B`` and ``C`` belong to edge connecting ``A`` and ``D`` which is represented by red color.
-
-Not Linear nodes
-......................
-
-In this graph ``B`` is not a `linear` node.
-
-.. graphviz::
-
- digraph G {
- A [style=filled;color=deepskyblue];
- B [style=filled; color=red];
- C [style=filled;color=deepskyblue];
- "G" [shape=tripleoctagon;
- style=filled;color=deepskyblue;
- label = "Rest of the Graph"];
-
- rankdir=LR;
- G -> A [dir=none, weight=1, penwidth=3];
- G -> C [dir=none, weight=1, penwidth=3];
- A -> B;
- C -> B;
- }
-
-
-The cycle
----------
-
-Contracting a graph, can be done with more than one operation. The order of the operations affect the resulting contracted graph, after applying one operation, the set of vertices that can be contracted by another operation changes.
-
-This implementation, cycles ``max_cycles`` times through ``operations_order`` .
-
-.. code-block:: none
-
- <input>
- do max_cycles times {
- for (operation in operations_order)
- { do operation }
- }
- <output>
-
-
-Contracting Sample Data
--------------------------------------------------------------
-
-In this section, building and using a contracted graph will be shown by example.
-
-- The :ref:`sampledata` for an undirected graph is used
-- a dead end operation first followed by a linear operation.
-
-The original graph:
-
-.. image:: images/undirected_sampledata_a.png
-
-After doing a dead end contraction operation:
-
-.. image:: images/undirected_sampledata_b.png
-
-Doing a linear contraction operation to the graph above
-
-.. image:: images/undirected_sampledata_c.png
-
-
-There are five cases, in this documentation, which arise when calculating the shortest path between a given source and target.
-In this examples, ``pgr_dijkstra`` is used.
-
-- **Case 1**: Both source and target belong to the contracted graph.
-- **Case 2**: Source belongs to a contracted graph, while target belongs to a edge subgraph.
-- **Case 3**: Source belongs to a vertex subgraph, while target belongs to an edge subgraph.
-- **Case 4**: Source belongs to a contracted graph, while target belongs to an vertex subgraph.
-- **Case 5**: The path contains a new edge added by the contraction algorithm.
-
-Construction of the graph in the database
-..........................................
-
-.. rubric:: Original Data
-
-The following query shows the original data involved in the contraction operation.
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- q00
- :end-before: -- q01
-
-.. rubric:: Contraction Results
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- q2
- :end-before: -- q3
-
-The above results do not represent the contracted graph. They represent the changes done to the graph after applying the contraction algorithm. We can see that vertices like 6 and 11 do not appear in the contraction results because they were not affected by the contraction algorithm.
-
-.. rubric:: step 1
-
-Adding extra columns to the ``edge_table`` and ``edge_table_vertices_pgr`` tables:
-
-======================= ==================================================
-Column Description
-======================= ==================================================
-**contracted_vertices** The vertices set belonging to the vertex/edge
-**is_contracted** On a `vertex` table: when ``true`` the vertex is contracted, so is not part of the contracted graph.
-**is_contracted** On an `edge` table: when ``true`` the edge was generated by the contraction algorithm.
-======================= ==================================================
-
-Using the following queries:
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- q1
- :end-before: -- q2
-
-.. rubric:: step 2
-
-For simplicity, in this documentation, store the results of the call to pgr_contractGraph in a temporary table
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- q3
- :end-before: -- q4
-
-.. rubric:: step 3
-
-Update the `vertex` and `edge` tables using the results of the call to pgr_contraction
-
-- In `edge_table_vertices_pgr.is_contracted` indicate the vertices that are contracted.
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- q4
- :end-before: -- q5
-
-- Add to `edge_table_vertices_pgr.contracted_vertices` the contracted vertices belonging to the vertices.
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- q6
- :end-before: -- q7
-
-- Insert the new edges generated by pgr_contractGraph.
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- q8
- :end-before: -- q9
-
-.. rubric:: step 3.1
-
-Verify visually the updates.
-
-- On the `edge_table_vertices_pgr`
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- q7
- :end-before: -- q8
-
-- On the `edge_table`
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- q9
- :end-before: -- q10
-
-- vertices that belong to the contracted graph are the non contracted vertices
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- q10
- :end-before: -- case1
-
-.. rubric:: case 1: Both source and target belong to the contracted graph.
-
-Inspecting the contracted graph above, vertex 3 and vertex 11 are part of the contracted graph. In the following query:
-
- - vertices_in_graph hold the vertices that belong to the contracted graph.
- - when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause.
-
-Visually, looking at the original graph, going from 3 to 11: 3 -> 6 -> 11, and in the contracted graph, it is also 3 -> 6 -> 11.
-The results, on the contracted graph match the results as if it was done on the original graph.
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- case1
- :end-before: -- case2
-
-.. rubric:: case 2: Source belongs to the contracted graph, while target belongs to a edge subgraph.
-
-Inspecting the contracted graph above, vertex 3 is part of the contracted graph and vertex 1 belongs to the contracted subgraph of edge 19. In the following query:
- - expand1 holds the contracted vertices of the edge where vertex 1 belongs. (belongs to edge 19).
- - vertices_in_graph hold the vertices that belong to the contracted graph and also the contracted vertices of edge 19.
- - when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause.
-
-Visually, looking at the original graph, going from 3 to 1: 3 -> 2 -> 1, and in the contracted graph, it is also 3 -> 2 -> 1.
-The results, on the contracted graph match the results as if it was done on the original graph.
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- case2
- :end-before: -- case3
-
-
-.. rubric:: case 3: Source belongs to a vertex subgraph, while target belongs to an edge subgraph.
-
-Inspecting the contracted graph above, vertex 7 belongs to the contracted subgraph of vertex 5 and vertex 13 belongs to the contracted subgraph of edge 21. In the following query:
-
- - expand7 holds the contracted vertices of vertex where vertex 7 belongs. (belongs to vertex 5)
- - expand13 holds the contracted vertices of edge where vertex 13 belongs. (belongs to edge 21)
- - vertices_in_graph hold the vertices that belong to the contracted graph, contracted vertices of vertex 5 and contracted vertices of edge 21.
- - when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause.
-
-Visually, looking at the original graph, going from 7 to 13: 7 -> 8 -> 5 -> 10 -> 13, and in the contracted graph, it is also 7 -> 8 -> 5 -> 10 -> 13.
-The results, on the contracted graph match the results as if it was done on the original graph.
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- case3
- :end-before: -- case4
-
-
-.. rubric:: case 4: Source belongs to the contracted graph, while target belongs to an vertex subgraph.
-
-Inspecting the contracted graph above, vertex 3 is part of the contracted graph and vertex 7 belongs to the contracted subgraph of vertex 5. In the following query:
-
- - expand7 holds the contracted vertices of vertex where vertex 7 belongs. (belongs to vertex 5)
- - vertices_in_graph hold the vertices that belong to the contracted graph and the contracted vertices of vertex 5.
- - when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause.
-
-Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8 -> 7, but in the contracted graph, it is 3 -> 5 -> 8 -> 7.
-The results, on the contracted graph do not match the results as if it was done on the original graph. This is because the path contains edge 19 which is added by the contraction algorithm.
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- case4
- :end-before: -- case5q1
-
-.. rubric:: case 5: The path contains an edge added by the contraction algorithm.
-
-In the previous example we can see that the path from vertex 3 to vertex 7 contains an edge which is added by the contraction algorithm.
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- case5q1
- :end-before: -- case5q2
-
-Inspecting the contracted graph above, edge 19 should be expanded. In the following query:
-
- - first_dijkstra holds the results of the dijkstra query.
- - edges_to_expand holds the edges added by the contraction algorithm and included in the path.
- - vertices_in_graph hold the vertices that belong to the contracted graph, vertices of the contracted solution and the contracted vertices of the edges added by the contraction algorithm and included in the contracted solution.
- - when selecting the edges, only edges that have the source and the target in that set are the edges belonging to the contracted graph, that is done in the WHERE clause.
-
-Visually, looking at the original graph, going from 3 to 7: 3 -> 2 -> 5 -> 8 -> 7, and in the contracted graph, it is also 3 -> 2 -> 5 -> 8 -> 7.
-The results, on the contracted graph match the results as if it was done on the original graph.
-
-.. literalinclude:: doc-contraction.queries
- :start-after: -- case5q2
- :end-before: -- end
-
-See Also
--------------
-
-* http://www.cs.cmu.edu/afs/cs/academic/class/15210-f12/www/lectures/lecture16.pdf
-* http://algo2.iti.kit.edu/documents/routeplanning/geisberger_dipl.pdf
-* The queries use :ref:`pgr_contractGraph` function and the :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/contraction/doc/doc-contraction.queries b/src/contraction/doc/doc-contraction.queries
deleted file mode 100644
index ef82961..0000000
--- a/src/contraction/doc/doc-contraction.queries
+++ /dev/null
@@ -1,362 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q00
-SELECT id, source, target, cost, reverse_cost FROM edge_table;
- id | source | target | cost | reverse_cost
-----+--------+--------+------+--------------
- 1 | 1 | 2 | 1 | 1
- 2 | 2 | 3 | -1 | 1
- 3 | 3 | 4 | -1 | 1
- 4 | 2 | 5 | 1 | 1
- 5 | 3 | 6 | 1 | -1
- 6 | 7 | 8 | 1 | 1
- 7 | 8 | 5 | 1 | 1
- 8 | 5 | 6 | 1 | 1
- 9 | 6 | 9 | 1 | 1
- 10 | 5 | 10 | 1 | 1
- 11 | 6 | 11 | 1 | -1
- 12 | 10 | 11 | 1 | -1
- 13 | 11 | 12 | 1 | -1
- 14 | 10 | 13 | 1 | 1
- 15 | 9 | 12 | 1 | 1
- 16 | 4 | 9 | 1 | 1
- 17 | 14 | 15 | 1 | 1
- 18 | 16 | 17 | 1 | 1
-(18 rows)
-
--- q01
-SET client_min_messages TO ERROR;
-SET
--- q1
-ALTER TABLE edge_table ADD contracted_vertices BIGINT[];
-ALTER TABLE
-ALTER TABLE edge_table_vertices_pgr ADD contracted_vertices BIGINT[];
-ALTER TABLE
-ALTER TABLE edge_table ADD is_contracted BOOLEAN DEFAULT false;
-ALTER TABLE
-ALTER TABLE edge_table_vertices_pgr ADD is_contracted BOOLEAN DEFAULT false;
-ALTER TABLE
-SET client_min_messages TO NOTICE;
-SET
--- q2
-SELECT * FROM pgr_contractGraph(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[1,2], directed:=true);
- seq | type | id | contracted_vertices | source | target | cost
------+------+----+---------------------+--------+--------+------
- 1 | v | 5 | {7,8} | -1 | -1 | -1
- 2 | v | 15 | {14} | -1 | -1 | -1
- 3 | v | 17 | {16} | -1 | -1 | -1
- 4 | e | -1 | {1,2} | 3 | 5 | 2
- 5 | e | -2 | {4} | 9 | 3 | 2
- 6 | e | -3 | {10,13} | 5 | 11 | 2
- 7 | e | -4 | {12} | 11 | 9 | 2
-(7 rows)
-
--- q3
-SELECT * INTO contraction_results
-FROM pgr_contractGraph(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[1,2], directed:=true);
-SELECT 7
--- q4
-UPDATE edge_table_vertices_pgr
-SET is_contracted = true
-WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results);
-UPDATE 10
--- q5
-SELECT id, is_contracted
-FROM edge_table_vertices_pgr
-ORDER BY id;
- id | is_contracted
-----+---------------
- 1 | t
- 2 | t
- 3 | f
- 4 | t
- 5 | f
- 6 | f
- 7 | t
- 8 | t
- 9 | f
- 10 | t
- 11 | f
- 12 | t
- 13 | t
- 14 | t
- 15 | f
- 16 | t
- 17 | f
-(17 rows)
-
--- q6
-UPDATE edge_table_vertices_pgr
-SET contracted_vertices = contraction_results.contracted_vertices
-FROM contraction_results
-WHERE type = 'v' AND edge_table_vertices_pgr.id = contraction_results.id;
-UPDATE 3
--- q7
-SELECT id, contracted_vertices, is_contracted
-FROM edge_table_vertices_pgr
-ORDER BY id;
- id | contracted_vertices | is_contracted
-----+---------------------+---------------
- 1 | | t
- 2 | | t
- 3 | | f
- 4 | | t
- 5 | {7,8} | f
- 6 | | f
- 7 | | t
- 8 | | t
- 9 | | f
- 10 | | t
- 11 | | f
- 12 | | t
- 13 | | t
- 14 | | t
- 15 | {14} | f
- 16 | | t
- 17 | {16} | f
-(17 rows)
-
--- q8
-INSERT INTO edge_table(source, target, cost, reverse_cost, contracted_vertices, is_contracted)
-SELECT source, target, cost, -1, contracted_vertices, true
-FROM contraction_results
-WHERE type = 'e';
-INSERT 0 4
--- q9
-SELECT id, source, target, cost, reverse_cost, contracted_vertices, is_contracted
-FROM edge_table
-ORDER BY id;
- id | source | target | cost | reverse_cost | contracted_vertices | is_contracted
-----+--------+--------+------+--------------+---------------------+---------------
- 1 | 1 | 2 | 1 | 1 | | f
- 2 | 2 | 3 | -1 | 1 | | f
- 3 | 3 | 4 | -1 | 1 | | f
- 4 | 2 | 5 | 1 | 1 | | f
- 5 | 3 | 6 | 1 | -1 | | f
- 6 | 7 | 8 | 1 | 1 | | f
- 7 | 8 | 5 | 1 | 1 | | f
- 8 | 5 | 6 | 1 | 1 | | f
- 9 | 6 | 9 | 1 | 1 | | f
- 10 | 5 | 10 | 1 | 1 | | f
- 11 | 6 | 11 | 1 | -1 | | f
- 12 | 10 | 11 | 1 | -1 | | f
- 13 | 11 | 12 | 1 | -1 | | f
- 14 | 10 | 13 | 1 | 1 | | f
- 15 | 9 | 12 | 1 | 1 | | f
- 16 | 4 | 9 | 1 | 1 | | f
- 17 | 14 | 15 | 1 | 1 | | f
- 18 | 16 | 17 | 1 | 1 | | f
- 19 | 3 | 5 | 2 | -1 | {1,2} | t
- 20 | 9 | 3 | 2 | -1 | {4} | t
- 21 | 5 | 11 | 2 | -1 | {10,13} | t
- 22 | 11 | 9 | 2 | -1 | {12} | t
-(22 rows)
-
--- q10
-SELECT id FROM edge_table_vertices_pgr
-WHERE is_contracted = false
-ORDER BY id;
- id
-----
- 3
- 5
- 6
- 9
- 11
- 15
- 17
-(7 rows)
-
--- case1
-SELECT * FROM pgr_dijkstra(
- $$
- WITH
- vertices_in_graph AS (
- SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false)
- SELECT id, source, target, cost, reverse_cost
- FROM edge_table
- WHERE source IN (SELECT * FROM vertices_in_graph)
- AND target IN (SELECT * FROM vertices_in_graph)
- $$,
- 3, 11, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 3 | 5 | 1 | 0
- 2 | 2 | 6 | 11 | 1 | 1
- 3 | 3 | 11 | -1 | 0 | 2
-(3 rows)
-
--- case2
-SELECT * FROM pgr_dijkstra(
- $$
- WITH
- expand_edges AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table),
- expand1 AS (SELECT contracted_vertices FROM edge_table
- WHERE id IN (SELECT id FROM expand_edges WHERE vertex = 1)),
- vertices_in_graph AS (
- SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
- UNION
- SELECT unnest(contracted_vertices) FROM expand1)
- SELECT id, source, target, cost, reverse_cost
- FROM edge_table
- WHERE source IN (SELECT * FROM vertices_in_graph)
- AND target IN (SELECT * FROM vertices_in_graph)
- $$,
- 3, 1, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 3 | 2 | 1 | 0
- 2 | 2 | 2 | 1 | 1 | 1
- 3 | 3 | 1 | -1 | 0 | 2
-(3 rows)
-
--- case3
-SELECT * FROM pgr_dijkstra(
- $$
- WITH
-
- expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
- expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
- WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
-
- expand_edges AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table),
- expand13 AS (SELECT contracted_vertices FROM edge_table
- WHERE id IN (SELECT id FROM expand_edges WHERE vertex = 13)),
-
- vertices_in_graph AS (
- SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
- UNION
- SELECT unnest(contracted_vertices) FROM expand13
- UNION
- SELECT unnest(contracted_vertices) FROM expand7)
-
- SELECT id, source, target, cost, reverse_cost
- FROM edge_table
- WHERE source IN (SELECT * FROM vertices_in_graph)
- AND target IN (SELECT * FROM vertices_in_graph)
- $$,
- 7, 13, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 7 | 6 | 1 | 0
- 2 | 2 | 8 | 7 | 1 | 1
- 3 | 3 | 5 | 10 | 1 | 2
- 4 | 4 | 10 | 14 | 1 | 3
- 5 | 5 | 13 | -1 | 0 | 4
-(5 rows)
-
--- case4
-SELECT * FROM pgr_dijkstra(
- $$
- WITH
- expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
- expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
- WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
- vertices_in_graph AS (
- SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
- UNION
- SELECT unnest(contracted_vertices) FROM expand7)
- SELECT id, source, target, cost, reverse_cost
- FROM edge_table
- WHERE source IN (SELECT * FROM vertices_in_graph)
- AND target IN (SELECT * FROM vertices_in_graph)
- $$,
- 3, 7, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 3 | 19 | 2 | 0
- 2 | 2 | 5 | 7 | 1 | 2
- 3 | 3 | 8 | 6 | 1 | 3
- 4 | 4 | 7 | -1 | 0 | 4
-(4 rows)
-
--- case5q1
-WITH
-first_dijkstra AS (
- SELECT * FROM pgr_dijkstra(
- $$
- WITH
- expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
- expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
- WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
- vertices_in_graph AS (
- SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
- UNION
- SELECT unnest(contracted_vertices) FROM expand7)
- SELECT id, source, target, cost, reverse_cost
- FROM edge_table
- WHERE source IN (SELECT * FROM vertices_in_graph)
- AND target IN (SELECT * FROM vertices_in_graph)
- $$,
- 3, 7, false))
-SELECT edge, contracted_vertices
- FROM first_dijkstra JOIN edge_table
- ON (edge = id)
- WHERE is_contracted = true;
- edge | contracted_vertices
-------+---------------------
- 19 | {1,2}
-(1 row)
-
--- case5q2
-SELECT * FROM pgr_dijkstra($$
- WITH
- -- This returns the results from case 2
- first_dijkstra AS (
- SELECT * FROM pgr_dijkstra(
- '
- WITH
- expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
- expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
- WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
- vertices_in_graph AS (
- SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
- UNION
- SELECT unnest(contracted_vertices) FROM expand7)
- SELECT id, source, target, cost, reverse_cost
- FROM edge_table
- WHERE source IN (SELECT * FROM vertices_in_graph)
- AND target IN (SELECT * FROM vertices_in_graph)
- ',
- 3, 7, false)),
-
- -- edges that need expansion and the vertices to be expanded.
- edges_to_expand AS (
- SELECT edge, contracted_vertices
- FROM first_dijkstra JOIN edge_table
- ON (edge = id)
- WHERE is_contracted = true),
-
- vertices_in_graph AS (
- -- the nodes of the contracted solution
- SELECT node FROM first_dijkstra
- UNION
- -- the nodes of the expanding sections
- SELECT unnest(contracted_vertices) FROM edges_to_expand)
-
- SELECT id, source, target, cost, reverse_cost
- FROM edge_table
- WHERE source IN (SELECT * FROM vertices_in_graph)
- AND target IN (SELECT * FROM vertices_in_graph)
- -- not including the expanded edges
- AND id NOT IN (SELECT edge FROM edges_to_expand)
- $$,
- 3, 7, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 3 | 2 | 1 | 0
- 2 | 2 | 2 | 4 | 1 | 1
- 3 | 3 | 5 | 7 | 1 | 2
- 4 | 4 | 8 | 6 | 1 | 3
- 5 | 5 | 7 | -1 | 0 | 4
-(5 rows)
-
--- end
-ROLLBACK;
-ROLLBACK
diff --git a/src/contraction/doc/pgr_contractGraph.rst b/src/contraction/doc/pgr_contractGraph.rst
deleted file mode 100644
index 284eedc..0000000
--- a/src/contraction/doc/pgr_contractGraph.rst
+++ /dev/null
@@ -1,172 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_contractGraph:
-
-pgr_contractGraph - Proposed
-===============================================================================
-
-``pgr_contractGraph`` — Performs graph contraction and returns the contracted vertices and edges.
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.3.0
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-Synopsis
--------------
-
-Contraction reduces the size of the graph by removing some of the vertices and edges and, for example, might add edges that represent a sequence of original edges decreasing the total time and space used in graph algorithms.
-
-Characteristics
--------------------------------------------------------------------------------
-
-The main Characteristics are:
- - Process is done only on edges with positive costs.
-
- - There are two types of contraction methods used namely,
-
- - Dead End Contraction
- - Linear Contraction
-
- - The values returned include the added edges and contracted vertices.
-
- - The returned values are ordered as follows:
-
- - column `id` ascending when type = `v`
- - column `id` descending when type = `e`
-
-
-
-Signature Summary:
-------------------
-
-The pgr_contractGraph function has the following signatures:
-
-.. code-block:: none
-
- pgr_contractGraph(edges_sql, contraction_order)
- pgr_contractGraph(edges_sql, contraction_order, max_cycles, forbidden_vertices, directed)
-
- RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)
-
-
-Signatures
--------------------------------------------------------------------------------
-
-.. index::
- single: contractGraph(Minimal Use)
-
-Minimal signature
-.......................................
-
-.. code-block:: none
-
- pgr_contractGraph(edges_sql, contraction_order)
-
-:Example: Making a dead end contraction and a linear contraction.
-
-.. literalinclude:: doc-contractGraph.queries
- :start-after: -- q1
- :end-before: -- q2
-
-Complete signature
-.......................................
-
-.. code-block:: none
-
- pgr_contractGraph(edges_sql, contraction_order, max_cycles, forbidden_vertices, directed)
-
-:Example: Making a dead end contraction and a linear contraction and vertex 2 is forbidden from contraction
-
-.. literalinclude:: doc-contractGraph.queries
- :start-after: -- q2
- :end-before: -- q3
-
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-
-Description of the parameters of the signatures
--------------------------------------------------------------------------------
-
-======================= ====================== =================================================
-Column Type Description
-======================= ====================== =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**contraction_order** ``ARRAY[ANY-INTEGER]`` Ordered contraction operations.
- - 1 = Dead end contraction
- - 2 = Linear contraction
-**forbidden_vertices** ``ARRAY[ANY-INTEGER]`` (optional). Identifiers of vertices forbidden from contraction. Default is an empty array.
-**max_cycles** ``INTEGER`` (optional). Number of times the contraction operations on `contraction_order` will be performed. Default is 1.
-**directed** ``BOOLEAN`` * When ``true`` the graph is considered as `Directed`.
- * When ``false`` the graph is considered as `Undirected`.
-======================= ====================== =================================================
-
-
-Description of the return values
--------------------------------------------------------------------------------
-
-RETURNS SETOF (seq, type, id, contracted_vertices, source, target, cost)
-
-The function returns a single row. The columns of the row are:
-
-============================ ================= ===================================================================
-Column Type Description
-============================ ================= ===================================================================
-**seq** ``INTEGER`` Sequential value starting from **1**.
-**type** ``TEXT`` Type of the `id`.
- - 'v' when `id` is an identifier of a vertex.
- - 'e' when `id` is an identifier of an edge.
-**id** ``BIGINT`` Identifier of:
- * the vertex when `type = 'v'`.
-
- - The vertex belongs to the edge_table passed as a parameter.
- * the edge when `type = 'e'`.
-
- - The `id` is a decreasing sequence starting from **-1**.
-
- - Representing a pseudo `id` as is not incorporated into the edge_table.
-**contracted_vertices** ``ARRAY[BIGINT]`` Array of contracted vertex identifiers.
-**source** ``BIGINT`` Identifier of the source vertex of the current edge `id`. Valid values when `type = 'e'`.
-**target** ``BIGINT`` Identifier of the target vertex of the current edge `id`. Valid values when `type = 'e'`.
-**cost** ``FLOAT`` Weight of the edge (`source`, `target`). Valid values when `type = 'e'`.
-============================ ================= ===================================================================
-
-Examples
-========
-
-:Example: Only dead end contraction
-
-.. literalinclude:: doc-contractGraph.queries
- :start-after: -- q3
- :end-before: -- q4
-
-:Example: Only linear contraction
-
-.. literalinclude:: doc-contractGraph.queries
- :start-after: -- q4
- :end-before: -- q5
-
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/contraction/doc/proof_of_concept.queries b/src/contraction/doc/proof_of_concept.queries
deleted file mode 100644
index 84f0558..0000000
--- a/src/contraction/doc/proof_of_concept.queries
+++ /dev/null
@@ -1,106 +0,0 @@
-Adding an additional column to store if its part of the contracted graph
-ALTER TABLE edge_table ADD is_contracted BOOLEAN DEFAULT false;
-ALTER TABLE
-Adding a new edges joining vertices 3 and 5 with cost=2 to the edge table
-INSERT INTO edge_table(source, target, cost, reverse_cost, is_contracted)
-VALUES (3, 5, 2, 2, true);
-INSERT 0 1
-Adding a new edges joining vertices 3 and 9 with cost=2 to the edge table
-INSERT INTO edge_table(source, target, cost, reverse_cost, is_contracted)
-VALUES (3, 9, 2, 2, true);
-INSERT 0 1
-Adding a new edges joining vertices 5 and 11 with cost=2 to the edge table
-INSERT INTO edge_table(source, target, cost, reverse_cost, is_contracted)
-VALUES (5, 11, 2, 2, true);
-INSERT 0 1
-Adding a new edges joining vertices 9 and 11 with cost=2 to the edge table
-INSERT INTO edge_table(source, target, cost, reverse_cost, is_contracted)
-VALUES (9, 11, 2, 2, true);
-INSERT 0 1
-Case 1: Both source and target belong to the contracted graph.
-We are going to route from 3 to 11
-Since 3 and 11 both are in the contracted graph we need not add any vertices.
-SELECT * FROM
-pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 9, 11, 15, 17) AND target IN (3, 5, 6, 9, 11, 15, 17)',
-3, 11, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 3 | 5 | 1 | 0
- 2 | 2 | 6 | 11 | 1 | 1
- 3 | 3 | 11 | -1 | 0 | 2
-(3 rows)
-
-Case 2: source belongs to a contracted graph, while target belongs to a vertex subgraph.
-We are going to route from 3 to 7
-Since 7 is in the contracted subgraph of vertex 5 we add {7, 8} to the vertex set, so the vertex set becomes (3, 5, 6, 7, 8, 9, 11, 15, 17)
-SELECT * FROM
-pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 9, 11, 15, 17, 7, 8) AND target IN (3, 5, 6, 9, 11, 15, 17, 7, 8)',
-3, 7, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 3 | 19 | 2 | 0
- 2 | 2 | 5 | 7 | 1 | 2
- 3 | 3 | 8 | 6 | 1 | 3
- 4 | 4 | 7 | -1 | 0 | 4
-(4 rows)
-
-Case 3: source belongs to a contracted graph, while target belongs to a edge subgraph.
-We are going to route from 3 to 13
-Since 13 is in the contracted subgraph of edge (5, 11) we add {10, 13} to the vertex set, so the vertex set becomes (3, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17)
-SELECT * FROM
-pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 9, 11, 15, 17, 10, 13) AND target IN (3, 5, 6, 9, 11, 15, 17, 10, 13)',
-3, 13, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 3 | 5 | 1 | 0
- 2 | 2 | 6 | 11 | 1 | 1
- 3 | 3 | 11 | 12 | 1 | 2
- 4 | 4 | 10 | 14 | 1 | 3
- 5 | 5 | 13 | -1 | 0 | 4
-(5 rows)
-
-Case 4: source belongs to a vertex subgraph, while target belongs to a edge subgraph.
-We are going to route from 7 to 13
-Since 13 is in the contracted subgraph of edge (5, 11) we add {10, 13} to the vertex set, and since 7 is in the contracted subgraph of vertex 5 we add {7, 8} to the vertex sets (3, 5, 6, 7, 8, 9, 11, 15, 17)
-SELECT * FROM
-pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13) AND target IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13)',
-7, 13, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 7 | 6 | 1 | 0
- 2 | 2 | 8 | 7 | 1 | 1
- 3 | 3 | 5 | 10 | 1 | 2
- 4 | 4 | 10 | 14 | 1 | 3
- 5 | 5 | 13 | -1 | 0 | 4
-(5 rows)
-
-Case 5: The path contains a shortcut.
-
-We are going to route from 3 to 9
-Since 3 and 9 both are in the contracted graph we need not add any vertices.
-SELECT * FROM
-pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 7, 8, 9, 11, 15, 17) AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17)',
-3, 9, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 3 | 20 | 2 | 0
- 2 | 2 | 9 | -1 | 0 | 2
-(2 rows)
-
-SELECT is_contracted FROM edge_table WHERE id=20;
- is_contracted
----------------
- t
-(1 row)
-
-This implies that it is a shortcut and should be expanded
-SELECT * FROM
-pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 7, 8, 9, 11, 15, 17) AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17) AND is_contracted=false',
-3, 9, false);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 3 | 5 | 1 | 0
- 2 | 2 | 6 | 9 | 1 | 1
- 3 | 3 | 9 | -1 | 0 | 2
-(3 rows)
-
diff --git a/src/contraction/sql/CMakeLists.txt b/src/contraction/sql/CMakeLists.txt
deleted file mode 100644
index 04645d4..0000000
--- a/src/contraction/sql/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/contractGraph.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/contraction/sql/contractGraph.sql b/src/contraction/sql/contractGraph.sql
deleted file mode 100644
index 4c77ff1..0000000
--- a/src/contraction/sql/contractGraph.sql
+++ /dev/null
@@ -1,47 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: contractGraph.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Rohith Reddy
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-CREATE OR REPLACE FUNCTION pgr_contractGraph(
- edges_sql TEXT,
- contraction_order BIGINT[],
- max_cycles integer DEFAULT 1,
- forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
- directed BOOLEAN DEFAULT true,
- OUT seq integer,
- OUT type TEXT,
- OUT id BIGINT,
- OUT contracted_vertices BIGINT[],
- OUT source BIGINT,
- OUT target BIGINT,
- OUT cost float)
-
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'contractGraph'
- LANGUAGE c IMMUTABLE STRICT;
-
diff --git a/src/contraction/src/contractGraph.c b/src/contraction/src/contractGraph.c
index 5b16f8e..84a00f0 100644
--- a/src/contraction/src/contractGraph.c
+++ b/src/contraction/src/contractGraph.c
@@ -27,7 +27,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
#include "utils/array.h"
#include "catalog/pg_type.h"
#include "utils/lsyscache.h"
@@ -36,13 +36,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#define INT8ARRAYOID 1016
#endif
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./contractGraph_driver.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+#include "c_types/contracted_rt.h"
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+#include "drivers/contraction/contractGraph_driver.h"
PGDLLEXPORT Datum contractGraph(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(contractGraph);
@@ -56,7 +56,7 @@ process(char* edges_sql,
ArrayType* forbidden,
bool directed,
- pgr_contracted_blob **result_tuples,
+ contracted_rt **result_tuples,
size_t *result_count) {
/*
* nothing to do
@@ -132,7 +132,7 @@ contractGraph(PG_FUNCTION_ARGS) {
TupleDesc tuple_desc;
/**********************************************************************/
- pgr_contracted_blob *result_tuples = NULL;
+ contracted_rt *result_tuples = NULL;
size_t result_count = 0;
/**********************************************************************/
@@ -179,13 +179,13 @@ contractGraph(PG_FUNCTION_ARGS) {
funcctx = SRF_PERCALL_SETUP();
tuple_desc = funcctx->tuple_desc;
- result_tuples = (pgr_contracted_blob*) funcctx->user_fctx;
+ result_tuples = (contracted_rt*) funcctx->user_fctx;
if (funcctx->call_cntr < funcctx->max_calls) {
HeapTuple tuple;
Datum result;
Datum *values;
- char *nulls;
+ bool *nulls;
int16 typlen;
size_t call_cntr = funcctx->call_cntr;
diff --git a/src/contraction/src/contractGraph_driver.cpp b/src/contraction/src/contractGraph_driver.cpp
index 7bd11d4..adea204 100644
--- a/src/contraction/src/contractGraph_driver.cpp
+++ b/src/contraction/src/contractGraph_driver.cpp
@@ -27,18 +27,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./contractGraph_driver.h"
+#include "drivers/contraction/contractGraph_driver.h"
#include <string.h>
#include <sstream>
#include <deque>
#include <vector>
-#include "./pgr_contractionGraph.hpp"
-#include "./pgr_contract.hpp"
+#include "contraction/pgr_contractionGraph.hpp"
+#include "contraction/pgr_contract.hpp"
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_types.h"
+#include "cpp_common/pgr_alloc.hpp"
static
bool
@@ -81,7 +80,7 @@ static void process_contraction(
Identifiers<typename G::V> forbid_vertices;
for (const auto &vertex : forbidden_vertices) {
if (graph.has_vertex(vertex)) {
- forbid_vertices.insert(graph.get_V(vertex));
+ forbid_vertices += graph.get_V(vertex);
}
}
@@ -119,7 +118,7 @@ void get_postgres_result(
G &graph,
const Identifiers<int64_t> remaining_vertices,
const std::vector< pgrouting::CH_edge > shortcut_edges,
- pgr_contracted_blob **return_tuples) {
+ contracted_rt **return_tuples) {
(*return_tuples) = pgr_alloc(
remaining_vertices.size() + shortcut_edges.size(),
(*return_tuples));
@@ -179,7 +178,7 @@ do_pgr_contractGraph(
size_t size_contraction_order,
int64_t max_cycles,
bool directed,
- pgr_contracted_blob **return_tuples,
+ contracted_rt **return_tuples,
size_t *return_count,
char **log_msg,
char **notice_msg,
diff --git a/src/contraction/src/contractGraph_driver.h b/src/contraction/src/contractGraph_driver.h
deleted file mode 100644
index 21b09f7..0000000
--- a/src/contraction/src/contractGraph_driver.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: contractGraph_driver.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Rohith Reddy
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_CONTRACTION_SRC_CONTRACTGRAPH_DRIVER_H_
-#define SRC_CONTRACTION_SRC_CONTRACTGRAPH_DRIVER_H_
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /*********************************************************
- edges_sql TEXT,
- contraction_order BIGINT[],
- forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
- max_cycles integer DEFAULT 1,
- directed BOOLEAN DEFAULT true
- ********************************************************/
- void
- do_pgr_contractGraph(
- pgr_edge_t *data_edges,
- size_t total_tuples,
- int64_t *forbidden_vertices,
- size_t size_forbidden_vertices,
- int64_t *contraction_order,
- size_t size_contraction_order,
- int64_t max_cycles,
- bool directed,
- pgr_contracted_blob **return_tuples,
- size_t *return_count,
- char **log_msg,
- char **notice_msg,
- char **err_msg);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_CONTRACTION_SRC_CONTRACTGRAPH_DRIVER_H_
diff --git a/src/contraction/src/pgr_contract.hpp b/src/contraction/src/pgr_contract.hpp
deleted file mode 100644
index 5e008fb..0000000
--- a/src/contraction/src/pgr_contract.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pgr_contract.hpp
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Rohith Reddy
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_CONTRACTION_SRC_PGR_CONTRACT_HPP_
-#define SRC_CONTRACTION_SRC_PGR_CONTRACT_HPP_
-#pragma once
-
-#include <deque>
-#include <vector>
-#include "../../common/src/pgr_assert.h"
-
-#include "./pgr_contractionGraph.hpp"
-#include "./pgr_linearContraction.hpp"
-#include "./pgr_deadEndContraction.hpp"
-
-namespace pgrouting {
-namespace contraction {
-
-
-template < class G >
-class Pgr_contract {
- typedef typename G::V V;
-
-
- void perform_deadEnd(G &graph,
- Identifiers<V> forbidden_vertices,
- std::ostringstream& debug) {
- Pgr_deadend<G> deadendContractor;
- debug << "Setting forbidden_vertices";
- deadendContractor.setForbiddenVertices(forbidden_vertices);
-
- deadendContractor.calculateVertices(graph);
- try {
- deadendContractor.doContraction(graph);
- }
- catch ( ... ) {
- debug << "Caught unknown exception!\n";
- }
- }
-
-
- void perform_linear(G &graph,
- Identifiers<V>& forbidden_vertices,
- std::ostringstream& debug) {
- std::ostringstream linear_debug;
- Pgr_linear<G> linearContractor;
- linearContractor.setForbiddenVertices(forbidden_vertices);
- linearContractor.calculateVertices(graph);
- try {
- linearContractor.doContraction(graph);
- }
- catch ( ... ) {
- linear_debug << "Caught unknown exception!\n";
- }
- debug << linear_debug.str().c_str() << "\n";
- }
-
-
- public:
- Pgr_contract(
- G &graph,
- Identifiers<V> forbidden_vertices,
- std::vector<int64_t> contraction_order,
- int64_t max_cycles,
- Identifiers<int64_t> &remaining_vertices,
- std::vector<pgrouting::CH_edge> &shortcut_edges,
- std::ostringstream& debug) {
- std::deque<int64_t> contract_order;
- // push -1 to indicate the start of the queue
- contract_order.push_back(-1);
- contract_order.insert(
- contract_order.end(),
- contraction_order.begin(), contraction_order.end());
- for (int64_t i = 0; i < max_cycles; ++i) {
- int64_t front = contract_order.front();
- debug << "Starting cycle " << i+1 << "\n";
- contract_order.pop_front();
- contract_order.push_back(front);
- front = contract_order.front();
- while (front != -1) {
- switch (front) {
- case -1:
- debug << "Finished cycle " << i+1 << std::endl;
- break;
- default:
- debug << "contraction "<< front
- << " asked" << std::endl;
- if (front == 1) {
-#ifndef NDEBUG
- debug << "Graph before dead end contraction"
- << std::endl;
- graph.print_graph(debug);
- debug << "Performing dead end contraction"
- << std::endl;
-#endif
- perform_deadEnd(graph, forbidden_vertices, debug);
-#ifndef NDEBUG
- debug << "Graph after dead end contraction"
- << std::endl;
- graph.print_graph(debug);
-#endif
- } else if (front == 2) {
-#ifndef NDEBUG
- debug << "Graph before linear contraction"
- << std::endl;
- graph.print_graph(debug);
- debug << "Performing linear contraction"
- << std::endl;
-#endif
- perform_linear(graph, forbidden_vertices, debug);
-#ifndef NDEBUG
- debug << "Graph after linear contraction"
- << std::endl;
- graph.print_graph(debug);
-#endif
- }
- contract_order.pop_front();
- contract_order.push_back(front);
- front = contract_order.front();
- }
- }
- }
- remaining_vertices = graph.get_changed_vertices();
- debug << "Printing shortcuts\n";
- for (auto shortcut : graph.shortcuts) {
- debug << shortcut;
- shortcut_edges.push_back(shortcut);
- }
- }
-
-#if 0
- bool is_valid_contraction_number(int number) {
- switch (number) {
- case -2:
- return false;
- break;
- case -1:
- return false;
- break;
- case 0:
- return true;
- break;
- case 1:
- return true;
- break;
- default:
- return false;
- break;
- }
- }
-#endif
-};
-
-} // namespace contraction
-} // namespace pgrouting
-
-#endif // SRC_CONTRACTION_SRC_PGR_CONTRACT_HPP_
diff --git a/src/contraction/src/pgr_contractionGraph.hpp b/src/contraction/src/pgr_contractionGraph.hpp
deleted file mode 100644
index 3025f0e..0000000
--- a/src/contraction/src/pgr_contractionGraph.hpp
+++ /dev/null
@@ -1,300 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pgr_contractionGraph.hpp
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Rohith Reddy
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#ifndef SRC_CONTRACTION_SRC_PGR_CONTRACTIONGRAPH_HPP_
-#define SRC_CONTRACTION_SRC_PGR_CONTRACTIONGRAPH_HPP_
-#pragma once
-
-
-#include <limits>
-#include <algorithm>
-#include <vector>
-
-#include "../../common/src/pgr_base_graph.hpp"
-
-
-namespace pgrouting {
-
-namespace graph {
-template <class G, typename T_V, typename T_E>
-class Pgr_contractionGraph;
-}
-
- typedef graph::Pgr_contractionGraph <
- boost::adjacency_list < boost::listS, boost::vecS,
- boost::undirectedS,
- CH_vertex, CH_edge >,
- CH_vertex, CH_edge > CHUndirectedGraph;
-
- typedef graph::Pgr_contractionGraph <
- boost::adjacency_list < boost::listS, boost::vecS,
- boost::bidirectionalS,
- CH_vertex, CH_edge >,
- CH_vertex, CH_edge > CHDirectedGraph;
-
-namespace graph {
-
-template <class G, typename T_V, typename T_E>
-class Pgr_contractionGraph : public Pgr_base_graph<G, T_V, T_E> {
- public:
- typedef typename boost::graph_traits < G >::vertex_descriptor V;
- typedef typename boost::graph_traits < G >::edge_descriptor E;
- typedef typename boost::graph_traits < G >::vertex_iterator V_i;
- typedef typename boost::graph_traits < G >::edge_iterator E_i;
- typedef typename boost::graph_traits < G >::out_edge_iterator EO_i;
- typedef typename boost::graph_traits < G >::in_edge_iterator EI_i;
- typedef typename boost::graph_traits < G >::degree_size_type
- degree_size_type;
-
- Identifiers<V> removed_vertices;
- std::vector<T_E> shortcuts;
-
- /*! @brief Binary function that accepts two elements , and returns a value convertible to bool.
- Used as a compare function to sort the edges in increasing order of edge id
- */
- static bool compareById(const T_E &edge1, const T_E &edge2) {
- return edge1.id > edge2.id;
- }
-
- /*!
- Prepares the _graph_ to be of type *gtype*
- */
- explicit Pgr_contractionGraph< G , T_V, T_E >(graphType gtype)
- : Pgr_base_graph< G , T_V, T_E >(gtype) {
- }
-
- /*! @brief get the vertex descriptors of adjacent vertices of *v*
- @param [in] v vertex_descriptor
- @return Identifiers<V>: The set of vertex descriptors adjacent to the given vertex *v*
- */
- Identifiers<V> find_adjacent_vertices(V v) const {
- EO_i out, out_end;
- EI_i in, in_end;
- Identifiers<V> adjacent_vertices;
-
- for (boost::tie(out, out_end) = out_edges(v, this->graph);
- out != out_end; ++out) {
- adjacent_vertices += this->adjacent(v, *out);
- }
- for (boost::tie(in, in_end) = in_edges(v, this->graph);
- in != in_end; ++in) {
- adjacent_vertices += this->adjacent(v, *in);
- }
- return adjacent_vertices;
- }
-
-
- std::vector<int64_t> get_ids(
- Identifiers<int64_t> boost_ids) const {
- std::vector<int64_t> ids(boost_ids.size());
- size_t count = 0;
- for (auto id : boost_ids) {
- ids[count++] = this->graph[id].id;
- }
- return ids;
- }
-
-
- /*! @brief vertices with at least one contracted vertex
- *
- @result The vids Identifiers with at least one contracted vertex
- */
- Identifiers<int64_t> get_changed_vertices() {
- Identifiers<int64_t> vids;
- for (auto vi = vertices(this->graph).first;
- vi != vertices(this->graph).second;
- ++vi) {
- if (!removed_vertices.has(*vi)
- && this->graph[*vi].has_contracted_vertices()) {
- vids += this->graph[*vi].id;
- }
- }
- return vids;
- }
-
-
- /*! @brief get the edge with minimum cost between two vertices
- @param [in] source vertex_descriptor of source vertex
- @param [in] destination vertex_descriptor of target vertex
- @return E: The edge descriptor of the edge with minimum cost
- */
- E get_min_cost_edge(V source, V destination) {
- EO_i out_i, out_end;
- E min_cost_edge;
- double min_cost = (std::numeric_limits<double>::max)();
- for (boost::tie(out_i, out_end) =
- boost::out_edges(source, this->graph);
- out_i != out_end; ++out_i) {
- auto e = *out_i;
- if (this->target(e) == destination) {
- if (this->graph[e].cost < min_cost) {
- min_cost = this->graph[e].cost;
- min_cost_edge = e;
- }
- }
- }
- return min_cost_edge;
- }
-
- /*! @brief The number of edges from @b neighbor to @b vertex
-
- @param [in] vertex is the target of the edges
- @param [in] neighbor is the source of the edges
- @return degree_size_type: The in-degree of *vertex* from *neighbor*
- */
- degree_size_type in_degree_from_vertex(V vertex, V neighbor) {
- return out_degree_to_vertex(neighbor, vertex);
- }
-
- /*! @brief The number of edges from @b vertex to @b neighbor
-
- @param [in] vertex vertex_descriptor of the given vertex
- @param [in] neighbor vertex_descriptor of neighbor
- @return degree_size_type: The out-degree of *vertex* to *neighbor*
- */
- degree_size_type out_degree_to_vertex(V vertex, V neighbor) {
- degree_size_type degree = 0;
- EO_i out_i, out_end;
- for (boost::tie(out_i, out_end) =
- boost::out_edges(vertex, this->graph);
- out_i != out_end; ++out_i) {
- if (this->is_directed()
- && (this->is_source(vertex, *out_i)
- && this->is_target(neighbor, *out_i))) {
- degree++;
- } else if (this->is_undirected() &&
- this->adjacent(vertex, *out_i) == neighbor) {
- degree++;
- }
- }
- return degree;
- }
-
-
- /*! @brief print the graph with contracted vertices of
- all vertices and edges
- */
- void print_graph(std::ostringstream &log) {
- EO_i out, out_end;
- for (auto vi = vertices(this->graph).first;
- vi != vertices(this->graph).second;
- ++vi) {
- if ((*vi) >= this->m_num_vertices) break;
- log << this->graph[*vi].id << "(" << (*vi) << ")"
- << this->graph[*vi].contracted_vertices() << std::endl;
- log << " out_edges_of(" << this->graph[*vi].id << "):";
- for (boost::tie(out, out_end) = out_edges(*vi, this->graph);
- out != out_end; ++out) {
- log << ' ' << this->graph[*out].id
- << "=(" << this->graph[this->source(*out)].id
- << ", " << this->graph[this->target(*out)].id << ") = "
- << this->graph[*out].cost <<"\t";
- }
- log << std::endl;
- }
- }
-
-
-
- /*! @brief get the contracted vertex ids of a given vertex in array format
- @param [in] vid vertex_id
-
- @returns ids of contracted_vertices
- */
- std::vector<int64_t> get_contracted_vertices(int64_t vid) {
- if (!this->has_vertex(vid)) return std::vector<int64_t>();
- auto v = this->get_V(vid);
- std::vector<int64_t> ids(this->graph[v].contracted_vertices().size());
-
- size_t count = 0;
- for (auto idx : this->graph[v].contracted_vertices()) {
- ids[count++] = this->graph[idx].id;
- }
- return ids;
- }
-
-
-
-
-
- /*! @brief add the contracted vertices of an edge *e* to the vertex *v*
- @param [in] v vertex_descriptor
- @param [in] e Edge of type *T_E*
- */
- void add_contracted_edge_vertices(V v, T_E &e) {
- for (auto vid : e.contracted_vertices()) {
- this->graph[v].add_vertex_id(vid);
- }
- e.clear_contracted_vertices();
- }
-
-
- /*! @brief add edges(shortuct) to the graph during contraction
-
- a -> b -> c
-
- a -> c
-
- edge (a, c) is a new edge e
- e.contracted_vertices = b + b.contracted vertices
- b is "removed" disconnected from the graph
- - by removing all edges to/from b
-
-
- @param [in] edge of type *T_E* is to be added
- */
-
- void add_shortcut(const T_E &edge) {
- std::ostringstream log;
- bool inserted;
- E e;
- if (edge.cost < 0)
- return;
-
- pgassert(this->vertices_map.find(edge.source)
- != this->vertices_map.end());
- pgassert(this->vertices_map.find(edge.target)
- != this->vertices_map.end());
-
- auto vm_s = this->get_V(edge.source);
- auto vm_t = this->get_V(edge.target);
-
- boost::tie(e, inserted) =
- boost::add_edge(vm_s, vm_t, this->graph);
-
- this->graph[e].cp_members(edge);
-
- shortcuts.push_back(edge);
- }
-};
-
-} // namespace graph
-} // namespace pgrouting
-
-#endif // SRC_CONTRACTION_SRC_PGR_CONTRACTIONGRAPH_HPP_
diff --git a/src/contraction/src/pgr_deadEndContraction.hpp b/src/contraction/src/pgr_deadEndContraction.hpp
deleted file mode 100644
index a2b2ecf..0000000
--- a/src/contraction/src/pgr_deadEndContraction.hpp
+++ /dev/null
@@ -1,408 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pgr_deadend.hpp
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Rohith Reddy
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#ifndef SRC_CONTRACTION_SRC_PGR_DEADENDCONTRACTION_HPP_
-#define SRC_CONTRACTION_SRC_PGR_DEADENDCONTRACTION_HPP_
-#pragma once
-
-
-#include <queue>
-#include <functional>
-#include <vector>
-#include "../../common/src/identifiers.hpp"
-
-namespace pgrouting {
-namespace contraction {
-
-template < class G >
-class Pgr_deadend {
- private:
- typedef typename G::V V;
- typedef typename G::E E;
-
- public:
- void setForbiddenVertices(
- Identifiers<V> forbidden_vertices);
-
- void calculateVertices(G &graph);
- /// @brief true when \b v is a dead end
- bool is_dead_end(G &graph, V v);
- void add_if_dead_end(G &graph, V v);
- void doContraction(G &graph);
-
- private:
- Identifiers<V> deadendVertices;
- Identifiers<V> forbiddenVertices;
- std::ostringstream debug;
-};
-
-/******* IMPLEMENTATION ************/
-template < class G >
-void
-Pgr_deadend< G >::setForbiddenVertices(
- Identifiers<V> forbidden_vertices) {
-#ifndef NDEBUG
- debug << "Setting forbidden vertices\n";
-#endif
- forbiddenVertices = forbidden_vertices;
-}
-
-
-template < class G >
-void Pgr_deadend<G>::calculateVertices(G &graph) {
- debug << "Calculating vertices\n";
-
- for (auto vi = vertices(graph.graph).first;
- vi != vertices(graph.graph).second;
- ++vi) {
-#ifndef NDEBUG
- debug << "Checking vertex " << graph[(*vi)].id << '\n';
-#endif
- if (is_dead_end(graph, *vi)) {
-#ifndef NDEBUG
- debug << "Adding " << graph[(*vi)].id << " to dead end" << '\n';
-#endif
- deadendVertices += (*vi);
- }
- }
- deadendVertices -= forbiddenVertices;
-}
-
-template < class G >
-bool Pgr_deadend<G>::is_dead_end(G &graph, V v) {
-#ifndef NDEBUG
- debug << "Is dead end: " << graph.graph[v].id << "?\n";
-#endif
-
- if (forbiddenVertices.has(v)) {
- /**
- * - fobbiden_vertices
- * - Not considered as dead end
- */
-
- return false;
- }
-
- if (graph.is_undirected()) {
- /**
- * undirected:
- * ----------
- * - There is only one adjacent vertex:
- * - All adjcent edges are from a single vertex
- *
-
- @dot
- graph G {
- graph [rankdir=LR];
- subgraph cluster0 {
- node [shape=point,height=0.2,style=filled,color=black];
- style=filled;
- color=lightgrey;
- a0; a1; a2;
- label = "rest of graph";
- }
- v [color=green];
- v -- a0;
- v -- a0;
- }
- @enddot
-
- */
- Identifiers<V> adjacent_vertices = graph.find_adjacent_vertices(v);
- if (adjacent_vertices.size() == 1) {
- return true;
- }
- return false;
- }
-
- pgassert(graph.is_directed());
- /*
- * directed graph
- *
- * is dead end when:
- * (2) one incoming edge, no outgoing edge (dead end)
- * (3) one outgoing edge, one incoming edge
- * and both are from/to the same vertex
- * (4) many incoming edges
- * and no outgoing edges
- * (5) many outgoing edges TODO but all go to same vertex
- * and no incoming edges
- *
- * NOT dead end when:
- * (3) one outgoing edge, one incoming edge
- * and both from/to different vertex
- *
- * note: when contracting case 4 & 5, the vertex has to be
- * part of all the adjacent vertices
- */
-
- if (graph.in_degree(v) == 0 && graph.out_degree(v) == 1) {
- /**
- * directed
- * ----------
- * case (1): (dead start)
- * - one outgoing edge,
- * - no incoming edge
- *
-
- @dot
- digraph G {
- graph [rankdir=LR];
- subgraph cluster0 {
- node [shape=point,height=0.2,style=filled,color=black];
- style=filled;
- color=lightgrey;
- a0; a1; a2;
- label = "rest of graph";
- }
- v [color=green];
- v -> a0;
- }
- @enddot
-
- */
- return true;
- }
-
- if (graph.in_degree(v) == 1 && graph.out_degree(v) == 0) {
- /**
- * case (2): (dead end)
- * - no outgoing edge,
- * - one incoming edge
- *
-
- @dot
- digraph G {
- graph [rankdir=LR];
- subgraph cluster0 {
- node [shape=point,height=0.2,style=filled,color=black];
- style=filled;
- color=lightgrey;
- a0; a1; a2;
- label = "rest of graph";
- }
- v [color=green];
- a0 -> v;
- }
- @enddot
-
- */
- return true;
- }
-
- if (graph.out_degree(v) == 1 && graph.in_degree(v) == 1) {
- /**
- * case (3):
- * - one outgoing edge,
- * - one incoming edge
- * - one adjacent vertex
- *
-
- @dot
- digraph G {
- graph [rankdir=LR];
- subgraph cluster0 {
- node [shape=point,height=0.2,style=filled,color=black];
- style=filled;
- color=lightgrey;
- a0; a1; a2;
- label = "rest of graph";
- }
- v [color=green];
- v -> a0;
- a0 -> v;
- }
- @enddot
-
- */
- auto out_e = *(out_edges(v, graph.graph).first);
- auto in_e = *(in_edges(v, graph.graph).first);
-
- auto out_v = graph.is_source(v, out_e) ?
- graph.target(out_e) : graph.source(out_e);
- auto in_v = graph.is_source(v, in_e) ?
- graph.target(in_e) : graph.source(in_e);
-
- if (out_v == in_v) {
- return true;
- }
- return false;
- }
-
- if (graph.in_degree(v) > 0 && graph.out_degree(v) == 0) {
- /**
- * case (4):
- * - no outgoing edge,
- * - many incoming edges
- *
- *
-
- @dot
- digraph G {
- graph [rankdir=LR];
- subgraph cluster0 {
- node [shape=point,height=0.2,style=filled,color=black];
- style=filled;
- color=lightgrey;
- a0; a1; a2;
- label = "rest of graph";
- }
- v [color=green];
- a0 -> v;
- a1 -> v;
- a0 -> v;
- }
- @enddot
-
- */
- return true;
- }
-
- if (graph.in_degree(v) > 0 && graph.out_degree(v) > 0) {
- /**
- * case (5):
- * - many outgoing edge,
- * - many incoming edges
- * - All adjacent edges are from a single vertex
- *
- *
-
- @dot
- digraph G {
- graph [rankdir=LR];
- subgraph cluster0 {
- node [shape=point,height=0.2,style=filled,color=black];
- style=filled;
- color=lightgrey;
- a0; a1; a2;
- label = "rest of graph";
- }
- v [color=green];
- a0 -> v;
- a0 -> v;
- v -> a0;
- v -> a0;
- }
- @enddot
-
- */
-
- auto adjacent_vertices = graph.find_adjacent_vertices(v);
- if (adjacent_vertices.size() == 1) {
- return true;
- }
- }
- debug << "Is Not Dead End\n";
- return false;
-}
-
-template < class G >
-void
-Pgr_deadend<G>::add_if_dead_end(G &graph, V v) {
- if (is_dead_end(graph, v)) {
- deadendVertices += v;
- }
-}
-
-template < class G >
-void
-Pgr_deadend<G>::doContraction(G &graph) {
-#ifndef NDEBUG
- debug << "Performing contraction\n";
-#endif
- std::priority_queue<V, std::vector<V>, std::greater<V> > deadendPriority;
-
- for (V deadendVertex : deadendVertices) {
- deadendPriority.push(deadendVertex);
- }
-
- while (!deadendPriority.empty()) {
- V current_vertex = deadendPriority.top();
- deadendPriority.pop();
-
- if (!is_dead_end(graph, current_vertex)) {
- continue;
- }
-
- Identifiers<V> adjacent_vertices =
- graph.find_adjacent_vertices(current_vertex);
-
- for (auto adjacent_vertex : adjacent_vertices) {
-#ifndef NDEBUG
- debug << "Contracting current vertex "
- << graph[current_vertex].id << std::endl;
-#endif
- graph[adjacent_vertex].add_contracted_vertex(
- graph[current_vertex], current_vertex);
-
-#ifndef NDEBUG
- debug << "Adding contracted vertices of the edge\n";
-#endif
- auto o_edges = out_edges(current_vertex, graph.graph);
- for (auto out = o_edges.first;
- out != o_edges.second;
- ++out) {
- debug << graph.graph[*out];
- graph.add_contracted_edge_vertices(
- adjacent_vertex, graph[*out]);
- }
- auto i_edges = in_edges(current_vertex, graph.graph);
- for (auto in = i_edges.first;
- in != i_edges.second; ++in) {
-#ifndef NDEBUG
- debug << graph.graph[*in];
-#endif
- graph.add_contracted_edge_vertices(adjacent_vertex, graph[*in]);
- }
-#ifndef NDEBUG
- debug << "Current Vertex:\n";
- debug << graph[current_vertex];
- debug << "Adjacent Vertex:\n";
- debug << graph[adjacent_vertex];
-#endif
- graph.disconnect_vertex(current_vertex);
- deadendVertices -= current_vertex;
-#ifndef NDEBUG
- debug << "Adjacent vertex dead_end?: "
- << is_dead_end(graph, adjacent_vertex)
- << std::endl;
-#endif
- if (is_dead_end(graph, adjacent_vertex)
- && !forbiddenVertices.has(adjacent_vertex)) {
- deadendVertices += adjacent_vertex;
- deadendPriority.push(adjacent_vertex);
- }
- }
- }
-}
-
-} // namespace contraction
-} // namespace pgrouting
-
-#endif // SRC_CONTRACTION_SRC_PGR_DEADENDCONTRACTION_HPP_
diff --git a/src/contraction/src/pgr_linearContraction.hpp b/src/contraction/src/pgr_linearContraction.hpp
deleted file mode 100644
index 6c36e54..0000000
--- a/src/contraction/src/pgr_linearContraction.hpp
+++ /dev/null
@@ -1,274 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pgr_linear.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Rohith Reddy
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#ifndef SRC_CONTRACTION_SRC_PGR_LINEARCONTRACTION_HPP_
-#define SRC_CONTRACTION_SRC_PGR_LINEARCONTRACTION_HPP_
-#pragma once
-
-
-#include <queue>
-#include <functional>
-#include <vector>
-
-#include "../../common/src/identifiers.hpp"
-
-
-namespace pgrouting {
-namespace contraction {
-
-template < class G >
-class Pgr_linear {
- private:
- typedef typename G::V V;
- typedef typename G::E E;
- typedef typename G::V_i V_i;
- typedef typename G::E_i E_i;
- typedef typename G::EO_i EO_i;
- typedef typename G::EI_i EI_i;
- typedef typename G::degree_size_type degree_size_type;
-
-
- public:
- Pgr_linear():last_edge_id(0) {}
- void setForbiddenVertices(
- Identifiers<V> forbidden_vertices);
- void calculateVertices(G &graph);
- void doContraction(G &graph);
-
- private:
- int64_t get_next_id() {
- return --last_edge_id;
- }
-
- bool is_linear(G &graph, V v);
- void add_if_linear(G &graph, V v);
- void add_edge_pair(V vertex, int64_t &incoming_eid,
- int64_t &outgoing_eid);
- void add_shortcut(G &graph, V vertex,
- E incoming_edge,
- E outgoing_edge);
- void add_shortcut(G &graph,
- pgrouting::CH_edge &shortcut);
-
- private:
- Identifiers<V> linearVertices;
- Identifiers<V> forbiddenVertices;
-
- int64_t last_edge_id;
- std::ostringstream debug;
-};
-
-/*************** IMPLEMENTTION **************/
-
-template < class G >
-void
-Pgr_linear< G >::setForbiddenVertices(
- Identifiers<V> forbidden_vertices) {
- debug << "Setting forbidden vertices\n";
- forbiddenVertices = forbidden_vertices;
-}
-
-
-template < class G >
-bool Pgr_linear<G>::is_linear(G &graph, V v) {
- degree_size_type in_degree, out_degree;
- in_degree = graph.in_degree(v);
- out_degree = graph.out_degree(v);
- Identifiers<V> adjacent_vertices = graph.find_adjacent_vertices(v);
- if (adjacent_vertices.size() == 2) {
- if (in_degree > 0 && out_degree > 0) {
- debug << graph.graph[v].id << " is linear " << std::endl;
- return true;
- }
- }
- debug << graph.graph[v].id << " is not linear " << std::endl;
- return false;
-}
-
-template < class G >
-void Pgr_linear<G>::calculateVertices(G &graph) {
- debug << "Calculating vertices\n";
- V_i vi;
- for (vi = vertices(graph.graph).first;
- vi != vertices(graph.graph).second;
- ++vi) {
- debug << "Checking vertex " << graph.graph[(*vi)].id << '\n';
- if (is_linear(graph, *vi)) {
- linearVertices += (*vi);
- }
- }
- linearVertices -= forbiddenVertices;
-}
-
-
-
-template < class G >
-void Pgr_linear<G>::doContraction(G &graph) {
- std::ostringstream contraction_debug;
- contraction_debug << "Performing contraction\n";
- std::priority_queue<V, std::vector<V>, std::greater<V> > linearPriority;
- for (const auto linearVertex : linearVertices) {
- linearPriority.push(linearVertex);
- }
- contraction_debug << "Linear vertices" << std::endl;
- for (const auto v : linearVertices) {
- contraction_debug << graph[v].id << ", ";
- }
- contraction_debug << std::endl;
- while (!linearPriority.empty()) {
- V current_vertex = linearPriority.top();
- linearPriority.pop();
- if (!is_linear(graph, current_vertex)) {
- linearVertices -= current_vertex;
- continue;
- }
- Identifiers<V> adjacent_vertices =
- graph.find_adjacent_vertices(current_vertex);
- pgassert(adjacent_vertices.size() == 2);
- V vertex_1 = adjacent_vertices[0];
- V vertex_2 = adjacent_vertices[1];
- contraction_debug << "Adjacent vertices\n";
- contraction_debug << graph[vertex_1].id
- << ", " << graph[vertex_2].id
- << std::endl;
-
- if (graph.m_gType == DIRECTED) {
- if (graph.out_degree_to_vertex(vertex_1, current_vertex) > 0 &&
- graph.in_degree_from_vertex(vertex_2, current_vertex) > 0) {
- E e1 = graph.get_min_cost_edge(vertex_1,
- current_vertex);
- E e2 = graph.get_min_cost_edge(current_vertex,
- vertex_2);
- add_shortcut(graph, current_vertex, e1, e2);
- }
-
- if (graph.out_degree_to_vertex(vertex_2, current_vertex) > 0 &&
- graph.in_degree_from_vertex(vertex_1, current_vertex) > 0) {
- E e1 = graph.get_min_cost_edge(vertex_2,
- current_vertex);
- E e2 = graph.get_min_cost_edge(current_vertex,
- vertex_1);
- add_shortcut(graph, current_vertex, e1, e2);
- }
- } else if (graph.m_gType == UNDIRECTED) {
- if (graph.out_degree_to_vertex(vertex_1, current_vertex) > 0 &&
- graph.in_degree_from_vertex(vertex_2, current_vertex) > 0) {
- contraction_debug << "UNDIRECTED graph before contraction\n";
- graph.print_graph(contraction_debug);
- E e1 = graph.get_min_cost_edge(vertex_1,
- current_vertex);
- E e2 = graph.get_min_cost_edge(current_vertex,
- vertex_2);
- add_shortcut(graph, current_vertex, e1, e2);
- }
- }
-
- graph.disconnect_vertex(current_vertex);
- linearVertices -= current_vertex;
- if (is_linear(graph, vertex_1)
- && !forbiddenVertices.has(vertex_1)) {
- linearPriority.push(vertex_1);
- linearVertices += vertex_1;
- }
- if (is_linear(graph, vertex_2)
- && !forbiddenVertices.has(vertex_2)) {
- linearPriority.push(vertex_2);
- linearVertices += vertex_2;
- }
- }
- debug << contraction_debug.str().c_str() << "\n";
-}
-
-
-/*! \brief add edges(shortuct) to the graph during contraction
-
- a --incomming--> b ---outgoing--> c
-
- a -> c
-
- edge (a, c) is a new edge: @b shortcut
- e.contracted_vertices = b + b.contracted vertices
- b is "removed" disconnected from the graph
- - by removing all edges to/from b
- */
-
-template < class G >
-void
-Pgr_linear<G>::add_shortcut(
- G &graph, V vertex,
- E incoming_edge,
- E outgoing_edge) {
- pgassert(incoming_edge != outgoing_edge);
-
- auto a = graph.adjacent(vertex, incoming_edge);
- auto c = graph.adjacent(vertex, outgoing_edge);
- pgassert(a != vertex);
- pgassert(a != c);
- pgassert(vertex != c);
-
- if (graph.is_undirected()) {
- Identifiers<V> adjacent_vertices = graph.find_adjacent_vertices(vertex);
- V vertex_1 = adjacent_vertices[0];
- V vertex_2 = adjacent_vertices[1];
- E shortcut_E;
- CH_edge shortcut(get_next_id(), graph[vertex_1].id,
- graph[vertex_2].id,
- graph[incoming_edge].cost + graph[outgoing_edge].cost);
- shortcut.add_contracted_vertex(graph[vertex], vertex);
- shortcut.add_contracted_edge_vertices(graph[incoming_edge]);
- shortcut.add_contracted_edge_vertices(graph[outgoing_edge]);
- debug << "Adding shortcut\n";
- debug << shortcut;
- graph.add_shortcut(shortcut);
- debug << "Added shortcut\n";
- } else {
- CH_edge shortcut(
- get_next_id(),
- graph[a].id,
- graph[c].id,
- graph[incoming_edge].cost + graph[outgoing_edge].cost);
- shortcut.add_contracted_vertex(graph[vertex], vertex);
- shortcut.add_contracted_edge_vertices(graph[incoming_edge]);
- shortcut.add_contracted_edge_vertices(graph[outgoing_edge]);
- debug << "Adding shortcut\n";
- debug << shortcut;
- graph.add_shortcut(shortcut);
- debug << "Added shortcut\n";
- }
-}
-template < class G >
-void Pgr_linear<G>::add_shortcut(G &graph,
- pgrouting::CH_edge &shortcut) {
- graph.add_shortcut(shortcut);
-}
-
-} // namespace contraction
-} // namespace pgrouting
-
-#endif // SRC_CONTRACTION_SRC_PGR_LINEARCONTRACTION_HPP_
diff --git a/src/contraction/test/directed-deadend.result b/src/contraction/test/directed-deadend.result
index 34baa1d..0a416aa 100644
--- a/src/contraction/test/directed-deadend.result
+++ b/src/contraction/test/directed-deadend.result
@@ -1,11 +1,61 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1 Checking dead end contraction for single edge
-1|v|2|{1}|-1|-1|-1
+/*
+\echo --q0 Checking for valid contraction
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 1',
+ ARRAY[-1]::integer[], 1, ARRAY[]::BIGINT[], true);
+*/
+
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 1',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 2 | {1} | -1 | -1 | -1
+(1 row)
+
--q2 Checking dead end contraction for two edges
-1|v|3|{1,2}|-1|-1|-1
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id < 3',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 3 | {1,2} | -1 | -1 | -1
+(1 row)
+
--q3 Checking dead end contraction for sample data
-1|v|2|{1}|-1|-1|-1
-2|v|5|{7,8}|-1|-1|-1
-3|v|10|{13}|-1|-1|-1
-4|v|15|{14}|-1|-1|-1
-5|v|17|{16}|-1|-1|-1
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 2 | {1} | -1 | -1 | -1
+ 2 | v | 5 | {7,8} | -1 | -1 | -1
+ 3 | v | 10 | {13} | -1 | -1 | -1
+ 4 | v | 15 | {14} | -1 | -1 | -1
+ 5 | v | 17 | {16} | -1 | -1 | -1
+(5 rows)
+
--q5 Checking dead end contraction for a graph with no dead end vertex
+/*
+-- this test fails becuse parameter is wrong
+\echo --q4 Checking that forbidden vertices can only be one dimensional or empty
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 1',
+ ARRAY[ [2,3,4,5], [4,5,6,7] ]::BIGINT[][], ARRAY[0]::integer[], 1, true);
+-- \echo --q4 -------------------------------------------
+*/
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 2 OR id = 4 OR id = 5 OR id = 8',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+(0 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/directed-development.result b/src/contraction/test/directed-development.result
index 6a1b034..fbde94d 100644
--- a/src/contraction/test/directed-development.result
+++ b/src/contraction/test/directed-development.result
@@ -1,50 +1,165 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1 Checking dead end contraction for single edge
-1|v|2|{1}|-1|-1|-1
+/*
+-- this test fails becuse parameter is wrong
+\echo --q0 Checking for valid contraction
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 1',
+ ARRAY[-1]::integer[], 1, ARRAY[]::BIGINT[], true);
+*/
+
+
+
+
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 1',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 2 | {1} | -1 | -1 | -1
+(1 row)
+
--q2 Checking dead end contraction for two edges
-1|v|3|{1,2}|-1|-1|-1
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id < 3',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 3 | {1,2} | -1 | -1 | -1
+(1 row)
+
--q3 Checking dead end contraction for sample data
-1|v|2|{1}|-1|-1|-1
-2|v|5|{7,8}|-1|-1|-1
-3|v|10|{13}|-1|-1|-1
-4|v|15|{14}|-1|-1|-1
-5|v|17|{16}|-1|-1|-1
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 2 | {1} | -1 | -1 | -1
+ 2 | v | 5 | {7,8} | -1 | -1 | -1
+ 3 | v | 10 | {13} | -1 | -1 | -1
+ 4 | v | 15 | {14} | -1 | -1 | -1
+ 5 | v | 17 | {16} | -1 | -1 | -1
+(5 rows)
+
--q5 Checking dead end contraction for a graph with no dead end vertex
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 2 OR id = 4 OR id = 5 OR id = 8',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+(0 rows)
+
--q6 Checking for linear vertices case 1
-1|e|-1|{3}|4|6|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 3 OR id = 5',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {3} | 4 | 6 | 2
+(1 row)
+
--q7 Checking for linear vertices case 2
-1|e|-1|{5}|6|10|2
-2|e|-2|{5}|10|6|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 8 OR id = 10',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {5} | 6 | 10 | 2
+ 2 | e | -2 | {5} | 10 | 6 | 2
+(2 rows)
+
--q8 Checking for linear vertices case 3
-1|e|-1|{2}|3|5|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 2 OR id = 4',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {2} | 3 | 5 | 2
+(1 row)
+
--q9 Checking for linear vertices case 4
-1|e|-1|{6}|3|9|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 5 OR id = 9',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {6} | 3 | 9 | 2
+(1 row)
+
--q10 Checking linear contraction for sample data
-1|e|-1|{4}|9|3|2
-2|e|-2|{8}|5|7|2
-3|e|-3|{8}|7|5|2
-4|e|-4|{12}|11|9|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table' ,
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {4} | 9 | 3 | 2
+ 2 | e | -2 | {8} | 5 | 7 | 2
+ 3 | e | -3 | {8} | 7 | 5 | 2
+ 4 | e | -4 | {12} | 11 | 9 | 2
+(4 rows)
+
--q11 Checking dead end, linear contraction for sample data
-1|v|5|{7,8}|-1|-1|-1
-2|v|15|{14}|-1|-1|-1
-3|v|17|{16}|-1|-1|-1
-4|e|-1|{1,2}|3|5|2
-5|e|-2|{4}|9|3|2
-6|e|-3|{10,13}|5|11|2
-7|e|-4|{12}|11|9|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table' ,
+ ARRAY[1, 2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 5 | {7,8} | -1 | -1 | -1
+ 2 | v | 15 | {14} | -1 | -1 | -1
+ 3 | v | 17 | {16} | -1 | -1 | -1
+ 4 | e | -1 | {1,2} | 3 | 5 | 2
+ 5 | e | -2 | {4} | 9 | 3 | 2
+ 6 | e | -3 | {10,13} | 5 | 11 | 2
+ 7 | e | -4 | {12} | 11 | 9 | 2
+(7 rows)
+
--q12 Checking linear contraction, dead end for sample data
-1|v|2|{1}|-1|-1|-1
-2|v|5|{7,8}|-1|-1|-1
-3|v|10|{13}|-1|-1|-1
-4|v|15|{14}|-1|-1|-1
-5|v|17|{16}|-1|-1|-1
-6|e|-1|{4}|9|3|2
-7|e|-2|{8}|5|7|2
-8|e|-3|{8}|7|5|2
-9|e|-4|{12}|11|9|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table' ,
+ ARRAY[2, 1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 2 | {1} | -1 | -1 | -1
+ 2 | v | 5 | {7,8} | -1 | -1 | -1
+ 3 | v | 10 | {13} | -1 | -1 | -1
+ 4 | v | 15 | {14} | -1 | -1 | -1
+ 5 | v | 17 | {16} | -1 | -1 | -1
+ 6 | e | -1 | {4} | 9 | 3 | 2
+ 7 | e | -2 | {8} | 5 | 7 | 2
+ 8 | e | -3 | {8} | 7 | 5 | 2
+ 9 | e | -4 | {12} | 11 | 9 | 2
+(9 rows)
+
--q13 Checking linear contraction for a square like graph
-1|e|-1|{2}|3|5|2
-2|e|-2|{2,5}|3|6|3
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 2 OR id = 4 OR id = 5 OR id = 8',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {2} | 3 | 5 | 2
+ 2 | e | -2 | {2,5} | 3 | 6 | 3
+(2 rows)
+
--q14 Checking linear contraction, dead end for a square like graph
-1|v|3|{2,5,6}|-1|-1|-1
-2|e|-1|{2}|3|5|2
-3|e|-2|{2,5}|3|6|3
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 2 OR id = 4 OR id = 5 OR id = 8',
+ ARRAY[2, 1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 3 | {2,5,6} | -1 | -1 | -1
+ 2 | e | -1 | {2} | 3 | 5 | 2
+ 3 | e | -2 | {2,5} | 3 | 6 | 3
+(3 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/directed-linear.result b/src/contraction/test/directed-linear.result
index 99d451f..d196eb3 100644
--- a/src/contraction/test/directed-linear.result
+++ b/src/contraction/test/directed-linear.result
@@ -1,17 +1,70 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q6 Checking for linear vertices case 1
-1|e|-1|{3}|4|6|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 3 OR id = 5',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {3} | 4 | 6 | 2
+(1 row)
+
--q7 Checking for linear vertices case 2
-1|e|-1|{5}|6|10|2
-2|e|-2|{5}|10|6|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 8 OR id = 10',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {5} | 6 | 10 | 2
+ 2 | e | -2 | {5} | 10 | 6 | 2
+(2 rows)
+
--q8 Checking for linear vertices case 3
-1|e|-1|{2}|3|5|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 2 OR id = 4',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {2} | 3 | 5 | 2
+(1 row)
+
--q9 Checking for linear vertices case 4
-1|e|-1|{6}|3|9|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 5 OR id = 9',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {6} | 3 | 9 | 2
+(1 row)
+
--q10 Checking linear contraction for sample data
-1|e|-1|{4}|9|3|2
-2|e|-2|{8}|5|7|2
-3|e|-3|{8}|7|5|2
-4|e|-4|{12}|11|9|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table' ,
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {4} | 9 | 3 | 2
+ 2 | e | -2 | {8} | 5 | 7 | 2
+ 3 | e | -3 | {8} | 7 | 5 | 2
+ 4 | e | -4 | {12} | 11 | 9 | 2
+(4 rows)
+
--q13 Checking linear contraction for a square like graph
-1|e|-1|{2}|3|5|2
-2|e|-2|{2,5}|3|6|3
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table
+ WHERE id = 2 OR id = 4 OR id = 5 OR id = 8',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {2} | 3 | 5 | 2
+ 2 | e | -2 | {2,5} | 3 | 6 | 3
+(2 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/doc-contractGraph.result b/src/contraction/test/doc-contractGraph.result
index e94997e..7b3757f 100644
--- a/src/contraction/test/doc-contractGraph.result
+++ b/src/contraction/test/doc-contractGraph.result
@@ -1,28 +1,62 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-1|v|5|{7,8}|-1|-1|-1
-2|v|15|{14}|-1|-1|-1
-3|v|17|{16}|-1|-1|-1
-4|e|-1|{1,2}|3|5|2
-5|e|-2|{4}|9|3|2
-6|e|-3|{10,13}|5|11|2
-7|e|-4|{12}|11|9|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[1, 2]);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 5 | {7,8} | -1 | -1 | -1
+ 2 | v | 15 | {14} | -1 | -1 | -1
+ 3 | v | 17 | {16} | -1 | -1 | -1
+ 4 | e | -1 | {1,2} | 3 | 5 | 2
+ 5 | e | -2 | {4} | 9 | 3 | 2
+ 6 | e | -3 | {10,13} | 5 | 11 | 2
+ 7 | e | -4 | {12} | 11 | 9 | 2
+(7 rows)
+
-- q2
-1|v|2|{1}|-1|-1|-1
-2|v|5|{7,8}|-1|-1|-1
-3|v|15|{14}|-1|-1|-1
-4|v|17|{16}|-1|-1|-1
-5|e|-1|{4}|9|3|2
-6|e|-2|{10,13}|5|11|2
-7|e|-3|{12}|11|9|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ARRAY[1, 2], forbidden_vertices:=ARRAY[2]);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 2 | {1} | -1 | -1 | -1
+ 2 | v | 5 | {7,8} | -1 | -1 | -1
+ 3 | v | 15 | {14} | -1 | -1 | -1
+ 4 | v | 17 | {16} | -1 | -1 | -1
+ 5 | e | -1 | {4} | 9 | 3 | 2
+ 6 | e | -2 | {10,13} | 5 | 11 | 2
+ 7 | e | -3 | {12} | 11 | 9 | 2
+(7 rows)
+
-- q3
-1|v|2|{1}|-1|-1|-1
-2|v|5|{7,8}|-1|-1|-1
-3|v|10|{13}|-1|-1|-1
-4|v|15|{14}|-1|-1|-1
-5|v|17|{16}|-1|-1|-1
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ARRAY[1]);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 2 | {1} | -1 | -1 | -1
+ 2 | v | 5 | {7,8} | -1 | -1 | -1
+ 3 | v | 10 | {13} | -1 | -1 | -1
+ 4 | v | 15 | {14} | -1 | -1 | -1
+ 5 | v | 17 | {16} | -1 | -1 | -1
+(5 rows)
+
-- q4
-1|e|-1|{4}|9|3|2
-2|e|-2|{8}|5|7|2
-3|e|-3|{8}|7|5|2
-4|e|-4|{12}|11|9|2
--- q5
\ No newline at end of file
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ARRAY[2]);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | e | -1 | {4} | 9 | 3 | 2
+ 2 | e | -2 | {8} | 5 | 7 | 2
+ 3 | e | -3 | {8} | 7 | 5 | 2
+ 4 | e | -4 | {12} | 11 | 9 | 2
+(4 rows)
+
+-- q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/doc-contraction.result b/src/contraction/test/doc-contraction.result
index 131b60f..7e015f5 100644
--- a/src/contraction/test/doc-contraction.result
+++ b/src/contraction/test/doc-contraction.result
@@ -1,128 +1,339 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q00
-1|1|2|1|1
-2|2|3|-1|1
-3|3|4|-1|1
-4|2|5|1|1
-5|3|6|1|-1
-6|7|8|1|1
-7|8|5|1|1
-8|5|6|1|1
-9|6|9|1|1
-10|5|10|1|1
-11|6|11|1|-1
-12|10|11|1|-1
-13|11|12|1|-1
-14|10|13|1|1
-15|9|12|1|1
-16|4|9|1|1
-17|14|15|1|1
-18|16|17|1|1
-- q01
+SET client_min_messages TO ERROR;
+SET
-- q1
+ALTER TABLE edge_table ADD contracted_vertices BIGINT[];
+ALTER TABLE
+ALTER TABLE edge_table_vertices_pgr ADD contracted_vertices BIGINT[];
+ALTER TABLE
+ALTER TABLE edge_table ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
+ALTER TABLE edge_table_vertices_pgr ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
+SET client_min_messages TO NOTICE;
+SET
-- q2
-1|v|5|{7,8}|-1|-1|-1
-2|v|15|{14}|-1|-1|-1
-3|v|17|{16}|-1|-1|-1
-4|e|-1|{1,2}|3|5|2
-5|e|-2|{4}|9|3|2
-6|e|-3|{10,13}|5|11|2
-7|e|-4|{12}|11|9|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[1,2], directed:=true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 5 | {7,8} | -1 | -1 | -1
+ 2 | v | 15 | {14} | -1 | -1 | -1
+ 3 | v | 17 | {16} | -1 | -1 | -1
+ 4 | e | -1 | {1,2} | 3 | 5 | 2
+ 5 | e | -2 | {4} | 9 | 3 | 2
+ 6 | e | -3 | {10,13} | 5 | 11 | 2
+ 7 | e | -4 | {12} | 11 | 9 | 2
+(7 rows)
+
-- q3
+SELECT * INTO contraction_results
+FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[1,2], directed:=true);
+SELECT 7
-- q4
+UPDATE edge_table_vertices_pgr
+SET is_contracted = true
+WHERE id IN (SELECT unnest(contracted_vertices) FROM contraction_results);
+UPDATE 10
-- q5
-1|t
-2|t
-3|f
-4|t
-5|f
-6|f
-7|t
-8|t
-9|f
-10|t
-11|f
-12|t
-13|t
-14|t
-15|f
-16|t
-17|f
+SELECT id, is_contracted
+FROM edge_table_vertices_pgr
+ORDER BY id;
+ id | is_contracted
+----+---------------
+ 1 | t
+ 2 | t
+ 3 | f
+ 4 | t
+ 5 | f
+ 6 | f
+ 7 | t
+ 8 | t
+ 9 | f
+ 10 | t
+ 11 | f
+ 12 | t
+ 13 | t
+ 14 | t
+ 15 | f
+ 16 | t
+ 17 | f
+(17 rows)
+
-- q6
+UPDATE edge_table_vertices_pgr
+SET contracted_vertices = contraction_results.contracted_vertices
+FROM contraction_results
+WHERE type = 'v' AND edge_table_vertices_pgr.id = contraction_results.id;
+UPDATE 3
-- q7
-1||t
-2||t
-3||f
-4||t
-5|{7,8}|f
-6||f
-7||t
-8||t
-9||f
-10||t
-11||f
-12||t
-13||t
-14||t
-15|{14}|f
-16||t
-17|{16}|f
+SELECT id, contracted_vertices, is_contracted
+FROM edge_table_vertices_pgr
+ORDER BY id;
+ id | contracted_vertices | is_contracted
+----+---------------------+---------------
+ 1 | | t
+ 2 | | t
+ 3 | | f
+ 4 | | t
+ 5 | {7,8} | f
+ 6 | | f
+ 7 | | t
+ 8 | | t
+ 9 | | f
+ 10 | | t
+ 11 | | f
+ 12 | | t
+ 13 | | t
+ 14 | | t
+ 15 | {14} | f
+ 16 | | t
+ 17 | {16} | f
+(17 rows)
+
-- q8
+INSERT INTO edge_table(source, target, cost, reverse_cost, contracted_vertices, is_contracted)
+SELECT source, target, cost, -1, contracted_vertices, true
+FROM contraction_results
+WHERE type = 'e';
+INSERT 0 4
-- q9
-1|1|2|1|1||f
-2|2|3|-1|1||f
-3|3|4|-1|1||f
-4|2|5|1|1||f
-5|3|6|1|-1||f
-6|7|8|1|1||f
-7|8|5|1|1||f
-8|5|6|1|1||f
-9|6|9|1|1||f
-10|5|10|1|1||f
-11|6|11|1|-1||f
-12|10|11|1|-1||f
-13|11|12|1|-1||f
-14|10|13|1|1||f
-15|9|12|1|1||f
-16|4|9|1|1||f
-17|14|15|1|1||f
-18|16|17|1|1||f
-23|3|5|2|-1|{1,2}|t
-24|9|3|2|-1|{4}|t
-25|5|11|2|-1|{10,13}|t
-26|11|9|2|-1|{12}|t
+SELECT id, source, target, cost, reverse_cost, contracted_vertices, is_contracted
+FROM edge_table
+ORDER BY id;
+ id | source | target | cost | reverse_cost | contracted_vertices | is_contracted
+----+--------+--------+------+--------------+---------------------+---------------
+ 1 | 1 | 2 | 1 | 1 | | f
+ 2 | 2 | 3 | -1 | 1 | | f
+ 3 | 3 | 4 | -1 | 1 | | f
+ 4 | 2 | 5 | 1 | 1 | | f
+ 5 | 3 | 6 | 1 | -1 | | f
+ 6 | 7 | 8 | 1 | 1 | | f
+ 7 | 8 | 5 | 1 | 1 | | f
+ 8 | 5 | 6 | 1 | 1 | | f
+ 9 | 6 | 9 | 1 | 1 | | f
+ 10 | 5 | 10 | 1 | 1 | | f
+ 11 | 6 | 11 | 1 | -1 | | f
+ 12 | 10 | 11 | 1 | -1 | | f
+ 13 | 11 | 12 | 1 | -1 | | f
+ 14 | 10 | 13 | 1 | 1 | | f
+ 15 | 9 | 12 | 1 | 1 | | f
+ 16 | 4 | 9 | 1 | 1 | | f
+ 17 | 14 | 15 | 1 | 1 | | f
+ 18 | 16 | 17 | 1 | 1 | | f
+ 19 | 3 | 5 | 2 | -1 | {1,2} | t
+ 20 | 9 | 3 | 2 | -1 | {4} | t
+ 21 | 5 | 11 | 2 | -1 | {10,13} | t
+ 22 | 11 | 9 | 2 | -1 | {12} | t
+(22 rows)
+
-- q10
-3
-5
-6
-9
-11
-15
-17
+SELECT id FROM edge_table_vertices_pgr
+WHERE is_contracted = false
+ORDER BY id;
+ id
+----
+ 3
+ 5
+ 6
+ 9
+ 11
+ 15
+ 17
+(7 rows)
+
-- case1
-1|1|3|5|1|0
-2|2|6|11|1|1
-3|3|11|-1|0|2
+SELECT * FROM pgr_dijkstra(
+ $$
+ WITH
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ $$,
+ 3, 11, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 11 | 1 | 1
+ 3 | 3 | 11 | -1 | 0 | 2
+(3 rows)
+
-- case2
-1|1|3|2|1|0
-2|2|2|1|1|1
-3|3|1|-1|0|2
+SELECT * FROM pgr_dijkstra(
+ $$
+ WITH
+ expand_edges AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table),
+ expand1 AS (SELECT contracted_vertices FROM edge_table
+ WHERE id IN (SELECT id FROM expand_edges WHERE vertex = 1)),
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand1)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ $$,
+ 3, 1, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 1 | 0
+ 2 | 2 | 2 | 1 | 1 | 1
+ 3 | 3 | 1 | -1 | 0 | 2
+(3 rows)
+
-- case3
-1|1|7|6|1|0
-2|2|8|7|1|1
-3|3|5|10|1|2
-4|4|10|14|1|3
-5|5|13|-1|0|4
+SELECT * FROM pgr_dijkstra(
+ $$
+ WITH
+
+ expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
+ expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
+ WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
+
+ expand_edges AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table),
+ expand13 AS (SELECT contracted_vertices FROM edge_table
+ WHERE id IN (SELECT id FROM expand_edges WHERE vertex = 13)),
+
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand13
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand7)
+
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ $$,
+ 7, 13, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 7 | 6 | 1 | 0
+ 2 | 2 | 8 | 7 | 1 | 1
+ 3 | 3 | 5 | 10 | 1 | 2
+ 4 | 4 | 10 | 14 | 1 | 3
+ 5 | 5 | 13 | -1 | 0 | 4
+(5 rows)
+
-- case4
-1|1|3|23|2|0
-2|2|5|7|1|2
-3|3|8|6|1|3
-4|4|7|-1|0|4
+SELECT * FROM pgr_dijkstra(
+ $$
+ WITH
+ expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
+ expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
+ WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand7)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ $$,
+ 3, 7, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 19 | 2 | 0
+ 2 | 2 | 5 | 7 | 1 | 2
+ 3 | 3 | 8 | 6 | 1 | 3
+ 4 | 4 | 7 | -1 | 0 | 4
+(4 rows)
+
-- case5q1
-23|{1,2}
+WITH
+first_dijkstra AS (
+ SELECT * FROM pgr_dijkstra(
+ $$
+ WITH
+ expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
+ expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
+ WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand7)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ $$,
+ 3, 7, false))
+SELECT edge, contracted_vertices
+ FROM first_dijkstra JOIN edge_table
+ ON (edge = id)
+ WHERE is_contracted = true;
+ edge | contracted_vertices
+------+---------------------
+ 19 | {1,2}
+(1 row)
+
-- case5q2
-1|1|3|2|1|0
-2|2|2|4|1|1
-3|3|5|7|1|2
-4|4|8|6|1|3
-5|5|7|-1|0|4
+SELECT * FROM pgr_dijkstra($$
+ WITH
+ -- This returns the results from case 2
+ first_dijkstra AS (
+ SELECT * FROM pgr_dijkstra(
+ '
+ WITH
+ expand_vertices AS (SELECT id, unnest(contracted_vertices) AS vertex FROM edge_table_vertices_pgr),
+ expand7 AS (SELECT contracted_vertices FROM edge_table_vertices_pgr
+ WHERE id IN (SELECT id FROM expand_vertices WHERE vertex = 7)),
+ vertices_in_graph AS (
+ SELECT id FROM edge_table_vertices_pgr WHERE is_contracted = false
+ UNION
+ SELECT unnest(contracted_vertices) FROM expand7)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ ',
+ 3, 7, false)),
+
+ -- edges that need expansion and the vertices to be expanded.
+ edges_to_expand AS (
+ SELECT edge, contracted_vertices
+ FROM first_dijkstra JOIN edge_table
+ ON (edge = id)
+ WHERE is_contracted = true),
+
+ vertices_in_graph AS (
+ -- the nodes of the contracted solution
+ SELECT node FROM first_dijkstra
+ UNION
+ -- the nodes of the expanding sections
+ SELECT unnest(contracted_vertices) FROM edges_to_expand)
+
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (SELECT * FROM vertices_in_graph)
+ AND target IN (SELECT * FROM vertices_in_graph)
+ -- not including the expanded edges
+ AND id NOT IN (SELECT edge FROM edges_to_expand)
+ $$,
+ 3, 7, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 1 | 0
+ 2 | 2 | 2 | 4 | 1 | 1
+ 3 | 3 | 5 | 7 | 1 | 2
+ 4 | 4 | 8 | 6 | 1 | 3
+ 5 | 5 | 7 | -1 | 0 | 4
+(5 rows)
+
-- end
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/doc-contraction.test.sql b/src/contraction/test/doc-contraction.test.sql
index a576b15..21046c7 100644
--- a/src/contraction/test/doc-contraction.test.sql
+++ b/src/contraction/test/doc-contraction.test.sql
@@ -1,5 +1,4 @@
\echo -- q00
-SELECT id, source, target, cost, reverse_cost FROM edge_table;
\echo -- q01
SET client_min_messages TO ERROR;
diff --git a/src/contraction/test/expand_graph.result b/src/contraction/test/expand_graph.result
index f6f4086..070247e 100644
--- a/src/contraction/test/expand_graph.result
+++ b/src/contraction/test/expand_graph.result
@@ -1,78 +1,242 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
step 1: Initial edge table
-1|1|2|1|1
-2|2|3|-1|1
-3|3|4|-1|1
-4|2|5|1|1
-5|3|6|1|-1
-6|7|8|1|1
-7|8|5|1|1
-8|5|6|1|1
-9|6|9|1|1
-10|5|10|1|1
-11|6|11|1|-1
-12|10|11|1|-1
-13|11|12|1|-1
-14|10|13|1|1
-15|9|12|1|1
-16|4|9|1|1
-17|14|15|1|1
-18|16|17|1|1
+SELECT id, source, target, cost, reverse_cost FROM edge_table;
+ id | source | target | cost | reverse_cost
+----+--------+--------+------+--------------
+ 1 | 1 | 2 | 1 | 1
+ 2 | 2 | 3 | -1 | 1
+ 3 | 3 | 4 | -1 | 1
+ 4 | 2 | 5 | 1 | 1
+ 5 | 3 | 6 | 1 | -1
+ 6 | 7 | 8 | 1 | 1
+ 7 | 8 | 5 | 1 | 1
+ 8 | 5 | 6 | 1 | 1
+ 9 | 6 | 9 | 1 | 1
+ 10 | 5 | 10 | 1 | 1
+ 11 | 6 | 11 | 1 | -1
+ 12 | 10 | 11 | 1 | -1
+ 13 | 11 | 12 | 1 | -1
+ 14 | 10 | 13 | 1 | 1
+ 15 | 9 | 12 | 1 | 1
+ 16 | 4 | 9 | 1 | 1
+ 17 | 14 | 15 | 1 | 1
+ 18 | 16 | 17 | 1 | 1
+(18 rows)
+
step 2: Initial vertex table
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
+SELECT id FROM edge_table_vertices_pgr;
+ id
+----
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+(17 rows)
+
step 3: Adding is_contracted column to edge_table......
+ALTER TABLE edge_table ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
step 4: Adding contracted_vertices column to edge_table.....
+ALTER TABLE edge_table ADD contracted_vertices integer[];
+ALTER TABLE
step 5: Adding is_contracted column to edge_table......
+ALTER TABLE edge_table_vertices_pgr ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
step 6: Adding contracted_vertices column to edge_table.....
+ALTER TABLE edge_table_vertices_pgr ADD contracted_vertices integer[];
+ALTER TABLE
step 7: Edge table after adding columns
-1|1|2|1|1|f|
-2|2|3|-1|1|f|
-3|3|4|-1|1|f|
-4|2|5|1|1|f|
-5|3|6|1|-1|f|
-6|7|8|1|1|f|
-7|8|5|1|1|f|
-8|5|6|1|1|f|
-9|6|9|1|1|f|
-10|5|10|1|1|f|
-11|6|11|1|-1|f|
-12|10|11|1|-1|f|
-13|11|12|1|-1|f|
-14|10|13|1|1|f|
-15|9|12|1|1|f|
-16|4|9|1|1|f|
-17|14|15|1|1|f|
-18|16|17|1|1|f|
+SELECT id, source, target, cost, reverse_cost, is_contracted, contracted_vertices FROM edge_table;
+ id | source | target | cost | reverse_cost | is_contracted | contracted_vertices
+----+--------+--------+------+--------------+---------------+---------------------
+ 1 | 1 | 2 | 1 | 1 | f |
+ 2 | 2 | 3 | -1 | 1 | f |
+ 3 | 3 | 4 | -1 | 1 | f |
+ 4 | 2 | 5 | 1 | 1 | f |
+ 5 | 3 | 6 | 1 | -1 | f |
+ 6 | 7 | 8 | 1 | 1 | f |
+ 7 | 8 | 5 | 1 | 1 | f |
+ 8 | 5 | 6 | 1 | 1 | f |
+ 9 | 6 | 9 | 1 | 1 | f |
+ 10 | 5 | 10 | 1 | 1 | f |
+ 11 | 6 | 11 | 1 | -1 | f |
+ 12 | 10 | 11 | 1 | -1 | f |
+ 13 | 11 | 12 | 1 | -1 | f |
+ 14 | 10 | 13 | 1 | 1 | f |
+ 15 | 9 | 12 | 1 | 1 | f |
+ 16 | 4 | 9 | 1 | 1 | f |
+ 17 | 14 | 15 | 1 | 1 | f |
+ 18 | 16 | 17 | 1 | 1 | f |
+(18 rows)
+
step 8: Vertex table after adding columns
-1|f|
-2|f|
-3|f|
-4|f|
-5|f|
-6|f|
-7|f|
-8|f|
-9|f|
-10|f|
-11|f|
-12|f|
-13|f|
-14|f|
-15|f|
-16|f|
-17|f|
+SELECT id, is_contracted, contracted_vertices FROM edge_table_vertices_pgr;
+ id | is_contracted | contracted_vertices
+----+---------------+---------------------
+ 1 | f |
+ 2 | f |
+ 3 | f |
+ 4 | f |
+ 5 | f |
+ 6 | f |
+ 7 | f |
+ 8 | f |
+ 9 | f |
+ 10 | f |
+ 11 | f |
+ 12 | f |
+ 13 | f |
+ 14 | f |
+ 15 | f |
+ 16 | f |
+ 17 | f |
+(17 rows)
+
+CREATE OR REPLACE FUNCTION pgr_update_contraction_columns(
+ edge_table text,
+ forbidden_vertices BIGINT[],
+ contraction_order integer[],
+ max_cycles integer,
+ directed BOOLEAN
+)
+RETURNS integer AS $total$
+declare
+total integer;
+contracted_vertex integer;
+query text;
+update_query text;
+split_query text;
+insert_query text;
+row record;
+split_row record;
+BEGIN
+total := 0;
+query := 'SELECT * FROM pgr_contractGraph('|| quote_literal(edge_table)||', ' || quote_literal(forbidden_vertices)||', ' || quote_literal(contraction_order)||', ' || quote_literal(max_cycles)||', ' || quote_literal(directed) || ')';
+ FOR row IN EXECUTE(query)
+ LOOP
+
+ -- contracted_vertices_array := row.contracted_vertices;
+ -- If it is a vertex we update the two columns of the vertex table
+ IF row.type = 'v' THEN
+ total := total + 1;
+ -- raise notice 'vertex';
+ update_query := 'UPDATE edge_table_vertices_pgr SET contracted_vertices = array_append(contracted_vertices, ';
+ FOREACH contracted_vertex IN ARRAY row.contracted_vertices
+ LOOP
+ EXECUTE update_query || quote_literal(contracted_vertex)
+ || ') WHERE id = ' || quote_literal(row.id);
+ EXECUTE 'UPDATE edge_table_vertices_pgr SET is_contracted = true WHERE id = '
+ || quote_literal(contracted_vertex);
+ -- raise notice 'cv: %', contracted_vertex;
+ END LOOP;
+ -- If it is an edge we insert a new entry to the edge table
+ ELSEIF row.type = 'e' THEN
+ total := total + 1;
+ -- raise notice 'edge';
+ insert_query := 'INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted, contracted_vertices) VALUES ('
+ || quote_literal(row.id)|| ', '
+ || quote_literal(row.source)|| ', '
+ || quote_literal(row.target)|| ', '
+ || quote_literal(row.cost)|| ', '
+ || quote_literal(-1)|| ', '
+ || quote_literal(true)|| ', '
+ || quote_literal(row.contracted_vertices)
+ || ')';
+ EXECUTE insert_query;
+ FOREACH contracted_vertex IN ARRAY row.contracted_vertices
+ LOOP
+ EXECUTE 'UPDATE edge_table_vertices_pgr SET is_contracted = true WHERE id = '
+ || quote_literal(contracted_vertex);
+ END LOOP;
+ END IF;
+ -- raise notice 'id: %, type: %, cv: %',row.id, row.type, row.contracted_vertices;
+ END LOOP;
+
+ RETURN total;
+ END;
+ $total$ LANGUAGE plpgsql;
+CREATE FUNCTION
+CREATE OR REPLACE FUNCTION pgr_expand_contracted_graph(
+ original_edge_table text,
+ original_vertex_table text,
+ contracted_edge_table text,
+ contracted_vertex_table text
+)
+RETURNS integer AS $total$
+declare
+total integer;
+contracted_vertex integer;
+query text;
+row record;
+BEGIN
+ total := 0;
+ query := 'SELECT * FROM '
+ || quote_ident(contracted_edge_table)
+ ||' WHERE id < 0 ';
+ FOR row IN EXECUTE(query)
+ LOOP
+ -- Inserting the contracted vertices into the vertex table
+ FOREACH contracted_vertex IN ARRAY row.contracted_vertices
+ LOOP
+ EXECUTE 'INSERT INTO ' || quote_ident(contracted_vertex_table) || '(id, is_contracted)' ||' VALUES ('
+ || quote_literal(contracted_vertex) || ', false);';
+ END LOOP;
+ -- Adding the edges(id < 0) between these vertices to the edge table
+ EXECUTE 'INSERT INTO '
+ || quote_ident(contracted_edge_table)
+ || ' SELECT * FROM ' || quote_ident(original_edge_table)
+ || ' WHERE source = ANY(' || quote_literal(row.contracted_vertices) || ')'
+ || ' OR target = ANY(' || quote_literal(row.contracted_vertices) || ')'
+ || ' AND id > 0';
+
+ END LOOP;
+
+ -- Removing all those edges with id < 0
+ EXECUTE 'DELETE FROM '
+ || quote_ident(contracted_edge_table)
+ || ' WHERE id < 0';
+
+ query := 'SELECT * FROM '|| quote_ident(contracted_vertex_table)||' WHERE array_length(contracted_vertices, 1) > 0';
+ FOR row IN EXECUTE(query)
+ LOOP
+ -- Inserting the contracted vertices into the vertex table
+ FOREACH contracted_vertex IN ARRAY row.contracted_vertices
+ LOOP
+ EXECUTE 'INSERT INTO ' || quote_ident(contracted_vertex_table) || '(id, is_contracted)' ||' VALUES ('
+ || quote_literal(contracted_vertex) || ', false);';
+ END LOOP;
+ -- Adding the edges(id < 0) between these vertices to the edge table
+ EXECUTE 'INSERT INTO '
+ || quote_ident(contracted_edge_table)
+ || ' SELECT * FROM ' || quote_ident(original_edge_table)
+ || ' WHERE source = ANY(' || quote_literal(row.contracted_vertices) || ')'
+ || ' OR target = ANY(' || quote_literal(row.contracted_vertices) || ')'
+ || ' AND id > 0';
+ EXECUTE 'UPDATE '
+ || quote_ident(contracted_vertex_table)
+ || ' SET contracted_vertices = NULL'
+ || ' WHERE array_length(contracted_vertices, 1) > 0 ';
+ END LOOP;
+
+RETURN total;
+END;
+ $total$ LANGUAGE plpgsql;
+CREATE FUNCTION
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/expand_graph_without_function.result b/src/contraction/test/expand_graph_without_function.result
index 4cb2078..a28103e 100644
--- a/src/contraction/test/expand_graph_without_function.result
+++ b/src/contraction/test/expand_graph_without_function.result
@@ -1,78 +1,152 @@
-step 1: Initial edge table
-1|1|2|1|1
-2|2|3|-1|1
-3|3|4|-1|1
-4|2|5|1|1
-5|3|6|1|-1
-6|7|8|1|1
-7|8|5|1|1
-8|5|6|1|1
-9|6|9|1|1
-10|5|10|1|1
-11|6|11|1|-1
-12|10|11|1|-1
-13|11|12|1|-1
-14|10|13|1|1
-15|9|12|1|1
-16|4|9|1|1
-17|14|15|1|1
-18|16|17|1|1
-step 2: Initial vertex table
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-step 3: Adding is_contracted column to edge_table......
-step 4: Adding contracted_vertices column to edge_table.....
-step 5: Adding is_contracted column to edge_table......
-step 6: Adding contracted_vertices column to edge_table.....
-step 7: Edge table after adding columns
-1|1|2|1|1|f|
-2|2|3|-1|1|f|
-3|3|4|-1|1|f|
-4|2|5|1|1|f|
-5|3|6|1|-1|f|
-6|7|8|1|1|f|
-7|8|5|1|1|f|
-8|5|6|1|1|f|
-9|6|9|1|1|f|
-10|5|10|1|1|f|
-11|6|11|1|-1|f|
-12|10|11|1|-1|f|
-13|11|12|1|-1|f|
-14|10|13|1|1|f|
-15|9|12|1|1|f|
-16|4|9|1|1|f|
-17|14|15|1|1|f|
-18|16|17|1|1|f|
-step 8: Vertex table after adding columns
-1|f|
-2|f|
-3|f|
-4|f|
-5|f|
-6|f|
-7|f|
-8|f|
-9|f|
-10|f|
-11|f|
-12|f|
-13|f|
-14|f|
-15|f|
-16|f|
-17|f|
\ No newline at end of file
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT 'step 1: Initial edge table';
+ ?column?
+----------------------------
+ step 1: Initial edge table
+(1 row)
+
+SELECT id, source, target, cost, reverse_cost FROM edge_table;
+ id | source | target | cost | reverse_cost
+----+--------+--------+------+--------------
+ 1 | 1 | 2 | 1 | 1
+ 2 | 2 | 3 | -1 | 1
+ 3 | 3 | 4 | -1 | 1
+ 4 | 2 | 5 | 1 | 1
+ 5 | 3 | 6 | 1 | -1
+ 6 | 7 | 8 | 1 | 1
+ 7 | 8 | 5 | 1 | 1
+ 8 | 5 | 6 | 1 | 1
+ 9 | 6 | 9 | 1 | 1
+ 10 | 5 | 10 | 1 | 1
+ 11 | 6 | 11 | 1 | -1
+ 12 | 10 | 11 | 1 | -1
+ 13 | 11 | 12 | 1 | -1
+ 14 | 10 | 13 | 1 | 1
+ 15 | 9 | 12 | 1 | 1
+ 16 | 4 | 9 | 1 | 1
+ 17 | 14 | 15 | 1 | 1
+ 18 | 16 | 17 | 1 | 1
+(18 rows)
+
+SELECT 'step 2: Initial vertex table';
+ ?column?
+------------------------------
+ step 2: Initial vertex table
+(1 row)
+
+SELECT id FROM edge_table_vertices_pgr;
+ id
+----
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+(17 rows)
+
+SELECT 'step 3: Adding is_contracted column to edge_table......';
+ ?column?
+---------------------------------------------------------
+ step 3: Adding is_contracted column to edge_table......
+(1 row)
+
+ALTER TABLE edge_table ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
+SELECT 'step 4: Adding contracted_vertices column to edge_table.....';
+ ?column?
+--------------------------------------------------------------
+ step 4: Adding contracted_vertices column to edge_table.....
+(1 row)
+
+ALTER TABLE edge_table ADD contracted_vertices integer[];
+ALTER TABLE
+SELECT 'step 5: Adding is_contracted column to edge_table......';
+ ?column?
+---------------------------------------------------------
+ step 5: Adding is_contracted column to edge_table......
+(1 row)
+
+ALTER TABLE edge_table_vertices_pgr ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
+SELECT 'step 6: Adding contracted_vertices column to edge_table.....';
+ ?column?
+--------------------------------------------------------------
+ step 6: Adding contracted_vertices column to edge_table.....
+(1 row)
+
+ALTER TABLE edge_table_vertices_pgr ADD contracted_vertices integer[];
+ALTER TABLE
+SELECT 'step 7: Edge table after adding columns';
+ ?column?
+-----------------------------------------
+ step 7: Edge table after adding columns
+(1 row)
+
+SELECT id, source, target, cost, reverse_cost, is_contracted, contracted_vertices FROM edge_table;
+ id | source | target | cost | reverse_cost | is_contracted | contracted_vertices
+----+--------+--------+------+--------------+---------------+---------------------
+ 1 | 1 | 2 | 1 | 1 | f |
+ 2 | 2 | 3 | -1 | 1 | f |
+ 3 | 3 | 4 | -1 | 1 | f |
+ 4 | 2 | 5 | 1 | 1 | f |
+ 5 | 3 | 6 | 1 | -1 | f |
+ 6 | 7 | 8 | 1 | 1 | f |
+ 7 | 8 | 5 | 1 | 1 | f |
+ 8 | 5 | 6 | 1 | 1 | f |
+ 9 | 6 | 9 | 1 | 1 | f |
+ 10 | 5 | 10 | 1 | 1 | f |
+ 11 | 6 | 11 | 1 | -1 | f |
+ 12 | 10 | 11 | 1 | -1 | f |
+ 13 | 11 | 12 | 1 | -1 | f |
+ 14 | 10 | 13 | 1 | 1 | f |
+ 15 | 9 | 12 | 1 | 1 | f |
+ 16 | 4 | 9 | 1 | 1 | f |
+ 17 | 14 | 15 | 1 | 1 | f |
+ 18 | 16 | 17 | 1 | 1 | f |
+(18 rows)
+
+SELECT 'step 8: Vertex table after adding columns';
+ ?column?
+-------------------------------------------
+ step 8: Vertex table after adding columns
+(1 row)
+
+SELECT id, is_contracted, contracted_vertices FROM edge_table_vertices_pgr;
+ id | is_contracted | contracted_vertices
+----+---------------+---------------------
+ 1 | f |
+ 2 | f |
+ 3 | f |
+ 4 | f |
+ 5 | f |
+ 6 | f |
+ 7 | f |
+ 8 | f |
+ 9 | f |
+ 10 | f |
+ 11 | f |
+ 12 | f |
+ 13 | f |
+ 14 | f |
+ 15 | f |
+ 16 | f |
+ 17 | f |
+(17 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/proof_of_concept.result b/src/contraction/test/proof_of_concept.result
index 480b539..1e9f91c 100644
--- a/src/contraction/test/proof_of_concept.result
+++ b/src/contraction/test/proof_of_concept.result
@@ -1,47 +1,137 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
Adding an additional column to store if its part of the contracted graph
+ALTER TABLE edge_table ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
Adding a new edge joining vertices 3 and 5 with cost=2 to the edge table
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+VALUES (19, 3, 5, 2, 2, true);
+INSERT 0 1
Adding a new edge joining vertices 3 and 9 with cost=2 to the edge table
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+VALUES (20, 3, 9, 2, 2, true);
+INSERT 0 1
Adding a new edge joining vertices 5 and 11 with cost=2 to the edge table
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+VALUES (21, 5, 11, 2, 2, true);
+INSERT 0 1
Adding a new edge joining vertices 9 and 11 with cost=2 to the edge table
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+VALUES (22, 9, 11, 2, 2, true);
+INSERT 0 1
Case 1: Both source and target belong to the contracted graph.
We are going to route from 3 to 11
Since 3 and 11 both are in the contracted graph we need not add any vertices.
-1|1|3|5|1|0
-2|2|6|11|1|1
-3|3|11|-1|0|2
+SELECT * FROM
+pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 9, 11, 15, 17)
+ AND target IN (3, 5, 6, 9, 11, 15, 17)$$,
+ 3, 11, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 11 | 1 | 1
+ 3 | 3 | 11 | -1 | 0 | 2
+(3 rows)
+
Case 2: source belongs to a contracted graph, while target belongs to a vertex subgraph.
We are going to route from 3 to 7
Since 7 is in the contracted subgraph of vertex 5 we add {7, 8} to the vertex set, so the vertex set becomes (3, 5, 6, 7, 8, 9, 11, 15, 17)
-1|1|3|19|2|0
-2|2|5|7|1|2
-3|3|8|6|1|3
-4|4|7|-1|0|4
+SELECT * FROM pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 9, 11, 15, 17, 7, 8)
+ AND target IN (3, 5, 6, 9, 11, 15, 17, 7, 8)$$,
+ 3, 7, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 19 | 2 | 0
+ 2 | 2 | 5 | 7 | 1 | 2
+ 3 | 3 | 8 | 6 | 1 | 3
+ 4 | 4 | 7 | -1 | 0 | 4
+(4 rows)
+
Case 3: source belongs to a contracted graph, while target belongs to a edge subgraph.
We are going to route from 3 to 13
Since 13 is in the contracted subgraph of edge (5, 11) we add {10, 13} to the vertex set, so the vertex set becomes (3, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17)
-1|1|3|5|1|0
-2|2|6|11|1|1
-3|3|11|12|1|2
-4|4|10|14|1|3
-5|5|13|-1|0|4
+SELECT * FROM pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 9, 11, 15, 17, 10, 13)
+ AND target IN (3, 5, 6, 9, 11, 15, 17, 10, 13)$$,
+ 3, 13, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 11 | 1 | 1
+ 3 | 3 | 11 | 12 | 1 | 2
+ 4 | 4 | 10 | 14 | 1 | 3
+ 5 | 5 | 13 | -1 | 0 | 4
+(5 rows)
+
Case 4: source belongs to a vertex subgraph, while target belongs to a edge subgraph.
We are going to route from 7 to 13
Since 13 is in the contracted subgraph of edge (5, 11) we add {10, 13} to the vertex set, and since 7 is in the contracted subgraph of vertex 5 we add {7, 8} to the vertex sets (3, 5, 6, 7, 8, 9, 11, 15, 17)
-1|1|7|6|1|0
-2|2|8|7|1|1
-3|3|5|10|1|2
-4|4|10|14|1|3
-5|5|13|-1|0|4
-Case 5: The path contains a shortcut.
+SELECT * FROM pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13)
+ AND target IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13)$$,
+ 7, 13, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 7 | 6 | 1 | 0
+ 2 | 2 | 8 | 7 | 1 | 1
+ 3 | 3 | 5 | 10 | 1 | 2
+ 4 | 4 | 10 | 14 | 1 | 3
+ 5 | 5 | 13 | -1 | 0 | 4
+(5 rows)
+
+Case 5: The path contains a shortcut.
We are going to route from 3 to 9
Since 3 and 9 both are in the contracted graph we need not add any vertices.
-1|1|3|20|2|0
-2|2|9|-1|0|2
-19|3|5|2|2|t
-20|3|9|2|2|t
-21|5|11|2|2|t
-22|9|11|2|2|t
+SELECT * FROM pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
+ AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17)$$,
+ 3, 9, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 20 | 2 | 0
+ 2 | 2 | 9 | -1 | 0 | 2
+(2 rows)
+
+SELECT id, source, target, cost, reverse_cost, is_contracted
+FROM edge_table
+WHERE is_contracted = true
+ORDER BY id;
+ id | source | target | cost | reverse_cost | is_contracted
+----+--------+--------+------+--------------+---------------
+ 19 | 3 | 5 | 2 | 2 | t
+ 20 | 3 | 9 | 2 | 2 | t
+ 21 | 5 | 11 | 2 | 2 | t
+ 22 | 9 | 11 | 2 | 2 | t
+(4 rows)
+
This implies that it is a shortcut and should be expanded
-1|1|3|5|1|0
-2|2|6|9|1|1
-3|3|9|-1|0|2
\ No newline at end of file
+SELECT * FROM pgr_dijkstra($$
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
+ AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
+ AND is_contracted=false$$,
+ 3, 9, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 9 | 1 | 1
+ 3 | 3 | 9 | -1 | 0 | 2
+(3 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/proof_of_concept.test.sql b/src/contraction/test/proof_of_concept.test.sql
index 4d045f1..a933d9e 100644
--- a/src/contraction/test/proof_of_concept.test.sql
+++ b/src/contraction/test/proof_of_concept.test.sql
@@ -3,27 +3,27 @@
ALTER TABLE edge_table ADD is_contracted BOOLEAN DEFAULT false;
\echo Adding a new edge joining vertices 3 and 5 with cost=2 to the edge table
-INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
VALUES (19, 3, 5, 2, 2, true);
\echo Adding a new edge joining vertices 3 and 9 with cost=2 to the edge table
-INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
VALUES (20, 3, 9, 2, 2, true);
\echo Adding a new edge joining vertices 5 and 11 with cost=2 to the edge table
-INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
VALUES (21, 5, 11, 2, 2, true);
\echo Adding a new edge joining vertices 9 and 11 with cost=2 to the edge table
-INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
+INSERT INTO edge_table(id, source, target, cost, reverse_cost, is_contracted)
VALUES (22, 9, 11, 2, 2, true);
\echo Case 1: Both source and target belong to the contracted graph.
\echo We are going to route from 3 to 11
-\echo Since 3 and 11 both are in the contracted graph we need not add any vertices.
-SELECT * FROM
+\echo Since 3 and 11 both are in the contracted graph we need not add any vertices.
+SELECT * FROM
pgr_dijkstra($$
SELECT id, source, target, cost, reverse_cost
FROM edge_table
@@ -42,47 +42,47 @@ SELECT * FROM pgr_dijkstra($$
AND target IN (3, 5, 6, 9, 11, 15, 17, 7, 8)$$,
3, 7, false);
-\echo Case 3: source belongs to a contracted graph, while target belongs to a edge subgraph.
+\echo Case 3: source belongs to a contracted graph, while target belongs to a edge subgraph.
\echo We are going to route from 3 to 13
\echo Since 13 is in the contracted subgraph of edge (5, 11) we add {10, 13} to the vertex set, so the vertex set becomes (3, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17)
SELECT * FROM pgr_dijkstra($$
SELECT id, source, target, cost, reverse_cost
FROM edge_table
- WHERE source IN (3, 5, 6, 9, 11, 15, 17, 10, 13)
+ WHERE source IN (3, 5, 6, 9, 11, 15, 17, 10, 13)
AND target IN (3, 5, 6, 9, 11, 15, 17, 10, 13)$$,
3, 13, false);
-\echo Case 4: source belongs to a vertex subgraph, while target belongs to a edge subgraph.
+\echo Case 4: source belongs to a vertex subgraph, while target belongs to a edge subgraph.
\echo We are going to route from 7 to 13
\echo Since 13 is in the contracted subgraph of edge (5, 11) we add {10, 13} to the vertex set, and since 7 is in the contracted subgraph of vertex 5 we add {7, 8} to the vertex sets (3, 5, 6, 7, 8, 9, 11, 15, 17)
SELECT * FROM pgr_dijkstra($$
SELECT id, source, target, cost, reverse_cost
- FROM edge_table
- WHERE source IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13)
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13)
AND target IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13)$$,
7, 13, false);
\echo Case 5: The path contains a shortcut.
\echo We are going to route from 3 to 9
-\echo Since 3 and 9 both are in the contracted graph we need not add any vertices.
+\echo Since 3 and 9 both are in the contracted graph we need not add any vertices.
SELECT * FROM pgr_dijkstra($$
- SELECT id, source, target, cost, reverse_cost
+ SELECT id, source, target, cost, reverse_cost
FROM edge_table
WHERE source IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17)$$,
3, 9, false);
-SELECT id, source, target, cost, reverse_cost, is_contracted
-FROM edge_table
-WHERE is_contracted = true
+SELECT id, source, target, cost, reverse_cost, is_contracted
+FROM edge_table
+WHERE is_contracted = true
ORDER BY id;
\echo This implies that it is a shortcut and should be expanded
SELECT * FROM pgr_dijkstra($$
- SELECT id, source, target, cost, reverse_cost
- FROM edge_table
- WHERE source IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
- AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
+ SELECT id, source, target, cost, reverse_cost
+ FROM edge_table
+ WHERE source IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
+ AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17)
AND is_contracted=false$$,
3, 9, false);
diff --git a/src/contraction/test/proof_of_concept_1.result b/src/contraction/test/proof_of_concept_1.result
index a414eeb..8bf02ff 100644
--- a/src/contraction/test/proof_of_concept_1.result
+++ b/src/contraction/test/proof_of_concept_1.result
@@ -1,68 +1,135 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
Adding an additional column to store if its part of the contracted graph
+ALTER TABLE edge_table ADD is_contracted BOOLEAN DEFAULT false;
+ALTER TABLE
Adding a new edges joining vertices 3 and 5 with cost=2 to the edge table
+INSERT INTO edge_table(source, target, cost, reverse_cost, is_contracted)
+VALUES (3, 5, 2, 2, true);
+INSERT 0 1
Adding a new edges joining vertices 3 and 9 with cost=2 to the edge table
+INSERT INTO edge_table(source, target, cost, reverse_cost, is_contracted)
+VALUES (3, 9, 2, 2, true);
+INSERT 0 1
Adding a new edges joining vertices 5 and 11 with cost=2 to the edge table
+INSERT INTO edge_table(source, target, cost, reverse_cost, is_contracted)
+VALUES (5, 11, 2, 2, true);
+INSERT 0 1
Adding a new edges joining vertices 9 and 11 with cost=2 to the edge table
+INSERT INTO edge_table(source, target, cost, reverse_cost, is_contracted)
+VALUES (9, 11, 2, 2, true);
+INSERT 0 1
Case 1: Both source and target belong to the contracted graph.
We are going to route from 3 to 11
Since 3 and 11 both are in the contracted graph we need not add any vertices.
-1|1|3|5|1|0
-2|2|6|11|1|1
-3|3|11|-1|0|2
+SELECT * FROM
+pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 9, 11, 15, 17) AND target IN (3, 5, 6, 9, 11, 15, 17) AND is_contracted=false',
+3, 11, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 11 | 1 | 1
+ 3 | 3 | 11 | -1 | 0 | 2
+(3 rows)
+
Case 2: source belongs to a contracted graph, while target belongs to a vertex subgraph.
We are going to route from 3 to 7
Since 7 is in the contracted subgraph of vertex 5 we add {7, 8} to the vertex set, so the vertex set becomes (3, 5, 6, 7, 8, 9, 11, 15, 17)
-1|1|3|5|1|0
-2|2|6|8|1|1
-3|3|5|7|1|2
-4|4|8|6|1|3
-5|5|7|-1|0|4
+SELECT * FROM
+pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 9, 11, 15, 17, 7, 8) AND target IN (3, 5, 6, 9, 11, 15, 17, 7, 8) AND is_contracted=false',
+3, 7, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 8 | 1 | 1
+ 3 | 3 | 5 | 7 | 1 | 2
+ 4 | 4 | 8 | 6 | 1 | 3
+ 5 | 5 | 7 | -1 | 0 | 4
+(5 rows)
+
Case 3: source belongs to a contracted graph, while target belongs to a edge subgraph.
We are going to route from 3 to 13
Since 13 is in the contracted subgraph of edge (5, 11) we add {10, 13} to the vertex set, so the vertex set becomes (3, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17)
-1|1|3|5|1|0
-2|2|6|8|1|1
-3|3|5|10|1|2
-4|4|10|14|1|3
-5|5|13|-1|0|4
+SELECT * FROM
+pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 9, 11, 15, 17, 10, 13) AND target IN (3, 5, 6, 9, 11, 15, 17, 10, 13) AND is_contracted=false',
+3, 13, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 8 | 1 | 1
+ 3 | 3 | 5 | 10 | 1 | 2
+ 4 | 4 | 10 | 14 | 1 | 3
+ 5 | 5 | 13 | -1 | 0 | 4
+(5 rows)
+
Case 4: source belongs to a vertex subgraph, while target belongs to a edge subgraph.
We are going to route from 7 to 13
Since 13 is in the contracted subgraph of edge (5, 11) we add {10, 13} to the vertex set, and since 7 is in the contracted subgraph of vertex 5 we add {7, 8} to the vertex sets (3, 5, 6, 7, 8, 9, 11, 15, 17)
-1|1|7|6|1|0
-2|2|8|7|1|1
-3|3|5|10|1|2
-4|4|10|14|1|3
-5|5|13|-1|0|4
+SELECT * FROM
+pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13) AND target IN (3, 5, 6, 9, 11, 15, 17, 7, 8, 10, 13) AND is_contracted=false',
+7, 13, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 7 | 6 | 1 | 0
+ 2 | 2 | 8 | 7 | 1 | 1
+ 3 | 3 | 5 | 10 | 1 | 2
+ 4 | 4 | 10 | 14 | 1 | 3
+ 5 | 5 | 13 | -1 | 0 | 4
+(5 rows)
+
Case 5: The path contains a shortcut.
-
+
We are going to route from 3 to 9
Since 3 and 9 both are in the contracted graph we need not add any vertices.
-1|1|3|5|1|0
-2|2|6|9|1|1
-3|3|9|-1|0|2
-1|1|2|1|1|f
-2|2|3|-1|1|f
-3|3|4|-1|1|f
-4|2|5|1|1|f
-5|3|6|1|-1|f
-6|7|8|1|1|f
-7|8|5|1|1|f
-8|5|6|1|1|f
-9|6|9|1|1|f
-10|5|10|1|1|f
-11|6|11|1|-1|f
-12|10|11|1|-1|f
-13|11|12|1|-1|f
-14|10|13|1|1|f
-15|9|12|1|1|f
-16|4|9|1|1|f
-17|14|15|1|1|f
-18|16|17|1|1|f
-19|3|5|2|2|t
-20|3|9|2|2|t
-21|5|11|2|2|t
-22|9|11|2|2|t
+SELECT * FROM
+pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 7, 8, 9, 11, 15, 17) AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17) AND is_contracted=false',
+3, 9, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 9 | 1 | 1
+ 3 | 3 | 9 | -1 | 0 | 2
+(3 rows)
+
+SELECT id, source, target, cost, reverse_cost, is_contracted FROM edge_table ORDER BY id;
+ id | source | target | cost | reverse_cost | is_contracted
+----+--------+--------+------+--------------+---------------
+ 1 | 1 | 2 | 1 | 1 | f
+ 2 | 2 | 3 | -1 | 1 | f
+ 3 | 3 | 4 | -1 | 1 | f
+ 4 | 2 | 5 | 1 | 1 | f
+ 5 | 3 | 6 | 1 | -1 | f
+ 6 | 7 | 8 | 1 | 1 | f
+ 7 | 8 | 5 | 1 | 1 | f
+ 8 | 5 | 6 | 1 | 1 | f
+ 9 | 6 | 9 | 1 | 1 | f
+ 10 | 5 | 10 | 1 | 1 | f
+ 11 | 6 | 11 | 1 | -1 | f
+ 12 | 10 | 11 | 1 | -1 | f
+ 13 | 11 | 12 | 1 | -1 | f
+ 14 | 10 | 13 | 1 | 1 | f
+ 15 | 9 | 12 | 1 | 1 | f
+ 16 | 4 | 9 | 1 | 1 | f
+ 17 | 14 | 15 | 1 | 1 | f
+ 18 | 16 | 17 | 1 | 1 | f
+ 23 | 3 | 5 | 2 | 2 | t
+ 24 | 3 | 9 | 2 | 2 | t
+ 25 | 5 | 11 | 2 | 2 | t
+ 26 | 9 | 11 | 2 | 2 | t
+(22 rows)
+
This implies that it is a shortcut and should be expanded
-1|1|3|5|1|0
-2|2|6|9|1|1
-3|3|9|-1|0|2
\ No newline at end of file
+SELECT * FROM
+pgr_dijkstra('SELECT id, source, target, cost, reverse_cost FROM edge_table where source IN (3, 5, 6, 7, 8, 9, 11, 15, 17) AND target IN (3, 5, 6, 7, 8, 9, 11, 15, 17) AND is_contracted=false',
+3, 9, false);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 3 | 5 | 1 | 0
+ 2 | 2 | 6 | 9 | 1 | 1
+ 3 | 3 | 9 | -1 | 0 | 2
+(3 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/return_types.result b/src/contraction/test/return_types.result
index fc9f9f1..824b201 100644
--- a/src/contraction/test/return_types.result
+++ b/src/contraction/test/return_types.result
@@ -1,43 +1,121 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
+/*
+bigint (-9,223,372,036,854,775,808) to (9,223,372,036,854,775,807)
+int (-2,147,483,648) to (2,147,483,647)
+*/
+/*
+Testing for ids > 10^8
+*/
+UPDATE edge_table
+SET id = id + POWER(10, 8),
+ source = source + POWER(10, 8),
+ target = target + POWER(10, 8);
+UPDATE 18
--q2
+UPDATE edge_table_vertices_pgr
+SET id = id + POWER(10, 8);
+UPDATE 17
--q3
-1|v|100000002|{100000001}|-1|-1|-1
-2|v|100000005|{100000007,100000008}|-1|-1|-1
-3|v|100000010|{100000013}|-1|-1|-1
-4|v|100000015|{100000014}|-1|-1|-1
-5|v|100000017|{100000016}|-1|-1|-1
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+-----------+-----------------------+--------+--------+------
+ 1 | v | 100000002 | {100000001} | -1 | -1 | -1
+ 2 | v | 100000005 | {100000007,100000008} | -1 | -1 | -1
+ 3 | v | 100000010 | {100000013} | -1 | -1 | -1
+ 4 | v | 100000015 | {100000014} | -1 | -1 | -1
+ 5 | v | 100000017 | {100000016} | -1 | -1 | -1
+(5 rows)
+
--q4
-1|e|-1|{100000004}|100000009|100000003|2
-2|e|-2|{100000008}|100000005|100000007|2
-3|e|-3|{100000008}|100000007|100000005|2
-4|e|-4|{100000012}|100000011|100000009|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+-----------+-----------+------
+ 1 | e | -1 | {100000004} | 100000009 | 100000003 | 2
+ 2 | e | -2 | {100000008} | 100000005 | 100000007 | 2
+ 3 | e | -3 | {100000008} | 100000007 | 100000005 | 2
+ 4 | e | -4 | {100000012} | 100000011 | 100000009 | 2
+(4 rows)
+
--q5
-1|v|100000005|{100000007,100000008}|-1|-1|-1
-2|v|100000015|{100000014}|-1|-1|-1
-3|v|100000017|{100000016}|-1|-1|-1
-4|e|-1|{100000001,100000002}|100000003|100000005|2
-5|e|-2|{100000004}|100000009|100000003|2
-6|e|-3|{100000010,100000013}|100000005|100000011|2
-7|e|-4|{100000012}|100000011|100000009|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[1, 2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+-----------+-----------------------+-----------+-----------+------
+ 1 | v | 100000005 | {100000007,100000008} | -1 | -1 | -1
+ 2 | v | 100000015 | {100000014} | -1 | -1 | -1
+ 3 | v | 100000017 | {100000016} | -1 | -1 | -1
+ 4 | e | -1 | {100000001,100000002} | 100000003 | 100000005 | 2
+ 5 | e | -2 | {100000004} | 100000009 | 100000003 | 2
+ 6 | e | -3 | {100000010,100000013} | 100000005 | 100000011 | 2
+ 7 | e | -4 | {100000012} | 100000011 | 100000009 | 2
+(7 rows)
+
+ROLLBACK;
+ROLLBACK
+/*
+Testing for ids > 10^12
+*/
+BEGIN;
+BEGIN
--q6
+UPDATE edge_table
+SET id = id + POWER(10, 12),
+ source = source + POWER(10, 12),
+ target = target + POWER(10, 12);
+UPDATE 18
--q7
+UPDATE edge_table_vertices_pgr
+SET id = id + POWER(10, 12);
+UPDATE 17
--q8
-1|v|1000000000002|{1000000000001}|-1|-1|-1
-2|v|1000000000005|{1000000000007,1000000000008}|-1|-1|-1
-3|v|1000000000010|{1000000000013}|-1|-1|-1
-4|v|1000000000015|{1000000000014}|-1|-1|-1
-5|v|1000000000017|{1000000000016}|-1|-1|-1
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+---------------+-------------------------------+--------+--------+------
+ 1 | v | 1000000000002 | {1000000000001} | -1 | -1 | -1
+ 2 | v | 1000000000005 | {1000000000007,1000000000008} | -1 | -1 | -1
+ 3 | v | 1000000000010 | {1000000000013} | -1 | -1 | -1
+ 4 | v | 1000000000015 | {1000000000014} | -1 | -1 | -1
+ 5 | v | 1000000000017 | {1000000000016} | -1 | -1 | -1
+(5 rows)
+
--q9
-1|e|-1|{1000000000004}|1000000000009|1000000000003|2
-2|e|-2|{1000000000008}|1000000000005|1000000000007|2
-3|e|-3|{1000000000008}|1000000000007|1000000000005|2
-4|e|-4|{1000000000012}|1000000000011|1000000000009|2
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+---------------+---------------+------
+ 1 | e | -1 | {1000000000004} | 1000000000009 | 1000000000003 | 2
+ 2 | e | -2 | {1000000000008} | 1000000000005 | 1000000000007 | 2
+ 3 | e | -3 | {1000000000008} | 1000000000007 | 1000000000005 | 2
+ 4 | e | -4 | {1000000000012} | 1000000000011 | 1000000000009 | 2
+(4 rows)
+
--q10
-1|v|1000000000005|{1000000000007,1000000000008}|-1|-1|-1
-2|v|1000000000015|{1000000000014}|-1|-1|-1
-3|v|1000000000017|{1000000000016}|-1|-1|-1
-4|e|-1|{1000000000001,1000000000002}|1000000000003|1000000000005|2
-5|e|-2|{1000000000004}|1000000000009|1000000000003|2
-6|e|-3|{1000000000010,1000000000013}|1000000000005|1000000000011|2
-7|e|-4|{1000000000012}|1000000000011|1000000000009|2
---q11
\ No newline at end of file
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[1, 2]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+---------------+-------------------------------+---------------+---------------+------
+ 1 | v | 1000000000005 | {1000000000007,1000000000008} | -1 | -1 | -1
+ 2 | v | 1000000000015 | {1000000000014} | -1 | -1 | -1
+ 3 | v | 1000000000017 | {1000000000016} | -1 | -1 | -1
+ 4 | e | -1 | {1000000000001,1000000000002} | 1000000000003 | 1000000000005 | 2
+ 5 | e | -2 | {1000000000004} | 1000000000009 | 1000000000003 | 2
+ 6 | e | -3 | {1000000000010,1000000000013} | 1000000000005 | 1000000000011 | 2
+ 7 | e | -4 | {1000000000012} | 1000000000011 | 1000000000009 | 2
+(7 rows)
+
+--q11
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/sampleData.result b/src/contraction/test/sampleData.result
index ff145dc..00be4ca 100644
--- a/src/contraction/test/sampleData.result
+++ b/src/contraction/test/sampleData.result
@@ -1,6 +1,19 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q0 Checking dead end contraction for workshop data
-1|v|2|{1}|-1|-1|-1
-2|v|5|{7,8}|-1|-1|-1
-3|v|10|{13}|-1|-1|-1
-4|v|15|{14}|-1|-1|-1
-5|v|17|{16}|-1|-1|-1
+SELECT * FROM pgr_contractGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[1]::integer[], 1, ARRAY[]::BIGINT[], true);
+ seq | type | id | contracted_vertices | source | target | cost
+-----+------+----+---------------------+--------+--------+------
+ 1 | v | 2 | {1} | -1 | -1 | -1
+ 2 | v | 5 | {7,8} | -1 | -1 | -1
+ 3 | v | 10 | {13} | -1 | -1 | -1
+ 4 | v | 15 | {14} | -1 | -1 | -1
+ 5 | v | 17 | {16} | -1 | -1 | -1
+(5 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/contraction/test/test.conf b/src/contraction/test/test.conf
index 4e98f98..3d8917b 100644
--- a/src/contraction/test/test.conf
+++ b/src/contraction/test/test.conf
@@ -5,23 +5,28 @@
'comment' => 'Contraction test for any versions.',
'data' => [ ],
'tests' => [qw(
+ doc-contraction
+ doc-contractGraph
+ proof_of_concept
+
sampleData
return_types
- proof_of_concept
proof_of_concept_1
expand_graph_without_function
expand_graph
- doc-contraction
directed-development
directed-deadend
directed-linear
- doc-contractGraph
)],
'documentation' => [qw(
- doc-contractGraph
+
doc-contraction
+ doc-contractGraph
+ proof_of_concept
+
)],
+
'nottested' => [qw(
)]
},
diff --git a/src/convenience/doc/doc-conversion.queries b/src/convenience/doc/doc-conversion.queries
deleted file mode 100644
index 083eeda..0000000
--- a/src/convenience/doc/doc-conversion.queries
+++ /dev/null
@@ -1,71 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM pgr_pointtoedgenode('edge_table', 'POINT(2 0)'::geometry, 0.02);
- pgr_pointtoedgenode
----------------------
- 1
-(1 row)
-
-SELECT * FROM pgr_pointtoedgenode('edge_table', 'POINT(3 2)'::geometry, 0.02);
- pgr_pointtoedgenode
----------------------
- 6
-(1 row)
-
---q2
-SELECT st_astext(e) FROM (SELECT unnest(pgr_flipedges(ARRAY[
-'LINESTRING(2 1,2 2)'::geometry,
-'LINESTRING(2 2,2 3)'::geometry,
-'LINESTRING(2 2,2 3)'::geometry,
-'LINESTRING(2 2,3 2)'::geometry,
-'LINESTRING(3 2,4 2)'::geometry,
-'LINESTRING(4 1,4 2)'::geometry,
-'LINESTRING(3 1,4 1)'::geometry,
-'LINESTRING(2 1,3 1)'::geometry,
-'LINESTRING(2 0,2 1)'::geometry,
-'LINESTRING(2 0,2 1)'::geometry]::geometry[])) AS e) AS foo;
-NOTICE: Deperecated function: pgr_flipEdges
- st_astext
----------------------
- LINESTRING(2 1,2 2)
- LINESTRING(2 2,2 3)
- LINESTRING(2 3,2 2)
- LINESTRING(2 2,3 2)
- LINESTRING(3 2,4 2)
- LINESTRING(4 2,4 1)
- LINESTRING(4 1,3 1)
- LINESTRING(3 1,2 1)
- LINESTRING(2 1,2 0)
- LINESTRING(2 0,2 1)
-(10 rows)
-
---q3
-SELECT ST_AsText(g) FROM
- (SELECT unnest(pgr_texttopoints('2,0;2,1;3,1;2,2', 0)) AS g) AS foo;
-NOTICE: Deperecated function: pgr_textToPoints
- st_astext
-------------
- POINT(2 0)
- POINT(2 1)
- POINT(3 1)
- POINT(2 2)
-(4 rows)
-
---q4
-SELECT * FROM pgr_pointstovids(
- pgr_texttopoints('2,0;2,1;3,1;2,2', 0),
- 'edge_table'
-);
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deperecated function: pgr_pointsToVids
- pgr_pointstovids
-------------------
- {1,2,3,5}
-(1 row)
-
---q5
-ROLLBACK;
-ROLLBACK
diff --git a/src/convenience/doc/doc-matrix.queries b/src/convenience/doc/doc-matrix.queries
deleted file mode 100644
index 179cf13..0000000
--- a/src/convenience/doc/doc-matrix.queries
+++ /dev/null
@@ -1,121 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM pgr_pointstodmatrix(pgr_texttopoints('2,0;2,1;3,1;2,2', 0));
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deprecated function pgr_pointsToDMatrix
- dmatrix | ids
----------------------------------------------------------------------------------------------------+-----------
- {{0,1,1.4142135623731,2},{1,0,1,1},{1.4142135623731,1,0,1.4142135623731},{2,1,1.4142135623731,0}} | {1,2,3,4}
-(1 row)
-
---q1.1
-SELECT * from pgr_tsp(
- (SELECT dMatrix FROM pgr_pointstodmatrix(pgr_texttopoints('2,0;2,1;3,1;2,2', 0))
- ),
- 1
-);
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deprecated function pgr_pointsToDMatrix
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
- seq | id
------+----
- 0 | 1
- 1 | 3
- 2 | 2
- 3 | 0
-(4 rows)
-
---q2
-SELECT * FROM pgr_vidstodmatrix(
- ARRAY[1,2,3,5],
- ARRAY(select the_geom FROM edge_table_vertices_pgr WHERE id in (1,2,3,5)),
- 'edge_table'
-);
-NOTICE: Deprecated function pgr_vidsToDMatrix
- dmatrix | ids
--------------------------------------------+-----------
- {{0,1,4,2},{1,0,3,1},{4,3,0,2},{2,1,2,0}} | {1,2,3,5}
-(1 row)
-
---q2.1
-SELECT * FROM pgr_vidstodmatrix(
- pgr_pointstovids(pgr_texttopoints('2,0;2,1;3,1;2,2', 0), 'edge_table'),
- pgr_texttopoints('2,0;2,1;3,1;2,2', 0),
- 'edge_table');
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deperecated function: pgr_pointsToVids
-NOTICE: Deprecated function pgr_vidsToDMatrix
- dmatrix | ids
--------------------------------------------+-----------
- {{0,1,4,2},{1,0,3,1},{4,3,0,2},{2,1,2,0}} | {1,2,3,5}
-(1 row)
-
---q2.2
-SELECT * FROM pgr_tsp(
- (SELECT dMatrix FROM pgr_vidstodmatrix(
- pgr_pointstovids(pgr_texttopoints('2,0;2,1;3,1;2,2', 0), 'edge_table'),
- pgr_texttopoints('2,0;2,1;3,1;2,2', 0),
- 'edge_table')
- ),
- 1
-);
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deperecated function: pgr_pointsToVids
-NOTICE: Deprecated function pgr_vidsToDMatrix
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
- seq | id
------+----
- 0 | 1
- 1 | 2
- 2 | 3
- 3 | 0
-(4 rows)
-
---q3
-SELECT * FROM pgr_vidsToDMatrix(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- array[1,2,3,5],
- true, true, false);
-NOTICE: Deprecated function pgr_vidsToDMatrix
- pgr_vidstodmatrix
--------------------------------------------
- {{0,1,2,2},{1,0,1,1},{2,1,0,4},{2,1,4,0}}
-(1 row)
-
-SELECT * FROM pgr_vidsToDMatrix(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- array[1,2,3,5],
- true, true, true);
-NOTICE: Deprecated function pgr_vidsToDMatrix
- pgr_vidstodmatrix
--------------------------------------------
- {{0,1,2,2},{1,0,1,1},{2,1,0,2},{2,1,2,0}}
-(1 row)
-
---q4
-SELECT * FROM pgr_tsp(
- (SELECT pgr_vidsToDMatrix(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- array[1,2,3,5],
- true, true, true)
- ),
- 1
-);
-NOTICE: Deprecated function pgr_vidsToDMatrix
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
- seq | id
------+----
- 0 | 1
- 1 | 2
- 2 | 3
- 3 | 0
-(4 rows)
-
---q5
-ROLLBACK;
-ROLLBACK
diff --git a/src/convenience/doc/pgr_pointToEdgeNode.rst b/src/convenience/doc/pgr_pointToEdgeNode.rst
deleted file mode 100644
index 72ef049..0000000
--- a/src/convenience/doc/pgr_pointToEdgeNode.rst
+++ /dev/null
@@ -1,86 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_point_to_edgenode:
-
-pgr_pointToEdgeNode - Proposed
-==============================================================================
-
-.. index::
- single: pointToEdgeNode(Complete Signature) --proposed
-
-Name
-------------------------------------------------------------------------------
-
-``pgr_pointToEdgeNode`` - Converts a point to a ``vertex_id`` based on closest edge.
-
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-Synopsis
-------------------------------------------------------------------------------
-
-The function returns:
-
- - ``integer`` that is the vertex id of the closest edge in the ``edges`` table within the ``tol`` tolerance of ``pnt``. The vertex is selected by projection the ``pnt`` onto the edge and selecting which vertex is closer along the edge.
-
-.. code-block:: sql
-
- integer pgr_pointToEdgeNode(edges text, pnt geometry, tol float8)
-
-
-Description
------------------------------------------------------------------------------
-
-Given an table ``edges`` with a spatial index on ``the_geom`` and a point geometry search for the closest edge within ``tol`` distance to the edges then compute the projection of the point onto the line segment and select source or target based on whether the projected point is closer to the respective end and return the source or target value.
-
-.. rubric:: Parameters
-
-The function accepts the following parameters:
-
-:edges: ``text`` The name of the edge table or view. (may contain the schema name AS well).
-:pnt: ``geometry`` A point geometry object in the same SRID as ``edges``.
-:tol: ``float8`` The maximum search distance for an edge.
-
-.. warning::
-
- If no edge is within tol distance then return -1
-
-The ``edges`` table must have the following columns:
-
- * ``source``
- * ``target``
- * ``the_geom``
-
-.. rubric:: History
-
-* Proposed in version 2.1.0
-
-
-Examples
------------------------------------------------------------------------------
-
-.. literalinclude:: doc-conversion.queries
- :start-after: --q1
- :end-before: --q2
-
-The example uses the :ref:`sampledata` network.
-
-See Also
------------------------------------------------------------------------------
-
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/convenience/sql/CMakeLists.txt b/src/convenience/sql/CMakeLists.txt
deleted file mode 100644
index afc5cc9..0000000
--- a/src/convenience/sql/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/pgrouting_conversion_tools.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/pgrouting_dmatrix_tools.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/pgr_vidsToDMatrix.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/convenience/sql/pgr_vidsToDMatrix.sql b/src/convenience/sql/pgr_vidsToDMatrix.sql
deleted file mode 100644
index 706f16a..0000000
--- a/src/convenience/sql/pgr_vidsToDMatrix.sql
+++ /dev/null
@@ -1,92 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
-RETURNS float8[] AS
-$BODY$
-DECLARE
-directed BOOLEAN;
-has_reverse BOOLEAN;
-edges_sql TEXT;
-dmatrix_row float8[];
-dmatrix float8[];
-cell RECORD;
-unique_vids INTEGER[];
-total BIGINT;
-from_v BIGINT;
-to_v BIGINT;
-BEGIN
- RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
- has_reverse =_pgr_parameter_check('dijkstra', sql, false);
- edges_sql = sql;
- IF (has_reverse != has_rcost) THEN
- IF (has_reverse) THEN
- sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
- ELSE
- raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
- END IF;
- END IF;
-
- unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
-
- IF want_symmetric THEN
- directed = false;
- ELSE
- directed = dir;
- END IF;
-
- total := array_length(unique_vids, 1);
-
- -- initializing dmatrix
- FOR i in 1 .. total LOOP
- dmatrix_row := dmatrix_row || '+Infinity'::float8;
- END LOOP;
- FOR i in 1 .. total LOOP
- dmatrix := dmatrix || ARRAY[dmatrix_row];
- dmatrix[i][i] = 0;
- END LOOP;
-
- CREATE TEMP TABLE __x___y____temp AS
- WITH result AS
- (SELECT unnest(unique_vids) AS vid)
- SELECT row_number() OVER() AS idx, vid FROM result;
-
- FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
- SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
- SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
-
- dmatrix[from_v][to_v] = cell.agg_cost;
- dmatrix[to_v][from_v] = cell.agg_cost;
- END LOOP;
-
- DROP TABLE IF EXISTS __x___y____temp;
- RETURN dmatrix;
-
- EXCEPTION WHEN others THEN
- DROP TABLE IF EXISTS __x___y____temp;
- raise exception '% %', SQLERRM, SQLSTATE;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100;
-
diff --git a/src/convenience/sql/pgrouting_conversion_tools.sql b/src/convenience/sql/pgrouting_conversion_tools.sql
deleted file mode 100644
index ca9a58d..0000000
--- a/src/convenience/sql/pgrouting_conversion_tools.sql
+++ /dev/null
@@ -1,186 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
- returns integer as
-$body$
-/*
- * pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
- *
- * Given and table of edges with a spatial index on the_geom
- * and a point geometry search for the closest edge within tol distance to the edges
- * then compute the projection of the point onto the line segment and select source or target
- * based on whether the projected point is closer to the respective end and return source or target.
- * If no edge is within tol distance then return -1
-*/
-declare
- rr record;
- pct float;
- debuglevel text;
-
-begin
- -- find the closest edge within tol distance
- execute 'select * from ' || _pgr_quote_ident(edges) ||
- ' where st_dwithin(''' || pnt::text ||
- '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
- '''::geometry, the_geom) asc limit 1' into rr;
-
- if rr.the_geom is not null then
- -- deal with MULTILINESTRINGS
- if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
- rr.the_geom := ST_GeometryN(rr.the_geom, 1);
- end if;
-
- -- project the point onto the linestring
- execute 'show client_min_messages' into debuglevel;
- SET client_min_messages='ERROR';
- pct := st_line_locate_point(rr.the_geom, pnt);
- execute 'set client_min_messages to '|| debuglevel;
-
- -- return the node we are closer to
- if pct < 0.5 then
- return rr.source;
- else
- return rr.target;
- end if;
- else
- -- return a failure to find an edge within tol distance
- return -1;
- end if;
-end;
-$body$
- language plpgsql volatile
- cost 5;
-
-
-----------------------------------------------------------------------------
-
-create or replace function pgr_flipedges(ga geometry[])
- returns geometry[] as
-$body$
-/*
- * pgr_flipedges(ga geometry[])
- *
- * Given an array of linestrings that are supposedly connected end to end like the results
- * of a route, check the edges and flip any end for end if they do not connect with the
- * previous seegment and return the array with the segments flipped as appropriate.
- *
- * NOTE: no error checking is done for conditions like adjacent edges are not connected.
-*/
-declare
- nn integer;
- i integer;
- g geometry;
-
-begin
- RAISE NOTICE 'Deperecated function: pgr_flipEdges';
- -- get the count of edges, and return if only one edge
- nn := array_length(ga, 1);
- if nn=1 then
- return ga;
- end if;
-
- -- determine if first needs to be flipped
- g := _pgr_startpoint(ga[1]);
-
- -- if the start of the first is connected to the second then it needs to be flipped
- if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
- ga[1] := st_reverse(ga[1]);
- end if;
- g := _pgr_endpoint(ga[1]);
-
- -- now if the end of the last edge matchs the end of the current edge we need to flip it
- for i in 2 .. nn loop
- if _pgr_endpoint(ga[i])=g then
- ga[i] := st_reverse(ga[i]);
- end if;
- -- save the end of this edge into the last end for the next cycle
- g := _pgr_endpoint(ga[i]);
- end loop;
-
- return ga;
-end;
-$body$
- language plpgsql immutable;
-
-
-------------------------------------------------------------------------------
-
-create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
- returns geometry[] as
-$body$
-/*
- * pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
- *
- * Given a text string of the format "x,y;x,y;x,y;..." and the srid to use,
- * split the string and create and array point geometries
-*/
-declare
- a text[];
- t text;
- p geometry;
- g geometry[];
-
-begin
- RAISE NOTICE 'Deperecated function: pgr_textToPoints';
- -- convert commas to space and split on ';'
- a := string_to_array(replace(pnts, ',', ' '), ';');
- -- convert each 'x y' into a point geometry and concattenate into a new array
- for t in select unnest(a) loop
- p := st_pointfromtext('POINT(' || t || ')', srid);
- g := g || p;
- end loop;
-
- return g;
-end;
-$body$
- language plpgsql immutable;
-
------------------------------------------------------------------------
-
-create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
- returns integer[] as
-$body$
-/*
- * pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
- *
- * Given an array of point geometries and an edge table and a max search tol distance
- * convert points into vertex ids using pgr_pointtoedgenode()
- *
- * NOTE: You need to check the results for any vids=-1 which indicates if failed to locate an edge
-*/
-declare
- v integer[];
- g geometry;
-
-begin
- RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
- -- cycle through each point and locate the nearest edge and vertex on that edge
- for g in select unnest(pnts) loop
- v := v || pgr_pointtoedgenode(edges, g, tol);
- end loop;
-
- return v;
-end;
-$body$
- language plpgsql stable;
-
diff --git a/src/convenience/sql/pgrouting_dmatrix_tools.sql b/src/convenience/sql/pgrouting_dmatrix_tools.sql
deleted file mode 100644
index e497183..0000000
--- a/src/convenience/sql/pgrouting_dmatrix_tools.sql
+++ /dev/null
@@ -1,144 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
- returns record as
-$body$
-/*
- * pgr_pointstodmatrix(pnts geometry[], OUT dmatrix double precision[], OUT ids integer[])
- *
- * Create a distance symmetric distance matrix suitable for TSP using Euclidean distances
- * based on the st_distance(). You might want to create a variant of this the uses st_distance_sphere()
- * or st_distance_spheriod() or some other function.
- *
-*/
-declare
- r record;
-
-begin
- RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
- dmatrix := array[]::double precision[];
- ids := array[]::integer[];
-
- -- create an id for each point in the array and unnest it into a table nodes in the with clause
- for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
- -- compute a row of distances
- select i, array_agg(dist) as arow from (
- select a.id as i, b.id as j,
- case when mode=0
- then st_distance(a.p, b.p)
- else st_distance_sphere(a.p, b.p)
- end as dist
- from nodes a, nodes b
- order by a.id, b.id
- ) as foo group by i order by i loop
-
- -- you must concat an array[array[]] to make dmatrix[][]
- -- concat the row of distances to the dmatrix
- dmatrix := array_cat(dmatrix, array[r.arow]);
- ids := ids || array[r.i];
- end loop;
-end;
-$body$
- language plpgsql stable;
-
-
-------------------------------------------------------------------------------
-
-create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
- returns record as
-$body$
-/*
- * pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1),
- * OUT dmatrix double precision[], OUT ids integer[])
- *
- * This function that's an array vertex ids, the original array of points, the edge table name and a tol.
- * It then computes kdijkstra() distances for each vertex to all the other vertices and creates a symmetric
- * distances matrix suitable for TSP. The pnt array and the tol are used to establish a BBOX for limiteding
- * selection of edges.the extents of the points is expanded by tol.
- *
- * NOTES:
- * 1. we compute a symmetric matrix because TSP requires that so the distances are better the Euclidean but
- * but are not perfect
- * 2. kdijkstra() can fail to find a path between some of the vertex ids. We to not detect this other than
- * the cost might get set to -1.0, so the dmatrix should be checked for this as it makes it invalid for TSP
- *
-*/
-declare
- i integer;
- j integer;
- nn integer;
- rr record;
- bbox geometry;
- t float8[];
-
-begin
- RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
- -- check if the input arrays has any -1 values, maybe this whould be a raise exception
- if vids @> ARRAY[-1] then
- raise notice 'Some vids are undefined (-1)!';
- dmatrix := null;
- ids := null;
- return;
- end if;
-
- ids := vids;
-
- -- get the count of nodes
- nn := array_length(vids,1);
-
- -- zero out a dummy row
- for i in 1 .. nn loop
- t := t || 0.0::float8;
- end loop;
-
- -- using the dummy row, zero out the whole matrix
- for i in 1 .. nn loop
- dmatrix := dmatrix || ARRAY[t];
- end loop;
-
- for i in 1 .. nn-1 loop
- j := i;
- -- compute the bbox for the point needed for this row
- select st_expand(st_collect(pnts[id]), tol) into bbox
- from (select generate_series as id from generate_series(i, nn)) as foo;
-
- -- compute kdijkstra() for this row
- for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
- using 'select id, source, target, cost from ' || edges ||
- ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
-
- -- TODO need to check that all node were reachable from source
- -- I think unreachable paths between nodes returns cost=-1.0
-
- -- populate the matrix with the cost values, remember this is symmetric
- j := j + 1;
- -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
- dmatrix[i][j] := rr.agg_cost;
- dmatrix[j][i] := rr.agg_cost;
- end loop;
- end loop;
-
-end;
-$body$
- language plpgsql stable cost 200;
-
diff --git a/src/convenience/test/doc-conversion.result b/src/convenience/test/doc-conversion.result
deleted file mode 100644
index c7db8f3..0000000
--- a/src/convenience/test/doc-conversion.result
+++ /dev/null
@@ -1,26 +0,0 @@
---q1
-1
-6
---q2
-NOTICE: Deperecated function: pgr_flipEdges
-LINESTRING(2 1,2 2)
-LINESTRING(2 2,2 3)
-LINESTRING(2 3,2 2)
-LINESTRING(2 2,3 2)
-LINESTRING(3 2,4 2)
-LINESTRING(4 2,4 1)
-LINESTRING(4 1,3 1)
-LINESTRING(3 1,2 1)
-LINESTRING(2 1,2 0)
-LINESTRING(2 0,2 1)
---q3
-NOTICE: Deperecated function: pgr_textToPoints
-POINT(2 0)
-POINT(2 1)
-POINT(3 1)
-POINT(2 2)
---q4
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deperecated function: pgr_pointsToVids
-{1,2,3,5}
---q5
diff --git a/src/convenience/test/doc-conversion.test.sql b/src/convenience/test/doc-conversion.test.sql
deleted file mode 100644
index 5a49f71..0000000
--- a/src/convenience/test/doc-conversion.test.sql
+++ /dev/null
@@ -1,26 +0,0 @@
-\echo --q1
-SELECT * FROM pgr_pointtoedgenode('edge_table', 'POINT(2 0)'::geometry, 0.02);
-SELECT * FROM pgr_pointtoedgenode('edge_table', 'POINT(3 2)'::geometry, 0.02);
-
-\echo --q2
-SELECT st_astext(e) FROM (SELECT unnest(pgr_flipedges(ARRAY[
-'LINESTRING(2 1,2 2)'::geometry,
-'LINESTRING(2 2,2 3)'::geometry,
-'LINESTRING(2 2,2 3)'::geometry,
-'LINESTRING(2 2,3 2)'::geometry,
-'LINESTRING(3 2,4 2)'::geometry,
-'LINESTRING(4 1,4 2)'::geometry,
-'LINESTRING(3 1,4 1)'::geometry,
-'LINESTRING(2 1,3 1)'::geometry,
-'LINESTRING(2 0,2 1)'::geometry,
-'LINESTRING(2 0,2 1)'::geometry]::geometry[])) AS e) AS foo;
-\echo --q3
-SELECT ST_AsText(g) FROM
- (SELECT unnest(pgr_texttopoints('2,0;2,1;3,1;2,2', 0)) AS g) AS foo;
-
-\echo --q4
-SELECT * FROM pgr_pointstovids(
- pgr_texttopoints('2,0;2,1;3,1;2,2', 0),
- 'edge_table'
-);
-\echo --q5
diff --git a/src/convenience/test/doc-matrix.result b/src/convenience/test/doc-matrix.result
deleted file mode 100644
index 1a5b06e..0000000
--- a/src/convenience/test/doc-matrix.result
+++ /dev/null
@@ -1,44 +0,0 @@
---q1
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deprecated function pgr_pointsToDMatrix
-{{0,1,1.4142135623731,2},{1,0,1,1},{1.4142135623731,1,0,1.4142135623731},{2,1,1.4142135623731,0}}|{1,2,3,4}
---q1.1
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deprecated function pgr_pointsToDMatrix
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|3
-2|2
-3|0
---q2
-NOTICE: Deprecated function pgr_vidsToDMatrix
-{{0,1,4,2},{1,0,3,1},{4,3,0,2},{2,1,2,0}}|{1,2,3,5}
---q2.1
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deperecated function: pgr_pointsToVids
-NOTICE: Deprecated function pgr_vidsToDMatrix
-{{0,1,4,2},{1,0,3,1},{4,3,0,2},{2,1,2,0}}|{1,2,3,5}
---q2.2
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deperecated function: pgr_textToPoints
-NOTICE: Deperecated function: pgr_pointsToVids
-NOTICE: Deprecated function pgr_vidsToDMatrix
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|2
-2|3
-3|0
---q3
-NOTICE: Deprecated function pgr_vidsToDMatrix
-{{0,1,2,2},{1,0,1,1},{2,1,0,4},{2,1,4,0}}
-NOTICE: Deprecated function pgr_vidsToDMatrix
-{{0,1,2,2},{1,0,1,1},{2,1,0,2},{2,1,2,0}}
---q4
-NOTICE: Deprecated function pgr_vidsToDMatrix
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|2
-2|3
-3|0
---q5
diff --git a/src/convenience/test/doc-matrix.test.sql b/src/convenience/test/doc-matrix.test.sql
deleted file mode 100644
index 94b2263..0000000
--- a/src/convenience/test/doc-matrix.test.sql
+++ /dev/null
@@ -1,55 +0,0 @@
-
-\echo --q1
-SELECT * FROM pgr_pointstodmatrix(pgr_texttopoints('2,0;2,1;3,1;2,2', 0));
-
-\echo --q1.1
-SELECT * from pgr_tsp(
- (SELECT dMatrix FROM pgr_pointstodmatrix(pgr_texttopoints('2,0;2,1;3,1;2,2', 0))
- ),
- 1
-);
-
-\echo --q2
-
-SELECT * FROM pgr_vidstodmatrix(
- ARRAY[1,2,3,5],
- ARRAY(select the_geom FROM edge_table_vertices_pgr WHERE id in (1,2,3,5)),
- 'edge_table'
-);
-
-\echo --q2.1
-SELECT * FROM pgr_vidstodmatrix(
- pgr_pointstovids(pgr_texttopoints('2,0;2,1;3,1;2,2', 0), 'edge_table'),
- pgr_texttopoints('2,0;2,1;3,1;2,2', 0),
- 'edge_table');
-
-\echo --q2.2
-SELECT * FROM pgr_tsp(
- (SELECT dMatrix FROM pgr_vidstodmatrix(
- pgr_pointstovids(pgr_texttopoints('2,0;2,1;3,1;2,2', 0), 'edge_table'),
- pgr_texttopoints('2,0;2,1;3,1;2,2', 0),
- 'edge_table')
- ),
- 1
-);
-\echo --q3
-SELECT * FROM pgr_vidsToDMatrix(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- array[1,2,3,5],
- true, true, false);
-
-SELECT * FROM pgr_vidsToDMatrix(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- array[1,2,3,5],
- true, true, true);
-\echo --q4
-SELECT * FROM pgr_tsp(
- (SELECT pgr_vidsToDMatrix(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- array[1,2,3,5],
- true, true, true)
- ),
- 1
-);
-\echo --q5
-
diff --git a/src/convenience/test/test.conf b/src/convenience/test/test.conf
deleted file mode 100644
index ffac8cb..0000000
--- a/src/convenience/test/test.conf
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/perl -w
-
-%main::tests = (
- 'any' => {
- 'comment' => 'pgr_createTopology, pgr_analyzegraph, and pgr_analyzeOneway tests for any versions.',
- 'data' => ['sampledata.data'],
- 'tests' => [qw(
- vidstodmatrix-any-01
- doc-conversion
- )],
- 'linux' => [qw(
- doc-matrix
- )],
-
- 'documentation' => [qw(
- doc-matrix
- doc-conversion
- )],
-
- 'dummyStorage' => [qw(
- )]
-
- },
-# 'vpg-vpgis' => {}, # for version specific tests
-# '8-1' => {}, # for pg 8.x and postgis 1.x
-# '9.2-2.1' => {}, # for pg 9.2 and postgis 2.1
-);
-
-1;
diff --git a/src/convenience/test/vidstodmatrix-any-01.result b/src/convenience/test/vidstodmatrix-any-01.result
deleted file mode 100644
index b85fac0..0000000
--- a/src/convenience/test/vidstodmatrix-any-01.result
+++ /dev/null
@@ -1,4 +0,0 @@
-NOTICE: Deprecated function pgr_vidsToDMatrix
-{{0,3,2,6,5,4},{3,0,3,3,2,5},{2,3,0,4,3,2},{6,3,4,0,3,2},{5,2,3,3,0,3},{4,5,2,2,3,0}}
-NOTICE: Deprecated function pgr_vidsToDMatrix
-{{0,3,2,4,5,4},{3,0,3,3,2,5},{2,3,0,2,3,2},{4,3,2,0,1,2},{5,2,3,1,0,3},{4,5,2,2,3,0}}
diff --git a/src/convenience/test/vidstodmatrix-any-01.test.sql b/src/convenience/test/vidstodmatrix-any-01.test.sql
deleted file mode 100644
index c3ea7bf..0000000
--- a/src/convenience/test/vidstodmatrix-any-01.test.sql
+++ /dev/null
@@ -1,33 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-SET client_min_messages TO NOTICE;
- select * from pgr_vidsToDMatrix(
- 'select id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edge_table',
- array[1,5,13,11,12,4],
- true, true, false);
-
- select * from pgr_vidsToDMatrix(
- 'select id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost from edge_table',
- array[1,5,13,11,12,4],
- true, true, true);
diff --git a/src/costMatrix/doc/cost-category.rst b/src/costMatrix/doc/cost-category.rst
deleted file mode 100644
index 83bff70..0000000
--- a/src/costMatrix/doc/cost-category.rst
+++ /dev/null
@@ -1,73 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _Cost:
-
-Cost - Category
-===============================================================================
-
-.. index from here
-
-* :ref:`pgr_aStarCost`
-* :ref:`pgr_dijkstraCost`
-* :ref:`pgr_withPointsCost`
-
-.. index to here
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-General Information
--------------------------------------------------------------------------------
-
-
-Characteristics
-................
-
-The main Characteristics are:
-
-* Each function works as part of the family it belongs to.
-* It does not return a path.
-* Returns the sum of the costs of the resulting path(s) for pair combination of nodes in the graph.
-* Process is done only on edges with positive costs.
-* Values are returned when there is a path.
-
- * The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`.
-
- * When the starting vertex and ending vertex are the same, there is no path.
-
- * The `agg_cost` int the non included values `(v, v)` is `0`.
-
- * When the starting vertex and ending vertex are the different and there is no path.
-
- * The `agg_cost` in the non included values `(u, v)` is :math:`\infty`.
-
-* Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`.
-
-* Depending on the function and its parameters, the results can be symmetric.
-
- * The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
-
-* Any duplicated value in the `start_vids` or in `end_vids` are ignored.
-
-* The returned values are ordered:
-
- * `start_vid` ascending
- * `end_vid` ascending
-
-
-
-See Also
-................
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
diff --git a/src/costMatrix/doc/costMatrix-category.rst b/src/costMatrix/doc/costMatrix-category.rst
deleted file mode 100644
index c6b3e78..0000000
--- a/src/costMatrix/doc/costMatrix-category.rst
+++ /dev/null
@@ -1,104 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _CostMatrix:
-
-Cost Matrix - Category
-===============================================================================
-
-.. index from here
-
-* :ref:`pgr_aStarCostMatrix`
-* :ref:`pgr_dijkstraCostMatrix`
-* :ref:`pgr_withPointsCostMatrix`
-
-.. index to here
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-.. toctree::
- :hidden:
-
- pgr_aStarCostMatrix
- pgr_dijkstraCostMatrix
- pgr_withPointsCostMatrix
-
-
-General Information
--------------------------------------------------------------------------------
-
-Synopsis
-...................
-
-:ref:`tsp` needs as input a symmetric cost matrix and no edge `(u, v)` must value :math:`\infty`.
-
-This collection of functions will return a cost matrix in form of a table.
-
-
-Characteristics
-................
-
-The main Characteristics are:
-
-* Can be used as input to :ref:`pgr_tsp`.
-
- * :directly: when the resulting matrix is symmetric and there is no :math:`\infty` value.
- * It will be the users responsibility to make the matrix symmetric.
-
- * By using geometric or harmonic average of the non symmetric values.
- * By using max or min the non symmetric values.
- * By setting the upper triangle to be the mirror image of the lower triangle.
- * By setting the lower triangle to be the mirror image of the upper triangle.
-
- * It is also the users responsibility to fix an :math:`\infty` value.
-
-* Each function works as part of the family it belongs to.
-* It does not return a path.
-* Returns the sum of the costs of the shortest path for pair combination of nodes in the graph.
-* Process is done only on edges with positive costs.
-* Values are returned when there is a path.
-
- * The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`.
-
- * When the starting vertex and ending vertex are the same, there is no path.
-
- * The `agg_cost` int the non included values `(v, v)` is `0`.
-
- * When the starting vertex and ending vertex are the different and there is no path.
-
- * The `agg_cost` in the non included values `(u, v)` is :math:`\infty`.
-
-* Let be the case the values returned are stored in a table, so the unique index would be the pair: `(start_vid, end_vid)`.
-
-* Depending on the function and its parameters, the results can be symmetric.
-
- * The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
-
-* Any duplicated value in the `start_vids` are ignored.
-
-* The returned values are ordered:
-
- * `start_vid` ascending
- * `end_vid` ascending
-
-* Running time: approximately :math:`O(| start\_vids | * (V \log V + E))`
-
-
-
-See Also
-................
-
-* :ref:`pgr_tsp`
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
diff --git a/src/costMatrix/doc/dmatrix_return_values.txt b/src/costMatrix/doc/dmatrix_return_values.txt
deleted file mode 100644
index 45fad6f..0000000
--- a/src/costMatrix/doc/dmatrix_return_values.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-
-Description of the return values
-...............................................................................
-
-Returns set of ``(start_vid, end_vid, agg_cost)``
-
-============= ============= =================================================
-Column Type Description
-============= ============= =================================================
-**start_vid** ``BIGINT`` Identifier of the starting vertex.
-**end_vid** ``BIGINT`` Identifier of the ending vertex.
-**agg_cost** ``FLOAT`` Aggregate cost of the shortest path from ``start_vid`` to ``end_vid``.
-============= ============= =================================================
-
diff --git a/src/costMatrix/doc/doc-pgr_fooDmatrix.queries b/src/costMatrix/doc/doc-pgr_fooDmatrix.queries
deleted file mode 100644
index 8fe65ed..0000000
--- a/src/costMatrix/doc/doc-pgr_fooDmatrix.queries
+++ /dev/null
@@ -1,196 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- dijkstra q1
-SELECT * FROM pgr_dijkstraCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
-);
- start_vid | end_vid | agg_cost
------------+---------+----------
- 1 | 2 | 1
- 1 | 3 | 6
- 1 | 4 | 5
- 2 | 1 | 1
- 2 | 3 | 5
- 2 | 4 | 4
- 3 | 1 | 2
- 3 | 2 | 1
- 3 | 4 | 3
- 4 | 1 | 3
- 4 | 2 | 2
- 4 | 3 | 1
-(12 rows)
-
--- dijkstra q2
-SELECT * FROM pgr_dijkstraCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
- false
-);
- start_vid | end_vid | agg_cost
------------+---------+----------
- 1 | 2 | 1
- 1 | 3 | 2
- 1 | 4 | 3
- 2 | 1 | 1
- 2 | 3 | 1
- 2 | 4 | 2
- 3 | 1 | 2
- 3 | 2 | 1
- 3 | 4 | 1
- 4 | 1 | 3
- 4 | 2 | 2
- 4 | 3 | 1
-(12 rows)
-
--- dijkstra q3
-SELECT * FROM pgr_TSP(
- $$
- SELECT * FROM pgr_dijkstraCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
- false
- )
- $$,
- randomize := false
-);
- seq | node | cost | agg_cost
------+------+------+----------
- 1 | 1 | 1 | 0
- 2 | 2 | 1 | 1
- 3 | 3 | 1 | 2
- 4 | 4 | 3 | 3
- 5 | 1 | 0 | 6
-(5 rows)
-
--- dijkstra q4
--- withPoints q1
-SELECT * FROM pgr_withPointsCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
- 'SELECT pid, edge_id, fraction from pointsOfInterest',
- array[-1, 3, 6, -6]);
- start_vid | end_vid | agg_cost
------------+---------+----------
- -6 | -1 | 1.3
- -6 | 3 | 4.3
- -6 | 6 | 1.3
- -1 | -6 | 1.3
- -1 | 3 | 5.6
- -1 | 6 | 2.6
- 3 | -6 | 1.7
- 3 | -1 | 1.6
- 3 | 6 | 1
- 6 | -6 | 1.3
- 6 | -1 | 2.6
- 6 | 3 | 3
-(12 rows)
-
--- withPoints q2
-SELECT * FROM pgr_withPointsCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
- 'SELECT pid, edge_id, fraction from pointsOfInterest',
- array[-1, 3, 6, -6], directed := false);
- start_vid | end_vid | agg_cost
------------+---------+----------
- -6 | -1 | 1.3
- -6 | 3 | 1.7
- -6 | 6 | 1.3
- -1 | -6 | 1.3
- -1 | 3 | 1.6
- -1 | 6 | 2.6
- 3 | -6 | 1.7
- 3 | -1 | 1.6
- 3 | 6 | 1
- 6 | -6 | 1.3
- 6 | -1 | 2.6
- 6 | 3 | 1
-(12 rows)
-
--- withPoints q3
-SELECT * FROM pgr_TSP(
- $$
- SELECT * FROM pgr_withPointsCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
- 'SELECT pid, edge_id, fraction from pointsOfInterest',
- array[-1, 3, 6, -6], directed := false);
- $$,
- randomize := false
-);
- seq | node | cost | agg_cost
------+------+------+----------
- 1 | -6 | 1.3 | 0
- 2 | -1 | 1.6 | 1.3
- 3 | 3 | 1 | 2.9
- 4 | 6 | 1.3 | 3.9
- 5 | -6 | 0 | 5.2
-(5 rows)
-
--- withPoints q4
--- astar q1
-SELECT * FROM pgr_aStarCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
- (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
-);
- start_vid | end_vid | agg_cost
------------+---------+----------
- 1 | 2 | 1
- 1 | 3 | 6
- 1 | 4 | 5
- 2 | 1 | 1
- 2 | 3 | 5
- 2 | 4 | 4
- 3 | 1 | 2
- 3 | 2 | 1
- 3 | 4 | 3
- 4 | 1 | 3
- 4 | 2 | 2
- 4 | 3 | 1
-(12 rows)
-
--- astar q2
-SELECT * FROM pgr_aStarCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
- (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
- directed := false, heuristic := 2
-);
- start_vid | end_vid | agg_cost
------------+---------+----------
- 1 | 2 | 1
- 1 | 3 | 2
- 1 | 4 | 3
- 2 | 1 | 1
- 2 | 3 | 1
- 2 | 4 | 2
- 3 | 1 | 2
- 3 | 2 | 1
- 3 | 4 | 1
- 4 | 1 | 3
- 4 | 2 | 2
- 4 | 3 | 1
-(12 rows)
-
--- astar q3
-SELECT * FROM pgr_TSP(
- $$
- SELECT * FROM pgr_aStarCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
- (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
- directed:= false, heuristic := 2
- )
- $$,
- randomize := false
-);
- seq | node | cost | agg_cost
------+------+------+----------
- 1 | 1 | 1 | 0
- 2 | 2 | 1 | 1
- 3 | 3 | 1 | 2
- 4 | 4 | 3 | 3
- 5 | 1 | 0 | 6
-(5 rows)
-
--- astar q4
-ROLLBACK;
-ROLLBACK
diff --git a/src/costMatrix/doc/pgr_aStarCostMatrix.rst b/src/costMatrix/doc/pgr_aStarCostMatrix.rst
deleted file mode 100644
index 2d5eaeb..0000000
--- a/src/costMatrix/doc/pgr_aStarCostMatrix.rst
+++ /dev/null
@@ -1,161 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_aStarCostMatrix:
-
-pgr_aStarCostMatrix - proposed
-===============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_aStarCostMatrix`` - Calculates the a cost matrix using :ref:`pgr_aStar`.
-
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.4.0
-
-Synopsis
--------------------------------------------------------------------------------
-
-Using aStar algorithm, calculate and return a cost matrix.
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_aStarCostMatrix(edges_sql, vids)
- pgr_aStarCostMatrix(edges_sql, vids, directed, heuristic, factor, epsilon)
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-
-
-Signatures
--------------------------------------------------------------------------------
-
-.. index::
- single: aStarCostMatrix(Minimal Use) - Proposed
-
-Minimal Signature
-...............................................................................
-
-The minimal signature:
- - Is for a **directed** graph.
-
-.. code-block:: none
-
- pgr_aStarCostMatrix(edges_sql, vids)
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-
-:Example: Cost matrix for vertices 1, 2, 3, and 4.
-
-
-.. literalinclude:: doc-pgr_fooDmatrix.queries
- :start-after: -- astar q1
- :end-before: -- astar q2
-
-
-.. index::
- single: aStarCostMatrix(Complete Signature) - Proposed
-
-Complete Signature
-...............................................................................
-
-.. code-block:: none
-
- pgr_aStarCostMatrix(edges_sql, vids, directed, heuristic, factor, epsilon)
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-
-:Example: Cost matrix for an undirected graph for vertices 1, 2, 3, and 4.
-
-This example returns a symmetric cost matrix.
-
-.. literalinclude:: doc-pgr_fooDmatrix.queries
- :start-after: -- astar q2
- :end-before: -- astar q3
-
-
-Description of the Signatures
--------------------------------------------------------------------------------
-
-.. include:: pgRouting-concepts.rst
- :start-after: xy_edges_sql_start
- :end-before: xy_edges_sql_end
-
-
-Description of the parameters of the signatures
-...............................................................................
-
-================ ====================== =================================================
-Parameter Type Description
-================ ====================== =================================================
-**edges_sql** ``TEXT`` Edges SQL query as described above.
-**vids** ``ARRAY[ANY-INTEGER]`` Array of vertices_identifiers.
-**directed** ``BOOLEAN`` - Optional.
-
- - When ``false`` the graph is considered as Undirected.
- - Default is ``true`` which considers the graph as Directed.
-
-**heuristic** ``INTEGER`` (optional). Heuristic number. Current valid values 0~5. Default ``5``
-
- - 0: h(v) = 0 (Use this value to compare with pgr_dijkstra)
- - 1: h(v) abs(max(dx, dy))
- - 2: h(v) abs(min(dx, dy))
- - 3: h(v) = dx * dx + dy * dy
- - 4: h(v) = sqrt(dx * dx + dy * dy)
- - 5: h(v) = abs(dx) + abs(dy)
-
-**factor** ``FLOAT`` (optional). For units manipulation. :math:`factor > 0`. Default ``1``.
-**epsilon** ``FLOAT`` (optional). For less restricted results. :math:`epsilon >= 1`. Default ``1``.
-================ ====================== =================================================
-
-
-
-.. include:: pgRouting-concepts.rst
- :start-after: return_cost_start
- :end-before: return_cost_end
-
-
-
-Examples
--------------------------------------------------------------------------------
-
-:Example: Use with tsp
-
-.. literalinclude:: doc-pgr_fooDmatrix.queries
- :start-after: -- astar q3
- :end-before: -- astar q4
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`astar`
-* :ref:`costMatrix`
-* :ref:`tsp`
-* The queries use the :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/costMatrix/doc/pgr_dijkstraCostMatrix.rst b/src/costMatrix/doc/pgr_dijkstraCostMatrix.rst
deleted file mode 100644
index c7cc3f4..0000000
--- a/src/costMatrix/doc/pgr_dijkstraCostMatrix.rst
+++ /dev/null
@@ -1,144 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_dijkstraCostMatrix:
-
-pgr_dijkstraCostMatrix - proposed
-===============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_dijkstraCostMatrix`` - Calculates the a cost matrix using pgr_dijktras.
-
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.3.0
-
-Synopsis
--------------------------------------------------------------------------------
-
-Using Dijkstra algorithm, calculate and return a cost matrix.
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_dijkstraCostMatrix(edges_sql, start_vids)
- pgr_dijkstraCostMatrix(edges_sql, start_vids, directed)
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-
-
-Signatures
--------------------------------------------------------------------------------
-
-.. index::
- single: dijkstraCostMatrix(Minimal Use) - Proposed
-
-Minimal Signature
-...............................................................................
-
-The minimal signature:
- - Is for a **directed** graph.
-
-.. code-block:: none
-
- pgr_dijkstraCostMatrix(edges_sql, start_vid)
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-
-:Example: Cost matrix for vertices 1, 2, 3, and 4.
-
-
-.. literalinclude:: doc-pgr_fooDmatrix.queries
- :start-after: -- dijkstra q1
- :end-before: -- dijkstra q2
-
-
-.. index::
- single: dijkstraCostMatrix(Complete Signature) - Proposed
-
-Complete Signature
-...............................................................................
-
-.. code-block:: none
-
- pgr_dijkstraCostMatrix(edges_sql, start_vids, directed:=true)
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-
-:Example: Cost matrix for an undirected graph for vertices 1, 2, 3, and 4.
-
-This example returns a symmetric cost matrix.
-
-.. literalinclude:: doc-pgr_fooDmatrix.queries
- :start-after: -- dijkstra q2
- :end-before: -- dijkstra q3
-
-
-Description of the Signatures
--------------------------------------------------------------------------------
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-
-
-Description of the parameters of the signatures
-...............................................................................
-
-================ ====================== =================================================
-Parameter Type Description
-================ ====================== =================================================
-**edges_sql** ``TEXT`` Edges SQL query as described above.
-**start_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of the vertices.
-**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
-================ ====================== =================================================
-
-
-.. include:: pgRouting-concepts.rst
- :start-after: return_cost_start
- :end-before: return_cost_end
-
-
-Examples
--------------------------------------------------------------------------------
-
-:Example: Use with tsp
-
-.. literalinclude:: doc-pgr_fooDmatrix.queries
- :start-after: -- dijkstra q3
- :end-before: -- dijkstra q4
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`dijkstra`
-* :ref:`costMatrix`
-* :ref:`tsp`
-* The queries use the :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/costMatrix/sql/CMakeLists.txt b/src/costMatrix/sql/CMakeLists.txt
deleted file mode 100644
index aaab586..0000000
--- a/src/costMatrix/sql/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/withPointsCostMatrix.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/dijkstraCostMatrix.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/astarCostMatrix.sql
-
- )
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/costMatrix/sql/astarCostMatrix.sql b/src/costMatrix/sql/astarCostMatrix.sql
deleted file mode 100644
index c793afc..0000000
--- a/src/costMatrix/sql/astarCostMatrix.sql
+++ /dev/null
@@ -1,51 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: astar.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
- edges_sql TEXT, -- XY edges sql
- vids ANYARRAY,
- directed BOOLEAN DEFAULT true,
- heuristic INTEGER DEFAULT 5,
- factor FLOAT DEFAULT 1.0,
- epsilon FLOAT DEFAULT 1.0,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT agg_cost FLOAT)
-
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
- FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5, $6, true) a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
diff --git a/src/costMatrix/sql/withPointsCostMatrix.sql b/src/costMatrix/sql/withPointsCostMatrix.sql
deleted file mode 100644
index ca5d106..0000000
--- a/src/costMatrix/sql/withPointsCostMatrix.sql
+++ /dev/null
@@ -1,53 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: withPointsCost.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-/*
-MANY TO MANY
-*/
-
-CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
- edges_sql TEXT,
- points_sql TEXT,
- pids ANYARRAY,
- directed BOOLEAN DEFAULT true,
- driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
-
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
- FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
diff --git a/src/costMatrix/test/doc-pgr_fooDmatrix-mac.test.sql b/src/costMatrix/test/doc-pgr_fooDmatrix-mac.test.sql
index 007e026..0ad5918 100644
--- a/src/costMatrix/test/doc-pgr_fooDmatrix-mac.test.sql
+++ b/src/costMatrix/test/doc-pgr_fooDmatrix-mac.test.sql
@@ -1,5 +1,4 @@
-SET client_min_messages TO WARNING;
\echo -- dijkstra q1
SELECT * FROM pgr_dijkstraCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
diff --git a/src/costMatrix/test/doc-pgr_fooDmatrix-windows.result b/src/costMatrix/test/doc-pgr_fooDmatrix-windows.result
index 6eb4be0..d760348 100644
--- a/src/costMatrix/test/doc-pgr_fooDmatrix-windows.result
+++ b/src/costMatrix/test/doc-pgr_fooDmatrix-windows.result
@@ -1,66 +1,324 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- dijkstra q1
-1|2|1
-1|3|6
-1|4|5
-2|1|1
-2|3|5
-2|4|4
-3|1|2
-3|2|1
-3|4|3
-4|1|3
-4|2|2
-4|3|1
+SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 6
+ 1 | 4 | 5
+ 2 | 1 | 1
+ 2 | 3 | 5
+ 2 | 4 | 4
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 3
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
-- dijkstra q2
-1|2|1
-1|3|2
-1|4|3
-2|1|1
-2|3|1
-2|4|2
-3|1|2
-3|2|1
-3|4|1
-4|1|3
-4|2|2
-4|3|1
+SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 2
+ 1 | 4 | 3
+ 2 | 1 | 1
+ 2 | 3 | 1
+ 2 | 4 | 2
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 1
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
-- dijkstra q3
-1|1|1|0
-2|2|1|1
-3|3|1|2
-4|4|3|3
-5|1|0|6
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
-- dijkstra q4
-- withPoints q1
--6|-1|1.3
--6|3|4.3
--6|6|1.3
--1|-6|1.3
--1|3|5.6
--1|6|2.6
-3|-6|1.7
-3|-1|1.6
-3|6|1
-6|-6|1.3
-6|-1|2.6
-6|3|3
+SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 6, -6]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ -6 | -1 | 1.3
+ -6 | 3 | 4.3
+ -6 | 6 | 1.3
+ -1 | -6 | 1.3
+ -1 | 3 | 5.6
+ -1 | 6 | 2.6
+ 3 | -6 | 1.7
+ 3 | -1 | 1.6
+ 3 | 6 | 1
+ 6 | -6 | 1.3
+ 6 | -1 | 2.6
+ 6 | 3 | 3
+(12 rows)
+
-- withPoints q2
--6|-1|1.3
--6|3|1.7
--6|6|1.3
--1|-6|1.3
--1|3|1.6
--1|6|2.6
-3|-6|1.7
-3|-1|1.6
-3|6|1
-6|-6|1.3
-6|-1|2.6
-6|3|1
+SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 6, -6], directed := false);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ -6 | -1 | 1.3
+ -6 | 3 | 1.7
+ -6 | 6 | 1.3
+ -1 | -6 | 1.3
+ -1 | 3 | 1.6
+ -1 | 6 | 2.6
+ 3 | -6 | 1.7
+ 3 | -1 | 1.6
+ 3 | 6 | 1
+ 6 | -6 | 1.3
+ 6 | -1 | 2.6
+ 6 | 3 | 1
+(12 rows)
+
-- withPoints q3
-1|-6|1.3|0
-2|6|1|1.3
-3|3|1.6|2.3
-4|-1|1.3|3.9
-5|-6|0|5.2
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 6, -6], directed := false);
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | -6 | 1.3 | 0
+ 2 | 6 | 1 | 1.3
+ 3 | 3 | 1.6 | 2.3
+ 4 | -1 | 1.3 | 3.9
+ 5 | -6 | 0 | 5.2
+(5 rows)
+
-- withPoints q4
+-- astar q1
+SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 1 | 1
+ 3 | 1 | 2
+ 4 | 1 | 3
+ 1 | 2 | 1
+ 3 | 2 | 1
+ 4 | 2 | 2
+ 1 | 3 | 6
+ 2 | 3 | 5
+ 4 | 3 | 1
+ 1 | 4 | 5
+ 2 | 4 | 4
+ 3 | 4 | 3
+(12 rows)
+
+-- astar q2
+SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ directed := false, heuristic := 2
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 1 | 1
+ 3 | 1 | 2
+ 4 | 1 | 3
+ 1 | 2 | 1
+ 3 | 2 | 1
+ 4 | 2 | 2
+ 1 | 3 | 2
+ 2 | 3 | 1
+ 4 | 3 | 1
+ 1 | 4 | 3
+ 2 | 4 | 2
+ 3 | 4 | 1
+(12 rows)
+
+-- astar q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ directed:= false, heuristic := 2
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
+-- astar q4
+-- bdDijkstra q1
+SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 6
+ 1 | 4 | 5
+ 2 | 1 | 1
+ 2 | 3 | 5
+ 2 | 4 | 4
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 3
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdDijkstra q2
+SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 2
+ 1 | 4 | 3
+ 2 | 1 | 1
+ 2 | 3 | 1
+ 2 | 4 | 2
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 1
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdDijkstra q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
+-- bdDijkstra q4
+-- bdAstar q1
+SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 6
+ 1 | 4 | 5
+ 2 | 1 | 1
+ 2 | 3 | 5
+ 2 | 4 | 4
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 3
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdAstar q2
+SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 2
+ 1 | 4 | 3
+ 2 | 1 | 1
+ 2 | 3 | 1
+ 2 | 4 | 2
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 1
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdAstar q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
+-- bdAstar q4
+ROLLBACK;
+ROLLBACK
diff --git a/src/costMatrix/test/doc-pgr_fooDmatrix-windows.test.sql b/src/costMatrix/test/doc-pgr_fooDmatrix-windows.test.sql
index 007e026..e03bd21 100644
--- a/src/costMatrix/test/doc-pgr_fooDmatrix-windows.test.sql
+++ b/src/costMatrix/test/doc-pgr_fooDmatrix-windows.test.sql
@@ -1,5 +1,7 @@
-SET client_min_messages TO WARNING;
+------------------------
+-- dijkstra
+------------------------
\echo -- dijkstra q1
SELECT * FROM pgr_dijkstraCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
@@ -24,7 +26,9 @@ SELECT * FROM pgr_TSP(
);
\echo -- dijkstra q4
+------------------------
-- withPoints
+------------------------
\echo -- withPoints q1
SELECT * FROM pgr_withPointsCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
@@ -47,3 +51,85 @@ SELECT * FROM pgr_TSP(
);
\echo -- withPoints q4
+
+------------------------
+-- pgr_aStar
+------------------------
+\echo -- astar q1
+SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+\echo -- astar q2
+SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ directed := false, heuristic := 2
+);
+\echo -- astar q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ directed:= false, heuristic := 2
+ )
+ $$,
+ randomize := false
+);
+\echo -- astar q4
+
+
+------------------------
+-- bddijkstra
+------------------------
+\echo -- bdDijkstra q1
+SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+\echo -- bdDijkstra q2
+SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+\echo -- bdDijkstra q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+\echo -- bdDijkstra q4
+
+------------------------
+-- bdAstar
+------------------------
+\echo -- bdAstar q1
+SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+\echo -- bdAstar q2
+SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+\echo -- bdAstar q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+\echo -- bdAstar q4
diff --git a/src/costMatrix/test/doc-pgr_fooDmatrix.result b/src/costMatrix/test/doc-pgr_fooDmatrix.result
index 5841300..7c96952 100644
--- a/src/costMatrix/test/doc-pgr_fooDmatrix.result
+++ b/src/costMatrix/test/doc-pgr_fooDmatrix.result
@@ -1,99 +1,324 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- dijkstra q1
-1|2|1
-1|3|6
-1|4|5
-2|1|1
-2|3|5
-2|4|4
-3|1|2
-3|2|1
-3|4|3
-4|1|3
-4|2|2
-4|3|1
+SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 6
+ 1 | 4 | 5
+ 2 | 1 | 1
+ 2 | 3 | 5
+ 2 | 4 | 4
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 3
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
-- dijkstra q2
-1|2|1
-1|3|2
-1|4|3
-2|1|1
-2|3|1
-2|4|2
-3|1|2
-3|2|1
-3|4|1
-4|1|3
-4|2|2
-4|3|1
+SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 2
+ 1 | 4 | 3
+ 2 | 1 | 1
+ 2 | 3 | 1
+ 2 | 4 | 2
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 1
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
-- dijkstra q3
-1|1|1|0
-2|2|1|1
-3|3|1|2
-4|4|3|3
-5|1|0|6
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
-- dijkstra q4
-- withPoints q1
--6|-1|1.3
--6|3|4.3
--6|6|1.3
--1|-6|1.3
--1|3|5.6
--1|6|2.6
-3|-6|1.7
-3|-1|1.6
-3|6|1
-6|-6|1.3
-6|-1|2.6
-6|3|3
+SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 6, -6]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ -6 | -1 | 1.3
+ -6 | 3 | 4.3
+ -6 | 6 | 1.3
+ -1 | -6 | 1.3
+ -1 | 3 | 5.6
+ -1 | 6 | 2.6
+ 3 | -6 | 1.7
+ 3 | -1 | 1.6
+ 3 | 6 | 1
+ 6 | -6 | 1.3
+ 6 | -1 | 2.6
+ 6 | 3 | 3
+(12 rows)
+
-- withPoints q2
--6|-1|1.3
--6|3|1.7
--6|6|1.3
--1|-6|1.3
--1|3|1.6
--1|6|2.6
-3|-6|1.7
-3|-1|1.6
-3|6|1
-6|-6|1.3
-6|-1|2.6
-6|3|1
+SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 6, -6], directed := false);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ -6 | -1 | 1.3
+ -6 | 3 | 1.7
+ -6 | 6 | 1.3
+ -1 | -6 | 1.3
+ -1 | 3 | 1.6
+ -1 | 6 | 2.6
+ 3 | -6 | 1.7
+ 3 | -1 | 1.6
+ 3 | 6 | 1
+ 6 | -6 | 1.3
+ 6 | -1 | 2.6
+ 6 | 3 | 1
+(12 rows)
+
-- withPoints q3
-1|-6|1.3|0
-2|-1|1.6|1.3
-3|3|1|2.9
-4|6|1.3|3.9
-5|-6|0|5.2
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 6, -6], directed := false);
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | -6 | 1.3 | 0
+ 2 | -1 | 1.6 | 1.3
+ 3 | 3 | 1 | 2.9
+ 4 | 6 | 1.3 | 3.9
+ 5 | -6 | 0 | 5.2
+(5 rows)
+
-- withPoints q4
-- astar q1
-1|2|1
-1|3|6
-1|4|5
-2|1|1
-2|3|5
-2|4|4
-3|1|2
-3|2|1
-3|4|3
-4|1|3
-4|2|2
-4|3|1
+SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 1 | 1
+ 3 | 1 | 2
+ 4 | 1 | 3
+ 1 | 2 | 1
+ 3 | 2 | 1
+ 4 | 2 | 2
+ 1 | 3 | 6
+ 2 | 3 | 5
+ 4 | 3 | 1
+ 1 | 4 | 5
+ 2 | 4 | 4
+ 3 | 4 | 3
+(12 rows)
+
-- astar q2
-1|2|1
-1|3|2
-1|4|3
-2|1|1
-2|3|1
-2|4|2
-3|1|2
-3|2|1
-3|4|1
-4|1|3
-4|2|2
-4|3|1
+SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ directed := false, heuristic := 2
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 1 | 1
+ 3 | 1 | 2
+ 4 | 1 | 3
+ 1 | 2 | 1
+ 3 | 2 | 1
+ 4 | 2 | 2
+ 1 | 3 | 2
+ 2 | 3 | 1
+ 4 | 3 | 1
+ 1 | 4 | 3
+ 2 | 4 | 2
+ 3 | 4 | 1
+(12 rows)
+
-- astar q3
-1|1|1|0
-2|2|1|1
-3|3|1|2
-4|4|3|3
-5|1|0|6
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_aStarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ directed:= false, heuristic := 2
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
-- astar q4
+-- bdDijkstra q1
+SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 6
+ 1 | 4 | 5
+ 2 | 1 | 1
+ 2 | 3 | 5
+ 2 | 4 | 4
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 3
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdDijkstra q2
+SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 2
+ 1 | 4 | 3
+ 2 | 1 | 1
+ 2 | 3 | 1
+ 2 | 4 | 2
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 1
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdDijkstra q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
+-- bdDijkstra q4
+-- bdAstar q1
+SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 6
+ 1 | 4 | 5
+ 2 | 1 | 1
+ 2 | 3 | 5
+ 2 | 4 | 4
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 3
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdAstar q2
+SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 1 | 2 | 1
+ 1 | 3 | 2
+ 1 | 4 | 3
+ 2 | 1 | 1
+ 2 | 3 | 1
+ 2 | 4 | 2
+ 3 | 1 | 2
+ 3 | 2 | 1
+ 3 | 4 | 1
+ 4 | 1 | 3
+ 4 | 2 | 2
+ 4 | 3 | 1
+(12 rows)
+
+-- bdAstar q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 1 | 1 | 0
+ 2 | 2 | 1 | 1
+ 3 | 3 | 1 | 2
+ 4 | 4 | 3 | 3
+ 5 | 1 | 0 | 6
+(5 rows)
+
+-- bdAstar q4
+ROLLBACK;
+ROLLBACK
diff --git a/src/costMatrix/test/doc-pgr_fooDmatrix.test.sql b/src/costMatrix/test/doc-pgr_fooDmatrix.test.sql
index 5a4ce39..e03bd21 100644
--- a/src/costMatrix/test/doc-pgr_fooDmatrix.test.sql
+++ b/src/costMatrix/test/doc-pgr_fooDmatrix.test.sql
@@ -80,3 +80,56 @@ SELECT * FROM pgr_TSP(
\echo -- astar q4
+------------------------
+-- bddijkstra
+------------------------
+\echo -- bdDijkstra q1
+SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+\echo -- bdDijkstra q2
+SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+\echo -- bdDijkstra q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_bdDijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+\echo -- bdDijkstra q4
+
+------------------------
+-- bdAstar
+------------------------
+\echo -- bdAstar q1
+SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5)
+);
+\echo -- bdAstar q2
+SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+);
+\echo -- bdAstar q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_bdAstarCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost, x1, y1, x2, y2 FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 5),
+ false
+ )
+ $$,
+ randomize := false
+);
+\echo -- bdAstar q4
diff --git a/src/dijkstra/doc/dijkstra-family.rst b/src/dijkstra/doc/dijkstra-family.rst
deleted file mode 100644
index e0dcf8e..0000000
--- a/src/dijkstra/doc/dijkstra-family.rst
+++ /dev/null
@@ -1,127 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _dijkstra:
-
-Dijkstra - Family of functions
-===============================================================================
-
-.. index from here
-
-* :ref:`pgr_dijkstra` - Dijkstra's algorithm for the shortest paths.
-* :ref:`pgr_dijkstraCost` - Get the aggregate cost of the shortest paths.
-* :ref:`pgr_dijkstraCostMatrix` - Use pgr_dijkstra to create a costs matrix.
-* :ref:`pgr_drivingDistance` - Use pgr_dijkstra to calculate catchament information.
-* :ref:`pgr_ksp` - Use Yen algorithm with pgr_dijkstra to get the K shortest paths.
-* :ref:`pgr_dijkstraVia` - Get a route of a seuence of vertices.
-
-.. index to here
-
-
-.. toctree::
- :hidden:
-
- pgr_dijkstra
- pgr_dijkstraCost
- pgr_dijkstraCostMatrix
- pgr_drivingDistance
- pgr_KSP
- pgr_dijkstraVia
-
-
-The problem definition (Advanced documentation)
------------------------------------------------
-
-
-Given the following query:
-
-
-pgr_dijkstra(:math:`sql, start_{vid}, end_{vid}, directed`)
-
-where :math:`sql = \{(id_i, source_i, target_i, cost_i, reverse\_cost_i)\}`
-
-and
-
- - :math:`source = \bigcup source_i`,
- - :math:`target = \bigcup target_i`,
-
-The graphs are defined as follows:
-
-.. rubric:: Directed graph
-
-The weighted directed graph, :math:`G_d(V,E)`, is definied by:
-
-* the set of vertices :math:`V`
-
- - :math:`V = source \cup target \cup {start_{vid}} \cup {end_{vid}}`
-
-* the set of edges :math:`E`
-
- - :math:`E = \begin{cases} &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} &\quad \text{ if } reverse\_cost = \varnothing \\ \\ &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, reverse\_cost_i) \text{ when } reverse\_cost_i >=0)\} &\quad \text{ if } reverse\_cost \neq \varnothing \\ \end{cases}`
-
-
-
-.. rubric:: Undirected graph
-
-The weighted undirected graph, :math:`G_u(V,E)`, is definied by:
-
-* the set of vertices :math:`V`
-
- - :math:`V = source \cup target \cup {start_v{vid}} \cup {end_{vid}}`
-
-
-* the set of edges :math:`E`
-
- - :math:`E = \begin{cases} &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, cost_i) \text{ when } cost >=0 \} &\quad \text{ if } reverse\_cost = \varnothing \\ \\ &\{(source_i, target_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, cost_i) \text{ when } cost >=0 \} \\ \cup &\{(target_i, source_i, reverse\_cost_i) \text{ when } reverse\_cost_i >=0)\} \\ \cup &\{(source_i, target_i, reverse\_cost_i) \text{ when } reverse\_co [...]
-
-
-
-.. rubric:: The problem
-
-Given:
-
- - :math:`start_{vid} \in V` a starting vertex
- - :math:`end_{vid} \in V` an ending vertex
- - :math:`G(V,E) = \begin{cases} G_d(V,E) &\quad \text{ if } directed = true \\ G_u(V,E) &\quad \text{ if } directed = false \\ \end{cases}`
-
-Then:
-
-.. math:: \text{pgr_dijkstra}(sql, start_{vid}, end_{vid}, directed) =
- \begin{cases}
- \text{shortest path } \boldsymbol{\pi} \text{ between } start_{vid} \text{and } end_{vid} &\quad \text{if } \exists \boldsymbol{\pi} \\
- \varnothing &\quad \text{otherwise} \\
- \end{cases}
-
-:math:`\boldsymbol{\pi} = \{(path\_seq_i, node_i, edge_i, cost_i, agg\_cost_i)\}`
-
-where:
- - :math:`path\_seq_i = i`
- - :math:`path\_seq_{| \pi |} = | \pi |`
- - :math:`node_i \in V`
- - :math:`node_1 = start_{vid}`
- - :math:`node_{| \pi |} = end_{vid}`
- - :math:`\forall i \neq | \pi |, \quad (node_i, node_{i+1}, cost_i) \in E`
- - :math:`edge_i = \begin{cases} id_{(node_i, node_{i+1},cost_i)} &\quad \text{when } i \neq | \pi | \\ -1 &\quad \text{when } i = | \pi | \\ \end{cases}`
- - :math:`cost_i = cost_{(node_i, node_{i+1})}`
- - :math:`agg\_cost_i = \begin{cases} 0 &\quad \text{when } i = 1 \\ \displaystyle\sum_{k=1}^{i} cost_{(node_{k-1}, node_k)} &\quad \text{when } i \neq 1 \\ \end{cases}`
-
-
-
-In other words: The algorithm returns a the shortest path between :math:`start_{vid}` and :math:`end_{vid}` , if it exists, in terms of a sequence of nodes and of edges,
- - :math:`path\_seq` indicates the relative position in the path of the :math:`node` or :math:`edge`.
- - :math:`cost` is the cost of the edge to be used to go to the next node.
- - :math:`agg\_cost` is the cost from the :math:`start_{vid}` up to the node.
-
-
-If there is no path, the resulting set is empty.
-
-
-
-
-
diff --git a/src/dijkstra/doc/dijkstra-v2.queries b/src/dijkstra/doc/dijkstra-v2.queries
deleted file mode 100644
index a5dcc34..0000000
--- a/src/dijkstra/doc/dijkstra-v2.queries
+++ /dev/null
@@ -1,51 +0,0 @@
-SET client_min_messages TO notice;
-SET
---q1
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2,3, true, false);
-NOTICE: Deprecated function
- seq | id1 | id2 | cost
------+-----+-----+------
-(0 rows)
-
---q2
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2,3, true, true);
-NOTICE: Deprecated function
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 4 | 1
- 1 | 5 | 8 | 1
- 2 | 6 | 9 | 1
- 3 | 9 | 16 | 1
- 4 | 4 | 3 | 1
- 5 | 3 | -1 | 0
-(6 rows)
-
---q3
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 2, 3, false, false);
-NOTICE: Deprecated function
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 4 | 1
- 1 | 5 | 8 | 1
- 2 | 6 | 5 | 1
- 3 | 3 | -1 | 0
-(4 rows)
-
---q4
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2, 3, false, true);
-NOTICE: Deprecated function
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 2 | 1
- 1 | 3 | -1 | 0
-(2 rows)
-
---q5
diff --git a/src/dijkstra/doc/doc-pgr_dijkstra.queries b/src/dijkstra/doc/doc-pgr_dijkstra.queries
deleted file mode 100644
index a61fe72..0000000
--- a/src/dijkstra/doc/doc-pgr_dijkstra.queries
+++ /dev/null
@@ -1,622 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | 8 | 1 | 1
- 3 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 9 | 16 | 1 | 3
- 5 | 5 | 4 | 3 | 1 | 4
- 6 | 6 | 3 | -1 | 0 | 5
-(6 rows)
-
--- q2
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3,
- FALSE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 1 | 0
- 2 | 2 | 3 | -1 | 0 | 1
-(2 rows)
-
--- q3
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, ARRAY[3,5],
- FALSE
-);
- seq | path_seq | end_vid | node | edge | cost | agg_cost
------+----------+---------+------+------+------+----------
- 1 | 1 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 3 | 6 | 5 | 1 | 2
- 4 | 4 | 3 | 3 | -1 | 0 | 3
- 5 | 1 | 5 | 2 | 4 | 1 | 0
- 6 | 2 | 5 | 5 | -1 | 0 | 1
-(6 rows)
-
--- q4
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[2,11], 5
-);
- seq | path_seq | start_vid | node | edge | cost | agg_cost
------+----------+-----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 5 | -1 | 0 | 1
- 3 | 1 | 11 | 11 | 13 | 1 | 0
- 4 | 2 | 11 | 12 | 15 | 1 | 1
- 5 | 3 | 11 | 9 | 9 | 1 | 2
- 6 | 4 | 11 | 6 | 8 | 1 | 3
- 7 | 5 | 11 | 5 | -1 | 0 | 4
-(7 rows)
-
--- q5
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[2,11], ARRAY[3,5],
- FALSE
-);
- seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
------+----------+-----------+---------+------+------+------+----------
- 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0
- 2 | 2 | 2 | 3 | 3 | -1 | 0 | 1
- 3 | 1 | 2 | 5 | 2 | 4 | 1 | 0
- 4 | 2 | 2 | 5 | 5 | -1 | 0 | 1
- 5 | 1 | 11 | 3 | 11 | 11 | 1 | 0
- 6 | 2 | 11 | 3 | 6 | 5 | 1 | 1
- 7 | 3 | 11 | 3 | 3 | -1 | 0 | 2
- 8 | 1 | 11 | 5 | 11 | 11 | 1 | 0
- 9 | 2 | 11 | 5 | 6 | 8 | 1 | 1
- 10 | 3 | 11 | 5 | 5 | -1 | 0 | 2
-(10 rows)
-
--- q6
--- q7
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | 8 | 1 | 1
- 3 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 9 | 16 | 1 | 3
- 5 | 5 | 4 | 3 | 1 | 4
- 6 | 6 | 3 | -1 | 0 | 5
-(6 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 5
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, ARRAY[3,5]
-);
- seq | path_seq | end_vid | node | edge | cost | agg_cost
------+----------+---------+------+------+------+----------
- 1 | 1 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 3 | 9 | 16 | 1 | 3
- 5 | 5 | 3 | 4 | 3 | 1 | 4
- 6 | 6 | 3 | 3 | -1 | 0 | 5
- 7 | 1 | 5 | 2 | 4 | 1 | 0
- 8 | 2 | 5 | 5 | -1 | 0 | 1
-(8 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 11, 3
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 11 | 13 | 1 | 0
- 2 | 2 | 12 | 15 | 1 | 1
- 3 | 3 | 9 | 16 | 1 | 2
- 4 | 4 | 4 | 3 | 1 | 3
- 5 | 5 | 3 | -1 | 0 | 4
-(5 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 11, 5
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 11 | 13 | 1 | 0
- 2 | 2 | 12 | 15 | 1 | 1
- 3 | 3 | 9 | 9 | 1 | 2
- 4 | 4 | 6 | 8 | 1 | 3
- 5 | 5 | 5 | -1 | 0 | 4
-(5 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[2,11], 5
-);
- seq | path_seq | start_vid | node | edge | cost | agg_cost
------+----------+-----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 5 | -1 | 0 | 1
- 3 | 1 | 11 | 11 | 13 | 1 | 0
- 4 | 2 | 11 | 12 | 15 | 1 | 1
- 5 | 3 | 11 | 9 | 9 | 1 | 2
- 6 | 4 | 11 | 6 | 8 | 1 | 3
- 7 | 5 | 11 | 5 | -1 | 0 | 4
-(7 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[2, 11], ARRAY[3,5]
-);
- seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
------+----------+-----------+---------+------+------+------+----------
- 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
- 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
- 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
- 7 | 1 | 2 | 5 | 2 | 4 | 1 | 0
- 8 | 2 | 2 | 5 | 5 | -1 | 0 | 1
- 9 | 1 | 11 | 3 | 11 | 13 | 1 | 0
- 10 | 2 | 11 | 3 | 12 | 15 | 1 | 1
- 11 | 3 | 11 | 3 | 9 | 16 | 1 | 2
- 12 | 4 | 11 | 3 | 4 | 3 | 1 | 3
- 13 | 5 | 11 | 3 | 3 | -1 | 0 | 4
- 14 | 1 | 11 | 5 | 11 | 13 | 1 | 0
- 15 | 2 | 11 | 5 | 12 | 15 | 1 | 1
- 16 | 3 | 11 | 5 | 9 | 9 | 1 | 2
- 17 | 4 | 11 | 5 | 6 | 8 | 1 | 3
- 18 | 5 | 11 | 5 | 5 | -1 | 0 | 4
-(18 rows)
-
--- q8
--- q9
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3,
- FALSE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 1 | 0
- 2 | 2 | 3 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 5,
- FALSE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 11, 3,
- FALSE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 11 | 11 | 1 | 0
- 2 | 2 | 6 | 5 | 1 | 1
- 3 | 3 | 3 | -1 | 0 | 2
-(3 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 11, 5,
- FALSE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 11 | 11 | 1 | 0
- 2 | 2 | 6 | 8 | 1 | 1
- 3 | 3 | 5 | -1 | 0 | 2
-(3 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[2,11], 5,
- FALSE
-);
- seq | path_seq | start_vid | node | edge | cost | agg_cost
------+----------+-----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 5 | -1 | 0 | 1
- 3 | 1 | 11 | 11 | 12 | 1 | 0
- 4 | 2 | 11 | 10 | 10 | 1 | 1
- 5 | 3 | 11 | 5 | -1 | 0 | 2
-(5 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, ARRAY[3,5],
- FALSE
-);
- seq | path_seq | end_vid | node | edge | cost | agg_cost
------+----------+---------+------+------+------+----------
- 1 | 1 | 3 | 2 | 2 | 1 | 0
- 2 | 2 | 3 | 3 | -1 | 0 | 1
- 3 | 1 | 5 | 2 | 4 | 1 | 0
- 4 | 2 | 5 | 5 | -1 | 0 | 1
-(4 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[2, 11], ARRAY[3,5],
- FALSE
-);
- seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
------+----------+-----------+---------+------+------+------+----------
- 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0
- 2 | 2 | 2 | 3 | 3 | -1 | 0 | 1
- 3 | 1 | 2 | 5 | 2 | 4 | 1 | 0
- 4 | 2 | 2 | 5 | 5 | -1 | 0 | 1
- 5 | 1 | 11 | 3 | 11 | 11 | 1 | 0
- 6 | 2 | 11 | 3 | 6 | 5 | 1 | 1
- 7 | 3 | 11 | 3 | 3 | -1 | 0 | 2
- 8 | 1 | 11 | 5 | 11 | 11 | 1 | 0
- 9 | 2 | 11 | 5 | 6 | 8 | 1 | 1
- 10 | 3 | 11 | 5 | 5 | -1 | 0 | 2
-(10 rows)
-
--- q10
--- q11
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 3
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
-(0 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 5
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 11, 3
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
-(0 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 11, 5
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
-(0 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- ARRAY[2,11], 5
-);
- seq | path_seq | start_vid | node | edge | cost | agg_cost
------+----------+-----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 5 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, ARRAY[3,5]
-);
- seq | path_seq | end_vid | node | edge | cost | agg_cost
------+----------+---------+------+------+------+----------
- 1 | 1 | 5 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | 5 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- ARRAY[2, 11], ARRAY[3,5]
-);
- seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
------+----------+-----------+---------+------+------+------+----------
- 1 | 1 | 2 | 5 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 5 | 5 | -1 | 0 | 1
-(2 rows)
-
--- q12
--- q13
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 3,
- FALSE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | 8 | 1 | 1
- 3 | 3 | 6 | 5 | 1 | 2
- 4 | 4 | 3 | -1 | 0 | 3
-(4 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 5,
- FALSE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 11, 3,
- FALSE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 11 | 11 | 1 | 0
- 2 | 2 | 6 | 5 | 1 | 1
- 3 | 3 | 3 | -1 | 0 | 2
-(3 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 11, 5,
- FALSE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 11 | 11 | 1 | 0
- 2 | 2 | 6 | 8 | 1 | 1
- 3 | 3 | 5 | -1 | 0 | 2
-(3 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- ARRAY[2,11], 5,
- FALSE
-);
- seq | path_seq | start_vid | node | edge | cost | agg_cost
------+----------+-----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 5 | -1 | 0 | 1
- 3 | 1 | 11 | 11 | 12 | 1 | 0
- 4 | 2 | 11 | 10 | 10 | 1 | 1
- 5 | 3 | 11 | 5 | -1 | 0 | 2
-(5 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, ARRAY[3,5],
- FALSE
-);
- seq | path_seq | end_vid | node | edge | cost | agg_cost
------+----------+---------+------+------+------+----------
- 1 | 1 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 3 | 6 | 5 | 1 | 2
- 4 | 4 | 3 | 3 | -1 | 0 | 3
- 5 | 1 | 5 | 2 | 4 | 1 | 0
- 6 | 2 | 5 | 5 | -1 | 0 | 1
-(6 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- ARRAY[2, 11], ARRAY[3,5],
- FALSE
-);
- seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
------+----------+-----------+---------+------+------+------+----------
- 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 2 | 3 | 6 | 5 | 1 | 2
- 4 | 4 | 2 | 3 | 3 | -1 | 0 | 3
- 5 | 1 | 2 | 5 | 2 | 4 | 1 | 0
- 6 | 2 | 2 | 5 | 5 | -1 | 0 | 1
- 7 | 1 | 11 | 3 | 11 | 11 | 1 | 0
- 8 | 2 | 11 | 3 | 6 | 5 | 1 | 1
- 9 | 3 | 11 | 3 | 3 | -1 | 0 | 2
- 10 | 1 | 11 | 5 | 11 | 11 | 1 | 0
- 11 | 2 | 11 | 5 | 6 | 8 | 1 | 1
- 12 | 3 | 11 | 5 | 5 | -1 | 0 | 2
-(12 rows)
-
--- q14
--- q15
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3,
- TRUE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | 8 | 1 | 1
- 3 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 9 | 16 | 1 | 3
- 5 | 5 | 4 | 3 | 1 | 4
- 6 | 6 | 3 | -1 | 0 | 5
-(6 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2,3
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 4 | 1 | 0
- 2 | 2 | 5 | 8 | 1 | 1
- 3 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 9 | 16 | 1 | 3
- 5 | 5 | 4 | 3 | 1 | 4
- 6 | 6 | 3 | -1 | 0 | 5
-(6 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, ARRAY[3],
- TRUE
-);
- seq | path_seq | end_vid | node | edge | cost | agg_cost
------+----------+---------+------+------+------+----------
- 1 | 1 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 3 | 9 | 16 | 1 | 3
- 5 | 5 | 3 | 4 | 3 | 1 | 4
- 6 | 6 | 3 | 3 | -1 | 0 | 5
-(6 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, ARRAY[3]
-);
- seq | path_seq | end_vid | node | edge | cost | agg_cost
------+----------+---------+------+------+------+----------
- 1 | 1 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 3 | 9 | 16 | 1 | 3
- 5 | 5 | 3 | 4 | 3 | 1 | 4
- 6 | 6 | 3 | 3 | -1 | 0 | 5
-(6 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[2], ARRAY[3],
- TRUE
-);
- seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
------+----------+-----------+---------+------+------+------+----------
- 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
- 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
- 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
-(6 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[2], ARRAY[3]
-);
- seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
------+----------+-----------+---------+------+------+------+----------
- 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
- 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
- 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
- 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
- 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
- 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
-(6 rows)
-
-SET client_min_messages TO NOTICE;
-SET
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2, 3,
- TRUE,
- TRUE
-);
-NOTICE: Deprecated function
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 4 | 1
- 1 | 5 | 8 | 1
- 2 | 6 | 9 | 1
- 3 | 9 | 16 | 1
- 4 | 4 | 3 | 1
- 5 | 3 | -1 | 0
-(6 rows)
-
--- q16
--- q17
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3,
- FALSE
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 1 | 0
- 2 | 2 | 3 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, ARRAY[3],
- FALSE
-);
- seq | path_seq | end_vid | node | edge | cost | agg_cost
------+----------+---------+------+------+------+----------
- 1 | 1 | 3 | 2 | 2 | 1 | 0
- 2 | 2 | 3 | 3 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[2], 3,
- FALSE
-);
- seq | path_seq | start_vid | node | edge | cost | agg_cost
------+----------+-----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 2 | 1 | 0
- 2 | 2 | 2 | 3 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[2], ARRAY[3],
- FALSE
-);
- seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
------+----------+-----------+---------+------+------+------+----------
- 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0
- 2 | 2 | 2 | 3 | 3 | -1 | 0 | 1
-(2 rows)
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2, 3,
- FALSE,
- TRUE
-);
-NOTICE: Deprecated function
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 2 | 1
- 1 | 3 | -1 | 0
-(2 rows)
-
--- q18
-ROLLBACK;
-ROLLBACK
diff --git a/src/dijkstra/doc/pgr_dijkstra.rst b/src/dijkstra/doc/pgr_dijkstra.rst
deleted file mode 100644
index ef8608b..0000000
--- a/src/dijkstra/doc/pgr_dijkstra.rst
+++ /dev/null
@@ -1,333 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_dijkstra:
-
-pgr_dijkstra
-===============================================================================
-
-``pgr_dijkstra`` — Returns the shortest path(s) using Dijkstra algorithm.
-In particular, the Dijkstra algorithm implemented by Boost.Graph.
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html
-
- Boost Graph Inside
-
-.. rubric:: Availability
-
-* pgr_dijkstra(one to one) 2.0.0, signature change 2.1.0
-* pgr_dijkstra(other signatures) 2.1.0
-
-Synopsis
--------------------------------------------------------------------------------
-
-Dijkstra's algorithm, conceived by Dutch computer scientist Edsger Dijkstra in 1956.
-It is a graph search algorithm that solves the shortest path problem for
-a graph with non-negative edge path costs, producing a shortest path from
-a starting vertex (``start_vid``) to an ending vertex (``end_vid``).
-This implementation can be used with a directed graph and an undirected graph.
-
-Characteristics
--------------------------------------------------------------------------------
-
-The main Characteristics are:
- - Process is done only on edges with positive costs.
- - Values are returned when there is a path.
-
- - When the starting vertex and ending vertex are the same, there is no path.
-
- - The `agg_cost` the non included values `(v, v)` is `0`
-
- - When the starting vertex and ending vertex are the different and there is no path:
-
- - The `agg_cost` the non included values `(u, v)` is :math:`\infty`
-
- - For optimization purposes, any duplicated value in the `start_vids` or `end_vids` are ignored.
-
- - The returned values are ordered:
-
- - `start_vid` ascending
- - `end_vid` ascending
-
- - Running time: :math:`O(| start\_vids | * (V \log V + E))`
-
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_dijkstra(edges_sql, start_vid, end_vid)
- pgr_dijkstra(edges_sql, start_vid, end_vid, directed:=true)
- pgr_dijkstra(edges_sql, start_vid, end_vids, directed:=true)
- pgr_dijkstra(edges_sql, start_vids, end_vid, directed:=true)
- pgr_dijkstra(edges_sql, start_vids, end_vids, directed:=true)
-
- RETURNS SET OF (seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)
- OR EMPTY SET
-
-
-Signatures
--------------------------------------------------------------------------------
-
-.. index::
- single: dijkstra(Minimal Use)
-
-Minimal signature
-.......................................
-
-.. code-block:: none
-
- pgr_dijkstra(TEXT edges_sql, BIGINT start_vid, BIGINT end_vid)
- RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
-
-The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``.
-
-:Example:
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q1
- :end-before: -- q2
-
-
-.. index::
- single: dijkstra(One to One)
-
-pgr_dijkstra One to One
-.......................................
-
-.. code-block:: none
-
- pgr_dijkstra(TEXT edges_sql, BIGINT start_vid, BIGINT end_vid,
- BOOLEAN directed:=true);
- RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost) or EMPTY SET
-
-This signature finds the shortest path from one ``start_vid`` to one ``end_vid``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-:Example:
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q2
- :end-before: -- q3
-
-
-.. index::
- single: dijkstra(One to Many)
-
-pgr_dijkstra One to many
-.......................................
-
-.. code-block:: none
-
- pgr_dijkstra(TEXT edges_sql, BIGINT start_vid, ARRAY[ANY_INTEGER] end_vids,
- BOOLEAN directed:=true);
- RETURNS SET OF (seq, path_seq, end_vid, node, edge, cost, agg_cost) or EMPTY SET
-
-This signature finds the shortest path from one ``start_vid`` to each ``end_vid`` in ``end_vids``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-Using this signature, will load once the graph and perform a one to one `pgr_dijkstra`
-where the starting vertex is fixed, and stop when all ``end_vids`` are reached.
-
- - The result is equivalent to the union of the results of the one to one `pgr_dijkstra`.
- - The extra ``end_vid`` in the result is used to distinguish to which path it belongs.
-
-:Example:
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q3
- :end-before: -- q4
-
-
-
-
-.. index::
- single: dijkstra(Many to One)
-
-pgr_dijkstra Many to One
-.......................................
-
-.. code-block:: none
-
- pgr_dijkstra(TEXT edges_sql, ARRAY[ANY_INTEGER] start_vids, BIGINT end_vid,
- BOOLEAN directed:=true);
- RETURNS SET OF (seq, path_seq, start_vid, node, edge, cost, agg_cost) or EMPTY SET
-
-This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to one ``end_vid``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-Using this signature, will load once the graph and perform several one to one `pgr_dijkstra`
-where the ending vertex is fixed.
-
- - The result is the union of the results of the one to one `pgr_dijkstra`.
- - The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
-
-:Example:
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q4
- :end-before: -- q5
-
-
-
-.. index::
- single: dijkstra(Many to Many)
-
-pgr_dijkstra Many to Many
-.......................................
-
-.. code-block:: none
-
- pgr_dijkstra(TEXT edges_sql, ARRAY[ANY_INTEGER] start_vids, ARRAY[ANY_INTEGER] end_vids,
- BOOLEAN directed:=true);
- RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost) or EMPTY SET
-
-This signature finds the shortest path from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-Using this signature, will load once the graph and perform several one to Many `pgr_dijkstra`
-for all ``start_vids``.
-
- - The result is the union of the results of the one to one `pgr_dijkstra`.
- - The extra ``start_vid`` in the result is used to distinguish to which path it belongs.
-
-The extra ``start_vid`` and ``end_vid`` in the result is used to distinguish to which path it belongs.
-
-:Example:
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q5
- :end-before: -- q6
-
-Description of the Signatures
--------------------------------------------------------------------------------
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-
-.. pgr_dijkstra_parameters_start
-
-Description of the parameters of the signatures
-...............................................................................
-
-============== ================== ======== =================================================
-Column Type Default Description
-============== ================== ======== =================================================
-**sql** ``TEXT`` SQL query as described above.
-**start_vid** ``BIGINT`` Identifier of the starting vertex of the path.
-**start_vids** ``ARRAY[BIGINT]`` Array of identifiers of starting vertices.
-**end_vid** ``BIGINT`` Identifier of the ending vertex of the path.
-**end_vids** ``ARRAY[BIGINT]`` Array of identifiers of ending vertices.
-**directed** ``BOOLEAN`` ``true`` - When ``true`` Graph is considered `Directed`
- - When ``false`` the graph is considered as `Undirected`.
-============== ================== ======== =================================================
-
-.. pgr_dijkstra_parameters_end
-
-
-.. include:: pgRouting-concepts.rst
- :start-after: return_path_start
- :end-before: return_path_end
-
-
-Additional Examples
---------------------------------------------------------------------------------------
-
-The examples of this section are based on the :ref:`sampledata` network.
-
-The examples include combinations from starting vertices 2 and 11 to ending vertices 3 and 5 in a directed and
-undirected graph with and with out reverse_cost.
-
-Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
-.........................................................................................
-
-The examples in this section use the following :ref:`fig1`
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q7
- :end-before: -- q8
-
-
-
-Examples for queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns
-.........................................................................................
-
-The examples in this section use the following :ref:`fig2`
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q9
- :end-before: -- q10
-
-
-Examples for queries marked as ``directed`` with ``cost`` column
-.........................................................................................
-
-The examples in this section use the following :ref:`fig3`
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q11
- :end-before: -- q12
-
-
-Examples for queries marked as ``undirected`` with ``cost`` column
-.........................................................................................
-
-The examples in this section use the following :ref:`fig4`
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q13
- :end-before: -- q14
-
-
-Equvalences between signatures
-.........................................................................................
-
-:Examples: For queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
-
-The examples in this section use the following:
-
-* :ref:`fig1`
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q15
- :end-before: -- q16
-
-
-
-:Examples: For queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns
-
-The examples in this section use the following:
-
-* :ref:`fig2`
-
-.. literalinclude:: doc-pgr_dijkstra.queries
- :start-after: -- q17
- :end-before: -- q18
-
-
-
-See Also
--------------------------------------------------------------------------------
-
-* http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
-* The queries use the :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/dijkstra/doc/pgr_dijkstraCost.rst b/src/dijkstra/doc/pgr_dijkstraCost.rst
deleted file mode 100644
index 32fd5ae..0000000
--- a/src/dijkstra/doc/pgr_dijkstraCost.rst
+++ /dev/null
@@ -1,255 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_dijkstraCost:
-
-pgr_dijkstraCost
-===============================================================================
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-``pgr_dijkstraCost``
-
-Using Dijkstra algorithm implemented by Boost.Graph, and extract only the
-aggregate cost of the shortest path(s) found, for the combination of vertices given.
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html
-
- Boost Graph Inside
-
-.. rubric:: Availability
-
-* pgr_dijkstraCost(all signatures) 2.2.0
-
-The ``pgr_dijkstraCost`` algorithm, is a good choice to calculate the sum of the costs
-of the shortest path for a subset of pairs of nodes of the graph.
-We make use of the Boost's implementation of dijkstra which runs in
-:math:`O(V \log V + E)` time.
-
-Characteristics
--------------------------------------------------------------------------------
-
-The main Characteristics are:
- - It does not return a path.
- - Returns the sum of the costs of the shortest path for pair combination of nodes in the graph.
- - Process is done only on edges with positive costs.
- - Values are returned when there is a path.
-
- - The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`.
-
- - When the starting vertex and ending vertex are the same, there is no path.
-
- - The `agg_cost` int the non included values `(v, v)` is `0`
-
- - When the starting vertex and ending vertex are the different and there is no path.
-
- - The `agg_cost` in the non included values `(u, v)` is :math:`\infty`
-
- - Let be the case the values returned are stored in a table, so the unique index would be the pair:
- `(start_vid, end_vid)`.
-
- - For undirected graphs, the results are symmetric.
-
- - The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
-
- - Any duplicated value in the `start_vids` or `end_vids` is ignored.
-
- - The returned values are ordered:
-
- - `start_vid` ascending
- - `end_vid` ascending
-
- - Running time: :math:`O(| start\_vids | * (V \log V + E))`
-
-Signature Summary
--------------------------------------------------------------------------------
-
-.. code-block:: none
-
- pgr_dijkstraCost(edges_sql, start_vid, end_vid);
- pgr_dijkstraCost(edges_sql, start_vid, end_vid, directed);
- pgr_dijkstraCost(edges_sql, start_vids, end_vid, directed);
- pgr_dijkstraCost(edges_sql, start_vid, end_vids, directed);
- pgr_dijkstraCost(edges_sql, start_vids, end_vids, directed);
-
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-
-
-Signatures
--------------------------------------------------------------------------------
-
-.. index::
- single: dijkstraCost(Minimal Use)
-
-Minimal signature
-...............................................................................
-
-The minimal signature is for a **directed** graph from one ``start_vid`` to one ``end_vid``:
-
-.. code-block:: none
-
- pgr_dijkstraCost(TEXT edges_sql, BIGINT start_vid, BIGINT end_vid)
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-
-.. rubric:: Example
-
-.. literalinclude:: doc-pgr_dijkstraCost.queries
- :start-after: --q1
- :end-before: --q2
-
-
-
-.. index::
- single: dijkstraCost(One to One)
-
-pgr_dijkstraCost One to One
-...............................................................................
-
-
-This signature performs a Dijkstra from one ``start_vid`` to one ``end_vid``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-.. code-block:: none
-
- pgr_dijkstraCost(TEXT edges_sql, BIGINT start_vid, BIGINT end_vid,
- BOOLEAN directed:=true);
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_dijkstraCost.queries
- :start-after: --q2
- :end-before: --q3
-
-
-.. index::
- single: dijkstraCost(One to Many)
-
-pgr_dijkstraCost One to Many
-...............................................................................
-
-.. code-block:: none
-
- pgr_dijkstraCost(TEXT edges_sql, BIGINT start_vid, array[ANY_INTEGER] end_vids,
- BOOLEAN directed:=true);
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-This signature performs a Dijkstra from one ``start_vid`` to each ``end_vid`` in ``end_vids``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-
-:Example:
-
-.. literalinclude:: doc-pgr_dijkstraCost.queries
- :start-after: --q4
- :end-before: --q5
-
-
-
-
-.. index::
- single: dijkstraCost(Many to One)
-
-pgr_dijkstraCost Many to One
-...............................................................................
-
-.. code-block:: none
-
- pgr_dijkstraCost(TEXT edges_sql, array[ANY_INTEGER] start_vids, BIGINT end_vid,
- BOOLEAN directed:=true);
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-This signature performs a Dijkstra from each ``start_vid`` in ``start_vids`` to one ``end_vid``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-
-:Example:
-
-.. literalinclude:: doc-pgr_dijkstraCost.queries
- :start-after: --q3
- :end-before: --q4
-
-
-
-.. index::
- single: dijkstraCost(Many to Many)
-
-pgr_dijkstraCost Many to Many
-...............................................................................
-
-.. code-block:: none
-
- pgr_dijkstraCost(TEXT edges_sql, array[ANY_INTEGER] start_vids, array[ANY_INTEGER] end_vids,
- BOOLEAN directed:=true);
- RETURNS SET OF (start_vid, end_vid, agg_cost) or EMPTY SET
-
-This signature performs a Dijkstra from each ``start_vid`` in ``start_vids`` to each ``end_vid`` in ``end_vids``:
- - on a **directed** graph when ``directed`` flag is missing or is set to ``true``.
- - on an **undirected** graph when ``directed`` flag is set to ``false``.
-
-:Example:
-
-.. literalinclude:: doc-pgr_dijkstraCost.queries
- :start-after: --q5
- :end-before: --q6
-
-
-
-Description of the Signatures
--------------------------------------------------------------------------------
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-.. include:: ./pgr_dijkstra.rst
- :start-after: pgr_dijkstra_parameters_start
- :end-before: pgr_dijkstra_parameters_end
-
-.. include:: pgRouting-concepts.rst
- :start-after: return_cost_start
- :end-before: return_cost_end
-
-
-Additional Examples
--------------------------------------------------------------------------------
-
-:Example 1: Demonstration of repeated values are ignored, and result is sorted.
-
-.. literalinclude:: doc-pgr_dijkstraCost.queries
- :start-after: --q6
- :end-before: --q7
-
-:Example 2: Making `start_vids` the same as `end_vids`
-
-.. literalinclude:: doc-pgr_dijkstraCost.queries
- :start-after: --q7
- :end-before: --q8
-
-
-
-See Also
--------------------------------------------------------------------------------
-
-* http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
-* :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/dijkstra/doc/pgr_dijkstraVia.rst b/src/dijkstra/doc/pgr_dijkstraVia.rst
deleted file mode 100644
index e1deb6e..0000000
--- a/src/dijkstra/doc/pgr_dijkstraVia.rst
+++ /dev/null
@@ -1,188 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_dijkstraVia:
-
-pgr_dijkstraVia - Proposed
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_dijkstraVia`` — Using dijkstra algorithm, it finds the route that goes through
-a list of vertices.
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.2.0
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Given a list of vertices and a graph, this function is equivalent to finding the
-shortest path between :math:`vertex_i` and :math:`vertex_{i+1}` for all :math:`i < size\_of(vertex_via)`.
-
-The paths represents the sections of the route.
-
-.. note:: This is a proposed function
-
-Signatrue Summary
--------------------------------------------------------------------------------
-
-.. code-block:: none
-
- pgr_dijkstraVia(edges_sql, via_vertices)
- pgr_dijkstraVia(edges_sql, via_vertices, directed, strict, U_turn_on_edge)
-
- RETURNS SET OF (seq, path_pid, path_seq, start_vid, end_vid,
- node, edge, cost, agg_cost, route_agg_cost) or EMPTY SET
-
-Signatures
--------------------------------------------------------------------------------
-
-.. index::
- single: dijkstraVia(Minimal Use) - proposed
-
-Minimal Signature
-...............................................................................
-
-.. code-block:: none
-
- pgr_dijkstraVia(edges_sql, via_vertices)
- RETURNS SET OF (seq, path_pid, path_seq, start_vid, end_vid,
- node, edge, cost, agg_cost, route_agg_cost) or EMPTY SET
-
-:Example: Find the route that visits the vertices 1 3 9 in that order
-
-.. literalinclude:: doc-pgr_dijkstraVia.queries
- :start-after: --q00
- :end-before: -- q0
-
-.. index::
- single: dijkstraVia(Full signature) - proposed
-
-Complete Signature
-...............................................................................
-
-.. code-block:: none
-
- pgr_dijkstraVia(edges_sql, via_vertices, directed, strict, U_turn_on_edge)
- RETURNS SET OF (seq, path_pid, path_seq, start_vid, end_vid,
- node, edge, cost, agg_cost, route_agg_cost) or EMPTY SET
-
-
-:Example: Find the route that visits the vertices 1 3 9 in that order on an undirected graph, avoiding U-turns when possible
-
-.. literalinclude:: doc-pgr_dijkstraVia.queries
- :start-after: -- q0
- :end-before: -- q1
-
-
-Description of the Signature
--------------------------------------------------------------------------------
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-.. include:: ../sql_queries/dijkstraVia.sql
- :start-after: pgr_dijkstra_via_parameters_start
- :end-before: pgr_dijkstra_via_parameters_end
-
-Description of the parameters of the signatures
-...............................................................................
-
-=================== ====================== =================================================
-Parameter Type Description
-=================== ====================== =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**via_vertices** ``ARRAY[ANY-INTEGER]`` Array of vertices identifiers
-**directed** ``BOOLEAN`` (optional) Default is true (is directed). When set to false the graph is considered as Undirected
-**strict** ``BOOLEAN`` (optional) ignores if a subsection of the route is missing and returns everything it found Default is true (is directed). When set to false the graph is considered as Undirected
-**U_turn_on_edge** ``BOOLEAN`` (optional) Default is true (is directed). When set to false the graph is considered as Undirected
-=================== ====================== =================================================
-
-
-Description of the return values
-...............................................................................
-
-Returns set of ``(start_vid, end_vid, agg_cost)``
-
-================== ============= =================================================
-Column Type Description
-================== ============= =================================================
-**seq** ``BIGINT`` Sequential value starting from 1.
-**path_pid** ``BIGINT`` Identifier of the path.
-**path_seq** ``BIGINT`` Sequential value starting from 1 for the path.
-**start_vid** ``BIGINT`` Identifier of the starting vertex of the path.
-**end_vid** ``BIGINT`` Identifier of the ending vertex of the path.
-**node** ``BIGINT`` Identifier of the node in the path from start_vid to end_vid.
-**edge** ``BIGINT`` Identifier of the edge used to go from node to the next node in the path sequence. -1 for the last node of the path. -2 for the last node of the route.
-**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next node in the route sequence.
-**agg_cost** ``FLOAT`` Total cost from ``start_vid`` to ``end_vid`` of the path.
-**route_agg_cost** ``FLOAT`` Total cost from ``start_vid`` of ``path_pid = 1`` to ``end_vid`` of the current ``path_pid`` .
-================== ============= =================================================
-
-
-Examples
--------------------------------------------------------------------------------
-
-:Example 1: Find the route that visits the vertices 1 5 3 9 4 in that order
-
-.. literalinclude:: doc-pgr_dijkstraVia.queries
- :start-after: -- q1
- :end-before: -- q2
-
-:Example 2: What's the aggregate cost of the third path?
-
-.. literalinclude:: doc-pgr_dijkstraVia.queries
- :start-after: -- q2
- :end-before: -- q3
-
-:Example 3: What's the route's aggregate cost of the route at the end of the third path?
-
-.. literalinclude:: doc-pgr_dijkstraVia.queries
- :start-after: -- q3
- :end-before: -- q4
-
-:Example 4: How are the nodes visited in the route?
-
-.. literalinclude:: doc-pgr_dijkstraVia.queries
- :start-after: -- q4
- :end-before: -- q5
-
-:Example 5: What are the aggregate costs of the route when the visited vertices are reached?
-
-.. literalinclude:: doc-pgr_dijkstraVia.queries
- :start-after: -- q5
- :end-before: -- q6
-
-:Example 6: show the route's seq and aggregate cost and a status of "passes in front" or "visits" node 9
-
-.. literalinclude:: doc-pgr_dijkstraVia.queries
- :start-after: -- q6
-
-
-See Also
--------------------------------------------------------------------------------
-
-* http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
-* :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/dijkstra/sql/CMakeLists.txt b/src/dijkstra/sql/CMakeLists.txt
deleted file mode 100644
index f43a970..0000000
--- a/src/dijkstra/sql/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/dijkstra.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/dijkstraCost.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/dijkstraVia.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/dijkstra/sql/dijkstra.sql b/src/dijkstra/sql/dijkstra.sql
deleted file mode 100644
index 7ff9dd0..0000000
--- a/src/dijkstra/sql/dijkstra.sql
+++ /dev/null
@@ -1,219 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-/*FOR USERS DOCUMENTATION
-
-The following applies to:
- pgr_dijkstra
- pgr_dijkstraCost
- pgr_dijkstraCostMatrix
-
-pgr_dijkstra_parameters_start
-
-Description of the parameters of the signatures
-...............................................................................
-
-============== ================== ======== =================================================
-Column Type Default Description
-============== ================== ======== =================================================
-**sql** ``TEXT`` SQL query as described above.
-**start_vid** ``BIGINT`` Identifier of the starting vertex of the path.
-**start_vids** ``ARRAY[BIGINT]`` Array of identifiers of starting vertices.
-**end_vid** ``BIGINT`` Identifier of the ending vertex of the path.
-**end_vids** ``ARRAY[BIGINT]`` Array of identifiers of ending vertices.
-**directed** ``BOOLEAN`` ``true`` - When ``true`` Graph is considered `Directed`
- - When ``false`` the graph is considered as `Undirected`.
-============== ================== ======== =================================================
-
-pgr_dijkstra_parameters_end
-
-FOR-USER*/
-
-CREATE OR REPLACE FUNCTION _pgr_dijkstra(edges_sql TEXT, start_vid BIGINT, end_vid BIGINT, directed BOOLEAN,
- only_cost BOOLEAN DEFAULT false,
- OUT seq integer, OUT path_seq integer, OUT node BIGINT, OUT edge BIGINT, OUT cost float, OUT agg_cost float)
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'one_to_one_dijkstra'
- LANGUAGE c IMMUTABLE STRICT;
-
- -- One to many
-
-
-CREATE OR REPLACE FUNCTION _pgr_dijkstra(edges_sql TEXT, start_vid BIGINT, end_vids ANYARRAY, directed BOOLEAN DEFAULT true,
- only_cost BOOLEAN DEFAULT false,
- OUT seq integer, OUT path_seq integer, OUT end_vid BIGINT, OUT node BIGINT, OUT edge BIGINT, OUT cost float, OUT agg_cost float)
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'one_to_many_dijkstra'
- LANGUAGE c IMMUTABLE STRICT;
-
-
--- many to one
-
-
-CREATE OR REPLACE FUNCTION _pgr_dijkstra(edges_sql TEXT, start_vids ANYARRAY, end_vid BIGINT, directed BOOLEAN DEFAULT true,
- only_cost BOOLEAN DEFAULT false,
- OUT seq integer, OUT path_seq integer, OUT start_vid BIGINT, OUT node BIGINT, OUT edge BIGINT, OUT cost float, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'many_to_one_dijkstra'
-LANGUAGE c IMMUTABLE STRICT;
-
--- many to many
-
-
-CREATE OR REPLACE FUNCTION _pgr_dijkstra(edges_sql TEXT, start_vids ANYARRAY, end_vids ANYARRAY, directed BOOLEAN DEFAULT true,
- only_cost BOOLEAN DEFAULT false,
- OUT seq integer, OUT path_seq integer, OUT start_vid BIGINT, OUT end_vid BIGINT, OUT node BIGINT, OUT edge BIGINT, OUT cost float, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'many_to_many_dijkstra'
-LANGUAGE c IMMUTABLE STRICT;
-
-
-
-
-
--- V2 signature
-CREATE OR REPLACE FUNCTION pgr_dijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
-RETURNS SETOF pgr_costresult AS
-$BODY$
-DECLARE
-has_reverse BOOLEAN;
-sql TEXT;
-BEGIN
- RAISE NOTICE 'Deprecated function';
- has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
- sql = edges_sql;
- IF (has_reverse != has_rcost) THEN
- IF (has_reverse) THEN
- sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
- ELSE
- raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
- END IF;
- END IF;
-
- RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
- FROM _pgr_dijkstra(sql, start_vid, end_vid, directed, false);
- END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
--- V3 signature 1 to 1
-CREATE OR REPLACE FUNCTION pgr_dijkstra(edges_sql TEXT, start_vid BIGINT, end_vid BIGINT,
- OUT seq integer, OUT path_seq integer, OUT node BIGINT, OUT edge BIGINT, OUT cost float, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-DECLARE
- statement_txt record;
- sql TEXT;
-BEGIN
- RETURN query
- SELECT * FROM _pgr_dijkstra(_pgr_get_statement($1), start_vid, end_vid, true, false);
- END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
--- V3 signature 1 to 1
-CREATE OR REPLACE FUNCTION pgr_dijkstra(edges_sql TEXT, start_vid BIGINT, end_vid BIGINT, directed BOOLEAN,
- OUT seq integer, OUT path_seq integer, OUT node BIGINT, OUT edge BIGINT, OUT cost float, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-DECLARE
-BEGIN
- RETURN query SELECT *
- FROM _pgr_dijkstra(_pgr_get_statement($1), start_vid, end_vid, directed, false);
- END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
-
-
-
-
--- DIJKSTRA
-
-
-/***********************************
- ONE TO MANY
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_dijkstra(edges_sql TEXT, start_vid BIGINT, end_vids ANYARRAY, directed BOOLEAN DEFAULT true,
- OUT seq integer, OUT path_seq integer, OUT end_vid BIGINT, OUT node BIGINT, OUT edge BIGINT, OUT cost float, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $3, $4);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
-
-/***********************************
- MANY TO ONE
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_dijkstra(edges_sql TEXT, start_vids ANYARRAY, end_vid BIGINT, directed BOOLEAN DEFAULT true,
- OUT seq integer, OUT path_seq integer, OUT start_vid BIGINT, OUT node BIGINT, OUT edge BIGINT, OUT cost float, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $3, $4);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
-
-/***********************************
- MANY TO MANY
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_dijkstra(edges_sql TEXT, start_vids ANYARRAY, end_vids ANYARRAY, directed BOOLEAN DEFAULT true,
- OUT seq integer, OUT path_seq integer, OUT start_vid BIGINT, OUT end_vid BIGINT, OUT node BIGINT, OUT edge BIGINT, OUT cost float, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $3, $4);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
diff --git a/src/dijkstra/sql/dijkstraCost.sql b/src/dijkstra/sql/dijkstraCost.sql
deleted file mode 100644
index 257573e..0000000
--- a/src/dijkstra/sql/dijkstraCost.sql
+++ /dev/null
@@ -1,103 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
--- DIJKSTRA COST
-
-/***********************************
- ONE TO ONE
-***********************************/
-CREATE OR REPLACE FUNCTION pgr_dijkstraCost(edges_sql TEXT, BIGINT, BIGINT, directed BOOLEAN DEFAULT true,
- OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- return query SELECT $2, $3, a.agg_cost
- FROM _pgr_dijkstra($1, $2, $3, $4, true) a;
- END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
-/***********************************
- ONE TO MANY
-***********************************/
-
-
-CREATE OR REPLACE FUNCTION pgr_dijkstraCost(edges_sql TEXT, BIGINT, end_vids ANYARRAY, directed BOOLEAN DEFAULT true,
- OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT $2, a.end_vid, a.agg_cost
- FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $3, $4, true) a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
-/***********************************
- MANY TO ONE
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_dijkstraCost(edges_sql TEXT, start_vids ANYARRAY, BIGINT, directed BOOLEAN DEFAULT true,
- OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT a.start_vid, $3, a.agg_cost
- FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $3, $4, true) a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
-
-/***********************************
- MANY TO MANY
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_dijkstraCost(edges_sql TEXT, start_vids ANYARRAY, end_vids ANYARRAY, directed BOOLEAN DEFAULT true,
- OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
- FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $3, $4, true) a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
-
diff --git a/src/dijkstra/sql/dijkstraVia.sql b/src/dijkstra/sql/dijkstraVia.sql
deleted file mode 100644
index a15d465..0000000
--- a/src/dijkstra/sql/dijkstraVia.sql
+++ /dev/null
@@ -1,76 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: dijkstraViaVertex.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-
-------
-
-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*/
-
-/*FOR USERS DOCUMENTATION
-
-pgr_dijkstra_via_parameters_start
-
-Description of the parameters of the signatures
-...............................................................................
-
-=================== ====================== ========= =========================================
-Parameter Type Default Description
-=================== ====================== ========= =========================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**via_vertices** ``ARRAY[ANY-INTEGER]`` Array of ordered vertices identifiers that are going to be visited.
-**directed** ``BOOLEAN`` ``true`` - When ``true`` Graph is considered `Directed`
- - When ``false`` the graph is considered as Undirected.
-**strict** ``BOOLEAN`` ``false`` - When ``false`` ignores missing paths returning all paths found
- - When ``true`` if a path is missing stops and returns `EMPTY SET`
-**U_turn_on_edge** ``BOOLEAN`` ``true`` - When ``true`` departing from a visited vertex will not try to avoid using the edge used to reach it. In other words, U turn using the edge with same `id` is allowed.
- - When ``false`` when a departing from a visited vertex tries to avoid using the edge used to reach it. In other words, U turn using the edge with same `id` is used when no other path is found.
-=================== ====================== ========= =========================================
-
-pgr_dijkstra_via_parameters_end
-
-USER*/
-
-
-CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
- edges_sql TEXT,
- via_vertices ANYARRAY,
- directed BOOLEAN DEFAULT TRUE,
- strict BOOLEAN DEFAULT FALSE,
- U_turn_on_edge BOOLEAN DEFAULT TRUE,
-
-
- OUT seq INTEGER,
- OUT path_id INTEGER,
- OUT path_seq INTEGER,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT,
- OUT route_agg_cost FLOAT)
-
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'dijkstraVia'
- LANGUAGE c IMMUTABLE STRICT;
-
-
diff --git a/src/dijkstra/src/CMakeLists.txt b/src/dijkstra/src/CMakeLists.txt
index e3b688d..0910dd2 100644
--- a/src/dijkstra/src/CMakeLists.txt
+++ b/src/dijkstra/src/CMakeLists.txt
@@ -1,9 +1,6 @@
ADD_LIBRARY(dijkstra OBJECT
- one_to_one_dijkstra.c
- one_to_many_dijkstra.c
- many_to_one_dijkstra.c
- many_to_many_dijkstra.c
+ dijkstra.c
dijkstraVia.c
- many_to_many_dijkstra_driver.cpp
+ dijkstra_driver.cpp
dijkstraVia_driver.cpp)
diff --git a/src/dijkstra/src/dijkstra.c b/src/dijkstra/src/dijkstra.c
new file mode 100644
index 0000000..a746a5a
--- /dev/null
+++ b/src/dijkstra/src/dijkstra.c
@@ -0,0 +1,236 @@
+/*PGR-GNU*****************************************************************
+
+File: many_to_many_dijkstra.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "c_common/postgres_connection.h"
+#include "utils/array.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+#include "drivers/dijkstra/dijkstra_driver.h"
+
+PG_MODULE_MAGIC;
+
+PGDLLEXPORT Datum many_to_many_dijkstra(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(many_to_many_dijkstra);
+
+static
+void
+process(
+ char* edges_sql,
+ ArrayType *starts,
+ ArrayType *ends,
+ bool directed,
+ bool only_cost,
+ bool normal,
+ General_path_element_t **result_tuples,
+ size_t *result_count) {
+ pgr_SPI_connect();
+
+ int64_t* start_vidsArr = NULL;
+ size_t size_start_vidsArr = 0;
+
+ int64_t* end_vidsArr = NULL;
+ size_t size_end_vidsArr = 0;
+
+ pgr_edge_t *edges = NULL;
+ size_t total_edges = 0;
+ if (normal) {
+ pgr_get_edges(edges_sql, &edges, &total_edges);
+ start_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_start_vidsArr, starts);
+ end_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_end_vidsArr, ends);
+ } else {
+ pgr_get_edges_reversed(edges_sql, &edges, &total_edges);
+ end_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_end_vidsArr, starts);
+ start_vidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_start_vidsArr, ends);
+ }
+
+ if (total_edges == 0) {
+ if (end_vidsArr) pfree(end_vidsArr);
+ if (start_vidsArr) pfree(start_vidsArr);
+ pgr_SPI_finish();
+ return;
+ }
+
+ PGR_DBG("Starting timer");
+ clock_t start_t = clock();
+ char* log_msg = NULL;
+ char* notice_msg = NULL;
+ char* err_msg = NULL;
+ do_pgr_many_to_many_dijkstra(
+ edges, total_edges,
+ start_vidsArr, size_start_vidsArr,
+ end_vidsArr, size_end_vidsArr,
+
+ directed,
+ only_cost,
+ normal,
+
+ result_tuples,
+ result_count,
+
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ if (only_cost) {
+ time_msg("processing pgr_dijkstraCost", start_t, clock());
+ } else {
+ time_msg("processing pgr_dijkstra", start_t, clock());
+ }
+
+
+ if (err_msg && (*result_tuples)) {
+ pfree(*result_tuples);
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+ }
+
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+ if (edges) pfree(edges);
+ if (start_vidsArr) pfree(start_vidsArr);
+ if (end_vidsArr) pfree(end_vidsArr);
+ pgr_SPI_finish();
+}
+
+PGDLLEXPORT Datum
+many_to_many_dijkstra(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**********************************************************************/
+ General_path_element_t *result_tuples = NULL;
+ size_t result_count = 0;
+ /**********************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+ // pgr_dijkstra(
+ // sql TEXT,
+ // start_vids ANYARRAY,
+ // end_vids ANYARRAY,
+ // directed BOOLEAN default true,
+ // only_cost BOOLEAN default false
+ // normal BOOLEAN default true
+
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
+ PG_GETARG_BOOL(3),
+ PG_GETARG_BOOL(4),
+ PG_GETARG_BOOL(5),
+ &result_tuples,
+ &result_count);
+
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 95
+ funcctx->max_calls = result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (General_path_element_t*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+ size_t call_cntr = funcctx->call_cntr;
+
+ /**********************************************************************/
+ // OUT seq INTEGER,
+ // OUT path_seq INTEGER,
+ // OUT start_vid BIGINT,
+ // OUT end_vid BIGINT,
+ // OUT node BIGINT,
+ // OUT edge BIGINT,
+ // OUT cost FLOAT,
+ // OUT agg_cost FLOAT)
+
+ size_t numb = 8;
+ values = palloc(numb * sizeof(Datum));
+ nulls = palloc(numb * sizeof(bool));
+
+ size_t i;
+ for (i = 0; i < numb; ++i) {
+ nulls[i] = false;
+ }
+
+ values[0] = Int32GetDatum(call_cntr + 1);
+ values[1] = Int32GetDatum(result_tuples[call_cntr].seq);
+ values[2] = Int64GetDatum(result_tuples[call_cntr].start_id);
+ values[3] = Int64GetDatum(result_tuples[call_cntr].end_id);
+ values[4] = Int64GetDatum(result_tuples[call_cntr].node);
+ values[5] = Int64GetDatum(result_tuples[call_cntr].edge);
+ values[6] = Float8GetDatum(result_tuples[call_cntr].cost);
+ values[7] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
+ /**********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ SRF_RETURN_DONE(funcctx);
+ }
+}
+
diff --git a/src/dijkstra/src/dijkstraVia.c b/src/dijkstra/src/dijkstraVia.c
index bc93d9f..52b9bd6 100644
--- a/src/dijkstra/src/dijkstraVia.c
+++ b/src/dijkstra/src/dijkstraVia.c
@@ -25,16 +25,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
#include "utils/array.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./dijkstraVia_driver.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+#include "drivers/dijkstra/dijkstraVia_driver.h"
PGDLLEXPORT Datum dijkstraVia(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(dijkstraVia);
diff --git a/src/dijkstra/src/dijkstraVia_driver.cpp b/src/dijkstra/src/dijkstraVia_driver.cpp
index 8599df4..2af7965 100644
--- a/src/dijkstra/src/dijkstraVia_driver.cpp
+++ b/src/dijkstra/src/dijkstraVia_driver.cpp
@@ -25,17 +25,16 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./dijkstraVia_driver.h"
+#include "drivers/dijkstra/dijkstraVia_driver.h"
#include <sstream>
#include <deque>
#include <vector>
-#include "./pgr_dijkstra.hpp"
+#include "dijkstra/pgr_dijkstra.hpp"
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
template <class G>
diff --git a/src/dijkstra/src/dijkstraVia_driver.h b/src/dijkstra/src/dijkstraVia_driver.h
deleted file mode 100644
index 7da7893..0000000
--- a/src/dijkstra/src/dijkstraVia_driver.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: dijkstraViaVertex.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_DIJKSTRA_SRC_DIJKSTRAVIA_DRIVER_H_
-#define SRC_DIJKSTRA_SRC_DIJKSTRAVIA_DRIVER_H_
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /*
- CREATE OR REPLACE FUNCTION pgr_dijkstraViaVertices(
- sql text,
- vertices anyarray,
- directed boolean default true,
- */
- void
- do_pgr_dijkstraVia(
- pgr_edge_t *data_edges, size_t total_edges,
- int64_t *via_vidsArr, size_t size_via_vidsArr,
- bool directed,
- bool strict,
- bool U_turn_on_edge,
- Routes_t **return_tuples, size_t *return_count,
-
- char** log_msg,
- char** notice_msg,
- char** err_msg);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_DIJKSTRA_SRC_DIJKSTRAVIA_DRIVER_H_
diff --git a/src/dijkstra/src/dijkstra_driver.cpp b/src/dijkstra/src/dijkstra_driver.cpp
new file mode 100644
index 0000000..f91d768
--- /dev/null
+++ b/src/dijkstra/src/dijkstra_driver.cpp
@@ -0,0 +1,174 @@
+/*PGR-GNU*****************************************************************
+File: many_to_many_dijkstra_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail: vicky_vergara at hotmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/dijkstra/dijkstra_driver.h"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+#include <algorithm>
+
+#include "dijkstra/pgr_dijkstra.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+template < class G >
+std::deque< Path >
+pgr_dijkstra(
+ G &graph,
+ std::vector < int64_t > sources,
+ std::vector < int64_t > targets,
+ bool only_cost,
+ bool normal) {
+ std::sort(sources.begin(), sources.end());
+ sources.erase(
+ std::unique(sources.begin(), sources.end()),
+ sources.end());
+
+ std::sort(targets.begin(), targets.end());
+ targets.erase(
+ std::unique(targets.begin(), targets.end()),
+ targets.end());
+
+ Pgr_dijkstra< G > fn_dijkstra;
+ auto paths = fn_dijkstra.dijkstra(graph, sources, targets, only_cost);
+
+ if (!normal) {
+ for (auto &path : paths) {
+ path.reverse();
+ }
+ }
+ return paths;
+}
+
+
+
+// CREATE OR REPLACE FUNCTION pgr_dijkstra(
+// sql text,
+// start_vids anyarray,
+// end_vids anyarray,
+// directed boolean default true,
+void
+do_pgr_many_to_many_dijkstra(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ int64_t *start_vidsArr,
+ size_t size_start_vidsArr,
+ int64_t *end_vidsArr,
+ size_t size_end_vidsArr,
+ bool directed,
+ bool only_cost,
+ bool normal,
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg) {
+ std::ostringstream log;
+ std::ostringstream err;
+ std::ostringstream notice;
+
+ try {
+ pgassert(total_edges != 0);
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert(*return_count == 0);
+
+ graphType gType = directed? DIRECTED: UNDIRECTED;
+
+ log << "Inserting vertices into a c++ vector structure";
+ std::vector<int64_t>
+ start_vertices(start_vidsArr, start_vidsArr + size_start_vidsArr);
+ std::vector< int64_t >
+ end_vertices(end_vidsArr, end_vidsArr + size_end_vidsArr);
+
+ std::deque< Path >paths;
+ if (directed) {
+ log << "\nWorking with directed Graph";
+ pgrouting::DirectedGraph digraph(gType);
+ digraph.insert_edges(data_edges, total_edges);
+ paths = pgr_dijkstra(
+ digraph,
+ start_vertices, end_vertices,
+ only_cost, normal);
+ } else {
+ log << "\nWorking with Undirected Graph";
+ pgrouting::UndirectedGraph undigraph(gType);
+ undigraph.insert_edges(data_edges, total_edges);
+ paths = pgr_dijkstra(
+ undigraph,
+ start_vertices, end_vertices,
+ only_cost, normal);
+ }
+
+ size_t count(0);
+ count = count_tuples(paths);
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found";
+ *log_msg = pgr_msg(notice.str().c_str());
+ return;
+ }
+
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ log << "\nConverting a set of paths into the tuples";
+ (*return_count) = (collapse_paths(return_tuples, paths));
+
+ *log_msg = log.str().empty()?
+ *log_msg :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
diff --git a/src/dijkstra/src/many_to_many_dijkstra.c b/src/dijkstra/src/many_to_many_dijkstra.c
deleted file mode 100644
index cab39ef..0000000
--- a/src/dijkstra/src/many_to_many_dijkstra.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: many_to_many_dijkstra.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./many_to_many_dijkstra_driver.h"
-
-PGDLLEXPORT Datum many_to_many_dijkstra(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(many_to_many_dijkstra);
-
-static
-void
-process(
- char* edges_sql,
- ArrayType *starts,
- ArrayType *ends,
- bool directed,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- pgr_SPI_connect();
-
- int64_t* start_vidsArr = NULL;
- size_t size_start_vidsArr = 0;
- start_vidsArr = (int64_t*)
- pgr_get_bigIntArray(&size_start_vidsArr, starts);
-
- int64_t* end_vidsArr = NULL;
- size_t size_end_vidsArr = 0;
- end_vidsArr = (int64_t*)
- pgr_get_bigIntArray(&size_end_vidsArr, ends);
-
- pgr_edge_t *edges = NULL;
- size_t total_edges = 0;
- pgr_get_edges(edges_sql, &edges, &total_edges);
-
-
- if (total_edges == 0) {
- if (end_vidsArr) pfree(end_vidsArr);
- if (start_vidsArr) pfree(start_vidsArr);
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
- do_pgr_many_to_many_dijkstra(
- edges, total_edges,
- start_vidsArr, size_start_vidsArr,
- end_vidsArr, size_end_vidsArr,
-
- directed,
- only_cost,
- true, // normal
-
- result_tuples,
- result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_dijkstraCost(many to many)", start_t, clock());
- } else {
- time_msg("processing pgr_dijkstra(many to many)", start_t, clock());
- }
-
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
- if (start_vidsArr) pfree(start_vidsArr);
- if (end_vidsArr) pfree(end_vidsArr);
- pgr_SPI_finish();
-}
-
-PGDLLEXPORT Datum
-many_to_many_dijkstra(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**********************************************************************/
- General_path_element_t *result_tuples = NULL;
- size_t result_count = 0;
- /**********************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- // pgr_dijkstra(
- // sql TEXT,
- // start_vids ANYARRAY,
- // end_vids ANYARRAY,
- // directed BOOLEAN default true,
- // only_cost BOOLEAN default false
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_ARRAYTYPE_P(1),
- PG_GETARG_ARRAYTYPE_P(2),
- PG_GETARG_BOOL(3),
- PG_GETARG_BOOL(4),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
-
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
- size_t call_cntr = funcctx->call_cntr;
-
- /**********************************************************************/
- // OUT seq INTEGER,
- // OUT path_seq INTEGER,
- // OUT start_vid BIGINT,
- // OUT end_vid BIGINT,
- // OUT node BIGINT,
- // OUT edge BIGINT,
- // OUT cost FLOAT,
- // OUT agg_cost FLOAT)
-
- size_t numb = 8;
- values = palloc(numb * sizeof(Datum));
- nulls = palloc(numb * sizeof(bool));
-
- size_t i;
- for (i = 0; i < numb; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[call_cntr].start_id);
- values[3] = Int64GetDatum(result_tuples[call_cntr].end_id);
- values[4] = Int64GetDatum(result_tuples[call_cntr].node);
- values[5] = Int64GetDatum(result_tuples[call_cntr].edge);
- values[6] = Float8GetDatum(result_tuples[call_cntr].cost);
- values[7] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/dijkstra/src/many_to_many_dijkstra_driver.cpp b/src/dijkstra/src/many_to_many_dijkstra_driver.cpp
deleted file mode 100644
index f0ee9dd..0000000
--- a/src/dijkstra/src/many_to_many_dijkstra_driver.cpp
+++ /dev/null
@@ -1,175 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: many_to_many_dijkstra_driver.cpp
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./many_to_many_dijkstra_driver.h"
-
-#include <sstream>
-#include <deque>
-#include <vector>
-#include <algorithm>
-
-#include "./pgr_dijkstra.hpp"
-
-#include "../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
-
-template < class G >
-std::deque< Path >
-pgr_dijkstra(
- G &graph,
- std::vector < int64_t > sources,
- std::vector < int64_t > targets,
- bool only_cost,
- bool normal) {
- std::sort(sources.begin(), sources.end());
- sources.erase(
- std::unique(sources.begin(), sources.end()),
- sources.end());
-
- std::sort(targets.begin(), targets.end());
- targets.erase(
- std::unique(targets.begin(), targets.end()),
- targets.end());
-
- Pgr_dijkstra< G > fn_dijkstra;
- auto paths = fn_dijkstra.dijkstra(graph, sources, targets, only_cost);
-
- if (!normal) {
- for (auto &path : paths) {
- path.reverse();
- }
- }
- return paths;
-}
-
-
-
-// CREATE OR REPLACE FUNCTION pgr_dijkstra(
-// sql text,
-// start_vids anyarray,
-// end_vids anyarray,
-// directed boolean default true,
-void
-do_pgr_many_to_many_dijkstra(
- pgr_edge_t *data_edges,
- size_t total_edges,
- int64_t *start_vidsArr,
- size_t size_start_vidsArr,
- int64_t *end_vidsArr,
- size_t size_end_vidsArr,
- bool directed,
- bool only_cost,
- bool normal,
- General_path_element_t **return_tuples,
- size_t *return_count,
- char ** log_msg,
- char ** notice_msg,
- char ** err_msg) {
- std::ostringstream log;
- std::ostringstream err;
- std::ostringstream notice;
-
- try {
- pgassert(total_edges != 0);
- pgassert(!(*log_msg));
- pgassert(!(*notice_msg));
- pgassert(!(*err_msg));
- pgassert(!(*return_tuples));
- pgassert(*return_count == 0);
-
- graphType gType = directed? DIRECTED: UNDIRECTED;
-
- log << "Inserting vertices into a c++ vector structure";
- std::vector<int64_t>
- start_vertices(start_vidsArr, start_vidsArr + size_start_vidsArr);
- std::vector< int64_t >
- end_vertices(end_vidsArr, end_vidsArr + size_end_vidsArr);
-
- std::deque< Path >paths;
- if (directed) {
- log << "\nWorking with directed Graph";
- pgrouting::DirectedGraph digraph(gType);
- digraph.insert_edges(data_edges, total_edges);
- paths = pgr_dijkstra(
- digraph,
- start_vertices, end_vertices,
- only_cost, normal);
- } else {
- log << "\nWorking with Undirected Graph";
- pgrouting::UndirectedGraph undigraph(gType);
- undigraph.insert_edges(data_edges, total_edges);
- paths = pgr_dijkstra(
- undigraph,
- start_vertices, end_vertices,
- only_cost, normal);
- }
-
- size_t count(0);
- count = count_tuples(paths);
-
- if (count == 0) {
- (*return_tuples) = NULL;
- (*return_count) = 0;
- notice <<
- "No paths found";
- *log_msg = pgr_msg(notice.str().c_str());
- return;
- }
-
- (*return_tuples) = pgr_alloc(count, (*return_tuples));
- log << "\nConverting a set of paths into the tuples";
- (*return_count) = (collapse_paths(return_tuples, paths));
-
- *log_msg = log.str().empty()?
- *log_msg :
- pgr_msg(log.str().c_str());
- *notice_msg = notice.str().empty()?
- *notice_msg :
- pgr_msg(notice.str().c_str());
- } catch (AssertFailedException &except) {
- (*return_tuples) = pgr_free(*return_tuples);
- (*return_count) = 0;
- err << except.what();
- *err_msg = pgr_msg(err.str().c_str());
- *log_msg = pgr_msg(log.str().c_str());
- } catch (std::exception &except) {
- (*return_tuples) = pgr_free(*return_tuples);
- (*return_count) = 0;
- err << except.what();
- *err_msg = pgr_msg(err.str().c_str());
- *log_msg = pgr_msg(log.str().c_str());
- } catch(...) {
- (*return_tuples) = pgr_free(*return_tuples);
- (*return_count) = 0;
- err << "Caught unknown exception!";
- *err_msg = pgr_msg(err.str().c_str());
- *log_msg = pgr_msg(log.str().c_str());
- }
-}
diff --git a/src/dijkstra/src/many_to_many_dijkstra_driver.h b/src/dijkstra/src/many_to_many_dijkstra_driver.h
deleted file mode 100644
index 3bc8b17..0000000
--- a/src/dijkstra/src/many_to_many_dijkstra_driver.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: many_to_many_dijkstra_driver.h
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_DIJKSTRA_SRC_MANY_TO_MANY_DIJKSTRA_DRIVER_H_
-#define SRC_DIJKSTRA_SRC_MANY_TO_MANY_DIJKSTRA_DRIVER_H_
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- // CREATE OR REPLACE FUNCTION pgr_dijkstra(
- // sql text,
- // start_vids anyarray,
- // end_vids anyarray,
- // directed boolean default true,
- void do_pgr_many_to_many_dijkstra(
- pgr_edge_t *data_edges,
- size_t total_tuples,
- int64_t *start_vidsArr,
- size_t size_start_vidsArr,
- int64_t *end_vidsArr,
- size_t size_end_vidsArr,
- bool directed,
- bool only_cost,
- bool normal,
-
- General_path_element_t **return_tuples,
- size_t *return_count,
-
- char** log_msg,
- char** notice_msg,
- char** err_msg);
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif // SRC_DIJKSTRA_SRC_MANY_TO_MANY_DIJKSTRA_DRIVER_H_
diff --git a/src/dijkstra/src/many_to_one_dijkstra.c b/src/dijkstra/src/many_to_one_dijkstra.c
deleted file mode 100644
index a82a1a4..0000000
--- a/src/dijkstra/src/many_to_one_dijkstra.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-File: many_to_one_dijkstra.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./many_to_many_dijkstra_driver.h"
-
-PGDLLEXPORT Datum many_to_one_dijkstra(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(many_to_one_dijkstra);
-
-static
-void
-process(
- char* edges_sql,
- ArrayType *starts,
- int64_t end_vid,
- bool directed,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- pgr_SPI_connect();
-
- int64_t* start_vidsArr = NULL;
- size_t size_start_vidsArr = 0;
- start_vidsArr = (int64_t*)
- pgr_get_bigIntArray(&size_start_vidsArr, starts);
-
- pgr_edge_t *edges = NULL;
- size_t total_edges = 0;
- pgr_get_edges_reversed(edges_sql, &edges, &total_edges);
-
- if (total_edges == 0) {
- if (start_vidsArr) pfree(start_vidsArr);
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
- do_pgr_many_to_many_dijkstra(
- edges, total_edges,
- &end_vid, 1,
- start_vidsArr, size_start_vidsArr,
-
- directed,
- only_cost,
- false, // data is reversed
- result_tuples,
- result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_dijkstraCost(many to one)", start_t, clock());
- } else {
- time_msg("processing pgr_dijkstra(many to one)", start_t, clock());
- }
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_count) = 0;
- (*result_tuples) = NULL;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
- if (start_vidsArr) pfree(start_vidsArr);
-
- pgr_SPI_finish();
-}
-
-PGDLLEXPORT Datum
-many_to_one_dijkstra(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**********************************************************************/
- General_path_element_t *result_tuples = NULL;
- size_t result_count = 0;
- /**********************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- // pgr_dijkstra(
- // sql TEXT,
- // start_vids ANYARRAY,
- // end_vid BIGINT,
- // directed BOOLEAN default true,
- // only_cost BOOLEAN default false
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_ARRAYTYPE_P(1),
- PG_GETARG_INT64(2),
- PG_GETARG_BOOL(3),
- PG_GETARG_BOOL(4),
- &result_tuples,
- &result_count);
-
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
- size_t call_cntr = funcctx->call_cntr;
-
- /**********************************************************************/
- // OUT seq INTEGER,
- // OUT path_seq INTEGER,
- // OUT start_vid BIGINT,
- // OUT node BIGINT,
- // OUT edge BIGINT,
- // OUT cost FLOAT,
- // OUT agg_cost FLOAT)
-
- size_t numb = 7;
- values = palloc(numb * sizeof(Datum));
- nulls = palloc(numb * sizeof(bool));
-
- size_t i;
- for (i = 0; i < numb; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[call_cntr].start_id);
- values[3] = Int64GetDatum(result_tuples[call_cntr].node);
- values[4] = Int64GetDatum(result_tuples[call_cntr].edge);
- values[5] = Float8GetDatum(result_tuples[call_cntr].cost);
- values[6] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/dijkstra/src/one_to_many_dijkstra.c b/src/dijkstra/src/one_to_many_dijkstra.c
deleted file mode 100644
index de9f4b0..0000000
--- a/src/dijkstra/src/one_to_many_dijkstra.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: one_to_many_dijkstra.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./many_to_many_dijkstra_driver.h"
-
-PGDLLEXPORT Datum one_to_many_dijkstra(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(one_to_many_dijkstra);
-
-
-static
-void
-process(
- char* edges_sql,
- int64_t start_vid,
- ArrayType *ends,
- bool directed,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- pgr_SPI_connect();
-
- int64_t* end_vidsArr = NULL;;
- size_t size_end_vidsArr = 0;
- end_vidsArr = (int64_t*)
- pgr_get_bigIntArray(&size_end_vidsArr, ends);
-
- pgr_edge_t *edges = NULL;
- size_t total_edges = 0;
- pgr_get_edges(edges_sql, &edges, &total_edges);
-
- if (total_edges == 0) {
- if (end_vidsArr) pfree(end_vidsArr);
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
- do_pgr_many_to_many_dijkstra(
- edges, total_edges,
- &start_vid, 1,
- end_vidsArr, size_end_vidsArr,
-
- directed,
- only_cost,
- true, // normal
-
- result_tuples,
- result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_dijkstraCost(one to many)", start_t, clock());
- } else {
- time_msg("processing pgr_dijkstra(one to many)", start_t, clock());
- }
-
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_count) = 0;
- (*result_tuples) = NULL;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
- if (end_vidsArr) pfree(end_vidsArr);
-
- pgr_SPI_finish();
-}
-
-PGDLLEXPORT Datum
-one_to_many_dijkstra(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**********************************************************************/
- General_path_element_t *result_tuples = 0;
- size_t result_count = 0;
- /**********************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- // pgr_dijkstra(
- // sql TEXT,
- // start_vid BIGINT,
- // end_vids ANYARRAY,
- // directed BOOLEAN default true,
- // only_cost BOOLEAN default false
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT64(1),
- PG_GETARG_ARRAYTYPE_P(2),
- PG_GETARG_BOOL(3),
- PG_GETARG_BOOL(4),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
-
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
- size_t call_cntr = funcctx->call_cntr;
-
- /**********************************************************************/
- // OUT seq INTEGER,
- // OUT path_seq INTEGER,
- // OUT end_vid BIGINT,
- // OUT node BIGINT,
- // OUT edge BIGINT,
- // OUT cost FLOAT,
- // OUT agg_cost FLOAT)
-
- size_t numb = 7;
- values = palloc(numb * sizeof(Datum));
- nulls = palloc(numb * sizeof(bool));
-
- size_t i;
- for (i = 0; i < numb; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[call_cntr].end_id);
- values[3] = Int64GetDatum(result_tuples[call_cntr].node);
- values[4] = Int64GetDatum(result_tuples[call_cntr].edge);
- values[5] = Float8GetDatum(result_tuples[call_cntr].cost);
- values[6] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
diff --git a/src/dijkstra/src/one_to_one_dijkstra.c b/src/dijkstra/src/one_to_one_dijkstra.c
deleted file mode 100644
index 674205d..0000000
--- a/src/dijkstra/src/one_to_one_dijkstra.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: one_to_one_dijkstra.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./many_to_many_dijkstra_driver.h"
-
-PG_MODULE_MAGIC;
-
-PGDLLEXPORT Datum one_to_one_dijkstra(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(one_to_one_dijkstra);
-
-static
-void
-process(
- char* edges_sql,
- int64_t start_vid,
- int64_t end_vid,
- bool directed,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- if (start_vid == end_vid) {
- return;
- }
-
- pgr_SPI_connect();
-
- pgr_edge_t *edges = NULL;
- size_t total_edges = 0;
- pgr_get_edges(edges_sql, &edges, &total_edges);
-
- if (total_edges == 0) {
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
- do_pgr_many_to_many_dijkstra(
- edges, total_edges,
- &start_vid, 1,
- &end_vid, 1,
-
- directed,
- only_cost,
- true, // normal
-
- result_tuples,
- result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_dijkstraCost(one to one)", start_t, clock());
- } else {
- time_msg("processing pgr_dijkstra(one to one)", start_t, clock());
- }
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_count) = 0;
- (*result_tuples) = NULL;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
-
- pgr_SPI_finish();
-}
-
-
-PGDLLEXPORT Datum
-one_to_one_dijkstra(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**********************************************************************/
- General_path_element_t *result_tuples = 0;
- size_t result_count = 0;
- /**********************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- // pgr_dijkstra(
- // sql TEXT,
- // start_vids BIGINT,
- // end_vid BIGINT,
- // directed BOOLEAN default true,
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT64(1),
- PG_GETARG_INT64(2),
- PG_GETARG_BOOL(3),
- PG_GETARG_BOOL(4),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
-
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
- size_t call_cntr = funcctx->call_cntr;
-
- /**********************************************************************/
- // OUT seq INTEGER,
- // OUT path_seq INTEGER,
- // OUT node BIGINT,
- // OUT edge BIGINT,
- // OUT cost FLOAT,
- // OUT agg_cost FLOAT
-
- size_t numb = 6;
- values = palloc(numb * sizeof(Datum));
- nulls = palloc(numb * sizeof(bool));
-
-
- size_t i;
- for (i = 0; i < numb; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[call_cntr].node);
- values[3] = Int64GetDatum(result_tuples[call_cntr].edge);
- values[4] = Float8GetDatum(result_tuples[call_cntr].cost);
- values[5] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
diff --git a/src/dijkstra/src/pgr_dijkstra.hpp b/src/dijkstra/src/pgr_dijkstra.hpp
deleted file mode 100644
index d394e95..0000000
--- a/src/dijkstra/src/pgr_dijkstra.hpp
+++ /dev/null
@@ -1,585 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_DIJKSTRA_SRC_PGR_DIJKSTRA_HPP_
-#define SRC_DIJKSTRA_SRC_PGR_DIJKSTRA_HPP_
-#pragma once
-
-#include <boost/config.hpp>
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/graph/dijkstra_shortest_paths.hpp>
-
-#include <deque>
-#include <set>
-#include <vector>
-#include <algorithm>
-
-#include "./../../common/src/basePath_SSEC.hpp"
-#include "./../../common/src/pgr_base_graph.hpp"
-#if 0
-#include "./../../common/src/signalhandler.h"
-#endif
-
-
-template < class G > class Pgr_dijkstra;
-// user's functions
-// for development
-
-template < class G >
-std::deque<Path>
-pgr_drivingDistance(
- G &graph,
- std::vector< int64_t > start_vids,
- double distance,
- bool equicost) {
- Pgr_dijkstra< G > fn_dijkstra;
- return fn_dijkstra.drivingDistance(graph, start_vids, distance, equicost);
-}
-
-
-template < class G >
-Path
-pgr_drivingDistance(
- G &graph,
- int64_t source,
- double distance) {
- Pgr_dijkstra< G > fn_dijkstra;
- return fn_dijkstra.drivingDistance(graph, source, distance);
-}
-
-
-/* 1 to 1*/
-template < class G >
-Path
-pgr_dijkstra(
- G &graph,
- int64_t source,
- int64_t target,
- bool only_cost = false) {
- Pgr_dijkstra< G > fn_dijkstra;
- return fn_dijkstra.dijkstra(graph, source, target, only_cost);
-}
-
-/* 1 to many*/
-template < class G >
-std::deque<Path>
-pgr_dijkstra(
- G &graph,
- int64_t source,
- std::vector< int64_t > targets,
- bool only_cost = false) {
- std::sort(targets.begin(), targets.end());
- targets.erase(
- std::unique(targets.begin(), targets.end()),
- targets.end());
- Pgr_dijkstra< G > fn_dijkstra;
- return fn_dijkstra.dijkstra(graph, source, targets, only_cost);
-}
-
-/* many to 1*/
-template < class G >
-std::deque<Path>
-pgr_dijkstra(
- G &graph,
- std::vector< int64_t > sources,
- int64_t target,
- bool only_cost = false) {
- std::sort(sources.begin(), sources.end());
- sources.erase(
- std::unique(sources.begin(), sources.end()),
- sources.end());
-
- Pgr_dijkstra< G > fn_dijkstra;
- return fn_dijkstra.dijkstra(graph, sources, target, only_cost);
-}
-
-/* Many to Many */
-template < class G >
-std::deque<Path>
-pgr_dijkstra(
- G &graph,
- std::vector< int64_t > sources,
- std::vector< int64_t > targets,
- bool only_cost = false) {
- std::sort(sources.begin(), sources.end());
- sources.erase(
- std::unique(sources.begin(), sources.end()),
- sources.end());
-
- std::sort(targets.begin(), targets.end());
- targets.erase(
- std::unique(targets.begin(), targets.end()),
- targets.end());
-
- Pgr_dijkstra< G > fn_dijkstra;
- return fn_dijkstra.dijkstra(graph, sources, targets, only_cost);
-}
-
-
-
-//******************************************
-
-template < class G >
-class Pgr_dijkstra {
- public:
- typedef typename G::V V;
-
- //! @name drivingDistance
- //@{
- //! 1 to distance
- Path
- drivingDistance(
- G &graph,
- int64_t start_vertex,
- double distance);
-
-
- //! many to distance
- std::deque<Path> drivingDistance(
- G &graph,
- std::vector< int64_t > start_vertex,
- double distance,
- bool equiCostFlag);
- //@}
-
- //! @name Dijkstra
- //@{
- //! one to one
- Path dijkstra(
- G &graph,
- int64_t start_vertex,
- int64_t end_vertex,
- bool only_cost = false);
-
- //! Many to one
- std::deque<Path> dijkstra(
- G &graph,
- const std::vector < int64_t > &start_vertex,
- int64_t end_vertex,
- bool only_cost = false);
-
- //! Many to Many
- std::deque<Path> dijkstra(
- G &graph,
- const std::vector< int64_t > &start_vertex,
- const std::vector< int64_t > &end_vertex,
- bool only_cost = false);
-
- //! one to Many
- std::deque<Path> dijkstra(
- G &graph,
- int64_t start_vertex,
- const std::vector< int64_t > &end_vertex,
- bool only_cost = false);
- //@}
-
- private:
- //! Call to Dijkstra 1 source to 1 target
- bool dijkstra_1_to_1(
- G &graph,
- V source,
- V target);
-
- //! Call to Dijkstra 1 source to distance
- bool dijkstra_1_to_distance(
- G &graph,
- V source,
- double distance);
-
- //! Call to Dijkstra 1 source to many targets
- bool dijkstra_1_to_many(
- G &graph,
- V source,
- const std::vector< V > &targets);
-
- void clear() {
- predecessors.clear();
- distances.clear();
- nodesInDistance.clear();
- }
-
-
-
-
- // used when multiple goals
- std::deque<Path> get_paths(
- const G &graph,
- V source,
- std::vector< V > &targets,
- bool only_cost) const {
- std::deque<Path> paths;
- for (const auto target : targets) {
- paths.push_back(Path(
- graph,
- source, target,
- predecessors, distances,
- only_cost, true));
- }
- return paths;
- }
-
-
-
- //! @name members;
- //@{
- struct found_goals{}; //!< exception for termination
- std::vector< V > predecessors;
- std::vector< double > distances;
- std::deque< V > nodesInDistance;
- //@}
-
- //! @name Stopping classes
- //@{
- //! class for stopping when 1 target is found
- class dijkstra_one_goal_visitor : public boost::default_dijkstra_visitor {
- public:
- explicit dijkstra_one_goal_visitor(V goal) : m_goal(goal) {}
- template <class B_G>
- void examine_vertex(V &u, B_G &g) {
-#if 0
- REG_SIGINT;
- THROW_ON_SIGINT;
-#endif
- if (u == m_goal) throw found_goals();
- num_edges(g);
- }
- private:
- V m_goal;
- };
-
- //! class for stopping when all targets are found
- class dijkstra_many_goal_visitor : public boost::default_dijkstra_visitor {
- public:
- explicit dijkstra_many_goal_visitor(std::vector< V > goals)
- :m_goals(goals.begin(), goals.end()) {}
- template <class B_G>
- void examine_vertex(V u, B_G &g) {
-#if 0
- REG_SIGINT;
- THROW_ON_SIGINT;
-#endif
- auto s_it = m_goals.find(u);
- if (s_it == m_goals.end()) return;
- // we found one more goal
- m_goals.erase(s_it);
- if (m_goals.size() == 0) throw found_goals();
- num_edges(g);
- }
- private:
- std::set< V > m_goals;
- };
-
-
- //! class for stopping when a distance/cost has being surpassed
- class dijkstra_distance_visitor : public boost::default_dijkstra_visitor {
- public:
- explicit dijkstra_distance_visitor(
- double distance_goal,
- std::deque< V > &nodesInDistance,
- std::vector< double > &distances) :
- m_distance_goal(distance_goal),
- m_nodes(nodesInDistance),
- m_dist(distances) {
- }
- template <class B_G>
- void examine_vertex(V u, B_G &g) {
-#if 0
- REG_SIGINT;
- THROW_ON_SIGINT;
-#endif
- m_nodes.push_back(u);
- if (m_dist[u] >= m_distance_goal) throw found_goals();
- num_edges(g);
- }
- private:
- double m_distance_goal;
- std::deque< V > &m_nodes;
- std::vector< double > &m_dist;
- };
-
-
- //@}
-};
-
-
-/******************** IMPLEMENTTION ******************/
-
-
-
-// preparation for many to distance
-template < class G >
-std::deque< Path >
-Pgr_dijkstra< G >::drivingDistance(
- G &graph,
- std::vector< int64_t > start_vertex,
- double distance,
- bool equicost) {
- clear();
-
- predecessors.resize(graph.num_vertices());
- distances.resize(graph.num_vertices());
-
-
- // perform the algorithm
- std::deque< Path > paths;
- for (const auto &vertex : start_vertex) {
- paths.push_back(
- drivingDistance(graph, vertex, distance));
- }
- if (equicost) {
- equi_cost(paths);
- }
- return paths;
-}
-
-template < class G >
-Path
-Pgr_dijkstra< G >::drivingDistance(
- G &graph,
- int64_t start_vertex,
- double distance) {
- clear();
-
- predecessors.resize(graph.num_vertices());
- distances.resize(graph.num_vertices());
-
- // get source;
- if (!graph.has_vertex(start_vertex)) {
- /* The node has to be in the path*/
- Path p(start_vertex, start_vertex);
- p.push_back({start_vertex, -1, 0, 0});
- return p;
- }
-
- auto v_source(graph.get_V(start_vertex));;
- dijkstra_1_to_distance(graph, v_source, distance);
-
- auto path = Path(graph, v_source, distance, predecessors, distances);
-
- std::sort(path.begin(), path.end(),
- [](const Path_t &l, const Path_t &r)
- {return l.node < r.node;});
- std::stable_sort(path.begin(), path.end(),
- [](const Path_t &l, const Path_t &r)
- {return l.agg_cost < r.agg_cost;});
- return path;
-}
-
-//! Dijkstra 1 to 1
-template < class G >
-Path
-Pgr_dijkstra< G >::dijkstra(
- G &graph,
- int64_t start_vertex,
- int64_t end_vertex,
- bool only_cost) {
- clear();
-
- // adjust predecessors and distances vectors
- predecessors.resize(graph.num_vertices());
- distances.resize(graph.num_vertices());
-
-
- if (!graph.has_vertex(start_vertex)
- || !graph.has_vertex(end_vertex)) {
- return Path(start_vertex, end_vertex);
- }
-
- // get the graphs source and target
- auto v_source(graph.get_V(start_vertex));
- auto v_target(graph.get_V(end_vertex));
-
- // perform the algorithm
- dijkstra_1_to_1(graph, v_source, v_target);
-
- // get the results
- return Path(
- graph,
- v_source, v_target,
- predecessors, distances,
- only_cost, true);
-}
-
-//! Dijkstra 1 to many
-template < class G >
-std::deque<Path>
-Pgr_dijkstra< G >::dijkstra(
- G &graph,
- int64_t start_vertex,
- const std::vector< int64_t > &end_vertex,
- bool only_cost) {
- // adjust predecessors and distances vectors
- clear();
-
- predecessors.resize(graph.num_vertices());
- distances.resize(graph.num_vertices());
-
- // get the graphs source and target
- if (!graph.has_vertex(start_vertex))
- return std::deque<Path>();
- auto v_source(graph.get_V(start_vertex));
-
- std::set< V > s_v_targets;
- for (const auto &vertex : end_vertex) {
- if (graph.has_vertex(vertex)) {
- s_v_targets.insert(graph.get_V(vertex));
- }
- }
-
- std::vector< V > v_targets(s_v_targets.begin(), s_v_targets.end());
- // perform the algorithm
- dijkstra_1_to_many(graph, v_source, v_targets);
-
- std::deque< Path > paths;
- // get the results // route id are the targets
- paths = get_paths(graph, v_source, v_targets, only_cost);
-
- std::stable_sort(paths.begin(), paths.end(),
- [](const Path &e1, const Path &e2)->bool {
- return e1.end_id() < e2.end_id();
- });
-
- return paths;
-}
-
-// preparation for many to 1
-template < class G >
-std::deque<Path>
-Pgr_dijkstra< G >::dijkstra(
- G &graph,
- const std::vector < int64_t > &start_vertex,
- int64_t end_vertex,
- bool only_cost) {
- std::deque<Path> paths;
-
- for (const auto &start : start_vertex) {
- paths.push_back(
- dijkstra(graph, start, end_vertex, only_cost));
- }
-
- std::stable_sort(paths.begin(), paths.end(),
- [](const Path &e1, const Path &e2)->bool {
- return e1.start_id() < e2.start_id();
- });
- return paths;
-}
-
-
-// preparation for many to many
-template < class G >
-std::deque<Path>
-Pgr_dijkstra< G >::dijkstra(
- G &graph,
- const std::vector< int64_t > &start_vertex,
- const std::vector< int64_t > &end_vertex,
- bool only_cost) {
- // a call to 1 to many is faster for each of the sources
- std::deque<Path> paths;
- for (const auto &start : start_vertex) {
- auto r_paths = dijkstra(graph, start, end_vertex, only_cost);
- paths.insert(paths.begin(), r_paths.begin(), r_paths.end());
- }
-
- std::sort(paths.begin(), paths.end(),
- [](const Path &e1, const Path &e2)->bool {
- return e1.end_id() < e2.end_id();
- });
- std::stable_sort(paths.begin(), paths.end(),
- [](const Path &e1, const Path &e2)->bool {
- return e1.start_id() < e2.start_id();
- });
- return paths;
-}
-
-
-//! Call to Dijkstra 1 source to 1 target
-template < class G >
-bool
-Pgr_dijkstra< G >::dijkstra_1_to_1(
- G &graph,
- V source,
- V target) {
- bool found = false;
- try {
- boost::dijkstra_shortest_paths(graph.graph, source,
- boost::predecessor_map(&predecessors[0])
- .weight_map(get(&G::G_T_E::cost, graph.graph))
- .distance_map(&distances[0])
- .visitor(dijkstra_one_goal_visitor(target)));
- }
- catch(found_goals &) {
- found = true; // Target vertex found
- } catch (...) {
- }
- return found;
-}
-
-
-//! Call to Dijkstra 1 source to distance
-template < class G >
-bool
-Pgr_dijkstra< G >::dijkstra_1_to_distance(G &graph, V source, double distance) {
- bool found = false;
- try {
- boost::dijkstra_shortest_paths(graph.graph, source,
- boost::predecessor_map(&predecessors[0])
- .weight_map(get(&G::G_T_E::cost, graph.graph))
- .distance_map(&distances[0])
- .visitor(dijkstra_distance_visitor(
- distance,
- nodesInDistance,
- distances)));
- }
- catch(found_goals &) {
- found = true;
- } catch (...) {
- }
- return found;
-}
-
-//! Call to Dijkstra 1 source to many targets
-template <class G>
-bool
-Pgr_dijkstra< G >::dijkstra_1_to_many(
- G &graph,
- V source,
- const std::vector< V > &targets) {
- bool found = false;
- try {
- boost::dijkstra_shortest_paths(graph.graph, source,
- boost::predecessor_map(&predecessors[0])
- .weight_map(get(&G::G_T_E::cost, graph.graph))
- .distance_map(&distances[0])
- .visitor(dijkstra_many_goal_visitor(targets)));
- }
- catch(found_goals &) {
- found = true; // Target vertex found
- } catch (...) {
- }
- return found;
-}
-
-#endif // SRC_DIJKSTRA_SRC_PGR_DIJKSTRA_HPP_
diff --git a/src/dijkstra/test/dijkstra-v2.result b/src/dijkstra/test/dijkstra-v2.result
deleted file mode 100644
index 39b17e7..0000000
--- a/src/dijkstra/test/dijkstra-v2.result
+++ /dev/null
@@ -1,21 +0,0 @@
---q1
-NOTICE: Deprecated function
---q2
-NOTICE: Deprecated function
-0|2|4|1
-1|5|8|1
-2|6|9|1
-3|9|16|1
-4|4|3|1
-5|3|-1|0
---q3
-NOTICE: Deprecated function
-0|2|4|1
-1|5|8|1
-2|6|5|1
-3|3|-1|0
---q4
-NOTICE: Deprecated function
-0|2|2|1
-1|3|-1|0
---q5
diff --git a/src/dijkstra/test/dijkstra-v2.test.sql b/src/dijkstra/test/dijkstra-v2.test.sql
deleted file mode 100644
index 9615059..0000000
--- a/src/dijkstra/test/dijkstra-v2.test.sql
+++ /dev/null
@@ -1,26 +0,0 @@
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--- PGR_dijkstra V.2.0
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-
-\echo --q1
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2,3, true, false);
-\echo --q2
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2,3, true, true);
-\echo --q3
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 2, 3, false, false);
-\echo --q4
-
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2, 3, false, true);
-\echo --q5
diff --git a/src/dijkstra/test/doc-pgr_dijkstra.result b/src/dijkstra/test/doc-pgr_dijkstra.result
index f9dbedd..285e4ab 100644
--- a/src/dijkstra/test/doc-pgr_dijkstra.result
+++ b/src/dijkstra/test/doc-pgr_dijkstra.result
@@ -1,226 +1,590 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-1|1|2|4|1|0
-2|2|5|8|1|1
-3|3|6|9|1|2
-4|4|9|16|1|3
-5|5|4|3|1|4
-6|6|3|-1|0|5
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
-- q2
-1|1|2|2|1|0
-2|2|3|-1|0|1
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
-- q3
-1|1|3|2|4|1|0
-2|2|3|5|8|1|1
-3|3|3|6|5|1|2
-4|4|3|3|-1|0|3
-5|1|5|2|4|1|0
-6|2|5|5|-1|0|1
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 5 | 1 | 2
+ 4 | 4 | 3 | 3 | -1 | 0 | 3
+ 5 | 1 | 5 | 2 | 4 | 1 | 0
+ 6 | 2 | 5 | 5 | -1 | 0 | 1
+(6 rows)
+
-- q4
-1|1|2|2|4|1|0
-2|2|2|5|-1|0|1
-3|1|11|11|13|1|0
-4|2|11|12|15|1|1
-5|3|11|9|9|1|2
-6|4|11|6|8|1|3
-7|5|11|5|-1|0|4
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2,11], 5
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | -1 | 0 | 1
+ 3 | 1 | 11 | 11 | 13 | 1 | 0
+ 4 | 2 | 11 | 12 | 15 | 1 | 1
+ 5 | 3 | 11 | 9 | 9 | 1 | 2
+ 6 | 4 | 11 | 6 | 8 | 1 | 3
+ 7 | 5 | 11 | 5 | -1 | 0 | 4
+(7 rows)
+
-- q5
-1|1|2|3|2|2|1|0
-2|2|2|3|3|-1|0|1
-3|1|2|5|2|4|1|0
-4|2|2|5|5|-1|0|1
-5|1|11|3|11|11|1|0
-6|2|11|3|6|5|1|1
-7|3|11|3|3|-1|0|2
-8|1|11|5|11|11|1|0
-9|2|11|5|6|8|1|1
-10|3|11|5|5|-1|0|2
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2,11], ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0
+ 2 | 2 | 2 | 3 | 3 | -1 | 0 | 1
+ 3 | 1 | 2 | 5 | 2 | 4 | 1 | 0
+ 4 | 2 | 2 | 5 | 5 | -1 | 0 | 1
+ 5 | 1 | 11 | 3 | 11 | 11 | 1 | 0
+ 6 | 2 | 11 | 3 | 6 | 5 | 1 | 1
+ 7 | 3 | 11 | 3 | 3 | -1 | 0 | 2
+ 8 | 1 | 11 | 5 | 11 | 11 | 1 | 0
+ 9 | 2 | 11 | 5 | 6 | 8 | 1 | 1
+ 10 | 3 | 11 | 5 | 5 | -1 | 0 | 2
+(10 rows)
+
-- q6
-- q7
-1|1|2|4|1|0
-2|2|5|8|1|1
-3|3|6|9|1|2
-4|4|9|16|1|3
-5|5|4|3|1|4
-6|6|3|-1|0|5
-1|1|2|4|1|0
-2|2|5|-1|0|1
-1|1|3|2|4|1|0
-2|2|3|5|8|1|1
-3|3|3|6|9|1|2
-4|4|3|9|16|1|3
-5|5|3|4|3|1|4
-6|6|3|3|-1|0|5
-7|1|5|2|4|1|0
-8|2|5|5|-1|0|1
-1|1|11|13|1|0
-2|2|12|15|1|1
-3|3|9|16|1|2
-4|4|4|3|1|3
-5|5|3|-1|0|4
-1|1|11|13|1|0
-2|2|12|15|1|1
-3|3|9|9|1|2
-4|4|6|8|1|3
-5|5|5|-1|0|4
-1|1|2|2|4|1|0
-2|2|2|5|-1|0|1
-3|1|11|11|13|1|0
-4|2|11|12|15|1|1
-5|3|11|9|9|1|2
-6|4|11|6|8|1|3
-7|5|11|5|-1|0|4
-1|1|2|3|2|4|1|0
-2|2|2|3|5|8|1|1
-3|3|2|3|6|9|1|2
-4|4|2|3|9|16|1|3
-5|5|2|3|4|3|1|4
-6|6|2|3|3|-1|0|5
-7|1|2|5|2|4|1|0
-8|2|2|5|5|-1|0|1
-9|1|11|3|11|13|1|0
-10|2|11|3|12|15|1|1
-11|3|11|3|9|16|1|2
-12|4|11|3|4|3|1|3
-13|5|11|3|3|-1|0|4
-14|1|11|5|11|13|1|0
-15|2|11|5|12|15|1|1
-16|3|11|5|9|9|1|2
-17|4|11|5|6|8|1|3
-18|5|11|5|5|-1|0|4
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 5
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3,5]
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 5 | 2 | 4 | 1 | 0
+ 8 | 2 | 5 | 5 | -1 | 0 | 1
+(8 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 11, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 13 | 1 | 0
+ 2 | 2 | 12 | 15 | 1 | 1
+ 3 | 3 | 9 | 16 | 1 | 2
+ 4 | 4 | 4 | 3 | 1 | 3
+ 5 | 5 | 3 | -1 | 0 | 4
+(5 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 11, 5
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 13 | 1 | 0
+ 2 | 2 | 12 | 15 | 1 | 1
+ 3 | 3 | 9 | 9 | 1 | 2
+ 4 | 4 | 6 | 8 | 1 | 3
+ 5 | 5 | 5 | -1 | 0 | 4
+(5 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2,11], 5
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | -1 | 0 | 1
+ 3 | 1 | 11 | 11 | 13 | 1 | 0
+ 4 | 2 | 11 | 12 | 15 | 1 | 1
+ 5 | 3 | 11 | 9 | 9 | 1 | 2
+ 6 | 4 | 11 | 6 | 8 | 1 | 3
+ 7 | 5 | 11 | 5 | -1 | 0 | 4
+(7 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 11], ARRAY[3,5]
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+ 7 | 1 | 2 | 5 | 2 | 4 | 1 | 0
+ 8 | 2 | 2 | 5 | 5 | -1 | 0 | 1
+ 9 | 1 | 11 | 3 | 11 | 13 | 1 | 0
+ 10 | 2 | 11 | 3 | 12 | 15 | 1 | 1
+ 11 | 3 | 11 | 3 | 9 | 16 | 1 | 2
+ 12 | 4 | 11 | 3 | 4 | 3 | 1 | 3
+ 13 | 5 | 11 | 3 | 3 | -1 | 0 | 4
+ 14 | 1 | 11 | 5 | 11 | 13 | 1 | 0
+ 15 | 2 | 11 | 5 | 12 | 15 | 1 | 1
+ 16 | 3 | 11 | 5 | 9 | 9 | 1 | 2
+ 17 | 4 | 11 | 5 | 6 | 8 | 1 | 3
+ 18 | 5 | 11 | 5 | 5 | -1 | 0 | 4
+(18 rows)
+
-- q8
-- q9
-1|1|2|2|1|0
-2|2|3|-1|0|1
-1|1|2|4|1|0
-2|2|5|-1|0|1
-1|1|11|11|1|0
-2|2|6|5|1|1
-3|3|3|-1|0|2
-1|1|11|11|1|0
-2|2|6|8|1|1
-3|3|5|-1|0|2
-1|1|2|2|4|1|0
-2|2|2|5|-1|0|1
-3|1|11|11|12|1|0
-4|2|11|10|10|1|1
-5|3|11|5|-1|0|2
-1|1|3|2|2|1|0
-2|2|3|3|-1|0|1
-3|1|5|2|4|1|0
-4|2|5|5|-1|0|1
-1|1|2|3|2|2|1|0
-2|2|2|3|3|-1|0|1
-3|1|2|5|2|4|1|0
-4|2|2|5|5|-1|0|1
-5|1|11|3|11|11|1|0
-6|2|11|3|6|5|1|1
-7|3|11|3|3|-1|0|2
-8|1|11|5|11|11|1|0
-9|2|11|5|6|8|1|1
-10|3|11|5|5|-1|0|2
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 5,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 11, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 11 | 1 | 0
+ 2 | 2 | 6 | 5 | 1 | 1
+ 3 | 3 | 3 | -1 | 0 | 2
+(3 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 11, 5,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 11 | 1 | 0
+ 2 | 2 | 6 | 8 | 1 | 1
+ 3 | 3 | 5 | -1 | 0 | 2
+(3 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2,11], 5,
+ FALSE
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | -1 | 0 | 1
+ 3 | 1 | 11 | 11 | 12 | 1 | 0
+ 4 | 2 | 11 | 10 | 10 | 1 | 1
+ 5 | 3 | 11 | 5 | -1 | 0 | 2
+(5 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | 3 | -1 | 0 | 1
+ 3 | 1 | 5 | 2 | 4 | 1 | 0
+ 4 | 2 | 5 | 5 | -1 | 0 | 1
+(4 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 11], ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0
+ 2 | 2 | 2 | 3 | 3 | -1 | 0 | 1
+ 3 | 1 | 2 | 5 | 2 | 4 | 1 | 0
+ 4 | 2 | 2 | 5 | 5 | -1 | 0 | 1
+ 5 | 1 | 11 | 3 | 11 | 11 | 1 | 0
+ 6 | 2 | 11 | 3 | 6 | 5 | 1 | 1
+ 7 | 3 | 11 | 3 | 3 | -1 | 0 | 2
+ 8 | 1 | 11 | 5 | 11 | 11 | 1 | 0
+ 9 | 2 | 11 | 5 | 6 | 8 | 1 | 1
+ 10 | 3 | 11 | 5 | 5 | -1 | 0 | 2
+(10 rows)
+
-- q10
-- q11
-1|1|2|4|1|0
-2|2|5|-1|0|1
-1|1|2|2|4|1|0
-2|2|2|5|-1|0|1
-1|1|5|2|4|1|0
-2|2|5|5|-1|0|1
-1|1|2|5|2|4|1|0
-2|2|2|5|5|-1|0|1
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 5
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 11, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 11, 5
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ ARRAY[2,11], 5
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, ARRAY[3,5]
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 5 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ ARRAY[2, 11], ARRAY[3,5]
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 5 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | 5 | -1 | 0 | 1
+(2 rows)
+
-- q12
-- q13
-1|1|2|4|1|0
-2|2|5|8|1|1
-3|3|6|5|1|2
-4|4|3|-1|0|3
-1|1|2|4|1|0
-2|2|5|-1|0|1
-1|1|11|11|1|0
-2|2|6|5|1|1
-3|3|3|-1|0|2
-1|1|11|11|1|0
-2|2|6|8|1|1
-3|3|5|-1|0|2
-1|1|2|2|4|1|0
-2|2|2|5|-1|0|1
-3|1|11|11|12|1|0
-4|2|11|10|10|1|1
-5|3|11|5|-1|0|2
-1|1|3|2|4|1|0
-2|2|3|5|8|1|1
-3|3|3|6|5|1|2
-4|4|3|3|-1|0|3
-5|1|5|2|4|1|0
-6|2|5|5|-1|0|1
-1|1|2|3|2|4|1|0
-2|2|2|3|5|8|1|1
-3|3|2|3|6|5|1|2
-4|4|2|3|3|-1|0|3
-5|1|2|5|2|4|1|0
-6|2|2|5|5|-1|0|1
-7|1|11|3|11|11|1|0
-8|2|11|3|6|5|1|1
-9|3|11|3|3|-1|0|2
-10|1|11|5|11|11|1|0
-11|2|11|5|6|8|1|1
-12|3|11|5|5|-1|0|2
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 5 | 1 | 2
+ 4 | 4 | 3 | -1 | 0 | 3
+(4 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 5,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 11, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 11 | 1 | 0
+ 2 | 2 | 6 | 5 | 1 | 1
+ 3 | 3 | 3 | -1 | 0 | 2
+(3 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 11, 5,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 11 | 11 | 1 | 0
+ 2 | 2 | 6 | 8 | 1 | 1
+ 3 | 3 | 5 | -1 | 0 | 2
+(3 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ ARRAY[2,11], 5,
+ FALSE
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 5 | -1 | 0 | 1
+ 3 | 1 | 11 | 11 | 12 | 1 | 0
+ 4 | 2 | 11 | 10 | 10 | 1 | 1
+ 5 | 3 | 11 | 5 | -1 | 0 | 2
+(5 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 5 | 1 | 2
+ 4 | 4 | 3 | 3 | -1 | 0 | 3
+ 5 | 1 | 5 | 2 | 4 | 1 | 0
+ 6 | 2 | 5 | 5 | -1 | 0 | 1
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost FROM edge_table',
+ ARRAY[2, 11], ARRAY[3,5],
+ FALSE
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 5 | 1 | 2
+ 4 | 4 | 2 | 3 | 3 | -1 | 0 | 3
+ 5 | 1 | 2 | 5 | 2 | 4 | 1 | 0
+ 6 | 2 | 2 | 5 | 5 | -1 | 0 | 1
+ 7 | 1 | 11 | 3 | 11 | 11 | 1 | 0
+ 8 | 2 | 11 | 3 | 6 | 5 | 1 | 1
+ 9 | 3 | 11 | 3 | 3 | -1 | 0 | 2
+ 10 | 1 | 11 | 5 | 11 | 11 | 1 | 0
+ 11 | 2 | 11 | 5 | 6 | 8 | 1 | 1
+ 12 | 3 | 11 | 5 | 5 | -1 | 0 | 2
+(12 rows)
+
-- q14
-- q15
-1|1|2|4|1|0
-2|2|5|8|1|1
-3|3|6|9|1|2
-4|4|9|16|1|3
-5|5|4|3|1|4
-6|6|3|-1|0|5
-1|1|2|4|1|0
-2|2|5|8|1|1
-3|3|6|9|1|2
-4|4|9|16|1|3
-5|5|4|3|1|4
-6|6|3|-1|0|5
-1|1|3|2|4|1|0
-2|2|3|5|8|1|1
-3|3|3|6|9|1|2
-4|4|3|9|16|1|3
-5|5|3|4|3|1|4
-6|6|3|3|-1|0|5
-1|1|3|2|4|1|0
-2|2|3|5|8|1|1
-3|3|3|6|9|1|2
-4|4|3|9|16|1|3
-5|5|3|4|3|1|4
-6|6|3|3|-1|0|5
-1|1|2|3|2|4|1|0
-2|2|2|3|5|8|1|1
-3|3|2|3|6|9|1|2
-4|4|2|3|9|16|1|3
-5|5|2|3|4|3|1|4
-6|6|2|3|3|-1|0|5
-1|1|2|3|2|4|1|0
-2|2|2|3|5|8|1|1
-3|3|2|3|6|9|1|2
-4|4|2|3|9|16|1|3
-5|5|2|3|4|3|1|4
-6|6|2|3|3|-1|0|5
-NOTICE: Deprecated function
-0|2|4|1
-1|5|8|1
-2|6|9|1
-3|9|16|1
-4|4|3|1
-5|3|-1|0
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ TRUE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2,3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3],
+ TRUE
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3]
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2], ARRAY[3],
+ TRUE
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+(6 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2], ARRAY[3]
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 4 | 1 | 0
+ 2 | 2 | 2 | 3 | 5 | 8 | 1 | 1
+ 3 | 3 | 2 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 2 | 3 | 9 | 16 | 1 | 3
+ 5 | 5 | 2 | 3 | 4 | 3 | 1 | 4
+ 6 | 6 | 2 | 3 | 3 | -1 | 0 | 5
+(6 rows)
+
-- q16
-- q17
-1|1|2|2|1|0
-2|2|3|-1|0|1
-1|1|3|2|2|1|0
-2|2|3|3|-1|0|1
-1|1|2|2|2|1|0
-2|2|2|3|-1|0|1
-1|1|2|3|2|2|1|0
-2|2|2|3|3|-1|0|1
-NOTICE: Deprecated function
-0|2|2|1
-1|3|-1|0
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, ARRAY[3],
+ FALSE
+);
+ seq | path_seq | end_vid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | 3 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | 3 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2], 3,
+ FALSE
+);
+ seq | path_seq | start_vid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 2 | 1 | 0
+ 2 | 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+SELECT * FROM pgr_dijkstra(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[2], ARRAY[3],
+ FALSE
+);
+ seq | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0
+ 2 | 2 | 2 | 3 | 3 | -1 | 0 | 1
+(2 rows)
+
-- q18
+ROLLBACK;
+ROLLBACK
diff --git a/src/dijkstra/test/doc-pgr_dijkstra.test.sql b/src/dijkstra/test/doc-pgr_dijkstra.test.sql
index 41aa7b9..d41bcd7 100644
--- a/src/dijkstra/test/doc-pgr_dijkstra.test.sql
+++ b/src/dijkstra/test/doc-pgr_dijkstra.test.sql
@@ -219,16 +219,8 @@ SELECT * FROM pgr_dijkstra(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
ARRAY[2], ARRAY[3]
);
--- Version 2.0
-SET client_min_messages TO NOTICE;
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2, 3,
- TRUE, -- directed flag
- TRUE -- has_rcost
-);
-\echo -- q16
+\echo -- q16
-- Equivalences for :ref:`fig2-undirect-Cost-Reverse`
@@ -256,12 +248,5 @@ SELECT * FROM pgr_dijkstra(
ARRAY[2], ARRAY[3],
FALSE
);
--- Version 2.0
-SELECT * FROM pgr_dijkstra(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 2, 3,
- FALSE, -- directed flag
- TRUE -- has_rcost
-);
-\echo -- q18
+\echo -- q18
diff --git a/src/dijkstra/test/doc-pgr_dijkstraCost.result b/src/dijkstra/test/doc-pgr_dijkstraCost.result
index 3be3c5f..ddb9a9b 100644
--- a/src/dijkstra/test/doc-pgr_dijkstraCost.result
+++ b/src/dijkstra/test/doc-pgr_dijkstraCost.result
@@ -1,30 +1,85 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-2|3|5
+SELECT * FROM pgr_dijkstraCost(
+ 'select id, source, target, cost, reverse_cost from edge_table',
+ 2, 3);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+(1 row)
+
--q2
-2|3|1
+SELECT * FROM pgr_dijkstraCost(
+ 'select id, source, target, cost, reverse_cost from edge_table',
+ 2, 3, false);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 1
+(1 row)
+
--q3
-2|3|5
-7|3|6
+SELECT * FROM pgr_dijkstraCost(
+ 'select id, source, target, cost, reverse_cost from edge_table',
+ ARRAY[2, 7], 3);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 7 | 3 | 6
+(2 rows)
+
--q4
-2|3|5
-2|11|3
+SELECT * FROM pgr_dijkstraCost(
+ 'select id, source, target, cost, reverse_cost from edge_table',
+ 2, ARRAY[3, 11]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 11 | 3
+(2 rows)
+
--q5
-2|3|5
-2|11|3
-7|3|6
-7|11|4
+SELECT * FROM pgr_dijkstraCost(
+ 'select id, source, target, cost, reverse_cost from edge_table',
+ ARRAY[2, 7], ARRAY[3, 11]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 2 | 3 | 5
+ 2 | 11 | 3
+ 7 | 3 | 6
+ 7 | 11 | 4
+(4 rows)
+
--q6
-3|4|3
-3|5|2
-4|3|1
-4|5|3
-5|3|4
-5|4|3
+SELECT * FROM pgr_dijkstraCost(
+ 'select id, source, target, cost, reverse_cost from edge_table',
+ ARRAY[5, 3, 4, 3, 3, 4], ARRAY[3, 5, 3, 4]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 3 | 4 | 3
+ 3 | 5 | 2
+ 4 | 3 | 1
+ 4 | 5 | 3
+ 5 | 3 | 4
+ 5 | 4 | 3
+(6 rows)
+
--q7
-3|4|3
-3|5|2
-4|3|1
-4|5|3
-5|3|4
-5|4|3
+SELECT * FROM pgr_dijkstraCost(
+ 'select id, source, target, cost, reverse_cost from edge_table',
+ ARRAY[5, 3, 4], ARRAY[5, 3, 4]);
+ start_vid | end_vid | agg_cost
+-----------+---------+----------
+ 3 | 4 | 3
+ 3 | 5 | 2
+ 4 | 3 | 1
+ 4 | 5 | 3
+ 5 | 3 | 4
+ 5 | 4 | 3
+(6 rows)
+
--q8
+ROLLBACK;
+ROLLBACK
diff --git a/src/dijkstra/test/doc-pgr_dijkstraVia.result b/src/dijkstra/test/doc-pgr_dijkstraVia.result
index a63254d..241fd80 100644
--- a/src/dijkstra/test/doc-pgr_dijkstraVia.result
+++ b/src/dijkstra/test/doc-pgr_dijkstraVia.result
@@ -1,55 +1,134 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q00
-1|1|1|1|3|1|1|1|0|0
-2|1|2|1|3|2|4|1|1|1
-3|1|3|1|3|5|8|1|2|2
-4|1|4|1|3|6|9|1|3|3
-5|1|5|1|3|9|16|1|4|4
-6|1|6|1|3|4|3|1|5|5
-7|1|7|1|3|3|-1|0|6|6
-8|2|1|3|9|3|5|1|0|6
-9|2|2|3|9|6|9|1|1|7
-10|2|3|3|9|9|-2|0|2|8
+SELECT * FROM pgr_dijkstraVia(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table order by id',
+ ARRAY[1, 3, 9]
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 0 | 0
+ 2 | 1 | 2 | 1 | 3 | 2 | 4 | 1 | 1 | 1
+ 3 | 1 | 3 | 1 | 3 | 5 | 8 | 1 | 2 | 2
+ 4 | 1 | 4 | 1 | 3 | 6 | 9 | 1 | 3 | 3
+ 5 | 1 | 5 | 1 | 3 | 9 | 16 | 1 | 4 | 4
+ 6 | 1 | 6 | 1 | 3 | 4 | 3 | 1 | 5 | 5
+ 7 | 1 | 7 | 1 | 3 | 3 | -1 | 0 | 6 | 6
+ 8 | 2 | 1 | 3 | 9 | 3 | 5 | 1 | 0 | 6
+ 9 | 2 | 2 | 3 | 9 | 6 | 9 | 1 | 1 | 7
+ 10 | 2 | 3 | 3 | 9 | 9 | -2 | 0 | 2 | 8
+(10 rows)
+
-- q0
-1|1|1|1|3|1|1|1|0|0
-2|1|2|1|3|2|2|1|1|1
-3|1|3|1|3|3|-1|0|2|2
-4|2|1|3|9|3|5|1|0|2
-5|2|2|3|9|6|9|1|1|3
-6|2|3|3|9|9|-2|0|2|4
+SELECT * FROM pgr_dijkstraVia(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table order by id',
+ ARRAY[1, 3, 9], false, strict:=true, U_turn_on_edge:=false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 1 | 1 | 1 | 3 | 1 | 1 | 1 | 0 | 0
+ 2 | 1 | 2 | 1 | 3 | 2 | 2 | 1 | 1 | 1
+ 3 | 1 | 3 | 1 | 3 | 3 | -1 | 0 | 2 | 2
+ 4 | 2 | 1 | 3 | 9 | 3 | 5 | 1 | 0 | 2
+ 5 | 2 | 2 | 3 | 9 | 6 | 9 | 1 | 1 | 3
+ 6 | 2 | 3 | 3 | 9 | 9 | -2 | 0 | 2 | 4
+(6 rows)
+
-- q1
-1|1|1|1|5|1|1|1|0|0
-2|1|2|1|5|2|4|1|1|1
-3|1|3|1|5|5|-1|0|2|2
-4|2|1|5|3|5|8|1|0|2
-5|2|2|5|3|6|9|1|1|3
-6|2|3|5|3|9|16|1|2|4
-7|2|4|5|3|4|3|1|3|5
-8|2|5|5|3|3|-1|0|4|6
-9|3|1|3|9|3|5|1|0|6
-10|3|2|3|9|6|9|1|1|7
-11|3|3|3|9|9|-1|0|2|8
-12|4|1|9|4|9|16|1|0|8
-13|4|2|9|4|4|-2|0|1|9
+SELECT * FROM pgr_dijkstraVia(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table order by id',
+ ARRAY[1, 5, 3, 9, 4]
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 1 | 1 | 1 | 5 | 1 | 1 | 1 | 0 | 0
+ 2 | 1 | 2 | 1 | 5 | 2 | 4 | 1 | 1 | 1
+ 3 | 1 | 3 | 1 | 5 | 5 | -1 | 0 | 2 | 2
+ 4 | 2 | 1 | 5 | 3 | 5 | 8 | 1 | 0 | 2
+ 5 | 2 | 2 | 5 | 3 | 6 | 9 | 1 | 1 | 3
+ 6 | 2 | 3 | 5 | 3 | 9 | 16 | 1 | 2 | 4
+ 7 | 2 | 4 | 5 | 3 | 4 | 3 | 1 | 3 | 5
+ 8 | 2 | 5 | 5 | 3 | 3 | -1 | 0 | 4 | 6
+ 9 | 3 | 1 | 3 | 9 | 3 | 5 | 1 | 0 | 6
+ 10 | 3 | 2 | 3 | 9 | 6 | 9 | 1 | 1 | 7
+ 11 | 3 | 3 | 3 | 9 | 9 | -1 | 0 | 2 | 8
+ 12 | 4 | 1 | 9 | 4 | 9 | 16 | 1 | 0 | 8
+ 13 | 4 | 2 | 9 | 4 | 4 | -2 | 0 | 1 | 9
+(13 rows)
+
-- q2
-2
+SELECT agg_cost FROM pgr_dijkstraVia(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table order by id',
+ ARRAY[1, 5, 3, 9, 4]
+)
+WHERE path_id = 3 AND edge <0;
+ agg_cost
+----------
+ 2
+(1 row)
+
-- q3
-8
+SELECT route_agg_cost FROM pgr_dijkstraVia(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table order by id',
+ ARRAY[1, 5, 3, 9, 4]
+)
+WHERE path_id = 3 AND edge < 0;
+ route_agg_cost
+----------------
+ 8
+(1 row)
+
-- q4
-1|1
-2|2
-3|5
-4|6
-5|9
-6|4
-7|3
-8|6
-9|9
-10|4
+SELECT row_number() over () as node_seq, node
+FROM pgr_dijkstraVia(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table order by id',
+ ARRAY[1, 5, 3, 9, 4]
+)
+WHERE edge <> -1 ORDER BY seq;
+ node_seq | node
+----------+------
+ 1 | 1
+ 2 | 2
+ 3 | 5
+ 4 | 6
+ 5 | 9
+ 6 | 4
+ 7 | 3
+ 8 | 6
+ 9 | 9
+ 10 | 4
+(10 rows)
+
-- q5
-1|2
-2|6
-3|8
-4|9
+SELECT path_id, route_agg_cost FROM pgr_dijkstraVia(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table order by id',
+ ARRAY[1, 5, 3, 9, 4]
+)
+WHERE edge < 0;
+ path_id | route_agg_cost
+---------+----------------
+ 1 | 2
+ 2 | 6
+ 3 | 8
+ 4 | 9
+(4 rows)
+
-- q6
-6|4|9|2|passes in front
-11|8|9|2|visits
+SELECT seq, route_agg_cost, node, agg_cost ,
+CASE WHEN edge = -1 THEN 'visits'
+ELSE 'passes in front'
+END as status
+FROM pgr_dijkstraVia(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table order by id',
+ ARRAY[1, 5, 3, 9, 4])
+WHERE node = 9 and (agg_cost <> 0 or seq = 1);
+ seq | route_agg_cost | node | agg_cost | status
+-----+----------------+------+----------+-----------------
+ 6 | 4 | 9 | 2 | passes in front
+ 11 | 8 | 9 | 2 | visits
+(2 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/dijkstra/test/issue-353.result b/src/dijkstra/test/issue-353.result
deleted file mode 100644
index b4686ec..0000000
--- a/src/dijkstra/test/issue-353.result
+++ /dev/null
@@ -1,4 +0,0 @@
-1..3
-ok 1 - 1
-ok 2 - 2
-ok 3 - 3
diff --git a/src/dijkstra/test/many_to_1.result b/src/dijkstra/test/many_to_1.result
deleted file mode 100644
index b34d93e..0000000
--- a/src/dijkstra/test/many_to_1.result
+++ /dev/null
@@ -1,35 +0,0 @@
-1|1|2|2|4|1|0
-2|2|2|5|8|1|1
-3|3|2|6|9|1|2
-4|4|2|9|16|1|3
-5|5|2|4|3|1|4
-6|6|2|3|-1|0|5
-1|1|2|2|2|1|0
-2|2|2|3|-1|0|1
-1|1|2|2|4|1|0
-2|2|2|5|8|1|1
-3|3|2|6|5|1|2
-4|4|2|3|-1|0|3
-1|1|2|2|4|1|0
-2|2|2|5|8|1|1
-3|3|2|6|9|1|2
-4|4|2|9|16|1|3
-5|5|2|4|3|1|4
-6|6|2|3|-1|0|5
-7|1|11|11|13|1|0
-8|2|11|12|15|1|1
-9|3|11|9|16|1|2
-10|4|11|4|3|1|3
-11|5|11|3|-1|0|4
-1|1|2|2|2|1|0
-2|2|2|3|-1|0|1
-3|1|11|11|11|1|0
-4|2|11|6|5|1|1
-5|3|11|3|-1|0|2
-1|1|2|2|4|1|0
-2|2|2|5|8|1|1
-3|3|2|6|5|1|2
-4|4|2|3|-1|0|3
-5|1|11|11|11|1|0
-6|2|11|6|5|1|1
-7|3|11|3|-1|0|2
diff --git a/src/dijkstra/test/many_to_1.test.sql b/src/dijkstra/test/many_to_1.test.sql
deleted file mode 100644
index d44b5c5..0000000
--- a/src/dijkstra/test/many_to_1.test.sql
+++ /dev/null
@@ -1,52 +0,0 @@
-
--- Examples for :ref:`fig1-direct-Cost-Reverse`
--------------------------------------------------------------------------------
-
-
-
-
-
- SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[2], 3
- );
-
-
- SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[2], 3, false
- );
-
- SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- array[2], 3
- );
-
- SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- array[2], 3, false
- );
-
-
- SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[2,11], 3
- );
-
-
- SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[2,11], 3, false
- );
-
- SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- array[2,11], 3
- );
-
- SELECT * FROM pgr_dijkstra(
- 'SELECT id, source, target, cost FROM edge_table',
- array[2,11], 3, false
- );
-
-
diff --git a/src/dijkstra/test/test.conf b/src/dijkstra/test/test.conf
index 7173fc9..3215662 100644
--- a/src/dijkstra/test/test.conf
+++ b/src/dijkstra/test/test.conf
@@ -5,11 +5,9 @@
'comment' => 'Dijkstra test for any versions.',
'data' => [ ],
'tests' => [qw(
- dijkstra-v2
doc-pgr_dijkstra
doc-pgr_dijkstraVia
doc-pgr_dijkstraCost
- many_to_1
)],
'documentation' => [qw(
doc-pgr_dijkstra
@@ -17,10 +15,6 @@
doc-pgr_dijkstraCost
)]
,'notests' => [qw(
- dijkstra-v2
- doc-pgr_dijkstraVia
- doc-pgr_dijkstraCost
- many_to_1
)]
},
diff --git a/src/dijkstraTRSP/src/CMakeLists.txt b/src/dijkstraTRSP/src/CMakeLists.txt
new file mode 100644
index 0000000..e2a3b4f
--- /dev/null
+++ b/src/dijkstraTRSP/src/CMakeLists.txt
@@ -0,0 +1,5 @@
+ADD_LIBRARY(dijkstraTRSP OBJECT
+ dijkstraTRSP.c
+ dijkstraTRSP_driver.cpp
+ restriction.cpp
+ )
diff --git a/src/dijkstraTRSP/src/dijkstraTRSP.c b/src/dijkstraTRSP/src/dijkstraTRSP.c
new file mode 100644
index 0000000..70c550b
--- /dev/null
+++ b/src/dijkstraTRSP/src/dijkstraTRSP.c
@@ -0,0 +1,285 @@
+/*PGR-GNU*****************************************************************
+File: dijkstraTRSP.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/** @file dijkstraTRSP.c
+ * @brief Connecting code with postgres.
+ *
+ * This file is fully documented for understanding
+ * how the postgres connectinon works
+ *
+ * TODO Remove unnecessary comments before submiting the function.
+ * some comments are in form of PGR_DBG message
+ */
+
+/**
+ * postgres_connection.h
+ *
+ * - should always be first in the C code
+ */
+#include "c_common/postgres_connection.h"
+
+
+/* for macro PGR_DBG */
+#include "c_common/debug_macro.h"
+/* for pgr_global_report */
+#include "c_common/e_report.h"
+/* for time_msg & clock */
+#include "c_common/time_msg.h"
+/* for functions to get edges information */
+#include "c_common/edges_input.h"
+#include "c_common/restrict_input.h"
+
+#include "drivers/dijkstraTRSP/dijkstraTRSP_driver.h" // the link to the C++ code of the function
+
+PGDLLEXPORT Datum dijkstraTRSP(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(dijkstraTRSP);
+
+
+/******************************************************************************/
+/* MODIFY AS NEEDED */
+static
+void
+process(
+ char* edges_sql,
+ char *restrictions_sql,
+ int64_t start_vid,
+ int64_t end_vid,
+ bool directed,
+ bool only_cost,
+ bool strict,
+ General_path_element_t **result_tuples,
+ size_t *result_count) {
+ pgr_SPI_connect();
+ /*
+ * https://www.postgresql.org/docs/current/static/spi-spi-connect.html
+ */
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+ PGR_DBG("\n\n\n\n\n\nEdge query: %s\n", edges_sql);
+ PGR_DBG("Restrictions query: %s\n", restrictions_sql);
+ PGR_DBG("source: %lu | destination: %lu\n\n", start_vid, end_vid);
+
+ PGR_DBG("Load data");
+ pgr_edge_t *edges = NULL;
+ size_t total_edges = 0;
+
+ if (start_vid == end_vid) {
+ /*
+ * https://www.postgresql.org/docs/current/static/spi-spi-finish.html
+ */
+ pgr_SPI_finish();
+ return;
+ }
+
+ pgr_get_edges(edges_sql, &edges, &total_edges);
+ PGR_DBG("Total %ld edges in query:", total_edges);
+
+ PGR_DBG("Load restrictions");
+ Restrict_t *restrictions = NULL;
+ size_t total_restrictions = 0;
+
+ pgr_get_restriction_data(restrictions_sql, &restrictions,
+ &total_restrictions);
+
+#if 1
+ size_t i = 0;
+ while(i < total_restrictions) {
+ PGR_DBG("id: %ld cost: %lf", restrictions[i].id, restrictions[i].cost);
+ int j = 0;
+ while(restrictions[i].restricted_edges[j] != -1) {
+ PGR_DBG("%ld ", restrictions[i].restricted_edges[j]);
+ j++;
+ }
+ PGR_DBG("\n");
+ i++;
+ }
+#endif
+
+ if (total_edges == 0) {
+ PGR_DBG("No edges found");
+ pgr_SPI_finish();
+ return;
+ }
+
+ PGR_DBG("Starting processing");
+ clock_t start_t = clock();
+ char *log_msg = NULL;
+ char *notice_msg = NULL;
+ char *err_msg = NULL;
+ do_pgr_dijkstraTRSP(
+ edges,
+ total_edges,
+ restrictions,
+ total_restrictions,
+ start_vid,
+ end_vid,
+ directed,
+ only_cost,
+ strict,
+ result_tuples,
+ result_count,
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ time_msg(" processing pgr_dijkstraTRSP", start_t, clock());
+ PGR_DBG("Returning %ld tuples", *result_count);
+
+ if (err_msg) {
+ if (*result_tuples) pfree(*result_tuples);
+ }
+ pgr_global_report(log_msg, notice_msg, err_msg);
+ if (edges) pfree(edges);
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+ if (restrictions) pfree(restrictions);
+ pgr_SPI_finish();
+}
+/* */
+/******************************************************************************/
+
+PGDLLEXPORT Datum dijkstraTRSP(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**************************************************************************/
+ /* MODIFY AS NEEDED */
+ /* */
+ General_path_element_t *result_tuples = NULL;
+ size_t result_count = 0;
+ /* */
+ /**************************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ TEXT,
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ strict BOOLEAN DEFAULT false
+ **********************************************************************/
+
+
+ PGR_DBG("Calling process");
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+ text_to_cstring(PG_GETARG_TEXT_P(1)),
+ PG_GETARG_INT64(2),
+ PG_GETARG_INT64(3),
+ PG_GETARG_BOOL(4),
+ PG_GETARG_BOOL(5),
+ PG_GETARG_BOOL(6),
+ &result_tuples,
+ &result_count);
+
+
+ /* */
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 94
+ funcctx->max_calls = result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (General_path_element_t*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ ***********************************************************************/
+
+ values = palloc(6 * sizeof(Datum));
+ nulls = palloc(6 * sizeof(bool));
+
+
+ size_t i;
+ for (i = 0; i < 6; ++i) {
+ nulls[i] = false;
+ }
+
+ // postgres starts counting from 1
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
+ values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
+ values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
+ values[4] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
+ values[5] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
+ /**********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+
+ PGR_DBG("Clean up code");
+
+ /**********************************************************************/
+
+ SRF_RETURN_DONE(funcctx);
+ }
+}
diff --git a/src/dijkstraTRSP/src/dijkstraTRSP_driver.cpp b/src/dijkstraTRSP/src/dijkstraTRSP_driver.cpp
new file mode 100644
index 0000000..a82f625
--- /dev/null
+++ b/src/dijkstraTRSP/src/dijkstraTRSP_driver.cpp
@@ -0,0 +1,186 @@
+/*PGR-GNU*****************************************************************
+File: dijkstraTRSP_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/dijkstraTRSP/dijkstraTRSP_driver.h"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+
+#include "dijkstraTRSP/pgr_dijkstraTRSP.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+#if 1
+template < class G >
+static
+Path
+pgr_dijkstraTRSP(
+ G &graph,
+ const std::vector< Restriction >& restrictions_array,
+ const std::vector< pgr_edge_t > edges,
+ int64_t source,
+ int64_t target,
+ std::string& log,
+ bool only_cost = false,
+ bool strict = false) {
+
+ Pgr_dijkstraTRSP< G > fn_TRSP;
+ Path path = fn_TRSP.dijkstraTRSP(graph,
+ restrictions_array,
+ edges,
+ source,
+ target,
+ only_cost,
+ strict);
+ log += fn_TRSP.log.str().c_str();
+ return path;
+}
+#endif
+
+void
+do_pgr_dijkstraTRSP(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ Restrict_t *restrictions,
+ size_t total_restrictions,
+ int64_t start_vid,
+ int64_t end_vid,
+ bool directed,
+ bool only_cost,
+ bool strict,
+ General_path_element_t **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg) {
+ std::ostringstream log;
+ std::ostringstream err;
+ std::ostringstream notice;
+ try {
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert(*return_count == 0);
+ pgassert(total_edges != 0);
+
+ log << "\n----------------------------------------\nRestrictions data\n";
+ std::vector< Restriction > restrict_array;
+ for(size_t i = 0;i < total_restrictions;i++) {
+ restrict_array.push_back( Restriction(restrictions[i]) );
+ }
+ log << "\n-------------------------------------------------------------\nStart from here\n";
+ for (const auto &it: restrict_array) {
+ log << it << "\n";
+ }
+ log <<"-----------------------------------------------------------------\n";
+
+ graphType gType = directed? DIRECTED: UNDIRECTED;
+
+ std::vector < pgr_edge_t > edges(data_edges, data_edges + total_edges);
+
+ Path path;
+ std::string logstr;
+ if (directed) {
+ log << "Working with directed Graph\n";
+ pgrouting::DirectedGraph digraph(gType);
+ Pgr_dijkstraTRSP < pgrouting::DirectedGraph > fn_TRSP;
+ digraph.insert_edges(edges);
+ path = pgr_dijkstraTRSP(digraph,
+ restrict_array,
+ edges,
+ start_vid,
+ end_vid,
+ logstr,
+ only_cost,
+ strict);
+ } else {
+ log << "Working with Undirected Graph\n";
+ pgrouting::UndirectedGraph undigraph(gType);
+ Pgr_dijkstraTRSP < pgrouting::UndirectedGraph > fn_TRSP;
+ undigraph.insert_edges(data_edges, total_edges);
+ #if 0
+ path = pgr_dijkstraTRSP(undigraph,
+ restrict_array,
+ edges,
+ start_vid,
+ end_vid,
+ logstr,
+ only_cost,
+ strict);
+ #endif
+ }
+ log << logstr;
+ auto count = path.size();
+ log << "\nCount = " << count;
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found between start_vid and end_vid vertices";
+ } else {
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ size_t sequence = 0;
+ path.generate_postgres_data(return_tuples, sequence);
+ (*return_count) = sequence;
+ }
+
+ pgassert(*err_msg == NULL);
+ *log_msg = log.str().empty()?
+ *log_msg :
+ pgr_msg(log.str().c_str());
+ #if 0
+ *notice_msg = notice.str().empty()?
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
+ #endif
+ pgassert(!log.str().empty());
+ } catch (AssertFailedException &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
diff --git a/src/dijkstraTRSP/src/restriction.cpp b/src/dijkstraTRSP/src/restriction.cpp
new file mode 100644
index 0000000..ecb41a4
--- /dev/null
+++ b/src/dijkstraTRSP/src/restriction.cpp
@@ -0,0 +1,52 @@
+/*PGR-GNU*****************************************************************
+File: restriction.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+********************************************************************PGR-GNU*/
+
+#include "dijkstraTRSP/restriction.h"
+
+#include <vector>
+#include <memory>
+#include <utility>
+#include <limits>
+
+Restriction::Restriction(const Restrict_t &r) :
+ m_id(r.id),
+ m_cost(r.cost) {
+ for(auto &it: r.restricted_edges) {
+ if (it == -1) break;
+ restrict_edges(it);
+ }
+ }
+
+std::ostream&
+operator << (std::ostream &log, const Restriction& r) {
+ log << "\n--------------------------------\nRestriction\n";
+ log << "ID: " << r.id() << "\nRestricion edge sequence: ";
+ for (const auto &v : r.restrict_edges()) {
+ log << v <<" ";
+ }
+ log << "\n";
+ log << "Cost: " << r.cost() << "\n";
+ return log;
+}
diff --git a/src/dijkstraTRSP/test/custom.result b/src/dijkstraTRSP/test/custom.result
new file mode 100644
index 0000000..ece264a
--- /dev/null
+++ b/src/dijkstraTRSP/test/custom.result
@@ -0,0 +1,25 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 8
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 8,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/dijkstraTRSP/test/custom.test.sql b/src/dijkstraTRSP/test/custom.test.sql
new file mode 100644
index 0000000..6184e95
--- /dev/null
+++ b/src/dijkstraTRSP/test/custom.test.sql
@@ -0,0 +1,12 @@
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 8
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 8,
+ FALSE
+);
diff --git a/src/dijkstraTRSP/test/doc-dijkstraTRSP.result b/src/dijkstraTRSP/test/doc-dijkstraTRSP.result
new file mode 100644
index 0000000..1f9b68c
--- /dev/null
+++ b/src/dijkstraTRSP/test/doc-dijkstraTRSP.result
@@ -0,0 +1,36 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
+-- q2
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+-- q3
+ROLLBACK;
+ROLLBACK
diff --git a/src/dijkstraTRSP/test/doc-dijkstraTRSP.test.sql b/src/dijkstraTRSP/test/doc-dijkstraTRSP.test.sql
new file mode 100644
index 0000000..a006a6f
--- /dev/null
+++ b/src/dijkstraTRSP/test/doc-dijkstraTRSP.test.sql
@@ -0,0 +1,16 @@
+
+\echo -- q1
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3
+);
+
+\echo -- q2
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3,
+ FALSE
+);
+\echo -- q3
diff --git a/src/dijkstraTRSP/test/pgtap/custom.sql b/src/dijkstraTRSP/test/pgtap/custom.sql
new file mode 100644
index 0000000..50c824b
--- /dev/null
+++ b/src/dijkstraTRSP/test/pgtap/custom.sql
@@ -0,0 +1,163 @@
+\i setup.sql
+
+SELECT plan(7);
+
+SET client_min_messages TO WARNING;
+
+UPDATE edge_table SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id;
+
+SELECT todo_start();
+
+
+PREPARE q1 AS
+SELECT seq,
+ edge
+FROM pgr_dijkstraTRSP('SELECT id, source, target, cost, reverse_cost
+FROM edge_table', 'SELECT * FROM restrict WHERE id in (1)', 2, 8);
+
+PREPARE q2 AS
+SELECT seq, edge FROM ( VALUES
+ (1, 4),
+ (2, 8),
+ (3, 11),
+ (4, 12),
+ (5, 10),
+ (6, 7),
+ (7, -1) )
+AS t(seq, edge);
+
+SELECT set_eq('q1', 'q2', 'Testing from source 2 to target 8 with restriction on edges as follows 4 -> 7');
+
+
+
+PREPARE q3 AS
+SELECT seq,
+ edge
+FROM pgr_dijkstraTRSP('SELECT id, source, target, cost, reverse_cost
+FROM edge_table', 'SELECT * FROM restrict WHERE id in (2)', 8, 11);
+
+PREPARE q4 AS
+SELECT seq, edge FROM ( VALUES
+ (1, 7),
+ (2, 10),
+ (3, 12),
+ (4, -1) )
+AS t(seq, edge);
+
+SELECT set_eq('q3', 'q4', 'Testing from source 8 to target 11 with restriction on edges as follows 7 -> 8 -> 11');
+
+
+
+PREPARE q5 AS
+SELECT seq,
+ edge
+FROM pgr_dijkstraTRSP('SELECT id, source, target, cost, reverse_cost
+FROM edge_table', 'SELECT * FROM restrict WHERE id in (2, 3)', 7, 3);
+
+PREPARE q6 AS
+SELECT seq, edge FROM ( VALUES
+ (1, 6),
+ (2, 7),
+ (3, 8),
+ (4, 9),
+ (5, 16),
+ (6, 3),
+ (7, -1) )
+AS t(seq, edge);
+
+SELECT set_eq('q5', 'q6', 'Testing from source 7 to target 3 with restriction on edges as follows 7 -> 8 -> 11 and 7 -> 8 -> 5');
+
+
+
+PREPARE q7 AS
+SELECT seq,
+ edge
+FROM pgr_dijkstraTRSP('SELECT id, source, target, cost, reverse_cost
+FROM edge_table', 'SELECT * FROM restrict WHERE id in (4)', 7, 1);
+
+PREPARE q8 AS
+SELECT seq, edge FROM ( VALUES
+ (1, 6),
+ (2, 7),
+ (3, 8),
+ (4, 5),
+ (5, 2),
+ (6, 1),
+ (7, -1) )
+AS t(seq, edge);
+
+SELECT set_eq('q7', 'q8', 'Testing from source 7 to target 1 with restriction on edges as follows 7 -> 4');
+
+
+
+PREPARE q9 AS
+SELECT seq,
+ edge
+FROM pgr_dijkstraTRSP('SELECT id, source, target, cost, reverse_cost
+FROM edge_table', 'SELECT * FROM restrict WHERE id in (4, 5)', 8, 4);
+
+PREPARE q10 AS
+SELECT seq, edge FROM ( VALUES
+ (1, 7),
+ (2, 10),
+ (3, 12),
+ (4, 13),
+ (5, 15),
+ (6, 16),
+ (7, -1) )
+AS t(seq, edge);
+
+SELECT set_eq('q9', 'q10', 'Testing from source 8 to target 4 with restriction on edges as follows 7 -> 8 and 7 -> 4');
+
+
+
+PREPARE q11 AS
+SELECT seq,
+ edge
+FROM pgr_dijkstraTRSP('SELECT id, source, target, cost, reverse_cost
+FROM edge_table', 'SELECT * FROM restrict WHERE id in (4, 5)', 7, 1);
+
+PREPARE q12 AS
+SELECT seq, edge FROM ( VALUES
+ (1, 6),
+ (2, 7),
+ (3, 10),
+ (4, 12),
+ (5, 13),
+ (6, 15),
+ (7, 9),
+ (8, 5),
+ (9, 2),
+ (10, 1),
+ (11, -1) )
+AS t(seq, edge);
+
+SELECT set_eq('q11', 'q12', 'Testing from source 7 to target 1 with restriction on edges as follows 7 -> 8 and 7 -> 4');
+
+
+
+PREPARE q13 AS
+SELECT seq,
+ edge
+FROM pgr_dijkstraTRSP('SELECT id, source, target, cost, reverse_cost
+FROM edge_table', 'SELECT * FROM restrict WHERE id in (6, 7)', 12, 7);
+
+PREPARE q14 AS
+SELECT seq, edge FROM ( VALUES
+ (1, 15),
+ (2, 9),
+ (3, 5),
+ (4, 2),
+ (5, 4),
+ (6, 7),
+ (7, 6),
+ (8, -1) )
+AS t(seq, edge);
+
+SELECT set_eq('q13', 'q14', 'Testing from source 12 to target 7 with restriction on edges as follows 9 -> 11 and 9 -> 8');
+
+
+SELECT todo_end();
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/dijkstraTRSP/test/pgtap/dijkstraTRSP-compare-dijkstra.sql b/src/dijkstraTRSP/test/pgtap/dijkstraTRSP-compare-dijkstra.sql
new file mode 100644
index 0000000..2ab3dda
--- /dev/null
+++ b/src/dijkstraTRSP/test/pgtap/dijkstraTRSP-compare-dijkstra.sql
@@ -0,0 +1,75 @@
+\i setup.sql
+
+SELECT plan(1157);
+
+SET client_min_messages TO ERROR;
+
+UPDATE edge_table SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id;
+
+SELECT has_function('pgr_dijkstratrsp');
+
+CREATE or REPLACE FUNCTION dijkstratrsp_compare_dijkstra(cant INTEGER default 17)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+inner_sql TEXT;
+restricted_sql TEXT;
+dijkstra_sql TEXT;
+dijkstratrsp_sql TEXT;
+BEGIN
+
+ FOR i IN 1.. cant LOOP
+ FOR j IN 1.. cant LOOP
+
+ -- DIRECTED
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7';
+ dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true)';
+
+ restricted_sql := 'SELECT * FROM restrict WHERE id IN (1)';
+ dijkstratrsp_sql := 'SELECT * FROM pgr_dijkstratrsp($$' || inner_sql || '$$, $$' || restricted_sql || '$$, '|| i || ', ' || j
+ || ', true)';
+ RETURN query SELECT set_eq(dijkstratrsp_sql, dijkstra_sql, dijkstratrsp_sql);
+
+ -- UNDIRECTED
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7';
+ dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false)';
+
+ restricted_sql := 'SELECT * FROM restrict WHERE id in (1)';
+ dijkstratrsp_sql := 'SELECT * FROM pgr_dijkstratrsp($$' || inner_sql || '$$, $$' || restricted_sql || '$$, '|| i || ', ' || j
+ || ', false)';
+ RETURN query SELECT set_eq(dijkstratrsp_sql, dijkstra_sql, dijkstratrsp_sql);
+
+ -- ALL RESTRICTIONS DIRECTED
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost FROM edge_table';
+ dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', true)';
+
+ restricted_sql := 'SELECT * FROM restrict';
+ dijkstratrsp_sql := 'SELECT * FROM pgr_dijkstratrsp($$' || inner_sql || '$$, $$' || restricted_sql || '$$, '|| i || ', ' || j
+ || ', true)';
+ RETURN query SELECT set_eq(dijkstratrsp_sql, dijkstra_sql, dijkstratrsp_sql);
+
+ -- ALL RESTRICTIONS UNDIRECTED
+ inner_sql := 'SELECT id, source, target, cost, reverse_cost FROM edge_table';
+ dijkstra_sql := 'SELECT * FROM pgr_dijkstra($$' || inner_sql || '$$, ' || i || ', ' || j
+ || ', false)';
+
+ restricted_sql := 'SELECT * FROM restrict';
+ dijkstratrsp_sql := 'SELECT * FROM pgr_dijkstratrsp($$' || inner_sql || '$$, $$' || restricted_sql || '$$, '|| i || ', ' || j
+ || ', false)';
+ RETURN query SELECT set_eq(dijkstratrsp_sql, dijkstra_sql, dijkstratrsp_sql);
+
+
+ END LOOP;
+ END LOOP;
+
+ RETURN;
+END
+$BODY$
+language plpgsql;
+SELECT * from dijkstratrsp_compare_dijkstra();
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/src/dijkstraTRSP/test/pgtap/dijkstraTRSP-innerQuery.sql b/src/dijkstraTRSP/test/pgtap/dijkstraTRSP-innerQuery.sql
new file mode 100644
index 0000000..3c0cfed
--- /dev/null
+++ b/src/dijkstraTRSP/test/pgtap/dijkstraTRSP-innerQuery.sql
@@ -0,0 +1,19 @@
+\i setup.sql
+
+SELECT plan(137);
+SET client_min_messages TO ERROR;
+
+
+SELECT has_function('pgr_dijkstratrsp',
+ ARRAY['text', 'text', 'bigint', 'bigint', 'boolean','boolean','boolean']);
+
+SELECT function_returns('pgr_dijkstratrsp',
+ ARRAY['text', 'text', 'bigint', 'bigint', 'boolean','boolean','boolean'],
+ 'setof record');
+
+SELECT style_dijkstraTRSP('pgr_dijkstratrsp', ', $$SELECT * FROM restrict$$, 2, 3)');
+SELECT style_dijkstraTRSP('pgr_dijkstratrsp', ', $$SELECT * FROM restrict$$, 2, 3, true)');
+SELECT style_dijkstraTRSP('pgr_dijkstratrsp', ', $$SELECT * FROM restrict$$, 2, 3, false)');
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/dijkstraTRSP/test/pgtap/dijkstraTRSP-typesCheck.sql b/src/dijkstraTRSP/test/pgtap/dijkstraTRSP-typesCheck.sql
new file mode 100644
index 0000000..0c791a0
--- /dev/null
+++ b/src/dijkstraTRSP/test/pgtap/dijkstraTRSP-typesCheck.sql
@@ -0,0 +1,16 @@
+
+SELECT plan(4);
+
+SELECT has_function('pgr_dijkstratrsp');
+
+SELECT has_function('pgr_dijkstratrsp', ARRAY[ 'text', 'text', 'bigint', 'bigint', 'boolean', 'boolean', 'boolean' ]);
+
+SELECT function_returns('pgr_dijkstratrsp',
+ ARRAY[ 'text', 'text', 'bigint', 'bigint', 'boolean', 'boolean', 'boolean' ],
+ 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_dijkstratrsp'$$,
+ $$SELECT '{"","","","","directed","only_cost","strict","seq","path_seq","node","edge","cost","agg_cost"}'::TEXT[] $$
+);
diff --git a/src/dijkstraTRSP/test/pgtap/empty_set_NO_default_strict.sql b/src/dijkstraTRSP/test/pgtap/empty_set_NO_default_strict.sql
new file mode 100644
index 0000000..e1475e7
--- /dev/null
+++ b/src/dijkstraTRSP/test/pgtap/empty_set_NO_default_strict.sql
@@ -0,0 +1,258 @@
+\i setup.sql
+
+SELECT plan(20);
+
+----------------------------------------------------------------------------------------------------------------
+-- testing from an existing starting vertex to a non-existing destination
+----------------------------------------------------------------------------------------------------------------
+
+-- in directed graph
+-- with restrictions
+PREPARE q1 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3,
+ strict := false
+);
+
+-- in undirected graph
+-- with restrictions
+PREPARE q2 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3,
+ FALSE,
+ strict := false
+);
+
+-- in directed graph
+-- without restrictions
+PREPARE q3 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 3,
+ strict := false
+);
+
+-- in undirected graph
+-- without restrictions
+PREPARE q4 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 3,
+ FALSE,
+ strict := false
+);
+
+----------------------------------------------------------------------------------------------------------------
+-- testing from an non-existing starting vertex to an existing destination
+----------------------------------------------------------------------------------------------------------------
+
+-- in directed graph
+-- with restrictions
+PREPARE q5 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 6, 8,
+ strict := false
+);
+
+-- in undirected graph
+-- with restrictions
+PREPARE q6 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 6, 8,
+ FALSE,
+ strict := false
+);
+
+-- in directed graph
+-- without restrictions
+PREPARE q7 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 6, 8,
+ strict := false
+);
+
+-- in undirected graph
+-- without restrictions
+PREPARE q8 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 6, 8,
+ FALSE,
+ strict := false
+);
+
+----------------------------------------------------------------------------------------------------------------
+-- testing from a non-existing starting vertex to a non-existing destination
+----------------------------------------------------------------------------------------------------------------
+
+-- in directed graph
+-- with restrictions
+PREPARE q9 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 1, 17,
+ strict := false
+);
+
+-- in undirected graph
+-- with restrictions
+PREPARE q10 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 1, 17,
+ FALSE,
+ strict := false
+);
+
+-- in directed graph
+-- without restrictions
+PREPARE q11 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 1, 17,
+ strict := false
+);
+
+-- in undirected graph
+-- without restrictions
+PREPARE q12 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 1, 17,
+ FALSE,
+ strict := false
+);
+
+----------------------------------------------------------------------------------------------------------------
+-- testing from an existing starting vertex to the same destination
+----------------------------------------------------------------------------------------------------------------
+
+-- in directed graph
+-- with restrictions
+PREPARE q13 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 2,
+ strict := false
+);
+
+-- in undirected graph
+-- with restrictions
+PREPARE q14 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 2,
+ FALSE,
+ strict := false
+);
+
+-- in directed graph
+-- without restrictions
+PREPARE q15 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 2,
+ strict := false
+);
+
+-- in undirected graph
+-- without restrictions
+PREPARE q16 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 2,
+ FALSE,
+ strict := false
+);
+
+----------------------------------------------------------------------------------------------------------------
+-- testing from an existing starting vertex in one component to an existing destination in another component
+----------------------------------------------------------------------------------------------------------------
+-- in directed graph
+-- with restrictions
+PREPARE q17 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 14,
+ strict := false
+);
+
+-- in undirected graph
+-- with restrictions
+PREPARE q18 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 14,
+ FALSE,
+ strict := false
+);
+
+-- in directed graph
+-- without restrictions
+PREPARE q19 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 14,
+ strict := false
+);
+
+-- in undirected graph
+-- without restrictions
+PREPARE q20 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 14,
+ FALSE,
+ strict := false
+);
+
+----------------------------------------------------------------------------------------------------------------
+
+SELECT is_empty('q1');
+SELECT is_empty('q2');
+SELECT is_empty('q3');
+SELECT is_empty('q4');
+SELECT is_empty('q5');
+SELECT is_empty('q6');
+SELECT is_empty('q7');
+SELECT is_empty('q8');
+SELECT is_empty('q9');
+SELECT is_empty('q10');
+SELECT is_empty('q11');
+SELECT is_empty('q12');
+SELECT is_empty('q13');
+SELECT is_empty('q14');
+SELECT is_empty('q15');
+SELECT is_empty('q16');
+SELECT is_empty('q17');
+SELECT is_empty('q18');
+SELECT is_empty('q19');
+SELECT is_empty('q20');
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/src/dijkstraTRSP/test/pgtap/empty_set_default_strict.sql b/src/dijkstraTRSP/test/pgtap/empty_set_default_strict.sql
new file mode 100644
index 0000000..d0a2254
--- /dev/null
+++ b/src/dijkstraTRSP/test/pgtap/empty_set_default_strict.sql
@@ -0,0 +1,238 @@
+\i setup.sql
+
+SELECT plan(20);
+
+----------------------------------------------------------------------------------------------------------------
+-- testing from an existing starting vertex to a non-existing destination
+----------------------------------------------------------------------------------------------------------------
+
+-- in directed graph
+-- with restrictions
+PREPARE q1 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3
+);
+
+-- in undirected graph
+-- with restrictions
+PREPARE q2 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3,
+ FALSE
+);
+
+-- in directed graph
+-- without restrictions
+PREPARE q3 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 3
+);
+
+-- in undirected graph
+-- without restrictions
+PREPARE q4 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 3,
+ FALSE
+);
+
+----------------------------------------------------------------------------------------------------------------
+-- testing from an non-existing starting vertex to an existing destination
+----------------------------------------------------------------------------------------------------------------
+
+-- in directed graph
+-- with restrictions
+PREPARE q5 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 6, 8
+);
+
+-- in undirected graph
+-- with restrictions
+PREPARE q6 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 6, 8,
+ FALSE
+);
+
+-- in directed graph
+-- without restrictions
+PREPARE q7 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 6, 8
+);
+
+-- in undirected graph
+-- without restrictions
+PREPARE q8 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 6, 8,
+ FALSE
+);
+
+----------------------------------------------------------------------------------------------------------------
+-- testing from a non-existing starting vertex to a non-existing destination
+----------------------------------------------------------------------------------------------------------------
+
+-- in directed graph
+-- with restrictions
+PREPARE q9 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 1, 17
+);
+
+-- in undirected graph
+-- with restrictions
+PREPARE q10 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 1, 17,
+ FALSE
+);
+
+-- in directed graph
+-- without restrictions
+PREPARE q11 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 1, 17
+);
+
+-- in undirected graph
+-- without restrictions
+PREPARE q12 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 1, 17,
+ FALSE
+);
+
+----------------------------------------------------------------------------------------------------------------
+-- testing from an existing starting vertex to the same destination
+----------------------------------------------------------------------------------------------------------------
+
+-- in directed graph
+-- with restrictions
+PREPARE q13 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 2
+);
+
+-- in undirected graph
+-- with restrictions
+PREPARE q14 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 2,
+ FALSE
+);
+
+-- in directed graph
+-- without restrictions
+PREPARE q15 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 2
+);
+
+-- in undirected graph
+-- without restrictions
+PREPARE q16 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 2,
+ FALSE
+);
+
+----------------------------------------------------------------------------------------------------------------
+-- testing from an existing starting vertex in one component to an existing destination in another component
+----------------------------------------------------------------------------------------------------------------
+-- in directed graph
+-- with restrictions
+PREPARE q17 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 14
+);
+
+-- in undirected graph
+-- with restrictions
+PREPARE q18 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 14,
+ FALSE
+);
+
+-- in directed graph
+-- without restrictions
+PREPARE q19 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 14
+);
+
+-- in undirected graph
+-- without restrictions
+PREPARE q20 AS
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 14,
+ FALSE
+);
+
+----------------------------------------------------------------------------------------------------------------
+
+SELECT is_empty('q1');
+SELECT is_empty('q2');
+SELECT is_empty('q3');
+SELECT is_empty('q4');
+SELECT is_empty('q5');
+SELECT is_empty('q6');
+SELECT is_empty('q7');
+SELECT is_empty('q8');
+SELECT is_empty('q9');
+SELECT is_empty('q10');
+SELECT is_empty('q11');
+SELECT is_empty('q12');
+SELECT is_empty('q13');
+SELECT is_empty('q14');
+SELECT is_empty('q15');
+SELECT is_empty('q16');
+SELECT is_empty('q17');
+SELECT is_empty('q18');
+SELECT is_empty('q19');
+SELECT is_empty('q20');
+
+SELECT * FROM finish();
+ROLLBACK;
diff --git a/src/dijkstraTRSP/test/pgtap_design.result b/src/dijkstraTRSP/test/pgtap_design.result
new file mode 100644
index 0000000..4f12272
--- /dev/null
+++ b/src/dijkstraTRSP/test/pgtap_design.result
@@ -0,0 +1,196 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3,
+ FALSE
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 3
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 3,
+ FALSE
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 6, 8
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 6, 8,
+ FALSE
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 6, 8
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 6, 8,
+ FALSE
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 1, 17
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 1, 17,
+ FALSE
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 1, 17
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 1, 17,
+ FALSE
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 2
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 2,
+ FALSE
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 2
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 2,
+ FALSE
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 14
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 14,
+ FALSE
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 14
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 14,
+ FALSE
+);
+seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/dijkstraTRSP/test/pgtap_design.test.sql b/src/dijkstraTRSP/test/pgtap_design.test.sql
new file mode 100644
index 0000000..ec5dce2
--- /dev/null
+++ b/src/dijkstraTRSP/test/pgtap_design.test.sql
@@ -0,0 +1,129 @@
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 3,
+ FALSE
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 3
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 3,
+ FALSE
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 6, 8
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 6, 8,
+ FALSE
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 6, 8
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 6, 8,
+ FALSE
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 1, 17
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 1, 17,
+ FALSE
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 1, 17
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 1, 17,
+ FALSE
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 2
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 2,
+ FALSE
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 2
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 2,
+ FALSE
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 14
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict WHERE id IN (1)',
+ 2, 14,
+ FALSE
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 14
+);
+
+SELECT * FROM pgr_dijkstraTRSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
+ 'SELECT * FROM restrict where id > 10',
+ 2, 14,
+ FALSE
+);
diff --git a/src/dijkstraTRSP/test/test.conf b/src/dijkstraTRSP/test/test.conf
new file mode 100644
index 0000000..8bcc0ec
--- /dev/null
+++ b/src/dijkstraTRSP/test/test.conf
@@ -0,0 +1,16 @@
+#!/usr/bin/perl -w
+
+%main::tests = (
+ 'any' => {
+ 'comment' => 'Dijkstra test for any versions.',
+ 'data' => [ ],
+ 'tests' => [qw(
+ )],
+ 'documentation' => [qw(
+ doc-dijkstraTRSP
+ )]
+ },
+
+);
+
+1;
diff --git a/src/driving_distance/doc/doc-pgr_drivingDistance.queries b/src/driving_distance/doc/doc-pgr_drivingDistance.queries
deleted file mode 100644
index b23f5be..0000000
--- a/src/driving_distance/doc/doc-pgr_drivingDistance.queries
+++ /dev/null
@@ -1,339 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-
-
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3
- );
- seq | node | edge | cost | agg_cost
------+------+------+------+----------
- 1 | 2 | -1 | 0 | 0
- 2 | 1 | 1 | 1 | 1
- 3 | 5 | 4 | 1 | 1
- 4 | 6 | 8 | 1 | 2
- 5 | 8 | 7 | 1 | 2
- 6 | 10 | 10 | 1 | 2
- 7 | 7 | 6 | 1 | 3
- 8 | 9 | 9 | 1 | 3
- 9 | 11 | 12 | 1 | 3
- 10 | 13 | 14 | 1 | 3
-(10 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 13, 3
- );
- seq | node | edge | cost | agg_cost
------+------+------+------+----------
- 1 | 13 | -1 | 0 | 0
- 2 | 10 | 14 | 1 | 1
- 3 | 5 | 10 | 1 | 2
- 4 | 11 | 12 | 1 | 2
- 5 | 2 | 4 | 1 | 3
- 6 | 6 | 8 | 1 | 3
- 7 | 8 | 7 | 1 | 3
- 8 | 12 | 13 | 1 | 3
-(8 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[2,13], 3
- );
- seq | from_v | node | edge | cost | agg_cost
------+--------+------+------+------+----------
- 1 | 2 | 2 | -1 | 0 | 0
- 2 | 2 | 1 | 1 | 1 | 1
- 3 | 2 | 5 | 4 | 1 | 1
- 4 | 2 | 6 | 8 | 1 | 2
- 5 | 2 | 8 | 7 | 1 | 2
- 6 | 2 | 10 | 10 | 1 | 2
- 7 | 2 | 7 | 6 | 1 | 3
- 8 | 2 | 9 | 9 | 1 | 3
- 9 | 2 | 11 | 12 | 1 | 3
- 10 | 2 | 13 | 14 | 1 | 3
- 11 | 13 | 13 | -1 | 0 | 0
- 12 | 13 | 10 | 14 | 1 | 1
- 13 | 13 | 5 | 10 | 1 | 2
- 14 | 13 | 11 | 12 | 1 | 2
- 15 | 13 | 2 | 4 | 1 | 3
- 16 | 13 | 6 | 8 | 1 | 3
- 17 | 13 | 8 | 7 | 1 | 3
- 18 | 13 | 12 | 13 | 1 | 3
-(18 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[2,13], 3, equicost:=true
- );
- seq | from_v | node | edge | cost | agg_cost
------+--------+------+------+------+----------
- 1 | 2 | 2 | -1 | 0 | 0
- 2 | 2 | 1 | 1 | 1 | 1
- 3 | 2 | 5 | 4 | 1 | 1
- 4 | 2 | 6 | 8 | 1 | 2
- 5 | 2 | 8 | 7 | 1 | 2
- 6 | 2 | 7 | 6 | 1 | 3
- 7 | 2 | 9 | 9 | 1 | 3
- 8 | 13 | 13 | -1 | 0 | 0
- 9 | 13 | 10 | 14 | 1 | 1
- 10 | 13 | 11 | 12 | 1 | 2
- 11 | 13 | 12 | 13 | 1 | 3
-(11 rows)
-
---q2
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3, false
- );
- seq | node | edge | cost | agg_cost
------+------+------+------+----------
- 1 | 2 | -1 | 0 | 0
- 2 | 1 | 1 | 1 | 1
- 3 | 3 | 2 | 1 | 1
- 4 | 5 | 4 | 1 | 1
- 5 | 4 | 3 | 1 | 2
- 6 | 6 | 8 | 1 | 2
- 7 | 8 | 7 | 1 | 2
- 8 | 10 | 10 | 1 | 2
- 9 | 7 | 6 | 1 | 3
- 10 | 9 | 16 | 1 | 3
- 11 | 11 | 12 | 1 | 3
- 12 | 13 | 14 | 1 | 3
-(12 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 13, 3, false
- );
- seq | node | edge | cost | agg_cost
------+------+------+------+----------
- 1 | 13 | -1 | 0 | 0
- 2 | 10 | 14 | 1 | 1
- 3 | 5 | 10 | 1 | 2
- 4 | 11 | 12 | 1 | 2
- 5 | 2 | 4 | 1 | 3
- 6 | 6 | 8 | 1 | 3
- 7 | 8 | 7 | 1 | 3
- 8 | 12 | 13 | 1 | 3
-(8 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[2,13], 3, false
- );
- seq | from_v | node | edge | cost | agg_cost
------+--------+------+------+------+----------
- 1 | 2 | 2 | -1 | 0 | 0
- 2 | 2 | 1 | 1 | 1 | 1
- 3 | 2 | 3 | 2 | 1 | 1
- 4 | 2 | 5 | 4 | 1 | 1
- 5 | 2 | 4 | 3 | 1 | 2
- 6 | 2 | 6 | 8 | 1 | 2
- 7 | 2 | 8 | 7 | 1 | 2
- 8 | 2 | 10 | 10 | 1 | 2
- 9 | 2 | 7 | 6 | 1 | 3
- 10 | 2 | 9 | 16 | 1 | 3
- 11 | 2 | 11 | 12 | 1 | 3
- 12 | 2 | 13 | 14 | 1 | 3
- 13 | 13 | 13 | -1 | 0 | 0
- 14 | 13 | 10 | 14 | 1 | 1
- 15 | 13 | 5 | 10 | 1 | 2
- 16 | 13 | 11 | 12 | 1 | 2
- 17 | 13 | 2 | 4 | 1 | 3
- 18 | 13 | 6 | 8 | 1 | 3
- 19 | 13 | 8 | 7 | 1 | 3
- 20 | 13 | 12 | 13 | 1 | 3
-(20 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[2,13], 3, false, equicost:=true
- );
- seq | from_v | node | edge | cost | agg_cost
------+--------+------+------+------+----------
- 1 | 2 | 2 | -1 | 0 | 0
- 2 | 2 | 1 | 1 | 1 | 1
- 3 | 2 | 3 | 2 | 1 | 1
- 4 | 2 | 5 | 4 | 1 | 1
- 5 | 2 | 4 | 3 | 1 | 2
- 6 | 2 | 6 | 8 | 1 | 2
- 7 | 2 | 8 | 7 | 1 | 2
- 8 | 2 | 7 | 6 | 1 | 3
- 9 | 2 | 9 | 16 | 1 | 3
- 10 | 13 | 13 | -1 | 0 | 0
- 11 | 13 | 10 | 14 | 1 | 1
- 12 | 13 | 11 | 12 | 1 | 2
- 13 | 13 | 12 | 13 | 1 | 3
-(13 rows)
-
---q3
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 3
- );
- seq | node | edge | cost | agg_cost
------+------+------+------+----------
- 1 | 2 | -1 | 0 | 0
- 2 | 5 | 4 | 1 | 1
- 3 | 6 | 8 | 1 | 2
- 4 | 10 | 10 | 1 | 2
- 5 | 9 | 9 | 1 | 3
- 6 | 11 | 11 | 1 | 3
- 7 | 13 | 14 | 1 | 3
-(7 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost FROM edge_table',
- 13, 3
- );
- seq | node | edge | cost | agg_cost
------+------+------+------+----------
- 1 | 13 | -1 | 0 | 0
-(1 row)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost FROM edge_table',
- array[2,13], 3
- );
- seq | from_v | node | edge | cost | agg_cost
------+--------+------+------+------+----------
- 1 | 2 | 2 | -1 | 0 | 0
- 2 | 2 | 5 | 4 | 1 | 1
- 3 | 2 | 6 | 8 | 1 | 2
- 4 | 2 | 10 | 10 | 1 | 2
- 5 | 2 | 9 | 9 | 1 | 3
- 6 | 2 | 11 | 11 | 1 | 3
- 7 | 2 | 13 | 14 | 1 | 3
- 8 | 13 | 13 | -1 | 0 | 0
-(8 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost FROM edge_table',
- array[2,13], 3, equicost:=true
- );
- seq | from_v | node | edge | cost | agg_cost
------+--------+------+------+------+----------
- 1 | 2 | 2 | -1 | 0 | 0
- 2 | 2 | 5 | 4 | 1 | 1
- 3 | 2 | 6 | 8 | 1 | 2
- 4 | 2 | 10 | 10 | 1 | 2
- 5 | 2 | 9 | 9 | 1 | 3
- 6 | 2 | 11 | 11 | 1 | 3
- 7 | 13 | 13 | -1 | 0 | 0
-(7 rows)
-
---q4
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 3, false
- );
- seq | node | edge | cost | agg_cost
------+------+------+------+----------
- 1 | 2 | -1 | 0 | 0
- 2 | 1 | 1 | 1 | 1
- 3 | 5 | 4 | 1 | 1
- 4 | 6 | 8 | 1 | 2
- 5 | 8 | 7 | 1 | 2
- 6 | 10 | 10 | 1 | 2
- 7 | 3 | 5 | 1 | 3
- 8 | 7 | 6 | 1 | 3
- 9 | 9 | 9 | 1 | 3
- 10 | 11 | 12 | 1 | 3
- 11 | 13 | 14 | 1 | 3
-(11 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost FROM edge_table',
- 13, 3, false
- );
- seq | node | edge | cost | agg_cost
------+------+------+------+----------
- 1 | 13 | -1 | 0 | 0
- 2 | 10 | 14 | 1 | 1
- 3 | 5 | 10 | 1 | 2
- 4 | 11 | 12 | 1 | 2
- 5 | 2 | 4 | 1 | 3
- 6 | 6 | 8 | 1 | 3
- 7 | 8 | 7 | 1 | 3
- 8 | 12 | 13 | 1 | 3
-(8 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost FROM edge_table',
- array[2,13], 3, false
- );
- seq | from_v | node | edge | cost | agg_cost
------+--------+------+------+------+----------
- 1 | 2 | 2 | -1 | 0 | 0
- 2 | 2 | 1 | 1 | 1 | 1
- 3 | 2 | 5 | 4 | 1 | 1
- 4 | 2 | 6 | 8 | 1 | 2
- 5 | 2 | 8 | 7 | 1 | 2
- 6 | 2 | 10 | 10 | 1 | 2
- 7 | 2 | 3 | 5 | 1 | 3
- 8 | 2 | 7 | 6 | 1 | 3
- 9 | 2 | 9 | 9 | 1 | 3
- 10 | 2 | 11 | 12 | 1 | 3
- 11 | 2 | 13 | 14 | 1 | 3
- 12 | 13 | 13 | -1 | 0 | 0
- 13 | 13 | 10 | 14 | 1 | 1
- 14 | 13 | 5 | 10 | 1 | 2
- 15 | 13 | 11 | 12 | 1 | 2
- 16 | 13 | 2 | 4 | 1 | 3
- 17 | 13 | 6 | 8 | 1 | 3
- 18 | 13 | 8 | 7 | 1 | 3
- 19 | 13 | 12 | 13 | 1 | 3
-(19 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id, source, target, cost FROM edge_table',
- array[2,13], 3, false, equicost:=true
- );
- seq | from_v | node | edge | cost | agg_cost
------+--------+------+------+------+----------
- 1 | 2 | 2 | -1 | 0 | 0
- 2 | 2 | 1 | 1 | 1 | 1
- 3 | 2 | 5 | 4 | 1 | 1
- 4 | 2 | 6 | 8 | 1 | 2
- 5 | 2 | 8 | 7 | 1 | 2
- 6 | 2 | 3 | 5 | 1 | 3
- 7 | 2 | 7 | 6 | 1 | 3
- 8 | 2 | 9 | 9 | 1 | 3
- 9 | 13 | 13 | -1 | 0 | 0
- 10 | 13 | 10 | 14 | 1 | 1
- 11 | 13 | 11 | 12 | 1 | 2
- 12 | 13 | 12 | 13 | 1 | 3
-(12 rows)
-
---q5
-ROLLBACK;
-ROLLBACK
diff --git a/src/driving_distance/doc/doc-pgr_drivingdistance-v2.queries b/src/driving_distance/doc/doc-pgr_drivingdistance-v2.queries
deleted file mode 100644
index ef22884..0000000
--- a/src/driving_distance/doc/doc-pgr_drivingdistance-v2.queries
+++ /dev/null
@@ -1,32 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 7, 1.5, false, false
-) ;
-NOTICE: Deprecated function
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 7 | -1 | 0
- 1 | 8 | 6 | 1
-(2 rows)
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 7, 1.5, true, true
-) ;
-NOTICE: Deprecated function
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 7 | -1 | 0
- 1 | 8 | 6 | 1
-(2 rows)
-
---q2
-ROLLBACK;
-ROLLBACK
diff --git a/src/driving_distance/doc/drivingDistance-category.rst b/src/driving_distance/doc/drivingDistance-category.rst
deleted file mode 100644
index 460992e..0000000
--- a/src/driving_distance/doc/drivingDistance-category.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-
-.. _drivingDistance:
-
-Driving Distance - Category
-===============================================================================
-
-.. index from here
-
-* :ref:`pgr_drivingDistance` - Driving Distance based on pgr_dijkstra
-* :ref:`pgr_withPointsDD` - Driving Distance based on pgr_withPoints
-* Post pocessing
-
- * :ref:`pgr_alphaShape` - Alpha shape computation
- * :ref:`pgr_points_as_polygon` - Polygon around set of points
-
-.. index to here
-
-
-.. toctree::
- :hidden:
-
- pgr_alphaShape.rst
- pgr_pointsAsPolygon.rst
-
diff --git a/src/driving_distance/doc/pgr_drivingDistance.rst b/src/driving_distance/doc/pgr_drivingDistance.rst
deleted file mode 100644
index ce9f63b..0000000
--- a/src/driving_distance/doc/pgr_drivingDistance.rst
+++ /dev/null
@@ -1,186 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_drivingDistance:
-
-pgr_drivingDistance
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_drivingDistance`` - Returns the driving distance from a start node.
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability
-
-* pgr_drivingDistance(single vertex) 2.0.0, signature change 2.1.0
-* pgr_drivingDistance(multiple vertices) 2.1.0
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Using Dijkstra algorithm, extracts all the nodes that have costs less than or equal to the value ``distance``.
-The edges extracted will conform the corresponding spanning tree.
-
-Signature Summary
--------------------------------------------------------------------------------
-
-.. code-block:: sql
-
- pgr_drivingDistance(edges_sql, start_vid, distance)
- pgr_drivingDistance(edges_sql, start_vid, distance, directed)
- pgr_drivingDistance(edges_sql, start_vids, distance, directed, equicost)
-
- RETURNS SET OF (seq, [start_vid,] node, edge, cost, agg_cost)
-
-
-Signatures
--------------------------------------------------------------------------------
-
-.. index::
- single: drivingDistance(Minimal Use)
-
-Minimal Use
-...................
-
-.. code-block:: sql
-
- pgr_drivingDistance(edges_sql, start_vid, distance)
- RETURNS SET OF (seq, node, edge, cost, agg_cost)
-
-
-
-.. index::
- single: drivingDistance(Single Start Vertex)
-
-Driving Distance From A Single Starting Vertex
-..............................................
-
-.. code-block:: sql
-
- pgr_drivingDistance(edges_sql, start_vid, distance, directed)
- RETURNS SET OF (seq, node, edge, cost, agg_cost)
-
-
-.. index::
- single: drivingDistance(Multiple Starting Vertices)
-
-Driving Distance From Multiple Starting Vertices
-.................................................
-
-.. code-block:: sql
-
- pgr_drivingDistance(edges_sql, start_vids, distance, directed, equicost)
- RETURNS SET OF (seq, start_vid, node, edge, cost, agg_cost)
-
-Description of the Signatures
--------------------------------------------------------------------------------
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-
-Description of the parameters of the signatures
-.................................................
-
-============== ====================== =================================================
-Column Type Description
-============== ====================== =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**start_vid** ``BIGINT`` Identifier of the starting vertex.
-**start_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of starting vertices.
-**distance** ``FLOAT`` Upper limit for the inclusion of the node in the result.
-**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
-**equicost** ``BOOLEAN`` (optional). When ``true`` the node will only appear in the closest ``start_vid`` list. Default is ``false`` which resembles several calls using the single starting point signatures. Tie brakes are arbitrarely.
-============== ====================== =================================================
-
-
-
-Description of the return values
-.................................................
-
-Returns set of ``(seq [, start_v], node, edge, cost, agg_cost)``
-
-============== =========== =================================================
-Column Type Description
-============== =========== =================================================
-**seq** ``INTEGER`` Sequential value starting from **1**.
-**start_vid** ``INTEGER`` Identifier of the starting vertex.
-**node** ``BIGINT`` Identifier of the node in the path within the limits from ``start_vid``.
-**edge** ``BIGINT`` Identifier of the edge used to arrive to ``node``. ``0`` when the ``node`` is the ``start_vid``.
-**cost** ``FLOAT`` Cost to traverse ``edge``.
-**agg_cost** ``FLOAT`` Aggregate cost from ``start_vid`` to ``node``.
-============== =========== =================================================
-
-
-
-Additional Examples
--------------------------------------------------------------------------------
-
-Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
-................................................................................................
-
-The examples in this section use the following :ref:`fig1`
-
-.. literalinclude:: doc-pgr_drivingDistance.queries
- :start-after: --q1
- :end-before: --q2
-
-Examples for queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns
-................................................................................................
-
-The examples in this section use the following :ref:`fig2`
-
-
-.. literalinclude:: doc-pgr_drivingDistance.queries
- :start-after: --q2
- :end-before: --q3
-
-Examples for queries marked as ``directed`` with ``cost`` column
-......................................................................................
-
-The examples in this section use the following :ref:`fig3`
-
-.. literalinclude:: doc-pgr_drivingDistance.queries
- :start-after: --q3
- :end-before: --q4
-
-
-
-Examples for queries marked as ``undirected`` with ``cost`` column
-......................................................................................
-
-The examples in this section use the following :ref:`fig4`
-
-.. literalinclude:: doc-pgr_drivingDistance.queries
- :start-after: --q4
- :end-before: --q5
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`pgr_alphashape` - Alpha shape computation
-* :ref:`pgr_points_as_polygon` - Polygon around set of points
-* :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/driving_distance/sql/CMakeLists.txt b/src/driving_distance/sql/CMakeLists.txt
deleted file mode 100644
index 7f05fe3..0000000
--- a/src/driving_distance/sql/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/withPoints_dd.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/routing_dd.sql)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/driving_distance/sql/routing_dd.sql b/src/driving_distance/sql/routing_dd.sql
deleted file mode 100644
index 32e8012..0000000
--- a/src/driving_distance/sql/routing_dd.sql
+++ /dev/null
@@ -1,95 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: project at 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*/
-
-CREATE OR REPLACE FUNCTION pgr_drivingDistance(
- edges_sql text,
- start_vids anyarray,
- distance FLOAT,
- directed BOOLEAN DEFAULT TRUE,
- equicost BOOLEAN DEFAULT FALSE,
- OUT seq integer,
- OUT from_v bigint,
- OUT node bigint,
- OUT edge bigint,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'driving_many_to_dist'
- LANGUAGE c VOLATILE STRICT;
-
-
-CREATE OR REPLACE FUNCTION pgr_drivingDistance(
- edges_sql text,
- start_vid bigint,
- distance FLOAT8,
- directed BOOLEAN DEFAULT TRUE,
- OUT seq integer,
- OUT node bigint,
- OUT edge bigint,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
- RETURNS SETOF RECORD AS
-$BODY$
- SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
- FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
-$BODY$
-LANGUAGE SQL VOLATILE
-COST 100
-ROWS 1000;
-
-
-
--- OLD SIGNATURE
-CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source bigint, distance FLOAT8, directed BOOLEAN, has_rcost BOOLEAN)
- RETURNS SETOF pgr_costresult AS
- $BODY$
- DECLARE
- has_reverse BOOLEAN;
- sql TEXT;
- BEGIN
- RAISE NOTICE 'Deprecated function';
-
- has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
-
- sql = edges_sql;
- IF (has_reverse != has_rcost) THEN
- IF (has_reverse) THEN
- -- the user says it doesn't have reverse cost but its false
- -- removing from query
- RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
- sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
- ELSE
- -- the user says it has reverse cost but its false
- -- can't do anything
- RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
- END IF;
- END IF;
-
- RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
- FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100
- ROWS 1000;
-
diff --git a/src/driving_distance/sql/withPoints_dd.sql b/src/driving_distance/sql/withPoints_dd.sql
deleted file mode 100644
index 25b0807..0000000
--- a/src/driving_distance/sql/withPoints_dd.sql
+++ /dev/null
@@ -1,71 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: withPoints_dd.sql
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-CREATE OR REPLACE FUNCTION pgr_withPointsDD(
- edges_sql TEXT,
- points_sql TEXT,
- start_pid ANYARRAY,
- distance FLOAT,
-
- directed BOOLEAN DEFAULT TRUE,
- driving_side CHAR DEFAULT 'b',
- details BOOLEAN DEFAULT FALSE,
- equicost BOOLEAN DEFAULT FALSE,
-
- OUT seq INTEGER,
- OUT start_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'many_withPointsDD'
- LANGUAGE c VOLATILE STRICT;
-
-
-CREATE OR REPLACE FUNCTION pgr_withPointsDD(
- edges_sql TEXT,
- points_sql TEXT,
- start_pid BIGINT,
- distance FLOAT,
-
- directed BOOLEAN DEFAULT TRUE,
- driving_side CHAR DEFAULT 'b',
- details BOOLEAN DEFAULT FALSE,
-
- OUT seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
- RETURNS SETOF RECORD AS
-$BODY$
- SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
- FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
-$BODY$
-LANGUAGE SQL VOLATILE
-COST 100
-ROWS 1000;
-
-
diff --git a/src/driving_distance/src/drivedist_driver.cpp b/src/driving_distance/src/drivedist_driver.cpp
index 442d8d3..e38ceb9 100644
--- a/src/driving_distance/src/drivedist_driver.cpp
+++ b/src/driving_distance/src/drivedist_driver.cpp
@@ -22,20 +22,61 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./drivedist_driver.h"
+#include "drivers/driving_distance/drivedist_driver.h"
#include <sstream>
#include <deque>
#include <vector>
-#include "./../../dijkstra/src/pgr_dijkstra.hpp"
+#include "dijkstra/pgr_dijkstra.hpp"
-#include "../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+#undef WITH_TIME
+#ifdef WITH_TIME
+#include <ctime>
+#include <chrono>
+static
+void
+start_timing(
+ std::time_t &start_t,
+ std::chrono::steady_clock::time_point &begin_elapsed,
+ clock_t &begin) {
+ begin = clock();
+ start_t = std::time(NULL);
+ begin_elapsed = std::chrono::steady_clock::now();
+}
+static
+void
+end_timing(
+ const std::time_t start_t,
+ std::chrono::steady_clock::time_point& begin_elapsed,
+ clock_t &begin,
+ std::ostringstream &log) {
+ clock_t end = clock();
+ double elapsed_secs =
+ static_cast<double>(end - begin)
+ / static_cast<double>(CLOCKS_PER_SEC);
+
+ std::time_t end_t = std::time(NULL);
+ std::chrono::steady_clock::time_point end_elapsed =
+ std::chrono::steady_clock::now();
+
+ typedef std::chrono::duration<int, std::milli> millisecs_t;
+ millisecs_t duration = std::chrono::duration_cast<millisecs_t>(
+ end_elapsed - begin_elapsed);
+
+ log << "Execution started at: " << std::ctime(&start_t);
+ log << "Execution ended at: " << std::ctime(&end_t);
+ log << "Elapsed time: "
+ << static_cast<double>(duration.count())/static_cast<double>(1000)
+ << " Seconds.\n";
+ log << "User CPU time: -> " << elapsed_secs << " seconds\n";
+}
+#endif
void
do_pgr_driving_many_to_dist(
@@ -66,23 +107,78 @@ do_pgr_driving_many_to_dist(
std::deque<Path> paths;
std::vector<int64_t> start_vertices(start_vertex, start_vertex + s_len);
+ auto vertices(pgrouting::extract_vertices(data_edges, total_edges));
+
+#ifdef WITH_TIME
+ clock_t begin;
+ std::time_t start_t;
+ std::chrono::steady_clock::time_point begin_elapsed;
+#endif
+
if (directedFlag) {
- pgrouting::DirectedGraph digraph(gType);
- digraph.insert_edges(data_edges, total_edges);
+#ifdef WITH_TIME
+ start_timing(start_t, begin_elapsed, begin);
+ log << "*********Creating graph at time: " << std::ctime(&start_t) << "\n";
+#endif
+ pgrouting::DirectedGraph digraph(vertices, gType);
+#ifdef WITH_TIME
+ end_timing(start_t, begin_elapsed, begin, log);
+#endif
+
+#ifdef WITH_TIME
+ start_timing(start_t, begin_elapsed, begin);
+ log << "********Inserting edges at time: " << std::ctime(&start_t) << "\n";
+#endif
+ digraph.insert_edges(data_edges, total_edges, true);
+#ifdef WITH_TIME
+ end_timing(start_t, begin_elapsed, begin, log);
+#endif
+
+#ifdef WITH_TIME
+ start_timing(start_t, begin_elapsed, begin);
+ log << "*******Calling the C++ call to pgr_drivingDistance: " << std::ctime(&start_t) << "\n";
+#endif
paths = pgr_drivingDistance(
- digraph, start_vertices, distance, equiCostFlag);
+ digraph, start_vertices, distance, equiCostFlag, log);
+#ifdef WITH_TIME
+ end_timing(start_t, begin_elapsed, begin, log);
+#endif
} else {
- pgrouting::UndirectedGraph undigraph(gType);
- undigraph.insert_edges(data_edges, total_edges);
+#ifdef WITH_TIME
+ start_timing(start_t, begin_elapsed, begin);
+ log << "******Creating graph at time: " << std::ctime(&start_t) << "\n";
+#endif
+ pgrouting::UndirectedGraph undigraph(vertices, gType);
+#ifdef WITH_TIME
+ end_timing(start_t, begin_elapsed, begin, log);
+#endif
+
+#ifdef WITH_TIME
+ start_timing(start_t, begin_elapsed, begin);
+ log << "*******Inserting edges at time: " << std::ctime(&start_t) << "\n";
+#endif
+ undigraph.insert_edges(data_edges, total_edges, true);
+#ifdef WITH_TIME
+ end_timing(start_t, begin_elapsed, begin, log);
+#endif
+
+#ifdef WITH_TIME
+ start_timing(start_t, begin_elapsed, begin);
+ log << "*******Calling the C++ call to pgr_drivingDistance: " << std::ctime(&start_t) << "\n";
+#endif
paths = pgr_drivingDistance(
- undigraph, start_vertices, distance, equiCostFlag);
+ undigraph, start_vertices, distance, equiCostFlag, log);
+#ifdef WITH_TIME
+ end_timing(start_t, begin_elapsed, begin, log);
+#endif
}
size_t count(count_tuples(paths));
if (count == 0) {
- *notice_msg = pgr_msg("No return values was found");
+ log << "\nNo return values were found";
+ *notice_msg = pgr_msg(log.str().c_str());
return;
}
*return_tuples = pgr_alloc(count, (*return_tuples));
@@ -108,7 +204,7 @@ do_pgr_driving_many_to_dist(
err << except.what();
*err_msg = pgr_msg(err.str().c_str());
*log_msg = pgr_msg(log.str().c_str());
- } catch(...) {
+ } catch( ... ) {
(*return_tuples) = pgr_free(*return_tuples);
(*return_count) = 0;
err << "Caught unknown exception!";
diff --git a/src/driving_distance/src/drivedist_driver.h b/src/driving_distance/src/drivedist_driver.h
deleted file mode 100644
index 0162127..0000000
--- a/src/driving_distance/src/drivedist_driver.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: boost_interface_drivedist.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_DRIVING_DISTANCE_SRC_DRIVEDIST_DRIVER_H_
-#define SRC_DRIVING_DISTANCE_SRC_DRIVEDIST_DRIVER_H_
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- void do_pgr_driving_many_to_dist(
- pgr_edge_t* edges, size_t total_edges,
- int64_t* start_vertex, size_t s_len,
- double distance,
- bool directed,
- bool equicost,
- General_path_element_t** return_tuples, size_t* return_count,
- char **log_msg,
- char **notice_msg,
- char **err_msg);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_DRIVING_DISTANCE_SRC_DRIVEDIST_DRIVER_H_
diff --git a/src/driving_distance/src/many_to_dist_driving_distance.c b/src/driving_distance/src/many_to_dist_driving_distance.c
index 4dec43b..f47023a 100644
--- a/src/driving_distance/src/many_to_dist_driving_distance.c
+++ b/src/driving_distance/src/many_to_dist_driving_distance.c
@@ -22,16 +22,16 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
#include "utils/array.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./drivedist_driver.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+#include "drivers/driving_distance/drivedist_driver.h"
PGDLLEXPORT Datum driving_many_to_dist(PG_FUNCTION_ARGS);
diff --git a/src/driving_distance/src/many_to_dist_withPointsDD.c b/src/driving_distance/src/many_to_dist_withPointsDD.c
index 69d68d5..c67727f 100644
--- a/src/driving_distance/src/many_to_dist_withPointsDD.c
+++ b/src/driving_distance/src/many_to_dist_withPointsDD.c
@@ -22,18 +22,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
#include "utils/array.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./../../common/src/points_input.h"
-#include "./../../withPoints/src/get_new_queries.h"
-#include "./withPoints_dd_driver.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+#include "c_common/points_input.h"
+
+#include "drivers/withPoints/get_new_queries.h"
+#include "drivers/driving_distance/withPoints_dd_driver.h"
PGDLLEXPORT Datum many_withPointsDD(PG_FUNCTION_ARGS);
diff --git a/src/driving_distance/src/withPoints_dd_driver.cpp b/src/driving_distance/src/withPoints_dd_driver.cpp
index 05cd363..f6aabe4 100644
--- a/src/driving_distance/src/withPoints_dd_driver.cpp
+++ b/src/driving_distance/src/withPoints_dd_driver.cpp
@@ -28,19 +28,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./withPoints_dd_driver.h"
+#include "drivers/driving_distance/withPoints_dd_driver.h"
#include <sstream>
#include <deque>
#include <vector>
#include <algorithm>
-#include "./../../dijkstra/src/pgr_dijkstra.hpp"
+#include "dijkstra/pgr_dijkstra.hpp"
#include "./../../withPoints/src/pgr_withPoints.hpp"
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_types.h"
+#include "cpp_common/pgr_alloc.hpp"
/**********************************************************************/
@@ -131,13 +130,13 @@ do_pgr_many_withPointsDD(
digraph.insert_edges(edges, total_edges);
digraph.insert_edges(new_edges);
paths = pgr_drivingDistance(
- digraph, start_vids, distance, equiCost);
+ digraph, start_vids, distance, equiCost, log);
} else {
pgrouting::UndirectedGraph undigraph(gType);
undigraph.insert_edges(edges, total_edges);
undigraph.insert_edges(new_edges);
paths = pgr_drivingDistance(
- undigraph, start_vids, distance, equiCost);
+ undigraph, start_vids, distance, equiCost, log);
}
for (auto &path : paths) {
diff --git a/src/driving_distance/src/withPoints_dd_driver.h b/src/driving_distance/src/withPoints_dd_driver.h
deleted file mode 100644
index 4738109..0000000
--- a/src/driving_distance/src/withPoints_dd_driver.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: withPoints_driver.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_DRIVING_DISTANCE_SRC_WITHPOINTS_DD_DRIVER_H_
-#define SRC_DRIVING_DISTANCE_SRC_WITHPOINTS_DD_DRIVER_H_
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
- void do_pgr_many_withPointsDD(
- pgr_edge_t *edges, size_t total_edges,
- Point_on_edge_t *points_p, size_t total_points,
- pgr_edge_t *edges_of_points, size_t total_edges_of_points,
-
- int64_t *start_pids_arr, size_t s_len,
- double distance,
-
- bool directed,
- char driving_side,
- bool details,
- bool equiCost,
-
- General_path_element_t **return_tuples, size_t *return_count,
- char** log_msg,
- char** notice_msg,
- char ** err_msg);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_DRIVING_DISTANCE_SRC_WITHPOINTS_DD_DRIVER_H_
diff --git a/src/driving_distance/test/dijksraDD-issue729.result b/src/driving_distance/test/dijksraDD-issue729.result
new file mode 100644
index 0000000..9db7799
--- /dev/null
+++ b/src/driving_distance/test/dijksraDD-issue729.result
@@ -0,0 +1,71 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+ALTER TABLE edge_table
+DROP COLUMN IF EXISTS node_count,
+ADD COLUMN node_count INTEGER;
+NOTICE: column "node_count" of relation "edge_table" does not exist, skipping
+ALTER TABLE
+UPDATE edge_table AS edge_table
+SET node_count=count.sum
+FROM
+ (SELECT
+ from_v,
+ sum(node) AS sum
+ FROM
+ pgr_drivingDistance(
+ 'SELECT id, source, target, ST_Length(the_geom) AS cost FROM edge_table',
+ ARRAY(SELECT DISTINCT source FROM edge_table),
+ 1,
+ false)
+ GROUP BY from_v) AS count
+ WHERE edge_table.source=count.from_v
+ ;
+UPDATE 18
+ALTER TABLE edge_table
+DROP COLUMN IF EXISTS another_column,
+ADD COLUMN another_column INTEGER;
+NOTICE: column "another_column" of relation "edge_table" does not exist, skipping
+ALTER TABLE
+DROP TABLE IF EXISTS network;
+NOTICE: table "network" does not exist, skipping
+DROP TABLE
+CREATE TABLE network AS
+SELECT *
+from (
+ VALUES
+ (1::int, 1::int, 2::int, 100::int),
+ (2::int, 2::int, 3::int, 100::int),
+ (3::int, 3::int, 4::int, 100::int),
+ (4::int, 5::int, 6::int, 100::int)
+) as t (id, source,target,cost);
+SELECT 4
+ALTER TABLE network
+DROP COLUMN IF EXISTS node_count,
+ADD COLUMN node_count INTEGER;
+NOTICE: column "node_count" of relation "network" does not exist, skipping
+ALTER TABLE
+UPDATE network AS network
+SET node_count=count.sum
+FROM
+(SELECT
+ from_v,
+ sum(node) AS sum
+ FROM
+ pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM network',
+ ARRAY(SELECT DISTINCT source FROM network),
+ 1,
+ false)
+ GROUP BY from_v) AS count
+WHERE network.source=count.from_v
+;
+UPDATE 4
+ALTER TABLE network
+DROP COLUMN IF EXISTS another_column,
+ADD COLUMN another_column INTEGER;
+NOTICE: column "another_column" of relation "network" does not exist, skipping
+ALTER TABLE
+ROLLBACK;
+ROLLBACK
diff --git a/src/driving_distance/test/issue729.test.sql b/src/driving_distance/test/dijksraDD-issue729.test.sql
similarity index 100%
rename from src/driving_distance/test/issue729.test.sql
rename to src/driving_distance/test/dijksraDD-issue729.test.sql
diff --git a/src/driving_distance/test/doc-pgr_drivingDistance.result b/src/driving_distance/test/doc-pgr_drivingDistance.result
index 50cef61..83759bf 100644
--- a/src/driving_distance/test/doc-pgr_drivingDistance.result
+++ b/src/driving_distance/test/doc-pgr_drivingDistance.result
@@ -1,178 +1,312 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-1|2|-1|0|0
-2|1|1|1|1
-3|5|4|1|1
-4|6|8|1|2
-5|8|7|1|2
-6|10|10|1|2
-7|7|6|1|3
-8|9|9|1|3
-9|11|12|1|3
-10|13|14|1|3
-1|13|-1|0|0
-2|10|14|1|1
-3|5|10|1|2
-4|11|12|1|2
-5|2|4|1|3
-6|6|8|1|3
-7|8|7|1|3
-8|12|13|1|3
-1|2|2|-1|0|0
-2|2|1|1|1|1
-3|2|5|4|1|1
-4|2|6|8|1|2
-5|2|8|7|1|2
-6|2|10|10|1|2
-7|2|7|6|1|3
-8|2|9|9|1|3
-9|2|11|12|1|3
-10|2|13|14|1|3
-11|13|13|-1|0|0
-12|13|10|14|1|1
-13|13|5|10|1|2
-14|13|11|12|1|2
-15|13|2|4|1|3
-16|13|6|8|1|3
-17|13|8|7|1|3
-18|13|12|13|1|3
-1|2|2|-1|0|0
-2|2|1|1|1|1
-3|2|5|4|1|1
-4|2|6|8|1|2
-5|2|8|7|1|2
-6|2|7|6|1|3
-7|2|9|9|1|3
-8|13|13|-1|0|0
-9|13|10|14|1|1
-10|13|11|12|1|2
-11|13|12|13|1|3
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 2 | -1 | 0 | 0
+ 2 | 1 | 1 | 1 | 1
+ 3 | 5 | 4 | 1 | 1
+ 4 | 6 | 8 | 1 | 2
+ 5 | 8 | 7 | 1 | 2
+ 6 | 10 | 10 | 1 | 2
+ 7 | 7 | 6 | 1 | 3
+ 8 | 9 | 9 | 1 | 3
+ 9 | 11 | 12 | 1 | 3
+ 10 | 13 | 14 | 1 | 3
+(10 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 13, 3
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 13 | -1 | 0 | 0
+ 2 | 10 | 14 | 1 | 1
+ 3 | 5 | 10 | 1 | 2
+ 4 | 11 | 12 | 1 | 2
+ 5 | 2 | 4 | 1 | 3
+ 6 | 6 | 8 | 1 | 3
+ 7 | 8 | 7 | 1 | 3
+ 8 | 12 | 13 | 1 | 3
+(8 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[2,13], 3
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 5 | 4 | 1 | 1
+ 4 | 2 | 6 | 8 | 1 | 2
+ 5 | 2 | 8 | 7 | 1 | 2
+ 6 | 2 | 10 | 10 | 1 | 2
+ 7 | 2 | 7 | 6 | 1 | 3
+ 8 | 2 | 9 | 9 | 1 | 3
+ 9 | 2 | 11 | 12 | 1 | 3
+ 10 | 2 | 13 | 14 | 1 | 3
+ 11 | 13 | 13 | -1 | 0 | 0
+ 12 | 13 | 10 | 14 | 1 | 1
+ 13 | 13 | 5 | 10 | 1 | 2
+ 14 | 13 | 11 | 12 | 1 | 2
+ 15 | 13 | 2 | 4 | 1 | 3
+ 16 | 13 | 6 | 8 | 1 | 3
+ 17 | 13 | 8 | 7 | 1 | 3
+ 18 | 13 | 12 | 13 | 1 | 3
+(18 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[2,13], 3, equicost:=true
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 5 | 4 | 1 | 1
+ 4 | 2 | 6 | 8 | 1 | 2
+ 5 | 2 | 8 | 7 | 1 | 2
+ 6 | 2 | 7 | 6 | 1 | 3
+ 7 | 2 | 9 | 9 | 1 | 3
+ 8 | 13 | 13 | -1 | 0 | 0
+ 9 | 13 | 10 | 14 | 1 | 1
+ 10 | 13 | 11 | 12 | 1 | 2
+ 11 | 13 | 12 | 13 | 1 | 3
+(11 rows)
+
--q2
-1|2|-1|0|0
-2|1|1|1|1
-3|3|2|1|1
-4|5|4|1|1
-5|4|3|1|2
-6|6|8|1|2
-7|8|7|1|2
-8|10|10|1|2
-9|7|6|1|3
-10|9|16|1|3
-11|11|12|1|3
-12|13|14|1|3
-1|13|-1|0|0
-2|10|14|1|1
-3|5|10|1|2
-4|11|12|1|2
-5|2|4|1|3
-6|6|8|1|3
-7|8|7|1|3
-8|12|13|1|3
-1|2|2|-1|0|0
-2|2|1|1|1|1
-3|2|3|2|1|1
-4|2|5|4|1|1
-5|2|4|3|1|2
-6|2|6|8|1|2
-7|2|8|7|1|2
-8|2|10|10|1|2
-9|2|7|6|1|3
-10|2|9|16|1|3
-11|2|11|12|1|3
-12|2|13|14|1|3
-13|13|13|-1|0|0
-14|13|10|14|1|1
-15|13|5|10|1|2
-16|13|11|12|1|2
-17|13|2|4|1|3
-18|13|6|8|1|3
-19|13|8|7|1|3
-20|13|12|13|1|3
-1|2|2|-1|0|0
-2|2|1|1|1|1
-3|2|3|2|1|1
-4|2|5|4|1|1
-5|2|4|3|1|2
-6|2|6|8|1|2
-7|2|8|7|1|2
-8|2|7|6|1|3
-9|2|9|16|1|3
-10|13|13|-1|0|0
-11|13|10|14|1|1
-12|13|11|12|1|2
-13|13|12|13|1|3
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3, false
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 2 | -1 | 0 | 0
+ 2 | 1 | 1 | 1 | 1
+ 3 | 3 | 2 | 1 | 1
+ 4 | 5 | 4 | 1 | 1
+ 5 | 4 | 3 | 1 | 2
+ 6 | 6 | 8 | 1 | 2
+ 7 | 8 | 7 | 1 | 2
+ 8 | 10 | 10 | 1 | 2
+ 9 | 7 | 6 | 1 | 3
+ 10 | 9 | 16 | 1 | 3
+ 11 | 11 | 12 | 1 | 3
+ 12 | 13 | 14 | 1 | 3
+(12 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 13, 3, false
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 13 | -1 | 0 | 0
+ 2 | 10 | 14 | 1 | 1
+ 3 | 5 | 10 | 1 | 2
+ 4 | 11 | 12 | 1 | 2
+ 5 | 2 | 4 | 1 | 3
+ 6 | 6 | 8 | 1 | 3
+ 7 | 8 | 7 | 1 | 3
+ 8 | 12 | 13 | 1 | 3
+(8 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[2,13], 3, false
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 3 | 2 | 1 | 1
+ 4 | 2 | 5 | 4 | 1 | 1
+ 5 | 2 | 4 | 3 | 1 | 2
+ 6 | 2 | 6 | 8 | 1 | 2
+ 7 | 2 | 8 | 7 | 1 | 2
+ 8 | 2 | 10 | 10 | 1 | 2
+ 9 | 2 | 7 | 6 | 1 | 3
+ 10 | 2 | 9 | 16 | 1 | 3
+ 11 | 2 | 11 | 12 | 1 | 3
+ 12 | 2 | 13 | 14 | 1 | 3
+ 13 | 13 | 13 | -1 | 0 | 0
+ 14 | 13 | 10 | 14 | 1 | 1
+ 15 | 13 | 5 | 10 | 1 | 2
+ 16 | 13 | 11 | 12 | 1 | 2
+ 17 | 13 | 2 | 4 | 1 | 3
+ 18 | 13 | 6 | 8 | 1 | 3
+ 19 | 13 | 8 | 7 | 1 | 3
+ 20 | 13 | 12 | 13 | 1 | 3
+(20 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ array[2,13], 3, false, equicost:=true
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 3 | 2 | 1 | 1
+ 4 | 2 | 5 | 4 | 1 | 1
+ 5 | 2 | 4 | 3 | 1 | 2
+ 6 | 2 | 6 | 8 | 1 | 2
+ 7 | 2 | 8 | 7 | 1 | 2
+ 8 | 2 | 7 | 6 | 1 | 3
+ 9 | 2 | 9 | 16 | 1 | 3
+ 10 | 13 | 13 | -1 | 0 | 0
+ 11 | 13 | 10 | 14 | 1 | 1
+ 12 | 13 | 11 | 12 | 1 | 2
+ 13 | 13 | 12 | 13 | 1 | 3
+(13 rows)
+
--q3
-1|2|-1|0|0
-2|5|4|1|1
-3|6|8|1|2
-4|10|10|1|2
-5|9|9|1|3
-6|11|11|1|3
-7|13|14|1|3
-1|13|-1|0|0
-1|2|2|-1|0|0
-2|2|5|4|1|1
-3|2|6|8|1|2
-4|2|10|10|1|2
-5|2|9|9|1|3
-6|2|11|11|1|3
-7|2|13|14|1|3
-8|13|13|-1|0|0
-1|2|2|-1|0|0
-2|2|5|4|1|1
-3|2|6|8|1|2
-4|2|10|10|1|2
-5|2|9|9|1|3
-6|2|11|11|1|3
-7|13|13|-1|0|0
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 3
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 2 | -1 | 0 | 0
+ 2 | 5 | 4 | 1 | 1
+ 3 | 6 | 8 | 1 | 2
+ 4 | 10 | 10 | 1 | 2
+ 5 | 9 | 9 | 1 | 3
+ 6 | 11 | 11 | 1 | 3
+ 7 | 13 | 14 | 1 | 3
+(7 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 13, 3
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 13 | -1 | 0 | 0
+(1 row)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ array[2,13], 3
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 5 | 4 | 1 | 1
+ 3 | 2 | 6 | 8 | 1 | 2
+ 4 | 2 | 10 | 10 | 1 | 2
+ 5 | 2 | 9 | 9 | 1 | 3
+ 6 | 2 | 11 | 11 | 1 | 3
+ 7 | 2 | 13 | 14 | 1 | 3
+ 8 | 13 | 13 | -1 | 0 | 0
+(8 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ array[2,13], 3, equicost:=true
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 5 | 4 | 1 | 1
+ 3 | 2 | 6 | 8 | 1 | 2
+ 4 | 2 | 10 | 10 | 1 | 2
+ 5 | 2 | 9 | 9 | 1 | 3
+ 6 | 2 | 11 | 11 | 1 | 3
+ 7 | 13 | 13 | -1 | 0 | 0
+(7 rows)
+
--q4
-1|2|-1|0|0
-2|1|1|1|1
-3|5|4|1|1
-4|6|8|1|2
-5|8|7|1|2
-6|10|10|1|2
-7|3|5|1|3
-8|7|6|1|3
-9|9|9|1|3
-10|11|12|1|3
-11|13|14|1|3
-1|13|-1|0|0
-2|10|14|1|1
-3|5|10|1|2
-4|11|12|1|2
-5|2|4|1|3
-6|6|8|1|3
-7|8|7|1|3
-8|12|13|1|3
-1|2|2|-1|0|0
-2|2|1|1|1|1
-3|2|5|4|1|1
-4|2|6|8|1|2
-5|2|8|7|1|2
-6|2|10|10|1|2
-7|2|3|5|1|3
-8|2|7|6|1|3
-9|2|9|9|1|3
-10|2|11|12|1|3
-11|2|13|14|1|3
-12|13|13|-1|0|0
-13|13|10|14|1|1
-14|13|5|10|1|2
-15|13|11|12|1|2
-16|13|2|4|1|3
-17|13|6|8|1|3
-18|13|8|7|1|3
-19|13|12|13|1|3
-1|2|2|-1|0|0
-2|2|1|1|1|1
-3|2|5|4|1|1
-4|2|6|8|1|2
-5|2|8|7|1|2
-6|2|3|5|1|3
-7|2|7|6|1|3
-8|2|9|9|1|3
-9|13|13|-1|0|0
-10|13|10|14|1|1
-11|13|11|12|1|2
-12|13|12|13|1|3
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 3, false
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 2 | -1 | 0 | 0
+ 2 | 1 | 1 | 1 | 1
+ 3 | 5 | 4 | 1 | 1
+ 4 | 6 | 8 | 1 | 2
+ 5 | 8 | 7 | 1 | 2
+ 6 | 10 | 10 | 1 | 2
+ 7 | 3 | 5 | 1 | 3
+ 8 | 7 | 6 | 1 | 3
+ 9 | 9 | 9 | 1 | 3
+ 10 | 11 | 12 | 1 | 3
+ 11 | 13 | 14 | 1 | 3
+(11 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 13, 3, false
+ );
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | 13 | -1 | 0 | 0
+ 2 | 10 | 14 | 1 | 1
+ 3 | 5 | 10 | 1 | 2
+ 4 | 11 | 12 | 1 | 2
+ 5 | 2 | 4 | 1 | 3
+ 6 | 6 | 8 | 1 | 3
+ 7 | 8 | 7 | 1 | 3
+ 8 | 12 | 13 | 1 | 3
+(8 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ array[2,13], 3, false
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 5 | 4 | 1 | 1
+ 4 | 2 | 6 | 8 | 1 | 2
+ 5 | 2 | 8 | 7 | 1 | 2
+ 6 | 2 | 10 | 10 | 1 | 2
+ 7 | 2 | 3 | 5 | 1 | 3
+ 8 | 2 | 7 | 6 | 1 | 3
+ 9 | 2 | 9 | 9 | 1 | 3
+ 10 | 2 | 11 | 12 | 1 | 3
+ 11 | 2 | 13 | 14 | 1 | 3
+ 12 | 13 | 13 | -1 | 0 | 0
+ 13 | 13 | 10 | 14 | 1 | 1
+ 14 | 13 | 5 | 10 | 1 | 2
+ 15 | 13 | 11 | 12 | 1 | 2
+ 16 | 13 | 2 | 4 | 1 | 3
+ 17 | 13 | 6 | 8 | 1 | 3
+ 18 | 13 | 8 | 7 | 1 | 3
+ 19 | 13 | 12 | 13 | 1 | 3
+(19 rows)
+
+SELECT * FROM pgr_drivingDistance(
+ 'SELECT id, source, target, cost FROM edge_table',
+ array[2,13], 3, false, equicost:=true
+ );
+ seq | from_v | node | edge | cost | agg_cost
+-----+--------+------+------+------+----------
+ 1 | 2 | 2 | -1 | 0 | 0
+ 2 | 2 | 1 | 1 | 1 | 1
+ 3 | 2 | 5 | 4 | 1 | 1
+ 4 | 2 | 6 | 8 | 1 | 2
+ 5 | 2 | 8 | 7 | 1 | 2
+ 6 | 2 | 3 | 5 | 1 | 3
+ 7 | 2 | 7 | 6 | 1 | 3
+ 8 | 2 | 9 | 9 | 1 | 3
+ 9 | 13 | 13 | -1 | 0 | 0
+ 10 | 13 | 10 | 14 | 1 | 1
+ 11 | 13 | 11 | 12 | 1 | 2
+ 12 | 13 | 12 | 13 | 1 | 3
+(12 rows)
+
--q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/driving_distance/test/doc-pgr_drivingDistance.test.sql b/src/driving_distance/test/doc-pgr_drivingDistance.test.sql
index 4d61eb3..d19101f 100644
--- a/src/driving_distance/test/doc-pgr_drivingDistance.test.sql
+++ b/src/driving_distance/test/doc-pgr_drivingDistance.test.sql
@@ -1,30 +1,3 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--- PGR_drivingDistance V3
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
\echo --q1
SELECT * FROM pgr_drivingDistance(
diff --git a/src/driving_distance/test/doc-pgr_drivingdistance-v2.result b/src/driving_distance/test/doc-pgr_drivingdistance-v2.result
deleted file mode 100644
index 7221d5a..0000000
--- a/src/driving_distance/test/doc-pgr_drivingdistance-v2.result
+++ /dev/null
@@ -1,8 +0,0 @@
---q1
-NOTICE: Deprecated function
-0|7|-1|0
-1|8|6|1
-NOTICE: Deprecated function
-0|7|-1|0
-1|8|6|1
---q2
diff --git a/src/driving_distance/test/doc-pgr_drivingdistance-v2.test.sql b/src/driving_distance/test/doc-pgr_drivingdistance-v2.test.sql
deleted file mode 100644
index 285c5e5..0000000
--- a/src/driving_distance/test/doc-pgr_drivingdistance-v2.test.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--- PGR_drivingDistance
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-
-SET client_min_messages TO NOTICE;
-
-\echo --q1
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 7, 1.5, false, false
-) ;
-
-SELECT * FROM pgr_drivingDistance(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- 7, 1.5, true, true
-) ;
-\echo --q2
diff --git a/src/driving_distance/test/drivingdistance-any-00.result b/src/driving_distance/test/drivingdistance-any-00.result
deleted file mode 100644
index 74465da..0000000
--- a/src/driving_distance/test/drivingdistance-any-00.result
+++ /dev/null
@@ -1,575 +0,0 @@
-NOTICE: Deprecated function
-0|1274|-1|0.00
-1|1222|3799|1.00
-2|1273|1249|1.00
-3|1275|1250|1.00
-4|1326|3800|1.00
-5|1170|3798|2.00
-6|1221|3748|2.00
-7|1223|3850|2.00
-8|1272|1248|2.00
-9|1276|1251|2.00
-10|1325|3749|2.00
-11|1327|1301|2.00
-12|1378|3801|2.00
-13|1118|3797|3.00
-14|1169|1147|3.00
-15|1171|3849|3.00
-16|1220|3697|3.00
-17|1224|1200|3.00
-18|1271|1247|3.00
-19|1277|1252|3.00
-20|1324|1299|3.00
-21|1328|1302|3.00
-22|1377|3750|3.00
-23|1379|3852|3.00
-24|1430|3802|3.00
-25|1066|3796|4.00
-26|1117|1096|4.00
-27|1119|3848|4.00
-28|1168|3696|4.00
-29|1172|1149|4.00
-30|1219|1196|4.00
-31|1225|1201|4.00
-32|1270|1246|4.00
-33|1278|1253|4.00
-34|1323|3647|4.00
-35|1329|1303|4.00
-36|1376|1350|4.00
-37|1380|1353|4.00
-38|1429|3751|4.00
-39|1431|3853|4.00
-40|1482|3803|4.00
-41|1014|3795|5.00
-42|1065|1045|5.00
-43|1067|1046|5.00
-44|1116|3695|5.00
-45|1120|1098|5.00
-46|1167|1145|5.00
-47|1173|3951|5.00
-48|1218|1195|5.00
-49|1226|4003|5.00
-50|1269|1245|5.00
-51|1279|1254|5.00
-52|1322|1297|5.00
-53|1330|4004|5.00
-54|1375|3648|5.00
-55|1381|1354|5.00
-56|1428|1401|5.00
-57|1432|1404|5.00
-58|1481|1453|5.00
-59|1483|1454|5.00
-60|1534|3804|5.00
-61|962|3794|6.00
-62|1013|3744|6.00
-63|1015|3846|6.00
-64|1064|1044|6.00
-65|1068|1047|6.00
-66|1115|1094|6.00
-67|1121|1099|6.00
-68|1166|3594|6.00
-69|1174|1151|6.00
-70|1217|1194|6.00
-71|1227|4054|6.00
-72|1268|1244|6.00
-73|1280|1255|6.00
-74|1321|1296|6.00
-75|1331|1305|6.00
-76|1374|1348|6.00
-77|1382|4005|6.00
-78|1427|3649|6.00
-79|1433|1405|6.00
-80|1480|3701|6.00
-81|1484|3905|6.00
-82|1533|1504|6.00
-83|1535|1505|6.00
-84|1586|3805|6.00
-85|910|3793|7.00
-86|961|3743|7.00
-87|963|3845|7.00
-88|1012|993|7.00
-89|1016|996|7.00
-90|1063|3643|7.00
-91|1069|3949|7.00
-92|1114|1093|7.00
-93|1122|1100|7.00
-94|1165|1143|7.00
-95|1175|1152|7.00
-96|1216|3493|7.00
-97|1228|1204|7.00
-98|1267|1243|7.00
-99|1281|1256|7.00
-100|1320|1295|7.00
-101|1332|1306|7.00
-102|1373|1347|7.00
-103|1383|4056|7.00
-104|1426|3598|7.00
-105|1434|4006|7.00
-106|1479|3650|7.00
-107|1485|1456|7.00
-108|1532|1503|7.00
-109|1536|1506|7.00
-110|1585|3754|7.00
-111|1587|3856|7.00
-112|1638|3806|7.00
-113|858|3792|8.00
-114|909|3742|8.00
-115|911|3844|8.00
-116|960|3692|8.00
-117|964|945|8.00
-118|1011|992|8.00
-119|1017|997|8.00
-120|1062|1042|8.00
-121|1070|1049|8.00
-122|1113|1092|8.00
-123|1123|4052|8.00
-124|1164|3492|8.00
-125|1176|1153|8.00
-126|1215|1192|8.00
-127|1229|4156|8.00
-128|1266|1242|8.00
-129|1282|1257|8.00
-130|1319|1294|8.00
-131|1333|1307|8.00
-132|1372|1346|8.00
-133|1384|4107|8.00
-134|1425|3547|8.00
-135|1435|4057|8.00
-136|1478|3599|8.00
-137|1486|4007|8.00
-138|1531|1502|8.00
-139|1537|1507|8.00
-140|1584|1554|8.00
-141|1588|1557|8.00
-142|1637|1606|8.00
-143|1639|1607|8.00
-144|1690|3807|8.00
-145|806|3791|9.00
-146|857|3741|9.00
-147|859|3843|9.00
-148|908|3691|9.00
-149|912|3895|9.00
-150|959|941|9.00
-151|965|946|9.00
-152|1010|991|9.00
-153|1018|998|9.00
-154|1061|1041|9.00
-155|1071|1050|9.00
-156|1112|1091|9.00
-157|1124|4103|9.00
-158|1163|1141|9.00
-159|1177|1154|9.00
-160|1214|1191|9.00
-161|1230|4207|9.00
-162|1265|1241|9.00
-163|1283|1258|9.00
-164|1318|1293|9.00
-165|1334|1308|9.00
-166|1371|1345|9.00
-167|1385|1358|9.00
-168|1424|1397|9.00
-169|1436|4108|9.00
-170|1477|3548|9.00
-171|1487|1458|9.00
-172|1530|1501|9.00
-173|1538|1508|9.00
-174|1583|3652|9.00
-175|1589|1558|9.00
-176|1636|3704|9.00
-177|1640|3908|9.00
-178|1689|1657|9.00
-179|1691|1658|9.00
-180|1742|3808|9.00
-181|754|3790|10.00
-182|805|3740|10.00
-183|807|3842|10.00
-184|856|3690|10.00
-185|860|3894|10.00
-186|907|890|10.00
-187|913|895|10.00
-188|958|3590|10.00
-189|966|947|10.00
-190|1009|990|10.00
-191|1019|999|10.00
-192|1060|1040|10.00
-193|1072|4102|10.00
-194|1111|1090|10.00
-195|1125|1103|10.00
-196|1162|3390|10.00
-197|1178|1155|10.00
-198|1213|3340|10.00
-199|1231|4258|10.00
-200|1264|1240|10.00
-201|1284|1259|10.00
-202|1317|3341|10.00
-203|1335|4259|10.00
-204|1370|1344|10.00
-205|1386|4209|10.00
-206|1423|1396|10.00
-207|1437|1409|10.00
-208|1476|1448|10.00
-209|1488|4109|10.00
-210|1529|1500|10.00
-211|1539|1509|10.00
-212|1582|3601|10.00
-213|1590|4009|10.00
-214|1635|1604|10.00
-215|1641|1609|10.00
-216|1688|3705|10.00
-217|1692|3909|10.00
-218|1741|1708|10.00
-219|1743|1709|10.00
-220|1794|3809|10.00
-1|1274|-1|0.00|0.00
-2|1222|3799|1.00|1.00
-3|1273|1249|1.00|1.00
-4|1275|1250|1.00|1.00
-5|1326|3800|1.00|1.00
-6|1170|3798|1.00|2.00
-7|1221|3748|1.00|2.00
-8|1223|3850|1.00|2.00
-9|1272|1248|1.00|2.00
-10|1276|1251|1.00|2.00
-11|1325|3749|1.00|2.00
-12|1327|1301|1.00|2.00
-13|1378|3801|1.00|2.00
-14|1118|3797|1.00|3.00
-15|1169|1147|1.00|3.00
-16|1171|3849|1.00|3.00
-17|1220|3697|1.00|3.00
-18|1224|1200|1.00|3.00
-19|1271|1247|1.00|3.00
-20|1277|1252|1.00|3.00
-21|1324|1299|1.00|3.00
-22|1328|1302|1.00|3.00
-23|1377|3750|1.00|3.00
-24|1379|3852|1.00|3.00
-25|1430|3802|1.00|3.00
-26|1066|3796|1.00|4.00
-27|1117|1096|1.00|4.00
-28|1119|3848|1.00|4.00
-29|1168|3696|1.00|4.00
-30|1172|1149|1.00|4.00
-31|1219|1196|1.00|4.00
-32|1225|1201|1.00|4.00
-33|1270|1246|1.00|4.00
-34|1278|1253|1.00|4.00
-35|1323|3647|1.00|4.00
-36|1329|1303|1.00|4.00
-37|1376|1350|1.00|4.00
-38|1380|1353|1.00|4.00
-39|1429|3751|1.00|4.00
-40|1431|3853|1.00|4.00
-41|1482|3803|1.00|4.00
-42|1014|3795|1.00|5.00
-43|1065|1045|1.00|5.00
-44|1067|1046|1.00|5.00
-45|1116|3695|1.00|5.00
-46|1120|1098|1.00|5.00
-47|1167|1145|1.00|5.00
-48|1173|3951|1.00|5.00
-49|1218|1195|1.00|5.00
-50|1226|4003|1.00|5.00
-51|1269|1245|1.00|5.00
-52|1279|1254|1.00|5.00
-53|1322|1297|1.00|5.00
-54|1330|4004|1.00|5.00
-55|1375|3648|1.00|5.00
-56|1381|1354|1.00|5.00
-57|1428|1401|1.00|5.00
-58|1432|1404|1.00|5.00
-59|1481|1453|1.00|5.00
-60|1483|1454|1.00|5.00
-61|1534|3804|1.00|5.00
-62|962|3794|1.00|6.00
-63|1013|3744|1.00|6.00
-64|1015|3846|1.00|6.00
-65|1064|1044|1.00|6.00
-66|1068|1047|1.00|6.00
-67|1115|1094|1.00|6.00
-68|1121|1099|1.00|6.00
-69|1166|3594|1.00|6.00
-70|1174|1151|1.00|6.00
-71|1217|1194|1.00|6.00
-72|1227|4054|1.00|6.00
-73|1268|1244|1.00|6.00
-74|1280|1255|1.00|6.00
-75|1321|1296|1.00|6.00
-76|1331|1305|1.00|6.00
-77|1374|1348|1.00|6.00
-78|1382|4005|1.00|6.00
-79|1427|3649|1.00|6.00
-80|1433|1405|1.00|6.00
-81|1480|3701|1.00|6.00
-82|1484|3905|1.00|6.00
-83|1533|1504|1.00|6.00
-84|1535|1505|1.00|6.00
-85|1586|3805|1.00|6.00
-86|910|3793|1.00|7.00
-87|961|3743|1.00|7.00
-88|963|3845|1.00|7.00
-89|1012|993|1.00|7.00
-90|1016|996|1.00|7.00
-91|1063|3643|1.00|7.00
-92|1069|3949|1.00|7.00
-93|1114|1093|1.00|7.00
-94|1122|1100|1.00|7.00
-95|1165|1143|1.00|7.00
-96|1175|1152|1.00|7.00
-97|1216|3493|1.00|7.00
-98|1228|1204|1.00|7.00
-99|1267|1243|1.00|7.00
-100|1281|1256|1.00|7.00
-101|1320|1295|1.00|7.00
-102|1332|1306|1.00|7.00
-103|1373|1347|1.00|7.00
-104|1383|4056|1.00|7.00
-105|1426|3598|1.00|7.00
-106|1434|4006|1.00|7.00
-107|1479|3650|1.00|7.00
-108|1485|1456|1.00|7.00
-109|1532|1503|1.00|7.00
-110|1536|1506|1.00|7.00
-111|1585|3754|1.00|7.00
-112|1587|3856|1.00|7.00
-113|1638|3806|1.00|7.00
-114|858|3792|1.00|8.00
-115|909|3742|1.00|8.00
-116|911|3844|1.00|8.00
-117|960|3692|1.00|8.00
-118|964|945|1.00|8.00
-119|1011|992|1.00|8.00
-120|1017|997|1.00|8.00
-121|1062|1042|1.00|8.00
-122|1070|1049|1.00|8.00
-123|1113|1092|1.00|8.00
-124|1123|4052|1.00|8.00
-125|1164|3492|1.00|8.00
-126|1176|1153|1.00|8.00
-127|1215|1192|1.00|8.00
-128|1229|4156|1.00|8.00
-129|1266|1242|1.00|8.00
-130|1282|1257|1.00|8.00
-131|1319|1294|1.00|8.00
-132|1333|1307|1.00|8.00
-133|1372|1346|1.00|8.00
-134|1384|4107|1.00|8.00
-135|1425|3547|1.00|8.00
-136|1435|4057|1.00|8.00
-137|1478|3599|1.00|8.00
-138|1486|4007|1.00|8.00
-139|1531|1502|1.00|8.00
-140|1537|1507|1.00|8.00
-141|1584|1554|1.00|8.00
-142|1588|1557|1.00|8.00
-143|1637|1606|1.00|8.00
-144|1639|1607|1.00|8.00
-145|1690|3807|1.00|8.00
-146|806|3791|1.00|9.00
-147|857|3741|1.00|9.00
-148|859|3843|1.00|9.00
-149|908|3691|1.00|9.00
-150|912|3895|1.00|9.00
-151|959|941|1.00|9.00
-152|965|946|1.00|9.00
-153|1010|991|1.00|9.00
-154|1018|998|1.00|9.00
-155|1061|1041|1.00|9.00
-156|1071|1050|1.00|9.00
-157|1112|1091|1.00|9.00
-158|1124|4103|1.00|9.00
-159|1163|1141|1.00|9.00
-160|1177|1154|1.00|9.00
-161|1214|1191|1.00|9.00
-162|1230|4207|1.00|9.00
-163|1265|1241|1.00|9.00
-164|1283|1258|1.00|9.00
-165|1318|1293|1.00|9.00
-166|1334|1308|1.00|9.00
-167|1371|1345|1.00|9.00
-168|1385|1358|1.00|9.00
-169|1424|1397|1.00|9.00
-170|1436|4108|1.00|9.00
-171|1477|3548|1.00|9.00
-172|1487|1458|1.00|9.00
-173|1530|1501|1.00|9.00
-174|1538|1508|1.00|9.00
-175|1583|3652|1.00|9.00
-176|1589|1558|1.00|9.00
-177|1636|3704|1.00|9.00
-178|1640|3908|1.00|9.00
-179|1689|1657|1.00|9.00
-180|1691|1658|1.00|9.00
-181|1742|3808|1.00|9.00
-182|754|3790|1.00|10.00
-183|805|3740|1.00|10.00
-184|807|3842|1.00|10.00
-185|856|3690|1.00|10.00
-186|860|3894|1.00|10.00
-187|907|890|1.00|10.00
-188|913|895|1.00|10.00
-189|958|3590|1.00|10.00
-190|966|947|1.00|10.00
-191|1009|990|1.00|10.00
-192|1019|999|1.00|10.00
-193|1060|1040|1.00|10.00
-194|1072|4102|1.00|10.00
-195|1111|1090|1.00|10.00
-196|1125|1103|1.00|10.00
-197|1162|3390|1.00|10.00
-198|1178|1155|1.00|10.00
-199|1213|3340|1.00|10.00
-200|1231|4258|1.00|10.00
-201|1264|1240|1.00|10.00
-202|1284|1259|1.00|10.00
-203|1317|3341|1.00|10.00
-204|1335|4259|1.00|10.00
-205|1370|1344|1.00|10.00
-206|1386|4209|1.00|10.00
-207|1423|1396|1.00|10.00
-208|1437|1409|1.00|10.00
-209|1476|1448|1.00|10.00
-210|1488|4109|1.00|10.00
-211|1529|1500|1.00|10.00
-212|1539|1509|1.00|10.00
-213|1582|3601|1.00|10.00
-214|1590|4009|1.00|10.00
-215|1635|1604|1.00|10.00
-216|1641|1609|1.00|10.00
-217|1688|3705|1.00|10.00
-218|1692|3909|1.00|10.00
-219|1741|1708|1.00|10.00
-220|1743|1709|1.00|10.00
-221|1794|3809|1.00|10.00
-1|1274|-1|0.00|0.00
-2|1275|1250|1.00|1.00
-3|1326|3800|1.00|1.00
-4|1276|1251|1.00|2.00
-5|1327|3851|1.00|2.00
-6|1378|3801|1.00|2.00
-7|1277|1252|1.00|3.00
-8|1328|1302|1.00|3.00
-9|1379|3852|1.00|3.00
-10|1430|3802|1.00|3.00
-11|1278|1253|1.00|4.00
-12|1329|3953|1.00|4.00
-13|1380|1353|1.00|4.00
-14|1431|1403|1.00|4.00
-15|1482|3803|1.00|4.00
-16|1279|1254|1.00|5.00
-17|1330|4004|1.00|5.00
-18|1381|1354|1.00|5.00
-19|1432|3904|1.00|5.00
-20|1483|1454|1.00|5.00
-21|1534|3804|1.00|5.00
-22|1280|1255|1.00|6.00
-23|1331|4055|1.00|6.00
-24|1382|4005|1.00|6.00
-25|1433|1405|1.00|6.00
-26|1484|1455|1.00|6.00
-27|1535|3855|1.00|6.00
-28|1586|3805|1.00|6.00
-29|1281|1256|1.00|7.00
-30|1332|4106|1.00|7.00
-31|1383|4056|1.00|7.00
-32|1434|1406|1.00|7.00
-33|1485|1456|1.00|7.00
-34|1536|1506|1.00|7.00
-35|1587|1556|1.00|7.00
-36|1638|3806|1.00|7.00
-37|1282|1257|1.00|8.00
-38|1333|4157|1.00|8.00
-39|1384|4107|1.00|8.00
-40|1435|1407|1.00|8.00
-41|1486|4007|1.00|8.00
-42|1537|1507|1.00|8.00
-43|1588|1557|1.00|8.00
-44|1639|1607|1.00|8.00
-45|1690|3807|1.00|8.00
-46|1283|1258|1.00|9.00
-47|1334|4208|1.00|9.00
-48|1385|1358|1.00|9.00
-49|1436|4108|1.00|9.00
-50|1487|1458|1.00|9.00
-51|1538|4008|1.00|9.00
-52|1589|1558|1.00|9.00
-53|1640|1608|1.00|9.00
-54|1691|3858|1.00|9.00
-55|1742|3808|1.00|9.00
-56|1284|1259|1.00|10.00
-57|1335|4259|1.00|10.00
-58|1386|4209|1.00|10.00
-59|1437|1409|1.00|10.00
-60|1488|4109|1.00|10.00
-61|1539|1509|1.00|10.00
-62|1590|1559|1.00|10.00
-63|1641|3959|1.00|10.00
-64|1692|1659|1.00|10.00
-65|1743|3859|1.00|10.00
-66|1794|3809|1.00|10.00
-1|1274|-1|0.00|0.00
-2|1275|1250|1.00|1.00
-3|1326|3800|1.00|1.00
-4|1276|1251|1.00|2.00
-5|1327|3851|1.00|2.00
-6|1378|3801|1.00|2.00
-7|1277|1252|1.00|3.00
-8|1328|1302|1.00|3.00
-9|1379|3852|1.00|3.00
-10|1430|3802|1.00|3.00
-11|1278|1253|1.00|4.00
-12|1329|3953|1.00|4.00
-13|1380|1353|1.00|4.00
-14|1431|1403|1.00|4.00
-15|1482|3803|1.00|4.00
-16|1279|1254|1.00|5.00
-17|1330|4004|1.00|5.00
-18|1381|1354|1.00|5.00
-19|1432|3904|1.00|5.00
-20|1483|1454|1.00|5.00
-21|1534|3804|1.00|5.00
-22|1280|1255|1.00|6.00
-23|1331|4055|1.00|6.00
-24|1382|4005|1.00|6.00
-25|1433|1405|1.00|6.00
-26|1484|1455|1.00|6.00
-27|1535|3855|1.00|6.00
-28|1586|3805|1.00|6.00
-29|1281|1256|1.00|7.00
-30|1332|4106|1.00|7.00
-31|1383|4056|1.00|7.00
-32|1434|1406|1.00|7.00
-33|1485|1456|1.00|7.00
-34|1536|1506|1.00|7.00
-35|1587|1556|1.00|7.00
-36|1638|3806|1.00|7.00
-37|1282|1257|1.00|8.00
-38|1333|4157|1.00|8.00
-39|1384|4107|1.00|8.00
-40|1435|1407|1.00|8.00
-41|1486|4007|1.00|8.00
-42|1537|1507|1.00|8.00
-43|1588|1557|1.00|8.00
-44|1639|1607|1.00|8.00
-45|1690|3807|1.00|8.00
-46|1283|1258|1.00|9.00
-47|1334|4208|1.00|9.00
-48|1385|1358|1.00|9.00
-49|1436|4108|1.00|9.00
-50|1487|1458|1.00|9.00
-51|1538|4008|1.00|9.00
-52|1589|1558|1.00|9.00
-53|1640|1608|1.00|9.00
-54|1691|3858|1.00|9.00
-55|1742|3808|1.00|9.00
-56|1284|1259|1.00|10.00
-57|1335|4259|1.00|10.00
-58|1386|4209|1.00|10.00
-59|1437|1409|1.00|10.00
-60|1488|4109|1.00|10.00
-61|1539|1509|1.00|10.00
-62|1590|1559|1.00|10.00
-63|1641|3959|1.00|10.00
-64|1692|1659|1.00|10.00
-65|1743|3859|1.00|10.00
-66|1794|3809|1.00|10.00
diff --git a/src/driving_distance/test/drivingdistance-any-00.test.sql b/src/driving_distance/test/drivingdistance-any-00.test.sql
deleted file mode 100644
index 4d7e890..0000000
--- a/src/driving_distance/test/drivingdistance-any-00.test.sql
+++ /dev/null
@@ -1,65 +0,0 @@
--- each ring will increase by 4 because it is on a square grid
--- to find the start node number
--- SELECT *, st_distance(st_makepoint(25,25), the_geom) from vertices_tmp where st_dwithin(st_makepoint(25,25), the_geom, 1.0) order by st_distance(st_makepoint(25,25), the_geom) limit 1;
-
- -- create 50x50 grid of overlapping lines horizontal and vertical
-
- DO $$
- DECLARE debuglevel TEXT;
- BEGIN
-
- EXECUTE 'show client_min_messages' into debuglevel;
-
- SET client_min_messages TO WARNING;
-
- create table ddunnoded (
- id serial not null primary key
- );
-
- PERFORM addgeometrycolumn('ddunnoded', 'the_geom', ST_SRID('POINT(0 0)'::geometry), 'LINESTRING', 2);
-
- INSERT into ddunnoded (the_geom)
- SELECT st_astext(st_makeline(st_makepoint(0,s1), st_makepoint(51,s1))) from (SELECT generate_series(1,50) as s1) as foo
- union all
- SELECT st_astext(st_makeline(st_makepoint(s1,0), st_makepoint(s1,51))) from (SELECT generate_series(1,50) as s1) as foo;
-
- -- node the grid so we can use it
- PERFORM pgr_nodenetwork('ddunnoded',0.000001);
-
- -- copy the noded table into a table we can use for a graph
- -- and add the required columns
-
-
- create table ddnoded2 (
- gid serial not null primary key,
- id integer,
- source integer,
- target integer,
- cost float8
- );
-
- PERFORM addgeometrycolumn('ddnoded2', 'the_geom', ST_SRID('POINT(0 0)'::geometry), 'LINESTRING', 2);
-
- insert into ddnoded2 (id, cost, the_geom)
- SELECT a.id, 1.0::float8 as cost, a.the_geom
- from ddunnoded_noded a order by id, sub_id;
-
- -- now create a topology
- PERFORM pgr_createtopology('ddnoded2', 0.000001, id:='gid');
-
- -- Total query runtime: 8080 ms.
-
-
- execute 'set client_min_messages to '|| debuglevel;
- END $$;
-
- --this are equivalent
- SELECT seq, id1, id2, round(cost::numeric, 2) from pgr_drivingdistance('SELECT id, source, target, 1.0::float8 as cost from ddnoded2', 1274, 10, false, false);
- SELECT seq, node, edge, round(cost::numeric, 2), round(agg_cost::numeric,2) from pgr_drivingdistance('SELECT id, source, target, 1.0::float8 as cost from ddnoded2', 1274, 10, false);
-
-
- --- this ones are equivalent
- SELECT seq, node, edge, round(cost::numeric, 2), round(agg_cost::numeric,2) from pgr_drivingdistance('SELECT id, source, target, 1.0::float8 as cost from ddnoded2', 1274, 10, true);
- SELECT seq, node, edge, round(cost::numeric, 2), round(agg_cost::numeric,2) from pgr_drivingdistance('SELECT id, source, target, 1.0::float8 as cost from ddnoded2', 1274, 10);
-
-
diff --git a/src/driving_distance/test/issue729.result b/src/driving_distance/test/issue729.result
deleted file mode 100644
index 61e6d74..0000000
--- a/src/driving_distance/test/issue729.result
+++ /dev/null
@@ -1,5 +0,0 @@
-NOTICE: column "node_count" of relation "edge_table" does not exist, skipping
-NOTICE: column "another_column" of relation "edge_table" does not exist, skipping
-NOTICE: table "network" does not exist, skipping
-NOTICE: column "node_count" of relation "network" does not exist, skipping
-NOTICE: column "another_column" of relation "network" does not exist, skipping
diff --git a/src/driving_distance/test/test.conf b/src/driving_distance/test/test.conf
index cd14af3..b382c56 100644
--- a/src/driving_distance/test/test.conf
+++ b/src/driving_distance/test/test.conf
@@ -5,14 +5,11 @@
'comment' => 'Driving Distance test for any versions.',
'data' => [],
'tests' => [qw(
- drivingdistance-any-00
+ dijksraDD-issue729
doc-pgr_drivingDistance
- doc-pgr_drivingdistance-v2
- issue729
)],
'documentation' => [qw(
doc-pgr_drivingDistance
- doc-pgr_drivingdistance-v2
)]
},
# 'vpg-vpgis' => {}, # for version specific tests
diff --git a/src/internalQueryTests/src/testXYedges.c b/src/internalQueryTests/src/testXYedges.c
index 57617c3..955e7b3 100644
--- a/src/internalQueryTests/src/testXYedges.c
+++ b/src/internalQueryTests/src/testXYedges.c
@@ -27,14 +27,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
+#include "c_common/postgres_connection.h"
#include "./testXYedges_driver.h"
+#include "c_common/edges_input.h"
+#include "c_common/debug_macro.h"
+
PGDLLEXPORT Datum testXYedges(PG_FUNCTION_ARGS);
diff --git a/src/internalQueryTests/src/testXYedges_driver.cpp b/src/internalQueryTests/src/testXYedges_driver.cpp
index c88241e..4082821 100644
--- a/src/internalQueryTests/src/testXYedges_driver.cpp
+++ b/src/internalQueryTests/src/testXYedges_driver.cpp
@@ -37,7 +37,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include "./../../dijkstra/src/pgr_dijkstra.hpp"
#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
/************************************************************
edges_sql TEXT
diff --git a/src/internalQueryTests/src/testXYedges_driver.h b/src/internalQueryTests/src/testXYedges_driver.h
index 1ff4672..64a7199 100644
--- a/src/internalQueryTests/src/testXYedges_driver.h
+++ b/src/internalQueryTests/src/testXYedges_driver.h
@@ -29,7 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#ifndef SRC_INTERNALQUERYTESTS_SRC_TESTXYEDGES_DRIVER_H_
#define SRC_INTERNALQUERYTESTS_SRC_TESTXYEDGES_DRIVER_H_
-#include "./../../common/src/pgr_types.h"
+#include "c_types/pgr_edge_xy_t.h"
#ifdef __cplusplus
extern "C" {
diff --git a/src/internalQueryTests/src/test_c_edges.c b/src/internalQueryTests/src/test_c_edges.c
index 42db34c..c243bf8 100644
--- a/src/internalQueryTests/src/test_c_edges.c
+++ b/src/internalQueryTests/src/test_c_edges.c
@@ -27,12 +27,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
+#include "c_common/postgres_connection.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
+#include "c_common/debug_macro.h"
+
+#include "c_common/edges_input.h"
#include "./test_c_edges_driver.h"
diff --git a/src/internalQueryTests/src/test_c_edges_driver.cpp b/src/internalQueryTests/src/test_c_edges_driver.cpp
index 617f919..ac36cc8 100644
--- a/src/internalQueryTests/src/test_c_edges_driver.cpp
+++ b/src/internalQueryTests/src/test_c_edges_driver.cpp
@@ -37,7 +37,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include "./../../dijkstra/src/pgr_dijkstra.hpp"
#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
/************************************************************
edges_sql TEXT
diff --git a/src/internalQueryTests/src/test_c_edges_driver.h b/src/internalQueryTests/src/test_c_edges_driver.h
index ec01d36..0c5e711 100644
--- a/src/internalQueryTests/src/test_c_edges_driver.h
+++ b/src/internalQueryTests/src/test_c_edges_driver.h
@@ -29,7 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#ifndef SRC_TESTCEDGES_SRC_TEST_C_EDGES_DRIVER_H_
#define SRC_TESTCEDGES_SRC_TEST_C_EDGES_DRIVER_H_
-#include "./../../common/src/pgr_types.h"
+#include "c_types/pgr_edge_t.h"
#ifdef __cplusplus
extern "C" {
diff --git a/src/internalQueryTests/src/test_matrixRows.c b/src/internalQueryTests/src/test_matrixRows.c
index 97e172f..d753e9c 100644
--- a/src/internalQueryTests/src/test_matrixRows.c
+++ b/src/internalQueryTests/src/test_matrixRows.c
@@ -27,13 +27,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
+#include "c_common/postgres_connection.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/matrixRows_input.h"
+#include "c_common/matrixRows_input.h"
+
+#include "c_common/debug_macro.h"
#include "./test_matrixRows_driver.h"
PGDLLEXPORT Datum test_matrixRows(PG_FUNCTION_ARGS);
diff --git a/src/internalQueryTests/src/test_matrixRows_driver.h b/src/internalQueryTests/src/test_matrixRows_driver.h
index a26cd0a..beac198 100644
--- a/src/internalQueryTests/src/test_matrixRows_driver.h
+++ b/src/internalQueryTests/src/test_matrixRows_driver.h
@@ -30,7 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#define SRC_INTERNALQUERYTESTS_SRC_TEST_MATRIXROWS_DRIVER_H_
#pragma once
-#include "./../../common/src/pgr_types.h"
+#include "c_types/matrix_cell_t.h"
#ifdef __cplusplus
extern "C" {
diff --git a/src/kdijkstra/doc/doc-kdijkstra.queries b/src/kdijkstra/doc/doc-kdijkstra.queries
deleted file mode 100644
index 5a31979..0000000
--- a/src/kdijkstra/doc/doc-kdijkstra.queries
+++ /dev/null
@@ -1,52 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_kdijkstraCost(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 10, array[4,12], false, false);
-NOTICE: Deprecated function. Use pgr_dijkstraCost instead.
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 10 | 4 | 4
- 1 | 10 | 12 | 2
-(2 rows)
-
--- q2
-SELECT * FROM pgr_kdijkstraPath(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 10, array[4,12], false, false);
-NOTICE: Deprecated function: Use pgr_dijkstra instead.
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 0 | 4 | 10 | 12 | 1
- 1 | 4 | 11 | 13 | 1
- 2 | 4 | 12 | 15 | 1
- 3 | 4 | 9 | 16 | 1
- 4 | 4 | 4 | -1 | 0
- 5 | 12 | 10 | 12 | 1
- 6 | 12 | 11 | 13 | 1
- 7 | 12 | 12 | -1 | 0
-(8 rows)
-
--- q3
-SELECT id1 AS path, st_AStext(st_linemerge(st_union(b.the_geom))) AS the_geom
- FROM pgr_kdijkstraPath(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 10, array[4,12], false, false
- ) a,
- edge_table b
-WHERE a.id3=b.id
-GROUP by id1
-ORDER by id1;
-NOTICE: Deprecated function: Use pgr_dijkstra instead.
- path | the_geom
-------+---------------------------------
- 4 | LINESTRING(2 3,3 3,4 3,4 2,4 1)
- 12 | LINESTRING(2 3,3 3,4 3)
-(2 rows)
-
--- q4
-ROLLBACK;
-ROLLBACK
diff --git a/src/kdijkstra/sql/CMakeLists.txt b/src/kdijkstra/sql/CMakeLists.txt
deleted file mode 100644
index 933cd12..0000000
--- a/src/kdijkstra/sql/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/kdijkstra-V2.2.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/kdijkstra/sql/kdijkstra-V2.2.sql b/src/kdijkstra/sql/kdijkstra-V2.2.sql
deleted file mode 100644
index 953d9bb..0000000
--- a/src/kdijkstra/sql/kdijkstra-V2.2.sql
+++ /dev/null
@@ -1,195 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-
-CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
- sql text,
- source INTEGER,
- targets INTEGER ARRAY,
- directed BOOLEAN,
- has_rcost BOOLEAN)
- RETURNS SETOF pgr_costResult3 AS
- $BODY$
- DECLARE
- has_reverse BOOLEAN;
- new_sql TEXT;
- result pgr_costResult3;
- tmp pgr_costResult3;
- sseq INTEGER;
- i INTEGER;
- BEGIN
- RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
- has_reverse =_pgr_parameter_check('dijkstra', sql, false);
- new_sql = sql;
- IF (array_ndims(targets) != 1) THEN
- raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
- USING ERRCODE = 'XX000';
- END IF;
-
- IF (has_reverse != has_rcost) THEN
- IF (has_reverse) THEN
- new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
- ELSE
- raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
- USING ERRCODE = 'XX000';
- END IF;
- END IF;
- SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
-
- sseq = 0; i = 1;
- FOR result IN
- SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
- FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
- WHILE (result.id1 != targets[i]) LOOP
- tmp.seq = sseq;
- tmp.id1 = targets[i];
- IF (targets[i] = source) THEN
- tmp.id2 = source;
- tmp.cost =0;
- ELSE
- tmp.id2 = 0;
- tmp.cost = -1;
- END IF;
- tmp.id3 = -1;
- RETURN next tmp;
- i = i + 1;
- sseq = sseq + 1;
- END LOOP;
- IF (result.id1 = targets[i] AND result.id3 != -1) THEN
- result.seq = sseq;
- RETURN next result;
- sseq = sseq + 1;
- CONTINUE;
- END IF;
- IF (result.id1 = targets[i] AND result.id3 = -1) THEN
- result.seq = sseq;
- RETURN next result;
- i = i + 1;
- sseq = sseq + 1;
- CONTINUE;
- END IF;
- END LOOP;
- WHILE (i <= array_length(targets,1)) LOOP
- tmp.seq = sseq;
- tmp.id1 = targets[i];
- IF (targets[i] = source) THEN
- tmp.id2 = source;
- tmp.cost = 0;
- ELSE
- tmp.id2 = 0;
- tmp.cost = -1;
- END IF;
- tmp.id3 = -1;
- RETURN next tmp;
- i = i + 1;
- sseq = sseq + 1;
- END LOOP;
-
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
-CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
- sql text,
- source INTEGER,
- targets INTEGER array,
- directed BOOLEAN,
- has_rcost BOOLEAN)
-RETURNS SETOF pgr_costResult AS
-$BODY$
-DECLARE
-has_reverse BOOLEAN;
-new_sql TEXT;
-result pgr_costResult;
-tmp pgr_costResult;
-sseq INTEGER;
-i INTEGER;
-BEGIN
- RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
- has_reverse =_pgr_parameter_check('dijkstra', sql, false);
- new_sql = sql;
- IF (array_ndims(targets) != 1) THEN
- raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
- USING ERRCODE = 'XX000';
- END IF;
-
-
- IF (has_reverse != has_rcost) THEN
- IF (has_reverse) THEN
- new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
- ELSE
- RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
- USING ERRCODE = 'XX000';
- END IF;
- END IF;
-
- SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
-
- sseq = 0; i = 1;
- FOR result IN
- SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
- FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
- WHILE (result.id2 != targets[i]) LOOP
- tmp.seq = sseq;
- tmp.id1 = source;
- tmp.id2 = targets[i];
- IF (targets[i] = source) THEN
- tmp.cost = 0;
- ELSE
- tmp.cost = -1;
- END IF;
- RETURN next tmp;
- i = i + 1;
- sseq = sseq + 1;
- END LOOP;
- IF (result.id2 = targets[i]) THEN
- result.seq = sseq;
- RETURN next result;
- i = i + 1;
- sseq = sseq + 1;
- END IF;
- END LOOP;
- WHILE (i <= array_length(targets,1)) LOOP
- tmp.seq = sseq;
- tmp.id1 = source;
- tmp.id2 = targets[i];
- IF (targets[i] = source) THEN
- tmp.cost = 0;
- ELSE
- tmp.cost = -1;
- END IF;
- RETURN next tmp;
- i = i + 1;
- sseq = sseq + 1;
- END LOOP;
-
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
diff --git a/src/kdijkstra/test/doc-kdijkstra.result b/src/kdijkstra/test/doc-kdijkstra.result
deleted file mode 100644
index 2f98464..0000000
--- a/src/kdijkstra/test/doc-kdijkstra.result
+++ /dev/null
@@ -1,19 +0,0 @@
--- q1
-NOTICE: Deprecated function. Use pgr_dijkstraCost instead.
-0|10|4|4
-1|10|12|2
--- q2
-NOTICE: Deprecated function: Use pgr_dijkstra instead.
-0|4|10|12|1
-1|4|11|13|1
-2|4|12|15|1
-3|4|9|16|1
-4|4|4|-1|0
-5|12|10|12|1
-6|12|11|13|1
-7|12|12|-1|0
--- q3
-NOTICE: Deprecated function: Use pgr_dijkstra instead.
-4|LINESTRING(2 3,3 3,4 3,4 2,4 1)
-12|LINESTRING(2 3,3 3,4 3)
--- q4
diff --git a/src/kdijkstra/test/doc-kdijkstra.test.sql b/src/kdijkstra/test/doc-kdijkstra.test.sql
deleted file mode 100644
index 8604973..0000000
--- a/src/kdijkstra/test/doc-kdijkstra.test.sql
+++ /dev/null
@@ -1,24 +0,0 @@
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
--- PGR_kdijkstraPath
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-\echo -- q1
-SELECT * FROM pgr_kdijkstraCost(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 10, array[4,12], false, false);
-\echo -- q2
-SELECT * FROM pgr_kdijkstraPath(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 10, array[4,12], false, false);
-\echo -- q3
-SELECT id1 AS path, st_AStext(st_linemerge(st_union(b.the_geom))) AS the_geom
- FROM pgr_kdijkstraPath(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
- 10, array[4,12], false, false
- ) a,
- edge_table b
-WHERE a.id3=b.id
-GROUP by id1
-ORDER by id1;
-\echo -- q4
diff --git a/src/kdijkstra/test/test.conf b/src/kdijkstra/test/test.conf
deleted file mode 100644
index ebbd3d9..0000000
--- a/src/kdijkstra/test/test.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/perl -w
-
-%main::tests = (
- 'any' => {
- 'comment' => 'KDijkstra test for any versions.',
- 'data' => [qw(
- )],
-
- 'tests' => [qw(
- doc-kdijkstra
- )],
-
- 'documentation' => [qw(
- doc-kdijkstra
-
- )],
-
- },
-# 'vpg-vpgis' => {}, # for version specific tests
-# '8-1' => {}, # for pg 8.x and postgis 1.x
-# '9.2-2.1' => {}, # for pg 9.2 and postgis 2.1
-);
-
-1;
diff --git a/src/ksp/doc/KSP-category.rst b/src/ksp/doc/KSP-category.rst
deleted file mode 100644
index ba23ad9..0000000
--- a/src/ksp/doc/KSP-category.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-
-.. _KSP:
-
-KSP Category
-===============================================================================
-
-.. index from here
-
-* :ref:`pgr_KSP` - Driving Distance based on pgr_dijkstra
-* :ref:`pgr_withPointsKSP` - Driving Distance based on pgr_dijkstra
-
-.. index to here
-
-
diff --git a/src/ksp/doc/doc-ksp-v2.queries b/src/ksp/doc/doc-ksp-v2.queries
deleted file mode 100644
index d6885b1..0000000
--- a/src/ksp/doc/doc-ksp-v2.queries
+++ /dev/null
@@ -1,51 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM pgr_ksp(
- 'SELECT id, source, target, cost FROM edge_table order by id',
- 7, 12, 2, false
- );
-NOTICE: Deprecated function
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 0 | 0 | 7 | 6 | 1
- 1 | 0 | 8 | 7 | 1
- 2 | 0 | 5 | 8 | 1
- 3 | 0 | 6 | 9 | 1
- 4 | 0 | 9 | 15 | 1
- 5 | 0 | 12 | -1 | 0
- 6 | 1 | 7 | 6 | 1
- 7 | 1 | 8 | 7 | 1
- 8 | 1 | 5 | 8 | 1
- 9 | 1 | 6 | 11 | 1
- 10 | 1 | 11 | 13 | 1
- 11 | 1 | 12 | -1 | 0
-(12 rows)
-
---q2
-SELECT * FROM pgr_ksp(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table order by id',
- 7, 12, 2, true
- );
-NOTICE: Deprecated function
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 0 | 0 | 7 | 6 | 1
- 1 | 0 | 8 | 7 | 1
- 2 | 0 | 5 | 8 | 1
- 3 | 0 | 6 | 9 | 1
- 4 | 0 | 9 | 15 | 1
- 5 | 0 | 12 | -1 | 0
- 6 | 1 | 7 | 6 | 1
- 7 | 1 | 8 | 7 | 1
- 8 | 1 | 5 | 8 | 1
- 9 | 1 | 6 | 11 | 1
- 10 | 1 | 11 | 13 | 1
- 11 | 1 | 12 | -1 | 0
-(12 rows)
-
---q3
-ROLLBACK;
-ROLLBACK
diff --git a/src/ksp/doc/doc-ksp.queries b/src/ksp/doc/doc-ksp.queries
deleted file mode 100644
index c24eeb1..0000000
--- a/src/ksp/doc/doc-ksp.queries
+++ /dev/null
@@ -1,294 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 12, 2,
- true
- );
-NOTICE: Deprecated function
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 0 | 0 | 2 | 4 | 1
- 1 | 0 | 5 | 8 | 1
- 2 | 0 | 6 | 9 | 1
- 3 | 0 | 9 | 15 | 1
- 4 | 0 | 12 | -1 | 0
- 5 | 1 | 2 | 4 | 1
- 6 | 1 | 5 | 8 | 1
- 7 | 1 | 6 | 11 | 1
- 8 | 1 | 11 | 13 | 1
- 9 | 1 | 12 | -1 | 0
-(10 rows)
-
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 12, 2,
- directed:=true
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 4 | 1 | 0
- 2 | 1 | 2 | 5 | 8 | 1 | 1
- 3 | 1 | 3 | 6 | 9 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
-(10 rows)
-
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 12, 2
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 4 | 1 | 0
- 2 | 1 | 2 | 5 | 8 | 1 | 1
- 3 | 1 | 3 | 6 | 9 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
-(10 rows)
-
---q2
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 12, 2
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 4 | 1 | 0
- 2 | 1 | 2 | 5 | 8 | 1 | 1
- 3 | 1 | 3 | 6 | 9 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
-(10 rows)
-
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 12, 2, heap_paths:=true
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 4 | 1 | 0
- 2 | 1 | 2 | 5 | 8 | 1 | 1
- 3 | 1 | 3 | 6 | 9 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
- 11 | 3 | 1 | 2 | 4 | 1 | 0
- 12 | 3 | 2 | 5 | 10 | 1 | 1
- 13 | 3 | 3 | 10 | 12 | 1 | 2
- 14 | 3 | 4 | 11 | 13 | 1 | 3
- 15 | 3 | 5 | 12 | -1 | 0 | 4
-(15 rows)
-
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 12, 2, true, true
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 4 | 1 | 0
- 2 | 1 | 2 | 5 | 8 | 1 | 1
- 3 | 1 | 3 | 6 | 9 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
- 11 | 3 | 1 | 2 | 4 | 1 | 0
- 12 | 3 | 2 | 5 | 10 | 1 | 1
- 13 | 3 | 3 | 10 | 12 | 1 | 2
- 14 | 3 | 4 | 11 | 13 | 1 | 3
- 15 | 3 | 5 | 12 | -1 | 0 | 4
-(15 rows)
-
---q3
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 12, 2, directed:=false
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 2 | 1 | 0
- 2 | 1 | 2 | 3 | 3 | 1 | 1
- 3 | 1 | 3 | 4 | 16 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
-(10 rows)
-
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 12, 2, false, true
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 2 | 1 | 0
- 2 | 1 | 2 | 3 | 3 | 1 | 1
- 3 | 1 | 3 | 4 | 16 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
- 11 | 3 | 1 | 2 | 4 | 1 | 0
- 12 | 3 | 2 | 5 | 10 | 1 | 1
- 13 | 3 | 3 | 10 | 12 | 1 | 2
- 14 | 3 | 4 | 11 | 13 | 1 | 3
- 15 | 3 | 5 | 12 | -1 | 0 | 4
- 16 | 4 | 1 | 2 | 4 | 1 | 0
- 17 | 4 | 2 | 5 | 10 | 1 | 1
- 18 | 4 | 3 | 10 | 12 | 1 | 2
- 19 | 4 | 4 | 11 | 11 | 1 | 3
- 20 | 4 | 5 | 6 | 9 | 1 | 4
- 21 | 4 | 6 | 9 | 15 | 1 | 5
- 22 | 4 | 7 | 12 | -1 | 0 | 6
-(22 rows)
-
---q4
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 3, 2
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
-(0 rows)
-
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 12, 2
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 4 | 1 | 0
- 2 | 1 | 2 | 5 | 8 | 1 | 1
- 3 | 1 | 3 | 6 | 9 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
-(10 rows)
-
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 12, 2, heap_paths:=true
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 4 | 1 | 0
- 2 | 1 | 2 | 5 | 8 | 1 | 1
- 3 | 1 | 3 | 6 | 9 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
- 11 | 3 | 1 | 2 | 4 | 1 | 0
- 12 | 3 | 2 | 5 | 10 | 1 | 1
- 13 | 3 | 3 | 10 | 12 | 1 | 2
- 14 | 3 | 4 | 11 | 13 | 1 | 3
- 15 | 3 | 5 | 12 | -1 | 0 | 4
-(15 rows)
-
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 12, 2, true, true
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 4 | 1 | 0
- 2 | 1 | 2 | 5 | 8 | 1 | 1
- 3 | 1 | 3 | 6 | 9 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
- 11 | 3 | 1 | 2 | 4 | 1 | 0
- 12 | 3 | 2 | 5 | 10 | 1 | 1
- 13 | 3 | 3 | 10 | 12 | 1 | 2
- 14 | 3 | 4 | 11 | 13 | 1 | 3
- 15 | 3 | 5 | 12 | -1 | 0 | 4
-(15 rows)
-
---q5
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 12, 2, directed:=false
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 4 | 1 | 0
- 2 | 1 | 2 | 5 | 8 | 1 | 1
- 3 | 1 | 3 | 6 | 9 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
-(10 rows)
-
-SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 12, 2, directed:=false, heap_paths:=true
- );
- seq | path_id | path_seq | node | edge | cost | agg_cost
------+---------+----------+------+------+------+----------
- 1 | 1 | 1 | 2 | 4 | 1 | 0
- 2 | 1 | 2 | 5 | 8 | 1 | 1
- 3 | 1 | 3 | 6 | 9 | 1 | 2
- 4 | 1 | 4 | 9 | 15 | 1 | 3
- 5 | 1 | 5 | 12 | -1 | 0 | 4
- 6 | 2 | 1 | 2 | 4 | 1 | 0
- 7 | 2 | 2 | 5 | 8 | 1 | 1
- 8 | 2 | 3 | 6 | 11 | 1 | 2
- 9 | 2 | 4 | 11 | 13 | 1 | 3
- 10 | 2 | 5 | 12 | -1 | 0 | 4
- 11 | 3 | 1 | 2 | 4 | 1 | 0
- 12 | 3 | 2 | 5 | 10 | 1 | 1
- 13 | 3 | 3 | 10 | 12 | 1 | 2
- 14 | 3 | 4 | 11 | 13 | 1 | 3
- 15 | 3 | 5 | 12 | -1 | 0 | 4
-(15 rows)
-
---q6
-ROLLBACK;
-ROLLBACK
diff --git a/src/ksp/doc/pgr_KSP.rst b/src/ksp/doc/pgr_KSP.rst
deleted file mode 100644
index 8820cad..0000000
--- a/src/ksp/doc/pgr_KSP.rst
+++ /dev/null
@@ -1,181 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_ksp:
-
-pgr_KSP
-===============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_KSP`` — Returns the "K" shortest paths.
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.0.0
-
-* Signature change 2.1.0
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-The K shortest path routing algorithm based on Yen's algorithm. "K" is the number of shortest paths desired.
-
-Signature Summary
--------------------------------------------------------------------------------
-
-.. code-block:: sql
-
- pgr_KSP(edges_sql, start_vid, end_vid, K);
- pgr_KSP(edges_sql, start_vid, end_vid, k, directed, heap_paths)
- RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost) or EMPTY SET
-
-Signatures
--------------------------------------------------------------------------------
-
-.. index::
- single: KSP(Minimal Signature)
-
-Minimal Signature
-..................
-
-.. code-block:: sql
-
- pgr_ksp(edges_sql, start_vid, end_vid, K);
- RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost) or EMPTY SET
-
-
-.. index::
- single: ksp(Complete Signature)
-
-Complete Signature
-...................
-
-.. code-block:: sql
-
- pgr_KSP(edges_sql, start_vid, end_vid, k, directed, heap_paths)
- RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost) or EMPTY SET
-
-
-Description of the Signatures
--------------------------------------------------------------------------------
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-Description of the parameters of the signatures
-..................................................
-
-============== ============ =================================================
-Column Type Description
-============== ============ =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**start_vid** ``BIGINT`` Identifier of the starting vertex.
-**end_vid** ``BIGINT`` Identifier of the ending vertex.
-**k** ``INTEGER`` The desiered number of paths.
-**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
-**heap_paths** ``BOOLEAN`` (optional). When ``true`` returns all the paths stored in the process heap. Default is ``false`` which only returns ``k`` paths.
-============== ============ =================================================
-
-Roughly, if the shortest path has ``N`` edges, the heap will contain about than ``N * k`` paths for small value of ``k`` and ``k > 1``.
-
-
-
-Description of the return values
-...................................
-
-Returns set of ``(seq, path_seq, path_id, node, edge, cost, agg_cost)``
-
-============== =========== =================================================
-Column Type Description
-============== =========== =================================================
-**seq** ``INTEGER`` Sequential value starting from **1**.
-**path_seq** ``INTEGER`` Relative position in the path of ``node`` and ``edge``. Has value **1** for the beginning of a path.
-**path_id** ``BIGINT`` Path identifier. The ordering of the paths For two paths i, j if i < j then agg_cost(i) <= agg_cost(j).
-**node** ``BIGINT`` Identifier of the node in the path.
-**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the route.
-**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence.
-**agg_cost** ``FLOAT`` Aggregate cost from ``start_vid`` to ``node``.
-============== =========== =================================================
-
-
-.. warning:: During the transition to 3.0, because pgr_ksp version 2.0 doesn't have defined a directed flag nor a heap_path flag, when pgr_ksp is used with only one flag version 2.0 signature will be used.
-
-
-Additional Examples
-------------------------------------------------------------------------------------------
-
-Examples to handle the one flag to choose signatures
-.........................................................................................
-
-The examples in this section use the following :ref:`fig1`
-
-.. literalinclude:: doc-ksp.queries
- :start-after: --q1
- :end-before: --q2
-
-
-Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
-.........................................................................................
-
-The examples in this section use the following :ref:`fig1`
-
-.. literalinclude:: doc-ksp.queries
- :start-after: --q2
- :end-before: --q3
-
-
-
-Examples for queries marked as ``undirected`` with ``cost`` and ``reverse_cost`` columns
-.........................................................................................
-
-The examples in this section use the following :ref:`fig2`
-
-.. literalinclude:: doc-ksp.queries
- :start-after: --q3
- :end-before: --q4
-
-
-Examples for queries marked as ``directed`` with ``cost`` column
-.........................................................................................
-
-The examples in this section use the following :ref:`fig3`
-
-
-.. literalinclude:: doc-ksp.queries
- :start-after: --q4
- :end-before: --q5
-
-
-Examples for queries marked as ``undirected`` with ``cost`` column
-.........................................................................................
-
-The examples in this section use the following :ref:`fig4`
-
-.. literalinclude:: doc-ksp.queries
- :start-after: --q5
- :end-before: --q6
-
-See Also
--------------------------------------------------------------------------------
-
-* http://en.wikipedia.org/wiki/K_shortest_path_routing
-* :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
diff --git a/src/ksp/sql/CMakeLists.txt b/src/ksp/sql/CMakeLists.txt
deleted file mode 100644
index c45978a..0000000
--- a/src/ksp/sql/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/routing_ksp.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/withPoints_ksp.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
-
diff --git a/src/ksp/sql/routing_ksp.sql b/src/ksp/sql/routing_ksp.sql
deleted file mode 100644
index 13a226f..0000000
--- a/src/ksp/sql/routing_ksp.sql
+++ /dev/null
@@ -1,78 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: routing_ksp.sql
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
- OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'kshortest_path'
- LANGUAGE c STABLE STRICT;
-
--- V2 the graph is directed and there are no heap paths
-CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
- RETURNS SETOF pgr_costresult3 AS
- $BODY$
- DECLARE
- has_reverse boolean;
- sql TEXT;
- BEGIN
- RAISE NOTICE 'Deprecated function';
- has_reverse =_pgr_parameter_check('ksp', edges_sql::text, false);
- sql = edges_sql;
- IF (has_reverse != has_rcost) THEN
- IF (has_rcost) THEN
- -- user says that it has reverse_cost but its not true
- RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
- ELSE
- -- user says that it does not have reverse_cost but it does have it
- -- to ignore we remove reverse_cost from the query
- sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
- END IF;
- END IF;
-
- RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
- FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100
- ROWS 1000;
-
-
-CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
- directed boolean default true, heap_paths boolean default false,
- --directed boolean, heap_paths boolean,
- OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
- RETURNS SETOF RECORD AS
- $BODY$
- DECLARE
- BEGIN
- RETURN query SELECT *
- FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100
- ROWS 1000;
-
diff --git a/src/ksp/sql/withPoints_ksp.sql b/src/ksp/sql/withPoints_ksp.sql
deleted file mode 100644
index eaa11a0..0000000
--- a/src/ksp/sql/withPoints_ksp.sql
+++ /dev/null
@@ -1,44 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: withPoints_ksp.sql
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
- edges_sql TEXT,
- points_sql TEXT,
- start_pid BIGINT,
- end_pid BIGINT,
- k INTEGER,
-
- directed BOOLEAN DEFAULT TRUE,
- heap_paths BOOLEAN DEFAULT FALSE,
- driving_side CHAR DEFAULT 'b',
- details BOOLEAN DEFAULT FALSE,
-
- OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
- OUT node BIGINT, OUT edge BIGINT,
- OUT cost FLOAT, OUT agg_cost FLOAT)
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'withPoints_ksp'
- LANGUAGE c STABLE STRICT;
-
diff --git a/src/ksp/src/ksp.c b/src/ksp/src/ksp.c
index b62b6a3..7e14334 100644
--- a/src/ksp/src/ksp.c
+++ b/src/ksp/src/ksp.c
@@ -22,16 +22,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/postgres_connection.h"
-#include "./../../common/src/edges_input.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
-#include "./ksp_driver.h"
+#include "c_common/edges_input.h"
+
+#include "drivers/yen/ksp_driver.h"
PGDLLEXPORT Datum kshortest_path(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(kshortest_path);
diff --git a/src/ksp/src/ksp_driver.cpp b/src/ksp/src/ksp_driver.cpp
index 0e845c8..38c146d 100644
--- a/src/ksp/src/ksp_driver.cpp
+++ b/src/ksp/src/ksp_driver.cpp
@@ -23,19 +23,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./ksp_driver.h"
+#include "drivers/yen/ksp_driver.h"
#include <sstream>
#include <deque>
#include <vector>
-#include "./pgr_ksp.hpp"
+#include "yen/pgr_ksp.hpp"
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
-#include "./../../common/src/pgr_base_graph.hpp"
+#include "cpp_common/pgr_base_graph.hpp"
diff --git a/src/ksp/src/ksp_driver.h b/src/ksp/src/ksp_driver.h
deleted file mode 100644
index cfc85ce..0000000
--- a/src/ksp/src/ksp_driver.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: ksp_driver.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_KSP_SRC_KSP_DRIVER_H_
-#define SRC_KSP_SRC_KSP_DRIVER_H_
-
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- void do_pgr_ksp(
- pgr_edge_t *data_edges,
- size_t total_edges,
- int64_t start_vid,
- int64_t end_vid,
- int no_paths,
- bool directed,
- bool heap_paths,
- General_path_element_t **return_tuples,
- size_t *return_count,
- char ** log_msg,
- char ** notice_msg,
- char ** err_msg);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_KSP_SRC_KSP_DRIVER_H_
diff --git a/src/ksp/src/pgr_ksp.cpp b/src/ksp/src/pgr_ksp.cpp
deleted file mode 100644
index ed692a9..0000000
--- a/src/ksp/src/pgr_ksp.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pgr_ksp.cpp
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-#include <deque>
-#include <set>
-
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/basePath_SSEC.hpp"
-
-template < class G >
-void Pgr_ksp< G >::clear() {
- m_Heap.clear();
-}
-
-template < class G >
-void Pgr_ksp< G >::getFirstSolution(G &graph) {
- Path path;
-
- Pgr_dijkstra< G > fn_dijkstra;
- path = fn_dijkstra.dijkstra(graph, m_start, m_end);
-
- if (path.empty()) return;
- curr_result_path = path;
- m_ResultSet.insert(curr_result_path);
-}
-
-template < class G>
-std::deque<Path>
-Pgr_ksp< G >::Yen(G &graph,
- int64_t start_vertex, int64_t end_vertex, int K, bool heap_paths) {
- /*
- * No path: already in destination
- */
- if ((start_vertex == end_vertex) || (K == 0)) {
- return std::deque<Path>();
- }
- /*
- * no path: disconnected vertices
- */
- if (!graph.has_vertex(start_vertex)
- || !graph.has_vertex(end_vertex)) {
- return std::deque<Path>();
- }
- m_ResultSet.clear();
- m_Heap.clear();
-
- v_source = graph.get_V(start_vertex);
- v_target = graph.get_V(end_vertex);
- m_start = start_vertex;
- m_end = end_vertex;
- executeYen(graph, K);
-
- while (!m_ResultSet.empty()) {
- m_Heap.insert(*m_ResultSet.begin());
- m_ResultSet.erase(m_ResultSet.begin());
- }
- std::deque<Path> l_ResultList(m_Heap.begin(), m_Heap.end());
-
- std::stable_sort(l_ResultList.begin(), l_ResultList.end(),
- [](const Path &left, const Path &right) -> bool {
- for (size_t i = 0 ; i < (std::min)(left.size(), right.size()); ++i) {
- if (left[i].node < right[i].node) return true;
- if (left[i].node > right[i].node) return false;
- }
- return false;
- });
-
- std::stable_sort(l_ResultList.begin(), l_ResultList.end(),
- [](const Path &left, const Path &right) {
- return left.size() < right.size();});
-
- if (!heap_paths && l_ResultList.size() > (size_t) K)
- l_ResultList.resize(K);
-
- return l_ResultList;
-}
-
-
-template < class G >
-void Pgr_ksp< G >::removeVertices(G &graph, const Path &subpath) {
- for (const auto &e : subpath)
- graph.disconnect_vertex(e.node);
-}
-
-template < class G >
-void Pgr_ksp< G >::doNextCycle(G &graph) {
-
-
- int64_t spurNodeId;
-
-
- for (unsigned int i = 0; i < curr_result_path.size(); ++i) {
-
- spurNodeId = curr_result_path[i].node;
-
- auto rootPath = curr_result_path.getSubpath(i);
-
- for (const auto &path : m_ResultSet) {
- if (path.isEqual(rootPath)) {
- if (path.size() > i + 1) {
- graph.disconnect_edge(path[i].node, // from
- path[i + 1].node); // to
- }
- }
- }
-
- removeVertices(graph, rootPath);
-
- Pgr_dijkstra< G > fn_dijkstra;
- auto spurPath = fn_dijkstra.dijkstra(graph, spurNodeId, m_end);
-
- if (spurPath.size() > 0) {
- rootPath.appendPath(spurPath);
- m_Heap.insert(rootPath);
- }
-
- graph.restore_graph();
- }
-}
-
-template < class G >
-void Pgr_ksp< G >::executeYen(G &graph, int K) {
- clear();
- getFirstSolution(graph);
-
- if (m_ResultSet.size() == 0) return; // no path found
-
- while (m_ResultSet.size() < (unsigned int) K) {
- doNextCycle(graph);
- if (m_Heap.empty()) break;
- curr_result_path = *m_Heap.begin();
- m_ResultSet.insert(curr_result_path);
- m_Heap.erase(m_Heap.begin());
- /*
- * without the next line withpointsKSP hungs with:
- * c++ 4.6
- * Debug mode
- */
-#ifndef NDEBUG
- log << "end of while heap size" << m_Heap.size();
-#endif
- }
-}
diff --git a/src/ksp/src/pgr_ksp.hpp b/src/ksp/src/pgr_ksp.hpp
deleted file mode 100644
index 88cf202..0000000
--- a/src/ksp/src/pgr_ksp.hpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pgr_ksp.hpp
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#pragma once
-
-#include "./../../dijkstra/src/pgr_dijkstra.hpp"
-
-#include <sstream>
-#include <deque>
-#include <vector>
-#include <set>
-#include <limits>
-
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/basePath_SSEC.hpp"
-
-template < class G >
-class Pgr_ksp {
- public:
- std::deque<Path> Yen(G &graph, int64_t source, int64_t target, int K, bool heap_paths);
- void clear();
-
- private:
- class compPaths {
- public:
- bool operator()(const Path &p1, const Path &p2) const {
- /*
- * less cost is best
- */
- if (p1.tot_cost() > p2.tot_cost())
- return false;
- if (p1.tot_cost() < p2.tot_cost())
- return true;
-
- pgassert(p1.tot_cost() == p2.tot_cost());
-
- // paths costs are equal now check by length
- if (p1.size() > p2.size())
- return false;
- if (p1.size() < p2.size())
- return true;
-
- pgassert(p1.tot_cost() == p2.tot_cost());
- pgassert(p1.size() == p2.size());
-
- // paths weights & lengths are equal now check by node ID
- unsigned int i;
- for (i = 0; i < p1.size(); i++) {
- if (p1[i].node > p2[i].node)
- return false;
- if (p1[i].node < p2[i].node)
- return true;
- }
-
- pgassert(p1.tot_cost() == p2.tot_cost());
- pgassert(p1.size() == p2.size());
-#ifdef NDEBUG
- for (i = 0; i < p1.size(); i++) {
- pgassert(p1[i].node == p2[i].node);
- }
-#endif
-
- // we got here and everything is equal
- return false;
- }
- };
-
- //! the actual algorithm
- void executeYen(G &graph, int top_k);
-
- /** @name Auxiliary function for yen's algorithm */
- ///@{
-
- //! Performs the first Dijkstra of the algorithm
- void getFirstSolution(G &graph);
- //! Performs the next cycle of the algorithm
- void doNextCycle(G &graph);
- //! stores in subPath the first i elements of path
- void removeVertices(G &graph, const Path &path);
- ///@}
-
- private:
- /** @name members */
- ///@{
- typedef typename G::V V;
- V v_source; //!< source descriptor
- V v_target; //!< target descriptor
- int64_t m_start; //!< source id
- int64_t m_end; //!< target id
-
- Path curr_result_path; //!< storage for the current result
-
- typedef std::set<Path, compPaths> pSet;
- pSet m_ResultSet; //!< ordered set of shortest paths
- pSet m_Heap; //!< the heap
-
- std::ostringstream log;
-};
-
-#include "./pgr_ksp.cpp"
-
diff --git a/src/ksp/src/withPoints_ksp.c b/src/ksp/src/withPoints_ksp.c
index 12ae5db..f5579ff 100644
--- a/src/ksp/src/withPoints_ksp.c
+++ b/src/ksp/src/withPoints_ksp.c
@@ -27,17 +27,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
#include "utils/array.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/points_input.h"
-#include "./../../withPoints/src/get_new_queries.h"
-#include "./withPoints_ksp_driver.h"
-#include "./../../common/src/debug_macro.h"
+#include "c_common/time_msg.h"
+#include "c_common/e_report.h"
+
+#include "c_common/edges_input.h"
+#include "c_common/points_input.h"
+
+#include "drivers/withPoints/get_new_queries.h"
+#include "drivers/yen/withPoints_ksp_driver.h"
+#include "c_common/debug_macro.h"
PGDLLEXPORT Datum withPoints_ksp(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(withPoints_ksp);
diff --git a/src/ksp/src/withPoints_ksp_driver.cpp b/src/ksp/src/withPoints_ksp_driver.cpp
index a42d099..a5acb9a 100644
--- a/src/ksp/src/withPoints_ksp_driver.cpp
+++ b/src/ksp/src/withPoints_ksp_driver.cpp
@@ -27,18 +27,18 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./withPoints_ksp_driver.h"
+#include "drivers/yen/withPoints_ksp_driver.h"
#include <sstream>
#include <deque>
#include <vector>
-#include "./pgr_ksp.hpp"
+#include "yen/pgr_ksp.hpp"
#include "./../../withPoints/src/pgr_withPoints.hpp"
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
// CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
diff --git a/src/ksp/src/withPoints_ksp_driver.h b/src/ksp/src/withPoints_ksp_driver.h
deleted file mode 100644
index 2d95c2a..0000000
--- a/src/ksp/src/withPoints_ksp_driver.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: withPoints_driver.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- // CREATE OR REPLACE FUNCTION pgr_withPointKsp(
- // edges_sql TEXT,
- // points_sql TEXT,
- // start_pid BIGINT,
- // end_pid BIGINT,
- // directed BOOLEAN DEFAULT true,
- int do_pgr_withPointsKsp(
- pgr_edge_t *edges, size_t total_edges,
- Point_on_edge_t *points, size_t total_points,
- pgr_edge_t *edges_of_points, size_t total_edges_of_points,
- int64_t start_pid,
- int64_t end_pid,
- int k,
- bool directed,
- bool heap_paths,
- char driving_side,
- bool details,
-
- General_path_element_t **return_tuples,
- size_t *return_count,
- char ** log_msg,
- char ** notice_msg,
- char ** err_msg);
-
-
-#ifdef __cplusplus
- }
-#endif
-
diff --git a/src/ksp/test/doc-ksp-v2.result b/src/ksp/test/doc-ksp-v2.result
deleted file mode 100644
index d0dc1a4..0000000
--- a/src/ksp/test/doc-ksp-v2.result
+++ /dev/null
@@ -1,29 +0,0 @@
---q1
-NOTICE: Deprecated function
-0|0|7|6|1
-1|0|8|7|1
-2|0|5|8|1
-3|0|6|9|1
-4|0|9|15|1
-5|0|12|-1|0
-6|1|7|6|1
-7|1|8|7|1
-8|1|5|8|1
-9|1|6|11|1
-10|1|11|13|1
-11|1|12|-1|0
---q2
-NOTICE: Deprecated function
-0|0|7|6|1
-1|0|8|7|1
-2|0|5|8|1
-3|0|6|9|1
-4|0|9|15|1
-5|0|12|-1|0
-6|1|7|6|1
-7|1|8|7|1
-8|1|5|8|1
-9|1|6|11|1
-10|1|11|13|1
-11|1|12|-1|0
---q3
diff --git a/src/ksp/test/doc-ksp-v2.test.sql b/src/ksp/test/doc-ksp-v2.test.sql
deleted file mode 100644
index 55f8e64..0000000
--- a/src/ksp/test/doc-ksp-v2.test.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-
-\echo --q1
-
-SELECT * FROM pgr_ksp(
- 'SELECT id, source, target, cost FROM edge_table order by id',
- 7, 12, 2, false
- );
-
-\echo --q2
-SELECT * FROM pgr_ksp(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table order by id',
- 7, 12, 2, true
- );
-
-\echo --q3
diff --git a/src/ksp/test/doc-ksp.result b/src/ksp/test/doc-ksp.result
index 488f146..3488172 100644
--- a/src/ksp/test/doc-ksp.result
+++ b/src/ksp/test/doc-ksp.result
@@ -1,174 +1,274 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-NOTICE: Deprecated function
-0|0|2|4|1
-1|0|5|8|1
-2|0|6|9|1
-3|0|9|15|1
-4|0|12|-1|0
-5|1|2|4|1
-6|1|5|8|1
-7|1|6|11|1
-8|1|11|13|1
-9|1|12|-1|0
-1|1|1|2|4|1|0
-2|1|2|5|8|1|1
-3|1|3|6|9|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-1|1|1|2|4|1|0
-2|1|2|5|8|1|1
-3|1|3|6|9|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2,
+ directed:=true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
--q2
-1|1|1|2|4|1|0
-2|1|2|5|8|1|1
-3|1|3|6|9|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-1|1|1|2|4|1|0
-2|1|2|5|8|1|1
-3|1|3|6|9|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-11|3|1|2|4|1|0
-12|3|2|5|10|1|1
-13|3|3|10|12|1|2
-14|3|4|11|13|1|3
-15|3|5|12|-1|0|4
-1|1|1|2|4|1|0
-2|1|2|5|8|1|1
-3|1|3|6|9|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-11|3|1|2|4|1|0
-12|3|2|5|10|1|1
-13|3|3|10|12|1|2
-14|3|4|11|13|1|3
-15|3|5|12|-1|0|4
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2, heap_paths:=true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+(15 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2, true, true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+(15 rows)
+
--q3
-1|1|1|2|2|1|0
-2|1|2|3|3|1|1
-3|1|3|4|16|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-1|1|1|2|2|1|0
-2|1|2|3|3|1|1
-3|1|3|4|16|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-11|3|1|2|4|1|0
-12|3|2|5|10|1|1
-13|3|3|10|12|1|2
-14|3|4|11|13|1|3
-15|3|5|12|-1|0|4
-16|4|1|2|4|1|0
-17|4|2|5|10|1|1
-18|4|3|10|12|1|2
-19|4|4|11|11|1|3
-20|4|5|6|9|1|4
-21|4|6|9|15|1|5
-22|4|7|12|-1|0|6
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2, directed:=false
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 1 | 2 | 3 | 3 | 1 | 1
+ 3 | 1 | 3 | 4 | 16 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 12, 2, false, true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 1 | 2 | 3 | 3 | 1 | 1
+ 3 | 1 | 3 | 4 | 16 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+ 16 | 4 | 1 | 2 | 4 | 1 | 0
+ 17 | 4 | 2 | 5 | 10 | 1 | 1
+ 18 | 4 | 3 | 10 | 12 | 1 | 2
+ 19 | 4 | 4 | 11 | 11 | 1 | 3
+ 20 | 4 | 5 | 6 | 9 | 1 | 4
+ 21 | 4 | 6 | 9 | 15 | 1 | 5
+ 22 | 4 | 7 | 12 | -1 | 0 | 6
+(22 rows)
+
--q4
-1|1|1|2|4|1|0
-2|1|2|5|8|1|1
-3|1|3|6|9|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-1|1|1|2|4|1|0
-2|1|2|5|8|1|1
-3|1|3|6|9|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-11|3|1|2|4|1|0
-12|3|2|5|10|1|1
-13|3|3|10|12|1|2
-14|3|4|11|13|1|3
-15|3|5|12|-1|0|4
-1|1|1|2|4|1|0
-2|1|2|5|8|1|1
-3|1|3|6|9|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-11|3|1|2|4|1|0
-12|3|2|5|10|1|1
-13|3|3|10|12|1|2
-14|3|4|11|13|1|3
-15|3|5|12|-1|0|4
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 3, 2
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+(0 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 12, 2
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 12, 2, heap_paths:=true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+(15 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 12, 2, true, true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+(15 rows)
+
--q5
-1|1|1|2|4|1|0
-2|1|2|5|8|1|1
-3|1|3|6|9|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-1|1|1|2|4|1|0
-2|1|2|5|8|1|1
-3|1|3|6|9|1|2
-4|1|4|9|15|1|3
-5|1|5|12|-1|0|4
-6|2|1|2|4|1|0
-7|2|2|5|8|1|1
-8|2|3|6|11|1|2
-9|2|4|11|13|1|3
-10|2|5|12|-1|0|4
-11|3|1|2|4|1|0
-12|3|2|5|10|1|1
-13|3|3|10|12|1|2
-14|3|4|11|13|1|3
-15|3|5|12|-1|0|4
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 12, 2, directed:=false
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+(10 rows)
+
+SELECT * FROM pgr_KSP(
+ 'SELECT id, source, target, cost FROM edge_table',
+ 2, 12, 2, directed:=false, heap_paths:=true
+ );
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 1 | 2 | 5 | 8 | 1 | 1
+ 3 | 1 | 3 | 6 | 9 | 1 | 2
+ 4 | 1 | 4 | 9 | 15 | 1 | 3
+ 5 | 1 | 5 | 12 | -1 | 0 | 4
+ 6 | 2 | 1 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 8 | 1 | 1
+ 8 | 2 | 3 | 6 | 11 | 1 | 2
+ 9 | 2 | 4 | 11 | 13 | 1 | 3
+ 10 | 2 | 5 | 12 | -1 | 0 | 4
+ 11 | 3 | 1 | 2 | 4 | 1 | 0
+ 12 | 3 | 2 | 5 | 10 | 1 | 1
+ 13 | 3 | 3 | 10 | 12 | 1 | 2
+ 14 | 3 | 4 | 11 | 13 | 1 | 3
+ 15 | 3 | 5 | 12 | -1 | 0 | 4
+(15 rows)
+
--q6
+ROLLBACK;
+ROLLBACK
diff --git a/src/ksp/test/doc-ksp.test.sql b/src/ksp/test/doc-ksp.test.sql
index e68f2c1..220db22 100644
--- a/src/ksp/test/doc-ksp.test.sql
+++ b/src/ksp/test/doc-ksp.test.sql
@@ -6,13 +6,6 @@
SELECT * FROM pgr_KSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 12, 2,
- true -- takes the (V2.0) signature (has_rcost = true and works on directed graph)
- );
-
-
- SELECT * FROM pgr_KSP(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
2, 12, 2,
directed:=true -- takes the new signature
);
diff --git a/src/ksp/test/ksp-network.result b/src/ksp/test/ksp-network.result
deleted file mode 100644
index 9620cb7..0000000
--- a/src/ksp/test/ksp-network.result
+++ /dev/null
@@ -1,2 +0,0 @@
-t|t|t
-t|t|t
diff --git a/src/ksp/test/ksp-network.test.sql b/src/ksp/test/ksp-network.test.sql
deleted file mode 100644
index 223e7ea..0000000
--- a/src/ksp/test/ksp-network.test.sql
+++ /dev/null
@@ -1,116 +0,0 @@
---
--- Generate 15 shortest paths between nodes 4 and 5
--- with auto detection
--- V3
---
---
--- Create a test data base
---
-
-DO $$
-DECLARE debuglevel TEXT;
-BEGIN
-EXECUTE 'show client_min_messages' into debuglevel;
-
-SET client_min_messages = WARNING;
-CREATE table nodes (
- id serial NOT NULL,
- vertex INTEGER NOT NULL,
- name text not NULL
-);
--- Add a geom column
-PERFORM addgeometrycolumn('','nodes','the_geom',3857,'POINT',2);
-
-CREATE table network (
- id serial NOT NULL,
- source INTEGER NOT NULL,
- target INTEGER NOT NULL,
- cost double precision,
- reverse_cost double precision
-);
--- Add a geom column
-PERFORM addgeometrycolumn('','network','the_geom',3857,'MULTILINESTRING',2);
--- Make the vertexs, location is not important in this example
-INSERT INTO nodes (vertex,the_geom,name) values (0,st_SetSRID(st_makepoint(0,0),3857),'Zero');
-INSERT INTO nodes (vertex,the_geom,name) values (1,st_SetSRID(st_makepoint(1,1),3857),'One');
-INSERT INTO nodes (vertex,the_geom,name) values (2,st_SetSRID(st_makepoint(2,2),3857),'Two');
-INSERT INTO nodes (vertex,the_geom,name) values (3,st_SetSRID(st_makepoint(3,3),3857),'Three');
-INSERT INTO nodes (vertex,the_geom,name) values (4,st_SetSRID(st_makepoint(4,4),3857),'Four');
-INSERT INTO nodes (vertex,the_geom,name) values (5,st_SetSRID(st_makepoint(4,6),3857),'Five');
-INSERT INTO nodes (vertex,the_geom,name) values (6,st_SetSRID(st_makepoint(6,5),3857),'Six');
-INSERT INTO nodes (vertex,the_geom,name) values (7,st_SetSRID(st_makepoint(7,2),3857),'Seven');
-INSERT INTO nodes (vertex,the_geom,name) values (8,st_SetSRID(st_makepoint(4,8),3857),'Eight');
-INSERT INTO nodes (vertex,the_geom,name) values (9,st_SetSRID(st_makepoint(2,8),3857),'Nine');
-INSERT INTO nodes (vertex,the_geom,name) values (10,st_SetSRID(st_makepoint(10,10),3857),'Ten');
-INSERT INTO nodes (vertex,the_geom,name) values (11,st_SetSRID(st_makepoint(1,10),3857),'Eleven');
-INSERT INTO nodes (vertex,the_geom,name) values (12,st_SetSRID(st_makepoint(4,12),3857),'Twelve');
-INSERT INTO nodes (vertex,the_geom,name) values (13,st_SetSRID(st_makepoint(2,12),3857),'Thirteen');
-
-INSERT INTO network(source,target) values(0,1);
-INSERT INTO network(source,target) values(0,2);
-INSERT INTO network(source,target) values(0,3);
-INSERT INTO network(source,target) values(1,0);
-INSERT INTO network(source,target) values(1,2);
-INSERT INTO network(source,target) values(1,7);
-INSERT INTO network(source,target) values(2,0);
-INSERT INTO network(source,target) values(2,1);
-INSERT INTO network(source,target) values(2,5);
-INSERT INTO network(source,target) values(3,0);
-INSERT INTO network(source,target) values(3,4);
-INSERT INTO network(source,target) values(3,10);
-INSERT INTO network(source,target) values(4,3);
-INSERT INTO network(source,target) values(4,6);
-INSERT INTO network(source,target) values(4,5);
-INSERT INTO network(source,target) values(5,2);
-INSERT INTO network(source,target) values(5,4);
-INSERT INTO network(source,target) values(5,9);
-INSERT INTO network(source,target) values(5,13);
-INSERT INTO network(source,target) values(6,4);
-INSERT INTO network(source,target) values(6,7);
-INSERT INTO network(source,target) values(7,6);
-INSERT INTO network(source,target) values(7,8);
-INSERT INTO network(source,target) values(7,1);
-INSERT INTO network(source,target) values(8,7);
-INSERT INTO network(source,target) values(8,11);
-INSERT INTO network(source,target) values(8,12);
-INSERT INTO network(source,target) values(9,5);
-INSERT INTO network(source,target) values(10,3);
-INSERT INTO network(source,target) values(10,11);
-INSERT INTO network(source,target) values(10,12);
-INSERT INTO network(source,target) values(11,8);
-INSERT INTO network(source,target) values(11,10);
-INSERT INTO network(source,target) values(11,13);
-INSERT INTO network(source,target) values(12,10);
-INSERT INTO network(source,target) values(12,8);
-INSERT INTO network(source,target) values(12,13);
-INSERT INTO network(source,target) values(13,12);
-INSERT INTO network(source,target) values(13,5);
-INSERT INTO network(source,target) values(13,11);
--- Create geoms for the network table
-update network set
- the_geom = st_setsrid(st_geomfromtext('MULTILINESTRING(('|| st_x(s.the_geom) ||' '|| st_y(s.the_geom)|| ','|| st_x(t.the_geom) || ' ' || st_y(t.the_geom) ||'))'),3857)
- from nodes s, nodes t where network.source=s.vertex and network.target=t.vertex;
-
-update network set cost = st_length(the_geom);
-update network set reverse_cost = st_length(the_geom)*5;
-
-
-EXECUTE 'set client_min_messages to '|| debuglevel;
-END $$;
-
-
--- TESTS START
-
-SELECT DISTINCT node = network.source AS e1, edge = network.id AS e2, round(network.cost::numeric,4) = round(result.cost::numeric, 4) AS e3
-FROM pgr_ksp(
- 'SELECT id, source, target, cost from network order by id',
- 4, 5::BIGINT,
- 15) result, network where id = edge order by e1, e2, e3;
-
-
-SELECT DISTINCT node = network.source AS e1, edge = network.id AS e2, round(network.cost::numeric,4) = round(result.cost::numeric, 4) AS e3
-FROM pgr_ksp(
- 'SELECT id, source, target, cost from network order by id',
- 4, 5,
- 15) result, network where id = edge order by e1, e2, e3;
-
diff --git a/src/ksp/test/test.conf b/src/ksp/test/test.conf
index 7c69560..75f281f 100644
--- a/src/ksp/test/test.conf
+++ b/src/ksp/test/test.conf
@@ -5,13 +5,10 @@
'comment' => 'KSP',
'data' => [''],
'tests' => [qw(
- doc-ksp-v2
doc-ksp
- ksp-network
)],
'documentation' => [qw(
doc-ksp
- doc-ksp-v2
)]
},
# 'vpg-vpgis' => {}, # for version specific tests
diff --git a/src/label_graph/doc/doc-pgr_labelGraph.queries b/src/label_graph/doc/doc-pgr_labelGraph.queries
deleted file mode 100644
index 5162e5f..0000000
--- a/src/label_graph/doc/doc-pgr_labelGraph.queries
+++ /dev/null
@@ -1,24 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SET client_min_messages TO WARNING;
-SET
-SELECT pgr_labelGraph('edge_table', 'id', 'source', 'target', 'subgraph');
- pgr_labelgraph
-----------------
- OK
-(1 row)
-
-SELECT subgraph, count(*) FROM edge_table group by subgraph;
- subgraph | count
-----------+-------
- 1 | 16
- 3 | 1
- 2 | 1
-(3 rows)
-
---q2
-ROLLBACK;
-ROLLBACK
diff --git a/src/label_graph/doc/pgr_labelGraph.rst b/src/label_graph/doc/pgr_labelGraph.rst
deleted file mode 100644
index 2464588..0000000
--- a/src/label_graph/doc/pgr_labelGraph.rst
+++ /dev/null
@@ -1,87 +0,0 @@
-..
- ****************************************************************************
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_labelGraph:
-
-
-pgr_labelGraph - Proposed
-===============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_labelGraph`` — Locates and labels sub-networks within a network which are not topologically connected.
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Must be run after ``pgr_createTopology()``. No use of ``geometry`` column. Only ``id``, ``source`` and ``target`` columns are required.
-
-The function returns:
-
- - ``OK`` when a column with provided name has been generated and populated successfully. All connected edges will have unique similar integer values. In case of ``rows_where`` condition, non participating rows will have -1 integer values.
- - ``FAIL`` when the processing cannot be finished due to some error. Notice will be thrown accordingly.
- - ``rows_where condition generated 0 rows`` when passed SQL condition has not been fulfilled by any row.
-
-.. index::
- single: labelGraph(Complete Signature) - Proposed
-
-.. code-block:: sql
-
- varchar pgr_labelGraph(text, text, text, text, text, text)
-
-
-
-Description
--------------------------------------------------------------------------------
-
-A network behind any routing query may consist of sub-networks completely isolated from each other. Possible reasons could be:
-
-- An island with no bridge connecting to the mainland.
-- An edge or mesh of edges failed to connect to other networks because of human negligence during data generation.
-- The data is not properly noded.
-- Topology creation failed to succeed.
-
-pgr_labelGraph() will create an integer column (with the name provided by the user) and will assign same integer values to all those edges in the network which are connected topologically. Thus better analysis regarding network structure is possible. In case of ``rows_where`` condition, non participating rows will have -1 integer values.
-
-Prerequisites:
-Must run ``pgr_createTopology()`` in order to generate ``source`` and ``target`` columns. Primary key column ``id`` should also be there in the network table.
-
-Function accepts the following parameters:
-
-:edge_table: ``text`` Network table name, with optional schema name.
-:id: ``text`` Primary key column name of the network table. Default is ``id``.
-:source: ``text`` Source column name generated after ``pgr_createTopology()``. Default is ``source``.
-:target: ``text`` Target column name generated after ``pgr_createTopology()``. Default is ``target``.
-:subgraph: ``text`` Column name which will hold the integer labels for each sub-graph. Default is ``subgraph``.
-:rows_where: ``text`` The SQL where condition. Default is ``true``, means the processing will be done on the whole table.
-
-
-
-
-Example Usage
--------------------------------------------------------------------------------
-
-The sample data, has 3 subgraphs.
-
-.. literalinclude:: doc-pgr_labelGraph.queries
- :start-after: --q1
- :end-before: --q2
-
-
-See Also
--------------------------------------------------------------------------------
-
-* `pgr_createTopology <https://github.com/Zia-/pgrouting/blob/develop/src/common/sql/pgrouting_topology.sql>`_ to create the topology of a table based on its geometry and tolerance value.
diff --git a/src/label_graph/sql/CMakeLists.txt b/src/label_graph/sql/CMakeLists.txt
deleted file mode 100644
index 7cc8c31..0000000
--- a/src/label_graph/sql/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/label_graph.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/label_graph/sql/label_graph.sql b/src/label_graph/sql/label_graph.sql
deleted file mode 100644
index 6be3cf3..0000000
--- a/src/label_graph/sql/label_graph.sql
+++ /dev/null
@@ -1,194 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-CREATE OR REPLACE FUNCTION pgr_labelGraph(
- edge_table text,
- id text default 'id',
- source text default 'source',
- target text default 'target',
- subgraph text default 'subgraph',
- rows_where text default 'true'
- )
- RETURNS character varying AS
-$BODY$
-
-DECLARE
- naming record;
- schema_name text;
- table_name text;
- garbage text;
- incre integer;
- table_schema_name text;
- query text;
- ecnt integer;
- sql1 text;
- rec1 record;
- sql2 text;
- rec2 record;
- rec_count record;
- rec_single record;
- graph_id integer;
- gids int [];
-
-BEGIN
- raise notice 'Processing:';
- raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
- raise notice 'Performing initial checks, please hold on ...';
-
- Raise Notice 'Starting - Checking table ...';
- BEGIN
- raise debug 'Checking % table existance', edge_table;
- execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
- schema_name = naming.sname;
- table_name = naming.tname;
- table_schema_name = schema_name||'.'||table_name;
- IF schema_name is null then
- raise notice 'no schema';
- return 'FAIL';
- else
- if table_name is null then
- raise notice 'no table';
- return 'FAIL';
- end if;
- end if;
- END;
- Raise Notice 'Ending - Checking table';
-
- Raise Notice 'Starting - Checking columns';
- BEGIN
- raise debug 'Checking exitance of necessary columns inside % table', edge_table;
- execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
- if naming.pgr_iscolumnintable = 'f' then
- raise notice 'no id column';
- return 'FAIL';
- end if;
- execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
- if naming.pgr_iscolumnintable = 'f' then
- raise notice 'no source column';
- return 'FAIL';
- end if;
- execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
- if naming.pgr_iscolumnintable = 'f' then
- raise notice 'no target column';
- return 'FAIL';
- end if;
- execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
- if naming.pgr_iscolumnintable = 't' then
- raise notice 'subgraph column already in the table';
- return 'FAIL';
- end if;
- END;
- Raise Notice 'Ending - Checking columns';
-
- Raise Notice 'Starting - Checking rows_where condition';
- BEGIN
- raise debug 'Checking rows_where condition';
- query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
- execute query into ecnt;
- raise debug '-->Rows where condition: OK';
- raise debug ' --> OK';
- EXCEPTION WHEN OTHERS THEN
- raise notice 'Got %', SQLERRM;
- Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
- Raise notice '%', query;
- return 'FAIL';
- END;
- Raise Notice 'Ending - Checking rows_where condition';
-
- garbage := 'garbage001';
- incre := 1;
- Raise Notice 'Starting - Checking temporary column';
- Begin
- raise debug 'Checking Checking temporary columns existance';
-
- While True
- Loop
- execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
- If naming.pgr_iscolumnintable = 't' THEN
- incre := incre + 1;
- garbage := 'garbage00'||incre||'';
- ELSE
- EXIT;
- END IF;
- End Loop;
- End;
- Raise Notice 'Ending - Checking temporary column';
-
- Raise Notice 'Starting - Calculating subgraphs';
- BEGIN
- --------- Add necessary columns ----------
- EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
- EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
- graph_id := 1;
-
- EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
- if rec_count.count = 0 then
- RETURN 'rows_where condition generated 0 rows';
- end if;
-
- WHILE TRUE
- LOOP
- ---------- Assign the very first -1 row graph_id ----------
- EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
- EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
-
- --------- Search other rows with that particular graph_id -----------
- WHILE TRUE
- LOOP
- EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
- ----------- The following if else will check those rows which already have entertained ------------
- IF (rec_count.count > 0) THEN
- sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
- FOR rec1 IN EXECUTE sql1
- LOOP
- sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
- FOR rec2 IN EXECUTE sql2
- LOOP
- EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
- END LOOP;
- EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
- END LOOP;
- ELSE
- EXIT;
- END IF;
- END LOOP;
-
- ------ Following is to exit the while loop. 0 means no more -1 id.
- EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
- If (rec_count.count = 0) THEN
- EXIT;
- ELSE
- graph_id := graph_id + 1;
- END IF;
- END LOOP;
-
- ----------- Drop garbage column ------------
- EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
- Raise Notice 'Successfully complicated calculating subgraphs';
- END;
- Raise Notice 'Ending - Calculating subgraphs';
-
- RETURN 'OK';
-
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
diff --git a/src/label_graph/test/doc-pgr_labelGraph.result b/src/label_graph/test/doc-pgr_labelGraph.result
index 244e737..34f18d2 100644
--- a/src/label_graph/test/doc-pgr_labelGraph.result
+++ b/src/label_graph/test/doc-pgr_labelGraph.result
@@ -1,6 +1,24 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-OK
-1|16
-3|1
-2|1
+SET client_min_messages TO WARNING;
+SET
+SELECT pgr_labelGraph('edge_table', 'id', 'source', 'target', 'subgraph');
+ pgr_labelgraph
+----------------
+ OK
+(1 row)
+
+SELECT DISTINCT subgraph FROM edge_table ORDER BY subgraph;
+ subgraph
+----------
+ 1
+ 2
+ 3
+(3 rows)
+
--q2
+ROLLBACK;
+ROLLBACK
diff --git a/src/label_graph/test/doc-pgr_labelGraph.test.sql b/src/label_graph/test/doc-pgr_labelGraph.test.sql
index 3d8d7af..b7ce27d 100644
--- a/src/label_graph/test/doc-pgr_labelGraph.test.sql
+++ b/src/label_graph/test/doc-pgr_labelGraph.test.sql
@@ -1,5 +1,5 @@
\echo --q1
SET client_min_messages TO WARNING;
SELECT pgr_labelGraph('edge_table', 'id', 'source', 'target', 'subgraph');
-SELECT subgraph, count(*) FROM edge_table group by subgraph;
+SELECT DISTINCT subgraph FROM edge_table ORDER BY subgraph;
\echo --q2
diff --git a/src/lineGraph/src/CMakeLists.txt b/src/lineGraph/src/CMakeLists.txt
new file mode 100644
index 0000000..86869a9
--- /dev/null
+++ b/src/lineGraph/src/CMakeLists.txt
@@ -0,0 +1,4 @@
+ADD_LIBRARY(lineGraph OBJECT
+ lineGraph.c
+ lineGraph_driver.cpp
+ )
diff --git a/src/lineGraph/src/lineGraph.c b/src/lineGraph/src/lineGraph.c
new file mode 100644
index 0000000..2cb5ed2
--- /dev/null
+++ b/src/lineGraph/src/lineGraph.c
@@ -0,0 +1,223 @@
+/*PGR-GNU*****************************************************************
+File: lineGraph.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+/** @file lineGraph.c
+ * @brief Connecting code with postgres.
+ *
+ * This file is fully documented for understanding
+ * how the postgres connectinon works
+ *
+ * TODO Remove unnecessary comments before submiting the function.
+ * some comments are in form of PGR_DBG message
+ */
+
+/**
+ * postgres_connection.h
+ *
+ * - should always be first in the C code
+ */
+#include "c_common/postgres_connection.h"
+
+
+/* for macro PGR_DBG */
+#include "c_common/debug_macro.h"
+/* for pgr_global_report */
+#include "c_common/e_report.h"
+/* for time_msg & clock */
+#include "c_common/time_msg.h"
+/* for functions to get edges information */
+#include "c_common/edges_input.h"
+
+#include "drivers/lineGraph/lineGraph_driver.h" // the link to the C++ code of the function
+
+PGDLLEXPORT Datum lineGraph(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(lineGraph);
+
+
+/******************************************************************************/
+/* MODIFY AS NEEDED */
+static
+void
+process(
+ char* edges_sql,
+ bool directed,
+ Line_graph_rt **result_tuples,
+ size_t *result_count) {
+ /*
+ * https://www.postgresql.org/docs/current/static/spi-spi-connect.html
+ */
+ PGR_DBG("\nSQL QUERY: %s\n", edges_sql);
+ if (directed) PGR_DBG("\nDirectedGraph\n");
+ else PGR_DBG("\nUndirectedGraph\n");
+ pgr_SPI_connect();
+
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+
+ PGR_DBG("Load data");
+ pgr_edge_t *edges = NULL;
+ size_t total_edges = 0;
+
+ pgr_get_edges(edges_sql, &edges, &total_edges);
+ PGR_DBG("Total %ld edges in query:", total_edges);
+
+ if (total_edges == 0) {
+ PGR_DBG("No edges found");
+ pgr_SPI_finish();
+ return;
+ }
+
+ PGR_DBG("Starting processing");
+ clock_t start_t = clock();
+ char *log_msg = NULL;
+ char *notice_msg = NULL;
+ char *err_msg = NULL;
+ do_pgr_lineGraph(
+ edges,
+ total_edges,
+ directed,
+ result_tuples,
+ result_count,
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ time_msg(" processing pgr_lineGraph", start_t, clock());
+ PGR_DBG("Returning %ld tuples", *result_count);
+
+ if (err_msg) {
+ if (*result_tuples) pfree(*result_tuples);
+ }
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (edges) pfree(edges);
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+
+ pgr_SPI_finish();
+}
+/* */
+/******************************************************************************/
+
+PGDLLEXPORT Datum lineGraph(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**************************************************************************/
+ /* MODIFY AS NEEDED */
+ /* */
+ Line_graph_rt *result_tuples = NULL;
+ size_t result_count = 0;
+ /* */
+ /**************************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ TEXT,
+ directed BOOLEAN DEFAULT true,
+ **********************************************************************/
+
+
+ PGR_DBG("Calling process");
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+ PG_GETARG_BOOL(1),
+ &result_tuples,
+ &result_count);
+
+
+ /* */
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 94
+ funcctx->max_calls = result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (Line_graph_rt*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+
+ values = palloc(5 * sizeof(Datum));
+ nulls = palloc(5 * sizeof(bool));
+
+
+ size_t i;
+ for (i = 0; i < 5; ++i) {
+ nulls[i] = false;
+ }
+
+ // postgres starts counting from 1
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int64GetDatum(result_tuples[funcctx->call_cntr].source);
+ values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].target);
+ values[3] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
+ values[4] = Float8GetDatum(result_tuples[funcctx->call_cntr].reverse_cost);
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+
+ PGR_DBG("Clean up code");
+
+ /**********************************************************************/
+
+ SRF_RETURN_DONE(funcctx);
+ }
+}
diff --git a/src/lineGraph/src/lineGraph_driver.cpp b/src/lineGraph/src/lineGraph_driver.cpp
new file mode 100644
index 0000000..f67ed49
--- /dev/null
+++ b/src/lineGraph/src/lineGraph_driver.cpp
@@ -0,0 +1,157 @@
+/*PGR-GNU*****************************************************************
+File: lineGraph_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2017 Vidhan Jain
+Mail: vidhanj1307 at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/lineGraph/lineGraph_driver.h"
+
+#include <sstream>
+#include <deque>
+#include <vector>
+
+#include "dijkstra/pgr_dijkstra.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+#include "lineGraph/pgr_lineGraph.hpp"
+
+void get_postgres_result(
+ std::vector< Line_graph_rt > edge_result,
+ Line_graph_rt **return_tuples,
+ size_t &sequence) {
+ (*return_tuples) = pgr_alloc(
+ (int)edge_result.size(),
+ (*return_tuples));
+
+ for (const auto &edge: edge_result) {
+ (*return_tuples)[sequence] = {edge.id, edge.source, edge.target, edge.cost, edge.reverse_cost};
+ sequence++;
+ }
+}
+
+void
+do_pgr_lineGraph(
+ pgr_edge_t *data_edges,
+ size_t total_edges,
+ bool directed,
+ Line_graph_rt **return_tuples,
+ size_t *return_count,
+ char ** log_msg,
+ char ** notice_msg,
+ char ** err_msg) {
+ std::ostringstream log;
+ std::ostringstream err;
+ std::ostringstream notice;
+ try {
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert(*return_count == 0);
+ pgassert(total_edges != 0);
+
+ std::vector< Line_graph_rt > results;
+ graphType gType = directed?DIRECTED:UNDIRECTED;
+
+ pgrouting::DirectedGraph digraph(gType);
+ digraph.insert_edges(data_edges, total_edges);
+ if (!directed) {
+ for (size_t ind = 0; ind < total_edges; ind++) {
+ std::swap(data_edges[ind].source, data_edges[ind].target);
+ data_edges[ind].id *= -1;
+ }
+
+ digraph.insert_edges(data_edges, total_edges);
+
+ for (size_t ind = 0;ind < total_edges; ind++) {
+ std::swap(data_edges[ind].source, data_edges[ind].target);
+ data_edges[ind].id *= -1;
+ }
+ }
+
+ digraph.m_num_vertices = 1000;
+ log << digraph << "\n";
+
+ pgrouting::LinearDirectedGraph line(gType);
+ line.insert_vertices(data_edges, total_edges);
+ line.transform(digraph);
+
+ std::vector< Line_graph_rt > line_graph_edges;
+ if (directed) {
+ line_graph_edges = line.get_postgres_results_directed();
+ } else {
+ line_graph_edges = line.get_postgres_results_undirected();
+ }
+
+ auto count = line_graph_edges.size();
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+ notice <<
+ "No paths found between start_vid and end_vid vertices";
+ } else {
+ size_t sequence = 0;
+
+ get_postgres_result(
+ line_graph_edges,
+ return_tuples,
+ sequence
+ );
+ (*return_count) = sequence;
+ }
+ log << line.log.str().c_str() << "\n\n\n";
+ log << line << "\n";
+
+ pgassert(*err_msg == NULL);
+ *log_msg = log.str().empty()?
+ *log_msg :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
diff --git a/src/lineGraph/test/doc-pgr_lineGraph.result b/src/lineGraph/test/doc-pgr_lineGraph.result
new file mode 100644
index 0000000..d6744bd
--- /dev/null
+++ b/src/lineGraph/test/doc-pgr_lineGraph.result
@@ -0,0 +1,210 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_lineGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+ seq | source | target | cost | reverse_cost
+-----+--------+--------+------+--------------
+ 1 | -16 | -3 | 1 | -1
+ 2 | -15 | -9 | 1 | 1
+ 3 | -14 | -10 | 1 | 1
+ 4 | -14 | 12 | 1 | -1
+ 5 | -10 | -7 | 1 | 1
+ 6 | -10 | -4 | 1 | 1
+ 7 | -10 | 8 | 1 | 1
+ 8 | -9 | -8 | 1 | 1
+ 9 | -9 | 11 | 1 | -1
+ 10 | -8 | -7 | 1 | 1
+ 11 | -8 | -4 | 1 | 1
+ 12 | -7 | -6 | 1 | 1
+ 13 | -4 | -1 | 1 | 1
+ 14 | -3 | -2 | 1 | -1
+ 15 | -3 | 5 | 1 | -1
+ 16 | -2 | -1 | 1 | -1
+ 17 | -2 | 4 | 1 | -1
+ 18 | 5 | -8 | 1 | -1
+ 19 | 5 | 9 | 1 | -1
+ 20 | 5 | 11 | 1 | -1
+ 21 | 7 | -4 | 1 | 1
+ 22 | 8 | 11 | 1 | -1
+ 23 | 10 | 12 | 1 | -1
+ 24 | 11 | 13 | 1 | -1
+ 25 | 12 | 13 | 1 | -1
+ 26 | 13 | -15 | 1 | -1
+ 27 | 16 | -9 | 1 | 1
+ 28 | 16 | 15 | 1 | 1
+(28 rows)
+
+-- q2
+SELECT * FROM pgr_lineGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ FALSE
+);
+ seq | source | target | cost | reverse_cost
+-----+--------+--------+------+--------------
+ 1 | -2 | -1 | 1 | -1
+ 2 | -4 | -1 | 1 | -1
+ 3 | 4 | -1 | 1 | -1
+ 4 | 1 | 4 | 1 | -1
+ 5 | -2 | 4 | 1 | -1
+ 6 | -1 | 4 | 1 | -1
+ 7 | -2 | 1 | 1 | -1
+ 8 | -4 | 1 | 1 | -1
+ 9 | 4 | 1 | 1 | -1
+ 10 | 1 | -2 | 1 | -1
+ 11 | -4 | -2 | 1 | -1
+ 12 | -1 | -2 | 1 | -1
+ 13 | 4 | -2 | 1 | -1
+ 14 | 1 | -4 | 1 | -1
+ 15 | -2 | -4 | 1 | -1
+ 16 | -1 | -4 | 1 | -1
+ 17 | -3 | -2 | 1 | -1
+ 18 | 5 | -2 | 1 | -1
+ 19 | -3 | 5 | 1 | -1
+ 20 | -2 | 5 | 1 | -1
+ 21 | -2 | -3 | 1 | -1
+ 22 | 5 | -3 | 1 | -1
+ 23 | -16 | -3 | 1 | -1
+ 24 | 16 | -3 | 1 | -1
+ 25 | -3 | 16 | 1 | -1
+ 26 | -3 | -16 | 1 | -1
+ 27 | 7 | -4 | 1 | -1
+ 28 | -8 | -4 | 1 | -1
+ 29 | -10 | -4 | 1 | -1
+ 30 | -7 | -4 | 1 | -1
+ 31 | 8 | -4 | 1 | -1
+ 32 | 10 | -4 | 1 | -1
+ 33 | 4 | -7 | 1 | -1
+ 34 | -8 | -7 | 1 | -1
+ 35 | -10 | -7 | 1 | -1
+ 36 | -4 | -7 | 1 | -1
+ 37 | 8 | -7 | 1 | -1
+ 38 | 10 | -7 | 1 | -1
+ 39 | 4 | 8 | 1 | -1
+ 40 | 7 | 8 | 1 | -1
+ 41 | -10 | 8 | 1 | -1
+ 42 | -4 | 8 | 1 | -1
+ 43 | -7 | 8 | 1 | -1
+ 44 | 10 | 8 | 1 | -1
+ 45 | 4 | 10 | 1 | -1
+ 46 | 7 | 10 | 1 | -1
+ 47 | -8 | 10 | 1 | -1
+ 48 | -4 | 10 | 1 | -1
+ 49 | -7 | 10 | 1 | -1
+ 50 | 8 | 10 | 1 | -1
+ 51 | 7 | 4 | 1 | -1
+ 52 | -8 | 4 | 1 | -1
+ 53 | -10 | 4 | 1 | -1
+ 54 | -7 | 4 | 1 | -1
+ 55 | 8 | 4 | 1 | -1
+ 56 | 10 | 4 | 1 | -1
+ 57 | 4 | 7 | 1 | -1
+ 58 | -8 | 7 | 1 | -1
+ 59 | -10 | 7 | 1 | -1
+ 60 | -4 | 7 | 1 | -1
+ 61 | 8 | 7 | 1 | -1
+ 62 | 10 | 7 | 1 | -1
+ 63 | 4 | -8 | 1 | -1
+ 64 | 7 | -8 | 1 | -1
+ 65 | -10 | -8 | 1 | -1
+ 66 | -4 | -8 | 1 | -1
+ 67 | -7 | -8 | 1 | -1
+ 68 | 10 | -8 | 1 | -1
+ 69 | 4 | -10 | 1 | -1
+ 70 | 7 | -10 | 1 | -1
+ 71 | -8 | -10 | 1 | -1
+ 72 | -4 | -10 | 1 | -1
+ 73 | -7 | -10 | 1 | -1
+ 74 | 8 | -10 | 1 | -1
+ 75 | 5 | -8 | 1 | -1
+ 76 | -9 | -8 | 1 | -1
+ 77 | 9 | -8 | 1 | -1
+ 78 | 11 | -8 | 1 | -1
+ 79 | 5 | 9 | 1 | -1
+ 80 | 8 | 9 | 1 | -1
+ 81 | -8 | 9 | 1 | -1
+ 82 | 11 | 9 | 1 | -1
+ 83 | 5 | 11 | 1 | -1
+ 84 | 8 | 11 | 1 | -1
+ 85 | -9 | 11 | 1 | -1
+ 86 | -8 | 11 | 1 | -1
+ 87 | 9 | 11 | 1 | -1
+ 88 | 8 | 5 | 1 | -1
+ 89 | -9 | 5 | 1 | -1
+ 90 | -8 | 5 | 1 | -1
+ 91 | 9 | 5 | 1 | -1
+ 92 | 11 | 5 | 1 | -1
+ 93 | 5 | 8 | 1 | -1
+ 94 | -9 | 8 | 1 | -1
+ 95 | 9 | 8 | 1 | -1
+ 96 | 11 | 8 | 1 | -1
+ 97 | 5 | -9 | 1 | -1
+ 98 | 8 | -9 | 1 | -1
+ 99 | -8 | -9 | 1 | -1
+ 100 | 11 | -9 | 1 | -1
+ 101 | -7 | -6 | 1 | -1
+ 102 | 7 | -6 | 1 | -1
+ 103 | 6 | 7 | 1 | -1
+ 104 | -6 | 7 | 1 | -1
+ 105 | -7 | 6 | 1 | -1
+ 106 | 7 | 6 | 1 | -1
+ 107 | 6 | -7 | 1 | -1
+ 108 | -6 | -7 | 1 | -1
+ 109 | -15 | -9 | 1 | -1
+ 110 | 16 | -9 | 1 | -1
+ 111 | 15 | -9 | 1 | -1
+ 112 | -16 | -9 | 1 | -1
+ 113 | 9 | 15 | 1 | -1
+ 114 | 16 | 15 | 1 | -1
+ 115 | -9 | 15 | 1 | -1
+ 116 | -16 | 15 | 1 | -1
+ 117 | 9 | -16 | 1 | -1
+ 118 | -15 | -16 | 1 | -1
+ 119 | -9 | -16 | 1 | -1
+ 120 | 15 | -16 | 1 | -1
+ 121 | -15 | 9 | 1 | -1
+ 122 | 16 | 9 | 1 | -1
+ 123 | 15 | 9 | 1 | -1
+ 124 | -16 | 9 | 1 | -1
+ 125 | 9 | -15 | 1 | -1
+ 126 | 16 | -15 | 1 | -1
+ 127 | -9 | -15 | 1 | -1
+ 128 | -16 | -15 | 1 | -1
+ 129 | 9 | 16 | 1 | -1
+ 130 | -15 | 16 | 1 | -1
+ 131 | -9 | 16 | 1 | -1
+ 132 | 15 | 16 | 1 | -1
+ 133 | -14 | -10 | 1 | -1
+ 134 | 12 | -10 | 1 | -1
+ 135 | 14 | -10 | 1 | -1
+ 136 | 10 | 12 | 1 | -1
+ 137 | -14 | 12 | 1 | -1
+ 138 | -10 | 12 | 1 | -1
+ 139 | 14 | 12 | 1 | -1
+ 140 | 10 | 14 | 1 | -1
+ 141 | -10 | 14 | 1 | -1
+ 142 | 12 | 14 | 1 | -1
+ 143 | -14 | 10 | 1 | -1
+ 144 | 12 | 10 | 1 | -1
+ 145 | 14 | 10 | 1 | -1
+ 146 | 10 | -14 | 1 | -1
+ 147 | -10 | -14 | 1 | -1
+ 148 | 12 | -14 | 1 | -1
+ 149 | 11 | 13 | 1 | -1
+ 150 | 12 | 13 | 1 | -1
+ 151 | 12 | 11 | 1 | -1
+ 152 | 13 | 11 | 1 | -1
+ 153 | 11 | 12 | 1 | -1
+ 154 | 13 | 12 | 1 | -1
+ 155 | 13 | -15 | 1 | -1
+ 156 | 15 | 13 | 1 | -1
+ 157 | -15 | 13 | 1 | -1
+ 158 | 13 | 15 | 1 | -1
+(158 rows)
+
+-- q3
+ROLLBACK;
+ROLLBACK
diff --git a/src/lineGraph/test/doc-pgr_lineGraph.test.sql b/src/lineGraph/test/doc-pgr_lineGraph.test.sql
new file mode 100644
index 0000000..ef2b7dc
--- /dev/null
+++ b/src/lineGraph/test/doc-pgr_lineGraph.test.sql
@@ -0,0 +1,12 @@
+
+\echo -- q1
+SELECT * FROM pgr_lineGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table'
+);
+
+\echo -- q2
+SELECT * FROM pgr_lineGraph(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ FALSE
+);
+\echo -- q3
diff --git a/src/lineGraph/test/pgtap/lineGraph-innerQuery.sql b/src/lineGraph/test/pgtap/lineGraph-innerQuery.sql
new file mode 100644
index 0000000..6f10573
--- /dev/null
+++ b/src/lineGraph/test/pgtap/lineGraph-innerQuery.sql
@@ -0,0 +1,20 @@
+\i setup.sql
+
+SELECT plan(137);
+SET client_min_messages TO ERROR;
+
+
+SELECT has_function('pgr_linegraph',
+ ARRAY['text', 'boolean']);
+
+SELECT function_returns('pgr_linegraph',
+ ARRAY['text', 'boolean'],
+ 'setof record');
+
+SELECT style_lineGraph('pgr_linegraph', ')');
+SELECT style_lineGraph('pgr_linegraph', ', true)');
+SELECT style_lineGraph('pgr_linegraph', ', false)');
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/lineGraph/test/pgtap/lineGraph-typesCheck.sql b/src/lineGraph/test/pgtap/lineGraph-typesCheck.sql
new file mode 100644
index 0000000..0eb3c48
--- /dev/null
+++ b/src/lineGraph/test/pgtap/lineGraph-typesCheck.sql
@@ -0,0 +1,14 @@
+
+SELECT plan(4);
+
+SELECT has_function('pgr_linegraph');
+
+SELECT has_function('pgr_linegraph', ARRAY[ 'text', 'boolean' ]);
+
+SELECT function_returns('pgr_linegraph', ARRAY[ 'text', 'boolean' ], 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_linegraph'$$,
+ $$SELECT '{"","directed","seq","source","target","cost","reverse_cost"}'::TEXT[] $$
+);
diff --git a/src/lineGraph/test/test.conf b/src/lineGraph/test/test.conf
new file mode 100644
index 0000000..318f990
--- /dev/null
+++ b/src/lineGraph/test/test.conf
@@ -0,0 +1,17 @@
+#!/usr/bin/perl -w
+
+%main::tests = (
+ 'any' => {
+ 'comment' => 'LineGrpah test for any versions.',
+ 'data' => [ ],
+ 'tests' => [qw(
+ doc-pgr_lineGraph
+ )],
+ 'documentation' => [qw(
+ doc-pgr_lineGraph
+ )]
+ },
+
+);
+
+1;
diff --git a/src/max_flow/doc/CMakeLists.txt b/src/max_flow/doc/CMakeLists.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/src/max_flow/doc/doc-pgr_edgeDisjointPaths.queries b/src/max_flow/doc/doc-pgr_edgeDisjointPaths.queries
deleted file mode 100644
index 71216b2..0000000
--- a/src/max_flow/doc/doc-pgr_edgeDisjointPaths.queries
+++ /dev/null
@@ -1,91 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- 3, 5
-);
- seq | path_seq | node | edge
------+----------+------+------
- 1 | 1 | 3 | 2
- 2 | 2 | 2 | 4
- 3 | 3 | 5 | -1
- 4 | 1 | 3 | 5
- 5 | 2 | 6 | 8
- 6 | 3 | 5 | -1
-(6 rows)
-
--- q2
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- 3, 5,
- directed := false
-);
- seq | path_seq | node | edge
------+----------+------+------
- 1 | 1 | 3 | 2
- 2 | 2 | 2 | 4
- 3 | 3 | 5 | -1
- 4 | 1 | 3 | 3
- 5 | 2 | 4 | 16
- 6 | 3 | 9 | 9
- 7 | 4 | 6 | 8
- 8 | 5 | 5 | -1
- 9 | 1 | 3 | 5
- 10 | 2 | 6 | 11
- 11 | 3 | 11 | 12
- 12 | 4 | 10 | 10
- 13 | 5 | 5 | -1
-(13 rows)
-
--- q3
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- 3, ARRAY[4, 5, 10]
-);
- seq | path_seq | end_vid | node | edge
------+----------+---------+------+------
- 1 | 1 | 5 | 3 | 2
- 2 | 2 | 5 | 2 | 4
- 3 | 3 | 5 | 5 | -1
- 4 | 1 | 5 | 3 | 5
- 5 | 2 | 5 | 6 | 8
- 6 | 3 | 5 | 5 | -1
-(6 rows)
-
--- q4
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- ARRAY[3, 6], 5
-);
- seq | path_seq | start_vid | node | edge
------+----------+-----------+------+------
- 1 | 1 | 3 | 3 | 2
- 2 | 2 | 3 | 2 | 4
- 3 | 3 | 3 | 5 | -1
- 4 | 1 | 6 | 6 | 8
- 5 | 2 | 6 | 5 | -1
-(5 rows)
-
--- q5
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- ARRAY[3, 6], ARRAY[4, 5, 10]
-);
- seq | path_seq | start_vid | end_vid | node | edge
------+----------+-----------+---------+------+------
- 1 | 1 | 3 | 5 | 3 | 2
- 2 | 2 | 3 | 5 | 2 | 4
- 3 | 3 | 3 | 5 | 5 | -1
- 4 | 1 | 6 | 5 | 6 | 8
- 5 | 2 | 6 | 5 | 5 | -1
- 6 | 1 | 6 | 4 | 6 | 9
- 7 | 2 | 6 | 4 | 9 | 16
- 8 | 3 | 6 | 4 | 4 | -1
-(8 rows)
-
--- q6
-ROLLBACK;
-ROLLBACK
diff --git a/src/max_flow/doc/doc-pgr_maxFlow.queries b/src/max_flow/doc/doc-pgr_maxFlow.queries
deleted file mode 100644
index 7957e35..0000000
--- a/src/max_flow/doc/doc-pgr_maxFlow.queries
+++ /dev/null
@@ -1,75 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_maxFlow(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, 11
-);
- pgr_maxflow
--------------
- 280
-(1 row)
-
--- q2
-SELECT * FROM pgr_maxFlow(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, ARRAY[11, 1, 13]
-);
- pgr_maxflow
--------------
- 410
-(1 row)
-
--- q3
-SELECT * FROM pgr_maxFlow(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], 11
-);
- pgr_maxflow
--------------
- 280
-(1 row)
-
--- q4
-SELECT * FROM pgr_maxFlow(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
-);
- pgr_maxflow
--------------
- 460
-(1 row)
-
--- q5
-ROLLBACK;
-ROLLBACK
diff --git a/src/max_flow/doc/doc-pgr_maxFlowBoykovKolmogorov.queries b/src/max_flow/doc/doc-pgr_maxFlowBoykovKolmogorov.queries
deleted file mode 100644
index 789e409..0000000
--- a/src/max_flow/doc/doc-pgr_maxFlowBoykovKolmogorov.queries
+++ /dev/null
@@ -1,107 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, 11
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 10 | 5 | 10 | 100 | 30
- 2 | 8 | 6 | 5 | 100 | 30
- 3 | 9 | 6 | 9 | 50 | 80
- 4 | 11 | 6 | 11 | 130 | 0
- 5 | 15 | 9 | 12 | 50 | 30
- 6 | 12 | 10 | 11 | 100 | 0
- 7 | 13 | 12 | 11 | 50 | 0
-(7 rows)
-
--- q2
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, ARRAY[1, 3, 11]
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 1 | 2 | 1 | 50 | 80
- 2 | 3 | 4 | 3 | 80 | 50
- 3 | 4 | 5 | 2 | 50 | 0
- 4 | 10 | 5 | 10 | 80 | 50
- 5 | 5 | 6 | 3 | 50 | 0
- 6 | 8 | 6 | 5 | 130 | 0
- 7 | 9 | 6 | 9 | 130 | 0
- 8 | 11 | 6 | 11 | 130 | 0
- 9 | 15 | 9 | 12 | 50 | 30
- 10 | 16 | 9 | 4 | 80 | 0
- 11 | 12 | 10 | 11 | 80 | 20
- 12 | 13 | 12 | 11 | 50 | 0
-(12 rows)
-
--- q3
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], 11
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 10 | 5 | 10 | 100 | 30
- 2 | 8 | 6 | 5 | 100 | 30
- 3 | 11 | 6 | 11 | 130 | 0
- 4 | 12 | 10 | 11 | 100 | 0
- 5 | 13 | 12 | 11 | 50 | 0
-(5 rows)
-
--- q4
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 1 | 2 | 1 | 50 | 80
- 2 | 3 | 4 | 3 | 80 | 50
- 3 | 4 | 5 | 2 | 50 | 0
- 4 | 10 | 5 | 10 | 100 | 30
- 5 | 5 | 6 | 3 | 50 | 0
- 6 | 8 | 6 | 5 | 130 | 0
- 7 | 9 | 6 | 9 | 80 | 50
- 8 | 11 | 6 | 11 | 130 | 0
- 9 | 7 | 8 | 5 | 20 | 30
- 10 | 16 | 9 | 4 | 80 | 0
- 11 | 12 | 10 | 11 | 100 | 0
- 12 | 13 | 12 | 11 | 50 | 0
-(12 rows)
-
--- q5
-ROLLBACK;
-ROLLBACK
diff --git a/src/max_flow/doc/doc-pgr_maxFlowEdmondsKarp.queries b/src/max_flow/doc/doc-pgr_maxFlowEdmondsKarp.queries
deleted file mode 100644
index 6581101..0000000
--- a/src/max_flow/doc/doc-pgr_maxFlowEdmondsKarp.queries
+++ /dev/null
@@ -1,107 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, 11
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 10 | 5 | 10 | 100 | 30
- 2 | 8 | 6 | 5 | 100 | 30
- 3 | 9 | 6 | 9 | 50 | 80
- 4 | 11 | 6 | 11 | 130 | 0
- 5 | 15 | 9 | 12 | 50 | 30
- 6 | 12 | 10 | 11 | 100 | 0
- 7 | 13 | 12 | 11 | 50 | 0
-(7 rows)
-
--- q2
-SELECT * FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, ARRAY[1, 3, 11]
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 1 | 2 | 1 | 50 | 80
- 2 | 3 | 4 | 3 | 80 | 50
- 3 | 4 | 5 | 2 | 50 | 0
- 4 | 10 | 5 | 10 | 80 | 50
- 5 | 5 | 6 | 3 | 50 | 0
- 6 | 8 | 6 | 5 | 130 | 0
- 7 | 9 | 6 | 9 | 130 | 0
- 8 | 11 | 6 | 11 | 130 | 0
- 9 | 15 | 9 | 12 | 50 | 30
- 10 | 16 | 9 | 4 | 80 | 0
- 11 | 12 | 10 | 11 | 80 | 20
- 12 | 13 | 12 | 11 | 50 | 0
-(12 rows)
-
--- q3
-SELECT * FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], 11
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 10 | 5 | 10 | 100 | 30
- 2 | 8 | 6 | 5 | 100 | 30
- 3 | 11 | 6 | 11 | 130 | 0
- 4 | 12 | 10 | 11 | 100 | 0
- 5 | 13 | 12 | 11 | 50 | 0
-(5 rows)
-
--- q4
-SELECT * FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 1 | 2 | 1 | 50 | 80
- 2 | 3 | 4 | 3 | 80 | 50
- 3 | 4 | 5 | 2 | 50 | 0
- 4 | 10 | 5 | 10 | 100 | 30
- 5 | 5 | 6 | 3 | 50 | 0
- 6 | 8 | 6 | 5 | 130 | 0
- 7 | 9 | 6 | 9 | 80 | 50
- 8 | 11 | 6 | 11 | 130 | 0
- 9 | 7 | 8 | 5 | 20 | 30
- 10 | 16 | 9 | 4 | 80 | 0
- 11 | 12 | 10 | 11 | 100 | 0
- 12 | 13 | 12 | 11 | 50 | 0
-(12 rows)
-
--- q5
-ROLLBACK;
-ROLLBACK
diff --git a/src/max_flow/doc/doc-pgr_maxFlowPushRelabel.queries b/src/max_flow/doc/doc-pgr_maxFlowPushRelabel.queries
deleted file mode 100644
index 09f7262..0000000
--- a/src/max_flow/doc/doc-pgr_maxFlowPushRelabel.queries
+++ /dev/null
@@ -1,114 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, 11
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 10 | 5 | 10 | 100 | 30
- 2 | 8 | 6 | 5 | 100 | 30
- 3 | 9 | 6 | 9 | 50 | 80
- 4 | 11 | 6 | 11 | 130 | 0
- 5 | 15 | 9 | 12 | 50 | 30
- 6 | 12 | 10 | 11 | 100 | 0
- 7 | 13 | 12 | 11 | 50 | 0
-(7 rows)
-
--- q2
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, ARRAY[11, 1, 13]
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 1 | 2 | 1 | 130 | 0
- 2 | 4 | 2 | 5 | 20 | 80
- 3 | 2 | 3 | 2 | 100 | 0
- 4 | 3 | 4 | 3 | 50 | 80
- 5 | 4 | 5 | 2 | 50 | 0
- 6 | 7 | 5 | 8 | 50 | 80
- 7 | 10 | 5 | 10 | 100 | 30
- 8 | 5 | 6 | 3 | 50 | 0
- 9 | 8 | 6 | 5 | 130 | 0
- 10 | 9 | 6 | 9 | 100 | 30
- 11 | 11 | 6 | 11 | 130 | 0
- 12 | 6 | 7 | 8 | 50 | 0
- 13 | 6 | 8 | 7 | 50 | 50
- 14 | 7 | 8 | 5 | 50 | 0
- 15 | 15 | 9 | 12 | 50 | 30
- 16 | 16 | 9 | 4 | 50 | 30
- 17 | 12 | 10 | 11 | 100 | 0
- 18 | 13 | 12 | 11 | 50 | 0
-(18 rows)
-
--- q3
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], 11
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 10 | 5 | 10 | 100 | 30
- 2 | 8 | 6 | 5 | 100 | 30
- 3 | 11 | 6 | 11 | 130 | 0
- 4 | 12 | 10 | 11 | 100 | 0
- 5 | 13 | 12 | 11 | 50 | 0
-(5 rows)
-
--- q4
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
-);
- seq | edge_id | source | target | flow | residual_capacity
------+---------+--------+--------+------+-------------------
- 1 | 1 | 2 | 1 | 50 | 80
- 2 | 3 | 4 | 3 | 80 | 50
- 3 | 4 | 5 | 2 | 50 | 0
- 4 | 10 | 5 | 10 | 100 | 30
- 5 | 5 | 6 | 3 | 50 | 0
- 6 | 8 | 6 | 5 | 130 | 0
- 7 | 9 | 6 | 9 | 30 | 100
- 8 | 11 | 6 | 11 | 130 | 0
- 9 | 7 | 8 | 5 | 20 | 30
- 10 | 16 | 9 | 4 | 80 | 0
- 11 | 12 | 10 | 11 | 100 | 0
- 12 | 13 | 12 | 11 | 50 | 0
- 13 | 15 | 12 | 9 | 50 | 0
-(13 rows)
-
--- q5
-ROLLBACK;
-ROLLBACK
diff --git a/src/max_flow/doc/doc-pgr_maximumCardinalityMatching.queries b/src/max_flow/doc/doc-pgr_maximumCardinalityMatching.queries
deleted file mode 100644
index 760e519..0000000
--- a/src/max_flow/doc/doc-pgr_maximumCardinalityMatching.queries
+++ /dev/null
@@ -1,40 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
-);
- seq | edge_id | source | target
------+---------+--------+--------
- 1 | 1 | 1 | 2
- 2 | 3 | 4 | 3
- 3 | 9 | 6 | 9
- 4 | 6 | 7 | 8
- 5 | 14 | 10 | 13
- 6 | 13 | 11 | 12
- 7 | 17 | 14 | 15
- 8 | 18 | 16 | 17
-(8 rows)
-
--- q2
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- directed := false
-);
- seq | edge_id | source | target
------+---------+--------+--------
- 1 | 1 | 1 | 2
- 2 | 3 | 3 | 4
- 3 | 9 | 6 | 9
- 4 | 6 | 7 | 8
- 5 | 14 | 10 | 13
- 6 | 13 | 11 | 12
- 7 | 17 | 14 | 15
- 8 | 18 | 16 | 17
-(8 rows)
-
--- q3
-ROLLBACK;
-ROLLBACK
diff --git a/src/max_flow/doc/flow-family.rst b/src/max_flow/doc/flow-family.rst
deleted file mode 100644
index 3286af8..0000000
--- a/src/max_flow/doc/flow-family.rst
+++ /dev/null
@@ -1,101 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _maxFlow:
-
-Flow - Family of functions
-===================================
-
-.. index from here
-
-* :ref:`pgr_maxFlow` - Only the Max flow calculation using Push and Relabel algorithm.
-* :ref:`pgr_maxFlowBoykovKolmogorov` - Boykov and Kolmogorov with details of flow on edges.
-* :ref:`pgr_maxFlowEdmondsKarp` - Edmonds and Karp algorithm with details of flow on edges.
-* :ref:`pgr_maxFlowPushRelabel` - Push and relabel algorithm with details of flow on edges.
-* Applications
-
- * :ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices.
- * :ref:`pgr_maximumCardinalityMatching` - Calculates a maximum cardinality matching in a graph.
-
-.. index to here
-
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-.. toctree::
- :hidden:
-
- pgr_maxFlow
- pgr_maxFlowBoykovKolmogorov
- pgr_maxFlowEdmondsKarp
- pgr_maxFlowPushRelabel
- pgr_edgeDisjointPaths
- pgr_maximumCardinalityMatching
-
-
-Problem definition
-==================
-
-A flow network is a directed graph where each edge has a capacity and a flow.
-The flow through an edge must not exceed the capacity of the edge.
-Additionally, the incoming and outgoing flow of a node must be equal except the for source which only has outgoing flow, and the destination(sink) which only has incoming flow.
-
-Maximum flow algorithms calculate the maximum flow through the graph and the flow of each edge.
-
-The maximum flow through the graph is guaranteed to be the same with all implementations,
-but the actual flow through each edge may vary.
-Given the following query:
-
-pgr_maxFlow :math:`(edges\_sql, source\_vertex, sink\_vertex)`
-
-where :math:`edges\_sql = \{(id_i, source_i, target_i, capacity_i, reverse\_capacity_i)\}`
-
-.. rubric:: Graph definition
-
-The weighted directed graph, :math:`G(V,E)`, is defined as:
-
-* the set of vertices :math:`V`
-
- - :math:`source\_vertex \cup sink\_vertex \bigcup source_i \bigcup target_i`
-
-* the set of edges :math:`E`
-
- - :math:`E = \begin{cases} &\{(source_i, target_i, capacity_i) \text{ when } capacity > 0 \} &\quad \text{ if } reverse\_capacity = \varnothing \\ \\ &\{(source_i, target_i, capacity_i) \text{ when } capacity > 0 \} \\ \cup &\{(target_i, source_i, reverse\_capacity_i) \text{ when } reverse\_capacity_i > 0)\} &\quad \text{ if } reverse\_capacity \neq \varnothing \\ \end{cases}`
-
-
-.. rubric:: Maximum flow problem
-
-Given:
-
-
- - :math:`G(V,E)`
- - :math:`source\_vertex \in V` the source vertex
- - :math:`sink\_vertex \in V` the sink vertex
-
-Then:
-
- :math:`pgr\_maxFlow(edges\_sql, source, sink) = \boldsymbol{\Phi}`
-
- :math:`\boldsymbol{\Phi} = {(id_i, edge\_id_i, source_i, target_i, flow_i, residual\_capacity_i)}`
-
-where:
-
- :math:`\boldsymbol{\Phi}` is a subset of the original edges with their residual capacity and flow. The maximum flow through the graph can be obtained by aggregating on the source or sink and summing the flow from/to it. In particular:
-
- - :math:`id_i = i`
- - :math:`edge\_id = id_i \text{ in edges_sql}`
- - :math:`residual\_capacity_i = capacity_i - flow_i`
-
-
-See Also
---------
-
-* https://en.wikipedia.org/wiki/Maximum_flow_problem
diff --git a/src/max_flow/doc/maxFlowApplications.rst b/src/max_flow/doc/maxFlowApplications.rst
deleted file mode 100644
index 620b2c5..0000000
--- a/src/max_flow/doc/maxFlowApplications.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _maxFlowApplications:
-
-Applications of Maximum Flow
-============================
-
- - :ref:`pgr_maximumCardinalityMatching` - Calculates a maximum cardinality matching in a graph.
- - :ref:`pgr_edgeDisjointPaths` - Calculates edge disjoint paths between two groups of vertices.
-
-Maximum flow algorithms provide solutions to other graph problems.
-
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-.. toctree::
- :hidden:
-
- ./pgr_maximumCardinalityMatching
- ./pgr_edgeDisjointPaths
-
-
-Applications
----------------------------------------------
-
-Maximum cardinality matching
-...............................
-
-- A matching or independent edge set in a graph is a set of edges without common vertices.
-- A maximum matching is a matching that contains the largest possible number of edges.
-- There may be many maximum matchings.
-- The graph can be directed or undirected.
-
-The :ref:`pgr_maximumCardinalityMatching` function can be used to calculate one such maximum matching.
-
-Edge disjoint paths
-...............................
-
-In a undirected/directed graph, two paths are edge-disjoint(or edge-independant) if they do not have any internal edge in common.
-
-While the number of maximum edge disjoint paths is fixed, there may be several different routes.
-
-The :ref:`pgr_edgeDisjointPaths` function returns the maximum number of paths and possible routes.
-
-
-
-See Also
---------
-
-* https://en.wikipedia.org/wiki/Maximum_flow_problem#Application
diff --git a/src/max_flow/doc/pgr_edgeDisjointPaths.rst b/src/max_flow/doc/pgr_edgeDisjointPaths.rst
deleted file mode 100644
index ae9f8ff..0000000
--- a/src/max_flow/doc/pgr_edgeDisjointPaths.rst
+++ /dev/null
@@ -1,225 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-
-.. _pgr_edgeDisjointPaths:
-
-pgr_edgeDisjointPaths - Proposed
-==========================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_edgeDisjointPaths`` — Calculates edge disjoint paths between two groups of vertices.
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html
-
- Boost Graph Inside
-
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Calculates the edge disjoint paths between two groups of vertices.
-Utilizes underlying maximum flow algorithms to calculate the paths.
-
-Characteristics:
-----------------
-
-The main characterics are:
- - Calculates the edge disjoint paths between any two groups of vertices.
- - Returns EMPTY SET when source and destination are the same, or cannot be reached.
- - The graph can be directed or undirected.
- - One to many, many to one, many to many versions are also supported.
- - Uses :ref:`pgr_maxFlowBoykovKolmogorov` to calculate the paths.
- - No `cost` or `aggregate cost` of the paths are returned. (Under discussion)
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_edgeDisjointPaths(edges_sql, source_vertex, destination_vertex)
- pgr_edgeDisjointPaths(edges_sql, source_vertex, destination_vertex, directed)
- pgr_edgeDisjointPaths(edges_sql, source_vertices, destination_vertex, directed)
- pgr_edgeDisjointPaths(edges_sql, source_vertex, destination_vertices, directed)
- pgr_edgeDisjointPaths(edges_sql, source_vertices, destination_vertices, directed)
-
- RETURNS SET OF (seq, path_seq, [start_vid,] [end_vid,] node, edge) OR EMPTY SET
-
-
-Signatures
-----------
-
-.. index::
- single: edgeDisjointPaths(Minimal Use) - Proposed
-
-Minimal signature
-.................
-
-.. code-block:: none
-
- pgr_edgeDisjointPaths(edges_sql, source_vertex, destination_vertex)
- RETURNS SET OF (seq, path_seq, node, edge) OR EMPTY SET
-
-The minimal signature is between `source_vertex` and `destination_vertex` for a `directed` graph.
-
-:Example:
-
-.. literalinclude:: doc-pgr_edgeDisjointPaths.queries
- :start-after: -- q1
- :end-before: -- q2
-
-.. index::
- single: edgeDisjointPaths(One to One) - Proposed
-
-One to One
-.......................................
-
-The available signature calculates edge disjoint paths from one source vertex to one destination vertex.
-The graph can be directed or undirected.
-
-.. code-block:: none
-
- pgr_edgeDisjointPaths(edges_sql, source_vertex, destination_vertex, directed)
- RETURNS SET OF (seq, path_seq, node, edge) OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_edgeDisjointPaths.queries
- :start-after: -- q2
- :end-before: -- q3
-
-
-.. index::
- single: edgeDisjointPaths(One to Many) - Proposed
-
-One to Many
-.......................................
-
-The available signature calculates the maximum flow from one source vertex to many sink vertices.
-
-.. code-block:: none
-
- pgr_edgeDisjointPaths(edges_sql, source_vertex, destination_vertices, directed)
- RETURNS SET OF (seq, path_seq, end_vid, node, edge) OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_edgeDisjointPaths.queries
- :start-after: -- q3
- :end-before: -- q4
-
-
-
-.. index::
- single: edgeDisjointPaths(Many to One) - Proposed
-
-Many to One
-.......................................
-
-The available signature calculates the maximum flow from many source vertices to one sink vertex.
-
-.. code-block:: none
-
- pgr_edgeDisjointPaths(edges_sql, source_vertices, destination_vertex)
- RETURNS SET OF (seq, path_seq, start_vid, node, edge)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_edgeDisjointPaths.queries
- :start-after: -- q4
- :end-before: -- q5
-
-
-
-.. index::
- single: edgeDisjointPaths(Many to Many) - Proposed
-
-Many to Many
-.......................................
-
-The available signature calculates the maximum flow from many sources to many sinks.
-
-.. code-block:: none
-
- pgr_edgeDisjointPaths(edges_sql, source_vertices, destination_vertices, directed)
- RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge) OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_edgeDisjointPaths.queries
- :start-after: -- q5
- :end-before: -- q6
-
-
-
-Description of the Signatures
-----------------------------------------------
-
-Description of the SQL query
-.......................................
-
-:edges_sql: an SQL query, which should return a set of rows with the following columns:
-
-==================== =================== =================================================
-Column Type Description
-==================== =================== =================================================
-**id** ``ANY-INTEGER`` Identifier of the edge.
-**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
-**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
-**going** ``ANY-NUMERIC`` A positive value represents the existence of the edge (source, target).
-**coming** ``ANY-NUMERIC`` A positive value represents the existence of the edge (target, source).
-==================== =================== =================================================
-
-Where:
- - :ANY-INTEGER: SMALLINT, INTEGER, BIGINT
- - :ANY-NUMERIC: SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION
-
-Description of the parameters of the signatures
-........................................................
-
-================= ====================== =================================================
-Column Type Description
-================= ====================== =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**source_vertex** ``BIGINT`` Identifier(s) of the source vertex(vertices).
-**sink_vertex** ``BIGINT`` Identifier(s) of the destination vertex(vertices).
-**directed** ``BOOLEAN`` (optional) Determines the type of the graph. Default TRUE.
-================= ====================== =================================================
-
-Description of the return values
-........................................................
-
-============== ========== =================================================
-Column Type Description
-============== ========== =================================================
-**seq** ``INT`` Sequential value starting from **1**.
-**path_seq** ``INT`` Relative position in the path. Has value **1** for the beginning of a path.
-**start_vid** ``BIGINT`` Identifier of the starting vertex. Used when multiple starting vertices are in the query.
-**end_vid** ``BIGINT`` Identifier of the ending vertex. Used when multiple ending vertices are in the query.
-**node** ``BIGINT`` Identifier of the node in the path from ``start_vid`` to ``end_vid``.
-**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the path.
-============== ========== =================================================
-
-
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/max_flow/doc/pgr_maxFlow.rst b/src/max_flow/doc/pgr_maxFlow.rst
deleted file mode 100644
index 327e1cb..0000000
--- a/src/max_flow/doc/pgr_maxFlow.rst
+++ /dev/null
@@ -1,190 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_maxFlow:
-
-pgr_maxFlow Proposed
-============================================
-
-
-Name
-----
-
-``pgr_maxFlow`` — Calculates the maximum flow in a directed graph given source(s) and sink(s).
-
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html
-
- Boost Graph Inside
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Calculates the maximum flow in a directed graph from a source node to a sink node.
-
-Characteristics:
-----------------
-
-The main characterics are:
- - Calculates the flow/residual capacity for each edge. In the output, edges with zero flow are omitted.
- - The maximum flow through the graph can be calculated by aggregation on source/sink.
- - Edges must be weighted with non-negative capacities.
- - Returns 0 if source and sink are the same.
- - Allows multiple sources and sinks.
- - Running time: :math:`O( V ^ 3)`
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_maxFlow(edges_sql, source_vertex, sink_vertex)
- pgr_maxFlow(edges_sql, source_vertices, sink_vertex)
- pgr_maxFlow(edges_sql, source_vertex, sink_vertices)
- pgr_maxFlow(edges_sql, source_vertices, sink_vertices)
- RETURNS BIGINT
-
-
-Signatures
------------------------
-
-.. index::
- single: maxFlow(One to One) - Proposed
-
-One to One
-.....................................................................
-
-Calculates the maximum flow from one source vertex to one sink vertex in a directed graph.
-
-.. code-block:: none
-
- pgr_maxFlow(edges_sql, source_vertex, sink_vertex)
- RETURNS BIGINT
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlow.queries
- :start-after: -- q1
- :end-before: -- q2
-
-
-.. index::
- single: maxFlow(One to Many) - Proposed
-
-One to Many
-.....................................................................
-
-Ccalculates the maximum flow from one source vertex to many sink vertices in a directed graph.
-
-.. code-block:: none
-
- pgr_maxFlow(edges_sql, source_vertex, sink_vertices)
- RETURNS BIGINT
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlow.queries
- :start-after: -- q2
- :end-before: -- q3
-
-
-.. index::
- single: maxFlow(Many to One) - Proposed
-
-Many to One
-.....................................................................
-
-Calculates the maximum flow from many source vertices to one sink vertex in a directed graph.
-
-.. code-block:: none
-
- pgr_maxFlow(edges_sql, source_vertices, sink_vertex)
- RETURNS BIGINT
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlow.queries
- :start-after: -- q3
- :end-before: -- q4
-
-
-.. index::
- single: maxFlow(Many to Many) - Proposed
-
-Many to Many
-.....................................................................
-
-Calculates the maximum flow from many sources to many sinks in a directed graph.
-
-.. code-block:: none
-
- pgr_maxFlow(edges_sql, source_vertices, sink_vertices)
- RETURNS BIGINT
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlow.queries
- :start-after: -- q4
- :end-before: -- q5
-
-Description of the Signatures
---------------------------------------------------------
-
-
-Description of the SQL query
-.....................................................................
-
-:edges_sql: an SQL query, which should return a set of rows with the following columns:
-
-==================== =================== =================================================
-Column Type Description
-==================== =================== =================================================
-**id** ``ANY-INTEGER`` Identifier of the edge.
-**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
-**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
-**capacity** ``ANY-INTEGER`` Capacity of the edge `(source, target)`. Must be positive.
-**reverse_capacity** ``ANY-INTEGER`` (optional) Weight of the edge `(target, source)`. Must be positive or null.
-==================== =================== =================================================
-
-Where:
-
-:ANY-INTEGER: SMALLINT, INTEGER, BIGINT
-
-
-Description of the parameters of the signatures
-.....................................................................
-
-================= ====================== =================================================
-Column Type Description
-================= ====================== =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**source_vertex** ``BIGINT`` Identifier of the source vertex(or vertices).
-**sink_vertex** ``BIGINT`` Identifier of the sink vertex(or vertices).
-================= ====================== =================================================
-
-
-See Also
---------
-
-* :ref:`maxFlow`
-* http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html
-* https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/max_flow/doc/pgr_maxFlowBoykovKolmogorov.rst b/src/max_flow/doc/pgr_maxFlowBoykovKolmogorov.rst
deleted file mode 100644
index 31d1f2b..0000000
--- a/src/max_flow/doc/pgr_maxFlowBoykovKolmogorov.rst
+++ /dev/null
@@ -1,219 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
- INSTRUCTIONS
- - if section consists of only one value then use this file as index.rst
- - change [...] (including the square braquets) to appropriate values
- - one file / function, may signatures of the same function go in the same file
-
-.. _pgr_maxFlowBoykovKolmogorov:
-
-pgr_maxFlowBoykovKolmogorov - Proposed
-======================================================
-
-
-Name
-----
-
-``pgr_maxFlowBoykovKolmogorov`` — Calculates the maximum flow in a directed graph given a source and a destination. Implemented by Boost Graph Library.
-
-
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html
-
- Boost Graph Inside
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Calculates the maximum flow in a directed graph from a source node to a sink node.
-Edges must be weighted with non-negative capacities.
-Developed by Boykov and Kolmogorov.
-
-
-Characteristics:
-----------------
-
-The main characterics are:
- - The graph must be directed.
- - Calculates the flow/residual capacity for each edge. In the output, edges with zero flow are omitted.
- - The maximum flow through the graph can be calculated by aggregation on source/sink.
- - Returns nothing if source and sink are the same.
- - Allows multiple sources and sinks (See signatures below).
- - Running time: in general polynomial complexity, performs well on graphs that represent 2D grids (eg.: roads).
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_maxFlowBoykovKolmogorov(edges_sql, source_vertex, sink_vertex)
- pgr_maxFlowBoykovKolmogorov(edges_sql, source_vertices, sink_vertex)
- pgr_maxFlowBoykovKolmogorov(edges_sql, source_vertex, sink_vertices)
- pgr_maxFlowBoykovKolmogorov(edges_sql, source_vertices, sink_vertices)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-
-Signatures
-----------------------------
-
-.. index::
- single: maxFlowBoykovKolmogorov(One to One) - Proposed
-
-One to One
-..............................................
-
-The available signature calculates the maximum flow from one source vertex to one sink vertex.
-
-.. code-block:: none
-
- pgr_maxFlowBoykovKolmogorov(edges_sql, source_vertex, sink_vertex)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowBoykovKolmogorov.queries
- :start-after: -- q1
- :end-before: -- q2
-
-
-.. index::
- single: maxFlowBoykovKolmogorov(One to Many) - Proposed
-
-One to Many
-..............................................
-
-The available signature calculates the maximum flow from one source vertex to many sink vertices.
-
-.. code-block:: none
-
- pgr_maxFlowBoykovKolmogorov(edges_sql, source_vertex, sink_vertices)
- RETURNS SET OF (id, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowBoykovKolmogorov.queries
- :start-after: -- q2
- :end-before: -- q3
-
-
-.. index::
- single: maxFlowBoykovKolmogorov(Many to One) - Proposed
-
-Many to One
-..............................................
-
-The available signature calculates the maximum flow from many source vertices to one sink vertex.
-
-.. code-block:: none
-
- pgr_maxFlowBoykovKolmogorov(edges_sql, source_vertices, sink_vertex)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowBoykovKolmogorov.queries
- :start-after: -- q3
- :end-before: -- q4
-
-
-.. index::
- single: maxFlowBoykovKolmogorov(Many to Many) - Proposed
-
-Many to Many
-..............................................
-
-The available signature calculates the maximum flow from many sources to many sinks.
-
-.. code-block:: none
-
- pgr_maxFlowBoykovKolmogorov(edges_sql, source_vertices, sink_vertices)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowBoykovKolmogorov.queries
- :start-after: -- q4
- :end-before: -- q5
-
-
-
-
-Description of the Signatures
---------------------------------------------------------
-
-Description of the SQL query
-..............................................
-
-:edges_sql: an SQL query, which should return a set of rows with the following columns:
-
-==================== =================== =================================================
-Column Type Description
-==================== =================== =================================================
-**id** ``ANY-INTEGER`` Identifier of the edge.
-**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
-**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
-**capacity** ``ANY-INTEGER`` Capacity of the edge `(source, target)`. Must be positive.
-**reverse_capacity** ``ANY-INTEGER`` (optional) Weight of the edge `(target, source)`. Must be positive or null.
-==================== =================== =================================================
-
-Where:
-
-:ANY-INTEGER: SMALLINT, INTEGER, BIGINT
-
-
-Description of the parameters of the signatures
-.......................................................
-
-================= ====================== =================================================
-Column Type Description
-================= ====================== =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**source_vertex** ``BIGINT`` Identifier of the source vertex(or vertices).
-**sink_vertex** ``BIGINT`` Identifier of the sink vertex(or vertices).
-================= ====================== =================================================
-
-Description of the Return Values
-.......................................................
-
-===================== ==================== =================================================
-Column Type Description
-===================== ==================== =================================================
-**seq** ``INT`` Sequential value starting from **1**.
-**edge_id** ``BIGINT`` Identifier of the edge in the original query(edges_sql).
-**source** ``BIGINT`` Identifier of the first end point vertex of the edge.
-**target** ``BIGINT`` Identifier of the second end point vertex of the edge.
-**flow** ``BIGINT`` Flow through the edge in the direction (source, target).
-**residual_capacity** ``BIGINT`` Residual capacity of the edge in the direction (source, target).
-===================== ==================== =================================================
-
-See Also
---------
-
-* http://www.boost.org/libs/graph/doc/boykov_kolmogorov_max_flow.html
-* http://www.csd.uwo.ca/~yuri/Papers/pami04.pdf
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/max_flow/doc/pgr_maxFlowEdmondsKarp.rst b/src/max_flow/doc/pgr_maxFlowEdmondsKarp.rst
deleted file mode 100644
index 7bcf50b..0000000
--- a/src/max_flow/doc/pgr_maxFlowEdmondsKarp.rst
+++ /dev/null
@@ -1,209 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-
-.. _pgr_maxFlowEdmondsKarp:
-
-pgr_maxFlowEdmondsKarp - Proposed
-============================================
-
-
-Name
-----
-
-``pgr_maxFlowEdmondsKarp`` — Calculates the maximum flow in a directed graph given a source and a destination. Implemented by Boost Graph Library.
-
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html
-
- Boost Graph Inside
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Calculates the maximum flow in a directed graph from a source node to a sink node.
-Edges must be weighted with non-negative capacities.
-Developed by Edmonds and Karp.
-
-
-Characteristics:
-----------------
-
-The main characterics are:
- - The graph must be directed.
- - Calculates the flow/residual capacity for each edge. In the output, edges with zero flow are omitted.
- - The maximum flow through the graph can be calculated by aggregation on source/sink.
- - Returns nothing if source and sink are the same.
- - Allows multiple sources and sinks (See signatures below).
- - Running time: :math:`O(V * E^2)`.
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_maxFlowEdmondsKarp(edges_sql, source_vertex, sink_vertex)
- pgr_maxFlowEdmondsKarp(edges_sql, source_vertices, sink_vertex)
- pgr_maxFlowEdmondsKarp(edges_sql, source_vertex, sink_vertices)
- pgr_maxFlowEdmondsKarp(edges_sql, source_vertices, sink_vertices)
- RETURNS SET OF (id, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-Signatures
------------------------
-
-.. index::
- single: maxFlowEdmondsKarp(One to One) - Proposed
-
-One to One
-.................................................
-
-Calculates the maximum flow from one source vertex to one sink vertex on a `directed` graph.
-
-.. code-block:: none
-
- pgr_maxFlowEdmondsKarp(edges_sql, source_vertex, sink_vertex)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowEdmondsKarp.queries
- :start-after: -- q1
- :end-before: -- q2
-
-.. index::
- single: maxFlowEdmondsKarp(One to Many) - Proposed
-
-One to Many
-.................................................
-
-Calculates the maximum flow from one source vertex to many sink vertices on a `directed` graph.
-
-.. code-block:: none
-
- pgr_maxFlowEdmondsKarp(edges_sql, source_vertex, sink_vertices)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowEdmondsKarp.queries
- :start-after: -- q2
- :end-before: -- q3
-
-.. index::
- single: maxFlowEdmondsKarp(Many to One) - Proposed
-
-Many to One
-.................................................
-
-Calculates the maximum flow from many source vertices to one sink vertex on a `directed` graph.
-
-.. code-block:: none
-
- pgr_maxFlowEdmondsKarp(edges_sql, source_vertices, sink_vertex)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowEdmondsKarp.queries
- :start-after: -- q3
- :end-before: -- q4
-
-.. index::
- single: maxFlowEdmondsKarp(Many to Many) - Proposed
-
-Many to Many
-.................................................
-
-Calculates the maximum flow from many sources to many sinks on a `directed` graph.
-
-.. code-block:: none
-
- pgr_maxFlowEdmondsKarp(edges_sql, source_vertices, sink_vertices)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowEdmondsKarp.queries
- :start-after: -- q4
- :end-before: -- q5
-
-
-
-Description of the Signatures
------------------------------------------------
-
-Description of the SQL query
-.................................................
-
-:edges_sql: an SQL query, which should return a set of rows with the following columns:
-
-==================== =================== =================================================
-Column Type Description
-==================== =================== =================================================
-**id** ``ANY-INTEGER`` Identifier of the edge.
-**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
-**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
-**capacity** ``ANY-INTEGER`` Capacity of the edge `(source, target)`. Must be positive.
-**reverse_capacity** ``ANY-INTEGER`` (optional) Weight of the edge `(target, source)`. Must be positive or null.
-==================== =================== =================================================
-
-Where:
-
-:ANY-INTEGER: SMALLINT, INTEGER, BIGINT
-
-
-Description of the parameters of the signatures
-.................................................
-
-================= ====================== =================================================
-Column Type Description
-================= ====================== =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**source_vertex** ``BIGINT`` Identifier of the source vertex(or vertices).
-**sink_vertex** ``BIGINT`` Identifier of the sink vertex(or vertices).
-================= ====================== =================================================
-
-Description of the return values
-.................................................
-
-===================== ==================== =================================================
-Column Type Description
-===================== ==================== =================================================
-**seq** ``INT`` Sequential value starting from **1**.
-**edge_id** ``BIGINT`` Identifier of the edge in the original query(edges_sql).
-**source** ``BIGINT`` Identifier of the first end point vertex of the edge.
-**target** ``BIGINT`` Identifier of the second end point vertex of the edge.
-**flow** ``BIGINT`` Flow through the edge in the direction (source, target).
-**residual_capacity** ``BIGINT`` Residual capacity of the edge in the direction (source, target).
-===================== ==================== =================================================
-
-See Also
---------
-
-* :ref:`maxFlow`
-* http://www.boost.org/libs/graph/doc/edmonds_karp_max_flow.html
-* https://en.wikipedia.org/wiki/Edmonds%E2%80%93Karp_algorithm
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/max_flow/doc/pgr_maxFlowPushRelabel.rst b/src/max_flow/doc/pgr_maxFlowPushRelabel.rst
deleted file mode 100644
index 0516895..0000000
--- a/src/max_flow/doc/pgr_maxFlowPushRelabel.rst
+++ /dev/null
@@ -1,213 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
- INSTRUCTIONS
- - if section consists of only one value then use this file as index.rst
- - change [...] (including the square braquets) to appropriate values
- - one file / function, may signatures of the same function go in the same file
-
-.. _pgr_maxFlowPushRelabel:
-
-pgr_maxFlowPushRelabel Proposed
-============================================
-
-
-Name
-----
-
-``pgr_maxFlowPushRelabel`` — Calculates the maximum flow in a directed graph given a source and a destination.
-
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html
-
- Boost Graph Inside
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Calculates the maximum flow in a directed graph from a source node to a sink node.
-Edges must be weighted with non-negative capacities.
-
-Characteristics:
-----------------
-
-The main characterics are:
- - Calculates the flow/residual capacity for each edge. In the output, edges with zero flow are omitted.
- - The maximum flow through the graph can be calculated by aggregation on source/sink.
- - Returns nothing if source and sink are the same.
- - Allows multiple sources and sinks.
- - Running time: :math:`O( V ^ 3)`
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_maxFlowPushRelabel(edges_sql, source_vertex, sink_vertex)
- pgr_maxFlowPushRelabel(edges_sql, source_vertices, sink_vertex)
- pgr_maxFlowPushRelabel(edges_sql, source_vertex, sink_vertices)
- pgr_maxFlowPushRelabel(edges_sql, source_vertices, sink_vertices)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-
-Signatures
------------------------
-
-.. index::
- single: maxFlowPushRelabel(One to One) - Proposed
-
-One to One
-.....................................................................
-
-Calculates the maximum flow from one source vertex to one sink vertex in a directed graph.
-
-.. code-block:: none
-
- pgr_maxFlowPushRelabel(edges_sql, source_vertex, sink_vertex)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowPushRelabel.queries
- :start-after: -- q1
- :end-before: -- q2
-
-
-.. index::
- single: maxFlowPushRelabel(One to Many) - Proposed
-
-One to Many
-.....................................................................
-
-Ccalculates the maximum flow from one source vertex to many sink vertices in a directed graph.
-
-.. code-block:: none
-
- pgr_maxFlowPushRelabel(edges_sql, source_vertex, sink_vertices)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowPushRelabel.queries
- :start-after: -- q2
- :end-before: -- q3
-
-
-.. index::
- single: maxFlowPushRelabel(Many to One) - Proposed
-
-Many to One
-.....................................................................
-
-Calculates the maximum flow from many source vertices to one sink vertex in a directed graph.
-
-.. code-block:: none
-
- pgr_maxFlowPushRelabel(edges_sql, source_vertices, sink_vertex)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowPushRelabel.queries
- :start-after: -- q3
- :end-before: -- q4
-
-
-.. index::
- single: maxFlowPushRelabel(Many to Many) - Proposed
-
-Many to Many
-.....................................................................
-
-Calculates the maximum flow from many sources to many sinks in a directed graph.
-
-.. code-block:: none
-
- pgr_maxFlowPushRelabel(edges_sql, source_vertices, sink_vertices)
- RETURNS SET OF (seq, edge_id, source, target, flow, residual_capacity)
- OR EMPTY SET
-
-:Example:
-
-.. literalinclude:: doc-pgr_maxFlowPushRelabel.queries
- :start-after: -- q4
- :end-before: -- q5
-
-Description of the Signatures
---------------------------------------------------------
-
-
-Description of the SQL query
-.....................................................................
-
-:edges_sql: an SQL query, which should return a set of rows with the following columns:
-
-==================== =================== =================================================
-Column Type Description
-==================== =================== =================================================
-**id** ``ANY-INTEGER`` Identifier of the edge.
-**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
-**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
-**capacity** ``ANY-INTEGER`` Capacity of the edge `(source, target)`. Must be positive.
-**reverse_capacity** ``ANY-INTEGER`` (optional) Weight of the edge `(target, source)`. Must be positive or null.
-==================== =================== =================================================
-
-Where:
-
-:ANY-INTEGER: SMALLINT, INTEGER, BIGINT
-
-
-Description of the parameters of the signatures
-.....................................................................
-
-================= ====================== =================================================
-Column Type Description
-================= ====================== =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**source_vertex** ``BIGINT`` Identifier of the source vertex(or vertices).
-**sink_vertex** ``BIGINT`` Identifier of the sink vertex(or vertices).
-================= ====================== =================================================
-
-Description of the Return Values
-.....................................................................
-
-===================== ==================== =================================================
-Column Type Description
-===================== ==================== =================================================
-**seq** ``INT`` Sequential value starting from **1**.
-**edge_id** ``BIGINT`` Identifier of the edge in the original query(edges_sql).
-**source** ``BIGINT`` Identifier of the first end point vertex of the edge.
-**target** ``BIGINT`` Identifier of the second end point vertex of the edge.
-**flow** ``BIGINT`` Flow through the edge in the direction (source, target).
-**residual_capacity** ``BIGINT`` Residual capacity of the edge in the direction (source, target).
-===================== ==================== =================================================
-
-See Also
---------
-
-* :ref:`maxFlow`
-* http://www.boost.org/libs/graph/doc/push_relabel_max_flow.html
-* https://en.wikipedia.org/wiki/Push%E2%80%93relabel_maximum_flow_algorithm
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/max_flow/doc/pgr_maximumCardinalityMatching.rst b/src/max_flow/doc/pgr_maximumCardinalityMatching.rst
deleted file mode 100644
index da642ff..0000000
--- a/src/max_flow/doc/pgr_maximumCardinalityMatching.rst
+++ /dev/null
@@ -1,171 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_maximumCardinalityMatching:
-
-pgr_maximumCardinalityMatching - Proposed
-============================================================
-
-
-Name
-----
-
-``pgr_maximumCardinalityMatching`` — Calculates a maximum cardinality matching in a graph.
-
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph/doc/maximum_matching.html
-
- Boost Graph Inside
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Calculates a maximum cardinality matching in a directed/undirected graph.
-
-- A matching or independent edge set in a graph is a set of edges without common vertices.
-- A maximum matching is a matching that contains the largest possible number of edges.
-- There may be many maximum matchings.
-
-
-Characteristics:
-----------------
-
-The main characterics are:
- - Calculates **one** possible maximum cardinality matching in a graph.
- - The graph can be directed or undirected.
- - Running time: :math:`O( E*V * \alpha(E,V))`
- - :math:`\alpha(E,V)` is the inverse of the `Ackermann function`_.
-
- .. _Ackermann function: https://en.wikipedia.org/wiki/Ackermann_function
-
-Signature Summary
------------------
-
-
-.. code-block:: none
-
- pgr_MaximumCardinalityMatching(edges_sql)
- pgr_MaximumCardinalityMatching(edges_sql, directed)
-
- RETURNS SET OF (seq, edge_id, source, target)
- OR EMPTY SET
-
-
-Signatures
-----------
-
-.. index::
- single: MaximumCardinalityMatching(Minimal Use) - Proposed
-
-
-
-Minimal signature
-....................
-
-.. code-block:: none
-
- pgr_MaximumCardinalityMatching(edges_sql)
- RETURNS SET OF (seq, edge_id, source, target) OR EMPTY SET
-
-The minimal signature calculates one possible maximum cardinality matching on a `directed` graph.
-
-:Example:
-
-.. literalinclude:: doc-pgr_maximumCardinalityMatching.queries
- :start-after: -- q1
- :end-before: -- q2
-
-.. index::
- single: MaximumCardinalityMatching(Complete Signature) - Proposed
-
-Complete signature
-....................
-
-.. code-block:: none
-
- pgr_MaximumCardinalityMatching(edges_sql, directed)
- RETURNS SET OF (seq, edge_id, source, target) OR EMPTY SET
-
-
-The complete signature calculates one possible maximum cardinality matching.
-
-:Example:
-
-.. literalinclude:: doc-pgr_maximumCardinalityMatching.queries
- :start-after: -- q2
- :end-before: -- q3
-
-
-
-Description of the Signatures
---------------------------------------------------------
-
-
-Description of the SQL query
-...........................................................
-
-:edges_sql: an SQL query, which should return a set of rows with the following columns:
-
-==================== =================== =================================================
-Column Type Description
-==================== =================== =================================================
-**id** ``ANY-INTEGER`` Identifier of the edge.
-**source** ``ANY-INTEGER`` Identifier of the first end point vertex of the edge.
-**target** ``ANY-INTEGER`` Identifier of the second end point vertex of the edge.
-**going** ``ANY-NUMERIC`` A positive value represents the existence of the edge (source, target).
-**coming** ``ANY-NUMERIC`` A positive value represents the existence of the edge (target, source).
-==================== =================== =================================================
-
-Where:
-
- - :ANY-INTEGER: SMALLINT, INTEGER, BIGINT
- - :ANY-NUMERIC: SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION
-
-Description of the parameters of the signatures
-...........................................................
-
-================= ====================== =================================================
-Column Type Description
-================= ====================== =================================================
-**edges_sql** ``TEXT`` SQL query as described above.
-**directed** ``BOOLEAN`` (optional) Determines the type of the graph. Default TRUE.
-================= ====================== =================================================
-
-Description of the Result
-...........................................................
-
-===================== ==================== =================================================
-Column Type Description
-===================== ==================== =================================================
-**seq** ``INT`` Sequential value starting from **1**.
-**edge_id** ``BIGINT`` Identifier of the edge in the original query(edges_sql).
-**source** ``BIGINT`` Identifier of the first end point vertex of the edge.
-**target** ``BIGINT`` Identifier of the second end point vertex of the edge.
-===================== ==================== =================================================
-
-See Also
---------
-
-* :ref:`maxFlow`
-* http://www.boost.org/libs/graph/doc/maximum_matching.html
-* https://en.wikipedia.org/wiki/Matching_%28graph_theory%29
-* https://en.wikipedia.org/wiki/Ackermann_function
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/max_flow/sql/CMakeLists.txt b/src/max_flow/sql/CMakeLists.txt
deleted file mode 100644
index c20d006..0000000
--- a/src/max_flow/sql/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/max_flow.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/only_flow.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/maximum_cardinality_matching.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/edge_disjoint_paths.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/max_flow/sql/edge_disjoint_paths.sql b/src/max_flow/sql/edge_disjoint_paths.sql
deleted file mode 100644
index 83a347e..0000000
--- a/src/max_flow/sql/edge_disjoint_paths.sql
+++ /dev/null
@@ -1,102 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2016 Andrea Nardelli
-mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-/***********************************
- ONE TO ONE
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
- IN edges_sql TEXT,
- IN source_vertex bigint,
- IN destination_vertex bigint,
- IN directed BOOLEAN DEFAULT TRUE,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT
- )
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'edge_disjoint_paths_one_to_one'
- LANGUAGE c IMMUTABLE STRICT;
-
-/***********************************
- ONE TO MANY
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
- IN edges_sql TEXT,
- IN source_vertex bigint,
- IN destination_vertices ANYARRAY,
- IN directed BOOLEAN DEFAULT TRUE,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT
- )
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'edge_disjoint_paths_one_to_many'
- LANGUAGE c IMMUTABLE STRICT;
-
-/***********************************
- MANY TO ONE
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
- IN edges_sql TEXT,
- IN source_vertices ANYARRAY,
- IN destination_vertex BIGINT,
- IN directed BOOLEAN DEFAULT TRUE,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT
- )
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'edge_disjoint_paths_many_to_one'
- LANGUAGE c IMMUTABLE STRICT;
-
-/***********************************
- MANY TO MANY
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
- IN edges_sql TEXT,
- IN source_vertices ANYARRAY,
- IN destination_vertices ANYARRAY,
- IN directed BOOLEAN DEFAULT TRUE,
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT
- )
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'edge_disjoint_paths_many_to_many'
- LANGUAGE c IMMUTABLE STRICT;
\ No newline at end of file
diff --git a/src/max_flow/sql/max_flow.sql b/src/max_flow/sql/max_flow.sql
deleted file mode 100644
index 3e17829..0000000
--- a/src/max_flow/sql/max_flow.sql
+++ /dev/null
@@ -1,366 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2016 Andrea Nardelli
-mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-/***********************************
- ONE TO ONE
-***********************************/
-
---INTERNAL FUNCTIONS
-
-CREATE OR REPLACE FUNCTION _pgr_maxflow(
- edges_sql TEXT,
- source_vertex BIGINT,
- sink_vertex BIGINT,
- algorithm TEXT DEFAULT 'push_relabel',
- only_flow BOOLEAN DEFAULT false,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'max_flow_one_to_one'
- LANGUAGE c IMMUTABLE STRICT;
-
---FUNCTIONS
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
- edges_sql TEXT,
- source_vertex BIGINT,
- sink_vertex BIGINT,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'push_relabel');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
- edges_sql TEXT,
- source_vertex BIGINT,
- sink_vertex BIGINT,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'boykov_kolmogorov');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
- edges_sql TEXT,
- source_vertex BIGINT,
- sink_vertex BIGINT,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'edmonds_karp');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-/***********************************
- ONE TO MANY
-***********************************/
-
---INTERNAL FUNCTIONS
-
-CREATE OR REPLACE FUNCTION _pgr_maxflow(
- edges_sql TEXT,
- source_vertex BIGINT,
- sink_vertices ANYARRAY,
- algorithm TEXT DEFAULT 'push_relabel',
- only_flow BOOLEAN DEFAULT false,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'max_flow_one_to_many'
- LANGUAGE c IMMUTABLE STRICT;
-
---FUNCTIONS
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
- edges_sql TEXT,
- source_vertex BIGINT,
- sink_vertices ANYARRAY,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'push_relabel');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
- edges_sql TEXT,
- source_vertex BIGINT,
- sink_vertices ANYARRAY,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'boykov_kolmogorov');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
- edges_sql TEXT,
- source_vertex BIGINT,
- sink_vertices ANYARRAY,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'edmonds_karp');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-/***********************************
- MANY TO ONE
-***********************************/
-
---INTERNAL FUNCTIONS
-
-CREATE OR REPLACE FUNCTION _pgr_maxflow(
- edges_sql TEXT,
- source_vertices ANYARRAY,
- sink_vertex BIGINT,
- algorithm TEXT DEFAULT 'push_relabel',
- only_flow BOOLEAN DEFAULT false,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'max_flow_many_to_one'
- LANGUAGE c IMMUTABLE STRICT;
-
---FUNCTIONS
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
- edges_sql TEXT,
- source_vertices ANYARRAY,
- sink_vertex BIGINT,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'push_relabel');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
- edges_sql TEXT,
- source_vertices ANYARRAY,
- sink_vertex BIGINT,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'boykov_kolmogorov');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
- edges_sql TEXT,
- source_vertices ANYARRAY,
- sink_vertex BIGINT,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'edmonds_karp');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-/***********************************
- MANY TO MANY
-***********************************/
-
---INTERNAL FUNCTIONS
-
-CREATE OR REPLACE FUNCTION _pgr_maxflow(
- edges_sql TEXT,
- source_vertices ANYARRAY,
- sink_vertices ANYARRAY,
- algorithm TEXT DEFAULT 'push_relabel',
- only_flow BOOLEAN DEFAULT false,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'max_flow_many_to_many'
- LANGUAGE c IMMUTABLE STRICT;
-
---FUNCTIONS
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
- edges_sql TEXT,
- source_vertices ANYARRAY,
- sink_vertices ANYARRAY,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'push_relabel');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
- edges_sql TEXT,
- source_vertices ANYARRAY,
- sink_vertices ANYARRAY,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'boykov_kolmogorov');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
-CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
- edges_sql TEXT,
- source_vertices ANYARRAY,
- sink_vertices ANYARRAY,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT,
- OUT flow BIGINT,
- OUT residual_capacity BIGINT
- )
- RETURNS SETOF RECORD AS
- $BODY$
- BEGIN
- RETURN QUERY SELECT *
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, 'edmonds_karp');
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE;
-
diff --git a/src/max_flow/sql/maximum_cardinality_matching.sql b/src/max_flow/sql/maximum_cardinality_matching.sql
deleted file mode 100644
index abfbcef..0000000
--- a/src/max_flow/sql/maximum_cardinality_matching.sql
+++ /dev/null
@@ -1,39 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2016 Andrea Nardelli
-mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
---FUNCTIONS
-
-CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
- edges_sql TEXT,
- directed BOOLEAN DEFAULT TRUE,
- OUT seq INTEGER,
- OUT edge_id BIGINT,
- OUT source BIGINT,
- OUT target BIGINT
- )
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'maximum_cardinality_matching'
- LANGUAGE c IMMUTABLE STRICT;
\ No newline at end of file
diff --git a/src/max_flow/sql/only_flow.sql b/src/max_flow/sql/only_flow.sql
deleted file mode 100644
index c71cdb5..0000000
--- a/src/max_flow/sql/only_flow.sql
+++ /dev/null
@@ -1,86 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-/***********************************
- ONE TO ONE
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_maxFlow(
- edges_sql TEXT,
- source_vertices BIGINT,
- sink_vertices BIGINT
- )
- RETURNS BIGINT AS
- $BODY$
- SELECT coalesce(sum(flow), 0)::BIGINT
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, algorithm := 'push_relabel', only_flow := true);
- $BODY$
- LANGUAGE SQL VOLATILE;
-
-/***********************************
- ONE TO MANY
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_maxFlow(
- edges_sql TEXT,
- source_vertices BIGINT,
- sink_vertices ANYARRAY
- )
- RETURNS BIGINT AS
- $BODY$
- SELECT flow
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, algorithm := 'push_relabel', only_flow := true);
- $BODY$
- LANGUAGE SQL VOLATILE;
-
-/***********************************
- MANY TO ONE
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_maxFlow(
- edges_sql TEXT,
- source_vertices ANYARRAY,
- sink_vertices BIGINT
- )
- RETURNS BIGINT AS
- $BODY$
- SELECT flow
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, algorithm := 'push_relabel', only_flow := true);
- $BODY$
- LANGUAGE SQL VOLATILE;
-
-/***********************************
- MANY TO MANY
-***********************************/
-
-CREATE OR REPLACE FUNCTION pgr_maxFlow(
- edges_sql TEXT,
- source_vertices ANYARRAY,
- sink_vertices ANYARRAY
- )
- RETURNS BIGINT AS
- $BODY$
- SELECT flow
- FROM _pgr_maxflow(_pgr_get_statement($1), $2, $3, algorithm := 'push_relabel', only_flow := true);
- $BODY$
- LANGUAGE SQL VOLATILE;
diff --git a/src/max_flow/src/CMakeLists.txt b/src/max_flow/src/CMakeLists.txt
index 483741b..03fa1ff 100644
--- a/src/max_flow/src/CMakeLists.txt
+++ b/src/max_flow/src/CMakeLists.txt
@@ -1,17 +1,12 @@
ADD_LIBRARY(max_flow OBJECT
- max_flow_one_to_one.c
- max_flow_many_to_many.c
- max_flow_one_to_many.c
- max_flow_many_to_one.c
+ max_flow.c
+ maximum_cardinality_matching.c
+ edge_disjoint_paths.c
- maximum_cardinality_matching.c
+ max_flow_driver.cpp
+ maximum_cardinality_matching_driver.cpp
+ edge_disjoint_paths_driver.cpp
- edge_disjoint_paths_one_to_one.c
- edge_disjoint_paths_one_to_many.c
- edge_disjoint_paths_many_to_many.c
- edge_disjoint_paths_many_to_one.c
-
- max_flow_driver.cpp
- maximum_cardinality_matching_driver.cpp
- edge_disjoint_paths_driver.cpp
-)
+ pgr_maxflow.cpp
+ pgr_flowgraph.cpp
+ )
diff --git a/src/max_flow/src/edge_disjoint_paths.c b/src/max_flow/src/edge_disjoint_paths.c
new file mode 100644
index 0000000..862668a
--- /dev/null
+++ b/src/max_flow/src/edge_disjoint_paths.c
@@ -0,0 +1,201 @@
+/*PGR-GNU*****************************************************************
+File: edge_disjoint_paths_many_to_many.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2016 Andrea Nardelli
+Mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "c_common/postgres_connection.h"
+#include "utils/array.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+#include "./edge_disjoint_paths_driver.h"
+
+PGDLLEXPORT Datum
+edge_disjoint_paths_many_to_many(PG_FUNCTION_ARGS);
+
+static
+void
+process(
+ char *edges_sql,
+ ArrayType *starts,
+ ArrayType *ends,
+
+ bool directed,
+ General_path_element_t **result_tuples,
+ size_t *result_count) {
+ pgr_SPI_connect();
+
+ size_t size_source_verticesArr = 0;
+ int64_t* source_vertices =
+ pgr_get_bigIntArray(&size_source_verticesArr, starts);
+
+ size_t size_sink_verticesArr = 0;
+ int64_t* sink_vertices =
+ pgr_get_bigIntArray(&size_sink_verticesArr, ends);
+
+
+ pgr_edge_t *edges = NULL;
+ size_t total_edges = 0;
+
+ pgr_get_edges(edges_sql, &edges, &total_edges);
+
+ if (total_edges == 0) {
+ if (source_vertices) pfree(source_vertices);
+ if (sink_vertices) pfree(sink_vertices);
+ pgr_SPI_finish();
+ return;
+ }
+
+
+ PGR_DBG("Starting timer");
+ clock_t start_t = clock();
+ char* log_msg = NULL;
+ char* notice_msg = NULL;
+ char* err_msg = NULL;
+
+ do_pgr_edge_disjoint_paths(
+ edges, total_edges,
+ source_vertices, size_source_verticesArr,
+ sink_vertices, size_sink_verticesArr,
+ directed,
+
+ result_tuples, result_count,
+
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ time_msg("pgr_edgeDisjointPaths(many to many)", start_t, clock());
+
+ if (edges) pfree(edges);
+ if (source_vertices) pfree(source_vertices);
+ if (sink_vertices) pfree(sink_vertices);
+
+ if (err_msg && (*result_tuples)) {
+ pfree(*result_tuples);
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+ }
+
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+ pgr_SPI_finish();
+}
+
+PG_FUNCTION_INFO_V1(edge_disjoint_paths_many_to_many);
+PGDLLEXPORT Datum
+edge_disjoint_paths_many_to_many(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**************************************************************************/
+ General_path_element_t *result_tuples = NULL;
+ size_t result_count = 0;
+ /**************************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
+ PG_GETARG_BOOL(3),
+ &result_tuples,
+ &result_count);
+
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 95
+ funcctx->max_calls = result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (General_path_element_t *) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool *nulls;
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+
+ values = palloc(9 * sizeof(Datum));
+ nulls = palloc(9 * sizeof(bool));
+
+ size_t i;
+ for (i = 0; i < 9; ++i) {
+ nulls[i] = false;
+ }
+
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].start_id + 1);
+ values[2] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
+ values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].start_id);
+ values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].end_id);
+ values[5] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
+ values[6] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
+ values[7] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
+ values[8] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
+ /**********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ SRF_RETURN_DONE(funcctx);
+ }
+}
+
diff --git a/src/max_flow/src/edge_disjoint_paths_driver.cpp b/src/max_flow/src/edge_disjoint_paths_driver.cpp
index 00f3c4c..f72d842 100644
--- a/src/max_flow/src/edge_disjoint_paths_driver.cpp
+++ b/src/max_flow/src/edge_disjoint_paths_driver.cpp
@@ -27,25 +27,49 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./pgr_edgedisjointpaths.hpp"
+#include "./edge_disjoint_paths_driver.h"
#include <sstream>
#include <vector>
#include <set>
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
-
-#include "./edge_disjoint_paths_driver.h"
+#include "./pgr_maxflow.hpp"
+
+#include "cpp_common/identifiers.hpp"
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+
+static
+std::vector<General_path_element_t>
+single_execution(
+ std::vector<pgr_edge_t> edges,
+ int64_t source,
+ int64_t target,
+ bool directed) {
+
+ std::set<int64_t> set_source_vertices;
+ std::set<int64_t> set_sink_vertices;
+ set_source_vertices.insert(source);
+ set_sink_vertices.insert(target);
+ pgrouting::graph::PgrFlowGraph G(
+ edges,
+ set_source_vertices,
+ set_sink_vertices, directed);
+
+ /*
+ * boykov_kolmogorov is only for directed graphs
+ */
+ return G.edge_disjoint_paths();
+}
void
do_pgr_edge_disjoint_paths(
- pgr_basic_edge_t *data_edges,
+ pgr_edge_t *data_edges,
size_t total_edges,
- int64_t *source_vertices,
+ int64_t *sources,
size_t size_source_verticesArr,
- int64_t *sink_vertices,
+ int64_t *sinks,
size_t size_sink_verticesArr,
bool directed,
General_path_element_t **return_tuples,
@@ -57,33 +81,82 @@ do_pgr_edge_disjoint_paths(
std::ostringstream notice;
std::ostringstream err;
try {
- std::vector<General_path_element_t> path_elements;
- std::set<int64_t> set_source_vertices;
- std::set<int64_t> set_sink_vertices;
- for (size_t i = 0; i < size_source_verticesArr; ++i) {
- set_source_vertices.insert(source_vertices[i]);
+ std::set<int64_t> set_source_vertices(
+ sources, sources + size_source_verticesArr);
+ std::set<int64_t> set_sink_vertices(
+ sinks, sinks + size_sink_verticesArr);
+ std::vector<pgr_edge_t> edges(
+ data_edges, data_edges + total_edges);
+
+
+ std::vector<General_path_element_t> paths;
+ for (const auto &s : set_source_vertices) {
+ for (const auto &t : set_sink_vertices) {
+ auto path = single_execution(
+ edges,
+ s,
+ t,
+ directed);
+ paths.insert(paths.end(), path.begin(), path.end());
+ }
}
- for (size_t i = 0; i < size_sink_verticesArr; ++i) {
- set_sink_vertices.insert(sink_vertices[i]);
+
+ if (paths.empty()) {
+ *return_tuples = nullptr;
+ *return_count = 0;
+ return;
}
- pgrouting::flow::PgrEdgeDisjointPathsGraph<pgrouting::FlowGraph> G;
+ /*
+ * Initializing the cost
+ */
+ for (auto &r : paths) {
+ r.agg_cost = r.cost = 0;
+ }
/*
- * boykov_kolmogorov is only for directed graphs
+ * Calculating the cost
*/
+ auto found = paths.size();
+ for (const auto &e : edges) {
+ for (auto &r : paths) {
+ if (r.edge == e.id) {
+ r.cost = (r.node == e.source) ?
+ e.cost : e.reverse_cost;
+ --found;
+ }
+ }
+ if (found == 0) break;
+ }
+
+ /*
+ * Calculating the agg_cost
+ */
+ auto prev = paths[0];
+ for (auto &r : paths) {
+ if (r.seq == 1) {
+ r.agg_cost = 0;
+ } else {
+ r.agg_cost = prev.agg_cost + prev.cost;
+ }
+ prev = r;
+ }
+
+ /*
+ * Numbering the paths
+ */
+ int path_id(0);
+ for (auto &r : paths) {
+ r.start_id = path_id;
+ if (r.edge == -1) ++path_id;
+ }
- G.create_edge_disjoint_paths_graph(data_edges, total_edges,
- set_source_vertices,
- set_sink_vertices, directed);
- auto flow = G.boykov_kolmogorov();
- G.get_edge_disjoint_paths(path_elements, flow);
- (*return_tuples) = pgr_alloc(path_elements.size(), (*return_tuples));
- for (size_t i = 0; i < path_elements.size(); ++i) {
- (*return_tuples)[i] = path_elements[i];
+ (*return_tuples) = pgr_alloc(paths.size(), (*return_tuples));
+ for (size_t i = 0; i < paths.size(); ++i) {
+ (*return_tuples)[i] = paths[i];
}
- *return_count = path_elements.size();
+ *return_count = paths.size();
*log_msg = log.str().empty()?
diff --git a/src/max_flow/src/edge_disjoint_paths_driver.h b/src/max_flow/src/edge_disjoint_paths_driver.h
index f25dfe6..2677445 100644
--- a/src/max_flow/src/edge_disjoint_paths_driver.h
+++ b/src/max_flow/src/edge_disjoint_paths_driver.h
@@ -30,7 +30,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#ifndef SRC_MAX_FLOW_SRC_EDGE_DISJOINT_PATHS_DRIVER_H_
#define SRC_MAX_FLOW_SRC_EDGE_DISJOINT_PATHS_DRIVER_H_
-#include "./../../common/src/pgr_types.h"
+#include "c_types/pgr_edge_t.h"
+#include "c_types/general_path_element_t.h"
+
#ifdef __cplusplus
extern "C" {
@@ -38,7 +40,7 @@ extern "C" {
void
do_pgr_edge_disjoint_paths(
- pgr_basic_edge_t *data_edges,
+ pgr_edge_t *data_edges,
size_t total_tuples,
int64_t *source_vertices,
size_t size_source_verticesArr,
diff --git a/src/max_flow/src/edge_disjoint_paths_many_to_many.c b/src/max_flow/src/edge_disjoint_paths_many_to_many.c
deleted file mode 100644
index 93c01ee..0000000
--- a/src/max_flow/src/edge_disjoint_paths_many_to_many.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: edge_disjoint_paths_many_to_many.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Andrea Nardelli
-Mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./edge_disjoint_paths_driver.h"
-
-PGDLLEXPORT Datum
-edge_disjoint_paths_many_to_many(PG_FUNCTION_ARGS);
-
-static
-void
-process(
- char *edges_sql,
- ArrayType *starts,
- ArrayType *ends,
-
- bool directed,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- pgr_SPI_connect();
-
- size_t size_source_verticesArr = 0;
- int64_t* source_vertices =
- pgr_get_bigIntArray(&size_source_verticesArr, starts);
-
- size_t size_sink_verticesArr = 0;
- int64_t* sink_vertices =
- pgr_get_bigIntArray(&size_sink_verticesArr, ends);
-
-
- pgr_basic_edge_t *edges = NULL;
- size_t total_edges = 0;
-
- pgr_get_basic_edges(edges_sql, &edges, &total_edges);
-
- if (total_edges == 0) {
- if (source_vertices) pfree(source_vertices);
- if (sink_vertices) pfree(sink_vertices);
- pgr_SPI_finish();
- return;
- }
-
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
-
- do_pgr_edge_disjoint_paths(
- edges, total_edges,
- source_vertices, size_source_verticesArr,
- sink_vertices, size_sink_verticesArr,
- directed,
-
- result_tuples, result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- time_msg("pgr_edgeDisjointPaths(many to many)", start_t, clock());
-
- if (edges) pfree(edges);
- if (source_vertices) pfree(source_vertices);
- if (sink_vertices) pfree(sink_vertices);
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- pgr_SPI_finish();
-}
-
-PG_FUNCTION_INFO_V1(edge_disjoint_paths_many_to_many);
-PGDLLEXPORT Datum
-edge_disjoint_paths_many_to_many(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**************************************************************************/
- General_path_element_t *result_tuples = NULL;
- size_t result_count = 0;
- /**************************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_ARRAYTYPE_P(1),
- PG_GETARG_ARRAYTYPE_P(2),
- PG_GETARG_BOOL(3),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t *) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool *nulls;
-
- /**********************************************************************/
- /* MODIFY AS NEEDED */
-
- values = palloc(6 * sizeof(Datum));
- nulls = palloc(6 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 6; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].start_id);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].end_id);
- values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[5] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/max_flow/src/edge_disjoint_paths_many_to_one.c b/src/max_flow/src/edge_disjoint_paths_many_to_one.c
deleted file mode 100644
index bf2b8a6..0000000
--- a/src/max_flow/src/edge_disjoint_paths_many_to_one.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: edge_disjoint_paths_many_to_one.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Andrea Nardelli
-Mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-
-#include "./edge_disjoint_paths_driver.h"
-
-PGDLLEXPORT Datum
-edge_disjoint_paths_many_to_one(PG_FUNCTION_ARGS);
-
-/******************************************************************************/
-/* MODIFY AS NEEDED */
-static
-void
-process(
- char *edges_sql,
- ArrayType *starts,
- int64_t sink_vertex,
- bool directed,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- pgr_SPI_connect();
-
- size_t size_source_verticesArr = 0;
- int64_t* source_vertices =
- pgr_get_bigIntArray(&size_source_verticesArr, starts);
-
- pgr_basic_edge_t *edges = NULL;
- size_t total_edges = 0;
- pgr_get_basic_edges(edges_sql, &edges, &total_edges);
-
- if (total_edges == 0) {
- if (source_vertices) pfree(source_vertices);
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
-
- do_pgr_edge_disjoint_paths(
- edges, total_edges,
- source_vertices, size_source_verticesArr,
- &sink_vertex, 1,
- directed,
-
- result_tuples, result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- time_msg("pgr_edgeDisjointPaths(many_to_one)", start_t, clock());
- if (edges) pfree(edges);
- if (source_vertices) pfree(source_vertices);
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- pgr_SPI_finish();
-}
-
-PG_FUNCTION_INFO_V1(edge_disjoint_paths_many_to_one);
-PGDLLEXPORT Datum
-edge_disjoint_paths_many_to_one(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**************************************************************************/
- General_path_element_t *result_tuples = NULL;
- size_t result_count = 0;
- /**************************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_ARRAYTYPE_P(1),
- PG_GETARG_INT64(2),
- PG_GETARG_BOOL(3),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t *) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool *nulls;
-
- /**********************************************************************/
-
- size_t numb = 5;
- values = palloc(numb * sizeof(Datum));
- nulls = palloc(numb * sizeof(bool));
-
- size_t i;
- for (i = 0; i < numb; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].start_id);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
-
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/max_flow/src/edge_disjoint_paths_one_to_many.c b/src/max_flow/src/edge_disjoint_paths_one_to_many.c
deleted file mode 100644
index 5b9ebed..0000000
--- a/src/max_flow/src/edge_disjoint_paths_one_to_many.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: edge_disjoint_paths_one_to_many.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Andrea Nardelli
-Mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./edge_disjoint_paths_driver.h"
-
-PGDLLEXPORT Datum
-edge_disjoint_paths_one_to_many(PG_FUNCTION_ARGS);
-
-/******************************************************************************/
-/* MODIFY AS NEEDED */
-static
-void
-process(
- char *edges_sql,
- int64_t source_vertex,
- ArrayType *ends,
- bool directed,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- pgr_SPI_connect();
-
- size_t size_sink_verticesArr = 0;
- int64_t* sink_vertices =
- pgr_get_bigIntArray(&size_sink_verticesArr, ends);
-
-
- size_t total_tuples = 0;
- pgr_basic_edge_t *edges = NULL;
- pgr_get_basic_edges(edges_sql, &edges, &total_tuples);
-
- if (total_tuples == 0) {
- if (sink_vertices) pfree(sink_vertices);
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char *err_msg = NULL;
- do_pgr_edge_disjoint_paths(
-
- edges, total_tuples,
- &source_vertex, 1,
- sink_vertices, size_sink_verticesArr,
- directed,
-
- result_tuples, result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- time_msg("pgr_edgeDisjointPaths(one to many)", start_t, clock());
-
-
- if (edges) pfree(edges);
- if (sink_vertices) pfree(sink_vertices);
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- pgr_SPI_finish();
-}
-/* */
-/******************************************************************************/
-
-PG_FUNCTION_INFO_V1(edge_disjoint_paths_one_to_many);
-PGDLLEXPORT Datum
-edge_disjoint_paths_one_to_many(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**************************************************************************/
- /* MODIFY AS NEEDED */
- /* */
- General_path_element_t *result_tuples = NULL;
- size_t result_count = 0;
- /* */
- /**************************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- /* MODIFY AS NEEDED */
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT64(1),
- PG_GETARG_ARRAYTYPE_P(2),
- PG_GETARG_BOOL(3),
- &result_tuples,
- &result_count);
-
- /* */
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t *) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool *nulls;
-
- /**********************************************************************/
- /* MODIFY AS NEEDED */
-
- values = palloc(5 * sizeof(Datum));
- nulls = palloc(5 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 5; ++i) {
- nulls[i] = false;
- }
-
- // postgres starts counting from 1
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].end_id);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/max_flow/src/edge_disjoint_paths_one_to_one.c b/src/max_flow/src/edge_disjoint_paths_one_to_one.c
deleted file mode 100644
index c6536e6..0000000
--- a/src/max_flow/src/edge_disjoint_paths_one_to_one.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: edge_disjoint_paths_one_to_one.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Andrea Nardelli
-Mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./edge_disjoint_paths_driver.h"
-
-PGDLLEXPORT Datum
-edge_disjoint_paths_one_to_one(PG_FUNCTION_ARGS);
-
-/******************************************************************************/
-/* MODIFY AS NEEDED */
-static
-void
-process(
- char *edges_sql,
- int64_t source_vertex,
- int64_t sink_vertex,
- bool directed,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- pgr_SPI_connect();
-
-
- if (source_vertex == sink_vertex) {
- pgr_SPI_finish();
- return;
- }
-
- size_t total_tuples = 0;
- pgr_basic_edge_t *edges = NULL;
- pgr_get_basic_edges(edges_sql, &edges, &total_tuples);
-
- if (total_tuples == 0) {
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char *err_msg = NULL;
-
- do_pgr_edge_disjoint_paths(
- edges, total_tuples,
- &source_vertex, 1,
- &sink_vertex, 1,
- directed,
- result_tuples,
- result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- time_msg("pgr_edgeDisjointPaths(one to one)", start_t, clock());
-
- if (edges) pfree(edges);
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_count) = 0;
- (*result_tuples) = NULL;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- pgr_SPI_finish();
-}
-/* */
-/******************************************************************************/
-
-PG_FUNCTION_INFO_V1(edge_disjoint_paths_one_to_one);
-PGDLLEXPORT Datum
-edge_disjoint_paths_one_to_one(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**************************************************************************/
- /* MODIFY AS NEEDED */
- /* */
- General_path_element_t *result_tuples = NULL;
- size_t result_count = 0;
- /* */
- /**************************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- /* MODIFY AS NEEDED */
-
- PGR_DBG("Calling process");
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT64(1),
- PG_GETARG_INT64(2),
- PG_GETARG_BOOL(3),
- &result_tuples,
- &result_count);
-
- /* */
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t *) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool *nulls;
-
- /**********************************************************************/
- /* MODIFY AS NEEDED */
-
- values = palloc(4 * sizeof(Datum));
- nulls = palloc(4 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 4; ++i) {
- nulls[i] = false;
- }
-
- // postgres starts counting from 1
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/max_flow/src/max_flow.c b/src/max_flow/src/max_flow.c
new file mode 100644
index 0000000..ef8ed45
--- /dev/null
+++ b/src/max_flow/src/max_flow.c
@@ -0,0 +1,224 @@
+/*PGR-GNU*****************************************************************
+File: max_flow_many_to_many.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2016 Andrea Nardelli
+Mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "c_common/postgres_connection.h"
+#include "utils/array.h"
+
+
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+#include "./max_flow_driver.h"
+
+PGDLLEXPORT Datum
+max_flow_many_to_many(PG_FUNCTION_ARGS);
+
+static
+void
+process(
+ char *edges_sql,
+ ArrayType *starts,
+ ArrayType *ends,
+ int algorithm,
+ bool only_flow,
+ pgr_flow_t **result_tuples,
+ size_t *result_count) {
+ if (algorithm < 1 || algorithm > 3) {
+ elog(ERROR, "Unknown algorithm");
+ }
+
+ pgr_SPI_connect();
+
+ size_t size_source_verticesArr = 0;
+ int64_t* source_vertices =
+ pgr_get_bigIntArray(&size_source_verticesArr, starts);
+
+ size_t size_sink_verticesArr = 0;
+ int64_t* sink_vertices =
+ pgr_get_bigIntArray(&size_sink_verticesArr, ends);
+
+ pgr_edge_t *edges = NULL;
+
+ size_t total_edges = 0;
+
+ /* NOTE:
+ * For flow, cost and reverse_cost are really capacity and reverse_capacity
+ */
+ pgr_get_flow_edges(edges_sql, &edges, &total_edges);
+
+ if (total_edges == 0) {
+ if (source_vertices) pfree(source_vertices);
+ if (sink_vertices) pfree(sink_vertices);
+ pgr_SPI_finish();
+ return;
+ }
+
+
+ PGR_DBG("Starting timer");
+ clock_t start_t = clock();
+ char* log_msg = NULL;
+ char* notice_msg = NULL;
+ char *err_msg = NULL;
+
+ do_pgr_max_flow(
+ edges, total_edges,
+ source_vertices, size_source_verticesArr,
+ sink_vertices, size_sink_verticesArr,
+ algorithm,
+ only_flow,
+
+ result_tuples, result_count,
+
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ if (only_flow) {
+ time_msg("pgr_maxFlow(many to many)",
+ start_t, clock());
+ } else if (algorithm == 1) {
+ time_msg("pgr_maxFlowPushRelabel(many to many)",
+ start_t, clock());
+ } else if (algorithm == 3) {
+ time_msg("pgr_maxFlowEdmondsKarp(many to many)",
+ start_t, clock());
+ } else {
+ time_msg("pgr_maxFlowBoykovKolmogorov(many to many)",
+ start_t, clock());
+ }
+
+
+ if (edges) pfree(edges);
+ if (source_vertices) pfree(source_vertices);
+ if (sink_vertices) pfree(sink_vertices);
+
+ if (err_msg && (*result_tuples)) {
+ pfree(*result_tuples);
+ (*result_tuples) = NULL;
+ (*result_count) = 0;
+ }
+
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+
+ pgr_SPI_finish();
+}
+
+
+PG_FUNCTION_INFO_V1(max_flow_many_to_many);
+PGDLLEXPORT Datum
+max_flow_many_to_many(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**************************************************************************/
+ pgr_flow_t *result_tuples = 0;
+ size_t result_count = 0;
+ /**************************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+ PG_GETARG_ARRAYTYPE_P(1),
+ PG_GETARG_ARRAYTYPE_P(2),
+ PG_GETARG_INT32(3),
+ PG_GETARG_BOOL(4),
+ &result_tuples,
+ &result_count);
+
+ /* */
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 95
+ funcctx->max_calls = result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (pgr_flow_t *) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool *nulls;
+ size_t call_cntr = funcctx->call_cntr;
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ values = palloc(6 * sizeof(Datum));
+ nulls = palloc(6 * sizeof(bool));
+
+ size_t i;
+ for (i = 0; i < 6; ++i) {
+ nulls[i] = false;
+ }
+
+ values[0] = Int32GetDatum(call_cntr + 1);
+ values[1] = Int64GetDatum(result_tuples[call_cntr].edge);
+ values[2] = Int64GetDatum(result_tuples[call_cntr].source);
+ values[3] = Int64GetDatum(result_tuples[call_cntr].target);
+ values[4] = Int64GetDatum(result_tuples[call_cntr].flow);
+ values[5] = Int64GetDatum(result_tuples[call_cntr].residual_capacity);
+ /**********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ SRF_RETURN_DONE(funcctx);
+ }
+}
+
diff --git a/src/max_flow/src/max_flow_driver.cpp b/src/max_flow/src/max_flow_driver.cpp
index add4b2a..a53ab4e 100644
--- a/src/max_flow/src/max_flow_driver.cpp
+++ b/src/max_flow/src/max_flow_driver.cpp
@@ -27,31 +27,27 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./pgr_maxflow.hpp"
+#include "./max_flow_driver.h"
#include <sstream>
#include <vector>
#include <set>
-#include "./max_flow_driver.h"
+#include "./pgr_maxflow.hpp"
-#include "../../common/src/pgr_assert.h"
-#include "../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_types.h"
+#include "cpp_common/pgr_assert.h"
+#include "cpp_common/pgr_alloc.hpp"
void
do_pgr_max_flow(
- pgr_edge_t *data_edges,
- size_t total_tuples,
- int64_t *source_vertices,
- size_t size_source_verticesArr,
- int64_t *sink_vertices,
- size_t size_sink_verticesArr,
- char *algorithm,
+ pgr_edge_t *data_edges, size_t total_edges,
+ int64_t *source_vertices, size_t size_source_verticesArr,
+ int64_t *sink_vertices, size_t size_sink_verticesArr,
+ int algorithm,
bool only_flow,
- pgr_flow_t **return_tuples,
- size_t *return_count,
+
+ pgr_flow_t **return_tuples, size_t *return_count,
char** log_msg,
char** notice_msg,
char **err_msg) {
@@ -64,19 +60,17 @@ do_pgr_max_flow(
pgassert(source_vertices);
pgassert(sink_vertices);
- pgrouting::graph::PgrFlowGraph<pgrouting::FlowGraph> G;
- std::set<int64_t> set_source_vertices;
- std::set<int64_t> set_sink_vertices;
- for (size_t i = 0; i < size_source_verticesArr; ++i) {
- set_source_vertices.insert(source_vertices[i]);
- }
- for (size_t i = 0; i < size_sink_verticesArr; ++i) {
- set_sink_vertices.insert(sink_vertices[i]);
- }
- std::set<int64_t> vertices(set_source_vertices);
- vertices.insert(set_sink_vertices.begin(), set_sink_vertices.end());
+ std::vector<pgr_edge_t> edges(data_edges, data_edges + total_edges);
+ std::set<int64_t> sources(
+ source_vertices, source_vertices + size_source_verticesArr);
+ std::set<int64_t> targets(
+ sink_vertices, sink_vertices + size_sink_verticesArr);
+
+ std::set<int64_t> vertices(sources);
+ vertices.insert(targets.begin(), targets.end());
+
if (vertices.size()
- != (set_source_vertices.size() + set_sink_vertices.size())) {
+ != (sources.size() + targets.size())) {
*err_msg = pgr_msg("A source found as sink");
// TODO(vicky) return as hint the sources that are also sinks
return;
@@ -84,16 +78,17 @@ do_pgr_max_flow(
- G.create_flow_graph(data_edges, total_tuples, set_source_vertices,
- set_sink_vertices, algorithm);
+ pgrouting::graph::PgrFlowGraph digraph(
+ edges, sources, targets, algorithm);
+ // digraph.create_flow_graph(edges, sources, targets, algorithm);
int64_t max_flow;
- if (strcmp(algorithm, "push_relabel") == 0) {
- max_flow = G.push_relabel();
- } else if (strcmp(algorithm, "edmonds_karp") == 0) {
- max_flow = G.edmonds_karp();
- } else if (strcmp(algorithm, "boykov_kolmogorov") == 0) {
- max_flow = G.boykov_kolmogorov();
+ if (algorithm == 1) {
+ max_flow = digraph.push_relabel();
+ } else if (algorithm == 3) {
+ max_flow = digraph.edmonds_karp();
+ } else if (algorithm == 2) {
+ max_flow = digraph.boykov_kolmogorov();
} else {
log << "Unspecified algorithm!\n";
*err_msg = pgr_msg(log.str().c_str());
@@ -114,7 +109,7 @@ do_pgr_max_flow(
edge.residual_capacity = -1;
flow_edges.push_back(edge);
} else {
- G.get_flow_edges(flow_edges);
+ flow_edges = digraph.get_flow_edges();
}
(*return_tuples) = pgr_alloc(flow_edges.size(), (*return_tuples));
for (size_t i = 0; i < flow_edges.size(); ++i) {
diff --git a/src/max_flow/src/max_flow_driver.h b/src/max_flow/src/max_flow_driver.h
index 7706863..a8d4463 100644
--- a/src/max_flow/src/max_flow_driver.h
+++ b/src/max_flow/src/max_flow_driver.h
@@ -30,7 +30,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#ifndef SRC_MAX_FLOW_SRC_MAX_FLOW_DRIVER_H_
#define SRC_MAX_FLOW_SRC_MAX_FLOW_DRIVER_H_
-#include "./../../common/src/pgr_types.h"
+#include "c_types/pgr_flow_t.h"
+#include "c_types/pgr_edge_t.h"
#ifdef __cplusplus
extern "C" {
@@ -44,7 +45,7 @@ extern "C" {
size_t size_source_verticesArr,
int64_t* sink_vertices,
size_t size_sink_verticesArr,
- char* algorithm,
+ int algorithm,
bool only_flow,
pgr_flow_t **return_tuples,
size_t *return_count,
diff --git a/src/max_flow/src/max_flow_many_to_many.c b/src/max_flow/src/max_flow_many_to_many.c
deleted file mode 100644
index 729b2a2..0000000
--- a/src/max_flow/src/max_flow_many_to_many.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: max_flow_many_to_many.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Andrea Nardelli
-Mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./max_flow_driver.h"
-
-PGDLLEXPORT Datum
-max_flow_many_to_many(PG_FUNCTION_ARGS);
-
-static
-void
-process(
- char *edges_sql,
- ArrayType *starts,
- ArrayType *ends,
- char *algorithm,
- bool only_flow,
- pgr_flow_t **result_tuples,
- size_t *result_count) {
- if (!(strcmp(algorithm, "push_relabel") == 0
- || strcmp(algorithm, "edmonds_karp") == 0
- || strcmp(algorithm, "boykov_kolmogorov") == 0)) {
- elog(ERROR, "Unknown algorithm");
- }
-
- pgr_SPI_connect();
-
- size_t size_source_verticesArr = 0;
- int64_t* source_vertices =
- pgr_get_bigIntArray(&size_source_verticesArr, starts);
-
- size_t size_sink_verticesArr = 0;
- int64_t* sink_vertices =
- pgr_get_bigIntArray(&size_sink_verticesArr, ends);
-
- pgr_edge_t *edges = NULL;
-
- size_t total_edges = 0;
-
- /* NOTE:
- * For flow, cost and reverse_cost are really capacity and reverse_capacity
- */
- pgr_get_flow_edges(edges_sql, &edges, &total_edges);
-
- if (total_edges == 0) {
- if (source_vertices) pfree(source_vertices);
- if (sink_vertices) pfree(sink_vertices);
- pgr_SPI_finish();
- return;
- }
-
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char *err_msg = NULL;
-
- do_pgr_max_flow(
- edges, total_edges,
- source_vertices, size_source_verticesArr,
- sink_vertices, size_sink_verticesArr,
- algorithm,
- only_flow,
-
- result_tuples, result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_flow) {
- time_msg("pgr_maxFlow(many to many)",
- start_t, clock());
- } else if (strcmp(algorithm, "push_relabel") == 0) {
- time_msg("pgr_maxFlowPushRelabel(many to many)",
- start_t, clock());
- } else if (strcmp(algorithm, "edmonds_karp") == 0) {
- time_msg("pgr_maxFlowEdmondsKarp(many to many)",
- start_t, clock());
- } else {
- time_msg("pgr_maxFlowBoykovKolmogorov(many to many)",
- start_t, clock());
- }
-
-
- if (edges) pfree(edges);
- if (source_vertices) pfree(source_vertices);
- if (sink_vertices) pfree(sink_vertices);
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
-
- pgr_SPI_finish();
-}
-
-
-PG_FUNCTION_INFO_V1(max_flow_many_to_many);
-PGDLLEXPORT Datum
-max_flow_many_to_many(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**************************************************************************/
- pgr_flow_t *result_tuples = 0;
- size_t result_count = 0;
- /**************************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_ARRAYTYPE_P(1),
- PG_GETARG_ARRAYTYPE_P(2),
- text_to_cstring(PG_GETARG_TEXT_P(3)),
- PG_GETARG_BOOL(4),
- &result_tuples,
- &result_count);
-
- /* */
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (pgr_flow_t *) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool *nulls;
- size_t call_cntr = funcctx->call_cntr;
-
- /**********************************************************************/
- /* MODIFY AS NEEDED */
- values = palloc(6 * sizeof(Datum));
- nulls = palloc(6 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 6; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(call_cntr + 1);
- values[1] = Int64GetDatum(result_tuples[call_cntr].edge);
- values[2] = Int64GetDatum(result_tuples[call_cntr].source);
- values[3] = Int64GetDatum(result_tuples[call_cntr].target);
- values[4] = Int64GetDatum(result_tuples[call_cntr].flow);
- values[5] = Int64GetDatum(result_tuples[call_cntr].residual_capacity);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/max_flow/src/max_flow_many_to_one.c b/src/max_flow/src/max_flow_many_to_one.c
deleted file mode 100644
index ccbef09..0000000
--- a/src/max_flow/src/max_flow_many_to_one.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: max_flow_many_to_one.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Andrea Nardelli
-Mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./max_flow_driver.h"
-
-PGDLLEXPORT Datum
-max_flow_many_to_one(PG_FUNCTION_ARGS);
-
-/******************************************************************************/
-/* MODIFY AS NEEDED */
-static
-void
-process(
- char *edges_sql,
- ArrayType *starts,
- int64_t sink_vertex,
- char *algorithm,
- bool only_flow,
- pgr_flow_t **result_tuples,
- size_t *result_count) {
- if (!(strcmp(algorithm, "push_relabel") == 0
- || strcmp(algorithm, "edmonds_karp") == 0
- || strcmp(algorithm, "boykov_kolmogorov") == 0)) {
- elog(ERROR, "Unknown algorithm");
- }
-
- pgr_SPI_connect();
-
- size_t size_source_verticesArr = 0;
- int64_t* source_vertices =
- pgr_get_bigIntArray(&size_source_verticesArr, starts);
-
- /* NOTE:
- * For flow, cost and reverse_cost are really capacity and reverse_capacity
- */
- pgr_edge_t *edges = NULL;
- size_t total_tuples = 0;
- pgr_get_flow_edges(edges_sql, &edges, &total_tuples);
-
- if (total_tuples == 0) {
- if (source_vertices) pfree(source_vertices);
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char *err_msg = NULL;
- do_pgr_max_flow(
- edges, total_tuples,
- source_vertices, size_source_verticesArr,
- &sink_vertex, 1,
- algorithm,
- only_flow,
-
- result_tuples, result_count,
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_flow) {
- time_msg("pgr_maxFlow(many to many)",
- start_t, clock());
- } else if (strcmp(algorithm, "push_relabel") == 0) {
- time_msg("pgr_maxFlowPushRelabel(many to one)",
- start_t, clock());
- } else if (strcmp(algorithm, "edmonds_karp") == 0) {
- time_msg("pgr_maxFlowEdmondsKarp(many to one)",
- start_t, clock());
- } else {
- time_msg("pgr_maxFlowBoykovKolmogorov(many to one)",
- start_t, clock());
- }
-
- if (edges) pfree(edges);
- if (source_vertices) pfree(source_vertices);
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
-
-
- pgr_SPI_finish();
-}
-/* */
-/******************************************************************************/
-
-PG_FUNCTION_INFO_V1(max_flow_many_to_one);
-PGDLLEXPORT Datum
-max_flow_many_to_one(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**************************************************************************/
- pgr_flow_t *result_tuples = 0;
- size_t result_count = 0;
- /**************************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_ARRAYTYPE_P(1),
- PG_GETARG_INT64(2),
- text_to_cstring(PG_GETARG_TEXT_P(3)),
- PG_GETARG_BOOL(4),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (pgr_flow_t *) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool *nulls;
- size_t call_cntr = funcctx->call_cntr;
-
- /**********************************************************************/
- values = palloc(6 * sizeof(Datum));
- nulls = palloc(6 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 6; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(call_cntr + 1);
- values[1] = Int64GetDatum(result_tuples[call_cntr].edge);
- values[2] = Int64GetDatum(result_tuples[call_cntr].source);
- values[3] = Int64GetDatum(result_tuples[call_cntr].target);
- values[4] = Int64GetDatum(result_tuples[call_cntr].flow);
- values[5] = Int64GetDatum(result_tuples[call_cntr].residual_capacity);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/max_flow/src/max_flow_one_to_many.c b/src/max_flow/src/max_flow_one_to_many.c
deleted file mode 100644
index e74bb33..0000000
--- a/src/max_flow/src/max_flow_one_to_many.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: max_flow_one_to_many.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Andrea Nardelli
-Mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./max_flow_driver.h"
-
-PGDLLEXPORT Datum
-max_flow_one_to_many(PG_FUNCTION_ARGS);
-
-/******************************************************************************/
-static
-void
-process(
- char *edges_sql,
- int64_t source_vertex,
- ArrayType *ends,
- char *algorithm,
- bool only_flow,
- pgr_flow_t **result_tuples,
- size_t *result_count) {
- if (!(strcmp(algorithm, "push_relabel") == 0
- || strcmp(algorithm, "edmonds_karp") == 0
- || strcmp(algorithm, "boykov_kolmogorov") == 0)) {
- elog(ERROR, "Unknown algorithm");
- }
-
- pgr_SPI_connect();
-
- size_t size_sink_verticesArr = 0;
- int64_t* sink_vertices =
- pgr_get_bigIntArray(&size_sink_verticesArr, ends);
-
-
-
- /* NOTE:
- * For flow, cost and reverse_cost are really capacity and reverse_capacity
- */
- size_t total_tuples = 0;
- pgr_edge_t *edges = NULL;
- pgr_get_flow_edges(edges_sql, &edges, &total_tuples);
-
- if (total_tuples == 0) {
- if (sink_vertices) pfree(sink_vertices);
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting processing");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
-
- do_pgr_max_flow(
- edges, total_tuples,
- &source_vertex, 1,
- sink_vertices, size_sink_verticesArr,
- algorithm,
- only_flow,
-
- result_tuples, result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_flow) {
- time_msg("pgr_maxFlow(many to many)",
- start_t, clock());
- } else if (strcmp(algorithm, "push_relabel") == 0) {
- time_msg("pgr_maxFlowPushRelabel(one to many)",
- start_t, clock());
- } else if (strcmp(algorithm, "edmonds_karp") == 0) {
- time_msg("pgr_maxFlowEdmondsKarp(one to many)",
- start_t, clock());
- } else {
- time_msg("pgr_maxFlowBoykovKolmogorov(one to many)",
- start_t, clock());
- }
-
-
- if (edges) pfree(edges);
- if (sink_vertices) pfree(sink_vertices);
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
-
- pgr_SPI_finish();
-}
-
-PG_FUNCTION_INFO_V1(max_flow_one_to_many);
-PGDLLEXPORT Datum
-max_flow_one_to_many(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**************************************************************************/
- pgr_flow_t *result_tuples = 0;
- size_t result_count = 0;
- /**************************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT64(1),
- PG_GETARG_ARRAYTYPE_P(2),
- text_to_cstring(PG_GETARG_TEXT_P(3)),
- PG_GETARG_BOOL(4),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (pgr_flow_t *) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool *nulls;
- size_t call_cntr = funcctx->call_cntr;
-
- /**********************************************************************/
-
- values = palloc(6 * sizeof(Datum));
- nulls = palloc(6 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 6; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(call_cntr + 1);
- values[1] = Int64GetDatum(result_tuples[call_cntr].edge);
- values[2] = Int64GetDatum(result_tuples[call_cntr].source);
- values[3] = Int64GetDatum(result_tuples[call_cntr].target);
- values[4] = Int64GetDatum(result_tuples[call_cntr].flow);
- values[5] = Int64GetDatum(result_tuples[call_cntr].residual_capacity);
-
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/max_flow/src/max_flow_one_to_one.c b/src/max_flow/src/max_flow_one_to_one.c
deleted file mode 100644
index 427cc00..0000000
--- a/src/max_flow/src/max_flow_one_to_one.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: max_flow_one_to_one.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2016 Andrea Nardelli
-Mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./max_flow_driver.h"
-
-PGDLLEXPORT Datum
-max_flow_one_to_one(PG_FUNCTION_ARGS);
-
-/******************************************************************************/
-/* MODIFY AS NEEDED */
-static
-void
-process(
- char *edges_sql,
- int64_t source_vertex,
- int64_t sink_vertex,
- char *algorithm,
- bool only_flow,
- pgr_flow_t **result_tuples,
- size_t *result_count) {
- if (!(strcmp(algorithm, "push_relabel") == 0
- || strcmp(algorithm, "edmonds_karp") == 0
- || strcmp(algorithm, "boykov_kolmogorov") == 0)) {
- elog(ERROR, "Unknown algorithm");
- }
-
- if (source_vertex == sink_vertex) {
- return;
- }
-
- pgr_SPI_connect();
-
- /* NOTE:
- * For flow, cost and reverse_cost are really capacity and reverse_capacity
- */
- size_t total_tuples = 0;
- pgr_edge_t *edges = NULL;
- pgr_get_flow_edges(edges_sql, &edges, &total_tuples);
-
- if (total_tuples == 0) {
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
-
- do_pgr_max_flow(
- edges,
- total_tuples,
- &source_vertex, 1,
- &sink_vertex, 1,
- algorithm,
- only_flow,
-
- result_tuples, result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_flow) {
- time_msg("pgr_maxFlow(one to one)",
- start_t, clock());
- } else if (strcmp(algorithm, "push_relabel") == 0) {
- time_msg("pgr_maxFlowPushRelabel(one to one)",
- start_t, clock());
- } else if (strcmp(algorithm, "edmonds_karp") == 0) {
- time_msg("pgr_maxFlowEdmondsKarp(one to one)",
- start_t, clock());
- } else {
- time_msg("pgr_maxFlowBoykovKolmogorov(one to one)",
- start_t, clock());
- }
-
-
- if (edges) pfree(edges);
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_tuples) = NULL;
- (*result_count) = 0;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
-
- pgr_SPI_finish();
-}
-/* */
-/******************************************************************************/
-
-PG_FUNCTION_INFO_V1(max_flow_one_to_one);
-PGDLLEXPORT Datum
-max_flow_one_to_one(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**************************************************************************/
- pgr_flow_t *result_tuples = 0;
- size_t result_count = 0;
- /**************************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT64(1),
- PG_GETARG_INT64(2),
- text_to_cstring(PG_GETARG_TEXT_P(3)),
- PG_GETARG_BOOL(4),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE) {
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
- }
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (pgr_flow_t *) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool *nulls;
- size_t call_cntr = funcctx->call_cntr;
-
- /**********************************************************************/
-
- values = palloc(6 * sizeof(Datum));
- nulls = palloc(6 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 6; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(call_cntr + 1);
- values[1] = Int64GetDatum(result_tuples[call_cntr].edge);
- values[2] = Int64GetDatum(result_tuples[call_cntr].source);
- values[3] = Int64GetDatum(result_tuples[call_cntr].target);
- values[4] = Int64GetDatum(result_tuples[call_cntr].flow);
- values[5] = Int64GetDatum(result_tuples[call_cntr].residual_capacity);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/max_flow/src/maximum_cardinality_matching.c b/src/max_flow/src/maximum_cardinality_matching.c
index 5125abc..68203a3 100644
--- a/src/max_flow/src/maximum_cardinality_matching.c
+++ b/src/max_flow/src/maximum_cardinality_matching.c
@@ -27,13 +27,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+#include "c_common/edges_input.h"
#include "./maximum_cardinality_matching_driver.h"
diff --git a/src/max_flow/src/maximum_cardinality_matching_driver.cpp b/src/max_flow/src/maximum_cardinality_matching_driver.cpp
index d4cb75e..12009a0 100644
--- a/src/max_flow/src/maximum_cardinality_matching_driver.cpp
+++ b/src/max_flow/src/maximum_cardinality_matching_driver.cpp
@@ -34,9 +34,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include "./pgr_maximumcardinalitymatching.hpp"
-#include "./../../common/src/pgr_alloc.hpp"
-#include "../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
void
diff --git a/src/max_flow/src/maximum_cardinality_matching_driver.h b/src/max_flow/src/maximum_cardinality_matching_driver.h
index a02fb74..a2f04b3 100644
--- a/src/max_flow/src/maximum_cardinality_matching_driver.h
+++ b/src/max_flow/src/maximum_cardinality_matching_driver.h
@@ -30,7 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#ifndef SRC_MAX_FLOW_SRC_MAXIMUM_CARDINALITY_MATCHING_DRIVER_H_
#define SRC_MAX_FLOW_SRC_MAXIMUM_CARDINALITY_MATCHING_DRIVER_H_
-#include "./../../common/src/pgr_types.h"
+#include "c_types/pgr_basic_edge_t.h"
#ifdef __cplusplus
extern "C" {
diff --git a/src/max_flow/src/pgr_edgedisjointpaths.hpp b/src/max_flow/src/pgr_edgedisjointpaths.hpp
deleted file mode 100644
index c00b314..0000000
--- a/src/max_flow/src/pgr_edgedisjointpaths.hpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2016 Andrea Nardelli
-Mail: nrd.nardelli at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_MAX_FLOW_SRC_PGR_EDGEDISJOINTPATHS_HPP_
-#define SRC_MAX_FLOW_SRC_PGR_EDGEDISJOINTPATHS_HPP_
-#pragma once
-
-#include <boost/config.hpp>
-#include <boost/graph/adjacency_list.hpp>
-#include <boost/assert.hpp>
-
-
-#include <map>
-#include <utility>
-#include <vector>
-#include <set>
-#include <limits>
-
-#include "./../../common/src/pgr_types.h"
-#include "pgr_maxflow.hpp"
-
-namespace pgrouting {
-namespace flow {
-
-template<class G>
-class PgrEdgeDisjointPathsGraph {
- public:
- G boost_graph;
-
- typedef typename boost::graph_traits<G>::vertex_descriptor V;
- typedef typename boost::graph_traits<G>::edge_descriptor E;
- typedef typename boost::graph_traits<G>::vertex_iterator V_it;
- typedef typename boost::graph_traits<G>::edge_iterator E_it;
- typedef typename boost::graph_traits<G>::out_edge_iterator Eout_it;
-
- typename boost::property_map<G, boost::edge_capacity_t>::type capacity;
- typename boost::property_map<G, boost::edge_reverse_t>::type rev;
- typename boost::property_map<G, boost::edge_residual_capacity_t>::type
- residual_capacity;
-
- std::map<int64_t, V> id_to_V;
- std::map<V, int64_t> V_to_id;
- std::map<E, int64_t> E_to_id;
-
- V source_vertex;
- V sink_vertex;
-
- V get_boost_vertex(int64_t id) {
- return id_to_V[id];
- }
-
- int64_t get_vertex_id(V v) {
- return V_to_id[v];
- }
-
- int64_t get_edge_id(E e) {
- return E_to_id[e];
- }
-
- int64_t boykov_kolmogorov() {
- size_t num_v = boost::num_vertices(boost_graph);
- std::vector<boost::default_color_type> color(num_v);
- std::vector<int64_t> distance(num_v);
- return boost::boykov_kolmogorov_max_flow(boost_graph,
- source_vertex,
- sink_vertex);
- }
-
- void create_edge_disjoint_paths_graph(pgr_basic_edge_t *data_edges,
- size_t total_tuples,
- const std::set<int64_t> &source_vertices,
- const std::set<int64_t> &sink_vertices,
- bool directed) {
- std::set<int64_t> vertices;
- for (int64_t source : source_vertices) {
- vertices.insert(source);
- }
- for (int64_t sink : sink_vertices) {
- vertices.insert(sink);
- }
- for (size_t i = 0; i < total_tuples; ++i) {
- vertices.insert(data_edges[i].source);
- vertices.insert(data_edges[i].target);
- }
- for (int64_t id : vertices) {
- V v = add_vertex(boost_graph);
- id_to_V.insert(std::pair<int64_t, V>(id, v));
- V_to_id.insert(std::pair<V, int64_t>(v, id));
- }
- bool added;
-
- V supersource = add_vertex(boost_graph);
- for (int64_t source_id : source_vertices) {
- V source = get_boost_vertex(source_id);
- E e, e_rev;
- boost::tie(e, added) =
- boost::add_edge(supersource, source, boost_graph);
- boost::tie(e_rev, added) =
- boost::add_edge(source, supersource, boost_graph);
- capacity[e] = (std::numeric_limits<int32_t>::max)();
- capacity[e_rev] = 0;
- rev[e] = e_rev;
- rev[e_rev] = e;
- }
-
- V supersink = add_vertex(boost_graph);
- for (int64_t sink_id : sink_vertices) {
- V sink = get_boost_vertex(sink_id);
- E e1, e1_rev;
- boost::tie(e1, added) =
- boost::add_edge(sink, supersink, boost_graph);
- boost::tie(e1_rev, added) =
- boost::add_edge(supersink, sink, boost_graph);
- capacity[e1] = (std::numeric_limits<int32_t>::max)();
- capacity[e1_rev] = 0;
- rev[e1] = e1_rev;
- rev[e1_rev] = e1;
- }
-
- source_vertex = supersource;
- sink_vertex = supersink;
-
- capacity = get(boost::edge_capacity, boost_graph);
- rev = get(boost::edge_reverse, boost_graph);
- residual_capacity =
- get(boost::edge_residual_capacity, boost_graph);
-
- for (size_t i = 0; i < total_tuples; ++i) {
- V v1 = get_boost_vertex(data_edges[i].source);
- V v2 = get_boost_vertex(data_edges[i].target);
- if (directed) {
- E e, e_rev;
- boost::tie(e, added) =
- boost::add_edge(v1, v2, boost_graph);
- boost::tie(e_rev, added) =
- boost::add_edge(v2, v1, boost_graph);
- E_to_id.insert(std::pair<E, int64_t>(e, data_edges[i].id));
- E_to_id.insert(std::pair<E, int64_t>(e_rev,
- data_edges[i].id));
- capacity[e] = data_edges[i].going ? 1 : 0;
- capacity[e_rev] = data_edges[i].coming ? 1 : 0;
- rev[e] = e_rev;
- rev[e_rev] = e;
- } else {
- if (data_edges[i].going || data_edges[i].coming) {
- E e, e_rev;
- boost::tie(e, added) =
- boost::add_edge(v1, v2, boost_graph);
- boost::tie(e_rev, added) =
- boost::add_edge(v2, v1, boost_graph);
- E_to_id.insert(std::pair<E, int64_t>(e, data_edges[i].id));
- E_to_id.insert(std::pair<E, int64_t>(e_rev,
- data_edges[i].id));
- capacity[e] = 1;
- capacity[e_rev] = 1;
- rev[e] = e_rev;
- rev[e_rev] = e;
- }
- }
- }
- }
-
- void
- flow_dfs(V vertex,
- int64_t path_id,
- std::vector<std::vector<int64_t> > &paths) {
- Eout_it ei, e_end;
- if (boost::edge(vertex, sink_vertex, boost_graph).second) {
- int64_t v_id = get_vertex_id(vertex);
- paths[path_id].push_back(v_id);
- } else {
- for (boost::tie(ei, e_end) =
- boost::out_edges(vertex, boost_graph);
- ei != e_end; ++ei) {
- if (residual_capacity[*ei] < capacity[*ei]) {
- // exclude this edge from subsequent visits
- capacity[*ei] = -1;
- int64_t v_id = get_vertex_id(vertex);
- paths[path_id].push_back(v_id);
- flow_dfs((*ei).m_target,
- path_id,
- paths);
- break;
- }
- }
- }
- }
-
- void
- get_edge_disjoint_paths(std::vector<General_path_element_t> &path_elements,
- int64_t flow) {
- std::vector<std::vector<int64_t> > paths(flow, std::vector<int64_t>());
- int64_t path_id = 0;
- Eout_it ei, e_end, ei2, e2_end;
- for (boost::tie(ei, e_end) =
- boost::out_edges(source_vertex, boost_graph);
- ei != e_end; ++ei) {
- if (capacity[*ei] - residual_capacity[*ei] > 0) {
- for (boost::tie(ei2, e2_end) =
- boost::out_edges((*ei).m_target, boost_graph);
- ei2 != e2_end; ++ei2) {
- if (capacity[*ei2] - residual_capacity[*ei2]
- > 0) {
- paths[path_id].push_back(get_vertex_id((*ei2).m_source));
- flow_dfs((*ei2).m_target, path_id, paths);
- path_id++;
- }
- }
- }
- }
- for (int i = 0; i < flow; i++) {
- size_t size = paths[i].size();
- E e;
- bool exists;
- size_t j;
- for (j = 0; j < size - 1; j++) {
- General_path_element_t edge;
- edge.seq = static_cast<int>(j + 1);
- edge.start_id = paths[i][0];
- edge.end_id = paths[i][size - 1];
- edge.node = paths[i][j];
- boost::tie(e, exists) = boost::edge(get_boost_vertex(paths[i][j]),
- get_boost_vertex(paths[i][j
- + 1]),
- boost_graph);
- edge.edge = get_edge_id(e);
- path_elements.push_back(edge);
- }
- General_path_element_t edge;
- edge.seq = static_cast<int>(j + 1);
- edge.start_id = paths[i][0];
- edge.end_id = paths[i][size - 1];
- edge.node = paths[i][j];
- edge.edge = -1;
- path_elements.push_back(edge);
- }
- }
-};
-
-} // namespace flow
-} // namespace pgrouting
-
-#endif // SRC_MAX_FLOW_SRC_PGR_EDGEDISJOINTPATHS_HPP_
diff --git a/src/max_flow/src/pgr_flowgraph.cpp b/src/max_flow/src/pgr_flowgraph.cpp
new file mode 100644
index 0000000..b143bab
--- /dev/null
+++ b/src/max_flow/src/pgr_flowgraph.cpp
@@ -0,0 +1,27 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+Mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "pgr_flowgraph.hpp"
diff --git a/src/max_flow/src/pgr_flowgraph.hpp b/src/max_flow/src/pgr_flowgraph.hpp
new file mode 100644
index 0000000..a891ba9
--- /dev/null
+++ b/src/max_flow/src/pgr_flowgraph.hpp
@@ -0,0 +1,54 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+Mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#ifndef SRC_MAX_FLOW_SRC_PGR_FLOWGRAPH_HPP_
+#define SRC_MAX_FLOW_SRC_PGR_FLOWGRAPH_HPP_
+#pragma once
+
+#include <boost/config.hpp>
+#include <boost/graph/adjacency_list.hpp>
+
+
+namespace pgrouting {
+
+typedef boost::adjacency_list_traits<boost::vecS, boost::vecS, boost::directedS>
+ Traits;
+typedef boost::adjacency_list<boost::listS, boost::vecS, boost::directedS,
+ // Vertex properties
+ boost::property<boost::vertex_index_t, int64_t,
+ boost::property<boost::vertex_color_t, boost::default_color_type,
+ boost::property<boost::vertex_distance_t, int64_t,
+ boost::property<boost::vertex_predecessor_t, Traits::edge_descriptor>
+ > > >,
+ // Edge properties
+ boost::property<boost::edge_capacity_t, int64_t,
+ boost::property<boost::edge_residual_capacity_t, int64_t,
+ boost::property<boost::edge_reverse_t, Traits::edge_descriptor> > > >
+ FlowGraph;
+
+} // namespace pgrouting
+
+#endif // SRC_MAX_FLOW_SRC_PGR_FLOWGRAPH_HPP_
diff --git a/src/max_flow/src/pgr_maxflow.cpp b/src/max_flow/src/pgr_maxflow.cpp
new file mode 100644
index 0000000..4a50347
--- /dev/null
+++ b/src/max_flow/src/pgr_maxflow.cpp
@@ -0,0 +1,310 @@
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Copyright (c) 2016 Andrea Nardelli
+Mail: nrd.nardelli at gmail.com
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "pgr_maxflow.hpp"
+
+#include <limits>
+#include <utility>
+#include <vector>
+#include <set>
+
+namespace pgrouting {
+namespace graph {
+
+
+PgrFlowGraph::PgrFlowGraph(
+ const std::vector<pgr_edge_t> &edges,
+ const std::set<int64_t> &source_vertices,
+ const std::set<int64_t> &sink_vertices,
+ int algorithm) {
+ add_vertices(edges, source_vertices, sink_vertices);
+
+ capacity = get(boost::edge_capacity, graph);
+ rev = get(boost::edge_reverse, graph);
+ residual_capacity = get(boost::edge_residual_capacity, graph);
+
+ if (algorithm == 1) {
+ insert_edges_push_relabel(edges);
+ } else {
+ insert_edges(edges);
+ }
+}
+
+PgrFlowGraph::PgrFlowGraph(
+ const std::vector<pgr_edge_t> &edges,
+ const std::set<int64_t> &source_vertices,
+ const std::set<int64_t> &sink_vertices,
+ bool directed) {
+ add_vertices(edges, source_vertices, sink_vertices);
+
+ capacity = get(boost::edge_capacity, graph);
+ rev = get(boost::edge_reverse, graph);
+ residual_capacity =
+ get(boost::edge_residual_capacity, graph);
+
+ insert_edges_edge_disjoint(edges, directed);
+}
+
+/* Inserting edges
+ * Push-relabel requires each edge to be mapped to its reverse with capacity 0.
+ */
+void PgrFlowGraph::insert_edges_push_relabel(
+ const std::vector<pgr_edge_t> &edges) {
+ bool added;
+ for (const auto edge : edges) {
+ V v1 = get_boost_vertex(edge.source);
+ V v2 = get_boost_vertex(edge.target);
+ E e1, e1_rev, e2, e2_rev;
+ if (edge.cost > 0) {
+ boost::tie(e1, added) = boost::add_edge(v1, v2, graph);
+ boost::tie(e1_rev, added) =
+ boost::add_edge(v2, v1, graph);
+ E_to_id.insert(std::pair<E, int64_t>(e1, edge.id));
+ E_to_id.insert(std::pair<E, int64_t>(e1_rev, edge.id));
+ capacity[e1] = (int64_t) edge.cost;
+ capacity[e1_rev] = 0;
+ rev[e1] = e1_rev;
+ rev[e1_rev] = e1;
+ }
+ if (edge.reverse_cost > 0) {
+ boost::tie(e2, added) = boost::add_edge(v2, v1, graph);
+ boost::tie(e2_rev, added) =
+ boost::add_edge(v1, v2, graph);
+ E_to_id.insert(std::pair<E, int64_t>(e2, edge.id));
+ E_to_id.insert(std::pair<E, int64_t>(e2_rev, edge.id));
+ capacity[e2] = (int64_t) edge.reverse_cost;
+ capacity[e2_rev] = 0;
+ rev[e2] = e2_rev;
+ rev[e2_rev] = e2;
+ }
+ }
+}
+
+/* Inserting edges
+ * The other pgr_maxflow algorithms have no such requirement. (can have have as many edges)
+ */
+void PgrFlowGraph::insert_edges(
+ const std::vector<pgr_edge_t> &edges) {
+ bool added;
+ for (const auto edge : edges) {
+ V v1 = get_boost_vertex(edge.source);
+ V v2 = get_boost_vertex(edge.target);
+ E e, e_rev;
+ boost::tie(e, added) = boost::add_edge(v1, v2, graph);
+ boost::tie(e_rev, added) =
+ boost::add_edge(v2, v1, graph);
+ E_to_id.insert(std::pair<E, int64_t>(e, edge.id));
+ E_to_id.insert(std::pair<E, int64_t>(e_rev, edge.id));
+ capacity[e] = edge.cost > 0 ? (int64_t) edge.cost : 0;
+ capacity[e_rev] = edge.reverse_cost > 0
+ ? (int64_t) edge.reverse_cost : 0;
+ rev[e] = e_rev;
+ rev[e_rev] = e;
+ }
+}
+
+/* Inserting edges
+ * for the edge_disjoint_paths algorithms
+ */
+void PgrFlowGraph::insert_edges_edge_disjoint(
+ const std::vector<pgr_edge_t> &edges,
+ bool directed) {
+ bool added;
+ for (const auto edge : edges) {
+ V v1 = get_boost_vertex(edge.source);
+ V v2 = get_boost_vertex(edge.target);
+ E e, e_rev;
+ boost::tie(e, added) =
+ boost::add_edge(v1, v2, graph);
+ boost::tie(e_rev, added) =
+ boost::add_edge(v2, v1, graph);
+ E_to_id.insert(std::pair<E, int64_t>(e, edge.id));
+ E_to_id.insert(std::pair<E, int64_t>(e_rev,
+ edge.id));
+ if (directed) {
+ capacity[e] = edge.cost >= 0 ? 1 : 0;
+ capacity[e_rev] = edge.reverse_cost >= 0 ? 1 : 0;
+ } else {
+ if (edge.cost >= 0 || edge.reverse_cost >= 0) {
+ capacity[e] = 1;
+ capacity[e_rev] = 1;
+ }
+ }
+ rev[e] = e_rev;
+ rev[e_rev] = e;
+ }
+}
+
+void PgrFlowGraph::set_supersource(
+ const std::set<int64_t> &source_vertices) {
+ bool added;
+ supersource = add_vertex(graph);
+ for (int64_t source_id : source_vertices) {
+ V source = get_boost_vertex(source_id);
+ E e, e_rev;
+ boost::tie(e, added) =
+ boost::add_edge(supersource, source, graph);
+ boost::tie(e_rev, added) =
+ boost::add_edge(source, supersource, graph);
+
+ capacity[e] = (std::numeric_limits<int32_t>::max)();
+ /* From sources to supersource has 0 capacity*/
+ capacity[e_rev] = 0;
+ rev[e] = e_rev;
+ rev[e_rev] = e;
+ }
+}
+
+void PgrFlowGraph::set_supersink(
+ const std::set<int64_t> &sink_vertices) {
+ bool added;
+ supersink = add_vertex(graph);
+ for (int64_t sink_id : sink_vertices) {
+ V sink = get_boost_vertex(sink_id);
+ E e, e_rev;
+ boost::tie(e, added) = boost::add_edge(sink, supersink, graph);
+ boost::tie(e_rev, added) =
+ boost::add_edge(supersink, sink, graph);
+ /*
+ * NOTE: int64_t crashes the server
+ */
+ /* From sinks to supersink has maximum capacity*/
+ capacity[e] = (std::numeric_limits<int32_t>::max)();
+ /* From supersink to sinks has 0 capacity*/
+ capacity[e_rev] = 0;
+ rev[e] = e_rev;
+ rev[e_rev] = e;
+ }
+}
+
+std::vector<pgr_flow_t>
+PgrFlowGraph::get_flow_edges() const {
+ std::vector<pgr_flow_t> flow_edges;
+ E_it e, e_end;
+ for (boost::tie(e, e_end) = boost::edges(graph); e != e_end;
+ ++e) {
+ // A supersource/supersink is used internally
+ if (((capacity[*e] - residual_capacity[*e]) > 0) &&
+ ((*e).m_source != supersource) &&
+ ((*e).m_target != supersink)) {
+ pgr_flow_t edge;
+ edge.edge = get_edge_id(*e);
+ edge.source = get_vertex_id((*e).m_source);
+ edge.target = get_vertex_id((*e).m_target);
+ edge.flow = capacity[*e] - residual_capacity[*e];
+ edge.residual_capacity = residual_capacity[*e];
+ flow_edges.push_back(edge);
+ }
+ }
+ return flow_edges;
+}
+
+
+
+void
+PgrFlowGraph::flow_dfs(V vertex,
+ int64_t path_id,
+ std::vector<std::vector<int64_t> > &paths) {
+ Eout_it ei, e_end;
+ if (boost::edge(vertex, supersink, graph).second) {
+ int64_t v_id = get_vertex_id(vertex);
+ paths[path_id].push_back(v_id);
+ } else {
+ for (boost::tie(ei, e_end) =
+ boost::out_edges(vertex, graph);
+ ei != e_end; ++ei) {
+ if (residual_capacity[*ei] < capacity[*ei]) {
+ // exclude this edge from subsequent visits
+ capacity[*ei] = -1;
+ int64_t v_id = get_vertex_id(vertex);
+ paths[path_id].push_back(v_id);
+ flow_dfs((*ei).m_target,
+ path_id,
+ paths);
+ break;
+ }
+ }
+ }
+}
+
+std::vector<General_path_element_t>
+PgrFlowGraph::get_edge_disjoint_paths(
+ int64_t flow) {
+ std::vector<General_path_element_t> path_elements;
+
+ std::vector<std::vector<int64_t> > paths(flow, std::vector<int64_t>());
+ int64_t path_id = 0;
+ Eout_it ei, e_end, ei2, e2_end;
+ for (boost::tie(ei, e_end) =
+ boost::out_edges(supersource, graph);
+ ei != e_end; ++ei) {
+ if (capacity[*ei] - residual_capacity[*ei] > 0) {
+ for (boost::tie(ei2, e2_end) =
+ boost::out_edges((*ei).m_target, graph);
+ ei2 != e2_end; ++ei2) {
+ if (capacity[*ei2] - residual_capacity[*ei2]
+ > 0) {
+ paths[path_id].push_back(get_vertex_id((*ei2).m_source));
+ flow_dfs((*ei2).m_target, path_id, paths);
+ path_id++;
+ }
+ }
+ }
+ }
+ for (int i = 0; i < flow; i++) {
+ size_t size = paths[i].size();
+ E e;
+ bool exists;
+ size_t j;
+ for (j = 0; j < size - 1; j++) {
+ General_path_element_t edge;
+ edge.seq = static_cast<int>(j + 1);
+ edge.start_id = paths[i][0];
+ edge.end_id = paths[i][size - 1];
+ edge.node = paths[i][j];
+ boost::tie(e, exists) = boost::edge(get_boost_vertex(paths[i][j]),
+ get_boost_vertex(paths[i][j
+ + 1]),
+ graph);
+ edge.edge = get_edge_id(e);
+ path_elements.push_back(edge);
+ }
+ General_path_element_t edge;
+ edge.seq = static_cast<int>(j + 1);
+ edge.start_id = paths[i][0];
+ edge.end_id = paths[i][size - 1];
+ edge.node = paths[i][j];
+ edge.edge = -1;
+ path_elements.push_back(edge);
+ }
+ return path_elements;
+}
+
+
+
+} // namespace graph
+} // namespace pgrouting
+
diff --git a/src/max_flow/src/pgr_maxflow.hpp b/src/max_flow/src/pgr_maxflow.hpp
index 231c54c..0a8fece 100644
--- a/src/max_flow/src/pgr_maxflow.hpp
+++ b/src/max_flow/src/pgr_maxflow.hpp
@@ -28,12 +28,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#define SRC_MAX_FLOW_SRC_PGR_MAXFLOW_HPP_
#pragma once
-#ifdef unlink
-#undef unlink
-#endif
-#include <boost/config.hpp>
-#include <boost/graph/adjacency_list.hpp>
+#include "pgr_flowgraph.hpp"
#include <boost/graph/push_relabel_max_flow.hpp>
#include <boost/graph/edmonds_karp_max_flow.hpp>
#include <boost/graph/boykov_kolmogorov_max_flow.hpp>
@@ -46,232 +42,155 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include <set>
#include <limits>
-#include "./../../common/src/pgr_types.h"
+#include "c_types/pgr_flow_t.h"
+#include "c_types/pgr_edge_t.h"
+#include "c_types/general_path_element_t.h"
-namespace pgrouting {
-
-typedef boost::adjacency_list_traits<boost::vecS, boost::vecS, boost::directedS>
- Traits;
-typedef boost::adjacency_list<boost::listS, boost::vecS, boost::directedS,
- // Vertex properties
- boost::property<boost::vertex_name_t, std::string,
- boost::property<boost::vertex_index_t, int64_t,
- boost::property<boost::vertex_color_t, boost::default_color_type,
- boost::property<boost::vertex_distance_t, int64_t,
- boost::property<boost::vertex_predecessor_t, Traits::edge_descriptor>
- > > > >,
- // Edge properties
- boost::property<boost::edge_capacity_t, int64_t,
- boost::property<boost::edge_residual_capacity_t, int64_t,
- boost::property<boost::edge_reverse_t, Traits::edge_descriptor> > > >
- FlowGraph;
+namespace pgrouting {
namespace graph {
-template<class G>
+
class PgrFlowGraph {
+ typedef boost::graph_traits<FlowGraph>::vertex_descriptor V;
+ typedef boost::graph_traits<FlowGraph>::edge_descriptor E;
+ typedef boost::graph_traits<FlowGraph>::vertex_iterator V_it;
+ typedef boost::graph_traits<FlowGraph>::edge_iterator E_it;
+ typedef boost::graph_traits<FlowGraph>::out_edge_iterator Eout_it;
+
+
+ boost::property_map
+ <FlowGraph, boost::edge_capacity_t>::type capacity;
+ boost::property_map
+ <FlowGraph, boost::edge_reverse_t>::type rev;
+ boost::property_map
+ <FlowGraph, boost::edge_residual_capacity_t>::type residual_capacity;
+
+
public:
- G boost_graph;
-
- typedef typename boost::graph_traits<G>::vertex_descriptor V;
- typedef typename boost::graph_traits<G>::edge_descriptor E;
- typedef typename boost::graph_traits<G>::vertex_iterator V_it;
- typedef typename boost::graph_traits<G>::edge_iterator E_it;
-
- typename boost::property_map<G, boost::edge_capacity_t>::type capacity;
- typename boost::property_map<G, boost::edge_reverse_t>::type rev;
- typename boost::property_map<G, boost::edge_residual_capacity_t>::type
- residual_capacity;
-
-
- std::map<int64_t, V> id_to_V;
- std::map<V, int64_t> V_to_id;
- std::map<E, int64_t> E_to_id;
-
- V source_vertex;
- V sink_vertex;
-
- V get_boost_vertex(int64_t id) {
- return id_to_V[id];
- }
-
- int64_t get_vertex_id(V v) {
- return V_to_id[v];
- }
-
- int64_t get_edge_id(E e) {
- return E_to_id[e];
- }
-
- int64_t push_relabel() {
- return boost::push_relabel_max_flow(boost_graph,
- source_vertex,
- sink_vertex);
- }
-
- int64_t edmonds_karp() {
- return boost::edmonds_karp_max_flow(boost_graph,
- source_vertex,
- sink_vertex);
- }
-
- int64_t boykov_kolmogorov() {
- size_t num_v = boost::num_vertices(boost_graph);
- std::vector<boost::default_color_type> color(num_v);
- std::vector<int64_t> distance(num_v);
- return boost::boykov_kolmogorov_max_flow(boost_graph,
- source_vertex,
- sink_vertex);
- }
-
- void create_flow_graph(pgr_edge_t *data_edges,
- size_t total_tuples,
- const std::set<int64_t> &source_vertices,
- const std::set<int64_t> &sink_vertices,
- char *algorithm) {
- /* In multi source flow graphs, a super source is created connected to all sources with "infinite" capacity
- * The same applies for sinks.
- * To avoid code repetition, a supersource/sink is used even in the one to one signature.
- */
-
- /*
- * vertices = {sources} U {sink} U {edges.source} U {edge.target}
- */
- std::set<int64_t> vertices(source_vertices);
- vertices.insert(sink_vertices.begin(), sink_vertices.end());
-
- for (size_t i = 0; i < total_tuples; ++i) {
- vertices.insert(data_edges[i].source);
- vertices.insert(data_edges[i].target);
- }
-
- for (int64_t id : vertices) {
- V v = add_vertex(boost_graph);
- id_to_V.insert(std::pair<int64_t, V>(id, v));
- V_to_id.insert(std::pair<V, int64_t>(v, id));
- }
- bool added;
-
- V supersource = add_vertex(boost_graph);
- V supersink = add_vertex(boost_graph);
-
- source_vertex = supersource;
- sink_vertex = supersink;
-
- capacity = get(boost::edge_capacity, boost_graph);
- rev = get(boost::edge_reverse, boost_graph);
- residual_capacity = get(boost::edge_residual_capacity, boost_graph);
-
- /* Inserting edges
- * Push-relabel requires each edge to be mapped to its reverse with capacity 0.
- * The other algorithms have no such requirement. (can have have as many edges)
- */
- if (strcmp(algorithm, "push_relabel") == 0) {
- for (size_t i = 0; i < total_tuples; ++i) {
- V v1 = get_boost_vertex(data_edges[i].source);
- V v2 = get_boost_vertex(data_edges[i].target);
- E e1, e1_rev, e2, e2_rev;
- if (data_edges[i].cost > 0) {
- boost::tie(e1, added) = boost::add_edge(v1, v2, boost_graph);
- boost::tie(e1_rev, added) =
- boost::add_edge(v2, v1, boost_graph);
- E_to_id.insert(std::pair<E, int64_t>(e1, data_edges[i].id));
- E_to_id.insert(std::pair<E, int64_t>(e1_rev,
- data_edges[i].id));
- capacity[e1] = (int64_t) data_edges[i].cost;
- capacity[e1_rev] = 0;
- rev[e1] = e1_rev;
- rev[e1_rev] = e1;
- }
- if (data_edges[i].reverse_cost > 0) {
- boost::tie(e2, added) = boost::add_edge(v2, v1, boost_graph);
- boost::tie(e2_rev, added) =
- boost::add_edge(v1, v2, boost_graph);
- E_to_id.insert(std::pair<E, int64_t>(e2, data_edges[i].id));
- E_to_id.insert(std::pair<E, int64_t>(e2_rev,
- data_edges[i].id));
- capacity[e2] = (int64_t) data_edges[i].reverse_cost;
- capacity[e2_rev] = 0;
- rev[e2] = e2_rev;
- rev[e2_rev] = e2;
- }
- }
- } else {
- for (size_t i = 0; i < total_tuples; ++i) {
- V v1 = get_boost_vertex(data_edges[i].source);
- V v2 = get_boost_vertex(data_edges[i].target);
- E e, e_rev;
- boost::tie(e, added) = boost::add_edge(v1, v2, boost_graph);
- boost::tie(e_rev, added) =
- boost::add_edge(v2, v1, boost_graph);
- E_to_id.insert(std::pair<E, int64_t>(e, data_edges[i].id));
- E_to_id.insert(std::pair<E, int64_t>(e_rev, data_edges[i].id));
- capacity[e] =
- data_edges[i].cost > 0 ? (int64_t) data_edges[i].cost : 0;
- capacity[e_rev] = data_edges[i].reverse_cost > 0
- ? (int64_t) data_edges[i].reverse_cost : 0;
- rev[e] = e_rev;
- rev[e_rev] = e;
- }
- }
- for (int64_t source_id : source_vertices) {
- V source = get_boost_vertex(source_id);
- int64_t total = 0;
- for (auto edge = out_edges(source, boost_graph).first;
- edge != out_edges(source, boost_graph).second;
- ++edge) {
- total += capacity[*edge];
- }
- E e, e_rev;
- boost::tie(e, added) =
- boost::add_edge(supersource, source, boost_graph);
- boost::tie(e_rev, added) =
- boost::add_edge(source, supersource, boost_graph);
-
- capacity[e] = total;
- /* From sources to supersource has 0 capacity*/
- capacity[e_rev] = 0;
- rev[e] = e_rev;
- rev[e_rev] = e;
- }
- for (int64_t sink_id : sink_vertices) {
- V sink = get_boost_vertex(sink_id);
- E e, e_rev;
- boost::tie(e, added) = boost::add_edge(sink, supersink, boost_graph);
- boost::tie(e_rev, added) =
- boost::add_edge(supersink, sink, boost_graph);
- /*
- * NOTE: int64_t crashes the server
- */
- /* From sinks to supersink has maximum capacity*/
- capacity[e] = (std::numeric_limits<int32_t>::max)();
- /* From supersink to sinks has 0 capacity*/
- capacity[e_rev] = 0;
- rev[e] = e_rev;
- rev[e_rev] = e;
- }
-
- }
-
- void get_flow_edges(std::vector<pgr_flow_t> &flow_edges) {
- E_it e, e_end;
- for (boost::tie(e, e_end) = boost::edges(boost_graph); e != e_end;
- ++e) {
- // A supersource/supersink is used internally
- if (((capacity[*e] - residual_capacity[*e]) > 0) &&
- ((*e).m_source != source_vertex) &&
- ((*e).m_target != sink_vertex)) {
- pgr_flow_t edge;
- edge.edge = get_edge_id(*e);
- edge.source = get_vertex_id((*e).m_source);
- edge.target = get_vertex_id((*e).m_target);
- edge.flow = capacity[*e] - residual_capacity[*e];
- edge.residual_capacity = residual_capacity[*e];
- flow_edges.push_back(edge);
- }
- }
- }
+ int64_t push_relabel() {
+ return boost::push_relabel_max_flow(
+ graph,
+ supersource,
+ supersink);
+ }
+
+ int64_t edmonds_karp() {
+ return boost::edmonds_karp_max_flow(
+ graph,
+ supersource,
+ supersink);
+ }
+
+ int64_t boykov_kolmogorov() {
+ size_t num_v = boost::num_vertices(graph);
+ std::vector<boost::default_color_type> color(num_v);
+ std::vector<int64_t> distance(num_v);
+ return boost::boykov_kolmogorov_max_flow(
+ graph,
+ supersource,
+ supersink);
+ }
+ std::vector<General_path_element_t> edge_disjoint_paths() {
+ size_t num_v = boost::num_vertices(graph);
+ std::vector<boost::default_color_type> color(num_v);
+ std::vector<int64_t> distance(num_v);
+ auto flow = boost::boykov_kolmogorov_max_flow(
+ graph,
+ supersource,
+ supersink);
+ return get_edge_disjoint_paths(flow);
+ }
+
+ PgrFlowGraph(
+ const std::vector<pgr_edge_t> &edges,
+ const std::set<int64_t> &source_vertices,
+ const std::set<int64_t> &sink_vertices,
+ int algorithm);
+
+ PgrFlowGraph(
+ const std::vector<pgr_edge_t> &edges,
+ const std::set<int64_t> &source_vertices,
+ const std::set<int64_t> &sink_vertices,
+ bool directed);
+
+
+ std::vector<pgr_flow_t> get_flow_edges() const;
+
+ std::vector<General_path_element_t> get_edge_disjoint_paths(
+ int64_t flow);
+
+ private:
+ V get_boost_vertex(int64_t id) const {
+ return id_to_V.at(id);
+ }
+
+ int64_t get_vertex_id(V v) const {
+ return V_to_id.at(v);
+ }
+
+ int64_t get_edge_id(E e) const {
+ return E_to_id.at(e);
+ }
+
+ void set_supersource(
+ const std::set<int64_t> &source_vertices);
+ void set_supersink(
+ const std::set<int64_t> &sink_vertices);
+
+ void insert_edges_push_relabel(
+ const std::vector<pgr_edge_t> &edges);
+ void insert_edges(
+ const std::vector<pgr_edge_t> &edges);
+ void insert_edges_edge_disjoint(
+ const std::vector<pgr_edge_t> &edges,
+ bool directed);
+
+ void flow_dfs(
+ V vertex,
+ int64_t path_id,
+ std::vector<std::vector<int64_t> > &paths);
+
+ /*
+ * vertices = {sources} U {sink} U {edges.source} U {edge.target}
+ */
+ template <typename T>
+ void add_vertices(
+ const T &edges,
+ const std::set<int64_t> &source_vertices,
+ const std::set<int64_t> &sink_vertices) {
+ std::set<int64_t> vertices(source_vertices);
+ vertices.insert(sink_vertices.begin(), sink_vertices.end());
+
+ for (const auto e : edges) {
+ vertices.insert(e.source);
+ vertices.insert(e.target);
+ }
+
+ for (const auto id : vertices) {
+ V v = add_vertex(graph);
+ id_to_V.insert(std::pair<int64_t, V>(id, v));
+ V_to_id.insert(std::pair<V, int64_t>(v, id));
+ }
+
+ set_supersource(source_vertices);
+ set_supersink(sink_vertices);
+ }
+
+ private:
+ FlowGraph graph;
+ std::map<int64_t, V> id_to_V;
+ std::map<V, int64_t> V_to_id;
+ std::map<E, int64_t> E_to_id;
+
+
+ /* In multi source flow graphs, a super source is created connected to all sources with "infinite" capacity
+ * The same applies for sinks.
+ * To avoid code repetition, a supersource/sink is used even in the one to one signature.
+ */
+ V supersource;
+ V supersink;
};
} // namespace graph
diff --git a/src/max_flow/src/pgr_maximumcardinalitymatching.hpp b/src/max_flow/src/pgr_maximumcardinalitymatching.hpp
index 405880b..6dab935 100644
--- a/src/max_flow/src/pgr_maximumcardinalitymatching.hpp
+++ b/src/max_flow/src/pgr_maximumcardinalitymatching.hpp
@@ -28,10 +28,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#define SRC_MAX_FLOW_SRC_PGR_MAXIMUMCARDINALITYMATCHING_HPP_
#pragma once
-#include "./../../common/src/pgr_types.h"
-#ifdef unlink
-#undef unlink
-#endif
#include <boost/config.hpp>
#include <boost/graph/adjacency_list.hpp>
diff --git a/src/max_flow/test/doc-pgr_boykovKolmogorov.result b/src/max_flow/test/doc-pgr_boykovKolmogorov.result
new file mode 100644
index 0000000..3058de9
--- /dev/null
+++ b/src/max_flow/test/doc-pgr_boykovKolmogorov.result
@@ -0,0 +1,90 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q2
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[1, 3, 11]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 50 | 80
+ 2 | 3 | 4 | 3 | 80 | 50
+ 3 | 4 | 5 | 2 | 50 | 0
+ 4 | 10 | 5 | 10 | 80 | 50
+ 5 | 8 | 6 | 5 | 130 | 0
+ 6 | 9 | 6 | 9 | 80 | 50
+ 7 | 11 | 6 | 11 | 130 | 0
+ 8 | 16 | 9 | 4 | 80 | 0
+ 9 | 12 | 10 | 11 | 80 | 20
+(9 rows)
+
+-- q3
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q4
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 50 | 80
+ 2 | 3 | 4 | 3 | 80 | 50
+ 3 | 4 | 5 | 2 | 50 | 0
+ 4 | 10 | 5 | 10 | 100 | 30
+ 5 | 8 | 6 | 5 | 130 | 0
+ 6 | 9 | 6 | 9 | 80 | 50
+ 7 | 11 | 6 | 11 | 130 | 0
+ 8 | 7 | 8 | 5 | 20 | 30
+ 9 | 16 | 9 | 4 | 80 | 0
+ 10 | 12 | 10 | 11 | 100 | 0
+(10 rows)
+
+-- q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/max_flow/test/doc-pgr_boykovKolmogorov.test.sql b/src/max_flow/test/doc-pgr_boykovKolmogorov.test.sql
new file mode 100644
index 0000000..42b9352
--- /dev/null
+++ b/src/max_flow/test/doc-pgr_boykovKolmogorov.test.sql
@@ -0,0 +1,46 @@
+
+\echo -- q1
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+
+\echo -- q2
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[1, 3, 11]
+);
+
+\echo -- q3
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+
+\echo -- q4
+SELECT * FROM pgr_boykovKolmogorov(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+
+\echo -- q5
diff --git a/src/max_flow/test/doc-pgr_edgeDisjointPaths.result b/src/max_flow/test/doc-pgr_edgeDisjointPaths.result
index 18a4df2..be2f812 100644
--- a/src/max_flow/test/doc-pgr_edgeDisjointPaths.result
+++ b/src/max_flow/test/doc-pgr_edgeDisjointPaths.result
@@ -1,44 +1,128 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-1|1|3|2
-2|2|2|4
-3|3|5|-1
-4|1|3|5
-5|2|6|8
-6|3|5|-1
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 3, 5
+);
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 3 | 2 | 1 | 0
+ 2 | 1 | 2 | 2 | 4 | 1 | 1
+ 3 | 1 | 3 | 5 | -1 | 0 | 2
+ 4 | 2 | 1 | 3 | 5 | 1 | 0
+ 5 | 2 | 2 | 6 | 8 | 1 | 1
+ 6 | 2 | 3 | 5 | -1 | 0 | 2
+(6 rows)
+
-- q2
-1|1|3|2
-2|2|2|4
-3|3|5|-1
-4|1|3|3
-5|2|4|16
-6|3|9|9
-7|4|6|8
-8|5|5|-1
-9|1|3|5
-10|2|6|11
-11|3|11|12
-12|4|10|10
-13|5|5|-1
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 3, 5,
+ directed := false
+);
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | 3 | 2 | 1 | 0
+ 2 | 1 | 2 | 2 | 4 | 1 | 1
+ 3 | 1 | 3 | 5 | -1 | 0 | 2
+ 4 | 2 | 1 | 3 | 3 | -1 | 0
+ 5 | 2 | 2 | 4 | 16 | 1 | -1
+ 6 | 2 | 3 | 9 | 9 | 1 | 0
+ 7 | 2 | 4 | 6 | 8 | 1 | 1
+ 8 | 2 | 5 | 5 | -1 | 0 | 2
+ 9 | 3 | 1 | 3 | 5 | 1 | 0
+ 10 | 3 | 2 | 6 | 11 | 1 | 1
+ 11 | 3 | 3 | 11 | 12 | -1 | 2
+ 12 | 3 | 4 | 10 | 10 | 1 | 1
+ 13 | 3 | 5 | 5 | -1 | 0 | 2
+(13 rows)
+
-- q3
-1|1|5|3|2
-2|2|5|2|4
-3|3|5|5|-1
-4|1|5|3|5
-5|2|5|6|8
-6|3|5|5|-1
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 3, ARRAY[4, 5, 10]
+);
+ seq | path_id | path_seq | end_vid | node | edge | cost | agg_cost
+-----+---------+----------+---------+------+------+------+----------
+ 1 | 1 | 1 | 4 | 3 | 5 | 1 | 0
+ 2 | 1 | 2 | 4 | 6 | 9 | 1 | 1
+ 3 | 1 | 3 | 4 | 9 | 16 | 1 | 2
+ 4 | 1 | 4 | 4 | 4 | -1 | 0 | 3
+ 5 | 2 | 1 | 5 | 3 | 2 | 1 | 0
+ 6 | 2 | 2 | 5 | 2 | 4 | 1 | 1
+ 7 | 2 | 3 | 5 | 5 | -1 | 0 | 2
+ 8 | 3 | 1 | 5 | 3 | 5 | 1 | 0
+ 9 | 3 | 2 | 5 | 6 | 8 | 1 | 1
+ 10 | 3 | 3 | 5 | 5 | -1 | 0 | 2
+ 11 | 4 | 1 | 10 | 3 | 2 | 1 | 0
+ 12 | 4 | 2 | 10 | 2 | 4 | 1 | 1
+ 13 | 4 | 3 | 10 | 5 | 10 | 1 | 2
+ 14 | 4 | 4 | 10 | 10 | -1 | 0 | 3
+(14 rows)
+
-- q4
-1|1|3|3|2
-2|2|3|2|4
-3|3|3|5|-1
-4|1|6|6|8
-5|2|6|5|-1
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[3, 6], 5
+);
+ seq | path_id | path_seq | start_vid | node | edge | cost | agg_cost
+-----+---------+----------+-----------+------+------+------+----------
+ 1 | 1 | 1 | 0 | 3 | 2 | 1 | 0
+ 2 | 1 | 2 | 0 | 2 | 4 | 1 | 1
+ 3 | 1 | 3 | 0 | 5 | -1 | 0 | 2
+ 4 | 2 | 1 | 1 | 3 | 5 | 1 | 0
+ 5 | 2 | 2 | 1 | 6 | 8 | 1 | 1
+ 6 | 2 | 3 | 1 | 5 | -1 | 0 | 2
+ 7 | 3 | 1 | 2 | 6 | 8 | 1 | 0
+ 8 | 3 | 2 | 2 | 5 | -1 | 0 | 1
+ 9 | 4 | 1 | 3 | 6 | 9 | 1 | 0
+ 10 | 4 | 2 | 3 | 9 | 16 | 1 | 1
+ 11 | 4 | 3 | 3 | 4 | 3 | 1 | 2
+ 12 | 4 | 4 | 3 | 3 | 2 | 1 | 3
+ 13 | 4 | 5 | 3 | 2 | 4 | 1 | 4
+ 14 | 4 | 6 | 3 | 5 | -1 | 0 | 5
+(14 rows)
+
-- q5
-1|1|3|5|3|2
-2|2|3|5|2|4
-3|3|3|5|5|-1
-4|1|6|5|6|8
-5|2|6|5|5|-1
-6|1|6|4|6|9
-7|2|6|4|9|16
-8|3|6|4|4|-1
+SELECT * FROM pgr_edgeDisjointPaths(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ ARRAY[3, 6], ARRAY[4, 5, 10]
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | 1 | 0 | 4 | 3 | 5 | 1 | 0
+ 2 | 1 | 2 | 0 | 4 | 6 | 9 | 1 | 1
+ 3 | 1 | 3 | 0 | 4 | 9 | 16 | 1 | 2
+ 4 | 1 | 4 | 0 | 4 | 4 | -1 | 0 | 3
+ 5 | 2 | 1 | 1 | 5 | 3 | 2 | 1 | 0
+ 6 | 2 | 2 | 1 | 5 | 2 | 4 | 1 | 1
+ 7 | 2 | 3 | 1 | 5 | 5 | -1 | 0 | 2
+ 8 | 3 | 1 | 2 | 5 | 3 | 5 | 1 | 0
+ 9 | 3 | 2 | 2 | 5 | 6 | 8 | 1 | 1
+ 10 | 3 | 3 | 2 | 5 | 5 | -1 | 0 | 2
+ 11 | 4 | 1 | 3 | 10 | 3 | 2 | 1 | 0
+ 12 | 4 | 2 | 3 | 10 | 2 | 4 | 1 | 1
+ 13 | 4 | 3 | 3 | 10 | 5 | 10 | 1 | 2
+ 14 | 4 | 4 | 3 | 10 | 10 | -1 | 0 | 3
+ 15 | 5 | 1 | 4 | 4 | 6 | 9 | 1 | 0
+ 16 | 5 | 2 | 4 | 4 | 9 | 16 | 1 | 1
+ 17 | 5 | 3 | 4 | 4 | 4 | -1 | 0 | 2
+ 18 | 6 | 1 | 5 | 5 | 6 | 8 | 1 | 0
+ 19 | 6 | 2 | 5 | 5 | 5 | -1 | 0 | 1
+ 20 | 7 | 1 | 6 | 5 | 6 | 9 | 1 | 0
+ 21 | 7 | 2 | 6 | 5 | 9 | 16 | 1 | 1
+ 22 | 7 | 3 | 6 | 5 | 4 | 3 | 1 | 2
+ 23 | 7 | 4 | 6 | 5 | 3 | 2 | 1 | 3
+ 24 | 7 | 5 | 6 | 5 | 2 | 4 | 1 | 4
+ 25 | 7 | 6 | 6 | 5 | 5 | -1 | 0 | 5
+ 26 | 8 | 1 | 7 | 10 | 6 | 8 | 1 | 0
+ 27 | 8 | 2 | 7 | 10 | 5 | 10 | 1 | 1
+ 28 | 8 | 3 | 7 | 10 | 10 | -1 | 0 | 2
+(28 rows)
+
-- q6
+ROLLBACK;
+ROLLBACK
diff --git a/src/max_flow/test/doc-pgr_edgeDisjointPaths.test.sql b/src/max_flow/test/doc-pgr_edgeDisjointPaths.test.sql
index db2e395..6442bb0 100644
--- a/src/max_flow/test/doc-pgr_edgeDisjointPaths.test.sql
+++ b/src/max_flow/test/doc-pgr_edgeDisjointPaths.test.sql
@@ -1,34 +1,32 @@
---These tests used the sample data provided here: http://docs.pgrouting.org/2.2/en/doc/src/developer/sampledata.html#sampledata
-
\echo -- q1
SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
3, 5
);
\echo -- q2
SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
3, 5,
directed := false
);
\echo -- q3
SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
3, ARRAY[4, 5, 10]
);
\echo -- q4
SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
ARRAY[3, 6], 5
);
\echo -- q5
SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
ARRAY[3, 6], ARRAY[4, 5, 10]
);
diff --git a/src/max_flow/test/doc-pgr_edmondsKarp.result b/src/max_flow/test/doc-pgr_edmondsKarp.result
new file mode 100644
index 0000000..c24d3bf
--- /dev/null
+++ b/src/max_flow/test/doc-pgr_edmondsKarp.result
@@ -0,0 +1,90 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q2
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[1, 3, 11]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 50 | 80
+ 2 | 3 | 4 | 3 | 80 | 50
+ 3 | 4 | 5 | 2 | 50 | 0
+ 4 | 10 | 5 | 10 | 80 | 50
+ 5 | 8 | 6 | 5 | 130 | 0
+ 6 | 9 | 6 | 9 | 80 | 50
+ 7 | 11 | 6 | 11 | 130 | 0
+ 8 | 16 | 9 | 4 | 80 | 0
+ 9 | 12 | 10 | 11 | 80 | 20
+(9 rows)
+
+-- q3
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q4
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 50 | 80
+ 2 | 3 | 4 | 3 | 80 | 50
+ 3 | 4 | 5 | 2 | 50 | 0
+ 4 | 10 | 5 | 10 | 100 | 30
+ 5 | 8 | 6 | 5 | 130 | 0
+ 6 | 9 | 6 | 9 | 80 | 50
+ 7 | 11 | 6 | 11 | 130 | 0
+ 8 | 7 | 8 | 5 | 20 | 30
+ 9 | 16 | 9 | 4 | 80 | 0
+ 10 | 12 | 10 | 11 | 100 | 0
+(10 rows)
+
+-- q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/max_flow/test/doc-pgr_edmondsKarp.test.sql b/src/max_flow/test/doc-pgr_edmondsKarp.test.sql
new file mode 100644
index 0000000..bc07c5c
--- /dev/null
+++ b/src/max_flow/test/doc-pgr_edmondsKarp.test.sql
@@ -0,0 +1,46 @@
+
+\echo -- q1
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+
+\echo -- q2
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[1, 3, 11]
+);
+
+\echo -- q3
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+
+\echo -- q4
+SELECT * FROM pgr_edmondsKarp(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+
+\echo -- q5
diff --git a/src/max_flow/test/doc-pgr_maxCardinalityMatch.result b/src/max_flow/test/doc-pgr_maxCardinalityMatch.result
new file mode 100644
index 0000000..feb0660
--- /dev/null
+++ b/src/max_flow/test/doc-pgr_maxCardinalityMatch.result
@@ -0,0 +1,40 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_maxCardinalityMatch(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
+);
+ seq | edge | source | target
+-----+------+--------+--------
+ 1 | 1 | 1 | 2
+ 2 | 3 | 4 | 3
+ 3 | 9 | 6 | 9
+ 4 | 6 | 7 | 8
+ 5 | 14 | 10 | 13
+ 6 | 13 | 11 | 12
+ 7 | 17 | 14 | 15
+ 8 | 18 | 16 | 17
+(8 rows)
+
+-- q2
+SELECT * FROM pgr_maxCardinalityMatch(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
+ directed := false
+);
+ seq | edge | source | target
+-----+------+--------+--------
+ 1 | 1 | 1 | 2
+ 2 | 3 | 3 | 4
+ 3 | 9 | 6 | 9
+ 4 | 6 | 7 | 8
+ 5 | 14 | 10 | 13
+ 6 | 13 | 11 | 12
+ 7 | 17 | 14 | 15
+ 8 | 18 | 16 | 17
+(8 rows)
+
+-- q3
+ROLLBACK;
+ROLLBACK
diff --git a/src/max_flow/test/doc-pgr_maxCardinalityMatch.test.sql b/src/max_flow/test/doc-pgr_maxCardinalityMatch.test.sql
new file mode 100644
index 0000000..457790a
--- /dev/null
+++ b/src/max_flow/test/doc-pgr_maxCardinalityMatch.test.sql
@@ -0,0 +1,13 @@
+
+\echo -- q1
+SELECT * FROM pgr_maxCardinalityMatch(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
+);
+
+\echo -- q2
+SELECT * FROM pgr_maxCardinalityMatch(
+ 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
+ directed := false
+);
+
+\echo -- q3
diff --git a/src/max_flow/test/doc-pgr_maxFlow.result b/src/max_flow/test/doc-pgr_maxFlow.result
index 5e29fdb..aadd1fb 100644
--- a/src/max_flow/test/doc-pgr_maxFlow.result
+++ b/src/max_flow/test/doc-pgr_maxFlow.result
@@ -1,9 +1,67 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-280
+SELECT * FROM pgr_maxFlow(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+ pgr_maxflow
+-------------
+ 230
+(1 row)
+
-- q2
-410
+SELECT * FROM pgr_maxFlow(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[11, 1, 13]
+);
+ pgr_maxflow
+-------------
+ 340
+(1 row)
+
-- q3
-280
+SELECT * FROM pgr_maxFlow(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+ pgr_maxflow
+-------------
+ 230
+(1 row)
+
-- q4
-460
+SELECT * FROM pgr_maxFlow(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+ pgr_maxflow
+-------------
+ 360
+(1 row)
+
-- q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/max_flow/test/doc-pgr_maxFlow.test.sql b/src/max_flow/test/doc-pgr_maxFlow.test.sql
index e4af301..075b837 100644
--- a/src/max_flow/test/doc-pgr_maxFlow.test.sql
+++ b/src/max_flow/test/doc-pgr_maxFlow.test.sql
@@ -8,11 +8,9 @@ SELECT * FROM pgr_maxFlow(
'SELECT id,
source,
target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
+ capacity,
+ reverse_capacity
+ FROM edge_table'
, 6, 11
);
@@ -21,11 +19,9 @@ SELECT * FROM pgr_maxFlow(
'SELECT id,
source,
target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
+ capacity,
+ reverse_capacity
+ FROM edge_table'
, 6, ARRAY[11, 1, 13]
);
@@ -34,11 +30,9 @@ SELECT * FROM pgr_maxFlow(
'SELECT id,
source,
target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
+ capacity,
+ reverse_capacity
+ FROM edge_table'
, ARRAY[6, 8, 12], 11
);
@@ -47,11 +41,9 @@ SELECT * FROM pgr_maxFlow(
'SELECT id,
source,
target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
+ capacity,
+ reverse_capacity
+ FROM edge_table'
, ARRAY[6, 8, 12], ARRAY[1, 3, 11]
);
diff --git a/src/max_flow/test/doc-pgr_maxFlowBoykovKolmogorov.result b/src/max_flow/test/doc-pgr_maxFlowBoykovKolmogorov.result
deleted file mode 100644
index 97b9a3d..0000000
--- a/src/max_flow/test/doc-pgr_maxFlowBoykovKolmogorov.result
+++ /dev/null
@@ -1,41 +0,0 @@
--- q1
-1|10|5|10|100|30
-2|8|6|5|100|30
-3|9|6|9|50|80
-4|11|6|11|130|0
-5|15|9|12|50|30
-6|12|10|11|100|0
-7|13|12|11|50|0
--- q2
-1|1|2|1|50|80
-2|3|4|3|80|50
-3|4|5|2|50|0
-4|10|5|10|80|50
-5|5|6|3|50|0
-6|8|6|5|130|0
-7|9|6|9|130|0
-8|11|6|11|130|0
-9|15|9|12|50|30
-10|16|9|4|80|0
-11|12|10|11|80|20
-12|13|12|11|50|0
--- q3
-1|10|5|10|100|30
-2|8|6|5|100|30
-3|11|6|11|130|0
-4|12|10|11|100|0
-5|13|12|11|50|0
--- q4
-1|1|2|1|50|80
-2|3|4|3|80|50
-3|4|5|2|50|0
-4|10|5|10|100|30
-5|5|6|3|50|0
-6|8|6|5|130|0
-7|9|6|9|80|50
-8|11|6|11|130|0
-9|7|8|5|20|30
-10|16|9|4|80|0
-11|12|10|11|100|0
-12|13|12|11|50|0
--- q5
diff --git a/src/max_flow/test/doc-pgr_maxFlowBoykovKolmogorov.test.sql b/src/max_flow/test/doc-pgr_maxFlowBoykovKolmogorov.test.sql
deleted file mode 100644
index 9a3630c..0000000
--- a/src/max_flow/test/doc-pgr_maxFlowBoykovKolmogorov.test.sql
+++ /dev/null
@@ -1,54 +0,0 @@
-
-\echo -- q1
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, 11
-);
-
-\echo -- q2
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, ARRAY[1, 3, 11]
-);
-
-\echo -- q3
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], 11
-);
-
-\echo -- q4
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
-);
-
-\echo -- q5
diff --git a/src/max_flow/test/doc-pgr_maxFlowEdmondsKarp.result b/src/max_flow/test/doc-pgr_maxFlowEdmondsKarp.result
deleted file mode 100644
index 97b9a3d..0000000
--- a/src/max_flow/test/doc-pgr_maxFlowEdmondsKarp.result
+++ /dev/null
@@ -1,41 +0,0 @@
--- q1
-1|10|5|10|100|30
-2|8|6|5|100|30
-3|9|6|9|50|80
-4|11|6|11|130|0
-5|15|9|12|50|30
-6|12|10|11|100|0
-7|13|12|11|50|0
--- q2
-1|1|2|1|50|80
-2|3|4|3|80|50
-3|4|5|2|50|0
-4|10|5|10|80|50
-5|5|6|3|50|0
-6|8|6|5|130|0
-7|9|6|9|130|0
-8|11|6|11|130|0
-9|15|9|12|50|30
-10|16|9|4|80|0
-11|12|10|11|80|20
-12|13|12|11|50|0
--- q3
-1|10|5|10|100|30
-2|8|6|5|100|30
-3|11|6|11|130|0
-4|12|10|11|100|0
-5|13|12|11|50|0
--- q4
-1|1|2|1|50|80
-2|3|4|3|80|50
-3|4|5|2|50|0
-4|10|5|10|100|30
-5|5|6|3|50|0
-6|8|6|5|130|0
-7|9|6|9|80|50
-8|11|6|11|130|0
-9|7|8|5|20|30
-10|16|9|4|80|0
-11|12|10|11|100|0
-12|13|12|11|50|0
--- q5
diff --git a/src/max_flow/test/doc-pgr_maxFlowEdmondsKarp.test.sql b/src/max_flow/test/doc-pgr_maxFlowEdmondsKarp.test.sql
deleted file mode 100644
index 3de82bc..0000000
--- a/src/max_flow/test/doc-pgr_maxFlowEdmondsKarp.test.sql
+++ /dev/null
@@ -1,57 +0,0 @@
---These tests used the sample data provided here: http://docs.pgrouting.org/2.2/en/doc/src/developer/sampledata.html#sampledata
---The edge in the edge table are augmented with road-like categories for capacity values.
-
-
-\echo -- q1
-SELECT * FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, 11
-);
-
-\echo -- q2
-SELECT * FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, ARRAY[1, 3, 11]
-);
-
-\echo -- q3
-SELECT * FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], 11
-);
-
-\echo -- q4
-SELECT * FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
-);
-
-\echo -- q5
diff --git a/src/max_flow/test/doc-pgr_maxFlowPushRelabel.result b/src/max_flow/test/doc-pgr_maxFlowPushRelabel.result
deleted file mode 100644
index 86ec9d5..0000000
--- a/src/max_flow/test/doc-pgr_maxFlowPushRelabel.result
+++ /dev/null
@@ -1,48 +0,0 @@
--- q1
-1|10|5|10|100|30
-2|8|6|5|100|30
-3|9|6|9|50|80
-4|11|6|11|130|0
-5|15|9|12|50|30
-6|12|10|11|100|0
-7|13|12|11|50|0
--- q2
-1|1|2|1|130|0
-2|4|2|5|20|80
-3|2|3|2|100|0
-4|3|4|3|50|80
-5|4|5|2|50|0
-6|7|5|8|50|80
-7|10|5|10|100|30
-8|5|6|3|50|0
-9|8|6|5|130|0
-10|9|6|9|100|30
-11|11|6|11|130|0
-12|6|7|8|50|0
-13|6|8|7|50|50
-14|7|8|5|50|0
-15|15|9|12|50|30
-16|16|9|4|50|30
-17|12|10|11|100|0
-18|13|12|11|50|0
--- q3
-1|10|5|10|100|30
-2|8|6|5|100|30
-3|11|6|11|130|0
-4|12|10|11|100|0
-5|13|12|11|50|0
--- q4
-1|1|2|1|50|80
-2|3|4|3|80|50
-3|4|5|2|50|0
-4|10|5|10|100|30
-5|5|6|3|50|0
-6|8|6|5|130|0
-7|9|6|9|30|100
-8|11|6|11|130|0
-9|7|8|5|20|30
-10|16|9|4|80|0
-11|12|10|11|100|0
-12|13|12|11|50|0
-13|15|12|9|50|0
--- q5
diff --git a/src/max_flow/test/doc-pgr_maxFlowPushRelabel.test.sql b/src/max_flow/test/doc-pgr_maxFlowPushRelabel.test.sql
deleted file mode 100644
index 1de13e3..0000000
--- a/src/max_flow/test/doc-pgr_maxFlowPushRelabel.test.sql
+++ /dev/null
@@ -1,59 +0,0 @@
---These tests used the sample data provided here: http://docs.pgrouting.org/2.2/en/doc/src/developer/sampledata.html#sampledata
---The edge in the edge table are augmented with road-like categories for capacity values.
-
-
-
-\echo -- q1
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, 11
-);
-
-\echo -- q2
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , 6, ARRAY[11, 1, 13]
-);
-
-\echo -- q3
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], 11
-);
-
-\echo -- q4
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id
- ORDER BY id'
- , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
-);
-
-\echo -- q5
-
diff --git a/src/max_flow/test/doc-pgr_maximumCardinalityMatching.result b/src/max_flow/test/doc-pgr_maximumCardinalityMatching.result
deleted file mode 100644
index 155e204..0000000
--- a/src/max_flow/test/doc-pgr_maximumCardinalityMatching.result
+++ /dev/null
@@ -1,19 +0,0 @@
--- q1
-1|1|1|2
-2|3|4|3
-3|9|6|9
-4|6|7|8
-5|14|10|13
-6|13|11|12
-7|17|14|15
-8|18|16|17
--- q2
-1|1|1|2
-2|3|3|4
-3|9|6|9
-4|6|7|8
-5|14|10|13
-6|13|11|12
-7|17|14|15
-8|18|16|17
--- q3
diff --git a/src/max_flow/test/doc-pgr_maximumCardinalityMatching.test.sql b/src/max_flow/test/doc-pgr_maximumCardinalityMatching.test.sql
deleted file mode 100644
index 200ae9d..0000000
--- a/src/max_flow/test/doc-pgr_maximumCardinalityMatching.test.sql
+++ /dev/null
@@ -1,15 +0,0 @@
---These tests used the sample data provided here: http://docs.pgrouting.org/2.2/en/doc/src/developer/sampledata.html#sampledata
-
-
-\echo -- q1
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
-);
-
-\echo -- q2
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- directed := false
-);
-
-\echo -- q3
diff --git a/src/max_flow/test/doc-pgr_pushRelabel.result b/src/max_flow/test/doc-pgr_pushRelabel.result
new file mode 100644
index 0000000..65969cb
--- /dev/null
+++ b/src/max_flow/test/doc-pgr_pushRelabel.result
@@ -0,0 +1,96 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+-- q1
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q2
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[11, 1, 13]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 130 | 0
+ 2 | 2 | 3 | 2 | 80 | 20
+ 3 | 3 | 4 | 3 | 80 | 50
+ 4 | 4 | 5 | 2 | 50 | 0
+ 5 | 7 | 5 | 8 | 50 | 80
+ 6 | 10 | 5 | 10 | 80 | 50
+ 7 | 8 | 6 | 5 | 130 | 0
+ 8 | 9 | 6 | 9 | 80 | 50
+ 9 | 11 | 6 | 11 | 130 | 0
+ 10 | 6 | 7 | 8 | 50 | 0
+ 11 | 6 | 8 | 7 | 50 | 50
+ 12 | 7 | 8 | 5 | 50 | 0
+ 13 | 16 | 9 | 4 | 80 | 0
+ 14 | 12 | 10 | 11 | 80 | 20
+(14 rows)
+
+-- q3
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 10 | 5 | 10 | 100 | 30
+ 2 | 8 | 6 | 5 | 100 | 30
+ 3 | 11 | 6 | 11 | 130 | 0
+ 4 | 12 | 10 | 11 | 100 | 0
+(4 rows)
+
+-- q4
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+ seq | edge | start_vid | end_vid | flow | residual_capacity
+-----+------+-----------+---------+------+-------------------
+ 1 | 1 | 2 | 1 | 50 | 80
+ 2 | 3 | 4 | 3 | 80 | 50
+ 3 | 4 | 5 | 2 | 50 | 0
+ 4 | 10 | 5 | 10 | 100 | 30
+ 5 | 8 | 6 | 5 | 130 | 0
+ 6 | 9 | 6 | 9 | 30 | 100
+ 7 | 11 | 6 | 11 | 130 | 0
+ 8 | 7 | 8 | 5 | 20 | 30
+ 9 | 16 | 9 | 4 | 80 | 0
+ 10 | 12 | 10 | 11 | 100 | 0
+ 11 | 15 | 12 | 9 | 50 | 0
+(11 rows)
+
+-- q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/max_flow/test/doc-pgr_pushRelabel.test.sql b/src/max_flow/test/doc-pgr_pushRelabel.test.sql
new file mode 100644
index 0000000..b37f9c1
--- /dev/null
+++ b/src/max_flow/test/doc-pgr_pushRelabel.test.sql
@@ -0,0 +1,51 @@
+--These tests used the sample data provided here: http://docs.pgrouting.org/2.2/en/doc/src/developer/sampledata.html#sampledata
+--The edge in the edge table are augmented with road-like categories for capacity values.
+
+
+
+\echo -- q1
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, 11
+);
+
+\echo -- q2
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , 6, ARRAY[11, 1, 13]
+);
+
+\echo -- q3
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], 11
+);
+
+\echo -- q4
+SELECT * FROM pgr_pushRelabel(
+ 'SELECT id,
+ source,
+ target,
+ capacity,
+ reverse_capacity
+ FROM edge_table'
+ , ARRAY[6, 8, 12], ARRAY[1, 3, 11]
+);
+
+\echo -- q5
+
diff --git a/src/max_flow/test/pgtap/flow-types-check.sql b/src/max_flow/test/pgtap/flow-types-check.sql
deleted file mode 100644
index 31bd991..0000000
--- a/src/max_flow/test/pgtap/flow-types-check.sql
+++ /dev/null
@@ -1,1398 +0,0 @@
-\i setup.sql
-SET client_min_messages TO WARNING;
-
-SELECT plan(123);
---Boykov-Kolmogorov
-SELECT has_function('pgr_maxflowboykovkolmogorov');
-
-SELECT has_function('pgr_maxflowboykovkolmogorov', ARRAY[
- 'text', 'bigint', 'bigint'
- ]);
-SELECT has_function('pgr_maxflowboykovkolmogorov', ARRAY[
- 'text', 'anyarray', 'bigint'
- ]);
-SELECT has_function('pgr_maxflowboykovkolmogorov', ARRAY[
- 'text', 'bigint', 'anyarray'
- ]);
-SELECT has_function('pgr_maxflowboykovkolmogorov', ARRAY[
- 'text', 'anyarray', 'anyarray'
- ]);
-
-SELECT function_returns('pgr_maxflowboykovkolmogorov', ARRAY[
- 'text', 'bigint', 'bigint'
- ], 'setof record');
-SELECT function_returns('pgr_maxflowboykovkolmogorov', ARRAY[
- 'text', 'bigint', 'anyarray'
- ], 'setof record');
-SELECT function_returns('pgr_maxflowboykovkolmogorov', ARRAY[
- 'text', 'anyarray', 'bigint'
- ], 'setof record');
-SELECT function_returns('pgr_maxflowboykovkolmogorov', ARRAY[
- 'text', 'anyarray', 'anyarray'
- ], 'setof record');
-
---Edmonds-Karp
-SELECT has_function('pgr_maxflowedmondskarp');
-
-SELECT has_function('pgr_maxflowedmondskarp', ARRAY[
- 'text', 'bigint', 'bigint'
- ]);
-SELECT has_function('pgr_maxflowedmondskarp', ARRAY[
- 'text', 'anyarray', 'bigint'
- ]);
-SELECT has_function('pgr_maxflowedmondskarp', ARRAY[
- 'text', 'bigint', 'anyarray'
- ]);
-SELECT has_function('pgr_maxflowedmondskarp', ARRAY[
- 'text', 'anyarray', 'anyarray'
- ]);
-
-SELECT function_returns('pgr_maxflowedmondskarp', ARRAY[
- 'text', 'bigint', 'bigint'
- ], 'setof record');
-SELECT function_returns('pgr_maxflowedmondskarp', ARRAY[
- 'text', 'bigint', 'anyarray'
- ], 'setof record');
-SELECT function_returns('pgr_maxflowedmondskarp', ARRAY[
- 'text', 'anyarray', 'bigint'
- ], 'setof record');
-SELECT function_returns('pgr_maxflowedmondskarp', ARRAY[
- 'text', 'anyarray', 'anyarray'
- ], 'setof record');
-
---Push-Relabel
-SELECT has_function('pgr_maxflowpushrelabel');
-
-SELECT has_function('pgr_maxflowpushrelabel', ARRAY[
- 'text', 'bigint', 'bigint'
- ]);
-SELECT has_function('pgr_maxflowpushrelabel', ARRAY[
- 'text', 'anyarray', 'bigint'
- ]);
-SELECT has_function('pgr_maxflowpushrelabel', ARRAY[
- 'text', 'bigint', 'anyarray'
- ]);
-SELECT has_function('pgr_maxflowpushrelabel', ARRAY[
- 'text', 'anyarray', 'anyarray'
- ]);
-
-
-SELECT function_returns('pgr_maxflowpushrelabel', ARRAY[
- 'text', 'bigint', 'bigint'
- ], 'setof record');
-SELECT function_returns('pgr_maxflowpushrelabel', ARRAY[
- 'text', 'bigint', 'anyarray'
- ], 'setof record');
-SELECT function_returns('pgr_maxflowpushrelabel', ARRAY[
- 'text', 'anyarray', 'bigint'
- ], 'setof record');
-SELECT function_returns('pgr_maxflowpushrelabel', ARRAY[
- 'text', 'anyarray', 'anyarray'
- ], 'setof record');
-
---pgr_max_flow
-SELECT has_function('pgr_maxflow');
-
-SELECT has_function('pgr_maxflow', ARRAY[
- 'text', 'bigint', 'bigint'
- ]);
-SELECT has_function('pgr_maxflow', ARRAY[
- 'text', 'anyarray', 'bigint'
- ]);
-SELECT has_function('pgr_maxflow', ARRAY[
- 'text', 'bigint', 'anyarray'
- ]);
-SELECT has_function('pgr_maxflow', ARRAY[
- 'text', 'anyarray', 'anyarray'
- ]);
-
-
-SELECT function_returns('pgr_maxflow', ARRAY[
- 'text', 'bigint', 'bigint'
- ], 'bigint');
-SELECT function_returns('pgr_maxflow', ARRAY[
- 'text', 'bigint', 'anyarray'
- ], 'bigint');
-SELECT function_returns('pgr_maxflow', ARRAY[
- 'text', 'anyarray', 'bigint'
- ], 'bigint');
-SELECT function_returns('pgr_maxflow', ARRAY[
- 'text', 'anyarray', 'anyarray'
- ], 'bigint');
-
--- Push-relabel
-PREPARE pl_q_o2o AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3) ) AS a
- limit 1
-;
-PREPARE pl_v_o2o AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
-PREPARE pl_q_o2m AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, ARRAY[3]) ) AS a
- limit 1
-;
-PREPARE pl_v_o2m AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
-
-PREPARE pl_q_m2o AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- ARRAY[2], 3) ) AS a
- limit 1
-;
-PREPARE pl_v_m2o AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
-PREPARE pl_q_m2m AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- ARRAY[2], ARRAY[3]) ) AS a
- limit 1
-;
-PREPARE pl_v_m2m AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
--- Edmonds-Karp
-PREPARE ek_q_o2o AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3) ) AS a
- limit 1
-;
-PREPARE ek_v_o2o AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
-PREPARE ek_q_o2m AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, ARRAY[3]) ) AS a
- limit 1
-;
-PREPARE ek_v_o2m AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
-
-PREPARE ek_q_m2o AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- ARRAY[2], 3) ) AS a
- limit 1
-;
-PREPARE ek_v_m2o AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
-PREPARE ek_q_m2m AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- ARRAY[2], ARRAY[3]) ) AS a
- limit 1
-;
-PREPARE ek_v_m2m AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
--- Boykov-Kolmogorov
-PREPARE bk_q_o2o AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3) ) AS a
- limit 1
-;
-PREPARE bk_v_o2o AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
-PREPARE bk_q_o2m AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, ARRAY[3]) ) AS a
- limit 1
-;
-PREPARE bk_v_o2m AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
-
-PREPARE bk_q_m2o AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- ARRAY[2], 3) ) AS a
- limit 1
-;
-PREPARE bk_v_m2o AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
-PREPARE bk_q_m2m AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4,
- pg_typeof(flow)::text AS t5, pg_typeof(residual_capacity)::TEXT AS t6
- FROM (
- SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id,
- source,
- target,
- c1.capacity as capacity,
- c2.capacity as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- ARRAY[2], ARRAY[3]) ) AS a
- limit 1
-;
-PREPARE bk_v_m2m AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
--- testing
--- Push-relabel
-SELECT set_eq('pl_v_o2o', 'pl_q_o2o','1 to 1: Expected returning, columns names & types');
-SELECT set_eq('pl_v_o2m', 'pl_q_o2m','1 to many: Expected returning, columns names & types');
-SELECT set_eq('pl_v_m2o', 'pl_q_m2o','many to 1: Expected returning, columns names & types');
-SELECT set_eq('pl_v_m2m', 'pl_q_m2m','many to many: Expected returning, columns names & types');
-
--- Edmonds-Karp
-SELECT set_eq('ek_v_o2o', 'ek_q_o2o','1 to 1: Expected returning, columns names & types');
-SELECT set_eq('ek_v_o2m', 'ek_q_o2m','1 to many: Expected returning, columns names & types');
-SELECT set_eq('ek_v_m2o', 'ek_q_m2o','many to 1: Expected returning, columns names & types');
-SELECT set_eq('ek_v_m2m', 'ek_q_m2m','many to many: Expected returning, columns names & types');
-
--- Boykov-Kolmogorov
-SELECT set_eq('bk_v_o2o', 'bk_q_o2o','1 to 1: Expected returning, columns names & types');
-SELECT set_eq('bk_v_o2m', 'bk_q_o2m','1 to many: Expected returning, columns names & types');
-SELECT set_eq('bk_v_m2o', 'bk_q_m2o','many to 1: Expected returning, columns names & types');
-SELECT set_eq('bk_v_m2m', 'bk_q_m2m','many to many: Expected returning, columns names & types');
-
-
--- Testing inner query
-
--- Push-relabel
--- id is ANY-INTEGER
-PREPARE pl_id1 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::SMALLINT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_id2 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::BIGINT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_id3 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::REAL,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_id4 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::FLOAT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_id5 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::TEXT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('pl_id1',
- 'lives because id is SMALLINT');
-SELECT lives_ok('pl_id2',
- 'lives because id is BIGINT');
-SELECT throws_ok('pl_id3',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is REAL');
-SELECT throws_ok('pl_id4',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is FLOAT');
-SELECT throws_ok('pl_id5',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is TEXT');
-
--- source is ANY-INTEGER
-PREPARE pl_s1 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::SMALLINT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_s2 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::BIGINT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_s3 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::REAL,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_s4 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::FLOAT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_s5 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::TEXT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('pl_s1',
- 'lives because source is SMALLINT');
-SELECT lives_ok('pl_s2',
- 'lives because source is BIGINT');
-SELECT throws_ok('pl_s3',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is REAL');
-SELECT throws_ok('pl_s4',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is FLOAT');
-SELECT throws_ok('pl_s5',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is TEXT');
-
--- target is ANY-INTEGER
-PREPARE pl_t1 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::SMALLINT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_t2 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::BIGINT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_t3 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::REAL,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_t4 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::FLOAT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_t5 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::TEXT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('pl_t1',
- 'lives because target is SMALLINT');
-SELECT lives_ok('pl_t2',
- 'lives because target is BIGINT');
-SELECT throws_ok('pl_t3',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is REAL');
-SELECT throws_ok('pl_t4',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is FLOAT');
-SELECT throws_ok('pl_t5',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is TEXT');
-
--- capacity is ANY-INTEGER
-PREPARE pl_c1 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::SMALLINT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_c2 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::BIGINT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_c3 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::REAL as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_c4 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::FLOAT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_c5 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::TEXT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('pl_c1',
- 'lives because capacity is SMALLINT');
-SELECT lives_ok('pl_c2',
- 'lives because capacity is BIGINT');
-SELECT throws_ok('pl_c3',
- 'XX000','Unexpected Column ''capacity'' type. Expected ANY-INTEGER',
- 'throws because capacity is REAL');
-SELECT throws_ok('pl_c4',
- 'XX000','Unexpected Column ''capacity'' type. Expected ANY-INTEGER',
- 'throws because capacity is FLOAT');
-SELECT throws_ok('pl_c5',
- 'XX000','Unexpected Column ''capacity'' type. Expected ANY-INTEGER',
- 'throws because capacity is TEXT');
-
--- reverse_capacity is ANY-INTEGER
-PREPARE pl_rc1 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::SMALLINT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_rc2 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::BIGINT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_rc3 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::REAL as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_rc4 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::FLOAT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE pl_rc5 AS
-SELECT * FROM pgr_maxflowpushrelabel(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::TEXT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('pl_rc1',
- 'lives because reverse_capacity is SMALLINT');
-SELECT lives_ok('pl_rc2',
- 'lives because reverse_capacity is BIGINT');
-SELECT throws_ok('pl_rc3',
- 'XX000','Unexpected Column ''reverse_capacity'' type. Expected ANY-INTEGER',
- 'throws because reverse_capacity is REAL');
-SELECT throws_ok('pl_rc4',
- 'XX000','Unexpected Column ''reverse_capacity'' type. Expected ANY-INTEGER',
- 'throws because reverse_capacity is FLOAT');
-SELECT throws_ok('pl_rc5',
- 'XX000','Unexpected Column ''reverse_capacity'' type. Expected ANY-INTEGER',
- 'throws because reverse_capacity is TEXT');
-
-
--- Edmonds-Karp
--- id is ANY-INTEGER
-PREPARE ek_id1 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::SMALLINT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_id2 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::BIGINT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_id3 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::REAL,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_id4 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::FLOAT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_id5 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::TEXT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('ek_id1',
- 'lives because id is SMALLINT');
-SELECT lives_ok('ek_id2',
- 'lives because id is BIGINT');
-SELECT throws_ok('ek_id3',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is REAL');
-SELECT throws_ok('ek_id4',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is FLOAT');
-SELECT throws_ok('ek_id5',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is TEXT');
-
--- source is ANY-INTEGER
-PREPARE ek_s1 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::SMALLINT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_s2 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::BIGINT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_s3 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::REAL,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_s4 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::FLOAT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_s5 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::TEXT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('ek_s1',
- 'lives because source is SMALLINT');
-SELECT lives_ok('ek_s2',
- 'lives because source is BIGINT');
-SELECT throws_ok('ek_s3',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is REAL');
-SELECT throws_ok('ek_s4',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is FLOAT');
-SELECT throws_ok('ek_s5',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is TEXT');
-
--- target is ANY-INTEGER
-PREPARE ek_t1 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::SMALLINT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_t2 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::BIGINT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_t3 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::REAL,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_t4 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::FLOAT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_t5 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::TEXT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('ek_t1',
- 'lives because target is SMALLINT');
-SELECT lives_ok('ek_t2',
- 'lives because target is BIGINT');
-SELECT throws_ok('ek_t3',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is REAL');
-SELECT throws_ok('ek_t4',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is FLOAT');
-SELECT throws_ok('ek_t5',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is TEXT');
-
--- capacity is ANY-INTEGER
-PREPARE ek_c1 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::SMALLINT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_c2 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::BIGINT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_c3 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::REAL as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_c4 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::FLOAT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_c5 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::TEXT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('ek_c1',
- 'lives because capacity is SMALLINT');
-SELECT lives_ok('ek_c2',
- 'lives because capacity is BIGINT');
-SELECT throws_ok('ek_c3',
- 'XX000','Unexpected Column ''capacity'' type. Expected ANY-INTEGER',
- 'throws because capacity is REAL');
-SELECT throws_ok('ek_c4',
- 'XX000','Unexpected Column ''capacity'' type. Expected ANY-INTEGER',
- 'throws because capacity is FLOAT');
-SELECT throws_ok('ek_c5',
- 'XX000','Unexpected Column ''capacity'' type. Expected ANY-INTEGER',
- 'throws because capacity is TEXT');
-
--- reverse_capacity is ANY-INTEGER
-PREPARE ek_rc1 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::SMALLINT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_rc2 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::BIGINT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_rc3 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::REAL as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_rc4 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::FLOAT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE ek_rc5 AS
-SELECT * FROM pgr_maxflowedmondskarp(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::TEXT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('ek_rc1',
- 'lives because reverse_capacity is SMALLINT');
-SELECT lives_ok('ek_rc2',
- 'lives because reverse_capacity is BIGINT');
-SELECT throws_ok('ek_rc3',
- 'XX000','Unexpected Column ''reverse_capacity'' type. Expected ANY-INTEGER',
- 'throws because reverse_capacity is REAL');
-SELECT throws_ok('ek_rc4',
- 'XX000','Unexpected Column ''reverse_capacity'' type. Expected ANY-INTEGER',
- 'throws because reverse_capacity is FLOAT');
-SELECT throws_ok('ek_rc5',
- 'XX000','Unexpected Column ''reverse_capacity'' type. Expected ANY-INTEGER',
- 'throws because reverse_capacity is TEXT');
-
--- Edmonds-Karp
--- id is ANY-INTEGER
-PREPARE bk_id1 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::SMALLINT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_id2 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::BIGINT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_id3 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::REAL,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_id4 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::FLOAT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_id5 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::TEXT,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('bk_id1',
- 'lives because id is SMALLINT');
-SELECT lives_ok('bk_id2',
- 'lives because id is BIGINT');
-SELECT throws_ok('bk_id3',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is REAL');
-SELECT throws_ok('bk_id4',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is FLOAT');
-SELECT throws_ok('bk_id5',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is TEXT');
-
--- source is ANY-INTEGER
-PREPARE bk_s1 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::SMALLINT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_s2 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::BIGINT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_s3 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::REAL,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_s4 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::FLOAT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_s5 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::TEXT,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('bk_s1',
- 'lives because source is SMALLINT');
-SELECT lives_ok('bk_s2',
- 'lives because source is BIGINT');
-SELECT throws_ok('bk_s3',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is REAL');
-SELECT throws_ok('bk_s4',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is FLOAT');
-SELECT throws_ok('bk_s5',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is TEXT');
-
--- target is ANY-INTEGER
-PREPARE bk_t1 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::SMALLINT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_t2 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::BIGINT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_t3 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::REAL,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_t4 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::FLOAT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_t5 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::TEXT,
- c1.capacity::INTEGER as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('bk_t1',
- 'lives because target is SMALLINT');
-SELECT lives_ok('bk_t2',
- 'lives because target is BIGINT');
-SELECT throws_ok('bk_t3',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is REAL');
-SELECT throws_ok('bk_t4',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is FLOAT');
-SELECT throws_ok('bk_t5',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is TEXT');
-
--- capacity is ANY-INTEGER
-PREPARE bk_c1 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::SMALLINT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_c2 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::BIGINT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_c3 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::REAL as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_c4 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::FLOAT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_c5 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::TEXT as capacity,
- c2.capacity::INTEGER as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('bk_c1',
- 'lives because capacity is SMALLINT');
-SELECT lives_ok('bk_c2',
- 'lives because capacity is BIGINT');
-SELECT throws_ok('bk_c3',
- 'XX000','Unexpected Column ''capacity'' type. Expected ANY-INTEGER',
- 'throws because capacity is REAL');
-SELECT throws_ok('bk_c4',
- 'XX000','Unexpected Column ''capacity'' type. Expected ANY-INTEGER',
- 'throws because capacity is FLOAT');
-SELECT throws_ok('bk_c5',
- 'XX000','Unexpected Column ''capacity'' type. Expected ANY-INTEGER',
- 'throws because capacity is TEXT');
-
--- reverse_capacity is ANY-INTEGER
-PREPARE bk_rc1 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::SMALLINT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_rc2 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::BIGINT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_rc3 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::REAL as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_rc4 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::FLOAT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-PREPARE bk_rc5 AS
-SELECT * FROM pgr_maxflowboykovkolmogorov(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- c1.capacity::INTEGER as capacity,
- c2.capacity::TEXT as reverse_capacity
- FROM edge_table JOIN categories AS c1 USING(category_id), categories AS c2
- WHERE edge_table.reverse_category_id = c2.category_id',
- 2, 3);
-
-SELECT lives_ok('bk_rc1',
- 'lives because reverse_capacity is SMALLINT');
-SELECT lives_ok('bk_rc2',
- 'lives because reverse_capacity is BIGINT');
-SELECT throws_ok('bk_rc3',
- 'XX000','Unexpected Column ''reverse_capacity'' type. Expected ANY-INTEGER',
- 'throws because reverse_capacity is REAL');
-SELECT throws_ok('bk_rc4',
- 'XX000','Unexpected Column ''reverse_capacity'' type. Expected ANY-INTEGER',
- 'throws because reverse_capacity is FLOAT');
-SELECT throws_ok('bk_rc5',
- 'XX000','Unexpected Column ''reverse_capacity'' type. Expected ANY-INTEGER',
- 'throws because reverse_capacity is TEXT');
-
-SELECT * FROM finish();
-ROLLBACK;
diff --git a/src/max_flow/test/pgtap/flowapplications-types-check.sql b/src/max_flow/test/pgtap/flowapplications-types-check.sql
deleted file mode 100644
index 220023e..0000000
--- a/src/max_flow/test/pgtap/flowapplications-types-check.sql
+++ /dev/null
@@ -1,740 +0,0 @@
-\i setup.sql
-SET client_min_messages TO WARNING;
-
-SELECT plan(71);
-
-SELECT has_function('pgr_edgedisjointpaths');
-
-SELECT has_function('pgr_edgedisjointpaths', ARRAY[
- 'text', 'bigint', 'bigint', 'boolean'
- ]);
-SELECT has_function('pgr_edgedisjointpaths', ARRAY[
- 'text', 'bigint', 'anyarray', 'boolean'
- ]);
-SELECT has_function('pgr_edgedisjointpaths', ARRAY[
- 'text', 'anyarray', 'bigint', 'boolean'
- ]);
-SELECT has_function('pgr_edgedisjointpaths', ARRAY[
- 'text', 'anyarray', 'anyarray', 'boolean'
- ]);
-
-SELECT has_function('pgr_maximumcardinalitymatching');
-
-SELECT has_function('pgr_maximumcardinalitymatching', ARRAY[
- 'text', 'boolean'
- ]);
-
-SELECT function_returns('pgr_edgedisjointpaths', ARRAY[
- 'text', 'bigint', 'bigint', 'boolean'
- ], 'setof record');
-SELECT function_returns('pgr_edgedisjointpaths', ARRAY[
- 'text', 'bigint', 'anyarray', 'boolean'
- ], 'setof record');
-SELECT function_returns('pgr_edgedisjointpaths', ARRAY[
- 'text', 'anyarray', 'bigint', 'boolean'
- ], 'setof record');
-SELECT function_returns('pgr_edgedisjointpaths', ARRAY[
- 'text', 'anyarray', 'anyarray', 'boolean'
- ], 'setof record');
-
-SELECT function_returns('pgr_maximumcardinalitymatching', ARRAY[
- 'text', 'boolean'
- ], 'setof record');
-
--- Maximum cardinality matching
-PREPARE mcm_dir AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
-);
-PREPARE mcm_undir AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- directed := false
-);
-
-SELECT lives_ok('mcm_dir','directed');
-SELECT lives_ok('mcm_undir','undirected');
-
-PREPARE mcm_q AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(edge_id)::text AS t2,
- pg_typeof(source)::text AS t3, pg_typeof(target)::text AS t4
- FROM (
- SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table'
- ) ) AS a
- limit 1
-;
-
-PREPARE mcm_v AS
-SELECT 'integer'::text AS t1,'bigint'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4;
-
-SELECT set_eq('mcm_q', 'mcm_v','Expected returning, columns names & types');
-
-PREPARE mcm_id1 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::SMALLINT,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_id2 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::BIGINT,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_id3 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::REAL,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_id4 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::FLOAT,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_id5 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::TEXT,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-
-SELECT lives_ok('mcm_id1',
- 'lives because id is SMALLINT');
-SELECT lives_ok('mcm_id2',
- 'lives because id is BIGINT');
-SELECT throws_ok('mcm_id3',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is REAL');
-SELECT throws_ok('mcm_id4',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is FLOAT');
-SELECT throws_ok('mcm_id5',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is TEXT');
-
--- source is ANY-INTEGER
-PREPARE mcm_s1 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::SMALLINT,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_s2 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::BIGINT,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_s3 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::REAL,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_s4 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::FLOAT,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_s5 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::TEXT,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-
-SELECT lives_ok('mcm_s1',
- 'lives because source is SMALLINT');
-SELECT lives_ok('mcm_s2',
- 'lives because source is BIGINT');
-SELECT throws_ok('mcm_s3',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is REAL');
-SELECT throws_ok('mcm_s4',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is FLOAT');
-SELECT throws_ok('mcm_s5',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is TEXT');
-
--- target is ANY-INTEGER
-PREPARE mcm_t1 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::SMALLINT,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_t2 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::BIGINT,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_t3 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::REAL,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_t4 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::FLOAT,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_t5 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::TEXT,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-
-SELECT lives_ok('mcm_t1',
- 'lives because target is SMALLINT');
-SELECT lives_ok('mcm_t2',
- 'lives because target is BIGINT');
-SELECT throws_ok('mcm_t3',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is REAL');
-SELECT throws_ok('mcm_t4',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is FLOAT');
-SELECT throws_ok('mcm_t5',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is TEXT');
-
--- GOING is ANY-NUMERIC
-PREPARE mcm_g1 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::SMALLINT AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_g2 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::BIGINT AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_g3 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::REAL AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_g4 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::FLOAT AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-PREPARE mcm_g5 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::TEXT AS going,
- reverse_cost::INTEGER AS coming FROM edge_table'
-);
-
-SELECT lives_ok('mcm_g1',
- 'lives because going is SMALLINT');
-SELECT lives_ok('mcm_g2',
- 'lives because going is BIGINT');
-SELECT lives_ok('mcm_g3',
- 'lives because going is REAL');
-SELECT lives_ok('mcm_g4',
- 'lives because going is FLOAT');
-SELECT throws_ok('mcm_g5',
- 'XX000','Unexpected Column ''going'' type. Expected ANY-NUMERICAL',
- 'throws because going is TEXT');
-
-
--- coming is ANY-NUMERIC
-PREPARE mcm_c1 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::SMALLINT AS coming FROM edge_table'
-);
-PREPARE mcm_c2 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::BIGINT AS coming FROM edge_table'
-);
-PREPARE mcm_c3 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::REAL AS coming FROM edge_table'
-);
-PREPARE mcm_c4 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::FLOAT AS coming FROM edge_table'
-);
-PREPARE mcm_c5 AS
-SELECT * FROM pgr_maximumCardinalityMatching(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::TEXT AS coming FROM edge_table'
-);
-
-SELECT lives_ok('mcm_c1',
- 'lives because coming is SMALLINT');
-SELECT lives_ok('mcm_c2',
- 'lives because coming is BIGINT');
-SELECT lives_ok('mcm_c3',
- 'lives because coming is REAL');
-SELECT lives_ok('mcm_c4',
- 'lives because coming is FLOAT');
-SELECT throws_ok('mcm_c5',
- 'XX000','Unexpected Column ''coming'' type. Expected ANY-NUMERICAL',
- 'throws because coming is TEXT');
-
-
--- Edge disjoint paths
-PREPARE edp_dir AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_undir AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- 3, 5,
- directed := false
-);
-
-SELECT lives_ok('edp_dir','directed');
-SELECT lives_ok('edp_undir','undirected');
-
--- Boykov-Kolmogorov
-PREPARE edp_q_o2o AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(path_seq)::text AS t2,
- pg_typeof(node)::text AS t3, pg_typeof(edge)::text AS t4
- FROM (
- SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- 3, 5
- ) ) AS a
- limit 1
-;
-PREPARE edp_v_o2o AS
-SELECT 'integer'::text AS t1,'integer'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4;
-
-PREPARE edp_q_o2m AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(path_seq)::text AS t2,
- pg_typeof(end_vid)::text as t3,
- pg_typeof(node)::text AS t4, pg_typeof(edge)::text AS t5
- FROM (
- SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- 3, ARRAY[5]
- ) ) AS a
- limit 1
-;
-PREPARE edp_v_o2m AS
-SELECT 'integer'::text AS t1,'integer'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5;
-
-
-PREPARE edp_q_m2o AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(path_seq)::text AS t2,
- pg_typeof(start_vid)::text as t3,
- pg_typeof(node)::text AS t4, pg_typeof(edge)::text AS t5
- FROM (
- SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- ARRAY[3], 5
- ) ) AS a
- limit 1
-;
-PREPARE edp_v_m2o AS
-SELECT 'integer'::text AS t1,'integer'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5;
-
-PREPARE edp_q_m2m AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(path_seq)::text AS t2,
- pg_typeof(start_vid)::text as t3, pg_typeof(end_vid)::text as t4,
- pg_typeof(node)::text AS t5, pg_typeof(edge)::text AS t6
- FROM (
- SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id, source, target, cost AS going, reverse_cost AS coming FROM edge_table',
- ARRAY[3], ARRAY[5]
- ) ) AS a
- limit 1
-;
-PREPARE edp_v_m2m AS
-SELECT 'integer'::text AS t1,'integer'::text AS t2,
- 'bigint'::text AS t3, 'bigint'::text AS t4,
- 'bigint'::text AS t5, 'bigint'::text AS t6;
-
-SELECT set_eq('edp_v_o2o', 'edp_q_o2o','1 to 1: Expected returning, columns names & types');
-SELECT set_eq('edp_v_o2m', 'edp_q_o2m','1 to many: Expected returning, columns names & types');
-SELECT set_eq('edp_v_m2o', 'edp_q_m2o','many to 1: Expected returning, columns names & types');
-SELECT set_eq('edp_v_m2m', 'edp_q_m2m','many to many: Expected returning, columns names & types');
-
-PREPARE edp_id1 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::SMALLINT,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_id2 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::BIGINT,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_id3 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::REAL,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_id4 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::FLOAT,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_id5 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::TEXT,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-
-SELECT lives_ok('edp_id1',
- 'lives because id is SMALLINT');
-SELECT lives_ok('edp_id2',
- 'lives because id is BIGINT');
-SELECT throws_ok('edp_id3',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is REAL');
-SELECT throws_ok('edp_id4',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is FLOAT');
-SELECT throws_ok('edp_id5',
- 'XX000','Unexpected Column ''id'' type. Expected ANY-INTEGER',
- 'throws because id is TEXT');
-
--- source is ANY-INTEGER
-PREPARE edp_s1 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::SMALLINT,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_s2 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::BIGINT,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_s3 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::REAL,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_s4 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::FLOAT,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_s5 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::TEXT,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-
-SELECT lives_ok('edp_s1',
- 'lives because source is SMALLINT');
-SELECT lives_ok('edp_s2',
- 'lives because source is BIGINT');
-SELECT throws_ok('edp_s3',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is REAL');
-SELECT throws_ok('edp_s4',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is FLOAT');
-SELECT throws_ok('edp_s5',
- 'XX000','Unexpected Column ''source'' type. Expected ANY-INTEGER',
- 'throws because source is TEXT');
-
--- target is ANY-INTEGER
-PREPARE edp_t1 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::SMALLINT,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_t2 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::BIGINT,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_t3 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::REAL,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_t4 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::FLOAT,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_t5 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::TEXT,
- cost::INTEGER AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-
-SELECT lives_ok('edp_t1',
- 'lives because target is SMALLINT');
-SELECT lives_ok('edp_t2',
- 'lives because target is BIGINT');
-SELECT throws_ok('edp_t3',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is REAL');
-SELECT throws_ok('edp_t4',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is FLOAT');
-SELECT throws_ok('edp_t5',
- 'XX000','Unexpected Column ''target'' type. Expected ANY-INTEGER',
- 'throws because target is TEXT');
-
--- GOING is ANY-NUMERIC
-PREPARE edp_g1 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::SMALLINT AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_g2 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::BIGINT AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_g3 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::REAL AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_g4 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::FLOAT AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_g5 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::TEXT AS going,
- reverse_cost::INTEGER AS coming FROM edge_table',
- 3, 5
-);
-
-SELECT lives_ok('edp_g1',
- 'lives because going is SMALLINT');
-SELECT lives_ok('edp_g2',
- 'lives because going is BIGINT');
-SELECT lives_ok('edp_g3',
- 'lives because going is REAL');
-SELECT lives_ok('edp_g4',
- 'lives because going is FLOAT');
-SELECT throws_ok('edp_g5',
- 'XX000','Unexpected Column ''going'' type. Expected ANY-NUMERICAL',
- 'throws because going is TEXT');
-
-
--- coming is ANY-NUMERIC
-PREPARE edp_c1 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::SMALLINT AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_c2 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::BIGINT AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_c3 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::REAL AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_c4 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::FLOAT AS coming FROM edge_table',
- 3, 5
-);
-PREPARE edp_c5 AS
-SELECT * FROM pgr_edgeDisjointPaths(
- 'SELECT id::INTEGER,
- source::INTEGER,
- target::INTEGER,
- cost::INTEGER AS going,
- reverse_cost::TEXT AS coming FROM edge_table',
- 3, 5
-);
-
-SELECT lives_ok('edp_c1',
- 'lives because coming is SMALLINT');
-SELECT lives_ok('edp_c2',
- 'lives because coming is BIGINT');
-SELECT lives_ok('edp_c3',
- 'lives because coming is REAL');
-SELECT lives_ok('edp_c4',
- 'lives because coming is FLOAT');
-SELECT throws_ok('edp_c5',
- 'XX000','Unexpected Column ''coming'' type. Expected ANY-NUMERICAL',
- 'throws because coming is TEXT');
-
-
-
-SELECT * FROM finish();
-ROLLBACK;
\ No newline at end of file
diff --git a/src/max_flow/test/pgtap/internet_example.sql b/src/max_flow/test/pgtap/internet_example.sql
deleted file mode 100644
index 661634f..0000000
--- a/src/max_flow/test/pgtap/internet_example.sql
+++ /dev/null
@@ -1,144 +0,0 @@
-\i setup.sql
-
-SELECT plan(3);
-
-
-/**************************** BOOST EXAMPLE ****************/
-
-CREATE TABLE boost_example(
- id SERIAL PRIMARY KEY,
- source BIGINT,
- target BIGINT,
- capacity INTEGER
-);
-
-INSERT INTO boost_example (source, target, capacity)
-VALUES
-(1, 7,3),
-(1, 2, 20),
-(1, 3, 20),
-(2, 6,1),
-(2, 1, 20),
-(2, 4, 20),
-(3, 5,4),
-(3, 4, 20),
-(3, 1, 20),
-(4, 8,5),
-(4, 3, 20),
-(4, 2, 20),
-(5, 6, 20),
-(5, 7, 20),
-(6, 5, 20),
-(6, 8, 20),
-(7, 8, 20),
-(7, 5, 20),
-(8, 7, 20),
-(8, 6, 20)
-;
-
-
-/* NOTE: what is equal between the three algorithms is the maximum flow achieved */
-
-PREPARE boostSample1 AS
-SELECT sum(flow) FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id, source, target,capacity
- FROM boost_example'
- ,1, 8) WHERE source = 1;
-
-PREPARE boostSample2 AS
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id, source, target,capacity
- FROM boost_example'
- ,1, 8) WHERE source = 1;
-
-PREPARE boostSample3 AS
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id, source, target,capacity
- FROM boost_example'
- ,1, 8) WHERE source = 1;
-
-PREPARE boostSample4 AS
-SELECT sum(flow) FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id, source, target,capacity
- FROM boost_example'
- ,1, 8) WHERE target = 8;
-
-PREPARE boostSample5 AS
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id, source, target,capacity
- FROM boost_example'
- ,1, 8) WHERE target = 8;
-
-PREPARE boostSample6 AS
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id, source, target,capacity
- FROM boost_example'
- ,1, 8) WHERE target = 8;
-
-SELECT ('boostSample1',13, 'BOOST: pgr_maxFlowEdmondsKarp, flow from source is 13');
-SELECT ('boostSample4',13, 'BOOST: pgr_maxFlowEdmondsKarp, flow from source is 13');
-SELECT ('boostSample2',13, 'BOOST: pgr_maxFlowBoykovKolmogorov, flow from source is 13');
-SELECT ('boostSample5',13, 'BOOST: pgr_maxFlowBoykovKolmogorov, flow from source is 13');
-SELECT ('boostSample3',13, 'BOOST: pgr_maxFlowPushRelabel, flow from source is 13');
-SELECT ('boostSample6',13, 'BOOST: pgr_maxFlowPushRelabel, flow from source is 13');
-
-/**************************** WIKI EXAMPLE ****************/
-
-CREATE TABLE wiki_example(
- id SERIAL PRIMARY KEY,
- source BIGINT,
- target BIGINT,
- capacity INTEGER
-);
-
-/*
-S = 1, O = 2, P = 3, Q = 4, R = 5, T = 6
-*/
-INSERT INTO wiki_example(source, target, capacity)
-VALUES
-(1, 2, 3),
-(1, 3, 3),
-(2, 3, 2),
-(2, 4, 3),
-(3, 5, 2),
-(4, 5, 4),
-(4, 6, 2),
-(5, 6, 3)
-;
-
-
-PREPARE wikiSample1 AS
-SELECT * FROM pgr_maxFlowEdmondsKarp(
- 'SELECT id, source, target,capacity
- FROM wiki_example'
- ,1, 6);
-
-PREPARE wikiSample2 AS
-SELECT * FROM pgr_maxFlowBoykovKolmogorov(
- 'SELECT id, source, target,capacity
- FROM wiki_example'
- ,1, 6);
-
-PREPARE wikiSample3 AS
-SELECT * FROM pgr_maxFlowPushRelabel(
- 'SELECT id, source, target,capacity
- FROM wiki_example'
- ,1, 6);
-
-PREPARE wikiresult AS
-SELECT *
-FROM (VALUES
- (1, 1, 1, 2, 3, 0),
- (2, 2, 1, 3, 2, 1),
- (3, 4, 2, 4, 3, 0),
- (4, 5, 3, 5, 2, 0),
- (5, 6, 4, 5, 1, 3),
- (6, 7, 4, 6, 2, 0),
- (7, 8, 5, 6, 3, 0)
-) AS t(seq, edge_id, source, target, flow, residual_capacity);
-
-SELECT set_eq('wikiSample1', 'wikiresult', 'WIKI: pgr_maxFlowEdmondsKarp');
-SELECT set_eq('wikiSample2', 'wikiresult', 'WIKI: pgr_maxFlowBoykovKolmogorov');
-SELECT set_eq('wikiSample3', 'wikiresult', 'WIKI: pgr_maxFlowPushRelabel');
-
-ROLLBACK;
diff --git a/src/max_flow/test/sample_data_categories.sql b/src/max_flow/test/sample_data_categories.sql
deleted file mode 100644
index f5dc20f..0000000
--- a/src/max_flow/test/sample_data_categories.sql
+++ /dev/null
@@ -1,33 +0,0 @@
-CREATE TEMPORARY TABLE category (
- category_id SERIAL,
- category text,
- capacity BIGINT
-);
-
-INSERT INTO category VALUES
-('Motorway', 130),
-('Primary', 100),
-('Regional', 80),
-('Local', 50);
-
-ALTER TABLE edge_table ADD COLUMN category TEXT;
-ALTER TABLE edge_table ADD COLUMN reverse_category TEXT;
-
-UPDATE edge_table SET category = 'Regional', reverse_category = 'Motorway' WHERE id = 1;
-UPDATE edge_table SET category = 'Regional', reverse_category = 'Primary' WHERE id = 2;
-UPDATE edge_table SET category = 'Primary', reverse_category = 'Motorway' WHERE id = 3;
-UPDATE edge_table SET category = 'Primary', reverse_category = 'Local' WHERE id = 4;
-UPDATE edge_table SET category = 'Motorway', reverse_category = 'Local' WHERE id = 5;
-UPDATE edge_table SET category = 'Local', reverse_category = 'Primary' WHERE id = 6;
-UPDATE edge_table SET category = 'Local', reverse_category = 'Motorway' WHERE id = 7;
-UPDATE edge_table SET category = 'Primary', reverse_category = 'Motorway' WHERE id = 8;
-UPDATE edge_table SET category = 'Motorway', reverse_category = 'Regional' WHERE id = 9;
-UPDATE edge_table SET category = 'Motorway', reverse_category = 'Local' WHERE id = 10;
-UPDATE edge_table SET category = 'Motorway', reverse_category = 'Primary' WHERE id = 11;
-UPDATE edge_table SET category = 'Primary', reverse_category = 'Regional' WHERE id = 12;
-UPDATE edge_table SET category = 'Primary', reverse_category = 'Local' WHERE id = 13;
-UPDATE edge_table SET category = 'Regional', reverse_category = 'Motorway' WHERE id = 14;
-UPDATE edge_table SET category = 'Regional', reverse_category = 'Local' WHERE id = 15;
-UPDATE edge_table SET category = 'Regional', reverse_category = 'Regional' WHERE id = 16;
-UPDATE edge_table SET category = 'Motorway', reverse_category = 'Primary' WHERE id = 17;
-UPDATE edge_table SET category = 'Local', reverse_category = 'Motorway' WHERE id = 18;
diff --git a/src/max_flow/test/test.conf b/src/max_flow/test/test.conf
index b765345..76c716d 100644
--- a/src/max_flow/test/test.conf
+++ b/src/max_flow/test/test.conf
@@ -6,18 +6,18 @@
'data' => [ ],
'tests' => [qw(
doc-pgr_maxFlow
- doc-pgr_maxFlowBoykovKolmogorov
- doc-pgr_maxFlowPushRelabel
- doc-pgr_maxFlowEdmondsKarp
- doc-pgr_maximumCardinalityMatching
+ doc-pgr_boykovKolmogorov
+ doc-pgr_pushRelabel
+ doc-pgr_edmondsKarp
+ doc-pgr_maxCardinalityMatch
doc-pgr_edgeDisjointPaths
)],
'documentation' => [qw(
doc-pgr_maxFlow
- doc-pgr_maxFlowBoykovKolmogorov
- doc-pgr_maxFlowPushRelabel
- doc-pgr_maxFlowEdmondsKarp
- doc-pgr_maximumCardinalityMatching
+ doc-pgr_boykovKolmogorov
+ doc-pgr_pushRelabel
+ doc-pgr_edmondsKarp
+ doc-pgr_maxCardinalityMatch
doc-pgr_edgeDisjointPaths
)]
},
diff --git a/src/pickDeliver/doc/doc-pickDeliver.queries b/src/pickDeliver/doc/doc-pickDeliver.queries
deleted file mode 100644
index f4544d4..0000000
--- a/src/pickDeliver/doc/doc-pickDeliver.queries
+++ /dev/null
@@ -1,275 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT * FROM _pgr_pickDeliver(
- 'select * from customer order by id', 25, 200, 1, 30);
- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
------+------------+-------------+---------+------------------+------------------+-----------+--------------+------------------
- 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 2 | 1 | 2 | 5 | 15.1327459504216 | 15.1327459504216 | 0 | 90 | 105.132745950422
- 3 | 1 | 3 | 3 | 1 | 106.132745950422 | 0 | 90 | 196.132745950422
- 4 | 1 | 4 | 7 | 2 | 198.132745950422 | 0 | 90 | 288.132745950422
- 5 | 1 | 5 | 8 | 2.82842712474619 | 290.961173075168 | 0 | 90 | 380.961173075168
- 6 | 1 | 6 | 10 | 3.60555127546399 | 384.566724350632 | 0 | 90 | 474.566724350632
- 7 | 1 | 7 | 11 | 3 | 477.566724350632 | 0 | 90 | 567.566724350632
- 8 | 1 | 8 | 9 | 3.16227766016838 | 570.7290020108 | 0 | 90 | 660.7290020108
- 9 | 1 | 9 | 6 | 2.23606797749979 | 662.9650699883 | 0 | 90 | 752.9650699883
- 10 | 1 | 10 | 4 | 2.23606797749979 | 755.2011379658 | 0 | 90 | 845.2011379658
- 11 | 1 | 11 | 2 | 3.60555127546399 | 848.806689241264 | 0 | 90 | 938.806689241264
- 12 | 1 | 12 | 1 | 2 | 940.806689241264 | 0 | 90 | 1030.80668924126
- 13 | 1 | 13 | 75 | 3 | 1033.80668924126 | 0 | 90 | 1123.80668924126
- 14 | 1 | 14 | 0 | 15.8113883008419 | 1139.61807754211 | 0 | 0 | 1139.61807754211
- 15 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 16 | 2 | 2 | 13 | 30.8058436014987 | 30.8058436014987 | 0 | 90 | 120.805843601499
- 17 | 2 | 3 | 17 | 4 | 124.805843601499 | 0 | 90 | 214.805843601499
- 18 | 2 | 4 | 18 | 3 | 217.805843601499 | 0 | 90 | 307.805843601499
- 19 | 2 | 5 | 19 | 5 | 312.805843601499 | 0 | 90 | 402.805843601499
- 20 | 2 | 6 | 15 | 5 | 407.805843601499 | 0 | 90 | 497.805843601499
- 21 | 2 | 7 | 16 | 5 | 502.805843601499 | 0 | 90 | 592.805843601499
- 22 | 2 | 8 | 14 | 2 | 594.805843601499 | 0 | 90 | 684.805843601499
- 23 | 2 | 9 | 12 | 3 | 687.805843601499 | 0 | 90 | 777.805843601499
- 24 | 2 | 10 | 0 | 38.0788655293195 | 815.884709130818 | 0 | 0 | 815.884709130818
- 25 | 3 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 26 | 3 | 2 | 20 | 10 | 10 | 0 | 90 | 100
- 27 | 3 | 3 | 24 | 5 | 105 | 0 | 90 | 195
- 28 | 3 | 4 | 25 | 2 | 197 | 0 | 90 | 287
- 29 | 3 | 5 | 27 | 2 | 289 | 0 | 90 | 379
- 30 | 3 | 6 | 29 | 3.60555127546399 | 382.605551275464 | 0 | 90 | 472.605551275464
- 31 | 3 | 7 | 30 | 5 | 477.605551275464 | 0 | 90 | 567.605551275464
- 32 | 3 | 8 | 28 | 3 | 570.605551275464 | 0 | 90 | 660.605551275464
- 33 | 3 | 9 | 26 | 2 | 662.605551275464 | 0 | 90 | 752.605551275464
- 34 | 3 | 10 | 23 | 3 | 755.605551275464 | 0 | 0 | 755.605551275464
- 35 | 3 | 11 | 103 | 0 | 755.605551275464 | 0 | 90 | 845.605551275464
- 36 | 3 | 12 | 22 | 3 | 848.605551275464 | 0 | 90 | 938.605551275464
- 37 | 3 | 13 | 21 | 2 | 940.605551275464 | 0 | 90 | 1030.60555127546
- 38 | 3 | 14 | 0 | 10.1980390271856 | 1040.80359030265 | 0 | 0 | 1040.80359030265
- 39 | 4 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 40 | 4 | 2 | 32 | 31.6227766016838 | 31.6227766016838 | 0 | 90 | 121.622776601684
- 41 | 4 | 3 | 33 | 2 | 123.622776601684 | 0 | 90 | 213.622776601684
- 42 | 4 | 4 | 31 | 5.3851648071345 | 219.007941408818 | 0 | 90 | 309.007941408818
- 43 | 4 | 5 | 35 | 5 | 314.007941408818 | 0 | 90 | 404.007941408818
- 44 | 4 | 6 | 37 | 5.8309518948453 | 409.838893303664 | 0 | 90 | 499.838893303664
- 45 | 4 | 7 | 38 | 2 | 501.838893303664 | 0 | 90 | 591.838893303664
- 46 | 4 | 8 | 39 | 5 | 596.838893303664 | 0 | 90 | 686.838893303664
- 47 | 4 | 9 | 36 | 5 | 691.838893303664 | 0 | 0 | 691.838893303664
- 48 | 4 | 10 | 105 | 0 | 691.838893303664 | 0 | 90 | 781.838893303664
- 49 | 4 | 11 | 34 | 3 | 784.838893303664 | 0 | 90 | 874.838893303664
- 50 | 4 | 12 | 0 | 32.3882694814033 | 907.227162785067 | 0 | 0 | 907.227162785067
- 51 | 5 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 52 | 5 | 2 | 43 | 16.5529453572468 | 16.5529453572468 | 0 | 90 | 106.552945357247
- 53 | 5 | 3 | 42 | 3 | 109.552945357247 | 0 | 90 | 199.552945357247
- 54 | 5 | 4 | 41 | 2 | 201.552945357247 | 0 | 90 | 291.552945357247
- 55 | 5 | 5 | 40 | 2 | 293.552945357247 | 0 | 90 | 383.552945357247
- 56 | 5 | 6 | 44 | 3 | 386.552945357247 | 0 | 90 | 476.552945357247
- 57 | 5 | 7 | 46 | 2.82842712474619 | 479.381372481993 | 0 | 90 | 569.381372481993
- 58 | 5 | 8 | 45 | 2 | 571.381372481993 | 0 | 90 | 661.381372481993
- 59 | 5 | 9 | 48 | 2 | 663.381372481993 | 0 | 90 | 753.381372481993
- 60 | 5 | 10 | 51 | 3 | 756.381372481993 | 0 | 0 | 756.381372481993
- 61 | 5 | 11 | 101 | 0 | 756.381372481993 | 0 | 90 | 846.381372481993
- 62 | 5 | 12 | 50 | 2.23606797749979 | 848.617440459493 | 0 | 90 | 938.617440459493
- 63 | 5 | 13 | 52 | 3.16227766016838 | 941.779718119661 | 0 | 90 | 1031.77971811966
- 64 | 5 | 14 | 49 | 3 | 1034.77971811966 | 0 | 90 | 1124.77971811966
- 65 | 5 | 15 | 47 | 2 | 1126.77971811966 | 0 | 90 | 1216.77971811966
- 66 | 5 | 16 | 0 | 18.0277563773199 | 1234.80747449698 | 0 | 0 | 1234.80747449698
- 67 | 6 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 68 | 6 | 2 | 57 | 35 | 35 | 0 | 90 | 125
- 69 | 6 | 3 | 55 | 2 | 127 | 0 | 90 | 217
- 70 | 6 | 4 | 54 | 5 | 222 | 0 | 90 | 312
- 71 | 6 | 5 | 53 | 5.3851648071345 | 317.385164807135 | 0 | 90 | 407.385164807135
- 72 | 6 | 6 | 56 | 4 | 411.385164807135 | 0 | 90 | 501.385164807135
- 73 | 6 | 7 | 58 | 2 | 503.385164807135 | 0 | 90 | 593.385164807135
- 74 | 6 | 8 | 60 | 3 | 596.385164807135 | 0 | 90 | 686.385164807135
- 75 | 6 | 9 | 59 | 10.4403065089106 | 696.825471316045 | 0 | 90 | 786.825471316045
- 76 | 6 | 10 | 0 | 35.0570962859162 | 821.882567601961 | 0 | 0 | 821.882567601961
- 77 | 7 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 78 | 7 | 2 | 67 | 12.2065556157337 | 12.2065556157337 | 0 | 90 | 102.206555615734
- 79 | 7 | 3 | 65 | 1 | 103.206555615734 | 0 | 90 | 193.206555615734
- 80 | 7 | 4 | 63 | 2 | 195.206555615734 | 0 | 90 | 285.206555615734
- 81 | 7 | 5 | 62 | 5 | 290.206555615734 | 0 | 90 | 380.206555615734
- 82 | 7 | 6 | 74 | 3 | 383.206555615734 | 0 | 90 | 473.206555615734
- 83 | 7 | 7 | 72 | 5 | 478.206555615734 | 0 | 90 | 568.206555615734
- 84 | 7 | 8 | 61 | 3 | 571.206555615734 | 0 | 90 | 661.206555615734
- 85 | 7 | 9 | 64 | 2 | 663.206555615734 | 0 | 0 | 663.206555615734
- 86 | 7 | 10 | 102 | 0 | 663.206555615734 | 0 | 90 | 753.206555615734
- 87 | 7 | 11 | 68 | 3 | 756.206555615734 | 0 | 90 | 846.206555615734
- 88 | 7 | 12 | 66 | 5.3851648071345 | 851.591720422868 | 0 | 90 | 941.591720422868
- 89 | 7 | 13 | 69 | 2 | 943.591720422868 | 0 | 90 | 1033.59172042287
- 90 | 7 | 14 | 0 | 15.8113883008419 | 1049.40310872371 | 0 | 0 | 1049.40310872371
- 91 | 8 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 92 | 8 | 2 | 81 | 47.4341649025257 | 47.4341649025257 | 0 | 90 | 137.434164902526
- 93 | 8 | 3 | 78 | 3 | 140.434164902526 | 0 | 0 | 140.434164902526
- 94 | 8 | 4 | 104 | 0 | 140.434164902526 | 0 | 90 | 230.434164902526
- 95 | 8 | 5 | 76 | 2 | 232.434164902526 | 0 | 90 | 322.434164902526
- 96 | 8 | 6 | 71 | 5 | 327.434164902526 | 0 | 90 | 417.434164902526
- 97 | 8 | 7 | 70 | 5 | 422.434164902526 | 0 | 90 | 512.434164902526
- 98 | 8 | 8 | 73 | 3 | 515.434164902526 | 0 | 90 | 605.434164902526
- 99 | 8 | 9 | 77 | 4 | 609.434164902526 | 0 | 90 | 699.434164902526
- 100 | 8 | 10 | 79 | 1 | 700.434164902526 | 0 | 90 | 790.434164902526
- 101 | 8 | 11 | 80 | 5.3851648071345 | 795.81932970966 | 0 | 90 | 885.81932970966
- 102 | 8 | 12 | 0 | 51.478150704935 | 937.297480414595 | 0 | 0 | 937.297480414595
- 103 | 9 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 104 | 9 | 2 | 90 | 20.6155281280883 | 20.6155281280883 | 0 | 90 | 110.615528128088
- 105 | 9 | 3 | 87 | 5 | 115.615528128088 | 0 | 90 | 205.615528128088
- 106 | 9 | 4 | 86 | 1 | 206.615528128088 | 0 | 90 | 296.615528128088
- 107 | 9 | 5 | 83 | 6 | 302.615528128088 | 0 | 90 | 392.615528128088
- 108 | 9 | 6 | 82 | 3 | 395.615528128088 | 0 | 90 | 485.615528128088
- 109 | 9 | 7 | 84 | 5.8309518948453 | 491.446480022934 | 0 | 90 | 581.446480022934
- 110 | 9 | 8 | 85 | 2.82842712474619 | 584.27490714768 | 0 | 90 | 674.27490714768
- 111 | 9 | 9 | 88 | 3 | 677.27490714768 | 0 | 90 | 767.27490714768
- 112 | 9 | 10 | 89 | 2.82842712474619 | 770.103334272426 | 0 | 90 | 860.103334272426
- 113 | 9 | 11 | 91 | 3.60555127546399 | 863.70888554789 | 0 | 90 | 953.70888554789
- 114 | 9 | 12 | 0 | 22.3606797749979 | 976.069565322888 | 0 | 0 | 976.069565322888
- 115 | 10 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 116 | 10 | 2 | 98 | 30.8058436014987 | 30.8058436014987 | 0 | 90 | 120.805843601499
- 117 | 10 | 3 | 96 | 5.3851648071345 | 126.191008408633 | 0 | 90 | 216.191008408633
- 118 | 10 | 4 | 95 | 2 | 218.191008408633 | 0 | 90 | 308.191008408633
- 119 | 10 | 5 | 94 | 3.60555127546399 | 311.796559684097 | 0 | 90 | 401.796559684097
- 120 | 10 | 6 | 92 | 3.60555127546399 | 405.402110959561 | 0 | 90 | 495.402110959561
- 121 | 10 | 7 | 93 | 2 | 497.402110959561 | 0 | 90 | 587.402110959561
- 122 | 10 | 8 | 97 | 5 | 592.402110959561 | 0 | 0 | 592.402110959561
- 123 | 10 | 9 | 106 | 0 | 592.402110959561 | 0 | 90 | 682.402110959561
- 124 | 10 | 10 | 100 | 5 | 687.402110959561 | 0 | 90 | 777.402110959561
- 125 | 10 | 11 | 99 | 5 | 782.402110959561 | 0 | 90 | 872.402110959561
- 126 | 10 | 12 | 0 | 33.5410196624968 | 905.943130622058 | 0 | 0 | 905.943130622058
- 127 | -1 | 0 | 0 | 828.936866942834 | 0 | 0 | 9000 | 9828.93686694283
-(127 rows)
-
---q2
-SELECT * FROM _pgr_pickDeliver(
- 'select * from customer order by id', 25, 200, 10, 30);
- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
------+------------+-------------+---------+-------------------+------------------+-------------------+--------------+------------------
- 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 2 | 1 | 2 | 5 | 1.51327459504216 | 1.51327459504216 | 13.4867254049578 | 90 | 105
- 3 | 1 | 3 | 3 | 0.1 | 105.1 | 0 | 90 | 195.1
- 4 | 1 | 4 | 7 | 0.2 | 195.3 | 0 | 90 | 285.3
- 5 | 1 | 5 | 8 | 0.282842712474619 | 285.582842712475 | 0 | 90 | 375.582842712475
- 6 | 1 | 6 | 10 | 0.360555127546399 | 375.943397840021 | 0 | 90 | 465.943397840021
- 7 | 1 | 7 | 11 | 0.3 | 466.243397840021 | 0 | 90 | 556.243397840021
- 8 | 1 | 8 | 9 | 0.316227766016838 | 556.559625606038 | 0 | 90 | 646.559625606038
- 9 | 1 | 9 | 6 | 0.223606797749979 | 646.783232403788 | 0 | 90 | 736.783232403788
- 10 | 1 | 10 | 4 | 0.223606797749979 | 737.006839201538 | 0 | 90 | 827.006839201538
- 11 | 1 | 11 | 2 | 0.360555127546399 | 827.367394329084 | 0 | 90 | 917.367394329084
- 12 | 1 | 12 | 1 | 0.2 | 917.567394329084 | 0 | 90 | 1007.56739432908
- 13 | 1 | 13 | 75 | 0.3 | 1007.86739432908 | 0 | 90 | 1097.86739432908
- 14 | 1 | 14 | 0 | 1.58113883008419 | 1099.44853315917 | 0 | 0 | 1099.44853315917
- 15 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 16 | 2 | 2 | 13 | 3.08058436014987 | 3.08058436014987 | 26.9194156398501 | 90 | 120
- 17 | 2 | 3 | 17 | 0.4 | 120.4 | 0 | 90 | 210.4
- 18 | 2 | 4 | 18 | 0.3 | 210.7 | 0 | 90 | 300.7
- 19 | 2 | 5 | 19 | 0.5 | 301.2 | 0 | 90 | 391.2
- 20 | 2 | 6 | 15 | 0.5 | 391.7 | 0 | 90 | 481.7
- 21 | 2 | 7 | 16 | 0.5 | 482.2 | 0 | 90 | 572.2
- 22 | 2 | 8 | 14 | 0.2 | 572.4 | 0 | 90 | 662.4
- 23 | 2 | 9 | 12 | 0.3 | 662.7 | 0 | 90 | 752.7
- 24 | 2 | 10 | 0 | 3.80788655293195 | 756.507886552932 | 0 | 0 | 756.507886552932
- 25 | 3 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 26 | 3 | 2 | 20 | 1 | 1 | 9 | 90 | 100
- 27 | 3 | 3 | 24 | 0.5 | 100.5 | 0 | 90 | 190.5
- 28 | 3 | 4 | 25 | 0.2 | 190.7 | 0 | 90 | 280.7
- 29 | 3 | 5 | 27 | 0.2 | 280.9 | 0 | 90 | 370.9
- 30 | 3 | 6 | 29 | 0.360555127546399 | 371.260555127546 | 0 | 90 | 461.260555127546
- 31 | 3 | 7 | 30 | 0.5 | 461.760555127546 | 0 | 90 | 551.760555127546
- 32 | 3 | 8 | 28 | 0.3 | 552.060555127546 | 0 | 90 | 642.060555127546
- 33 | 3 | 9 | 26 | 0.2 | 642.260555127546 | 0 | 90 | 732.260555127546
- 34 | 3 | 10 | 23 | 0.3 | 732.560555127546 | 0 | 0 | 732.560555127546
- 35 | 3 | 11 | 103 | 0 | 732.560555127546 | 0 | 90 | 822.560555127546
- 36 | 3 | 12 | 22 | 0.3 | 822.860555127546 | 0 | 90 | 912.860555127546
- 37 | 3 | 13 | 21 | 0.2 | 913.060555127546 | 0.939444872453691 | 90 | 1004
- 38 | 3 | 14 | 0 | 1.01980390271856 | 1005.01980390272 | 0 | 0 | 1005.01980390272
- 39 | 4 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 40 | 4 | 2 | 32 | 3.16227766016838 | 3.16227766016838 | 27.8377223398316 | 90 | 121
- 41 | 4 | 3 | 33 | 0.2 | 121.2 | 0 | 90 | 211.2
- 42 | 4 | 4 | 31 | 0.53851648071345 | 211.738516480713 | 0 | 90 | 301.738516480713
- 43 | 4 | 5 | 35 | 0.5 | 302.238516480713 | 0 | 90 | 392.238516480713
- 44 | 4 | 6 | 37 | 0.58309518948453 | 392.821611670198 | 0 | 90 | 482.821611670198
- 45 | 4 | 7 | 38 | 0.2 | 483.021611670198 | 0 | 90 | 573.021611670198
- 46 | 4 | 8 | 39 | 0.5 | 573.521611670198 | 0 | 90 | 663.521611670198
- 47 | 4 | 9 | 36 | 0.5 | 664.021611670198 | 0.978388329802101 | 0 | 665
- 48 | 4 | 10 | 105 | 0 | 665 | 0 | 90 | 755
- 49 | 4 | 11 | 34 | 0.3 | 755.3 | 0 | 90 | 845.3
- 50 | 4 | 12 | 0 | 3.23882694814033 | 848.53882694814 | 0 | 0 | 848.53882694814
- 51 | 5 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 52 | 5 | 2 | 43 | 1.65529453572468 | 1.65529453572468 | 14.3447054642753 | 90 | 106
- 53 | 5 | 3 | 42 | 0.3 | 106.3 | 0 | 90 | 196.3
- 54 | 5 | 4 | 41 | 0.2 | 196.5 | 0 | 90 | 286.5
- 55 | 5 | 5 | 40 | 0.2 | 286.7 | 0 | 90 | 376.7
- 56 | 5 | 6 | 44 | 0.3 | 377 | 0 | 90 | 467
- 57 | 5 | 7 | 46 | 0.282842712474619 | 467.282842712475 | 0 | 90 | 557.282842712475
- 58 | 5 | 8 | 45 | 0.2 | 557.482842712475 | 0 | 90 | 647.482842712475
- 59 | 5 | 9 | 48 | 0.2 | 647.682842712475 | 0 | 90 | 737.682842712475
- 60 | 5 | 10 | 51 | 0.3 | 737.982842712475 | 0 | 0 | 737.982842712475
- 61 | 5 | 11 | 101 | 0 | 737.982842712475 | 0 | 90 | 827.982842712475
- 62 | 5 | 12 | 50 | 0.223606797749979 | 828.206449510225 | 0 | 90 | 918.206449510225
- 63 | 5 | 13 | 52 | 0.316227766016838 | 918.522677276241 | 0 | 90 | 1008.52267727624
- 64 | 5 | 14 | 49 | 0.3 | 1008.82267727624 | 0 | 90 | 1098.82267727624
- 65 | 5 | 15 | 47 | 0.2 | 1099.02267727624 | 0 | 90 | 1189.02267727624
- 66 | 5 | 16 | 0 | 1.80277563773199 | 1190.82545291397 | 0 | 0 | 1190.82545291397
- 67 | 6 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 68 | 6 | 2 | 57 | 3.5 | 3.5 | 31.5 | 90 | 125
- 69 | 6 | 3 | 55 | 0.2 | 125.2 | 0 | 90 | 215.2
- 70 | 6 | 4 | 54 | 0.5 | 215.7 | 0 | 90 | 305.7
- 71 | 6 | 5 | 53 | 0.53851648071345 | 306.238516480713 | 0 | 90 | 396.238516480713
- 72 | 6 | 6 | 56 | 0.4 | 396.638516480713 | 0 | 90 | 486.638516480713
- 73 | 6 | 7 | 58 | 0.2 | 486.838516480713 | 0 | 90 | 576.838516480713
- 74 | 6 | 8 | 60 | 0.3 | 577.138516480713 | 0 | 90 | 667.138516480713
- 75 | 6 | 9 | 59 | 1.04403065089106 | 668.182547131604 | 0 | 90 | 758.182547131604
- 76 | 6 | 10 | 0 | 3.50570962859162 | 761.688256760196 | 0 | 0 | 761.688256760196
- 77 | 7 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 78 | 7 | 2 | 67 | 1.22065556157337 | 1.22065556157337 | 10.7793444384266 | 90 | 102
- 79 | 7 | 3 | 65 | 0.1 | 102.1 | 0 | 90 | 192.1
- 80 | 7 | 4 | 63 | 0.2 | 192.3 | 0 | 90 | 282.3
- 81 | 7 | 5 | 62 | 0.5 | 282.8 | 0 | 90 | 372.8
- 82 | 7 | 6 | 74 | 0.3 | 373.1 | 0 | 90 | 463.1
- 83 | 7 | 7 | 72 | 0.5 | 463.6 | 0 | 90 | 553.6
- 84 | 7 | 8 | 61 | 0.3 | 553.9 | 0 | 90 | 643.9
- 85 | 7 | 9 | 64 | 0.2 | 644.1 | 0 | 0 | 644.1
- 86 | 7 | 10 | 102 | 0 | 644.1 | 0 | 90 | 734.1
- 87 | 7 | 11 | 68 | 0.3 | 734.4 | 0 | 90 | 824.4
- 88 | 7 | 12 | 66 | 0.53851648071345 | 824.938516480713 | 1.06148351928664 | 90 | 916
- 89 | 7 | 13 | 69 | 0.2 | 916.2 | 0 | 90 | 1006.2
- 90 | 7 | 14 | 0 | 1.58113883008419 | 1007.78113883008 | 0 | 0 | 1007.78113883008
- 91 | 8 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 92 | 8 | 2 | 81 | 4.74341649025257 | 4.74341649025257 | 42.2565835097474 | 90 | 137
- 93 | 8 | 3 | 78 | 0.3 | 137.3 | 0 | 0 | 137.3
- 94 | 8 | 4 | 104 | 0 | 137.3 | 0 | 90 | 227.3
- 95 | 8 | 5 | 76 | 0.2 | 227.5 | 0 | 90 | 317.5
- 96 | 8 | 6 | 71 | 0.5 | 318 | 0 | 90 | 408
- 97 | 8 | 7 | 70 | 0.5 | 408.5 | 0 | 90 | 498.5
- 98 | 8 | 8 | 73 | 0.3 | 498.8 | 0 | 90 | 588.8
- 99 | 8 | 9 | 77 | 0.4 | 589.2 | 0 | 90 | 679.2
- 100 | 8 | 10 | 79 | 0.1 | 679.3 | 0 | 90 | 769.3
- 101 | 8 | 11 | 80 | 0.53851648071345 | 769.838516480713 | 0 | 90 | 859.838516480713
- 102 | 8 | 12 | 0 | 5.1478150704935 | 864.986331551207 | 0 | 0 | 864.986331551207
- 103 | 9 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 104 | 9 | 2 | 90 | 2.06155281280883 | 2.06155281280883 | 17.9384471871912 | 90 | 110
- 105 | 9 | 3 | 87 | 0.5 | 110.5 | 0 | 90 | 200.5
- 106 | 9 | 4 | 86 | 0.1 | 200.6 | 0 | 90 | 290.6
- 107 | 9 | 5 | 83 | 0.6 | 291.2 | 0 | 90 | 381.2
- 108 | 9 | 6 | 82 | 0.3 | 381.5 | 0 | 90 | 471.5
- 109 | 9 | 7 | 84 | 0.58309518948453 | 472.083095189485 | 0 | 90 | 562.083095189485
- 110 | 9 | 8 | 85 | 0.282842712474619 | 562.365937901959 | 0 | 90 | 652.365937901959
- 111 | 9 | 9 | 88 | 0.3 | 652.665937901959 | 0 | 90 | 742.665937901959
- 112 | 9 | 10 | 89 | 0.282842712474619 | 742.948780614434 | 0 | 90 | 832.948780614434
- 113 | 9 | 11 | 91 | 0.360555127546399 | 833.30933574198 | 2.69066425801998 | 90 | 926
- 114 | 9 | 12 | 0 | 2.23606797749979 | 928.2360679775 | 0 | 0 | 928.2360679775
- 115 | 10 | 1 | 0 | 0 | 0 | 0 | 0 | 0
- 116 | 10 | 2 | 98 | 3.08058436014987 | 3.08058436014987 | 26.9194156398501 | 90 | 120
- 117 | 10 | 3 | 96 | 0.53851648071345 | 120.538516480713 | 0 | 90 | 210.538516480713
- 118 | 10 | 4 | 95 | 0.2 | 210.738516480713 | 0 | 90 | 300.738516480713
- 119 | 10 | 5 | 94 | 0.360555127546399 | 301.09907160826 | 0 | 90 | 391.09907160826
- 120 | 10 | 6 | 92 | 0.360555127546399 | 391.459626735806 | 0 | 90 | 481.459626735806
- 121 | 10 | 7 | 93 | 0.2 | 481.659626735806 | 0 | 90 | 571.659626735806
- 122 | 10 | 8 | 97 | 0.5 | 572.159626735806 | 0 | 0 | 572.159626735806
- 123 | 10 | 9 | 106 | 0 | 572.159626735806 | 0 | 90 | 662.159626735806
- 124 | 10 | 10 | 100 | 0.5 | 662.659626735806 | 0 | 90 | 752.659626735806
- 125 | 10 | 11 | 99 | 0.5 | 753.159626735806 | 0 | 90 | 843.159626735806
- 126 | 10 | 12 | 0 | 3.35410196624968 | 846.513728702056 | 0 | 0 | 846.513728702056
- 127 | -1 | 0 | 0 | 82.8936866942834 | 0 | 226.652340603693 | 9000 | 9309.54602729797
-(127 rows)
-
---q3
-ROLLBACK;
-ROLLBACK
diff --git a/src/pickDeliver/doc/pgr_pickDeliver.rst.backup b/src/pickDeliver/doc/pgr_pickDeliver.rst.backup
deleted file mode 100644
index 16a65b4..0000000
--- a/src/pickDeliver/doc/pgr_pickDeliver.rst.backup
+++ /dev/null
@@ -1,229 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
- INSTRUCTIONS
- - if section consists of only one value then use this file as index.rst
- - change [...] (including the square braquets) to appropriate values
- - one file / function, may signatures of the same function go in the same file
-
-.. _pgr_pickDeliver:
-
-__pgr_pickDeliver
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``_pgr_pickDeliver`` - Pickup and delivery Vehicle Routing Problem
-
-.. warning:: This is developers function.
-
- - Is not officially in the current release
- - Functionality currently is incomplete
- - Final name currently is undecided
- - Signature can and will change without notice.
- - Please use :ref:`pgr_gsocvrppdtw` for a non changing Signature between releases
- - It has the underscore until final functionality and name are decided
-
-
-
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-Problem: Distribute and optimize the pickup-delivery pairs into a fleet of vehicles.
-
-- Optimization problem is NP-hard.
-- pickup and Delivery with time windows.
-- All vehicles are equal.
-
- - Same Starting location.
- - Same Ending location which is the same as Starting location.
- - All vehicles travel at the same speed.
-
-- A customer is for doing a pickup or doing a deliver.
-
- - has an open time.
- - has a closing time.
- - has a service time.
- - has an (x, y) location.
-
-- There is a customer where to deliver a pickup.
-
- - travel time between customers is distance / speed
- - pickup and delivery pair is done with the same vehicle.
- - A pickup is done before the delivery.
-
-
-Characteristics:
-----------------
-
-- All trucks depart at time 0.
-- No multiple time windows for a location.
-- Less vehicle used is considered better.
-- Less total duration is better.
-- Less wait time is better.
-- the algorithm will raise an exception when
-
- - If there is a pickup-deliver pair than violates time window
- - The speed, max_cycles, ma_capacity have illegal values
-
-- Six different initial will be optimized
- - the best solution found will be result
-
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- _pgr_pickDeliver(customers_sql, max_vehicles, capacity)
- _pgr_pickDeliver(customers_sql, max_vehicles, capacity, speed, max_cycles)
- RETURNS SET OF (seq, vehicle_id, vehicle_seq, stop_id,
- travel_time, arrival_time, wait_time, service_time, departure_time)
-
-
-
-Signatures
------------
-
-..
- Minimal signature
- .. index::
- single: _pgr_pickDeliver(Minimal Signature) - developing
-
-Minimal signature
-...................
-
-..
- Small description, example:
-
-The minimal signature is for `speed = 1`, for a `max_cycles = 30`
-
-.. code-block:: none
-
- _pgr_pickDeliver(customers_sql, max_vehicles, capacity)
- RETURNS SET OF (seq, vehicle_id, vehicle_seq, stop_id,
- travel_time, arrival_time, wait_time, service_time, departure_time)
-
-:Example:
-
-This example use the following data: TODO put link
-
-.. literalinclude:: doc-pickDeliver.queries
- :start-after: --q1
- :end-before: --q2
-
-..
- Complete signature
- .. index::
- single: _pgr_pickDeliver(Cmplete Signature) - developing
-
-
-Complete signature
-....................
-
-This signature performs the optimization based on the optional parameters
-
-
-.. code-block:: none
-
- _pgr_pickDeliver(customers_sql, max_vehicles, capacity, speed, max_cycles)
- RETURNS SET OF (seq, vehicle_id, vehicle_seq, stop_id,
- travel_time, arrival_time, wait_time, service_time, departure_time)
-
-
-:Example:
-
-This example use the following data: TODO put link
-
-.. literalinclude:: doc-pickDeliver.queries
- :start-after: --q2
- :end-before: --q3
-
-Description of the Signatures
--------------------------------
-
-
-Description of the customers_sql query
-.........................................................................................
-
-================ =================== =================================================
-Column Type Description
-================ =================== =================================================
-**id** ``ANY-INTEGER`` Identifier of the customer.
-
- - A value of ``0`` identifies the starting location
-
-**x** ``ANY-NUMERICAL`` ``X`` coordinate of the location.
-**y** ``ANY-NUMERICAL`` ``Y`` coordinate of the location.
-**demand** ``ANY-NUMERICAL`` How much is added / removed from the vehicle.
-
- - Negative value is a delivery,
- - Positive value is a pickup,
-
-**openTime** ``ANY-NUMERICAL`` The time relative to 0, when the customer opens.
-**closeTime** ``ANY-NUMERICAL`` The time relative to 0, when the customer closes.
-**serviceTime** ``ANY-NUMERICAL`` The duration of the loading / unloading.
-**pickup_id** ``ANY-INTEGER`` Value used when the current customer is a Delivery to find the corresponding Pickup
-**deliver_id** ``ANY-INTEGER`` Value used when the current customer is a Pickup to find the corresponding Delivery
-================ =================== =================================================
-
-Where:
-
-:ANY-INTEGER: SMALLINT, INTEGER, BIGINT
-:ANY-NUMERICAL: SMALLINT, INTEGER, BIGINT, REAL, FLOAT
-
-
-Description of the parameters of the signatures
-.........................................................................................
-
-================== =========== ======== =================================================
-Column Type Default Description
-================== =========== ======== =================================================
-**customers_sql** ``TEXT`` SQL query as described above.
-**max_vehicles** ``INTEGER`` Maximum number of vehicles in the result. (currently is ignored)
-**capacity** ``FLOAT`` Capacity of the vehicle.
-**speed** ``FLOAT`` 1 Speed of the vehicle.
-**max_cycles** ``INTEGER`` 30 A multiplier for internal cycles (currently is ignored)
-================== =========== ======== =================================================
-
-Description of the result
-.........................................................................................
-
-:RETURNS SET OF: (seq, vehicle_id, vehicle_seq, stop_id, travel_time, arrival_time, wait_time, service_time, departure_time)
-
-=================== ============= =================================================
-Column Type Description
-=================== ============= =================================================
-**seq** INTEGER Sequential value starting from **1**.
-**vehicle_id** INTEGER Current vehicle identifier.
-**vehicle_seq** INTEGER Sequential value starting from **1** for the current vehicle.
-**stop_id** BIGINT Visited customer identifier.
-**travel_time** FLOAT Travel time from previous ``stop_id`` to current ``stop_id``.
-**arrival_time** FLOAT Previous ``departure_time`` plus current ``travel_time``.
-**wait_time** FLOAT Time spent waiting for ``stop_id`` to open.
-**service_time** FLOAT Service time at current stop_id.
-**departure_time** FLOAT Previous :math:`departure\_time + travel\_time + wait\_time + service\_time`.
- - When ``stop_id = 0`` and ``vehicle_seq != 1`` has the total time for the current ``vehicle_id``.
- - When ``vehicle_id = -1`` has the aggregate total time
-=================== ============= =================================================
-
-
-
-See Also
--------------------------------------------------------------------------------
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/pickDeliver/sql/CMakeLists.txt b/src/pickDeliver/sql/CMakeLists.txt
deleted file mode 100644
index dc7e23f..0000000
--- a/src/pickDeliver/sql/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/pickDeliver.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/pickDeliver/sql/pickDeliver.sql b/src/pickDeliver/sql/pickDeliver.sql
deleted file mode 100644
index 9c98ff6..0000000
--- a/src/pickDeliver/sql/pickDeliver.sql
+++ /dev/null
@@ -1,51 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pickDeliver.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
- customers_sql TEXT,
- max_vehicles INTEGER,
- capacity FLOAT,
- speed FLOAT DEFAULT 1,
- max_cycles INTEGER DEFAULT 10,
-
- OUT seq INTEGER,
- OUT vehicle_id INTEGER,
- OUT vehicle_seq INTEGER,
- OUT stop_id BIGINT,
- OUT travel_time FLOAT,
- OUT arrival_time FLOAT,
- OUT wait_time FLOAT,
- OUT service_time FLOAT,
- OUT departure_time FLOAT
-)
-
- RETURNS SETOF RECORD AS
- '$libdir/${PGROUTING_LIBRARY_NAME}', 'pickDeliver'
- LANGUAGE c IMMUTABLE STRICT;
-
diff --git a/src/pickDeliver/src/CMakeLists.txt b/src/pickDeliver/src/CMakeLists.txt
index 4d5641b..4187ef2 100644
--- a/src/pickDeliver/src/CMakeLists.txt
+++ b/src/pickDeliver/src/CMakeLists.txt
@@ -1,20 +1,29 @@
ADD_LIBRARY(pickDeliver OBJECT
- # point.cpp
+ base_node.cpp
+ dnode.cpp
node.cpp
tw_node.cpp
vehicle_node.cpp
+
order.cpp
+ pd_orders.cpp
+ fleet.cpp
vehicle.cpp
+ pd_problem.cpp
vehicle_pickDeliver.cpp
+ book_keeping.cpp
solution.cpp
initial_solution.cpp
optimize.cpp
+ pgr_messages.cpp
pgr_pickDeliver.cpp
+
+ pickDeliverEuclidean_driver.cpp
pickDeliver_driver.cpp
- customers_input.c
+ pickDeliverEuclidean.c
pickDeliver.c
)
diff --git a/src/pickDeliver/src/base_node.cpp b/src/pickDeliver/src/base_node.cpp
new file mode 100644
index 0000000..3bcdf10
--- /dev/null
+++ b/src/pickDeliver/src/base_node.cpp
@@ -0,0 +1,58 @@
+/*PGR-GNU*****************************************************************
+
+FILE: base_node.cpp
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#include "vrp/base_node.h"
+#include "cpp_common/pgr_assert.h"
+
+namespace pgrouting {
+namespace vrp {
+
+std::ostream& operator << (std::ostream &log, const Base_node &node) {
+ node.print(log);
+ return log;
+}
+
+void
+Base_node::print(std::ostream& os) const {
+ os << id()
+ << "(" << idx() << ")";
+}
+
+Base_node::Base_node(size_t _idx, int64_t _id)
+ : Identifier(_idx, _id) {
+ }
+
+bool
+Base_node::operator ==(const Base_node &rhs) const {
+ if (&rhs == this) return true;
+ return
+ (idx() == rhs.idx())
+ && (id() == rhs.id());
+}
+
+} // namespace vrp
+} // namespace pgrouting
+
+
diff --git a/src/pickDeliver/src/book_keeping.cpp b/src/pickDeliver/src/book_keeping.cpp
new file mode 100644
index 0000000..baabb52
--- /dev/null
+++ b/src/pickDeliver/src/book_keeping.cpp
@@ -0,0 +1,75 @@
+/*PGR-GNU*****************************************************************
+
+FILE: book_keeping.cpp
+
+Copyright (c) 2017 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+
+#include "vrp/book_keeping.h"
+
+#include <queue>
+#include <iostream>
+
+namespace pgrouting {
+namespace vrp {
+
+Swap_info::Swap_info(const Vehicle_pickDeliver &from,
+ const Vehicle_pickDeliver &to,
+ size_t from_o,
+ size_t to_o,
+ double delta) :
+ from_truck(from),
+ to_truck(to),
+ from_order(from_o),
+ to_order(to_o),
+ estimated_delta(delta)
+ { }
+
+std::ostream& operator << (std::ostream& log, const Swap_info &d) {
+ log << "\n" << d.from_truck.tau() << " --> "
+ << d.from_order
+ << "("
+ << d.from_truck.orders()[d.from_order].pickup().id()
+ << ")"
+ << "\n" << d.to_truck.tau() << " --> "
+ << d.to_order
+ << "("
+ << d.to_truck.orders()[d.to_order].pickup().id()
+ << ")"
+ << "\n" << "delta = " << d.estimated_delta;
+ return log;
+}
+
+
+std::ostream& operator<< (std::ostream &log, const Swap_bk &data) {
+ auto q = data.m_swaps;
+ while (!q.empty()) {
+ log << q.top() << " ";
+ q.pop();
+ }
+ log << '\n';
+ return log;
+}
+
+
+} // namespace vrp
+} // namespace pgrouting
diff --git a/src/pickDeliver/src/customers_input.c b/src/pickDeliver/src/customers_input.c
deleted file mode 100644
index 389484e..0000000
--- a/src/pickDeliver/src/customers_input.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: customers_input.c
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/get_check_data.h"
-#include "./customers_input.h"
-
-
-static
-void fetch_customer(
- HeapTuple *tuple,
- TupleDesc *tupdesc,
- Column_info_t info[9],
- Customer_t *customer) {
- customer->id = pgr_SPI_getBigInt(tuple, tupdesc, info[0]);
- customer->x = pgr_SPI_getFloat8(tuple, tupdesc, info[1]);
- customer->y = pgr_SPI_getFloat8(tuple, tupdesc, info[2]);
- customer->demand = pgr_SPI_getFloat8(tuple, tupdesc, info[3]);
- customer->Etime = pgr_SPI_getFloat8(tuple, tupdesc, info[4]);
- customer->Ltime = pgr_SPI_getFloat8(tuple, tupdesc, info[5]);
- customer->Stime = pgr_SPI_getFloat8(tuple, tupdesc, info[6]);
- customer->Pindex = pgr_SPI_getBigInt(tuple, tupdesc, info[7]);
- customer->Dindex = pgr_SPI_getBigInt(tuple, tupdesc, info[8]);
- customer->Ddist = 0;
-}
-
-
-
-void
-pgr_get_customers_data(
- char *customers_sql,
- Customer_t **customers,
- size_t *total_customers) {
- const int tuple_limit = 1000000;
-
- PGR_DBG("pgr_get_customers_data");
- PGR_DBG("%s", customers_sql);
-
- Column_info_t info[9];
-
- int i;
- for (i = 0; i < 9; ++i) {
- info[i].colNumber = -1;
- info[i].type = 0;
- info[i].strict = true;
- info[i].eType = ANY_NUMERICAL;
- }
-
- /*!
- int64_t id;
- double x;
- double y;
- double demand;
- double Etime;
- double Ltime;
- double Stime;
- int64_t Pindex;
- int64_t Dindex;
- double Ddist;
- */
-
- info[0].name = strdup("id");
- info[1].name = strdup("x");
- info[2].name = strdup("y");
- info[3].name = strdup("demand");
- info[4].name = strdup("opentime");
- info[5].name = strdup("closetime");
- info[6].name = strdup("servicetime");
- info[7].name = strdup("pindex");
- info[8].name = strdup("dindex");
-
- info[0].eType = ANY_INTEGER;
- info[7].eType = ANY_INTEGER;
- info[8].eType = ANY_INTEGER;
-
-
- size_t ntuples;
- size_t total_tuples;
-
- void *SPIplan;
- SPIplan = pgr_SPI_prepare(customers_sql);
- Portal SPIportal;
- SPIportal = pgr_SPI_cursor_open(SPIplan);
-
- bool moredata = TRUE;
- (*total_customers) = total_tuples = 0;
-
- /* on the first tuple get the column numbers */
-
- while (moredata == TRUE) {
- SPI_cursor_fetch(SPIportal, TRUE, tuple_limit);
- if (total_tuples == 0) {
- pgr_fetch_column_info(info, 9);
- }
- ntuples = SPI_processed;
- total_tuples += ntuples;
- PGR_DBG("SPI_processed %ld", ntuples);
- if (ntuples > 0) {
- if ((*customers) == NULL)
- (*customers) = (Customer_t *)palloc0(
- total_tuples * sizeof(Customer_t));
- else
- (*customers) = (Customer_t *)repalloc(
- (*customers), total_tuples * sizeof(Customer_t));
-
- if ((*customers) == NULL) {
- elog(ERROR, "Out of memory");
- }
-
- size_t t;
- SPITupleTable *tuptable = SPI_tuptable;
- TupleDesc tupdesc = SPI_tuptable->tupdesc;
- PGR_DBG("processing %ld", ntuples);
- for (t = 0; t < ntuples; t++) {
- HeapTuple tuple = tuptable->vals[t];
- fetch_customer(&tuple, &tupdesc, info,
- &(*customers)[total_tuples - ntuples + t]);
- }
- SPI_freetuptable(tuptable);
- } else {
- moredata = FALSE;
- }
- }
-
- SPI_cursor_close(SPIportal);
-
- if (total_tuples == 0) {
- (*total_customers) = 0;
- PGR_DBG("NO customers");
- return;
- }
-
- (*total_customers) = total_tuples;
- PGR_DBG("Finish reading %ld data, %ld", total_tuples, (*total_customers));
-}
diff --git a/src/pickDeliver/src/customers_input.h b/src/pickDeliver/src/customers_input.h
deleted file mode 100644
index f295869..0000000
--- a/src/pickDeliver/src/customers_input.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: customers_input.h
-
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-void pgr_get_customers_data(
- char *customers_sql,
- Customer_t **customers,
- size_t *total_customers);
diff --git a/src/pickDeliver/src/dnode.cpp b/src/pickDeliver/src/dnode.cpp
new file mode 100644
index 0000000..d6788b5
--- /dev/null
+++ b/src/pickDeliver/src/dnode.cpp
@@ -0,0 +1,56 @@
+/*PGR-GNU*****************************************************************
+
+FILE: dnode.cpp
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#include "vrp/dnode.h"
+
+#include "vrp/pgr_pickDeliver.h"
+
+namespace pgrouting {
+namespace vrp {
+
+
+std::ostream& operator << (std::ostream &log, const Dnode &node) {
+ log << node.id()
+ << "(" << node.idx() << ")";
+ return log;
+}
+
+
+double
+Dnode::distance(const Base_node *other) const {
+ return problem->m_cost_matrix.distance(
+ problem->m_cost_matrix.get_index(id()),
+ problem->m_cost_matrix.get_index(other->id()));
+}
+
+
+Dnode::Dnode(size_t id, int64_t original_id, double, double)
+ : Base_node(id, original_id) {
+ }
+
+} // namespace vrp
+} // namespace pgrouting
+
+
diff --git a/src/pickDeliver/src/fleet.cpp b/src/pickDeliver/src/fleet.cpp
new file mode 100644
index 0000000..2b9f35f
--- /dev/null
+++ b/src/pickDeliver/src/fleet.cpp
@@ -0,0 +1,365 @@
+/*PGR-GNU*****************************************************************
+
+FILE: solution.cpp
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#include "vrp/fleet.h"
+
+#include <vector>
+#include <memory>
+#include <utility>
+#include <limits>
+
+#include "vrp/dnode.h"
+#include "vrp/pgr_pickDeliver.h"
+
+namespace pgrouting {
+namespace vrp {
+
+
+Fleet::Fleet(const Fleet &fleet) :
+ PD_problem(),
+ m_trucks(fleet.m_trucks),
+ used(fleet.used),
+ un_used(fleet.un_used)
+ {}
+
+Fleet::Fleet(
+ const std::vector<Vehicle_t> &vehicles, double factor) :
+ PD_problem(),
+ used(),
+ un_used() {
+ build_fleet(vehicles, factor);
+ Identifiers<size_t> unused(m_trucks.size());
+ un_used = unused;
+ }
+
+
+Vehicle_pickDeliver
+Fleet::get_truck() {
+ ENTERING();
+ auto idx = un_used.front();
+ msg.log << "Available vehicles: " << un_used << "\n";
+ msg.log << "NOT Available vehicles: " << used << "\n";
+ msg.log << "getting idx" << idx << "\n";
+ pgassertwm(idx < m_trucks.size(), msg.log.str());
+ used += idx;
+ if (un_used.size() > 1) un_used -= idx;
+ EXITING();
+ return m_trucks[idx];
+}
+
+void
+Fleet::release_truck(size_t id) {
+ used -= id;
+ un_used += id;
+}
+
+Vehicle_pickDeliver
+Fleet::get_truck(size_t order) {
+ msg.log << "Available vehicles: " << un_used << "\n";
+ msg.log << "NOT Available vehicles: " << used << "\n";
+ auto idx = un_used.front();
+
+ for (const auto i : un_used) {
+ if (m_trucks[i].feasable_orders().has(order)) {
+ idx = i;
+ msg.log << "getting idx" << idx << "\n";
+ used += idx;
+ if (un_used.size() > 1) un_used -= idx;
+ return m_trucks[idx];
+ }
+ }
+
+ /*
+ * using phoney truck
+ */
+ pgassert(false);
+ return m_trucks.back();
+
+ for (auto truck : m_trucks) {
+ if (truck.feasable_orders().has(order)) {
+ idx = truck.idx();
+ msg.log << "idx" << idx << "size" << m_trucks.size();
+ pgassertwm(idx < m_trucks.size(), msg.get_log());
+ used += idx;
+ if (un_used.size() > 1) un_used -= idx;
+ break;
+ }
+ }
+ return m_trucks[idx];
+}
+
+
+Vehicle_pickDeliver
+Fleet::get_truck(const Order order) {
+ auto id = m_trucks.front().idx();
+ for (auto truck : m_trucks) {
+ if (truck.feasable_orders().has(order.idx())) {
+ id = truck.idx();
+ msg.log << "id" << id
+ << "size" << m_trucks.size();
+ pgassertwm(id < m_trucks.size(), msg.get_log());
+ used += id;
+ if (un_used.size() > 1) un_used -= id;
+ break;
+ }
+ }
+ return m_trucks[id];
+}
+
+
+void
+Fleet::add_vehicle(
+ Vehicle_t vehicle,
+ double factor,
+ std::unique_ptr<Base_node> b_start,
+ const Vehicle_node &starting_site,
+ std::unique_ptr<Base_node> b_end,
+ const Vehicle_node &ending_site) {
+ pgassert(starting_site.is_start() && ending_site.is_end());
+ pgassert(starting_site.opens() <= starting_site.closes());
+ pgassert(ending_site.opens() <= ending_site.closes());
+
+ problem->add_base_node(std::move(b_start));
+ problem->add_base_node(std::move(b_end));
+ problem->add_node(starting_site);
+ problem->add_node(ending_site);
+
+ for (int i = 0; i < vehicle.cant_v; ++i) {
+ m_trucks.push_back(Vehicle_pickDeliver(
+ m_trucks.size(),
+ vehicle.id,
+ starting_site,
+ ending_site,
+ vehicle.capacity,
+ vehicle.speed,
+ factor));
+ msg.log << "inserting vehicle: " << m_trucks.back().tau() << "\n";
+ pgassert((m_trucks.back().idx() + 1) == m_trucks.size());
+ pgassert(m_trucks.back().is_ok());
+ }
+}
+
+/*!
+ builds a fleet from a vector of Vehicle_t
+
+ - creates a phoney truck with unlimited capacity and unlimited closing times
+ - checks that the number of vehicles is a legal value
+ - creates the requested vehicles
+
+ @param[in] vehicles the list of vehicles
+ @param[in] factor the multiplier to speed up or slow down
+ */
+bool
+Fleet::build_fleet(
+ std::vector<Vehicle_t> vehicles,
+ double factor) {
+ /*
+ * creating a phoney truck with max capacity and max window
+ * with the start & end points of the first vehicle given
+ */
+ vehicles.push_back({
+ /*
+ * id, capacity
+ */
+ -1,
+ std::numeric_limits<double>::infinity(),
+
+ vehicles[0].speed,
+ vehicles[0].start_x,
+ vehicles[0].start_y,
+ vehicles[0].start_node_id,
+
+ /*
+ * cant_v, start_open_t, start_close_t, start_service_t
+ */
+ 1,
+ 0,
+ std::numeric_limits<double>::infinity(),
+ 0,
+
+ vehicles[0].end_x,
+ vehicles[0].end_y,
+ vehicles[0].end_node_id,
+ /*
+ * end_open_t, end_close_t, end_service_t
+ */
+ 0,
+ std::numeric_limits<double>::infinity(),
+ 0});
+
+
+ for (auto vehicle : vehicles) {
+ if (vehicle.cant_v < 0) {
+ msg.error << "Illegal number of vehicles found vehicle";
+ msg.log << vehicle.cant_v << "< 0 on vehicle " << vehicle.id;
+ return false;
+ }
+
+ if (problem->m_cost_matrix.empty()) {
+ /*
+ * Euclidean version
+ */
+ auto b_start = create_b_start<Node>(vehicle, problem->node_id());
+ auto starting_site = Vehicle_node(
+ {problem->node_id()++, vehicle, Tw_node::NodeType::kStart});
+
+ auto b_end = create_b_end<Node>(vehicle, problem->node_id());
+ auto ending_site = Vehicle_node(
+ {problem->node_id()++, vehicle, Tw_node::NodeType::kEnd});
+
+ if (!(starting_site.is_start() && ending_site.is_end()
+ && starting_site.opens() <= starting_site.closes()
+ && ending_site.opens() <= ending_site.closes())) {
+ msg.clear();
+ msg.error << "Illegal values found on vehicle";
+ msg.log << "On vehicle " << vehicle.id << " a condition is not met, verify that:\n"
+ << "- start_open <= start_close\n"
+ << "- end_open <= end_close\n"
+ << "- capacity > 0\n";
+ pgassert(!msg.get_error().empty());
+ return false;
+ }
+
+ pgassert(starting_site.opens() <= starting_site.closes());
+ pgassert(ending_site.opens() <= ending_site.closes());
+ pgassertwm(starting_site.is_start() && ending_site.is_end(), msg.get_error().c_str());
+ add_vehicle(vehicle, factor,
+ std::move(b_start), starting_site,
+ std::move(b_end), ending_site);
+ } else {
+ /*
+ * Matrix version
+ */
+ auto b_start = create_b_start<Dnode>(vehicle, problem->node_id());
+ auto starting_site = Vehicle_node(
+ {problem->node_id()++, vehicle, Tw_node::NodeType::kStart});
+
+ auto b_end = create_b_end<Dnode>(vehicle, problem->node_id());
+ auto ending_site = Vehicle_node(
+ {problem->node_id()++, vehicle, Tw_node::NodeType::kEnd});
+
+ if (!(starting_site.is_start() && ending_site.is_end()
+ && starting_site.opens() <= starting_site.closes()
+ && ending_site.opens() <= ending_site.closes())) {
+ msg.clear();
+ msg.error << "Illegal values found on vehicle";
+ msg.log << "On vehicle " << vehicle.id << " a condition is not met, verify that:\n"
+ << "- start_open <= start_close\n"
+ << "- end_open <= end_close\n"
+ << "- capacity > 0\n";
+ pgassert(!msg.get_error().empty());
+ return false;
+ }
+
+ pgassert(starting_site.opens() <= starting_site.closes());
+ pgassert(ending_site.opens() <= ending_site.closes());
+ pgassert(starting_site.is_start() && ending_site.is_end());
+ add_vehicle(vehicle, factor,
+ std::move(b_start), starting_site,
+ std::move(b_end), ending_site);
+ }
+ }
+ Identifiers<size_t> unused(m_trucks.size());
+ un_used = unused;
+ return true;
+}
+
+
+bool
+Fleet::is_fleet_ok() const {
+ ENTERING();
+ if (!msg.get_error().empty()) return false;
+ for (auto truck : m_trucks) {
+ if (!truck.is_ok()) {
+ msg.error << "Illegal values found on vehicle";
+ msg.log << "On vehicle " << truck.id() << " a condition is not met, verify that:\n"
+ << "- start_open <= start_close\n"
+ << "- end_open <= end_close\n"
+ << "- capacity > 0\n";
+ return false;
+ }
+
+ if (!(truck.start_site().is_start()
+ && truck.end_site().is_end())) {
+ pgassertwm(false, "should never pass through here");
+ msg.error << "Illegal values found on vehicle";
+ return false;
+ }
+ if (!truck.is_feasable()) {
+ msg.error << "Truck is not feasible";
+ return false;
+ }
+ }
+ EXITING();
+ return true;
+}
+
+/**
+ * Given an order,
+ * Cycle trhugh all the trucks to verify if the order can be served by
+ * at least one truck
+ */
+bool
+Fleet::is_order_ok(const Order &order) const {
+ for (const auto truck : m_trucks) {
+ if (!order.is_valid(truck.speed())) continue;
+ if (truck.is_order_feasable(order)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+Vehicle_pickDeliver&
+Fleet::operator[](size_t i) {
+ pgassert(i < m_trucks.size());
+ return m_trucks[i];
+}
+
+void
+Fleet::set_compatibles(const PD_Orders &orders) {
+ for (auto &truck : m_trucks) {
+ truck.set_compatibles(orders);
+ }
+}
+
+/*
+ * FRIENDS
+ */
+
+std::ostream&
+operator << (std::ostream &log, const Fleet &f) {
+ log << "fleet\n";
+ for (const auto v : f.m_trucks) {
+ log << v;
+ }
+ log << "end fleet\n";
+
+ return log;
+}
+
+
+} // namespace vrp
+} // namespace pgrouting
diff --git a/src/pickDeliver/src/initial_solution.cpp b/src/pickDeliver/src/initial_solution.cpp
index e8c3d08..72cd418 100644
--- a/src/pickDeliver/src/initial_solution.cpp
+++ b/src/pickDeliver/src/initial_solution.cpp
@@ -24,517 +24,106 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./initial_solution.h"
+#include "vrp/initial_solution.h"
#include <deque>
#include <algorithm>
#include <set>
-#include "./../../common/src/pgr_assert.h"
-#include "./solution.h"
-#include "./pgr_pickDeliver.h"
+#include "cpp_common/pgr_assert.h"
+#include "vrp/solution.h"
+#include "vrp/pgr_pickDeliver.h"
namespace pgrouting {
namespace vrp {
void
Initial_solution::invariant() const {
- std::set<size_t> orders(assigned);
-
- orders.insert(unassigned.begin(), unassigned.end());
-
- /* check the local book keeping is ok */
- pgassert(all_orders == orders);
-
/* this checks there is no order duplicated */
- pgassert(all_orders.size() == orders.size());
+ pgassert(all_orders == (assigned + unassigned));
+ pgassert((assigned * unassigned).empty());
}
Initial_solution::Initial_solution(
int kind,
- const Pgr_pickDeliver *p_problem) :
- Solution(p_problem) {
- for (const auto &order : problem->orders()) {
- unassigned.insert(order.id());
- }
- all_orders = unassigned;
- assigned.clear();
+ size_t number_of_orders) :
+ Solution(),
+ all_orders(number_of_orders),
+ unassigned(number_of_orders),
+ assigned() {
+ invariant();
+ pgassert(kind >= 0 && kind < 7);
switch (kind) {
case 0:
one_truck_all_orders();
break;
case 1:
- one_truck_per_order();
- break;
case 2:
- push_back_while_feasable();
- break;
case 3:
- push_front_while_feasable();
- break;
case 4:
- insert_while_feasable();
- break;
case 5:
- insert_while_compatibleJ();
- break;
case 6:
- insert_while_compatibleI();
+ do_while_foo(kind);
break;
+ default: pgassert(false);
}
- }
-
-
-void
-Initial_solution::fill_truck_while_compatibleJ(
- Vehicle_pickDeliver &truck,
- std::set<size_t> &possible_orders) {
- invariant();
- /*
- * Precondition:
- * truck.orders_in_vehicle intersection assigned == truck.orders_in_vehicle
- * (all orders in the truck are in the assigned set)
- */
- std::set<size_t> invariant_set;
- std::set_intersection(
- truck.orders_in_vehicle.begin(),
- truck.orders_in_vehicle.end(),
- assigned.begin(), assigned.end(),
- std::inserter(invariant_set, invariant_set.begin()));
- pgassert(invariant_set == truck.orders_in_vehicle);
-
- invariant_set.clear();
- /*
- * Precondition:
- * possible_orders intersection unassigned == possible_orders
- * (all possible orders are not in the assigned set)
- */
- std::set_intersection(possible_orders.begin(), possible_orders.end(),
- assigned.begin(), assigned.end(),
- std::inserter(invariant_set, invariant_set.begin()));
- pgassert(invariant_set.empty());
-
- /*
- * termination of recursion
- */
- if (possible_orders.empty())
- return;
-
- /*
- * CODE
- */
- auto best_order = *possible_orders.begin();
- size_t max_size(0);
-
- /*
- * In the possible orders set look for the order that
- * has more compatible orders with the current possible orders
- */
- for (auto &o : possible_orders) {
- auto other_orders = problem->orders()[o].m_compatibleJ;
- auto intersect_orders = problem->orders()[o].subsetJ(possible_orders);
- if (max_size < intersect_orders.size()) {
- max_size = intersect_orders.size();
- best_order = o;
- }
- }
- auto intersect_orders = problem->orders()[best_order].subsetJ(possible_orders);
-
- truck.insert(problem->orders()[best_order]);
- if (!truck.is_feasable()) {
- truck.erase(problem->orders()[best_order]);
- } else {
- assigned.insert(best_order);
- unassigned.erase(unassigned.find(best_order));
- }
-
- possible_orders.erase(possible_orders.find(best_order));
- fill_truck_while_compatibleJ(truck, possible_orders);
invariant();
}
-
-
-
-
-
-
-
-
-
-
-
-std::deque<size_t>
-Initial_solution::first_ordersIJ() const {
- /*
- * Sorted as:
- * (| {I}|, | {J}|)
- * orders: keep sorted based on the number of orders it is compatible with
- */
- std::deque<size_t> orders(unassigned.begin(), unassigned.end());
- const Pgr_pickDeliver *prob = problem;
- std::sort(orders.begin(), orders.end(), [&prob]
- (const size_t &lhs, const size_t &rhs) -> bool
- {return prob->orders()[lhs].m_compatibleJ.size()
- < prob->orders()[rhs].m_compatibleJ.size();
- });
- std::stable_sort(orders.begin(), orders.end(), [&prob]
- (const size_t &lhs, const size_t &rhs) -> bool
- {return prob->orders()[lhs].m_compatibleI.size()
- < prob->orders()[rhs].m_compatibleI.size();
- });
- return orders;
-}
-
-
-
-
-
void
-Initial_solution::insert_while_compatibleJ() {
- problem->log << "\nInitial_solution::insert_while_compatible\n";
+Initial_solution::do_while_foo(int kind) {
invariant();
+ pgassert(kind > 0 && kind < 7);
-
- size_t v_id(0);
- Vehicle_pickDeliver truck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
+ msg.log << "\nInitial_solution::do_while_foo\n";
+ Identifiers<size_t> notused;
+#if 0
+ bool out_of_trucks(true);
+#endif
while (!unassigned.empty()) {
- std::deque<size_t> orders(first_ordersIJ());
-
- if (truck.empty()) {
- auto order(problem->orders()[orders.front()]);
- truck.insert(order);
- assigned.insert(order.id());
- orders.pop_front();
- unassigned.erase(unassigned.find(order.id()));
- invariant();
-
- std::set<size_t> compatible_orders(
- problem->orders()[order.id()].m_compatibleJ);
- std::set<size_t> possible_orders;
- std::set_intersection(
- compatible_orders.begin(), compatible_orders.end(),
- unassigned.begin(), unassigned.end(),
- std::inserter(possible_orders, possible_orders.begin()));
-
-
- fill_truck_while_compatibleJ(truck, possible_orders);
- fleet.push_back(truck);
-
- if (unassigned.empty())
- break;
-
- Vehicle_pickDeliver newtruck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
- truck = newtruck;
- }
- invariant();
- }
-}
-
-
-
-void
-Initial_solution::fill_truck_while_compatibleI(
- Vehicle_pickDeliver &truck,
- std::set<size_t> &possible_orders) {
- invariant();
- /*
- * Precondition:
- * truck.orders_in_vehicle intersection assigned == truck.orders_in_vehicle
- * (all orders in the truck are in the assigned set)
- */
- std::set<size_t> invariant_set;
- std::set_intersection(truck.orders_in_vehicle.begin(), truck.orders_in_vehicle.end(),
- assigned.begin(), assigned.end(),
- std::inserter(invariant_set, invariant_set.begin()));
- pgassert(invariant_set == truck.orders_in_vehicle);
-
- invariant_set.clear();
- /*
- * Precondition:
- * possible_orders intersection unassigned == possible_orders
- * (all possible orders are not in the assigned set)
- */
- std::set_intersection(possible_orders.begin(), possible_orders.end(),
- assigned.begin(), assigned.end(),
- std::inserter(invariant_set, invariant_set.begin()));
- pgassert(invariant_set.empty());
-
- /*
- * termination of recursion
- */
- if (possible_orders.empty())
- return;
-
- /*
- * CODE
- */
- auto best_order = *possible_orders.begin();
- size_t max_size(0);
-
- /*
- * In the possible orders set look for the order that
- * has more compatible orders with the current possible orders
- */
- for (auto &o : possible_orders) {
- auto other_orders = problem->orders()[o].m_compatibleI;
- auto intersect_orders = problem->orders()[o].subsetI(possible_orders);
- if (max_size < intersect_orders.size()) {
- max_size = intersect_orders.size();
- best_order = o;
+ msg.log << unassigned.size() << " unassigned: " << unassigned << "\n";
+ msg.log << assigned.size() << " assigned:" << assigned << "\n";
+ auto current = unassigned.size();
+#if 0
+ auto truck = out_of_trucks?
+ trucks.get_truck(unassigned.front()) :
+ trucks.get_truck();
+#else
+ auto truck = trucks.get_truck(unassigned.front());
+#endif
+ msg.log << "got truck:" << truck.tau() << "\n";
+ /*
+ * kind 1 to 7 work with the same code structure
+ */
+ truck.do_while_feasable(kind, unassigned, assigned);
+ msg.log << unassigned.size() << " unassigned: " << unassigned << "\n";
+ msg.log << assigned.size() << " assigned:" << assigned << "\n";
+ msg.log << "current" << current << " unassigned: " << unassigned.size();
+ pgassertwm(current > unassigned.size(), msg.get_log().c_str());
+
+#if 0
+ if (truck.orders_in_vehicle().empty()) {
+ out_of_trucks = notused.has(truck.idx());
+ if (out_of_trucks) {
+ for (auto t : notused) {
+ trucks.release_truck(t);
+ }
+ }
+ notused += truck.idx();
+ continue;
}
- }
- auto intersect_orders = problem->orders()[best_order].subsetI(possible_orders);
-
- truck.insert(problem->orders()[best_order]);
- if (!truck.is_feasable()) {
- truck.erase(problem->orders()[best_order]);
- } else {
- assigned.insert(best_order);
- unassigned.erase(unassigned.find(best_order));
- }
-
- possible_orders.erase(possible_orders.find(best_order));
- fill_truck_while_compatibleI(truck, possible_orders);
- invariant();
-}
-
-
-
-
-
-
-
-
-
-
-
-std::deque<size_t>
-Initial_solution::first_ordersJI() const {
- /*
- * Sorted as:
- * (| {J}|, | {I}|)
- * orders: keep sorted based on the number of orders it is compatible with
- */
- std::deque<size_t> orders(unassigned.begin(), unassigned.end());
- const Pgr_pickDeliver *prob = problem;
- std::sort(orders.begin(), orders.end(), [&prob]
- (const size_t &lhs, const size_t &rhs) -> bool
- {return prob->orders()[lhs].m_compatibleI.size()
- < prob->orders()[rhs].m_compatibleI.size();
- });
- std::stable_sort(orders.begin(), orders.end(), [&prob]
- (const size_t &lhs, const size_t &rhs) -> bool
- {return prob->orders()[lhs].m_compatibleJ.size()
- < prob->orders()[rhs].m_compatibleJ.size();
- });
- return orders;
-}
-
-
-
-void
-Initial_solution::insert_while_compatibleI() {
- problem->log << "\nInitial_solution::insert_while_compatible\n";
- invariant();
-
-
- size_t v_id(0);
- Vehicle_pickDeliver truck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
-
- while (!unassigned.empty()) {
- std::deque<size_t> orders(first_ordersJI());
-
- if (truck.empty()) {
- auto order(problem->orders()[orders.front()]);
- truck.insert(order);
- assigned.insert(order.id());
- orders.pop_front();
- unassigned.erase(unassigned.find(order.id()));
- invariant();
-
- std::set<size_t> compatible_orders(
- problem->orders()[order.id()].m_compatibleI);
- std::set<size_t> possible_orders;
- std::set_intersection(
- compatible_orders.begin(), compatible_orders.end(),
- unassigned.begin(), unassigned.end(),
- std::inserter(possible_orders, possible_orders.begin()));
-
-
- fill_truck_while_compatibleI(truck, possible_orders);
- fleet.push_back(truck);
-
- if (unassigned.empty())
- break;
-
- Vehicle_pickDeliver newtruck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
- truck = newtruck;
- }
- invariant();
- }
-}
-
-
-
-
-
-void
-Initial_solution::insert_while_feasable() {
- invariant();
-
- size_t v_id(0);
- Vehicle_pickDeliver truck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
- problem->log << "\nInitial_solution::insert_while_feasable\n";
- while (!unassigned.empty()) {
- auto order(problem->orders()[*unassigned.begin()]);
-
- truck.insert(order);
-
- if (!truck.is_feasable()) {
- truck.erase(order);
- fleet.push_back(truck);
- Vehicle_pickDeliver newtruck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
- truck = newtruck;
- } else {
- assigned.insert(*unassigned.begin());
- unassigned.erase(unassigned.begin());
- }
-
- invariant();
- }
- if (truck.orders_size() !=0 ) {
+#endif
fleet.push_back(truck);
- }
-}
-
-void
-Initial_solution::push_front_while_feasable() {
- size_t v_id(0);
- Vehicle_pickDeliver truck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
- while (!unassigned.empty()) {
- auto order(problem->orders()[*unassigned.begin()]);
-
- truck.push_front(order);
- if (!truck.is_feasable()) {
- truck.pop_front();
- fleet.push_back(truck);
- Vehicle_pickDeliver newtruck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
- truck = newtruck;
- } else {
- assigned.insert(*unassigned.begin());
- unassigned.erase(unassigned.begin());
- }
-
- invariant();
- }
- if (truck.orders_size() !=0 ) {
- fleet.push_back(truck);
- }
-}
-
-void
-Initial_solution::push_back_while_feasable() {
- size_t v_id(0);
- Vehicle_pickDeliver truck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
- while (!unassigned.empty()) {
- auto order(problem->orders()[*unassigned.begin()]);
-
- truck.push_back(order);
- if (!truck.is_feasable()) {
- truck.pop_back();
- fleet.push_back(truck);
- Vehicle_pickDeliver newtruck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
- truck = newtruck;
- } else {
- assigned.insert(*unassigned.begin());
- unassigned.erase(unassigned.begin());
- }
-
invariant();
}
- if (truck.orders_size() !=0 ) {
- fleet.push_back(truck);
- }
-}
-
-
-
-void
-Initial_solution::one_truck_per_order() {
- size_t v_id(0);
- while (!unassigned.empty()) {
- auto order(problem->orders()[*unassigned.begin()]);
-
- Vehicle_pickDeliver truck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
- truck.push_back(order);
- fleet.push_back(truck);
-
- assigned.insert(*unassigned.begin());
- unassigned.erase(unassigned.begin());
-
- invariant();
- }
+ pgassertwm(true, msg.get_log().c_str());
+ pgassert(is_feasable());
+ invariant();
}
@@ -542,24 +131,21 @@ Initial_solution::one_truck_per_order() {
void
Initial_solution::one_truck_all_orders() {
- size_t v_id(0);
- Vehicle_pickDeliver truck(
- v_id++,
- problem->m_starting_site,
- problem->m_ending_site,
- problem->max_capacity,
- problem);
+ invariant();
+ msg.log << "\nInitial_solution::one_truck_all_orders\n";
+ auto truck = trucks.get_truck();
while (!unassigned.empty()) {
- auto order(problem->orders()[*unassigned.begin()]);
+ auto order(truck.orders()[*unassigned.begin()]);
truck.insert(order);
- assigned.insert(*unassigned.begin());
- unassigned.erase(unassigned.begin());
+ assigned += unassigned.front();
+ unassigned.pop_front();
invariant();
}
fleet.push_back(truck);
+ invariant();
}
diff --git a/src/pickDeliver/src/initial_solution.h b/src/pickDeliver/src/initial_solution.h
deleted file mode 100644
index f89c0a4..0000000
--- a/src/pickDeliver/src/initial_solution.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: initial_solution.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-#pragma once
-
-#include <set>
-#include <deque>
-#include "./solution.h"
-
-namespace pgrouting {
-namespace vrp {
-
-
-class Pgr_pickDeliver;
-
-
-class Initial_solution : public Solution {
- public:
- Initial_solution(
- int kind,
- const Pgr_pickDeliver *problem);
-
- void invariant() const;
-
- private:
- /*
- * one truck per order
- */
- void one_truck_per_order();
- void one_truck_all_orders();
- void push_back_while_feasable();
- void push_front_while_feasable();
- void insert_while_feasable();
-
- void insert_while_compatibleJ();
- void fill_truck_while_compatibleJ(
- Vehicle_pickDeliver &truck,
- std::set<size_t> &possible_orders);
- std::deque<size_t> first_ordersIJ() const;
-
- void insert_while_compatibleI();
- void fill_truck_while_compatibleI(
- Vehicle_pickDeliver &truck,
- std::set<size_t> &possible_orders);
- std::deque<size_t> first_ordersJI() const;
-
-
- private:
- std::set<size_t> all_orders;
- std::set<size_t> unassigned;
- std::set<size_t> assigned;
-};
-
-} // namespace vrp
-} // namespace pgRouting
diff --git a/src/pickDeliver/src/node.cpp b/src/pickDeliver/src/node.cpp
index 5eeb5e1..d687144 100644
--- a/src/pickDeliver/src/node.cpp
+++ b/src/pickDeliver/src/node.cpp
@@ -23,26 +23,25 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./node.h"
+#include "vrp/node.h"
+
+#include "cpp_common/pgr_assert.h"
namespace pgrouting {
namespace vrp {
-bool Node::isSamePos(const Node &other) const {
- return comparable_distance(other) == 0;
+std::ostream& operator << (std::ostream &log, const Node &node) {
+ node.print(log);
+ return log;
}
-#if 0
-double Node::travel_time_to(const Node &other) const {
- return distance(other);
-}
+void
+Node::print(std::ostream& os) const {
+ os << id()
+#ifndef NDEBUG
+ << "(" << idx() << ")"
#endif
-
-std::ostream& operator << (std::ostream &log, const Node &node) {
- log << node.m_original_id
- << "(" << node.m_id << ")"
- << "(" << node.m_point.x() << ", " << node.m_point.y() << ")";
- return log;
+ << " (x,y) = (" << m_point.x() << ", " << m_point.y() << ")";
}
double
@@ -52,30 +51,33 @@ Node::distance(const Node &other) const {
return sqrt(dx * dx + dy * dy);
}
+/**
+ * para[in] n bas node to be casted as Node
+ */
double
-Node::comparable_distance(const Node &other) const {
- auto dx = m_point.x() - other.m_point.x();
- auto dy = m_point.y() - other.m_point.y();
- return dx * dx + dy * dy;
+Node::distance(const Base_node *n) const {
+ return distance(*dynamic_cast<const Node*>(n));
}
-
-Node::Node(size_t id, int64_t original_id, double _x, double _y)
- : m_point(_x, _y),
- m_id(id),
- m_original_id(original_id) {
+/**
+ * @param[in] _idx index to a container
+ * @param[in] _id original identifier
+ * @param[in] _x coordinate value
+ * @param[in] _y coordinate value
+ */
+Node::Node(size_t _idx, int64_t _id, double _x, double _y)
+ : Base_node(_idx, _id),
+ m_point(_x, _y) {
}
bool
Node::operator ==(const Node &rhs) const {
if (&rhs == this) return true;
return
- (id() == rhs.id())
- && (original_id() == rhs.original_id())
+ (idx() == rhs.idx())
+ && (id() == rhs.id())
&& (m_point == rhs.m_point);
}
} // namespace vrp
} // namespace pgrouting
-
-
diff --git a/src/pickDeliver/src/node.h b/src/pickDeliver/src/node.h
deleted file mode 100644
index 25e790f..0000000
--- a/src/pickDeliver/src/node.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: node.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-#pragma once
-
-#include <string>
-// #include "./point.h"
-#include "../../common/src/xy_vertex.h"
-
-namespace pgrouting {
-namespace vrp {
-
-/*! \class Node
- * \brief The Node class defines a point in 2D space with an id.
- *
- * A Node is a point that defines a location in 2D space. It maintains
- * a user \c id and an internal \c nid along with its \c x, \c y location.
- * This is the base object that things like depots, customer locations, etc.
- * are built upon.
- *
- */
-
-// class Node : public Point {
-class Node {
- public:
- /** @name accessors */
- ///@ {
-
- inline size_t id() const {return m_id;}
- inline int64_t original_id() const {return m_original_id;}
-
- ///@}
-
- Node(size_t id, int64_t original_id, double _x, double _y);
-
-
- /** @name state */
- ///@ {
-
- bool isSamePos(const Node &other) const;
-#if 0
- double travel_time_to(const Node &node2) const;
-#endif
- friend std::ostream& operator << (std::ostream &log, const Node &node);
- bool operator ==(const Node &rhs) const;
-
- double distance(const Node &other) const;
- double comparable_distance(const Node &other) const;
-
-
- private:
- pgrouting::Point m_point;
- size_t m_id; ///< internal node number
- int64_t m_original_id; // /< user supplied node number
-};
-
-} // namespace vrp
-} // namespace pgrouting
diff --git a/src/pickDeliver/src/optimize.cpp b/src/pickDeliver/src/optimize.cpp
index 6ae2732..553a087 100644
--- a/src/pickDeliver/src/optimize.cpp
+++ b/src/pickDeliver/src/optimize.cpp
@@ -28,105 +28,160 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include <limits>
#include <set>
-#include "./../../common/src/pgr_assert.h"
+#include "cpp_common/pgr_assert.h"
-#include "./solution.h"
-#include "./optimize.h"
-#include "./pgr_pickDeliver.h"
+#include "vrp/solution.h"
+#include "vrp/book_keeping.h"
+#include "vrp/optimize.h"
+#include "vrp/pgr_pickDeliver.h"
namespace pgrouting {
namespace vrp {
Optimize::Optimize(
- int kind,
const Solution &old_solution) :
Solution(old_solution),
best_solution(old_solution) {
- switch (kind) {
- case 0:
- sort_by_duration();
- break;
- case 1:
- decrease_truck();
- break;
- case 2:
- move_duration_based();
- break;
- case 3:
- move_wait_time_based();
- break;
- case 4:
- inter_swap();
- break;
- }
+ pgassert(false);
+ decrease_truck();
+ inter_swap(fleet.size());
+ }
+
+Optimize::Optimize(
+ const Solution &old_solution,
+ size_t times) :
+ Solution(old_solution),
+ best_solution(old_solution) {
+ inter_swap(times);
+
this->fleet = best_solution.fleet;
- sort_by_duration();
- delete_empty_truck();
+ msg.log << tau("bestSol before sort by size");
+ sort_by_size();
+ msg.log << tau("bestSol after sort by size");
+ msg.log << tau();
}
void
-Optimize::inter_swap() {
- auto local_limit(fleet.size());
- size_t i(0);
- while (inter_swap(false) && (++i < local_limit)) {
+Optimize::inter_swap(size_t times) {
+ msg.log << tau("before sort by size");
+ sort_by_size();
+ msg.log << tau("before decrease");
+ decrease_truck();
+ msg.log << tau("after decrease");
+ sort_by_size();
+ msg.log << tau("after sort by size");
+
+ size_t i = 0;
+ while ((i++ < times) && inter_swap()) {
+ msg.log << tau("after inter swap");
+ msg.log << "\n***************************" << i;
+ std::rotate(fleet.begin(), fleet.begin() + 1, fleet.end());
+ msg.log << tau("before next cycle");
}
- i = 0;
- while (inter_swap(true) && (++i < local_limit)) {
- }
- sort_by_duration();
- delete_empty_truck();
- this->fleet = best_solution.fleet;
}
+/*
+ * ordering the trucks by number of orders it has
+ * - the truck with more orders wants to:
+ * - make less time
+ * - do more orders
+ * The inter_swap objective is to make the trucks with more orders
+ * - less time consuming
+ */
bool
-Optimize::inter_swap(bool reversed) {
-// problem->log << tau("before sort");
- sort_by_duration();
+Optimize::inter_swap() {
+ msg.log
+ << "\n" <<tau("before inter swap");
delete_empty_truck();
- save_if_best();
- if (reversed) {
- std::reverse(fleet.begin(), fleet.end());
- }
-// problem->log << tau("after sort");
- auto swapped = false;
- size_t from_pos(fleet.size()-1);
- while (from_pos > 1) {
- for (size_t to_pos = 0; to_pos < from_pos; ++to_pos) {
- swapped = swap_worse(from_pos, to_pos)? true : swapped;
- swapped = move_reduce_cost(from_pos, to_pos)? true : swapped;
+ auto swapped_f = false;
+ /*
+ * .. to ... from ....
+ */
+ for (auto &from : fleet) {
+ for (auto &to : fleet) {
+ if (&from == &to) break;
+
+#if 0
+ msg.log
+ << "\n to " << to.id()
+ << "from " << from.id();
+ auto swapped = false;
+#endif
+ swap_worse(to, from);
+ swapped_f = swap_order() || swapped_f;
+ move_reduce_cost(from, to);
+#if 0
+ msg.log << "++++++++" << p_swaps;
+#endif
}
- delete_empty_truck();
- --from_pos;
}
- return swapped;
+ while (!p_swaps.empty()) {
+ swapped_f = swap_order() || swapped_f;
+ }
+
+ msg.log
+ << "\n" <<tau("after");
+ delete_empty_truck();
+
+ return swapped_f;
}
+
+
+/*
+ * .. to ... from ....
+ */
bool
-Optimize::swap_worse(size_t from_pos, size_t to_pos) {
- pgassert(to_pos < from_pos);
- auto from_truck = fleet[from_pos];
- auto to_truck = fleet[to_pos];
- auto swapped(false);
- auto from_orders(from_truck.orders_in_vehicle);
- auto to_orders(to_truck.orders_in_vehicle);
- auto local_limit(from_orders.size() * to_orders.size() + 1);
-
- while (!from_orders.empty() && --local_limit > 0) {
- auto from_order(from_truck.get_worse_order(from_orders));
- from_orders.erase(from_order.id());
-
- while (!to_orders.empty()) {
- auto to_order(to_truck.get_worse_order(to_orders));
- to_orders.erase(to_order.id());
+Optimize::swap_worse(Vehicle_pickDeliver &to, Vehicle_pickDeliver &from) {
+#if 0
+ pgassert(from.orders_in_vehicle().size() <= to.orders_in_vehicle().size());
+#endif
+ auto from_truck = from;
+ auto to_truck = to;
+
+ auto swapped = false;
+
+#if 0
+ auto best_from_order = from_truck.orders_in_vehicle().front();
+ auto best_to_order = to_truck.orders_in_vehicle().front();
+#endif
+ for (auto from_orders = from_truck.orders_in_vehicle();
+ !from_orders.empty();
+ from_orders.pop_front()) {
+ auto from_order = from_truck.orders()[from_orders.front()];
+#if 0
+ pgassert(from_truck.has_order(from_order));
+ msg.log << "\n" << from_orders;
+ msg.log << "\n from " << from_order.idx()
+ << "," << from_order.pickup().original_id();
+ pgassert(from_truck.has_order(from_order));
+#endif
+ auto curr_from_duration = from_truck.duration();
+ pgassert(from_truck.has_order(from_order));
+
+ for (auto to_orders = to_truck.orders_in_vehicle();
+ !to_orders.empty();
+ to_orders.pop_front()) {
+ pgassert(from_truck.has_order(from_order));
+
+ auto to_order = to.orders()[to_orders.front()];
+#if 0
+ msg.log << "\n" << to_orders;
+ msg.log << "\n To " << to_order.idx();
+#endif
+ auto curr_to_duration = to_truck.duration();
/*
* delete from_order, and to order from their trucks
*/
- auto curr_from_duration(from_truck.duration());
- auto curr_to_duration(to_truck.duration());
-
+#if 0
+ pgassert(from_truck.has_order(from_order));
+ msg.log << "\n" << from_truck.tau();
+ msg.log << "\n" << from_order.idx();
+ pgassert(from_truck.has_order(from_order));
+#endif
from_truck.erase(from_order);
to_truck.erase(to_order);
@@ -140,54 +195,123 @@ Optimize::swap_worse(size_t from_pos, size_t to_pos) {
/*
* Can swap but:
* - only swap when the total duration is reduced
- * - or from_truck duration is reduced
+ * - or from_truck duration is reduced
*/
+#if 0
+ msg.log << "\n Can swap";
+ msg.log << "\n Curr_from_duration " << curr_from_duration;
+ msg.log << " Curr_to_duration " << curr_to_duration;
+ msg.log << "\n new_from_duration "
+ << from_truck.duration();
+ msg.log << " new_to_duration " << to_truck.duration();
+#endif
+ auto estimated_delta =
+ - (curr_from_duration + curr_to_duration)
+ + (to_truck.duration() + from_truck.duration());
- if (((from_truck.duration() + to_truck.duration())
- < (curr_from_duration + curr_to_duration))
- || (from_truck.duration() < curr_from_duration)) {
- problem->log
- << "\n Swap order " << from_order.id()
- << " from truck " << from_truck.id()
- << " with order " << to_order.id() << " of truck " << to_truck.id();
-#ifndef NDEBUG
- problem->dbg_log << "\nswappping before:";
- problem->dbg_log << "\n" << fleet[to_pos].tau();
- problem->dbg_log << "\n" << fleet[from_pos].tau();
+#if 1
+ auto estimated_duration = duration() + estimated_delta;
+
+ if (from_truck.duration() < curr_from_duration ||
+ estimated_delta < 0 ||
+ estimated_duration < best_solution.duration()) {
#endif
+ msg.log
+ << "\n Found Swap order "
+ << from_order.pickup().id()
+ << " from truck " << from_truck.idx()
+ << " with order " << to_order.pickup().id()
+ << " of truck " << to_truck.idx();
- swap_order(from_order, fleet[from_pos], to_order, fleet[to_pos]);
swapped = true;
- save_if_best();
- from_orders.insert(to_order.id());
-#ifndef NDEBUG
- problem->dbg_log << "\nswappping after:";
- problem->dbg_log << "\n" << fleet[to_pos].tau();
- problem->dbg_log << "\n" << fleet[from_pos].tau();
+#if 0
+ best_to_order = to_order.idx();
+ best_from_order = from_order.idx();
#endif
- break;
+ p_swaps.push(
+ Swap_info(
+ from,
+ to,
+ from_order.idx(),
+ to_order.idx(),
+ estimated_delta));
+#if 1
}
+#endif
}
- /*
- * wasn't swapped
- */
- to_truck = fleet[to_pos];
- from_truck = fleet[from_pos];
+ to_truck = to;
+ from_truck = from;
}
+ from_truck = from;
}
- return swapped;
+
+ return false && swapped;
+}
+
+
+bool
+Optimize::swap_order() {
+#if 0
+ msg.log << "++++++++" << p_swaps;
+#endif
+ while (!p_swaps.empty()) {
+ auto swap_data = p_swaps.top();
+ p_swaps.pop();
+ size_t from_pos = 0;
+ size_t to_pos = 0;
+
+ for (; from_pos < fleet.size()
+ && fleet[from_pos].idx() != swap_data.from_truck.idx()
+ ; ++from_pos) {
+ }
+ pgassert(from_pos < fleet.size());
+ for (; to_pos < fleet.size()
+ && fleet[to_pos].idx() != swap_data.to_truck.idx()
+ ; ++to_pos) {
+ }
+ pgassert(to_pos < fleet.size());
+
+ if (swap_order(
+ fleet[from_pos].orders()[swap_data.from_order], fleet[from_pos],
+ fleet[to_pos].orders()[swap_data.to_order], fleet[to_pos])) {
+ save_if_best();
+#if 0
+ msg.log
+ << "\n Swapping order "
+ << fleet[from_pos].orders()[
+ swap_data.from_order].pickup().original_id()
+ << " from truck " << fleet[from_pos].id()
+ << " with order "
+ << fleet[to_pos].orders()[
+ swap_data.to_order].pickup().original_id()
+ << " of truck " << fleet[to_pos].id();
+#endif
+#if 0
+ msg.log << "\nswappping after:";
+ msg.log << "\n" << fleet[to_pos].tau();
+ msg.log << "\n" << fleet[from_pos].tau();
+#endif
+ return true;
+ }
+ }
+ return false;
}
/*
* from_truck: position of the truck where the order is
* to truck: truck to put the order
*/
-void
+bool
Optimize::swap_order(
const Order from_order,
Vehicle_pickDeliver &from_truck,
const Order to_order,
Vehicle_pickDeliver &to_truck) {
+ if (!from_truck.has_order(from_order)
+ || !to_truck.has_order(to_order)) {
+ return false;
+ }
+
pgassert(from_truck.has_order(from_order));
pgassert(to_truck.has_order(to_order));
@@ -200,6 +324,28 @@ Optimize::swap_order(
pgassert(from_truck.has_order(to_order));
pgassert(to_truck.has_order(from_order));
+ return true;
+}
+
+void
+Optimize::sort_by_id() {
+ std::sort(fleet.begin(), fleet.end(), []
+ (const Vehicle_pickDeliver &lhs, const Vehicle_pickDeliver &rhs)
+ -> bool {
+ return lhs.orders_in_vehicle().size()
+ > rhs.orders_in_vehicle().size();
+ });
+}
+
+void
+Optimize::sort_by_size() {
+ sort_by_duration();
+ std::stable_sort(fleet.begin(), fleet.end(), []
+ (const Vehicle_pickDeliver &lhs, const Vehicle_pickDeliver &rhs)
+ -> bool {
+ return lhs.orders_in_vehicle().size()
+ > rhs.orders_in_vehicle().size();
+ });
}
void
@@ -213,28 +359,30 @@ Optimize::sort_by_duration() {
void
Optimize::delete_empty_truck() {
- while (fleet.back().empty()) {
- problem->log << "\nEmpty truck";
- fleet.pop_back();
- save_if_best();
- }
+ fleet.erase(std::remove_if(
+ fleet.begin(),
+ fleet.end(),
+ [](const Vehicle_pickDeliver &v){
+ return v.orders_in_vehicle().empty();}),
+ fleet.end());
save_if_best();
}
+#if 0
void
Optimize::move_duration_based() {
auto local_limit(fleet.size());
size_t i(0);
sort_by_duration();
- problem->log << tau("\nmove duration based");
+ msg.log << tau("\nmove duration based");
while (move_reduce_cost() && (++i < local_limit)) { }
delete_empty_truck();
i = 0;
sort_by_duration();
std::reverse(fleet.begin(), fleet.end());
- problem->log << tau("\nmove duration based");
+ msg.log << tau("\nmove duration based");
while (move_reduce_cost() && (++i < local_limit)) { }
sort_by_duration();
delete_empty_truck();
@@ -250,25 +398,27 @@ Optimize::move_wait_time_based() {
size_t i(0);
sort_for_move();
- problem->log << tau("\nmove wait_time based");
+ msg.log << tau("\nmove wait_time based");
while (move_reduce_cost() && (++i < local_limit)) { }
delete_empty_truck();
i = 0;
sort_for_move();
std::reverse(fleet.begin(), fleet.end());
- problem->log << tau("\nmove wait_time based");
+ msg.log << tau("\nmove wait_time based");
while (move_reduce_cost() && (++i < local_limit)) { }
sort_by_duration();
delete_empty_truck();
this->fleet = best_solution.fleet;
}
+#endif
+#if 0
/*
* On the current order of the fleet
* T1 .......Tn-1 Tn Tn+1...... Tsize
* Tn tries to move orders to trucks
- * T1 .... Tn-1
+ * T1 .... Tn-1
* So that it gets space for the orders given by
* Tn+1 .... Tsize
* On the first move possible it returns
@@ -277,29 +427,24 @@ Optimize::move_wait_time_based() {
*
* Returns true: when a move was possible
* Returns false: when a move was not possible
- */
+ */
bool
Optimize::move_reduce_cost() {
if (fleet.size() < 2) return false;
+ bool moved = false;
size_t from_pos(fleet.size() - 1);
while (from_pos > 1) {
for (size_t to_pos = 0; to_pos < from_pos; ++to_pos) {
- // problem->log << "\nmove_reduce_cost (" << fleet[from_pos].id() << ", " << fleet[to_pos].id() << ")";
- if (move_reduce_cost(from_pos, to_pos)) {
- if (fleet[from_pos].empty()) {
- fleet.erase(fleet.begin() + from_pos);
- save_if_best();
- }
- return true;
- }
+ moved = move_reduce_cost(from_pos, to_pos) || moved;
}
--from_pos;
}
- return false;
+ return moved;
}
+#endif
/*
* from_truck trying to make from_truck's duration smaller
@@ -310,49 +455,80 @@ Optimize::move_reduce_cost() {
* - number of truck remains the same
* - from_truk duration() can not get larger
* - the overall duration can get larger
- *
+ *
*/
bool
-Optimize::move_reduce_cost(size_t from_pos, size_t to_pos) {
- pgassert(to_pos < from_pos);
- auto from_truck = fleet[from_pos];
- auto to_truck = fleet[to_pos];
- auto moved(false);
-
- auto orders(from_truck.orders_in_vehicle);
- while (!orders.empty()) {
+Optimize::move_reduce_cost(
+ Vehicle_pickDeliver &from,
+ Vehicle_pickDeliver &to) {
+ auto from_truck = from;
+ auto to_truck = to;
+
+ /*
+ * don't move from a real truck to a phoney truck
+ */
+ if (!from_truck.is_phony() && to_truck.is_phony()) {
+ return false;
+ }
+#if 0
+ from.id() > to.id()
+ ? to : from;
+#endif
+ size_t from_pos = 0;
+ size_t to_pos = 0;
+
+ for (; from_pos < fleet.size()
+ && fleet[from_pos].idx() != from_truck.idx()
+ ; ++from_pos) {
+ }
+ pgassert(from_pos < fleet.size());
+ for (; to_pos < fleet.size()
+ && fleet[to_pos].idx() != to_truck.idx()
+ ; ++to_pos) {
+ }
+ pgassert(to_pos < fleet.size());
+
+ auto moved = false;
+
+ auto from_orders = from_truck.orders_in_vehicle();
+ while (!from_orders.empty()) {
/*
- * get the order that decreases the duration the most
- * (there is always a worse)
+ * removing an order decreases the duration
*/
- auto order = from_truck.get_worse_order(orders);
- orders.erase(order.id());
+ auto order = from_truck.orders()[from_orders.front()];
+ from_orders -= order.idx();
/*
- * insert it in the next truck
+ * insert it in the "to" truck
*/
to_truck.insert(order);
if (to_truck.is_feasable()) {
- problem->log
- << "\n Move order " << order.id()
- << " from truck " << from_truck.id()
- << " to truck " << to_truck.id();
+ msg.log
+ << "\n Move order " << order.pickup().id()
+ << " from truck " << from_truck.idx()
+ << " to truck " << to_truck.idx();
#ifndef NDEBUG
- problem->dbg_log << "\nMove before:";
- problem->dbg_log << "\n" << fleet[to_pos].tau();
- problem->dbg_log << "\n" << fleet[from_pos].tau();
+ msg.dbg_log << "\nMove before:";
+ msg.dbg_log << "\n" << fleet[to_pos].tau();
+ msg.dbg_log << "\n" << fleet[from_pos].tau();
#endif
+#if 1
from_truck.erase(order);
+#else
+ to_truck.insert(order);
move_order(order, fleet[from_pos], fleet[to_pos]);
+#endif
moved = true;
save_if_best();
#ifndef NDEBUG
- problem->dbg_log << "\nMove after:";
- problem->dbg_log << "\n" << fleet[to_pos].tau();
- problem->dbg_log << "\n" << fleet[from_pos].tau();
+ msg.dbg_log << "\nMove after:";
+ msg.dbg_log << "\n" << fleet[to_pos].tau();
+ msg.dbg_log << "\n" << fleet[from_pos].tau();
#endif
+ } else {
+ to_truck.erase(order);
}
}
return moved;
@@ -399,97 +575,72 @@ Optimize::sort_for_move() {
* Optimize decreasing truck
*
* - Objective: try to remove truck with less duration
+ * - Secundary objective, acts like a shake operation
*
- * Step 1: Sort the fleet, duration DESC
- * Step 2: grab an order from the back of the the fleet
- * Step 3: cycle the fleet & insert in best truck possible
*/
void
Optimize::decrease_truck() {
- bool decreased(true);
- while (decreased) {
- decreased = false;
- sort_by_duration();
- std::reverse(fleet.begin(), fleet.end());
- decrease_truck(fleet.size(), decreased);
+ bool decreased(false);
+ for (size_t i = 1; i < fleet.size(); ++i) {
+ decreased = decrease_truck(i) || decreased;
}
- this->fleet = best_solution.fleet;
+ if (decreased) {
+ delete_empty_truck();
+ save_if_best();
+ decrease_truck();
+ }
+ save_if_best();
}
-void
-Optimize::decrease_truck(size_t cycle, bool &decreased) {
- /* end recursion */
- if (cycle == 0) return;
+bool
+Optimize::decrease_truck(size_t cycle) {
- std::ostringstream err_log;
- err_log << " --- Cycle " << cycle << "\n";
+ auto position = cycle;
+ for (auto orders = fleet[position].orders_in_vehicle();
+ !orders.empty();
+ orders.pop_front()) {
+ /* Step 2: grab an order */
+ auto order = fleet[position].orders()[orders.front()];
+ pgassert(order.idx() == orders.front());
- /* the front truck move to back */
- std::rotate(fleet.begin(), fleet.begin() + 1, fleet.end());
- err_log << "\n after rotate" << tau();
- auto orders(fleet.back().orders_in_vehicle);
- while (!orders.empty()) {
- /* Step 2: grab an order */
- auto order(problem->orders()[*orders.begin()]);
- orders.erase(orders.begin());
- err_log << "\n truck with order: " << fleet.back().tau();
- err_log << "\nOrder" << order << "\n";
-
- /* Step 3: delete the order from the back of the fleet */
- pgassertwm(fleet.back().has_order(order), err_log.str());
- fleet.back().erase(order);
- pgassertwm(!fleet.back().has_order(order), err_log.str());
-
- /* Step 3: cycle the fleet & insert in best truck possible */
- /* current truck is tried last */
- err_log << " trying ";
- auto best_truck(fleet.size() - 1);
- auto current_duration(duration());
- auto min_delta_duration = (std::numeric_limits<double>::max)();
- size_t t_i(0);
- for (auto &truck : fleet) {
- truck.insert(order);
- if (!truck.is_feasable()) {
- err_log << "\n" << truck.tau();
+ /* Step 3:
+ * cycle the fleet
+ * insert in first truck possible
+ */
+
+ for (size_t i = 0; i < position; ++i) {
+ fleet[i].insert(order);
+ if (fleet[i].is_feasable()) {
+ /*
+ * delete the order from the current truck
+ */
+ fleet[position].erase(order);
+ break;
} else {
- err_log << "\n ******* success " << truck.tau() << "\n";
- auto delta_duration = duration()-current_duration;
- if (t_i != fleet.size() - 1
- && (delta_duration < min_delta_duration)) {
- min_delta_duration = delta_duration;
- best_truck = t_i;
- }
+ fleet[i].erase(order);
}
- truck.erase(order);
- ++t_i;
}
- fleet[best_truck].insert(order);
- save_if_best();
- }
-
- if (fleet.back().empty()) {
- decreased = true;
- fleet.pop_back();
- save_if_best();
}
- decrease_truck(--cycle, decreased);
+ return fleet[position].orders_in_vehicle().empty();
}
void
Optimize::save_if_best() {
if (duration() < best_solution.duration()) {
best_solution = (*this);
- problem->log << "\n*********** best by duration" << best_solution.cost_str();
+ msg.log << "\n*********** best by duration"
+ << best_solution.cost_str();
#ifndef NDEBUG
- problem->dbg_log << best_solution.tau("best by duration");
+ msg.dbg_log << best_solution.tau("best by duration");
#endif
}
if (fleet.size() < best_solution.fleet.size()) {
best_solution = (*this);
- problem->log << "\n*********** best by fleet size" << best_solution.cost_str();
+ msg.log << "\n*********** best by fleet size"
+ << best_solution.cost_str();
#ifndef NDEBUG
- problem->dbg_log << best_solution.tau("best by fleet size");
+ msg.dbg_log << best_solution.tau("best by fleet size");
#endif
}
}
diff --git a/src/pickDeliver/src/optimize.h b/src/pickDeliver/src/optimize.h
deleted file mode 100644
index b27166c..0000000
--- a/src/pickDeliver/src/optimize.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: optimize.cpp
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-#pragma once
-
-#include "./optimize.h"
-
-namespace pgrouting {
-namespace vrp {
-
-class Solution;
-class Pgr_pickDeliver;
-
-
-class Optimize : public Solution {
- public:
- Optimize(int kind,
- const Solution &solution);
-
- /* @brief decrease_truck
- *
- * Optimization by decreasing trucks
- */
- void decrease_truck();
- bool move_reduce_cost();
- void move_wait_time_based();
- void move_duration_based();
- void inter_swap();
- Solution best_solution;
- private:
- void decrease_truck(size_t, bool&);
- bool move_reduce_cost(size_t, size_t);
- void sort_for_move();
- void sort_by_duration();
- void delete_empty_truck();
-
- bool swap_worse(size_t from_pos, size_t to_pos);
- bool inter_swap(bool reversed);
-
- void move_order(
- Order order,
- Vehicle_pickDeliver &from_truck,
- Vehicle_pickDeliver &to_truck);
- void swap_order(
- Order from_order,
- Vehicle_pickDeliver &from_truck,
- Order to_order,
- Vehicle_pickDeliver &to_truck);
- void save_if_best();
-
-};
-
-} // namespace vrp
-} // namespace pgrouting
diff --git a/src/pickDeliver/src/order.cpp b/src/pickDeliver/src/order.cpp
index 101edd3..61e3226 100644
--- a/src/pickDeliver/src/order.cpp
+++ b/src/pickDeliver/src/order.cpp
@@ -24,70 +24,50 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
+#include "vrp/order.h"
-#include <set>
-#include "./../../common/src/pgr_assert.h"
-#include "./pgr_pickDeliver.h"
-#include "./order.h"
namespace pgrouting {
namespace vrp {
-std::set<size_t>
-Order::subsetI(const std::set<size_t> &I) const {
- std::set<size_t> intersect;
- std::set_intersection(m_compatibleI.begin(), m_compatibleI.end(),
- I.begin(), I.end(),
- std::inserter(intersect, intersect.begin()));
- return intersect;
+Identifiers<size_t>
+Order::subsetI(const Identifiers<size_t> &I) const {
+ return m_compatibleI * I;
}
-std::set<size_t>
-Order::subsetJ(const std::set<size_t> &J) const {
- std::set<size_t> intersect;
- std::set_intersection(m_compatibleJ.begin(), m_compatibleJ.end(),
- J.begin(), J.end(),
- std::inserter(intersect, intersect.begin()));
- return intersect;
+Identifiers<size_t>
+Order::subsetJ(const Identifiers<size_t> &J) const {
+ return m_compatibleJ * J;
}
-Order::Order(size_t p_id,
+Order::Order(
+ size_t p_idx, int64_t p_id,
const Vehicle_node &p_pickup,
- const Vehicle_node &p_delivery,
- const Pgr_pickDeliver *p_problem) :
- m_id(p_id),
- pickup_id(p_pickup.id()),
- delivery_id(p_delivery.id()),
- problem(p_problem) {
- pgassert(pickup().is_pickup());
- pgassert(delivery().is_delivery());
+ const Vehicle_node &p_delivery) :
+ Identifier(p_idx, p_id),
+ m_pickup(p_pickup),
+ m_delivery(p_delivery) {
}
std::ostream&
-operator << (std::ostream &log, const Order &order) {
- log << "\n\nOrder " << order.m_id << ":\n"
+operator<< (std::ostream &log, const Order &order) {
+ log << "\n\nOrder "
+ << static_cast<Identifier>(order) << ": \n"
<< "\tPickup: " << order.pickup() << "\n"
- << "\tDelivery: " << order.delivery() << "\n\n";
- if (order.delivery().is_partially_compatible_IJ(order.pickup())) {
- log << "\tis_partially_compatible_IJ: ";
- } else if (order.delivery().is_tight_compatible_IJ(order.pickup())) {
- log << "\tis_tight_compatible_IJ: ";
- } else if (order.delivery().is_waitTime_compatible_IJ(order.pickup())) {
- log << "\tis_waitTime_compatible_IJ: ";
- } else {
- pgassert(false);
- }
+ << "\tDelivery: " << order.delivery() << "\n\n"
+ << "\tTravel time: "
+ << order.pickup().travel_time_to(order.delivery(), 1);
log << "\nThere are | {I}| = "
<< order.m_compatibleI.size()
- << " -> order(" << order.id()
+ << " -> order(" << order.idx()
<< ") -> | {J}| = " << order.m_compatibleJ.size()
<< "\n\n {";
for (const auto o : order.m_compatibleI) {
log << o << ", ";
}
- log << "} -> " << order.id() << " -> {";
+ log << "} -> " << order.idx() << " -> {";
for (const auto o : order.m_compatibleJ) {
log << o << ", ";
}
@@ -99,20 +79,24 @@ operator << (std::ostream &log, const Order &order) {
const Vehicle_node&
-Order::delivery() const {return problem->node(delivery_id);}
+Order::delivery() const {
+ return m_delivery;
+}
const Vehicle_node&
-Order::pickup() const {return problem->node(pickup_id);}
+Order::pickup() const {
+ return m_pickup;
+}
bool
-Order::is_valid() const {
+Order::is_valid(double speed) const {
return
pickup().is_pickup()
&& delivery().is_delivery()
- /* P -> D */
- && delivery().is_compatible_IJ(pickup());
+ /* IS P -> D */
+ && delivery().is_compatible_IJ(pickup(), speed);
}
@@ -123,68 +107,52 @@ Order::is_valid() const {
* (*this) -> J
*
*/
-
void
-Order::setCompatibles() {
- for (const auto J : problem->orders()) {
- if (J.id() == id()) continue;
- if (J.isCompatibleIJ(*this)) {
- /*
- * this -> {J}
- */
- m_compatibleJ.insert(J.id());
- }
- if (this->isCompatibleIJ(J)) {
- /*
- * {J} -> this
- */
- m_compatibleI.insert(J.id());
- }
+Order::set_compatibles(const Order J, double speed) {
+ if (J.idx() == idx()) return;
+ if (J.isCompatibleIJ(*this, speed)) {
+ /*
+ * this -> {J}
+ */
+ m_compatibleJ += J.idx();
+ }
+ if (this->isCompatibleIJ(J, speed)) {
+ /*
+ * {J} -> this
+ */
+ m_compatibleI += J.idx();
}
}
+
/*
* True when
*
* I -> (*this)
*
*/
-
bool
-Order::isCompatibleIJ(const Order &I) const {
+Order::isCompatibleIJ(const Order &I, double speed) const {
/* this is true in all cases */
auto all_cases(
- pickup().is_compatible_IJ(I.pickup())
- && delivery().is_compatible_IJ(I.pickup()));
+ pickup().is_compatible_IJ(I.pickup(), speed)
+ && delivery().is_compatible_IJ(I.pickup(), speed));
/* case other(P) other(D) this(P) this(D) */
- auto case1(pickup().is_compatible_IJ(I.delivery())
- && delivery().is_compatible_IJ(I.delivery()));
+ auto case1(pickup().is_compatible_IJ(I.delivery(), speed)
+ && delivery().is_compatible_IJ(I.delivery(), speed));
/* case other(P) this(P) other(D) this(D) */
- auto case2(I.delivery().is_compatible_IJ(pickup())
- && delivery().is_compatible_IJ(I.delivery()));
+ auto case2(I.delivery().is_compatible_IJ(pickup(), speed)
+ && delivery().is_compatible_IJ(I.delivery(), speed));
/* case other(P) this(P) this(D) other(D) */
- auto case3(I.delivery().is_compatible_IJ(pickup())
- && I.delivery().is_compatible_IJ(delivery()));
+ auto case3(I.delivery().is_compatible_IJ(pickup(), speed)
+ && I.delivery().is_compatible_IJ(delivery(), speed));
return all_cases && (case1 || case2 || case3);
}
-
-#if 0
-bool
-Order::isOrderCompatibleEnd(const Vehicle_node &node) const {
- return false;
-}
-
-bool
-Order::isOrderCompatibleStart(const Vehicle_node &node) const {
- return false;
-}
-#endif
-
} // namespace vrp
} // namespace pgrouting
diff --git a/src/pickDeliver/src/order.h b/src/pickDeliver/src/order.h
deleted file mode 100644
index 37a3b65..0000000
--- a/src/pickDeliver/src/order.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: order.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-
-#pragma once
-
-#include <set>
-#include <iostream>
-#include "./vehicle_node.h"
-
-namespace pgrouting {
-namespace vrp {
-
-
-class Pgr_pickDeliver;
-class Initial_solution;
-
-
-class Order {
- public:
- friend class Initial_solution;
- friend class Pgr_pickDeliver;
-
- Order(size_t p_id,
- const Vehicle_node &p_pickup,
- const Vehicle_node &p_deliver,
- const Pgr_pickDeliver *p_problem);
-
- Order(const Order &) = default;
-
-
-
- /*************accesosrs*/
-
- inline size_t id() const {return m_id;}
- const Vehicle_node& delivery() const;
- const Vehicle_node& pickup() const;
- void setCompatibles();
-
- /*!
- * An order is valid when:
- * - The pickup is well formed
- * - The delivery is well formed
- * - isCompatibleIJ to go to delivery after inmediatly visiting pickup
- */
- bool is_valid() const;
-
-
- bool isCompatibleIJ(const Order &other) const;
-#if 0
- bool isOrderCompatibleStart(const Vehicle_node &node) const;
- bool isOrderCompatibleEnd(const Vehicle_node &node) const;
-#endif
- std::set<size_t> subsetJ(const std::set<size_t> &J) const;
- std::set<size_t> subsetI(const std::set<size_t> &I) const;
-
- friend std::ostream& operator << (std::ostream&, const Order &);
-
- // void moveOrder(const int toRoute);
- private:
- size_t m_id;
-
- size_t pickup_id;
- size_t delivery_id;
-
- /*
- * I = this
- * I -> {J}
- */
- std::set<size_t> m_compatibleJ;
-
- /*
- * J = this
- * {I} -> J
- */
- std::set<size_t> m_compatibleI;
-
-
- /* order belongs to this problem */
- const Pgr_pickDeliver *problem;
-};
-
-} // namespace vrp
-} // namespace pgrouting
diff --git a/src/pickDeliver/src/pd_orders.cpp b/src/pickDeliver/src/pd_orders.cpp
new file mode 100644
index 0000000..9047b39
--- /dev/null
+++ b/src/pickDeliver/src/pd_orders.cpp
@@ -0,0 +1,203 @@
+/*PGR-GNU*****************************************************************
+
+FILE: solution.cpp
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#include "vrp/pd_orders.h"
+
+#include <vector>
+#include <memory>
+#include <utility>
+
+#include "vrp/pgr_pickDeliver.h"
+#include "vrp/dnode.h"
+
+namespace pgrouting {
+namespace vrp {
+
+
+PD_Orders::PD_Orders(
+ const std::vector<PickDeliveryOrders_t> &pd_orders
+ ) {
+ build_orders(pd_orders);
+}
+
+
+void
+PD_Orders:: add_order(
+ const PickDeliveryOrders_t &order,
+ std::unique_ptr<Base_node> b_pick,
+ const Vehicle_node &pick,
+ std::unique_ptr<Base_node> b_drop,
+ const Vehicle_node &drop) {
+ problem->add_base_node(std::move(b_pick));
+ problem->add_base_node(std::move(b_drop));
+ problem->add_node(pick);
+ problem->add_node(drop);
+
+ /*
+ * add into an order
+ */
+ m_orders.push_back(
+ Order(m_orders.size(), order.id,
+ pick,
+ drop));
+}
+
+
+void
+PD_Orders::build_orders(
+ const std::vector<PickDeliveryOrders_t> &pd_orders
+ ) {
+ ENTERING();
+ for (const auto order : pd_orders) {
+ /*
+ * SAMPLE CORRECT INFORMATION
+ *
+ * id | demand | pick_x | pick_y | pick_open_t | pick_close_t | pick_service_t | deliver_x | deliver_y | deliver_open_t | deliver_open_t | deliver_close_t | deliver_service_t
+ * 1 | 10 | 35 | 69 | 448 | 505 | 90 | 45 | 68 | 912 | 967 | 90 | 35
+ */
+
+ if (problem->m_cost_matrix.empty()) {
+ /*
+ * Euclidean version
+ */
+ auto b_pick = create_b_pick<Node>(order, problem->node_id());
+ Vehicle_node pickup(
+ {problem->node_id()++, order, Tw_node::NodeType::kPickup});
+
+ auto b_drop = create_b_deliver<Node>(order, problem->node_id());
+ Vehicle_node delivery({
+ problem->node_id()++,
+ order,
+ Tw_node::NodeType::kDelivery});
+
+
+ add_order(order,
+ std::move(b_pick), pickup,
+ std::move(b_drop), delivery);
+ } else {
+ /*
+ * matrix version
+ */
+ msg.log << "pickup \n"
+ << "pick_node_id: " << order.pick_node_id
+ << "\n";
+
+ msg.log << "pickup \n"
+ << "deliver_node_id: " << order.deliver_node_id
+ << "\n";
+ auto b_pick = create_b_pick<Dnode>(order, problem->node_id());
+ Vehicle_node pickup(
+ {problem->node_id()++, order, Tw_node::NodeType::kPickup});
+
+ auto b_drop = create_b_deliver<Dnode>(order, problem->node_id());
+ Vehicle_node delivery({
+ problem->node_id()++,
+ order,
+ Tw_node::NodeType::kDelivery});
+
+ add_order(order,
+ std::move(b_pick), pickup,
+ std::move(b_drop), delivery);
+ }
+ } // for (creating orders)
+
+ EXITING();
+}
+
+bool
+PD_Orders::is_valid(double speed) const {
+ for (const auto &o : m_orders) {
+ if (!o.is_valid(speed)) {
+ return false;
+ }
+ pgassert(o.pickup().is_pickup());
+ pgassert(o.delivery().is_delivery());
+ /* P -> D */
+ pgassert(o.delivery().is_compatible_IJ(o.pickup(), speed));
+ }
+ return true;
+}
+
+Order&
+PD_Orders::operator[](size_t i) {
+ pgassert(i < m_orders.size());
+ return m_orders[i];
+}
+
+const Order&
+PD_Orders::operator[](size_t i) const {
+ pgassert(i < m_orders.size());
+ return m_orders[i];
+}
+
+void
+PD_Orders::set_compatibles(double speed) {
+ for (auto &I : m_orders) {
+ for (const auto J : m_orders) {
+ I.set_compatibles(J, speed);
+ }
+ }
+}
+
+size_t
+PD_Orders::find_best_J(
+ Identifiers<size_t> &within_this_set) const {
+ pgassert(!within_this_set.empty());
+ auto best_order = within_this_set.front();
+ size_t max_size = 0;
+
+
+ for (auto o : within_this_set) {
+ auto size_J = m_orders[o].subsetJ(within_this_set).size();
+ if (max_size < size_J) {
+ max_size = size_J;
+ best_order = o;
+ }
+ }
+ return best_order;
+}
+
+
+size_t
+PD_Orders::find_best_I(
+ Identifiers<size_t> &within_this_set) const {
+ pgassert(!within_this_set.empty());
+ auto best_order = within_this_set.front();
+ size_t max_size = 0;
+
+
+ for (auto o : within_this_set) {
+ auto size_I = m_orders[o].subsetI(within_this_set).size();
+ if (max_size < size_I) {
+ max_size = size_I;
+ best_order = o;
+ }
+ }
+ return best_order;
+}
+
+
+} // namespace vrp
+} // namespace pgrouting
diff --git a/src/pickDeliver/src/pd_problem.cpp b/src/pickDeliver/src/pd_problem.cpp
new file mode 100644
index 0000000..0e8d3b9
--- /dev/null
+++ b/src/pickDeliver/src/pd_problem.cpp
@@ -0,0 +1,46 @@
+/*PGR-GNU*****************************************************************
+
+FILE: pgr_pickDeliver.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+
+#include "vrp/pd_problem.h"
+
+namespace pgrouting {
+namespace vrp {
+
+Pgr_pickDeliver* PD_problem::problem;
+Pgr_messages PD_problem::msg;
+
+PD_problem::PD_problem(Pgr_pickDeliver* p_problem) {
+ PD_problem::problem = p_problem;
+ msg.clear();
+}
+
+PD_problem::PD_problem(const PD_problem &)
+ { }
+
+
+} // namespace vrp
+} // namespace pgrouting
+
diff --git a/src/pickDeliver/src/pgr_messages.cpp b/src/pickDeliver/src/pgr_messages.cpp
new file mode 100644
index 0000000..b7cb6c7
--- /dev/null
+++ b/src/pickDeliver/src/pgr_messages.cpp
@@ -0,0 +1,83 @@
+/*PGR-GNU*****************************************************************
+
+FILE: pgr_pickDeliver.h
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+
+#include <string>
+#include <sstream>
+#include "cpp_common/pgr_messages.h"
+
+namespace pgrouting {
+
+
+
+std::string
+Pgr_messages::get_log() const {
+ auto str = log.str();
+ return str;
+}
+
+std::string
+Pgr_messages::get_notice() const {
+ auto str = notice.str();
+ return str;
+}
+
+bool
+Pgr_messages::has_error() const {
+ return !error.str().empty();
+}
+
+std::string
+Pgr_messages::get_error() const {
+ auto str = error.str();
+ return str;
+}
+
+#ifndef NDEBUG
+std::string
+Pgr_messages::get_dbglog() const {
+ return dbg_log.str();
+}
+#endif
+
+void
+Pgr_messages::clear() {
+ log.str("");
+ log.clear();
+
+ notice.str("");
+ notice.clear();
+
+ error.str("");
+ error.clear();
+
+#ifndef NDEBUG
+ dbg_log.str("");
+ dbg_log.clear();
+#endif
+}
+
+
+} // namespace pgrouting
diff --git a/src/pickDeliver/src/pgr_pickDeliver.cpp b/src/pickDeliver/src/pgr_pickDeliver.cpp
index dab1044..90988fb 100644
--- a/src/pickDeliver/src/pgr_pickDeliver.cpp
+++ b/src/pickDeliver/src/pgr_pickDeliver.cpp
@@ -23,91 +23,124 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./pgr_pickDeliver.h"
+#include "vrp/pgr_pickDeliver.h"
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
+#include <utility>
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/pgr_assert.h"
+#include "cpp_common/pgr_assert.h"
-#include "./vehicle_node.h"
-#include "./vehicle_pickDeliver.h"
-#include "./order.h"
-#include "./solution.h"
-#include "./initial_solution.h"
-#include "./optimize.h"
+#include "vrp/vehicle_node.h"
+#include "vrp/vehicle_pickDeliver.h"
+#include "vrp/order.h"
+#include "vrp/pd_orders.h"
+#include "vrp/fleet.h"
+#include "vrp/solution.h"
+#include "vrp/initial_solution.h"
+#include "vrp/optimize.h"
namespace pgrouting {
namespace vrp {
+// TODO(vicky) delete this function
+bool
+Pgr_pickDeliver::nodesOK() const {
+ ENTERING();
+ if (m_nodes.empty() && m_base_nodes.empty()) return true;
+
+ pgassertwm(m_nodes.size() == m_base_nodes.size(), msg.get_log().c_str());
+ for (size_t i = 0; i < m_nodes.size() ; ++i) {
+ pgassertwm(m_nodes[i].id() == m_base_nodes[i]->id(),
+ msg.get_log().c_str());
+ pgassertwm(m_nodes[i].idx() == m_base_nodes[i]->idx(),
+ msg.get_log().c_str());
+ }
+ EXITING();
+ return true;
+}
Solution
-Pgr_pickDeliver::solve(const Solution init_solution) {
- Optimize solution(0, init_solution);
- solution.decrease_truck();
- solution.move_duration_based();
- solution.move_wait_time_based();
- solution.inter_swap();
- return solution.best_solution;
+Pgr_pickDeliver::optimize(const Solution solution) {
+ pgassert(false);
+ /*
+ * Optimize a solution
+ */
+#if 1
+ msg.log << "max_cycles: " << m_max_cycles << "\n";
+ Optimize opt_solution(solution, m_max_cycles);
+#else
+ Optimize opt_solution(solution, 1);
+#endif
+ msg.log << opt_solution.best_solution.tau("optimized");
+ return opt_solution.best_solution;
}
void
Pgr_pickDeliver::solve() {
-#if 0
- solutions.push_back(Initial_solution(0, this));
- solutions.push_back(Initial_solution(1, this));
+ auto initial_sols = solutions;
+
+ if (m_initial_id == 0) {
+ msg.log << "trying all \n";
+ for (int i = 1; i < 7; ++i) {
+ initial_sols.push_back(Initial_solution(i, m_orders.size()));
+ msg.log << "solution " << i << "\n" << initial_sols.back().tau();
+ // TODO(vicky) calculate the time it takes
+ msg.log << "Initial solution " << i
+ << " duration: " << initial_sols.back().duration();
+ }
+ } else {
+ msg.log << "only trying " << m_initial_id << "\n";
+ initial_sols.push_back(Initial_solution(m_initial_id, m_orders.size()));
+ // TODO(vicky) calculate the time it takes
+ msg.log << "Initial solution " << m_initial_id
+ << " duration: " << initial_sols[0].duration();
+ }
- solutions.push_back(solve(solutions.back()));
-#endif
-#if 0
- solutions.push_back(Initial_solution(2, this));
- solutions.push_back(solve(solutions.back()));
- solutions.push_back(Initial_solution(3, this));
- solutions.push_back(solve(solutions.back()));
-#endif
- solutions.push_back(Initial_solution(4, this));
- solutions.push_back(solve(solutions.back()));
-#if 0
- solutions.push_back(Initial_solution(5, this));
- solutions.push_back(solve(solutions.back()));
- solutions.push_back(Initial_solution(6, this));
- solutions.push_back(solve(solutions.back()));
-#endif
-
-#if 1
/*
* Sorting solutions: the best is at the back
*/
- std::sort(solutions.begin(), solutions.end(), []
+ pgassert(!initial_sols.empty());
+ std::sort(initial_sols.begin(), initial_sols.end(), []
(const Solution &lhs, const Solution &rhs) -> bool {
return rhs < lhs;
});
+
+#if 1
+ solutions.push_back(Optimize(initial_sols.back(), m_max_cycles));
+#else
+ solutions.push_back(initial_sols.back());
#endif
+ pgassert(!solutions.empty());
+
+ msg.log << "best solution duration = " << solutions.back().duration();
}
-void
-Pgr_pickDeliver::get_postgres_result(
- std::vector< General_vehicle_orders_t > &result) const {
- solutions.back().get_postgres_result(result);
+std::vector< General_vehicle_orders_t >
+Pgr_pickDeliver::get_postgres_result() const {
+ auto result = solutions.back().get_postgres_result();
General_vehicle_orders_t aggregates = {
/*
- * Vehicle id = -1 indicates its an aggregate row
+ * Vehicle id = -2 indicates its an aggregate row
*
* (twv, cv, fleet, wait, duration)
*/
- -1,
- solutions.back().twvTot(),
- solutions.back().cvTot(),
+ -2, // summary row on vehicle_number
+ solutions.back().twvTot(), // on vehicle_id
+ solutions.back().cvTot(), // on vehicle_seq
+ -1, // on order_id
+ -1, // on stop_id
+ -2, // on stop_type (gets increased later by one so it gets -1)
+ -1, // not accounting total loads
solutions.back().total_travel_time(),
- 0, // not accounting arrival_travel_time
+ -1, // not accounting arrival_travel_time
solutions.back().wait_time(),
solutions.back().total_service_time(),
solutions.back().duration(),
@@ -115,238 +148,184 @@ Pgr_pickDeliver::get_postgres_result(
result.push_back(aggregates);
+#ifndef NDEBUG
for (const auto sol : solutions) {
- log << sol.tau();
+ msg.log << sol.tau();
}
+#endif
+ return result;
}
-
-
-/***** Constructor *******/
-
+/** Constructor for the matrix version
+ *
+ */
Pgr_pickDeliver::Pgr_pickDeliver(
- const Customer_t *customers_data, size_t total_customers,
- int p_max_vehicles,
- double p_capacity,
- double p_speed,
+ const std::vector<PickDeliveryOrders_t> &pd_orders,
+ const std::vector<Vehicle_t> &vehicles,
+ const pgrouting::tsp::Dmatrix &cost_matrix,
+ double factor,
size_t p_max_cycles,
- std::string &error) :
- /* Set the depot to be the first ddata found */
- max_capacity(p_capacity),
- m_speed(p_speed),
+ int initial) :
+ PD_problem(this),
+ m_initial_id(initial),
m_max_cycles(p_max_cycles),
- max_vehicles(p_max_vehicles),
- m_starting_site({0, customers_data[0], Tw_node::NodeType::kStart, this}),
- m_ending_site({0, customers_data[0], Tw_node::NodeType::kEnd, this}),
- m_original_data(customers_data, customers_data + total_customers) {
- pgassert(m_speed > 0);
- pgassert(m_max_cycles > 0);
- pgassert(max_vehicles > 0);
- std::ostringstream tmplog;
- error = "";
-
- log << "\n *** Constructor of problem ***\n";
-
- /* sort data by id */
- std::sort(m_original_data.begin(), m_original_data.end(),
- [] (const Customer_t &c1, const Customer_t &c2)
- {return c1.id < c2.id;});
-
- /*
- * starting node:
- * id must be 0
- */
- if (m_original_data[0].id != 0) {
- error = "Depot node not found";
+ m_node_id(0),
+ m_nodes(),
+ m_base_nodes(),
+ m_cost_matrix(cost_matrix),
+ m_orders(pd_orders),
+ m_trucks(vehicles, factor) {
+ ENTERING();
+ pgassert(!pd_orders.empty());
+ pgassert(!vehicles.empty());
+ pgassert(!m_cost_matrix.empty());
+ pgassert(m_initial_id > 0 && m_initial_id < 7);
+ pgassert(nodesOK());
+
+ if (!msg.get_error().empty()) {
return;
}
- m_starting_site = Vehicle_node(
- {0, customers_data[0], Tw_node::NodeType::kStart, this});
- m_ending_site = Vehicle_node(
- {1, customers_data[0], Tw_node::NodeType::kEnd, this});
- if (!m_starting_site.is_start()) {
- log << "DEPOT" << m_starting_site;
- error = "Illegal values found on the starting site";
+ pgassert(m_trucks.msg.get_error().empty());
+ pgassert(msg.get_error().empty());
+
+ msg.log << "\n Checking fleet ...";
+ if (!m_trucks.is_fleet_ok()) {
+ pgassert(msg.get_error().empty());
+ pgassert(!m_trucks.msg.get_error().empty());
+ msg.error << m_trucks.msg.get_error();
return;
}
- pgassert(m_starting_site.is_start());
- pgassert(m_ending_site.is_end());
-
- m_nodes.push_back(m_starting_site);
- m_nodes.push_back(m_ending_site);
-
-
- ID order_id(0);
- ID node_id(2);
- for (const auto p : m_original_data) {
- /*
- * skip Starting site
- */
- if (p.id == 0) continue;
-
- /*
- * SAMPLE CORRECT INFORMATION
- *
- * The Pickup is 11 (pindex == 0)
- * The Deliver is 1 (dindex == 0)
- *
- * id | x | y | demand | etime | Ltime | Stime | pindex | dindex
- * 1 | 45 | 68 | -10 | 912 | 967 | 90 | 11 | 0
- * 11 | 35 | 69 | 10 | 448 | 505 | 90 | 0 | 1
- *
- */
-
- /*
- * skip deliveries
- */
- if (p.Dindex == 0) continue;
-
- /*
- * pickup is found
- */
- Tw_node pickup({node_id++, p, Tw_node::NodeType::kPickup, this});
- if (!pickup.is_pickup()) {
- log << "PICKUP" << pickup;
- tmplog << "Illegal values found on Pickup " << p.id;
- error = tmplog.str();
- return;
- }
- pgassert(pickup.is_pickup());
-
-
- /*
- * look for corresponding the delivery of the pickup
- */
- auto deliver_ptr = std::lower_bound(
- m_original_data.begin(),
- m_original_data.end(),
- p,
- [] (const Customer_t &delivery, const Customer_t &pick)
- -> bool
- {return delivery.id < pick.Dindex;});
-
- if (deliver_ptr == m_original_data.end()
- || deliver_ptr->id != p.Dindex) {
- tmplog << "For Pickup "
- << p.id
- << " the corresponding Delivery was not found";
- error = tmplog.str();
- return;
- }
+ msg.log << "fleet OK \n";
+#if 0
+ for (const auto t : m_trucks) {
+ msg.log << t << "\n";
+ }
+ for (const auto &o : m_orders) {
+ msg.log << o << "\n";
+ }
+#endif
- /*
- * delivery is found
- */
- Tw_node delivery(
- node_id++,
- (*deliver_ptr),
- Tw_node::NodeType::kDelivery,
- this);
- if (!delivery.is_delivery()) {
- log << "DELIVERY" << delivery;
- tmplog << "Illegal values found on Delivery "
- << deliver_ptr->id;
- error = tmplog.str();
+ /*
+ * check the (S, P, D, E) order on all vehicles
+ * stop when a feasible truck is found
+ */
+ msg.log << "\n Checking orders";
+ for (const auto &o : m_orders) {
+ if (!m_trucks.is_order_ok(o)) {
+ msg.error << "Order not feasible on any truck was found";
+ msg.log << "The order "
+ << o.id()
+ << " is not feasible on any truck";
+ msg.log << "\n" << o;
+#if 0
+ double old_speed(0);
+ for (auto t : m_trucks) {
+ if (old_speed == t.speed()) continue;
+ old_speed = t.speed();
+ msg.log << "****** With speed: " << t.speed() << "\n";
+ msg.log << t.start_site() << "\n";
+ msg.log << o.pickup() << "\n";
+ msg.log << "travel time to "
+ << t.start_site().travel_time_to(
+ o.pickup(), t.speed()) << "\n";
+
+ msg.log << o.delivery() << "\n";
+ msg.log << t.end_site() << "\n";
+ msg.log << "travel time to "
+ << t.start_site().travel_time_to(
+ o.delivery(), t.speed())
+ << "\n";
+ t.push_back(o);
+ }
+#endif
return;
}
- pgassert(delivery.is_delivery());
+ }
+ msg.log << "orders OK \n";
+ m_trucks.set_compatibles(m_orders);
+#if 0
+ msg.error << "foo";
+ for (const auto t : m_trucks) {
+ msg.log << t << "\n";
+ }
+#endif
+ EXITING();
+ } // constructor
- /*
- * add into an order & check the order
- */
- pickup.set_Did(delivery.id());
- delivery.set_Pid(pickup.id());
- m_nodes.push_back(pickup);
- m_nodes.push_back(delivery);
-
- m_orders.push_back(
- Order(order_id, node(node_id - 2),
- node(node_id - 1),
- this));
- pgassert(m_orders.back().pickup().is_pickup());
- pgassert(m_orders.back().delivery().is_delivery());
- pgassert(static_cast<Tw_node> (m_orders.back().pickup()) == pickup);
- /*
- * check the (S, P, D, E) order
- */
- {
- Vehicle_pickDeliver truck(
- order_id,
- m_starting_site,
- m_ending_site,
- max_capacity,
- this);
- truck.push_back(m_orders.back());
-
- if (!truck.is_feasable()) {
- log << truck << "\n";
- tmplog << "The (pickup, delivery) = ("
- << m_orders.back().pickup().original_id() << ", "
- << m_orders.back().delivery().original_id()
- << ") is not feasible";
- error = tmplog.str();
- return;
- }
- pgassert(truck.is_feasable());
- } // check
- ++order_id;
- } // for
+/***** Constructor for the eculedian version *******/
- /*
- * double check we found all orders
- */
- if (((m_orders.size() * 2 + 1) - m_original_data.size()) != 0) {
- error = "A pickup was not found";
+Pgr_pickDeliver::Pgr_pickDeliver(
+ const std::vector<PickDeliveryOrders_t> &pd_orders,
+ const std::vector<Vehicle_t> &vehicles,
+ double factor,
+ size_t p_max_cycles,
+ int initial) :
+ PD_problem(this),
+ m_initial_id(initial),
+ m_max_cycles(p_max_cycles),
+ m_node_id(0),
+ m_nodes(),
+ m_base_nodes(),
+ m_cost_matrix(),
+ m_orders(pd_orders),
+ m_trucks(vehicles, factor) {
+ ENTERING();
+ pgassert(!pd_orders.empty());
+ pgassert(!vehicles.empty());
+ pgassert(m_cost_matrix.empty());
+ pgassert(factor > 0);
+ pgassert(m_initial_id > 0 && m_initial_id < 7);
+
+ if (!msg.get_error().empty()) {
return;
}
- for (auto &o : m_orders) {
- o.setCompatibles();
- }
+ pgassert(m_trucks.msg.get_error().empty());
+ pgassert(msg.get_error().empty());
- for (auto o : m_orders) {
- log << o;
+ msg.log << "\n Checking fleet";
+ if (!m_trucks.is_fleet_ok()) {
+ msg.error << m_trucks.msg.get_error();
+ pgassert(!m_trucks.msg.get_error().empty());
+ return;
}
- } // constructor
+ pgassert(m_trucks.msg.get_error().empty());
-const Order
-Pgr_pickDeliver::order_of(const Vehicle_node &node) const {
- pgassert(node.is_pickup() || node.is_delivery());
- if (node.is_pickup()) {
- for (const auto o : m_orders) {
- if (o.pickup().id() == node.id()) {
- return o;
- }
- }
- }
- pgassert(node.is_delivery());
- for (const auto o : m_orders) {
- if (o.delivery().id() == node.id()) {
- return o;
- }
- }
#ifndef NDEBUG
- std::ostringstream err_log;
- err_log << "Order of" << node << " not found";
+ for (const auto t : m_trucks) {
+ msg.log << t << "\n";
+ }
+ for (const auto &o : m_orders) {
+ msg.log << o << "\n";
+ }
#endif
- pgassertwm(false, err_log.str());
- return m_orders[0];
-}
+ /*
+ * check the (S, P, D, E) order on all vehicles
+ * stop when a feasible truck is found
+ */
+ msg.log << "\n Checking orders";
+ for (const auto &o : m_orders) {
+ if (!m_trucks.is_order_ok(o)) {
+ msg.error << "Order not feasible on any truck was found";
+ msg.log << "The order "
+ << o.pickup().order()
+ << " is not feasible on any truck";
+ msg.log << "\n" << o;
+ return;
+ }
+ }
-const Vehicle_node&
-Pgr_pickDeliver::node(ID id) const {
- pgassert(id < m_nodes.size());
- pgassert(id == m_nodes[id].id());
- return m_nodes[id];
-}
+ m_trucks.set_compatibles(m_orders);
+ EXITING();
+ } // constructor
} // namespace vrp
diff --git a/src/pickDeliver/src/pgr_pickDeliver.h b/src/pickDeliver/src/pgr_pickDeliver.h
deleted file mode 100644
index 8a72137..0000000
--- a/src/pickDeliver/src/pgr_pickDeliver.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: pgr_pickDeliver.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-#pragma once
-
-
-#include "./../../common/src/pgr_types.h"
-
-#include <string>
-#include <vector>
-#include <sstream>
-
-#include "./vehicle_node.h"
-#include "./order.h"
-#include "./solution.h"
-
-namespace pgrouting {
-namespace vrp {
-
-
-class Optimize;
-class Initial_solution;
-
-class Pgr_pickDeliver {
- friend class Vehicle_pickDeliver;
- friend class Optimize;
- friend class Initial_solution;
- friend class Solution;
- typedef size_t ID;
-
- public:
- Pgr_pickDeliver(
- const Customer_t *c1, size_t total_customers,
- int VehicleLength,
- double capacity,
- double speed,
- size_t max_cycles,
- std::string &error);
-
- void solve();
-
- void get_postgres_result(
- std::vector< General_vehicle_orders_t > &result) const;
- /*****************/
-
- const Order order_of(const Vehicle_node &node) const;
- const Vehicle_node& node(ID id) const;
- const std::vector<Order>& orders() const {return m_orders;}
- double speed() const {return m_speed;}
-
- /*! \brief get_log
- *
- * \returns the current contents of the log and clears the log
- *
- */
- std::ostream& get_log(std::ostream &p_log) const {
- p_log << log.str() << "\n";
- log.str("");
- log.clear();
- return p_log;
- }
-
- Solution solve(const Solution init_solution);
- size_t max_cycles() const {return m_max_cycles;};
-
- private:
- double max_capacity;
- double m_speed;
- size_t m_max_cycles;
- int max_vehicles;
- Vehicle_node m_starting_site, m_ending_site;
- std::vector<Customer_t> m_original_data;
- std::vector<Vehicle_node> m_nodes;
- std::vector<Order> m_orders;
- std::vector<Solution> solutions;
- mutable std::ostringstream log;
-#ifndef NDEBUG
- mutable std::ostringstream dbg_log;
-#endif
-};
-
-} // namespace vrp
-} // namespace pgrouting
diff --git a/src/pickDeliver/src/pickDeliver.c b/src/pickDeliver/src/pickDeliver.c
index 8e10609..ad06478 100644
--- a/src/pickDeliver/src/pickDeliver.c
+++ b/src/pickDeliver/src/pickDeliver.c
@@ -27,51 +27,51 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/pgr_types.h"
-#include "./customers_input.h"
-
-#include "./pickDeliver_driver.h"
+#include "c_common/postgres_connection.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+#include "c_common/orders_input.h"
+#include "c_common/vehicles_input.h"
+#include "c_common/matrixRows_input.h"
+#include "drivers/pickDeliver/pickDeliver_driver.h"
PGDLLEXPORT Datum
pickDeliver(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(pickDeliver);
-/*********************************************************************/
-/* MODIFY AS NEEDED */
static
void
-process(char* customers_sql,
- int max_vehicles,
- double capacity,
- double speed,
+process(
+ char* pd_orders_sql,
+ char* vehicles_sql,
+ char* matrix_sql,
+ double factor,
int max_cycles,
+ int initial_solution_id,
+
General_vehicle_orders_t **result_tuples,
size_t *result_count) {
-
- if (max_vehicles <= 0) {
- elog(ERROR, "Illegal value in parameter: max_vehicles");
- (*result_count) = 0;
- (*result_tuples) = NULL;
- return;
- }
- if (capacity <= 0) {
- elog(ERROR, "Illegal value in parameter: capacity");
+ if (factor <= 0) {
+ ereport(ERROR,
+ (errcode(ERRCODE_INTERNAL_ERROR),
+ errmsg("Illegal value in parameter: factor"),
+ errhint("Value found: %f <= 0", factor)));
(*result_count) = 0;
(*result_tuples) = NULL;
return;
}
- if (speed <= 0) {
- elog(ERROR, "Illegal value in parameter: speed");
+
+ if (max_cycles < 0) {
+ elog(ERROR, "Illegal value in parameter: max_cycles");
(*result_count) = 0;
(*result_tuples) = NULL;
return;
}
- if (max_cycles <= 0) {
- elog(ERROR, "Illegal value in parameter: max_cycles");
+
+ if (initial_solution_id < 0 || initial_solution_id > 6) {
+ elog(ERROR, "Illegal value in parameter: initial");
(*result_count) = 0;
(*result_tuples) = NULL;
return;
@@ -79,63 +79,141 @@ process(char* customers_sql,
pgr_SPI_connect();
- PGR_DBG("Load data");
- Customer_t *customers_arr = NULL;
- size_t total_customers = 0;
- pgr_get_customers_data(customers_sql, &customers_arr, &total_customers);
+ PGR_DBG("Load orders");
+ PickDeliveryOrders_t *pd_orders_arr = NULL;
+ size_t total_pd_orders = 0;
+ pgr_get_pd_orders_with_id(pd_orders_sql,
+ &pd_orders_arr, &total_pd_orders);
+
+ PGR_DBG("Load vehicles");
+ Vehicle_t *vehicles_arr = NULL;
+ size_t total_vehicles = 0;
+ pgr_get_vehicles_with_id(vehicles_sql,
+ &vehicles_arr, &total_vehicles);
+ PGR_DBG("total vehicles %ld", total_vehicles);
+
+
+ for (size_t i = 0; i < total_pd_orders; i++) {
+ PGR_DBG("%ld %f pick %f %f %ld - "
+ "%f %f %f deliver %f %f %ld - %f %f %f ",
+ pd_orders_arr[i].id,
+ pd_orders_arr[i].demand,
+
+ pd_orders_arr[i].pick_x,
+ pd_orders_arr[i].pick_y,
+ pd_orders_arr[i].pick_node_id,
+
+ pd_orders_arr[i].pick_open_t,
+ pd_orders_arr[i].pick_close_t,
+ pd_orders_arr[i].pick_service_t,
+
+ pd_orders_arr[i].deliver_x,
+ pd_orders_arr[i].deliver_y,
+ pd_orders_arr[i].deliver_node_id,
+
+ pd_orders_arr[i].deliver_open_t,
+ pd_orders_arr[i].deliver_close_t,
+ pd_orders_arr[i].deliver_service_t);
+ }
+
+ for (size_t i = 0; i < total_vehicles; i++) {
+ PGR_DBG("%ld %f %f / %ld %f %f %f %f %f / %ld %f %f %f %f %f / %ld ",
+ vehicles_arr[i].id,
+ vehicles_arr[i].capacity,
+ vehicles_arr[i].speed,
+
+ vehicles_arr[i].start_node_id,
+ vehicles_arr[i].start_x,
+ vehicles_arr[i].start_y,
+ vehicles_arr[i].start_open_t,
+ vehicles_arr[i].start_close_t,
+ vehicles_arr[i].start_service_t,
+
+ vehicles_arr[i].end_node_id,
+ vehicles_arr[i].end_x,
+ vehicles_arr[i].end_y,
+ vehicles_arr[i].end_open_t,
+ vehicles_arr[i].end_close_t,
+ vehicles_arr[i].end_service_t,
+
+ vehicles_arr[i].cant_v);
+ }
+
+ PGR_DBG("load matrix");
+ Matrix_cell_t *matrix_cells_arr = NULL;
+ size_t total_cells = 0;
+ pgr_get_matrixRows(matrix_sql, &matrix_cells_arr, &total_cells);
+
- if (total_customers == 0) {
- PGR_DBG("No customers found");
+ if (total_pd_orders == 0 || total_vehicles == 0 || total_cells == 0) {
(*result_count) = 0;
(*result_tuples) = NULL;
pgr_SPI_finish();
return;
}
- PGR_DBG("Total %ld customers in query:", total_customers);
+ PGR_DBG("Total %ld orders in query:", total_pd_orders);
+ PGR_DBG("Total %ld vehicles in query:", total_vehicles);
+ PGR_DBG("Total %ld matrix cells in query:", total_cells);
+
PGR_DBG("Starting processing");
+ clock_t start_t = clock();
char *log_msg = NULL;
+ char *notice_msg = NULL;
char *err_msg = NULL;
+
do_pgr_pickDeliver(
- customers_arr, total_customers,
- max_vehicles,
- capacity,
- speed,
+ pd_orders_arr, total_pd_orders,
+ vehicles_arr, total_vehicles,
+ matrix_cells_arr, total_cells,
+
+ factor,
max_cycles,
+ initial_solution_id,
+
result_tuples,
result_count,
+
&log_msg,
+ ¬ice_msg,
&err_msg);
- PGR_DBG("Returning %ld tuples\n", *result_count);
- PGR_DBG("Returned log = %s\n", log_msg);
- if (log_msg) {
- elog(DEBUG1, "%s", log_msg);
- free(log_msg);
- }
- if (err_msg) {
- elog(ERROR, "%s", err_msg);
- free(err_msg);
+
+ time_msg("pgr_pickDeliver", start_t, clock());
+
+ if (err_msg && (*result_tuples)) {
+ pfree(*result_tuples);
+ (*result_count) = 0;
+ (*result_tuples) = NULL;
}
+#if 1
+ pgr_global_report(log_msg, notice_msg, err_msg);
+#else
+ pgr_global_report(notice_msg, log_msg, err_msg);
+#endif
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+ if (pd_orders_arr) pfree(pd_orders_arr);
+ if (vehicles_arr) pfree(vehicles_arr);
+ if (matrix_cells_arr) pfree(matrix_cells_arr);
- pfree(customers_arr);
pgr_SPI_finish();
}
-/* */
+
+
+
/******************************************************************************/
-PG_FUNCTION_INFO_V1(pickDeliver);
+
PGDLLEXPORT Datum
pickDeliver(PG_FUNCTION_ARGS) {
FuncCallContext *funcctx;
TupleDesc tuple_desc;
/**************************************************************************/
- /* MODIFY AS NEEDED */
- /* */
General_vehicle_orders_t *result_tuples = 0;
size_t result_count = 0;
- /* */
/**************************************************************************/
if (SRF_IS_FIRSTCALL()) {
@@ -143,27 +221,25 @@ pickDeliver(PG_FUNCTION_ARGS) {
funcctx = SRF_FIRSTCALL_INIT();
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
- /**********************************************************************/
- /* MODIFY AS NEEDED */
- /*
+ /**********************************************************************
orders_sql TEXT,
- max_vehicles INTEGER,
- capacity FLOAT,
- speed FLOAT,
- max_cycles INTEGER,
+ vehicles_sql TEXT,
+ matrix_cell_sql TEXT,
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
**********************************************************************/
- PGR_DBG("Calling process");
process(
text_to_cstring(PG_GETARG_TEXT_P(0)),
- PG_GETARG_INT32(1),
- PG_GETARG_FLOAT8(2),
+ text_to_cstring(PG_GETARG_TEXT_P(1)),
+ text_to_cstring(PG_GETARG_TEXT_P(2)),
PG_GETARG_FLOAT8(3),
PG_GETARG_INT32(4),
+ PG_GETARG_INT32(5),
&result_tuples,
&result_count);
- /* */
/*********************************************************************/
#if PGSQL_VERSION > 95
@@ -189,43 +265,53 @@ pickDeliver(PG_FUNCTION_ARGS) {
result_tuples = (General_vehicle_orders_t*) funcctx->user_fctx;
if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+ size_t call_cntr = funcctx->call_cntr;
+
+ /*********************************************************************
+
+ OUT seq INTEGER,
+ OUT vehicle_number INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT vehicle_seq INTEGER,
+ OUT order_id BIGINT,
+ OUT stop_type INT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
- /*********************************************************************/
- /* MODIFY!!!!! */
- /* This has to match you output otherwise the server crashes */
- /*
- OUT seq INTEGER,
- OUT vehicle_id INTEGER,
- OUT vehicle_seq INTEGER,
- OUT order_id BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT
*********************************************************************/
- values = palloc(9 * sizeof(Datum));
- nulls = palloc(9 * sizeof(bool));
+ size_t numb = 13;
+ values = palloc(numb * sizeof(Datum));
+ nulls = palloc(numb * sizeof(bool));
size_t i;
- for (i = 0; i < 9; ++i) {
+ for (i = 0; i < numb; ++i) {
nulls[i] = false;
}
- // postgres starts counting from 1
values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].vehicle_id);
- values[2] = Int32GetDatum(result_tuples[funcctx->call_cntr].vehicle_seq);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].order_id);
- values[4] = Float8GetDatum(result_tuples[funcctx->call_cntr].travelTime);
- values[5] = Float8GetDatum(result_tuples[funcctx->call_cntr].arrivalTime);
- values[6] = Float8GetDatum(result_tuples[funcctx->call_cntr].waitTime);
- values[7] = Float8GetDatum(result_tuples[funcctx->call_cntr].serviceTime);
- values[8] = Float8GetDatum(result_tuples[funcctx->call_cntr].departureTime);
+ values[1] = Int32GetDatum(result_tuples[call_cntr].vehicle_seq);
+ values[2] = Int64GetDatum(result_tuples[call_cntr].vehicle_id);
+ values[3] = Int32GetDatum(result_tuples[call_cntr].stop_seq);
+ values[4] = Int32GetDatum(result_tuples[call_cntr].stop_type + 1);
+ values[5] = Int64GetDatum(result_tuples[call_cntr].stop_id);
+ values[6] = Int64GetDatum(result_tuples[call_cntr].order_id);
+ values[7] = Float8GetDatum(result_tuples[call_cntr].cargo);
+ values[8] = Float8GetDatum(result_tuples[call_cntr].travelTime);
+ values[9] = Float8GetDatum(result_tuples[call_cntr].arrivalTime);
+ values[10] = Float8GetDatum(result_tuples[call_cntr].waitTime);
+ values[11] = Float8GetDatum(result_tuples[call_cntr].serviceTime);
+ values[12] = Float8GetDatum(result_tuples[call_cntr].departureTime);
/*********************************************************************/
diff --git a/src/pickDeliver/src/pickDeliverEuclidean.c b/src/pickDeliver/src/pickDeliverEuclidean.c
new file mode 100644
index 0000000..632bd00
--- /dev/null
+++ b/src/pickDeliver/src/pickDeliverEuclidean.c
@@ -0,0 +1,307 @@
+/*PGR-GNU*****************************************************************
+File: pickDeliverEuclidean.c
+
+Generated with Template by:
+Copyright (c) 2017 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+#include "c_common/postgres_connection.h"
+#include "utils/array.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+#include "c_common/orders_input.h"
+#include "c_common/vehicles_input.h"
+
+#include "drivers/pickDeliver/pickDeliverEuclidean_driver.h"
+
+PGDLLEXPORT Datum
+pickDeliverEuclidean(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(pickDeliverEuclidean);
+
+
+static
+void
+process(
+ char* pd_orders_sql,
+ char* vehicles_sql,
+ double factor,
+ int max_cycles,
+ int initial_solution_id,
+ General_vehicle_orders_t **result_tuples,
+ size_t *result_count) {
+ if (factor <= 0) {
+ ereport(ERROR,
+ (errcode(ERRCODE_INTERNAL_ERROR),
+ errmsg("Illegal value in parameter: factor"),
+ errhint("Value found: %f <= 0", factor)));
+ (*result_count) = 0;
+ (*result_tuples) = NULL;
+ return;
+ }
+
+ if (max_cycles < 0) {
+ ereport(ERROR,
+ (errcode(ERRCODE_INTERNAL_ERROR),
+ errmsg("Illegal value in parameter: max_cycles"),
+ errhint("Negative value found: max_cycles: %d ", max_cycles)));
+ (*result_count) = 0;
+ (*result_tuples) = NULL;
+ return;
+ }
+
+ if (initial_solution_id <= 0 || initial_solution_id > 6) {
+ elog(ERROR, "Illegal value in parameter: initial_sol");
+ (*result_count) = 0;
+ (*result_tuples) = NULL;
+ return;
+ }
+
+ pgr_SPI_connect();
+
+ PGR_DBG("Load orders");
+ PickDeliveryOrders_t *pd_orders_arr = NULL;
+ size_t total_pd_orders = 0;
+ pgr_get_pd_orders(pd_orders_sql,
+ &pd_orders_arr, &total_pd_orders);
+
+ PGR_DBG("Load vehicles");
+ Vehicle_t *vehicles_arr = NULL;
+ size_t total_vehicles = 0;
+ pgr_get_vehicles(vehicles_sql,
+ &vehicles_arr, &total_vehicles);
+ PGR_DBG("total vehicles %ld", total_vehicles);
+
+ for (size_t i = 0; i < total_pd_orders; i++) {
+ PGR_DBG("%ld %f pick %f %f %ld - "
+ "%f %f %f deliver %f %f %ld - %f %f %f ",
+ pd_orders_arr[i].id,
+ pd_orders_arr[i].demand,
+
+ pd_orders_arr[i].pick_x,
+ pd_orders_arr[i].pick_y,
+ pd_orders_arr[i].pick_node_id,
+
+ pd_orders_arr[i].pick_open_t,
+ pd_orders_arr[i].pick_close_t,
+ pd_orders_arr[i].pick_service_t,
+
+ pd_orders_arr[i].deliver_x,
+ pd_orders_arr[i].deliver_y,
+ pd_orders_arr[i].deliver_node_id,
+
+ pd_orders_arr[i].deliver_open_t,
+ pd_orders_arr[i].deliver_close_t,
+ pd_orders_arr[i].deliver_service_t);
+ }
+
+
+
+ for (size_t i = 0; i < total_vehicles; i++) {
+ PGR_DBG("%ld %f %f , start %f %f %f %f %f "
+ "end %f %f %f %f %f number %ld ",
+ vehicles_arr[i].id,
+ vehicles_arr[i].capacity,
+ vehicles_arr[i].speed,
+
+ vehicles_arr[i].start_x,
+ vehicles_arr[i].start_y,
+ vehicles_arr[i].start_open_t,
+ vehicles_arr[i].start_close_t,
+ vehicles_arr[i].start_service_t,
+
+ vehicles_arr[i].end_x,
+ vehicles_arr[i].end_y,
+ vehicles_arr[i].end_open_t,
+ vehicles_arr[i].end_close_t,
+ vehicles_arr[i].end_service_t,
+
+ vehicles_arr[i].cant_v);
+ }
+
+ if (total_pd_orders == 0 || total_vehicles == 0) {
+ (*result_count) = 0;
+ (*result_tuples) = NULL;
+ pgr_SPI_finish();
+ return;
+ }
+ PGR_DBG("Total %ld orders in query:", total_pd_orders);
+
+ PGR_DBG("Starting processing");
+ clock_t start_t = clock();
+ char *log_msg = NULL;
+ char *notice_msg = NULL;
+ char *err_msg = NULL;
+ do_pgr_pickDeliverEuclidean(
+ pd_orders_arr, total_pd_orders,
+ vehicles_arr, total_vehicles,
+
+ factor,
+ max_cycles,
+ initial_solution_id,
+
+ result_tuples,
+ result_count,
+
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+ time_msg("_pgr_pickDeliverEuclidean", start_t, clock());
+
+ if (err_msg && (*result_tuples)) {
+ pfree(*result_tuples);
+ (*result_count) = 0;
+ (*result_tuples) = NULL;
+ }
+
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+ if (pd_orders_arr) pfree(pd_orders_arr);
+ if (vehicles_arr) pfree(vehicles_arr);
+
+ pgr_SPI_finish();
+}
+/* */
+/******************************************************************************/
+
+PGDLLEXPORT Datum
+pickDeliverEuclidean(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**************************************************************************/
+ /* MODIFY AS NEEDED */
+ /* */
+ General_vehicle_orders_t *result_tuples = 0;
+ size_t result_count = 0;
+ /* */
+ /**************************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+ /**********************************************************************/
+ /* MODIFY AS NEEDED */
+ /*
+ orders_sql TEXT,
+ vehicles_sql INTEGER,
+ max_cycles INTEGER,
+ initial_id INTEGER,
+ **********************************************************************/
+
+ PGR_DBG("Calling process");
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+ text_to_cstring(PG_GETARG_TEXT_P(1)),
+ PG_GETARG_FLOAT8(2),
+ PG_GETARG_INT32(3),
+ PG_GETARG_INT32(4),
+ &result_tuples,
+ &result_count);
+
+ /* */
+ /*********************************************************************/
+
+#if PGSQL_VERSION > 95
+ funcctx->max_calls = result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE) {
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+ }
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (General_vehicle_orders_t*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+ size_t call_cntr = funcctx->call_cntr;
+
+ /*********************************************************************/
+ /* MODIFY!!!!! */
+ /* This has to match you output otherwise the server crashes */
+ /*
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT order_id BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ *********************************************************************/
+
+
+ size_t numb = 12;
+ values = palloc(numb * sizeof(Datum));
+ nulls = palloc(numb * sizeof(bool));
+
+ size_t i;
+ for (i = 0; i < numb; ++i) {
+ nulls[i] = false;
+ }
+
+
+ // postgres starts counting from 1
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int32GetDatum(result_tuples[call_cntr].vehicle_seq);
+ values[2] = Int64GetDatum(result_tuples[call_cntr].vehicle_id);
+ values[3] = Int32GetDatum(result_tuples[call_cntr].stop_seq);
+ values[4] = Int32GetDatum(result_tuples[call_cntr].stop_type + 1);
+ values[5] = Int64GetDatum(result_tuples[call_cntr].order_id);
+ values[6] = Float8GetDatum(result_tuples[call_cntr].cargo);
+ values[7] = Float8GetDatum(result_tuples[call_cntr].travelTime);
+ values[8] = Float8GetDatum(result_tuples[call_cntr].arrivalTime);
+ values[9] = Float8GetDatum(result_tuples[call_cntr].waitTime);
+ values[10] = Float8GetDatum(result_tuples[call_cntr].serviceTime);
+ values[11] = Float8GetDatum(result_tuples[call_cntr].departureTime);
+
+ /*********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ SRF_RETURN_DONE(funcctx);
+ }
+}
diff --git a/src/pickDeliver/src/pickDeliverEuclidean_driver.cpp b/src/pickDeliver/src/pickDeliverEuclidean_driver.cpp
new file mode 100644
index 0000000..9de42e8
--- /dev/null
+++ b/src/pickDeliver/src/pickDeliverEuclidean_driver.cpp
@@ -0,0 +1,162 @@
+/*PGR-GNU*****************************************************************
+File: pickDeliver_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ ********************************************************************PGR-GNU*/
+
+
+#include "drivers/pickDeliver/pickDeliverEuclidean_driver.h"
+
+#include <string.h>
+#include <sstream>
+#include <string>
+#include <deque>
+#include <vector>
+
+#include "vrp/pgr_pickDeliver.h"
+
+#include "cpp_common/pgr_assert.h"
+#include "cpp_common/pgr_alloc.hpp"
+
+/************************************************************
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ factor FLOAT,
+ capacity FLOAT,
+ max_cycles INTEGER,
+ ***********************************************************/
+void
+do_pgr_pickDeliverEuclidean(
+ PickDeliveryOrders_t *customers_arr,
+ size_t total_customers,
+
+ Vehicle_t *vehicles_arr,
+ size_t total_vehicles,
+
+ double factor,
+ int max_cycles,
+ int initial_solution_id,
+
+ General_vehicle_orders_t **return_tuples,
+ size_t *return_count,
+
+ char **log_msg,
+ char **notice_msg,
+ char **err_msg) {
+ std::ostringstream log;
+ std::ostringstream notice;
+ std::ostringstream err;
+ try {
+ std::ostringstream tmp_log;
+ *return_tuples = NULL;
+ *return_count = 0;
+
+ /*
+ * transform to C++ containers
+ */
+ std::vector<PickDeliveryOrders_t> orders(
+ customers_arr, customers_arr + total_customers);
+ std::vector<Vehicle_t> vehicles(
+ vehicles_arr, vehicles_arr + total_vehicles);
+
+ log << "Initialize problem\n";
+ pgrouting::vrp::Pgr_pickDeliver pd_problem(
+ orders,
+ vehicles,
+ factor,
+ max_cycles,
+ initial_solution_id);
+
+ err << pd_problem.msg.get_error();
+ if (!err.str().empty()) {
+ log.str("");
+ log.clear();
+ log << pd_problem.msg.get_error();
+ log << pd_problem.msg.get_log();
+ *log_msg = pgr_msg(log.str().c_str());
+ *err_msg = pgr_msg(err.str().c_str());
+ return;
+ }
+ log << pd_problem.msg.get_log();
+ log << "Finish Reading data\n";
+
+ try {
+ pd_problem.solve();
+ } catch (AssertFailedException &except) {
+ log << pd_problem.msg.get_log();
+ throw except;
+ } catch(...) {
+ log << "Caught unknown exception!";
+ throw;
+ }
+
+ log << pd_problem.msg.get_log();
+ log << "Finish solve\n";
+
+ auto solution = pd_problem.get_postgres_result();
+ log << pd_problem.msg.get_log();
+ log << "solution size: " << solution.size() << "\n";
+
+
+ if (!solution.empty()) {
+ (*return_tuples) = pgr_alloc(solution.size(), (*return_tuples));
+ int seq = 0;
+ for (const auto &row : solution) {
+ (*return_tuples)[seq] = row;
+ ++seq;
+ }
+ }
+ (*return_count) = solution.size();
+
+ log << pd_problem.msg.get_log();
+
+ pgassert(*err_msg == NULL);
+ *log_msg = log.str().empty()?
+ nullptr :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ nullptr :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ if (*return_tuples) free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception& except) {
+ if (*return_tuples) free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ if (*return_tuples) free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
diff --git a/src/pickDeliver/src/pickDeliver_driver.cpp b/src/pickDeliver/src/pickDeliver_driver.cpp
index 209d64e..4949419 100644
--- a/src/pickDeliver/src/pickDeliver_driver.cpp
+++ b/src/pickDeliver/src/pickDeliver_driver.cpp
@@ -28,7 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./pickDeliver_driver.h"
+#include "drivers/pickDeliver/pickDeliver_driver.h"
#include <string.h>
#include <sstream>
@@ -36,89 +36,147 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include <deque>
#include <vector>
-#include "./pgr_pickDeliver.h"
+#include "vrp/pgr_pickDeliver.h"
+#include "cpp_common/Dmatrix.h"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+#include "cpp_common/pgr_alloc.hpp"
-/************************************************************
- customers_sql TEXT,
- max_vehicles INTEGER,
- capacity FLOAT,
- max_cycles INTEGER,
- ***********************************************************/
void
do_pgr_pickDeliver(
- Customer_t *customers_arr,
+ PickDeliveryOrders_t customers_arr[],
size_t total_customers,
- int max_vehicles,
- double capacity,
- double speed,
+
+ Vehicle_t *vehicles_arr,
+ size_t total_vehicles,
+
+ Matrix_cell_t *matrix_cells_arr,
+ size_t total_cells,
+
+ double factor,
int max_cycles,
- General_vehicle_orders_t **result_tuples,
- size_t *total_count,
- char ** log_msg,
- char ** err_msg) {
+ int initial_solution_id,
+
+ General_vehicle_orders_t **return_tuples,
+ size_t *return_count,
+
+ char **log_msg,
+ char **notice_msg,
+ char **err_msg) {
std::ostringstream log;
+ std::ostringstream notice;
+ std::ostringstream err;
try {
- std::ostringstream tmp_log;
- *result_tuples = NULL;
- *total_count = 0;
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(total_customers);
+ pgassert(total_vehicles);
+ pgassert(total_vehicles);
+ pgassert(*return_count == 0);
+ pgassert(!(*return_tuples));
+ log << "do_pgr_pickDeliver\n";
+
+
+ /*
+ * transform to C++ containers
+ */
+ std::vector<PickDeliveryOrders_t> orders(
+ customers_arr, customers_arr + total_customers);
+
+ std::vector<Vehicle_t> vehicles(
+ vehicles_arr, vehicles_arr + total_vehicles);
+
+ std::vector <Matrix_cell_t> data_costs(
+ matrix_cells_arr,
+ matrix_cells_arr + total_cells);
+
+ pgrouting::tsp::Dmatrix cost_matrix(data_costs);
+
+ if (!cost_matrix.has_no_infinity()) {
+ err << "An Infinity value was found on the Matrix";
+ *err_msg = pgr_msg(err.str().c_str());
+ return;
+ }
- log << "Read data\n";
- std::string error("");
+ // TODO(vicky) wrap with a try and make a throw???
+ log << "Initialize problem\n";
pgrouting::vrp::Pgr_pickDeliver pd_problem(
- customers_arr,
- total_customers,
- max_vehicles,
- capacity,
- speed,
+ orders,
+ vehicles,
+ cost_matrix,
+ factor,
max_cycles,
- error);
- if (error.compare("")) {
- pd_problem.get_log(log);
- *log_msg = strdup(log.str().c_str());
- *err_msg = strdup(error.c_str());
+ initial_solution_id);
+
+ err << pd_problem.msg.get_error();
+ if (!err.str().empty()) {
+ log << pd_problem.msg.get_log();
+ *log_msg = pgr_msg(log.str().c_str());
+ *err_msg = pgr_msg(err.str().c_str());
return;
}
- pd_problem.get_log(tmp_log);
+ log << pd_problem.msg.get_log();
log << "Finish Reading data\n";
+ pd_problem.msg.clear();
+
try {
pd_problem.solve();
} catch (AssertFailedException &except) {
- pd_problem.get_log(log);
+ log << pd_problem.msg.get_log();
+ pd_problem.msg.clear();
throw except;
+ } catch(...) {
+ log << "Caught unknown exception!";
+ throw;
}
- pd_problem.get_log(log);
+
+ log << pd_problem.msg.get_log();
log << "Finish solve\n";
+ pd_problem.msg.clear();
- std::vector<General_vehicle_orders_t> solution;
- pd_problem.get_postgres_result(solution);
- pd_problem.get_log(tmp_log);
+ auto solution = pd_problem.get_postgres_result();
+ log << pd_problem.msg.get_log();
+ pd_problem.msg.clear();
log << "solution size: " << solution.size() << "\n";
- (*result_tuples) = pgr_alloc(solution.size(), (*result_tuples));
- int seq = 0;
- for (const auto &row : solution) {
- (*result_tuples)[seq] = row;
- ++seq;
+ if (!solution.empty()) {
+ (*return_tuples) = pgr_alloc(solution.size(), (*return_tuples));
+ int seq = 0;
+ for (const auto &row : solution) {
+ (*return_tuples)[seq] = row;
+ ++seq;
+ }
}
- (*total_count) = solution.size();
-
- pd_problem.get_log(log);
- *log_msg = strdup(log.str().c_str());
+ (*return_count) = solution.size();
+
+ pgassert(*err_msg == NULL);
+ *log_msg = log.str().empty()?
+ nullptr :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ nullptr :
+ pgr_msg(notice.str().c_str());
} catch (AssertFailedException &except) {
- log << except.what() << "\n";
- *err_msg = strdup(log.str().c_str());
+ if (*return_tuples) free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
} catch (std::exception& except) {
- log << except.what() << "\n";
- *err_msg = strdup(log.str().c_str());
+ if (*return_tuples) free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
} catch(...) {
- log << "Caught unknown exception!\n";
- *err_msg = strdup(log.str().c_str());
+ if (*return_tuples) free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
}
}
-
diff --git a/src/pickDeliver/src/pickDeliver_driver.h b/src/pickDeliver/src/pickDeliver_driver.h
deleted file mode 100644
index 037b69e..0000000
--- a/src/pickDeliver/src/pickDeliver_driver.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: pickDeliver_driver.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-#pragma once
-#ifndef SRC_PICKDELIVER_SRC_PICKDELIVER_DRIVER_H_
-#define SRC_PICKDELIVER_SRC_PICKDELIVER_DRIVER_H_
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /*********************************************************
- orders_sql TEXT,
- max_vehicles INTEGER,
- capacity FLOAT,
- max_cycles INTEGER,
- ********************************************************/
- void do_pgr_pickDeliver(
- Customer_t *customers_arr, size_t total_customers,
- int max_vehicles,
- double capacity,
- double speed,
- int max_cycles,
- General_vehicle_orders_t **return_tuples,
- size_t *return_count,
- char ** log_msg,
- char ** err_msg);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_PICKDELIVER_SRC_PICKDELIVER_DRIVER_H_
diff --git a/src/pickDeliver/src/solution.cpp b/src/pickDeliver/src/solution.cpp
index 9bb9557..aca7dd3 100644
--- a/src/pickDeliver/src/solution.cpp
+++ b/src/pickDeliver/src/solution.cpp
@@ -23,29 +23,31 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
+#include "vrp/solution.h"
-#include <string>
#include <vector>
+#include <string>
+#include <algorithm>
-#include "./solution.h"
-#include "./pgr_pickDeliver.h"
+#include "vrp/pgr_pickDeliver.h"
+#include "c_types/pickDeliver/general_vehicle_orders_t.h"
namespace pgrouting {
namespace vrp {
-
-void
-Solution::get_postgres_result(
- std::vector< General_vehicle_orders_t > &result) const {
+std::vector<General_vehicle_orders_t>
+Solution::get_postgres_result() const {
+ std::vector<General_vehicle_orders_t> result;
/* postgres numbering starts with 1 */
int i(1);
for (const auto truck : fleet) {
- std::vector< General_vehicle_orders_t > data;
- truck.get_postgres_result(i, data);
+ std::vector<General_vehicle_orders_t> data =
+ truck.get_postgres_result(i);
result.insert(result.end(), data.begin(), data.end());
++i;
}
+ return result;
}
@@ -160,6 +162,15 @@ Solution::tau(const std::string &title) const {
return log.str();
}
+void
+Solution::sort_by_id() {
+ std::sort(fleet.begin(), fleet.end(), []
+ (const Vehicle_pickDeliver &lhs, const Vehicle_pickDeliver &rhs)
+ -> bool {
+ return lhs.idx() < rhs.idx();
+ });
+}
+
std::ostream&
operator << (std::ostream &log, const Solution &solution) {
for (const auto vehicle : solution.fleet) {
@@ -220,5 +231,16 @@ Solution::operator<(const Solution &s_rhs) const {
return false;
}
+Solution::Solution() :
+ EPSILON(0.0001),
+ trucks(problem->trucks())
+{
+ ENTERING();
+ for (const auto &t : trucks) {
+ msg.log << t.tau() << "\n";
+ }
+ EXITING();
+}
+
} // namespace vrp
} // namespace pgrouting
diff --git a/src/pickDeliver/src/solution.h b/src/pickDeliver/src/solution.h
deleted file mode 100644
index 786561c..0000000
--- a/src/pickDeliver/src/solution.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: solution.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-#pragma once
-
-#include <deque>
-#include <tuple>
-#include <string>
-#include <vector>
-
-#include "./vehicle_pickDeliver.h"
-#include "./order.h"
-
-namespace pgrouting {
-namespace vrp {
-
-
-class Pgr_pckDeliver;
-class Optimize;
-
-class Solution {
- friend class Optimize;
- protected:
- double EPSILON;
- std::deque<Vehicle_pickDeliver> fleet;
-
- /* this solution belongs to this problem*/
- const Pgr_pickDeliver *problem;
-
-
- public:
- void get_postgres_result(
- std::vector< General_vehicle_orders_t > &result) const;
-
-
- /* @brief constructor
- *
- * @params [in] p_problem \t pointer to problem
- *
- */
- explicit Solution(const Pgr_pickDeliver *p_problem) :
- EPSILON(0.0001),
- problem(p_problem)
- {};
-
-
- /* @brief move constructor */
- Solution(const Solution && sol) :
- EPSILON(0.0001),
- fleet(std::move(sol.fleet)),
- problem(std::move(sol.problem))
- {};
-
- /* @brief copy constructor */
- Solution(const Solution &sol) :
- EPSILON(0.0001),
- fleet(sol.fleet),
- problem(sol.problem)
- {};
-
- /* @brief move assignment */
- Solution& operator = (const Solution && sol) {
- EPSILON = 0.0001,
- fleet = sol.fleet;
- return *this;
- };
-
- /* @brief copy assignment */
- Solution& operator = (const Solution& sol) {
- EPSILON = 0.0001,
- fleet = sol.fleet;
- return *this;
- };
-
- std::string cost_str() const;
- std::string tau(const std::string &title = "Tau") const;
- friend std::ostream& operator<<(
- std::ostream &log,
- const Solution &solution);
- bool operator <(const Solution &s_rhs) const;
-
- bool is_feasable() const;
- double duration() const;
- double wait_time() const;
- double total_travel_time() const;
- double total_service_time() const;
- int twvTot() const;
- int cvTot() const;
- size_t fleet_size() const {return fleet.size();}
-
- /*
- * Cost in terms of a tuple
- * <0> time window violations
- * <1> capacity violations
- * <2> fleet size TODO
- * <3> wait_time
- * <4> duration
- */
- Vehicle::Cost cost() const;
-};
-
-
-} // namespace vrp
-} // namespace pgrouting
diff --git a/src/pickDeliver/src/tw_node.cpp b/src/pickDeliver/src/tw_node.cpp
index af3cc4d..73dc4b1 100644
--- a/src/pickDeliver/src/tw_node.cpp
+++ b/src/pickDeliver/src/tw_node.cpp
@@ -23,23 +23,31 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./tw_node.h"
+#include "vrp/tw_node.h"
#include <limits>
#include <string>
-#include "./../../common/src/pgr_assert.h"
+#include "cpp_common/pgr_assert.h"
+#include "vrp/pgr_pickDeliver.h"
-#include "./pgr_pickDeliver.h"
namespace pgrouting {
namespace vrp {
double
-Tw_node::travel_time_to(const Node &other) const {
- pgassert(problem->speed() > 0);
- return distance(other) / problem->speed();
+Tw_node::travel_time_to(const Tw_node &to, double speed) const {
+ /** TODO(vicky)
+ * shall call Node or Dnode
+ * static cast won't work I think
+ *
+ */
+ auto from = problem->m_base_nodes[idx()].get();
+ auto destination = problem->m_base_nodes[to.idx()].get();
+ pgassert(speed != 0);
+ /*! @todo TODO evaluate with matrix also*/
+ return from->distance(destination) / speed;
}
@@ -47,22 +55,22 @@ Tw_node::travel_time_to(const Node &other) const {
* I -> J = (*this)
*/
double
-Tw_node::arrival_j_opens_i(const Tw_node &I) const {
+Tw_node::arrival_j_opens_i(const Tw_node &I, double speed) const {
if (m_type == kStart) return (std::numeric_limits<double>::max)();
- return I.opens() + I.service_time() + I.travel_time_to(*this);
+ return I.opens() + I.service_time() + I.travel_time_to(*this, speed);
}
double
-Tw_node::arrival_j_closes_i(const Tw_node &I) const {
+Tw_node::arrival_j_closes_i(const Tw_node &I, double speed) const {
if (m_type == kStart) return (std::numeric_limits<double>::max)();
- return I.closes() + I.service_time() + I.travel_time_to(*this);
+ return I.closes() + I.service_time() + I.travel_time_to(*this, speed);
}
bool
-Tw_node::is_compatible_IJ(const Tw_node &I) const {
+Tw_node::is_compatible_IJ(const Tw_node &I, double speed) const {
/*
* I /-> kStart
*/
@@ -72,37 +80,39 @@ Tw_node::is_compatible_IJ(const Tw_node &I) const {
*/
if (I.m_type == kEnd) return false;
- return !is_late_arrival(arrival_j_opens_i(I));
+ return !is_late_arrival(arrival_j_opens_i(I, speed));
}
bool
-Tw_node::is_partially_compatible_IJ(const Tw_node &I) const {
+Tw_node::is_partially_compatible_IJ(const Tw_node &I, double speed) const {
return
- is_compatible_IJ(I)
- && !is_early_arrival(arrival_j_opens_i(I))
- && is_late_arrival(arrival_j_closes_i(I));
+ is_compatible_IJ(I, speed)
+ && !is_early_arrival(arrival_j_opens_i(I, speed))
+ && is_late_arrival(arrival_j_closes_i(I, speed));
}
bool
-Tw_node::is_tight_compatible_IJ(const Tw_node &I) const {
+Tw_node::is_tight_compatible_IJ(const Tw_node &I, double speed) const {
return
- is_compatible_IJ(I)
- && !is_early_arrival(arrival_j_opens_i(I))
- && !is_late_arrival(arrival_j_closes_i(I));
+ is_compatible_IJ(I, speed)
+ && !is_early_arrival(arrival_j_opens_i(I, speed))
+ && !is_late_arrival(arrival_j_closes_i(I, speed));
}
bool
-Tw_node::is_partially_waitTime_compatible_IJ(const Tw_node &I) const {
+Tw_node::is_partially_waitTime_compatible_IJ(
+ const Tw_node &I,
+ double speed) const {
return
- is_compatible_IJ(I)
- && is_early_arrival(arrival_j_opens_i(I));
+ is_compatible_IJ(I, speed)
+ && is_early_arrival(arrival_j_opens_i(I, speed));
}
bool
-Tw_node::is_waitTime_compatible_IJ(const Tw_node &I) const {
+Tw_node::is_waitTime_compatible_IJ(const Tw_node &I, double speed) const {
return
- is_compatible_IJ(I)
- && is_early_arrival(arrival_j_opens_i(I));
+ is_compatible_IJ(I, speed)
+ && is_early_arrival(arrival_j_opens_i(I, speed));
}
@@ -122,66 +132,70 @@ bool
Tw_node::is_start() const {
return
m_type == kStart
- && (0 <= opens())
- && (opens() < closes())
- && (service_time() >= 0)
- && (demand() == 0);
+ && (0 <= opens())
+ && (opens() < closes())
+ && (service_time() >= 0)
+ && (demand() == 0);
}
bool
Tw_node::is_pickup() const {
return m_type == kPickup
- && (0 <= opens())
- && (opens() < closes())
- && (service_time() >= 0)
- && (demand() > 0);
+ && (0 <= opens())
+ && (opens() < closes())
+ && (service_time() >= 0)
+ && (demand() > 0);
}
bool
Tw_node::is_delivery() const {
return m_type == kDelivery
- && (0 <= opens())
- && (opens() < closes())
- && (service_time() >= 0)
- && (demand() < 0);
+ && (0 <= opens())
+ && (opens() < closes())
+ && (service_time() >= 0)
+ && (demand() < 0);
}
bool
Tw_node::is_dump() const {
return m_type == kDump
- && (0 <= opens())
- && (opens() < closes())
- && (service_time() >= 0)
- && (demand() <= 0);
+ && (0 <= opens())
+ && (opens() < closes())
+ && (service_time() >= 0)
+ && (demand() <= 0);
}
bool
Tw_node::is_load() const {
return m_type == kLoad
- && (0 <= opens())
- && (opens() < closes())
- && (service_time() >= 0)
- && (demand() >= 0);
+ && (0 <= opens())
+ && (opens() < closes())
+ && (service_time() >= 0)
+ && (demand() >= 0);
}
bool
Tw_node::is_end() const {
return m_type == kEnd
- && (0 <= opens())
- && (opens() < closes())
- && (service_time() >= 0)
- && (demand() == 0);
+ && (0 <= opens())
+ && (opens() < closes())
+ && (service_time() >= 0)
+ && (demand() == 0);
}
bool
-Tw_node::operator ==(const Tw_node &rhs) const {
- if (&rhs == this) return true;
- return (static_cast<Node>(*this) == static_cast<Node>(rhs));
+Tw_node::operator ==(const Tw_node &other) const {
+ if (&other == this) return true;
+ auto lhs = static_cast<const Node&>(
+ *problem->m_base_nodes[idx()].get());
+ auto rhs = static_cast<const Node&>(
+ *problem->m_base_nodes[other.idx()].get());
+ return lhs == rhs;
}
@@ -223,54 +237,54 @@ bool Tw_node::is_valid() const {
Tw_node::Tw_node(
size_t id,
- Customer_t data,
- NodeType type,
- const Pgr_pickDeliver *p_problem) :
- Node(id, data.id, data.x, data.y),
- m_opens(data.Etime),
- m_closes(data.Ltime),
- m_service_time(data.Stime),
+ PickDeliveryOrders_t data,
+ NodeType type) :
+ Identifier(id, data.pick_node_id),
+ m_order(data.id),
+ m_opens(data.pick_open_t),
+ m_closes(data.pick_close_t),
+ m_service_time(data.pick_service_t),
m_demand(data.demand),
- m_type(type),
- problem(p_problem) {
+ m_type(type) {
+ if (m_type == kDelivery) {
+ reset_id(data.deliver_node_id);
+ m_opens = data.deliver_open_t;
+ m_closes = data.deliver_close_t;
+ m_service_time = data.deliver_service_t;
+ m_demand *= -1;
+ }
}
-
Tw_node::Tw_node(
size_t id,
- int64_t original_id,
- double x,
- double y,
- double opens,
- double closes,
- double service_time,
- double demand,
- NodeType type,
- const Pgr_pickDeliver *p_problem) :
- Node(id, original_id, x, y),
- m_opens(opens),
- m_closes(closes),
- m_service_time(service_time),
- m_demand(demand),
- m_type(type),
- problem(p_problem) {
+ Vehicle_t data,
+ NodeType type) :
+ Identifier(id, data.start_node_id),
+ m_opens(data.start_open_t),
+ m_closes(data.start_close_t),
+ m_service_time(data.start_service_t),
+ m_demand(0),
+ m_type(type) {
+ if (m_type == kEnd) {
+ reset_id(data.end_node_id);
+ m_opens = data.end_open_t;
+ m_closes = data.end_close_t;
+ m_service_time = data.end_service_t;
+ }
}
/*! * \brief Print the contents of a Twnode object. */
std::ostream& operator << (std::ostream &log, const Tw_node &n) {
- log << static_cast<const Node&>(n)
+ log << static_cast<const Node&>(
+ *n.problem->m_base_nodes[n.idx()].get())
<< "[opens = " << n.m_opens
<< "\tcloses = " << n.m_closes
<< "\tservice = " << n.m_service_time
<< "\tdemand = " << n.m_demand
<< "\ttype = " << n.type_str()
- << "]";
- if (n.is_pickup() || n.is_delivery()) {
- log << "->" << n.m_otherid << "\n";
- } else {
- log << "\n";
- }
+ << "]"
+ << "\n";
return log;
}
diff --git a/src/pickDeliver/src/tw_node.h b/src/pickDeliver/src/tw_node.h
deleted file mode 100644
index 1ff2756..0000000
--- a/src/pickDeliver/src/tw_node.h
+++ /dev/null
@@ -1,299 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: tw_node.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-#pragma once
-#include <string>
-
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/pgr_assert.h"
-
-#include "./node.h"
-
-namespace pgrouting {
-namespace vrp {
-
- class Pgr_pickDeliver;
-
-/*! \class Tw_node
- * \brief Extends the \ref Node class to create a Node with time window attributes.
- *
- * A Time Window node is a Node with addition attributes and methods to
- * to support Time Windows and to model a more complex Node need in many
- * vehicle routing problems.
- *
- * Most application specific code will extend this class and define the specific
- * values and requirements for \c type and \c streetid.
- *
- */
-class Tw_node: public Node {
- public:
- typedef enum {
- kStart = 0, // /< starting site
- kPickup, // /< pickup site
- kDelivery, // /< delivery site
- kDump, // /< dump site, empties truck
- kLoad, // /< load site, fills the truck
- kEnd ///< ending site
- } NodeType;
-
-
- inline void set_Pid(size_t id) {
- pgassert(is_delivery());
- m_otherid = id;
- }
-
- inline void set_Did(size_t id) {
- pgassert(is_pickup());
- m_otherid = id;
- }
-
- inline size_t Did() const {
- pgassert(is_pickup());
- return m_otherid;
- }
-
- inline size_t Pid() const {
- pgassert(is_delivery());
- return m_otherid;
- }
-
-
- /** @name accessors */
- ///@ {
-
-
- /*! \brief Returns the opening time.*/
- inline double opens() const {return m_opens;}
-
- /*! \brief Returns the closing time. */
- inline double closes() const {return m_closes;}
-
- /*! \brief Returns the demand associated with this node. */
- inline double demand() const {return m_demand;}
-
- /*! * \brief Returns the service time for this node. */
- inline double service_time() const { return m_service_time;}
-
- /*! * \brief Returns the type of this node. */
- inline NodeType type() const { return m_type;}
-
- /*! \brief Returns the length of time between the opening and closing. */
- inline double window_length() const {return m_closes - m_opens;}
-
- /*! \brief time = distance / speed. */
- double travel_time_to(const Node &other) const;
-
- ///@}
-
- /** @name kind of node
- *
- * A true value when;
- *
- * - 0 < opens < closes
- * - the type is the requested type
- * - the demand are valid for the requested type
- */
-
- ///@ {
-
-
- /*! \brief is_start
- *
- * To be a start node:
- * - type is kStart
- * - demand == 0
- *
- **/
- bool is_start() const;
-
-
- /*! \brief is_pickup
- *
- * To be a pickup node:
- * - type is kPickup
- * - demand > 0
- *
- **/
- bool is_pickup() const;
-
-
- /*! \brief is_delivery
- *
- * To be a delivery node:
- * - type is kDelivery
- * - demand < 0
- *
- **/
- bool is_delivery() const;
-
-
- /*! \brief is_dump
- *
- * To be a dump node:
- * - type is kDump
- * - demand <= 0
- *
- **/
- bool is_dump() const;
-
-
- /*! \brief is_Load
- *
- * To be a Load node:
- * - type is kLoad
- * - demand >= 0
- *
- **/
- bool is_load() const;
-
-
- /*! \brief is_end
- *
- * To be a End node:
- * - type is kEnd
- * - demand == 0
- *
- **/
- bool is_end() const;
-
-
- std::string type_str() const;
-
- ///@}
-
-
-
- /*! * \brief Print the contents of a Twnode object. */
- friend std::ostream& operator << (std::ostream &log, const Tw_node &node);
-
- bool operator ==(const Tw_node &rhs) const;
-
-
-
- /*! \brief True when \b arrivalTime is before it \b opens */
- inline bool is_early_arrival(double arrival_time) const {
- return arrival_time < m_opens;
- }
-
- /*! \brief True when \b arrivalTime is after it \b closes */
- inline bool is_late_arrival(double arrival_time) const {
- return arrival_time > m_closes;
- }
- /*! \brief True when \b arrivalTime in the time window */
- inline bool is_on_time(double arrival_time) const {
- return !is_early_arrival(arrival_time)
- && !is_late_arrival(arrival_time);
- }
-
-
-
-
-
- /** @name document functions */
- ///@ {
- /*!
- * The actual arrival time at \b This node, given that:
- * \b this node is visited directly after \b other node
- * and that the actual arrival time at \b other node was opens(other)
- **/
- double arrival_j_opens_i(const Tw_node &I) const;
-
- /*!
- * The actual arrival time at \b this node, given that:
- * \b this node is visited directly after \b other node
- * and that the actual arrival time at \b other node was closes(other)
- **/
- double arrival_j_closes_i(const Tw_node &I) const;
-
-
- /*
- * is possible to arrive to \b this after visiting \bother
- * - departing as early as possible from \b other it can arrives to \b this
- */
- bool is_compatible_IJ(const Tw_node &I) const;
-
- /*
- * is possible to arrive to \b this after visiting \bother
- * - departing as late as possible from \b other it can arrives to \b this
- */
- bool is_partially_compatible_IJ(const Tw_node &I) const;
-
- /*
- * is possible to arrive to \b this after visiting \bother
- * - departing as late as possible from \b other it can arrives to \b this
- */
- bool is_tight_compatible_IJ(const Tw_node &I) const;
-
- /*
- * is possible to arrive to \b this after visiting \b other
- * - departing as late as possible from \b other it can arrives to \b this
- */
- bool is_partially_waitTime_compatible_IJ(const Tw_node &I) const;
-
- /*
- * is compatible to arrive to \b this after visiting \b other
- * - is fully compatible
- * - does not have a waiting time when arriving as earliest as possible after
- */
- bool is_waitTime_compatible_IJ(const Tw_node &I) const;
-
-
- ///@}
-
-
-
- Tw_node(const Tw_node &other) = default;
- Tw_node(
- size_t id,
- Customer_t data,
- NodeType type,
- const Pgr_pickDeliver *problem);
-
- Tw_node(
- size_t id,
- int64_t p_original_id,
- double x,
- double y,
- double opens,
- double closes,
- double service_time,
- double demand,
- NodeType type,
- const Pgr_pickDeliver *problem);
-
- protected:
- bool is_valid() const;
-
- double m_opens; ///< opening time of the node
- double m_closes; ///< closing time of the node
- double m_service_time; // /< time it takes to be served
- double m_demand; ///< The demand for the Node
- size_t m_otherid; ///< the other's internal id
- NodeType m_type; ///< The demand for the Node
- const Pgr_pickDeliver *problem;
-};
-
-} // namespace vrp
-} // namespace pgrouting
diff --git a/src/pickDeliver/src/vehicle.cpp b/src/pickDeliver/src/vehicle.cpp
index edc6908..f5aa761 100644
--- a/src/pickDeliver/src/vehicle.cpp
+++ b/src/pickDeliver/src/vehicle.cpp
@@ -23,7 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./vehicle.h"
+#include "vrp/vehicle.h"
#include <deque>
#include <iostream>
@@ -34,9 +34,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include <utility>
#include <vector>
-#include "../../common/src/pgr_assert.h"
+#include "cpp_common/pgr_assert.h"
-#include "./pgr_pickDeliver.h"
+#include "vrp/pgr_pickDeliver.h"
namespace pgrouting {
@@ -77,7 +77,7 @@ Vehicle::insert(std::pair<POS, POS> position_limits, const Vehicle_node &node) {
return best;
pgassert(best < m_path.size());
- pgassert(m_path[best].id() == node.id());
+ pgassert(m_path[best].idx() == node.idx());
invariant();
}
@@ -131,24 +131,34 @@ Vehicle::cost_compare(const Cost &lhs, const Cost &rhs) const {
-void
+std::vector<General_vehicle_orders_t>
Vehicle::get_postgres_result(
- int vid,
- std::vector< General_vehicle_orders_t > &result) const {
+ int vid) const {
+ std::vector<General_vehicle_orders_t> result;
/* postgres numbering starts with 1 */
- int i(1);
+ int stop_seq(1);
+ msg.log << "getting solution: " << tau() << "\n";
for (const auto p_stop : m_path) {
- General_vehicle_orders_t data =
- {vid, i,
- p_stop.original_id(),
- p_stop.travel_time(),
- p_stop.arrival_time(),
- p_stop.wait_time(),
- p_stop.service_time(),
- p_stop.departure_time()};
+ General_vehicle_orders_t data = {
+ vid,
+ id(),
+ stop_seq,
+ /* order_id
+ * The order_id is invalid for stops type 0 and 5
+ */
+ (p_stop.type() == 0 || p_stop.type() == 5)? -1 : p_stop.order(),
+ p_stop.id(),
+ p_stop.type(),
+ p_stop.cargo(),
+ p_stop.travel_time(),
+ p_stop.arrival_time(),
+ p_stop.wait_time(),
+ p_stop.service_time(),
+ p_stop.departure_time()};
result.push_back(data);
- ++i;
+ ++stop_seq;
}
+ return result;
}
@@ -169,7 +179,7 @@ Vehicle::insert(POS at, Vehicle_node node) {
evaluate(at);
pgassert(at < m_path.size());
- pgassert(m_path[at].id() == node.id());
+ pgassert(m_path[at].idx() == node.idx());
invariant();
}
@@ -184,12 +194,12 @@ Vehicle::deltaTime(const Vehicle_node &node, POS pos) const {
auto prev = m_path[pos-1];
auto next = m_path[pos];
auto original_time = next.travel_time();
- auto tt_p_n = prev.travel_time_to(node);
+ auto tt_p_n = prev.travel_time_to(node, speed());
tt_p_n = node.is_early_arrival(prev.departure_time() + tt_p_n) ?
node.closes() - prev.departure_time()
: tt_p_n;
- auto tt_n_x = node.travel_time_to(next);
+ auto tt_n_x = node.travel_time_to(next, speed());
tt_p_n = next.is_early_arrival(
prev.departure_time() + tt_p_n + node.service_time() + tt_n_x) ?
next.closes() - (prev.departure_time() + tt_p_n + node.service_time())
@@ -230,11 +240,12 @@ Vehicle::erase(const Vehicle_node &node) {
POS pos = 0;
for ( ; pos < m_path.size() ; ++pos) {
- if (node.id() == m_path[pos].id())
+ if (node.idx() == m_path[pos].idx())
break;
}
erase(pos);
+ /*! @todo TODO evaluate with matrix also*/
evaluate(pos);
invariant();
@@ -356,9 +367,9 @@ Vehicle::evaluate(POS from) {
while (node != m_path.end()) {
if (node == m_path.begin()) {
- node->evaluate(max_capacity);
+ node->evaluate(m_capacity);
} else {
- node->evaluate(*(node - 1), max_capacity);
+ node->evaluate(*(node - 1), m_capacity, speed());
}
++node;
@@ -405,7 +416,7 @@ Vehicle::getPosLowLimit(const Vehicle_node &nodeI) const {
/* J == m_path[low_limit - 1] */
while (low_limit > low
- && m_path[low_limit - 1].is_compatible_IJ(nodeI)) {
+ && m_path[low_limit - 1].is_compatible_IJ(nodeI, speed())) {
--low_limit;
}
@@ -437,7 +448,7 @@ Vehicle::getPosHighLimit(const Vehicle_node &nodeJ) const {
/* I == m_path[high_limit] */
while (high_limit < high
- && nodeJ.is_compatible_IJ(m_path[high_limit])) {
+ && nodeJ.is_compatible_IJ(m_path[high_limit], speed())) {
++high_limit;
}
@@ -445,33 +456,72 @@ Vehicle::getPosHighLimit(const Vehicle_node &nodeJ) const {
return high_limit;
}
-
+bool
+Vehicle::is_ok() const {
+ pgassert((m_path.front().opens() <= m_path.front().closes())
+ && (m_path.back().opens() <= m_path.back().closes())
+ && (m_capacity > 0));
+ return (start_site().opens() <= start_site().closes())
+ && (end_site().opens() <= end_site().closes())
+ && (m_capacity > 0);
+}
Vehicle::Vehicle(
- ID p_id,
+ size_t p_idx,
+ int64_t p_id,
const Vehicle_node &starting_site,
const Vehicle_node &ending_site,
- double p_max_capacity) :
- m_id(p_id),
- max_capacity(p_max_capacity) {
+ double p_m_capacity,
+ double p_speed,
+ double p_factor) :
+ Identifier(p_idx, p_id),
+ m_capacity(p_m_capacity),
+ m_factor(p_factor),
+ m_speed(p_speed) {
+ ENTERING();
m_path.clear();
+ pgassert(starting_site.opens() <= starting_site.closes());
+ pgassert(ending_site.opens() <= ending_site.closes());
+ pgassert(capacity() > 0);
+ msg.log << "p_idx: " << p_idx << "\t idx(): " << idx() << "\n";
+ msg.log << "p_id: " << p_id << "\tid(): " << id() << "\n" ;
+
m_path.push_back(starting_site);
m_path.push_back(ending_site);
+
evaluate(0);
+ msg.log << tau() << "\n";
invariant();
+ EXITING();
}
+Vehicle::Vehicle(const Vehicle &v) :
+ Identifier(v.idx(), v.id()),
+ PD_problem(),
+ m_path(v.m_path),
+ m_capacity(v.m_capacity),
+ m_factor(v.m_factor),
+ m_speed(v.m_speed) {
+#if 0
+ ENTERING();
+ msg.log << v.tau() << "\n";
+ msg.log << tau() << "\n";
+ EXITING();
+#endif
+}
std::string
Vehicle::tau() const {
+ pgassert(m_path.size() > 1);
std::ostringstream log;
- log << "Truck " << id() << " (";
+ log << "Truck " << id() << "(" << idx() << ")"
+ << " (";
for (const auto p_stop : m_path) {
if (!(p_stop == m_path.front()))
log << ", ";
- log << p_stop.original_id();
+ log << p_stop.id();
}
log << ")" << " \t(cv, twv, wait_time, duration) = ("
<< cvTot() << ", "
@@ -482,16 +532,27 @@ Vehicle::tau() const {
return log.str();
}
+double
+Vehicle::speed() const {
+ return m_speed/m_factor;
+}
+
/****** FRIENDS *******/
std::ostream&
operator << (std::ostream &log, const Vehicle &v) {
v.invariant();
int i(0);
- log << "\n\n****************** TRUCK " << v.id() << "***************";
+ log << "\n\n****************** " << v.idx() << "th VEHICLE*************\n";
+ log << "id = " << v.id()
+ << "\tcapacity = " << v.m_capacity
+ << "\tfactor = " << v.m_factor << "\n"
+ << "\tspeed = " << v.m_speed << "\n"
+ << "\tnew speed = " << v.speed() << "\n";
+
for (const auto &path_stop : v.path()) {
- log << "\nPath_stop" << ++i << "\n";
- log << path_stop;
+ log << "Path_stop" << ++i << "\n";
+ log << path_stop << "\n";
}
return log;
}
diff --git a/src/pickDeliver/src/vehicle.h b/src/pickDeliver/src/vehicle.h
deleted file mode 100644
index f8f24f7..0000000
--- a/src/pickDeliver/src/vehicle.h
+++ /dev/null
@@ -1,325 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: vehicle.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-#pragma once
-
-#include <deque>
-#include <iostream>
-#include <algorithm>
-#include <string>
-#include <tuple>
-#include <utility>
-#include <vector>
-
-
-#include "./vehicle_node.h"
-
-namespace pgrouting {
-namespace vrp {
-
-
-/*! @class Vehicle
- * @brief Vehicle with time windows
- *
- * General functionality for a vehicle in a VRP problem
- *
- * Recommended use:
- *
- * ~~~~{.c}
- * Class my_vehicle : public vechicle
- * ~~~~
- *
- * @note All members return @b true when the operation is successful
- *
- * A vehicle is a sequence of @ref Vehicle_node
- * from @b starting site to @b ending site.
- *
- * @sa @ref Vehicle_node
- */
-
-class Vehicle {
- protected:
- typedef size_t ID;
- typedef size_t POS;
- ID m_id;
- std::deque< Vehicle_node > m_path;
- double max_capacity;
-
- public:
- /*
- * (twv, cv, fleet_size, wait_time, dureation)
- */
- typedef std::tuple< int, int, size_t, double, double > Cost;
- void get_postgres_result(
- int vid,
- std::vector< General_vehicle_orders_t > &result) const;
-
- Vehicle(
- ID id,
- const Vehicle_node &starting_site,
- const Vehicle_node &ending_site,
- double max_capacity);
-
-
-
- /*! @name deque like functions
-
- @returns True if the operation was performed
- @warning Assertions are performed for out of range operations
- @warning no feasability nor time window or capacity violations
- checks are performed
- @todo TODO more deque like functions here
- */
-
- /*! @brief Invariant
- * The path must:
- * - have at least 2 nodes
- * - first node of the path must be Start node
- * - last node of the path must be End node
- *
- * path: S ..... E
- */
- void invariant() const;
-
-
- /// @ {
-
- /*! @brief Insert @b node at @b pos position.
- *
- * @param[in] pos The position that the node should be inserted.
- * @param[in] node The node to insert.
- *
- */
- void insert(POS pos, Vehicle_node node);
-
-
- /*! @brief Insert @b node in best position of the @b position_limits.
- *
- * @param[in] position_limits
- * @param[in] node The node to insert
- *
- * @returns position where it was inserted
- */
- POS insert(std::pair<POS, POS> position_limits, const Vehicle_node &node);
-
-
-
-
-
- /*! @brief Evaluated: push_back a node to the path.
- *
- * ~~~~{.c}
- * before: S <nodes> E
- * after: S <nodes> n E
- * ~~~~
- *
- * @param[in] node to be push_back.
- */
- void push_back(const Vehicle_node &node);
-
- /*! @brief Evaluated: push_back a node to the path.
- *
- * ~~~~{.c}
- * before: S <nodes> E
- * after: S n <nodes> E
- * ~~~~
- *
- * @param[in] node to be push_back.
- */
- void push_front(const Vehicle_node &node);
-
-
- /*! @brief Evaluated: pop_back a node to the path.
- *
- * ~~~~{.c}
- * before: S <nodes> n E
- * after: S <nodes> E
- * ~~~~
- */
- void pop_back();
-
- /*! @brief Evaluated: pop_front a node to the path.
- *
- * ~~~~{.c}
- * before: S n <nodes> E
- * after: S <nodes> E
- * ~~~~
- */
- void pop_front();
-
- /*! @brief Erase node.id()
- *
- * @note start and ending nodes cannot be erased
- *
- * Numbers are positions
- * before: S .... node.id() .... E
- * after: S .... .... E
- *
- */
- void erase(const Vehicle_node &node);
-
-
-
- /*! @brief Erase node at `pos` from the path.
- *
- * @note start and ending nodes cannot be erased
- *
- * Numbers are positions
- * before: S 1 2 3 4 5 6 pos 8 9 E
- * after: S 1 2 3 4 5 6 8 9 E
- *
- * @param[in] pos to be erased.
- */
- void erase(POS pos);
-
- /*! @brief return true when no nodes are in the truck
- *
- * ~~~~{.c}
- * True: S E
- * False: S <nodes> E
- * ~~~~
- */
- bool empty() const;
-
- ID id() const {return m_id;}
-
-
- /// @ {
- Cost cost() const;
- bool cost_compare(const Cost&, const Cost&) const;
-
- double duration() const {
- return m_path.back().departure_time();
- }
- double total_wait_time() const {
- return m_path.back().total_wait_time();
- }
- double total_travel_time() const {
- return m_path.back().total_travel_time();
- }
- double total_service_time() const {
- return m_path.back().total_service_time();
- }
- double free_time() const {
- return total_wait_time() + (m_path[0].closes() - duration());
- }
- int twvTot() const {
- return m_path.back().twvTot();
- }
- int cvTot() const {
- return m_path.back().cvTot();
- }
- bool has_twv() const {
- return twvTot() != 0;
- }
- bool has_cv() const {
- return cvTot() != 0;
- }
- bool is_feasable() const {
- return !(has_twv() || has_cv());
- }
- /// @}
-
-
-
- /*!
- * @brief Swap two nodes in the path.
- *
- * ~~~~{.c}
- * Before: S <nodesA> I <nodesB> J <nodesC> E
- * After: S <nodesA> J <nodesB> I <nodesC> E
- * ~~~~
- *
- * @param[in] i The position of the first node to swap.
- * @param[in] j The position of the second node to swap.
- */
- void swap(POS i, POS j);
-
-
- /*! @name Evaluation
- *
- *
- *
- * Path evaluation is done incrementally: from a given position to the
- * end of the path, and intermediate values are cached on each node.
- * So, for example, changing the path at position 100:
- * the evaluation function should be called as
- * @c evaluate(100, maxcapacity)
- * and from that position to the end of the path will be evaluated.
- * None of the "unaffected" positions get reevaluated
- *
- *
- *
- */
-
- ///@ {
-
- /*! @brief Evaluate: Evaluate the whole path from the start. */
- void evaluate();
-
- /*! @brief Evaluate: Evaluate a path from the given position.
- *
- * @param[in] from The starting position in the path for evaluation to
- * the end of the path.
- */
- void evaluate(POS from);
-
- ///@}
-
- double deltaTime(const Vehicle_node &node, POS pos) const;
- POS insert_less_travel_time(const Vehicle_node &node, POS after_pos = 0);
-
-
-
- /*! @name accessors */
- ///@ {
-
- std::deque< Vehicle_node > path() const;
-
- ///@}
-
- /*! @name operators */
- ///@ {
-
-
- friend std::ostream& operator << (std::ostream &log, const Vehicle &v);
-
- std::string tau() const;
-
- friend bool operator<(const Vehicle &lhs, const Vehicle &rhs);
-
- ///@}
-
-
-
- std::pair<POS, POS> position_limits(const Vehicle_node node) const;
-
- private:
- POS getPosLowLimit(const Vehicle_node &node) const;
- POS getPosHighLimit(const Vehicle_node &node) const;
-};
-
-} // namespace vrp
-} // namespace pgrouting
diff --git a/src/pickDeliver/src/vehicle_node.cpp b/src/pickDeliver/src/vehicle_node.cpp
index b904490..3eebdc7 100644
--- a/src/pickDeliver/src/vehicle_node.cpp
+++ b/src/pickDeliver/src/vehicle_node.cpp
@@ -24,7 +24,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./vehicle_node.h"
+#include "vrp/vehicle_node.h"
namespace pgrouting {
@@ -58,14 +58,19 @@ Vehicle_node::evaluate(double cargoLimit) {
}
}
+
/*!
- \param[in] pred The node preceding this node (in the path).
- \param[in] cargoLimit The cargo limit of the vehicle.
+ \param[in] pred The node preceding this node in the path.
+ \param[in] cargoLimit of the vehicle.
+ \param[in] speed of the vehicle.
*/
void
-Vehicle_node::evaluate(const Vehicle_node &pred, double cargoLimit) {
+Vehicle_node::evaluate(
+ const Vehicle_node &pred,
+ double cargoLimit,
+ double speed) {
/* time */
- m_travel_time = pred.travel_time_to(*this);
+ m_travel_time = pred.travel_time_to(*this, speed);
m_arrival_time = pred.departure_time() + travel_time();
m_wait_time = is_early_arrival(arrival_time()) ?
opens() - m_arrival_time :
@@ -79,11 +84,11 @@ Vehicle_node::evaluate(const Vehicle_node &pred, double cargoLimit) {
/* cargo aggregates */
if (is_dump() && pred.cargo() >= 0) {
- m_demand = -pred.cargo();
+ demand(-pred.cargo());
}
m_cargo = pred.cargo() + demand();
- /* cargo aggregates */
+ /* violations aggregates */
m_twvTot = has_twv() ? pred.twvTot() + 1 : pred.twvTot();
m_cvTot = has_cv(cargoLimit) ? pred.cvTot() + 1 : pred.cvTot();
@@ -94,16 +99,16 @@ Vehicle_node::evaluate(const Vehicle_node &pred, double cargoLimit) {
std::ostream&
operator << (std::ostream &log, const Vehicle_node &v) {
- log << static_cast<Tw_node>(v)
+ log << static_cast<const Tw_node&>(v)
<< " twv = " << v.has_twv()
<< ", twvTot = " << v.twvTot()
<< ", cvTot = " << v.cvTot()
<< ", cargo = " << v.cargo()
- << ", travel _time = " << v.travel_time()
- << ", arrival _time = " << v.arrival_time()
- << ", wait _time = " << v.wait_time()
- << ", service _time = " << v.service_time()
- << ", departure _time = " << v.departure_time();
+ << ", travel_time = " << v.travel_time()
+ << ", arrival_time = " << v.arrival_time()
+ << ", wait_time = " << v.wait_time()
+ << ", service_time = " << v.service_time()
+ << ", departure_time = " << v.departure_time();
return log;
}
@@ -143,10 +148,12 @@ Vehicle_node::deltaGeneratesTWV(double delta_time) const {
and that the actual arrival time at \b other node was arrival(other)
*/
double
-Vehicle_node::arrival_i_arrives_j(const Vehicle_node &other) const {
+Vehicle_node::arrival_i_arrives_j(
+ const Vehicle_node &other,
+ double speed) const {
return other.arrival_time()
+ other.service_time()
- + other.travel_time_to(*this);
+ + other.travel_time_to(*this, speed);
}
} // namespace vrp
diff --git a/src/pickDeliver/src/vehicle_node.h b/src/pickDeliver/src/vehicle_node.h
deleted file mode 100644
index 1a981ff..0000000
--- a/src/pickDeliver/src/vehicle_node.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: vehicle_node.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-
-#pragma once
-
-
-#include <string>
-
-#include "./tw_node.h"
-
-namespace pgrouting {
-namespace vrp {
-
-
-/*! \class Vehicle_node;
- * \brief Extend Tw_node to evaluate the vehicle at node level
- *
- * This class extends Twnode by adding attributes to store information
- * about the node in a path and provides the tools evaluate the node
- * and to set and get these attribute values.
- */
-
-
-class Vehicle_node: public Tw_node {
- public:
- /** @name log */
- ///@ {
-
- friend std::ostream& operator<<(
- std::ostream &log, const Vehicle_node &node);
-
- ///@}
-
- /** @name Node evaluation accessors */
- ///@ {
-
- /*! \brief Truck's travel_time from previous node to this node. */
- inline double travel_time() const {return m_travel_time;}
-
- /*! \brief Truck's arrival_time to this node. */
- inline double arrival_time() const {return m_arrival_time;}
-
- /*! \brief Truck's wait_time at this node. */
- inline double wait_time() const {return m_wait_time;}
-
- /*! \brief Truck's departure_time from this node. */
- inline double departure_time() const {return m_departure_time;}
-
- /*! \brief delta_time = departure_time(this) - departure_time(previous) */
- inline double delta_time() const {return m_delta_time;}
-
- ///@}
-
-
-
-
-
-
- /** @name Accumulated evaluation accessors */
- ///@ {
-
- /*! \brief Truck's total times it has violated time windows. */
- inline int twvTot() const {return m_twvTot;}
-
- /*! \brief Truck's total times it has violated cargo limits. */
- inline int cvTot() const {return m_cvTot;}
-
- /*! \brief Truck's total cargo after the node was served. */
- inline double cargo() const {return m_cargo;}
-
- /*! \brief Truck's travel duration up to this node. */
- inline double total_time() const {return m_departure_time;}
-
- /*! \brief _time spent moving between nodes by the truck */
- inline double total_travel_time() const {return m_tot_travel_time;}
-
- /*! \brief _time spent by the truck waiting for nodes to open */
- inline double total_wait_time() const {return m_tot_wait_time;}
-
- /*! \brief _time spent by the truck servicing the nodes */
- inline double total_service_time() const {return m_tot_service_time;}
-
- ///@}
-
- /*! \brief True when \b arrival_time + \b delta_time generates TWV.*/
- bool deltaGeneratesTWV(double delta_time) const;
-
- /** @name State */
- ///@ {
-
- /*! \brief True when the total count for violations are 0 */
- bool feasible() const {return m_twvTot == 0 && m_cvTot == 0;}
-
- /*! \brief True doesn't have twc nor cv (including total counts) */
- bool feasible(double cargoLimit) const {
- return feasible() && !has_twv() && !has_cv(cargoLimit);
- }
-
- /*! \brief True when at this node does not violate time windows */
- bool has_twv() const {
- return is_late_arrival(m_arrival_time);
- }
-
- /*! \brief True when not violation
- *
- * Ending's or start's cargo should be 0
- **/
- bool has_cv(double cargoLimit) const {
- return is_end() || is_start() ? m_cargo != 0
- : m_cargo > cargoLimit || m_cargo < 0;
- }
- ///@}
-
- /** @name mutators */
- ///@ {
- void evaluate(double cargoLimit);
- void evaluate(const Vehicle_node &pred, double cargoLimit);
- ///@}
-
- /** @name Document*/
- ///@ {
-
- /*! \brief returns the arrval time at \b this visited after \b other */
- double arrival_i_arrives_j(
- const Vehicle_node &other) const;
-
- ///@}
-
-
-
- /*! \brief Construct from parameters */
- Vehicle_node(const Vehicle_node &node) = default;
- Vehicle_node(const Tw_node &node);
-
- protected:
- /** @name Node evaluation members */
- ///@ {
-
- double m_travel_time; ///< Travel time from last node
- double m_arrival_time; ///< Arrival time at this node
- double m_wait_time; ///< Wait time at this node when early arrival
- double m_departure_time; // /< Departure time from this node
- double m_delta_time; ///< Departure time - last nodes departure time
-
- ///@}
-
- /** @name Accumulated evaluation members */
- ///@ {
-
- double m_cargo; ///< Accumulated cargo
- int m_twvTot; ///< Total count of TWV
- int m_cvTot; ///< Total count of CV
- double m_tot_wait_time; ///< Accumulated wait time
- double m_tot_travel_time; ///< Accumulated travel time
- double m_tot_service_time; // /< Accumulated service time
-
- ///@}
-};
-
-} // namespace vrp
-} // namespace pgrouting
diff --git a/src/pickDeliver/src/vehicle_pickDeliver.cpp b/src/pickDeliver/src/vehicle_pickDeliver.cpp
index 5a0176e..b3c5a7e 100644
--- a/src/pickDeliver/src/vehicle_pickDeliver.cpp
+++ b/src/pickDeliver/src/vehicle_pickDeliver.cpp
@@ -2,7 +2,7 @@
FILE: vehicle_pickDeliver.cpp
-Copyright (c) 2015 pgRouting developers
+Copyright (c) 2016 pgRouting developers
Mail: project at pgrouting.org
------
@@ -23,7 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./vehicle_pickDeliver.h"
+#include "vrp/vehicle_pickDeliver.h"
#include <iostream>
#include <deque>
@@ -33,10 +33,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include <limits>
-#include "./../../common/src/pgr_assert.h"
-#include "./order.h"
-#include "./vehicle.h"
-#include "./pgr_pickDeliver.h"
+#include "cpp_common/pgr_assert.h"
+#include "vrp/order.h"
+#include "vrp/vehicle.h"
+#include "vrp/pgr_pickDeliver.h"
@@ -45,19 +45,19 @@ namespace vrp {
Order
Vehicle_pickDeliver::get_worse_order(
- std::set<size_t> orders) const {
+ Identifiers<size_t> orders) const {
invariant();
pgassert(!empty());
// auto orders(of_this_subset);
- auto worse_order(problem->orders()[*orders.begin()]);
+ auto worse_order(m_orders[*orders.begin()]);
auto delta_duration((std::numeric_limits<double>::max)());
auto curr_duration(duration());
while (!orders.empty()) {
auto truck(*this);
- auto order(problem->orders()[*orders.begin()]);
+ auto order = m_orders[*orders.begin()];
pgassert(truck.has_order(order));
- orders.erase(orders.begin());
+ orders -= order.idx();
truck.erase(order);
auto delta = truck.duration() - curr_duration;
if (delta < delta_duration) {
@@ -73,29 +73,31 @@ Order
Vehicle_pickDeliver::get_first_order() const {
invariant();
pgassert(!empty());
- return problem->order_of(m_path[1]);
+ return m_orders[m_path[1].idx()];
}
Vehicle_pickDeliver::Vehicle_pickDeliver(
size_t id,
+ size_t kind,
const Vehicle_node &starting_site,
const Vehicle_node &ending_site,
- double max_capacity,
- const Pgr_pickDeliver *p_problem) :
- Vehicle(id, starting_site, ending_site, max_capacity),
- cost((std::numeric_limits<double>::max)()),
- problem(p_problem) {
- orders_in_vehicle.clear();
-
+ double p_capacity,
+ double p_speed,
+ double factor) :
+ Vehicle(id, kind, starting_site, ending_site, p_capacity, p_speed, factor),
+ cost((std::numeric_limits<double>::max)()) {
+ ENTERING();
+ m_orders_in_vehicle.clear();
invariant();
+ EXITING();
}
bool
Vehicle_pickDeliver::has_order(const Order &order) const {
- return !(orders_in_vehicle.find(order.id()) == orders_in_vehicle.end());
+ return m_orders_in_vehicle.has(order.idx());
}
@@ -158,7 +160,7 @@ Vehicle_pickDeliver::insert(const Order &order) {
while (deliver_pos.first <= deliver_pos.second) {
Vehicle::insert(deliver_pos.first, order.delivery());
- orders_in_vehicle.insert(order.id());
+ m_orders_in_vehicle += order.idx();
pgassertwm(has_order(order), err_log.str());
#ifndef NDEBUG
err_log << "\ndelivery inserted: " << tau();
@@ -186,7 +188,7 @@ Vehicle_pickDeliver::insert(const Order &order) {
#ifndef NDEBUG
err_log << "\npickup erased: " << tau();
#endif
- orders_in_vehicle.erase(order.id());
+ m_orders_in_vehicle -= order.idx();
pgassertwm(!has_order(order), err_log.str());
deliver_pos = d_pos_backup;
@@ -207,19 +209,20 @@ Vehicle_pickDeliver::insert(const Order &order) {
Vehicle::insert(best_pick_pos, order.pickup());
Vehicle::insert(best_deliver_pos, order.delivery());
- orders_in_vehicle.insert(order.id());
+ m_orders_in_vehicle += order.idx();
pgassertwm(is_feasable(), err_log.str());
pgassertwm(has_order(order), err_log.str());
pgassertwm(!has_cv(), err_log.str());
invariant();
}
+
void
Vehicle_pickDeliver::push_back(const Order &order) {
invariant();
pgassert(!has_order(order));
- orders_in_vehicle.insert(order.id());
+ m_orders_in_vehicle += order.idx();
m_path.insert(m_path.end() - 1, order.pickup());
m_path.insert(m_path.end() - 1, order.delivery());
evaluate(m_path.size() - 3);
@@ -231,12 +234,13 @@ Vehicle_pickDeliver::push_back(const Order &order) {
invariant();
}
+
void
Vehicle_pickDeliver::push_front(const Order &order) {
invariant();
pgassert(!has_order(order));
- orders_in_vehicle.insert(order.id());
+ m_orders_in_vehicle += order.idx();
m_path.insert(m_path.begin() + 1, order.delivery());
m_path.insert(m_path.begin() + 1, order.pickup());
evaluate(1);
@@ -250,6 +254,80 @@ Vehicle_pickDeliver::push_front(const Order &order) {
void
+Vehicle_pickDeliver::do_while_feasable(
+ int kind,
+ Identifiers<size_t> &unassigned,
+ Identifiers<size_t> &assigned) {
+ pgassert(is_feasable());
+#if 0
+ msg.log << "unasigned" << unassigned << "\n";
+ msg.log << "m_feasable_orders" << m_feasable_orders << "\n";
+#endif
+ auto current_feasable = m_feasable_orders * unassigned;
+
+ while (!current_feasable.empty()) {
+#if 0
+ msg.log << "current_feasable" << current_feasable << "\n";
+#endif
+ auto order = m_orders[current_feasable.front()];
+
+ switch (kind) {
+ case 1:
+ push_back(order);
+ pgassert(is_feasable());
+ assigned += order.idx();
+ unassigned -= order.idx();
+ invariant();
+ return;
+ break;
+ case 2:
+ push_back(order);
+ break;
+ case 3:
+ push_front(order);
+ break;
+ case 4:
+ insert(order);
+ break;
+ case 5:
+ order = m_orders[m_orders.find_best_J(current_feasable)];
+ insert(order);
+ break;
+ case 6:
+ order = m_orders[m_orders.find_best_I(current_feasable)];
+ insert(order);
+ break;
+ default: pgassert(false);
+ }
+ if (orders_size() == 1 && !is_feasable()) {
+ pgassert(false);
+ }
+
+ if (!is_feasable()) {
+ erase(order);
+ } else {
+ assigned += order.idx();
+ unassigned -= order.idx();
+ if (kind == 5) {
+ current_feasable = m_orders[order.idx()].subsetJ(
+ current_feasable);
+ }
+ if (kind == 6) {
+ current_feasable = m_orders[order.idx()].subsetI(
+ current_feasable);
+ }
+ }
+
+ current_feasable -= order.idx();
+ invariant();
+ }
+
+ pgassert(is_feasable());
+ invariant();
+}
+
+
+void
Vehicle_pickDeliver::erase(const Order &order) {
invariant();
pgassert(has_order(order));
@@ -257,7 +335,7 @@ Vehicle_pickDeliver::erase(const Order &order) {
Vehicle::erase(order.pickup());
Vehicle::erase(order.delivery());
- orders_in_vehicle.erase(orders_in_vehicle.find(order.id()));
+ m_orders_in_vehicle -= order.idx();
invariant();
pgassert(!has_order(order));
@@ -277,35 +355,17 @@ Vehicle_pickDeliver::pop_back() {
pgassert(pick_itr->is_pickup());
- ID deleted_pick_id = pick_itr->id();
-
+ auto deleted_pick_idx = pick_itr->idx();
- auto delivery_id = problem->node(deleted_pick_id).Did();
-
- m_path.erase((pick_itr + 1).base());
-
- auto delivery_itr = m_path.rbegin();
- while (delivery_itr != m_path.rend()
- && !(delivery_itr->id() ==delivery_id)) {
- ++delivery_itr;
+ for (const auto o : m_orders) {
+ if (o.pickup().idx() == deleted_pick_idx) {
+ erase(o);
+ invariant();
+ return o.idx();
+ }
}
-
- pgassert(delivery_itr->is_delivery());
- pgassert(delivery_itr->Pid() == deleted_pick_id);
-
- m_path.erase((delivery_itr + 1).base());
-
-
- /* figure out from where the evaluation is needed */
- evaluate(1);
-
- ID deleted_order_id(
- problem->order_of(problem->node(deleted_pick_id)).id());
-
- orders_in_vehicle.erase(orders_in_vehicle.find(deleted_order_id));
-
- invariant();
- return deleted_order_id;
+ pgassert(false);
+ return 0;
}
@@ -322,33 +382,34 @@ Vehicle_pickDeliver::pop_front() {
pgassert(pick_itr->is_pickup());
- ID deleted_pick_id = pick_itr->id();
-
+ auto deleted_pick_idx = pick_itr->idx();
- auto delivery_id = problem->node(deleted_pick_id).Did();
-
- m_path.erase(pick_itr);
-
- auto delivery_itr = m_path.begin();
- while (delivery_itr != m_path.end()
- && !(delivery_itr->id() == delivery_id)) {
- ++delivery_itr;
+ for (const auto o : m_orders) {
+ if (o.pickup().idx() == deleted_pick_idx) {
+ erase(o);
+ invariant();
+ return o.idx();
+ }
}
- pgassert(delivery_itr->is_delivery());
- pgassert(delivery_itr->Pid() == deleted_pick_id);
-
- m_path.erase(delivery_itr);
-
- evaluate(1);
-
- ID deleted_order_id(
- problem->order_of(problem->node(deleted_pick_id)).id());
+ pgassert(false);
+ return 0;
+}
- orders_in_vehicle.erase(orders_in_vehicle.find(deleted_order_id));
+void
+Vehicle_pickDeliver::set_compatibles(const PD_Orders &orders) {
+ m_orders = orders;
+ for (const auto o : orders) {
+ if (is_order_feasable(o)) m_feasable_orders += o.idx();
+ }
+ m_orders.set_compatibles(speed());
+}
- invariant();
- return deleted_order_id;
+bool
+Vehicle_pickDeliver::is_order_feasable(const Order &order) const {
+ auto test_truck = *this;
+ test_truck.push_back(order);
+ return test_truck.is_feasable();
}
diff --git a/src/pickDeliver/src/vehicle_pickDeliver.h b/src/pickDeliver/src/vehicle_pickDeliver.h
deleted file mode 100644
index 6832d96..0000000
--- a/src/pickDeliver/src/vehicle_pickDeliver.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: vehicle_pickDeliver.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-#pragma once
-
-#include <set>
-#include "./order.h"
-#include "./tw_node.h"
-#include "./vehicle.h"
-
-namespace pgrouting {
-namespace vrp {
-
-
-class Initial_solution;
-class Optimize;
-
-class Vehicle_pickDeliver : public Vehicle {
- protected:
- double cost;
- std::set<ID> orders_in_vehicle; // /< orders inserted in this vehicle
- const Pgr_pickDeliver *problem; // /< The vehicle belongs to this problem
-
-
- public:
- friend class Initial_solution;
- friend class Optimize;
-
- Vehicle_pickDeliver(
- ID id,
- const Vehicle_node &starting_site,
- const Vehicle_node &ending_site,
- double max_capacity,
- const Pgr_pickDeliver *p_problem);
-
- Vehicle_pickDeliver(const Vehicle_pickDeliver &) = default;
-
- size_t orders_size() const {return orders_in_vehicle.size();}
-
- bool has_order(const Order &order) const;
-
- /*! @brief puts an order at the end of the truck
- *
- * Precondition:
- * !has_order(order)
- *
- * Postcondition:
- * has_order(order)
- * !has_cv();
- *
- * ~~~~{.c}
- * Before: S <nodes> E
- * After: S <nodes> P D E
- * ~~~~
- *
- * Can generate time window violation
- * No capacity violation
- */
- void push_back(const Order &order);
-
-
-
- /*! @brief Puts an order at the end front of the truck
- *
- * Precondition:
- * !has_order(order)
- *
- * Postcondition:
- * has_order(order)
- * !has_cv();
- *
- * ~~~~{.c}
- * Before: S <nodes> E
- * After: S P D <nodes> E
- * ~~~~
- *
- * Can generate time window violation
- * No capacity violation
- */
- void push_front(const Order &order);
-
-
-
- /*! @brief Inserts an order
- *
- * Precondition:
- * !has_order(order)
- *
- * Postcondition:
- * has_order(order)
- * !has_cv();
- *
- * ~~~~{.c}
- * Before: S <nodes> E
- * After: S ....P .... D .... E
- * ~~~~
- *
- * push_back is performed when
- * - pickup
- *
- * Can generate time window violation
- * No capacity violation
- */
- void insert(const Order &order);
-
- /* @brief erases the order from the vehicle
- *
- * Precondition:
- * has_order(order)
- *
- * Precondition:
- * !has_order(order)
- */
- void erase(const Order &order);
-
- /* @brief
- */
- Order get_first_order() const;
- Order get_worse_order(std::set<size_t> of_this_subset) const;
-
-
- /*!
- * The order that is picked last is removed
- *
- * \returns id of the removed order
- */
-
- ID pop_back();
- ID pop_front();
-};
-
-} // namespace vrp
-} // namespace pgrouting
-
diff --git a/src/pickDeliver/test/book_from_query.result b/src/pickDeliver/test/book_from_query.result
new file mode 100644
index 0000000..6449137
--- /dev/null
+++ b/src/pickDeliver/test/book_from_query.result
@@ -0,0 +1,186 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+DROP TABLE IF EXISTS jet_stops;
+NOTICE: table "jet_stops" does not exist, skipping
+DROP TABLE
+DROP TABLE IF EXISTS jet_flyers;
+NOTICE: table "jet_flyers" does not exist, skipping
+DROP TABLE
+DROP TABLE IF EXISTS jet_orders;
+NOTICE: table "jet_orders" does not exist, skipping
+DROP TABLE
+DROP TABLE IF EXISTS jet_airplane;
+NOTICE: table "jet_airplane" does not exist, skipping
+DROP TABLE
+DROP TABLE IF EXISTS jet_trips;
+NOTICE: table "jet_trips" does not exist, skipping
+DROP TABLE
+DROP TABLE IF EXISTS vrp_solution;
+NOTICE: table "vrp_solution" does not exist, skipping
+DROP TABLE
+CREATE TABLE jet_stops (
+ id SERIAL,
+ iata_faa TEXT,
+ city TEXT,
+ x integer,
+ y integer,
+ longitude double precision,
+ latitude double precision
+);
+CREATE TABLE
+INSERT INTO jet_stops (iata_faa, city, longitude, latitude) VALUES
+('BOS', 'Boston', -71.005180999999993, 42.364347000000002),
+('BGR', 'Bangor', -68.828138999999993, 44.807443999999997),
+('MIA', 'Miami', -80.290555999999995, 25.79325),
+('TEB', 'Teterboro NJ', -74.060837000000006, 40.850102999999997),
+('MVY', 'Martha''s Vineyard', -70.615278000000004, 41.391666999999998),
+('ABE', 'Lehigh Valley', -75.440805999999995, 40.652082999999998),
+('BKW', 'Raleigh County Memorial', -81.124200000000002, 37.787300000000002),
+('BGE', 'Decatur County Industrial', -84.636927799999995, 30.971598100000001);
+INSERT 0 8
+UPDATE jet_stops SET
+x = ST_X(ST_Transform(ST_SetSRID(ST_point(longitude, latitude)::geometry,4326),2163)),
+y = ST_Y(ST_Transform(ST_SetSRID(ST_point(longitude, longitude)::geometry,4326),2163));
+UPDATE 8
+CREATE TABLE jet_flyers AS
+ SELECT
+ row_number() over() AS id,
+ s1.iata_faa AS from_airport,
+ s2.iata_faa AS to_airport,
+ (1 + mod(s1.id, 5))::integer AS num_passengers,
+
+ mod(s1.id,7)*60 AS departureFromTime,
+
+ (mod(s1.id,7) + 4) * 60 AS arrivalToTime
+ FROM
+
+ (SELECT * FROM jet_stops WHERE id < 4) AS s1,
+
+ (SELECT * FROM jet_stops WHERE id >= 4) AS s2
+ WHERE s1.id <> s2.id;
+SELECT 15
+CREATE TABLE jet_orders AS
+ SELECT
+ id,
+ num_passengers AS demand,
+ (SELECT x FROM jet_stops WHERE iata_faa = jet_flyers.from_airport) AS p_x,
+ (SELECT y FROM jet_stops WHERE iata_faa = jet_flyers.from_airport) AS p_y,
+
+ departureFromTime AS p_open,
+ arrivalToTime AS p_close,
+ (SELECT x FROM jet_stops WHERE iata_faa = jet_flyers.to_airport) AS d_x,
+ (SELECT y FROM jet_stops WHERE iata_faa = jet_flyers.to_airport) AS d_y,
+ departureFromTime AS d_open,
+ arrivalToTime AS d_close,
+ from_airport, to_airport
+ FROM jet_flyers;
+SELECT 15
+CREATE TABLE jet_airplane AS
+SELECT
+ 1 AS id,
+
+ 5 AS capacity,
+
+ 10000 AS speed,
+ 20 as "number",
+ x AS start_x, y AS start_y,
+ 0 AS start_open,
+ 300 AS start_close,
+ 0 AS start_service
+ FROM jet_stops
+ WHERE iata_faa = 'TEB';
+SELECT 1
+CREATE TABLE vrp_solution AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$ SELECT * FROM jet_orders $$,
+ $$ SELECT * FROM jet_airplane $$
+);
+SELECT 47
+CREATE TABLE jet_trips AS
+WITH the_results AS (
+SELECT vrp_solution.*, from_airport, to_airport,
+CASE WHEN stop_type = 1 THEN ST_POINT(p_x, p_y)
+ WHEN stop_type = 2 THEN ST_POINT(d_x, d_y)
+ WHEN stop_type = 0 THEN ST_POINT(start_x, start_y)
+ END AS geom
+FROM vrp_solution LEFT JOIN jet_orders on (order_id = jet_orders.id)
+LEFT JOIN jet_airplane on (vehicle_id = jet_airplane.id)
+)
+SELECT *, ST_SetSRID(ST_MakeLine(geom, lead(geom) over(order by seq)),2163) AS lines from the_results;
+SELECT 47
+SELECT * FROM jet_orders;
+ id | demand | p_x | p_y | p_open | p_close | d_x | d_y | d_open | d_close | from_airport | to_airport
+----+--------+---------+-----------+--------+---------+---------+-----------+--------+---------+--------------+------------
+ 1 | 2 | 2320738 | -10738754 | 60 | 300 | 2138410 | -10946747 | 60 | 300 | BOS | TEB
+ 2 | 2 | 2320738 | -10738754 | 60 | 300 | 2387491 | -10710759 | 60 | 300 | BOS | MVY
+ 3 | 2 | 2320738 | -10738754 | 60 | 300 | 2035311 | -11034361 | 60 | 300 | BOS | ABE
+ 4 | 2 | 2320738 | -10738754 | 60 | 300 | 1644577 | -11358423 | 60 | 300 | BOS | BKW
+ 5 | 2 | 2320738 | -10738754 | 60 | 300 | 1466239 | -11533361 | 60 | 300 | BOS | BGE
+ 6 | 3 | 2383186 | -10578021 | 120 | 360 | 2138410 | -10946747 | 120 | 360 | BGR | TEB
+ 7 | 3 | 2383186 | -10578021 | 120 | 360 | 2387491 | -10710759 | 120 | 360 | BGR | MVY
+ 8 | 3 | 2383186 | -10578021 | 120 | 360 | 2035311 | -11034361 | 120 | 360 | BGR | ABE
+ 9 | 3 | 2383186 | -10578021 | 120 | 360 | 1644577 | -11358423 | 120 | 360 | BGR | BKW
+ 10 | 3 | 2383186 | -10578021 | 120 | 360 | 1466239 | -11533361 | 120 | 360 | BGR | BGE
+ 11 | 4 | 1981145 | -11314287 | 180 | 420 | 2138410 | -10946747 | 180 | 420 | MIA | TEB
+ 12 | 4 | 1981145 | -11314287 | 180 | 420 | 2387491 | -10710759 | 180 | 420 | MIA | MVY
+ 13 | 4 | 1981145 | -11314287 | 180 | 420 | 2035311 | -11034361 | 180 | 420 | MIA | ABE
+ 14 | 4 | 1981145 | -11314287 | 180 | 420 | 1644577 | -11358423 | 180 | 420 | MIA | BKW
+ 15 | 4 | 1981145 | -11314287 | 180 | 420 | 1466239 | -11533361 | 180 | 420 | MIA | BGE
+(15 rows)
+
+SELECT * FROM jet_trips;
+ seq | vehicle_number | vehicle_id | vehicle_seq | order_id | stop_type | cargo | travel_time | arrival_time | wait_time | service_time | departure_time | from_airport | to_airport | geom | lines
+-----+----------------+------------+-------------+----------+-----------+-------+------------------+------------------+------------------+--------------+------------------+--------------+------------+--------------------------------------------+--------------------------------------------------------------------------------------------
+ 1 | 1 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | | |
+ 2 | 1 | 1 | 2 | 7 | 2 | 3 | 44.2576720187585 | 44.2576720187585 | 75.7423279812415 | 0 | 120 | BGR | MVY | 01010000000000008011374241000000E0DC6D64C1 |
+ 3 | 1 | 1 | 3 | 7 | 3 | 0 | 13.2807792199855 | 133.280779219986 | 0 | 0 | 133.280779219986 | BGR | MVY | |
+ 4 | 1 | 1 | 4 | 8 | 2 | 3 | 13.2807792199855 | 146.561558439971 | 0 | 0 | 146.561558439971 | BGR | ABE | 0101000000000000006F0E3F4100000020DF0B65C1 | 01020000207308000002000000000000006F0E3F4100000020DF0B65C100000000955040410000006017E164C1
+ 5 | 1 | 1 | 5 | 1 | 2 | 5 | 17.2437959837734 | 163.805354423745 | 0 | 0 | 163.805354423745 | BOS | TEB | 010100000000000000955040410000006017E164C1 |
+ 6 | 1 | 1 | 6 | 12 | 3 | 1 | 7.23856548910072 | 171.043919912845 | 8.95608008715473 | 0 | 180 | MIA | MVY | |
+ 7 | 1 | 1 | 7 | 12 | 2 | 5 | 72.7573445433518 | 252.757344543352 | 0 | 0 | 252.757344543352 | MIA | MVY | 01010000000000008011374241000000E0DC6D64C1 |
+ 8 | 1 | 1 | 8 | 8 | 3 | 2 | 28.5118433343058 | 281.269187877658 | 0 | 0 | 281.269187877658 | BGR | ABE | |
+ 9 | 1 | 1 | 9 | 1 | 3 | 0 | 13.5298251271035 | 294.799013004761 | 0 | 0 | 294.799013004761 | BOS | TEB | |
+ 10 | 1 | 1 | 10 | -1 | 6 | 0 | 0 | 294.799013004761 | 0 | 0 | 294.799013004761 | | | |
+ 11 | 2 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | | |
+ 12 | 2 | 1 | 2 | 4 | 2 | 2 | 27.6594626905513 | 27.6594626905513 | 32.3405373094487 | 0 | 60 | BOS | BKW | 01010000000000000021183941000000E01AAA65C1 | 010200002073080000020000000000000021183941000000E01AAA65C10000000021183941000000E01AAA65C1
+ 13 | 2 | 1 | 3 | 9 | 2 | 5 | 17.2437959837734 | 77.2437959837734 | 42.7562040162266 | 0 | 120 | BGR | BKW | 01010000000000000021183941000000E01AAA65C1 |
+ 14 | 2 | 1 | 4 | 9 | 3 | 2 | 107.450943992363 | 227.450943992363 | 0 | 0 | 227.450943992363 | BGR | BKW | |
+ 15 | 2 | 1 | 5 | 4 | 3 | 0 | 0 | 227.450943992363 | 0 | 0 | 227.450943992363 | BOS | BKW | |
+ 16 | 2 | 1 | 6 | -1 | 6 | 0 | 64.2921582205015 | 291.743102212865 | 0 | 0 | 291.743102212865 | | | |
+ 17 | 3 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | | |
+ 18 | 3 | 1 | 2 | 3 | 2 | 2 | 27.6594626905513 | 27.6594626905513 | 32.3405373094487 | 0 | 60 | BOS | ABE | 0101000000000000006F0E3F4100000020DF0B65C1 | 01020000207308000002000000000000006F0E3F4100000020DF0B65C1000000007F5F36410000002086FF65C1
+ 19 | 3 | 1 | 3 | 5 | 2 | 4 | 0 | 60 | 0 | 0 | 60 | BOS | BGE | 0101000000000000007F5F36410000002086FF65C1 |
+ 20 | 3 | 1 | 4 | 3 | 3 | 2 | 41.0916135942603 | 101.09161359426 | 0 | 0 | 101.09161359426 | BOS | ABE | |
+ 21 | 3 | 1 | 5 | 5 | 3 | 0 | 75.686454612698 | 176.778068206958 | 0 | 0 | 176.778068206958 | BOS | BGE | |
+ 22 | 3 | 1 | 6 | 11 | 2 | 4 | 55.9572699755805 | 232.735338182539 | 0 | 0 | 232.735338182539 | MIA | TEB | 010100000000000000955040410000006017E164C1 |
+ 23 | 3 | 1 | 7 | 11 | 3 | 0 | 39.9772350000597 | 272.712573182599 | 0 | 0 | 272.712573182599 | MIA | TEB | |
+ 24 | 3 | 1 | 8 | -1 | 6 | 0 | 0 | 272.712573182599 | 0 | 0 | 272.712573182599 | | | |
+ 25 | 4 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | | |
+ 26 | 4 | 1 | 2 | 13 | 2 | 4 | 39.9772350000597 | 39.9772350000597 | 140.02276499994 | 0 | 180 | MIA | ABE | 0101000000000000006F0E3F4100000020DF0B65C1 |
+ 27 | 4 | 1 | 3 | 13 | 3 | 0 | 28.5118433343058 | 208.511843334306 | 0 | 0 | 208.511843334306 | MIA | ABE | |
+ 28 | 4 | 1 | 4 | -1 | 6 | 0 | 13.5298251271035 | 222.041668461409 | 0 | 0 | 222.041668461409 | | | |
+ 29 | 5 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | | |
+ 30 | 5 | 1 | 2 | 14 | 2 | 4 | 39.9772350000597 | 39.9772350000597 | 140.02276499994 | 0 | 180 | MIA | BKW | 01010000000000000021183941000000E01AAA65C1 |
+ 31 | 5 | 1 | 3 | 14 | 3 | 0 | 33.9449561967607 | 213.944956196761 | 0 | 0 | 213.944956196761 | MIA | BKW | |
+ 32 | 5 | 1 | 4 | -1 | 6 | 0 | 64.2921582205015 | 278.237114417262 | 0 | 0 | 278.237114417262 | | | |
+ 33 | 6 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | | |
+ 34 | 6 | 1 | 2 | 6 | 2 | 3 | 44.2576720187585 | 44.2576720187585 | 75.7423279812415 | 0 | 120 | BGR | TEB | 010100000000000000955040410000006017E164C1 |
+ 35 | 6 | 1 | 3 | 6 | 3 | 0 | 44.2576720187585 | 164.257672018759 | 0 | 0 | 164.257672018759 | BGR | TEB | |
+ 36 | 6 | 1 | 4 | -1 | 6 | 0 | 0 | 164.257672018759 | 0 | 0 | 164.257672018759 | | | |
+ 37 | 7 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | | |
+ 38 | 7 | 1 | 2 | 2 | 2 | 2 | 27.6594626905513 | 27.6594626905513 | 32.3405373094487 | 0 | 60 | BOS | MVY | 01010000000000008011374241000000E0DC6D64C1 |
+ 39 | 7 | 1 | 3 | 2 | 3 | 0 | 7.23856548910072 | 67.2385654891007 | 0 | 0 | 67.2385654891007 | BOS | MVY | |
+ 40 | 7 | 1 | 4 | -1 | 6 | 0 | 34.3120504640862 | 101.550615953187 | 0 | 0 | 101.550615953187 | | | |
+ 41 | 8 | -1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | | | |
+ 42 | 8 | -1 | 2 | 10 | 2 | 3 | 44.2576720187585 | 44.2576720187585 | 75.7423279812415 | 0 | 120 | BGR | BGE | 0101000000000000007F5F36410000002086FF65C1 | 01020000207308000002000000000000007F5F36410000002086FF65C1000000007F5F36410000002086FF65C1
+ 43 | 8 | -1 | 3 | 15 | 2 | 7 | 83.8882940842761 | 203.888294084276 | 0 | 0 | 203.888294084276 | MIA | BGE | 0101000000000000007F5F36410000002086FF65C1 |
+ 44 | 8 | -1 | 4 | 15 | 3 | 3 | 55.9572699755805 | 259.845564059857 | 0 | 0 | 259.845564059857 | MIA | BGE | |
+ 45 | 8 | -1 | 5 | 10 | 3 | 0 | 0 | 259.845564059857 | 0 | 0 | 259.845564059857 | BGR | BGE | |
+ 46 | 8 | -1 | 6 | -1 | 6 | 0 | 89.2149000020176 | 349.060464061874 | 0 | 0 | 349.060464061874 | | | |
+ 47 | -2 | 0 | 0 | -1 | -1 | -1 | 1318.39581333738 | -1 | 656.006409975332 | 0 | 1974.40222331272 | | | |
+(47 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/pickDeliver/test/book_from_query.test.sql b/src/pickDeliver/test/book_from_query.test.sql
new file mode 100644
index 0000000..a3c648e
--- /dev/null
+++ b/src/pickDeliver/test/book_from_query.test.sql
@@ -0,0 +1,115 @@
+DROP TABLE IF EXISTS jet_stops;
+DROP TABLE IF EXISTS jet_flyers;
+DROP TABLE IF EXISTS jet_orders;
+DROP TABLE IF EXISTS jet_airplane;
+DROP TABLE IF EXISTS jet_trips;
+DROP TABLE IF EXISTS vrp_solution;
+
+CREATE TABLE jet_stops (
+ id SERIAL,
+ iata_faa TEXT,
+ city TEXT,
+ x integer,
+ y integer,
+ longitude double precision,
+ latitude double precision
+);
+
+
+INSERT INTO jet_stops (iata_faa, city, longitude, latitude) VALUES
+('BOS', 'Boston', -71.005180999999993, 42.364347000000002),
+('BGR', 'Bangor', -68.828138999999993, 44.807443999999997),
+('MIA', 'Miami', -80.290555999999995, 25.79325),
+('TEB', 'Teterboro NJ', -74.060837000000006, 40.850102999999997),
+('MVY', 'Martha''s Vineyard', -70.615278000000004, 41.391666999999998),
+('ABE', 'Lehigh Valley', -75.440805999999995, 40.652082999999998),
+('BKW', 'Raleigh County Memorial', -81.124200000000002, 37.787300000000002),
+('BGE', 'Decatur County Industrial', -84.636927799999995, 30.971598100000001);
+
+
+UPDATE jet_stops SET
+x = ST_X(ST_Transform(ST_SetSRID(ST_point(longitude, latitude)::geometry,4326),2163)),
+y = ST_Y(ST_Transform(ST_SetSRID(ST_point(longitude, longitude)::geometry,4326),2163));
+
+
+CREATE TABLE jet_flyers AS
+ SELECT
+ row_number() over() AS id,
+ s1.iata_faa AS from_airport,
+ s2.iata_faa AS to_airport,
+ (1 + mod(s1.id, 5))::integer AS num_passengers,
+ -- the passengers don't want to depart before this time
+ mod(s1.id,7)*60 AS departureFromTime,
+ -- the passengers don't want to arrive after this time
+ (mod(s1.id,7) + 4) * 60 AS arrivalToTime
+ FROM
+ -- people departing from BOS BGR MIA TEB
+ (SELECT * FROM jet_stops WHERE id < 4) AS s1,
+ -- people want to go to MVY ABE BKW BGE
+ (SELECT * FROM jet_stops WHERE id >= 4) AS s2
+ WHERE s1.id <> s2.id;
+
+
+-- Listing Create jet_orders table to be used in pgr_pickDeliverEuclidean
+CREATE TABLE jet_orders AS
+ SELECT
+ id,
+ num_passengers AS demand,
+ (SELECT x FROM jet_stops WHERE iata_faa = jet_flyers.from_airport) AS p_x,
+ (SELECT y FROM jet_stops WHERE iata_faa = jet_flyers.from_airport) AS p_y,
+
+ departureFromTime AS p_open,
+ arrivalToTime AS p_close,
+
+ (SELECT x FROM jet_stops WHERE iata_faa = jet_flyers.to_airport) AS d_x,
+ (SELECT y FROM jet_stops WHERE iata_faa = jet_flyers.to_airport) AS d_y,
+
+ departureFromTime AS d_open,
+ arrivalToTime AS d_close,
+
+ from_airport, to_airport
+
+ FROM jet_flyers;
+
+
+--
+CREATE TABLE jet_airplane AS
+SELECT
+ 1 AS id,
+ -- small plane
+ 5 AS capacity,
+ -- not so fast
+ 10000 AS speed, -- mts/min
+ 20 as "number",
+ x AS start_x, y AS start_y,
+ 0 AS start_open,
+ 300 AS start_close,
+ 0 AS start_service
+ FROM jet_stops
+ WHERE iata_faa = 'TEB';
+
+CREATE TABLE vrp_solution AS
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$ SELECT * FROM jet_orders $$,
+ $$ SELECT * FROM jet_airplane $$
+);
+
+
+CREATE TABLE jet_trips AS
+WITH the_results AS (
+SELECT vrp_solution.*, from_airport, to_airport,
+CASE WHEN stop_type = 1 THEN ST_POINT(p_x, p_y)
+ WHEN stop_type = 2 THEN ST_POINT(d_x, d_y)
+ WHEN stop_type = 0 THEN ST_POINT(start_x, start_y)
+ END AS geom
+FROM vrp_solution LEFT JOIN jet_orders on (order_id = jet_orders.id)
+LEFT JOIN jet_airplane on (vehicle_id = jet_airplane.id)
+)
+SELECT *, ST_SetSRID(ST_MakeLine(geom, lead(geom) over(order by seq)),2163) AS lines from the_results;
+
+
+SELECT * FROM jet_orders;
+
+SELECT * FROM jet_trips;
+
+
diff --git a/doc/test/CMakeLists.txt b/src/pickDeliver/test/book_vrp.result
similarity index 100%
rename from doc/test/CMakeLists.txt
rename to src/pickDeliver/test/book_vrp.result
diff --git a/src/pickDeliver/test/book_vrp.test.sql b/src/pickDeliver/test/book_vrp.test.sql
new file mode 100644
index 0000000..4c09696
--- /dev/null
+++ b/src/pickDeliver/test/book_vrp.test.sql
@@ -0,0 +1,664 @@
+DROP TABLE IF EXISTS jet_customers;
+
+
+/*
+CREATE TABLE trucks(id integer primary key, truck_name varchar(75), capacity integer );
+INSERT INTO trucks(id, truck_name, capacity)
+VALUES (1, 'Hardy Truck', 800),
+ (2, 'Laurel Truck', 400);
+
+CREATE TABLE restaurants_99(id integer primary key, loc_name varchar(150), lon float, lat float);
+INSERT INTO restaurants_99(id, loc_name, lon, lat)
+VALUES (1, 'Bristol, CT', -72.8924, 41.66892),
+ (2, 'Cromwell, CT', -72.67615, 41.60165),
+ (3, 'Danbury, CT', -73.41376, 41.41008),
+ (4, 'Enfield, CT', -72.57634, 41.98837),
+ (5, 'Glastonbury, CT', -72.61592, 41.72646),
+ (6, 'Groton, CT', -72.06683, 41.36298),
+ (7, 'Dayville, CT', -71.8824882, 41.8425568),
+ (8, 'Norwich, CT', -72.10508, 41.51431),
+ (9, 'Stratford, CT', -73.12182, 41.19878),
+ (10, 'Torrington, CT', -73.12131, 41.79984),
+ (11, 'Vernon, CT', -72.49305, 41.82647),
+ (12, 'Wallingford, CT', -72.8092, 41.4835);
+*/
+
+CREATE TABLE jet_customers (
+ airport character varying,
+ id integer,
+ x double precision,
+ y double precision,
+ pindex integer,
+ dindex integer,
+ demand integer,
+ opentime double precision,
+ closetime double precision,
+ servicetime double precision
+);
+
+
+/*
+--
+-- TOC entry 290 (class 1259 OID 6616043)
+-- Name: vrp1_cost; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE vrp1_cost (
+ src_id integer,
+ dest_id integer,
+ cost double precision,
+ distance double precision,
+ traveltime double precision
+);
+
+
+
+--
+-- TOC entry 291 (class 1259 OID 6616046)
+-- Name: vrp1_gdist; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE vrp1_gdist (
+ src_id integer,
+ dest_id integer,
+ cost double precision,
+ distance double precision,
+ traveltime double precision
+);
+
+
+--
+-- TOC entry 285 (class 1259 OID 6607823)
+-- Name: vrp1_orders; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE vrp1_orders (
+ id integer,
+ x numeric,
+ y numeric,
+ order_unit integer,
+ open_time integer,
+ close_time integer,
+ service_time integer
+);
+
+
+
+--
+-- TOC entry 289 (class 1259 OID 6616034)
+-- Name: vrp1_points; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE vrp1_points (
+ id integer,
+ pid integer,
+ geom geometry(Point,4326),
+ edge_id integer,
+ fraction double precision,
+ closest_node integer
+);
+
+
+--
+-- TOC entry 297 (class 1259 OID 8777648)
+-- Name: vrpdtw_beer; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE vrpdtw_beer (
+ rid integer,
+ id integer,
+ x double precision,
+ y double precision,
+ opentime integer,
+ closetime integer,
+ servicetime integer,
+ demand integer,
+ pindex integer,
+ dindex integer
+);
+*/
+
+--
+
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 1, 2320738.4688434978, 126348.38967116659, 0, 2, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 3, 2320738.4688434978, 126348.38967116659, 0, 4, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 5, 2320738.4688434978, 126348.38967116659, 0, 6, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 7, 2320738.4688434978, 126348.38967116659, 0, 8, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 9, 2320738.4688434978, 126348.38967116659, 0, 10, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 11, 2320738.4688434978, 126348.38967116659, 0, 12, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 13, 2383186.1525343237, 448251.25888828852, 0, 14, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 15, 2383186.1525343237, 448251.25888828852, 0, 16, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 17, 2383186.1525343237, 448251.25888828852, 0, 18, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 19, 2383186.1525343237, 448251.25888828852, 0, 20, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 21, 2383186.1525343237, 448251.25888828852, 0, 22, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 23, 2383186.1525343237, 448251.25888828852, 0, 24, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 25, 1981144.5525029898, -1903041.2384292425, 0, 26, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 27, 1981144.5525029898, -1903041.2384292425, 0, 28, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 29, 1981144.5525029898, -1903041.2384292425, 0, 30, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 31, 1981144.5525029898, -1903041.2384292425, 0, 32, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 33, 1981144.5525029898, -1903041.2384292425, 0, 34, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 35, 1981144.5525029898, -1903041.2384292425, 0, 36, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 37, 2138409.5568088419, -119451.50568778868, 0, 38, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 39, 2138409.5568088419, -119451.50568778868, 0, 40, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 41, 2138409.5568088419, -119451.50568778868, 0, 42, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 43, 2138409.5568088419, -119451.50568778868, 0, 44, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 45, 2138409.5568088419, -119451.50568778868, 0, 46, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 47, 2138409.5568088419, -119451.50568778868, 0, 48, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 49, 2387491.1007072991, 34459.351848672632, 0, 50, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 51, 2387491.1007072991, 34459.351848672632, 0, 52, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 53, 2387491.1007072991, 34459.351848672632, 0, 54, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 55, 2387491.1007072991, 34459.351848672632, 0, 56, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 57, 2387491.1007072991, 34459.351848672632, 0, 58, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 59, 2387491.1007072991, 34459.351848672632, 0, 60, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 61, 2035310.7411768832, -176076.78362264115, 0, 62, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 63, 2035310.7411768832, -176076.78362264115, 0, 64, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 65, 2035310.7411768832, -176076.78362264115, 0, 66, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 67, 2035310.7411768832, -176076.78362264115, 0, 68, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 69, 2035310.7411768832, -176076.78362264115, 0, 70, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 71, 2035310.7411768832, -176076.78362264115, 0, 72, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 2, 2320738.4688434978, 126348.38967116659, 1, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 4, 2383186.1525343237, 448251.25888828852, 3, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 6, 1981144.5525029898, -1903041.2384292425, 5, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 8, 2138409.5568088419, -119451.50568778868, 7, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 10, 2387491.1007072991, 34459.351848672632, 9, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 12, 2035310.7411768832, -176076.78362264115, 11, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 14, 2320738.4688434978, 126348.38967116659, 13, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 16, 2383186.1525343237, 448251.25888828852, 15, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 18, 1981144.5525029898, -1903041.2384292425, 17, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 20, 2138409.5568088419, -119451.50568778868, 19, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 22, 2387491.1007072991, 34459.351848672632, 21, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 24, 2035310.7411768832, -176076.78362264115, 23, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 26, 2320738.4688434978, 126348.38967116659, 25, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 28, 2383186.1525343237, 448251.25888828852, 27, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 30, 1981144.5525029898, -1903041.2384292425, 29, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 32, 2138409.5568088419, -119451.50568778868, 31, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 34, 2387491.1007072991, 34459.351848672632, 33, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 36, 2035310.7411768832, -176076.78362264115, 35, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 38, 2320738.4688434978, 126348.38967116659, 37, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 40, 2383186.1525343237, 448251.25888828852, 39, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 42, 1981144.5525029898, -1903041.2384292425, 41, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 44, 2138409.5568088419, -119451.50568778868, 43, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 46, 2387491.1007072991, 34459.351848672632, 45, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 48, 2035310.7411768832, -176076.78362264115, 47, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 50, 2320738.4688434978, 126348.38967116659, 49, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 52, 2383186.1525343237, 448251.25888828852, 51, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 54, 1981144.5525029898, -1903041.2384292425, 53, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 56, 2138409.5568088419, -119451.50568778868, 55, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 58, 2387491.1007072991, 34459.351848672632, 57, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 60, 2035310.7411768832, -176076.78362264115, 59, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 62, 2320738.4688434978, 126348.38967116659, 61, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 64, 2383186.1525343237, 448251.25888828852, 63, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 66, 1981144.5525029898, -1903041.2384292425, 65, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 68, 2138409.5568088419, -119451.50568778868, 67, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 70, 2387491.1007072991, 34459.351848672632, 69, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 72, 2035310.7411768832, -176076.78362264115, 71, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 0, 2138409.5568088419, -119451.50568778868, 0, 0, 0, 0, 7200000, 0);
+
+/*
+--
+-- TOC entry 4292 (class 0 OID 6616043)
+-- Dependencies: 290
+-- Data for Name: vrp1_cost; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 13, 2953.093354567417, 60557.741467469998, 49.218222576123615);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 13, 2951.4358855784913, 46704.633074669997, 49.190598092974852);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 13, 1933.2635307127596, 29674.281907879998, 32.22105884521266);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 13, 4891.243355445933, 78590.388493249993, 81.520722590765544);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 13, 4564.0248344551255, 55146.744125789999, 76.067080574252088);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 13, 358.9916907880604, 4717.2985756400003, 5.983194846467673);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 13, 5126.2324354788034, 62516.944979489999, 85.437207257980063);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 13, 6000.6726547073304, 97970.007298349999, 100.01121091178884);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 13, 4755.4348034907207, 100603.89591172, 79.257246724845345);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 13, 4138.1137957014362, 53942.09578946, 68.968563261690605);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 13, 2224.3765052979202, 44388.04507498, 37.072941754965335);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 13, 1469.4570414749417, 17611.434113070001, 24.490950691249029);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 12, 6552.1443518080496, 86875.647316550007, 109.20240586346749);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 12, 3675.7683635329909, 63485.069269129999, 61.262806058883179);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 12, 1826.0827112688785, 21731.213745190002, 30.434711854481307);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 12, 2681.3122972236029, 46309.024619509997, 44.688538287060048);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 12, 1020.3947307304589, 17188.5257222, 17.006578845507651);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 12, 2827.6100244902282, 43710.459317699999, 47.126833741503802);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 12, 3888.0148463653441, 51173.467957710003, 64.800247439422407);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 12, 2302.9311138070507, 41043.449335719997, 38.382185230117514);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 12, 4463.5497447224634, 58891.64477087, 74.39249574537439);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 12, 2647.2156693505872, 59326.863049970001, 44.120261155843117);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 12, 2983.3734066886564, 60557.741467469998, 49.722890111477604);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 12, 1517.9735472205105, 31428.651624779999, 25.29955912034184);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 11, 2745.3112518799626, 37544.1375137, 45.755187531332709);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 11, 4471.1319444284782, 87264.291763329995, 74.518865740474638);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 11, 4229.3311896072573, 52287.419420220001, 70.488853160120954);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 11, 4506.8776151690954, 62551.773221880001, 75.11462691948492);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 11, 5716.3697956450824, 89593.452941569994, 95.272829927418044);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 11, 1358.6096137713382, 15091.14100876, 22.643493562855635);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 11, 1654.544693329585, 19264.633366329999, 27.575744888826417);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 11, 2668.7904955051708, 46309.024619509997, 44.479841591752844);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 11, 1940.0736462356747, 29252.344344699999, 32.334560770594578);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 11, 1469.4570414749414, 17611.434113070001, 24.490950691249022);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 11, 4064.8414892363171, 50747.73846031, 67.74735815393862);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 11, 3895.6963212041123, 47391.047207520001, 64.928272020068533);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 10, 3368.9527734188123, 42809.778697560003, 56.149212890313535);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 10, 8182.3826173823836, 103032.57156053001, 136.37304362303973);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 10, 4258.7560110340182, 52287.419420220001, 70.979266850566972);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 10, 2839.6114198410569, 43099.30820806, 47.326856997350951);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 10, 1802.3572076471451, 23960.724915679999, 30.039286794119086);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 10, 3599.4301883137537, 49681.572728439998, 59.990503138562559);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 10, 4341.7812292867338, 66755.884535439996, 72.363020488112227);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 10, 3856.5004779654537, 49838.427136099999, 64.275007966090897);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 10, 6294.2596511785378, 90390.880059980002, 104.90432751964229);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 10, 5506.4782699890657, 100431.42119920001, 91.77463783315109);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 10, 2855.7053715208308, 43710.459317699999, 47.595089525347177);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 10, 4192.6582153035215, 53942.09578946, 69.877636921725355);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 9, 4325.4261283707883, 66755.884535439996, 72.090435472846465);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 9, 3398.8938935332781, 72255.826813129999, 56.648231558887964);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 9, 2901.3150770432248, 58231.554459619998, 48.35525128405375);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 9, 4528.1360156633564, 98787.207065139999, 75.46893359438927);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 9, 3788.1003008742573, 55624.35354348, 63.135005014570957);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 9, 4562.232643536373, 87264.291763329995, 76.037210725606215);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 9, 4821.657825336647, 92014.350547320006, 80.360963755610783);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 9, 8117.448634400117, 125749.52752643, 135.29081057333528);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 9, 4864.293753001426, 100603.89591172, 81.071562550023771);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 9, 4033.8764441471735, 90244.940354680002, 67.231274069119564);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 9, 2328.9720943505417, 41043.449335719997, 38.81620157250903);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 9, 2403.8510779993576, 33888.802388440003, 40.064184633322625);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 8, 6769.2775240040783, 109943.3259573, 112.82129206673464);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 8, 5019.7492752187654, 67853.964925620006, 83.662487920312756);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 8, 3295.7908090634696, 40898.252999240001, 54.929846817724496);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 8, 3571.0503376979805, 48617.072219770002, 59.517505628299674);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 8, 4729.9553726845033, 92014.350547320006, 78.832589544741722);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 8, 5123.9825769607578, 62516.944979489999, 85.399709616012629);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 8, 1419.3370493081236, 17108.384354760001, 23.655617488468728);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 8, 4462.5946410243814, 58891.64477087, 74.37657735040635);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 8, 3906.5702317981809, 48659.42172359, 65.109503863303019);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 8, 5406.1709302501031, 65640.18822928, 90.102848837501725);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 8, 6449.5678543462845, 90390.880059980002, 107.49279757243808);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 8, 3903.2468943918611, 47391.047207520001, 65.054114906531012);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 7, 6541.7293294122628, 86875.647316550007, 109.02882215687104);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 7, 9589.308629552168, 136345.04018709, 159.82181049253614);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 7, 8189.9389451185689, 103032.57156053001, 136.49898241864281);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 7, 3295.7035800954918, 40898.252999240001, 54.92839300159153);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 7, 4082.2196582153956, 50747.73846031, 68.036994303589921);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 7, 5106.1634678476485, 62318.437049, 85.102724464127476);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 7, 4426.6022183180712, 55437.00628994, 73.776703638634515);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 7, 5813.0124801427592, 71255.008476129995, 96.88354133571265);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 7, 8025.6589527799933, 125749.52752643, 133.76098254633322);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 7, 4565.7908933697781, 55146.744125789999, 76.096514889496305);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 7, 6646.402085744041, 86176.316629309993, 110.77336809573401);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 7, 4924.7825841578369, 59797.006035819999, 82.079709735963945);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 6, 4433.5593311775692, 55437.00628994, 73.89265551962616);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 6, 4943.220062989687, 78590.388493249993, 82.387001049828115);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 6, 3663.4860364258975, 63485.069269129999, 61.058100607098289);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 6, 4496.7745274249164, 62551.773221880001, 74.946242123748604);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 6, 5650.4592497478006, 100431.42119920001, 94.174320829130011);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 6, 3930.8467680860199, 90244.940354680002, 65.514112801433669);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 6, 1427.2238809627568, 17108.384354760001, 23.787064682712614);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 6, 3477.8202035215431, 61063.323590389999, 57.963670058692387);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 6, 4607.0623256516183, 81392.253960899994, 76.784372094193643);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 6, 5970.1689194055944, 112779.81503285001, 99.502815323426574);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 6, 2771.9417330994952, 57379.320287560004, 46.199028884991584);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 6, 4220.6406706202815, 76835.995936859996, 70.344011177004688);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 5, 1958.2616125989289, 23885.506073140001, 32.637693543315478);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 5, 1532.4187981313769, 31428.651624779999, 25.540313302189613);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 5, 3929.4957334296996, 48659.42172359, 65.491595557161659);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 5, 1958.1139397295849, 29674.281907879998, 32.635232328826412);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 5, 5107.3400430688225, 62318.437049, 85.122334051147035);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 5, 3519.5932763961732, 42809.778697560003, 58.659887939936219);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 5, 3334.7602470546817, 72255.826813129999, 55.57933745091136);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 5, 1621.9562023915164, 29275.540332420002, 27.03260337319194);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 5, 803.70194886187926, 14741.93432463, 13.39503248103132);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 5, 4579.9980982712887, 75253.614561519993, 76.333301637854817);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 5, 1337.554729509015, 15091.14100876, 22.292578825150251);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 5, 3470.5687990098932, 61063.323590389999, 57.842813316831553);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 4, 2616.215006867988, 59326.863049970001, 43.603583447799799);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 4, 1655.8289719890095, 19264.633366329999, 27.597149533150159);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 4, 1887.4981575984907, 43746.497693609999, 31.458302626641512);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 4, 4923.0165252431843, 59797.006035819999, 82.050275420719743);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 4, 5342.146388935982, 65640.18822928, 89.035773148933032);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 4, 4418.556455791293, 98787.207065139999, 73.642607596521557);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 4, 358.9916907880604, 4717.2985756400003, 5.983194846467673);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 4, 3801.2354480020076, 49838.427136099999, 63.353924133366796);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 4, 2614.5575378790622, 44139.442491629998, 43.575958964651036);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 4, 5663.7943070079027, 94785.168599109995, 94.396571783465049);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 4, 4554.3650077465054, 81392.253960899994, 75.906083462441757);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 4, 1596.3851830133301, 29275.540332420002, 26.606419716888833);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 3, 4354.0799478841718, 51173.467957710003, 72.567999131402857);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 3, 6464.3892097938715, 97970.007298349999, 107.73982016323119);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 3, 10033.160154913267, 136345.04018709, 167.21933591522111);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 3, 4016.3136218536224, 49681.572728439998, 66.938560364227044);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 3, 6162.3281003288175, 89593.452941569994, 102.70546833881363);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 3, 2746.7160740841282, 33888.802388440003, 45.778601234735468);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 3, 4998.9893503257272, 75253.614561519993, 83.316489172095459);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 3, 7276.4598265076593, 109943.3259573, 121.27433044179432);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 3, 4325.3148995953306, 52145.170245989997, 72.088581659922184);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 3, 6128.2314724558018, 94785.168599109995, 102.1371912075967);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 3, 6488.6784453181817, 112779.81503285001, 108.14464075530303);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 3, 4501.4105338356794, 65153.684267479999, 75.023508897261323);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (1, 2, 1536.6099447776205, 19506.03254122, 25.610165746293674);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 2, 5827.9602822664219, 71255.008476129995, 97.132671371107037);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 2, 3571.4879476634851, 48617.072219770002, 59.524799127724755);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 2, 793.78947767888133, 14741.93432463, 13.229824627981355);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 2, 2787.0688014921589, 58231.554459619998, 46.451146691535982);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 2, 1923.0315998089593, 43746.497693609999, 32.050526663482657);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 2, 2971.9018308336504, 43099.30820806, 49.53169718056084);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 2, 4032.3066527087663, 65153.684267479999, 67.205110878479431);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 2, 1957.1282276819745, 29252.344344699999, 32.618803794699573);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 2, 984.72735256885392, 17188.5257222, 16.412122542814231);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 2, 2259.1893371470278, 44388.04507498, 37.653155619117129);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 2, 2783.7065664740117, 57379.320287560004, 46.395109441233529);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (3, 1, 3909.9615503187342, 52145.170245989997, 65.166025838645567);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (11, 1, 2796.4128490759304, 37544.1375137, 46.606880817932172);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (13, 1, 3063.0403515469643, 46704.633074669997, 51.050672525782737);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (6, 1, 3770.599595643097, 76835.995936859996, 62.843326594051618);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (10, 1, 1806.0013795626483, 23960.724915679999, 30.100022992710805);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (4, 1, 2726.8826142088951, 44139.442491629998, 45.448043570148251);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (9, 1, 3680.3813452318182, 55624.35354348, 61.339689087196966);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (5, 1, 1633.0740990728355, 23885.506073140001, 27.217901651213925);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (7, 1, 6667.2449036603712, 86176.316629309993, 111.12074839433951);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (8, 1, 4558.3809768325664, 67853.964925620006, 75.97301628054278);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (12, 1, 1833.1811824131848, 21731.213745190002, 30.553019706886413);
+INSERT INTO vrp1_cost (src_id, dest_id, cost, distance, traveltime) VALUES (2, 1, 1103.7327454950807, 19506.03254122, 18.395545758251345);
+
+
+--
+-- TOC entry 4293 (class 0 OID 6616046)
+-- Dependencies: 291
+-- Data for Name: vrp1_gdist; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 2, 19506.03254122, 19506.03254122, 0.0065020108470733333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 3, 52145.170245989997, 52145.170245989997, 0.017381723415329998);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 4, 44139.442491629998, 44139.442491629998, 0.01471314749721);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 5, 23885.506073140001, 23885.506073140001, 0.0079618353577133334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 6, 76835.995936859996, 76835.995936859996, 0.025611998645620002);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 7, 86176.316629309993, 86176.316629309993, 0.028725438876436662);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 8, 67853.964925620006, 67853.964925620006, 0.022617988308540001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 9, 55624.35354348, 55624.35354348, 0.018541451181160001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 10, 23960.724915679999, 23960.724915679999, 0.0079869083052266678);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 11, 37544.1375137, 37544.1375137, 0.012514712504566667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 12, 21731.213745190002, 21731.213745190002, 0.0072437379150633334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (1, 13, 46704.633074669997, 46704.633074669997, 0.01556821102489);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 1, 19506.03254122, 19506.03254122, 0.0065020108470733333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 3, 65153.684267479999, 65153.684267479999, 0.02171789475582667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 4, 43746.497693609999, 43746.497693609999, 0.01458216589787);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 5, 14741.93432463, 14741.93432463, 0.0049139781082099994);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 6, 57379.320287560004, 57379.320287560004, 0.019126440095853337);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 7, 71255.008476129995, 71255.008476129995, 0.023751669492043333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 8, 48617.072219770002, 48617.072219770002, 0.016205690739923333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 9, 58231.554459619998, 58231.554459619998, 0.019410518153206668);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 10, 43099.30820806, 43099.30820806, 0.014366436069353334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 11, 29252.344344699999, 29252.344344699999, 0.0097507814482333324);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 12, 17188.5257222, 17188.5257222, 0.0057295085740666669);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (2, 13, 44388.04507498, 44388.04507498, 0.014796015024993333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 1, 52145.170245989997, 52145.170245989997, 0.017381723415329998);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 2, 65153.684267479999, 65153.684267479999, 0.02171789475582667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 4, 94785.168599109995, 94785.168599109995, 0.031595056199703334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 5, 75253.614561519993, 75253.614561519993, 0.025084538187173332);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 6, 112779.81503285001, 112779.81503285001, 0.037593271677616676);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 7, 136345.04018709, 136345.04018709, 0.045448346729030004);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 8, 109943.3259573, 109943.3259573, 0.036647775319099997);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 9, 33888.802388440003, 33888.802388440003, 0.011296267462813335);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 10, 49681.572728439998, 49681.572728439998, 0.016560524242813332);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 11, 89593.452941569994, 89593.452941569994, 0.029864484313856667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 12, 51173.467957710003, 51173.467957710003, 0.017057822652570002);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (3, 13, 97970.007298349999, 97970.007298349999, 0.032656669099449996);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 1, 44139.442491629998, 44139.442491629998, 0.01471314749721);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 2, 43746.497693609999, 43746.497693609999, 0.01458216589787);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 3, 94785.168599109995, 94785.168599109995, 0.031595056199703334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 5, 29275.540332420002, 29275.540332420002, 0.0097585134441400007);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 6, 81392.253960899994, 81392.253960899994, 0.0271307513203);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 7, 59797.006035819999, 59797.006035819999, 0.019932335345273333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 8, 65640.18822928, 65640.18822928, 0.021880062743093332);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 9, 98787.207065139999, 98787.207065139999, 0.032929069021713331);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 10, 49838.427136099999, 49838.427136099999, 0.016612809045366668);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 11, 19264.633366329999, 19264.633366329999, 0.0064215444554433336);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 12, 59326.863049970001, 59326.863049970001, 0.019775621016656666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (4, 13, 4717.2985756400003, 4717.2985756400003, 0.0015724328585466666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 1, 23885.506073140001, 23885.506073140001, 0.0079618353577133334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 2, 14741.93432463, 14741.93432463, 0.0049139781082099994);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 3, 75253.614561519993, 75253.614561519993, 0.025084538187173332);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 4, 29275.540332420002, 29275.540332420002, 0.0097585134441400007);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 6, 61063.323590389999, 61063.323590389999, 0.020354441196796667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 7, 62318.437049, 62318.437049, 0.020772812349666669);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 8, 48659.42172359, 48659.42172359, 0.016219807241196666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 9, 72255.826813129999, 72255.826813129999, 0.024085275604376667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 10, 42809.778697560003, 42809.778697560003, 0.014269926232520002);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 11, 15091.14100876, 15091.14100876, 0.0050303803362533334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 12, 31428.651624779999, 31428.651624779999, 0.010476217208259999);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (5, 13, 29674.281907879998, 29674.281907879998, 0.0098914273026266646);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 1, 76835.995936859996, 76835.995936859996, 0.025611998645620002);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 2, 57379.320287560004, 57379.320287560004, 0.019126440095853337);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 3, 112779.81503285001, 112779.81503285001, 0.037593271677616676);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 4, 81392.253960899994, 81392.253960899994, 0.0271307513203);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 5, 61063.323590389999, 61063.323590389999, 0.020354441196796667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 7, 55437.00628994, 55437.00628994, 0.018479002096646668);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 8, 17108.384354760001, 17108.384354760001, 0.0057027947849200003);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 9, 90244.940354680002, 90244.940354680002, 0.030081646784893331);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 10, 100431.42119920001, 100431.42119920001, 0.033477140399733339);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 11, 62551.773221880001, 62551.773221880001, 0.020850591073959999);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 12, 63485.069269129999, 63485.069269129999, 0.021161689756376667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (6, 13, 78590.388493249993, 78590.388493249993, 0.026196796164416662);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 1, 86176.316629309993, 86176.316629309993, 0.028725438876436662);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 2, 71255.008476129995, 71255.008476129995, 0.023751669492043333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 3, 136345.04018709, 136345.04018709, 0.045448346729030004);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 4, 59797.006035819999, 59797.006035819999, 0.019932335345273333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 5, 62318.437049, 62318.437049, 0.020772812349666669);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 6, 55437.00628994, 55437.00628994, 0.018479002096646668);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 8, 40898.252999240001, 40898.252999240001, 0.013632750999746666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 9, 125749.52752643, 125749.52752643, 0.041916509175476666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 10, 103032.57156053001, 103032.57156053001, 0.034344190520176669);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 11, 50747.73846031, 50747.73846031, 0.016915912820103334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 12, 86875.647316550007, 86875.647316550007, 0.028958549105516665);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (7, 13, 55146.744125789999, 55146.744125789999, 0.018382248041930001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 1, 67853.964925620006, 67853.964925620006, 0.022617988308540001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 2, 48617.072219770002, 48617.072219770002, 0.016205690739923333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 3, 109943.3259573, 109943.3259573, 0.036647775319099997);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 4, 65640.18822928, 65640.18822928, 0.021880062743093332);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 5, 48659.42172359, 48659.42172359, 0.016219807241196666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 6, 17108.384354760001, 17108.384354760001, 0.0057027947849200003);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 7, 40898.252999240001, 40898.252999240001, 0.013632750999746666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 9, 92014.350547320006, 92014.350547320006, 0.030671450182440003);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 10, 90390.880059980002, 90390.880059980002, 0.030130293353326669);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 11, 47391.047207520001, 47391.047207520001, 0.015797015735840001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 12, 58891.64477087, 58891.64477087, 0.019630548256956665);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (8, 13, 62516.944979489999, 62516.944979489999, 0.020838981659829999);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 1, 55624.35354348, 55624.35354348, 0.018541451181160001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 2, 58231.554459619998, 58231.554459619998, 0.019410518153206668);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 3, 33888.802388440003, 33888.802388440003, 0.011296267462813335);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 4, 98787.207065139999, 98787.207065139999, 0.032929069021713331);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 5, 72255.826813129999, 72255.826813129999, 0.024085275604376667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 6, 90244.940354680002, 90244.940354680002, 0.030081646784893331);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 7, 125749.52752643, 125749.52752643, 0.041916509175476666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 8, 92014.350547320006, 92014.350547320006, 0.030671450182440003);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 10, 66755.884535439996, 66755.884535439996, 0.022251961511813335);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 11, 87264.291763329995, 87264.291763329995, 0.029088097254443331);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 12, 41043.449335719997, 41043.449335719997, 0.013681149778573333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (9, 13, 100603.89591172, 100603.89591172, 0.033534631970573339);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 1, 23960.724915679999, 23960.724915679999, 0.0079869083052266678);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 2, 43099.30820806, 43099.30820806, 0.014366436069353334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 3, 49681.572728439998, 49681.572728439998, 0.016560524242813332);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 4, 49838.427136099999, 49838.427136099999, 0.016612809045366668);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 5, 42809.778697560003, 42809.778697560003, 0.014269926232520002);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 6, 100431.42119920001, 100431.42119920001, 0.033477140399733339);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 7, 103032.57156053001, 103032.57156053001, 0.034344190520176669);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 8, 90390.880059980002, 90390.880059980002, 0.030130293353326669);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 9, 66755.884535439996, 66755.884535439996, 0.022251961511813335);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 11, 52287.419420220001, 52287.419420220001, 0.017429139806740001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 12, 43710.459317699999, 43710.459317699999, 0.014570153105900001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (10, 13, 53942.09578946, 53942.09578946, 0.017980698596486665);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 1, 37544.1375137, 37544.1375137, 0.012514712504566667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 2, 29252.344344699999, 29252.344344699999, 0.0097507814482333324);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 3, 89593.452941569994, 89593.452941569994, 0.029864484313856667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 4, 19264.633366329999, 19264.633366329999, 0.0064215444554433336);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 5, 15091.14100876, 15091.14100876, 0.0050303803362533334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 6, 62551.773221880001, 62551.773221880001, 0.020850591073959999);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 7, 50747.73846031, 50747.73846031, 0.016915912820103334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 8, 47391.047207520001, 47391.047207520001, 0.015797015735840001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 9, 87264.291763329995, 87264.291763329995, 0.029088097254443331);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 10, 52287.419420220001, 52287.419420220001, 0.017429139806740001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 12, 46309.024619509997, 46309.024619509997, 0.015436341539836666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (11, 13, 17611.434113070001, 17611.434113070001, 0.0058704780376900006);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 1, 21731.213745190002, 21731.213745190002, 0.0072437379150633334);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 2, 17188.5257222, 17188.5257222, 0.0057295085740666669);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 3, 51173.467957710003, 51173.467957710003, 0.017057822652570002);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 4, 59326.863049970001, 59326.863049970001, 0.019775621016656666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 5, 31428.651624779999, 31428.651624779999, 0.010476217208259999);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 6, 63485.069269129999, 63485.069269129999, 0.021161689756376667);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 7, 86875.647316550007, 86875.647316550007, 0.028958549105516665);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 8, 58891.64477087, 58891.64477087, 0.019630548256956665);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 9, 41043.449335719997, 41043.449335719997, 0.013681149778573333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 10, 43710.459317699999, 43710.459317699999, 0.014570153105900001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 11, 46309.024619509997, 46309.024619509997, 0.015436341539836666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (12, 13, 60557.741467469998, 60557.741467469998, 0.020185913822489999);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 1, 46704.633074669997, 46704.633074669997, 0.01556821102489);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 2, 44388.04507498, 44388.04507498, 0.014796015024993333);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 3, 97970.007298349999, 97970.007298349999, 0.032656669099449996);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 4, 4717.2985756400003, 4717.2985756400003, 0.0015724328585466666);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 5, 29674.281907879998, 29674.281907879998, 0.0098914273026266646);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 6, 78590.388493249993, 78590.388493249993, 0.026196796164416662);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 7, 55146.744125789999, 55146.744125789999, 0.018382248041930001);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 8, 62516.944979489999, 62516.944979489999, 0.020838981659829999);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 9, 100603.89591172, 100603.89591172, 0.033534631970573339);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 10, 53942.09578946, 53942.09578946, 0.017980698596486665);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 11, 17611.434113070001, 17611.434113070001, 0.0058704780376900006);
+INSERT INTO vrp1_gdist (src_id, dest_id, cost, distance, traveltime) VALUES (13, 12, 60557.741467469998, 60557.741467469998, 0.020185913822489999);
+
+
+--
+-- TOC entry 4290 (class 0 OID 6607823)
+-- Dependencies: 285
+-- Data for Name: vrp1_orders; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (1, -72.892400, 41.668920, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (2, -72.676150, 41.601650, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (3, -73.413760, 41.410080, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (4, -72.576340, 41.988370, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (5, -72.615920, 41.726460, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (6, -72.066830, 41.362980, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (7, -71.882488, 41.842557, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (8, -72.105080, 41.514310, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (9, -73.121820, 41.198780, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (10, -73.121310, 41.799840, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (11, -72.493050, 41.826470, 250, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (12, -72.809200, 41.483500, 25, 60, 780, 20);
+INSERT INTO vrp1_orders (id, x, y, order_unit, open_time, close_time, service_time) VALUES (13, -72.51975, 41.98377, 0, 0, 800, 0);
+
+
+--
+-- TOC entry 4291 (class 0 OID 6616034)
+-- Dependencies: 289
+-- Data for Name: vrp1_points; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (1, -1, '0101000020E6100000D3BCE3141D3952C0F6D1A92B9FD54440', 134983, 0.38479479629572311, 69021);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (2, -2, '0101000020E6100000304CA60A462B52C0B7D100DE02CD4440', 156235, 0.60081527076326913, 174662);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (3, -3, '0101000020E61000002619390B7B5A52C0315F5E807DB44440', 155907, 0.60929293991596534, 127670);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (4, -4, '0101000020E61000001BD82AC1E22452C07C2C7DE882FE4440', 82159, 0.1088234404534253, 56829);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (5, -5, '0101000020E6100000F33CB83B6B2752C014ED2AA4FCDC4440', 226752, 0.87665768706747127, 129246);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (6, -6, '0101000020E6100000111956F1460452C0118DEE2076AE4440', 133685, 0.91338793111615413, 28564);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (7, -7, '0101000020E610000032C7F2AE7AF851C0080264E8D8EB4440', 263400, 0.83072231921053108, 196779);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (8, -8, '0101000020E6100000ADDD76A1B90652C0BD00FBE8D4C14440', 47970, 0.21514413450004088, 25658);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (9, -9, '0101000020E6100000EBFF1CE6CB4752C0A88C7F9F71994440', 30632, 0.85391427066903536, 20036);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (10, -10, '0101000020E610000060AB048BC34752C02E04392861E64440', 231149, 0.50999310422417587, 153595);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (11, -11, '0101000020E6100000BD5296218E1F52C00490DAC4C9E94440', 152917, 0.70955464807036772, 159294);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (12, -12, '0101000020E610000016FBCBEEC93352C0D9CEF753E3BD4440', 235710, 0.44298119784627749, 124069);
+INSERT INTO vrp1_points (id, pid, geom, edge_id, fraction, closest_node) VALUES (13, -13, '0101000020E610000025068195432152C09964E42CECFD4440', 220656, 0.77224957554563523, 120633);
+
+
+--
+-- TOC entry 4295 (class 0 OID 8777648)
+-- Dependencies: 297
+-- Data for Name: vrpdtw_beer; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 0, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 0, 0, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 1, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 2);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 3, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 4);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 5, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 6);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 7, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 8);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 9, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 10);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 11, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 12);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 13, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 14);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 15, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 16);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 17, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 18);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 19, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 20);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 21, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 200, 0, 22);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (0, 23, 2219223.0599095495, 43261.330613416343, 0, 780, 0, 50, 0, 24);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (1, 2, 2201674.04542425, -537.96920408041944, 0, 780, 0, -50, 1, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (2, 4, 2220804.1661061305, -1824.0976658091467, 0, 780, 0, -50, 3, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (3, 6, 2170182.7454079189, -42278.887298092624, 0, 780, 0, -50, 5, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (4, 8, 2214706.3217116385, 42201.317464497493, 0, 780, 0, -50, 7, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (5, 10, 2221020.0081376741, 13156.086760460585, 0, 780, 0, -50, 9, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (6, 12, 2276566.54710769, -10390.65374555897, 0, 780, 0, -50, 11, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (7, 14, 2273317.2298506126, 45902.567392510609, 0, 780, 0, -50, 13, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (8, 16, 2268126.8554679737, 4674.1135220944607, 0, 780, 0, -50, 15, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (9, 18, 2200293.6413550111, -57036.325719941706, 0, 780, 0, -50, 17, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (10, 20, 2179348.5807632855, 7268.5531586333609, 0, 780, 0, -50, 19, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (11, 22, 2226924.5635206043, 27207.476487862386, 0, 780, 0, -200, 21, 0);
+INSERT INTO vrpdtw_beer (rid, id, x, y, opentime, closetime, servicetime, demand, pindex, dindex) VALUES (12, 24, 2214670.8347013257, -18087.138344661518, 0, 780, 0, -50, 23, 0);
+*/
+
+/*
+SELECT * FROM pgr_gsoc_vrppdtw(
+ $$ SELECT * FROM jet_customers $$,
+ 2, 5);
+
+SELECT * FROM _pgr_pickDeliver(
+ $$ SELECT * FROM jet_customers $$,
+ 2, 5);
+
+SELECT * FROM _pgr_pickDeliver(
+ $$ SELECT * FROM jet_customers $$,
+ max_vehicles := 2, capacity :=5, speed := 1);
+*/
+
+/*
+-- converting data to use euclidean
+UPDATE jet_customers SET opentime = 9*60 WHERE opentime = 3448;
+UPDATE jet_customers SET opentime = 9.5*60 WHERE opentime = 3463;
+UPDATE jet_customers SET opentime = 10*60 WHERE opentime = 3576;
+UPDATE jet_customers SET opentime = 10.5*60 WHERE opentime = 3624;
+UPDATE jet_customers SET opentime = 11*60 WHERE opentime = 4265;
+UPDATE jet_customers SET opentime = 11.5*60 WHERE opentime = 4355;
+
+UPDATE jet_customers SET closetime = 11*60 WHERE closetime = 2853448;
+UPDATE jet_customers SET closetime = 11.5*60 WHERE closetime = 2853463;
+UPDATE jet_customers SET closetime = 12*60 WHERE closetime = 2853576;
+UPDATE jet_customers SET closetime = 12.5*60 WHERE closetime = 2853624;
+UPDATE jet_customers SET closetime = 13*60 WHERE closetime = 2854265;
+UPDATE jet_customers SET closetime = 13.5*60 WHERE closetime = 2854355;
+UPDATE jet_customers SET closetime = 14*60 WHERE closetime = 6903448;
+UPDATE jet_customers SET closetime = 14.5*60 WHERE closetime = 6903463;
+UPDATE jet_customers SET closetime = 15*60 WHERE closetime = 6903576;
+UPDATE jet_customers SET closetime = 15.5*60 WHERE closetime = 6903624;
+UPDATE jet_customers SET closetime = 16*60 WHERE closetime = 6904265;
+UPDATE jet_customers SET closetime = 16.5*60 WHERE closetime = 6904355;
+
+UPDATE jet_customers SET servicetime = 2 WHERE servicetime != 0;
+
+WITH
+customer_data AS (SELECT * FROM jet_customers),
+pickups AS (
+ SELECT id, demand, x as pick_x, y as pick_y, opentime as pick_open, closetime as pick_close, servicetime as pick_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+),
+deliveries AS (
+ SELECT pindex AS id, x as deliver_x, y as deliver_y, opentime as deliver_open, closetime as deliver_close, servicetime as deliver_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+)
+SELECT * INTO jet_orders FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id;
+
+WITH
+customer_data AS (select * from jet_customers)
+SELECT id, x AS start_x, y AS start_y,
+opentime AS start_open, closetime AS start_close,
+2 AS capacity, 5 AS number INTO jet_vehicles
+FROM customer_data WHERE id = 0 LIMIT 1;
+
+SELECT *
+FROM _pgr_pickDeliverEuclidean(
+ $$ SELECT * from jet_orders $$,
+ $$ SELECT * FROM jet_vehicles$$
+);
+*/
+
diff --git a/src/pickDeliver/test/design_pgtap.result b/src/pickDeliver/test/design_pgtap.result
new file mode 100644
index 0000000..a16867b
--- /dev/null
+++ b/src/pickDeliver/test/design_pgtap.result
@@ -0,0 +1,20 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+UPDATE vehicles SET start_open = 5, start_close = 4 WHERE id = 1;
+UPDATE 1
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$);
+ERROR: Illegal values found on vehicle
+HINT: Illegal values found on vehicleOn vehicle 1 a condition is not met, verify that:
+- start_open <= start_close
+- end_open <= end_close
+- capacity > 0
+--> pgrouting::vrp::Pgr_pickDeliver::Pgr_pickDeliver(const std::vector<PickDeliveryOrders_t>&, const std::vector<Vehicle_t>&, double, size_t, int)
+
+UPDATE vehicles SET start_open = 0, start_close = 50 WHERE id = 1;
+ERROR: current transaction is aborted, commands ignored until end of transaction block
+ROLLBACK;
+ROLLBACK
diff --git a/src/pickDeliver/test/design_pgtap.test.sql b/src/pickDeliver/test/design_pgtap.test.sql
new file mode 100644
index 0000000..394fb67
--- /dev/null
+++ b/src/pickDeliver/test/design_pgtap.test.sql
@@ -0,0 +1,9 @@
+
+UPDATE vehicles SET start_open = 5, start_close = 4 WHERE id = 1;
+
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ $$SELECT * FROM orders$$,
+ $$SELECT * FROM vehicles$$);
+
+UPDATE vehicles SET start_open = 0, start_close = 50 WHERE id = 1;
+
diff --git a/src/pickDeliver/test/differentVechiles-cygwin.result b/src/pickDeliver/test/differentVechiles-cygwin.result
new file mode 100644
index 0000000..38fba09
--- /dev/null
+++ b/src/pickDeliver/test/differentVechiles-cygwin.result
@@ -0,0 +1,2 @@
+t
+t
diff --git a/src/pickDeliver/test/differentVechiles-cygwin.test.sql b/src/pickDeliver/test/differentVechiles-cygwin.test.sql
new file mode 100644
index 0000000..b39f775
--- /dev/null
+++ b/src/pickDeliver/test/differentVechiles-cygwin.test.sql
@@ -0,0 +1,37 @@
+
+
+INSERT into vehicles(start_x, start_y, start_open, start_close, capacity, number)
+VALUES (40, 50, 0, 400, 200, 1);
+
+UPDATE vehicles SET number = 1;
+
+ALTER TABLE vehicles DROP COLUMN number;
+
+SELECT * INTO results
+FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * FROM vehicles',
+ 30);
+
+
+WITH
+orders_id AS (
+ SELECT id FROM orders
+),
+results_id AS (
+ SELECT DISTINCT order_id AS id
+ FROM results
+ WHERE stop_type NOT IN (1, 6, -1)
+ ORDER BY order_id
+)
+SELECT count(*)=53 FROM orders_id LEFT JOIN results_id USING(ID);
+
+WITH
+the_results AS (
+ SELECT *
+ FROM results
+)
+SELECT ((SELECT max(vehicle_number) FROM results) * 2 + 53 * 2 + 1) =
+ (SELECT count(*) from the_results) AS correct_value;
+
+-- SELECT * FROM results;
diff --git a/src/pickDeliver/test/differentVechiles.result b/src/pickDeliver/test/differentVechiles.result
new file mode 100644
index 0000000..7ec6dc7
--- /dev/null
+++ b/src/pickDeliver/test/differentVechiles.result
@@ -0,0 +1,230 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+INSERT into vehicles(start_x, start_y, start_open, start_close, capacity, number)
+VALUES (40, 50, 0, 400, 200, 25);
+INSERT 0 1
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * FROM vehicles',
+ 30);
+ seq | vehicle_number | vehicle_id | vehicle_seq | order_id | stop_type | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+----------------+------------+-------------+----------+-----------+-------+------------------+------------------+-----------+--------------+------------------
+ 1 | 1 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 1 | 2 | 5 | 2 | 10 | 15.1327459504216 | 15.1327459504216 | 0 | 90 | 105.132745950422
+ 3 | 1 | 1 | 3 | 3 | 2 | 20 | 1 | 106.132745950422 | 0 | 90 | 196.132745950422
+ 4 | 1 | 1 | 4 | 5 | 3 | 10 | 2 | 198.132745950422 | 0 | 90 | 288.132745950422
+ 5 | 1 | 1 | 5 | 8 | 2 | 30 | 2.82842712474619 | 290.961173075168 | 0 | 90 | 380.961173075168
+ 6 | 1 | 1 | 6 | 8 | 3 | 10 | 3.60555127546399 | 384.566724350632 | 0 | 90 | 474.566724350632
+ 7 | 1 | 1 | 7 | 11 | 2 | 20 | 3 | 477.566724350632 | 0 | 90 | 567.566724350632
+ 8 | 1 | 1 | 8 | 9 | 2 | 30 | 3.16227766016838 | 570.7290020108 | 0 | 90 | 660.7290020108
+ 9 | 1 | 1 | 9 | 6 | 2 | 50 | 2.23606797749979 | 662.9650699883 | 0 | 90 | 752.9650699883
+ 10 | 1 | 1 | 10 | 9 | 3 | 40 | 2.23606797749979 | 755.2011379658 | 0 | 90 | 845.2011379658
+ 11 | 1 | 1 | 11 | 6 | 3 | 20 | 3.60555127546399 | 848.806689241264 | 0 | 90 | 938.806689241264
+ 12 | 1 | 1 | 12 | 11 | 3 | 10 | 2 | 940.806689241264 | 0 | 90 | 1030.80668924126
+ 13 | 1 | 1 | 13 | 3 | 3 | 0 | 3 | 1033.80668924126 | 0 | 90 | 1123.80668924126
+ 14 | 1 | 1 | 14 | -1 | 6 | 0 | 15.8113883008419 | 1139.61807754211 | 0 | 0 | 1139.61807754211
+ 15 | 2 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 16 | 2 | 1 | 2 | 13 | 2 | 30 | 30.8058436014987 | 30.8058436014987 | 0 | 90 | 120.805843601499
+ 17 | 2 | 1 | 3 | 13 | 3 | 0 | 4 | 124.805843601499 | 0 | 90 | 214.805843601499
+ 18 | 2 | 1 | 4 | 18 | 2 | 20 | 3 | 217.805843601499 | 0 | 90 | 307.805843601499
+ 19 | 2 | 1 | 5 | 19 | 2 | 30 | 5 | 312.805843601499 | 0 | 90 | 402.805843601499
+ 20 | 2 | 1 | 6 | 19 | 3 | 20 | 5 | 407.805843601499 | 0 | 90 | 497.805843601499
+ 21 | 2 | 1 | 7 | 16 | 2 | 60 | 5 | 502.805843601499 | 0 | 90 | 592.805843601499
+ 22 | 2 | 1 | 8 | 16 | 3 | 20 | 2 | 594.805843601499 | 0 | 90 | 684.805843601499
+ 23 | 2 | 1 | 9 | 18 | 3 | 0 | 3 | 687.805843601499 | 0 | 90 | 777.805843601499
+ 24 | 2 | 1 | 10 | 50 | 2 | 10 | 53.0094331227943 | 830.815276724293 | 0 | 90 | 920.815276724293
+ 25 | 2 | 1 | 11 | 50 | 3 | 0 | 3.16227766016838 | 923.977554384461 | 0 | 90 | 1013.97755438446
+ 26 | 2 | 1 | 12 | 49 | 2 | 10 | 3 | 1016.97755438446 | 0 | 90 | 1106.97755438446
+ 27 | 2 | 1 | 13 | 49 | 3 | 0 | 2 | 1108.97755438446 | 0 | 90 | 1198.97755438446
+ 28 | 2 | 1 | 14 | -1 | 6 | 0 | 18.0277563773199 | 1217.00531076178 | 0 | 0 | 1217.00531076178
+ 29 | 3 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 30 | 3 | 1 | 2 | 20 | 2 | 10 | 10 | 10 | 0 | 90 | 100
+ 31 | 3 | 1 | 3 | 20 | 3 | 0 | 5 | 105 | 0 | 90 | 195
+ 32 | 3 | 1 | 4 | 25 | 2 | 40 | 2 | 197 | 0 | 90 | 287
+ 33 | 3 | 1 | 5 | 25 | 3 | 0 | 2 | 289 | 0 | 90 | 379
+ 34 | 3 | 1 | 6 | 29 | 2 | 10 | 3.60555127546399 | 382.605551275464 | 0 | 90 | 472.605551275464
+ 35 | 3 | 1 | 7 | 30 | 2 | 20 | 5 | 477.605551275464 | 0 | 90 | 567.605551275464
+ 36 | 3 | 1 | 8 | 28 | 2 | 40 | 3 | 570.605551275464 | 0 | 90 | 660.605551275464
+ 37 | 3 | 1 | 9 | 29 | 3 | 30 | 2 | 662.605551275464 | 0 | 90 | 752.605551275464
+ 38 | 3 | 1 | 10 | 23 | 2 | 40 | 3 | 755.605551275464 | 0 | 0 | 755.605551275464
+ 39 | 3 | 1 | 11 | 23 | 3 | 30 | 0 | 755.605551275464 | 0 | 90 | 845.605551275464
+ 40 | 3 | 1 | 12 | 28 | 3 | 10 | 3 | 848.605551275464 | 0 | 90 | 938.605551275464
+ 41 | 3 | 1 | 13 | 30 | 3 | 0 | 2 | 940.605551275464 | 0 | 90 | 1030.60555127546
+ 42 | 3 | 1 | 14 | -1 | 6 | 0 | 10.1980390271856 | 1040.80359030265 | 0 | 0 | 1040.80359030265
+ 43 | 4 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 44 | 4 | 1 | 2 | 32 | 2 | 30 | 31.6227766016838 | 31.6227766016838 | 0 | 90 | 121.622776601684
+ 45 | 4 | 1 | 3 | 33 | 2 | 70 | 2 | 123.622776601684 | 0 | 90 | 213.622776601684
+ 46 | 4 | 1 | 4 | 32 | 3 | 40 | 5.3851648071345 | 219.007941408818 | 0 | 90 | 309.007941408818
+ 47 | 4 | 1 | 5 | 35 | 2 | 50 | 5 | 314.007941408818 | 0 | 90 | 404.007941408818
+ 48 | 4 | 1 | 6 | 33 | 3 | 10 | 5.8309518948453 | 409.838893303664 | 0 | 90 | 499.838893303664
+ 49 | 4 | 1 | 7 | 38 | 2 | 40 | 2 | 501.838893303664 | 0 | 90 | 591.838893303664
+ 50 | 4 | 1 | 8 | 35 | 3 | 30 | 5 | 596.838893303664 | 0 | 90 | 686.838893303664
+ 51 | 4 | 1 | 9 | 36 | 2 | 40 | 5 | 691.838893303664 | 0 | 0 | 691.838893303664
+ 52 | 4 | 1 | 10 | 36 | 3 | 30 | 0 | 691.838893303664 | 0 | 90 | 781.838893303664
+ 53 | 4 | 1 | 11 | 38 | 3 | 0 | 3 | 784.838893303664 | 0 | 90 | 874.838893303664
+ 54 | 4 | 1 | 12 | -1 | 6 | 0 | 32.3882694814033 | 907.227162785067 | 0 | 0 | 907.227162785067
+ 55 | 5 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 56 | 5 | 1 | 2 | 43 | 2 | 10 | 16.5529453572468 | 16.5529453572468 | 0 | 90 | 106.552945357247
+ 57 | 5 | 1 | 3 | 42 | 2 | 30 | 3 | 109.552945357247 | 0 | 90 | 199.552945357247
+ 58 | 5 | 1 | 4 | 43 | 3 | 20 | 2 | 201.552945357247 | 0 | 90 | 291.552945357247
+ 59 | 5 | 1 | 5 | 42 | 3 | 0 | 2 | 293.552945357247 | 0 | 90 | 383.552945357247
+ 60 | 5 | 1 | 6 | 44 | 2 | 10 | 3 | 386.552945357247 | 0 | 90 | 476.552945357247
+ 61 | 5 | 1 | 7 | 44 | 3 | 0 | 2.82842712474619 | 479.381372481993 | 0 | 90 | 569.381372481993
+ 62 | 5 | 1 | 8 | 45 | 2 | 10 | 2 | 571.381372481993 | 0 | 90 | 661.381372481993
+ 63 | 5 | 1 | 9 | 45 | 3 | 0 | 2 | 663.381372481993 | 0 | 90 | 753.381372481993
+ 64 | 5 | 1 | 10 | 51 | 2 | 10 | 3 | 756.381372481993 | 0 | 0 | 756.381372481993
+ 65 | 5 | 1 | 11 | 51 | 3 | 0 | 0 | 756.381372481993 | 0 | 90 | 846.381372481993
+ 66 | 5 | 1 | 12 | 66 | 2 | 10 | 22.561028345357 | 868.94240082735 | 0 | 90 | 958.94240082735
+ 67 | 5 | 1 | 13 | 66 | 3 | 0 | 2 | 960.94240082735 | 0 | 90 | 1050.94240082735
+ 68 | 5 | 1 | 14 | -1 | 6 | 0 | 15.8113883008419 | 1066.75378912819 | 0 | 0 | 1066.75378912819
+ 69 | 6 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 70 | 6 | 1 | 2 | 57 | 2 | 40 | 35 | 35 | 0 | 90 | 125
+ 71 | 6 | 1 | 3 | 57 | 3 | 0 | 2 | 127 | 0 | 90 | 217
+ 72 | 6 | 1 | 4 | 54 | 2 | 40 | 5 | 222 | 0 | 90 | 312
+ 73 | 6 | 1 | 5 | 53 | 2 | 60 | 5.3851648071345 | 317.385164807135 | 0 | 90 | 407.385164807135
+ 74 | 6 | 1 | 6 | 56 | 2 | 90 | 4 | 411.385164807135 | 0 | 90 | 501.385164807135
+ 75 | 6 | 1 | 7 | 53 | 3 | 70 | 2 | 503.385164807135 | 0 | 90 | 593.385164807135
+ 76 | 6 | 1 | 8 | 54 | 3 | 30 | 3 | 596.385164807135 | 0 | 90 | 686.385164807135
+ 77 | 6 | 1 | 9 | 56 | 3 | 0 | 10.4403065089106 | 696.825471316045 | 0 | 90 | 786.825471316045
+ 78 | 6 | 1 | 10 | -1 | 6 | 0 | 35.0570962859162 | 821.882567601961 | 0 | 0 | 821.882567601961
+ 79 | 7 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 80 | 7 | 1 | 2 | 67 | 2 | 10 | 12.2065556157337 | 12.2065556157337 | 0 | 90 | 102.206555615734
+ 81 | 7 | 1 | 3 | 65 | 2 | 20 | 1 | 103.206555615734 | 0 | 90 | 193.206555615734
+ 82 | 7 | 1 | 4 | 63 | 2 | 70 | 2 | 195.206555615734 | 0 | 90 | 285.206555615734
+ 83 | 7 | 1 | 5 | 62 | 2 | 90 | 5 | 290.206555615734 | 0 | 90 | 380.206555615734
+ 84 | 7 | 1 | 6 | 63 | 3 | 40 | 3 | 383.206555615734 | 0 | 90 | 473.206555615734
+ 85 | 7 | 1 | 7 | 65 | 3 | 30 | 5 | 478.206555615734 | 0 | 90 | 568.206555615734
+ 86 | 7 | 1 | 8 | 67 | 3 | 20 | 3 | 571.206555615734 | 0 | 90 | 661.206555615734
+ 87 | 7 | 1 | 9 | 64 | 2 | 30 | 2 | 663.206555615734 | 0 | 0 | 663.206555615734
+ 88 | 7 | 1 | 10 | 64 | 3 | 20 | 0 | 663.206555615734 | 0 | 90 | 753.206555615734
+ 89 | 7 | 1 | 11 | 62 | 3 | 0 | 3 | 756.206555615734 | 0 | 90 | 846.206555615734
+ 90 | 7 | 1 | 12 | -1 | 6 | 0 | 20.6155281280883 | 866.822083743822 | 0 | 0 | 866.822083743822
+ 91 | 8 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 92 | 8 | 1 | 2 | 81 | 2 | 30 | 47.4341649025257 | 47.4341649025257 | 0 | 90 | 137.434164902526
+ 93 | 8 | 1 | 3 | 78 | 2 | 50 | 3 | 140.434164902526 | 0 | 0 | 140.434164902526
+ 94 | 8 | 1 | 4 | 78 | 3 | 30 | 0 | 140.434164902526 | 0 | 90 | 230.434164902526
+ 95 | 8 | 1 | 5 | 76 | 2 | 40 | 2 | 232.434164902526 | 0 | 90 | 322.434164902526
+ 96 | 8 | 1 | 6 | 71 | 2 | 60 | 5 | 327.434164902526 | 0 | 90 | 417.434164902526
+ 97 | 8 | 1 | 7 | 81 | 3 | 30 | 5 | 422.434164902526 | 0 | 90 | 512.434164902526
+ 98 | 8 | 1 | 8 | 76 | 3 | 20 | 3 | 515.434164902526 | 0 | 90 | 605.434164902526
+ 99 | 8 | 1 | 9 | 71 | 3 | 0 | 4 | 609.434164902526 | 0 | 90 | 699.434164902526
+ 100 | 8 | 1 | 10 | 79 | 2 | 10 | 1 | 700.434164902526 | 0 | 90 | 790.434164902526
+ 101 | 8 | 1 | 11 | 79 | 3 | 0 | 5.3851648071345 | 795.81932970966 | 0 | 90 | 885.81932970966
+ 102 | 8 | 1 | 12 | -1 | 6 | 0 | 51.478150704935 | 937.297480414595 | 0 | 0 | 937.297480414595
+ 103 | 9 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 104 | 9 | 1 | 2 | 90 | 2 | 10 | 20.6155281280883 | 20.6155281280883 | 0 | 90 | 110.615528128088
+ 105 | 9 | 1 | 3 | 87 | 2 | 30 | 5 | 115.615528128088 | 0 | 90 | 205.615528128088
+ 106 | 9 | 1 | 4 | 86 | 2 | 40 | 1 | 206.615528128088 | 0 | 90 | 296.615528128088
+ 107 | 9 | 1 | 5 | 87 | 3 | 20 | 6 | 302.615528128088 | 0 | 90 | 392.615528128088
+ 108 | 9 | 1 | 6 | 82 | 2 | 40 | 3 | 395.615528128088 | 0 | 90 | 485.615528128088
+ 109 | 9 | 1 | 7 | 84 | 2 | 60 | 5.8309518948453 | 491.446480022934 | 0 | 90 | 581.446480022934
+ 110 | 9 | 1 | 8 | 82 | 3 | 40 | 2.82842712474619 | 584.27490714768 | 0 | 90 | 674.27490714768
+ 111 | 9 | 1 | 9 | 90 | 3 | 30 | 3 | 677.27490714768 | 0 | 90 | 767.27490714768
+ 112 | 9 | 1 | 10 | 84 | 3 | 10 | 2.82842712474619 | 770.103334272426 | 0 | 90 | 860.103334272426
+ 113 | 9 | 1 | 11 | 86 | 3 | 0 | 3.60555127546399 | 863.70888554789 | 0 | 90 | 953.70888554789
+ 114 | 9 | 1 | 12 | -1 | 6 | 0 | 22.3606797749979 | 976.069565322888 | 0 | 0 | 976.069565322888
+ 115 | 10 | 1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 116 | 10 | 1 | 2 | 98 | 2 | 20 | 30.8058436014987 | 30.8058436014987 | 0 | 90 | 120.805843601499
+ 117 | 10 | 1 | 3 | 96 | 2 | 30 | 5.3851648071345 | 126.191008408633 | 0 | 90 | 216.191008408633
+ 118 | 10 | 1 | 4 | 98 | 3 | 10 | 2 | 218.191008408633 | 0 | 90 | 308.191008408633
+ 119 | 10 | 1 | 5 | 96 | 3 | 0 | 3.60555127546399 | 311.796559684097 | 0 | 90 | 401.796559684097
+ 120 | 10 | 1 | 6 | 92 | 2 | 20 | 3.60555127546399 | 405.402110959561 | 0 | 90 | 495.402110959561
+ 121 | 10 | 1 | 7 | 92 | 3 | 0 | 2 | 497.402110959561 | 0 | 90 | 587.402110959561
+ 122 | 10 | 1 | 8 | 97 | 2 | 30 | 5 | 592.402110959561 | 0 | 0 | 592.402110959561
+ 123 | 10 | 1 | 9 | 97 | 3 | 0 | 0 | 592.402110959561 | 0 | 90 | 682.402110959561
+ 124 | 10 | 1 | 10 | 100 | 2 | 20 | 5 | 687.402110959561 | 0 | 90 | 777.402110959561
+ 125 | 10 | 1 | 11 | 100 | 3 | 0 | 5 | 782.402110959561 | 0 | 90 | 872.402110959561
+ 126 | 10 | 1 | 12 | -1 | 6 | 0 | 33.5410196624968 | 905.943130622058 | 0 | 0 | 905.943130622058
+ 127 | -2 | 0 | 0 | -1 | -1 | -1 | 879.42275822512 | -1 | 0 | 9000 | 9879.42275822512
+(127 rows)
+
+WITH
+orders_id AS (
+ SELECT id FROM orders
+),
+results_id AS (
+ SELECT DISTINCT order_id AS id
+ FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * FROM vehicles',
+ 30)
+ WHERE stop_type NOT IN (0, 5, -1)
+ ORDER BY order_id
+)
+SELECT * FROM orders_id LEFT JOIN results_id USING(ID);
+ id
+-----
+ 3
+ 5
+ 6
+ 8
+ 9
+ 11
+ 13
+ 16
+ 18
+ 19
+ 20
+ 23
+ 25
+ 28
+ 29
+ 30
+ 32
+ 33
+ 35
+ 36
+ 38
+ 42
+ 43
+ 44
+ 45
+ 49
+ 50
+ 51
+ 53
+ 54
+ 56
+ 57
+ 62
+ 63
+ 64
+ 65
+ 66
+ 67
+ 71
+ 76
+ 78
+ 79
+ 81
+ 82
+ 84
+ 86
+ 87
+ 90
+ 92
+ 96
+ 97
+ 98
+ 100
+(53 rows)
+
+WITH
+results AS (
+ SELECT *
+ FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * FROM vehicles',
+ 30)
+)
+SELECT ((1 + (SELECT max(vehicle_id) FROM results) * 2 + 53 * 2) =
+ (SELECT count(*) from results)) AS correct_value;
+ correct_value
+---------------
+ f
+(1 row)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/pickDeliver/test/differentVechiles.test.sql b/src/pickDeliver/test/differentVechiles.test.sql
new file mode 100644
index 0000000..3faf30c
--- /dev/null
+++ b/src/pickDeliver/test/differentVechiles.test.sql
@@ -0,0 +1,34 @@
+
+INSERT into vehicles(start_x, start_y, start_open, start_close, capacity, number)
+VALUES (40, 50, 0, 400, 200, 25);
+
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * FROM vehicles',
+ 30);
+
+WITH
+orders_id AS (
+ SELECT id FROM orders
+),
+results_id AS (
+ SELECT DISTINCT order_id AS id
+ FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * FROM vehicles',
+ 30)
+ WHERE stop_type NOT IN (0, 5, -1)
+ ORDER BY order_id
+)
+SELECT * FROM orders_id LEFT JOIN results_id USING(ID);
+
+WITH
+results AS (
+ SELECT *
+ FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * FROM vehicles',
+ 30)
+)
+SELECT ((1 + (SELECT max(vehicle_id) FROM results) * 2 + 53 * 2) =
+ (SELECT count(*) from results)) AS correct_value;
diff --git a/src/pickDeliver/test/doc-pickDeliver.result b/src/pickDeliver/test/doc-pickDeliver.result
index 8240f1e..b5b2096 100644
--- a/src/pickDeliver/test/doc-pickDeliver.result
+++ b/src/pickDeliver/test/doc-pickDeliver.result
@@ -1,257 +1,61 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-1|1|1|0|0|0|0|0|0
-2|1|2|5|15.1327459504216|15.1327459504216|0|90|105.132745950422
-3|1|3|3|1|106.132745950422|0|90|196.132745950422
-4|1|4|7|2|198.132745950422|0|90|288.132745950422
-5|1|5|8|2.82842712474619|290.961173075168|0|90|380.961173075168
-6|1|6|10|3.60555127546399|384.566724350632|0|90|474.566724350632
-7|1|7|11|3|477.566724350632|0|90|567.566724350632
-8|1|8|9|3.16227766016838|570.7290020108|0|90|660.7290020108
-9|1|9|6|2.23606797749979|662.9650699883|0|90|752.9650699883
-10|1|10|4|2.23606797749979|755.2011379658|0|90|845.2011379658
-11|1|11|2|3.60555127546399|848.806689241264|0|90|938.806689241264
-12|1|12|1|2|940.806689241264|0|90|1030.80668924126
-13|1|13|75|3|1033.80668924126|0|90|1123.80668924126
-14|1|14|0|15.8113883008419|1139.61807754211|0|0|1139.61807754211
-15|2|1|0|0|0|0|0|0
-16|2|2|13|30.8058436014987|30.8058436014987|0|90|120.805843601499
-17|2|3|17|4|124.805843601499|0|90|214.805843601499
-18|2|4|18|3|217.805843601499|0|90|307.805843601499
-19|2|5|19|5|312.805843601499|0|90|402.805843601499
-20|2|6|15|5|407.805843601499|0|90|497.805843601499
-21|2|7|16|5|502.805843601499|0|90|592.805843601499
-22|2|8|14|2|594.805843601499|0|90|684.805843601499
-23|2|9|12|3|687.805843601499|0|90|777.805843601499
-24|2|10|0|38.0788655293195|815.884709130818|0|0|815.884709130818
-25|3|1|0|0|0|0|0|0
-26|3|2|20|10|10|0|90|100
-27|3|3|24|5|105|0|90|195
-28|3|4|25|2|197|0|90|287
-29|3|5|27|2|289|0|90|379
-30|3|6|29|3.60555127546399|382.605551275464|0|90|472.605551275464
-31|3|7|30|5|477.605551275464|0|90|567.605551275464
-32|3|8|28|3|570.605551275464|0|90|660.605551275464
-33|3|9|26|2|662.605551275464|0|90|752.605551275464
-34|3|10|23|3|755.605551275464|0|0|755.605551275464
-35|3|11|103|0|755.605551275464|0|90|845.605551275464
-36|3|12|22|3|848.605551275464|0|90|938.605551275464
-37|3|13|21|2|940.605551275464|0|90|1030.60555127546
-38|3|14|0|10.1980390271856|1040.80359030265|0|0|1040.80359030265
-39|4|1|0|0|0|0|0|0
-40|4|2|32|31.6227766016838|31.6227766016838|0|90|121.622776601684
-41|4|3|33|2|123.622776601684|0|90|213.622776601684
-42|4|4|31|5.3851648071345|219.007941408818|0|90|309.007941408818
-43|4|5|35|5|314.007941408818|0|90|404.007941408818
-44|4|6|37|5.8309518948453|409.838893303664|0|90|499.838893303664
-45|4|7|38|2|501.838893303664|0|90|591.838893303664
-46|4|8|39|5|596.838893303664|0|90|686.838893303664
-47|4|9|36|5|691.838893303664|0|0|691.838893303664
-48|4|10|105|0|691.838893303664|0|90|781.838893303664
-49|4|11|34|3|784.838893303664|0|90|874.838893303664
-50|4|12|0|32.3882694814033|907.227162785067|0|0|907.227162785067
-51|5|1|0|0|0|0|0|0
-52|5|2|43|16.5529453572468|16.5529453572468|0|90|106.552945357247
-53|5|3|42|3|109.552945357247|0|90|199.552945357247
-54|5|4|41|2|201.552945357247|0|90|291.552945357247
-55|5|5|40|2|293.552945357247|0|90|383.552945357247
-56|5|6|44|3|386.552945357247|0|90|476.552945357247
-57|5|7|46|2.82842712474619|479.381372481993|0|90|569.381372481993
-58|5|8|45|2|571.381372481993|0|90|661.381372481993
-59|5|9|48|2|663.381372481993|0|90|753.381372481993
-60|5|10|51|3|756.381372481993|0|0|756.381372481993
-61|5|11|101|0|756.381372481993|0|90|846.381372481993
-62|5|12|50|2.23606797749979|848.617440459493|0|90|938.617440459493
-63|5|13|52|3.16227766016838|941.779718119661|0|90|1031.77971811966
-64|5|14|49|3|1034.77971811966|0|90|1124.77971811966
-65|5|15|47|2|1126.77971811966|0|90|1216.77971811966
-66|5|16|0|18.0277563773199|1234.80747449698|0|0|1234.80747449698
-67|6|1|0|0|0|0|0|0
-68|6|2|57|35|35|0|90|125
-69|6|3|55|2|127|0|90|217
-70|6|4|54|5|222|0|90|312
-71|6|5|53|5.3851648071345|317.385164807135|0|90|407.385164807135
-72|6|6|56|4|411.385164807135|0|90|501.385164807135
-73|6|7|58|2|503.385164807135|0|90|593.385164807135
-74|6|8|60|3|596.385164807135|0|90|686.385164807135
-75|6|9|59|10.4403065089106|696.825471316045|0|90|786.825471316045
-76|6|10|0|35.0570962859162|821.882567601961|0|0|821.882567601961
-77|7|1|0|0|0|0|0|0
-78|7|2|67|12.2065556157337|12.2065556157337|0|90|102.206555615734
-79|7|3|65|1|103.206555615734|0|90|193.206555615734
-80|7|4|63|2|195.206555615734|0|90|285.206555615734
-81|7|5|62|5|290.206555615734|0|90|380.206555615734
-82|7|6|74|3|383.206555615734|0|90|473.206555615734
-83|7|7|72|5|478.206555615734|0|90|568.206555615734
-84|7|8|61|3|571.206555615734|0|90|661.206555615734
-85|7|9|64|2|663.206555615734|0|0|663.206555615734
-86|7|10|102|0|663.206555615734|0|90|753.206555615734
-87|7|11|68|3|756.206555615734|0|90|846.206555615734
-88|7|12|66|5.3851648071345|851.591720422868|0|90|941.591720422868
-89|7|13|69|2|943.591720422868|0|90|1033.59172042287
-90|7|14|0|15.8113883008419|1049.40310872371|0|0|1049.40310872371
-91|8|1|0|0|0|0|0|0
-92|8|2|81|47.4341649025257|47.4341649025257|0|90|137.434164902526
-93|8|3|78|3|140.434164902526|0|0|140.434164902526
-94|8|4|104|0|140.434164902526|0|90|230.434164902526
-95|8|5|76|2|232.434164902526|0|90|322.434164902526
-96|8|6|71|5|327.434164902526|0|90|417.434164902526
-97|8|7|70|5|422.434164902526|0|90|512.434164902526
-98|8|8|73|3|515.434164902526|0|90|605.434164902526
-99|8|9|77|4|609.434164902526|0|90|699.434164902526
-100|8|10|79|1|700.434164902526|0|90|790.434164902526
-101|8|11|80|5.3851648071345|795.81932970966|0|90|885.81932970966
-102|8|12|0|51.478150704935|937.297480414595|0|0|937.297480414595
-103|9|1|0|0|0|0|0|0
-104|9|2|90|20.6155281280883|20.6155281280883|0|90|110.615528128088
-105|9|3|87|5|115.615528128088|0|90|205.615528128088
-106|9|4|86|1|206.615528128088|0|90|296.615528128088
-107|9|5|83|6|302.615528128088|0|90|392.615528128088
-108|9|6|82|3|395.615528128088|0|90|485.615528128088
-109|9|7|84|5.8309518948453|491.446480022934|0|90|581.446480022934
-110|9|8|85|2.82842712474619|584.27490714768|0|90|674.27490714768
-111|9|9|88|3|677.27490714768|0|90|767.27490714768
-112|9|10|89|2.82842712474619|770.103334272426|0|90|860.103334272426
-113|9|11|91|3.60555127546399|863.70888554789|0|90|953.70888554789
-114|9|12|0|22.3606797749979|976.069565322888|0|0|976.069565322888
-115|10|1|0|0|0|0|0|0
-116|10|2|98|30.8058436014987|30.8058436014987|0|90|120.805843601499
-117|10|3|96|5.3851648071345|126.191008408633|0|90|216.191008408633
-118|10|4|95|2|218.191008408633|0|90|308.191008408633
-119|10|5|94|3.60555127546399|311.796559684097|0|90|401.796559684097
-120|10|6|92|3.60555127546399|405.402110959561|0|90|495.402110959561
-121|10|7|93|2|497.402110959561|0|90|587.402110959561
-122|10|8|97|5|592.402110959561|0|0|592.402110959561
-123|10|9|106|0|592.402110959561|0|90|682.402110959561
-124|10|10|100|5|687.402110959561|0|90|777.402110959561
-125|10|11|99|5|782.402110959561|0|90|872.402110959561
-126|10|12|0|33.5410196624968|905.943130622058|0|0|905.943130622058
-127|-1|0|0|828.936866942834|0|0|9000|9828.93686694283
+SELECT * FROM _pgr_pickDeliver(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * from vehicles',
+
+ 'WITH
+ A AS (
+ SELECT p_node_id AS id, p_x AS x, p_y AS y FROM orders
+ UNION
+ SELECT d_node_id AS id, d_x, d_y FROM orders
+ UNION
+ SELECT start_node_id, start_x, start_y FROM vehicles
+ )
+ SELECT A.id AS start_vid, B.id AS end_vid, sqrt( (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)) AS agg_cost
+ FROM A, A AS B WHERE A.id != B.id'
+ );
+ seq | vehicle_seq | vehicle_id | stop_seq | stop_type | stop_id | order_id | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+-------------+------------+----------+-----------+---------+----------+-------+------------------+------------------+-----------+--------------+------------------
+ 1 | 1 | 1 | 1 | 1 | 6 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 1 | 2 | 2 | 5 | 3 | 30 | 1 | 1 | 1 | 3 | 5
+ 3 | 1 | 1 | 3 | 3 | 11 | 3 | 0 | 1.4142135623731 | 6.41421356237309 | 0 | 3 | 9.4142135623731
+ 4 | 1 | 1 | 4 | 2 | 9 | 2 | 20 | 1.4142135623731 | 10.8284271247462 | 0 | 2 | 12.8284271247462
+ 5 | 1 | 1 | 5 | 3 | 4 | 2 | 0 | 1 | 13.8284271247462 | 0 | 3 | 16.8284271247462
+ 6 | 1 | 1 | 6 | 6 | 6 | -1 | 0 | 1.4142135623731 | 18.2426406871193 | 0 | 0 | 18.2426406871193
+ 7 | 2 | 1 | 1 | 1 | 6 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 8 | 2 | 1 | 2 | 2 | 3 | 1 | 10 | 1 | 1 | 1 | 3 | 5
+ 9 | 2 | 1 | 3 | 3 | 8 | 1 | 0 | 2.23606797749979 | 7.23606797749979 | 0 | 3 | 10.2360679774998
+ 10 | 2 | 1 | 4 | 6 | 6 | -1 | 0 | 2 | 12.2360679774998 | 0 | 0 | 12.2360679774998
+ 11 | -2 | 0 | 0 | -1 | -1 | -1 | -1 | 11.4787086646191 | -1 | 2 | 17 | 30.4787086646191
+(11 rows)
+
--q2
-1|1|1|0|0|0|0|0|0
-2|1|2|5|1.51327459504216|1.51327459504216|13.4867254049578|90|105
-3|1|3|3|0.1|105.1|0|90|195.1
-4|1|4|7|0.2|195.3|0|90|285.3
-5|1|5|8|0.282842712474619|285.582842712475|0|90|375.582842712475
-6|1|6|10|0.360555127546399|375.943397840021|0|90|465.943397840021
-7|1|7|11|0.3|466.243397840021|0|90|556.243397840021
-8|1|8|9|0.316227766016838|556.559625606038|0|90|646.559625606038
-9|1|9|6|0.223606797749979|646.783232403788|0|90|736.783232403788
-10|1|10|4|0.223606797749979|737.006839201538|0|90|827.006839201538
-11|1|11|2|0.360555127546399|827.367394329084|0|90|917.367394329084
-12|1|12|1|0.2|917.567394329084|0|90|1007.56739432908
-13|1|13|75|0.3|1007.86739432908|0|90|1097.86739432908
-14|1|14|0|1.58113883008419|1099.44853315917|0|0|1099.44853315917
-15|2|1|0|0|0|0|0|0
-16|2|2|13|3.08058436014987|3.08058436014987|26.9194156398501|90|120
-17|2|3|17|0.4|120.4|0|90|210.4
-18|2|4|18|0.3|210.7|0|90|300.7
-19|2|5|19|0.5|301.2|0|90|391.2
-20|2|6|15|0.5|391.7|0|90|481.7
-21|2|7|16|0.5|482.2|0|90|572.2
-22|2|8|14|0.2|572.4|0|90|662.4
-23|2|9|12|0.3|662.7|0|90|752.7
-24|2|10|0|3.80788655293195|756.507886552932|0|0|756.507886552932
-25|3|1|0|0|0|0|0|0
-26|3|2|20|1|1|9|90|100
-27|3|3|24|0.5|100.5|0|90|190.5
-28|3|4|25|0.2|190.7|0|90|280.7
-29|3|5|27|0.2|280.9|0|90|370.9
-30|3|6|29|0.360555127546399|371.260555127546|0|90|461.260555127546
-31|3|7|30|0.5|461.760555127546|0|90|551.760555127546
-32|3|8|28|0.3|552.060555127546|0|90|642.060555127546
-33|3|9|26|0.2|642.260555127546|0|90|732.260555127546
-34|3|10|23|0.3|732.560555127546|0|0|732.560555127546
-35|3|11|103|0|732.560555127546|0|90|822.560555127546
-36|3|12|22|0.3|822.860555127546|0|90|912.860555127546
-37|3|13|21|0.2|913.060555127546|0.939444872453691|90|1004
-38|3|14|0|1.01980390271856|1005.01980390272|0|0|1005.01980390272
-39|4|1|0|0|0|0|0|0
-40|4|2|32|3.16227766016838|3.16227766016838|27.8377223398316|90|121
-41|4|3|33|0.2|121.2|0|90|211.2
-42|4|4|31|0.53851648071345|211.738516480713|0|90|301.738516480713
-43|4|5|35|0.5|302.238516480713|0|90|392.238516480713
-44|4|6|37|0.58309518948453|392.821611670198|0|90|482.821611670198
-45|4|7|38|0.2|483.021611670198|0|90|573.021611670198
-46|4|8|39|0.5|573.521611670198|0|90|663.521611670198
-47|4|9|36|0.5|664.021611670198|0.978388329802101|0|665
-48|4|10|105|0|665|0|90|755
-49|4|11|34|0.3|755.3|0|90|845.3
-50|4|12|0|3.23882694814033|848.53882694814|0|0|848.53882694814
-51|5|1|0|0|0|0|0|0
-52|5|2|43|1.65529453572468|1.65529453572468|14.3447054642753|90|106
-53|5|3|42|0.3|106.3|0|90|196.3
-54|5|4|41|0.2|196.5|0|90|286.5
-55|5|5|40|0.2|286.7|0|90|376.7
-56|5|6|44|0.3|377|0|90|467
-57|5|7|46|0.282842712474619|467.282842712475|0|90|557.282842712475
-58|5|8|45|0.2|557.482842712475|0|90|647.482842712475
-59|5|9|48|0.2|647.682842712475|0|90|737.682842712475
-60|5|10|51|0.3|737.982842712475|0|0|737.982842712475
-61|5|11|101|0|737.982842712475|0|90|827.982842712475
-62|5|12|50|0.223606797749979|828.206449510225|0|90|918.206449510225
-63|5|13|52|0.316227766016838|918.522677276241|0|90|1008.52267727624
-64|5|14|49|0.3|1008.82267727624|0|90|1098.82267727624
-65|5|15|47|0.2|1099.02267727624|0|90|1189.02267727624
-66|5|16|0|1.80277563773199|1190.82545291397|0|0|1190.82545291397
-67|6|1|0|0|0|0|0|0
-68|6|2|57|3.5|3.5|31.5|90|125
-69|6|3|55|0.2|125.2|0|90|215.2
-70|6|4|54|0.5|215.7|0|90|305.7
-71|6|5|53|0.53851648071345|306.238516480713|0|90|396.238516480713
-72|6|6|56|0.4|396.638516480713|0|90|486.638516480713
-73|6|7|58|0.2|486.838516480713|0|90|576.838516480713
-74|6|8|60|0.3|577.138516480713|0|90|667.138516480713
-75|6|9|59|1.04403065089106|668.182547131604|0|90|758.182547131604
-76|6|10|0|3.50570962859162|761.688256760196|0|0|761.688256760196
-77|7|1|0|0|0|0|0|0
-78|7|2|67|1.22065556157337|1.22065556157337|10.7793444384266|90|102
-79|7|3|65|0.1|102.1|0|90|192.1
-80|7|4|63|0.2|192.3|0|90|282.3
-81|7|5|62|0.5|282.8|0|90|372.8
-82|7|6|74|0.3|373.1|0|90|463.1
-83|7|7|72|0.5|463.6|0|90|553.6
-84|7|8|61|0.3|553.9|0|90|643.9
-85|7|9|64|0.2|644.1|0|0|644.1
-86|7|10|102|0|644.1|0|90|734.1
-87|7|11|68|0.3|734.4|0|90|824.4
-88|7|12|66|0.53851648071345|824.938516480713|1.06148351928664|90|916
-89|7|13|69|0.2|916.2|0|90|1006.2
-90|7|14|0|1.58113883008419|1007.78113883008|0|0|1007.78113883008
-91|8|1|0|0|0|0|0|0
-92|8|2|81|4.74341649025257|4.74341649025257|42.2565835097474|90|137
-93|8|3|78|0.3|137.3|0|0|137.3
-94|8|4|104|0|137.3|0|90|227.3
-95|8|5|76|0.2|227.5|0|90|317.5
-96|8|6|71|0.5|318|0|90|408
-97|8|7|70|0.5|408.5|0|90|498.5
-98|8|8|73|0.3|498.8|0|90|588.8
-99|8|9|77|0.4|589.2|0|90|679.2
-100|8|10|79|0.1|679.3|0|90|769.3
-101|8|11|80|0.53851648071345|769.838516480713|0|90|859.838516480713
-102|8|12|0|5.1478150704935|864.986331551207|0|0|864.986331551207
-103|9|1|0|0|0|0|0|0
-104|9|2|90|2.06155281280883|2.06155281280883|17.9384471871912|90|110
-105|9|3|87|0.5|110.5|0|90|200.5
-106|9|4|86|0.1|200.6|0|90|290.6
-107|9|5|83|0.6|291.2|0|90|381.2
-108|9|6|82|0.3|381.5|0|90|471.5
-109|9|7|84|0.58309518948453|472.083095189485|0|90|562.083095189485
-110|9|8|85|0.282842712474619|562.365937901959|0|90|652.365937901959
-111|9|9|88|0.3|652.665937901959|0|90|742.665937901959
-112|9|10|89|0.282842712474619|742.948780614434|0|90|832.948780614434
-113|9|11|91|0.360555127546399|833.30933574198|2.69066425801998|90|926
-114|9|12|0|2.23606797749979|928.2360679775|0|0|928.2360679775
-115|10|1|0|0|0|0|0|0
-116|10|2|98|3.08058436014987|3.08058436014987|26.9194156398501|90|120
-117|10|3|96|0.53851648071345|120.538516480713|0|90|210.538516480713
-118|10|4|95|0.2|210.738516480713|0|90|300.738516480713
-119|10|5|94|0.360555127546399|301.09907160826|0|90|391.09907160826
-120|10|6|92|0.360555127546399|391.459626735806|0|90|481.459626735806
-121|10|7|93|0.2|481.659626735806|0|90|571.659626735806
-122|10|8|97|0.5|572.159626735806|0|0|572.159626735806
-123|10|9|106|0|572.159626735806|0|90|662.159626735806
-124|10|10|100|0.5|662.659626735806|0|90|752.659626735806
-125|10|11|99|0.5|753.159626735806|0|90|843.159626735806
-126|10|12|0|3.35410196624968|846.513728702056|0|0|846.513728702056
-127|-1|0|0|82.8936866942834|0|226.652340603693|9000|9309.54602729797
+SELECT * FROM _pgr_pickDeliver(
+ $$ SELECT * FROM orders ORDER BY id $$,
+ $$ SELECT * FROM vehicles $$,
+ $$ SELECT * from pgr_dijkstraCostMatrix(
+ ' SELECT * FROM edge_table ', ARRAY[3, 4, 5, 8, 9, 11])
+ $$
+);
+ seq | vehicle_seq | vehicle_id | stop_seq | stop_type | stop_id | order_id | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+-------------+------------+----------+-----------+---------+----------+-------+-------------+--------------+-----------+--------------+----------------
+ 1 | 1 | 1 | 1 | 1 | 6 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 1 | 2 | 2 | 5 | 3 | 30 | 1 | 1 | 1 | 3 | 5
+ 3 | 1 | 1 | 3 | 3 | 11 | 3 | 0 | 2 | 7 | 0 | 3 | 10
+ 4 | 1 | 1 | 4 | 2 | 9 | 2 | 20 | 2 | 12 | 0 | 2 | 14
+ 5 | 1 | 1 | 5 | 3 | 4 | 2 | 0 | 1 | 15 | 0 | 3 | 18
+ 6 | 1 | 1 | 6 | 6 | 6 | -1 | 0 | 4 | 22 | 0 | 0 | 22
+ 7 | 2 | 1 | 1 | 1 | 6 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 8 | 2 | 1 | 2 | 2 | 3 | 1 | 10 | 5 | 5 | 0 | 3 | 8
+ 9 | 2 | 1 | 3 | 3 | 8 | 1 | 0 | 3 | 11 | 0 | 3 | 14
+ 10 | 2 | 1 | 4 | 6 | 6 | -1 | 0 | 0 | 14 | 0 | 0 | 14
+ 11 | -2 | 0 | 0 | -1 | -1 | -1 | -1 | 18 | -1 | 1 | 17 | 36
+(11 rows)
+
--q3
+ROLLBACK;
+ROLLBACK
diff --git a/src/pickDeliver/test/doc-pickDeliver.test.sql b/src/pickDeliver/test/doc-pickDeliver.test.sql
index 1882959..929591b 100644
--- a/src/pickDeliver/test/doc-pickDeliver.test.sql
+++ b/src/pickDeliver/test/doc-pickDeliver.test.sql
@@ -1,8 +1,28 @@
-
\echo --q1
SELECT * FROM _pgr_pickDeliver(
- 'select * from customer order by id', 25, 200, 1, 30);
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * from vehicles',
+ -- matrix query
+ 'WITH
+ A AS (
+ SELECT p_node_id AS id, p_x AS x, p_y AS y FROM orders
+ UNION
+ SELECT d_node_id AS id, d_x, d_y FROM orders
+ UNION
+ SELECT start_node_id, start_x, start_y FROM vehicles
+ )
+ SELECT A.id AS start_vid, B.id AS end_vid, sqrt( (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)) AS agg_cost
+ FROM A, A AS B WHERE A.id != B.id'
+ );
+
\echo --q2
+
SELECT * FROM _pgr_pickDeliver(
- 'select * from customer order by id', 25, 200, 10, 30);
+ $$ SELECT * FROM orders ORDER BY id $$,
+ $$ SELECT * FROM vehicles $$,
+ $$ SELECT * from pgr_dijkstraCostMatrix(
+ ' SELECT * FROM edge_table ', ARRAY[3, 4, 5, 8, 9, 11])
+ $$
+);
+
\echo --q3
diff --git a/src/pickDeliver/test/doc-pickDeliverEuclidean.result b/src/pickDeliver/test/doc-pickDeliverEuclidean.result
new file mode 100644
index 0000000..1971291
--- /dev/null
+++ b/src/pickDeliver/test/doc-pickDeliverEuclidean.result
@@ -0,0 +1,27 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+--q1
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * from vehicles'
+);
+ seq | vehicle_seq | vehicle_id | stop_seq | stop_type | order_id | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+-------------+------------+----------+-----------+----------+-------+------------------+------------------+-----------+--------------+------------------
+ 1 | 1 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 1 | 2 | 2 | 3 | 30 | 1 | 1 | 1 | 3 | 5
+ 3 | 1 | 1 | 3 | 3 | 3 | 0 | 1.4142135623731 | 6.41421356237309 | 0 | 3 | 9.4142135623731
+ 4 | 1 | 1 | 4 | 2 | 2 | 20 | 1.4142135623731 | 10.8284271247462 | 0 | 2 | 12.8284271247462
+ 5 | 1 | 1 | 5 | 3 | 2 | 0 | 1 | 13.8284271247462 | 0 | 3 | 16.8284271247462
+ 6 | 1 | 1 | 6 | 6 | -1 | 0 | 1.4142135623731 | 18.2426406871193 | 0 | 0 | 18.2426406871193
+ 7 | 2 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 8 | 2 | 1 | 2 | 2 | 1 | 10 | 1 | 1 | 1 | 3 | 5
+ 9 | 2 | 1 | 3 | 3 | 1 | 0 | 2.23606797749979 | 7.23606797749979 | 0 | 3 | 10.2360679774998
+ 10 | 2 | 1 | 4 | 6 | -1 | 0 | 2 | 12.2360679774998 | 0 | 0 | 12.2360679774998
+ 11 | -2 | 0 | 0 | -1 | -1 | -1 | 11.4787086646191 | -1 | 2 | 17 | 30.4787086646191
+(11 rows)
+
+--q2
+ROLLBACK;
+ROLLBACK
diff --git a/src/pickDeliver/test/doc-pickDeliverEuclidean.test.sql b/src/pickDeliver/test/doc-pickDeliverEuclidean.test.sql
new file mode 100644
index 0000000..ad3c70c
--- /dev/null
+++ b/src/pickDeliver/test/doc-pickDeliverEuclidean.test.sql
@@ -0,0 +1,6 @@
+\echo --q1
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * from vehicles'
+);
+\echo --q2
diff --git a/src/pickDeliver/test/jet_customers-cygwin.result b/src/pickDeliver/test/jet_customers-cygwin.result
new file mode 100644
index 0000000..451014f
--- /dev/null
+++ b/src/pickDeliver/test/jet_customers-cygwin.result
@@ -0,0 +1,92 @@
+1|1|0|0
+2|1|27|647.668195716762
+3|1|25|677.668195716762
+4|1|23|707.668195716762
+5|1|26|1452.14702675376
+6|1|21|1482.14702675376
+7|1|19|1512.14702675376
+8|1|7|2129.27989076327
+9|1|5|2159.27989076327
+10|1|3|2189.27989076327
+11|1|1|2219.27989076327
+12|1|24|3581.60492618067
+13|1|20|3611.60492618067
+14|1|12|3641.60492618067
+15|1|4|3671.60492618067
+16|1|17|5429.44895849378
+17|1|6|5459.44895849378
+18|1|15|5904.69466888703
+19|1|13|5934.69466888703
+20|1|11|5964.69466888703
+21|1|9|5994.69466888703
+22|1|18|6352.79983495425
+23|1|10|6382.79983495425
+24|1|2|6412.79983495425
+25|1|28|6856.8191581748
+26|1|22|6886.8191581748
+27|1|16|6916.8191581748
+28|1|8|6946.8191581748
+29|1|14|7386.70206828451
+30|1|0|7504.42207508029
+1|1|1|-1|0|0|0|0|0
+2|1|2|27|0.617668195716762|0.617668195716762|0|30|30.6176681957168
+3|1|3|25|0|30.6176681957168|0|30|60.6176681957168
+4|1|4|23|0|60.6176681957168|0|30|90.6176681957168
+5|1|5|26|0.714478831037001|91.3321470267538|0|30|121.332147026754
+6|1|6|19|0|121.332147026754|0|30|151.332147026754
+7|1|7|7|0.587132864009502|151.919279890763|0|30|181.919279890763
+8|1|8|5|0|181.919279890763|0|30|211.919279890763
+9|1|9|3|0|211.919279890763|0|30|241.919279890763
+10|1|10|1|0|241.919279890763|0|30|271.919279890763
+11|1|11|24|1.33232503541741|273.251604926181|0|30|303.251604926181
+12|1|12|20|0|303.251604926181|0|30|333.251604926181
+13|1|13|12|0|333.251604926181|0|30|363.251604926181
+14|1|14|4|0|363.251604926181|0|30|393.251604926181
+15|1|15|21|1.7278440323131|394.979448958494|0|30|424.979448958494
+16|1|16|17|0|424.979448958494|0|30|454.979448958494
+17|1|17|6|0|454.979448958494|0|30|484.979448958494
+18|1|18|15|0.415245710393256|485.394694668887|0|30|515.394694668887
+19|1|19|13|0|515.394694668887|0|30|545.394694668887
+20|1|20|11|0|545.394694668887|0|30|575.394694668887
+21|1|21|9|0|575.394694668887|0|30|605.394694668887
+22|1|22|18|0.328105166067223|605.722799834954|0|30|635.722799834954
+23|1|23|10|0|635.722799834954|0|30|665.722799834954
+24|1|24|2|0|665.722799834954|0|30|695.722799834954
+25|1|25|28|0.414019323220547|696.136819158175|0|30|726.136819158175
+26|1|26|22|0|726.136819158175|0|30|756.136819158175
+27|1|27|16|0|756.136819158175|0|30|786.136819158175
+28|1|28|8|0|786.136819158175|0|30|816.136819158175
+29|1|29|14|0.409882910109704|816.546702068285|0|30|846.546702068285
+30|1|30|-1|0.117720006795786|846.66442207508|0|0|846.66442207508
+31|-2|0|-1|6.66442207508029|-1|0|840|846.66442207508
+1|1|0|1|-1|1|0|0|0|0|0|0
+2|1|0|2|27|2|6|0.617668195716762|0.617668195716762|0|30|30.6176681957168
+3|1|0|3|25|2|26|0|30.6176681957168|0|30|60.6176681957168
+4|1|0|4|23|2|40|0|60.6176681957168|0|30|90.6176681957168
+5|1|0|5|25|3|20|0.714478831037001|91.3321470267538|0|30|121.332147026754
+6|1|0|6|19|2|36|0|121.332147026754|0|30|151.332147026754
+7|1|0|7|7|2|41|0.587132864009502|151.919279890763|0|30|181.919279890763
+8|1|0|8|5|2|51|0|181.919279890763|0|30|211.919279890763
+9|1|0|9|3|2|68|0|211.919279890763|0|30|241.919279890763
+10|1|0|10|1|2|75|0|241.919279890763|0|30|271.919279890763
+11|1|0|11|23|3|61|1.33232503541741|273.251604926181|0|30|303.251604926181
+12|1|0|12|19|3|45|0|303.251604926181|0|30|333.251604926181
+13|1|0|13|11|3|33|0|333.251604926181|0|30|363.251604926181
+14|1|0|14|3|3|16|0|363.251604926181|0|30|393.251604926181
+15|1|0|15|21|2|22|1.7278440323131|394.979448958494|0|30|424.979448958494
+16|1|0|16|17|2|28|0|424.979448958494|0|30|454.979448958494
+17|1|0|17|5|3|18|0|454.979448958494|0|30|484.979448958494
+18|1|0|18|15|2|20|0.415245710393256|485.394694668887|0|30|515.394694668887
+19|1|0|19|13|2|29|0|515.394694668887|0|30|545.394694668887
+20|1|0|20|11|2|41|0|545.394694668887|0|30|575.394694668887
+21|1|0|21|9|2|54|0|575.394694668887|0|30|605.394694668887
+22|1|0|22|17|3|48|0.328105166067223|605.722799834954|0|30|635.722799834954
+23|1|0|23|9|3|35|0|635.722799834954|0|30|665.722799834954
+24|1|0|24|1|3|28|0|665.722799834954|0|30|695.722799834954
+25|1|0|25|27|3|22|0.414019323220547|696.136819158175|0|30|726.136819158175
+26|1|0|26|21|3|16|0|726.136819158175|0|30|756.136819158175
+27|1|0|27|15|3|14|0|756.136819158175|0|30|786.136819158175
+28|1|0|28|7|3|9|0|786.136819158175|0|30|816.136819158175
+29|1|0|29|13|3|0|0.409882910109704|816.546702068285|0|30|846.546702068285
+30|1|0|30|-1|6|0|0.117720006795786|846.66442207508|0|0|846.66442207508
+31|-2|0|0|-1|-1|-1|6.66442207508029|-1|0|840|846.66442207508
diff --git a/src/pickDeliver/test/jet_customers-cygwin.test.sql b/src/pickDeliver/test/jet_customers-cygwin.test.sql
new file mode 100644
index 0000000..669fc69
--- /dev/null
+++ b/src/pickDeliver/test/jet_customers-cygwin.test.sql
@@ -0,0 +1,104 @@
+
+CREATE TABLE jet_customers (
+ id integer,
+ x integer,
+ y integer,
+ pindex integer,
+ dindex integer,
+ demand integer,
+ opentime double precision,
+ closetime double precision,
+ servicetime double precision
+);
+
+CREATE TABLE stops (
+ iata_faa character varying(20),
+ x integer,
+ y integer,
+ longitude double precision,
+ latitude double precision
+);
+
+--
+-- TOC entry 4256 (class 0 OID 6648805)
+-- Dependencies: 300
+-- Data for Name: jet_customers; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+COPY jet_customers (id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) FROM stdin;
+1 1644 -614 0 2 7 0 60000 30
+3 1644 -614 0 4 17 0 60000 30
+5 1644 -614 0 6 10 0 60000 30
+7 1644 -614 0 8 5 0 60000 30
+9 2320 126 0 10 13 0 60000 30
+11 2320 126 0 12 12 0 60000 30
+13 2320 126 0 14 9 0 60000 30
+15 2320 126 0 16 2 0 60000 30
+17 2035 -176 0 18 6 0 60000 30
+19 2035 -176 0 20 16 0 60000 30
+21 2035 -176 0 22 6 0 60000 30
+23 2383 448 0 24 14 0 60000 30
+25 2383 448 0 26 20 0 60000 30
+27 2383 448 0 28 6 0 60000 30
+2 2383 448 1 0 -7 0 60000 30
+4 1981 -1903 3 0 -17 0 60000 30
+6 2035 -176 5 0 -10 0 60000 30
+8 2387 34 7 0 -5 0 60000 30
+10 2383 448 9 0 -13 0 60000 30
+12 1981 -1903 11 0 -12 0 60000 30
+14 2035 -176 13 0 -9 0 60000 30
+16 2387 34 15 0 -2 0 60000 30
+18 2383 448 17 0 -6 0 60000 30
+20 1981 -1903 19 0 -16 0 60000 30
+22 2387 34 21 0 -6 0 60000 30
+24 1981 -1903 23 0 -14 0 60000 30
+26 2035 -176 25 0 -20 0 60000 30
+28 2387 34 27 0 -6 0 60000 30
+0 2138 -119 0 0 0 0 60000 0
+\.
+
+
+--
+-- TOC entry 4255 (class 0 OID 6648802)
+-- Dependencies: 299
+-- Data for Name: stops; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+COPY stops (iata_faa, x, y, longitude, latitude) FROM stdin;
+BOS 2320 126 -71.005180999999993 42.364347000000002
+BGR 2383 448 -68.828138999999993 44.807443999999997
+MIA 1981 -1903 -80.290555999999995 25.79325
+TEB 2138 -119 -74.060837000000006 40.850102999999997
+MVY 2387 34 -70.615278000000004 41.391666999999998
+ABE 2035 -176 -75.440805999999995 40.652082999999998
+BKW 1644 -614 -81.124200000000002 37.787300000000002
+BGE 1466 -1424 -84.636927799999995 30.971598100000001
+\.
+
+-- crashes backend
+WITH
+pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM jet_customers WHERE pindex = 0 AND id != 0
+),
+deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM jet_customers WHERE dindex = 0 AND id != 0
+)
+SELECT * INTO jet_orders
+FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id;
+
+
+SELECT * FROM pgr_gsoc_vrppdtw(
+ 'SELECT id, x, y, demand, opentime, closetime, servicetime, pindex, dindex FROM jet_customers ORDER BY id', 20, 100);
+
+SELECT * FROM _pgr_pickDeliver(
+ 'SELECT id, x, y, demand, opentime, closetime, servicetime, pindex, dindex FROM jet_customers ORDER BY id', max_vehicles := 20, capacity:= 100, speed := 1000);
+
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM jet_orders ORDER BY id',
+ 'SELECT 0 AS id,
+ 2138 AS start_x, -119 AS start_y,
+ 0 AS start_open, 60000 AS start_close,
+ 100 AS capacity, 20 AS number, 1000 as speed',
+ 30);
diff --git a/src/pickDeliver/test/jet_customers.result b/src/pickDeliver/test/jet_customers.result
index b701e82..b941e06 100644
--- a/src/pickDeliver/test/jet_customers.result
+++ b/src/pickDeliver/test/jet_customers.result
@@ -1,31 +1,122 @@
-1|1|1|0|0|0.|0|0|0.
-2|1|2|27|0.617668195716762|0.62|0|30|30.62
-3|1|3|25|0|30.62|0|30|60.62
-4|1|4|2|0|60.62|0|30|90.62
-5|1|5|23|0|90.62|0|30|120.62
-6|1|6|26|0.714478831037001|121.33|0|30|151.33
-7|1|7|19|0|151.33|0|30|181.33
-8|1|8|7|0.587132864009502|181.92|0|30|211.92
-9|1|9|5|0|211.92|0|30|241.92
-10|1|10|3|0|241.92|0|30|271.92
-11|1|11|1|0|271.92|0|30|301.92
-12|1|12|12|1.33232503541741|303.25|0|30|333.25
-13|1|13|4|0|333.25|0|30|363.25
-14|1|14|24|0|363.25|0|30|393.25
-15|1|15|20|0|393.25|0|30|423.25
-16|1|16|21|1.7278440323131|424.98|0|30|454.98
-17|1|17|6|0|454.98|0|30|484.98
-18|1|18|17|0|484.98|0|30|514.98
-19|1|19|14|0|514.98|0|30|544.98
-20|1|20|13|0.415245710393256|545.39|0|30|575.39
-21|1|21|11|0|575.39|0|30|605.39
-22|1|22|9|0|605.39|0|30|635.39
-23|1|23|15|0|635.39|0|30|665.39
-24|1|24|10|0.328105166067223|665.72|0|30|695.72
-25|1|25|18|0|695.72|0|30|725.72
-26|1|26|8|0.414019323220547|726.14|0|30|756.14
-27|1|27|28|0|756.14|0|30|786.14
-28|1|28|22|0|786.14|0|30|816.14
-29|1|29|16|0|816.14|0|30|846.14
-30|1|30|0|0.292249893070981|846.43|0|0|846.43
-31|-1|0|0|6.42906905124578|0.|0|840|846.43
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+CREATE TABLE jet_customers (
+ id integer,
+ x integer,
+ y integer,
+ pindex integer,
+ dindex integer,
+ demand integer,
+ opentime double precision,
+ closetime double precision,
+ servicetime double precision
+);
+CREATE TABLE
+CREATE TABLE stops (
+ iata_faa character varying(20),
+ x integer,
+ y integer,
+ longitude double precision,
+ latitude double precision
+);
+CREATE TABLE
+COPY jet_customers (id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) FROM stdin;
+COPY 29
+COPY stops (iata_faa, x, y, longitude, latitude) FROM stdin;
+COPY 8
+WITH
+pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM jet_customers WHERE pindex = 0 AND id != 0
+),
+deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM jet_customers WHERE dindex = 0 AND id != 0
+)
+SELECT * INTO jet_orders
+FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id;
+SELECT 14
+SELECT * FROM _pgr_pickDeliver(
+ 'SELECT id, x, y, demand, opentime, closetime, servicetime, pindex, dindex
+ FROM jet_customers ORDER BY id', max_vehicles := 20, capacity:= 100, speed := 1000);
+ seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+------------+-------------+---------+-------------------+-------------------+-----------+--------------+------------------
+ 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 2 | 27 | 0.617668195716762 | 0.617668195716762 | 0 | 30 | 30.6176681957168
+ 3 | 1 | 3 | 25 | 0 | 30.6176681957168 | 0 | 30 | 60.6176681957168
+ 4 | 1 | 4 | 23 | 0 | 60.6176681957168 | 0 | 30 | 90.6176681957168
+ 5 | 1 | 5 | 26 | 0.714478831037001 | 91.3321470267538 | 0 | 30 | 121.332147026754
+ 6 | 1 | 6 | 19 | 0 | 121.332147026754 | 0 | 30 | 151.332147026754
+ 7 | 1 | 7 | 7 | 0.587132864009502 | 151.919279890763 | 0 | 30 | 181.919279890763
+ 8 | 1 | 8 | 5 | 0 | 181.919279890763 | 0 | 30 | 211.919279890763
+ 9 | 1 | 9 | 3 | 0 | 211.919279890763 | 0 | 30 | 241.919279890763
+ 10 | 1 | 10 | 1 | 0 | 241.919279890763 | 0 | 30 | 271.919279890763
+ 11 | 1 | 11 | 24 | 1.33232503541741 | 273.251604926181 | 0 | 30 | 303.251604926181
+ 12 | 1 | 12 | 20 | 0 | 303.251604926181 | 0 | 30 | 333.251604926181
+ 13 | 1 | 13 | 12 | 0 | 333.251604926181 | 0 | 30 | 363.251604926181
+ 14 | 1 | 14 | 4 | 0 | 363.251604926181 | 0 | 30 | 393.251604926181
+ 15 | 1 | 15 | 21 | 1.7278440323131 | 394.979448958494 | 0 | 30 | 424.979448958494
+ 16 | 1 | 16 | 17 | 0 | 424.979448958494 | 0 | 30 | 454.979448958494
+ 17 | 1 | 17 | 6 | 0 | 454.979448958494 | 0 | 30 | 484.979448958494
+ 18 | 1 | 18 | 15 | 0.415245710393256 | 485.394694668887 | 0 | 30 | 515.394694668887
+ 19 | 1 | 19 | 13 | 0 | 515.394694668887 | 0 | 30 | 545.394694668887
+ 20 | 1 | 20 | 11 | 0 | 545.394694668887 | 0 | 30 | 575.394694668887
+ 21 | 1 | 21 | 9 | 0 | 575.394694668887 | 0 | 30 | 605.394694668887
+ 22 | 1 | 22 | 18 | 0.328105166067223 | 605.722799834954 | 0 | 30 | 635.722799834954
+ 23 | 1 | 23 | 10 | 0 | 635.722799834954 | 0 | 30 | 665.722799834954
+ 24 | 1 | 24 | 2 | 0 | 665.722799834954 | 0 | 30 | 695.722799834954
+ 25 | 1 | 25 | 28 | 0.414019323220547 | 696.136819158175 | 0 | 30 | 726.136819158175
+ 26 | 1 | 26 | 22 | 0 | 726.136819158175 | 0 | 30 | 756.136819158175
+ 27 | 1 | 27 | 16 | 0 | 756.136819158175 | 0 | 30 | 786.136819158175
+ 28 | 1 | 28 | 8 | 0 | 786.136819158175 | 0 | 30 | 816.136819158175
+ 29 | 1 | 29 | 14 | 0.409882910109704 | 816.546702068285 | 0 | 30 | 846.546702068285
+ 30 | 1 | 30 | 0 | 0.117720006795786 | 846.66442207508 | 0 | 0 | 846.66442207508
+ 31 | -2 | 0 | 0 | 6.66442207508029 | -1 | 0 | 840 | 846.66442207508
+(31 rows)
+
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM jet_orders ORDER BY id',
+ 'SELECT 0 AS id,
+ 2138 AS start_x, -119 AS start_y,
+ 0 AS start_open, 60000 AS start_close,
+ 100 AS capacity, 20 AS number, 1000 as speed',
+ 30);
+ seq | vehicle_number | vehicle_id | vehicle_seq | order_id | stop_type | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+----------------+------------+-------------+----------+-----------+-------+-------------------+-------------------+-----------+--------------+------------------
+ 1 | 1 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 0 | 2 | 27 | 2 | 6 | 0.617668195716762 | 0.617668195716762 | 0 | 30 | 30.6176681957168
+ 3 | 1 | 0 | 3 | 25 | 2 | 26 | 0 | 30.6176681957168 | 0 | 30 | 60.6176681957168
+ 4 | 1 | 0 | 4 | 23 | 2 | 40 | 0 | 60.6176681957168 | 0 | 30 | 90.6176681957168
+ 5 | 1 | 0 | 5 | 25 | 3 | 20 | 0.714478831037001 | 91.3321470267538 | 0 | 30 | 121.332147026754
+ 6 | 1 | 0 | 6 | 19 | 2 | 36 | 0 | 121.332147026754 | 0 | 30 | 151.332147026754
+ 7 | 1 | 0 | 7 | 7 | 2 | 41 | 0.587132864009502 | 151.919279890763 | 0 | 30 | 181.919279890763
+ 8 | 1 | 0 | 8 | 5 | 2 | 51 | 0 | 181.919279890763 | 0 | 30 | 211.919279890763
+ 9 | 1 | 0 | 9 | 3 | 2 | 68 | 0 | 211.919279890763 | 0 | 30 | 241.919279890763
+ 10 | 1 | 0 | 10 | 1 | 2 | 75 | 0 | 241.919279890763 | 0 | 30 | 271.919279890763
+ 11 | 1 | 0 | 11 | 23 | 3 | 61 | 1.33232503541741 | 273.251604926181 | 0 | 30 | 303.251604926181
+ 12 | 1 | 0 | 12 | 19 | 3 | 45 | 0 | 303.251604926181 | 0 | 30 | 333.251604926181
+ 13 | 1 | 0 | 13 | 11 | 3 | 33 | 0 | 333.251604926181 | 0 | 30 | 363.251604926181
+ 14 | 1 | 0 | 14 | 3 | 3 | 16 | 0 | 363.251604926181 | 0 | 30 | 393.251604926181
+ 15 | 1 | 0 | 15 | 21 | 2 | 22 | 1.7278440323131 | 394.979448958494 | 0 | 30 | 424.979448958494
+ 16 | 1 | 0 | 16 | 17 | 2 | 28 | 0 | 424.979448958494 | 0 | 30 | 454.979448958494
+ 17 | 1 | 0 | 17 | 5 | 3 | 18 | 0 | 454.979448958494 | 0 | 30 | 484.979448958494
+ 18 | 1 | 0 | 18 | 15 | 2 | 20 | 0.415245710393256 | 485.394694668887 | 0 | 30 | 515.394694668887
+ 19 | 1 | 0 | 19 | 13 | 2 | 29 | 0 | 515.394694668887 | 0 | 30 | 545.394694668887
+ 20 | 1 | 0 | 20 | 11 | 2 | 41 | 0 | 545.394694668887 | 0 | 30 | 575.394694668887
+ 21 | 1 | 0 | 21 | 9 | 2 | 54 | 0 | 575.394694668887 | 0 | 30 | 605.394694668887
+ 22 | 1 | 0 | 22 | 17 | 3 | 48 | 0.328105166067223 | 605.722799834954 | 0 | 30 | 635.722799834954
+ 23 | 1 | 0 | 23 | 9 | 3 | 35 | 0 | 635.722799834954 | 0 | 30 | 665.722799834954
+ 24 | 1 | 0 | 24 | 1 | 3 | 28 | 0 | 665.722799834954 | 0 | 30 | 695.722799834954
+ 25 | 1 | 0 | 25 | 27 | 3 | 22 | 0.414019323220547 | 696.136819158175 | 0 | 30 | 726.136819158175
+ 26 | 1 | 0 | 26 | 21 | 3 | 16 | 0 | 726.136819158175 | 0 | 30 | 756.136819158175
+ 27 | 1 | 0 | 27 | 15 | 3 | 14 | 0 | 756.136819158175 | 0 | 30 | 786.136819158175
+ 28 | 1 | 0 | 28 | 7 | 3 | 9 | 0 | 786.136819158175 | 0 | 30 | 816.136819158175
+ 29 | 1 | 0 | 29 | 13 | 3 | 0 | 0.409882910109704 | 816.546702068285 | 0 | 30 | 846.546702068285
+ 30 | 1 | 0 | 30 | -1 | 6 | 0 | 0.117720006795786 | 846.66442207508 | 0 | 0 | 846.66442207508
+ 31 | -2 | 0 | 0 | -1 | -1 | -1 | 6.66442207508029 | -1 | 0 | 840 | 846.66442207508
+(31 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/pickDeliver/test/jet_customers.test.sql b/src/pickDeliver/test/jet_customers.test.sql
index a619b7c..c713d4f 100644
--- a/src/pickDeliver/test/jet_customers.test.sql
+++ b/src/pickDeliver/test/jet_customers.test.sql
@@ -75,13 +75,27 @@ BKW 1644 -614 -81.124200000000002 37.787300000000002
BGE 1466 -1424 -84.636927799999995 30.971598100000001
\.
+WITH
+pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM jet_customers WHERE pindex = 0 AND id != 0
+),
+deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM jet_customers WHERE dindex = 0 AND id != 0
+)
+SELECT * INTO jet_orders
+FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id;
-SELECT seq, vehicle_id, vehicle_seq, stop_id, travel_time,
- to_char(arrival_time, 'FM9990.99') AS arrival_time,
- wait_time, service_time,
- to_char(departure_time, 'FM9990.99') AS departure_time
-FROM _pgr_pickDeliver(
+SELECT * FROM _pgr_pickDeliver(
'SELECT id, x, y, demand, opentime, closetime, servicetime, pindex, dindex
- FROM jet_customers
- ORDER BY id',
- max_vehicles := 20, capacity:= 100, speed := 1000);
+ FROM jet_customers ORDER BY id', max_vehicles := 20, capacity:= 100, speed := 1000);
+
+
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM jet_orders ORDER BY id',
+ 'SELECT 0 AS id,
+ 2138 AS start_x, -119 AS start_y,
+ 0 AS start_open, 60000 AS start_close,
+ 100 AS capacity, 20 AS number, 1000 as speed',
+ 30);
diff --git a/src/pickDeliver/test/jet_customers1.result b/src/pickDeliver/test/jet_customers1.result
new file mode 100644
index 0000000..7b7862a
--- /dev/null
+++ b/src/pickDeliver/test/jet_customers1.result
@@ -0,0 +1,291 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+CREATE TABLE jet_customers (
+ airport character varying,
+ id integer,
+ x double precision,
+ y double precision,
+ pindex integer,
+ dindex integer,
+ demand integer,
+ opentime double precision,
+ closetime double precision,
+ servicetime double precision
+);
+CREATE TABLE
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 1, 2320738.4688434978, 126348.38967116659, 0, 2, 4, 3448, 2853448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 3, 2320738.4688434978, 126348.38967116659, 0, 4, 4, 3448, 2853448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 5, 2320738.4688434978, 126348.38967116659, 0, 6, 4, 3448, 2853448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 7, 2320738.4688434978, 126348.38967116659, 0, 8, 4, 3448, 2853448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 9, 2320738.4688434978, 126348.38967116659, 0, 10, 4, 3448, 2853448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 11, 2320738.4688434978, 126348.38967116659, 0, 12, 4, 3448, 2853448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 13, 2383186.1525343237, 448251.25888828852, 0, 14, 4, 3463, 2853463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 15, 2383186.1525343237, 448251.25888828852, 0, 16, 4, 3463, 2853463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 17, 2383186.1525343237, 448251.25888828852, 0, 18, 4, 3463, 2853463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 19, 2383186.1525343237, 448251.25888828852, 0, 20, 4, 3463, 2853463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 21, 2383186.1525343237, 448251.25888828852, 0, 22, 4, 3463, 2853463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 23, 2383186.1525343237, 448251.25888828852, 0, 24, 4, 3463, 2853463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 25, 1981144.5525029898, -1903041.2384292425, 0, 26, 2, 3576, 2853576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 27, 1981144.5525029898, -1903041.2384292425, 0, 28, 2, 3576, 2853576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 29, 1981144.5525029898, -1903041.2384292425, 0, 30, 2, 3576, 2853576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 31, 1981144.5525029898, -1903041.2384292425, 0, 32, 2, 3576, 2853576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 33, 1981144.5525029898, -1903041.2384292425, 0, 34, 2, 3576, 2853576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 35, 1981144.5525029898, -1903041.2384292425, 0, 36, 2, 3576, 2853576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 37, 2138409.5568088419, -119451.50568778868, 0, 38, 5, 3624, 2853624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 39, 2138409.5568088419, -119451.50568778868, 0, 40, 5, 3624, 2853624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 41, 2138409.5568088419, -119451.50568778868, 0, 42, 5, 3624, 2853624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 43, 2138409.5568088419, -119451.50568778868, 0, 44, 5, 3624, 2853624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 45, 2138409.5568088419, -119451.50568778868, 0, 46, 5, 3624, 2853624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 47, 2138409.5568088419, -119451.50568778868, 0, 48, 5, 3624, 2853624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 49, 2387491.1007072991, 34459.351848672632, 0, 50, 1, 4265, 2854265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 51, 2387491.1007072991, 34459.351848672632, 0, 52, 1, 4265, 2854265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 53, 2387491.1007072991, 34459.351848672632, 0, 54, 1, 4265, 2854265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 55, 2387491.1007072991, 34459.351848672632, 0, 56, 1, 4265, 2854265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 57, 2387491.1007072991, 34459.351848672632, 0, 58, 1, 4265, 2854265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 59, 2387491.1007072991, 34459.351848672632, 0, 60, 1, 4265, 2854265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 61, 2035310.7411768832, -176076.78362264115, 0, 62, 1, 4355, 2854355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 63, 2035310.7411768832, -176076.78362264115, 0, 64, 1, 4355, 2854355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 65, 2035310.7411768832, -176076.78362264115, 0, 66, 1, 4355, 2854355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 67, 2035310.7411768832, -176076.78362264115, 0, 68, 1, 4355, 2854355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 69, 2035310.7411768832, -176076.78362264115, 0, 70, 1, 4355, 2854355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 71, 2035310.7411768832, -176076.78362264115, 0, 72, 1, 4355, 2854355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 2, 2320738.4688434978, 126348.38967116659, 1, 0, -4, 3448, 6903448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 4, 2383186.1525343237, 448251.25888828852, 3, 0, -4, 3448, 6903448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 6, 1981144.5525029898, -1903041.2384292425, 5, 0, -4, 3448, 6903448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 8, 2138409.5568088419, -119451.50568778868, 7, 0, -4, 3448, 6903448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 10, 2387491.1007072991, 34459.351848672632, 9, 0, -4, 3448, 6903448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 12, 2035310.7411768832, -176076.78362264115, 11, 0, -4, 3448, 6903448, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 14, 2320738.4688434978, 126348.38967116659, 13, 0, -4, 3463, 6903463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 16, 2383186.1525343237, 448251.25888828852, 15, 0, -4, 3463, 6903463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 18, 1981144.5525029898, -1903041.2384292425, 17, 0, -4, 3463, 6903463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 20, 2138409.5568088419, -119451.50568778868, 19, 0, -4, 3463, 6903463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 22, 2387491.1007072991, 34459.351848672632, 21, 0, -4, 3463, 6903463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 24, 2035310.7411768832, -176076.78362264115, 23, 0, -4, 3463, 6903463, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 26, 2320738.4688434978, 126348.38967116659, 25, 0, -2, 3576, 6903576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 28, 2383186.1525343237, 448251.25888828852, 27, 0, -2, 3576, 6903576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 30, 1981144.5525029898, -1903041.2384292425, 29, 0, -2, 3576, 6903576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 32, 2138409.5568088419, -119451.50568778868, 31, 0, -2, 3576, 6903576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 34, 2387491.1007072991, 34459.351848672632, 33, 0, -2, 3576, 6903576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 36, 2035310.7411768832, -176076.78362264115, 35, 0, -2, 3576, 6903576, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 38, 2320738.4688434978, 126348.38967116659, 37, 0, -5, 3624, 6903624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 40, 2383186.1525343237, 448251.25888828852, 39, 0, -5, 3624, 6903624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 42, 1981144.5525029898, -1903041.2384292425, 41, 0, -5, 3624, 6903624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 44, 2138409.5568088419, -119451.50568778868, 43, 0, -5, 3624, 6903624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 46, 2387491.1007072991, 34459.351848672632, 45, 0, -5, 3624, 6903624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 48, 2035310.7411768832, -176076.78362264115, 47, 0, -5, 3624, 6903624, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 50, 2320738.4688434978, 126348.38967116659, 49, 0, -1, 4265, 6904265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 52, 2383186.1525343237, 448251.25888828852, 51, 0, -1, 4265, 6904265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 54, 1981144.5525029898, -1903041.2384292425, 53, 0, -1, 4265, 6904265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 56, 2138409.5568088419, -119451.50568778868, 55, 0, -1, 4265, 6904265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 58, 2387491.1007072991, 34459.351848672632, 57, 0, -1, 4265, 6904265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 60, 2035310.7411768832, -176076.78362264115, 59, 0, -1, 4265, 6904265, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 62, 2320738.4688434978, 126348.38967116659, 61, 0, -1, 4355, 6904355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 64, 2383186.1525343237, 448251.25888828852, 63, 0, -1, 4355, 6904355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 66, 1981144.5525029898, -1903041.2384292425, 65, 0, -1, 4355, 6904355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 68, 2138409.5568088419, -119451.50568778868, 67, 0, -1, 4355, 6904355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 70, 2387491.1007072991, 34459.351848672632, 69, 0, -1, 4355, 6904355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 72, 2035310.7411768832, -176076.78362264115, 71, 0, -1, 4355, 6904355, 450000);
+INSERT 0 1
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 0, 2138409.5568088419, -119451.50568778868, 0, 0, 0, 0, 7200000, 0);
+INSERT 0 1
+WITH
+customer_data AS (SELECT * FROM jet_customers),
+pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+),
+deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+)
+SELECT * INTO jet_orders FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id;
+SELECT 36
+WITH
+customer_data AS (select * from jet_customers)
+SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close,
+ 5 AS capacity, 10 AS number INTO jet_vehicles
+FROM customer_data WHERE id = 0 LIMIT 1;
+SELECT 1
+SELECT *
+FROM _pgr_pickDeliverEuclidean(
+ $$ SELECT * from jet_orders $$,
+ $$ SELECT * FROM jet_vehicles $$
+)
+ROLLBACK;
+ seq | vehicle_number | vehicle_id | vehicle_seq | order_id | stop_type | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+----------------+------------+-------------+----------+-----------+-------+------------------+------------------+-----------+--------------+------------------
+ 1 | 1 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 0 | 2 | 43 | 2 | 5 | 0 | 0 | 3624 | 450000 | 453624
+ 3 | 1 | 0 | 3 | 43 | 3 | 0 | 0 | 453624 | 0 | 450000 | 903624
+ 4 | 1 | 0 | 4 | 47 | 2 | 5 | 0 | 903624 | 0 | 450000 | 1353624
+ 5 | 1 | 0 | 5 | 67 | 3 | 4 | 0 | 1353624 | 0 | 450000 | 1803624
+ 6 | 1 | 0 | 6 | 67 | 2 | 5 | 117625.62597458 | 1921249.62597458 | 0 | 450000 | 2371249.62597458
+ 7 | 1 | 0 | 7 | 47 | 3 | 0 | 0 | 2371249.62597458 | 0 | 450000 | 2821249.62597458
+ 8 | 1 | 0 | 8 | -1 | 6 | 0 | 117625.62597458 | 2938875.25194916 | 0 | 0 | 2938875.25194916
+ 9 | 2 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 10 | 2 | 0 | 2 | 21 | 2 | 4 | 618224.886851279 | 618224.886851279 | 0 | 450000 | 1068224.88685128
+ 11 | 2 | 0 | 3 | 51 | 3 | 3 | 0 | 1068224.88685128 | 0 | 450000 | 1518224.88685128
+ 12 | 2 | 0 | 4 | 55 | 2 | 4 | 413814.30003113 | 1932039.18688241 | 0 | 450000 | 2382039.18688241
+ 13 | 2 | 0 | 5 | 51 | 2 | 5 | 0 | 2382039.18688241 | 0 | 450000 | 2832039.18688241
+ 14 | 2 | 0 | 6 | 21 | 3 | 1 | 0 | 2832039.18688241 | 0 | 450000 | 3282039.18688241
+ 15 | 2 | 0 | 7 | 55 | 3 | 0 | 292797.144074952 | 3574836.33095736 | 0 | 450000 | 4024836.33095736
+ 16 | 2 | 0 | 8 | -1 | 6 | 0 | 0 | 4024836.33095736 | 0 | 0 | 4024836.33095736
+ 17 | 3 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 18 | 3 | 0 | 2 | 3 | 2 | 4 | 306041.534309013 | 306041.534309013 | 0 | 450000 | 756041.534309013
+ 19 | 3 | 0 | 3 | 13 | 3 | 0 | 0 | 756041.534309013 | 0 | 450000 | 1206041.53430901
+ 20 | 3 | 0 | 4 | 13 | 2 | 4 | 327904.209196169 | 1533945.74350518 | 0 | 450000 | 1983945.74350518
+ 21 | 3 | 0 | 5 | 3 | 3 | 0 | 0 | 1983945.74350518 | 0 | 450000 | 2433945.74350518
+ 22 | 3 | 0 | 6 | 7 | 2 | 4 | 327904.209196169 | 2761849.95270135 | 0 | 450000 | 3211849.95270135
+ 23 | 3 | 0 | 7 | 7 | 3 | 0 | 306041.534309013 | 3517891.48701036 | 0 | 450000 | 3967891.48701036
+ 24 | 3 | 0 | 8 | -1 | 6 | 0 | 0 | 3967891.48701036 | 0 | 0 | 3967891.48701036
+ 25 | 4 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 26 | 4 | 0 | 2 | 39 | 2 | 5 | 0 | 0 | 3624 | 450000 | 453624
+ 27 | 4 | 0 | 3 | 15 | 3 | 1 | 618224.886851279 | 1071848.88685128 | 0 | 450000 | 1521848.88685128
+ 28 | 4 | 0 | 4 | 15 | 2 | 5 | 0 | 1521848.88685128 | 0 | 450000 | 1971848.88685128
+ 29 | 4 | 0 | 5 | 39 | 3 | 0 | 0 | 1971848.88685128 | 0 | 450000 | 2421848.88685128
+ 30 | 4 | 0 | 6 | -1 | 6 | 0 | 618224.886851279 | 3040073.77370256 | 0 | 0 | 3040073.77370256
+ 31 | 5 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 32 | 5 | 0 | 2 | 37 | 2 | 5 | 0 | 0 | 3624 | 450000 | 453624
+ 33 | 5 | 0 | 3 | 9 | 3 | 1 | 292797.144074952 | 746421.144074952 | 0 | 450000 | 1196421.14407495
+ 34 | 5 | 0 | 4 | 9 | 2 | 5 | 113576.005972599 | 1309997.15004755 | 0 | 450000 | 1759997.15004755
+ 35 | 5 | 0 | 5 | 1 | 3 | 1 | 0 | 1759997.15004755 | 0 | 450000 | 2209997.15004755
+ 36 | 5 | 0 | 6 | 1 | 2 | 5 | 0 | 2209997.15004755 | 0 | 450000 | 2659997.15004755
+ 37 | 5 | 0 | 7 | 37 | 3 | 0 | 0 | 2659997.15004755 | 0 | 450000 | 3109997.15004755
+ 38 | 5 | 0 | 8 | -1 | 6 | 0 | 306041.534309013 | 3416038.68435656 | 0 | 0 | 3416038.68435656
+ 39 | 6 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 40 | 6 | 0 | 2 | 45 | 2 | 5 | 0 | 0 | 3624 | 450000 | 453624
+ 41 | 6 | 0 | 3 | 57 | 3 | 4 | 292797.144074952 | 746421.144074952 | 0 | 450000 | 1196421.14407495
+ 42 | 6 | 0 | 4 | 57 | 2 | 5 | 0 | 1196421.14407495 | 0 | 450000 | 1646421.14407495
+ 43 | 6 | 0 | 5 | 45 | 3 | 0 | 0 | 1646421.14407495 | 0 | 450000 | 2096421.14407495
+ 44 | 6 | 0 | 6 | -1 | 6 | 0 | 292797.144074952 | 2389218.2881499 | 0 | 0 | 2389218.2881499
+ 45 | 7 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 46 | 7 | 0 | 2 | 31 | 2 | 2 | 1790509.59682434 | 1790509.59682434 | 0 | 450000 | 2240509.59682434
+ 47 | 7 | 0 | 3 | 27 | 2 | 4 | 0 | 2240509.59682434 | 0 | 450000 | 2690509.59682434
+ 48 | 7 | 0 | 4 | 27 | 3 | 2 | 2385416.91452406 | 5075926.51134839 | 0 | 450000 | 5525926.51134839
+ 49 | 7 | 0 | 5 | 31 | 3 | 0 | 618224.886851279 | 6144151.39819967 | 0 | 450000 | 6594151.39819967
+ 50 | 7 | 0 | 6 | -1 | 6 | 0 | 0 | 6594151.39819967 | 0 | 0 | 6594151.39819967
+ 51 | 8 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 52 | 8 | 0 | 2 | 65 | 2 | 1 | 117625.62597458 | 117625.62597458 | 0 | 450000 | 567625.62597458
+ 53 | 8 | 0 | 3 | 29 | 2 | 3 | 1727813.70643971 | 2295439.33241429 | 0 | 450000 | 2745439.33241429
+ 54 | 8 | 0 | 4 | 35 | 2 | 5 | 0 | 2745439.33241429 | 0 | 450000 | 3195439.33241429
+ 55 | 8 | 0 | 5 | 29 | 3 | 3 | 0 | 3195439.33241429 | 0 | 450000 | 3645439.33241429
+ 56 | 8 | 0 | 6 | 65 | 3 | 2 | 0 | 3645439.33241429 | 0 | 450000 | 4095439.33241429
+ 57 | 8 | 0 | 7 | 35 | 3 | 0 | 1727813.70643971 | 5823253.03885399 | 0 | 450000 | 6273253.03885399
+ 58 | 8 | 0 | 8 | -1 | 6 | 0 | 117625.62597458 | 6390878.66482857 | 0 | 0 | 6390878.66482857
+ 59 | 9 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 60 | 9 | 0 | 2 | 61 | 2 | 1 | 117625.62597458 | 117625.62597458 | 0 | 450000 | 567625.62597458
+ 61 | 9 | 0 | 3 | 33 | 2 | 3 | 1727813.70643971 | 2295439.33241429 | 0 | 450000 | 2745439.33241429
+ 62 | 9 | 0 | 4 | 25 | 2 | 5 | 0 | 2745439.33241429 | 0 | 450000 | 3195439.33241429
+ 63 | 9 | 0 | 5 | 33 | 3 | 3 | 1979653.01367811 | 5175092.3460924 | 0 | 450000 | 5625092.3460924
+ 64 | 9 | 0 | 6 | 25 | 3 | 1 | 113576.005972599 | 5738668.352065 | 0 | 450000 | 6188668.352065
+ 65 | 9 | 0 | 7 | 61 | 3 | 0 | 0 | 6188668.352065 | 0 | 450000 | 6638668.352065
+ 66 | 9 | 0 | 8 | -1 | 6 | 0 | 306041.534309013 | 6944709.88637401 | 0 | 0 | 6944709.88637401
+ 67 | 10 | 0 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 68 | 10 | 0 | 2 | 63 | 2 | 1 | 117625.62597458 | 117625.62597458 | 0 | 450000 | 567625.62597458
+ 69 | 10 | 0 | 3 | 59 | 3 | 0 | 0 | 567625.62597458 | 0 | 450000 | 1017625.62597458
+ 70 | 10 | 0 | 4 | 59 | 2 | 1 | 410312.649059432 | 1427938.27503401 | 0 | 450000 | 1877938.27503401
+ 71 | 10 | 0 | 5 | 19 | 2 | 5 | 413814.30003113 | 2291752.57506514 | 0 | 450000 | 2741752.57506514
+ 72 | 10 | 0 | 6 | 63 | 3 | 4 | 0 | 2741752.57506514 | 0 | 450000 | 3191752.57506514
+ 73 | 10 | 0 | 7 | 19 | 3 | 0 | 618224.886851279 | 3809977.46191642 | 0 | 450000 | 4259977.46191642
+ 74 | 10 | 0 | 8 | -1 | 6 | 0 | 0 | 4259977.46191642 | 0 | 0 | 4259977.46191642
+ 75 | 11 | -1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 76 | 11 | -1 | 2 | 5 | 2 | 4 | 306041.534309013 | 306041.534309013 | 0 | 450000 | 756041.534309013
+ 77 | 11 | -1 | 3 | 49 | 3 | 3 | 0 | 756041.534309013 | 0 | 450000 | 1206041.53430901
+ 78 | 11 | -1 | 4 | 49 | 2 | 4 | 113576.005972599 | 1319617.54028161 | 0 | 450000 | 1769617.54028161
+ 79 | 11 | -1 | 5 | 53 | 2 | 5 | 0 | 1769617.54028161 | 0 | 450000 | 2219617.54028161
+ 80 | 11 | -1 | 6 | 5 | 3 | 1 | 1979653.01367811 | 4199270.55395972 | 0 | 450000 | 4649270.55395972
+ 81 | 11 | -1 | 7 | 53 | 3 | 0 | 0 | 4649270.55395972 | 0 | 450000 | 5099270.55395972
+ 82 | 11 | -1 | 8 | -1 | 6 | 0 | 1790509.59682434 | 6889780.15078406 | 0 | 0 | 6889780.15078406
+ 83 | 12 | -1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 84 | 12 | -1 | 2 | 71 | 2 | 1 | 117625.62597458 | 117625.62597458 | 0 | 450000 | 567625.62597458
+ 85 | 12 | -1 | 3 | 71 | 3 | 0 | 0 | 567625.62597458 | 0 | 450000 | 1017625.62597458
+ 86 | 12 | -1 | 4 | 69 | 2 | 1 | 0 | 1017625.62597458 | 0 | 450000 | 1467625.62597458
+ 87 | 12 | -1 | 5 | 69 | 3 | 0 | 410312.649059432 | 1877938.27503401 | 0 | 450000 | 2327938.27503401
+ 88 | 12 | -1 | 6 | -1 | 6 | 0 | 292797.144074952 | 2620735.41910896 | 0 | 0 | 2620735.41910896
+ 89 | 13 | -1 | 1 | -1 | 1 | 0 | 0 | 0 | 0 | 0 | 0
+ 90 | 13 | -1 | 2 | 41 | 2 | 5 | 0 | 0 | 3624 | 450000 | 453624
+ 91 | 13 | -1 | 3 | 11 | 2 | 9 | 306041.534309013 | 759665.534309013 | 0 | 450000 | 1209665.53430901
+ 92 | 13 | -1 | 4 | 23 | 2 | 13 | 327904.209196169 | 1537569.74350518 | 0 | 450000 | 1987569.74350518
+ 93 | 13 | -1 | 5 | 17 | 2 | 17 | 0 | 1987569.74350518 | 0 | 450000 | 2437569.74350518
+ 94 | 13 | -1 | 6 | 23 | 3 | 13 | 714704.698804085 | 3152274.44230927 | 0 | 450000 | 3602274.44230927
+ 95 | 13 | -1 | 7 | 11 | 3 | 9 | 0 | 3602274.44230927 | 0 | 450000 | 4052274.44230927
+ 96 | 13 | -1 | 8 | 41 | 3 | 4 | 1727813.70643971 | 5780088.14874897 | 0 | 450000 | 6230088.14874897
+ 97 | 13 | -1 | 9 | 17 | 3 | 0 | 0 | 6230088.14874897 | 0 | 450000 | 6680088.14874897
+ 98 | 13 | -1 | 10 | -1 | 6 | 0 | 1790509.59682434 | 8470597.74557331 | 0 | 0 | 8470597.74557331
+ 99 | -2 | 0 | 0 | -1 | -1 | -1 | 29529644.5429109 | -1 | 18120 | 32400000 | 61947764.5429109
+(99 rows)
+
diff --git a/src/pickDeliver/test/jet_customers1.test.sql b/src/pickDeliver/test/jet_customers1.test.sql
new file mode 100644
index 0000000..771875c
--- /dev/null
+++ b/src/pickDeliver/test/jet_customers1.test.sql
@@ -0,0 +1,120 @@
+
+-- drop table if exists jet_customers;
+-- drop table if exists jet_orders;
+-- drop table if exists jet_vehicles;
+
+
+CREATE TABLE jet_customers (
+ airport character varying,
+ id integer,
+ x double precision,
+ y double precision,
+ pindex integer,
+ dindex integer,
+ demand integer,
+ opentime double precision,
+ closetime double precision,
+ servicetime double precision
+);
+
+
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 1, 2320738.4688434978, 126348.38967116659, 0, 2, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 3, 2320738.4688434978, 126348.38967116659, 0, 4, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 5, 2320738.4688434978, 126348.38967116659, 0, 6, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 7, 2320738.4688434978, 126348.38967116659, 0, 8, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 9, 2320738.4688434978, 126348.38967116659, 0, 10, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 11, 2320738.4688434978, 126348.38967116659, 0, 12, 4, 3448, 2853448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 13, 2383186.1525343237, 448251.25888828852, 0, 14, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 15, 2383186.1525343237, 448251.25888828852, 0, 16, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 17, 2383186.1525343237, 448251.25888828852, 0, 18, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 19, 2383186.1525343237, 448251.25888828852, 0, 20, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 21, 2383186.1525343237, 448251.25888828852, 0, 22, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 23, 2383186.1525343237, 448251.25888828852, 0, 24, 4, 3463, 2853463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 25, 1981144.5525029898, -1903041.2384292425, 0, 26, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 27, 1981144.5525029898, -1903041.2384292425, 0, 28, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 29, 1981144.5525029898, -1903041.2384292425, 0, 30, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 31, 1981144.5525029898, -1903041.2384292425, 0, 32, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 33, 1981144.5525029898, -1903041.2384292425, 0, 34, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 35, 1981144.5525029898, -1903041.2384292425, 0, 36, 2, 3576, 2853576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 37, 2138409.5568088419, -119451.50568778868, 0, 38, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 39, 2138409.5568088419, -119451.50568778868, 0, 40, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 41, 2138409.5568088419, -119451.50568778868, 0, 42, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 43, 2138409.5568088419, -119451.50568778868, 0, 44, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 45, 2138409.5568088419, -119451.50568778868, 0, 46, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 47, 2138409.5568088419, -119451.50568778868, 0, 48, 5, 3624, 2853624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 49, 2387491.1007072991, 34459.351848672632, 0, 50, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 51, 2387491.1007072991, 34459.351848672632, 0, 52, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 53, 2387491.1007072991, 34459.351848672632, 0, 54, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 55, 2387491.1007072991, 34459.351848672632, 0, 56, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 57, 2387491.1007072991, 34459.351848672632, 0, 58, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 59, 2387491.1007072991, 34459.351848672632, 0, 60, 1, 4265, 2854265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 61, 2035310.7411768832, -176076.78362264115, 0, 62, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 63, 2035310.7411768832, -176076.78362264115, 0, 64, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 65, 2035310.7411768832, -176076.78362264115, 0, 66, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 67, 2035310.7411768832, -176076.78362264115, 0, 68, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 69, 2035310.7411768832, -176076.78362264115, 0, 70, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 71, 2035310.7411768832, -176076.78362264115, 0, 72, 1, 4355, 2854355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 2, 2320738.4688434978, 126348.38967116659, 1, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 4, 2383186.1525343237, 448251.25888828852, 3, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 6, 1981144.5525029898, -1903041.2384292425, 5, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 8, 2138409.5568088419, -119451.50568778868, 7, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 10, 2387491.1007072991, 34459.351848672632, 9, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 12, 2035310.7411768832, -176076.78362264115, 11, 0, -4, 3448, 6903448, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 14, 2320738.4688434978, 126348.38967116659, 13, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 16, 2383186.1525343237, 448251.25888828852, 15, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 18, 1981144.5525029898, -1903041.2384292425, 17, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 20, 2138409.5568088419, -119451.50568778868, 19, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 22, 2387491.1007072991, 34459.351848672632, 21, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 24, 2035310.7411768832, -176076.78362264115, 23, 0, -4, 3463, 6903463, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 26, 2320738.4688434978, 126348.38967116659, 25, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 28, 2383186.1525343237, 448251.25888828852, 27, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 30, 1981144.5525029898, -1903041.2384292425, 29, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 32, 2138409.5568088419, -119451.50568778868, 31, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 34, 2387491.1007072991, 34459.351848672632, 33, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 36, 2035310.7411768832, -176076.78362264115, 35, 0, -2, 3576, 6903576, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 38, 2320738.4688434978, 126348.38967116659, 37, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 40, 2383186.1525343237, 448251.25888828852, 39, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 42, 1981144.5525029898, -1903041.2384292425, 41, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 44, 2138409.5568088419, -119451.50568778868, 43, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 46, 2387491.1007072991, 34459.351848672632, 45, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 48, 2035310.7411768832, -176076.78362264115, 47, 0, -5, 3624, 6903624, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 50, 2320738.4688434978, 126348.38967116659, 49, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 52, 2383186.1525343237, 448251.25888828852, 51, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 54, 1981144.5525029898, -1903041.2384292425, 53, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 56, 2138409.5568088419, -119451.50568778868, 55, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 58, 2387491.1007072991, 34459.351848672632, 57, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 60, 2035310.7411768832, -176076.78362264115, 59, 0, -1, 4265, 6904265, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 62, 2320738.4688434978, 126348.38967116659, 61, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 64, 2383186.1525343237, 448251.25888828852, 63, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 66, 1981144.5525029898, -1903041.2384292425, 65, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 68, 2138409.5568088419, -119451.50568778868, 67, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 70, 2387491.1007072991, 34459.351848672632, 69, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 72, 2035310.7411768832, -176076.78362264115, 71, 0, -1, 4355, 6904355, 450000);
+INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 0, 2138409.5568088419, -119451.50568778868, 0, 0, 0, 0, 7200000, 0);
+
+
+-- converting data to use euclidean
+WITH
+customer_data AS (SELECT * FROM jet_customers),
+pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+),
+deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+)
+SELECT * INTO jet_orders FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id;
+
+WITH
+customer_data AS (select * from jet_customers)
+SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close,
+ 5 AS capacity, 10 AS number INTO jet_vehicles
+FROM customer_data WHERE id = 0 LIMIT 1;
+
+SELECT *
+FROM _pgr_pickDeliverEuclidean(
+ $$ SELECT * from jet_orders $$,
+ $$ SELECT * FROM jet_vehicles $$
+)
diff --git a/src/pickDeliver/test/notTestingYet/pickDeliver-innerquery.sql b/src/pickDeliver/test/notTestingYet/pickDeliver-innerquery.sql
new file mode 100644
index 0000000..b7e7d9a
--- /dev/null
+++ b/src/pickDeliver/test/notTestingYet/pickDeliver-innerquery.sql
@@ -0,0 +1,391 @@
+\i setup.sql
+
+SELECT plan(122);
+
+SELECT todo_start('not ready yet');
+
+/* A call looks like this
+SELECT * INTO pickDeliverResults FROM _pgr_pickdeliver(
+ $$SELECT * FROM orders ORDER BY id$$,
+ $$SELECT * FROM vehicles ORDER BY id$$,
+ $$SELECT * FROM dist_matrix$$,
+ 30);
+*/
+
+SELECT has_function('_pgr_pickdeliver',
+ ARRAY['text', 'text', 'text', 'integer']);
+
+SELECT function_returns('_pgr_pickdeliver',
+ ARRAY['text', 'text', 'text', 'integer'],
+ 'setof record');
+
+/* testing the pick/deliver orders*/
+CREATE OR REPLACE FUNCTION test_anyInteger_orders(fn TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'select * from ' || fn || '($$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM orders WHERE id = 11$$,
+ $$SELECT * FROM vehicles ORDER BY id$$,
+ $$SELECT * FROM dist_matrix$$,
+ 30)';
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+/* testing the pick/deliver orders*/
+CREATE OR REPLACE FUNCTION test_anyNumerical_orders(fn TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'select * from ' || fn || '($$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM orders WHERE id = 11$$,
+ $$SELECT * FROM vehicles ORDER BY id$$,
+ $$SELECT * FROM dist_matrix$$,
+ 30)';
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+/*
+testing the pick/deliver vehicles
+*/
+CREATE OR REPLACE FUNCTION test_anyInteger_vehicles(fn TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'SELECT * FROM ' || fn || '($$ SELECT * FROM orders WHERE id = 11$$, $$SELECT ';
+
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM vehicles $$,
+ $$SELECT * FROM dist_matrix$$,
+ 30)';
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+/*
+testing the pick/deliver vehicles
+ */
+CREATE OR REPLACE FUNCTION test_anyNumerical_vehicles(fn TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'SELECT * FROM ' || fn || '($$ SELECT * FROM orders WHERE id = 11$$, $$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM vehicles $$,
+ $$SELECT * FROM dist_matrix$$,
+ 30)';
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+
+/*
+testing the pick/deliver matrix
+*/
+CREATE OR REPLACE FUNCTION test_anyInteger_matrix(fn TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'SELECT * FROM ' || fn || '(
+ $$ SELECT * FROM orders WHERE id = 11$$,
+ $$ SELECT * FROM vehicles $$,
+ $$ SELECT ';
+
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM dist_matrix $$,
+ 30)';
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+/*
+testing the pick/deliver vehicles
+ */
+CREATE OR REPLACE FUNCTION test_anyNumerical_matrix(fn TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'SELECT * FROM ' || fn || '(
+ $$ SELECT * FROM orders WHERE id = 11$$,
+ $$ SELECT * FROM vehicles $$,
+ $$ SELECT ';
+
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM dist_matrix $$,
+ 30)';
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+
+SELECT test_anyInteger_orders('_pgr_pickdeliver',
+ ARRAY['id', 'demand',
+ 'pick_node_id', 'pick_open', 'pick_close', 'pick_service',
+ 'deliver_node_id', 'deliver_open', 'deliver_close', 'deliver_service'],
+ 'id');
+SELECT test_anynumerical_orders('_pgr_pickdeliver',
+ ARRAY['id', 'demand',
+ 'pick_node_id', 'pick_open', 'pick_close', 'pick_service',
+ 'deliver_node_id', 'deliver_open', 'deliver_close', 'deliver_service'],
+ 'demand');
+
+SELECT test_anyInteger_orders('_pgr_pickdeliver',
+ ARRAY['id', 'demand',
+ 'pick_node_id', 'pick_open', 'pick_close', 'pick_service',
+ 'deliver_node_id', 'deliver_open', 'deliver_close', 'deliver_service'],
+ 'pick_node_id');
+SELECT test_anynumerical_orders('_pgr_pickdeliver',
+ ARRAY['id', 'demand',
+ 'pick_node_id', 'pick_open', 'pick_close', 'pick_service',
+ 'deliver_node_id', 'deliver_open', 'deliver_close', 'deliver_service'],
+ 'pick_open');
+SELECT test_anynumerical_orders('_pgr_pickdeliver',
+ ARRAY['id', 'demand',
+ 'pick_node_id', 'pick_open', 'pick_close', 'pick_service',
+ 'deliver_node_id', 'deliver_open', 'deliver_close', 'deliver_service'],
+ 'pick_close');
+SELECT test_anynumerical_orders('_pgr_pickdeliver',
+ ARRAY['id', 'demand',
+ 'pick_node_id', 'pick_open', 'pick_close', 'pick_service',
+ 'deliver_node_id', 'deliver_open', 'deliver_close', 'deliver_service'],
+ 'pick_service');
+
+SELECT test_anyInteger_orders('_pgr_pickdeliver',
+ ARRAY['id', 'demand',
+ 'pick_node_id', 'pick_open', 'pick_close', 'pick_service',
+ 'deliver_node_id', 'deliver_open', 'deliver_close', 'deliver_service'],
+ 'deliver_node_id');
+SELECT test_anynumerical_orders('_pgr_pickdeliver',
+ ARRAY['id', 'demand',
+ 'pick_node_id', 'pick_open', 'pick_close', 'pick_service',
+ 'deliver_node_id', 'deliver_open', 'deliver_close', 'deliver_service'],
+ 'deliver_open');
+SELECT test_anynumerical_orders('_pgr_pickdeliver',
+ ARRAY['id', 'demand',
+ 'pick_node_id', 'pick_open', 'pick_close', 'pick_service',
+ 'deliver_node_id', 'deliver_open', 'deliver_close', 'deliver_service'],
+ 'deliver_close');
+SELECT test_anynumerical_orders('_pgr_pickdeliver',
+ ARRAY['id', 'demand',
+ 'pick_node_id', 'pick_open', 'pick_close', 'pick_service',
+ 'deliver_node_id', 'deliver_open', 'deliver_close', 'deliver_service'],
+ 'deliver_service');
+
+/* Currently this are not used TODO add when they are used
+ 'end_x', 'end_y', 'end_open', 'end_close', 'end_service'],
+ 'speed' is optional defaults to 1
+ 'start_service' is optional defaults to 0
+*/
+/*
+without optional: number
+*/
+SELECT test_anyInteger_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'id');
+SELECT test_anyNumerical_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'capacity');
+SELECT test_anyInteger_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'start_node_id');
+SELECT test_anyNumerical_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'start_open');
+SELECT test_anyNumerical_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'start_close');
+
+
+/*
+with optional: number
+*/
+SELECT test_anyInteger_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity', 'number',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'id');
+SELECT test_anyNumerical_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity', 'number',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'capacity');
+SELECT test_anyInteger_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity', 'number',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'number');
+SELECT test_anyInteger_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity', 'number',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'start_node_id');
+SELECT test_anyNumerical_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity', 'number',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'start_open');
+SELECT test_anyNumerical_vehicles('_pgr_pickdeliver',
+ ARRAY['id', 'capacity', 'number',
+ 'start_node_id', 'start_open', 'start_close'],
+ 'start_close');
+
+
+/*
+Testing the matrix
+*/
+SELECT test_anyInteger_matrix('_pgr_pickdeliver',
+ ARRAY['start_vid', 'end_vid', 'agg_cost'],
+ 'start_vid');
+SELECT test_anyInteger_matrix('_pgr_pickdeliver',
+ ARRAY['start_vid', 'end_vid', 'agg_cost'],
+ 'end_vid');
+SELECT test_anyNumerical_matrix('_pgr_pickdeliver',
+ ARRAY['start_vid', 'end_vid', 'agg_cost'],
+ 'agg_cost');
+
+SELECT todo_end();
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/pickDeliver/test/notTestingYet/pickDeliver-types_check.sql b/src/pickDeliver/test/notTestingYet/pickDeliver-types_check.sql
new file mode 100644
index 0000000..0244a94
--- /dev/null
+++ b/src/pickDeliver/test/notTestingYet/pickDeliver-types_check.sql
@@ -0,0 +1,55 @@
+
+\i setup.sql
+
+SELECT plan(3);
+
+SELECT todo_start('Nothing is really implemented yet');
+
+SELECT has_function('_pgr_pickdeliver', ARRAY['text','text', 'text', 'integer']);
+SELECT function_returns('_pgr_pickdeliver', ARRAY['text','text', 'text', 'integer'],'setof record');
+
+
+PREPARE expected_types AS
+SELECT
+'integer'::text AS t1,
+'integer'::text AS t2,
+'bigint'::text AS t3,
+'integer'::text AS t4,
+'bigint'::text AS t5,
+'integer'::text AS t6,
+'double precision'::text AS t7,
+'double precision'::text AS t8,
+'double precision'::text AS t9,
+'double precision'::text AS t10,
+'double precision'::text AS t11,
+'double precision'::text AS t12;
+
+SELECT * INTO pickDeliverResults FROM _pgr_pickdeliver(
+ $$SELECT * FROM orders WHERE id in (11) $$,
+ $$SELECT * FROM vehicles $$,
+ $$SELECT * FROM dist_matrix $$,
+ 30);
+
+
+PREPARE real_types AS
+SELECT pg_typeof(seq)::text AS t1,
+pg_typeof(vehicle_number)::text AS t2,
+pg_typeof(vehicle_id)::text AS t3,
+pg_typeof(vehicle_seq)::text AS t4,
+pg_typeof(order_id)::text AS t5,
+pg_typeof(stop_type)::text AS t6,
+pg_typeof(cargo)::text AS t7,
+pg_typeof(travel_time)::text AS t8,
+pg_typeof(arrival_time)::text AS t9,
+pg_typeof(wait_time)::TEXT AS t10,
+pg_typeof(service_time)::TEXT AS t11,
+pg_typeof(departure_time)::TEXT AS t12
+FROM pickdeliverResults LIMIT 1;
+
+
+SELECT set_eq('expected_types', 'real_types','_pgr_pickdeliver: SHOULD RETURN expected columns names & types');
+
+SELECT todo_end();
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/pickDeliver/test/notTestingYet/pickDeliver_types_check.sql b/src/pickDeliver/test/notTestingYet/pickDeliver_types_check.sql
new file mode 100644
index 0000000..bf96129
--- /dev/null
+++ b/src/pickDeliver/test/notTestingYet/pickDeliver_types_check.sql
@@ -0,0 +1,53 @@
+
+\i setup.sql
+
+SELECT plan(3);
+
+SELECT todo_start('not ready yet');
+
+
+SELECT has_function('_pgr_pickdeliver', ARRAY['text','text', 'integer']);
+SELECT function_returns('_pgr_pickdeliver', ARRAY['text','text', 'integer'],'setof record');
+
+PREPARE expected_types AS
+SELECT
+'integer'::text AS t1,
+'integer'::text AS ta1,
+'bigint'::text AS t2,
+'integer'::text AS t3,
+'bigint'::text AS t4,
+'integer'::text AS t5,
+'double precision'::text AS t6,
+'double precision'::text AS t7,
+'double precision'::text AS t8,
+'double precision'::text AS t9,
+'double precision'::text AS t10,
+'double precision'::text AS t11;
+
+SELECT * INTO pickDeliverResults FROM _pgr_pickdeliverEuclidean(
+ $$SELECT * FROM orders ORDER BY id$$,
+ $$SELECT * FROM vehicles ORDER BY id$$,
+ 30);
+
+
+PREPARE real_types AS
+SELECT pg_typeof(seq)::text AS t1,
+pg_typeof(vehicle_number)::text AS ta1,
+pg_typeof(vehicle_id)::text AS t2,
+pg_typeof(stop)::text AS t3,
+pg_typeof(order_id)::text AS t4,
+pg_typeof(stop_type)::text AS t5,
+pg_typeof(cargo)::text AS t6,
+pg_typeof(travel_time)::text AS t7,
+pg_typeof(arrival_time)::text AS t8,
+pg_typeof(wait_time)::TEXT AS t9,
+pg_typeof(service_time)::TEXT AS t10,
+pg_typeof(departure_time)::TEXT AS t11
+FROM pickdeliverResults LIMIT 1;
+
+SELECT set_eq('expected_types', 'real_types','_pgr_pickdeliverEuclidean: SHOULD RETURN expected columns names & types');
+
+SELECT todo_end();
+
+SELECT finish();
+ROLLBACK;
diff --git a/src/pickDeliver/test/past_example.result b/src/pickDeliver/test/past_example.result
new file mode 100644
index 0000000..e6b34ab
--- /dev/null
+++ b/src/pickDeliver/test/past_example.result
@@ -0,0 +1,266 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+DROP TABLE IF EXISTS orders CASCADE;
+DROP TABLE
+DROP TABLE IF EXISTS vehicles CASCADE;
+DROP TABLE
+DROP TABLE IF EXISTS dist_matrix CASCADE;
+psql:tools/testers/pickDeliver_pgtap_data.sql:4: NOTICE: table "dist_matrix" does not exist, skipping
+DROP TABLE
+CREATE TABLE orders (
+ id BIGINT PRIMARY KEY,
+ demand FLOAT,
+ p_node_id BIGINT,
+ p_x FLOAT,
+ p_y FLOAT,
+ p_open FLOAT,
+ p_close FLOAT,
+ p_service FLOAT,
+ d_node_id BIGINT,
+ d_x FLOAT,
+ d_y FLOAT,
+ d_open FLOAT,
+ d_close FLOAT,
+ d_service FLOAT
+);
+CREATE TABLE
+CREATE TABLE vehicles (
+ id BIGSERIAL PRIMARY KEY,
+ start_node_id BIGINT,
+ start_x FLOAT,
+ start_y FLOAT,
+ start_open FLOAT,
+ start_close FLOAT,
+ "number" integer,
+ capacity FLOAT
+);
+CREATE TABLE
+INSERT INTO orders (id, demand,
+p_x, p_y , p_open, p_close, p_service,
+d_x, d_y , d_open, d_close, d_service)
+VALUES
+(3, 10, 42, 66, 65, 146, 90, 45, 65, 997, 1068, 90),
+(5, 10, 42, 65, 15, 67, 90, 40, 66, 170, 225, 90),
+(6, 20, 40, 69, 621, 702, 90, 45, 70, 825, 870, 90),
+(8, 20, 38, 68, 255, 324, 90, 35, 66, 357, 410, 90),
+(9, 10, 38, 70, 534, 605, 90, 42, 68, 727, 782, 90),
+(11, 10, 35, 69, 448, 505, 90, 45, 68, 912, 967, 90),
+(13, 30, 22, 75, 30, 92, 90, 18, 75, 99, 148, 90),
+(16, 40, 20, 85, 475, 528, 90, 22, 85, 567, 620, 90),
+(18, 20, 15, 75, 179, 254, 90, 25, 85, 652, 721, 90),
+(19, 10, 15, 80, 278, 345, 90, 20, 80, 384, 429, 90),
+(20, 10, 30, 50, 10, 73, 90, 25, 50, 65, 144, 90),
+(23, 10, 28, 55, 732, 777, 0, 28, 55, 732, 777, 90),
+(25, 40, 25, 52, 169, 224, 90, 23, 52, 261, 316, 90),
+(28, 20, 23, 55, 546, 593, 90, 28, 52, 812, 883, 90),
+(29, 10, 20, 50, 358, 405, 90, 25, 55, 622, 701, 90),
+(30, 10, 20, 55, 449, 504, 90, 30, 52, 914, 965, 90),
+(32, 30, 10, 40, 31, 100, 90, 10, 35, 200, 237, 90),
+(33, 40, 8, 40, 87, 158, 90, 2, 40, 383, 434, 90),
+(35, 10, 5, 35, 283, 344, 90, 0, 45, 567, 624, 90),
+(36, 10, 5, 45, 665, 716, 0, 5, 45, 665, 716, 90),
+(38, 30, 0, 40, 479, 522, 90, 8, 45, 751, 816, 90),
+(42, 20, 33, 32, 68, 149, 90, 35, 30, 264, 321, 90),
+(43, 10, 33, 35, 16, 80, 90, 35, 32, 166, 235, 90),
+(44, 10, 32, 30, 359, 412, 90, 30, 32, 448, 509, 90),
+(45, 10, 30, 30, 541, 600, 90, 28, 30, 632, 693, 90),
+(49, 10, 28, 35, 1001, 1066, 90, 30, 35,1054, 1127, 90),
+(50, 10, 26, 32, 815, 880, 90, 25, 35, 912, 969, 90),
+(51, 10, 25, 30, 725, 786, 0, 25, 30, 725, 786, 90),
+(53, 20, 44, 5, 286, 347, 90, 38, 5, 471, 534, 90),
+(54, 40, 42, 10, 186, 257, 90, 35, 5, 562, 629, 90),
+(56, 30, 40, 5, 385, 436, 90, 38, 15, 651, 740, 90),
+(57, 40, 40, 15, 35, 87, 90, 42, 15, 95, 158, 90),
+(62, 20, 50, 35, 262, 317, 90, 45, 30, 734, 777, 90),
+(63, 50, 50, 40, 171, 218, 90, 53, 35, 353, 412, 90),
+(64, 10, 48, 30, 632, 693, 0, 48, 30, 632, 693, 90),
+(65, 10, 48, 40, 76, 129, 90, 53, 30, 450, 505, 90),
+(66, 10, 47, 35, 826, 875, 90, 45, 35, 916, 969, 90),
+(67, 10, 47, 40, 12, 77, 90, 50, 30, 531, 610, 90),
+(71, 20, 95, 35, 293, 360, 90, 88, 30, 574, 643, 90),
+(76, 10, 90, 35, 203, 260, 90, 92, 30, 478, 551, 90),
+(78, 20, 88, 35, 109, 170, 0, 88, 35, 109, 170, 90),
+(79, 10, 87, 30, 668, 731, 90, 85, 25, 769, 820, 90),
+(81, 30, 85, 35, 47, 124, 90, 95, 30, 387, 456, 90),
+(82, 20, 75, 55, 369, 420, 90, 68, 60, 555, 612, 90),
+(84, 20, 70, 58, 458, 523, 90, 63, 58, 737, 802, 90),
+(86, 10, 66, 55, 173, 238, 90, 60, 60, 836, 889, 90),
+(87, 20, 65, 55, 85, 144, 90, 72, 55, 265, 338, 90),
+(90, 10, 60, 55, 20, 84, 90, 65, 60, 645, 708, 90),
+(92, 20, 67, 85, 368, 441, 90, 65, 85, 475, 518, 90),
+(96, 10, 60, 80, 95, 156, 90, 65, 82, 285, 336, 90),
+(97, 30, 60, 85, 561, 622, 0, 60, 85, 561, 622, 90),
+(98, 20, 58, 75, 30, 84, 90, 62, 80, 196, 239, 90),
+(100,20, 55, 85, 647, 726, 90, 55, 80, 743, 820, 90);
+INSERT 0 53
+INSERT INTO vehicles (start_x, start_y, start_open, start_close, "number", capacity)
+VALUES (40, 50, 0, 1236, 25, 200);
+INSERT 0 1
+WITH points AS (
+ SELECT DISTINCT p_x AS x, p_y AS y FROM orders
+ UNION
+ SELECT DISTINCT d_x, d_y FROM orders),
+t_points AS (SELECT row_number() over() AS id, x, y FROM points),
+first AS (SELECT orders.id AS id , t_points.id AS p_node_id from orders JOIN t_points ON (x = p_x AND y = p_y)),
+second AS (SELECT orders.id AS id , t_points.id AS d_node_id from orders JOIN t_points ON (x = d_x AND y = d_y)),
+third AS (SELECT id, p_node_id, d_node_id from first JOIN second USING (id))
+UPDATE orders SET p_node_id = third.p_node_id, d_node_id = third.d_node_id
+FROM third WHERE third.id = orders.id;
+UPDATE 53
+WITH
+the_ids AS (SELECT p_node_id AS id FROM orders UNION SELECT d_node_id FROM orders),
+the_max AS (SELECT max(id) FROM the_ids)
+UPDATE vehicles SET start_node_id = max+1 FROM the_max;
+UPDATE 1
+/*
+WITH
+A AS (
+ SELECT p_node_id AS id, p_x AS x, p_y AS y FROM orders
+ UNION
+ SELECT d_node_id, d_x, d_y FROM orders
+ UNION
+ SELECT start_node_id, start_x, start_y FROM vehicles
+)
+SELECT A.id AS start_vid, B.id AS end_vid, sqrt( (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)) AS agg_cost
+INTO dist_matrix
+FROM A, A AS B WHERE A.id != B.id;
+*/
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * from vehicles'
+);
+ seq | vehicle_seq | vehicle_id | stop_seq | stop_type | order_id | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+-------------+------------+----------+-----------+----------+-------+------------------+------------------+-----------+--------------+------------------
+ 1 | 1 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 1 | 2 | 2 | 13 | 30 | 30.8058436014987 | 30.8058436014987 | 0 | 90 | 120.805843601499
+ 3 | 1 | 1 | 3 | 3 | 13 | 0 | 4 | 124.805843601499 | 0 | 90 | 214.805843601499
+ 4 | 1 | 1 | 4 | 2 | 18 | 20 | 3 | 217.805843601499 | 0 | 90 | 307.805843601499
+ 5 | 1 | 1 | 5 | 2 | 19 | 30 | 5 | 312.805843601499 | 0 | 90 | 402.805843601499
+ 6 | 1 | 1 | 6 | 3 | 19 | 20 | 5 | 407.805843601499 | 0 | 90 | 497.805843601499
+ 7 | 1 | 1 | 7 | 2 | 16 | 60 | 5 | 502.805843601499 | 0 | 90 | 592.805843601499
+ 8 | 1 | 1 | 8 | 3 | 16 | 20 | 2 | 594.805843601499 | 0 | 90 | 684.805843601499
+ 9 | 1 | 1 | 9 | 3 | 18 | 0 | 3 | 687.805843601499 | 0 | 90 | 777.805843601499
+ 10 | 1 | 1 | 10 | 2 | 50 | 10 | 53.0094331227943 | 830.815276724293 | 0 | 90 | 920.815276724293
+ 11 | 1 | 1 | 11 | 3 | 50 | 0 | 3.16227766016838 | 923.977554384461 | 0 | 90 | 1013.97755438446
+ 12 | 1 | 1 | 12 | 2 | 49 | 10 | 3 | 1016.97755438446 | 0 | 90 | 1106.97755438446
+ 13 | 1 | 1 | 13 | 3 | 49 | 0 | 2 | 1108.97755438446 | 0 | 90 | 1198.97755438446
+ 14 | 1 | 1 | 14 | 6 | -1 | 0 | 18.0277563773199 | 1217.00531076178 | 0 | 0 | 1217.00531076178
+ 15 | 2 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 16 | 2 | 1 | 2 | 2 | 5 | 10 | 15.1327459504216 | 15.1327459504216 | 0 | 90 | 105.132745950422
+ 17 | 2 | 1 | 3 | 2 | 3 | 20 | 1 | 106.132745950422 | 0 | 90 | 196.132745950422
+ 18 | 2 | 1 | 4 | 3 | 5 | 10 | 2 | 198.132745950422 | 0 | 90 | 288.132745950422
+ 19 | 2 | 1 | 5 | 2 | 8 | 30 | 2.82842712474619 | 290.961173075168 | 0 | 90 | 380.961173075168
+ 20 | 2 | 1 | 6 | 3 | 8 | 10 | 3.60555127546399 | 384.566724350632 | 0 | 90 | 474.566724350632
+ 21 | 2 | 1 | 7 | 2 | 11 | 20 | 3 | 477.566724350632 | 0 | 90 | 567.566724350632
+ 22 | 2 | 1 | 8 | 2 | 9 | 30 | 3.16227766016838 | 570.7290020108 | 0 | 90 | 660.7290020108
+ 23 | 2 | 1 | 9 | 2 | 6 | 50 | 2.23606797749979 | 662.9650699883 | 0 | 90 | 752.9650699883
+ 24 | 2 | 1 | 10 | 3 | 9 | 40 | 2.23606797749979 | 755.2011379658 | 0 | 90 | 845.2011379658
+ 25 | 2 | 1 | 11 | 3 | 6 | 20 | 3.60555127546399 | 848.806689241264 | 0 | 90 | 938.806689241264
+ 26 | 2 | 1 | 12 | 3 | 11 | 10 | 2 | 940.806689241264 | 0 | 90 | 1030.80668924126
+ 27 | 2 | 1 | 13 | 3 | 3 | 0 | 3 | 1033.80668924126 | 0 | 90 | 1123.80668924126
+ 28 | 2 | 1 | 14 | 6 | -1 | 0 | 15.8113883008419 | 1139.61807754211 | 0 | 0 | 1139.61807754211
+ 29 | 3 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 30 | 3 | 1 | 2 | 2 | 43 | 10 | 16.5529453572468 | 16.5529453572468 | 0 | 90 | 106.552945357247
+ 31 | 3 | 1 | 3 | 2 | 42 | 30 | 3 | 109.552945357247 | 0 | 90 | 199.552945357247
+ 32 | 3 | 1 | 4 | 3 | 43 | 20 | 2 | 201.552945357247 | 0 | 90 | 291.552945357247
+ 33 | 3 | 1 | 5 | 3 | 42 | 0 | 2 | 293.552945357247 | 0 | 90 | 383.552945357247
+ 34 | 3 | 1 | 6 | 2 | 44 | 10 | 3 | 386.552945357247 | 0 | 90 | 476.552945357247
+ 35 | 3 | 1 | 7 | 3 | 44 | 0 | 2.82842712474619 | 479.381372481993 | 0 | 90 | 569.381372481993
+ 36 | 3 | 1 | 8 | 2 | 45 | 10 | 2 | 571.381372481993 | 0 | 90 | 661.381372481993
+ 37 | 3 | 1 | 9 | 3 | 45 | 0 | 2 | 663.381372481993 | 0 | 90 | 753.381372481993
+ 38 | 3 | 1 | 10 | 2 | 51 | 10 | 3 | 756.381372481993 | 0 | 0 | 756.381372481993
+ 39 | 3 | 1 | 11 | 3 | 51 | 0 | 0 | 756.381372481993 | 0 | 90 | 846.381372481993
+ 40 | 3 | 1 | 12 | 2 | 66 | 10 | 22.561028345357 | 868.94240082735 | 0 | 90 | 958.94240082735
+ 41 | 3 | 1 | 13 | 3 | 66 | 0 | 2 | 960.94240082735 | 0 | 90 | 1050.94240082735
+ 42 | 3 | 1 | 14 | 6 | -1 | 0 | 15.8113883008419 | 1066.75378912819 | 0 | 0 | 1066.75378912819
+ 43 | 4 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 44 | 4 | 1 | 2 | 2 | 20 | 10 | 10 | 10 | 0 | 90 | 100
+ 45 | 4 | 1 | 3 | 3 | 20 | 0 | 5 | 105 | 0 | 90 | 195
+ 46 | 4 | 1 | 4 | 2 | 25 | 40 | 2 | 197 | 0 | 90 | 287
+ 47 | 4 | 1 | 5 | 3 | 25 | 0 | 2 | 289 | 0 | 90 | 379
+ 48 | 4 | 1 | 6 | 2 | 29 | 10 | 3.60555127546399 | 382.605551275464 | 0 | 90 | 472.605551275464
+ 49 | 4 | 1 | 7 | 2 | 30 | 20 | 5 | 477.605551275464 | 0 | 90 | 567.605551275464
+ 50 | 4 | 1 | 8 | 2 | 28 | 40 | 3 | 570.605551275464 | 0 | 90 | 660.605551275464
+ 51 | 4 | 1 | 9 | 3 | 29 | 30 | 2 | 662.605551275464 | 0 | 90 | 752.605551275464
+ 52 | 4 | 1 | 10 | 2 | 23 | 40 | 3 | 755.605551275464 | 0 | 0 | 755.605551275464
+ 53 | 4 | 1 | 11 | 3 | 23 | 30 | 0 | 755.605551275464 | 0 | 90 | 845.605551275464
+ 54 | 4 | 1 | 12 | 3 | 28 | 10 | 3 | 848.605551275464 | 0 | 90 | 938.605551275464
+ 55 | 4 | 1 | 13 | 3 | 30 | 0 | 2 | 940.605551275464 | 0 | 90 | 1030.60555127546
+ 56 | 4 | 1 | 14 | 6 | -1 | 0 | 10.1980390271856 | 1040.80359030265 | 0 | 0 | 1040.80359030265
+ 57 | 5 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 58 | 5 | 1 | 2 | 2 | 90 | 10 | 20.6155281280883 | 20.6155281280883 | 0 | 90 | 110.615528128088
+ 59 | 5 | 1 | 3 | 2 | 87 | 30 | 5 | 115.615528128088 | 0 | 90 | 205.615528128088
+ 60 | 5 | 1 | 4 | 2 | 86 | 40 | 1 | 206.615528128088 | 0 | 90 | 296.615528128088
+ 61 | 5 | 1 | 5 | 3 | 87 | 20 | 6 | 302.615528128088 | 0 | 90 | 392.615528128088
+ 62 | 5 | 1 | 6 | 2 | 82 | 40 | 3 | 395.615528128088 | 0 | 90 | 485.615528128088
+ 63 | 5 | 1 | 7 | 2 | 84 | 60 | 5.8309518948453 | 491.446480022934 | 0 | 90 | 581.446480022934
+ 64 | 5 | 1 | 8 | 3 | 82 | 40 | 2.82842712474619 | 584.27490714768 | 0 | 90 | 674.27490714768
+ 65 | 5 | 1 | 9 | 3 | 90 | 30 | 3 | 677.27490714768 | 0 | 90 | 767.27490714768
+ 66 | 5 | 1 | 10 | 3 | 84 | 10 | 2.82842712474619 | 770.103334272426 | 0 | 90 | 860.103334272426
+ 67 | 5 | 1 | 11 | 3 | 86 | 0 | 3.60555127546399 | 863.70888554789 | 0 | 90 | 953.70888554789
+ 68 | 5 | 1 | 12 | 6 | -1 | 0 | 22.3606797749979 | 976.069565322888 | 0 | 0 | 976.069565322888
+ 69 | 6 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 70 | 6 | 1 | 2 | 2 | 81 | 30 | 47.4341649025257 | 47.4341649025257 | 0 | 90 | 137.434164902526
+ 71 | 6 | 1 | 3 | 2 | 78 | 50 | 3 | 140.434164902526 | 0 | 0 | 140.434164902526
+ 72 | 6 | 1 | 4 | 3 | 78 | 30 | 0 | 140.434164902526 | 0 | 90 | 230.434164902526
+ 73 | 6 | 1 | 5 | 2 | 76 | 40 | 2 | 232.434164902526 | 0 | 90 | 322.434164902526
+ 74 | 6 | 1 | 6 | 2 | 71 | 60 | 5 | 327.434164902526 | 0 | 90 | 417.434164902526
+ 75 | 6 | 1 | 7 | 3 | 81 | 30 | 5 | 422.434164902526 | 0 | 90 | 512.434164902526
+ 76 | 6 | 1 | 8 | 3 | 76 | 20 | 3 | 515.434164902526 | 0 | 90 | 605.434164902526
+ 77 | 6 | 1 | 9 | 3 | 71 | 0 | 4 | 609.434164902526 | 0 | 90 | 699.434164902526
+ 78 | 6 | 1 | 10 | 2 | 79 | 10 | 1 | 700.434164902526 | 0 | 90 | 790.434164902526
+ 79 | 6 | 1 | 11 | 3 | 79 | 0 | 5.3851648071345 | 795.81932970966 | 0 | 90 | 885.81932970966
+ 80 | 6 | 1 | 12 | 6 | -1 | 0 | 51.478150704935 | 937.297480414595 | 0 | 0 | 937.297480414595
+ 81 | 7 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 82 | 7 | 1 | 2 | 2 | 32 | 30 | 31.6227766016838 | 31.6227766016838 | 0 | 90 | 121.622776601684
+ 83 | 7 | 1 | 3 | 2 | 33 | 70 | 2 | 123.622776601684 | 0 | 90 | 213.622776601684
+ 84 | 7 | 1 | 4 | 3 | 32 | 40 | 5.3851648071345 | 219.007941408818 | 0 | 90 | 309.007941408818
+ 85 | 7 | 1 | 5 | 2 | 35 | 50 | 5 | 314.007941408818 | 0 | 90 | 404.007941408818
+ 86 | 7 | 1 | 6 | 3 | 33 | 10 | 5.8309518948453 | 409.838893303664 | 0 | 90 | 499.838893303664
+ 87 | 7 | 1 | 7 | 2 | 38 | 40 | 2 | 501.838893303664 | 0 | 90 | 591.838893303664
+ 88 | 7 | 1 | 8 | 3 | 35 | 30 | 5 | 596.838893303664 | 0 | 90 | 686.838893303664
+ 89 | 7 | 1 | 9 | 2 | 36 | 40 | 5 | 691.838893303664 | 0 | 0 | 691.838893303664
+ 90 | 7 | 1 | 10 | 3 | 36 | 30 | 0 | 691.838893303664 | 0 | 90 | 781.838893303664
+ 91 | 7 | 1 | 11 | 3 | 38 | 0 | 3 | 784.838893303664 | 0 | 90 | 874.838893303664
+ 92 | 7 | 1 | 12 | 6 | -1 | 0 | 32.3882694814033 | 907.227162785067 | 0 | 0 | 907.227162785067
+ 93 | 8 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 94 | 8 | 1 | 2 | 2 | 98 | 20 | 30.8058436014987 | 30.8058436014987 | 0 | 90 | 120.805843601499
+ 95 | 8 | 1 | 3 | 2 | 96 | 30 | 5.3851648071345 | 126.191008408633 | 0 | 90 | 216.191008408633
+ 96 | 8 | 1 | 4 | 3 | 98 | 10 | 2 | 218.191008408633 | 0 | 90 | 308.191008408633
+ 97 | 8 | 1 | 5 | 3 | 96 | 0 | 3.60555127546399 | 311.796559684097 | 0 | 90 | 401.796559684097
+ 98 | 8 | 1 | 6 | 2 | 92 | 20 | 3.60555127546399 | 405.402110959561 | 0 | 90 | 495.402110959561
+ 99 | 8 | 1 | 7 | 3 | 92 | 0 | 2 | 497.402110959561 | 0 | 90 | 587.402110959561
+ 100 | 8 | 1 | 8 | 2 | 97 | 30 | 5 | 592.402110959561 | 0 | 0 | 592.402110959561
+ 101 | 8 | 1 | 9 | 3 | 97 | 0 | 0 | 592.402110959561 | 0 | 90 | 682.402110959561
+ 102 | 8 | 1 | 10 | 2 | 100 | 20 | 5 | 687.402110959561 | 0 | 90 | 777.402110959561
+ 103 | 8 | 1 | 11 | 3 | 100 | 0 | 5 | 782.402110959561 | 0 | 90 | 872.402110959561
+ 104 | 8 | 1 | 12 | 6 | -1 | 0 | 33.5410196624968 | 905.943130622058 | 0 | 0 | 905.943130622058
+ 105 | 9 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 106 | 9 | 1 | 2 | 2 | 67 | 10 | 12.2065556157337 | 12.2065556157337 | 0 | 90 | 102.206555615734
+ 107 | 9 | 1 | 3 | 2 | 65 | 20 | 1 | 103.206555615734 | 0 | 90 | 193.206555615734
+ 108 | 9 | 1 | 4 | 2 | 63 | 70 | 2 | 195.206555615734 | 0 | 90 | 285.206555615734
+ 109 | 9 | 1 | 5 | 2 | 62 | 90 | 5 | 290.206555615734 | 0 | 90 | 380.206555615734
+ 110 | 9 | 1 | 6 | 3 | 63 | 40 | 3 | 383.206555615734 | 0 | 90 | 473.206555615734
+ 111 | 9 | 1 | 7 | 3 | 65 | 30 | 5 | 478.206555615734 | 0 | 90 | 568.206555615734
+ 112 | 9 | 1 | 8 | 3 | 67 | 20 | 3 | 571.206555615734 | 0 | 90 | 661.206555615734
+ 113 | 9 | 1 | 9 | 2 | 64 | 30 | 2 | 663.206555615734 | 0 | 0 | 663.206555615734
+ 114 | 9 | 1 | 10 | 3 | 64 | 20 | 0 | 663.206555615734 | 0 | 90 | 753.206555615734
+ 115 | 9 | 1 | 11 | 3 | 62 | 0 | 3 | 756.206555615734 | 0 | 90 | 846.206555615734
+ 116 | 9 | 1 | 12 | 6 | -1 | 0 | 20.6155281280883 | 866.822083743822 | 0 | 0 | 866.822083743822
+ 117 | 10 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 118 | 10 | 1 | 2 | 2 | 57 | 40 | 35 | 35 | 0 | 90 | 125
+ 119 | 10 | 1 | 3 | 3 | 57 | 0 | 2 | 127 | 0 | 90 | 217
+ 120 | 10 | 1 | 4 | 2 | 54 | 40 | 5 | 222 | 0 | 90 | 312
+ 121 | 10 | 1 | 5 | 2 | 53 | 60 | 5.3851648071345 | 317.385164807135 | 0 | 90 | 407.385164807135
+ 122 | 10 | 1 | 6 | 2 | 56 | 90 | 4 | 411.385164807135 | 0 | 90 | 501.385164807135
+ 123 | 10 | 1 | 7 | 3 | 53 | 70 | 2 | 503.385164807135 | 0 | 90 | 593.385164807135
+ 124 | 10 | 1 | 8 | 3 | 54 | 30 | 3 | 596.385164807135 | 0 | 90 | 686.385164807135
+ 125 | 10 | 1 | 9 | 3 | 56 | 0 | 10.4403065089106 | 696.825471316045 | 0 | 90 | 786.825471316045
+ 126 | 10 | 1 | 10 | 6 | -1 | 0 | 35.0570962859162 | 821.882567601961 | 0 | 0 | 821.882567601961
+ 127 | -2 | 0 | 0 | -1 | -1 | -1 | 879.42275822512 | -1 | 0 | 9000 | 9879.42275822512
+(127 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/pickDeliver/test/past_example.test.sql b/src/pickDeliver/test/past_example.test.sql
new file mode 100644
index 0000000..ea9c1e1
--- /dev/null
+++ b/src/pickDeliver/test/past_example.test.sql
@@ -0,0 +1,9 @@
+
+
+\i tools/testers/pickDeliver_pgtap_data.sql
+
+
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * from vehicles'
+);
diff --git a/src/pickDeliver/test/pgtap/pickDeliver_types_check.sql b/src/pickDeliver/test/pgtap/pickDeliver_types_check.sql
deleted file mode 100644
index aa11961..0000000
--- a/src/pickDeliver/test/pgtap/pickDeliver_types_check.sql
+++ /dev/null
@@ -1,39 +0,0 @@
-
-\i setup.sql
-
-SELECT plan(3);
-
-SELECT has_function('_pgr_pickdeliver', ARRAY['text','integer','double precision','double precision', 'integer']);
-SELECT function_returns('_pgr_pickdeliver', ARRAY['text','integer','double precision','double precision', 'integer'],'setof record');
-
-PREPARE expected_types AS
-SELECT
-'integer'::text AS t1,
-'integer'::text AS t2,
-'integer'::text AS t3,
-'bigint'::text AS t4,
-'double precision'::text AS t5,
-'double precision'::text AS t6,
-'double precision'::text AS t7,
-'double precision'::text AS t8,
-'double precision'::text AS t9;
-
-SELECT * INTO pickDeliverResults FROM _pgr_pickdeliver('SELECT * from customer order by id', 25, 200, 1, 30);
-
-
-PREPARE real_types AS
-SELECT pg_typeof(seq)::text AS t1,
-pg_typeof(vehicle_id)::text AS t2,
-pg_typeof(vehicle_seq)::text AS t3,
-pg_typeof(stop_id)::text AS t4,
-pg_typeof(travel_time)::text AS t5,
-pg_typeof(arrival_time)::text AS t6,
-pg_typeof(wait_time)::TEXT AS t7,
-pg_typeof(service_time)::TEXT AS t8,
-pg_typeof(departure_time)::TEXT AS t9
-FROM pickdeliverResults LIMIT 1;
-
-SELECT set_eq('expected_types', 'real_types','_pgr_pickdeliver: SHOULD RETURN expected columns names & types');
-
-SELECT finish();
-ROLLBACK;
diff --git a/src/pickDeliver/test/pgtap/wrong_data.sql b/src/pickDeliver/test/pgtap/wrong_data.sql
deleted file mode 100644
index e0f367f..0000000
--- a/src/pickDeliver/test/pgtap/wrong_data.sql
+++ /dev/null
@@ -1,130 +0,0 @@
-
-\i setup.sql
-
-SELECT plan(11);
-
-PREPARE q1 AS
-SELECT * FROM _pgr_pickDeliver(
- 'SELECT *
- FROM customer ORDER BY id'::text, 25, 200, 1, 30);
-
-
-SELECT lives_ok('q1', 'Original query should not fail');
-
-/*
- id | x | y | demand | etime | ltime | stime | pindex | dindex
-----+----+----+--------+-------+-------+-------+--------+--------
- 0 | 40 | 50 | 0 | 0 | 1236 | 0 | 0 | 0
-*/
-PREPARE q2 AS
-SELECT * FROM _pgr_pickDeliver(
- 'SELECT *
- FROM customer WHERE id != 0 ORDER BY id'::text, 25, 200, 30);
-
-SELECT throws_ok('q2',
- 'XX000',
- 'Depot node not found',
- 'Should fail: depot is not included in data');
-
-/*
- 11 | 35 | 69 | 10 | 448 | 505 | 90 | 0 | 1
-*/
-PREPARE q3 AS
-SELECT * FROM _pgr_pickDeliver(
- 'SELECT *
- FROM customer WHERE id != 11 ORDER BY id'::text, 25, 200, 30);
-
-SELECT throws_ok('q3',
- 'XX000',
- 'A pickup was not found',
- 'Should fail: 11 is a Pickup and is missing');
-
-/*
- 1 | 45 | 68 | -10 | 912 | 967 | 90 | 11 | 0
-*/
-PREPARE q4 AS
-SELECT * FROM _pgr_pickDeliver(
- 'SELECT *
- FROM customer WHERE id != 1 ORDER BY id'::text, 25, 200, 30);
-
-SELECT throws_ok('q4',
- 'XX000',
- 'For Pickup 11 the corresponding Delivery was not found',
- 'Should fail: id 1 is a delivery and is missing');
-
-UPDATE customer SET closetime = 500 WHERE id =0;
-
-PREPARE q5 AS
-SELECT * FROM _pgr_pickDeliver(
- 'SELECT *
- FROM customer WHERE id in (0,1,11) ORDER BY id'::text, 25, 200, 30);
-
-SELECT throws_ok('q5',
- 'XX000',
- 'The (pickup, delivery) = (11, 1) is not feasible',
- 'Should fail: Closing time of depot is too small and (pick,deliver) pair generates TWV');
-
---------------------------------------
--- testing wrong data on DEPOT
---------------------------------------
-UPDATE customer SET opentime = 3000, closetime = 1236 WHERE id =0;
-
-SELECT throws_ok('q5',
- 'XX000',
- 'Illegal values found on the starting site',
- 'Should fail: Opens(DEPOT) > closes(DEPOT)');
-
-UPDATE customer SET opentime = 0, demand = 20 WHERE id =0;
-
-SELECT throws_ok('q5',
- 'XX000',
- 'Illegal values found on the starting site',
- 'Should fail: Demand(DEPOT) != 0');
-
-UPDATE customer SET demand = 0 WHERE id =0;
-
---------------------------------------
--- testing wrong data on pickup
---------------------------------------
-UPDATE customer SET opentime = 600 WHERE id =11;
-
-SELECT throws_ok('q5',
- 'XX000',
- 'Illegal values found on Pickup 11',
- 'Should fail: Opens(PICKUP) > closes(PICKUP)');
-
-UPDATE customer SET opentime = 448, demand= -20 WHERE id =11;
-
-SELECT throws_ok('q5',
- 'XX000',
- 'Illegal values found on Pickup 11',
- 'Should fail: demand(PICKUP) < 0');
-
-UPDATE customer SET demand= 10 WHERE id =11;
-
---------------------------------------
--- testing wrong data on delivery
---------------------------------------
-UPDATE customer SET opentime = 1000 WHERE id =1;
-
-SELECT throws_ok('q5',
- 'XX000',
- 'Illegal values found on Delivery 1',
- 'Should fail: Opens(DELIVERY) > closes(DELIVERY)');
-
-UPDATE customer SET opentime = 912, demand= 20 WHERE id =1;
-
-SELECT throws_ok('q5',
- 'XX000',
- 'Illegal values found on Delivery 1',
- 'Should fail: demand(DELIVERY) > 0');
-
-UPDATE customer SET demand = -10 WHERE id =11;
-
-
-
-
-
-
-SELECT finish();
-ROLLBACK;
diff --git a/src/pickDeliver/test/pickDeliver.data b/src/pickDeliver/test/pickDeliver.data
deleted file mode 100644
index ba2018e..0000000
--- a/src/pickDeliver/test/pickDeliver.data
+++ /dev/null
@@ -1,120 +0,0 @@
-DROP TABLE IF EXISTS customer CASCADE;
-CREATE TABLE customer (
- id INTEGER NOT NULL PRIMARY KEY,
- x INTEGER,
- y INTEGER,
- demand INTEGER,
- openTime INTEGER,
- closeTime INTEGER,
- serviceTime INTEGER,
- pindex INTEGER,
- dindex INTEGER
- );
-copy customer (id, x, y, demand, openTime, closeTime, serviceTime, pindex, dindex) from stdin;
-0 40 50 0 0 1236 0 0 0
-1 45 68 -10 912 967 90 11 0
-2 45 70 -20 825 870 90 6 0
-3 42 66 10 65 146 90 0 75
-4 42 68 -10 727 782 90 9 0
-5 42 65 10 15 67 90 0 7
-6 40 69 20 621 702 90 0 2
-7 40 66 -10 170 225 90 5 0
-8 38 68 20 255 324 90 0 10
-9 38 70 10 534 605 90 0 4
-10 35 66 -20 357 410 90 8 0
-11 35 69 10 448 505 90 0 1
-12 25 85 -20 652 721 90 18 0
-13 22 75 30 30 92 90 0 17
-14 22 85 -40 567 620 90 16 0
-15 20 80 -10 384 429 90 19 0
-16 20 85 40 475 528 90 0 14
-17 18 75 -30 99 148 90 13 0
-18 15 75 20 179 254 90 0 12
-19 15 80 10 278 345 90 0 15
-20 30 50 10 10 73 90 0 24
-21 30 52 -10 914 965 90 30 0
-22 28 52 -20 812 883 90 28 0
-23 28 55 10 732 777 0 0 103
-24 25 50 -10 65 144 90 20 0
-25 25 52 40 169 224 90 0 27
-26 25 55 -10 622 701 90 29 0
-27 23 52 -40 261 316 90 25 0
-28 23 55 20 546 593 90 0 22
-29 20 50 10 358 405 90 0 26
-30 20 55 10 449 504 90 0 21
-31 10 35 -30 200 237 90 32 0
-32 10 40 30 31 100 90 0 31
-33 8 40 40 87 158 90 0 37
-34 8 45 -30 751 816 90 38 0
-35 5 35 10 283 344 90 0 39
-36 5 45 10 665 716 0 0 105
-37 2 40 -40 383 434 90 33 0
-38 0 40 30 479 522 90 0 34
-39 0 45 -10 567 624 90 35 0
-40 35 30 -20 264 321 90 42 0
-41 35 32 -10 166 235 90 43 0
-42 33 32 20 68 149 90 0 40
-43 33 35 10 16 80 90 0 41
-44 32 30 10 359 412 90 0 46
-45 30 30 10 541 600 90 0 48
-46 30 32 -10 448 509 90 44 0
-47 30 35 -10 1054 1127 90 49 0
-48 28 30 -10 632 693 90 45 0
-49 28 35 10 1001 1066 90 0 47
-50 26 32 10 815 880 90 0 52
-51 25 30 10 725 786 0 0 101
-52 25 35 -10 912 969 90 50 0
-53 44 5 20 286 347 90 0 58
-54 42 10 40 186 257 90 0 60
-55 42 15 -40 95 158 90 57 0
-56 40 5 30 385 436 90 0 59
-57 40 15 40 35 87 90 0 55
-58 38 5 -20 471 534 90 53 0
-59 38 15 -30 651 740 90 56 0
-60 35 5 -40 562 629 90 54 0
-61 50 30 -10 531 610 90 67 0
-62 50 35 20 262 317 90 0 68
-63 50 40 50 171 218 90 0 74
-64 48 30 10 632 693 0 0 102
-65 48 40 10 76 129 90 0 72
-66 47 35 10 826 875 90 0 69
-67 47 40 10 12 77 90 0 61
-68 45 30 -20 734 777 90 62 0
-69 45 35 -10 916 969 90 66 0
-70 95 30 -30 387 456 90 81 0
-71 95 35 20 293 360 90 0 77
-72 53 30 -10 450 505 90 65 0
-73 92 30 -10 478 551 90 76 0
-74 53 35 -50 353 412 90 63 0
-75 45 65 -10 997 1068 90 3 0
-76 90 35 10 203 260 90 0 73
-77 88 30 -20 574 643 90 71 0
-78 88 35 20 109 170 0 0 104
-79 87 30 10 668 731 90 0 80
-80 85 25 -10 769 820 90 79 0
-81 85 35 30 47 124 90 0 70
-82 75 55 20 369 420 90 0 85
-83 72 55 -20 265 338 90 87 0
-84 70 58 20 458 523 90 0 89
-85 68 60 -20 555 612 90 82 0
-86 66 55 10 173 238 90 0 91
-87 65 55 20 85 144 90 0 83
-88 65 60 -10 645 708 90 90 0
-89 63 58 -20 737 802 90 84 0
-90 60 55 10 20 84 90 0 88
-91 60 60 -10 836 889 90 86 0
-92 67 85 20 368 441 90 0 93
-93 65 85 -20 475 518 90 92 0
-94 65 82 -10 285 336 90 96 0
-95 62 80 -20 196 239 90 98 0
-96 60 80 10 95 156 90 0 94
-97 60 85 30 561 622 0 0 106
-98 58 75 20 30 84 90 0 95
-99 55 80 -20 743 820 90 100 0
-100 55 85 20 647 726 90 0 99
-101 25 30 -10 725 786 90 51 0
-102 48 30 -10 632 693 90 64 0
-103 28 55 -10 732 777 90 23 0
-104 88 35 -20 109 170 90 78 0
-105 5 45 -10 665 716 90 36 0
-106 60 85 -30 561 622 90 97 0
diff --git a/src/pickDeliver/test/pickDeliver.result b/src/pickDeliver/test/pickDeliver.result
new file mode 100644
index 0000000..66c36af
--- /dev/null
+++ b/src/pickDeliver/test/pickDeliver.result
@@ -0,0 +1,257 @@
+--q1
+1|1|1|-1|0|0|0|0|0
+2|1|2|5|15.1327459504216|15.1327459504216|0|90|105.132745950422
+3|1|3|3|1|106.132745950422|0|90|196.132745950422
+4|1|4|7|2|198.132745950422|0|90|288.132745950422
+5|1|5|8|2.82842712474619|290.961173075168|0|90|380.961173075168
+6|1|6|10|3.60555127546399|384.566724350632|0|90|474.566724350632
+7|1|7|11|3|477.566724350632|0|90|567.566724350632
+8|1|8|9|3.16227766016838|570.7290020108|0|90|660.7290020108
+9|1|9|6|2.23606797749979|662.9650699883|0|90|752.9650699883
+10|1|10|4|2.23606797749979|755.2011379658|0|90|845.2011379658
+11|1|11|2|3.60555127546399|848.806689241264|0|90|938.806689241264
+12|1|12|1|2|940.806689241264|0|90|1030.80668924126
+13|1|13|75|3|1033.80668924126|0|90|1123.80668924126
+14|1|14|-1|15.8113883008419|1139.61807754211|0|0|1139.61807754211
+15|2|1|-1|0|0|0|0|0
+16|2|2|13|30.8058436014987|30.8058436014987|0|90|120.805843601499
+17|2|3|17|4|124.805843601499|0|90|214.805843601499
+18|2|4|18|3|217.805843601499|0|90|307.805843601499
+19|2|5|19|5|312.805843601499|0|90|402.805843601499
+20|2|6|15|5|407.805843601499|0|90|497.805843601499
+21|2|7|16|5|502.805843601499|0|90|592.805843601499
+22|2|8|14|2|594.805843601499|0|90|684.805843601499
+23|2|9|12|3|687.805843601499|0|90|777.805843601499
+24|2|10|50|53.0094331227943|830.815276724293|0|90|920.815276724293
+25|2|11|52|3.16227766016838|923.977554384461|0|90|1013.97755438446
+26|2|12|49|3|1016.97755438446|0|90|1106.97755438446
+27|2|13|47|2|1108.97755438446|0|90|1198.97755438446
+28|2|14|-1|18.0277563773199|1217.00531076178|0|0|1217.00531076178
+29|3|1|-1|0|0|0|0|0
+30|3|2|20|10|10|0|90|100
+31|3|3|24|5|105|0|90|195
+32|3|4|25|2|197|0|90|287
+33|3|5|27|2|289|0|90|379
+34|3|6|29|3.60555127546399|382.605551275464|0|90|472.605551275464
+35|3|7|30|5|477.605551275464|0|90|567.605551275464
+36|3|8|28|3|570.605551275464|0|90|660.605551275464
+37|3|9|26|2|662.605551275464|0|90|752.605551275464
+38|3|10|23|3|755.605551275464|0|0|755.605551275464
+39|3|11|103|0|755.605551275464|0|90|845.605551275464
+40|3|12|22|3|848.605551275464|0|90|938.605551275464
+41|3|13|21|2|940.605551275464|0|90|1030.60555127546
+42|3|14|-1|10.1980390271856|1040.80359030265|0|0|1040.80359030265
+43|4|1|-1|0|0|0|0|0
+44|4|2|32|31.6227766016838|31.6227766016838|0|90|121.622776601684
+45|4|3|33|2|123.622776601684|0|90|213.622776601684
+46|4|4|31|5.3851648071345|219.007941408818|0|90|309.007941408818
+47|4|5|35|5|314.007941408818|0|90|404.007941408818
+48|4|6|37|5.8309518948453|409.838893303664|0|90|499.838893303664
+49|4|7|38|2|501.838893303664|0|90|591.838893303664
+50|4|8|39|5|596.838893303664|0|90|686.838893303664
+51|4|9|36|5|691.838893303664|0|0|691.838893303664
+52|4|10|105|0|691.838893303664|0|90|781.838893303664
+53|4|11|34|3|784.838893303664|0|90|874.838893303664
+54|4|12|-1|32.3882694814033|907.227162785067|0|0|907.227162785067
+55|5|1|-1|0|0|0|0|0
+56|5|2|43|16.5529453572468|16.5529453572468|0|90|106.552945357247
+57|5|3|42|3|109.552945357247|0|90|199.552945357247
+58|5|4|41|2|201.552945357247|0|90|291.552945357247
+59|5|5|40|2|293.552945357247|0|90|383.552945357247
+60|5|6|44|3|386.552945357247|0|90|476.552945357247
+61|5|7|46|2.82842712474619|479.381372481993|0|90|569.381372481993
+62|5|8|45|2|571.381372481993|0|90|661.381372481993
+63|5|9|48|2|663.381372481993|0|90|753.381372481993
+64|5|10|51|3|756.381372481993|0|0|756.381372481993
+65|5|11|101|0|756.381372481993|0|90|846.381372481993
+66|5|12|66|22.561028345357|868.94240082735|0|90|958.94240082735
+67|5|13|69|2|960.94240082735|0|90|1050.94240082735
+68|5|14|-1|15.8113883008419|1066.75378912819|0|0|1066.75378912819
+69|6|1|-1|0|0|0|0|0
+70|6|2|57|35|35|0|90|125
+71|6|3|55|2|127|0|90|217
+72|6|4|54|5|222|0|90|312
+73|6|5|53|5.3851648071345|317.385164807135|0|90|407.385164807135
+74|6|6|56|4|411.385164807135|0|90|501.385164807135
+75|6|7|58|2|503.385164807135|0|90|593.385164807135
+76|6|8|60|3|596.385164807135|0|90|686.385164807135
+77|6|9|59|10.4403065089106|696.825471316045|0|90|786.825471316045
+78|6|10|-1|35.0570962859162|821.882567601961|0|0|821.882567601961
+79|7|1|-1|0|0|0|0|0
+80|7|2|67|12.2065556157337|12.2065556157337|0|90|102.206555615734
+81|7|3|65|1|103.206555615734|0|90|193.206555615734
+82|7|4|63|2|195.206555615734|0|90|285.206555615734
+83|7|5|62|5|290.206555615734|0|90|380.206555615734
+84|7|6|74|3|383.206555615734|0|90|473.206555615734
+85|7|7|72|5|478.206555615734|0|90|568.206555615734
+86|7|8|61|3|571.206555615734|0|90|661.206555615734
+87|7|9|64|2|663.206555615734|0|0|663.206555615734
+88|7|10|102|0|663.206555615734|0|90|753.206555615734
+89|7|11|68|3|756.206555615734|0|90|846.206555615734
+90|7|12|-1|20.6155281280883|866.822083743822|0|0|866.822083743822
+91|8|1|-1|0|0|0|0|0
+92|8|2|81|47.4341649025257|47.4341649025257|0|90|137.434164902526
+93|8|3|78|3|140.434164902526|0|0|140.434164902526
+94|8|4|104|0|140.434164902526|0|90|230.434164902526
+95|8|5|76|2|232.434164902526|0|90|322.434164902526
+96|8|6|71|5|327.434164902526|0|90|417.434164902526
+97|8|7|70|5|422.434164902526|0|90|512.434164902526
+98|8|8|73|3|515.434164902526|0|90|605.434164902526
+99|8|9|77|4|609.434164902526|0|90|699.434164902526
+100|8|10|79|1|700.434164902526|0|90|790.434164902526
+101|8|11|80|5.3851648071345|795.81932970966|0|90|885.81932970966
+102|8|12|-1|51.478150704935|937.297480414595|0|0|937.297480414595
+103|9|1|-1|0|0|0|0|0
+104|9|2|90|20.6155281280883|20.6155281280883|0|90|110.615528128088
+105|9|3|87|5|115.615528128088|0|90|205.615528128088
+106|9|4|86|1|206.615528128088|0|90|296.615528128088
+107|9|5|83|6|302.615528128088|0|90|392.615528128088
+108|9|6|82|3|395.615528128088|0|90|485.615528128088
+109|9|7|84|5.8309518948453|491.446480022934|0|90|581.446480022934
+110|9|8|85|2.82842712474619|584.27490714768|0|90|674.27490714768
+111|9|9|88|3|677.27490714768|0|90|767.27490714768
+112|9|10|89|2.82842712474619|770.103334272426|0|90|860.103334272426
+113|9|11|91|3.60555127546399|863.70888554789|0|90|953.70888554789
+114|9|12|-1|22.3606797749979|976.069565322888|0|0|976.069565322888
+115|10|1|-1|0|0|0|0|0
+116|10|2|98|30.8058436014987|30.8058436014987|0|90|120.805843601499
+117|10|3|96|5.3851648071345|126.191008408633|0|90|216.191008408633
+118|10|4|95|2|218.191008408633|0|90|308.191008408633
+119|10|5|94|3.60555127546399|311.796559684097|0|90|401.796559684097
+120|10|6|92|3.60555127546399|405.402110959561|0|90|495.402110959561
+121|10|7|93|2|497.402110959561|0|90|587.402110959561
+122|10|8|97|5|592.402110959561|0|0|592.402110959561
+123|10|9|106|0|592.402110959561|0|90|682.402110959561
+124|10|10|100|5|687.402110959561|0|90|777.402110959561
+125|10|11|99|5|782.402110959561|0|90|872.402110959561
+126|10|12|-1|33.5410196624968|905.943130622058|0|0|905.943130622058
+127|-2|0|-1|879.42275822512|-1|0|9000|9879.42275822512
+--q2
+1|1|1|1|-1|1|0|0|0|0|0|0
+2|1|1|2|5|2|10|15.1327459504216|15.1327459504216|0|90|105.132745950422
+3|1|1|3|3|2|20|1|106.132745950422|0|90|196.132745950422
+4|1|1|4|5|3|10|2|198.132745950422|0|90|288.132745950422
+5|1|1|5|8|2|30|2.82842712474619|290.961173075168|0|90|380.961173075168
+6|1|1|6|8|3|10|3.60555127546399|384.566724350632|0|90|474.566724350632
+7|1|1|7|11|2|20|3|477.566724350632|0|90|567.566724350632
+8|1|1|8|9|2|30|3.16227766016838|570.7290020108|0|90|660.7290020108
+9|1|1|9|6|2|50|2.23606797749979|662.9650699883|0|90|752.9650699883
+10|1|1|10|9|3|40|2.23606797749979|755.2011379658|0|90|845.2011379658
+11|1|1|11|6|3|20|3.60555127546399|848.806689241264|0|90|938.806689241264
+12|1|1|12|11|3|10|2|940.806689241264|0|90|1030.80668924126
+13|1|1|13|3|3|0|3|1033.80668924126|0|90|1123.80668924126
+14|1|1|14|-1|6|0|15.8113883008419|1139.61807754211|0|0|1139.61807754211
+15|2|1|1|-1|1|0|0|0|0|0|0
+16|2|1|2|13|2|30|30.8058436014987|30.8058436014987|0|90|120.805843601499
+17|2|1|3|13|3|0|4|124.805843601499|0|90|214.805843601499
+18|2|1|4|18|2|20|3|217.805843601499|0|90|307.805843601499
+19|2|1|5|19|2|30|5|312.805843601499|0|90|402.805843601499
+20|2|1|6|19|3|20|5|407.805843601499|0|90|497.805843601499
+21|2|1|7|16|2|60|5|502.805843601499|0|90|592.805843601499
+22|2|1|8|16|3|20|2|594.805843601499|0|90|684.805843601499
+23|2|1|9|18|3|0|3|687.805843601499|0|90|777.805843601499
+24|2|1|10|50|2|10|53.0094331227943|830.815276724293|0|90|920.815276724293
+25|2|1|11|50|3|0|3.16227766016838|923.977554384461|0|90|1013.97755438446
+26|2|1|12|49|2|10|3|1016.97755438446|0|90|1106.97755438446
+27|2|1|13|49|3|0|2|1108.97755438446|0|90|1198.97755438446
+28|2|1|14|-1|6|0|18.0277563773199|1217.00531076178|0|0|1217.00531076178
+29|3|1|1|-1|1|0|0|0|0|0|0
+30|3|1|2|20|2|10|10|10|0|90|100
+31|3|1|3|20|3|0|5|105|0|90|195
+32|3|1|4|25|2|40|2|197|0|90|287
+33|3|1|5|25|3|0|2|289|0|90|379
+34|3|1|6|29|2|10|3.60555127546399|382.605551275464|0|90|472.605551275464
+35|3|1|7|30|2|20|5|477.605551275464|0|90|567.605551275464
+36|3|1|8|28|2|40|3|570.605551275464|0|90|660.605551275464
+37|3|1|9|29|3|30|2|662.605551275464|0|90|752.605551275464
+38|3|1|10|23|2|40|3|755.605551275464|0|0|755.605551275464
+39|3|1|11|23|3|30|0|755.605551275464|0|90|845.605551275464
+40|3|1|12|28|3|10|3|848.605551275464|0|90|938.605551275464
+41|3|1|13|30|3|0|2|940.605551275464|0|90|1030.60555127546
+42|3|1|14|-1|6|0|10.1980390271856|1040.80359030265|0|0|1040.80359030265
+43|4|1|1|-1|1|0|0|0|0|0|0
+44|4|1|2|32|2|30|31.6227766016838|31.6227766016838|0|90|121.622776601684
+45|4|1|3|33|2|70|2|123.622776601684|0|90|213.622776601684
+46|4|1|4|32|3|40|5.3851648071345|219.007941408818|0|90|309.007941408818
+47|4|1|5|35|2|50|5|314.007941408818|0|90|404.007941408818
+48|4|1|6|33|3|10|5.8309518948453|409.838893303664|0|90|499.838893303664
+49|4|1|7|38|2|40|2|501.838893303664|0|90|591.838893303664
+50|4|1|8|35|3|30|5|596.838893303664|0|90|686.838893303664
+51|4|1|9|36|2|40|5|691.838893303664|0|0|691.838893303664
+52|4|1|10|36|3|30|0|691.838893303664|0|90|781.838893303664
+53|4|1|11|38|3|0|3|784.838893303664|0|90|874.838893303664
+54|4|1|12|-1|6|0|32.3882694814033|907.227162785067|0|0|907.227162785067
+55|5|1|1|-1|1|0|0|0|0|0|0
+56|5|1|2|43|2|10|16.5529453572468|16.5529453572468|0|90|106.552945357247
+57|5|1|3|42|2|30|3|109.552945357247|0|90|199.552945357247
+58|5|1|4|43|3|20|2|201.552945357247|0|90|291.552945357247
+59|5|1|5|42|3|0|2|293.552945357247|0|90|383.552945357247
+60|5|1|6|44|2|10|3|386.552945357247|0|90|476.552945357247
+61|5|1|7|44|3|0|2.82842712474619|479.381372481993|0|90|569.381372481993
+62|5|1|8|45|2|10|2|571.381372481993|0|90|661.381372481993
+63|5|1|9|45|3|0|2|663.381372481993|0|90|753.381372481993
+64|5|1|10|51|2|10|3|756.381372481993|0|0|756.381372481993
+65|5|1|11|51|3|0|0|756.381372481993|0|90|846.381372481993
+66|5|1|12|66|2|10|22.561028345357|868.94240082735|0|90|958.94240082735
+67|5|1|13|66|3|0|2|960.94240082735|0|90|1050.94240082735
+68|5|1|14|-1|6|0|15.8113883008419|1066.75378912819|0|0|1066.75378912819
+69|6|1|1|-1|1|0|0|0|0|0|0
+70|6|1|2|57|2|40|35|35|0|90|125
+71|6|1|3|57|3|0|2|127|0|90|217
+72|6|1|4|54|2|40|5|222|0|90|312
+73|6|1|5|53|2|60|5.3851648071345|317.385164807135|0|90|407.385164807135
+74|6|1|6|56|2|90|4|411.385164807135|0|90|501.385164807135
+75|6|1|7|53|3|70|2|503.385164807135|0|90|593.385164807135
+76|6|1|8|54|3|30|3|596.385164807135|0|90|686.385164807135
+77|6|1|9|56|3|0|10.4403065089106|696.825471316045|0|90|786.825471316045
+78|6|1|10|-1|6|0|35.0570962859162|821.882567601961|0|0|821.882567601961
+79|7|1|1|-1|1|0|0|0|0|0|0
+80|7|1|2|67|2|10|12.2065556157337|12.2065556157337|0|90|102.206555615734
+81|7|1|3|65|2|20|1|103.206555615734|0|90|193.206555615734
+82|7|1|4|63|2|70|2|195.206555615734|0|90|285.206555615734
+83|7|1|5|62|2|90|5|290.206555615734|0|90|380.206555615734
+84|7|1|6|63|3|40|3|383.206555615734|0|90|473.206555615734
+85|7|1|7|65|3|30|5|478.206555615734|0|90|568.206555615734
+86|7|1|8|67|3|20|3|571.206555615734|0|90|661.206555615734
+87|7|1|9|64|2|30|2|663.206555615734|0|0|663.206555615734
+88|7|1|10|64|3|20|0|663.206555615734|0|90|753.206555615734
+89|7|1|11|62|3|0|3|756.206555615734|0|90|846.206555615734
+90|7|1|12|-1|6|0|20.6155281280883|866.822083743822|0|0|866.822083743822
+91|8|1|1|-1|1|0|0|0|0|0|0
+92|8|1|2|81|2|30|47.4341649025257|47.4341649025257|0|90|137.434164902526
+93|8|1|3|78|2|50|3|140.434164902526|0|0|140.434164902526
+94|8|1|4|78|3|30|0|140.434164902526|0|90|230.434164902526
+95|8|1|5|76|2|40|2|232.434164902526|0|90|322.434164902526
+96|8|1|6|71|2|60|5|327.434164902526|0|90|417.434164902526
+97|8|1|7|81|3|30|5|422.434164902526|0|90|512.434164902526
+98|8|1|8|76|3|20|3|515.434164902526|0|90|605.434164902526
+99|8|1|9|71|3|0|4|609.434164902526|0|90|699.434164902526
+100|8|1|10|79|2|10|1|700.434164902526|0|90|790.434164902526
+101|8|1|11|79|3|0|5.3851648071345|795.81932970966|0|90|885.81932970966
+102|8|1|12|-1|6|0|51.478150704935|937.297480414595|0|0|937.297480414595
+103|9|1|1|-1|1|0|0|0|0|0|0
+104|9|1|2|90|2|10|20.6155281280883|20.6155281280883|0|90|110.615528128088
+105|9|1|3|87|2|30|5|115.615528128088|0|90|205.615528128088
+106|9|1|4|86|2|40|1|206.615528128088|0|90|296.615528128088
+107|9|1|5|87|3|20|6|302.615528128088|0|90|392.615528128088
+108|9|1|6|82|2|40|3|395.615528128088|0|90|485.615528128088
+109|9|1|7|84|2|60|5.8309518948453|491.446480022934|0|90|581.446480022934
+110|9|1|8|82|3|40|2.82842712474619|584.27490714768|0|90|674.27490714768
+111|9|1|9|90|3|30|3|677.27490714768|0|90|767.27490714768
+112|9|1|10|84|3|10|2.82842712474619|770.103334272426|0|90|860.103334272426
+113|9|1|11|86|3|0|3.60555127546399|863.70888554789|0|90|953.70888554789
+114|9|1|12|-1|6|0|22.3606797749979|976.069565322888|0|0|976.069565322888
+115|10|1|1|-1|1|0|0|0|0|0|0
+116|10|1|2|98|2|20|30.8058436014987|30.8058436014987|0|90|120.805843601499
+117|10|1|3|96|2|30|5.3851648071345|126.191008408633|0|90|216.191008408633
+118|10|1|4|98|3|10|2|218.191008408633|0|90|308.191008408633
+119|10|1|5|96|3|0|3.60555127546399|311.796559684097|0|90|401.796559684097
+120|10|1|6|92|2|20|3.60555127546399|405.402110959561|0|90|495.402110959561
+121|10|1|7|92|3|0|2|497.402110959561|0|90|587.402110959561
+122|10|1|8|97|2|30|5|592.402110959561|0|0|592.402110959561
+123|10|1|9|97|3|0|0|592.402110959561|0|90|682.402110959561
+124|10|1|10|100|2|20|5|687.402110959561|0|90|777.402110959561
+125|10|1|11|100|3|0|5|782.402110959561|0|90|872.402110959561
+126|10|1|12|-1|6|0|33.5410196624968|905.943130622058|0|0|905.943130622058
+127|-2|0|0|-1|-1|-1|879.42275822512|-1|0|9000|9879.42275822512
+--q3
diff --git a/src/pickDeliver/test/pickDeliver.test.sql b/src/pickDeliver/test/pickDeliver.test.sql
new file mode 100644
index 0000000..9dc7ce2
--- /dev/null
+++ b/src/pickDeliver/test/pickDeliver.test.sql
@@ -0,0 +1,10 @@
+\echo --q1
+SELECT * FROM _pgr_pickDeliver(
+ 'select * from customer order by id', 25, 200, 1, 30);
+\echo --q2
+
+SELECT * FROM _pgr_pickDeliverEuclidean(
+ 'SELECT * FROM orders ORDER BY id',
+ 'SELECT * FROM vehicles',
+ 30);
+\echo --q3
diff --git a/src/pickDeliver/test/test.conf b/src/pickDeliver/test/test.conf
index 77a5cc8..afade98 100644
--- a/src/pickDeliver/test/test.conf
+++ b/src/pickDeliver/test/test.conf
@@ -3,19 +3,38 @@
%main::tests = (
'any' => {
'comment' => 'Function test for any versions.',
- 'data' => ['pickDeliver.data'],
+ 'data' => [],
'tests' => [qw(
doc-pickDeliver
- jet_customers
+ doc-pickDeliverEuclidean
+ past_example
+ )],
+
+ # TODO when finished test results in other systems
+ 'windowsssssssssss' => [qw(
+ cygwin-pickDeliver
+ doc-pickDeliverEuclidean-cygwin
+ )],
+ 'linux' => [qw(
+ design_pgtap
)],
+
'documentation' => [qw(
doc-pickDeliver
+ doc-pickDeliverEuclidean
)],
#put here the ones that you are not testing (just a place holder)
'nottesting' => [qw(
+ jet_customers
+ differentVechiles
+ jet_customers1
+ book_from_query
+
)]
},
);
+# '../../../tools/testers/pickDeliver_pgtap_data.sql',
+# '../../../tools/testers/vrppdtw_data.sql' ],
1;
diff --git a/src/topology/doc/doc-pgr_createTopology.queries b/src/topology/doc/doc-pgr_createTopology.queries
deleted file mode 100644
index a20f5f9..0000000
--- a/src/topology/doc/doc-pgr_createTopology.queries
+++ /dev/null
@@ -1,262 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
-DROP TABLE edge_table_vertices_pgr;
-DROP TABLE
-UPDATE edge_table SET source = NULL, target = NULL;
-UPDATE 18
---q1
-SELECT pgr_createTopology('edge_table', 0.001);
-NOTICE: PROCESSING:
-NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
-NOTICE: Performing checks, please wait .....
-NOTICE: Creating Topology, Please wait...
-NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
-NOTICE: Rows with NULL geometry or NULL id: 0
-NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
-NOTICE: ----------------------------------------------
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q1.1
-DROP TABLE edge_table_vertices_pgr;
-DROP TABLE
-UPDATE edge_table SET source = NULL, target = NULL;
-UPDATE 18
---q2
-SELECT pgr_createTopology('edge_table', 0.001,
- 'the_geom', 'id', 'source', 'target');
-NOTICE: PROCESSING:
-NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
-NOTICE: Performing checks, please wait .....
-NOTICE: Creating Topology, Please wait...
-NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
-NOTICE: Rows with NULL geometry or NULL id: 0
-NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
-NOTICE: ----------------------------------------------
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q2.1
-SET client_min_messages TO NOTICE;
-SET
---q3
-SELECT pgr_createTopology('edge_table', 0.001,
- 'id', 'the_geom');
-NOTICE: PROCESSING:
-NOTICE: pgr_createTopology('edge_table', 0.001, 'id', 'the_geom', 'source', 'target', rows_where := 'true', clean := f)
-NOTICE: Performing checks, please wait .....
-NOTICE: ----> PGR ERROR in pgr_createTopology: Wrong type of Column id:the_geom
-NOTICE: Unexpected error raise_exception
- pgr_createtopology
---------------------
- FAIL
-(1 row)
-
---q3.1
-SET client_min_messages TO WARNING;
-SET
-DROP TABLE edge_table_vertices_pgr;
-DROP TABLE
-UPDATE edge_table SET source = NULL, target = NULL;
-UPDATE 18
---q4
-SELECT pgr_createTopology('edge_table', 0.001,
- the_geom:='the_geom', id:='id', source:='source', target:='target');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q4.1
-DROP TABLE edge_table_vertices_pgr;
-DROP TABLE
-UPDATE edge_table SET source = NULL, target = NULL;
-UPDATE 18
---q5
-SELECT pgr_createTopology('edge_table', 0.001,
- source:='source', id:='id', target:='target', the_geom:='the_geom');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q5.1
-DROP TABLE edge_table_vertices_pgr;
-DROP TABLE
-UPDATE edge_table SET source = NULL, target = NULL;
-UPDATE 18
---q6
-SELECT pgr_createTopology('edge_table', 0.001, source:='source');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q6.1
---q7
-SELECT pgr_createTopology('edge_table', 0.001, rows_where:='id < 10');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q7.1
---q8
-SELECT pgr_createTopology('edge_table', 0.001,
- rows_where:='the_geom && (SELECT st_buffer(the_geom, 0.05) FROM edge_table WHERE id=5)');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q8.1
---q9
-CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5, 2.5) AS other_geom);
-SELECT 1
-SELECT pgr_createTopology('edge_table', 0.001,
- rows_where:='the_geom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q9.1
---q10
-CREATE TABLE mytable AS (SELECT id AS gid, the_geom AS mygeom, source AS src , target AS tgt FROM edge_table) ;
-SELECT 18
---q10.1
---q11
-SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt', clean := TRUE);
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q11.1
-DROP TABLE mytable_vertices_pgr;
-DROP TABLE
-UPDATE mytable SET src = NULL, tgt = NULL;
-UPDATE 18
-SET client_min_messages TO NOTICE;
-SET
---q12
-SELECT pgr_createTopology('mytable', 0.001, 'gid', 'mygeom', 'src', 'tgt');
-NOTICE: PROCESSING:
-NOTICE: pgr_createTopology('mytable', 0.001, 'gid', 'mygeom', 'src', 'tgt', rows_where := 'true', clean := f)
-NOTICE: Performing checks, please wait .....
-NOTICE: ----> PGR ERROR in pgr_createTopology: Wrong type of Column id:mygeom
-NOTICE: Unexpected error raise_exception
- pgr_createtopology
---------------------
- FAIL
-(1 row)
-
---q12.1
-SET client_min_messages TO WARNING;
-SET
---q13
-SELECT pgr_createTopology('mytable', 0.001, the_geom:='mygeom', id:='gid', source:='src', target:='tgt');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q13.1
-DROP TABLE mytable_vertices_pgr;
-DROP TABLE
-UPDATE mytable SET src = NULL, tgt = NULL;
-UPDATE 18
---q14
-SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q14.1
---q15
-SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt', rows_where:='gid < 10');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
-SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom', rows_where:='gid < 10');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
-SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt',
- rows_where:='mygeom && (SELECT st_buffer(mygeom, 1) FROM mytable WHERE gid=5)');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
-SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom',
- rows_where:='mygeom && (SELECT st_buffer(mygeom, 1) FROM mytable WHERE gid=5)');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q15.1
---q16
-SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt',
- rows_where:='mygeom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
-SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom',
- rows_where:='mygeom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q16.1
-SET client_min_messages TO NOTICE;
-SET
---q17
-SELECT pgr_createTopology('edge_table', 0.001, rows_where:='id < 6', clean := true);
-NOTICE: PROCESSING:
-NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'id < 6', clean := t)
-NOTICE: Performing checks, please wait .....
-NOTICE: Creating Topology, Please wait...
-NOTICE: -------------> TOPOLOGY CREATED FOR 5 edges
-NOTICE: Rows with NULL geometry or NULL id: 0
-NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
-NOTICE: ----------------------------------------------
- pgr_createtopology
---------------------
- OK
-(1 row)
-
-SELECT pgr_createTopology('edge_table', 0.001);
-NOTICE: PROCESSING:
-NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
-NOTICE: Performing checks, please wait .....
-NOTICE: Creating Topology, Please wait...
-NOTICE: -------------> TOPOLOGY CREATED FOR 13 edges
-NOTICE: Rows with NULL geometry or NULL id: 0
-NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
-NOTICE: ----------------------------------------------
- pgr_createtopology
---------------------
- OK
-(1 row)
-
---q17.1
-SET client_min_messages TO NOTICE;
-SET
-ROLLBACK;
-ROLLBACK
diff --git a/src/topology/doc/pgr_analyzeGraph.rst b/src/topology/doc/pgr_analyzeGraph.rst
deleted file mode 100644
index e8feffe..0000000
--- a/src/topology/doc/pgr_analyzeGraph.rst
+++ /dev/null
@@ -1,376 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_analyze_graph:
-
-pgr_analyzeGraph
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_analyzeGraph`` — Analyzes the network topology.
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-The function returns:
-
- - ``OK`` after the analysis has finished.
- - ``FAIL`` when the analysis was not completed due to an error.
-
-.. index::
- single: analyzeGraph(Complete Signature)
-
-.. code-block:: sql
-
- varchar pgr_analyzeGraph(text edge_table, double precision tolerance,
- text the_geom:='the_geom', text id:='id',
- text source:='source',text target:='target',text rows_where:='true')
-
-Description
--------------------------------------------------------------------------------
-
-.. rubric:: Prerequisites
-
-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 <edge_table>_vertices_pgr that stores the vertices information.
-
- - Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the vertices table.
- - Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology and the vertices table.
-
-.. rubric:: Parameters
-
-The analyze graph function accepts the following parameters:
-
-:edge_table: ``text`` Network table name. (may contain the schema name as well)
-:tolerance: ``float8`` Snapping tolerance of disconnected edges. (in projection unit)
-:the_geom: ``text`` Geometry column name of the network table. Default value is ``the_geom``.
-:id: ``text`` Primary key column name of the network table. Default value is ``id``.
-:source: ``text`` Source column name of the network table. Default value is ``source``.
-:target: ``text`` Target column name of the network table. Default value is ``target``.
-:rows_where: ``text`` Condition to select a subset or rows. Default value is ``true`` to indicate all rows.
-
-The function returns:
-
- - ``OK`` after the analysis has finished.
-
- * Uses the vertices table: <edge_table>_vertices_pgr.
- * Fills completely the ``cnt`` and ``chk`` columns of the vertices table.
- * Returns the analysis of the section of the network defined by ``rows_where``
-
- - ``FAIL`` when the analysis was not completed due to an error.
-
- * The vertices table is not found.
- * A required column of the Network table is not found or is not of the appropriate type.
- * The condition is not well formed.
- * The names of source , target or id are the same.
- * The SRID of the geometry could not be determined.
-
-
-.. rubric:: The Vertices Table
-
-The vertices table can be created with :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`
-
-The structure of the vertices table is:
-
-:id: ``bigint`` Identifier of the vertex.
-:cnt: ``integer`` Number of vertices in the edge_table that reference this vertex.
-:chk: ``integer`` Indicator that the vertex might have a problem.
-:ein: ``integer`` Number of vertices in the edge_table that reference this vertex as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
-:eout: ``integer`` Number of vertices in the edge_table that reference this vertex as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
-:the_geom: ``geometry`` Point geometry of the vertex.
-
-.. rubric:: History
-
-* New in version 2.0.0
-
-Usage when the edge table's columns MATCH the default values:
--------------------------------------------------------------------------------
-
-.. rubric:: The simplest way to use pgr_analyzeGraph is:
-
-.. code-block:: sql
-
- SELECT pgr_createTopology('edge_table',0.001);
- SELECT pgr_analyzeGraph('edge_table',0.001);
-
-.. rubric:: When the arguments are given in the order described in the parameters:
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target');
-
-We get the same result as the simplest way to use the function.
-
-.. warning:: | An error would occur when the arguments are not given in the appropriate order: 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.
- | ``SELECT pgr_analyzeGraph('edge_table',0.001,'id','the_geom','source','target');``
- | ERROR: Can not determine the srid of the geometry "id" in table public.edge_table
-
-.. rubric:: When using the named notation
-
-The order of the parameters do not matter:
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('edge_table',0.001,the_geom:='the_geom',id:='id',source:='source',target:='target');
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('edge_table',0.001,source:='source',id:='id',target:='target',the_geom:='the_geom');
-
-Parameters defined with a default value can be omitted, as long as the value matches the default:
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('edge_table',0.001,source:='source');
-
-.. rubric:: Selecting rows using rows_where parameter
-
-Selecting rows based on the id. Displays the analysis a the section of the network.
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='id < 10');
-
-Selecting the rows where the geometry is near the geometry of row with ``id`` =5 .
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='the_geom && (SELECT st_buffer(the_geom,0.05) FROM edge_table WHERE id=5)');
-
-Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``.
-
-.. code-block:: sql
-
- DROP TABLE IF EXISTS otherTable;
- CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
- SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='the_geom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE gid=100)');
-
-
-
-Usage when the edge table's columns DO NOT MATCH the default values:
--------------------------------------------------------------------------------
-
-For the following table
-
-.. code-block:: sql
-
- DROP TABLE IF EXISTS mytable;
- CREATE TABLE mytable AS (SELECT id AS gid, source AS src ,target AS tgt , the_geom AS mygeom FROM edge_table);
- SELECT pgr_createTopology('mytable',0.001,'mygeom','gid','src','tgt');
-
-.. rubric:: Using positional notation:
-
-The arguments need to be given in the order described in the parameters:
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt');
-
-.. warning:: | 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.
- | ``SELECT pgr_analyzeGraph('mytable',0.001,'gid','mygeom','src','tgt');``
- | ERROR: Can not determine the srid of the geometry "gid" in table public.mytable
-
-
-.. rubric:: When using the named notation
-
-The order of the parameters do not matter:
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('mytable',0.001,the_geom:='mygeom',id:='gid',source:='src',target:='tgt');
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom');
-
-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.
-
-
-.. rubric:: Selecting rows using rows_where parameter
-
-Selecting rows based on the id.
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt',rows_where:='gid < 10');
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom',rows_where:='gid < 10');
-
-Selecting the rows WHERE the geometry is near the geometry of row with ``id`` =5 .
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt',
- rows_where:='mygeom && (SELECT st_buffer(mygeom,1) FROM mytable WHERE gid=5)');
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom',
- rows_where:='mygeom && (SELECT st_buffer(mygeom,1) FROM mytable WHERE gid=5)');
-
-Selecting the rows WHERE the geometry is near the place='myhouse' of the table ``othertable``. (note the use of quote_literal)
-
-.. code-block:: sql
-
- DROP TABLE IF EXISTS otherTable;
- CREATE TABLE otherTable AS (SELECT 'myhouse'::text AS place, st_point(2.5,2.5) AS other_geom) ;
- SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt',
- rows_where:='mygeom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE place='||quote_literal('myhouse')||')');
-
-.. code-block:: sql
-
- SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom',
- rows_where:='mygeom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE place='||quote_literal('myhouse')||')');
-
-
-
-Examples
--------------------------------------------------------------------------------
-
-.. code-block:: sql
-
- SELECT pgr_createTopology('edge_table',0.001);
- SELECT pgr_analyzeGraph('edge_table', 0.001);
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, pelase wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-
- pgr_analyzeGraph
- --------------------
- OK
- (1 row)
-
- SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='id < 10');
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id < 10')
- NOTICE: Performing checks, pelase wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 4
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
-
- pgr_analyzeGraph
- --------------------
- OK
- (1 row)
-
- SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='id >= 10');
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id >= 10')
- NOTICE: Performing checks, pelase wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 8
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-
- pgr_analyzeGraph
- --------------------
- OK
- (1 row)
-
- -- Simulate removal of edges
- SELECT pgr_createTopology('edge_table', 0.001,rows_where:='id <17');
- SELECT pgr_analyzeGraph('edge_table', 0.001);
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, pelase wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 3
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
-
- pgr_analyzeGraph
- --------------------
- OK
- (1 row)
- SELECT pgr_createTopology('edge_table', 0.001,rows_where:='id <17');
- NOTICE: PROCESSING:
- NOTICE: pgr_createTopology('edge_table',0.001,'the_geom','id','source','target','id <17')
- NOTICE: Performing checks, pelase wait .....
- NOTICE: Creating Topology, Please wait...
- NOTICE: -------------> TOPOLOGY CREATED FOR 16 edges
- NOTICE: Rows with NULL geometry or NULL id: 0
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-
- pgr_analyzeGraph
- --------------------
- OK
- (1 row)
-
- SELECT pgr_analyzeGraph('edge_table', 0.001);
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, pelase wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 3
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
-
- pgr_analyzeGraph
- --------------------
- OK
- (1 row)
-
-
-The examples use the :ref:`sampledata` network.
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`topology` for an overview of a topology for routing algorithms.
-* :ref:`pgr_analyze_oneway` to analyze directionality of the edges.
-* :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to reconstruct the vertices table based on the source and target information.
-* :ref:`pgr_nodeNetwork <pgr_node_network>` to create nodes to a not noded edge table.
-
diff --git a/src/topology/doc/pgr_analyzeOneWay.rst b/src/topology/doc/pgr_analyzeOneWay.rst
deleted file mode 100644
index 8ed5716..0000000
--- a/src/topology/doc/pgr_analyzeOneWay.rst
+++ /dev/null
@@ -1,139 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_analyze_oneway:
-
-pgr_analyzeOneway
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_analyzeOneway`` — Analyzes oneway Sstreets and identifies flipped segments.
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-This function analyzes oneway streets in a graph and identifies any flipped segments.
-
-.. index::
- single: analyzeOneway(Complete Signature)
-
-.. code-block:: sql
-
- text pgr_analyzeOneway(geom_table text,
- text[] s_in_rules, text[] s_out_rules,
- text[] t_in_rules, text[] t_out_rules,
- text oneway='oneway', text source='source', text target='target',
- boolean two_way_if_null=true);
-
-
-Description
--------------------------------------------------------------------------------
-
-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. Lik [...]
-
-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.
-
-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.
-
-.. rubric:: Prerequisites
-
-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 <edge_table>_vertices_pgr that stores the vertices information.
-
- - Use :ref:`pgr_createVerticesTable <pgr_create_vert_table>` to create the vertices table.
- - Use :ref:`pgr_createTopology <pgr_create_topology>` to create the topology and the vertices table.
-
-.. rubric:: Parameters
-
-:edge_table: ``text`` Network table name. (may contain the schema name as well)
-:s_in_rules: ``text[]`` source node **in** rules
-:s_out_rules: ``text[]`` source node **out** rules
-:t_in_rules: ``text[]`` target node **in** rules
-:t_out_rules: ``text[]`` target node **out** rules
-:oneway: ``text`` oneway column name name of the network table. Default value is ``oneway``.
-:source: ``text`` Source column name of the network table. Default value is ``source``.
-:target: ``text`` Target column name of the network table. Default value is ``target``.
-:two_way_if_null: ``boolean`` flag to treat oneway NULL values as bi-directional. Default value is ``true``.
-
-.. note:: It is strongly recommended to use the named notation. See :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>` for examples.
-
-
-The function returns:
-
- - ``OK`` after the analysis has finished.
-
- * Uses the vertices table: <edge_table>_vertices_pgr.
- * Fills completely the ``ein`` and ``eout`` columns of the vertices table.
-
- - ``FAIL`` when the analysis was not completed due to an error.
-
- * The vertices table is not found.
- * A required column of the Network table is not found or is not of the appropriate type.
- * The names of source , target or oneway are the same.
-
-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.
-
-.. rubric:: The Vertices Table
-
-The vertices table can be created with :ref:`pgr_createVerticesTable <pgr_create_vert_table>` or :ref:`pgr_createTopology <pgr_create_topology>`
-
-The structure of the vertices table is:
-
-:id: ``bigint`` Identifier of the vertex.
-:cnt: ``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGgraph <pgr_analyze_graph>`.
-:chk: ``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`.
-:ein: ``integer`` Number of vertices in the edge_table that reference this vertex as incoming.
-:eout: ``integer`` Number of vertices in the edge_table that reference this vertex as outgoing.
-:the_geom: ``geometry`` Point geometry of the vertex.
-
-
-.. rubric:: History
-
-* New in version 2.0.0
-
-
-Examples
--------------------------------------------------------------------------------
-
-.. code-block:: sql
-
- SELECT pgr_analyzeOneway('edge_table',
- ARRAY['', 'B', 'TF'],
- ARRAY['', 'B', 'FT'],
- ARRAY['', 'B', 'FT'],
- ARRAY['', 'B', 'TF'],
- oneway:='dir');
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table','{"",B,TF}','{"",B,FT}','{"",B,FT}','{"",B,TF}','dir','source','target',t)
- NOTICE: Analyzing graph for one way street errors.
- NOTICE: Analysis 25% complete ...
- NOTICE: Analysis 50% complete ...
- NOTICE: Analysis 75% complete ...
- NOTICE: Analysis 100% complete ...
- NOTICE: Found 0 potential problems in directionality
-
- pgr_analyzeoneway
- -------------------
- OK
- (1 row)
-
-The queries use the :ref:`sampledata` network.
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`topology` for an overview of a topology for routing algorithms.
-* :ref:`analytics` for an overview of the analysis of a graph.
-* :ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table.
-* :ref:`pgr_create_vert_table` to reconstruct the vertices table based on the source and target information.
-
diff --git a/src/topology/doc/pgr_createTopology.rst b/src/topology/doc/pgr_createTopology.rst
deleted file mode 100644
index 17a5b02..0000000
--- a/src/topology/doc/pgr_createTopology.rst
+++ /dev/null
@@ -1,256 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_create_topology:
-
-pgr_createTopology
-===============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_createTopology`` — Builds a network topology based on the geometry information.
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-The function returns:
-
- - ``OK`` after the network topology has been built and the vertices table created.
- - ``FAIL`` when the network topology was not built due to an error.
-
-.. index::
- single: createTopology(Complete Signature)
-
-.. code-block:: none
-
- varchar pgr_createTopology(text edge_table, double precision tolerance,
- text the_geom:='the_geom', text id:='id',
- text source:='source',text target:='target',
- text rows_where:='true', boolean clean:=false)
-
-
-
-Description
--------------------------------------------------------------------------------
-
-.. rubric:: Parameters
-
-The topology creation function accepts the following parameters:
-
-:edge_table: ``text`` Network table name. (may contain the schema name AS well)
-:tolerance: ``float8`` Snapping tolerance of disconnected edges. (in projection unit)
-:the_geom: ``text`` Geometry column name of the network table. Default value is ``the_geom``.
-:id: ``text`` Primary key column name of the network table. Default value is ``id``.
-:source: ``text`` Source column name of the network table. Default value is ``source``.
-:target: ``text`` Target column name of the network table. Default value is ``target``.
-:rows_where: ``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.
-:clean: ``boolean`` Clean any previous topology. Default value is ``false``.
-
-.. warning::
-
- The ``edge_table`` will be affected
-
- - The ``source`` column values will change.
- - The ``target`` column values will change.
- - An index will be created, if it doesn't exists, to speed up the process to the following columns:
-
- * ``id``
- * ``the_geom``
- * ``source``
- * ``target``
-
-The function returns:
-
- - ``OK`` after the network topology has been built.
-
- * Creates a vertices table: <edge_table>_vertices_pgr.
- * Fills ``id`` and ``the_geom`` columns of the vertices table.
- * Fills the source and target columns of the edge table referencing the ``id`` of the vertices table.
-
-
- - ``FAIL`` when the network topology was not built due to an error:
-
- * A required column of the Network table is not found or is not of the appropriate type.
- * The condition is not well formed.
- * The names of source , target or id are the same.
- * The SRID of the geometry could not be determined.
-
-
-.. rubric:: The Vertices Table
-
-The vertices table is a requirement of the :ref:`pgr_analyzeGraph <pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` functions.
-
-The structure of the vertices table is:
-
-:id: ``bigint`` Identifier of the vertex.
-:cnt: ``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`.
-:chk: ``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`.
-:ein: ``integer`` Number of vertices in the edge_table that reference this vertex AS incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
-:eout: ``integer`` Number of vertices in the edge_table that reference this vertex AS outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
-:the_geom: ``geometry`` Point geometry of the vertex.
-
-.. rubric:: History
-
-* Renamed in version 2.0.0
-
-Usage when the edge table's columns MATCH the default values:
--------------------------------------------------------------------------------
-
-.. rubric:: The simplest way to use pgr_createTopology is:
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q1
- :end-before: --q1.1
-
-
-
-.. rubric:: When the arguments are given in the order described in the parameters:
-
-We get the same result AS the simplest way to use the function.
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q2
- :end-before: --q2.1
-
-
-.. warning:: | 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.
-
- .. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q3
- :end-before: --q3.1
-
-
-.. rubric:: When using the named notation
-
-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.
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q4
- :end-before: --q4.1
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q5
- :end-before: --q5.1
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q6
- :end-before: --q6.1
-
-.. rubric:: Selecting rows using rows_where parameter
-
-Selecting rows based on the id.
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q7
- :end-before: --q7.1
-
-Selecting the rows where the geometry is near the geometry of row with ``id = 5``.
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q8
- :end-before: --q8.1
-
-Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``.
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q9
- :end-before: --q9.1
-
-
-
-
-Usage when the edge table's columns DO NOT MATCH the default values:
--------------------------------------------------------------------------------
-
-For the following table
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q10
- :end-before: --q10.1
-
-.. rubric:: Using positional notation:
-
-The arguments need to be given in the order described in the parameters.
-
-Note that this example uses clean flag. So it recreates the whole vertices table.
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q11
- :end-before: --q11.1
-
-.. warning:: | 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.
-
- .. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q12
- :end-before: --q12.1
-
-
-
-.. rubric:: When using the named notation
-
-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:
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q13
- :end-before: --q13.1
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q14
- :end-before: --q14.1
-
-
-.. rubric:: Selecting rows using rows_where parameter
-
-Based on id:
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q15
- :end-before: --q15.1
-
-
-Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``.
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q16
- :end-before: --q16.1
-
-
-Examples with full output
--------------------------------------------------------------------------------
-
-This example start a clean topology, with 5 edges, and then its incremented to the rest of the edges.
-
-.. literalinclude:: doc-pgr_createTopology.queries
- :start-after: --q17
- :end-before: --q17.1
-
-The example uses the :ref:`sampledata` network.
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`topology` for an overview of a topology for routing algorithms.
-* :ref:`pgr_create_vert_table` to reconstruct the vertices table based on the source and target information.
-* :ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/topology/doc/pgr_createVerticesTable.rst b/src/topology/doc/pgr_createVerticesTable.rst
deleted file mode 100644
index d7ffa04..0000000
--- a/src/topology/doc/pgr_createVerticesTable.rst
+++ /dev/null
@@ -1,266 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_create_vert_table:
-
-pgr_createVerticesTable
-===============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_createVerticesTable`` — Reconstructs the vertices table based on the source and target information.
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-The function returns:
-
- - ``OK`` after the vertices table has been reconstructed.
- - ``FAIL`` when the vertices table was not reconstructed due to an error.
-
-.. index::
- single: createVerticesTable(Complete Signature)
-
-.. code-block:: sql
-
- pgr_createVerticesTable(edge_table, the_geom, source, target, rows_where)
- RETURNS VARCHAR
-
-
-
-Description
--------------------------------------------------------------------------------
-
-.. Rubric:: Parameters
-
-The reconstruction of the vertices table function accepts the following parameters:
-
-:edge_table: ``text`` Network table name. (may contain the schema name as well)
-:the_geom: ``text`` Geometry column name of the network table. Default value is ``the_geom``.
-:source: ``text`` Source column name of the network table. Default value is ``source``.
-:target: ``text`` Target column name of the network table. Default value is ``target``.
-:rows_where: ``text`` Condition to SELECT a subset or rows. Default value is ``true`` to indicate all rows.
-
-.. warning::
-
- The ``edge_table`` will be affected
-
- - An index will be created, if it doesn't exists, to speed up the process to the following columns:
-
- * ``the_geom``
- * ``source``
- * ``target``
-
-The function returns:
-
- - ``OK`` after the vertices table has been reconstructed.
-
- * Creates a vertices table: <edge_table>_vertices_pgr.
- * Fills ``id`` and ``the_geom`` columns of the vertices table based on the source and target columns of the edge table.
-
- - ``FAIL`` when the vertices table was not reconstructed due to an error.
-
- * A required column of the Network table is not found or is not of the appropriate type.
- * The condition is not well formed.
- * The names of source, target are the same.
- * The SRID of the geometry could not be determined.
-
-.. rubric:: The Vertices Table
-
-The vertices table is a requierment of the :ref:`pgr_analyzeGraph <pgr_analyze_graph>` and the :ref:`pgr_analyzeOneway <pgr_analyze_oneway>` functions.
-
-The structure of the vertices table is:
-
-:id: ``bigint`` Identifier of the vertex.
-:cnt: ``integer`` Number of vertices in the edge_table that reference this vertex. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`.
-:chk: ``integer`` Indicator that the vertex might have a problem. See :ref:`pgr_analyzeGraph <pgr_analyze_graph>`.
-:ein: ``integer`` Number of vertices in the edge_table that reference this vertex as incoming. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
-:eout: ``integer`` Number of vertices in the edge_table that reference this vertex as outgoing. See :ref:`pgr_analyzeOneway <pgr_analyze_oneway>`.
-:the_geom: ``geometry`` Point geometry of the vertex.
-
-.. rubric:: History
-
-* Renamed in version 2.0.0
-
-Usage when the edge table's columns MATCH the default values:
--------------------------------------------------------------------------------
-
-.. rubric:: The simplest way to use pgr_createVerticesTable is:
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('edge_table');
-
-
-.. rubric:: When the arguments are given in the order described in the parameters:
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('edge_table','the_geom','source','target');
-
-We get the same result as the simplest way to use the function.
-
-.. warning:: | 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.
- | ``SELECT pgr_createVerticesTable('edge_table','source','the_geom','target');``
-
-
-.. rubric:: When using the named notation
-
-The order of the parameters do not matter:
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('edge_table',the_geom:='the_geom',source:='source',target:='target');
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('edge_table',source:='source',target:='target',the_geom:='the_geom');
-
-Parameters defined with a default value can be omitted, as long as the value matches the default:
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('edge_table',source:='source');
-
-.. rubric:: Selecting rows using rows_where parameter
-
-Selecting rows based on the id.
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('edge_table',rows_where:='id < 10');
-
-Selecting the rows where the geometry is near the geometry of row with ``id`` =5 .
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('edge_table',rows_where:='the_geom && (select st_buffer(the_geom,0.5) FROM edge_table WHERE id=5)');
-
-Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``.
-
-.. code-block:: sql
-
- DROP TABLE IF EXISTS otherTable;
- CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
- SELECT pgr_createVerticesTable('edge_table',rows_where:='the_geom && (select st_buffer(othergeom,0.5) FROM otherTable WHERE gid=100)');
-
-
-
-Usage when the edge table's columns DO NOT MATCH the default values:
--------------------------------------------------------------------------------
-
-For the following table
-
-.. code-block:: sql
-
- DROP TABLE IF EXISTS mytable;
- CREATE TABLE mytable AS (SELECT id AS gid, the_geom AS mygeom,source AS src ,target AS tgt FROM edge_table) ;
-
-.. rubric:: Using positional notation:
-
-The arguments need to be given in the order described in the parameters:
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt');
-
-.. warning:: | 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.
- | ``SELECT pgr_createVerticesTable('mytable','src','mygeom','tgt');``
-
-
-.. rubric:: When using the named notation
-
-The order of the parameters do not matter:
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('mytable',the_geom:='mygeom',source:='src',target:='tgt');
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom');
-
-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.
-
-
-.. rubric:: Selecting rows using rows_where parameter
-
-Selecting rows based on the gid.
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',rows_where:='gid < 10');
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',rows_where:='gid < 10');
-
-Selecting the rows where the geometry is near the geometry of row with ``gid`` =5 .
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',
- rows_where:='the_geom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE gid=5)');
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',
- rows_where:='mygeom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE id=5)');
-
-Selecting the rows where the geometry is near the geometry of the row with ``gid`` =100 of the table ``othertable``.
-
-.. code-block:: sql
-
- DROP TABLE IF EXISTS otherTable;
- CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
- SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',
- rows_where:='the_geom && (SELECT st_buffer(othergeom,0.5) FROM otherTable WHERE gid=100)');
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',
- rows_where:='the_geom && (SELECT st_buffer(othergeom,0.5) FROM otherTable WHERE gid=100)');
-
-
-
-Examples
--------------------------------------------------------------------------------
-
-.. code-block:: sql
-
- SELECT pgr_createVerticesTable('edge_table');
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
- NOTICE: Performing checks, pelase wait .....
- NOTICE: Populating public.edge_table_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
- NOTICE: FOR 18 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 18
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-
- pgr_createVerticesTable
- --------------------
- OK
- (1 row)
-
-
-The example uses the :ref:`sampledata` network.
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`topology` for an overview of a topology for routing algorithms.
-* :ref:`pgr_createTopology <pgr_create_topology>` to create a topology based on the geometry.
-* :ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table.
-* :ref:`pgr_analyze_oneway` to analyze directionality of the edges.
diff --git a/src/topology/doc/pgr_nodeNetwork.rst b/src/topology/doc/pgr_nodeNetwork.rst
deleted file mode 100644
index 40f956d..0000000
--- a/src/topology/doc/pgr_nodeNetwork.rst
+++ /dev/null
@@ -1,394 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_node_network:
-
-pgr_nodeNetwork
-===============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_nodeNetwork`` - Nodes an network edge table.
-
-:Author: Nicolas Ribot
-:Copyright: Nicolas Ribot, The source code is released under the MIT-X license.
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-The function reads edges from a not "noded" network table and writes the "noded" edges into a new table.
-
-.. index::
- single: pgr_NodeNetwork(Complete Signature)
-
-.. code-block:: sql
-
- pgr_nodenetwork(edge_table, tolerance, id, text the_geom, table_ending, rows_where, outall)
- RETURNS TEXT
-
-
-Description
--------------------------------------------------------------------------------
-
-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: ``integer`` Empty source column to be used with :ref:`pgr_create_topology` function
-:target: ``integer`` Empty target column to be used with :ref:`pgr_create_topology` function
-:the geom: ``geometry`` Geometry column of the noded network
-
-.. rubric:: History
-
-* New in version 2.0.0
-
-
-Example
--------------------------------------------------------------------------------
-
-Let's create the topology for the data in :ref:`sampledata`
-
-.. code-block:: sql
-
- SELECT pgr_createTopology('edge_table', 0.001);
- NOTICE: PROCESSING:
- NOTICE: pgr_createTopology('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, pelase wait .....
- NOTICE: Creating Topology, Please wait...
- NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
- NOTICE: Rows with NULL geometry or NULL id: 0
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
- pgr_createtopology
- --------------------
- OK
- (1 row)
-
-Now we can analyze the network.
-
-.. code-block:: sql
-
- SELECT pgr_analyzegraph('edge_table', 0.001);
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, pelase wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
- pgr_analyzegraph
- ------------------
- OK
- (1 row)
-
-The analysis tell us that the network has a gap and an intersection. We try to fix the problem using:
-
-.. code-block:: sql
-
- SELECT pgr_nodeNetwork('edge_table', 0.001);
- NOTICE: PROCESSING:
- NOTICE: pgr_nodeNetwork('edge_table',0.001,'the_geom','id','noded')
- NOTICE: Performing checks, pelase wait .....
- NOTICE: Processing, pelase wait .....
- NOTICE: Split Edges: 3
- NOTICE: Untouched Edges: 15
- NOTICE: Total original Edges: 18
- NOTICE: Edges generated: 6
- NOTICE: Untouched Edges: 15
- NOTICE: Total New segments: 21
- NOTICE: New Table: public.edge_table_noded
- NOTICE: ----------------------------------
- pgr_nodenetwork
- -----------------
- OK
- (1 row)
-
-Inspecting the generated table, we can see that edges 13,14 and 18 has been segmented
-
-.. code-block:: sql
-
- SELECT old_id,sub_id FROM edge_table_noded ORDER BY old_id,sub_id;
- old_id | sub_id
- --------+--------
- 1 | 1
- 2 | 1
- 3 | 1
- 4 | 1
- 5 | 1
- 6 | 1
- 7 | 1
- 8 | 1
- 9 | 1
- 10 | 1
- 11 | 1
- 12 | 1
- 13 | 1
- 13 | 2
- 14 | 1
- 14 | 2
- 15 | 1
- 16 | 1
- 17 | 1
- 18 | 1
- 18 | 2
- (21 rows)
-
-We can create the topology of the new network
-
-.. code-block:: sql
-
- SELECT pgr_createTopology('edge_table_noded', 0.001);
- NOTICE: PROCESSING:
- NOTICE: pgr_createTopology('edge_table_noded',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, pelase wait .....
- NOTICE: Creating Topology, Please wait...
- NOTICE: -------------> TOPOLOGY CREATED FOR 21 edges
- NOTICE: Rows with NULL geometry or NULL id: 0
- NOTICE: Vertices table for table public.edge_table_noded is: public.edge_table_noded_vertices_pgr
- NOTICE: ----------------------------------------------
- pgr_createtopology
- --------------------
- OK
- (1 row)
-
-Now let's analyze the new topology
-
-.. code-block:: sql
-
- SELECT pgr_analyzegraph('edge_table_noded', 0.001);
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table_noded',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, pelase wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 6
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
- pgr_createtopology
- --------------------
- OK
- (1 row)
-
-
-Images
--------------------------------------------------------------------------------
-
-.. only:: html
-
- +--------------------------------------+-------------------------------------+
- |.. Rubric:: Before Image |.. Rubric:: After Image |
- | | |
- |.. image:: images/before_node_net.png |.. image:: images/after_node_net.png |
- | :scale: 60% | :scale: 60% |
- | :alt: before image | :alt: after image |
- | :align: left | :align: right |
- +--------------------------------------+-------------------------------------+
-
-
-.. only:: latex
-
- .. Rubric:: Before Image
-
- .. image:: images/before_node_net.png
- :scale: 60%
- :alt: before image
- :align: left
-
-
- .. Rubric:: After Image
-
- .. image:: images/after_node_net.png
- :scale: 60%
- :alt: after image
- :align: left
-
-
-Comparing the results
--------------------------------------------------------------------------------
-
-Comparing with the Analysis in the original edge_table, we see that.
-
-+------------------+-----------------------------------------+--------------------------------------------------------------+
-| | Before | After |
-+==================+=========================================+==============================================================+
-|Table name | edge_table | edge_table_noded |
-+------------------+-----------------------------------------+--------------------------------------------------------------+
-|Fields | All original fields | Has only basic fields to do a topology analysis |
-+------------------+-----------------------------------------+--------------------------------------------------------------+
-|Dead ends | - Edges with 1 dead end: 1,6,24 | Edges with 1 dead end: 1-1 ,6-1,14-2, 18-1 17-1 18-2 |
-| | - Edges with 2 dead ends 17,18 | |
-| | | |
-| | Edge 17's right node is a dead end | |
-| | because there is no other edge sharing | |
-| | that same node. (cnt=1) | |
-+------------------+-----------------------------------------+--------------------------------------------------------------+
-|Isolated segments | two isolated segments: 17 and 18 both | No Isolated segments |
-| | they have 2 dead ends | - Edge 17 now shares a node with edges 14-1 and 14-2 |
-| | | - Edges 18-1 and 18-2 share a node with edges 13-1 and 13-2 |
-+------------------+-----------------------------------------+--------------------------------------------------------------+
-|Gaps | There is a gap between edge 17 and 14 | Edge 14 was segmented |
-| | because edge 14 is near to the right | Now edges: 14-1 14-2 17 share the same node |
-| | node of edge 17 | The tolerance value was taken in account |
-+------------------+-----------------------------------------+--------------------------------------------------------------+
-|Intersections | Edges 13 and 18 were intersecting | Edges were segmented, So, now in the interection's |
-| | | point there is a node and the following edges share it: |
-| | | 13-1 13-2 18-1 18-2 |
-+------------------+-----------------------------------------+--------------------------------------------------------------+
-
-Now, we are going to include the segments 13-1, 13-2 14-1, 14-2 ,18-1 and 18-2 into our edge-table, copying the data for dir,cost,and reverse cost with tho following steps:
-
- - Add a column old_id into edge_table, this column is going to keep track the id of the original edge
- - Insert only the segmented edges, that is, the ones whose max(sub_id) >1
-
-.. code-block:: sql
-
- alter table edge_table drop column if exists old_id;
- alter table edge_table add column old_id integer;
- insert into edge_table (old_id,dir,cost,reverse_cost,the_geom)
- (with
- segmented as (select old_id,count(*) as i from edge_table_noded group by old_id)
- select segments.old_id,dir,cost,reverse_cost,segments.the_geom
- from edge_table as edges join edge_table_noded as segments on (edges.id = segments.old_id)
- where edges.id in (select old_id from segmented where i>1) );
-
-We recreate the topology:
-
-.. code-block:: sql
-
- SELECT pgr_createTopology('edge_table', 0.001);
-
- NOTICE: PROCESSING:
- NOTICE: pgr_createTopology('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, pelase wait .....
- NOTICE: Creating Topology, Please wait...
- NOTICE: -------------> TOPOLOGY CREATED FOR 24 edges
- NOTICE: Rows with NULL geometry or NULL id: 0
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
- pgr_createtopology
- --------------------
- OK
- (1 row)
-
-
-To get the same analysis results as the topology of edge_table_noded, we do the following query:
-
-.. code-block:: sql
-
- SELECT pgr_analyzegraph('edge_table', 0.001,rows_where:='id not in (select old_id from edge_table where old_id is not null)');
-
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target',
- 'id not in (select old_id from edge_table where old_id is not null)')
- NOTICE: Performing checks, pelase wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 6
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
- pgr_createtopology
- --------------------
- OK
- (1 row)
-
-
-To get the same analysis results as the original edge_table, we do the following query:
-
-.. code-block:: sql
-
- SELECT pgr_analyzegraph('edge_table', 0.001,rows_where:='old_id is null')
-
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','old_id is null')
- NOTICE: Performing checks, pelase wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
- pgr_createtopology
- --------------------
- OK
- (1 row)
-
-Or we can analyze everything because, maybe edge 18 is an overpass, edge 14 is an under pass and there is also a street level juction, and the same happens with edges 17 and 13.
-
-.. code-block:: sql
-
- SELECT pgr_analyzegraph('edge_table', 0.001);
-
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, pelase wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 3
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 5
- NOTICE: Ring geometries: 0
- pgr_createtopology
- --------------------
- OK
- (1 row)
-
-
-See Also
--------------------------------------------------------------------------------
-
-:ref:`topology` for an overview of a topology for routing algorithms.
-:ref:`pgr_analyze_oneway` to analyze directionality of the edges.
-:ref:`pgr_create_topology` to create a topology based on the geometry.
-:ref:`pgr_analyze_graph` to analyze the edges and vertices of the edge table.
diff --git a/src/topology/doc/topology-functions.rst b/src/topology/doc/topology-functions.rst
deleted file mode 100644
index 67e78e0..0000000
--- a/src/topology/doc/topology-functions.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _topology_functions:
-
-Topology - Family of Functions
-===============================================================================
-
-The pgRouting's topology of a network, represented with an edge table with source and target attributes and a vertices table associated with it.
-Depending on the algorithm, you can create a topology or just reconstruct the vertices table, You can analyze the topology,
-We also provide a function to node an unoded network.
-
- - :ref:`pgr_create_topology` - to create a topology based on the geometry.
- - :ref:`pgr_create_vert_table` - to reconstruct the vertices table based on the source and target information.
- - :ref:`pgr_analyze_graph` - to analyze the edges and vertices of the edge table.
- - :ref:`pgr_analyze_oneway` - to analyze directionality of the edges.
- - :ref:`pgr_node_network` -to create nodes to a not noded edge table.
-
-.. toctree::
- :hidden:
-
- pgr_createTopology
- pgr_createVerticesTable
- pgr_analyzeGraph
- pgr_analyzeOneWay
- pgr_nodeNetwork
-
diff --git a/src/topology/sql/CMakeLists.txt b/src/topology/sql/CMakeLists.txt
deleted file mode 100644
index 7ade88f..0000000
--- a/src/topology/sql/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/pgrouting_topology.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/pgrouting_analytics.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/create_vertices_table.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/nodeNetwork.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/topology/sql/create_vertices_table.sql b/src/topology/sql/create_vertices_table.sql
deleted file mode 100644
index f46dcc1..0000000
--- a/src/topology/sql/create_vertices_table.sql
+++ /dev/null
@@ -1,254 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: create_vertices_table.sql
-
-Copyright (c) 2013 Celia Virginia Vergara Castillo
-Mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-/*
-
-This function should not be used directly. Use assign_vertex_id instead
-Inserts a point into the vertices tablei "vname" with the srid "srid", and return an id
-of a new point or an existing point. Tolerance is the minimal distance
-between existing points and the new point to create a new point.
-
-Modified by: Vicky Vergara <vicky_vergara at hotmail,com>
-
-HISTORY
-Last changes: 2013-03-22
-2013-08-19: handling schemas
-*/
-
-
-
-/*
-.. function:: pgr_createVerticesTable(edge_table text, the_geom text, source text default 'source', target text default 'target')
-
- Based on "source" and "target" columns creates the vetrices_pgr table for edge_table
- Ignores rows where "source" or "target" have NULL values
-
- Author: Vicky Vergara <vicky_vergara at hotmail,com>
-
- HISTORY
- Created 2013-08-19
-*/
-
-CREATE OR REPLACE FUNCTION pgr_createverticestable(
- edge_table text,
- the_geom text DEFAULT 'the_geom'::text,
- source text DEFAULT 'source'::text,
- target text DEFAULT 'target'::text,
- rows_where text DEFAULT 'true'::text
-)
- RETURNS text AS
-$BODY$
-DECLARE
- naming record;
- sridinfo record;
- sname text;
- tname text;
- tabname text;
- vname text;
- vertname text;
- gname text;
- sourcename text;
- targetname text;
- query text;
- ecnt bigint;
- srid integer;
- sourcetype text;
- targettype text;
- sql text;
- totcount integer;
- i integer;
- notincluded integer;
- included integer;
- debuglevel text;
- dummyRec text;
- fnName text;
- err bool;
-
-
-BEGIN
- fnName = 'pgr_createVerticesTable';
- raise notice 'PROCESSING:';
- raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
- execute 'show client_min_messages' into debuglevel;
-
- raise notice 'Performing checks, please wait .....';
-
- RAISE DEBUG 'Checking % exists',edge_table;
- execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
- || ',2,' || quote_literal(fnName) ||' )' into naming;
-
- sname=naming.sname;
- tname=naming.tname;
- tabname=sname||'.'||tname;
- vname=tname||'_vertices_pgr';
- vertname= sname||'.'||vname;
- rows_where = ' AND ('||rows_where||')';
- raise debug '--> Edge table exists: OK';
-
- raise debug 'Checking column names';
- select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
- select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
- select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
-
-
- err = sourcename in (targetname,gname) or targetname=gname;
- perform _pgr_onError(err, 2, fnName,
- 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
- raise debug '--> Column names: OK';
-
- raise debug 'Checking column types in edge table';
- select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
- select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
-
-
- err = sourcetype not in('integer','smallint','bigint');
- perform _pgr_onError(err, 2, fnName,
- 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
-
- err = targettype not in('integer','smallint','bigint');
- perform _pgr_onError(err, 2, fnName,
- 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
-
- raise debug '-->Column types:OK';
-
- raise debug 'Checking SRID of geometry column';
- query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
- || ' FROM ' || _pgr_quote_ident(tabname)
- || ' WHERE ' || quote_ident(gname)
- || ' IS NOT NULL LIMIT 1';
- raise debug '%',query;
- EXECUTE query INTO sridinfo;
-
- err = sridinfo IS NULL OR sridinfo.srid IS NULL;
- perform _pgr_onError(err, 2, fnName,
- 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
- srid := sridinfo.srid;
- raise DEBUG ' --> OK';
-
- raise debug 'Checking and creating Indices';
- perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
- perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
- perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
- raise DEBUG '-->Check and create indices: OK';
-
- gname=quote_ident(gname);
- sourcename=quote_ident(sourcename);
- targetname=quote_ident(targetname);
-
-
- BEGIN
- raise debug 'Checking Condition';
- -- issue #193 & issue #210 & #213
- -- this sql is for trying out the where clause
- -- the select * is to avoid any column name conflicts
- -- limit 1, just try on first record
- -- if the where clasuse is ill formed it will be caught in the exception
- sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
- EXECUTE sql into dummyRec;
- -- end
-
- -- if above where clasue works this one should work
- -- any error will be caught by the exception also
- sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
- sourcename||' is null or '||targetname||' is null)=true '||rows_where;
- raise debug '%',sql;
- EXECUTE SQL into notincluded;
- EXCEPTION WHEN OTHERS THEN
- RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
- RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
- RAISE NOTICE '%',sql;
- RETURN 'FAIL';
- END;
-
-
-
-
- BEGIN
- raise DEBUG 'initializing %',vertname;
- execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
- IF sname=naming.sname AND vname=naming.tname THEN
- execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
- execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
- ELSE
- set client_min_messages to warning;
- execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
- END IF;
- execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
- quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
- execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
- execute 'set client_min_messages to '|| debuglevel;
- raise DEBUG ' ------>OK';
- EXCEPTION WHEN OTHERS THEN
- RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
- RAISE NOTICE 'ERROR: Initializing vertex table';
- RAISE NOTICE '%',sql;
- RETURN 'FAIL';
- END;
-
- BEGIN
- raise notice 'Populating %, please wait...',vertname;
- sql= 'with
- lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
- ' where ('|| gname || ' IS NULL
- or '||sourcename||' is null
- or '||targetname||' is null)=false
- '||rows_where||')
- union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
- ' where ('|| gname || ' IS NULL
- or '||sourcename||' is null
- or '||targetname||' is null)=false
- '||rows_where||'))
- ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
- ,maxid as (select id,max(i) as maxi from numberedLines group by id)
- insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
- RAISE debug '%',sql;
- execute sql;
- GET DIAGNOSTICS totcount = ROW_COUNT;
-
- sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
- where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
- RAISE debug '%',sql;
- execute sql into included;
-
-
-
- execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
- execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
- raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
- raise notice ' FOR % EDGES', included+notincluded;
- RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
- RAISE NOTICE ' Edges processed: %',included;
- Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
- raise notice '----------------------------------------------';
- END;
-
- RETURN 'OK';
- EXCEPTION WHEN OTHERS THEN
- RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
- RETURN 'FAIL';
-END;
-$BODY$
- LANGUAGE plpgsql VOLATILE STRICT;
-
-COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
-IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
diff --git a/src/topology/sql/nodeNetwork.sql b/src/topology/sql/nodeNetwork.sql
deleted file mode 100644
index 43bd16d..0000000
--- a/src/topology/sql/nodeNetwork.sql
+++ /dev/null
@@ -1,289 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Author: Nicolas Ribot, 2013
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
- 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
- */
- p_num int := 0;
- p_ret text := '';
- pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
- vst_line_substring text;
- vst_line_locate_point text;
- intab text;
- outtab text;
- n_pkey text;
- n_geom text;
- naming record;
- sname text;
- tname text;
- outname text;
- srid integer;
- sridinfo record;
- splits bigint;
- touched bigint;
- untouched bigint;
- geomtype text;
- debuglevel text;
- rows_where text;
-
-
-BEGIN
- raise notice 'PROCESSING:';
- raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
- edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
- raise notice 'Performing checks, please wait .....';
- execute 'show client_min_messages' into debuglevel;
-
- BEGIN
- RAISE DEBUG 'Checking % exists',edge_table;
- execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
- sname=naming.sname;
- tname=naming.tname;
- IF sname IS NULL OR tname IS NULL THEN
- RAISE NOTICE '-------> % not found',edge_table;
- RETURN 'FAIL';
- ELSE
- RAISE DEBUG ' -----> OK';
- END IF;
-
- intab=sname||'.'||tname;
- outname=tname||'_'||table_ending;
- outtab= sname||'.'||outname;
- rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
- rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
- END;
-
- BEGIN
- raise DEBUG 'Checking id column "%" columns in % ',id,intab;
- EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
- IF n_pkey is NULL then
- raise notice 'ERROR: id column "%" not found in %',id,intab;
- RETURN 'FAIL';
- END IF;
- END;
-
-
- BEGIN
- raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
- EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
- IF n_geom is NULL then
- raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
- RETURN 'FAIL';
- END IF;
- END;
-
- IF n_pkey=n_geom THEN
- raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
- RETURN 'FAIL';
- END IF;
-
- BEGIN
- raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
- EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
- || ' FROM ' || _pgr_quote_ident(intab)
- || ' WHERE ' || quote_ident(n_geom)
- || ' IS NOT NULL 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 %', n_geom,intab;
- RETURN 'FAIL';
- END IF;
- srid := sridinfo.srid;
- raise DEBUG ' -----> SRID found %',srid;
- EXCEPTION WHEN OTHERS THEN
- RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
- RETURN 'FAIL';
- END;
-
- BEGIN
- RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
- if (_pgr_isColumnIndexed(intab,n_pkey)) then
- RAISE DEBUG ' ------>OK';
- else
- RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
-
- set client_min_messages to warning;
- execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
- execute 'set client_min_messages to '|| debuglevel;
- END IF;
- END;
-
- BEGIN
- RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
- if (_pgr_iscolumnindexed(intab,n_geom)) then
- RAISE DEBUG ' ------>OK';
- else
- RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
- set client_min_messages to warning;
- execute 'CREATE INDEX '
- || quote_ident(tname || '_' || n_geom || '_gidx' )
- || ' ON ' || _pgr_quote_ident(intab)
- || ' USING gist (' || quote_ident(n_geom) || ')';
- execute 'set client_min_messages to '|| debuglevel;
- END IF;
- END;
----------------
- BEGIN
- raise DEBUG 'initializing %',outtab;
- execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
- IF sname=naming.sname AND outname=naming.tname THEN
- execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
- execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
- ELSE
- set client_min_messages to warning;
- execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
- source bigint,target bigint)';
- END IF;
- execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
- execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
- quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
- execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
- execute 'set client_min_messages to '|| debuglevel;
- raise DEBUG ' ------>OK';
- END;
-----------------
-
-
- raise notice 'Processing, please wait .....';
-
-
- if pgis_ver_old then
- vst_line_substring := 'st_line_substring';
- vst_line_locate_point := 'st_line_locate_point';
- else
- vst_line_substring := 'st_linesubstring';
- vst_line_locate_point := 'st_linelocatepoint';
- end if;
-
--- -- First creates temp table with intersection points
- p_ret = 'create temp table intergeom on commit drop as (
- select l1.' || quote_ident(n_pkey) || ' as l1id,
- l2.' || quote_ident(n_pkey) || ' as l2id,
- l1.' || quote_ident(n_geom) || ' as line,
- _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
- _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
- st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
- from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
- join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
- on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
- 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
- st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
- st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
- st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
- st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
- raise debug '%',p_ret;
- EXECUTE p_ret;
-
- -- second temp table with locus (index of intersection point on the line)
- -- to avoid updating the previous table
- -- we keep only intersection points occurring onto the line, not at one of its ends
--- drop table if exists inter_loc;
-
---HAD TO CHANGE THIS QUERY
--- p_ret= 'create temp table inter_loc on commit drop as (
--- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
--- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
--- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
- p_ret= 'create temp table inter_loc on commit drop as ( select * from (
- (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
- union
- (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
- where locus<>0 and locus<>1)';
- raise debug '%',p_ret;
- EXECUTE p_ret;
-
- -- index on l1id
- create index inter_loc_id_idx on inter_loc(l1id);
-
- -- Then computes the intersection on the lines subset, which is much smaller than full set
- -- as there are very few intersection points
-
---- outab needs to be formally created with id, old_id, subid,the_geom, source,target
---- so it can be inmediatly be used with createTopology
-
--- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
--- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
- P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
- select l1id as lid, locus
- from inter_loc
- -- then generates start and end locus for each line that have to be cut buy a location point
- UNION ALL
- select i.l1id as lid, 0 as locus
- from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
- UNION ALL
- select i.l1id as lid, 1 as locus
- from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
- order by lid, locus
- ),
- -- we generate a row_number index column for each input line
- -- to be able to self-join the table to cut a line between two consecutive locations
- loc_with_idx as (
- select lid, locus, row_number() over (partition by lid order by locus) as idx
- from cut_locations
- )
- -- finally, each original line is cut with consecutive locations using linear referencing functions
- select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
- from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
- where loc2.idx = loc1.idx+1
- -- keeps only linestring geometries
- and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
- raise debug '%',p_ret;
- EXECUTE p_ret;
- GET DIAGNOSTICS splits = ROW_COUNT;
- execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
- select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
- ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
- select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
- ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
- 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: %', outtab;
- RAISE NOTICE '----------------------------------';
-
- drop table if exists intergeom;
- drop table if exists inter_loc;
- RETURN 'OK';
-END;
-$BODY$
- LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
-
-
-COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
- IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
-
diff --git a/src/topology/sql/pgrouting_topology.sql b/src/topology/sql/pgrouting_topology.sql
deleted file mode 100644
index af9ccfc..0000000
--- a/src/topology/sql/pgrouting_topology.sql
+++ /dev/null
@@ -1,289 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Author: Christian Gonzalez
-Author: Stephen Woodbridge <woodbri at imaptools.com>
-Author: Vicky Vergara <vicky_vergara at hotmail,com>
-Mail: project at 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*/
-
-/*
-.. function:: _pgr_createtopology(edge_table, tolerance,the_geom,id,source,target,rows_where)
-
-Based on the geometry:
-Fill the source and target column for all lines.
-All line end points within a distance less than tolerance, are assigned the same id
-
-Author: Christian Gonzalez <christian.gonzalez at sigis.com.ve>
-Author: Stephen Woodbridge <woodbri at imaptools.com>
-Modified by: Vicky Vergara <vicky_vergara at hotmail,com>
-
-HISTORY
-Last changes: 2013-03-22
-2013-08-19: handling schemas
-2014-july: fixes issue 211
-*/
-
-CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
- the_geom text default 'the_geom', id text default 'id',
- source text default 'source', target text default 'target',rows_where text default 'true',
- clean boolean default FALSE)
-RETURNS VARCHAR AS
-$BODY$
-
-DECLARE
- points record;
- sridinfo record;
- source_id bigint;
- target_id bigint;
- totcount bigint;
- rowcount bigint;
- srid integer;
- sql text;
- sname text;
- tname text;
- tabname text;
- vname text;
- vertname text;
- gname text;
- idname text;
- sourcename text;
- targetname text;
- notincluded integer;
- i integer;
- naming record;
- info record;
- flag boolean;
- query text;
- idtype text;
- gtype text;
- sourcetype text;
- targettype text;
- debuglevel text;
- dummyRec text;
- fnName text;
- err bool;
- msgKind int;
- emptied BOOLEAN;
-
-BEGIN
- msgKind = 1; -- notice
- fnName = 'pgr_createTopology';
- raise notice 'PROCESSING:';
- raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
- execute 'show client_min_messages' into debuglevel;
-
-
- raise notice 'Performing checks, please wait .....';
-
- execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
- || ',2,' || quote_literal(fnName) ||' )' into naming;
- sname=naming.sname;
- tname=naming.tname;
- tabname=sname||'.'||tname;
- vname=tname||'_vertices_pgr';
- vertname= sname||'.'||vname;
- rows_where = ' AND ('||rows_where||')';
- raise DEBUG ' --> OK';
-
-
- raise debug 'Checking column names in edge table';
- select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
- select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
- select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
- select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
-
-
- err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
- perform _pgr_onError( err, 2, fnName,
- 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
- 'Column names are OK');
-
- raise DEBUG ' --> OK';
-
- raise debug 'Checking column types in edge table';
- select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
- select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
- select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
-
- err = idtype not in('integer','smallint','bigint');
- perform _pgr_onError(err, 2, fnName,
- 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
-
- err = sourcetype not in('integer','smallint','bigint');
- perform _pgr_onError(err, 2, fnName,
- 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
-
- err = targettype not in('integer','smallint','bigint');
- perform _pgr_onError(err, 2, fnName,
- 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
-
- raise DEBUG ' --> OK';
-
- raise debug 'Checking SRID of geometry column';
- query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
- || ' FROM ' || _pgr_quote_ident(tabname)
- || ' WHERE ' || quote_ident(gname)
- || ' IS NOT NULL LIMIT 1';
- raise debug '%',query;
- EXECUTE query INTO sridinfo;
-
- err = sridinfo IS NULL OR sridinfo.srid IS NULL;
- perform _pgr_onError(err, 2, fnName,
- 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
-
- srid := sridinfo.srid;
- raise DEBUG ' --> OK';
-
- raise debug 'Checking and creating indices in edge table';
- perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
- perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
- perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
- perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
-
- gname=quote_ident(gname);
- idname=quote_ident(idname);
- sourcename=quote_ident(sourcename);
- targetname=quote_ident(targetname);
- raise DEBUG ' --> OK';
-
-
-
-
-
- BEGIN
- -- issue #193 & issue #210 & #213
- -- this sql is for trying out the where clause
- -- the select * is to avoid any column name conflicts
- -- limit 1, just try on first record
- -- if the where clasuse is ill formed it will be caught in the exception
- sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
- EXECUTE sql into dummyRec;
- -- end
-
- -- if above where clasue works this one should work
- -- any error will be caught by the exception also
- sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
- idname||' IS NOT NULL)=false '||rows_where;
- EXECUTE SQL into notincluded;
-
- if clean then
- raise debug 'Cleaning previous Topology ';
- execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
- ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
- else
- raise debug 'Creating topology for edges with non assigned topology';
- if rows_where=' AND (true)' then
- rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
- end if;
- end if;
- -- my thoery is that the select Count(*) will never go through here
- EXCEPTION WHEN OTHERS THEN
- RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
- RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
- RAISE NOTICE '%',sql;
- RETURN 'FAIL';
- END;
-
- BEGIN
- raise DEBUG 'initializing %',vertname;
- execute 'select * from _pgr_getTableName('||quote_literal(vertname)
- || ',0,' || quote_literal(fnName) ||' )' into naming;
- emptied = false;
- set client_min_messages to warning;
- IF sname=naming.sname AND vname=naming.tname THEN
- if clean then
- execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
- execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
- emptied = true;
- end if;
- ELSE -- table doesn't exist
- execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
- emptied = true;
- END IF;
- IF (emptied) THEN
- execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
- quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
- perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
- END IF;
- execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
- execute 'set client_min_messages to '|| debuglevel;
- raise DEBUG ' ------>OK';
- EXCEPTION WHEN OTHERS THEN
- RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
- RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
- RETURN 'FAIL';
- END;
-
-
-
- raise notice 'Creating Topology, Please wait...';
- rowcount := 0;
- FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
- || ' _pgr_StartPoint(' || gname || ') AS source,'
- || ' _pgr_EndPoint(' || gname || ') AS target'
- || ' FROM ' || _pgr_quote_ident(tabname)
- || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
- LOOP
-
- rowcount := rowcount + 1;
- IF rowcount % 1000 = 0 THEN
- RAISE NOTICE '% edges processed', rowcount;
- END IF;
-
-
- source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
- target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
- BEGIN
- sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
- ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
- ' WHERE ' || idname || ' = ' || points.id::text;
-
- IF sql IS NULL THEN
- RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
- ELSE
- EXECUTE sql;
- END IF;
- EXCEPTION WHEN OTHERS THEN
- RAISE NOTICE '%', SQLERRM;
- RAISE NOTICE '%',sql;
- RETURN 'FAIL';
- end;
- END LOOP;
- raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
- RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
- Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
- raise notice '----------------------------------------------';
-
- RETURN 'OK';
- EXCEPTION WHEN OTHERS THEN
- RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
- RETURN 'FAIL';
-END;
-
-
-$BODY$
-LANGUAGE plpgsql VOLATILE STRICT;
-COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
-IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
-
-
-
-
diff --git a/src/topology/test/analyzeOneway-any.result b/src/topology/test/analyzeOneway-any.result
index 738473f..39e9938 100644
--- a/src/topology/test/analyzeOneway-any.result
+++ b/src/topology/test/analyzeOneway-any.result
@@ -1,9 +1,25 @@
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeOneway('edge_table','{"",B,TF}','{"",B,FT}','{"",B,FT}','{"",B,TF}','dir','source','target',t)
- NOTICE: Analyzing graph for one way street errors.
- NOTICE: Analysis 25% complete ...
- NOTICE: Analysis 50% complete ...
- NOTICE: Analysis 75% complete ...
- NOTICE: Analysis 100% complete ...
- NOTICE: Found 0 potential problems in directionality
-OK
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT pgr_analyzeOneway('edge_table',
+ARRAY['', 'B', 'TF'],
+ARRAY['', 'B', 'FT'],
+ARRAY['', 'B', 'FT'],
+ARRAY['', 'B', 'TF'],
+oneway:='dir');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeOneway('edge_table','{"",B,TF}','{"",B,FT}','{"",B,FT}','{"",B,TF}','dir','source','target',t)
+NOTICE: Analyzing graph for one way street errors.
+NOTICE: Analysis 25% complete ...
+NOTICE: Analysis 50% complete ...
+NOTICE: Analysis 75% complete ...
+NOTICE: Analysis 100% complete ...
+NOTICE: Found 0 potential problems in directionality
+ pgr_analyzeoneway
+-------------------
+ OK
+(1 row)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/topology/test/createVertTab-any.result b/src/topology/test/createVertTab-any.result
index 5382bfa..184821d 100644
--- a/src/topology/test/createVertTab-any.result
+++ b/src/topology/test/createVertTab-any.result
@@ -1,198 +1,306 @@
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.edge_table_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
- NOTICE: FOR 18 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 18
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.edge_table_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
- NOTICE: FOR 18 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 18
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.edge_table_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
- NOTICE: FOR 18 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 18
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.edge_table_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
- NOTICE: FOR 18 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 18
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.edge_table_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
- NOTICE: FOR 18 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 18
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','id < 10')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.edge_table_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
- NOTICE: FOR 10 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 10
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','the_geom && (select st_buffer(the_geom,0.5) FROM edge_table WHERE id=5)')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.edge_table_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
- NOTICE: FOR 9 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 9
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','the_geom && (select st_buffer(other_geom,0.5) FROM otherTable WHERE gid=100)')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.edge_table_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 10 VERTICES
- NOTICE: FOR 12 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 12
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','true')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.mytable_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
- NOTICE: FOR 18 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 18
- NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','true')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.mytable_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
- NOTICE: FOR 18 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 18
- NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','true')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.mytable_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
- NOTICE: FOR 18 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 18
- NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','gid < 10')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.mytable_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
- NOTICE: FOR 10 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 10
- NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','gid < 10')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.mytable_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
- NOTICE: FOR 10 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 10
- NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','mygeom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE gid=5)')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.mytable_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
- NOTICE: FOR 9 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 9
- NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','mygeom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE gid=5)')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.mytable_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
- NOTICE: FOR 9 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 9
- NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','mygeom && (SELECT st_buffer(other_geom,0.5) FROM otherTable WHERE gid=100)')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.mytable_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 10 VERTICES
- NOTICE: FOR 12 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 12
- NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','mygeom && (SELECT st_buffer(other_geom,0.5) FROM otherTable WHERE gid=100)')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.mytable_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 10 VERTICES
- NOTICE: FOR 12 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 12
- NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
- NOTICE: Performing checks, please wait .....
- NOTICE: Populating public.edge_table_vertices_pgr, please wait...
- NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
- NOTICE: FOR 18 EDGES
- NOTICE: Edges with NULL geometry,source or target: 0
- NOTICE: Edges processed: 18
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT pgr_createVerticesTable('edge_table');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.edge_table_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
+NOTICE: FOR 18 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 18
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('edge_table','the_geom','source','target');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.edge_table_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
+NOTICE: FOR 18 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 18
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('edge_table',the_geom:='the_geom',source:='source',target:='target');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.edge_table_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
+NOTICE: FOR 18 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 18
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('edge_table',source:='source',target:='target',the_geom:='the_geom');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.edge_table_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
+NOTICE: FOR 18 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 18
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('edge_table',source:='source');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.edge_table_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
+NOTICE: FOR 18 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 18
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('edge_table',rows_where:='id < 10');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','id < 10')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.edge_table_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
+NOTICE: FOR 10 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 10
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('edge_table',rows_where:='the_geom && (select st_buffer(the_geom,0.5) FROM edge_table WHERE id=5)');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','the_geom && (select st_buffer(the_geom,0.5) FROM edge_table WHERE id=5)')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.edge_table_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
+NOTICE: FOR 9 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 9
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
+SELECT 1
+SELECT pgr_createVerticesTable('edge_table',rows_where:='the_geom && (select st_buffer(other_geom,0.5) FROM otherTable WHERE gid=100)');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','the_geom && (select st_buffer(other_geom,0.5) FROM otherTable WHERE gid=100)')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.edge_table_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 10 VERTICES
+NOTICE: FOR 12 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 12
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+CREATE TABLE mytable AS (SELECT id AS gid, the_geom AS mygeom,source AS src ,target AS tgt FROM edge_table) ;
+SELECT 18
+SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','true')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.mytable_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
+NOTICE: FOR 18 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 18
+NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('mytable',the_geom:='mygeom',source:='src',target:='tgt');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','true')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.mytable_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
+NOTICE: FOR 18 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 18
+NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','true')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.mytable_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
+NOTICE: FOR 18 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 18
+NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',rows_where:='gid < 10');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','gid < 10')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.mytable_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
+NOTICE: FOR 10 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 10
+NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',rows_where:='gid < 10');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','gid < 10')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.mytable_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
+NOTICE: FOR 10 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 10
+NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE gid=5)');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','mygeom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE gid=5)')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.mytable_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
+NOTICE: FOR 9 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 9
+NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE gid=5)');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','mygeom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE gid=5)')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.mytable_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 9 VERTICES
+NOTICE: FOR 9 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 9
+NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+DROP TABLE IF EXISTS otherTable;
+DROP TABLE
+CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
+SELECT 1
+SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',
+ rows_where:='mygeom && (SELECT st_buffer(other_geom,0.5) FROM otherTable WHERE gid=100)');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','mygeom && (SELECT st_buffer(other_geom,0.5) FROM otherTable WHERE gid=100)')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.mytable_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 10 VERTICES
+NOTICE: FOR 12 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 12
+NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(other_geom,0.5) FROM otherTable WHERE gid=100)');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('mytable','mygeom','src','tgt','mygeom && (SELECT st_buffer(other_geom,0.5) FROM otherTable WHERE gid=100)')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.mytable_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 10 VERTICES
+NOTICE: FOR 12 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 12
+NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+SELECT pgr_createVerticesTable('edge_table');
+NOTICE: PROCESSING:
+NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
+NOTICE: Performing checks, please wait .....
+NOTICE: Populating public.edge_table_vertices_pgr, please wait...
+NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
+NOTICE: FOR 18 EDGES
+NOTICE: Edges with NULL geometry,source or target: 0
+NOTICE: Edges processed: 18
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createverticestable
+-------------------------
+ OK
+(1 row)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/topology/test/doc-pgr_analyzeGraph.result b/src/topology/test/doc-pgr_analyzeGraph.result
index 5e7f4d2..b98fe3c 100644
--- a/src/topology/test/doc-pgr_analyzeGraph.result
+++ b/src/topology/test/doc-pgr_analyzeGraph.result
@@ -1,378 +1,536 @@
- NOTICE: PROCESSING:
- NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := t)
- NOTICE: Performing checks, please wait.....
- NOTICE: Creating Topology, Please wait...
- NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
- NOTICE: Rows with NULL geometry or NULL id: 0
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'id','the_geom','source','target','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Got function st_srid(bigint) does not exist
- NOTICE: ERROR: something went wrong when checking for SRID of id in table public.edge_table
-FAIL
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id < 10')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 4
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','the_geom && (SELECT st_buffer(the_geom,0.05) FROM edge_table WHERE id=5)')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 5
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','the_geom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE gid=100)')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 10
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt', rows_where := 'true', clean := t)
- NOTICE: Performing checks, please wait .....
- NOTICE: Creating Topology, Please wait...
- NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
- NOTICE: Rows with NULL geometry or NULL id: 0
- NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('mytable',0.0001,'gid','mygeom','src','tgt','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Got function st_srid(bigint) does not exist
- NOTICE: ERROR: something went wrong when checking for SRID of gid in table public.mytable
-FAIL
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','gid < 10')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 4
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','gid < 10')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 4
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','mygeom && (SELECT st_buffer(mygeom,1) FROM mytable WHERE gid=5)')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 1
- NOTICE: Dead ends: 5
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','mygeom && (SELECT st_buffer(mygeom,1) FROM mytable WHERE gid=5)')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 1
- NOTICE: Dead ends: 5
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','mygeom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE place='myhouse')')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 10
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','mygeom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE place='myhouse')')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 10
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := t)
- NOTICE: Performing checks, please wait .....
- NOTICE: Creating Topology, Please wait...
- NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
- NOTICE: Rows with NULL geometry or NULL id: 0
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 7
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id < 10')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 4
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id >= 10')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 2
- NOTICE: Dead ends: 8
- NOTICE: Potential gaps found near dead ends: 1
- NOTICE: Intersections detected: 1
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id < 17')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 3
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'id <17', clean := t)
- NOTICE: Performing checks, please wait .....
- NOTICE: Creating Topology, Please wait...
- NOTICE: -------------> TOPOLOGY CREATED FOR 16 edges
- NOTICE: Rows with NULL geometry or NULL id: 0
- NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
- NOTICE: ----------------------------------------------
-OK
- NOTICE: PROCESSING:
- NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
- NOTICE: Performing checks, please wait...
- NOTICE: Analyzing for dead ends. Please wait...
- NOTICE: Analyzing for gaps. Please wait...
- NOTICE: Analyzing for isolated edges. Please wait...
- NOTICE: Analyzing for ring geometries. Please wait...
- NOTICE: Analyzing for intersections. Please wait...
- NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
- NOTICE: Isolated segments: 0
- NOTICE: Dead ends: 3
- NOTICE: Potential gaps found near dead ends: 0
- NOTICE: Intersections detected: 0
- NOTICE: Ring geometries: 0
-OK
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT pgr_createTopology('edge_table',0.001, clean := true);
+NOTICE: PROCESSING:
+NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := t)
+NOTICE: Performing checks, please wait .....
+NOTICE: Creating Topology, Please wait...
+NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
+NOTICE: Rows with NULL geometry or NULL id: 0
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001);
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 7
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 7
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001,'id','the_geom','source','target');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'id','the_geom','source','target','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Got function st_srid(bigint) does not exist
+NOTICE: ERROR: something went wrong when checking for SRID of id in table public.edge_table
+ pgr_analyzegraph
+------------------
+ FAIL
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001,the_geom:='the_geom',id:='id',source:='source',target:='target');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 7
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001,source:='source',id:='id',target:='target',the_geom:='the_geom');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 7
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001,source:='source');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 7
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='id < 10');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id < 10')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 0
+NOTICE: Dead ends: 4
+NOTICE: Potential gaps found near dead ends: 0
+NOTICE: Intersections detected: 0
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='the_geom && (SELECT st_buffer(the_geom,0.05) FROM edge_table WHERE id=5)');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','the_geom && (SELECT st_buffer(the_geom,0.05) FROM edge_table WHERE id=5)')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 0
+NOTICE: Dead ends: 5
+NOTICE: Potential gaps found near dead ends: 0
+NOTICE: Intersections detected: 0
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
+SELECT 1
+SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='the_geom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE gid=100)');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','the_geom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE gid=100)')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 10
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+CREATE TABLE mytable AS (SELECT id AS gid, source AS src ,target AS tgt , the_geom AS mygeom FROM edge_table);
+SELECT 18
+SELECT pgr_createTopology('mytable',0.001,'mygeom','gid','src','tgt', clean := true);
+NOTICE: PROCESSING:
+NOTICE: pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt', rows_where := 'true', clean := t)
+NOTICE: Performing checks, please wait .....
+NOTICE: Creating Topology, Please wait...
+NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
+NOTICE: Rows with NULL geometry or NULL id: 0
+NOTICE: Vertices table for table public.mytable is: public.mytable_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 7
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('mytable',0.0001,'gid','mygeom','src','tgt');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('mytable',0.0001,'gid','mygeom','src','tgt','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Got function st_srid(bigint) does not exist
+NOTICE: ERROR: something went wrong when checking for SRID of gid in table public.mytable
+ pgr_analyzegraph
+------------------
+ FAIL
+(1 row)
+
+SELECT pgr_analyzeGraph('mytable',0.001,the_geom:='mygeom',id:='gid',source:='src',target:='tgt');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 7
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 7
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt',rows_where:='gid < 10');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','gid < 10')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 0
+NOTICE: Dead ends: 4
+NOTICE: Potential gaps found near dead ends: 0
+NOTICE: Intersections detected: 0
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom',rows_where:='gid < 10');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','gid < 10')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 0
+NOTICE: Dead ends: 4
+NOTICE: Potential gaps found near dead ends: 0
+NOTICE: Intersections detected: 0
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom,1) FROM mytable WHERE gid=5)');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','mygeom && (SELECT st_buffer(mygeom,1) FROM mytable WHERE gid=5)')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 1
+NOTICE: Dead ends: 5
+NOTICE: Potential gaps found near dead ends: 0
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom,1) FROM mytable WHERE gid=5)');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','mygeom && (SELECT st_buffer(mygeom,1) FROM mytable WHERE gid=5)')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 1
+NOTICE: Dead ends: 5
+NOTICE: Potential gaps found near dead ends: 0
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+DROP TABLE IF EXISTS otherTable;
+DROP TABLE
+CREATE TABLE otherTable AS (SELECT 'myhouse'::text AS place, st_point(2.5,2.5) AS other_geom) ;
+SELECT 1
+SELECT pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt',
+ rows_where:='mygeom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE place='||quote_literal('myhouse')||')');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','mygeom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE place='myhouse')')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 10
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('mytable',0.001,source:='src',id:='gid',target:='tgt',the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE place='||quote_literal('myhouse')||')');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('mytable',0.001,'mygeom','gid','src','tgt','mygeom && (SELECT st_buffer(other_geom,1) FROM otherTable WHERE place='myhouse')')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 10
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('edge_table',0.001, clean := true);
+NOTICE: PROCESSING:
+NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := t)
+NOTICE: Performing checks, please wait .....
+NOTICE: Creating Topology, Please wait...
+NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
+NOTICE: Rows with NULL geometry or NULL id: 0
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table', 0.001);
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 7
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='id < 10');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id < 10')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 0
+NOTICE: Dead ends: 4
+NOTICE: Potential gaps found near dead ends: 0
+NOTICE: Intersections detected: 0
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='id >= 10');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id >= 10')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 2
+NOTICE: Dead ends: 8
+NOTICE: Potential gaps found near dead ends: 1
+NOTICE: Intersections detected: 1
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table',0.001,rows_where:='id < 17');
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id < 17')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 0
+NOTICE: Dead ends: 3
+NOTICE: Potential gaps found near dead ends: 0
+NOTICE: Intersections detected: 0
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('edge_table', 0.001,rows_where:='id <17', clean := true);
+NOTICE: PROCESSING:
+NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'id <17', clean := t)
+NOTICE: Performing checks, please wait .....
+NOTICE: Creating Topology, Please wait...
+NOTICE: -------------> TOPOLOGY CREATED FOR 16 edges
+NOTICE: Rows with NULL geometry or NULL id: 0
+NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
+NOTICE: ----------------------------------------------
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzeGraph('edge_table', 0.001);
+NOTICE: PROCESSING:
+NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
+NOTICE: Performing checks, please wait ...
+NOTICE: Analyzing for dead ends. Please wait...
+NOTICE: Analyzing for gaps. Please wait...
+NOTICE: Analyzing for isolated edges. Please wait...
+NOTICE: Analyzing for ring geometries. Please wait...
+NOTICE: Analyzing for intersections. Please wait...
+NOTICE: ANALYSIS RESULTS FOR SELECTED EDGES:
+NOTICE: Isolated segments: 0
+NOTICE: Dead ends: 3
+NOTICE: Potential gaps found near dead ends: 0
+NOTICE: Intersections detected: 0
+NOTICE: Ring geometries: 0
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/topology/test/doc-pgr_createTopology.result b/src/topology/test/doc-pgr_createTopology.result
index f2fd0e4..3b3e195 100644
--- a/src/topology/test/doc-pgr_createTopology.result
+++ b/src/topology/test/doc-pgr_createTopology.result
@@ -1,4 +1,13 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+DROP TABLE edge_table_vertices_pgr;
+DROP TABLE
+UPDATE edge_table SET source = NULL, target = NULL;
+UPDATE 18
--q1
+SELECT pgr_createTopology('edge_table', 0.001);
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
NOTICE: Performing checks, please wait .....
@@ -7,9 +16,19 @@ NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
NOTICE: Rows with NULL geometry or NULL id: 0
NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
NOTICE: ----------------------------------------------
-OK
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q1.1
+DROP TABLE edge_table_vertices_pgr;
+DROP TABLE
+UPDATE edge_table SET source = NULL, target = NULL;
+UPDATE 18
--q2
+SELECT pgr_createTopology('edge_table', 0.001,
+ 'the_geom', 'id', 'source', 'target');
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
NOTICE: Performing checks, please wait .....
@@ -18,64 +37,197 @@ NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
NOTICE: Rows with NULL geometry or NULL id: 0
NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
NOTICE: ----------------------------------------------
-OK
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q2.1
+SET client_min_messages TO NOTICE;
+SET
--q3
+SELECT pgr_createTopology('edge_table', 0.001,
+ 'id', 'the_geom');
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('edge_table', 0.001, 'id', 'the_geom', 'source', 'target', rows_where := 'true', clean := f)
NOTICE: Performing checks, please wait .....
NOTICE: ----> PGR ERROR in pgr_createTopology: Wrong type of Column id:the_geom
NOTICE: Unexpected error raise_exception
-FAIL
+ pgr_createtopology
+--------------------
+ FAIL
+(1 row)
+
--q3.1
+SET client_min_messages TO WARNING;
+SET
+DROP TABLE edge_table_vertices_pgr;
+DROP TABLE
+UPDATE edge_table SET source = NULL, target = NULL;
+UPDATE 18
--q4
-OK
+SELECT pgr_createTopology('edge_table', 0.001,
+ the_geom:='the_geom', id:='id', source:='source', target:='target');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q4.1
+DROP TABLE edge_table_vertices_pgr;
+DROP TABLE
+UPDATE edge_table SET source = NULL, target = NULL;
+UPDATE 18
--q5
-OK
+SELECT pgr_createTopology('edge_table', 0.001,
+ source:='source', id:='id', target:='target', the_geom:='the_geom');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q5.1
+DROP TABLE edge_table_vertices_pgr;
+DROP TABLE
+UPDATE edge_table SET source = NULL, target = NULL;
+UPDATE 18
--q6
-OK
+SELECT pgr_createTopology('edge_table', 0.001, source:='source');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q6.1
--q7
-OK
+SELECT pgr_createTopology('edge_table', 0.001, rows_where:='id < 10');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q7.1
--q8
-OK
+SELECT pgr_createTopology('edge_table', 0.001,
+ rows_where:='the_geom && (SELECT st_buffer(the_geom, 0.05) FROM edge_table WHERE id=5)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q8.1
--q9
-OK
+CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5, 2.5) AS other_geom);
+SELECT 1
+SELECT pgr_createTopology('edge_table', 0.001,
+ rows_where:='the_geom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q9.1
--q10
+CREATE TABLE mytable AS (SELECT id AS gid, the_geom AS mygeom, source AS src , target AS tgt FROM edge_table) ;
+SELECT 18
--q10.1
--q11
-OK
+SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt', clean := TRUE);
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q11.1
+DROP TABLE mytable_vertices_pgr;
+DROP TABLE
+UPDATE mytable SET src = NULL, tgt = NULL;
+UPDATE 18
+SET client_min_messages TO NOTICE;
+SET
--q12
+SELECT pgr_createTopology('mytable', 0.001, 'gid', 'mygeom', 'src', 'tgt');
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('mytable', 0.001, 'gid', 'mygeom', 'src', 'tgt', rows_where := 'true', clean := f)
NOTICE: Performing checks, please wait .....
NOTICE: ----> PGR ERROR in pgr_createTopology: Wrong type of Column id:mygeom
NOTICE: Unexpected error raise_exception
-FAIL
+ pgr_createtopology
+--------------------
+ FAIL
+(1 row)
+
--q12.1
+SET client_min_messages TO WARNING;
+SET
--q13
-OK
+SELECT pgr_createTopology('mytable', 0.001, the_geom:='mygeom', id:='gid', source:='src', target:='tgt');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q13.1
+DROP TABLE mytable_vertices_pgr;
+DROP TABLE
+UPDATE mytable SET src = NULL, tgt = NULL;
+UPDATE 18
--q14
-OK
+SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q14.1
--q15
-OK
-OK
-OK
-OK
+SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt', rows_where:='gid < 10');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom', rows_where:='gid < 10');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom, 1) FROM mytable WHERE gid=5)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(mygeom, 1) FROM mytable WHERE gid=5)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q15.1
--q16
-OK
-OK
+SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt',
+ rows_where:='mygeom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom',
+ rows_where:='mygeom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q16.1
+SET client_min_messages TO NOTICE;
+SET
--q17
+SELECT pgr_createTopology('edge_table', 0.001, rows_where:='id < 6', clean := true);
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'id < 6', clean := t)
NOTICE: Performing checks, please wait .....
@@ -84,7 +236,12 @@ NOTICE: -------------> TOPOLOGY CREATED FOR 5 edges
NOTICE: Rows with NULL geometry or NULL id: 0
NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
NOTICE: ----------------------------------------------
-OK
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_createTopology('edge_table', 0.001);
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
NOTICE: Performing checks, please wait .....
@@ -93,5 +250,13 @@ NOTICE: -------------> TOPOLOGY CREATED FOR 13 edges
NOTICE: Rows with NULL geometry or NULL id: 0
NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
NOTICE: ----------------------------------------------
-OK
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
--q17.1
+SET client_min_messages TO NOTICE;
+SET
+ROLLBACK;
+ROLLBACK
diff --git a/src/topology/test/doc-pgr_createTopology.test.sql b/src/topology/test/doc-pgr_createTopology.test.sql
index b7db2d2..91d5fd3 100644
--- a/src/topology/test/doc-pgr_createTopology.test.sql
+++ b/src/topology/test/doc-pgr_createTopology.test.sql
@@ -94,16 +94,16 @@ SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='
\echo --q15
SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt', rows_where:='gid < 10');
SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom', rows_where:='gid < 10');
-SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt',
+SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt',
rows_where:='mygeom && (SELECT st_buffer(mygeom, 1) FROM mytable WHERE gid=5)');
-SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom',
+SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom',
rows_where:='mygeom && (SELECT st_buffer(mygeom, 1) FROM mytable WHERE gid=5)');
\echo --q15.1
\echo --q16
-SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt',
+SELECT pgr_createTopology('mytable', 0.001, 'mygeom', 'gid', 'src', 'tgt',
rows_where:='mygeom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
-SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom',
+SELECT pgr_createTopology('mytable', 0.001, source:='src', id:='gid', target:='tgt', the_geom:='mygeom',
rows_where:='mygeom && (SELECT st_buffer(other_geom, 1) FROM otherTable WHERE gid=100)');
\echo --q16.1
diff --git a/src/topology/test/issue900.result b/src/topology/test/issue900.result
index b2b70d7..f9550c0 100644
--- a/src/topology/test/issue900.result
+++ b/src/topology/test/issue900.result
@@ -1,3 +1,13 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+ALTER TABLE edge_table RENAME TO mbta_arc;
+ALTER TABLE
+CREATE TABLE edge_table AS SELECT * FROM mbta_arc;
+SELECT 18
+;
+SELECT pgr_CreateTopology('edge_table', 0.001, 'the_geom', 'id', clean := true);
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := t)
NOTICE: Performing checks, please wait .....
@@ -6,4 +16,10 @@ NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
NOTICE: Rows with NULL geometry or NULL id: 0
NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
NOTICE: ----------------------------------------------
+ pgr_createtopology
+--------------------
OK
+(1 row)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/topology/test/nodeNetwork-any.result b/src/topology/test/nodeNetwork-any.result
index 8250259..dc96f0f 100644
--- a/src/topology/test/nodeNetwork-any.result
+++ b/src/topology/test/nodeNetwork-any.result
@@ -1,3 +1,8 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT pgr_createTopology('edge_table', 0.001, clean := TRUE);
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := t)
NOTICE: Performing checks, please wait .....
@@ -6,7 +11,12 @@ NOTICE: -------------> TOPOLOGY CREATED FOR 18 edges
NOTICE: Rows with NULL geometry or NULL id: 0
NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
NOTICE: ----------------------------------------------
-OK
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzegraph('edge_table', 0.001);
NOTICE: PROCESSING:
NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
NOTICE: Performing checks, please wait ...
@@ -21,7 +31,12 @@ NOTICE: Dead ends: 7
NOTICE: Potential gaps found near dead ends: 1
NOTICE: Intersections detected: 1
NOTICE: Ring geometries: 0
-OK
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_nodeNetwork('edge_table', 0.001);
NOTICE: PROCESSING:
NOTICE: pgr_nodeNetwork('edge_table', 0.001, 'id', 'the_geom', 'noded', '<NULL>', f)
NOTICE: Performing checks, please wait .....
@@ -34,28 +49,38 @@ NOTICE: Untouched Edges: 15
NOTICE: Total New segments: 21
NOTICE: New Table: public.edge_table_noded
NOTICE: ----------------------------------
-OK
-1|1
-2|1
-3|1
-4|1
-5|1
-6|1
-7|1
-8|1
-9|1
-10|1
-11|1
-12|1
-13|1
-13|2
-14|1
-14|2
-15|1
-16|1
-17|1
-18|1
-18|2
+ pgr_nodenetwork
+-----------------
+ OK
+(1 row)
+
+SELECT old_id,sub_id FROM edge_table_noded ORDER BY old_id,sub_id;
+ old_id | sub_id
+--------+--------
+ 1 | 1
+ 2 | 1
+ 3 | 1
+ 4 | 1
+ 5 | 1
+ 6 | 1
+ 7 | 1
+ 8 | 1
+ 9 | 1
+ 10 | 1
+ 11 | 1
+ 12 | 1
+ 13 | 1
+ 13 | 2
+ 14 | 1
+ 14 | 2
+ 15 | 1
+ 16 | 1
+ 17 | 1
+ 18 | 1
+ 18 | 2
+(21 rows)
+
+SELECT pgr_createTopology('edge_table_noded', 0.001);
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('edge_table_noded', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
NOTICE: Performing checks, please wait .....
@@ -64,7 +89,12 @@ NOTICE: -------------> TOPOLOGY CREATED FOR 21 edges
NOTICE: Rows with NULL geometry or NULL id: 0
NOTICE: Vertices table for table public.edge_table_noded is: public.edge_table_noded_vertices_pgr
NOTICE: ----------------------------------------------
-OK
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzegraph('edge_table_noded', 0.001);
NOTICE: PROCESSING:
NOTICE: pgr_analyzeGraph('edge_table_noded',0.001,'the_geom','id','source','target','true')
NOTICE: Performing checks, please wait ...
@@ -79,8 +109,24 @@ NOTICE: Dead ends: 6
NOTICE: Potential gaps found near dead ends: 0
NOTICE: Intersections detected: 0
NOTICE: Ring geometries: 0
-OK
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+alter table edge_table drop column if exists old_id;
NOTICE: column "old_id" of relation "edge_table" does not exist, skipping
+ALTER TABLE
+alter table edge_table add column old_id integer;
+ALTER TABLE
+insert into edge_table (old_id,dir,cost,reverse_cost,the_geom)
+ (with
+ segmented as (select old_id,count(*) as i from edge_table_noded group by old_id)
+ select segments.old_id,dir,cost,reverse_cost,segments.the_geom
+ from edge_table as edges join edge_table_noded as segments on (edges.id = segments.old_id)
+ where edges.id in (select old_id from segmented where i>1) );
+INSERT 0 6
+SELECT pgr_createTopology('edge_table', 0.001);
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('edge_table', 0.001, 'the_geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
NOTICE: Performing checks, please wait .....
@@ -89,7 +135,12 @@ NOTICE: -------------> TOPOLOGY CREATED FOR 6 edges
NOTICE: Rows with NULL geometry or NULL id: 0
NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
NOTICE: ----------------------------------------------
-OK
+ pgr_createtopology
+--------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzegraph('edge_table', 0.001,rows_where:='id not in (select old_id from edge_table where old_id is not null)');
NOTICE: PROCESSING:
NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','id not in (select old_id from edge_table where old_id is not null)')
NOTICE: Performing checks, please wait ...
@@ -104,7 +155,12 @@ NOTICE: Dead ends: 6
NOTICE: Potential gaps found near dead ends: 0
NOTICE: Intersections detected: 0
NOTICE: Ring geometries: 0
-OK
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzegraph('edge_table', 0.001,rows_where:='old_id is null');
NOTICE: PROCESSING:
NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','old_id is null')
NOTICE: Performing checks, please wait ...
@@ -119,7 +175,12 @@ NOTICE: Dead ends: 7
NOTICE: Potential gaps found near dead ends: 1
NOTICE: Intersections detected: 1
NOTICE: Ring geometries: 0
-OK
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+SELECT pgr_analyzegraph('edge_table', 0.001);
NOTICE: PROCESSING:
NOTICE: pgr_analyzeGraph('edge_table',0.001,'the_geom','id','source','target','true')
NOTICE: Performing checks, please wait ...
@@ -134,4 +195,10 @@ NOTICE: Dead ends: 3
NOTICE: Potential gaps found near dead ends: 0
NOTICE: Intersections detected: 5
NOTICE: Ring geometries: 0
-OK
+ pgr_analyzegraph
+------------------
+ OK
+(1 row)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/trsp/doc/README.md b/src/trsp/doc/README.md
deleted file mode 100644
index c2a6c5a..0000000
--- a/src/trsp/doc/README.md
+++ /dev/null
@@ -1,1112 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
-ROLLBACK;
-ROLLBACK
-# Notes on pgr_trsp for version 2.4.0
-Table of contents
-* [Introduction](#introduction)
- * [The restriction](#the-restriction)
-* [The Vertices Signature Version](#the-vertices-signature-version)
- * [No path representation differences](#vertices-no-path-representation-differences)
- * [Routing from/to same location](#routing-fromto-same-location)
- * [Undirected graph](#vertices-undirected-graph)
-* [The Edges Signature Version](#the-edges-signature-version)
- * [No path representation differences](#edges-no-path-representation-differences)
- * [Definition of a path](#definition-of-a-path)
- * [Points on the same edge](#points-on-the-same-edge)
- * [Undirected graph](#edges-undirected-graph)
- * [Using a points of interest table](#using-a-points-of-interest-table)
- * [Routing from/to the same point](#routing-fromto-the-same-point)
- * [Passing in front of other points](#passing-in-front-of-other-points)
- * [Routing from a vertex to a point](#edges-routing-from-a-vertex-to-a-point)
-* [pgr_trspViaVertices](#pgr_trspviavertices)
- * [pgr_trspViaVertices No path representation differences](#pgr_trspviavertices-no-path-representation-differences)
- * [when a path does not exist on the route](#when-a-path-does-not-exist-on-the-route)
- * [from 2 to 3 to 2](#from-2-to-3-to-2)
-* [pgr_trspViaEdges](#pgr_trspviaedges)
- * [pgr_trspViaEdges No path representation differences](#pgr_trspviaedges-no-path-representation-differences)
- * [Using a points of interest table](#pgr_trspviaedges-using-the-pointsofinterest-table)
-
-# Introduction
-pgr_trsp code has issues that are not being fixed yet, but as time passes and new functionality is added to pgRouting with wrappers to **hide** the issues, not to fix them.
-
-For clarity on the queries:
-* _pgr_trsp (with underscore) is the original code
-* pgr_trsp (lower case) represents the wrapper calling the original code
-* pgr_TRSP (upper case) represents the wrapper calling the replacement function, depending on the function, it can be:
- * pgr_dijkstra
- * pgr_dijkstraVia
- * pgr_withPoints
- * _pgr_withPointsVia
-
-This page intentions is to compare the original code with the wrapped version of the trsp group of functions.
-## The restriction
-The restriction used in the examples does not have to do anything with the graph:
-* No vertex has id: 25, 32 or 33
-* No edge has id: 25, 32 or 33
-```
-$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, 32, 33::TEXT AS via_path$$
-```
-therefore the shortest path expected are as if there was no restriction involved
-# The Vertices signature version
-## (Vertices) No path representation differences
-Original function code
-* Sometimes it crasses the server when no path was found
-* Sometimes represents with Error a no path found
-* Forcing the user to use the wrapper or the replacement function
-
-Calls to the original function of is no longer allowed without restrictions
-```
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 15, true, true
-);
-ERROR: Error computing path: Path Not Found
-```
-dijkstra returns EMPTY SET to represent no path found
-```
-SELECT * FROM pgr_dijkstra(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 15
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
-(0 rows)
-
-```
-pgr_trsp use the pgr_dijkstra when there are no restrictions
-therefore returns EMPTY SET to represent no path found
-```
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 15, true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
-(0 rows)
-
-```
-pgr_trsp use the original code when there are restrictions
-therefore throws Error to represent no path found
-```
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 15, true, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-ERROR: Error computing path: Path Not Found
-CONTEXT: PL/pgSQL function pgr_trsp(text,integer,integer,boolean,boolean,text) line 29 at RETURN QUERY
-```
-## routing from/to same location
-using dijkstra to verify (1 to 1)
-```
-SELECT * FROM pgr_dijkstra(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 1
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
-(0 rows)
-
-```
-This call uses the replacement function because there are no restrictions (1 to 1)
-therefore is expected to return EMPTY SET to represent no path found
-```
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 1, true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
-(0 rows)
-
-```
-call forcing the use of the original code (1 to 1)
-* not longer allowed without restrictions
-
-```
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 1, true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 1 | 1 | 1
- 1 | 2 | 4 | 1
- 2 | 5 | 8 | 1
- 3 | 6 | 9 | 1
- 4 | 9 | 16 | 1
- 5 | 4 | 3 | 1
- 6 | 3 | 2 | 1
- 7 | 2 | 1 | 1
- 8 | 1 | -1 | 0
-(9 rows)
-
-```
-trsp with restrictions (1 to 1) use the original code
-is expected to return Error to represent no path found
-```
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 1,
- true,
- true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 1 | 1 | 1
- 1 | 2 | 4 | 1
- 2 | 5 | 8 | 1
- 3 | 6 | 9 | 1
- 4 | 9 | 16 | 1
- 5 | 4 | 3 | 1
- 6 | 3 | 2 | 1
- 7 | 2 | 1 | 1
- 8 | 1 | -1 | 0
-(9 rows)
-
-```
-trsp calling the original code with restrictions (1 to 1)
-is expected to return Error to represent no path found
-but "finds" a path when there should be no path.
-```
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 1,
- true,
- true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 1 | 1 | 1
- 1 | 2 | 4 | 1
- 2 | 5 | 8 | 1
- 3 | 6 | 9 | 1
- 4 | 9 | 16 | 1
- 5 | 4 | 3 | 1
- 6 | 3 | 2 | 1
- 7 | 2 | 1 | 1
- 8 | 1 | -1 | 0
-(9 rows)
-
-```
-## (vertices) Undirected graph
-using Dijkstra to verify the shortest path from (2 to 3) on undirected graph
-```
-SELECT * FROM pgr_dijkstra(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 2, 3, false
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 2 | 2 | 1 | 0
- 2 | 2 | 3 | -1 | 0 | 1
-(2 rows)
-
-```
-using the replacement function because there are no restrictions (2 to 3)
-```
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 2, 3,
- false,
- true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 2 | 1
- 1 | 3 | -1 | 0
-(2 rows)
-
-```
-call forcing the use of the original code
-* not longer allowed without restrictions
-
-```
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 2, 3,
- false, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 4 | 1
- 1 | 5 | 8 | 1
- 2 | 6 | 9 | 1
- 3 | 9 | 16 | 1
- 4 | 4 | 3 | 1
- 5 | 3 | -1 | 0
-(6 rows)
-
-```
-trsp with restrictions (2 to 3)
-does not find the shortest path
-```
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 2, 3,
- false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 4 | 1
- 1 | 5 | 8 | 1
- 2 | 6 | 9 | 1
- 3 | 9 | 16 | 1
- 4 | 4 | 3 | 1
- 5 | 3 | -1 | 0
-(6 rows)
-
-```
-calling the original code with restrictions (2 to 3)
-does not find the shortest path
-```
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 2, 3,
- false,
- true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | 2 | 4 | 1
- 1 | 5 | 8 | 1
- 2 | 6 | 9 | 1
- 3 | 9 | 16 | 1
- 4 | 4 | 3 | 1
- 5 | 3 | -1 | 0
-(6 rows)
-
-```
-# The Edges signature version
-## (Edges) No path representation differences
-Original function code
-* Sometimes it crasses the server when no path was found
-* Sometimes represents with Error a no path found
-* Forcing the user to use the wrapper or the replacement function
-
-Calls to the original function of is no longer allowed without restrictions
-```
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 17, 0.5, true, true
-);
-ERROR: Error computing path: Path Not Found
-```
-pgr_withPoints returns EMPTY SET to represent no path found
-```
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
- UNION
- (SELECT 2, 17, 0.5)$$,
- -1, -2
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
-(0 rows)
-
-```
-## Definition of a path
-Remember that one characteristic of a path is that for a path of N edges it has N+1 vertices.
-
-For this example, suppose points, where the pid are different even if the edge and fraction are different.
-One point might be on the left side other on the right side, pgr_trsp does not take into account
-the side of the point
-calls forcing the use of the original code
-* not longer allowed without restrictions
-
-```
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.5, true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 1 | 0
-(1 row)
-
-```
-* with restrictions
-```
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.5, true, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 1 | 0
-(1 row)
-
-```
-Using the *pgr_withPoints* it returns a path of N edge and N+1 vertices
-```
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
- UNION
- (SELECT 2, 1, 0.5)$$,
- -1, -2
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | -1 | 1 | 0 | 0
- 2 | 2 | -2 | -1 | 0 | 0
-(2 rows)
-
-```
-The *pgr_withPoints* is used when there are no restrictions
-```
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.5, true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 1 | 0
- 1 | -2 | -1 | 0
-(2 rows)
-
-```
-The original *_pgr_trsp* code is used when there are restrictions
-```
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.5, true, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 1 | 0
-(1 row)
-
-```
-note that pgr_withPoints returns an EMPTY SET when the point is the same
-```
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
- UNION
- (SELECT 2, 1, 0.5)$$,
- -1, -1
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
-(0 rows)
-
-```
-## Points on the same edge
-The *pgr_withPoints* is used when there are no restrictions
-* it returns a path of N edges and N+1 vertices
-```
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.8, true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 1 | 0.3
- 1 | -2 | -1 | 0
-(2 rows)
-
-```
-The original *_pgr_trsp* is used when there are restrictions
-* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
-```
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.8, true, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 1 | 0.3
-(1 row)
-
-```
-## (Edges) Undirected graph
-the shortest path obtained with *pgr_withPoints*
-```
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$(SELECT 1 as pid, 4 as edge_id, 0.5::float as fraction)
- UNION
- (SELECT 2, 2, 0.8)$$,
- -1, -2, directed:=false
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | -1 | 4 | 0.5 | 0
- 2 | 2 | 2 | 2 | 0.8 | 0.5
- 3 | 3 | -2 | -1 | 0 | 1.3
-(3 rows)
-
-```
-The original *_pgr_trsp* is used when there are restrictions
-
-```
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 4, 0.5, 2, 0.8, false, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 4 | 0.5
- 1 | 2 | 2 | 0.8
- 2 | -2 | -1 | 0
-(3 rows)
-
-```
-when using restrictions the original *_pgr_trsp* is used internally
-* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
-* it does not return the shortest path.
-
-```
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 4, 0.5, 2, 0.8, false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 4 | 0.5
- 1 | 5 | 8 | 1
- 2 | 6 | 9 | 1
- 3 | 9 | 16 | 1
- 4 | 4 | 3 | 1
- 5 | 3 | 2 | 0.2
-(6 rows)
-
-```
-## Using a points of interest table
-The points of interest
-```
-SELECT * FROM pointsOfInterest;
- pid | x | y | edge_id | side | fraction | the_geom | newpoint
------+-----+-----+---------+------+----------+--------------------------------------------+--------------------------------------------
- 1 | 1.8 | 0.4 | 1 | l | 0.4 | 0101000000CDCCCCCCCCCCFC3F9A9999999999D93F | 010100000000000000000000409A9999999999D93F
- 2 | 4.2 | 2.4 | 15 | r | 0.4 | 0101000000CDCCCCCCCCCC10403333333333330340 | 010100000000000000000010403333333333330340
- 3 | 2.6 | 3.2 | 12 | l | 0.6 | 0101000000CDCCCCCCCCCC04409A99999999990940 | 0101000000CDCCCCCCCCCC04400000000000000840
- 4 | 0.3 | 1.8 | 6 | r | 0.3 | 0101000000333333333333D33FCDCCCCCCCCCCFC3F | 0101000000333333333333D33F0000000000000040
- 5 | 2.9 | 1.8 | 5 | l | 0.8 | 01010000003333333333330740CDCCCCCCCCCCFC3F | 01010000000000000000000840CDCCCCCCCCCCFC3F
- 6 | 2.2 | 1.7 | 4 | b | 0.7 | 01010000009A99999999990140333333333333FB3F | 01010000000000000000000040333333333333FB3F
-(6 rows)
-
-```
-On *pgr_trsp*, to be able to use the table information:
-* Each parameter has to be extracted explicitly from the table
-* Regardles of the point pid original value
- * will always be -1 for the first point
- * will always be -2 for the second point
-```
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 6),
- true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 1 | 0.6
- 1 | 2 | 4 | 0.7
- 2 | -2 | -1 | 0
-(3 rows)
-
-```
-On *pgr_withPoints*, to be able to use the table information:
-* select statement on the *pointsOfInterest* table
-* *Negative* the id to represent the id is a pid
-* The points pids in the result are not renumbered
-* The points pids in the result are represented with negative sign
-```
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
- -1, -6
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | -1 | 1 | 0.6 | 0
- 2 | 2 | 2 | 4 | 0.7 | 0.6
- 3 | 3 | -6 | -1 | 0 | 1.3
-(3 rows)
-
-```
-## routing from/to the same point
-using pgr_withPoints to check results
-expecting EMPTY SET to represent no path found
-```
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
- -1, -1
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
-(0 rows)
-
-```
-This call uses the replacement function because there are no restrictions
-* Because the pid is not involved the points are considered different
-* it returns a path
-
-```
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 1 | 0
- 1 | -2 | -1 | 0
-(2 rows)
-
-```
-pgr_trsp with restrictions use the original code
-* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
-
-```
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- true, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 1 | 0
-(1 row)
-
-```
-## passing in front of other points
-using pgr_withPoints to verify the shortest path from pids (1 to 3)
-```
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
- -1, -3
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | -1 | 1 | 0.6 | 0
- 2 | 2 | 2 | 4 | 1 | 0.6
- 3 | 3 | 5 | 10 | 1 | 1.6
- 4 | 4 | 10 | 12 | 0.6 | 2.6
- 5 | 5 | -3 | -1 | 0 | 3.2
-(5 rows)
-
-```
-**pgr_withPoints** can be used to see when the route passes in front of other points
-In this example point pid=6 is passed in front of
-```
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
- -1, -3, details:=true
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | -1 | 1 | 0.6 | 0
- 2 | 2 | 2 | 4 | 0.7 | 0.6
- 3 | 3 | -6 | 4 | 0.3 | 1.3
- 4 | 4 | 5 | 10 | 1 | 1.6
- 5 | 5 | 10 | 12 | 0.6 | 2.6
- 6 | 6 | -3 | -1 | 0 | 3.2
-(6 rows)
-
-```
-Can not be used to see if other points are passed in front of.
-The pointsOfInterest table is not part of the parameter
-```
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
- true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
- 0 | -1 | 1 | 0.6
- 1 | 2 | 4 | 1
- 2 | 5 | 10 | 1
- 3 | 10 | 12 | 0.6
- 4 | -2 | -1 | 0
-(5 rows)
-
-```
-## (edges) Routing from a vertex to a point
-Showing *pgr_withPoints* results of the shortest path from vid 6 to pid 1
-```
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
- 6, -1
-);
- seq | path_seq | node | edge | cost | agg_cost
------+----------+------+------+------+----------
- 1 | 1 | 6 | 8 | 1 | 0
- 2 | 2 | 5 | 4 | 1 | 1
- 3 | 3 | 2 | 1 | 0.6 | 2
- 4 | 4 | -1 | -1 | 0 | 2.6
-(4 rows)
-
-```
-* Vertex 6 is on edge 8 at 1 fraction
-* Vertex 6 is also edge 11 at 0 fraction
-* Undefined behaviour when at least one of the "points" is an actual vertex
-
-```
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 8, 1,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
-(0 rows)
-
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 11, 0,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- true, true
-);
- seq | id1 | id2 | cost
------+-----+-----+------
-(0 rows)
-
-```
-# pgr_trspViaVertices
-## pgr_trspViaVertices No path representation differences
-pgr_trspViaVertices uses _pgr_trsp which as mentioned before
-* Sometimes it crasses the server when no path was found
-* Sometimes represents with Error a no path found
-* Forcing the user to use the wrapper or the replacement function
-
-Calls to the original function of is no longer allowed without restrictions
-```
-SELECT * FROM _pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 15, 2],
- false, true
-);
-ERROR: Error computing path: Path Not Found
-CONTEXT: PL/pgSQL function _pgr_trspviavertices(text,integer[],boolean,boolean,text) line 23 at FOR over SELECT rows
-SELECT * FROM _pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 15, 2, 1],
- false, true
-);
-ERROR: Error computing path: Path Not Found
-CONTEXT: PL/pgSQL function _pgr_trspviavertices(text,integer[],boolean,boolean,text) line 23 at FOR over SELECT rows
-```
-**pgr_dijkstraVia** returning what paths of the route it finds or EMPTY SET when non is found
-this case none is found
-```
-SELECT * FROM pgr_dijkstraVia(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 15, 2],
- false
-);
- seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
------+---------+----------+-----------+---------+------+------+------+----------+----------------
-(0 rows)
-
-```
-this case only from 2 to 1 is found
-```
-SELECT * FROM pgr_dijkstraVia(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 15, 2, 1],
- false
-);
- seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
------+---------+----------+-----------+---------+------+------+------+----------+----------------
- 1 | 3 | 1 | 2 | 1 | 2 | 1 | 1 | 0 | 0
- 2 | 3 | 2 | 2 | 1 | 1 | -2 | 0 | 1 | 1
-(2 rows)
-
-```
-the **pgr_dijkstraVia** used are for complete routes so its marked as **strict:=true**
-therefore the expected result is EMPTY SET to represent no route was found
-```
-SELECT * FROM pgr_dijkstraVia(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 1, 2],
- false,
- strict := true
-);
- seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
------+---------+----------+-----------+---------+------+------+------+----------+----------------
-(0 rows)
-
-```
-## when a path does not exist on the route
-pgr_TRSPViaVertices using the *pgr_dijkstraVia* when there are no restrictions.
-Because there is no path from 1 to 1 then there is no complete route 1 to 1 to 2
-therefore the expected result is EMPTY SET to represent no route was found
-```
-SELECT * FROM pgr_TRSPViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 1, 2],
- false, true
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
-(0 rows)
-
-```
-Calls to the original function of is no longer allowed without restrictions
-```
-SELECT * FROM _pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 1, 2],
- false, true
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 1 | 1 | 1 | 1 | 1
- 2 | 1 | 2 | 4 | 1
- 3 | 1 | 5 | 8 | 1
- 4 | 1 | 6 | 9 | 1
- 5 | 1 | 9 | 16 | 1
- 6 | 1 | 4 | 3 | 1
- 7 | 1 | 3 | 2 | 1
- 8 | 1 | 2 | 1 | 1
- 9 | 2 | 1 | 1 | 1
- 10 | 2 | 2 | -1 | 0
-(10 rows)
-
-```
-with restrictions the original code is used
-```
-SELECT * FROM pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 1, 2],
- false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 1 | 1 | 1 | 1 | 1
- 2 | 1 | 2 | 4 | 1
- 3 | 1 | 5 | 8 | 1
- 4 | 1 | 6 | 9 | 1
- 5 | 1 | 9 | 16 | 1
- 6 | 1 | 4 | 3 | 1
- 7 | 1 | 3 | 2 | 1
- 8 | 1 | 2 | 1 | 1
- 9 | 2 | 1 | 1 | 1
- 10 | 2 | 2 | -1 | 0
-(10 rows)
-
-```
-Using explicitly the original code
-```
-SELECT * FROM _pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 1, 2],
- false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 1 | 1 | 1 | 1 | 1
- 2 | 1 | 2 | 4 | 1
- 3 | 1 | 5 | 8 | 1
- 4 | 1 | 6 | 9 | 1
- 5 | 1 | 9 | 16 | 1
- 6 | 1 | 4 | 3 | 1
- 7 | 1 | 3 | 2 | 1
- 8 | 1 | 2 | 1 | 1
- 9 | 2 | 1 | 1 | 1
- 10 | 2 | 2 | -1 | 0
-(10 rows)
-
-```
-## from 2 to 3 to 2
-dijkstra via shows the shortest route on the two paths
-```
-SELECT * FROM pgr_dijkstraVia(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[2, 3, 2],
- false
-);
- seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
------+---------+----------+-----------+---------+------+------+------+----------+----------------
- 1 | 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0 | 0
- 2 | 1 | 2 | 2 | 3 | 3 | -1 | 0 | 1 | 1
- 3 | 2 | 1 | 3 | 2 | 3 | 2 | 1 | 0 | 1
- 4 | 2 | 2 | 3 | 2 | 2 | -2 | 0 | 1 | 2
-(4 rows)
-
-```
-the replacement function **pgr_dijkstraVia** is used because there are no restrictions
-```
-SELECT * FROM pgr_TRSPViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[2, 3, 2],
- false,
- true
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 1 | 1 | 2 | 2 | 1
- 2 | 2 | 3 | 2 | 1
- 3 | 2 | 2 | -1 | 0
-(3 rows)
-
-```
-Calls to the original function of is no longer allowed without restrictions
-```
-SELECT * FROM _pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[2, 3, 2],
- false,
- true
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 1 | 1 | 2 | 4 | 1
- 2 | 1 | 5 | 8 | 1
- 3 | 1 | 6 | 9 | 1
- 4 | 1 | 9 | 16 | 1
- 5 | 1 | 4 | 3 | 1
- 6 | 2 | 3 | 2 | 1
- 7 | 2 | 2 | -1 | 0
-(7 rows)
-
-```
-# pgr_trspViaEdges
-*pgr_trspViaEdges* will use the original code when
-* There are restrictions
-* A point is a vertex in disguise (with pcts value of 0)
-
-What it returns
-* Error to represent no route
-* the points are renumbered to -1, -2 .. -N
-* if a point is part of a path it will **not** show on the path
-
-Exaple execution
-```
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
- false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 1 | 1 | -1 | 1 | 0.9
- 2 | 1 | 2 | 4 | 1
- 3 | 1 | 5 | 8 | 1
- 4 | 1 | 6 | 9 | 1
- 5 | 1 | 9 | 16 | 1
- 6 | 1 | 4 | 3 | 1
- 7 | 1 | 3 | 2 | 1
- 8 | 2 | 2 | 1 | 0.5
-(8 rows)
-
-```
-A temporay wraper function is used when:
-* There are no restrictions
-* Before: No point is a vertex in disguise (with pcts value of 0)
-* Now: c$Undefined behaviour when a point is a vertex in disguise (with pcts value of 0)
-
-Internaly:
-* builds a new graph and calls pgr_dijkstraVia
-
-What it returns
-* returns EMPTY SET to represent no route
-* edge = -1 in the result to represent the end of a intermediate path
-* edge = -2 in the result to represent the end of the last path & route
-* the points are renumbered to -1, -2 .. -N
-* if a point is part of a path it will show on the path
-
-Note: I do not mention the wrapper name due to the fact that this is not official documentation
-Note: I will use *_pgr_withPointsVia* as the wrapper name just for sake of this notes
-Example excution
-```
-SELECT * FROM _pgr_withPointsVia(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
- directed := false
-);
- seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
------+---------+----------+-----------+---------+------+------+------+----------+----------------
- 1 | 1 | 1 | -1 | -2 | -1 | 1 | 0.1 | 0 | 0
- 2 | 1 | 2 | -1 | -2 | 2 | 2 | 0.5 | 0.1 | 0.1
- 3 | 1 | 3 | -1 | -2 | -2 | -1 | 0 | 0.6 | 0.6
- 4 | 2 | 1 | -2 | -3 | -2 | 2 | 0.5 | 0 | 0.6
- 5 | 2 | 2 | -2 | -3 | 2 | 1 | 0.5 | 0.5 | 1.1
- 6 | 2 | 3 | -2 | -3 | -3 | -2 | 0 | 1 | 1.6
-(6 rows)
-
-```
-## pgr_trspViaEdges No path representation differences
-This example no path is found (edge 17 is disconnected) from the big graph.
-* There is a vertex in disguise (fraction 0 or 1)
-* Undefined behaviour
-
-```
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 17, 1], ARRAY[0,0.5,0.5],
- false, true
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 1 | | | |
-(1 row)
-
-```
-This example no path is found (edge 17 is disconnected) from the big graph.
-* Has a restriction
-* *pgr_trspViaEdges* original code is used
-* throws error to represent no route was not found
-
-```
-SELECT * FROM pgr_trspViaEdges(
-$$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
-ARRAY[1, 17, 1], ARRAY[0.5,0.5,0.5],
-false, true,
-$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, 32, 33::TEXT AS via_path$$
-);
-server closed the connection unexpectedly
-This probably means the server terminated abnormally
-before or while processing the request.
-The connection to the server was lost. Attempting reset: Failed.
-```
-This example no path is found (edge 17 is disconnected) from the big graph.
-* *_pgr_withPointsVia* is used
-* returns EMPTY SET to represent no route
-
-```
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 17, 1], ARRAY[0.1,0.5,0.5],
- false,
- true
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
-(0 rows)
-
-```
-## (pgr_trspViaEdges) Using the pointsOfInterest table
-Only routing points
-when *_pgr_withPointsVia* is used
-* the renumbering still takes place
-
-```
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
- ARRAY[
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
- false,
- true
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 1 | 1 | -1 | 1 | 0.4
- 2 | 1 | 2 | 4 | 0.3
- 3 | 1 | -3 | 4 | 0.3
- 4 | 1 | 5 | 10 | 1
- 5 | 1 | 10 | 12 | 0.6
- 6 | 1 | -2 | -1 | 0
- 7 | 2 | -2 | 12 | 0.6
- 8 | 2 | 10 | 10 | 1
- 9 | 2 | 5 | 4 | 0.3
- 10 | 2 | -3 | -2 | 0
-(10 rows)
-
-```
-Only routing points
-when originalcode is used (because there is a restriction)
-
-```
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
- ARRAY[
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
- false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 1 | 1 | -1 | 1 | 0.6
- 2 | 1 | 2 | 4 | 1
- 3 | 1 | 5 | 10 | 1
- 4 | 1 | 10 | 12 | 1
- 5 | 2 | 11 | 13 | 1
- 6 | 2 | 12 | 15 | 1
- 7 | 2 | 9 | 9 | 1
- 8 | 2 | 6 | 8 | 1
- 9 | 2 | 5 | 4 | 0.3
-(9 rows)
-
-```
-Routing points & vertices
-* vertex 6 is on edge 11 with fraction 0
-* Undefined behavior
-```
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
- 11],
- ARRAY[
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
- 0],
- false,
- true
-);
- seq | id1 | id2 | id3 | cost
------+-----+-----+-----+------
- 1 | 1 | -1 | 1 | 0.6
- 2 | 1 | 2 | 4 | 1
- 3 | 1 | 5 | 10 | 1
- 4 | 1 | 10 | 12 | 0.6
- 5 | 1 | -2 | -1 | 0
-(5 rows)
-
-```
-BEGIN;
-BEGIN
-ROLLBACK;
-ROLLBACK
diff --git a/src/trsp/doc/pgr_trsp.rst b/src/trsp/doc/pgr_trsp.rst
deleted file mode 100644
index 3d6a97a..0000000
--- a/src/trsp/doc/pgr_trsp.rst
+++ /dev/null
@@ -1,204 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _trsp:
-
-pgr_trsp - Turn Restriction Shortest Path (TRSP)
-===============================================================================
-
-.. index::
- single: trsp(text,integer,integer,boolean,boolean)
- single: trsp(text,integer,integer,boolean,boolean,text)
- single: trspViaVertices(text,integer,double precision,integer,double precision,boolean,boolean)
- single: trspViaEdges(text,integer,double precision,integer,double precision,boolean,boolean,text)
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_trsp`` — Returns the shortest path with support for turn restrictions.
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-The turn restricted shorthest path (TRSP) is a shortest path algorithm that can optionally take into account complicated turn restrictions like those found in real world navigable road networks. Performamnce wise it is nearly as fast as the A* search but has many additional features like it works with edges rather than the nodes of the network. Returns a set of :ref:`pgr_costResult <type_cost_result>` (seq, id1, id2, cost) rows, that make up a path.
-
-.. code-block:: sql
-
- pgr_costResult[] pgr_trsp(sql text, source integer, target integer,
- directed boolean, has_rcost boolean [,restrict_sql text]);
-
-
-.. code-block:: sql
-
- pgr_costResult[] pgr_trsp(sql text, source_edge integer, source_pos float8,
- target_edge integer, target_pos float8,
- directed boolean, has_rcost boolean [,restrict_sql text]);
-
-.. code-block:: sql
-
- pgr_costResult3[] pgr_trspViaVertices(sql text, vids integer[],
- directed boolean, has_rcost boolean
- [, turn_restrict_sql text]);
-
-.. code-block:: sql
-
- pgr_costResult3[] pgr_trspViaEdges(sql text, eids integer[], pcts float8[],
- directed boolean, has_rcost boolean
- [, turn_restrict_sql text]);
-
-Description
--------------------------------------------------------------------------------
-
-The Turn Restricted Shortest Path algorithm (TRSP) is similar to the shooting star in that you can specify turn restrictions.
-
-The TRSP setup is mostly the same as :ref:`Dijkstra shortest path <pgr_dijkstra>` with the addition of an optional turn restriction table. This provides an easy way of adding turn restrictions to a road network by placing them in a separate table.
-
-
-:sql: a SQL query, which should return a set of rows with the following columns:
-
- .. code-block:: sql
-
- SELECT id, source, target, cost, [,reverse_cost] FROM edge_table
-
-
- :id: ``int4`` identifier of the edge
- :source: ``int4`` identifier of the source vertex
- :target: ``int4`` identifier of the target vertex
- :cost: ``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph.
- :reverse_cost: (optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs).
-
-:source: ``int4`` **NODE id** of the start point
-:target: ``int4`` **NODE id** of the end point
-:directed: ``true`` if the graph is directed
-:has_rcost: if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction.
-
-:restrict_sql: (optional) a SQL query, which should return a set of rows with the following columns:
-
- .. code-block:: sql
-
- SELECT to_cost, target_id, via_path FROM restrictions
-
- :to_cost: ``float8`` turn restriction cost
- :target_id: ``int4`` target id
- :via_path: ``text`` comma separated list of edges in the reverse order of ``rule``
-
-Another variant of TRSP allows to specify **EDGE id** of source and target together with a fraction to interpolate the position:
-
-:source_edge: ``int4`` **EDGE id** of the start edge
-:source_pos: ``float8`` fraction of 1 defines the position on the start edge
-:target_edge: ``int4`` **EDGE id** of the end edge
-:target_pos: ``float8`` fraction of 1 defines the position on the end edge
-
-Returns set of :ref:`type_cost_result`:
-
-:seq: row sequence
-:id1: node ID
-:id2: edge ID (``-1`` for the last row)
-:cost: cost to traverse from ``id1`` using ``id2``
-
-.. rubric:: History
-
-* New in version 2.0.0
-
-Support for Vias
---------------------------------------------------------------------
-
-.. warning:: The Support for Vias functions are prototypes. Not all corner cases are being considered.
-
-
-We also have support for vias where you can say generate a from A to B to C, etc. We support both methods above only you pass an array of vertices or and array of edges and percentage position along the edge in two arrays.
-
-
-
-:sql: a SQL query, which should return a set of rows with the following columns:
-
- .. code-block:: sql
-
- SELECT id, source, target, cost, [,reverse_cost] FROM edge_table
-
-
- :id: ``int4`` identifier of the edge
- :source: ``int4`` identifier of the source vertex
- :target: ``int4`` identifier of the target vertex
- :cost: ``float8`` value, of the edge traversal cost. A negative cost will prevent the edge from being inserted in the graph.
- :reverse_cost: (optional) the cost for the reverse traversal of the edge. This is only used when the ``directed`` and ``has_rcost`` parameters are ``true`` (see the above remark about negative costs).
-
-:vids: ``int4[]`` An ordered array of **NODE id** the path will go through from start to end.
-:directed: ``true`` if the graph is directed
-:has_rcost: if ``true``, the ``reverse_cost`` column of the SQL generated set of rows will be used for the cost of the traversal of the edge in the opposite direction.
-
-:restrict_sql: (optional) a SQL query, which should return a set of rows with the following columns:
-
- .. code-block:: sql
-
- SELECT to_cost, target_id, via_path FROM restrictions
-
- :to_cost: ``float8`` turn restriction cost
- :target_id: ``int4`` target id
- :via_path: ``text`` commar separated list of edges in the reverse order of ``rule``
-
-Another variant of TRSP allows to specify **EDGE id** together with a fraction to interpolate the position:
-
-:eids: ``int4`` An ordered array of **EDGE id** that the path has to traverse
-:pcts: ``float8`` An array of fractional positions along the respective edges in ``eids``, where 0.0 is the start of the edge and 1.0 is the end of the eadge.
-
-Returns set of :ref:`type_cost_result`:
-
-:seq: row sequence
-:id1: route ID
-:id2: node ID
-:id3: edge ID (``-1`` for the last row)
-:cost: cost to traverse from ``id2`` using ``id3``
-
-
-.. rubric:: History
-
-* Via Support prototypes new in version 2.1.0
-
-Examples
--------------------------------------------------------------------------------
-
-**Without turn restrictions**
-
-.. literalinclude:: doc-trsp.queries
- :start-after: --q1
- :end-before: --q2
-
-
-**With turn restrictions**
-
-Then a query with turn restrictions is created as:
-
-.. literalinclude:: doc-trsp.queries
- :start-after: --q3
- :end-before: --q4
-
-
-An example query using vertex ids and via points:
-
-.. literalinclude:: doc-trsp.queries
- :start-after: --q4
- :end-before: --q5
-
-
-An example query using edge ids and vias:
-
-.. literalinclude:: doc-trsp.queries
- :start-after: --q5
- :end-before: --q6
-
-
-The queries use the :ref:`sampledata` network.
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`type_cost_result`
diff --git a/src/trsp/sql/CMakeLists.txt b/src/trsp/sql/CMakeLists.txt
deleted file mode 100644
index 8316d20..0000000
--- a/src/trsp/sql/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# Append in local scope
-list(APPEND PACKAGE_SQL_FILES
- #${CMAKE_CURRENT_SOURCE_DIR}/routing_trsp.sql
- #${CMAKE_CURRENT_SOURCE_DIR}/routing_trsp_vias.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/trsp_V2.2.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/vias_trsp_V2.2.sql
- )
-
-# set in parent scope
-set(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/trsp/sql/routing_trsp_vias.sql b/src/trsp/sql/routing_trsp_vias.sql
deleted file mode 100644
index 0a8982a..0000000
--- a/src/trsp/sql/routing_trsp_vias.sql
+++ /dev/null
@@ -1,192 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2013 pgRouting developers
-Mail: project at 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*/
-
-create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
- RETURNS SETOF pgr_costresult3 AS
-$body$
-/*
- * pgr_trsp(sql text, vids integer[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
- *
- * Compute TRSP with via points. We compute the path between vids[i] and vids[i+1] and chain the results together.
- *
- * NOTE: this is a prototype function, we can gain a lot of efficiencies by implementing this in C/C++
- *
-*/
-declare
- i integer;
- rr pgr_costresult3;
- lrr pgr_costresult3;
- lrra boolean := false;
- seq integer := 0;
- seq2 integer := 0;
-
-begin
- -- loop through each pair of vids and compute the path
- for i in 1 .. array_length(vids, 1)-1 loop
- seq2 := seq2 + 1;
- for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
- from pgr_trsp(sql, vids[i], vids[i+1], directed, has_reverse_cost, turn_restrict_sql) as a loop
- -- filter out the individual path ends except the last one
- -- we might not want to do this so we can know where the via points are in the path result
- -- but this needs more thought
- --raise notice 'rr: %', rr;
- if rr.id3 = -1 then
- lrr := rr;
- lrra := true;
- else
- seq := seq + 1;
- rr.seq := seq;
- return next rr;
- end if;
- end loop;
- end loop;
-
- if lrra then
- seq := seq + 1;
- lrr.seq := seq;
- return next lrr;
- end if;
- return;
-end;
-$body$
- language plpgsql stable
- cost 100
- rows 1000;
-
-
-
-
-----------------------------------------------------------------------------------------------------------
-
-create or replace function _pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
- RETURNS SETOF pgr_costresult3 AS
-$body$
-/*
- * pgr_trsp(sql text, eids integer[], pcts float8[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
- *
- * Compute TRSP with edge_ids and pposition along edge. We compute the path between eids[i], pcts[i] and eids[i+1], pcts[i+1]
- * and chain the results together.
- *
- * NOTE: this is a prototype function, we can gain a lot of efficiencies by implementing this in C/C++
- *
-*/
-declare
- i integer;
- rr pgr_costresult3;
- lrr pgr_costresult3;
- first boolean := true;
- seq integer := 0;
- seq2 integer :=0;
-
-begin
- if array_length(eids, 1) != array_length(pcts, 1) then
- raise exception 'The length of arrays eids and pcts must be the same!';
- end if;
-
- -- loop through each pair of vids and compute the path
- for i in 1 .. array_length(eids, 1)-1 loop
- seq2 := seq2 + 1;
- for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
- from _pgr_trsp(sql,
- eids[i], pcts[i],
- eids[i+1], pcts[i+1],
- directed,
- has_reverse_cost,
- turn_restrict_sql) as a loop
- -- combine intermediate via costs when cost is split across
- -- two parts of a segment because it stops it and
- -- restarts the next leg also on it
- -- we might not want to do this so we can know where the via points are in the path result
- -- but this needs more thought
- --
- -- there are multiple condition we have to deal with
- -- between the end of one leg and start of the next
- -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
- -- means: path ends on vertex
- -- NOTICE: rr: (19,1,44570022,-1,0)
- -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
- -- 2. vertex_id=-1; sum cost components
- -- means: path end/starts with the segment
- -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
- -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
-
- --raise notice 'rr: %', rr;
- if first then
- lrr := rr;
- first := false;
- else
- if lrr.id3 = -1 then
- lrr := rr;
- elsif lrr.id3 = rr.id3 then
- lrr.cost := lrr.cost + rr.cost;
- if rr.id2 = -1 then
- rr.id2 := lrr.id2;
- end if;
- else
- seq := seq + 1;
- lrr.seq := seq;
- return next lrr;
- lrr := rr;
- end if;
- end if;
- end loop;
- end loop;
-
- seq := seq + 1;
- lrr.seq := seq;
- return next lrr;
- return;
-end;
-$body$
- language plpgsql stable
- cost 100
- rows 1000;
-
-
-----------------------------------------------------------------------------------------------------------
-/*this via functions are not documented they will be deleted on 2.2
-
-create or replace function pgr_trsp(sql text, vids integer[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
- RETURNS SETOF pgr_costresult AS
-$body$
-begin
- return query select seq, id2 as id1, id3 as id2, cost from pgr_trspVia( sql, vids, directed, has_reverse_cost, turn_restrict_sql);
-end;
-$body$
- language plpgsql stable
- cost 100
- rows 1000;
-
-
-
-create or replace function pgr_trsp(sql text, eids integer[], pcts float8[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
- RETURNS SETOF pgr_costresult AS
-$body$
-begin
- return query select seq, id2 as id1, id3 as id2, cost from pgr_trspVia(sql, eids, pcts, directed, has_reverse_cost, turn_restrict_sql);
-end;
-$body$
- language plpgsql stable
- cost 100
- rows 1000;
-*/
diff --git a/src/trsp/sql/trsp_V2.2.sql b/src/trsp/sql/trsp_V2.2.sql
deleted file mode 100644
index a6f868f..0000000
--- a/src/trsp/sql/trsp_V2.2.sql
+++ /dev/null
@@ -1,214 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
------------------------------------------------------------------------
--- Core function for time_dependent_shortest_path computation
--- See README for description
------------------------------------------------------------------------
---TODO - Do we need to add another sql text for the query on time-dependent-weights table?
--- - For now just checking with static data, so the query is similar to shortest_paths.
-
-CREATE OR REPLACE FUNCTION _pgr_trsp(
- sql text,
- source_vid integer,
- target_vid integer,
- directed boolean,
- has_reverse_cost boolean,
- turn_restrict_sql text DEFAULT null)
-RETURNS SETOF pgr_costResult
-AS '$libdir/${PGROUTING_LIBRARY_NAME}', 'turn_restrict_shortest_path_vertex'
-LANGUAGE 'c' IMMUTABLE;
-
-CREATE OR REPLACE FUNCTION _pgr_trsp(
- sql text,
- source_eid integer,
- source_pos float8,
- target_eid integer,
- target_pos float8,
- directed boolean,
- has_reverse_cost boolean,
- turn_restrict_sql text DEFAULT null)
-RETURNS SETOF pgr_costResult
-AS '$libdir/${PGROUTING_LIBRARY_NAME}', 'turn_restrict_shortest_path_edge'
-LANGUAGE 'c' IMMUTABLE;
-
-
-
-
-/* pgr_trsp VERTEX
-
- - if size of restrictions_sql is Zero or no restrictions_sql are given
- then call to pgr_dijkstra is made
-
- - because it reads the data wrong, when there is a reverse_cost column:
- - put all data costs in one cost column and
- - a call is made to trsp without only the positive values
-*/
-CREATE OR REPLACE FUNCTION pgr_trsp(
- edges_sql TEXT,
- start_vid INTEGER,
- end_vid INTEGER,
- directed BOOLEAN,
- has_rcost BOOLEAN,
- restrictions_sql TEXT DEFAULT NULL)
-RETURNS SETOF pgr_costResult AS
-$BODY$
-DECLARE
-has_reverse BOOLEAN;
-new_sql TEXT;
-trsp_sql TEXT;
-BEGIN
- has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
-
- new_sql := edges_sql;
- IF (has_reverse != has_rcost) THEN -- user contradiction
- IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
- -- to be on the safe side because it reads the data wrong, sending only postitive values
- new_sql :=
- 'WITH old_sql AS (' || edges_sql || ')' ||
- ' SELECT id, source, target, cost FROM old_sql';
- ELSE -- it does not have reverse_cost but user wants it
- RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
- USING ERRCODE := 'XX000';
- END IF;
- END IF;
-
- IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
- -- no restrictions then its a dijkstra
- RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
- FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
- RETURN;
- END IF;
-
- RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
- RETURN;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
-/* pgr_trspVia Vertices
- - if size of restrictions_sql is Zero or no restrictions_sql are given
- then call to pgr_dijkstra is made
-
- - because it reads the data wrong, when there is a reverse_cost column:
- - put all data costs in one cost column and
- - a call is made to trspViaVertices without only the positive values
-*/
-CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
- edges_sql TEXT,
- via_vids ANYARRAY,
- directed BOOLEAN,
- has_rcost BOOLEAN,
- restrictions_sql TEXT DEFAULT NULL)
-RETURNS SETOF pgr_costResult3 AS
-$BODY$
-DECLARE
-has_reverse BOOLEAN;
-new_sql TEXT;
-BEGIN
-
- has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
-
- new_sql := edges_sql;
- IF (has_reverse != has_rcost) THEN -- user contradiction
- IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
- new_sql :=
- 'WITH old_sql AS (' || edges_sql || ')' ||
- ' SELECT id, source, target, cost FROM old_sql';
- ELSE -- it does not have reverse_cost but user wants it
- RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
- USING ERRCODE := 'XX000';
- END IF;
- END IF;
-
- IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
- RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
- (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
- FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
- RETURN;
- END IF;
-
-
- -- make the call without contradiction from part of the user
- RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
-CREATE OR REPLACE FUNCTION pgr_trsp(
- sql text,
- source_eid integer,
- source_pos float8,
- target_eid integer,
- target_pos float8,
- directed boolean,
- has_reverse_cost boolean,
- turn_restrict_sql text DEFAULT null)
-RETURNS SETOF pgr_costResult AS
-$BODY$
-DECLARE
-has_reverse BOOLEAN;
-new_sql TEXT;
-trsp_sql TEXT;
-BEGIN
- has_reverse =_pgr_parameter_check('dijkstra', sql, false);
-
- new_sql := sql;
- IF (has_reverse != has_reverse_cost) THEN -- user contradiction
- IF (has_reverse) THEN
- -- it has reverse_cost but user don't want it.
- -- to be on the safe side because it reads the data wrong, sending only postitive values
- new_sql :=
- 'WITH old_sql AS (' || sql || ')' ||
- ' SELECT id, source, target, cost FROM old_sql';
- ELSE -- it does not have reverse_cost but user wants it
- RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
- USING ERRCODE := 'XX000';
- END IF;
- END IF;
-
- IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
- -- no restrictions then its a with points
- RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
- FROM pgr_withpoints(new_sql,
- '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
- || ' UNION '
- || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
- -1, -2, directed) a;
- -- WHERE node != -2;
- RETURN;
- END IF;
-
- RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
- RETURN;
-
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
diff --git a/src/trsp/sql/viaEdges_v2.2.sql b/src/trsp/sql/viaEdges_v2.2.sql
deleted file mode 100644
index 4a42b29..0000000
--- a/src/trsp/sql/viaEdges_v2.2.sql
+++ /dev/null
@@ -1,85 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2016 pgRouting developers
-Mail: project at 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*/
-
-/* trspViaEdges
-
- - when contradiction (has rcost but does not want it):
- - the call is made to trsp only with cost column
-
- - When there are no restrictions:
- a call to _pgr_withPointsVia
- - Else
- a call to _pgr_trspViaEdges
- - which calls repetedly the original C/C++ code
-*/
-
-
-------------------------------
--- pgr_trspViaEdges Wrapper
-------------------------------
-CREATE OR REPLACE FUNCTION pgr_trspViaEdges(
- sql TEXT,
- eids INTEGER[],
- pcts float[],
- directed BOOLEAN,
- has_rcost BOOLEAN,
- turn_restrict_sql text DEFAULT NULL::TEXT)
- RETURNS SETOF pgr_costresult3 AS
-$BODY$
-DECLARE
- i INTEGER;
- rr pgr_costresult3;
- lrr pgr_costresult3;
- first BOOLEAN := true;
- seq INTEGER := 0;
- seq2 INTEGER :=0;
- has_reverse BOOLEAN;
- edges_sql TEXT;
-
-BEGIN
- has_reverse =_pgr_parameter_check('dijkstra', sql, false);
- edges_sql := sql;
- IF (has_reverse != has_rcost) THEN
- IF (has_reverse) THEN
- edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
- ELSE
- raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
- END IF;
- END IF;
-
- IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
- -- no restrictions then its a _pgr_withPointsVia
- RETURN query SELECT seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
- FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed)
- RETURN;
- END IF;
-
-
- -- make the call to the original code
- RETURN query SELECT * FROM _pgr_trspViaEdges(edges_sql, eids, pcts, directed, has_rcost, turn_restrict_sql);
-
-END;
-$BODY$
-LANGUAGE plpgsql VOLATILE
-cost 100
-rows 1000;
diff --git a/src/trsp/sql/viaVertices_v2.2.sql b/src/trsp/sql/viaVertices_v2.2.sql
deleted file mode 100644
index b1205f0..0000000
--- a/src/trsp/sql/viaVertices_v2.2.sql
+++ /dev/null
@@ -1,82 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2016 pgRouting developers
-Mail: project at 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*/
-
-/* trspViaVertices
-
- - when contradiction (has rcost but does not want it):
- - the call is made to trsp only with cost column
-
- - When there are no restrictions:
- a call to pgr_dijkstraVia
- - Else
- a call to _pgr_trspViaVertices
- - which calls repetedly the original C/C++ code
-*/
-
-------------------------------
--- pgr_trspViaVertices Wrapper
-------------------------------
-CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
- edges_sql TEXT,
- via_vids ANYARRAY,
- directed BOOLEAN,
- has_rcost BOOLEAN,
- restrictions_sql TEXT DEFAULT NULL)
-RETURNS SETOF pgr_costResult3 AS
-$BODY$
-DECLARE
-has_reverse BOOLEAN;
-new_sql TEXT;
-BEGIN
-
- has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
-
- new_sql := edges_sql;
- IF (has_reverse != has_rcost) THEN -- user contradiction
- IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
- new_sql :=
- 'WITH old_sql AS (' || edges_sql || ')' ||
- ' SELECT id, source, target, cost FROM old_sql';
- ELSE -- it does not have reverse_cost but user wants it
- RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
- USING ERRCODE := 'XX000';
- END IF;
- END IF;
-
- IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
- RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
- (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
- FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
- RETURN;
- END IF;
-
-
- -- make the call without contradiction from part of the user
- RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-
diff --git a/src/trsp/sql/vias_trsp_V2.2.sql b/src/trsp/sql/vias_trsp_V2.2.sql
deleted file mode 100644
index 0a752bf..0000000
--- a/src/trsp/sql/vias_trsp_V2.2.sql
+++ /dev/null
@@ -1,220 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
-create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
- RETURNS SETOF pgr_costresult3 AS
-$body$
-/*
- * pgr_trsp(sql text, vids integer[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
- *
- * Compute TRSP with via points. We compute the path between vids[i] and vids[i+1] and chain the results together.
- *
- * NOTE: this is a prototype function, we can gain a lot of efficiencies by implementing this in C/C++
- *
-*/
-declare
- i integer;
- rr pgr_costresult3;
- lrr pgr_costresult3;
- lrra boolean := false;
- seq integer := 0;
- seq2 integer := 0;
-
-begin
-
- -- loop through each pair of vids and compute the path
- for i in 1 .. array_length(vids, 1)-1 loop
- seq2 := seq2 + 1;
- for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
- from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
- -- filter out the individual path ends except the last one
- -- we might not want to do this so we can know where the via points are in the path result
- -- but this needs more thought
- --raise notice 'rr: %', rr;
- if rr.id3 = -1 then
- lrr := rr;
- lrra := true;
- else
- seq := seq + 1;
- rr.seq := seq;
- return next rr;
- end if;
- end loop;
- end loop;
-
- if lrra then
- seq := seq + 1;
- lrr.seq := seq;
- return next lrr;
- end if;
- return;
-end;
-$body$
- language plpgsql stable
- cost 100
- rows 1000;
-
-
-
-
-----------------------------------------------------------------------------------------------------------
-
-create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
- RETURNS SETOF pgr_costresult3 AS
-$body$
-/*
- * pgr_trsp(sql text, eids integer[], pcts float8[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
- *
- * Compute TRSP with edge_ids and pposition along edge. We compute the path between eids[i], pcts[i] and eids[i+1], pcts[i+1]
- * and chain the results together.
- *
- * NOTE: this is a prototype function, we can gain a lot of efficiencies by implementing this in C/C++
- *
-*/
-declare
- i integer;
- rr pgr_costresult3;
- lrr pgr_costresult3;
- first boolean := true;
- seq integer := 0;
- seq2 integer :=0;
- has_reverse BOOLEAN;
- point_is_vertex BOOLEAN := false;
- edges_sql TEXT;
- f float;
-
-begin
- has_reverse =_pgr_parameter_check('dijkstra', sql, false);
- edges_sql := sql;
- IF (has_reverse != has_rcost) THEN
- IF (NOT has_rcost) THEN
- -- user does not want to use reverse cost column
- edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
- ELSE
- raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
- END IF;
- END IF;
-
- FOREACH f IN ARRAY pcts LOOP
- IF f in (0,1) THEN
- point_is_vertex := true;
- END IF;
- END LOOP;
-
- IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
- -- no restrictions then its a _pgr_withPointsVia
- RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
- FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
- RETURN;
- END IF;
-
- if array_length(eids, 1) != array_length(pcts, 1) then
- raise exception 'The length of arrays eids and pcts must be the same!';
- end if;
-
- -- loop through each pair of vids and compute the path
- for i in 1 .. array_length(eids, 1)-1 loop
- seq2 := seq2 + 1;
- for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
- from pgr_trsp(edges_sql,
- eids[i], pcts[i],
- eids[i+1], pcts[i+1],
- directed,
- has_rcost,
- turn_restrict_sql) as a loop
- -- combine intermediate via costs when cost is split across
- -- two parts of a segment because it stops it and
- -- restarts the next leg also on it
- -- we might not want to do this so we can know where the via points are in the path result
- -- but this needs more thought
- --
- -- there are multiple condition we have to deal with
- -- between the end of one leg and start of the next
- -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
- -- means: path ends on vertex
- -- NOTICE: rr: (19,1,44570022,-1,0)
- -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
- -- 2. vertex_id=-1; sum cost components
- -- means: path end/starts with the segment
- -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
- -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
-
- --raise notice 'rr: %', rr;
- if first then
- lrr := rr;
- first := false;
- else
- if lrr.id3 = -1 then
- lrr := rr;
- elsif lrr.id3 = rr.id3 then
- lrr.cost := lrr.cost + rr.cost;
- if rr.id2 = -1 then
- rr.id2 := lrr.id2;
- end if;
- else
- seq := seq + 1;
- lrr.seq := seq;
- return next lrr;
- lrr := rr;
- end if;
- end if;
- end loop;
- end loop;
-
- seq := seq + 1;
- lrr.seq := seq;
- return next lrr;
- return;
-end;
-$body$
- language plpgsql stable
- cost 100
- rows 1000;
-
-
-----------------------------------------------------------------------------------------------------------
-/*this via functions are not documented they will be deleted on 2.2
-
-create or replace function pgr_trsp(sql text, vids integer[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
- RETURNS SETOF pgr_costresult AS
-$body$
-begin
- return query select seq, id2 as id1, id3 as id2, cost from pgr_trspVia( sql, vids, directed, has_reverse_cost, turn_restrict_sql);
-end;
-$body$
- language plpgsql stable
- cost 100
- rows 1000;
-
-
-
-create or replace function pgr_trsp(sql text, eids integer[], pcts float8[], directed boolean, has_reverse_cost boolean, turn_restrict_sql text DEFAULT NULL::text)
- RETURNS SETOF pgr_costresult AS
-$body$
-begin
- return query select seq, id2 as id1, id3 as id2, cost from pgr_trspVia(sql, eids, pcts, directed, has_reverse_cost, turn_restrict_sql);
-end;
-$body$
- language plpgsql stable
- cost 100
- rows 1000;
-*/
diff --git a/src/trsp/src/GraphDefinition.cpp b/src/trsp/src/GraphDefinition.cpp
old mode 100755
new mode 100644
index b8b3af5..45f4cda
--- a/src/trsp/src/GraphDefinition.cpp
+++ b/src/trsp/src/GraphDefinition.cpp
@@ -1,3 +1,28 @@
+/*PGR-GNU*****************************************************************
+
+File: GraphDefinition.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
#ifdef __MINGW32__
#include <winsock2.h>
@@ -9,8 +34,7 @@
#include "GraphDefinition.h"
// -------------------------------------------------------------------------
-GraphDefinition::GraphDefinition(void)
-{
+GraphDefinition::GraphDefinition(void) {
m_lStartEdgeId = -1;
m_lEndEdgeId = 0;
m_dStartpart = 0.0;
@@ -23,14 +47,12 @@ GraphDefinition::GraphDefinition(void)
}
// -------------------------------------------------------------------------
-GraphDefinition::~GraphDefinition(void)
-{
+GraphDefinition::~GraphDefinition(void) {
}
// -------------------------------------------------------------------------
-void GraphDefinition::init()
-{
+void GraphDefinition::init() {
max_edge_id = 0;
max_node_id = 0;
isStartVirtual = false;
@@ -39,10 +61,9 @@ void GraphDefinition::init()
// -------------------------------------------------------------------------
-void GraphDefinition::deleteall()
-{
+void GraphDefinition::deleteall() {
std::vector<GraphEdgeInfo*>::iterator it;
- for(it = m_vecEdgeVector.begin(); it != m_vecEdgeVector.end(); it++){
+ for (it = m_vecEdgeVector.begin(); it != m_vecEdgeVector.end(); it++) {
delete *it;
}
m_vecEdgeVector.clear();
@@ -53,19 +74,14 @@ void GraphDefinition::deleteall()
// -------------------------------------------------------------------------
-double GraphDefinition::construct_path(long ed_id, int v_pos)
-{
- if(parent[ed_id].ed_ind[v_pos] == -1)
- {
- path_element_t pelement;
+double GraphDefinition::construct_path(long ed_id, long v_pos) {
+ if (parent[ed_id].ed_ind[v_pos] == -1) {
+ path_element_tt pelement;
GraphEdgeInfo* cur_edge = m_vecEdgeVector[ed_id];
- if(v_pos == 0)
- {
+ if (v_pos == 0) {
pelement.vertex_id = cur_edge->m_lStartNode;
pelement.cost = cur_edge->m_dCost;
- }
- else
- {
+ } else {
pelement.vertex_id = cur_edge->m_lEndNode;
pelement.cost = cur_edge->m_dReverseCost;
}
@@ -74,17 +90,15 @@ double GraphDefinition::construct_path(long ed_id, int v_pos)
m_vecPath.push_back(pelement);
return pelement.cost;
}
- double ret = construct_path(parent[ed_id].ed_ind[v_pos], parent[ed_id].v_pos[v_pos]);
- path_element_t pelement;
+ double ret = construct_path(parent[ed_id].ed_ind[v_pos],
+ parent[ed_id].v_pos[v_pos]);
+ path_element_tt pelement;
GraphEdgeInfo* cur_edge = m_vecEdgeVector[ed_id];
- if(v_pos == 0)
- {
+ if (v_pos == 0) {
pelement.vertex_id = cur_edge->m_lStartNode;
- pelement.cost = m_dCost[ed_id].endCost - ret;// cur_edge.m_dCost;
+ pelement.cost = m_dCost[ed_id].endCost - ret; // cur_edge.m_dCost;
ret = m_dCost[ed_id].endCost;
- }
- else
- {
+ } else {
pelement.vertex_id = cur_edge->m_lEndNode;
pelement.cost = m_dCost[ed_id].startCost - ret;
ret = m_dCost[ed_id].startCost;
@@ -101,30 +115,24 @@ double GraphDefinition::construct_path(long ed_id, int v_pos)
double GraphDefinition::getRestrictionCost(
long edge_ind,
GraphEdgeInfo& new_edge,
- bool isStart)
-{
+ bool isStart) {
double cost = 0.0;
long edge_id = new_edge.m_lEdgeID;
- if(m_ruleTable.find(edge_id) == m_ruleTable.end())
- {
+ if (m_ruleTable.find(edge_id) == m_ruleTable.end()) {
return(0.0);
}
std::vector<Rule> vecRules = m_ruleTable[edge_id];
long st_edge_ind = edge_ind;
- for(const auto &rule : vecRules)
- {
+ for (const auto &rule : vecRules) {
bool flag = true;
- int v_pos = (isStart?0:1);
+ long v_pos = (isStart?0:1);
edge_ind = st_edge_ind;
- for(auto const &precedence : rule.precedencelist)
- {
- if(edge_ind == -1)
- {
+ for (auto const &precedence : rule.precedencelist) {
+ if (edge_ind == -1) {
flag = false;
break;
}
- if(precedence != m_vecEdgeVector[edge_ind]->m_lEdgeID)
- {
+ if (precedence != m_vecEdgeVector[edge_ind]->m_lEdgeID) {
flag = false;
break;
}
@@ -132,7 +140,7 @@ double GraphDefinition::getRestrictionCost(
v_pos = parent[edge_ind].v_pos[v_pos];
edge_ind = parent_ind;
}
- if(flag)
+ if (flag)
cost += rule.cost;
}
return cost;
@@ -146,50 +154,49 @@ void GraphDefinition::explore(
bool isStart,
LongVector &vecIndex,
std::priority_queue<PDP, std::vector<PDP>,
- std::greater<PDP> > &que)
-{
+ std::greater<PDP> > &que) {
double extCost = 0.0;
GraphEdgeInfo* new_edge;
double totalCost;
- for(const auto &index : vecIndex)
- {
+ for (const auto &index : vecIndex) {
new_edge = m_vecEdgeVector[index];
extCost = 0.0;
- if(m_bIsturnRestrictOn)
- {
- extCost = getRestrictionCost(cur_edge.m_lEdgeIndex, *new_edge, isStart);
- }
- if(new_edge->m_lStartNode == cur_node)
- {
- if(new_edge->m_dCost >= 0.0)
- {
- if(isStart)
- totalCost = m_dCost[cur_edge.m_lEdgeIndex].endCost + new_edge->m_dCost + extCost;
+ if (m_bIsturnRestrictOn) {
+ extCost = getRestrictionCost(cur_edge.m_lEdgeIndex,
+ *new_edge, isStart);
+ }
+ if (new_edge->m_lStartNode == cur_node) {
+ if (new_edge->m_dCost >= 0.0) {
+ if (isStart)
+ totalCost = m_dCost[cur_edge.m_lEdgeIndex].endCost +
+ new_edge->m_dCost + extCost;
else
- totalCost = m_dCost[cur_edge.m_lEdgeIndex].startCost + new_edge->m_dCost + extCost;
- if(totalCost < m_dCost[index].endCost)
- {
+ totalCost = m_dCost[cur_edge.m_lEdgeIndex].startCost +
+ new_edge->m_dCost + extCost;
+ if (totalCost < m_dCost[index].endCost) {
m_dCost[index].endCost = totalCost;
parent[new_edge->m_lEdgeIndex].v_pos[0] = (isStart?0:1);
- parent[new_edge->m_lEdgeIndex].ed_ind[0] = cur_edge.m_lEdgeIndex;
- que.push(std::make_pair(totalCost, std::make_pair(new_edge->m_lEdgeIndex, true)));
+ parent[new_edge->m_lEdgeIndex].ed_ind[0] =
+ cur_edge.m_lEdgeIndex;
+ que.push(std::make_pair(totalCost,
+ std::make_pair(new_edge->m_lEdgeIndex, true)));
}
}
- }
- else
- {
- if(new_edge->m_dReverseCost >= 0.0)
- {
- if(isStart)
- totalCost = m_dCost[cur_edge.m_lEdgeIndex].endCost + new_edge->m_dReverseCost + extCost;
+ } else {
+ if (new_edge->m_dReverseCost >= 0.0) {
+ if (isStart)
+ totalCost = m_dCost[cur_edge.m_lEdgeIndex].endCost +
+ new_edge->m_dReverseCost + extCost;
else
- totalCost = m_dCost[cur_edge.m_lEdgeIndex].startCost + new_edge->m_dReverseCost + extCost;
- if(totalCost < m_dCost[index].startCost)
- {
+ totalCost = m_dCost[cur_edge.m_lEdgeIndex].startCost +
+ new_edge->m_dReverseCost + extCost;
+ if (totalCost < m_dCost[index].startCost) {
m_dCost[index].startCost = totalCost;
parent[new_edge->m_lEdgeIndex].v_pos[1] = (isStart?0:1);
- parent[new_edge->m_lEdgeIndex].ed_ind[1] = cur_edge.m_lEdgeIndex;
- que.push(std::make_pair(totalCost, std::make_pair(new_edge->m_lEdgeIndex, false)));
+ parent[new_edge->m_lEdgeIndex].ed_ind[1] =
+ cur_edge.m_lEdgeIndex;
+ que.push(std::make_pair(totalCost,
+ std::make_pair(new_edge->m_lEdgeIndex, false)));
}
}
}
@@ -200,66 +207,59 @@ void GraphDefinition::explore(
// -------------------------------------------------------------------------
int GraphDefinition::multi_dijkstra(
edge_t *edges,
- unsigned int edge_count,
+ size_t edge_count,
std::vector<int> vertices,
bool directed,
- bool has_reverse_cost,
- path_element_t **path,
- int *path_count,
+ bool has_reverse_cost,
+ path_element_tt **path,
+ size_t *path_count,
char **err_msg,
- std::vector<PDVI> &ruleList)
-{
+ std::vector<PDVI> &ruleList) {
construct_graph(edges, edge_count, has_reverse_cost, directed);
- if(ruleList.size() > 0)
- {
- m_ruleTable.clear();
- LongVector vecsource;
- for(const auto &rule : ruleList)
- {
- std::vector<long> temp_precedencelist;
- temp_precedencelist.clear();
- for(auto const &seq : rule.second)
- {
- temp_precedencelist.push_back(seq);
- }
- int dest_edge_id = rule.second[0];
- if(m_ruleTable.find(dest_edge_id) != m_ruleTable.end())
- {
- m_ruleTable[dest_edge_id].push_back(Rule(rule.first, temp_precedencelist));
- }
- else
- {
- std::vector<Rule> temprules;
- temprules.clear();
- temprules.push_back(Rule(rule.first, temp_precedencelist));
- m_ruleTable.insert(std::make_pair(dest_edge_id, temprules));
- }
- }
- m_bIsturnRestrictOn = true;
+ if (ruleList.size() > 0) {
+ m_ruleTable.clear();
+ LongVector vecsource;
+ for (const auto &rule : ruleList) {
+ std::vector<long> temp_precedencelist;
+ temp_precedencelist.clear();
+ for (auto const &seq : rule.second) {
+ temp_precedencelist.push_back(seq);
+ }
+ long dest_edge_id = rule.second[0];
+ if (m_ruleTable.find(dest_edge_id) != m_ruleTable.end()) {
+ m_ruleTable[dest_edge_id].push_back(Rule(rule.first,
+ temp_precedencelist));
+ } else {
+ std::vector<Rule> temprules;
+ temprules.clear();
+ temprules.push_back(Rule(rule.first, temp_precedencelist));
+ m_ruleTable.insert(std::make_pair(dest_edge_id, temprules));
+ }
+ }
+ m_bIsturnRestrictOn = true;
}
parent = new PARENT_PATH[edge_count + 1];
m_dCost = new CostHolder[edge_count + 1];
m_vecPath.clear();
size_t i;
size_t total_vertices = vertices.size();
- for(i = 0; i < total_vertices - 1; i++)
- {
- int ret = my_dijkstra(vertices[i], vertices[i + 1], edge_count, err_msg);
- if(ret < 0)
- {
- deleteall();
- return -1;
- }
+ for (i = 0; i < total_vertices - 1; i++) {
+ int ret = my_dijkstra(vertices[i], vertices[i + 1], edge_count,
+ err_msg);
+ if (ret < 0) {
+ deleteall();
+ return -1;
+ }
}
- *path = (path_element_t *) malloc(sizeof(path_element_t) * (m_vecPath.size() + 1));
+ *path = (path_element_tt *) malloc(sizeof(path_element_tt) *
+ (m_vecPath.size() + 1));
*path_count = static_cast<int>(m_vecPath.size());
- for(int i = 0; i < *path_count; i++)
- {
- (*path)[i].vertex_id = m_vecPath[i].vertex_id;
- (*path)[i].edge_id = m_vecPath[i].edge_id;
- (*path)[i].cost = m_vecPath[i].cost;
+ for (size_t i = 0; i < *path_count; i++) {
+ (*path)[i].vertex_id = m_vecPath[i].vertex_id;
+ (*path)[i].edge_id = m_vecPath[i].edge_id;
+ (*path)[i].cost = m_vecPath[i].cost;
}
deleteall();
return 0;
@@ -267,184 +267,159 @@ int GraphDefinition::multi_dijkstra(
// -------------------------------------------------------------------------
-int GraphDefinition::my_dijkstra(long start_vertex, long end_vertex, unsigned int edge_count, char **err_msg)
-{
- if(!m_bIsGraphConstructed)
- {
- *err_msg = (char *)"Graph not Ready!";
- return -1;
+int GraphDefinition::my_dijkstra(long start_vertex, long end_vertex,
+ size_t edge_count, char **err_msg) {
+ if (!m_bIsGraphConstructed) {
+ *err_msg = (char *)"Graph not Ready!";
+ return -1;
}
unsigned int i;
- for(i = 0; i <= edge_count; i++)
- {
- m_dCost[i].startCost = 1e15;
- m_dCost[i].endCost = 1e15;
+ for (i = 0; i <= edge_count; i++) {
+ m_dCost[i].startCost = 1e15;
+ m_dCost[i].endCost = 1e15;
}
- if(m_mapNodeId2Edge.find(start_vertex) == m_mapNodeId2Edge.end())
- {
- *err_msg = (char *)"Source Not Found";
- deleteall();
- return -1;
+ if (m_mapNodeId2Edge.find(start_vertex) == m_mapNodeId2Edge.end()) {
+ *err_msg = (char *)"Source Not Found";
+ deleteall();
+ return -1;
}
- if(m_mapNodeId2Edge.find(end_vertex) == m_mapNodeId2Edge.end())
- {
- *err_msg = (char *)"Destination Not Found";
- deleteall();
- return -1;
+ if (m_mapNodeId2Edge.find(end_vertex) == m_mapNodeId2Edge.end()) {
+ *err_msg = (char *)"Destination Not Found";
+ deleteall();
+ return -1;
}
std::priority_queue<PDP, std::vector<PDP>, std::greater<PDP> > que;
LongVector vecsource = m_mapNodeId2Edge[start_vertex];
GraphEdgeInfo* cur_edge = NULL;
- for(const auto &source : vecsource)
- {
- cur_edge = m_vecEdgeVector[source];
- if(cur_edge->m_lStartNode == start_vertex)
- {
- if(cur_edge->m_dCost >= 0.0)
- {
- m_dCost[cur_edge->m_lEdgeIndex].endCost= cur_edge->m_dCost;
- parent[cur_edge->m_lEdgeIndex].v_pos[0] = -1;
- parent[cur_edge->m_lEdgeIndex].ed_ind[0] = -1;
- que.push(std::make_pair(cur_edge->m_dCost, std::make_pair(cur_edge->m_lEdgeIndex, true)));
- }
- }
- else
- {
- if(cur_edge->m_dReverseCost >= 0.0)
- {
- m_dCost[cur_edge->m_lEdgeIndex].startCost = cur_edge->m_dReverseCost;
- parent[cur_edge->m_lEdgeIndex].v_pos[1] = -1;
- parent[cur_edge->m_lEdgeIndex].ed_ind[1] = -1;
- que.push(std::make_pair(cur_edge->m_dReverseCost, std::make_pair(cur_edge->m_lEdgeIndex, false)));
+ for (const auto &source : vecsource) {
+ cur_edge = m_vecEdgeVector[source];
+ if (cur_edge->m_lStartNode == start_vertex) {
+ if (cur_edge->m_dCost >= 0.0) {
+ m_dCost[cur_edge->m_lEdgeIndex].endCost = cur_edge->m_dCost;
+ parent[cur_edge->m_lEdgeIndex].v_pos[0] = -1;
+ parent[cur_edge->m_lEdgeIndex].ed_ind[0] = -1;
+ que.push(std::make_pair(cur_edge->m_dCost,
+ std::make_pair(cur_edge->m_lEdgeIndex, true)));
+ }
+ } else {
+ if (cur_edge->m_dReverseCost >= 0.0) {
+ m_dCost[cur_edge->m_lEdgeIndex].startCost =
+ cur_edge->m_dReverseCost;
+ parent[cur_edge->m_lEdgeIndex].v_pos[1] = -1;
+ parent[cur_edge->m_lEdgeIndex].ed_ind[1] = -1;
+ que.push(std::make_pair(cur_edge->m_dReverseCost,
+ std::make_pair(cur_edge->m_lEdgeIndex, false)));
+ }
+ }
}
- }
- }
-
- long cur_node = -1;
- while(!que.empty())
- {
- PDP cur_pos = que.top();
- que.pop();
- int cured_index = cur_pos.second.first;
- cur_edge = m_vecEdgeVector[cured_index];
-
- if(cur_pos.second.second) // explore edges connected to end node
- {
- cur_node = cur_edge->m_lEndNode;
- if(cur_edge->m_dCost < 0.0)
- continue;
- if(cur_node == end_vertex)
- break;
- explore(cur_node, *cur_edge, true, cur_edge->m_vecEndConnedtedEdge, que);
- }
- else // explore edges connected to start node
- {
- cur_node = cur_edge->m_lStartNode;
- if(cur_edge->m_dReverseCost < 0.0)
- continue;
- if(cur_node == end_vertex)
- break;
- explore(cur_node, *cur_edge, false, cur_edge->m_vecStartConnectedEdge, que);
- }
- }
- if(cur_node != end_vertex)
- {
- *err_msg = (char *)"Path Not Found";
- deleteall();
- return -1;
- }
- else
- {
- if(cur_node == cur_edge->m_lStartNode)
- {
- construct_path(cur_edge->m_lEdgeIndex, 1);
- }
- else
- {
- construct_path(cur_edge->m_lEdgeIndex, 0);
- }
- path_element_t pelement;
- pelement.vertex_id = end_vertex;
- pelement.edge_id = -1;
- pelement.cost = 0.0;
- m_vecPath.push_back(pelement);
- }
+ long cur_node = -1;
+
+ while (!que.empty()) {
+ PDP cur_pos = que.top();
+ que.pop();
+ long cured_index = cur_pos.second.first;
+ cur_edge = m_vecEdgeVector[cured_index];
+
+ if (cur_pos.second.second) { // explore edges connected to end node
+ cur_node = cur_edge->m_lEndNode;
+ if (cur_edge->m_dCost < 0.0)
+ continue;
+ if (cur_node == end_vertex)
+ break;
+ explore(cur_node, *cur_edge, true,
+ cur_edge->m_vecEndConnedtedEdge, que);
+ } else { // explore edges connected to start node
+ cur_node = cur_edge->m_lStartNode;
+ if (cur_edge->m_dReverseCost < 0.0)
+ continue;
+ if (cur_node == end_vertex)
+ break;
+ explore(cur_node, *cur_edge, false,
+ cur_edge->m_vecStartConnectedEdge, que);
+ }
+ }
+ if (cur_node != end_vertex) {
+ *err_msg = (char *)"Path Not Found";
+ deleteall();
+ return -1;
+ } else {
+ if (cur_node == cur_edge->m_lStartNode) {
+ construct_path(cur_edge->m_lEdgeIndex, 1);
+ } else {
+ construct_path(cur_edge->m_lEdgeIndex, 0);
+ }
+ path_element_tt pelement;
+ pelement.vertex_id = end_vertex;
+ pelement.edge_id = -1;
+ pelement.cost = 0.0;
+ m_vecPath.push_back(pelement);
+ }
return 0;
}
// -------------------------------------------------------------------------
-int GraphDefinition::my_dijkstra(edge_t *edges, unsigned int edge_count, int start_edge_id, double start_part, int end_edge_id, double end_part, bool directed, bool has_reverse_cost,
- path_element_t **path, int *path_count, char **err_msg, std::vector<PDVI> &ruleList)
-{
- if(!m_bIsGraphConstructed)
- {
- init();
- construct_graph(edges, edge_count, has_reverse_cost, directed);
- m_bIsGraphConstructed = true;
- }
- GraphEdgeInfo* start_edge_info = m_vecEdgeVector[m_mapEdgeId2Index[start_edge_id]];
- edge_t start_edge;
- long start_vertex, end_vertex;
- m_dStartpart = start_part;
- m_dEndPart = end_part;
- m_lStartEdgeId = start_edge_id;
- m_lEndEdgeId = end_edge_id;
-
- if(start_part == 0.0)
- {
- start_vertex = start_edge_info->m_lStartNode;
- }
- else if(start_part == 1.0)
- {
- start_vertex = start_edge_info->m_lEndNode;
- }
- else
- {
- isStartVirtual = true;
+int GraphDefinition::my_dijkstra(edge_t *edges, size_t edge_count,
+ long start_edge_id, double start_part, long end_edge_id, double end_part,
+ bool directed, bool has_reverse_cost, path_element_tt **path,
+ size_t *path_count, char **err_msg, std::vector<PDVI> &ruleList) {
+ if (!m_bIsGraphConstructed) {
+ init();
+ construct_graph(edges, edge_count, has_reverse_cost, directed);
+ m_bIsGraphConstructed = true;
+ }
+ GraphEdgeInfo* start_edge_info =
+ m_vecEdgeVector[m_mapEdgeId2Index[start_edge_id]];
+ edge_t start_edge;
+ long start_vertex, end_vertex;
+ m_dStartpart = start_part;
+ m_dEndPart = end_part;
m_lStartEdgeId = start_edge_id;
- start_vertex = max_node_id + 1;
- max_node_id++;
- start_edge.id = max_edge_id + 1;
- max_edge_id++;
- start_edge.source = start_vertex;
- start_edge.reverse_cost = -1.0;
- if(start_edge_info->m_dCost >= 0.0)
- {
- start_edge.target = start_edge_info->m_lEndNode;
- start_edge.cost = (1.0 - start_part) * start_edge_info->m_dCost;
- addEdge(start_edge);
- edge_count++;
- }
- if(start_edge_info->m_dReverseCost >= 0.0)
- {
+ m_lEndEdgeId = end_edge_id;
+
+ if (start_part == 0.0) {
+ start_vertex = start_edge_info->m_lStartNode;
+ } else if (start_part == 1.0) {
+ start_vertex = start_edge_info->m_lEndNode;
+ } else {
+ isStartVirtual = true;
+ m_lStartEdgeId = start_edge_id;
+ start_vertex = max_node_id + 1;
+ max_node_id++;
start_edge.id = max_edge_id + 1;
max_edge_id++;
- start_edge.target = start_edge_info->m_lStartNode;
- start_edge.cost = start_part * start_edge_info->m_dReverseCost;
- addEdge(start_edge);
- edge_count++;
+ start_edge.source = start_vertex;
+ start_edge.reverse_cost = -1.0;
+ if (start_edge_info->m_dCost >= 0.0) {
+ start_edge.target = start_edge_info->m_lEndNode;
+ start_edge.cost = (1.0 - start_part) * start_edge_info->m_dCost;
+ addEdge(start_edge);
+ edge_count++;
+ }
+ if (start_edge_info->m_dReverseCost >= 0.0) {
+ start_edge.id = max_edge_id + 1;
+ max_edge_id++;
+ start_edge.target = start_edge_info->m_lStartNode;
+ start_edge.cost = start_part * start_edge_info->m_dReverseCost;
+ addEdge(start_edge);
+ edge_count++;
+ }
}
- }
- GraphEdgeInfo* end_edge_info = m_vecEdgeVector[m_mapEdgeId2Index[end_edge_id]];
+ GraphEdgeInfo* end_edge_info =
+ m_vecEdgeVector[m_mapEdgeId2Index[end_edge_id]];
edge_t end_edge;
-
- if(end_part == 0.0)
- {
+
+ if (end_part == 0.0) {
end_vertex = end_edge_info->m_lStartNode;
- }
- else if(end_part == 1.0)
- {
+ } else if (end_part == 1.0) {
end_vertex = end_edge_info->m_lEndNode;
- }
- else
- {
+ } else {
isEndVirtual = true;
m_lEndEdgeId = end_edge_id;
end_vertex = max_node_id + 1;
@@ -453,15 +428,13 @@ int GraphDefinition::my_dijkstra(edge_t *edges, unsigned int edge_count, int sta
max_edge_id++;
end_edge.target = end_vertex;
end_edge.reverse_cost = -1.0;
- if(end_edge_info->m_dCost >= 0.0)
- {
+ if (end_edge_info->m_dCost >= 0.0) {
end_edge.source = end_edge_info->m_lStartNode;
end_edge.cost = end_part * end_edge_info->m_dCost;
addEdge(end_edge);
edge_count++;
}
- if(end_edge_info->m_dReverseCost >= 0.0)
- {
+ if (end_edge_info->m_dReverseCost >= 0.0) {
end_edge.source = end_edge_info->m_lEndNode;
end_edge.id = max_edge_id + 1;
end_edge.cost = (1.0 - end_part) * end_edge_info->m_dReverseCost;
@@ -470,102 +443,94 @@ int GraphDefinition::my_dijkstra(edge_t *edges, unsigned int edge_count, int sta
}
}
- return(my_dijkstra(edges, edge_count, start_vertex, end_vertex, directed, has_reverse_cost, path, path_count, err_msg, ruleList));
+ return(my_dijkstra(edges, edge_count, start_vertex, end_vertex, directed,
+ has_reverse_cost, path, path_count, err_msg, ruleList));
}
// -------------------------------------------------------------------------
-int GraphDefinition:: my_dijkstra(edge_t *edges, unsigned int edge_count, long start_vertex, long end_vertex, bool directed, bool has_reverse_cost,
- path_element_t **path, int *path_count, char **err_msg, std::vector<PDVI> &ruleList)
-{
+int GraphDefinition:: my_dijkstra(edge_t *edges, size_t edge_count,
+ long start_vertex, long end_vertex, bool directed, bool has_reverse_cost,
+ path_element_tt **path, size_t *path_count, char **err_msg,
+ std::vector<PDVI> &ruleList) {
m_ruleTable.clear();
LongVector vecsource;
- for (const auto &rule : ruleList)
- {
+ for (const auto &rule : ruleList) {
size_t j;
size_t seq_cnt = rule.second.size();
- std::vector<long> temp_precedencelist;
- temp_precedencelist.clear();
- for(j = 1; j < seq_cnt; j++)
- {
+ std::vector<long> temp_precedencelist;
+ temp_precedencelist.clear();
+ for (j = 1; j < seq_cnt; j++) {
temp_precedencelist.push_back(rule.second[j]);
}
- int dest_edge_id = rule.second[0];
- if(m_ruleTable.find(dest_edge_id) != m_ruleTable.end())
- {
- m_ruleTable[dest_edge_id].push_back(Rule(rule.first, temp_precedencelist));
- }
- else
- {
+ long dest_edge_id = rule.second[0];
+ if (m_ruleTable.find(dest_edge_id) != m_ruleTable.end()) {
+ m_ruleTable[dest_edge_id].push_back(Rule(rule.first,
+ temp_precedencelist));
+ } else {
std::vector<Rule> temprules;
temprules.clear();
temprules.push_back(Rule(rule.first, temp_precedencelist));
m_ruleTable.insert(std::make_pair(dest_edge_id, temprules));
}
-
- if(isStartVirtual)
- {
- if(seq_cnt == 2 && rule.second[1] == m_lStartEdgeId)
- {
+
+ if (isStartVirtual) {
+ if (seq_cnt == 2 && rule.second[1] == m_lStartEdgeId) {
vecsource = m_mapNodeId2Edge[start_vertex];
- for(const auto &source : vecsource)
- {
+ for (const auto &source : vecsource) {
temp_precedencelist.clear();
- temp_precedencelist.push_back(m_vecEdgeVector[source]->m_lEdgeID);
- m_ruleTable[dest_edge_id].push_back(Rule(rule.first, temp_precedencelist));
+ temp_precedencelist.push_back(
+ m_vecEdgeVector[source]->m_lEdgeID);
+ m_ruleTable[dest_edge_id].push_back(Rule(rule.first,
+ temp_precedencelist));
}
}
}
}
- if(isEndVirtual)
- {
- if(m_ruleTable.find(m_lEndEdgeId) != m_ruleTable.end())
- {
+ if (isEndVirtual) {
+ if (m_ruleTable.find(m_lEndEdgeId) != m_ruleTable.end()) {
std::vector<Rule> tmpRules = m_ruleTable[m_lEndEdgeId];
vecsource = m_mapNodeId2Edge[end_vertex];
- for(const auto &source : vecsource)
- {
- m_ruleTable.insert(std::make_pair(m_vecEdgeVector[source]->m_lEdgeID, tmpRules));
+ for (const auto &source : vecsource) {
+ m_ruleTable.insert(std::make_pair(
+ m_vecEdgeVector[source]->m_lEdgeID, tmpRules));
}
}
}
m_bIsturnRestrictOn = true;
- return(my_dijkstra(edges, edge_count, start_vertex, end_vertex, directed, has_reverse_cost, path, path_count, err_msg));
+ return(my_dijkstra(edges, edge_count, start_vertex, end_vertex, directed,
+ has_reverse_cost, path, path_count, err_msg));
}
// -------------------------------------------------------------------------
-int GraphDefinition:: my_dijkstra(edge_t *edges, unsigned int edge_count, long start_vertex, long end_vertex, bool directed, bool has_reverse_cost,
- path_element_t **path, int *path_count, char **err_msg)
-{
- if(!m_bIsGraphConstructed)
- {
+int GraphDefinition:: my_dijkstra(edge_t *edges, size_t edge_count,
+ long start_vertex, long end_vertex, bool directed, bool has_reverse_cost,
+ path_element_tt **path, size_t *path_count, char **err_msg) {
+ if (!m_bIsGraphConstructed) {
init();
construct_graph(edges, edge_count, has_reverse_cost, directed);
m_bIsGraphConstructed = true;
}
-
+
std::priority_queue<PDP, std::vector<PDP>, std::greater<PDP> > que;
parent = new PARENT_PATH[edge_count + 1];
m_dCost = new CostHolder[edge_count + 1];
m_vecPath.clear();
unsigned int i;
- for(i = 0; i <= edge_count; i++)
- {
+ for (i = 0; i <= edge_count; i++) {
m_dCost[i].startCost = 1e15;
m_dCost[i].endCost = 1e15;
}
-
- if(m_mapNodeId2Edge.find(start_vertex) == m_mapNodeId2Edge.end())
- {
+
+ if (m_mapNodeId2Edge.find(start_vertex) == m_mapNodeId2Edge.end()) {
*err_msg = (char *)"Source Not Found";
deleteall();
return -1;
}
- if(m_mapNodeId2Edge.find(end_vertex) == m_mapNodeId2Edge.end())
- {
+ if (m_mapNodeId2Edge.find(end_vertex) == m_mapNodeId2Edge.end()) {
*err_msg = (char *)"Destination Not Found";
deleteall();
return -1;
@@ -574,114 +539,97 @@ int GraphDefinition:: my_dijkstra(edge_t *edges, unsigned int edge_count, long s
LongVector vecsource = m_mapNodeId2Edge[start_vertex];
GraphEdgeInfo* cur_edge = NULL;
- for(const auto &source: vecsource)
- {
+ for (const auto &source : vecsource) {
cur_edge = m_vecEdgeVector[source];
- if(cur_edge->m_lStartNode == start_vertex)
- {
- if(cur_edge->m_dCost >= 0.0)
- {
- m_dCost[cur_edge->m_lEdgeIndex].endCost= cur_edge->m_dCost;
+ if (cur_edge->m_lStartNode == start_vertex) {
+ if (cur_edge->m_dCost >= 0.0) {
+ m_dCost[cur_edge->m_lEdgeIndex].endCost = cur_edge->m_dCost;
parent[cur_edge->m_lEdgeIndex].v_pos[0] = -1;
parent[cur_edge->m_lEdgeIndex].ed_ind[0] = -1;
- que.push(std::make_pair(cur_edge->m_dCost, std::make_pair(cur_edge->m_lEdgeIndex, true)));
+ que.push(std::make_pair(cur_edge->m_dCost,
+ std::make_pair(cur_edge->m_lEdgeIndex, true)));
}
- }
- else
- {
- if(cur_edge->m_dReverseCost >= 0.0)
- {
- m_dCost[cur_edge->m_lEdgeIndex].startCost = cur_edge->m_dReverseCost;
+ } else {
+ if (cur_edge->m_dReverseCost >= 0.0) {
+ m_dCost[cur_edge->m_lEdgeIndex].startCost =
+ cur_edge->m_dReverseCost;
parent[cur_edge->m_lEdgeIndex].v_pos[1] = -1;
parent[cur_edge->m_lEdgeIndex].ed_ind[1] = -1;
- que.push(std::make_pair(cur_edge->m_dReverseCost, std::make_pair(cur_edge->m_lEdgeIndex, false)));
+ que.push(std::make_pair(cur_edge->m_dReverseCost,
+ std::make_pair(cur_edge->m_lEdgeIndex, false)));
}
}
}
long cur_node = -1;
- while(!que.empty())
- {
+ while (!que.empty()) {
PDP cur_pos = que.top();
que.pop();
- int cured_index = cur_pos.second.first;
+ long cured_index = cur_pos.second.first;
cur_edge = m_vecEdgeVector[cured_index];
- if(cur_pos.second.second) // explore edges connected to end node
- {
+ if (cur_pos.second.second) { // explore edges connected to end node
cur_node = cur_edge->m_lEndNode;
- if(cur_edge->m_dCost < 0.0)
+ if (cur_edge->m_dCost < 0.0)
continue;
- if(cur_node == end_vertex)
+ if (cur_node == end_vertex)
break;
- explore(cur_node, *cur_edge, true, cur_edge->m_vecEndConnedtedEdge, que);
- }
- else // explore edges connected to start node
- {
+ explore(cur_node, *cur_edge, true, cur_edge->m_vecEndConnedtedEdge,
+ que);
+ } else { // explore edges connected to start node
cur_node = cur_edge->m_lStartNode;
- if(cur_edge->m_dReverseCost < 0.0)
+ if (cur_edge->m_dReverseCost < 0.0)
continue;
- if(cur_node == end_vertex)
+ if (cur_node == end_vertex)
break;
- explore(cur_node, *cur_edge, false, cur_edge->m_vecStartConnectedEdge, que);
+ explore(cur_node, *cur_edge, false,
+ cur_edge->m_vecStartConnectedEdge, que);
}
}
- if(cur_node != end_vertex)
- {
- if(m_lStartEdgeId == m_lEndEdgeId)
- {
- if(get_single_cost(1000.0, path, path_count))
- {
+ if (cur_node != end_vertex) {
+ if (m_lStartEdgeId == m_lEndEdgeId) {
+ if (get_single_cost(1000.0, path, path_count)) {
return 0;
}
}
*err_msg = (char *)"Path Not Found";
deleteall();
return -1;
- }
- else
- {
+ } else {
double total_cost;
- if(cur_node == cur_edge->m_lStartNode)
- {
+ if (cur_node == cur_edge->m_lStartNode) {
total_cost = m_dCost[cur_edge->m_lEdgeIndex].startCost;
construct_path(cur_edge->m_lEdgeIndex, 1);
- }
- else
- {
+ } else {
total_cost = m_dCost[cur_edge->m_lEdgeIndex].endCost;
construct_path(cur_edge->m_lEdgeIndex, 0);
}
- path_element_t pelement;
+ path_element_tt pelement;
pelement.vertex_id = end_vertex;
pelement.edge_id = -1;
pelement.cost = 0.0;
m_vecPath.push_back(pelement);
- if(m_lStartEdgeId == m_lEndEdgeId)
- {
- if(get_single_cost(total_cost, path, path_count))
- {
+ if (m_lStartEdgeId == m_lEndEdgeId) {
+ if (get_single_cost(total_cost, path, path_count)) {
return 0;
}
}
-
- *path = (path_element_t *) malloc(sizeof(path_element_t) * (m_vecPath.size() + 1));
+
+ *path = (path_element_tt *) malloc(sizeof(path_element_tt) *
+ (m_vecPath.size() + 1));
*path_count = static_cast<int>(m_vecPath.size());
- for(int i = 0; i < *path_count; i++)
- {
+ for (size_t i = 0; i < *path_count; i++) {
(*path)[i].vertex_id = m_vecPath[i].vertex_id;
(*path)[i].edge_id = m_vecPath[i].edge_id;
(*path)[i].cost = m_vecPath[i].cost;
}
- if(isStartVirtual)
- {
+ if (isStartVirtual) {
(*path)[0].vertex_id = -1;
(*path)[0].edge_id = m_lStartEdgeId;
}
- if(isEndVirtual)
- {
+ if (isEndVirtual) {
*path_count = *path_count - 1;
(*path)[*path_count - 1].edge_id = m_lEndEdgeId;
}
@@ -692,56 +640,50 @@ int GraphDefinition:: my_dijkstra(edge_t *edges, unsigned int edge_count, long s
// -------------------------------------------------------------------------
-bool GraphDefinition::get_single_cost(double total_cost, path_element_t **path, int *path_count)
-{
- GraphEdgeInfo* start_edge_info = m_vecEdgeVector[m_mapEdgeId2Index[m_lStartEdgeId]];
- if(m_dEndPart >= m_dStartpart)
- {
- if(start_edge_info->m_dCost >= 0.0 && start_edge_info->m_dCost * (m_dEndPart - m_dStartpart) <= total_cost)
- {
- *path = (path_element_t *) malloc(sizeof(path_element_t) * (1));
+bool GraphDefinition::get_single_cost(double total_cost, path_element_tt **path,
+ size_t *path_count) {
+ GraphEdgeInfo* start_edge_info =
+ m_vecEdgeVector[m_mapEdgeId2Index[m_lStartEdgeId]];
+ if (m_dEndPart >= m_dStartpart) {
+ if (start_edge_info->m_dCost >= 0.0 && start_edge_info->m_dCost *
+ (m_dEndPart - m_dStartpart) <= total_cost) {
+ *path = (path_element_tt *) malloc(sizeof(path_element_tt) * (1));
*path_count = 1;
(*path)[0].vertex_id = -1;
(*path)[0].edge_id = m_lStartEdgeId;
- (*path)[0].cost = start_edge_info->m_dCost * (m_dEndPart - m_dStartpart);
+ (*path)[0].cost = start_edge_info->m_dCost *
+ (m_dEndPart - m_dStartpart);
return true;
}
- }
- else
- {
- if(start_edge_info->m_dReverseCost >= 0.0 && start_edge_info->m_dReverseCost * (m_dStartpart - m_dEndPart) <= total_cost)
- {
- *path = (path_element_t *) malloc(sizeof(path_element_t) * (1));
+ } else {
+ if (start_edge_info->m_dReverseCost >= 0.0 &&
+ start_edge_info->m_dReverseCost * (m_dStartpart - m_dEndPart) <=
+ total_cost) {
+ *path = (path_element_tt *) malloc(sizeof(path_element_tt) * (1));
*path_count = 1;
(*path)[0].vertex_id = -1;
(*path)[0].edge_id = m_lStartEdgeId;
- (*path)[0].cost = start_edge_info->m_dReverseCost * (m_dStartpart - m_dEndPart);
+ (*path)[0].cost = start_edge_info->m_dReverseCost *
+ (m_dStartpart - m_dEndPart);
return true;
}
}
return false;
-
}
// -------------------------------------------------------------------------
-bool GraphDefinition::construct_graph(edge_t* edges, int edge_count, bool has_reverse_cost, bool directed)
-{
- int i;
- for(i = 0; i < edge_count; i++)
- {
- if(!has_reverse_cost)
- {
- if(directed)
- {
- edges[i].reverse_cost = -1.0;
- }
- else
- {
- edges[i].reverse_cost = edges[i].cost;
- }
+bool GraphDefinition::construct_graph(edge_t* edges, size_t edge_count,
+ bool has_reverse_cost, bool directed) {
+ for (size_t i = 0; i < edge_count; i++) {
+ if (!has_reverse_cost) {
+ if (directed) {
+ edges[i].reverse_cost = -1.0;
+ } else {
+ edges[i].reverse_cost = edges[i].cost;
+ }
}
addEdge(edges[i]);
}
@@ -751,117 +693,106 @@ bool GraphDefinition::construct_graph(edge_t* edges, int edge_count, bool has_re
// -------------------------------------------------------------------------
-bool GraphDefinition::connectEdge(GraphEdgeInfo& firstEdge, GraphEdgeInfo& secondEdge, bool bIsStartNodeSame)
-{
- if(bIsStartNodeSame)
- {
- if(firstEdge.m_dReverseCost >= 0.0)
- firstEdge.m_vecStartConnectedEdge.push_back(secondEdge.m_lEdgeIndex);
- if(firstEdge.m_lStartNode == secondEdge.m_lStartNode)
- {
- if(secondEdge.m_dReverseCost >= 0.0)
- secondEdge.m_vecStartConnectedEdge.push_back(firstEdge.m_lEdgeIndex);
- }
- else
- {
- if(secondEdge.m_dCost >= 0.0)
- secondEdge.m_vecEndConnedtedEdge.push_back(firstEdge.m_lEdgeIndex);
- }
- }
- else
- {
- if(firstEdge.m_dCost >= 0.0)
+bool GraphDefinition::connectEdge(GraphEdgeInfo& firstEdge,
+ GraphEdgeInfo& secondEdge, bool bIsStartNodeSame) {
+ if (bIsStartNodeSame) {
+ if (firstEdge.m_dReverseCost >= 0.0)
+ firstEdge.m_vecStartConnectedEdge.push_back(
+ secondEdge.m_lEdgeIndex);
+ if (firstEdge.m_lStartNode == secondEdge.m_lStartNode) {
+ if (secondEdge.m_dReverseCost >= 0.0)
+ secondEdge.m_vecStartConnectedEdge.push_back(
+ firstEdge.m_lEdgeIndex);
+ } else {
+ if (secondEdge.m_dCost >= 0.0)
+ secondEdge.m_vecEndConnedtedEdge.push_back(
+ firstEdge.m_lEdgeIndex);
+ }
+ } else {
+ if (firstEdge.m_dCost >= 0.0)
firstEdge.m_vecEndConnedtedEdge.push_back(secondEdge.m_lEdgeIndex);
- if(firstEdge.m_lEndNode == secondEdge.m_lStartNode)
- {
- if(secondEdge.m_dReverseCost >= 0.0)
- secondEdge.m_vecStartConnectedEdge.push_back(firstEdge.m_lEdgeIndex);
- }
- else
- {
- if(secondEdge.m_dCost >= 0.0)
- secondEdge.m_vecEndConnedtedEdge.push_back(firstEdge.m_lEdgeIndex);
+ if (firstEdge.m_lEndNode == secondEdge.m_lStartNode) {
+ if (secondEdge.m_dReverseCost >= 0.0)
+ secondEdge.m_vecStartConnectedEdge.push_back(
+ firstEdge.m_lEdgeIndex);
+ } else {
+ if (secondEdge.m_dCost >= 0.0)
+ secondEdge.m_vecEndConnedtedEdge.push_back(
+ firstEdge.m_lEdgeIndex);
}
}
-
return true;
}
// -------------------------------------------------------------------------
-bool GraphDefinition::addEdge(edge_t edgeIn)
-{
+bool GraphDefinition::addEdge(edge_t edgeIn) {
// long lTest;
Long2LongMap::iterator itMap = m_mapEdgeId2Index.find(edgeIn.id);
- if(itMap != m_mapEdgeId2Index.end())
+ if (itMap != m_mapEdgeId2Index.end())
return false;
-
+
GraphEdgeInfo* newEdge = new GraphEdgeInfo();
newEdge->m_vecStartConnectedEdge.clear();
newEdge->m_vecEndConnedtedEdge.clear();
newEdge->m_vecRestrictedEdge.clear();
newEdge->m_lEdgeID = edgeIn.id;
- newEdge->m_lEdgeIndex = m_vecEdgeVector.size();
+ newEdge->m_lEdgeIndex = m_vecEdgeVector.size();
newEdge->m_lStartNode = edgeIn.source;
newEdge->m_lEndNode = edgeIn.target;
newEdge->m_dCost = edgeIn.cost;
newEdge->m_dReverseCost = edgeIn.reverse_cost;
- if(edgeIn.id > max_edge_id)
- {
+ if (edgeIn.id > max_edge_id) {
max_edge_id = edgeIn.id;
}
- if(newEdge->m_lStartNode > max_node_id)
- {
+ if (newEdge->m_lStartNode > max_node_id) {
max_node_id = newEdge->m_lStartNode;
}
- if(newEdge->m_lEndNode > max_node_id)
- {
+ if (newEdge->m_lEndNode > max_node_id) {
max_node_id = newEdge->m_lEndNode;
}
- //Searching the start node for connectivity
- Long2LongVectorMap::iterator itNodeMap = m_mapNodeId2Edge.find(edgeIn.source);
- if(itNodeMap != m_mapNodeId2Edge.end())
- {
- //Connect current edge with existing edge with start node
- //connectEdge(
+ // Searching the start node for connectivity
+ Long2LongVectorMap::iterator itNodeMap = m_mapNodeId2Edge.find(
+ edgeIn.source);
+ if (itNodeMap != m_mapNodeId2Edge.end()) {
+ // Connect current edge with existing edge with start node
+ // connectEdge(
long lEdgeCount = itNodeMap->second.size();
long lEdgeIndex;
- for(lEdgeIndex = 0; lEdgeIndex < lEdgeCount; lEdgeIndex++)
- {
- long lEdge = itNodeMap->second.at(lEdgeIndex);
+ for (lEdgeIndex = 0; lEdgeIndex < lEdgeCount; lEdgeIndex++) {
+ long lEdge = itNodeMap->second.at(lEdgeIndex);
connectEdge(*newEdge, *m_vecEdgeVector[lEdge], true);
}
}
- //Searching the end node for connectivity
+ // Searching the end node for connectivity
itNodeMap = m_mapNodeId2Edge.find(edgeIn.target);
- if(itNodeMap != m_mapNodeId2Edge.end())
- {
- //Connect current edge with existing edge with end node
- //connectEdge(
+ if (itNodeMap != m_mapNodeId2Edge.end()) {
+ // Connect current edge with existing edge with end node
+ // connectEdge(
long lEdgeCount = itNodeMap->second.size();
long lEdgeIndex;
- for(lEdgeIndex = 0; lEdgeIndex < lEdgeCount; lEdgeIndex++)
- {
- long lEdge = itNodeMap->second.at(lEdgeIndex);
+ for (lEdgeIndex = 0; lEdgeIndex < lEdgeCount; lEdgeIndex++) {
+ long lEdge = itNodeMap->second.at(lEdgeIndex);
connectEdge(*newEdge, *m_vecEdgeVector[lEdge], false);
}
}
- //Add this node and edge into the data structure
+ // Add this node and edge into the data structure
m_mapNodeId2Edge[edgeIn.source].push_back(newEdge->m_lEdgeIndex);
m_mapNodeId2Edge[edgeIn.target].push_back(newEdge->m_lEdgeIndex);
- //Adding edge to the list
- m_mapEdgeId2Index.insert(std::make_pair(newEdge->m_lEdgeID, m_vecEdgeVector.size()));
+ // Adding edge to the list
+ m_mapEdgeId2Index.insert(std::make_pair(newEdge->m_lEdgeID,
+ m_vecEdgeVector.size()));
m_vecEdgeVector.push_back(newEdge);
//
diff --git a/src/trsp/src/GraphDefinition.h b/src/trsp/src/GraphDefinition.h
index 41f35a9..a0578b3 100644
--- a/src/trsp/src/GraphDefinition.h
+++ b/src/trsp/src/GraphDefinition.h
@@ -1,23 +1,26 @@
-#ifndef GRAPHDEFINITION_H
-#define GRAPHDEFINITION_H
+#ifndef SRC_TRSP_SRC_GRAPHDEFINITION_H_
+#define SRC_TRSP_SRC_GRAPHDEFINITION_H_
+
+#include <stdlib.h>
#include <vector>
#include <map>
#include <queue>
#include <string>
-#include <stdlib.h>
#include <iostream>
+#include <utility>
#include <functional>
+
#include "trsp.h"
-//using namespace std;
+// using namespace std;
typedef std::vector<long> LongVector;
typedef std::vector<LongVector> VectorOfLongVector;
-typedef std::pair<int, bool> PIB;
+typedef std::pair<long, bool> PIB;
typedef std::pair<double, PIB> PDP;
-typedef std::pair<double, std::vector<int> > PDVI;
+typedef std::pair<double, std::vector<long> > PDVI;
/*
typedef struct edge
@@ -34,21 +37,21 @@ typedef struct path_element
int vertex_id;
int edge_id;
double cost;
-}path_element_t;
+}path_element_tt;
*/
-typedef struct{
+typedef struct {
long ed_ind[2];
- int v_pos[2];
+ long v_pos[2];
} PARENT_PATH;
-typedef struct Rule{
+typedef struct Rule {
double cost;
std::vector<long> precedencelist;
Rule(double c, std::vector<long> p) : cost(c), precedencelist(p) { }
}Rule;
-typedef struct{
+typedef struct {
double startCost, endCost;
} CostHolder;
@@ -56,9 +59,8 @@ typedef std::map<long, std::vector<Rule> > RuleTable;
-class GraphEdgeInfo
-{
-public:
+class GraphEdgeInfo {
+ public:
long m_lEdgeID;
long m_lEdgeIndex;
short m_sDirection;
@@ -66,7 +68,7 @@ public:
double m_dReverseCost;
LongVector m_vecStartConnectedEdge;
LongVector m_vecEndConnedtedEdge;
- //LongVector m_vecConnectedNode;
+ // LongVector m_vecConnectedNode;
bool m_bIsLeadingRestrictedEdge;
VectorOfLongVector m_vecRestrictedEdge;
@@ -78,77 +80,81 @@ public:
typedef std::vector<GraphEdgeInfo*> GraphEdgeVector;
-typedef std::map<long,LongVector> Long2LongVectorMap;
-typedef std::map<long,long> Long2LongMap;
+typedef std::map<long, LongVector> Long2LongVectorMap;
+typedef std::map<long, long> Long2LongMap;
-class GraphDefinition
-{
-public:
+class GraphDefinition {
+ public:
GraphDefinition(void);
~GraphDefinition(void);
int my_dijkstra(long start_vertex, long end_vertex,
- unsigned int edge_count, char** err_msg);
+ size_t edge_count, char** err_msg);
- int my_dijkstra(edge_t *edges, unsigned int edge_count,
+ int my_dijkstra(edge_t *edges, size_t edge_count,
long start_vertex, long end_vertex,
bool directed, bool has_reverse_cost,
- path_element_t **path, int *path_count,
+ path_element_tt **path, size_t *path_count,
char **err_msg);
- int my_dijkstra(edge_t *edges, unsigned int edge_count,
+ int my_dijkstra(edge_t *edges, size_t edge_count,
long start_vertex, long end_vertex,
bool directed, bool has_reverse_cost,
- path_element_t **path, int *path_count,
+ path_element_tt **path, size_t *path_count,
char **err_msg,
std::vector<PDVI> &ruleList);
- int my_dijkstra(edge_t *edges, unsigned int edge_count,
- int start_edge, double start_part,
- int end_edge, double end_part,
+ int my_dijkstra(edge_t *edges, size_t edge_count,
+ long start_edge, double start_part,
+ long end_edge, double end_part,
bool directed, bool has_reverse_cost,
- path_element_t **path, int *path_count,
+ path_element_tt **path, size_t *path_count,
char **err_msg,
std::vector<PDVI> &ruleList);
- int multi_dijkstra(edge_t *edges, unsigned int edge_count,
+ int multi_dijkstra(edge_t *edges, size_t edge_count,
std::vector<int> vertices,
bool directed, bool has_reverse_cost,
- path_element_t **path, int *path_count,
+ path_element_tt **path, size_t *path_count,
char **err_msg,
std::vector<PDVI> &ruleList);
- bool construct_graph(edge_t *edges, int edge_count,
+ bool construct_graph(edge_t *edges, size_t edge_count,
bool has_reverse_cost, bool directed);
-private:
- double construct_path(long ed_id, int v_pos);
- void explore(long cur_node, GraphEdgeInfo& cur_edge, bool isStart, LongVector &vecIndex, std::priority_queue<PDP, std::vector<PDP>, std::greater<PDP> > &que);
- double getRestrictionCost(long cur_node, GraphEdgeInfo& new_edge, bool isStart);
+ private:
+ double construct_path(long ed_id, long v_pos);
+ void explore(long cur_node, GraphEdgeInfo& cur_edge, bool isStart,
+ LongVector &vecIndex, std::priority_queue<PDP,
+ std::vector<PDP>, std::greater<PDP> > &que);
+ double getRestrictionCost(long cur_node, GraphEdgeInfo& new_edge,
+ bool isStart);
bool addEdge(edge edgeIn);
- bool connectEdge(GraphEdgeInfo& firstEdge, GraphEdgeInfo& secondEdge, bool bIsStartNodeSame);
- bool get_single_cost(double total_cost, path_element_t **path, int *path_count);
+ bool connectEdge(GraphEdgeInfo& firstEdge, GraphEdgeInfo& secondEdge,
+ bool bIsStartNodeSame);
+ bool get_single_cost(double total_cost, path_element_tt **path,
+ size_t *path_count);
void init();
void deleteall();
-private:
+ private:
GraphEdgeVector m_vecEdgeVector;
Long2LongMap m_mapEdgeId2Index;
Long2LongVectorMap m_mapNodeId2Edge;
long max_node_id;
- int max_edge_id;
- int m_lStartEdgeId;
- int m_lEndEdgeId;
+ long max_edge_id;
+ long m_lStartEdgeId;
+ long m_lEndEdgeId;
double m_dStartpart;
double m_dEndPart;
bool isStartVirtual;
bool isEndVirtual;
-
- std::vector <path_element_t> m_vecPath;
+
+ std::vector <path_element_tt> m_vecPath;
PARENT_PATH *parent;
CostHolder *m_dCost;
RuleTable m_ruleTable;
@@ -156,4 +162,4 @@ private:
bool m_bIsGraphConstructed;
};
-#endif
+#endif // SRC_TRSP_SRC_GRAPHDEFINITION_H_
diff --git a/src/trsp/src/trsp.c b/src/trsp/src/trsp.c
index 21e0bf1..f475144 100644
--- a/src/trsp/src/trsp.c
+++ b/src/trsp/src/trsp.c
@@ -1,36 +1,74 @@
+/*PGR-GNU*****************************************************************
+
+File: trsp.c
+
+Generated with Template by:
+Copyright (c) 2013 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+#include "c_common/postgres_connection.h"
+#include "catalog/pg_type.h"
+#include "c_common/debug_macro.h"
+
+
+#if 0
+#include "utils/array.h"
#include "postgres.h"
#include "executor/spi.h"
#include "funcapi.h"
-#include "catalog/pg_type.h"
#if PGSQL_VERSION > 92
#include "access/htup_details.h"
#endif
#include "fmgr.h"
+#endif
+
#include "trsp.h"
PGDLLEXPORT Datum turn_restrict_shortest_path_vertex(PG_FUNCTION_ARGS);
PGDLLEXPORT Datum turn_restrict_shortest_path_edge(PG_FUNCTION_ARGS);
+#if 0
#undef DEBUG
-//#define DEBUG 1
+// #define DEBUG 1
#ifdef DEBUG
#define DBG(format, arg...) \
elog(NOTICE, format , ## arg)
#else
-#define DBG(format,...) do { ; } while (0)
+#define DBG(format, ...) do { ; } while (0)
+#endif
#endif
+#if 0
// The number of tuples to fetch from the SPI cursor at each iteration
#define TUPLIMIT 1000
-//#ifdef PG_MODULE_MAGIC
-//PG_MODULE_MAGIC;
-//#endif
+// #ifdef PG_MODULE_MAGIC
+// PG_MODULE_MAGIC;
+// #endif
+#endif
-typedef struct edge_columns
-{
+typedef struct edge_columns {
int id;
int source;
int target;
@@ -38,8 +76,7 @@ typedef struct edge_columns
int reverse_cost;
} edge_columns_t;
-typedef struct restrict_columns
-{
+typedef struct restrict_columns {
int target_id;
int via_path;
int to_cost;
@@ -47,26 +84,25 @@ typedef struct restrict_columns
+#if 0
static char *
-text2char(text *in)
-{
+text2char(text *in) {
char *out = palloc(VARSIZE(in));
memcpy(out, VARDATA(in), VARSIZE(in) - VARHDRSZ);
out[VARSIZE(in) - VARHDRSZ] = '\0';
return out;
}
+#endif
static int
-finish(int code, int ret)
-{
- DBG("In finish, trying to disconnect from spi %d",ret);
+finish(int code, int ret) {
+ PGR_DBG("In finish, trying to disconnect from spi %d", ret);
code = SPI_finish();
- if (code != SPI_OK_FINISH )
- {
- elog(ERROR,"couldn't disconnect from SPI");
- return -1 ;
- }
+ if (code != SPI_OK_FINISH) {
+ elog(ERROR, "couldn't disconnect from SPI");
+ return -1;
+ }
return ret;
}
@@ -76,11 +112,10 @@ finish(int code, int ret)
*/
static int
fetch_restrict_columns(SPITupleTable *tuptable,
- restrict_columns_t *restrict_columns)
-{
- restrict_columns->target_id = SPI_fnumber(SPI_tuptable->tupdesc, "target_id");
- restrict_columns->via_path = SPI_fnumber(SPI_tuptable->tupdesc, "via_path");
- restrict_columns->to_cost = SPI_fnumber(SPI_tuptable->tupdesc, "to_cost");
+ restrict_columns_t *restrict_columns) {
+ restrict_columns->target_id = SPI_fnumber(tuptable->tupdesc, "target_id");
+ restrict_columns->via_path = SPI_fnumber(tuptable->tupdesc, "via_path");
+ restrict_columns->to_cost = SPI_fnumber(tuptable->tupdesc, "to_cost");
if (restrict_columns->target_id == SPI_ERROR_NOATTRIBUTE ||
restrict_columns->via_path == SPI_ERROR_NOATTRIBUTE ||
restrict_columns->to_cost == SPI_ERROR_NOATTRIBUTE) {
@@ -89,10 +124,12 @@ fetch_restrict_columns(SPITupleTable *tuptable,
return -1;
}
- if (SPI_gettypeid(SPI_tuptable->tupdesc, restrict_columns->target_id) != INT4OID ||
- SPI_gettypeid(SPI_tuptable->tupdesc, restrict_columns->via_path) != TEXTOID ||
- SPI_gettypeid(SPI_tuptable->tupdesc, restrict_columns->to_cost) != FLOAT8OID) {
- elog(ERROR, "Error, restriction columns 'target_id' must be of type int4, 'via_path' must be of type text, 'to_cost' must be of type float8");
+ if (SPI_gettypeid(tuptable->tupdesc,
+ restrict_columns->target_id) != INT4OID ||
+ SPI_gettypeid(tuptable->tupdesc, restrict_columns->via_path) != TEXTOID ||
+ SPI_gettypeid(tuptable->tupdesc, restrict_columns->to_cost) != FLOAT8OID) {
+ elog(ERROR, "Error, restriction columns 'target_id' must be of type int4,"
+ "'via_path' must be of type text, 'to_cost' must be of type float8");
return -1;
}
@@ -101,72 +138,66 @@ fetch_restrict_columns(SPITupleTable *tuptable,
/*
* This function fetches the edge columns from the SPITupleTable.
- *
-*/
+ *
+*/
static int
-fetch_edge_columns(SPITupleTable *tuptable, edge_columns_t *edge_columns,
- bool has_reverse_cost)
-{
- edge_columns->id = SPI_fnumber(SPI_tuptable->tupdesc, "id");
- edge_columns->source = SPI_fnumber(SPI_tuptable->tupdesc, "source");
- edge_columns->target = SPI_fnumber(SPI_tuptable->tupdesc, "target");
- edge_columns->cost = SPI_fnumber(SPI_tuptable->tupdesc, "cost");
+fetch_edge_columns(SPITupleTable *tuptable, edge_columns_t *edge_columns,
+ bool has_reverse_cost) {
+ edge_columns->id = SPI_fnumber(tuptable->tupdesc, "id");
+ edge_columns->source = SPI_fnumber(tuptable->tupdesc, "source");
+ edge_columns->target = SPI_fnumber(tuptable->tupdesc, "target");
+ edge_columns->cost = SPI_fnumber(tuptable->tupdesc, "cost");
if (edge_columns->id == SPI_ERROR_NOATTRIBUTE ||
edge_columns->source == SPI_ERROR_NOATTRIBUTE ||
edge_columns->target == SPI_ERROR_NOATTRIBUTE ||
- edge_columns->cost == SPI_ERROR_NOATTRIBUTE)
- {
+ edge_columns->cost == SPI_ERROR_NOATTRIBUTE) {
elog(ERROR, "Error, query must return columns "
"'id', 'source', 'target' and 'cost'");
return -1;
}
- if (SPI_gettypeid(SPI_tuptable->tupdesc, edge_columns->source) != INT4OID ||
- SPI_gettypeid(SPI_tuptable->tupdesc, edge_columns->target) != INT4OID ||
- SPI_gettypeid(SPI_tuptable->tupdesc, edge_columns->cost) != FLOAT8OID)
- {
- elog(ERROR, "Error, columns 'source', 'target' must be of type int4, 'cost' must be of type float8");
+ if (SPI_gettypeid(tuptable->tupdesc, edge_columns->source) != INT4OID ||
+ SPI_gettypeid(tuptable->tupdesc, edge_columns->target) != INT4OID ||
+ SPI_gettypeid(tuptable->tupdesc, edge_columns->cost) != FLOAT8OID) {
+ elog(ERROR, "Error, columns 'source', 'target' must be of type int4, "
+ "'cost' must be of type float8");
return -1;
}
- DBG("columns: id %i source %i target %i cost %i",
- edge_columns->id, edge_columns->source,
+ PGR_DBG("columns: id %i source %i target %i cost %i",
+ edge_columns->id, edge_columns->source,
edge_columns->target, edge_columns->cost);
- if (has_reverse_cost)
- {
- edge_columns->reverse_cost = SPI_fnumber(SPI_tuptable->tupdesc,
+ if (has_reverse_cost) {
+ edge_columns->reverse_cost = SPI_fnumber(tuptable->tupdesc,
"reverse_cost");
- if (edge_columns->reverse_cost == SPI_ERROR_NOATTRIBUTE)
- {
+ if (edge_columns->reverse_cost == SPI_ERROR_NOATTRIBUTE) {
elog(ERROR, "Error, reverse_cost is used, but query did't return "
"'reverse_cost' column");
return -1;
}
- if (SPI_gettypeid(SPI_tuptable->tupdesc, edge_columns->reverse_cost)
- != FLOAT8OID)
- {
+ if (SPI_gettypeid(tuptable->tupdesc, edge_columns->reverse_cost)
+ != FLOAT8OID) {
elog(ERROR, "Error, columns 'reverse_cost' must be of type float8");
return -1;
}
- DBG("columns: reverse_cost cost %i", edge_columns->reverse_cost);
+ PGR_DBG("columns: reverse_cost cost %i", edge_columns->reverse_cost);
}
-
+
return 0;
}
/*
* To fetch a edge from Tuple.
- *
+ *
*/
-
+
static void
-fetch_edge(HeapTuple *tuple, TupleDesc *tupdesc,
- edge_columns_t *edge_columns, edge_t *target_edge)
-{
+fetch_edge(HeapTuple *tuple, TupleDesc *tupdesc,
+ edge_columns_t *edge_columns, edge_t *target_edge) {
Datum binval;
bool isnull;
@@ -190,9 +221,8 @@ fetch_edge(HeapTuple *tuple, TupleDesc *tupdesc,
elog(ERROR, "cost contains a null value");
target_edge->cost = DatumGetFloat8(binval);
- if (edge_columns->reverse_cost != -1)
- {
- binval = SPI_getbinval(*tuple, *tupdesc, edge_columns->reverse_cost,
+ if (edge_columns->reverse_cost != -1) {
+ binval = SPI_getbinval(*tuple, *tupdesc, edge_columns->reverse_cost,
&isnull);
if (isnull)
elog(ERROR, "reverse_cost contains a null value");
@@ -200,7 +230,7 @@ fetch_edge(HeapTuple *tuple, TupleDesc *tupdesc,
}
/*
- DBG("edge: %i, %i, %i, %f, %f", target_edge->id, target_edge->source,
+ PGR_DBG("edge: %i, %i, %i, %f, %f", target_edge->id, target_edge->source,
target_edge->target, target_edge->cost, target_edge->reverse_cost);
*/
}
@@ -208,21 +238,21 @@ fetch_edge(HeapTuple *tuple, TupleDesc *tupdesc,
/*
* To fetch a edge from Tuple.
- *
+ *
*/
-
+
static void
-fetch_restrict(HeapTuple *tuple, TupleDesc *tupdesc,
- restrict_columns_t *restrict_columns, restrict_t *rest)
-{
+fetch_restrict(HeapTuple *tuple, TupleDesc *tupdesc,
+ restrict_columns_t *restrict_columns, restrict_t *rest) {
Datum binval;
bool isnull;
int t;
- for(t=0; t<MAX_RULE_LENGTH;++t)
+ for (t = 0; t < MAX_RULE_LENGTH; ++t)
rest->via[t] = -1;
- binval = SPI_getbinval(*tuple, *tupdesc, restrict_columns->target_id, &isnull);
+ binval = SPI_getbinval(*tuple, *tupdesc, restrict_columns->target_id,
+ &isnull);
if (isnull)
elog(ERROR, "target_id contains a null value");
rest->target_id = DatumGetInt32(binval);
@@ -231,25 +261,24 @@ fetch_restrict(HeapTuple *tuple, TupleDesc *tupdesc,
if (isnull)
elog(ERROR, "to_cost contains a null value");
rest->to_cost = DatumGetFloat8(binval);
- char *str = DatumGetCString(SPI_getvalue(*tuple, *tupdesc, restrict_columns->via_path));
+ char *str = DatumGetCString(SPI_getvalue(*tuple, *tupdesc,
+ restrict_columns->via_path));
- //DBG("restriction: %f, %i, %s", rest->to_cost, rest->target_id, str);
+ // PGR_DBG("restriction: %f, %i, %s", rest->to_cost, rest->target_id, str);
if (str != NULL) {
char* pch = NULL;
int ci = 0;
- pch = (char *)strtok (str," ,");
+ pch = (char *)strtok(str, " ,");
- while (pch != NULL && ci < MAX_RULE_LENGTH)
- {
+ while (pch != NULL && ci < MAX_RULE_LENGTH) {
rest->via[ci] = atoi(pch);
- //DBG(" rest->via[%i]=%i", ci, rest->via[ci]);
+ // PGR_DBG(" rest->via[%i]=%i", ci, rest->via[ci]);
ci++;
- pch = (char *)strtok (NULL, " ,");
+ pch = (char *)strtok(NULL, " ,");
}
}
-
}
@@ -257,37 +286,37 @@ fetch_restrict(HeapTuple *tuple, TupleDesc *tupdesc,
static int compute_trsp(
char* sql,
int dovertex,
- int start_id,
+ int64_t start_id,
double start_pos,
- int end_id,
+ int64_t end_id,
double end_pos,
- bool directed,
+ bool directed,
bool has_reverse_cost,
char* restrict_sql,
- path_element_t **path,
- int *path_count)
-{
+ path_element_tt **path,
+ size_t *path_count) {
int SPIcode;
SPIPlanPtr SPIplan;
Portal SPIportal;
bool moredata = TRUE;
- int ntuples;
+ uint32_t TUPLIMIT = 1000;
+ uint32_t ntuples;
edge_t *edges = NULL;
- int total_tuples = 0;
+ uint32_t total_tuples = 0;
#ifndef _MSC_VER
- edge_columns_t edge_columns = {.id= -1, .source= -1, .target= -1,
- .cost= -1, .reverse_cost= -1};
-#else // _MSC_VER
+ edge_columns_t edge_columns = {.id = -1, .source = -1, .target = -1,
+ .cost = -1, .reverse_cost = -1};
+#else // _MSC_VER
edge_columns_t edge_columns = {-1, -1, -1, -1, -1};
-#endif //_MSC_VER
+#endif // _MSC_VER
restrict_t *restricts = NULL;
- int total_restrict_tuples = 0;
- restrict_columns_t restrict_columns = {.target_id= -1, .via_path= -1,
- .to_cost= -1};
- int v_max_id=0;
- int v_min_id=INT_MAX;
+ uint32_t total_restrict_tuples = 0;
+ restrict_columns_t restrict_columns = {.target_id = -1, .via_path = -1,
+ .to_cost = -1};
+ int64_t v_max_id = 0;
+ int64_t v_min_id = INT_MAX;
/* track if start and end are both in edge tuples */
int s_count = 0;
@@ -295,29 +324,32 @@ static int compute_trsp(
char *err_msg;
int ret = -1;
- register int z;
+ uint32_t z;
+
+ PGR_DBG("start turn_restrict_shortest_path\n");
- DBG("start turn_restrict_shortest_path\n");
-
SPIcode = SPI_connect();
if (SPIcode != SPI_OK_CONNECT) {
- elog(ERROR, "turn_restrict_shortest_path: couldn't open a connection to SPI");
+ elog(ERROR, "turn_restrict_shortest_path: "
+ "couldn't open a connection to SPI");
return -1;
}
SPIplan = SPI_prepare(sql, 0, NULL);
if (SPIplan == NULL) {
- elog(ERROR, "turn_restrict_shortest_path: couldn't create query plan via SPI");
+ elog(ERROR, "turn_restrict_shortest_path: "
+ "couldn't create query plan via SPI");
return -1;
}
if ((SPIportal = SPI_cursor_open(NULL, SPIplan, NULL, NULL, true)) == NULL) {
- elog(ERROR, "turn_restrict_shortest_path: SPI_cursor_open('%s') returns NULL", sql);
+ elog(ERROR, "turn_restrict_shortest_path: "
+ "SPI_cursor_open('%s') returns NULL", sql);
return -1;
}
while (moredata == TRUE) {
- //DBG("calling SPI_cursor_fetch");
+ // PGR_DBG("calling SPI_cursor_fetch");
SPI_cursor_fetch(SPIportal, TRUE, TUPLIMIT);
if (SPI_tuptable == NULL) {
@@ -326,14 +358,14 @@ static int compute_trsp(
}
if (edge_columns.id == -1) {
- if (fetch_edge_columns(SPI_tuptable, &edge_columns,
+ if (fetch_edge_columns(SPI_tuptable, &edge_columns,
has_reverse_cost) == -1)
- return finish(SPIcode, ret);
+ return finish(SPIcode, ret);
}
ntuples = SPI_processed;
- //DBG("Reading edges: %i - %i", total_tuples, total_tuples+ntuples);
+ // PGR_DBG("Reading edges: %i - %i", total_tuples, total_tuples+ntuples);
total_tuples += ntuples;
@@ -345,107 +377,106 @@ static int compute_trsp(
if (edges == NULL) {
elog(ERROR, "Out of memory");
- return finish(SPIcode, ret);
+ return finish(SPIcode, ret);
}
- int t;
+ uint32_t t;
SPITupleTable *tuptable = SPI_tuptable;
TupleDesc tupdesc = SPI_tuptable->tupdesc;
-
+
for (t = 0; t < ntuples; t++) {
- //if (t%100 == 0) { DBG(" t: %i", t); }
+ // if (t%100 == 0) { PGR_DBG(" t: %i", t); }
HeapTuple tuple = tuptable->vals[t];
- fetch_edge(&tuple, &tupdesc, &edge_columns,
+ fetch_edge(&tuple, &tupdesc, &edge_columns,
&edges[total_tuples - ntuples + t]);
}
- //DBG("calling SPI_freetuptable");
+ // PGR_DBG("calling SPI_freetuptable");
SPI_freetuptable(tuptable);
- //DBG("back from SPI_freetuptable");
- }
- else {
+ // PGR_DBG("back from SPI_freetuptable");
+ } else {
moredata = FALSE;
}
}
SPI_cursor_close(SPIportal);
- //defining min and max vertex id
-
- //DBG("Total %i edge tuples", total_tuples);
-
- for(z=0; z<total_tuples; z++) {
- if(edges[z].source<v_min_id)
- v_min_id=edges[z].source;
-
- if(edges[z].source>v_max_id)
- v_max_id=edges[z].source;
-
- if(edges[z].target<v_min_id)
- v_min_id=edges[z].target;
-
- if(edges[z].target>v_max_id)
- v_max_id=edges[z].target;
-
- //DBG("%i <-> %i", v_min_id, v_max_id);
-
+ // defining min and max vertex id
+
+ // DBG("Total %i edge tuples", total_tuples);
+
+ for (z = 0; z < total_tuples; z++) {
+ if (edges[z].source < v_min_id)
+ v_min_id = edges[z].source;
+
+ if (edges[z].source > v_max_id)
+ v_max_id = edges[z].source;
+
+ if (edges[z].target < v_min_id)
+ v_min_id = edges[z].target;
+
+ if (edges[z].target > v_max_id)
+ v_max_id = edges[z].target;
+
+ // DBG("%i <-> %i", v_min_id, v_max_id);
}
-
- //::::::::::::::::::::::::::::::::::::
- //:: reducing vertex id (renumbering)
- //::::::::::::::::::::::::::::::::::::
- for(z=0; z<total_tuples; z++) {
- //check if edges[] contains source and target
+
+ // ::::::::::::::::::::::::::::::::::::
+ // :: reducing vertex id (renumbering)
+ // ::::::::::::::::::::::::::::::::::::
+ for (z = 0; z < total_tuples; z++) {
+ // check if edges[] contains source and target
if (dovertex) {
- if(edges[z].source == start_id || edges[z].target == start_id)
+ if (edges[z].source == start_id || edges[z].target == start_id)
++s_count;
- if(edges[z].source == end_id || edges[z].target == end_id)
+ if (edges[z].source == end_id || edges[z].target == end_id)
++t_count;
- }
- else {
- if(edges[z].id == start_id)
+ } else {
+ if (edges[z].id == start_id)
++s_count;
- if(edges[z].id == end_id)
+ if (edges[z].id == end_id)
++t_count;
}
- edges[z].source-=v_min_id;
- edges[z].target-=v_min_id;
+ edges[z].source -= v_min_id;
+ edges[z].target -= v_min_id;
edges[z].cost = edges[z].cost;
- //DBG("edgeID: %i SRc:%i - %i, cost: %f", edges[z].id,edges[z].source, edges[z].target,edges[z].cost);
-
+ // PGR_DBG("edgeID: %i SRc:%i - %i, cost: %f",
+ // edges[z].id,edges[z].source, edges[z].target,edges[z].cost);
}
- DBG("Min vertex id: %i , Max vid: %i",v_min_id,v_max_id);
- DBG("Total %i edge tuples", total_tuples);
+ PGR_DBG("Min vertex id: %ld , Max vid: %ld", v_min_id, v_max_id);
+ PGR_DBG("Total %i edge tuples", total_tuples);
- if(s_count == 0) {
+ if (s_count == 0) {
elog(ERROR, "Start id was not found.");
return -1;
}
-
- if(t_count == 0) {
+
+ if (t_count == 0) {
elog(ERROR, "Target id was not found.");
return -1;
}
-
+
if (dovertex) {
start_id -= v_min_id;
end_id -= v_min_id;
}
-
- DBG("Fetching restriction tuples\n");
-
+
+ PGR_DBG("Fetching restriction tuples\n");
+
if (restrict_sql == NULL) {
- DBG("Sql for restrictions is null.");
- }
- else {
+ PGR_DBG("Sql for restrictions is null.");
+ } else {
SPIplan = SPI_prepare(restrict_sql, 0, NULL);
if (SPIplan == NULL) {
- elog(ERROR, "turn_restrict_shortest_path: couldn't create query plan via SPI");
+ elog(ERROR, "turn_restrict_shortest_path: "
+ "couldn't create query plan via SPI");
return -1;
}
- if ((SPIportal = SPI_cursor_open(NULL, SPIplan, NULL, NULL, true)) == NULL) {
- elog(ERROR, "turn_restrict_shortest_path: SPI_cursor_open('%s') returns NULL", restrict_sql);
+ if ((SPIportal = SPI_cursor_open(NULL, SPIplan, NULL, NULL, true)) \
+ == NULL) {
+ elog(ERROR, "turn_restrict_shortest_path:"
+ " SPI_cursor_open('%s') returns NULL", restrict_sql);
return -1;
}
@@ -454,8 +485,9 @@ static int compute_trsp(
SPI_cursor_fetch(SPIportal, TRUE, TUPLIMIT);
if (restrict_columns.target_id == -1) {
- if (fetch_restrict_columns(SPI_tuptable, &restrict_columns) == -1) {
- DBG("fetch_restrict_columns failed!");
+ if (fetch_restrict_columns(SPI_tuptable, &restrict_columns) \
+ == -1) {
+ PGR_DBG("fetch_restrict_columns failed!");
return finish(SPIcode, ret);
}
}
@@ -463,20 +495,21 @@ static int compute_trsp(
ntuples = SPI_processed;
total_restrict_tuples += ntuples;
- //DBG("Reading Restrictions: %i", total_restrict_tuples);
+ // DBG("Reading Restrictions: %i", total_restrict_tuples);
if (ntuples > 0) {
if (!restricts)
restricts = palloc(total_restrict_tuples * sizeof(restrict_t));
else
- restricts = repalloc(restricts, total_restrict_tuples * sizeof(restrict_t));
+ restricts = repalloc(restricts,
+ total_restrict_tuples * sizeof(restrict_t));
if (restricts == NULL) {
elog(ERROR, "Out of memory");
return finish(SPIcode, ret);
}
- int t;
+ uint32_t t;
SPITupleTable *tuptable = SPI_tuptable;
TupleDesc tupdesc = SPI_tuptable->tupdesc;
@@ -486,70 +519,70 @@ static int compute_trsp(
&restricts[total_restrict_tuples - ntuples + t]);
}
SPI_freetuptable(tuptable);
- }
- else {
+ } else {
moredata = FALSE;
}
}
SPI_cursor_close(SPIportal);
-
}
#ifdef DEBUG_OFF
int t;
- for (t=0; t<total_restrict_tuples; t++) {
- DBG("restricts: %.2f, %i, %i, %i, %i, %i, %i", restricts[t].to_cost, restricts[t].target_id, restricts[t].via[0], restricts[t].via[1], restricts[t].via[2], restricts[t].via[3], restricts[t].via[4]);
+ for (t=0; t < total_restrict_tuples; t++) {
+ PGR_DBG("restricts: %.2f, %i, %i, %i, %i, %i, %i",
+ restricts[t].to_cost, restricts[t].target_id, restricts[t].via[0],
+ restricts[t].via[1], restricts[t].via[2], restricts[t].via[3],
+ restricts[t].via[4]);
}
#endif
- DBG("Total %i restriction tuples", total_restrict_tuples);
+ PGR_DBG("Total %i restriction tuples", total_restrict_tuples);
if (dovertex) {
- DBG("Calling trsp_node_wrapper\n");
- /** hack always returns 0 -1 when installed on EDB VC++ 64-bit without this **/
- #if defined(__MINGW64__)
+ PGR_DBG("Calling trsp_node_wrapper\n");
+ /** hack always returns 0 -1 when
+ installed on EDB VC++ 64-bit without this **/
+ #if defined(__MINGW64__)
// elog(NOTICE,"Calling trsp_node_wrapper\n");
#endif
- ret = trsp_node_wrapper(edges, total_tuples,
+ ret = trsp_node_wrapper(edges, total_tuples,
restricts, total_restrict_tuples,
start_id, end_id,
directed, has_reverse_cost,
path, path_count, &err_msg);
- }
- else {
- DBG("Calling trsp_edge_wrapper\n");
- ret = trsp_edge_wrapper(edges, total_tuples,
+ } else {
+ PGR_DBG("Calling trsp_edge_wrapper\n");
+ ret = trsp_edge_wrapper(edges, total_tuples,
restricts, total_restrict_tuples,
start_id, start_pos, end_id, end_pos,
directed, has_reverse_cost,
path, path_count, &err_msg);
}
- DBG("Message received from inside:");
- DBG("%s",err_msg);
+ PGR_DBG("Message received from inside:");
+ PGR_DBG("%s", err_msg);
- //DBG("SIZE %i\n",*path_count);
+ // DBG("SIZE %i\n",*path_count);
- //::::::::::::::::::::::::::::::::
- //:: restoring original vertex id
- //::::::::::::::::::::::::::::::::
- for(z=0;z<*path_count;z++) {
- //DBG("vetex %i\n",(*path)[z].vertex_id);
+ // ::::::::::::::::::::::::::::::::
+ // :: restoring original vertex id
+ // ::::::::::::::::::::::::::::::::
+ for (z = 0; z < *path_count; z++) {
+ // PGR_DBG("vetex %i\n",(*path)[z].vertex_id);
if (z || (*path)[z].vertex_id != -1)
- (*path)[z].vertex_id+=v_min_id;
+ (*path)[z].vertex_id += v_min_id;
}
- DBG("ret = %i\n", ret);
+ PGR_DBG("ret = %i\n", ret);
- DBG("*path_count = %i\n", *path_count);
+ PGR_DBG("*path_count = %ld\n", *path_count);
- if (ret < 0)
- {
- //elog(ERROR, "Error computing path: %s", err_msg);
- ereport(ERROR, (errcode(ERRCODE_E_R_E_CONTAINING_SQL_NOT_PERMITTED),
+ if (ret < 0) {
+ // elog(ERROR, "Error computing path: %s", err_msg);
+ ereport(ERROR, (errcode(ERRCODE_E_R_E_CONTAINING_SQL_NOT_PERMITTED),
errmsg("Error computing path: %s", err_msg)));
- }
-
+ }
+
return finish(SPIcode, ret);
}
@@ -557,24 +590,24 @@ static int compute_trsp(
PG_FUNCTION_INFO_V1(turn_restrict_shortest_path_vertex);
PGDLLEXPORT Datum
-turn_restrict_shortest_path_vertex(PG_FUNCTION_ARGS)
-{
-
+turn_restrict_shortest_path_vertex(PG_FUNCTION_ARGS) {
FuncCallContext *funcctx;
- int call_cntr;
+#if 0
+ uint32_t call_cntr;
int max_calls;
+#endif
TupleDesc tuple_desc;
- path_element_t *path;
+ path_element_tt *path;
char * sql;
- // stuff done only on the first call of the function
+ // stuff done only on the first call of the function
if (SRF_IS_FIRSTCALL()) {
MemoryContext oldcontext;
- int path_count = 0;
+ size_t path_count = 0;
int ret = -1;
- if (ret == -1) {}; // to avoid warning set but not used
+ if (ret == -1) {} // to avoid warning set but not used
int i;
@@ -585,71 +618,78 @@ turn_restrict_shortest_path_vertex(PG_FUNCTION_ARGS)
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
// verify that the first 5 args are not NULL
- for (i=0; i<5; i++)
- if(PG_ARGISNULL(i)) {
- elog(ERROR, "turn_restrict_shortest_path(): Argument %i may not be NULL", i+1);
+ for (i = 0; i < 5; i++)
+ if (PG_ARGISNULL(i)) {
+ elog(ERROR, "turn_restrict_shortest_path(): "
+ "Argument %i may not be NULL", i+1);
}
-
- if (PG_ARGISNULL(5))
+
+ if (PG_ARGISNULL(5)) {
sql = NULL;
- else {
- sql = text2char(PG_GETARG_TEXT_P(5));
+ } else {
+ sql = text_to_cstring(PG_GETARG_TEXT_P(5));
if (strlen(sql) == 0)
sql = NULL;
}
- DBG("Calling compute_trsp");
-
+ PGR_DBG("Calling compute_trsp");
- ret =
- compute_trsp(text2char(PG_GETARG_TEXT_P(0)),
- 1, // do vertex
+ ret = compute_trsp(text_to_cstring(PG_GETARG_TEXT_P(0)),
+ 1, // do vertex
PG_GETARG_INT32(1),
0.5,
PG_GETARG_INT32(2),
0.5,
PG_GETARG_BOOL(3),
- PG_GETARG_BOOL(4),
+ PG_GETARG_BOOL(4),
sql,
&path, &path_count);
#ifdef DEBUG
- double total_cost = 0;
- DBG("Ret is %i", ret);
- if (ret >= 0)
- {
+ double total_cost = 0;
+ PGR_DBG("Ret is %i", ret);
+ if (ret >= 0) {
int i;
- for (i = 0; i < path_count; i++)
- {
- // DBG("Step %i vertex_id %i ", i, path[i].vertex_id);
- // DBG(" edge_id %i ", path[i].edge_id);
- // DBG(" cost %f ", path[i].cost);
- total_cost+=path[i].cost;
+ for (i = 0; i < path_count; i++) {
+ // PGR_DBG("Step %i vertex_id %i ", i, path[i].vertex_id);
+ // PGR_DBG(" edge_id %i ", path[i].edge_id);
+ // PGR_DBG(" cost %f ", path[i].cost);
+ total_cost += path[i].cost;
}
}
- DBG("Total cost is: %f",total_cost);
+ PGR_DBG("Total cost is: %f", total_cost);
#endif
- // total number of tuples to be returned
+ // total number of tuples to be returned
+#if 1
+#if PGSQL_VERSION > 95
+ funcctx->max_calls = path_count;
+#else
+ funcctx->max_calls = (uint32_t)path_count;
+#endif
+#else
funcctx->max_calls = path_count;
+#endif
funcctx->user_fctx = path;
- funcctx->tuple_desc =
+ funcctx->tuple_desc =
BlessTupleDesc(RelationNameGetTupleDesc("pgr_costResult"));
MemoryContextSwitchTo(oldcontext);
}
- // stuff done on every call of the function
+ // stuff done on every call of the function
funcctx = SRF_PERCALL_SETUP();
+#if 0
call_cntr = funcctx->call_cntr;
max_calls = funcctx->max_calls;
+#endif
tuple_desc = funcctx->tuple_desc;
- path = (path_element_t*) funcctx->user_fctx;
+ path = (path_element_tt*) funcctx->user_fctx;
- if (call_cntr < max_calls) // do when there is more left to send
- {
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ // do when there is more left to send
HeapTuple tuple;
Datum result;
Datum *values;
@@ -658,29 +698,27 @@ turn_restrict_shortest_path_vertex(PG_FUNCTION_ARGS)
values = palloc(4 * sizeof(Datum));
nulls = palloc(4 * sizeof(char));
- values[0] = Int32GetDatum(call_cntr);
+ values[0] = Int32GetDatum(funcctx->call_cntr);
nulls[0] = false;
- values[1] = Int32GetDatum(path[call_cntr].vertex_id);
+ values[1] = Int32GetDatum(path[funcctx->call_cntr].vertex_id);
nulls[1] = false;
- values[2] = Int32GetDatum(path[call_cntr].edge_id);
+ values[2] = Int32GetDatum(path[funcctx->call_cntr].edge_id);
nulls[2] = false;
- values[3] = Float8GetDatum(path[call_cntr].cost);
+ values[3] = Float8GetDatum(path[funcctx->call_cntr].cost);
nulls[3] = false;
-
+
tuple = heap_form_tuple(tuple_desc, values, nulls);
- // make the tuple into a datum
+ // make the tuple into a datum
result = HeapTupleGetDatum(tuple);
- // clean up (this is not really necessary)
+ // clean up (this is not really necessary)
pfree(values);
pfree(nulls);
SRF_RETURN_NEXT(funcctx, result);
- }
- else // do when there is no more left
- {
- DBG("Going to free path");
+ } else { // do when there is no more left
+ PGR_DBG("Going to free path");
if (path) free(path);
SRF_RETURN_DONE(funcctx);
}
@@ -688,20 +726,20 @@ turn_restrict_shortest_path_vertex(PG_FUNCTION_ARGS)
PG_FUNCTION_INFO_V1(turn_restrict_shortest_path_edge);
PGDLLEXPORT Datum
-turn_restrict_shortest_path_edge(PG_FUNCTION_ARGS)
-{
-
+turn_restrict_shortest_path_edge(PG_FUNCTION_ARGS) {
FuncCallContext *funcctx;
- int call_cntr;
- int max_calls;
+#if 0
+ uint32_t call_cntr;
+ uint32_t max_calls;
+#endif
TupleDesc tuple_desc;
- path_element_t *path;
+ path_element_tt *path;
char * sql;
- // stuff done only on the first call of the function
+ // stuff done only on the first call of the function
if (SRF_IS_FIRSTCALL()) {
MemoryContext oldcontext;
- int path_count = 0;
+ size_t path_count = 0;
#ifdef DEBUG
int ret = -1;
#endif
@@ -716,89 +754,98 @@ turn_restrict_shortest_path_edge(PG_FUNCTION_ARGS)
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
// verify that the first 5 args are not NULL
- for (i=0; i<7; i++) {
- if(i==2 || i==4) continue;
- if(PG_ARGISNULL(i)) {
- elog(ERROR, "turn_restrict_shortest_path(): Argument %i may not be NULL", i+1);
+ for (i = 0; i < 7; i++) {
+ if (i == 2 || i == 4) continue;
+ if (PG_ARGISNULL(i)) {
+ elog(ERROR, "turn_restrict_shortest_path(): "
+ "Argument %i may not be NULL", i+1);
}
}
- if (PG_ARGISNULL(2))
+ if (PG_ARGISNULL(2)) {
s_pos = 0.5;
- else {
+ } else {
s_pos = PG_GETARG_FLOAT8(2);
if (s_pos < 0.0) s_pos = 0.5;
if (s_pos > 1.0) s_pos = 0.5;
}
-
- if (PG_ARGISNULL(4))
+
+ if (PG_ARGISNULL(4)) {
e_pos = 0.5;
- else {
+ } else {
e_pos = PG_GETARG_FLOAT8(4);
if (e_pos < 0.0) e_pos = 0.5;
if (e_pos > 1.0) e_pos = 0.5;
}
-
- if (PG_ARGISNULL(7))
+
+ if (PG_ARGISNULL(7)) {
sql = NULL;
- else {
- sql = text2char(PG_GETARG_TEXT_P(7));
+ } else {
+ sql = text_to_cstring(PG_GETARG_TEXT_P(7));
if (strlen(sql) == 0)
sql = NULL;
}
- DBG("Calling compute_trsp");
+ PGR_DBG("Calling compute_trsp");
#ifdef DEBUG
ret =
#endif
- compute_trsp(text2char(PG_GETARG_TEXT_P(0)),
- 0, //sdo edge
+ compute_trsp(text_to_cstring(PG_GETARG_TEXT_P(0)),
+ 0, // sdo edge
PG_GETARG_INT32(1),
s_pos,
PG_GETARG_INT32(3),
e_pos,
PG_GETARG_BOOL(5),
- PG_GETARG_BOOL(6),
+ PG_GETARG_BOOL(6),
sql,
&path, &path_count);
#ifdef DEBUG
- double total_cost = 0;
- DBG("Ret is %i", ret);
- if (ret >= 0)
- {
+ double total_cost = 0;
+ PGR_DBG("Ret is %i", ret);
+ if (ret >= 0) {
int i;
- for (i = 0; i < path_count; i++)
- {
- // DBG("Step %i vertex_id %i ", i, path[i].vertex_id);
- // DBG(" edge_id %i ", path[i].edge_id);
- // DBG(" cost %f ", path[i].cost);
+ for (i = 0; i < path_count; i++) {
+ // PGR_DBG("Step %i vertex_id %i ", i, path[i].vertex_id);
+ // PGR_DBG(" edge_id %i ", path[i].edge_id);
+ // PGR_DBG(" cost %f ", path[i].cost);
total_cost+=path[i].cost;
}
}
- DBG("Total cost is: %f",total_cost);
+ PGR_DBG("Total cost is: %f", total_cost);
#endif
- // total number of tuples to be returned
+ // total number of tuples to be returned
+#if 1
+#if PGSQL_VERSION > 95
+ funcctx->max_calls = path_count;
+#else
+ funcctx->max_calls = (uint32_t)path_count;
+#endif
+#else
funcctx->max_calls = path_count;
+#endif
funcctx->user_fctx = path;
- funcctx->tuple_desc =
+ funcctx->tuple_desc =
BlessTupleDesc(RelationNameGetTupleDesc("pgr_costResult"));
MemoryContextSwitchTo(oldcontext);
}
- // stuff done on every call of the function
+ // stuff done on every call of the function
funcctx = SRF_PERCALL_SETUP();
+#if 0
call_cntr = funcctx->call_cntr;
max_calls = funcctx->max_calls;
+#endif
tuple_desc = funcctx->tuple_desc;
- path = (path_element_t*) funcctx->user_fctx;
+ path = (path_element_tt*) funcctx->user_fctx;
- if (call_cntr < max_calls) // do when there is more left to send
- {
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ // do when there is more left to send
HeapTuple tuple;
Datum result;
Datum *values;
@@ -807,29 +854,27 @@ turn_restrict_shortest_path_edge(PG_FUNCTION_ARGS)
values = palloc(4 * sizeof(Datum));
nulls = palloc(4 * sizeof(char));
- values[0] = Int32GetDatum(call_cntr);
+ values[0] = Int32GetDatum(funcctx->call_cntr);
nulls[0] = false;
- values[1] = Int32GetDatum(path[call_cntr].vertex_id);
+ values[1] = Int32GetDatum(path[funcctx->call_cntr].vertex_id);
nulls[1] = false;
- values[2] = Int32GetDatum(path[call_cntr].edge_id);
+ values[2] = Int32GetDatum(path[funcctx->call_cntr].edge_id);
nulls[2] = false;
- values[3] = Float8GetDatum(path[call_cntr].cost);
+ values[3] = Float8GetDatum(path[funcctx->call_cntr].cost);
nulls[3] = false;
-
+
tuple = heap_form_tuple(tuple_desc, values, nulls);
- // make the tuple into a datum
+ // make the tuple into a datum
result = HeapTupleGetDatum(tuple);
- // clean up (this is not really necessary)
+ // clean up (this is not really necessary)
pfree(values);
pfree(nulls);
SRF_RETURN_NEXT(funcctx, result);
- }
- else // do when there is no more left
- {
- DBG("Going to free path");
+ } else { // do when there is no more left
+ PGR_DBG("Going to free path");
if (path) free(path);
SRF_RETURN_DONE(funcctx);
}
diff --git a/src/trsp/src/trsp.h b/src/trsp/src/trsp.h
index 03961cc..43afd67 100644
--- a/src/trsp/src/trsp.h
+++ b/src/trsp/src/trsp.h
@@ -18,74 +18,74 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
-
-#ifndef _TRSP_H
-#define _TRSP_H
+
+#ifndef SRC_TRSP_SRC_TRSP_H_
+#define SRC_TRSP_SRC_TRSP_H_
#define MAX_RULE_LENGTH 5
#include "postgres.h"
+#include <stdint.h>
+
-typedef struct edge
-{
- int id;
+typedef struct edge {
+ long id;
long source;
long target;
float8 cost;
float8 reverse_cost;
} edge_t;
-typedef struct restrict_struct
-{
- int target_id;
- float8 to_cost;
- int via[MAX_RULE_LENGTH];
-}
+typedef struct restrict_struct {
+ int target_id;
+ float8 to_cost;
+ int via[MAX_RULE_LENGTH];
+}
restrict_t;
-typedef struct path_element
-{
+typedef struct path_element {
long vertex_id;
long edge_id;
float8 cost;
-} path_element_t;
+} path_element_tt;
#ifdef __cplusplus
-extern "C"
+extern "C" {
#endif
int trsp_node_wrapper(
- edge_t *edges,
- unsigned int edge_count,
- restrict_t *restricts,
- int restrict_count,
- int start_vertex,
- int end_vertex,
- bool directed,
- bool has_reverse_cost,
- path_element_t **path,
- int *path_count,
- char **err_msg
- );
+ edge_t *edges,
+ size_t edge_count,
+ restrict_t *restricts,
+ size_t restrict_count,
+ int64_t start_vertex,
+ int64_t end_vertex,
+ bool directed,
+ bool has_reverse_cost,
+ path_element_tt **path,
+ size_t *path_count,
+ char **err_msg
+);
-#ifdef __cplusplus
-extern "C"
-#endif
int trsp_edge_wrapper(
- edge_t *edges,
- unsigned int edge_count,
- restrict_t *restricts,
- int restrict_count,
- int start_edge,
- double start_pos,
- int end_edge,
- double end_pos,
- bool directed,
- bool has_reverse_cost,
- path_element_t **path,
- int *path_count,
- char **err_msg
- );
+ edge_t *edges,
+ size_t edge_count,
+ restrict_t *restricts,
+ size_t restrict_count,
+ int64_t start_edge,
+ double start_pos,
+ int64_t end_edge,
+ double end_pos,
+ bool directed,
+ bool has_reverse_cost,
+ path_element_tt **path,
+ size_t *path_count,
+ char **err_msg
+);
+#ifdef __cplusplus
+}
#endif
+
+#endif // SRC_TRSP_SRC_TRSP_H_
diff --git a/src/trsp/src/trsp_core.cpp b/src/trsp/src/trsp_core.cpp
index 21801c5..0e8c371 100644
--- a/src/trsp/src/trsp_core.cpp
+++ b/src/trsp/src/trsp_core.cpp
@@ -1,3 +1,29 @@
+/*PGR-GNU*****************************************************************
+
+File: trsp_core.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at 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*/
+
#ifdef __MINGW32__
#include <winsock2.h>
#include <windows.h>
@@ -9,37 +35,35 @@
int trsp_node_wrapper(
edge_t *edges,
- unsigned int edge_count,
+ size_t edge_count,
restrict_t *restricts,
- int restrict_count,
- int start_vertex,
- int end_vertex,
+ size_t restrict_count,
+ int64_t start_vertex,
+ int64_t end_vertex,
bool directed,
bool has_reverse_cost,
- path_element_t **path,
- int *path_count,
+ path_element_tt **path,
+ size_t *path_count,
char **err_msg
- )
-{
+ ) {
try {
-
std::vector<PDVI> ruleTable;
- int i, j;
+ size_t i, j;
ruleTable.clear();
- for (i=0; i<restrict_count; i++) {
- std::vector<int> seq;
+ for (i = 0; i < restrict_count; i++) {
+ std::vector<long> seq;
seq.clear();
seq.push_back(restricts[i].target_id);
- for(j = 0; j<MAX_RULE_LENGTH && restricts[i].via[j]>-1; j++)
- {
+ for (j = 0; j < MAX_RULE_LENGTH && restricts[i].via[j] > -1; j++) {
seq.push_back(restricts[i].via[j]);
}
ruleTable.push_back(make_pair(restricts[i].to_cost, seq));
}
GraphDefinition gdef;
- int res = gdef.my_dijkstra(edges, edge_count, start_vertex, end_vertex, directed, has_reverse_cost, path, path_count, err_msg, ruleTable);
+ int res = gdef.my_dijkstra(edges, edge_count, start_vertex, end_vertex,
+ directed, has_reverse_cost, path, path_count, err_msg, ruleTable);
if (res < 0)
@@ -59,39 +83,38 @@ int trsp_node_wrapper(
int trsp_edge_wrapper(
edge_t *edges,
- unsigned int edge_count,
+ size_t edge_count,
restrict_t *restricts,
- int restrict_count,
- int start_edge,
+ size_t restrict_count,
+ int64_t start_edge,
double start_pos,
- int end_edge,
+ int64_t end_edge,
double end_pos,
bool directed,
bool has_reverse_cost,
- path_element_t **path,
- int *path_count,
+ path_element_tt **path,
+ size_t *path_count,
char **err_msg
- )
-{
+ ) {
try {
-
std::vector<PDVI> ruleTable;
- int i, j;
+ size_t i, j;
ruleTable.clear();
- for (i=0; i<restrict_count; i++) {
- std::vector<int> seq;
+ for (i = 0; i < restrict_count; i++) {
+ std::vector<long> seq;
seq.clear();
seq.push_back(restricts[i].target_id);
- for(j = 0; j<MAX_RULE_LENGTH && restricts[i].via[j]>-1; j++)
- {
+ for (j = 0; j < MAX_RULE_LENGTH && restricts[i].via[j] >- 1; j++) {
seq.push_back(restricts[i].via[j]);
}
ruleTable.push_back(make_pair(restricts[i].to_cost, seq));
}
GraphDefinition gdef;
- int res = gdef.my_dijkstra(edges, edge_count, start_edge, start_pos, end_edge, end_pos, directed, has_reverse_cost, path, path_count, err_msg, ruleTable);
+ auto res = gdef.my_dijkstra(edges, edge_count, start_edge, start_pos,
+ end_edge, end_pos, directed, has_reverse_cost, path, path_count,
+ err_msg, ruleTable);
if (res < 0)
diff --git a/src/trsp/src/trsp_driver.cpp b/src/trsp/src/trsp_driver.cpp
index b7db59b..3c51a23 100644
--- a/src/trsp/src/trsp_driver.cpp
+++ b/src/trsp/src/trsp_driver.cpp
@@ -34,8 +34,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
int trsp_node_wrapper(
edge_t *edges, size_t edge_count,
restrict_t *restricts, size_t restrict_count,
- int start_vertex,
- int end_vertex,
+ int64_t start_vertex,
+ int64_t end_vertex,
bool directed,
bool has_reverse_cost,
path_element_t **path, size_t *path_count,
@@ -43,25 +43,25 @@ int trsp_node_wrapper(
std::ostringstream log;
try {
-
std::vector<PDVI> ruleTable;
int j;
ruleTable.clear();
- for (size_t i=0; i<restrict_count; i++) {
+ for (size_t i = 0; i < restrict_count; i++) {
std::vector<int64_t> seq;
seq.clear();
seq.push_back(restricts[i].target_id);
- for(j = 0; j<MAX_RULE_LENGTH && restricts[i].via[j]>-1; j++)
- {
+ for (j = 0; j < MAX_RULE_LENGTH && restricts[i].via[j] > -1; j++) {
seq.push_back(restricts[i].via[j]);
}
ruleTable.push_back(make_pair(restricts[i].to_cost, seq));
}
- GraphDefinition gdef(edges, static_cast<unsigned int>(edge_count), directed, has_reverse_cost);
+ GraphDefinition gdef(edges, static_cast<unsigned int>(edge_count),
+ directed, has_reverse_cost);
gdef.set_restrictions(start_vertex, end_vertex, ruleTable);
- int res = gdef.my_dijkstra(start_vertex, end_vertex, path, path_count, log);
+ int res = gdef.my_dijkstra(start_vertex, end_vertex, path, path_count,
+ log);
if (res < 0)
@@ -84,9 +84,9 @@ int trsp_node_wrapper(
int trsp_edge_wrapper(
edge_t *edges, size_t edge_count,
restrict_t *restricts, size_t restrict_count,
- int start_edge,
+ int64_t start_edge,
double start_pos,
- int end_edge,
+ int64_t end_edge,
double end_pos,
bool directed,
bool has_reverse_cost,
@@ -94,23 +94,22 @@ int trsp_edge_wrapper(
char **err_msg) {
std::ostringstream log;
try {
-
std::vector<PDVI> ruleTable;
int j;
ruleTable.clear();
- for (size_t i=0; i<restrict_count; i++) {
+ for (size_t i = 0; i < restrict_count; i++) {
std::vector<int64_t> seq;
seq.clear();
seq.push_back(restricts[i].target_id);
- for(j = 0; j<MAX_RULE_LENGTH && restricts[i].via[j]>-1; j++)
- {
+ for (j = 0; j < MAX_RULE_LENGTH && restricts[i].via[j] >- 1; j++) {
seq.push_back(restricts[i].via[j]);
}
ruleTable.push_back(make_pair(restricts[i].to_cost, seq));
}
- GraphDefinition gdef(edges, static_cast<unsigned int>(edge_count), directed, has_reverse_cost);
+ GraphDefinition gdef(edges, static_cast<unsigned int>(edge_count),
+ directed, has_reverse_cost);
int64_t start_vertex = 0;
int64_t end_vertex = 0;
@@ -120,7 +119,8 @@ int trsp_edge_wrapper(
start_vertex, end_vertex);
gdef.set_restrictions(start_vertex, end_vertex, ruleTable);
- int res = gdef.my_dijkstra(start_vertex, end_vertex, path, path_count, log);
+ int res = gdef.my_dijkstra(start_vertex, end_vertex, path, path_count,
+ log);
if (res < 0)
diff --git a/src/trsp/src/trsp_driver.h b/src/trsp/src/trsp_driver.h
index 22f1505..1bb38cd 100644
--- a/src/trsp/src/trsp_driver.h
+++ b/src/trsp/src/trsp_driver.h
@@ -19,46 +19,46 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-
-#ifndef _TRSP_H
-#define _TRSP_H
+
+#ifndef SRC_TRSP_SRC_TRSP_DRIVER_H_
+#define SRC_TRSP_SRC_TRSP_DRIVER_H_
#define MAX_RULE_LENGTH 5
-#include "../../common/src/pgr_types.h"
+#include "c_types/pgr_types.h"
+
typedef pgr_edge_t edge_t;
typedef Restrict_t restrict_t;
#ifdef __cplusplus
extern "C" {
-#endif
+ #endif
+ int trsp_node_wrapper (
+ edge_t *edges, size_t edge_count,
+ restrict_t *restricts, size_t restrict_count,
+ int64_t start_vertex,
+ int64_t end_vertex,
+ bool directed,
+ bool has_reverse_cost,
+ path_element_t **path, size_t *path_count,
+ char **err_msg
+ );
-int trsp_node_wrapper(
- edge_t *edges, size_t edge_count,
- restrict_t *restricts, size_t restrict_count,
- int start_vertex,
- int end_vertex,
- bool directed,
- bool has_reverse_cost,
- path_element_t **path, size_t *path_count,
- char **err_msg
- );
+ int trsp_edge_wrapper (
+ edge_t *edges, size_t edge_count,
+ restrict_t *restricts, size_t restrict_count,
+ int64_t start_edge,
+ double start_pos,
+ int64_t end_edge,
+ double end_pos,
+ bool directed,
+ bool has_reverse_cost,
+ path_element_t **path, size_t *path_count,
+ char **err_msg
+ );
-
-int trsp_edge_wrapper(
- edge_t *edges, size_t edge_count,
- restrict_t *restricts, size_t restrict_count,
- int start_edge,
- double start_pos,
- int end_edge,
- double end_pos,
- bool directed,
- bool has_reverse_cost,
- path_element_t **path, size_t *path_count,
- char **err_msg
- );
#ifdef __cplusplus
}
#endif
-#endif
+#endif // SRC_TRSP_SRC_TRSP_DRIVER_H_
diff --git a/src/trsp/src/utils.h b/src/trsp/src/utils.h
index 86d3b14..3f2e179 100644
--- a/src/trsp/src/utils.h
+++ b/src/trsp/src/utils.h
@@ -1,6 +1,26 @@
-
-#ifndef UTILS_H
-#define UTILS_H
+/*
+ * Shortest path with turn restrictions algorithm for PostgreSQL
+ *
+ * Copyright (c) 2011 Stephen Woodbridge
+ *
+ * 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.
+ *
+ */
+
+#ifndef SRC_TRSP_SRC_UTILS_H_
+#define SRC_TRSP_SRC_UTILS_H_
#include <string>
#include <map>
@@ -17,90 +37,69 @@ typedef std::vector<double> DoubleVector;
typedef std::vector<std::string> StringVector;
-class StringOperation
-{
-
-public:
-
- static std::string TRIMWHITESPACE(std::string strInput)
- {
- std::string strOut = strInput;
- std::string strWht = " \f\n\r\t\v";
-
- strOut.erase(0,strOut.find_first_not_of(strWht));
- strOut.erase(strOut.find_last_not_of(strWht) + 1);
- return strOut;
- };
+class StringOperation {
+ public:
+ static std::string TRIMWHITESPACE(std::string strInput) {
+ std::string strOut = strInput;
+ std::string strWht = " \f\n\r\t\v";
+ strOut.erase(0, strOut.find_first_not_of(strWht));
+ strOut.erase(strOut.find_last_not_of(strWht) + 1);
+ return strOut;
+ };
};
-class StringTokenizer
-{
-public:
- StringTokenizer()
- {
- reset();
- }
-
- void reset()
- {
- vecTokens.clear();
- strInput = "";
- }
-
- bool parse(std::string strInput, std::string chDelim)
- {
- size_t iStartPos = 0;
- while(true)
- {
- size_t iPos = strInput.find(chDelim[0],iStartPos);
- if(iPos != std::string::npos)
- {
- std::string strToken;
- strToken = strInput.substr(iStartPos,iPos - iStartPos);
- vecTokens.push_back(strToken);
- iStartPos = iPos + 1;
- }
- else if(iPos == std::string::npos && strInput.length() > 0 )
- {
- std::string strToken;
- strToken = strInput.substr(iStartPos, strInput.length() - iStartPos);
- if(strToken.length() > 0)
- vecTokens.push_back(strToken);
- break;
- }
- else
- break;
-
- }
- return true;
- }
-
- size_t getTokenCount()
- {
- return vecTokens.size();
- }
-
- bool getToken(std::string& strToken, long iTokenIndex)
- {
- long lTokenCount = vecTokens.size();
- if(iTokenIndex < 0 || iTokenIndex < lTokenCount)
- {
- strToken = vecTokens[iTokenIndex];
- return true;
- }
- return false;
- }
-
- bool getTokens(StringVector& vecTokensRef)
- {
- vecTokensRef = vecTokens;
- return true;
- }
-
-private:
- std::string strInput;
- StringVector vecTokens;
-
+class StringTokenizer {
+ public:
+ StringTokenizer() {
+ reset();
+ }
+ void reset() {
+ vecTokens.clear();
+ strInput = "";
+ }
+ bool parse(std::string strInput, std::string chDelim) {
+ size_t iStartPos = 0;
+ while (true) {
+ size_t iPos = strInput.find(chDelim[0], iStartPos);
+ if (iPos != std::string::npos) {
+ std::string strToken;
+ strToken = strInput.substr(iStartPos, iPos - iStartPos);
+ vecTokens.push_back(strToken);
+ iStartPos = iPos + 1;
+ } else if (iPos == std::string::npos && strInput.length() > 0) {
+ std::string strToken;
+ strToken = strInput.substr(iStartPos,
+ strInput.length() - iStartPos);
+ if (strToken.length() > 0)
+ vecTokens.push_back(strToken);
+ break;
+ } else {
+ break;
+ }
+ }
+ return true;
+ }
+ size_t getTokenCount() {
+ return vecTokens.size();
+ }
+
+ bool getToken(std::string& strToken, long iTokenIndex) {
+ long lTokenCount = vecTokens.size();
+ if (iTokenIndex < 0 || iTokenIndex < lTokenCount) {
+ strToken = vecTokens[iTokenIndex];
+ return true;
+ }
+ return false;
+ }
+
+ bool getTokens(StringVector& vecTokensRef) {
+ vecTokensRef = vecTokens;
+ return true;
+ }
+
+ private:
+ std::string strInput;
+ StringVector vecTokens;
};
-#endif
+#endif // SRC_TRSP_SRC_UTILS_H_
diff --git a/src/trsp/test/doc-trsp.result b/src/trsp/test/doc-trsp.result
index 8c07191..df8cb9e 100644
--- a/src/trsp/test/doc-trsp.result
+++ b/src/trsp/test/doc-trsp.result
@@ -1,56 +1,115 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-0|7|6|1
-1|8|7|1
-2|5|8|1
-3|6|9|1
-4|9|15|1
-5|12|-1|0
+SELECT * FROM pgr_trsp(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
+ 7, 12, false, false
+ );
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 7 | 6 | 1
+ 1 | 8 | 7 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 15 | 1
+ 5 | 12 | -1 | 0
+(6 rows)
+
--q2
--q3
-0|2|4|1
-1|5|10|1
-2|10|12|1
-3|11|11|1
-4|6|8|1
-5|5|7|1
-6|8|6|1
-7|7|-1|0
-0|7|6|1
-1|8|7|1
-2|5|8|1
-3|6|9|1
-4|9|15|1
-5|12|13|1
-6|11|-1|0
+SELECT * FROM pgr_trsp(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
+ 2, 7, false, false,
+ 'SELECT to_cost, target_id::int4,
+ from_edge || coalesce('','' || via_path, '''') AS via_path
+ FROM restrictions'
+ );
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 10 | 1
+ 2 | 10 | 12 | 1
+ 3 | 11 | 11 | 1
+ 4 | 6 | 8 | 1
+ 5 | 5 | 7 | 1
+ 6 | 8 | 6 | 1
+ 7 | 7 | -1 | 0
+(8 rows)
+
+SELECT * FROM pgr_trsp(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
+ 7, 11, false, false,
+ 'SELECT to_cost, target_id::int4,
+ from_edge || coalesce('','' || via_path, '''') AS via_path
+ FROM restrictions'
+ );
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 7 | 6 | 1
+ 1 | 8 | 7 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 15 | 1
+ 5 | 12 | 13 | 1
+ 6 | 11 | -1 | 0
+(7 rows)
+
--q4
-1|1|2|4|1
-2|1|5|10|1
-3|1|10|12|1
-4|1|11|11|1
-5|1|6|8|1
-6|1|5|7|1
-7|1|8|6|1
-8|2|7|6|1
-9|2|8|7|1
-10|2|5|8|1
-11|2|6|9|1
-12|2|9|15|1
-13|2|12|13|1
-14|2|11|-1|0
+SELECT * FROM pgr_trspViaVertices(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost FROM edge_table',
+ ARRAY[2,7,11]::INTEGER[],
+ false, false,
+ 'SELECT to_cost, target_id::int4, from_edge ||
+ coalesce('',''||via_path,'''') AS via_path FROM restrictions');
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 4 | 1
+ 2 | 1 | 5 | 10 | 1
+ 3 | 1 | 10 | 12 | 1
+ 4 | 1 | 11 | 11 | 1
+ 5 | 1 | 6 | 8 | 1
+ 6 | 1 | 5 | 7 | 1
+ 7 | 1 | 8 | 6 | 1
+ 8 | 2 | 7 | 6 | 1
+ 9 | 2 | 8 | 7 | 1
+ 10 | 2 | 5 | 8 | 1
+ 11 | 2 | 6 | 9 | 1
+ 12 | 2 | 9 | 15 | 1
+ 13 | 2 | 12 | 13 | 1
+ 14 | 2 | 11 | -1 | 0
+(14 rows)
+
--q5
-1|1|-1|2|0.5
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|9|1
-5|1|9|16|1
-6|1|4|3|1
-7|1|3|5|1
-8|1|6|8|1
-9|1|5|7|1
-10|2|5|8|1
-11|2|6|9|1
-12|2|9|16|1
-13|2|4|3|1
-14|2|3|5|1
-15|2|6|11|0.5
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost,
+ reverse_cost FROM edge_table',
+ ARRAY[2,7,11]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::FLOAT[],
+ true,
+ true,
+ 'SELECT to_cost, target_id::int4, FROM_edge ||
+ coalesce('',''||via_path,'''') AS via_path FROM restrictions');
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 2 | 0.5
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 5 | 1
+ 8 | 1 | 6 | 8 | 1
+ 9 | 1 | 5 | 7 | 1
+ 10 | 2 | 5 | 8 | 1
+ 11 | 2 | 6 | 9 | 1
+ 12 | 2 | 9 | 16 | 1
+ 13 | 2 | 4 | 3 | 1
+ 14 | 2 | 3 | 5 | 1
+ 15 | 2 | 6 | 11 | 0.5
+(15 rows)
+
--q6
+ROLLBACK;
+ROLLBACK
diff --git a/src/trsp/test/issue693.result b/src/trsp/test/issue693.result
index 0feaaa1..014ca69 100644
--- a/src/trsp/test/issue693.result
+++ b/src/trsp/test/issue693.result
@@ -1,6 +1,28 @@
-(0,-1,1,1000)
-(1,1,2,5)
-(2,3,3,10)
-(3,4,4,10)
-(4,2,1,1000)
-(5,-2,-1,0)
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+CREATE TABLE routing (gid serial, length integer, source integer, target integer, reverse_cost integer);
+CREATE TABLE
+INSERT INTO routing (length, source, target, reverse_cost) VALUES
+ (10000, 1, 2, 10000),
+ (5, 3, 1, 5),
+ (10, 4, 3, 10),
+ (10, 2, 4, 10);
+INSERT 0 4
+SELECT pgr_trsp(
+ 'SELECT gid as id, source::int4, target::int4, length::float8 as cost, length::float8 as reverse_cost FROM routing',
+ 1, 0.1, 1, 0.9, false, true
+ );
+ pgr_trsp
+---------------
+ (0,-1,1,1000)
+ (1,1,2,5)
+ (2,3,3,10)
+ (3,4,4,10)
+ (4,2,1,1000)
+ (5,-2,-1,0)
+(6 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/trsp/test/issue704.result b/src/trsp/test/issue704.result
index 658e0f7..364fa92 100644
--- a/src/trsp/test/issue704.result
+++ b/src/trsp/test/issue704.result
@@ -1,9 +1,82 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+CREATE TABLE maptest as
+SELECT 671222::integer as id, 318255::integer as source, 222698::integer as target, 14.02::float8 as cost, 14.02::float8 as reverse_cost UNION ALL
+SELECT 671223, 222698, 36655, 197.16, 197.16 UNION ALL
+SELECT 582877, 408918, 5556, 458.09, 458.09 UNION ALL
+SELECT 582876, 318255, 408918, 3.89, 3.89 UNION ALL
+SELECT 585280, 5556, 454424, 54.84, 54.84;
+SELECT 5
q1
+SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4)
+FROM pgr_trsp(
+ 'select * from maptest',
+ 582877,
+ 0,
+ 582877,
+ 0.5,
+ true,
+ true,
+ null
+) PG ;
+ seq | node | edge | cost
+-----+------+------+------
+(0 rows)
+
q2
-0|-1|582877|229.0450
-1|-2|-1|0.0000
+SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4)
+FROM pgr_trsp(
+ 'select * from maptest',
+ 582877,
+ 0.0000000001,
+ 582877,
+ 0.5,
+ true,
+ true,
+ null
+) PG ;
+ seq | node | edge | cost
+-----+------+--------+----------
+ 0 | -1 | 582877 | 229.0450
+ 1 | -2 | -1 | 0.0000
+(2 rows)
+
q3
-0|-1|582877|229.0450
+SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4)
+FROM pgr_trsp(
+ 'select * from maptest',
+ 582877,
+ 0,
+ 582877,
+ 0.5,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+) PG ;
+ seq | node | edge | cost
+-----+------+--------+----------
+ 0 | -1 | 582877 | 229.0450
+(1 row)
+
q4
-0|-1|582877|229.0450
+SELECT seq, id1 AS node, id2 AS edge, cost::numeric(11,4)
+FROM pgr_trsp(
+ 'select * from maptest',
+ 582877,
+ 0.0000000001,
+ 582877,
+ 0.5,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+) PG ;
+ seq | node | edge | cost
+-----+------+--------+----------
+ 0 | -1 | 582877 | 229.0450
+(1 row)
+
q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/trsp/test/issue717.result b/src/trsp/test/issue717.result
index 703b582..9b41630 100644
--- a/src/trsp/test/issue717.result
+++ b/src/trsp/test/issue717.result
@@ -1,153 +1,359 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- tests to without restrictions
-- directed with reverse_cost
-1|1|2|4|1
-2|1|5|7|1
-3|1|8|6|1
-4|2|7|6|1
-5|2|8|7|1
-6|2|5|10|1
-7|2|10|12|1
-8|2|11|-1|0
----------------------------
-1|1|-1|4|0.5
-2|1|5|7|1
-3|1|8|6|0.5
-4|1|-2|-1|0
-5|2|-2|6|0.5
-6|2|8|7|1
-7|2|5|8|1
-8|2|6|11|0.5
-9|2|-3|-2|0
----------------------------
-1|1|-1|1|0.5
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|11|0.5
-5|1|-2|-1|0
-6|2|-2|11|0.5
-7|2|11|13|1
-8|2|12|15|1
-9|2|9|9|1
-10|2|6|8|1
-11|2|5|7|1
-12|2|8|6|0.5
-13|2|-3|-2|0
----------------------------
-1|1|-1|1|0.5
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|11|0.5
-5|1|-2|-1|0
-6|2|-2|11|0.5
-7|2|11|13|1
-8|2|12|15|1
-9|2|9|9|1
-10|2|6|8|1
-11|2|5|7|1
-12|2|8|6|0.5
-13|2|-3|-2|0
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License AS published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+
+
+
+
+
+SELECT * FROM pgr_trspViaVertices(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7, 11]::INTEGER[],
+ true,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 4 | 1
+ 2 | 1 | 5 | 7 | 1
+ 3 | 1 | 8 | 6 | 1
+ 4 | 2 | 7 | 6 | 1
+ 5 | 2 | 8 | 7 | 1
+ 6 | 2 | 5 | 10 | 1
+ 7 | 2 | 10 | 12 | 1
+ 8 | 2 | 11 | -1 | 0
+(8 rows)
+
+---------------------------
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[4,6,11]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ true,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 4 | 0.5
+ 2 | 1 | 5 | 7 | 1
+ 3 | 1 | 8 | 6 | 0.5
+ 4 | 1 | -2 | -1 | 0
+ 5 | 2 | -2 | 6 | 0.5
+ 6 | 2 | 8 | 7 | 1
+ 7 | 2 | 5 | 8 | 1
+ 8 | 2 | 6 | 11 | 0.5
+ 9 | 2 | -3 | -2 | 0
+(9 rows)
+
+---------------------------
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[1,11,6]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ true,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.5
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 11 | 0.5
+ 5 | 1 | -2 | -1 | 0
+ 6 | 2 | -2 | 11 | 0.5
+ 7 | 2 | 11 | 13 | 1
+ 8 | 2 | 12 | 15 | 1
+ 9 | 2 | 9 | 9 | 1
+ 10 | 2 | 6 | 8 | 1
+ 11 | 2 | 5 | 7 | 1
+ 12 | 2 | 8 | 6 | 0.5
+ 13 | 2 | -3 | -2 | 0
+(13 rows)
+
+---------------------------
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[1,11,6]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ true,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.5
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 11 | 0.5
+ 5 | 1 | -2 | -1 | 0
+ 6 | 2 | -2 | 11 | 0.5
+ 7 | 2 | 11 | 13 | 1
+ 8 | 2 | 12 | 15 | 1
+ 9 | 2 | 9 | 9 | 1
+ 10 | 2 | 6 | 8 | 1
+ 11 | 2 | 5 | 7 | 1
+ 12 | 2 | 8 | 6 | 0.5
+ 13 | 2 | -3 | -2 | 0
+(13 rows)
+
---------------------------
-- directed without reverse_cost
+SELECT * FROM pgr_trspViaVertices(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7, 11]::INTEGER[],
+ true,
+ false
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+(0 rows)
+
---------------------------
-1|2|-2|6|0.5
-2|2|8|7|1
-3|2|5|8|1
-4|2|6|11|0.5
-5|2|-3|-2|0
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[4,6,11]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ true,
+ false
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 2 | -2 | 6 | 0.5
+ 2 | 2 | 8 | 7 | 1
+ 3 | 2 | 5 | 8 | 1
+ 4 | 2 | 6 | 11 | 0.5
+ 5 | 2 | -3 | -2 | 0
+(5 rows)
+
---------------------------
-1|1|-1|1|0.5
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|11|0.5
-5|1|-2|-2|0
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[1,11,6]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ true,
+ false
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.5
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 11 | 0.5
+ 5 | 1 | -2 | -2 | 0
+(5 rows)
+
---------------------------
-1|1|-1|1|0.5
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|11|0.5
-5|1|-2|-2|0
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[1,11,6]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ true,
+ false
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.5
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 11 | 0.5
+ 5 | 1 | -2 | -2 | 0
+(5 rows)
+
---------------------------
-- undirected with reverse_cost
-1|1|2|4|1
-2|1|5|7|1
-3|1|8|6|1
-4|2|7|6|1
-5|2|8|7|1
-6|2|5|10|1
-7|2|10|12|1
-8|2|11|-1|0
----------------------------
-1|1|-1|4|0.5
-2|1|5|7|1
-3|1|8|6|0.5
-4|1|-2|-1|0
-5|2|-2|6|0.5
-6|2|8|7|1
-7|2|5|8|1
-8|2|6|11|0.5
-9|2|-3|-2|0
----------------------------
-1|1|-1|1|0.5
-2|1|2|2|1
-3|1|3|5|1
-4|1|6|11|0.5
-5|1|-2|-1|0
-6|2|-2|11|0.5
-7|2|6|8|1
-8|2|5|7|1
-9|2|8|6|0.5
-10|2|-3|-2|0
----------------------------
-1|1|-1|1|0.5
-2|1|2|2|1
-3|1|3|5|1
-4|1|6|11|0.5
-5|1|-2|-1|0
-6|2|-2|11|0.5
-7|2|6|8|1
-8|2|5|7|1
-9|2|8|6|0.5
-10|2|-3|-2|0
+SELECT * FROM pgr_trspViaVertices(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7, 11]::INTEGER[],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 4 | 1
+ 2 | 1 | 5 | 7 | 1
+ 3 | 1 | 8 | 6 | 1
+ 4 | 2 | 7 | 6 | 1
+ 5 | 2 | 8 | 7 | 1
+ 6 | 2 | 5 | 10 | 1
+ 7 | 2 | 10 | 12 | 1
+ 8 | 2 | 11 | -1 | 0
+(8 rows)
+
+---------------------------
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[4,6,11]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 4 | 0.5
+ 2 | 1 | 5 | 7 | 1
+ 3 | 1 | 8 | 6 | 0.5
+ 4 | 1 | -2 | -1 | 0
+ 5 | 2 | -2 | 6 | 0.5
+ 6 | 2 | 8 | 7 | 1
+ 7 | 2 | 5 | 8 | 1
+ 8 | 2 | 6 | 11 | 0.5
+ 9 | 2 | -3 | -2 | 0
+(9 rows)
+
+---------------------------
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[1,11,6]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.5
+ 2 | 1 | 2 | 2 | 1
+ 3 | 1 | 3 | 5 | 1
+ 4 | 1 | 6 | 11 | 0.5
+ 5 | 1 | -2 | -1 | 0
+ 6 | 2 | -2 | 11 | 0.5
+ 7 | 2 | 6 | 8 | 1
+ 8 | 2 | 5 | 7 | 1
+ 9 | 2 | 8 | 6 | 0.5
+ 10 | 2 | -3 | -2 | 0
+(10 rows)
+
+---------------------------
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[1,11,6]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.5
+ 2 | 1 | 2 | 2 | 1
+ 3 | 1 | 3 | 5 | 1
+ 4 | 1 | 6 | 11 | 0.5
+ 5 | 1 | -2 | -1 | 0
+ 6 | 2 | -2 | 11 | 0.5
+ 7 | 2 | 6 | 8 | 1
+ 8 | 2 | 5 | 7 | 1
+ 9 | 2 | 8 | 6 | 0.5
+ 10 | 2 | -3 | -2 | 0
+(10 rows)
+
---------------------------
-- undirected without reverse_cost
-1|1|2|4|1
-2|1|5|7|1
-3|1|8|6|1
-4|2|7|6|1
-5|2|8|7|1
-6|2|5|10|1
-7|2|10|12|1
-8|2|11|-1|0
----------------------------
-1|1|-1|4|0.5
-2|1|5|7|1
-3|1|8|6|0.5
-4|1|-2|-1|0
-5|2|-2|6|0.5
-6|2|8|7|1
-7|2|5|8|1
-8|2|6|11|0.5
-9|2|-3|-2|0
----------------------------
-1|1|-1|1|0.5
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|11|0.5
-5|1|-2|-1|0
-6|2|-2|11|0.5
-7|2|6|8|1
-8|2|5|7|1
-9|2|8|6|0.5
-10|2|-3|-2|0
----------------------------
-1|1|-1|1|0.5
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|11|0.5
-5|1|-2|-1|0
-6|2|-2|11|0.5
-7|2|6|8|1
-8|2|5|7|1
-9|2|8|6|0.5
-10|2|-3|-2|0
+SELECT * FROM pgr_trspViaVertices(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7, 11]::INTEGER[],
+ false,
+ false
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 4 | 1
+ 2 | 1 | 5 | 7 | 1
+ 3 | 1 | 8 | 6 | 1
+ 4 | 2 | 7 | 6 | 1
+ 5 | 2 | 8 | 7 | 1
+ 6 | 2 | 5 | 10 | 1
+ 7 | 2 | 10 | 12 | 1
+ 8 | 2 | 11 | -1 | 0
+(8 rows)
+
+---------------------------
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[4,6,11]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ false,
+ false
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 4 | 0.5
+ 2 | 1 | 5 | 7 | 1
+ 3 | 1 | 8 | 6 | 0.5
+ 4 | 1 | -2 | -1 | 0
+ 5 | 2 | -2 | 6 | 0.5
+ 6 | 2 | 8 | 7 | 1
+ 7 | 2 | 5 | 8 | 1
+ 8 | 2 | 6 | 11 | 0.5
+ 9 | 2 | -3 | -2 | 0
+(9 rows)
+
+---------------------------
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[1,11,6]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ false,
+ false
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.5
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 11 | 0.5
+ 5 | 1 | -2 | -1 | 0
+ 6 | 2 | -2 | 11 | 0.5
+ 7 | 2 | 6 | 8 | 1
+ 8 | 2 | 5 | 7 | 1
+ 9 | 2 | 8 | 6 | 0.5
+ 10 | 2 | -3 | -2 | 0
+(10 rows)
+
+---------------------------
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
+ ARRAY[1,11,6]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ false,
+ false
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.5
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 11 | 0.5
+ 5 | 1 | -2 | -1 | 0
+ 6 | 2 | -2 | 11 | 0.5
+ 7 | 2 | 6 | 8 | 1
+ 8 | 2 | 5 | 7 | 1
+ 9 | 2 | 8 | 6 | 0.5
+ 10 | 2 | -3 | -2 | 0
+(10 rows)
+
---------------------------
+ROLLBACK;
+ROLLBACK
diff --git a/src/trsp/test/test.conf b/src/trsp/test/test.conf
index b4d1d30..02c446a 100644
--- a/src/trsp/test/test.conf
+++ b/src/trsp/test/test.conf
@@ -11,10 +11,10 @@
issue693
issue704
issue717
- trsp_notes_v2.4.0
+ trsp_notes_v2.5.0
)],
'documentation' => [qw(
- trsp_notes_v2.4.0
+ trsp_notes_v2.5.0
issue704
doc-trsp
)]
diff --git a/src/trsp/test/trsp-any-02.result b/src/trsp/test/trsp-any-02.result
index eb82435..26b0249 100644
--- a/src/trsp/test/trsp-any-02.result
+++ b/src/trsp/test/trsp-any-02.result
@@ -1,10 +1,42 @@
-0|-1|1|0.5005
-1|2|4|1.016
-2|5|8|1.064
-3|6|9|1.081
-4|9|16|1.256
-5|4|3|1.009
-6|3|5|1.025
-7|6|8|1.064
-8|5|7|1.049
-9|8|6|0.518000000000001
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+CREATE TABLE restrictions2 (
+ rid integer NOT NULL,
+ to_cost double precision,
+ teid integer,
+ feid integer,
+ via text
+);
+CREATE TABLE
+COPY restrictions2 (rid, to_cost, teid, feid, via) FROM stdin WITH NULL '__NULL__' DELIMITER ',';
+COPY 3
+UPDATE edge_table SET cost = cost + 0.001 * id * id, reverse_cost = reverse_cost + 0.001 * id * id;
+UPDATE 18
+select * from pgr_trsp(
+ 'select id::integer, source::integer, target::integer,cost, reverse_cost from edge_table ORDER BY ID',
+ 1,
+ 0.5,
+ 6,
+ 0.5,
+ true,
+ true,
+
+ 'select to_cost, teid as target_id, feid||coalesce('',''||via,'''') as via_path from restrictions2');
+ seq | id1 | id2 | cost
+-----+-----+-----+-------------------
+ 0 | -1 | 1 | 0.5005
+ 1 | 2 | 4 | 1.016
+ 2 | 5 | 8 | 1.064
+ 3 | 6 | 9 | 1.081
+ 4 | 9 | 16 | 1.256
+ 5 | 4 | 3 | 1.009
+ 6 | 3 | 5 | 1.025
+ 7 | 6 | 8 | 1.064
+ 8 | 5 | 7 | 1.049
+ 9 | 8 | 6 | 0.518000000000001
+(10 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/trsp/test/trsp_notes_v2.4.0.result b/src/trsp/test/trsp_notes_v2.4.0.result
deleted file mode 100644
index e2db9c7..0000000
--- a/src/trsp/test/trsp_notes_v2.4.0.result
+++ /dev/null
@@ -1,552 +0,0 @@
-# Notes on pgr_trsp for version 2.4.0
-Table of contents
-* [Introduction](#introduction)
- * [The restriction](#the-restriction)
-* [The Vertices Signature Version](#the-vertices-signature-version)
- * [No path representation differences](#vertices-no-path-representation-differences)
- * [Routing from/to same location](#routing-fromto-same-location)
- * [Undirected graph](#vertices-undirected-graph)
-* [The Edges Signature Version](#the-edges-signature-version)
- * [No path representation differences](#edges-no-path-representation-differences)
- * [Definition of a path](#definition-of-a-path)
- * [Points on the same edge](#points-on-the-same-edge)
- * [Undirected graph](#edges-undirected-graph)
- * [Using a points of interest table](#using-a-points-of-interest-table)
- * [Routing from/to the same point](#routing-fromto-the-same-point)
- * [Passing in front of other points](#passing-in-front-of-other-points)
- * [Routing from a vertex to a point](#edges-routing-from-a-vertex-to-a-point)
-* [pgr_trspViaVertices](#pgr_trspviavertices)
- * [pgr_trspViaVertices No path representation differences](#pgr_trspviavertices-no-path-representation-differences)
- * [when a path does not exist on the route](#when-a-path-does-not-exist-on-the-route)
- * [from 2 to 3 to 2](#from-2-to-3-to-2)
-* [pgr_trspViaEdges](#pgr_trspviaedges)
- * [pgr_trspViaEdges No path representation differences](#pgr_trspviaedges-no-path-representation-differences)
- * [Using a points of interest table](#pgr_trspviaedges-using-the-pointsofinterest-table)
-
-# Introduction
-pgr_trsp code has issues that are not being fixed yet, but as time passes and new functionality is added to pgRouting with wrappers to **hide** the issues, not to fix them.
-
-For clarity on the queries:
-* _pgr_trsp (with underscore) is the original code
-* pgr_trsp (lower case) represents the wrapper calling the original code
-* pgr_TRSP (upper case) represents the wrapper calling the replacement function, depending on the function, it can be:
- * pgr_dijkstra
- * pgr_dijkstraVia
- * pgr_withPoints
- * _pgr_withPointsVia
-
-This page intentions is to compare the original code with the wrapped version of the trsp group of functions.
-## The restriction
-The restriction used in the examples does not have to do anything with the graph:
-* No vertex has id: 25, 32 or 33
-* No edge has id: 25, 32 or 33
-```
-$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, 32, 33::TEXT AS via_path$$
-```
-therefore the shortest path expected are as if there was no restriction involved
-# The Vertices signature version
-## (Vertices) No path representation differences
-Original function code
-* Sometimes it crasses the server when no path was found
-* Sometimes represents with Error a no path found
-* Forcing the user to use the wrapper or the replacement function
-
-Calls to the original function of is no longer allowed without restrictions
-```
-ERROR: Error computing path: Path Not Found
-```
-dijkstra returns EMPTY SET to represent no path found
-```
-```
-pgr_trsp use the pgr_dijkstra when there are no restrictions
-therefore returns EMPTY SET to represent no path found
-```
-```
-pgr_trsp use the original code when there are restrictions
-therefore throws Error to represent no path found
-```
-ERROR: Error computing path: Path Not Found
-CONTEXT: PL/pgSQL function pgr_trsp(text,integer,integer,boolean,boolean,text) line 29 at RETURN QUERY
-```
-## routing from/to same location
-using dijkstra to verify (1 to 1)
-```
-```
-This call uses the replacement function because there are no restrictions (1 to 1)
-therefore is expected to return EMPTY SET to represent no path found
-```
-```
-call forcing the use of the original code (1 to 1)
-* not longer allowed without restrictions
-
-```
-0|1|1|1
-1|2|4|1
-2|5|8|1
-3|6|9|1
-4|9|16|1
-5|4|3|1
-6|3|2|1
-7|2|1|1
-8|1|-1|0
-```
-trsp with restrictions (1 to 1) use the original code
-is expected to return Error to represent no path found
-```
-0|1|1|1
-1|2|4|1
-2|5|8|1
-3|6|9|1
-4|9|16|1
-5|4|3|1
-6|3|2|1
-7|2|1|1
-8|1|-1|0
-```
-trsp calling the original code with restrictions (1 to 1)
-is expected to return Error to represent no path found
-but "finds" a path when there should be no path.
-```
-0|1|1|1
-1|2|4|1
-2|5|8|1
-3|6|9|1
-4|9|16|1
-5|4|3|1
-6|3|2|1
-7|2|1|1
-8|1|-1|0
-```
-## (vertices) Undirected graph
-using Dijkstra to verify the shortest path from (2 to 3) on undirected graph
-```
-1|1|2|2|1|0
-2|2|3|-1|0|1
-```
-using the replacement function because there are no restrictions (2 to 3)
-```
-0|2|2|1
-1|3|-1|0
-```
-call forcing the use of the original code
-* not longer allowed without restrictions
-
-```
-0|2|4|1
-1|5|8|1
-2|6|9|1
-3|9|16|1
-4|4|3|1
-5|3|-1|0
-```
-trsp with restrictions (2 to 3)
-does not find the shortest path
-```
-0|2|4|1
-1|5|8|1
-2|6|9|1
-3|9|16|1
-4|4|3|1
-5|3|-1|0
-```
-calling the original code with restrictions (2 to 3)
-does not find the shortest path
-```
-0|2|4|1
-1|5|8|1
-2|6|9|1
-3|9|16|1
-4|4|3|1
-5|3|-1|0
-```
-# The Edges signature version
-## (Edges) No path representation differences
-Original function code
-* Sometimes it crasses the server when no path was found
-* Sometimes represents with Error a no path found
-* Forcing the user to use the wrapper or the replacement function
-
-Calls to the original function of is no longer allowed without restrictions
-```
-ERROR: Error computing path: Path Not Found
-```
-pgr_withPoints returns EMPTY SET to represent no path found
-```
-```
-## Definition of a path
-Remember that one characteristic of a path is that for a path of N edges it has N+1 vertices.
-
-For this example, suppose points, where the pid are different even if the edge and fraction are different.
-One point might be on the left side other on the right side, pgr_trsp does not take into account
-the side of the point
-calls forcing the use of the original code
-* not longer allowed without restrictions
-
-```
-0|-1|1|0
-```
-* with restrictions
-```
-0|-1|1|0
-```
-Using the *pgr_withPoints* it returns a path of N edge and N+1 vertices
-```
-1|1|-1|1|0|0
-2|2|-2|-1|0|0
-```
-The *pgr_withPoints* is used when there are no restrictions
-```
-0|-1|1|0
-1|-2|-1|0
-```
-The original *_pgr_trsp* code is used when there are restrictions
-```
-0|-1|1|0
-```
-note that pgr_withPoints returns an EMPTY SET when the point is the same
-```
-```
-## Points on the same edge
-The *pgr_withPoints* is used when there are no restrictions
-* it returns a path of N edges and N+1 vertices
-```
-0|-1|1|0.3
-1|-2|-1|0
-```
-The original *_pgr_trsp* is used when there are restrictions
-* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
-```
-0|-1|1|0.3
-```
-## (Edges) Undirected graph
-the shortest path obtained with *pgr_withPoints*
-```
-1|1|-1|4|0.5|0
-2|2|2|2|0.8|0.5
-3|3|-2|-1|0|1.3
-```
-The original *_pgr_trsp* is used when there are restrictions
-
-```
-0|-1|4|0.5
-1|2|2|0.8
-2|-2|-1|0
-```
-when using restrictions the original *_pgr_trsp* is used internally
-* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
-* it does not return the shortest path.
-
-```
-0|-1|4|0.5
-1|5|8|1
-2|6|9|1
-3|9|16|1
-4|4|3|1
-5|3|2|0.2
-```
-## Using a points of interest table
-The points of interest
-```
-1|1.8|0.4|1|l|0.4|0101000000CDCCCCCCCCCCFC3F9A9999999999D93F|010100000000000000000000409A9999999999D93F
-2|4.2|2.4|15|r|0.4|0101000000CDCCCCCCCCCC10403333333333330340|010100000000000000000010403333333333330340
-3|2.6|3.2|12|l|0.6|0101000000CDCCCCCCCCCC04409A99999999990940|0101000000CDCCCCCCCCCC04400000000000000840
-4|0.3|1.8|6|r|0.3|0101000000333333333333D33FCDCCCCCCCCCCFC3F|0101000000333333333333D33F0000000000000040
-5|2.9|1.8|5|l|0.8|01010000003333333333330740CDCCCCCCCCCCFC3F|01010000000000000000000840CDCCCCCCCCCCFC3F
-6|2.2|1.7|4|b|0.7|01010000009A99999999990140333333333333FB3F|01010000000000000000000040333333333333FB3F
-```
-On *pgr_trsp*, to be able to use the table information:
-* Each parameter has to be extracted explicitly from the table
-* Regardles of the point pid original value
- * will always be -1 for the first point
- * will always be -2 for the second point
-```
-0|-1|1|0.6
-1|2|4|0.7
-2|-2|-1|0
-```
-On *pgr_withPoints*, to be able to use the table information:
-* select statement on the *pointsOfInterest* table
-* *Negative* the id to represent the id is a pid
-* The points pids in the result are not renumbered
-* The points pids in the result are represented with negative sign
-```
-1|1|-1|1|0.6|0
-2|2|2|4|0.7|0.6
-3|3|-6|-1|0|1.3
-```
-## routing from/to the same point
-using pgr_withPoints to check results
-expecting EMPTY SET to represent no path found
-```
-```
-This call uses the replacement function because there are no restrictions
-* Because the pid is not involved the points are considered different
-* it returns a path
-
-```
-0|-1|1|0
-1|-2|-1|0
-```
-pgr_trsp with restrictions use the original code
-* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
-
-```
-0|-1|1|0
-```
-## passing in front of other points
-using pgr_withPoints to verify the shortest path from pids (1 to 3)
-```
-1|1|-1|1|0.6|0
-2|2|2|4|1|0.6
-3|3|5|10|1|1.6
-4|4|10|12|0.6|2.6
-5|5|-3|-1|0|3.2
-```
-**pgr_withPoints** can be used to see when the route passes in front of other points
-In this example point pid=6 is passed in front of
-```
-1|1|-1|1|0.6|0
-2|2|2|4|0.7|0.6
-3|3|-6|4|0.3|1.3
-4|4|5|10|1|1.6
-5|5|10|12|0.6|2.6
-6|6|-3|-1|0|3.2
-```
-Can not be used to see if other points are passed in front of.
-The pointsOfInterest table is not part of the parameter
-```
-0|-1|1|0.6
-1|2|4|1
-2|5|10|1
-3|10|12|0.6
-4|-2|-1|0
-```
-## (edges) Routing from a vertex to a point
-Showing *pgr_withPoints* results of the shortest path from vid 6 to pid 1
-```
-1|1|6|8|1|0
-2|2|5|4|1|1
-3|3|2|1|0.6|2
-4|4|-1|-1|0|2.6
-```
-* Vertex 6 is on edge 8 at 1 fraction
-* Vertex 6 is also edge 11 at 0 fraction
-* Undefined behaviour when at least one of the "points" is an actual vertex
-
-```
-```
-# pgr_trspViaVertices
-## pgr_trspViaVertices No path representation differences
-pgr_trspViaVertices uses _pgr_trsp which as mentioned before
-* Sometimes it crasses the server when no path was found
-* Sometimes represents with Error a no path found
-* Forcing the user to use the wrapper or the replacement function
-
-Calls to the original function of is no longer allowed without restrictions
-```
-ERROR: Error computing path: Path Not Found
-CONTEXT: PL/pgSQL function _pgr_trspviavertices(text,integer[],boolean,boolean,text) line 23 at FOR over SELECT rows
-ERROR: Error computing path: Path Not Found
-CONTEXT: PL/pgSQL function _pgr_trspviavertices(text,integer[],boolean,boolean,text) line 23 at FOR over SELECT rows
-```
-**pgr_dijkstraVia** returning what paths of the route it finds or EMPTY SET when non is found
-this case none is found
-```
-```
-this case only from 2 to 1 is found
-```
-1|3|1|2|1|2|1|1|0|0
-2|3|2|2|1|1|-2|0|1|1
-```
-the **pgr_dijkstraVia** used are for complete routes so its marked as **strict:=true**
-therefore the expected result is EMPTY SET to represent no route was found
-```
-```
-## when a path does not exist on the route
-pgr_TRSPViaVertices using the *pgr_dijkstraVia* when there are no restrictions.
-Because there is no path from 1 to 1 then there is no complete route 1 to 1 to 2
-therefore the expected result is EMPTY SET to represent no route was found
-```
-```
-Calls to the original function of is no longer allowed without restrictions
-```
-1|1|1|1|1
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|9|1
-5|1|9|16|1
-6|1|4|3|1
-7|1|3|2|1
-8|1|2|1|1
-9|2|1|1|1
-10|2|2|-1|0
-```
-with restrictions the original code is used
-```
-1|1|1|1|1
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|9|1
-5|1|9|16|1
-6|1|4|3|1
-7|1|3|2|1
-8|1|2|1|1
-9|2|1|1|1
-10|2|2|-1|0
-```
-Using explicitly the original code
-```
-1|1|1|1|1
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|9|1
-5|1|9|16|1
-6|1|4|3|1
-7|1|3|2|1
-8|1|2|1|1
-9|2|1|1|1
-10|2|2|-1|0
-```
-## from 2 to 3 to 2
-dijkstra via shows the shortest route on the two paths
-```
-1|1|1|2|3|2|2|1|0|0
-2|1|2|2|3|3|-1|0|1|1
-3|2|1|3|2|3|2|1|0|1
-4|2|2|3|2|2|-2|0|1|2
-```
-the replacement function **pgr_dijkstraVia** is used because there are no restrictions
-```
-1|1|2|2|1
-2|2|3|2|1
-3|2|2|-1|0
-```
-Calls to the original function of is no longer allowed without restrictions
-```
-1|1|2|4|1
-2|1|5|8|1
-3|1|6|9|1
-4|1|9|16|1
-5|1|4|3|1
-6|2|3|2|1
-7|2|2|-1|0
-```
-# pgr_trspViaEdges
-*pgr_trspViaEdges* will use the original code when
-* There are restrictions
-* A point is a vertex in disguise (with pcts value of 0)
-
-What it returns
-* Error to represent no route
-* the points are renumbered to -1, -2 .. -N
-* if a point is part of a path it will **not** show on the path
-
-Exaple execution
-```
-1|1|-1|1|0.9
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|9|1
-5|1|9|16|1
-6|1|4|3|1
-7|1|3|2|1
-8|2|2|1|0.5
-```
-A temporay wraper function is used when:
-* There are no restrictions
-* Before: No point is a vertex in disguise (with pcts value of 0)
-* Now: c$Undefined behaviour when a point is a vertex in disguise (with pcts value of 0)
-
-Internaly:
-* builds a new graph and calls pgr_dijkstraVia
-
-What it returns
-* returns EMPTY SET to represent no route
-* edge = -1 in the result to represent the end of a intermediate path
-* edge = -2 in the result to represent the end of the last path & route
-* the points are renumbered to -1, -2 .. -N
-* if a point is part of a path it will show on the path
-
-Note: I do not mention the wrapper name due to the fact that this is not official documentation
-Note: I will use *_pgr_withPointsVia* as the wrapper name just for sake of this notes
-Example excution
-```
-1|1|1|-1|-2|-1|1|0.1|0|0
-2|1|2|-1|-2|2|2|0.5|0.1|0.1
-3|1|3|-1|-2|-2|-1|0|0.6|0.6
-4|2|1|-2|-3|-2|2|0.5|0|0.6
-5|2|2|-2|-3|2|1|0.5|0.5|1.1
-6|2|3|-2|-3|-3|-2|0|1|1.6
-```
-## pgr_trspViaEdges No path representation differences
-This example no path is found (edge 17 is disconnected) from the big graph.
-* There is a vertex in disguise (fraction 0 or 1)
-* Undefined behaviour
-
-```
-1||||
-```
-This example no path is found (edge 17 is disconnected) from the big graph.
-* Has a restriction
-* *pgr_trspViaEdges* original code is used
-* throws error to represent no route was not found
-
-```
-SELECT * FROM pgr_trspViaEdges(
-$$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
-ARRAY[1, 17, 1], ARRAY[0.5,0.5,0.5],
-false, true,
-$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, 32, 33::TEXT AS via_path$$
-);
-server closed the connection unexpectedly
-This probably means the server terminated abnormally
-before or while processing the request.
-The connection to the server was lost. Attempting reset: Failed.
-```
-This example no path is found (edge 17 is disconnected) from the big graph.
-* *_pgr_withPointsVia* is used
-* returns EMPTY SET to represent no route
-
-```
-```
-## (pgr_trspViaEdges) Using the pointsOfInterest table
-Only routing points
-when *_pgr_withPointsVia* is used
-* the renumbering still takes place
-
-```
-1|1|-1|1|0.4
-2|1|2|4|0.3
-3|1|-3|4|0.3
-4|1|5|10|1
-5|1|10|12|0.6
-6|1|-2|-1|0
-7|2|-2|12|0.6
-8|2|10|10|1
-9|2|5|4|0.3
-10|2|-3|-2|0
-```
-Only routing points
-when originalcode is used (because there is a restriction)
-
-```
-1|1|-1|1|0.6
-2|1|2|4|1
-3|1|5|10|1
-4|1|10|12|1
-5|2|11|13|1
-6|2|12|15|1
-7|2|9|9|1
-8|2|6|8|1
-9|2|5|4|0.3
-```
-Routing points & vertices
-* vertex 6 is on edge 11 with fraction 0
-* Undefined behavior
-```
-1|1|-1|1|0.6
-2|1|2|4|1
-3|1|5|10|1
-4|1|10|12|0.6
-5|1|-2|-1|0
-```
diff --git a/src/trsp/test/trsp_notes_v2.4.0.test.sql b/src/trsp/test/trsp_notes_v2.4.0.test.sql
deleted file mode 100644
index e333de8..0000000
--- a/src/trsp/test/trsp_notes_v2.4.0.test.sql
+++ /dev/null
@@ -1,814 +0,0 @@
-ROLLBACK;
-\echo # Notes on pgr_trsp for version 2.4.0
-
-\echo Table of contents
-
-\echo * [Introduction](#introduction)
-\echo ' * [The restriction](#the-restriction)'
-\echo * [The Vertices Signature Version](#the-vertices-signature-version)
-\echo ' * [No path representation differences](#vertices-no-path-representation-differences)'
-\echo ' * [Routing from/to same location](#routing-fromto-same-location)'
-\echo ' * [Undirected graph](#vertices-undirected-graph)'
-\echo * [The Edges Signature Version](#the-edges-signature-version)
-\echo ' * [No path representation differences](#edges-no-path-representation-differences)'
-\echo ' * [Definition of a path](#definition-of-a-path)'
-\echo ' * [Points on the same edge](#points-on-the-same-edge)'
-\echo ' * [Undirected graph](#edges-undirected-graph)'
-\echo ' * [Using a points of interest table](#using-a-points-of-interest-table)'
-\echo ' * [Routing from/to the same point](#routing-fromto-the-same-point)'
-\echo ' * [Passing in front of other points](#passing-in-front-of-other-points)'
-\echo ' * [Routing from a vertex to a point](#edges-routing-from-a-vertex-to-a-point)'
-\echo * [pgr_trspViaVertices](#pgr_trspviavertices)
-\echo ' * [pgr_trspViaVertices No path representation differences](#pgr_trspviavertices-no-path-representation-differences)'
-\echo ' * [when a path does not exist on the route](#when-a-path-does-not-exist-on-the-route)'
-\echo ' * [from 2 to 3 to 2](#from-2-to-3-to-2)'
-\echo * [pgr_trspViaEdges](#pgr_trspviaedges)
-\echo ' * [pgr_trspViaEdges No path representation differences](#pgr_trspviaedges-no-path-representation-differences)'
-\echo ' * [Using a points of interest table](#pgr_trspviaedges-using-the-pointsofinterest-table)'
-\echo
-
-
-
-\echo # Introduction
-\echo pgr_trsp code has issues that are not being fixed yet, but as time passes and new functionality is added to pgRouting with wrappers to **hide** the issues, not to fix them.
-\echo
-\echo For clarity on the queries:
-\echo * _pgr_trsp (with underscore) is the original code
-\echo * pgr_trsp (lower case) represents the wrapper calling the original code
-\echo * pgr_TRSP (upper case) represents the wrapper calling the replacement function, depending on the function, it can be:
-\echo ' * pgr_dijkstra'
-\echo ' * pgr_dijkstraVia'
-\echo ' * pgr_withPoints'
-\echo ' * _pgr_withPointsVia'
-\echo
-
-\echo This page intentions is to compare the original code with the wrapped version of the trsp group of functions.
-\echo ## The restriction
-
-\echo The restriction used in the examples does not have to do anything with the graph:
-\echo * No vertex has id: 25, 32 or 33
-\echo * No edge has id: 25, 32 or 33
-\echo '\`\`\`'
-\echo $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-\echo '\`\`\`'
-
-\echo therefore the shortest path expected are as if there was no restriction involved
-
-
--------------------------------------------------------------------------------------------
-\echo # The Vertices signature version
-------------------
-\echo ## (Vertices) No path representation differences
-\echo Original function code
-\echo * Sometimes it crasses the server when no path was found
-\echo * Sometimes represents with Error a no path found
-\echo * Forcing the user to use the wrapper or the replacement function
-\echo
-\echo Calls to the original function of is no longer allowed without restrictions
-\echo '\`\`\`'
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 15, true, true
-);
-\echo '\`\`\`'
-
-\echo dijkstra returns EMPTY SET to represent no path found
-\echo '\`\`\`'
-SELECT * FROM pgr_dijkstra(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 15
-);
-\echo '\`\`\`'
-
-\echo pgr_trsp use the pgr_dijkstra when there are no restrictions
-\echo therefore returns EMPTY SET to represent no path found
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 15, true, true
-);
-\echo '\`\`\`'
-
-\echo pgr_trsp use the original code when there are restrictions
-\echo therefore throws Error to represent no path found
-\echo '\`\`\`'
- SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 15, true, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-
-------------------
-\echo ## routing from/to same location
-
-\echo using dijkstra to verify (1 to 1)
-\echo '\`\`\`'
-SELECT * FROM pgr_dijkstra(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 1
-);
-\echo '\`\`\`'
-
-
-\echo This call uses the replacement function because there are no restrictions (1 to 1)
-\echo therefore is expected to return EMPTY SET to represent no path found
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 1, true, true
-);
-\echo '\`\`\`'
-
-
-\echo call forcing the use of the original code (1 to 1)
-\echo * not longer allowed without restrictions
-\echo
-\echo '\`\`\`'
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 1, true, true
-);
-\echo '\`\`\`'
-
-
-\echo trsp with restrictions (1 to 1) use the original code
-\echo is expected to return Error to represent no path found
-\echo '\`\`\`'
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 1,
- true,
- true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-\echo trsp calling the original code with restrictions (1 to 1)
-\echo is expected to return Error to represent no path found
-\echo but "finds" a path when there should be no path.
-\echo '\`\`\`'
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 1,
- true,
- true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-
-------------------
-\echo ## (vertices) Undirected graph
-
-\echo using Dijkstra to verify the shortest path from (2 to 3) on undirected graph
-\echo '\`\`\`'
-SELECT * FROM pgr_dijkstra(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 2, 3, false
-);
-\echo '\`\`\`'
-
-\echo using the replacement function because there are no restrictions (2 to 3)
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 2, 3,
- false,
- true
-);
-\echo '\`\`\`'
-
-\echo call forcing the use of the original code
-\echo * not longer allowed without restrictions
-\echo
-\echo '\`\`\`'
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 2, 3,
- false, true
-);
-\echo '\`\`\`'
-
-\echo trsp with restrictions (2 to 3)
-\echo does not find the shortest path
-\echo '\`\`\`'
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 2, 3,
- false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-\echo calling the original code with restrictions (2 to 3)
-\echo does not find the shortest path
-\echo '\`\`\`'
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 2, 3,
- false,
- true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
------------------------------------------------------------------------------------------------
-\echo # The Edges signature version
-
-------------------HERE
-\echo ## (Edges) No path representation differences
-\echo Original function code
-\echo * Sometimes it crasses the server when no path was found
-\echo * Sometimes represents with Error a no path found
-\echo * Forcing the user to use the wrapper or the replacement function
-\echo
-\echo Calls to the original function of is no longer allowed without restrictions
-\echo '\`\`\`'
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 17, 0.5, true, true
-);
-\echo '\`\`\`'
-\echo pgr_withPoints returns EMPTY SET to represent no path found
-\echo '\`\`\`'
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
- UNION
- (SELECT 2, 17, 0.5)$$,
- -1, -2
-);
-\echo '\`\`\`'
-
-
-------------------
-\echo ## Definition of a path
-\echo Remember that one characteristic of a path is that for a path of N edges it has N+1 vertices.
-\echo
-\echo For this example, suppose points, where the pid are different even if the edge and fraction are different.
-\echo One point might be on the left side other on the right side, pgr_trsp does not take into account
-\echo the side of the point
-
-\echo calls forcing the use of the original code
-\echo * not longer allowed without restrictions
-\echo
-\echo '\`\`\`'
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.5, true, true
-);
-\echo '\`\`\`'
-\echo * with restrictions
-\echo '\`\`\`'
-SELECT * FROM _pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.5, true, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-\echo Using the *pgr_withPoints* it returns a path of N edge and N+1 vertices
-\echo '\`\`\`'
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
- UNION
- (SELECT 2, 1, 0.5)$$,
- -1, -2
-);
-\echo '\`\`\`'
-
-\echo The *pgr_withPoints* is used when there are no restrictions
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.5, true, true
-);
-\echo '\`\`\`'
-
-\echo The original *_pgr_trsp* code is used when there are restrictions
-\echo '\`\`\`'
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.5, true, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-\echo note that pgr_withPoints returns an EMPTY SET when the point is the same
-\echo '\`\`\`'
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
- UNION
- (SELECT 2, 1, 0.5)$$,
- -1, -1
-);
-\echo '\`\`\`'
-
-------------------
-\echo ## Points on the same edge
-
-\echo The *pgr_withPoints* is used when there are no restrictions
-\echo * it returns a path of N edges and N+1 vertices
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.8, true, true
-);
-\echo '\`\`\`'
-
-\echo The original *_pgr_trsp* is used when there are restrictions
-\echo * it returns a path of N edges and N vertex instead of N edge and N+1 vertices
-\echo '\`\`\`'
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 1, 0.5, 1, 0.8, true, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-
-);
-\echo '\`\`\`'
-
-------------------
-\echo ## (Edges) Undirected graph
-\echo the shortest path obtained with *pgr_withPoints*
-\echo '\`\`\`'
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$(SELECT 1 as pid, 4 as edge_id, 0.5::float as fraction)
- UNION
- (SELECT 2, 2, 0.8)$$,
- -1, -2, directed:=false
-);
-\echo '\`\`\`'
-
-\echo The original *_pgr_trsp* is used when there are restrictions
-\echo
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 4, 0.5, 2, 0.8, false, true
-);
-\echo '\`\`\`'
-
-\echo when using restrictions the original *_pgr_trsp* is used internally
-\echo * it returns a path of N edges and N vertex instead of N edge and N+1 vertices
-\echo * it does not return the shortest path.
-\echo
-\echo '\`\`\`'
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 4, 0.5, 2, 0.8, false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-
-----------------
-\echo ## Using a points of interest table
-\echo The points of interest
-\echo '\`\`\`'
-SELECT * FROM pointsOfInterest;
-\echo '\`\`\`'
-
-\echo On *pgr_trsp*, to be able to use the table information:
-\echo * Each parameter has to be extracted explicitly from the table
-\echo * Regardles of the point pid original value
-\echo ' * will always be -1 for the first point'
-\echo ' * will always be -2 for the second point'
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 6),
- true, true
-);
-\echo '\`\`\`'
-
-\echo On *pgr_withPoints*, to be able to use the table information:
-\echo * select statement on the *pointsOfInterest* table
-\echo * *Negative* the id to represent the id is a pid
-\echo * The points pids in the result are not renumbered
-\echo * The points pids in the result are represented with negative sign
-\echo '\`\`\`'
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
- -1, -6
-);
-\echo '\`\`\`'
-
-
-----------------
-\echo ## routing from/to the same point
-
-\echo using pgr_withPoints to check results
-\echo expecting EMPTY SET to represent no path found
-\echo '\`\`\`'
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
- -1, -1
-);
-\echo '\`\`\`'
-
-
-\echo This call uses the replacement function because there are no restrictions
-\echo * Because the pid is not involved the points are considered different
-\echo * it returns a path
-\echo
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- true, true
-);
-\echo '\`\`\`'
-
-
-\echo pgr_trsp with restrictions use the original code
-\echo * it returns a path of N edges and N vertex instead of N edge and N+1 vertices
-\echo
-\echo '\`\`\`'
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- true, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-
-----------------
-\echo ## passing in front of other points
-
-\echo using pgr_withPoints to verify the shortest path from pids (1 to 3)
-\echo '\`\`\`'
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
- -1, -3
-);
-\echo '\`\`\`'
-
-\echo **pgr_withPoints** can be used to see when the route passes in front of other points
-\echo In this example point pid=6 is passed in front of
-\echo '\`\`\`'
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
- -1, -3, details:=true
-);
-\echo '\`\`\`'
-
-\echo Can not be used to see if other points are passed in front of.
-\echo The pointsOfInterest table is not part of the parameter
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSP(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
- true, true
-);
-\echo '\`\`\`'
-
-----------------
-\echo ## (edges) Routing from a vertex to a point
-
-\echo Showing *pgr_withPoints* results of the shortest path from vid 6 to pid 1
-\echo '\`\`\`'
-SELECT * FROM pgr_withPoints(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
- 6, -1
-);
-\echo '\`\`\`'
-
-\echo * Vertex 6 is on edge 8 at 1 fraction
-\echo * Vertex 6 is also edge 11 at 0 fraction
-\echo * Undefined behaviour when at least one of the "points" is an actual vertex
-\echo
-\echo '\`\`\`'
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 8, 1,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- true, true
-);
-SELECT * FROM pgr_trsp(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- 11, 0,
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- true, true
-);
-\echo '\`\`\`'
-
----------------------------------------------------------------
-
-\echo # pgr_trspViaVertices
-------------------
-\echo ## pgr_trspViaVertices No path representation differences
-
-\echo pgr_trspViaVertices uses _pgr_trsp which as mentioned before
-\echo * Sometimes it crasses the server when no path was found
-\echo * Sometimes represents with Error a no path found
-\echo * Forcing the user to use the wrapper or the replacement function
-\echo
-\echo Calls to the original function of is no longer allowed without restrictions
-\echo '\`\`\`'
-SELECT * FROM _pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 15, 2],
- false, true
-);
-SELECT * FROM _pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 15, 2, 1],
- false, true
-);
-\echo '\`\`\`'
-
-\echo **pgr_dijkstraVia** returning what paths of the route it finds or EMPTY SET when non is found
-\echo this case none is found
-\echo '\`\`\`'
-SELECT * FROM pgr_dijkstraVia(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 15, 2],
- false
-);
-\echo '\`\`\`'
-
-
-\echo this case only from 2 to 1 is found
-\echo '\`\`\`'
-SELECT * FROM pgr_dijkstraVia(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 15, 2, 1],
- false
-);
-\echo '\`\`\`'
-
-\echo the **pgr_dijkstraVia** used are for complete routes so its marked as **strict:=true**
-\echo therefore the expected result is EMPTY SET to represent no route was found
-\echo '\`\`\`'
-SELECT * FROM pgr_dijkstraVia(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 1, 2],
- false,
- strict := true
-);
-\echo '\`\`\`'
-
-
-\echo ## when a path does not exist on the route
-\echo pgr_TRSPViaVertices using the *pgr_dijkstraVia* when there are no restrictions.
-\echo Because there is no path from 1 to 1 then there is no complete route 1 to 1 to 2
-\echo therefore the expected result is EMPTY SET to represent no route was found
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSPViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 1, 2],
- false, true
-);
-\echo '\`\`\`'
-
-\echo Calls to the original function of is no longer allowed without restrictions
-\echo '\`\`\`'
-SELECT * FROM _pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 1, 2],
- false, true
-);
-\echo '\`\`\`'
-
-\echo with restrictions the original code is used
-\echo '\`\`\`'
-SELECT * FROM pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 1, 2],
- false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-
-\echo Using explicitly the original code
-\echo '\`\`\`'
-SELECT * FROM _pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 1, 2],
- false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-
-\echo ## from 2 to 3 to 2
-
-
-\echo dijkstra via shows the shortest route on the two paths
-\echo '\`\`\`'
-SELECT * FROM pgr_dijkstraVia(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[2, 3, 2],
- false
-);
-\echo '\`\`\`'
-
-\echo the replacement function **pgr_dijkstraVia** is used because there are no restrictions
-\echo '\`\`\`'
-SELECT * FROM pgr_TRSPViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[2, 3, 2],
- false,
- true
-);
-\echo '\`\`\`'
-
-\echo Calls to the original function of is no longer allowed without restrictions
-\echo '\`\`\`'
-SELECT * FROM _pgr_trspViaVertices(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[2, 3, 2],
- false,
- true
-);
-\echo '\`\`\`'
-
-
-
----------------------------------------------------------------
-
-\echo # pgr_trspViaEdges
-------------------
-
-\echo *pgr_trspViaEdges* will use the original code when
-\echo * There are restrictions
-\echo * A point is a vertex in disguise (with pcts value of 0)
-\echo
-\echo What it returns
-\echo * Error to represent no route
-\echo * the points are renumbered to -1, -2 .. -N
-\echo * if a point is part of a path it will **not** show on the path
-\echo
-
-\echo Exaple execution
-\echo '\`\`\`'
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
- false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-
-\echo '\`\`\`'
-\echo A temporay wraper function is used when:
-\echo * There are no restrictions
-\echo * Before: No point is a vertex in disguise (with pcts value of 0)
-\echo * Now: c$Undefined behaviour when a point is a vertex in disguise (with pcts value of 0)
-\echo
-\echo Internaly:
-\echo * builds a new graph and calls pgr_dijkstraVia
-\echo
-\echo What it returns
-\echo * returns EMPTY SET to represent no route
-\echo * edge = -1 in the result to represent the end of a intermediate path
-\echo * edge = -2 in the result to represent the end of the last path & route
-\echo * the points are renumbered to -1, -2 .. -N
-\echo * if a point is part of a path it will show on the path
-\echo
-\echo Note: I do not mention the wrapper name due to the fact that this is not official documentation
-\echo Note: I will use *_pgr_withPointsVia* as the wrapper name just for sake of this notes
-
-\echo Example excution
-\echo '\`\`\`'
-SELECT * FROM _pgr_withPointsVia(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
- directed := false
-);
-\echo '\`\`\`'
-
-
-\echo ## pgr_trspViaEdges No path representation differences
-----------------
-
-\echo This example no path is found (edge 17 is disconnected) from the big graph.
-\echo * There is a vertex in disguise (fraction 0 or 1)
-\echo * Undefined behaviour
-\echo
-\echo '\`\`\`'
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 17, 1], ARRAY[0,0.5,0.5],
- false, true
-);
-\echo '\`\`\`'
-
-
-\echo This example no path is found (edge 17 is disconnected) from the big graph.
-\echo * Has a restriction
-\echo * *pgr_trspViaEdges* original code is used
-\echo * throws error to represent no route was not found
-\echo
-\echo '\`\`\`'
-\echo SELECT * FROM pgr_trspViaEdges(
-\echo $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
-\echo ARRAY[1, 17, 1], ARRAY[0.5,0.5,0.5],
-\echo false, true,
-\echo $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-\echo );
-\echo server closed the connection unexpectedly
-\echo This probably means the server terminated abnormally
-\echo before or while processing the request.
-\echo The connection to the server was lost. Attempting reset: Failed.
-\echo '\`\`\`'
-
-\echo This example no path is found (edge 17 is disconnected) from the big graph.
-\echo * *_pgr_withPointsVia* is used
-\echo * returns EMPTY SET to represent no route
-\echo
-\echo '\`\`\`'
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[1, 17, 1], ARRAY[0.1,0.5,0.5],
- false,
- true
-);
-\echo '\`\`\`'
-
-----------------
-\echo ## (pgr_trspViaEdges) Using the pointsOfInterest table
-
-\echo Only routing points
-\echo when *_pgr_withPointsVia* is used
-\echo * the renumbering still takes place
-\echo
-\echo '\`\`\`'
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
- ARRAY[
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
- false,
- true
-);
-\echo '\`\`\`'
-
-\echo Only routing points
-\echo when originalcode is used (because there is a restriction)
-\echo
-\echo '\`\`\`'
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
- ARRAY[
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
- false, true,
- $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
-);
-\echo '\`\`\`'
-
-\echo Routing points & vertices
-\echo * vertex 6 is on edge 11 with fraction 0
-\echo * Undefined behavior
-\echo '\`\`\`'
-SELECT * FROM pgr_trspViaEdges(
- $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
- ARRAY[
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
- (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
- 11],
- ARRAY[
- (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
- (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
- 0],
- false,
- true
-);
-\echo '\`\`\`'
-BEGIN;
diff --git a/src/trsp/test/trsp_notes_v2.5.0.result b/src/trsp/test/trsp_notes_v2.5.0.result
new file mode 100644
index 0000000..fec6b64
--- /dev/null
+++ b/src/trsp/test/trsp_notes_v2.5.0.result
@@ -0,0 +1,1112 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+ROLLBACK;
+ROLLBACK
+# Notes on pgr_trsp for version 2.5.0
+Table of contents
+* [Introduction](#introduction)
+ * [The restriction](#the-restriction)
+* [The Vertices Signature Version](#the-vertices-signature-version)
+ * [No path representation differences](#vertices-no-path-representation-differences)
+ * [Routing from/to same location](#routing-fromto-same-location)
+ * [Undirected graph](#vertices-undirected-graph)
+* [The Edges Signature Version](#the-edges-signature-version)
+ * [No path representation differences](#edges-no-path-representation-differences)
+ * [Definition of a path](#definition-of-a-path)
+ * [Points on the same edge](#points-on-the-same-edge)
+ * [Undirected graph](#edges-undirected-graph)
+ * [Using a points of interest table](#using-a-points-of-interest-table)
+ * [Routing from/to the same point](#routing-fromto-the-same-point)
+ * [Passing in front of other points](#passing-in-front-of-other-points)
+ * [Routing from a vertex to a point](#edges-routing-from-a-vertex-to-a-point)
+* [pgr_trspViaVertices](#pgr_trspviavertices)
+ * [pgr_trspViaVertices No path representation differences](#pgr_trspviavertices-no-path-representation-differences)
+ * [when a path does not exist on the route](#when-a-path-does-not-exist-on-the-route)
+ * [from 2 to 3 to 2](#from-2-to-3-to-2)
+* [pgr_trspViaEdges](#pgr_trspviaedges)
+ * [pgr_trspViaEdges No path representation differences](#pgr_trspviaedges-no-path-representation-differences)
+ * [Using a points of interest table](#pgr_trspviaedges-using-the-pointsofinterest-table)
+
+# Introduction
+pgr_trsp code has issues that are not being fixed yet, but as time passes and new functionality is added to pgRouting with wrappers to **hide** the issues, not to fix them.
+
+For clarity on the queries:
+* _pgr_trsp (with underscore) is the original code
+* pgr_trsp (lower case) represents the wrapper calling the original code
+* pgr_TRSP (upper case) represents the wrapper calling the replacement function, depending on the function, it can be:
+ * pgr_dijkstra
+ * pgr_dijkstraVia
+ * pgr_withPoints
+ * _pgr_withPointsVia
+
+This page intentions is to compare the original code with the wrapped version of the trsp group of functions.
+## The restriction
+The restriction used in the examples does not have to do anything with the graph:
+* No vertex has id: 25, 32 or 33
+* No edge has id: 25, 32 or 33
+```
+$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, 32, 33::TEXT AS via_path$$
+```
+therefore the shortest path expected are as if there was no restriction involved
+# The Vertices signature version
+## (Vertices) No path representation differences
+Original function code
+* Sometimes it crasses the server when no path was found
+* Sometimes represents with Error a no path found
+* Forcing the user to use the wrapper or the replacement function
+
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true
+);
+ERROR: Error computing path: Path Not Found
+```
+dijkstra returns EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+pgr_trsp use the pgr_dijkstra when there are no restrictions
+therefore returns EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+```
+pgr_trsp use the original code when there are restrictions
+therefore throws Error to represent no path found
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ERROR: Error computing path: Path Not Found
+CONTEXT: PL/pgSQL function pgr_trsp(text,integer,integer,boolean,boolean,text) line 29 at RETURN QUERY
+```
+## routing from/to same location
+using dijkstra to verify (1 to 1)
+```
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+This call uses the replacement function because there are no restrictions (1 to 1)
+therefore is expected to return EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+```
+call forcing the use of the original code (1 to 1)
+* not longer allowed without restrictions
+
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 1 | 1 | 1
+ 1 | 2 | 4 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 16 | 1
+ 5 | 4 | 3 | 1
+ 6 | 3 | 2 | 1
+ 7 | 2 | 1 | 1
+ 8 | 1 | -1 | 0
+(9 rows)
+
+```
+trsp with restrictions (1 to 1) use the original code
+is expected to return Error to represent no path found
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 1 | 1 | 1
+ 1 | 2 | 4 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 16 | 1
+ 5 | 4 | 3 | 1
+ 6 | 3 | 2 | 1
+ 7 | 2 | 1 | 1
+ 8 | 1 | -1 | 0
+(9 rows)
+
+```
+trsp calling the original code with restrictions (1 to 1)
+is expected to return Error to represent no path found
+but "finds" a path when there should be no path.
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 1 | 1 | 1
+ 1 | 2 | 4 | 1
+ 2 | 5 | 8 | 1
+ 3 | 6 | 9 | 1
+ 4 | 9 | 16 | 1
+ 5 | 4 | 3 | 1
+ 6 | 3 | 2 | 1
+ 7 | 2 | 1 | 1
+ 8 | 1 | -1 | 0
+(9 rows)
+
+```
+## (vertices) Undirected graph
+using Dijkstra to verify the shortest path from (2 to 3) on undirected graph
+```
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3, false
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
+```
+using the replacement function because there are no restrictions (2 to 3)
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false,
+ true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 2 | 1
+ 1 | 3 | -1 | 0
+(2 rows)
+
+```
+call forcing the use of the original code
+* not longer allowed without restrictions
+
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | -1 | 0
+(6 rows)
+
+```
+trsp with restrictions (2 to 3)
+does not find the shortest path
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | -1 | 0
+(6 rows)
+
+```
+calling the original code with restrictions (2 to 3)
+does not find the shortest path
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | 2 | 4 | 1
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | -1 | 0
+(6 rows)
+
+```
+# The Edges signature version
+## (Edges) No path representation differences
+Original function code
+* Sometimes it crasses the server when no path was found
+* Sometimes represents with Error a no path found
+* Forcing the user to use the wrapper or the replacement function
+
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 17, 0.5, true, true
+);
+ERROR: Error computing path: Path Not Found
+```
+pgr_withPoints returns EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 17, 0.5)$$,
+ -1, -2
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+## Definition of a path
+Remember that one characteristic of a path is that for a path of N edges it has N+1 vertices.
+
+For this example, suppose points, where the pid are different even if the edge and fraction are different.
+One point might be on the left side other on the right side, pgr_trsp does not take into account
+the side of the point
+calls forcing the use of the original code
+* not longer allowed without restrictions
+
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+* with restrictions
+```
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+Using the *pgr_withPoints* it returns a path of N edge and N+1 vertices
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 1, 0.5)$$,
+ -1, -2
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0 | 0
+ 2 | 2 | -2 | -1 | 0 | 0
+(2 rows)
+
+```
+The *pgr_withPoints* is used when there are no restrictions
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+ 1 | -2 | -1 | 0
+(2 rows)
+
+```
+The original *_pgr_trsp* code is used when there are restrictions
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+note that pgr_withPoints returns an EMPTY SET when the point is the same
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 1, 0.5)$$,
+ -1, -1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+## Points on the same edge
+The *pgr_withPoints* is used when there are no restrictions
+* it returns a path of N edges and N+1 vertices
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.8, true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.3
+ 1 | -2 | -1 | 0
+(2 rows)
+
+```
+The original *_pgr_trsp* is used when there are restrictions
+* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.8, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.3
+(1 row)
+
+```
+## (Edges) Undirected graph
+the shortest path obtained with *pgr_withPoints*
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 4 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 2, 0.8)$$,
+ -1, -2, directed:=false
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 4 | 0.5 | 0
+ 2 | 2 | 2 | 2 | 0.8 | 0.5
+ 3 | 3 | -2 | -1 | 0 | 1.3
+(3 rows)
+
+```
+The original *_pgr_trsp* is used when there are restrictions
+
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 4, 0.5, 2, 0.8, false, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 4 | 0.5
+ 1 | 2 | 2 | 0.8
+ 2 | -2 | -1 | 0
+(3 rows)
+
+```
+when using restrictions the original *_pgr_trsp* is used internally
+* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+* it does not return the shortest path.
+
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 4, 0.5, 2, 0.8, false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 4 | 0.5
+ 1 | 5 | 8 | 1
+ 2 | 6 | 9 | 1
+ 3 | 9 | 16 | 1
+ 4 | 4 | 3 | 1
+ 5 | 3 | 2 | 0.2
+(6 rows)
+
+```
+## Using a points of interest table
+The points of interest
+```
+SELECT * FROM pointsOfInterest;
+ pid | x | y | edge_id | side | fraction | the_geom | newpoint
+-----+-----+-----+---------+------+----------+--------------------------------------------+--------------------------------------------
+ 1 | 1.8 | 0.4 | 1 | l | 0.4 | 0101000000CDCCCCCCCCCCFC3F9A9999999999D93F | 010100000000000000000000409A9999999999D93F
+ 2 | 4.2 | 2.4 | 15 | r | 0.4 | 0101000000CDCCCCCCCCCC10403333333333330340 | 010100000000000000000010403333333333330340
+ 3 | 2.6 | 3.2 | 12 | l | 0.6 | 0101000000CDCCCCCCCCCC04409A99999999990940 | 0101000000CDCCCCCCCCCC04400000000000000840
+ 4 | 0.3 | 1.8 | 6 | r | 0.3 | 0101000000333333333333D33FCDCCCCCCCCCCFC3F | 0101000000333333333333D33F0000000000000040
+ 5 | 2.9 | 1.8 | 5 | l | 0.8 | 01010000003333333333330740CDCCCCCCCCCCFC3F | 01010000000000000000000840CDCCCCCCCCCCFC3F
+ 6 | 2.2 | 1.7 | 4 | b | 0.7 | 01010000009A99999999990140333333333333FB3F | 01010000000000000000000040333333333333FB3F
+(6 rows)
+
+```
+On *pgr_trsp*, to be able to use the table information:
+* Each parameter has to be extracted explicitly from the table
+* Regardles of the point pid original value
+ * will always be -1 for the first point
+ * will always be -2 for the second point
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.6
+ 1 | 2 | 4 | 0.7
+ 2 | -2 | -1 | 0
+(3 rows)
+
+```
+On *pgr_withPoints*, to be able to use the table information:
+* select statement on the *pointsOfInterest* table
+* *Negative* the id to represent the id is a pid
+* The points pids in the result are not renumbered
+* The points pids in the result are represented with negative sign
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -6
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 0.7 | 0.6
+ 3 | 3 | -6 | -1 | 0 | 1.3
+(3 rows)
+
+```
+## routing from/to the same point
+using pgr_withPoints to check results
+expecting EMPTY SET to represent no path found
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+(0 rows)
+
+```
+This call uses the replacement function because there are no restrictions
+* Because the pid is not involved the points are considered different
+* it returns a path
+
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+ 1 | -2 | -1 | 0
+(2 rows)
+
+```
+pgr_trsp with restrictions use the original code
+* it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0
+(1 row)
+
+```
+## passing in front of other points
+using pgr_withPoints to verify the shortest path from pids (1 to 3)
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 1 | 0.6
+ 3 | 3 | 5 | 10 | 1 | 1.6
+ 4 | 4 | 10 | 12 | 0.6 | 2.6
+ 5 | 5 | -3 | -1 | 0 | 3.2
+(5 rows)
+
+```
+**pgr_withPoints** can be used to see when the route passes in front of other points
+In this example point pid=6 is passed in front of
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -3, details:=true
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 0.7 | 0.6
+ 3 | 3 | -6 | 4 | 0.3 | 1.3
+ 4 | 4 | 5 | 10 | 1 | 1.6
+ 5 | 5 | 10 | 12 | 0.6 | 2.6
+ 6 | 6 | -3 | -1 | 0 | 3.2
+(6 rows)
+
+```
+Can not be used to see if other points are passed in front of.
+The pointsOfInterest table is not part of the parameter
+```
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+ 0 | -1 | 1 | 0.6
+ 1 | 2 | 4 | 1
+ 2 | 5 | 10 | 1
+ 3 | 10 | 12 | 0.6
+ 4 | -2 | -1 | 0
+(5 rows)
+
+```
+## (edges) Routing from a vertex to a point
+Showing *pgr_withPoints* results of the shortest path from vid 6 to pid 1
+```
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ 6, -1
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 6 | 8 | 1 | 0
+ 2 | 2 | 5 | 4 | 1 | 1
+ 3 | 3 | 2 | 1 | 0.6 | 2
+ 4 | 4 | -1 | -1 | 0 | 2.6
+(4 rows)
+
+```
+* Vertex 6 is on edge 8 at 1 fraction
+* Vertex 6 is also edge 11 at 0 fraction
+* Undefined behaviour when at least one of the "points" is an actual vertex
+
+```
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 8, 1,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 11, 0,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+ seq | id1 | id2 | cost
+-----+-----+-----+------
+(0 rows)
+
+```
+# pgr_trspViaVertices
+## pgr_trspViaVertices No path representation differences
+pgr_trspViaVertices uses _pgr_trsp which as mentioned before
+* Sometimes it crasses the server when no path was found
+* Sometimes represents with Error a no path found
+* Forcing the user to use the wrapper or the replacement function
+
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2],
+ false, true
+);
+ERROR: Error computing path: Path Not Found
+CONTEXT: PL/pgSQL function _pgr_trspviavertices(text,integer[],boolean,boolean,text) line 16 at FOR over SELECT rows
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2, 1],
+ false, true
+);
+ERROR: Error computing path: Path Not Found
+CONTEXT: PL/pgSQL function _pgr_trspviavertices(text,integer[],boolean,boolean,text) line 16 at FOR over SELECT rows
+```
+**pgr_dijkstraVia** returning what paths of the route it finds or EMPTY SET when non is found
+this case none is found
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2],
+ false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+(0 rows)
+
+```
+this case only from 2 to 1 is found
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2, 1],
+ false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 3 | 1 | 2 | 1 | 2 | 1 | 1 | 0 | 0
+ 2 | 3 | 2 | 2 | 1 | 1 | -2 | 0 | 1 | 1
+(2 rows)
+
+```
+the **pgr_dijkstraVia** used are for complete routes so its marked as **strict:=true**
+therefore the expected result is EMPTY SET to represent no route was found
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false,
+ strict := true
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+(0 rows)
+
+```
+## when a path does not exist on the route
+pgr_TRSPViaVertices using the *pgr_dijkstraVia* when there are no restrictions.
+Because there is no path from 1 to 1 then there is no complete route 1 to 1 to 2
+therefore the expected result is EMPTY SET to represent no route was found
+```
+SELECT * FROM pgr_TRSPViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+(0 rows)
+
+```
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 1 | 2 | 1 | 1
+ 9 | 2 | 1 | 1 | 1
+ 10 | 2 | 2 | -1 | 0
+(10 rows)
+
+```
+with restrictions the original code is used
+```
+SELECT * FROM pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 1 | 2 | 1 | 1
+ 9 | 2 | 1 | 1 | 1
+ 10 | 2 | 2 | -1 | 0
+(10 rows)
+
+```
+Using explicitly the original code
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 1 | 1 | 1
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 1 | 2 | 1 | 1
+ 9 | 2 | 1 | 1 | 1
+ 10 | 2 | 2 | -1 | 0
+(10 rows)
+
+```
+## from 2 to 3 to 2
+dijkstra via shows the shortest route on the two paths
+```
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 1 | 1 | 2 | 3 | 2 | 2 | 1 | 0 | 0
+ 2 | 1 | 2 | 2 | 3 | 3 | -1 | 0 | 1 | 1
+ 3 | 2 | 1 | 3 | 2 | 3 | 2 | 1 | 0 | 1
+ 4 | 2 | 2 | 3 | 2 | 2 | -2 | 0 | 1 | 2
+(4 rows)
+
+```
+the replacement function **pgr_dijkstraVia** is used because there are no restrictions
+```
+SELECT * FROM pgr_TRSPViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 2 | 1
+ 2 | 2 | 3 | 2 | 1
+ 3 | 2 | 2 | -1 | 0
+(3 rows)
+
+```
+Calls to the original function of is no longer allowed without restrictions
+```
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 4 | 1
+ 2 | 1 | 5 | 8 | 1
+ 3 | 1 | 6 | 9 | 1
+ 4 | 1 | 9 | 16 | 1
+ 5 | 1 | 4 | 3 | 1
+ 6 | 2 | 3 | 2 | 1
+ 7 | 2 | 2 | -1 | 0
+(7 rows)
+
+```
+# pgr_trspViaEdges
+*pgr_trspViaEdges* will use the original code when
+* There are restrictions
+* A point is a vertex in disguise (with pcts value of 0)
+
+What it returns
+* Error to represent no route
+* the points are renumbered to -1, -2 .. -N
+* if a point is part of a path it will **not** show on the path
+
+Exaple execution
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.9
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 2 | 1
+ 8 | 2 | 2 | 1 | 0.5
+(8 rows)
+
+```
+A temporay wraper function is used when:
+* There are no restrictions
+* Before: No point is a vertex in disguise (with pcts value of 0)
+* Now: c$Undefined behaviour when a point is a vertex in disguise (with pcts value of 0)
+
+Internaly:
+* builds a new graph and calls pgr_dijkstraVia
+
+What it returns
+* returns EMPTY SET to represent no route
+* edge = -1 in the result to represent the end of a intermediate path
+* edge = -2 in the result to represent the end of the last path & route
+* the points are renumbered to -1, -2 .. -N
+* if a point is part of a path it will show on the path
+
+Note: I do not mention the wrapper name due to the fact that this is not official documentation
+Note: I will use *_pgr_withPointsVia* as the wrapper name just for sake of this notes
+Example excution
+```
+SELECT * FROM _pgr_withPointsVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
+ directed := false
+);
+ seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
+-----+---------+----------+-----------+---------+------+------+------+----------+----------------
+ 1 | 1 | 1 | -1 | -2 | -1 | 1 | 0.1 | 0 | 0
+ 2 | 1 | 2 | -1 | -2 | 2 | 2 | 0.5 | 0.1 | 0.1
+ 3 | 1 | 3 | -1 | -2 | -2 | -1 | 0 | 0.6 | 0.6
+ 4 | 2 | 1 | -2 | -3 | -2 | 2 | 0.5 | 0 | 0.6
+ 5 | 2 | 2 | -2 | -3 | 2 | 1 | 0.5 | 0.5 | 1.1
+ 6 | 2 | 3 | -2 | -3 | -3 | -2 | 0 | 1 | 1.6
+(6 rows)
+
+```
+## pgr_trspViaEdges No path representation differences
+This example no path is found (edge 17 is disconnected) from the big graph.
+* There is a vertex in disguise (fraction 0 or 1)
+* Undefined behaviour
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 17, 1], ARRAY[0,0.5,0.5],
+ false, true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | | | |
+(1 row)
+
+```
+This example no path is found (edge 17 is disconnected) from the big graph.
+* Has a restriction
+* *pgr_trspViaEdges* original code is used
+* throws error to represent no route was not found
+
+```
+SELECT * FROM pgr_trspViaEdges(
+$$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ARRAY[1, 17, 1], ARRAY[0.5,0.5,0.5],
+false, true,
+$$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, 32, 33::TEXT AS via_path$$
+);
+server closed the connection unexpectedly
+This probably means the server terminated abnormally
+before or while processing the request.
+The connection to the server was lost. Attempting reset: Failed.
+```
+This example no path is found (edge 17 is disconnected) from the big graph.
+* *_pgr_withPointsVia* is used
+* returns EMPTY SET to represent no route
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 17, 1], ARRAY[0.1,0.5,0.5],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+(0 rows)
+
+```
+## (pgr_trspViaEdges) Using the pointsOfInterest table
+Only routing points
+when *_pgr_withPointsVia* is used
+* the renumbering still takes place
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.4
+ 2 | 1 | 2 | 4 | 0.3
+ 3 | 1 | -3 | 4 | 0.3
+ 4 | 1 | 5 | 10 | 1
+ 5 | 1 | 10 | 12 | 0.6
+ 6 | 1 | -2 | -1 | 0
+ 7 | 2 | -2 | 12 | 0.6
+ 8 | 2 | 10 | 10 | 1
+ 9 | 2 | 5 | 4 | 0.3
+ 10 | 2 | -3 | -2 | 0
+(10 rows)
+
+```
+Only routing points
+when originalcode is used (because there is a restriction)
+
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.6
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 10 | 1
+ 4 | 1 | 10 | 12 | 1
+ 5 | 2 | 11 | 13 | 1
+ 6 | 2 | 12 | 15 | 1
+ 7 | 2 | 9 | 9 | 1
+ 8 | 2 | 6 | 8 | 1
+ 9 | 2 | 5 | 4 | 0.3
+(9 rows)
+
+```
+Routing points & vertices
+* vertex 6 is on edge 11 with fraction 0
+* Undefined behavior
+```
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ 11],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ 0],
+ false,
+ true
+);
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.6
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 10 | 1
+ 4 | 1 | 10 | 12 | 0.6
+ 5 | 1 | -2 | -1 | 0
+(5 rows)
+
+```
+BEGIN;
+BEGIN
+ROLLBACK;
+ROLLBACK
diff --git a/src/trsp/test/trsp_notes_v2.5.0.test.sql b/src/trsp/test/trsp_notes_v2.5.0.test.sql
new file mode 100644
index 0000000..9fb967d
--- /dev/null
+++ b/src/trsp/test/trsp_notes_v2.5.0.test.sql
@@ -0,0 +1,814 @@
+ROLLBACK;
+\echo # Notes on pgr_trsp for version 2.5.0
+
+\echo Table of contents
+
+\echo * [Introduction](#introduction)
+\echo ' * [The restriction](#the-restriction)'
+\echo * [The Vertices Signature Version](#the-vertices-signature-version)
+\echo ' * [No path representation differences](#vertices-no-path-representation-differences)'
+\echo ' * [Routing from/to same location](#routing-fromto-same-location)'
+\echo ' * [Undirected graph](#vertices-undirected-graph)'
+\echo * [The Edges Signature Version](#the-edges-signature-version)
+\echo ' * [No path representation differences](#edges-no-path-representation-differences)'
+\echo ' * [Definition of a path](#definition-of-a-path)'
+\echo ' * [Points on the same edge](#points-on-the-same-edge)'
+\echo ' * [Undirected graph](#edges-undirected-graph)'
+\echo ' * [Using a points of interest table](#using-a-points-of-interest-table)'
+\echo ' * [Routing from/to the same point](#routing-fromto-the-same-point)'
+\echo ' * [Passing in front of other points](#passing-in-front-of-other-points)'
+\echo ' * [Routing from a vertex to a point](#edges-routing-from-a-vertex-to-a-point)'
+\echo * [pgr_trspViaVertices](#pgr_trspviavertices)
+\echo ' * [pgr_trspViaVertices No path representation differences](#pgr_trspviavertices-no-path-representation-differences)'
+\echo ' * [when a path does not exist on the route](#when-a-path-does-not-exist-on-the-route)'
+\echo ' * [from 2 to 3 to 2](#from-2-to-3-to-2)'
+\echo * [pgr_trspViaEdges](#pgr_trspviaedges)
+\echo ' * [pgr_trspViaEdges No path representation differences](#pgr_trspviaedges-no-path-representation-differences)'
+\echo ' * [Using a points of interest table](#pgr_trspviaedges-using-the-pointsofinterest-table)'
+\echo
+
+
+
+\echo # Introduction
+\echo pgr_trsp code has issues that are not being fixed yet, but as time passes and new functionality is added to pgRouting with wrappers to **hide** the issues, not to fix them.
+\echo
+\echo For clarity on the queries:
+\echo * _pgr_trsp (with underscore) is the original code
+\echo * pgr_trsp (lower case) represents the wrapper calling the original code
+\echo * pgr_TRSP (upper case) represents the wrapper calling the replacement function, depending on the function, it can be:
+\echo ' * pgr_dijkstra'
+\echo ' * pgr_dijkstraVia'
+\echo ' * pgr_withPoints'
+\echo ' * _pgr_withPointsVia'
+\echo
+
+\echo This page intentions is to compare the original code with the wrapped version of the trsp group of functions.
+\echo ## The restriction
+
+\echo The restriction used in the examples does not have to do anything with the graph:
+\echo * No vertex has id: 25, 32 or 33
+\echo * No edge has id: 25, 32 or 33
+\echo '\`\`\`'
+\echo $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+\echo '\`\`\`'
+
+\echo therefore the shortest path expected are as if there was no restriction involved
+
+
+-------------------------------------------------------------------------------------------
+\echo # The Vertices signature version
+------------------
+\echo ## (Vertices) No path representation differences
+\echo Original function code
+\echo * Sometimes it crasses the server when no path was found
+\echo * Sometimes represents with Error a no path found
+\echo * Forcing the user to use the wrapper or the replacement function
+\echo
+\echo Calls to the original function of is no longer allowed without restrictions
+\echo '\`\`\`'
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true
+);
+\echo '\`\`\`'
+
+\echo dijkstra returns EMPTY SET to represent no path found
+\echo '\`\`\`'
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15
+);
+\echo '\`\`\`'
+
+\echo pgr_trsp use the pgr_dijkstra when there are no restrictions
+\echo therefore returns EMPTY SET to represent no path found
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true
+);
+\echo '\`\`\`'
+
+\echo pgr_trsp use the original code when there are restrictions
+\echo therefore throws Error to represent no path found
+\echo '\`\`\`'
+ SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 15, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+
+------------------
+\echo ## routing from/to same location
+
+\echo using dijkstra to verify (1 to 1)
+\echo '\`\`\`'
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1
+);
+\echo '\`\`\`'
+
+
+\echo This call uses the replacement function because there are no restrictions (1 to 1)
+\echo therefore is expected to return EMPTY SET to represent no path found
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1, true, true
+);
+\echo '\`\`\`'
+
+
+\echo call forcing the use of the original code (1 to 1)
+\echo * not longer allowed without restrictions
+\echo
+\echo '\`\`\`'
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1, true, true
+);
+\echo '\`\`\`'
+
+
+\echo trsp with restrictions (1 to 1) use the original code
+\echo is expected to return Error to represent no path found
+\echo '\`\`\`'
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+\echo trsp calling the original code with restrictions (1 to 1)
+\echo is expected to return Error to represent no path found
+\echo but "finds" a path when there should be no path.
+\echo '\`\`\`'
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 1,
+ true,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+
+------------------
+\echo ## (vertices) Undirected graph
+
+\echo using Dijkstra to verify the shortest path from (2 to 3) on undirected graph
+\echo '\`\`\`'
+SELECT * FROM pgr_dijkstra(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3, false
+);
+\echo '\`\`\`'
+
+\echo using the replacement function because there are no restrictions (2 to 3)
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false,
+ true
+);
+\echo '\`\`\`'
+
+\echo call forcing the use of the original code
+\echo * not longer allowed without restrictions
+\echo
+\echo '\`\`\`'
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false, true
+);
+\echo '\`\`\`'
+
+\echo trsp with restrictions (2 to 3)
+\echo does not find the shortest path
+\echo '\`\`\`'
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+\echo calling the original code with restrictions (2 to 3)
+\echo does not find the shortest path
+\echo '\`\`\`'
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 2, 3,
+ false,
+ true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+-----------------------------------------------------------------------------------------------
+\echo # The Edges signature version
+
+------------------HERE
+\echo ## (Edges) No path representation differences
+\echo Original function code
+\echo * Sometimes it crasses the server when no path was found
+\echo * Sometimes represents with Error a no path found
+\echo * Forcing the user to use the wrapper or the replacement function
+\echo
+\echo Calls to the original function of is no longer allowed without restrictions
+\echo '\`\`\`'
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 17, 0.5, true, true
+);
+\echo '\`\`\`'
+\echo pgr_withPoints returns EMPTY SET to represent no path found
+\echo '\`\`\`'
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 17, 0.5)$$,
+ -1, -2
+);
+\echo '\`\`\`'
+
+
+------------------
+\echo ## Definition of a path
+\echo Remember that one characteristic of a path is that for a path of N edges it has N+1 vertices.
+\echo
+\echo For this example, suppose points, where the pid are different even if the edge and fraction are different.
+\echo One point might be on the left side other on the right side, pgr_trsp does not take into account
+\echo the side of the point
+
+\echo calls forcing the use of the original code
+\echo * not longer allowed without restrictions
+\echo
+\echo '\`\`\`'
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true
+);
+\echo '\`\`\`'
+\echo * with restrictions
+\echo '\`\`\`'
+SELECT * FROM _pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+\echo Using the *pgr_withPoints* it returns a path of N edge and N+1 vertices
+\echo '\`\`\`'
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 1, 0.5)$$,
+ -1, -2
+);
+\echo '\`\`\`'
+
+\echo The *pgr_withPoints* is used when there are no restrictions
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true
+);
+\echo '\`\`\`'
+
+\echo The original *_pgr_trsp* code is used when there are restrictions
+\echo '\`\`\`'
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.5, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+\echo note that pgr_withPoints returns an EMPTY SET when the point is the same
+\echo '\`\`\`'
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 1 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 1, 0.5)$$,
+ -1, -1
+);
+\echo '\`\`\`'
+
+------------------
+\echo ## Points on the same edge
+
+\echo The *pgr_withPoints* is used when there are no restrictions
+\echo * it returns a path of N edges and N+1 vertices
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.8, true, true
+);
+\echo '\`\`\`'
+
+\echo The original *_pgr_trsp* is used when there are restrictions
+\echo * it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+\echo '\`\`\`'
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 1, 0.5, 1, 0.8, true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+
+);
+\echo '\`\`\`'
+
+------------------
+\echo ## (Edges) Undirected graph
+\echo the shortest path obtained with *pgr_withPoints*
+\echo '\`\`\`'
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$(SELECT 1 as pid, 4 as edge_id, 0.5::float as fraction)
+ UNION
+ (SELECT 2, 2, 0.8)$$,
+ -1, -2, directed:=false
+);
+\echo '\`\`\`'
+
+\echo The original *_pgr_trsp* is used when there are restrictions
+\echo
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 4, 0.5, 2, 0.8, false, true
+);
+\echo '\`\`\`'
+
+\echo when using restrictions the original *_pgr_trsp* is used internally
+\echo * it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+\echo * it does not return the shortest path.
+\echo
+\echo '\`\`\`'
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 4, 0.5, 2, 0.8, false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+
+----------------
+\echo ## Using a points of interest table
+\echo The points of interest
+\echo '\`\`\`'
+SELECT * FROM pointsOfInterest;
+\echo '\`\`\`'
+
+\echo On *pgr_trsp*, to be able to use the table information:
+\echo * Each parameter has to be extracted explicitly from the table
+\echo * Regardles of the point pid original value
+\echo ' * will always be -1 for the first point'
+\echo ' * will always be -2 for the second point'
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6),
+ true, true
+);
+\echo '\`\`\`'
+
+\echo On *pgr_withPoints*, to be able to use the table information:
+\echo * select statement on the *pointsOfInterest* table
+\echo * *Negative* the id to represent the id is a pid
+\echo * The points pids in the result are not renumbered
+\echo * The points pids in the result are represented with negative sign
+\echo '\`\`\`'
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -6
+);
+\echo '\`\`\`'
+
+
+----------------
+\echo ## routing from/to the same point
+
+\echo using pgr_withPoints to check results
+\echo expecting EMPTY SET to represent no path found
+\echo '\`\`\`'
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -1
+);
+\echo '\`\`\`'
+
+
+\echo This call uses the replacement function because there are no restrictions
+\echo * Because the pid is not involved the points are considered different
+\echo * it returns a path
+\echo
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+\echo '\`\`\`'
+
+
+\echo pgr_trsp with restrictions use the original code
+\echo * it returns a path of N edges and N vertex instead of N edge and N+1 vertices
+\echo
+\echo '\`\`\`'
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+
+----------------
+\echo ## passing in front of other points
+
+\echo using pgr_withPoints to verify the shortest path from pids (1 to 3)
+\echo '\`\`\`'
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -3
+);
+\echo '\`\`\`'
+
+\echo **pgr_withPoints** can be used to see when the route passes in front of other points
+\echo In this example point pid=6 is passed in front of
+\echo '\`\`\`'
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ -1, -3, details:=true
+);
+\echo '\`\`\`'
+
+\echo Can not be used to see if other points are passed in front of.
+\echo The pointsOfInterest table is not part of the parameter
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSP(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ true, true
+);
+\echo '\`\`\`'
+
+----------------
+\echo ## (edges) Routing from a vertex to a point
+
+\echo Showing *pgr_withPoints* results of the shortest path from vid 6 to pid 1
+\echo '\`\`\`'
+SELECT * FROM pgr_withPoints(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ $$SELECT pid, edge_id, fraction FROM pointsOfInterest$$,
+ 6, -1
+);
+\echo '\`\`\`'
+
+\echo * Vertex 6 is on edge 8 at 1 fraction
+\echo * Vertex 6 is also edge 11 at 0 fraction
+\echo * Undefined behaviour when at least one of the "points" is an actual vertex
+\echo
+\echo '\`\`\`'
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 8, 1,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+SELECT * FROM pgr_trsp(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ 11, 0,
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ true, true
+);
+\echo '\`\`\`'
+
+---------------------------------------------------------------
+
+\echo # pgr_trspViaVertices
+------------------
+\echo ## pgr_trspViaVertices No path representation differences
+
+\echo pgr_trspViaVertices uses _pgr_trsp which as mentioned before
+\echo * Sometimes it crasses the server when no path was found
+\echo * Sometimes represents with Error a no path found
+\echo * Forcing the user to use the wrapper or the replacement function
+\echo
+\echo Calls to the original function of is no longer allowed without restrictions
+\echo '\`\`\`'
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2],
+ false, true
+);
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2, 1],
+ false, true
+);
+\echo '\`\`\`'
+
+\echo **pgr_dijkstraVia** returning what paths of the route it finds or EMPTY SET when non is found
+\echo this case none is found
+\echo '\`\`\`'
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2],
+ false
+);
+\echo '\`\`\`'
+
+
+\echo this case only from 2 to 1 is found
+\echo '\`\`\`'
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 15, 2, 1],
+ false
+);
+\echo '\`\`\`'
+
+\echo the **pgr_dijkstraVia** used are for complete routes so its marked as **strict:=true**
+\echo therefore the expected result is EMPTY SET to represent no route was found
+\echo '\`\`\`'
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false,
+ strict := true
+);
+\echo '\`\`\`'
+
+
+\echo ## when a path does not exist on the route
+\echo pgr_TRSPViaVertices using the *pgr_dijkstraVia* when there are no restrictions.
+\echo Because there is no path from 1 to 1 then there is no complete route 1 to 1 to 2
+\echo therefore the expected result is EMPTY SET to represent no route was found
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSPViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true
+);
+\echo '\`\`\`'
+
+\echo Calls to the original function of is no longer allowed without restrictions
+\echo '\`\`\`'
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true
+);
+\echo '\`\`\`'
+
+\echo with restrictions the original code is used
+\echo '\`\`\`'
+SELECT * FROM pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+
+\echo Using explicitly the original code
+\echo '\`\`\`'
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 1, 2],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+
+\echo ## from 2 to 3 to 2
+
+
+\echo dijkstra via shows the shortest route on the two paths
+\echo '\`\`\`'
+SELECT * FROM pgr_dijkstraVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false
+);
+\echo '\`\`\`'
+
+\echo the replacement function **pgr_dijkstraVia** is used because there are no restrictions
+\echo '\`\`\`'
+SELECT * FROM pgr_TRSPViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false,
+ true
+);
+\echo '\`\`\`'
+
+\echo Calls to the original function of is no longer allowed without restrictions
+\echo '\`\`\`'
+SELECT * FROM _pgr_trspViaVertices(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[2, 3, 2],
+ false,
+ true
+);
+\echo '\`\`\`'
+
+
+
+---------------------------------------------------------------
+
+\echo # pgr_trspViaEdges
+------------------
+
+\echo *pgr_trspViaEdges* will use the original code when
+\echo * There are restrictions
+\echo * A point is a vertex in disguise (with pcts value of 0)
+\echo
+\echo What it returns
+\echo * Error to represent no route
+\echo * the points are renumbered to -1, -2 .. -N
+\echo * if a point is part of a path it will **not** show on the path
+\echo
+
+\echo Exaple execution
+\echo '\`\`\`'
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+
+\echo '\`\`\`'
+\echo A temporay wraper function is used when:
+\echo * There are no restrictions
+\echo * Before: No point is a vertex in disguise (with pcts value of 0)
+\echo * Now: c$Undefined behaviour when a point is a vertex in disguise (with pcts value of 0)
+\echo
+\echo Internaly:
+\echo * builds a new graph and calls pgr_dijkstraVia
+\echo
+\echo What it returns
+\echo * returns EMPTY SET to represent no route
+\echo * edge = -1 in the result to represent the end of a intermediate path
+\echo * edge = -2 in the result to represent the end of the last path & route
+\echo * the points are renumbered to -1, -2 .. -N
+\echo * if a point is part of a path it will show on the path
+\echo
+\echo Note: I do not mention the wrapper name due to the fact that this is not official documentation
+\echo Note: I will use *_pgr_withPointsVia* as the wrapper name just for sake of this notes
+
+\echo Example excution
+\echo '\`\`\`'
+SELECT * FROM _pgr_withPointsVia(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 2, 1], ARRAY[0.1,0.5,0.5],
+ directed := false
+);
+\echo '\`\`\`'
+
+
+\echo ## pgr_trspViaEdges No path representation differences
+----------------
+
+\echo This example no path is found (edge 17 is disconnected) from the big graph.
+\echo * There is a vertex in disguise (fraction 0 or 1)
+\echo * Undefined behaviour
+\echo
+\echo '\`\`\`'
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 17, 1], ARRAY[0,0.5,0.5],
+ false, true
+);
+\echo '\`\`\`'
+
+
+\echo This example no path is found (edge 17 is disconnected) from the big graph.
+\echo * Has a restriction
+\echo * *pgr_trspViaEdges* original code is used
+\echo * throws error to represent no route was not found
+\echo
+\echo '\`\`\`'
+\echo SELECT * FROM pgr_trspViaEdges(
+\echo $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+\echo ARRAY[1, 17, 1], ARRAY[0.5,0.5,0.5],
+\echo false, true,
+\echo $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+\echo );
+\echo server closed the connection unexpectedly
+\echo This probably means the server terminated abnormally
+\echo before or while processing the request.
+\echo The connection to the server was lost. Attempting reset: Failed.
+\echo '\`\`\`'
+
+\echo This example no path is found (edge 17 is disconnected) from the big graph.
+\echo * *_pgr_withPointsVia* is used
+\echo * returns EMPTY SET to represent no route
+\echo
+\echo '\`\`\`'
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[1, 17, 1], ARRAY[0.1,0.5,0.5],
+ false,
+ true
+);
+\echo '\`\`\`'
+
+----------------
+\echo ## (pgr_trspViaEdges) Using the pointsOfInterest table
+
+\echo Only routing points
+\echo when *_pgr_withPointsVia* is used
+\echo * the renumbering still takes place
+\echo
+\echo '\`\`\`'
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
+ false,
+ true
+);
+\echo '\`\`\`'
+
+\echo Only routing points
+\echo when originalcode is used (because there is a restriction)
+\echo
+\echo '\`\`\`'
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 6)],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 6)],
+ false, true,
+ $$SELECT 100::float AS to_cost, 25::INTEGER AS target_id, '32, 33'::TEXT AS via_path$$
+);
+\echo '\`\`\`'
+
+\echo Routing points & vertices
+\echo * vertex 6 is on edge 11 with fraction 0
+\echo * Undefined behavior
+\echo '\`\`\`'
+SELECT * FROM pgr_trspViaEdges(
+ $$SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table$$,
+ ARRAY[
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 1),
+ (SELECT edge_id::INTEGER FROM pointsOfInterest WHERE pid = 3),
+ 11],
+ ARRAY[
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 1),
+ (SELECT fraction FROM pointsOfInterest WHERE pid = 3),
+ 0],
+ false,
+ true
+);
+\echo '\`\`\`'
+BEGIN;
diff --git a/src/trsp/test/trsp_vias-any-04.result b/src/trsp/test/trsp_vias-any-04.result
index d5438f6..61c461c 100644
--- a/src/trsp/test/trsp_vias-any-04.result
+++ b/src/trsp/test/trsp_vias-any-04.result
@@ -1,66 +1,141 @@
-1|1|2|4|1
-2|1|5|8|1
-3|1|6|9|1
-4|1|9|16|1
-5|1|4|3|1
-6|1|3|5|1
-7|1|6|8|1
-8|1|5|7|1
-9|1|8|6|1
-10|2|7|6|1
-11|2|8|7|1
-12|2|5|8|1
-13|2|6|9|1
-14|2|9|16|1
-15|2|4|3|1
-16|2|3|5|1
-17|2|6|11|1
-18|2|11|-1|0
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+/*PGR-GNU*****************************************************************
+
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License AS published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+ SELECT * FROM pgr_trspViaVertices(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edge_table',
+ ARRAY[2, 7, 11]::INTEGER[],
+ true,
+ true,
+
+ 'SELECT to_cost, target_id::INTEGER, from_edge||coalesce('',''||via_path,'''') AS via_path FROM restrictions');
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | 2 | 4 | 1
+ 2 | 1 | 5 | 8 | 1
+ 3 | 1 | 6 | 9 | 1
+ 4 | 1 | 9 | 16 | 1
+ 5 | 1 | 4 | 3 | 1
+ 6 | 1 | 3 | 5 | 1
+ 7 | 1 | 6 | 8 | 1
+ 8 | 1 | 5 | 7 | 1
+ 9 | 1 | 8 | 6 | 1
+ 10 | 2 | 7 | 6 | 1
+ 11 | 2 | 8 | 7 | 1
+ 12 | 2 | 5 | 8 | 1
+ 13 | 2 | 6 | 9 | 1
+ 14 | 2 | 9 | 16 | 1
+ 15 | 2 | 4 | 3 | 1
+ 16 | 2 | 3 | 5 | 1
+ 17 | 2 | 6 | 11 | 1
+ 18 | 2 | 11 | -1 | 0
+(18 rows)
+
---------------------------
-1|1|-1|4|0.5
-2|1|5|8|1
-3|1|6|9|1
-4|1|9|16|1
-5|1|4|3|1
-6|1|3|5|1
-7|1|6|8|1
-8|1|5|7|1
-9|1|8|6|1
-10|2|8|7|1
-11|2|5|8|1
-12|2|6|9|1
-13|2|9|16|1
-14|2|4|3|1
-15|2|3|5|1
-16|2|6|11|0.5
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edge_table',
+ ARRAY[4,6,11]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ true,
+ true,
+
+ 'SELECT to_cost, target_id::INTEGER, from_edge||coalesce('',''||via_path,'''') AS via_path FROM restrictions');
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 4 | 0.5
+ 2 | 1 | 5 | 8 | 1
+ 3 | 1 | 6 | 9 | 1
+ 4 | 1 | 9 | 16 | 1
+ 5 | 1 | 4 | 3 | 1
+ 6 | 1 | 3 | 5 | 1
+ 7 | 1 | 6 | 8 | 1
+ 8 | 1 | 5 | 7 | 1
+ 9 | 1 | 8 | 6 | 1
+ 10 | 2 | 8 | 7 | 1
+ 11 | 2 | 5 | 8 | 1
+ 12 | 2 | 6 | 9 | 1
+ 13 | 2 | 9 | 16 | 1
+ 14 | 2 | 4 | 3 | 1
+ 15 | 2 | 3 | 5 | 1
+ 16 | 2 | 6 | 11 | 0.5
+(16 rows)
+
---------------------------
-1|1|-1|1|0.5
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|9|1
-5|1|9|16|1
-6|1|4|3|1
-7|1|3|5|1
-8|1|6|11|1
-9|2|11|13|1
-10|2|12|15|1
-11|2|9|9|1
-12|2|6|8|1
-13|2|5|7|1
-14|2|8|6|0.5
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edge_table',
+ ARRAY[1,11,6]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ true,
+ true,
+
+ 'SELECT to_cost, target_id::INTEGER, from_edge||coalesce('',''||via_path,'''') AS via_path FROM restrictions');
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.5
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 5 | 1
+ 8 | 1 | 6 | 11 | 1
+ 9 | 2 | 11 | 13 | 1
+ 10 | 2 | 12 | 15 | 1
+ 11 | 2 | 9 | 9 | 1
+ 12 | 2 | 6 | 8 | 1
+ 13 | 2 | 5 | 7 | 1
+ 14 | 2 | 8 | 6 | 0.5
+(14 rows)
+
---------------------------
-1|1|-1|1|0.5
-2|1|2|4|1
-3|1|5|8|1
-4|1|6|9|1
-5|1|9|16|1
-6|1|4|3|1
-7|1|3|5|1
-8|1|6|11|1
-9|2|11|13|1
-10|2|12|15|1
-11|2|9|9|1
-12|2|6|8|1
-13|2|5|7|1
-14|2|8|6|0.5
+SELECT * FROM pgr_trspViaEdges(
+ 'SELECT id::INTEGER, source::INTEGER, target::INTEGER,cost, reverse_cost FROM edge_table',
+ ARRAY[1,11,6]::INTEGER[],
+ ARRAY[0.5, 0.5, 0.5]::float8[],
+ true,
+ true,
+
+ 'SELECT to_cost, target_id::INTEGER, from_edge||coalesce('',''||via_path,'''') AS via_path FROM restrictions');
+ seq | id1 | id2 | id3 | cost
+-----+-----+-----+-----+------
+ 1 | 1 | -1 | 1 | 0.5
+ 2 | 1 | 2 | 4 | 1
+ 3 | 1 | 5 | 8 | 1
+ 4 | 1 | 6 | 9 | 1
+ 5 | 1 | 9 | 16 | 1
+ 6 | 1 | 4 | 3 | 1
+ 7 | 1 | 3 | 5 | 1
+ 8 | 1 | 6 | 11 | 1
+ 9 | 2 | 11 | 13 | 1
+ 10 | 2 | 12 | 15 | 1
+ 11 | 2 | 9 | 9 | 1
+ 12 | 2 | 6 | 8 | 1
+ 13 | 2 | 5 | 7 | 1
+ 14 | 2 | 8 | 6 | 0.5
+(14 rows)
+
---------------------------
+ROLLBACK;
+ROLLBACK
diff --git a/src/tsp/doc/TSP-family.rst b/src/tsp/doc/TSP-family.rst
deleted file mode 100644
index 8d6bc14..0000000
--- a/src/tsp/doc/TSP-family.rst
+++ /dev/null
@@ -1,218 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _tsp:
-
-Traveling Sales Person - Family of functions
-===============================================================================
-
-.. index from here
-
-* :ref:`pgr_TSP` - When input is given as matrix cell information.
-* :ref:`pgr_eucledianTSP` - When input are coordinates.
-
-.. index to here
-
-.. toctree::
- :hidden:
-
- pgr_TSP
- pgr_eucledianTSP
-
-
-General Information
-------------------------------------
-
-Origin
-..........
-
-The traveling sales person problem was studied in the 18th century by mathematicians
- **Sir William Rowam Hamilton** and **Thomas Penyngton Kirkman**.
-
-A discussion about the work of Hamilton & Kirkman
-can be found in the book **Graph Theory (Biggs et al. 1976)**.
-
-* ISBN-13: 978-0198539162
-* ISBN-10: 0198539169
-
-It is believed that the general form of the TSP have been first studied by Kalr Menger in Vienna and Harvard.
-The problem was later promoted by Hassler, Whitney & Merrill at Princeton.
-A detailed description about the connection between Menger & Whitney, and the development of the
-TSP can be found in `On the history of combinatorial optimization (till 1960) <http://www.cwi.nl/~lex/files/histco.ps>`_
-
-Problem Definition
-...................
-
-Given a collection of cities and travel cost between each pair,
-find the cheapest way for visiting all of the cities and returning to the starting point.
-
-Characteristics
-................
-
-- The travel costs are symmetric:
-
- - traveling costs from city A to city B are just as much as traveling from B to A.
-
-- This problem is an NP-hard optimization problem.
-
-- To calculate the number of different tours through :math:`n` cities:
-
- - Given a starting city,
- - There are :math:`n-1` choices for the second city,
- - And :math:`n-2` choices for the third city, etc.
- - Multiplying these together we get :math:`(n-1)! = (n-1) (n-2) . . 1`.
- - Now since our travel costs do not depend on the direction we take around the tour:
-
- - this number by 2
- - :math:`(n-1)!/2`.
-
-TSP & Simulated Annealing
-.........................
-
-The simulated annealing algorithm was originally inspired from the process of
-annealing in metal work.
-
-Annealing involves heating and cooling a material to
-alter its physical properties due to the changes in its internal structure.
-As the metal cools its new structure becomes fixed,
-consequently causing the metal to retain its newly obtained properties. [C001]_
-
-
-.. rubric:: Pseudocode
-
-Given an initial solution, the simulated annealing process, will start with a high temperature
-and gradually cool down until the desired temperature is reached.
-
-For each temperature, a neighbouring new solution **snew** is calculated. The higher the temperature
-the higher the probability of accepting the new solution as a possible bester solution.
-
-Once the desired temperature is reached, the best solution found is returned
-
-.. code-block:: none
-
- Solution ← initial_solution;
-
- temperature ← initial_temperature;
- while (temperature > final_temperature) {
-
- do tries_per_temperature times {
- snew ← neighbour(solution);
- If P(E(solution), E(snew), T) ≥ random(0, 1)
- solution ← snew;
- }
-
- temperature ← temperature * cooling factor;
- }
-
- Output: the best solution
-
-
-
-pgRouting Implementation
-.........................
-
-pgRouting's implementation adds some extra parameters to allow some exit controls within the
-simulated annealing process.
-
-To cool down faster to the next temperature:
-
-- max_changes_per_temperature: limits the number of changes in the solution per temperature
-- max_consecutive_non_changes: limits the number of consecutive non changes per temperature
-
-This is done by doing some book keeping on the times **solution ← snew;** is executed.
-
-- max_changes_per_temperature: Increases by one when **solution** changes
-- max_consecutive_non_changes: Reset to 0 when **solution** changes, and increased each **try**
-
-Additionally to stop the algorithm at a higher temperature than the desired one:
-
-- max_processing_time: limits the time the simulated annealing is performed.
-- book keeping is done to see if there was a change in **solution** on the last temperature
-
-Note that, if no change was found in the first **max_consecutive_non_changes** tries, then the
-simulated annealing will stop.
-
-.. code-block:: none
-
- Solution ← initial_solution;
-
- temperature ← initial_temperature;
- while (temperature > final_temperature) {
-
- do tries_per_temperature times {
- snew ← neighbour(solution);
- If P(E(solution), E(snew), T) ≥ random(0, 1)
- solution ← snew;
-
- when max_changes_per_temperature is reached
- or max_consecutive_non_changes is reached
- BREAK;
- }
-
- temperature ← temperature * cooling factor;
- when no changes were done in the current temperature
- or max_processing_time has being reached
- BREAK;
- }
-
- Output: the best solution
-
-
-Choosing parameters
-.........................
-
-There is no exact rule on how the parameters have to be chose, it will depend on the
-special characteristics of the problem.
-
-- Your computational time is crucial, then put your time limit to **max_processing_time**.
-- Make the **tries_per_temperture** depending on the number of cities, for example:
-
- - Useful to estimate the time it takes to do one cycle: use `1`
-
- - this will help to set a reasonable **max_processing_time**
-
- - :math:`n * (n-1)`
- - :math:`500 * n`
-
-- For a faster decreasing the temperature set **cooling_factor** to a smaller number,
- and set to a higher number for a slower decrease.
-
-- When for the same given data the same results are needed, set **randomize** to `false`.
-
- - When estimating how long it takes to do one cycle: use `false`
-
-
-A recommendation is to play with the values and see what fits to the particular data.
-
-
-..
- description of control parameters
-
-
-.. include:: tsp_parameters.txt
-
-
-
-
-See Also
-.........................
-
-.. rubric:: References
-
-.. [C001] `Simulated annaeling algorithm for beginners <http://www.theprojectspot.com/tutorial-post/simulated-annealing-algorithm-for-beginners/6>`_
-
-* http://en.wikipedia.org/wiki/Traveling_salesman_problem
-* http://en.wikipedia.org/wiki/Simulated_annealing
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
-
diff --git a/src/tsp/doc/doc-tsp.queries b/src/tsp/doc/doc-tsp.queries
deleted file mode 100644
index d67eac0..0000000
--- a/src/tsp/doc/doc-tsp.queries
+++ /dev/null
@@ -1,102 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
--- q1
-SELECT * FROM pgr_TSP(
- $$
- SELECT id::INTEGER, st_X(the_geom) AS x, st_Y(the_geom)AS y FROM edge_table_vertices_pgr
- $$
- , 1);
-NOTICE: Deprecated Signature pgr_tsp(sql, integer, integer)
- seq | id1 | id2 | cost
------+-----+-----+-------------------
- 0 | 1 | 1 | 1
- 1 | 2 | 2 | 1
- 2 | 5 | 5 | 1
- 3 | 8 | 8 | 1
- 4 | 7 | 7 | 1.58113883008419
- 5 | 14 | 14 | 1.58113883008419
- 6 | 13 | 13 | 0.5
- 7 | 15 | 15 | 0.5
- 8 | 10 | 10 | 1
- 9 | 11 | 11 | 1.11803398874989
- 10 | 17 | 17 | 1.11803398874989
- 11 | 12 | 12 | 0.860232526704263
- 12 | 16 | 16 | 0.58309518948453
- 13 | 6 | 6 | 1
- 14 | 9 | 9 | 1
- 15 | 4 | 4 | 1
- 16 | 3 | 3 | 1.4142135623731
-(17 rows)
-
--- q2
-SELECT * FROM pgr_eucledianTSP(
- $$
- SELECT id, st_X(the_geom) AS x, st_Y(the_geom)AS y FROM edge_table_vertices_pgr
- $$,
- 1,
- randomize := false
-);
- seq | node | cost | agg_cost
------+------+-------------------+------------------
- 1 | 1 | 1.4142135623731 | 0
- 2 | 3 | 1 | 1.4142135623731
- 3 | 4 | 1 | 2.41421356237309
- 4 | 9 | 1 | 3.41421356237309
- 5 | 6 | 0.58309518948453 | 4.41421356237309
- 6 | 16 | 0.860232526704263 | 4.99730875185763
- 7 | 12 | 1.11803398874989 | 5.85754127856189
- 8 | 17 | 1.11803398874989 | 6.97557526731178
- 9 | 11 | 1 | 8.09360925606168
- 10 | 10 | 0.5 | 9.09360925606168
- 11 | 15 | 0.5 | 9.59360925606168
- 12 | 13 | 1.58113883008419 | 10.0936092560617
- 13 | 14 | 1.58113883008419 | 11.6747480861459
- 14 | 7 | 1 | 13.2558869162301
- 15 | 8 | 1 | 14.2558869162301
- 16 | 5 | 1 | 15.2558869162301
- 17 | 2 | 1 | 16.2558869162301
- 18 | 1 | 0 | 17.2558869162301
-(18 rows)
-
--- q3
-SELECT * FROM pgr_TSP(
- (SELECT * FROM pgr_vidsToDMatrix(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- ARRAY[8,11,12,13]::INTEGER[], false , true, true)
- ),
- 1
-);
-NOTICE: Deprecated function pgr_vidsToDMatrix
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
- seq | id
------+----
- 0 | 1
- 1 | 2
- 2 | 3
- 3 | 0
-(4 rows)
-
--- q4
-SELECT * FROM pgr_TSP(
- $$
- SELECT * FROM pgr_dijkstraCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[8,11,12,13]::INTEGER[], false)
- $$,
- 8,
- randomize := false
-);
- seq | node | cost | agg_cost
------+------+------+----------
- 1 | 8 | 3 | 0
- 2 | 11 | 1 | 3
- 3 | 12 | 3 | 4
- 4 | 13 | 3 | 7
- 5 | 8 | 0 | 10
-(5 rows)
-
--- q5
-ROLLBACK;
-ROLLBACK
diff --git a/src/tsp/doc/pgr_TSP.rst b/src/tsp/doc/pgr_TSP.rst
deleted file mode 100644
index 3649937..0000000
--- a/src/tsp/doc/pgr_TSP.rst
+++ /dev/null
@@ -1,166 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_TSP:
-
-pgr_TSP
-=============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-* ``pgr_TSP`` - Returns a route that visits all the nodes exactly once.
-
-.. rubric:: Availability: 2.0.0
-
-* Signature changed 2.3.0
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-The travelling salesman problem (TSP) or travelling salesperson problem asks the following question:
-
- - Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city?
-
-This implementation uses simulated annealing to return the approximate solution when the input is given in the form of matrix cell contents.
-The matrix information must be symmetrical.
-
-
-Signature Summary
--------------------------------------------------------------------------------
-
-.. code-block:: none
-
- pgr_TSP(matrix_cell_sql)
- pgr_TSP(matrix_cell_sql,
- start_id, end_id,
- max_processing_time,
- tries_per_temperature, max_changes_per_temperature, max_consecutive_non_changes,
- initial_temperature, final_temperature, cooling_factor,
- randomize,
- RETURNS SETOF (seq, node, cost, agg_cost)
-
-Signatures
--------------------------------------------------------------------------------
-
-
-.. index::
- single: TSP(Basic Use)
-
-Basic Use
-...............................................................................
-
-.. code-block:: none
-
- pgr_TSP(matrix_cell_sql)
- RETURNS SETOF (seq, node, cost, agg_cost)
-
-:Example:
-
-Because the documentation examples are auto generated and tested for non changing results,
-and the default is to have random execution, the example is wrapping the actual call.
-
-.. literalinclude:: doc-pgr_TSP.queries
- :start-after: -- q1
- :end-before: -- q2
-
-..
- TODO Intermediate Use
-
-.. index::
- single: TSP(Complete Signature)
-
-Complete Signature
-...............................................................................
-
-.. code-block:: none
-
-
- pgr_TSP(matrix_cell_sql,
- start_id, end_id,
- max_processing_time,
- tries_per_temperature, max_changes_per_temperature, max_consecutive_non_changes,
- initial_temperature, final_temperature, cooling_factor,
- randomize,
- RETURNS SETOF (seq, node, cost, agg_cost)
-
-
-.. rubric:: Example:
-
-.. literalinclude:: doc-pgr_TSP.queries
- :start-after: -- q2
- :end-before: -- q3
-
-
-Description of the Signatures
--------------------------------------------------------------------------------
-
-Description of the Matrix Cell SQL query
-...............................................................................
-
-============= =========== =================================================
-Column Type Description
-============= =========== =================================================
-**start_vid** ``BIGINT`` Identifier of the starting vertex.
-**end_vid** ``BIGINT`` Identifier of the ending vertex.
-**agg_cost** ``FLOAT`` Cost for going from start_vid to end_vid
-============= =========== =================================================
-
-Can be Used with:
-
-* :ref:`pgr_dijkstraCostmatrix`
-* :ref:`pgr_withPointsCostmatrix`
-* :ref:`pgr_floydWarshall`
-* :ref:`pgr_johnson`
-
-To generate a symmetric matrix
-
-* directed := false.
-
-If using directed := true, the resulting non symmetric matrix must be converted to
-symmetric by fixing the non symmetric values according to your application needs.
-
-..
- description of the configuration parameters
-
-.. include:: tsp_parameters.txt
-
-
-..
- description of the return values
-
-.. include:: tsp_return_values.txt
-
-
-
-Examples
--------------------------------------------------------------------------------
-
-:Example: Using with points of interest.
-
-To generate a symmetric matrix:
-
-* the **side** information of pointsOfInterset is ignored by not including it in the query
-* and **directed := false**
-
-.. literalinclude:: doc-pgr_TSP.queries
- :start-after: -- q3
- :end-before: -- q4
-
-The queries use the :ref:`sampledata` network.
-
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`tsp`
-* http://en.wikipedia.org/wiki/Traveling_salesman_problem
-* http://en.wikipedia.org/wiki/Simulated_annealing
diff --git a/src/tsp/doc/pgr_eucledianTSP.rst b/src/tsp/doc/pgr_eucledianTSP.rst
deleted file mode 100644
index 0880bc8..0000000
--- a/src/tsp/doc/pgr_eucledianTSP.rst
+++ /dev/null
@@ -1,150 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_eucledianTSP:
-
-pgr_eucledianTSP
-=============================================================================
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_eucledianTSP`` - Returns a route that visits all the coordinates pairs exactly once.
-
-.. rubric:: Availability: 2.3.0
-
-
-Synopsis
--------------------------------------------------------------------------------
-
-The travelling salesman problem (TSP) or travelling salesperson problem asks the following question:
-
- - Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city?
-
-This implementation uses simulated annealing to return the approximate solution when the input is given in the form of coordinates.
-
-Signature Summary
--------------------------------------------------------------------------------
-
-.. code-block:: none
-
- pgr_eucledianTSP(coordinates_sql)
- pgr_eucledianTSP(coordinates_sql,
- start_id, end_id,
- max_processing_time,
- tries_per_temperature, max_changes_per_temperature, max_consecutive_non_changes,
- initial_temperature, final_temperature, cooling_factor,
- randomize,
- RETURNS SETOF (seq, node, cost, agg_cost)
-
-
-Signatures
--------------------------------------------------------------------------------
-
-.. index::
- single: eucledianTSP(Basic Use)
-
-Minimal Signature
-...............................................................................
-
-.. code-block:: none
-
- pgr_eucledianTSP(coordinates_sql)
- RETURNS SETOF (seq, node, cost, agg_cost)
-
-:Example:
-
-Because the documentation examples are auto generated and tested for non changing results,
-and the default is to have random execution, the example is wrapping the actual call.
-
-.. literalinclude:: doc-pgr_eucledianTSP.queries
- :start-after: -- q1
- :end-before: -- q2
-
-
-.. index::
- single: eucledianTSP(Complete Signature)
-
-Complete Signature
-...............................................................................
-
-.. code-block:: none
-
-
- pgr_eucledianTSP(coordinates_sql,
- start_id, end_id,
- max_processing_time,
- tries_per_temperature, max_changes_per_temperature, max_consecutive_non_changes,
- initial_temperature, final_temperature, cooling_factor,
- randomize,
- RETURNS SETOF (seq, node, cost, agg_cost)
-
-
-.. rubric:: Example:
-
-.. literalinclude:: doc-pgr_eucledianTSP.queries
- :start-after: -- q2
- :end-before: -- q3
-
-Description of the Signatures
--------------------------------------------------------------------------------
-
-Description of the coordinates SQL query
-...............................................................................
-
-======= =========== =================================================
-Column Type Description
-======= =========== =================================================
-**id** ``BIGINT`` Identifier of the coordinate. (optional)
-**x** ``FLOAT`` X value of the coordinate.
-**y** ``FLOAT`` Y value of the coordinate.
-======= =========== =================================================
-
-
-When the value of **id** is not given then the coordinates will receive an **id** starting from 1, in the order given.
-
-..
- description of the configuration parameters
-
-.. include:: tsp_parameters.txt
-
-
-..
- description of the return values
-
-.. include:: tsp_return_values.txt
-
-
-
-Examples
--------------------------------------------------------------------------------
-
-:Example: Skipping the Simulated Annealing & showing some process information
-
-.. literalinclude:: doc-pgr_eucledianTSP.queries
- :start-after: -- q3
- :end-before: -- q4
-
-
-
-The queries use the :ref:`sampledata` network.
-
-
-.. rubric:: History
-
-* New in version 2.3.0
-
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`tsp`
-* http://en.wikipedia.org/wiki/Traveling_salesman_problem
-* http://en.wikipedia.org/wiki/Simulated_annealing
diff --git a/src/tsp/doc/tsp_parameters.txt b/src/tsp/doc/tsp_parameters.txt
deleted file mode 100644
index 3397fbf..0000000
--- a/src/tsp/doc/tsp_parameters.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-
-Description Of the Control parameters
-.....................................
-
-The control parameters are optional, and have a default value.
-
-=============================== =========== ============ =================================================
-Parameter Type Default Description
-=============================== =========== ============ =================================================
-**start_vid** ``BIGINT`` `0` The greedy part of the implementation will use this identifier.
-**end_vid** ``BIGINT`` `0` Last visiting vertex before returning to start_vid.
-**max_processing_time** ``FLOAT`` `+infinity` Stop the annealing processing when the value is reached.
-**tries_per_temperature** ``INTEGER`` `500` Maximum number of times a neighbor(s) is searched in each temperature.
-**max_changes_per_temperature** ``INTEGER`` `60` Maximum number of times the solution is changed in each temperature.
-**max_consecutive_non_changes** ``INTEGER`` `100` Maximum number of consecutive times the solution is not changed in each temperature.
-**initial_temperature** ``FLOAT`` `100` Starting temperature.
-**final_temperature** ``FLOAT`` `0.1` Ending temperature.
-**cooling_factor** ``FLOAT`` `0.9` Value between between 0 and 1 (not including) used to calculate the next temperature.
-**randomize** ``BOOLEAN`` `true` Choose the random seed
-
- - true: Use current time as seed
- - false: Use `1` as seed. Using this value will get the same results with the same data in each execution.
-
-=============================== =========== ============ =================================================
-
diff --git a/src/tsp/doc/tsp_return_values.txt b/src/tsp/doc/tsp_return_values.txt
deleted file mode 100644
index c66108b..0000000
--- a/src/tsp/doc/tsp_return_values.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-Description of the return values
-.................................
-
-Returns set of ``(seq, node, cost, agg_cost)``
-
-============= =========== =================================================
-Column Type Description
-============= =========== =================================================
-**seq** ``INTEGER`` Row sequence.
-**node** ``BIGINT`` Identifier of the node/coordinate/point.
-**cost** ``FLOAT`` Cost to traverse from the current ``node`` ito the next ``node`` in the path sequence.
- - ``0`` for the last row in the path sequence.
-
-**agg_cost** ``FLOAT`` Aggregate cost from the ``node`` at ``seq = 1`` to the current node.
- - ``0`` for the first row in the path sequence.
-
-============= =========== =================================================
-
diff --git a/src/tsp/sql/CMakeLists.txt b/src/tsp/sql/CMakeLists.txt
deleted file mode 100644
index 4f7445e..0000000
--- a/src/tsp/sql/CMakeLists.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- # This are the old signature
- ${CMAKE_CURRENT_SOURCE_DIR}/tsp_v2.0_matrix.sql
- # this file wrap pgr_tsp with pgr_eucledianTSP
- ${CMAKE_CURRENT_SOURCE_DIR}/tsp_v2.0_coordinates.sql
- # This file has vidstodmatrix
- ${CMAKE_CURRENT_SOURCE_DIR}/routing_tsp_wrappers.sql
-
- #this one implements the new tsp
- ${CMAKE_CURRENT_SOURCE_DIR}/TSP.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/eucledianTSP.sql
-
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/tsp/sql/TSP.sql b/src/tsp/sql/TSP.sql
deleted file mode 100644
index 89e7b82..0000000
--- a/src/tsp/sql/TSP.sql
+++ /dev/null
@@ -1,50 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2016 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2016 Celia Virginia Vergara Castillo
-mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-CREATE OR REPLACE FUNCTION pgr_TSP(
- matrix_row_sql TEXT,
- start_id BIGINT DEFAULT 0,
- end_id BIGINT DEFAULT 0,
-
- max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
-
- tries_per_temperature INTEGER DEFAULT 500,
- max_changes_per_temperature INTEGER DEFAULT 60,
- max_consecutive_non_changes INTEGER DEFAULT 100,
-
- initial_temperature FLOAT DEFAULT 100,
- final_temperature FLOAT DEFAULT 0.1,
- cooling_factor FLOAT DEFAULT 0.9,
-
- randomize BOOLEAN DEFAULT true,
-
- OUT seq INTEGER,
- OUT node BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF record
-AS '$libdir/${PGROUTING_LIBRARY_NAME}', 'newTSP'
-LANGUAGE c VOLATILE STRICT;
-
diff --git a/src/tsp/sql/eucledianTSP.sql b/src/tsp/sql/eucledianTSP.sql
deleted file mode 100644
index fb1b513..0000000
--- a/src/tsp/sql/eucledianTSP.sql
+++ /dev/null
@@ -1,51 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2016 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2016 Celia Virginia Vergara Castillo
-mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
- coordinates_sql TEXT,
- start_id BIGINT DEFAULT 0,
- end_id BIGINT DEFAULT 0,
-
- max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
-
- tries_per_temperature INTEGER DEFAULT 500,
- max_changes_per_temperature INTEGER DEFAULT 60,
- max_consecutive_non_changes INTEGER DEFAULT 100,
-
- initial_temperature FLOAT DEFAULT 100,
- final_temperature FLOAT DEFAULT 0.1,
- cooling_factor FLOAT DEFAULT 0.9,
-
- randomize BOOLEAN DEFAULT true,
-
- OUT seq integer,
- OUT node BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF record
-AS '$libdir/${PGROUTING_LIBRARY_NAME}', 'eucledianTSP'
-LANGUAGE c VOLATILE STRICT;
-
-
diff --git a/src/tsp/sql/routing_tsp_wrappers.sql b/src/tsp/sql/routing_tsp_wrappers.sql
deleted file mode 100644
index a9099ce..0000000
--- a/src/tsp/sql/routing_tsp_wrappers.sql
+++ /dev/null
@@ -1,63 +0,0 @@
-/*PGR-MIT*****************************************************************
-
---
--- Copyright (c) 2013 Stephen Woodbridge
---
--- This files is released under an MIT-X license.
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-MIT/X license
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-********************************************************************PGR-MIT*/
-
-
-
-create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
- as
-$body$
-declare
- sql text;
- r record;
-
-begin
- dmatrix := array[]::double precision[];
- ids := array[]::integer[];
-
- sql := 'with nodes as (' || sqlin || ')
- select i, array_agg(dist) as arow from (
- select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
- from nodes a, nodes b
- order by a.id, b.id
- ) as foo group by i order by i';
-
- for r in execute sql loop
- dmatrix := array_cat(dmatrix, array[r.arow]);
- ids := ids || array[r.i];
- end loop;
-
-end;
-$body$
-language plpgsql stable cost 10;
-
diff --git a/src/tsp/sql/tsp_v2.0_matrix.sql b/src/tsp/sql/tsp_v2.0_matrix.sql
deleted file mode 100644
index 6021967..0000000
--- a/src/tsp/sql/tsp_v2.0_matrix.sql
+++ /dev/null
@@ -1,95 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2016 pgRouting developers
-Mail: project at pgrouting.org
-
-Copyright (c) 2016 Celia Virginia Vergara Castillo
-mail: vicky_vergara at hotmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
-RETURNS SETOF record AS
-
-$body$
-DECLARE
-
-m float8[];
-
-BEGIN
- start_vid = 1;
- foreach m slice 1 in ARRAY matrix
- LOOP
- end_vid = 1;
- foreach agg_cost in ARRAY m
- LOOP
- RETURN next;
- end_vid = end_vid + 1;
- END LOOP;
- start_vid = start_vid + 1;
- END LOOP;
-END;
-$body$
-language plpgsql volatile cost 500 ROWS 50;
-
-
-
-CREATE OR REPLACE FUNCTION pgr_tsp(
- matrix float8[][],
- startpt INTEGER,
- endpt INTEGER DEFAULT -1,
- OUT seq INTEGER,
- OUT id INTEGER)
-RETURNS SETOF record AS
-$body$
-DECLARE
-table_sql TEXT;
-debuglevel TEXT;
-BEGIN
- RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
-
- CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
-
-
- startpt := startpt + 1;
- IF endpt = -1 THEN endpt := startpt;
- END IF;
-
-
- RETURN QUERY
- WITH
- result AS (
- SELECT * FROM pgr_TSP(
- $$SELECT * FROM ___tmp2 $$,
- startpt, endpt,
-
- tries_per_temperature := 500 :: INTEGER,
- max_changes_per_temperature := 30 :: INTEGER,
- max_consecutive_non_changes := 500 :: INTEGER,
-
- randomize:=false)
- )
- SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
-
- FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
-
- DROP TABLE ___tmp2;
-END;
-$body$
-language plpgsql volatile cost 500 ROWS 50;
diff --git a/src/tsp/src/Dmatrix.cpp b/src/tsp/src/Dmatrix.cpp
index fb6033d..7c147c3 100644
--- a/src/tsp/src/Dmatrix.cpp
+++ b/src/tsp/src/Dmatrix.cpp
@@ -23,7 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./Dmatrix.h"
+#include "cpp_common/Dmatrix.h"
#include <string.h>
#include <sstream>
@@ -32,8 +32,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include <vector>
#include <cmath>
-#include "./tour.h"
-#include "../../common/src/pgr_assert.h"
+#include "tsp/tour.h"
+#include "cpp_common/pgr_assert.h"
namespace pgrouting {
@@ -81,6 +81,11 @@ Dmatrix::has_id(int64_t id) const {
}
+/*! given a users id returns the internal index
+ *
+ * in[] id
+ * returns index
+ */
size_t
Dmatrix::get_index(int64_t id) const {
auto pos = std::lower_bound(ids.begin(), ids.end(), id);
@@ -124,15 +129,15 @@ Dmatrix::has_no_infinity() const {
}
+/*!
+ * Triangle Inequality Theorem.
+ * The sum of the lengths of any two sides of a triangle is greater than the length of the third side.
+ * NOTE: can also be equal for streets
+ * costs[i][k] != inf
+ * costs[i][k] <= costs[i][j] + costs[j][k]
+ */
bool
Dmatrix::obeys_triangle_inequality() const {
- /*
- * Triangle Inequality Theorem.
- * The sum of the lengths of any two sides of a triangle is greater than the length of the third side.
- * NOTE: can also be equal for streets
- * costs[i][k] != inf
- * costs[i][k] <= costs[i][j] + costs[j][k]
- */
for (size_t i = 0; i < costs.size(); ++i) {
for (size_t j = 0; j < costs.size(); ++j) {
for (size_t k = 0; k < costs.size(); ++k) {
@@ -164,6 +169,9 @@ Dmatrix::is_symmetric() const {
}
+/**
+ *
+ */
std::ostream& operator<<(std::ostream &log, const Dmatrix &matrix) {
for (const auto id : matrix.ids) {
log << "\t" << id;
@@ -173,20 +181,23 @@ std::ostream& operator<<(std::ostream &log, const Dmatrix &matrix) {
for (const auto row : matrix.costs) {
size_t j = 0;
for (const auto cost : row) {
- log << "(" << i << "," << j << ")"
- << "\t(" << matrix.ids[i] << "," << matrix.ids[j] << ")"
+ log << "Internal(" << i << "," << j << ")"
+ << "\tUsers(" << matrix.ids[i] << "," << matrix.ids[j] << ")"
+ << "\t = " << cost
+#if 0
<< "\t(" << matrix.get_index(matrix.ids[i])
<< "," << matrix.get_index(matrix.ids[j]) << ")"
- << "\t = " << cost
<< "\t = " << matrix.costs[i][j]
<< "\t = " << matrix.costs[j][i]
<< "=inf:" << (matrix.costs[i][j] == (std::numeric_limits<double>::infinity)())
<< "=inf:" << (matrix.costs[j][i] == (std::numeric_limits<double>::infinity)())
+#endif
<< "\n";
++j;
}
++i;
}
+#if 0
for (size_t i = 0; i < matrix.costs.size(); ++i) {
for (size_t j = 0; j < matrix.costs.size(); ++j) {
for (size_t k = 0; k < matrix.costs.size(); ++k) {
@@ -198,7 +209,7 @@ std::ostream& operator<<(std::ostream &log, const Dmatrix &matrix) {
}
}
}
-
+#endif
return log;
}
diff --git a/src/tsp/src/Dmatrix.h b/src/tsp/src/Dmatrix.h
deleted file mode 100644
index 2bc23e5..0000000
--- a/src/tsp/src/Dmatrix.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: Dmatrix.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#ifndef SRC_TSP_SRC_DMATRIX_H_
-#define SRC_TSP_SRC_DMATRIX_H_
-#pragma once
-
-#include <iostream>
-#include <vector>
-
-#include "../../common/src/pgr_types.h"
-
-namespace pgrouting {
-namespace tsp {
-
-class Tour; // for tourCost
-
-class Dmatrix {
- public:
- Dmatrix() = default;
- explicit Dmatrix(const std::vector < Matrix_cell_t > &data_costs);
-
- bool has_no_infinity() const;
- bool obeys_triangle_inequality() const;
- bool is_symmetric() const;
-
- /*! @brief sets a special value for the distance(i,j)
- *
- * @param [in] i - index in matrix
- * @param [in] j - index in matrix
- * @param [in] dist - distance from i to j & from j to i
- *
- */
- void set(size_t i, size_t j, double dist) {
- costs[i][j] = costs[j][i] = dist;}
-
- /*! @brief original id -> true
- *
- * @param [in] id - original id
- * @returns true if id is in the distance table
- */
- bool has_id(int64_t id) const;
-
- /*! @brief original id -> idx
- *
- * @param [in] id - original id
- * @returns idx index of the id in the distance table
- */
- size_t get_index(int64_t id) const;
-
- /*! @brief idx -> original id
- *
- * @param [in] idx - index (i-th coordinate)
- * @returns the original id corresponding to idx
- */
- int64_t get_id(size_t idx) const;
-
- /*! @brief |idx|
- *
- * @returns the total number of coordinates
- */
- size_t size() const {return ids.size();}
-
- /*! @brief tour evaluation
- *
- * @param [in] tour
- * @returns total cost of traversing the tour
- */
- double tourCost(const Tour &tour) const;
-
- /*! @brief returns a row of distances
- *
- * @param [in] idx - row index
- * @returns distances from idx to all other coordinates
- */
- const std::vector<double>& get_row(size_t idx) const {
- return costs[idx];}
-
- double comparable_distance(size_t i, size_t j) const {
- return distance(i, j);}
-
- double distance(size_t i, size_t j) const {
- return costs[i][j];}
-
- friend std::ostream& operator<<(
- std::ostream &log,
- const Dmatrix &matrix);
-
- protected:
- void set_ids(const std::vector<matrix_cell> &data_costs);
- std::vector<int64_t> ids;
-
- private:
- typedef std::vector < std::vector < double > > Costs;
- Costs costs;
- std::vector< double >& operator[] (size_t i) {return costs[i];}
- const std::vector< double >& operator[] (size_t i) const {return costs[i];}
-};
-
-} // namespace tsp
-} // namespace pgrouting
-
-#endif // SRC_TSP_SRC_DMATRIX_H_
diff --git a/src/tsp/src/eucledianDmatrix.cpp b/src/tsp/src/eucledianDmatrix.cpp
index 908621a..15ab82f 100644
--- a/src/tsp/src/eucledianDmatrix.cpp
+++ b/src/tsp/src/eucledianDmatrix.cpp
@@ -24,14 +24,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./eucledianDmatrix.h"
+#include "tsp/eucledianDmatrix.h"
#include <algorithm>
#include <vector>
#include <cmath>
-#include "./tour.h"
-#include "../../common/src/pgr_assert.h"
+#include "tsp/tour.h"
+#include "cpp_common/pgr_assert.h"
namespace pgrouting {
diff --git a/src/tsp/src/eucledianDmatrix.h b/src/tsp/src/eucledianDmatrix.h
deleted file mode 100644
index 580aab5..0000000
--- a/src/tsp/src/eucledianDmatrix.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: eucledianDmatrix.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#ifndef SRC_TSP_SRC_EUCLEDIANDMATRIX_H_
-#define SRC_TSP_SRC_EUCLEDIANDMATRIX_H_
-#pragma once
-
-#include <iostream>
-#include <vector>
-
-#include "../../common/src/pgr_types.h"
-
-namespace pgrouting {
-namespace tsp {
-
-class Tour; // for tourCost
-
-class eucledianDmatrix {
- public:
- eucledianDmatrix() = default;
- explicit eucledianDmatrix(
- const std::vector< Coordinate_t > &data_coordinates);
-
- bool has_no_infinity() const;
- bool obeys_triangle_inequality() const;
- bool is_symmetric() const;
-
- /*! @brief sets a special value for the distance(i,j)
- *
- * @param[in] i - index in matrix
- * @param[in] j - index in matrix
- * @param[in] dist - distance from i to j & from j to i
- *
- */
- void set(size_t i, size_t j, double dist) {
- row = i; column = j; special_distance = dist;}
-
- /*! @brief original id -> true
- *
- * @param[in] id original id
- *
- * @returns true if id is in the distance table
- */
- bool has_id(int64_t id) const;
-
- /*! @brief original id -> idx
- *
- * @param[in] id - original id
- * @returns idx index of the id in the distance table
- */
- size_t get_index(int64_t id) const;
-
- /*! @brief idx -> original id
- *
- * @param[in] idx - index (i-th coordinate)
- * @returns the original id corresponding to idx
- */
- int64_t get_id(size_t idx) const;
-
- /*! @brief |idx|
- *
- * @returns the total number of coordinates
- */
- size_t size() const {return ids.size();}
-
- /*! @brief tour evaluation
- *
- * @param[in] tour
- * @returns total cost of traversing the tour
- */
- double tourCost(const Tour &tour) const;
-
- /*! @brief returns a row of distances
- *
- * @param[in] idx row index
- *
- * @returns distances from idx to all other coordinates
- */
- const std::vector<double> get_row(size_t idx) const;
-
- double comparable_distance(size_t i, size_t j) const;
- double distance(size_t i, size_t j) const;
-
- friend std::ostream& operator<<(
- std::ostream &log,
- const eucledianDmatrix &matrix);
-
- protected:
- void set_ids();
- std::vector<int64_t> ids;
-
- private:
- std::vector < Coordinate_t > coordinates;
- size_t row;
- size_t column;
- double special_distance;
-};
-
-} // namespace tsp
-} // namespace pgrouting
-
-#endif // SRC_TSP_SRC_EUCLEDIANDMATRIX_H_
diff --git a/src/tsp/src/eucledianTSP.c b/src/tsp/src/eucledianTSP.c
index 9c45799..a1910be 100644
--- a/src/tsp/src/eucledianTSP.c
+++ b/src/tsp/src/eucledianTSP.c
@@ -27,15 +27,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
#include "utils/array.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/coordinates_input.h"
-#include "./eucledianTSP_driver.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+
+#include "c_common/coordinates_input.h"
+#include "drivers/tsp/eucledianTSP_driver.h"
diff --git a/src/tsp/src/eucledianTSP_driver.cpp b/src/tsp/src/eucledianTSP_driver.cpp
index 01b745b..c88dc6d 100644
--- a/src/tsp/src/eucledianTSP_driver.cpp
+++ b/src/tsp/src/eucledianTSP_driver.cpp
@@ -28,18 +28,18 @@
* ******************************************************************** PGR-GNU*/
-#include "./eucledianTSP_driver.h"
+#include "drivers/tsp/eucledianTSP_driver.h"
#include <string.h>
#include <sstream>
#include <vector>
#include <algorithm>
-#include "./pgr_tsp.hpp"
-#include "./eucledianDmatrix.h"
+#include "tsp/pgr_tsp.hpp"
+#include "tsp/eucledianDmatrix.h"
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
void
do_pgr_eucledianTSP(
@@ -90,7 +90,7 @@ do_pgr_eucledianTSP(
*/
real_cost = costs.distance(idx_start, idx_end);
/*
- * Temporarly setting the cost between the start_vid and end_vid to 0
+ * Temporarily setting the cost between the start_vid and end_vid to 0
*/
costs.set(idx_start, idx_end, 0);
}
diff --git a/src/tsp/src/eucledianTSP_driver.h b/src/tsp/src/eucledianTSP_driver.h
deleted file mode 100644
index bbc0d07..0000000
--- a/src/tsp/src/eucledianTSP_driver.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*PGR-GNU*****************************************************************
- * File: tsp_driver.h
- *
- * Generated with Template by:
- * Copyright (c) 2015 pgRouting developers
- * Mail: project at pgrouting.org
- *
- * Function's developer:
- * Copyright (c) 2015 Celia Virginia Vergara Castillo
- * Mail: vicky_vergara at hotmail.com
- *
- * ------
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * ********************************************************************PGR-GNU*/
-
-#ifndef SRC_TSP_SRC_EUCLEDIANTSP_DRIVER_H_
-#define SRC_TSP_SRC_EUCLEDIANTSP_DRIVER_H_
-#pragma once
-
-#include "../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void
-do_pgr_eucledianTSP(
- Coordinate_t *coordinates, size_t total_coordinates,
- int64_t start_vid,
- int64_t end_vid,
-
- double initial_temperature,
- double final_temperature,
- double cooling_factor,
- int64_t tries_per_temperature,
- int64_t max_changes_per_temperature,
- int64_t max_consecutive_non_changes,
- bool randomize,
- double time_limit,
-
- General_path_element_t **results,
- size_t *total_results,
- char **log_msg,
- char **notice_msg,
- char **err_msg);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_TSP_SRC_EUCLEDIANTSP_DRIVER_H_
diff --git a/src/tsp/src/newTSP.c b/src/tsp/src/newTSP.c
index 8c5768a..13a4061 100644
--- a/src/tsp/src/newTSP.c
+++ b/src/tsp/src/newTSP.c
@@ -27,15 +27,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
#include "utils/array.h"
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/matrixRows_input.h"
-#include "./newTSP_driver.h"
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+
+#include "c_common/matrixRows_input.h"
+#include "drivers/tsp/newTSP_driver.h"
@@ -131,7 +131,7 @@ process(
¬ice_msg,
&err_msg);
- time_msg("eucledianTSP", start_t, clock());
+ time_msg("TSP", start_t, clock());
if (err_msg && (*result_tuples)) {
pfree(*result_tuples);
diff --git a/src/tsp/src/newTSP_driver.cpp b/src/tsp/src/newTSP_driver.cpp
index f3af088..3e90320 100644
--- a/src/tsp/src/newTSP_driver.cpp
+++ b/src/tsp/src/newTSP_driver.cpp
@@ -27,18 +27,18 @@
*
* ******************************************************************** PGR-GNU*/
-#include "./newTSP_driver.h"
+#include "drivers/tsp/newTSP_driver.h"
#include <string.h>
#include <sstream>
#include <vector>
#include <algorithm>
-#include "./Dmatrix.h"
-#include "./pgr_tsp.hpp"
+#include "cpp_common/Dmatrix.h"
+#include "tsp/pgr_tsp.hpp"
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
void
do_pgr_tsp(
diff --git a/src/tsp/src/newTSP_driver.h b/src/tsp/src/newTSP_driver.h
deleted file mode 100644
index bd6b324..0000000
--- a/src/tsp/src/newTSP_driver.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*PGR-GNU*****************************************************************
- * File: tsp_driver.h
- *
- * Generated with Template by:
- * Copyright (c) 2015 pgRouting developers
- * Mail: project at pgrouting.org
- *
- * Function's developer:
- * Copyright (c) 2015 Celia Virginia Vergara Castillo
- * Mail: vicky_vergara at hotmail.com
- *
- * ------
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * ********************************************************************PGR-GNU*/
-
-#ifndef SRC_TSP_SRC_NEWTSP_DRIVER_H_
-#define SRC_TSP_SRC_NEWTSP_DRIVER_H_
-#pragma once
-
-#include "../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void
-do_pgr_tsp(
- Matrix_cell_t *distances, size_t total_distances,
- int64_t start_vid,
- int64_t end_vid,
-
- double initial_temperature,
- double final_temperature,
- double cooling_factor,
- int64_t tries_per_temperature,
- int64_t max_changes_per_temperature,
- int64_t max_consecutive_non_changes,
- bool randomize,
- double time_limit,
-
- General_path_element_t **results,
- size_t *total_results,
- char **log_msg,
- char **notice_msg,
- char **err_msg);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_TSP_SRC_NEWTSP_DRIVER_H_
diff --git a/src/tsp/src/pgr_tsp.cpp b/src/tsp/src/pgr_tsp.cpp
deleted file mode 100644
index bc4b693..0000000
--- a/src/tsp/src/pgr_tsp.cpp
+++ /dev/null
@@ -1,573 +0,0 @@
-/*PGR-GNU*****************************************************************
- * File: pgr_tsp.cpp
- *
- * Generated with Template by:
- * Copyright (c) 2015 pgRouting developers
- * Mail: project at pgrouting.org
- *
- * Function's developer:
- * Copyright (c) 2015 Celia Virginia Vergara Castillo
- * Mail: vicky_vergara at hotmail.com
- *
- * ------
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * ********************************************************************PGR-GNU*/
-
-
-#include "./pgr_tsp.hpp"
-
-#include <time.h>
-
-#include <utility>
-#include <iomanip>
-#include <limits>
-#include <vector>
-#include <set>
-#include <algorithm>
-#include <cmath>
-
-#include "../../common/src/pgr_types.h"
-#include "../../common/src/pgr_assert.h"
-
-
-
-static
-size_t
-rand(size_t n) {
- pgassert(n > 0);
- return static_cast< size_t >(std::rand() % n);
-}
-
-
-static
-size_t
-succ(size_t i, size_t n) {
- pgassert(n > 0);
- return static_cast<size_t>((i + 1) % n);
-}
-
-static
-size_t
-pred(size_t i, size_t n) {
- return i == 0? n - 1: i -1;
-}
-
-
-namespace pgrouting {
-namespace tsp {
-
-template < typename MATRIX >
-void TSP<MATRIX>::invariant() const {
- /* the calculated value & the actual value are the same */
- pgassert(std::fabs(tourCost(current_tour) - current_cost) < epsilon);
- pgassert(std::fabs(tourCost(best_tour) - bestCost) < epsilon);
- pgassert(n == MATRIX::ids.size());
- pgassert(n == current_tour.size());
- pgassert(n == best_tour.size());
-}
-
-template < typename MATRIX >
-void
-TSP<MATRIX>::update_if_best() {
- invariant();
- ++updatecalls;
-
- if (current_cost < bestCost) {
- ++improve_count;
- best_tour = current_tour;
- bestCost = current_cost;
- }
-
- invariant();
-}
-
-
-
-template < typename MATRIX >
-size_t
-TSP<MATRIX>::find_closest_city(
- size_t current_city,
- const std::set<size_t> inserted) const {
- invariant();
-
- auto distance_row(get_row(current_city));
- pgassert(distance_row.size() == n);
-
-#ifndef NDEBUG
- std::ostringstream err;
- for (const auto &d : distance_row) {
- err << d << ", ";
- }
-#endif
-
- size_t best_city = 0;
- auto best_distance = (std::numeric_limits<double>::max)();
-#ifndef NDEBUG
- bool found(false);
-#endif
-
- for (size_t i = 0; i < distance_row.size(); ++i) {
- if (i == current_city) continue;
- if (inserted.find(i) != inserted.end()) continue;
- if (distance_row[i] < best_distance) {
- best_city = i;
- best_distance = distance_row[i];
-#ifndef NDEBUG
- found = true;
-#endif
- }
- }
- pgassertwm(found, err.str());
-
- invariant();
- return best_city;
-}
-
-
-
-template < typename MATRIX >
-void
-TSP<MATRIX>::greedyInitial(size_t idx_start) {
- invariant();
-
- std::set<size_t> pending(best_tour.cities.begin(), best_tour.cities.end());
- std::set<size_t> inserted;
- std::vector<size_t> tour_to_be;
-
- auto current_city = idx_start;
-
-#ifndef NDEBUG
- std::ostringstream err;
- auto ps(pending.size());
-#endif
-
- pending.erase(idx_start);
-
-#ifndef NDEBUG
- pgassert(pending.size() == (ps - 1));
-#endif
-
- tour_to_be.push_back(current_city);
- inserted.insert(current_city);
-
- while (!pending.empty()) {
- auto next_city = find_closest_city(current_city, inserted);
- tour_to_be.push_back(next_city);
- inserted.insert(next_city);
-
-#ifndef NDEBUG
- auto ps(pending.size());
- err << "before";
- for (const auto p : pending) {
- err << p << ",";
- }
-#endif
-
- pending.erase(next_city);
-
-#ifndef NDEBUG
- err << "\nafter deleting" << next_city << ":\t";
- for (const auto p : pending) {
- err << p << ",";
- }
- pgassertwm(pending.size() == (ps - 1), err.str());
-#endif
-
- current_city = next_city;
- }
-
- pgassert(tour_to_be.size() == n);
- current_tour = Tour(tour_to_be);
- current_cost = tourCost(current_tour);
- update_if_best();
- swapClimb();
-
- invariant();
- return;
-}
-
-
-
-/*
- *
- * 0 1 2 3 4 5 6 7 8 9
- * p f l
- * slides [4,5,6] to position p
- *
- * 0 1 4 5 6 2 3 7 8 9
- *
- *
- * 0 1 2 3 4 5 6 7 8 9
- * f l p
- * slides [2,3,4] to position p
- *
- * 0 1 6 7 2 3 4 5 8 9
- *
- *
- */
-
-template < typename MATRIX >
-double
-TSP<MATRIX>::getDeltaSlide(size_t place, size_t first, size_t last) const {
- invariant();
-#ifndef NDEBUG
- std::ostringstream err;
- err << "\tplace" << place
- << "\tfirst" << first
- << "\tlast" << last
- << "\tn" << n;
-#endif
-
- pgassertwm(place < first || place > last, err.str());
- pgassertwm(first < last, err.str());
- pgassertwm(last < n, err.str());
- pgassertwm(place < n, err.str());
- pgassertwm(first < n, err.str());
-
- /*
- * Initial state
- * [...f] [f+1 ... l] [l+1 ...p] [p+1 ...]
- *
- * final state
- * [...f] [l+1 ... p] [f+1 ...l] [p+1 ...]
- *
- *
- * Initial state
- * [f+1 ... l]
- * : :
- * [...f] [l+1 ...p] [p+1 ...]
- *
- * final state
- * [f+1 ... l]
- * : :
- * [...f] [l+1 ...p] [p+1 ...]
- *
- */
-
- auto cityP = current_tour.cities[place];
- auto cityF = current_tour.cities[first];
- auto cityL = current_tour.cities[last];
- auto cityP1 = current_tour.cities[succ(place, n)];
- auto cityF1 = current_tour.cities[succ(first, n)];
- auto cityL1 = current_tour.cities[succ(last, n)];
-
- auto delta(
- distance(cityF, cityL1)
- + distance(cityP, cityF1)
- + distance(cityL, cityP1)
- - distance(cityF, cityF1)
- - distance(cityL, cityL1)
- - distance(cityP, cityP1));
-
-#ifndef NDEBUG
- Tour new_tour(current_tour);
- new_tour.slide(place, first, last);
-
- err << "\ncurrent_tour:";
- for (const auto id : current_tour.cities) {
- err << id << ", ";
- }
-
- err << "\nnew_tour:";
- for (const auto id : new_tour.cities) {
- err << id << ", ";
- }
-
- auto exactDelta = tourCost(new_tour) - tourCost(current_tour);
- err << "\n"
- << exactDelta
- << " - " << delta
- << " = "
- << exactDelta - delta
- << " = "
- << std::fabs(exactDelta - delta);
- pgassertwm(std::fabs((exactDelta - delta)) < epsilon, err.str());
-#endif
-
- invariant();
- return delta;
-}
-
-
-/*
- * c..d c..d
- * | | => | |
- * | | | |
- * b -- a e --f b -- e a -- f
- *
- * a b 1 2 .. n-1 n c d
- * a c n n-1 .. 2 1 c d
- */
-template < typename MATRIX >
-double
-TSP<MATRIX>::getDeltaSwap(size_t posA, size_t posE) const {
- invariant();
-
- if (succ(posE, n ) == posA) std::swap(posA, posE);
- if (succ(posA, n) == posE) {
- auto b = current_tour.cities[pred(posA, n)];
- auto a = current_tour.cities[posA];
-
- auto e = current_tour.cities[posE];
- auto f = current_tour.cities[succ(posE, n)];
- return distance(b, e) + distance(e, a) + distance(a, f)
- - distance(b, a) - distance(a, e) - distance(e, f);
- }
-
- auto b = current_tour.cities[pred(posA, n)];
- auto a = current_tour.cities[posA];
- auto c = current_tour.cities[succ(posA, n)];
-
- auto d = current_tour.cities[pred(posE, n)];
- auto e = current_tour.cities[posE];
- auto f = current_tour.cities[succ(posE, n)];
-
-#ifndef NDEBUG
- auto delta = distance(b, e)
- + distance(e, c) + distance(d, a) + distance(a, f)
- - distance(b, a) - distance(a, c) - distance(d, e) - distance(e, f);
- auto new_tour(current_tour);
- new_tour.swap(posA, posE);
- auto exactDelta = tourCost(new_tour) - tourCost(current_tour);
- std::ostringstream log;
- log << exactDelta
- << " - " << delta
- << " = "
- << exactDelta - delta
- << " = "
- << std::fabs(exactDelta - delta);
-
- pgassertwm(std::fabs((exactDelta - delta)) < epsilon, log.str());
-#endif
-
- invariant();
- return distance(b, e) + distance(e, c) + distance(d, a) + distance(a, f)
- - distance(b, a) - distance(a, c) - distance(d, e) - distance(e, f);
-}
-
-/*
- * ..A C
- * [ )
- * ..a b 1 2 .. n-1 n c d ..
- * ..a c n n-1 .. 2 1 b d ..
- */
-template < typename MATRIX >
-double
-TSP<MATRIX>::getDeltaReverse(size_t posA, size_t posC) const {
- invariant();
-
- if (posA == (posC - 1)) return 0;
- auto a = current_tour.cities[posA];
- auto b = current_tour.cities[succ(posA, n)];
-
- auto c = current_tour.cities[posC];
- auto d = current_tour.cities[succ(posC, n)];
-
-
-#ifndef NDEBUG
- auto delta =
- distance(a, c) + distance(b, d) - distance(a, b) - distance(c, d);
- auto new_tour(current_tour);
- new_tour.reverse(posA, posC);
- auto exactDelta = tourCost(new_tour) - tourCost(current_tour);
-
- std::ostringstream log;
- log << "exactDelta(" << exactDelta
- << ") - delta(" << delta
- << ") = "
- << exactDelta - delta
- << " = "
- << (exactDelta - delta)
- << " epsilon = " << epsilon;
- pgassertwm(std::fabs((exactDelta - delta)) < epsilon, log.str());
-#endif
-
- invariant();
- return distance(a, c) + distance(b, d) - distance(a, b) - distance(c, d);
-}
-
-template < typename MATRIX >
-void
-TSP<MATRIX>::swapClimb() {
- invariant();
- pgassert(n > 2);
-
- // auto first = std::rand() % n;
- // for (size_t first = std::rand() % n; first < n; first++) {
- for (size_t first = 0; first < n; first++) {
- for (size_t last = first + 1; last < n; last++) {
- pgassert(first < last);
-
- auto energyChange = getDeltaSwap(first, last);
-
- if (energyChange < 0 && epsilon < std::fabs(energyChange)) {
- ++swap_count;
- current_cost += energyChange;
- current_tour.swap(first, last);
- update_if_best();
- }
- }
- }
- invariant();
-}
-
-template < typename MATRIX >
-void
-TSP<MATRIX>::annealing(
- double temperature,
- double final_temperature,
- double cooling_factor,
- int64_t tries_per_temperature,
- int64_t max_changes_per_temperature,
- int64_t max_consecutive_non_changes,
- bool randomize,
- double time_limit) {
- invariant();
- clock_t start_time(clock());
-
- if (randomize) {
- std::srand(static_cast<unsigned int>(time(NULL)));
- } else {
- std::srand(1);
- }
-
-
-
-
- /* annealing schedule */
- for (; final_temperature < temperature; temperature *= cooling_factor) {
- invariant();
-
- log << "\nCycle(" << temperature <<") ";
-
- /*
- how many times the tour changed in current temperature
- */
- int64_t pathchg = 0;
- size_t enchg = 0;
- int64_t non_change = 0;
- for (int64_t j = 0; j < tries_per_temperature; j++) {
- ++non_change;
-
- auto which = rand(2);
- // which = 1;
- switch (which) {
- case 0: {
- /* reverse */
- pgassert(n > 2);
-
- auto c1 = std::rand() % n;
- auto c2 = std::rand() % n;
-
- if (c1 == c2) c2 = succ(c2, n);
- if (c1 == (c2 - 1)) c2 = succ(c2, n);
- if (c1 > c2) std::swap(c1, c2);
-
- pgassert(c1 != c2);
- pgassert(c1 < n && c2 < n);
- pgassert(c1 < c2);
-
- auto energyChange = getDeltaReverse(c1, c2);
-
- if ( (energyChange < 0
- && epsilon < std::fabs(energyChange))
- || (0 < energyChange
- && (
- static_cast<double>(std::rand()) /
- static_cast<double>(RAND_MAX))
- < exp(-energyChange / temperature))) {
- if (energyChange < 0) ++enchg;
- ++reverse_count;
- ++pathchg;
- non_change = 0;
- current_cost += energyChange;
- current_tour.reverse(c1, c2);
- update_if_best();
- }
- }
- break;
- case 1: {
- /* slide */
- if (n <= 3) {
- break;
- }
-
- pgassert(n > 3);
-
- auto first = std::rand() % n;
- auto last = std::rand() % n;
-
- if (first == last) last = succ(last, n);
- if (first > last) std::swap(first, last);
- if (first == 0 && last == (n - 1)) {
- first = succ(first, n);
- }
-
- pgassert((n - (last - first) - 1) > 0);
- auto place = std::rand() % (n - (last - first) - 1);
- place = place < first? place :
- last + (place - first) + 1;
-
-
- pgassert((place < first
- || place > last)
- && (first < last));
-
- auto energyChange = getDeltaSlide(
- place, first, last);
-
- if ((energyChange < 0
- && epsilon < std::fabs(energyChange))
- || (0 < energyChange
- && (static_cast<double>(std::rand())
- / static_cast<double>(RAND_MAX))
- < exp(-energyChange / temperature))) {
- if (energyChange < 0) ++enchg;
- ++slide_count;
- ++pathchg;
- non_change = 0;
- current_cost += energyChange;
- current_tour.slide(place, first, last);
- update_if_best();
- }
- }
- break;
- } // switch
-
-
- if (max_changes_per_temperature < pathchg
- && max_consecutive_non_changes < non_change ) {
- break;
- }
- } // for tries per temperature
-
- swapClimb();
- clock_t current_time(clock());
- double elapsed_time = static_cast<double>(
- current_time - start_time) / CLOCKS_PER_SEC;
- if (time_limit < elapsed_time) {
- break;
- }
- log << "\ttotal changes =" << pathchg
- << "\t" << enchg << " were because delta energy < 0";
- if (pathchg == 0) break; /* if no change then quit */
- } // for temperatures
-}
-
-} // namespace tsp
-} // namespace pgrouting
-
diff --git a/src/tsp/src/pgr_tsp.hpp b/src/tsp/src/pgr_tsp.hpp
deleted file mode 100644
index 9456d55..0000000
--- a/src/tsp/src/pgr_tsp.hpp
+++ /dev/null
@@ -1,149 +0,0 @@
-/*PGR-GNU*****************************************************************
- * File: tsp_driver.cpp
- *
- * Generated with Template by:
- * Copyright (c) 2015 pgRouting developers
- * Mail: project at pgrouting.org
- *
- * Function's developer:
- * Copyright (c) 2015 Celia Virginia Vergara Castillo
- * Mail: vicky_vergara at hotmail.com
- *
- * ------
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * ********************************************************************PGR-GNU*/
-
-#ifndef SRC_TSP_SRC_PGR_TSP_HPP_
-#define SRC_TSP_SRC_PGR_TSP_HPP_
-#pragma once
-
-#include <sstream>
-#include <vector>
-#include <set>
-#include <string>
-
-#include "../../common/src/pgr_types.h"
-#include "../../common/src/pgr_assert.h"
-#include "./Dmatrix.h"
-#include "./eucledianDmatrix.h"
-#include "./tour.h"
-
-
-namespace pgrouting {
-namespace tsp {
-
-template < typename MATRIX >
-class TSP: public MATRIX {
- public:
- using MATRIX::distance;
- using MATRIX::tourCost;
- using MATRIX::get_row;
-
- /*
- * function members
- */
- explicit TSP(const MATRIX &_costs)
- : MATRIX(_costs),
- current_tour(_costs.size()),
- best_tour(_costs.size()),
- epsilon(0.000001),
- n(_costs.size()),
- updatecalls(0),
- swap_count(0),
- slide_count(0),
- reverse_count(0),
- improve_count(0) {
- pgassert(n == MATRIX::size());
- bestCost = MATRIX::tourCost(best_tour);
- current_cost = MATRIX::tourCost(current_tour);
- pgassert(bestCost == current_cost);
- }
-
-
- Tour get_tour() const {return best_tour;}
-
- std::string get_stats() const {
- std::ostringstream log1;
- log1
- << "\nTotal swaps: " << swap_count
- << "\nTotal slides: " << slide_count
- << "\nTotal reverses: " << reverse_count
- << "\nTimes best tour changed: " << improve_count;
- return log1.str();}
-
- std::string get_log() const {
- return log.str();}
-
- void greedyInitial(size_t idx_start = 0);
- void annealing(
- double initial_temperature,
- double final_temperature,
- double cooling_factor,
- int64_t tries_per_temperature,
- int64_t max_changes_per_temperature,
- int64_t max_consecutive_non_changes,
- bool randomize,
- double time_limit);
-
-
- private:
- Tour current_tour;
- Tour best_tour;
- double bestCost;
- double current_cost;
- double epsilon;
- size_t n;
-
- int updatecalls;
-
- std::ostringstream log;
- size_t swap_count;
- size_t slide_count;
- size_t reverse_count;
- size_t improve_count;
-
- private:
- void invariant() const;
-
- size_t find_closest_city(
- size_t current_city,
- const std::set<size_t> inserted) const;
-
- double getDeltaSlide(
- size_t posP,
- size_t posF,
- size_t posL) const;
-
- void swapClimb();
-
- double getDeltaSwap(
- size_t posA,
- size_t posC) const;
-
- double getDeltaReverse(
- size_t posA,
- size_t posC) const;
-
- void update_if_best();
-};
-
-} // namespace tsp
-} // namespace pgrouting
-
-#include "pgr_tsp.cpp"
-
-#endif // SRC_TSP_SRC_PGR_TSP_HPP_
diff --git a/src/tsp/src/tour.cpp b/src/tsp/src/tour.cpp
index b815203..a94f5fd 100644
--- a/src/tsp/src/tour.cpp
+++ b/src/tsp/src/tour.cpp
@@ -23,11 +23,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./tour.h"
+#include "tsp/tour.h"
#include <algorithm>
-#include "../../common/src/pgr_assert.h"
+#include "cpp_common/pgr_assert.h"
namespace pgrouting {
diff --git a/src/tsp/src/tour.h b/src/tsp/src/tour.h
deleted file mode 100644
index 9b0e8a6..0000000
--- a/src/tsp/src/tour.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-FILE: tour.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
-#ifndef SRC_TSP_SRC_TOUR_H_
-#define SRC_TSP_SRC_TOUR_H_
-#pragma once
-
-#include <stdlib.h>
-#include <algorithm>
-#include <numeric>
-#include <vector>
-
-#include "./Dmatrix.h"
-
-
-namespace pgrouting {
-namespace tsp {
-
-
-class Tour {
- public:
- Tour(const Tour &) = default;
-
- explicit Tour(const std::vector<size_t> &cities_order) :
- cities(cities_order) {
- }
-
- explicit Tour(size_t n) {
- cities.resize(n);
- std::iota(std::begin(cities), std::end(cities), 0);
- }
-
- inline size_t size() const {return cities.size();}
-
- friend std::ostream& operator<<(
- std::ostream &log,
- const Tour &tour);
-
-
- friend double Dmatrix::tourCost(const Tour &tour) const;
-
-
- /* @brief slides range [first + 1, last + 1) into place + 1
- *
- * 0 1 2 3 4 5 6 7 8 9
- * p f l
- * slides [4,5,6] to position p
- *
- * 0 1 4 5 6 2 3 7 8 9
- *
- *
- * 0 1 2 3 4 5 6 7 8 9
- * f l p
- * slides [2,3,4] to position p
- *
- * 0 1 6 7 2 3 4 5 8 9
- *
- * uses std::reverse
- *
- * http://en.cppreference.com/w/cpp/algorithm/rotate
- *
- * first - the beginning of the original range
- * last - the end of the original range
- * place - location where to slide
- *
- *
- *
- * @params[IN] place index of place
- * @params[IN] first - index of first
- * @params[IN] last - index of last
- *
- * precondition:
- * pgassert(first < cities.size();
- * pgassert(last < cities.size();
- * pgassert(place < cities.size();
- *
- */
-
- void slide(
- size_t place,
- size_t first,
- size_t last);
-
-
- /* @brief std::reverse on the cities
- *
- * http://en.cppreference.com/w/cpp/algorithm/reverse
- *
- * first - the beginning of the original range
- * last - the end of the original range
- *
- * @params[IN] c1 - index of first
- * @params[IN] c2 - index of lasst
- *
- * precondition:
- * pgassert(c1 < c2);
- *
- */
-
- void reverse(
- size_t c1,
- size_t c2);
-
-
- /* @brief std::rotate on the cities
- *
- * http://en.cppreference.com/w/cpp/algorithm/rotate
- *
- * first - the beginning of the original range
- * n_first - the element that should appear at the beginning of the rotated range
- * last - the end of the original range
- *
- * @params[IN] c1 - index of first
- * @params[IN] c2 - index of n_first
- * @params[IN] c3 - index of last
- *
- * precondition:
- * pgassert(c2 && c2 < c3 && c3 < n);
- *
- */
- void rotate(
- size_t c1,
- size_t c2,
- size_t c3);
-
-
- void swap(
- size_t c1,
- size_t c2);
-
- public:
- std::vector<size_t> cities;
-};
-
-} // namespace tsp
-} // namespace pgrouting
-
-#endif // SRC_TSP_SRC_TOUR_H_
diff --git a/src/tsp/test/doc-pgr_TSP-windows.result b/src/tsp/test/doc-pgr_TSP-windows.result
index 32b34d4..b64f782 100644
--- a/src/tsp/test/doc-pgr_TSP-windows.result
+++ b/src/tsp/test/doc-pgr_TSP-windows.result
@@ -1,6 +1,40 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
+WITH
+query AS (
+ SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 14),
+ directed := false
+ )
+ $$
+ )
+)
+SELECT agg_cost < 20 AS under_20 FROM query WHERE seq = 14;
+ under_20
+----------
t
+(1 row)
+
-- q2
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 14),
+ directed := false
+ )
+ $$,
+ start_id := 7,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
1|7|1|0
2|8|1|1
3|5|1|2
@@ -15,11 +49,29 @@ t
12|13|3|12
13|6|3|15
14|7|0|18
+(14 rows)
+
-- q3
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 5, 6, -6], directed := false);
+ $$,
+ start_id := 5,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
1|5|0.3|0
2|-6|1.3|0.3
3|-1|1.6|1.6
4|3|1|3.2
5|6|1|4.2
6|5|0|5.2
+(6 rows)
+
-- q4
+ROLLBACK;
+ROLLBACK
diff --git a/src/tsp/test/doc-pgr_TSP.result b/src/tsp/test/doc-pgr_TSP.result
index c06eed1..374dd6b 100644
--- a/src/tsp/test/doc-pgr_TSP.result
+++ b/src/tsp/test/doc-pgr_TSP.result
@@ -1,25 +1,77 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-t
+WITH
+query AS (
+ SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 14),
+ directed := false
+ )
+ $$
+ )
+)
+SELECT agg_cost < 20 AS under_20 FROM query WHERE seq = 14;
+ under_20
+----------
+ t
+(1 row)
+
-- q2
-1|7|1|0
-2|8|1|1
-3|5|1|2
-4|2|1|3
-5|1|2|4
-6|3|1|6
-7|4|1|7
-8|9|1|8
-9|12|1|9
-10|11|1|10
-11|10|1|11
-12|13|3|12
-13|6|3|15
-14|7|0|18
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_dijkstraCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ (SELECT array_agg(id) FROM edge_table_vertices_pgr WHERE id < 14),
+ directed := false
+ )
+ $$,
+ start_id := 7,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 7 | 1 | 0
+ 2 | 8 | 1 | 1
+ 3 | 5 | 1 | 2
+ 4 | 2 | 1 | 3
+ 5 | 1 | 2 | 4
+ 6 | 3 | 1 | 6
+ 7 | 4 | 1 | 7
+ 8 | 9 | 1 | 8
+ 9 | 12 | 1 | 9
+ 10 | 11 | 1 | 10
+ 11 | 10 | 1 | 11
+ 12 | 13 | 3 | 12
+ 13 | 6 | 3 | 15
+ 14 | 7 | 0 | 18
+(14 rows)
+
-- q3
-1|5|1|0
-2|6|1|1
-3|3|1.6|2
-4|-1|1.3|3.6
-5|-6|0.3|4.9
-6|5|0|5.2
+SELECT * FROM pgr_TSP(
+ $$
+ SELECT * FROM pgr_withPointsCostMatrix(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction from pointsOfInterest',
+ array[-1, 3, 5, 6, -6], directed := false);
+ $$,
+ start_id := 5,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------+----------
+ 1 | 5 | 1 | 0
+ 2 | 6 | 1 | 1
+ 3 | 3 | 1.6 | 2
+ 4 | -1 | 1.3 | 3.6
+ 5 | -6 | 0.3 | 4.9
+ 6 | 5 | 0 | 5.2
+(6 rows)
+
-- q4
+ROLLBACK;
+ROLLBACK
diff --git a/src/tsp/test/doc-pgr_eucledianTSP.result b/src/tsp/test/doc-pgr_eucledianTSP.result
index e34408a..8067930 100644
--- a/src/tsp/test/doc-pgr_eucledianTSP.result
+++ b/src/tsp/test/doc-pgr_eucledianTSP.result
@@ -1,50 +1,94 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-t
+WITH
+query AS (
+ SELECT * FROM pgr_eucledianTSP(
+ $$
+ SELECT id, st_X(the_geom) AS x, st_Y(the_geom)AS y FROM edge_table_vertices_pgr
+ $$
+ )
+)
+SELECT agg_cost < 20 AS under_20 FROM query WHERE seq = 18;
+ under_20
+----------
+ t
+(1 row)
+
-- q2
-1|1|1.4142135623731|0
-2|3|1|1.4142135623731
-3|4|1|2.41421356237309
-4|9|0.58309518948453|3.41421356237309
-5|16|0.58309518948453|3.99730875185762
-6|6|1|4.58040394134215
-7|5|1|5.58040394134215
-8|8|1|6.58040394134215
-9|7|1.58113883008419|7.58040394134215
-10|14|1.499999999999|9.16154277142634
-11|15|0.5|10.6615427714253
-12|13|1.5|11.1615427714253
-13|17|1.11803398874989|12.6615427714253
-14|12|1|13.7795767601752
-15|11|1|14.7795767601752
-16|10|2|15.7795767601752
-17|2|1|17.7795767601752
-18|1|0|18.7795767601752
+SELECT* from pgr_eucledianTSP(
+ $$
+ SELECT id, st_X(the_geom) AS x, st_Y(the_geom) AS y FROM edge_table_vertices_pgr
+ $$,
+ tries_per_temperature := 3,
+ cooling_factor := 0.5,
+ randomize := false
+);
+ seq | node | cost | agg_cost
+-----+------+------------------+------------------
+ 1 | 1 | 1.4142135623731 | 0
+ 2 | 3 | 1 | 1.4142135623731
+ 3 | 4 | 1 | 2.41421356237309
+ 4 | 9 | 0.58309518948453 | 3.41421356237309
+ 5 | 16 | 0.58309518948453 | 3.99730875185762
+ 6 | 6 | 1 | 4.58040394134215
+ 7 | 5 | 1 | 5.58040394134215
+ 8 | 8 | 1 | 6.58040394134215
+ 9 | 7 | 1.58113883008419 | 7.58040394134215
+ 10 | 14 | 1.499999999999 | 9.16154277142634
+ 11 | 15 | 0.5 | 10.6615427714253
+ 12 | 13 | 1.5 | 11.1615427714253
+ 13 | 17 | 1.11803398874989 | 12.6615427714253
+ 14 | 12 | 1 | 13.7795767601752
+ 15 | 11 | 1 | 14.7795767601752
+ 16 | 10 | 2 | 15.7795767601752
+ 17 | 2 | 1 | 17.7795767601752
+ 18 | 1 | 0 | 18.7795767601752
+(18 rows)
+
-- q3
-DEBUG: pgr_eucledianTSP Processing Information
+SET client_min_messages TO DEBUG1;
+SET
+SELECT* from pgr_eucledianTSP(
+ $$
+ SELECT id, st_X(the_geom) AS x, st_Y(the_geom) AS y FROM edge_table_vertices_pgr
+ $$,
+ tries_per_temperature := 0,
+ randomize := false
+);
+DEBUG: pgr_eucledianTSP Processing Information
Initializing tsp class ---> tsp.greedyInitial ---> tsp.annealing ---> OK
-Cycle(100) total changes =0 0 were because delta energy < 0
+Cycle(100) total changes =0 0 were because delta energy < 0
Total swaps: 3
Total slides: 0
Total reverses: 0
Times best tour changed: 4
Best cost reached = 18.7796
-1|1|1.4142135623731|0
-2|3|1|1.4142135623731
-3|4|1|2.41421356237309
-4|9|0.58309518948453|3.41421356237309
-5|16|0.58309518948453|3.99730875185762
-6|6|1|4.58040394134215
-7|5|1|5.58040394134215
-8|8|1|6.58040394134215
-9|7|1.58113883008419|7.58040394134215
-10|14|1.499999999999|9.16154277142634
-11|15|0.5|10.6615427714253
-12|13|1.5|11.1615427714253
-13|17|1.11803398874989|12.6615427714253
-14|12|1|13.7795767601752
-15|11|1|14.7795767601752
-16|10|2|15.7795767601752
-17|2|1|17.7795767601752
-18|1|0|18.7795767601752
+ seq | node | cost | agg_cost
+-----+------+------------------+------------------
+ 1 | 1 | 1.4142135623731 | 0
+ 2 | 3 | 1 | 1.4142135623731
+ 3 | 4 | 1 | 2.41421356237309
+ 4 | 9 | 0.58309518948453 | 3.41421356237309
+ 5 | 16 | 0.58309518948453 | 3.99730875185762
+ 6 | 6 | 1 | 4.58040394134215
+ 7 | 5 | 1 | 5.58040394134215
+ 8 | 8 | 1 | 6.58040394134215
+ 9 | 7 | 1.58113883008419 | 7.58040394134215
+ 10 | 14 | 1.499999999999 | 9.16154277142634
+ 11 | 15 | 0.5 | 10.6615427714253
+ 12 | 13 | 1.5 | 11.1615427714253
+ 13 | 17 | 1.11803398874989 | 12.6615427714253
+ 14 | 12 | 1 | 13.7795767601752
+ 15 | 11 | 1 | 14.7795767601752
+ 16 | 10 | 2 | 15.7795767601752
+ 17 | 2 | 1 | 17.7795767601752
+ 18 | 1 | 0 | 18.7795767601752
+(18 rows)
+
-- q4
+ROLLBACK;
+ROLLBACK
diff --git a/src/tsp/test/doc-pgr_eucledianTSP.test.sql b/src/tsp/test/doc-pgr_eucledianTSP.test.sql
index 71a7092..8b50ba8 100644
--- a/src/tsp/test/doc-pgr_eucledianTSP.test.sql
+++ b/src/tsp/test/doc-pgr_eucledianTSP.test.sql
@@ -20,6 +20,9 @@ SELECT* from pgr_eucledianTSP(
);
\echo -- q3
SET client_min_messages TO DEBUG1;
+
+-- TODO see what this outputs
+
SELECT* from pgr_eucledianTSP(
$$
SELECT id, st_X(the_geom) AS x, st_Y(the_geom) AS y FROM edge_table_vertices_pgr
diff --git a/src/tsp/test/doc-tsp-mac.result b/src/tsp/test/doc-tsp-mac.result
index 7d60bc0..1351b43 100644
--- a/src/tsp/test/doc-tsp-mac.result
+++ b/src/tsp/test/doc-tsp-mac.result
@@ -1,22 +1,4 @@
-- q1
-NOTICE: Deprecated Signature pgr_tsp(sql, integer, integer)
-0|1|1|1.4142135623731
-1|3|3|1
-2|4|4|1
-3|9|9|1
-4|6|6|0.58309518948453
-5|16|16|0.860232526704263
-6|12|12|1.11803398874989
-7|17|17|1.11803398874989
-8|11|11|1
-9|10|10|0.5
-10|15|15|0.5
-11|13|13|1.58113883008419
-12|14|14|1.58113883008419
-13|7|7|1
-14|8|8|1
-15|5|5|1
-16|2|2|1
-- q2
1|1|1.4142135623731|0
2|3|1|1.4142135623731
diff --git a/src/tsp/test/doc-tsp-mac.test.sql b/src/tsp/test/doc-tsp-mac.test.sql
index 04a773e..7f46de6 100644
--- a/src/tsp/test/doc-tsp-mac.test.sql
+++ b/src/tsp/test/doc-tsp-mac.test.sql
@@ -1,4 +1,3 @@
-BEGIN;
\echo -- q1
SELECT * FROM pgr_TSP(
@@ -36,4 +35,3 @@ SELECT * FROM pgr_TSP(
randomize := false
);
\echo -- q5
-ROLLBACK;
diff --git a/src/tsp/test/doc-tsp-windows.result b/src/tsp/test/doc-tsp-windows.result
index 870a0d7..cf70e4a 100644
--- a/src/tsp/test/doc-tsp-windows.result
+++ b/src/tsp/test/doc-tsp-windows.result
@@ -1,22 +1,4 @@
-- q1
-NOTICE: Deprecated Signature pgr_tsp(sql, integer, integer)
-0|1|1|1
-1|2|2|1
-2|5|5|1
-3|8|8|1
-4|7|7|1.58113883008419
-5|14|14|1.58113883008419
-6|13|13|0.5
-7|15|15|0.5
-8|10|10|1
-9|11|11|1.11803398874989
-10|17|17|1.11803398874989
-11|12|12|0.860232526704263
-12|16|16|0.58309518948453
-13|6|6|1
-14|9|9|1
-15|4|4|1
-16|3|3|1.4142135623731
-- q2
1|1|1|0
2|2|1|1
diff --git a/src/tsp/test/doc-tsp-windows.test.sql b/src/tsp/test/doc-tsp-windows.test.sql
index 90dcf6b..8df305b 100644
--- a/src/tsp/test/doc-tsp-windows.test.sql
+++ b/src/tsp/test/doc-tsp-windows.test.sql
@@ -1,4 +1,3 @@
-BEGIN;
\echo -- q1
SELECT * FROM pgr_TSP(
@@ -17,13 +16,6 @@ SELECT * FROM pgr_eucledianTSP(
);
\echo -- q3
-SELECT * FROM pgr_TSP(
- (SELECT * FROM pgr_vidsToDMatrix(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- (SELECT array_agg(id) from edge_table_vertices_pgr WHERE id < 14)::INTEGER[], false , true, true)
- ),
- 1
-);
\echo -- q4
SELECT * FROM pgr_TSP(
@@ -36,5 +28,3 @@ SELECT * FROM pgr_TSP(
randomize := false
);
\echo -- q5
-
-ROLLBACK;
diff --git a/src/tsp/test/doc-tsp.result b/src/tsp/test/doc-tsp.result
deleted file mode 100644
index 5d9797d..0000000
--- a/src/tsp/test/doc-tsp.result
+++ /dev/null
@@ -1,52 +0,0 @@
--- q1
-NOTICE: Deprecated Signature pgr_tsp(sql, integer, integer)
-0|1|1|1
-1|2|2|1
-2|5|5|1
-3|8|8|1
-4|7|7|1.58113883008419
-5|14|14|1.58113883008419
-6|13|13|0.5
-7|15|15|0.5
-8|10|10|1
-9|11|11|1.11803398874989
-10|17|17|1.11803398874989
-11|12|12|0.860232526704263
-12|16|16|0.58309518948453
-13|6|6|1
-14|9|9|1
-15|4|4|1
-16|3|3|1.4142135623731
--- q2
-1|1|1.4142135623731|0
-2|3|1|1.4142135623731
-3|4|1|2.41421356237309
-4|9|1|3.41421356237309
-5|6|0.58309518948453|4.41421356237309
-6|16|0.860232526704263|4.99730875185763
-7|12|1.11803398874989|5.85754127856189
-8|17|1.11803398874989|6.97557526731178
-9|11|1|8.09360925606168
-10|10|0.5|9.09360925606168
-11|15|0.5|9.59360925606168
-12|13|1.58113883008419|10.0936092560617
-13|14|1.58113883008419|11.6747480861459
-14|7|1|13.2558869162301
-15|8|1|14.2558869162301
-16|5|1|15.2558869162301
-17|2|1|16.2558869162301
-18|1|0|17.2558869162301
--- q3
-NOTICE: Deprecated function pgr_vidsToDMatrix
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|2
-2|3
-3|0
--- q4
-1|8|3|0
-2|11|1|3
-3|12|3|4
-4|13|3|7
-5|8|0|10
--- q5
diff --git a/src/tsp/test/doc-tsp.test.sql b/src/tsp/test/doc-tsp.test.sql
deleted file mode 100644
index 4499692..0000000
--- a/src/tsp/test/doc-tsp.test.sql
+++ /dev/null
@@ -1,36 +0,0 @@
-\echo -- q1
-SELECT * FROM pgr_TSP(
- $$
- SELECT id::INTEGER, st_X(the_geom) AS x, st_Y(the_geom)AS y FROM edge_table_vertices_pgr
- $$
- , 1);
-
-\echo -- q2
-SELECT * FROM pgr_eucledianTSP(
- $$
- SELECT id, st_X(the_geom) AS x, st_Y(the_geom)AS y FROM edge_table_vertices_pgr
- $$,
- 1,
- randomize := false
-);
-
-\echo -- q3
-SELECT * FROM pgr_TSP(
- (SELECT * FROM pgr_vidsToDMatrix(
- 'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost FROM edge_table',
- ARRAY[8,11,12,13]::INTEGER[], false , true, true)
- ),
- 1
-);
-
-\echo -- q4
-SELECT * FROM pgr_TSP(
- $$
- SELECT * FROM pgr_dijkstraCostMatrix(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- ARRAY[8,11,12,13]::INTEGER[], false)
- $$,
- 8,
- randomize := false
-);
-\echo -- q5
diff --git a/src/tsp/test/test.conf b/src/tsp/test/test.conf
index fe285f0..b2df1bb 100644
--- a/src/tsp/test/test.conf
+++ b/src/tsp/test/test.conf
@@ -5,21 +5,17 @@
'comment' => 'newTSP',
'data' => [],
'tests' => [qw(
- tsp-v2-0
+ doc-pgr_eucledianTSP
)],
'linux' => [qw(
doc-pgr_TSP
- doc-tsp
- doc-pgr_eucledianTSP
)],
'macos' => [qw(
- doc-pgr_TSP-mac
)],
'windows' => [qw(
doc-pgr_TSP-windows
)],
'documentation' => [qw(
- doc-tsp
doc-pgr_TSP
doc-pgr_eucledianTSP
)]
diff --git a/src/tsp/test/tsp-v2-0.result b/src/tsp/test/tsp-v2-0.result
deleted file mode 100644
index 4e975f1..0000000
--- a/src/tsp/test/tsp-v2-0.result
+++ /dev/null
@@ -1,209 +0,0 @@
-NOTICE: Deprecated Signature pgr_tsp(sql, integer, integer)
-15.4787
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-OK
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|2
-2|3
-3|0
-NOTICE: Deprecated Signature pgr_tsp(sql, integer, integer)
-11.3137
-NOTICE: Deprecated Signature pgr_tsp(sql, integer, integer)
-32.4721
-NOTICE: Deprecated Signature pgr_tsp(sql, integer, integer)
-23.4706
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|0
-1|3
-2|1
-3|4
-4|2
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|0
-1|2
-2|4
-3|3
-4|1
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|0
-1|3
-2|1
-3|4
-4|2
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|0
-1|2
-2|4
-3|1
-4|3
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|0
-2|2
-3|4
-4|3
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|0
-2|2
-3|4
-4|3
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|4
-2|3
-3|0
-4|2
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|4
-2|2
-3|0
-4|3
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|2
-1|4
-2|3
-3|1
-4|0
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|2
-1|4
-2|3
-3|1
-4|0
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|2
-1|4
-2|3
-3|1
-4|0
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|2
-1|4
-2|1
-3|0
-4|3
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|3
-1|1
-2|0
-3|2
-4|4
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|3
-1|1
-2|4
-3|2
-4|0
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|3
-1|4
-2|2
-3|0
-4|1
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|3
-1|1
-2|0
-3|2
-4|4
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|4
-1|3
-2|1
-3|0
-4|2
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|4
-1|2
-2|3
-3|1
-4|0
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|4
-1|2
-2|0
-3|3
-4|1
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|4
-1|3
-2|1
-3|0
-4|2
-----------------------------------
-NOTICE: Deprecated Signature pgr_tsp(sql, integer, integer)
-0|6|6|2.24
-1|11|11|4.12
-2|3|3|2.24
-3|1|1|3.00
-4|2|2|2.00
-5|4|4|1.00
-6|7|7|1.00
-7|8|8|1.41
-8|9|9|1.80
-9|10|10|2.50
-10|5|5|3.61
-----------------------------------1(in ints)
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-OK
-----------------------------------1(in tenths)
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-FAIL
-----------------------------------1-0
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|2
-2|3
-3|0
-----------------------------------1-2
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|2
-2|3
-3|0
-----------------------------------1-3
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|1
-1|0
-2|3
-3|2
-----------------------------------0-1
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|0
-1|1
-2|2
-3|3
-----------------------------------2-1
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|2
-1|3
-2|1
-3|0
-----------------------------------3-1
-NOTICE: Deprecated Signature pgr_tsp(float8[][], integer, integer)
-0|3
-1|2
-2|1
-3|0
diff --git a/src/tsp/test/tsp-v2-0.test.sql b/src/tsp/test/tsp-v2-0.test.sql
deleted file mode 100644
index 49a7ce9..0000000
--- a/src/tsp/test/tsp-v2-0.test.sql
+++ /dev/null
@@ -1,138 +0,0 @@
-
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
- ********************************************************************PGR-GNU*/
-
---------------------------------------------------------------------------------
--- PGR_pgr_tsp
---------------------------------------------------------------------------------
-
-CREATE TEMP TABLE vertex_table (
- id serial,
- x double precision,
- y double precision
-);
-
-INSERT INTO vertex_table VALUES
-(1,2,0), (2,2,1), (3,3,1), (4,4,1), (5,0,2), (6,1,2), (7,2,2),
-(8,3,2), (9,4,2), (10,2,3), (11,3,3), (12,4,3), (13,2,4);
-
-CREATE table tsp_00 (
- source_id serial not null primary key,
- x float,
- y float);
-
-insert into tsp_00 (x,y) values
-(1,7),
-(1,4),
-(3,8),
-(1,2),
-(3,5),
-(5,8),
-(1,1),
-(2,1),
-(3,2),
-(4.5,3),
-(7,7),
-(3,1),
-(3,3),
-(4.5,5),
-(3,4),
-(4.5,4),
-(7,4),
-(5,1),
-(4.5,2),
-(7,2),
-(7,1),
-(4.5,1);
-
-
-
-SELECT round(sum(cost)::numeric, 4) as cost
-FROM pgr_tsp('SELECT id, x, y FROM vertex_table ORDER BY id', 6, 5);
-SELECT case when r=array[1,2,3,0] then 'OK' when r=array[1,0,3,2] then 'OK' else 'FAIL' end from (SELECT array_agg(id) as r from (SELECT seq, id FROM pgr_tsp('{{0,1,2,3},{1,0,4,5},{2,4,0,6},{3,5,6,0}}'::float8[],1)) as a) as b;
-
-SET client_min_messages TO NOTICE;
-
-SELECT seq, id FROM pgr_tsp('{{0,1,2,3},{1,0,4,5},{2,4,0,6},{3,5,6,0}}'::float8[],1,2);
-SELECT round(sum(cost)::numeric, 4) as cost
-FROM pgr_tsp('SELECT id::integer, st_x(the_geom) as x,st_x(the_geom) as y FROM edge_table_vertices_pgr ORDER BY id', 6, 5);
-SELECT round(sum(cost)::numeric, 4) as cost from pgr_tsp('SELECT source_id as id, x, y from tsp_00 where source_id in (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)', 1);
-SELECT round(sum(cost)::numeric, 4) as cost from pgr_tsp('SELECT source_id as id, x, y from tsp_00 where source_id<12 order by source_id', 6);
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],0,1);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],0,2);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],0,3);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],0,4);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],1,0);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],1,2);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],1,3);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],1,4);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],2,0);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],2,1);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],2,3);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],2,4);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],3,0);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],3,1);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],3,2);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],3,4);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],4,0);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],4,1);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],4,2);
-\echo '----------------------------------'
-SELECT * from pgr_tsp('{{0,1,2,3,4},{1,0,3,2,1},{2,3,0,4,2},{3,2,4,0,3},{4,1,2,3,0}}'::float8[],4,3);
-\echo '----------------------------------'
-SELECT seq, id1, id2, round(cost::numeric, 2) as cost from pgr_tsp('SELECT source_id as id, x, y from tsp_00 where source_id<12 order by source_id', 6, 5);
-\echo '----------------------------------1(in ints)'
-SELECT case when r=array[1,2,3,0] then 'OK' when r=array[1,0,3,2] then 'OK' else 'FAIL' end from (SELECT array_agg(id) as r from (SELECT seq, id FROM pgr_tsp('{{0,1,2,3},{1,0,4,5},{2,4,0,6},{3,5,6,0}}'::float8[],1)) as a) as b;
-\echo '----------------------------------1(in tenths)'
-SELECT case when r=array[1,2,3,0] then 'OK' when r=array[1,0,3,2] then 'OK' else 'FAIL' end from (SELECT array_agg(id) as r from (SELECT seq, id FROM pgr_tsp('{{0,.1,.2,.3},{.1,0,.4,.5},{.2,.4,0,.6},{.3,.5,.6,0}}'::float8[],1)) as a) as b;
-\echo '----------------------------------1-0'
-SELECT seq, id FROM pgr_tsp('{{0,1,3,3},{1,0,2,2},{3,2,0,2},{3,2,2,0}}'::float8[],1,0);
-\echo '----------------------------------1-2'
-SELECT seq, id FROM pgr_tsp('{{0,1,2,3},{1,0,4,5},{2,4,0,6},{3,5,6,0}}'::float8[],1,2);
-\echo '----------------------------------1-3'
-SELECT seq, id FROM pgr_tsp('{{0,1,2,3},{1,0,4,5},{2,4,0,6},{3,5,6,0}}'::float8[],1,3);
-\echo '----------------------------------0-1'
-SELECT seq, id FROM pgr_tsp('{{0,1,2,3},{1,0,4,5},{2,4,0,6},{3,5,6,0}}'::float8[],0,1);
-\echo '----------------------------------2-1'
-SELECT seq, id FROM pgr_tsp('{{0,1,2,3},{1,0,4,5},{2,4,0,6},{3,5,6,0}}'::float8[],2,1);
-\echo '----------------------------------3-1'
-SELECT seq, id FROM pgr_tsp('{{0,1,2,3},{1,0,4,5},{2,4,0,6},{3,5,6,0}}'::float8[],3,1);
-
diff --git a/src/vrp_basic/doc/CMakeLists.txt b/src/vrp_basic/doc/CMakeLists.txt
deleted file mode 100644
index e69de29..0000000
diff --git a/src/vrp_basic/doc/pgr_vrpOneDepot.rst b/src/vrp_basic/doc/pgr_vrpOneDepot.rst
deleted file mode 100644
index cd7cfd6..0000000
--- a/src/vrp_basic/doc/pgr_vrpOneDepot.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_vrp_basic:
-
-
-pgr_vrpOneDepot - Proposed
-===============================================================================
-
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-No documentation available from the original developer
-
-* :ref:`type_cost_result`
-* http://en.wikipedia.org/wiki/Vehicle_routing_problem
diff --git a/src/vrp_basic/sql/CMakeLists.txt b/src/vrp_basic/sql/CMakeLists.txt
deleted file mode 100644
index 556b600..0000000
--- a/src/vrp_basic/sql/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/routing_vrp.sql
- )
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
-
diff --git a/src/vrp_basic/sql/routing_vrp.sql b/src/vrp_basic/sql/routing_vrp.sql
deleted file mode 100644
index 18ab505..0000000
--- a/src/vrp_basic/sql/routing_vrp.sql
+++ /dev/null
@@ -1,45 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at 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*/
------------------------------------------------------------------------
--- Core function for vrp with sigle depot computation
--- See README for description
------------------------------------------------------------------------
---
---
-
-create or replace function pgr_vrpOneDepot(
- order_sql text,
- vehicle_sql text,
- cost_sql text,
- depot_id integer,
-
- OUT oid integer,
- OUT opos integer,
- OUT vid integer,
- OUT tarrival integer,
- OUT tdepart integer)
-returns setof record as
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'vrp'
-LANGUAGE c VOLATILE STRICT;
-
-
diff --git a/src/vrp_basic/src/CMakeLists.txt b/src/vrp_basic/src/CMakeLists.txt
deleted file mode 100644
index 1a82681..0000000
--- a/src/vrp_basic/src/CMakeLists.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-add_library(vrp_basic OBJECT
- VRP.c
- VRP_core.cpp
- VRP_Solver.cpp)
diff --git a/src/vrp_basic/src/Tester.cpp b/src/vrp_basic/src/Tester.cpp
deleted file mode 100644
index 9dcf18a..0000000
--- a/src/vrp_basic/src/Tester.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2013 Khondoker Md. Razequl Islam
-ziboncsedu at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include <string>
-#include <vector>
-#include "VRP_Solver.h"
-#include "Utils.h"
-
-char buff[1005];
-
-CVRPSolver solver;
-
-// Load orders from the order file. The first order represents the depot.
-// TODO(someone) : file names are hard coded, it should be changed to commandline argument.
-void loadOrders() {
- FILE *fp = fopen("Orders.txt", "rt");
- if (fp == NULL) {
- fprintf(stderr, "Order file not found!\n");
- }
- bool bGotDepot = false;
- // OrderId XCord YCord Demand StartTime EndTime ServiceTime
- while (fgets(buff, 1000, fp)) {
- if (strlen(buff) == 0)
- break;
- StringTokenizer tokenizer;
- tokenizer.parse(buff, " \t");
- StringVector vecToken;
- tokenizer.getTokens(vecToken);
-
- if (vecToken.size() != 7)
- continue;
-
- if (!isdigit(vecToken[0][0]))
- continue;
-
- if (!bGotDepot) {
- // This order represents Deopot
- CDepotInfo depot;
- int id = atoi(vecToken[0].c_str());
- depot.setDepotId(id);
-
- Point pt;
-
- pt.X = atof(vecToken[1].c_str());
- pt.Y = atof(vecToken[2].c_str());
-
- depot.setDepotLocation(pt);
-
- int openTime = atoi(vecToken[4].c_str());
- depot.setOpenTime(openTime);
-
- int closeTime = atoi(vecToken[5].c_str());
- depot.setCloseTime(closeTime);
-
- solver.addDepot(depot);
- bGotDepot = true;
- } else {
- // This is an order
- COrderInfo order;
- int id = atoi(vecToken[0].c_str());
- order.setOrderId(id);
-
- Point pt;
-
- pt.X = atof(vecToken[1].c_str());
- pt.Y = atof(vecToken[2].c_str());
-
- order.setOrderLocation(pt);
-
- int demand = atoi(vecToken[3].c_str());
- order.setOrderUnit(demand);
-
- int openTime = atoi(vecToken[4].c_str());
- order.setOpenTime(openTime);
-
- int closeTime = atoi(vecToken[5].c_str());
- order.setCloseTime(closeTime);
-
- int serviceTime = atoi(vecToken[6].c_str());
- order.setServiceTime(serviceTime);
-
- solver.addOrder(order);
- }
- }
- fclose(fp);
-}
-
-// Load vehicles from vehicle file.
-// TODO(someone) : file names are hard coded, it should be changed to commandline argument.
-
-void loadVehicles() {
- FILE *fp = fopen("Vehicles.txt", "rt");
-
- if (fp == NULL) {
- fprintf(stderr, "Vehicle file not found!\n");
- }
- // VehicleId Capacity
- // In terms of cost all the vehicle will have default cost of 1 for the first version
- while (fgets(buff, 1000, fp)) {
- if (strlen(buff) == 0)
- break;
- StringTokenizer tokenizer;
- tokenizer.parse(buff, " \t");
- StringVector vecToken;
- tokenizer.getTokens(vecToken);
-
- if (vecToken.size() != 2)
- continue;
-
- if (!isdigit(vecToken[0][0]))
- continue;
-
- CVehicleInfo vehicle;
-
- int id = atoi(vecToken[0].c_str());
- vehicle.setId(id);
-
- int capcity = atoi(vecToken[1].c_str());
- vehicle.setCapacity(capcity);
-
- vehicle.setCostPerKM(1);
-
- solver.addVehicle(vehicle);
- }
- fclose(fp);
-}
-
-// Load the cost matrix
-// TODO(someone) : file names are hard coded, it should be changed to commandline argument.
-void loadDistanceMatrix() {
- FILE *fp = fopen("Distance.txt", "rt");
- if (fp == NULL) {
- fprintf(stderr, "Cost file not found!\n");
- return;
- }
-
- // From To Cost
- while (fgets(buff, 1000, fp)) {
- if (strlen(buff) == 0)
- break;
- StringTokenizer tokenizer;
- tokenizer.parse(buff, " \t");
- StringVector vecToken;
- tokenizer.getTokens(vecToken);
-
- if (vecToken.size() != 3)
- continue;
-
- if (!isdigit(vecToken[0][0]))
- continue;
-
- int fromId = atoi(vecToken[0].c_str());
- int toId = atoi(vecToken[1].c_str());
- CostPack cpack;
- cpack.cost = cpack.distance = atof(vecToken[2].c_str());
- cpack.traveltime = cpack.cost;
-
- if (fromId == 1)
- solver.addDepotToOrderCost(fromId, toId, cpack);
- else if (toId == 1)
- solver.addOrderToDepotCost(fromId, toId, cpack);
- else
- solver.addOrderToOrderCost(fromId, toId, cpack);
- }
- fclose(fp);
-}
-
-// Print the solution to a file.
-// TODO(someone) : Currently prints on a fixed file. Later the file name will be taken as a command line argument
-
-bool print_solution(std::string strError) {
- FILE *fp = fopen("result.txt", "wt");
- if (fp == NULL) {
- strError = "Could not open file";
- return false;
- }
- CSolutionInfo solution;
- bool bOK = solver.getSolution(solution, strError);
- if (bOK == false)
- return false;
-
- int totalRoute = solution.getTourInfoVector().size();
- CTourInfo ctour;
-
- fprintf(fp, "Total Number of Route: %d\n", totalRoute);
- fprintf(fp, "Total Cost: %.3lf\n", solution.getTotalCost());
- fprintf(fp, "Total Distance: %.3lf\n", solution.getTotalDistance());
- fprintf(fp, "Total TravelTime: %.3lf\n", solution.getTotalTravelTime());
-
- for (int i = 0; i < totalRoute; i++) {
- ctour = solution.getTour(i);
- fprintf(fp, "Route No. %d: \n", i + 1);
- fprintf(fp, "Vehicle Id: %d\n", ctour.getVehicleId());
- fprintf(fp, "Starting Depot Id: %d\n", ctour.getStartDepot());
- fprintf(fp, "End Depot Id: %d\n", ctour.getEndDepot());
-
- std::vector<int> vecOrder = ctour.getOrderVector();
- int totalOrder = vecOrder.size();
- fprintf(fp, "Visited Order Ids: ");
- for (int j = 0; j < totalOrder; j++) {
- if (j > 0)
- fprintf(fp, " ");
- fprintf(fp, "%d", vecOrder[j]);
- if (j < totalOrder - 1)
- fprintf(fp, ", ");
- }
- fprintf(fp, "\n");
- }
-
- fclose(fp);
- return true;
-}
-
-int main() {
- loadOrders();
- loadVehicles();
- loadDistanceMatrix();
-
- std::string strError;
- bool bIsOK = solver.solveVRP(strError);
-
- if (!bIsOK) {
- fprintf(stderr, "Error Occurred: %s\n", strError.c_str());
- } else {
- print_solution(strError);
- }
-
-
- return 0;
-}
diff --git a/src/vrp_basic/src/Utils.h b/src/vrp_basic/src/Utils.h
deleted file mode 100644
index 3a72340..0000000
--- a/src/vrp_basic/src/Utils.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*PGR
-
-Copyright (c) 2013 Khondoker Md. Razequl Islam
-ziboncsedu at gmail.com
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-*/
-
-#ifndef SRC_VRP_BASIC_SRC_UTILS_H_
-#define SRC_VRP_BASIC_SRC_UTILS_H_
-
-#include <string>
-#include <map>
-#include <vector>
-#include <queue>
-#include <iostream>
-
-
-
-typedef std::vector<int> IntVector;
-typedef std::vector<double> DoubleVector;
-typedef std::vector<std::string> StringVector;
-
-class tokenizer {
- std::string s, delim;
- std::string::size_type pos;
-
- public:
- tokenizer(std::string xs, std::string xdelim) : s(xs), delim(xdelim) {
- pos = s.find_first_not_of(delim);
- }
-
- bool has_more_tokens() {
- return pos != std::string::npos;
- }
-
- std::string next_token() {
- std::string::size_type end_pos = s.find_first_of(delim, pos);
- std::string token = s.substr(pos, end_pos-pos);
- pos = s.find_first_not_of(delim, end_pos);
- return token;
- }
-};
-
-class StringOperation {
- public:
- static std::string TRIMWHITESPACE(std::string strInput) {
- std::string strOut = strInput;
- std::string strWht = " \f\n\r\t\v";
-
- strOut.erase(0, strOut.find_first_not_of(strWht));
- strOut.erase(strOut.find_last_not_of(strWht) + 1);
- return strOut;
- };
-};
-
-class StringTokenizer {
- public:
- StringTokenizer() {
- reset();
- }
-
- void reset() {
- vecTokens.clear();
- strInput = "";
- }
-
- bool parse(std::string strInput, std::string chDelim) {
- tokenizer t(strInput, chDelim);
- while (t.has_more_tokens()) {
- vecTokens.push_back(t.next_token());
- }
- return true;
- }
-
- size_t getTokenCount() {
- return vecTokens.size();
- }
-
- bool getToken(std::string& strToken, int64_t iTokenIndex) {
- int64_t lTokenCount = vecTokens.size();
- if (iTokenIndex < 0 || iTokenIndex < lTokenCount) {
- strToken = vecTokens[iTokenIndex];
- return true;
- }
- return false;
- }
-
- bool getTokens(StringVector& vecTokensRef) {
- vecTokensRef = vecTokens;
- return true;
- }
-
- private:
- std::string strInput;
- StringVector vecTokens;
-};
-
-#endif // SRC_VRP_BASIC_SRC_UTILS_H_
diff --git a/src/vrp_basic/src/VRP.c b/src/vrp_basic/src/VRP.c
deleted file mode 100644
index 66b9a0e..0000000
--- a/src/vrp_basic/src/VRP.c
+++ /dev/null
@@ -1,862 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2013 Khondoker Md. Razequl Islam
-ziboncsedu at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "catalog/pg_type.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <search.h>
-#include <string.h>
-// #include <math.h>
-
-
-#include "./VRP.h"
-
-
-
-
-#include "./../../common/src/pgr_types.h"
-
-#undef qsort
-
-// -------------------------------------------------------------------------
-
-/*
- * Define this to have profiling enabled
- */
-// #define PROFILE
-
-#ifdef PROFILE
-#include <sys/time.h>
-
-struct timeval prof_astar, prof_store, prof_extract, prof_total;
-int64_t proftime[5];
-int64_t profipts1, profipts2, profopts;
-
-#define profstart(x) do { gettimeofday(&x, NULL); } while (0);
-#define profstop(n, x) do { struct timeval _profstop; \
- int64_t _proftime; \
- gettimeofday(&_profstop, NULL); \
- _proftime = (_profstop.tv_sec*1000000+_profstop.tv_usec) - \
- (x.tv_sec*1000000+x.tv_usec); \
- elog(NOTICE, \
- "PRF(%s) %lu (%f ms)", \
- (n), \
- _proftime, _proftime / 1000.0); \
-} while (0);
-
-#else
-
-#define profstart(x) do { } while (0);
-#define profstop(n, x) do { } while (0);
-
-#endif // PROFILE
-
-
-// ------------------------------------------------------------------------
-
-PGDLLEXPORT Datum vrp(PG_FUNCTION_ARGS);
-
-#undef DEBUG
-// #define DEBUG 1
-#include "../../common/src/debug_macro.h"
-
-
-// The number of tuples to fetch from the SPI cursor at each iteration
-#define TUPLIMIT 1000
-
-#ifndef PG_MODULE_MAGIC
-PG_MODULE_MAGIC;
-#endif
-
-typedef struct vehicle_columns {
- int vehicle_id;
- int capacity;
-} vehicle_columns_t;
-
-typedef struct order_columns {
- int id;
- int order_unit;
- int open_time;
- int close_time;
- int service_time;
-
- int x;
- int y;
-} order_columns_t;
-
-typedef struct distance_columns {
- int src_id;
- int dest_id;
- int cost;
- int distance;
- int traveltime;
-} distance_columns_t;
-
-
-// float DISTANCE[MAX_TOWNS][MAX_TOWNS];
-// float x[MAX_TOWNS], y[MAX_TOWNS];
-
-#if 0
-static char *
-text2char(text *in) {
- char *out = (char*)palloc(VARSIZE(in));
-
- memcpy(out, VARDATA(in), VARSIZE(in) - VARHDRSZ);
- out[VARSIZE(in) - VARHDRSZ] = '\0';
- return out;
-}
-#endif
-
-static int
-finish(int *code) {
- *code = SPI_finish();
- if (*code != SPI_OK_FINISH) {
- elog(ERROR, "couldn't disconnect from SPI");
- return -1;
- }
- return 0;
-}
-
-
-
-static int
-fetch_distance_columns(SPITupleTable *tuptable, distance_columns_t *distance_columns) {
- PGR_DBG("Fetching distance");
- if (tuptable) {}
-
- distance_columns->src_id = SPI_fnumber(SPI_tuptable->tupdesc, "src_id");
- distance_columns->dest_id = SPI_fnumber(SPI_tuptable->tupdesc, "dest_id");
- distance_columns->cost = SPI_fnumber(SPI_tuptable->tupdesc, "cost");
- distance_columns->distance = SPI_fnumber(SPI_tuptable->tupdesc, "distance");
- distance_columns->traveltime = SPI_fnumber(SPI_tuptable->tupdesc, "traveltime");
- if (distance_columns->src_id == SPI_ERROR_NOATTRIBUTE ||
- distance_columns->dest_id == SPI_ERROR_NOATTRIBUTE ||
- distance_columns->cost == SPI_ERROR_NOATTRIBUTE ||
- distance_columns->distance == SPI_ERROR_NOATTRIBUTE ||
- distance_columns->traveltime == SPI_ERROR_NOATTRIBUTE) {
- elog(ERROR, "Error, query must return columns "
- "'src_id', 'dest_id', 'cost', 'distance' and 'traveltime'");
- return -1;
- }
-
- return 0;
-}
-
-
-static void
-fetch_distance(HeapTuple *tuple, TupleDesc *tupdesc,
- distance_columns_t *distance_columns, vrp_cost_element_t *dist, size_t t) {
- Datum binval;
- bool isnull;
- if (t) {}
-
- PGR_DBG("fetch_distance: src_id col:%i", distance_columns->src_id);
-
- binval = SPI_getbinval(*tuple, *tupdesc, distance_columns->src_id, &isnull);
-
- PGR_DBG("back from SPI_getbinval for src_id");
- // PGR_DBG("binval = %i", binval);
-
- if (isnull)
- elog(ERROR, "src_id contains a null value");
-
- dist->src_id = DatumGetInt32(binval);
-
- PGR_DBG("back from DatumGetInt32");
- PGR_DBG("src_id = %i", dist->src_id);
-
- binval = SPI_getbinval(*tuple, *tupdesc, distance_columns->dest_id, &isnull);
- if (isnull)
- elog(ERROR, "dest_id contains a null value");
-
- dist->dest_id = DatumGetInt32(binval);
-
- PGR_DBG("dest_id = %i", dist->dest_id);
-
- binval = SPI_getbinval(*tuple, *tupdesc, distance_columns->cost, &isnull);
-
- if (isnull)
- elog(ERROR, "cost contains a null value");
-
- dist->cost = DatumGetFloat8(binval);
-
- PGR_DBG("cost = %lf", dist->cost);
-
- binval = SPI_getbinval(*tuple, *tupdesc, distance_columns->distance, &isnull);
- if (isnull)
- elog(ERROR, "distance contains a null value");
-
- dist->distance = DatumGetFloat8(binval);
-
- PGR_DBG("distance = %lf", dist->distance);
-
- binval = SPI_getbinval(*tuple, *tupdesc, distance_columns->traveltime, &isnull);
-
- if (isnull)
- elog(ERROR, "traveltime contains a null value");
-
- dist->traveltime = DatumGetFloat8(binval);
-
- PGR_DBG("traveltime = %lf", dist->traveltime);
-
- // PGR_DBG("dist[%i][%i] = %f\n", from_point, to_point, value);
-
-
- // PGR_DBG("dist[%i(%i:%i)][%i(%i:%i)] = %f\n", from, from_order, from_point, to, to_order, to_point, *(dist + (num_rows * from) + to));
-}
-
-static int
-fetch_order_columns(SPITupleTable *tuptable, order_columns_t *order_columns) {
- PGR_DBG("Fetching order");
- if (tuptable) {}
-
- // order_columns->id = SPI_fnumber(SPI_tuptable->tupdesc, "id");
- order_columns->id = SPI_fnumber(SPI_tuptable->tupdesc, "id");
- order_columns->order_unit = SPI_fnumber(SPI_tuptable->tupdesc, "order_unit");
- order_columns->open_time = SPI_fnumber(SPI_tuptable->tupdesc, "open_time");
- order_columns->close_time = SPI_fnumber(SPI_tuptable->tupdesc, "close_time");
- order_columns->service_time = SPI_fnumber(SPI_tuptable->tupdesc, "service_time");
- order_columns->x = SPI_fnumber(SPI_tuptable->tupdesc, "x");
- order_columns->y = SPI_fnumber(SPI_tuptable->tupdesc, "y");
- if ( // order_columns->id == SPI_ERROR_NOATTRIBUTE ||
- order_columns->id == SPI_ERROR_NOATTRIBUTE ||
- order_columns->open_time == SPI_ERROR_NOATTRIBUTE ||
- order_columns->order_unit == SPI_ERROR_NOATTRIBUTE ||
- order_columns->close_time == SPI_ERROR_NOATTRIBUTE ||
- order_columns->service_time == SPI_ERROR_NOATTRIBUTE ||
- order_columns->x == SPI_ERROR_NOATTRIBUTE ||
- order_columns->y == SPI_ERROR_NOATTRIBUTE
- ) {
- // elog(ERROR, "Error, query must return columns "
- // "'id', 'order_id', 'pu_time', 'do_time', 'pu_time_window', 'do_time_window', 'from_x', 'to_x', 'from_y', 'to_y' and 'size'");
- elog(ERROR, "Error, query must return columns "
- // "'id',
- "'id', 'order_unit', 'open_time', 'close_time', 'service_time', 'x', 'y'");
- return -1;
- }
-
- return 0;
-}
-
-static void
-fetch_order(HeapTuple *tuple, TupleDesc *tupdesc,
- order_columns_t *order_columns, vrp_orders_t *order, size_t t) {
- Datum binval;
- bool isnull;
-
- PGR_DBG("inside fetch_order\n");
-
- // binval = SPI_getbinval(*tuple, *tupdesc, order_columns->id, &isnull);
- //
- // PGR_DBG("got binval\n");
- //
- // if (isnull)
- // elog(ERROR, "id contains a null value");
- //
- // order->id = DatumGetInt32(binval);
- order->id = (int)t + 1;
-
- PGR_DBG("id = %i\n", order->id);
-
- binval = SPI_getbinval(*tuple, *tupdesc, order_columns->id, &isnull);
- if (isnull)
- elog(ERROR, "order_id contains a null value");
-
- order->id = DatumGetInt32(binval);
-
- PGR_DBG("order_id = %i\n", order->id);
-
-
- binval = SPI_getbinval(*tuple, *tupdesc, order_columns->order_unit, &isnull);
- if (isnull)
- elog(ERROR, "order_unit contains a null value");
-
- order->order_unit = DatumGetInt32(binval);
-
- PGR_DBG("order_unit = %i\n", order->order_unit);
-
- binval = SPI_getbinval(*tuple, *tupdesc, order_columns->open_time, &isnull);
- if (isnull)
- elog(ERROR, "open_time contains a null value");
-
- order->open_time = DatumGetInt32(binval);
-
- PGR_DBG("open_time = %i\n", order->open_time);
-
- binval = SPI_getbinval(*tuple, *tupdesc, order_columns->close_time, &isnull);
- if (isnull)
- elog(ERROR, "close_time contains a null value");
-
- order->close_time = DatumGetInt32(binval);
-
- PGR_DBG("close_time = %d\n", order->close_time);
-
- binval = SPI_getbinval(*tuple, *tupdesc, order_columns->service_time, &isnull);
- if (isnull)
- elog(ERROR, "service_time contains a null value");
-
- order->service_time = DatumGetInt32(binval);
-
- PGR_DBG("service_time = %d\n", order->service_time);
-
- binval = SPI_getbinval(*tuple, *tupdesc, order_columns->x, &isnull);
- if (isnull)
- elog(ERROR, "x contains a null value");
-
- order->x = DatumGetFloat8(binval);
-
- PGR_DBG("x = %f\n", order->x);
-
- binval = SPI_getbinval(*tuple, *tupdesc, order_columns->y, &isnull);
- if (isnull)
- elog(ERROR, "y contains a null value");
-
- order->y = DatumGetFloat8(binval);
-
- PGR_DBG("doUT = %f\n", order->y);
-}
-
-static int
-fetch_vehicle_columns(SPITupleTable *tuptable, vehicle_columns_t *vehicle_columns) {
- PGR_DBG("Fetching order");
- if (tuptable) {}
-
- vehicle_columns->vehicle_id = SPI_fnumber(SPI_tuptable->tupdesc, "vehicle_id");
- vehicle_columns->capacity = SPI_fnumber(SPI_tuptable->tupdesc, "capacity");
-
- if (vehicle_columns->vehicle_id == SPI_ERROR_NOATTRIBUTE ||
- vehicle_columns->capacity == SPI_ERROR_NOATTRIBUTE) {
- elog(ERROR, "Error, query must return columns "
- "'id' and 'capacity'");
- return -1;
- }
-
- return 0;
-}
-
-static void
-fetch_vehicle(HeapTuple *tuple, TupleDesc *tupdesc,
- vehicle_columns_t *vehicle_columns, vrp_vehicles_t *vehicle, size_t t) {
- Datum binval;
- bool isnull;
- if (t) {}
-
- PGR_DBG("inside fetch_vehicle\n");
-
- // binval = SPI_getbinval(*tuple, *tupdesc, vehicle_columns->id, &isnull);
- // PGR_DBG("Got id\n");
- //
- // if (isnull)
- // elog(ERROR, "id contains a null value");
- //
- // vehicle->id = DatumGetInt32(binval);
-
-
- binval = SPI_getbinval(*tuple, *tupdesc, vehicle_columns->vehicle_id, &isnull);
- PGR_DBG("Got vehicle_id\n");
-
- if (isnull)
- elog(ERROR, "vehicle_id contains a null value");
-
- vehicle->id = DatumGetInt32(binval);
-
- PGR_DBG("vehicle_id = %i\n", vehicle->id);
-
- binval = SPI_getbinval(*tuple, *tupdesc, vehicle_columns->capacity, &isnull);
- if (isnull)
- elog(ERROR, "capacity contains a null value");
-
- vehicle->capacity = DatumGetInt32(binval);
-
- PGR_DBG("capacity = %d\n", vehicle->capacity);
-}
-
-static int conn(int *SPIcode) {
- int res = 0;
-
- *SPIcode = SPI_connect();
-
- if (*SPIcode != SPI_OK_CONNECT) {
- elog(ERROR, "vrp: couldn't open a connection to SPI");
- res = -1;
- }
-
- return res;
-}
-
-static int prepare_query(Portal *SPIportal, char* sql) {
- int res = 0;
-
- void* SPIplan = SPI_prepare(sql, 0, NULL);
-
- if (SPIplan == NULL) {
- elog(ERROR, "vrp: couldn't create query plan via SPI");
- res = -1;
- }
-
- if ((*SPIportal = SPI_cursor_open(NULL, SPIplan, NULL, NULL, true)) == NULL) {
- elog(ERROR, "vrp: SPI_cursor_open('%s') returns NULL", sql);
- res = -1;
- }
-
- return res;
-}
-
-static int solve_vrp(char* orders_sql, char* vehicles_sql,
- char* dist_sql,
- int depot,
- vrp_result_element_t** path, size_t *path_count) {
- int SPIcode;
-
- Portal SPIportal_o;
- Portal SPIportal_v;
- Portal SPIportal_d;
- // Portal SPIportal_p;
-
- bool moredata = TRUE;
- size_t ntuples;
-
- size_t order_num;
- size_t vehicle_num;
- size_t dist_num;
-
- vrp_vehicles_t *vehicles = NULL;
- vehicle_columns_t vehicle_columns = {.vehicle_id = -1, .capacity = -1};
-
- vrp_orders_t *orders = NULL;
- order_columns_t order_columns = {.id = -1, .order_unit = -1, .open_time = -1, .close_time = -1, .service_time = -1, .x = -1, .y = -1};
-
- vrp_cost_element_t *costs = NULL;
- distance_columns_t distance_columns = {.src_id = -1, .dest_id = -1, .cost = -1, .distance = -1, .traveltime = -1};
-
- char *err_msg = NULL;
- int ret = -1;
-
- // int z = 0;
-
- // int tt, cc;
- // double dx, dy;
- // float fit = 0.0;
-
- int prep = -1, con = -1;
-
- // int total_tuples = 0;
- order_num = 0;
- vehicle_num = 0;
-
- PGR_DBG("start solve_vrp\n");
-
- // vrp_orders_t depot_ord = {id:0, order_id:depot, from:depot_point, to:depot_point};
- // orders = palloc(1 * sizeof(vrp_orders_t));
- // orders[0] = depot_ord;
-
- con = conn(&SPIcode);
-
- if (con < 0)
- return ret;
-
-
- // Fetching orders
-
- PGR_DBG("calling prepare_query for orders_sql");
-
- prep = prepare_query(&SPIportal_o, orders_sql);
-
- if (prep < 0)
- return ret;
-
- PGR_DBG("Query: %s\n", orders_sql);
- PGR_DBG("Query executed\n");
-
- PGR_DBG("Orders before: %lu\n", order_num);
-
- while (moredata == TRUE) {
- SPI_cursor_fetch(SPIportal_o, TRUE, TUPLIMIT);
-
- PGR_DBG("cursor fetched\n");
-
- if (order_columns.id == -1) {
- if (fetch_order_columns(SPI_tuptable, &order_columns) == -1)
- return finish(&SPIcode);
- }
-
- ntuples = SPI_processed;
-
- order_num += ntuples;
-
- PGR_DBG("Tuples: %lu\n", order_num);
-
- if (!orders)
- orders = palloc(order_num * sizeof(vrp_orders_t));
- else
- orders = repalloc(orders, (order_num + 1) * sizeof(vrp_orders_t));
-
- if (orders == NULL) {
- elog(ERROR, "Out of memory");
- return finish(&SPIcode);
- }
-
- if (ntuples > 0) {
- SPITupleTable *tuptable = SPI_tuptable;
- TupleDesc tupdesc = SPI_tuptable->tupdesc;
-
- PGR_DBG("Got tuple desc\n");
- size_t t;
- for (t = 0; t < ntuples; t++) {
- HeapTuple tuple = tuptable->vals[t];
- // PGR_DBG("Before order fetched [%i]\n", order_num - ntuples + t);
- fetch_order(&tuple, &tupdesc, &order_columns,
- &orders[order_num - ntuples + t], t);
-
- // &orders[t+1], t);
- PGR_DBG("Order fetched\n");
- }
-
- SPI_freetuptable(tuptable);
- } else {
- moredata = FALSE;
- }
- } // end of fetching orders
- // finish(&SPIcode_o);
- /*
- int o;
- for (o = 0; o<order_num+1;++o)
- {
- elog(NOTICE, "ORDERS[%i] = {id = %i, open = %i, close = %i, service = %i}", o, orders[o].id, orders[o].open_time, orders[o].close_time, orders[o].service_time);
- }
- */
- PGR_DBG("order_num = %lu", order_num);
-
- // qsort (orders, order_num+1, sizeof (vrp_orders_t), order_cmp);
-
-
- // Fetching vehicles
-
- moredata = TRUE;
- prep = prepare_query(&SPIportal_v, vehicles_sql);
-
- if (prep < 0)
- return ret;
-
- PGR_DBG("Query: %s\n", vehicles_sql);
- PGR_DBG("Query executed\n");
-
-
- while (moredata == TRUE) {
- SPI_cursor_fetch(SPIportal_v, TRUE, TUPLIMIT);
-
- if (vehicle_columns.vehicle_id == -1) {
- if (fetch_vehicle_columns(SPI_tuptable, &vehicle_columns) == -1)
- return finish(&SPIcode);
- }
-
-
- ntuples = SPI_processed;
-
- vehicle_num += ntuples;
-
- PGR_DBG("Tuples: %lu\n", vehicle_num);
-
- if (!vehicles)
- vehicles = palloc(vehicle_num * sizeof(vrp_vehicles_t));
- else
- vehicles = repalloc(vehicles, vehicle_num * sizeof(vrp_vehicles_t));
-
- if (vehicles == NULL) {
- elog(ERROR, "Out of memory");
- return finish(&SPIcode);
- }
-
- if (ntuples > 0) {
- SPITupleTable *tuptable = SPI_tuptable;
- TupleDesc tupdesc = SPI_tuptable->tupdesc;
-
- PGR_DBG("Got tuple desc\n");
-
- size_t t;
- for (t = 0; t < ntuples; t++) {
- HeapTuple tuple = tuptable->vals[t];
- PGR_DBG("Before vehicle fetched\n");
- fetch_vehicle(&tuple, &tupdesc, &vehicle_columns,
- &vehicles[vehicle_num - ntuples + t], t);
- PGR_DBG("Vehicle fetched\n");
- }
-
- SPI_freetuptable(tuptable);
- } else {
- moredata = FALSE;
- }
- } // end of fetching vehicles
- // finish(&SPIcode_v);
-
- // double dist[order_num*2+1][order_num*2+1];
-
- // Fetching distances
-
- dist_num = 0;
- moredata = TRUE;
- prep = prepare_query(&SPIportal_d, dist_sql);
-
- if (prep < 0)
- return ret;
-
- PGR_DBG("Query: %s\n", dist_sql);
- PGR_DBG("Query executed\n");
-
- while (moredata == TRUE) {
- SPI_cursor_fetch(SPIportal_d, TRUE, TUPLIMIT);
-
- if (distance_columns.src_id == -1) {
- if (fetch_distance_columns(SPI_tuptable, &distance_columns) == -1)
- return finish(&SPIcode);
- }
-
- ntuples = SPI_processed;
- dist_num += ntuples;
-
- PGR_DBG("Tuples: %lu\n", vehicle_num);
-
- if (!costs)
- costs = palloc(dist_num * sizeof(vrp_cost_element_t));
- else
- costs = repalloc(costs, dist_num * sizeof(vrp_cost_element_t));
-
- if (costs == NULL) {
- elog(ERROR, "Out of memory");
- return finish(&SPIcode);
- }
-
- if (ntuples > 0) {
- SPITupleTable *tuptable = SPI_tuptable;
- TupleDesc tupdesc = SPI_tuptable->tupdesc;
-
- PGR_DBG("Got tuple desc\n");
- size_t t;
- for (t = 0; t < ntuples; t++) {
- HeapTuple tuple = tuptable->vals[t];
- PGR_DBG("Before distance fetched\n");
- fetch_distance(&tuple, &tupdesc, &distance_columns,
- &costs[dist_num - ntuples + t], t);
- PGR_DBG("Distance fetched\n");
- }
-
- SPI_freetuptable(tuptable);
- } else {
- moredata = FALSE;
- }
- } // end of fetching distances
-
-
- PGR_DBG("Calling vrp\n");
-
- profstop("extract", prof_extract);
- profstart(prof_vrp);
-
- PGR_DBG("Total orders: %lu\n", order_num);
- PGR_DBG("Total vehicles: %lu\n", vehicle_num);
-
-
- // qsort (orders, order_num+1, sizeof (vrp_orders_t), order_cmp_asc);
-
-
-#ifdef DEBUG
- int o;
- for (o = 0; o < order_num + 1; ++o) {
- PGR_DBG("ORDERS[%i] = {id = %i, open = %i, close = %i, service = %i}", o, orders[o].id, orders[o].open_time, orders[o].close_time, orders[o].service_time);
- }
-#endif
-
-
-
- // itinerary = (vrp_result_element_t *)palloc(sizeof(vrp_result_element_t)*(order_num*2-1)*vehicle_num);
-
- PGR_DBG("Calling vrp solver\n");
- // elog(NOTICE, "Calling find_vrp_solution: vehicles: %i, orders: %i, dists: %i, depot: %i", vehicle_num, order_num, dist_num, depot);
-
- ret = find_vrp_solution(vehicles, vehicle_num,
- orders, order_num,
- costs, dist_num,
- depot,
- path, path_count, &err_msg);
-
- // ret = -1;
- // elog(NOTICE, "vrp solved! ret: %d, path_count: %d", ret, *path_count);
- // int pp;
- /*
- for (pp = 0; pp < *path_count; pp++)
- {
- elog(NOTICE, "Row: %d: %d %d %d %d %d", pp, (*path)[pp].order_id, (*path)[pp].order_pos, (*path)[pp].vehicle_id, (*path)[pp].arrival_time, (*path)[pp].depart_time);
- }
- */
- PGR_DBG("vrp solved! ret: %d, path_count: %lu", ret, *path_count);
- // PGR_DBG("Score: %f\n", fit);
-
- profstop("vrp", prof_vrp);
- profstart(prof_store);
-
- PGR_DBG("Profile changed and ret is %i", ret);
-
- if (ret < 0) {
- // elog(ERROR, "Error computing path: %s", err_msg);
- ereport(ERROR, (errcode(ERRCODE_E_R_E_CONTAINING_SQL_NOT_PERMITTED), errmsg("Error computing path: %s", err_msg)));
- }
-
- // pfree(vehicles);
- // pfree(orders);
- return finish(&SPIcode);
-}
-
-PG_FUNCTION_INFO_V1(vrp);
-PGDLLEXPORT Datum
-vrp(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
- vrp_result_element_t *path;
-
- /* stuff done only on the first call of the function */
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- // int path_count;
- // int ret = -1;
- size_t path_count = 0;
-
- // XXX profiling messages are not thread safe
- profstart(prof_total);
- profstart(prof_extract);
-
- /* create a function context for cross-call persistence */
- funcctx = SRF_FIRSTCALL_INIT();
-
- /* switch to memory context appropriate for multiple function calls */
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- // path = (vrp_result_element_t *)palloc(sizeof(vrp_result_element_t)*(MAX_ORDERS-1)*2*MAX_VEHICLES);
-
-
- PGR_DBG("Calling solve_vrp ...");
-
- // ret =
- solve_vrp( // text_to_cstring(PG_GETARG_TEXT_P(0)), // points sql
- text_to_cstring(PG_GETARG_TEXT_P(0)), // orders sql
- text_to_cstring(PG_GETARG_TEXT_P(1)), // vehicles sql
- text_to_cstring(PG_GETARG_TEXT_P(2)), // distances query
- PG_GETARG_INT32(3), // depot id
- &path, &path_count);
-
- PGR_DBG("Back from solve_vrp, path_count:%lu", path_count);
- // elog(NOTICE, "Back from solve_vrp, path_count:%d", path_count);
-
- /* total number of tuples to be returned */
- // PGR_DBG("Counting tuples number\n");
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = path_count;
-#else
- funcctx->max_calls = (uint32_t)path_count;
-#endif
- funcctx->user_fctx = path;
-
- /* Build a tuple descriptor for our result type */
- if (get_call_result_type(fcinfo, NULL, &tuple_desc) != TYPEFUNC_COMPOSITE)
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
-
- funcctx->tuple_desc = BlessTupleDesc(tuple_desc);
-
- /*
- * generate attribute metadata needed later to produce tuples from raw
- * C strings
- */
- // attinmeta = TupleDescGetAttInMetadata(tuple_desc);
- // funcctx->attinmeta = attinmeta;
-
- MemoryContextSwitchTo(oldcontext);
- // elog(NOTICE, "table formed");
- }
-
- /* stuff done on every call of the function */
- funcctx = SRF_PERCALL_SETUP();
-
- tuple_desc = funcctx->tuple_desc;
- path = (vrp_result_element_t *)funcctx->user_fctx;
-
- // elog(NOTICE, "Point 1");
- // PGR_DBG("Trying to allocate some memory\n");
- // PGR_DBG("funcctx->call_cntr = %i, max_calls = %i\n", funcctx->call_cntr, max_calls);
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- /* do when there is more left to send */
- HeapTuple tuple;
- Datum result;
- Datum *values;
- char* nulls;
-
- values = palloc(5 * sizeof(Datum));
- nulls = palloc(5 * sizeof(char));
-
- values[0] = Int32GetDatum(path[funcctx->call_cntr].order_id); // order id
- nulls[0] = ' ';
- values[1] = Int32GetDatum(path[funcctx->call_cntr].order_pos); // order pos
- nulls[1] = ' ';
- values[2] = Int32GetDatum(path[funcctx->call_cntr].vehicle_id); // vehicle id
- nulls[2] = ' ';
- values[3] = Int32GetDatum(path[funcctx->call_cntr].arrival_time); // arrival time
- nulls[3] = ' ';
- // values[4] = TimeTzADTPGetDatum(&path[funcctx->call_cntr].time);
- values[4] = Int32GetDatum(path[funcctx->call_cntr].depart_time); // departure time
- nulls[4] = ' ';
-
- // PGR_DBG("Heap making\n");
- // elog(NOTICE, "Result %d %d %d", funcctx->call_cntr, path[funcctx->call_cntr].order_id, max_calls);
- tuple = heap_form_tuple(tuple_desc, values, nulls);
-
- // PGR_DBG("Datum making\n");
-
- /* make the tuple into a datum */
- result = HeapTupleGetDatum(tuple);
-
- // PGR_DBG("Trying to free some memory\n");
-
- /* clean up */
- pfree(values);
- pfree(nulls);
-
-
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- /* do when there is no more left */
-
- PGR_DBG("Ending function\n");
- profstop("store", prof_store);
- profstop("total", prof_total);
- PGR_DBG("Profiles stopped\n");
-
- PGR_DBG("Itinerary cleared\n");
-
- SRF_RETURN_DONE(funcctx);
- }
-}
diff --git a/src/vrp_basic/src/VRP.h b/src/vrp_basic/src/VRP.h
deleted file mode 100644
index 43c3153..0000000
--- a/src/vrp_basic/src/VRP.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2013 Khondoker Md. Razequl Islam
-ziboncsedu at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_VRP_BASIC_SRC_VRP_H_
-#define SRC_VRP_BASIC_SRC_VRP_H_
-
-#include <stddef.h>
-
-typedef struct vrp_vehicles {
- int id;
- int capacity;
-} vrp_vehicles_t;
-
-
-typedef struct vrp_orders {
- int id;
- int order_unit;
- int open_time;
- int close_time;
- int service_time;
-
- double x;
- double y;
-} vrp_orders_t;
-
-typedef struct vrp_cost_element {
- int src_id;
- int dest_id;
- double cost;
- double distance;
- double traveltime;
-} vrp_cost_element_t;
-
-
-typedef struct vrp_result_element {
- int order_id;
- int order_pos;
- int vehicle_id;
- int arrival_time;
- int depart_time;
-} vrp_result_element_t;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int find_vrp_solution(vrp_vehicles_t *vehicles, size_t vehicle_count,
- vrp_orders_t *orders, size_t order_count,
- vrp_cost_element_t *costmatrix, size_t cost_count,
- int depot_id,
- vrp_result_element_t **result, size_t *result_count, char **err_msg);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_VRP_BASIC_SRC_VRP_H_
diff --git a/src/vrp_basic/src/VRP_Solver.cpp b/src/vrp_basic/src/VRP_Solver.cpp
deleted file mode 100644
index a9ef1d1..0000000
--- a/src/vrp_basic/src/VRP_Solver.cpp
+++ /dev/null
@@ -1,887 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2013 Khondoker Md. Razequl Islam
-ziboncsedu at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-#include "./VRP_Solver.h"
-#include <algorithm>
-#include <math.h>
-#include <utility>
-#include <map>
-#include <set>
-#include <string>
-#include <vector>
-
-#undef PGR_LOGGER_ON
-#define PGR_LOGGER_LOC
-#define PGR_LOGGER_FILE "/tmp/vrp-debug.log"
-#include "../../common/src/pgr_logger.h"
-
-#define DOUBLE_MAX 1e50
-
-bool operator != (const CVehicleInfo& cur, const CVehicleInfo& that) {
- return(cur.m_iVehicleId != that.m_iVehicleId);
-}
-
-bool operator == (const CTourInfo& cur, const CTourInfo& that) {
- if (cur.m_vehicleInfo != that.m_vehicleInfo)
- return false;
- if (cur.m_viOrderIds.size() != that.m_viOrderIds.size())
- return false;
- return std::equal(cur.m_viOrderIds.begin(), cur.m_viOrderIds.end(), that.m_viOrderIds.begin());
-}
-
-bool operator == (const CMoveInfo& cur, const CMoveInfo& that) {
- if (!(cur.m_vInitialTour == that.m_vInitialTour))
- return false;
- if (!(cur.m_vModifiedTour == that.m_vModifiedTour))
- return false;
- return true;
-}
-
-
-
-CVehicleInfo::CVehicleInfo() {
- m_iCurrentLoad = 0;
-}
-CVehicleInfo::~CVehicleInfo() {
-}
-
-bool CVehicleInfo::loadUnit(int lUnit) {
- if (m_iCurrentLoad + lUnit > m_iCapacity)
- return false;
- m_iCurrentLoad += lUnit;
- return true;
-}
-
-COrderInfo::COrderInfo() { }
-COrderInfo::~COrderInfo() { }
-
-CDepotInfo::CDepotInfo() { }
-CDepotInfo::~CDepotInfo() { }
-
-CTourInfo::CTourInfo() {
- m_dTotalCost = 0.0;
- m_dTotalDistance = 0.0;
- m_dTotalTraveltime = 0.0;
-}
-CTourInfo::~CTourInfo() { }
-
-bool CTourInfo::insertOrder(int orderId, int pos) {
- m_viOrderIds.insert(m_viOrderIds.begin() + pos, orderId);
- return true;
-}
-
-int CTourInfo::getRemainingCapacity() {
- return(m_vehicleInfo.getRemainingCapacity());
-}
-
-bool CTourInfo::removeOrder(int pos) {
- m_viOrderIds.erase(m_viOrderIds.begin() + pos);
- return true;
-}
-
-void CTourInfo::updateCost(double cost, double distance, double travelTime) {
- m_dTotalCost = cost;
- m_dTotalDistance = distance;
- m_dTotalTraveltime = travelTime;
-}
-
-CSolutionInfo::CSolutionInfo() { }
-CSolutionInfo::~CSolutionInfo() { }
-
-void CSolutionInfo::replaceTour(CTourInfo curTour) {
- unsigned int i;
- for (i = 0; i < m_vtourAll.size(); i++) {
- if (m_vtourAll[i].getVehicleId() == curTour.getVehicleId()) {
- m_vtourAll[i] = curTour;
- return;
- }
- }
- return;
-}
-
-void CSolutionInfo::replaceTourAt(int index, CTourInfo curTour) {
- if (index < 0 || (unsigned int) index >= m_vtourAll.size())
- return;
- m_vtourAll[index] = curTour;
-}
-
-bool CSolutionInfo::init(std::vector<int> vecOrder, int iTotalOrder, std::vector<int> vecVehicle) {
- m_vUnservedOrderId = vecOrder;
- m_iTotalOrders = iTotalOrder;
- m_vUnusedVehicles = vecVehicle;
-
- m_vtourAll.clear();
- m_iVehicleUsed = 0;
- m_iOrdersServed = 0;
- m_iTotalOrders = 0;
- m_dTotalCost = 0;
- m_dTotalDistance = 0;
- m_dTotalTravelTime = 0;
- return true;
-}
-
-bool CSolutionInfo::addTour(CTourInfo& tour) {
- m_vtourAll.push_back(tour);
- int vid = tour.getVehicleId();
- std::vector<int>::iterator it;
- it = std::find(m_vUnusedVehicles.begin(), m_vUnusedVehicles.end(), vid);
- if (it != m_vUnusedVehicles.end()) {
- m_vUnusedVehicles.erase(it);
- }
- m_iVehicleUsed++;
- m_dTotalDistance += tour.getDistance();
- m_dTotalTravelTime += tour.getTravelTime();
- m_dTotalCost += tour.getCost();
-
- std::vector<int> vecOrders = tour.getOrderVector();
-
- m_iOrdersServed += static_cast<int>(vecOrders.size());
-
- for (const auto &order : vecOrders) {
- int oid = order;
- it = std::find(m_vUnservedOrderId.begin(), m_vUnservedOrderId.end(), oid);
- if (it != m_vUnservedOrderId.end()) {
- m_vUnservedOrderId.erase(it);
- }
- }
-
- return true;
-}
-
-CMoveInfo::CMoveInfo() { }
-CMoveInfo::~CMoveInfo() { }
-
-void CMoveInfo::setInitialTour(CTourInfo tourData) {
- m_vInitialTour.clear();
- m_vInitialTour.push_back(tourData);
-}
-
-void CMoveInfo::setInitialTour(CTourInfo tourData1, CTourInfo tourData2) {
- m_vInitialTour.clear();
- m_vInitialTour.push_back(tourData1);
- m_vInitialTour.push_back(tourData2);
-}
-
-void CMoveInfo::setModifiedTour(CTourInfo tourData) {
- m_vModifiedTour.clear();
- m_vModifiedTour.push_back(tourData);
-}
-
-void CMoveInfo::setModifiedTour(CTourInfo tourData1, CTourInfo tourData2) {
- m_vModifiedTour.clear();
- m_vModifiedTour.push_back(tourData1);
- m_vModifiedTour.push_back(tourData2);
-}
-
-void CMoveInfo::getInitialTour(CTourInfo &tourData) {
- tourData = m_vInitialTour[0];
-}
-
-void CMoveInfo::getInitialTour(CTourInfo &tourData1, CTourInfo &tourData2) {
- tourData1 = m_vInitialTour[0];
- tourData2 = m_vInitialTour[1];
-}
-
-bool CMoveInfo::getModifiedTourAt(int index, CTourInfo& tourInfo) {
- if (index < 0 || (unsigned int) index >= m_vModifiedTour.size())
- return false;
- tourInfo = m_vModifiedTour[index];
- return true;
-}
-
-
-
-CVRPSolver::CVRPSolver() {
- // set a seed for the random number generator
- // so it will generate consistent results for the same input
- // otherwise we can not test it :(
- srand(1726354);
-}
-CVRPSolver::~CVRPSolver() { }
-
-bool CVRPSolver::solveVRP(std::string& strError) {
- // if (!m_bIsReadyToSolve)
- // {
- // strError = "Scenario is not ready to solve. Configure all parameter";
- // return false;
- // }
- PGR_LOG("Inside Solve VRP");
- std::vector<int> vecOrders, vecVehicles;
-
- for(auto &rule:m_vOrderInfos)
- {
- vecOrders.push_back(rule.getOrderId());
- }
-
- for (auto &rule:m_vVehicleInfos) {
- vecVehicles.push_back(rule.getId());
- }
-
- m_solutionFinal.init(vecOrders, static_cast<int>(vecOrders.size()), vecVehicles);
- PGR_LOG("After init solution");
- int iAttemptCount = 0;
- while (iAttemptCount < MAXIMUM_TRY) {
- bool bUpdateFound = false;
- CSolutionInfo initialSolution = generateInitialSolution();
- PGR_LOG("After Generate initial Solution");
- iAttemptCount++;
- bUpdateFound = updateFinalSolution(initialSolution);
- PGR_LOG("After update final Solution");
- bool bUpdateFound2 = tabuSearch(initialSolution);
- PGR_LOG("After Tabu Search");
- if ((bUpdateFound == true) || (bUpdateFound2 == true)) {
- iAttemptCount = 0;
- }
- }
- m_bIsSolutionReady = true;
- strError += " ";
- return true;
-}
-
-CSolutionInfo CVRPSolver::generateInitialSolution() {
- CSolutionInfo initialSolution;
- PGR_LOG("Inside gen ini sol");
- std::vector<int> vecOrders, vecVehicles;
- for (unsigned int i = 0; i < m_vOrderInfos.size(); i++) {
- vecOrders.push_back(m_vOrderInfos[i].getOrderId());
- }
-
- for (unsigned int i = 0; i < m_vVehicleInfos.size(); i++) {
- vecVehicles.push_back(m_vVehicleInfos[i].getId());
- }
-
- initialSolution.init(vecOrders, static_cast<int>(vecOrders.size()), vecVehicles);
-
- int iUnusedVehicles = static_cast<int>(initialSolution.getUnusedVehicleCount());
- int iUnservedOrders = static_cast<int>(initialSolution.getUnservedOrderCount()); // m_viUnservedOrderIndex.size();
- PGR_LOG("before while");
- while (iUnusedVehicles && iUnservedOrders) {
- CTourInfo curTour;
-
- int vehicleIndex = rand() % iUnusedVehicles--;
- int vehicleInd = m_mapVehicleIdToIndex[initialSolution.getUnusedVehicleAt(vehicleIndex)];
- curTour.setVehicleInfo(m_vVehicleInfos[vehicleInd]); // m_viUnusedVehicleIndex[vehicleIndex]
- initialSolution.removeVehicle(vehicleIndex);
-
- curTour.setStartDepot(m_vDepotInfos[0].getDepotId());
- curTour.setEndDepot(m_vDepotInfos[0].getDepotId());
-
- // use a random seed to start to tour. (we can use better approach in future)
-
- bool insertAvailable = true;
-
- while (insertAvailable) {
- insertAvailable = false;
- std::pair<int, int> PotentialInsert; // first = insert_index, second = removed_order_index;
- std::pair<int, double> bestInsert = std::make_pair(-1, DOUBLE_MAX); // first = order_insert_index, second = cost;
-
- for (int i = 0; i < iUnservedOrders; ++i) {
- int orderInd = m_mapOrderIdToIndex[initialSolution.getUnservedOrderAt(i)];
- COrderInfo curOrder = m_vOrderInfos[orderInd];
- std::pair<int, double> curInsert = getPotentialInsert(curTour, curOrder);
-
- if (curInsert.second < bestInsert.second) {
- insertAvailable = true;
- bestInsert = curInsert;
- PotentialInsert = std::make_pair(curInsert.first, i);
- }
- }
- if (insertAvailable) {
- if (insertOrder(curTour, initialSolution.getUnservedOrderAt(PotentialInsert.second), PotentialInsert.first)) {
- iUnservedOrders--;
- initialSolution.removeOrder(PotentialInsert.second);
- }
- }
- }
-
- initialSolution.addTour(curTour);
- }
-
- return initialSolution;
-}
-
-bool CVRPSolver::updateFinalSolution(CSolutionInfo& curSolution) {
- bool callUpdate = false;
- if (curSolution.getOrderServed() > m_solutionFinal.getOrderServed()) {
- callUpdate = true;
- } else if (curSolution.getOrderServed() == m_solutionFinal.getOrderServed()) {
- if (curSolution.getTotalCost() < m_solutionFinal.getTotalCost()) {
- callUpdate = true;
- } else if (curSolution.getTotalCost() == m_solutionFinal.getTotalCost()) {
- if (curSolution.getTotalTravelTime() < m_solutionFinal.getTotalTravelTime()) {
- callUpdate = true;
- } else if (curSolution.getTotalTravelTime() == m_solutionFinal.getTotalTravelTime()) {
- if (curSolution.getTotalDistance() < m_solutionFinal.getTotalDistance()) {
- callUpdate = true;
- }
- }
- }
- }
- if (callUpdate) {
- // m_iStepsSinceLastSolution = 0;
- m_solutionFinal = curSolution;
-
- // clear map and delete objects
- // m_mpTabuCount.clear();
- // for (std::map< CVRPTWMove*, int >::iterator it = m_mpMoveFrequency.begin();it!= m_mpMoveFrequency.end();++it)
- // {
- // delete (*it).first;
- // }
- // m_mpMoveFrequency.clear();
- return true;
- }
- return false;
-}
-
-std::pair<int, double> CVRPSolver::getPotentialInsert(CTourInfo& curTour, COrderInfo& curOrder) {
- std::pair<int, double> bestInsert = std::make_pair(-1, DOUBLE_MAX);
- if (curOrder.getOrderUnit() > curTour.getRemainingCapacity()) {
- return bestInsert;
- }
- // check if ith position insert is fisible.
- std::vector<int> vecOrderId = curTour.getOrderVector();
- for (unsigned int i = 0; i <= vecOrderId.size(); ++i) {
- CostPack costToOrder, costFromOrder;
-
- if (!i) {
- costToOrder = getDepotToOrderCost(curTour.getStartDepot(), curOrder.getOrderId());
- } else {
- costToOrder = getOrderToOrderCost(vecOrderId[i-1], curOrder.getOrderId());
- }
-
- double dArrivalTime = costToOrder.traveltime + curTour.getStartTime(i);
-
- if (dArrivalTime > curOrder.getCloseTime()) {
- continue;
- }
-
- if (i == vecOrderId.size()) {
- costFromOrder = getOrderToDepotCost(curOrder.getOrderId(), curTour.getEndDepot());
- } else {
- costFromOrder = getOrderToOrderCost(curOrder.getOrderId(), vecOrderId[i]);
- }
-
- dArrivalTime += curOrder.getServiceTime() + costFromOrder.traveltime;
-
- if (i < vecOrderId.size() && dArrivalTime > m_vOrderInfos[m_mapOrderIdToIndex[vecOrderId[i]]].getCloseTime()) {
- continue;
- }
-
- CostPack totalCost = getCostForInsert(curTour, curOrder, i);
-
- if (totalCost.cost < bestInsert.second) {
- bestInsert = std::make_pair(i, totalCost.cost);
- }
- }
- return bestInsert;
-}
-
-bool CVRPSolver::tabuSearch(CSolutionInfo& curSolution) {
- m_bFoundOptimal = false;
- updateFinalSolution(curSolution);
-
- int numberOfSearch = 0;
- m_iGeneratedSolutionCount = 0;
- m_iStepsSinceLastSolution = 0;
-
- while (numberOfSearch < TOTAL_NUMBER_OF_SEARCH) {
- // applyBestMoveInCurrentSolution(curSolution, identifyPotentialMove(curSolution) );
- insertUnservedOrders(curSolution);
- // attemptFeasibleNodeExchange(curSolution);
- attemptVehicleExchange(curSolution);
- ++numberOfSearch;
- }
- return false;
-}
-
-void CVRPSolver::applyBestMoveInCurrentSolution(CSolutionInfo& curSolution, CMoveInfo& bestMove) {
- ++m_iGeneratedSolutionCount;
- ++m_iStepsSinceLastSolution;
-
- updateTabuCount(bestMove);
-
- int totalTour = static_cast<int>(bestMove.getModifiedTourCount());
- for (int i = 0; i < totalTour; ++i) {
- CTourInfo tourInfo;
- bool bIsValid = bestMove.getModifiedTourAt(i, tourInfo);
-
- if (bIsValid)
- curSolution.replaceTour(tourInfo);
- }
- updateFinalSolution(curSolution);
-}
-
-void CVRPSolver::insertUnservedOrders(CSolutionInfo& curSolution) {
- ++m_iGeneratedSolutionCount;
- ++m_iStepsSinceLastSolution;
- bool insertAvailable = true;
- CMoveInfo curMove;
- int totalUnservedOrder = static_cast<int>(m_vOrderInfos.size() - curSolution.getOrderServed());
-
- while (insertAvailable && totalUnservedOrder > 0) {
- int insertTourId = -1;
- insertAvailable = false;
- int totalTour = static_cast<int>(curSolution.getTourInfoVector().size());
- std::pair<int, int> PotentialInsert; // first = insert_index, second = removed_customer_index;
- std::pair<int, double> bestInsert = std::make_pair(-1, DOUBLE_MAX); // first = customer_insert_index, second = cost;
-
- for (int j = 0; j < totalTour; ++j) {
- CTourInfo curTour = curSolution.getTour(j);
- curMove.setInitialTour(curTour);
-
- for (int i = 0; i < totalUnservedOrder; ++i) {
- int ordIndex = m_mapOrderIdToIndex[curSolution.getUnservedOrderAt(i)];
- COrderInfo curOrder = m_vOrderInfos[ordIndex];
- std::pair<int, double> curInsert = getPotentialInsert(curTour, curOrder);
-
- insertOrder(curTour, i, curInsert.first);
- curMove.setModifiedTour(curTour);
- curMove.getInitialTour(curTour);
-
- // check if current move is tabu.
- if (isTabuMove(curMove)) {
- continue;
- }
-
- if (curInsert.second < bestInsert.second) {
- insertTourId = j;
- insertAvailable = true;
- bestInsert = curInsert;
- PotentialInsert = std::make_pair(curInsert.first, i);
- }
- }
- }
- if (insertAvailable) {
- totalUnservedOrder--;
- curMove.setInitialTour(curSolution.getTour(insertTourId));
-
- addOrderAtTour(curSolution, insertTourId,
- PotentialInsert.first,
- PotentialInsert.second);
-
- curMove.setModifiedTour(curSolution.getTour(insertTourId));
- this->updateTabuCount(curMove);
- this->updateFinalSolution(curSolution); // this->evaluateCurrentSolution();
- }
- }
-}
-
-bool CVRPSolver::addDepot(CDepotInfo depotInfo) {
- int id = depotInfo.getDepotId();
- if (m_mapDepotIdToIndex.find(id) != m_mapDepotIdToIndex.end())
- return false;
- m_mapDepotIdToIndex.insert(std::make_pair(id, m_vDepotInfos.size()));
- m_vDepotInfos.push_back(depotInfo);
-
- return true;
-}
-
-bool CVRPSolver::addOrder(COrderInfo orderInfo) {
- int id = orderInfo.getOrderId();
- if (m_mapOrderIdToIndex.find(id) != m_mapOrderIdToIndex.end()) {
- return false;
- }
- int index = static_cast<int>(m_vOrderInfos.size());
- m_mapOrderIdToIndex.insert(std::make_pair(id, index));
- m_vOrderInfos.push_back(orderInfo);
- m_viUnservedOrderIndex.push_back(index);
- return true;
-}
-
-bool CVRPSolver::addVehicle(CVehicleInfo vehicleInfo) {
- int id = vehicleInfo.getId();
- if (m_mapVehicleIdToIndex.find(id) != m_mapVehicleIdToIndex.end()) {
- return false;
- }
- int index = static_cast<int>(m_vVehicleInfos.size());
- m_mapVehicleIdToIndex.insert(std::make_pair(id, index));
- m_vVehicleInfos.push_back(vehicleInfo);
- m_viUnusedVehicleIndex.push_back(index);
- return true;
-}
-
-bool CVRPSolver::addDepotToOrderCost(int depotId, int orderId, CostPack cost) {
- PII depo_order = std::make_pair(depotId, orderId);
- if (m_mapDepotToOrderrCost.find(depo_order) != m_mapDepotToOrderrCost.end()) {
- return false;
- }
- m_mapDepotToOrderrCost.insert(make_pair(depo_order, cost));
- return true;
-}
-
-bool CVRPSolver::addOrderToDepotCost(int depotId, int orderId, CostPack cost) {
- PII depo_order = std::make_pair(orderId, depotId);
- if (m_mapOrderToDepotCost.find(depo_order) != m_mapOrderToDepotCost.end()) {
- return false;
- }
- m_mapOrderToDepotCost.insert(std::make_pair(depo_order, cost));
- return true;
-}
-
-bool CVRPSolver::addOrderToOrderCost(int firstOrder, int secondOrder, CostPack cost) {
- PII order_order = std::make_pair(firstOrder, secondOrder);
- if (m_mapOrderToOrderCost.find(order_order) != m_mapOrderToOrderCost.end()) {
- return false;
- }
- m_mapOrderToOrderCost.insert(std::make_pair(order_order, cost));
- return true;
-}
-
-bool CVRPSolver::getSolution(CSolutionInfo& solution, std::string& strError) {
- if (m_bIsSolutionReady == true) {
- solution = m_solutionFinal;
- return true;
- } else {
- bool ret = solveVRP(strError);
- if (ret == true) {
- solution = m_solutionFinal;
- return true;
- }
- return false;
- }
-}
-
-CostPack CVRPSolver::getDepotToOrderCost(int depotId, int orderId) {
- PII depo_order = std::make_pair(depotId, orderId);
-
- if (m_mapDepotToOrderrCost.find(depo_order) != m_mapDepotToOrderrCost.end()) {
- return(m_mapDepotToOrderrCost[depo_order]);
- }
- CostPack ret;
- ret.cost = ret.distance = ret.traveltime = 1e15;
- return ret;
-}
-
-CostPack CVRPSolver::getOrderToOrderCost(int orderId1, int orderId2) {
- PII order_order = std::make_pair(orderId1, orderId2);
-
- if (m_mapOrderToOrderCost.find(order_order) != m_mapOrderToOrderCost.end()) {
- return(m_mapOrderToOrderCost[order_order]);
- }
- CostPack ret;
- ret.cost = ret.distance = ret.traveltime = 1e15;
- return ret;
-}
-
-
-CostPack CVRPSolver::getOrderToDepotCost(int depotId, int orderId) {
- PII depo_order = std::make_pair(orderId, depotId);
-
- if (m_mapOrderToDepotCost.find(depo_order) != m_mapOrderToDepotCost.end()) {
- return(m_mapOrderToDepotCost[depo_order]);
- }
- CostPack ret;
- ret.cost = ret.distance = ret.traveltime = 1e15;
- return ret;
-}
-
-bool CVRPSolver::insertOrder(CTourInfo& tourInfo, int orderId, int pos) {
- if (pos < 0 || (unsigned int) pos > tourInfo.getOrderVector().size())
- return false;
-
- int orderIndex = m_mapOrderIdToIndex[orderId];
- if (!tourInfo.getVehicleInfo().loadUnit(m_vOrderInfos[orderIndex].getOrderUnit()))
- return false;
- tourInfo.insertOrder(orderId, pos);
-
- if (!updateTourCosts(tourInfo)) {
- tourInfo.removeOrder(pos);
- return false;
- }
-
- return true;
-}
-
-bool CVRPSolver::updateTourCosts(CTourInfo& tourInfo) {
- std::vector<int> vecOrderId = tourInfo.getOrderVector();
- std::vector<int> vecStartTimes;
-
- double dCost, dDistance, dTravelTime;
- dCost = dDistance = dTravelTime = 0.0;
-
- CostPack cPack = getDepotToOrderCost(tourInfo.getStartDepot(), vecOrderId[0]);
-
- dCost += cPack.cost;
- dDistance += cPack.distance;
-
- int ind = m_mapOrderIdToIndex[vecOrderId[0]];
- vecStartTimes.push_back(0);
-
- if (dTravelTime + cPack.traveltime > m_vOrderInfos[ind].getCloseTime())
- return false;
-
- dTravelTime = (std::max)(dTravelTime + cPack.traveltime + m_vOrderInfos[ind].getServiceTime(),
- static_cast<double>(m_vOrderInfos[ind].getOpenTime() + m_vOrderInfos[ind].getServiceTime()));
- vecStartTimes.push_back(static_cast<int>(ceil(dTravelTime)));
-
- unsigned int i;
- for (i = 1; i < vecOrderId.size(); i++) {
- cPack = getOrderToOrderCost(vecOrderId[i - 1], vecOrderId[i]);
- dCost += cPack.cost;
- dDistance += cPack.distance;
-
- ind = m_mapOrderIdToIndex[vecOrderId[i]];
-
- if (dTravelTime + cPack.traveltime > m_vOrderInfos[ind].getCloseTime())
- return false;
-
- dTravelTime = (std::max)(dTravelTime + cPack.traveltime + m_vOrderInfos[ind].getServiceTime(),
- static_cast<double>(m_vOrderInfos[ind].getOpenTime() + m_vOrderInfos[ind].getServiceTime()));
-
- vecStartTimes.push_back(static_cast<int>(ceil(dTravelTime)));
- }
-
- cPack = getOrderToDepotCost(vecOrderId[i - 1], tourInfo.getEndDepot());
- dCost += cPack.cost;
- dDistance += cPack.distance;
-
- dTravelTime += cPack.traveltime;
-
- vecStartTimes.push_back(static_cast<int>(ceil(dTravelTime)));
- ind = m_mapDepotIdToIndex[tourInfo.getEndDepot()];
- if (dTravelTime > m_vDepotInfos[ind].getCloseTime())
- return false;
-
- tourInfo.updateCost(dCost, dDistance, dTravelTime);
-
- tourInfo.setStartTime(vecStartTimes);
-
- return true;
-}
-
-bool CVRPSolver::addOrderAtTour(CSolutionInfo &solutionInfo, int tourIndex, int insertIndex, int orderIndex) {
- return(insertOrder(solutionInfo.getTour(tourIndex), m_vOrderInfos[orderIndex].getOrderId(), insertIndex));
-}
-
-CostPack CVRPSolver::getCostForInsert(CTourInfo& curTour, COrderInfo& curOrder, int pos) {
- std::vector<int> vecOrderId = curTour.getOrderVector();
-
- vecOrderId.insert(vecOrderId.begin() + pos, curOrder.getOrderId());
- double dCost, dDistance, dTravelTime;
- dCost = dDistance = dTravelTime = 0.0;
- CostPack costRet;
-
- costRet.cost = INF;
- costRet.distance = INF;
- costRet.traveltime = INF;
-
- CostPack cPack = getDepotToOrderCost(curTour.getStartDepot(), vecOrderId[0]);
-
- dCost += cPack.cost;
- dDistance += cPack.distance;
-
- int ind = m_mapOrderIdToIndex[vecOrderId[0]];
-
- if (dTravelTime + cPack.traveltime > m_vOrderInfos[ind].getCloseTime())
- return costRet;
-
- dTravelTime = (std::max)(dTravelTime + cPack.traveltime + m_vOrderInfos[ind].getServiceTime(),
- static_cast<double>(m_vOrderInfos[ind].getOpenTime() + m_vOrderInfos[ind].getServiceTime()));
-
- unsigned int i;
- for (i = 1; i < vecOrderId.size(); i++) {
- cPack = getOrderToOrderCost(vecOrderId[i - 1], vecOrderId[i]);
- dCost += cPack.cost;
- dDistance += cPack.distance;
-
- ind = m_mapOrderIdToIndex[vecOrderId[i]];
-
- if (dTravelTime + cPack.traveltime > m_vOrderInfos[ind].getCloseTime())
- return costRet;
-
- dTravelTime = (std::max)(dTravelTime + cPack.traveltime + m_vOrderInfos[ind].getServiceTime(),
- static_cast<double>(m_vOrderInfos[ind].getOpenTime() + m_vOrderInfos[ind].getServiceTime()));
- }
-
- cPack = getOrderToDepotCost(vecOrderId[i - 1], curTour.getEndDepot());
- dCost += cPack.cost;
- dDistance += cPack.distance;
-
- dTravelTime += cPack.traveltime;
-
- ind = m_mapDepotIdToIndex[curTour.getEndDepot()];
- if (dTravelTime > m_vDepotInfos[ind].getCloseTime())
- return costRet;
-
- costRet.cost = dCost - curTour.getCost();
- costRet.distance = dDistance - curTour.getDistance();
- costRet.traveltime = dTravelTime - curTour.getTravelTime();
-
- return costRet;
-}
-
-void CVRPSolver::attemptVehicleExchange(CSolutionInfo& solutionInfo) {
- ++m_iGeneratedSolutionCount;
- ++m_iStepsSinceLastSolution;
- CMoveInfo curMove;
- CMoveInfo bestMove;
-
- int bestFreeCapacity = 0;
- std::pair<int, int> bestSwapIndex;
- int totalTour = static_cast<int>(solutionInfo.getTourCount());
-
- for (int i = 0; i < totalTour; ++i) {
- CTourInfo firstTour = solutionInfo.getTour(i);
- int firstTourLoad = firstTour.getVehicleInfo().getCurrentLoad();
- int firstVehicleCapacity = firstTour.getVehicleInfo().getCapacity();
-
- for (int j = i + 1; j < totalTour; ++j) {
- CTourInfo secondTour = solutionInfo.getTour(j);
- curMove.setInitialTour(firstTour, secondTour);
-
- int FirstTourRemainingCapacity = firstVehicleCapacity - secondTour.getVehicleInfo().getCurrentLoad();
-
- int SecondTourRemainingCapacity = secondTour.getVehicleInfo().getCapacity() - firstTourLoad;
-
- // int prevFreeCapacity = max(secondTour.getRemainingCapacity(), firstTour.getRemainingCapacity() );
-
- int curFreeCapacity = (std::max)(FirstTourRemainingCapacity, SecondTourRemainingCapacity);
-
- if ((FirstTourRemainingCapacity > 0) && (SecondTourRemainingCapacity > 0) &&
- // curFreeCapacity > curFreeCapacity autological compare evaluates to false (error on MAC)
- (curFreeCapacity > bestFreeCapacity)) {
- CVehicleInfo tempVehicle = m_vVehicleInfos[firstTour.getVehicleId()];
- firstTour.setVehicleInfo(m_vVehicleInfos[secondTour.getVehicleId()]);
- secondTour.setVehicleInfo(tempVehicle);
-
- curMove.setModifiedTour(firstTour, secondTour);
-
- if (!isTabuMove(curMove)) {
- bestMove = curMove;
- bestFreeCapacity = curFreeCapacity;
- bestSwapIndex = std::make_pair(i, j);
- }
-
- curMove.getInitialTour(firstTour, secondTour);
- }
- }
- }
- if (bestFreeCapacity > 0) {
- CTourInfo tempTour;
- bestMove.getModifiedTourAt(0, tempTour);
- solutionInfo.replaceTourAt(bestSwapIndex.first, tempTour);
- bestMove.getModifiedTourAt(1, tempTour);
- solutionInfo.replaceTourAt(bestSwapIndex.second, tempTour);
- updateTabuCount(bestMove);
- updateFinalSolution(solutionInfo);
- }
-}
-#if 0
-void CVRPSolver::attemptFeasibleNodeExchange(CSolutionInfo& solutionInfo) {
- ++m_iGeneratedSolutionCount;
- ++m_iStepsSinceLastSolution;
- CMoveInfo bestMove, curMove;
-
- int totalTour = solutionInfo.getTourCount();
-
- for (int i = 0; i < totalTour; ++i) {
- CTourInfo curTour = solutionInfo.getTour(i);
- std::vector<int> vecOrderId = curTour.getOrderVector();
- curMove.setInitialTour(curTour);
- int totalCustomer = curTour.getServedOrderCount();
- std::pair<int, int> bestSwapIndex;
- double lowestCost = DOUBLE_MAX;
-
- for (int j = 0; j < totalCustomer; ++j) {
- for (int k = j + 1; k < totalCustomer; ++k) {
- COrderInfo firstCustomer = m_vOrderInfos[m_mapOrderIdToIndex[vecOrderId[j]]];
- COrderInfo secondCustomer = m_vOrderInfos[m_mapOrderIdToIndex[vecOrderId[k]]];
-
- if (curTour->isFeasibleReplace(j, pSecondCustomer) && pCurTour->isFeasibleReplace(k, pFirstCustomer)) {
- pCurTour->removeCustomer(j, false);
- pCurTour->addCustomer(pSecondCustomer, j);
-
- pCurTour->removeCustomer(k, false);
- pCurTour->addCustomer(pFirstCustomer, k);
-
- pCurMove->setModifiedTour(pCurTour);
- if (isTabuMove(pCurMove)) {
- pCurMove->getInitialTour(pCurTour);
- continue;
- }
-
- double curTourCost = pCurTour->getTourData()->calcCost(pCurTour->getAssignedVehicle());
- if (curTourCost < lowestCost) {
- *pBestMove = *pCurMove;
- lowestCost = curTourCost;
- bestSwapIndex = std::make_pair(j, k);
- }
- pCurMove->getInitialTour(pCurTour);
- }
- }
- }
-
- if (lowestCost!= DOUBLE_MAX) {
- m_pCurrentSolution->replaceTourAt(i, pBestMove->getModifiedTourAt(0));
- this->updateTabuCount(pBestMove);
- this->evaluateCurrentSolution();
- }
- }
- delete pCurMove;
- delete pBestMove;
-}
-#endif
-
-void CVRPSolver::updateTabuCount(CMoveInfo& bestMove) {
- m_veMoves.push_back(bestMove);
-#if 0
- bestMove.reverseMove();
- CMoveInfo curMove;
-
- std::map< CMoveInfo, int >::iterator mpIt = m_mapMoveFrequency.find(bestMove);
-
- if (mpIt == m_mapMoveFrequency.end()) {
- curMove = bestMove;
- } else {
- curMove = (*mpIt).first;
- }
-
- m_mapMoveFrequency[curMove]++;
-
- if (m_mapMoveFrequency[curMove] >= MAXIMUM_MOVE_FREQUENCY) {
- CMoveInfo tmpMove;
- std::set<CMoveInfo>::iterator sIt = m_sTabuList.find(curMove);
-
- CMoveInfo tmpMove2;
- if (sIt == m_sTabuList.end()) {
- tmpMove2 = curMove;
- } else {
- tmpMove2 = (*sIt);
- }
- m_sTabuList.insert(tmpMove2);
- }
- m_mapTabuCount[curMove] = std::make_pair(m_iGeneratedSolutionCount, m_iStepsSinceLastSolution);
- bestMove.reverseMove();
- */
-#endif
-}
-
-bool CVRPSolver::isTabuMove(CMoveInfo& curMove) {
- size_t i, tot = m_veMoves.size();
- for (i = 0; i < tot; i++) {
- if (curMove == m_veMoves[i])
- return true;
- }
- return false;
-}
diff --git a/src/vrp_basic/src/VRP_Solver.h b/src/vrp_basic/src/VRP_Solver.h
deleted file mode 100644
index 2aa487e..0000000
--- a/src/vrp_basic/src/VRP_Solver.h
+++ /dev/null
@@ -1,414 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2013 Khondoker Md. Razequl Islam
-ziboncsedu at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_VRP_BASIC_SRC_VRP_SOLVER_H_
-#define SRC_VRP_BASIC_SRC_VRP_SOLVER_H_
-
-#pragma once
-
-#include <cstdlib>
-#include <vector>
-#include <map>
-#include <utility>
-#include <string>
-#include <math.h>
-
-#define MAXIMUM_TRY 15
-#define TOTAL_NUMBER_OF_SEARCH 15
-#define MAXIMUM_MOVE_FREQUENCY 15
-
-#define INF (1e15)
-
-typedef std::pair<int, int> PII;
-
-// Structure for Point, Geo coordinates can be represented with it
-typedef struct {
- double X, Y;
-}Point;
-
-// Structure to keep cost, distance and traveltime. If distance/ traveltime is missing, there may be a negative flag
-typedef struct {
- double cost, distance, traveltime;
-}CostPack;
-
-
-// Class for holding vehicle information which consist of capacity, and cost_per_km
-// For first version we will use homogeneous cost
-class CVehicleInfo {
- public:
- CVehicleInfo();
- ~CVehicleInfo();
-
- bool init();
-
- bool loadUnit(int lUnit);
- bool unloadUnit(int lUnit);
- int getRemainingCapacity() {return (m_iCapacity - m_iCurrentLoad);}
-
- int getCurrentLoad() {return m_iCurrentLoad;}
-
- int getCapacity() {return m_iCapacity;}
- void setCapacity(int capacity) {m_iCapacity = capacity;}
-
- int getId() {return (this->m_iVehicleId);}
- void setId(int id) {m_iVehicleId = id;}
-
- double getCostPerKM() {return m_dCostPerKM;}
- void setCostPerKM(double cost) {m_dCostPerKM = cost;}
-
- friend bool operator != (const CVehicleInfo& cur, const CVehicleInfo& that);
-
-
- // CVehicleInfo( CVehicleInfo const& );
- // CVehicleInfo& operator = (const CVehicleInfo& vehicleInfo);
-
- private:
- int m_iCapacity;
- int m_iCurrentLoad;
- int m_iVehicleId;
- double m_dCostPerKM;
-};
-
-
-
-// Class to represent Orders. Each order is consist of open_time, close_time and sevice_time, its location and number of units ordered.
-class COrderInfo {
- public:
- COrderInfo();
- ~COrderInfo();
-
- int getOpenTime() {return m_iOrderOpenTime;}
- void setOpenTime(int openTime) {m_iOrderOpenTime = openTime;}
-
- int getCloseTime() {return m_iOrderCloseTime;}
- void setCloseTime(int closeTime) {m_iOrderCloseTime = closeTime;}
-
- int getServiceTime() {return m_iOrderServiceTime;}
- void setServiceTime(int serviceTime) {m_iOrderServiceTime = serviceTime;}
-
- int getOrderUnit() {return m_iOrderUnitCount;}
- void setOrderUnit(int orderUnit) {m_iOrderUnitCount = orderUnit;}
-
- Point getOrderLocation() {return m_ptOrderLocation;}
- void setOrderLocation(Point location) {m_ptOrderLocation = location;}
-
- int getOrderId() {return m_iOrderId; }
- void setOrderId(int orderId) {m_iOrderId = orderId;}
-
-
- // COrderInfo( COrderInfo const& );
- // COrderInfo& operator = (const COrderInfo& solution);
-
- private:
- int m_iOrderOpenTime;
- int m_iOrderCloseTime;
- int m_iOrderServiceTime;
- int m_iOrderUnitCount;
- int m_iOrderId;
-
- Point m_ptOrderLocation;
-};
-
-
-// Class to represent Depot information. Each depot will have it's Open_Time and Close_Time. The Depot that will open earliest will have open time 0
-// and all other time will be normalized with respect to it. For the first version there will be only one depot
-class CDepotInfo {
- public:
- CDepotInfo();
- ~CDepotInfo();
-
- int getOpenTime() {return m_iDepotOpenTime;}
- void setOpenTime(int openTime) {m_iDepotOpenTime = openTime;}
-
- int getCloseTime() {return m_iDepotCloseTime;}
- void setCloseTime(int closeTime) {m_iDepotCloseTime = closeTime;}
-
- int getDepotId() {return m_iDepotId;}
- void setDepotId(int id) {m_iDepotId = id;}
-
- Point getDepotLocation() {return m_ptDepotLocation;}
- void setDepotLocation(Point location) {m_ptDepotLocation = location;}
-
- // CDepotInfo( CDepotInfo const& );
- // CDepotInfo& operator = (const CDepotInfo& solution);
-
- private:
- int m_iDepotOpenTime;
- int m_iDepotCloseTime;
-
- int m_iDepotId;
-
- Point m_ptDepotLocation;
-};
-
-// Class to represent information of a Tour. A Tour starts from a depot and ends in a depot. On the way it serves several orders.
-// Each Tour has a vehicle ID and the list of Orders it serves in appropriate order. It also has the total Distance, Cost and Time assciated.
-class CTourInfo {
- public:
- CTourInfo();
- ~CTourInfo();
-
- void init();
-
- int getRemainingCapacity();
-
- int getVehicleId() {return m_vehicleInfo.getId();}
-
- CVehicleInfo& getVehicleInfo() {return m_vehicleInfo;}
- void setVehicleInfo(CVehicleInfo vehicleInfo) {m_vehicleInfo = vehicleInfo;}
-
- int getStartDepot() {return m_iStartDepotId;}
- void setStartDepot(int depotId) {m_iStartDepotId = depotId;}
-
- int getEndDepot() {return m_iEndDepotId;}
- void setEndDepot(int depotId) {m_iEndDepotId = depotId;}
-
- size_t getServedOrderCount() {return m_viOrderIds.size();}
-
- void updateCost(double cost, double distance, double travelTime);
-
- void setStartTime(std::vector<int> vStartTime) {m_viStartTime = vStartTime;}
-
-
- bool insertOrder(int orderId, int pos);
- bool removeOrder(int pos);
-
-
- double getDistance() {return m_dTotalDistance;}
-
- double getCost() {return m_dTotalCost;}
-
- double getTravelTime() {return m_dTotalTraveltime;}
-
- std::vector<int> getOrderVector() {return m_viOrderIds;}
-
- int getStartTime(int pos) {
- if ((unsigned int) pos >= m_viStartTime.size())
- return 0;
- else
- return m_viStartTime[pos];
- }
-
- friend bool operator == (const CTourInfo& cur, const CTourInfo& that);
-
-
- // bool operator != (const CTourInfo& that)
- // {
- // return(!(*this == that));
- // }
-
- // CTourInfo( CTourInfo const& );
- // CTourInfo& operator = (const CTourInfo& solution);
-
-
- private:
- CVehicleInfo m_vehicleInfo;
- int m_iStartDepotId;
- int m_iEndDepotId;
- int m_iOrdersServed;
- std::vector<int> m_viOrderIds;
- std::vector<int> m_viStartTime;
- double m_dTotalCost;
- double m_dTotalDistance;
- double m_dTotalTraveltime;
-};
-
-
-
-// This class will represent a solution of a VRP problem. A solution will be consist of multiple tour.
-// It also contains the number of vehicle used, number of orders served and total cost, distance and traveltime.
-class CSolutionInfo {
- public:
- CSolutionInfo();
- ~CSolutionInfo();
-
- int getVehicleUsed() {return m_iVehicleUsed;}
- int getOrderServed() {return m_iOrdersServed;}
- // int getVehicleUsed() {return m_iVehicleUsed;}
-
- bool addTour(CTourInfo& tour);
- CTourInfo& getTour(int pos) {return m_vtourAll[pos];}
-
- size_t getTourCount() {return (m_vtourAll.size());}
-
- size_t getUnservedOrderCount() {return m_vUnservedOrderId.size();}
- size_t getUnusedVehicleCount() {return m_vUnusedVehicles.size();}
-
- int getUnusedVehicleAt(int pos) {return m_vUnusedVehicles[pos];}
-
- void removeVehicle(int pos) {m_vUnusedVehicles.erase(m_vUnusedVehicles.begin() + pos);}
- void removeOrder(int pos) {m_vUnservedOrderId.erase(m_vUnservedOrderId.begin() + pos);}
-
- double getTotalCost() {return m_dTotalCost;}
- double getTotalDistance() {return m_dTotalDistance;}
- double getTotalTravelTime() {return m_dTotalTravelTime;}
- int getUnservedOrderAt(int pos) {return m_vUnservedOrderId[pos];}
- // void addOrderAtTour(int tourIndex, int insertIndex, int orderIndex);
-
- void replaceTourAt(int index, CTourInfo curTour);
- void replaceTour(CTourInfo curTour);
-
- bool init(std::vector<int> vecOrder, int iTotalOrder, std::vector<int> vecVehicle);
-
- std::vector<CTourInfo> getTourInfoVector() {return m_vtourAll;}
-
- // CTourInfo( CTourInfo const& );
- // CTourInfo& operator = (const CTourInfo& solution);
-
- private:
- std::vector<CTourInfo> m_vtourAll;
- std::vector<int> m_vUnservedOrderId;
- std::vector<int> m_vUnusedVehicles;
- int m_iVehicleUsed;
- int m_iOrdersServed;
- int m_iTotalOrders;
- double m_dTotalCost;
- double m_dTotalDistance;
- double m_dTotalTravelTime;
-};
-
-class CMoveInfo {
- public:
- CMoveInfo();
- ~CMoveInfo();
-
- bool isBetter(CMoveInfo *pVRPMove);
-
- void reverseMove();
- void setInitialTour(CTourInfo pTourData);
- void setInitialTour(CTourInfo pTourData1, CTourInfo pTourData2);
- void setModifiedTour(CTourInfo pTourData);
- void setModifiedTour(CTourInfo pTourData1, CTourInfo pTourData2);
-
- bool getModifiedTourAt(int index, CTourInfo& tourInfo);
- size_t getModifiedTourCount() const { return m_vModifiedTour.size();}
- double getModifiedTourCost() const;
- void getInitialTour(CTourInfo &TourData);
- void getInitialTour(CTourInfo &TourData1, CTourInfo &TourData2);
-
- friend bool operator == (const CMoveInfo& cur, const CMoveInfo& that);
-
-
- // bool operator != (const CMoveInfo& that)
- // {
- // return(!(*this == that));
- // }
-
- // CMoveInfo( CMoveInfo const& );
- // CMoveInfo& operator = (const CMoveInfo& solution);
-
- private:
- void clearInitialTour();
- void clearModifiedTour();
-
- std::vector<CTourInfo> m_vInitialTour;
- std::vector<CTourInfo> m_vModifiedTour;
-};
-
-
-
-
-// This is the main class that will solve the VRP problem. It will use the previous classes to represent the problem and the solution.
-// It will also have pre generated point to point distance/ cost/ traveltime information in maps.
-class CVRPSolver {
- public:
- CVRPSolver();
- ~CVRPSolver();
-
- bool init();
-
- bool addDepot(CDepotInfo depotInfo);
- bool addOrder(COrderInfo orderInfo);
- bool addVehicle(CVehicleInfo vehicleInfo);
-
- CostPack getOrderToOrderCost(int firstOrder, int secondOrder);
- CostPack getDepotToOrderCost(int depotId, int orderId);
- CostPack getOrderToDepotCost(int depotId, int orderId);
-
- bool addOrderToOrderCost(int firstOrder, int secondOrder, CostPack cost);
- bool addDepotToOrderCost(int depotId, int orderId, CostPack cost);
- bool addOrderToDepotCost(int depotId, int orderId, CostPack cost);
-
- void removeVehicle(int vehicleIndex)
- {m_viUnusedVehicleIndex.erase(m_viUnusedVehicleIndex.begin() + vehicleIndex, m_viUnusedVehicleIndex.begin() + vehicleIndex+1);}
-
- void removeOrder(int orderIndex)
- {m_viUnservedOrderIndex.erase(m_viUnservedOrderIndex.begin() + orderIndex, m_viUnservedOrderIndex.begin() + orderIndex + 1);}
-
- bool solveVRP(std::string& strError);
-
- bool getSolution(CSolutionInfo& solution, std::string& strError);
- CSolutionInfo generateInitialSolution();
- bool updateFinalSolution(CSolutionInfo& solutionInfo);
- std::pair<int, double> getPotentialInsert(CTourInfo& curTour, COrderInfo& curOrder);
- CostPack getCostForInsert(CTourInfo& curTour, COrderInfo& curOrder, int pos);
- bool tabuSearch(CSolutionInfo& solutionInfo);
- int getServiceTime(int order_id) {return (m_vOrderInfos[m_mapOrderIdToIndex[order_id]].getServiceTime());}
-
- bool insertOrder(CTourInfo& tourInfo, int orderId, int pos);
- void applyBestMoveInCurrentSolution(CSolutionInfo& solutionInfo, CMoveInfo& bestMove);
- void insertUnservedOrders(CSolutionInfo& solutionInfo);
- // void attemptFeasibleNodeExchange(CSolutionInfo& solutionInfo);
- void attemptVehicleExchange(CSolutionInfo& solutionInfo);
- // CMoveInfo identifyPotentialMove();
- void updateTabuCount(CMoveInfo& bestMove);
-
- bool isTabuMove(CMoveInfo& curMove);
- bool updateTourCosts(CTourInfo& tourInfo);
- bool addOrderAtTour(CSolutionInfo& solutionInfo, int tourIndex, int insertIndex, int orderIndex);
-
-
- private:
- bool m_bIsReadyToSolve;
- std::vector<CVehicleInfo> m_vVehicleInfos;
- std::vector<COrderInfo> m_vOrderInfos;
- std::vector<CDepotInfo> m_vDepotInfos;
-
- std::map<int, int> m_mapOrderIdToIndex;
- std::map<int, int> m_mapVehicleIdToIndex;
- std::map<int, int> m_mapDepotIdToIndex;
-
- std::map<std::pair<int, int>, CostPack> m_mapOrderToOrderCost;
- std::map<std::pair<int, int>, CostPack> m_mapDepotToOrderrCost;
- std::map<std::pair<int, int>, CostPack> m_mapOrderToDepotCost;
-
- /*
- std::map<CMoveInfo, int> m_mapMoveFrequency;
- std::map<CMoveInfo, std::pair<int, int> > m_mapTabuCount;
- std::set<CMoveInfo> m_sTabuList;
- */
-
- std::vector<CMoveInfo> m_veMoves;
-
- bool m_bIsSolutionReady;
- CSolutionInfo m_solutionFinal;
-
- private:
- std::vector<int> m_viUnservedOrderIndex;
- std::vector<int> m_viUnusedVehicleIndex;
- int m_iGeneratedSolutionCount;
- int m_iStepsSinceLastSolution;
- bool m_bFoundOptimal;
-};
-
-#endif // SRC_VRP_BASIC_SRC_VRP_SOLVER_H_
diff --git a/src/vrp_basic/src/VRP_core.cpp b/src/vrp_basic/src/VRP_core.cpp
deleted file mode 100644
index 7718fe3..0000000
--- a/src/vrp_basic/src/VRP_core.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2013 Khondoker Md. Razequl Islam
-ziboncsedu at gmail.com
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifdef __MINGW32__
-#include <winsock2.h>
-#include <windows.h>
-#endif
-
-
-#include "../../common/src/pgr_alloc.hpp"
-#include "VRP.h"
-#include "VRP_Solver.h"
-#include <vector>
-#include <string>
-#include <exception>
-
-#undef PGR_LOGGER_ON
-#define PGR_LOGGER_LOC
-#define PGR_LOGGER_FILE "/tmp/vrp-debug.log"
-#include "../../common/src/pgr_logger.h"
-
-CVRPSolver solver;
-
-void loadOrders(vrp_orders_t *orders, int order_count, int depotId) {
- int i;
- PGR_LOGF("%s: %d\n", "Depot ID", id);
- for (i = 0; i < order_count; i++) {
- int id = orders[i].id;
- PGR_LOGF("%s: %d\n", "Order ID", id);
- if (id == depotId) {
- PGR_LOG("Got depot");
- // This order represents Deopot
- CDepotInfo depot;
-
- depot.setDepotId(id);
-
- Point pt;
-
- pt.X = orders[i].x;
- pt.Y = orders[i].y;
-
- depot.setDepotLocation(pt);
-
- int openTime = orders[i].open_time;
- depot.setOpenTime(openTime);
-
- int closeTime = orders[i].close_time;
- depot.setCloseTime(closeTime);
-
- solver.addDepot(depot);
-
- } else {
- // This is an order
- COrderInfo order;
-
- order.setOrderId(id);
-
- Point pt;
-
- pt.X = orders[i].x;
- pt.Y = orders[i].y;
-
- order.setOrderLocation(pt);
-
- int demand = orders[i].order_unit;
- order.setOrderUnit(demand);
-
- int openTime = orders[i].open_time;
- order.setOpenTime(openTime);
-
- int closeTime = orders[i].close_time;
- order.setCloseTime(closeTime);
-
- int serviceTime = orders[i].service_time;
- order.setServiceTime(serviceTime);
-
- solver.addOrder(order);
- }
- }
-}
-
-void loadVehicles(vrp_vehicles_t *vehicles, int vehicle_count) {
- int i;
- for (i = 0; i < vehicle_count; i++) {
- CVehicleInfo vehicle;
-
- int id = vehicles[i].id;
- vehicle.setId(id);
-
- int capcity = vehicles[i].capacity;
- vehicle.setCapacity(capcity);
-
- vehicle.setCostPerKM(1);
-
- solver.addVehicle(vehicle);
- }
-}
-
-void loadDistanceMatrix(vrp_cost_element_t *costmatrix, int cost_count, int depotId) {
- int i;
- for (i = 0; i < cost_count; i++) {
- int fromId = costmatrix[i].src_id;
- int toId = costmatrix[i].dest_id;
- CostPack cpack;
- cpack.cost = costmatrix[i].cost;
- cpack.distance = costmatrix[i].distance;
- cpack.traveltime = costmatrix[i].traveltime;
-
- if (fromId == depotId)
- solver.addDepotToOrderCost(fromId, toId, cpack);
- else if (toId == depotId)
- solver.addOrderToDepotCost(fromId, toId, cpack);
- else
- solver.addOrderToOrderCost(fromId, toId, cpack);
- }
-}
-
-
-int find_vrp_solution(vrp_vehicles_t *vehicles, size_t vehicle_count,
- vrp_orders_t *orders, size_t order_count,
- vrp_cost_element_t *costmatrix, size_t cost_count,
- int depot_id,
- vrp_result_element_t **results, size_t *result_count, char **err_msg) {
- int res;
-
- std::string strError;
- try {
- PGR_LOG("Before load order");
- loadOrders(orders, static_cast<int>(order_count), depot_id);
- PGR_LOG("After load order");
- loadVehicles(vehicles, static_cast<int>(vehicle_count));
- PGR_LOG("After load vehicles");
- loadDistanceMatrix(costmatrix, static_cast<int>(cost_count), depot_id);
- PGR_LOG("After load distance matrix");
- res = solver.solveVRP(strError);
- PGR_LOG("After VRP Solve");
- }
- catch(std::exception& e) {
- *err_msg = (char *) e.what();
- return -1;
- }
- catch(...) {
- *err_msg = (char *) "Caught unknown exception!";
- return -1;
- }
-
-
- if (res < 0) {
- return res;
- } else {
- try {
- CSolutionInfo solution;
- CTourInfo ctour;
- // bool bOK =
- solver.getSolution(solution, strError);
- auto totalRoute = solution.getTourInfoVector().size();
- size_t totRows = 0;
- for (size_t i = 0; i < totalRoute; i++) {
- totRows += (solution.getTour(static_cast<int>(i)).getServedOrderCount() + 2);
- }
- *results = pgr_alloc(totRows, *results);
- *result_count = totRows;
- int cnt = 0;
- for (size_t i = 0; i < totalRoute; i++) {
- ctour = solution.getTour(static_cast<int>(i));
- std::vector<int> vecOrder = ctour.getOrderVector();
- auto totalOrder = vecOrder.size();
-
- // For start depot
- (*results)[cnt].order_id = ctour.getStartDepot();
- (*results)[cnt].order_pos = 0;
- (*results)[cnt].vehicle_id = ctour.getVehicleId();
- (*results)[cnt].arrival_time = -1;
- (*results)[cnt].depart_time = ctour.getStartTime(0);
- cnt++;
-
- // For each order
- for (size_t j = 0; j < totalOrder; j++) {
- (*results)[cnt].order_id = vecOrder[j];
- (*results)[cnt].order_pos = static_cast<int>(j) + 1;
- (*results)[cnt].vehicle_id = ctour.getVehicleId();
- (*results)[cnt].depart_time = ctour.getStartTime(static_cast<int>(j) + 1);
- (*results)[cnt].arrival_time = ctour.getStartTime(static_cast<int>(j) + 1) - solver.getServiceTime(vecOrder[j]);
- cnt++;
- }
-
- // For return depot
- (*results)[cnt].order_id = ctour.getEndDepot();
- (*results)[cnt].order_pos = static_cast<int>(totalOrder) + 1;
- (*results)[cnt].vehicle_id = ctour.getVehicleId();
- (*results)[cnt].arrival_time = ctour.getStartTime(static_cast<int>(totalOrder) + 1);
- (*results)[cnt].depart_time = -1;
- cnt++;
- }
- }
- catch(std::exception& e) {
- *err_msg = (char *) e.what();
- return -1;
- }
- catch(...) {
- *err_msg = (char *) "Caught unknown exception!";
- return -1;
- }
- }
- return EXIT_SUCCESS;
-}
-
diff --git a/src/vrp_basic/test/Distance.txt b/src/vrp_basic/test/Distance.txt
deleted file mode 100644
index 370f68c..0000000
--- a/src/vrp_basic/test/Distance.txt
+++ /dev/null
@@ -1,10100 +0,0 @@
-1 2 38.078866
-1 3 30.805844
-1 4 39.357337
-1 5 36.055513
-1 6 40.311289
-1 7 33.301652
-1 8 35.355339
-1 9 39.051248
-1 10 33.541020
-1 11 31.622777
-1 12 33.526109
-1 13 32.388269
-1 14 38.078866
-1 15 35.355339
-1 16 39.293765
-1 17 41.231056
-1 18 40.311289
-1 19 45.177428
-1 20 40.049969
-1 21 35.057096
-1 22 45.000000
-1 23 35.000000
-1 24 45.044423
-1 25 35.057096
-1 26 45.276926
-1 27 58.523500
-1 28 57.008771
-1 29 55.713553
-1 30 52.201533
-1 31 52.000000
-1 32 50.289164
-1 33 51.078371
-1 34 51.478151
-1 35 47.434165
-1 36 44.204072
-1 37 43.011626
-1 38 40.607881
-1 39 37.202150
-1 40 36.055513
-1 41 40.311289
-1 42 30.805844
-1 43 33.541020
-1 44 38.078866
-1 45 35.341194
-1 46 37.735925
-1 47 37.202150
-1 48 38.327536
-1 49 45.044423
-1 50 38.052595
-1 51 35.341194
-1 52 33.541020
-1 53 25.000000
-1 54 20.000000
-1 55 18.027756
-1 56 14.142136
-1 57 18.027756
-1 58 26.925824
-1 59 47.169906
-1 60 42.426407
-1 61 26.925824
-1 62 15.811388
-1 63 29.154759
-1 64 39.051248
-1 65 20.615528
-1 66 11.180340
-1 67 13.038405
-1 68 25.298221
-1 69 10.000000
-1 70 9.219544
-1 71 19.646883
-1 72 25.495098
-1 73 27.459060
-1 74 39.293765
-1 75 36.055513
-1 76 57.008771
-1 77 42.941821
-1 78 49.979996
-1 79 32.557641
-1 80 38.470768
-1 81 7.615773
-1 82 12.041595
-1 83 14.764823
-1 84 19.235384
-1 85 27.018512
-1 86 35.468296
-1 87 32.202484
-1 88 38.209946
-1 89 17.888544
-1 90 52.478567
-1 91 4.242641
-1 92 12.041595
-1 93 14.764823
-1 94 21.095023
-1 95 17.117243
-1 96 20.615528
-1 97 15.524175
-1 98 48.166378
-1 99 14.142136
-1 100 20.518285
-1 101 19.235384
-2 1 38.078866
-2 3 10.440307
-2 4 3.000000
-2 5 7.071068
-2 6 5.000000
-2 7 12.206556
-2 8 14.142136
-2 9 11.180340
-2 10 52.201533
-2 11 47.434165
-2 12 48.104054
-2 13 43.462628
-2 14 53.851648
-2 15 44.721360
-2 16 50.537115
-2 17 51.478151
-2 18 47.169906
-2 19 82.225300
-2 20 76.902536
-2 21 72.034714
-2 22 81.394103
-2 23 71.589105
-2 24 81.049368
-2 25 71.196910
-2 26 80.622577
-2 27 89.022469
-2 28 86.023253
-2 29 86.683332
-2 30 82.006097
-2 31 83.630138
-2 32 80.430094
-2 33 82.879430
-2 34 84.852814
-2 35 78.102497
-2 36 42.000000
-2 37 40.000000
-2 38 40.112342
-2 39 37.336309
-2 40 35.355339
-2 41 35.000000
-2 42 34.481879
-2 43 30.413813
-2 44 30.000000
-2 45 30.149627
-2 46 5.830952
-2 47 8.602325
-2 48 46.141088
-2 49 81.786307
-2 50 74.953319
-2 51 68.622154
-2 52 71.589105
-2 53 55.000000
-2 54 35.355339
-2 55 39.051248
-2 56 25.495098
-2 57 55.901699
-2 58 60.207973
-2 59 75.663730
-2 60 66.708320
-2 61 26.925824
-2 62 28.284271
-2 63 64.031242
-2 64 76.321688
-2 65 58.523500
-2 66 46.097722
-2 67 50.596443
-2 68 58.051701
-2 69 29.154759
-2 70 33.541020
-2 71 18.867962
-2 72 50.000000
-2 73 42.941821
-2 74 33.970576
-2 75 65.192024
-2 76 82.462113
-2 77 80.956779
-2 78 82.024387
-2 79 33.615473
-2 80 25.495098
-2 81 43.908997
-2 82 36.124784
-2 83 42.047592
-2 84 55.317267
-2 85 64.498062
-2 86 72.718636
-2 87 61.131007
-2 88 62.369865
-2 89 27.018512
-2 90 90.354856
-2 91 39.849718
-2 92 49.244289
-2 93 50.477718
-2 94 48.836462
-2 95 48.918299
-2 96 57.140179
-2 97 43.139309
-2 98 70.213959
-2 99 33.015148
-2 100 50.009999
-2 101 18.973666
-3 1 30.805844
-3 2 10.440307
-3 4 10.000000
-3 5 5.385165
-3 6 10.198039
-3 7 4.000000
-3 8 7.000000
-3 9 8.602325
-3 10 41.761226
-3 11 37.000000
-3 12 37.696154
-3 13 33.105891
-3 14 43.462628
-3 15 34.481879
-3 16 40.311289
-3 17 41.340053
-3 18 37.202150
-3 19 73.375745
-3 20 68.007353
-3 21 63.245553
-3 22 72.277244
-3 23 62.641839
-3 24 71.805292
-3 25 62.096699
-3 26 71.196910
-3 27 85.755466
-3 28 83.240615
-3 29 83.216585
-3 30 78.892332
-3 31 79.881162
-3 32 77.175126
-3 33 79.056942
-3 34 80.430094
-3 35 74.625733
-3 36 46.097722
-3 37 44.147480
-3 38 43.566042
-3 39 40.311289
-3 40 38.327536
-3 41 39.293765
-3 42 36.000000
-3 43 33.376639
-3 44 34.481879
-3 45 33.734256
-3 46 7.280110
-3 47 6.403124
-3 48 36.055513
-3 49 72.801099
-3 50 66.098411
-3 51 64.031242
-3 52 64.140471
-3 53 45.099889
-3 54 25.079872
-3 55 36.249138
-3 56 17.000000
-3 57 48.826222
-3 58 50.635956
-3 59 65.375837
-3 60 56.293872
-3 61 16.552945
-3 62 25.079872
-3 63 58.728187
-3 64 69.814039
-3 65 50.537115
-3 66 37.336309
-3 67 42.485292
-3 68 53.413481
-3 69 23.430749
-3 70 24.698178
-3 71 14.317821
-3 72 47.423623
-3 73 42.201896
-3 74 25.000000
-3 75 55.036352
-3 76 72.034714
-3 77 73.573093
-3 78 72.006944
-3 79 23.600847
-3 80 17.464249
-3 81 37.536649
-3 82 31.906112
-3 83 32.388269
-3 84 46.486557
-3 85 57.801384
-3 86 66.219333
-3 87 51.009803
-3 88 51.971146
-3 89 17.117243
-3 90 83.216585
-3 91 31.764760
-3 92 42.638011
-3 93 44.553339
-3 94 45.276926
-3 95 44.204072
-3 96 50.990195
-3 97 39.115214
-3 98 59.774577
-3 99 23.345235
-3 100 40.199502
-3 101 12.041595
-4 1 39.357337
-4 2 3.000000
-4 3 10.000000
-4 5 5.385165
-4 6 2.000000
-4 7 10.770330
-4 8 12.206556
-4 9 8.602325
-4 10 51.419841
-4 11 46.572524
-4 12 47.127487
-4 13 42.379240
-4 14 52.810984
-4 15 43.462628
-4 16 49.244289
-4 17 50.089919
-4 18 45.650849
-4 19 82.969874
-4 20 77.620873
-4 21 72.801099
-4 22 82.000000
-4 23 72.277244
-4 24 81.584312
-4 25 71.805292
-4 26 81.049368
-4 27 91.400219
-4 28 88.481637
-4 29 89.022469
-4 30 84.403791
-4 31 85.912746
-4 32 82.800966
-4 33 85.146932
-4 34 87.000000
-4 35 80.430094
-4 36 45.000000
-4 37 43.000000
-4 38 43.104524
-4 39 40.311289
-4 40 38.327536
-4 41 38.000000
-4 42 37.363083
-4 43 33.376639
-4 44 33.000000
-4 45 33.136083
-4 46 3.605551
-4 47 6.403124
-4 48 44.721360
-4 49 82.462113
-4 50 75.690158
-4 51 70.710678
-4 52 72.897188
-4 53 55.081757
-4 54 35.057096
-4 55 41.400483
-4 56 26.248809
-4 57 57.306195
-4 58 60.530984
-4 59 75.325958
-4 60 66.098411
-4 61 25.961510
-4 62 30.479501
-4 63 65.946948
-4 64 77.935871
-4 65 59.615434
-4 66 46.840154
-4 67 51.623638
-4 68 60.108236
-4 69 30.805844
-4 70 34.205263
-4 71 20.615528
-4 72 52.430907
-4 73 45.617979
-4 74 32.015621
-4 75 65.030762
-4 76 81.786307
-4 77 82.298238
-4 78 82.006097
-4 79 32.202484
-4 80 23.345235
-4 81 45.486262
-4 82 38.183766
-4 83 42.296572
-4 84 56.044625
-4 85 66.037868
-4 86 74.330344
-4 87 61.008196
-4 88 61.814238
-4 89 27.073973
-4 90 91.787799
-4 91 40.853396
-4 92 50.774009
-4 93 52.201533
-4 94 51.088159
-4 95 50.931326
-4 96 58.821765
-4 97 45.276926
-4 98 69.375788
-4 99 33.241540
-4 100 50.159745
-4 101 20.124612
-5 1 36.055513
-5 2 7.071068
-5 3 5.385165
-5 4 5.385165
-5 6 5.000000
-5 7 5.385165
-5 8 7.071068
-5 9 5.000000
-5 10 46.097722
-5 11 41.231056
-5 12 41.761226
-5 13 37.000000
-5 14 47.434165
-5 15 38.078866
-5 16 43.863424
-5 17 44.721360
-5 18 40.311289
-5 19 78.746428
-5 20 73.375745
-5 21 68.622154
-5 22 77.620873
-5 23 68.007353
-5 24 77.129761
-5 25 67.446275
-5 26 76.485293
-5 27 90.138782
-5 28 87.464278
-5 29 87.658428
-5 30 83.216585
-5 31 84.403791
-5 32 81.541401
-5 33 83.600239
-5 34 85.146932
-5 35 79.056942
-5 36 47.265209
-5 37 45.276926
-5 38 45.044423
-5 39 42.000000
-5 40 40.000000
-5 41 40.311289
-5 42 38.327536
-5 43 35.000000
-5 44 35.355339
-5 45 35.057096
-5 46 2.000000
-5 47 2.000000
-5 48 39.357337
-5 49 78.160092
-5 50 71.470274
-5 51 68.767725
-5 52 69.462220
-5 53 50.249378
-5 54 30.000000
-5 55 40.311289
-5 56 22.360680
-5 57 54.083269
-5 58 55.901699
-5 59 70.178344
-5 60 60.827625
-5 61 20.615528
-5 62 29.154759
-5 63 63.639610
-5 64 75.000000
-5 65 55.901699
-5 66 42.720019
-5 67 47.853944
-5 68 58.137767
-5 69 28.284271
-5 70 30.083218
-5 71 18.601075
-5 72 51.478151
-5 73 45.541190
-5 74 26.907248
-5 75 60.000000
-5 76 76.485293
-5 77 78.892332
-5 78 77.058419
-5 79 26.832816
-5 80 18.439089
-5 81 42.638011
-5 82 36.400549
-5 83 37.656341
-5 84 51.865210
-5 85 63.007936
-5 86 71.400280
-5 87 56.008928
-5 88 56.568542
-5 89 22.360680
-5 90 88.509886
-5 91 37.121422
-5 92 47.801674
-5 93 49.578221
-5 94 49.648766
-5 95 48.918299
-5 96 56.080300
-5 97 43.600459
-5 98 64.031242
-5 99 28.635642
-5 100 45.398238
-5 101 17.029386
-6 1 40.311289
-6 2 5.000000
-6 3 10.198039
-6 4 2.000000
-6 5 5.000000
-6 7 10.198039
-6 8 11.180340
-6 9 7.071068
-6 10 50.990195
-6 11 46.097722
-6 12 46.572524
-6 13 41.761226
-6 14 52.201533
-6 15 42.720019
-6 16 48.466483
-6 17 49.244289
-6 18 44.721360
-6 19 83.522452
-6 20 78.160092
-6 21 73.375745
-6 22 82.462113
-6 23 72.801099
-6 24 82.000000
-6 25 72.277244
-6 26 81.394103
-6 27 93.005376
-6 28 90.138782
-6 29 90.603532
-6 30 86.023253
-6 31 87.458562
-6 32 84.403791
-6 33 86.683332
-6 34 88.459030
-6 35 82.006097
-6 36 47.000000
-6 37 45.000000
-6 38 45.099889
-6 39 42.296572
-6 40 40.311289
-6 41 40.000000
-6 42 39.293765
-6 43 35.355339
-6 44 35.000000
-6 45 35.128336
-6 46 3.000000
-6 47 5.385165
-6 48 43.863424
-6 49 82.969874
-6 50 76.243032
-6 51 72.138755
-6 52 73.824115
-6 53 55.226805
-6 54 35.000000
-6 55 43.011626
-6 56 26.925824
-6 57 58.309519
-6 58 60.827625
-6 59 75.166482
-6 60 65.764732
-6 61 25.495098
-6 62 32.015621
-6 63 67.268120
-6 64 79.056942
-6 65 60.415230
-6 66 47.434165
-6 67 52.392748
-6 68 61.522354
-6 69 32.015621
-6 70 34.785054
-6 71 21.931712
-6 72 54.083269
-6 73 47.423623
-6 74 30.805844
-6 75 65.000000
-6 76 81.394103
-6 77 83.240615
-6 78 82.054860
-6 79 31.384710
-6 80 22.022716
-6 81 46.615448
-6 82 39.623226
-6 83 42.579338
-6 84 56.612719
-6 85 67.119297
-6 86 75.451971
-6 87 61.008196
-6 88 61.522354
-6 89 27.294688
-6 90 92.784697
-6 91 41.629317
-6 92 51.865210
-6 93 53.413481
-6 94 52.630789
-6 95 52.325902
-6 96 60.000000
-6 97 46.754679
-6 98 68.883960
-6 99 33.541020
-6 100 50.358713
-6 101 21.095023
-7 1 33.301652
-7 2 12.206556
-7 3 4.000000
-7 4 10.770330
-7 5 5.385165
-7 6 10.198039
-7 8 3.000000
-7 9 5.830952
-7 10 40.792156
-7 11 35.902646
-7 12 36.400549
-7 13 31.622777
-7 14 42.059482
-7 15 32.695565
-7 16 38.483763
-7 17 39.357337
-7 18 34.985711
-7 19 74.672619
-7 20 69.289249
-7 21 64.621978
-7 22 73.375745
-7 23 63.906181
-7 24 72.801099
-7 25 63.245553
-7 26 72.034714
-7 27 89.185201
-7 28 86.769810
-7 29 86.608314
-7 30 82.365041
-7 31 83.216585
-7 32 80.622577
-7 33 82.377181
-7 34 83.600239
-7 35 78.032045
-7 36 50.009999
-7 37 48.052055
-7 38 47.518417
-7 39 44.283180
-7 40 42.296572
-7 41 43.174066
-7 42 40.000000
-7 43 37.336309
-7 44 38.327536
-7 45 37.656341
-7 46 7.280110
-7 47 5.000000
-7 48 34.000000
-7 49 74.000000
-7 50 67.416615
-7 51 67.201190
-7 52 66.287254
-7 53 45.541190
-7 54 25.079872
-7 55 39.924930
-7 56 19.209373
-7 57 51.224994
-7 58 51.419841
-7 59 65.069194
-7 60 55.578773
-7 61 15.297059
-7 62 28.792360
-7 63 61.717096
-7 64 72.346389
-7 65 52.478567
-7 66 38.910153
-7 67 44.418465
-7 68 56.612719
-7 69 26.627054
-7 70 26.419690
-7 71 18.027756
-7 72 51.078371
-7 73 46.097722
-7 74 21.931712
-7 75 55.036352
-7 76 71.196910
-7 77 75.716577
-7 78 72.173402
-7 79 21.470911
-7 80 13.892444
-7 81 40.311289
-7 82 35.355339
-7 83 33.241540
-7 84 47.927028
-7 85 60.307545
-7 86 68.767725
-7 87 51.088159
-7 88 51.351728
-7 89 18.027756
-7 90 85.445889
-7 91 33.837849
-7 92 45.276926
-7 93 47.423623
-7 94 48.764741
-7 95 47.434165
-7 96 53.740115
-7 97 42.544095
-7 98 58.694122
-7 99 24.351591
-7 100 40.792156
-7 101 15.264338
-8 1 35.355339
-8 2 14.142136
-8 3 7.000000
-8 4 12.206556
-8 5 7.071068
-8 6 11.180340
-8 7 3.000000
-8 9 5.000000
-8 10 40.311289
-8 11 35.355339
-8 12 35.693137
-8 13 30.805844
-8 14 41.231056
-8 15 31.622777
-8 16 37.336309
-8 17 38.078866
-8 18 33.541020
-8 19 75.769387
-8 20 70.384657
-8 21 65.795137
-8 22 74.330344
-8 23 65.000000
-8 24 73.681748
-8 25 64.257295
-8 26 72.801099
-8 27 91.787799
-8 28 89.442719
-8 29 89.185201
-8 30 85.000000
-8 31 85.755466
-8 32 83.240615
-8 33 84.905830
-8 34 86.023253
-8 35 80.622577
-8 36 52.952809
-8 37 50.990195
-8 38 50.487622
-8 39 47.265209
-8 40 45.276926
-8 41 46.097722
-8 42 43.000000
-8 43 40.311289
-8 44 41.231056
-8 45 40.607881
-8 46 8.602325
-8 47 5.830952
-8 48 32.695565
-8 49 75.026662
-8 50 68.541958
-8 51 69.634761
-8 52 68.007353
-8 53 46.097722
-8 54 25.495098
-8 55 42.720019
-8 56 21.213203
-8 57 53.150729
-8 58 52.201533
-8 59 65.000000
-8 60 55.226805
-8 61 15.000000
-8 62 31.622777
-8 63 64.031242
-8 64 74.330344
-8 65 54.083269
-8 66 40.311289
-8 67 46.043458
-8 68 59.076222
-8 69 29.154759
-8 70 28.017851
-8 71 20.880613
-8 72 53.851648
-8 73 49.030603
-8 74 19.849433
-8 75 55.226805
-8 76 70.710678
-8 77 77.420927
-8 78 72.443081
-8 79 20.248457
-8 80 11.401754
-8 81 42.520583
-8 82 38.013156
-8 83 34.176015
-8 84 49.193496
-8 85 62.289646
-8 86 70.767224
-8 87 51.351728
-8 88 51.088159
-8 89 19.235384
-8 90 87.200917
-8 91 35.608988
-8 92 47.381431
-8 93 49.678969
-8 94 51.429563
-8 95 49.929951
-8 96 55.901699
-8 97 45.177428
-8 98 58.051701
-8 99 25.495098
-8 100 41.484937
-8 101 17.888544
-9 1 39.051248
-9 2 11.180340
-9 3 8.602325
-9 4 8.602325
-9 5 5.000000
-9 6 7.071068
-9 7 5.830952
-9 8 5.000000
-9 10 45.276926
-9 11 40.311289
-9 12 40.607881
-9 13 35.693137
-9 14 46.097722
-9 15 36.400549
-9 16 42.059482
-9 17 42.720019
-9 18 38.078866
-9 19 80.411442
-9 20 75.026662
-9 21 70.384657
-9 22 79.056942
-9 23 69.641941
-9 24 78.447435
-9 25 68.949257
-9 26 77.620873
-9 27 94.339811
-9 28 91.787799
-9 29 91.809586
-9 30 87.464278
-9 31 88.481637
-9 32 85.755466
-9 33 87.658428
-9 34 89.022469
-9 35 83.216585
-9 36 52.239832
-9 37 50.249378
-9 38 50.039984
-9 39 47.000000
-9 40 45.000000
-9 41 45.276926
-9 42 43.289722
-9 43 40.000000
-9 44 40.311289
-9 45 40.049969
-9 46 5.385165
-9 47 3.000000
-9 48 37.336309
-9 49 79.711982
-9 50 73.164199
-9 51 72.622311
-9 52 72.111026
-9 53 50.990195
-9 54 30.413813
-9 55 44.721360
-9 56 25.000000
-9 57 57.008771
-9 58 57.008771
-9 59 70.000000
-9 60 60.207973
-9 61 20.000000
-9 62 33.541020
-9 63 67.268120
-9 64 78.102497
-9 65 58.309519
-9 66 44.721360
-9 67 50.249378
-9 68 62.008064
-9 69 32.015621
-9 70 32.249031
-9 71 22.825424
-9 72 55.901699
-9 73 50.289164
-9 74 23.853721
-9 75 60.207973
-9 76 75.663730
-9 77 81.541401
-9 78 77.414469
-9 79 25.000000
-9 80 15.000000
-9 81 45.967380
-9 82 40.496913
-9 83 38.897301
-9 84 53.712196
-9 85 66.068147
-9 86 74.518454
-9 87 56.320511
-9 88 56.080300
-9 89 23.769729
-9 90 91.263355
-9 91 39.661064
-9 92 50.990195
-9 93 53.037722
-9 94 53.851648
-9 95 52.801515
-9 96 59.413803
-9 97 47.707442
-9 98 62.968246
-9 99 30.083218
-9 100 46.324939
-9 101 20.615528
-10 1 33.541020
-10 2 52.201533
-10 3 41.761226
-10 4 51.419841
-10 5 46.097722
-10 6 50.990195
-10 7 40.792156
-10 8 40.311289
-10 9 45.276926
-10 11 5.000000
-10 12 5.385165
-10 13 10.198039
-10 14 5.000000
-10 15 11.180340
-10 16 9.433981
-10 17 11.180340
-10 18 14.142136
-10 19 45.343136
-10 20 40.607881
-10 21 37.735925
-10 22 42.426407
-10 23 36.055513
-10 24 41.036569
-10 25 34.409301
-10 26 39.051248
-10 27 85.146932
-10 28 85.000000
-10 29 82.152298
-10 30 80.000000
-10 31 78.160092
-10 32 78.000000
-10 33 77.162167
-10 34 75.663730
-10 35 75.000000
-10 36 75.822160
-10 37 74.330344
-10 38 72.346389
-10 39 68.767725
-10 40 67.268120
-10 41 70.710678
-10 42 62.481997
-10 43 63.639610
-10 44 67.268120
-10 45 65.069194
-10 46 48.052055
-10 47 45.705580
-10 48 12.806248
-10 49 43.863424
-10 50 39.408121
-10 51 62.000000
-10 52 47.434165
-10 53 15.811388
-10 54 18.027756
-10 55 51.478151
-10 56 32.015621
-10 57 40.000000
-10 58 22.360680
-10 59 25.495098
-10 60 15.000000
-10 61 25.495098
-10 62 46.097722
-10 63 55.000000
-10 64 57.008771
-10 65 35.355339
-10 66 25.495098
-10 67 31.064449
-10 68 54.451814
-10 69 39.051248
-10 70 27.018512
-10 71 42.201896
-10 72 58.523500
-10 73 60.901560
-10 74 26.248809
-10 75 18.027756
-10 76 30.413813
-10 77 55.036352
-10 78 34.539832
-10 79 21.095023
-10 80 33.241540
-10 81 38.897301
-10 82 45.276926
-10 83 18.788294
-10 84 27.294688
-10 85 47.381431
-10 86 54.341513
-10 87 15.556349
-10 88 11.180340
-10 89 26.925824
-10 90 64.412732
-10 91 29.546573
-10 92 39.623226
-10 93 43.737855
-10 94 53.758720
-10 95 48.764741
-10 96 46.043458
-10 97 48.846699
-10 98 18.027756
-10 99 23.345235
-10 100 16.000000
-10 101 38.275318
-11 1 31.622777
-11 2 47.434165
-11 3 37.000000
-11 4 46.572524
-11 5 41.231056
-11 6 46.097722
-11 7 35.902646
-11 8 35.355339
-11 9 40.311289
-11 10 5.000000
-11 12 2.000000
-11 13 5.385165
-11 14 7.071068
-11 15 7.071068
-11 16 8.000000
-11 17 10.000000
-11 18 11.180340
-11 19 48.795492
-11 20 43.863424
-11 21 40.607881
-11 22 46.097722
-11 23 39.051248
-11 24 44.821870
-11 25 37.536649
-11 26 43.011626
-11 27 85.586214
-11 28 85.146932
-11 29 82.607506
-11 30 80.156098
-11 31 78.638413
-11 32 78.160092
-11 33 77.646635
-11 34 76.485293
-11 35 75.166482
-11 36 72.622311
-11 37 71.063352
-11 38 69.202601
-11 39 65.604878
-11 40 64.031242
-11 41 67.268120
-11 42 59.405387
-11 43 60.207973
-11 44 63.639610
-11 45 61.554854
-11 46 43.174066
-11 47 40.792156
-11 48 9.433981
-11 49 47.423623
-11 50 42.520583
-11 51 62.201286
-11 52 49.244289
-11 53 18.027756
-11 54 14.142136
-11 55 49.244289
-11 56 28.284271
-11 57 40.311289
-11 58 25.000000
-11 59 30.413813
-11 60 20.000000
-11 61 20.615528
-11 62 43.011626
-11 63 55.226805
-11 64 58.523500
-11 65 36.400549
-11 66 25.000000
-11 67 31.144823
-11 68 54.037024
-11 69 36.055513
-11 70 24.186773
-11 71 38.288379
-11 72 57.008771
-11 73 58.600341
-11 74 21.540659
-11 75 22.360680
-11 76 35.355339
-11 77 57.306195
-11 78 39.217343
-11 79 16.124515
-11 80 28.284271
-11 81 37.656341
-11 82 42.953463
-11 83 17.262677
-11 84 28.460499
-11 85 48.270074
-11 86 55.659680
-11 87 19.416488
-11 88 16.124515
-11 89 22.803509
-11 90 66.887966
-11 91 27.892651
-11 92 39.051248
-11 93 43.104524
-11 94 52.392748
-11 95 47.675990
-11 96 46.097722
-11 97 47.127487
-11 98 22.803509
-11 99 20.000000
-11 100 16.763055
-11 101 34.205263
-12 1 33.526109
-12 2 48.104054
-12 3 37.696154
-12 4 47.127487
-12 5 41.761226
-12 6 46.572524
-12 7 36.400549
-12 8 35.693137
-12 9 40.607881
-12 10 5.385165
-12 11 2.000000
-12 13 5.000000
-12 14 5.830952
-12 15 5.830952
-12 16 6.000000
-12 17 8.000000
-12 18 9.433981
-12 19 50.209561
-12 20 45.343136
-12 21 42.201896
-12 22 47.423623
-12 23 40.607881
-12 24 46.097722
-12 25 39.051248
-12 26 44.204072
-12 27 87.572827
-12 28 87.143560
-12 29 84.593144
-12 30 82.152298
-12 31 80.622577
-12 32 80.156098
-12 33 79.630396
-12 34 78.447435
-12 35 77.162167
-12 36 74.202426
-12 37 72.622311
-12 38 70.802542
-12 39 67.201190
-12 40 65.604878
-12 41 68.767725
-12 42 61.032778
-12 43 61.717096
-12 44 65.069194
-12 45 63.031738
-12 46 43.680659
-12 47 41.231056
-12 48 7.810250
-12 49 48.795492
-12 50 44.045431
-12 51 64.195015
-12 52 51.078371
-12 53 19.723083
-12 54 15.620499
-12 55 51.078371
-12 56 29.732137
-12 57 42.296572
-12 58 26.627054
-12 59 30.805844
-12 60 20.099751
-12 61 21.189620
-12 62 44.654227
-12 63 57.218878
-12 64 60.406953
-12 65 38.327536
-12 66 27.000000
-12 67 33.136083
-12 68 56.035703
-12 69 37.735925
-12 70 25.942244
-12 71 39.623226
-12 72 58.940648
-12 73 60.415230
-12 74 20.880613
-12 75 23.323808
-12 76 35.128336
-12 77 59.059292
-12 78 39.924930
-12 79 16.000000
-12 80 28.071338
-12 81 39.623226
-12 82 44.777226
-12 83 19.235384
-12 84 30.364453
-12 85 50.219518
-12 86 57.567352
-12 87 20.615528
-12 88 16.492423
-12 89 24.083189
-12 90 68.600292
-12 91 29.832868
-12 92 41.048752
-12 93 45.099889
-12 94 54.341513
-12 95 49.648766
-12 96 48.093659
-12 97 49.040799
-12 98 22.360680
-12 99 21.633308
-12 100 18.681542
-12 101 35.468296
-13 1 32.388269
-13 2 43.462628
-13 3 33.105891
-13 4 42.379240
-13 5 37.000000
-13 6 41.761226
-13 7 31.622777
-13 8 30.805844
-13 9 35.693137
-13 10 10.198039
-13 11 5.385165
-13 12 5.000000
-13 14 10.440307
-13 15 3.000000
-13 16 7.810250
-13 17 9.433981
-13 18 8.000000
-13 19 53.814496
-13 20 48.795492
-13 21 45.343136
-13 22 51.224994
-13 23 43.863424
-13 24 50.000000
-13 25 42.426407
-13 26 48.259714
-13 27 88.283634
-13 28 87.572827
-13 29 85.328776
-13 30 82.607506
-13 31 81.394103
-13 32 80.622577
-13 33 80.411442
-13 34 79.555012
-13 35 77.646635
-13 36 71.281134
-13 37 69.634761
-13 38 67.955868
-13 39 64.350602
-13 40 62.681736
-13 41 65.604878
-13 42 58.309519
-13 43 58.600341
-13 44 61.717096
-13 45 59.816386
-13 46 38.897301
-13 47 36.400549
-13 48 6.000000
-13 49 52.497619
-13 50 47.381431
-13 51 64.776539
-13 52 53.235327
-13 53 22.671568
-13 54 13.000000
-13 55 49.335586
-13 56 26.627054
-13 57 43.174066
-13 58 29.732137
-13 59 35.693137
-13 60 25.079872
-13 61 16.552945
-13 62 42.059482
-13 63 57.870545
-13 64 62.241465
-13 65 39.924930
-13 66 27.459060
-13 67 33.955854
-13 68 56.080300
-13 69 35.341194
-13 70 24.041631
-13 71 36.124784
-13 72 57.870545
-13 73 58.523500
-13 74 16.155494
-13 75 27.730849
-13 76 40.112342
-13 77 61.587336
-13 78 44.598206
-13 79 11.000000
-13 80 23.086793
-13 81 39.051248
-13 82 43.011626
-13 83 19.104973
-13 84 32.202484
-13 85 51.546096
-13 86 59.236813
-13 87 24.698178
-13 88 21.377558
-13 89 20.615528
-13 90 71.281134
-13 91 29.068884
-13 92 41.109610
-13 93 45.044423
-13 94 53.460266
-13 95 49.091751
-13 96 48.662100
-13 97 47.853944
-13 98 27.294688
-13 99 19.313208
-13 100 20.591260
-13 101 31.827661
-14 1 38.078866
-14 2 53.851648
-14 3 43.462628
-14 4 52.810984
-14 5 47.434165
-14 6 52.201533
-14 7 42.059482
-14 8 41.231056
-14 9 46.097722
-14 10 5.000000
-14 11 7.071068
-14 12 5.830952
-14 13 10.440307
-14 15 10.000000
-14 16 5.830952
-14 17 7.071068
-14 18 11.180340
-14 19 49.203658
-14 20 44.654227
-14 21 42.059482
-14 22 46.097722
-14 23 40.311289
-14 24 44.598206
-14 25 38.587563
-14 26 42.426407
-14 27 90.138782
-14 28 90.000000
-14 29 87.143560
-14 30 85.000000
-14 31 83.150466
-14 32 83.000000
-14 33 82.152298
-14 34 80.622577
-14 35 80.000000
-14 36 79.649231
-14 37 78.102497
-14 38 76.216796
-14 39 72.622311
-14 40 71.063352
-14 41 74.330344
-14 42 66.400301
-14 43 67.268120
-14 44 70.710678
-14 45 68.622154
-14 46 49.335586
-14 47 46.840154
-14 48 10.440307
-14 49 47.634021
-14 50 43.566042
-14 51 67.000000
-14 52 52.201533
-14 53 20.615528
-14 54 21.213203
-14 55 55.901699
-14 56 35.355339
-14 57 45.000000
-14 58 26.925824
-14 59 26.925824
-14 60 15.811388
-14 61 26.925824
-14 62 50.000000
-14 63 60.000000
-14 64 61.846584
-14 65 40.311289
-14 66 30.413813
-14 67 36.055513
-14 68 59.413803
-14 69 43.011626
-14 70 31.064449
-14 71 45.343136
-14 72 63.245553
-14 73 65.299311
-14 74 25.179357
-14 75 21.213203
-14 76 30.000000
-14 77 59.615434
-14 78 36.715120
-14 79 21.213203
-14 80 33.015148
-14 81 43.680659
-14 82 49.648766
-14 83 23.409400
-14 84 32.249031
-14 85 52.345009
-14 86 59.228372
-14 87 19.416488
-14 88 13.038405
-14 89 29.832868
-14 90 68.876701
-14 91 34.176015
-14 92 44.553339
-14 93 48.662100
-14 94 58.523500
-14 95 53.600373
-14 96 51.039201
-14 97 53.488316
-14 98 17.029386
-14 99 27.018512
-14 100 21.000000
-14 101 41.231056
-15 1 35.355339
-15 2 44.721360
-15 3 34.481879
-15 4 43.462628
-15 5 38.078866
-15 6 42.720019
-15 7 32.695565
-15 8 31.622777
-15 9 36.400549
-15 10 11.180340
-15 11 7.071068
-15 12 5.830952
-15 13 3.000000
-15 14 10.000000
-15 16 5.830952
-15 17 7.071068
-15 18 5.000000
-15 19 55.865911
-15 20 50.931326
-15 21 47.634021
-15 22 53.150729
-15 23 46.097722
-15 24 51.855569
-15 25 44.598206
-15 26 50.000000
-15 27 91.241438
-15 28 90.553851
-15 29 88.283634
-15 30 85.586214
-15 31 84.344532
-15 32 83.600239
-15 33 83.360662
-15 34 82.462113
-15 35 80.622577
-15 36 73.783467
-15 37 72.111026
-15 38 70.491134
-15 39 66.887966
-15 40 65.192024
-15 41 68.007353
-15 42 60.901560
-15 43 61.032778
-15 44 64.031242
-15 45 62.201286
-15 46 39.924930
-15 47 37.336309
-15 48 3.000000
-15 49 54.488531
-15 50 49.578221
-15 51 67.742158
-15 52 55.901699
-15 53 25.000000
-15 54 15.811388
-15 55 52.201533
-15 56 29.154759
-15 57 46.097722
-15 58 32.015621
-15 59 36.400549
-15 60 25.495098
-15 61 18.027756
-15 62 44.721360
-15 63 60.827625
-15 64 65.000000
-15 65 42.720019
-15 66 30.413813
-15 67 36.878178
-15 68 59.076222
-15 69 38.078866
-15 70 26.925824
-15 71 38.418745
-15 72 60.827625
-15 73 61.351447
-15 74 15.297059
-15 75 29.154759
-15 76 40.000000
-15 77 64.140471
-15 78 45.694639
-15 79 11.401754
-15 80 23.021729
-15 81 42.047592
-15 82 45.880279
-15 83 22.090722
-15 84 34.928498
-15 85 54.405882
-15 86 62.032250
-15 87 26.400758
-15 88 22.135944
-15 89 23.021729
-15 90 73.783467
-15 91 32.062439
-15 92 44.102154
-15 93 48.041649
-15 94 56.435804
-15 95 52.086467
-15 96 51.623638
-15 97 50.803543
-15 98 27.018512
-15 99 22.135944
-15 100 23.259407
-15 101 34.058773
-16 1 39.293765
-16 2 50.537115
-16 3 40.311289
-16 4 49.244289
-16 5 43.863424
-16 6 48.466483
-16 7 38.483763
-16 8 37.336309
-16 9 42.059482
-16 10 9.433981
-16 11 8.000000
-16 12 6.000000
-16 13 7.810250
-16 14 5.830952
-16 15 5.830952
-16 17 2.000000
-16 18 5.385165
-16 19 54.671748
-16 20 50.000000
-16 21 47.169906
-16 22 51.662365
-16 23 45.486262
-16 24 50.209561
-16 25 43.829214
-16 26 48.104054
-16 27 93.536089
-16 28 93.134312
-16 29 90.553851
-16 30 88.141931
-16 31 86.579443
-16 32 86.145226
-16 33 85.586214
-16 34 84.344532
-16 35 83.150466
-16 36 79.056942
-16 37 77.420927
-16 38 75.716577
-16 39 72.111026
-16 40 70.455660
-16 41 73.409809
-16 42 66.037868
-16 43 66.400301
-16 44 69.526973
-16 45 67.623960
-16 46 45.694639
-16 47 43.081318
-16 48 5.000000
-16 49 53.150729
-16 50 48.826222
-16 51 70.178344
-16 52 56.648036
-16 53 25.079872
-16 54 20.591260
-16 55 56.648036
-16 56 34.409301
-16 57 48.259714
-16 58 31.764760
-16 59 32.695565
-16 60 21.540659
-16 61 23.853721
-16 62 49.739320
-16 63 63.198101
-16 64 66.098411
-16 65 44.147480
-16 66 33.000000
-16 67 39.115214
-16 68 62.032250
-16 69 42.941821
-16 70 31.384710
-16 71 43.931765
-16 72 64.761099
-16 73 65.924199
-16 74 20.000000
-16 75 26.907248
-16 76 35.128336
-16 77 64.404969
-16 78 42.544095
-16 79 17.088007
-16 80 28.284271
-16 81 45.541190
-16 82 50.328918
-16 83 25.179357
-16 84 36.138622
-16 85 56.089215
-16 86 63.324561
-16 87 24.839485
-16 88 18.867962
-16 89 28.425341
-16 90 73.824115
-16 91 35.693137
-16 92 47.042534
-16 93 51.088159
-16 94 60.207973
-16 95 55.578773
-16 96 54.083269
-16 97 54.817880
-16 98 22.090722
-16 99 26.832816
-16 100 24.515301
-16 101 39.623226
-17 1 41.231056
-17 2 51.478151
-17 3 41.340053
-17 4 50.089919
-17 5 44.721360
-17 6 49.244289
-17 7 39.357337
-17 8 38.078866
-17 9 42.720019
-17 10 11.180340
-17 11 10.000000
-17 12 8.000000
-17 13 9.433981
-17 14 7.071068
-17 15 7.071068
-17 16 2.000000
-17 18 5.000000
-17 19 56.222771
-17 20 51.613952
-17 21 48.877398
-17 22 53.150729
-17 23 47.169906
-17 24 51.662365
-17 25 45.486262
-17 26 49.497475
-17 27 95.524866
-17 28 95.131488
-17 29 92.541882
-17 30 90.138782
-17 31 88.566359
-17 32 88.141931
-17 33 87.572827
-17 34 86.313383
-17 35 85.146932
-17 36 80.709355
-17 37 79.056942
-17 38 77.388630
-17 39 73.783467
-17 40 72.111026
-17 41 75.000000
-17 42 67.742158
-17 43 68.007353
-17 44 71.063352
-17 45 69.202601
-17 46 46.518813
-17 47 43.863424
-17 48 5.385165
-17 49 54.671748
-17 50 50.477718
-17 51 72.173402
-17 52 58.523500
-17 53 26.925824
-17 54 22.360680
-17 55 58.523500
-17 56 36.055513
-17 57 50.249378
-17 58 33.541020
-17 59 33.541020
-17 60 22.360680
-17 61 25.000000
-17 62 51.478151
-17 63 65.192024
-17 64 68.007353
-17 65 46.097722
-17 66 35.000000
-17 67 41.109610
-17 68 64.031242
-17 69 44.721360
-17 70 33.241540
-17 71 45.453273
-17 72 66.708320
-17 73 67.779053
-17 74 20.099751
-17 75 28.284271
-17 76 35.355339
-17 77 66.211781
-17 78 43.566042
-17 79 17.888544
-17 80 28.635642
-17 81 47.518417
-17 82 52.201533
-17 83 27.166155
-17 84 38.078866
-17 85 58.051701
-17 86 65.253352
-17 87 26.400758
-17 88 20.000000
-17 89 30.000000
-17 90 75.591005
-17 91 37.656341
-17 92 49.040799
-17 93 53.084838
-17 94 62.169124
-17 95 57.558666
-17 96 56.080300
-17 97 56.753854
-17 98 22.360680
-17 99 28.635642
-17 100 26.476405
-17 101 41.109610
-18 1 40.311289
-18 2 47.169906
-18 3 37.202150
-18 4 45.650849
-18 5 40.311289
-18 6 44.721360
-18 7 34.985711
-18 8 33.541020
-18 9 38.078866
-18 10 14.142136
-18 11 11.180340
-18 12 9.433981
-18 13 8.000000
-18 14 11.180340
-18 15 5.000000
-18 16 5.385165
-18 17 5.000000
-18 19 59.464275
-18 20 54.671748
-18 21 51.613952
-18 22 56.568542
-18 23 50.000000
-18 24 55.172457
-18 25 48.414874
-18 26 53.150729
-18 27 96.176920
-18 28 95.524866
-18 29 93.214806
-18 30 90.553851
-18 31 89.269256
-18 32 88.566359
-18 33 88.283634
-18 34 87.321246
-18 35 85.586214
-18 36 78.032045
-18 37 76.321688
-18 38 74.793048
-18 39 71.196910
-18 40 69.462220
-18 41 72.111026
-18 42 65.299311
-18 43 65.192024
-18 44 68.007353
-18 45 66.287254
-18 46 42.059482
-18 47 39.357337
-18 48 2.000000
-18 49 58.000000
-18 50 53.413481
-18 51 72.691127
-18 52 60.415230
-18 53 29.154759
-18 54 20.615528
-18 55 57.008771
-18 56 33.541020
-18 57 50.990195
-18 58 36.055513
-18 59 38.078866
-18 60 26.925824
-18 61 21.213203
-18 62 49.244289
-18 63 65.764732
-18 64 69.641941
-18 65 47.434165
-18 66 35.355339
-18 67 41.773197
-18 68 64.070274
-18 69 42.720019
-18 70 31.780497
-18 71 42.438190
-18 72 65.764732
-18 73 66.098411
-18 74 15.132746
-18 75 32.015621
-18 76 40.311289
-18 77 68.476273
-18 78 47.885280
-18 79 13.601471
-18 80 23.769729
-18 81 47.042534
-18 82 50.695167
-18 83 27.073973
-18 84 39.560081
-18 85 59.203040
-18 86 66.730802
-18 87 29.698485
-18 88 24.186773
-18 89 27.294688
-18 90 78.032045
-18 91 37.054015
-18 92 49.091751
-18 93 53.037722
-18 94 61.400326
-18 95 57.078893
-18 96 56.568542
-18 97 55.731499
-18 98 27.294688
-18 99 26.925824
-18 100 27.856777
-18 101 38.013156
-19 1 45.177428
-19 2 82.225300
-19 3 73.375745
-19 4 82.969874
-19 5 78.746428
-19 6 83.522452
-19 7 74.672619
-19 8 75.769387
-19 9 80.411442
-19 10 45.343136
-19 11 48.795492
-19 12 50.209561
-19 13 53.814496
-19 14 49.203658
-19 15 55.865911
-19 16 54.671748
-19 17 56.222771
-19 18 59.464275
-19 20 5.385165
-19 21 10.198039
-19 22 4.000000
-19 23 10.770330
-19 24 6.000000
-19 25 11.661904
-19 26 9.000000
-19 27 56.797887
-19 28 59.169249
-19 29 54.120237
-19 30 54.918121
-19 31 50.606324
-19 32 53.254108
-19 33 49.739320
-19 34 45.617979
-19 35 50.803543
-19 36 83.240615
-19 37 82.710338
-19 38 79.812280
-19 39 77.129761
-19 40 76.687678
-19 41 81.584312
-19 42 71.386273
-19 43 75.802375
-19 44 80.752709
-19 45 77.781746
-19 46 80.653580
-19 47 79.378838
-19 48 58.000000
-19 49 2.000000
-19 50 7.280110
-19 51 41.036569
-19 52 18.601075
-19 53 31.400637
-19 54 51.000000
-19 55 56.089215
-19 56 56.753854
-19 57 30.594117
-19 58 24.413111
-19 59 29.427878
-19 60 37.161808
-19 61 62.177166
-19 62 60.008333
-19 63 36.619667
-19 64 25.806976
-19 65 25.019992
-19 66 36.138622
-19 67 32.140317
-19 68 42.059482
-19 69 55.145263
-19 70 48.764741
-19 71 64.629715
-19 72 54.230987
-19 73 62.936476
-19 74 69.202601
-19 75 28.301943
-19 76 39.000000
-19 77 17.464249
-19 78 21.095023
-19 79 62.425956
-19 80 73.573093
-19 81 42.107007
-19 82 53.235327
-19 83 41.629317
-19 84 26.925824
-19 85 27.294688
-19 86 26.172505
-19 87 29.832868
-19 88 37.215588
-19 89 56.648036
-19 90 23.000000
-19 91 42.579338
-19 92 37.336309
-19 93 39.051248
-19 94 49.979996
-19 95 44.922155
-19 96 34.176015
-19 97 50.219518
-19 98 42.059482
-19 99 50.328918
-19 100 34.985711
-19 101 63.348244
-20 1 40.049969
-20 2 76.902536
-20 3 68.007353
-20 4 77.620873
-20 5 73.375745
-20 6 78.160092
-20 7 69.289249
-20 8 70.384657
-20 9 75.026662
-20 10 40.607881
-20 11 43.863424
-20 12 45.343136
-20 13 48.795492
-20 14 44.654227
-20 15 50.931326
-20 16 50.000000
-20 17 51.613952
-20 18 54.671748
-20 19 5.385165
-20 21 5.000000
-20 22 5.385165
-20 23 5.385165
-20 24 6.403124
-20 25 6.403124
-20 26 8.602325
-20 27 56.648036
-20 28 58.600341
-20 29 53.851648
-20 30 54.120237
-20 31 50.159745
-20 32 52.354560
-20 33 49.244289
-20 34 45.541190
-20 35 49.739320
-20 36 79.056942
-20 37 78.447435
-20 38 75.584390
-20 39 72.801099
-20 40 72.277244
-20 41 77.129761
-20 42 66.940272
-20 43 71.196910
-20 44 76.118329
-20 45 73.164199
-20 46 75.286121
-20 47 74.000000
-20 48 53.150729
-20 49 5.000000
-20 50 2.000000
-20 51 39.051248
-20 52 16.401219
-20 53 26.248809
-20 54 45.650849
-20 55 51.662365
-20 56 51.419841
-20 57 26.248809
-20 58 19.209373
-20 59 27.000000
-20 60 33.526109
-20 61 56.824291
-20 62 55.081757
-20 63 33.970576
-20 64 25.079872
-20 65 20.223748
-20 66 30.805844
-20 67 27.018512
-20 68 38.832976
-20 69 50.039984
-20 70 43.416587
-20 71 59.413803
-20 72 50.537115
-20 73 58.872744
-20 74 64.031242
-20 75 24.166092
-20 76 37.336309
-20 77 18.110770
-20 78 20.248457
-20 79 57.201399
-20 80 68.264193
-20 81 37.336309
-20 82 48.507731
-20 83 36.249138
-20 84 21.587033
-20 85 24.207437
-20 86 24.698178
-20 87 25.238859
-20 88 33.105891
-20 89 51.264022
-20 90 25.495098
-20 91 37.336309
-20 92 32.756679
-20 93 34.785054
-20 94 46.097722
-20 95 40.853396
-20 96 30.413813
-20 97 45.880279
-20 98 38.832976
-20 99 44.944410
-20 100 29.681644
-20 101 58.051701
-21 1 35.057096
-21 2 72.034714
-21 3 63.245553
-21 4 72.801099
-21 5 68.622154
-21 6 73.375745
-21 7 64.621978
-21 8 65.795137
-21 9 70.384657
-21 10 37.735925
-21 11 40.607881
-21 12 42.201896
-21 13 45.343136
-21 14 42.059482
-21 15 47.634021
-21 16 47.169906
-21 17 48.877398
-21 18 51.613952
-21 19 10.198039
-21 20 5.000000
-21 22 10.198039
-21 23 2.000000
-21 24 10.770330
-21 25 4.000000
-21 26 12.206556
-21 27 55.081757
-21 28 56.648036
-21 29 52.201533
-21 30 52.000000
-21 31 48.383882
-21 32 50.159745
-21 33 47.434165
-21 34 44.147480
-21 35 47.423623
-21 36 74.330344
-21 37 73.681748
-21 38 70.837843
-21 39 68.007353
-21 40 67.446275
-21 41 72.277244
-21 42 62.096699
-21 43 66.287254
-21 44 71.196910
-21 45 68.249542
-21 46 70.519501
-21 47 69.289249
-21 48 50.000000
-21 49 10.000000
-21 50 3.000000
-21 51 36.055513
-21 52 13.928388
-21 53 22.671568
-21 54 41.340053
-21 55 46.840154
-21 56 46.572524
-21 57 21.540659
-21 58 15.620499
-21 59 27.459060
-21 60 32.388269
-21 61 52.478567
-21 62 50.089919
-21 63 30.479501
-21 64 23.537205
-21 65 15.297059
-21 66 25.961510
-21 67 22.022716
-21 68 34.828150
-21 69 45.044423
-21 70 38.600518
-21 71 54.451814
-21 72 46.141088
-21 73 54.230987
-21 74 60.207973
-21 75 22.561028
-21 76 38.327536
-21 77 18.248288
-21 78 22.472205
-21 79 53.263496
-21 80 64.070274
-21 81 32.388269
-21 82 43.566042
-21 83 31.764760
-21 84 16.763055
-21 85 20.518285
-21 86 22.472205
-21 87 22.847319
-21 88 31.320920
-21 89 46.615448
-21 90 26.925824
-21 91 32.388269
-21 92 27.892651
-21 93 30.083218
-21 94 41.593269
-21 95 36.249138
-21 96 26.076810
-21 97 41.109610
-21 98 38.118237
-21 99 40.311289
-21 100 25.612497
-21 101 53.150729
-22 1 45.000000
-22 2 81.394103
-22 3 72.277244
-22 4 82.000000
-22 5 77.620873
-22 6 82.462113
-22 7 73.375745
-22 8 74.330344
-22 9 79.056942
-22 10 42.426407
-22 11 46.097722
-22 12 47.423623
-22 13 51.224994
-22 14 46.097722
-22 15 53.150729
-22 16 51.662365
-22 17 53.150729
-22 18 56.568542
-22 19 4.000000
-22 20 5.385165
-22 21 10.198039
-22 23 10.000000
-22 24 2.000000
-22 25 10.198039
-22 26 5.000000
-22 27 60.415230
-22 28 62.649820
-22 29 57.697487
-22 30 58.309519
-22 31 54.120237
-22 32 56.603887
-22 33 53.235327
-22 34 49.244289
-22 35 54.083269
-22 36 84.433406
-22 37 83.815273
-22 38 80.956779
-22 39 78.160092
-22 40 77.620873
-22 41 82.462113
-22 42 72.277244
-22 43 76.485293
-22 44 81.394103
-22 45 78.447435
-22 46 79.555012
-22 47 78.160092
-22 48 55.172457
-22 49 2.000000
-22 50 7.280110
-22 51 43.863424
-22 52 21.213203
-22 53 29.154759
-22 54 49.244289
-22 55 57.008771
-22 56 55.901699
-22 57 31.622777
-22 58 22.360680
-22 59 25.495098
-22 60 33.541020
-22 61 60.415230
-22 62 60.207973
-22 63 39.051248
-22 64 29.154759
-22 65 25.495098
-22 66 35.355339
-22 67 32.015621
-22 68 44.102154
-22 69 55.000000
-22 70 47.853944
-22 71 64.195015
-22 72 55.901699
-22 73 64.257295
-22 74 66.850580
-22 75 25.000000
-22 76 35.000000
-22 77 21.189620
-22 78 17.117243
-22 79 60.207973
-22 80 71.589105
-22 81 42.579338
-22 82 53.758720
-22 83 40.162171
-22 84 26.172505
-22 85 29.410882
-22 86 29.206164
-22 87 26.870058
-22 88 33.837849
-22 89 55.362442
-22 90 27.000000
-22 91 42.107007
-22 92 38.078866
-22 93 40.162171
-22 94 51.478151
-22 95 46.238512
-22 96 35.777088
-22 97 51.244512
-22 98 38.275318
-22 99 49.040799
-22 100 33.105891
-22 101 62.649820
-23 1 35.000000
-23 2 71.589105
-23 3 62.641839
-23 4 72.277244
-23 5 68.007353
-23 6 72.801099
-23 7 63.906181
-23 8 65.000000
-23 9 69.641941
-23 10 36.055513
-23 11 39.051248
-23 12 40.607881
-23 13 43.863424
-23 14 40.311289
-23 15 46.097722
-23 16 45.486262
-23 17 47.169906
-23 18 50.000000
-23 19 10.770330
-23 20 5.385165
-23 21 2.000000
-23 22 10.000000
-23 24 10.198039
-23 25 2.000000
-23 26 11.180340
-23 27 57.008771
-23 28 58.523500
-23 29 54.120237
-23 30 53.851648
-23 31 50.289164
-23 32 52.000000
-23 33 49.335586
-23 34 46.097722
-23 35 49.244289
-23 36 75.026662
-23 37 74.330344
-23 38 71.512237
-23 39 68.622154
-23 40 68.007353
-23 41 72.801099
-23 42 62.641839
-23 43 66.708320
-23 44 71.589105
-23 45 68.658576
-23 46 69.921384
-23 47 68.622154
-23 48 48.414874
-23 49 10.198039
-23 50 3.605551
-23 51 37.735925
-23 52 15.811388
-23 53 21.213203
-23 54 40.311289
-23 55 47.434165
-23 56 46.097722
-23 57 22.360680
-23 58 14.142136
-23 59 25.495098
-23 60 30.413813
-23 61 51.478151
-23 62 50.249378
-23 63 32.015621
-23 64 25.495098
-23 65 15.811388
-23 66 25.495098
-23 67 22.022716
-23 68 36.124784
-23 69 45.000000
-23 70 38.078866
-23 71 54.230987
-23 72 47.169906
-23 73 55.036352
-23 74 58.898217
-23 75 20.615528
-23 76 36.400549
-23 77 20.223748
-23 78 20.808652
-23 79 52.009614
-23 80 62.968246
-23 81 32.756679
-23 82 43.931765
-23 83 30.870698
-23 84 16.278821
-23 85 22.022716
-23 86 24.351591
-23 87 21.023796
-23 88 29.410882
-23 89 45.880279
-23 90 28.792360
-23 91 32.140317
-23 92 28.460499
-23 93 30.870698
-23 94 42.544095
-23 95 37.121422
-23 96 27.202941
-23 97 41.785165
-23 98 36.124784
-23 99 39.560081
-23 100 24.413111
-23 101 52.773099
-24 1 45.044423
-24 2 81.049368
-24 3 71.805292
-24 4 81.584312
-24 5 77.129761
-24 6 82.000000
-24 7 72.801099
-24 8 73.681748
-24 9 78.447435
-24 10 41.036569
-24 11 44.821870
-24 12 46.097722
-24 13 50.000000
-24 14 44.598206
-24 15 51.855569
-24 16 50.209561
-24 17 51.662365
-24 18 55.172457
-24 19 6.000000
-24 20 6.403124
-24 21 10.770330
-24 22 2.000000
-24 23 10.198039
-24 25 10.000000
-24 26 3.000000
-24 27 62.241465
-24 28 64.412732
-24 29 59.506302
-24 30 60.033324
-24 31 55.901699
-24 32 58.309519
-24 33 55.009090
-24 34 51.078371
-24 35 55.758407
-24 36 85.094066
-24 37 84.433406
-24 38 81.596569
-24 39 78.746428
-24 40 78.160092
-24 41 82.969874
-24 42 72.801099
-24 43 76.902536
-24 44 81.786307
-24 45 78.854296
-24 46 79.075913
-24 47 77.620873
-24 48 53.814496
-24 49 4.000000
-24 50 8.062258
-24 51 45.343136
-24 52 22.671568
-24 53 28.178006
-24 54 48.466483
-24 55 57.567352
-24 56 55.578773
-24 57 32.310989
-24 58 21.540659
-24 59 23.537205
-24 60 31.764760
-24 61 59.615434
-24 62 60.406953
-24 63 40.360872
-24 64 30.886890
-24 65 25.961510
-24 66 35.128336
-24 67 32.140317
-24 68 45.221676
-24 69 55.036352
-24 70 47.518417
-24 71 64.070274
-24 72 56.824291
-24 73 65.000000
-24 74 65.734314
-24 75 23.430749
-24 76 33.000000
-24 77 23.086793
-24 78 15.132746
-24 79 59.169249
-24 80 70.661163
-24 81 42.953463
-24 82 54.129474
-24 83 39.560081
-24 84 26.019224
-24 85 30.610456
-24 86 30.805844
-24 87 25.495098
-24 88 32.202484
-24 89 54.817880
-24 90 29.000000
-24 91 42.011903
-24 92 38.600518
-24 93 40.853396
-24 94 52.325902
-24 95 47.010637
-24 96 36.715120
-24 97 51.865210
-24 98 36.400549
-24 99 48.507731
-24 100 32.310989
-24 101 62.393910
-25 1 35.057096
-25 2 71.196910
-25 3 62.096699
-25 4 71.805292
-25 5 67.446275
-25 6 72.277244
-25 7 63.245553
-25 8 64.257295
-25 9 68.949257
-25 10 34.409301
-25 11 37.536649
-25 12 39.051248
-25 13 42.426407
-25 14 38.587563
-25 15 44.598206
-25 16 43.829214
-25 17 45.486262
-25 18 48.414874
-25 19 11.661904
-25 20 6.403124
-25 21 4.000000
-25 22 10.198039
-25 23 2.000000
-25 24 10.000000
-25 26 10.440307
-25 27 58.940648
-25 28 60.406953
-25 29 56.044625
-25 30 55.713553
-25 31 52.201533
-25 32 53.851648
-25 33 51.244512
-25 34 48.052055
-25 35 51.078371
-25 36 75.769387
-25 37 75.026662
-25 38 72.235725
-25 39 69.289249
-25 40 68.622154
-25 41 73.375745
-25 42 63.245553
-25 43 67.186308
-25 44 72.034714
-25 45 69.123079
-25 46 69.375788
-25 47 68.007353
-25 48 46.861498
-25 49 10.770330
-25 50 5.000000
-25 51 39.446166
-25 52 17.720045
-25 53 19.849433
-25 54 39.357337
-25 55 48.104054
-25 56 45.705580
-25 57 23.323808
-25 58 12.806248
-25 59 23.537205
-25 60 28.442925
-25 61 50.537115
-25 62 50.487622
-25 63 33.600595
-25 64 27.459060
-25 65 16.552945
-25 66 25.179357
-25 67 22.203603
-25 68 37.483330
-25 69 45.044423
-25 70 37.656341
-25 71 54.083269
-25 72 48.259714
-25 73 55.901699
-25 74 57.628118
-25 75 18.681542
-25 76 34.481879
-25 77 22.203603
-25 78 19.209373
-25 79 50.803543
-25 80 61.911227
-25 81 33.241540
-25 82 44.384682
-25 83 30.083218
-25 84 16.031220
-25 85 23.600847
-25 86 26.248809
-25 87 19.235384
-25 88 27.513633
-25 89 45.221676
-25 90 30.675723
-25 91 32.015621
-25 92 29.154759
-25 93 31.764760
-25 94 43.566042
-25 95 38.078866
-25 96 28.425341
-25 97 42.544095
-25 98 34.132096
-25 99 38.897301
-25 100 23.323808
-25 101 52.469038
-26 1 45.276926
-26 2 80.622577
-26 3 71.196910
-26 4 81.049368
-26 5 76.485293
-26 6 81.394103
-26 7 72.034714
-26 8 72.801099
-26 9 77.620873
-26 10 39.051248
-26 11 43.011626
-26 12 44.204072
-26 13 48.259714
-26 14 42.426407
-26 15 50.000000
-26 16 48.104054
-26 17 49.497475
-26 18 53.150729
-26 19 9.000000
-26 20 8.602325
-26 21 12.206556
-26 22 5.000000
-26 23 11.180340
-26 24 3.000000
-26 25 10.440307
-26 27 65.000000
-26 28 67.082039
-26 29 62.241465
-26 30 62.649820
-26 31 58.600341
-26 32 60.901560
-26 33 57.697487
-26 34 53.851648
-26 35 58.309519
-26 36 86.162637
-26 37 85.440037
-26 38 82.637764
-26 39 79.711982
-26 40 79.056942
-26 41 83.815273
-26 42 73.681748
-26 43 77.620873
-26 44 82.462113
-26 45 79.555012
-26 46 78.447435
-26 47 76.902536
-26 48 51.855569
-26 49 7.000000
-26 50 9.899495
-26 51 47.634021
-26 52 25.000000
-26 53 26.925824
-26 54 47.434165
-26 55 58.523500
-26 56 55.226805
-26 57 33.541020
-26 58 20.615528
-26 59 20.615528
-26 60 29.154759
-26 61 58.523500
-26 62 60.827625
-26 63 42.426407
-26 64 33.541020
-26 65 26.925824
-26 66 35.000000
-26 67 32.557641
-26 68 47.010637
-26 69 55.226805
-26 70 47.169906
-26 71 64.000000
-26 72 58.309519
-26 73 66.211781
-26 74 64.140471
-26 75 21.213203
-26 76 30.000000
-26 77 25.961510
-26 78 12.165525
-26 79 57.706152
-26 80 69.354164
-26 81 43.680659
-26 82 54.817880
-26 83 38.832976
-26 84 26.076810
-26 85 32.557641
-26 86 33.286634
-26 87 23.600847
-26 88 29.832868
-26 89 54.129474
-26 90 32.000000
-26 91 42.047592
-26 92 39.560081
-26 93 42.047592
-26 94 53.712196
-26 95 48.301139
-26 96 38.275318
-26 97 52.924474
-26 98 33.615473
-26 99 47.853944
-26 100 31.320920
-26 101 62.128898
-27 1 58.523500
-27 2 89.022469
-27 3 85.755466
-27 4 91.400219
-27 5 90.138782
-27 6 93.005376
-27 7 89.185201
-27 8 91.787799
-27 9 94.339811
-27 10 85.146932
-27 11 85.586214
-27 12 87.572827
-27 13 88.283634
-27 14 90.138782
-27 15 91.241438
-27 16 93.536089
-27 17 95.524866
-27 18 96.176920
-27 19 56.797887
-27 20 56.648036
-27 21 55.081757
-27 22 60.415230
-27 23 57.008771
-27 24 62.241465
-27 25 58.940648
-27 26 65.000000
-27 28 5.000000
-27 29 3.000000
-27 30 7.071068
-27 31 7.000000
-27 32 8.602325
-27 33 8.000000
-27 34 11.180340
-27 35 11.180340
-27 36 61.717096
-27 37 62.649820
-27 38 60.033324
-27 39 59.908263
-27 40 61.032778
-27 41 65.192024
-27 42 58.258047
-27 43 64.031242
-27 44 68.007353
-27 45 65.604878
-27 46 91.263355
-27 47 91.809586
-27 48 94.201911
-27 49 58.600341
-27 50 55.973208
-27 51 23.537205
-27 52 41.231056
-27 53 70.000000
-27 54 77.620873
-27 55 50.000000
-27 56 71.589105
-27 57 45.276926
-27 58 65.192024
-27 59 82.462113
-27 60 85.586214
-27 61 85.440037
-27 62 61.032778
-27 63 30.413813
-27 64 31.622777
-27 65 50.000000
-27 66 60.827625
-27 67 54.451814
-27 68 33.241540
-27 69 62.649820
-27 70 67.675697
-27 71 71.561163
-27 72 39.051248
-27 73 47.423623
-27 74 97.718985
-27 75 75.663730
-27 76 93.407708
-27 77 39.357337
-27 78 76.896034
-27 79 90.801982
-27 80 96.772930
-27 81 50.921508
-27 82 53.851648
-27 83 69.231496
-27 84 58.008620
-27 85 38.013156
-27 86 32.756679
-27 87 74.242845
-27 88 83.216585
-27 89 76.321688
-27 90 37.536649
-27 91 60.440053
-27 92 47.539457
-27 93 43.965896
-27 94 40.496913
-27 95 42.047592
-27 96 39.623226
-27 97 46.647615
-27 98 91.787799
-27 99 72.422372
-27 100 69.180922
-27 101 73.925638
-28 1 57.008771
-28 2 86.023253
-28 3 83.240615
-28 4 88.481637
-28 5 87.464278
-28 6 90.138782
-28 7 86.769810
-28 8 89.442719
-28 9 91.787799
-28 10 85.000000
-28 11 85.146932
-28 12 87.143560
-28 13 87.572827
-28 14 90.000000
-28 15 90.553851
-28 16 93.134312
-28 17 95.131488
-28 18 95.524866
-28 19 59.169249
-28 20 58.600341
-28 21 56.648036
-28 22 62.649820
-28 23 58.523500
-28 24 64.412732
-28 25 60.406953
-28 26 67.082039
-28 27 5.000000
-28 29 5.830952
-28 30 5.000000
-28 31 8.602325
-28 32 7.000000
-28 33 9.433981
-28 34 14.142136
-28 35 10.000000
-28 36 57.306195
-28 37 58.309519
-28 38 55.758407
-28 39 55.803226
-28 40 57.008771
-28 41 61.032778
-28 42 54.488531
-28 43 60.207973
-28 44 64.031242
-28 45 61.717096
-28 46 88.509886
-28 47 89.185201
-28 48 93.536089
-28 49 60.901560
-28 50 57.775427
-28 51 23.000000
-28 52 42.720019
-28 53 70.178344
-28 54 76.485293
-28 55 47.169906
-28 56 69.641941
-28 57 45.000000
-28 58 65.764732
-28 59 83.815273
-28 60 86.313383
-28 61 83.815273
-28 62 58.309519
-28 63 30.000000
-28 64 33.541020
-28 65 50.249378
-28 66 60.207973
-28 67 54.037024
-28 68 31.780497
-28 69 60.415230
-28 70 66.219333
-28 71 68.963759
-28 72 36.055513
-28 73 43.863424
-28 74 96.301610
-28 75 76.485293
-28 76 94.868330
-28 77 41.880783
-28 78 78.790862
-28 79 89.498603
-28 80 94.921020
-28 81 49.477268
-28 82 51.429563
-28 83 68.468971
-28 84 58.137767
-28 85 38.470768
-28 86 34.176015
-28 87 74.813100
-28 88 83.725743
-28 89 74.632433
-28 90 41.036569
-28 91 59.228372
-28 92 46.529560
-28 93 42.755117
-28 94 38.013156
-28 95 40.162171
-28 96 39.051248
-28 97 44.283180
-28 98 92.574294
-28 99 71.063352
-28 100 69.000000
-28 101 71.554175
-29 1 55.713553
-29 2 86.683332
-29 3 83.216585
-29 4 89.022469
-29 5 87.658428
-29 6 90.603532
-29 7 86.608314
-29 8 89.185201
-29 9 91.809586
-29 10 82.152298
-29 11 82.607506
-29 12 84.593144
-29 13 85.328776
-29 14 87.143560
-29 15 88.283634
-29 16 90.553851
-29 17 92.541882
-29 18 93.214806
-29 19 54.120237
-29 20 53.851648
-29 21 52.201533
-29 22 57.697487
-29 23 54.120237
-29 24 59.506302
-29 25 56.044625
-29 26 62.241465
-29 27 3.000000
-29 28 5.830952
-29 30 5.385165
-29 31 4.000000
-29 32 6.403124
-29 33 5.000000
-29 34 8.602325
-29 35 8.602325
-29 36 60.415230
-29 37 61.269895
-29 38 58.591808
-29 39 58.309519
-29 40 59.363288
-29 41 63.631753
-29 42 56.400355
-29 43 62.201286
-29 44 66.287254
-29 45 63.820060
-29 46 88.814413
-29 47 89.308454
-29 48 91.241438
-29 49 55.901699
-29 50 53.141321
-29 51 20.615528
-29 52 38.327536
-29 53 67.000000
-29 54 74.726167
-29 55 47.634021
-29 56 68.876701
-29 57 42.296572
-29 58 62.201286
-29 59 79.555012
-29 60 82.607506
-29 61 82.637764
-29 62 58.600341
-29 63 27.459060
-29 64 28.792360
-29 65 47.000000
-29 66 57.870545
-29 67 51.478151
-29 68 30.463092
-29 69 60.033324
-29 70 64.845971
-29 71 69.065187
-29 72 36.796739
-29 73 45.453273
-29 74 94.868330
-29 75 72.691127
-29 76 90.520716
-29 77 36.715120
-29 78 74.094534
-29 79 87.931792
-29 80 94.021274
-29 81 48.104054
-29 82 51.312766
-29 83 66.287254
-29 84 55.009090
-29 85 35.014283
-29 86 29.832868
-29 87 71.253070
-29 88 80.224684
-29 89 73.539105
-29 90 35.355339
-29 91 57.567352
-29 92 44.643029
-29 93 41.109610
-29 94 38.013156
-29 95 39.357337
-29 96 36.674242
-29 97 44.102154
-29 98 88.814413
-29 99 69.570109
-29 100 66.189123
-29 101 71.344236
-30 1 52.201533
-30 2 82.006097
-30 3 78.892332
-30 4 84.403791
-30 5 83.216585
-30 6 86.023253
-30 7 82.365041
-30 8 85.000000
-30 9 87.464278
-30 10 80.000000
-30 11 80.156098
-30 12 82.152298
-30 13 82.607506
-30 14 85.000000
-30 15 85.586214
-30 16 88.141931
-30 17 90.138782
-30 18 90.553851
-30 19 54.918121
-30 20 54.120237
-30 21 52.000000
-30 22 58.309519
-30 23 53.851648
-30 24 60.033324
-30 25 55.713553
-30 26 62.649820
-30 27 7.071068
-30 28 5.000000
-30 29 5.385165
-30 31 5.385165
-30 32 2.000000
-30 33 5.830952
-30 34 11.180340
-30 35 5.000000
-30 36 55.036352
-30 37 55.901699
-30 38 53.235327
-30 39 53.000000
-30 40 54.083269
-30 41 58.309519
-30 42 51.224994
-30 43 57.008771
-30 44 61.032778
-30 45 58.600341
-30 46 84.314886
-30 47 84.905830
-30 48 88.566359
-30 49 56.603887
-30 50 53.225934
-30 51 18.000000
-30 52 38.078866
-30 53 65.192024
-30 54 71.589105
-30 55 43.011626
-30 56 65.000000
-30 57 40.000000
-30 58 60.827625
-30 59 79.056942
-30 60 81.394103
-30 61 79.056942
-30 62 54.083269
-30 63 25.000000
-30 64 29.154759
-30 65 45.276926
-30 66 55.226805
-30 67 49.040799
-30 68 26.925824
-30 69 55.901699
-30 70 61.400326
-30 71 64.660653
-30 72 32.015621
-30 73 40.360872
-30 74 91.482239
-30 75 71.589105
-30 76 90.138782
-30 77 37.802116
-30 78 74.249579
-30 79 84.646323
-30 80 90.249654
-30 81 44.643029
-30 82 47.010637
-30 83 63.505905
-30 84 53.150729
-30 85 33.541020
-30 86 29.546573
-30 87 69.871310
-30 88 78.771822
-30 89 69.892775
-30 90 37.802116
-30 91 54.341513
-30 92 41.593269
-30 93 37.854986
-30 94 33.615473
-30 95 35.468296
-30 96 34.058773
-30 97 39.824616
-30 98 87.664132
-30 99 66.219333
-30 100 64.000000
-30 101 67.119297
-31 1 52.000000
-31 2 83.630138
-31 3 79.881162
-31 4 85.912746
-31 5 84.403791
-31 6 87.458562
-31 7 83.216585
-31 8 85.755466
-31 9 88.481637
-31 10 78.160092
-31 11 78.638413
-31 12 80.622577
-31 13 81.394103
-31 14 83.150466
-31 15 84.344532
-31 16 86.579443
-31 17 88.566359
-31 18 89.269256
-31 19 50.606324
-31 20 50.159745
-31 21 48.383882
-31 22 54.120237
-31 23 50.289164
-31 24 55.901699
-31 25 52.201533
-31 26 58.600341
-31 27 7.000000
-31 28 8.602325
-31 29 4.000000
-31 30 5.385165
-31 32 5.000000
-31 33 1.000000
-31 34 5.830952
-31 35 5.830952
-31 36 58.872744
-31 37 59.615434
-31 38 56.859476
-31 39 56.356011
-31 40 57.306195
-31 41 61.717096
-31 42 54.083269
-31 43 59.908263
-31 44 64.140471
-31 45 61.587336
-31 46 85.603738
-31 47 86.023253
-31 48 87.298339
-31 49 52.354560
-31 50 49.396356
-31 51 16.763055
-31 52 34.481879
-31 53 63.000000
-31 54 70.880181
-31 55 44.598206
-31 56 65.299311
-31 57 38.327536
-31 58 58.215118
-31 59 75.690158
-31 60 78.638413
-31 61 78.924014
-31 62 55.443665
-31 63 23.537205
-31 64 25.079872
-31 65 43.000000
-31 66 53.935146
-31 67 47.518417
-31 68 26.832816
-31 69 56.603887
-31 70 61.098281
-31 71 65.802736
-31 72 33.970576
-31 73 43.011626
-31 74 91.082380
-31 75 68.731361
-31 76 86.683332
-31 77 33.286634
-31 78 70.384657
-31 79 84.118963
-31 80 90.376988
-31 81 44.384682
-31 82 48.010416
-31 83 62.369865
-31 84 51.009803
-31 85 31.016125
-31 86 25.961510
-31 87 67.268120
-31 88 76.236474
-31 89 69.856997
-31 90 32.649655
-31 91 53.758720
-31 92 40.804412
-31 93 37.336309
-31 94 34.828150
-31 95 35.846897
-31 96 32.756679
-31 97 40.804412
-31 98 84.852814
-31 99 65.787537
-31 100 62.201286
-31 101 67.955868
-32 1 50.289164
-32 2 80.430094
-32 3 77.175126
-32 4 82.800966
-32 5 81.541401
-32 6 84.403791
-32 7 80.622577
-32 8 83.240615
-32 9 85.755466
-32 10 78.000000
-32 11 78.160092
-32 12 80.156098
-32 13 80.622577
-32 14 83.000000
-32 15 83.600239
-32 16 86.145226
-32 17 88.141931
-32 18 88.566359
-32 19 53.254108
-32 20 52.354560
-32 21 50.159745
-32 22 56.603887
-32 23 52.000000
-32 24 58.309519
-32 25 53.851648
-32 26 60.901560
-32 27 8.602325
-32 28 7.000000
-32 29 6.403124
-32 30 2.000000
-32 31 5.000000
-32 33 5.099020
-32 34 10.440307
-32 35 3.000000
-32 36 54.230987
-32 37 55.036352
-32 38 52.325902
-32 39 51.971146
-32 40 53.000000
-32 41 57.306195
-32 42 50.000000
-32 43 55.803226
-32 44 59.908263
-32 45 57.428216
-32 46 82.661962
-32 47 83.216585
-32 48 86.579443
-32 49 54.918121
-32 50 51.429563
-32 51 16.000000
-32 52 36.249138
-32 53 63.198101
-32 54 69.634761
-32 55 41.400483
-32 56 63.158531
-32 57 38.000000
-32 58 58.855756
-32 59 77.162167
-32 60 79.429214
-32 61 77.162167
-32 62 52.430907
-32 63 23.000000
-32 64 27.459060
-32 65 43.289722
-32 66 53.235327
-32 67 47.042534
-32 68 25.000000
-32 69 54.120237
-32 70 59.481089
-32 71 62.968246
-32 72 30.479501
-32 73 39.051248
-32 74 89.560036
-32 75 69.634761
-32 76 88.255311
-32 77 36.235342
-32 78 72.449983
-32 79 82.710338
-32 80 88.391176
-32 81 42.720019
-32 82 45.276926
-32 83 61.522354
-32 84 51.156622
-32 85 31.575307
-32 86 27.730849
-32 87 67.896981
-32 88 76.791927
-32 89 68.007353
-32 90 36.619667
-32 91 52.392748
-32 92 39.623226
-32 93 35.902646
-32 94 31.906112
-32 95 33.615473
-32 96 32.062439
-32 97 38.078866
-32 98 85.702975
-32 99 64.288413
-32 100 62.000000
-32 101 65.368188
-33 1 51.078371
-33 2 82.879430
-33 3 79.056942
-33 4 85.146932
-33 5 83.600239
-33 6 86.683332
-33 7 82.377181
-33 8 84.905830
-33 9 87.658428
-33 10 77.162167
-33 11 77.646635
-33 12 79.630396
-33 13 80.411442
-33 14 82.152298
-33 15 83.360662
-33 16 85.586214
-33 17 87.572827
-33 18 88.283634
-33 19 49.739320
-33 20 49.244289
-33 21 47.434165
-33 22 53.235327
-33 23 49.335586
-33 24 55.009090
-33 25 51.244512
-33 26 57.697487
-33 27 8.000000
-33 28 9.433981
-33 29 5.000000
-33 30 5.830952
-33 31 1.000000
-33 32 5.099020
-33 34 5.385165
-33 35 5.385165
-33 36 58.523500
-33 37 59.236813
-33 38 56.462377
-33 39 55.901699
-33 40 56.824291
-33 41 61.269895
-33 42 53.535035
-33 43 59.363288
-33 44 63.631753
-33 45 61.057350
-33 46 84.811556
-33 47 85.211502
-33 48 86.313383
-33 49 51.478151
-33 50 48.466483
-33 51 15.811388
-33 52 33.526109
-33 53 62.000000
-33 54 69.921384
-33 55 43.863424
-33 56 64.412732
-33 57 37.336309
-33 58 57.218878
-33 59 74.726167
-33 60 77.646635
-33 61 78.000000
-33 62 54.671748
-33 63 22.561028
-33 64 24.166092
-33 65 42.000000
-33 66 52.952809
-33 67 46.529560
-33 68 25.942244
-33 69 55.758407
-33 70 60.166436
-33 71 65.000000
-33 72 33.301652
-33 73 42.438190
-33 74 90.138782
-33 75 67.742158
-33 76 85.726309
-33 77 32.449961
-33 78 69.462220
-33 79 83.168504
-33 80 89.470666
-33 81 43.462628
-33 82 47.201695
-33 83 61.392182
-33 84 50.009999
-33 85 30.016662
-33 86 25.000000
-33 87 66.272166
-33 88 75.239617
-33 89 68.942005
-33 90 32.015621
-33 91 52.810984
-33 92 39.849718
-33 93 36.400549
-33 94 34.058773
-33 95 34.985711
-33 96 31.780497
-33 97 40.000000
-33 98 83.862983
-33 99 64.845971
-33 100 61.204575
-33 101 67.119297
-34 1 51.478151
-34 2 84.852814
-34 3 80.430094
-34 4 87.000000
-34 5 85.146932
-34 6 88.459030
-34 7 83.600239
-34 8 86.023253
-34 9 89.022469
-34 10 75.663730
-34 11 76.485293
-34 12 78.447435
-34 13 79.555012
-34 14 80.622577
-34 15 82.462113
-34 16 84.344532
-34 17 86.313383
-34 18 87.321246
-34 19 45.617979
-34 20 45.541190
-34 21 44.147480
-34 22 49.244289
-34 23 46.097722
-34 24 51.078371
-34 25 48.052055
-34 26 53.851648
-34 27 11.180340
-34 28 14.142136
-34 29 8.602325
-34 30 11.180340
-34 31 5.830952
-34 32 10.440307
-34 33 5.385165
-34 35 10.000000
-34 36 62.641839
-34 37 63.245553
-34 38 60.406953
-34 39 59.615434
-34 40 60.415230
-34 41 65.000000
-34 42 56.824291
-34 43 62.649820
-34 44 67.082039
-34 45 64.412732
-34 46 86.452299
-34 47 86.683332
-34 48 85.375641
-34 49 47.423623
-34 50 44.922155
-34 51 16.401219
-34 52 30.413813
-34 53 60.207973
-34 54 69.641941
-34 55 46.097722
-34 56 65.192024
-34 57 36.400549
-34 58 55.000000
-34 59 71.589105
-34 60 75.166482
-34 61 78.262379
-34 62 56.568542
-34 63 22.360680
-34 64 20.615528
-34 65 40.311289
-34 66 52.201533
-34 67 45.607017
-34 68 27.018512
-34 69 57.008771
-34 70 60.373835
-34 71 66.603303
-34 72 36.055513
-34 73 45.650849
-34 74 90.077744
-34 75 65.192024
-34 76 82.462113
-34 77 28.178006
-34 78 65.787537
-34 79 83.006024
-34 80 89.944427
-34 81 43.908997
-34 82 48.836462
-34 83 60.728906
-34 84 48.373546
-34 85 28.284271
-34 86 22.090722
-34 87 64.007812
-34 88 73.006849
-34 89 69.354164
-34 90 26.907248
-34 91 52.801515
-34 92 39.812058
-34 93 36.715120
-34 94 36.124784
-34 95 36.235342
-34 96 31.384710
-34 97 41.725292
-34 98 81.301906
-34 99 64.884513
-34 100 59.841457
-34 101 68.410526
-35 1 47.434165
-35 2 78.102497
-35 3 74.625733
-35 4 80.430094
-35 5 79.056942
-35 6 82.006097
-35 7 78.032045
-35 8 80.622577
-35 9 83.216585
-35 10 75.000000
-35 11 75.166482
-35 12 77.162167
-35 13 77.646635
-35 14 80.000000
-35 15 80.622577
-35 16 83.150466
-35 17 85.146932
-35 18 85.586214
-35 19 50.803543
-35 20 49.739320
-35 21 47.423623
-35 22 54.083269
-35 23 49.244289
-35 24 55.758407
-35 25 51.078371
-35 26 58.309519
-35 27 11.180340
-35 28 10.000000
-35 29 8.602325
-35 30 5.000000
-35 31 5.830952
-35 32 3.000000
-35 33 5.385165
-35 34 10.000000
-35 36 53.141321
-35 37 53.851648
-35 38 51.078371
-35 39 50.537115
-35 40 51.478151
-35 41 55.901699
-35 42 48.259714
-35 43 54.083269
-35 44 58.309519
-35 45 55.758407
-35 46 80.212219
-35 47 80.709355
-35 48 83.600239
-35 49 52.430907
-35 50 48.764741
-35 51 13.000000
-35 52 33.541020
-35 53 60.207973
-35 54 66.708320
-35 55 39.051248
-35 56 60.415230
-35 57 35.000000
-35 58 55.901699
-35 59 74.330344
-35 60 76.485293
-35 61 74.330344
-35 62 50.000000
-35 63 20.000000
-35 64 25.000000
-35 65 40.311289
-35 66 50.249378
-35 67 44.045431
-35 68 22.135944
-35 69 51.478151
-35 70 56.612719
-35 71 60.464866
-35 72 28.284271
-35 73 37.202150
-35 74 86.683332
-35 75 66.708320
-35 76 85.440037
-35 77 33.970576
-35 78 69.771054
-35 79 79.812280
-35 80 85.615419
-35 81 39.849718
-35 82 42.720019
-35 83 58.549125
-35 84 48.166378
-35 85 28.635642
-35 86 25.059928
-35 87 64.938432
-35 88 73.824115
-35 89 65.192024
-35 90 34.985711
-35 91 49.477268
-35 92 36.674242
-35 93 32.984845
-35 94 29.410882
-35 95 30.870698
-35 96 29.068884
-35 97 35.510562
-35 98 82.764727
-35 99 61.400326
-35 100 59.000000
-35 101 62.769419
-36 1 44.204072
-36 2 42.000000
-36 3 46.097722
-36 4 45.000000
-36 5 47.265209
-36 6 47.000000
-36 7 50.009999
-36 8 52.952809
-36 9 52.239832
-36 10 75.822160
-36 11 72.622311
-36 12 74.202426
-36 13 71.281134
-36 14 79.649231
-36 15 73.783467
-36 16 79.056942
-36 17 80.709355
-36 18 78.032045
-36 19 83.240615
-36 20 79.056942
-36 21 74.330344
-36 22 84.433406
-36 23 75.026662
-36 24 85.094066
-36 25 75.769387
-36 26 86.162637
-36 27 61.717096
-36 28 57.306195
-36 29 60.415230
-36 30 55.036352
-36 31 58.872744
-36 32 54.230987
-36 33 58.523500
-36 34 62.641839
-36 35 53.141321
-36 37 2.000000
-36 38 3.605551
-36 39 7.071068
-36 40 8.602325
-36 41 7.000000
-36 42 13.453624
-36 43 13.000000
-36 44 12.000000
-36 45 12.369317
-36 46 47.095647
-36 47 49.254441
-36 48 76.321688
-36 49 83.815273
-36 50 77.162167
-36 51 50.249378
-36 52 66.098411
-36 53 69.202601
-36 54 58.600341
-36 55 27.730849
-36 56 44.654227
-36 57 52.810984
-36 58 70.491134
-36 59 91.263355
-36 60 86.452299
-36 61 57.697487
-36 62 29.732137
-36 63 50.039984
-36 64 65.030762
-36 65 59.236813
-36 66 55.217751
-36 67 54.589376
-36 68 43.104524
-36 69 36.796739
-36 70 48.836462
-36 71 35.777088
-36 72 30.066593
-36 73 20.396078
-36 74 69.641941
-36 75 80.212219
-36 76 101.212647
-36 77 73.334848
-36 78 93.059121
-36 79 65.741920
-36 80 63.324561
-36 81 42.941821
-36 82 32.449961
-36 83 58.000000
-36 84 61.773781
-36 85 56.885851
-36 86 62.128898
-36 87 76.400262
-36 88 82.134037
-36 89 50.774009
-36 90 80.000000
-36 91 48.414874
-36 92 46.615448
-36 93 44.271887
-36 94 33.541020
-36 95 38.327536
-36 96 49.244289
-36 97 33.241540
-36 98 91.967386
-36 99 52.630789
-36 100 64.660653
-36 101 40.249224
-37 1 43.011626
-37 2 40.000000
-37 3 44.147480
-37 4 43.000000
-37 5 45.276926
-37 6 45.000000
-37 7 48.052055
-37 8 50.990195
-37 9 50.249378
-37 10 74.330344
-37 11 71.063352
-37 12 72.622311
-37 13 69.634761
-37 14 78.102497
-37 15 72.111026
-37 16 77.420927
-37 17 79.056942
-37 18 76.321688
-37 19 82.710338
-37 20 78.447435
-37 21 73.681748
-37 22 83.815273
-37 23 74.330344
-37 24 84.433406
-37 25 75.026662
-37 26 85.440037
-37 27 62.649820
-37 28 58.309519
-37 29 61.269895
-37 30 55.901699
-37 31 59.615434
-37 32 55.036352
-37 33 59.236813
-37 34 63.245553
-37 35 53.851648
-37 36 2.000000
-37 38 3.000000
-37 39 5.830952
-37 40 7.071068
-37 41 5.000000
-37 42 12.206556
-37 43 11.180340
-37 44 10.000000
-37 45 10.440307
-37 46 45.099889
-37 47 47.265209
-37 48 74.625733
-37 49 83.240615
-37 50 76.537572
-37 51 50.487622
-37 52 65.764732
-37 53 68.007353
-37 54 57.008771
-37 55 26.925824
-37 56 43.011626
-37 57 52.201533
-37 58 69.462220
-37 59 90.138782
-37 60 85.146932
-37 61 55.901699
-37 62 28.284271
-37 63 50.000000
-37 64 65.000000
-37 65 58.523500
-37 66 54.083269
-37 67 53.665631
-37 68 43.011626
-37 69 35.355339
-37 70 47.381431
-37 71 34.000000
-37 72 30.000000
-37 73 20.099751
-37 74 67.779053
-37 75 79.056942
-37 76 100.000000
-37 77 73.171033
-37 78 92.130342
-37 79 63.953108
-37 80 61.400326
-37 81 42.047592
-37 82 31.384710
-37 83 56.639209
-37 84 60.827625
-37 85 56.568542
-37 86 62.032250
-37 87 75.213031
-37 88 80.808415
-37 89 49.091751
-37 90 80.024996
-37 91 47.201695
-37 92 45.880279
-37 93 43.680659
-37 94 33.241540
-37 95 37.854986
-37 96 48.836462
-37 97 32.572995
-37 98 90.609050
-37 99 51.088159
-37 100 63.411355
-37 101 38.470768
-38 1 40.607881
-38 2 40.112342
-38 3 43.566042
-38 4 43.104524
-38 5 45.044423
-38 6 45.099889
-38 7 47.518417
-38 8 50.487622
-38 9 50.039984
-38 10 72.346389
-38 11 69.202601
-38 12 70.802542
-38 13 67.955868
-38 14 76.216796
-38 15 70.491134
-38 16 75.716577
-38 17 77.388630
-38 18 74.793048
-38 19 79.812280
-38 20 75.584390
-38 21 70.837843
-38 22 80.956779
-38 23 71.512237
-38 24 81.596569
-38 25 72.235725
-38 26 82.637764
-38 27 60.033324
-38 28 55.758407
-38 29 58.591808
-38 30 53.235327
-38 31 56.859476
-38 32 52.325902
-38 33 56.462377
-38 34 60.406953
-38 35 51.078371
-38 36 3.605551
-38 37 3.000000
-38 39 3.605551
-38 40 5.385165
-38 41 5.830952
-38 42 9.899495
-38 43 10.198039
-38 44 10.440307
-38 45 10.000000
-38 46 45.000000
-38 47 47.042534
-38 48 73.061618
-38 49 80.361682
-38 50 73.681748
-38 51 47.518417
-38 52 62.801274
-38 53 65.604878
-38 54 55.217751
-38 55 24.166092
-38 56 41.340053
-38 57 49.335586
-38 58 66.887966
-38 59 87.658428
-38 60 82.879430
-38 61 54.626001
-38 62 26.248809
-38 63 47.000000
-38 64 62.000000
-38 65 55.713553
-38 66 51.613952
-38 67 51.000000
-38 68 40.012498
-38 69 33.301652
-38 70 45.343136
-38 71 32.695565
-38 72 27.000000
-38 73 17.117243
-38 74 66.730802
-38 75 76.609399
-38 76 97.616597
-38 77 70.178344
-38 78 89.470666
-38 79 62.649820
-38 80 60.638272
-38 81 39.357337
-38 82 28.844410
-38 83 54.451814
-38 84 58.180753
-38 85 53.600373
-38 86 59.033889
-38 87 72.801099
-38 88 78.568442
-38 89 47.507894
-38 90 77.025970
-38 91 44.821870
-38 92 43.081318
-38 93 40.804412
-38 94 30.265492
-38 95 34.928498
-38 96 45.891176
-38 97 29.732137
-38 98 88.413800
-38 99 49.203658
-38 100 61.073726
-38 101 37.161808
-39 1 37.202150
-39 2 37.336309
-39 3 40.311289
-39 4 40.311289
-39 5 42.000000
-39 6 42.296572
-39 7 44.283180
-39 8 47.265209
-39 9 47.000000
-39 10 68.767725
-39 11 65.604878
-39 12 67.201190
-39 13 64.350602
-39 14 72.622311
-39 15 66.887966
-39 16 72.111026
-39 17 73.783467
-39 18 71.196910
-39 19 77.129761
-39 20 72.801099
-39 21 68.007353
-39 22 78.160092
-39 23 68.622154
-39 24 78.746428
-39 25 69.289249
-39 26 79.711982
-39 27 59.908263
-39 28 55.803226
-39 29 58.309519
-39 30 53.000000
-39 31 56.356011
-39 32 51.971146
-39 33 55.901699
-39 34 59.615434
-39 35 50.537115
-39 36 7.071068
-39 37 5.830952
-39 38 3.605551
-39 40 2.000000
-39 41 5.385165
-39 42 6.403124
-39 43 7.000000
-39 44 8.602325
-39 45 7.280110
-39 46 42.047592
-39 47 44.000000
-39 48 69.462220
-39 49 77.620873
-39 50 70.880181
-39 51 46.097722
-39 52 60.406953
-39 53 62.201286
-39 54 51.613952
-39 55 21.189620
-39 56 37.735925
-39 57 46.572524
-39 58 63.631753
-39 59 84.314886
-39 60 79.397733
-39 61 51.078371
-39 62 22.671568
-39 63 45.099889
-39 64 60.074953
-39 65 52.810984
-39 66 48.259714
-39 67 47.853944
-39 68 38.052595
-39 69 29.732137
-39 70 41.773197
-39 71 29.154759
-39 72 25.179357
-39 73 15.033296
-39 74 63.245553
-39 75 73.239334
-39 76 94.201911
-39 77 68.029405
-39 78 86.313383
-39 79 59.093147
-39 80 57.271284
-39 81 36.249138
-39 82 25.553865
-39 83 50.931326
-39 84 55.009090
-39 85 51.244512
-39 86 57.008771
-39 87 69.404611
-39 88 75.073298
-39 89 43.908997
-39 90 75.166482
-39 91 41.400483
-39 92 40.162171
-39 93 38.078866
-39 94 28.017851
-39 95 32.388269
-39 96 43.416587
-39 97 26.925824
-39 98 84.899941
-39 99 45.607017
-39 100 57.628118
-39 101 33.615473
-40 1 36.055513
-40 2 35.355339
-40 3 38.327536
-40 4 38.327536
-40 5 40.000000
-40 6 40.311289
-40 7 42.296572
-40 8 45.276926
-40 9 45.000000
-40 10 67.268120
-40 11 64.031242
-40 12 65.604878
-40 13 62.681736
-40 14 71.063352
-40 15 65.192024
-40 16 70.455660
-40 17 72.111026
-40 18 69.462220
-40 19 76.687678
-40 20 72.277244
-40 21 67.446275
-40 22 77.620873
-40 23 68.007353
-40 24 78.160092
-40 25 68.622154
-40 26 79.056942
-40 27 61.032778
-40 28 57.008771
-40 29 59.363288
-40 30 54.083269
-40 31 57.306195
-40 32 53.000000
-40 33 56.824291
-40 34 60.415230
-40 35 51.478151
-40 36 8.602325
-40 37 7.071068
-40 38 5.385165
-40 39 2.000000
-40 41 5.000000
-40 42 5.385165
-40 43 5.000000
-40 44 7.071068
-40 45 5.385165
-40 46 40.049969
-40 47 42.000000
-40 48 67.742158
-40 49 77.129761
-40 50 70.342022
-40 51 46.572524
-40 52 60.207973
-40 53 61.032778
-40 54 50.000000
-40 55 20.615528
-40 56 36.055513
-40 57 46.097722
-40 58 62.649820
-40 59 83.216585
-40 60 78.102497
-40 61 49.244289
-40 62 21.213203
-40 63 45.276926
-40 64 60.207973
-40 65 52.201533
-40 66 47.169906
-40 67 47.010637
-40 68 38.209946
-40 69 28.284271
-40 70 40.311289
-40 71 27.313001
-40 72 25.495098
-40 73 15.297059
-40 74 61.351447
-40 75 72.111026
-40 76 93.005376
-40 77 68.000000
-40 78 85.428333
-40 79 57.271284
-40 80 55.317267
-40 81 35.468296
-40 82 24.596748
-40 83 49.578221
-40 84 54.129474
-40 85 51.088159
-40 86 57.078893
-40 87 68.242216
-40 88 73.756356
-40 89 42.190046
-40 90 75.325958
-40 91 40.224371
-40 92 39.560081
-40 93 37.656341
-40 94 28.017851
-40 95 32.140317
-40 96 43.185646
-40 97 26.476405
-40 98 83.546394
-40 99 44.045431
-40 100 56.400355
-40 101 31.780497
-41 1 40.311289
-41 2 35.000000
-41 3 39.293765
-41 4 38.000000
-41 5 40.311289
-41 6 40.000000
-41 7 43.174066
-41 8 46.097722
-41 9 45.276926
-41 10 70.710678
-41 11 67.268120
-41 12 68.767725
-41 13 65.604878
-41 14 74.330344
-41 15 68.007353
-41 16 73.409809
-41 17 75.000000
-41 18 72.111026
-41 19 81.584312
-41 20 77.129761
-41 21 72.277244
-41 22 82.462113
-41 23 72.801099
-41 24 82.969874
-41 25 73.375745
-41 26 83.815273
-41 27 65.192024
-41 28 61.032778
-41 29 63.631753
-41 30 58.309519
-41 31 61.717096
-41 32 57.306195
-41 33 61.269895
-41 34 65.000000
-41 35 55.901699
-41 36 7.000000
-41 37 5.000000
-41 38 5.830952
-41 39 5.385165
-41 40 5.000000
-41 42 10.198039
-41 43 7.071068
-41 44 5.000000
-41 45 5.830952
-41 46 40.112342
-41 47 42.296572
-41 48 70.455660
-41 49 82.000000
-41 50 75.186435
-41 51 51.419841
-41 52 65.192024
-41 53 65.192024
-41 54 53.150729
-41 55 25.495098
-41 56 39.051248
-41 57 50.990195
-41 58 67.082039
-41 59 87.464278
-41 60 82.006097
-41 61 51.478151
-41 62 25.000000
-41 63 50.249378
-41 64 65.192024
-41 65 57.008771
-41 66 51.478151
-41 67 51.623638
-41 68 43.185646
-41 69 32.015621
-41 70 43.931765
-41 71 29.681644
-41 72 30.413813
-41 73 20.223748
-41 74 63.158531
-41 75 76.321688
-41 76 97.082439
-41 77 73.000000
-41 78 89.961103
-41 79 59.539903
-41 80 56.612719
-41 81 40.162171
-41 82 29.154759
-41 83 53.413481
-41 84 58.694122
-41 85 56.080300
-41 86 62.072538
-41 87 72.401657
-41 88 77.620873
-41 89 45.000000
-41 90 80.305666
-41 91 44.418465
-41 92 44.384682
-41 93 42.579338
-41 94 33.015148
-41 95 37.121422
-41 96 48.166378
-41 97 31.400637
-41 98 87.321246
-41 99 47.381431
-41 100 60.464866
-41 101 34.132096
-42 1 30.805844
-42 2 34.481879
-42 3 36.000000
-42 4 37.363083
-42 5 38.327536
-42 6 39.293765
-42 7 40.000000
-42 8 43.000000
-42 9 43.289722
-42 10 62.481997
-42 11 59.405387
-42 12 61.032778
-42 13 58.309519
-42 14 66.400301
-42 15 60.901560
-42 16 66.037868
-42 17 67.742158
-42 18 65.299311
-42 19 71.386273
-42 20 66.940272
-42 21 62.096699
-42 22 72.277244
-42 23 62.641839
-42 24 72.801099
-42 25 63.245553
-42 26 73.681748
-42 27 58.258047
-42 28 54.488531
-42 29 56.400355
-42 30 51.224994
-42 31 54.083269
-42 32 50.000000
-42 33 53.535035
-42 34 56.824291
-42 35 48.259714
-42 36 13.453624
-42 37 12.206556
-42 38 9.899495
-42 39 6.403124
-42 40 5.385165
-42 41 10.198039
-42 43 5.830952
-42 44 10.440307
-42 45 7.615773
-42 46 38.639358
-42 47 40.311289
-42 48 63.529521
-42 49 71.805292
-42 50 65.000000
-42 51 42.379240
-42 52 55.081757
-42 53 55.803226
-42 54 45.486262
-42 55 15.297059
-42 56 31.764760
-42 57 40.792156
-42 58 57.306195
-42 59 77.935871
-42 60 73.000000
-42 61 45.541190
-42 62 16.401219
-42 63 40.607881
-42 64 55.443665
-42 65 46.840154
-42 66 41.880783
-42 67 41.629317
-42 68 33.541020
-42 69 23.430749
-42 70 35.468296
-42 71 23.769729
-42 72 21.189620
-42 73 11.180340
-42 74 57.974132
-42 75 66.850580
-42 76 87.800911
-42 77 63.031738
-42 78 80.056230
-42 79 53.488316
-42 80 52.469038
-42 81 30.083218
-42 82 19.235384
-42 83 44.553339
-42 84 48.754487
-42 85 46.010868
-42 86 52.239832
-42 87 63.007936
-42 88 68.680419
-42 89 38.013156
-42 90 70.576200
-42 91 35.000000
-42 92 34.205263
-42 93 32.388269
-42 94 23.194827
-42 95 27.018512
-42 96 38.052595
-42 97 21.213203
-42 98 78.517514
-42 99 39.408121
-42 100 51.224994
-42 101 28.160256
-43 1 33.541020
-43 2 30.413813
-43 3 33.376639
-43 4 33.376639
-43 5 35.000000
-43 6 35.355339
-43 7 37.336309
-43 8 40.311289
-43 9 40.000000
-43 10 63.639610
-43 11 60.207973
-43 12 61.717096
-43 13 58.600341
-43 14 67.268120
-43 15 61.032778
-43 16 66.400301
-43 17 68.007353
-43 18 65.192024
-43 19 75.802375
-43 20 71.196910
-43 21 66.287254
-43 22 76.485293
-43 23 66.708320
-43 24 76.902536
-43 25 67.186308
-43 26 77.620873
-43 27 64.031242
-43 28 60.207973
-43 29 62.201286
-43 30 57.008771
-43 31 59.908263
-43 32 55.803226
-43 33 59.363288
-43 34 62.649820
-43 35 54.083269
-43 36 13.000000
-43 37 11.180340
-43 38 10.198039
-43 39 7.000000
-43 40 5.000000
-43 41 7.071068
-43 42 5.830952
-43 44 5.000000
-43 45 2.000000
-43 46 35.057096
-43 47 37.000000
-43 48 63.513778
-43 49 76.118329
-43 50 69.231496
-43 51 48.104054
-43 52 60.000000
-43 53 58.309519
-43 54 46.097722
-43 55 20.000000
-43 56 32.015621
-43 57 45.276926
-43 58 60.415230
-43 59 80.622577
-43 60 75.000000
-43 61 44.721360
-43 62 18.027756
-43 63 46.097722
-43 64 60.827625
-43 65 50.990195
-43 66 44.721360
-43 67 45.221676
-43 68 39.051248
-43 69 25.000000
-43 70 36.878178
-43 71 22.825424
-43 72 26.925824
-43 73 17.000000
-43 74 56.648036
-43 75 69.462220
-43 76 90.138782
-43 77 68.183576
-43 78 83.384651
-43 79 52.773099
-43 80 50.447993
-43 81 33.955854
-43 82 22.803509
-43 83 46.400431
-43 84 52.201533
-43 85 51.039201
-43 86 57.558666
-43 87 65.513357
-43 88 70.604532
-43 89 38.013156
-43 90 75.953933
-43 91 37.589892
-43 92 38.470768
-43 93 37.054015
-43 94 28.635642
-43 95 32.062439
-43 96 43.011626
-43 97 26.000000
-43 98 80.280757
-43 99 40.311289
-43 100 53.535035
-43 101 27.294688
-44 1 38.078866
-44 2 30.000000
-44 3 34.481879
-44 4 33.000000
-44 5 35.355339
-44 6 35.000000
-44 7 38.327536
-44 8 41.231056
-44 9 40.311289
-44 10 67.268120
-44 11 63.639610
-44 12 65.069194
-44 13 61.717096
-44 14 70.710678
-44 15 64.031242
-44 16 69.526973
-44 17 71.063352
-44 18 68.007353
-44 19 80.752709
-44 20 76.118329
-44 21 71.196910
-44 22 81.394103
-44 23 71.589105
-44 24 81.786307
-44 25 72.034714
-44 26 82.462113
-44 27 68.007353
-44 28 64.031242
-44 29 66.287254
-44 30 61.032778
-44 31 64.140471
-44 32 59.908263
-44 33 63.631753
-44 34 67.082039
-44 35 58.309519
-44 36 12.000000
-44 37 10.000000
-44 38 10.440307
-44 39 8.602325
-44 40 7.071068
-44 41 5.000000
-44 42 10.440307
-44 43 5.000000
-44 45 3.000000
-44 46 35.128336
-44 47 37.336309
-44 48 66.400301
-44 49 81.049368
-44 50 74.148500
-44 51 52.810984
-44 52 65.000000
-44 53 62.649820
-44 54 49.497475
-44 55 25.000000
-44 56 35.355339
-44 57 50.249378
-44 58 65.000000
-44 59 85.000000
-44 60 79.056942
-44 61 47.169906
-44 62 22.360680
-44 63 50.990195
-44 64 65.764732
-44 65 55.901699
-44 66 49.244289
-44 67 50.000000
-44 68 43.931765
-44 69 29.154759
-44 70 40.804412
-44 71 25.612497
-44 72 31.622777
-44 73 21.540659
-44 74 58.600341
-44 75 73.824115
-44 76 94.339811
-44 77 73.171033
-44 78 88.022724
-44 79 55.226805
-44 80 51.865210
-44 81 38.832976
-44 82 27.658633
-44 83 50.477718
-44 84 56.920998
-44 85 56.035703
-44 86 62.513998
-44 87 69.835521
-44 88 74.632433
-44 89 41.109610
-44 90 80.894994
-44 91 42.047592
-44 92 43.416587
-44 93 42.047592
-44 94 33.541020
-44 95 37.054015
-44 96 48.010416
-44 97 31.000000
-44 98 84.202138
-44 99 43.931765
-44 100 57.801384
-44 101 30.000000
-45 1 35.341194
-45 2 30.149627
-45 3 33.734256
-45 4 33.136083
-45 5 35.057096
-45 6 35.128336
-45 7 37.656341
-45 8 40.607881
-45 9 40.049969
-45 10 65.069194
-45 11 61.554854
-45 12 63.031738
-45 13 59.816386
-45 14 68.622154
-45 15 62.201286
-45 16 67.623960
-45 17 69.202601
-45 18 66.287254
-45 19 77.781746
-45 20 73.164199
-45 21 68.249542
-45 22 78.447435
-45 23 68.658576
-45 24 78.854296
-45 25 69.123079
-45 26 79.555012
-45 27 65.604878
-45 28 61.717096
-45 29 63.820060
-45 30 58.600341
-45 31 61.587336
-45 32 57.428216
-45 33 61.057350
-45 34 64.412732
-45 35 55.758407
-45 36 12.369317
-45 37 10.440307
-45 38 10.000000
-45 39 7.280110
-45 40 5.385165
-45 41 5.830952
-45 42 7.615773
-45 43 2.000000
-45 44 3.000000
-45 46 35.000000
-45 47 37.054015
-45 48 64.637450
-45 49 78.089692
-45 50 71.196910
-45 51 49.979996
-45 52 62.000000
-45 53 60.033324
-45 54 47.423623
-45 55 22.000000
-45 56 33.301652
-45 57 47.265209
-45 58 62.241465
-45 59 82.365041
-45 60 76.609399
-45 61 45.650849
-45 62 19.723083
-45 63 48.052055
-45 64 62.801274
-45 65 52.952809
-45 66 46.518813
-45 67 47.127487
-45 68 41.000000
-45 69 26.627054
-45 70 38.418745
-45 71 23.853721
-45 72 28.792360
-45 73 18.788294
-45 74 57.384667
-45 75 71.196910
-45 76 91.809586
-45 77 70.178344
-45 78 85.234969
-45 79 53.712196
-45 80 50.960769
-45 81 35.902646
-45 82 24.738634
-45 83 48.010416
-45 84 54.083269
-45 85 53.037722
-45 86 59.539903
-45 87 67.230945
-45 88 72.201108
-45 89 39.204592
-45 90 77.929455
-45 91 39.357337
-45 92 40.447497
-45 93 39.051248
-45 94 30.594117
-45 95 34.058773
-45 96 45.011110
-45 97 28.000000
-45 98 81.835200
-45 99 41.725292
-45 100 55.226805
-45 101 28.301943
-46 1 37.735925
-46 2 5.830952
-46 3 7.280110
-46 4 3.605551
-46 5 2.000000
-46 6 3.000000
-46 7 7.280110
-46 8 8.602325
-46 9 5.385165
-46 10 48.052055
-46 11 43.174066
-46 12 43.680659
-46 13 38.897301
-46 14 49.335586
-46 15 39.924930
-46 16 45.694639
-46 17 46.518813
-46 18 42.059482
-46 19 80.653580
-46 20 75.286121
-46 21 70.519501
-46 22 79.555012
-46 23 69.921384
-46 24 79.075913
-46 25 69.375788
-46 26 78.447435
-46 27 91.263355
-46 28 88.509886
-46 29 88.814413
-46 30 84.314886
-46 31 85.603738
-46 32 82.661962
-46 33 84.811556
-46 34 86.452299
-46 35 80.212219
-46 36 47.095647
-46 37 45.099889
-46 38 45.000000
-46 39 42.047592
-46 40 40.049969
-46 41 40.112342
-46 42 38.639358
-46 43 35.057096
-46 44 35.128336
-46 45 35.000000
-46 47 2.828427
-46 48 41.146081
-46 49 80.081209
-46 50 73.375745
-46 51 70.092796
-46 52 71.196910
-46 53 52.239832
-46 54 32.000000
-46 55 41.340053
-46 56 24.166092
-46 57 55.758407
-46 58 57.870545
-46 59 72.173402
-46 60 62.801274
-46 61 22.561028
-46 62 30.232433
-46 63 65.069194
-46 64 76.609399
-46 65 57.697487
-46 66 44.598206
-46 67 49.658836
-46 68 59.464275
-46 69 29.732137
-46 70 31.953091
-46 71 19.849433
-46 72 52.478567
-46 73 46.238512
-46 74 28.425341
-46 75 62.000000
-46 76 78.447435
-46 77 80.622577
-46 78 79.056942
-46 79 28.635642
-46 80 19.798990
-46 81 44.204072
-46 82 37.643060
-46 83 39.623226
-46 84 53.758720
-46 85 64.637450
-46 86 73.006849
-46 87 58.008620
-46 88 58.549125
-46 89 24.331050
-46 90 90.210864
-46 91 38.910153
-46 92 49.406477
-46 93 51.088159
-46 94 50.803543
-46 95 50.249378
-46 96 57.628118
-46 97 44.821870
-46 98 65.969690
-46 99 30.594117
-46 100 47.381431
-46 101 18.601075
-47 1 37.202150
-47 2 8.602325
-47 3 6.403124
-47 4 6.403124
-47 5 2.000000
-47 6 5.385165
-47 7 5.000000
-47 8 5.830952
-47 9 3.000000
-47 10 45.705580
-47 11 40.792156
-47 12 41.231056
-47 13 36.400549
-47 14 46.840154
-47 15 37.336309
-47 16 43.081318
-47 17 43.863424
-47 18 39.357337
-47 19 79.378838
-47 20 74.000000
-47 21 69.289249
-47 22 78.160092
-47 23 68.622154
-47 24 77.620873
-47 25 68.007353
-47 26 76.902536
-47 27 91.809586
-47 28 89.185201
-47 29 89.308454
-47 30 84.905830
-47 31 86.023253
-47 32 83.216585
-47 33 85.211502
-47 34 86.683332
-47 35 80.709355
-47 36 49.254441
-47 37 47.265209
-47 38 47.042534
-47 39 44.000000
-47 40 42.000000
-47 41 42.296572
-47 42 40.311289
-47 43 37.000000
-47 44 37.336309
-47 45 37.054015
-47 46 2.828427
-47 48 38.483763
-47 49 78.746428
-47 50 72.111026
-47 51 70.292247
-47 52 70.491134
-47 53 50.487622
-47 54 30.066593
-47 55 42.059482
-47 56 23.323808
-47 57 55.217751
-47 58 56.293872
-47 59 70.064256
-47 60 60.530984
-47 61 20.223748
-47 62 30.886890
-47 63 65.069194
-47 64 76.216796
-47 65 56.824291
-47 66 43.462628
-47 67 48.764741
-47 68 59.665736
-47 69 29.732137
-47 70 30.870698
-47 71 20.248457
-47 72 53.235327
-47 73 47.434165
-47 74 25.612497
-47 75 60.033324
-47 76 76.118329
-47 77 79.924965
-47 78 77.162167
-47 79 26.000000
-47 80 16.970563
-47 81 43.931765
-47 82 38.013156
-47 83 38.078866
-47 84 52.554733
-47 85 64.202804
-47 86 72.622311
-47 87 56.080300
-47 88 56.320511
-47 89 22.803509
-47 90 89.587946
-47 91 38.078866
-47 92 49.040799
-47 93 50.931326
-47 94 51.312766
-47 95 50.447993
-47 96 57.384667
-47 97 45.221676
-47 98 63.560994
-47 99 29.120440
-47 100 45.705580
-47 101 18.384776
-48 1 38.327536
-48 2 46.141088
-48 3 36.055513
-48 4 44.721360
-48 5 39.357337
-48 6 43.863424
-48 7 34.000000
-48 8 32.695565
-48 9 37.336309
-48 10 12.806248
-48 11 9.433981
-48 12 7.810250
-48 13 6.000000
-48 14 10.440307
-48 15 3.000000
-48 16 5.000000
-48 17 5.385165
-48 18 2.000000
-48 19 58.000000
-48 20 53.150729
-48 21 50.000000
-48 22 55.172457
-48 23 48.414874
-48 24 53.814496
-48 25 46.861498
-48 26 51.855569
-48 27 94.201911
-48 28 93.536089
-48 29 91.241438
-48 30 88.566359
-48 31 87.298339
-48 32 86.579443
-48 33 86.313383
-48 34 85.375641
-48 35 83.600239
-48 36 76.321688
-48 37 74.625733
-48 38 73.061618
-48 39 69.462220
-48 40 67.742158
-48 41 70.455660
-48 42 63.529521
-48 43 63.513778
-48 44 66.400301
-48 45 64.637450
-48 46 41.146081
-48 47 38.483763
-48 49 56.568542
-48 50 51.855569
-48 51 70.710678
-48 52 58.600341
-48 53 27.459060
-48 54 18.681542
-48 55 55.081757
-48 56 31.764760
-48 57 49.030603
-48 58 34.409301
-48 59 37.336309
-48 60 26.248809
-48 61 19.849433
-48 62 47.423623
-48 63 63.788714
-48 64 67.779053
-48 65 45.541190
-48 66 33.376639
-48 67 39.812058
-48 68 62.072538
-48 69 40.853396
-48 70 29.832868
-48 71 40.804412
-48 72 63.788714
-48 73 64.195015
-48 74 15.000000
-48 75 30.805844
-48 76 40.112342
-48 77 66.730802
-48 78 46.957428
-48 79 12.529964
-48 80 23.345235
-48 81 45.044423
-48 82 48.764741
-48 83 25.079872
-48 84 37.696154
-48 85 57.280014
-48 86 64.845971
-48 87 28.319605
-48 88 23.259407
-48 89 25.553865
-48 90 76.321688
-48 91 35.057096
-48 92 47.095647
-48 93 51.039201
-48 94 59.413803
-48 95 55.081757
-48 96 54.589376
-48 97 53.758720
-48 98 27.073973
-48 99 25.000000
-48 100 26.000000
-48 101 36.400549
-49 1 45.044423
-49 2 81.786307
-49 3 72.801099
-49 4 82.462113
-49 5 78.160092
-49 6 82.969874
-49 7 74.000000
-49 8 75.026662
-49 9 79.711982
-49 10 43.863424
-49 11 47.423623
-49 12 48.795492
-49 13 52.497619
-49 14 47.634021
-49 15 54.488531
-49 16 53.150729
-49 17 54.671748
-49 18 58.000000
-49 19 2.000000
-49 20 5.000000
-49 21 10.000000
-49 22 2.000000
-49 23 10.198039
-49 24 4.000000
-49 25 10.770330
-49 26 7.000000
-49 27 58.600341
-49 28 60.901560
-49 29 55.901699
-49 30 56.603887
-49 31 52.354560
-49 32 54.918121
-49 33 51.478151
-49 34 47.423623
-49 35 52.430907
-49 36 83.815273
-49 37 83.240615
-49 38 80.361682
-49 39 77.620873
-49 40 77.129761
-49 41 82.000000
-49 42 71.805292
-49 43 76.118329
-49 44 81.049368
-49 45 78.089692
-49 46 80.081209
-49 47 78.746428
-49 48 56.568542
-49 50 7.000000
-49 51 42.426407
-49 52 19.849433
-49 53 30.232433
-49 54 50.089919
-49 55 56.515485
-49 56 56.293872
-49 57 31.048349
-49 58 23.323808
-49 59 27.459060
-49 60 35.341194
-49 61 61.269895
-49 62 60.074953
-49 63 37.802116
-49 64 27.459060
-49 65 25.179357
-49 66 35.693137
-49 67 32.015621
-49 68 43.046487
-49 69 55.036352
-49 70 48.270074
-49 71 64.381674
-49 72 55.036352
-49 73 63.568860
-49 74 68.007353
-49 75 26.627054
-49 76 37.000000
-49 77 19.313208
-49 78 19.104973
-49 79 61.294372
-49 80 72.560320
-49 81 42.296572
-49 82 53.460266
-49 83 40.853396
-49 84 26.476405
-49 85 28.301943
-49 86 27.658633
-49 87 28.319605
-49 88 35.510562
-49 89 55.973208
-49 90 25.000000
-49 91 42.296572
-49 92 37.656341
-49 93 39.560081
-49 94 50.695167
-49 95 45.541190
-49 96 34.928498
-49 97 50.695167
-49 98 40.162171
-49 99 49.648766
-49 100 34.000000
-49 101 62.968246
-50 1 38.052595
-50 2 74.953319
-50 3 66.098411
-50 4 75.690158
-50 5 71.470274
-50 6 76.243032
-50 7 67.416615
-50 8 68.541958
-50 9 73.164199
-50 10 39.408121
-50 11 42.520583
-50 12 44.045431
-50 13 47.381431
-50 14 43.566042
-50 15 49.578221
-50 16 48.826222
-50 17 50.477718
-50 18 53.413481
-50 19 7.280110
-50 20 2.000000
-50 21 3.000000
-50 22 7.280110
-50 23 3.605551
-50 24 8.062258
-50 25 5.000000
-50 26 9.899495
-50 27 55.973208
-50 28 57.775427
-50 29 53.141321
-50 30 53.225934
-50 31 49.396356
-50 32 51.429563
-50 33 48.466483
-50 34 44.922155
-50 35 48.764741
-50 36 77.162167
-50 37 76.537572
-50 38 73.681748
-50 39 70.880181
-50 40 70.342022
-50 41 75.186435
-50 42 65.000000
-50 43 69.231496
-50 44 74.148500
-50 45 71.196910
-50 46 73.375745
-50 47 72.111026
-50 48 51.855569
-50 49 7.000000
-50 51 37.802116
-50 52 15.264338
-50 53 24.758837
-50 54 43.908997
-50 55 49.729267
-50 56 49.477268
-50 57 24.351591
-50 58 17.691806
-50 59 27.073973
-50 60 32.984845
-50 61 55.072679
-50 62 53.084838
-50 63 32.526912
-50 64 24.351591
-50 65 18.248288
-50 66 28.861739
-50 67 25.019992
-50 68 37.202150
-50 69 48.041649
-50 70 41.484937
-50 71 57.428216
-50 72 48.764741
-50 73 57.008771
-50 74 62.481997
-50 75 23.409400
-50 76 37.656341
-50 77 18.000000
-50 78 21.023796
-50 79 55.605755
-50 80 66.573268
-50 81 35.355339
-50 82 46.529560
-50 83 34.438351
-50 84 19.646883
-50 85 22.671568
-50 86 23.706539
-50 87 24.186773
-50 88 32.310989
-50 89 49.396356
-50 90 25.961510
-50 91 35.355339
-50 92 30.805844
-50 93 32.893768
-50 94 44.283180
-50 95 39.000000
-50 96 28.653098
-50 97 43.965896
-50 98 38.470768
-50 99 43.081318
-50 100 28.017851
-50 101 56.089215
-51 1 35.341194
-51 2 68.622154
-51 3 64.031242
-51 4 70.710678
-51 5 68.767725
-51 6 72.138755
-51 7 67.201190
-51 8 69.634761
-51 9 72.622311
-51 10 62.000000
-51 11 62.201286
-51 12 64.195015
-51 13 64.776539
-51 14 67.000000
-51 15 67.742158
-51 16 70.178344
-51 17 72.173402
-51 18 72.691127
-51 19 41.036569
-51 20 39.051248
-51 21 36.055513
-51 22 43.863424
-51 23 37.735925
-51 24 45.343136
-51 25 39.446166
-51 26 47.634021
-51 27 23.537205
-51 28 23.000000
-51 29 20.615528
-51 30 18.000000
-51 31 16.763055
-51 32 16.000000
-51 33 15.811388
-51 34 16.401219
-51 35 13.000000
-51 36 50.249378
-51 37 50.487622
-51 38 47.518417
-51 39 46.097722
-51 40 46.572524
-51 41 51.419841
-51 42 42.379240
-51 43 48.104054
-51 44 52.810984
-51 45 49.979996
-51 46 70.092796
-51 47 70.292247
-51 48 70.710678
-51 49 42.426407
-51 50 37.802116
-51 52 22.671568
-51 53 47.265209
-51 54 54.120237
-51 55 30.232433
-51 56 48.877398
-51 57 22.000000
-51 58 43.174066
-51 59 62.241465
-51 60 63.788714
-51 61 62.241465
-51 62 40.360872
-51 63 7.000000
-51 64 16.552945
-51 65 27.459060
-51 66 37.336309
-51 67 31.064449
-51 68 10.630146
-51 69 40.607881
-51 70 44.384682
-51 71 50.249378
-51 72 21.189620
-51 73 31.320920
-51 74 74.330344
-51 75 54.120237
-51 76 73.409809
-51 77 25.942244
-51 78 58.523500
-51 79 67.357256
-51 80 73.790243
-51 81 27.730849
-51 82 32.526912
-51 83 45.705580
-51 84 35.227830
-51 85 16.155494
-51 86 15.000000
-51 87 52.172790
-51 88 61.000000
-51 89 53.225934
-51 90 30.413813
-51 91 37.000000
-51 92 24.041631
-51 93 20.615528
-51 94 20.248457
-51 95 19.849433
-51 96 16.124515
-51 97 25.495098
-51 98 70.092796
-51 99 49.040799
-51 100 46.000000
-51 101 52.009614
-52 1 33.541020
-52 2 71.589105
-52 3 64.140471
-52 4 72.897188
-52 5 69.462220
-52 6 73.824115
-52 7 66.287254
-52 8 68.007353
-52 9 72.111026
-52 10 47.434165
-52 11 49.244289
-52 12 51.078371
-52 13 53.235327
-52 14 52.201533
-52 15 55.901699
-52 16 56.648036
-52 17 58.523500
-52 18 60.415230
-52 19 18.601075
-52 20 16.401219
-52 21 13.928388
-52 22 21.213203
-52 23 15.811388
-52 24 22.671568
-52 25 17.720045
-52 26 25.000000
-52 27 41.231056
-52 28 42.720019
-52 29 38.327536
-52 30 38.078866
-52 31 34.481879
-52 32 36.249138
-52 33 33.526109
-52 34 30.413813
-52 35 33.541020
-52 36 66.098411
-52 37 65.764732
-52 38 62.801274
-52 39 60.406953
-52 40 60.207973
-52 41 65.192024
-52 42 55.081757
-52 43 60.000000
-52 44 65.000000
-52 45 62.000000
-52 46 71.196910
-52 47 70.491134
-52 48 58.600341
-52 49 19.849433
-52 50 15.264338
-52 51 22.671568
-52 53 31.622777
-52 54 46.097722
-52 55 40.000000
-52 56 47.169906
-52 57 15.811388
-52 58 25.495098
-52 59 41.231056
-52 60 45.000000
-52 61 56.568542
-52 62 46.097722
-52 63 18.027756
-52 64 10.000000
-52 65 14.142136
-52 66 28.284271
-52 67 22.022716
-52 68 23.769729
-52 69 42.720019
-52 70 40.000000
-52 71 52.924474
-52 72 36.400549
-52 73 45.705580
-52 74 66.400301
-52 75 35.000000
-52 76 52.201533
-52 77 9.433981
-52 78 36.235342
-52 79 59.203040
-52 80 68.593003
-52 81 28.160256
-52 82 38.470768
-52 83 36.235342
-52 84 21.095023
-52 85 9.219544
-52 86 8.544004
-52 87 34.234486
-52 88 43.185646
-52 89 49.040799
-52 90 19.209373
-52 91 32.449961
-52 92 22.803509
-52 93 23.086793
-52 94 32.557641
-52 95 28.071338
-52 96 17.029386
-52 97 34.000000
-52 98 51.039201
-52 99 43.185646
-52 100 32.649655
-52 101 52.773099
-53 1 25.000000
-53 2 55.000000
-53 3 45.099889
-53 4 55.081757
-53 5 50.249378
-53 6 55.226805
-53 7 45.541190
-53 8 46.097722
-53 9 50.990195
-53 10 15.811388
-53 11 18.027756
-53 12 19.723083
-53 13 22.671568
-53 14 20.615528
-53 15 25.000000
-53 16 25.079872
-53 17 26.925824
-53 18 29.154759
-53 19 31.400637
-53 20 26.248809
-53 21 22.671568
-53 22 29.154759
-53 23 21.213203
-53 24 28.178006
-53 25 19.849433
-53 26 26.925824
-53 27 70.000000
-53 28 70.178344
-53 29 67.000000
-53 30 65.192024
-53 31 63.000000
-53 32 63.198101
-53 33 62.000000
-53 34 60.207973
-53 35 60.207973
-53 36 69.202601
-53 37 68.007353
-53 38 65.604878
-53 39 62.201286
-53 40 61.032778
-53 41 65.192024
-53 42 55.803226
-53 43 58.309519
-53 44 62.649820
-53 45 60.033324
-53 46 52.239832
-53 47 50.487622
-53 48 27.459060
-53 49 30.232433
-53 50 24.758837
-53 51 47.265209
-53 52 31.622777
-53 54 20.615528
-53 55 42.426407
-53 56 30.413813
-53 57 25.495098
-53 58 7.071068
-53 59 22.360680
-53 60 18.027756
-53 61 31.622777
-53 62 40.311289
-53 63 40.311289
-53 64 41.231056
-53 65 20.000000
-53 66 14.142136
-53 67 17.464249
-53 68 40.804412
-53 69 33.541020
-53 70 22.803509
-53 71 40.261644
-53 72 47.169906
-53 73 51.662365
-53 74 37.802116
-53 75 11.180340
-53 76 32.015621
-53 77 39.357337
-53 78 27.073973
-53 79 31.064449
-53 80 42.485292
-53 81 27.802878
-53 82 36.878178
-53 83 13.152946
-53 84 12.041595
-53 85 32.015621
-53 86 38.639358
-53 87 7.211103
-53 88 14.317821
-53 89 28.017851
-53 90 48.877398
-53 91 20.808652
-53 92 26.832816
-53 93 30.870698
-53 94 42.190046
-53 95 36.715120
-53 96 31.780497
-53 97 38.418745
-53 98 24.186773
-53 99 22.022716
-53 100 5.099020
-53 101 37.483330
-54 1 20.000000
-54 2 35.355339
-54 3 25.079872
-54 4 35.057096
-54 5 30.000000
-54 6 35.000000
-54 7 25.079872
-54 8 25.495098
-54 9 30.413813
-54 10 18.027756
-54 11 14.142136
-54 12 15.620499
-54 13 13.000000
-54 14 21.213203
-54 15 15.811388
-54 16 20.591260
-54 17 22.360680
-54 18 20.615528
-54 19 51.000000
-54 20 45.650849
-54 21 41.340053
-54 22 49.244289
-54 23 40.311289
-54 24 48.466483
-54 25 39.357337
-54 26 47.434165
-54 27 77.620873
-54 28 76.485293
-54 29 74.726167
-54 30 71.589105
-54 31 70.880181
-54 32 69.634761
-54 33 69.921384
-54 34 69.641941
-54 35 66.708320
-54 36 58.600341
-54 37 57.008771
-54 38 55.217751
-54 39 51.613952
-54 40 50.000000
-54 41 53.150729
-54 42 45.486262
-54 43 46.097722
-54 44 49.497475
-54 45 47.423623
-54 46 32.000000
-54 47 30.066593
-54 48 18.681542
-54 49 50.089919
-54 50 43.908997
-54 51 54.120237
-54 52 46.097722
-54 53 20.615528
-54 55 36.400549
-54 56 14.142136
-54 57 33.541020
-54 58 26.925824
-54 59 40.311289
-54 60 31.622777
-54 61 11.180340
-54 62 29.154759
-54 63 47.434165
-54 64 54.083269
-54 65 32.015621
-54 66 18.027756
-54 67 24.698178
-54 68 44.721360
-54 69 22.360680
-54 70 11.180340
-54 71 24.207437
-54 72 45.276926
-54 73 45.541190
-54 74 20.591260
-54 75 30.000000
-54 76 47.434165
-54 77 55.172457
-54 78 47.095647
-54 79 13.416408
-54 80 22.803509
-54 81 27.166155
-54 82 30.083218
-54 83 9.899495
-54 84 25.495098
-54 85 42.544095
-54 86 50.774009
-54 87 26.019224
-54 88 27.202941
-54 89 8.944272
-54 90 65.069194
-54 91 17.262677
-54 92 30.083218
-54 93 33.734256
-54 94 41.048752
-54 95 37.054015
-54 96 38.275318
-54 97 35.227830
-54 98 35.777088
-54 99 6.324555
-54 100 16.155494
-54 101 20.248457
-55 1 18.027756
-55 2 39.051248
-55 3 36.249138
-55 4 41.400483
-55 5 40.311289
-55 6 43.011626
-55 7 39.924930
-55 8 42.720019
-55 9 44.721360
-55 10 51.478151
-55 11 49.244289
-55 12 51.078371
-55 13 49.335586
-55 14 55.901699
-55 15 52.201533
-55 16 56.648036
-55 17 58.523500
-55 18 57.008771
-55 19 56.089215
-55 20 51.662365
-55 21 46.840154
-55 22 57.008771
-55 23 47.434165
-55 24 57.567352
-55 25 48.104054
-55 26 58.523500
-55 27 50.000000
-55 28 47.169906
-55 29 47.634021
-55 30 43.011626
-55 31 44.598206
-55 32 41.400483
-55 33 43.863424
-55 34 46.097722
-55 35 39.051248
-55 36 27.730849
-55 37 26.925824
-55 38 24.166092
-55 39 21.189620
-55 40 20.615528
-55 41 25.495098
-55 42 15.297059
-55 43 20.000000
-55 44 25.000000
-55 45 22.000000
-55 46 41.340053
-55 47 42.059482
-55 48 55.081757
-55 49 56.515485
-55 50 49.729267
-55 51 30.232433
-55 52 40.000000
-55 53 42.426407
-55 54 36.400549
-55 56 25.000000
-55 57 25.495098
-55 58 43.011626
-55 59 64.031242
-55 60 60.207973
-55 61 40.000000
-55 62 11.180340
-55 63 26.925824
-55 64 41.231056
-55 65 31.622777
-55 66 28.284271
-55 67 26.925824
-55 68 20.124612
-55 69 15.000000
-55 70 25.298221
-55 71 21.931712
-55 72 11.180340
-55 73 9.433981
-55 74 53.000000
-55 75 53.150729
-55 76 74.330344
-55 77 48.259714
-55 78 65.368188
-55 79 47.169906
-55 80 49.648766
-55 81 15.264338
-55 82 6.324555
-55 83 32.756679
-55 84 34.132096
-55 85 31.064449
-55 86 37.854986
-55 87 49.517674
-55 88 56.080300
-55 89 31.064449
-55 90 56.293872
-55 91 22.203603
-55 92 18.973666
-55 93 17.117243
-55 94 10.000000
-55 95 12.165525
-55 96 23.021729
-55 97 6.000000
-55 98 66.068147
-55 99 30.083218
-55 100 38.288379
-55 101 25.000000
-56 1 14.142136
-56 2 25.495098
-56 3 17.000000
-56 4 26.248809
-56 5 22.360680
-56 6 26.925824
-56 7 19.209373
-56 8 21.213203
-56 9 25.000000
-56 10 32.015621
-56 11 28.284271
-56 12 29.732137
-56 13 26.627054
-56 14 35.355339
-56 15 29.154759
-56 16 34.409301
-56 17 36.055513
-56 18 33.541020
-56 19 56.753854
-56 20 51.419841
-56 21 46.572524
-56 22 55.901699
-56 23 46.097722
-56 24 55.578773
-56 25 45.705580
-56 26 55.226805
-56 27 71.589105
-56 28 69.641941
-56 29 68.876701
-56 30 65.000000
-56 31 65.299311
-56 32 63.158531
-56 33 64.412732
-56 34 65.192024
-56 35 60.415230
-56 36 44.654227
-56 37 43.011626
-56 38 41.340053
-56 39 37.735925
-56 40 36.055513
-56 41 39.051248
-56 42 31.764760
-56 43 32.015621
-56 44 35.355339
-56 45 33.301652
-56 46 24.166092
-56 47 23.323808
-56 48 31.764760
-56 49 56.293872
-56 50 49.477268
-56 51 48.877398
-56 52 47.169906
-56 53 30.413813
-56 54 14.142136
-56 55 25.000000
-56 57 32.015621
-56 58 35.000000
-56 59 52.201533
-56 60 44.721360
-56 61 15.000000
-56 62 15.811388
-56 63 43.011626
-56 64 53.150729
-56 65 33.541020
-56 66 20.615528
-56 67 25.495098
-56 68 38.470768
-56 69 10.000000
-56 70 8.062258
-56 71 10.295630
-56 72 35.355339
-56 73 33.376639
-56 74 28.000000
-56 75 41.231056
-56 76 60.415230
-56 77 56.603887
-56 78 57.428216
-56 79 22.360680
-56 80 25.298221
-56 81 21.400935
-56 82 19.104973
-56 83 17.262677
-56 84 29.832868
-56 85 41.109610
-56 86 49.578221
-56 87 37.107951
-56 88 40.249224
-56 89 6.324555
-56 90 66.287254
-56 91 14.764823
-56 92 26.172505
-56 93 28.600699
-56 94 32.015621
-56 95 29.546573
-56 96 34.713110
-56 97 25.709920
-56 98 49.396356
-56 99 8.944272
-56 100 25.317978
-56 101 7.071068
-57 1 18.027756
-57 2 55.901699
-57 3 48.826222
-57 4 57.306195
-57 5 54.083269
-57 6 58.309519
-57 7 51.224994
-57 8 53.150729
-57 9 57.008771
-57 10 40.000000
-57 11 40.311289
-57 12 42.296572
-57 13 43.174066
-57 14 45.000000
-57 15 46.097722
-57 16 48.259714
-57 17 50.249378
-57 18 50.990195
-57 19 30.594117
-57 20 26.248809
-57 21 21.540659
-57 22 31.622777
-57 23 22.360680
-57 24 32.310989
-57 25 23.323808
-57 26 33.541020
-57 27 45.276926
-57 28 45.000000
-57 29 42.296572
-57 30 40.000000
-57 31 38.327536
-57 32 38.000000
-57 33 37.336309
-57 34 36.400549
-57 35 35.000000
-57 36 52.810984
-57 37 52.201533
-57 38 49.335586
-57 39 46.572524
-57 40 46.097722
-57 41 50.990195
-57 42 40.792156
-57 43 45.276926
-57 44 50.249378
-57 45 47.265209
-57 46 55.758407
-57 47 55.217751
-57 48 49.030603
-57 49 31.048349
-57 50 24.351591
-57 51 22.000000
-57 52 15.811388
-57 53 25.495098
-57 54 33.541020
-57 55 25.495098
-57 56 32.015621
-57 58 22.360680
-57 59 43.011626
-57 60 42.720019
-57 61 43.011626
-57 62 30.413813
-57 63 15.000000
-57 64 21.213203
-57 65 7.071068
-57 66 15.811388
-57 67 9.219544
-57 68 15.652476
-57 69 26.925824
-57 70 25.495098
-57 71 37.161808
-57 72 25.000000
-57 73 32.695565
-57 74 54.120237
-57 75 33.541020
-57 76 54.083269
-57 77 25.079872
-57 78 41.868843
-57 79 46.957428
-57 80 55.000000
-57 81 12.369317
-57 82 23.021729
-57 83 24.351591
-57 84 13.601471
-57 85 9.219544
-57 86 17.691806
-57 87 31.016125
-57 88 39.560081
-57 89 34.713110
-57 90 34.481879
-57 91 17.691806
-57 92 7.071068
-57 93 8.544004
-57 94 20.248457
-57 95 14.764823
-57 96 6.324555
-57 97 19.646883
-57 98 49.040799
-57 99 29.410882
-57 100 24.000000
-57 101 37.215588
-58 1 26.925824
-58 2 60.207973
-58 3 50.635956
-58 4 60.530984
-58 5 55.901699
-58 6 60.827625
-58 7 51.419841
-58 8 52.201533
-58 9 57.008771
-58 10 22.360680
-58 11 25.000000
-58 12 26.627054
-58 13 29.732137
-58 14 26.925824
-58 15 32.015621
-58 16 31.764760
-58 17 33.541020
-58 18 36.055513
-58 19 24.413111
-58 20 19.209373
-58 21 15.620499
-58 22 22.360680
-58 23 14.142136
-58 24 21.540659
-58 25 12.806248
-58 26 20.615528
-58 27 65.192024
-58 28 65.764732
-58 29 62.201286
-58 30 60.827625
-58 31 58.215118
-58 32 58.855756
-58 33 57.218878
-58 34 55.000000
-58 35 55.901699
-58 36 70.491134
-58 37 69.462220
-58 38 66.887966
-58 39 63.631753
-58 40 62.649820
-58 41 67.082039
-58 42 57.306195
-58 43 60.415230
-58 44 65.000000
-58 45 62.241465
-58 46 57.870545
-58 47 56.293872
-58 48 34.409301
-58 49 23.323808
-58 50 17.691806
-58 51 43.174066
-58 52 25.495098
-58 53 7.071068
-58 54 26.925824
-58 55 43.011626
-58 56 35.000000
-58 57 22.360680
-58 59 21.213203
-58 60 20.615528
-58 61 38.078866
-58 62 42.720019
-58 63 36.400549
-58 64 35.355339
-58 65 15.811388
-58 66 15.811388
-58 67 16.278821
-58 68 38.013156
-58 69 36.400549
-58 70 27.018512
-58 71 44.283180
-58 72 46.097722
-58 73 51.855569
-58 74 44.821870
-58 75 11.180340
-58 76 32.015621
-58 77 32.695565
-58 78 23.086793
-58 79 38.013156
-58 80 49.244289
-58 81 27.802878
-58 82 38.078866
-58 83 18.248288
-58 84 9.219544
-58 85 27.294688
-58 86 33.060551
-58 87 9.055385
-58 88 18.027756
-58 89 33.541020
-58 90 42.059482
-58 91 23.086793
-58 92 25.495098
-58 93 29.206164
-58 94 41.109610
-58 95 35.468296
-58 96 28.635642
-58 97 38.288379
-58 98 26.925824
-58 99 27.294688
-58 100 10.770330
-58 101 42.011903
-59 1 47.169906
-59 2 75.663730
-59 3 65.375837
-59 4 75.325958
-59 5 70.178344
-59 6 75.166482
-59 7 65.069194
-59 8 65.000000
-59 9 70.000000
-59 10 25.495098
-59 11 30.413813
-59 12 30.805844
-59 13 35.693137
-59 14 26.925824
-59 15 36.400549
-59 16 32.695565
-59 17 33.541020
-59 18 38.078866
-59 19 29.427878
-59 20 27.000000
-59 21 27.459060
-59 22 25.495098
-59 23 25.495098
-59 24 23.537205
-59 25 23.537205
-59 26 20.615528
-59 27 82.462113
-59 28 83.815273
-59 29 79.555012
-59 30 79.056942
-59 31 75.690158
-59 32 77.162167
-59 33 74.726167
-59 34 71.589105
-59 35 74.330344
-59 36 91.263355
-59 37 90.138782
-59 38 87.658428
-59 39 84.314886
-59 40 83.216585
-59 41 87.464278
-59 42 77.935871
-59 43 80.622577
-59 44 85.000000
-59 45 82.365041
-59 46 72.173402
-59 47 70.064256
-59 48 37.336309
-59 49 27.459060
-59 50 27.073973
-59 51 62.241465
-59 52 41.231056
-59 53 22.360680
-59 54 40.311289
-59 55 64.031242
-59 56 52.201533
-59 57 43.011626
-59 58 21.213203
-59 60 11.180340
-59 61 50.000000
-59 62 62.649820
-59 63 55.901699
-59 64 50.990195
-59 65 36.055513
-59 66 36.055513
-59 67 37.483330
-59 68 58.523500
-59 69 55.901699
-59 70 44.944410
-59 71 62.297673
-59 72 67.268120
-59 73 73.000000
-59 74 51.662365
-59 75 11.180340
-59 76 11.180340
-59 77 45.044423
-59 78 10.630146
-59 79 46.529560
-59 80 58.694122
-59 81 48.918299
-59 82 58.821765
-59 83 35.114100
-59 84 30.413813
-59 85 46.097722
-59 86 49.729267
-59 87 15.231546
-59 88 14.317821
-59 89 48.836462
-59 90 52.239832
-59 91 43.046487
-59 92 46.690470
-59 93 50.328918
-59 94 62.289646
-59 95 56.639209
-59 96 49.091751
-59 97 59.464275
-59 98 13.601471
-59 99 43.416587
-59 100 27.313001
-59 101 59.203040
-60 1 42.426407
-60 2 66.708320
-60 3 56.293872
-60 4 66.098411
-60 5 60.827625
-60 6 65.764732
-60 7 55.578773
-60 8 55.226805
-60 9 60.207973
-60 10 15.000000
-60 11 20.000000
-60 12 20.099751
-60 13 25.079872
-60 14 15.811388
-60 15 25.495098
-60 16 21.540659
-60 17 22.360680
-60 18 26.925824
-60 19 37.161808
-60 20 33.526109
-60 21 32.388269
-60 22 33.541020
-60 23 30.413813
-60 24 31.764760
-60 25 28.442925
-60 26 29.154759
-60 27 85.586214
-60 28 86.313383
-60 29 82.607506
-60 30 81.394103
-60 31 78.638413
-60 32 79.429214
-60 33 77.646635
-60 34 75.166482
-60 35 76.485293
-60 36 86.452299
-60 37 85.146932
-60 38 82.879430
-60 39 79.397733
-60 40 78.102497
-60 41 82.006097
-60 42 73.000000
-60 43 75.000000
-60 44 79.056942
-60 45 76.609399
-60 46 62.801274
-60 47 60.530984
-60 48 26.248809
-60 49 35.341194
-60 50 32.984845
-60 51 63.788714
-60 52 45.000000
-60 53 18.027756
-60 54 31.622777
-60 55 60.207973
-60 56 44.721360
-60 57 42.720019
-60 58 20.615528
-60 59 11.180340
-60 61 40.311289
-60 62 57.008771
-60 63 57.008771
-60 64 55.000000
-60 65 36.400549
-60 66 32.015621
-60 67 35.355339
-60 68 58.309519
-60 69 50.000000
-60 70 38.275318
-60 71 55.009090
-60 72 65.192024
-60 73 69.526973
-60 74 40.792156
-60 75 10.000000
-60 76 15.811388
-60 77 50.635956
-60 78 21.400935
-60 79 36.055513
-60 80 48.166378
-60 81 45.803930
-60 82 54.451814
-60 83 28.600699
-60 84 29.154759
-60 85 47.853944
-60 86 53.084838
-60 87 11.704700
-60 88 4.472136
-60 89 40.496913
-60 90 58.940648
-60 91 38.183766
-60 92 44.777226
-60 93 48.764741
-60 94 60.207973
-60 95 54.708317
-60 96 49.040799
-60 97 56.400355
-60 98 6.324555
-60 99 35.777088
-60 100 21.931712
-60 101 51.478151
-61 1 26.925824
-61 2 26.925824
-61 3 16.552945
-61 4 25.961510
-61 5 20.615528
-61 6 25.495098
-61 7 15.297059
-61 8 15.000000
-61 9 20.000000
-61 10 25.495098
-61 11 20.615528
-61 12 21.189620
-61 13 16.552945
-61 14 26.925824
-61 15 18.027756
-61 16 23.853721
-61 17 25.000000
-61 18 21.213203
-61 19 62.177166
-61 20 56.824291
-61 21 52.478567
-61 22 60.415230
-61 23 51.478151
-61 24 59.615434
-61 25 50.537115
-61 26 58.523500
-61 27 85.440037
-61 28 83.815273
-61 29 82.637764
-61 30 79.056942
-61 31 78.924014
-61 32 77.162167
-61 33 78.000000
-61 34 78.262379
-61 35 74.330344
-61 36 57.697487
-61 37 55.901699
-61 38 54.626001
-61 39 51.078371
-61 40 49.244289
-61 41 51.478151
-61 42 45.541190
-61 43 44.721360
-61 44 47.169906
-61 45 45.650849
-61 46 22.561028
-61 47 20.223748
-61 48 19.849433
-61 49 61.269895
-61 50 55.072679
-61 51 62.241465
-61 52 56.568542
-61 53 31.622777
-61 54 11.180340
-61 55 40.000000
-61 56 15.000000
-61 57 43.011626
-61 58 38.078866
-61 59 50.000000
-61 60 40.311289
-61 62 30.413813
-61 63 55.901699
-61 64 64.031242
-61 65 42.426407
-61 66 28.284271
-61 67 34.713110
-61 68 52.201533
-61 69 25.000000
-61 70 17.888544
-61 71 21.931712
-61 72 50.249378
-61 73 48.259714
-61 74 13.000000
-61 75 40.311289
-61 76 55.901699
-61 77 65.795137
-61 78 57.558666
-61 79 8.062258
-61 80 12.041595
-61 81 34.539832
-61 82 34.058773
-61 83 20.808652
-61 84 36.400549
-61 85 52.201533
-61 86 60.605280
-61 87 36.496575
-61 88 36.124784
-61 89 9.219544
-61 90 75.690158
-61 91 25.553865
-61 92 38.470768
-61 93 41.629317
-61 94 46.690470
-61 95 43.680659
-61 96 47.010637
-61 97 40.447497
-61 98 43.416587
-61 99 13.601471
-61 100 27.313001
-61 101 17.464249
-62 1 15.811388
-62 2 28.284271
-62 3 25.079872
-62 4 30.479501
-62 5 29.154759
-62 6 32.015621
-62 7 28.792360
-62 8 31.622777
-62 9 33.541020
-62 10 46.097722
-62 11 43.011626
-62 12 44.654227
-62 13 42.059482
-62 14 50.000000
-62 15 44.721360
-62 16 49.739320
-62 17 51.478151
-62 18 49.244289
-62 19 60.008333
-62 20 55.081757
-62 21 50.089919
-62 22 60.207973
-62 23 50.249378
-62 24 60.406953
-62 25 50.487622
-62 26 60.827625
-62 27 61.032778
-62 28 58.309519
-62 29 58.600341
-62 30 54.083269
-62 31 55.443665
-62 32 52.430907
-62 33 54.671748
-62 34 56.568542
-62 35 50.000000
-62 36 29.732137
-62 37 28.284271
-62 38 26.248809
-62 39 22.671568
-62 40 21.213203
-62 41 25.000000
-62 42 16.401219
-62 43 18.027756
-62 44 22.360680
-62 45 19.723083
-62 46 30.232433
-62 47 30.886890
-62 48 47.423623
-62 49 60.074953
-62 50 53.084838
-62 51 40.360872
-62 52 46.097722
-62 53 40.311289
-62 54 29.154759
-62 55 11.180340
-62 56 15.811388
-62 57 30.413813
-62 58 42.720019
-62 59 62.649820
-62 60 57.008771
-62 61 30.413813
-62 63 36.055513
-62 64 49.244289
-62 65 35.000000
-62 66 26.925824
-62 67 28.284271
-62 68 29.832868
-62 69 7.071068
-62 70 19.104973
-62 71 10.770330
-62 72 22.360680
-62 73 18.000000
-62 74 43.289722
-62 75 51.478151
-62 76 72.111026
-62 77 55.081757
-62 78 65.787537
-62 79 38.078866
-62 80 39.115214
-62 81 18.110770
-62 82 8.062258
-62 83 28.425341
-62 84 34.928498
-62 85 37.947332
-62 86 45.694639
-62 87 47.507894
-62 88 52.630789
-62 89 22.135944
-62 90 63.906181
-62 91 19.697716
-62 92 23.345235
-62 93 23.409400
-62 94 20.615528
-62 95 20.808652
-62 96 30.083218
-62 97 14.866069
-62 98 62.369865
-62 99 23.021729
-62 100 35.510562
-62 101 14.142136
-63 1 29.154759
-63 2 64.031242
-63 3 58.728187
-63 4 65.946948
-63 5 63.639610
-63 6 67.268120
-63 7 61.717096
-63 8 64.031242
-63 9 67.268120
-63 10 55.000000
-63 11 55.226805
-63 12 57.218878
-63 13 57.870545
-63 14 60.000000
-63 15 60.827625
-63 16 63.198101
-63 17 65.192024
-63 18 65.764732
-63 19 36.619667
-63 20 33.970576
-63 21 30.479501
-63 22 39.051248
-63 23 32.015621
-63 24 40.360872
-63 25 33.600595
-63 26 42.426407
-63 27 30.413813
-63 28 30.000000
-63 29 27.459060
-63 30 25.000000
-63 31 23.537205
-63 32 23.000000
-63 33 22.561028
-63 34 22.360680
-63 35 20.000000
-63 36 50.039984
-63 37 50.000000
-63 38 47.000000
-63 39 45.099889
-63 40 45.276926
-63 41 50.249378
-63 42 40.607881
-63 43 46.097722
-63 44 50.990195
-63 45 48.052055
-63 46 65.069194
-63 47 65.069194
-63 48 63.788714
-63 49 37.802116
-63 50 32.526912
-63 51 7.000000
-63 52 18.027756
-63 53 40.311289
-63 54 47.434165
-63 55 26.925824
-63 56 43.011626
-63 57 15.000000
-63 58 36.400549
-63 59 55.901699
-63 60 57.008771
-63 61 55.901699
-63 62 36.055513
-63 64 15.000000
-63 65 20.615528
-63 66 30.413813
-63 67 24.083189
-63 68 7.071068
-63 69 35.355339
-63 70 38.013156
-63 71 45.343136
-63 72 20.000000
-63 73 30.066593
-63 74 67.779053
-63 75 47.434165
-63 76 67.082039
-63 77 23.537205
-63 78 52.801515
-63 79 60.745370
-63 80 67.601775
-63 81 21.633308
-63 82 28.017851
-63 83 38.832976
-63 84 28.284271
-63 85 10.000000
-63 86 12.165525
-63 87 45.354162
-63 88 54.129474
-63 89 47.010637
-63 90 30.066593
-63 91 30.463092
-63 92 17.464249
-63 93 14.422205
-63 94 17.464249
-63 95 15.264338
-63 96 9.219544
-63 97 21.470911
-63 98 63.324561
-63 99 42.544095
-63 100 39.000000
-63 101 46.690470
-64 1 39.051248
-64 2 76.321688
-64 3 69.814039
-64 4 77.935871
-64 5 75.000000
-64 6 79.056942
-64 7 72.346389
-64 8 74.330344
-64 9 78.102497
-64 10 57.008771
-64 11 58.523500
-64 12 60.406953
-64 13 62.241465
-64 14 61.846584
-64 15 65.000000
-64 16 66.098411
-64 17 68.007353
-64 18 69.641941
-64 19 25.806976
-64 20 25.079872
-64 21 23.537205
-64 22 29.154759
-64 23 25.495098
-64 24 30.886890
-64 25 27.459060
-64 26 33.541020
-64 27 31.622777
-64 28 33.541020
-64 29 28.792360
-64 30 29.154759
-64 31 25.079872
-64 32 27.459060
-64 33 24.166092
-64 34 20.615528
-64 35 25.000000
-64 36 65.030762
-64 37 65.000000
-64 38 62.000000
-64 39 60.074953
-64 40 60.207973
-64 41 65.192024
-64 42 55.443665
-64 43 60.827625
-64 44 65.764732
-64 45 62.801274
-64 46 76.609399
-64 47 76.216796
-64 48 67.779053
-64 49 27.459060
-64 50 24.351591
-64 51 16.552945
-64 52 10.000000
-64 53 41.231056
-64 54 54.083269
-64 55 41.231056
-64 56 53.150729
-64 57 21.213203
-64 58 35.355339
-64 59 50.990195
-64 60 55.000000
-64 61 64.031242
-64 62 49.244289
-64 63 15.000000
-64 65 22.360680
-64 66 36.055513
-64 67 29.410882
-64 68 22.022716
-64 69 47.169906
-64 70 46.690470
-64 71 57.454330
-64 72 35.000000
-64 73 45.044423
-64 74 74.625733
-64 75 45.000000
-64 76 61.846584
-64 77 9.433981
-64 78 45.310043
-64 79 67.416615
-64 80 76.059187
-64 81 32.449961
-64 82 41.231056
-64 83 44.418465
-64 84 30.083218
-64 85 12.041595
-64 86 3.605551
-64 87 44.181444
-64 88 53.150729
-64 89 55.901699
-64 90 15.132746
-64 91 38.897301
-64 92 27.202941
-64 93 25.942244
-64 94 32.249031
-64 95 29.120440
-64 96 19.235384
-64 97 35.440090
-64 98 61.032778
-64 99 50.447993
-64 100 41.785165
-64 101 58.008620
-65 1 20.615528
-65 2 58.523500
-65 3 50.537115
-65 4 59.615434
-65 5 55.901699
-65 6 60.415230
-65 7 52.478567
-65 8 54.083269
-65 9 58.309519
-65 10 35.355339
-65 11 36.400549
-65 12 38.327536
-65 13 39.924930
-65 14 40.311289
-65 15 42.720019
-65 16 44.147480
-65 17 46.097722
-65 18 47.434165
-65 19 25.019992
-65 20 20.223748
-65 21 15.297059
-65 22 25.495098
-65 23 15.811388
-65 24 25.961510
-65 25 16.552945
-65 26 26.925824
-65 27 50.000000
-65 28 50.249378
-65 29 47.000000
-65 30 45.276926
-65 31 43.000000
-65 32 43.289722
-65 33 42.000000
-65 34 40.311289
-65 35 40.311289
-65 36 59.236813
-65 37 58.523500
-65 38 55.713553
-65 39 52.810984
-65 40 52.201533
-65 41 57.008771
-65 42 46.840154
-65 43 50.990195
-65 44 55.901699
-65 45 52.952809
-65 46 57.697487
-65 47 56.824291
-65 48 45.541190
-65 49 25.179357
-65 50 18.248288
-65 51 27.459060
-65 52 14.142136
-65 53 20.000000
-65 54 32.015621
-65 55 31.622777
-65 56 33.541020
-65 57 7.071068
-65 58 15.811388
-65 59 36.055513
-65 60 36.400549
-65 61 42.426407
-65 62 35.000000
-65 63 20.615528
-65 64 22.360680
-65 66 14.142136
-65 67 8.062258
-65 68 22.472205
-65 69 30.413813
-65 70 26.076810
-65 71 40.261644
-65 72 32.015621
-65 73 39.357337
-65 74 52.430907
-65 75 26.925824
-65 76 47.169906
-65 77 23.430749
-65 78 34.828150
-65 79 45.221676
-65 80 54.451814
-65 81 17.117243
-65 82 28.284271
-65 83 22.203603
-65 84 8.062258
-65 85 12.041595
-65 86 19.313208
-65 87 24.738634
-65 88 33.541020
-65 89 35.000000
-65 90 33.301652
-65 91 18.788294
-65 92 12.649111
-65 93 15.264338
-65 94 27.202941
-65 95 21.633308
-65 96 13.038405
-65 97 26.000000
-65 98 42.720019
-65 99 29.068884
-65 100 19.646883
-65 101 39.560081
-66 1 11.180340
-66 2 46.097722
-66 3 37.336309
-66 4 46.840154
-66 5 42.720019
-66 6 47.434165
-66 7 38.910153
-66 8 40.311289
-66 9 44.721360
-66 10 25.495098
-66 11 25.000000
-66 12 27.000000
-66 13 27.459060
-66 14 30.413813
-66 15 30.413813
-66 16 33.000000
-66 17 35.000000
-66 18 35.355339
-66 19 36.138622
-66 20 30.805844
-66 21 25.961510
-66 22 35.355339
-66 23 25.495098
-66 24 35.128336
-66 25 25.179357
-66 26 35.000000
-66 27 60.827625
-66 28 60.207973
-66 29 57.870545
-66 30 55.226805
-66 31 53.935146
-66 32 53.235327
-66 33 52.952809
-66 34 52.201533
-66 35 50.249378
-66 36 55.217751
-66 37 54.083269
-66 38 51.613952
-66 39 48.259714
-66 40 47.169906
-66 41 51.478151
-66 42 41.880783
-66 43 44.721360
-66 44 49.244289
-66 45 46.518813
-66 46 44.598206
-66 47 43.462628
-66 48 33.376639
-66 49 35.693137
-66 50 28.861739
-66 51 37.336309
-66 52 28.284271
-66 53 14.142136
-66 54 18.027756
-66 55 28.284271
-66 56 20.615528
-66 57 15.811388
-66 58 15.811388
-66 59 36.055513
-66 60 32.015621
-66 61 28.284271
-66 62 26.925824
-66 63 30.413813
-66 64 36.055513
-66 65 14.142136
-66 67 6.708204
-66 68 29.068884
-66 69 20.615528
-66 70 12.649111
-66 71 29.000000
-66 72 33.541020
-66 73 37.536649
-66 74 38.587563
-66 75 25.000000
-66 76 46.097722
-66 77 37.536649
-66 78 38.897301
-66 79 31.384710
-66 80 40.311289
-66 81 13.892444
-66 82 22.803509
-66 83 8.544004
-66 84 9.219544
-66 85 24.596748
-66 86 32.756679
-66 87 21.260292
-66 88 28.017851
-66 89 21.095023
-66 90 47.423623
-66 91 7.280110
-66 92 14.142136
-66 93 18.248288
-66 94 28.635642
-66 95 23.409400
-66 96 21.213203
-66 97 24.413111
-66 98 38.013156
-66 99 15.000000
-66 100 10.295630
-66 101 27.294688
-67 1 13.038405
-67 2 50.596443
-67 3 42.485292
-67 4 51.623638
-67 5 47.853944
-67 6 52.392748
-67 7 44.418465
-67 8 46.043458
-67 9 50.249378
-67 10 31.064449
-67 11 31.144823
-67 12 33.136083
-67 13 33.955854
-67 14 36.055513
-67 15 36.878178
-67 16 39.115214
-67 17 41.109610
-67 18 41.773197
-67 19 32.140317
-67 20 27.018512
-67 21 22.022716
-67 22 32.015621
-67 23 22.022716
-67 24 32.140317
-67 25 22.203603
-67 26 32.557641
-67 27 54.451814
-67 28 54.037024
-67 29 51.478151
-67 30 49.040799
-67 31 47.518417
-67 32 47.042534
-67 33 46.529560
-67 34 45.607017
-67 35 44.045431
-67 36 54.589376
-67 37 53.665631
-67 38 51.000000
-67 39 47.853944
-67 40 47.010637
-67 41 51.623638
-67 42 41.629317
-67 43 45.221676
-67 44 50.000000
-67 45 47.127487
-67 46 49.658836
-67 47 48.764741
-67 48 39.812058
-67 49 32.015621
-67 50 25.019992
-67 51 31.064449
-67 52 22.022716
-67 53 17.464249
-67 54 24.698178
-67 55 26.925824
-67 56 25.495098
-67 57 9.219544
-67 58 16.278821
-67 59 37.483330
-67 60 35.355339
-67 61 34.713110
-67 62 28.284271
-67 63 24.083189
-67 64 29.410882
-67 65 8.062258
-67 66 6.708204
-67 68 23.537205
-67 69 23.021729
-67 70 18.027756
-67 71 32.557641
-67 72 30.000000
-67 73 35.608988
-67 74 45.276926
-67 75 27.018512
-67 76 48.166378
-67 77 31.400637
-67 78 38.470768
-67 79 38.078866
-67 80 46.754679
-67 81 11.661904
-67 82 22.472205
-67 83 15.231546
-67 84 7.211103
-67 85 17.888544
-67 86 26.076810
-67 87 23.853721
-67 88 31.780497
-67 89 27.018512
-67 90 41.231056
-67 91 10.770330
-67 92 9.433981
-67 93 13.416408
-67 94 25.000000
-67 95 19.416488
-67 96 15.000000
-67 97 22.022716
-67 98 41.593269
-67 99 21.213203
-67 100 15.132746
-67 101 31.622777
-68 1 25.298221
-68 2 58.051701
-68 3 53.413481
-68 4 60.108236
-68 5 58.137767
-68 6 61.522354
-68 7 56.612719
-68 8 59.076222
-68 9 62.008064
-68 10 54.451814
-68 11 54.037024
-68 12 56.035703
-68 13 56.080300
-68 14 59.413803
-68 15 59.076222
-68 16 62.032250
-68 17 64.031242
-68 18 64.070274
-68 19 42.059482
-68 20 38.832976
-68 21 34.828150
-68 22 44.102154
-68 23 36.124784
-68 24 45.221676
-68 25 37.483330
-68 26 47.010637
-68 27 33.241540
-68 28 31.780497
-68 29 30.463092
-68 30 26.925824
-68 31 26.832816
-68 32 25.000000
-68 33 25.942244
-68 34 27.018512
-68 35 22.135944
-68 36 43.104524
-68 37 43.011626
-68 38 40.012498
-68 39 38.052595
-68 40 38.209946
-68 41 43.185646
-68 42 33.541020
-68 43 39.051248
-68 44 43.931765
-68 45 41.000000
-68 46 59.464275
-68 47 59.665736
-68 48 62.072538
-68 49 43.046487
-68 50 37.202150
-68 51 10.630146
-68 52 23.769729
-68 53 40.804412
-68 54 44.721360
-68 55 20.124612
-68 56 38.470768
-68 57 15.652476
-68 58 38.013156
-68 59 58.523500
-68 60 58.309519
-68 61 52.201533
-68 62 29.832868
-68 63 7.071068
-68 64 22.022716
-68 65 22.472205
-68 66 29.068884
-68 67 23.537205
-68 69 30.000000
-68 70 34.481879
-68 71 39.623226
-68 72 13.038405
-68 73 23.021729
-68 74 64.560050
-68 75 49.193496
-68 76 69.641941
-68 77 30.265492
-68 78 56.586217
-68 79 57.723479
-68 80 63.560994
-68 81 17.720045
-68 82 21.931712
-68 83 37.013511
-68 84 29.154759
-68 85 14.764823
-68 86 19.026298
-68 87 46.615448
-68 88 55.027266
-68 89 43.081318
-68 90 37.121422
-68 91 27.459060
-68 92 15.000000
-68 93 11.045361
-68 94 10.440307
-68 95 9.219544
-68 96 9.433981
-68 97 15.000000
-68 98 64.621978
-68 99 39.293765
-68 100 38.639358
-68 101 41.400483
-69 1 10.000000
-69 2 29.154759
-69 3 23.430749
-69 4 30.805844
-69 5 28.284271
-69 6 32.015621
-69 7 26.627054
-69 8 29.154759
-69 9 32.015621
-69 10 39.051248
-69 11 36.055513
-69 12 37.735925
-69 13 35.341194
-69 14 43.011626
-69 15 38.078866
-69 16 42.941821
-69 17 44.721360
-69 18 42.720019
-69 19 55.145263
-69 20 50.039984
-69 21 45.044423
-69 22 55.000000
-69 23 45.000000
-69 24 55.036352
-69 25 45.044423
-69 26 55.226805
-69 27 62.649820
-69 28 60.415230
-69 29 60.033324
-69 30 55.901699
-69 31 56.603887
-69 32 54.120237
-69 33 55.758407
-69 34 57.008771
-69 35 51.478151
-69 36 36.796739
-69 37 35.355339
-69 38 33.301652
-69 39 29.732137
-69 40 28.284271
-69 41 32.015621
-69 42 23.430749
-69 43 25.000000
-69 44 29.154759
-69 45 26.627054
-69 46 29.732137
-69 47 29.732137
-69 48 40.853396
-69 49 55.036352
-69 50 48.041649
-69 51 40.607881
-69 52 42.720019
-69 53 33.541020
-69 54 22.360680
-69 55 15.000000
-69 56 10.000000
-69 57 26.925824
-69 58 36.400549
-69 59 55.901699
-69 60 50.000000
-69 61 25.000000
-69 62 7.071068
-69 63 35.355339
-69 64 47.169906
-69 65 30.413813
-69 66 20.615528
-69 67 23.021729
-69 68 30.000000
-69 70 12.041595
-69 71 10.295630
-69 72 25.495098
-69 73 23.537205
-69 74 38.000000
-69 75 44.721360
-69 76 65.192024
-69 77 52.000000
-69 78 59.481089
-69 79 32.249031
-69 80 34.928498
-69 81 14.764823
-69 82 9.219544
-69 83 21.400935
-69 84 29.154759
-69 85 35.355339
-69 86 43.566042
-69 87 40.706265
-69 88 45.607017
-69 89 16.124515
-69 90 61.269895
-69 91 13.341664
-69 92 20.124612
-69 93 21.400935
-69 94 22.472205
-69 95 20.808652
-69 96 28.017851
-69 97 16.155494
-69 98 55.317267
-69 99 16.124515
-69 100 28.653098
-69 101 11.401754
-70 1 9.219544
-70 2 33.541020
-70 3 24.698178
-70 4 34.205263
-70 5 30.083218
-70 6 34.785054
-70 7 26.419690
-70 8 28.017851
-70 9 32.249031
-70 10 27.018512
-70 11 24.186773
-70 12 25.942244
-70 13 24.041631
-70 14 31.064449
-70 15 26.925824
-70 16 31.384710
-70 17 33.241540
-70 18 31.780497
-70 19 48.764741
-70 20 43.416587
-70 21 38.600518
-70 22 47.853944
-70 23 38.078866
-70 24 47.518417
-70 25 37.656341
-70 26 47.169906
-70 27 67.675697
-70 28 66.219333
-70 29 64.845971
-70 30 61.400326
-70 31 61.098281
-70 32 59.481089
-70 33 60.166436
-70 34 60.373835
-70 35 56.612719
-70 36 48.836462
-70 37 47.381431
-70 38 45.343136
-70 39 41.773197
-70 40 40.311289
-70 41 43.931765
-70 42 35.468296
-70 43 36.878178
-70 44 40.804412
-70 45 38.418745
-70 46 31.953091
-70 47 30.870698
-70 48 29.832868
-70 49 48.270074
-70 50 41.484937
-70 51 44.384682
-70 52 40.000000
-70 53 22.803509
-70 54 11.180340
-70 55 25.298221
-70 56 8.062258
-70 57 25.495098
-70 58 27.018512
-70 59 44.944410
-70 60 38.275318
-70 61 17.888544
-70 62 19.104973
-70 63 38.013156
-70 64 46.690470
-70 65 26.076810
-70 66 12.649111
-70 67 18.027756
-70 68 34.481879
-70 69 12.041595
-70 71 17.464249
-70 72 34.132096
-70 73 34.539832
-70 74 30.083218
-70 75 33.837849
-70 76 53.712196
-70 77 49.406477
-70 78 49.648766
-70 79 23.345235
-70 80 29.681644
-70 81 16.763055
-70 82 18.973666
-70 83 9.848858
-70 84 21.840330
-70 85 34.713110
-70 86 43.185646
-70 87 29.732137
-70 88 33.837849
-70 89 9.219544
-70 90 59.203040
-70 91 7.810250
-70 92 20.591260
-70 93 23.769729
-70 94 30.000000
-70 95 26.305893
-70 96 29.154759
-70 97 24.083189
-70 98 43.416587
-70 99 5.000000
-70 100 17.720045
-70 101 15.000000
-71 1 19.646883
-71 2 18.867962
-71 3 14.317821
-71 4 20.615528
-71 5 18.601075
-71 6 21.931712
-71 7 18.027756
-71 8 20.880613
-71 9 22.825424
-71 10 42.201896
-71 11 38.288379
-71 12 39.623226
-71 13 36.124784
-71 14 45.343136
-71 15 38.418745
-71 16 43.931765
-71 17 45.453273
-71 18 42.438190
-71 19 64.629715
-71 20 59.413803
-71 21 54.451814
-71 22 64.195015
-71 23 54.230987
-71 24 64.070274
-71 25 54.083269
-71 26 64.000000
-71 27 71.561163
-71 28 68.963759
-71 29 69.065187
-71 30 64.660653
-71 31 65.802736
-71 32 62.968246
-71 33 65.000000
-71 34 66.603303
-71 35 60.464866
-71 36 35.777088
-71 37 34.000000
-71 38 32.695565
-71 39 29.154759
-71 40 27.313001
-71 41 29.681644
-71 42 23.769729
-71 43 22.825424
-71 44 25.612497
-71 45 23.853721
-71 46 19.849433
-71 47 20.248457
-71 48 40.804412
-71 49 64.381674
-71 50 57.428216
-71 51 50.249378
-71 52 52.924474
-71 53 40.261644
-71 54 24.207437
-71 55 21.931712
-71 56 10.295630
-71 57 37.161808
-71 58 44.283180
-71 59 62.297673
-71 60 55.009090
-71 61 21.931712
-71 62 10.770330
-71 63 45.343136
-71 64 57.454330
-71 65 40.261644
-71 66 29.000000
-71 67 32.557641
-71 68 39.623226
-71 69 10.295630
-71 70 17.464249
-71 72 33.105891
-71 73 28.284271
-71 74 34.205263
-71 75 51.244512
-71 76 70.682388
-71 77 62.241465
-71 78 67.082039
-71 79 29.966648
-71 80 29.017236
-71 81 25.059928
-71 82 17.804494
-71 83 27.202941
-71 84 38.052595
-71 85 45.650849
-71 86 53.851648
-71 87 47.127487
-71 88 50.537115
-71 89 15.556349
-71 90 71.554175
-71 91 22.090722
-71 92 30.413813
-71 93 31.622777
-71 94 31.064449
-71 95 30.413813
-71 96 38.275318
-71 97 25.000000
-71 98 59.682493
-71 99 19.235384
-71 100 35.171011
-71 101 4.472136
-72 1 25.495098
-72 2 50.000000
-72 3 47.423623
-72 4 52.430907
-72 5 51.478151
-72 6 54.083269
-72 7 51.078371
-72 8 53.851648
-72 9 55.901699
-72 10 58.523500
-72 11 57.008771
-72 12 58.940648
-72 13 57.870545
-72 14 63.245553
-72 15 60.827625
-72 16 64.761099
-72 17 66.708320
-72 18 65.764732
-72 19 54.230987
-72 20 50.537115
-72 21 46.141088
-72 22 55.901699
-72 23 47.169906
-72 24 56.824291
-72 25 48.259714
-72 26 58.309519
-72 27 39.051248
-72 28 36.055513
-72 29 36.796739
-72 30 32.015621
-72 31 33.970576
-72 32 30.479501
-72 33 33.301652
-72 34 36.055513
-72 35 28.284271
-72 36 30.066593
-72 37 30.000000
-72 38 27.000000
-72 39 25.179357
-72 40 25.495098
-72 41 30.413813
-72 42 21.189620
-72 43 26.925824
-72 44 31.622777
-72 45 28.792360
-72 46 52.478567
-72 47 53.235327
-72 48 63.788714
-72 49 55.036352
-72 50 48.764741
-72 51 21.189620
-72 52 36.400549
-72 53 47.169906
-72 54 45.276926
-72 55 11.180340
-72 56 35.355339
-72 57 25.000000
-72 58 46.097722
-72 59 67.268120
-72 60 65.192024
-72 61 50.249378
-72 62 22.360680
-72 63 20.000000
-72 64 35.000000
-72 65 32.015621
-72 66 33.541020
-72 67 30.000000
-72 68 13.038405
-72 69 25.495098
-72 70 34.132096
-72 71 33.105891
-72 73 10.198039
-72 74 63.198101
-72 75 57.008771
-72 76 78.102497
-72 77 43.289722
-72 78 66.843100
-72 79 57.008771
-72 80 60.415230
-72 81 19.697716
-72 82 16.278821
-72 83 39.849718
-72 84 36.878178
-72 85 27.202941
-72 86 32.062439
-72 87 53.823787
-72 88 61.400326
-72 89 41.109610
-72 90 50.039984
-72 91 29.120440
-72 92 20.615528
-72 93 16.970563
-72 94 5.000000
-72 95 10.630146
-72 96 20.124612
-72 97 10.049876
-72 98 71.344236
-72 99 39.115214
-72 100 43.829214
-72 101 36.055513
-73 1 27.459060
-73 2 42.941821
-73 3 42.201896
-73 4 45.617979
-73 5 45.541190
-73 6 47.423623
-73 7 46.097722
-73 8 49.030603
-73 9 50.289164
-73 10 60.901560
-73 11 58.600341
-73 12 60.415230
-73 13 58.523500
-73 14 65.299311
-73 15 61.351447
-73 16 65.924199
-73 17 67.779053
-73 18 66.098411
-73 19 62.936476
-73 20 58.872744
-73 21 54.230987
-73 22 64.257295
-73 23 55.036352
-73 24 65.000000
-73 25 55.901699
-73 26 66.211781
-73 27 47.423623
-73 28 43.863424
-73 29 45.453273
-73 30 40.360872
-73 31 43.011626
-73 32 39.051248
-73 33 42.438190
-73 34 45.650849
-73 35 37.202150
-73 36 20.396078
-73 37 20.099751
-73 38 17.117243
-73 39 15.033296
-73 40 15.297059
-73 41 20.223748
-73 42 11.180340
-73 43 17.000000
-73 44 21.540659
-73 45 18.788294
-73 46 46.238512
-73 47 47.434165
-73 48 64.195015
-73 49 63.568860
-73 50 57.008771
-73 51 31.320920
-73 52 45.705580
-73 53 51.662365
-73 54 45.541190
-73 55 9.433981
-73 56 33.376639
-73 57 32.695565
-73 58 51.855569
-73 59 73.000000
-73 60 69.526973
-73 61 48.259714
-73 62 18.000000
-73 63 30.066593
-73 64 45.044423
-73 65 39.357337
-73 66 37.536649
-73 67 35.608988
-73 68 23.021729
-73 69 23.537205
-73 70 34.539832
-73 71 28.284271
-73 72 10.198039
-73 74 61.204575
-73 75 62.241465
-73 76 83.450584
-73 77 53.084838
-73 78 73.783467
-73 79 55.731499
-73 80 57.078893
-73 81 24.083189
-73 82 15.652476
-73 83 42.190046
-73 84 42.801869
-73 85 36.496575
-73 86 42.000000
-73 87 58.694122
-73 88 65.436993
-73 89 39.623226
-73 90 60.133186
-73 91 31.622777
-73 92 26.925824
-73 93 24.166092
-73 94 13.152946
-73 95 18.027756
-73 96 28.861739
-73 97 13.601471
-73 98 75.432089
-73 99 39.217343
-73 100 47.634021
-73 101 32.062439
-74 1 39.293765
-74 2 33.970576
-74 3 25.000000
-74 4 32.015621
-74 5 26.907248
-74 6 30.805844
-74 7 21.931712
-74 8 19.849433
-74 9 23.853721
-74 10 26.248809
-74 11 21.540659
-74 12 20.880613
-74 13 16.155494
-74 14 25.179357
-74 15 15.297059
-74 16 20.000000
-74 17 20.099751
-74 18 15.132746
-74 19 69.202601
-74 20 64.031242
-74 21 60.207973
-74 22 66.850580
-74 23 58.898217
-74 24 65.734314
-74 25 57.628118
-74 26 64.140471
-74 27 97.718985
-74 28 96.301610
-74 29 94.868330
-74 30 91.482239
-74 31 91.082380
-74 32 89.560036
-74 33 90.138782
-74 34 90.077744
-74 35 86.683332
-74 36 69.641941
-74 37 67.779053
-74 38 66.730802
-74 39 63.245553
-74 40 61.351447
-74 41 63.158531
-74 42 57.974132
-74 43 56.648036
-74 44 58.600341
-74 45 57.384667
-74 46 28.425341
-74 47 25.612497
-74 48 15.000000
-74 49 68.007353
-74 50 62.481997
-74 51 74.330344
-74 52 66.400301
-74 53 37.802116
-74 54 20.591260
-74 55 53.000000
-74 56 28.000000
-74 57 54.120237
-74 58 44.821870
-74 59 51.662365
-74 60 40.792156
-74 61 13.000000
-74 62 43.289722
-74 63 67.779053
-74 64 74.625733
-74 65 52.430907
-74 66 38.587563
-74 67 45.276926
-74 68 64.560050
-74 69 38.000000
-74 70 30.083218
-74 71 34.205263
-74 72 63.198101
-74 73 61.204575
-74 75 43.863424
-74 76 55.081757
-74 77 75.286121
-74 78 60.745370
-74 79 7.211103
-74 80 8.944272
-74 81 46.840154
-74 82 47.042534
-74 83 30.232433
-74 84 45.453273
-74 85 63.134776
-74 86 71.344236
-74 87 40.706265
-74 88 37.363083
-74 89 22.090722
-74 90 85.146932
-74 91 37.336309
-74 92 50.328918
-74 93 53.758720
-74 94 59.539903
-74 95 56.293872
-74 96 58.694122
-74 97 53.338541
-74 98 42.047592
-74 99 25.298221
-74 100 34.655447
-74 101 29.832868
-75 1 36.055513
-75 2 65.192024
-75 3 55.036352
-75 4 65.030762
-75 5 60.000000
-75 6 65.000000
-75 7 55.036352
-75 8 55.226805
-75 9 60.207973
-75 10 18.027756
-75 11 22.360680
-75 12 23.323808
-75 13 27.730849
-75 14 21.213203
-75 15 29.154759
-75 16 26.907248
-75 17 28.284271
-75 18 32.015621
-75 19 28.301943
-75 20 24.166092
-75 21 22.561028
-75 22 25.000000
-75 23 20.615528
-75 24 23.430749
-75 25 18.681542
-75 26 21.213203
-75 27 75.663730
-75 28 76.485293
-75 29 72.691127
-75 30 71.589105
-75 31 68.731361
-75 32 69.634761
-75 33 67.742158
-75 34 65.192024
-75 35 66.708320
-75 36 80.212219
-75 37 79.056942
-75 38 76.609399
-75 39 73.239334
-75 40 72.111026
-75 41 76.321688
-75 42 66.850580
-75 43 69.462220
-75 44 73.824115
-75 45 71.196910
-75 46 62.000000
-75 47 60.033324
-75 48 30.805844
-75 49 26.627054
-75 50 23.409400
-75 51 54.120237
-75 52 35.000000
-75 53 11.180340
-75 54 30.000000
-75 55 53.150729
-75 56 41.231056
-75 57 33.541020
-75 58 11.180340
-75 59 11.180340
-75 60 10.000000
-75 61 40.311289
-75 62 51.478151
-75 63 47.434165
-75 64 45.000000
-75 65 26.925824
-75 66 25.000000
-75 67 27.018512
-75 68 49.193496
-75 69 44.721360
-75 70 33.837849
-75 71 51.244512
-75 72 57.008771
-75 73 62.241465
-75 74 43.863424
-75 76 21.213203
-75 77 40.792156
-75 78 17.262677
-75 79 37.947332
-75 80 50.000000
-75 81 38.183766
-75 82 47.801674
-75 83 24.041631
-75 84 20.248457
-75 85 38.078866
-75 86 43.104524
-75 87 4.123106
-75 88 8.944272
-75 89 38.209946
-75 90 49.335586
-75 91 31.906112
-75 92 36.400549
-75 93 40.224371
-75 94 52.009614
-75 95 46.400431
-75 96 39.812058
-75 97 48.795492
-75 98 16.124515
-75 99 32.557641
-75 100 16.155494
-75 101 48.270074
-76 1 57.008771
-76 2 82.462113
-76 3 72.034714
-76 4 81.786307
-76 5 76.485293
-76 6 81.394103
-76 7 71.196910
-76 8 70.710678
-76 9 75.663730
-76 10 30.413813
-76 11 35.355339
-76 12 35.128336
-76 13 40.112342
-76 14 30.000000
-76 15 40.000000
-76 16 35.128336
-76 17 35.355339
-76 18 40.311289
-76 19 39.000000
-76 20 37.336309
-76 21 38.327536
-76 22 35.000000
-76 23 36.400549
-76 24 33.000000
-76 25 34.481879
-76 26 30.000000
-76 27 93.407708
-76 28 94.868330
-76 29 90.520716
-76 30 90.138782
-76 31 86.683332
-76 32 88.255311
-76 33 85.726309
-76 34 82.462113
-76 35 85.440037
-76 36 101.212647
-76 37 100.000000
-76 38 97.616597
-76 39 94.201911
-76 40 93.005376
-76 41 97.082439
-76 42 87.800911
-76 43 90.138782
-76 44 94.339811
-76 45 91.809586
-76 46 78.447435
-76 47 76.118329
-76 48 40.112342
-76 49 37.000000
-76 50 37.656341
-76 51 73.409809
-76 52 52.201533
-76 53 32.015621
-76 54 47.434165
-76 55 74.330344
-76 56 60.415230
-76 57 54.083269
-76 58 32.015621
-76 59 11.180340
-76 60 15.811388
-76 61 55.901699
-76 62 72.111026
-76 63 67.082039
-76 64 61.846584
-76 65 47.169906
-76 66 46.097722
-76 67 48.166378
-76 68 69.641941
-76 69 65.192024
-76 70 53.712196
-76 71 70.682388
-76 72 78.102497
-76 73 83.450584
-76 74 55.081757
-76 75 21.213203
-76 77 55.443665
-76 78 18.110770
-76 79 51.088159
-76 80 63.007936
-76 81 59.396970
-76 82 68.883960
-76 83 43.908997
-76 84 41.231056
-76 85 57.271284
-76 86 60.728906
-76 87 24.839485
-76 88 20.248457
-76 89 56.302753
-76 90 62.000000
-76 91 52.801515
-76 92 57.489129
-76 93 61.220911
-76 94 73.109507
-76 95 67.475922
-76 96 60.207973
-76 97 70.007142
-76 98 13.038405
-76 99 51.478151
-76 100 36.619667
-76 101 67.230945
-77 1 42.941821
-77 2 80.956779
-77 3 73.573093
-77 4 82.298238
-77 5 78.892332
-77 6 83.240615
-77 7 75.716577
-77 8 77.420927
-77 9 81.541401
-77 10 55.036352
-77 11 57.306195
-77 12 59.059292
-77 13 61.587336
-77 14 59.615434
-77 15 64.140471
-77 16 64.404969
-77 17 66.211781
-77 18 68.476273
-77 19 17.464249
-77 20 18.110770
-77 21 18.248288
-77 22 21.189620
-77 23 20.223748
-77 24 23.086793
-77 25 22.203603
-77 26 25.961510
-77 27 39.357337
-77 28 41.880783
-77 29 36.715120
-77 30 37.802116
-77 31 33.286634
-77 32 36.235342
-77 33 32.449961
-77 34 28.178006
-77 35 33.970576
-77 36 73.334848
-77 37 73.171033
-77 38 70.178344
-77 39 68.029405
-77 40 68.000000
-77 41 73.000000
-77 42 63.031738
-77 43 68.183576
-77 44 73.171033
-77 45 70.178344
-77 46 80.622577
-77 47 79.924965
-77 48 66.730802
-77 49 19.313208
-77 50 18.000000
-77 51 25.942244
-77 52 9.433981
-77 53 39.357337
-77 54 55.172457
-77 55 48.259714
-77 56 56.603887
-77 57 25.079872
-77 58 32.695565
-77 59 45.044423
-77 60 50.635956
-77 61 65.795137
-77 62 55.081757
-77 63 23.537205
-77 64 9.433981
-77 65 23.430749
-77 66 37.536649
-77 67 31.400637
-77 68 30.265492
-77 69 52.000000
-77 70 49.406477
-77 71 62.241465
-77 72 43.289722
-77 73 53.084838
-77 74 75.286121
-77 75 40.792156
-77 76 55.443665
-77 78 38.078866
-77 79 68.117545
-77 80 77.794601
-77 81 37.336309
-77 82 47.296934
-77 83 45.276926
-77 84 29.832868
-77 85 17.262677
-77 86 11.401754
-77 87 40.804412
-77 88 49.477268
-77 89 58.412327
-77 90 9.899495
-77 91 41.880783
-77 92 31.953091
-77 93 31.780497
-77 94 40.012498
-77 95 36.124784
-77 96 25.317978
-77 97 42.296572
-77 98 56.320511
-77 99 52.497619
-77 100 41.048752
-77 101 62.177166
-78 1 49.979996
-78 2 82.024387
-78 3 72.006944
-78 4 82.006097
-78 5 77.058419
-78 6 82.054860
-78 7 72.173402
-78 8 72.443081
-78 9 77.414469
-78 10 34.539832
-78 11 39.217343
-78 12 39.924930
-78 13 44.598206
-78 14 36.715120
-78 15 45.694639
-78 16 42.544095
-78 17 43.566042
-78 18 47.885280
-78 19 21.095023
-78 20 20.248457
-78 21 22.472205
-78 22 17.117243
-78 23 20.808652
-78 24 15.132746
-78 25 19.209373
-78 26 12.165525
-78 27 76.896034
-78 28 78.790862
-78 29 74.094534
-78 30 74.249579
-78 31 70.384657
-78 32 72.449983
-78 33 69.462220
-78 34 65.787537
-78 35 69.771054
-78 36 93.059121
-78 37 92.130342
-78 38 89.470666
-78 39 86.313383
-78 40 85.428333
-78 41 89.961103
-78 42 80.056230
-78 43 83.384651
-78 44 88.022724
-78 45 85.234969
-78 46 79.056942
-78 47 77.162167
-78 48 46.957428
-78 49 19.104973
-78 50 21.023796
-78 51 58.523500
-78 52 36.235342
-78 53 27.073973
-78 54 47.095647
-78 55 65.368188
-78 56 57.428216
-78 57 41.868843
-78 58 23.086793
-78 59 10.630146
-78 60 21.400935
-78 61 57.558666
-78 62 65.787537
-78 63 52.801515
-78 64 45.310043
-78 65 34.828150
-78 66 38.897301
-78 67 38.470768
-78 68 56.586217
-78 69 59.481089
-78 70 49.648766
-78 71 67.082039
-78 72 66.843100
-78 73 73.783467
-78 74 60.745370
-78 75 17.262677
-78 76 18.110770
-78 77 38.078866
-78 79 55.081757
-78 80 67.186308
-78 81 50.119856
-78 82 60.835845
-78 83 40.199502
-78 84 31.304952
-78 85 42.801869
-78 86 44.721360
-78 87 21.095023
-78 88 23.706539
-78 89 55.009090
-78 90 44.045431
-78 91 46.173586
-78 92 46.872167
-78 93 50.000000
-78 94 62.008064
-78 95 56.400355
-78 96 47.381431
-78 97 60.207973
-78 98 24.207437
-78 99 49.091751
-78 100 32.140317
-78 101 64.498062
-79 1 32.557641
-79 2 33.615473
-79 3 23.600847
-79 4 32.202484
-79 5 26.832816
-79 6 31.384710
-79 7 21.470911
-79 8 20.248457
-79 9 25.000000
-79 10 21.095023
-79 11 16.124515
-79 12 16.000000
-79 13 11.000000
-79 14 21.213203
-79 15 11.401754
-79 16 17.088007
-79 17 17.888544
-79 18 13.601471
-79 19 62.425956
-79 20 57.201399
-79 21 53.263496
-79 22 60.207973
-79 23 52.009614
-79 24 59.169249
-79 25 50.803543
-79 26 57.706152
-79 27 90.801982
-79 28 89.498603
-79 29 87.931792
-79 30 84.646323
-79 31 84.118963
-79 32 82.710338
-79 33 83.168504
-79 34 83.006024
-79 35 79.812280
-79 36 65.741920
-79 37 63.953108
-79 38 62.649820
-79 39 59.093147
-79 40 57.271284
-79 41 59.539903
-79 42 53.488316
-79 43 52.773099
-79 44 55.226805
-79 45 53.712196
-79 46 28.635642
-79 47 26.000000
-79 48 12.529964
-79 49 61.294372
-79 50 55.605755
-79 51 67.357256
-79 52 59.203040
-79 53 31.064449
-79 54 13.416408
-79 55 47.169906
-79 56 22.360680
-79 57 46.957428
-79 58 38.013156
-79 59 46.529560
-79 60 36.055513
-79 61 8.062258
-79 62 38.078866
-79 63 60.745370
-79 64 67.416615
-79 65 45.221676
-79 66 31.384710
-79 67 38.078866
-79 68 57.723479
-79 69 32.249031
-79 70 23.345235
-79 71 29.966648
-79 72 57.008771
-79 73 55.731499
-79 74 7.211103
-79 75 37.947332
-79 76 51.088159
-79 77 68.117545
-79 78 55.081757
-79 80 12.165525
-79 81 40.024992
-79 82 41.048752
-79 83 23.021729
-79 84 38.288379
-79 85 55.946403
-79 86 64.140471
-79 87 34.539832
-79 88 32.249031
-79 89 16.124515
-79 90 77.987178
-79 91 30.364453
-79 92 43.324358
-79 93 46.840154
-79 94 53.150729
-79 95 49.648766
-79 96 51.623638
-79 97 47.042534
-79 98 38.209946
-79 99 18.439089
-79 100 27.658633
-79 101 25.495098
-80 1 38.470768
-80 2 25.495098
-80 3 17.464249
-80 4 23.345235
-80 5 18.439089
-80 6 22.022716
-80 7 13.892444
-80 8 11.401754
-80 9 15.000000
-80 10 33.241540
-80 11 28.284271
-80 12 28.071338
-80 13 23.086793
-80 14 33.015148
-80 15 23.021729
-80 16 28.284271
-80 17 28.635642
-80 18 23.769729
-80 19 73.573093
-80 20 68.264193
-80 21 64.070274
-80 22 71.589105
-80 23 62.968246
-80 24 70.661163
-80 25 61.911227
-80 26 69.354164
-80 27 96.772930
-80 28 94.921020
-80 29 94.021274
-80 30 90.249654
-80 31 90.376988
-80 32 88.391176
-80 33 89.470666
-80 34 89.944427
-80 35 85.615419
-80 36 63.324561
-80 37 61.400326
-80 38 60.638272
-80 39 57.271284
-80 40 55.317267
-80 41 56.612719
-80 42 52.469038
-80 43 50.447993
-80 44 51.865210
-80 45 50.960769
-80 46 19.798990
-80 47 16.970563
-80 48 23.345235
-80 49 72.560320
-80 50 66.573268
-80 51 73.790243
-80 52 68.593003
-80 53 42.485292
-80 54 22.803509
-80 55 49.648766
-80 56 25.298221
-80 57 55.000000
-80 58 49.244289
-80 59 58.694122
-80 60 48.166378
-80 61 12.041595
-80 62 39.115214
-80 63 67.601775
-80 64 76.059187
-80 65 54.451814
-80 66 40.311289
-80 67 46.754679
-80 68 63.560994
-80 69 34.928498
-80 70 29.681644
-80 71 29.017236
-80 72 60.415230
-80 73 57.078893
-80 74 8.944272
-80 75 50.000000
-80 76 63.007936
-80 77 77.794601
-80 78 67.186308
-80 79 12.165525
-80 81 46.065171
-80 82 44.147480
-80 83 32.649655
-80 84 48.270074
-80 85 64.202804
-80 86 72.622311
-80 87 46.486557
-80 88 44.407207
-80 89 20.591260
-80 90 87.692645
-80 91 37.443290
-80 92 50.249378
-80 93 53.235327
-80 94 57.280014
-80 95 54.781384
-80 96 58.830264
-80 97 50.960769
-80 98 50.039984
-80 99 25.612497
-80 100 38.587563
-80 101 25.019992
-81 1 7.615773
-81 2 43.908997
-81 3 37.536649
-81 4 45.486262
-81 5 42.638011
-81 6 46.615448
-81 7 40.311289
-81 8 42.520583
-81 9 45.967380
-81 10 38.897301
-81 11 37.656341
-81 12 39.623226
-81 13 39.051248
-81 14 43.680659
-81 15 42.047592
-81 16 45.541190
-81 17 47.518417
-81 18 47.042534
-81 19 42.107007
-81 20 37.336309
-81 21 32.388269
-81 22 42.579338
-81 23 32.756679
-81 24 42.953463
-81 25 33.241540
-81 26 43.680659
-81 27 50.921508
-81 28 49.477268
-81 29 48.104054
-81 30 44.643029
-81 31 44.384682
-81 32 42.720019
-81 33 43.462628
-81 34 43.908997
-81 35 39.849718
-81 36 42.941821
-81 37 42.047592
-81 38 39.357337
-81 39 36.249138
-81 40 35.468296
-81 41 40.162171
-81 42 30.083218
-81 43 33.955854
-81 44 38.832976
-81 45 35.902646
-81 46 44.204072
-81 47 43.931765
-81 48 45.044423
-81 49 42.296572
-81 50 35.355339
-81 51 27.730849
-81 52 28.160256
-81 53 27.802878
-81 54 27.166155
-81 55 15.264338
-81 56 21.400935
-81 57 12.369317
-81 58 27.802878
-81 59 48.918299
-81 60 45.803930
-81 61 34.539832
-81 62 18.110770
-81 63 21.633308
-81 64 32.449961
-81 65 17.117243
-81 66 13.892444
-81 67 11.661904
-81 68 17.720045
-81 69 14.764823
-81 70 16.763055
-81 71 25.059928
-81 72 19.697716
-81 73 24.083189
-81 74 46.840154
-81 75 38.183766
-81 76 59.396970
-81 77 37.336309
-81 78 50.119856
-81 79 40.024992
-81 80 46.065171
-81 82 11.180340
-81 83 20.396078
-81 84 18.867962
-81 85 20.591260
-81 86 28.844410
-81 87 34.713110
-81 88 41.880783
-81 89 25.495098
-81 90 46.518813
-81 91 10.000000
-81 92 5.385165
-81 93 7.211103
-81 94 14.866069
-81 95 10.049876
-81 96 13.453624
-81 97 10.630146
-81 98 51.865210
-81 99 21.587033
-81 100 24.186773
-81 101 25.612497
-82 1 12.041595
-82 2 36.124784
-82 3 31.906112
-82 4 38.183766
-82 5 36.400549
-82 6 39.623226
-82 7 35.355339
-82 8 38.013156
-82 9 40.496913
-82 10 45.276926
-82 11 42.953463
-82 12 44.777226
-82 13 43.011626
-82 14 49.648766
-82 15 45.880279
-82 16 50.328918
-82 17 52.201533
-82 18 50.695167
-82 19 53.235327
-82 20 48.507731
-82 21 43.566042
-82 22 53.758720
-82 23 43.931765
-82 24 54.129474
-82 25 44.384682
-82 26 54.817880
-82 27 53.851648
-82 28 51.429563
-82 29 51.312766
-82 30 47.010637
-82 31 48.010416
-82 32 45.276926
-82 33 47.201695
-82 34 48.836462
-82 35 42.720019
-82 36 32.449961
-82 37 31.384710
-82 38 28.844410
-82 39 25.553865
-82 40 24.596748
-82 41 29.154759
-82 42 19.235384
-82 43 22.803509
-82 44 27.658633
-82 45 24.738634
-82 46 37.643060
-82 47 38.013156
-82 48 48.764741
-82 49 53.460266
-82 50 46.529560
-82 51 32.526912
-82 52 38.470768
-82 53 36.878178
-82 54 30.083218
-82 55 6.324555
-82 56 19.104973
-82 57 23.021729
-82 58 38.078866
-82 59 58.821765
-82 60 54.451814
-82 61 34.058773
-82 62 8.062258
-82 63 28.017851
-82 64 41.231056
-82 65 28.284271
-82 66 22.803509
-82 67 22.472205
-82 68 21.931712
-82 69 9.219544
-82 70 18.973666
-82 71 17.804494
-82 72 16.278821
-82 73 15.652476
-82 74 47.042534
-82 75 47.801674
-82 76 68.883960
-82 77 47.296934
-82 78 60.835845
-82 79 41.048752
-82 80 44.147480
-82 81 11.180340
-82 83 26.627054
-82 84 29.546573
-82 85 30.083218
-82 86 37.696154
-82 87 44.045431
-82 88 50.249378
-82 89 25.000000
-82 90 55.973208
-82 91 16.278821
-82 92 16.000000
-82 93 15.524175
-82 94 13.416408
-82 95 12.806248
-82 96 22.135944
-82 97 7.211103
-82 98 60.207973
-82 99 23.769729
-82 100 32.526912
-82 101 20.124612
-83 1 14.764823
-83 2 42.047592
-83 3 32.388269
-83 4 42.296572
-83 5 37.656341
-83 6 42.579338
-83 7 33.241540
-83 8 34.176015
-83 9 38.897301
-83 10 18.788294
-83 11 17.262677
-83 12 19.235384
-83 13 19.104973
-83 14 23.409400
-83 15 22.090722
-83 16 25.179357
-83 17 27.166155
-83 18 27.073973
-83 19 41.629317
-83 20 36.249138
-83 21 31.764760
-83 22 40.162171
-83 23 30.870698
-83 24 39.560081
-83 25 30.083218
-83 26 38.832976
-83 27 69.231496
-83 28 68.468971
-83 29 66.287254
-83 30 63.505905
-83 31 62.369865
-83 32 61.522354
-83 33 61.392182
-83 34 60.728906
-83 35 58.549125
-83 36 58.000000
-83 37 56.639209
-83 38 54.451814
-83 39 50.931326
-83 40 49.578221
-83 41 53.413481
-83 42 44.553339
-83 43 46.400431
-83 44 50.477718
-83 45 48.010416
-83 46 39.623226
-83 47 38.078866
-83 48 25.079872
-83 49 40.853396
-83 50 34.438351
-83 51 45.705580
-83 52 36.235342
-83 53 13.152946
-83 54 9.899495
-83 55 32.756679
-83 56 17.262677
-83 57 24.351591
-83 58 18.248288
-83 59 35.114100
-83 60 28.600699
-83 61 20.808652
-83 62 28.425341
-83 63 38.832976
-83 64 44.418465
-83 65 22.203603
-83 66 8.544004
-83 67 15.231546
-83 68 37.013511
-83 69 21.400935
-83 70 9.848858
-83 71 27.202941
-83 72 39.849718
-83 73 42.190046
-83 74 30.232433
-83 75 24.041631
-83 76 43.908997
-83 77 45.276926
-83 78 40.199502
-83 79 23.021729
-83 80 32.649655
-83 81 20.396078
-83 82 26.627054
-83 84 15.620499
-83 85 33.105891
-83 86 41.182521
-83 87 19.924859
-83 88 24.207437
-83 89 15.297059
-83 90 55.172457
-83 91 10.770330
-83 92 22.022716
-83 93 26.000000
-83 94 35.171011
-83 95 30.413813
-83 96 29.614186
-83 97 30.083218
-83 98 33.970576
-83 99 9.055385
-83 100 8.062258
-83 101 24.331050
-84 1 19.235384
-84 2 55.317267
-84 3 46.486557
-84 4 56.044625
-84 5 51.865210
-84 6 56.612719
-84 7 47.927028
-84 8 49.193496
-84 9 53.712196
-84 10 27.294688
-84 11 28.460499
-84 12 30.364453
-84 13 32.202484
-84 14 32.249031
-84 15 34.928498
-84 16 36.138622
-84 17 38.078866
-84 18 39.560081
-84 19 26.925824
-84 20 21.587033
-84 21 16.763055
-84 22 26.172505
-84 23 16.278821
-84 24 26.019224
-84 25 16.031220
-84 26 26.076810
-84 27 58.008620
-84 28 58.137767
-84 29 55.009090
-84 30 53.150729
-84 31 51.009803
-84 32 51.156622
-84 33 50.009999
-84 34 48.373546
-84 35 48.166378
-84 36 61.773781
-84 37 60.827625
-84 38 58.180753
-84 39 55.009090
-84 40 54.129474
-84 41 58.694122
-84 42 48.754487
-84 43 52.201533
-84 44 56.920998
-84 45 54.083269
-84 46 53.758720
-84 47 52.554733
-84 48 37.696154
-84 49 26.476405
-84 50 19.646883
-84 51 35.227830
-84 52 21.095023
-84 53 12.041595
-84 54 25.495098
-84 55 34.132096
-84 56 29.832868
-84 57 13.601471
-84 58 9.219544
-84 59 30.413813
-84 60 29.154759
-84 61 36.400549
-84 62 34.928498
-84 63 28.284271
-84 64 30.083218
-84 65 8.062258
-84 66 9.219544
-84 67 7.211103
-84 68 29.154759
-84 69 29.154759
-84 70 21.840330
-84 71 38.052595
-84 72 36.878178
-84 73 42.801869
-84 74 45.453273
-84 75 20.248457
-84 76 41.231056
-84 77 29.832868
-84 78 31.304952
-84 79 38.288379
-84 80 48.270074
-84 81 18.867962
-84 82 29.546573
-84 83 15.620499
-84 85 20.099751
-84 86 27.202941
-84 87 17.464249
-84 88 25.961510
-84 89 29.966648
-84 90 39.698866
-84 91 16.000000
-84 92 16.278821
-84 93 20.000000
-84 94 31.890437
-84 95 26.248809
-84 96 19.924859
-84 97 29.206164
-84 98 35.468296
-84 99 23.706539
-84 100 11.704700
-84 101 36.496575
-85 1 27.018512
-85 2 64.498062
-85 3 57.801384
-85 4 66.037868
-85 5 63.007936
-85 6 67.119297
-85 7 60.307545
-85 8 62.289646
-85 9 66.068147
-85 10 47.381431
-85 11 48.270074
-85 12 50.219518
-85 13 51.546096
-85 14 52.345009
-85 15 54.405882
-85 16 56.089215
-85 17 58.051701
-85 18 59.203040
-85 19 27.294688
-85 20 24.207437
-85 21 20.518285
-85 22 29.410882
-85 23 22.022716
-85 24 30.610456
-85 25 23.600847
-85 26 32.557641
-85 27 38.013156
-85 28 38.470768
-85 29 35.014283
-85 30 33.541020
-85 31 31.016125
-85 32 31.575307
-85 33 30.016662
-85 34 28.284271
-85 35 28.635642
-85 36 56.885851
-85 37 56.568542
-85 38 53.600373
-85 39 51.244512
-85 40 51.088159
-85 41 56.080300
-85 42 46.010868
-85 43 51.039201
-85 44 56.035703
-85 45 53.037722
-85 46 64.637450
-85 47 64.202804
-85 48 57.280014
-85 49 28.301943
-85 50 22.671568
-85 51 16.155494
-85 52 9.219544
-85 53 32.015621
-85 54 42.544095
-85 55 31.064449
-85 56 41.109610
-85 57 9.219544
-85 58 27.294688
-85 59 46.097722
-85 60 47.853944
-85 61 52.201533
-85 62 37.947332
-85 63 10.000000
-85 64 12.041595
-85 65 12.041595
-85 66 24.596748
-85 67 17.888544
-85 68 14.764823
-85 69 35.355339
-85 70 34.713110
-85 71 45.650849
-85 72 27.202941
-85 73 36.496575
-85 74 63.134776
-85 75 38.078866
-85 76 57.271284
-85 77 17.262677
-85 78 42.801869
-85 79 55.946403
-85 80 64.202804
-85 81 20.591260
-85 82 30.083218
-85 83 33.105891
-85 84 20.099751
-85 86 8.485281
-85 87 36.345564
-85 88 45.276926
-85 89 43.931765
-85 90 26.000000
-85 91 26.907248
-85 92 15.264338
-85 93 14.560220
-85 94 23.345235
-85 95 19.000000
-85 96 8.062258
-85 97 25.079872
-85 98 54.129474
-85 99 38.600518
-85 100 31.575307
-85 101 46.043458
-86 1 35.468296
-86 2 72.718636
-86 3 66.219333
-86 4 74.330344
-86 5 71.400280
-86 6 75.451971
-86 7 68.767725
-86 8 70.767224
-86 9 74.518454
-86 10 54.341513
-86 11 55.659680
-86 12 57.567352
-86 13 59.236813
-86 14 59.228372
-86 15 62.032250
-86 16 63.324561
-86 17 65.253352
-86 18 66.730802
-86 19 26.172505
-86 20 24.698178
-86 21 22.472205
-86 22 29.206164
-86 23 24.351591
-86 24 30.805844
-86 25 26.248809
-86 26 33.286634
-86 27 32.756679
-86 28 34.176015
-86 29 29.832868
-86 30 29.546573
-86 31 25.961510
-86 32 27.730849
-86 33 25.000000
-86 34 22.090722
-86 35 25.059928
-86 36 62.128898
-86 37 62.032250
-86 38 59.033889
-86 39 57.008771
-86 40 57.078893
-86 41 62.072538
-86 42 52.239832
-86 43 57.558666
-86 44 62.513998
-86 45 59.539903
-86 46 73.006849
-86 47 72.622311
-86 48 64.845971
-86 49 27.658633
-86 50 23.706539
-86 51 15.000000
-86 52 8.544004
-86 53 38.639358
-86 54 50.774009
-86 55 37.854986
-86 56 49.578221
-86 57 17.691806
-86 58 33.060551
-86 59 49.729267
-86 60 53.084838
-86 61 60.605280
-86 62 45.694639
-86 63 12.165525
-86 64 3.605551
-86 65 19.313208
-86 66 32.756679
-86 67 26.076810
-86 68 19.026298
-86 69 43.566042
-86 70 43.185646
-86 71 53.851648
-86 72 32.062439
-86 73 42.000000
-86 74 71.344236
-86 75 43.104524
-86 76 60.728906
-86 77 11.401754
-86 78 44.721360
-86 79 64.140471
-86 80 72.622311
-86 81 28.844410
-86 82 37.696154
-86 83 41.182521
-86 84 27.202941
-86 85 8.485281
-86 87 42.011903
-86 88 51.009803
-86 89 52.402290
-86 90 18.439089
-86 91 35.383612
-86 92 23.600847
-86 93 22.360680
-86 94 29.068884
-86 95 25.709920
-86 96 15.652476
-86 97 32.015621
-86 98 59.211485
-86 99 47.010637
-86 100 38.897301
-86 101 54.405882
-87 1 32.202484
-87 2 61.131007
-87 3 51.009803
-87 4 61.008196
-87 5 56.008928
-87 6 61.008196
-87 7 51.088159
-87 8 51.351728
-87 9 56.320511
-87 10 15.556349
-87 11 19.416488
-87 12 20.615528
-87 13 24.698178
-87 14 19.416488
-87 15 26.400758
-87 16 24.839485
-87 17 26.400758
-87 18 29.698485
-87 19 29.832868
-87 20 25.238859
-87 21 22.847319
-87 22 26.870058
-87 23 21.023796
-87 24 25.495098
-87 25 19.235384
-87 26 23.600847
-87 27 74.242845
-87 28 74.813100
-87 29 71.253070
-87 30 69.871310
-87 31 67.268120
-87 32 67.896981
-87 33 66.272166
-87 34 64.007812
-87 35 64.938432
-87 36 76.400262
-87 37 75.213031
-87 38 72.801099
-87 39 69.404611
-87 40 68.242216
-87 41 72.401657
-87 42 63.007936
-87 43 65.513357
-87 44 69.835521
-87 45 67.230945
-87 46 58.008620
-87 47 56.080300
-87 48 28.319605
-87 49 28.319605
-87 50 24.186773
-87 51 52.172790
-87 52 34.234486
-87 53 7.211103
-87 54 26.019224
-87 55 49.517674
-87 56 37.107951
-87 57 31.016125
-87 58 9.055385
-87 59 15.231546
-87 60 11.704700
-87 61 36.496575
-87 62 47.507894
-87 63 45.354162
-87 64 44.181444
-87 65 24.738634
-87 66 21.260292
-87 67 23.853721
-87 68 46.615448
-87 69 40.706265
-87 70 29.732137
-87 71 47.127487
-87 72 53.823787
-87 73 58.694122
-87 74 40.706265
-87 75 4.123106
-87 76 24.839485
-87 77 40.804412
-87 78 21.095023
-87 79 34.539832
-87 80 46.486557
-87 81 34.713110
-87 82 44.045431
-87 83 19.924859
-87 84 17.464249
-87 85 36.345564
-87 86 42.011903
-87 88 9.000000
-87 89 34.132096
-87 90 49.769469
-87 91 28.017851
-87 92 33.286634
-87 93 37.215588
-87 94 48.826222
-87 95 43.266615
-87 96 37.336309
-87 97 45.343136
-87 98 18.027756
-87 99 28.442925
-87 100 12.083046
-87 101 44.147480
-88 1 38.209946
-88 2 62.369865
-88 3 51.971146
-88 4 61.814238
-88 5 56.568542
-88 6 61.522354
-88 7 51.351728
-88 8 51.088159
-88 9 56.080300
-88 10 11.180340
-88 11 16.124515
-88 12 16.492423
-88 13 21.377558
-88 14 13.038405
-88 15 22.135944
-88 16 18.867962
-88 17 20.000000
-88 18 24.186773
-88 19 37.215588
-88 20 33.105891
-88 21 31.320920
-88 22 33.837849
-88 23 29.410882
-88 24 32.202484
-88 25 27.513633
-88 26 29.832868
-88 27 83.216585
-88 28 83.725743
-88 29 80.224684
-88 30 78.771822
-88 31 76.236474
-88 32 76.791927
-88 33 75.239617
-88 34 73.006849
-88 35 73.824115
-88 36 82.134037
-88 37 80.808415
-88 38 78.568442
-88 39 75.073298
-88 40 73.756356
-88 41 77.620873
-88 42 68.680419
-88 43 70.604532
-88 44 74.632433
-88 45 72.201108
-88 46 58.549125
-88 47 56.320511
-88 48 23.259407
-88 49 35.510562
-88 50 32.310989
-88 51 61.000000
-88 52 43.185646
-88 53 14.317821
-88 54 27.202941
-88 55 56.080300
-88 56 40.249224
-88 57 39.560081
-88 58 18.027756
-88 59 14.317821
-88 60 4.472136
-88 61 36.124784
-88 62 52.630789
-88 63 54.129474
-88 64 53.150729
-88 65 33.541020
-88 66 28.017851
-88 67 31.780497
-88 68 55.027266
-88 69 45.607017
-88 70 33.837849
-88 71 50.537115
-88 72 61.400326
-88 73 65.436993
-88 74 37.363083
-88 75 8.944272
-88 76 20.248457
-88 77 49.477268
-88 78 23.706539
-88 79 32.249031
-88 80 44.407207
-88 81 41.880783
-88 82 50.249378
-88 83 24.207437
-88 84 25.961510
-88 85 45.276926
-88 86 51.009803
-88 87 9.000000
-88 89 36.055513
-88 90 58.189346
-88 91 33.970576
-88 92 41.146081
-88 93 45.188494
-88 94 56.435804
-88 95 51.000000
-88 96 45.880279
-88 97 52.430907
-88 98 10.000000
-88 99 31.304952
-88 100 17.804494
-88 101 47.010637
-89 1 17.888544
-89 2 27.018512
-89 3 17.117243
-89 4 27.073973
-89 5 22.360680
-89 6 27.294688
-89 7 18.027756
-89 8 19.235384
-89 9 23.769729
-89 10 26.925824
-89 11 22.803509
-89 12 24.083189
-89 13 20.615528
-89 14 29.832868
-89 15 23.021729
-89 16 28.425341
-89 17 30.000000
-89 18 27.294688
-89 19 56.648036
-89 20 51.264022
-89 21 46.615448
-89 22 55.362442
-89 23 45.880279
-89 24 54.817880
-89 25 45.221676
-89 26 54.129474
-89 27 76.321688
-89 28 74.632433
-89 29 73.539105
-89 30 69.892775
-89 31 69.856997
-89 32 68.007353
-89 33 68.942005
-89 34 69.354164
-89 35 65.192024
-89 36 50.774009
-89 37 49.091751
-89 38 47.507894
-89 39 43.908997
-89 40 42.190046
-89 41 45.000000
-89 42 38.013156
-89 43 38.013156
-89 44 41.109610
-89 45 39.204592
-89 46 24.331050
-89 47 22.803509
-89 48 25.553865
-89 49 55.973208
-89 50 49.396356
-89 51 53.225934
-89 52 49.040799
-89 53 28.017851
-89 54 8.944272
-89 55 31.064449
-89 56 6.324555
-89 57 34.713110
-89 58 33.541020
-89 59 48.836462
-89 60 40.496913
-89 61 9.219544
-89 62 22.135944
-89 63 47.010637
-89 64 55.901699
-89 65 35.000000
-89 66 21.095023
-89 67 27.018512
-89 68 43.081318
-89 69 16.124515
-89 70 9.219544
-89 71 15.556349
-89 72 41.109610
-89 73 39.623226
-89 74 22.090722
-89 75 38.209946
-89 76 56.302753
-89 77 58.412327
-89 78 55.009090
-89 79 16.124515
-89 80 20.591260
-89 81 25.495098
-89 82 25.000000
-89 83 15.297059
-89 84 29.966648
-89 85 43.931765
-89 86 52.402290
-89 87 34.132096
-89 88 36.055513
-89 90 68.249542
-89 91 17.029386
-89 92 29.681644
-89 93 32.649655
-89 94 37.483330
-89 95 34.481879
-89 96 38.275318
-89 97 31.256999
-89 98 44.721360
-89 99 6.324555
-89 100 23.086793
-89 101 11.401754
-90 1 52.478567
-90 2 90.354856
-90 3 83.216585
-90 4 91.787799
-90 5 88.509886
-90 6 92.784697
-90 7 85.445889
-90 8 87.200917
-90 9 91.263355
-90 10 64.412732
-90 11 66.887966
-90 12 68.600292
-90 13 71.281134
-90 14 68.876701
-90 15 73.783467
-90 16 73.824115
-90 17 75.591005
-90 18 78.032045
-90 19 23.000000
-90 20 25.495098
-90 21 26.925824
-90 22 27.000000
-90 23 28.792360
-90 24 29.000000
-90 25 30.675723
-90 26 32.000000
-90 27 37.536649
-90 28 41.036569
-90 29 35.355339
-90 30 37.802116
-90 31 32.649655
-90 32 36.619667
-90 33 32.015621
-90 34 26.907248
-90 35 34.985711
-90 36 80.000000
-90 37 80.024996
-90 38 77.025970
-90 39 75.166482
-90 40 75.325958
-90 41 80.305666
-90 42 70.576200
-90 43 75.953933
-90 44 80.894994
-90 45 77.929455
-90 46 90.210864
-90 47 89.587946
-90 48 76.321688
-90 49 25.000000
-90 50 25.961510
-90 51 30.413813
-90 52 19.209373
-90 53 48.877398
-90 54 65.069194
-90 55 56.293872
-90 56 66.287254
-90 57 34.481879
-90 58 42.059482
-90 59 52.239832
-90 60 58.940648
-90 61 75.690158
-90 62 63.906181
-90 63 30.066593
-90 64 15.132746
-90 65 33.301652
-90 66 47.423623
-90 67 41.231056
-90 68 37.121422
-90 69 61.269895
-90 70 59.203040
-90 71 71.554175
-90 72 50.039984
-90 73 60.133186
-90 74 85.146932
-90 75 49.335586
-90 76 62.000000
-90 77 9.899495
-90 78 44.045431
-90 79 77.987178
-90 80 87.692645
-90 81 46.518813
-90 82 55.973208
-90 83 55.172457
-90 84 39.698866
-90 85 26.000000
-90 86 18.439089
-90 87 49.769469
-90 88 58.189346
-90 89 68.249542
-90 91 51.613952
-90 92 41.146081
-90 93 40.496913
-90 94 47.381431
-90 95 44.147480
-90 96 33.837849
-90 97 50.447993
-90 98 64.327288
-90 99 62.369865
-90 100 50.803543
-90 101 71.693793
-91 1 4.242641
-91 2 39.849718
-91 3 31.764760
-91 4 40.853396
-91 5 37.121422
-91 6 41.629317
-91 7 33.837849
-91 8 35.608988
-91 9 39.661064
-91 10 29.546573
-91 11 27.892651
-91 12 29.832868
-91 13 29.068884
-91 14 34.176015
-91 15 32.062439
-91 16 35.693137
-91 17 37.656341
-91 18 37.054015
-91 19 42.579338
-91 20 37.336309
-91 21 32.388269
-91 22 42.107007
-91 23 32.140317
-91 24 42.011903
-91 25 32.015621
-91 26 42.047592
-91 27 60.440053
-91 28 59.228372
-91 29 57.567352
-91 30 54.341513
-91 31 53.758720
-91 32 52.392748
-91 33 52.810984
-91 34 52.801515
-91 35 49.477268
-91 36 48.414874
-91 37 47.201695
-91 38 44.821870
-91 39 41.400483
-91 40 40.224371
-91 41 44.418465
-91 42 35.000000
-91 43 37.589892
-91 44 42.047592
-91 45 39.357337
-91 46 38.910153
-91 47 38.078866
-91 48 35.057096
-91 49 42.296572
-91 50 35.355339
-91 51 37.000000
-91 52 32.449961
-91 53 20.808652
-91 54 17.262677
-91 55 22.203603
-91 56 14.764823
-91 57 17.691806
-91 58 23.086793
-91 59 43.046487
-91 60 38.183766
-91 61 25.553865
-91 62 19.697716
-91 63 30.463092
-91 64 38.897301
-91 65 18.788294
-91 66 7.280110
-91 67 10.770330
-91 68 27.459060
-91 69 13.341664
-91 70 7.810250
-91 71 22.090722
-91 72 29.120440
-91 73 31.622777
-91 74 37.336309
-91 75 31.906112
-91 76 52.801515
-91 77 41.880783
-91 78 46.173586
-91 79 30.364453
-91 80 37.443290
-91 81 10.000000
-91 82 16.278821
-91 83 10.770330
-91 84 16.000000
-91 85 26.907248
-91 86 35.383612
-91 87 28.017851
-91 88 33.970576
-91 89 17.029386
-91 90 51.613952
-91 92 13.000000
-91 93 16.492423
-91 94 24.515301
-91 95 20.024984
-91 96 21.470911
-91 97 19.313208
-91 98 43.931765
-91 99 12.083046
-91 100 16.278821
-91 101 20.880613
-92 1 12.041595
-92 2 49.244289
-92 3 42.638011
-92 4 50.774009
-92 5 47.801674
-92 6 51.865210
-92 7 45.276926
-92 8 47.381431
-92 9 50.990195
-92 10 39.623226
-92 11 39.051248
-92 12 41.048752
-92 13 41.109610
-92 14 44.553339
-92 15 44.102154
-92 16 47.042534
-92 17 49.040799
-92 18 49.091751
-92 19 37.336309
-92 20 32.756679
-92 21 27.892651
-92 22 38.078866
-92 23 28.460499
-92 24 38.600518
-92 25 29.154759
-92 26 39.560081
-92 27 47.539457
-92 28 46.529560
-92 29 44.643029
-92 30 41.593269
-92 31 40.804412
-92 32 39.623226
-92 33 39.849718
-92 34 39.812058
-92 35 36.674242
-92 36 46.615448
-92 37 45.880279
-92 38 43.081318
-92 39 40.162171
-92 40 39.560081
-92 41 44.384682
-92 42 34.205263
-92 43 38.470768
-92 44 43.416587
-92 45 40.447497
-92 46 49.406477
-92 47 49.040799
-92 48 47.095647
-92 49 37.656341
-92 50 30.805844
-92 51 24.041631
-92 52 22.803509
-92 53 26.832816
-92 54 30.083218
-92 55 18.973666
-92 56 26.172505
-92 57 7.071068
-92 58 25.495098
-92 59 46.690470
-92 60 44.777226
-92 61 38.470768
-92 62 23.345235
-92 63 17.464249
-92 64 27.202941
-92 65 12.649111
-92 66 14.142136
-92 67 9.433981
-92 68 15.000000
-92 69 20.124612
-92 70 20.591260
-92 71 30.413813
-92 72 20.615528
-92 73 26.925824
-92 74 50.328918
-92 75 36.400549
-92 76 57.489129
-92 77 31.953091
-92 78 46.872167
-92 79 43.324358
-92 80 50.249378
-92 81 5.385165
-92 82 16.000000
-92 83 22.022716
-92 84 16.278821
-92 85 15.264338
-92 86 23.600847
-92 87 33.286634
-92 88 41.146081
-92 89 29.681644
-92 90 41.146081
-92 91 13.000000
-92 93 4.123106
-92 94 15.620499
-92 95 10.000000
-92 96 8.602325
-92 97 13.416408
-92 98 51.000000
-92 99 25.079872
-92 100 24.041631
-92 101 30.805844
-93 1 14.764823
-93 2 50.477718
-93 3 44.553339
-93 4 52.201533
-93 5 49.578221
-93 6 53.413481
-93 7 47.423623
-93 8 49.678969
-93 9 53.037722
-93 10 43.737855
-93 11 43.104524
-93 12 45.099889
-93 13 45.044423
-93 14 48.662100
-93 15 48.041649
-93 16 51.088159
-93 17 53.084838
-93 18 53.037722
-93 19 39.051248
-93 20 34.785054
-93 21 30.083218
-93 22 40.162171
-93 23 30.870698
-93 24 40.853396
-93 25 31.764760
-93 26 42.047592
-93 27 43.965896
-93 28 42.755117
-93 29 41.109610
-93 30 37.854986
-93 31 37.336309
-93 32 35.902646
-93 33 36.400549
-93 34 36.715120
-93 35 32.984845
-93 36 44.271887
-93 37 43.680659
-93 38 40.804412
-93 39 38.078866
-93 40 37.656341
-93 41 42.579338
-93 42 32.388269
-93 43 37.054015
-93 44 42.047592
-93 45 39.051248
-93 46 51.088159
-93 47 50.931326
-93 48 51.039201
-93 49 39.560081
-93 50 32.893768
-93 51 20.615528
-93 52 23.086793
-93 53 30.870698
-93 54 33.734256
-93 55 17.117243
-93 56 28.600699
-93 57 8.544004
-93 58 29.206164
-93 59 50.328918
-93 60 48.764741
-93 61 41.629317
-93 62 23.409400
-93 63 14.422205
-93 64 25.942244
-93 65 15.264338
-93 66 18.248288
-93 67 13.416408
-93 68 11.045361
-93 69 21.400935
-93 70 23.769729
-93 71 31.622777
-93 72 16.970563
-93 73 24.166092
-93 74 53.758720
-93 75 40.224371
-93 76 61.220911
-93 77 31.780497
-93 78 50.000000
-93 79 46.840154
-93 80 53.235327
-93 81 7.211103
-93 82 15.524175
-93 83 26.000000
-93 84 20.000000
-93 85 14.560220
-93 86 22.360680
-93 87 37.215588
-93 88 45.188494
-93 89 32.649655
-93 90 40.496913
-93 91 16.492423
-93 92 4.123106
-93 94 12.041595
-93 95 6.403124
-93 96 6.708204
-93 97 11.180340
-93 98 55.009090
-93 99 28.460499
-93 100 28.160256
-93 101 32.557641
-94 1 21.095023
-94 2 48.836462
-94 3 45.276926
-94 4 51.088159
-94 5 49.648766
-94 6 52.630789
-94 7 48.764741
-94 8 51.429563
-94 9 53.851648
-94 10 53.758720
-94 11 52.392748
-94 12 54.341513
-94 13 53.460266
-94 14 58.523500
-94 15 56.435804
-94 16 60.207973
-94 17 62.169124
-94 18 61.400326
-94 19 49.979996
-94 20 46.097722
-94 21 41.593269
-94 22 51.478151
-94 23 42.544095
-94 24 52.325902
-94 25 43.566042
-94 26 53.712196
-94 27 40.496913
-94 28 38.013156
-94 29 38.013156
-94 30 33.615473
-94 31 34.828150
-94 32 31.906112
-94 33 34.058773
-94 34 36.124784
-94 35 29.410882
-94 36 33.541020
-94 37 33.241540
-94 38 30.265492
-94 39 28.017851
-94 40 28.017851
-94 41 33.015148
-94 42 23.194827
-94 43 28.635642
-94 44 33.541020
-94 45 30.594117
-94 46 50.803543
-94 47 51.312766
-94 48 59.413803
-94 49 50.695167
-94 50 44.283180
-94 51 20.248457
-94 52 32.557641
-94 53 42.190046
-94 54 41.048752
-94 55 10.000000
-94 56 32.015621
-94 57 20.248457
-94 58 41.109610
-94 59 62.289646
-94 60 60.207973
-94 61 46.690470
-94 62 20.615528
-94 63 17.464249
-94 64 32.249031
-94 65 27.202941
-94 66 28.635642
-94 67 25.000000
-94 68 10.440307
-94 69 22.472205
-94 70 30.000000
-94 71 31.064449
-94 72 5.000000
-94 73 13.152946
-94 74 59.539903
-94 75 52.009614
-94 76 73.109507
-94 77 40.012498
-94 78 62.008064
-94 79 53.150729
-94 80 57.280014
-94 81 14.866069
-94 82 13.416408
-94 83 35.171011
-94 84 31.890437
-94 85 23.345235
-94 86 29.068884
-94 87 48.826222
-94 88 56.435804
-94 89 37.483330
-94 90 47.381431
-94 91 24.515301
-94 92 15.620499
-94 93 12.041595
-94 95 5.656854
-94 96 15.811388
-94 97 6.324555
-94 98 66.370174
-94 99 35.000000
-94 100 38.910153
-94 101 33.541020
-95 1 17.117243
-95 2 48.918299
-95 3 44.204072
-95 4 50.931326
-95 5 48.918299
-95 6 52.325902
-95 7 47.434165
-95 8 49.929951
-95 9 52.801515
-95 10 48.764741
-95 11 47.675990
-95 12 49.648766
-95 13 49.091751
-95 14 53.600373
-95 15 52.086467
-95 16 55.578773
-95 17 57.558666
-95 18 57.078893
-95 19 44.922155
-95 20 40.853396
-95 21 36.249138
-95 22 46.238512
-95 23 37.121422
-95 24 47.010637
-95 25 38.078866
-95 26 48.301139
-95 27 42.047592
-95 28 40.162171
-95 29 39.357337
-95 30 35.468296
-95 31 35.846897
-95 32 33.615473
-95 33 34.985711
-95 34 36.235342
-95 35 30.870698
-95 36 38.327536
-95 37 37.854986
-95 38 34.928498
-95 39 32.388269
-95 40 32.140317
-95 41 37.121422
-95 42 27.018512
-95 43 32.062439
-95 44 37.054015
-95 45 34.058773
-95 46 50.249378
-95 47 50.447993
-95 48 55.081757
-95 49 45.541190
-95 50 39.000000
-95 51 19.849433
-95 52 28.071338
-95 53 36.715120
-95 54 37.054015
-95 55 12.165525
-95 56 29.546573
-95 57 14.764823
-95 58 35.468296
-95 59 56.639209
-95 60 54.708317
-95 61 43.680659
-95 62 20.808652
-95 63 15.264338
-95 64 29.120440
-95 65 21.633308
-95 66 23.409400
-95 67 19.416488
-95 68 9.219544
-95 69 20.808652
-95 70 26.305893
-95 71 30.413813
-95 72 10.630146
-95 73 18.027756
-95 74 56.293872
-95 75 46.400431
-95 76 67.475922
-95 77 36.124784
-95 78 56.400355
-95 79 49.648766
-95 80 54.781384
-95 81 10.049876
-95 82 12.806248
-95 83 30.413813
-95 84 26.248809
-95 85 19.000000
-95 86 25.709920
-95 87 43.266615
-95 88 51.000000
-95 89 34.481879
-95 90 44.147480
-95 91 20.024984
-95 92 10.000000
-95 93 6.403124
-95 94 5.656854
-95 96 11.045361
-95 97 6.324555
-95 98 60.901560
-95 99 31.256999
-95 100 33.615473
-95 101 32.202484
-96 1 20.615528
-96 2 57.140179
-96 3 50.990195
-96 4 58.821765
-96 5 56.080300
-96 6 60.000000
-96 7 53.740115
-96 8 55.901699
-96 9 59.413803
-96 10 46.043458
-96 11 46.097722
-96 12 48.093659
-96 13 48.662100
-96 14 51.039201
-96 15 51.623638
-96 16 54.083269
-96 17 56.080300
-96 18 56.568542
-96 19 34.176015
-96 20 30.413813
-96 21 26.076810
-96 22 35.777088
-96 23 27.202941
-96 24 36.715120
-96 25 28.425341
-96 26 38.275318
-96 27 39.623226
-96 28 39.051248
-96 29 36.674242
-96 30 34.058773
-96 31 32.756679
-96 32 32.062439
-96 33 31.780497
-96 34 31.384710
-96 35 29.068884
-96 36 49.244289
-96 37 48.836462
-96 38 45.891176
-96 39 43.416587
-96 40 43.185646
-96 41 48.166378
-96 42 38.052595
-96 43 43.011626
-96 44 48.010416
-96 45 45.011110
-96 46 57.628118
-96 47 57.384667
-96 48 54.589376
-96 49 34.928498
-96 50 28.653098
-96 51 16.124515
-96 52 17.029386
-96 53 31.780497
-96 54 38.275318
-96 55 23.021729
-96 56 34.713110
-96 57 6.324555
-96 58 28.635642
-96 59 49.091751
-96 60 49.040799
-96 61 47.010637
-96 62 30.083218
-96 63 9.219544
-96 64 19.235384
-96 65 13.038405
-96 66 21.213203
-96 67 15.000000
-96 68 9.433981
-96 69 28.017851
-96 70 29.154759
-96 71 38.275318
-96 72 20.124612
-96 73 28.861739
-96 74 58.694122
-96 75 39.812058
-96 76 60.207973
-96 77 25.317978
-96 78 47.381431
-96 79 51.623638
-96 80 58.830264
-96 81 13.453624
-96 82 22.135944
-96 83 29.614186
-96 84 19.924859
-96 85 8.062258
-96 86 15.652476
-96 87 37.336309
-96 88 45.880279
-96 89 38.275318
-96 90 33.837849
-96 91 21.470911
-96 92 8.602325
-96 93 6.708204
-96 94 15.811388
-96 95 11.045361
-96 97 17.029386
-96 98 55.362442
-96 99 33.541020
-96 100 30.066593
-96 101 39.051248
-97 1 15.524175
-97 2 43.139309
-97 3 39.115214
-97 4 45.276926
-97 5 43.600459
-97 6 46.754679
-97 7 42.544095
-97 8 45.177428
-97 9 47.707442
-97 10 48.846699
-97 11 47.127487
-97 12 49.040799
-97 13 47.853944
-97 14 53.488316
-97 15 50.803543
-97 16 54.817880
-97 17 56.753854
-97 18 55.731499
-97 19 50.219518
-97 20 45.880279
-97 21 41.109610
-97 22 51.244512
-97 23 41.785165
-97 24 51.865210
-97 25 42.544095
-97 26 52.924474
-97 27 46.647615
-97 28 44.283180
-97 29 44.102154
-97 30 39.824616
-97 31 40.804412
-97 32 38.078866
-97 33 40.000000
-97 34 41.725292
-97 35 35.510562
-97 36 33.241540
-97 37 32.572995
-97 38 29.732137
-97 39 26.925824
-97 40 26.476405
-97 41 31.400637
-97 42 21.213203
-97 43 26.000000
-97 44 31.000000
-97 45 28.000000
-97 46 44.821870
-97 47 45.221676
-97 48 53.758720
-97 49 50.695167
-97 50 43.965896
-97 51 25.495098
-97 52 34.000000
-97 53 38.418745
-97 54 35.227830
-97 55 6.000000
-97 56 25.709920
-97 57 19.646883
-97 58 38.288379
-97 59 59.464275
-97 60 56.400355
-97 61 40.447497
-97 62 14.866069
-97 63 21.470911
-97 64 35.440090
-97 65 26.000000
-97 66 24.413111
-97 67 22.022716
-97 68 15.000000
-97 69 16.155494
-97 70 24.083189
-97 71 25.000000
-97 72 10.049876
-97 73 13.601471
-97 74 53.338541
-97 75 48.795492
-97 76 70.007142
-97 77 42.296572
-97 78 60.207973
-97 79 47.042534
-97 80 50.960769
-97 81 10.630146
-97 82 7.211103
-97 83 30.083218
-97 84 29.206164
-97 85 25.079872
-97 86 32.015621
-97 87 45.343136
-97 88 52.430907
-97 89 31.256999
-97 90 50.447993
-97 91 19.313208
-97 92 13.416408
-97 93 11.180340
-97 94 6.324555
-97 95 6.324555
-97 96 17.029386
-97 98 62.425956
-97 99 29.068884
-97 100 34.669872
-97 101 27.294688
-98 1 48.166378
-98 2 70.213959
-98 3 59.774577
-98 4 69.375788
-98 5 64.031242
-98 6 68.883960
-98 7 58.694122
-98 8 58.051701
-98 9 62.968246
-98 10 18.027756
-98 11 22.803509
-98 12 22.360680
-98 13 27.294688
-98 14 17.029386
-98 15 27.018512
-98 16 22.090722
-98 17 22.360680
-98 18 27.294688
-98 19 42.059482
-98 20 38.832976
-98 21 38.118237
-98 22 38.275318
-98 23 36.124784
-98 24 36.400549
-98 25 34.132096
-98 26 33.615473
-98 27 91.787799
-98 28 92.574294
-98 29 88.814413
-98 30 87.664132
-98 31 84.852814
-98 32 85.702975
-98 33 83.862983
-98 34 81.301906
-98 35 82.764727
-98 36 91.967386
-98 37 90.609050
-98 38 88.413800
-98 39 84.899941
-98 40 83.546394
-98 41 87.321246
-98 42 78.517514
-98 43 80.280757
-98 44 84.202138
-98 45 81.835200
-98 46 65.969690
-98 47 63.560994
-98 48 27.073973
-98 49 40.162171
-98 50 38.470768
-98 51 70.092796
-98 52 51.039201
-98 53 24.186773
-98 54 35.777088
-98 55 66.068147
-98 56 49.396356
-98 57 49.040799
-98 58 26.925824
-98 59 13.601471
-98 60 6.324555
-98 61 43.416587
-98 62 62.369865
-98 63 63.324561
-98 64 61.032778
-98 65 42.720019
-98 66 38.013156
-98 67 41.593269
-98 68 64.621978
-98 69 55.317267
-98 70 43.416587
-98 71 59.682493
-98 72 71.344236
-98 73 75.432089
-98 74 42.047592
-98 75 16.124515
-98 76 13.038405
-98 77 56.320511
-98 78 24.207437
-98 79 38.209946
-98 80 50.039984
-98 81 51.865210
-98 82 60.207973
-98 83 33.970576
-98 84 35.468296
-98 85 54.129474
-98 86 59.211485
-98 87 18.027756
-98 88 10.000000
-98 89 44.721360
-98 90 64.327288
-98 91 43.931765
-98 92 51.000000
-98 93 55.009090
-98 94 66.370174
-98 95 60.901560
-98 96 55.362442
-98 97 62.425956
-98 99 40.496913
-98 100 27.802878
-98 101 55.946403
-99 1 14.142136
-99 2 33.015148
-99 3 23.345235
-99 4 33.241540
-99 5 28.635642
-99 6 33.541020
-99 7 24.351591
-99 8 25.495098
-99 9 30.083218
-99 10 23.345235
-99 11 20.000000
-99 12 21.633308
-99 13 19.313208
-99 14 27.018512
-99 15 22.135944
-99 16 26.832816
-99 17 28.635642
-99 18 26.925824
-99 19 50.328918
-99 20 44.944410
-99 21 40.311289
-99 22 49.040799
-99 23 39.560081
-99 24 48.507731
-99 25 38.897301
-99 26 47.853944
-99 27 72.422372
-99 28 71.063352
-99 29 69.570109
-99 30 66.219333
-99 31 65.787537
-99 32 64.288413
-99 33 64.845971
-99 34 64.884513
-99 35 61.400326
-99 36 52.630789
-99 37 51.088159
-99 38 49.203658
-99 39 45.607017
-99 40 44.045431
-99 41 47.381431
-99 42 39.408121
-99 43 40.311289
-99 44 43.931765
-99 45 41.725292
-99 46 30.594117
-99 47 29.120440
-99 48 25.000000
-99 49 49.648766
-99 50 43.081318
-99 51 49.040799
-99 52 43.185646
-99 53 22.022716
-99 54 6.324555
-99 55 30.083218
-99 56 8.944272
-99 57 29.410882
-99 58 27.294688
-99 59 43.416587
-99 60 35.777088
-99 61 13.601471
-99 62 23.021729
-99 63 42.544095
-99 64 50.447993
-99 65 29.068884
-99 66 15.000000
-99 67 21.213203
-99 68 39.293765
-99 69 16.124515
-99 70 5.000000
-99 71 19.235384
-99 72 39.115214
-99 73 39.217343
-99 74 25.298221
-99 75 32.557641
-99 76 51.478151
-99 77 52.497619
-99 78 49.091751
-99 79 18.439089
-99 80 25.612497
-99 81 21.587033
-99 82 23.769729
-99 83 9.055385
-99 84 23.706539
-99 85 38.600518
-99 86 47.010637
-99 87 28.442925
-99 88 31.304952
-99 89 6.324555
-99 90 62.369865
-99 91 12.083046
-99 92 25.079872
-99 93 28.460499
-99 94 35.000000
-99 95 31.256999
-99 96 33.541020
-99 97 29.068884
-99 98 40.496913
-99 100 17.000000
-99 101 15.811388
-100 1 20.518285
-100 2 50.009999
-100 3 40.199502
-100 4 50.159745
-100 5 45.398238
-100 6 50.358713
-100 7 40.792156
-100 8 41.484937
-100 9 46.324939
-100 10 16.000000
-100 11 16.763055
-100 12 18.681542
-100 13 20.591260
-100 14 21.000000
-100 15 23.259407
-100 16 24.515301
-100 17 26.476405
-100 18 27.856777
-100 19 34.985711
-100 20 29.681644
-100 21 25.612497
-100 22 33.105891
-100 23 24.413111
-100 24 32.310989
-100 25 23.323808
-100 26 31.320920
-100 27 69.180922
-100 28 69.000000
-100 29 66.189123
-100 30 64.000000
-100 31 62.201286
-100 32 62.000000
-100 33 61.204575
-100 34 59.841457
-100 35 59.000000
-100 36 64.660653
-100 37 63.411355
-100 38 61.073726
-100 39 57.628118
-100 40 56.400355
-100 41 60.464866
-100 42 51.224994
-100 43 53.535035
-100 44 57.801384
-100 45 55.226805
-100 46 47.381431
-100 47 45.705580
-100 48 26.000000
-100 49 34.000000
-100 50 28.017851
-100 51 46.000000
-100 52 32.649655
-100 53 5.099020
-100 54 16.155494
-100 55 38.288379
-100 56 25.317978
-100 57 24.000000
-100 58 10.770330
-100 59 27.313001
-100 60 21.931712
-100 61 27.313001
-100 62 35.510562
-100 63 39.000000
-100 64 41.785165
-100 65 19.646883
-100 66 10.295630
-100 67 15.132746
-100 68 38.639358
-100 69 28.653098
-100 70 17.720045
-100 71 35.171011
-100 72 43.829214
-100 73 47.634021
-100 74 34.655447
-100 75 16.155494
-100 76 36.619667
-100 77 41.048752
-100 78 32.140317
-100 79 27.658633
-100 80 38.587563
-100 81 24.186773
-100 82 32.526912
-100 83 8.062258
-100 84 11.704700
-100 85 31.575307
-100 86 38.897301
-100 87 12.083046
-100 88 17.804494
-100 89 23.086793
-100 90 50.803543
-100 91 16.278821
-100 92 24.041631
-100 93 28.160256
-100 94 38.910153
-100 95 33.615473
-100 96 30.066593
-100 97 34.669872
-100 98 27.802878
-100 99 17.000000
-100 101 32.388269
-101 1 19.235384
-101 2 18.973666
-101 3 12.041595
-101 4 20.124612
-101 5 17.029386
-101 6 21.095023
-101 7 15.264338
-101 8 17.888544
-101 9 20.615528
-101 10 38.275318
-101 11 34.205263
-101 12 35.468296
-101 13 31.827661
-101 14 41.231056
-101 15 34.058773
-101 16 39.623226
-101 17 41.109610
-101 18 38.013156
-101 19 63.348244
-101 20 58.051701
-101 21 53.150729
-101 22 62.649820
-101 23 52.773099
-101 24 62.393910
-101 25 52.469038
-101 26 62.128898
-101 27 73.925638
-101 28 71.554175
-101 29 71.344236
-101 30 67.119297
-101 31 67.955868
-101 32 65.368188
-101 33 67.119297
-101 34 68.410526
-101 35 62.769419
-101 36 40.249224
-101 37 38.470768
-101 38 37.161808
-101 39 33.615473
-101 40 31.780497
-101 41 34.132096
-101 42 28.160256
-101 43 27.294688
-101 44 30.000000
-101 45 28.301943
-101 46 18.601075
-101 47 18.384776
-101 48 36.400549
-101 49 62.968246
-101 50 56.089215
-101 51 52.009614
-101 52 52.773099
-101 53 37.483330
-101 54 20.248457
-101 55 25.000000
-101 56 7.071068
-101 57 37.215588
-101 58 42.011903
-101 59 59.203040
-101 60 51.478151
-101 61 17.464249
-101 62 14.142136
-101 63 46.690470
-101 64 58.008620
-101 65 39.560081
-101 66 27.294688
-101 67 31.622777
-101 68 41.400483
-101 69 11.401754
-101 70 15.000000
-101 71 4.472136
-101 72 36.055513
-101 73 32.062439
-101 74 29.832868
-101 75 48.270074
-101 76 67.230945
-101 77 62.177166
-101 78 64.498062
-101 79 25.495098
-101 80 25.019992
-101 81 25.612497
-101 82 20.124612
-101 83 24.331050
-101 84 36.496575
-101 85 46.043458
-101 86 54.405882
-101 87 44.147480
-101 88 47.010637
-101 89 11.401754
-101 90 71.693793
-101 91 20.880613
-101 92 30.805844
-101 93 32.557641
-101 94 33.541020
-101 95 32.202484
-101 96 39.051248
-101 97 27.294688
-101 98 55.946403
-101 99 15.811388
-101 100 32.388269
diff --git a/src/vrp_basic/test/Orders.txt b/src/vrp_basic/test/Orders.txt
deleted file mode 100644
index 61a445e..0000000
--- a/src/vrp_basic/test/Orders.txt
+++ /dev/null
@@ -1,102 +0,0 @@
- CUST_NO. XCOORD. YCOORD. DEMAND READY_TIME DUE_Time SERVICE_TIME
- 1 40.00 50.00 0.00 0.00 240.00 0.00
- 2 25.00 85.00 20.00 145.00 175.00 10.00
- 3 22.00 75.00 30.00 50.00 80.00 10.00
- 4 22.00 85.00 10.00 109.00 139.00 10.00
- 5 20.00 80.00 40.00 141.00 171.00 10.00
- 6 20.00 85.00 20.00 41.00 71.00 10.00
- 7 18.00 75.00 20.00 95.00 125.00 10.00
- 8 15.00 75.00 20.00 79.00 109.00 10.00
- 9 15.00 80.00 10.00 91.00 121.00 10.00
- 10 10.00 35.00 20.00 91.00 121.00 10.00
- 11 10.00 40.00 30.00 119.00 149.00 10.00
- 12 8.00 40.00 40.00 59.00 89.00 10.00
- 13 8.00 45.00 20.00 64.00 94.00 10.00
- 14 5.00 35.00 10.00 142.00 172.00 10.00
- 15 5.00 45.00 10.00 35.00 65.00 10.00
- 16 2.00 40.00 20.00 58.00 88.00 10.00
- 17 0.00 40.00 20.00 72.00 102.00 10.00
- 18 0.00 45.00 20.00 149.00 179.00 10.00
- 19 44.00 5.00 20.00 87.00 117.00 10.00
- 20 42.00 10.00 40.00 72.00 102.00 10.00
- 21 42.00 15.00 10.00 122.00 152.00 10.00
- 22 40.00 5.00 10.00 67.00 97.00 10.00
- 23 40.00 15.00 40.00 92.00 122.00 10.00
- 24 38.00 5.00 30.00 65.00 95.00 10.00
- 25 38.00 15.00 10.00 148.00 178.00 10.00
- 26 35.00 5.00 20.00 154.00 184.00 10.00
- 27 95.00 30.00 30.00 115.00 145.00 10.00
- 28 95.00 35.00 20.00 62.00 92.00 10.00
- 29 92.00 30.00 10.00 62.00 92.00 10.00
- 30 90.00 35.00 10.00 67.00 97.00 10.00
- 31 88.00 30.00 10.00 74.00 104.00 10.00
- 32 88.00 35.00 20.00 61.00 91.00 10.00
- 33 87.00 30.00 10.00 131.00 161.00 10.00
- 34 85.00 25.00 10.00 51.00 81.00 10.00
- 35 85.00 35.00 30.00 111.00 141.00 10.00
- 36 67.00 85.00 20.00 139.00 169.00 10.00
- 37 65.00 85.00 40.00 43.00 73.00 10.00
- 38 65.00 82.00 10.00 124.00 154.00 10.00
- 39 62.00 80.00 30.00 75.00 105.00 10.00
- 40 60.00 80.00 10.00 37.00 67.00 10.00
- 41 60.00 85.00 30.00 85.00 115.00 10.00
- 42 58.00 75.00 20.00 92.00 122.00 10.00
- 43 55.00 80.00 10.00 33.00 63.00 10.00
- 44 55.00 85.00 20.00 128.00 158.00 10.00
- 45 55.00 82.00 10.00 64.00 94.00 10.00
- 46 20.00 82.00 10.00 37.00 67.00 10.00
- 47 18.00 80.00 10.00 113.00 143.00 10.00
- 48 2.00 45.00 10.00 45.00 75.00 10.00
- 49 42.00 5.00 10.00 151.00 181.00 10.00
- 50 42.00 12.00 10.00 104.00 134.00 10.00
- 51 72.00 35.00 30.00 116.00 146.00 10.00
- 52 55.00 20.00 19.00 83.00 113.00 10.00
- 53 25.00 30.00 3.00 52.00 82.00 10.00
- 54 20.00 50.00 5.00 91.00 121.00 10.00
- 55 55.00 60.00 16.00 139.00 169.00 10.00
- 56 30.00 60.00 16.00 140.00 170.00 10.00
- 57 50.00 35.00 19.00 130.00 160.00 10.00
- 58 30.00 25.00 23.00 96.00 126.00 10.00
- 59 15.00 10.00 20.00 152.00 182.00 10.00
- 60 10.00 20.00 19.00 42.00 72.00 10.00
- 61 15.00 60.00 17.00 155.00 185.00 10.00
- 62 45.00 65.00 9.00 66.00 96.00 10.00
- 63 65.00 35.00 3.00 52.00 82.00 10.00
- 64 65.00 20.00 6.00 39.00 69.00 10.00
- 65 45.00 30.00 17.00 53.00 83.00 10.00
- 66 35.00 40.00 16.00 11.00 41.00 10.00
- 67 41.00 37.00 16.00 133.00 163.00 10.00
- 68 64.00 42.00 9.00 70.00 100.00 10.00
- 69 40.00 60.00 21.00 144.00 174.00 10.00
- 70 31.00 52.00 27.00 41.00 71.00 10.00
- 71 35.00 69.00 23.00 180.00 210.00 10.00
- 72 65.00 55.00 14.00 65.00 95.00 10.00
- 73 63.00 65.00 8.00 30.00 60.00 10.00
- 74 2.00 60.00 5.00 77.00 107.00 10.00
- 75 20.00 20.00 8.00 141.00 171.00 10.00
- 76 5.00 5.00 16.00 74.00 104.00 10.00
- 77 60.00 12.00 31.00 75.00 105.00 10.00
- 78 23.00 3.00 7.00 150.00 180.00 10.00
- 79 8.00 56.00 27.00 90.00 120.00 10.00
- 80 6.00 68.00 30.00 89.00 119.00 10.00
- 81 47.00 47.00 13.00 192.00 222.00 10.00
- 82 49.00 58.00 10.00 86.00 116.00 10.00
- 83 27.00 43.00 9.00 42.00 72.00 10.00
- 84 37.00 31.00 14.00 35.00 65.00 10.00
- 85 57.00 29.00 18.00 96.00 126.00 10.00
- 86 63.00 23.00 2.00 87.00 117.00 10.00
- 87 21.00 24.00 28.00 87.00 117.00 10.00
- 88 12.00 24.00 13.00 90.00 120.00 10.00
- 89 24.00 58.00 19.00 67.00 97.00 10.00
- 90 67.00 5.00 25.00 144.00 174.00 10.00
- 91 37.00 47.00 6.00 86.00 116.00 10.00
- 92 49.00 42.00 13.00 167.00 197.00 10.00
- 93 53.00 43.00 14.00 14.00 44.00 10.00
- 94 61.00 52.00 3.00 178.00 208.00 10.00
- 95 57.00 48.00 23.00 95.00 125.00 10.00
- 96 56.00 37.00 6.00 34.00 64.00 10.00
- 97 55.00 54.00 26.00 132.00 162.00 10.00
- 98 4.00 18.00 35.00 120.00 150.00 10.00
- 99 26.00 52.00 9.00 46.00 76.00 10.00
- 100 26.00 35.00 15.00 77.00 107.00 10.00
- 101 31.00 67.00 3.00 180.00 210.00 10.00
\ No newline at end of file
diff --git a/src/vrp_basic/test/VRP-any-01.data b/src/vrp_basic/test/VRP-any-01.data
deleted file mode 100644
index f1f265b..0000000
--- a/src/vrp_basic/test/VRP-any-01.data
+++ /dev/null
@@ -1,114 +0,0 @@
-drop table if exists vrp100_orders cascade;
-create table vrp100_orders (
- id integer not null primary key,
- order_unit integer,
- open_time integer,
- close_time integer,
- service_time integer,
- x float,
- y float
-);
-
-copy vrp100_orders (id, x, y, order_unit, open_time, close_time, service_time) from STDIN delimiter ',';
-0,40,50,0,0,1236,0
-1,45,68,10,912,967,90
-2,45,70,30,825,870,90
-3,42,66,10,65,146,90
-4,42,68,10,727,782,90
-5,42,65,10,15,67,90
-6,40,69,20,621,702,90
-7,40,66,20,170,225,90
-8,38,68,20,255,324,90
-9,38,70,10,534,605,90
-10,35,66,10,357,410,90
-11,35,69,10,448,505,90
-12,25,85,20,652,721,90
-13,22,75,30,30,92,90
-14,22,85,10,567,620,90
-15,20,80,40,384,429,90
-16,20,85,40,475,528,90
-17,18,75,20,99,148,90
-18,15,75,20,179,254,90
-19,15,80,10,278,345,90
-20,30,50,10,10,73,90
-21,30,52,20,914,965,90
-22,28,52,20,812,883,90
-23,28,55,10,732,777,90
-24,25,50,10,65,144,90
-25,25,52,40,169,224,90
-26,25,55,10,622,701,90
-27,23,52,10,261,316,90
-28,23,55,20,546,593,90
-29,20,50,10,358,405,90
-30,20,55,10,449,504,90
-31,10,35,20,200,237,90
-32,10,40,30,31,100,90
-33,8,40,40,87,158,90
-34,8,45,20,751,816,90
-35,5,35,10,283,344,90
-36,5,45,10,665,716,90
-37,2,40,20,383,434,90
-38,0,40,30,479,522,90
-39,0,45,20,567,624,90
-40,35,30,10,264,321,90
-41,35,32,10,166,235,90
-42,33,32,20,68,149,90
-43,33,35,10,16,80,90
-44,32,30,10,359,412,90
-45,30,30,10,541,600,90
-46,30,32,30,448,509,90
-47,30,35,10,1054,1127,90
-48,28,30,10,632,693,90
-49,28,35,10,1001,1066,90
-50,26,32,10,815,880,90
-51,25,30,10,725,786,90
-52,25,35,10,912,969,90
-53,44,5,20,286,347,90
-54,42,10,40,186,257,90
-55,42,15,10,95,158,90
-56,40,5,30,385,436,90
-57,40,15,40,35,87,90
-58,38,5,30,471,534,90
-59,38,15,10,651,740,90
-60,35,5,20,562,629,90
-61,50,30,10,531,610,90
-62,50,35,20,262,317,90
-63,50,40,50,171,218,90
-64,48,30,10,632,693,90
-65,48,40,10,76,129,90
-66,47,35,10,826,875,90
-67,47,40,10,12,77,90
-68,45,30,10,734,777,90
-69,45,35,10,916,969,90
-70,95,30,30,387,456,90
-71,95,35,20,293,360,90
-72,53,30,10,450,505,90
-73,92,30,10,478,551,90
-74,53,35,50,353,412,90
-75,45,65,20,997,1068,90
-76,90,35,10,203,260,90
-77,88,30,10,574,643,90
-78,88,35,20,109,170,90
-79,87,30,10,668,731,90
-80,85,25,10,769,820,90
-81,85,35,30,47,124,90
-82,75,55,20,369,420,90
-83,72,55,10,265,338,90
-84,70,58,20,458,523,90
-85,68,60,30,555,612,90
-86,66,55,10,173,238,90
-87,65,55,20,85,144,90
-88,65,60,30,645,708,90
-89,63,58,10,737,802,90
-90,60,55,10,20,84,90
-91,60,60,10,836,889,90
-92,67,85,20,368,441,90
-93,65,85,40,475,518,90
-94,65,82,10,285,336,90
-95,62,80,30,196,239,90
-96,60,80,10,95,156,90
-97,60,85,30,561,622,90
-98,58,75,20,30,84,90
-99,55,80,10,743,820,90
-100,55,85,20,647,726,90
-\.
diff --git a/src/vrp_basic/test/VRP-any-01.result b/src/vrp_basic/test/VRP-any-01.result
deleted file mode 100644
index e69de29..0000000
diff --git a/src/vrp_basic/test/VRP-any-01.test.sql b/src/vrp_basic/test/VRP-any-01.test.sql
deleted file mode 100644
index 3b9585e..0000000
--- a/src/vrp_basic/test/VRP-any-01.test.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select * from pgr_vrpOneDepot(
- 'select * from vrp_orders order by id'::text,
- 'select * from vrp_vehicles order by vehicle_id'::text,
- 'select * from vrp_distance order by src_id, dest_id'::text,
- 1 ) ORDER BY vid, opos;
diff --git a/src/vrp_basic/test/VRP-any-02.test.sql b/src/vrp_basic/test/VRP-any-02.test.sql
deleted file mode 100644
index 8190b16..0000000
--- a/src/vrp_basic/test/VRP-any-02.test.sql
+++ /dev/null
@@ -1,26 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-select * from pgr_vrpOneDepot(
- 'select * from vrp100_orders order by id'::text,
- 'select vehicle_id::integer, 200 as capacity from generate_series(1,50) as vehicle_id',
- 'select a.id as src_id, b.id as dest_id, sqrt((a.x-b.x)*(a.x-b.x)) as cost, sqrt((a.x-b.x)*(a.x-b.x)) as distance, sqrt((a.x-b.x)*(a.x-b.x)) as traveltime from vrp100_orders a, vrp100_orders b where a.id != b.id order by a.id, b.id', 0) order by vid, opos;
diff --git a/src/vrp_basic/test/Vehicles.txt b/src/vrp_basic/test/Vehicles.txt
deleted file mode 100644
index d9c77cb..0000000
--- a/src/vrp_basic/test/Vehicles.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-V_d Capacity
-1 200
-2 200
-3 200
-4 200
-5 200
-6 200
-7 200
-8 200
-9 200
-10 200
-11 200
-12 200
-13 200
-14 200
-15 200
-16 200
-17 200
-18 200
-19 200
-20 200
diff --git a/src/vrp_basic/test/doc-pgr_vrpOneDepot.result b/src/vrp_basic/test/doc-pgr_vrpOneDepot.result
new file mode 100644
index 0000000..2631800
--- /dev/null
+++ b/src/vrp_basic/test/doc-pgr_vrpOneDepot.result
@@ -0,0 +1,256 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT * FROM pgr_vrpOneDepot(
+ 'SELECT * FROM vrp_orders',
+ 'SELECT * FROM vrp_vehicles',
+ 'SELECT * FROM vrp_distance',
+ 1);
+ oid | opos | vid | tarrival | tdepart
+-----+------+-----+----------+---------
+ -1 | 1 | 5 | 0 | 0
+ 66 | 2 | 5 | 0 | 0
+ 25 | 3 | 5 | 0 | 0
+ 21 | 4 | 5 | 0 | 0
+ 84 | 5 | 5 | 0 | 0
+ 50 | 6 | 5 | 0 | 0
+ 49 | 7 | 5 | 0 | 0
+ 24 | 8 | 5 | 0 | 0
+ 22 | 9 | 5 | 0 | 0
+ 20 | 10 | 5 | 0 | 0
+ 19 | 11 | 5 | 0 | 0
+ 66 | 12 | 5 | 11 | 21
+ 84 | 13 | 5 | 30 | 45
+ 24 | 14 | 5 | 71 | 81
+ 22 | 15 | 5 | 83 | 93
+ 20 | 16 | 5 | 98 | 108
+ 19 | 17 | 5 | 114 | 124
+ 50 | 18 | 5 | 131 | 141
+ 21 | 19 | 5 | 144 | 154
+ 25 | 20 | 5 | 158 | 168
+ 49 | 21 | 5 | 179 | 189
+ -1 | 22 | 5 | 234 | 234
+ -1 | 1 | 6 | 0 | 0
+ 31 | 2 | 6 | 0 | 0
+ 32 | 3 | 6 | 0 | 0
+ 81 | 4 | 6 | 0 | 0
+ 94 | 5 | 6 | 0 | 0
+ 93 | 6 | 6 | 0 | 0
+ 35 | 7 | 6 | 0 | 0
+ 33 | 8 | 6 | 0 | 0
+ 28 | 9 | 6 | 0 | 0
+ 27 | 10 | 6 | 0 | 0
+ 93 | 11 | 6 | 15 | 25
+ 32 | 12 | 6 | 61 | 71
+ 28 | 13 | 6 | 78 | 88
+ 31 | 14 | 6 | 97 | 107
+ 35 | 15 | 6 | 112 | 122
+ 27 | 16 | 6 | 134 | 144
+ 33 | 17 | 6 | 152 | 162
+ 94 | 18 | 6 | 196 | 206
+ 81 | 19 | 6 | 221 | 231
+ -1 | 20 | 6 | 238 | 238
+ -1 | 1 | 3 | 0 | 0
+ 16 | 2 | 3 | 0 | 0
+ 14 | 3 | 3 | 0 | 0
+ 48 | 4 | 3 | 0 | 0
+ 18 | 5 | 3 | 0 | 0
+ 17 | 6 | 3 | 0 | 0
+ 15 | 7 | 3 | 0 | 0
+ 13 | 8 | 3 | 0 | 0
+ 11 | 9 | 3 | 0 | 0
+ 10 | 10 | 3 | 0 | 0
+ 15 | 11 | 3 | 35 | 45
+ 48 | 12 | 3 | 48 | 58
+ 13 | 13 | 3 | 64 | 74
+ 16 | 14 | 3 | 82 | 92
+ 17 | 15 | 3 | 94 | 104
+ 10 | 16 | 3 | 115 | 125
+ 11 | 17 | 3 | 130 | 140
+ 14 | 18 | 3 | 147 | 157
+ 18 | 19 | 3 | 169 | 179
+ -1 | 20 | 3 | 219 | 219
+ -1 | 1 | 8 | 0 | 0
+ 71 | 2 | 8 | 0 | 0
+ 55 | 3 | 8 | 0 | 0
+ 44 | 4 | 8 | 0 | 0
+ 43 | 5 | 8 | 0 | 0
+ 42 | 6 | 8 | 0 | 0
+ 41 | 7 | 8 | 0 | 0
+ 40 | 8 | 8 | 0 | 0
+ 39 | 9 | 8 | 0 | 0
+ 43 | 10 | 8 | 34 | 44
+ 40 | 11 | 8 | 49 | 59
+ 39 | 12 | 8 | 61 | 85
+ 41 | 13 | 8 | 90 | 100
+ 42 | 14 | 8 | 111 | 121
+ 44 | 15 | 8 | 131 | 141
+ 55 | 16 | 8 | 166 | 176
+ 71 | 17 | 8 | 198 | 208
+ -1 | 18 | 8 | 228 | 228
+ -1 | 1 | 1 | 0 | 0
+ 4 | 2 | 1 | 0 | 0
+ 101 | 3 | 1 | 0 | 0
+ 46 | 4 | 1 | 0 | 0
+ 5 | 5 | 1 | 0 | 0
+ 3 | 6 | 1 | 0 | 0
+ 46 | 7 | 1 | 38 | 48
+ 3 | 8 | 1 | 55 | 65
+ 2 | 9 | 1 | 96 | 96
+ 4 | 10 | 1 | 135 | 145
+ 2 | 11 | 1 | 148 | 158
+ 5 | 12 | 1 | 165 | 175
+ 101 | 13 | 1 | 192 | 202
+ -1 | 14 | 1 | 222 | 222
+ -1 | 1 | 13 | 0 | 0
+ 92 | 2 | 13 | 0 | 0
+ 52 | 3 | 13 | 0 | 0
+ 57 | 4 | 13 | 0 | 0
+ 85 | 5 | 13 | 0 | 0
+ 68 | 6 | 13 | 0 | 0
+ 63 | 7 | 13 | 0 | 0
+ 63 | 8 | 13 | 29 | 62
+ 68 | 9 | 13 | 69 | 80
+ 52 | 10 | 13 | 104 | 114
+ 85 | 11 | 13 | 123 | 133
+ 57 | 12 | 13 | 142 | 152
+ 92 | 13 | 13 | 159 | 177
+ -1 | 14 | 13 | 189 | 189
+ -1 | 1 | 7 | 0 | 0
+ 30 | 2 | 7 | 0 | 0
+ 29 | 3 | 7 | 0 | 0
+ 38 | 4 | 7 | 0 | 0
+ 36 | 5 | 7 | 0 | 0
+ 34 | 6 | 7 | 0 | 0
+ 34 | 7 | 7 | 51 | 61
+ 29 | 8 | 7 | 70 | 80
+ 30 | 9 | 7 | 85 | 95
+ 38 | 10 | 7 | 149 | 159
+ 36 | 11 | 7 | 162 | 172
+ -1 | 12 | 7 | 217 | 217
+ -1 | 1 | 2 | 0 | 0
+ 89 | 2 | 2 | 0 | 0
+ 47 | 3 | 2 | 0 | 0
+ 61 | 4 | 2 | 0 | 0
+ 9 | 5 | 2 | 0 | 0
+ 8 | 6 | 2 | 0 | 0
+ 89 | 7 | 2 | 18 | 77
+ 8 | 8 | 2 | 96 | 106
+ 9 | 9 | 2 | 111 | 121
+ 47 | 10 | 2 | 124 | 134
+ 61 | 11 | 2 | 154 | 165
+ -1 | 12 | 2 | 192 | 192
+ -1 | 1 | 14 | 0 | 0
+ 97 | 2 | 14 | 0 | 0
+ 64 | 3 | 14 | 0 | 0
+ 51 | 4 | 14 | 0 | 0
+ 96 | 5 | 14 | 0 | 0
+ 77 | 6 | 14 | 0 | 0
+ 96 | 7 | 14 | 21 | 44
+ 64 | 8 | 14 | 63 | 73
+ 77 | 9 | 14 | 83 | 93
+ 51 | 10 | 14 | 119 | 129
+ 97 | 11 | 14 | 154 | 164
+ -1 | 12 | 14 | 180 | 180
+ -1 | 1 | 15 | 0 | 0
+ 67 | 2 | 15 | 0 | 0
+ 73 | 3 | 15 | 0 | 0
+ 95 | 4 | 15 | 0 | 0
+ 82 | 5 | 15 | 0 | 0
+ 72 | 6 | 15 | 0 | 0
+ 73 | 7 | 15 | 27 | 40
+ 72 | 8 | 15 | 50 | 75
+ 82 | 9 | 15 | 91 | 101
+ 95 | 10 | 15 | 114 | 124
+ 67 | 11 | 15 | 144 | 154
+ -1 | 12 | 15 | 167 | 167
+ -1 | 1 | 11 | 0 | 0
+ 78 | 2 | 11 | 0 | 0
+ 26 | 3 | 11 | 0 | 0
+ 87 | 4 | 11 | 0 | 0
+ 23 | 5 | 11 | 0 | 0
+ 87 | 6 | 11 | 32 | 97
+ 23 | 7 | 11 | 118 | 128
+ 78 | 8 | 11 | 149 | 160
+ 26 | 9 | 11 | 172 | 182
+ -1 | 10 | 11 | 227 | 227
+ -1 | 1 | 4 | 0 | 0
+ 60 | 2 | 4 | 0 | 0
+ 59 | 3 | 4 | 0 | 0
+ 100 | 4 | 4 | 0 | 0
+ 54 | 5 | 4 | 0 | 0
+ 60 | 6 | 4 | 42 | 52
+ 100 | 7 | 4 | 74 | 87
+ 54 | 8 | 4 | 103 | 113
+ 59 | 9 | 4 | 153 | 163
+ -1 | 10 | 4 | 211 | 211
+ -1 | 1 | 10 | 0 | 0
+ 86 | 2 | 10 | 0 | 0
+ 90 | 3 | 10 | 0 | 0
+ 65 | 4 | 10 | 0 | 0
+ 53 | 5 | 10 | 0 | 0
+ 53 | 6 | 10 | 25 | 62
+ 65 | 7 | 10 | 82 | 92
+ 86 | 8 | 10 | 111 | 121
+ 90 | 9 | 10 | 140 | 154
+ -1 | 10 | 10 | 206 | 206
+ -1 | 1 | 12 | 0 | 0
+ 6 | 2 | 12 | 0 | 0
+ 80 | 3 | 12 | 0 | 0
+ 7 | 4 | 12 | 0 | 0
+ 56 | 5 | 12 | 0 | 0
+ 6 | 6 | 12 | 40 | 51
+ 80 | 7 | 12 | 73 | 99
+ 7 | 8 | 12 | 113 | 123
+ 56 | 9 | 12 | 142 | 152
+ -1 | 10 | 12 | 166 | 166
+ -1 | 1 | 19 | 0 | 0
+ 88 | 2 | 19 | 0 | 0
+ 70 | 3 | 19 | 0 | 0
+ 58 | 4 | 19 | 0 | 0
+ 99 | 5 | 19 | 0 | 0
+ 70 | 6 | 19 | 9 | 51
+ 99 | 7 | 19 | 56 | 66
+ 88 | 8 | 19 | 97 | 107
+ 58 | 9 | 19 | 125 | 135
+ -1 | 10 | 19 | 162 | 162
+ -1 | 1 | 17 | 0 | 0
+ 75 | 2 | 17 | 0 | 0
+ 98 | 3 | 17 | 0 | 0
+ 76 | 4 | 17 | 0 | 0
+ 76 | 5 | 17 | 57 | 84
+ 98 | 6 | 17 | 97 | 130
+ 75 | 7 | 17 | 146 | 156
+ -1 | 8 | 17 | 192 | 192
+ -1 | 1 | 16 | 0 | 0
+ 69 | 2 | 16 | 0 | 0
+ 79 | 3 | 16 | 0 | 0
+ 74 | 4 | 16 | 0 | 0
+ 74 | 5 | 16 | 39 | 87
+ 79 | 6 | 16 | 94 | 104
+ 69 | 7 | 16 | 136 | 154
+ -1 | 8 | 16 | 164 | 164
+ -1 | 1 | 9 | 0 | 0
+ 62 | 2 | 9 | 0 | 0
+ 37 | 3 | 9 | 0 | 0
+ 45 | 4 | 9 | 0 | 0
+ 37 | 5 | 9 | 43 | 53
+ 45 | 6 | 9 | 63 | 74
+ 62 | 7 | 9 | 94 | 104
+ -1 | 8 | 9 | 120 | 120
+ -1 | 1 | 18 | 0 | 0
+ 91 | 2 | 18 | 0 | 0
+ 12 | 3 | 18 | 0 | 0
+ 12 | 4 | 18 | 34 | 69
+ 91 | 5 | 18 | 99 | 109
+ -1 | 6 | 18 | 113 | 113
+ -1 | 1 | 20 | 0 | 0
+ 83 | 2 | 20 | 0 | 0
+ 83 | 3 | 20 | 15 | 52
+ -1 | 4 | 20 | 67 | 67
+ -1 | 0 | 0 | -1 | 3712
+(241 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/vrp_basic/test/doc-pgr_vrpOneDepot.test.sql b/src/vrp_basic/test/doc-pgr_vrpOneDepot.test.sql
new file mode 100644
index 0000000..7e921f1
--- /dev/null
+++ b/src/vrp_basic/test/doc-pgr_vrpOneDepot.test.sql
@@ -0,0 +1,6 @@
+
+SELECT * FROM pgr_vrpOneDepot(
+ 'SELECT * FROM vrp_orders',
+ 'SELECT * FROM vrp_vehicles',
+ 'SELECT * FROM vrp_distance',
+ 1);
diff --git a/src/vrp_basic/test/oneDepotWrapper.result b/src/vrp_basic/test/oneDepotWrapper.result
new file mode 100644
index 0000000..8c24c83
--- /dev/null
+++ b/src/vrp_basic/test/oneDepotWrapper.result
@@ -0,0 +1,256 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
+SELECT * FROM _pgr_vrpOneDepot(
+ 'SELECT * FROM vrp_orders',
+ 'SELECT * FROM vrp_vehicles',
+ 'SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM vrp_distance',
+ 1);
+ seq | vehicle_seq | vehicle_id | stop_seq | stop_type | stop_id | order_id | cargo | travel_time | arrival_time | wait_time | service_time | departure_time
+-----+-------------+------------+----------+-----------+---------+----------+-------+-------------+--------------+-------------------+--------------+----------------
+ 1 | 1 | 5 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 2 | 1 | 5 | 2 | 2 | 1 | 66 | 16 | 0 | 0 | 0 | 0 | 0
+ 3 | 1 | 5 | 3 | 2 | 1 | 25 | 26 | 0 | 0 | 0 | 0 | 0
+ 4 | 1 | 5 | 4 | 2 | 1 | 21 | 36 | 0 | 0 | 0 | 0 | 0
+ 5 | 1 | 5 | 5 | 2 | 1 | 84 | 50 | 0 | 0 | 0 | 0 | 0
+ 6 | 1 | 5 | 6 | 2 | 1 | 50 | 60 | 0 | 0 | 0 | 0 | 0
+ 7 | 1 | 5 | 7 | 2 | 1 | 49 | 70 | 0 | 0 | 0 | 0 | 0
+ 8 | 1 | 5 | 8 | 2 | 1 | 24 | 100 | 0 | 0 | 0 | 0 | 0
+ 9 | 1 | 5 | 9 | 2 | 1 | 22 | 110 | 0 | 0 | 0 | 0 | 0
+ 10 | 1 | 5 | 10 | 2 | 1 | 20 | 150 | 0 | 0 | 0 | 0 | 0
+ 11 | 1 | 5 | 11 | 2 | 1 | 19 | 170 | 0 | 0 | 0 | 0 | 0
+ 12 | 1 | 5 | 12 | 3 | 66 | 66 | 154 | 11.18034 | 11.18034 | 0 | 10 | 21.18034
+ 13 | 1 | 5 | 13 | 3 | 84 | 84 | 140 | 9.219544 | 30.399884 | 4.600116 | 10 | 45
+ 14 | 1 | 5 | 14 | 3 | 24 | 24 | 110 | 26.019224 | 71.019224 | 0 | 10 | 81.019224
+ 15 | 1 | 5 | 15 | 3 | 22 | 22 | 100 | 2 | 83.019224 | 0 | 10 | 93.019224
+ 16 | 1 | 5 | 16 | 3 | 20 | 20 | 60 | 5.385165 | 98.404389 | 0 | 10 | 108.404389
+ 17 | 1 | 5 | 17 | 3 | 19 | 19 | 40 | 5.385165 | 113.789554 | 0 | 10 | 123.789554
+ 18 | 1 | 5 | 18 | 3 | 50 | 50 | 30 | 7.28011 | 131.069664 | 0 | 10 | 141.069664
+ 19 | 1 | 5 | 19 | 3 | 21 | 21 | 20 | 3 | 144.069664 | 0 | 10 | 154.069664
+ 20 | 1 | 5 | 20 | 3 | 25 | 25 | 10 | 4 | 158.069664 | 0 | 10 | 168.069664
+ 21 | 1 | 5 | 21 | 3 | 49 | 49 | 0 | 10.77033 | 178.839994 | 0 | 10 | 188.839994
+ 22 | 1 | 5 | 22 | 6 | 1 | -1 | 0 | 45.044423 | 233.884417 | 0 | 0 | 233.884417
+ 23 | 2 | 6 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 24 | 2 | 6 | 2 | 2 | 1 | 31 | 10 | 0 | 0 | 0 | 0 | 0
+ 25 | 2 | 6 | 3 | 2 | 1 | 32 | 30 | 0 | 0 | 0 | 0 | 0
+ 26 | 2 | 6 | 4 | 2 | 1 | 81 | 43 | 0 | 0 | 0 | 0 | 0
+ 27 | 2 | 6 | 5 | 2 | 1 | 94 | 46 | 0 | 0 | 0 | 0 | 0
+ 28 | 2 | 6 | 6 | 2 | 1 | 93 | 60 | 0 | 0 | 0 | 0 | 0
+ 29 | 2 | 6 | 7 | 2 | 1 | 35 | 90 | 0 | 0 | 0 | 0 | 0
+ 30 | 2 | 6 | 8 | 2 | 1 | 33 | 100 | 0 | 0 | 0 | 0 | 0
+ 31 | 2 | 6 | 9 | 2 | 1 | 28 | 120 | 0 | 0 | 0 | 0 | 0
+ 32 | 2 | 6 | 10 | 2 | 1 | 27 | 150 | 0 | 0 | 0 | 0 | 0
+ 33 | 2 | 6 | 11 | 3 | 93 | 93 | 136 | 14.764823 | 14.764823 | 0 | 10 | 24.764823
+ 34 | 2 | 6 | 12 | 3 | 32 | 32 | 116 | 35.902646 | 60.667469 | 0.332531000000003 | 10 | 71
+ 35 | 2 | 6 | 13 | 3 | 28 | 28 | 96 | 7 | 78 | 0 | 10 | 88
+ 36 | 2 | 6 | 14 | 3 | 31 | 31 | 86 | 8.602325 | 96.602325 | 0 | 10 | 106.602325
+ 37 | 2 | 6 | 15 | 3 | 35 | 35 | 56 | 5.830952 | 112.433277 | 0 | 10 | 122.433277
+ 38 | 2 | 6 | 16 | 3 | 27 | 27 | 26 | 11.18034 | 133.613617 | 0 | 10 | 143.613617
+ 39 | 2 | 6 | 17 | 3 | 33 | 33 | 16 | 8 | 151.613617 | 0 | 10 | 161.613617
+ 40 | 2 | 6 | 18 | 3 | 94 | 94 | 13 | 34.058773 | 195.67239 | 0 | 10 | 205.67239
+ 41 | 2 | 6 | 19 | 3 | 81 | 81 | 0 | 14.866069 | 220.538459 | 0 | 10 | 230.538459
+ 42 | 2 | 6 | 20 | 6 | 1 | -1 | 0 | 7.615773 | 238.154232 | 0 | 0 | 238.154232
+ 43 | 3 | 3 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 44 | 3 | 3 | 2 | 2 | 1 | 16 | 20 | 0 | 0 | 0 | 0 | 0
+ 45 | 3 | 3 | 3 | 2 | 1 | 14 | 30 | 0 | 0 | 0 | 0 | 0
+ 46 | 3 | 3 | 4 | 2 | 1 | 48 | 40 | 0 | 0 | 0 | 0 | 0
+ 47 | 3 | 3 | 5 | 2 | 1 | 18 | 60 | 0 | 0 | 0 | 0 | 0
+ 48 | 3 | 3 | 6 | 2 | 1 | 17 | 80 | 0 | 0 | 0 | 0 | 0
+ 49 | 3 | 3 | 7 | 2 | 1 | 15 | 90 | 0 | 0 | 0 | 0 | 0
+ 50 | 3 | 3 | 8 | 2 | 1 | 13 | 110 | 0 | 0 | 0 | 0 | 0
+ 51 | 3 | 3 | 9 | 2 | 1 | 11 | 140 | 0 | 0 | 0 | 0 | 0
+ 52 | 3 | 3 | 10 | 2 | 1 | 10 | 160 | 0 | 0 | 0 | 0 | 0
+ 53 | 3 | 3 | 11 | 3 | 15 | 15 | 150 | 35.355339 | 35.355339 | 0 | 10 | 45.355339
+ 54 | 3 | 3 | 12 | 3 | 48 | 48 | 140 | 3 | 48.355339 | 0 | 10 | 58.355339
+ 55 | 3 | 3 | 13 | 3 | 13 | 13 | 120 | 6 | 64.355339 | 0 | 10 | 74.355339
+ 56 | 3 | 3 | 14 | 3 | 16 | 16 | 100 | 7.81025 | 82.165589 | 0 | 10 | 92.165589
+ 57 | 3 | 3 | 15 | 3 | 17 | 17 | 80 | 2 | 94.165589 | 0 | 10 | 104.165589
+ 58 | 3 | 3 | 16 | 3 | 10 | 10 | 60 | 11.18034 | 115.345929 | 0 | 10 | 125.345929
+ 59 | 3 | 3 | 17 | 3 | 11 | 11 | 30 | 5 | 130.345929 | 0 | 10 | 140.345929
+ 60 | 3 | 3 | 18 | 3 | 14 | 14 | 20 | 7.071068 | 147.416997 | 0 | 10 | 157.416997
+ 61 | 3 | 3 | 19 | 3 | 18 | 18 | 0 | 11.18034 | 168.597337 | 0 | 10 | 178.597337
+ 62 | 3 | 3 | 20 | 6 | 1 | -1 | 0 | 40.311289 | 218.908626 | 0 | 0 | 218.908626
+ 63 | 4 | 8 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 64 | 4 | 8 | 2 | 2 | 1 | 71 | 23 | 0 | 0 | 0 | 0 | 0
+ 65 | 4 | 8 | 3 | 2 | 1 | 55 | 39 | 0 | 0 | 0 | 0 | 0
+ 66 | 4 | 8 | 4 | 2 | 1 | 44 | 59 | 0 | 0 | 0 | 0 | 0
+ 67 | 4 | 8 | 5 | 2 | 1 | 43 | 69 | 0 | 0 | 0 | 0 | 0
+ 68 | 4 | 8 | 6 | 2 | 1 | 42 | 89 | 0 | 0 | 0 | 0 | 0
+ 69 | 4 | 8 | 7 | 2 | 1 | 41 | 119 | 0 | 0 | 0 | 0 | 0
+ 70 | 4 | 8 | 8 | 2 | 1 | 40 | 129 | 0 | 0 | 0 | 0 | 0
+ 71 | 4 | 8 | 9 | 2 | 1 | 39 | 159 | 0 | 0 | 0 | 0 | 0
+ 72 | 4 | 8 | 10 | 3 | 43 | 43 | 149 | 33.54102 | 33.54102 | 0 | 10 | 43.54102
+ 73 | 4 | 8 | 11 | 3 | 40 | 40 | 139 | 5 | 48.54102 | 0 | 10 | 58.54102
+ 74 | 4 | 8 | 12 | 3 | 39 | 39 | 109 | 2 | 60.54102 | 14.45898 | 10 | 85
+ 75 | 4 | 8 | 13 | 3 | 41 | 41 | 79 | 5.385165 | 90.385165 | 0 | 10 | 100.385165
+ 76 | 4 | 8 | 14 | 3 | 42 | 42 | 59 | 10.198039 | 110.583204 | 0 | 10 | 120.583204
+ 77 | 4 | 8 | 15 | 3 | 44 | 44 | 39 | 10.440307 | 131.023511 | 0 | 10 | 141.023511
+ 78 | 4 | 8 | 16 | 3 | 55 | 55 | 23 | 25 | 166.023511 | 0 | 10 | 176.023511
+ 79 | 4 | 8 | 17 | 3 | 71 | 71 | 0 | 21.931712 | 197.955223 | 0 | 10 | 207.955223
+ 80 | 4 | 8 | 18 | 6 | 1 | -1 | 0 | 19.646883 | 227.602106 | 0 | 0 | 227.602106
+ 81 | 5 | 1 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 82 | 5 | 1 | 2 | 2 | 1 | 4 | 10 | 0 | 0 | 0 | 0 | 0
+ 83 | 5 | 1 | 3 | 2 | 1 | 101 | 13 | 0 | 0 | 0 | 0 | 0
+ 84 | 5 | 1 | 4 | 2 | 1 | 46 | 23 | 0 | 0 | 0 | 0 | 0
+ 85 | 5 | 1 | 5 | 2 | 1 | 5 | 63 | 0 | 0 | 0 | 0 | 0
+ 86 | 5 | 1 | 6 | 2 | 1 | 3 | 93 | 0 | 0 | 0 | 0 | 0
+ 87 | 5 | 1 | 7 | 3 | 46 | 46 | 83 | 37.735925 | 37.735925 | 0 | 10 | 47.735925
+ 88 | 5 | 1 | 8 | 3 | 3 | 3 | 53 | 7.28011 | 55.016035 | 0 | 10 | 65.016035
+ 89 | 5 | 1 | 9 | 2 | 1 | 2 | 73 | 30.805844 | 95.821879 | 0 | 0 | 95.821879
+ 90 | 5 | 1 | 10 | 3 | 4 | 4 | 63 | 39.357337 | 135.179216 | 0 | 10 | 145.179216
+ 91 | 5 | 1 | 11 | 3 | 2 | 2 | 43 | 3 | 148.179216 | 0 | 10 | 158.179216
+ 92 | 5 | 1 | 12 | 3 | 5 | 5 | 3 | 7.071068 | 165.250284 | 0 | 10 | 175.250284
+ 93 | 5 | 1 | 13 | 3 | 101 | 101 | 0 | 17.029386 | 192.27967 | 0 | 10 | 202.27967
+ 94 | 5 | 1 | 14 | 6 | 1 | -1 | 0 | 19.235384 | 221.515054 | 0 | 0 | 221.515054
+ 95 | 6 | 13 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 96 | 6 | 13 | 2 | 2 | 1 | 92 | 13 | 0 | 0 | 0 | 0 | 0
+ 97 | 6 | 13 | 3 | 2 | 1 | 52 | 32 | 0 | 0 | 0 | 0 | 0
+ 98 | 6 | 13 | 4 | 2 | 1 | 57 | 51 | 0 | 0 | 0 | 0 | 0
+ 99 | 6 | 13 | 5 | 2 | 1 | 85 | 69 | 0 | 0 | 0 | 0 | 0
+ 100 | 6 | 13 | 6 | 2 | 1 | 68 | 78 | 0 | 0 | 0 | 0 | 0
+ 101 | 6 | 13 | 7 | 2 | 1 | 63 | 81 | 0 | 0 | 0 | 0 | 0
+ 102 | 6 | 13 | 8 | 3 | 63 | 63 | 78 | 29.154759 | 29.154759 | 22.845241 | 10 | 62
+ 103 | 6 | 13 | 9 | 3 | 68 | 68 | 69 | 7.071068 | 69.071068 | 0.928932000000003 | 10 | 80
+ 104 | 6 | 13 | 10 | 3 | 52 | 52 | 50 | 23.769729 | 103.769729 | 0 | 10 | 113.769729
+ 105 | 6 | 13 | 11 | 3 | 85 | 85 | 32 | 9.219544 | 122.989273 | 0 | 10 | 132.989273
+ 106 | 6 | 13 | 12 | 3 | 57 | 57 | 13 | 9.219544 | 142.208817 | 0 | 10 | 152.208817
+ 107 | 6 | 13 | 13 | 3 | 92 | 92 | 0 | 7.071068 | 159.279885 | 7.72011499999999 | 10 | 177
+ 108 | 6 | 13 | 14 | 6 | 1 | -1 | 0 | 12.041595 | 189.041595 | 0 | 0 | 189.041595
+ 109 | 7 | 7 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 110 | 7 | 7 | 2 | 2 | 1 | 30 | 10 | 0 | 0 | 0 | 0 | 0
+ 111 | 7 | 7 | 3 | 2 | 1 | 29 | 20 | 0 | 0 | 0 | 0 | 0
+ 112 | 7 | 7 | 4 | 2 | 1 | 38 | 30 | 0 | 0 | 0 | 0 | 0
+ 113 | 7 | 7 | 5 | 2 | 1 | 36 | 50 | 0 | 0 | 0 | 0 | 0
+ 114 | 7 | 7 | 6 | 2 | 1 | 34 | 60 | 0 | 0 | 0 | 0 | 0
+ 115 | 7 | 7 | 7 | 3 | 34 | 34 | 50 | 51.478151 | 51.478151 | 0 | 10 | 61.478151
+ 116 | 7 | 7 | 8 | 3 | 29 | 29 | 40 | 8.602325 | 70.080476 | 0 | 10 | 80.080476
+ 117 | 7 | 7 | 9 | 3 | 30 | 30 | 30 | 5.385165 | 85.465641 | 0 | 10 | 95.465641
+ 118 | 7 | 7 | 10 | 3 | 38 | 38 | 20 | 53.235327 | 148.700968 | 0 | 10 | 158.700968
+ 119 | 7 | 7 | 11 | 3 | 36 | 36 | 0 | 3.605551 | 162.306519 | 0 | 10 | 172.306519
+ 120 | 7 | 7 | 12 | 6 | 1 | -1 | 0 | 44.204072 | 216.510591 | 0 | 0 | 216.510591
+ 121 | 8 | 2 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 122 | 8 | 2 | 2 | 2 | 1 | 89 | 19 | 0 | 0 | 0 | 0 | 0
+ 123 | 8 | 2 | 3 | 2 | 1 | 47 | 29 | 0 | 0 | 0 | 0 | 0
+ 124 | 8 | 2 | 4 | 2 | 1 | 61 | 46 | 0 | 0 | 0 | 0 | 0
+ 125 | 8 | 2 | 5 | 2 | 1 | 9 | 56 | 0 | 0 | 0 | 0 | 0
+ 126 | 8 | 2 | 6 | 2 | 1 | 8 | 76 | 0 | 0 | 0 | 0 | 0
+ 127 | 8 | 2 | 7 | 3 | 89 | 89 | 57 | 17.888544 | 17.888544 | 49.111456 | 10 | 77
+ 128 | 8 | 2 | 8 | 3 | 8 | 8 | 37 | 19.235384 | 96.235384 | 0 | 10 | 106.235384
+ 129 | 8 | 2 | 9 | 3 | 9 | 9 | 27 | 5 | 111.235384 | 0 | 10 | 121.235384
+ 130 | 8 | 2 | 10 | 3 | 47 | 47 | 17 | 3 | 124.235384 | 0 | 10 | 134.235384
+ 131 | 8 | 2 | 11 | 3 | 61 | 61 | 0 | 20.223748 | 154.459132 | 0.540867999999989 | 10 | 165
+ 132 | 8 | 2 | 12 | 6 | 1 | -1 | 0 | 26.925824 | 191.925824 | 0 | 0 | 191.925824
+ 133 | 9 | 14 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 134 | 9 | 14 | 2 | 2 | 1 | 97 | 26 | 0 | 0 | 0 | 0 | 0
+ 135 | 9 | 14 | 3 | 2 | 1 | 64 | 32 | 0 | 0 | 0 | 0 | 0
+ 136 | 9 | 14 | 4 | 2 | 1 | 51 | 62 | 0 | 0 | 0 | 0 | 0
+ 137 | 9 | 14 | 5 | 2 | 1 | 96 | 68 | 0 | 0 | 0 | 0 | 0
+ 138 | 9 | 14 | 6 | 2 | 1 | 77 | 99 | 0 | 0 | 0 | 0 | 0
+ 139 | 9 | 14 | 7 | 3 | 96 | 96 | 93 | 20.615528 | 20.615528 | 13.384472 | 10 | 44
+ 140 | 9 | 14 | 8 | 3 | 64 | 64 | 87 | 19.235384 | 63.235384 | 0 | 10 | 73.235384
+ 141 | 9 | 14 | 9 | 3 | 77 | 77 | 56 | 9.433981 | 82.669365 | 0 | 10 | 92.669365
+ 142 | 9 | 14 | 10 | 3 | 51 | 51 | 26 | 25.942244 | 118.611609 | 0 | 10 | 128.611609
+ 143 | 9 | 14 | 11 | 3 | 97 | 97 | 0 | 25.495098 | 154.106707 | 0 | 10 | 164.106707
+ 144 | 9 | 14 | 12 | 6 | 1 | -1 | 0 | 15.524175 | 179.630882 | 0 | 0 | 179.630882
+ 145 | 10 | 15 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 146 | 10 | 15 | 2 | 2 | 1 | 67 | 16 | 0 | 0 | 0 | 0 | 0
+ 147 | 10 | 15 | 3 | 2 | 1 | 73 | 24 | 0 | 0 | 0 | 0 | 0
+ 148 | 10 | 15 | 4 | 2 | 1 | 95 | 47 | 0 | 0 | 0 | 0 | 0
+ 149 | 10 | 15 | 5 | 2 | 1 | 82 | 57 | 0 | 0 | 0 | 0 | 0
+ 150 | 10 | 15 | 6 | 2 | 1 | 72 | 71 | 0 | 0 | 0 | 0 | 0
+ 151 | 10 | 15 | 7 | 3 | 73 | 73 | 63 | 27.45906 | 27.45906 | 2.54094 | 10 | 40
+ 152 | 10 | 15 | 8 | 3 | 72 | 72 | 49 | 10.198039 | 50.198039 | 14.801961 | 10 | 75
+ 153 | 10 | 15 | 9 | 3 | 82 | 82 | 39 | 16.278821 | 91.278821 | 0 | 10 | 101.278821
+ 154 | 10 | 15 | 10 | 3 | 95 | 95 | 16 | 12.806248 | 114.085069 | 0 | 10 | 124.085069
+ 155 | 10 | 15 | 11 | 3 | 67 | 67 | 0 | 19.416488 | 143.501557 | 0 | 10 | 153.501557
+ 156 | 10 | 15 | 12 | 6 | 1 | -1 | 0 | 13.038405 | 166.539962 | 0 | 0 | 166.539962
+ 157 | 11 | 11 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 158 | 11 | 11 | 2 | 2 | 1 | 78 | 7 | 0 | 0 | 0 | 0 | 0
+ 159 | 11 | 11 | 3 | 2 | 1 | 26 | 27 | 0 | 0 | 0 | 0 | 0
+ 160 | 11 | 11 | 4 | 2 | 1 | 87 | 55 | 0 | 0 | 0 | 0 | 0
+ 161 | 11 | 11 | 5 | 2 | 1 | 23 | 95 | 0 | 0 | 0 | 0 | 0
+ 162 | 11 | 11 | 6 | 3 | 87 | 87 | 67 | 32.202484 | 32.202484 | 54.797516 | 10 | 97
+ 163 | 11 | 11 | 7 | 3 | 23 | 23 | 27 | 21.023796 | 118.023796 | 0 | 10 | 128.023796
+ 164 | 11 | 11 | 8 | 3 | 78 | 78 | 20 | 20.808652 | 148.832448 | 1.167552 | 10 | 160
+ 165 | 11 | 11 | 9 | 3 | 26 | 26 | 0 | 12.165525 | 172.165525 | 0 | 10 | 182.165525
+ 166 | 11 | 11 | 10 | 6 | 1 | -1 | 0 | 45.276926 | 227.442451 | 0 | 0 | 227.442451
+ 167 | 12 | 4 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 168 | 12 | 4 | 2 | 2 | 1 | 60 | 19 | 0 | 0 | 0 | 0 | 0
+ 169 | 12 | 4 | 3 | 2 | 1 | 59 | 39 | 0 | 0 | 0 | 0 | 0
+ 170 | 12 | 4 | 4 | 2 | 1 | 100 | 54 | 0 | 0 | 0 | 0 | 0
+ 171 | 12 | 4 | 5 | 2 | 1 | 54 | 59 | 0 | 0 | 0 | 0 | 0
+ 172 | 12 | 4 | 6 | 3 | 60 | 60 | 40 | 42.426407 | 42.426407 | 0 | 10 | 52.426407
+ 173 | 12 | 4 | 7 | 3 | 100 | 100 | 25 | 21.931712 | 74.358119 | 2.641881 | 10 | 87
+ 174 | 12 | 4 | 8 | 3 | 54 | 54 | 20 | 16.155494 | 103.155494 | 0 | 10 | 113.155494
+ 175 | 12 | 4 | 9 | 3 | 59 | 59 | 0 | 40.311289 | 153.466783 | 0 | 10 | 163.466783
+ 176 | 12 | 4 | 10 | 6 | 1 | -1 | 0 | 47.169906 | 210.636689 | 0 | 0 | 210.636689
+ 177 | 13 | 10 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 178 | 13 | 10 | 2 | 2 | 1 | 86 | 2 | 0 | 0 | 0 | 0 | 0
+ 179 | 13 | 10 | 3 | 2 | 1 | 90 | 27 | 0 | 0 | 0 | 0 | 0
+ 180 | 13 | 10 | 4 | 2 | 1 | 65 | 44 | 0 | 0 | 0 | 0 | 0
+ 181 | 13 | 10 | 5 | 2 | 1 | 53 | 47 | 0 | 0 | 0 | 0 | 0
+ 182 | 13 | 10 | 6 | 3 | 53 | 53 | 44 | 25 | 25 | 27 | 10 | 62
+ 183 | 13 | 10 | 7 | 3 | 65 | 65 | 27 | 20 | 82 | 0 | 10 | 92
+ 184 | 13 | 10 | 8 | 3 | 86 | 86 | 25 | 19.313208 | 111.313208 | 0 | 10 | 121.313208
+ 185 | 13 | 10 | 9 | 3 | 90 | 90 | 0 | 18.439089 | 139.752297 | 4.247703 | 10 | 154
+ 186 | 13 | 10 | 10 | 6 | 1 | -1 | 0 | 52.478567 | 206.478567 | 0 | 0 | 206.478567
+ 187 | 14 | 12 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 188 | 14 | 12 | 2 | 2 | 1 | 6 | 20 | 0 | 0 | 0 | 0 | 0
+ 189 | 14 | 12 | 3 | 2 | 1 | 80 | 50 | 0 | 0 | 0 | 0 | 0
+ 190 | 14 | 12 | 4 | 2 | 1 | 7 | 70 | 0 | 0 | 0 | 0 | 0
+ 191 | 14 | 12 | 5 | 2 | 1 | 56 | 86 | 0 | 0 | 0 | 0 | 0
+ 192 | 14 | 12 | 6 | 3 | 6 | 6 | 66 | 40.311289 | 40.311289 | 0.688710999999998 | 10 | 51
+ 193 | 14 | 12 | 7 | 3 | 80 | 80 | 36 | 22.022716 | 73.022716 | 15.977284 | 10 | 99
+ 194 | 14 | 12 | 8 | 3 | 7 | 7 | 16 | 13.892444 | 112.892444 | 0 | 10 | 122.892444
+ 195 | 14 | 12 | 9 | 3 | 56 | 56 | 0 | 19.209373 | 142.101817 | 0 | 10 | 152.101817
+ 196 | 14 | 12 | 10 | 6 | 1 | -1 | 0 | 14.142136 | 166.243953 | 0 | 0 | 166.243953
+ 197 | 15 | 19 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 198 | 15 | 19 | 2 | 2 | 1 | 88 | 13 | 0 | 0 | 0 | 0 | 0
+ 199 | 15 | 19 | 3 | 2 | 1 | 70 | 40 | 0 | 0 | 0 | 0 | 0
+ 200 | 15 | 19 | 4 | 2 | 1 | 58 | 63 | 0 | 0 | 0 | 0 | 0
+ 201 | 15 | 19 | 5 | 2 | 1 | 99 | 72 | 0 | 0 | 0 | 0 | 0
+ 202 | 15 | 19 | 6 | 3 | 70 | 70 | 45 | 9.219544 | 9.219544 | 31.780456 | 10 | 51
+ 203 | 15 | 19 | 7 | 3 | 99 | 99 | 36 | 5 | 56 | 0 | 10 | 66
+ 204 | 15 | 19 | 8 | 3 | 88 | 88 | 23 | 31.304952 | 97.304952 | 0 | 10 | 107.304952
+ 205 | 15 | 19 | 9 | 3 | 58 | 58 | 0 | 18.027756 | 125.332708 | 0 | 10 | 135.332708
+ 206 | 15 | 19 | 10 | 6 | 1 | -1 | 0 | 26.925824 | 162.258532 | 0 | 0 | 162.258532
+ 207 | 16 | 17 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 208 | 16 | 17 | 2 | 2 | 1 | 75 | 8 | 0 | 0 | 0 | 0 | 0
+ 209 | 16 | 17 | 3 | 2 | 1 | 98 | 43 | 0 | 0 | 0 | 0 | 0
+ 210 | 16 | 17 | 4 | 2 | 1 | 76 | 59 | 0 | 0 | 0 | 0 | 0
+ 211 | 16 | 17 | 5 | 3 | 76 | 76 | 43 | 57.008771 | 57.008771 | 16.991229 | 10 | 84
+ 212 | 16 | 17 | 6 | 3 | 98 | 98 | 8 | 13.038405 | 97.038405 | 22.961595 | 10 | 130
+ 213 | 16 | 17 | 7 | 3 | 75 | 75 | 0 | 16.124515 | 146.124515 | 0 | 10 | 156.124515
+ 214 | 16 | 17 | 8 | 6 | 1 | -1 | 0 | 36.055513 | 192.180028 | 0 | 0 | 192.180028
+ 215 | 17 | 16 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 216 | 17 | 16 | 2 | 2 | 1 | 69 | 21 | 0 | 0 | 0 | 0 | 0
+ 217 | 17 | 16 | 3 | 2 | 1 | 79 | 48 | 0 | 0 | 0 | 0 | 0
+ 218 | 17 | 16 | 4 | 2 | 1 | 74 | 53 | 0 | 0 | 0 | 0 | 0
+ 219 | 17 | 16 | 5 | 3 | 74 | 74 | 48 | 39.293765 | 39.293765 | 37.706235 | 10 | 87
+ 220 | 17 | 16 | 6 | 3 | 79 | 79 | 21 | 7.211103 | 94.211103 | 0 | 10 | 104.211103
+ 221 | 17 | 16 | 7 | 3 | 69 | 69 | 0 | 32.249031 | 136.460134 | 7.53986600000002 | 10 | 154
+ 222 | 17 | 16 | 8 | 6 | 1 | -1 | 0 | 10 | 164 | 0 | 0 | 164
+ 223 | 18 | 9 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 224 | 18 | 9 | 2 | 2 | 1 | 62 | 9 | 0 | 0 | 0 | 0 | 0
+ 225 | 18 | 9 | 3 | 2 | 1 | 37 | 49 | 0 | 0 | 0 | 0 | 0
+ 226 | 18 | 9 | 4 | 2 | 1 | 45 | 59 | 0 | 0 | 0 | 0 | 0
+ 227 | 18 | 9 | 5 | 3 | 37 | 37 | 19 | 43.011626 | 43.011626 | 0 | 10 | 53.011626
+ 228 | 18 | 9 | 6 | 3 | 45 | 45 | 9 | 10.440307 | 63.451933 | 0.548067000000003 | 10 | 74
+ 229 | 18 | 9 | 7 | 3 | 62 | 62 | 0 | 19.723083 | 93.723083 | 0 | 10 | 103.723083
+ 230 | 18 | 9 | 8 | 6 | 1 | -1 | 0 | 15.811388 | 119.534471 | 0 | 0 | 119.534471
+ 231 | 19 | 18 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 232 | 19 | 18 | 2 | 2 | 1 | 91 | 6 | 0 | 0 | 0 | 0 | 0
+ 233 | 19 | 18 | 3 | 2 | 1 | 12 | 46 | 0 | 0 | 0 | 0 | 0
+ 234 | 19 | 18 | 4 | 3 | 12 | 12 | 6 | 33.526109 | 33.526109 | 25.473891 | 10 | 69
+ 235 | 19 | 18 | 5 | 3 | 91 | 91 | 0 | 29.832868 | 98.832868 | 0 | 10 | 108.832868
+ 236 | 19 | 18 | 6 | 6 | 1 | -1 | 0 | 4.242641 | 113.075509 | 0 | 0 | 113.075509
+ 237 | 20 | 20 | 1 | 1 | 1 | -1 | 0 | 0 | 0 | 0 | 0 | 0
+ 238 | 20 | 20 | 2 | 2 | 1 | 83 | 9 | 0 | 0 | 0 | 0 | 0
+ 239 | 20 | 20 | 3 | 3 | 83 | 83 | 0 | 14.764823 | 14.764823 | 27.235177 | 10 | 52
+ 240 | 20 | 20 | 4 | 6 | 1 | -1 | 0 | 14.764823 | 66.764823 | 0 | 0 | 66.764823
+ 241 | -2 | 0 | 0 | -1 | -1 | -1 | -1 | 2304.305537 | -1 | 408.022775 | 1000 | 3712.328312
+(241 rows)
+
+ROLLBACK;
+ROLLBACK
diff --git a/src/vrp_basic/test/oneDepotWrapper.test.sql b/src/vrp_basic/test/oneDepotWrapper.test.sql
new file mode 100644
index 0000000..067f5d1
--- /dev/null
+++ b/src/vrp_basic/test/oneDepotWrapper.test.sql
@@ -0,0 +1,6 @@
+
+SELECT * FROM _pgr_vrpOneDepot(
+ 'SELECT * FROM vrp_orders',
+ 'SELECT * FROM vrp_vehicles',
+ 'SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM vrp_distance',
+ 1);
diff --git a/src/vrp_basic/test/test.conf b/src/vrp_basic/test/test.conf
index fc73366..30df1be 100644
--- a/src/vrp_basic/test/test.conf
+++ b/src/vrp_basic/test/test.conf
@@ -3,13 +3,15 @@
%main::tests = (
'any' => {
'comment' => 'VRP Single depot test for any versions.',
- 'data' => ['VRP-any-00.data'],
- #'tests' => [qw(VRP-any-01)]
- 'tests' => []
+ 'data' => ['../../../tools/testers/vrpOneDepot.data'],
+ 'tests' => [qw(
+ oneDepotWrapper
+ doc-pgr_vrpOneDepot
+ )],
+ 'documentation' => [qw(
+ doc-pgr_vrpOneDepot
+ )]
},
-# 'vpg-vpgis' => {}, # for version specific tests
-# '8-1' => {}, # for pg 8.x and postgis 1.x
-# '9.2-2.1' => {}, # for pg 9.2 and postgis 2.1
);
1;
diff --git a/src/vrppdtw/doc/doc-gsoc_vrppdtw.queries b/src/vrppdtw/doc/doc-gsoc_vrppdtw.queries
deleted file mode 100644
index 9a0126c..0000000
--- a/src/vrppdtw/doc/doc-gsoc_vrppdtw.queries
+++ /dev/null
@@ -1,83 +0,0 @@
-BEGIN;
-BEGIN
-SET client_min_messages TO NOTICE;
-SET
---q1
-SELECT DISTINCT(id1) FROM pgr_gsoc_vrppdtw(
- 'SELECT * FROM customer ORDER BY id', 25, 200)
-ORDER BY id1;
- id1
------
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
-(10 rows)
-
---q2
-SELECT count(*) FROM pgr_gsoc_vrppdtw(
- 'SELECT * FROM customer ORDER BY id', 25, 200);
- count
--------
- 126
-(1 row)
-
---q3
-SELECT * FROM pgr_gsoc_vrppdtw(
- 'SELECT * FROM customer ORDER BY id', 25, 200)
- WHERE id1 in (1, 5, 9);
- seq | id1 | id2 | cost
------+-----+-----+------------------
- 1 | 1 | 0 | 0
- 2 | 1 | 5 | 105.132745950422
- 3 | 1 | 3 | 196.132745950422
- 4 | 1 | 7 | 288.132745950422
- 5 | 1 | 8 | 380.961173075168
- 6 | 1 | 10 | 474.566724350632
- 7 | 1 | 11 | 567.566724350632
- 8 | 1 | 9 | 660.7290020108
- 9 | 1 | 6 | 752.9650699883
- 10 | 1 | 4 | 845.2011379658
- 11 | 1 | 2 | 938.806689241264
- 12 | 1 | 1 | 1030.80668924126
- 13 | 1 | 75 | 1123.80668924126
- 14 | 1 | 0 | 1139.61807754211
- 51 | 5 | 0 | 0
- 52 | 5 | 43 | 106.552945357247
- 53 | 5 | 42 | 199.552945357247
- 54 | 5 | 41 | 291.552945357247
- 55 | 5 | 40 | 383.552945357247
- 56 | 5 | 44 | 476.552945357247
- 57 | 5 | 46 | 569.381372481993
- 58 | 5 | 45 | 661.381372481993
- 59 | 5 | 48 | 753.381372481993
- 60 | 5 | 51 | 756.381372481993
- 61 | 5 | 101 | 846.381372481993
- 62 | 5 | 50 | 938.617440459493
- 63 | 5 | 52 | 1031.77971811966
- 64 | 5 | 49 | 1124.77971811966
- 65 | 5 | 47 | 1216.77971811966
- 66 | 5 | 0 | 1234.80747449698
- 103 | 9 | 0 | 0
- 104 | 9 | 90 | 110.615528128088
- 105 | 9 | 87 | 205.615528128088
- 106 | 9 | 86 | 296.615528128088
- 107 | 9 | 83 | 392.615528128088
- 108 | 9 | 82 | 485.615528128088
- 109 | 9 | 84 | 581.446480022934
- 110 | 9 | 85 | 674.27490714768
- 111 | 9 | 88 | 767.27490714768
- 112 | 9 | 89 | 860.103334272426
- 113 | 9 | 91 | 953.70888554789
- 114 | 9 | 0 | 976.069565322888
-(42 rows)
-
---q4
-ROLLBACK;
-ROLLBACK
diff --git a/src/vrppdtw/doc/pgr_gsoc_vrppdtw.rst b/src/vrppdtw/doc/pgr_gsoc_vrppdtw.rst
deleted file mode 100644
index a8969d8..0000000
--- a/src/vrppdtw/doc/pgr_gsoc_vrppdtw.rst
+++ /dev/null
@@ -1,133 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_gsocvrppdtw:
-
-pgr_gsoc_vrppdtw - Proposed
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_gsoc_vrppdtw`` — Returns a solution for `Pick and Delivery` with `time windows` Vehicle Routing Problem
-
-.. include:: proposed.rst
- :start-after: begin-warn-expr
- :end-before: end-warn-expr
-
-
-Signature Summary
------------------
-
-
-.. code-block:: none
-
- pgr_gsoc_vrppdtw(sql, vehicle_num, capacity)
- RETURNS SET OF pgr_costResult[]:
-
-Signatures
------------
-
-.. index::
- single: gsoc_vrppdtw(Complete Signature) - proposed
-
-
-Complete signature
-...................
-
-.. code-block:: none
-
- pgr_gsoc_vrppdtw(sql, vehicle_num, capacity)
- Returns set of pgr_costResult[]:
-
-
-.. rubric:: Example: Show the id1
-
-.. literalinclude:: ../doc/doc-gsoc_vrppdtw.queries
- :start-after: --q1
- :end-before: --q2
-
-
-Description of the Signatures
--------------------------------
-
-Description of the sql query
-.........................................................................................
-
-================ =================== =================================================
-Column Type Description
-================ =================== =================================================
-**id** ``ANY-INTEGER`` Identifier of the customer.
-
- - A value of ``0`` identifies the starting location
-
-**x** ``ANY-NUMERICAL`` ``X`` coordinate of the location.
-**y** ``ANY-NUMERICAL`` ``Y`` coordinate of the location.
-**demand** ``ANY-NUMERICAL`` How much is added / removed from the vehicle.
-
- - Negative value is a delivery,
- - Positive value is a pickup,
-
-**openTime** ``ANY-NUMERICAL`` The time relative to 0, when the customer opens.
-**closeTime** ``ANY-NUMERICAL`` The time relative to 0, when the customer closes.
-**serviceTime** ``ANY-NUMERICAL`` The duration of the loading / unloading.
-**pIndex** ``ANY-INTEGER`` Value used when the current customer is a Delivery to find the corresponding Pickup
-**dIndex** ``ANY-INTEGER`` Value used when the current customer is a Pickup to find the corresponding Delivery
-================ =================== =================================================
-
-Description of the parameters of the signatures
-.........................................................................................
-
-================== =========== =================================================
-Column Type Description
-================== =========== =================================================
-**sql** ``TEXT`` SQL query as described above.
-**vehicle_num** ``INTEGER`` Maximum number of vehicles in the result. (currently is ignored)
-**capacity** ``INTEGER`` Capacity of the vehicle.
-================== =========== =================================================
-
-Description of the result
-.........................................................................................
-
-RETURNS SET OF pgr_costResult[]:
-
-================== =========== =================================================
-Column Type Description
-================== =========== =================================================
-**seq** ``INTEGER`` Sequential value starting from **1**.
-**id1** ``INTEGER`` Current vehicle identifier.
-**id2** ``INTEGER`` Customer identifier.
-**cost** ``FLOAT`` Previous ``cost`` plus `travel time` plus `wait time` plus `service time`.
- - when ``id2 = 0`` for the second time for the same ``id1``, then has the total time for the current ``id1``
-================== =========== =================================================
-
-
-
-Examples
--------------------------------------------------------------------------------
-
-.. rubric:: Example: Total number of rows returned
-
-.. literalinclude:: ../doc/doc-gsoc_vrppdtw.queries
- :start-after: --q2
- :end-before: --q3
-
-.. rubric:: Example: Results for only id1 values: 1, 5, and 9
-
-.. literalinclude:: ../doc/doc-gsoc_vrppdtw.queries
- :start-after: --q3
- :end-before: --q4
-
-
-See Also
--------------------------------------------------------------------------------
-
-* The examples use :ref:`pickDeliverData`
-* http://en.wikipedia.org/wiki/Vehicle_routing_problem
diff --git a/src/vrppdtw/sql/CMakeLists.txt b/src/vrppdtw/sql/CMakeLists.txt
deleted file mode 100644
index f0746f5..0000000
--- a/src/vrppdtw/sql/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/gsoc_vrppdtw.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/vrppdtw/sql/gsoc_vrppdtw.sql b/src/vrppdtw/sql/gsoc_vrppdtw.sql
deleted file mode 100644
index 43d12b1..0000000
--- a/src/vrppdtw/sql/gsoc_vrppdtw.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
- sql text,
- vehicle_num INTEGER,
- capacity INTEGER
-)
-RETURNS SETOF pgr_costresult AS
-$BODY$
-DECLARE
-has_reverse BOOLEAN;
-customers_sql TEXT;
-BEGIN
- RETURN query
- SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
- FROM _pgr_pickDeliver($1, $2, $3, 1, 30) AS a WHERE vehicle_id != -1;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
diff --git a/src/vrppdtw/test/doc-gsoc_vrppdtw.result b/src/vrppdtw/test/doc-gsoc_vrppdtw.result
index dfed1c0..eed8a37 100644
--- a/src/vrppdtw/test/doc-gsoc_vrppdtw.result
+++ b/src/vrppdtw/test/doc-gsoc_vrppdtw.result
@@ -1,57 +1,79 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
+SELECT DISTINCT(id1) FROM pgr_gsoc_vrppdtw(
+ 'SELECT * FROM customer ORDER BY id', 25, 200)
+ORDER BY id1;
+ id1
+-----
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+(10 rows)
+
--q2
-126
+SELECT count(*) FROM pgr_gsoc_vrppdtw(
+ 'SELECT * FROM customer ORDER BY id', 25, 200);
+ count
+-------
+ 126
+(1 row)
+
--q3
-1|1|0|0
-2|1|5|105.132745950422
-3|1|3|196.132745950422
-4|1|7|288.132745950422
-5|1|8|380.961173075168
-6|1|10|474.566724350632
-7|1|11|567.566724350632
-8|1|9|660.7290020108
-9|1|6|752.9650699883
-10|1|4|845.2011379658
-11|1|2|938.806689241264
-12|1|1|1030.80668924126
-13|1|75|1123.80668924126
-14|1|0|1139.61807754211
-51|5|0|0
-52|5|43|106.552945357247
-53|5|42|199.552945357247
-54|5|41|291.552945357247
-55|5|40|383.552945357247
-56|5|44|476.552945357247
-57|5|46|569.381372481993
-58|5|45|661.381372481993
-59|5|48|753.381372481993
-60|5|51|756.381372481993
-61|5|101|846.381372481993
-62|5|50|938.617440459493
-63|5|52|1031.77971811966
-64|5|49|1124.77971811966
-65|5|47|1216.77971811966
-66|5|0|1234.80747449698
-103|9|0|0
-104|9|90|110.615528128088
-105|9|87|205.615528128088
-106|9|86|296.615528128088
-107|9|83|392.615528128088
-108|9|82|485.615528128088
-109|9|84|581.446480022934
-110|9|85|674.27490714768
-111|9|88|767.27490714768
-112|9|89|860.103334272426
-113|9|91|953.70888554789
-114|9|0|976.069565322888
+SELECT * FROM pgr_gsoc_vrppdtw(
+ 'SELECT * FROM customer ORDER BY id', 25, 200)
+ WHERE id1 in (1, 5, 9);
+ seq | id1 | id2 | cost
+-----+-----+-----+------------------
+ 1 | 1 | 0 | 0
+ 2 | 1 | 13 | 120.805843601499
+ 3 | 1 | 17 | 214.805843601499
+ 4 | 1 | 18 | 307.805843601499
+ 5 | 1 | 19 | 402.805843601499
+ 6 | 1 | 15 | 497.805843601499
+ 7 | 1 | 16 | 592.805843601499
+ 8 | 1 | 14 | 684.805843601499
+ 9 | 1 | 12 | 777.805843601499
+ 10 | 1 | 50 | 920.815276724293
+ 11 | 1 | 52 | 1013.97755438446
+ 12 | 1 | 49 | 1106.97755438446
+ 13 | 1 | 47 | 1198.97755438446
+ 14 | 1 | 0 | 1217.00531076178
+ 57 | 5 | 0 | 0
+ 58 | 5 | 90 | 110.615528128088
+ 59 | 5 | 87 | 205.615528128088
+ 60 | 5 | 86 | 296.615528128088
+ 61 | 5 | 83 | 392.615528128088
+ 62 | 5 | 82 | 485.615528128088
+ 63 | 5 | 84 | 581.446480022934
+ 64 | 5 | 85 | 674.27490714768
+ 65 | 5 | 88 | 767.27490714768
+ 66 | 5 | 89 | 860.103334272426
+ 67 | 5 | 91 | 953.70888554789
+ 68 | 5 | 0 | 976.069565322888
+ 105 | 9 | 0 | 0
+ 106 | 9 | 67 | 102.206555615734
+ 107 | 9 | 65 | 193.206555615734
+ 108 | 9 | 63 | 285.206555615734
+ 109 | 9 | 62 | 380.206555615734
+ 110 | 9 | 74 | 473.206555615734
+ 111 | 9 | 72 | 568.206555615734
+ 112 | 9 | 61 | 661.206555615734
+ 113 | 9 | 64 | 663.206555615734
+ 114 | 9 | 102 | 753.206555615734
+ 115 | 9 | 68 | 846.206555615734
+ 116 | 9 | 0 | 866.822083743822
+(38 rows)
+
--q4
+ROLLBACK;
+ROLLBACK
diff --git a/src/vrppdtw/test/jet_customers.result b/src/vrppdtw/test/jet_customers.result
deleted file mode 100644
index cd684ff..0000000
--- a/src/vrppdtw/test/jet_customers.result
+++ /dev/null
@@ -1,96 +0,0 @@
-1|1|0|TEB|0|0.00
-2|1|5|BOS|4|1.26
-3|1|62|BOS|-1|2.01
-4|1|53|MVY|1|2.95
-5|1|61|ABE|1|4.38
-6|1|54|MIA|-1|8.01
-7|1|6|MIA|-4|8.76
-8|1|0|TEB|0|11.75
-9|2|0|TEB|0|0.00
-10|2|71|ABE|1|0.95
-11|2|35|MIA|2|4.58
-12|2|33|MIA|2|5.33
-13|2|72|ABE|-1|8.96
-14|2|36|ABE|-2|9.71
-15|2|34|MVY|-2|11.14
-16|2|0|TEB|0|11.63
-17|3|0|TEB|0|0.00
-18|3|45|TEB|5|0.76
-19|3|8|TEB|-4|1.51
-20|3|1|BOS|4|2.77
-21|3|2|BOS|-4|3.52
-22|3|7|BOS|4|4.27
-23|3|46|MVY|-5|5.21
-24|3|0|TEB|0|5.69
-25|4|0|TEB|0|0.00
-26|4|17|BGR|4|1.78
-27|4|64|BGR|-1|2.53
-28|4|63|ABE|1|4.47
-29|4|18|MIA|-4|8.10
-30|4|0|TEB|0|11.09
-31|5|0|TEB|0|0.00
-32|5|27|MIA|2|3.73
-33|5|25|MIA|2|4.48
-34|5|26|BOS|-2|8.66
-35|5|28|BGR|-2|9.96
-36|5|0|TEB|0|10.99
-37|6|0|TEB|0|0.00
-38|6|65|ABE|1|0.95
-39|6|31|MIA|2|4.58
-40|6|29|MIA|2|5.33
-41|6|66|MIA|-1|6.08
-42|6|30|MIA|-2|6.83
-43|6|32|TEB|-2|10.56
-44|6|0|TEB|0|10.56
-45|7|0|TEB|0|0.00
-46|7|49|MVY|1|1.24
-47|7|51|MVY|1|1.99
-48|7|59|MVY|1|2.74
-49|7|55|MVY|1|3.49
-50|7|10|MVY|-4|4.24
-51|7|9|BOS|4|5.18
-52|7|50|BOS|-1|5.93
-53|7|52|BGR|-1|7.22
-54|7|60|ABE|-1|9.16
-55|7|56|TEB|-1|10.11
-56|7|0|TEB|0|10.11
-57|8|0|TEB|0|0.00
-58|8|47|TEB|5|0.76
-59|8|68|TEB|-1|1.51
-60|8|67|ABE|1|2.45
-61|8|48|ABE|-5|3.20
-62|8|69|ABE|1|3.95
-63|8|57|MVY|1|5.39
-64|8|70|MVY|-1|6.14
-65|8|58|MVY|-1|6.89
-66|8|0|TEB|0|7.37
-67|9|0|TEB|0|0.00
-68|9|37|TEB|5|0.76
-69|9|12|ABE|-4|1.70
-70|9|11|BOS|4|3.15
-71|9|38|BOS|-5|3.90
-72|9|23|BGR|4|5.19
-73|9|24|ABE|-4|7.13
-74|9|0|TEB|0|7.33
-75|10|0|TEB|0|0.00
-76|10|39|TEB|5|0.76
-77|10|22|MVY|-4|1.99
-78|10|21|BGR|4|3.43
-79|10|40|BGR|-5|4.18
-80|10|19|BGR|4|4.93
-81|10|20|TEB|-4|6.71
-82|10|0|TEB|0|6.71
-83|11|0|TEB|0|0.00
-84|11|3|BOS|4|1.26
-85|11|14|BOS|-4|2.01
-86|11|15|BGR|4|3.31
-87|11|16|BGR|-4|4.06
-88|11|13|BGR|4|4.81
-89|11|4|BGR|-4|5.56
-90|11|0|TEB|0|6.59
-91|12|0|TEB|0|0.00
-92|12|43|TEB|5|0.76
-93|12|44|TEB|-5|1.51
-94|12|41|TEB|5|2.26
-95|12|42|MIA|-5|5.99
-96|12|0|TEB|0|8.97
diff --git a/src/vrppdtw/test/jet_customers.test.sql b/src/vrppdtw/test/jet_customers.test.sql
deleted file mode 100644
index 7729204..0000000
--- a/src/vrppdtw/test/jet_customers.test.sql
+++ /dev/null
@@ -1,128 +0,0 @@
---
--- PostgreSQL database dump
---
-
--- Dumped from database version 9.6.2
--- Dumped by pg_dump version 9.6.1
-
--- Started on 2017-03-12 13:34:07
-
-
-
---
--- TOC entry 318 (class 1259 OID 15659206)
--- Name: jet_customers; Type: TABLE; Schema: public; Owner: postgres
---
-
-CREATE TABLE jet_customers (
- airport character varying,
- id integer,
- x double precision,
- y double precision,
- pindex integer,
- dindex integer,
- demand integer,
- opentime double precision,
- closetime double precision,
- servicetime double precision
-);
-
---
--- TOC entry 4308 (class 0 OID 15659206)
--- Dependencies: 318
--- Data for Name: jet_customers; Type: TABLE DATA; Schema: public; Owner: postgres
---
-
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 1, 2320738.4688434978, 126348.38967116659, 0, 2, 4, 3448, 2853448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 3, 2320738.4688434978, 126348.38967116659, 0, 4, 4, 3448, 2853448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 5, 2320738.4688434978, 126348.38967116659, 0, 6, 4, 3448, 2853448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 7, 2320738.4688434978, 126348.38967116659, 0, 8, 4, 3448, 2853448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 9, 2320738.4688434978, 126348.38967116659, 0, 10, 4, 3448, 2853448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 11, 2320738.4688434978, 126348.38967116659, 0, 12, 4, 3448, 2853448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 13, 2383186.1525343237, 448251.25888828852, 0, 14, 4, 3463, 2853463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 15, 2383186.1525343237, 448251.25888828852, 0, 16, 4, 3463, 2853463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 17, 2383186.1525343237, 448251.25888828852, 0, 18, 4, 3463, 2853463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 19, 2383186.1525343237, 448251.25888828852, 0, 20, 4, 3463, 2853463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 21, 2383186.1525343237, 448251.25888828852, 0, 22, 4, 3463, 2853463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 23, 2383186.1525343237, 448251.25888828852, 0, 24, 4, 3463, 2853463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 25, 1981144.5525029898, -1903041.2384292425, 0, 26, 2, 3576, 2853576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 27, 1981144.5525029898, -1903041.2384292425, 0, 28, 2, 3576, 2853576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 29, 1981144.5525029898, -1903041.2384292425, 0, 30, 2, 3576, 2853576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 31, 1981144.5525029898, -1903041.2384292425, 0, 32, 2, 3576, 2853576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 33, 1981144.5525029898, -1903041.2384292425, 0, 34, 2, 3576, 2853576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 35, 1981144.5525029898, -1903041.2384292425, 0, 36, 2, 3576, 2853576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 37, 2138409.5568088419, -119451.50568778868, 0, 38, 5, 3624, 2853624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 39, 2138409.5568088419, -119451.50568778868, 0, 40, 5, 3624, 2853624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 41, 2138409.5568088419, -119451.50568778868, 0, 42, 5, 3624, 2853624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 43, 2138409.5568088419, -119451.50568778868, 0, 44, 5, 3624, 2853624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 45, 2138409.5568088419, -119451.50568778868, 0, 46, 5, 3624, 2853624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 47, 2138409.5568088419, -119451.50568778868, 0, 48, 5, 3624, 2853624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 49, 2387491.1007072991, 34459.351848672632, 0, 50, 1, 4265, 2854265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 51, 2387491.1007072991, 34459.351848672632, 0, 52, 1, 4265, 2854265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 53, 2387491.1007072991, 34459.351848672632, 0, 54, 1, 4265, 2854265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 55, 2387491.1007072991, 34459.351848672632, 0, 56, 1, 4265, 2854265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 57, 2387491.1007072991, 34459.351848672632, 0, 58, 1, 4265, 2854265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 59, 2387491.1007072991, 34459.351848672632, 0, 60, 1, 4265, 2854265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 61, 2035310.7411768832, -176076.78362264115, 0, 62, 1, 4355, 2854355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 63, 2035310.7411768832, -176076.78362264115, 0, 64, 1, 4355, 2854355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 65, 2035310.7411768832, -176076.78362264115, 0, 66, 1, 4355, 2854355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 67, 2035310.7411768832, -176076.78362264115, 0, 68, 1, 4355, 2854355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 69, 2035310.7411768832, -176076.78362264115, 0, 70, 1, 4355, 2854355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 71, 2035310.7411768832, -176076.78362264115, 0, 72, 1, 4355, 2854355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 2, 2320738.4688434978, 126348.38967116659, 1, 0, -4, 3448, 6903448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 4, 2383186.1525343237, 448251.25888828852, 3, 0, -4, 3448, 6903448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 6, 1981144.5525029898, -1903041.2384292425, 5, 0, -4, 3448, 6903448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 8, 2138409.5568088419, -119451.50568778868, 7, 0, -4, 3448, 6903448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 10, 2387491.1007072991, 34459.351848672632, 9, 0, -4, 3448, 6903448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 12, 2035310.7411768832, -176076.78362264115, 11, 0, -4, 3448, 6903448, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 14, 2320738.4688434978, 126348.38967116659, 13, 0, -4, 3463, 6903463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 16, 2383186.1525343237, 448251.25888828852, 15, 0, -4, 3463, 6903463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 18, 1981144.5525029898, -1903041.2384292425, 17, 0, -4, 3463, 6903463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 20, 2138409.5568088419, -119451.50568778868, 19, 0, -4, 3463, 6903463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 22, 2387491.1007072991, 34459.351848672632, 21, 0, -4, 3463, 6903463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 24, 2035310.7411768832, -176076.78362264115, 23, 0, -4, 3463, 6903463, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 26, 2320738.4688434978, 126348.38967116659, 25, 0, -2, 3576, 6903576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 28, 2383186.1525343237, 448251.25888828852, 27, 0, -2, 3576, 6903576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 30, 1981144.5525029898, -1903041.2384292425, 29, 0, -2, 3576, 6903576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 32, 2138409.5568088419, -119451.50568778868, 31, 0, -2, 3576, 6903576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 34, 2387491.1007072991, 34459.351848672632, 33, 0, -2, 3576, 6903576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 36, 2035310.7411768832, -176076.78362264115, 35, 0, -2, 3576, 6903576, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 38, 2320738.4688434978, 126348.38967116659, 37, 0, -5, 3624, 6903624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 40, 2383186.1525343237, 448251.25888828852, 39, 0, -5, 3624, 6903624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 42, 1981144.5525029898, -1903041.2384292425, 41, 0, -5, 3624, 6903624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 44, 2138409.5568088419, -119451.50568778868, 43, 0, -5, 3624, 6903624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 46, 2387491.1007072991, 34459.351848672632, 45, 0, -5, 3624, 6903624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 48, 2035310.7411768832, -176076.78362264115, 47, 0, -5, 3624, 6903624, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 50, 2320738.4688434978, 126348.38967116659, 49, 0, -1, 4265, 6904265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 52, 2383186.1525343237, 448251.25888828852, 51, 0, -1, 4265, 6904265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 54, 1981144.5525029898, -1903041.2384292425, 53, 0, -1, 4265, 6904265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 56, 2138409.5568088419, -119451.50568778868, 55, 0, -1, 4265, 6904265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 58, 2387491.1007072991, 34459.351848672632, 57, 0, -1, 4265, 6904265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 60, 2035310.7411768832, -176076.78362264115, 59, 0, -1, 4265, 6904265, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BOS', 62, 2320738.4688434978, 126348.38967116659, 61, 0, -1, 4355, 6904355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('BGR', 64, 2383186.1525343237, 448251.25888828852, 63, 0, -1, 4355, 6904355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MIA', 66, 1981144.5525029898, -1903041.2384292425, 65, 0, -1, 4355, 6904355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 68, 2138409.5568088419, -119451.50568778868, 67, 0, -1, 4355, 6904355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('MVY', 70, 2387491.1007072991, 34459.351848672632, 69, 0, -1, 4355, 6904355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('ABE', 72, 2035310.7411768832, -176076.78362264115, 71, 0, -1, 4355, 6904355, 450000);
-INSERT INTO jet_customers (airport, id, x, y, pindex, dindex, demand, opentime, closetime, servicetime) VALUES ('TEB', 0, 2138409.5568088419, -119451.50568778868, 0, 0, 0, 0, 7200000, 0);
-
-SELECT
-n.seq, n.id1 AS jet, n.id2 AS cust, pd.airport, pd.demand AS pas,
-(n.cost/1000/600)::numeric(10,2) AS c_hrs
-FROM
-pgr_gsoc_vrppdtw(
- $$
- SELECT
- id, x, y, demand,
- opentime, closetime, servicetime,
- pindex, dindex
- FROM jet_customers
- ORDER BY id
- $$,
- 2,
- 5
-) AS n LEFT JOIN
-jet_customers AS pd ON n.id2 = pd.id
-ORDER BY n.seq;
-
diff --git a/src/vrppdtw/test/pdp-any-02.result b/src/vrppdtw/test/pdp-any-02.result
deleted file mode 100644
index c424b03..0000000
--- a/src/vrppdtw/test/pdp-any-02.result
+++ /dev/null
@@ -1,126 +0,0 @@
-1|1|0|0
-2|1|5|105.132745950422
-3|1|3|196.132745950422
-4|1|7|288.132745950422
-5|1|8|380.961173075168
-6|1|10|474.566724350632
-7|1|11|567.566724350632
-8|1|9|660.7290020108
-9|1|6|752.9650699883
-10|1|4|845.2011379658
-11|1|2|938.806689241264
-12|1|1|1030.80668924126
-13|1|75|1123.80668924126
-14|1|0|1139.61807754211
-15|2|0|0
-16|2|13|120.805843601499
-17|2|17|214.805843601499
-18|2|18|307.805843601499
-19|2|19|402.805843601499
-20|2|15|497.805843601499
-21|2|16|592.805843601499
-22|2|14|684.805843601499
-23|2|12|777.805843601499
-24|2|0|815.884709130818
-25|3|0|0
-26|3|20|100
-27|3|24|195
-28|3|25|287
-29|3|27|379
-30|3|29|472.605551275464
-31|3|30|567.605551275464
-32|3|28|660.605551275464
-33|3|26|752.605551275464
-34|3|23|755.605551275464
-35|3|103|845.605551275464
-36|3|22|938.605551275464
-37|3|21|1030.60555127546
-38|3|0|1040.80359030265
-39|4|0|0
-40|4|32|121.622776601684
-41|4|33|213.622776601684
-42|4|31|309.007941408818
-43|4|35|404.007941408818
-44|4|37|499.838893303664
-45|4|38|591.838893303664
-46|4|39|686.838893303664
-47|4|36|691.838893303664
-48|4|105|781.838893303664
-49|4|34|874.838893303664
-50|4|0|907.227162785067
-51|5|0|0
-52|5|43|106.552945357247
-53|5|42|199.552945357247
-54|5|41|291.552945357247
-55|5|40|383.552945357247
-56|5|44|476.552945357247
-57|5|46|569.381372481993
-58|5|45|661.381372481993
-59|5|48|753.381372481993
-60|5|51|756.381372481993
-61|5|101|846.381372481993
-62|5|50|938.617440459493
-63|5|52|1031.77971811966
-64|5|49|1124.77971811966
-65|5|47|1216.77971811966
-66|5|0|1234.80747449698
-67|6|0|0
-68|6|57|125
-69|6|55|217
-70|6|54|312
-71|6|53|407.385164807135
-72|6|56|501.385164807135
-73|6|58|593.385164807135
-74|6|60|686.385164807135
-75|6|59|786.825471316045
-76|6|0|821.882567601961
-77|7|0|0
-78|7|67|102.206555615734
-79|7|65|193.206555615734
-80|7|63|285.206555615734
-81|7|62|380.206555615734
-82|7|74|473.206555615734
-83|7|72|568.206555615734
-84|7|61|661.206555615734
-85|7|64|663.206555615734
-86|7|102|753.206555615734
-87|7|68|846.206555615734
-88|7|66|941.591720422868
-89|7|69|1033.59172042287
-90|7|0|1049.40310872371
-91|8|0|0
-92|8|81|137.434164902526
-93|8|78|140.434164902526
-94|8|104|230.434164902526
-95|8|76|322.434164902526
-96|8|71|417.434164902526
-97|8|70|512.434164902526
-98|8|73|605.434164902526
-99|8|77|699.434164902526
-100|8|79|790.434164902526
-101|8|80|885.81932970966
-102|8|0|937.297480414595
-103|9|0|0
-104|9|90|110.615528128088
-105|9|87|205.615528128088
-106|9|86|296.615528128088
-107|9|83|392.615528128088
-108|9|82|485.615528128088
-109|9|84|581.446480022934
-110|9|85|674.27490714768
-111|9|88|767.27490714768
-112|9|89|860.103334272426
-113|9|91|953.70888554789
-114|9|0|976.069565322888
-115|10|0|0
-116|10|98|120.805843601499
-117|10|96|216.191008408633
-118|10|95|308.191008408633
-119|10|94|401.796559684097
-120|10|92|495.402110959561
-121|10|93|587.402110959561
-122|10|97|592.402110959561
-123|10|106|682.402110959561
-124|10|100|777.402110959561
-125|10|99|872.402110959561
-126|10|0|905.943130622058
diff --git a/src/vrppdtw/test/pdp-any-02.test.sql b/src/vrppdtw/test/pdp-any-02.test.sql
deleted file mode 100644
index 88be2da..0000000
--- a/src/vrppdtw/test/pdp-any-02.test.sql
+++ /dev/null
@@ -1,3 +0,0 @@
-select * from pgr_gsoc_vrppdtw(
- 'select * from customer order by id'::text, 25, 200
-);
diff --git a/src/vrppdtw/test/test.conf b/src/vrppdtw/test/test.conf
index 0df0702..068bb2b 100644
--- a/src/vrppdtw/test/test.conf
+++ b/src/vrppdtw/test/test.conf
@@ -3,25 +3,18 @@
%main::tests = (
'any' => {
'comment' => 'Function test for any versions.',
- 'data' => ['../../pickDeliver/test/pickDeliver.data'],
+ 'data' => ['../../../tools/testers/vrppdtw_data.sql'],
'tests' => [qw(
- jet_customers
+ )],
+ 'windows' => [qw(
+ )],
+ 'linux' => [qw(
doc-gsoc_vrppdtw
- pdp-any-02
)],
'documentation' => [qw(
doc-gsoc_vrppdtw
- )],
-
-#put here the ones that you are not testing (just a place holder)
- 'nottesting' => [qw(
)]
},
-# I don't know what this are for or how to use them.
-# TODO ask Steve
-# 'vpg-vpgis' => {}, # for version specific tests
-# '8-1' => {}, # for pg 8.x and postgis 1.x
-# '9.2-2.1' => {}, # for pg 9.2 and postgis 2.1
);
1;
diff --git a/src/withPoints/doc/doc-pgr_withPointsVia.queries b/src/withPoints/doc/doc-pgr_withPointsVia.queries
deleted file mode 100644
index 7aa342c..0000000
--- a/src/withPoints/doc/doc-pgr_withPointsVia.queries
+++ /dev/null
@@ -1,37 +0,0 @@
-BEGIN;
-BEGIN
---q1
-SELECT * FROM pgr_withPointsVia(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
- 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
- ARRAY[1,3,5]);
-ERROR: array value must start with "{" or dimension information
-LINE 3: 'SELECT pid, edge_id, fraction, side from pointsOfIn...
- ^
---q2
-SELECT * FROM pgr_withPointsDD(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
- 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
- 3, 3.0,
- driving_side := 'r',
- details := true);
-ERROR: current transaction is aborted, commands ignored until end of transaction block
---q3
-SELECT * FROM pgr_withPointsDD(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
- 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
- 3, 3.0,
- driving_side := 'l',
- details := true);
-ERROR: current transaction is aborted, commands ignored until end of transaction block
---q4
-SELECT * FROM pgr_withPointsDD(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
- 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
- 3, 3.0,
- driving_side := 'b',
- details := true);
-ERROR: current transaction is aborted, commands ignored until end of transaction block
---q5
-ROLLBACK;
-ROLLBACK
diff --git a/src/withPoints/doc/doc-withPointsVia.queries b/src/withPoints/doc/doc-withPointsVia.queries
deleted file mode 100644
index 1716ab5..0000000
--- a/src/withPoints/doc/doc-withPointsVia.queries
+++ /dev/null
@@ -1,100 +0,0 @@
--- q0
-SELECT id, source, target FROM edge_table WHERE id IN (4, 5, 14);
- id | source | target
-----+--------+--------
- 4 | 2 | 5
- 5 | 3 | 6
- 14 | 10 | 13
-(3 rows)
-
--- q1
-SELECT * FROM pgr_withPointsVia(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[4, 5, 14], array[0.1, 0.5, 0.85]
-);
- seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
------+---------+----------+-----------+---------+------+------+------+----------+----------------
- 1 | 1 | 1 | -1 | -2 | -1 | 4 | 0.9 | 0 | 0
- 2 | 1 | 2 | -1 | -2 | 5 | 8 | 1 | 0.9 | 0.9
- 3 | 1 | 3 | -1 | -2 | 6 | 9 | 1 | 1.9 | 1.9
- 4 | 1 | 4 | -1 | -2 | 9 | 16 | 1 | 2.9 | 2.9
- 5 | 1 | 5 | -1 | -2 | 4 | 3 | 1 | 3.9 | 3.9
- 6 | 1 | 6 | -1 | -2 | 3 | 5 | 0.5 | 4.9 | 4.9
- 7 | 1 | 7 | -1 | -2 | -2 | -1 | 0 | 5.4 | 5.4
- 8 | 2 | 1 | -2 | -3 | -2 | 5 | 0.5 | 0 | 5.4
- 9 | 2 | 2 | -2 | -3 | 6 | 8 | 1 | 0.5 | 5.9
- 10 | 2 | 3 | -2 | -3 | 5 | 10 | 1 | 1.5 | 6.9
- 11 | 2 | 4 | -2 | -3 | 10 | 14 | 0.85 | 2.5 | 7.9
- 12 | 2 | 5 | -2 | -3 | -3 | -2 | 0 | 3.35 | 8.75
-(12 rows)
-
-SELECT * FROM pgr_withPointsVia(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[4, 5, 14], array[0.1, 0.5, 0.85],
- true
-);
- seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
------+---------+----------+-----------+---------+------+------+------+----------+----------------
- 1 | 1 | 1 | -1 | -2 | -1 | 4 | 0.9 | 0 | 0
- 2 | 1 | 2 | -1 | -2 | 5 | 8 | 1 | 0.9 | 0.9
- 3 | 1 | 3 | -1 | -2 | 6 | 9 | 1 | 1.9 | 1.9
- 4 | 1 | 4 | -1 | -2 | 9 | 16 | 1 | 2.9 | 2.9
- 5 | 1 | 5 | -1 | -2 | 4 | 3 | 1 | 3.9 | 3.9
- 6 | 1 | 6 | -1 | -2 | 3 | 5 | 0.5 | 4.9 | 4.9
- 7 | 1 | 7 | -1 | -2 | -2 | -1 | 0 | 5.4 | 5.4
- 8 | 2 | 1 | -2 | -3 | -2 | 5 | 0.5 | 0 | 5.4
- 9 | 2 | 2 | -2 | -3 | 6 | 8 | 1 | 0.5 | 5.9
- 10 | 2 | 3 | -2 | -3 | 5 | 10 | 1 | 1.5 | 6.9
- 11 | 2 | 4 | -2 | -3 | 10 | 14 | 0.85 | 2.5 | 7.9
- 12 | 2 | 5 | -2 | -3 | -3 | -2 | 0 | 3.35 | 8.75
-(12 rows)
-
--- q2
-SELECT * FROM pgr_withPointsVia(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- array[4, 5, 14], array[0.1, 0.5, 0.85],
- false
-);
- seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
------+---------+----------+-----------+---------+------+------+------+----------+----------------
- 1 | 1 | 1 | -1 | -2 | -1 | 4 | 0.1 | 0 | 0
- 2 | 1 | 2 | -1 | -2 | 2 | 2 | 1 | 0.1 | 0.1
- 3 | 1 | 3 | -1 | -2 | 3 | 5 | 0.5 | 1.1 | 1.1
- 4 | 1 | 4 | -1 | -2 | -2 | -1 | 0 | 1.6 | 1.6
- 5 | 2 | 1 | -2 | -3 | -2 | 5 | 0.5 | 0 | 1.6
- 6 | 2 | 2 | -2 | -3 | 6 | 11 | 1 | 0.5 | 2.1
- 7 | 2 | 3 | -2 | -3 | 11 | 12 | 1 | 1.5 | 3.1
- 8 | 2 | 4 | -2 | -3 | 10 | 14 | 0.15 | 2.5 | 4.1
- 9 | 2 | 5 | -2 | -3 | -3 | -2 | 0 | 2.65 | 4.25
-(9 rows)
-
--- q3
-SELECT * FROM pgr_withPointsVia(
- 'SELECT id, source, target, cost FROM edge_table',
- array[4, 5, 14], array[0.1, 0.5, 0.85],
- true
-);
- seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
------+---------+----------+-----------+---------+------+------+------+----------+----------------
-(0 rows)
-
--- q4
-SELECT * FROM pgr_withPointsVia(
- 'SELECT id, source, target, cost FROM edge_table',
- array[4, 5, 14], array[0.1, 0.5, 0.85],
- false
-);
- seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost | route_agg_cost
------+---------+----------+-----------+---------+------+------+------+----------+----------------
- 1 | 1 | 1 | -1 | -2 | -1 | 4 | 0.9 | 0 | 0
- 2 | 1 | 2 | -1 | -2 | 5 | 8 | 1 | 0.9 | 0.9
- 3 | 1 | 3 | -1 | -2 | 6 | 5 | 0.5 | 1.9 | 1.9
- 4 | 1 | 4 | -1 | -2 | -2 | -1 | 0 | 2.4 | 2.4
- 5 | 2 | 1 | -2 | -3 | -2 | 5 | 0.5 | 0 | 2.4
- 6 | 2 | 2 | -2 | -3 | 6 | 8 | 1 | 0.5 | 2.9
- 7 | 2 | 3 | -2 | -3 | 5 | 10 | 1 | 1.5 | 3.9
- 8 | 2 | 4 | -2 | -3 | 10 | 14 | 0.85 | 2.5 | 4.9
- 9 | 2 | 5 | -2 | -3 | -3 | -2 | 0 | 3.35 | 5.75
-(9 rows)
-
--- q5
diff --git a/src/withPoints/doc/pgr_withPoints.rst b/src/withPoints/doc/pgr_withPoints.rst
deleted file mode 100644
index 86291e5..0000000
--- a/src/withPoints/doc/pgr_withPoints.rst
+++ /dev/null
@@ -1,302 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_withPoints:
-
-pgr_withPoints - Proposed
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_withPoints`` - Returns the shortest path in a graph with additional temporary vertices.
-
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.2.0
-
-Synopsis
--------------------------------------------------------------------------------
-
-Modify the graph to include points defined by points_sql.
-Using Dijkstra algorithm, find the shortest path(s)
-
-Characteristics:
--------------------------------------------------------------------------------
-
-The main Characteristics are:
-
- - Process is done only on edges with positive costs.
- - Vertices of the graph are:
-
- - **positive** when it belongs to the edges_sql
- - **negative** when it belongs to the points_sql
-
- - Values are returned when there is a path.
-
- - When the starting vertex and ending vertex are the same, there is no path.
-
- - The agg_cost the non included values (v, v) is 0
-
- - When the starting vertex and ending vertex are the different and there is no path:
-
- - The agg_cost the non included values (u, v) is ∞
-
- - For optimization purposes, any duplicated value in the start_vids or end_vids are ignored.
- - The returned values are ordered:
-
- - start_vid ascending
- - end_vid ascending
-
- - Running time: :math:`O(|start\_vids|∗(V \log V + E))`
-
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_withPoints(edges_sql, points_sql, start_vid, end_vid)
- pgr_withPoints(edges_sql, points_sql, start_vid, end_vid, directed, driving_side, details)
- pgr_withPoints(edges_sql, points_sql, start_vid, end_vids, directed, driving_side, details)
- pgr_withPoints(edges_sql, points_sql, start_vids, end_vid, directed, driving_side, details)
- pgr_withPoints(edges_sql, points_sql, start_vids, end_vids, directed, driving_side, details)
- RETURNS SET OF (seq, path_seq, [start_vid,] [end_vid,] node, edge, cost, agg_cost)
-
-
-Signatures
--------------------
-
-.. index::
- single: withPoints(Minimal Use) - Proposed
-
-Minimal Use
-.....................................................................
-
-The minimal signature:
- - Is for a **directed** graph.
- - The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction.
- - No **details** are given about distance of other points of points_sql query.
-
-.. code-block:: none
-
- pgr_withPoints(edges_sql, points_sql, start_vid, end_vid)
- RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
-
-
-:Example: From point 1 to point 3
-
-.. literalinclude:: doc-pgr_withPoints.queries
- :start-after: --e1
- :end-before: --e2
-
-.. index::
- single: withPoints(One to One) - Proposed
-
-One to One
-.....................................................................
-
-
-.. code-block:: none
-
- pgr_withPoints(edges_sql, points_sql, start_vid, end_vid,
- directed:=true, driving_side:='b', details:=false)
- RETURNS SET OF (seq, path_seq, node, edge, cost, agg_cost)
-
-
-:Example: From point 1 to vertex 3
-
-.. literalinclude:: doc-pgr_withPoints.queries
- :start-after: --e2
- :end-before: --e3
-
-
-
-.. index::
- single: withPoints(One to Many) - Proposed
-
-One to Many
-.....................................................................
-
-.. code-block:: none
-
- pgr_withPoints(edges_sql, points_sql, start_vid, end_vids,
- directed:=true, driving_side:='b', details:=false)
- RETURNS SET OF (seq, path_seq, end_vid, node, edge, cost, agg_cost)
-
-
-:Example: From point 1 to point 3 and vertex 5
-
-.. literalinclude:: doc-pgr_withPoints.queries
- :start-after: --e3
- :end-before: --e4
-
-
-
-.. index::
- single: withPoints(Many to One) - Proposed
-
-Many to One
-.....................................................................
-
-.. code-block:: none
-
- pgr_withPoints(edges_sql, points_sql, start_vids, end_vid,
- directed:=true, driving_side:='b', details:=false)
- RETURNS SET OF (seq, path_seq, start_vid, node, edge, cost, agg_cost)
-
-
-:Example: From point 1 and vertex 2 to point 3
-
-.. literalinclude:: doc-pgr_withPoints.queries
- :start-after: --e4
- :end-before: --e5
-
-.. index::
- single: withPoints(Many to Many) - Proposed
-
-Many to Many
-.....................................................................
-
-
-.. code-block:: none
-
- pgr_withPoints(edges_sql, points_sql, start_vids, end_vids,
- directed:=true, driving_side:='b', details:=false)
- RETURNS SET OF (seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)
-
-
-:Example: From point 1 and vertex 2 to point 3 and vertex 7
-
-.. literalinclude:: doc-pgr_withPoints.queries
- :start-after: --e5
- :end-before: --q2
-
-
-
-
-Description of the Signatures
----------------------------------
-
-..
- description of the sql queries
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-.. include:: pgRouting-concepts.rst
- :start-after: points_sql_start
- :end-before: points_sql_end
-
-
-Description of the parameters of the signatures
-.....................................................................
-
-
-================ ====================== =================================================
-Parameter Type Description
-================ ====================== =================================================
-**edges_sql** ``TEXT`` Edges SQL query as described above.
-**points_sql** ``TEXT`` Points SQL query as described above.
-**start_vid** ``ANY-INTEGER`` Starting vertex identifier. When negative: is a point's pid.
-**end_vid** ``ANY-INTEGER`` Ending vertex identifier. When negative: is a point's pid.
-**start_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of starting vertices. When negative: is a point's pid.
-**end_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of ending vertices. When negative: is a point's pid.
-**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
-**driving_side** ``CHAR`` (optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:
- - In the right or left or
- - If it doesn't matter with 'b' or NULL.
- - If column not present 'b' is considered.
-
-**details** ``BOOLEAN`` (optional). When ``true`` the results will include the points in points_sql that are in the path.
- Default is ``false`` which ignores other points of the points_sql.
-================ ====================== =================================================
-
-
-Description of the return values
-.....................................................................
-
-Returns set of ``(seq, [path_seq,] [start_vid,] [end_vid,] node, edge, cost, agg_cost)``
-
-============= =========== =================================================
-Column Type Description
-============= =========== =================================================
-**seq** ``INTEGER`` Row sequence.
-**path_seq** ``INTEGER`` Path sequence that indicates the relative position on the path.
-**start_vid** ``BIGINT`` Identifier of the starting vertex. When negative: is a point's pid.
-**end_vid** ``BIGINT`` Identifier of the ending vertex. When negative: is a point's pid.
-**node** ``BIGINT`` Identifier of the node:
- - A positive value indicates the node is a vertex of edges_sql.
- - A negative value indicates the node is a point of points_sql.
-
-**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence.
- - ``-1`` for the last row in the path sequence.
-
-**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the path sequence.
- - ``0`` for the last row in the path sequence.
-
-**agg_cost** ``FLOAT`` Aggregate cost from ``start_pid`` to ``node``.
- - ``0`` for the first row in the path sequence.
-
-============= =========== =================================================
-
-
-
-Examples
---------------------------------------------------------------------------------------
-
-:Example: Which path (if any) passes in front of point 6 or vertex 6 with **right** side driving topology.
-
-.. literalinclude:: doc-pgr_withPoints.queries
- :start-after: --q2
- :end-before: --q3
-
-:Example: Which path (if any) passes in front of point 6 or vertex 6 with **left** side driving topology.
-
-.. literalinclude:: doc-pgr_withPoints.queries
- :start-after: --q3
- :end-before: --q4
-
-:Example: Many to many example with a twist: on undirected graph and showing details.
-
-.. literalinclude:: doc-pgr_withPoints.queries
- :start-after: --q4
- :end-before: --q5
-
-
-The queries use the :ref:`sampledata` network.
-
-
-
-.. rubric:: History
-
-* Proposed in version 2.2
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`withPoints`
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/withPoints/doc/pgr_withPointsCost.rst b/src/withPoints/doc/pgr_withPointsCost.rst
deleted file mode 100644
index 9c15cd4..0000000
--- a/src/withPoints/doc/pgr_withPointsCost.rst
+++ /dev/null
@@ -1,295 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_withPointsCost:
-
-pgr_withPointsCost - Proposed
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_withPointsCost`` - Calculates the shortest path and returns only the aggregate cost of the shortest path(s) found, for the combination of points given.
-
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.2.0
-
-Synopsis
--------------------------------------------------------------------------------
-
-Modify the graph to include points defined by points_sql.
-Using Dijkstra algorithm, return only the aggregate cost of the shortest path(s) found.
-
-Characteristics:
-----------------
-
-The main Characteristics are:
- - It does not return a path.
- - Returns the sum of the costs of the shortest path for pair combination of vertices in the modified graph.
- - Vertices of the graph are:
-
- - **positive** when it belongs to the edges_sql
- - **negative** when it belongs to the points_sql
-
- - Process is done only on edges with positive costs.
- - Values are returned when there is a path.
-
- - The returned values are in the form of a set of `(start_vid, end_vid, agg_cost)`.
-
- - When the starting vertex and ending vertex are the same, there is no path.
-
- - The `agg_cost` in the non included values `(v, v)` is `0`
-
- - When the starting vertex and ending vertex are the different and there is no path.
-
- - The `agg_cost` in the non included values `(u, v)` is :math:`\infty`
-
- - If the values returned are stored in a table, the unique index would be the pair:
- `(start_vid, end_vid)`.
-
- - For undirected graphs, the results are symmetric.
-
- - The `agg_cost` of `(u, v)` is the same as for `(v, u)`.
-
- - For optimization purposes, any duplicated value in the `start_vids` or `end_vids` is ignored.
-
- - The returned values are ordered:
-
- - `start_vid` ascending
- - `end_vid` ascending
-
- - Running time: :math:`O(| start\_vids | * (V \log V + E))`
-
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_withPointsCost(edges_sql, points_sql, start_vid, end_vid, directed, driving_side)
- pgr_withPointsCost(edges_sql, points_sql, start_vid, end_vids, directed, driving_side)
- pgr_withPointsCost(edges_sql, points_sql, start_vids, end_vid, directed, driving_side)
- pgr_withPointsCost(edges_sql, points_sql, start_vids, end_vids, directed, driving_side)
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-.. note:: There is no **details** flag, unlike the other members of the withPoints family of functions.
-
-
-Signatures
-------------
-
-.. index::
- single: withPointsCost(Minimal Use) - proposed
-
-Minimal Use
-.........................................
-
-The minimal signature:
- - Is for a **directed** graph.
- - The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction.
-
-.. code-block:: none
-
- pgr_withPointsCost(edges_sql, points_sql, start_vid, end_vid)
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-
-:Example:
-
-.. literalinclude:: doc-pgr_withPointsCost.queries
- :start-after: --e1
- :end-before: --e2
-
-.. index::
- single: withPointsCost(One To One) - proposed
-
-One to One
-.........................................
-
-
-.. code-block:: none
-
- pgr_withPointsCost(edges_sql, points_sql, start_vid, end_vid,
- directed:=true, driving_side:='b')
- RETURNS SET OF (seq, node, edge, cost, agg_cost)
-
-
-:Example:
-
-.. literalinclude:: doc-pgr_withPointsCost.queries
- :start-after: --e2
- :end-before: --e3
-
-
-.. index::
- single: withPointsCost(One To Many) - proposed
-
-One to Many
-.........................................
-
-
-.. code-block:: none
-
- pgr_withPointsCost(edges_sql, points_sql, start_vid, end_vids,
- directed:=true, driving_side:='b')
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-
-:Example:
-
-.. literalinclude:: doc-pgr_withPointsCost.queries
- :start-after: --e3
- :end-before: --e4
-
-
-.. index::
- single: withPointsCost(Many To One) - proposed
-
-Many to One
-.........................................
-
-.. code-block:: none
-
- pgr_withPointsCost(edges_sql, points_sql, start_vids, end_vid,
- directed:=true, driving_side:='b')
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-
-:Example:
-
-.. literalinclude:: doc-pgr_withPointsCost.queries
- :start-after: --e4
- :end-before: --e5
-
-.. index::
- single: withPointsCost(Many To Many) - proposed
-
-Many to Many
-.........................................
-
-.. code-block:: none
-
- pgr_withPointsCost(edges_sql, points_sql, start_vids, end_vids,
- directed:=true, driving_side:='b')
- RETURNS SET OF (start_vid, end_vid, agg_cost)
-
-
-:Example:
-
-.. literalinclude:: doc-pgr_withPointsCost.queries
- :start-after: --e5
- :end-before: --q2
-
-
-
-
-Description of the Signatures
----------------------------------
-
-..
- description of the sql queries
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-.. include:: pgRouting-concepts.rst
- :start-after: points_sql_start
- :end-before: points_sql_end
-
-
-Description of the parameters of the signatures
-.................................................
-
-
-================ ====================== =================================================
-Parameter Type Description
-================ ====================== =================================================
-**edges_sql** ``TEXT`` Edges SQL query as described above.
-**points_sql** ``TEXT`` Points SQL query as described above.
-**start_vid** ``ANY-INTEGER`` Starting vertex identifier. When negative: is a point's pid.
-**end_vid** ``ANY-INTEGER`` Ending vertex identifier. When negative: is a point's pid.
-**start_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of starting vertices. When negative: is a point's pid.
-**end_vids** ``ARRAY[ANY-INTEGER]`` Array of identifiers of ending vertices. When negative: is a point's pid.
-**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
-**driving_side** ``CHAR`` (optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:
- - In the right or left or
- - If it doesn't matter with 'b' or NULL.
- - If column not present 'b' is considered.
-
-================ ====================== =================================================
-
-
-Description of the return values
-.................................................
-
-Returns set of ``(start_vid, end_vid, agg_cost)``
-
-============= =========== =================================================
-Column Type Description
-============= =========== =================================================
-**start_vid** ``BIGINT`` Identifier of the starting vertex. When negative: is a point's pid.
-**end_vid** ``BIGINT`` Identifier of the ending point. When negative: is a point's pid.
-**agg_cost** ``FLOAT`` Aggregate cost from ``start_vid`` to ``end_vid``.
-============= =========== =================================================
-
-
-
-Examples
---------------------------------------------------------------------------------------
-
-:Example: With **right** side driving topology.
-
-.. literalinclude:: doc-pgr_withPointsCost.queries
- :start-after: --q2
- :end-before: --q3
-
-:Example: With **left** side driving topology.
-
-.. literalinclude:: doc-pgr_withPointsCost.queries
- :start-after: --q3
- :end-before: --q4
-
-:Example: Does not matter driving side.
-
-.. literalinclude:: doc-pgr_withPointsCost.queries
- :start-after: --q4
- :end-before: --q5
-
-
-The queries use the :ref:`sampledata` network.
-
-
-
-.. rubric:: History
-
-* Proposed in version 2.2
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`withPoints`
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/withPoints/doc/pgr_withPointsDD.rst b/src/withPoints/doc/pgr_withPointsDD.rst
deleted file mode 100644
index 62bac3d..0000000
--- a/src/withPoints/doc/pgr_withPointsDD.rst
+++ /dev/null
@@ -1,219 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_withPointsDD:
-
-pgr_withPointsDD - Proposed
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_withPointsDD`` - Returns the driving distance from a starting point.
-
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.2.0
-
-Synopsis
--------------------------------------------------------------------------------
-
-Modify the graph to include points and
-using Dijkstra algorithm, extracts all the nodes and points that have costs less
-than or equal to the value ``distance`` from the starting point.
-The edges extracted will conform the corresponding spanning tree.
-
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_withPointsDD(edges_sql, points_sql, start_vid, distance)
- pgr_withPointsDD(edges_sql, points_sql, start_vid, distance, directed, driving_side, details)
- pgr_withPointsDD(edges_sql, points_sql, start_vids, distance, directed, driving_side, details, equicost)
- RETURNS SET OF (seq, node, edge, cost, agg_cost)
-
-Signatures
-------------
-
-.. index::
- single: withPointsDD(Minimal Use) - proposed
-
-Minimal Use
-..................................
-
-The minimal signature:
- - Is for a **directed** graph.
- - The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction.
- - No **details** are given about distance of other points of the query.
-
-.. code-block:: none
-
- pgr_withPointsDD(edges_sql, points_sql, start_vid, distance)
- directed:=true, driving_side:='b', details:=false)
- RETURNS SET OF (seq, node, edge, cost, agg_cost)
-
-
-:Example:
-
-.. literalinclude:: doc-pgr_withPointsDD.queries
- :start-after: --q1
- :end-before: --q2
-
-.. index::
- single: withPointsDD(Single Start Vertex) - proposed
-
-Driving distance from a single point
-..............................................
-
-Finds the driving distance depending on the optional parameters setup.
-
-.. code-block:: none
-
- pgr_withPointsDD(edges_sql, points_sql, start_vids, distance,
- directed:=true, driving_side:='b', details:=false)
- RETURNS SET OF (seq, node, edge, cost, agg_cost)
-
-:Example: Right side driving topology
-
-.. literalinclude:: doc-pgr_withPointsDD.queries
- :start-after: --q2
- :end-before: --q3
-
-.. index::
- single: withPointsDD(Multiple Starting Vertices) - proposed
-
-Driving distance from many starting points
-..................................................
-
-Finds the driving distance depending on the optional parameters setup.
-
-.. code-block:: none
-
- pgr_withPointsDD(edges_sql, points_sql, start_vids, distance,
- directed:=true, driving_side:='b', details:=false, equicost:=false)
- RETURNS SET OF (seq, node, edge, cost, agg_cost)
-
-
-
-
-Description of the Signatures
-----------------------------------
-
-..
- description of the sql queries
-
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-.. include:: pgRouting-concepts.rst
- :start-after: points_sql_start
- :end-before: points_sql_end
-
-
-Description of the parameters of the signatures
-........................................................
-
-
-================ ================= =================================================
-Parameter Type Description
-================ ================= =================================================
-**edges_sql** ``TEXT`` Edges SQL query as described above.
-**points_sql** ``TEXT`` Points SQL query as described above.
-**start_vid** ``ANY-INTEGER`` Starting point id
-**distance** ``ANY-NUMERICAL`` Distance from the start_pid
-**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
-**driving_side** ``CHAR`` (optional). Value in ['b', 'r', 'l', NULL] indicating if the driving side is:
- - In the right or left or
- - If it doesn't matter with 'b' or NULL.
- - If column not present 'b' is considered.
-
-**details** ``BOOLEAN`` (optional). When ``true`` the results will include the driving distance to the points with in the ``distance``.
- Default is ``false`` which ignores other points of the points_sql.
-**equicost** ``BOOLEAN`` (optional). When ``true`` the nodes will only appear in the closest start_v list. Default is ``false`` which resembles several calls using the single starting point signatures. Tie brakes are arbitrary.
-================ ================= =================================================
-
-
-Description of the return values
-........................................................
-
-Returns set of ``(seq, node, edge, cost, agg_cost)``
-
-============ =========== =================================================
-Column Type Description
-============ =========== =================================================
-**seq** ``INT`` row sequence.
-**node** ``BIGINT`` Identifier of the node within the Distance from ``start_pid``. If ``details =: true`` a negative value is the identifier of a point.
-**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence.
- - ``-1`` when ``start_vid`` = ``node``.
-
-**cost** ``FLOAT`` Cost to traverse ``edge``.
- - ``0`` when ``start_vid`` = ``node``.
-
-**agg_cost** ``FLOAT`` Aggregate cost from ``start_vid`` to ``node``.
- - ``0`` when ``start_vid`` = ``node``.
-
-============ =========== =================================================
-
-
-
-Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
---------------------------------------------------------------------------------------
-
-The examples in this section use the following :ref:`fig1`
-
-:Example: Left side driving topology
-
-.. literalinclude:: doc-pgr_withPointsDD.queries
- :start-after: --q3
- :end-before: --q4
-
-:Example: Does not matter driving side.
-
-.. literalinclude:: doc-pgr_withPointsDD.queries
- :start-after: --q4
- :end-before: --q5
-
-
-
-
-The queries use the :ref:`sampledata` network.
-
-
-
-.. rubric:: History
-
-* Proposed in version 2.2
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`pgr_drivingDistance` - Driving distance using dijkstra.
-* :ref:`pgr_alphashape` - Alpha shape computation.
-* :ref:`pgr_points_as_polygon` - Polygon around set of points.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/withPoints/doc/pgr_withPointsKSP.rst b/src/withPoints/doc/pgr_withPointsKSP.rst
deleted file mode 100644
index eeb0a82..0000000
--- a/src/withPoints/doc/pgr_withPointsKSP.rst
+++ /dev/null
@@ -1,194 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_withPointsKSP:
-
-pgr_withPointsKSP - Proposed
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_withPointsKSP`` - Find the K shortest paths using Yen's algorithm.
-
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability: 2.2.0
-
-Synopsis
--------------------------------------------------------------------------------
-
-Modifies the graph to include the points defined in the ``points_sql`` and
-using Yen algorithm, finds the K shortest paths.
-
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- pgr_withPointsKSP(edges_sql, points_sql, start_pid, end_pid, K)
- pgr_withPointsKSP(edges_sql, points_sql, start_pid, end_pid, K, directed, heap_paths, driving_side, details)
- RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost)
-
-Signatures
------------
-
-.. index::
- single: withPointsKSP(Minimal Signature) - Proposed
-
-Minimal Usage
-....................................
-
-The minimal usage:
- - Is for a **directed** graph.
- - The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction.
- - No **details** are given about distance of other points of the query.
- - No **heap paths** are returned.
-
-.. code-block:: none
-
- pgr_withPointsKSP(edges_sql, points_sql, start_pid, end_pid, K)
- RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost)
-
-
-:Example:
-
-.. literalinclude:: doc-pgr_withPointsKSP.queries
- :start-after: --q1
- :end-before: --q2
-
-.. index::
- single: withPointsKSP(Complete Signature) - Proposed
-
-Complete Signature
-....................................
-
-Finds the K shortest paths depending on the optional parameters setup.
-
-.. code-block:: none
-
- pgr_withPointsKSP(edges_sql, points_sql, start_pid, end_pid, K,
- directed:=true, heap_paths:=false, driving_side:='b', details:=false)
- RETURNS SET OF (seq, path_id, path_seq, node, edge, cost, agg_cost)
-
-
-:Example: With details.
-
-.. literalinclude:: doc-pgr_withPointsKSP.queries
- :start-after: --q2
- :end-before: --q3
-
-Description of the Signatures
--------------------------------
-
-
-..
- description of the sql queries
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-.. include:: pgRouting-concepts.rst
- :start-after: points_sql_start
- :end-before: points_sql_end
-
-
-
-Description of the parameters of the signatures
-..............................................................
-
-
-================ ================= =================================================
-Parameter Type Description
-================ ================= =================================================
-**edges_sql** ``TEXT`` Edges SQL query as described above.
-**points_sql** ``TEXT`` Points SQL query as described above.
-**start_pid** ``ANY-INTEGER`` Starting point id.
-**end_pid** ``ANY-INTEGER`` Ending point id.
-**K** ``INTEGER`` Number of shortest paths.
-**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
-**heap_paths** ``BOOLEAN`` (optional). When ``true`` the paths calculated to get the shortests paths will be returned also. Default is ``false`` only the K shortest paths are returned.
-**driving_side** ``CHAR`` (optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:
- - In the right or left or
- - If it doesn't matter with 'b' or NULL.
- - If column not present 'b' is considered.
-
-**details** ``BOOLEAN`` (optional). When ``true`` the results will include the driving distance to the points with in the ``distance``.
- Default is ``false`` which ignores other points of the points_sql.
-================ ================= =================================================
-
-
-Description of the return values
-..............................................................
-
-Returns set of ``(seq, path_id, path_seq, node, edge, cost, agg_cost)``
-
-============ =========== =================================================
-Column Type Description
-============ =========== =================================================
-**seq** ``INTEGER`` Row sequence.
-**path_seq** ``INTEGER`` Relative position in the path of node and edge. Has value 1 for the beginning of a path.
-**path_id** ``INTEGER`` Path identifier. The ordering of the paths: For two paths i, j if i < j then agg_cost(i) <= agg_cost(j).
-**node** ``BIGINT`` Identifier of the node in the path. Negative values are the identifiers of a point.
-**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence.
- - ``-1`` for the last row in the path sequence.
-
-**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the path sequence.
- - ``0`` for the last row in the path sequence.
-
-**agg_cost** ``FLOAT`` Aggregate cost from ``start_pid`` to ``node``.
- - ``0`` for the first row in the path sequence.
-
-============ =========== =================================================
-
-
-
-Examples
---------------------------------------------------------------------------------------
-
-:Example: Left side driving topology with details.
-
-.. literalinclude:: doc-pgr_withPointsKSP.queries
- :start-after: --q3
- :end-before: --q4
-
-:Example: Right side driving topology with heap paths and details.
-
-.. literalinclude:: doc-pgr_withPointsKSP.queries
- :start-after: --q4
- :end-before: --q5
-
-The queries use the :ref:`sampledata` network.
-
-.. rubric:: History
-
-* Proposed in version 2.2
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`withPoints`
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/withPoints/doc/pgr_withPointsVia.rst b/src/withPoints/doc/pgr_withPointsVia.rst
deleted file mode 100644
index 1f58ef9..0000000
--- a/src/withPoints/doc/pgr_withPointsVia.rst
+++ /dev/null
@@ -1,200 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-.. _pgr_withPointsVia:
-
-pgr_withPointsVia - Proposed
-===============================================================================
-
-
-Name
--------------------------------------------------------------------------------
-
-``pgr_withPointsVia`` - Get a path using the vertices/points indicated
-
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-
-
-.. figure:: images/boost-inside.jpeg
- :target: http://www.boost.org/libs/graph
-
- Boost Graph Inside
-
-.. rubric:: Availability: PENDING.
-
-Synopsis
--------------------------------------------------------------------------------
-
-Modify the graph to include points and
-using Dijkstra algorithm, extracts all the nodes and points that have costs less
-than or equal to the value ``distance`` from the starting point.
-The edges extracted will conform the corresponding spanning tree.
-
-
-Signature Summary
------------------
-
-.. code-block:: none
-
- withPointsVia(edges_sql, points_sql, start_pid, distance)
- withPointsVia(edges_sql, points_sql, start_pid, distance, directed, driving_side, details)
- RETURNS SET OF (seq, node, edge, cost, agg_cost)
-
-Signatures
------------------
-
-.. index::
- single: withPointsVia(edges_sql, points_sql, start_pid, distance) -- proposed
-
-Minimal signature
-...................................................
-
-The minimal signature:
- - Is for a **directed** graph.
- - The driving side is set as **b** both. So arriving/departing to/from the point(s) can be in any direction.
- - No **details** are given about distance of other points of the query.
-
-.. code-block:: none
-
- withPointsVia(edges_sql, points_sql, start_pid, distance)
- RETURNS SET OF (seq, node, edge, cost, agg_cost)
-
-
-:Example:
-
-.. literalinclude:: doc-pgr_withPointsVia.queries
- :start-after: --q1
- :end-before: --q2
-
-.. index::
- single: withPointsVia(edges_sql, points_sql, start_pid, distance, directed, driving_side, details) -- proposed
-
-Driving distance from a single point
-...................................................
-
-Finds the driving distance depending on the optional parameters setup.
-
-.. code-block:: none
-
- pgr_withPointsVia(edges_sql, points_sql, start_pid, distance,
- directed := true, driving_side := 'b', details := false)
- RETURNS SET OF (seq, node, edge, cost, agg_cost)
-
-
-:Example: Right side driving topology
-
-.. literalinclude:: doc-pgr_withPointsVia.queries
- :start-after: --q2
- :end-before: --q3
-
-Description of the Signatures
----------------------------------------------------
-
-
-..
- description of the sql queries
-
-.. include:: pgRouting-concepts.rst
- :start-after: basic_edges_sql_start
- :end-before: basic_edges_sql_end
-
-.. include:: pgRouting-concepts.rst
- :start-after: points_sql_start
- :end-before: points_sql_end
-
-
-
-Description of the parameters of the signatures
-...................................................
-
-
-================ ================= =================================================
-Parameter Type Description
-================ ================= =================================================
-**edges_sql** ``TEXT`` Edges SQL query as described above.
-**points_sql** ``TEXT`` Points SQL query as described above.
-**start_pid** ``ANY-INTEGER`` Starting point id.
-**distance** ``ANY_NUMERICAL`` Distance from the start_pid
-**directed** ``BOOLEAN`` (optional). When ``false`` the graph is considered as Undirected. Default is ``true`` which considers the graph as Directed.
-**driving_side** ``CHAR`` (optional) Value in ['b', 'r', 'l', NULL] indicating if the driving side is:
- - In the right or left or
- - If it doesn't matter with 'b' or NULL.
- - If column not present 'b' is considered.
-
-**details** ``BOOLEAN`` (optional). When ``true`` the results will include the driving distance to the points with in Distance.
- Default is ``false`` which ignores other points of the points_sql.
-================ ================= =================================================
-
-
-Description of the return values
-...................................................
-
-Returns set of ``(seq, node, edge, cost, agg_cost)``
-
-============ =========== =================================================
-Column Type Description
-============ =========== =================================================
-**seq** ``INT`` row sequence.
-**node** ``BIGINT`` Identifier of the node within the Distance from ``start_pid``. If ``details =: true`` a negative value is the identifier of a point.
-**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence.
- - ``-1`` for the last row in the path sequence.
-
-**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next ``node`` in the path sequence.
- - ``0`` for the last row in the path sequence.
-
-**agg_cost** ``FLOAT`` Aggregate cost from ``start_pid`` to ``node``.
- - ``0`` for the first row in the path sequence.
-
-============ =========== =================================================
-
-Examples for queries marked as ``directed`` with ``cost`` and ``reverse_cost`` columns
---------------------------------------------------------------------------------------
-
-The examples in this section use the following :ref:`fig1`
-
-:Example: Left side driving topology
-
-.. literalinclude:: doc-pgr_withPointsVia.queries
- :start-after: --q3
- :end-before: --q4
-
-:Example: Does not matter driving side.
-
-.. literalinclude:: doc-pgr_withPointsVia.queries
- :start-after: --q4
- :end-before: --q5
-
-
-
-
-
-
-
-.. rubric:: History
-
-* Proposed in version 2.2
-
-
-See Also
--------------------------------------------------------------------------------
-
-* :ref:`pgr_drivingDistance` - Driving distance using dijkstra.
-* :ref:`pgr_alphashape` - Alpha shape computation.
-* :ref:`pgr_points_as_polygon` - Polygon around set of points.
-* The queries use the :ref:`sampledata` network.
-
-.. rubric:: Indices and tables
-
-* :ref:`genindex`
-* :ref:`search`
-
diff --git a/src/withPoints/doc/withPoints-family.rst b/src/withPoints/doc/withPoints-family.rst
deleted file mode 100644
index 192e8b7..0000000
--- a/src/withPoints/doc/withPoints-family.rst
+++ /dev/null
@@ -1,188 +0,0 @@
-..
- ****************************************************************************
- pgRouting Manual
- Copyright(c) pgRouting Contributors
-
- This documentation is licensed under a Creative Commons Attribution-Share
- Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
- ****************************************************************************
-
-
-.. _withPoints:
-
-withPoints - Family of functions
-===============================================================================
-
-When points are also given as input:
-
-.. index from here
-
-- :ref:`pgr_withPoints` - Route from/to points anywhere on the graph.
-- :ref:`pgr_withPointsCost` - Costs of the shortest paths.
-- :ref:`pgr_withPointsCostMatrix` - Costs of the shortest paths.
-- :ref:`pgr_withPointsKSP` - K shortest paths.
-- :ref:`pgr_withPointsDD` - Driving distance.
-
-.. index to here
-
-.. toctree::
- :hidden:
-
- pgr_withPoints
- pgr_withPointsCost
- pgr_withPointsCostMatrix
- pgr_withPointsKSP
- pgr_withPointsDD
-
-
-
-.. include:: proposed.rst
- :start-after: begin-warning
- :end-before: end-warning
-
-
-
-
-Images
---------------
-
-The squared vertices are the temporary vertices, The temporary vertices are added acordng to the
-dirving side, The following images visualy show the diferences on how depending on the driving side the data is interpreted.
-
-.. rubric:: Right driving side
-
-.. image:: images/rightDrivingSide.png
- :scale: 50%
-
-.. rubric:: Left driving side
-
-.. image:: images/leftDrivingSide.png
- :scale: 50%
-
-.. rubric:: doesn't matter the driving side
-
-.. image:: images/noMatterDrivingSide.png
- :scale: 50%
-
-Introduction
---------------
-
-This famly of functions was thought for routing vehicles, but might as well work
-for some other application that we can not think of.
-
-The with points family of function give you the ability to route between
-arbitrary points located outside the original graph.
-
-When given a point identified with a `pid` that its being mapped to and edge with
-an identifier `edge_id`, with a `fraction` along
-that edge (from the source to the target of the edge) and some additional
-information about which `side` of the edge the point is on, then routing
-from arbitrary points more accurately reflect routing vehicles in road networks,
-
-
-I talk about a family of functions because it includes different functionalities.
- - pgr_withPoints is pgr_dijkstra based
- - pgr_withPointsCost is pgr_dijkstraCost based
- - pgr_withPointsKSP is pgr_ksp based
- - pgr_withPointsDD is pgr_drivingDistance based
-
-In all this functions we have to take care of as many aspects as possible:
-
-- Must work for routing:
-
- - Cars (directed graph)
- - Pedestrians (undirected graph)
-
-- Arriving at the point:
-
- - In either side of the street.
- - Compulsory arrival on the side of the street where the point is located.
-
-- Countries with:
-
- - Right side driving
- - Left side driving
-
-- Some points are:
-
- - Permanent, for example the set of points of clients stored in a table in the data base
- - Temporal, for example points given through a web application
-
-- The numbering of the points are handled with negative sign.
-
- - Original point identifiers are to be positive.
- - Transformation to negative is done internally.
- - For results for involving vertices identifiers
-
- - positive sign is a vertex of the original grpah
- - negative sign is a point of the temporary points
-
-The reason for doing this is to avoid confusion when there is a vertex with the same number as identifier as the points identifier.
-
-Graph & edges
-----------------
-
-- Let :math:`G_d(V,E)` where :math:`V` is the set of vertices and :math:`E` is the set of edges be the original directed graph.
-
- - An edge of the original `edges_sql` is :math:`(id, source, target, cost, reverse\_cost)` will generate internally
-
- - :math:`(id, source, target, cost)`
- - :math:`(id, target, source, reverse\_cost)`
-
-Point Definition
-----------------
-
-- A point is defined by the quadruplet: :math:`(pid, eid, fraction, side)`
-
- - :ped: is the point identifier
- - :eid: is an edge id of the `edges_sql`
- - :fraction: represents where the edge `eid` will be cut.
- - :side: Indicates the side of the edge where the point is located.
-
-
-Creating Temporary Vertices in the Graph
-----------------------------------------
-
-For edge (15, 9,12 10, 20), & lets insert point (2, 12, 0.3, r)
-
-.. rubric:: On a right hand side driving network
-
-From first image above:
-
- - We can arrive to the point only via vertex 9.
- - It only afects the edge (15, 9,12, 10) so that edge is removed.
- - Edge (15, 12,9, 20) is kept.
- - Create new edges:
-
- - (15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3
- - (15, -1,12, 7) edge from point 1 to vertex 12 has cost 7
-
-.. rubric:: On a left hand side driving network
-
-From second image above:
-
- - We can arrive to the point only via vertex 12.
- - It only afects the edge (15, 12,9 20) so that edge is removed.
- - Edge (15, 9,12, 10) is kept.
- - Create new edges:
-
- - (15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14
- - (15, -1,9, 6) edge from point 1 to vertex 9 has cost 6
-
-:Remember: that fraction is from vertex 9 to vertex 12
-
-
-.. rubric:: When driving side does not matter
-
-From third image above:
-
- - We can arrive to the point either via vertex 12 or via vertex 9
- - Edge (15, 12,9 20) is removed.
- - Edge (15, 9,12, 10) is removed.
- - Create new edges:
-
- - (15, 12,-1, 14) edge from vertex 12 to point 1 has cost 14
- - (15, -1,9, 6) edge from point 1 to vertex 9 has cost 6
- - (15, 9,-1, 3) edge from vertex 9 to point 1 has cost 3
- - (15, -1,12, 7) edge from point 1 to vertex 12 has cost 7
-
diff --git a/src/withPoints/sql/CMakeLists.txt b/src/withPoints/sql/CMakeLists.txt
deleted file mode 100644
index 71af8f2..0000000
--- a/src/withPoints/sql/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/withPoints.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/withPointsCost.sql
- ${CMAKE_CURRENT_SOURCE_DIR}/withPointsVia.sql
-)
-
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
diff --git a/src/withPoints/sql/withPoints.sql b/src/withPoints/sql/withPoints.sql
deleted file mode 100644
index dbf876e..0000000
--- a/src/withPoints/sql/withPoints.sql
+++ /dev/null
@@ -1,264 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: withPoints.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-/*
-ONE TO ONE
-*/
-
-CREATE OR REPLACE FUNCTION _pgr_withPoints(
- edges_sql TEXT,
- points_sql TEXT,
- start_pid BIGINT,
- end_pid BIGINT,
- directed BOOLEAN,
- driving_side CHAR,
- details BOOLEAN,
-
- only_cost BOOLEAN DEFAULT false, -- gets path
-
-
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'one_to_one_withPoints'
-LANGUAGE c IMMUTABLE STRICT;
-
-/*
-ONE TO MANY
-*/
-
-CREATE OR REPLACE FUNCTION _pgr_withPoints(
- edges_sql TEXT,
- points_sql TEXT,
- start_pid BIGINT,
- end_pids ANYARRAY,
- directed BOOLEAN,
- driving_side CHAR,
- details BOOLEAN,
-
- only_cost BOOLEAN DEFAULT false, -- gets path
-
-
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT end_pid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'one_to_many_withPoints'
-LANGUAGE c IMMUTABLE STRICT;
-
-
-/*
-MANY TO ONE
-*/
-
-CREATE OR REPLACE FUNCTION _pgr_withPoints(
- edges_sql TEXT,
- points_sql TEXT,
- start_pids ANYARRAY,
- end_pid BIGINT,
- directed BOOLEAN,
- driving_side CHAR,
- details BOOLEAN,
-
- only_cost BOOLEAN DEFAULT false, -- gets path
-
-
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_pid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'many_to_one_withPoints'
-LANGUAGE c IMMUTABLE STRICT;
-
-
-
-
-/*
-MANY TO MANY
-*/
-
-CREATE OR REPLACE FUNCTION _pgr_withPoints(
- edges_sql TEXT,
- points_sql TEXT,
- start_pids ANYARRAY,
- end_pids ANYARRAY,
- directed BOOLEAN,
- driving_side CHAR,
- details BOOLEAN,
-
- only_cost BOOLEAN DEFAULT false, -- gets path
-
-
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_pid BIGINT,
- OUT end_pid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-'$libdir/${PGROUTING_LIBRARY_NAME}', 'many_to_many_withPoints'
-LANGUAGE c IMMUTABLE STRICT;
-
-
-
-
-/*
-ONE TO ONE
-*/
-CREATE OR REPLACE FUNCTION pgr_withPoints(
- edges_sql TEXT,
- points_sql TEXT,
- start_pid BIGINT,
- end_pid BIGINT,
- directed BOOLEAN DEFAULT true,
- driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
- details BOOLEAN DEFAULT false,
-
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_withPoints($1, $2, $3, $4, $5, $6, $7);
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100
- ROWS 1000;
-
-
-/*
-ONE TO MANY
-*/
-CREATE OR REPLACE FUNCTION pgr_withPoints(
- edges_sql TEXT,
- points_sql TEXT,
- start_pid BIGINT,
- end_pids ANYARRAY,
- directed BOOLEAN DEFAULT true,
- driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
- details BOOLEAN DEFAULT false,
-
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT end_pid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_withPoints($1, $2, $3, $4, $5, $6, $7);
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100
- ROWS 1000;
-
-/*
-MANY TO ONE
-*/
-CREATE OR REPLACE FUNCTION pgr_withPoints(
- edges_sql TEXT,
- points_sql TEXT,
- start_pids ANYARRAY,
- end_pid BIGINT,
- directed BOOLEAN DEFAULT true,
- driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
- details BOOLEAN DEFAULT false,
-
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_pid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_withPoints($1, $2, $3, $4, $5, $6, $7);
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100
- ROWS 1000;
-
-/*
-MANY TO MANY
-*/
-CREATE OR REPLACE FUNCTION pgr_withPoints(
- edges_sql TEXT,
- points_sql TEXT,
- start_pids ANYARRAY,
- end_pids ANYARRAY,
- directed BOOLEAN DEFAULT true,
- driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
- details BOOLEAN DEFAULT false,
-
- OUT seq INTEGER,
- OUT path_seq INTEGER,
- OUT start_pid BIGINT,
- OUT end_pid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT *
- FROM _pgr_withPoints($1, $2, $3, $4, $5, $6, $7);
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100
- ROWS 1000;
diff --git a/src/withPoints/sql/withPointsCost.sql b/src/withPoints/sql/withPointsCost.sql
deleted file mode 100644
index fdf050b..0000000
--- a/src/withPoints/sql/withPointsCost.sql
+++ /dev/null
@@ -1,132 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: withPointsCost.sql
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-/*
-ONE TO ONE
-*/
-
-CREATE OR REPLACE FUNCTION pgr_withPointsCost(
- edges_sql TEXT,
- points_sql TEXT,
- BIGINT,
- BIGINT,
- directed BOOLEAN DEFAULT true,
- driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
-
- OUT start_pid BIGINT,
- OUT end_pid BIGINT,
- OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT $3, $4, a.agg_cost
- FROM _pgr_withPoints($1, $2, $3, $4, $5, $6, TRUE, TRUE) AS a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-/*
-ONE TO MANY
-*/
-
-CREATE OR REPLACE FUNCTION pgr_withPointsCost(
- edges_sql TEXT,
- points_sql TEXT,
- BIGINT,
- end_pids ANYARRAY,
- directed BOOLEAN DEFAULT true,
- driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
-
- OUT start_pid BIGINT,
- OUT end_pid BIGINT,
- OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT $3, a.end_pid, a.agg_cost
- FROM _pgr_withPoints($1, $2, $3, $4, $5, $6, TRUE, TRUE) AS a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-/*
-MANY TO ONE
-*/
-
-CREATE OR REPLACE FUNCTION pgr_withPointsCost(
- edges_sql TEXT,
- points_sql TEXT,
- start_pids ANYARRAY,
- BIGINT,
- directed BOOLEAN DEFAULT true,
- driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
-
- OUT start_pid BIGINT,
- OUT end_pid BIGINT,
- OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT a.start_pid, $4, a.agg_cost
- FROM _pgr_withPoints($1, $2, $3, $4, $5, $6, TRUE, TRUE) AS a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
-
-/*
-MANY TO MANY
-*/
-
-CREATE OR REPLACE FUNCTION pgr_withPointsCost(
- edges_sql TEXT,
- points_sql TEXT,
- start_pids ANYARRAY,
- end_pids ANYARRAY,
- directed BOOLEAN DEFAULT true,
- driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
-
- OUT start_pid BIGINT,
- OUT end_pid BIGINT,
- OUT agg_cost float)
-RETURNS SETOF RECORD AS
-$BODY$
-BEGIN
- RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
- FROM _pgr_withPoints($1, $2, $3, $4, $5, $6, TRUE, TRUE) AS a;
-END
-$BODY$
-LANGUAGE plpgsql VOLATILE
-COST 100
-ROWS 1000;
diff --git a/src/withPoints/sql/withPointsVia.sql b/src/withPoints/sql/withPointsVia.sql
deleted file mode 100644
index d0870cd..0000000
--- a/src/withPoints/sql/withPointsVia.sql
+++ /dev/null
@@ -1,165 +0,0 @@
-/*PGR-GNU*****************************************************************
-
-Template:
-Copyright (c) 2015 pgRouting developers
-
-Function developer:
-Copyright (c) 2015 Vicky Vergara
-vicky_vergara at hotmail.com
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-
-
-CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
- sql text,
- via_edges bigint[],
- fraction float[],
- directed BOOLEAN DEFAULT TRUE,
-
- OUT seq INTEGER,
- OUT path_id INTEGER,
- OUT path_seq INTEGER,
- OUT start_vid BIGINT,
- OUT end_vid BIGINT,
- OUT node BIGINT,
- OUT edge BIGINT,
- OUT cost FLOAT,
- OUT agg_cost FLOAT,
- OUT route_agg_cost FLOAT)
-
- RETURNS SETOF RECORD AS
- $BODY$
- DECLARE
- has_rcost boolean;
- sql_new_vertices text := ' ';
- sql_on_vertex text;
- v_union text := ' ';
- dummyrec record;
- rec1 record;
- via_vertices int[];
- sql_safe text;
- new_edges text;
- BEGIN
- BEGIN
- sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
-
- EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
- has_rcost := true;
- EXCEPTION
- WHEN OTHERS THEN
- has_rcost = false;
- END;
-
-
- IF array_length(via_edges, 1) != array_length(fraction, 1) then
- RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
- END IF;
-
- FOR i IN 1 .. array_length(via_edges, 1)
- LOOP
- IF fraction[i] = 0 THEN
- sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
- EXECUTE sql_on_vertex into dummyrec;
- via_vertices[i] = dummyrec.source;
- ELSE IF fraction[i] = 1 THEN
- sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
- EXECUTE sql_on_vertex into dummyrec;
- via_vertices[i] = dummyrec.target;
- ELSE
- via_vertices[i] = -i;
- IF has_rcost THEN
- sql_new_vertices = sql_new_vertices || v_union ||
- '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
- reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
- FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
- UNION
- (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
- reverse_cost * ' || fraction[i] || ' AS reverse_cost
- FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
- v_union = ' UNION ';
- ELSE
- sql_new_vertices = sql_new_vertices || v_union ||
- '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
- FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
- UNION
- (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
- FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
- v_union = ' UNION ';
- END IF;
- END IF;
- END IF;
- END LOOP;
-
- IF sql_new_vertices = ' ' THEN
- new_edges := sql;
- ELSE
- IF has_rcost THEN
- new_edges:= 'WITH
- original AS ( ' || sql || '),
- the_union AS ( ' || sql_new_vertices || '),
- first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
- lead(cost) OVER w - cost AS cost,
- lead(cost) OVER w - cost AS reverse_cost
- FROM the_union WHERE source > 0 AND cost > 0
- WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
- WHERE target IS NOT NULL),
- second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
- reverse_cost - lead(reverse_cost) OVER w AS cost,
- reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
- FROM the_union WHERE target > 0 and reverse_cost > 0
- WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
- WHERE source IS NOT NULL),
- more_union AS ( SELECT * from (
- (SELECT * FROM original)
- UNION
- (SELECT * FROM the_union)
- UNION
- (SELECT * FROM first_part)
- UNION
- (SELECT * FROM second_part) ) _union )
- SELECT * FROM more_union';
- ELSE
- new_edges:= 'WITH
- original AS ( ' || sql || '),
- the_union AS ( ' || sql_new_vertices || '),
- first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
- lead(cost) OVER w - cost AS cost
- FROM the_union WHERE source > 0 AND cost > 0
- WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
- WHERE target IS NOT NULL ),
- more_union AS ( SELECT * from (
- (SELECT * FROM original)
- UNION
- (SELECT * FROM the_union)
- UNION
- (SELECT * FROM first_part) ) _union )
- SELECT * FROM more_union';
- END IF;
- END IF;
-
- -- raise notice '%', new_edges;
- sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
- RETURN query SELECT *
- FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
- END
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100
- ROWS 1000;
-
-
diff --git a/src/withPoints/src/CMakeLists.txt b/src/withPoints/src/CMakeLists.txt
index 8975899..bf2cee0 100644
--- a/src/withPoints/src/CMakeLists.txt
+++ b/src/withPoints/src/CMakeLists.txt
@@ -1,12 +1,7 @@
ADD_LIBRARY(withPoints OBJECT
- one_to_one_withPoints.c
- one_to_many_withPoints.c
- many_to_one_withPoints.c
- many_to_many_withPoints.c
-
+ withPoints.c
get_new_queries.cpp
+ withPoints_driver.cpp
pgr_withPoints.cpp
-
- many_to_many_withPoints_driver.cpp
)
diff --git a/src/withPoints/src/get_new_queries.cpp b/src/withPoints/src/get_new_queries.cpp
index ffa2bf7..85ba686 100644
--- a/src/withPoints/src/get_new_queries.cpp
+++ b/src/withPoints/src/get_new_queries.cpp
@@ -27,7 +27,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#include "./get_new_queries.h"
+#include "drivers/withPoints/get_new_queries.h"
#include <string.h>
#include <sstream>
diff --git a/src/withPoints/src/get_new_queries.h b/src/withPoints/src/get_new_queries.h
deleted file mode 100644
index 946beb4..0000000
--- a/src/withPoints/src/get_new_queries.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: get_new_queries.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-#ifndef SRC_WITHPOINTS_SRC_GET_NEW_QUERIES_H_
-#define SRC_WITHPOINTS_SRC_GET_NEW_QUERIES_H_
-
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- char estimate_drivingSide(char driving_side);
-
- void get_new_queries(
- char *edges_sql,
- char *points_sql,
- char **edges_of_points_query,
- char **edges_no_points_query);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_WITHPOINTS_SRC_GET_NEW_QUERIES_H_
diff --git a/src/withPoints/src/many_to_many_withPoints.c b/src/withPoints/src/many_to_many_withPoints.c
deleted file mode 100644
index 93a3a41..0000000
--- a/src/withPoints/src/many_to_many_withPoints.c
+++ /dev/null
@@ -1,258 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: one_to_many_withPoints.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./../../common/src/points_input.h"
-#include "./get_new_queries.h"
-#include "./many_to_many_withPoints_driver.h"
-
-PGDLLEXPORT Datum many_to_many_withPoints(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(many_to_many_withPoints);
-
-
-static
-void
-process(
- char* edges_sql,
- char* points_sql,
-
- ArrayType *starts,
- ArrayType *ends,
-
- bool directed,
- char *driving_side,
- bool details,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- driving_side[0] = estimate_drivingSide(driving_side[0]);
-
- pgr_SPI_connect();
-
- size_t size_start_pidsArr = 0;
- int64_t* start_pidsArr = pgr_get_bigIntArray(&size_start_pidsArr, starts);
-
- size_t size_end_pidsArr = 0;
- int64_t* end_pidsArr = pgr_get_bigIntArray(&size_end_pidsArr, ends);
-
- Point_on_edge_t *points = NULL;
- size_t total_points = 0;
- pgr_get_points(points_sql, &points, &total_points);
-
-
- char *edges_of_points_query = NULL;
- char *edges_no_points_query = NULL;
- get_new_queries(
- edges_sql, points_sql,
- &edges_of_points_query,
- &edges_no_points_query);
-
-
- pgr_edge_t *edges_of_points = NULL;
- size_t total_edges_of_points = 0;
- pgr_get_edges(
- edges_of_points_query, &edges_of_points, &total_edges_of_points);
-
-
- pgr_edge_t *edges = NULL;
- size_t total_edges = 0;
- pgr_get_edges(edges_no_points_query, &edges, &total_edges);
-
- free(edges_of_points_query);
- free(edges_no_points_query);
-
- if ((total_edges + total_edges_of_points) == 0) {
- pgr_SPI_finish();
- return;
- }
-
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
-
- do_pgr_many_to_many_withPoints(
- edges, total_edges,
- points, total_points,
- edges_of_points, total_edges_of_points,
- start_pidsArr, size_start_pidsArr,
- end_pidsArr, size_end_pidsArr,
-
- driving_side[0],
- details,
- directed,
- only_cost,
- true,
-
- result_tuples, result_count,
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_withPointsCost(one to one)", start_t, clock());
- } else {
- time_msg("processing pgr_withPoints(one to one)", start_t, clock());
- }
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_count) = 0;
- (*result_tuples) = NULL;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
-#if 0
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
- if (points) pfree(points);
- if (edges_of_points) pfree(edges_of_points);
- if (start_pidsArr) pfree(start_pidsArr);
- if (end_pidsArr) pfree(end_pidsArr);
-#endif
- pgr_SPI_finish();
-}
-
-
-PGDLLEXPORT Datum
-many_to_many_withPoints(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**********************************************************************/
- General_path_element_t *result_tuples = 0;
- size_t result_count = 0;
- /**********************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- // CREATE OR REPLACE FUNCTION pgr_withPoint(
- // edges_sql TEXT,
- // points_sql TEXT,
- // start_pid ANYARRAY,
- // end_pids ANYARRAY,
- // driving_side CHAR -- DEFAULT 'b',
- // details BOOLEAN -- DEFAULT false,
- // directed BOOLEAN -- DEFAULT true,
- // only_cost BOOLEAN DEFAULT false,
-
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- text_to_cstring(PG_GETARG_TEXT_P(1)),
- PG_GETARG_ARRAYTYPE_P(2),
- PG_GETARG_ARRAYTYPE_P(3),
- PG_GETARG_BOOL(4),
- text_to_cstring(PG_GETARG_TEXT_P(5)),
- PG_GETARG_BOOL(6),
- PG_GETARG_BOOL(7),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE)
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
-
- /**********************************************************************/
- // OUT seq BIGINT,
- // OUT path_seq,
- // OUT node BIGINT,
- // OUT edge BIGINT,
- // OUT cost FLOAT,
- // OUT agg_cost FLOAT)
-
-
- values = palloc(8 * sizeof(Datum));
- nulls = palloc(8 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 8; ++i) {
- nulls[i] = false;
- }
-
-
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].start_id);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].end_id);
- values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[5] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- values[6] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
- values[7] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/withPoints/src/many_to_many_withPoints_driver.cpp b/src/withPoints/src/many_to_many_withPoints_driver.cpp
deleted file mode 100644
index eef223e..0000000
--- a/src/withPoints/src/many_to_many_withPoints_driver.cpp
+++ /dev/null
@@ -1,249 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: one_to_many_withPoints_driver.cpp
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./many_to_many_withPoints_driver.h"
-
-#include <algorithm>
-#include <sstream>
-#include <deque>
-#include <vector>
-#include <cassert>
-
-
-#include "./pgr_dijkstra.hpp"
-#include "./pgr_withPoints.hpp"
-
-#include "./../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
-
-template < class G >
-std::deque< Path >
-pgr_dijkstra(
- G &graph,
- std::vector < int64_t > sources,
- std::vector < int64_t > targets,
- bool only_cost,
- bool normal) {
- std::sort(sources.begin(), sources.end());
- sources.erase(
- std::unique(sources.begin(), sources.end()),
- sources.end());
-
- std::sort(targets.begin(), targets.end());
- targets.erase(
- std::unique(targets.begin(), targets.end()),
- targets.end());
-
- Pgr_dijkstra< G > fn_dijkstra;
- auto paths = fn_dijkstra.dijkstra(graph, sources, targets, only_cost);
-
- if (!normal) {
- for (auto &path : paths) {
- path.reverse();
- }
- }
- return paths;
-}
-
-
-// CREATE OR REPLACE FUNCTION pgr_withPoint(
-// edges_sql TEXT,
-// points_sql TEXT,
-// start_pid ANYARRAY,
-// end_pid BIGINT,
-// directed BOOLEAN DEFAULT true
-
-void
-do_pgr_many_to_many_withPoints(
- pgr_edge_t *edges, size_t total_edges,
- Point_on_edge_t *points_p, size_t total_points,
- pgr_edge_t *edges_of_points, size_t total_edges_of_points,
- int64_t *start_pidsArr, size_t size_start_pidsArr,
- int64_t *end_pidsArr, size_t size_end_pidsArr,
-
- char driving_side,
- bool details,
- bool directed,
- bool only_cost,
- bool normal,
-
- General_path_element_t **return_tuples, size_t *return_count,
-
- char** log_msg,
- char** notice_msg,
- char** err_msg) {
- std::ostringstream log;
- std::ostringstream notice;
- std::ostringstream err;
- try {
- pgassert(!(*log_msg));
- pgassert(!(*notice_msg));
- pgassert(!(*err_msg));
- pgassert(!(*return_tuples));
- pgassert((*return_count) == 0);
- pgassert(edges || edges_of_points);
- pgassert(points_p);
- pgassert(start_pidsArr);
- pgassert(end_pidsArr);
-
- std::vector< Point_on_edge_t >
- points(points_p, points_p + total_points);
-
- if (!normal) {
- for (auto &point : points) {
- if (point.side == 'r') {
- point.side = 'l';
- } else if (point.side == 'l') {
- point.side = 'r';
- }
- point.fraction = 1 - point.fraction;
- }
- if (driving_side == 'r') {
- driving_side = 'l';
- } else if (driving_side == 'l') {
- driving_side = 'r';
- }
- }
-
- int errcode = check_points(points, log);
- if (errcode) {
- *log_msg = strdup(log.str().c_str());
- err << "Unexpected point(s) with same pid"
- << " but different edge/fraction/side combination found.";
- *err_msg = pgr_msg(err.str().c_str());
- return;
- }
-
-
- std::vector< pgr_edge_t >
- edges_to_modify(
- edges_of_points, edges_of_points + total_edges_of_points);
-
- std::vector< pgr_edge_t > new_edges;
- create_new_edges(
- points,
- edges_to_modify,
- driving_side,
- new_edges, log);
-
-
- std::vector<int64_t>
- start_vertices(start_pidsArr, start_pidsArr + size_start_pidsArr);
- std::vector< int64_t >
- end_vertices(end_pidsArr, end_pidsArr + size_end_pidsArr);
-
-
- graphType gType = directed? DIRECTED: UNDIRECTED;
-
- std::deque< Path > paths;
-
- if (directed) {
- log << "Working with directed Graph\n";
- pgrouting::DirectedGraph digraph(gType);
- digraph.insert_edges(edges, total_edges);
- digraph.insert_edges(new_edges);
- paths = pgr_dijkstra(
- digraph,
- start_vertices, end_vertices,
- only_cost, normal);
- } else {
- log << "Working with Undirected Graph\n";
- pgrouting::UndirectedGraph undigraph(gType);
- undigraph.insert_edges(edges, total_edges);
- undigraph.insert_edges(new_edges);
- paths = pgr_dijkstra(
- undigraph,
- start_vertices, end_vertices,
- only_cost, normal);
- }
-
- if (!details) {
- for (auto &path : paths) {
- eliminate_details(path, edges_to_modify);
- }
- }
-
- /*
- * order paths based on the start_pid, end_pid
- */
- std::sort(paths.begin(), paths.end(),
- [](const Path &a, const Path &b)
- -> bool {
- if (b.start_id() != a.start_id()) {
- return a.start_id() < b.start_id();
- }
- return a.end_id() < b.end_id();
- });
-
- size_t count(0);
- count = count_tuples(paths);
-
-
- if (count == 0) {
- (*return_tuples) = NULL;
- (*return_count) = 0;
-#if 0
- log <<
- "No paths found";
- *err_msg = pgr_msg(log.str().c_str());
-#endif
- return;
- }
-
- (*return_tuples) = pgr_alloc(count, (*return_tuples));
- log << "Converting a set of paths into the tuples\n";
- (*return_count) = (collapse_paths(return_tuples, paths));
-
- *log_msg = log.str().empty()?
- *log_msg :
- pgr_msg(log.str().c_str());
- *notice_msg = notice.str().empty()?
- *notice_msg :
- pgr_msg(notice.str().c_str());
- } catch (AssertFailedException &except) {
- (*return_tuples) = pgr_free(*return_tuples);
- (*return_count) = 0;
- err << except.what();
- *err_msg = pgr_msg(err.str().c_str());
- *log_msg = pgr_msg(log.str().c_str());
- } catch (std::exception &except) {
- (*return_tuples) = pgr_free(*return_tuples);
- (*return_count) = 0;
- err << except.what();
- *err_msg = pgr_msg(err.str().c_str());
- *log_msg = pgr_msg(log.str().c_str());
- } catch(...) {
- (*return_tuples) = pgr_free(*return_tuples);
- (*return_count) = 0;
- err << "Caught unknown exception!";
- *err_msg = pgr_msg(err.str().c_str());
- *log_msg = pgr_msg(log.str().c_str());
- }
-}
diff --git a/src/withPoints/src/many_to_many_withPoints_driver.h b/src/withPoints/src/many_to_many_withPoints_driver.h
deleted file mode 100644
index 9a7dcd3..0000000
--- a/src/withPoints/src/many_to_many_withPoints_driver.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: many_to_many_withPoints_driver.h
-
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#ifndef SRC_WITHPOINTS_SRC_MANY_TO_MANY_WITHPOINTS_DRIVER_H_
-#define SRC_WITHPOINTS_SRC_MANY_TO_MANY_WITHPOINTS_DRIVER_H_
-
-#pragma once
-
-#include "./../../common/src/pgr_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// CREATE OR REPLACE FUNCTION pgr_withPoint(
-// edges_sql TEXT,
-// points_sql TEXT,
-// start_pid ANYARRAY,
-// end_pid BIGINT,
-// directed BOOLEAN DEFAULT true,
- void do_pgr_many_to_many_withPoints(
- pgr_edge_t *edges,
- size_t total_edges,
-
- Point_on_edge_t *points,
- size_t total_points,
-
- pgr_edge_t *edges_of_points,
- size_t total_edges_of_points,
-
- int64_t *start_pidsArr,
- size_t size_start_pidsArr,
-
- int64_t *end_pidsArr,
- size_t size_end_pidsArr,
-
-
- char driving_side,
- bool details,
- bool directed,
- bool only_cost,
- bool normal,
-
- General_path_element_t **return_tuples,
- size_t *return_count,
- char** log_msg,
- char** notice_msg,
- char** err_msg);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // SRC_WITHPOINTS_SRC_MANY_TO_MANY_WITHPOINTS_DRIVER_H_
diff --git a/src/withPoints/src/many_to_one_withPoints.c b/src/withPoints/src/many_to_one_withPoints.c
deleted file mode 100644
index 51bed34..0000000
--- a/src/withPoints/src/many_to_one_withPoints.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: one_to_many_withPoints.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./../../common/src/points_input.h"
-#include "./get_new_queries.h"
-#include "./many_to_many_withPoints_driver.h"
-
-PGDLLEXPORT Datum many_to_one_withPoints(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(many_to_one_withPoints);
-
-
-static
-void
-process(
- char* edges_sql,
- char* points_sql,
- ArrayType *starts,
- int64_t end_pid,
- bool directed,
- char* driving_side,
- bool details,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- driving_side[0] = estimate_drivingSide(driving_side[0]);
- PGR_DBG("estimated driving side:%c", driving_side[0]);
-
- pgr_SPI_connect();
-
- size_t size_start_pidsArr = 0;
- int64_t* start_pidsArr =
- pgr_get_bigIntArray(&size_start_pidsArr, starts);
-
- Point_on_edge_t *points = NULL;
- size_t total_points = 0;
- pgr_get_points(points_sql, &points, &total_points);
-
-
- char *edges_of_points_query = NULL;
- char *edges_no_points_query = NULL;
- get_new_queries(
- edges_sql, points_sql,
- &edges_of_points_query,
- &edges_no_points_query);
-
-
- pgr_edge_t *edges_of_points = NULL;
- size_t total_edges_of_points = 0;
- pgr_get_edges_reversed(
- edges_of_points_query, &edges_of_points, &total_edges_of_points);
-
-
- pgr_edge_t *edges = NULL;
- size_t total_edges = 0;
- pgr_get_edges_reversed(edges_no_points_query, &edges, &total_edges);
-
- free(edges_of_points_query);
- free(edges_no_points_query);
-
- if ((total_edges + total_edges_of_points) == 0) {
- (*result_count) = 0;
- (*result_tuples) = NULL;
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
- do_pgr_many_to_many_withPoints(
- edges, total_edges,
- points, total_points,
- edges_of_points, total_edges_of_points,
- &end_pid, 1,
- start_pidsArr, size_start_pidsArr,
- driving_side[0],
- details,
- directed,
- only_cost,
- false,
- result_tuples,
- result_count,
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_withPointsCost(many to one)",
- start_t, clock());
- } else {
- time_msg("processing pgr_withPoints(many to one)", start_t, clock());
- }
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_count) = 0;
- (*result_tuples) = NULL;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
- if (start_pidsArr) pfree(start_pidsArr);
-
- pgr_SPI_finish();
-}
-
-
-PGDLLEXPORT Datum
-many_to_one_withPoints(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**********************************************************************/
- General_path_element_t *result_tuples = NULL;
- size_t result_count = 0;
- /**********************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- // CREATE OR REPLACE FUNCTION pgr_withPoint(
- // edges_sql TEXT,
- // points_sql TEXT,
- // start_pid BIGINT,
- // end_pids ANYARRAY,
- // driving_side CHAR -- DEFAULT 'b',
- // details BOOLEAN -- DEFAULT false,
- // directed BOOLEAN -- DEFAULT true,
- // only_cost BOOLEAN DEFAULT false,
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- text_to_cstring(PG_GETARG_TEXT_P(1)),
- PG_GETARG_ARRAYTYPE_P(2),
- PG_GETARG_INT64(3),
- PG_GETARG_BOOL(4),
- text_to_cstring(PG_GETARG_TEXT_P(5)),
- PG_GETARG_BOOL(6),
- PG_GETARG_BOOL(7),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE)
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
-
- /**********************************************************************/
- // OUT seq BIGINT,
- // OUT path_seq,
- // OUT node BIGINT,
- // OUT edge BIGINT,
- // OUT cost FLOAT,
- // OUT agg_cost FLOAT)
-
-
- values = palloc(7 * sizeof(Datum));
- nulls = palloc(7 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 7; ++i) {
- nulls[i] = false;
- }
-
-
- // postgres starts counting from 1
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].start_id);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- values[5] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
- values[6] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
-
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
diff --git a/src/withPoints/src/one_to_many_withPoints.c b/src/withPoints/src/one_to_many_withPoints.c
deleted file mode 100644
index 57d789d..0000000
--- a/src/withPoints/src/one_to_many_withPoints.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: one_to_many_withPoints.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/arrays_input.h"
-#include "./../../common/src/points_input.h"
-#include "./get_new_queries.h"
-#include "./many_to_many_withPoints_driver.h"
-
-PGDLLEXPORT Datum one_to_many_withPoints(PG_FUNCTION_ARGS);
-
-
-static
-void
-process(
- char* edges_sql,
- char* points_sql,
- int64_t start_pid,
- ArrayType *ends,
- bool directed,
- char *driving_side,
- bool details,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- driving_side[0] = estimate_drivingSide(driving_side[0]);
- PGR_DBG("estimated driving side:%c", driving_side[0]);
-
- pgr_SPI_connect();
-
- size_t size_end_pidsArr = 0;
- int64_t* end_pidsArr =
- pgr_get_bigIntArray(&size_end_pidsArr, ends);
-
- PGR_DBG("load the points");
- size_t total_points = 0;
- Point_on_edge_t *points = NULL;
- pgr_get_points(points_sql, &points, &total_points);
-
- PGR_DBG(" -- change the query");
- char *edges_of_points_query = NULL;
- char *edges_no_points_query = NULL;
- get_new_queries(
- edges_sql, points_sql,
- &edges_of_points_query,
- &edges_no_points_query);
-
- PGR_DBG("edges_of_points_query:\n%s", edges_of_points_query);
- PGR_DBG("edges_no_points_query:\n%s", edges_no_points_query);
-
- PGR_DBG("load the edges that match the points");
- pgr_edge_t *edges_of_points = NULL;
- size_t total_edges_of_points = 0;
- pgr_get_edges(
- edges_of_points_query, &edges_of_points, &total_edges_of_points);
-
- PGR_DBG("Total %ld edges in query:", total_edges_of_points);
-
-
- PGR_DBG("load the edges that don't match the points");
- pgr_edge_t *edges = NULL;
- size_t total_edges = 0;
- pgr_get_edges(edges_no_points_query, &edges, &total_edges);
-
- PGR_DBG("Total %ld edges in query:", total_edges);
-
- free(edges_of_points_query);
- free(edges_no_points_query);
-
- if ((total_edges + total_edges_of_points) == 0) {
- PGR_DBG("No edges found");
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
- do_pgr_many_to_many_withPoints(
- edges, total_edges,
- points, total_points,
- edges_of_points, total_edges_of_points,
- &start_pid, 1,
- end_pidsArr, size_end_pidsArr,
-
- driving_side[0],
- details,
- directed,
- only_cost,
- true,
-
- result_tuples, result_count,
-
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_withPointsCost(one to many)",
- start_t, clock());
- } else {
- time_msg("processing pgr_withPoints(one to many)", start_t, clock());
- }
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_count) = 0;
- (*result_tuples) = NULL;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
- if (points) pfree(points);
- if (edges_of_points) pfree(edges_of_points);
- if (end_pidsArr) pfree(end_pidsArr);
- pgr_SPI_finish();
-}
-
-
-PG_FUNCTION_INFO_V1(one_to_many_withPoints);
-PGDLLEXPORT Datum
-one_to_many_withPoints(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**********************************************************************/
- General_path_element_t *result_tuples = NULL;
- size_t result_count = 0;
- /**********************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- // CREATE OR REPLACE FUNCTION pgr_withPoint(
- // edges_sql TEXT,
- // points_sql TEXT,
- // start_pid BIGINT,
- // end_pids ANYARRAY,
- // directed BOOLEAN -- DEFAULT true,
- // driving_side CHAR -- DEFAULT 'b',
- // details BOOLEAN -- DEFAULT false,
- // only_cost BOOLEAN DEFAULT false,
-
-
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- text_to_cstring(PG_GETARG_TEXT_P(1)),
- PG_GETARG_INT64(2),
- PG_GETARG_ARRAYTYPE_P(3),
- PG_GETARG_BOOL(4),
- text_to_cstring(PG_GETARG_TEXT_P(5)),
- PG_GETARG_BOOL(6),
- PG_GETARG_BOOL(7),
- &result_tuples,
- &result_count);
-
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE)
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool* nulls;
-
- /**********************************************************************/
- // OUT seq BIGINT,
- // OUT path_seq,
- // OUT node BIGINT,
- // OUT edge BIGINT,
- // OUT cost FLOAT,
- // OUT agg_cost FLOAT)
-
-
- values = palloc(7 * sizeof(Datum));
- nulls = palloc(7 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 7; ++i) {
- nulls[i] = false;
- }
-
-
- // postgres starts counting from 1
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].end_id);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- values[5] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
- values[6] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
-
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/withPoints/src/one_to_one_withPoints.c b/src/withPoints/src/one_to_one_withPoints.c
deleted file mode 100644
index 0f32926..0000000
--- a/src/withPoints/src/one_to_one_withPoints.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/*PGR-GNU*****************************************************************
-File: one_to_one_withPoints.c
-
-Generated with Template by:
-Copyright (c) 2015 pgRouting developers
-Mail: project at pgrouting.org
-
-Function's developer:
-Copyright (c) 2015 Celia Virginia Vergara Castillo
-Mail:
-
-------
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-********************************************************************PGR-GNU*/
-
-#include "./../../common/src/postgres_connection.h"
-#include "utils/array.h"
-
-#include "./../../common/src/debug_macro.h"
-#include "./../../common/src/e_report.h"
-#include "./../../common/src/time_msg.h"
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/edges_input.h"
-#include "./../../common/src/points_input.h"
-#include "./get_new_queries.h"
-#include "./many_to_many_withPoints_driver.h"
-
-PGDLLEXPORT Datum one_to_one_withPoints(PG_FUNCTION_ARGS);
-PG_FUNCTION_INFO_V1(one_to_one_withPoints);
-
-static
-void
-process(
- char* edges_sql,
- char* points_sql,
- int64_t start_pid,
- int64_t end_pid,
- bool directed,
- char *driving_side,
- bool details,
- bool only_cost,
- General_path_element_t **result_tuples,
- size_t *result_count) {
- driving_side[0] = estimate_drivingSide(driving_side[0]);
- PGR_DBG("estimated driving side:%c", driving_side[0]);
-
- pgr_SPI_connect();
-
- PGR_DBG("load the points");
- Point_on_edge_t *points = NULL;
- size_t total_points = 0;
- pgr_get_points(points_sql, &points, &total_points);
-
- PGR_DBG(" -- change the query");
- char *edges_of_points_query = NULL;
- char *edges_no_points_query = NULL;
- get_new_queries(
- edges_sql, points_sql,
- &edges_of_points_query,
- &edges_no_points_query);
-
- PGR_DBG("edges_of_points_query:\n%s", edges_of_points_query);
- PGR_DBG("edges_no_points_query:\n%s", edges_no_points_query);
-
- PGR_DBG("load the edges that match the points");
- pgr_edge_t *edges_of_points = NULL;
- size_t total_edges_of_points = 0;
- pgr_get_edges(
- edges_of_points_query, &edges_of_points, &total_edges_of_points);
-
- PGR_DBG("Total %ld edges in query:", total_edges_of_points);
-
-
- PGR_DBG("load the edges that don't match the points");
- pgr_edge_t *edges = NULL;
- size_t total_edges = 0;
- pgr_get_edges(edges_no_points_query, &edges, &total_edges);
-
- PGR_DBG("Total %ld edges in query:", total_edges);
-
- PGR_DBG("freeing allocated memory not used anymore");
- free(edges_of_points_query);
- free(edges_no_points_query);
-
- if ((total_edges + total_edges_of_points) == 0) {
- PGR_DBG("No edges found");
- pgr_SPI_finish();
- return;
- }
-
- PGR_DBG("Starting timer");
- clock_t start_t = clock();
- char* log_msg = NULL;
- char* notice_msg = NULL;
- char* err_msg = NULL;
- do_pgr_many_to_many_withPoints(
- edges, total_edges,
- points, total_points,
- edges_of_points, total_edges_of_points,
- &start_pid, 1,
- &end_pid, 1,
- driving_side[0],
- details,
- directed,
- only_cost,
- true,
- result_tuples, result_count,
- &log_msg,
- ¬ice_msg,
- &err_msg);
-
- if (only_cost) {
- time_msg("processing pgr_withPointsCost(one to one)", start_t, clock());
- } else {
- time_msg("processing pgr_withPoints(one to one)", start_t, clock());
- }
-
- if (err_msg && (*result_tuples)) {
- pfree(*result_tuples);
- (*result_count) = 0;
- (*result_tuples) = NULL;
- }
-
- pgr_global_report(log_msg, notice_msg, err_msg);
-
- if (log_msg) pfree(log_msg);
- if (notice_msg) pfree(notice_msg);
- if (err_msg) pfree(err_msg);
- if (edges) pfree(edges);
- if (points) pfree(points);
- if (edges_of_points) pfree(edges_of_points);
-
- pgr_SPI_finish();
-}
-
-
-PGDLLEXPORT Datum
-one_to_one_withPoints(PG_FUNCTION_ARGS) {
- FuncCallContext *funcctx;
- TupleDesc tuple_desc;
-
- /**********************************************************************/
- General_path_element_t *result_tuples = NULL;
- size_t result_count = 0;
- /**********************************************************************/
-
- if (SRF_IS_FIRSTCALL()) {
- MemoryContext oldcontext;
- funcctx = SRF_FIRSTCALL_INIT();
- oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-
-
- /**********************************************************************/
- // CREATE OR REPLACE FUNCTION pgr_withPoint(
- // edges_sql TEXT,
- // points_sql TEXT,
- // start_pid BIGINT,
- // end_pid BIGINT,
- // directed BOOLEAN -- DEFAULT true,
- // driving_side CHAR -- DEFAULT 'b',
- // details BOOLEAN -- DEFAULT true,
- // only_cost BOOLEAN DEFAULT false,
-
- process(
- text_to_cstring(PG_GETARG_TEXT_P(0)),
- text_to_cstring(PG_GETARG_TEXT_P(1)),
- PG_GETARG_INT64(2),
- PG_GETARG_INT64(3),
- PG_GETARG_BOOL(4),
- text_to_cstring(PG_GETARG_TEXT_P(5)),
- PG_GETARG_BOOL(6),
- PG_GETARG_BOOL(7),
- &result_tuples,
- &result_count);
- /**********************************************************************/
-
-#if PGSQL_VERSION > 95
- funcctx->max_calls = result_count;
-#else
- funcctx->max_calls = (uint32_t)result_count;
-#endif
- funcctx->user_fctx = result_tuples;
- if (get_call_result_type(fcinfo, NULL, &tuple_desc)
- != TYPEFUNC_COMPOSITE)
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("function returning record called in context "
- "that cannot accept type record")));
-
- funcctx->tuple_desc = tuple_desc;
- MemoryContextSwitchTo(oldcontext);
- }
-
- funcctx = SRF_PERCALL_SETUP();
- tuple_desc = funcctx->tuple_desc;
- result_tuples = (General_path_element_t*) funcctx->user_fctx;
-
- if (funcctx->call_cntr < funcctx->max_calls) {
- HeapTuple tuple;
- Datum result;
- Datum *values;
- bool * nulls;
-
- /**********************************************************************/
- // OUT seq BIGINT,
- // OUT path_seq,
- // OUT node BIGINT,
- // OUT edge BIGINT,
- // OUT cost FLOAT,
- // OUT agg_cost FLOAT)
-
-
- values = palloc(6 * sizeof(Datum));
- nulls = palloc(6 * sizeof(bool));
-
- size_t i;
- for (i = 0; i < 6; ++i) {
- nulls[i] = false;
- }
-
- values[0] = Int32GetDatum(funcctx->call_cntr + 1);
- values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
- values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
- values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
- values[4] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
- values[5] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
-
- /**********************************************************************/
-
- tuple = heap_form_tuple(tuple_desc, values, nulls);
- result = HeapTupleGetDatum(tuple);
- SRF_RETURN_NEXT(funcctx, result);
- } else {
- SRF_RETURN_DONE(funcctx);
- }
-}
-
diff --git a/src/withPoints/src/pgr_withPoints.cpp b/src/withPoints/src/pgr_withPoints.cpp
index bb814fd..8395f50 100644
--- a/src/withPoints/src/pgr_withPoints.cpp
+++ b/src/withPoints/src/pgr_withPoints.cpp
@@ -38,8 +38,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#include <algorithm>
#include <cassert>
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
+#include "cpp_common/pgr_assert.h"
static
void
diff --git a/src/withPoints/src/pgr_withPoints.hpp b/src/withPoints/src/pgr_withPoints.hpp
index 986c87e..6558c7f 100644
--- a/src/withPoints/src/pgr_withPoints.hpp
+++ b/src/withPoints/src/pgr_withPoints.hpp
@@ -31,8 +31,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#pragma once
#include <vector>
-#include "./../../common/src/pgr_types.h"
-#include "./../../common/src/basePath_SSEC.hpp"
+#include "c_types/point_on_edge_t.h"
+#include "cpp_common/basePath_SSEC.hpp"
int
check_points(
diff --git a/src/withPoints/src/withPoints.c b/src/withPoints/src/withPoints.c
new file mode 100644
index 0000000..edeba0e
--- /dev/null
+++ b/src/withPoints/src/withPoints.c
@@ -0,0 +1,281 @@
+/*PGR-GNU*****************************************************************
+File: withPoints.c
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "c_common/postgres_connection.h"
+#include "utils/array.h"
+
+#include "c_common/debug_macro.h"
+#include "c_common/e_report.h"
+#include "c_common/time_msg.h"
+
+#include "c_common/edges_input.h"
+#include "c_common/arrays_input.h"
+#include "c_common/points_input.h"
+#include "drivers/withPoints/get_new_queries.h"
+#include "drivers/withPoints/withPoints_driver.h"
+
+PGDLLEXPORT Datum withPoints(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(withPoints);
+
+
+static
+void
+process(
+ char* edges_sql,
+ char* points_sql,
+
+ ArrayType *starts,
+ ArrayType *ends,
+
+ bool directed,
+ char *driving_side,
+ bool details,
+ bool only_cost,
+ bool normal,
+
+ General_path_element_t **result_tuples,
+ size_t *result_count) {
+ driving_side[0] = estimate_drivingSide(driving_side[0]);
+
+ pgr_SPI_connect();
+
+ size_t size_start_pidsArr = 0;
+ int64_t* start_pidsArr = NULL;
+
+ size_t size_end_pidsArr = 0;
+ int64_t* end_pidsArr = NULL;
+
+ Point_on_edge_t *points = NULL;
+ size_t total_points = 0;
+ pgr_get_points(points_sql, &points, &total_points);
+
+
+ char *edges_of_points_query = NULL;
+ char *edges_no_points_query = NULL;
+ get_new_queries(
+ edges_sql, points_sql,
+ &edges_of_points_query,
+ &edges_no_points_query);
+
+
+ pgr_edge_t *edges_of_points = NULL;
+ size_t total_edges_of_points = 0;
+
+ pgr_edge_t *edges = NULL;
+ size_t total_edges = 0;
+
+ PGR_DBG("normal = %d", normal);
+ if (normal) {
+ pgr_get_edges(
+ edges_of_points_query, &edges_of_points, &total_edges_of_points);
+ pgr_get_edges(edges_no_points_query, &edges, &total_edges);
+
+ start_pidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_start_pidsArr, starts);
+ end_pidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_end_pidsArr, ends);
+ } else {
+
+ pgr_get_edges_reversed(
+ edges_of_points_query, &edges_of_points, &total_edges_of_points);
+ pgr_get_edges_reversed(edges_no_points_query, &edges, &total_edges);
+
+ end_pidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_end_pidsArr, starts);
+ start_pidsArr = (int64_t*)
+ pgr_get_bigIntArray(&size_start_pidsArr, ends);
+ }
+
+
+ free(edges_of_points_query);
+ free(edges_no_points_query);
+
+ if ((total_edges + total_edges_of_points) == 0) {
+ pgr_SPI_finish();
+ return;
+ }
+
+ clock_t start_t = clock();
+ char* log_msg = NULL;
+ char* notice_msg = NULL;
+ char* err_msg = NULL;
+
+ do_pgr_withPoints(
+ edges, total_edges,
+ points, total_points,
+ edges_of_points, total_edges_of_points,
+ start_pidsArr, size_start_pidsArr,
+ end_pidsArr, size_end_pidsArr,
+
+ driving_side[0],
+ details,
+ directed,
+ only_cost,
+ normal,
+
+ result_tuples, result_count,
+ &log_msg,
+ ¬ice_msg,
+ &err_msg);
+
+ if (only_cost) {
+ time_msg("processing pgr_withPointsCost(one to one)", start_t, clock());
+ } else {
+ time_msg("processing pgr_withPoints(one to one)", start_t, clock());
+ }
+
+ if (err_msg && (*result_tuples)) {
+ pfree(*result_tuples);
+ (*result_count) = 0;
+ (*result_tuples) = NULL;
+ }
+
+ pgr_global_report(log_msg, notice_msg, err_msg);
+
+#if 0
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
+ if (edges) pfree(edges);
+ if (points) pfree(points);
+ if (edges_of_points) pfree(edges_of_points);
+ if (start_pidsArr) pfree(start_pidsArr);
+ if (end_pidsArr) pfree(end_pidsArr);
+#endif
+ pgr_SPI_finish();
+}
+
+
+PGDLLEXPORT Datum
+withPoints(PG_FUNCTION_ARGS) {
+ FuncCallContext *funcctx;
+ TupleDesc tuple_desc;
+
+ /**********************************************************************/
+ General_path_element_t *result_tuples = 0;
+ size_t result_count = 0;
+ /**********************************************************************/
+
+ if (SRF_IS_FIRSTCALL()) {
+ MemoryContext oldcontext;
+ funcctx = SRF_FIRSTCALL_INIT();
+ oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
+
+
+ /**********************************************************************/
+ // CREATE OR REPLACE FUNCTION pgr_withPoint(
+ // edges_sql TEXT,
+ // points_sql TEXT,
+ // start_pid ANYARRAY,
+ // end_pids ANYARRAY,
+ // driving_side CHAR -- DEFAULT 'b',
+ // details BOOLEAN -- DEFAULT false,
+ // directed BOOLEAN -- DEFAULT true,
+ // only_cost BOOLEAN DEFAULT false,
+ // normal BOOLEAN DEFAULT true,
+
+
+ process(
+ text_to_cstring(PG_GETARG_TEXT_P(0)),
+ text_to_cstring(PG_GETARG_TEXT_P(1)),
+ PG_GETARG_ARRAYTYPE_P(2),
+ PG_GETARG_ARRAYTYPE_P(3),
+ PG_GETARG_BOOL(4),
+ text_to_cstring(PG_GETARG_TEXT_P(5)),
+ PG_GETARG_BOOL(6),
+ PG_GETARG_BOOL(7),
+ PG_GETARG_BOOL(8),
+ &result_tuples,
+ &result_count);
+
+ /**********************************************************************/
+
+#if PGSQL_VERSION > 95
+ funcctx->max_calls = result_count;
+#else
+ funcctx->max_calls = (uint32_t)result_count;
+#endif
+ funcctx->user_fctx = result_tuples;
+ if (get_call_result_type(fcinfo, NULL, &tuple_desc)
+ != TYPEFUNC_COMPOSITE)
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("function returning record called in context "
+ "that cannot accept type record")));
+
+ funcctx->tuple_desc = tuple_desc;
+ MemoryContextSwitchTo(oldcontext);
+ }
+
+ funcctx = SRF_PERCALL_SETUP();
+ tuple_desc = funcctx->tuple_desc;
+ result_tuples = (General_path_element_t*) funcctx->user_fctx;
+
+ if (funcctx->call_cntr < funcctx->max_calls) {
+ HeapTuple tuple;
+ Datum result;
+ Datum *values;
+ bool* nulls;
+
+ /**********************************************************************/
+ // OUT seq BIGINT,
+ // OUT path_seq,
+ // OUT node BIGINT,
+ // OUT edge BIGINT,
+ // OUT cost FLOAT,
+ // OUT agg_cost FLOAT)
+
+
+ values = palloc(8 * sizeof(Datum));
+ nulls = palloc(8 * sizeof(bool));
+
+ size_t i;
+ for (i = 0; i < 8; ++i) {
+ nulls[i] = false;
+ }
+
+
+ values[0] = Int32GetDatum(funcctx->call_cntr + 1);
+ values[1] = Int32GetDatum(result_tuples[funcctx->call_cntr].seq);
+ values[2] = Int64GetDatum(result_tuples[funcctx->call_cntr].start_id);
+ values[3] = Int64GetDatum(result_tuples[funcctx->call_cntr].end_id);
+ values[4] = Int64GetDatum(result_tuples[funcctx->call_cntr].node);
+ values[5] = Int64GetDatum(result_tuples[funcctx->call_cntr].edge);
+ values[6] = Float8GetDatum(result_tuples[funcctx->call_cntr].cost);
+ values[7] = Float8GetDatum(result_tuples[funcctx->call_cntr].agg_cost);
+ /**********************************************************************/
+
+ tuple = heap_form_tuple(tuple_desc, values, nulls);
+ result = HeapTupleGetDatum(tuple);
+ SRF_RETURN_NEXT(funcctx, result);
+ } else {
+ SRF_RETURN_DONE(funcctx);
+ }
+}
+
diff --git a/src/withPoints/src/withPoints_driver.cpp b/src/withPoints/src/withPoints_driver.cpp
new file mode 100644
index 0000000..dd77cc7
--- /dev/null
+++ b/src/withPoints/src/withPoints_driver.cpp
@@ -0,0 +1,251 @@
+/*PGR-GNU*****************************************************************
+File: one_to_many_withPoints_driver.cpp
+
+Generated with Template by:
+Copyright (c) 2015 pgRouting developers
+Mail: project at pgrouting.org
+
+Function's developer:
+Copyright (c) 2015 Celia Virginia Vergara Castillo
+Mail:
+
+------
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+********************************************************************PGR-GNU*/
+
+#include "drivers/withPoints/withPoints_driver.h"
+
+#include <algorithm>
+#include <sstream>
+#include <deque>
+#include <vector>
+#include <cassert>
+
+
+#include "dijkstra/pgr_dijkstra.hpp"
+#include "./pgr_withPoints.hpp"
+
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
+
+template < class G >
+std::deque< Path >
+pgr_dijkstra(
+ G &graph,
+ std::vector < int64_t > sources,
+ std::vector < int64_t > targets,
+ bool only_cost,
+ bool normal) {
+ std::sort(sources.begin(), sources.end());
+ sources.erase(
+ std::unique(sources.begin(), sources.end()),
+ sources.end());
+
+ std::sort(targets.begin(), targets.end());
+ targets.erase(
+ std::unique(targets.begin(), targets.end()),
+ targets.end());
+
+ Pgr_dijkstra< G > fn_dijkstra;
+ auto paths = fn_dijkstra.dijkstra(graph, sources, targets, only_cost);
+
+ if (!normal) {
+ for (auto &path : paths) {
+ path.reverse();
+ }
+ }
+ return paths;
+}
+
+
+// CREATE OR REPLACE FUNCTION pgr_withPoint(
+// edges_sql TEXT,
+// points_sql TEXT,
+// start_pid ANYARRAY,
+// end_pid BIGINT,
+// directed BOOLEAN DEFAULT true
+
+void
+do_pgr_withPoints(
+ pgr_edge_t *edges, size_t total_edges,
+ Point_on_edge_t *points_p, size_t total_points,
+ pgr_edge_t *edges_of_points, size_t total_edges_of_points,
+ int64_t *start_pidsArr, size_t size_start_pidsArr,
+ int64_t *end_pidsArr, size_t size_end_pidsArr,
+
+ char driving_side,
+ bool details,
+ bool directed,
+ bool only_cost,
+ bool normal,
+
+ General_path_element_t **return_tuples, size_t *return_count,
+
+ char** log_msg,
+ char** notice_msg,
+ char** err_msg) {
+ std::ostringstream log;
+ std::ostringstream notice;
+ std::ostringstream err;
+ try {
+ pgassert(!(*log_msg));
+ pgassert(!(*notice_msg));
+ pgassert(!(*err_msg));
+ pgassert(!(*return_tuples));
+ pgassert((*return_count) == 0);
+ pgassert(edges || edges_of_points);
+ pgassert(points_p);
+ pgassert(start_pidsArr);
+ pgassert(end_pidsArr);
+
+ std::vector< Point_on_edge_t >
+ points(points_p, points_p + total_points);
+
+ if (!normal) {
+ for (auto &point : points) {
+ if (point.side == 'r') {
+ point.side = 'l';
+ } else if (point.side == 'l') {
+ point.side = 'r';
+ }
+ point.fraction = 1 - point.fraction;
+ }
+ if (driving_side == 'r') {
+ driving_side = 'l';
+ } else if (driving_side == 'l') {
+ driving_side = 'r';
+ }
+ }
+
+ int errcode = check_points(points, log);
+ if (errcode) {
+ *log_msg = strdup(log.str().c_str());
+ err << "Unexpected point(s) with same pid"
+ << " but different edge/fraction/side combination found.";
+ *err_msg = pgr_msg(err.str().c_str());
+ return;
+ }
+
+
+ std::vector< pgr_edge_t >
+ edges_to_modify(
+ edges_of_points, edges_of_points + total_edges_of_points);
+
+ std::vector< pgr_edge_t > new_edges;
+ create_new_edges(
+ points,
+ edges_to_modify,
+ driving_side,
+ new_edges, log);
+
+
+ std::vector<int64_t>
+ start_vertices(start_pidsArr, start_pidsArr + size_start_pidsArr);
+ std::vector< int64_t >
+ end_vertices(end_pidsArr, end_pidsArr + size_end_pidsArr);
+
+ auto vertices(pgrouting::extract_vertices(edges, total_edges));
+ vertices = pgrouting::extract_vertices(vertices, new_edges);
+
+ graphType gType = directed? DIRECTED: UNDIRECTED;
+
+ std::deque< Path > paths;
+
+ if (directed) {
+ log << "Working with directed Graph\n";
+ pgrouting::DirectedGraph digraph(vertices, gType);
+ digraph.insert_edges(edges, total_edges);
+ digraph.insert_edges(new_edges);
+
+ paths = pgr_dijkstra(
+ digraph,
+ start_vertices, end_vertices,
+ only_cost, normal);
+ } else {
+ log << "Working with Undirected Graph\n";
+ pgrouting::UndirectedGraph undigraph(vertices, gType);
+ undigraph.insert_edges(edges, total_edges);
+ undigraph.insert_edges(new_edges);
+ paths = pgr_dijkstra(
+ undigraph,
+ start_vertices, end_vertices,
+ only_cost, normal);
+ }
+
+ if (!details) {
+ for (auto &path : paths) {
+ eliminate_details(path, edges_to_modify);
+ }
+ }
+
+ /*
+ * order paths based on the start_pid, end_pid
+ */
+ std::sort(paths.begin(), paths.end(),
+ [](const Path &a, const Path &b)
+ -> bool {
+ if (b.start_id() != a.start_id()) {
+ return a.start_id() < b.start_id();
+ }
+ return a.end_id() < b.end_id();
+ });
+
+ size_t count(0);
+ count = count_tuples(paths);
+
+
+ if (count == 0) {
+ (*return_tuples) = NULL;
+ (*return_count) = 0;
+#if 0
+ log <<
+ "No paths found";
+ *err_msg = pgr_msg(log.str().c_str());
+#endif
+ return;
+ }
+
+ (*return_tuples) = pgr_alloc(count, (*return_tuples));
+ log << "Converting a set of paths into the tuples\n";
+ (*return_count) = (collapse_paths(return_tuples, paths));
+
+ *log_msg = log.str().empty()?
+ *log_msg :
+ pgr_msg(log.str().c_str());
+ *notice_msg = notice.str().empty()?
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
+ } catch (AssertFailedException &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch (std::exception &except) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << except.what();
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ } catch(...) {
+ (*return_tuples) = pgr_free(*return_tuples);
+ (*return_count) = 0;
+ err << "Caught unknown exception!";
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
+ }
+}
diff --git a/src/withPoints/test/doc-pgr_withPoints.result b/src/withPoints/test/doc-pgr_withPoints.result
index bf762de..9ae373b 100644
--- a/src/withPoints/test/doc-pgr_withPoints.result
+++ b/src/withPoints/test/doc-pgr_withPoints.result
@@ -1,113 +1,208 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--e1
-1|1|-1|1|0.6|0
-2|2|2|4|1|0.6
-3|3|5|10|1|1.6
-4|4|10|12|0.6|2.6
-5|5|-3|-1|0|3.2
+SELECT * FROM pgr_withPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, -3);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 1 | 0.6
+ 3 | 3 | 5 | 10 | 1 | 1.6
+ 4 | 4 | 10 | 12 | 0.6 | 2.6
+ 5 | 5 | -3 | -1 | 0 | 3.2
+(5 rows)
+
--e2
-1|1|-1|1|0.6|0
-2|2|2|4|0.7|0.6
-3|3|-6|4|0.3|1.3
-4|4|5|8|1|1.6
-5|5|6|9|1|2.6
-6|6|9|16|1|3.6
-7|7|4|3|1|4.6
-8|8|3|-1|0|5.6
+SELECT * FROM pgr_withPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, 3,
+ details := true);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | 2 | 4 | 0.7 | 0.6
+ 3 | 3 | -6 | 4 | 0.3 | 1.3
+ 4 | 4 | 5 | 8 | 1 | 1.6
+ 5 | 5 | 6 | 9 | 1 | 2.6
+ 6 | 6 | 9 | 16 | 1 | 3.6
+ 7 | 7 | 4 | 3 | 1 | 4.6
+ 8 | 8 | 3 | -1 | 0 | 5.6
+(8 rows)
+
--e3
-1|1|-3|-1|1|0.6|0
-2|2|-3|2|4|1|0.6
-3|3|-3|5|10|1|1.6
-4|4|-3|10|12|0.6|2.6
-5|5|-3|-3|-1|0|3.2
-6|1|5|-1|1|0.6|0
-7|2|5|2|4|1|0.6
-8|3|5|5|-1|0|1.6
+SELECT * FROM pgr_withPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, ARRAY[-3,5]);
+ seq | path_seq | end_pid | node | edge | cost | agg_cost
+-----+----------+---------+------+------+------+----------
+ 1 | 1 | -3 | -1 | 1 | 0.6 | 0
+ 2 | 2 | -3 | 2 | 4 | 1 | 0.6
+ 3 | 3 | -3 | 5 | 10 | 1 | 1.6
+ 4 | 4 | -3 | 10 | 12 | 0.6 | 2.6
+ 5 | 5 | -3 | -3 | -1 | 0 | 3.2
+ 6 | 1 | 5 | -1 | 1 | 0.6 | 0
+ 7 | 2 | 5 | 2 | 4 | 1 | 0.6
+ 8 | 3 | 5 | 5 | -1 | 0 | 1.6
+(8 rows)
+
--e4
-1|1|-1|-1|1|0.6|0
-2|2|-1|2|4|1|0.6
-3|3|-1|5|10|1|1.6
-4|4|-1|10|12|0.6|2.6
-5|5|-1|-3|-1|0|3.2
-6|1|2|2|4|1|0
-7|2|2|5|10|1|1
-8|3|2|10|12|0.6|2
-9|4|2|-3|-1|0|2.6
+SELECT * FROM pgr_withPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[-1,2], -3);
+ seq | path_seq | start_pid | node | edge | cost | agg_cost
+-----+----------+-----------+------+------+------+----------
+ 1 | 1 | -1 | -1 | 1 | 0.6 | 0
+ 2 | 2 | -1 | 2 | 4 | 1 | 0.6
+ 3 | 3 | -1 | 5 | 10 | 1 | 1.6
+ 4 | 4 | -1 | 10 | 12 | 0.6 | 2.6
+ 5 | 5 | -1 | -3 | -1 | 0 | 3.2
+ 6 | 1 | 2 | 2 | 4 | 1 | 0
+ 7 | 2 | 2 | 5 | 10 | 1 | 1
+ 8 | 3 | 2 | 10 | 12 | 0.6 | 2
+ 9 | 4 | 2 | -3 | -1 | 0 | 2.6
+(9 rows)
+
--e5
-1|1|-1|-3|-1|1|0.6|0
-2|2|-1|-3|2|4|1|0.6
-3|3|-1|-3|5|10|1|1.6
-4|4|-1|-3|10|12|0.6|2.6
-5|5|-1|-3|-3|-1|0|3.2
-6|1|-1|7|-1|1|0.6|0
-7|2|-1|7|2|4|1|0.6
-8|3|-1|7|5|7|1|1.6
-9|4|-1|7|8|6|1|2.6
-10|5|-1|7|7|-1|0|3.6
-11|1|2|-3|2|4|1|0
-12|2|2|-3|5|10|1|1
-13|3|2|-3|10|12|0.6|2
-14|4|2|-3|-3|-1|0|2.6
-15|1|2|7|2|4|1|0
-16|2|2|7|5|7|1|1
-17|3|2|7|8|6|1|2
-18|4|2|7|7|-1|0|3
+SELECT * FROM pgr_withPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[-1,2], ARRAY[-3,7]);
+ seq | path_seq | start_pid | end_pid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | -1 | -3 | -1 | 1 | 0.6 | 0
+ 2 | 2 | -1 | -3 | 2 | 4 | 1 | 0.6
+ 3 | 3 | -1 | -3 | 5 | 10 | 1 | 1.6
+ 4 | 4 | -1 | -3 | 10 | 12 | 0.6 | 2.6
+ 5 | 5 | -1 | -3 | -3 | -1 | 0 | 3.2
+ 6 | 1 | -1 | 7 | -1 | 1 | 0.6 | 0
+ 7 | 2 | -1 | 7 | 2 | 4 | 1 | 0.6
+ 8 | 3 | -1 | 7 | 5 | 7 | 1 | 1.6
+ 9 | 4 | -1 | 7 | 8 | 6 | 1 | 2.6
+ 10 | 5 | -1 | 7 | 7 | -1 | 0 | 3.6
+ 11 | 1 | 2 | -3 | 2 | 4 | 1 | 0
+ 12 | 2 | 2 | -3 | 5 | 10 | 1 | 1
+ 13 | 3 | 2 | -3 | 10 | 12 | 0.6 | 2
+ 14 | 4 | 2 | -3 | -3 | -1 | 0 | 2.6
+ 15 | 1 | 2 | 7 | 2 | 4 | 1 | 0
+ 16 | 2 | 2 | 7 | 5 | 7 | 1 | 1
+ 17 | 3 | 2 | 7 | 8 | 6 | 1 | 2
+ 18 | 4 | 2 | 7 | 7 | -1 | 0 | 3
+(18 rows)
+
--q2
-(-1 => -6) at 4th step:| visits|Point|6
-(-1 => -3) at 4th step:| passes in front of|Point|6
-(-1 => -2) at 4th step:| passes in front of|Point|6
-(-1 => -2) at 6th step:| passes in front of|Vertex|6
-(-1 => 3) at 4th step:| passes in front of|Point|6
-(-1 => 3) at 6th step:| passes in front of|Vertex|6
-(-1 => 6) at 4th step:| passes in front of|Point|6
-(-1 => 6) at 6th step:| visits|Vertex|6
-(1 => -6) at 3th step:| visits|Point|6
-(1 => -3) at 3th step:| passes in front of|Point|6
-(1 => -2) at 3th step:| passes in front of|Point|6
-(1 => -2) at 5th step:| passes in front of|Vertex|6
-(1 => 3) at 3th step:| passes in front of|Point|6
-(1 => 3) at 5th step:| passes in front of|Vertex|6
-(1 => 6) at 3th step:| passes in front of|Point|6
-(1 => 6) at 5th step:| visits|Vertex|6
+SELECT ('(' || start_pid || ' => ' || end_pid ||') at ' || path_seq || 'th step:')::TEXT AS path_at,
+ CASE WHEN edge = -1 THEN ' visits'
+ ELSE ' passes in front of'
+ END as status,
+ CASE WHEN node < 0 THEN 'Point'
+ ELSE 'Vertex'
+ END as is_a,
+ abs(node) as id
+ FROM pgr_withPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[1,-1], ARRAY[-2,-3,-6,3,6],
+ driving_side := 'r',
+ details := true)
+ WHERE node IN (-6,6);
+ path_at | status | is_a | id
+-------------------------+---------------------+--------+----
+ (-1 => -6) at 4th step: | visits | Point | 6
+ (-1 => -3) at 4th step: | passes in front of | Point | 6
+ (-1 => -2) at 4th step: | passes in front of | Point | 6
+ (-1 => -2) at 6th step: | passes in front of | Vertex | 6
+ (-1 => 3) at 4th step: | passes in front of | Point | 6
+ (-1 => 3) at 6th step: | passes in front of | Vertex | 6
+ (-1 => 6) at 4th step: | passes in front of | Point | 6
+ (-1 => 6) at 6th step: | visits | Vertex | 6
+ (1 => -6) at 3th step: | visits | Point | 6
+ (1 => -3) at 3th step: | passes in front of | Point | 6
+ (1 => -2) at 3th step: | passes in front of | Point | 6
+ (1 => -2) at 5th step: | passes in front of | Vertex | 6
+ (1 => 3) at 3th step: | passes in front of | Point | 6
+ (1 => 3) at 5th step: | passes in front of | Vertex | 6
+ (1 => 6) at 3th step: | passes in front of | Point | 6
+ (1 => 6) at 5th step: | visits | Vertex | 6
+(16 rows)
+
--q3
-(-1 => -6) at 3th step:| visits|Point|6
-(-1 => -3) at 3th step:| passes in front of|Point|6
-(-1 => -2) at 3th step:| passes in front of|Point|6
-(-1 => -2) at 5th step:| passes in front of|Vertex|6
-(-1 => 3) at 3th step:| passes in front of|Point|6
-(-1 => 3) at 5th step:| passes in front of|Vertex|6
-(-1 => 6) at 3th step:| passes in front of|Point|6
-(-1 => 6) at 5th step:| visits|Vertex|6
-(1 => -6) at 4th step:| visits|Point|6
-(1 => -3) at 4th step:| passes in front of|Point|6
-(1 => -2) at 4th step:| passes in front of|Point|6
-(1 => -2) at 6th step:| passes in front of|Vertex|6
-(1 => 3) at 4th step:| passes in front of|Point|6
-(1 => 3) at 6th step:| passes in front of|Vertex|6
-(1 => 6) at 4th step:| passes in front of|Point|6
-(1 => 6) at 6th step:| visits|Vertex|6
+SELECT ('(' || start_pid || ' => ' || end_pid ||') at ' || path_seq || 'th step:')::TEXT AS path_at,
+ CASE WHEN edge = -1 THEN ' visits'
+ ELSE ' passes in front of'
+ END as status,
+ CASE WHEN node < 0 THEN 'Point'
+ ELSE 'Vertex'
+ END as is_a,
+ abs(node) as id
+ FROM pgr_withPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[1,-1], ARRAY[-2,-3,-6,3,6],
+ driving_side := 'l',
+ details := true)
+ WHERE node IN (-6,6);
+ path_at | status | is_a | id
+-------------------------+---------------------+--------+----
+ (-1 => -6) at 3th step: | visits | Point | 6
+ (-1 => -3) at 3th step: | passes in front of | Point | 6
+ (-1 => -2) at 3th step: | passes in front of | Point | 6
+ (-1 => -2) at 5th step: | passes in front of | Vertex | 6
+ (-1 => 3) at 3th step: | passes in front of | Point | 6
+ (-1 => 3) at 5th step: | passes in front of | Vertex | 6
+ (-1 => 6) at 3th step: | passes in front of | Point | 6
+ (-1 => 6) at 5th step: | visits | Vertex | 6
+ (1 => -6) at 4th step: | visits | Point | 6
+ (1 => -3) at 4th step: | passes in front of | Point | 6
+ (1 => -2) at 4th step: | passes in front of | Point | 6
+ (1 => -2) at 6th step: | passes in front of | Vertex | 6
+ (1 => 3) at 4th step: | passes in front of | Point | 6
+ (1 => 3) at 6th step: | passes in front of | Vertex | 6
+ (1 => 6) at 4th step: | passes in front of | Point | 6
+ (1 => 6) at 6th step: | visits | Vertex | 6
+(16 rows)
+
--q4
-1|1|-1|-3|-1|1|0.6|0
-2|2|-1|-3|2|4|0.7|0.6
-3|3|-1|-3|-6|4|0.3|1.3
-4|4|-1|-3|5|10|1|1.6
-5|5|-1|-3|10|12|0.6|2.6
-6|6|-1|-3|-3|-1|0|3.2
-7|1|-1|7|-1|1|0.6|0
-8|2|-1|7|2|4|0.7|0.6
-9|3|-1|7|-6|4|0.3|1.3
-10|4|-1|7|5|7|1|1.6
-11|5|-1|7|8|6|0.7|2.6
-12|6|-1|7|-4|6|0.3|3.3
-13|7|-1|7|7|-1|0|3.6
-14|1|2|-3|2|4|0.7|0
-15|2|2|-3|-6|4|0.3|0.7
-16|3|2|-3|5|10|1|1
-17|4|2|-3|10|12|0.6|2
-18|5|2|-3|-3|-1|0|2.6
-19|1|2|7|2|4|0.7|0
-20|2|2|7|-6|4|0.3|0.7
-21|3|2|7|5|7|1|1
-22|4|2|7|8|6|0.7|2
-23|5|2|7|-4|6|0.3|2.7
-24|6|2|7|7|-1|0|3
+SELECT * FROM pgr_withPoints(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[-1,2], ARRAY[-3,7],
+ directed := false,
+ details := true);
+ seq | path_seq | start_pid | end_pid | node | edge | cost | agg_cost
+-----+----------+-----------+---------+------+------+------+----------
+ 1 | 1 | -1 | -3 | -1 | 1 | 0.6 | 0
+ 2 | 2 | -1 | -3 | 2 | 4 | 0.7 | 0.6
+ 3 | 3 | -1 | -3 | -6 | 4 | 0.3 | 1.3
+ 4 | 4 | -1 | -3 | 5 | 10 | 1 | 1.6
+ 5 | 5 | -1 | -3 | 10 | 12 | 0.6 | 2.6
+ 6 | 6 | -1 | -3 | -3 | -1 | 0 | 3.2
+ 7 | 1 | -1 | 7 | -1 | 1 | 0.6 | 0
+ 8 | 2 | -1 | 7 | 2 | 4 | 0.7 | 0.6
+ 9 | 3 | -1 | 7 | -6 | 4 | 0.3 | 1.3
+ 10 | 4 | -1 | 7 | 5 | 7 | 1 | 1.6
+ 11 | 5 | -1 | 7 | 8 | 6 | 0.7 | 2.6
+ 12 | 6 | -1 | 7 | -4 | 6 | 0.3 | 3.3
+ 13 | 7 | -1 | 7 | 7 | -1 | 0 | 3.6
+ 14 | 1 | 2 | -3 | 2 | 4 | 0.7 | 0
+ 15 | 2 | 2 | -3 | -6 | 4 | 0.3 | 0.7
+ 16 | 3 | 2 | -3 | 5 | 10 | 1 | 1
+ 17 | 4 | 2 | -3 | 10 | 12 | 0.6 | 2
+ 18 | 5 | 2 | -3 | -3 | -1 | 0 | 2.6
+ 19 | 1 | 2 | 7 | 2 | 4 | 0.7 | 0
+ 20 | 2 | 2 | 7 | -6 | 4 | 0.3 | 0.7
+ 21 | 3 | 2 | 7 | 5 | 7 | 1 | 1
+ 22 | 4 | 2 | 7 | 8 | 6 | 0.7 | 2
+ 23 | 5 | 2 | 7 | -4 | 6 | 0.3 | 2.7
+ 24 | 6 | 2 | 7 | 7 | -1 | 0 | 3
+(24 rows)
+
--q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/withPoints/test/doc-pgr_withPointsCost.result b/src/withPoints/test/doc-pgr_withPointsCost.result
index 244d354..7930644 100644
--- a/src/withPoints/test/doc-pgr_withPointsCost.result
+++ b/src/withPoints/test/doc-pgr_withPointsCost.result
@@ -1,31 +1,105 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--e1
--1|-3|3.2
+SELECT * FROM pgr_withPointsCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, -3);
+ start_pid | end_pid | agg_cost
+-----------+---------+----------
+ -1 | -3 | 3.2
+(1 row)
+
--e2
--1|3|1.6
+SELECT * FROM pgr_withPointsCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, 3,
+ directed := false);
+ start_pid | end_pid | agg_cost
+-----------+---------+----------
+ -1 | 3 | 1.6
+(1 row)
+
--e3
--1|-3|3.2
--1|5|1.6
+SELECT * FROM pgr_withPointsCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, ARRAY[-3,5]);
+ start_pid | end_pid | agg_cost
+-----------+---------+----------
+ -1 | -3 | 3.2
+ -1 | 5 | 1.6
+(2 rows)
+
--e4
--1|-3|3.2
-2|-3|2.6
+SELECT * FROM pgr_withPointsCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[-1,2], -3);
+ start_pid | end_pid | agg_cost
+-----------+---------+----------
+ -1 | -3 | 3.2
+ 2 | -3 | 2.6
+(2 rows)
+
--e5
--1|-3|3.2
--1|7|3.6
-2|-3|2.6
-2|7|3
+SELECT * FROM pgr_withPointsCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[-1,2], ARRAY[-3,7]);
+ start_pid | end_pid | agg_cost
+-----------+---------+----------
+ -1 | -3 | 3.2
+ -1 | 7 | 3.6
+ 2 | -3 | 2.6
+ 2 | 7 | 3
+(4 rows)
+
--q2
--1|-3|3.2
--1|7|3.6
-2|-3|2.6
-2|7|3
+SELECT * FROM pgr_withPointsCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[-1,2], ARRAY[-3,7],
+ driving_side := 'l');
+ start_pid | end_pid | agg_cost
+-----------+---------+----------
+ -1 | -3 | 3.2
+ -1 | 7 | 3.6
+ 2 | -3 | 2.6
+ 2 | 7 | 3
+(4 rows)
+
--q3
--1|-3|4
--1|7|4.4
-2|-3|2.6
-2|7|3
+SELECT * FROM pgr_withPointsCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[-1,2], ARRAY[-3,7],
+ driving_side := 'r');
+ start_pid | end_pid | agg_cost
+-----------+---------+----------
+ -1 | -3 | 4
+ -1 | 7 | 4.4
+ 2 | -3 | 2.6
+ 2 | 7 | 3
+(4 rows)
+
--q4
--1|-3|3.2
--1|7|3.6
-2|-3|2.6
-2|7|3
+SELECT * FROM pgr_withPointsCost(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ ARRAY[-1,2], ARRAY[-3,7],
+ driving_side := 'b');
+ start_pid | end_pid | agg_cost
+-----------+---------+----------
+ -1 | -3 | 3.2
+ -1 | 7 | 3.6
+ 2 | -3 | 2.6
+ 2 | 7 | 3
+(4 rows)
+
--q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/withPoints/test/doc-pgr_withPointsDD.result b/src/withPoints/test/doc-pgr_withPointsDD.result
index c14b1f5..6435a0f 100644
--- a/src/withPoints/test/doc-pgr_withPointsDD.result
+++ b/src/withPoints/test/doc-pgr_withPointsDD.result
@@ -1,52 +1,96 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-1|-1|-1|0|0
-2|1|1|0.4|0.4
-3|2|1|0.6|0.6
-4|5|4|0.3|1.6
-5|6|8|1|2.6
-6|8|7|1|2.6
-7|10|10|1|2.6
-8|7|6|0.3|3.6
-9|9|9|1|3.6
-10|11|11|1|3.6
-11|13|14|1|3.6
+SELECT * FROM pgr_withPointsDD(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, 3.8);
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | -1 | -1 | 0 | 0
+ 2 | 1 | 1 | 0.4 | 0.4
+ 3 | 2 | 1 | 0.6 | 0.6
+ 4 | 5 | 4 | 0.3 | 1.6
+ 5 | 6 | 8 | 1 | 2.6
+ 6 | 8 | 7 | 1 | 2.6
+ 7 | 10 | 10 | 1 | 2.6
+ 8 | 7 | 6 | 0.3 | 3.6
+ 9 | 9 | 9 | 1 | 3.6
+ 10 | 11 | 11 | 1 | 3.6
+ 11 | 13 | 14 | 1 | 3.6
+(11 rows)
+
--q2
-1|-1|-1|0|0
-2|1|1|0.4|0.4
-3|2|1|1|1.4
-4|-6|4|0.7|2.1
-5|5|4|0.3|2.4
-6|6|8|1|3.4
-7|8|7|1|3.4
-8|10|10|1|3.4
+SELECT * FROM pgr_withPointsDD(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, 3.8,
+ driving_side := 'r',
+ details := true);
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | -1 | -1 | 0 | 0
+ 2 | 1 | 1 | 0.4 | 0.4
+ 3 | 2 | 1 | 1 | 1.4
+ 4 | -6 | 4 | 0.7 | 2.1
+ 5 | 5 | 4 | 0.3 | 2.4
+ 6 | 6 | 8 | 1 | 3.4
+ 7 | 8 | 7 | 1 | 3.4
+ 8 | 10 | 10 | 1 | 3.4
+(8 rows)
+
--q3
-1|-1|-1|0|0
-2|2|1|0.6|0.6
-3|-6|4|0.7|1.3
-4|5|4|0.3|1.6
-5|1|1|1|1.6
-6|6|8|1|2.6
-7|8|7|1|2.6
-8|10|10|1|2.6
-9|-3|12|0.6|3.2
-10|-4|6|0.7|3.3
-11|7|6|0.3|3.6
-12|9|9|1|3.6
-13|11|11|1|3.6
-14|13|14|1|3.6
+SELECT * FROM pgr_withPointsDD(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, 3.8,
+ driving_side := 'l',
+ details := true);
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | -1 | -1 | 0 | 0
+ 2 | 2 | 1 | 0.6 | 0.6
+ 3 | -6 | 4 | 0.7 | 1.3
+ 4 | 5 | 4 | 0.3 | 1.6
+ 5 | 1 | 1 | 1 | 1.6
+ 6 | 6 | 8 | 1 | 2.6
+ 7 | 8 | 7 | 1 | 2.6
+ 8 | 10 | 10 | 1 | 2.6
+ 9 | -3 | 12 | 0.6 | 3.2
+ 10 | -4 | 6 | 0.7 | 3.3
+ 11 | 7 | 6 | 0.3 | 3.6
+ 12 | 9 | 9 | 1 | 3.6
+ 13 | 11 | 11 | 1 | 3.6
+ 14 | 13 | 14 | 1 | 3.6
+(14 rows)
+
--q4
-1|-1|-1|0|0
-2|1|1|0.4|0.4
-3|2|1|0.6|0.6
-4|-6|4|0.7|1.3
-5|5|4|0.3|1.6
-6|6|8|1|2.6
-7|8|7|1|2.6
-8|10|10|1|2.6
-9|-3|12|0.6|3.2
-10|-4|6|0.7|3.3
-11|7|6|0.3|3.6
-12|9|9|1|3.6
-13|11|11|1|3.6
-14|13|14|1|3.6
+SELECT * FROM pgr_withPointsDD(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, 3.8,
+ driving_side := 'b',
+ details := true);
+ seq | node | edge | cost | agg_cost
+-----+------+------+------+----------
+ 1 | -1 | -1 | 0 | 0
+ 2 | 1 | 1 | 0.4 | 0.4
+ 3 | 2 | 1 | 0.6 | 0.6
+ 4 | -6 | 4 | 0.7 | 1.3
+ 5 | 5 | 4 | 0.3 | 1.6
+ 6 | 6 | 8 | 1 | 2.6
+ 7 | 8 | 7 | 1 | 2.6
+ 8 | 10 | 10 | 1 | 2.6
+ 9 | -3 | 12 | 0.6 | 3.2
+ 10 | -4 | 6 | 0.7 | 3.3
+ 11 | 7 | 6 | 0.3 | 3.6
+ 12 | 9 | 9 | 1 | 3.6
+ 13 | 11 | 11 | 1 | 3.6
+ 14 | 13 | 14 | 1 | 3.6
+(14 rows)
+
--q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/withPoints/test/doc-pgr_withPointsKSP.result b/src/withPoints/test/doc-pgr_withPointsKSP.result
index d956f34..965c8dc 100644
--- a/src/withPoints/test/doc-pgr_withPointsKSP.result
+++ b/src/withPoints/test/doc-pgr_withPointsKSP.result
@@ -1,79 +1,119 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
--q1
-1|1|1|-1|1|0.6|0
-2|1|2|2|4|1|0.6
-3|1|3|5|8|1|1.6
-4|1|4|6|9|1|2.6
-5|1|5|9|15|0.4|3.6
-6|1|6|-2|-1|0|4
-7|2|1|-1|1|0.6|0
-8|2|2|2|4|1|0.6
-9|2|3|5|8|1|1.6
-10|2|4|6|11|1|2.6
-11|2|5|11|13|1|3.6
-12|2|6|12|15|0.6|4.6
-13|2|7|-2|-1|0|5.2
+SELECT * FROM pgr_withPointsKSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, -2, 2);
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 1 | 2 | 2 | 4 | 1 | 0.6
+ 3 | 1 | 3 | 5 | 8 | 1 | 1.6
+ 4 | 1 | 4 | 6 | 9 | 1 | 2.6
+ 5 | 1 | 5 | 9 | 15 | 0.4 | 3.6
+ 6 | 1 | 6 | -2 | -1 | 0 | 4
+ 7 | 2 | 1 | -1 | 1 | 0.6 | 0
+ 8 | 2 | 2 | 2 | 4 | 1 | 0.6
+ 9 | 2 | 3 | 5 | 8 | 1 | 1.6
+ 10 | 2 | 4 | 6 | 11 | 1 | 2.6
+ 11 | 2 | 5 | 11 | 13 | 1 | 3.6
+ 12 | 2 | 6 | 12 | 15 | 0.6 | 4.6
+ 13 | 2 | 7 | -2 | -1 | 0 | 5.2
+(13 rows)
+
--q2
-1|1|1|-1|1|0.6|0
-2|1|2|2|4|0.7|0.6
-3|1|3|-6|4|0.3|1.3
-4|1|4|5|8|1|1.6
-5|1|5|6|-1|0|2.6
-6|2|1|-1|1|0.6|0
-7|2|2|2|4|0.7|0.6
-8|2|3|-6|4|0.3|1.3
-9|2|4|5|10|1|1.6
-10|2|5|10|12|0.6|2.6
-11|2|6|-3|12|0.4|3.2
-12|2|7|11|13|1|3.6
-13|2|8|12|15|0.6|4.6
-14|2|9|-2|15|0.4|5.2
-15|2|10|9|9|1|5.6
-16|2|11|6|-1|0|6.6
+SELECT * FROM pgr_withPointsKSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, 6, 2, details := true);
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 1 | 2 | 2 | 4 | 0.7 | 0.6
+ 3 | 1 | 3 | -6 | 4 | 0.3 | 1.3
+ 4 | 1 | 4 | 5 | 8 | 1 | 1.6
+ 5 | 1 | 5 | 6 | -1 | 0 | 2.6
+ 6 | 2 | 1 | -1 | 1 | 0.6 | 0
+ 7 | 2 | 2 | 2 | 4 | 0.7 | 0.6
+ 8 | 2 | 3 | -6 | 4 | 0.3 | 1.3
+ 9 | 2 | 4 | 5 | 10 | 1 | 1.6
+ 10 | 2 | 5 | 10 | 12 | 0.6 | 2.6
+ 11 | 2 | 6 | -3 | 12 | 0.4 | 3.2
+ 12 | 2 | 7 | 11 | 13 | 1 | 3.6
+ 13 | 2 | 8 | 12 | 15 | 0.6 | 4.6
+ 14 | 2 | 9 | -2 | 15 | 0.4 | 5.2
+ 15 | 2 | 10 | 9 | 9 | 1 | 5.6
+ 16 | 2 | 11 | 6 | -1 | 0 | 6.6
+(16 rows)
+
--q3
-1|1|1|-1|1|0.6|0
-2|1|2|2|4|0.7|0.6
-3|1|3|-6|4|0.3|1.3
-4|1|4|5|8|1|1.6
-5|1|5|6|9|1|2.6
-6|1|6|9|15|1|3.6
-7|1|7|12|15|0.6|4.6
-8|1|8|-2|-1|0|5.2
-9|2|1|-1|1|0.6|0
-10|2|2|2|4|0.7|0.6
-11|2|3|-6|4|0.3|1.3
-12|2|4|5|8|1|1.6
-13|2|5|6|11|1|2.6
-14|2|6|11|13|1|3.6
-15|2|7|12|15|0.6|4.6
-16|2|8|-2|-1|0|5.2
+SELECT * FROM pgr_withPointsKSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, -2, 2,
+ driving_side := 'l', details := true);
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | -1 | 1 | 0.6 | 0
+ 2 | 1 | 2 | 2 | 4 | 0.7 | 0.6
+ 3 | 1 | 3 | -6 | 4 | 0.3 | 1.3
+ 4 | 1 | 4 | 5 | 8 | 1 | 1.6
+ 5 | 1 | 5 | 6 | 9 | 1 | 2.6
+ 6 | 1 | 6 | 9 | 15 | 1 | 3.6
+ 7 | 1 | 7 | 12 | 15 | 0.6 | 4.6
+ 8 | 1 | 8 | -2 | -1 | 0 | 5.2
+ 9 | 2 | 1 | -1 | 1 | 0.6 | 0
+ 10 | 2 | 2 | 2 | 4 | 0.7 | 0.6
+ 11 | 2 | 3 | -6 | 4 | 0.3 | 1.3
+ 12 | 2 | 4 | 5 | 8 | 1 | 1.6
+ 13 | 2 | 5 | 6 | 11 | 1 | 2.6
+ 14 | 2 | 6 | 11 | 13 | 1 | 3.6
+ 15 | 2 | 7 | 12 | 15 | 0.6 | 4.6
+ 16 | 2 | 8 | -2 | -1 | 0 | 5.2
+(16 rows)
+
--q4
-1|1|1|-1|1|0.4|0
-2|1|2|1|1|1|0.4
-3|1|3|2|4|0.7|1.4
-4|1|4|-6|4|0.3|2.1
-5|1|5|5|8|1|2.4
-6|1|6|6|9|1|3.4
-7|1|7|9|15|0.4|4.4
-8|1|8|-2|-1|0|4.8
-9|2|1|-1|1|0.4|0
-10|2|2|1|1|1|0.4
-11|2|3|2|4|0.7|1.4
-12|2|4|-6|4|0.3|2.1
-13|2|5|5|8|1|2.4
-14|2|6|6|11|1|3.4
-15|2|7|11|13|1|4.4
-16|2|8|12|15|1|5.4
-17|2|9|9|15|0.4|6.4
-18|2|10|-2|-1|0|6.8
-19|3|1|-1|1|0.4|0
-20|3|2|1|1|1|0.4
-21|3|3|2|4|0.7|1.4
-22|3|4|-6|4|0.3|2.1
-23|3|5|5|10|1|2.4
-24|3|6|10|12|0.6|3.4
-25|3|7|-3|12|0.4|4
-26|3|8|11|13|1|4.4
-27|3|9|12|15|1|5.4
-28|3|10|9|15|0.4|6.4
-29|3|11|-2|-1|0|6.8
+SELECT * FROM pgr_withPointsKSP(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
+ 'SELECT pid, edge_id, fraction, side from pointsOfInterest',
+ -1, -2, 2,
+ heap_paths := true, driving_side := 'r', details := true);
+ seq | path_id | path_seq | node | edge | cost | agg_cost
+-----+---------+----------+------+------+------+----------
+ 1 | 1 | 1 | -1 | 1 | 0.4 | 0
+ 2 | 1 | 2 | 1 | 1 | 1 | 0.4
+ 3 | 1 | 3 | 2 | 4 | 0.7 | 1.4
+ 4 | 1 | 4 | -6 | 4 | 0.3 | 2.1
+ 5 | 1 | 5 | 5 | 8 | 1 | 2.4
+ 6 | 1 | 6 | 6 | 9 | 1 | 3.4
+ 7 | 1 | 7 | 9 | 15 | 0.4 | 4.4
+ 8 | 1 | 8 | -2 | -1 | 0 | 4.8
+ 9 | 2 | 1 | -1 | 1 | 0.4 | 0
+ 10 | 2 | 2 | 1 | 1 | 1 | 0.4
+ 11 | 2 | 3 | 2 | 4 | 0.7 | 1.4
+ 12 | 2 | 4 | -6 | 4 | 0.3 | 2.1
+ 13 | 2 | 5 | 5 | 8 | 1 | 2.4
+ 14 | 2 | 6 | 6 | 11 | 1 | 3.4
+ 15 | 2 | 7 | 11 | 13 | 1 | 4.4
+ 16 | 2 | 8 | 12 | 15 | 1 | 5.4
+ 17 | 2 | 9 | 9 | 15 | 0.4 | 6.4
+ 18 | 2 | 10 | -2 | -1 | 0 | 6.8
+ 19 | 3 | 1 | -1 | 1 | 0.4 | 0
+ 20 | 3 | 2 | 1 | 1 | 1 | 0.4
+ 21 | 3 | 3 | 2 | 4 | 0.7 | 1.4
+ 22 | 3 | 4 | -6 | 4 | 0.3 | 2.1
+ 23 | 3 | 5 | 5 | 10 | 1 | 2.4
+ 24 | 3 | 6 | 10 | 12 | 0.6 | 3.4
+ 25 | 3 | 7 | -3 | 12 | 0.4 | 4
+ 26 | 3 | 8 | 11 | 13 | 1 | 4.4
+ 27 | 3 | 9 | 12 | 15 | 1 | 5.4
+ 28 | 3 | 10 | 9 | 15 | 0.4 | 6.4
+ 29 | 3 | 11 | -2 | -1 | 0 | 6.8
+(29 rows)
+
--q5
+ROLLBACK;
+ROLLBACK
diff --git a/src/withPoints/test/test.conf b/src/withPoints/test/test.conf
index b1aa9a4..6215de6 100644
--- a/src/withPoints/test/test.conf
+++ b/src/withPoints/test/test.conf
@@ -14,6 +14,7 @@
doc-pgr_withPointsCost
doc-pgr_withPointsDD
doc-pgr_withPointsKSP
+ doc-pgr_withPointsVia
)],
'linux' => [qw(
doc-pgr_withPointsKSP
diff --git a/tools/build-extension-update-files.pl b/tools/build-extension-update-files.pl
deleted file mode 100755
index 6d95b23..0000000
--- a/tools/build-extension-update-files.pl
+++ /dev/null
@@ -1,277 +0,0 @@
-#!/usr/bin/perl -w
-eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
- if 0; #$running_under_some_shell
-
-# -------------------------------------------------------------
-# Usage: build-extension-update-files <version> [<pgrouting-src-dir>]
-#
-# Author: Stephen Woodbridge
-# Date: 2015-07-25
-# License: MIT-X
-# -------------------------------------------------------------
-# Description
-#
-# This script read a file from lib/pgrouting--<version>.sig
-# that should be the .sig for the current version of the extension.
-# lib/pgrouting--<version>.sig
-#
-# It then looks in tools/sigs/pgrouting--<old_version>.sig and
-# creates an update script for each version found. The update scripts
-# are written to:
-# build/lib/pgrouting--<old_version>--<current_version>.sql
-# and "sudo make install" will install them as part of the extension.
-#
-# Algorithm
-# 1. check if lib/pgrouting--<version>.sig exists and load it
-# 2. get a list of version signatures from tools/sigs/*
-# 3. foreach old version sig file
-# 4. generate an update file in lib/
-#
-# This is part of the automated pgRouting extension update
-# system that PostgreSQL require a collection of files that define
-# how to update an old version of pgRouting to the current version
-# using "ALTER EXTENSION pgrouting UPDATE TO <version>;"
-# The lib/pgrouting--<current_version>.sig and the update scripts
-# are automatically generated when when cmake is run. You don't
-# need to run this script manually.
-#
-# See also tools/mk-signature-file
-# ------------------------------------------------------------
-
-use strict;
-use Data::Dumper;
-use File::Find ();
-
-my $DEBUG = 0;
-
-use vars qw/*name *dir *prune/;
-*name = *File::Find::name;
-*dir = *File::Find::dir;
-*prune = *File::Find::prune;
-
-
-sub Usage {
- die "Usage: build-extension-update-files <version> [<pgrouting-src-dir>]\n";
-}
-
-print "Building the updating files\n";
-# get the commandline options
-# these are typically set by cmake
-my $version = shift @ARGV || Usage();
-my $src_dir = shift @ARGV || '.';
-
-# define the input file names and verify they exist.
-my $SIG = "lib/pgrouting--$version.sig";
-my $SQL = "lib/pgrouting--$version.sql";
-die "ERROR: Failed to find '$SIG'\n" unless -f $SIG;
-die "ERROR: Failed to find '$SQL'\n" unless -f $SQL;
-
-# collect a list of the old version .sig files
-my @old_files = ();
-
-# read and parse the current version .sig file
-my $new_hash = read_sig_file( $SIG );
-
-# assume we are in the build dir, but we might be up one level
-# if we are somewhere else we will fail to find the files
-my $sig_dir = 'tools/sigs/';
-$sig_dir = '../tools/sigs/' if -d '../tools/sigs';
-$sig_dir = $src_dir . '/tools/sigs/' if -d $src_dir . '/tools/sigs';
-
-# search for the old version .sig files in $sig_dir
-# and save the /path/file.sig into @old_files
-File::Find::find({wanted => \&wanted}, $sig_dir);
-
-# foreach old files
-for my $old_file ( sort @old_files ) {
- print "\ngenerating $old_file upgrade file\n" if $DEBUG;
- # read and parse the .sig
- my $old_hash = read_sig_file( $old_file );
- # and generate and write the update script file
- generate_upgrade_script( $new_hash, $old_hash);
-}
-
-exit 0;
-
-
-sub wanted {
- /^.*\.sig\z/s &&
- ! /^pgrouting--$version.sig\z/s &&
- push @old_files, $name;
-}
-
-# read and parse the .sig file and store the results into hash
-sub read_sig_file {
- my $file = shift;
-
- my %hash = ();
-
- open(IN, $file) || die "ERROR: Failed to open '$file'\n";
-
- my $state = 0;
- while (my $line = <IN>) {
- if ($line =~ /^#VERSION pgrouting (\d+\.\d+\.\d+)\s*$/i) {
- $hash{VERSION} = $1;
- }
- elsif ($line =~ /^#TYPES\s*/i) {
- $state = 1;
- next;
- }
- elsif ($line =~ /^#FUNCTIONS\s*/i) {
- $state = 2;
- next;
- }
- elsif ($line =~ /^#/) {
- next;
- }
- $line =~ s/\s*$//;
- if ($state == 1) {
- push @{$hash{types}}, $line;
- }
- elsif ($state == 2) {
- push @{$hash{funcs}}, $line;
- }
- }
- close(IN);
-
- return \%hash;
-}
-
-# analyze the old .sig hash as compared to the new .sig hash
-# and create an update script file for its version.
-sub generate_upgrade_script {
- my ($new, $old) = @_;
-
- my $err = 0;
- my @types2remove = ();
- my @commands = ();
-
- # fetch the VERSION numbers
- my $n_ver = $new->{VERSION};
- my $o_ver = $old->{VERSION};
-
-
-
- # analyze function sigs
-
- my $nsig = $new->{funcs};
- my $osig = $old->{funcs};
-
- # create an unique hash map of the new signatures
- # to quickly determine if an old signature exists or not
- # in the new signatures.
- my %fmap = map { $_ => 1 } @{$nsig};
-
- for my $x (@{$osig}) {
-
- # see if the old signature is in the new signature map
- my $exists = $fmap{$x} || '0';
- print "$exists\t$x\n" if $DEBUG;
-
- # if the function does NOT exist in the current version
- # then it needs to be removed from the extension
- if (! $exists) {
- print "ALTER EXTENSION pgrouting DROP FUNCTION $x;\n" if $DEBUG;
- push @commands, "ALTER EXTENSION pgrouting DROP FUNCTION $x;\n";
- }
-
- # otherwise we only need to drop in case an argument name change
- # so it will not fail on create or replace function
- print "DROP FUNCTION IF EXISTS $x;\n" if $DEBUG;
- push @commands, "DROP FUNCTION IF EXISTS $x;\n";
- }
-
- # analyze types
-
- my $ntype = $new->{types};
- my $otype = $old->{types};
-
- # create a hash like <name> => <column_list> for new types
- my %ntype_h = ();
- for my $x (@{$ntype}) {
- #$x =~ m/(\w+)(\([^\)]+\))$/;
- $ntype_h{lc($x)} = lc($x);
- }
-
- # check if old type exists with different column types
- for my $x (@{$otype}) {
- my $name = lc($x);
- if (!exists $ntype_h{$name}) {
- #types no longer used are droped form the extension
- push @commands, "ALTER EXTENSION pgrouting DROP TYPE $name;\n";
- push @commands, "DROP TYPE $name;\n";
- } else {
- push @types2remove, $name;
- }
- }
-
- # UGH! someone change the definition of the TYPE or reused an existing
- # TYPE name which is VERY BAD because other poeple might be dependent
- # on the old TYPE so we can DROP TYPE <type> CASCADE; or we might drop
- # a user's function. So juse DIE and maybe someone can resolve this
- die "ERROR: pgrouting TYPE changed! Cannot continue!\n" if $err;
-
- write_script($o_ver, $n_ver, \@types2remove, join('', @commands));
-}
-
-
-# we have all the data we need, so write the extension update script
-sub write_script {
- my ($o_ver, $n_ver, $types, $cmds) = @_;
-
- # open the extension update script or die if we can't
- open(OUT, ">lib/pgrouting--$o_ver--$n_ver.sql")
- || die "ERROR: failed to create 'lib/pgrouting-pgrouting--$o_ver--$n_ver.sql' : $!\n";
-
- # write out the header and the commands to clean up the old extension
- print OUT <<EOF;
--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--- pgRouting extension upgrade from $o_ver to $n_ver
--- generated by tools/build-extension-update-files
--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--- remove functions no longer in the $n_ver extension
-$cmds
-
--- now install the new extension
-
-EOF
-
- # open the new extension.sql file
- # and load it into an array
- open(IN, $SQL) ||
- die "ERROR: Failed to find '$SQL' : $!\n";
- my @file = <IN>;
- close(IN);
-
- # comment out the TYPEs that the new extension defines
- # that already existed in the old extension
- # so they will not abort the script
- remove_types( \@file, $types );
-
- # append the new extension SQL to the update script
- print OUT @file;
- close(OUT);
- print " -- Created lib/pgrouting--$o_ver--$n_ver.sql\n";
-}
-
-
-sub remove_types {
- my ($data, $types) = @_;
-
- for my $type (@{$types}) {
- my $state = 1;
- for my $x (@{$data}) {
- if ($state == 1) {
- next unless $x =~ m/create\s+type\s+$type\b/i;
- $x = "-- $x";
- $state = 2
- unless $x =~ m/create\s+type\s+$type\s+as\s*\([^\)]+\)/i;
- }
- elsif ($state == 2) {
- $x = "-- $x";
- last if $x =~ /\)\s*;/;
- }
- }
- }
-}
-
diff --git a/tools/developer/run.sh b/tools/developer/run.sh
new file mode 100755
index 0000000..7514469
--- /dev/null
+++ b/tools/developer/run.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+
+#
+# base script for developers
+# copy to the root of the repository
+#
+
+set -e
+
+if [ -z $1 ]; then
+ echo "version missing"
+ exit 1;
+fi
+
+VERSION=$1
+
+
+function test_compile {
+
+echo ------------------------------------
+echo ------------------------------------
+echo Compiling with $1
+echo ------------------------------------
+
+sudo update-alternatives --set gcc /usr/bin/gcc-$1
+
+cd build/
+# Release RelWithDebInfo MinSizeRel Debug
+cmake -DDOC_USE_BOOTSTRAP=ON -DWITH_DOC=ON -DBUILD_DOXY=ON -DCMAKE_BUILD_TYPE=Debug ..
+
+
+#cmake -DWITH_DOC=ON -DBUILD_DOXY=ON ..
+#cmake -DCMAKE_VERBOSE_MAKEFILE=ON ..
+make doxy
+make doc
+make
+sudo make install
+cd ..
+
+
+#tools/testers/algorithm-tester.pl -alg dijkstra
+#tools/testers/algorithm-tester.pl -alg dijkstra -debug1 >result.txt
+
+# Verify with git diff that signatures did not change
+#sh tools/release-scripts/get_signatures.sh $VERSION ____sigs_routing____ sql/sigs
+#cp build/sql/pgrouting--*.sql tools/sql-update-scripts
+if [[ $(git status | grep 'pgrouting--') ]]; then
+ echo "**************************************************"
+ echo " WARNING"
+ echo "the signatures changed, copying generated files"
+ echo "Plese verify the changes are minimal"
+ echo "**************************************************"
+ git diff
+fi
+
+
+tools/testers/algorithm-tester.pl -documentation
+cd build
+rm -rf doc/*
+make doc
+cd ..
+
+
+tools/testers/algorithm-tester.pl
+
+dropdb --if-exists ___pgr___test___
+createdb ___pgr___test___
+sh ./tools/testers/pg_prove_tests.sh vicky
+dropdb ___pgr___test___
+
+#tools/testers/update-tester.sh
+
+}
+
+#test_compile 4.4
+#rm -rf build/*
+#test_compile 5
+#rm -rf build/*
+#test_compile 4.9
+#rm -rf build/*
+#test_compile 4.6
+#sudo rm -f /usr/lib/postgresql/9.3/lib/libpgrouting-2.5.so
+#sudo rm -f /usr/share/postgresql/9.3/extension/pgrouting*2.5.0*
+#rm -rf build/*
+test_compile 4.8
+
+exit 0
+
+gource --seconds-per-day 0.1 \
+ --auto-skip-seconds 0.3 \
+ --max-file-lag 0.1 \
+ --logo doc/static/images/pgrouting-logo.png ---date-format "%B %Y" \
+ --hide filenames,dirnames \
+ --start-position 0.1 \
+ --disable-auto-rotate \
+ ----file-idle-time 10 \
+ -f -1280x720 \
+ --output-ppm-stream release-2.4.ppm
+
+ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i release-2.4.ppm -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 release-2.4.mp4
diff --git a/tools/developer/translate.sh b/tools/developer/translate.sh
new file mode 100755
index 0000000..68523cf
--- /dev/null
+++ b/tools/developer/translate.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+set -e
+
+
+cd build/
+rm -rf *
+cmake -DHTML=ON -DDOC_USE_BOOTSTRAP=ON ..
+make doc
+cd ..
+
+
+#tools/testers/algorithm-tester.pl -alg pickDeliver
+
+#tools/testers/algorithm-tester.pl -documentation
+cd build
+#make doc
+cd ..
+
+
+
+exit 0
+
+gource --seconds-per-day 0.1 \
+ --auto-skip-seconds 0.3 \
+ --max-file-lag 0.1 \
+ --logo doc/static/images/pgrouting-logo.png ---date-format "%B %Y" \
+ --hide filenames,dirnames \
+ --start-position 0.1 \
+ --disable-auto-rotate \
+ ----file-idle-time 10 \
+ -f -1280x720 \
+ --output-ppm-stream release-2.4.ppm
+
+ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i release-2.4.ppm -vcodec libx264 -preset ultrafast -pix_fmt yuv420p -crf 1 -threads 0 -bf 0 release-2.4.mp4
diff --git a/tools/doit b/tools/doit
deleted file mode 100755
index 012491b..0000000
--- a/tools/doit
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-# ------------------------------------------------------------------------------
-# Build script
-# Copyright(c) pgRouting Contributors
-#
-# This script builds and install pgRouting
-# ------------------------------------------------------------------------------
-rm -rf build
-mkdir build
-cd build
-cmake -DBUILD_LATEX=OFF -DWITH_DOC=ON -DWITH_DD=ON ..
-#cmake -DWITH_DD=ON ..
-make all doc && sudo make install && (cd ..; tools/test-runner.pl -clean)
-mkdir -p /u/www/imaptools/docs/pgr2-doc/
-rsync -a doc/html/* /u/www/imaptools/docs/pgr2-doc/.
-ln -sf /u/www/imaptools/docs/pgr2-doc/. /u/www/imaptools/docs/pgr2-doc/dev
-gzip -c doc/man/en/pgrouting.7 > doc/man/en/pgrouting.7.gz
-for x in `ls doc/latex` ; do
- mkdir -p /u/www/html/pgr2-doc/$x/.
- rsync -a doc/latex/$x/pgRoutingDocumentation.pdf /u/www/html/pgr2-doc/$x/.
- rsync -a doc/man/en/pgrouting.7.gz /u/www/html/pgr2-doc/$x/.
-done
-sudo install -t /usr/share/man/man7 doc/man/en/pgrouting.7.gz
diff --git a/tools/git-tools/pre-commit b/tools/git-tools/pre-commit
index d703cce..1eb5ec3 100755
--- a/tools/git-tools/pre-commit
+++ b/tools/git-tools/pre-commit
@@ -15,11 +15,32 @@
# The VERSION file is always one commit behind HEAD
# ------------------------------------------------------------------------------
-if [[ $BRANCH != "gh-pages" ]]
+if [[ $BRANCH == "gh-pages" ]]
+then
+ exit 0
+fi
+
+NOTES=`git diff HEAD --name-only doc/src/release_notes.rst`
+NOTES2NEWS=`git diff HEAD --name-only tools/release-scripts/notes2news.pl`
+NEWS=`git diff HEAD --name-only NEWS`
+
+if [[ "b$NOTES" == "bdoc/src/release_notes.rst" || "b$NOTES2NEWS" == "btools/release-scripts/notes2news.pl" || "b$NEWS" == "NEWS" ]]
+then
+ echo "CHANGED: 'doc/src/release_notes.rst' or 'tools/release-scripts/notes2news.pl' or 'NEWS'"
+ echo "Regenerating NEWS"
+ $GIT_DIR/../tools/release-scripts/notes2news.pl
+ git add $GIT_DIR/../doc/src/release_notes.rst
+ git add $GIT_DIR/../tools/release-scripts/notes2news.pl
+ git add $GIT_DIR/../NEWS
+fi
+
+
+
+COMMITS=`git rev-list HEAD --count`
+HASH=`git rev-parse --short HEAD`
+BRANCH=`git branch | grep '*' | awk '{print $2}'`
+if [[ $BRANCH == "develop" ]]
then
- COMMITS=`git rev-list HEAD --count`
- HASH=`git rev-parse --short HEAD`
- BRANCH=`git branch | grep '*' | awk '{print $2}'`
echo $COMMITS-$HASH $BRANCH > $GIT_DIR/../VERSION
git add $GIT_DIR/../VERSION
fi
diff --git a/tools/publish-doc.sh b/tools/publish-doc.sh
index d005e87..8a5f983 100755
--- a/tools/publish-doc.sh
+++ b/tools/publish-doc.sh
@@ -5,6 +5,7 @@
#
# Publish Documentation
# ------------------------------------------------------------------------------
+
if test a$1 = a ; then
echo "Usage: publish-doc.sh dir"
echo " where dir might be dev or v2.0"
diff --git a/tools/release-scripts/check-release.sh b/tools/release-scripts/check-release.sh
index 284b405..dfc4c32 100755
--- a/tools/release-scripts/check-release.sh
+++ b/tools/release-scripts/check-release.sh
@@ -2,63 +2,119 @@
set -e
+#---------------------------------------------------------------------
+# Functions used in the script
+function error_msg() {
+
+ echo "*****************************************************"
+ echo "*****************************************************"
+ echo "*****************************************************"
+ echo
+ echo
+ echo "FATAL: $1"
+ echo
+ echo
+ echo
+ echo "*****************************************************"
+ echo "*****************************************************"
+}
+
+function git_no_change {
+
+if [[ $(git status | grep 'Changes not staged for commit:') ]]; then
+ error_msg " There are changes staged on git"
+ echo
+ echo "HINT: Verify the changes and commit them"
+ echo
+ echo
+ sleep 5
+ git status
+ echo "*****************************************************"
+ echo "*****************************************************"
+ exit 1
+fi
+
+}
+
+function test_file {
+
+if [ -f sql/sigs/pgrouting--$1.sig ]
+then
+ echo "- [x] sql/sigs/pgrouting--$1.sig"
+else
+ error_msg " FATAL: tools/sigs/pgrouting--$1.sig Not found"
+ exit 1
+fi
+}
+
+
+#---------------------------------------------------------------------
+
+
if [[ -z $1 ]]; then
echo "Mayor missing";
echo "Usage"
- echo "tools/release-scripts/release-check.sh Mayor Minor Micro Last [branch]";
+ echo "tools/release-scripts/release-check.sh Mayor Minor Micro Last branch RC DEBUG";
exit 1;
fi
if [[ -z $2 ]]; then
echo "Minor missing";
echo "Usage"
- echo "tools/release-scripts/release-check.sh Mayor Minor Micro Last [branch]";
+ echo "tools/release-scripts/release-check.sh Mayor Minor Micro Last branch RC DEBUG";
exit 1;
fi
if [[ -z $3 ]]; then
echo "Micro missing";
echo "Usage"
- echo "tools/release-scripts/release-check.sh Mayor Minor Micro Last [branch]";
+ echo "tools/release-scripts/release-check.sh Mayor Minor Micro Last branch RC DEBUG";
exit 1;
fi
if [[ -z $4 ]]; then
echo "Last Micro missing";
echo "Usage"
- echo "tools/release-scripts/release-check.sh Mayor Minor Micro Last [branch]";
+ echo "tools/release-scripts/release-check.sh Mayor Minor Micro Last branch RC DEBUG";
exit 1;
fi
+if [[ -z $5 ]]; then
+ echo "branch missing";
+ echo "Usage"
+ echo "tools/release-scripts/release-check.sh Mayor Minor Micro Last branch RC DEBUG";
+ exit 1;
+fi
+
MAYOR=$1
MINOR=$2
MICRO=$3
PREV_REL=$4
-RC=""
+BRANCH=$5
+RC=$6
+DEBUG=$7
-if [[ -z $5 ]]; then
- BRANCH="release/$MAYOR.$MINOR"
-else
- BRANCH=$5
+
+if [[ -z "$DEBUG" ]]; then
+ git_no_change
fi
+echo - [x] No files changed before execution.
+echo
+
#---------------------------------------------------------------------
echo "### Verify branch to be $BRANCH"
echo
#---------------------------------------------------------------------
GIT_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
-echo "- [x] Working Branch: $BRANCH";
-echo
if [[ "$GIT_BRANCH" == "$BRANCH" ]]; then
- echo " - [x] Already in branch $BRANCH";
+ echo "- [x] Already in branch $BRANCH";
+ echo
else
- echo " - Current Branch: $BRANCH";
- echo "\`\`\`"
- echo git checkout $BRANCH
- echo "\`\`\`"
- exit 1
+ error_msg "Current Branch is not: $BRANCH"
+ exit 1
fi
#---------------------------------------------------------------------
@@ -67,179 +123,160 @@ echo "### Verify typos"
echo
#---------------------------------------------------------------------
-echo "\`\`\`"
-echo sh tools/scripts/fix_typos.sh
-echo "\`\`\`"
+if [[ -n $DEBUG ]]; then
+ echo
+ echo "\`\`\`"
+ echo sh tools/scripts/fix_typos.sh
+ echo "\`\`\`"
+ echo
+fi
sh tools/scripts/fix_typos.sh
-if [[ $? != 0 ]]; then
- echo "FATAL: Typos were found"
- exit 1
-else
- echo "- [x] Typos checked: OK"
+if [[ -z "$DEBUG" ]]; then
+ git_no_change
fi
+echo "- [x] No typos found by script"
+
#---------------------------------------------------------------------
echo
-echo "### Verify Current NEWS & CHANGLOG"
+echo "### Verify release_notes.rst & NEWS"
echo
#---------------------------------------------------------------------
-echo
-echo "- [x] Checking NEWS section $MAYOR.$MINOR.$MICRO exists"
-echo "\`\`\`"
-echo "grep $MAYOR.$MINOR.$MICRO NEWS"
-echo "\`\`\`"
-CURRENTNEWS=$(grep $MAYOR.$MINOR.$MICRO NEWS)
-if [[ $? != 0 ]]; then
- echo "FATAL: Section $MAYOR.$MINOR.$MICRO in NEWS file is missing"
- exit 1
-else
- echo
+
+if [[ -n $DEBUG ]]; then
+ echo
+ echo "\`\`\`"
+ echo "grep $MAYOR.$MINOR.$MICRO doc/src/release_notes.rst | grep ref"
+ echo "grep $PREV_REL doc/src/release_notes.rst | grep ref"
+ echo "tools/release-scripts/notes2news.pl"
+ echo "\`\`\`"
+ echo
fi
-
-echo "- [x] Checking release_notes.rst file section $MAYOR.$MINOR.$MICRO exists"
-echo "\`\`\`"
-echo "grep $MAYOR.$MINOR.$MICRO doc/src/release_notes.rst | grep ref"
-echo "\`\`\`"
CURRENTNEWS=$(grep $MAYOR.$MINOR.$MICRO doc/src/release_notes.rst | grep ref)
if [[ $? != 0 ]]; then
- echo "FATAL: Section $MAYOR.$MINOR.$MICRO in release_notes.rst file are missing"
+ error_msg "Section $MAYOR.$MINOR.$MICRO in release_notes.rst file is missing"
exit 1
else
- echo
+ echo "- [x] release_notes.rst section $MAYOR.$MINOR.$MICRO exists"
fi
-
-#---------------------------------------------------------------------
-echo
-echo "### Verify $PREV_REL NEWS & CHANGLOG"
-echo
-#---------------------------------------------------------------------
-
-echo "- [x] Checking NEWS section $PREV_REL exists"
-echo "\`\`\`"
-echo "grep $PREV_REL NEWS"
-echo "\`\`\`"
-OLDNEWS=$(grep $PREV_REL NEWS)
+OLDNEWS=$(grep $PREV_REL doc/src/release_notes.rst | grep ref)
if [[ $? != 0 ]]; then
- echo "$PREV_REL NEWS are missing in NEWS file"
+ error_msg "Section $PREV_REL in release_notes.rst file is missing"
exit 1
else
- echo
+ echo "- [x] release_notes.rst section $PREV_REL exists"
fi
-echo "- [x] Checking release_notes.rst section $PREV_REL exists"
-echo "\`\`\`"
-grep $PREV_REL doc/src/release_notes.rst | grep ref
-echo "\`\`\`"
-OLDNEWS=$(grep $PREV_REL doc/src/release_notes.rst | grep ref)
-if [[ $? != 0 ]]; then
- echo "$PREV_REL NEWS are missing in release_notes.rst file"
- exit 1
-else
- echo
+tools/release-scripts/notes2news.pl
+
+if [[ -z "$DEBUG" ]]; then
+ git_no_change
fi
+echo "- [x] NEWS is up to date"
#---------------------------------------------------------------------
echo
-echo "### Check version information"
+echo "## Check version information"
echo
#---------------------------------------------------------------------
-echo "- [x] Check mayor information"
-echo "\`\`\`"
-echo "cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_MAJOR \"$MAYOR\")'"
-echo "\`\`\`"
+#---------------------------------------------------------------------
+echo
+echo "- CMakeLists"
+#---------------------------------------------------------------------
+
+if [[ -n $DEBUG ]]; then
+ echo "\`\`\`"
+ echo "cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_MAJOR \"$MAYOR\")'"
+ echo "cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_MINOR \"$MINOR\")'"
+ echo "cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_PATCH \"$MICRO\")'"
+ echo "cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_DEV \"$RC\")'"
+ echo "\`\`\`"
+fi
+
if [[ $(cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_MAJOR' | grep $MAYOR) != "set(PGROUTING_VERSION_MAJOR \"$MAYOR\")" ]]; then
- echo "FATAL: PGROUTING_VERSION_MAJOR is not $MAYOR"
+ error_msg "FATAL: PGROUTING_VERSION_MAJOR is not '$MAYOR' ... Verify CMakeLists.txt"
exit 1
else
- echo
+ echo " - [x] mayor information is OK"
fi
-echo "- [x] Check minor information"
-echo "\`\`\`"
-echo "cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_MINOR \"$MINOR\")'"
-echo "\`\`\`"
if [[ $(cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_MINOR' | grep $MINOR) != "set(PGROUTING_VERSION_MINOR \"$MINOR\")" ]]; then
- echo "FATAL: PGROUTING_VERSION_MINOR is not $MINOR"
+ error_msg "FATAL: PGROUTING_VERSION_MINOR is not '$MINOR' ... Verify CMakeLists.txt"
exit 1
else
- echo
+ echo " - [x] Check minor information is OK"
fi
-echo "- [x] Check patch information"
-echo "\`\`\`"
-echo "cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_PATCH \"$MICRO\")'"
-echo "\`\`\`"
if [[ $(cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_PATCH' | grep $MICRO) != "set(PGROUTING_VERSION_PATCH \"$MICRO\")" ]]; then
- echo "FATAL: PGROUTING_VERSION_PATCH is not $MICRO"
+ error_msg "FATAL: PGROUTING_VERSION_PATCH is not '$MICRO' ... Verify CMakeLists.txt"
exit 1
else
- echo
+ echo " - [x] Check patch information is OK"
fi
-echo "\`\`\`"
-echo "cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_DEV \"$RC\")'"
-echo "\`\`\`"
if [[ $(cat CMakeLists.txt | grep 'set(PGROUTING_VERSION_DEV' ) != "set(PGROUTING_VERSION_DEV \"$RC\")" ]]; then
- echo "FATAL: PGROUTING_VERSION_DEV is not $RC"
+ error_msg "FATAL: PGROUTING_VERSION_DEV is not '$RC' ... Verify CMakeLists.txt"
exit 1
else
- echo "- [x] Check dev information"
- echo
+ echo " - [x] Check dev information is OK"
fi
#---------------------------------------------------------------------
-echo
-echo "### Check pgr_version test result"
-echo
+
+echo "- src/common/test/doc-pgr_version.result"
+
#---------------------------------------------------------------------
-echo "\`\`\`"
-echo "cat doc/test/utilities-any.result | grep \"$MAYOR.$MINOR.$MICRO\""
-echo "\`\`\`"
-if [[ $(cat doc/test/utilities-any.result | grep "$MAYOR.$MINOR.$MICRO") != "$MAYOR.$MINOR.$MICRO" ]]; then
- echo "FATAL: doc/test/utilities-any.result is not $MAYOR.$MINOR.$MICRO"
- exit 1
-else
- echo "- [x] pgr_version result: OK"
- echo
+if [[ -n $DEBUG ]]; then
+ echo "\`\`\`"
+ echo "cat src/common/test/doc-pgr_version.result | grep \"$MAYOR.$MINOR.$MICRO\""
+ echo "\`\`\`"
fi
-echo "\`\`\`"
-echo "cat VERSION | grep \"$BRANCH\""
-echo "\`\`\`"
-if [[ $(cat VERSION | grep "$BRANCH") != *"$BRANCH" ]]; then
- echo "FATAL: VERSION branch should be $BRANCH"
+if [[ $(cat src/common/test/doc-pgr_version.result | grep "$MAYOR.$MINOR.$MICRO") != " $MAYOR.$MINOR.$MICRO" ]]; then
+ error_msg "src/common/test/doc-pgr_version.result is not $MAYOR.$MINOR.$MICRO"
exit 1
else
- echo " -[x] VERSION file branch: OK"
- echo
+ echo " - [x] src/common/test/doc-pgr_version.result"
fi
#---------------------------------------------------------------------
-function test_file {
-if [ -f tools/sigs/pgrouting--$1.sig ]
-then
- echo "- [x] tools/sigs/pgrouting--$1.sig"
+echo "- VERSION"
+
+#---------------------------------------------------------------------
+
+if [[ -n $DEBUG ]]; then
+ echo "\`\`\`"
+ echo "cat VERSION | grep \"release/$MAYOR.$MINOR\""
+ echo "\`\`\`"
+fi
+
+if [[ $(cat VERSION | grep "release/$MAYOR.$MINOR") != *"release/$MAYOR.$MINOR" ]]; then
+ error_msg "VERSION should have release/$MAYOR.$MINOR"
+ exit 1
else
- echo " FATAL: tools/sigs/pgrouting--$1.sig Not found"
+ echo " -[x] VERSION file branch: OK"
fi
-}
#---------------------------------------------------------------------
+echo
echo "### Checking signature files"
+echo
+#---------------------------------------------------------------------
+test_file $PREV_REL
test_file 2.4.1
test_file 2.4.0
test_file 2.3.2
@@ -256,20 +293,28 @@ test_file 2.0.0
#---------------------------------------------------------------------
+echo
echo "### Locally make a clean build as Release"
+echo
#---------------------------------------------------------------------
-echo "\`\`\`"
-echo "bash tools/release-scripts/compile-release.sh 5 $MAYOR.$MINOR $MICRO"
-echo "bash tools/release-scripts/compile-release.sh 4.9 $MAYOR.$MINOR $MICRO"
-echo "bash tools/release-scripts/compile-release.sh 4.6 $MAYOR.$MINOR $MICRO"
-echo "bash tools/release-scripts/compile-release.sh 4.8 $MAYOR.$MINOR $MICRO"
-echo "\`\`\`"
+if [[ -n $DEBUG ]]; then
+ echo "\`\`\`"
+ echo "bash tools/release-scripts/compile-release.sh 5 $MAYOR.$MINOR $MICRO"
+ echo "bash tools/release-scripts/compile-release.sh 4.9 $MAYOR.$MINOR $MICRO"
+ echo "bash tools/release-scripts/compile-release.sh 4.6 $MAYOR.$MINOR $MICRO"
+ echo "bash tools/release-scripts/compile-release.sh 4.8 $MAYOR.$MINOR $MICRO"
+ echo "\`\`\`"
+fi
-bash tools/release-scripts/compile-release.sh 5 $MAYOR.$MINOR $MICRO
-bash tools/release-scripts/compile-release.sh 4.9 $MAYOR.$MINOR $MICRO
-bash tools/release-scripts/compile-release.sh 4.6 $MAYOR.$MINOR $MICRO
-bash tools/release-scripts/compile-release.sh 4.8 $MAYOR.$MINOR $MICRO
+if [[ "$BRANCH" == "develop" || $BRANCH == "master" || $BRANCH == "release/$MAYOR.$MINOR" ]]; then
+ if [[ -z "$DEBUG" ]]; then
+ bash tools/release-scripts/compile-release.sh 4.9 $MAYOR.$MINOR $MICRO
+ bash tools/release-scripts/compile-release.sh 4.6 $MAYOR.$MINOR $MICRO
+ bash tools/release-scripts/compile-release.sh 5 $MAYOR.$MINOR $MICRO
+ fi
+fi
+bash tools/release-scripts/compile-release.sh 4.8 $MAYOR.$MINOR $MICRO
echo - [x] completed local builds
@@ -277,21 +322,22 @@ echo - [x] completed local builds
echo "### checking the signature files dont change"
#---------------------------------------------------------------------
-sh tools/release-scripts/get_signatures.sh 2.4.2 ___sig_generate___ curr-sig >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.4.1 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.4.0 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.3.2 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.3.1 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.3.0 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.2.4 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.2.3 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.2.2 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.2.1 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.2.0 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.1.0 ___sig_generate___ sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.5.0 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.4.2 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.4.1 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.4.0 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.3.2 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.3.1 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.3.0 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.2.4 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.2.3 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.2.2 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.2.1 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.2.0 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.1.0 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
#version 2.0.1 can not be upgraded
-#sh tools/release-scripts/get_signatures.sh 2.0.1 ___sig_generate___ sigs >> build/tmp_sigs.txt
-sh tools/release-scripts/get_signatures.sh 2.0.0 ___sig_generate___ sigs >> build/tmp_sigs.txt
+#sh tools/release-scripts/get_signatures.sh 2.0.1 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
+sh tools/release-scripts/get_signatures.sh 2.0.0 ___sig_generate___ sql/sigs >> build/tmp_sigs.txt
echo
echo - [x] completed check: OK
@@ -318,7 +364,7 @@ echo "\`\`\`"
echo tools/testers/algorithm-tester.pl -documentation
echo git status
echo "\`\`\`"
-tools/testers/algorithm-tester.pl -documentation > build/tmp_generate_doc.txt
+tools/testers/algorithm-tester.pl -documentation
if [[ $? != 0 ]]; then
echo "FATAL errors found generating documentation result files"
exit 1
diff --git a/tools/release-scripts/compile-release.sh b/tools/release-scripts/compile-release.sh
index 234f12f..939a35f 100755
--- a/tools/release-scripts/compile-release.sh
+++ b/tools/release-scripts/compile-release.sh
@@ -2,6 +2,27 @@
set -e
+if [[ -z $1 ]]; then
+ echo "Cpp version missing";
+ echo "Usage:"
+ echo "tools/release-scripts/compile-release.sh Cpp Minor Micro";
+ exit 1;
+fi
+
+if [[ -z $1 ]]; then
+ echo "Minor missing";
+ echo "Usage:"
+ echo "tools/release-scripts/compile-release.sh Cpp Minor Micro";
+ exit 1;
+fi
+
+if [[ -z $1 ]]; then
+ echo "Micro missing";
+ echo "Usage:"
+ echo "tools/release-scripts/compile-release.sh Cpp Minor Micro";
+ exit 1;
+fi
+
CPPVERSION=$1
MINOR=$2
MICRO=$3
@@ -9,10 +30,11 @@ FULL_VER="$MINOR.$MICRO"
function test_compile {
-echo ------------------------------------
-echo ------------------------------------
+echo
+echo
echo Compiling with $1
echo ------------------------------------
+echo
sudo update-alternatives --set gcc /usr/bin/gcc-$1
@@ -20,17 +42,24 @@ cd build/
touch tmp_make.txt
touch tmp_make_err.txt
cmake -DDOC_USE_BOOTSTRAP=ON -DWITH_DOC=ON -DBUILD_DOXY=ON -DCMAKE_BUILD_TYPE=Release .. >> tmp_make.txt
+
+if [[ "$1" == "4.8" ]]; then
+ make doc >> tmp_make.txt
+ echo " - [x] Build Users documentation"
+ make doxy >> tmp_make.txt
+ echo " - [x] Build developers documentation"
+fi
+
make >> tmp_make.txt 2>>tmp_make_err.txt
sudo make install >> tmp_make.txt
-cp lib/pgrouting--$FULL_VER.sig ../tools/curr-sig/
cd ..
-echo " - [x] Compilation OK"
+echo " - [x] Compilation"
tools/testers/algorithm-tester.pl >> build/tmp_make.txt
-echo " - [x] Documentation tests OK"
+echo " - [x] Documentation tests"
dropdb --if-exists ___pgr___test___
@@ -40,6 +69,8 @@ dropdb ___pgr___test___
echo ' - [x] Pgtap tests OK'
if [[ "$1" == "4.8" ]]; then
+ tools/testers/algorithm-tester.pl -documentation >> build/tmp_make.txt
+ echo " - [x] Regenerating Users documentation queries OK"
cd build
make doc >> tmp_make.txt
echo " - [x] Build Users documentation OK"
diff --git a/tools/release-scripts/get_signatures.sh b/tools/release-scripts/get_signatures.sh
index d5dde28..3d601d5 100755
--- a/tools/release-scripts/get_signatures.sh
+++ b/tools/release-scripts/get_signatures.sh
@@ -4,10 +4,11 @@ set -e
if [ "$#" -lt 3 ] ; then
echo "Usage: getSignatures.sh VERSION DB_ARGS"
- echo " VERSION like '2.4.0'"
- echo " DB_NAME like 'routing'"
- echo " DIR: 'curr-sig' OR 'sigs'"
+ echo " VERSION like '2.5.0'"
+ echo " DB_NAME like 'routing' (will be deleted if it exists)"
+ echo " DIR: 'sql/sigs' is relative to the root of the repository"
echo " (optional) DB_ARGS like -U postgres -h localhost -p 5432 "
+ echo "Exeute from the root of the repository"
exit 0
fi
@@ -19,9 +20,10 @@ shift
shift
# DB_ARGS is the remaining of the arguments
-FILE=tools/$DIR/pgrouting--$VERSION.sig
+FILE=$DIR/pgrouting--$VERSION.sig
#FILE=test.sig
+dropdb --if-exists $* $DB_NAME
createdb $* $DB_NAME
psql $* $DB_NAME <<EOF
diff --git a/tools/scripts/code_checker.sh b/tools/scripts/code_checker.sh
index 992049b..b4dd3fb 100644
--- a/tools/scripts/code_checker.sh
+++ b/tools/scripts/code_checker.sh
@@ -38,17 +38,10 @@ if ! test -d code_linter; then
cd ../..
fi
-DIRECTORY=$1
+DIRECTORY="$1"
+
if test -z "$DIRECTORY"; then
echo --------------------
- echo ------ *.h ------
- echo --------------------
- python code_linter/styleguide/cpplint/cpplint.py src/*/src/*.h
- echo --------------------
- echo ------ *.hpp ------
- echo --------------------
- python code_linter/styleguide/cpplint/cpplint.py --extensions=hpp --headers=hpp --filter=-runtime/references src/*/src/*.hpp
- echo --------------------
echo ------ *.c ------
echo --------------------
python code_linter/styleguide/cpplint/cpplint.py --extensions=c src/*/src/*.c
@@ -56,23 +49,54 @@ if test -z "$DIRECTORY"; then
echo ------ *.cpp ------
echo --------------------
python code_linter/styleguide/cpplint/cpplint.py --filter=-runtime/references src/*/src/*.cpp
-else
- echo --------------------
- echo ------ *.c ------
echo --------------------
- python code_linter/styleguide/cpplint/cpplint.py --extensions=c --filter=-readability/casting src/$DIRECTORY/src/*.c
+ echo ------ HEADERS ------
echo --------------------
- echo ------ *.cpp ------
- echo --------------------
- python code_linter/styleguide/cpplint/cpplint.py --filter=-runtime/references src/$DIRECTORY/src/*.cpp
+ python code_linter/styleguide/cpplint/cpplint.py --extensions=hpp,h --headers=hpp,h --filter=-runtime/references \
+ src/*/src/*.h \
+ src/*/src/*.hpp \
+ include/*/*.h* \
+ include/*/*/*.h*
+
+else
+ if [ "$DIRECTORY" = "h" ]; then
echo --------------------
- echo ------ *.h ------
+ echo ------ OUT OF PLACE HEADERS ------
echo --------------------
- python code_linter/styleguide/cpplint/cpplint.py src/$DIRECTORY/src/*.h
+ python code_linter/styleguide/cpplint/cpplint.py --extensions=hpp,h --headers=hpp,h --filter=-runtime/references \
+ src/*/src/*.h*
+
echo --------------------
- echo ------ *.hpp ------
+ echo ------ IN PLACE HEADERS ------
echo --------------------
- python code_linter/styleguide/cpplint/cpplint.py --extensions=hpp --headers=hpp --filter=-runtime/references src/$DIRECTORY/src/*.hpp
-fi
+ python code_linter/styleguide/cpplint/cpplint.py --extensions=hpp,h --headers=hpp,h --filter=-runtime/references \
+ include/*/*.h* \
+ include/*/*/*.h*
+ else
+ echo --------------------
+ echo ------ *.c ------
+ echo --------------------
+ python code_linter/styleguide/cpplint/cpplint.py --extensions=c --filter=-readability/casting src/$DIRECTORY/src/*.c
+ echo --------------------
+ echo ------ *.cpp ------
+ echo --------------------
+ python code_linter/styleguide/cpplint/cpplint.py --filter=-runtime/references src/$DIRECTORY/src/*.cpp
+ echo --------------------
+ echo ------ C HEADER ------
+ echo --------------------
+ python code_linter/styleguide/cpplint/cpplint.py \
+ include/drivers/$DIRECTORY/*.h \
+ include/c_types/$DIRECTORY/*.h
+
+ echo --------------------
+ echo ------ C++ HEADER ------
+ echo --------------------
+ python code_linter/styleguide/cpplint/cpplint.py --extensions=hpp,h --headers=hpp --filter=-runtime/references include/$DIRECTORY/*.h*
+ echo --------------------
+ echo ------ this shouild fail ------
+ echo --------------------
+ python code_linter/styleguide/cpplint/cpplint.py src/$DIRECTORY/src/*.h*
+ fi
+fi
diff --git a/tools/scripts/fix_typos.sh b/tools/scripts/fix_typos.sh
index c35b6db..6ab4f2f 100644
--- a/tools/scripts/fix_typos.sh
+++ b/tools/scripts/fix_typos.sh
@@ -48,11 +48,18 @@ fi
EXCLUDED_FILES="*/doc/i18n/*"
EXCLUDED_FILES="$EXCLUDED_FILES,*/src/*/test/pgtap/*"
+EXCLUDED_FILES="$EXCLUDED_FILES,*/pgtap/*"
EXCLUDED_FILES="$EXCLUDED_FILES,*/fix_typos/*"
EXCLUDED_FILES="$EXCLUDED_FILES,*/build/*"
+EXCLUDED_FILES="$EXCLUDED_FILES,*/src/trsp/tester/*"
EXCLUDED_FILES="$EXCLUDED_FILES,*/code_linter/*"
EXCLUDED_FILES="$EXCLUDED_FILES,*/.git/*"
EXCLUDED_FILES="$EXCLUDED_FILES,*/tools/*"
+EXCLUDED_FILES="$EXCLUDED_FILES,*/locale/*"
+EXCLUDED_FILES="$EXCLUDED_FILES,*/doc/*.queries"
+EXCLUDED_FILES="$EXCLUDED_FILES,*/test/*.result"
+EXCLUDED_FILES="$EXCLUDED_FILES,*/test/*.data"
+EXCLUDED_FILES="$EXCLUDED_FILES,*/src/tsp/test/development/*"
#WORDS_WHITE_LIST="poSession,FIDN,TRAFIC,HTINK,repID,oCurr,INTREST,oPosition"
diff --git a/tools/sql-update-scripts/pgrouting--2.0.0--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.0.0--2.5.0.sql
new file mode 100644
index 0000000..67342e4
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.0.0--2.5.0.sql
@@ -0,0 +1,6575 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.0.0 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_alphashape(text);
+DROP FUNCTION IF EXISTS pgr_alphashape(text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_createtopology(text,double precision,text,text,text,text,text);
+DROP FUNCTION IF EXISTS pgr_createtopology(text,double precision,text,text,text,text,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_drivingdistance(text,integer,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_drivingdistance(text,integer,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_makedistancematrix(text);
+DROP FUNCTION IF EXISTS pgr_makedistancematrix(text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_nodenetwork(text,double precision,text,text,text);
+DROP FUNCTION IF EXISTS pgr_nodenetwork(text,double precision,text,text,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_pointsaspolygon(character varying);
+DROP FUNCTION IF EXISTS pgr_pointsaspolygon(character varying);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_pointtoid(geometry,double precision,text,integer);
+DROP FUNCTION IF EXISTS pgr_pointtoid(geometry,double precision,text,integer);
+
+
+ ------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.1
+-- Deprecated: 2.1
+------------------------------------------
+-- pgr_dijkstra:
+-- 2.0.0: { sql, source_id, target_id, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_dijkstra(text,integer,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_dijkstra(text,integer,integer,boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Deprecated: 2.1
+-- Deprecated: 2.1 & 2.2
+------------------------------------------
+-- pgr_ksp
+-- 2.0.0: { sql, source_id, target_id, no_paths,has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, k, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_ksp(text,integer,integer,integer,boolean);
+DROP FUNCTION IF EXISTS pgr_ksp(text,integer,integer,integer,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.2
+-- Deprecated: 2.2
+------------------------------------------
+-- pgr_apspjohnson
+-- 2.0.0: { sql}
+-- 2.5.0: {edges_sql}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_apspjohnson(text);
+DROP FUNCTION IF EXISTS pgr_apspjohnson(text);
+
+
+-- pgr_apspwarshall
+-- 2.0.0: { sql, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_apspwarshall(text,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_apspwarshall(text,boolean,boolean);
+
+
+-- pgr_kdijkstrapath
+-- 2.0.0: {sql,source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {sql, source, targets, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_kdijkstrapath(text,integer,integer[],boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_kdijkstrapath(text,integer,integer[],boolean,boolean);
+
+
+-- pgr_kdijkstracost
+-- 2.0.0: {sql,source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {sql, source, targets, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_kdijkstracost(text,integer,integer[],boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_kdijkstracost(text,integer,integer[],boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.2
+------------------------------------------
+-- pgr_version
+-- 2.0.0: {version,tag,build,hash,branch,boost}
+-- 2.5.0: {version,tag,hash,branch,boost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_version();
+DROP FUNCTION IF EXISTS pgr_version();
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.2
+------------------------------------------
+-- pgr_trsp
+-- 2.0.0: { sql, source_vid, target_vid, directed, has_reverse_cost, turn_restrict_sql}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost","restrictions_sql"}'
+WHERE proname = 'pgr_trsp'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost","turn_restrict_sql"}';
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.0.0: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New functions on 2.0
+-- Signature change on 2.3
+-- Deprecated on 2.4
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_astar(text,integer,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_astar(text,integer,integer,boolean,boolean);
+
+
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.0.1--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.0.1--2.5.0.sql
new file mode 100644
index 0000000..d8a065b
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.0.1--2.5.0.sql
@@ -0,0 +1,6575 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.0.1 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_alphashape(text);
+DROP FUNCTION IF EXISTS pgr_alphashape(text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_createtopology(text,double precision,text,text,text,text,text);
+DROP FUNCTION IF EXISTS pgr_createtopology(text,double precision,text,text,text,text,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_drivingdistance(text,integer,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_drivingdistance(text,integer,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_makedistancematrix(text);
+DROP FUNCTION IF EXISTS pgr_makedistancematrix(text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_nodenetwork(text,double precision,text,text,text);
+DROP FUNCTION IF EXISTS pgr_nodenetwork(text,double precision,text,text,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_pointsaspolygon(character varying);
+DROP FUNCTION IF EXISTS pgr_pointsaspolygon(character varying);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_pointtoid(geometry,double precision,text,integer);
+DROP FUNCTION IF EXISTS pgr_pointtoid(geometry,double precision,text,integer);
+
+
+ ------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.1
+-- Deprecated: 2.1
+------------------------------------------
+-- pgr_dijkstra:
+-- 2.0.1: { sql, source_id, target_id, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_dijkstra(text,integer,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_dijkstra(text,integer,integer,boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Deprecated: 2.1
+-- Deprecated: 2.1 & 2.2
+------------------------------------------
+-- pgr_ksp
+-- 2.0.1: { sql, source_id, target_id, no_paths,has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, k, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_ksp(text,integer,integer,integer,boolean);
+DROP FUNCTION IF EXISTS pgr_ksp(text,integer,integer,integer,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.2
+-- Deprecated: 2.2
+------------------------------------------
+-- pgr_apspjohnson
+-- 2.0.1: { sql}
+-- 2.5.0: {edges_sql}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_apspjohnson(text);
+DROP FUNCTION IF EXISTS pgr_apspjohnson(text);
+
+
+-- pgr_apspwarshall
+-- 2.0.1: { sql, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_apspwarshall(text,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_apspwarshall(text,boolean,boolean);
+
+
+-- pgr_kdijkstrapath
+-- 2.0.1: {sql,source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {sql, source, targets, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_kdijkstrapath(text,integer,integer[],boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_kdijkstrapath(text,integer,integer[],boolean,boolean);
+
+
+-- pgr_kdijkstracost
+-- 2.0.1: {sql,source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {sql, source, targets, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_kdijkstracost(text,integer,integer[],boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_kdijkstracost(text,integer,integer[],boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.2
+------------------------------------------
+-- pgr_version
+-- 2.0.1: {version,tag,build,hash,branch,boost}
+-- 2.5.0: {version,tag,hash,branch,boost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_version();
+DROP FUNCTION IF EXISTS pgr_version();
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.2
+------------------------------------------
+-- pgr_trsp
+-- 2.0.1: { sql, source_vid, target_vid, directed, has_reverse_cost, turn_restrict_sql}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost","restrictions_sql"}'
+WHERE proname = 'pgr_trsp'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost","turn_restrict_sql"}';
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.0.1: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New functions on 2.0
+-- Signature change on 2.3
+-- Deprecated on 2.4
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_astar(text,integer,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_astar(text,integer,integer,boolean,boolean);
+
+
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.1.0--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.1.0--2.5.0.sql
new file mode 100644
index 0000000..d486786
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.1.0--2.5.0.sql
@@ -0,0 +1,6673 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.1.0 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,bigint,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,bigint,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_drivingdistance(text,bigint,double precision);
+DROP FUNCTION IF EXISTS pgr_drivingdistance(text,bigint,double precision);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_makedistancematrix(text);
+DROP FUNCTION IF EXISTS pgr_makedistancematrix(text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_nodenetwork(text,double precision,text,text,text);
+DROP FUNCTION IF EXISTS pgr_nodenetwork(text,double precision,text,text,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_trsp(text,integer[],boolean,boolean,text);
+DROP FUNCTION IF EXISTS pgr_trsp(text,integer[],boolean,boolean,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_trsp(text,integer[],double precision[],boolean,boolean,text);
+DROP FUNCTION IF EXISTS pgr_trsp(text,integer[],double precision[],boolean,boolean,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_trspviavertices(text,integer[],boolean,boolean,text);
+DROP FUNCTION IF EXISTS pgr_trspviavertices(text,integer[],boolean,boolean,text);
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.2
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_ksp(text,bigint,bigint,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_ksp(text,bigint,bigint,integer,boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Deprecated: 2.1
+-- Deprecated: 2.1 & 2.2
+------------------------------------------
+-- pgr_ksp
+-- 2.1.0: { sql, start_vid, end_vid, k, has_rcost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, k, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_ksp(text,integer,integer,integer,boolean);
+DROP FUNCTION IF EXISTS pgr_ksp(text,integer,integer,integer,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.2
+-- Deprecated: 2.2
+------------------------------------------
+-- pgr_apspjohnson
+-- 2.1.0: { sql}
+-- 2.5.0: {edges_sql}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_apspjohnson(text);
+DROP FUNCTION IF EXISTS pgr_apspjohnson(text);
+
+
+-- pgr_apspwarshall
+-- 2.1.0: { sql, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_apspwarshall(text,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_apspwarshall(text,boolean,boolean);
+
+
+-- pgr_kdijkstrapath
+-- 2.1.0: {sql,source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {sql, source, targets, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_kdijkstrapath(text,integer,integer[],boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_kdijkstrapath(text,integer,integer[],boolean,boolean);
+
+
+-- pgr_kdijkstracost
+-- 2.1.0: {sql,source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {sql, source, targets, directed, has_rcost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_kdijkstracost(text,integer,integer[],boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_kdijkstracost(text,integer,integer[],boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.2
+------------------------------------------
+-- pgr_version
+-- 2.1.0: {version,tag,build,hash,branch,boost}
+-- 2.5.0: {version,tag,hash,branch,boost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_version();
+DROP FUNCTION IF EXISTS pgr_version();
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.2
+------------------------------------------
+-- pgr_trsp
+-- 2.1.0: { sql, source_vid, target_vid, directed, has_reverse_cost, turn_restrict_sql}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost","restrictions_sql"}'
+WHERE proname = 'pgr_trsp'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost","turn_restrict_sql"}';
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature (types) change: 2.2
+------------------------------------------
+-- pgr_trspviaedges
+-- 2.1.0: {sql, eids, pcts, directed, has_reverse_cost,turn_restrict_sql}
+-- 2.5.0: {sql, eids, pcts, directed, has_rcost, turn_restrict_sql}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text);
+DROP FUNCTION IF EXISTS pgr_trspviaedges(text,integer[],double precision[],boolean,boolean,text);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.1.0: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New function: 2.1
+-- (types) change: 2.3
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_gsoc_vrppdtw(text,integer,integer);
+DROP FUNCTION IF EXISTS pgr_gsoc_vrppdtw(text,integer,integer);
+
+
+
+
+------------------------------------------
+-- New functions on 2.0
+-- Signature change on 2.3
+-- Deprecated on 2.4
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_astar(text,integer,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_astar(text,integer,integer,boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.2
+------------------------------------------
+-- pgr_ksp
+-- 2.1.0: { sql, start_vid, end_vid, k, directed, heap_paths, seq, path_id, path_seq, node,edge, cost, agg_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, k, directed, heap_paths, seq, path_id, path_seq, node,edge, cost, agg_cost}
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_ksp(text,bigint,bigint,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_ksp(text,bigint,bigint,integer,boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.1
+------------------------------------------
+-- 2.1.0: {sql,source,distance,directed,has_rcost}
+-- 2.5.0: {edges_sql,source,distance,directed,has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","source","distance","directed","has_rcost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","source","distance","directed","has_rcost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.1.0: { sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vid,distance,directed,seq,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","distance","directed","seq","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","start_v","distance","directed","seq","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.1.0: {sql, start_v, distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vids,distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vids","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","start_v","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}';
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.2.0--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.2.0--2.5.0.sql
new file mode 100644
index 0000000..71975f2
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.2.0--2.5.0.sql
@@ -0,0 +1,6527 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.2.0 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,bigint,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,bigint,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.2.0: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New function: 2.1
+-- (types) change: 2.3
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_gsoc_vrppdtw(text,integer,integer);
+DROP FUNCTION IF EXISTS pgr_gsoc_vrppdtw(text,integer,integer);
+
+
+
+
+------------------------------------------
+-- New functions on 2.0
+-- Signature change on 2.3
+-- Deprecated on 2.4
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_astar(text,integer,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_astar(text,integer,integer,boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.2.0: {edges_sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vid,distance,directed,seq,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","distance","directed","seq","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"edges_sql","start_v","distance","directed","seq","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.2.0: {sql, start_v, distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vids,distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vids","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","start_v","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}';
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.2.1--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.2.1--2.5.0.sql
new file mode 100644
index 0000000..9310b24
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.2.1--2.5.0.sql
@@ -0,0 +1,6527 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.2.1 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,bigint,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,bigint,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.2.1: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New function: 2.1
+-- (types) change: 2.3
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_gsoc_vrppdtw(text,integer,integer);
+DROP FUNCTION IF EXISTS pgr_gsoc_vrppdtw(text,integer,integer);
+
+
+
+
+------------------------------------------
+-- New functions on 2.0
+-- Signature change on 2.3
+-- Deprecated on 2.4
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_astar(text,integer,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_astar(text,integer,integer,boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.2.1: {edges_sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vid,distance,directed,seq,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","distance","directed","seq","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"edges_sql","start_v","distance","directed","seq","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.2.1: {sql, start_v, distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vids,distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vids","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","start_v","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}';
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.2.2--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.2.2--2.5.0.sql
new file mode 100644
index 0000000..0e8e60d
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.2.2--2.5.0.sql
@@ -0,0 +1,6527 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.2.2 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,bigint,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,bigint,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.2.2: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New function: 2.1
+-- (types) change: 2.3
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_gsoc_vrppdtw(text,integer,integer);
+DROP FUNCTION IF EXISTS pgr_gsoc_vrppdtw(text,integer,integer);
+
+
+
+
+------------------------------------------
+-- New functions on 2.0
+-- Signature change on 2.3
+-- Deprecated on 2.4
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_astar(text,integer,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_astar(text,integer,integer,boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.2.2: {edges_sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vid,distance,directed,seq,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","distance","directed","seq","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"edges_sql","start_v","distance","directed","seq","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.2.2: {sql, start_v, distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vids,distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vids","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","start_v","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}';
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.2.3--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.2.3--2.5.0.sql
new file mode 100644
index 0000000..80d2078
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.2.3--2.5.0.sql
@@ -0,0 +1,6527 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.2.3 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,bigint,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,bigint,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.2.3: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New function: 2.1
+-- (types) change: 2.3
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_gsoc_vrppdtw(text,integer,integer);
+DROP FUNCTION IF EXISTS pgr_gsoc_vrppdtw(text,integer,integer);
+
+
+
+
+------------------------------------------
+-- New functions on 2.0
+-- Signature change on 2.3
+-- Deprecated on 2.4
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_astar(text,integer,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_astar(text,integer,integer,boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.2.3: {edges_sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vid,distance,directed,seq,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","distance","directed","seq","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"edges_sql","start_v","distance","directed","seq","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.2.3: {sql, start_v, distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vids,distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vids","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","start_v","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}';
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.2.4--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.2.4--2.5.0.sql
new file mode 100644
index 0000000..979241c
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.2.4--2.5.0.sql
@@ -0,0 +1,6527 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.2.4 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,bigint,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,bigint,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.2.4: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New function: 2.1
+-- (types) change: 2.3
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_gsoc_vrppdtw(text,integer,integer);
+DROP FUNCTION IF EXISTS pgr_gsoc_vrppdtw(text,integer,integer);
+
+
+
+
+------------------------------------------
+-- New functions on 2.0
+-- Signature change on 2.3
+-- Deprecated on 2.4
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_astar(text,integer,integer,boolean,boolean);
+DROP FUNCTION IF EXISTS pgr_astar(text,integer,integer,boolean,boolean);
+
+
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.2.4: {edges_sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vid,distance,directed,seq,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","distance","directed","seq","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"edges_sql","start_v","distance","directed","seq","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.2.4: {sql, start_v, distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vids,distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vids","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","start_v","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}';
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.3.0--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.3.0--2.5.0.sql
new file mode 100644
index 0000000..ec8b232
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.3.0--2.5.0.sql
@@ -0,0 +1,6561 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.3.0 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,bigint,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,bigint,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,anyarray,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,anyarray,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,bigint,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,bigint,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,anyarray,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,anyarray,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,bigint,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,bigint,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+DROP FUNCTION IF EXISTS _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_fakecontraction(text,integer[]);
+DROP FUNCTION IF EXISTS pgr_fakecontraction(text,integer[]);
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.3.0: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.3.0: {edges_sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vid,distance,directed,seq,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","distance","directed","seq","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"edges_sql","start_v","distance","directed","seq","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.3.0: {sql, start_v, distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vids,distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vids","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","start_v","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.3
+-- Signature change: 2.5
+-- Inner query changed: 2.5
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+
+
+ALTER EXTENSION pgrouting DROP TYPE contraction_vertex;
+DROP TYPE contraction_vertex;
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.3.1--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.3.1--2.5.0.sql
new file mode 100644
index 0000000..087c71f
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.3.1--2.5.0.sql
@@ -0,0 +1,6561 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.3.1 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,bigint,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,bigint,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,anyarray,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,anyarray,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,bigint,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,bigint,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,anyarray,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,anyarray,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,bigint,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,bigint,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+DROP FUNCTION IF EXISTS _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_fakecontraction(text,integer[]);
+DROP FUNCTION IF EXISTS pgr_fakecontraction(text,integer[]);
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.3.1: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.3.1: {edges_sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vid,distance,directed,seq,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","distance","directed","seq","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"edges_sql","start_v","distance","directed","seq","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.3.1: {sql, start_v, distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vids,distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vids","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","start_v","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.3
+-- Signature change: 2.5
+-- Inner query changed: 2.5
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+
+
+ALTER EXTENSION pgrouting DROP TYPE contraction_vertex;
+DROP TYPE contraction_vertex;
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.3.2--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.3.2--2.5.0.sql
new file mode 100644
index 0000000..659505d
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.3.2--2.5.0.sql
@@ -0,0 +1,6561 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.3.2 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,anyarray,double precision,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_drivingdistance(text,bigint,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_drivingdistance(text,bigint,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,anyarray,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,anyarray,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,bigint,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,bigint,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,anyarray,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,anyarray,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,bigint,text);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,bigint,text);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+DROP FUNCTION IF EXISTS _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_fakecontraction(text,integer[]);
+DROP FUNCTION IF EXISTS pgr_fakecontraction(text,integer[]);
+
+
+------------------------------------------
+-- New functions: 2.0
+-- Signature change: 2.4
+-- Deprecated: 2.4
+------------------------------------------
+-- pgr_bddijkstra
+-- 2.3.2: { sql, source_vid, target_vid, directed, has_reverse_cost}
+-- 2.5.0: {edges_sql, start_vid, end_vid, directed, has_rcost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","end_vid","directed","has_rcost"}'
+WHERE proname = 'pgr_bddijkstra'
+ AND proargnames = '{"sql","source_vid","target_vid","directed","has_reverse_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.3.2: {edges_sql,start_v, distance,directed,seq,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vid,distance,directed,seq,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vid","distance","directed","seq","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"edges_sql","start_v","distance","directed","seq","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.1
+-- Signature change: 2.4
+------------------------------------------
+-- 2.3.2: {sql, start_v, distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+-- 2.5.0: {edges_sql,start_vids,distance,directed,equicost,seq,from_v,node,edge,cost,agg_cost}
+
+UPDATE pg_proc SET
+proargnames = '{"edges_sql","start_vids","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}'
+WHERE proname = 'pgr_drivingdistance'
+ AND proargnames = '{"sql","start_v","distance","directed","equicost","seq","from_v","node","edge","cost","agg_cost"}';
+
+
+------------------------------------------
+-- New functions: 2.3
+-- Signature change: 2.5
+-- Inner query changed: 2.5
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+
+
+ALTER EXTENSION pgrouting DROP TYPE contraction_vertex;
+DROP TYPE contraction_vertex;
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.4.0--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.4.0--2.5.0.sql
new file mode 100644
index 0000000..3723bbb
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.4.0--2.5.0.sql
@@ -0,0 +1,6522 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.4.0 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,anyarray,bigint,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,anyarray,bigint,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,bigint,anyarray,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,bigint,anyarray,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_bddijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_bddijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,anyarray,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,anyarray,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,bigint,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,bigint,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,anyarray,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,anyarray,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,bigint,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,bigint,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+DROP FUNCTION IF EXISTS _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+------------------------------------------
+-- New functions: 2.3
+-- Signature change: 2.5
+-- Inner query changed: 2.5
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+
+
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.4.1--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.4.1--2.5.0.sql
new file mode 100644
index 0000000..2d81e11
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.4.1--2.5.0.sql
@@ -0,0 +1,6522 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.4.1 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,anyarray,bigint,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,anyarray,bigint,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,bigint,anyarray,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,bigint,anyarray,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_bddijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_bddijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,anyarray,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,anyarray,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,bigint,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,bigint,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,anyarray,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,anyarray,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,bigint,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,bigint,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+DROP FUNCTION IF EXISTS _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+------------------------------------------
+-- New functions: 2.3
+-- Signature change: 2.5
+-- Inner query changed: 2.5
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+
+
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.4.2--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.4.2--2.5.0.sql
new file mode 100644
index 0000000..ebf1e89
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.4.2--2.5.0.sql
@@ -0,0 +1,6522 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+-- pgRouting extension upgrade from 2.4.2 to 2.5.0
+-- generated by tools/build-extension-update-files
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+\echo Use "ALTER extension pgrouting update to '2.5.0'" to load this file. \quit
+
+
+-------------------------------------
+-- remove functions no longer in the 2.5.0 extension
+-------------------------------------
+
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,anyarray,anyarray,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,anyarray,bigint,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,anyarray,bigint,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,bigint,anyarray,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,bigint,anyarray,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+DROP FUNCTION IF EXISTS _pgr_astar(text,bigint,bigint,boolean,integer,double precision,double precision,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_bddijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_bddijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,anyarray,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,anyarray,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_dijkstra(text,bigint,bigint,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,anyarray,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,anyarray,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,anyarray,bigint,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,anyarray,bigint,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,anyarray,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,anyarray,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_maxflow(text,bigint,bigint,text,boolean);
+DROP FUNCTION IF EXISTS _pgr_maxflow(text,bigint,bigint,text,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+DROP FUNCTION IF EXISTS _pgr_pickdeliver(text,integer,double precision,double precision,integer);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,anyarray,bigint,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,anyarray,boolean,character,boolean,boolean);
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+DROP FUNCTION IF EXISTS _pgr_withpoints(text,text,bigint,bigint,boolean,character,boolean,boolean);
+
+
+------------------------------------------
+-- New functions: 2.3
+-- Signature change: 2.5
+-- Inner query changed: 2.5
+------------------------------------------
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,bigint,anyarray,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,bigint,boolean);
+
+
+
+ALTER EXTENSION pgrouting DROP FUNCTION pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+DROP FUNCTION IF EXISTS pgr_edgedisjointpaths(text,anyarray,anyarray,boolean);
+
+
+
+
+
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
+
+
diff --git a/tools/sql-update-scripts/pgrouting--2.5.0.sql b/tools/sql-update-scripts/pgrouting--2.5.0.sql
new file mode 100644
index 0000000..16d6eff
--- /dev/null
+++ b/tools/sql-update-scripts/pgrouting--2.5.0.sql
@@ -0,0 +1,6423 @@
+\echo Use "CREATE EXTENSION pgrouting" to load this file. \quit
+
+
+
+
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+--- pgRouting provides geospatial routing functionality.
+--- http://pgrouting.org
+--- copyright
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+---
+---
+--- This is free software; you can redistribute and/or modify it:
+--- the terms of the GNU General Public Licence. See the COPYING file.
+--- the terms of the MIT-X Licence. See the COPYING file.
+---
+--- The following functions have MIT-X licence:
+--- pgr_version()
+--- pgr_tsp(matrix float8[][], startpt integer, endpt integer DEFAULT -1, OUT seq integer, OUT id integer)
+--- _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+--- pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+---
+---
+--- All other functions are under GNU General Public Licence.
+---
+--- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+-- WARNING: Any change in this file must be evaluated for compatibility.
+-- Changes cleanly handled by postgis_upgrade.sql are fine,
+-- other changes will require a bump in Major version.
+-- Currently only function replaceble by CREATE OR REPLACE
+-- are cleanly handled.
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+
+
+
+-- pgRouting 2.0 types
+
+CREATE TYPE pgr_costResult AS
+(
+ seq integer,
+ id1 integer,
+ id2 integer,
+ cost float8
+);
+
+CREATE TYPE pgr_costResult3 AS
+(
+ seq integer,
+ id1 integer,
+ id2 integer,
+ id3 integer,
+ cost float8
+);
+
+CREATE TYPE pgr_geomResult AS
+(
+ seq integer,
+ id1 integer,
+ id2 integer,
+ geom geometry
+);
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_version()
+RETURNS TABLE(
+ "version" varchar,
+ tag varchar,
+ hash varchar,
+ branch varchar,
+ boost varchar
+ ) AS
+$BODY$
+ SELECT '2.5.0'::varchar AS version,
+ 'v2.5.0'::varchar AS tag,
+ ''::varchar AS hash,
+ ''::varchar AS branch,
+ '1.54.0'::varchar AS boost;
+$BODY$
+LANGUAGE sql IMMUTABLE;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getTableName(IN tab text, IN reportErrs int default 0, IN fnName text default '_pgr_getTableName', OUT sname text,OUT tname text)
+ RETURNS RECORD AS
+$$
+DECLARE
+ naming record;
+ i integer;
+ query text;
+ sn text; -- schema name
+ tn text; -- table name
+ ttype text; --table type for future use
+ err boolean;
+ debuglevel text;
+ var_types text[] = ARRAY['BASE TABLE', 'VIEW'];
+BEGIN
+
+ execute 'show client_min_messages' into debuglevel;
+
+
+ perform _pgr_msg( 0, fnName, 'Checking table ' || tab || ' exists');
+ --RAISE DEBUG 'Checking % exists',tab;
+
+ i := strpos(tab,'.');
+ IF (i <> 0) THEN
+ sn := split_part(tab, '.',1);
+ tn := split_part(tab, '.',2);
+ ELSE
+ sn := current_schema;
+ tn := tab;
+ END IF;
+
+
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata WHERE schema_name = sn;
+
+ IF sname IS NOT NULL THEN -- found schema (as is)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = tn ;
+ IF tname is NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name = lower(tn) ORDER BY table_name;
+ END IF;
+ END IF;
+ IF sname is NULL or tname is NULL THEN --schema not found or table not found
+ SELECT schema_name INTO sname
+ FROM information_schema.schemata
+ WHERE schema_name = lower(sn) ;
+
+ IF sname IS NOT NULL THEN -- found schema (with lower caps)
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= tn ;
+
+ IF tname IS NULL THEN
+ SELECT table_name, table_type INTO tname, ttype
+ FROM information_schema.tables
+ WHERE
+ table_type = ANY(var_types) and
+ table_schema = sname and
+ table_name= lower(tn) ;
+ END IF;
+ END IF;
+ END IF;
+ err = (sname IS NULL OR tname IS NULL);
+ perform _pgr_onError(err, reportErrs, fnName, 'Table ' || tab ||' not found',' Check your table name', 'Table '|| tab || ' found');
+
+END;
+$$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(sname text, tname text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(col) into cname;
+
+ IF cname is null THEN
+ execute 'SELECT column_name FROM information_schema.columns
+ WHERE table_name='||quote_literal(tname)||' and table_schema='||quote_literal(sname)||' and column_name='||quote_literal(lower(col)) into cname;
+ END if;
+
+ err = cname is null;
+
+ perform _pgr_onError(err, reportErrs, fnName, 'Column '|| col ||' not found', ' Check your column name','Column '|| col || ' found');
+ RETURN cname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnName(tab text, col text, IN reportErrs int default 1, IN fnName text default '_pgr_getColumnName')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ naming record;
+ err boolean;
+BEGIN
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+
+ select * into cname from _pgr_getColumnName(sname,tname,col,reportErrs, fnName);
+ RETURN cname;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ select * from _pgr_getColumnName(tab,col,0, '_pgr_isColumnInTable') into cname;
+ return cname is not null;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(sname text, tname text, cname text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ pkey text;
+BEGIN
+ SELECT
+ pg_attribute.attname into pkey
+ -- format_type(pg_attribute.atttypid, pg_attribute.atttypmod)
+ FROM pg_index, pg_class, pg_attribute
+ WHERE
+ pg_class.oid = _pgr_quote_ident(sname||'.'||tname)::regclass AND
+ indrelid = pg_class.oid AND
+ pg_attribute.attrelid = pg_class.oid AND
+ pg_attribute.attnum = any(pg_index.indkey)
+ AND indisprimary;
+
+ IF pkey=cname then
+ RETURN TRUE;
+ END IF;
+
+ SELECT a.index_name,
+ b.attname,
+ b.attnum,
+ a.indisunique,
+ a.indisprimary
+ INTO rec
+ FROM ( SELECT a.indrelid,
+ a.indisunique,
+ a.indisprimary,
+ c.relname index_name,
+ unnest(a.indkey) index_num
+ FROM pg_index a,
+ pg_class b,
+ pg_class c,
+ pg_namespace d
+ WHERE b.relname=tname
+ AND b.relnamespace=d.oid
+ AND d.nspname=sname
+ AND b.oid=a.indrelid
+ AND a.indexrelid=c.oid
+ ) a,
+ pg_attribute b
+ WHERE a.indrelid = b.attrelid
+ AND a.index_num = b.attnum
+ AND b.attname = cname
+ ORDER BY a.index_name,
+ a.index_num;
+
+ RETURN FOUND;
+ EXCEPTION WHEN OTHERS THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Error when checking for the postgres system attributes', SQLERR);
+ RETURN FALSE;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION _pgr_isColumnIndexed(tab text, col text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_isColumnIndexed')
+RETURNS boolean AS
+$BODY$
+DECLARE
+ naming record;
+ rec record;
+ sname text;
+ tname text;
+ cname text;
+ pkey text;
+ value boolean;
+BEGIN
+ SELECT * into naming FROM _pgr_getTableName(tab, 0, fnName);
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ SELECT * into cname from _pgr_getColumnName(sname, tname, col, 0, fnName) ;
+ IF cname IS NULL THEN
+ RETURN FALSE;
+ END IF;
+ select * into value from _pgr_isColumnIndexed(sname, tname, cname, reportErrs, fnName);
+ return value;
+END
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+create or replace function _pgr_quote_ident(idname text)
+ returns text as
+$body$
+declare
+ t text[];
+ pgver text;
+
+begin
+ pgver := regexp_replace(version(), E'^PostgreSQL ([^ ]+)[ ,].*$', E'\\1');
+
+ if _pgr_versionless(pgver, '9.2') then
+ select into t array_agg(quote_ident(term)) from
+ (select nullif(unnest, '') as term
+ from unnest(string_to_array(idname, '.'))) as foo;
+ else
+ select into t array_agg(quote_ident(term)) from
+ (select unnest(string_to_array(idname, '.', '')) as term) as foo;
+ end if;
+ return array_to_string(t, '.');
+end;
+$body$
+language plpgsql immutable;
+
+
+CREATE OR REPLACE FUNCTION _pgr_versionless(v1 text, v2 text)
+ RETURNS boolean AS
+$BODY$
+
+
+declare
+ v1a text[];
+ v2a text[];
+ nv1 integer;
+ nv2 integer;
+ ne1 integer;
+ ne2 integer;
+
+begin
+ -- separate components into an array, like:
+ -- '2.1.0-beta3dev' => {2,1,0,beta3dev}
+ v1a := regexp_matches(v1, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+ v2a := regexp_matches(v2, E'^(\\d+)(?:[\\.](\\d+))?(?:[\\.](\\d+))?[-+\\.]?(.*)$');
+
+ -- convert modifiers to numbers for comparison
+ -- we do not delineate between alpha1, alpha2, alpha3, etc
+ ne1 := case when v1a[4] is null or v1a[4]='' then 5
+ when v1a[4] ilike 'rc%' then 4
+ when v1a[4] ilike 'beta%' then 3
+ when v1a[4] ilike 'alpha%' then 2
+ when v1a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ ne2 := case when v2a[4] is null or v2a[4]='' then 5
+ when v2a[4] ilike 'rc%' then 4
+ when v2a[4] ilike 'beta%' then 3
+ when v2a[4] ilike 'alpha%' then 2
+ when v2a[4] ilike 'dev%' then 1
+ else 0 end;
+
+ nv1 := v1a[1]::integer * 10000 +
+ coalesce(v1a[2], '0')::integer * 1000 +
+ coalesce(v1a[3], '0')::integer * 100 + ne1;
+ nv2 := v2a[1]::integer * 10000 +
+ coalesce(v2a[2], '0')::integer * 1000 +
+ coalesce(v2a[3], '0')::integer * 100 + ne2;
+
+ --raise notice 'nv1: %, nv2: %, ne1: %, ne2: %', nv1, nv2, ne1, ne2;
+
+ return nv1 < nv2;
+end;
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+create or replace function _pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_startpoint(st_geometryn(g,1));
+ else
+ return st_startpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function _pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+declare
+
+begin
+ if geometrytype(g) ~ '^MULTI' then
+ return st_endpoint(st_geometryn(g,1));
+ else
+ return st_endpoint(g);
+ end if;
+end;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_parameter_check(fn text, sql text, big boolean default false)
+ RETURNS bool AS
+ $BODY$
+
+ DECLARE
+ rec record;
+ rec1 record;
+ has_rcost boolean;
+ safesql text;
+ BEGIN
+ IF (big) THEN
+ RAISE EXCEPTION 'This function is for old style functions';
+ END IF;
+
+ -- checking query is executable
+ BEGIN
+ safesql = 'select * from ('||sql||' ) AS __a__ limit 1';
+ execute safesql into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'Could not execute query please verify syntax of: '
+ USING HINT = sql;
+ END;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('dijkstra','astar') THEN
+ BEGIN
+ execute 'select id,source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: id, source, target, cost';
+ END;
+ execute 'select pg_typeof(id)::text as id_type, pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.id_type in ('integer'::text))
+ AND (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Error, columns ''source'', ''target'' must be of type int4, ''cost'' must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ IF fn IN ('astar') THEN
+ BEGIN
+ execute 'select x1,y1,x2,y2 from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please veryfy the column names: x1,y1, x2,y2';
+ END;
+ execute 'select pg_typeof(x1)::text as x1_type, pg_typeof(y1)::text as y1_type, pg_typeof(x2)::text as x2_type, pg_typeof(y2)::text as y2_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.x1_type = 'double precision'::text)
+ AND (rec.y1_type = 'double precision'::text)
+ AND (rec.x2_type = 'double precision'::text)
+ AND (rec.y2_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Columns: x1, y1, x2, y2 must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ -- checking the fixed columns and data types of the integers
+ IF fn IN ('johnson') THEN
+ BEGIN
+ execute 'select source,target,cost from ('||safesql||') as __b__' into rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING HINT = 'Please veryfy the column names: id, source, target, cost',
+ ERRCODE = 'XX000';
+ END;
+
+ execute 'select pg_typeof(source)::text as source_type, pg_typeof(target)::text as target_type, pg_typeof(cost)::text as cost_type'
+ || ' from ('||safesql||') AS __b__ ' into rec;
+ -- Version 2.0.0 is more restrictive
+ IF NOT( (rec.source_type in ('integer'::text))
+ AND (rec.target_type in ('integer'::text))
+ AND (rec.cost_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION 'Support for source,target columns only of type: integer. Support for Cost: double precision'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+
+ -- Checking the data types of the optional reverse_cost";
+ has_rcost := false;
+ IF fn IN ('johnson','dijkstra','astar') THEN
+ BEGIN
+ execute 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||safesql||' ) AS __b__ limit 1 ' into rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ return has_rcost;
+ END;
+ if (has_rcost) then
+ IF (big) then
+ IF not (rec1.rev_type in ('bigint'::text, 'integer'::text, 'smallint'::text, 'double precision'::text, 'real'::text)) then
+ RAISE EXCEPTION 'Illegar type in optional parameter reverse_cost.'
+ USING ERRCODE = 'XX000';
+ END IF;
+ ELSE -- Version 2.0.0 is more restrictive
+ IF (rec1.rev_type != 'double precision') then
+ RAISE EXCEPTION 'Illegal type in optional parameter reverse_cost, must be of type float8'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ end if;
+ return true;
+ END IF;
+ -- just for keeps
+ return true;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 1;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_onError(
+ IN errCond boolean, -- true there is an error
+ IN reportErrs int, -- 0, 1 or 2
+ IN fnName text, -- function name that generates the error
+ IN msgerr text, -- error message
+ IN hinto text default 'No hint', -- hint help
+ IN msgok text default 'OK') -- message if everything is ok
+ RETURNS void AS
+$BODY$
+BEGIN
+ if errCond=true then
+ if reportErrs=0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ else
+ if reportErrs = 2 then
+ raise notice '----> PGR ERROR in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ raise raise_exception;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msgerr USING HINT = ' ---->'|| hinto;
+ end if;
+ end if;
+ else
+ raise debug 'PGR ----> %: %',fnName,msgok;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_msg(IN msgKind int, IN fnName text, IN msg text default '---->OK')
+ RETURNS void AS
+$BODY$
+BEGIN
+ if msgKind = 0 then
+ raise debug '----> PGR DEBUG in %: %',fnName,msg;
+ else
+ raise notice '----> PGR NOTICE in %: %',fnName,msg;
+ end if;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(sname text, tname text, cname text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ EXECUTE 'select data_type from information_schema.columns '
+ || 'where table_name = '||quote_literal(tname)
+ || ' and table_schema=' || quote_literal(sname)
+ || ' and column_name='||quote_literal(cname)
+ into ctype;
+ err = ctype is null;
+ perform _pgr_onError(err, reportErrs, fnName,
+ 'Type of Column '|| cname ||' not found',
+ 'Check your column name',
+ 'OK: Type of Column '|| cname || ' is ' || ctype);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_getColumnType(tab text, col text,
+ IN reportErrs int default 0, IN fnName text default '_pgr_getColumnType')
+RETURNS text AS
+$BODY$
+DECLARE
+ sname text;
+ tname text;
+ cname text;
+ ctype text;
+ naming record;
+ err boolean;
+BEGIN
+
+ select * into naming from _pgr_getTableName(tab,reportErrs, fnName) ;
+ sname=naming.sname;
+ tname=naming.tname;
+ select * into cname from _pgr_getColumnName(tab,col,reportErrs, fnName) ;
+ select * into ctype from _pgr_getColumnType(sname,tname,cname,reportErrs, fnName);
+ RETURN ctype;
+END;
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_get_statement(o_sql text)
+RETURNS text AS
+$BODY$
+DECLARE
+sql TEXT;
+BEGIN
+ EXECUTE 'SELECT statement FROM pg_prepared_statements WHERE name =' || quote_literal(o_sql) || ' limit 1 ' INTO sql;
+ IF (sql IS NULL) THEN
+ RETURN o_sql;
+ ELSE
+ RETURN regexp_replace(sql, '(.)* as ', '', 'i');
+ END IF;
+END
+$BODY$
+LANGUAGE plpgsql STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_checkVertTab(vertname text, columnsArr text[],
+ IN reportErrs int default 1, IN fnName text default '_pgr_checkVertTab',
+ OUT sname text,OUT vname text)
+RETURNS record AS
+$BODY$
+DECLARE
+ cname text;
+ colname text;
+ naming record;
+ debuglevel text;
+ err boolean;
+ msgKind int;
+
+BEGIN
+ msgKind = 0; -- debug_
+ execute 'show client_min_messages' into debuglevel;
+
+ perform _pgr_msg(msgKind, fnName, 'Checking table ' || vertname || ' exists');
+ select * from _pgr_getTableName(vertname, 0, fnName) into naming;
+ sname=naming.sname;
+ vname=naming.tname;
+ err = sname is NULL or vname is NULL;
+ perform _pgr_onError( err, 2, fnName,
+ 'Vertex Table: ' || vertname || ' not found',
+ 'Please create ' || vertname || ' using _pgr_createTopology() or pgr_createVerticesTable()',
+ 'Vertex Table: ' || vertname || ' found');
+
+
+ perform _pgr_msg(msgKind, fnName, 'Checking columns of ' || vertname);
+ FOREACH cname IN ARRAY columnsArr
+ loop
+ select _pgr_getcolumnName(vertname, cname, 0, fnName) into colname;
+ if colname is null then
+ perform _pgr_msg(msgKind, fnName, 'Adding column ' || cname || ' in ' || vertname);
+ set client_min_messages to warning;
+ execute 'ALTER TABLE '||_pgr_quote_ident(vertname)||' ADD COLUMN '||cname|| ' integer';
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ end if;
+ end loop;
+ perform _pgr_msg(msgKind, fnName, 'Finished checking columns of ' || vertname);
+
+ perform _pgr_createIndex(vertname , 'id' , 'btree', reportErrs, fnName);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(
+ sname text, tname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ debuglevel text;
+ naming record;
+ tabname text;
+ query text;
+ msgKind int;
+BEGIN
+ msgKind = 0; -- debug_
+
+ execute 'show client_min_messages' into debuglevel;
+ tabname=_pgr_quote_ident(sname||'.'||tname);
+ perform _pgr_msg(msgKind, fnName, 'Checking ' || colname || ' column in ' || tabname || ' is indexed');
+ IF (_pgr_isColumnIndexed(sname,tname,colname, 0, fnName)) then
+ perform _pgr_msg(msgKind, fnName);
+ else
+ if indext = 'gist' then
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using gist('||quote_ident(colname)||')';
+ else
+ query = 'create index '||_pgr_quote_ident(tname||'_'||colname||'_idx')||'
+ on '||tabname||' using btree('||quote_ident(colname)||')';
+ end if;
+ perform _pgr_msg(msgKind, fnName, 'Adding index ' || tabname || '_' || colname || '_idx');
+ perform _pgr_msg(msgKind, fnName, ' Using ' || query);
+ set client_min_messages to warning;
+ BEGIN
+ execute query;
+ EXCEPTION WHEN others THEN
+ perform _pgr_onError( true, reportErrs, fnName,
+ 'Could not create index on:' || colname, SQLERRM);
+ END;
+ execute 'set client_min_messages to '|| debuglevel;
+ perform _pgr_msg(msgKind, fnName);
+ END IF;
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION _pgr_createIndex(tabname text, colname text, indext text,
+ IN reportErrs int default 1, IN fnName text default '_pgr_createIndex')
+RETURNS void AS
+$BODY$
+DECLARE
+ naming record;
+ sname text;
+ tname text;
+
+BEGIN
+ select * from _pgr_getTableName(tabname, 2, fnName) into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ execute _pgr_createIndex(sname, tname, colname, indext, reportErrs, fnName);
+END;
+
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pointToId(
+ point geometry,
+ tolerance double precision,
+ vertname text,
+ srid integer)
+
+ RETURNS bigint AS
+$BODY$
+DECLARE
+ rec record;
+ pid bigint;
+
+BEGIN
+ EXECUTE 'SELECT ST_Distance(
+ the_geom,
+ ST_GeomFromText(ST_AsText('
+ || quote_literal(point::text)
+ || '),'
+ || srid ||')) AS d, id, the_geom
+ FROM '||_pgr_quote_ident(vertname)||'
+ WHERE ST_DWithin(
+ the_geom,
+ ST_GeomFromText(
+ ST_AsText(' || quote_literal(point::text) ||'),
+ ' || srid || '),' || tolerance||')
+ ORDER BY d
+ LIMIT 1' INTO rec ;
+ IF rec.id IS NOT NULL THEN
+ pid := rec.id;
+ ELSE
+ execute 'INSERT INTO '||_pgr_quote_ident(vertname)||' (the_geom) VALUES ('||quote_literal(point::text)||')';
+ pid := lastval();
+END IF;
+
+RETURN pid;
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'many_to_many_dijkstra'
+LANGUAGE c VOLATILE;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3 signature 1 to 1
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer, OUT path_seq integer,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost float,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstra(One to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstra(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstra(Many to Many)';
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(One to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, BIGINT, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(One to Many)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, BIGINT, BOOLEAN) IS 'pgr_dijkstraCost(Many to One)';
+COMMENT ON FUNCTION pgr_dijkstraCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN) IS 'pgr_dijkstraCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraVia(
+ edges_sql TEXT,
+ via_vertices ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ strict BOOLEAN DEFAULT FALSE,
+ U_turn_on_edge BOOLEAN DEFAULT TRUE,
+
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'dijkstraVia'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_johnson(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'johnson'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_floydWarshall(edges_sql TEXT, directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'floydWarshall'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+ normal BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'astarManyToMany'
+LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, normal:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_astar(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_astar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(One to Many)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to One)';
+COMMENT ON FUNCTION pgr_astar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_astar(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true, normal:=false) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+CREATE OR REPLACE FUNCTION pgr_aStarCost(
+ edges_sql TEXT, -- XY edges sql
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_aStar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a
+ ORDER BY a.start_vid, a.end_vid;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(One to Many)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to One)';
+COMMENT ON FUNCTION pgr_aStarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, FLOAT, FLOAT) IS 'pgr_aStarCost(Many to Many)';
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid ANYARRAY,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+ equicost BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'many_withPointsDD'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsDD(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ distance FLOAT,
+
+ directed BOOLEAN DEFAULT TRUE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_withPointsDD($1, $2, ARRAY[$3]::BIGINT[], $4, $5, $6, $7, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vids anyarray,
+ distance FLOAT,
+ directed BOOLEAN DEFAULT TRUE,
+ equicost BOOLEAN DEFAULT FALSE,
+ OUT seq integer,
+ OUT from_v bigint,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'driving_many_to_dist'
+ LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(
+ edges_sql text,
+ start_vid bigint,
+ distance FLOAT8,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq integer,
+ OUT node bigint,
+ OUT edge bigint,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false) a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer, directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'kshortest_path'
+ LANGUAGE c STABLE STRICT;
+
+-- V2 the graph is directed and there are no heap paths
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid integer, end_vid integer, k integer, has_rcost boolean)
+ RETURNS SETOF pgr_costresult3 AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated signature of pgr_ksp';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql::text, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_rcost) THEN
+ -- user says that it has reverse_cost but its not true
+ RAISE EXCEPTION 'has_reverse_cost set to true but reverse_cost not found';
+ ELSE
+ -- user says that it does not have reverse_cost but it does have it
+ -- to ignore we remove reverse_cost from the query
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+ END IF;
+
+ RETURN query SELECT ((row_number() over()) -1)::integer AS seq, (path_id - 1)::integer AS id1, node::integer AS id2, edge::integer AS id3, cost
+ FROM _pgr_ksp(sql::text, start_vid, end_vid, k, TRUE, FALSE) WHERE path_id <= k;
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_ksp(edges_sql text, start_vid bigint, end_vid bigint, k integer,
+ directed boolean default true, heap_paths boolean default false,
+ --directed boolean, heap_paths boolean,
+ OUT seq integer, OUT path_id integer, OUT path_seq integer, OUT node bigint, OUT edge bigint, OUT cost float, OUT agg_cost float)
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ BEGIN
+ RETURN query SELECT *
+ FROM _pgr_ksp(edges_sql::text, start_vid, end_vid, k, directed, heap_paths);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsKSP(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ k INTEGER,
+
+ directed BOOLEAN DEFAULT TRUE,
+ heap_paths BOOLEAN DEFAULT FALSE,
+ driving_side CHAR DEFAULT 'b',
+ details BOOLEAN DEFAULT FALSE,
+
+ OUT seq INTEGER, OUT path_id INTEGER, OUT path_seq INTEGER,
+ OUT node BIGINT, OUT edge BIGINT,
+ OUT cost FLOAT, OUT agg_cost FLOAT)
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'withPoints_ksp'
+ LANGUAGE c STABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_unnest_matrix(matrix float8[][], OUT start_vid integer, OUT end_vid integer, out agg_cost float8)
+RETURNS SETOF record AS
+
+$body$
+DECLARE
+
+m float8[];
+
+BEGIN
+ start_vid = 1;
+ foreach m slice 1 in ARRAY matrix
+ LOOP
+ end_vid = 1;
+ foreach agg_cost in ARRAY m
+ LOOP
+ RETURN next;
+ end_vid = end_vid + 1;
+ END LOOP;
+ start_vid = start_vid + 1;
+ END LOOP;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(
+ matrix float8[][],
+ startpt INTEGER,
+ endpt INTEGER DEFAULT -1,
+ OUT seq INTEGER,
+ OUT id INTEGER)
+RETURNS SETOF record AS
+$body$
+DECLARE
+table_sql TEXT;
+debuglevel TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(float8[][], integer, integer)';
+
+ CREATE TEMP TABLE ___tmp2 ON COMMIT DROP AS SELECT * FROM _pgr_unnest_matrix( matrix );
+
+
+ startpt := startpt + 1;
+ IF endpt = -1 THEN endpt := startpt;
+ END IF;
+
+
+ RETURN QUERY
+ WITH
+ result AS (
+ SELECT * FROM pgr_TSP(
+ $$SELECT * FROM ___tmp2 $$,
+ startpt, endpt,
+
+ tries_per_temperature := 500 :: INTEGER,
+ max_changes_per_temperature := 30 :: INTEGER,
+ max_consecutive_non_changes := 500 :: INTEGER,
+
+ randomize:=false)
+ )
+ SELECT (row_number() over(ORDER BY result.seq) - 1)::INTEGER AS seq, (result.node - 1)::INTEGER AS id
+
+ FROM result WHERE NOT(result.node = startpt AND result.seq != 1);
+
+ DROP TABLE ___tmp2;
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_tsp(sql text, start_id INTEGER, end_id INTEGER default (-1))
+returns setof pgr_costResult as
+$body$
+DECLARE
+table_sql TEXT;
+rec RECORD;
+debuglevel TEXT;
+n BIGINT;
+
+BEGIN
+ RAISE NOTICE 'Deprecated Signature pgr_tsp(sql, integer, integer)';
+
+ table_sql := 'CREATE TEMP TABLE ___tmp ON COMMIT DROP AS ' || sql ;
+ EXECUTE table_sql;
+
+
+ BEGIN
+ EXECUTE 'SELECT id, x, y FROM ___tmp' INTO rec;
+ EXCEPTION
+ WHEN OTHERS THEN
+ RAISE EXCEPTION 'An expected column was not found in the query'
+ USING ERRCODE = 'XX000',
+ HINT = 'Please verify the column names: id, x, y';
+ END;
+
+ EXECUTE
+ 'SELECT
+ pg_typeof(id)::text as id_type,
+ pg_typeof(x)::text as x_type,
+ pg_typeof(y)::text as y_type FROM ___tmp' INTO rec;
+
+
+ IF NOT((rec.id_type in ('integer'::text))
+ AND (rec.x_type = 'double precision'::text)
+ AND (rec.y_type = 'double precision'::text)) THEN
+ RAISE EXCEPTION '''id'' must be of type INTEGER, ''x'' ad ''y'' must be of type FLOAT'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ EXECUTE 'SELECT count(*) AS n FROM (' || sql || ') AS __a__' INTO rec;
+ n = rec.n;
+
+ RETURN query
+ SELECT (seq - 1)::INTEGER AS seq, node::INTEGER AS id1, node::INTEGER AS id2, cost
+ FROM pgr_eucledianTSP(sql, start_id, end_id,
+
+ tries_per_temperature := 500 * n :: INTEGER,
+ max_changes_per_temperature := 60 * n :: INTEGER,
+ max_consecutive_non_changes := 500 * n :: INTEGER,
+
+ randomize := false) WHERE seq <= n;
+ DROP TABLE ___tmp;
+
+END;
+$body$
+language plpgsql volatile cost 500 ROWS 50;
+
+
+
+
+create or replace function _pgr_makeDistanceMatrix(sqlin text, OUT dmatrix double precision[], OUT ids integer[])
+ as
+$body$
+declare
+ sql text;
+ r record;
+
+begin
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ sql := 'with nodes as (' || sqlin || ')
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j, st_distance(st_makepoint(a.x, a.y), st_makepoint(b.x, b.y)) as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i';
+
+ for r in execute sql loop
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+
+end;
+$body$
+language plpgsql stable cost 10;
+
+
+CREATE OR REPLACE FUNCTION pgr_TSP(
+ matrix_row_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq INTEGER,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'newTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_eucledianTSP(
+ coordinates_sql TEXT,
+ start_id BIGINT DEFAULT 0,
+ end_id BIGINT DEFAULT 0,
+
+ max_processing_time FLOAT DEFAULT '+infinity'::FLOAT,
+
+ tries_per_temperature INTEGER DEFAULT 500,
+ max_changes_per_temperature INTEGER DEFAULT 60,
+ max_consecutive_non_changes INTEGER DEFAULT 100,
+
+ initial_temperature FLOAT DEFAULT 100,
+ final_temperature FLOAT DEFAULT 0.1,
+ cooling_factor FLOAT DEFAULT 0.9,
+
+ randomize BOOLEAN DEFAULT true,
+
+ OUT seq integer,
+ OUT node BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF record
+AS '$libdir/libpgrouting-2.5', 'eucledianTSP'
+LANGUAGE c VOLATILE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_alphashape(sql text, alpha float8 DEFAULT 0, OUT x float8, OUT y float8)
+ RETURNS SETOF record
+ AS '$libdir/libpgrouting-2.5', 'alphashape'
+ LANGUAGE c VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pointsAsPolygon(query varchar, alpha float8 DEFAULT 0)
+ RETURNS geometry AS
+ $$
+ DECLARE
+ r record;
+ geoms geometry[];
+ vertex_result record;
+ i int;
+ n int;
+ spos int;
+ q text;
+ x float8[];
+ y float8[];
+
+ BEGIN
+ geoms := array[]::geometry[];
+ i := 1;
+
+ FOR vertex_result IN EXECUTE 'SELECT x, y FROM pgr_alphashape('''|| query || ''', ' || alpha || ')'
+ LOOP
+ x[i] = vertex_result.x;
+ y[i] = vertex_result.y;
+ i := i+1;
+ END LOOP;
+
+ n := i;
+ IF n = 1 THEN
+ RAISE NOTICE 'n = 1';
+ RETURN NULL;
+ END IF;
+
+ spos := 1;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ FOR i IN 1..n LOOP
+ IF x[i] IS NULL AND y[i] IS NULL THEN
+ q := q || ', ' || x[spos] || ' ' || y[spos] || '))'',0) AS geom;';
+ EXECUTE q INTO r;
+ geoms := geoms || array[r.geom];
+ q := '';
+ ELSE
+ IF q = '' THEN
+ spos := i;
+ q := 'SELECT ST_GeometryFromText(''POLYGON((';
+ END IF;
+ IF i = spos THEN
+ q := q || x[spos] || ' ' || y[spos];
+ ELSE
+ q := q || ', ' || x[i] || ' ' || y[i];
+ END IF;
+ END IF;
+ END LOOP;
+
+ RETURN ST_BuildArea(ST_Collect(geoms));
+ END;
+ $$
+ LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ only_cost BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'bd_astar'
+LANGUAGE C VOLATILE;
+
+
+
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed:=true, only_cost:=false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- V3
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ BOOLEAN,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, false);
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstar(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstar(Many to Many)';
+
+
+
+-- one to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- one to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to one
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- many to many
+CREATE OR REPLACE FUNCTION pgr_bdAstarCost(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, $5, $6::FLOAT, $7::FLOAT, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- COMMENTS
+
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, BIGINT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(One to Many)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, BIGINT, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to One)';
+COMMENT ON FUNCTION pgr_bdAstarCost(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCost(Many to Many)';
+
+
+-- bdDijkstra MANY TO MANY
+CREATE OR REPLACE FUNCTION _pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ only_cost BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bdDijkstra'
+LANGUAGE c VOLATILE;
+
+
+
+-- ONE TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], true, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- TODO directed BOOLEAN DEFAULT TRUE, on version 3
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vid BIGINT,
+ directed BOOLEAN,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vid BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vid BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT *
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+-- ONE TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ BIGINT,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+-- MANY TO ONE
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true) as a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- MANY TO MANY
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCost(
+ edges_sql TEXT,
+ start_vids ANYARRAY,
+ end_vids ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true) as a;
+$BODY$
+LANGUAGE SQL VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_vid integer,
+ target_vid integer,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_vertex'
+LANGUAGE 'c' IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION _pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult
+AS '$libdir/libpgrouting-2.5', 'turn_restrict_shortest_path_edge'
+LANGUAGE 'c' IMMUTABLE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ -- no restrictions then its a dijkstra
+ RETURN query SELECT a.seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_dijkstra(new_sql, start_vid, end_vid, directed) a;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, start_vid, end_vid, directed, has_rcost, restrictions_sql);
+ RETURN;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_trspViaVertices(
+ edges_sql TEXT,
+ via_vids ANYARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN,
+ restrictions_sql TEXT DEFAULT NULL)
+RETURNS SETOF pgr_costResult3 AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+
+ new_sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN -- user contradiction
+ IF (has_reverse) THEN -- it has reverse_cost but user don't want it.
+ new_sql :=
+ 'WITH old_sql AS (' || edges_sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (restrictions_sql IS NULL OR length(restrictions_sql) = 0) THEN
+ RETURN query SELECT (row_number() over())::INTEGER, path_id:: INTEGER, node::INTEGER,
+ (CASE WHEN edge = -2 THEN -1 ELSE edge END)::INTEGER, cost
+ FROM pgr_dijkstraVia(new_sql, via_vids, directed, strict:=true) WHERE edge != -1;
+ RETURN;
+ END IF;
+
+
+ -- make the call without contradiction from part of the user
+ RETURN query SELECT * FROM _pgr_trspViaVertices(new_sql, via_vids::INTEGER[], directed, has_rcost, restrictions_sql);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_trsp(
+ sql text,
+ source_eid integer,
+ source_pos float8,
+ target_eid integer,
+ target_pos float8,
+ directed boolean,
+ has_reverse_cost boolean,
+ turn_restrict_sql text DEFAULT null)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+trsp_sql TEXT;
+BEGIN
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+
+ new_sql := sql;
+ IF (has_reverse != has_reverse_cost) THEN -- user contradiction
+ IF (has_reverse) THEN
+ -- it has reverse_cost but user don't want it.
+ -- to be on the safe side because it reads the data wrong, sending only postitive values
+ new_sql :=
+ 'WITH old_sql AS (' || sql || ')' ||
+ ' SELECT id, source, target, cost FROM old_sql';
+ ELSE -- it does not have reverse_cost but user wants it
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE := 'XX000';
+ END IF;
+ END IF;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) THEN
+ -- no restrictions then its a with points
+ RETURN query SELECT a.seq-1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_withpoints(new_sql,
+ '(SELECT 1 as pid, ' || source_eid || 'as edge_id, ' || source_pos || '::float8 as fraction)'
+ || ' UNION '
+ || '(SELECT 2, ' || target_eid || ', ' || target_pos || ')' ::TEXT,
+ -1, -2, directed) a;
+ -- WHERE node != -2;
+ RETURN;
+ END IF;
+
+ RETURN query SELECT * FROM _pgr_trsp(new_sql, source_eid, source_pos, target_eid, target_pos, directed, has_reverse_cost, turn_restrict_sql);
+ RETURN;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+create or replace function _pgr_trspViaVertices(sql text, vids integer[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ lrra boolean := false;
+ seq integer := 0;
+ seq2 integer := 0;
+
+begin
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(vids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from _pgr_trsp(sql, vids[i], vids[i+1], directed, has_rcost, turn_restrict_sql) as a loop
+ -- filter out the individual path ends except the last one
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --raise notice 'rr: %', rr;
+ if rr.id3 = -1 then
+ lrr := rr;
+ lrra := true;
+ else
+ seq := seq + 1;
+ rr.seq := seq;
+ return next rr;
+ end if;
+ end loop;
+ end loop;
+
+ if lrra then
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ end if;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+
+----------------------------------------------------------------------------------------------------------
+
+create or replace function pgr_trspViaEdges(sql text, eids integer[], pcts float8[], directed boolean, has_rcost boolean, turn_restrict_sql text DEFAULT NULL::text)
+ RETURNS SETOF pgr_costresult3 AS
+$body$
+
+declare
+ i integer;
+ rr pgr_costresult3;
+ lrr pgr_costresult3;
+ first boolean := true;
+ seq integer := 0;
+ seq2 integer :=0;
+ has_reverse BOOLEAN;
+ point_is_vertex BOOLEAN := false;
+ edges_sql TEXT;
+ f float;
+
+begin
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql := sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (NOT has_rcost) THEN
+ -- user does not want to use reverse cost column
+ edges_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ FOREACH f IN ARRAY pcts LOOP
+ IF f in (0,1) THEN
+ point_is_vertex := true;
+ END IF;
+ END LOOP;
+
+ IF (turn_restrict_sql IS NULL OR length(turn_restrict_sql) = 0) AND NOT point_is_vertex THEN
+ -- no restrictions then its a _pgr_withPointsVia
+ RETURN query SELECT a.seq::INTEGER, path_id::INTEGER AS id1, node::INTEGER AS id2, edge::INTEGER AS id3, cost
+ FROM _pgr_withPointsVia(edges_sql, eids, pcts, directed) a;
+ RETURN;
+ END IF;
+
+ if array_length(eids, 1) != array_length(pcts, 1) then
+ raise exception 'The length of arrays eids and pcts must be the same!';
+ end if;
+
+ -- loop through each pair of vids and compute the path
+ for i in 1 .. array_length(eids, 1)-1 loop
+ seq2 := seq2 + 1;
+ for rr in select a.seq, seq2 as id1, a.id1 as id2, a.id2 as id3, a.cost
+ from pgr_trsp(edges_sql,
+ eids[i], pcts[i],
+ eids[i+1], pcts[i+1],
+ directed,
+ has_rcost,
+ turn_restrict_sql) as a loop
+ -- combine intermediate via costs when cost is split across
+ -- two parts of a segment because it stops it and
+ -- restarts the next leg also on it
+ -- we might not want to do this so we can know where the via points are in the path result
+ -- but this needs more thought
+ --
+ -- there are multiple condition we have to deal with
+ -- between the end of one leg and start of the next
+ -- 1. same vertex_id. edge_id=-1; drop record with edge_id=-1
+ -- means: path ends on vertex
+ -- NOTICE: rr: (19,1,44570022,-1,0)
+ -- NOTICE: rr: (0,2,44570022,1768045,2.89691196717448)
+ -- 2. vertex_id=-1; sum cost components
+ -- means: path end/starts with the segment
+ -- NOTICE: rr: (11,2,44569628,1775909,9.32885885148532)
+ -- NOTICE: rr: (0,3,-1,1775909,0.771386350984395)
+
+ --raise notice 'rr: %', rr;
+ if first then
+ lrr := rr;
+ first := false;
+ else
+ if lrr.id3 = -1 then
+ lrr := rr;
+ elsif lrr.id3 = rr.id3 then
+ lrr.cost := lrr.cost + rr.cost;
+ if rr.id2 = -1 then
+ rr.id2 := lrr.id2;
+ end if;
+ else
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ lrr := rr;
+ end if;
+ end if;
+ end loop;
+ end loop;
+
+ seq := seq + 1;
+ lrr.seq := seq;
+ return next lrr;
+ return;
+end;
+$body$
+ language plpgsql stable
+ cost 100
+ rows 1000;
+
+
+
+----------------------------
+-- MANY TO MANY
+----------------------------
+
+
+CREATE OR REPLACE FUNCTION _pgr_maxflow(
+ edges_sql TEXT,
+ sources ANYARRAY,
+ targets ANYARRAY,
+ algorithm INTEGER DEFAULT 1,
+ only_flow BOOLEAN DEFAULT false,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'max_flow_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+
+------------------------------------
+-- 3 pgr_edmondsKarp
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_edmondsKarp(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 3);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 2 boykov_kolmogorov
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_boykovKolmogorov(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 2);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+------------------------------------
+-- 1 pgr_pushRelabel
+------------------------------------
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ BIGINT,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_pushRelabel(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT *
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], 1);
+ $BODY$
+ LANGUAGE sql VOLATILE;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT flow
+ FROM _pgr_maxflow(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], algorithm := 1, only_flow := true);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices BIGINT,
+ sink_vertices ANYARRAY
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, ARRAY[$2]::BIGINT[], $3::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_maxFlow(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices BIGINT
+ )
+ RETURNS BIGINT AS
+ $BODY$
+ SELECT *
+ FROM pgr_maxflow($1, $2::BIGINT[], ARRAY[$3]::BIGINT[]);
+ $BODY$
+ LANGUAGE SQL VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxCardinalityMatch(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'edge_disjoint_paths_many_to_many'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ bigint,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ bigint,
+ ANYARRAY,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.end_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_edgeDisjointPaths(
+ TEXT,
+ ANYARRAY,
+ BIGINT,
+ IN directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ SELECT a.seq, a.path_id, a.path_seq, a.start_vid, a.node, a.edge, a.cost, a.agg_cost
+ FROM pgr_edgeDisjointPaths(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4) AS a;
+ $BODY$
+LANGUAGE sql VOLATILE;
+
+
+CREATE OR REPLACE FUNCTION pgr_contractGraph(
+ edges_sql TEXT,
+ contraction_order BIGINT[],
+ max_cycles integer DEFAULT 1,
+ forbidden_vertices BIGINT[] DEFAULT ARRAY[]::BIGINT[],
+ directed BOOLEAN DEFAULT true,
+ OUT seq integer,
+ OUT type TEXT,
+ OUT id BIGINT,
+ OUT contracted_vertices BIGINT[],
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost float)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'contractGraph'
+ LANGUAGE c VOLATILE;
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliver(
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_cell_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliver'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_pickDeliverEuclidean (
+ TEXT, -- orders_sql
+ TEXT, -- vehicles_sql
+ factor FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+ initial_sol INTEGER DEFAULT 4,
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'pickDeliverEuclidean'
+ LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_vrpOneDepot(
+ TEXT, -- customers_sql
+ TEXT, -- vehicles_sql
+ TEXT, -- matrix_sql
+ INTEGER, -- depot_id
+
+ OUT seq INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT vehicle_id BIGINT,
+ OUT stop_seq INTEGER,
+ OUT stop_type INTEGER,
+ OUT stop_id BIGINT,
+ OUT order_id BIGINT,
+ OUT cargo FLOAT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+orders_sql TEXT;
+trucks_sql TEXT;
+matrix_sql TEXT;
+final_sql TEXT;
+BEGIN
+
+ orders_sql = $$WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ pickups AS (
+ SELECT id, x AS p_x, y AS p_y, open_time AS p_open, close_time AS p_close, service_time AS p_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vrp_orders.id AS id, order_unit AS demand, pickups.id AS p_node_id, p_x, p_y, p_open, p_close, p_service,
+ vrp_orders.id AS d_node_id, x AS d_x, y AS d_y, open_time AS d_open, close_time AS d_close, service_time AS d_service
+ FROM vrp_orders, pickups
+ WHERE vrp_orders.id != $$ || $4;
+
+
+ trucks_sql = $$ WITH
+ vrp_orders AS ($$ || $1 || $$ ),
+ vrp_vehicles AS ($$ || $2 || $$ ),
+ starts AS (
+ SELECT id AS start_node_id, x AS start_x, y AS start_y, open_time AS start_open, close_time AS start_close, service_time AS start_service
+ FROM vrp_orders
+ WHERE id = $$ || $4 || $$
+ )
+ SELECT vehicle_id AS id, capacity, starts.* FROM vrp_vehicles, starts;
+ $$;
+
+ final_sql = '
+ SELECT * FROM _pgr_pickDeliver(
+ $$' || orders_sql || '$$,
+ $$' || trucks_sql || '$$,
+ $$' || $3 || '$$,
+ max_cycles := 2,
+ initial_sol := 4 ); ';
+
+ RAISE DEBUG '%', orders_sql;
+ RAISE DEBUG '%', trucks_sql;
+ RAISE DEBUG '%', $3;
+ RAISE DEBUG '%', final_sql;
+
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+-----------------------------------------------------------------------
+-- Core function for vrp with sigle depot computation
+-- See README for description
+-----------------------------------------------------------------------
+--
+--
+
+create or replace function pgr_vrpOneDepot(
+ order_sql text,
+ vehicle_sql text,
+ cost_sql text,
+ depot_id integer,
+
+ OUT oid integer,
+ OUT opos integer,
+ OUT vid integer,
+ OUT tarrival integer,
+ OUT tdepart integer)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT order_id::INTEGER, stop_seq::INTEGER, vehicle_id::INTEGER, arrival_time::INTEGER, departure_time::INTEGER
+ FROM _pgr_vrpOneDepot($1, $2,
+ '
+ SELECT src_id AS start_vid, dest_id AS end_vid, traveltime AS agg_cost FROM ('||$3||') AS a
+ ',
+ $4
+ ) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_gsoc_vrppdtw(
+ customers_sql TEXT,
+ max_vehicles INTEGER,
+ capacity FLOAT,
+ speed FLOAT DEFAULT 1,
+ max_cycles INTEGER DEFAULT 10,
+
+ OUT seq INTEGER,
+ OUT vehicle_id INTEGER,
+ OUT vehicle_seq INTEGER,
+ OUT stop_id BIGINT,
+ OUT travel_time FLOAT,
+ OUT arrival_time FLOAT,
+ OUT wait_time FLOAT,
+ OUT service_time FLOAT,
+ OUT departure_time FLOAT
+)
+RETURNS SETOF RECORD AS
+$BODY$
+DECLARE
+ orders_sql TEXT;
+ vehicles_sql TEXT;
+ final_sql TEXT;
+BEGIN
+ orders_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ pickups AS (
+ SELECT id, demand, x as p_x, y as p_y, opentime as p_open, closetime as p_close, servicetime as p_service
+ FROM customer_data WHERE pindex = 0 AND id != 0
+ ),
+ deliveries AS (
+ SELECT pindex AS id, x as d_x, y as d_y, opentime as d_open, closetime as d_close, servicetime as d_service
+ FROM customer_data WHERE dindex = 0 AND id != 0
+ )
+ SELECT * FROM pickups JOIN deliveries USING(id) ORDER BY pickups.id
+ $$;
+
+ vehicles_sql = $$WITH
+ customer_data AS ($$ || customers_sql || $$ )
+ SELECT id, x AS start_x, y AS start_y,
+ opentime AS start_open, closetime AS start_close, $$ ||
+ capacity || $$ AS capacity, $$ || max_vehicles || $$ AS number, $$ || speed || $$ AS speed
+ FROM customer_data WHERE id = 0 LIMIT 1
+ $$;
+-- seq | vehicle_id | vehicle_seq | stop_id | travel_time | arrival_time | wait_time | service_time | departure_time
+ final_sql = $$ WITH
+ customer_data AS ($$ || customers_sql || $$ ),
+ p_deliver AS (SELECT * FROM _pgr_pickDeliverEuclidean('$$ || orders_sql || $$', '$$ || vehicles_sql || $$', 1, $$ || max_cycles || $$ )),
+ picks AS (SELECT p_deliver.*, pindex, dindex, id AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 2)),
+ delivers AS (SELECT p_deliver.*, pindex, dindex, dindex AS the_id FROM p_deliver JOIN customer_data ON (id = order_id AND stop_type = 3)),
+ depots AS (SELECT p_deliver.*, 0 as pindex, 0 as dindex, 0 AS the_id FROM p_deliver WHERE (stop_type IN (-1,1,6))),
+ the_union AS (SELECT * FROM picks UNION SELECT * FROM delivers UNION SELECT * from depots)
+
+ SELECT (row_number() over(ORDER BY a.seq))::INTEGER, vehicle_seq, a.stop_seq, the_id::BIGINT, a.travel_time, a.arrival_time, a.wait_time, a.service_time, a.departure_time
+ FROM (SELECT * FROM the_union) AS a ORDER BY a.seq
+ $$;
+ RETURN QUERY EXECUTE final_sql;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+CREATE OR REPLACE FUNCTION pgr_gsoc_vrppdtw(
+ sql text,
+ vehicle_num INTEGER,
+ capacity INTEGER
+)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+customers_sql TEXT;
+BEGIN
+ RETURN query
+ SELECT a.seq, vehicle_id::INTEGER AS id1, stop_id::INTEGER AS id2, departure_time AS cost
+ FROM _pgr_gsoc_vrppdtw($1, $2, $3, 1, 30) AS a WHERE vehicle_id NOT IN (-2);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN,
+ driving_side CHAR,
+ details BOOLEAN,
+
+ only_cost BOOLEAN DEFAULT false, -- gets path
+ normal BOOLEAN DEFAULT true, -- false for many to onu
+
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'withPoints'
+LANGUAGE c VOLATILE;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.seq, a.path_seq, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], ARRAY[$4]::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pid BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pid BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], ARRAY[$4]::bigint[], $5, $6, $7, FALSE, FALSE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_withPoints(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+ details BOOLEAN DEFAULT false,
+
+ OUT seq INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT)
+RETURNS SETOF RECORD AS
+$BODY$
+SELECT a.seq, a.path_seq, a.start_pid, a.end_pid, a.node, a.edge, a.cost, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::bigint[], $4::bigint[], $5, $6, $7) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ BIGINT,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT $3, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, ARRAY[$3]::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ BIGINT,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, $4, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], ARRAY[$4]::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCost(
+ edges_sql TEXT,
+ points_sql TEXT,
+ start_pids ANYARRAY,
+ end_pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_pid BIGINT,
+ OUT end_pid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints(_pgr_get_statement($1), $2, $3::BIGINT[], $4::BIGINT[], $5, $6, TRUE, TRUE) AS a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION _pgr_withPointsVia(
+ sql text,
+ via_edges bigint[],
+ fraction float[],
+ directed BOOLEAN DEFAULT TRUE,
+
+ OUT seq INTEGER,
+ OUT path_id INTEGER,
+ OUT path_seq INTEGER,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT node BIGINT,
+ OUT edge BIGINT,
+ OUT cost FLOAT,
+ OUT agg_cost FLOAT,
+ OUT route_agg_cost FLOAT)
+
+ RETURNS SETOF RECORD AS
+ $BODY$
+ DECLARE
+ has_rcost boolean;
+ sql_new_vertices text := ' ';
+ sql_on_vertex text;
+ v_union text := ' ';
+ dummyrec record;
+ rec1 record;
+ via_vertices int[];
+ sql_safe text;
+ new_edges text;
+ BEGIN
+ BEGIN
+ sql_safe = 'SELECT id, source, target, cost, reverse_cost FROM ('|| sql || ') AS __a';
+
+ EXECUTE 'select reverse_cost, pg_typeof(reverse_cost)::text as rev_type from ('||sql_safe||' ) AS __b__ limit 1 ' INTO rec1;
+ has_rcost := true;
+ EXCEPTION
+ WHEN OTHERS THEN
+ has_rcost = false;
+ END;
+
+
+ IF array_length(via_edges, 1) != array_length(fraction, 1) then
+ RAISE EXCEPTION 'The length of via_edges is different of length of via_edges';
+ END IF;
+
+ FOR i IN 1 .. array_length(via_edges, 1)
+ LOOP
+ IF fraction[i] = 0 THEN
+ sql_on_vertex := 'SELECT source FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.source;
+ ELSE IF fraction[i] = 1 THEN
+ sql_on_vertex := 'SELECT target FROM ('|| sql || ') __a where id = ' || via_edges[i];
+ EXECUTE sql_on_vertex into dummyrec;
+ via_vertices[i] = dummyrec.target;
+ ELSE
+ via_vertices[i] = -i;
+ IF has_rcost THEN
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost,
+ reverse_cost * (1 - ' || fraction[i] || ') AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost,
+ reverse_cost * ' || fraction[i] || ' AS reverse_cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' where id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ ELSE
+ sql_new_vertices = sql_new_vertices || v_union ||
+ '(SELECT id, source, ' || -i || ' AS target, cost * ' || fraction[i] || ' AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')
+ UNION
+ (SELECT id, ' || -i || ' AS source, target, cost * (1 -' || fraction[i] || ') AS cost
+ FROM (SELECT * FROM (' || sql || ') __b' || i || ' WHERE id = ' || via_edges[i] || ') __a' || i ||')';
+ v_union = ' UNION ';
+ END IF;
+ END IF;
+ END IF;
+ END LOOP;
+
+ IF sql_new_vertices = ' ' THEN
+ new_edges := sql;
+ ELSE
+ IF has_rcost THEN
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost,
+ lead(cost) OVER w - cost AS reverse_cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL),
+ second_part AS ( SELECT * FROM (SELECT id, lead(source) OVER w AS source, source as target,
+ reverse_cost - lead(reverse_cost) OVER w AS cost,
+ reverse_cost - lead(reverse_cost) OVER w AS reverse_cost
+ FROM the_union WHERE target > 0 and reverse_cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY reverse_cost ASC) ) as n2
+ WHERE source IS NOT NULL),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part)
+ UNION
+ (SELECT * FROM second_part) ) _union )
+ SELECT * FROM more_union';
+ ELSE
+ new_edges:= 'WITH
+ original AS ( ' || sql || '),
+ the_union AS ( ' || sql_new_vertices || '),
+ first_part AS ( SELECT * FROM (SELECT id, target AS source, lead(target) OVER w AS target,
+ lead(cost) OVER w - cost AS cost
+ FROM the_union WHERE source > 0 AND cost > 0
+ WINDOW w AS (PARTITION BY id ORDER BY cost ASC) ) as n2
+ WHERE target IS NOT NULL ),
+ more_union AS ( SELECT * from (
+ (SELECT * FROM original)
+ UNION
+ (SELECT * FROM the_union)
+ UNION
+ (SELECT * FROM first_part) ) _union )
+ SELECT * FROM more_union';
+ END IF;
+ END IF;
+
+ -- raise notice '%', new_edges;
+ sql_new_vertices := sql_new_vertices || v_union || ' (' || sql || ')';
+ RETURN query SELECT *
+ FROM pgr_dijkstraVia(new_edges, via_vertices, directed, has_rcost);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_lineGraph(
+ TEXT, -- edges_sql
+ directed BOOLEAN DEFAULT true,
+ OUT seq INTEGER,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT cost FLOAT,
+ OUT reverse_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'lineGraph'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+CREATE OR REPLACE FUNCTION pgr_connectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'connectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_strongComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the node in the component
+ OUT n_seq INTEGER, -- nth_seq of the node in the component
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'strongComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_biconnectedComponents(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT component BIGINT, -- the lowest number of the edge in the component
+ OUT n_seq INTEGER, -- nth_seq of the edge in the component
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'biconnectedComponents'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_articulationPoints(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT node BIGINT) -- the number of the node
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'articulationPoints'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_bridges(
+ TEXT, -- edges_sql
+ OUT seq INTEGER, -- seq
+ OUT edge BIGINT) -- the number of the edge
+
+RETURNS SETOF RECORD AS
+'$libdir/libpgrouting-2.5', 'bridges'
+LANGUAGE c IMMUTABLE STRICT;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createtopology(edge_table text, tolerance double precision,
+ the_geom text default 'the_geom', id text default 'id',
+ source text default 'source', target text default 'target',rows_where text default 'true',
+ clean boolean default FALSE)
+RETURNS VARCHAR AS
+$BODY$
+
+DECLARE
+ points record;
+ sridinfo record;
+ source_id bigint;
+ target_id bigint;
+ totcount bigint;
+ rowcount bigint;
+ srid integer;
+ sql text;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ notincluded integer;
+ i integer;
+ naming record;
+ info record;
+ flag boolean;
+ query text;
+ idtype text;
+ gtype text;
+ sourcetype text;
+ targettype text;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+ msgKind int;
+ emptied BOOLEAN;
+
+BEGIN
+ msgKind = 1; -- notice
+ fnName = 'pgr_createTopology';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createTopology(''%'', %, ''%'', ''%'', ''%'', ''%'', rows_where := ''%'', clean := %)',edge_table,tolerance,the_geom,id,source,target,rows_where, clean;
+ execute 'show client_min_messages' into debuglevel;
+
+
+ raise notice 'Performing checks, please wait .....';
+
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2,fnName);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2,fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2,fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2,fnName);
+
+
+ err = sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname;
+ perform _pgr_onError( err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+ select * into idtype from _pgr_getColumnType(sname,tname,idname,1, fnName);
+
+ err = idtype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column id:'|| idname, ' Expected type of '|| idname || ' is integer,smallint or bigint but '||idtype||' was found');
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source:'|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target:'|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or bigint but '||targettype||' was found');
+
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating indices in edge table';
+ perform _pgr_createIndex(sname, tname , idname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+
+ gname=quote_ident(gname);
+ idname=quote_ident(idname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ raise DEBUG ' --> OK';
+
+
+
+
+
+ BEGIN
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NOT NULL AND '||
+ idname||' IS NOT NULL)=false '||rows_where;
+ EXECUTE SQL into notincluded;
+
+ if clean then
+ raise debug 'Cleaning previous Topology ';
+ execute 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = NULL,'||targetname||' = NULL';
+ else
+ raise debug 'Creating topology for edges with non assigned topology';
+ if rows_where=' AND (true)' then
+ rows_where= ' and ('||quote_ident(sourcename)||' is null or '||quote_ident(targetname)||' is null)';
+ end if;
+ end if;
+ -- my thoery is that the select Count(*) will never go through here
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)
+ || ',0,' || quote_literal(fnName) ||' )' into naming;
+ emptied = false;
+ set client_min_messages to warning;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ if clean then
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ emptied = true;
+ end if;
+ ELSE -- table doesn't exist
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ emptied = true;
+ END IF;
+ IF (emptied) THEN
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ perform _pgr_createIndex(vertname , 'the_geom'::text , 'gist'::text);
+ END IF;
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id"}''::text[])' into naming;
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: something went wrong when initializing the verties table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ raise notice 'Creating Topology, Please wait...';
+ rowcount := 0;
+ FOR points IN EXECUTE 'SELECT ' || idname || '::bigint AS id,'
+ || ' _pgr_StartPoint(' || gname || ') AS source,'
+ || ' _pgr_EndPoint(' || gname || ') AS target'
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || gname || ' IS NOT NULL AND ' || idname||' IS NOT NULL '||rows_where
+ LOOP
+
+ rowcount := rowcount + 1;
+ IF rowcount % 1000 = 0 THEN
+ RAISE NOTICE '% edges processed', rowcount;
+ END IF;
+
+
+ source_id := _pgr_pointToId(points.source, tolerance,vertname,srid);
+ target_id := _pgr_pointToId(points.target, tolerance,vertname,srid);
+ BEGIN
+ sql := 'UPDATE ' || _pgr_quote_ident(tabname) ||
+ ' SET '||sourcename||' = '|| source_id::text || ','||targetname||' = ' || target_id::text ||
+ ' WHERE ' || idname || ' = ' || points.id::text;
+
+ IF sql IS NULL THEN
+ RAISE NOTICE 'WARNING: UPDATE % SET source = %, target = % WHERE % = % ', tabname, source_id::text, target_id::text, idname, points.id::text;
+ ELSE
+ EXECUTE sql;
+ END IF;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE '%', SQLERRM;
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ end;
+ END LOOP;
+ raise notice '-------------> TOPOLOGY CREATED FOR % edges', rowcount;
+ RAISE NOTICE 'Rows with NULL geometry or NULL id: %',notincluded;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname), _pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+
+
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_createTopology(text, double precision,text,text,text,text,text,boolean)
+IS 'args: edge_table,tolerance, the_geom:=''the_geom'',source:=''source'', target:=''target'',rows_where:=''true'' - fills columns source and target in the geometry table and creates a vertices table for selected rows';
+
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzegraph(edge_table text,tolerance double precision,the_geom text default 'the_geom',id text default 'id',source text default 'source',target text default 'target',rows_where text default 'true')
+RETURNS character varying AS
+$BODY$
+
+DECLARE
+ points record;
+ seg record;
+ naming record;
+ sridinfo record;
+ srid integer;
+ ecnt integer;
+ vertname text;
+ sname text;
+ tname text;
+ vname text;
+ idname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ geotype text;
+ gname text;
+ tabName text;
+ flag boolean ;
+ query text;
+ selectionquery text;
+ i integer;
+ tot integer;
+ NumIsolated integer;
+ numdeadends integer;
+ numgaps integer;
+ NumCrossing integer;
+ numRings integer;
+ debuglevel text;
+
+
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeGraph(''%'',%,''%'',''%'',''%'',''%'',''%'')',edge_table,tolerance,the_geom,id,source,target,rows_where;
+ raise notice 'Performing checks, please wait ...';
+ execute 'show client_min_messages' into debuglevel;
+
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise DEBUG ' --> OK';
+
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","cnt","chk"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET cnt=0 ,chk=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into idname from _pgr_getColumnName(sname, tname,id,2);
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,idname,gname) or targetname in (idname,gname) or idname=gname, 2,
+ 'pgr_analyzeGraph', 'Two columns share the same name', 'Parameter names for id,the_geom,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ 'pgr_analyzeGraph', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ EXECUTE QUERY INTO sridinfo;
+
+ perform _pgr_onError( sridinfo IS NULL OR sridinfo.srid IS NULL,2,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname,
+ 'SRID of '||gname||' is '||sridinfo.srid);
+
+ IF sridinfo IS NULL OR sridinfo.srid IS NULL THEN
+ RAISE NOTICE ' Can not determine the srid of the geometry "%" in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM;--issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when checking for SRID of % in table %', the_geom,tabname;
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking indices in edge table';
+ perform _pgr_createIndex(tabname , idname , 'btree');
+ perform _pgr_createIndex(tabname , sourcename , 'btree');
+ perform _pgr_createIndex(tabname , targetname , 'btree');
+ perform _pgr_createIndex(tabname , gname , 'gist');
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+ idname=quote_ident(idname);
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking indices';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ query='select count(*) from '||_pgr_quote_ident(tabname)||' where true '||rows_where;
+ EXECUTE query into ecnt;
+ raise DEBUG '-->Rows Where condition: OK';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ RAISE NOTICE '%',query;
+ RETURN 'FAIL';
+ END;
+
+ selectionquery ='with
+ selectedRows as( (select '||sourcename||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||')
+ union
+ (select '||targetname||' as id from '||_pgr_quote_ident(tabname)||' where true '||rows_where||'))';
+
+
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for dead ends. Please wait...';
+ query= 'with countingsource as (select a.'||sourcename||' as id,count(*) as cnts
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||sourcename||')
+ ,countingtarget as (select a.'||targetname||' as id,count(*) as cntt
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) a group by a.'||targetname||')
+ ,totalcount as (select id,case when cnts is null and cntt is null then 0
+ when cnts is null then cntt
+ when cntt is null then cnts
+ else cnts+cntt end as totcnt
+ from ('||_pgr_quote_ident(vertname)||' as a left
+ join countingsource as t using(id) ) left join countingtarget using(id))
+ update '||_pgr_quote_ident(vertname)||' as a set cnt=totcnt from totalcount as b where a.id=b.id';
+ raise debug '%',query;
+ execute query;
+ query=selectionquery||'
+ SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE cnt=1 and id in (select id from selectedRows)';
+ raise debug '%',query;
+ execute query INTO numdeadends;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'Got %', SQLERRM; --issue 210,211,213
+ RAISE NOTICE 'ERROR: something went wrong when analizing for dead ends';
+ RETURN 'FAIL';
+ END;
+
+
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for gaps. Please wait...';
+ query = 'with
+ buffer as (select id,st_buffer(the_geom,'||tolerance||') as buff from '||_pgr_quote_ident(vertname)||' where cnt=1)
+ ,veryclose as (select b.id,st_crosses(a.'||gname||',b.buff) as flag
+ from (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a
+ join buffer as b on (a.'||gname||'&&b.buff)
+ where '||sourcename||'!=b.id and '||targetname||'!=b.id )
+ update '||_pgr_quote_ident(vertname)||' set chk=1 where id in (select distinct id from veryclose where flag=true)';
+ raise debug '%' ,query;
+ execute query;
+ GET DIAGNOSTICS numgaps= ROW_COUNT;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for gaps';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for isolated edges. Please wait...';
+ query=selectionquery|| ' SELECT count(*) FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||' ) as a,
+ '||_pgr_quote_ident(vertname)||' as b,
+ '||_pgr_quote_ident(vertname)||' as c
+ WHERE b.id in (select id from selectedRows) and a.'||sourcename||' =b.id
+ AND b.cnt=1 AND a.'||targetname||' =c.id
+ AND c.cnt=1';
+ raise debug '%' ,query;
+ execute query INTO NumIsolated;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for isolated edges';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for ring geometries. Please wait...';
+ execute 'SELECT geometrytype('||gname||') FROM '||_pgr_quote_ident(tabname) limit 1 into geotype;
+ IF (geotype='MULTILINESTRING') THEN
+ query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing(st_linemerge('||gname||'))';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ ELSE query ='SELECT count(*) FROM '||_pgr_quote_ident(tabname)||'
+ WHERE true '||rows_where||' and st_isRing('||gname||')';
+ raise debug '%' ,query;
+ execute query INTO numRings;
+ END IF;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for ring geometries';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE NOTICE 'Analyzing for intersections. Please wait...';
+ query = 'select count(*) from (select distinct case when a.'||idname||' < b.'||idname||' then a.'||idname||'
+ else b.'||idname||' end,
+ case when a.'||idname||' < b.'||idname||' then b.'||idname||'
+ else a.'||idname||' end
+ FROM (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as a
+ JOIN (select * from '||_pgr_quote_ident(tabname)||' where true '||rows_where||') as b
+ ON (a.'|| gname||' && b.'||gname||')
+ WHERE a.'||idname||' != b.'||idname|| '
+ and (a.'||sourcename||' in (b.'||sourcename||',b.'||targetname||')
+ or a.'||targetname||' in (b.'||sourcename||',b.'||targetname||')) = false
+ and st_intersects(a.'||gname||', b.'||gname||')=true) as d ';
+ raise debug '%' ,query;
+ execute query INTO numCrossing;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong when Analyzing for intersections';
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ RAISE NOTICE ' ANALYSIS RESULTS FOR SELECTED EDGES:';
+ RAISE NOTICE ' Isolated segments: %', NumIsolated;
+ RAISE NOTICE ' Dead ends: %', numdeadends;
+ RAISE NOTICE 'Potential gaps found near dead ends: %', numgaps;
+ RAISE NOTICE ' Intersections detected: %',numCrossing;
+ RAISE NOTICE ' Ring geometries: %',numRings;
+
+
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+COMMENT ON FUNCTION pgr_analyzeGraph(text,double precision,text,text,text,text,text) IS 'args: edge_table, tolerance,the_geom:=''the_geom'',id:=''id'',source column:=''source'', target column:=''target'' rows_where:=''true'' - creates a vertices table based on the geometry for selected rows';
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_analyzeOneway(
+ edge_table text,
+ s_in_rules TEXT[],
+ s_out_rules TEXT[],
+ t_in_rules TEXT[],
+ t_out_rules TEXT[],
+ two_way_if_null boolean default true,
+ oneway text default 'oneway',
+ source text default 'source',
+ target text default 'target')
+ RETURNS text AS
+$BODY$
+
+
+DECLARE
+ rule text;
+ ecnt integer;
+ instr text;
+ naming record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ owname text;
+ sourcename text;
+ targetname text;
+ sourcetype text;
+ targettype text;
+ vertname text;
+ debuglevel text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_analyzeOneway(''%'',''%'',''%'',''%'',''%'',''%'',''%'',''%'',%)',
+ edge_table, s_in_rules , s_out_rules, t_in_rules, t_out_rules, oneway, source ,target,two_way_if_null ;
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',2)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the table name';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking Vertices table';
+ execute 'select * from _pgr_checkVertTab('||quote_literal(vertname) ||', ''{"id","ein","eout"}''::text[])' into naming;
+ execute 'UPDATE '||_pgr_quote_ident(vertname)||' SET eout=0 ,ein=0';
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the vertices table';
+ RETURN 'FAIL';
+ END;
+
+
+ BEGIN
+ raise debug 'Checking column names in edge table';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2);
+ select * into owname from _pgr_getColumnName(sname, tname,oneway,2);
+
+
+ perform _pgr_onError( sourcename in (targetname,owname) or targetname=owname, 2,
+ '_pgr_createToplogy', 'Two columns share the same name', 'Parameter names for oneway,source and target must be different',
+ 'Column names are OK');
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column names';
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1);
+
+
+ perform _pgr_onError(sourcetype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found',
+ 'Type of Column '|| sourcename || ' is ' || sourcetype);
+
+ perform _pgr_onError(targettype not in('integer','smallint','bigint') , 2,
+ '_pgr_createTopology', 'Wrong type of Column '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found',
+ 'Type of Column '|| targetname || ' is ' || targettype);
+
+ raise DEBUG ' --> OK';
+ EXCEPTION WHEN raise_exception THEN
+ RAISE NOTICE 'ERROR: something went wrong checking the column types';
+ RETURN 'FAIL';
+ END;
+
+
+
+ RAISE NOTICE 'Analyzing graph for one way street errors.';
+
+ rule := CASE WHEN two_way_if_null
+ THEN owname || ' IS NULL OR '
+ ELSE '' END;
+
+ instr := '''' || array_to_string(s_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+
+ RAISE NOTICE 'Analysis 25%% complete ...';
+
+ instr := '''' || array_to_string(t_in_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set ein=coalesce(ein,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 50%% complete ...';
+
+ instr := '''' || array_to_string(s_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| sourcename ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| sourcename ||' ) b
+ where a.id=b.'|| sourcename;
+ RAISE NOTICE 'Analysis 75%% complete ...';
+
+ instr := '''' || array_to_string(t_out_rules, ''',''') || '''';
+ EXECUTE 'update '||_pgr_quote_ident(vertname)||' a set eout=coalesce(eout,0)+b.cnt
+ from (
+ select '|| targetname ||', count(*) as cnt
+ from '|| tabname ||'
+ where '|| rule || owname ||' in ('|| instr ||')
+ group by '|| targetname ||' ) b
+ where a.id=b.'|| targetname;
+
+ RAISE NOTICE 'Analysis 100%% complete ...';
+
+ EXECUTE 'SELECT count(*) FROM '||_pgr_quote_ident(vertname)||' WHERE ein=0 or eout=0' INTO ecnt;
+
+ RAISE NOTICE 'Found % potential problems in directionality' ,ecnt;
+
+ RETURN 'OK';
+
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_analyzeOneway(text,TEXT[],TEXT[], TEXT[],TEXT[],boolean,text,text,text)
+IS 'args:edge_table , s_in_rules , s_out_rules, t_in_rules , t_out_rules, two_way_if_null:= true, oneway:=''oneway'',source:= ''source'',target:=''target'' - Analizes the directionality of the edges based on the rules';
+
+
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_createverticestable(
+ edge_table text,
+ the_geom text DEFAULT 'the_geom'::text,
+ source text DEFAULT 'source'::text,
+ target text DEFAULT 'target'::text,
+ rows_where text DEFAULT 'true'::text
+)
+ RETURNS text AS
+$BODY$
+DECLARE
+ naming record;
+ sridinfo record;
+ sname text;
+ tname text;
+ tabname text;
+ vname text;
+ vertname text;
+ gname text;
+ sourcename text;
+ targetname text;
+ query text;
+ ecnt bigint;
+ srid integer;
+ sourcetype text;
+ targettype text;
+ sql text;
+ totcount integer;
+ i integer;
+ notincluded integer;
+ included integer;
+ debuglevel text;
+ dummyRec text;
+ fnName text;
+ err bool;
+
+
+BEGIN
+ fnName = 'pgr_createVerticesTable';
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_createVerticesTable(''%'',''%'',''%'',''%'',''%'')',edge_table,the_geom,source,target,rows_where;
+ execute 'show client_min_messages' into debuglevel;
+
+ raise notice 'Performing checks, please wait .....';
+
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('|| quote_literal(edge_table)
+ || ',2,' || quote_literal(fnName) ||' )' into naming;
+
+ sname=naming.sname;
+ tname=naming.tname;
+ tabname=sname||'.'||tname;
+ vname=tname||'_vertices_pgr';
+ vertname= sname||'.'||vname;
+ rows_where = ' AND ('||rows_where||')';
+ raise debug '--> Edge table exists: OK';
+
+ raise debug 'Checking column names';
+ select * into sourcename from _pgr_getColumnName(sname, tname,source,2, fnName);
+ select * into targetname from _pgr_getColumnName(sname, tname,target,2, fnName);
+ select * into gname from _pgr_getColumnName(sname, tname,the_geom,2, fnName);
+
+
+ err = sourcename in (targetname,gname) or targetname=gname;
+ perform _pgr_onError(err, 2, fnName,
+ 'Two columns share the same name', 'Parameter names for the_geom,source and target must be different');
+ raise debug '--> Column names: OK';
+
+ raise debug 'Checking column types in edge table';
+ select * into sourcetype from _pgr_getColumnType(sname,tname,sourcename,1, fnName);
+ select * into targettype from _pgr_getColumnType(sname,tname,targetname,1, fnName);
+
+
+ err = sourcetype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column source: '|| sourcename, ' Expected type of '|| sourcename || ' is integer,smallint or bigint but '||sourcetype||' was found');
+
+ err = targettype not in('integer','smallint','bigint');
+ perform _pgr_onError(err, 2, fnName,
+ 'Wrong type of Column target: '|| targetname, ' Expected type of '|| targetname || ' is integer,smallint or biginti but '||targettype||' was found');
+
+ raise debug '-->Column types:OK';
+
+ raise debug 'Checking SRID of geometry column';
+ query= 'SELECT ST_SRID(' || quote_ident(gname) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(tabname)
+ || ' WHERE ' || quote_ident(gname)
+ || ' IS NOT NULL LIMIT 1';
+ raise debug '%',query;
+ EXECUTE query INTO sridinfo;
+
+ err = sridinfo IS NULL OR sridinfo.srid IS NULL;
+ perform _pgr_onError(err, 2, fnName,
+ 'Can not determine the srid of the geometry '|| gname ||' in table '||tabname, 'Check the geometry of column '||gname);
+ srid := sridinfo.srid;
+ raise DEBUG ' --> OK';
+
+ raise debug 'Checking and creating Indices';
+ perform _pgr_createIndex(sname, tname , sourcename , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , targetname , 'btree'::text);
+ perform _pgr_createIndex(sname, tname , gname , 'gist'::text);
+ raise DEBUG '-->Check and create indices: OK';
+
+ gname=quote_ident(gname);
+ sourcename=quote_ident(sourcename);
+ targetname=quote_ident(targetname);
+
+
+ BEGIN
+ raise debug 'Checking Condition';
+ -- issue #193 & issue #210 & #213
+ -- this sql is for trying out the where clause
+ -- the select * is to avoid any column name conflicts
+ -- limit 1, just try on first record
+ -- if the where clasuse is ill formed it will be caught in the exception
+ sql = 'select * from '||_pgr_quote_ident(tabname)||' WHERE true'||rows_where ||' limit 1';
+ EXECUTE sql into dummyRec;
+ -- end
+
+ -- if above where clasue works this one should work
+ -- any error will be caught by the exception also
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' WHERE (' || gname || ' IS NULL or '||
+ sourcename||' is null or '||targetname||' is null)=true '||rows_where;
+ raise debug '%',sql;
+ EXECUTE SQL into notincluded;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Condition is not correct, please execute the following query to test your condition';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+
+
+
+ BEGIN
+ raise DEBUG 'initializing %',vertname;
+ execute 'select * from _pgr_getTableName('||quote_literal(vertname)||',0)' into naming;
+ IF sname=naming.sname AND vname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(vertname)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(vname)||','||quote_literal('the_geom')||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(vertname)||' (id bigserial PRIMARY KEY,cnt integer,chk integer,ein integer,eout integer)';
+ END IF;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(vname)||','||
+ quote_literal('the_geom')||','|| srid||', '||quote_literal('POINT')||', 2)';
+ execute 'CREATE INDEX '||quote_ident(vname||'_the_geom_idx')||' ON '||_pgr_quote_ident(vertname)||' USING GIST (the_geom)';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Got %', SQLERRM; -- issue 210,211
+ RAISE NOTICE 'ERROR: Initializing vertex table';
+ RAISE NOTICE '%',sql;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ raise notice 'Populating %, please wait...',vertname;
+ sql= 'with
+ lines as ((select distinct '||sourcename||' as id, _pgr_startpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||')
+ union (select distinct '||targetname||' as id,_pgr_endpoint(st_linemerge('||gname||')) as the_geom from '||_pgr_quote_ident(tabname)||
+ ' where ('|| gname || ' IS NULL
+ or '||sourcename||' is null
+ or '||targetname||' is null)=false
+ '||rows_where||'))
+ ,numberedLines as (select row_number() OVER (ORDER BY id) AS i,* from lines )
+ ,maxid as (select id,max(i) as maxi from numberedLines group by id)
+ insert into '||_pgr_quote_ident(vertname)||'(id,the_geom) (select id,the_geom from numberedLines join maxid using(id) where i=maxi order by id)';
+ RAISE debug '%',sql;
+ execute sql;
+ GET DIAGNOSTICS totcount = ROW_COUNT;
+
+ sql = 'select count(*) from '||_pgr_quote_ident(tabname)||' a, '||_pgr_quote_ident(vertname)||' b
+ where '||sourcename||'=b.id and '|| targetname||' in (select id from '||_pgr_quote_ident(vertname)||')';
+ RAISE debug '%',sql;
+ execute sql into included;
+
+
+
+ execute 'select max(id) from '||_pgr_quote_ident(vertname) into ecnt;
+ execute 'SELECT setval('||quote_literal(vertname||'_id_seq')||','||coalesce(ecnt,1)||' , false)';
+ raise notice ' -----> VERTICES TABLE CREATED WITH % VERTICES', totcount;
+ raise notice ' FOR % EDGES', included+notincluded;
+ RAISE NOTICE ' Edges with NULL geometry,source or target: %',notincluded;
+ RAISE NOTICE ' Edges processed: %',included;
+ Raise notice 'Vertices table for table % is: %',_pgr_quote_ident(tabname),_pgr_quote_ident(vertname);
+ raise notice '----------------------------------------------';
+ END;
+
+ RETURN 'OK';
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'Unexpected error %', SQLERRM; -- issue 210,211
+ RETURN 'FAIL';
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+COMMENT ON FUNCTION pgr_createVerticesTable(text,text,text,text,text)
+IS 'args: edge_table, the_geom:=''the_geom'',source:=''source'', target:=''target'' rows_where:=''true'' - creates a vertices table based on the source and target identifiers for selected rows';
+
+
+CREATE OR REPLACE FUNCTION pgr_nodeNetwork(edge_table text, tolerance double precision,
+ 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
+
+ p_num int := 0;
+ p_ret text := '';
+ pgis_ver_old boolean := _pgr_versionless(postgis_lib_version(), '2.1.0.0');
+ vst_line_substring text;
+ vst_line_locate_point text;
+ intab text;
+ outtab text;
+ n_pkey text;
+ n_geom text;
+ naming record;
+ sname text;
+ tname text;
+ outname text;
+ srid integer;
+ sridinfo record;
+ splits bigint;
+ touched bigint;
+ untouched bigint;
+ geomtype text;
+ debuglevel text;
+ rows_where text;
+
+
+BEGIN
+ raise notice 'PROCESSING:';
+ raise notice 'pgr_nodeNetwork(''%'', %, ''%'', ''%'', ''%'', ''%'', %)',
+ edge_table, tolerance, id, the_geom, table_ending, rows_where, outall;
+ raise notice 'Performing checks, please wait .....';
+ execute 'show client_min_messages' into debuglevel;
+
+ BEGIN
+ RAISE DEBUG 'Checking % exists',edge_table;
+ execute 'select * from _pgr_getTableName('||quote_literal(edge_table)||',0)' into naming;
+ sname=naming.sname;
+ tname=naming.tname;
+ IF sname IS NULL OR tname IS NULL THEN
+ RAISE NOTICE '-------> % not found',edge_table;
+ RETURN 'FAIL';
+ ELSE
+ RAISE DEBUG ' -----> OK';
+ END IF;
+
+ intab=sname||'.'||tname;
+ outname=tname||'_'||table_ending;
+ outtab= sname||'.'||outname;
+ rows_where = CASE WHEN length(rows_where) > 2 and not outall THEN ' AND (' || rows_where || ')' ELSE '' END;
+ rows_where = CASE WHEN length(rows_where) > 2 THEN ' WHERE (' || rows_where || ')' ELSE '' END;
+ END;
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',id,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(id)||')' INTO n_pkey;
+ IF n_pkey is NULL then
+ raise notice 'ERROR: id column "%" not found in %',id,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+
+ BEGIN
+ raise DEBUG 'Checking id column "%" columns in % ',the_geom,intab;
+ EXECUTE 'select _pgr_getColumnName('||quote_literal(intab)||','||quote_literal(the_geom)||')' INTO n_geom;
+ IF n_geom is NULL then
+ raise notice 'ERROR: the_geom column "%" not found in %',the_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ END;
+
+ IF n_pkey=n_geom THEN
+ raise notice 'ERROR: id and the_geom columns have the same name "%" in %',n_pkey,intab;
+ RETURN 'FAIL';
+ END IF;
+
+ BEGIN
+ raise DEBUG 'Checking the SRID of the geometry "%"', n_geom;
+ EXECUTE 'SELECT ST_SRID(' || quote_ident(n_geom) || ') as srid '
+ || ' FROM ' || _pgr_quote_ident(intab)
+ || ' WHERE ' || quote_ident(n_geom)
+ || ' IS NOT NULL 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 %', n_geom,intab;
+ RETURN 'FAIL';
+ END IF;
+ srid := sridinfo.srid;
+ raise DEBUG ' -----> SRID found %',srid;
+ EXCEPTION WHEN OTHERS THEN
+ RAISE NOTICE 'ERROR: Can not determine the srid of the geometry "%" in table %', n_geom,intab;
+ RETURN 'FAIL';
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_pkey,intab;
+ if (_pgr_isColumnIndexed(intab,n_pkey)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding index "%_%_idx".',n_pkey,intab;
+
+ set client_min_messages to warning;
+ execute 'create index '||tname||'_'||n_pkey||'_idx on '||_pgr_quote_ident(intab)||' using btree('||quote_ident(n_pkey)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+
+ BEGIN
+ RAISE DEBUG 'Checking "%" column in % is indexed',n_geom,intab;
+ if (_pgr_iscolumnindexed(intab,n_geom)) then
+ RAISE DEBUG ' ------>OK';
+ else
+ RAISE DEBUG ' ------> Adding unique index "%_%_gidx".',intab,n_geom;
+ set client_min_messages to warning;
+ execute 'CREATE INDEX '
+ || quote_ident(tname || '_' || n_geom || '_gidx' )
+ || ' ON ' || _pgr_quote_ident(intab)
+ || ' USING gist (' || quote_ident(n_geom) || ')';
+ execute 'set client_min_messages to '|| debuglevel;
+ END IF;
+ END;
+---------------
+ BEGIN
+ raise DEBUG 'initializing %',outtab;
+ execute 'select * from _pgr_getTableName('||quote_literal(outtab)||',0)' into naming;
+ IF sname=naming.sname AND outname=naming.tname THEN
+ execute 'TRUNCATE TABLE '||_pgr_quote_ident(outtab)||' RESTART IDENTITY';
+ execute 'SELECT DROPGEOMETRYCOLUMN('||quote_literal(sname)||','||quote_literal(outname)||','||quote_literal(n_geom)||')';
+ ELSE
+ set client_min_messages to warning;
+ execute 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (id bigserial PRIMARY KEY,old_id integer,sub_id integer,
+ source bigint,target bigint)';
+ END IF;
+ execute 'select geometrytype('||quote_ident(n_geom)||') from '||_pgr_quote_ident(intab)||' limit 1' into geomtype;
+ execute 'select addGeometryColumn('||quote_literal(sname)||','||quote_literal(outname)||','||
+ quote_literal(n_geom)||','|| srid||', '||quote_literal(geomtype)||', 2)';
+ execute 'CREATE INDEX '||quote_ident(outname||'_'||n_geom||'_idx')||' ON '||_pgr_quote_ident(outtab)||' USING GIST ('||quote_ident(n_geom)||')';
+ execute 'set client_min_messages to '|| debuglevel;
+ raise DEBUG ' ------>OK';
+ END;
+----------------
+
+
+ raise notice 'Processing, please wait .....';
+
+
+ if pgis_ver_old then
+ vst_line_substring := 'st_line_substring';
+ vst_line_locate_point := 'st_line_locate_point';
+ else
+ vst_line_substring := 'st_linesubstring';
+ vst_line_locate_point := 'st_linelocatepoint';
+ end if;
+
+-- -- First creates temp table with intersection points
+ p_ret = 'create temp table intergeom on commit drop as (
+ select l1.' || quote_ident(n_pkey) || ' as l1id,
+ l2.' || quote_ident(n_pkey) || ' as l2id,
+ l1.' || quote_ident(n_geom) || ' as line,
+ _pgr_startpoint(l2.' || quote_ident(n_geom) || ') as source,
+ _pgr_endpoint(l2.' || quote_ident(n_geom) || ') as target,
+ st_intersection(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ') as geom
+ from (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l1
+ join (SELECT * FROM ' || _pgr_quote_ident(intab) || rows_where || ') as l2
+ on (st_dwithin(l1.' || quote_ident(n_geom) || ', l2.' || quote_ident(n_geom) || ', ' || tolerance || '))'||
+ 'where l1.' || quote_ident(n_pkey) || ' <> l2.' || quote_ident(n_pkey)||' and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_startpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_startpoint(l2.' || quote_ident(n_geom) || '))=false and
+ st_equals(_pgr_endpoint(l1.' || quote_ident(n_geom) || '),_pgr_endpoint(l2.' || quote_ident(n_geom) || '))=false )';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- second temp table with locus (index of intersection point on the line)
+ -- to avoid updating the previous table
+ -- we keep only intersection points occurring onto the line, not at one of its ends
+-- drop table if exists inter_loc;
+
+--HAD TO CHANGE THIS QUERY
+-- p_ret= 'create temp table inter_loc on commit drop as (
+-- select l1id, l2id, ' || vst_line_locate_point || '(line,point) as locus from (
+-- select DISTINCT l1id, l2id, line, (ST_DumpPoints(geom)).geom as point from intergeom) as foo
+-- where ' || vst_line_locate_point || '(line,point)<>0 and ' || vst_line_locate_point || '(line,point)<>1)';
+ p_ret= 'create temp table inter_loc on commit drop as ( select * from (
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,source) as locus from intergeom)
+ union
+ (select l1id, l2id, ' || vst_line_locate_point || '(line,target) as locus from intergeom)) as foo
+ where locus<>0 and locus<>1)';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+
+ -- index on l1id
+ create index inter_loc_id_idx on inter_loc(l1id);
+
+ -- Then computes the intersection on the lines subset, which is much smaller than full set
+ -- as there are very few intersection points
+
+--- outab needs to be formally created with id, old_id, subid,the_geom, source,target
+--- so it can be inmediatly be used with createTopology
+
+-- EXECUTE 'drop table if exists ' || _pgr_quote_ident(outtab);
+-- EXECUTE 'create table ' || _pgr_quote_ident(outtab) || ' as
+ P_RET = 'insert into '||_pgr_quote_ident(outtab)||' (old_id,sub_id,'||quote_ident(n_geom)||') ( with cut_locations as (
+ select l1id as lid, locus
+ from inter_loc
+ -- then generates start and end locus for each line that have to be cut buy a location point
+ UNION ALL
+ select i.l1id as lid, 0 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ UNION ALL
+ select i.l1id as lid, 1 as locus
+ from inter_loc i left join ' || _pgr_quote_ident(intab) || ' b on (i.l1id = b.' || quote_ident(n_pkey) || ')
+ order by lid, locus
+ ),
+ -- we generate a row_number index column for each input line
+ -- to be able to self-join the table to cut a line between two consecutive locations
+ loc_with_idx as (
+ select lid, locus, row_number() over (partition by lid order by locus) as idx
+ from cut_locations
+ )
+ -- finally, each original line is cut with consecutive locations using linear referencing functions
+ select l.' || quote_ident(n_pkey) || ', loc1.idx as sub_id, ' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus) as ' || quote_ident(n_geom) || '
+ from loc_with_idx loc1 join loc_with_idx loc2 using (lid) join ' || _pgr_quote_ident(intab) || ' l on (l.' || quote_ident(n_pkey) || ' = loc1.lid)
+ where loc2.idx = loc1.idx+1
+ -- keeps only linestring geometries
+ and geometryType(' || vst_line_substring || '(l.' || quote_ident(n_geom) || ', loc1.locus, loc2.locus)) = ''LINESTRING'') ';
+ raise debug '%',p_ret;
+ EXECUTE p_ret;
+ GET DIAGNOSTICS splits = ROW_COUNT;
+ execute 'with diff as (select distinct old_id from '||_pgr_quote_ident(outtab)||' )
+ select count(*) from diff' 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 'insert into ' || _pgr_quote_ident(outtab) || ' (old_id , sub_id, ' || quote_ident(n_geom) || ')
+ ( with used as (select distinct old_id from '|| _pgr_quote_ident(outtab)||')
+ select ' || quote_ident(n_pkey) || ', 1 as sub_id, ' || quote_ident(n_geom) ||
+ ' from '|| _pgr_quote_ident(intab) ||' where '||quote_ident(n_pkey)||' not in (select * from used)' || rows_where || ')';
+ 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: %', outtab;
+ RAISE NOTICE '----------------------------------';
+
+ drop table if exists intergeom;
+ drop table if exists inter_loc;
+ RETURN 'OK';
+END;
+$BODY$
+ LANGUAGE 'plpgsql' VOLATILE STRICT COST 100;
+
+
+COMMENT ON FUNCTION pgr_nodeNetwork(text, double precision, text, text, text, text, boolean )
+ IS 'edge_table, tolerance, id:=''id'', the_geom:=''the_geom'', table_ending:=''noded'' ';
+
+
+CREATE OR REPLACE FUNCTION pgr_labelGraph(
+ edge_table text,
+ id text default 'id',
+ source text default 'source',
+ target text default 'target',
+ subgraph text default 'subgraph',
+ rows_where text default 'true'
+ )
+ RETURNS character varying AS
+$BODY$
+
+DECLARE
+ naming record;
+ schema_name text;
+ table_name text;
+ garbage text;
+ incre integer;
+ table_schema_name text;
+ query text;
+ ecnt integer;
+ sql1 text;
+ rec1 record;
+ sql2 text;
+ rec2 record;
+ rec_count record;
+ rec_single record;
+ graph_id integer;
+ gids int [];
+
+BEGIN
+ raise notice 'Processing:';
+ raise notice 'pgr_brokenGraph(''%'',''%'',''%'',''%'',''%'',''%'')', edge_table,id,source,target,subgraph,rows_where;
+ raise notice 'Performing initial checks, please hold on ...';
+
+ Raise Notice 'Starting - Checking table ...';
+ BEGIN
+ raise debug 'Checking % table existance', edge_table;
+ execute 'select * from pgr_getTableName('|| quote_literal(edge_table) ||')' into naming;
+ schema_name = naming.sname;
+ table_name = naming.tname;
+ table_schema_name = schema_name||'.'||table_name;
+ IF schema_name is null then
+ raise notice 'no schema';
+ return 'FAIL';
+ else
+ if table_name is null then
+ raise notice 'no table';
+ return 'FAIL';
+ end if;
+ end if;
+ END;
+ Raise Notice 'Ending - Checking table';
+
+ Raise Notice 'Starting - Checking columns';
+ BEGIN
+ raise debug 'Checking exitance of necessary columns inside % table', edge_table;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(id) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no id column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(source) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no source column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(target) ||')' into naming;
+ if naming.pgr_iscolumnintable = 'f' then
+ raise notice 'no target column';
+ return 'FAIL';
+ end if;
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(subgraph) ||')' into naming;
+ if naming.pgr_iscolumnintable = 't' then
+ raise notice 'subgraph column already in the table';
+ return 'FAIL';
+ end if;
+ END;
+ Raise Notice 'Ending - Checking columns';
+
+ Raise Notice 'Starting - Checking rows_where condition';
+ BEGIN
+ raise debug 'Checking rows_where condition';
+ query='select count(*) from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where;
+ execute query into ecnt;
+ raise debug '-->Rows where condition: OK';
+ raise debug ' --> OK';
+ EXCEPTION WHEN OTHERS THEN
+ raise notice 'Got %', SQLERRM;
+ Raise notice 'ERROR: Condition is not correct. Please execute the following query to test your condition';
+ Raise notice '%', query;
+ return 'FAIL';
+ END;
+ Raise Notice 'Ending - Checking rows_where condition';
+
+ garbage := 'garbage001';
+ incre := 1;
+ Raise Notice 'Starting - Checking temporary column';
+ Begin
+ raise debug 'Checking Checking temporary columns existance';
+
+ While True
+ Loop
+ execute 'select * from pgr_isColumnInTable('|| quote_literal(table_schema_name) ||', '|| quote_literal(garbage) ||')' into naming;
+ If naming.pgr_iscolumnintable = 't' THEN
+ incre := incre + 1;
+ garbage := 'garbage00'||incre||'';
+ ELSE
+ EXIT;
+ END IF;
+ End Loop;
+ End;
+ Raise Notice 'Ending - Checking temporary column';
+
+ Raise Notice 'Starting - Calculating subgraphs';
+ BEGIN
+ --------- Add necessary columns ----------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(subgraph) || ' INTEGER DEFAULT -1';
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' ADD COLUMN ' || pgr_quote_ident(garbage) || ' INTEGER DEFAULT 0';
+ graph_id := 1;
+
+ EXECUTE 'select count(*) as count from '|| pgr_quote_ident(table_schema_name) ||' where '|| rows_where ||'' into rec_count;
+ if rec_count.count = 0 then
+ RETURN 'rows_where condition generated 0 rows';
+ end if;
+
+ WHILE TRUE
+ LOOP
+ ---------- Assign the very first -1 row graph_id ----------
+ EXECUTE 'SELECT ' || pgr_quote_ident(id) || ' AS gid FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1 LIMIT 1' INTO rec_single;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec_single.gid || '';
+
+ --------- Search other rows with that particular graph_id -----------
+ WHILE TRUE
+ LOOP
+ EXECUTE 'SELECT COUNT(*) FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0' into rec_count;
+ ----------- The following if else will check those rows which already have entertained ------------
+ IF (rec_count.count > 0) THEN
+ sql1 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' AND ' || pgr_quote_ident(garbage) || ' = 0';
+ FOR rec1 IN EXECUTE sql1
+ LOOP
+ sql2 := 'SELECT ' || pgr_quote_ident(id) || ' AS gid, ' || pgr_quote_ident(source) || ' AS source, ' || pgr_quote_ident(target) || ' AS target FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| pgr_quote_ident(source) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.source ||' OR '|| pgr_quote_ident(source) ||' = '|| rec1.target ||' OR '|| pgr_quote_ident(target) ||' = '|| rec1.target ||'';
+ FOR rec2 IN EXECUTE sql2
+ LOOP
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(subgraph) || ' = ' || graph_id || ' WHERE ' || pgr_quote_ident(id) || ' = ' || rec2.gid || '';
+ END LOOP;
+ EXECUTE 'UPDATE '|| pgr_quote_ident(table_schema_name) ||' SET ' || pgr_quote_ident(garbage) || ' = 1 WHERE ' || pgr_quote_ident(id) || ' = ' || rec1.gid || '';
+ END LOOP;
+ ELSE
+ EXIT;
+ END IF;
+ END LOOP;
+
+ ------ Following is to exit the while loop. 0 means no more -1 id.
+ EXECUTE 'SELECT COUNT(*) AS count FROM '|| pgr_quote_ident(table_schema_name) ||' WHERE '|| rows_where ||' AND ' || pgr_quote_ident(subgraph) || ' = -1' INTO rec_count;
+ If (rec_count.count = 0) THEN
+ EXIT;
+ ELSE
+ graph_id := graph_id + 1;
+ END IF;
+ END LOOP;
+
+ ----------- Drop garbage column ------------
+ EXECUTE 'ALTER TABLE '|| pgr_quote_ident(table_schema_name) ||' DROP COLUMN ' || pgr_quote_ident(garbage) ||'';
+ Raise Notice 'Successfully complicated calculating subgraphs';
+ END;
+ Raise Notice 'Ending - Calculating subgraphs';
+
+ RETURN 'OK';
+
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_withPointsCostMatrix(
+ edges_sql TEXT,
+ points_sql TEXT,
+ pids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ driving_side CHAR DEFAULT 'b', -- 'r'/'l'/'b'/NULL
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_pid, a.end_pid, a.agg_cost
+ FROM _pgr_withPoints($1, $2, $3, $3, $4, $5, TRUE, TRUE) AS a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- DIJKSTRA DMatrix
+
+
+
+CREATE OR REPLACE FUNCTION pgr_dijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+
+-- BIDIRECTIONAL DIJKSTRA Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdDijkstraCostMatrix(edges_sql TEXT, vids ANYARRAY, directed BOOLEAN DEFAULT true,
+ OUT start_vid BIGINT, OUT end_vid BIGINT, OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdDijkstra(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_astarCostMatrix(
+ edges_sql TEXT, -- XY edges sql
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor FLOAT DEFAULT 1.0,
+ epsilon FLOAT DEFAULT 1.0,
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost FLOAT)
+
+RETURNS SETOF RECORD AS
+$BODY$
+BEGIN
+ RETURN query SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_astar(_pgr_get_statement($1), $2, $2, $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- BIDIRECTIONAL ASTAR Matrix
+
+
+CREATE OR REPLACE FUNCTION pgr_bdAstarCostMatrix(
+ edges_sql TEXT,
+ vids ANYARRAY,
+ directed BOOLEAN DEFAULT true,
+ heuristic INTEGER DEFAULT 5,
+ factor NUMERIC DEFAULT 1.0,
+ epsilon NUMERIC DEFAULT 1.0,
+
+ OUT start_vid BIGINT,
+ OUT end_vid BIGINT,
+ OUT agg_cost float)
+RETURNS SETOF RECORD AS
+$BODY$
+ SELECT a.start_vid, a.end_vid, a.agg_cost
+ FROM _pgr_bdAstar(_pgr_get_statement($1), $2::BIGINT[], $2::BIGINT[], $3, $4, $5::FLOAT, $6::FLOAT, true) a;
+$BODY$
+LANGUAGE sql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_bdAstarCostMatrix(TEXT, ANYARRAY, BOOLEAN, INTEGER, NUMERIC, NUMERIC) IS 'pgr_bdAstarCostMatrix';
+
+
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_getTableName(IN tab text,OUT sname text,OUT tname text)
+RETURNS RECORD AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getTableName: This function will no longer be soported';
+ select * from _pgr_getTableName(tab, 0, 'pgr_getTableName') into sname,tname;
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_getColumnName(tab text, col text)
+RETURNS text AS
+$BODY$
+BEGIN
+ raise notice 'pgr_getColumnName: This function will no longer be soported';
+ return _pgr_getColumnName(tab,col, 0, 'pgr_getColumnName');
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnInTable(tab text, col text)
+RETURNS boolean AS
+$BODY$
+DECLARE
+ cname text;
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ select * from _pgr_getColumnName(tab,col,0, 'pgr_isColumnInTable') into cname;
+ return cname IS not NULL;
+END;
+$BODY$
+ LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_isColumnIndexed(tab text, col text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnIndexed: This function will no longer be soported';
+ return _pgr_isColumnIndexed(tab,col);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+
+create or replace function pgr_quote_ident(idname text)
+returns text as
+$BODY$
+BEGIN
+ raise notice 'pgr_isColumnInTable: This function will no longer be soported';
+ return _pgr_quote_ident(idname);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+CREATE OR REPLACE FUNCTION pgr_versionless(v1 text, v2 text)
+RETURNS boolean AS
+$BODY$
+BEGIN
+ raise notice 'pgr_versionless: This function will no longer be soported';
+ return _pgr_versionless(v1,v2);
+END;
+$BODY$
+LANGUAGE plpgsql VOLATILE STRICT;
+
+create or replace function pgr_startPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_startPoint: This function will no longer be soported';
+ return _pgr_startPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+create or replace function pgr_endPoint(g geometry)
+ returns geometry as
+$body$
+BEGIN
+ raise notice 'pgr_endPoint: This function will no longer be soported';
+ return _pgr_endPoint(g);
+END;
+$body$
+language plpgsql IMMUTABLE;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspJohnson(edges_sql text)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_johnson instead';
+ has_reverse =_pgr_parameter_check('johnson', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse) THEN
+ RAISE NOTICE 'reverse_cost column found, removing.';
+ sql = 'SELECT source, target, cost FROM (' || edges_sql || ') a';
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () - 1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_johnson(sql, TRUE);
+ END
+$BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+CREATE OR REPLACE FUNCTION pgr_apspWarshall(edges_sql text, directed boolean, has_rcost boolean)
+ RETURNS SETOF pgr_costResult AS
+ $BODY$
+ DECLARE
+ has_reverse boolean;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_floydWarshall instead';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql := edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query
+ SELECT (row_number() over () -1)::integer as seq, start_vid::integer AS id1, end_vid::integer AS id2, agg_cost AS cost
+ FROM pgr_floydWarshall(sql, directed);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_astar(edges_sql TEXT, source_id INTEGER, target_id INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated signature pgr_astar(text, integer, integer, boolean, boolean)';
+ has_reverse =_pgr_parameter_check('astar', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost, x1,y1, x2, y2 FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::INTEGER AS id1, edge::INTEGER AS id2, cost
+ FROM pgr_astar(sql, ARRAY[$2], ARRAY[$3], directed);
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdAstar(
+ sql TEXT,
+ source_vid INTEGER,
+ target_vid INTEGER,
+ directed BOOLEAN,
+ has_reverse_cost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdAstar';
+ has_reverse =_pgr_parameter_check('astar', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdAstar(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_bdDijkstra(edges_sql TEXT, start_vid INTEGER, end_vid INTEGER, directed BOOLEAN, has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated Signature of pgr_bdDijkstra';
+ has_reverse =_pgr_parameter_check('dijkstra', $1, false);
+ new_sql = $1;
+ IF (has_reverse != $5) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || $1 || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_bdDijkstra(new_sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstraPath(
+ sql text,
+ source INTEGER,
+ targets INTEGER ARRAY,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costResult3 AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ new_sql TEXT;
+ result pgr_costResult3;
+ tmp pgr_costResult3;
+ sseq INTEGER;
+ i INTEGER;
+ BEGIN
+ RAISE NOTICE 'Deprecated function: Use pgr_dijkstra instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT seq, a.end_vid::INTEGER AS id1, a.node::INTEGER AS i2, a.edge::INTEGER AS id3, cost
+ FROM pgr_dijkstra(new_sql, source, targets, directed) a ORDER BY a.end_vid, seq LOOP
+ WHILE (result.id1 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost =0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id1 = targets[i] AND result.id3 != -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ IF (result.id1 = targets[i] AND result.id3 = -1) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ CONTINUE;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.id2 = source;
+ tmp.cost = 0;
+ ELSE
+ tmp.id2 = 0;
+ tmp.cost = -1;
+ END IF;
+ tmp.id3 = -1;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+CREATE OR REPLACE FUNCTION pgr_kdijkstracost(
+ sql text,
+ source INTEGER,
+ targets INTEGER array,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costResult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+new_sql TEXT;
+result pgr_costResult;
+tmp pgr_costResult;
+sseq INTEGER;
+i INTEGER;
+BEGIN
+ RAISE NOTICE 'Deprecated function. Use pgr_dijkstraCost instead.';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ new_sql = sql;
+ IF (array_ndims(targets) != 1) THEN
+ raise EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+
+
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ new_sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ RAISE EXCEPTION 'Error, reverse_cost is used, but query did''t return ''reverse_cost'' column'
+ USING ERRCODE = 'XX000';
+ END IF;
+ END IF;
+
+ SELECT ARRAY(SELECT DISTINCT UNNEST(targets) ORDER BY 1) INTO targets;
+
+ sseq = 0; i = 1;
+ FOR result IN
+ SELECT ((row_number() over()) -1)::INTEGER, a.start_vid::INTEGER, a.end_vid::INTEGER, agg_cost
+ FROM pgr_dijkstraCost(new_sql, source, targets, directed) a ORDER BY end_vid LOOP
+ WHILE (result.id2 != targets[i]) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+ IF (result.id2 = targets[i]) THEN
+ result.seq = sseq;
+ RETURN next result;
+ i = i + 1;
+ sseq = sseq + 1;
+ END IF;
+ END LOOP;
+ WHILE (i <= array_length(targets,1)) LOOP
+ tmp.seq = sseq;
+ tmp.id1 = source;
+ tmp.id2 = targets[i];
+ IF (targets[i] = source) THEN
+ tmp.cost = 0;
+ ELSE
+ tmp.cost = -1;
+ END IF;
+ RETURN next tmp;
+ i = i + 1;
+ sseq = sseq + 1;
+ END LOOP;
+
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+
+
+
+create or replace function pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ returns integer as
+$body$
+
+declare
+ rr record;
+ pct float;
+ debuglevel text;
+
+begin
+ -- find the closest edge within tol distance
+ execute 'select * from ' || _pgr_quote_ident(edges) ||
+ ' where st_dwithin(''' || pnt::text ||
+ '''::geometry, the_geom, ' || tol || ') order by st_distance(''' || pnt::text ||
+ '''::geometry, the_geom) asc limit 1' into rr;
+
+ if rr.the_geom is not null then
+ -- deal with MULTILINESTRINGS
+ if geometrytype(rr.the_geom)='MULTILINESTRING' THEN
+ rr.the_geom := ST_GeometryN(rr.the_geom, 1);
+ end if;
+
+ -- project the point onto the linestring
+ execute 'show client_min_messages' into debuglevel;
+ SET client_min_messages='ERROR';
+ pct := st_line_locate_point(rr.the_geom, pnt);
+ execute 'set client_min_messages to '|| debuglevel;
+
+ -- return the node we are closer to
+ if pct < 0.5 then
+ return rr.source;
+ else
+ return rr.target;
+ end if;
+ else
+ -- return a failure to find an edge within tol distance
+ return -1;
+ end if;
+end;
+$body$
+ language plpgsql volatile
+ cost 5;
+
+
+----------------------------------------------------------------------------
+
+create or replace function pgr_flipedges(ga geometry[])
+ returns geometry[] as
+$body$
+
+declare
+ nn integer;
+ i integer;
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_flipEdges';
+ -- get the count of edges, and return if only one edge
+ nn := array_length(ga, 1);
+ if nn=1 then
+ return ga;
+ end if;
+
+ -- determine if first needs to be flipped
+ g := _pgr_startpoint(ga[1]);
+
+ -- if the start of the first is connected to the second then it needs to be flipped
+ if _pgr_startpoint(ga[2])=g or _pgr_endpoint(ga[2])=g then
+ ga[1] := st_reverse(ga[1]);
+ end if;
+ g := _pgr_endpoint(ga[1]);
+
+ -- now if the end of the last edge matchs the end of the current edge we need to flip it
+ for i in 2 .. nn loop
+ if _pgr_endpoint(ga[i])=g then
+ ga[i] := st_reverse(ga[i]);
+ end if;
+ -- save the end of this edge into the last end for the next cycle
+ g := _pgr_endpoint(ga[i]);
+ end loop;
+
+ return ga;
+end;
+$body$
+ language plpgsql immutable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_texttopoints(pnts text, srid integer DEFAULT(4326))
+ returns geometry[] as
+$body$
+
+declare
+ a text[];
+ t text;
+ p geometry;
+ g geometry[];
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_textToPoints';
+ -- convert commas to space and split on ';'
+ a := string_to_array(replace(pnts, ',', ' '), ';');
+ -- convert each 'x y' into a point geometry and concattenate into a new array
+ for t in select unnest(a) loop
+ p := st_pointfromtext('POINT(' || t || ')', srid);
+ g := g || p;
+ end loop;
+
+ return g;
+end;
+$body$
+ language plpgsql immutable;
+
+-----------------------------------------------------------------------
+
+create or replace function pgr_pointstovids(pnts geometry[], edges text, tol float8 DEFAULT(0.01))
+ returns integer[] as
+$body$
+
+declare
+ v integer[];
+ g geometry;
+
+begin
+ RAISE NOTICE 'Deperecated function: pgr_pointsToVids';
+ -- cycle through each point and locate the nearest edge and vertex on that edge
+ for g in select unnest(pnts) loop
+ v := v || pgr_pointtoedgenode(edges, g, tol);
+ end loop;
+
+ return v;
+end;
+$body$
+ language plpgsql stable;
+
+
+create or replace function pgr_pointstodmatrix(pnts geometry[], mode integer default (0), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ r record;
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_pointsToDMatrix';
+ dmatrix := array[]::double precision[];
+ ids := array[]::integer[];
+
+ -- create an id for each point in the array and unnest it into a table nodes in the with clause
+ for r in with nodes as (select row_number() over()::integer as id, p from (select unnest(pnts) as p) as foo)
+ -- compute a row of distances
+ select i, array_agg(dist) as arow from (
+ select a.id as i, b.id as j,
+ case when mode=0
+ then st_distance(a.p, b.p)
+ else st_distance_sphere(a.p, b.p)
+ end as dist
+ from nodes a, nodes b
+ order by a.id, b.id
+ ) as foo group by i order by i loop
+
+ -- you must concat an array[array[]] to make dmatrix[][]
+ -- concat the row of distances to the dmatrix
+ dmatrix := array_cat(dmatrix, array[r.arow]);
+ ids := ids || array[r.i];
+ end loop;
+end;
+$body$
+ language plpgsql stable;
+
+
+------------------------------------------------------------------------------
+
+create or replace function pgr_vidstodmatrix(IN vids integer[], IN pnts geometry[], IN edges text, tol float8 DEFAULT(0.1), OUT dmatrix double precision[], OUT ids integer[])
+ returns record as
+$body$
+
+declare
+ i integer;
+ j integer;
+ nn integer;
+ rr record;
+ bbox geometry;
+ t float8[];
+
+begin
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ -- check if the input arrays has any -1 values, maybe this whould be a raise exception
+ if vids @> ARRAY[-1] then
+ raise notice 'Some vids are undefined (-1)!';
+ dmatrix := null;
+ ids := null;
+ return;
+ end if;
+
+ ids := vids;
+
+ -- get the count of nodes
+ nn := array_length(vids,1);
+
+ -- zero out a dummy row
+ for i in 1 .. nn loop
+ t := t || 0.0::float8;
+ end loop;
+
+ -- using the dummy row, zero out the whole matrix
+ for i in 1 .. nn loop
+ dmatrix := dmatrix || ARRAY[t];
+ end loop;
+
+ for i in 1 .. nn-1 loop
+ j := i;
+ -- compute the bbox for the point needed for this row
+ select st_expand(st_collect(pnts[id]), tol) into bbox
+ from (select generate_series as id from generate_series(i, nn)) as foo;
+
+ -- compute kdijkstra() for this row
+ for rr in execute 'select * from pgr_dijkstracost($1, $2, $3, false)'
+ using 'select id, source, target, cost from ' || edges ||
+ ' where the_geom && ''' || bbox::text || '''::geometry'::text, vids[i], vids[i+1:nn] loop
+
+ -- TODO need to check that all node were reachable from source
+ -- I think unreachable paths between nodes returns cost=-1.0
+
+ -- populate the matrix with the cost values, remember this is symmetric
+ j := j + 1;
+ -- raise notice 'cost(%,%)=%', i, j, rr.agg_cost;
+ dmatrix[i][j] := rr.agg_cost;
+ dmatrix[j][i] := rr.agg_cost;
+ end loop;
+ end loop;
+
+end;
+$body$
+ language plpgsql stable cost 200;
+
+
+
+CREATE OR REPLACE FUNCTION pgr_vidsToDMatrix(sql TEXT, vids INTEGER[], dir BOOLEAN, has_rcost BOOLEAN, want_symmetric BOOLEAN)
+RETURNS float8[] AS
+$BODY$
+DECLARE
+directed BOOLEAN;
+has_reverse BOOLEAN;
+edges_sql TEXT;
+dmatrix_row float8[];
+dmatrix float8[];
+cell RECORD;
+unique_vids INTEGER[];
+total BIGINT;
+from_v BIGINT;
+to_v BIGINT;
+BEGIN
+ RAISE NOTICE 'Deprecated function pgr_vidsToDMatrix';
+ has_reverse =_pgr_parameter_check('dijkstra', sql, false);
+ edges_sql = sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ unique_vids := ARRAY(SELECT DISTINCT UNNEST(vids) ORDER BY 1);
+
+ IF want_symmetric THEN
+ directed = false;
+ ELSE
+ directed = dir;
+ END IF;
+
+ total := array_length(unique_vids, 1);
+
+ -- initializing dmatrix
+ FOR i in 1 .. total LOOP
+ dmatrix_row := dmatrix_row || '+Infinity'::float8;
+ END LOOP;
+ FOR i in 1 .. total LOOP
+ dmatrix := dmatrix || ARRAY[dmatrix_row];
+ dmatrix[i][i] = 0;
+ END LOOP;
+
+ CREATE TEMP TABLE __x___y____temp AS
+ WITH result AS
+ (SELECT unnest(unique_vids) AS vid)
+ SELECT row_number() OVER() AS idx, vid FROM result;
+
+ FOR cell IN SELECT * FROM pgr_dijkstraCostMatrix(sql, unique_vids, directed) LOOP
+ SELECT idx INTO from_v FROM __x___y____temp WHERE vid = cell.start_vid;
+ SELECT idx INTO to_v FROM __x___y____temp WHERE vid = cell.end_vid;
+
+ dmatrix[from_v][to_v] = cell.agg_cost;
+ dmatrix[to_v][from_v] = cell.agg_cost;
+ END LOOP;
+
+ DROP TABLE IF EXISTS __x___y____temp;
+ RETURN dmatrix;
+
+ EXCEPTION WHEN others THEN
+ DROP TABLE IF EXISTS __x___y____temp;
+ raise exception '% %', SQLERRM, SQLSTATE;
+END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100;
+
+
+
+-- V2 signature
+CREATE OR REPLACE FUNCTION pgr_dijkstra(
+ edges_sql TEXT,
+ start_vid INTEGER,
+ end_vid INTEGER,
+ directed BOOLEAN,
+ has_rcost BOOLEAN)
+RETURNS SETOF pgr_costresult AS
+$BODY$
+DECLARE
+has_reverse BOOLEAN;
+sql TEXT;
+BEGIN
+ RAISE NOTICE 'Deprecated function';
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, false);
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ sql = 'SELECT id, source, target, cost FROM (' || edges_sql || ') a';
+ ELSE
+ raise EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq-1 AS seq, node::integer AS id1, edge::integer AS id2, cost
+ FROM _pgr_dijkstra(sql, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], directed, false);
+ END
+$BODY$
+LANGUAGE plpgsql VOLATILE
+COST 100
+ROWS 1000;
+COMMENT ON FUNCTION pgr_dijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN) IS 'pgr_dijkstra(Deprecated signature)';
+
+
+
+
+
+-- OLD SIGNATURE
+CREATE OR REPLACE FUNCTION pgr_drivingDistance(edges_sql text, source BIGINT, distance FLOAT, directed BOOLEAN, has_rcost BOOLEAN)
+ RETURNS SETOF pgr_costresult AS
+ $BODY$
+ DECLARE
+ has_reverse BOOLEAN;
+ sql TEXT;
+ BEGIN
+ RAISE NOTICE 'Deprecated function';
+
+ has_reverse =_pgr_parameter_check('dijkstra', edges_sql, FALSE);
+
+ sql = edges_sql;
+ IF (has_reverse != has_rcost) THEN
+ IF (has_reverse) THEN
+ -- the user says it doesn't have reverse cost but its false
+ -- removing from query
+ RAISE NOTICE 'Contradiction found: has_rcost set to false but reverse_cost column found';
+ sql = 'SELECT id, source, target, cost, -1 as reverse_cost FROM (' || edges_sql || ') __q ';
+ ELSE
+ -- the user says it has reverse cost but its false
+ -- can't do anything
+ RAISE EXCEPTION 'has_rcost set to true but reverse_cost not found';
+ END IF;
+ END IF;
+
+ RETURN query SELECT seq - 1 AS seq, node::integer AS id1, edge::integer AS id2, agg_cost AS cost
+ FROM pgr_drivingDistance($1, ARRAY[$2]::BIGINT[], $3, $4, false);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE
+ COST 100
+ ROWS 1000;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maximumcardinalitymatching(
+ edges_sql TEXT,
+ directed BOOLEAN DEFAULT TRUE,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ '$libdir/libpgrouting-2.5', 'maximum_cardinality_matching'
+ LANGUAGE c VOLATILE;
+
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--INTERNAL FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertex BIGINT,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertex BIGINT,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+--FUNCTIONS
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowPushRelabel(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_PushRelabel($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowBoykovKolmogorov(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_boykovKolmogorov($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+CREATE OR REPLACE FUNCTION pgr_maxFlowEdmondsKarp(
+ edges_sql TEXT,
+ source_vertices ANYARRAY,
+ sink_vertices ANYARRAY,
+ OUT seq INTEGER,
+ OUT edge_id BIGINT,
+ OUT source BIGINT,
+ OUT target BIGINT,
+ OUT flow BIGINT,
+ OUT residual_capacity BIGINT
+ )
+ RETURNS SETOF RECORD AS
+ $BODY$
+ BEGIN
+ RETURN QUERY SELECT *
+ FROM pgr_edmondsKarp($1, $2, $3);
+ END
+ $BODY$
+ LANGUAGE plpgsql VOLATILE;
+
+
+
+
+------------------------
+-- deprecated signatures
+-----------------------
+
+COMMENT ON FUNCTION pgr_astar(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_astar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdAstar( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdAstar(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_bdDijkstra( TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_bdDijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_dijkstra(TEXT, INTEGER, INTEGER, BOOLEAN, BOOLEAN)
+ IS 'pgr_dijkstra(Deprecated signature)';
+
+COMMENT ON FUNCTION pgr_drivingDistance(text, BIGINT, FLOAT8, BOOLEAN, BOOLEAN)
+ IS 'pgr_drivingDistance(Deprecated signature)';
+
+------------------------
+-- Renamed /deprecated
+-----------------------
+COMMENT ON FUNCTION pgr_apspJohnson(TEXT)
+ IS 'pgr_apspJohnson(Renamed function) use pgr_Johnson instead';
+
+COMMENT ON FUNCTION pgr_apspWarshall(text, boolean, boolean)
+ IS 'pgr_apspWarshall(Renamed function) use pgr_floydWarshall instead';
+
+COMMENT ON FUNCTION pgr_kdijkstraPath( text, INTEGER, INTEGER ARRAY, BOOLEAN, BOOLEAN)
+ IS 'pgr_kdijkstraPath(Renamed function) use pgr_dijkstra instead';
+
+COMMENT ON FUNCTION pgr_kdijkstracost( text, INTEGER, INTEGER array, BOOLEAN, BOOLEAN)
+ IS 'pgr_kDijkstraCost(Renamed function) use pgr_dijkstraCost instead';
+
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+COMMENT ON FUNCTION pgr_maxFlowPushRelabel(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowPushRelabel(Renamed function) use pgr_pushRelabel instead';
+
+
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+COMMENT ON FUNCTION pgr_maxFlowEdmondsKarp(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowEdmondsKarp(Renamed function) use pgr_edmondsKarp instead';
+
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, BIGINT, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, BIGINT)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+COMMENT ON FUNCTION pgr_maxFlowBoykovKolmogorov(TEXT, ANYARRAY, ANYARRAY)
+ IS 'pgr_maxFlowBoykovKolmogorov(Renamed function) use pgr_boykovKolmogorov instead';
+
+
+COMMENT ON FUNCTION pgr_gsoc_vrppdtw( text, INTEGER, INTEGER)
+ IS 'pgr_gsoc_vrppdtw(Renamed function) use pgr_pickDeliverEuclidean instead';
+
+------------------------
+-- Deprecated functions
+-----------------------
+
+COMMENT ON FUNCTION pgr_flipedges(geometry[])
+ IS 'pgr_flipedges(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_texttopoints(text, integer)
+ IS 'pgr_texttopoints(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstovids(pnts geometry[], edges text, tol float8)
+ IS 'pgr_pointstovids(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointtoedgenode(edges text, pnt geometry, tol float8)
+ IS 'pgr_pointtoedgenode(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_pointstodmatrix(geometry[], integer)
+ IS 'pgr_pointstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidstodmatrix( integer[], geometry[], text, float8)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_vidsToDMatrix(TEXT, INTEGER[], BOOLEAN, BOOLEAN, BOOLEAN)
+ IS 'pgr_vidstodmatrix(Deprecated function)';
+
+
+
+
+COMMENT ON FUNCTION pgr_getTableName(IN tab text)
+ IS 'pgr_getTableName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_getColumnName(tab text, col text)
+ IS 'pgr_getColumnName(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnInTable(tab text, col text)
+ IS 'pgr_isColumnInTable(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_isColumnIndexed(tab text, col text)
+ IS 'pgr_isColumnIndexed(Deprecated function)';
+
+
+COMMENT ON FUNCTION pgr_quote_ident(idname text)
+ IS 'pgr_quote_ident(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_versionless(v1 text, v2 text)
+ IS 'pgr_versionless(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_startPoint(g geometry)
+ IS 'pgr_startPoint(Deprecated function)';
+
+COMMENT ON FUNCTION pgr_endPoint(g geometry)
+ IS 'pgr_endPoint(Deprecated function)';
diff --git a/tools/template/create.sh b/tools/template/create.sh
index faa6863..cc0968c 100644
--- a/tools/template/create.sh
+++ b/tools/template/create.sh
@@ -1,27 +1,61 @@
#!/bin/bash
+function usage() {
+if [ "$#" -lt 1 ] ; then
+ echo "Usage: sh ./create.sh <action>"
+ echo " <action> = clean, overwrite, missing"
+ echo " clean action will: ONLY ACTIVE ONE"
+ echo " - remove the directories:"
+ echo " src/MY_FUNCTION_NAME/src"
+ echo " src/MY_FUNCTION_NAME/doc"
+ echo " src/MY_FUNCTION_NAME/test"
+ echo " include/drivers/MY_FUNCTION_NAME"
+ echo " - and start from scratch"
+ echo " overwrite action will: TODO"
+ echo " - overwite the files if they exist"
+ echo " missing will: TODO"
+ echo " - skip files that exist"
+ echo " - write the missing files only"
+ exit 1
+fi
+}
+
+ACTION="$1"
+
+if [[ ! ( "$1" == "clean" || "$1" == "overwrite" || "$1" == "missing" ) ]] ; then
+ usage
+fi
+
+
#dont put pgr_ on MY_FUNCTION_NAME that is done automatically
MY_FUNCTION_NAME="funnyDijkstra"
DEVELOPER_NAME="Celia Virginia Vergara Castillo"
-DEVELOPER_EMAIL="vicky_vergara at hotmail.com"
-YEAR="2016"
+DEVELOPER_EMAIL="vicky_vergara\@hotmail.com"
+YEAR="2017"
# Note: the "\n " (change line and four spaces) after each comma
# first line are the inputs
+# - the compulsory parameters with no name
+# - the optional parameters with name
# second line are the outputs
-MY_QUERY_LINE1="edges_sql TEXT,\n start_vid BIGINT,\n end_vid BIGINT,\n directed BOOLEAN DEFAULT true,\n only_cost BOOLEAN DEFAULT false,"
+# - all with a name
+
+MY_QUERY_LINE1="TEXT,\n BIGINT,\n BIGINT,\n directed BOOLEAN DEFAULT true,\n only_cost BOOLEAN DEFAULT false,"
MY_QUERY_LINE2=" OUT seq INTEGER,\n OUT path_seq INTEGER,\n OUT node BIGINT,\n OUT edge BIGINT,\n OUT cost FLOAT,\n OUT agg_cost FLOAT"
-MY_RETURN_VALUE_TYPE="General_path_element_t"
MY_FUNCTION_NAME_UPPER=$(echo $MY_FUNCTION_NAME | tr 'a-z' 'A-Z')
MY_FUNCTION_NAME_LOWER=$(echo $MY_FUNCTION_NAME | tr 'A-Z' 'a-z')
# Available types to store the edge information:
# http://docs.pgrouting.org/doxy/dev/structpgr__edge__t.html
# http://docs.pgrouting.org/doxy/dev/structPgr__edge__xy__t.html
+MY_RETURN_VALUE_TYPE="General_path_element_t"
+MY_RETURN_VALUE_FILE=$(echo $MY_RETURN_VALUE_TYPE | tr 'A-Z' 'a-z')
+
MY_EDGE_TYPE="pgr_edge_t"
+MY_EDGE_FILE=$(echo $MY_EDGE_TYPE | tr 'A-Z' 'a-z')
# Available functions that read the edge information:
# http://docs.pgrouting.org/doxy/dev/edges__input_8h.html#
@@ -37,115 +71,92 @@ if test -z "$MY_FUNCTION_NAME"; then
exit
fi
-#if a directory named MY_FUNCTION_NAME exist we stop
-if [ -d "$MY_FUNCTION_NAME" ]; then
- echo "directory exists please delete first"
- exit 1
-fi
-if [ -d ../../src/"$MY_FUNCTION_NAME" ]; then
- echo "directory exists please delete first"
- exit 1
+if [ -d ./$MY_FUNCTION_NAME ]; then
+ rm -rf ./$MY_FUNCTION_NAME
fi
mkdir "$MY_FUNCTION_NAME"
-#copy the subdirectories
+#copy to a working subdirectory
cp -r sql "$MY_FUNCTION_NAME"
cp -r doc "$MY_FUNCTION_NAME"
cp -r test "$MY_FUNCTION_NAME"
-cp -r src "$MY_FUNCTION_NAME"
-
-
-
-##### SQL #########
-echo "updating the /sql/CMakeLists.txt"
-sed -i "s/MY_FUNCTION_NAME/$MY_FUNCTION_NAME/" "$MY_FUNCTION_NAME"/sql/CMakeLists.txt
-
-# /sql/function1.sql
-echo "Updating the .sql in sql"
-sed -i "s/MY_QUERY_LINE1/$MY_QUERY_LINE1/" "$MY_FUNCTION_NAME"/sql/function1.sql
-sed -i "s/MY_QUERY_LINE2/$MY_QUERY_LINE2/" "$MY_FUNCTION_NAME"/sql/function1.sql
-sed -i "s/MY_FUNCTION_NAME/$MY_FUNCTION_NAME/" "$MY_FUNCTION_NAME"/sql/function1.sql
-sed -i "s/DEVELOPER_NAME/$DEVELOPER_NAME/" "$MY_FUNCTION_NAME"/sql/function1.sql
-sed -i "s/DEVELOPER_EMAIL/$DEVELOPER_EMAIL/" "$MY_FUNCTION_NAME"/sql/function1.sql
-sed -i "s/YEAR/$YEAR/" "$MY_FUNCTION_NAME"/sql/function1.sql
-mv "$MY_FUNCTION_NAME"/sql/function1.sql "$MY_FUNCTION_NAME"/sql/"$MY_FUNCTION_NAME".sql
-
-
-##### SRC #########
-echo "updating the /sql/CMakeLists.txt"
-sed -i "s/MY_FUNCTION_NAME/$MY_FUNCTION_NAME/" "$MY_FUNCTION_NAME"/src/CMakeLists.txt
-
-echo "updating the function1.c file in src"
-sed -i "s/MY_FUNCTION_NAME/$MY_FUNCTION_NAME/" "$MY_FUNCTION_NAME"/src/function1.c
-sed -i "s/DEVELOPER_NAME/$DEVELOPER_NAME/" "$MY_FUNCTION_NAME"/src/function1.c
-sed -i "s/DEVELOPER_EMAIL/$DEVELOPER_EMAIL/" "$MY_FUNCTION_NAME"/src/function1.c
-sed -i "s/YEAR/$YEAR/" "$MY_FUNCTION_NAME"/src/function1.c
-sed -i "s/MY_EDGE_TYPE/$MY_EDGE_TYPE/" "$MY_FUNCTION_NAME"/src/function1.c
-sed -i "s/MY_EDGE_FUNCTION/$MY_EDGE_FUNCTION/" "$MY_FUNCTION_NAME"/src/function1.c
-sed -i "s/MY_QUERY_LINE1/$MY_QUERY_LINE1/" "$MY_FUNCTION_NAME"/src/function1.c
-sed -i "s/MY_QUERY_LINE2/$MY_QUERY_LINE2/" "$MY_FUNCTION_NAME"/src/function1.c
-sed -i "s/MY_RETURN_VALUE_TYPE/$MY_RETURN_VALUE_TYPE/" "$MY_FUNCTION_NAME"/src/function1.c
-mv "$MY_FUNCTION_NAME"/src/function1.c "$MY_FUNCTION_NAME"/src/"$MY_FUNCTION_NAME".c
-
-echo "updating the src/function1_driver.h"
-sed -i "s/MY_FUNCTION_NAME_UPPER/$MY_FUNCTION_NAME_UPPER/g" "$MY_FUNCTION_NAME"/src/function1_driver.h
-sed -i "s/MY_FUNCTION_NAME/$MY_FUNCTION_NAME/" "$MY_FUNCTION_NAME"/src/function1_driver.h
-sed -i "s/DEVELOPER_NAME/$DEVELOPER_NAME/" "$MY_FUNCTION_NAME"/src/function1_driver.h
-sed -i "s/DEVELOPER_EMAIL/$DEVELOPER_EMAIL/" "$MY_FUNCTION_NAME"/src/function1_driver.h
-sed -i "s/YEAR/$YEAR/" "$MY_FUNCTION_NAME"/src/function1_driver.h
-sed -i "s/MY_EDGE_TYPE/$MY_EDGE_TYPE/" "$MY_FUNCTION_NAME"/src/function1_driver.h
-sed -i "s/MY_QUERY_LINE1/$MY_QUERY_LINE1/" "$MY_FUNCTION_NAME"/src/function1_driver.h
-sed -i "s/MY_QUERY_LINE2/$MY_QUERY_LINE2/" "$MY_FUNCTION_NAME"/src/function1_driver.h
-sed -i "s/MY_RETURN_VALUE_TYPE/$MY_RETURN_VALUE_TYPE/" "$MY_FUNCTION_NAME"/src/function1_driver.h
-mv "$MY_FUNCTION_NAME"/src/function1_driver.h "$MY_FUNCTION_NAME"/src/"$MY_FUNCTION_NAME"_driver.h
-
-echo "updating the src/function1_driver.cpp"
-sed -i "s/MY_FUNCTION_NAME/$MY_FUNCTION_NAME/" "$MY_FUNCTION_NAME"/src/function1_driver.cpp
-sed -i "s/DEVELOPER_NAME/$DEVELOPER_NAME/" "$MY_FUNCTION_NAME"/src/function1_driver.cpp
-sed -i "s/DEVELOPER_EMAIL/$DEVELOPER_EMAIL/" "$MY_FUNCTION_NAME"/src/function1_driver.cpp
-sed -i "s/YEAR/$YEAR/" "$MY_FUNCTION_NAME"/src/function1_driver.cpp
-sed -i "s/MY_EDGE_TYPE/$MY_EDGE_TYPE/" "$MY_FUNCTION_NAME"/src/function1_driver.cpp
-sed -i "s/MY_QUERY_LINE1/$MY_QUERY_LINE1/" "$MY_FUNCTION_NAME"/src/function1_driver.cpp
-sed -i "s/MY_QUERY_LINE2/$MY_QUERY_LINE2/" "$MY_FUNCTION_NAME"/src/function1_driver.cpp
-sed -i "s/MY_RETURN_VALUE_TYPE/$MY_RETURN_VALUE_TYPE/" "$MY_FUNCTION_NAME"/src/function1_driver.cpp
-mv "$MY_FUNCTION_NAME"/src/function1_driver.cpp "$MY_FUNCTION_NAME"/src/"$MY_FUNCTION_NAME"_driver.cpp
-
-##### DOC #########
-
-echo "updating the doc/pgr_function1.cpp"
-sed -i "s/MY_FUNCTION_NAME/$MY_FUNCTION_NAME/" "$MY_FUNCTION_NAME"/doc/pgr_function1.rst
-sed -i "s/YEAR/$YEAR/" "$MY_FUNCTION_NAME"/doc/pgr_function1.rst
-sed -i "s/MY_QUERY_LINE1/$MY_QUERY_LINE1/" "$MY_FUNCTION_NAME"/doc/pgr_function1.rst
-sed -i "s/MY_QUERY_LINE2/$MY_QUERY_LINE2/" "$MY_FUNCTION_NAME"/doc/pgr_function1.rst
-mv "$MY_FUNCTION_NAME"/doc/pgr_function1.rst "$MY_FUNCTION_NAME"/doc/pgr_"$MY_FUNCTION_NAME".rst
-
-echo "updating the doc/doc-pgr_function1.queries"
-sed -i "s/MY_FUNCTION_NAME/$MY_FUNCTION_NAME/" "$MY_FUNCTION_NAME"/doc/doc-pgr_function1.queries
-mv "$MY_FUNCTION_NAME"/doc/doc-pgr_function1.queries "$MY_FUNCTION_NAME"/doc/doc-pgr_"$MY_FUNCTION_NAME".queries
-
-##### TEST #########
-
-echo "updating test/test.conf"
-sed -i "s/MY_FUNCTION_NAME/$MY_FUNCTION_NAME/" "$MY_FUNCTION_NAME"/test/test.conf
-
-echo "updating test/doc-function1.test.sql"
-sed -i "s/MY_FUNCTION_NAME/$MY_FUNCTION_NAME/" "$MY_FUNCTION_NAME"/test/doc-function1.test.sql
-
-echo "updating the test/pgtap/types-check.sql"
-sed -i "s/MY_FUNCTION_NAME_LOWER/$MY_FUNCTION_NAME_LOWER/g" "$MY_FUNCTION_NAME"/test/pgtap/types-check.sql
-
-echo "updating the test/pgtap/function1-compare-dijkstra.sql"
-sed -i "s/MY_FUNCTION_NAME_LOWER/$MY_FUNCTION_NAME_LOWER/g" "$MY_FUNCTION_NAME"/test/pgtap/function1-compare-dijkstra.sql
-
-echo "updating the test/pgtap/function1-innerQuery.sql"
-sed -i "s/MY_FUNCTION_NAME_LOWER/$MY_FUNCTION_NAME_LOWER/g" "$MY_FUNCTION_NAME"/test/pgtap/function1-innerQuery.sql
-
-mv "$MY_FUNCTION_NAME"/test/doc-function1.test.sql "$MY_FUNCTION_NAME"/test/doc-"$MY_FUNCTION_NAME".test.sql
-mv "$MY_FUNCTION_NAME"/test/doc-function1.result "$MY_FUNCTION_NAME"/test/doc-"$MY_FUNCTION_NAME".result
-mv "$MY_FUNCTION_NAME"/test/pgtap/function1-compare-dijkstra.sql "$MY_FUNCTION_NAME"/test//pgtap/"$MY_FUNCTION_NAME"-compare-dijkstra.sql
-mv "$MY_FUNCTION_NAME"/test/pgtap/function1-innerQuery.sql "$MY_FUNCTION_NAME"/test//pgtap/"$MY_FUNCTION_NAME"-innerQuery.sql
-
-#move the whole structure to its place
-mv "$MY_FUNCTION_NAME" ../../src/"$MY_FUNCTION_NAME"
-exit
+cp -r src "$MY_FUNCTION_NAME"
+cp -r pgtap "$MY_FUNCTION_NAME"
+
+function substitute() {
+ perl -pi -e "s/$1/$2/g" $MY_FUNCTION_NAME/src/*
+ perl -pi -e "s/$1/$2/g" $MY_FUNCTION_NAME/doc/*
+ perl -pi -e "s/$1/$2/g" $MY_FUNCTION_NAME/sql/*
+ perl -pi -e "s/$1/$2/g" $MY_FUNCTION_NAME/test/*
+ perl -pi -e "s/$1/$2/g" $MY_FUNCTION_NAME/pgtap/*
+}
+
+substitute "MY_FUNCTION_NAME_LOWER" "$MY_FUNCTION_NAME_LOWER"
+substitute "MY_FUNCTION_NAME_UPPER" "$MY_FUNCTION_NAME_UPPER"
+substitute "MY_FUNCTION_NAME" $MY_FUNCTION_NAME
+substitute "MY_QUERY_LINE1" "$MY_QUERY_LINE1"
+substitute "MY_QUERY_LINE2" "$MY_QUERY_LINE2"
+substitute "DEVELOPER_NAME" "$DEVELOPER_NAME"
+substitute "DEVELOPER_EMAIL" "$DEVELOPER_EMAIL"
+substitute "MY_FUNCTION_NAME" $MY_FUNCTION_NAME
+substitute "MY_FUNCTION_NAME" $MY_FUNCTION_NAME
+substitute "YEAR" $YEAR
+substitute "MY_EDGE_TYPE" $MY_EDGE_TYPE
+substitute "MY_EDGE_FILE" $MY_EDGE_FILE
+substitute "MY_EDGE_FUNCTION" $MY_EDGE_FUNCTION
+substitute "MY_RETURN_VALUE_TYPE" $MY_RETURN_VALUE_TYPE
+substitute "MY_RETURN_VALUE_FILE" $MY_RETURN_VALUE_FILE
+
+
+
+#renaming the files
+mv $MY_FUNCTION_NAME/src/function1.c $MY_FUNCTION_NAME/src/$MY_FUNCTION_NAME.c
+mv $MY_FUNCTION_NAME/src/function1_driver.cpp $MY_FUNCTION_NAME/src/"$MY_FUNCTION_NAME"_driver.cpp
+mv $MY_FUNCTION_NAME/src/function1_driver.h $MY_FUNCTION_NAME/src/"$MY_FUNCTION_NAME"_driver.h
+
+mv $MY_FUNCTION_NAME/doc/doc-pgr_function1.queries $MY_FUNCTION_NAME/doc/doc-pgr_$MY_FUNCTION_NAME.queries
+mv $MY_FUNCTION_NAME/doc/pgr_function1.rst $MY_FUNCTION_NAME/doc/pgr_$MY_FUNCTION_NAME.rst
+
+mv $MY_FUNCTION_NAME/test/doc-function1.test.sql $MY_FUNCTION_NAME/test/doc-$MY_FUNCTION_NAME.test.sql
+mv $MY_FUNCTION_NAME/test/doc-function1.result $MY_FUNCTION_NAME/test/doc-$MY_FUNCTION_NAME.result
+
+mv $MY_FUNCTION_NAME/sql/function1.sql $MY_FUNCTION_NAME/sql/$MY_FUNCTION_NAME.sql
+
+mv $MY_FUNCTION_NAME/pgtap/function1-typesCheck.sql $MY_FUNCTION_NAME/pgtap/$MY_FUNCTION_NAME-typesCheck.sql
+mv $MY_FUNCTION_NAME/pgtap/function1-compare-dijkstra.sql $MY_FUNCTION_NAME/pgtap/$MY_FUNCTION_NAME-compare-dijkstra.sql
+mv $MY_FUNCTION_NAME/pgtap/function1-innerQuery.sql $MY_FUNCTION_NAME/pgtap/$MY_FUNCTION_NAME-innerQuery.sql
+
+
+
+if [[ ! ( -d ../../doc/$MY_FUNCTION_NAME ) ]] ; then
+ mkdir ../../sql/$MY_FUNCTION_NAME
+fi
+
+if [[ ! ( -d ../../sql/$MY_FUNCTION_NAME ) ]] ; then
+ mkdir ../../sql/$MY_FUNCTION_NAME
+fi
+
+
+if [[ "$1" == "clean" ]] ; then
+ echo "deleting old directories"
+ rm -rf ../../sql/$MY_FUNCTION_NAME
+ rm -rf ../../src/$MY_FUNCTION_NAME
+ rm -rf ../../doc/$MY_FUNCTION_NAME
+ mkdir -p ../../sql/$MY_FUNCTION_NAME
+ mkdir -p ../../doc/$MY_FUNCTION_NAME
+ mkdir -p ../../include/drivers/$MY_FUNCTION_NAME
+
+ #moving the whole structure to its final location
+ mv $MY_FUNCTION_NAME/pgtap $MY_FUNCTION_NAME/test
+ mv $MY_FUNCTION_NAME/src/*driver.h ../../include/drivers/$MY_FUNCTION_NAME
+
+ mv $MY_FUNCTION_NAME/doc/* ../../doc/$MY_FUNCTION_NAME
+ mv $MY_FUNCTION_NAME/sql/* ../../sql/$MY_FUNCTION_NAME
+ rm -rf $MY_FUNCTION_NAME/doc
+ rm -rf $MY_FUNCTION_NAME/sql
+ mv $MY_FUNCTION_NAME ../../src
+fi
+
+exit 0;
+
diff --git a/tools/template/doc/pgr_function1.rst b/tools/template/doc/pgr_function1.rst
index 27a373f..3489591 100644
--- a/tools/template/doc/pgr_function1.rst
+++ b/tools/template/doc/pgr_function1.rst
@@ -15,7 +15,7 @@ pgr_MY_FUNCTION_NAME
``pgr_MY_FUNCTION_NAME`` — Returns the shortest path(s) using Dijkstra algorithm.
In particular, the Dijkstra algorithm implemented by Boost.Graph.
-.. figure:: ../../../doc/src/introduction/images/boost-inside.jpeg
+.. figure:: images/boost-inside.jpeg
:target: http://www.boost.org/libs/graph/doc/dijkstra_shortest_paths.html
Boost Graph Inside
@@ -115,32 +115,17 @@ This signature finds the shortest path from one ``start_vid`` to one ``end_vid``
Description of the Signatures
-------------------------------------------------------------------------------
-.. include:: ../../common/src/edges_input.h
+.. include:: pgRouting-concepts.rst
:start-after: basic_edges_sql_start
:end-before: basic_edges_sql_end
-.. include:: ../../dijkstra/sql/dijkstra.sql
+.. include:: pgr_dijkstra.rst
:start-after: pgr_dijkstra_parameters_start
:end-before: pgr_dijkstra_parameters_end
-
-Description of the return values
-...............................................................................
-
-Returns set of ``(seq, path_seq, node, edge, cost, agg_cost)``
-
-============== ========== =================================================
-Column Type Description
-============== ========== =================================================
-**seq** ``INT`` Sequential value starting from **1**.
-**path_seq** ``INT`` Relative position in the path. Has value **1** for the beginning of a path.
-**node** ``BIGINT`` Identifier of the node in the path from ``start_vid`` to ``end_vid``.
-**edge** ``BIGINT`` Identifier of the edge used to go from ``node`` to the next node in the path sequence. ``-1`` for the last node of the path.
-**cost** ``FLOAT`` Cost to traverse from ``node`` using ``edge`` to the next node in the path sequence.
-**agg_cost** ``FLOAT`` Aggregate cost from ``start_v`` to ``node``.
-============== ========== =================================================
-
-
+.. include:: pgRouting-concepts.rst
+ :start-after: return_path_start
+ :end-before: return_path_end
See Also
diff --git a/tools/template/test/pgtap/function1-compare-dijkstra.sql b/tools/template/pgtap/function1-compare-dijkstra.sql
similarity index 100%
rename from tools/template/test/pgtap/function1-compare-dijkstra.sql
rename to tools/template/pgtap/function1-compare-dijkstra.sql
diff --git a/tools/template/pgtap/function1-innerQuery.sql b/tools/template/pgtap/function1-innerQuery.sql
new file mode 100644
index 0000000..92b5187
--- /dev/null
+++ b/tools/template/pgtap/function1-innerQuery.sql
@@ -0,0 +1,21 @@
+\i setup.sql
+
+SELECT plan(137);
+SET client_min_messages TO ERROR;
+
+
+SELECT has_function('pgr_MY_FUNCTION_NAME_LOWER',
+ ARRAY['text', 'bigint', 'bigint', 'boolean','boolean']);
+
+SELECT function_returns('pgr_MY_FUNCTION_NAME_LOWER',
+ ARRAY['text', 'bigint', 'bigint', 'boolean','boolean'],
+ 'setof record');
+
+SELECT style_dijkstra('pgr_MY_FUNCTION_NAME_LOWER', ', 2, 3)');
+SELECT style_dijkstra('pgr_MY_FUNCTION_NAME_LOWER', ', 2, 3, true)');
+SELECT style_dijkstra('pgr_MY_FUNCTION_NAME_LOWER', ', 2, 3, false)');
+
+
+
+SELECT finish();
+ROLLBACK;
diff --git a/tools/template/pgtap/function1-typesCheck.sql b/tools/template/pgtap/function1-typesCheck.sql
new file mode 100644
index 0000000..e80f356
--- /dev/null
+++ b/tools/template/pgtap/function1-typesCheck.sql
@@ -0,0 +1,15 @@
+
+SELECT plan(4);
+
+SELECT has_function('pgr_MY_FUNCTION_NAME_LOWER');
+
+SELECT has_function('pgr_MY_FUNCTION_NAME_LOWER', ARRAY[ 'text', 'bigint', 'bigint', 'boolean', 'boolean' ]);
+
+SELECT function_returns('pgr_MY_FUNCTION_NAME_LOWER', ARRAY[ 'text', 'bigint', 'bigint', 'boolean', 'boolean' ], 'setof record');
+
+-- testing column names
+SELECT bag_has(
+ $$SELECT proargnames from pg_proc where proname = 'pgr_MY_FUNCTION_NAME_LOWER'$$,
+ $$SELECT '{"","","","directed","only_cost","seq","path_seq","node","edge","cost","agg_cost"}'::TEXT[] $$
+);
+
diff --git a/tools/template/sql/CMakeLists.txt b/tools/template/sql/CMakeLists.txt
index a2cf16f..c51ab7e 100644
--- a/tools/template/sql/CMakeLists.txt
+++ b/tools/template/sql/CMakeLists.txt
@@ -1,7 +1,13 @@
-# Append in local scope
-LIST(APPEND PACKAGE_SQL_FILES
- ${CMAKE_CURRENT_SOURCE_DIR}/MY_FUNCTION_NAME.sql
-)
-# set in parent scope
-SET(PACKAGE_SQL_FILES "${PACKAGE_SQL_FILES}" PARENT_SCOPE)
+SET(LOCAL_FILES
+ MY_FUNCTION_NAME.sql
+ )
+
+# Do not modify bellow this line
+
+foreach (f ${LOCAL_FILES})
+ configure_file(${f} ${f})
+ list(APPEND PACKAGE_SQL_FILES ${CMAKE_CURRENT_BINARY_DIR}/${f})
+endforeach()
+
+set(PgRouting_SQL_FILES ${PgRouting_SQL_FILES} ${PACKAGE_SQL_FILES} PARENT_SCOPE)
diff --git a/tools/template/src/function1.c b/tools/template/src/function1.c
index b6508f6..48b072f 100644
--- a/tools/template/src/function1.c
+++ b/tools/template/src/function1.c
@@ -43,39 +43,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* - should allways be first in the C code
*/
-#include "./../../common/src/postgres_connection.h"
+#include "c_common/postgres_connection.h"
-/**
- * funcapi.h
- *
- * - While developing to not show postgres header files warnings:
- * - wrap the file(s) with the appropiate dignostic to be ignored
- */
-#ifdef __GNUC__
-#pragma GCC diagnostic ignored "-Wunused-parameter"
-#endif
-
-#include "funcapi.h"
-
-#ifdef __GNUC__
-#pragma GCC diagnostic pop
-#endif
-
-#if PGSQL_VERSION > 92
-#include "access/htup_details.h"
-#endif
-#include "fmgr.h"
-#include "./../../common/src/debug_macro.h" // for macro PGR_DBG
-#include "./../../common/src/e_report.h" // for pgr_global_report
-#include "./../../common/src/time_msg.h" // for time_msg & clock
-#include "./../../common/src/pgr_types.h" // for the current accepted types
-#include "./../../common/src/edges_input.h" // for functions to get edges informtion
+/* for macro PGR_DBG */
+#include "c_common/debug_macro.h"
+/* for pgr_global_report */
+#include "c_common/e_report.h"
+/* for time_msg & clock */
+#include "c_common/time_msg.h"
+/* for functions to get edges informtion */
+#include "c_common/edges_input.h"
-#include "./MY_FUNCTION_NAME_driver.h" // the C++ code of the function
+#include "drivers/MY_FUNCTION_NAME/MY_FUNCTION_NAME_driver.h" // the link to the C++ code of the function
-PG_FUNCTION_INFO_V1(MY_FUNCTION_NAME);
PGDLLEXPORT Datum MY_FUNCTION_NAME(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(MY_FUNCTION_NAME);
/******************************************************************************/
@@ -97,8 +80,9 @@ process(
bool only_cost,
MY_RETURN_VALUE_TYPE **result_tuples,
size_t *result_count) {
-
- /* https://www.postgresql.org/docs/current/static/spi-spi-connect.html */
+ /*
+ * https://www.postgresql.org/docs/current/static/spi-spi-connect.html
+ */
pgr_SPI_connect();
@@ -129,7 +113,9 @@ process(
size_t total_edges = 0;
if (start_vid == end_vid) {
- /* https://www.postgresql.org/docs/current/static/spi-spi-finish.html */
+ /*
+ * https://www.postgresql.org/docs/current/static/spi-spi-finish.html
+ */
pgr_SPI_finish();
return;
}
@@ -174,11 +160,14 @@ process(
PGR_DBG("Returning %ld tuples", *result_count);
if (err_msg) {
- if (*result_tuples) free(*result_tuples);
+ if (*result_tuples) pfree(*result_tuples);
}
- pgr_global_report(&log_msg, ¬ice_msg, &err_msg);
+ pgr_global_report(log_msg, notice_msg, err_msg);
if (edges) pfree(edges);
+ if (log_msg) pfree(log_msg);
+ if (notice_msg) pfree(notice_msg);
+ if (err_msg) pfree(err_msg);
#if 0
/*
* handling arrays example
diff --git a/tools/template/src/function1_driver.cpp b/tools/template/src/function1_driver.cpp
index d9035c5..f082024 100644
--- a/tools/template/src/function1_driver.cpp
+++ b/tools/template/src/function1_driver.cpp
@@ -27,23 +27,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#if defined(__MINGW32__) || defined(_MSC_VER)
-#include <winsock2.h>
-#include <windows.h>
-#endif
+#include "drivers/MY_FUNCTION_NAME/MY_FUNCTION_NAME_driver.h"
#include <sstream>
#include <deque>
#include <vector>
-#include "./MY_FUNCTION_NAME_driver.h"
+#include "dijkstra/pgr_dijkstra.hpp"
+#include "cpp_common/pgr_alloc.hpp"
+#include "cpp_common/pgr_assert.h"
-#include "../../common/src/pgr_alloc.hpp"
-#include "./../../common/src/pgr_assert.h"
-#include "./../../common/src/pgr_types.h"
-
-#include "./../../dijkstra/src/pgr_dijkstra.hpp"
@@ -130,28 +124,28 @@ do_pgr_MY_FUNCTION_NAME(
pgassert(*err_msg == NULL);
*log_msg = log.str().empty()?
- nullptr :
- strdup(log.str().c_str());
+ *log_msg :
+ pgr_msg(log.str().c_str());
*notice_msg = notice.str().empty()?
- nullptr :
- strdup(notice.str().c_str());
+ *notice_msg :
+ pgr_msg(notice.str().c_str());
} catch (AssertFailedException &except) {
- if (*return_tuples) free(*return_tuples);
+ (*return_tuples) = pgr_free(*return_tuples);
(*return_count) = 0;
err << except.what();
- *err_msg = strdup(err.str().c_str());
- *log_msg = strdup(log.str().c_str());
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
} catch (std::exception &except) {
- if (*return_tuples) free(*return_tuples);
+ (*return_tuples) = pgr_free(*return_tuples);
(*return_count) = 0;
err << except.what();
- *err_msg = strdup(err.str().c_str());
- *log_msg = strdup(log.str().c_str());
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
} catch(...) {
- if (*return_tuples) free(*return_tuples);
+ (*return_tuples) = pgr_free(*return_tuples);
(*return_count) = 0;
err << "Caught unknown exception!";
- *err_msg = strdup(err.str().c_str());
- *log_msg = strdup(log.str().c_str());
+ *err_msg = pgr_msg(err.str().c_str());
+ *log_msg = pgr_msg(log.str().c_str());
}
}
diff --git a/tools/template/src/function1_driver.h b/tools/template/src/function1_driver.h
index 69fc890..68a4c0b 100644
--- a/tools/template/src/function1_driver.h
+++ b/tools/template/src/function1_driver.h
@@ -27,11 +27,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
-#ifndef SRC_MY_FUNCTION_NAME_UPPER_SRC_MY_FUNCTION_NAME_UPPER_DRIVER_H_
-#define SRC_MY_FUNCTION_NAME_UPPER_SRC_MY_FUNCTION_NAME_UPPER_DRIVER_H_
+#ifndef INCLUDE_DRIVERS_MY_FUNCTION_NAME_UPPER_MY_FUNCTION_NAME_UPPER_DRIVER_H_
+#define INCLUDE_DRIVERS_MY_FUNCTION_NAME_UPPER_MY_FUNCTION_NAME_UPPER_DRIVER_H_
#pragma once
-#include "./../../common/src/pgr_types.h"
+#include "c_types/MY_EDGE_FILE.h"
+#include "c_types/MY_RETURN_VALUE_FILE.h"
#ifdef __cplusplus
extern "C" {
@@ -61,4 +62,4 @@ extern "C" {
}
#endif
-#endif // SRC_MY_FUNCTION_NAME_UPPER_SRC_MY_FUNCTION_NAME_UPPER_DRIVER_H_
+#endif // INCLUDE_DRIVERS_MY_FUNCTION_NAME_UPPER_MY_FUNCTION_NAME_UPPER_DRIVER_H_
diff --git a/tools/template/test/doc-function1.result b/tools/template/test/doc-function1.result
index 3a16953..e279a5c 100644
--- a/tools/template/test/doc-function1.result
+++ b/tools/template/test/doc-function1.result
@@ -1,11 +1,34 @@
+BEGIN;
+BEGIN
+SET client_min_messages TO NOTICE;
+SET
-- q1
-1|1|2|4|1|0
-2|2|5|8|1|1
-3|3|6|9|1|2
-4|4|9|16|1|3
-5|5|4|3|1|4
-6|6|3|-1|0|5
+SELECT * FROM pgr_MY_FUNCTION_NAME(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 4 | 1 | 0
+ 2 | 2 | 5 | 8 | 1 | 1
+ 3 | 3 | 6 | 9 | 1 | 2
+ 4 | 4 | 9 | 16 | 1 | 3
+ 5 | 5 | 4 | 3 | 1 | 4
+ 6 | 6 | 3 | -1 | 0 | 5
+(6 rows)
+
-- q2
-1|1|2|2|1|0
-2|2|3|-1|0|1
+SELECT * FROM pgr_MY_FUNCTION_NAME(
+ 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
+ 2, 3,
+ FALSE
+);
+ seq | path_seq | node | edge | cost | agg_cost
+-----+----------+------+------+------+----------
+ 1 | 1 | 2 | 2 | 1 | 0
+ 2 | 2 | 3 | -1 | 0 | 1
+(2 rows)
+
-- q3
+ROLLBACK;
+ROLLBACK
diff --git a/tools/template/test/doc-function1.test.sql b/tools/template/test/doc-function1.test.sql
index e4dda96..d58a7a1 100644
--- a/tools/template/test/doc-function1.test.sql
+++ b/tools/template/test/doc-function1.test.sql
@@ -1,4 +1,3 @@
-BEGIN;
\echo -- q1
SELECT * FROM pgr_MY_FUNCTION_NAME(
@@ -14,4 +13,3 @@ SELECT * FROM pgr_MY_FUNCTION_NAME(
);
\echo -- q3
-ROLLBACK;
diff --git a/tools/template/test/pgtap/function1-innerQuery.sql b/tools/template/test/pgtap/function1-innerQuery.sql
deleted file mode 100644
index dd9a023..0000000
--- a/tools/template/test/pgtap/function1-innerQuery.sql
+++ /dev/null
@@ -1,116 +0,0 @@
-\i setup.sql
-
-SELECT plan(47);
-SET client_min_messages TO ERROR;
-
-
-SELECT has_function('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['text', 'bigint', 'bigint', 'boolean','boolean']);
-
-SELECT function_returns('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['text', 'bigint', 'bigint', 'boolean','boolean'],
- 'setof record');
-
-CREATE OR REPLACE FUNCTION test_anyInteger(fn TEXT, params TEXT[], parameter TEXT)
-RETURNS SETOF TEXT AS
-$BODY$
-DECLARE
-start_sql TEXT;
-end_sql TEXT;
-query TEXT;
-p TEXT;
-BEGIN
- start_sql = 'select * from ' || fn || '($$ SELECT ';
- FOREACH p IN ARRAY params LOOP
- IF p = parameter THEN CONTINUE;
- END IF;
- start_sql = start_sql || p || ', ';
- END LOOP;
- end_sql = ' FROM edge_table $$, 2, 3, true)';
-
- query := start_sql || parameter || '::SMALLINT ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::INTEGER ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::BIGINT ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::REAL ' || end_sql;
- RETURN query SELECT throws_ok(query);
-
- query := start_sql || parameter || '::FLOAT8 ' || end_sql;
- RETURN query SELECT throws_ok(query);
-END;
-$BODY$ LANGUAGE plpgsql;
-
-CREATE OR REPLACE FUNCTION test_anyNumerical(fn TEXT, params TEXT[], parameter TEXT)
-RETURNS SETOF TEXT AS
-$BODY$
-DECLARE
-start_sql TEXT;
-end_sql TEXT;
-query TEXT;
-p TEXT;
-BEGIN
- start_sql = 'select * from ' || fn || '($$ SELECT ';
- FOREACH p IN ARRAY params LOOP
- IF p = parameter THEN CONTINUE;
- END IF;
- start_sql = start_sql || p || ', ';
- END LOOP;
- end_sql = ' FROM edge_table $$, 2, 3, true)';
-
- query := start_sql || parameter || '::SMALLINT ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::INTEGER ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::BIGINT ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::REAL ' || end_sql;
- RETURN query SELECT lives_ok(query);
-
- query := start_sql || parameter || '::FLOAT8 ' || end_sql;
- RETURN query SELECT lives_ok(query);
-END;
-$BODY$ LANGUAGE plpgsql;
-
---with reverse cost
-SELECT test_anyInteger('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
- 'id');
-SELECT test_anyInteger('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
- 'source');
-SELECT test_anyInteger('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
- 'target');
-SELECT test_anyNumerical('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
- 'cost');
-SELECT test_anyNumerical('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
- 'reverse_cost');
-
-
---without reverse cost
-SELECT test_anyInteger('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['id', 'source', 'target', 'cost'],
- 'id');
-SELECT test_anyInteger('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['id', 'source', 'target', 'cost'],
- 'source');
-SELECT test_anyInteger('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['id', 'source', 'target', 'cost'],
- 'target');
-SELECT test_anyNumerical('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['id', 'source', 'target', 'cost'],
- 'cost');
-
-
-SELECT finish();
-ROLLBACK;
diff --git a/tools/template/test/pgtap/types-check.sql b/tools/template/test/pgtap/types-check.sql
deleted file mode 100644
index c745e56..0000000
--- a/tools/template/test/pgtap/types-check.sql
+++ /dev/null
@@ -1,54 +0,0 @@
-\i setup.sql
-
-
-SELECT plan(6);
-
-SELECT can(ARRAY['pgr_MY_FUNCTION_NAME_LOWER']);
-
-
---V2.4+
-SELECT has_function('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['text','bigint','bigint','boolean','boolean']);
-SELECT function_returns('pgr_MY_FUNCTION_NAME_LOWER',
- ARRAY['text','bigint','bigint','boolean','boolean'],
- 'setof record');
-
--- testing for the signature that they return the correct names & columns
-
-PREPARE v21q00 AS
-SELECT pg_typeof(seq)::text AS t1, pg_typeof(path_seq)::text AS t2,
- pg_typeof(node)::text AS t5, pg_typeof(edge)::text AS t6,
- pg_typeof(cost)::text AS t7, pg_typeof(agg_cost)::TEXT AS t8
- FROM (
- SELECT * FROM pgr_MY_FUNCTION_NAME_LOWER(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3, true) ) AS a
- limit 1
-;
-
-PREPARE v21q01 AS
-SELECT 'integer'::text AS t1,'integer'::text AS t2,
- 'bigint'::text AS t5, 'bigint'::text AS t6,
- 'double precision'::text AS t7, 'double precision'::text AS t8;
-
-SELECT set_eq('v21q00', 'v21q01','Expected columns names & types in version 2.4');
-
-
--- CHECKING WORKS WITH & WITOUT REVERSE COST
-
-PREPARE v20q1 AS
-SELECT * FROM pgr_MY_FUNCTION_NAME_LOWER(
- 'SELECT id, source, target, cost, reverse_cost FROM edge_table',
- 2, 3, true);
-
-PREPARE v20q3 AS
-SELECT * FROM pgr_MY_FUNCTION_NAME_LOWER(
- 'SELECT id, source, target, cost FROM edge_table',
- 2, 3, false);
-
-SELECT lives_ok('v20q1','with reverse cost');
-SELECT lives_ok('v20q3','with NO reverse cost');
-
-
-SELECT finish();
-ROLLBACK;
diff --git a/tools/testers/algorithm-tester.pl b/tools/testers/algorithm-tester.pl
index f392018..3eb0d0d 100755
--- a/tools/testers/algorithm-tester.pl
+++ b/tools/testers/algorithm-tester.pl
@@ -15,12 +15,14 @@ use vars qw/*name *dir *prune/;
*dir = *File::Find::dir;
*prune = *File::Find::prune;
+my $POSGRESQL_MIN_VERSION = '9.2';
my $DOCUMENTATION = 0;
my $INTERNAL_TESTS = 0;
my $VERBOSE = 0;
my $DRYRUN = 0;
my $DEBUG = 0;
my $DEBUG1 = 0;
+my $FORCE = 0;
my $DBNAME = "pgr_test__db__test";
my $DBUSER;
@@ -44,6 +46,7 @@ sub Usage {
" -ignorenotice - ignore NOTICE statements when reporting failures\n" .
" -alg 'dir' - directory to select which algorithm subdirs to test\n" .
" -documentation - ONLY generate documentation examples\n" .
+ " -force - Force tests for unsupported versions >= 9.1 of postgreSQL \n" .
" -h - help\n";
}
@@ -51,7 +54,8 @@ print "RUNNING: algorithm-tester.pl " . join(" ", @ARGV) . "\n";
my ($vpg, $postgis_ver, $vpgr, $psql);
my $alg = '';
-my @testpath = ("doc/", "src/");
+my @testpath = ("src/");
+my @test_direcotry = ();
my $clean;
my $ignore;
@@ -79,13 +83,7 @@ while (my $a = shift @ARGV) {
}
elsif ($a eq '-alg') {
$alg = shift @ARGV || Usage();
- if ($alg eq 'doc') {
- @testpath = ('doc');
- } elsif ($alg eq 'recipes') {
- @testpath = ("doc/src/recipes");
- } else {
- @testpath = ("src/$alg");
- }
+ @testpath = ("src/$alg");
}
elsif ($a eq '-psql') {
$psql = shift @ARGV || Usage();
@@ -111,6 +109,9 @@ while (my $a = shift @ARGV) {
elsif ($a =~ /^-v/i) {
$VERBOSE = 1;
}
+ elsif ($a =~ /^-force/i) {
+ $FORCE = 1;
+ }
elsif ($a =~ /^-doc(umentation)?/i) {
$DOCUMENTATION = 1;
$DEBUG1 = 0; # disbale timing reports during documentation generation
@@ -149,7 +150,7 @@ if (length($psql)) {
$psql = "\"$psql\"";
}
}
-print "Operative system found: $OS";
+print "Operative system found: $OS\n";
# Traverse desired filesystems
@@ -244,7 +245,7 @@ sub run_test {
for my $x (@{$t->{tests}}) {
process_single_test($x, $dir,, $DBNAME, \%res)
}
- if ($OS =~ /msys/ || $OS=~/MSW/ || $OS =~ /cygwin/) {
+ if ($OS =~/msys/ || $OS=~/MSW/ || $OS =~/cygwin/) {
for my $x (@{$t->{windows}}) {
process_single_test($x, $dir,, $DBNAME, \%res)
}
@@ -269,7 +270,7 @@ sub process_single_test{
my $res = shift;
#each tests will use clean data
- print "Processing test: $dir/$x\n";
+ print "Processing test: $dir/$x";
my $t0 = [gettimeofday];
#TIN = test_input_file
open(TIN, "$dir/$x.test.sql") || do {
@@ -280,19 +281,25 @@ sub process_single_test{
my $level = "NOTICE";
$level = "WARNING" if $ignore;
- $level = "DEBUG1" if $DEBUG1;
+ $level = "DEBUG3" if $DEBUG1;
if ($DOCUMENTATION) {
- mysystem("mkdir -p '$dir/../doc' "); # make sure the directory exists
- open(PSQL, "|$psql $connopts --set='VERBOSITY terse' -e $database > $dir/../doc/$x.queries 2>\&1 ") || do {
+ mysystem("mkdir -p '$dir/../../../doc/queries' "); # make sure the directory exists
+ open(PSQL, "|$psql $connopts --set='VERBOSITY terse' -e $database > $dir/../../../doc/queries/$x.queries 2>\&1 ") || do {
$res->{"$dir/$x.test.sql"} = "FAILED: could not open connection to db : $!";
$stats{z_fail}++;
next;
};
}
else {
- open(PSQL, "|$psql $connopts --set='VERBOSITY terse' -A -t -q $database > $TMP 2>\&1 ") || do {
+ #open(PSQL, "|$psql $connopts --set='VERBOSITY terse' -e $database > $dir/$x.result 2>\&1 ") || do {
+ # $res->{"$dir/$x.test.sql"} = "FAILED: could not open connection to db : $!";
+ # $stats{z_fail}++;
+ # next;
+ #};
+
+ open(PSQL, "|$psql $connopts --set='VERBOSITY terse' -e $database > $TMP 2>\&1 ") || do {
$res->{"$dir/$x.test.sql"} = "FAILED: could not open connection to db : $!";
if (!$INTERNAL_TESTS) {
$stats{z_fail}++;
@@ -316,6 +323,7 @@ sub process_single_test{
#closes the input file /TIN = test input
close(TIN);
+ print "\n" if $DOCUMENTATION;
return if $DOCUMENTATION;
my $dfile;
@@ -360,10 +368,12 @@ sub process_single_test{
elsif (length($r)) {
$res->{"$dir/$x.test.sql"} = "FAILED: $r";
$stats{z_fail}++ unless $DEBUG1;
+ print "\t FAIL\n";
}
else {
$res->{"$dir/$x.test.sql"} = "Passed";
$stats{z_pass}++;
+ print "\t PASS\n";
}
print " test run time: " . tv_interval($t0, [gettimeofday]) . "\n";
}
@@ -382,76 +392,42 @@ sub createTestDB {
print "-- DBSHARE: $dbshare\n";
}
- # first create a database with postgis installed in it
- if (version_greater_eq($dbver, '9.1') &&
- -f "$dbshare/extension/postgis.control") {
- mysystem("createdb $connopts $databaseName");
- die "ERROR: Failed to create database '$databaseName'!\n"
- unless dbExists($databaseName);
- my $encoding = '';
- if ($OS =~ /msys/
- || $OS =~ /MSWin/) {
- $encoding = "SET client_encoding TO 'UTF8';";
- }
- print "-- Trying to install postgis extension $postgis_ver\n" if $DEBUG;
- mysystem("$psql $connopts -c \"$encoding create extension postgis $postgis_ver \" $databaseName");
-# print "-- Trying to install pgTap extension \n" if $DEBUG;
-# system("$psql $connopts -c \"$encoding create extension pgtap \" $databaseName");
-# if ($? != 0) {
-# print "Failed: create extension pgtap\n" if $VERBOSE || $DRYRUN;
-# die;
-# }
- }
- #
-# else {
-# $template = "template_postgis_$vpgis";
-# }
-# elsif (dbExists('template_postgis')) {
-# $template = "template_postgis";
-# }
-# else {
-# die "ERROR: Could not find an appropriate template_postgis database!\n";
-# }
-# print "-- Trying to install postgis from $template\n" if $DEBUG;
-# mysystem("createdb $connopts -T $template $databaseName");
-# sleep(2);
-# die "ERROR: Failed to create database '$databaseName'!\n"
-# if ! dbExists($databaseName);
-# }
-
- # next we install pgrouting into the new database
- if (version_greater_eq($dbver, '9.1') &&
- -f "$dbshare/extension/postgis.control") {
- my $myver = '';
- if ($vpgr) {
- $myver = " VERSION '$vpgr'";
- }
- print "-- Trying to install pgrouting extension $myver\n" if $DEBUG;
- mysystem("$psql $connopts -c \"create extension pgrouting $myver\" $databaseName");
- }
- elsif ($vpgr && -f "$dbshare/extension/pgrouting--$vpgr.sql") {
- print "-- Trying to install pgrouting from '$dbshare/extension/pgrouting--$vpgr.sql'\n" if $DEBUG;
- mysystem("$psql $connopts -f '$dbshare/extension/pgrouting--$vpgr.sql' $databaseName");
+ die "
+ Unsupported postgreSQL version $dbver
+ Minimum requierment is $POSGRESQL_MIN_VERSION version
+ Use -force to force the tests\n"
+ unless version_greater_eq($dbver, $POSGRESQL_MIN_VERSION) or ($FORCE and version_greater_eq($dbver, '9.1'));
+
+ die "postGIS extension $postgis_ver not found\n"
+ unless -f "$dbshare/extension/postgis.control";
+
+
+ # Create a database with postgis installed in it
+ mysystem("createdb $connopts $databaseName");
+ die "ERROR: Failed to create database '$databaseName'!\n"
+ unless dbExists($databaseName);
+ my $encoding = '';
+ if ($OS =~ /msys/
+ || $OS =~ /MSWin/) {
+ $encoding = "SET client_encoding TO 'UTF8';";
}
- else {
- my $find = `find "$dbshare/contrib" -name pgrouting.sql | sort -r -n `;
- my @found = split(/\n/, $find);
- my $file = shift @found;
- if ($file && length($file)) {
- print "-- Trying to install pgrouting from '$file'\n" if $DEBUG;
- mysystem("$psql $connopts -f '$file' $databaseName");
- }
- else {
- mysystem("ls -alR $dbshare") if $DEBUG;
- die "ERROR: failed to install pgrouting into the database!\n";
- }
+ print "-- Installing postgis extension $postgis_ver\n" if $DEBUG;
+ mysystem("$psql $connopts -c \"$encoding CREATE EXTENSION postgis $postgis_ver \" $databaseName");
+
+ # Install pgrouting into the database
+ my $myver = '';
+ if ($vpgr) {
+ $myver = " VERSION '$vpgr'";
}
+ print "Installing pgrouting extension $myver\n" if $DEBUG;
+ mysystem("$psql $connopts -c \"CREATE EXTENSION pgrouting $myver\" $databaseName");
- # now verify that we have pgrouting installed
+ # Verify pgrouting was installed
my $pgrv = `$psql $connopts -c "select pgr_version()" $databaseName`;
die "ERROR: failed to install pgrouting into the database!\n"
unless $pgrv;
+
print `$psql $connopts -c "select version();" postgres `, "\n";
print `$psql $connopts -c "select postgis_full_version();" $databaseName `, "\n";
print `$psql $connopts -c "select pgr_version();" $databaseName `, "\n";
diff --git a/tools/testers/innerQuery.sql b/tools/testers/innerQuery.sql
new file mode 100644
index 0000000..546d548
--- /dev/null
+++ b/tools/testers/innerQuery.sql
@@ -0,0 +1,139 @@
+
+CREATE OR REPLACE FUNCTION test_anyInteger(fn TEXT, rest_sql TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'select * from ' || fn || '($$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM edge_table $$' || rest_sql;
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION test_anyNumerical(fn TEXT, rest_sql TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'select * from ' || fn || '($$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM edge_table $$' || rest_sql;
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION test_anyIntegerOrders(fn TEXT, rest_sql TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'select * from ' || fn || '($$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM orders LIMIT 1 $$, $$ SELECT * from Vehicles $$' || rest_sql;
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION test_anyNumericalOrders(fn TEXT, rest_sql TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'select * from ' || fn || '($$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM orders LIMIT 1 $$, $$ SELECT * from Vehicles $$' || rest_sql;
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+
diff --git a/tools/testers/innerQuery_old.sql b/tools/testers/innerQuery_old.sql
new file mode 100644
index 0000000..badf5d2
--- /dev/null
+++ b/tools/testers/innerQuery_old.sql
@@ -0,0 +1,76 @@
+
+SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost, x1,y1,x2,y2
+INTO edge_table_old
+FROM edge_table;
+
+
+CREATE OR REPLACE FUNCTION test_Integer(fn TEXT, rest_sql TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'select * from ' || fn || '($$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM edge_table_old $$' || rest_sql;
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION test_Float(fn TEXT, rest_sql TEXT, params TEXT[], parameter TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+DECLARE
+start_sql TEXT;
+end_sql TEXT;
+query TEXT;
+p TEXT;
+BEGIN
+ start_sql = 'select * from ' || fn || '($$ SELECT ';
+ FOREACH p IN ARRAY params LOOP
+ IF p = parameter THEN CONTINUE;
+ END IF;
+ start_sql = start_sql || p || ', ';
+ END LOOP;
+ end_sql = ' FROM edge_table_old $$' || rest_sql;
+
+ query := start_sql || parameter || '::SMALLINT ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::INTEGER ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::BIGINT ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::REAL ' || end_sql;
+ RETURN query SELECT throws_ok(query);
+
+ query := start_sql || parameter || '::FLOAT8 ' || end_sql;
+ RETURN query SELECT lives_ok(query);
+END;
+$BODY$ LANGUAGE plpgsql;
+
+
+
diff --git a/tools/testers/inner_styles.sql b/tools/testers/inner_styles.sql
new file mode 100644
index 0000000..c21606e
--- /dev/null
+++ b/tools/testers/inner_styles.sql
@@ -0,0 +1,319 @@
+
+CREATE OR REPLACE FUNCTION style_dijkstra(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+--with reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'cost');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'reverse_cost');
+
+
+--without reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'cost');
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION style_dijkstra_no_id(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+--with reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['source', 'target', 'cost', 'reverse_cost'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['source', 'target', 'cost', 'reverse_cost'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['source', 'target', 'cost', 'reverse_cost'],
+ 'cost');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['source', 'target', 'cost', 'reverse_cost'],
+ 'reverse_cost');
+
+
+--without reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['source', 'target', 'cost'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['source', 'target', 'cost'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['source', 'target', 'cost'],
+ 'cost');
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION style_dijkstraTRSP(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+--with reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'cost');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'reverse_cost');
+
+
+--without reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'cost');
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION style_lineGraph(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+--with reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'cost');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'reverse_cost');
+
+
+--without reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'cost');
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION style_astar(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+--with reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'cost');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'reverse_cost');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'x1');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'y1');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'x2');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'y2');
+
+
+--without reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'cost');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'x1');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'y1');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'x2');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'y2');
+
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION style_withpoints(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+RETURN QUERY SELECT style_dijkstra(fn, $$, 'SELECT * from pointsOfInterest' $$ || rest_sql);
+
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION style_max_flow(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+--with reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'capacity', 'reverse_capacity'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'capacity', 'reverse_capacity'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'capacity', 'reverse_capacity'],
+ 'target');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'capacity', 'reverse_capacity'],
+ 'capacity');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'capacity', 'reverse_capacity'],
+ 'reverse_capacity');
+
+
+--without reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'capacity'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'capacity'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'capacity'],
+ 'target');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'capacity'],
+ 'capacity');
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION style_cardinalitymatch(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+ALTER TABLE edge_table RENAME cost TO going;
+ALTER TABLE edge_table RENAME reverse_cost TO coming;
+
+--with reverse cost
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'going', 'coming'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'going', 'coming'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'going', 'coming'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'going', 'coming'],
+ 'going');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'going', 'coming'],
+ 'coming');
+
+
+--without coming
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'going'],
+ 'id');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'going'],
+ 'source');
+RETURN QUERY SELECT test_anyInteger(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'going'],
+ 'target');
+RETURN QUERY SELECT test_anyNumerical(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'going'],
+ 'going');
+
+ALTER TABLE edge_table RENAME going TO cost;
+ALTER TABLE edge_table RENAME coming TO reverse_cost;
+
+END;
+$BODY$
+LANGUAGE plpgsql;
diff --git a/tools/testers/old_inner_styles.sql b/tools/testers/old_inner_styles.sql
new file mode 100644
index 0000000..c68ad46
--- /dev/null
+++ b/tools/testers/old_inner_styles.sql
@@ -0,0 +1,176 @@
+
+CREATE OR REPLACE FUNCTION style_old_dijkstra_with(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+--with reverse cost
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'id');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'source');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'target');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'cost');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost'],
+ 'reverse_cost');
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION style_old_dijkstra_no_rev(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+--without reverse cost
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'id');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'source');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'target');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost'],
+ 'cost');
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION style_old_dijkstra_no_id_no_reverse(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['source', 'target', 'cost'],
+ 'source');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['source', 'target', 'cost'],
+ 'target');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['source', 'target', 'cost'],
+ 'cost');
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION style_old_dijkstra_no_id(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+--with reverse cost
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['source', 'target', 'cost', 'reverse_cost'],
+ 'source');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['source', 'target', 'cost', 'reverse_cost'],
+ 'target');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['source', 'target', 'cost', 'reverse_cost'],
+ 'cost');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['source', 'target', 'cost', 'reverse_cost'],
+ 'reverse_cost');
+
+
+--without reverse cost
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['source', 'target', 'cost'],
+ 'source');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['source', 'target', 'cost'],
+ 'target');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['source', 'target', 'cost'],
+ 'cost');
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+
+CREATE OR REPLACE FUNCTION style_old_astar_with(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+--with reverse cost
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'id');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'source');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'target');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'cost');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'reverse_cost');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'x1');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'y1');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'x2');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'reverse_cost', 'x1', 'y1', 'x2', 'y2'],
+ 'y2');
+END;
+$BODY$
+LANGUAGE plpgsql;
+
+
+
+CREATE OR REPLACE FUNCTION style_old_astar_no_rev(fn TEXT, rest_sql TEXT)
+RETURNS SETOF TEXT AS
+$BODY$
+BEGIN
+
+--without reverse cost
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'id');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'source');
+RETURN QUERY SELECT test_integer(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'target');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'cost');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'x1');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'y1');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'x2');
+RETURN QUERY SELECT test_float(fn, rest_sql,
+ ARRAY['id', 'source', 'target', 'cost', 'x1', 'y1', 'x2', 'y2'],
+ 'y2');
+
+END;
+$BODY$
+LANGUAGE plpgsql;
+
diff --git a/tools/testers/pg_prove_tests.sh b/tools/testers/pg_prove_tests.sh
index 599784f..217b827 100755
--- a/tools/testers/pg_prove_tests.sh
+++ b/tools/testers/pg_prove_tests.sh
@@ -1,12 +1,12 @@
#!/bin/bash
# ------------------------------------------------------------------------------
-# Travis CI scripts
+# Travis CI scripts
# Copyright(c) pgRouting Contributors
#
# Test pgRouting
# ------------------------------------------------------------------------------
-set -e
+set -e
PGUSER=$1
RELEASE_TYPE="b$2"
@@ -18,10 +18,10 @@ PGDATABASE="___pgr___test___"
run_psql () {
PGOPTIONS='--client-min-messages=warning' psql -U $PGUSER -d $PGDATABASE -X -q -v ON_ERROR_STOP=1 --pset pager=off "$@"
if [ "$?" -ne 0 ]
- then
+ then
echo "Test query failed: $@"
ERROR=1
- fi
+ fi
}
@@ -30,45 +30,20 @@ echo "cd ./tools/testers/"
cd ./tools/testers/
echo "psql -f setup_db.sql"
run_psql -f setup_db.sql
-#pg_prove ../../src/funnyDijkstra/test/pgtap/* -d $PGDATABASE
-
-#TODO comment out peformance test before merging to MASTER
if [ $RELEASE_TYPE = "bDebug" ]
then
pg_prove ../../src/internalQueryTests/test/pgtap/* -d $PGDATABASE -U $PGUSER
+ pg_prove ../../src/tsp/test/performance/* -d $PGDATABASE -U $PGUSER
echo "MADE TEST **********************"
fi
-pg_prove ../../src/trsp/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/dijkstra/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/bdDijkstra/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/bd_dijkstra/test/pgtap/* -d $PGDATABASE -U $PGUSER
-
-pg_prove ../../src/max_flow/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/pickDeliver/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/astar/test/pgtap/* -d $PGDATABASE -U $PGUSER
-
-
-pg_prove ../../src/withPoints/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/allpairs/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/alpha_shape/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/apsp_johnson/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/apsp_warshall/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/ksp/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/topology/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/common/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/driving_distance/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/kdijkstra/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/trsp/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/tsp/test/pgtap/* -d $PGDATABASE -U $PGUSER
+#pg_prove ../../src/dijkstraTRSP/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/bd_astar/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/convenience/test/pgtap/* -d $PGDATABASE -U $PGUSER
+pg_prove ../../src/lineGraph/test/pgtap/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/tsp/test/performance/* -d $PGDATABASE -U $PGUSER
-pg_prove ../../src/contraction/test/pgtap/* -d $PGDATABASE -U $PGUSER
+pg_prove -d $PGDATABASE -U $PGUSER ../../pgtap/*/*
if [ "$?" -ne 0 ]
then
diff --git a/tools/testers/pickDeliver_pgtap_data.sql b/tools/testers/pickDeliver_pgtap_data.sql
index 51ddcc1..213799c 100644
--- a/tools/testers/pickDeliver_pgtap_data.sql
+++ b/tools/testers/pickDeliver_pgtap_data.sql
@@ -1,123 +1,123 @@
-
-DROP TABLE IF EXISTS customer CASCADE;
-CREATE table customer (
- id BIGINT not null primary key,
- x DOUBLE PRECISION,
- y DOUBLE PRECISION,
- demand INTEGER,
- opentime INTEGER,
- closetime INTEGER,
- servicetime INTEGER,
- pindex BIGINT,
- dindex BIGINT
- );
-
-
-COPY customer (id, x, y, demand, opentime, closetime, servicetime, pindex, dindex) FROM stdin;
-0 40 50 0 0 1236 0 0 0
-1 45 68 -10 912 967 90 11 0
-2 45 70 -20 825 870 90 6 0
-3 42 66 10 65 146 90 0 75
-4 42 68 -10 727 782 90 9 0
-5 42 65 10 15 67 90 0 7
-6 40 69 20 621 702 90 0 2
-7 40 66 -10 170 225 90 5 0
-8 38 68 20 255 324 90 0 10
-9 38 70 10 534 605 90 0 4
-10 35 66 -20 357 410 90 8 0
-11 35 69 10 448 505 90 0 1
-12 25 85 -20 652 721 90 18 0
-13 22 75 30 30 92 90 0 17
-14 22 85 -40 567 620 90 16 0
-15 20 80 -10 384 429 90 19 0
-16 20 85 40 475 528 90 0 14
-17 18 75 -30 99 148 90 13 0
-18 15 75 20 179 254 90 0 12
-19 15 80 10 278 345 90 0 15
-20 30 50 10 10 73 90 0 24
-21 30 52 -10 914 965 90 30 0
-22 28 52 -20 812 883 90 28 0
-23 28 55 10 732 777 0 0 103
-24 25 50 -10 65 144 90 20 0
-25 25 52 40 169 224 90 0 27
-26 25 55 -10 622 701 90 29 0
-27 23 52 -40 261 316 90 25 0
-28 23 55 20 546 593 90 0 22
-29 20 50 10 358 405 90 0 26
-30 20 55 10 449 504 90 0 21
-31 10 35 -30 200 237 90 32 0
-32 10 40 30 31 100 90 0 31
-33 8 40 40 87 158 90 0 37
-34 8 45 -30 751 816 90 38 0
-35 5 35 10 283 344 90 0 39
-36 5 45 10 665 716 0 0 105
-37 2 40 -40 383 434 90 33 0
-38 0 40 30 479 522 90 0 34
-39 0 45 -10 567 624 90 35 0
-40 35 30 -20 264 321 90 42 0
-41 35 32 -10 166 235 90 43 0
-42 33 32 20 68 149 90 0 40
-43 33 35 10 16 80 90 0 41
-44 32 30 10 359 412 90 0 46
-45 30 30 10 541 600 90 0 48
-46 30 32 -10 448 509 90 44 0
-47 30 35 -10 1054 1127 90 49 0
-48 28 30 -10 632 693 90 45 0
-49 28 35 10 1001 1066 90 0 47
-50 26 32 10 815 880 90 0 52
-51 25 30 10 725 786 0 0 101
-52 25 35 -10 912 969 90 50 0
-53 44 5 20 286 347 90 0 58
-54 42 10 40 186 257 90 0 60
-55 42 15 -40 95 158 90 57 0
-56 40 5 30 385 436 90 0 59
-57 40 15 40 35 87 90 0 55
-58 38 5 -20 471 534 90 53 0
-59 38 15 -30 651 740 90 56 0
-60 35 5 -40 562 629 90 54 0
-61 50 30 -10 531 610 90 67 0
-62 50 35 20 262 317 90 0 68
-63 50 40 50 171 218 90 0 74
-64 48 30 10 632 693 0 0 102
-65 48 40 10 76 129 90 0 72
-66 47 35 10 826 875 90 0 69
-67 47 40 10 12 77 90 0 61
-68 45 30 -20 734 777 90 62 0
-69 45 35 -10 916 969 90 66 0
-70 95 30 -30 387 456 90 81 0
-71 95 35 20 293 360 90 0 77
-72 53 30 -10 450 505 90 65 0
-73 92 30 -10 478 551 90 76 0
-74 53 35 -50 353 412 90 63 0
-75 45 65 -10 997 1068 90 3 0
-76 90 35 10 203 260 90 0 73
-77 88 30 -20 574 643 90 71 0
-78 88 35 20 109 170 0 0 104
-79 87 30 10 668 731 90 0 80
-80 85 25 -10 769 820 90 79 0
-81 85 35 30 47 124 90 0 70
-82 75 55 20 369 420 90 0 85
-83 72 55 -20 265 338 90 87 0
-84 70 58 20 458 523 90 0 89
-85 68 60 -20 555 612 90 82 0
-86 66 55 10 173 238 90 0 91
-87 65 55 20 85 144 90 0 83
-88 65 60 -10 645 708 90 90 0
-89 63 58 -20 737 802 90 84 0
-90 60 55 10 20 84 90 0 88
-91 60 60 -10 836 889 90 86 0
-92 67 85 20 368 441 90 0 93
-93 65 85 -20 475 518 90 92 0
-94 65 82 -10 285 336 90 96 0
-95 62 80 -20 196 239 90 98 0
-96 60 80 10 95 156 90 0 94
-97 60 85 30 561 622 0 0 106
-98 58 75 20 30 84 90 0 95
-99 55 80 -20 743 820 90 100 0
-100 55 85 20 647 726 90 0 99
-101 25 30 -10 725 786 90 51 0
-102 48 30 -10 632 693 90 64 0
-103 28 55 -10 732 777 90 23 0
-104 88 35 -20 109 170 90 78 0
-105 5 45 -10 665 716 90 36 0
-106 60 85 -30 561 622 90 97 0
+
+DROP TABLE IF EXISTS orders CASCADE;
+DROP TABLE IF EXISTS vehicles CASCADE;
+DROP TABLE IF EXISTS dist_matrix CASCADE;
+
+CREATE TABLE orders (
+ id BIGINT PRIMARY KEY,
+ demand FLOAT,
+ p_node_id BIGINT,
+ p_x FLOAT,
+ p_y FLOAT,
+ p_open FLOAT,
+ p_close FLOAT,
+ p_service FLOAT,
+ d_node_id BIGINT,
+ d_x FLOAT,
+ d_y FLOAT,
+ d_open FLOAT,
+ d_close FLOAT,
+ d_service FLOAT
+);
+
+CREATE TABLE vehicles (
+ id BIGSERIAL PRIMARY KEY,
+ start_node_id BIGINT,
+ start_x FLOAT,
+ start_y FLOAT,
+ start_open FLOAT,
+ start_close FLOAT,
+ "number" integer,
+ capacity FLOAT
+);
+
+INSERT INTO orders (id, demand,
+p_x, p_y , p_open, p_close, p_service,
+d_x, d_y , d_open, d_close, d_service)
+VALUES
+(3, 10, 42, 66, 65, 146, 90, 45, 65, 997, 1068, 90),
+(5, 10, 42, 65, 15, 67, 90, 40, 66, 170, 225, 90),
+(6, 20, 40, 69, 621, 702, 90, 45, 70, 825, 870, 90),
+(8, 20, 38, 68, 255, 324, 90, 35, 66, 357, 410, 90),
+(9, 10, 38, 70, 534, 605, 90, 42, 68, 727, 782, 90),
+(11, 10, 35, 69, 448, 505, 90, 45, 68, 912, 967, 90),
+(13, 30, 22, 75, 30, 92, 90, 18, 75, 99, 148, 90),
+(16, 40, 20, 85, 475, 528, 90, 22, 85, 567, 620, 90),
+(18, 20, 15, 75, 179, 254, 90, 25, 85, 652, 721, 90),
+(19, 10, 15, 80, 278, 345, 90, 20, 80, 384, 429, 90),
+(20, 10, 30, 50, 10, 73, 90, 25, 50, 65, 144, 90),
+(23, 10, 28, 55, 732, 777, 0, 28, 55, 732, 777, 90),
+(25, 40, 25, 52, 169, 224, 90, 23, 52, 261, 316, 90),
+(28, 20, 23, 55, 546, 593, 90, 28, 52, 812, 883, 90),
+(29, 10, 20, 50, 358, 405, 90, 25, 55, 622, 701, 90),
+(30, 10, 20, 55, 449, 504, 90, 30, 52, 914, 965, 90),
+(32, 30, 10, 40, 31, 100, 90, 10, 35, 200, 237, 90),
+(33, 40, 8, 40, 87, 158, 90, 2, 40, 383, 434, 90),
+(35, 10, 5, 35, 283, 344, 90, 0, 45, 567, 624, 90),
+(36, 10, 5, 45, 665, 716, 0, 5, 45, 665, 716, 90),
+(38, 30, 0, 40, 479, 522, 90, 8, 45, 751, 816, 90),
+(42, 20, 33, 32, 68, 149, 90, 35, 30, 264, 321, 90),
+(43, 10, 33, 35, 16, 80, 90, 35, 32, 166, 235, 90),
+(44, 10, 32, 30, 359, 412, 90, 30, 32, 448, 509, 90),
+(45, 10, 30, 30, 541, 600, 90, 28, 30, 632, 693, 90),
+(49, 10, 28, 35, 1001, 1066, 90, 30, 35,1054, 1127, 90),
+(50, 10, 26, 32, 815, 880, 90, 25, 35, 912, 969, 90),
+(51, 10, 25, 30, 725, 786, 0, 25, 30, 725, 786, 90),
+(53, 20, 44, 5, 286, 347, 90, 38, 5, 471, 534, 90),
+(54, 40, 42, 10, 186, 257, 90, 35, 5, 562, 629, 90),
+(56, 30, 40, 5, 385, 436, 90, 38, 15, 651, 740, 90),
+(57, 40, 40, 15, 35, 87, 90, 42, 15, 95, 158, 90),
+(62, 20, 50, 35, 262, 317, 90, 45, 30, 734, 777, 90),
+(63, 50, 50, 40, 171, 218, 90, 53, 35, 353, 412, 90),
+(64, 10, 48, 30, 632, 693, 0, 48, 30, 632, 693, 90),
+(65, 10, 48, 40, 76, 129, 90, 53, 30, 450, 505, 90),
+(66, 10, 47, 35, 826, 875, 90, 45, 35, 916, 969, 90),
+(67, 10, 47, 40, 12, 77, 90, 50, 30, 531, 610, 90),
+(71, 20, 95, 35, 293, 360, 90, 88, 30, 574, 643, 90),
+(76, 10, 90, 35, 203, 260, 90, 92, 30, 478, 551, 90),
+(78, 20, 88, 35, 109, 170, 0, 88, 35, 109, 170, 90),
+(79, 10, 87, 30, 668, 731, 90, 85, 25, 769, 820, 90),
+(81, 30, 85, 35, 47, 124, 90, 95, 30, 387, 456, 90),
+(82, 20, 75, 55, 369, 420, 90, 68, 60, 555, 612, 90),
+(84, 20, 70, 58, 458, 523, 90, 63, 58, 737, 802, 90),
+(86, 10, 66, 55, 173, 238, 90, 60, 60, 836, 889, 90),
+(87, 20, 65, 55, 85, 144, 90, 72, 55, 265, 338, 90),
+(90, 10, 60, 55, 20, 84, 90, 65, 60, 645, 708, 90),
+(92, 20, 67, 85, 368, 441, 90, 65, 85, 475, 518, 90),
+(96, 10, 60, 80, 95, 156, 90, 65, 82, 285, 336, 90),
+(97, 30, 60, 85, 561, 622, 0, 60, 85, 561, 622, 90),
+(98, 20, 58, 75, 30, 84, 90, 62, 80, 196, 239, 90),
+(100,20, 55, 85, 647, 726, 90, 55, 80, 743, 820, 90);
+
+INSERT INTO vehicles (start_x, start_y, start_open, start_close, "number", capacity)
+VALUES (40, 50, 0, 1236, 25, 200);
+
+WITH points AS (
+ SELECT DISTINCT p_x AS x, p_y AS y FROM orders
+ UNION
+ SELECT DISTINCT d_x, d_y FROM orders),
+t_points AS (SELECT row_number() over() AS id, x, y FROM points),
+first AS (SELECT orders.id AS id , t_points.id AS p_node_id from orders JOIN t_points ON (x = p_x AND y = p_y)),
+second AS (SELECT orders.id AS id , t_points.id AS d_node_id from orders JOIN t_points ON (x = d_x AND y = d_y)),
+third AS (SELECT id, p_node_id, d_node_id from first JOIN second USING (id))
+UPDATE orders SET p_node_id = third.p_node_id, d_node_id = third.d_node_id
+FROM third WHERE third.id = orders.id;
+
+WITH
+the_ids AS (SELECT p_node_id AS id FROM orders UNION SELECT d_node_id FROM orders),
+the_max AS (SELECT max(id) FROM the_ids)
+UPDATE vehicles SET start_node_id = max+1 FROM the_max;
+
+/*
+WITH
+A AS (
+ SELECT p_node_id AS id, p_x AS x, p_y AS y FROM orders
+ UNION
+ SELECT d_node_id, d_x, d_y FROM orders
+ UNION
+ SELECT start_node_id, start_x, start_y FROM vehicles
+)
+SELECT A.id AS start_vid, B.id AS end_vid, sqrt( (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)) AS agg_cost
+INTO dist_matrix
+FROM A, A AS B WHERE A.id != B.id;
+*/
diff --git a/tools/testers/sampledata.sql b/tools/testers/sampledata.sql
index 280dae8..1c7781a 100644
--- a/tools/testers/sampledata.sql
+++ b/tools/testers/sampledata.sql
@@ -5,16 +5,19 @@ SET client_min_messages = WARNING;
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
--- SAMPLE DATA
+-- SAMPLE DATA
------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
- DROP TABLE IF EXISTS edge_table;
- DROP TABLE IF EXISTS edge_table_vertices_pgr;
- DROP table if exists pointsOfInterest;
- DROP TABLE IF EXISTS restrictions;
- DROP TABLE IF EXISTS vertex_table;
- DROP TABLE IF EXISTS categories;
+DROP TABLE IF EXISTS edge_table;
+DROP TABLE IF EXISTS edge_table_vertices_pgr;
+DROP table if exists pointsOfInterest;
+DROP TABLE IF EXISTS restrictions;
+DROP TABLE IF EXISTS retrict;
+DROP TABLE IF EXISTS vertex_table;
+DROP TABLE IF EXISTS categories;
+DROP TABLE IF EXISTS vehicles;
+DROP TABLE IF EXISTS orders;
--EDGE TABLE CREATE
CREATE TABLE edge_table (
@@ -24,6 +27,8 @@ CREATE TABLE edge_table (
target BIGINT,
cost FLOAT,
reverse_cost FLOAT,
+ capacity BIGINT,
+ reverse_capacity BIGINT,
category_id INTEGER,
reverse_category_id INTEGER,
x1 FLOAT,
@@ -36,26 +41,27 @@ CREATE TABLE edge_table (
INSERT INTO edge_table (
category_id, reverse_category_id,
cost, reverse_cost,
+ capacity, reverse_capacity,
x1, y1,
- x2, y2) VALUES
-(3, 1, 1, 1, 2, 0, 2, 1),
-(3, 2, -1, 1, 2, 1, 3, 1),
-(2, 1, -1, 1, 3, 1, 4, 1),
-(2, 4, 1, 1, 2, 1, 2, 2),
-(1, 4, 1, -1, 3, 1, 3, 2),
-(4, 2, 1, 1, 0, 2, 1, 2),
-(4, 1, 1, 1, 1, 2, 2, 2),
-(2, 1, 1, 1, 2, 2, 3, 2),
-(1, 3, 1, 1, 3, 2, 4, 2),
-(1, 4, 1, 1, 2, 2, 2, 3),
-(1, 2, 1, -1, 3, 2, 3, 3),
-(2, 3, 1, -1, 2, 3, 3, 3),
-(2, 4, 1, -1, 3, 3, 4, 3),
-(3, 1, 1, 1, 2, 3, 2, 4),
-(3, 4, 1, 1, 4, 2, 4, 3),
-(3, 3, 1, 1, 4, 1, 4, 2),
-(1, 2, 1, 1, 0.5, 3.5, 1.999999999999,3.5),
-(4, 1, 1, 1, 3.5, 2.3, 3.5,4);
+ x2, y2) VALUES
+(3, 1, 1, 1, 80, 130, 2, 0, 2, 1),
+(3, 2, -1, 1, -1, 100, 2, 1, 3, 1),
+(2, 1, -1, 1, -1, 130, 3, 1, 4, 1),
+(2, 4, 1, 1, 100, 50, 2, 1, 2, 2),
+(1, 4, 1, -1, 130, -1, 3, 1, 3, 2),
+(4, 2, 1, 1, 50, 100, 0, 2, 1, 2),
+(4, 1, 1, 1, 50, 130, 1, 2, 2, 2),
+(2, 1, 1, 1, 100, 130, 2, 2, 3, 2),
+(1, 3, 1, 1, 130, 80, 3, 2, 4, 2),
+(1, 4, 1, 1, 130, 50, 2, 2, 2, 3),
+(1, 2, 1, -1, 130, -1, 3, 2, 3, 3),
+(2, 3, 1, -1, 100, -1, 2, 3, 3, 3),
+(2, 4, 1, -1, 100, -1, 3, 3, 4, 3),
+(3, 1, 1, 1, 80, 130, 2, 3, 2, 4),
+(3, 4, 1, 1, 80, 50, 4, 2, 4, 3),
+(3, 3, 1, 1, 80, 80, 4, 1, 4, 2),
+(1, 2, 1, 1, 130, 100, 0.5, 3.5, 1.999999999999,3.5),
+(4, 1, 1, 1, 50, 130, 3.5, 2.3, 3.5,4);
UPDATE edge_table SET the_geom = st_makeline(st_point(x1,y1),st_point(x2,y2)),
dir = CASE WHEN (cost>0 AND reverse_cost>0) THEN 'B' -- both ways
@@ -108,7 +114,7 @@ INSERT INTO restrictions (rid, to_cost, target_id, from_edge, via_path) VALUES
(3, 100, 9, 16, NULL);
--RESTRICTIONS END
-
+/*
CREATE TABLE categories (
category_id INTEGER,
category text,
@@ -120,9 +126,10 @@ INSERT INTO categories VALUES
(2, 'Category 2', 100),
(3, 'Category 3', 80),
(4, 'Category 4', 50);
-
+*/
--CATEGORIES END
+-- TODO check if this table is still used
CREATE TABLE vertex_table (
id SERIAL,
x FLOAT,
@@ -134,3 +141,62 @@ INSERT INTO vertex_table VALUES
--VERTEX TABLE END
+
+--VEHICLES TABLE START
+
+CREATE TABLE vehicles (
+ id BIGSERIAL PRIMARY KEY,
+ start_node_id BIGINT,
+ start_x FLOAT,
+ start_y FLOAT,
+ start_open FLOAT,
+ start_close FLOAT,
+ number integer,
+ capacity FLOAT
+);
+
+INSERT INTO vehicles
+(start_node_id, start_x, start_y, start_open, start_close, number, capacity) VALUES
+( 6, 3, 2, 0, 50, 2, 50);
+
+--VEHICLES TABLE END
+
+
+
+--ORDERS TABLE START
+CREATE TABLE orders (
+ id BIGSERIAL PRIMARY KEY,
+ demand FLOAT,
+ -- the pickups
+ p_node_id BIGINT,
+ p_x FLOAT,
+ p_y FLOAT,
+ p_open FLOAT,
+ p_close FLOAT,
+ p_service FLOAT,
+ -- the deliveries
+ d_node_id BIGINT,
+ d_x FLOAT,
+ d_y FLOAT,
+ d_open FLOAT,
+ d_close FLOAT,
+ d_service FLOAT
+);
+
+
+INSERT INTO orders
+(demand,
+ p_node_id, p_x, p_y, p_open, p_close, p_service,
+ d_node_id, d_x, d_y, d_open, d_close, d_service) VALUES
+(10,
+ 3, 3, 1, 2, 10, 3,
+ 8, 1, 2, 6, 15, 3),
+(20,
+ 9, 4, 2, 4, 15, 2,
+ 4, 4, 1, 6, 20, 3),
+(30,
+ 5, 2, 2, 2, 10, 3,
+ 11, 3, 3, 3, 20, 3);
+
+
+--ORDERS TABLE END
diff --git a/tools/testers/setup_db.sql b/tools/testers/setup_db.sql
index 63796f3..d73a47b 100644
--- a/tools/testers/setup_db.sql
+++ b/tools/testers/setup_db.sql
@@ -17,9 +17,14 @@ CREATE EXTENSION postgis;
CREATE EXTENSION pgtap;
CREATE EXTENSION pgrouting;
+-- i vrppdtw_data.sql
+-- i pickDeliver_pgtap_data.sql
BEGIN;
\i sampledata.sql
- \i pickDeliver_pgtap_data.sql
+ \i innerQuery.sql
+ \i innerQuery_old.sql
+ \i inner_styles.sql
+ \i old_inner_styles.sql
END;
diff --git a/tools/testers/update-tester.sh b/tools/testers/update-tester.sh
index 64bac4e..0d9913a 100755
--- a/tools/testers/update-tester.sh
+++ b/tools/testers/update-tester.sh
@@ -3,7 +3,7 @@
# FILE: update_tester.sh
-# Copyright (c) 2015 pgRouting developers
+# Copyright (c) 2016 pgRouting developers
# Mail: project at pgrouting.org
#
# ------
@@ -39,10 +39,27 @@ echo -
# bash tools/testers/update-tester.sh
#
-CURRENT=2.4.2
+CURRENT=2.5.0
+
+if [ ! -f build/sql/pgrouting--$CURRENT.sql ]; then
+ echo "File not found: build/lib/pgrouting--$CURRENT.sql "
+ exit 1
+fi
+
+dropdb --if-exists ___test_update
+
+#make sure the scripts are the latest
+cp build/sql/pgrouting-* tools/sql-update-scripts
+#TODO automatically check the diff is empty
+#git diff
+
+cd build
+sudo make install
+cd ..
+
+
function update_test {
-set -e
echo ------------------------------------
echo ------------------------------------
@@ -55,26 +72,52 @@ if [ "$INSTALLED" == "/usr/share/postgresql/9.3/extension/pgrouting--$1.sql" ]
then
echo "/usr/share/postgresql/9.3/extension/pgrouting--$1.sql found"
else
- echo "/usr/share/postgresql/9.3/extension/pgrouting--$1.sql Not found"
-# exit 1
+ echo "FATAL: /usr/share/postgresql/9.3/extension/pgrouting--$1.sql Not found"
+ exit 1
fi
+
createdb ___test_update
psql ___test_update <<EOF
-create extension postgis;
-create extension pgrouting with version '$1';
-select pgr_version();
-alter extension pgrouting update to '$2';
-select pgr_version();
+CREATE extension postgis;
+CREATE extension pgrouting with version '$1';
EOF
-dropdb ___test_update
-}
+OLD_VERSION=$(psql ___test_update -t -c 'SELECT version FROM pgr_version()')
+
+
+if [ "b$OLD_VERSION" != "b $1" ]
+then
+ echo "ERROR: Version $1 not found on the system"
+ dropdb ___test_update
+ exit 1
+fi
+
+
+
+psql ___test_update -c "ALTER extension pgrouting update to '$2'"
+
+
+NEW_VERSION=$(psql ___test_update -t -c 'SELECT version FROM pgr_version()')
+
+echo "$OLD_VERSION ->> $NEW_VERSION"
+
+if [ "b$NEW_VERSION" != "b $2" ]
+then
+ echo "FAIL: Could not update from version $1 to version $2"
+ dropdb ___test_update
+ exit 1
+fi
+
+dropdb ___test_update
+
+} # end of function
#------------------------------------
-### updates from 2.3.0
+### updates from 2.4
#------------------------------------
+update_test 2.4.2 $CURRENT
update_test 2.4.1 $CURRENT
update_test 2.4.0 $CURRENT
@@ -90,7 +133,7 @@ update_test 2.3.0 $CURRENT
### updates from 2.2.x
#------------------------------------
-#update_test 2.2.4 $CURRENT
+update_test 2.2.4 $CURRENT
update_test 2.2.3 $CURRENT
update_test 2.2.2 $CURRENT
update_test 2.2.1 $CURRENT
diff --git a/src/vrp_basic/test/VRP-any-00.data b/tools/testers/vrpOneDepot.data
similarity index 100%
rename from src/vrp_basic/test/VRP-any-00.data
rename to tools/testers/vrpOneDepot.data
diff --git a/tools/testers/vrppdtw_data.sql b/tools/testers/vrppdtw_data.sql
new file mode 100644
index 0000000..ff1bd81
--- /dev/null
+++ b/tools/testers/vrppdtw_data.sql
@@ -0,0 +1,124 @@
+
+DROP TABLE IF EXISTS customer CASCADE;
+CREATE table customer (
+ id BIGINT not null primary key,
+ x DOUBLE PRECISION,
+ y DOUBLE PRECISION,
+ demand INTEGER,
+ opentime INTEGER,
+ closetime INTEGER,
+ servicetime INTEGER,
+ pindex BIGINT,
+ dindex BIGINT
+);
+
+
+INSERT INTO customer(
+ id, x, y, demand, opentime, closetime, servicetime, pindex, dindex) VALUES
+( 0, 40, 50, 0, 0, 1236, 0, 0, 0),
+( 1, 45, 68, -10, 912, 967, 90, 11, 0),
+( 2, 45, 70, -20, 825, 870, 90, 6, 0),
+( 3, 42, 66, 10, 65, 146, 90, 0, 75),
+( 4, 42, 68, -10, 727, 782, 90, 9, 0),
+( 5, 42, 65, 10, 15, 67, 90, 0, 7),
+( 6, 40, 69, 20, 621, 702, 90, 0, 2),
+( 7, 40, 66, -10, 170, 225, 90, 5, 0),
+( 8, 38, 68, 20, 255, 324, 90, 0, 10),
+( 9, 38, 70, 10, 534, 605, 90, 0, 4),
+( 10, 35, 66, -20, 357, 410, 90, 8, 0),
+( 11, 35, 69, 10, 448, 505, 90, 0, 1),
+( 12, 25, 85, -20, 652, 721, 90, 18, 0),
+( 13, 22, 75, 30, 30, 92, 90, 0, 17),
+( 14, 22, 85, -40, 567, 620, 90, 16, 0),
+( 15, 20, 80, -10, 384, 429, 90, 19, 0),
+( 16, 20, 85, 40, 475, 528, 90, 0, 14),
+( 17, 18, 75, -30, 99, 148, 90, 13, 0),
+( 18, 15, 75, 20, 179, 254, 90, 0, 12),
+( 19, 15, 80, 10, 278, 345, 90, 0, 15),
+( 20, 30, 50, 10, 10, 73, 90, 0, 24),
+( 21, 30, 52, -10, 914, 965, 90, 30, 0),
+( 22, 28, 52, -20, 812, 883, 90, 28, 0),
+( 23, 28, 55, 10, 732, 777, 0, 0, 103),
+( 24, 25, 50, -10, 65, 144, 90, 20, 0),
+( 25, 25, 52, 40, 169, 224, 90, 0, 27),
+( 26, 25, 55, -10, 622, 701, 90, 29, 0),
+( 27, 23, 52, -40, 261, 316, 90, 25, 0),
+( 28, 23, 55, 20, 546, 593, 90, 0, 22),
+( 29, 20, 50, 10, 358, 405, 90, 0, 26),
+( 30, 20, 55, 10, 449, 504, 90, 0, 21),
+( 31, 10, 35, -30, 200, 237, 90, 32, 0),
+( 32, 10, 40, 30, 31, 100, 90, 0, 31),
+( 33, 8, 40, 40, 87, 158, 90, 0, 37),
+( 34, 8, 45, -30, 751, 816, 90, 38, 0),
+( 35, 5, 35, 10, 283, 344, 90, 0, 39),
+( 36, 5, 45, 10, 665, 716, 0, 0, 105),
+( 37, 2, 40, -40, 383, 434, 90, 33, 0),
+( 38, 0, 40, 30, 479, 522, 90, 0, 34),
+( 39, 0, 45, -10, 567, 624, 90, 35, 0),
+( 40, 35, 30, -20, 264, 321, 90, 42, 0),
+( 41, 35, 32, -10, 166, 235, 90, 43, 0),
+( 42, 33, 32, 20, 68, 149, 90, 0, 40),
+( 43, 33, 35, 10, 16, 80, 90, 0, 41),
+( 44, 32, 30, 10, 359, 412, 90, 0, 46),
+( 45, 30, 30, 10, 541, 600, 90, 0, 48),
+( 46, 30, 32, -10, 448, 509, 90, 44, 0),
+( 47, 30, 35, -10, 1054, 1127, 90, 49, 0),
+( 48, 28, 30, -10, 632, 693, 90, 45, 0),
+( 49, 28, 35, 10, 1001, 1066, 90, 0, 47),
+( 50, 26, 32, 10, 815, 880, 90, 0, 52),
+( 51, 25, 30, 10, 725, 786, 0, 0, 101),
+( 52, 25, 35, -10, 912, 969, 90, 50, 0),
+( 53, 44, 5, 20, 286, 347, 90, 0, 58),
+( 54, 42, 10, 40, 186, 257, 90, 0, 60),
+( 55, 42, 15, -40, 95, 158, 90, 57, 0),
+( 56, 40, 5, 30, 385, 436, 90, 0, 59),
+( 57, 40, 15, 40, 35, 87, 90, 0, 55),
+( 58, 38, 5, -20, 471, 534, 90, 53, 0),
+( 59, 38, 15, -30, 651, 740, 90, 56, 0),
+( 60, 35, 5, -40, 562, 629, 90, 54, 0),
+( 61, 50, 30, -10, 531, 610, 90, 67, 0),
+( 62, 50, 35, 20, 262, 317, 90, 0, 68),
+( 63, 50, 40, 50, 171, 218, 90, 0, 74),
+( 64, 48, 30, 10, 632, 693, 0, 0, 102),
+( 65, 48, 40, 10, 76, 129, 90, 0, 72),
+( 66, 47, 35, 10, 826, 875, 90, 0, 69),
+( 67, 47, 40, 10, 12, 77, 90, 0, 61),
+( 68, 45, 30, -20, 734, 777, 90, 62, 0),
+( 69, 45, 35, -10, 916, 969, 90, 66, 0),
+( 70, 95, 30, -30, 387, 456, 90, 81, 0),
+( 71, 95, 35, 20, 293, 360, 90, 0, 77),
+( 72, 53, 30, -10, 450, 505, 90, 65, 0),
+( 73, 92, 30, -10, 478, 551, 90, 76, 0),
+( 74, 53, 35, -50, 353, 412, 90, 63, 0),
+( 75, 45, 65, -10, 997, 1068, 90, 3, 0),
+( 76, 90, 35, 10, 203, 260, 90, 0, 73),
+( 77, 88, 30, -20, 574, 643, 90, 71, 0),
+( 78, 88, 35, 20, 109, 170, 0, 0, 104),
+( 79, 87, 30, 10, 668, 731, 90, 0, 80),
+( 80, 85, 25, -10, 769, 820, 90, 79, 0),
+( 81, 85, 35, 30, 47, 124, 90, 0, 70),
+( 82, 75, 55, 20, 369, 420, 90, 0, 85),
+( 83, 72, 55, -20, 265, 338, 90, 87, 0),
+( 84, 70, 58, 20, 458, 523, 90, 0, 89),
+( 85, 68, 60, -20, 555, 612, 90, 82, 0),
+( 86, 66, 55, 10, 173, 238, 90, 0, 91),
+( 87, 65, 55, 20, 85, 144, 90, 0, 83),
+( 88, 65, 60, -10, 645, 708, 90, 90, 0),
+( 89, 63, 58, -20, 737, 802, 90, 84, 0),
+( 90, 60, 55, 10, 20, 84, 90, 0, 88),
+( 91, 60, 60, -10, 836, 889, 90, 86, 0),
+( 92, 67, 85, 20, 368, 441, 90, 0, 93),
+( 93, 65, 85, -20, 475, 518, 90, 92, 0),
+( 94, 65, 82, -10, 285, 336, 90, 96, 0),
+( 95, 62, 80, -20, 196, 239, 90, 98, 0),
+( 96, 60, 80, 10, 95, 156, 90, 0, 94),
+( 97, 60, 85, 30, 561, 622, 0, 0, 106),
+( 98, 58, 75, 20, 30, 84, 90, 0, 95),
+( 99, 55, 80, -20, 743, 820, 90, 100, 0),
+( 100, 55, 85, 20, 647, 726, 90, 0, 99),
+( 101, 25, 30, -10, 725, 786, 90, 51, 0),
+( 102, 48, 30, -10, 632, 693, 90, 64, 0),
+( 103, 28, 55, -10, 732, 777, 90, 23, 0),
+( 104, 88, 35, -20, 109, 170, 90, 78, 0),
+( 105, 5, 45, -10, 665, 716, 90, 36, 0),
+( 106, 60, 85, -30, 561, 622, 90, 97, 0);
diff --git a/tools/travis/pgrouting_build.sh b/tools/travis/pgrouting_build.sh
index cd6b3c7..03a1d7c 100755
--- a/tools/travis/pgrouting_build.sh
+++ b/tools/travis/pgrouting_build.sh
@@ -12,8 +12,7 @@ set -e
# build pgRouting
mkdir build
cd build
-cmake -DPOSTGRESQL_VERSION=$POSTGRESQL_VERSION -DWITH_DOC=ON -DBUILD_DOXY=ON -DCMAKE_BUILD_TYPE=Debug ..
+cmake -DPOSTGRESQL_VERSION=$POSTGRESQL_VERSION -DWITH_DOC=ON -DCMAKE_BUILD_TYPE=Debug ..
make
sudo make install
make doc
-make doxy
diff --git a/tools/winnie/package_pgrouting.sh b/tools/winnie/package_pgrouting.sh
index 44d3dd9..55dfacb 100644
--- a/tools/winnie/package_pgrouting.sh
+++ b/tools/winnie/package_pgrouting.sh
@@ -63,11 +63,13 @@ mkdir -p $outdir/share/extension
mkdir $outdir/bin
mkdir $outdir/lib
+cd ${PROJECTS}/pgrouting/build${PGROUTING_VER}w${OS_BUILD}${GCC_TYPE}/sql
+cp *.sql $outdir/share/extension
+cp ${PostgreSQL_ROOT}/share/extension/pgrouting.control $outdir/share/extension
+
cd ${PROJECTS}/pgrouting/build${PGROUTING_VER}w${OS_BUILD}${GCC_TYPE}/lib
strip *.dll
-cp -r *.sql $outdir/share/extension
-cp -r *.control $outdir/share/extension
cp -r *.dll $outdir/lib
#newer gcc for some reason CGAL is not statically linked
# so need to distribute
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/pgrouting.git
More information about the Pkg-grass-devel
mailing list